From c708935a376ddfdeb718e01553bc33f19f00e5cc Mon Sep 17 00:00:00 2001 From: Daniel Bulant Date: Sun, 30 Oct 2022 16:31:57 +0100 Subject: [PATCH] vault backup: 2022-10-30 16:31:57 --- notes/.obsidian/graph.json | 2 +- notes/.obsidian/plugins/breadcrumbs/main.js | 518 +- .../plugins/breadcrumbs/manifest.json | 2 +- notes/.obsidian/plugins/dataview/main.js | 8 +- .../.obsidian/plugins/dataview/manifest.json | 2 +- .../plugins/obsidian-checklist-plugin/main.js | 42 +- .../obsidian-checklist-plugin/manifest.json | 2 +- .../obsidian-checklist-plugin/styles.css | 2 + .../plugins/obsidian-emoji-toolbar/main.js | 7 +- .../obsidian-emoji-toolbar/manifest.json | 2 +- .../obsidian-excalidraw-plugin/data.json | 6 +- .../obsidian-excalidraw-plugin/main.js | 8 +- .../obsidian-excalidraw-plugin/manifest.json | 2 +- .../obsidian-excalidraw-plugin/styles.css | 12 +- notes/.obsidian/plugins/obsidian-git/main.js | 3063 ++-- .../plugins/obsidian-git/manifest.json | 2 +- .../.obsidian/plugins/obsidian-git/styles.css | 453 +- .../plugins/obsidian-icon-folder/main.js | 27 +- .../obsidian-icon-folder/manifest.json | 2 +- .../plugins/obsidian-icon-folder/styles.css | 7 +- .../.obsidian/plugins/obsidian-kanban/main.js | 98 +- .../plugins/obsidian-kanban/manifest.json | 4 +- .../plugins/obsidian-kanban/styles.css | 2 +- .../plugins/obsidian-linter/data.json | 15 + .../.obsidian/plugins/obsidian-linter/main.js | 1350 +- .../plugins/obsidian-linter/manifest.json | 2 +- .../plugins/obsidian-linter/styles.css | 144 + .../plugins/obsidian-outliner/main.js | 108 +- .../plugins/obsidian-outliner/manifest.json | 6 +- .../plugins/obsidian-outliner/styles.css | 42 +- .../sliding-panes-obsidian/manifest.json | 4 +- .../plugins/sliding-panes-obsidian/styles.css | 6 +- notes/.obsidian/plugins/tag-wrangler/main.js | 7865 +--------- .../plugins/tag-wrangler/manifest.json | 6 +- .../.obsidian/plugins/tag-wrangler/styles.css | 169 +- .../plugins/templater-obsidian/main.js | 68 +- .../plugins/templater-obsidian/manifest.json | 2 +- .../plugins/various-complements/main.js | 12164 ++++++++-------- .../plugins/various-complements/manifest.json | 6 +- .../plugins/various-complements/styles.css | 4 + notes/.obsidian/workspace.json | 84 +- 41 files changed, 10049 insertions(+), 16269 deletions(-) create mode 100644 notes/.obsidian/plugins/obsidian-linter/data.json create mode 100644 notes/.obsidian/plugins/obsidian-linter/styles.css diff --git a/notes/.obsidian/graph.json b/notes/.obsidian/graph.json index 11cfbe4..831f097 100644 --- a/notes/.obsidian/graph.json +++ b/notes/.obsidian/graph.json @@ -95,6 +95,6 @@ "repelStrength": 11.9047619047619, "linkStrength": 0.654761904761905, "linkDistance": 195, - "scale": 0.04993528587681569, + "scale": 0.1376054668779815, "close": true } \ No newline at end of file diff --git a/notes/.obsidian/plugins/breadcrumbs/main.js b/notes/.obsidian/plugins/breadcrumbs/main.js index 2d0cae6..b723ae7 100644 --- a/notes/.obsidian/plugins/breadcrumbs/main.js +++ b/notes/.obsidian/plugins/breadcrumbs/main.js @@ -15425,6 +15425,27 @@ function end_hydrating() { function append(target, node) { target.appendChild(node); } +function append_styles(target, style_sheet_id, styles) { + const append_styles_to = get_root_for_style(target); + if (!append_styles_to.getElementById(style_sheet_id)) { + const style = element("style"); + style.id = style_sheet_id; + style.textContent = styles; + append_stylesheet(append_styles_to, style); + } +} +function get_root_for_style(node) { + if (!node) + return document; + const root2 = node.getRootNode ? node.getRootNode() : node.ownerDocument; + if (root2 && root2.host) { + return root2; + } + return node.ownerDocument; +} +function append_stylesheet(node, style) { + append(node.head || node, style); +} function insert(target, node, anchor) { target.insertBefore(node, anchor || null); } @@ -15679,7 +15700,7 @@ function make_dirty(component, i) { } component.$$.dirty[i / 31 | 0] |= 1 << i % 31; } -function init(component, options, instance24, create_fragment24, not_equal, props, append_styles, dirty = [-1]) { +function init(component, options, instance24, create_fragment24, not_equal, props, append_styles2, dirty = [-1]) { const parent_component = current_component; set_current_component(component); const $$ = component.$$ = { @@ -15700,7 +15721,7 @@ function init(component, options, instance24, create_fragment24, not_equal, prop skip_bound: false, root: options.target || parent_component.$$.root }; - append_styles && append_styles($$.root); + append_styles2 && append_styles2($$.root); let ready = false; $$.ctx = instance24 ? instance24(component, options.props || {}, (i, ret, ...rest) => { const value = rest.length ? rest[0] : ret; @@ -15803,76 +15824,9 @@ var import_graphology2 = __toESM(require_graphology_umd_min()); var import_loglevel13 = __toESM(require_loglevel()); var import_obsidian9 = require("obsidian"); -// src/Utils/graphUtils.ts -var import_graphology = __toESM(require_graphology_umd_min()); -var import_graphology_traversal = __toESM(require_graphology_traversal()); -var import_loglevel4 = __toESM(require_loglevel()); - -// src/Utils/HierUtils.ts -function getFields(userHiers, dir = "all") { - const fields = []; - userHiers.forEach((hier) => { - if (dir === "all") { - DIRECTIONS.forEach((eachDir) => { - fields.push(...hier[eachDir]); - }); - } else { - fields.push(...hier[dir]); - } - }); - return fields; -} -var getOppDir = (dir) => { - switch (dir) { - case "up": - return "down"; - case "down": - return "up"; - case "same": - return "same"; - case "next": - return "prev"; - case "prev": - return "next"; - } -}; -function getFieldInfo(userHiers, field) { - let fieldDir; - let fieldHier; - DIRECTIONS.forEach((dir) => { - userHiers.forEach((hier) => { - if (hier[dir].includes(field)) { - fieldDir = dir; - fieldHier = hier; - return; - } - }); - }); - return { fieldHier, fieldDir }; -} -function getOppFields(userHiers, field, dir) { - if (field.endsWith(">")) - return [field.slice(0, -4)]; - const oppFields = [fallbackOppField(field, dir)]; - const { fieldHier, fieldDir } = getFieldInfo(userHiers, field); - if (!fieldHier || !fieldDir) - return oppFields; - const oppDir = getOppDir(fieldDir); - oppFields.unshift(...fieldHier[oppDir]); - return oppFields; -} -var hierToStr = (hier) => DIRECTIONS.map((dir) => `${ARROW_DIRECTIONS[dir]}: ${hier[dir].join(", ")}`).join("\n"); -var fallbackField = (field, dir) => `${field} <${ARROW_DIRECTIONS[dir]}>`; -var fallbackOppField = (field, dir) => `${field} <${ARROW_DIRECTIONS[getOppDir(dir)]}>`; -function iterateHiers(userHiers, fn) { - userHiers.forEach((hier) => { - DIRECTIONS.forEach((dir) => { - hier[dir].forEach((field) => { - fn(hier, dir, field); - }); - }); - }); -} +// src/AlternativeHierarchies/CSVCrumbs.ts +var import_loglevel5 = __toESM(require_loglevel()); +var import_obsidian4 = require("obsidian"); // src/Utils/ObsidianUtils.ts var import_loglevel3 = __toESM(require_loglevel()); @@ -16079,6 +16033,77 @@ function isInsideYaml() { return false; } +// src/Utils/graphUtils.ts +var import_graphology = __toESM(require_graphology_umd_min()); +var import_graphology_traversal = __toESM(require_graphology_traversal()); +var import_loglevel4 = __toESM(require_loglevel()); + +// src/Utils/HierUtils.ts +function getFields(userHiers, dir = "all") { + const fields = []; + userHiers.forEach((hier) => { + if (dir === "all") { + DIRECTIONS.forEach((eachDir) => { + fields.push(...hier[eachDir]); + }); + } else { + fields.push(...hier[dir]); + } + }); + return fields; +} +var getOppDir = (dir) => { + switch (dir) { + case "up": + return "down"; + case "down": + return "up"; + case "same": + return "same"; + case "next": + return "prev"; + case "prev": + return "next"; + } +}; +function getFieldInfo(userHiers, field) { + let fieldDir; + let fieldHier; + DIRECTIONS.forEach((dir) => { + userHiers.forEach((hier) => { + if (hier[dir].includes(field)) { + fieldDir = dir; + fieldHier = hier; + return; + } + }); + }); + return { fieldHier, fieldDir }; +} +function getOppFields(userHiers, field, dir) { + if (field.endsWith(">")) + return [field.slice(0, -4)]; + const oppFields = [fallbackOppField(field, dir)]; + const { fieldHier, fieldDir } = getFieldInfo(userHiers, field); + if (!fieldHier || !fieldDir) + return oppFields; + const oppDir = getOppDir(fieldDir); + oppFields.unshift(...fieldHier[oppDir]); + return oppFields; +} +var hierToStr = (hier) => DIRECTIONS.map((dir) => `${ARROW_DIRECTIONS[dir]}: ${hier[dir].join(", ")}`).join("\n"); +var fallbackField = (field, dir) => `${field} <${ARROW_DIRECTIONS[dir]}>`; +var fallbackOppField = (field, dir) => `${field} <${ARROW_DIRECTIONS[getOppDir(dir)]}>`; +function iterateHiers(userHiers, fn) { + userHiers.forEach((hier) => { + DIRECTIONS.forEach((dir) => { + hier[dir].forEach((field) => { + fn(hier, dir, field); + }); + }); + }); +} + // src/Utils/graphUtils.ts function closeImpliedLinks(real, implied) { const closedG = real.copy(); @@ -16302,107 +16327,7 @@ function getRealnImplied(plugin, currNode, dir = null) { return realsnImplieds; } -// src/Relations.ts -function addSiblingsFromSameParent(g, settings) { - const { userHiers, treatCurrNodeAsImpliedSibling } = settings; - g.forEachNode((currN, a2) => { - g.forEachOutEdge(currN, (k, currNAttr, s, parentNode) => { - var _a; - if (currNAttr.dir !== "up") - return; - const { fieldDir, fieldHier } = getFieldInfo(userHiers, currNAttr.field); - const field = (_a = fieldHier.same[0]) != null ? _a : fallbackField(currNAttr.field, fieldDir); - g.forEachOutEdge(parentNode, (k2, a3, s2, impliedSibling) => { - if (a3.dir !== "down" || !treatCurrNodeAsImpliedSibling && impliedSibling === currN) - return; - addEdgeIfNot(g, currN, impliedSibling, { - dir: "same", - field, - implied: BC_I_SIBLING_1 - }); - }); - }); - }); -} -function addSiblingsParentIsParent(g) { - g.forEachNode((currN, a2) => { - g.forEachOutEdge(currN, (k, currNAttr, s, sibling) => { - if (currNAttr.dir !== "same") - return; - g.forEachOutEdge(sibling, (k2, a3, s2, parent) => { - const { dir, field } = a3; - if (dir !== "up") - return; - addEdgeIfNot(g, currN, parent, { - dir: "up", - field, - implied: BC_I_PARENT - }); - }); - }); - }); -} -function addAuntsUncles(g) { - g.forEachNode((currN, a2) => { - g.forEachOutEdge(currN, (k, currEAttr, s, parentNode) => { - if (currEAttr.dir !== "up") - return; - g.forEachOutEdge(parentNode, (k2, a3, s2, uncle) => { - if (a3.dir !== "same") - return; - addEdgeIfNot(g, currN, uncle, { - dir: "up", - field: currEAttr.field, - implied: BC_I_AUNT - }); - }); - }); - }); -} -function addCousins(g) { - g.forEachNode((currN, a2) => { - g.forEachOutEdge(currN, (k, currEAttr, s, parentNode) => { - if (currEAttr.dir !== "up") - return; - g.forEachOutEdge(parentNode, (k2, parentSiblingAttr, s2, uncle) => { - if (parentSiblingAttr.dir !== "same") - return; - g.forEachOutEdge(uncle, (k3, a3, s3, cousin) => { - if (a3.dir !== "down" || currN === cousin) - return; - addEdgeIfNot(g, currN, cousin, { - dir: "same", - field: parentSiblingAttr.field, - implied: BC_I_COUSIN - }); - }); - }); - }); - }); -} -function addStructuralEquivalenceSiblings(g) { - g.forEachNode((currN, a2) => { - g.forEachInEdge(currN, (k, aSis, sis, _) => { - if (aSis.dir !== "same") - return; - g.forEachInEdge(currN, (k2, aBro, bro, _2) => { - if (aBro.dir !== "same" || sis === bro) - return; - if (aBro.field === aSis.field) { - addEdgeIfNot(g, sis, bro, { - dir: "same", - field: aBro.field, - implied: BC_I_SIBLING_2 - }); - } - }); - }); - }); -} - // src/AlternativeHierarchies/CSVCrumbs.ts -var import_loglevel5 = __toESM(require_loglevel()); -var import_obsidian4 = require("obsidian"); async function getCSVRows(plugin) { const { CSVPaths } = plugin.settings; const CSVRows = []; @@ -16833,11 +16758,112 @@ function addTraverseNotesToGraph(plugin, traverseNotes, mainG, obsG) { }); } +// src/Relations.ts +function addSiblingsFromSameParent(g, settings) { + const { userHiers, treatCurrNodeAsImpliedSibling } = settings; + g.forEachNode((currN, a2) => { + g.forEachOutEdge(currN, (k, currNAttr, s, parentNode) => { + var _a; + if (currNAttr.dir !== "up") + return; + const { fieldDir, fieldHier } = getFieldInfo(userHiers, currNAttr.field); + const field = (_a = fieldHier.same[0]) != null ? _a : fallbackField(currNAttr.field, fieldDir); + g.forEachOutEdge(parentNode, (k2, a3, s2, impliedSibling) => { + if (a3.dir !== "down" || !treatCurrNodeAsImpliedSibling && impliedSibling === currN) + return; + addEdgeIfNot(g, currN, impliedSibling, { + dir: "same", + field, + implied: BC_I_SIBLING_1 + }); + }); + }); + }); +} +function addSiblingsParentIsParent(g) { + g.forEachNode((currN, a2) => { + g.forEachOutEdge(currN, (k, currNAttr, s, sibling) => { + if (currNAttr.dir !== "same") + return; + g.forEachOutEdge(sibling, (k2, a3, s2, parent) => { + const { dir, field } = a3; + if (dir !== "up") + return; + addEdgeIfNot(g, currN, parent, { + dir: "up", + field, + implied: BC_I_PARENT + }); + }); + }); + }); +} +function addAuntsUncles(g) { + g.forEachNode((currN, a2) => { + g.forEachOutEdge(currN, (k, currEAttr, s, parentNode) => { + if (currEAttr.dir !== "up") + return; + g.forEachOutEdge(parentNode, (k2, a3, s2, uncle) => { + if (a3.dir !== "same") + return; + addEdgeIfNot(g, currN, uncle, { + dir: "up", + field: currEAttr.field, + implied: BC_I_AUNT + }); + }); + }); + }); +} +function addCousins(g) { + g.forEachNode((currN, a2) => { + g.forEachOutEdge(currN, (k, currEAttr, s, parentNode) => { + if (currEAttr.dir !== "up") + return; + g.forEachOutEdge(parentNode, (k2, parentSiblingAttr, s2, uncle) => { + if (parentSiblingAttr.dir !== "same") + return; + g.forEachOutEdge(uncle, (k3, a3, s3, cousin) => { + if (a3.dir !== "down" || currN === cousin) + return; + addEdgeIfNot(g, currN, cousin, { + dir: "same", + field: parentSiblingAttr.field, + implied: BC_I_COUSIN + }); + }); + }); + }); + }); +} +function addStructuralEquivalenceSiblings(g) { + g.forEachNode((currN, a2) => { + g.forEachInEdge(currN, (k, aSis, sis, _) => { + if (aSis.dir !== "same") + return; + g.forEachInEdge(currN, (k2, aBro, bro, _2) => { + if (aBro.dir !== "same" || sis === bro) + return; + if (aBro.field === aSis.field) { + addEdgeIfNot(g, sis, bro, { + dir: "same", + field: aBro.field, + implied: BC_I_SIBLING_2 + }); + } + }); + }); + }); +} + // src/Views/TrailView.ts var import_loglevel12 = __toESM(require_loglevel()); var import_obsidian8 = require("obsidian"); // src/Components/NextPrev.svelte +function add_css(target) { + append_styles(target, "svelte-11g23nm", ".BC-nexts.svelte-11g23nm div.svelte-11g23nm{text-align:right}.BC-nexts.svelte-11g23nm.svelte-11g23nm{border-left:1px solid var(--background-modifier-border)}.BC-prevs.svelte-11g23nm.svelte-11g23nm{border-right:1px solid var(--background-modifier-border)}.BC-NextPrev-Container.svelte-11g23nm.svelte-11g23nm{display:grid;grid-template-columns:1fr 1fr}"); +} function get_each_context(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[8] = list[i].field; @@ -17102,12 +17128,15 @@ function instance($$self, $$props, $$invalidate) { var NextPrev = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance, create_fragment, safe_not_equal, { plugin: 3, next: 0, prev: 1 }); + init(this, options, instance, create_fragment, safe_not_equal, { plugin: 3, next: 0, prev: 1 }, add_css); } }; var NextPrev_default = NextPrev; // src/Components/TrailGrid.svelte +function add_css2(target) { + append_styles(target, "svelte-dgw0hd", "div.BC-grid-wrapper.svelte-dgw0hd.svelte-dgw0hd{position:relative}div.BC-trail-grid.svelte-dgw0hd.svelte-dgw0hd{border:2px solid var(--background-modifier-border);display:grid;align-items:stretch;width:auto;height:auto}.BC-grid-options.svelte-dgw0hd.svelte-dgw0hd{position:absolute;top:0px;right:0px;height:35px;width:32px;border:1px solid var(--background-modifier-border);border-radius:10px;text-align:center;transition:width 0.3s;overflow-wrap:normal;overflow:hidden}div.BC-grid-options.svelte-dgw0hd.svelte-dgw0hd:hover{padding:5px;width:fit-content}div.BC-grid-options.svelte-dgw0hd:hover .BC-grid-options-icon.svelte-dgw0hd{display:none}.BC-grid-options-options.svelte-dgw0hd.svelte-dgw0hd{display:none}div.BC-grid-options.svelte-dgw0hd:hover .BC-grid-options-options.svelte-dgw0hd{display:unset}.BC-depth-button.svelte-dgw0hd.svelte-dgw0hd{padding:3px 5px}div.BC-trail-grid-item.svelte-dgw0hd.svelte-dgw0hd{display:flex;flex-direction:column;border:1px solid var(--background-modifier-border);align-items:center;justify-content:center;padding:2px;font-size:smaller}div.BC-trail-grid-item.BC-filler.svelte-dgw0hd.svelte-dgw0hd{opacity:0.7}"); +} function get_each_context2(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[15] = list[i]; @@ -17144,8 +17173,8 @@ function create_each_block_12(ctx) { div0 = element("div"); t0 = text(t0_value); t1 = space(); - attr(div0, "class", div0_class_value = null_to_empty(linkClass(ctx[18])) + " svelte-c6w3ih"); - attr(div1, "class", div1_class_value = "BC-trail-grid-item " + (ctx[18] === "" ? "BC-filler" : "") + " svelte-c6w3ih"); + attr(div0, "class", div0_class_value = null_to_empty(linkClass(ctx[18])) + " svelte-dgw0hd"); + attr(div1, "class", div1_class_value = "BC-trail-grid-item " + (ctx[18] === "" ? "BC-filler" : "") + " svelte-dgw0hd"); set_style(div1, "grid-area", ctx[19] + 1 + " / " + (ctx[17] + 1) + " / " + (ctx[20] + 2) + " / " + (ctx[17] + 2)); }, m(target, anchor) { @@ -17166,10 +17195,10 @@ function create_each_block_12(ctx) { ctx = new_ctx; if (dirty & 17 && t0_value !== (t0_value = ((_a2 = getAlt(ctx[18], ctx[0])) != null ? _a2 : dropDendron(ctx[18], ctx[5])) + "")) set_data(t0, t0_value); - if (dirty & 16 && div0_class_value !== (div0_class_value = null_to_empty(linkClass(ctx[18])) + " svelte-c6w3ih")) { + if (dirty & 16 && div0_class_value !== (div0_class_value = null_to_empty(linkClass(ctx[18])) + " svelte-dgw0hd")) { attr(div0, "class", div0_class_value); } - if (dirty & 16 && div1_class_value !== (div1_class_value = "BC-trail-grid-item " + (ctx[18] === "" ? "BC-filler" : "") + " svelte-c6w3ih")) { + if (dirty & 16 && div1_class_value !== (div1_class_value = "BC-trail-grid-item " + (ctx[18] === "" ? "BC-filler" : "") + " svelte-dgw0hd")) { attr(div1, "class", div1_class_value); } if (dirty & 16) { @@ -17279,18 +17308,18 @@ function create_fragment2(ctx) { t6 = space(); button1 = element("button"); t7 = text("+"); - attr(div0, "class", "BC-trail-grid svelte-c6w3ih"); + attr(div0, "class", "BC-trail-grid svelte-dgw0hd"); set_style(div0, "grid-template-columns", "1fr ".repeat(ctx[3].length)); set_style(div0, "grid-template-rows", "1fr ".repeat(ctx[2].length)); - attr(span0, "class", "BC-grid-options-icon svelte-c6w3ih"); - attr(button0, "class", "BC-depth-button svelte-c6w3ih"); + attr(span0, "class", "BC-grid-options-icon svelte-dgw0hd"); + attr(button0, "class", "BC-depth-button svelte-dgw0hd"); button0.disabled = button0_disabled_value = ctx[1] === 1; attr(span1, "class", "tree-item-flair"); - attr(button1, "class", "BC-depth-button svelte-c6w3ih"); + attr(button1, "class", "BC-depth-button svelte-dgw0hd"); button1.disabled = button1_disabled_value = ctx[1] === ctx[7]; - attr(span2, "class", "BC-grid-options-options svelte-c6w3ih"); - attr(div1, "class", "BC-grid-options svelte-c6w3ih"); - attr(div2, "class", "BC-grid-wrapper svelte-c6w3ih"); + attr(span2, "class", "BC-grid-options-options svelte-dgw0hd"); + attr(div1, "class", "BC-grid-options svelte-dgw0hd"); + attr(div2, "class", "BC-grid-wrapper svelte-dgw0hd"); }, m(target, anchor) { insert(target, div2, anchor); @@ -17431,12 +17460,15 @@ function instance2($$self, $$props, $$invalidate) { var TrailGrid = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance2, create_fragment2, safe_not_equal, { sortedTrails: 8, plugin: 0 }); + init(this, options, instance2, create_fragment2, safe_not_equal, { sortedTrails: 8, plugin: 0 }, add_css2); } }; var TrailGrid_default = TrailGrid; // src/Components/TrailPath.svelte +function add_css3(target) { + append_styles(target, "svelte-3c1frp", "span.BC-trail-path-container.svelte-3c1frp{display:flex;justify-content:space-between}"); +} function get_each_context3(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[13] = list[i]; @@ -17802,7 +17834,7 @@ function instance3($$self, $$props, $$invalidate) { var TrailPath = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance3, create_fragment3, safe_not_equal, { sortedTrails: 0, plugin: 1 }); + init(this, options, instance3, create_fragment3, safe_not_equal, { sortedTrails: 0, plugin: 1 }, add_css3); } }; var TrailPath_default = TrailPath; @@ -18587,7 +18619,7 @@ async function drawTrail(plugin) { const trailDiv = createDiv({ cls: `BC-trail ${respectReadableLineLength ? "is-readable-line-width markdown-preview-sizer markdown-preview-section" : ""}`, attr: { - style: (mode !== "preview" ? `max-width: ${max_width};` : "") + "margin: 0 auto; width: 100%;" + style: (mode !== "preview" ? `max-width: ${max_width};` : "") + `margin: 0 auto;${respectReadableLineLength ? "width: var(--file-line-width);" : "width: 100%"}` } }); plugin.visited.push([file.path, trailDiv]); @@ -18637,11 +18669,11 @@ async function drawTrail(plugin) { } // src/refreshIndex.ts -function getDVMetadataCache(plugin, files) { +function getDVMetadataCache(plugin) { const { db } = plugin; const api = getDVApi(plugin); db.start1G("getDVMetadataCache"); - const frontms = files.map((file) => api.page(file.path)); + const frontms = api.pages().values; db.end1G({ frontms }); return frontms; } @@ -18724,11 +18756,7 @@ async function buildMainG(plugin) { } const files = app.vault.getMarkdownFiles(); const dvQ = app.plugins.enabledPlugins.has("dataview"); - let frontms = dvQ ? getDVMetadataCache(plugin, files) : getObsMetadataCache(plugin, files); - if (frontms.some((frontm) => frontm === void 0)) { - await wait(2e3); - frontms = dvQ ? getDVMetadataCache(plugin, files) : getObsMetadataCache(plugin, files); - } + let frontms = dvQ ? getDVMetadataCache(plugin) : getObsMetadataCache(plugin, files); const CSVRows = CSVPaths !== "" ? await getCSVRows(plugin) : []; const eligableAlts = {}; BC_ALTS.forEach((alt) => eligableAlts[alt] = []); @@ -18853,6 +18881,9 @@ async function refreshIndex(plugin) { } // src/Components/MatrixButtons.svelte +function add_css4(target) { + append_styles(target, "svelte-barhym", "button.svelte-barhym{padding:1px 6px 2px 6px;margin-right:6px}"); +} function create_if_block3(ctx) { let button; let mounted; @@ -18955,12 +18986,15 @@ function instance6($$self, $$props, $$invalidate) { var MatrixButtons = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance6, create_fragment6, safe_not_equal, { matrixView: 0 }); + init(this, options, instance6, create_fragment6, safe_not_equal, { matrixView: 0 }, add_css4); } }; var MatrixButtons_default = MatrixButtons; // src/Components/Matrix.svelte +function add_css5(target) { + append_styles(target, "svelte-1p44ezg", ".BC-Matrix.svelte-1p44ezg.svelte-1p44ezg{padding:5px;font-variant-numeric:tabular-nums;line-height:1.5}.BC-Matrix.svelte-1p44ezg>div.svelte-1p44ezg{border:3px solid var(--background-modifier-border);border-radius:3px;margin:3px;position:relative;height:fit-content}.BC-Matrix-square.svelte-1p44ezg.svelte-1p44ezg{border:1px solid var(--background-modifier-border)}.BC-Matrix-headers.svelte-1p44ezg.svelte-1p44ezg{display:flex;justify-content:space-between;align-items:center}.BC-Matrix-header.svelte-1p44ezg.svelte-1p44ezg{margin:2px;padding:0px 10px}h4.BC-Matrix-header.svelte-1p44ezg.svelte-1p44ezg:first-letter{text-transform:capitalize}ol.svelte-1p44ezg.svelte-1p44ezg{margin:3px;padding-left:30px}.BC-Matrix.svelte-1p44ezg li.svelte-1p44ezg{margin:0.1em}"); +} function get_each_context4(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[13] = list[i]; @@ -19636,7 +19670,7 @@ var Matrix = class extends SvelteComponent { hierSquares: 0, currFile: 1, matrixView: 2 - }); + }, add_css5); } }; var Matrix_default = Matrix; @@ -19893,6 +19927,9 @@ var import_obsidian12 = require("obsidian"); // src/Components/ModifyHNItemComp.svelte var import_console = require("console"); var import_obsidian11 = require("obsidian"); +function add_css6(target) { + append_styles(target, "svelte-13g4k7i", "pre.svelte-13g4k7i{display:inline}"); +} function create_if_block_23(ctx) { let if_block_anchor; function select_block_type(ctx2, dirty) { @@ -20285,7 +20322,7 @@ var ModifyHNItemComp = class extends SvelteComponent { hnItem: 2, file: 3, rel: 0 - }); + }, add_css6); } }; var ModifyHNItemComp_default = ModifyHNItemComp; @@ -20469,6 +20506,9 @@ var import_obsidian16 = require("obsidian"); // src/Components/RenderMarkdown.svelte var import_obsidian15 = require("obsidian"); +function add_css7(target) { + append_styles(target, "svelte-7e9i10", "div.BC-note-content.svelte-7e9i10{padding-left:20px}"); +} function create_fragment9(ctx) { let div; return { @@ -20544,12 +20584,15 @@ function instance9($$self, $$props, $$invalidate) { var RenderMarkdown = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance9, create_fragment9, safe_not_equal, { path: 1 }); + init(this, options, instance9, create_fragment9, safe_not_equal, { path: 1 }, add_css7); } }; var RenderMarkdown_default = RenderMarkdown; // src/Components/CBTree.svelte +function add_css8(target) { + append_styles(target, "svelte-1df5nr5", ".BC-tree.svelte-1df5nr5{padding-left:5px}pre.indent.svelte-1df5nr5{display:inline;background-color:transparent;position:top}details.svelte-1df5nr5{display:inline-block}.is-unresolved.svelte-1df5nr5{color:var(--text-muted)}"); +} function get_each_context5(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[17] = list[i][0]; @@ -21010,7 +21053,7 @@ var CBTree = class extends SvelteComponent { max: 3, basename: 4, parsedSource: 12 - }); + }, add_css8); } }; var CBTree_default = CBTree; @@ -21425,6 +21468,9 @@ var RelationSuggestor = class extends import_obsidian21.EditorSuggest { var import_obsidian40 = require("obsidian"); // src/Components/KoFi.svelte +function add_css9(target) { + append_styles(target, "svelte-1j4tt4j", ".BC-Kofi-button.svelte-1j4tt4j{margin-top:10px}"); +} function create_fragment11(ctx) { let script; let script_src_value; @@ -21484,7 +21530,7 @@ function instance11($$self, $$props, $$invalidate) { var KoFi = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance11, create_fragment11, safe_not_equal, {}); + init(this, options, instance11, create_fragment11, safe_not_equal, {}, add_css9); } }; var KoFi_default = KoFi; @@ -21732,6 +21778,9 @@ function addHierarchyNoteSettings(plugin, alternativeHierarchyDetails) { var import_obsidian30 = require("obsidian"); // node_modules/svelte-icons/components/IconBase.svelte +function add_css10(target) { + append_styles(target, "svelte-c8tyih", "svg.svelte-c8tyih{stroke:currentColor;fill:currentColor;stroke-width:0;width:100%;height:auto;max-height:100%}"); +} function create_if_block7(ctx) { let title_1; let t; @@ -21842,7 +21891,7 @@ function instance12($$self, $$props, $$invalidate) { var IconBase = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance12, create_fragment12, safe_not_equal, { title: 0, viewBox: 1 }); + init(this, options, instance12, create_fragment12, safe_not_equal, { title: 0, viewBox: 1 }, add_css10); } }; var IconBase_default = IconBase; @@ -22070,6 +22119,9 @@ var FaRegTrashAlt = class extends SvelteComponent { var FaRegTrashAlt_default = FaRegTrashAlt; // src/Components/UserHierarchies.svelte +function add_css11(target) { + append_styles(target, "svelte-1e9on6f", "label.BC-Arrow-Label.svelte-1e9on6f.svelte-1e9on6f{display:inline-block;width:20px !important}div.BC-Buttons.svelte-1e9on6f.svelte-1e9on6f{padding-bottom:5px}details.BC-Hier-Details.svelte-1e9on6f.svelte-1e9on6f{border:1px solid var(--background-modifier-border);border-radius:10px;padding:10px 5px 10px 10px;margin-bottom:15px}.BC-Hier-Details.svelte-1e9on6f summary.svelte-1e9on6f::marker{font-size:10px}.BC-Hier-Details.svelte-1e9on6f summary button.svelte-1e9on6f{float:right}.icon.svelte-1e9on6f.svelte-1e9on6f{color:var(--text-normal);display:inline-block;padding-top:3px;width:17px;height:17px}"); +} function get_each_context6(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[13] = list[i]; @@ -22499,7 +22551,7 @@ function instance16($$self, $$props, $$invalidate) { var UserHierarchies = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance16, create_fragment16, safe_not_equal, { plugin: 0 }); + init(this, options, instance16, create_fragment16, safe_not_equal, { plugin: 0 }, add_css11); } }; var UserHierarchies_default = UserHierarchies; @@ -22521,6 +22573,9 @@ function addHierarchySettings(plugin, containerEl) { // src/Components/Checkboxes.svelte var import_loglevel19 = __toESM(require_loglevel()); +function add_css12(target) { + append_styles(target, "svelte-d1my4i", ".grid.svelte-d1my4i{display:grid;grid-template-columns:repeat(auto-fit, minmax(100px, 1fr))}"); +} function get_each_context7(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[12] = list[i]; @@ -22752,7 +22807,7 @@ function instance17($$self, $$props, $$invalidate) { var Checkboxes = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance17, create_fragment17, safe_not_equal, { plugin: 4, settingName: 5, options: 0 }); + init(this, options, instance17, create_fragment17, safe_not_equal, { plugin: 4, settingName: 5, options: 0 }, add_css12); } }; var Checkboxes_default = Checkboxes; @@ -22809,7 +22864,7 @@ function addMatrixViewSettings(plugin, viewDetails) { } }; }); - new import_obsidian31.Setting(MLViewDetails).setName("Enable Alpahebtical Sorting").setDesc("By default, items in the Matrix view are sorted by the order they appear in your notes. Toggle this on to enable alphabetical sorting.").addToggle((toggle) => toggle.setValue(settings.enableAlphaSort).onChange(async (value) => { + new import_obsidian31.Setting(MLViewDetails).setName("Enable Alphabetical Sorting").setDesc("By default, items in the Matrix view are sorted by the order they appear in your notes. Toggle this on to enable alphabetical sorting.").addToggle((toggle) => toggle.setValue(settings.enableAlphaSort).onChange(async (value) => { settings.enableAlphaSort = value; await plugin.saveSettings(); await plugin.getActiveTYPEView(MATRIX_VIEW).draw(); @@ -23363,6 +23418,9 @@ var FaInfo = class extends SvelteComponent { var FaInfo_default = FaInfo; // src/Components/Ducks.svelte +function add_css13(target) { + append_styles(target, "svelte-gmdm3a", ".icon.svelte-gmdm3a{color:var(--text-normal);display:inline-block;padding-top:5px !important;width:20px;height:20px}"); +} function get_each_context8(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[13] = list[i]; @@ -23601,7 +23659,7 @@ function instance19($$self, $$props, $$invalidate) { var Ducks = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance19, create_fragment19, safe_not_equal, { plugin: 4, ducksView: 0 }); + init(this, options, instance19, create_fragment19, safe_not_equal, { plugin: 4, ducksView: 0 }, add_css13); } }; var Ducks_default = Ducks; @@ -23797,14 +23855,17 @@ var FaRegSnowflake = class extends SvelteComponent { var FaRegSnowflake_default = FaRegSnowflake; // src/Components/SideTree.svelte +function add_css14(target) { + append_styles(target, "svelte-8j6nux", "button.svelte-8j6nux{display:inline;padding:1px 6px 2px 6px}.BC-downs.svelte-8j6nux{padding-left:5px}pre.svelte-8j6nux{display:inline}.is-unresolved.svelte-8j6nux{color:var(--text-muted)}.icon.svelte-8j6nux{color:var(--text-normal);display:inline-block;padding-top:5px !important;width:20px;height:20px}"); +} function get_each_context9(ctx, list, i) { const child_ctx = ctx.slice(); - child_ctx[15] = list[i]; + child_ctx[16] = list[i]; return child_ctx; } function get_each_context_16(ctx, list, i) { const child_ctx = ctx.slice(); - child_ctx[18] = list[i]; + child_ctx[19] = list[i]; return child_ctx; } function create_else_block4(ctx) { @@ -23863,14 +23924,14 @@ function create_if_block_15(ctx) { } function create_each_block_16(ctx) { let option; - let t_value = ctx[18] + ""; + let t_value = ctx[19] + ""; let t; let option_value_value; return { c() { option = element("option"); t = text(t_value); - option.__value = option_value_value = ctx[18]; + option.__value = option_value_value = ctx[19]; option.value = option.__value; }, m(target, anchor) { @@ -23887,22 +23948,22 @@ function create_each_block_16(ctx) { function create_if_block8(ctx) { let div; let pre; - let t0_value = ctx[15][0] + "-"; + let t0_value = ctx[16][0] + "-"; let t0; let t1; let span; let a2; - let t2_value = dropDendron(ctx[15][1], ctx[6]) + ""; + let t2_value = dropDendron(ctx[16][1], ctx[6]) + ""; let t2; let a_class_value; let t3; let mounted; let dispose; function click_handler_2(...args) { - return ctx[10](ctx[15], ...args); + return ctx[10](ctx[16], ...args); } function mouseover_handler(...args) { - return ctx[11](ctx[15], ...args); + return ctx[11](ctx[16], ...args); } return { c() { @@ -23915,7 +23976,7 @@ function create_if_block8(ctx) { t2 = text(t2_value); t3 = space(); attr(pre, "class", "svelte-8j6nux"); - attr(a2, "class", a_class_value = "internal-link " + (isInVault(ctx[15][1]) ? "" : "is-unresolved") + " svelte-8j6nux"); + attr(a2, "class", a_class_value = "internal-link " + (isInVault(ctx[16][1]) ? "" : "is-unresolved") + " svelte-8j6nux"); attr(span, "class", "internal-link"); }, m(target, anchor) { @@ -23937,11 +23998,11 @@ function create_if_block8(ctx) { }, p(new_ctx, dirty) { ctx = new_ctx; - if (dirty & 32 && t0_value !== (t0_value = ctx[15][0] + "-")) + if (dirty & 32 && t0_value !== (t0_value = ctx[16][0] + "-")) set_data(t0, t0_value); - if (dirty & 32 && t2_value !== (t2_value = dropDendron(ctx[15][1], ctx[6]) + "")) + if (dirty & 32 && t2_value !== (t2_value = dropDendron(ctx[16][1], ctx[6]) + "")) set_data(t2, t2_value); - if (dirty & 32 && a_class_value !== (a_class_value = "internal-link " + (isInVault(ctx[15][1]) ? "" : "is-unresolved") + " svelte-8j6nux")) { + if (dirty & 32 && a_class_value !== (a_class_value = "internal-link " + (isInVault(ctx[16][1]) ? "" : "is-unresolved") + " svelte-8j6nux")) { attr(a2, "class", a_class_value); } }, @@ -23955,7 +24016,7 @@ function create_if_block8(ctx) { } function create_each_block9(ctx) { let if_block_anchor; - let if_block = ctx[15].length > 1 && create_if_block8(ctx); + let if_block = ctx[16].length > 1 && create_if_block8(ctx); return { c() { if (if_block) @@ -23968,7 +24029,7 @@ function create_each_block9(ctx) { insert(target, if_block_anchor, anchor); }, p(ctx2, dirty) { - if (ctx2[15].length > 1) { + if (ctx2[16].length > 1) { if (if_block) { if_block.p(ctx2, dirty); } else { @@ -24170,25 +24231,26 @@ function create_fragment22(ctx) { }; } function instance22($$self, $$props, $$invalidate) { + var _a; let { plugin } = $$props; let { view } = $$props; const { settings, app: app2, closedG } = plugin; const { createIndexIndent } = settings; let dir = "down"; let frozen = false; - let { basename } = getCurrFile(); + let { basename } = (_a = getCurrFile()) !== null && _a !== void 0 ? _a : {}; plugin.registerEvent(app2.workspace.on("active-leaf-change", () => { - var _a; + var _a2; if (frozen) return; - $$invalidate(3, basename = (_a = getCurrFile()) === null || _a === void 0 ? void 0 : _a.basename); + $$invalidate(3, basename = (_a2 = getCurrFile()) === null || _a2 === void 0 ? void 0 : _a2.basename); })); let lines; const click_handler = () => { - var _a; + var _a2; $$invalidate(4, frozen = !frozen); if (!frozen) - $$invalidate(3, basename = (_a = getCurrFile()) == null ? void 0 : _a.basename); + $$invalidate(3, basename = (_a2 = getCurrFile()) == null ? void 0 : _a2.basename); }; const click_handler_1 = async () => { await refreshIndex(plugin); @@ -24209,8 +24271,8 @@ function instance22($$self, $$props, $$invalidate) { $$self.$$.update = () => { if ($$self.$$.dirty & 12) { $: { - const downG = getSubInDirs(closedG, dir); - const allPaths = dfsAllPaths(downG, basename); + const dirG = getSubInDirs(closedG, dir); + const allPaths = dfsAllPaths(dirG, basename); const index2 = createIndex(allPaths, false, createIndexIndent); (0, import_loglevel20.info)({ allPaths, index: index2 }); $$invalidate(5, lines = indexToLinePairs(index2)); @@ -24235,7 +24297,7 @@ function instance22($$self, $$props, $$invalidate) { var SideTree = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance22, create_fragment22, safe_not_equal, { plugin: 0, view: 1 }); + init(this, options, instance22, create_fragment22, safe_not_equal, { plugin: 0, view: 1 }, add_css14); } }; var SideTree_default = SideTree; @@ -31593,4 +31655,4 @@ var BCPlugin = class extends import_obsidian44.Plugin { * Based on Underscore.js 1.8.3 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors */ -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvd2VicGFjay9ib290c3RyYXAiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL2RlZHVwZS5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvZXMvYXJyYXkvZnJvbS5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtZnVuY3Rpb24uanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1mcm9tLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9iaW5kLWNvbnRleHQuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jYWxsLXdpdGgtc2FmZS1pdGVyYXRpb24tY2xvc2luZy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbi5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YtcmF3LmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcnJlY3QtcHJvdG90eXBlLWdldHRlci5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1pdGVyYXRvci1jb25zdHJ1Y3Rvci5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWl0ZXJhdG9yLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VudW0tYnVnLWtleXMuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXRvLXN0cmluZy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRkZW4ta2V5cy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGUuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9odG1sLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmRleGVkLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtZm9yY2VkLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3JzLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbmF0aXZlLXN5bWJvbC5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcC5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1jcmVhdGUuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnRpZXMuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qta2V5cy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vd24ta2V5cy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BhdGguanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWRlZmluZS5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1nbG9iYWwuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC1rZXkuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctYXQuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXByaW1pdGl2ZS5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3ZhbGlkYXRlLXNldC1wcm90b3R5cGUtb2YtYXJndW1lbnRzLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZnJvbS5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3IuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvc3JjL2ljb24uanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL3NyYy9pY29ucy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvc3JjL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9zcmMvcmVwbGFjZS5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvc3JjL3RvLXN2Zy5qcyIsICJub2RlX21vZHVsZXMvbG9nbGV2ZWwvbGliL2xvZ2xldmVsLmpzIiwgIm5vZGVfbW9kdWxlcy9ncmFwaG9sb2d5L3NyYy91dGlscy5qcyIsICJub2RlX21vZHVsZXMvZXZlbnRzL2V2ZW50cy5qcyIsICJub2RlX21vZHVsZXMvb2JsaXRlcmF0b3IvaXRlcmF0b3IuanMiLCAibm9kZV9tb2R1bGVzL29ibGl0ZXJhdG9yL3N1cHBvcnQuanMiLCAibm9kZV9tb2R1bGVzL29ibGl0ZXJhdG9yL2l0ZXIuanMiLCAibm9kZV9tb2R1bGVzL29ibGl0ZXJhdG9yL3Rha2UuanMiLCAibm9kZV9tb2R1bGVzL2dyYXBob2xvZ3kvc3JjL2Vycm9ycy5qcyIsICJub2RlX21vZHVsZXMvZ3JhcGhvbG9neS9zcmMvZGF0YS5qcyIsICJub2RlX21vZHVsZXMvZ3JhcGhvbG9neS9zcmMvaW5kaWNlcy5qcyIsICJub2RlX21vZHVsZXMvZ3JhcGhvbG9neS9zcmMvYXR0cmlidXRlcy9ub2Rlcy5qcyIsICJub2RlX21vZHVsZXMvZ3JhcGhvbG9neS9zcmMvYXR0cmlidXRlcy9lZGdlcy5qcyIsICJub2RlX21vZHVsZXMvb2JsaXRlcmF0b3IvY2hhaW4uanMiLCAibm9kZV9tb2R1bGVzL2dyYXBob2xvZ3kvc3JjL2l0ZXJhdGlvbi9lZGdlcy5qcyIsICJub2RlX21vZHVsZXMvZ3JhcGhvbG9neS9zcmMvaXRlcmF0aW9uL25laWdoYm9ycy5qcyIsICJub2RlX21vZHVsZXMvZ3JhcGhvbG9neS9zcmMvaXRlcmF0aW9uL2FkamFjZW5jeS5qcyIsICJub2RlX21vZHVsZXMvZ3JhcGhvbG9neS9zcmMvc2VyaWFsaXphdGlvbi5qcyIsICJub2RlX21vZHVsZXMvZ3JhcGhvbG9neS9zcmMvZ3JhcGguanMiLCAibm9kZV9tb2R1bGVzL2dyYXBob2xvZ3kvc3JjL2NsYXNzZXMuanMiLCAibm9kZV9tb2R1bGVzL2dyYXBob2xvZ3ktdXRpbHMvaXMtZ3JhcGguanMiLCAibm9kZV9tb2R1bGVzL29ibGl0ZXJhdG9yL3N1cHBvcnQuanMiLCAibm9kZV9tb2R1bGVzL29ibGl0ZXJhdG9yL2ZvcmVhY2guanMiLCAibm9kZV9tb2R1bGVzL21uZW1vbmlzdC91dGlscy90eXBlZC1hcnJheXMuanMiLCAibm9kZV9tb2R1bGVzL21uZW1vbmlzdC91dGlscy9pdGVyYWJsZXMuanMiLCAibm9kZV9tb2R1bGVzL29ibGl0ZXJhdG9yL2l0ZXJhdG9yLmpzIiwgIm5vZGVfbW9kdWxlcy9tbmVtb25pc3QvZml4ZWQtZGVxdWUuanMiLCAibm9kZV9tb2R1bGVzL2dyYXBob2xvZ3ktdHJhdmVyc2FsL3V0aWxzLmpzIiwgIm5vZGVfbW9kdWxlcy9ncmFwaG9sb2d5LXRyYXZlcnNhbC9iZnMuanMiLCAibm9kZV9tb2R1bGVzL2dyYXBob2xvZ3ktdHJhdmVyc2FsL2Rmcy5qcyIsICJub2RlX21vZHVsZXMvZ3JhcGhvbG9neS10cmF2ZXJzYWwvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9lcnJvcnMuanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2Zvcm1hdHMuanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL3V0aWwuanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2VuZ2xpc2guanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2Zvcm1hdHRlci5qcyIsICJub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvaW52YWxpZC5qcyIsICJub2RlX21vZHVsZXMvbHV4b24vc3JjL3pvbmUuanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy96b25lcy9zeXN0ZW1ab25lLmpzIiwgIm5vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvSUFOQVpvbmUuanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy96b25lcy9maXhlZE9mZnNldFpvbmUuanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy96b25lcy9pbnZhbGlkWm9uZS5qcyIsICJub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvem9uZVV0aWwuanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9zZXR0aW5ncy5qcyIsICJub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvbG9jYWxlLmpzIiwgIm5vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9yZWdleFBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvbHV4b24vc3JjL2R1cmF0aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW50ZXJ2YWwuanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbmZvLmpzIiwgIm5vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9kaWZmLmpzIiwgIm5vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9kaWdpdHMuanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL3Rva2VuUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9jb252ZXJzaW9ucy5qcyIsICJub2RlX21vZHVsZXMvbHV4b24vc3JjL2RhdGV0aW1lLmpzIiwgIm5vZGVfbW9kdWxlcy9sdXhvbi9zcmMvbHV4b24uanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC9sb2Rhc2guanMiLCAic3JjL21haW4udHMiLCAibm9kZV9tb2R1bGVzL2p1Z2dsLWFwaS9kaXN0L2luZGV4Lm1qcyIsICJub2RlX21vZHVsZXMvb2JzaWRpYW4tY29tbXVuaXR5LWxpYi9kaXN0L3V0aWxzLmpzIiwgInNyYy9jb25zdGFudHMudHMiLCAic3JjL1ZpZXdzL01hdHJpeFZpZXcudHMiLCAic3JjL0RlYnVnZ2VyLnRzIiwgIm5vZGVfbW9kdWxlcy9zdmVsdGUvaW50ZXJuYWwvaW5kZXgubWpzIiwgInNyYy9yZWZyZXNoSW5kZXgudHMiLCAic3JjL1V0aWxzL2dyYXBoVXRpbHMudHMiLCAic3JjL1V0aWxzL0hpZXJVdGlscy50cyIsICJzcmMvVXRpbHMvT2JzaWRpYW5VdGlscy50cyIsICJzcmMvVXRpbHMvZ2VuZXJhbFV0aWxzLnRzIiwgInNyYy9SZWxhdGlvbnMudHMiLCAic3JjL0FsdGVybmF0aXZlSGllcmFyY2hpZXMvQ1NWQ3J1bWJzLnRzIiwgInNyYy9BbHRlcm5hdGl2ZUhpZXJhcmNoaWVzL0RhdGF2aWV3Tm90ZXMudHMiLCAic3JjL0FsdGVybmF0aXZlSGllcmFyY2hpZXMvRGF0ZU5vdGVzLnRzIiwgInNyYy9BbHRlcm5hdGl2ZUhpZXJhcmNoaWVzL0RlbmRyb25Ob3Rlcy50cyIsICJzcmMvQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9Gb2xkZXJOb3Rlcy50cyIsICJzcmMvQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9IaWVyYXJjaHlOb3Rlcy9IaWVyYXJjaHlOb3Rlcy50cyIsICJzcmMvQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9KdWdnbExpbmtzLnRzIiwgInNyYy9BbHRlcm5hdGl2ZUhpZXJhcmNoaWVzL0xpbmtOb3Rlcy50cyIsICJzcmMvQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9SZWdleE5vdGVzLnRzIiwgInNyYy9BbHRlcm5hdGl2ZUhpZXJhcmNoaWVzL1RhZ05vdGVzLnRzIiwgInNyYy9BbHRlcm5hdGl2ZUhpZXJhcmNoaWVzL1RyYXZlcnNlTm90ZXMudHMiLCAic3JjL1ZpZXdzL1RyYWlsVmlldy50cyIsICJzcmMvc3JjL0NvbXBvbmVudHMvTmV4dFByZXYuc3ZlbHRlIiwgInNyYy9Db21wb25lbnRzL05leHRQcmV2LnN2ZWx0ZSIsICJzcmMvc3JjL0NvbXBvbmVudHMvVHJhaWxHcmlkLnN2ZWx0ZSIsICJzcmMvQ29tcG9uZW50cy9UcmFpbEdyaWQuc3ZlbHRlIiwgInNyYy9zcmMvQ29tcG9uZW50cy9UcmFpbFBhdGguc3ZlbHRlIiwgInNyYy9Db21wb25lbnRzL1RyYWlsUGF0aC5zdmVsdGUiLCAic3JjL1Zpc3VhbGlzYXRpb25zL0p1Z2dsLnRzIiwgInNyYy9Db21tYW5kcy9DcmVhdGVJbmRleC50cyIsICJzcmMvQ29tcG9uZW50cy9KdWdnbEJ1dHRvbi5zdmVsdGUiLCAic3JjL3NyYy9Db21wb25lbnRzL0p1Z2dsQnV0dG9uLnN2ZWx0ZSIsICJzcmMvc3JjL0NvbXBvbmVudHMvSnVnZ2xEZXB0aC5zdmVsdGUiLCAic3JjL0NvbXBvbmVudHMvSnVnZ2xEZXB0aC5zdmVsdGUiLCAic3JjL3NyYy9Db21wb25lbnRzL01hdHJpeEJ1dHRvbnMuc3ZlbHRlIiwgInNyYy9Db21wb25lbnRzL01hdHJpeEJ1dHRvbnMuc3ZlbHRlIiwgInNyYy9zcmMvQ29tcG9uZW50cy9NYXRyaXguc3ZlbHRlIiwgInNyYy9Db21wb25lbnRzL01hdHJpeC5zdmVsdGUiLCAic3JjL0FQSS50cyIsICJzcmMvQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9IaWVyYXJjaHlOb3Rlcy9IaWVyTm90ZU1vZGFsLnRzIiwgInNyYy9BbHRlcm5hdGl2ZUhpZXJhcmNoaWVzL0hpZXJhcmNoeU5vdGVzL0hpZXJhcmNoeU5vdGVNYW5pcHVsYXRvci50cyIsICJzcmMvQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9IaWVyYXJjaHlOb3Rlcy9Nb2RpZnlIaWVySXRlbU1vZGFsLnRzIiwgInNyYy9zcmMvQ29tcG9uZW50cy9Nb2RpZnlITkl0ZW1Db21wLnN2ZWx0ZSIsICJzcmMvQ29tcG9uZW50cy9Nb2RpZnlITkl0ZW1Db21wLnN2ZWx0ZSIsICJzcmMvQ29kZWJsb2Nrcy50cyIsICJzcmMvc3JjL0NvbXBvbmVudHMvUmVuZGVyTWFya2Rvd24uc3ZlbHRlIiwgInNyYy9Db21wb25lbnRzL1JlbmRlck1hcmtkb3duLnN2ZWx0ZSIsICJzcmMvc3JjL0NvbXBvbmVudHMvQ0JUcmVlLnN2ZWx0ZSIsICJzcmMvQ29tcG9uZW50cy9DQlRyZWUuc3ZlbHRlIiwgInNyYy9Db21tYW5kcy9qdW1wVG9GaXJzdERpci50cyIsICJzcmMvQ29tbWFuZHMvdGhyZWFkaW5nLnRzIiwgInNyYy9Db21tYW5kcy9Xcml0ZUJDcy50cyIsICJzcmMvRmllbGRTdWdnZXN0b3IudHMiLCAic3JjL1JlbGF0aW9uU3VnZ2VzdG9yLnRzIiwgInNyYy9TZXR0aW5ncy9CcmVhZGNydW1ic1NldHRpbmdUYWIudHMiLCAic3JjL0NvbXBvbmVudHMvS29GaS5zdmVsdGUiLCAic3JjL1NldHRpbmdzL0NyZWF0ZUluZGV4U2V0dGluZ3MudHMiLCAic3JjL1NldHRpbmdzL0NTVlNldHRpbmdzLnRzIiwgInNyYy9TZXR0aW5ncy9EYXRhdmlld05vdGVTZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3MvRGF0ZU5vdGVTZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3MvRGVidWdnaW5nU2V0dGluZ3MudHMiLCAic3JjL1NldHRpbmdzL0RlbmRyb25TZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3MvR2VuZXJhbFNldHRpbmdzLnRzIiwgInNyYy9TZXR0aW5ncy9IaWVyYXJjaHlOb3RlU2V0dGluZ3MudHMiLCAic3JjL3NyYy9Db21wb25lbnRzL1VzZXJIaWVyYXJjaGllcy5zdmVsdGUiLCAic3JjL0NvbXBvbmVudHMvVXNlckhpZXJhcmNoaWVzLnN2ZWx0ZSIsICJub2RlX21vZHVsZXMvc3ZlbHRlLWljb25zL2NvbXBvbmVudHMvSWNvbkJhc2Uuc3ZlbHRlIiwgIm5vZGVfbW9kdWxlcy9zdmVsdGUtaWNvbnMvZmEvRmFMaXN0VWwuc3ZlbHRlIiwgIm5vZGVfbW9kdWxlcy9zdmVsdGUtaWNvbnMvZmEvRmFQbHVzLnN2ZWx0ZSIsICJub2RlX21vZHVsZXMvc3ZlbHRlLWljb25zL2ZhL0ZhUmVnVHJhc2hBbHQuc3ZlbHRlIiwgInNyYy9TZXR0aW5ncy9IaWVyYXJjaHlTZXR0aW5ncy50cyIsICJzcmMvc3JjL0NvbXBvbmVudHMvQ2hlY2tib3hlcy5zdmVsdGUiLCAic3JjL0NvbXBvbmVudHMvQ2hlY2tib3hlcy5zdmVsdGUiLCAic3JjL1NldHRpbmdzL0p1bXBUb05leHRTZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3MvTWF0cml4Vmlld1NldHRpbmdzLnRzIiwgInNyYy9TZXR0aW5ncy9Ob1N5c3RlbVNldHRpbmdzLnRzIiwgInNyYy9TZXR0aW5ncy9SZWdleE5vdGVTZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3MvUmVsYXRpb25TZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3MvVGFnTm90ZVNldHRpbmdzLnRzIiwgInNyYy9TZXR0aW5ncy9UaHJlYWRpbmdTZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3MvVHJhaWxTZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3MvVmlzTW9kYWxTZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3MvV3JpdGVCQ3NTZXR0aW5ncy50cyIsICJzcmMvVmlld3MvRHVja3NWaWV3LnRzIiwgIm5vZGVfbW9kdWxlcy9zdmVsdGUtaWNvbnMvZmEvRmFJbmZvLnN2ZWx0ZSIsICJzcmMvc3JjL0NvbXBvbmVudHMvRHVja3Muc3ZlbHRlIiwgInNyYy9Db21wb25lbnRzL0R1Y2tzLnN2ZWx0ZSIsICJzcmMvVmlld3MvVHJlZVZpZXcudHMiLCAic3JjL3NyYy9Db21wb25lbnRzL1NpZGVUcmVlLnN2ZWx0ZSIsICJzcmMvQ29tcG9uZW50cy9TaWRlVHJlZS5zdmVsdGUiLCAibm9kZV9tb2R1bGVzL3N2ZWx0ZS1pY29ucy9mYS9GYUZpcmUuc3ZlbHRlIiwgIm5vZGVfbW9kdWxlcy9zdmVsdGUtaWNvbnMvZmEvRmFSZWdTbm93Zmxha2Uuc3ZlbHRlIiwgIm5vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvYXNjZW5kaW5nLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvYmlzZWN0b3IuanMiLCAibm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9udW1iZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9iaXNlY3QuanMiLCAibm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy90aWNrcy5qcyIsICJub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL21heC5qcyIsICJub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL3JhbmdlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1kaXNwYXRjaC9zcmMvZGlzcGF0Y2guanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvbmFtZXNwYWNlcy5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9uYW1lc3BhY2UuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvY3JlYXRvci5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rvci5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vc2VsZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL2FycmF5LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdG9yQWxsLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9zZWxlY3RBbGwuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvbWF0Y2hlci5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vc2VsZWN0Q2hpbGQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NlbGVjdENoaWxkcmVuLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9maWx0ZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NwYXJzZS5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZW50ZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvY29uc3RhbnQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2RhdGEuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2V4aXQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2pvaW4uanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL21lcmdlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9vcmRlci5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vc29ydC5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vY2FsbC5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vbm9kZXMuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL25vZGUuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NpemUuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2VtcHR5LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9lYWNoLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9hdHRyLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3dpbmRvdy5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vc3R5bGUuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3Byb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9jbGFzc2VkLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi90ZXh0LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9odG1sLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9yYWlzZS5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vbG93ZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2FwcGVuZC5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vaW5zZXJ0LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9yZW1vdmUuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2Nsb25lLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9kYXR1bS5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vb24uanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2Rpc3BhdGNoLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9pdGVyYXRvci5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NvdXJjZUV2ZW50LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3BvaW50ZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLWRyYWcvc3JjL25vZXZlbnQuanMiLCAibm9kZV9tb2R1bGVzL2QzLWRyYWcvc3JjL25vZHJhZy5qcyIsICJub2RlX21vZHVsZXMvZDMtZHJhZy9zcmMvY29uc3RhbnQuanMiLCAibm9kZV9tb2R1bGVzL2QzLWRyYWcvc3JjL2V2ZW50LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1kcmFnL3NyYy9kcmFnLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1jb2xvci9zcmMvZGVmaW5lLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1jb2xvci9zcmMvY29sb3IuanMiLCAibm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9tYXRoLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1jb2xvci9zcmMvY3ViZWhlbGl4LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvYmFzaXMuanMiLCAibm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9iYXNpc0Nsb3NlZC5qcyIsICJub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2NvbnN0YW50LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvY29sb3IuanMiLCAibm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9yZ2IuanMiLCAibm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9udW1iZXJBcnJheS5qcyIsICJub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2FycmF5LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvZGF0ZS5qcyIsICJub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL251bWJlci5qcyIsICJub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL29iamVjdC5qcyIsICJub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3N0cmluZy5qcyIsICJub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3ZhbHVlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvcm91bmQuanMiLCAibm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vZGVjb21wb3NlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvdHJhbnNmb3JtL3BhcnNlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvdHJhbnNmb3JtL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvem9vbS5qcyIsICJub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2N1YmVoZWxpeC5qcyIsICJub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3F1YW50aXplLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy10aW1lci9zcmMvdGltZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLXRpbWVyL3NyYy90aW1lb3V0LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3NjaGVkdWxlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy9pbnRlcnJ1cHQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3NlbGVjdGlvbi9pbnRlcnJ1cHQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vdHdlZW4uanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vaW50ZXJwb2xhdGUuanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vYXR0ci5qcyIsICJub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9hdHRyVHdlZW4uanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vZGVsYXkuanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vZHVyYXRpb24uanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vZWFzZS5qcyIsICJub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9lYXNlVmFyeWluZy5qcyIsICJub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9maWx0ZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vbWVyZ2UuanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vb24uanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vcmVtb3ZlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3NlbGVjdC5qcyIsICJub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9zZWxlY3RBbGwuanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vc2VsZWN0aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3N0eWxlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3N0eWxlVHdlZW4uanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vdGV4dC5qcyIsICJub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi90ZXh0VHdlZW4uanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vdHJhbnNpdGlvbi5qcyIsICJub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9lbmQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL2N1YmljLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy9zZWxlY3Rpb24vdHJhbnNpdGlvbi5qcyIsICJub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvc2VsZWN0aW9uL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1icnVzaC9zcmMvYnJ1c2guanMiLCAibm9kZV9tb2R1bGVzL2QzLXBhdGgvc3JjL3BhdGguanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9jZW50ZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9hZGQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9jb3Zlci5qcyIsICJub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL2RhdGEuanMiLCAibm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9leHRlbnQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9xdWFkLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvZmluZC5qcyIsICJub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3JlbW92ZS5qcyIsICJub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3Jvb3QuanMiLCAibm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9zaXplLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvdmlzaXQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy92aXNpdEFmdGVyLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMveC5qcyIsICJub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3kuanMiLCAibm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9xdWFkdHJlZS5qcyIsICJub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2NvbnN0YW50LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1mb3JjZS9zcmMvamlnZ2xlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1mb3JjZS9zcmMvY29sbGlkZS5qcyIsICJub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2xpbmsuanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9sY2cuanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9zaW11bGF0aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1mb3JjZS9zcmMvbWFueUJvZHkuanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0RGVjaW1hbC5qcyIsICJub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9leHBvbmVudC5qcyIsICJub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRHcm91cC5qcyIsICJub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXROdW1lcmFscy5qcyIsICJub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRTcGVjaWZpZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0VHJpbS5qcyIsICJub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRQcmVmaXhBdXRvLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdFJvdW5kZWQuanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0VHlwZXMuanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvaWRlbnRpdHkuanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvbG9jYWxlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2RlZmF1bHRMb2NhbGUuanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uRml4ZWQuanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uUHJlZml4LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL3ByZWNpc2lvblJvdW5kLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2NsdXN0ZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2NvdW50LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9lYWNoLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9lYWNoQmVmb3JlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9lYWNoQWZ0ZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2ZpbmQuanMiLCAibm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L3N1bS5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvc29ydC5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvcGF0aC5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvYW5jZXN0b3JzLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9kZXNjZW5kYW50cy5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvbGVhdmVzLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9saW5rcy5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvaXRlcmF0b3IuanMiLCAibm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2FjY2Vzc29ycy5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9jb25zdGFudC5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL3JvdW5kLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL3RyZWVtYXAvZGljZS5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9wYXJ0aXRpb24uanMiLCAibm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvc3RyYXRpZnkuanMiLCAibm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZS5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL3NsaWNlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL3RyZWVtYXAvc3F1YXJpZnkuanMiLCAibm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZW1hcC9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL2JpbmFyeS5qcyIsICJub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2luaXQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9vcmRpbmFsLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvYmFuZC5qcyIsICJub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2NvbnN0YW50LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvbnVtYmVyLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvY29udGludW91cy5qcyIsICJub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3RpY2tGb3JtYXQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9saW5lYXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY29sb3JzLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL2NhdGVnb3JpY2FsL2NhdGVnb3J5MTAuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9yYWluYm93LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY29uc3RhbnQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9tYXRoLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvYXJjLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvYXJyYXkuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9saW5lYXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9wb2ludC5qcyIsICJub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2xpbmUuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9yYWRpYWwuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9saW5lUmFkaWFsLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvbGluay9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2Jhc2lzLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvYnVuZGxlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy16b29tL3NyYy9jb25zdGFudC5qcyIsICJub2RlX21vZHVsZXMvZDMtem9vbS9zcmMvZXZlbnQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXpvb20vc3JjL3RyYW5zZm9ybS5qcyIsICJub2RlX21vZHVsZXMvZDMtem9vbS9zcmMvbm9ldmVudC5qcyIsICJub2RlX21vZHVsZXMvZDMtem9vbS9zcmMvem9vbS5qcyIsICJzcmMvVmlzdWFsaXNhdGlvbnMvVmlzTW9kYWwudHMiLCAic3JjL3NyYy9Db21wb25lbnRzL1Zpc0NvbXAuc3ZlbHRlIiwgInNyYy9Db21wb25lbnRzL1Zpc0NvbXAuc3ZlbHRlIiwgInNyYy9WaXN1YWxpc2F0aW9ucy9BcmNEaWFncmFtLnRzIiwgInNyYy9WaXN1YWxpc2F0aW9ucy9DaXJjbGVQYWNraW5nLnRzIiwgInNyYy9WaXN1YWxpc2F0aW9ucy9FZGdlQnVuZGxpbmcudHMiLCAic3JjL1Zpc3VhbGlzYXRpb25zL0ZvcmNlRGlyZWN0ZWRHLnRzIiwgInNyYy9WaXN1YWxpc2F0aW9ucy9JY2ljbGUudHMiLCAic3JjL1Zpc3VhbGlzYXRpb25zL1JhZGlhbFRyZWUudHMiLCAic3JjL1Zpc3VhbGlzYXRpb25zL1N1bmJ1cnN0LnRzIiwgInNyYy9WaXN1YWxpc2F0aW9ucy9UaWR5VHJlZS50cyIsICJzcmMvVmlzdWFsaXNhdGlvbnMvVHJlZU1hcC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiZmVhdGhlclwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJmZWF0aGVyXCJdID0gZmFjdG9yeSgpO1xufSkodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuICIsICIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbiBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbiBcdFx0XHR9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDApO1xuIiwgIi8qIVxuICBDb3B5cmlnaHQgKGMpIDIwMTYgSmVkIFdhdHNvbi5cbiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcbiAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbi8qIGdsb2JhbCBkZWZpbmUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBjbGFzc05hbWVzID0gKGZ1bmN0aW9uICgpIHtcblx0XHQvLyBkb24ndCBpbmhlcml0IGZyb20gT2JqZWN0IHNvIHdlIGNhbiBza2lwIGhhc093blByb3BlcnR5IGNoZWNrIGxhdGVyXG5cdFx0Ly8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNTUxODMyOC9jcmVhdGluZy1qcy1vYmplY3Qtd2l0aC1vYmplY3QtY3JlYXRlbnVsbCNhbnN3ZXItMjEwNzkyMzJcblx0XHRmdW5jdGlvbiBTdG9yYWdlT2JqZWN0KCkge31cblx0XHRTdG9yYWdlT2JqZWN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cblx0XHRmdW5jdGlvbiBfcGFyc2VBcnJheSAocmVzdWx0U2V0LCBhcnJheSkge1xuXHRcdFx0dmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuXHRcdFx0XHRfcGFyc2UocmVzdWx0U2V0LCBhcnJheVtpXSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dmFyIGhhc093biA9IHt9Lmhhc093blByb3BlcnR5O1xuXG5cdFx0ZnVuY3Rpb24gX3BhcnNlTnVtYmVyIChyZXN1bHRTZXQsIG51bSkge1xuXHRcdFx0cmVzdWx0U2V0W251bV0gPSB0cnVlO1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIF9wYXJzZU9iamVjdCAocmVzdWx0U2V0LCBvYmplY3QpIHtcblx0XHRcdGZvciAodmFyIGsgaW4gb2JqZWN0KSB7XG5cdFx0XHRcdGlmIChoYXNPd24uY2FsbChvYmplY3QsIGspKSB7XG5cdFx0XHRcdFx0Ly8gc2V0IHZhbHVlIHRvIGZhbHNlIGluc3RlYWQgb2YgZGVsZXRpbmcgaXQgdG8gYXZvaWQgY2hhbmdpbmcgb2JqZWN0IHN0cnVjdHVyZVxuXHRcdFx0XHRcdC8vIGh0dHBzOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMTIvMTEvd3JpdGluZy1mYXN0LW1lbW9yeS1lZmZpY2llbnQtamF2YXNjcmlwdC8jZGUtcmVmZXJlbmNpbmctbWlzY29uY2VwdGlvbnNcblx0XHRcdFx0XHRyZXN1bHRTZXRba10gPSAhIW9iamVjdFtrXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHZhciBTUEFDRSA9IC9cXHMrLztcblx0XHRmdW5jdGlvbiBfcGFyc2VTdHJpbmcgKHJlc3VsdFNldCwgc3RyKSB7XG5cdFx0XHR2YXIgYXJyYXkgPSBzdHIuc3BsaXQoU1BBQ0UpO1xuXHRcdFx0dmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuXHRcdFx0XHRyZXN1bHRTZXRbYXJyYXlbaV1dID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmdW5jdGlvbiBfcGFyc2UgKHJlc3VsdFNldCwgYXJnKSB7XG5cdFx0XHRpZiAoIWFyZykgcmV0dXJuO1xuXHRcdFx0dmFyIGFyZ1R5cGUgPSB0eXBlb2YgYXJnO1xuXG5cdFx0XHQvLyAnZm9vIGJhcidcblx0XHRcdGlmIChhcmdUeXBlID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRfcGFyc2VTdHJpbmcocmVzdWx0U2V0LCBhcmcpO1xuXG5cdFx0XHQvLyBbJ2ZvbycsICdiYXInLCAuLi5dXG5cdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuXHRcdFx0XHRfcGFyc2VBcnJheShyZXN1bHRTZXQsIGFyZyk7XG5cblx0XHRcdC8vIHsgJ2Zvbyc6IHRydWUsIC4uLiB9XG5cdFx0XHR9IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdF9wYXJzZU9iamVjdChyZXN1bHRTZXQsIGFyZyk7XG5cblx0XHRcdC8vICcxMzAnXG5cdFx0XHR9IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdudW1iZXInKSB7XG5cdFx0XHRcdF9wYXJzZU51bWJlcihyZXN1bHRTZXQsIGFyZyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gX2NsYXNzTmFtZXMgKCkge1xuXHRcdFx0Ly8gZG9uJ3QgbGVhayBhcmd1bWVudHNcblx0XHRcdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wZXRrYWFudG9ub3YvYmx1ZWJpcmQvd2lraS9PcHRpbWl6YXRpb24ta2lsbGVycyMzMi1sZWFraW5nLWFyZ3VtZW50c1xuXHRcdFx0dmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG5cdFx0XHR2YXIgYXJncyA9IEFycmF5KGxlbik7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0XHRcdGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG5cdFx0XHR9XG5cblx0XHRcdHZhciBjbGFzc1NldCA9IG5ldyBTdG9yYWdlT2JqZWN0KCk7XG5cdFx0XHRfcGFyc2VBcnJheShjbGFzc1NldCwgYXJncyk7XG5cblx0XHRcdHZhciBsaXN0ID0gW107XG5cblx0XHRcdGZvciAodmFyIGsgaW4gY2xhc3NTZXQpIHtcblx0XHRcdFx0aWYgKGNsYXNzU2V0W2tdKSB7XG5cdFx0XHRcdFx0bGlzdC5wdXNoKGspXG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGxpc3Quam9pbignICcpO1xuXHRcdH1cblxuXHRcdHJldHVybiBfY2xhc3NOYW1lcztcblx0fSkoKTtcblxuXHRpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGNsYXNzTmFtZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuXHR9XG59KCkpO1xuIiwgInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLmFycmF5LmZyb20nKTtcbnZhciBwYXRoID0gcmVxdWlyZSgnLi4vLi4vaW50ZXJuYWxzL3BhdGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXRoLkFycmF5LmZyb207XG4iLCAibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFN0cmluZyhpdCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcbiIsICJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFN0cmluZyhpdCkgKyAnIGlzIG5vdCBhbiBvYmplY3QnKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2JpbmQtY29udGV4dCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGNhbGxXaXRoU2FmZUl0ZXJhdGlvbkNsb3NpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2FsbC13aXRoLXNhZmUtaXRlcmF0aW9uLWNsb3NpbmcnKTtcbnZhciBpc0FycmF5SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5Jyk7XG52YXIgZ2V0SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xuXG4vLyBgQXJyYXkuZnJvbWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5mcm9tXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZyb20oYXJyYXlMaWtlIC8qICwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQgKi8pIHtcbiAgdmFyIE8gPSB0b09iamVjdChhcnJheUxpa2UpO1xuICB2YXIgQyA9IHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgPyB0aGlzIDogQXJyYXk7XG4gIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgbWFwZm4gPSBhcmd1bWVudHNMZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICB2YXIgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWQ7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBpdGVyYXRvck1ldGhvZCA9IGdldEl0ZXJhdG9yTWV0aG9kKE8pO1xuICB2YXIgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICBpZiAobWFwcGluZykgbWFwZm4gPSBiaW5kKG1hcGZuLCBhcmd1bWVudHNMZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkLCAyKTtcbiAgLy8gaWYgdGhlIHRhcmdldCBpcyBub3QgaXRlcmFibGUgb3IgaXQncyBhbiBhcnJheSB3aXRoIHRoZSBkZWZhdWx0IGl0ZXJhdG9yIC0gdXNlIGEgc2ltcGxlIGNhc2VcbiAgaWYgKGl0ZXJhdG9yTWV0aG9kICE9IHVuZGVmaW5lZCAmJiAhKEMgPT0gQXJyYXkgJiYgaXNBcnJheUl0ZXJhdG9yTWV0aG9kKGl0ZXJhdG9yTWV0aG9kKSkpIHtcbiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yTWV0aG9kLmNhbGwoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEMoKTtcbiAgICBmb3IgKDshKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7IGluZGV4KyspIHtcbiAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmdcbiAgICAgICAgPyBjYWxsV2l0aFNhZmVJdGVyYXRpb25DbG9zaW5nKGl0ZXJhdG9yLCBtYXBmbiwgW3N0ZXAudmFsdWUsIGluZGV4XSwgdHJ1ZSlcbiAgICAgICAgOiBzdGVwLnZhbHVlXG4gICAgICApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgcmVzdWx0ID0gbmV3IEMobGVuZ3RoKTtcbiAgICBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XSk7XG4gICAgfVxuICB9XG4gIHJlc3VsdC5sZW5ndGggPSBpbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCAidmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgaW5kZXhPZiwgaW5jbHVkZXMgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxuLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluZGV4b2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuIiwgInZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1mdW5jdGlvbicpO1xuXG4vLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQpO1xuICAgIH07XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwgInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxuLy8gY2FsbCBzb21ldGhpbmcgb24gaXRlcmF0b3Igc3RlcCB3aXRoIHNhZmUgY2xvc2luZyBvbiBlcnJvclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgRU5UUklFUykge1xuICB0cnkge1xuICAgIHJldHVybiBFTlRSSUVTID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdmFyIHJldHVybk1ldGhvZCA9IGl0ZXJhdG9yWydyZXR1cm4nXTtcbiAgICBpZiAocmV0dXJuTWV0aG9kICE9PSB1bmRlZmluZWQpIGFuT2JqZWN0KHJldHVybk1ldGhvZC5jYWxsKGl0ZXJhdG9yKSk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG4iLCAidmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciBjYWxsZWQgPSAwO1xuICB2YXIgaXRlcmF0b3JXaXRoUmV0dXJuID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7IGRvbmU6ICEhY2FsbGVkKysgfTtcbiAgICB9LFxuICAgICdyZXR1cm4nOiBmdW5jdGlvbiAoKSB7XG4gICAgICBTQUZFX0NMT1NJTkcgPSB0cnVlO1xuICAgIH1cbiAgfTtcbiAgaXRlcmF0b3JXaXRoUmV0dXJuW0lURVJBVE9SXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgQXJyYXkuZnJvbShpdGVyYXRvcldpdGhSZXR1cm4sIGZ1bmN0aW9uICgpIHsgdGhyb3cgMjsgfSk7XG59IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIFNLSVBfQ0xPU0lORykge1xuICBpZiAoIVNLSVBfQ0xPU0lORyAmJiAhU0FGRV9DTE9TSU5HKSByZXR1cm4gZmFsc2U7XG4gIHZhciBJVEVSQVRJT05fU1VQUE9SVCA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBvYmplY3QgPSB7fTtcbiAgICBvYmplY3RbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB7IGRvbmU6IElURVJBVElPTl9TVVBQT1JUID0gdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gICAgZXhlYyhvYmplY3QpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBJVEVSQVRJT05fU1VQUE9SVDtcbn07XG4iLCAidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuIiwgInZhciBjbGFzc29mUmF3ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xuLy8gRVMzIHdyb25nIGhlcmVcbnZhciBDT1JSRUNUX0FSR1VNRU5UUyA9IGNsYXNzb2ZSYXcoZnVuY3Rpb24gKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbi8vIGdldHRpbmcgdGFnIGZyb20gRVM2KyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2Bcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCB0YWcsIHJlc3VsdDtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnXG4gICAgLy8gQEB0b1N0cmluZ1RhZyBjYXNlXG4gICAgOiB0eXBlb2YgKHRhZyA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVE9fU1RSSU5HX1RBRykpID09ICdzdHJpbmcnID8gdGFnXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBDT1JSRUNUX0FSR1VNRU5UUyA/IGNsYXNzb2ZSYXcoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAocmVzdWx0ID0gY2xhc3NvZlJhdyhPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IHJlc3VsdDtcbn07XG4iLCAidmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL293bi1rZXlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgc291cmNlKSB7XG4gIHZhciBrZXlzID0gb3duS2V5cyhzb3VyY2UpO1xuICB2YXIgZGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mO1xuICB2YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmY7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGlmICghaGFzKHRhcmdldCwga2V5KSkgZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpO1xuICB9XG59O1xuIiwgInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEYoKSB7IC8qIGVtcHR5ICovIH1cbiAgRi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBudWxsO1xuICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBGKCkpICE9PSBGLnByb3RvdHlwZTtcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMtY29yZScpLkl0ZXJhdG9yUHJvdG90eXBlO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSXRlcmF0b3JDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCkge1xuICB2YXIgVE9fU1RSSU5HX1RBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgSXRlcmF0b3JDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhJdGVyYXRvckNvbnN0cnVjdG9yLCBUT19TVFJJTkdfVEFHLCBmYWxzZSwgdHJ1ZSk7XG4gIEl0ZXJhdG9yc1tUT19TVFJJTkdfVEFHXSA9IHJldHVyblRoaXM7XG4gIHJldHVybiBJdGVyYXRvckNvbnN0cnVjdG9yO1xufTtcbiIsICJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICB2YXIgcHJvcGVydHlLZXkgPSB0b1ByaW1pdGl2ZShrZXkpO1xuICBpZiAocHJvcGVydHlLZXkgaW4gb2JqZWN0KSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwgcHJvcGVydHlLZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigwLCB2YWx1ZSkpO1xuICBlbHNlIG9iamVjdFtwcm9wZXJ0eUtleV0gPSB2YWx1ZTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaXRlcmF0b3ItY29uc3RydWN0b3InKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZicpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcbnZhciBJdGVyYXRvcnNDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlJyk7XG5cbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IEl0ZXJhdG9yc0NvcmUuSXRlcmF0b3JQcm90b3R5cGU7XG52YXIgQlVHR1lfU0FGQVJJX0lURVJBVE9SUyA9IEl0ZXJhdG9yc0NvcmUuQlVHR1lfU0FGQVJJX0lURVJBVE9SUztcbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBLRVlTID0gJ2tleXMnO1xudmFyIFZBTFVFUyA9ICd2YWx1ZXMnO1xudmFyIEVOVFJJRVMgPSAnZW50cmllcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSXRlcmFibGUsIE5BTUUsIEl0ZXJhdG9yQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gIGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IoSXRlcmF0b3JDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCk7XG5cbiAgdmFyIGdldEl0ZXJhdGlvbk1ldGhvZCA9IGZ1bmN0aW9uIChLSU5EKSB7XG4gICAgaWYgKEtJTkQgPT09IERFRkFVTFQgJiYgZGVmYXVsdEl0ZXJhdG9yKSByZXR1cm4gZGVmYXVsdEl0ZXJhdG9yO1xuICAgIGlmICghQlVHR1lfU0FGQVJJX0lURVJBVE9SUyAmJiBLSU5EIGluIEl0ZXJhYmxlUHJvdG90eXBlKSByZXR1cm4gSXRlcmFibGVQcm90b3R5cGVbS0lORF07XG4gICAgc3dpdGNoIChLSU5EKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcywgS0lORCk7IH07XG4gICAgICBjYXNlIFZBTFVFUzogcmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuIG5ldyBJdGVyYXRvckNvbnN0cnVjdG9yKHRoaXMsIEtJTkQpOyB9O1xuICAgICAgY2FzZSBFTlRSSUVTOiByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBJdGVyYXRvckNvbnN0cnVjdG9yKHRoaXMsIEtJTkQpOyB9O1xuICAgIH0gcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyBJdGVyYXRvckNvbnN0cnVjdG9yKHRoaXMpOyB9O1xuICB9O1xuXG4gIHZhciBUT19TVFJJTkdfVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICB2YXIgSU5DT1JSRUNUX1ZBTFVFU19OQU1FID0gZmFsc2U7XG4gIHZhciBJdGVyYWJsZVByb3RvdHlwZSA9IEl0ZXJhYmxlLnByb3RvdHlwZTtcbiAgdmFyIG5hdGl2ZUl0ZXJhdG9yID0gSXRlcmFibGVQcm90b3R5cGVbSVRFUkFUT1JdXG4gICAgfHwgSXRlcmFibGVQcm90b3R5cGVbJ0BAaXRlcmF0b3InXVxuICAgIHx8IERFRkFVTFQgJiYgSXRlcmFibGVQcm90b3R5cGVbREVGQVVMVF07XG4gIHZhciBkZWZhdWx0SXRlcmF0b3IgPSAhQlVHR1lfU0FGQVJJX0lURVJBVE9SUyAmJiBuYXRpdmVJdGVyYXRvciB8fCBnZXRJdGVyYXRpb25NZXRob2QoREVGQVVMVCk7XG4gIHZhciBhbnlOYXRpdmVJdGVyYXRvciA9IE5BTUUgPT0gJ0FycmF5JyA/IEl0ZXJhYmxlUHJvdG90eXBlLmVudHJpZXMgfHwgbmF0aXZlSXRlcmF0b3IgOiBuYXRpdmVJdGVyYXRvcjtcbiAgdmFyIEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgbWV0aG9kcywgS0VZO1xuXG4gIC8vIGZpeCBuYXRpdmVcbiAgaWYgKGFueU5hdGl2ZUl0ZXJhdG9yKSB7XG4gICAgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoYW55TmF0aXZlSXRlcmF0b3IuY2FsbChuZXcgSXRlcmFibGUoKSkpO1xuICAgIGlmIChJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJiBDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgaWYgKCFJU19QVVJFICYmIGdldFByb3RvdHlwZU9mKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSkgIT09IEl0ZXJhdG9yUHJvdG90eXBlKSB7XG4gICAgICAgIGlmIChzZXRQcm90b3R5cGVPZikge1xuICAgICAgICAgIHNldFByb3RvdHlwZU9mKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgSXRlcmF0b3JQcm90b3R5cGUpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBDdXJyZW50SXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBoaWRlKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG4gICAgICBzZXRUb1N0cmluZ1RhZyhDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIFRPX1NUUklOR19UQUcsIHRydWUsIHRydWUpO1xuICAgICAgaWYgKElTX1BVUkUpIEl0ZXJhdG9yc1tUT19TVFJJTkdfVEFHXSA9IHJldHVyblRoaXM7XG4gICAgfVxuICB9XG5cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGQVVMVCA9PSBWQUxVRVMgJiYgbmF0aXZlSXRlcmF0b3IgJiYgbmF0aXZlSXRlcmF0b3IubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgSU5DT1JSRUNUX1ZBTFVFU19OQU1FID0gdHJ1ZTtcbiAgICBkZWZhdWx0SXRlcmF0b3IgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuYXRpdmVJdGVyYXRvci5jYWxsKHRoaXMpOyB9O1xuICB9XG5cbiAgLy8gZGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUlTX1BVUkUgfHwgRk9SQ0VEKSAmJiBJdGVyYWJsZVByb3RvdHlwZVtJVEVSQVRPUl0gIT09IGRlZmF1bHRJdGVyYXRvcikge1xuICAgIGhpZGUoSXRlcmFibGVQcm90b3R5cGUsIElURVJBVE9SLCBkZWZhdWx0SXRlcmF0b3IpO1xuICB9XG4gIEl0ZXJhdG9yc1tOQU1FXSA9IGRlZmF1bHRJdGVyYXRvcjtcblxuICAvLyBleHBvcnQgYWRkaXRpb25hbCBtZXRob2RzXG4gIGlmIChERUZBVUxUKSB7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogZ2V0SXRlcmF0aW9uTWV0aG9kKFZBTFVFUyksXG4gICAgICBrZXlzOiBJU19TRVQgPyBkZWZhdWx0SXRlcmF0b3IgOiBnZXRJdGVyYXRpb25NZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiBnZXRJdGVyYXRpb25NZXRob2QoRU5UUklFUylcbiAgICB9O1xuICAgIGlmIChGT1JDRUQpIGZvciAoS0VZIGluIG1ldGhvZHMpIHtcbiAgICAgIGlmIChCVUdHWV9TQUZBUklfSVRFUkFUT1JTIHx8IElOQ09SUkVDVF9WQUxVRVNfTkFNRSB8fCAhKEtFWSBpbiBJdGVyYWJsZVByb3RvdHlwZSkpIHtcbiAgICAgICAgcmVkZWZpbmUoSXRlcmFibGVQcm90b3R5cGUsIEtFWSwgbWV0aG9kc1tLRVldKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgJCh7IHRhcmdldDogTkFNRSwgcHJvdG86IHRydWUsIGZvcmNlZDogQlVHR1lfU0FGQVJJX0lURVJBVE9SUyB8fCBJTkNPUlJFQ1RfVkFMVUVTX05BTUUgfSwgbWV0aG9kcyk7XG4gIH1cblxuICByZXR1cm4gbWV0aG9kcztcbn07XG4iLCAidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiIsICJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgZG9jdW1lbnQgPSBnbG9iYWwuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBleGlzdCA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGV4aXN0ID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCAiLy8gSUU4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2NvbnN0cnVjdG9yJyxcbiAgJ2hhc093blByb3BlcnR5JyxcbiAgJ2lzUHJvdG90eXBlT2YnLFxuICAncHJvcGVydHlJc0VudW1lcmFibGUnLFxuICAndG9Mb2NhbGVTdHJpbmcnLFxuICAndG9TdHJpbmcnLFxuICAndmFsdWVPZidcbl07XG4iLCAidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRlJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciBzZXRHbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWdsb2JhbCcpO1xudmFyIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzJyk7XG52YXIgaXNGb3JjZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtZm9yY2VkJyk7XG5cbi8qXG4gIG9wdGlvbnMudGFyZ2V0ICAgICAgLSBuYW1lIG9mIHRoZSB0YXJnZXQgb2JqZWN0XG4gIG9wdGlvbnMuZ2xvYmFsICAgICAgLSB0YXJnZXQgaXMgdGhlIGdsb2JhbCBvYmplY3RcbiAgb3B0aW9ucy5zdGF0ICAgICAgICAtIGV4cG9ydCBhcyBzdGF0aWMgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5wcm90byAgICAgICAtIGV4cG9ydCBhcyBwcm90b3R5cGUgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5yZWFsICAgICAgICAtIHJlYWwgcHJvdG90eXBlIG1ldGhvZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMuZm9yY2VkICAgICAgLSBleHBvcnQgZXZlbiBpZiB0aGUgbmF0aXZlIGZlYXR1cmUgaXMgYXZhaWxhYmxlXG4gIG9wdGlvbnMuYmluZCAgICAgICAgLSBiaW5kIG1ldGhvZHMgdG8gdGhlIHRhcmdldCwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLndyYXAgICAgICAgIC0gd3JhcCBjb25zdHJ1Y3RvcnMgdG8gcHJldmVudGluZyBnbG9iYWwgcG9sbHV0aW9uLCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMudW5zYWZlICAgICAgLSB1c2UgdGhlIHNpbXBsZSBhc3NpZ25tZW50IG9mIHByb3BlcnR5IGluc3RlYWQgb2YgZGVsZXRlICsgZGVmaW5lUHJvcGVydHlcbiAgb3B0aW9ucy5zaGFtICAgICAgICAtIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgb3B0aW9ucy5lbnVtZXJhYmxlICAtIGV4cG9ydCBhcyBlbnVtZXJhYmxlIHByb3BlcnR5XG4gIG9wdGlvbnMubm9UYXJnZXRHZXQgLSBwcmV2ZW50IGNhbGxpbmcgYSBnZXR0ZXIgb24gdGFyZ2V0XG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3B0aW9ucywgc291cmNlKSB7XG4gIHZhciBUQVJHRVQgPSBvcHRpb25zLnRhcmdldDtcbiAgdmFyIEdMT0JBTCA9IG9wdGlvbnMuZ2xvYmFsO1xuICB2YXIgU1RBVElDID0gb3B0aW9ucy5zdGF0O1xuICB2YXIgRk9SQ0VELCB0YXJnZXQsIGtleSwgdGFyZ2V0UHJvcGVydHksIHNvdXJjZVByb3BlcnR5LCBkZXNjcmlwdG9yO1xuICBpZiAoR0xPQkFMKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsO1xuICB9IGVsc2UgaWYgKFNUQVRJQykge1xuICAgIHRhcmdldCA9IGdsb2JhbFtUQVJHRVRdIHx8IHNldEdsb2JhbChUQVJHRVQsIHt9KTtcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXQgPSAoZ2xvYmFsW1RBUkdFVF0gfHwge30pLnByb3RvdHlwZTtcbiAgfVxuICBpZiAodGFyZ2V0KSBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICBzb3VyY2VQcm9wZXJ0eSA9IHNvdXJjZVtrZXldO1xuICAgIGlmIChvcHRpb25zLm5vVGFyZ2V0R2V0KSB7XG4gICAgICBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KTtcbiAgICAgIHRhcmdldFByb3BlcnR5ID0gZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIH0gZWxzZSB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFtrZXldO1xuICAgIEZPUkNFRCA9IGlzRm9yY2VkKEdMT0JBTCA/IGtleSA6IFRBUkdFVCArIChTVEFUSUMgPyAnLicgOiAnIycpICsga2V5LCBvcHRpb25zLmZvcmNlZCk7XG4gICAgLy8gY29udGFpbmVkIGluIHRhcmdldFxuICAgIGlmICghRk9SQ0VEICYmIHRhcmdldFByb3BlcnR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0eXBlb2Ygc291cmNlUHJvcGVydHkgPT09IHR5cGVvZiB0YXJnZXRQcm9wZXJ0eSkgY29udGludWU7XG4gICAgICBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzKHNvdXJjZVByb3BlcnR5LCB0YXJnZXRQcm9wZXJ0eSk7XG4gICAgfVxuICAgIC8vIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgICBpZiAob3B0aW9ucy5zaGFtIHx8ICh0YXJnZXRQcm9wZXJ0eSAmJiB0YXJnZXRQcm9wZXJ0eS5zaGFtKSkge1xuICAgICAgaGlkZShzb3VyY2VQcm9wZXJ0eSwgJ3NoYW0nLCB0cnVlKTtcbiAgICB9XG4gICAgLy8gZXh0ZW5kIGdsb2JhbFxuICAgIHJlZGVmaW5lKHRhcmdldCwga2V5LCBzb3VyY2VQcm9wZXJ0eSwgb3B0aW9ucyk7XG4gIH1cbn07XG4iLCAibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsICJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNoYXJlZCgnbmF0aXZlLWZ1bmN0aW9uLXRvLXN0cmluZycsIEZ1bmN0aW9uLnRvU3RyaW5nKTtcbiIsICJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG4iLCAidmFyIE8gPSAnb2JqZWN0JztcbnZhciBjaGVjayA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgJiYgaXQuTWF0aCA9PSBNYXRoICYmIGl0O1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbm1vZHVsZS5leHBvcnRzID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIGNoZWNrKHR5cGVvZiBnbG9iYWxUaGlzID09IE8gJiYgZ2xvYmFsVGhpcykgfHxcbiAgY2hlY2sodHlwZW9mIHdpbmRvdyA9PSBPICYmIHdpbmRvdykgfHxcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gTyAmJiBzZWxmKSB8fFxuICBjaGVjayh0eXBlb2YgZ2xvYmFsID09IE8gJiYgZ2xvYmFsKSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbiIsICJ2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07XG4iLCAibW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsICJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwga2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuIiwgInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbnZhciBkb2N1bWVudCA9IGdsb2JhbC5kb2N1bWVudDtcblxubW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4iLCAidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG5cbi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIURFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRlRWxlbWVudCgnZGl2JyksICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfVxuICB9KS5hICE9IDc7XG59KTtcbiIsICIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG52YXIgc3BsaXQgPSAnJy5zcGxpdDtcblxubW9kdWxlLmV4cG9ydHMgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIHRocm93cyBhbiBlcnJvciBpbiByaGlubywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3JoaW5vL2lzc3Vlcy8zNDZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICByZXR1cm4gIU9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApO1xufSkgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNsYXNzb2YoaXQpID09ICdTdHJpbmcnID8gc3BsaXQuY2FsbChpdCwgJycpIDogT2JqZWN0KGl0KTtcbn0gOiBPYmplY3Q7XG4iLCAidmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtd2Vhay1tYXAnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRlJyk7XG52YXIgb2JqZWN0SGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xudmFyIHNldCwgZ2V0LCBoYXM7XG5cbnZhciBlbmZvcmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBoYXMoaXQpID8gZ2V0KGl0KSA6IHNldChpdCwge30pO1xufTtcblxudmFyIGdldHRlckZvciA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgc3RhdGU7XG4gICAgaWYgKCFpc09iamVjdChpdCkgfHwgKHN0YXRlID0gZ2V0KGl0KSkudHlwZSAhPT0gVFlQRSkge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCcpO1xuICAgIH0gcmV0dXJuIHN0YXRlO1xuICB9O1xufTtcblxuaWYgKE5BVElWRV9XRUFLX01BUCkge1xuICB2YXIgc3RvcmUgPSBuZXcgV2Vha01hcCgpO1xuICB2YXIgd21nZXQgPSBzdG9yZS5nZXQ7XG4gIHZhciB3bWhhcyA9IHN0b3JlLmhhcztcbiAgdmFyIHdtc2V0ID0gc3RvcmUuc2V0O1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgd21zZXQuY2FsbChzdG9yZSwgaXQsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiB3bWdldC5jYWxsKHN0b3JlLCBpdCkgfHwge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiB3bWhhcy5jYWxsKHN0b3JlLCBpdCk7XG4gIH07XG59IGVsc2Uge1xuICB2YXIgU1RBVEUgPSBzaGFyZWRLZXkoJ3N0YXRlJyk7XG4gIGhpZGRlbktleXNbU1RBVEVdID0gdHJ1ZTtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGhpZGUoaXQsIFNUQVRFLCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gb2JqZWN0SGFzKGl0LCBTVEFURSkgPyBpdFtTVEFURV0gOiB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIG9iamVjdEhhcyhpdCwgU1RBVEUpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXQsXG4gIGdldDogZ2V0LFxuICBoYXM6IGhhcyxcbiAgZW5mb3JjZTogZW5mb3JjZSxcbiAgZ2V0dGVyRm9yOiBnZXR0ZXJGb3Jcbn07XG4iLCAidmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG4vLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvdHlwZVtJVEVSQVRPUl0gPT09IGl0KTtcbn07XG4iLCAidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciByZXBsYWNlbWVudCA9IC8jfFxcLnByb3RvdHlwZVxcLi87XG5cbnZhciBpc0ZvcmNlZCA9IGZ1bmN0aW9uIChmZWF0dXJlLCBkZXRlY3Rpb24pIHtcbiAgdmFyIHZhbHVlID0gZGF0YVtub3JtYWxpemUoZmVhdHVyZSldO1xuICByZXR1cm4gdmFsdWUgPT0gUE9MWUZJTEwgPyB0cnVlXG4gICAgOiB2YWx1ZSA9PSBOQVRJVkUgPyBmYWxzZVxuICAgIDogdHlwZW9mIGRldGVjdGlvbiA9PSAnZnVuY3Rpb24nID8gZmFpbHMoZGV0ZWN0aW9uKVxuICAgIDogISFkZXRlY3Rpb247XG59O1xuXG52YXIgbm9ybWFsaXplID0gaXNGb3JjZWQubm9ybWFsaXplID0gZnVuY3Rpb24gKHN0cmluZykge1xuICByZXR1cm4gU3RyaW5nKHN0cmluZykucmVwbGFjZShyZXBsYWNlbWVudCwgJy4nKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIGRhdGEgPSBpc0ZvcmNlZC5kYXRhID0ge307XG52YXIgTkFUSVZFID0gaXNGb3JjZWQuTkFUSVZFID0gJ04nO1xudmFyIFBPTFlGSUxMID0gaXNGb3JjZWQuUE9MWUZJTEwgPSAnUCc7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGb3JjZWQ7XG4iLCAibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iLCAibW9kdWxlLmV4cG9ydHMgPSBmYWxzZTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBCVUdHWV9TQUZBUklfSVRFUkFUT1JTID0gZmFsc2U7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxuLy8gYCVJdGVyYXRvclByb3RvdHlwZSVgIG9iamVjdFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtJWl0ZXJhdG9ycHJvdG90eXBlJS1vYmplY3RcbnZhciBJdGVyYXRvclByb3RvdHlwZSwgUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlLCBhcnJheUl0ZXJhdG9yO1xuXG5pZiAoW10ua2V5cykge1xuICBhcnJheUl0ZXJhdG9yID0gW10ua2V5cygpO1xuICAvLyBTYWZhcmkgOCBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGBcbiAgaWYgKCEoJ25leHQnIGluIGFycmF5SXRlcmF0b3IpKSBCVUdHWV9TQUZBUklfSVRFUkFUT1JTID0gdHJ1ZTtcbiAgZWxzZSB7XG4gICAgUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoZ2V0UHJvdG90eXBlT2YoYXJyYXlJdGVyYXRvcikpO1xuICAgIGlmIChQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUpIEl0ZXJhdG9yUHJvdG90eXBlID0gUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlO1xuICB9XG59XG5cbmlmIChJdGVyYXRvclByb3RvdHlwZSA9PSB1bmRlZmluZWQpIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG5cbi8vIDI1LjEuMi4xLjEgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpXG5pZiAoIUlTX1BVUkUgJiYgIWhhcyhJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IpKSBoaWRlKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUiwgcmV0dXJuVGhpcyk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBJdGVyYXRvclByb3RvdHlwZTogSXRlcmF0b3JQcm90b3R5cGUsXG4gIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlM6IEJVR0dZX1NBRkFSSV9JVEVSQVRPUlNcbn07XG4iLCAibW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsICJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gQ2hyb21lIDM4IFN5bWJvbCBoYXMgaW5jb3JyZWN0IHRvU3RyaW5nIGNvbnZlcnNpb25cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIHJldHVybiAhU3RyaW5nKFN5bWJvbCgpKTtcbn0pO1xuIiwgInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgbmF0aXZlRnVuY3Rpb25Ub1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi10by1zdHJpbmcnKTtcblxudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgV2Vha01hcCA9PT0gJ2Z1bmN0aW9uJyAmJiAvbmF0aXZlIGNvZGUvLnRlc3QobmF0aXZlRnVuY3Rpb25Ub1N0cmluZy5jYWxsKFdlYWtNYXApKTtcbiIsICJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZGVmaW5lUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnRpZXMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xudmFyIGh0bWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaHRtbCcpO1xudmFyIGRvY3VtZW50Q3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgSUVfUFJPVE8gPSBzaGFyZWRLZXkoJ0lFX1BST1RPJyk7XG5cbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSBkb2N1bWVudENyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICB2YXIgbGVuZ3RoID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB2YXIgbHQgPSAnPCc7XG4gIHZhciBzY3JpcHQgPSAnc2NyaXB0JztcbiAgdmFyIGd0ID0gJz4nO1xuICB2YXIganMgPSAnamF2YScgKyBzY3JpcHQgKyAnOic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGh0bWwuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lLnNyYyA9IFN0cmluZyhqcyk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUobHQgKyBzY3JpcHQgKyBndCArICdkb2N1bWVudC5GPU9iamVjdCcgKyBsdCArICcvJyArIHNjcmlwdCArIGd0KTtcbiAgaWZyYW1lRG9jdW1lbnQuY2xvc2UoKTtcbiAgY3JlYXRlRGljdCA9IGlmcmFtZURvY3VtZW50LkY7XG4gIHdoaWxlIChsZW5ndGgtLSkgZGVsZXRlIGNyZWF0ZURpY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tsZW5ndGhdXTtcbiAgcmV0dXJuIGNyZWF0ZURpY3QoKTtcbn07XG5cbi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eSgpO1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IGNyZWF0ZURpY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRlZmluZVByb3BlcnRpZXMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG5cbmhpZGRlbktleXNbSUVfUFJPVE9dID0gdHJ1ZTtcbiIsICJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgb2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBrZXlzID0gb2JqZWN0S2V5cyhQcm9wZXJ0aWVzKTtcbiAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICB2YXIgaSA9IDA7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKE8sIGtleSA9IGtleXNbaSsrXSwgUHJvcGVydGllc1trZXldKTtcbiAgcmV0dXJuIE87XG59O1xuIiwgInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG5cbnZhciBuYXRpdmVEZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyBuYXRpdmVEZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gbmF0aXZlRGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCcpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwgInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG5cbnZhciBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/IG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvciA6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKSB7XG4gIE8gPSB0b0luZGV4ZWRPYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKGhhcyhPLCBQKSkgcmV0dXJuIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcighcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG4iLCAiLy8gMTkuMS4yLjcgLyAxNS4yLjMuNCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxudmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxudmFyIGhpZGRlbktleXMgPSBlbnVtQnVnS2V5cy5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuIiwgImV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG4iLCAidmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIENPUlJFQ1RfUFJPVE9UWVBFX0dFVFRFUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3JyZWN0LXByb3RvdHlwZS1nZXR0ZXInKTtcblxudmFyIElFX1BST1RPID0gc2hhcmVkS2V5KCdJRV9QUk9UTycpO1xudmFyIE9iamVjdFByb3RvdHlwZSA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8vIDE5LjEuMi45IC8gMTUuMi4zLjIgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG5tb2R1bGUuZXhwb3J0cyA9IENPUlJFQ1RfUFJPVE9UWVBFX0dFVFRFUiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIChPKSB7XG4gIE8gPSB0b09iamVjdChPKTtcbiAgaWYgKGhhcyhPLCBJRV9QUk9UTykpIHJldHVybiBPW0lFX1BST1RPXTtcbiAgaWYgKHR5cGVvZiBPLmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgTyBpbnN0YW5jZW9mIE8uY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gTy5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIH0gcmV0dXJuIE8gaW5zdGFuY2VvZiBPYmplY3QgPyBPYmplY3RQcm90b3R5cGUgOiBudWxsO1xufTtcbiIsICJ2YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIGFycmF5SW5jbHVkZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBhcnJheUluZGV4T2YgPSBhcnJheUluY2x1ZGVzKGZhbHNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgIWhhcyhoaWRkZW5LZXlzLCBrZXkpICYmIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+YXJyYXlJbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwgInZhciBpbnRlcm5hbE9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG5cbi8vIDE5LjEuMi4xNCAvIDE1LjIuMy4xNCBPYmplY3Qua2V5cyhPKVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuIGludGVybmFsT2JqZWN0S2V5cyhPLCBlbnVtQnVnS2V5cyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIE5hc2hvcm4gfiBKREs4IGJ1Z1xudmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICFuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHsgMTogMiB9LCAxKTtcblxuZXhwb3J0cy5mID0gTkFTSE9STl9CVUcgPyBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIFYpO1xuICByZXR1cm4gISFkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZTtcbn0gOiBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiIsICJ2YXIgdmFsaWRhdGVTZXRQcm90b3R5cGVPZkFyZ3VtZW50cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92YWxpZGF0ZS1zZXQtcHJvdG90eXBlLW9mLWFyZ3VtZW50cycpO1xuXG4vLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyBmdW5jdGlvbiAoKSB7XG4gIHZhciBjb3JyZWN0U2V0dGVyID0gZmFsc2U7XG4gIHZhciB0ZXN0ID0ge307XG4gIHZhciBzZXR0ZXI7XG4gIHRyeSB7XG4gICAgc2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0O1xuICAgIHNldHRlci5jYWxsKHRlc3QsIFtdKTtcbiAgICBjb3JyZWN0U2V0dGVyID0gdGVzdCBpbnN0YW5jZW9mIEFycmF5O1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90bykge1xuICAgIHZhbGlkYXRlU2V0UHJvdG90eXBlT2ZBcmd1bWVudHMoTywgcHJvdG8pO1xuICAgIGlmIChjb3JyZWN0U2V0dGVyKSBzZXR0ZXIuY2FsbChPLCBwcm90byk7XG4gICAgZWxzZSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgIHJldHVybiBPO1xuICB9O1xufSgpIDogdW5kZWZpbmVkKTtcbiIsICJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG52YXIgUmVmbGVjdCA9IGdsb2JhbC5SZWZsZWN0O1xuXG4vLyBhbGwgb2JqZWN0IGtleXMsIGluY2x1ZGVzIG5vbi1lbnVtZXJhYmxlIGFuZCBzeW1ib2xzXG5tb2R1bGUuZXhwb3J0cyA9IFJlZmxlY3QgJiYgUmVmbGVjdC5vd25LZXlzIHx8IGZ1bmN0aW9uIG93bktleXMoaXQpIHtcbiAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlLmYoYW5PYmplY3QoaXQpKTtcbiAgdmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mO1xuICByZXR1cm4gZ2V0T3duUHJvcGVydHlTeW1ib2xzID8ga2V5cy5jb25jYXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcbiIsICJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbiIsICJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcbnZhciBuYXRpdmVGdW5jdGlvblRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXRvLXN0cmluZycpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcblxudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldDtcbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBURU1QTEFURSA9IFN0cmluZyhuYXRpdmVGdW5jdGlvblRvU3RyaW5nKS5zcGxpdCgndG9TdHJpbmcnKTtcblxuc2hhcmVkKCdpbnNwZWN0U291cmNlJywgZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBuYXRpdmVGdW5jdGlvblRvU3RyaW5nLmNhbGwoaXQpO1xufSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBrZXksIHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciB1bnNhZmUgPSBvcHRpb25zID8gISFvcHRpb25zLnVuc2FmZSA6IGZhbHNlO1xuICB2YXIgc2ltcGxlID0gb3B0aW9ucyA/ICEhb3B0aW9ucy5lbnVtZXJhYmxlIDogZmFsc2U7XG4gIHZhciBub1RhcmdldEdldCA9IG9wdGlvbnMgPyAhIW9wdGlvbnMubm9UYXJnZXRHZXQgOiBmYWxzZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgJiYgIWhhcyh2YWx1ZSwgJ25hbWUnKSkgaGlkZSh2YWx1ZSwgJ25hbWUnLCBrZXkpO1xuICAgIGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKS5zb3VyY2UgPSBURU1QTEFURS5qb2luKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyBrZXkgOiAnJyk7XG4gIH1cbiAgaWYgKE8gPT09IGdsb2JhbCkge1xuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2Ugc2V0R2xvYmFsKGtleSwgdmFsdWUpO1xuICAgIHJldHVybjtcbiAgfSBlbHNlIGlmICghdW5zYWZlKSB7XG4gICAgZGVsZXRlIE9ba2V5XTtcbiAgfSBlbHNlIGlmICghbm9UYXJnZXRHZXQgJiYgT1trZXldKSB7XG4gICAgc2ltcGxlID0gdHJ1ZTtcbiAgfVxuICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgZWxzZSBoaWRlKE8sIGtleSwgdmFsdWUpO1xuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG59KShGdW5jdGlvbi5wcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyAmJiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnNvdXJjZSB8fCBuYXRpdmVGdW5jdGlvblRvU3RyaW5nLmNhbGwodGhpcyk7XG59KTtcbiIsICIvLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZXF1aXJlb2JqZWN0Y29lcmNpYmxlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsICJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgaGlkZShnbG9iYWwsIGtleSwgdmFsdWUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbFtrZXldID0gdmFsdWU7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcbiIsICJ2YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFRBRywgU1RBVElDKSB7XG4gIGlmIChpdCAmJiAhaGFzKGl0ID0gU1RBVElDID8gaXQgOiBpdC5wcm90b3R5cGUsIFRPX1NUUklOR19UQUcpKSB7XG4gICAgZGVmaW5lUHJvcGVydHkoaXQsIFRPX1NUUklOR19UQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogVEFHIH0pO1xuICB9XG59O1xuIiwgInZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xuXG52YXIga2V5cyA9IHNoYXJlZCgna2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIGtleXNba2V5XSB8fCAoa2V5c1trZXldID0gdWlkKGtleSkpO1xufTtcbiIsICJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNldEdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtZ2xvYmFsJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG5cbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IHNldEdsb2JhbChTSEFSRUQsIHt9KTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246ICczLjEuMycsXG4gIG1vZGU6IElTX1BVUkUgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnXHUwMEE5IDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcbiIsICJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG4vLyBDT05WRVJUX1RPX1NUUklORzogdHJ1ZSAgLT4gU3RyaW5nI2F0XG4vLyBDT05WRVJUX1RPX1NUUklORzogZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0aGF0LCBwb3MsIENPTlZFUlRfVE9fU1RSSU5HKSB7XG4gIHZhciBTID0gU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhhdCkpO1xuICB2YXIgcG9zaXRpb24gPSB0b0ludGVnZXIocG9zKTtcbiAgdmFyIHNpemUgPSBTLmxlbmd0aDtcbiAgdmFyIGZpcnN0LCBzZWNvbmQ7XG4gIGlmIChwb3NpdGlvbiA8IDAgfHwgcG9zaXRpb24gPj0gc2l6ZSkgcmV0dXJuIENPTlZFUlRfVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gIGZpcnN0ID0gUy5jaGFyQ29kZUF0KHBvc2l0aW9uKTtcbiAgcmV0dXJuIGZpcnN0IDwgMHhEODAwIHx8IGZpcnN0ID4gMHhEQkZGIHx8IHBvc2l0aW9uICsgMSA9PT0gc2l6ZVxuICAgIHx8IChzZWNvbmQgPSBTLmNoYXJDb2RlQXQocG9zaXRpb24gKyAxKSkgPCAweERDMDAgfHwgc2Vjb25kID4gMHhERkZGXG4gICAgICA/IENPTlZFUlRfVE9fU1RSSU5HID8gUy5jaGFyQXQocG9zaXRpb24pIDogZmlyc3RcbiAgICAgIDogQ09OVkVSVF9UT19TVFJJTkcgPyBTLnNsaWNlKHBvc2l0aW9uLCBwb3NpdGlvbiArIDIpIDogKGZpcnN0IC0gMHhEODAwIDw8IDEwKSArIChzZWNvbmQgLSAweERDMDApICsgMHgxMDAwMDtcbn07XG4iLCAidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyJyk7XG5cbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gSGVscGVyIGZvciBhIHBvcHVsYXIgcmVwZWF0aW5nIGNhc2Ugb2YgdGhlIHNwZWM6XG4vLyBMZXQgaW50ZWdlciBiZSA/IFRvSW50ZWdlcihpbmRleCkuXG4vLyBJZiBpbnRlZ2VyIDwgMCwgbGV0IHJlc3VsdCBiZSBtYXgoKGxlbmd0aCArIGludGVnZXIpLCAwKTsgZWxzZSBsZXQgcmVzdWx0IGJlIG1pbihsZW5ndGgsIGxlbmd0aCkuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIHZhciBpbnRlZ2VyID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGludGVnZXIgPCAwID8gbWF4KGludGVnZXIgKyBsZW5ndGgsIDApIDogbWluKGludGVnZXIsIGxlbmd0aCk7XG59O1xuIiwgIi8vIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJbmRleGVkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoaXQpKTtcbn07XG4iLCAidmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgVG9JbnRlZ2VyYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvaW50ZWdlclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGlzTmFOKGFyZ3VtZW50ID0gK2FyZ3VtZW50KSA/IDAgOiAoYXJndW1lbnQgPiAwID8gZmxvb3IgOiBjZWlsKShhcmd1bWVudCk7XG59O1xuIiwgInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlcicpO1xuXG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIGBUb0xlbmd0aGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGFyZ3VtZW50ID4gMCA/IG1pbih0b0ludGVnZXIoYXJndW1lbnQpLCAweDFGRkZGRkZGRkZGRkZGKSA6IDA7IC8vIDIgKiogNTMgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iLCAidmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbi8vIGBUb09iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b29iamVjdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KSk7XG59O1xuIiwgInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxuLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcbiIsICJ2YXIgaWQgPSAwO1xudmFyIHBvc3RmaXggPSBNYXRoLnJhbmRvbSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJy5jb25jYXQoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSwgJylfJywgKCsraWQgKyBwb3N0Zml4KS50b1N0cmluZygzNikpO1xufTtcbiIsICJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIHByb3RvKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBpZiAoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCkge1xuICAgIHRocm93IFR5cGVFcnJvcihcIkNhbid0IHNldCBcIiArIFN0cmluZyhwcm90bykgKyAnIGFzIGEgcHJvdG90eXBlJyk7XG4gIH1cbn07XG4iLCAidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmF0aXZlLXN5bWJvbCcpO1xuXG52YXIgU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBzdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9IE5BVElWRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdXG4gICAgfHwgKE5BVElWRV9TWU1CT0wgPyBTeW1ib2wgOiB1aWQpKCdTeW1ib2wuJyArIG5hbWUpKTtcbn07XG4iLCAidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZnJvbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1mcm9tJyk7XG52YXIgY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbicpO1xuXG52YXIgSU5DT1JSRUNUX0lURVJBVElPTiA9ICFjaGVja0NvcnJlY3RuZXNzT2ZJdGVyYXRpb24oZnVuY3Rpb24gKGl0ZXJhYmxlKSB7XG4gIEFycmF5LmZyb20oaXRlcmFibGUpO1xufSk7XG5cbi8vIGBBcnJheS5mcm9tYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LmZyb21cbiQoeyB0YXJnZXQ6ICdBcnJheScsIHN0YXQ6IHRydWUsIGZvcmNlZDogSU5DT1JSRUNUX0lURVJBVElPTiB9LCB7XG4gIGZyb206IGZyb21cbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjb2RlUG9pbnRBdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctYXQnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgZGVmaW5lSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWl0ZXJhdG9yJyk7XG5cbnZhciBTVFJJTkdfSVRFUkFUT1IgPSAnU3RyaW5nIEl0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFNUUklOR19JVEVSQVRPUik7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUtQEBpdGVyYXRvclxuZGVmaW5lSXRlcmF0b3IoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIHR5cGU6IFNUUklOR19JVEVSQVRPUixcbiAgICBzdHJpbmc6IFN0cmluZyhpdGVyYXRlZCksXG4gICAgaW5kZXg6IDBcbiAgfSk7XG4vLyBgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLSVzdHJpbmdpdGVyYXRvcnByb3RvdHlwZSUubmV4dFxufSwgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgdmFyIHN0cmluZyA9IHN0YXRlLnN0cmluZztcbiAgdmFyIGluZGV4ID0gc3RhdGUuaW5kZXg7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IHN0cmluZy5sZW5ndGgpIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgcG9pbnQgPSBjb2RlUG9pbnRBdChzdHJpbmcsIGluZGV4LCB0cnVlKTtcbiAgc3RhdGUuaW5kZXggKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4geyB2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlIH07XG59KTtcbiIsICJ2YXIgZztcclxuXHJcbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXHJcbmcgPSAoZnVuY3Rpb24oKSB7XHJcblx0cmV0dXJuIHRoaXM7XHJcbn0pKCk7XHJcblxyXG50cnkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxyXG5cdGcgPSBnIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSB8fCAoMSwgZXZhbCkoXCJ0aGlzXCIpO1xyXG59IGNhdGNoIChlKSB7XHJcblx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcclxuXHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIikgZyA9IHdpbmRvdztcclxufVxyXG5cclxuLy8gZyBjYW4gc3RpbGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGluZyB0byBkbyBhYm91dCBpdC4uLlxyXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xyXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGc7XHJcbiIsICJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzL2RlZHVwZSc7XG5cbmltcG9ydCBERUZBVUxUX0FUVFJTIGZyb20gJy4vZGVmYXVsdC1hdHRycy5qc29uJztcblxuY2xhc3MgSWNvbiB7XG4gIGNvbnN0cnVjdG9yKG5hbWUsIGNvbnRlbnRzLCB0YWdzID0gW10pIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMuY29udGVudHMgPSBjb250ZW50cztcbiAgICB0aGlzLnRhZ3MgPSB0YWdzO1xuICAgIHRoaXMuYXR0cnMgPSB7XG4gICAgICAuLi5ERUZBVUxUX0FUVFJTLFxuICAgICAgLi4ueyBjbGFzczogYGZlYXRoZXIgZmVhdGhlci0ke25hbWV9YCB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIFNWRyBzdHJpbmcuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBhdHRyc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgdG9TdmcoYXR0cnMgPSB7fSkge1xuICAgIGNvbnN0IGNvbWJpbmVkQXR0cnMgPSB7XG4gICAgICAuLi50aGlzLmF0dHJzLFxuICAgICAgLi4uYXR0cnMsXG4gICAgICAuLi57IGNsYXNzOiBjbGFzc25hbWVzKHRoaXMuYXR0cnMuY2xhc3MsIGF0dHJzLmNsYXNzKSB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gYDxzdmcgJHthdHRyc1RvU3RyaW5nKGNvbWJpbmVkQXR0cnMpfT4ke3RoaXMuY29udGVudHN9PC9zdmc+YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIGBJY29uYC5cbiAgICpcbiAgICogQWRkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIElmIG9sZCBjb2RlIGV4cGVjdHMgYGZlYXRoZXIuaWNvbnMuPG5hbWU+YFxuICAgKiB0byBiZSBhIHN0cmluZywgYHRvU3RyaW5nKClgIHdpbGwgZ2V0IGltcGxpY2l0bHkgY2FsbGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudHM7XG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0IGF0dHJpYnV0ZXMgb2JqZWN0IHRvIHN0cmluZyBvZiBIVE1MIGF0dHJpYnV0ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gYXR0cnNcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGF0dHJzVG9TdHJpbmcoYXR0cnMpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGF0dHJzKVxuICAgIC5tYXAoa2V5ID0+IGAke2tleX09XCIke2F0dHJzW2tleV19XCJgKVxuICAgIC5qb2luKCcgJyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEljb247XG4iLCAiaW1wb3J0IEljb24gZnJvbSAnLi9pY29uJztcbmltcG9ydCBpY29ucyBmcm9tICcuLi9kaXN0L2ljb25zLmpzb24nO1xuaW1wb3J0IHRhZ3MgZnJvbSAnLi90YWdzLmpzb24nO1xuXG5leHBvcnQgZGVmYXVsdCBPYmplY3Qua2V5cyhpY29ucylcbiAgLm1hcChrZXkgPT4gbmV3IEljb24oa2V5LCBpY29uc1trZXldLCB0YWdzW2tleV0pKVxuICAucmVkdWNlKChvYmplY3QsIGljb24pID0+IHtcbiAgICBvYmplY3RbaWNvbi5uYW1lXSA9IGljb247XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfSwge30pO1xuIiwgImltcG9ydCBpY29ucyBmcm9tICcuL2ljb25zJztcbmltcG9ydCB0b1N2ZyBmcm9tICcuL3RvLXN2Zyc7XG5pbXBvcnQgcmVwbGFjZSBmcm9tICcuL3JlcGxhY2UnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHsgaWNvbnMsIHRvU3ZnLCByZXBsYWNlIH07XG4iLCAiLyogZXNsaW50LWVudiBicm93c2VyICovXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzL2RlZHVwZSc7XG5cbmltcG9ydCBpY29ucyBmcm9tICcuL2ljb25zJztcblxuLyoqXG4gKiBSZXBsYWNlIGFsbCBIVE1MIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIGBkYXRhLWZlYXRoZXJgIGF0dHJpYnV0ZSB3aXRoIFNWRyBtYXJrdXBcbiAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGVsZW1lbnQncyBgZGF0YS1mZWF0aGVyYCBhdHRyaWJ1dGUgdmFsdWUuXG4gKiBAcGFyYW0ge09iamVjdH0gYXR0cnNcbiAqL1xuZnVuY3Rpb24gcmVwbGFjZShhdHRycyA9IHt9KSB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdgZmVhdGhlci5yZXBsYWNlKClgIG9ubHkgd29ya3MgaW4gYSBicm93c2VyIGVudmlyb25tZW50LicpO1xuICB9XG5cbiAgY29uc3QgZWxlbWVudHNUb1JlcGxhY2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1mZWF0aGVyXScpO1xuXG4gIEFycmF5LmZyb20oZWxlbWVudHNUb1JlcGxhY2UpLmZvckVhY2goZWxlbWVudCA9PlxuICAgIHJlcGxhY2VFbGVtZW50KGVsZW1lbnQsIGF0dHJzKSxcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlIGEgc2luZ2xlIEhUTUwgZWxlbWVudCB3aXRoIFNWRyBtYXJrdXBcbiAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGVsZW1lbnQncyBgZGF0YS1mZWF0aGVyYCBhdHRyaWJ1dGUgdmFsdWUuXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50XG4gKiBAcGFyYW0ge09iamVjdH0gYXR0cnNcbiAqL1xuZnVuY3Rpb24gcmVwbGFjZUVsZW1lbnQoZWxlbWVudCwgYXR0cnMgPSB7fSkge1xuICBjb25zdCBlbGVtZW50QXR0cnMgPSBnZXRBdHRycyhlbGVtZW50KTtcbiAgY29uc3QgbmFtZSA9IGVsZW1lbnRBdHRyc1snZGF0YS1mZWF0aGVyJ107XG4gIGRlbGV0ZSBlbGVtZW50QXR0cnNbJ2RhdGEtZmVhdGhlciddO1xuXG4gIGNvbnN0IHN2Z1N0cmluZyA9IGljb25zW25hbWVdLnRvU3ZnKHtcbiAgICAuLi5hdHRycyxcbiAgICAuLi5lbGVtZW50QXR0cnMsXG4gICAgLi4ueyBjbGFzczogY2xhc3NuYW1lcyhhdHRycy5jbGFzcywgZWxlbWVudEF0dHJzLmNsYXNzKSB9LFxuICB9KTtcbiAgY29uc3Qgc3ZnRG9jdW1lbnQgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKFxuICAgIHN2Z1N0cmluZyxcbiAgICAnaW1hZ2Uvc3ZnK3htbCcsXG4gICk7XG4gIGNvbnN0IHN2Z0VsZW1lbnQgPSBzdmdEb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcblxuICBlbGVtZW50LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHN2Z0VsZW1lbnQsIGVsZW1lbnQpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgYXR0cmlidXRlcyBvZiBhbiBIVE1MIGVsZW1lbnQuXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50XG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXRBdHRycyhlbGVtZW50KSB7XG4gIHJldHVybiBBcnJheS5mcm9tKGVsZW1lbnQuYXR0cmlidXRlcykucmVkdWNlKChhdHRycywgYXR0cikgPT4ge1xuICAgIGF0dHJzW2F0dHIubmFtZV0gPSBhdHRyLnZhbHVlO1xuICAgIHJldHVybiBhdHRycztcbiAgfSwge30pO1xufVxuXG5leHBvcnQgZGVmYXVsdCByZXBsYWNlO1xuIiwgImltcG9ydCBpY29ucyBmcm9tICcuL2ljb25zJztcblxuLyoqXG4gKiBDcmVhdGUgYW4gU1ZHIHN0cmluZy5cbiAqIEBkZXByZWNhdGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtPYmplY3R9IGF0dHJzXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiB0b1N2ZyhuYW1lLCBhdHRycyA9IHt9KSB7XG4gIGNvbnNvbGUud2FybihcbiAgICAnZmVhdGhlci50b1N2ZygpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgZmVhdGhlci5pY29uc1tuYW1lXS50b1N2ZygpIGluc3RlYWQuJyxcbiAgKTtcblxuICBpZiAoIW5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSByZXF1aXJlZCBga2V5YCAoaWNvbiBuYW1lKSBwYXJhbWV0ZXIgaXMgbWlzc2luZy4nKTtcbiAgfVxuXG4gIGlmICghaWNvbnNbbmFtZV0pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgTm8gaWNvbiBtYXRjaGluZyAnJHtcbiAgICAgICAgbmFtZVxuICAgICAgfScuIFNlZSB0aGUgY29tcGxldGUgbGlzdCBvZiBpY29ucyBhdCBodHRwczovL2ZlYXRoZXJpY29ucy5jb21gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gaWNvbnNbbmFtZV0udG9TdmcoYXR0cnMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB0b1N2ZztcbiIsICIvKlxuKiBsb2dsZXZlbCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9waW10ZXJyeS9sb2dsZXZlbFxuKlxuKiBDb3B5cmlnaHQgKGMpIDIwMTMgVGltIFBlcnJ5XG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiovXG4oZnVuY3Rpb24gKHJvb3QsIGRlZmluaXRpb24pIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgICAgIGRlZmluZShkZWZpbml0aW9uKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gICAgICAgIG1vZHVsZS5leHBvcnRzID0gZGVmaW5pdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJvb3QubG9nID0gZGVmaW5pdGlvbigpO1xuICAgIH1cbn0odGhpcywgZnVuY3Rpb24gKCkge1xuICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgLy8gU2xpZ2h0bHkgZHViaW91cyB0cmlja3MgdG8gY3V0IGRvd24gbWluaW1pemVkIGZpbGUgc2l6ZVxuICAgIHZhciBub29wID0gZnVuY3Rpb24oKSB7fTtcbiAgICB2YXIgdW5kZWZpbmVkVHlwZSA9IFwidW5kZWZpbmVkXCI7XG4gICAgdmFyIGlzSUUgPSAodHlwZW9mIHdpbmRvdyAhPT0gdW5kZWZpbmVkVHlwZSkgJiYgKHR5cGVvZiB3aW5kb3cubmF2aWdhdG9yICE9PSB1bmRlZmluZWRUeXBlKSAmJiAoXG4gICAgICAgIC9UcmlkZW50XFwvfE1TSUUgLy50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KVxuICAgICk7XG5cbiAgICB2YXIgbG9nTWV0aG9kcyA9IFtcbiAgICAgICAgXCJ0cmFjZVwiLFxuICAgICAgICBcImRlYnVnXCIsXG4gICAgICAgIFwiaW5mb1wiLFxuICAgICAgICBcIndhcm5cIixcbiAgICAgICAgXCJlcnJvclwiXG4gICAgXTtcblxuICAgIC8vIENyb3NzLWJyb3dzZXIgYmluZCBlcXVpdmFsZW50IHRoYXQgd29ya3MgYXQgbGVhc3QgYmFjayB0byBJRTZcbiAgICBmdW5jdGlvbiBiaW5kTWV0aG9kKG9iaiwgbWV0aG9kTmFtZSkge1xuICAgICAgICB2YXIgbWV0aG9kID0gb2JqW21ldGhvZE5hbWVdO1xuICAgICAgICBpZiAodHlwZW9mIG1ldGhvZC5iaW5kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gbWV0aG9kLmJpbmQob2JqKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmNhbGwobWV0aG9kLCBvYmopO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIC8vIE1pc3NpbmcgYmluZCBzaGltIG9yIElFOCArIE1vZGVybml6ciwgZmFsbGJhY2sgdG8gd3JhcHBpbmdcbiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuYXBwbHkobWV0aG9kLCBbb2JqLCBhcmd1bWVudHNdKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVHJhY2UoKSBkb2Vzbid0IHByaW50IHRoZSBtZXNzYWdlIGluIElFLCBzbyBmb3IgdGhhdCBjYXNlIHdlIG5lZWQgdG8gd3JhcCBpdFxuICAgIGZ1bmN0aW9uIHRyYWNlRm9ySUUoKSB7XG4gICAgICAgIGlmIChjb25zb2xlLmxvZykge1xuICAgICAgICAgICAgaWYgKGNvbnNvbGUubG9nLmFwcGx5KSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gSW4gb2xkIElFLCBuYXRpdmUgY29uc29sZSBtZXRob2RzIHRoZW1zZWx2ZXMgZG9uJ3QgaGF2ZSBhcHBseSgpLlxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5hcHBseShjb25zb2xlLmxvZywgW2NvbnNvbGUsIGFyZ3VtZW50c10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjb25zb2xlLnRyYWNlKSBjb25zb2xlLnRyYWNlKCk7XG4gICAgfVxuXG4gICAgLy8gQnVpbGQgdGhlIGJlc3QgbG9nZ2luZyBtZXRob2QgcG9zc2libGUgZm9yIHRoaXMgZW52XG4gICAgLy8gV2hlcmV2ZXIgcG9zc2libGUgd2Ugd2FudCB0byBiaW5kLCBub3Qgd3JhcCwgdG8gcHJlc2VydmUgc3RhY2sgdHJhY2VzXG4gICAgZnVuY3Rpb24gcmVhbE1ldGhvZChtZXRob2ROYW1lKSB7XG4gICAgICAgIGlmIChtZXRob2ROYW1lID09PSAnZGVidWcnKSB7XG4gICAgICAgICAgICBtZXRob2ROYW1lID0gJ2xvZyc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgPT09IHVuZGVmaW5lZFR5cGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gTm8gbWV0aG9kIHBvc3NpYmxlLCBmb3Igbm93IC0gZml4ZWQgbGF0ZXIgYnkgZW5hYmxlTG9nZ2luZ1doZW5Db25zb2xlQXJyaXZlc1xuICAgICAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICd0cmFjZScgJiYgaXNJRSkge1xuICAgICAgICAgICAgcmV0dXJuIHRyYWNlRm9ySUU7XG4gICAgICAgIH0gZWxzZSBpZiAoY29uc29sZVttZXRob2ROYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gYmluZE1ldGhvZChjb25zb2xlLCBtZXRob2ROYW1lKTtcbiAgICAgICAgfSBlbHNlIGlmIChjb25zb2xlLmxvZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gYmluZE1ldGhvZChjb25zb2xlLCAnbG9nJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbm9vcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoZXNlIHByaXZhdGUgZnVuY3Rpb25zIGFsd2F5cyBuZWVkIGB0aGlzYCB0byBiZSBzZXQgcHJvcGVybHlcblxuICAgIGZ1bmN0aW9uIHJlcGxhY2VMb2dnaW5nTWV0aG9kcyhsZXZlbCwgbG9nZ2VyTmFtZSkge1xuICAgICAgICAvKmpzaGludCB2YWxpZHRoaXM6dHJ1ZSAqL1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxvZ01ldGhvZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBtZXRob2ROYW1lID0gbG9nTWV0aG9kc1tpXTtcbiAgICAgICAgICAgIHRoaXNbbWV0aG9kTmFtZV0gPSAoaSA8IGxldmVsKSA/XG4gICAgICAgICAgICAgICAgbm9vcCA6XG4gICAgICAgICAgICAgICAgdGhpcy5tZXRob2RGYWN0b3J5KG1ldGhvZE5hbWUsIGxldmVsLCBsb2dnZXJOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERlZmluZSBsb2cubG9nIGFzIGFuIGFsaWFzIGZvciBsb2cuZGVidWdcbiAgICAgICAgdGhpcy5sb2cgPSB0aGlzLmRlYnVnO1xuICAgIH1cblxuICAgIC8vIEluIG9sZCBJRSB2ZXJzaW9ucywgdGhlIGNvbnNvbGUgaXNuJ3QgcHJlc2VudCB1bnRpbCB5b3UgZmlyc3Qgb3BlbiBpdC5cbiAgICAvLyBXZSBidWlsZCByZWFsTWV0aG9kKCkgcmVwbGFjZW1lbnRzIGhlcmUgdGhhdCByZWdlbmVyYXRlIGxvZ2dpbmcgbWV0aG9kc1xuICAgIGZ1bmN0aW9uIGVuYWJsZUxvZ2dpbmdXaGVuQ29uc29sZUFycml2ZXMobWV0aG9kTmFtZSwgbGV2ZWwsIGxvZ2dlck5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gdW5kZWZpbmVkVHlwZSkge1xuICAgICAgICAgICAgICAgIHJlcGxhY2VMb2dnaW5nTWV0aG9kcy5jYWxsKHRoaXMsIGxldmVsLCBsb2dnZXJOYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzW21ldGhvZE5hbWVdLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQnkgZGVmYXVsdCwgd2UgdXNlIGNsb3NlbHkgYm91bmQgcmVhbCBtZXRob2RzIHdoZXJldmVyIHBvc3NpYmxlLCBhbmRcbiAgICAvLyBvdGhlcndpc2Ugd2Ugd2FpdCBmb3IgYSBjb25zb2xlIHRvIGFwcGVhciwgYW5kIHRoZW4gdHJ5IGFnYWluLlxuICAgIGZ1bmN0aW9uIGRlZmF1bHRNZXRob2RGYWN0b3J5KG1ldGhvZE5hbWUsIGxldmVsLCBsb2dnZXJOYW1lKSB7XG4gICAgICAgIC8qanNoaW50IHZhbGlkdGhpczp0cnVlICovXG4gICAgICAgIHJldHVybiByZWFsTWV0aG9kKG1ldGhvZE5hbWUpIHx8XG4gICAgICAgICAgICAgICBlbmFibGVMb2dnaW5nV2hlbkNvbnNvbGVBcnJpdmVzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gTG9nZ2VyKG5hbWUsIGRlZmF1bHRMZXZlbCwgZmFjdG9yeSkge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdmFyIGN1cnJlbnRMZXZlbDtcbiAgICAgIGRlZmF1bHRMZXZlbCA9IGRlZmF1bHRMZXZlbCA9PSBudWxsID8gXCJXQVJOXCIgOiBkZWZhdWx0TGV2ZWw7XG5cbiAgICAgIHZhciBzdG9yYWdlS2V5ID0gXCJsb2dsZXZlbFwiO1xuICAgICAgaWYgKHR5cGVvZiBuYW1lID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHN0b3JhZ2VLZXkgKz0gXCI6XCIgKyBuYW1lO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgbmFtZSA9PT0gXCJzeW1ib2xcIikge1xuICAgICAgICBzdG9yYWdlS2V5ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBwZXJzaXN0TGV2ZWxJZlBvc3NpYmxlKGxldmVsTnVtKSB7XG4gICAgICAgICAgdmFyIGxldmVsTmFtZSA9IChsb2dNZXRob2RzW2xldmVsTnVtXSB8fCAnc2lsZW50JykudG9VcHBlckNhc2UoKTtcblxuICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSB1bmRlZmluZWRUeXBlIHx8ICFzdG9yYWdlS2V5KSByZXR1cm47XG5cbiAgICAgICAgICAvLyBVc2UgbG9jYWxTdG9yYWdlIGlmIGF2YWlsYWJsZVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Vbc3RvcmFnZUtleV0gPSBsZXZlbE5hbWU7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9XG5cbiAgICAgICAgICAvLyBVc2Ugc2Vzc2lvbiBjb29raWUgYXMgZmFsbGJhY2tcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB3aW5kb3cuZG9jdW1lbnQuY29va2llID1cbiAgICAgICAgICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoc3RvcmFnZUtleSkgKyBcIj1cIiArIGxldmVsTmFtZSArIFwiO1wiO1xuICAgICAgICAgIH0gY2F0Y2ggKGlnbm9yZSkge31cbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZ2V0UGVyc2lzdGVkTGV2ZWwoKSB7XG4gICAgICAgICAgdmFyIHN0b3JlZExldmVsO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IHVuZGVmaW5lZFR5cGUgfHwgIXN0b3JhZ2VLZXkpIHJldHVybjtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHN0b3JlZExldmVsID0gd2luZG93LmxvY2FsU3RvcmFnZVtzdG9yYWdlS2V5XTtcbiAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9XG5cbiAgICAgICAgICAvLyBGYWxsYmFjayB0byBjb29raWVzIGlmIGxvY2FsIHN0b3JhZ2UgZ2l2ZXMgdXMgbm90aGluZ1xuICAgICAgICAgIGlmICh0eXBlb2Ygc3RvcmVkTGV2ZWwgPT09IHVuZGVmaW5lZFR5cGUpIHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIHZhciBjb29raWUgPSB3aW5kb3cuZG9jdW1lbnQuY29va2llO1xuICAgICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gY29va2llLmluZGV4T2YoXG4gICAgICAgICAgICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHN0b3JhZ2VLZXkpICsgXCI9XCIpO1xuICAgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgIHN0b3JlZExldmVsID0gL14oW147XSspLy5leGVjKGNvb2tpZS5zbGljZShsb2NhdGlvbikpWzFdO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gSWYgdGhlIHN0b3JlZCBsZXZlbCBpcyBub3QgdmFsaWQsIHRyZWF0IGl0IGFzIGlmIG5vdGhpbmcgd2FzIHN0b3JlZC5cbiAgICAgICAgICBpZiAoc2VsZi5sZXZlbHNbc3RvcmVkTGV2ZWxdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgc3RvcmVkTGV2ZWwgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHN0b3JlZExldmVsO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjbGVhclBlcnNpc3RlZExldmVsKCkge1xuICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSB1bmRlZmluZWRUeXBlIHx8ICFzdG9yYWdlS2V5KSByZXR1cm47XG5cbiAgICAgICAgICAvLyBVc2UgbG9jYWxTdG9yYWdlIGlmIGF2YWlsYWJsZVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShzdG9yYWdlS2V5KTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH0gY2F0Y2ggKGlnbm9yZSkge31cblxuICAgICAgICAgIC8vIFVzZSBzZXNzaW9uIGNvb2tpZSBhcyBmYWxsYmFja1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5kb2N1bWVudC5jb29raWUgPVxuICAgICAgICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChzdG9yYWdlS2V5KSArIFwiPTsgZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIFVUQ1wiO1xuICAgICAgICAgIH0gY2F0Y2ggKGlnbm9yZSkge31cbiAgICAgIH1cblxuICAgICAgLypcbiAgICAgICAqXG4gICAgICAgKiBQdWJsaWMgbG9nZ2VyIEFQSSAtIHNlZSBodHRwczovL2dpdGh1Yi5jb20vcGltdGVycnkvbG9nbGV2ZWwgZm9yIGRldGFpbHNcbiAgICAgICAqXG4gICAgICAgKi9cblxuICAgICAgc2VsZi5uYW1lID0gbmFtZTtcblxuICAgICAgc2VsZi5sZXZlbHMgPSB7IFwiVFJBQ0VcIjogMCwgXCJERUJVR1wiOiAxLCBcIklORk9cIjogMiwgXCJXQVJOXCI6IDMsXG4gICAgICAgICAgXCJFUlJPUlwiOiA0LCBcIlNJTEVOVFwiOiA1fTtcblxuICAgICAgc2VsZi5tZXRob2RGYWN0b3J5ID0gZmFjdG9yeSB8fCBkZWZhdWx0TWV0aG9kRmFjdG9yeTtcblxuICAgICAgc2VsZi5nZXRMZXZlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gY3VycmVudExldmVsO1xuICAgICAgfTtcblxuICAgICAgc2VsZi5zZXRMZXZlbCA9IGZ1bmN0aW9uIChsZXZlbCwgcGVyc2lzdCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09IFwic3RyaW5nXCIgJiYgc2VsZi5sZXZlbHNbbGV2ZWwudG9VcHBlckNhc2UoKV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsZXZlbCA9IHNlbGYubGV2ZWxzW2xldmVsLnRvVXBwZXJDYXNlKCldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIGxldmVsID09PSBcIm51bWJlclwiICYmIGxldmVsID49IDAgJiYgbGV2ZWwgPD0gc2VsZi5sZXZlbHMuU0lMRU5UKSB7XG4gICAgICAgICAgICAgIGN1cnJlbnRMZXZlbCA9IGxldmVsO1xuICAgICAgICAgICAgICBpZiAocGVyc2lzdCAhPT0gZmFsc2UpIHsgIC8vIGRlZmF1bHRzIHRvIHRydWVcbiAgICAgICAgICAgICAgICAgIHBlcnNpc3RMZXZlbElmUG9zc2libGUobGV2ZWwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlcGxhY2VMb2dnaW5nTWV0aG9kcy5jYWxsKHNlbGYsIGxldmVsLCBuYW1lKTtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSB1bmRlZmluZWRUeXBlICYmIGxldmVsIDwgc2VsZi5sZXZlbHMuU0lMRU5UKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gXCJObyBjb25zb2xlIGF2YWlsYWJsZSBmb3IgbG9nZ2luZ1wiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhyb3cgXCJsb2cuc2V0TGV2ZWwoKSBjYWxsZWQgd2l0aCBpbnZhbGlkIGxldmVsOiBcIiArIGxldmVsO1xuICAgICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHNlbGYuc2V0RGVmYXVsdExldmVsID0gZnVuY3Rpb24gKGxldmVsKSB7XG4gICAgICAgICAgZGVmYXVsdExldmVsID0gbGV2ZWw7XG4gICAgICAgICAgaWYgKCFnZXRQZXJzaXN0ZWRMZXZlbCgpKSB7XG4gICAgICAgICAgICAgIHNlbGYuc2V0TGV2ZWwobGV2ZWwsIGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBzZWxmLnJlc2V0TGV2ZWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgc2VsZi5zZXRMZXZlbChkZWZhdWx0TGV2ZWwsIGZhbHNlKTtcbiAgICAgICAgICBjbGVhclBlcnNpc3RlZExldmVsKCk7XG4gICAgICB9O1xuXG4gICAgICBzZWxmLmVuYWJsZUFsbCA9IGZ1bmN0aW9uKHBlcnNpc3QpIHtcbiAgICAgICAgICBzZWxmLnNldExldmVsKHNlbGYubGV2ZWxzLlRSQUNFLCBwZXJzaXN0KTtcbiAgICAgIH07XG5cbiAgICAgIHNlbGYuZGlzYWJsZUFsbCA9IGZ1bmN0aW9uKHBlcnNpc3QpIHtcbiAgICAgICAgICBzZWxmLnNldExldmVsKHNlbGYubGV2ZWxzLlNJTEVOVCwgcGVyc2lzdCk7XG4gICAgICB9O1xuXG4gICAgICAvLyBJbml0aWFsaXplIHdpdGggdGhlIHJpZ2h0IGxldmVsXG4gICAgICB2YXIgaW5pdGlhbExldmVsID0gZ2V0UGVyc2lzdGVkTGV2ZWwoKTtcbiAgICAgIGlmIChpbml0aWFsTGV2ZWwgPT0gbnVsbCkge1xuICAgICAgICAgIGluaXRpYWxMZXZlbCA9IGRlZmF1bHRMZXZlbDtcbiAgICAgIH1cbiAgICAgIHNlbGYuc2V0TGV2ZWwoaW5pdGlhbExldmVsLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKlxuICAgICAqIFRvcC1sZXZlbCBBUElcbiAgICAgKlxuICAgICAqL1xuXG4gICAgdmFyIGRlZmF1bHRMb2dnZXIgPSBuZXcgTG9nZ2VyKCk7XG5cbiAgICB2YXIgX2xvZ2dlcnNCeU5hbWUgPSB7fTtcbiAgICBkZWZhdWx0TG9nZ2VyLmdldExvZ2dlciA9IGZ1bmN0aW9uIGdldExvZ2dlcihuYW1lKSB7XG4gICAgICAgIGlmICgodHlwZW9mIG5hbWUgIT09IFwic3ltYm9sXCIgJiYgdHlwZW9mIG5hbWUgIT09IFwic3RyaW5nXCIpIHx8IG5hbWUgPT09IFwiXCIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiWW91IG11c3Qgc3VwcGx5IGEgbmFtZSB3aGVuIGNyZWF0aW5nIGEgbG9nZ2VyLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBsb2dnZXIgPSBfbG9nZ2Vyc0J5TmFtZVtuYW1lXTtcbiAgICAgICAgaWYgKCFsb2dnZXIpIHtcbiAgICAgICAgICBsb2dnZXIgPSBfbG9nZ2Vyc0J5TmFtZVtuYW1lXSA9IG5ldyBMb2dnZXIoXG4gICAgICAgICAgICBuYW1lLCBkZWZhdWx0TG9nZ2VyLmdldExldmVsKCksIGRlZmF1bHRMb2dnZXIubWV0aG9kRmFjdG9yeSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvZ2dlcjtcbiAgICB9O1xuXG4gICAgLy8gR3JhYiB0aGUgY3VycmVudCBnbG9iYWwgbG9nIHZhcmlhYmxlIGluIGNhc2Ugb2Ygb3ZlcndyaXRlXG4gICAgdmFyIF9sb2cgPSAodHlwZW9mIHdpbmRvdyAhPT0gdW5kZWZpbmVkVHlwZSkgPyB3aW5kb3cubG9nIDogdW5kZWZpbmVkO1xuICAgIGRlZmF1bHRMb2dnZXIubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gdW5kZWZpbmVkVHlwZSAmJlxuICAgICAgICAgICAgICAgd2luZG93LmxvZyA9PT0gZGVmYXVsdExvZ2dlcikge1xuICAgICAgICAgICAgd2luZG93LmxvZyA9IF9sb2c7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVmYXVsdExvZ2dlcjtcbiAgICB9O1xuXG4gICAgZGVmYXVsdExvZ2dlci5nZXRMb2dnZXJzID0gZnVuY3Rpb24gZ2V0TG9nZ2VycygpIHtcbiAgICAgICAgcmV0dXJuIF9sb2dnZXJzQnlOYW1lO1xuICAgIH07XG5cbiAgICAvLyBFUzYgZGVmYXVsdCBleHBvcnQsIGZvciBjb21wYXRpYmlsaXR5XG4gICAgZGVmYXVsdExvZ2dlclsnZGVmYXVsdCddID0gZGVmYXVsdExvZ2dlcjtcblxuICAgIHJldHVybiBkZWZhdWx0TG9nZ2VyO1xufSkpO1xuIiwgIi8qKlxuICogR3JhcGhvbG9neSBVdGlsaXRpZXNcbiAqID09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIENvbGxlY3Rpb24gb2YgaGVscGZ1bCBmdW5jdGlvbnMgdXNlZCBieSB0aGUgaW1wbGVtZW50YXRpb24uXG4gKi9cblxuLyoqXG4gKiBPYmplY3QuYXNzaWduLWxpa2UgcG9seWZpbGwuXG4gKlxuICogQHBhcmFtICB7b2JqZWN0fSB0YXJnZXQgICAgICAgLSBGaXJzdCBvYmplY3QuXG4gKiBAcGFyYW0gIHtvYmplY3R9IFsuLi5vYmplY3RzXSAtIE9iamVjdHMgdG8gbWVyZ2UuXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGFzc2lnblBvbHlmaWxsKCkge1xuICBjb25zdCB0YXJnZXQgPSBhcmd1bWVudHNbMF07XG5cbiAgZm9yIChsZXQgaSA9IDEsIGwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgaWYgKCFhcmd1bWVudHNbaV0pIGNvbnRpbnVlO1xuXG4gICAgZm9yIChjb25zdCBrIGluIGFyZ3VtZW50c1tpXSkgdGFyZ2V0W2tdID0gYXJndW1lbnRzW2ldW2tdO1xuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxubGV0IGFzc2lnbiA9IGFzc2lnblBvbHlmaWxsO1xuXG5pZiAodHlwZW9mIE9iamVjdC5hc3NpZ24gPT09ICdmdW5jdGlvbicpIGFzc2lnbiA9IE9iamVjdC5hc3NpZ247XG5cbmV4cG9ydCB7YXNzaWdufTtcblxuLyoqXG4gKiBGdW5jdGlvbiByZXR1cm5pbmcgdGhlIGZpcnN0IG1hdGNoaW5nIGVkZ2UgZm9yIGdpdmVuIHBhdGguXG4gKiBOb3RlOiB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSBleGlzdGVuY2Ugb2Ygc291cmNlICYgdGFyZ2V0LiBUaGlzXG4gKiBtdXN0IGJlIHBlcmZvcm1lZCBieSB0aGUgY2FsbGVyLlxuICpcbiAqIEBwYXJhbSAge0dyYXBofSAgZ3JhcGggIC0gVGFyZ2V0IGdyYXBoLlxuICogQHBhcmFtICB7YW55fSAgICBzb3VyY2UgLSBTb3VyY2Ugbm9kZS5cbiAqIEBwYXJhbSAge2FueX0gICAgdGFyZ2V0IC0gVGFyZ2V0IG5vZGUuXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHR5cGUgICAtIFR5cGUgb2YgdGhlIGVkZ2UgKG1peGVkLCBkaXJlY3RlZCBvciB1bmRpcmVjdGVkKS5cbiAqIEByZXR1cm4ge3N0cmluZ3xudWxsfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWF0Y2hpbmdFZGdlKGdyYXBoLCBzb3VyY2UsIHRhcmdldCwgdHlwZSkge1xuICBjb25zdCBzb3VyY2VEYXRhID0gZ3JhcGguX25vZGVzLmdldChzb3VyY2UpO1xuXG4gIGxldCBlZGdlID0gbnVsbDtcblxuICBpZiAoIXNvdXJjZURhdGEpIHJldHVybiBlZGdlO1xuXG4gIGlmICh0eXBlID09PSAnbWl4ZWQnKSB7XG4gICAgZWRnZSA9XG4gICAgICAoc291cmNlRGF0YS5vdXQgJiYgc291cmNlRGF0YS5vdXRbdGFyZ2V0XSkgfHxcbiAgICAgIChzb3VyY2VEYXRhLnVuZGlyZWN0ZWQgJiYgc291cmNlRGF0YS51bmRpcmVjdGVkW3RhcmdldF0pO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkaXJlY3RlZCcpIHtcbiAgICBlZGdlID0gc291cmNlRGF0YS5vdXQgJiYgc291cmNlRGF0YS5vdXRbdGFyZ2V0XTtcbiAgfSBlbHNlIHtcbiAgICBlZGdlID0gc291cmNlRGF0YS51bmRpcmVjdGVkICYmIHNvdXJjZURhdGEudW5kaXJlY3RlZFt0YXJnZXRdO1xuICB9XG5cbiAgcmV0dXJuIGVkZ2U7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIHZhbHVlIGlzIGEgR3JhcGggaW1wbGVtZW50YXRpb24gaW5zdGFuY2UuXG4gKlxuICogQHBhcmFtICB7bWl4ZWR9ICAgdmFsdWUgLSBUYXJnZXQgdmFsdWUuXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNHcmFwaCh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHR5cGVvZiB2YWx1ZS5hZGRVbmRpcmVjdGVkRWRnZVdpdGhLZXkgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgdmFsdWUuZHJvcE5vZGUgPT09ICdmdW5jdGlvbidcbiAgKTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBwbGFpbiBvYmplY3QuXG4gKlxuICogQHBhcmFtICB7bWl4ZWR9ICAgdmFsdWUgLSBUYXJnZXQgdmFsdWUuXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUuY29uc3RydWN0b3IgPT09IE9iamVjdFxuICApO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgZW1wdHkuXG4gKlxuICogQHBhcmFtICB7b2JqZWN0fSAgbyAtIFRhcmdldCBPYmplY3QuXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbXB0eShvKSB7XG4gIGxldCBrO1xuXG4gIGZvciAoayBpbiBvKSByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIFwicHJpdmF0ZVwiIHByb3BlcnR5IGZvciB0aGUgZ2l2ZW4gbWVtYmVyIG5hbWUgYnkgY29uY2VhbGluZyBpdFxuICogdXNpbmcgdGhlIGBlbnVtZXJhYmxlYCBvcHRpb24uXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHRhcmdldCAtIFRhcmdldCBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgIC0gTWVtYmVyIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcml2YXRlUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB2YWx1ZSkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICB2YWx1ZVxuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcmVhZC1vbmx5IHByb3BlcnR5IGZvciB0aGUgZ2l2ZW4gbWVtYmVyIG5hbWUgJiB0aGUgZ2l2ZW4gZ2V0dGVyLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSAgIHRhcmdldCAtIFRhcmdldCBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ30gICBuYW1lICAgLSBNZW1iZXIgbmFtZS5cbiAqIEBwYXJhbSB7bWl4ZWR9ICAgIHZhbHVlICAtIFRoZSBhdHRhY2hlZCBnZXR0ZXIgb3IgZml4ZWQgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkT25seVByb3BlcnR5KHRhcmdldCwgbmFtZSwgdmFsdWUpIHtcbiAgY29uc3QgZGVzY3JpcHRvciA9IHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9O1xuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBkZXNjcmlwdG9yLmdldCA9IHZhbHVlO1xuICB9IGVsc2Uge1xuICAgIGRlc2NyaXB0b3IudmFsdWUgPSB2YWx1ZTtcbiAgICBkZXNjcmlwdG9yLndyaXRhYmxlID0gZmFsc2U7XG4gIH1cblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCBkZXNjcmlwdG9yKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBjb25zdGl0dXRlIHZhbGlkIGhpbnRzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBoaW50cyAtIFRhcmdldCBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUhpbnRzKGhpbnRzKSB7XG4gIGlmICghaXNQbGFpbk9iamVjdChoaW50cykpIHJldHVybiBmYWxzZTtcblxuICBpZiAoaGludHMuYXR0cmlidXRlcyAmJiAhQXJyYXkuaXNBcnJheShoaW50cy5hdHRyaWJ1dGVzKSkgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBnZW5lcmF0aW5nIGluY3JlbWVudGFsIGlkcyBmb3IgZWRnZXMuXG4gKlxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmNyZW1lbnRhbElkU3RhcnRpbmdGcm9tUmFuZG9tQnl0ZSgpIHtcbiAgbGV0IGkgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyNTYpICYgMHhmZjtcblxuICByZXR1cm4gKCkgPT4ge1xuICAgIHJldHVybiBpKys7XG4gIH07XG59XG4iLCAiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFIgPSB0eXBlb2YgUmVmbGVjdCA9PT0gJ29iamVjdCcgPyBSZWZsZWN0IDogbnVsbFxudmFyIFJlZmxlY3RBcHBseSA9IFIgJiYgdHlwZW9mIFIuYXBwbHkgPT09ICdmdW5jdGlvbidcbiAgPyBSLmFwcGx5XG4gIDogZnVuY3Rpb24gUmVmbGVjdEFwcGx5KHRhcmdldCwgcmVjZWl2ZXIsIGFyZ3MpIHtcbiAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwodGFyZ2V0LCByZWNlaXZlciwgYXJncyk7XG4gIH1cblxudmFyIFJlZmxlY3RPd25LZXlzXG5pZiAoUiAmJiB0eXBlb2YgUi5vd25LZXlzID09PSAnZnVuY3Rpb24nKSB7XG4gIFJlZmxlY3RPd25LZXlzID0gUi5vd25LZXlzXG59IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgUmVmbGVjdE93bktleXMgPSBmdW5jdGlvbiBSZWZsZWN0T3duS2V5cyh0YXJnZXQpIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KVxuICAgICAgLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHRhcmdldCkpO1xuICB9O1xufSBlbHNlIHtcbiAgUmVmbGVjdE93bktleXMgPSBmdW5jdGlvbiBSZWZsZWN0T3duS2V5cyh0YXJnZXQpIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gUHJvY2Vzc0VtaXRXYXJuaW5nKHdhcm5pbmcpIHtcbiAgaWYgKGNvbnNvbGUgJiYgY29uc29sZS53YXJuKSBjb25zb2xlLndhcm4od2FybmluZyk7XG59XG5cbnZhciBOdW1iZXJJc05hTiA9IE51bWJlci5pc05hTiB8fCBmdW5jdGlvbiBOdW1iZXJJc05hTih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBFdmVudEVtaXR0ZXIoKSB7XG4gIEV2ZW50RW1pdHRlci5pbml0LmNhbGwodGhpcyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50RW1pdHRlcjtcbm1vZHVsZS5leHBvcnRzLm9uY2UgPSBvbmNlO1xuXG4vLyBCYWNrd2FyZHMtY29tcGF0IHdpdGggbm9kZSAwLjEwLnhcbkV2ZW50RW1pdHRlci5FdmVudEVtaXR0ZXIgPSBFdmVudEVtaXR0ZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX2V2ZW50cyA9IHVuZGVmaW5lZDtcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX2V2ZW50c0NvdW50ID0gMDtcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX21heExpc3RlbmVycyA9IHVuZGVmaW5lZDtcblxuLy8gQnkgZGVmYXVsdCBFdmVudEVtaXR0ZXJzIHdpbGwgcHJpbnQgYSB3YXJuaW5nIGlmIG1vcmUgdGhhbiAxMCBsaXN0ZW5lcnMgYXJlXG4vLyBhZGRlZCB0byBpdC4gVGhpcyBpcyBhIHVzZWZ1bCBkZWZhdWx0IHdoaWNoIGhlbHBzIGZpbmRpbmcgbWVtb3J5IGxlYWtzLlxudmFyIGRlZmF1bHRNYXhMaXN0ZW5lcnMgPSAxMDtcblxuZnVuY3Rpb24gY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcikge1xuICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwibGlzdGVuZXJcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyArIHR5cGVvZiBsaXN0ZW5lcik7XG4gIH1cbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEV2ZW50RW1pdHRlciwgJ2RlZmF1bHRNYXhMaXN0ZW5lcnMnLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRNYXhMaXN0ZW5lcnM7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24oYXJnKSB7XG4gICAgaWYgKHR5cGVvZiBhcmcgIT09ICdudW1iZXInIHx8IGFyZyA8IDAgfHwgTnVtYmVySXNOYU4oYXJnKSkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiBcImRlZmF1bHRNYXhMaXN0ZW5lcnNcIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnICsgYXJnICsgJy4nKTtcbiAgICB9XG4gICAgZGVmYXVsdE1heExpc3RlbmVycyA9IGFyZztcbiAgfVxufSk7XG5cbkV2ZW50RW1pdHRlci5pbml0ID0gZnVuY3Rpb24oKSB7XG5cbiAgaWYgKHRoaXMuX2V2ZW50cyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICB0aGlzLl9ldmVudHMgPT09IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5fZXZlbnRzKSB7XG4gICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB0aGlzLl9ldmVudHNDb3VudCA9IDA7XG4gIH1cblxuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSB0aGlzLl9tYXhMaXN0ZW5lcnMgfHwgdW5kZWZpbmVkO1xufTtcblxuLy8gT2J2aW91c2x5IG5vdCBhbGwgRW1pdHRlcnMgc2hvdWxkIGJlIGxpbWl0ZWQgdG8gMTAuIFRoaXMgZnVuY3Rpb24gYWxsb3dzXG4vLyB0aGF0IHRvIGJlIGluY3JlYXNlZC4gU2V0IHRvIHplcm8gZm9yIHVubGltaXRlZC5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzID0gZnVuY3Rpb24gc2V0TWF4TGlzdGVuZXJzKG4pIHtcbiAgaWYgKHR5cGVvZiBuICE9PSAnbnVtYmVyJyB8fCBuIDwgMCB8fCBOdW1iZXJJc05hTihuKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgXCJuXCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJyArIG4gKyAnLicpO1xuICB9XG4gIHRoaXMuX21heExpc3RlbmVycyA9IG47XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gX2dldE1heExpc3RlbmVycyh0aGF0KSB7XG4gIGlmICh0aGF0Ll9tYXhMaXN0ZW5lcnMgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gRXZlbnRFbWl0dGVyLmRlZmF1bHRNYXhMaXN0ZW5lcnM7XG4gIHJldHVybiB0aGF0Ll9tYXhMaXN0ZW5lcnM7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZ2V0TWF4TGlzdGVuZXJzID0gZnVuY3Rpb24gZ2V0TWF4TGlzdGVuZXJzKCkge1xuICByZXR1cm4gX2dldE1heExpc3RlbmVycyh0aGlzKTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZW1pdCA9IGZ1bmN0aW9uIGVtaXQodHlwZSkge1xuICB2YXIgYXJncyA9IFtdO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgYXJncy5wdXNoKGFyZ3VtZW50c1tpXSk7XG4gIHZhciBkb0Vycm9yID0gKHR5cGUgPT09ICdlcnJvcicpO1xuXG4gIHZhciBldmVudHMgPSB0aGlzLl9ldmVudHM7XG4gIGlmIChldmVudHMgIT09IHVuZGVmaW5lZClcbiAgICBkb0Vycm9yID0gKGRvRXJyb3IgJiYgZXZlbnRzLmVycm9yID09PSB1bmRlZmluZWQpO1xuICBlbHNlIGlmICghZG9FcnJvcilcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gSWYgdGhlcmUgaXMgbm8gJ2Vycm9yJyBldmVudCBsaXN0ZW5lciB0aGVuIHRocm93LlxuICBpZiAoZG9FcnJvcikge1xuICAgIHZhciBlcjtcbiAgICBpZiAoYXJncy5sZW5ndGggPiAwKVxuICAgICAgZXIgPSBhcmdzWzBdO1xuICAgIGlmIChlciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAvLyBOb3RlOiBUaGUgY29tbWVudHMgb24gdGhlIGB0aHJvd2AgbGluZXMgYXJlIGludGVudGlvbmFsLCB0aGV5IHNob3dcbiAgICAgIC8vIHVwIGluIE5vZGUncyBvdXRwdXQgaWYgdGhpcyByZXN1bHRzIGluIGFuIHVuaGFuZGxlZCBleGNlcHRpb24uXG4gICAgICB0aHJvdyBlcjsgLy8gVW5oYW5kbGVkICdlcnJvcicgZXZlbnRcbiAgICB9XG4gICAgLy8gQXQgbGVhc3QgZ2l2ZSBzb21lIGtpbmQgb2YgY29udGV4dCB0byB0aGUgdXNlclxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1VuaGFuZGxlZCBlcnJvci4nICsgKGVyID8gJyAoJyArIGVyLm1lc3NhZ2UgKyAnKScgOiAnJykpO1xuICAgIGVyci5jb250ZXh0ID0gZXI7XG4gICAgdGhyb3cgZXJyOyAvLyBVbmhhbmRsZWQgJ2Vycm9yJyBldmVudFxuICB9XG5cbiAgdmFyIGhhbmRsZXIgPSBldmVudHNbdHlwZV07XG5cbiAgaWYgKGhhbmRsZXIgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKHR5cGVvZiBoYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgUmVmbGVjdEFwcGx5KGhhbmRsZXIsIHRoaXMsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIHZhciBsZW4gPSBoYW5kbGVyLmxlbmd0aDtcbiAgICB2YXIgbGlzdGVuZXJzID0gYXJyYXlDbG9uZShoYW5kbGVyLCBsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpXG4gICAgICBSZWZsZWN0QXBwbHkobGlzdGVuZXJzW2ldLCB0aGlzLCBhcmdzKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZnVuY3Rpb24gX2FkZExpc3RlbmVyKHRhcmdldCwgdHlwZSwgbGlzdGVuZXIsIHByZXBlbmQpIHtcbiAgdmFyIG07XG4gIHZhciBldmVudHM7XG4gIHZhciBleGlzdGluZztcblxuICBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKTtcblxuICBldmVudHMgPSB0YXJnZXQuX2V2ZW50cztcbiAgaWYgKGV2ZW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHRhcmdldC5fZXZlbnRzQ291bnQgPSAwO1xuICB9IGVsc2Uge1xuICAgIC8vIFRvIGF2b2lkIHJlY3Vyc2lvbiBpbiB0aGUgY2FzZSB0aGF0IHR5cGUgPT09IFwibmV3TGlzdGVuZXJcIiEgQmVmb3JlXG4gICAgLy8gYWRkaW5nIGl0IHRvIHRoZSBsaXN0ZW5lcnMsIGZpcnN0IGVtaXQgXCJuZXdMaXN0ZW5lclwiLlxuICAgIGlmIChldmVudHMubmV3TGlzdGVuZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGFyZ2V0LmVtaXQoJ25ld0xpc3RlbmVyJywgdHlwZSxcbiAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLmxpc3RlbmVyID8gbGlzdGVuZXIubGlzdGVuZXIgOiBsaXN0ZW5lcik7XG5cbiAgICAgIC8vIFJlLWFzc2lnbiBgZXZlbnRzYCBiZWNhdXNlIGEgbmV3TGlzdGVuZXIgaGFuZGxlciBjb3VsZCBoYXZlIGNhdXNlZCB0aGVcbiAgICAgIC8vIHRoaXMuX2V2ZW50cyB0byBiZSBhc3NpZ25lZCB0byBhIG5ldyBvYmplY3RcbiAgICAgIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzO1xuICAgIH1cbiAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXTtcbiAgfVxuXG4gIGlmIChleGlzdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT3B0aW1pemUgdGhlIGNhc2Ugb2Ygb25lIGxpc3RlbmVyLiBEb24ndCBuZWVkIHRoZSBleHRyYSBhcnJheSBvYmplY3QuXG4gICAgZXhpc3RpbmcgPSBldmVudHNbdHlwZV0gPSBsaXN0ZW5lcjtcbiAgICArK3RhcmdldC5fZXZlbnRzQ291bnQ7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHR5cGVvZiBleGlzdGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gQWRkaW5nIHRoZSBzZWNvbmQgZWxlbWVudCwgbmVlZCB0byBjaGFuZ2UgdG8gYXJyYXkuXG4gICAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXSA9XG4gICAgICAgIHByZXBlbmQgPyBbbGlzdGVuZXIsIGV4aXN0aW5nXSA6IFtleGlzdGluZywgbGlzdGVuZXJdO1xuICAgICAgLy8gSWYgd2UndmUgYWxyZWFkeSBnb3QgYW4gYXJyYXksIGp1c3QgYXBwZW5kLlxuICAgIH0gZWxzZSBpZiAocHJlcGVuZCkge1xuICAgICAgZXhpc3RpbmcudW5zaGlmdChsaXN0ZW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4aXN0aW5nLnB1c2gobGlzdGVuZXIpO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBsaXN0ZW5lciBsZWFrXG4gICAgbSA9IF9nZXRNYXhMaXN0ZW5lcnModGFyZ2V0KTtcbiAgICBpZiAobSA+IDAgJiYgZXhpc3RpbmcubGVuZ3RoID4gbSAmJiAhZXhpc3Rpbmcud2FybmVkKSB7XG4gICAgICBleGlzdGluZy53YXJuZWQgPSB0cnVlO1xuICAgICAgLy8gTm8gZXJyb3IgY29kZSBmb3IgdGhpcyBzaW5jZSBpdCBpcyBhIFdhcm5pbmdcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICAgICAgdmFyIHcgPSBuZXcgRXJyb3IoJ1Bvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgbGVhayBkZXRlY3RlZC4gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nLmxlbmd0aCArICcgJyArIFN0cmluZyh0eXBlKSArICcgbGlzdGVuZXJzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5jcmVhc2UgbGltaXQnKTtcbiAgICAgIHcubmFtZSA9ICdNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmcnO1xuICAgICAgdy5lbWl0dGVyID0gdGFyZ2V0O1xuICAgICAgdy50eXBlID0gdHlwZTtcbiAgICAgIHcuY291bnQgPSBleGlzdGluZy5sZW5ndGg7XG4gICAgICBQcm9jZXNzRW1pdFdhcm5pbmcodyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IGZ1bmN0aW9uIGFkZExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gIHJldHVybiBfYWRkTGlzdGVuZXIodGhpcywgdHlwZSwgbGlzdGVuZXIsIGZhbHNlKTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnByZXBlbmRMaXN0ZW5lciA9XG4gICAgZnVuY3Rpb24gcHJlcGVuZExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgICByZXR1cm4gX2FkZExpc3RlbmVyKHRoaXMsIHR5cGUsIGxpc3RlbmVyLCB0cnVlKTtcbiAgICB9O1xuXG5mdW5jdGlvbiBvbmNlV3JhcHBlcigpIHtcbiAgaWYgKCF0aGlzLmZpcmVkKSB7XG4gICAgdGhpcy50YXJnZXQucmVtb3ZlTGlzdGVuZXIodGhpcy50eXBlLCB0aGlzLndyYXBGbik7XG4gICAgdGhpcy5maXJlZCA9IHRydWU7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gdGhpcy5saXN0ZW5lci5jYWxsKHRoaXMudGFyZ2V0KTtcbiAgICByZXR1cm4gdGhpcy5saXN0ZW5lci5hcHBseSh0aGlzLnRhcmdldCwgYXJndW1lbnRzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfb25jZVdyYXAodGFyZ2V0LCB0eXBlLCBsaXN0ZW5lcikge1xuICB2YXIgc3RhdGUgPSB7IGZpcmVkOiBmYWxzZSwgd3JhcEZuOiB1bmRlZmluZWQsIHRhcmdldDogdGFyZ2V0LCB0eXBlOiB0eXBlLCBsaXN0ZW5lcjogbGlzdGVuZXIgfTtcbiAgdmFyIHdyYXBwZWQgPSBvbmNlV3JhcHBlci5iaW5kKHN0YXRlKTtcbiAgd3JhcHBlZC5saXN0ZW5lciA9IGxpc3RlbmVyO1xuICBzdGF0ZS53cmFwRm4gPSB3cmFwcGVkO1xuICByZXR1cm4gd3JhcHBlZDtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbmNlID0gZnVuY3Rpb24gb25jZSh0eXBlLCBsaXN0ZW5lcikge1xuICBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKTtcbiAgdGhpcy5vbih0eXBlLCBfb25jZVdyYXAodGhpcywgdHlwZSwgbGlzdGVuZXIpKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnByZXBlbmRPbmNlTGlzdGVuZXIgPVxuICAgIGZ1bmN0aW9uIHByZXBlbmRPbmNlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpO1xuICAgICAgdGhpcy5wcmVwZW5kTGlzdGVuZXIodHlwZSwgX29uY2VXcmFwKHRoaXMsIHR5cGUsIGxpc3RlbmVyKSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG4vLyBFbWl0cyBhICdyZW1vdmVMaXN0ZW5lcicgZXZlbnQgaWYgYW5kIG9ubHkgaWYgdGhlIGxpc3RlbmVyIHdhcyByZW1vdmVkLlxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lciA9XG4gICAgZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIHZhciBsaXN0LCBldmVudHMsIHBvc2l0aW9uLCBpLCBvcmlnaW5hbExpc3RlbmVyO1xuXG4gICAgICBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKTtcblxuICAgICAgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuICAgICAgaWYgKGV2ZW50cyA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgbGlzdCA9IGV2ZW50c1t0eXBlXTtcbiAgICAgIGlmIChsaXN0ID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICBpZiAobGlzdCA9PT0gbGlzdGVuZXIgfHwgbGlzdC5saXN0ZW5lciA9PT0gbGlzdGVuZXIpIHtcbiAgICAgICAgaWYgKC0tdGhpcy5fZXZlbnRzQ291bnQgPT09IDApXG4gICAgICAgICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIGV2ZW50c1t0eXBlXTtcbiAgICAgICAgICBpZiAoZXZlbnRzLnJlbW92ZUxpc3RlbmVyKVxuICAgICAgICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIGxpc3QubGlzdGVuZXIgfHwgbGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBsaXN0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHBvc2l0aW9uID0gLTE7XG5cbiAgICAgICAgZm9yIChpID0gbGlzdC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIGlmIChsaXN0W2ldID09PSBsaXN0ZW5lciB8fCBsaXN0W2ldLmxpc3RlbmVyID09PSBsaXN0ZW5lcikge1xuICAgICAgICAgICAgb3JpZ2luYWxMaXN0ZW5lciA9IGxpc3RbaV0ubGlzdGVuZXI7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IGk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocG9zaXRpb24gPCAwKVxuICAgICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICAgIGlmIChwb3NpdGlvbiA9PT0gMClcbiAgICAgICAgICBsaXN0LnNoaWZ0KCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHNwbGljZU9uZShsaXN0LCBwb3NpdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGlzdC5sZW5ndGggPT09IDEpXG4gICAgICAgICAgZXZlbnRzW3R5cGVdID0gbGlzdFswXTtcblxuICAgICAgICBpZiAoZXZlbnRzLnJlbW92ZUxpc3RlbmVyICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIG9yaWdpbmFsTGlzdGVuZXIgfHwgbGlzdGVuZXIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9mZiA9IEV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzID1cbiAgICBmdW5jdGlvbiByZW1vdmVBbGxMaXN0ZW5lcnModHlwZSkge1xuICAgICAgdmFyIGxpc3RlbmVycywgZXZlbnRzLCBpO1xuXG4gICAgICBldmVudHMgPSB0aGlzLl9ldmVudHM7XG4gICAgICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICAvLyBub3QgbGlzdGVuaW5nIGZvciByZW1vdmVMaXN0ZW5lciwgbm8gbmVlZCB0byBlbWl0XG4gICAgICBpZiAoZXZlbnRzLnJlbW92ZUxpc3RlbmVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIHRoaXMuX2V2ZW50c0NvdW50ID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudHNbdHlwZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmICgtLXRoaXMuX2V2ZW50c0NvdW50ID09PSAwKVxuICAgICAgICAgICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBkZWxldGUgZXZlbnRzW3R5cGVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICAvLyBlbWl0IHJlbW92ZUxpc3RlbmVyIGZvciBhbGwgbGlzdGVuZXJzIG9uIGFsbCBldmVudHNcbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZXZlbnRzKTtcbiAgICAgICAgdmFyIGtleTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgICAgIGlmIChrZXkgPT09ICdyZW1vdmVMaXN0ZW5lcicpIGNvbnRpbnVlO1xuICAgICAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ3JlbW92ZUxpc3RlbmVyJyk7XG4gICAgICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIHRoaXMuX2V2ZW50c0NvdW50ID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIGxpc3RlbmVycyA9IGV2ZW50c1t0eXBlXTtcblxuICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnMpO1xuICAgICAgfSBlbHNlIGlmIChsaXN0ZW5lcnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBMSUZPIG9yZGVyXG4gICAgICAgIGZvciAoaSA9IGxpc3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG5mdW5jdGlvbiBfbGlzdGVuZXJzKHRhcmdldCwgdHlwZSwgdW53cmFwKSB7XG4gIHZhciBldmVudHMgPSB0YXJnZXQuX2V2ZW50cztcblxuICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIFtdO1xuXG4gIHZhciBldmxpc3RlbmVyID0gZXZlbnRzW3R5cGVdO1xuICBpZiAoZXZsaXN0ZW5lciA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBbXTtcblxuICBpZiAodHlwZW9mIGV2bGlzdGVuZXIgPT09ICdmdW5jdGlvbicpXG4gICAgcmV0dXJuIHVud3JhcCA/IFtldmxpc3RlbmVyLmxpc3RlbmVyIHx8IGV2bGlzdGVuZXJdIDogW2V2bGlzdGVuZXJdO1xuXG4gIHJldHVybiB1bndyYXAgP1xuICAgIHVud3JhcExpc3RlbmVycyhldmxpc3RlbmVyKSA6IGFycmF5Q2xvbmUoZXZsaXN0ZW5lciwgZXZsaXN0ZW5lci5sZW5ndGgpO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVycyA9IGZ1bmN0aW9uIGxpc3RlbmVycyh0eXBlKSB7XG4gIHJldHVybiBfbGlzdGVuZXJzKHRoaXMsIHR5cGUsIHRydWUpO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yYXdMaXN0ZW5lcnMgPSBmdW5jdGlvbiByYXdMaXN0ZW5lcnModHlwZSkge1xuICByZXR1cm4gX2xpc3RlbmVycyh0aGlzLCB0eXBlLCBmYWxzZSk7XG59O1xuXG5FdmVudEVtaXR0ZXIubGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uKGVtaXR0ZXIsIHR5cGUpIHtcbiAgaWYgKHR5cGVvZiBlbWl0dGVyLmxpc3RlbmVyQ291bnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZW1pdHRlci5saXN0ZW5lckNvdW50KHR5cGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsaXN0ZW5lckNvdW50LmNhbGwoZW1pdHRlciwgdHlwZSk7XG4gIH1cbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJDb3VudCA9IGxpc3RlbmVyQ291bnQ7XG5mdW5jdGlvbiBsaXN0ZW5lckNvdW50KHR5cGUpIHtcbiAgdmFyIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcblxuICBpZiAoZXZlbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YXIgZXZsaXN0ZW5lciA9IGV2ZW50c1t0eXBlXTtcblxuICAgIGlmICh0eXBlb2YgZXZsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIGlmIChldmxpc3RlbmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBldmxpc3RlbmVyLmxlbmd0aDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gMDtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5ldmVudE5hbWVzID0gZnVuY3Rpb24gZXZlbnROYW1lcygpIHtcbiAgcmV0dXJuIHRoaXMuX2V2ZW50c0NvdW50ID4gMCA/IFJlZmxlY3RPd25LZXlzKHRoaXMuX2V2ZW50cykgOiBbXTtcbn07XG5cbmZ1bmN0aW9uIGFycmF5Q2xvbmUoYXJyLCBuKSB7XG4gIHZhciBjb3B5ID0gbmV3IEFycmF5KG4pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSlcbiAgICBjb3B5W2ldID0gYXJyW2ldO1xuICByZXR1cm4gY29weTtcbn1cblxuZnVuY3Rpb24gc3BsaWNlT25lKGxpc3QsIGluZGV4KSB7XG4gIGZvciAoOyBpbmRleCArIDEgPCBsaXN0Lmxlbmd0aDsgaW5kZXgrKylcbiAgICBsaXN0W2luZGV4XSA9IGxpc3RbaW5kZXggKyAxXTtcbiAgbGlzdC5wb3AoKTtcbn1cblxuZnVuY3Rpb24gdW53cmFwTGlzdGVuZXJzKGFycikge1xuICB2YXIgcmV0ID0gbmV3IEFycmF5KGFyci5sZW5ndGgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHJldC5sZW5ndGg7ICsraSkge1xuICAgIHJldFtpXSA9IGFycltpXS5saXN0ZW5lciB8fCBhcnJbaV07XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gb25jZShlbWl0dGVyLCBuYW1lKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZnVuY3Rpb24gZXJyb3JMaXN0ZW5lcihlcnIpIHtcbiAgICAgIGVtaXR0ZXIucmVtb3ZlTGlzdGVuZXIobmFtZSwgcmVzb2x2ZXIpO1xuICAgICAgcmVqZWN0KGVycik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVzb2x2ZXIoKSB7XG4gICAgICBpZiAodHlwZW9mIGVtaXR0ZXIucmVtb3ZlTGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgZW1pdHRlci5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBlcnJvckxpc3RlbmVyKTtcbiAgICAgIH1cbiAgICAgIHJlc29sdmUoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKTtcbiAgICB9O1xuXG4gICAgZXZlbnRUYXJnZXRBZ25vc3RpY0FkZExpc3RlbmVyKGVtaXR0ZXIsIG5hbWUsIHJlc29sdmVyLCB7IG9uY2U6IHRydWUgfSk7XG4gICAgaWYgKG5hbWUgIT09ICdlcnJvcicpIHtcbiAgICAgIGFkZEVycm9ySGFuZGxlcklmRXZlbnRFbWl0dGVyKGVtaXR0ZXIsIGVycm9yTGlzdGVuZXIsIHsgb25jZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRFcnJvckhhbmRsZXJJZkV2ZW50RW1pdHRlcihlbWl0dGVyLCBoYW5kbGVyLCBmbGFncykge1xuICBpZiAodHlwZW9mIGVtaXR0ZXIub24gPT09ICdmdW5jdGlvbicpIHtcbiAgICBldmVudFRhcmdldEFnbm9zdGljQWRkTGlzdGVuZXIoZW1pdHRlciwgJ2Vycm9yJywgaGFuZGxlciwgZmxhZ3MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGV2ZW50VGFyZ2V0QWdub3N0aWNBZGRMaXN0ZW5lcihlbWl0dGVyLCBuYW1lLCBsaXN0ZW5lciwgZmxhZ3MpIHtcbiAgaWYgKHR5cGVvZiBlbWl0dGVyLm9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKGZsYWdzLm9uY2UpIHtcbiAgICAgIGVtaXR0ZXIub25jZShuYW1lLCBsaXN0ZW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVtaXR0ZXIub24obmFtZSwgbGlzdGVuZXIpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgZW1pdHRlci5hZGRFdmVudExpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gRXZlbnRUYXJnZXQgZG9lcyBub3QgaGF2ZSBgZXJyb3JgIGV2ZW50IHNlbWFudGljcyBsaWtlIE5vZGVcbiAgICAvLyBFdmVudEVtaXR0ZXJzLCB3ZSBkbyBub3QgbGlzdGVuIGZvciBgZXJyb3JgIGV2ZW50cyBoZXJlLlxuICAgIGVtaXR0ZXIuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBmdW5jdGlvbiB3cmFwTGlzdGVuZXIoYXJnKSB7XG4gICAgICAvLyBJRSBkb2VzIG5vdCBoYXZlIGJ1aWx0aW4gYHsgb25jZTogdHJ1ZSB9YCBzdXBwb3J0IHNvIHdlXG4gICAgICAvLyBoYXZlIHRvIGRvIGl0IG1hbnVhbGx5LlxuICAgICAgaWYgKGZsYWdzLm9uY2UpIHtcbiAgICAgICAgZW1pdHRlci5yZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIHdyYXBMaXN0ZW5lcik7XG4gICAgICB9XG4gICAgICBsaXN0ZW5lcihhcmcpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImVtaXR0ZXJcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRXZlbnRFbWl0dGVyLiBSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2YgZW1pdHRlcik7XG4gIH1cbn1cbiIsICIvKipcbiAqIE9ibGl0ZXJhdG9yIEl0ZXJhdG9yIENsYXNzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqXG4gKiBTaW1wbGUgY2xhc3MgcmVwcmVzZW50aW5nIHRoZSBsaWJyYXJ5J3MgaXRlcmF0b3JzLlxuICovXG5cbi8qKlxuICogSXRlcmF0b3IgY2xhc3MuXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBuZXh0IC0gTmV4dCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gSXRlcmF0b3IobmV4dCkge1xuICBpZiAodHlwZW9mIG5leHQgIT09ICdmdW5jdGlvbicpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdvYmxpdGVyYXRvci9pdGVyYXRvcjogZXhwZWN0aW5nIGEgZnVuY3Rpb24hJyk7XG5cbiAgdGhpcy5uZXh0ID0gbmV4dDtcbn1cblxuLyoqXG4gKiBJZiBzeW1ib2xzIGFyZSBzdXBwb3J0ZWQsIHdlIGFkZCBgbmV4dGAgdG8gYFN5bWJvbC5pdGVyYXRvcmAuXG4gKi9cbmlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJylcbiAgSXRlcmF0b3IucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbi8qKlxuICogUmV0dXJuaW5nIGFuIGl0ZXJhdG9yIG9mIHRoZSBnaXZlbiB2YWx1ZXMuXG4gKlxuICogQHBhcmFtICB7YW55Li4ufSB2YWx1ZXMgLSBWYWx1ZXMuXG4gKiBAcmV0dXJuIHtJdGVyYXRvcn1cbiAqL1xuSXRlcmF0b3Iub2YgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgIGwgPSBhcmdzLmxlbmd0aCxcbiAgICBpID0gMDtcblxuICByZXR1cm4gbmV3IEl0ZXJhdG9yKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoaSA+PSBsKSByZXR1cm4ge2RvbmU6IHRydWV9O1xuXG4gICAgcmV0dXJuIHtkb25lOiBmYWxzZSwgdmFsdWU6IGFyZ3NbaSsrXX07XG4gIH0pO1xufTtcblxuLyoqXG4gKiBSZXR1cm5pbmcgYW4gZW1wdHkgaXRlcmF0b3IuXG4gKlxuICogQHJldHVybiB7SXRlcmF0b3J9XG4gKi9cbkl0ZXJhdG9yLmVtcHR5ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaXRlcmF0b3IgPSBuZXcgSXRlcmF0b3IoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7ZG9uZTogdHJ1ZX07XG4gIH0pO1xuXG4gIHJldHVybiBpdGVyYXRvcjtcbn07XG5cbi8qKlxuICogUmV0dXJuaW5nIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGdpdmVuIGluZGV4ZWQgc2VxdWVuY2UuXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfEFycmF5fSBzZXF1ZW5jZSAtIFRhcmdldCBzZXF1ZW5jZS5cbiAqIEByZXR1cm4ge0l0ZXJhdG9yfVxuICovXG5JdGVyYXRvci5mcm9tU2VxdWVuY2UgPSBmdW5jdGlvbiAoc2VxdWVuY2UpIHtcbiAgdmFyIGkgPSAwLFxuICAgIGwgPSBzZXF1ZW5jZS5sZW5ndGg7XG5cbiAgcmV0dXJuIG5ldyBJdGVyYXRvcihmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGkgPj0gbCkgcmV0dXJuIHtkb25lOiB0cnVlfTtcblxuICAgIHJldHVybiB7ZG9uZTogZmFsc2UsIHZhbHVlOiBzZXF1ZW5jZVtpKytdfTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIFJldHVybmluZyB3aGV0aGVyIHRoZSBnaXZlbiB2YWx1ZSBpcyBhbiBpdGVyYXRvci5cbiAqXG4gKiBAcGFyYW0gIHthbnl9IHZhbHVlIC0gVmFsdWUuXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5JdGVyYXRvci5pcyA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBJdGVyYXRvcikgcmV0dXJuIHRydWU7XG5cbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICB0eXBlb2YgdmFsdWUubmV4dCA9PT0gJ2Z1bmN0aW9uJ1xuICApO1xufTtcblxuLyoqXG4gKiBFeHBvcnRpbmcuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gSXRlcmF0b3I7XG4iLCAiZXhwb3J0cy5BUlJBWV9CVUZGRVJfU1VQUE9SVCA9IHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCc7XG5leHBvcnRzLlNZTUJPTF9TVVBQT1JUID0gdHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCc7XG4iLCAiLyoqXG4gKiBPYmxpdGVyYXRvciBJdGVyIEZ1bmN0aW9uXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIEZ1bmN0aW9uIGNvZXJjaW5nIHZhbHVlcyB0byBhbiBpdGVyYXRvci4gSXQgY2FuIGJlIHF1aXRlIHVzZWZ1bCB3aGVuIG5lZWRpbmdcbiAqIHRvIGhhbmRsZSBpdGVyYWJsZXMgYW5kIGl0ZXJhdG9ycyB0aGUgc2FtZSB3YXkuXG4gKi9cbnZhciBJdGVyYXRvciA9IHJlcXVpcmUoJy4vaXRlcmF0b3IuanMnKTtcbnZhciBzdXBwb3J0ID0gcmVxdWlyZSgnLi9zdXBwb3J0LmpzJyk7XG5cbnZhciBBUlJBWV9CVUZGRVJfU1VQUE9SVCA9IHN1cHBvcnQuQVJSQVlfQlVGRkVSX1NVUFBPUlQ7XG52YXIgU1lNQk9MX1NVUFBPUlQgPSBzdXBwb3J0LlNZTUJPTF9TVVBQT1JUO1xuXG5mdW5jdGlvbiBpdGVyT3JOdWxsKHRhcmdldCkge1xuICAvLyBJbmRleGVkIHNlcXVlbmNlXG4gIGlmIChcbiAgICB0eXBlb2YgdGFyZ2V0ID09PSAnc3RyaW5nJyB8fFxuICAgIEFycmF5LmlzQXJyYXkodGFyZ2V0KSB8fFxuICAgIChBUlJBWV9CVUZGRVJfU1VQUE9SVCAmJiBBcnJheUJ1ZmZlci5pc1ZpZXcodGFyZ2V0KSlcbiAgKVxuICAgIHJldHVybiBJdGVyYXRvci5mcm9tU2VxdWVuY2UodGFyZ2V0KTtcblxuICAvLyBJbnZhbGlkIHZhbHVlXG4gIGlmICh0eXBlb2YgdGFyZ2V0ICE9PSAnb2JqZWN0JyB8fCB0YXJnZXQgPT09IG51bGwpIHJldHVybiBudWxsO1xuXG4gIC8vIEl0ZXJhYmxlXG4gIGlmIChTWU1CT0xfU1VQUE9SVCAmJiB0eXBlb2YgdGFyZ2V0W1N5bWJvbC5pdGVyYXRvcl0gPT09ICdmdW5jdGlvbicpXG4gICAgcmV0dXJuIHRhcmdldFtTeW1ib2wuaXRlcmF0b3JdKCk7XG5cbiAgLy8gSXRlcmF0b3IgZHVjay10eXBpbmdcbiAgaWYgKHR5cGVvZiB0YXJnZXQubmV4dCA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIHRhcmdldDtcblxuICAvLyBJbnZhbGlkIG9iamVjdFxuICByZXR1cm4gbnVsbDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpdGVyKHRhcmdldCkge1xuICB2YXIgaXRlcmF0b3IgPSBpdGVyT3JOdWxsKHRhcmdldCk7XG5cbiAgaWYgKCFpdGVyYXRvcilcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnb2JsaXRlcmF0b3I6IHRhcmdldCBpcyBub3QgaXRlcmFibGUgbm9yIGEgdmFsaWQgaXRlcmF0b3IuJ1xuICAgICk7XG5cbiAgcmV0dXJuIGl0ZXJhdG9yO1xufTtcbiIsICIvKiBlc2xpbnQgbm8tY29uc3RhbnQtY29uZGl0aW9uOiAwICovXG4vKipcbiAqIE9ibGl0ZXJhdG9yIFRha2UgRnVuY3Rpb25cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKlxuICogRnVuY3Rpb24gdGFraW5nIG4gb3IgZXZlcnkgdmFsdWUgb2YgdGhlIGdpdmVuIGl0ZXJhdG9yIGFuZCByZXR1cm5zIHRoZW1cbiAqIGludG8gYW4gYXJyYXkuXG4gKi9cbnZhciBpdGVyID0gcmVxdWlyZSgnLi9pdGVyLmpzJyk7XG5cbi8qKlxuICogVGFrZS5cbiAqXG4gKiBAcGFyYW0gIHtJdGVyYWJsZX0gaXRlcmFibGUgLSBUYXJnZXQgaXRlcmFibGUuXG4gKiBAcGFyYW0gIHtudW1iZXJ9ICAgW25dICAgICAgLSBPcHRpb25hbCBudW1iZXIgb2YgaXRlbXMgdG8gdGFrZS5cbiAqIEByZXR1cm4ge2FycmF5fVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRha2UoaXRlcmFibGUsIG4pIHtcbiAgdmFyIGwgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IG4gOiBJbmZpbml0eSxcbiAgICBhcnJheSA9IGwgIT09IEluZmluaXR5ID8gbmV3IEFycmF5KGwpIDogW10sXG4gICAgc3RlcCxcbiAgICBpID0gMDtcblxuICB2YXIgaXRlcmF0b3IgPSBpdGVyKGl0ZXJhYmxlKTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChpID09PSBsKSByZXR1cm4gYXJyYXk7XG5cbiAgICBzdGVwID0gaXRlcmF0b3IubmV4dCgpO1xuXG4gICAgaWYgKHN0ZXAuZG9uZSkge1xuICAgICAgaWYgKGkgIT09IG4pIGFycmF5Lmxlbmd0aCA9IGk7XG5cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICBhcnJheVtpKytdID0gc3RlcC52YWx1ZTtcbiAgfVxufTtcbiIsICIvKipcbiAqIEdyYXBob2xvZ3kgQ3VzdG9tIEVycm9yc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIERlZmluaW5nIGN1c3RvbSBlcnJvcnMgZm9yIGVhc2Ugb2YgdXNlICYgZWFzeSB1bml0IHRlc3RzIGFjcm9zc1xuICogaW1wbGVtZW50YXRpb25zIChub3JtYWxpemVkIHR5cG9sb2d5IHJhdGhlciB0aGFuIHJlbHlpbmcgb24gZXJyb3JcbiAqIG1lc3NhZ2VzIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGNvcnJlY3QgZXJyb3Igd2FzIGZvdW5kKS5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2UpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9ICdHcmFwaEVycm9yJztcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvciBleHRlbmRzIEdyYXBoRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ0ludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yJztcblxuICAgIC8vIFRoaXMgaXMgVjggc3BlY2lmaWMgdG8gZW5oYW5jZSBzdGFjayByZWFkYWJpbGl0eVxuICAgIGlmICh0eXBlb2YgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UgPT09ICdmdW5jdGlvbicpXG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yXG4gICAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RGb3VuZEdyYXBoRXJyb3IgZXh0ZW5kcyBHcmFwaEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdOb3RGb3VuZEdyYXBoRXJyb3InO1xuXG4gICAgLy8gVGhpcyBpcyBWOCBzcGVjaWZpYyB0byBlbmhhbmNlIHN0YWNrIHJlYWRhYmlsaXR5XG4gICAgaWYgKHR5cGVvZiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIE5vdEZvdW5kR3JhcGhFcnJvci5wcm90b3R5cGUuY29uc3RydWN0b3IpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVc2FnZUdyYXBoRXJyb3IgZXh0ZW5kcyBHcmFwaEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdVc2FnZUdyYXBoRXJyb3InO1xuXG4gICAgLy8gVGhpcyBpcyBWOCBzcGVjaWZpYyB0byBlbmhhbmNlIHN0YWNrIHJlYWRhYmlsaXR5XG4gICAgaWYgKHR5cGVvZiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIFVzYWdlR3JhcGhFcnJvci5wcm90b3R5cGUuY29uc3RydWN0b3IpO1xuICB9XG59XG4iLCAiLyoqXG4gKiBHcmFwaG9sb2d5IEludGVybmFsIERhdGEgQ2xhc3Nlc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKlxuICogSW50ZXJuYWwgY2xhc3NlcyBob3BlZnVsbHkgcmVkdWNlZCB0byBzdHJ1Y3RzIGJ5IGVuZ2luZXMgJiBzdG9yaW5nXG4gKiBuZWNlc3NhcnkgaW5mb3JtYXRpb24gZm9yIG5vZGVzICYgZWRnZXMuXG4gKlxuICogTm90ZSB0aGF0IHRob3NlIGNsYXNzZXMgZG9uJ3QgcmVseSBvbiB0aGUgYGNsYXNzYCBrZXl3b3JkIHRvIGF2b2lkIHNvbWVcbiAqIGNydWZ0IGludHJvZHVjZWQgYnkgbW9zdCBvZiBFUzIwMTUgdHJhbnNwaWxlcnMuXG4gKi9cblxuLyoqXG4gKiBNaXhlZE5vZGVEYXRhIGNsYXNzLlxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyAgICAgLSBUaGUgbm9kZSdzIGtleS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBhdHRyaWJ1dGVzIC0gTm9kZSdzIGF0dHJpYnV0ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBNaXhlZE5vZGVEYXRhKGtleSwgYXR0cmlidXRlcykge1xuICAvLyBBdHRyaWJ1dGVzXG4gIHRoaXMua2V5ID0ga2V5O1xuICB0aGlzLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuXG4gIHRoaXMuY2xlYXIoKTtcbn1cblxuTWl4ZWROb2RlRGF0YS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIERlZ3JlZXNcbiAgdGhpcy5pbkRlZ3JlZSA9IDA7XG4gIHRoaXMub3V0RGVncmVlID0gMDtcbiAgdGhpcy51bmRpcmVjdGVkRGVncmVlID0gMDtcbiAgdGhpcy5kaXJlY3RlZFNlbGZMb29wcyA9IDA7XG4gIHRoaXMudW5kaXJlY3RlZFNlbGZMb29wcyA9IDA7XG5cbiAgLy8gSW5kaWNlc1xuICB0aGlzLmluID0ge307XG4gIHRoaXMub3V0ID0ge307XG4gIHRoaXMudW5kaXJlY3RlZCA9IHt9O1xufTtcblxuLyoqXG4gKiBEaXJlY3RlZE5vZGVEYXRhIGNsYXNzLlxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyAgICAgLSBUaGUgbm9kZSdzIGtleS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBhdHRyaWJ1dGVzIC0gTm9kZSdzIGF0dHJpYnV0ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBEaXJlY3RlZE5vZGVEYXRhKGtleSwgYXR0cmlidXRlcykge1xuICAvLyBBdHRyaWJ1dGVzXG4gIHRoaXMua2V5ID0ga2V5O1xuICB0aGlzLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuXG4gIHRoaXMuY2xlYXIoKTtcbn1cblxuRGlyZWN0ZWROb2RlRGF0YS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIERlZ3JlZXNcbiAgdGhpcy5pbkRlZ3JlZSA9IDA7XG4gIHRoaXMub3V0RGVncmVlID0gMDtcbiAgdGhpcy5kaXJlY3RlZFNlbGZMb29wcyA9IDA7XG5cbiAgLy8gSW5kaWNlc1xuICB0aGlzLmluID0ge307XG4gIHRoaXMub3V0ID0ge307XG59O1xuXG5EaXJlY3RlZE5vZGVEYXRhLnByb3RvdHlwZS51cGdyYWRlVG9NaXhlZCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gRGVncmVlc1xuICB0aGlzLnVuZGlyZWN0ZWREZWdyZWUgPSAwO1xuICB0aGlzLnVuZGlyZWN0ZWRTZWxmTG9vcHMgPSAwO1xuXG4gIC8vIEluZGljZXNcbiAgdGhpcy51bmRpcmVjdGVkID0ge307XG59O1xuXG4vKipcbiAqIFVuZGlyZWN0ZWROb2RlRGF0YSBjbGFzcy5cbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgICAgIC0gVGhlIG5vZGUncyBrZXkuXG4gKiBAcGFyYW0ge29iamVjdH0gYXR0cmlidXRlcyAtIE5vZGUncyBhdHRyaWJ1dGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gVW5kaXJlY3RlZE5vZGVEYXRhKGtleSwgYXR0cmlidXRlcykge1xuICAvLyBBdHRyaWJ1dGVzXG4gIHRoaXMua2V5ID0ga2V5O1xuICB0aGlzLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuXG4gIHRoaXMuY2xlYXIoKTtcbn1cblxuVW5kaXJlY3RlZE5vZGVEYXRhLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gRGVncmVlc1xuICB0aGlzLnVuZGlyZWN0ZWREZWdyZWUgPSAwO1xuICB0aGlzLnVuZGlyZWN0ZWRTZWxmTG9vcHMgPSAwO1xuXG4gIC8vIEluZGljZXNcbiAgdGhpcy51bmRpcmVjdGVkID0ge307XG59O1xuXG5VbmRpcmVjdGVkTm9kZURhdGEucHJvdG90eXBlLnVwZ3JhZGVUb01peGVkID0gZnVuY3Rpb24gKCkge1xuICAvLyBEZWdyZWVzXG4gIHRoaXMuaW5EZWdyZWUgPSAwO1xuICB0aGlzLm91dERlZ3JlZSA9IDA7XG4gIHRoaXMuZGlyZWN0ZWRTZWxmTG9vcHMgPSAwO1xuXG4gIC8vIEluZGljZXNcbiAgdGhpcy5pbiA9IHt9O1xuICB0aGlzLm91dCA9IHt9O1xufTtcblxuLyoqXG4gKiBFZGdlRGF0YSBjbGFzcy5cbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gdW5kaXJlY3RlZCAgIC0gV2hldGhlciB0aGUgZWRnZSBpcyB1bmRpcmVjdGVkLlxuICogQHBhcmFtIHtzdHJpbmd9ICBzdHJpbmcgICAgICAgLSBUaGUgZWRnZSdzIGtleS5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgc291cmNlICAgICAgIC0gU291cmNlIG9mIHRoZSBlZGdlLlxuICogQHBhcmFtIHtzdHJpbmd9ICB0YXJnZXQgICAgICAgLSBUYXJnZXQgb2YgdGhlIGVkZ2UuXG4gKiBAcGFyYW0ge29iamVjdH0gIGF0dHJpYnV0ZXMgICAtIEVkZ2UncyBhdHRyaWJ1dGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRWRnZURhdGEodW5kaXJlY3RlZCwga2V5LCBzb3VyY2UsIHRhcmdldCwgYXR0cmlidXRlcykge1xuICAvLyBBdHRyaWJ1dGVzXG4gIHRoaXMua2V5ID0ga2V5O1xuICB0aGlzLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuICB0aGlzLnVuZGlyZWN0ZWQgPSB1bmRpcmVjdGVkO1xuXG4gIC8vIEV4dHJlbWl0aWVzXG4gIHRoaXMuc291cmNlID0gc291cmNlO1xuICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbn1cbiIsICIvKipcbiAqIEdyYXBob2xvZ3kgSW5kZXhlcyBGdW5jdGlvbnNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKlxuICogQnVuY2ggb2YgZnVuY3Rpb25zIHVzZWQgdG8gY29tcHV0ZSBvciBjbGVhciBpbmRleGVzLlxuICovXG5cbi8qKlxuICogRnVuY3Rpb24gdXBkYXRpbmcgdGhlICdzdHJ1Y3R1cmUnIGluZGV4IHdpdGggdGhlIGdpdmVuIGVkZ2UncyBkYXRhLlxuICogTm90ZSB0aGF0IGluIHRoZSBjYXNlIG9mIHRoZSBtdWx0aSBncmFwaCwgcmVsYXRlZCBlZGdlcyBhcmUgc3RvcmVkIGluIGFcbiAqIHNldCB0aGF0IGlzIHRoZSBzYW1lIGZvciBBIC0+IEIgJiBCIDwtIEEuXG4gKlxuICogQHBhcmFtIHtHcmFwaH0gICAgZ3JhcGggICAgICAtIFRhcmdldCBHcmFwaCBpbnN0YW5jZS5cbiAqIEBwYXJhbSB7RWRnZURhdGF9IGVkZ2VEYXRhICAgLSBBZGRlZCBlZGdlJ3MgZGF0YS5cbiAqIEBwYXJhbSB7Tm9kZURhdGF9IHNvdXJjZURhdGEgLSBTb3VyY2Ugbm9kZSdzIGRhdGEuXG4gKiBAcGFyYW0ge05vZGVEYXRhfSB0YXJnZXREYXRhIC0gVGFyZ2V0IG5vZGUncyBkYXRhLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3RydWN0dXJlSW5kZXgoXG4gIGdyYXBoLFxuICB1bmRpcmVjdGVkLFxuICBlZGdlRGF0YSxcbiAgc291cmNlLFxuICB0YXJnZXQsXG4gIHNvdXJjZURhdGEsXG4gIHRhcmdldERhdGFcbikge1xuICBjb25zdCBtdWx0aSA9IGdyYXBoLm11bHRpO1xuXG4gIGxldCBvdXRLZXkgPSAnb3V0JztcbiAgbGV0IGluS2V5ID0gJ2luJztcblxuICBpZiAodW5kaXJlY3RlZCkgb3V0S2V5ID0gaW5LZXkgPSAndW5kaXJlY3RlZCc7XG5cbiAgbGV0IGFkaiwgY29udGFpbmVyO1xuXG4gIGlmIChtdWx0aSkge1xuICAgIC8vIEhhbmRsaW5nIHNvdXJjZVxuICAgIGFkaiA9IHNvdXJjZURhdGFbb3V0S2V5XTtcbiAgICBjb250YWluZXIgPSBhZGpbdGFyZ2V0XTtcblxuICAgIGlmICh0eXBlb2YgY29udGFpbmVyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgY29udGFpbmVyID0gbmV3IFNldCgpO1xuICAgICAgYWRqW3RhcmdldF0gPSBjb250YWluZXI7XG4gICAgfVxuXG4gICAgY29udGFpbmVyLmFkZChlZGdlRGF0YSk7XG5cbiAgICAvLyBJZiBzZWxmTG9vcCwgd2UgYnJlYWsgaGVyZVxuICAgIGlmIChzb3VyY2UgPT09IHRhcmdldCAmJiB1bmRpcmVjdGVkKSByZXR1cm47XG5cbiAgICAvLyBIYW5kbGluZyB0YXJnZXQgKHdlIHdvbid0IGFkZCB0aGUgZWRnZSBiZWNhdXNlIGl0IHdhcyBhbHJlYWR5IHRha2VuXG4gICAgLy8gY2FyZSBvZiB3aXRoIHNvdXJjZSBhYm92ZSlcbiAgICBhZGogPSB0YXJnZXREYXRhW2luS2V5XTtcbiAgICBpZiAodHlwZW9mIGFkaltzb3VyY2VdID09PSAndW5kZWZpbmVkJykgYWRqW3NvdXJjZV0gPSBjb250YWluZXI7XG4gIH0gZWxzZSB7XG4gICAgLy8gSGFuZGxpbmcgc291cmNlXG4gICAgc291cmNlRGF0YVtvdXRLZXldW3RhcmdldF0gPSBlZGdlRGF0YTtcblxuICAgIC8vIElmIHNlbGZMb29wLCB3ZSBicmVhayBoZXJlXG4gICAgaWYgKHNvdXJjZSA9PT0gdGFyZ2V0ICYmIHVuZGlyZWN0ZWQpIHJldHVybjtcblxuICAgIC8vIEhhbmRsaW5nIHRhcmdldFxuICAgIHRhcmdldERhdGFbaW5LZXldW3NvdXJjZV0gPSBlZGdlRGF0YTtcbiAgfVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGNsZWFyaW5nIHRoZSAnc3RydWN0dXJlJyBpbmRleCBkYXRhIHJlbGF0ZWQgdG8gdGhlIGdpdmVuIGVkZ2UuXG4gKlxuICogQHBhcmFtIHtHcmFwaH0gICAgZ3JhcGggICAgLSBUYXJnZXQgR3JhcGggaW5zdGFuY2UuXG4gKiBAcGFyYW0ge0VkZ2VEYXRhfSBlZGdlRGF0YSAtIERyb3BwZWQgZWRnZSdzIGRhdGEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckVkZ2VGcm9tU3RydWN0dXJlSW5kZXgoZ3JhcGgsIHVuZGlyZWN0ZWQsIGVkZ2VEYXRhKSB7XG4gIGNvbnN0IG11bHRpID0gZ3JhcGgubXVsdGk7XG5cbiAgY29uc3Qge3NvdXJjZTogc291cmNlRGF0YSwgdGFyZ2V0OiB0YXJnZXREYXRhfSA9IGVkZ2VEYXRhO1xuXG4gIGNvbnN0IHNvdXJjZSA9IHNvdXJjZURhdGEua2V5LFxuICAgIHRhcmdldCA9IHRhcmdldERhdGEua2V5O1xuXG4gIC8vIE5PVEU6IHNpbmNlIHRoZSBlZGdlIHNldCBpcyB0aGUgc2FtZSBmb3Igc291cmNlICYgdGFyZ2V0LCB3ZSBjYW4gb25seVxuICAvLyBhZmZlY3Qgc291cmNlXG4gIGNvbnN0IG91dEtleSA9IHVuZGlyZWN0ZWQgPyAndW5kaXJlY3RlZCcgOiAnb3V0JyxcbiAgICBzb3VyY2VJbmRleCA9IHNvdXJjZURhdGFbb3V0S2V5XTtcblxuICBjb25zdCBpbktleSA9IHVuZGlyZWN0ZWQgPyAndW5kaXJlY3RlZCcgOiAnaW4nO1xuXG4gIGlmICh0YXJnZXQgaW4gc291cmNlSW5kZXgpIHtcbiAgICBpZiAobXVsdGkpIHtcbiAgICAgIGNvbnN0IHNldCA9IHNvdXJjZUluZGV4W3RhcmdldF07XG5cbiAgICAgIGlmIChzZXQuc2l6ZSA9PT0gMSkge1xuICAgICAgICBkZWxldGUgc291cmNlSW5kZXhbdGFyZ2V0XTtcbiAgICAgICAgZGVsZXRlIHRhcmdldERhdGFbaW5LZXldW3NvdXJjZV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXQuZGVsZXRlKGVkZ2VEYXRhKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgZGVsZXRlIHNvdXJjZUluZGV4W3RhcmdldF07XG4gIH1cblxuICBpZiAobXVsdGkpIHJldHVybjtcblxuICBjb25zdCB0YXJnZXRJbmRleCA9IHRhcmdldERhdGFbaW5LZXldO1xuXG4gIGRlbGV0ZSB0YXJnZXRJbmRleFtzb3VyY2VdO1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGNsZWFyaW5nIHRoZSB3aG9sZSAnc3RydWN0dXJlJyBpbmRleC5cbiAqXG4gKiBAcGFyYW0ge0dyYXBofSBncmFwaCAtIFRhcmdldCBHcmFwaCBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyU3RydWN0dXJlSW5kZXgoZ3JhcGgpIHtcbiAgY29uc3QgaXRlcmF0b3IgPSBncmFwaC5fbm9kZXMudmFsdWVzKCk7XG5cbiAgbGV0IHN0ZXA7XG5cbiAgd2hpbGUgKCgoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSksIHN0ZXAuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICBzdGVwLnZhbHVlLmNsZWFyKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBGdW5jdGlvbiB1c2VkIHRvIHVwZ3JhZGUgYSBzaW1wbGUgYHN0cnVjdHVyZWAgaW5kZXggdG8gYSBtdWx0aSBvbi5cbiAqXG4gKiBAcGFyYW0ge0dyYXBofSAgZ3JhcGggLSBUYXJnZXQgR3JhcGggaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGdyYWRlU3RydWN0dXJlSW5kZXhUb011bHRpKGdyYXBoKSB7XG4gIGdyYXBoLl9ub2Rlcy5mb3JFYWNoKChkYXRhLCBub2RlKSA9PiB7XG4gICAgLy8gRGlyZWN0ZWRcbiAgICBpZiAoZGF0YS5vdXQpIHtcbiAgICAgIGZvciAoY29uc3QgbmVpZ2hib3IgaW4gZGF0YS5vdXQpIHtcbiAgICAgICAgY29uc3QgZWRnZXMgPSBuZXcgU2V0KCk7XG4gICAgICAgIGVkZ2VzLmFkZChkYXRhLm91dFtuZWlnaGJvcl0pO1xuICAgICAgICBkYXRhLm91dFtuZWlnaGJvcl0gPSBlZGdlcztcbiAgICAgICAgZ3JhcGguX25vZGVzLmdldChuZWlnaGJvcikuaW5bbm9kZV0gPSBlZGdlcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVbmRpcmVjdGVkXG4gICAgaWYgKGRhdGEudW5kaXJlY3RlZCkge1xuICAgICAgZm9yIChjb25zdCBuZWlnaGJvciBpbiBkYXRhLnVuZGlyZWN0ZWQpIHtcbiAgICAgICAgaWYgKG5laWdoYm9yID4gbm9kZSkgY29udGludWU7XG5cbiAgICAgICAgY29uc3QgZWRnZXMgPSBuZXcgU2V0KCk7XG4gICAgICAgIGVkZ2VzLmFkZChkYXRhLnVuZGlyZWN0ZWRbbmVpZ2hib3JdKTtcbiAgICAgICAgZGF0YS51bmRpcmVjdGVkW25laWdoYm9yXSA9IGVkZ2VzO1xuICAgICAgICBncmFwaC5fbm9kZXMuZ2V0KG5laWdoYm9yKS51bmRpcmVjdGVkW25vZGVdID0gZWRnZXM7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cbiIsICIvKipcbiAqIEdyYXBob2xvZ3kgTm9kZSBBdHRyaWJ1dGVzIG1ldGhvZHNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKi9cbmltcG9ydCB7YXNzaWduLCBpc1BsYWluT2JqZWN0fSBmcm9tICcuLi91dGlscyc7XG5cbmltcG9ydCB7SW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IsIE5vdEZvdW5kR3JhcGhFcnJvcn0gZnJvbSAnLi4vZXJyb3JzJztcblxuY29uc3QgTk9ERSA9IDA7XG5jb25zdCBTT1VSQ0UgPSAxO1xuY29uc3QgVEFSR0VUID0gMjtcbmNvbnN0IE9QUE9TSVRFID0gMztcblxuZnVuY3Rpb24gZmluZFJlbGV2YW50Tm9kZURhdGEoXG4gIGdyYXBoLFxuICBtZXRob2QsXG4gIG1vZGUsXG4gIG5vZGVPckVkZ2UsXG4gIG5hbWVPckVkZ2UsXG4gIGFkZDEsXG4gIGFkZDJcbikge1xuICBsZXQgbm9kZURhdGEsIGVkZ2VEYXRhLCBhcmcxLCBhcmcyO1xuXG4gIG5vZGVPckVkZ2UgPSAnJyArIG5vZGVPckVkZ2U7XG5cbiAgaWYgKG1vZGUgPT09IE5PREUpIHtcbiAgICBub2RlRGF0YSA9IGdyYXBoLl9ub2Rlcy5nZXQobm9kZU9yRWRnZSk7XG5cbiAgICBpZiAoIW5vZGVEYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlT3JFZGdlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBhcmcxID0gbmFtZU9yRWRnZTtcbiAgICBhcmcyID0gYWRkMTtcbiAgfSBlbHNlIGlmIChtb2RlID09PSBPUFBPU0lURSkge1xuICAgIG5hbWVPckVkZ2UgPSAnJyArIG5hbWVPckVkZ2U7XG5cbiAgICBlZGdlRGF0YSA9IGdyYXBoLl9lZGdlcy5nZXQobmFtZU9yRWRnZSk7XG5cbiAgICBpZiAoIWVkZ2VEYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtuYW1lT3JFZGdlfVwiIGVkZ2UgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBjb25zdCBzb3VyY2UgPSBlZGdlRGF0YS5zb3VyY2Uua2V5O1xuICAgIGNvbnN0IHRhcmdldCA9IGVkZ2VEYXRhLnRhcmdldC5rZXk7XG5cbiAgICBpZiAobm9kZU9yRWRnZSA9PT0gc291cmNlKSB7XG4gICAgICBub2RlRGF0YSA9IGVkZ2VEYXRhLnRhcmdldDtcbiAgICB9IGVsc2UgaWYgKG5vZGVPckVkZ2UgPT09IHRhcmdldCkge1xuICAgICAgbm9kZURhdGEgPSBlZGdlRGF0YS5zb3VyY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IHRoZSBcIiR7bm9kZU9yRWRnZX1cIiBub2RlIGlzIG5vdCBhdHRhY2hlZCB0byB0aGUgXCIke25hbWVPckVkZ2V9XCIgZWRnZSAoJHtzb3VyY2V9LCAke3RhcmdldH0pLmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgYXJnMSA9IGFkZDE7XG4gICAgYXJnMiA9IGFkZDI7XG4gIH0gZWxzZSB7XG4gICAgZWRnZURhdGEgPSBncmFwaC5fZWRnZXMuZ2V0KG5vZGVPckVkZ2UpO1xuXG4gICAgaWYgKCFlZGdlRGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7bm9kZU9yRWRnZX1cIiBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgaWYgKG1vZGUgPT09IFNPVVJDRSkge1xuICAgICAgbm9kZURhdGEgPSBlZGdlRGF0YS5zb3VyY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGVEYXRhID0gZWRnZURhdGEudGFyZ2V0O1xuICAgIH1cblxuICAgIGFyZzEgPSBuYW1lT3JFZGdlO1xuICAgIGFyZzIgPSBhZGQxO1xuICB9XG5cbiAgcmV0dXJuIFtub2RlRGF0YSwgYXJnMSwgYXJnMl07XG59XG5cbmZ1bmN0aW9uIGF0dGFjaE5vZGVBdHRyaWJ1dGVHZXR0ZXIoQ2xhc3MsIG1ldGhvZCwgbW9kZSkge1xuICBDbGFzcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIChub2RlT3JFZGdlLCBuYW1lT3JFZGdlLCBhZGQxKSB7XG4gICAgY29uc3QgW2RhdGEsIG5hbWVdID0gZmluZFJlbGV2YW50Tm9kZURhdGEoXG4gICAgICB0aGlzLFxuICAgICAgbWV0aG9kLFxuICAgICAgbW9kZSxcbiAgICAgIG5vZGVPckVkZ2UsXG4gICAgICBuYW1lT3JFZGdlLFxuICAgICAgYWRkMVxuICAgICk7XG5cbiAgICByZXR1cm4gZGF0YS5hdHRyaWJ1dGVzW25hbWVdO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRhY2hOb2RlQXR0cmlidXRlc0dldHRlcihDbGFzcywgbWV0aG9kLCBtb2RlKSB7XG4gIENsYXNzLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24gKG5vZGVPckVkZ2UsIG5hbWVPckVkZ2UpIHtcbiAgICBjb25zdCBbZGF0YV0gPSBmaW5kUmVsZXZhbnROb2RlRGF0YShcbiAgICAgIHRoaXMsXG4gICAgICBtZXRob2QsXG4gICAgICBtb2RlLFxuICAgICAgbm9kZU9yRWRnZSxcbiAgICAgIG5hbWVPckVkZ2VcbiAgICApO1xuXG4gICAgcmV0dXJuIGRhdGEuYXR0cmlidXRlcztcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0YWNoTm9kZUF0dHJpYnV0ZUNoZWNrZXIoQ2xhc3MsIG1ldGhvZCwgbW9kZSkge1xuICBDbGFzcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIChub2RlT3JFZGdlLCBuYW1lT3JFZGdlLCBhZGQxKSB7XG4gICAgY29uc3QgW2RhdGEsIG5hbWVdID0gZmluZFJlbGV2YW50Tm9kZURhdGEoXG4gICAgICB0aGlzLFxuICAgICAgbWV0aG9kLFxuICAgICAgbW9kZSxcbiAgICAgIG5vZGVPckVkZ2UsXG4gICAgICBuYW1lT3JFZGdlLFxuICAgICAgYWRkMVxuICAgICk7XG5cbiAgICByZXR1cm4gZGF0YS5hdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KG5hbWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRhY2hOb2RlQXR0cmlidXRlU2V0dGVyKENsYXNzLCBtZXRob2QsIG1vZGUpIHtcbiAgQ2xhc3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiAobm9kZU9yRWRnZSwgbmFtZU9yRWRnZSwgYWRkMSwgYWRkMikge1xuICAgIGNvbnN0IFtkYXRhLCBuYW1lLCB2YWx1ZV0gPSBmaW5kUmVsZXZhbnROb2RlRGF0YShcbiAgICAgIHRoaXMsXG4gICAgICBtZXRob2QsXG4gICAgICBtb2RlLFxuICAgICAgbm9kZU9yRWRnZSxcbiAgICAgIG5hbWVPckVkZ2UsXG4gICAgICBhZGQxLFxuICAgICAgYWRkMlxuICAgICk7XG5cbiAgICBkYXRhLmF0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZTtcblxuICAgIC8vIEVtaXR0aW5nXG4gICAgdGhpcy5lbWl0KCdub2RlQXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICBrZXk6IGRhdGEua2V5LFxuICAgICAgdHlwZTogJ3NldCcsXG4gICAgICBhdHRyaWJ1dGVzOiBkYXRhLmF0dHJpYnV0ZXMsXG4gICAgICBuYW1lXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0YWNoTm9kZUF0dHJpYnV0ZVVwZGF0ZXIoQ2xhc3MsIG1ldGhvZCwgbW9kZSkge1xuICBDbGFzcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIChub2RlT3JFZGdlLCBuYW1lT3JFZGdlLCBhZGQxLCBhZGQyKSB7XG4gICAgY29uc3QgW2RhdGEsIG5hbWUsIHVwZGF0ZXJdID0gZmluZFJlbGV2YW50Tm9kZURhdGEoXG4gICAgICB0aGlzLFxuICAgICAgbWV0aG9kLFxuICAgICAgbW9kZSxcbiAgICAgIG5vZGVPckVkZ2UsXG4gICAgICBuYW1lT3JFZGdlLFxuICAgICAgYWRkMSxcbiAgICAgIGFkZDJcbiAgICApO1xuXG4gICAgaWYgKHR5cGVvZiB1cGRhdGVyICE9PSAnZnVuY3Rpb24nKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiB1cGRhdGVyIHNob3VsZCBiZSBhIGZ1bmN0aW9uLmBcbiAgICAgICk7XG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gZGF0YS5hdHRyaWJ1dGVzO1xuICAgIGNvbnN0IHZhbHVlID0gdXBkYXRlcihhdHRyaWJ1dGVzW25hbWVdKTtcblxuICAgIGF0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZTtcblxuICAgIC8vIEVtaXR0aW5nXG4gICAgdGhpcy5lbWl0KCdub2RlQXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICBrZXk6IGRhdGEua2V5LFxuICAgICAgdHlwZTogJ3NldCcsXG4gICAgICBhdHRyaWJ1dGVzOiBkYXRhLmF0dHJpYnV0ZXMsXG4gICAgICBuYW1lXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0YWNoTm9kZUF0dHJpYnV0ZVJlbW92ZXIoQ2xhc3MsIG1ldGhvZCwgbW9kZSkge1xuICBDbGFzcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIChub2RlT3JFZGdlLCBuYW1lT3JFZGdlLCBhZGQxKSB7XG4gICAgY29uc3QgW2RhdGEsIG5hbWVdID0gZmluZFJlbGV2YW50Tm9kZURhdGEoXG4gICAgICB0aGlzLFxuICAgICAgbWV0aG9kLFxuICAgICAgbW9kZSxcbiAgICAgIG5vZGVPckVkZ2UsXG4gICAgICBuYW1lT3JFZGdlLFxuICAgICAgYWRkMVxuICAgICk7XG5cbiAgICBkZWxldGUgZGF0YS5hdHRyaWJ1dGVzW25hbWVdO1xuXG4gICAgLy8gRW1pdHRpbmdcbiAgICB0aGlzLmVtaXQoJ25vZGVBdHRyaWJ1dGVzVXBkYXRlZCcsIHtcbiAgICAgIGtleTogZGF0YS5rZXksXG4gICAgICB0eXBlOiAncmVtb3ZlJyxcbiAgICAgIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlcyxcbiAgICAgIG5hbWVcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRhY2hOb2RlQXR0cmlidXRlc1JlcGxhY2VyKENsYXNzLCBtZXRob2QsIG1vZGUpIHtcbiAgQ2xhc3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiAobm9kZU9yRWRnZSwgbmFtZU9yRWRnZSwgYWRkMSkge1xuICAgIGNvbnN0IFtkYXRhLCBhdHRyaWJ1dGVzXSA9IGZpbmRSZWxldmFudE5vZGVEYXRhKFxuICAgICAgdGhpcyxcbiAgICAgIG1ldGhvZCxcbiAgICAgIG1vZGUsXG4gICAgICBub2RlT3JFZGdlLFxuICAgICAgbmFtZU9yRWRnZSxcbiAgICAgIGFkZDFcbiAgICApO1xuXG4gICAgaWYgKCFpc1BsYWluT2JqZWN0KGF0dHJpYnV0ZXMpKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBwcm92aWRlZCBhdHRyaWJ1dGVzIGFyZSBub3QgYSBwbGFpbiBvYmplY3QuYFxuICAgICAgKTtcblxuICAgIGRhdGEuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7XG5cbiAgICAvLyBFbWl0dGluZ1xuICAgIHRoaXMuZW1pdCgnbm9kZUF0dHJpYnV0ZXNVcGRhdGVkJywge1xuICAgICAga2V5OiBkYXRhLmtleSxcbiAgICAgIHR5cGU6ICdyZXBsYWNlJyxcbiAgICAgIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlc1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dGFjaE5vZGVBdHRyaWJ1dGVzTWVyZ2VyKENsYXNzLCBtZXRob2QsIG1vZGUpIHtcbiAgQ2xhc3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiAobm9kZU9yRWRnZSwgbmFtZU9yRWRnZSwgYWRkMSkge1xuICAgIGNvbnN0IFtkYXRhLCBhdHRyaWJ1dGVzXSA9IGZpbmRSZWxldmFudE5vZGVEYXRhKFxuICAgICAgdGhpcyxcbiAgICAgIG1ldGhvZCxcbiAgICAgIG1vZGUsXG4gICAgICBub2RlT3JFZGdlLFxuICAgICAgbmFtZU9yRWRnZSxcbiAgICAgIGFkZDFcbiAgICApO1xuXG4gICAgaWYgKCFpc1BsYWluT2JqZWN0KGF0dHJpYnV0ZXMpKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBwcm92aWRlZCBhdHRyaWJ1dGVzIGFyZSBub3QgYSBwbGFpbiBvYmplY3QuYFxuICAgICAgKTtcblxuICAgIGFzc2lnbihkYXRhLmF0dHJpYnV0ZXMsIGF0dHJpYnV0ZXMpO1xuXG4gICAgLy8gRW1pdHRpbmdcbiAgICB0aGlzLmVtaXQoJ25vZGVBdHRyaWJ1dGVzVXBkYXRlZCcsIHtcbiAgICAgIGtleTogZGF0YS5rZXksXG4gICAgICB0eXBlOiAnbWVyZ2UnLFxuICAgICAgYXR0cmlidXRlczogZGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgZGF0YTogYXR0cmlidXRlc1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dGFjaE5vZGVBdHRyaWJ1dGVzVXBkYXRlcihDbGFzcywgbWV0aG9kLCBtb2RlKSB7XG4gIENsYXNzLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24gKG5vZGVPckVkZ2UsIG5hbWVPckVkZ2UsIGFkZDEpIHtcbiAgICBjb25zdCBbZGF0YSwgdXBkYXRlcl0gPSBmaW5kUmVsZXZhbnROb2RlRGF0YShcbiAgICAgIHRoaXMsXG4gICAgICBtZXRob2QsXG4gICAgICBtb2RlLFxuICAgICAgbm9kZU9yRWRnZSxcbiAgICAgIG5hbWVPckVkZ2UsXG4gICAgICBhZGQxXG4gICAgKTtcblxuICAgIGlmICh0eXBlb2YgdXBkYXRlciAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogcHJvdmlkZWQgdXBkYXRlciBpcyBub3QgYSBmdW5jdGlvbi5gXG4gICAgICApO1xuXG4gICAgZGF0YS5hdHRyaWJ1dGVzID0gdXBkYXRlcihkYXRhLmF0dHJpYnV0ZXMpO1xuXG4gICAgLy8gRW1pdHRpbmdcbiAgICB0aGlzLmVtaXQoJ25vZGVBdHRyaWJ1dGVzVXBkYXRlZCcsIHtcbiAgICAgIGtleTogZGF0YS5rZXksXG4gICAgICB0eXBlOiAndXBkYXRlJyxcbiAgICAgIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlc1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59XG5cbi8qKlxuICogTGlzdCBvZiBtZXRob2RzIHRvIGF0dGFjaC5cbiAqL1xuY29uc3QgTk9ERV9BVFRSSUJVVEVTX01FVEhPRFMgPSBbXG4gIHtcbiAgICBuYW1lOiBlbGVtZW50ID0+IGBnZXQke2VsZW1lbnR9QXR0cmlidXRlYCxcbiAgICBhdHRhY2hlcjogYXR0YWNoTm9kZUF0dHJpYnV0ZUdldHRlclxuICB9LFxuICB7XG4gICAgbmFtZTogZWxlbWVudCA9PiBgZ2V0JHtlbGVtZW50fUF0dHJpYnV0ZXNgLFxuICAgIGF0dGFjaGVyOiBhdHRhY2hOb2RlQXR0cmlidXRlc0dldHRlclxuICB9LFxuICB7XG4gICAgbmFtZTogZWxlbWVudCA9PiBgaGFzJHtlbGVtZW50fUF0dHJpYnV0ZWAsXG4gICAgYXR0YWNoZXI6IGF0dGFjaE5vZGVBdHRyaWJ1dGVDaGVja2VyXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBlbGVtZW50ID0+IGBzZXQke2VsZW1lbnR9QXR0cmlidXRlYCxcbiAgICBhdHRhY2hlcjogYXR0YWNoTm9kZUF0dHJpYnV0ZVNldHRlclxuICB9LFxuICB7XG4gICAgbmFtZTogZWxlbWVudCA9PiBgdXBkYXRlJHtlbGVtZW50fUF0dHJpYnV0ZWAsXG4gICAgYXR0YWNoZXI6IGF0dGFjaE5vZGVBdHRyaWJ1dGVVcGRhdGVyXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBlbGVtZW50ID0+IGByZW1vdmUke2VsZW1lbnR9QXR0cmlidXRlYCxcbiAgICBhdHRhY2hlcjogYXR0YWNoTm9kZUF0dHJpYnV0ZVJlbW92ZXJcbiAgfSxcbiAge1xuICAgIG5hbWU6IGVsZW1lbnQgPT4gYHJlcGxhY2Uke2VsZW1lbnR9QXR0cmlidXRlc2AsXG4gICAgYXR0YWNoZXI6IGF0dGFjaE5vZGVBdHRyaWJ1dGVzUmVwbGFjZXJcbiAgfSxcbiAge1xuICAgIG5hbWU6IGVsZW1lbnQgPT4gYG1lcmdlJHtlbGVtZW50fUF0dHJpYnV0ZXNgLFxuICAgIGF0dGFjaGVyOiBhdHRhY2hOb2RlQXR0cmlidXRlc01lcmdlclxuICB9LFxuICB7XG4gICAgbmFtZTogZWxlbWVudCA9PiBgdXBkYXRlJHtlbGVtZW50fUF0dHJpYnV0ZXNgLFxuICAgIGF0dGFjaGVyOiBhdHRhY2hOb2RlQXR0cmlidXRlc1VwZGF0ZXJcbiAgfVxuXTtcblxuLyoqXG4gKiBBdHRhY2ggZXZlcnkgYXR0cmlidXRlcy1yZWxhdGVkIG1ldGhvZHMgdG8gYSBHcmFwaCBjbGFzcy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBHcmFwaCAtIFRhcmdldCBjbGFzcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXR0YWNoTm9kZUF0dHJpYnV0ZXNNZXRob2RzKEdyYXBoKSB7XG4gIE5PREVfQVRUUklCVVRFU19NRVRIT0RTLmZvckVhY2goZnVuY3Rpb24gKHtuYW1lLCBhdHRhY2hlcn0pIHtcbiAgICAvLyBGb3Igbm9kZXNcbiAgICBhdHRhY2hlcihHcmFwaCwgbmFtZSgnTm9kZScpLCBOT0RFKTtcblxuICAgIC8vIEZvciBzb3VyY2VzXG4gICAgYXR0YWNoZXIoR3JhcGgsIG5hbWUoJ1NvdXJjZScpLCBTT1VSQ0UpO1xuXG4gICAgLy8gRm9yIHRhcmdldHNcbiAgICBhdHRhY2hlcihHcmFwaCwgbmFtZSgnVGFyZ2V0JyksIFRBUkdFVCk7XG5cbiAgICAvLyBGb3Igb3Bwb3NpdGVzXG4gICAgYXR0YWNoZXIoR3JhcGgsIG5hbWUoJ09wcG9zaXRlJyksIE9QUE9TSVRFKTtcbiAgfSk7XG59XG4iLCAiLyoqXG4gKiBHcmFwaG9sb2d5IEVkZ2UgQXR0cmlidXRlcyBtZXRob2RzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICovXG5pbXBvcnQge2Fzc2lnbiwgaXNQbGFpbk9iamVjdCwgZ2V0TWF0Y2hpbmdFZGdlfSBmcm9tICcuLi91dGlscyc7XG5cbmltcG9ydCB7XG4gIEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yLFxuICBOb3RGb3VuZEdyYXBoRXJyb3IsXG4gIFVzYWdlR3JhcGhFcnJvclxufSBmcm9tICcuLi9lcnJvcnMnO1xuXG4vKipcbiAqIEF0dGFjaCBhbiBhdHRyaWJ1dGUgZ2V0dGVyIG1ldGhvZCBvbnRvIHRoZSBwcm92aWRlZCBjbGFzcy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzcyAgICAgICAgIC0gVGFyZ2V0IGNsYXNzLlxuICogQHBhcmFtIHtzdHJpbmd9ICAgbWV0aG9kICAgICAgICAtIE1ldGhvZCBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9ICAgdHlwZSAgICAgICAgICAtIFR5cGUgb2YgdGhlIGVkZ2UgdG8gZmluZC5cbiAqL1xuZnVuY3Rpb24gYXR0YWNoRWRnZUF0dHJpYnV0ZUdldHRlcihDbGFzcywgbWV0aG9kLCB0eXBlKSB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlc2lyZWQgYXR0cmlidXRlIGZvciB0aGUgZ2l2ZW4gZWxlbWVudCAobm9kZSBvciBlZGdlKS5cbiAgICpcbiAgICogQXJpdHkgMjpcbiAgICogQHBhcmFtICB7YW55fSAgICBlbGVtZW50IC0gVGFyZ2V0IGVsZW1lbnQuXG4gICAqIEBwYXJhbSAge3N0cmluZ30gbmFtZSAgICAtIEF0dHJpYnV0ZSdzIG5hbWUuXG4gICAqXG4gICAqIEFyaXR5IDMgKG9ubHkgZm9yIGVkZ2VzKTpcbiAgICogQHBhcmFtICB7YW55fSAgICAgc291cmNlIC0gU291cmNlIGVsZW1lbnQuXG4gICAqIEBwYXJhbSAge2FueX0gICAgIHRhcmdldCAtIFRhcmdldCBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHtzdHJpbmd9ICBuYW1lICAgLSBBdHRyaWJ1dGUncyBuYW1lLlxuICAgKlxuICAgKiBAcmV0dXJuIHttaXhlZH0gICAgICAgICAgLSBUaGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdG9vIG1hbnkgYXJndW1lbnRzIGFyZSBwcm92aWRlZC5cbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiBhbnkgb2YgdGhlIGVsZW1lbnRzIGlzIG5vdCBmb3VuZC5cbiAgICovXG4gIENsYXNzLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24gKGVsZW1lbnQsIG5hbWUpIHtcbiAgICBsZXQgZGF0YTtcblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICdtaXhlZCcgJiYgdHlwZSAhPT0gJ21peGVkJyAmJiB0eXBlICE9PSB0aGlzLnR5cGUpXG4gICAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjYW5ub3QgZmluZCB0aGlzIHR5cGUgb2YgZWRnZXMgaW4geW91ciAke3RoaXMudHlwZX0gZ3JhcGguYFxuICAgICAgKTtcblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikge1xuICAgICAgaWYgKHRoaXMubXVsdGkpXG4gICAgICAgIHRocm93IG5ldyBVc2FnZUdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY2Fubm90IHVzZSBhIHtzb3VyY2UsdGFyZ2V0fSBjb21ibyB3aGVuIGFza2luZyBhYm91dCBhbiBlZGdlJ3MgYXR0cmlidXRlcyBpbiBhIE11bHRpR3JhcGggc2luY2Ugd2UgY2Fubm90IGluZmVyIHRoZSBvbmUgeW91IHdhbnQgaW5mb3JtYXRpb24gYWJvdXQuYFxuICAgICAgICApO1xuXG4gICAgICBjb25zdCBzb3VyY2UgPSAnJyArIGVsZW1lbnQsXG4gICAgICAgIHRhcmdldCA9ICcnICsgbmFtZTtcblxuICAgICAgbmFtZSA9IGFyZ3VtZW50c1syXTtcblxuICAgICAgZGF0YSA9IGdldE1hdGNoaW5nRWRnZSh0aGlzLCBzb3VyY2UsIHRhcmdldCwgdHlwZSk7XG5cbiAgICAgIGlmICghZGF0YSlcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjb3VsZCBub3QgZmluZCBhbiBlZGdlIGZvciB0aGUgZ2l2ZW4gcGF0aCAoXCIke3NvdXJjZX1cIiAtIFwiJHt0YXJnZXR9XCIpLmBcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudCA9ICcnICsgZWxlbWVudDtcbiAgICAgIGRhdGEgPSB0aGlzLl9lZGdlcy5nZXQoZWxlbWVudCk7XG5cbiAgICAgIGlmICghZGF0YSlcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VsZW1lbnR9XCIgZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmICh0eXBlICE9PSAnbWl4ZWQnICYmIGRhdGEudW5kaXJlY3RlZCAhPT0gKHR5cGUgPT09ICd1bmRpcmVjdGVkJykpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VsZW1lbnR9XCIgJHt0eXBlfSBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgcmV0dXJuIGRhdGEuYXR0cmlidXRlc1tuYW1lXTtcbiAgfTtcbn1cblxuLyoqXG4gKiBBdHRhY2ggYW4gYXR0cmlidXRlcyBnZXR0ZXIgbWV0aG9kIG9udG8gdGhlIHByb3ZpZGVkIGNsYXNzLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IENsYXNzICAgICAgIC0gVGFyZ2V0IGNsYXNzLlxuICogQHBhcmFtIHtzdHJpbmd9ICAgbWV0aG9kICAgICAgLSBNZXRob2QgbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgIHR5cGUgICAgICAgIC0gVHlwZSBvZiB0aGUgZWRnZSB0byBmaW5kLlxuICovXG5mdW5jdGlvbiBhdHRhY2hFZGdlQXR0cmlidXRlc0dldHRlcihDbGFzcywgbWV0aG9kLCB0eXBlKSB7XG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYWxsIHRoZSB0YXJnZXQgZWxlbWVudCdzIGF0dHJpYnV0ZXMuXG4gICAqXG4gICAqIEFyaXR5IDI6XG4gICAqIEBwYXJhbSAge2FueX0gICAgZWxlbWVudCAtIFRhcmdldCBlbGVtZW50LlxuICAgKlxuICAgKiBBcml0eSAzIChvbmx5IGZvciBlZGdlcyk6XG4gICAqIEBwYXJhbSAge2FueX0gICAgIHNvdXJjZSAtIFNvdXJjZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICB0YXJnZXQgLSBUYXJnZXQgZWxlbWVudC5cbiAgICpcbiAgICogQHJldHVybiB7b2JqZWN0fSAgICAgICAgICAtIFRoZSBlbGVtZW50J3MgYXR0cmlidXRlcy5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0b28gbWFueSBhcmd1bWVudHMgYXJlIHByb3ZpZGVkLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIGFueSBvZiB0aGUgZWxlbWVudHMgaXMgbm90IGZvdW5kLlxuICAgKi9cbiAgQ2xhc3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIGxldCBkYXRhO1xuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ21peGVkJyAmJiB0eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09IHRoaXMudHlwZSlcbiAgICAgIHRocm93IG5ldyBVc2FnZUdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNhbm5vdCBmaW5kIHRoaXMgdHlwZSBvZiBlZGdlcyBpbiB5b3VyICR7dGhpcy50eXBlfSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aSlcbiAgICAgICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjYW5ub3QgdXNlIGEge3NvdXJjZSx0YXJnZXR9IGNvbWJvIHdoZW4gYXNraW5nIGFib3V0IGFuIGVkZ2UncyBhdHRyaWJ1dGVzIGluIGEgTXVsdGlHcmFwaCBzaW5jZSB3ZSBjYW5ub3QgaW5mZXIgdGhlIG9uZSB5b3Ugd2FudCBpbmZvcm1hdGlvbiBhYm91dC5gXG4gICAgICAgICk7XG5cbiAgICAgIGNvbnN0IHNvdXJjZSA9ICcnICsgZWxlbWVudCxcbiAgICAgICAgdGFyZ2V0ID0gJycgKyBhcmd1bWVudHNbMV07XG5cbiAgICAgIGRhdGEgPSBnZXRNYXRjaGluZ0VkZ2UodGhpcywgc291cmNlLCB0YXJnZXQsIHR5cGUpO1xuXG4gICAgICBpZiAoIWRhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgYW4gZWRnZSBmb3IgdGhlIGdpdmVuIHBhdGggKFwiJHtzb3VyY2V9XCIgLSBcIiR7dGFyZ2V0fVwiKS5gXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnQgPSAnJyArIGVsZW1lbnQ7XG4gICAgICBkYXRhID0gdGhpcy5fZWRnZXMuZ2V0KGVsZW1lbnQpO1xuXG4gICAgICBpZiAoIWRhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtlbGVtZW50fVwiIGVkZ2UgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZSAhPT0gJ21peGVkJyAmJiBkYXRhLnVuZGlyZWN0ZWQgIT09ICh0eXBlID09PSAndW5kaXJlY3RlZCcpKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtlbGVtZW50fVwiICR7dHlwZX0gZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIHJldHVybiBkYXRhLmF0dHJpYnV0ZXM7XG4gIH07XG59XG5cbi8qKlxuICogQXR0YWNoIGFuIGF0dHJpYnV0ZSBjaGVja2VyIG1ldGhvZCBvbnRvIHRoZSBwcm92aWRlZCBjbGFzcy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzcyAgICAgICAtIFRhcmdldCBjbGFzcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgIG1ldGhvZCAgICAgIC0gTWV0aG9kIG5hbWUuXG4gKiBAcGFyYW0ge3N0cmluZ30gICB0eXBlICAgICAgICAtIFR5cGUgb2YgdGhlIGVkZ2UgdG8gZmluZC5cbiAqL1xuZnVuY3Rpb24gYXR0YWNoRWRnZUF0dHJpYnV0ZUNoZWNrZXIoQ2xhc3MsIG1ldGhvZCwgdHlwZSkge1xuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGRlc2lyZWQgYXR0cmlidXRlIGlzIHNldCBmb3IgdGhlIGdpdmVuIGVsZW1lbnQgKG5vZGUgb3IgZWRnZSkuXG4gICAqXG4gICAqIEFyaXR5IDI6XG4gICAqIEBwYXJhbSAge2FueX0gICAgZWxlbWVudCAtIFRhcmdldCBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHtzdHJpbmd9IG5hbWUgICAgLSBBdHRyaWJ1dGUncyBuYW1lLlxuICAgKlxuICAgKiBBcml0eSAzIChvbmx5IGZvciBlZGdlcyk6XG4gICAqIEBwYXJhbSAge2FueX0gICAgIHNvdXJjZSAtIFNvdXJjZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICB0YXJnZXQgLSBUYXJnZXQgZWxlbWVudC5cbiAgICogQHBhcmFtICB7c3RyaW5nfSAgbmFtZSAgIC0gQXR0cmlidXRlJ3MgbmFtZS5cbiAgICpcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0b28gbWFueSBhcmd1bWVudHMgYXJlIHByb3ZpZGVkLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIGFueSBvZiB0aGUgZWxlbWVudHMgaXMgbm90IGZvdW5kLlxuICAgKi9cbiAgQ2xhc3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiAoZWxlbWVudCwgbmFtZSkge1xuICAgIGxldCBkYXRhO1xuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ21peGVkJyAmJiB0eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09IHRoaXMudHlwZSlcbiAgICAgIHRocm93IG5ldyBVc2FnZUdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNhbm5vdCBmaW5kIHRoaXMgdHlwZSBvZiBlZGdlcyBpbiB5b3VyICR7dGhpcy50eXBlfSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aSlcbiAgICAgICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjYW5ub3QgdXNlIGEge3NvdXJjZSx0YXJnZXR9IGNvbWJvIHdoZW4gYXNraW5nIGFib3V0IGFuIGVkZ2UncyBhdHRyaWJ1dGVzIGluIGEgTXVsdGlHcmFwaCBzaW5jZSB3ZSBjYW5ub3QgaW5mZXIgdGhlIG9uZSB5b3Ugd2FudCBpbmZvcm1hdGlvbiBhYm91dC5gXG4gICAgICAgICk7XG5cbiAgICAgIGNvbnN0IHNvdXJjZSA9ICcnICsgZWxlbWVudCxcbiAgICAgICAgdGFyZ2V0ID0gJycgKyBuYW1lO1xuXG4gICAgICBuYW1lID0gYXJndW1lbnRzWzJdO1xuXG4gICAgICBkYXRhID0gZ2V0TWF0Y2hpbmdFZGdlKHRoaXMsIHNvdXJjZSwgdGFyZ2V0LCB0eXBlKTtcblxuICAgICAgaWYgKCFkYXRhKVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIGFuIGVkZ2UgZm9yIHRoZSBnaXZlbiBwYXRoIChcIiR7c291cmNlfVwiIC0gXCIke3RhcmdldH1cIikuYFxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50ID0gJycgKyBlbGVtZW50O1xuICAgICAgZGF0YSA9IHRoaXMuX2VkZ2VzLmdldChlbGVtZW50KTtcblxuICAgICAgaWYgKCFkYXRhKVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7ZWxlbWVudH1cIiBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgIT09ICdtaXhlZCcgJiYgZGF0YS51bmRpcmVjdGVkICE9PSAodHlwZSA9PT0gJ3VuZGlyZWN0ZWQnKSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7ZWxlbWVudH1cIiAke3R5cGV9IGVkZ2UgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICByZXR1cm4gZGF0YS5hdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KG5hbWUpO1xuICB9O1xufVxuXG4vKipcbiAqIEF0dGFjaCBhbiBhdHRyaWJ1dGUgc2V0dGVyIG1ldGhvZCBvbnRvIHRoZSBwcm92aWRlZCBjbGFzcy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzcyAgICAgICAgIC0gVGFyZ2V0IGNsYXNzLlxuICogQHBhcmFtIHtzdHJpbmd9ICAgbWV0aG9kICAgICAgICAtIE1ldGhvZCBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9ICAgdHlwZSAgICAgICAgICAtIFR5cGUgb2YgdGhlIGVkZ2UgdG8gZmluZC5cbiAqL1xuZnVuY3Rpb24gYXR0YWNoRWRnZUF0dHJpYnV0ZVNldHRlcihDbGFzcywgbWV0aG9kLCB0eXBlKSB7XG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlc2lyZWQgYXR0cmlidXRlIGZvciB0aGUgZ2l2ZW4gZWxlbWVudCAobm9kZSBvciBlZGdlKS5cbiAgICpcbiAgICogQXJpdHkgMjpcbiAgICogQHBhcmFtICB7YW55fSAgICBlbGVtZW50IC0gVGFyZ2V0IGVsZW1lbnQuXG4gICAqIEBwYXJhbSAge3N0cmluZ30gbmFtZSAgICAtIEF0dHJpYnV0ZSdzIG5hbWUuXG4gICAqIEBwYXJhbSAge21peGVkfSAgdmFsdWUgICAtIE5ldyBhdHRyaWJ1dGUgdmFsdWUuXG4gICAqXG4gICAqIEFyaXR5IDMgKG9ubHkgZm9yIGVkZ2VzKTpcbiAgICogQHBhcmFtICB7YW55fSAgICAgc291cmNlIC0gU291cmNlIGVsZW1lbnQuXG4gICAqIEBwYXJhbSAge2FueX0gICAgIHRhcmdldCAtIFRhcmdldCBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHtzdHJpbmd9ICBuYW1lICAgLSBBdHRyaWJ1dGUncyBuYW1lLlxuICAgKiBAcGFyYW0gIHttaXhlZH0gIHZhbHVlICAgLSBOZXcgYXR0cmlidXRlIHZhbHVlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtHcmFwaH0gICAgICAgICAgLSBSZXR1cm5zIGl0c2VsZiBmb3IgY2hhaW5pbmcuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdG9vIG1hbnkgYXJndW1lbnRzIGFyZSBwcm92aWRlZC5cbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiBhbnkgb2YgdGhlIGVsZW1lbnRzIGlzIG5vdCBmb3VuZC5cbiAgICovXG4gIENsYXNzLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24gKGVsZW1lbnQsIG5hbWUsIHZhbHVlKSB7XG4gICAgbGV0IGRhdGE7XG5cbiAgICBpZiAodGhpcy50eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09ICdtaXhlZCcgJiYgdHlwZSAhPT0gdGhpcy50eXBlKVxuICAgICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY2Fubm90IGZpbmQgdGhpcyB0eXBlIG9mIGVkZ2VzIGluIHlvdXIgJHt0aGlzLnR5cGV9IGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDMpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpKVxuICAgICAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNhbm5vdCB1c2UgYSB7c291cmNlLHRhcmdldH0gY29tYm8gd2hlbiBhc2tpbmcgYWJvdXQgYW4gZWRnZSdzIGF0dHJpYnV0ZXMgaW4gYSBNdWx0aUdyYXBoIHNpbmNlIHdlIGNhbm5vdCBpbmZlciB0aGUgb25lIHlvdSB3YW50IGluZm9ybWF0aW9uIGFib3V0LmBcbiAgICAgICAgKTtcblxuICAgICAgY29uc3Qgc291cmNlID0gJycgKyBlbGVtZW50LFxuICAgICAgICB0YXJnZXQgPSAnJyArIG5hbWU7XG5cbiAgICAgIG5hbWUgPSBhcmd1bWVudHNbMl07XG4gICAgICB2YWx1ZSA9IGFyZ3VtZW50c1szXTtcblxuICAgICAgZGF0YSA9IGdldE1hdGNoaW5nRWRnZSh0aGlzLCBzb3VyY2UsIHRhcmdldCwgdHlwZSk7XG5cbiAgICAgIGlmICghZGF0YSlcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjb3VsZCBub3QgZmluZCBhbiBlZGdlIGZvciB0aGUgZ2l2ZW4gcGF0aCAoXCIke3NvdXJjZX1cIiAtIFwiJHt0YXJnZXR9XCIpLmBcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudCA9ICcnICsgZWxlbWVudDtcbiAgICAgIGRhdGEgPSB0aGlzLl9lZGdlcy5nZXQoZWxlbWVudCk7XG5cbiAgICAgIGlmICghZGF0YSlcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VsZW1lbnR9XCIgZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmICh0eXBlICE9PSAnbWl4ZWQnICYmIGRhdGEudW5kaXJlY3RlZCAhPT0gKHR5cGUgPT09ICd1bmRpcmVjdGVkJykpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VsZW1lbnR9XCIgJHt0eXBlfSBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgZGF0YS5hdHRyaWJ1dGVzW25hbWVdID0gdmFsdWU7XG5cbiAgICAvLyBFbWl0dGluZ1xuICAgIHRoaXMuZW1pdCgnZWRnZUF0dHJpYnV0ZXNVcGRhdGVkJywge1xuICAgICAga2V5OiBkYXRhLmtleSxcbiAgICAgIHR5cGU6ICdzZXQnLFxuICAgICAgYXR0cmlidXRlczogZGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgbmFtZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59XG5cbi8qKlxuICogQXR0YWNoIGFuIGF0dHJpYnV0ZSB1cGRhdGVyIG1ldGhvZCBvbnRvIHRoZSBwcm92aWRlZCBjbGFzcy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzcyAgICAgICAgIC0gVGFyZ2V0IGNsYXNzLlxuICogQHBhcmFtIHtzdHJpbmd9ICAgbWV0aG9kICAgICAgICAtIE1ldGhvZCBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9ICAgdHlwZSAgICAgICAgICAtIFR5cGUgb2YgdGhlIGVkZ2UgdG8gZmluZC5cbiAqL1xuZnVuY3Rpb24gYXR0YWNoRWRnZUF0dHJpYnV0ZVVwZGF0ZXIoQ2xhc3MsIG1ldGhvZCwgdHlwZSkge1xuICAvKipcbiAgICogVXBkYXRlIHRoZSBkZXNpcmVkIGF0dHJpYnV0ZSBmb3IgdGhlIGdpdmVuIGVsZW1lbnQgKG5vZGUgb3IgZWRnZSkgdXNpbmdcbiAgICogdGhlIHByb3ZpZGVkIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBBcml0eSAyOlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgZWxlbWVudCAtIFRhcmdldCBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHtzdHJpbmd9ICAgbmFtZSAgICAtIEF0dHJpYnV0ZSdzIG5hbWUuXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSB1cGRhdGVyIC0gVXBkYXRlciBmdW5jdGlvbi5cbiAgICpcbiAgICogQXJpdHkgMyAob25seSBmb3IgZWRnZXMpOlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgc291cmNlICAtIFNvdXJjZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgdGFyZ2V0ICAtIFRhcmdldCBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHtzdHJpbmd9ICAgbmFtZSAgICAtIEF0dHJpYnV0ZSdzIG5hbWUuXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSB1cGRhdGVyIC0gVXBkYXRlciBmdW5jdGlvbi5cbiAgICpcbiAgICogQHJldHVybiB7R3JhcGh9ICAgICAgICAgICAgLSBSZXR1cm5zIGl0c2VsZiBmb3IgY2hhaW5pbmcuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdG9vIG1hbnkgYXJndW1lbnRzIGFyZSBwcm92aWRlZC5cbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiBhbnkgb2YgdGhlIGVsZW1lbnRzIGlzIG5vdCBmb3VuZC5cbiAgICovXG4gIENsYXNzLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24gKGVsZW1lbnQsIG5hbWUsIHVwZGF0ZXIpIHtcbiAgICBsZXQgZGF0YTtcblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICdtaXhlZCcgJiYgdHlwZSAhPT0gJ21peGVkJyAmJiB0eXBlICE9PSB0aGlzLnR5cGUpXG4gICAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjYW5ub3QgZmluZCB0aGlzIHR5cGUgb2YgZWRnZXMgaW4geW91ciAke3RoaXMudHlwZX0gZ3JhcGguYFxuICAgICAgKTtcblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMykge1xuICAgICAgaWYgKHRoaXMubXVsdGkpXG4gICAgICAgIHRocm93IG5ldyBVc2FnZUdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY2Fubm90IHVzZSBhIHtzb3VyY2UsdGFyZ2V0fSBjb21ibyB3aGVuIGFza2luZyBhYm91dCBhbiBlZGdlJ3MgYXR0cmlidXRlcyBpbiBhIE11bHRpR3JhcGggc2luY2Ugd2UgY2Fubm90IGluZmVyIHRoZSBvbmUgeW91IHdhbnQgaW5mb3JtYXRpb24gYWJvdXQuYFxuICAgICAgICApO1xuXG4gICAgICBjb25zdCBzb3VyY2UgPSAnJyArIGVsZW1lbnQsXG4gICAgICAgIHRhcmdldCA9ICcnICsgbmFtZTtcblxuICAgICAgbmFtZSA9IGFyZ3VtZW50c1syXTtcbiAgICAgIHVwZGF0ZXIgPSBhcmd1bWVudHNbM107XG5cbiAgICAgIGRhdGEgPSBnZXRNYXRjaGluZ0VkZ2UodGhpcywgc291cmNlLCB0YXJnZXQsIHR5cGUpO1xuXG4gICAgICBpZiAoIWRhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgYW4gZWRnZSBmb3IgdGhlIGdpdmVuIHBhdGggKFwiJHtzb3VyY2V9XCIgLSBcIiR7dGFyZ2V0fVwiKS5gXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnQgPSAnJyArIGVsZW1lbnQ7XG4gICAgICBkYXRhID0gdGhpcy5fZWRnZXMuZ2V0KGVsZW1lbnQpO1xuXG4gICAgICBpZiAoIWRhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtlbGVtZW50fVwiIGVkZ2UgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHVwZGF0ZXIgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IHVwZGF0ZXIgc2hvdWxkIGJlIGEgZnVuY3Rpb24uYFxuICAgICAgKTtcblxuICAgIGlmICh0eXBlICE9PSAnbWl4ZWQnICYmIGRhdGEudW5kaXJlY3RlZCAhPT0gKHR5cGUgPT09ICd1bmRpcmVjdGVkJykpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VsZW1lbnR9XCIgJHt0eXBlfSBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgZGF0YS5hdHRyaWJ1dGVzW25hbWVdID0gdXBkYXRlcihkYXRhLmF0dHJpYnV0ZXNbbmFtZV0pO1xuXG4gICAgLy8gRW1pdHRpbmdcbiAgICB0aGlzLmVtaXQoJ2VkZ2VBdHRyaWJ1dGVzVXBkYXRlZCcsIHtcbiAgICAgIGtleTogZGF0YS5rZXksXG4gICAgICB0eXBlOiAnc2V0JyxcbiAgICAgIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlcyxcbiAgICAgIG5hbWVcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xufVxuXG4vKipcbiAqIEF0dGFjaCBhbiBhdHRyaWJ1dGUgcmVtb3ZlciBtZXRob2Qgb250byB0aGUgcHJvdmlkZWQgY2xhc3MuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3MgICAgICAgICAtIFRhcmdldCBjbGFzcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgIG1ldGhvZCAgICAgICAgLSBNZXRob2QgbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgIHR5cGUgICAgICAgICAgLSBUeXBlIG9mIHRoZSBlZGdlIHRvIGZpbmQuXG4gKi9cbmZ1bmN0aW9uIGF0dGFjaEVkZ2VBdHRyaWJ1dGVSZW1vdmVyKENsYXNzLCBtZXRob2QsIHR5cGUpIHtcbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgZGVzaXJlZCBhdHRyaWJ1dGUgZm9yIHRoZSBnaXZlbiBlbGVtZW50IChub2RlIG9yIGVkZ2UpLlxuICAgKlxuICAgKiBBcml0eSAyOlxuICAgKiBAcGFyYW0gIHthbnl9ICAgIGVsZW1lbnQgLSBUYXJnZXQgZWxlbWVudC5cbiAgICogQHBhcmFtICB7c3RyaW5nfSBuYW1lICAgIC0gQXR0cmlidXRlJ3MgbmFtZS5cbiAgICpcbiAgICogQXJpdHkgMyAob25seSBmb3IgZWRnZXMpOlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICBzb3VyY2UgLSBTb3VyY2UgZWxlbWVudC5cbiAgICogQHBhcmFtICB7YW55fSAgICAgdGFyZ2V0IC0gVGFyZ2V0IGVsZW1lbnQuXG4gICAqIEBwYXJhbSAge3N0cmluZ30gIG5hbWUgICAtIEF0dHJpYnV0ZSdzIG5hbWUuXG4gICAqXG4gICAqIEByZXR1cm4ge0dyYXBofSAgICAgICAgICAtIFJldHVybnMgaXRzZWxmIGZvciBjaGFpbmluZy5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0b28gbWFueSBhcmd1bWVudHMgYXJlIHByb3ZpZGVkLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIGFueSBvZiB0aGUgZWxlbWVudHMgaXMgbm90IGZvdW5kLlxuICAgKi9cbiAgQ2xhc3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiAoZWxlbWVudCwgbmFtZSkge1xuICAgIGxldCBkYXRhO1xuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ21peGVkJyAmJiB0eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09IHRoaXMudHlwZSlcbiAgICAgIHRocm93IG5ldyBVc2FnZUdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNhbm5vdCBmaW5kIHRoaXMgdHlwZSBvZiBlZGdlcyBpbiB5b3VyICR7dGhpcy50eXBlfSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aSlcbiAgICAgICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjYW5ub3QgdXNlIGEge3NvdXJjZSx0YXJnZXR9IGNvbWJvIHdoZW4gYXNraW5nIGFib3V0IGFuIGVkZ2UncyBhdHRyaWJ1dGVzIGluIGEgTXVsdGlHcmFwaCBzaW5jZSB3ZSBjYW5ub3QgaW5mZXIgdGhlIG9uZSB5b3Ugd2FudCBpbmZvcm1hdGlvbiBhYm91dC5gXG4gICAgICAgICk7XG5cbiAgICAgIGNvbnN0IHNvdXJjZSA9ICcnICsgZWxlbWVudCxcbiAgICAgICAgdGFyZ2V0ID0gJycgKyBuYW1lO1xuXG4gICAgICBuYW1lID0gYXJndW1lbnRzWzJdO1xuXG4gICAgICBkYXRhID0gZ2V0TWF0Y2hpbmdFZGdlKHRoaXMsIHNvdXJjZSwgdGFyZ2V0LCB0eXBlKTtcblxuICAgICAgaWYgKCFkYXRhKVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIGFuIGVkZ2UgZm9yIHRoZSBnaXZlbiBwYXRoIChcIiR7c291cmNlfVwiIC0gXCIke3RhcmdldH1cIikuYFxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50ID0gJycgKyBlbGVtZW50O1xuICAgICAgZGF0YSA9IHRoaXMuX2VkZ2VzLmdldChlbGVtZW50KTtcblxuICAgICAgaWYgKCFkYXRhKVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7ZWxlbWVudH1cIiBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgIT09ICdtaXhlZCcgJiYgZGF0YS51bmRpcmVjdGVkICE9PSAodHlwZSA9PT0gJ3VuZGlyZWN0ZWQnKSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7ZWxlbWVudH1cIiAke3R5cGV9IGVkZ2UgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBkZWxldGUgZGF0YS5hdHRyaWJ1dGVzW25hbWVdO1xuXG4gICAgLy8gRW1pdHRpbmdcbiAgICB0aGlzLmVtaXQoJ2VkZ2VBdHRyaWJ1dGVzVXBkYXRlZCcsIHtcbiAgICAgIGtleTogZGF0YS5rZXksXG4gICAgICB0eXBlOiAncmVtb3ZlJyxcbiAgICAgIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlcyxcbiAgICAgIG5hbWVcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xufVxuXG4vKipcbiAqIEF0dGFjaCBhbiBhdHRyaWJ1dGUgcmVwbGFjZXIgbWV0aG9kIG9udG8gdGhlIHByb3ZpZGVkIGNsYXNzLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IENsYXNzICAgICAgICAgLSBUYXJnZXQgY2xhc3MuXG4gKiBAcGFyYW0ge3N0cmluZ30gICBtZXRob2QgICAgICAgIC0gTWV0aG9kIG5hbWUuXG4gKiBAcGFyYW0ge3N0cmluZ30gICB0eXBlICAgICAgICAgIC0gVHlwZSBvZiB0aGUgZWRnZSB0byBmaW5kLlxuICovXG5mdW5jdGlvbiBhdHRhY2hFZGdlQXR0cmlidXRlc1JlcGxhY2VyKENsYXNzLCBtZXRob2QsIHR5cGUpIHtcbiAgLyoqXG4gICAqIFJlcGxhY2UgdGhlIGF0dHJpYnV0ZXMgZm9yIHRoZSBnaXZlbiBlbGVtZW50IChub2RlIG9yIGVkZ2UpLlxuICAgKlxuICAgKiBBcml0eSAyOlxuICAgKiBAcGFyYW0gIHthbnl9ICAgIGVsZW1lbnQgICAgLSBUYXJnZXQgZWxlbWVudC5cbiAgICogQHBhcmFtICB7b2JqZWN0fSBhdHRyaWJ1dGVzIC0gTmV3IGF0dHJpYnV0ZXMuXG4gICAqXG4gICAqIEFyaXR5IDMgKG9ubHkgZm9yIGVkZ2VzKTpcbiAgICogQHBhcmFtICB7YW55fSAgICAgc291cmNlICAgICAtIFNvdXJjZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICB0YXJnZXQgICAgIC0gVGFyZ2V0IGVsZW1lbnQuXG4gICAqIEBwYXJhbSAge29iamVjdH0gIGF0dHJpYnV0ZXMgLSBOZXcgYXR0cmlidXRlcy5cbiAgICpcbiAgICogQHJldHVybiB7R3JhcGh9ICAgICAgICAgICAgICAtIFJldHVybnMgaXRzZWxmIGZvciBjaGFpbmluZy5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0b28gbWFueSBhcmd1bWVudHMgYXJlIHByb3ZpZGVkLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIGFueSBvZiB0aGUgZWxlbWVudHMgaXMgbm90IGZvdW5kLlxuICAgKi9cbiAgQ2xhc3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiAoZWxlbWVudCwgYXR0cmlidXRlcykge1xuICAgIGxldCBkYXRhO1xuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ21peGVkJyAmJiB0eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09IHRoaXMudHlwZSlcbiAgICAgIHRocm93IG5ldyBVc2FnZUdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNhbm5vdCBmaW5kIHRoaXMgdHlwZSBvZiBlZGdlcyBpbiB5b3VyICR7dGhpcy50eXBlfSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aSlcbiAgICAgICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjYW5ub3QgdXNlIGEge3NvdXJjZSx0YXJnZXR9IGNvbWJvIHdoZW4gYXNraW5nIGFib3V0IGFuIGVkZ2UncyBhdHRyaWJ1dGVzIGluIGEgTXVsdGlHcmFwaCBzaW5jZSB3ZSBjYW5ub3QgaW5mZXIgdGhlIG9uZSB5b3Ugd2FudCBpbmZvcm1hdGlvbiBhYm91dC5gXG4gICAgICAgICk7XG5cbiAgICAgIGNvbnN0IHNvdXJjZSA9ICcnICsgZWxlbWVudCxcbiAgICAgICAgdGFyZ2V0ID0gJycgKyBhdHRyaWJ1dGVzO1xuXG4gICAgICBhdHRyaWJ1dGVzID0gYXJndW1lbnRzWzJdO1xuXG4gICAgICBkYXRhID0gZ2V0TWF0Y2hpbmdFZGdlKHRoaXMsIHNvdXJjZSwgdGFyZ2V0LCB0eXBlKTtcblxuICAgICAgaWYgKCFkYXRhKVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIGFuIGVkZ2UgZm9yIHRoZSBnaXZlbiBwYXRoIChcIiR7c291cmNlfVwiIC0gXCIke3RhcmdldH1cIikuYFxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50ID0gJycgKyBlbGVtZW50O1xuICAgICAgZGF0YSA9IHRoaXMuX2VkZ2VzLmdldChlbGVtZW50KTtcblxuICAgICAgaWYgKCFkYXRhKVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7ZWxlbWVudH1cIiBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFpc1BsYWluT2JqZWN0KGF0dHJpYnV0ZXMpKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBwcm92aWRlZCBhdHRyaWJ1dGVzIGFyZSBub3QgYSBwbGFpbiBvYmplY3QuYFxuICAgICAgKTtcblxuICAgIGlmICh0eXBlICE9PSAnbWl4ZWQnICYmIGRhdGEudW5kaXJlY3RlZCAhPT0gKHR5cGUgPT09ICd1bmRpcmVjdGVkJykpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VsZW1lbnR9XCIgJHt0eXBlfSBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgZGF0YS5hdHRyaWJ1dGVzID0gYXR0cmlidXRlcztcblxuICAgIC8vIEVtaXR0aW5nXG4gICAgdGhpcy5lbWl0KCdlZGdlQXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICBrZXk6IGRhdGEua2V5LFxuICAgICAgdHlwZTogJ3JlcGxhY2UnLFxuICAgICAgYXR0cmlidXRlczogZGF0YS5hdHRyaWJ1dGVzXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn1cblxuLyoqXG4gKiBBdHRhY2ggYW4gYXR0cmlidXRlIG1lcmdlciBtZXRob2Qgb250byB0aGUgcHJvdmlkZWQgY2xhc3MuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3MgICAgICAgICAtIFRhcmdldCBjbGFzcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgIG1ldGhvZCAgICAgICAgLSBNZXRob2QgbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgIHR5cGUgICAgICAgICAgLSBUeXBlIG9mIHRoZSBlZGdlIHRvIGZpbmQuXG4gKi9cbmZ1bmN0aW9uIGF0dGFjaEVkZ2VBdHRyaWJ1dGVzTWVyZ2VyKENsYXNzLCBtZXRob2QsIHR5cGUpIHtcbiAgLyoqXG4gICAqIE1lcmdlIHRoZSBhdHRyaWJ1dGVzIGZvciB0aGUgZ2l2ZW4gZWxlbWVudCAobm9kZSBvciBlZGdlKS5cbiAgICpcbiAgICogQXJpdHkgMjpcbiAgICogQHBhcmFtICB7YW55fSAgICBlbGVtZW50ICAgIC0gVGFyZ2V0IGVsZW1lbnQuXG4gICAqIEBwYXJhbSAge29iamVjdH0gYXR0cmlidXRlcyAtIEF0dHJpYnV0ZXMgdG8gbWVyZ2UuXG4gICAqXG4gICAqIEFyaXR5IDMgKG9ubHkgZm9yIGVkZ2VzKTpcbiAgICogQHBhcmFtICB7YW55fSAgICAgc291cmNlICAgICAtIFNvdXJjZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICB0YXJnZXQgICAgIC0gVGFyZ2V0IGVsZW1lbnQuXG4gICAqIEBwYXJhbSAge29iamVjdH0gIGF0dHJpYnV0ZXMgLSBBdHRyaWJ1dGVzIHRvIG1lcmdlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtHcmFwaH0gICAgICAgICAgICAgIC0gUmV0dXJucyBpdHNlbGYgZm9yIGNoYWluaW5nLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRvbyBtYW55IGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgYW55IG9mIHRoZSBlbGVtZW50cyBpcyBub3QgZm91bmQuXG4gICAqL1xuICBDbGFzcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIChlbGVtZW50LCBhdHRyaWJ1dGVzKSB7XG4gICAgbGV0IGRhdGE7XG5cbiAgICBpZiAodGhpcy50eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09ICdtaXhlZCcgJiYgdHlwZSAhPT0gdGhpcy50eXBlKVxuICAgICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY2Fubm90IGZpbmQgdGhpcyB0eXBlIG9mIGVkZ2VzIGluIHlvdXIgJHt0aGlzLnR5cGV9IGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpKVxuICAgICAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNhbm5vdCB1c2UgYSB7c291cmNlLHRhcmdldH0gY29tYm8gd2hlbiBhc2tpbmcgYWJvdXQgYW4gZWRnZSdzIGF0dHJpYnV0ZXMgaW4gYSBNdWx0aUdyYXBoIHNpbmNlIHdlIGNhbm5vdCBpbmZlciB0aGUgb25lIHlvdSB3YW50IGluZm9ybWF0aW9uIGFib3V0LmBcbiAgICAgICAgKTtcblxuICAgICAgY29uc3Qgc291cmNlID0gJycgKyBlbGVtZW50LFxuICAgICAgICB0YXJnZXQgPSAnJyArIGF0dHJpYnV0ZXM7XG5cbiAgICAgIGF0dHJpYnV0ZXMgPSBhcmd1bWVudHNbMl07XG5cbiAgICAgIGRhdGEgPSBnZXRNYXRjaGluZ0VkZ2UodGhpcywgc291cmNlLCB0YXJnZXQsIHR5cGUpO1xuXG4gICAgICBpZiAoIWRhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgYW4gZWRnZSBmb3IgdGhlIGdpdmVuIHBhdGggKFwiJHtzb3VyY2V9XCIgLSBcIiR7dGFyZ2V0fVwiKS5gXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnQgPSAnJyArIGVsZW1lbnQ7XG4gICAgICBkYXRhID0gdGhpcy5fZWRnZXMuZ2V0KGVsZW1lbnQpO1xuXG4gICAgICBpZiAoIWRhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtlbGVtZW50fVwiIGVkZ2UgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzUGxhaW5PYmplY3QoYXR0cmlidXRlcykpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IHByb3ZpZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBhIHBsYWluIG9iamVjdC5gXG4gICAgICApO1xuXG4gICAgaWYgKHR5cGUgIT09ICdtaXhlZCcgJiYgZGF0YS51bmRpcmVjdGVkICE9PSAodHlwZSA9PT0gJ3VuZGlyZWN0ZWQnKSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7ZWxlbWVudH1cIiAke3R5cGV9IGVkZ2UgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBhc3NpZ24oZGF0YS5hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzKTtcblxuICAgIC8vIEVtaXR0aW5nXG4gICAgdGhpcy5lbWl0KCdlZGdlQXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICBrZXk6IGRhdGEua2V5LFxuICAgICAgdHlwZTogJ21lcmdlJyxcbiAgICAgIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlcyxcbiAgICAgIGRhdGE6IGF0dHJpYnV0ZXNcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xufVxuXG4vKipcbiAqIEF0dGFjaCBhbiBhdHRyaWJ1dGUgdXBkYXRlciBtZXRob2Qgb250byB0aGUgcHJvdmlkZWQgY2xhc3MuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3MgICAgICAgICAtIFRhcmdldCBjbGFzcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgIG1ldGhvZCAgICAgICAgLSBNZXRob2QgbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgIHR5cGUgICAgICAgICAgLSBUeXBlIG9mIHRoZSBlZGdlIHRvIGZpbmQuXG4gKi9cbmZ1bmN0aW9uIGF0dGFjaEVkZ2VBdHRyaWJ1dGVzVXBkYXRlcihDbGFzcywgbWV0aG9kLCB0eXBlKSB7XG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGdpdmVuIGVsZW1lbnQgKG5vZGUgb3IgZWRnZSkuXG4gICAqXG4gICAqIEFyaXR5IDI6XG4gICAqIEBwYXJhbSAge2FueX0gICAgICBlbGVtZW50IC0gVGFyZ2V0IGVsZW1lbnQuXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSB1cGRhdGVyIC0gVXBkYXRlciBmdW5jdGlvbi5cbiAgICpcbiAgICogQXJpdHkgMyAob25seSBmb3IgZWRnZXMpOlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgc291cmNlICAtIFNvdXJjZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgdGFyZ2V0ICAtIFRhcmdldCBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gdXBkYXRlciAtIFVwZGF0ZXIgZnVuY3Rpb24uXG4gICAqXG4gICAqIEByZXR1cm4ge0dyYXBofSAgICAgICAgICAgIC0gUmV0dXJucyBpdHNlbGYgZm9yIGNoYWluaW5nLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRvbyBtYW55IGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgYW55IG9mIHRoZSBlbGVtZW50cyBpcyBub3QgZm91bmQuXG4gICAqL1xuICBDbGFzcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIChlbGVtZW50LCB1cGRhdGVyKSB7XG4gICAgbGV0IGRhdGE7XG5cbiAgICBpZiAodGhpcy50eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09ICdtaXhlZCcgJiYgdHlwZSAhPT0gdGhpcy50eXBlKVxuICAgICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY2Fubm90IGZpbmQgdGhpcyB0eXBlIG9mIGVkZ2VzIGluIHlvdXIgJHt0aGlzLnR5cGV9IGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpKVxuICAgICAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNhbm5vdCB1c2UgYSB7c291cmNlLHRhcmdldH0gY29tYm8gd2hlbiBhc2tpbmcgYWJvdXQgYW4gZWRnZSdzIGF0dHJpYnV0ZXMgaW4gYSBNdWx0aUdyYXBoIHNpbmNlIHdlIGNhbm5vdCBpbmZlciB0aGUgb25lIHlvdSB3YW50IGluZm9ybWF0aW9uIGFib3V0LmBcbiAgICAgICAgKTtcblxuICAgICAgY29uc3Qgc291cmNlID0gJycgKyBlbGVtZW50LFxuICAgICAgICB0YXJnZXQgPSAnJyArIHVwZGF0ZXI7XG5cbiAgICAgIHVwZGF0ZXIgPSBhcmd1bWVudHNbMl07XG5cbiAgICAgIGRhdGEgPSBnZXRNYXRjaGluZ0VkZ2UodGhpcywgc291cmNlLCB0YXJnZXQsIHR5cGUpO1xuXG4gICAgICBpZiAoIWRhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgYW4gZWRnZSBmb3IgdGhlIGdpdmVuIHBhdGggKFwiJHtzb3VyY2V9XCIgLSBcIiR7dGFyZ2V0fVwiKS5gXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnQgPSAnJyArIGVsZW1lbnQ7XG4gICAgICBkYXRhID0gdGhpcy5fZWRnZXMuZ2V0KGVsZW1lbnQpO1xuXG4gICAgICBpZiAoIWRhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtlbGVtZW50fVwiIGVkZ2UgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHVwZGF0ZXIgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IHByb3ZpZGVkIHVwZGF0ZXIgaXMgbm90IGEgZnVuY3Rpb24uYFxuICAgICAgKTtcblxuICAgIGlmICh0eXBlICE9PSAnbWl4ZWQnICYmIGRhdGEudW5kaXJlY3RlZCAhPT0gKHR5cGUgPT09ICd1bmRpcmVjdGVkJykpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VsZW1lbnR9XCIgJHt0eXBlfSBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgZGF0YS5hdHRyaWJ1dGVzID0gdXBkYXRlcihkYXRhLmF0dHJpYnV0ZXMpO1xuXG4gICAgLy8gRW1pdHRpbmdcbiAgICB0aGlzLmVtaXQoJ2VkZ2VBdHRyaWJ1dGVzVXBkYXRlZCcsIHtcbiAgICAgIGtleTogZGF0YS5rZXksXG4gICAgICB0eXBlOiAndXBkYXRlJyxcbiAgICAgIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlc1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59XG5cbi8qKlxuICogTGlzdCBvZiBtZXRob2RzIHRvIGF0dGFjaC5cbiAqL1xuY29uc3QgRURHRV9BVFRSSUJVVEVTX01FVEhPRFMgPSBbXG4gIHtcbiAgICBuYW1lOiBlbGVtZW50ID0+IGBnZXQke2VsZW1lbnR9QXR0cmlidXRlYCxcbiAgICBhdHRhY2hlcjogYXR0YWNoRWRnZUF0dHJpYnV0ZUdldHRlclxuICB9LFxuICB7XG4gICAgbmFtZTogZWxlbWVudCA9PiBgZ2V0JHtlbGVtZW50fUF0dHJpYnV0ZXNgLFxuICAgIGF0dGFjaGVyOiBhdHRhY2hFZGdlQXR0cmlidXRlc0dldHRlclxuICB9LFxuICB7XG4gICAgbmFtZTogZWxlbWVudCA9PiBgaGFzJHtlbGVtZW50fUF0dHJpYnV0ZWAsXG4gICAgYXR0YWNoZXI6IGF0dGFjaEVkZ2VBdHRyaWJ1dGVDaGVja2VyXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBlbGVtZW50ID0+IGBzZXQke2VsZW1lbnR9QXR0cmlidXRlYCxcbiAgICBhdHRhY2hlcjogYXR0YWNoRWRnZUF0dHJpYnV0ZVNldHRlclxuICB9LFxuICB7XG4gICAgbmFtZTogZWxlbWVudCA9PiBgdXBkYXRlJHtlbGVtZW50fUF0dHJpYnV0ZWAsXG4gICAgYXR0YWNoZXI6IGF0dGFjaEVkZ2VBdHRyaWJ1dGVVcGRhdGVyXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBlbGVtZW50ID0+IGByZW1vdmUke2VsZW1lbnR9QXR0cmlidXRlYCxcbiAgICBhdHRhY2hlcjogYXR0YWNoRWRnZUF0dHJpYnV0ZVJlbW92ZXJcbiAgfSxcbiAge1xuICAgIG5hbWU6IGVsZW1lbnQgPT4gYHJlcGxhY2Uke2VsZW1lbnR9QXR0cmlidXRlc2AsXG4gICAgYXR0YWNoZXI6IGF0dGFjaEVkZ2VBdHRyaWJ1dGVzUmVwbGFjZXJcbiAgfSxcbiAge1xuICAgIG5hbWU6IGVsZW1lbnQgPT4gYG1lcmdlJHtlbGVtZW50fUF0dHJpYnV0ZXNgLFxuICAgIGF0dGFjaGVyOiBhdHRhY2hFZGdlQXR0cmlidXRlc01lcmdlclxuICB9LFxuICB7XG4gICAgbmFtZTogZWxlbWVudCA9PiBgdXBkYXRlJHtlbGVtZW50fUF0dHJpYnV0ZXNgLFxuICAgIGF0dGFjaGVyOiBhdHRhY2hFZGdlQXR0cmlidXRlc1VwZGF0ZXJcbiAgfVxuXTtcblxuLyoqXG4gKiBBdHRhY2ggZXZlcnkgYXR0cmlidXRlcy1yZWxhdGVkIG1ldGhvZHMgdG8gYSBHcmFwaCBjbGFzcy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBHcmFwaCAtIFRhcmdldCBjbGFzcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXR0YWNoRWRnZUF0dHJpYnV0ZXNNZXRob2RzKEdyYXBoKSB7XG4gIEVER0VfQVRUUklCVVRFU19NRVRIT0RTLmZvckVhY2goZnVuY3Rpb24gKHtuYW1lLCBhdHRhY2hlcn0pIHtcbiAgICAvLyBGb3IgZWRnZXNcbiAgICBhdHRhY2hlcihHcmFwaCwgbmFtZSgnRWRnZScpLCAnbWl4ZWQnKTtcblxuICAgIC8vIEZvciBkaXJlY3RlZCBlZGdlc1xuICAgIGF0dGFjaGVyKEdyYXBoLCBuYW1lKCdEaXJlY3RlZEVkZ2UnKSwgJ2RpcmVjdGVkJyk7XG5cbiAgICAvLyBGb3IgdW5kaXJlY3RlZCBlZGdlc1xuICAgIGF0dGFjaGVyKEdyYXBoLCBuYW1lKCdVbmRpcmVjdGVkRWRnZScpLCAndW5kaXJlY3RlZCcpO1xuICB9KTtcbn1cbiIsICIvKipcbiAqIE9ibGl0ZXJhdG9yIENoYWluIEZ1bmN0aW9uXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqXG4gKiBWYXJpYWRpYyBmdW5jdGlvbiBjb21iaW5pbmcgdGhlIGdpdmVuIGl0ZXJhYmxlcy5cbiAqL1xudmFyIEl0ZXJhdG9yID0gcmVxdWlyZSgnLi9pdGVyYXRvci5qcycpLFxuICBpdGVyID0gcmVxdWlyZSgnLi9pdGVyLmpzJyk7XG5cbi8qKlxuICogQ2hhaW4uXG4gKlxuICogQHBhcmFtICB7Li4uSXRlcmF0b3J9IGl0ZXJhYmxlcyAtIFRhcmdldCBpdGVyYWJsZXMuXG4gKiBAcmV0dXJuIHtJdGVyYXRvcn1cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjaGFpbigpIHtcbiAgdmFyIGl0ZXJhYmxlcyA9IGFyZ3VtZW50cyxcbiAgICBjdXJyZW50LFxuICAgIGkgPSAtMTtcblxuICByZXR1cm4gbmV3IEl0ZXJhdG9yKGZ1bmN0aW9uIGl0ZXJhdGUoKSB7XG4gICAgaWYgKCFjdXJyZW50KSB7XG4gICAgICBpKys7XG5cbiAgICAgIGlmIChpID49IGl0ZXJhYmxlcy5sZW5ndGgpIHJldHVybiB7ZG9uZTogdHJ1ZX07XG5cbiAgICAgIGN1cnJlbnQgPSBpdGVyKGl0ZXJhYmxlc1tpXSk7XG4gICAgfVxuXG4gICAgdmFyIHN0ZXAgPSBjdXJyZW50Lm5leHQoKTtcblxuICAgIGlmIChzdGVwLmRvbmUpIHtcbiAgICAgIGN1cnJlbnQgPSBudWxsO1xuICAgICAgcmV0dXJuIGl0ZXJhdGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RlcDtcbiAgfSk7XG59O1xuIiwgIi8qKlxuICogR3JhcGhvbG9neSBFZGdlIEl0ZXJhdGlvblxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqXG4gKiBBdHRhY2hpbmcgc29tZSBtZXRob2RzIHRvIHRoZSBHcmFwaCBjbGFzcyB0byBiZSBhYmxlIHRvIGl0ZXJhdGUgb3ZlciBhXG4gKiBncmFwaCdzIGVkZ2VzLlxuICovXG5pbXBvcnQgSXRlcmF0b3IgZnJvbSAnb2JsaXRlcmF0b3IvaXRlcmF0b3InO1xuaW1wb3J0IGNoYWluIGZyb20gJ29ibGl0ZXJhdG9yL2NoYWluJztcbmltcG9ydCB0YWtlIGZyb20gJ29ibGl0ZXJhdG9yL3Rha2UnO1xuXG5pbXBvcnQge0ludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yLCBOb3RGb3VuZEdyYXBoRXJyb3J9IGZyb20gJy4uL2Vycm9ycyc7XG5cbi8qKlxuICogRGVmaW5pdGlvbnMuXG4gKi9cbmNvbnN0IEVER0VTX0lURVJBVElPTiA9IFtcbiAge1xuICAgIG5hbWU6ICdlZGdlcycsXG4gICAgdHlwZTogJ21peGVkJ1xuICB9LFxuICB7XG4gICAgbmFtZTogJ2luRWRnZXMnLFxuICAgIHR5cGU6ICdkaXJlY3RlZCcsXG4gICAgZGlyZWN0aW9uOiAnaW4nXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnb3V0RWRnZXMnLFxuICAgIHR5cGU6ICdkaXJlY3RlZCcsXG4gICAgZGlyZWN0aW9uOiAnb3V0J1xuICB9LFxuICB7XG4gICAgbmFtZTogJ2luYm91bmRFZGdlcycsXG4gICAgdHlwZTogJ21peGVkJyxcbiAgICBkaXJlY3Rpb246ICdpbidcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdvdXRib3VuZEVkZ2VzJyxcbiAgICB0eXBlOiAnbWl4ZWQnLFxuICAgIGRpcmVjdGlvbjogJ291dCdcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdkaXJlY3RlZEVkZ2VzJyxcbiAgICB0eXBlOiAnZGlyZWN0ZWQnXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAndW5kaXJlY3RlZEVkZ2VzJyxcbiAgICB0eXBlOiAndW5kaXJlY3RlZCdcbiAgfVxuXTtcblxuLyoqXG4gKiBGdW5jdGlvbiBjb2xsZWN0aW5nIGVkZ2VzIGZyb20gdGhlIGdpdmVuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gIHthcnJheX0gIGVkZ2VzICAtIEVkZ2VzIGFycmF5IHRvIHBvcHVsYXRlLlxuICogQHBhcmFtICB7b2JqZWN0fSBvYmplY3QgLSBUYXJnZXQgb2JqZWN0LlxuICogQHJldHVybiB7YXJyYXl9ICAgICAgICAgLSBUaGUgZm91bmQgZWRnZXMuXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RTaW1wbGUoZWRnZXMsIG9iamVjdCkge1xuICBmb3IgKGNvbnN0IGsgaW4gb2JqZWN0KSBlZGdlcy5wdXNoKG9iamVjdFtrXS5rZXkpO1xufVxuXG5mdW5jdGlvbiBjb2xsZWN0TXVsdGkoZWRnZXMsIG9iamVjdCkge1xuICBmb3IgKGNvbnN0IGsgaW4gb2JqZWN0KVxuICAgIG9iamVjdFtrXS5mb3JFYWNoKGVkZ2VEYXRhID0+IGVkZ2VzLnB1c2goZWRnZURhdGEua2V5KSk7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gaXRlcmF0aW5nIG92ZXIgZWRnZXMgZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0IHVzaW5nIGEgY2FsbGJhY2suXG4gKlxuICogQHBhcmFtIHtvYmplY3R9ICAgb2JqZWN0ICAgLSBUYXJnZXQgb2JqZWN0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBGdW5jdGlvbiB0byBjYWxsLlxuICovXG5mdW5jdGlvbiBmb3JFYWNoU2ltcGxlKG9iamVjdCwgY2FsbGJhY2ssIGF2b2lkKSB7XG4gIGZvciAoY29uc3QgayBpbiBvYmplY3QpIHtcbiAgICBpZiAoayA9PT0gYXZvaWQpIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgZWRnZURhdGEgPSBvYmplY3Rba107XG5cbiAgICBjYWxsYmFjayhcbiAgICAgIGVkZ2VEYXRhLmtleSxcbiAgICAgIGVkZ2VEYXRhLmF0dHJpYnV0ZXMsXG4gICAgICBlZGdlRGF0YS5zb3VyY2Uua2V5LFxuICAgICAgZWRnZURhdGEudGFyZ2V0LmtleSxcbiAgICAgIGVkZ2VEYXRhLnNvdXJjZS5hdHRyaWJ1dGVzLFxuICAgICAgZWRnZURhdGEudGFyZ2V0LmF0dHJpYnV0ZXMsXG4gICAgICBlZGdlRGF0YS51bmRpcmVjdGVkXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JFYWNoTXVsdGkob2JqZWN0LCBjYWxsYmFjaywgYXZvaWQpIHtcbiAgZm9yIChjb25zdCBrIGluIG9iamVjdCkge1xuICAgIGlmIChrID09PSBhdm9pZCkgY29udGludWU7XG5cbiAgICBvYmplY3Rba10uZm9yRWFjaChlZGdlRGF0YSA9PlxuICAgICAgY2FsbGJhY2soXG4gICAgICAgIGVkZ2VEYXRhLmtleSxcbiAgICAgICAgZWRnZURhdGEuYXR0cmlidXRlcyxcbiAgICAgICAgZWRnZURhdGEuc291cmNlLmtleSxcbiAgICAgICAgZWRnZURhdGEudGFyZ2V0LmtleSxcbiAgICAgICAgZWRnZURhdGEuc291cmNlLmF0dHJpYnV0ZXMsXG4gICAgICAgIGVkZ2VEYXRhLnRhcmdldC5hdHRyaWJ1dGVzLFxuICAgICAgICBlZGdlRGF0YS51bmRpcmVjdGVkXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIGVkZ2VzIGZyb20gdGhlIGdpdmVuIG9iamVjdCB0byBtYXRjaCBvbmUgb2YgdGhlbS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gICBvYmplY3QgICAtIFRhcmdldCBvYmplY3QuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGNhbGwuXG4gKi9cbmZ1bmN0aW9uIGZpbmRTaW1wbGUob2JqZWN0LCBjYWxsYmFjaywgYXZvaWQpIHtcbiAgbGV0IHNob3VsZEJyZWFrID0gZmFsc2U7XG5cbiAgZm9yIChjb25zdCBrIGluIG9iamVjdCkge1xuICAgIGlmIChrID09PSBhdm9pZCkgY29udGludWU7XG5cbiAgICBjb25zdCBlZGdlRGF0YSA9IG9iamVjdFtrXTtcblxuICAgIHNob3VsZEJyZWFrID0gY2FsbGJhY2soXG4gICAgICBlZGdlRGF0YS5rZXksXG4gICAgICBlZGdlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgZWRnZURhdGEuc291cmNlLmtleSxcbiAgICAgIGVkZ2VEYXRhLnRhcmdldC5rZXksXG4gICAgICBlZGdlRGF0YS5zb3VyY2UuYXR0cmlidXRlcyxcbiAgICAgIGVkZ2VEYXRhLnRhcmdldC5hdHRyaWJ1dGVzLFxuICAgICAgZWRnZURhdGEudW5kaXJlY3RlZFxuICAgICk7XG5cbiAgICBpZiAoc2hvdWxkQnJlYWspIHJldHVybiBlZGdlRGF0YS5rZXk7XG4gIH1cblxuICByZXR1cm47XG59XG5cbmZ1bmN0aW9uIGZpbmRNdWx0aShvYmplY3QsIGNhbGxiYWNrLCBhdm9pZCkge1xuICBsZXQgaXRlcmF0b3IsIHN0ZXAsIGVkZ2VEYXRhLCBzb3VyY2UsIHRhcmdldDtcblxuICBsZXQgc2hvdWxkQnJlYWsgPSBmYWxzZTtcblxuICBmb3IgKGNvbnN0IGsgaW4gb2JqZWN0KSB7XG4gICAgaWYgKGsgPT09IGF2b2lkKSBjb250aW51ZTtcblxuICAgIGl0ZXJhdG9yID0gb2JqZWN0W2tdLnZhbHVlcygpO1xuXG4gICAgd2hpbGUgKCgoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSksIHN0ZXAuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICAgIGVkZ2VEYXRhID0gc3RlcC52YWx1ZTtcbiAgICAgIHNvdXJjZSA9IGVkZ2VEYXRhLnNvdXJjZTtcbiAgICAgIHRhcmdldCA9IGVkZ2VEYXRhLnRhcmdldDtcblxuICAgICAgc2hvdWxkQnJlYWsgPSBjYWxsYmFjayhcbiAgICAgICAgZWRnZURhdGEua2V5LFxuICAgICAgICBlZGdlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICBzb3VyY2Uua2V5LFxuICAgICAgICB0YXJnZXQua2V5LFxuICAgICAgICBzb3VyY2UuYXR0cmlidXRlcyxcbiAgICAgICAgdGFyZ2V0LmF0dHJpYnV0ZXMsXG4gICAgICAgIGVkZ2VEYXRhLnVuZGlyZWN0ZWRcbiAgICAgICk7XG5cbiAgICAgIGlmIChzaG91bGRCcmVhaykgcmV0dXJuIGVkZ2VEYXRhLmtleTtcbiAgICB9XG4gIH1cblxuICByZXR1cm47XG59XG5cbi8qKlxuICogRnVuY3Rpb24gcmV0dXJuaW5nIGFuIGl0ZXJhdG9yIG92ZXIgZWRnZXMgZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSAge29iamVjdH0gICBvYmplY3QgLSBUYXJnZXQgb2JqZWN0LlxuICogQHJldHVybiB7SXRlcmF0b3J9XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUl0ZXJhdG9yKG9iamVjdCwgYXZvaWQpIHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCksXG4gICAgbCA9IGtleXMubGVuZ3RoO1xuXG4gIGxldCBpbm5lciA9IG51bGwsXG4gICAgaSA9IDA7XG5cbiAgcmV0dXJuIG5ldyBJdGVyYXRvcihmdW5jdGlvbiBuZXh0KCkge1xuICAgIGxldCBlZGdlRGF0YTtcblxuICAgIGlmIChpbm5lcikge1xuICAgICAgY29uc3Qgc3RlcCA9IGlubmVyLm5leHQoKTtcblxuICAgICAgaWYgKHN0ZXAuZG9uZSkge1xuICAgICAgICBpbm5lciA9IG51bGw7XG4gICAgICAgIGkrKztcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cblxuICAgICAgZWRnZURhdGEgPSBzdGVwLnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaSA+PSBsKSByZXR1cm4ge2RvbmU6IHRydWV9O1xuXG4gICAgICBjb25zdCBrID0ga2V5c1tpXTtcblxuICAgICAgaWYgKGsgPT09IGF2b2lkKSB7XG4gICAgICAgIGkrKztcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cblxuICAgICAgZWRnZURhdGEgPSBvYmplY3Rba107XG5cbiAgICAgIGlmIChlZGdlRGF0YSBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICBpbm5lciA9IGVkZ2VEYXRhLnZhbHVlcygpO1xuICAgICAgICByZXR1cm4gbmV4dCgpO1xuICAgICAgfVxuXG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRvbmU6IGZhbHNlLFxuICAgICAgdmFsdWU6IHtcbiAgICAgICAgZWRnZTogZWRnZURhdGEua2V5LFxuICAgICAgICBhdHRyaWJ1dGVzOiBlZGdlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICBzb3VyY2U6IGVkZ2VEYXRhLnNvdXJjZS5rZXksXG4gICAgICAgIHRhcmdldDogZWRnZURhdGEudGFyZ2V0LmtleSxcbiAgICAgICAgc291cmNlQXR0cmlidXRlczogZWRnZURhdGEuc291cmNlLmF0dHJpYnV0ZXMsXG4gICAgICAgIHRhcmdldEF0dHJpYnV0ZXM6IGVkZ2VEYXRhLnRhcmdldC5hdHRyaWJ1dGVzLFxuICAgICAgICB1bmRpcmVjdGVkOiBlZGdlRGF0YS51bmRpcmVjdGVkXG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gY29sbGVjdGluZyBlZGdlcyBmcm9tIHRoZSBnaXZlbiBvYmplY3QgYXQgZ2l2ZW4ga2V5LlxuICpcbiAqIEBwYXJhbSAge2FycmF5fSAgZWRnZXMgIC0gRWRnZXMgYXJyYXkgdG8gcG9wdWxhdGUuXG4gKiBAcGFyYW0gIHtvYmplY3R9IG9iamVjdCAtIFRhcmdldCBvYmplY3QuXG4gKiBAcGFyYW0gIHttaXhlZH0gIGsgICAgICAtIE5laWdoYm9yIGtleS5cbiAqIEByZXR1cm4ge2FycmF5fSAgICAgICAgIC0gVGhlIGZvdW5kIGVkZ2VzLlxuICovXG5mdW5jdGlvbiBjb2xsZWN0Rm9yS2V5U2ltcGxlKGVkZ2VzLCBvYmplY3QsIGspIHtcbiAgY29uc3QgZWRnZURhdGEgPSBvYmplY3Rba107XG5cbiAgaWYgKCFlZGdlRGF0YSkgcmV0dXJuO1xuXG4gIGVkZ2VzLnB1c2goZWRnZURhdGEua2V5KTtcbn1cblxuZnVuY3Rpb24gY29sbGVjdEZvcktleU11bHRpKGVkZ2VzLCBvYmplY3QsIGspIHtcbiAgY29uc3QgZWRnZXNEYXRhID0gb2JqZWN0W2tdO1xuXG4gIGlmICghZWRnZXNEYXRhKSByZXR1cm47XG5cbiAgZWRnZXNEYXRhLmZvckVhY2goZWRnZURhdGEgPT4gZWRnZXMucHVzaChlZGdlRGF0YS5rZXkpKTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBpdGVyYXRpbmcgb3ZlciB0aGUgZWdkZXMgZnJvbSB0aGUgb2JqZWN0IGF0IGdpdmVuIGtleSB1c2luZ1xuICogYSBjYWxsYmFjay5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gICBvYmplY3QgICAtIFRhcmdldCBvYmplY3QuXG4gKiBAcGFyYW0ge21peGVkfSAgICBrICAgICAgICAtIE5laWdoYm9yIGtleS5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICovXG5mdW5jdGlvbiBmb3JFYWNoRm9yS2V5U2ltcGxlKG9iamVjdCwgaywgY2FsbGJhY2spIHtcbiAgY29uc3QgZWRnZURhdGEgPSBvYmplY3Rba107XG5cbiAgaWYgKCFlZGdlRGF0YSkgcmV0dXJuO1xuXG4gIGNvbnN0IHNvdXJjZURhdGEgPSBlZGdlRGF0YS5zb3VyY2U7XG4gIGNvbnN0IHRhcmdldERhdGEgPSBlZGdlRGF0YS50YXJnZXQ7XG5cbiAgY2FsbGJhY2soXG4gICAgZWRnZURhdGEua2V5LFxuICAgIGVkZ2VEYXRhLmF0dHJpYnV0ZXMsXG4gICAgc291cmNlRGF0YS5rZXksXG4gICAgdGFyZ2V0RGF0YS5rZXksXG4gICAgc291cmNlRGF0YS5hdHRyaWJ1dGVzLFxuICAgIHRhcmdldERhdGEuYXR0cmlidXRlcyxcbiAgICBlZGdlRGF0YS51bmRpcmVjdGVkXG4gICk7XG59XG5cbmZ1bmN0aW9uIGZvckVhY2hGb3JLZXlNdWx0aShvYmplY3QsIGssIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGVkZ2VzRGF0YSA9IG9iamVjdFtrXTtcblxuICBpZiAoIWVkZ2VzRGF0YSkgcmV0dXJuO1xuXG4gIGVkZ2VzRGF0YS5mb3JFYWNoKGVkZ2VEYXRhID0+XG4gICAgY2FsbGJhY2soXG4gICAgICBlZGdlRGF0YS5rZXksXG4gICAgICBlZGdlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgZWRnZURhdGEuc291cmNlLmtleSxcbiAgICAgIGVkZ2VEYXRhLnRhcmdldC5rZXksXG4gICAgICBlZGdlRGF0YS5zb3VyY2UuYXR0cmlidXRlcyxcbiAgICAgIGVkZ2VEYXRhLnRhcmdldC5hdHRyaWJ1dGVzLFxuICAgICAgZWRnZURhdGEudW5kaXJlY3RlZFxuICAgIClcbiAgKTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBpdGVyYXRpbmcgb3ZlciB0aGUgZWdkZXMgZnJvbSB0aGUgb2JqZWN0IGF0IGdpdmVuIGtleSB0byBtYXRjaFxuICogb25lIG9mIHRoZW0uXG4gKlxuICogQHBhcmFtIHtvYmplY3R9ICAgb2JqZWN0ICAgLSBUYXJnZXQgb2JqZWN0LlxuICogQHBhcmFtIHttaXhlZH0gICAgayAgICAgICAgLSBOZWlnaGJvciBrZXkuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIHVzZS5cbiAqL1xuZnVuY3Rpb24gZmluZEZvcktleVNpbXBsZShvYmplY3QsIGssIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGVkZ2VEYXRhID0gb2JqZWN0W2tdO1xuXG4gIGlmICghZWRnZURhdGEpIHJldHVybjtcblxuICBjb25zdCBzb3VyY2VEYXRhID0gZWRnZURhdGEuc291cmNlO1xuICBjb25zdCB0YXJnZXREYXRhID0gZWRnZURhdGEudGFyZ2V0O1xuXG4gIGlmIChcbiAgICBjYWxsYmFjayhcbiAgICAgIGVkZ2VEYXRhLmtleSxcbiAgICAgIGVkZ2VEYXRhLmF0dHJpYnV0ZXMsXG4gICAgICBzb3VyY2VEYXRhLmtleSxcbiAgICAgIHRhcmdldERhdGEua2V5LFxuICAgICAgc291cmNlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgdGFyZ2V0RGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgZWRnZURhdGEudW5kaXJlY3RlZFxuICAgIClcbiAgKVxuICAgIHJldHVybiBlZGdlRGF0YS5rZXk7XG59XG5cbmZ1bmN0aW9uIGZpbmRGb3JLZXlNdWx0aShvYmplY3QsIGssIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGVkZ2VzRGF0YSA9IG9iamVjdFtrXTtcblxuICBpZiAoIWVkZ2VzRGF0YSkgcmV0dXJuO1xuXG4gIGxldCBzaG91bGRCcmVhayA9IGZhbHNlO1xuXG4gIGNvbnN0IGl0ZXJhdG9yID0gZWRnZXNEYXRhLnZhbHVlcygpO1xuICBsZXQgc3RlcCwgZWRnZURhdGE7XG5cbiAgd2hpbGUgKCgoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSksIHN0ZXAuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICBlZGdlRGF0YSA9IHN0ZXAudmFsdWU7XG5cbiAgICBzaG91bGRCcmVhayA9IGNhbGxiYWNrKFxuICAgICAgZWRnZURhdGEua2V5LFxuICAgICAgZWRnZURhdGEuYXR0cmlidXRlcyxcbiAgICAgIGVkZ2VEYXRhLnNvdXJjZS5rZXksXG4gICAgICBlZGdlRGF0YS50YXJnZXQua2V5LFxuICAgICAgZWRnZURhdGEuc291cmNlLmF0dHJpYnV0ZXMsXG4gICAgICBlZGdlRGF0YS50YXJnZXQuYXR0cmlidXRlcyxcbiAgICAgIGVkZ2VEYXRhLnVuZGlyZWN0ZWRcbiAgICApO1xuXG4gICAgaWYgKHNob3VsZEJyZWFrKSByZXR1cm4gZWRnZURhdGEua2V5O1xuICB9XG5cbiAgcmV0dXJuO1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIHJldHVybmluZyBhbiBpdGVyYXRvciBvdmVyIHRoZSBlZ2RlcyBmcm9tIHRoZSBvYmplY3QgYXQgZ2l2ZW4ga2V5LlxuICpcbiAqIEBwYXJhbSAge29iamVjdH0gICBvYmplY3QgICAtIFRhcmdldCBvYmplY3QuXG4gKiBAcGFyYW0gIHttaXhlZH0gICAgayAgICAgICAgLSBOZWlnaGJvciBrZXkuXG4gKiBAcmV0dXJuIHtJdGVyYXRvcn1cbiAqL1xuZnVuY3Rpb24gY3JlYXRlSXRlcmF0b3JGb3JLZXkob2JqZWN0LCBrKSB7XG4gIGNvbnN0IHYgPSBvYmplY3Rba107XG5cbiAgaWYgKHYgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICBjb25zdCBpdGVyYXRvciA9IHYudmFsdWVzKCk7XG5cbiAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHN0ZXAgPSBpdGVyYXRvci5uZXh0KCk7XG5cbiAgICAgIGlmIChzdGVwLmRvbmUpIHJldHVybiBzdGVwO1xuXG4gICAgICBjb25zdCBlZGdlRGF0YSA9IHN0ZXAudmFsdWU7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRvbmU6IGZhbHNlLFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIGVkZ2U6IGVkZ2VEYXRhLmtleSxcbiAgICAgICAgICBhdHRyaWJ1dGVzOiBlZGdlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgIHNvdXJjZTogZWRnZURhdGEuc291cmNlLmtleSxcbiAgICAgICAgICB0YXJnZXQ6IGVkZ2VEYXRhLnRhcmdldC5rZXksXG4gICAgICAgICAgc291cmNlQXR0cmlidXRlczogZWRnZURhdGEuc291cmNlLmF0dHJpYnV0ZXMsXG4gICAgICAgICAgdGFyZ2V0QXR0cmlidXRlczogZWRnZURhdGEudGFyZ2V0LmF0dHJpYnV0ZXMsXG4gICAgICAgICAgdW5kaXJlY3RlZDogZWRnZURhdGEudW5kaXJlY3RlZFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIEl0ZXJhdG9yLm9mKFtcbiAgICB2LmtleSxcbiAgICB2LmF0dHJpYnV0ZXMsXG4gICAgdi5zb3VyY2Uua2V5LFxuICAgIHYudGFyZ2V0LmtleSxcbiAgICB2LnNvdXJjZS5hdHRyaWJ1dGVzLFxuICAgIHYudGFyZ2V0LmF0dHJpYnV0ZXNcbiAgXSk7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gY3JlYXRpbmcgYW4gYXJyYXkgb2YgZWRnZXMgZm9yIHRoZSBnaXZlbiB0eXBlLlxuICpcbiAqIEBwYXJhbSAge0dyYXBofSAgIGdyYXBoIC0gVGFyZ2V0IEdyYXBoIGluc3RhbmNlLlxuICogQHBhcmFtICB7c3RyaW5nfSAgdHlwZSAgLSBUeXBlIG9mIGVkZ2VzIHRvIHJldHJpZXZlLlxuICogQHJldHVybiB7YXJyYXl9ICAgICAgICAgLSBBcnJheSBvZiBlZGdlcy5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlRWRnZUFycmF5KGdyYXBoLCB0eXBlKSB7XG4gIGlmIChncmFwaC5zaXplID09PSAwKSByZXR1cm4gW107XG5cbiAgaWYgKHR5cGUgPT09ICdtaXhlZCcgfHwgdHlwZSA9PT0gZ3JhcGgudHlwZSkge1xuICAgIGlmICh0eXBlb2YgQXJyYXkuZnJvbSA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKGdyYXBoLl9lZGdlcy5rZXlzKCkpO1xuXG4gICAgcmV0dXJuIHRha2UoZ3JhcGguX2VkZ2VzLmtleXMoKSwgZ3JhcGguX2VkZ2VzLnNpemUpO1xuICB9XG5cbiAgY29uc3Qgc2l6ZSA9XG4gICAgdHlwZSA9PT0gJ3VuZGlyZWN0ZWQnID8gZ3JhcGgudW5kaXJlY3RlZFNpemUgOiBncmFwaC5kaXJlY3RlZFNpemU7XG5cbiAgY29uc3QgbGlzdCA9IG5ldyBBcnJheShzaXplKSxcbiAgICBtYXNrID0gdHlwZSA9PT0gJ3VuZGlyZWN0ZWQnO1xuXG4gIGNvbnN0IGl0ZXJhdG9yID0gZ3JhcGguX2VkZ2VzLnZhbHVlcygpO1xuXG4gIGxldCBpID0gMDtcbiAgbGV0IHN0ZXAsIGRhdGE7XG5cbiAgd2hpbGUgKCgoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSksIHN0ZXAuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICBkYXRhID0gc3RlcC52YWx1ZTtcblxuICAgIGlmIChkYXRhLnVuZGlyZWN0ZWQgPT09IG1hc2spIGxpc3RbaSsrXSA9IGRhdGEua2V5O1xuICB9XG5cbiAgcmV0dXJuIGxpc3Q7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gaXRlcmF0aW5nIG92ZXIgYSBncmFwaCdzIGVkZ2VzIHVzaW5nIGEgY2FsbGJhY2suXG4gKlxuICogQHBhcmFtICB7R3JhcGh9ICAgIGdyYXBoICAgIC0gVGFyZ2V0IEdyYXBoIGluc3RhbmNlLlxuICogQHBhcmFtICB7c3RyaW5nfSAgIHR5cGUgICAgIC0gVHlwZSBvZiBlZGdlcyB0byByZXRyaWV2ZS5cbiAqIEBwYXJhbSAge2Z1bmN0aW9ufSBjYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGNhbGwuXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2hFZGdlKGdyYXBoLCB0eXBlLCBjYWxsYmFjaykge1xuICBpZiAoZ3JhcGguc2l6ZSA9PT0gMCkgcmV0dXJuO1xuXG4gIGNvbnN0IHNob3VsZEZpbHRlciA9IHR5cGUgIT09ICdtaXhlZCcgJiYgdHlwZSAhPT0gZ3JhcGgudHlwZTtcbiAgY29uc3QgbWFzayA9IHR5cGUgPT09ICd1bmRpcmVjdGVkJztcblxuICBsZXQgc3RlcCwgZGF0YTtcbiAgY29uc3QgaXRlcmF0b3IgPSBncmFwaC5fZWRnZXMudmFsdWVzKCk7XG5cbiAgd2hpbGUgKCgoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSksIHN0ZXAuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICBkYXRhID0gc3RlcC52YWx1ZTtcblxuICAgIGlmIChzaG91bGRGaWx0ZXIgJiYgZGF0YS51bmRpcmVjdGVkICE9PSBtYXNrKSBjb250aW51ZTtcblxuICAgIGNvbnN0IHtrZXksIGF0dHJpYnV0ZXMsIHNvdXJjZSwgdGFyZ2V0fSA9IGRhdGE7XG5cbiAgICBjYWxsYmFjayhcbiAgICAgIGtleSxcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICBzb3VyY2Uua2V5LFxuICAgICAgdGFyZ2V0LmtleSxcbiAgICAgIHNvdXJjZS5hdHRyaWJ1dGVzLFxuICAgICAgdGFyZ2V0LmF0dHJpYnV0ZXMsXG4gICAgICBkYXRhLnVuZGlyZWN0ZWRcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogRnVuY3Rpb24gaXRlcmF0aW5nIG92ZXIgYSBncmFwaCdzIGVkZ2VzIHVzaW5nIGEgY2FsbGJhY2sgdG8gbWF0Y2ggb25lIG9mXG4gKiB0aGVtLlxuICpcbiAqIEBwYXJhbSAge0dyYXBofSAgICBncmFwaCAgICAtIFRhcmdldCBHcmFwaCBpbnN0YW5jZS5cbiAqIEBwYXJhbSAge3N0cmluZ30gICB0eXBlICAgICAtIFR5cGUgb2YgZWRnZXMgdG8gcmV0cmlldmUuXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBGdW5jdGlvbiB0byBjYWxsLlxuICovXG5mdW5jdGlvbiBmaW5kRWRnZShncmFwaCwgdHlwZSwgY2FsbGJhY2spIHtcbiAgaWYgKGdyYXBoLnNpemUgPT09IDApIHJldHVybjtcblxuICBjb25zdCBzaG91bGRGaWx0ZXIgPSB0eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09IGdyYXBoLnR5cGU7XG4gIGNvbnN0IG1hc2sgPSB0eXBlID09PSAndW5kaXJlY3RlZCc7XG5cbiAgbGV0IHN0ZXAsIGRhdGE7XG4gIGxldCBzaG91bGRCcmVhayA9IGZhbHNlO1xuICBjb25zdCBpdGVyYXRvciA9IGdyYXBoLl9lZGdlcy52YWx1ZXMoKTtcblxuICB3aGlsZSAoKChzdGVwID0gaXRlcmF0b3IubmV4dCgpKSwgc3RlcC5kb25lICE9PSB0cnVlKSkge1xuICAgIGRhdGEgPSBzdGVwLnZhbHVlO1xuXG4gICAgaWYgKHNob3VsZEZpbHRlciAmJiBkYXRhLnVuZGlyZWN0ZWQgIT09IG1hc2spIGNvbnRpbnVlO1xuXG4gICAgY29uc3Qge2tleSwgYXR0cmlidXRlcywgc291cmNlLCB0YXJnZXR9ID0gZGF0YTtcblxuICAgIHNob3VsZEJyZWFrID0gY2FsbGJhY2soXG4gICAgICBrZXksXG4gICAgICBhdHRyaWJ1dGVzLFxuICAgICAgc291cmNlLmtleSxcbiAgICAgIHRhcmdldC5rZXksXG4gICAgICBzb3VyY2UuYXR0cmlidXRlcyxcbiAgICAgIHRhcmdldC5hdHRyaWJ1dGVzLFxuICAgICAgZGF0YS51bmRpcmVjdGVkXG4gICAgKTtcblxuICAgIGlmIChzaG91bGRCcmVhaykgcmV0dXJuIGtleTtcbiAgfVxuXG4gIHJldHVybjtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBjcmVhdGluZyBhbiBpdGVyYXRvciBvZiBlZGdlcyBmb3IgdGhlIGdpdmVuIHR5cGUuXG4gKlxuICogQHBhcmFtICB7R3JhcGh9ICAgIGdyYXBoIC0gVGFyZ2V0IEdyYXBoIGluc3RhbmNlLlxuICogQHBhcmFtICB7c3RyaW5nfSAgIHR5cGUgIC0gVHlwZSBvZiBlZGdlcyB0byByZXRyaWV2ZS5cbiAqIEByZXR1cm4ge0l0ZXJhdG9yfVxuICovXG5mdW5jdGlvbiBjcmVhdGVFZGdlSXRlcmF0b3IoZ3JhcGgsIHR5cGUpIHtcbiAgaWYgKGdyYXBoLnNpemUgPT09IDApIHJldHVybiBJdGVyYXRvci5lbXB0eSgpO1xuXG4gIGNvbnN0IHNob3VsZEZpbHRlciA9IHR5cGUgIT09ICdtaXhlZCcgJiYgdHlwZSAhPT0gZ3JhcGgudHlwZTtcbiAgY29uc3QgbWFzayA9IHR5cGUgPT09ICd1bmRpcmVjdGVkJztcblxuICBjb25zdCBpdGVyYXRvciA9IGdyYXBoLl9lZGdlcy52YWx1ZXMoKTtcblxuICByZXR1cm4gbmV3IEl0ZXJhdG9yKGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgbGV0IHN0ZXAsIGRhdGE7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHN0ZXAgPSBpdGVyYXRvci5uZXh0KCk7XG5cbiAgICAgIGlmIChzdGVwLmRvbmUpIHJldHVybiBzdGVwO1xuXG4gICAgICBkYXRhID0gc3RlcC52YWx1ZTtcblxuICAgICAgaWYgKHNob3VsZEZpbHRlciAmJiBkYXRhLnVuZGlyZWN0ZWQgIT09IG1hc2spIGNvbnRpbnVlO1xuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHtcbiAgICAgIGVkZ2U6IGRhdGEua2V5LFxuICAgICAgYXR0cmlidXRlczogZGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgc291cmNlOiBkYXRhLnNvdXJjZS5rZXksXG4gICAgICB0YXJnZXQ6IGRhdGEudGFyZ2V0LmtleSxcbiAgICAgIHNvdXJjZUF0dHJpYnV0ZXM6IGRhdGEuc291cmNlLmF0dHJpYnV0ZXMsXG4gICAgICB0YXJnZXRBdHRyaWJ1dGVzOiBkYXRhLnRhcmdldC5hdHRyaWJ1dGVzLFxuICAgICAgdW5kaXJlY3RlZDogZGF0YS51bmRpcmVjdGVkXG4gICAgfTtcblxuICAgIHJldHVybiB7dmFsdWUsIGRvbmU6IGZhbHNlfTtcbiAgfSk7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gY3JlYXRpbmcgYW4gYXJyYXkgb2YgZWRnZXMgZm9yIHRoZSBnaXZlbiB0eXBlICYgdGhlIGdpdmVuIG5vZGUuXG4gKlxuICogQHBhcmFtICB7Ym9vbGVhbn0gbXVsdGkgICAgIC0gV2hldGhlciB0aGUgZ3JhcGggaXMgbXVsdGkgb3Igbm90LlxuICogQHBhcmFtICB7c3RyaW5nfSAgdHlwZSAgICAgIC0gVHlwZSBvZiBlZGdlcyB0byByZXRyaWV2ZS5cbiAqIEBwYXJhbSAge3N0cmluZ30gIGRpcmVjdGlvbiAtIEluIG9yIG91dD9cbiAqIEBwYXJhbSAge2FueX0gICAgIG5vZGVEYXRhICAtIFRhcmdldCBub2RlJ3MgZGF0YS5cbiAqIEByZXR1cm4ge2FycmF5fSAgICAgICAgICAgICAtIEFycmF5IG9mIGVkZ2VzLlxuICovXG5mdW5jdGlvbiBjcmVhdGVFZGdlQXJyYXlGb3JOb2RlKG11bHRpLCB0eXBlLCBkaXJlY3Rpb24sIG5vZGVEYXRhKSB7XG4gIGNvbnN0IGVkZ2VzID0gW107XG5cbiAgY29uc3QgZm4gPSBtdWx0aSA/IGNvbGxlY3RNdWx0aSA6IGNvbGxlY3RTaW1wbGU7XG5cbiAgaWYgKHR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgIGlmIChkaXJlY3Rpb24gIT09ICdvdXQnKSBmbihlZGdlcywgbm9kZURhdGEuaW4pO1xuICAgIGlmIChkaXJlY3Rpb24gIT09ICdpbicpIGZuKGVkZ2VzLCBub2RlRGF0YS5vdXQpO1xuXG4gICAgLy8gSGFuZGxpbmcgc2VsZiBsb29wIGVkZ2UgY2FzZVxuICAgIGlmICghZGlyZWN0aW9uICYmIG5vZGVEYXRhLmRpcmVjdGVkU2VsZkxvb3BzID4gMClcbiAgICAgIGVkZ2VzLnNwbGljZShlZGdlcy5sYXN0SW5kZXhPZihub2RlRGF0YS5rZXkpLCAxKTtcbiAgfVxuXG4gIGlmICh0eXBlICE9PSAnZGlyZWN0ZWQnKSB7XG4gICAgZm4oZWRnZXMsIG5vZGVEYXRhLnVuZGlyZWN0ZWQpO1xuICB9XG5cbiAgcmV0dXJuIGVkZ2VzO1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIGEgbm9kZSdzIGVkZ2VzIHVzaW5nIGEgY2FsbGJhY2suXG4gKlxuICogQHBhcmFtICB7Ym9vbGVhbn0gIG11bHRpICAgICAtIFdoZXRoZXIgdGhlIGdyYXBoIGlzIG11bHRpIG9yIG5vdC5cbiAqIEBwYXJhbSAge3N0cmluZ30gICB0eXBlICAgICAgLSBUeXBlIG9mIGVkZ2VzIHRvIHJldHJpZXZlLlxuICogQHBhcmFtICB7c3RyaW5nfSAgIGRpcmVjdGlvbiAtIEluIG9yIG91dD9cbiAqIEBwYXJhbSAge2FueX0gICAgICBub2RlRGF0YSAgLSBUYXJnZXQgbm9kZSdzIGRhdGEuXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgIC0gRnVuY3Rpb24gdG8gY2FsbC5cbiAqL1xuZnVuY3Rpb24gZm9yRWFjaEVkZ2VGb3JOb2RlKG11bHRpLCB0eXBlLCBkaXJlY3Rpb24sIG5vZGVEYXRhLCBjYWxsYmFjaykge1xuICBjb25zdCBmbiA9IG11bHRpID8gZm9yRWFjaE11bHRpIDogZm9yRWFjaFNpbXBsZTtcblxuICBpZiAodHlwZSAhPT0gJ3VuZGlyZWN0ZWQnKSB7XG4gICAgaWYgKGRpcmVjdGlvbiAhPT0gJ291dCcpIGZuKG5vZGVEYXRhLmluLCBjYWxsYmFjayk7XG4gICAgaWYgKGRpcmVjdGlvbiAhPT0gJ2luJylcbiAgICAgIGZuKG5vZGVEYXRhLm91dCwgY2FsbGJhY2ssICFkaXJlY3Rpb24gPyBub2RlRGF0YS5rZXkgOiBudWxsKTtcbiAgfVxuXG4gIGlmICh0eXBlICE9PSAnZGlyZWN0ZWQnKSB7XG4gICAgZm4obm9kZURhdGEudW5kaXJlY3RlZCwgY2FsbGJhY2spO1xuICB9XG59XG5cbi8qKlxuICogRnVuY3Rpb24gaXRlcmF0aW5nIG92ZXIgYSBub2RlJ3MgZWRnZXMgdXNpbmcgYSBjYWxsYmFjayB0byBtYXRjaCBvbmUgb2YgdGhlbS5cbiAqXG4gKiBAcGFyYW0gIHtib29sZWFufSAgbXVsdGkgICAgIC0gV2hldGhlciB0aGUgZ3JhcGggaXMgbXVsdGkgb3Igbm90LlxuICogQHBhcmFtICB7c3RyaW5nfSAgIHR5cGUgICAgICAtIFR5cGUgb2YgZWRnZXMgdG8gcmV0cmlldmUuXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgZGlyZWN0aW9uIC0gSW4gb3Igb3V0P1xuICogQHBhcmFtICB7YW55fSAgICAgIG5vZGVEYXRhICAtIFRhcmdldCBub2RlJ3MgZGF0YS5cbiAqIEBwYXJhbSAge2Z1bmN0aW9ufSBjYWxsYmFjayAgLSBGdW5jdGlvbiB0byBjYWxsLlxuICovXG5mdW5jdGlvbiBmaW5kRWRnZUZvck5vZGUobXVsdGksIHR5cGUsIGRpcmVjdGlvbiwgbm9kZURhdGEsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGZuID0gbXVsdGkgPyBmaW5kTXVsdGkgOiBmaW5kU2ltcGxlO1xuXG4gIGxldCBmb3VuZDtcblxuICBpZiAodHlwZSAhPT0gJ3VuZGlyZWN0ZWQnKSB7XG4gICAgaWYgKGRpcmVjdGlvbiAhPT0gJ291dCcpIHtcbiAgICAgIGZvdW5kID0gZm4obm9kZURhdGEuaW4sIGNhbGxiYWNrKTtcblxuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gIT09ICdpbicpIHtcbiAgICAgIGZvdW5kID0gZm4obm9kZURhdGEub3V0LCBjYWxsYmFjaywgIWRpcmVjdGlvbiA/IG5vZGVEYXRhLmtleSA6IG51bGwpO1xuXG4gICAgICBpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZSAhPT0gJ2RpcmVjdGVkJykge1xuICAgIGZvdW5kID0gZm4obm9kZURhdGEudW5kaXJlY3RlZCwgY2FsbGJhY2spO1xuXG4gICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG4gIH1cblxuICByZXR1cm47XG59XG5cbi8qKlxuICogRnVuY3Rpb24gaXRlcmF0aW5nIG92ZXIgYSBub2RlJ3MgZWRnZXMgdXNpbmcgYSBjYWxsYmFjay5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgdHlwZSAgICAgIC0gVHlwZSBvZiBlZGdlcyB0byByZXRyaWV2ZS5cbiAqIEBwYXJhbSAge3N0cmluZ30gICBkaXJlY3Rpb24gLSBJbiBvciBvdXQ/XG4gKiBAcGFyYW0gIHthbnl9ICAgICAgbm9kZURhdGEgIC0gVGFyZ2V0IG5vZGUncyBkYXRhLlxuICogQHJldHVybiB7SXRlcmF0b3J9XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUVkZ2VJdGVyYXRvckZvck5vZGUodHlwZSwgZGlyZWN0aW9uLCBub2RlRGF0YSkge1xuICBsZXQgaXRlcmF0b3IgPSBJdGVyYXRvci5lbXB0eSgpO1xuXG4gIGlmICh0eXBlICE9PSAndW5kaXJlY3RlZCcpIHtcbiAgICBpZiAoZGlyZWN0aW9uICE9PSAnb3V0JyAmJiB0eXBlb2Ygbm9kZURhdGEuaW4gIT09ICd1bmRlZmluZWQnKVxuICAgICAgaXRlcmF0b3IgPSBjaGFpbihpdGVyYXRvciwgY3JlYXRlSXRlcmF0b3Iobm9kZURhdGEuaW4pKTtcbiAgICBpZiAoZGlyZWN0aW9uICE9PSAnaW4nICYmIHR5cGVvZiBub2RlRGF0YS5vdXQgIT09ICd1bmRlZmluZWQnKVxuICAgICAgaXRlcmF0b3IgPSBjaGFpbihcbiAgICAgICAgaXRlcmF0b3IsXG4gICAgICAgIGNyZWF0ZUl0ZXJhdG9yKG5vZGVEYXRhLm91dCwgIWRpcmVjdGlvbiA/IG5vZGVEYXRhLmtleSA6IG51bGwpXG4gICAgICApO1xuICB9XG5cbiAgaWYgKHR5cGUgIT09ICdkaXJlY3RlZCcgJiYgdHlwZW9mIG5vZGVEYXRhLnVuZGlyZWN0ZWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgaXRlcmF0b3IgPSBjaGFpbihpdGVyYXRvciwgY3JlYXRlSXRlcmF0b3Iobm9kZURhdGEudW5kaXJlY3RlZCkpO1xuICB9XG5cbiAgcmV0dXJuIGl0ZXJhdG9yO1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGNyZWF0aW5nIGFuIGFycmF5IG9mIGVkZ2VzIGZvciB0aGUgZ2l2ZW4gcGF0aC5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgdHlwZSAgICAgICAtIFR5cGUgb2YgZWRnZXMgdG8gcmV0cmlldmUuXG4gKiBAcGFyYW0gIHtib29sZWFufSAgbXVsdGkgICAgICAtIFdoZXRoZXIgdGhlIGdyYXBoIGlzIG11bHRpLlxuICogQHBhcmFtICB7c3RyaW5nfSAgIGRpcmVjdGlvbiAgLSBJbiBvciBvdXQ/XG4gKiBAcGFyYW0gIHtOb2RlRGF0YX0gc291cmNlRGF0YSAtIFNvdXJjZSBub2RlJ3MgZGF0YS5cbiAqIEBwYXJhbSAge2FueX0gICAgICB0YXJnZXQgICAgIC0gVGFyZ2V0IG5vZGUuXG4gKiBAcmV0dXJuIHthcnJheX0gICAgICAgICAgICAgICAtIEFycmF5IG9mIGVkZ2VzLlxuICovXG5mdW5jdGlvbiBjcmVhdGVFZGdlQXJyYXlGb3JQYXRoKHR5cGUsIG11bHRpLCBkaXJlY3Rpb24sIHNvdXJjZURhdGEsIHRhcmdldCkge1xuICBjb25zdCBmbiA9IG11bHRpID8gY29sbGVjdEZvcktleU11bHRpIDogY29sbGVjdEZvcktleVNpbXBsZTtcblxuICBjb25zdCBlZGdlcyA9IFtdO1xuXG4gIGlmICh0eXBlICE9PSAndW5kaXJlY3RlZCcpIHtcbiAgICBpZiAodHlwZW9mIHNvdXJjZURhdGEuaW4gIT09ICd1bmRlZmluZWQnICYmIGRpcmVjdGlvbiAhPT0gJ291dCcpXG4gICAgICBmbihlZGdlcywgc291cmNlRGF0YS5pbiwgdGFyZ2V0KTtcblxuICAgIGlmICh0eXBlb2Ygc291cmNlRGF0YS5vdXQgIT09ICd1bmRlZmluZWQnICYmIGRpcmVjdGlvbiAhPT0gJ2luJylcbiAgICAgIGZuKGVkZ2VzLCBzb3VyY2VEYXRhLm91dCwgdGFyZ2V0KTtcblxuICAgIC8vIEhhbmRsaW5nIHNlbGYgbG9vcCBlZGdlIGNhc2VcbiAgICBpZiAoIWRpcmVjdGlvbiAmJiBzb3VyY2VEYXRhLmRpcmVjdGVkU2VsZkxvb3BzID4gMClcbiAgICAgIGVkZ2VzLnNwbGljZShlZGdlcy5sYXN0SW5kZXhPZihzb3VyY2VEYXRhLmtleSksIDEpO1xuICB9XG5cbiAgaWYgKHR5cGUgIT09ICdkaXJlY3RlZCcpIHtcbiAgICBpZiAodHlwZW9mIHNvdXJjZURhdGEudW5kaXJlY3RlZCAhPT0gJ3VuZGVmaW5lZCcpXG4gICAgICBmbihlZGdlcywgc291cmNlRGF0YS51bmRpcmVjdGVkLCB0YXJnZXQpO1xuICB9XG5cbiAgcmV0dXJuIGVkZ2VzO1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIGVkZ2VzIGZvciB0aGUgZ2l2ZW4gcGF0aCB1c2luZyBhIGNhbGxiYWNrLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gICB0eXBlICAgICAgIC0gVHlwZSBvZiBlZGdlcyB0byByZXRyaWV2ZS5cbiAqIEBwYXJhbSAge2Jvb2xlYW59ICBtdWx0aSAgICAgIC0gV2hldGhlciB0aGUgZ3JhcGggaXMgbXVsdGkuXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgZGlyZWN0aW9uICAtIEluIG9yIG91dD9cbiAqIEBwYXJhbSAge05vZGVEYXRhfSBzb3VyY2VEYXRhIC0gU291cmNlIG5vZGUncyBkYXRhLlxuICogQHBhcmFtICB7c3RyaW5nfSAgIHRhcmdldCAgICAgLSBUYXJnZXQgbm9kZS5cbiAqIEBwYXJhbSAge2Z1bmN0aW9ufSBjYWxsYmFjayAgIC0gRnVuY3Rpb24gdG8gY2FsbC5cbiAqL1xuZnVuY3Rpb24gZm9yRWFjaEVkZ2VGb3JQYXRoKFxuICB0eXBlLFxuICBtdWx0aSxcbiAgZGlyZWN0aW9uLFxuICBzb3VyY2VEYXRhLFxuICB0YXJnZXQsXG4gIGNhbGxiYWNrXG4pIHtcbiAgY29uc3QgZm4gPSBtdWx0aSA/IGZvckVhY2hGb3JLZXlNdWx0aSA6IGZvckVhY2hGb3JLZXlTaW1wbGU7XG5cbiAgaWYgKHR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgIGlmICh0eXBlb2Ygc291cmNlRGF0YS5pbiAhPT0gJ3VuZGVmaW5lZCcgJiYgZGlyZWN0aW9uICE9PSAnb3V0JylcbiAgICAgIGZuKHNvdXJjZURhdGEuaW4sIHRhcmdldCwgY2FsbGJhY2spO1xuXG4gICAgaWYgKHNvdXJjZURhdGEua2V5ICE9PSB0YXJnZXQpXG4gICAgICBpZiAodHlwZW9mIHNvdXJjZURhdGEub3V0ICE9PSAndW5kZWZpbmVkJyAmJiBkaXJlY3Rpb24gIT09ICdpbicpXG4gICAgICAgIGZuKHNvdXJjZURhdGEub3V0LCB0YXJnZXQsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIGlmICh0eXBlICE9PSAnZGlyZWN0ZWQnKSB7XG4gICAgaWYgKHR5cGVvZiBzb3VyY2VEYXRhLnVuZGlyZWN0ZWQgIT09ICd1bmRlZmluZWQnKVxuICAgICAgZm4oc291cmNlRGF0YS51bmRpcmVjdGVkLCB0YXJnZXQsIGNhbGxiYWNrKTtcbiAgfVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIGVkZ2VzIGZvciB0aGUgZ2l2ZW4gcGF0aCB1c2luZyBhIGNhbGxiYWNrIHRvIG1hdGNoXG4gKiBvbmUgb2YgdGhlbS5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgdHlwZSAgICAgICAtIFR5cGUgb2YgZWRnZXMgdG8gcmV0cmlldmUuXG4gKiBAcGFyYW0gIHtib29sZWFufSAgbXVsdGkgICAgICAtIFdoZXRoZXIgdGhlIGdyYXBoIGlzIG11bHRpLlxuICogQHBhcmFtICB7c3RyaW5nfSAgIGRpcmVjdGlvbiAgLSBJbiBvciBvdXQ/XG4gKiBAcGFyYW0gIHtOb2RlRGF0YX0gc291cmNlRGF0YSAtIFNvdXJjZSBub2RlJ3MgZGF0YS5cbiAqIEBwYXJhbSAge3N0cmluZ30gICB0YXJnZXQgICAgIC0gVGFyZ2V0IG5vZGUuXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgICAtIEZ1bmN0aW9uIHRvIGNhbGwuXG4gKi9cbmZ1bmN0aW9uIGZpbmRFZGdlRm9yUGF0aCh0eXBlLCBtdWx0aSwgZGlyZWN0aW9uLCBzb3VyY2VEYXRhLCB0YXJnZXQsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGZuID0gbXVsdGkgPyBmaW5kRm9yS2V5TXVsdGkgOiBmaW5kRm9yS2V5U2ltcGxlO1xuXG4gIGxldCBmb3VuZDtcblxuICBpZiAodHlwZSAhPT0gJ3VuZGlyZWN0ZWQnKSB7XG4gICAgaWYgKHR5cGVvZiBzb3VyY2VEYXRhLmluICE9PSAndW5kZWZpbmVkJyAmJiBkaXJlY3Rpb24gIT09ICdvdXQnKSB7XG4gICAgICBmb3VuZCA9IGZuKHNvdXJjZURhdGEuaW4sIHRhcmdldCwgY2FsbGJhY2spO1xuXG4gICAgICBpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlRGF0YS5rZXkgIT09IHRhcmdldClcbiAgICAgIGlmICh0eXBlb2Ygc291cmNlRGF0YS5vdXQgIT09ICd1bmRlZmluZWQnICYmIGRpcmVjdGlvbiAhPT0gJ2luJykge1xuICAgICAgICBmb3VuZCA9IGZuKFxuICAgICAgICAgIHNvdXJjZURhdGEub3V0LFxuICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgICAhZGlyZWN0aW9uID8gc291cmNlRGF0YS5rZXkgOiBudWxsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG4gICAgICB9XG4gIH1cblxuICBpZiAodHlwZSAhPT0gJ2RpcmVjdGVkJykge1xuICAgIGlmICh0eXBlb2Ygc291cmNlRGF0YS51bmRpcmVjdGVkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgZm91bmQgPSBmbihzb3VyY2VEYXRhLnVuZGlyZWN0ZWQsIHRhcmdldCwgY2FsbGJhY2spO1xuXG4gICAgICBpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcbiAgICB9XG4gIH1cblxuICByZXR1cm47XG59XG5cbi8qKlxuICogRnVuY3Rpb24gcmV0dXJuaW5nIGFuIGl0ZXJhdG9yIG92ZXIgZWRnZXMgZm9yIHRoZSBnaXZlbiBwYXRoLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gICB0eXBlICAgICAgIC0gVHlwZSBvZiBlZGdlcyB0byByZXRyaWV2ZS5cbiAqIEBwYXJhbSAge3N0cmluZ30gICBkaXJlY3Rpb24gIC0gSW4gb3Igb3V0P1xuICogQHBhcmFtICB7Tm9kZURhdGF9IHNvdXJjZURhdGEgLSBTb3VyY2Ugbm9kZSdzIGRhdGEuXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgdGFyZ2V0ICAgICAtIFRhcmdldCBub2RlLlxuICogQHBhcmFtICB7ZnVuY3Rpb259IGNhbGxiYWNrICAgLSBGdW5jdGlvbiB0byBjYWxsLlxuICovXG5mdW5jdGlvbiBjcmVhdGVFZGdlSXRlcmF0b3JGb3JQYXRoKHR5cGUsIGRpcmVjdGlvbiwgc291cmNlRGF0YSwgdGFyZ2V0KSB7XG4gIGxldCBpdGVyYXRvciA9IEl0ZXJhdG9yLmVtcHR5KCk7XG5cbiAgaWYgKHR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgIGlmIChcbiAgICAgIHR5cGVvZiBzb3VyY2VEYXRhLmluICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgZGlyZWN0aW9uICE9PSAnb3V0JyAmJlxuICAgICAgdGFyZ2V0IGluIHNvdXJjZURhdGEuaW5cbiAgICApXG4gICAgICBpdGVyYXRvciA9IGNoYWluKGl0ZXJhdG9yLCBjcmVhdGVJdGVyYXRvckZvcktleShzb3VyY2VEYXRhLmluLCB0YXJnZXQpKTtcblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBzb3VyY2VEYXRhLm91dCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgIGRpcmVjdGlvbiAhPT0gJ2luJyAmJlxuICAgICAgdGFyZ2V0IGluIHNvdXJjZURhdGEub3V0XG4gICAgKVxuICAgICAgaXRlcmF0b3IgPSBjaGFpbihpdGVyYXRvciwgY3JlYXRlSXRlcmF0b3JGb3JLZXkoc291cmNlRGF0YS5vdXQsIHRhcmdldCkpO1xuICB9XG5cbiAgaWYgKHR5cGUgIT09ICdkaXJlY3RlZCcpIHtcbiAgICBpZiAoXG4gICAgICB0eXBlb2Ygc291cmNlRGF0YS51bmRpcmVjdGVkICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgdGFyZ2V0IGluIHNvdXJjZURhdGEudW5kaXJlY3RlZFxuICAgIClcbiAgICAgIGl0ZXJhdG9yID0gY2hhaW4oXG4gICAgICAgIGl0ZXJhdG9yLFxuICAgICAgICBjcmVhdGVJdGVyYXRvckZvcktleShzb3VyY2VEYXRhLnVuZGlyZWN0ZWQsIHRhcmdldClcbiAgICAgICk7XG4gIH1cblxuICByZXR1cm4gaXRlcmF0b3I7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gYXR0YWNoaW5nIGFuIGVkZ2UgYXJyYXkgY3JlYXRvciBtZXRob2QgdG8gdGhlIEdyYXBoIHByb3RvdHlwZS5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzcyAgICAgICAtIFRhcmdldCBjbGFzcy5cbiAqIEBwYXJhbSB7b2JqZWN0fSAgIGRlc2NyaXB0aW9uIC0gTWV0aG9kIGRlc2NyaXB0aW9uLlxuICovXG5mdW5jdGlvbiBhdHRhY2hFZGdlQXJyYXlDcmVhdG9yKENsYXNzLCBkZXNjcmlwdGlvbikge1xuICBjb25zdCB7bmFtZSwgdHlwZSwgZGlyZWN0aW9ufSA9IGRlc2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiByZXR1cm5pbmcgYW4gYXJyYXkgb2YgY2VydGFpbiBlZGdlcy5cbiAgICpcbiAgICogQXJpdHkgMDogUmV0dXJuIGFsbCB0aGUgcmVsZXZhbnQgZWRnZXMuXG4gICAqXG4gICAqIEFyaXR5IDE6IFJldHVybiBhbGwgb2YgYSBub2RlJ3MgcmVsZXZhbnQgZWRnZXMuXG4gICAqIEBwYXJhbSAge2FueX0gICBub2RlICAgLSBUYXJnZXQgbm9kZS5cbiAgICpcbiAgICogQXJpdHkgMjogUmV0dXJuIHRoZSByZWxldmFudCBlZGdlcyBhY3Jvc3MgdGhlIGdpdmVuIHBhdGguXG4gICAqIEBwYXJhbSAge2FueX0gICBzb3VyY2UgLSBTb3VyY2Ugbm9kZS5cbiAgICogQHBhcmFtICB7YW55fSAgIHRhcmdldCAtIFRhcmdldCBub2RlLlxuICAgKlxuICAgKiBAcmV0dXJuIHthcnJheXxudW1iZXJ9IC0gVGhlIGVkZ2VzIG9yIHRoZSBudW1iZXIgb2YgZWRnZXMuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlcmUgYXJlIHRvbyBtYW55IGFyZ3VtZW50cy5cbiAgICovXG4gIENsYXNzLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uIChzb3VyY2UsIHRhcmdldCkge1xuICAgIC8vIEVhcmx5IHRlcm1pbmF0aW9uXG4gICAgaWYgKHR5cGUgIT09ICdtaXhlZCcgJiYgdGhpcy50eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09IHRoaXMudHlwZSlcbiAgICAgIHJldHVybiBbXTtcblxuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIGNyZWF0ZUVkZ2VBcnJheSh0aGlzLCB0eXBlKTtcblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICBzb3VyY2UgPSAnJyArIHNvdXJjZTtcblxuICAgICAgY29uc3Qgbm9kZURhdGEgPSB0aGlzLl9ub2Rlcy5nZXQoc291cmNlKTtcblxuICAgICAgaWYgKHR5cGVvZiBub2RlRGF0YSA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bmFtZX06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7c291cmNlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcblxuICAgICAgLy8gSXRlcmF0aW5nIG92ZXIgYSBub2RlJ3MgZWRnZXNcbiAgICAgIHJldHVybiBjcmVhdGVFZGdlQXJyYXlGb3JOb2RlKFxuICAgICAgICB0aGlzLm11bHRpLFxuICAgICAgICB0eXBlID09PSAnbWl4ZWQnID8gdGhpcy50eXBlIDogdHlwZSxcbiAgICAgICAgZGlyZWN0aW9uLFxuICAgICAgICBub2RlRGF0YVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgc291cmNlID0gJycgKyBzb3VyY2U7XG4gICAgICB0YXJnZXQgPSAnJyArIHRhcmdldDtcblxuICAgICAgY29uc3Qgc291cmNlRGF0YSA9IHRoaXMuX25vZGVzLmdldChzb3VyY2UpO1xuXG4gICAgICBpZiAoIXNvdXJjZURhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bmFtZX06ICBjb3VsZCBub3QgZmluZCB0aGUgXCIke3NvdXJjZX1cIiBzb3VyY2Ugbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgICApO1xuXG4gICAgICBpZiAoIXRoaXMuX25vZGVzLmhhcyh0YXJnZXQpKVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke25hbWV9OiAgY291bGQgbm90IGZpbmQgdGhlIFwiJHt0YXJnZXR9XCIgdGFyZ2V0IG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcblxuICAgICAgLy8gSXRlcmF0aW5nIG92ZXIgdGhlIGVkZ2VzIGJldHdlZW4gc291cmNlICYgdGFyZ2V0XG4gICAgICByZXR1cm4gY3JlYXRlRWRnZUFycmF5Rm9yUGF0aChcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdGhpcy5tdWx0aSxcbiAgICAgICAgZGlyZWN0aW9uLFxuICAgICAgICBzb3VyY2VEYXRhLFxuICAgICAgICB0YXJnZXRcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgYEdyYXBoLiR7bmFtZX06IHRvbyBtYW55IGFyZ3VtZW50cyAoZXhwZWN0aW5nIDAsIDEgb3IgMiBhbmQgZ290ICR7YXJndW1lbnRzLmxlbmd0aH0pLmBcbiAgICApO1xuICB9O1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGF0dGFjaGluZyBhIGVkZ2UgY2FsbGJhY2sgaXRlcmF0b3IgbWV0aG9kIHRvIHRoZSBHcmFwaCBwcm90b3R5cGUuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3MgICAgICAgLSBUYXJnZXQgY2xhc3MuXG4gKiBAcGFyYW0ge29iamVjdH0gICBkZXNjcmlwdGlvbiAtIE1ldGhvZCBkZXNjcmlwdGlvbi5cbiAqL1xuZnVuY3Rpb24gYXR0YWNoRm9yRWFjaEVkZ2UoQ2xhc3MsIGRlc2NyaXB0aW9uKSB7XG4gIGNvbnN0IHtuYW1lLCB0eXBlLCBkaXJlY3Rpb259ID0gZGVzY3JpcHRpb247XG5cbiAgY29uc3QgZm9yRWFjaE5hbWUgPSAnZm9yRWFjaCcgKyBuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEsIC0xKTtcblxuICAvKipcbiAgICogRnVuY3Rpb24gaXRlcmF0aW5nIG92ZXIgdGhlIGdyYXBoJ3MgcmVsZXZhbnQgZWRnZXMgYnkgYXBwbHlpbmcgdGhlIGdpdmVuXG4gICAqIGNhbGxiYWNrLlxuICAgKlxuICAgKiBBcml0eSAxOiBJdGVyYXRlIG92ZXIgYWxsIHRoZSByZWxldmFudCBlZGdlcy5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICAgKlxuICAgKiBBcml0eSAyOiBJdGVyYXRlIG92ZXIgYWxsIG9mIGEgbm9kZSdzIHJlbGV2YW50IGVkZ2VzLlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgbm9kZSAgICAgLSBUYXJnZXQgbm9kZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICAgKlxuICAgKiBBcml0eSAzOiBJdGVyYXRlIG92ZXIgdGhlIHJlbGV2YW50IGVkZ2VzIGFjcm9zcyB0aGUgZ2l2ZW4gcGF0aC5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIHNvdXJjZSAgIC0gU291cmNlIG5vZGUuXG4gICAqIEBwYXJhbSAge2FueX0gICAgICB0YXJnZXQgICAtIFRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byB1c2UuXG4gICAqXG4gICAqIEByZXR1cm4ge3VuZGVmaW5lZH1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgYXJndW1lbnRzLlxuICAgKi9cbiAgQ2xhc3MucHJvdG90eXBlW2ZvckVhY2hOYW1lXSA9IGZ1bmN0aW9uIChzb3VyY2UsIHRhcmdldCwgY2FsbGJhY2spIHtcbiAgICAvLyBFYXJseSB0ZXJtaW5hdGlvblxuICAgIGlmICh0eXBlICE9PSAnbWl4ZWQnICYmIHRoaXMudHlwZSAhPT0gJ21peGVkJyAmJiB0eXBlICE9PSB0aGlzLnR5cGUpIHJldHVybjtcblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICBjYWxsYmFjayA9IHNvdXJjZTtcbiAgICAgIHJldHVybiBmb3JFYWNoRWRnZSh0aGlzLCB0eXBlLCBjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHNvdXJjZSA9ICcnICsgc291cmNlO1xuICAgICAgY2FsbGJhY2sgPSB0YXJnZXQ7XG5cbiAgICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KHNvdXJjZSk7XG5cbiAgICAgIGlmICh0eXBlb2Ygbm9kZURhdGEgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke2ZvckVhY2hOYW1lfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtzb3VyY2V9XCIgbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgICApO1xuXG4gICAgICAvLyBJdGVyYXRpbmcgb3ZlciBhIG5vZGUncyBlZGdlc1xuICAgICAgLy8gVE9ETzogbWF5YmUgYXR0YWNoIHRoZSBzdWIgbWV0aG9kIHRvIHRoZSBpbnN0YW5jZSBkeW5hbWljYWxseT9cbiAgICAgIHJldHVybiBmb3JFYWNoRWRnZUZvck5vZGUoXG4gICAgICAgIHRoaXMubXVsdGksXG4gICAgICAgIHR5cGUgPT09ICdtaXhlZCcgPyB0aGlzLnR5cGUgOiB0eXBlLFxuICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgIG5vZGVEYXRhLFxuICAgICAgICBjYWxsYmFja1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMykge1xuICAgICAgc291cmNlID0gJycgKyBzb3VyY2U7XG4gICAgICB0YXJnZXQgPSAnJyArIHRhcmdldDtcblxuICAgICAgY29uc3Qgc291cmNlRGF0YSA9IHRoaXMuX25vZGVzLmdldChzb3VyY2UpO1xuXG4gICAgICBpZiAoIXNvdXJjZURhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7Zm9yRWFjaE5hbWV9OiAgY291bGQgbm90IGZpbmQgdGhlIFwiJHtzb3VyY2V9XCIgc291cmNlIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcblxuICAgICAgaWYgKCF0aGlzLl9ub2Rlcy5oYXModGFyZ2V0KSlcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHtmb3JFYWNoTmFtZX06ICBjb3VsZCBub3QgZmluZCB0aGUgXCIke3RhcmdldH1cIiB0YXJnZXQgbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgICApO1xuXG4gICAgICAvLyBJdGVyYXRpbmcgb3ZlciB0aGUgZWRnZXMgYmV0d2VlbiBzb3VyY2UgJiB0YXJnZXRcbiAgICAgIHJldHVybiBmb3JFYWNoRWRnZUZvclBhdGgoXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHRoaXMubXVsdGksXG4gICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgc291cmNlRGF0YSxcbiAgICAgICAgdGFyZ2V0LFxuICAgICAgICBjYWxsYmFja1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICBgR3JhcGguJHtmb3JFYWNoTmFtZX06IHRvbyBtYW55IGFyZ3VtZW50cyAoZXhwZWN0aW5nIDEsIDIgb3IgMyBhbmQgZ290ICR7YXJndW1lbnRzLmxlbmd0aH0pLmBcbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiBtYXBwaW5nIHRoZSBncmFwaCdzIHJlbGV2YW50IGVkZ2VzIGJ5IGFwcGx5aW5nIHRoZSBnaXZlblxuICAgKiBjYWxsYmFjay5cbiAgICpcbiAgICogQXJpdHkgMTogTWFwIGFsbCB0aGUgcmVsZXZhbnQgZWRnZXMuXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIHVzZS5cbiAgICpcbiAgICogQXJpdHkgMjogTWFwIGFsbCBvZiBhIG5vZGUncyByZWxldmFudCBlZGdlcy5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIG5vZGUgICAgIC0gVGFyZ2V0IG5vZGUuXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIHVzZS5cbiAgICpcbiAgICogQXJpdHkgMzogTWFwIHRoZSByZWxldmFudCBlZGdlcyBhY3Jvc3MgdGhlIGdpdmVuIHBhdGguXG4gICAqIEBwYXJhbSAge2FueX0gICAgICBzb3VyY2UgICAtIFNvdXJjZSBub2RlLlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgdGFyZ2V0ICAgLSBUYXJnZXQgbm9kZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICAgKlxuICAgKiBAcmV0dXJuIHt1bmRlZmluZWR9XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlcmUgYXJlIHRvbyBtYW55IGFyZ3VtZW50cy5cbiAgICovXG4gIGNvbnN0IG1hcE5hbWUgPSAnbWFwJyArIG5hbWVbMF0udG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSk7XG5cbiAgQ2xhc3MucHJvdG90eXBlW21hcE5hbWVdID0gZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgIGNvbnN0IGNhbGxiYWNrID0gYXJncy5wb3AoKTtcblxuICAgIGxldCByZXN1bHQ7XG5cbiAgICAvLyBXZSBrbm93IHRoZSByZXN1bHQgbGVuZ3RoIGJlZm9yZWhhbmRcbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIGxldCBsZW5ndGggPSAwO1xuXG4gICAgICBpZiAodHlwZSAhPT0gJ2RpcmVjdGVkJykgbGVuZ3RoICs9IHRoaXMudW5kaXJlY3RlZFNpemU7XG4gICAgICBpZiAodHlwZSAhPT0gJ3VuZGlyZWN0ZWQnKSBsZW5ndGggKz0gdGhpcy5kaXJlY3RlZFNpemU7XG5cbiAgICAgIHJlc3VsdCA9IG5ldyBBcnJheShsZW5ndGgpO1xuXG4gICAgICBsZXQgaSA9IDA7XG5cbiAgICAgIGFyZ3MucHVzaCgoZSwgZWEsIHMsIHQsIHNhLCB0YSwgdSkgPT4ge1xuICAgICAgICByZXN1bHRbaSsrXSA9IGNhbGxiYWNrKGUsIGVhLCBzLCB0LCBzYSwgdGEsIHUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gV2UgZG9uJ3Qga25vdyB0aGUgcmVzdWx0IGxlbmd0aCBiZWZvcmVoYW5kXG4gICAgLy8gVE9ETzogd2UgY2FuIGluIHNvbWUgaW5zdGFuY2VzIG9mIHNpbXBsZSBncmFwaHMsIGtub3dpbmcgZGVncmVlXG4gICAgZWxzZSB7XG4gICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgYXJncy5wdXNoKChlLCBlYSwgcywgdCwgc2EsIHRhLCB1KSA9PiB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGNhbGxiYWNrKGUsIGVhLCBzLCB0LCBzYSwgdGEsIHUpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXNbZm9yRWFjaE5hbWVdLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvKipcbiAgICogRnVuY3Rpb24gZmlsdGVyaW5nIHRoZSBncmFwaCdzIHJlbGV2YW50IGVkZ2VzIHVzaW5nIHRoZSBwcm92aWRlZCBwcmVkaWNhdGVcbiAgICogZnVuY3Rpb24uXG4gICAqXG4gICAqIEFyaXR5IDE6IEZpbHRlciBhbGwgdGhlIHJlbGV2YW50IGVkZ2VzLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gcHJlZGljYXRlIC0gUHJlZGljYXRlIHRvIHVzZS5cbiAgICpcbiAgICogQXJpdHkgMjogRmlsdGVyIGFsbCBvZiBhIG5vZGUncyByZWxldmFudCBlZGdlcy5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIG5vZGUgICAgICAtIFRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gcHJlZGljYXRlIC0gUHJlZGljYXRlIHRvIHVzZS5cbiAgICpcbiAgICogQXJpdHkgMzogRmlsdGVyIHRoZSByZWxldmFudCBlZGdlcyBhY3Jvc3MgdGhlIGdpdmVuIHBhdGguXG4gICAqIEBwYXJhbSAge2FueX0gICAgICBzb3VyY2UgICAgLSBTb3VyY2Ugbm9kZS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIHRhcmdldCAgICAtIFRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gcHJlZGljYXRlIC0gUHJlZGljYXRlIHRvIHVzZS5cbiAgICpcbiAgICogQHJldHVybiB7dW5kZWZpbmVkfVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZXJlIGFyZSB0b28gbWFueSBhcmd1bWVudHMuXG4gICAqL1xuICBjb25zdCBmaWx0ZXJOYW1lID0gJ2ZpbHRlcicgKyBuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpO1xuXG4gIENsYXNzLnByb3RvdHlwZVtmaWx0ZXJOYW1lXSA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICBjb25zdCBjYWxsYmFjayA9IGFyZ3MucG9wKCk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgIGFyZ3MucHVzaCgoZSwgZWEsIHMsIHQsIHNhLCB0YSwgdSkgPT4ge1xuICAgICAgaWYgKGNhbGxiYWNrKGUsIGVhLCBzLCB0LCBzYSwgdGEsIHUpKSByZXN1bHQucHVzaChlKTtcbiAgICB9KTtcblxuICAgIHRoaXNbZm9yRWFjaE5hbWVdLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvKipcbiAgICogRnVuY3Rpb24gcmVkdWNpbmcgdGhlIGdyYXBoJ3MgcmVsZXZhbnQgZWRnZXMgdXNpbmcgdGhlIHByb3ZpZGVkIGFjY3VtdWxhdG9yXG4gICAqIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBBcml0eSAxOiBSZWR1Y2UgYWxsIHRoZSByZWxldmFudCBlZGdlcy5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGFjY3VtdWxhdG9yICAtIEFjY3VtdWxhdG9yIHRvIHVzZS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIGluaXRpYWxWYWx1ZSAtIEluaXRpYWwgdmFsdWUuXG4gICAqXG4gICAqIEFyaXR5IDI6IFJlZHVjZSBhbGwgb2YgYSBub2RlJ3MgcmVsZXZhbnQgZWRnZXMuXG4gICAqIEBwYXJhbSAge2FueX0gICAgICBub2RlICAgICAgICAgLSBUYXJnZXQgbm9kZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGFjY3VtdWxhdG9yICAtIEFjY3VtdWxhdG9yIHRvIHVzZS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIGluaXRpYWxWYWx1ZSAtIEluaXRpYWwgdmFsdWUuXG4gICAqXG4gICAqIEFyaXR5IDM6IFJlZHVjZSB0aGUgcmVsZXZhbnQgZWRnZXMgYWNyb3NzIHRoZSBnaXZlbiBwYXRoLlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgc291cmNlICAgICAgIC0gU291cmNlIG5vZGUuXG4gICAqIEBwYXJhbSAge2FueX0gICAgICB0YXJnZXQgICAgICAgLSBUYXJnZXQgbm9kZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGFjY3VtdWxhdG9yICAtIEFjY3VtdWxhdG9yIHRvIHVzZS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIGluaXRpYWxWYWx1ZSAtIEluaXRpYWwgdmFsdWUuXG4gICAqXG4gICAqIEByZXR1cm4ge3VuZGVmaW5lZH1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgYXJndW1lbnRzLlxuICAgKi9cbiAgY29uc3QgcmVkdWNlTmFtZSA9ICdyZWR1Y2UnICsgbmFtZVswXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKTtcblxuICBDbGFzcy5wcm90b3R5cGVbcmVkdWNlTmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoIDwgMiB8fCBhcmdzLmxlbmd0aCA+IDQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7cmVkdWNlTmFtZX06IGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyAoZXhwZWN0aW5nIDIsIDMgb3IgNCBhbmQgZ290ICR7YXJncy5sZW5ndGh9KS5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPT09ICdmdW5jdGlvbicgJiZcbiAgICAgIHR5cGVvZiBhcmdzW2FyZ3MubGVuZ3RoIC0gMl0gIT09ICdmdW5jdGlvbidcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7cmVkdWNlTmFtZX06IG1pc3NpbmcgaW5pdGlhbCB2YWx1ZS4gWW91IG11c3QgcHJvdmlkZSBpdCBiZWNhdXNlIHRoZSBjYWxsYmFjayB0YWtlcyBtb3JlIHRoYW4gb25lIGFyZ3VtZW50IGFuZCB3ZSBjYW5ub3QgaW5mZXIgdGhlIGluaXRpYWwgdmFsdWUgZnJvbSB0aGUgZmlyc3QgaXRlcmF0aW9uLCBhcyB5b3UgY291bGQgd2l0aCBhIHNpbXBsZSBhcnJheS5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBjYWxsYmFjaztcbiAgICBsZXQgaW5pdGlhbFZhbHVlO1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICBjYWxsYmFjayA9IGFyZ3NbMF07XG4gICAgICBpbml0aWFsVmFsdWUgPSBhcmdzWzFdO1xuICAgICAgYXJncyA9IFtdO1xuICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDMpIHtcbiAgICAgIGNhbGxiYWNrID0gYXJnc1sxXTtcbiAgICAgIGluaXRpYWxWYWx1ZSA9IGFyZ3NbMl07XG4gICAgICBhcmdzID0gW2FyZ3NbMF1dO1xuICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDQpIHtcbiAgICAgIGNhbGxiYWNrID0gYXJnc1syXTtcbiAgICAgIGluaXRpYWxWYWx1ZSA9IGFyZ3NbM107XG4gICAgICBhcmdzID0gW2FyZ3NbMF0sIGFyZ3NbMV1dO1xuICAgIH1cblxuICAgIGxldCBhY2N1bXVsYXRvciA9IGluaXRpYWxWYWx1ZTtcblxuICAgIGFyZ3MucHVzaCgoZSwgZWEsIHMsIHQsIHNhLCB0YSwgdSkgPT4ge1xuICAgICAgYWNjdW11bGF0b3IgPSBjYWxsYmFjayhhY2N1bXVsYXRvciwgZSwgZWEsIHMsIHQsIHNhLCB0YSwgdSk7XG4gICAgfSk7XG5cbiAgICB0aGlzW2ZvckVhY2hOYW1lXS5hcHBseSh0aGlzLCBhcmdzKTtcblxuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBhdHRhY2hpbmcgYSBicmVha2FibGUgZWRnZSBjYWxsYmFjayBpdGVyYXRvciBtZXRob2QgdG8gdGhlIEdyYXBoXG4gKiBwcm90b3R5cGUuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3MgICAgICAgLSBUYXJnZXQgY2xhc3MuXG4gKiBAcGFyYW0ge29iamVjdH0gICBkZXNjcmlwdGlvbiAtIE1ldGhvZCBkZXNjcmlwdGlvbi5cbiAqL1xuZnVuY3Rpb24gYXR0YWNoRmluZEVkZ2UoQ2xhc3MsIGRlc2NyaXB0aW9uKSB7XG4gIGNvbnN0IHtuYW1lLCB0eXBlLCBkaXJlY3Rpb259ID0gZGVzY3JpcHRpb247XG5cbiAgY29uc3QgZmluZEVkZ2VOYW1lID0gJ2ZpbmQnICsgbmFtZVswXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxLCAtMSk7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIHRoZSBncmFwaCdzIHJlbGV2YW50IGVkZ2VzIGluIG9yZGVyIHRvIG1hdGNoXG4gICAqIG9uZSBvZiB0aGVtIHVzaW5nIHRoZSBwcm92aWRlZCBwcmVkaWNhdGUgZnVuY3Rpb24uXG4gICAqXG4gICAqIEFyaXR5IDE6IEl0ZXJhdGUgb3ZlciBhbGwgdGhlIHJlbGV2YW50IGVkZ2VzLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byB1c2UuXG4gICAqXG4gICAqIEFyaXR5IDI6IEl0ZXJhdGUgb3ZlciBhbGwgb2YgYSBub2RlJ3MgcmVsZXZhbnQgZWRnZXMuXG4gICAqIEBwYXJhbSAge2FueX0gICAgICBub2RlICAgICAtIFRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byB1c2UuXG4gICAqXG4gICAqIEFyaXR5IDM6IEl0ZXJhdGUgb3ZlciB0aGUgcmVsZXZhbnQgZWRnZXMgYWNyb3NzIHRoZSBnaXZlbiBwYXRoLlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgc291cmNlICAgLSBTb3VyY2Ugbm9kZS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIHRhcmdldCAgIC0gVGFyZ2V0IG5vZGUuXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIHVzZS5cbiAgICpcbiAgICogQHJldHVybiB7dW5kZWZpbmVkfVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZXJlIGFyZSB0b28gbWFueSBhcmd1bWVudHMuXG4gICAqL1xuICBDbGFzcy5wcm90b3R5cGVbZmluZEVkZ2VOYW1lXSA9IGZ1bmN0aW9uIChzb3VyY2UsIHRhcmdldCwgY2FsbGJhY2spIHtcbiAgICAvLyBFYXJseSB0ZXJtaW5hdGlvblxuICAgIGlmICh0eXBlICE9PSAnbWl4ZWQnICYmIHRoaXMudHlwZSAhPT0gJ21peGVkJyAmJiB0eXBlICE9PSB0aGlzLnR5cGUpXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgY2FsbGJhY2sgPSBzb3VyY2U7XG4gICAgICByZXR1cm4gZmluZEVkZ2UodGhpcywgdHlwZSwgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgICBzb3VyY2UgPSAnJyArIHNvdXJjZTtcbiAgICAgIGNhbGxiYWNrID0gdGFyZ2V0O1xuXG4gICAgICBjb25zdCBub2RlRGF0YSA9IHRoaXMuX25vZGVzLmdldChzb3VyY2UpO1xuXG4gICAgICBpZiAodHlwZW9mIG5vZGVEYXRhID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHtmaW5kRWRnZU5hbWV9OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke3NvdXJjZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICAgICk7XG5cbiAgICAgIC8vIEl0ZXJhdGluZyBvdmVyIGEgbm9kZSdzIGVkZ2VzXG4gICAgICAvLyBUT0RPOiBtYXliZSBhdHRhY2ggdGhlIHN1YiBtZXRob2QgdG8gdGhlIGluc3RhbmNlIGR5bmFtaWNhbGx5P1xuICAgICAgcmV0dXJuIGZpbmRFZGdlRm9yTm9kZShcbiAgICAgICAgdGhpcy5tdWx0aSxcbiAgICAgICAgdHlwZSA9PT0gJ21peGVkJyA/IHRoaXMudHlwZSA6IHR5cGUsXG4gICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgbm9kZURhdGEsXG4gICAgICAgIGNhbGxiYWNrXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgICBzb3VyY2UgPSAnJyArIHNvdXJjZTtcbiAgICAgIHRhcmdldCA9ICcnICsgdGFyZ2V0O1xuXG4gICAgICBjb25zdCBzb3VyY2VEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KHNvdXJjZSk7XG5cbiAgICAgIGlmICghc291cmNlRGF0YSlcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHtmaW5kRWRnZU5hbWV9OiAgY291bGQgbm90IGZpbmQgdGhlIFwiJHtzb3VyY2V9XCIgc291cmNlIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcblxuICAgICAgaWYgKCF0aGlzLl9ub2Rlcy5oYXModGFyZ2V0KSlcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHtmaW5kRWRnZU5hbWV9OiAgY291bGQgbm90IGZpbmQgdGhlIFwiJHt0YXJnZXR9XCIgdGFyZ2V0IG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcblxuICAgICAgLy8gSXRlcmF0aW5nIG92ZXIgdGhlIGVkZ2VzIGJldHdlZW4gc291cmNlICYgdGFyZ2V0XG4gICAgICByZXR1cm4gZmluZEVkZ2VGb3JQYXRoKFxuICAgICAgICB0eXBlLFxuICAgICAgICB0aGlzLm11bHRpLFxuICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgIHNvdXJjZURhdGEsXG4gICAgICAgIHRhcmdldCxcbiAgICAgICAgY2FsbGJhY2tcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgYEdyYXBoLiR7ZmluZEVkZ2VOYW1lfTogdG9vIG1hbnkgYXJndW1lbnRzIChleHBlY3RpbmcgMSwgMiBvciAzIGFuZCBnb3QgJHthcmd1bWVudHMubGVuZ3RofSkuYFxuICAgICk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIHRoZSBncmFwaCdzIHJlbGV2YW50IGVkZ2VzIGluIG9yZGVyIHRvIGFzc2VydFxuICAgKiB3aGV0aGVyIGFueSBvbmUgb2YgdGhlbSBtYXRjaGVzIHRoZSBwcm92aWRlZCBwcmVkaWNhdGUgZnVuY3Rpb24uXG4gICAqXG4gICAqIEFyaXR5IDE6IEl0ZXJhdGUgb3ZlciBhbGwgdGhlIHJlbGV2YW50IGVkZ2VzLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byB1c2UuXG4gICAqXG4gICAqIEFyaXR5IDI6IEl0ZXJhdGUgb3ZlciBhbGwgb2YgYSBub2RlJ3MgcmVsZXZhbnQgZWRnZXMuXG4gICAqIEBwYXJhbSAge2FueX0gICAgICBub2RlICAgICAtIFRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byB1c2UuXG4gICAqXG4gICAqIEFyaXR5IDM6IEl0ZXJhdGUgb3ZlciB0aGUgcmVsZXZhbnQgZWRnZXMgYWNyb3NzIHRoZSBnaXZlbiBwYXRoLlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgc291cmNlICAgLSBTb3VyY2Ugbm9kZS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIHRhcmdldCAgIC0gVGFyZ2V0IG5vZGUuXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIHVzZS5cbiAgICpcbiAgICogQHJldHVybiB7dW5kZWZpbmVkfVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZXJlIGFyZSB0b28gbWFueSBhcmd1bWVudHMuXG4gICAqL1xuICBjb25zdCBzb21lTmFtZSA9ICdzb21lJyArIG5hbWVbMF0udG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSwgLTEpO1xuXG4gIENsYXNzLnByb3RvdHlwZVtzb21lTmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgY29uc3QgY2FsbGJhY2sgPSBhcmdzLnBvcCgpO1xuXG4gICAgYXJncy5wdXNoKChlLCBlYSwgcywgdCwgc2EsIHRhLCB1KSA9PiB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soZSwgZWEsIHMsIHQsIHNhLCB0YSwgdSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBmb3VuZCA9IHRoaXNbZmluZEVkZ2VOYW1lXS5hcHBseSh0aGlzLCBhcmdzKTtcblxuICAgIGlmIChmb3VuZCkgcmV0dXJuIHRydWU7XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIHRoZSBncmFwaCdzIHJlbGV2YW50IGVkZ2VzIGluIG9yZGVyIHRvIGFzc2VydFxuICAgKiB3aGV0aGVyIGFsbCBvZiB0aGVtIG1hdGNoZSB0aGUgcHJvdmlkZWQgcHJlZGljYXRlIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBBcml0eSAxOiBJdGVyYXRlIG92ZXIgYWxsIHRoZSByZWxldmFudCBlZGdlcy5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICAgKlxuICAgKiBBcml0eSAyOiBJdGVyYXRlIG92ZXIgYWxsIG9mIGEgbm9kZSdzIHJlbGV2YW50IGVkZ2VzLlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgbm9kZSAgICAgLSBUYXJnZXQgbm9kZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICAgKlxuICAgKiBBcml0eSAzOiBJdGVyYXRlIG92ZXIgdGhlIHJlbGV2YW50IGVkZ2VzIGFjcm9zcyB0aGUgZ2l2ZW4gcGF0aC5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIHNvdXJjZSAgIC0gU291cmNlIG5vZGUuXG4gICAqIEBwYXJhbSAge2FueX0gICAgICB0YXJnZXQgICAtIFRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byB1c2UuXG4gICAqXG4gICAqIEByZXR1cm4ge3VuZGVmaW5lZH1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgYXJndW1lbnRzLlxuICAgKi9cbiAgY29uc3QgZXZlcnlOYW1lID0gJ2V2ZXJ5JyArIG5hbWVbMF0udG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSwgLTEpO1xuXG4gIENsYXNzLnByb3RvdHlwZVtldmVyeU5hbWVdID0gZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgIGNvbnN0IGNhbGxiYWNrID0gYXJncy5wb3AoKTtcblxuICAgIGFyZ3MucHVzaCgoZSwgZWEsIHMsIHQsIHNhLCB0YSwgdSkgPT4ge1xuICAgICAgcmV0dXJuICFjYWxsYmFjayhlLCBlYSwgcywgdCwgc2EsIHRhLCB1KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZvdW5kID0gdGhpc1tmaW5kRWRnZU5hbWVdLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgaWYgKGZvdW5kKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBhdHRhY2hpbmcgYW4gZWRnZSBpdGVyYXRvciBtZXRob2QgdG8gdGhlIEdyYXBoIHByb3RvdHlwZS5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzcyAgICAgICAtIFRhcmdldCBjbGFzcy5cbiAqIEBwYXJhbSB7b2JqZWN0fSAgIGRlc2NyaXB0aW9uIC0gTWV0aG9kIGRlc2NyaXB0aW9uLlxuICovXG5mdW5jdGlvbiBhdHRhY2hFZGdlSXRlcmF0b3JDcmVhdG9yKENsYXNzLCBkZXNjcmlwdGlvbikge1xuICBjb25zdCB7bmFtZTogb3JpZ2luYWxOYW1lLCB0eXBlLCBkaXJlY3Rpb259ID0gZGVzY3JpcHRpb247XG5cbiAgY29uc3QgbmFtZSA9IG9yaWdpbmFsTmFtZS5zbGljZSgwLCAtMSkgKyAnRW50cmllcyc7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHJldHVybmluZyBhbiBpdGVyYXRvciBvdmVyIHRoZSBncmFwaCdzIGVkZ2VzLlxuICAgKlxuICAgKiBBcml0eSAwOiBJdGVyYXRlIG92ZXIgYWxsIHRoZSByZWxldmFudCBlZGdlcy5cbiAgICpcbiAgICogQXJpdHkgMTogSXRlcmF0ZSBvdmVyIGFsbCBvZiBhIG5vZGUncyByZWxldmFudCBlZGdlcy5cbiAgICogQHBhcmFtICB7YW55fSAgIG5vZGUgICAtIFRhcmdldCBub2RlLlxuICAgKlxuICAgKiBBcml0eSAyOiBJdGVyYXRlIG92ZXIgdGhlIHJlbGV2YW50IGVkZ2VzIGFjcm9zcyB0aGUgZ2l2ZW4gcGF0aC5cbiAgICogQHBhcmFtICB7YW55fSAgIHNvdXJjZSAtIFNvdXJjZSBub2RlLlxuICAgKiBAcGFyYW0gIHthbnl9ICAgdGFyZ2V0IC0gVGFyZ2V0IG5vZGUuXG4gICAqXG4gICAqIEByZXR1cm4ge2FycmF5fG51bWJlcn0gLSBUaGUgZWRnZXMgb3IgdGhlIG51bWJlciBvZiBlZGdlcy5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgYXJndW1lbnRzLlxuICAgKi9cbiAgQ2xhc3MucHJvdG90eXBlW25hbWVdID0gZnVuY3Rpb24gKHNvdXJjZSwgdGFyZ2V0KSB7XG4gICAgLy8gRWFybHkgdGVybWluYXRpb25cbiAgICBpZiAodHlwZSAhPT0gJ21peGVkJyAmJiB0aGlzLnR5cGUgIT09ICdtaXhlZCcgJiYgdHlwZSAhPT0gdGhpcy50eXBlKVxuICAgICAgcmV0dXJuIEl0ZXJhdG9yLmVtcHR5KCk7XG5cbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBjcmVhdGVFZGdlSXRlcmF0b3IodGhpcywgdHlwZSk7XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgc291cmNlID0gJycgKyBzb3VyY2U7XG5cbiAgICAgIGNvbnN0IHNvdXJjZURhdGEgPSB0aGlzLl9ub2Rlcy5nZXQoc291cmNlKTtcblxuICAgICAgaWYgKCFzb3VyY2VEYXRhKVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke25hbWV9OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke3NvdXJjZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICAgICk7XG5cbiAgICAgIC8vIEl0ZXJhdGluZyBvdmVyIGEgbm9kZSdzIGVkZ2VzXG4gICAgICByZXR1cm4gY3JlYXRlRWRnZUl0ZXJhdG9yRm9yTm9kZSh0eXBlLCBkaXJlY3Rpb24sIHNvdXJjZURhdGEpO1xuICAgIH1cblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgICBzb3VyY2UgPSAnJyArIHNvdXJjZTtcbiAgICAgIHRhcmdldCA9ICcnICsgdGFyZ2V0O1xuXG4gICAgICBjb25zdCBzb3VyY2VEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KHNvdXJjZSk7XG5cbiAgICAgIGlmICghc291cmNlRGF0YSlcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHtuYW1lfTogIGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7c291cmNlfVwiIHNvdXJjZSBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICAgICk7XG5cbiAgICAgIGlmICghdGhpcy5fbm9kZXMuaGFzKHRhcmdldCkpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bmFtZX06ICBjb3VsZCBub3QgZmluZCB0aGUgXCIke3RhcmdldH1cIiB0YXJnZXQgbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgICApO1xuXG4gICAgICAvLyBJdGVyYXRpbmcgb3ZlciB0aGUgZWRnZXMgYmV0d2VlbiBzb3VyY2UgJiB0YXJnZXRcbiAgICAgIHJldHVybiBjcmVhdGVFZGdlSXRlcmF0b3JGb3JQYXRoKHR5cGUsIGRpcmVjdGlvbiwgc291cmNlRGF0YSwgdGFyZ2V0KTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICBgR3JhcGguJHtuYW1lfTogdG9vIG1hbnkgYXJndW1lbnRzIChleHBlY3RpbmcgMCwgMSBvciAyIGFuZCBnb3QgJHthcmd1bWVudHMubGVuZ3RofSkuYFxuICAgICk7XG4gIH07XG59XG5cbi8qKlxuICogRnVuY3Rpb24gYXR0YWNoaW5nIGV2ZXJ5IGVkZ2UgaXRlcmF0aW9uIG1ldGhvZCB0byB0aGUgR3JhcGggY2xhc3MuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gR3JhcGggLSBHcmFwaCBjbGFzcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXR0YWNoRWRnZUl0ZXJhdGlvbk1ldGhvZHMoR3JhcGgpIHtcbiAgRURHRVNfSVRFUkFUSU9OLmZvckVhY2goZGVzY3JpcHRpb24gPT4ge1xuICAgIGF0dGFjaEVkZ2VBcnJheUNyZWF0b3IoR3JhcGgsIGRlc2NyaXB0aW9uKTtcbiAgICBhdHRhY2hGb3JFYWNoRWRnZShHcmFwaCwgZGVzY3JpcHRpb24pO1xuICAgIGF0dGFjaEZpbmRFZGdlKEdyYXBoLCBkZXNjcmlwdGlvbik7XG4gICAgYXR0YWNoRWRnZUl0ZXJhdG9yQ3JlYXRvcihHcmFwaCwgZGVzY3JpcHRpb24pO1xuICB9KTtcbn1cbiIsICIvKipcbiAqIEdyYXBob2xvZ3kgTmVpZ2hib3IgSXRlcmF0aW9uXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqXG4gKiBBdHRhY2hpbmcgc29tZSBtZXRob2RzIHRvIHRoZSBHcmFwaCBjbGFzcyB0byBiZSBhYmxlIHRvIGl0ZXJhdGUgb3ZlclxuICogbmVpZ2hib3JzLlxuICovXG5pbXBvcnQgSXRlcmF0b3IgZnJvbSAnb2JsaXRlcmF0b3IvaXRlcmF0b3InO1xuaW1wb3J0IGNoYWluIGZyb20gJ29ibGl0ZXJhdG9yL2NoYWluJztcbmltcG9ydCB0YWtlIGZyb20gJ29ibGl0ZXJhdG9yL3Rha2UnO1xuXG5pbXBvcnQge05vdEZvdW5kR3JhcGhFcnJvciwgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3J9IGZyb20gJy4uL2Vycm9ycyc7XG5cbi8qKlxuICogRGVmaW5pdGlvbnMuXG4gKi9cbmNvbnN0IE5FSUdIQk9SU19JVEVSQVRJT04gPSBbXG4gIHtcbiAgICBuYW1lOiAnbmVpZ2hib3JzJyxcbiAgICB0eXBlOiAnbWl4ZWQnXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnaW5OZWlnaGJvcnMnLFxuICAgIHR5cGU6ICdkaXJlY3RlZCcsXG4gICAgZGlyZWN0aW9uOiAnaW4nXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnb3V0TmVpZ2hib3JzJyxcbiAgICB0eXBlOiAnZGlyZWN0ZWQnLFxuICAgIGRpcmVjdGlvbjogJ291dCdcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdpbmJvdW5kTmVpZ2hib3JzJyxcbiAgICB0eXBlOiAnbWl4ZWQnLFxuICAgIGRpcmVjdGlvbjogJ2luJ1xuICB9LFxuICB7XG4gICAgbmFtZTogJ291dGJvdW5kTmVpZ2hib3JzJyxcbiAgICB0eXBlOiAnbWl4ZWQnLFxuICAgIGRpcmVjdGlvbjogJ291dCdcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdkaXJlY3RlZE5laWdoYm9ycycsXG4gICAgdHlwZTogJ2RpcmVjdGVkJ1xuICB9LFxuICB7XG4gICAgbmFtZTogJ3VuZGlyZWN0ZWROZWlnaGJvcnMnLFxuICAgIHR5cGU6ICd1bmRpcmVjdGVkJ1xuICB9XG5dO1xuXG4vKipcbiAqIEZ1bmN0aW9uIG1lcmdpbmcgbmVpZ2hib3JzIGludG8gdGhlIGdpdmVuIHNldCBpdGVyYXRpbmcgb3ZlciB0aGUgZ2l2ZW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7QmFzaWNTZXR9IG5laWdoYm9ycyAtIE5laWdoYm9ycyBzZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gICBvYmplY3QgICAgLSBUYXJnZXQgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBtZXJnZShuZWlnaGJvcnMsIG9iamVjdCkge1xuICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcblxuICBmb3IgKGNvbnN0IG5laWdoYm9yIGluIG9iamVjdCkgbmVpZ2hib3JzLmFkZChuZWlnaGJvcik7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gY3JlYXRpbmcgYW4gYXJyYXkgb2YgcmVsZXZhbnQgbmVpZ2hib3JzIGZvciB0aGUgZ2l2ZW4gbm9kZS5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgICAgIHR5cGUgICAgICAtIFR5cGUgb2YgbmVpZ2hib3JzLlxuICogQHBhcmFtICB7c3RyaW5nfSAgICAgICBkaXJlY3Rpb24gLSBEaXJlY3Rpb24uXG4gKiBAcGFyYW0gIHthbnl9ICAgICAgICAgIG5vZGVEYXRhICAtIFRhcmdldCBub2RlJ3MgZGF0YS5cbiAqIEByZXR1cm4ge0FycmF5fSAgICAgICAgICAgICAgICAgIC0gVGhlIGxpc3Qgb2YgbmVpZ2hib3JzLlxuICovXG5mdW5jdGlvbiBjcmVhdGVOZWlnaGJvckFycmF5Rm9yTm9kZSh0eXBlLCBkaXJlY3Rpb24sIG5vZGVEYXRhKSB7XG4gIC8vIElmIHdlIHdhbnQgb25seSB1bmRpcmVjdGVkIG9yIGluIG9yIG91dCwgd2UgY2FuIHJvbGwgc29tZSBvcHRpbWl6YXRpb25zXG4gIGlmICh0eXBlICE9PSAnbWl4ZWQnKSB7XG4gICAgaWYgKHR5cGUgPT09ICd1bmRpcmVjdGVkJykgcmV0dXJuIE9iamVjdC5rZXlzKG5vZGVEYXRhLnVuZGlyZWN0ZWQpO1xuXG4gICAgaWYgKHR5cGVvZiBkaXJlY3Rpb24gPT09ICdzdHJpbmcnKSByZXR1cm4gT2JqZWN0LmtleXMobm9kZURhdGFbZGlyZWN0aW9uXSk7XG4gIH1cblxuICAvLyBFbHNlIHdlIG5lZWQgdG8ga2VlcCBhIHNldCBvZiBuZWlnaGJvcnMgbm90IHRvIHJldHVybiBkdXBsaWNhdGVzXG4gIGNvbnN0IG5laWdoYm9ycyA9IG5ldyBTZXQoKTtcblxuICBpZiAodHlwZSAhPT0gJ3VuZGlyZWN0ZWQnKSB7XG4gICAgaWYgKGRpcmVjdGlvbiAhPT0gJ291dCcpIHtcbiAgICAgIG1lcmdlKG5laWdoYm9ycywgbm9kZURhdGEuaW4pO1xuICAgIH1cbiAgICBpZiAoZGlyZWN0aW9uICE9PSAnaW4nKSB7XG4gICAgICBtZXJnZShuZWlnaGJvcnMsIG5vZGVEYXRhLm91dCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGUgIT09ICdkaXJlY3RlZCcpIHtcbiAgICBtZXJnZShuZWlnaGJvcnMsIG5vZGVEYXRhLnVuZGlyZWN0ZWQpO1xuICB9XG5cbiAgcmV0dXJuIHRha2UobmVpZ2hib3JzLnZhbHVlcygpLCBuZWlnaGJvcnMuc2l6ZSk7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gaXRlcmF0aW5nIG92ZXIgdGhlIGdpdmVuIG5vZGUncyByZWxldmFudCBuZWlnaGJvcnMgdXNpbmcgYVxuICogY2FsbGJhY2suXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSAgIHR5cGUgICAgICAtIFR5cGUgb2YgbmVpZ2hib3JzLlxuICogQHBhcmFtICB7c3RyaW5nfSAgIGRpcmVjdGlvbiAtIERpcmVjdGlvbi5cbiAqIEBwYXJhbSAge2FueX0gICAgICBub2RlRGF0YSAgLSBUYXJnZXQgbm9kZSdzIGRhdGEuXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICovXG5mdW5jdGlvbiBmb3JFYWNoSW5PYmplY3Qobm9kZURhdGEsIG9iamVjdCwgY2FsbGJhY2spIHtcbiAgZm9yIChjb25zdCBrIGluIG9iamVjdCkge1xuICAgIGxldCBlZGdlRGF0YSA9IG9iamVjdFtrXTtcblxuICAgIGlmIChlZGdlRGF0YSBpbnN0YW5jZW9mIFNldCkgZWRnZURhdGEgPSBlZGdlRGF0YS52YWx1ZXMoKS5uZXh0KCkudmFsdWU7XG5cbiAgICBjb25zdCBzb3VyY2VEYXRhID0gZWRnZURhdGEuc291cmNlLFxuICAgICAgdGFyZ2V0RGF0YSA9IGVkZ2VEYXRhLnRhcmdldDtcblxuICAgIGNvbnN0IG5laWdoYm9yRGF0YSA9IHNvdXJjZURhdGEgPT09IG5vZGVEYXRhID8gdGFyZ2V0RGF0YSA6IHNvdXJjZURhdGE7XG5cbiAgICBjYWxsYmFjayhuZWlnaGJvckRhdGEua2V5LCBuZWlnaGJvckRhdGEuYXR0cmlidXRlcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9yRWFjaEluT2JqZWN0T25jZSh2aXNpdGVkLCBub2RlRGF0YSwgb2JqZWN0LCBjYWxsYmFjaykge1xuICBmb3IgKGNvbnN0IGsgaW4gb2JqZWN0KSB7XG4gICAgbGV0IGVkZ2VEYXRhID0gb2JqZWN0W2tdO1xuXG4gICAgaWYgKGVkZ2VEYXRhIGluc3RhbmNlb2YgU2V0KSBlZGdlRGF0YSA9IGVkZ2VEYXRhLnZhbHVlcygpLm5leHQoKS52YWx1ZTtcblxuICAgIGNvbnN0IHNvdXJjZURhdGEgPSBlZGdlRGF0YS5zb3VyY2UsXG4gICAgICB0YXJnZXREYXRhID0gZWRnZURhdGEudGFyZ2V0O1xuXG4gICAgY29uc3QgbmVpZ2hib3JEYXRhID0gc291cmNlRGF0YSA9PT0gbm9kZURhdGEgPyB0YXJnZXREYXRhIDogc291cmNlRGF0YTtcblxuICAgIGlmICh2aXNpdGVkLmhhcyhuZWlnaGJvckRhdGEua2V5KSkgY29udGludWU7XG5cbiAgICB2aXNpdGVkLmFkZChuZWlnaGJvckRhdGEua2V5KTtcblxuICAgIGNhbGxiYWNrKG5laWdoYm9yRGF0YS5rZXksIG5laWdoYm9yRGF0YS5hdHRyaWJ1dGVzKTtcbiAgfVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIHRoZSBnaXZlbiBub2RlJ3MgcmVsZXZhbnQgbmVpZ2hib3JzIHRvIG1hdGNoXG4gKiBvbmUgb2YgdGhlbSB1c2luZyBhIHByZWRpY2F0ZWQgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSAgIHR5cGUgICAgICAtIFR5cGUgb2YgbmVpZ2hib3JzLlxuICogQHBhcmFtICB7c3RyaW5nfSAgIGRpcmVjdGlvbiAtIERpcmVjdGlvbi5cbiAqIEBwYXJhbSAge2FueX0gICAgICBub2RlRGF0YSAgLSBUYXJnZXQgbm9kZSdzIGRhdGEuXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICovXG5mdW5jdGlvbiBmaW5kSW5PYmplY3Qobm9kZURhdGEsIG9iamVjdCwgY2FsbGJhY2spIHtcbiAgZm9yIChjb25zdCBrIGluIG9iamVjdCkge1xuICAgIGxldCBlZGdlRGF0YSA9IG9iamVjdFtrXTtcblxuICAgIGlmIChlZGdlRGF0YSBpbnN0YW5jZW9mIFNldCkgZWRnZURhdGEgPSBlZGdlRGF0YS52YWx1ZXMoKS5uZXh0KCkudmFsdWU7XG5cbiAgICBjb25zdCBzb3VyY2VEYXRhID0gZWRnZURhdGEuc291cmNlO1xuICAgIGNvbnN0IHRhcmdldERhdGEgPSBlZGdlRGF0YS50YXJnZXQ7XG5cbiAgICBjb25zdCBuZWlnaGJvckRhdGEgPSBzb3VyY2VEYXRhID09PSBub2RlRGF0YSA/IHRhcmdldERhdGEgOiBzb3VyY2VEYXRhO1xuXG4gICAgY29uc3Qgc2hvdWxkQnJlYWsgPSBjYWxsYmFjayhuZWlnaGJvckRhdGEua2V5LCBuZWlnaGJvckRhdGEuYXR0cmlidXRlcyk7XG5cbiAgICBpZiAoc2hvdWxkQnJlYWspIHJldHVybiBuZWlnaGJvckRhdGEua2V5O1xuICB9XG5cbiAgcmV0dXJuO1xufVxuXG5mdW5jdGlvbiBmaW5kSW5PYmplY3RPbmNlKHZpc2l0ZWQsIG5vZGVEYXRhLCBvYmplY3QsIGNhbGxiYWNrKSB7XG4gIGZvciAoY29uc3QgayBpbiBvYmplY3QpIHtcbiAgICBsZXQgZWRnZURhdGEgPSBvYmplY3Rba107XG5cbiAgICBpZiAoZWRnZURhdGEgaW5zdGFuY2VvZiBTZXQpIGVkZ2VEYXRhID0gZWRnZURhdGEudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuXG4gICAgY29uc3Qgc291cmNlRGF0YSA9IGVkZ2VEYXRhLnNvdXJjZTtcbiAgICBjb25zdCB0YXJnZXREYXRhID0gZWRnZURhdGEudGFyZ2V0O1xuXG4gICAgY29uc3QgbmVpZ2hib3JEYXRhID0gc291cmNlRGF0YSA9PT0gbm9kZURhdGEgPyB0YXJnZXREYXRhIDogc291cmNlRGF0YTtcblxuICAgIGlmICh2aXNpdGVkLmhhcyhuZWlnaGJvckRhdGEua2V5KSkgY29udGludWU7XG5cbiAgICB2aXNpdGVkLmFkZChuZWlnaGJvckRhdGEua2V5KTtcblxuICAgIGNvbnN0IHNob3VsZEJyZWFrID0gY2FsbGJhY2sobmVpZ2hib3JEYXRhLmtleSwgbmVpZ2hib3JEYXRhLmF0dHJpYnV0ZXMpO1xuXG4gICAgaWYgKHNob3VsZEJyZWFrKSByZXR1cm4gbmVpZ2hib3JEYXRhLmtleTtcbiAgfVxuXG4gIHJldHVybjtcbn1cblxuZnVuY3Rpb24gZm9yRWFjaE5laWdoYm9yRm9yTm9kZSh0eXBlLCBkaXJlY3Rpb24sIG5vZGVEYXRhLCBjYWxsYmFjaykge1xuICAvLyBJZiB3ZSB3YW50IG9ubHkgdW5kaXJlY3RlZCBvciBpbiBvciBvdXQsIHdlIGNhbiByb2xsIHNvbWUgb3B0aW1pemF0aW9uc1xuICBpZiAodHlwZSAhPT0gJ21peGVkJykge1xuICAgIGlmICh0eXBlID09PSAndW5kaXJlY3RlZCcpXG4gICAgICByZXR1cm4gZm9yRWFjaEluT2JqZWN0KG5vZGVEYXRhLCBub2RlRGF0YS51bmRpcmVjdGVkLCBjYWxsYmFjayk7XG5cbiAgICBpZiAodHlwZW9mIGRpcmVjdGlvbiA9PT0gJ3N0cmluZycpXG4gICAgICByZXR1cm4gZm9yRWFjaEluT2JqZWN0KG5vZGVEYXRhLCBub2RlRGF0YVtkaXJlY3Rpb25dLCBjYWxsYmFjayk7XG4gIH1cblxuICAvLyBFbHNlIHdlIG5lZWQgdG8ga2VlcCBhIHNldCBvZiBuZWlnaGJvcnMgbm90IHRvIHJldHVybiBkdXBsaWNhdGVzXG4gIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0KCk7XG5cbiAgaWYgKHR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgIGlmIChkaXJlY3Rpb24gIT09ICdvdXQnKSB7XG4gICAgICBmb3JFYWNoSW5PYmplY3RPbmNlKHZpc2l0ZWQsIG5vZGVEYXRhLCBub2RlRGF0YS5pbiwgY2FsbGJhY2spO1xuICAgIH1cbiAgICBpZiAoZGlyZWN0aW9uICE9PSAnaW4nKSB7XG4gICAgICBmb3JFYWNoSW5PYmplY3RPbmNlKHZpc2l0ZWQsIG5vZGVEYXRhLCBub2RlRGF0YS5vdXQsIGNhbGxiYWNrKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZSAhPT0gJ2RpcmVjdGVkJykge1xuICAgIGZvckVhY2hJbk9iamVjdE9uY2UodmlzaXRlZCwgbm9kZURhdGEsIG5vZGVEYXRhLnVuZGlyZWN0ZWQsIGNhbGxiYWNrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5kTmVpZ2hib3IodHlwZSwgZGlyZWN0aW9uLCBub2RlRGF0YSwgY2FsbGJhY2spIHtcbiAgLy8gSWYgd2Ugd2FudCBvbmx5IHVuZGlyZWN0ZWQgb3IgaW4gb3Igb3V0LCB3ZSBjYW4gcm9sbCBzb21lIG9wdGltaXphdGlvbnNcbiAgaWYgKHR5cGUgIT09ICdtaXhlZCcpIHtcbiAgICBpZiAodHlwZSA9PT0gJ3VuZGlyZWN0ZWQnKVxuICAgICAgcmV0dXJuIGZpbmRJbk9iamVjdChub2RlRGF0YSwgbm9kZURhdGEudW5kaXJlY3RlZCwgY2FsbGJhY2spO1xuXG4gICAgaWYgKHR5cGVvZiBkaXJlY3Rpb24gPT09ICdzdHJpbmcnKVxuICAgICAgcmV0dXJuIGZpbmRJbk9iamVjdChub2RlRGF0YSwgbm9kZURhdGFbZGlyZWN0aW9uXSwgY2FsbGJhY2spO1xuICB9XG5cbiAgLy8gRWxzZSB3ZSBuZWVkIHRvIGtlZXAgYSBzZXQgb2YgbmVpZ2hib3JzIG5vdCB0byByZXR1cm4gZHVwbGljYXRlc1xuICBjb25zdCB2aXNpdGVkID0gbmV3IFNldCgpO1xuXG4gIGxldCBmb3VuZDtcblxuICBpZiAodHlwZSAhPT0gJ3VuZGlyZWN0ZWQnKSB7XG4gICAgaWYgKGRpcmVjdGlvbiAhPT0gJ291dCcpIHtcbiAgICAgIGZvdW5kID0gZmluZEluT2JqZWN0T25jZSh2aXNpdGVkLCBub2RlRGF0YSwgbm9kZURhdGEuaW4sIGNhbGxiYWNrKTtcblxuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gIT09ICdpbicpIHtcbiAgICAgIGZvdW5kID0gZmluZEluT2JqZWN0T25jZSh2aXNpdGVkLCBub2RlRGF0YSwgbm9kZURhdGEub3V0LCBjYWxsYmFjayk7XG5cbiAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlICE9PSAnZGlyZWN0ZWQnKSB7XG4gICAgZm91bmQgPSBmaW5kSW5PYmplY3RPbmNlKHZpc2l0ZWQsIG5vZGVEYXRhLCBub2RlRGF0YS51bmRpcmVjdGVkLCBjYWxsYmFjayk7XG5cbiAgICBpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcbiAgfVxuXG4gIHJldHVybjtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiByZXR1cm5pbmcgYW4gaXRlcmF0b3Igb3ZlciB0aGUgZ2l2ZW4gbm9kZSdzIHJlbGV2YW50IG5laWdoYm9ycy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgdHlwZSAgICAgIC0gVHlwZSBvZiBuZWlnaGJvcnMuXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgZGlyZWN0aW9uIC0gRGlyZWN0aW9uLlxuICogQHBhcmFtICB7YW55fSAgICAgIG5vZGVEYXRhICAtIFRhcmdldCBub2RlJ3MgZGF0YS5cbiAqIEByZXR1cm4ge0l0ZXJhdG9yfVxuICovXG5mdW5jdGlvbiBjcmVhdGVPYmplY3RJdGVyYXRvcihub2RlRGF0YSwgb2JqZWN0KSB7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpLFxuICAgIGwgPSBrZXlzLmxlbmd0aDtcblxuICBsZXQgaSA9IDA7XG5cbiAgcmV0dXJuIG5ldyBJdGVyYXRvcihmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGkgPj0gbCkgcmV0dXJuIHtkb25lOiB0cnVlfTtcblxuICAgIGxldCBlZGdlRGF0YSA9IG9iamVjdFtrZXlzW2krK11dO1xuXG4gICAgaWYgKGVkZ2VEYXRhIGluc3RhbmNlb2YgU2V0KSBlZGdlRGF0YSA9IGVkZ2VEYXRhLnZhbHVlcygpLm5leHQoKS52YWx1ZTtcblxuICAgIGNvbnN0IHNvdXJjZURhdGEgPSBlZGdlRGF0YS5zb3VyY2UsXG4gICAgICB0YXJnZXREYXRhID0gZWRnZURhdGEudGFyZ2V0O1xuXG4gICAgY29uc3QgbmVpZ2hib3JEYXRhID0gc291cmNlRGF0YSA9PT0gbm9kZURhdGEgPyB0YXJnZXREYXRhIDogc291cmNlRGF0YTtcblxuICAgIHJldHVybiB7XG4gICAgICBkb25lOiBmYWxzZSxcbiAgICAgIHZhbHVlOiB7bmVpZ2hib3I6IG5laWdoYm9yRGF0YS5rZXksIGF0dHJpYnV0ZXM6IG5laWdoYm9yRGF0YS5hdHRyaWJ1dGVzfVxuICAgIH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEZWR1cGVkT2JqZWN0SXRlcmF0b3IodmlzaXRlZCwgbm9kZURhdGEsIG9iamVjdCkge1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KSxcbiAgICBsID0ga2V5cy5sZW5ndGg7XG5cbiAgbGV0IGkgPSAwO1xuXG4gIHJldHVybiBuZXcgSXRlcmF0b3IoZnVuY3Rpb24gbmV4dCgpIHtcbiAgICBpZiAoaSA+PSBsKSByZXR1cm4ge2RvbmU6IHRydWV9O1xuXG4gICAgbGV0IGVkZ2VEYXRhID0gb2JqZWN0W2tleXNbaSsrXV07XG5cbiAgICBpZiAoZWRnZURhdGEgaW5zdGFuY2VvZiBTZXQpIGVkZ2VEYXRhID0gZWRnZURhdGEudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuXG4gICAgY29uc3Qgc291cmNlRGF0YSA9IGVkZ2VEYXRhLnNvdXJjZSxcbiAgICAgIHRhcmdldERhdGEgPSBlZGdlRGF0YS50YXJnZXQ7XG5cbiAgICBjb25zdCBuZWlnaGJvckRhdGEgPSBzb3VyY2VEYXRhID09PSBub2RlRGF0YSA/IHRhcmdldERhdGEgOiBzb3VyY2VEYXRhO1xuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKG5laWdoYm9yRGF0YS5rZXkpKSByZXR1cm4gbmV4dCgpO1xuXG4gICAgdmlzaXRlZC5hZGQobmVpZ2hib3JEYXRhLmtleSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZG9uZTogZmFsc2UsXG4gICAgICB2YWx1ZToge25laWdoYm9yOiBuZWlnaGJvckRhdGEua2V5LCBhdHRyaWJ1dGVzOiBuZWlnaGJvckRhdGEuYXR0cmlidXRlc31cbiAgICB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlTmVpZ2hib3JJdGVyYXRvcih0eXBlLCBkaXJlY3Rpb24sIG5vZGVEYXRhKSB7XG4gIC8vIElmIHdlIHdhbnQgb25seSB1bmRpcmVjdGVkIG9yIGluIG9yIG91dCwgd2UgY2FuIHJvbGwgc29tZSBvcHRpbWl6YXRpb25zXG4gIGlmICh0eXBlICE9PSAnbWl4ZWQnKSB7XG4gICAgaWYgKHR5cGUgPT09ICd1bmRpcmVjdGVkJylcbiAgICAgIHJldHVybiBjcmVhdGVPYmplY3RJdGVyYXRvcihub2RlRGF0YSwgbm9kZURhdGEudW5kaXJlY3RlZCk7XG5cbiAgICBpZiAodHlwZW9mIGRpcmVjdGlvbiA9PT0gJ3N0cmluZycpXG4gICAgICByZXR1cm4gY3JlYXRlT2JqZWN0SXRlcmF0b3Iobm9kZURhdGEsIG5vZGVEYXRhW2RpcmVjdGlvbl0pO1xuICB9XG5cbiAgbGV0IGl0ZXJhdG9yID0gSXRlcmF0b3IuZW1wdHkoKTtcblxuICAvLyBFbHNlIHdlIG5lZWQgdG8ga2VlcCBhIHNldCBvZiBuZWlnaGJvcnMgbm90IHRvIHJldHVybiBkdXBsaWNhdGVzXG4gIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0KCk7XG5cbiAgaWYgKHR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgIGlmIChkaXJlY3Rpb24gIT09ICdvdXQnKSB7XG4gICAgICBpdGVyYXRvciA9IGNoYWluKFxuICAgICAgICBpdGVyYXRvcixcbiAgICAgICAgY3JlYXRlRGVkdXBlZE9iamVjdEl0ZXJhdG9yKHZpc2l0ZWQsIG5vZGVEYXRhLCBub2RlRGF0YS5pbilcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gIT09ICdpbicpIHtcbiAgICAgIGl0ZXJhdG9yID0gY2hhaW4oXG4gICAgICAgIGl0ZXJhdG9yLFxuICAgICAgICBjcmVhdGVEZWR1cGVkT2JqZWN0SXRlcmF0b3IodmlzaXRlZCwgbm9kZURhdGEsIG5vZGVEYXRhLm91dClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGUgIT09ICdkaXJlY3RlZCcpIHtcbiAgICBpdGVyYXRvciA9IGNoYWluKFxuICAgICAgaXRlcmF0b3IsXG4gICAgICBjcmVhdGVEZWR1cGVkT2JqZWN0SXRlcmF0b3IodmlzaXRlZCwgbm9kZURhdGEsIG5vZGVEYXRhLnVuZGlyZWN0ZWQpXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBpdGVyYXRvcjtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBhdHRhY2hpbmcgYSBuZWlnaGJvcnMgYXJyYXkgY3JlYXRvciBtZXRob2QgdG8gdGhlIEdyYXBoIHByb3RvdHlwZS5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzcyAgICAgICAtIFRhcmdldCBjbGFzcy5cbiAqIEBwYXJhbSB7b2JqZWN0fSAgIGRlc2NyaXB0aW9uIC0gTWV0aG9kIGRlc2NyaXB0aW9uLlxuICovXG5mdW5jdGlvbiBhdHRhY2hOZWlnaGJvckFycmF5Q3JlYXRvcihDbGFzcywgZGVzY3JpcHRpb24pIHtcbiAgY29uc3Qge25hbWUsIHR5cGUsIGRpcmVjdGlvbn0gPSBkZXNjcmlwdGlvbjtcblxuICAvKipcbiAgICogRnVuY3Rpb24gcmV0dXJuaW5nIGFuIGFycmF5IG9mIGNlcnRhaW4gbmVpZ2hib3JzLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgbm9kZSAgIC0gVGFyZ2V0IG5vZGUuXG4gICAqIEByZXR1cm4ge2FycmF5fSAtIFRoZSBuZWlnaGJvcnMgb2YgbmVpZ2hib3JzLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIG5vZGUgaXMgbm90IGZvdW5kIGluIHRoZSBncmFwaC5cbiAgICovXG4gIENsYXNzLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgLy8gRWFybHkgdGVybWluYXRpb25cbiAgICBpZiAodHlwZSAhPT0gJ21peGVkJyAmJiB0aGlzLnR5cGUgIT09ICdtaXhlZCcgJiYgdHlwZSAhPT0gdGhpcy50eXBlKVxuICAgICAgcmV0dXJuIFtdO1xuXG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKHR5cGVvZiBub2RlRGF0YSA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHtuYW1lfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICAvLyBIZXJlLCB3ZSB3YW50IHRvIGl0ZXJhdGUgb3ZlciBhIG5vZGUncyByZWxldmFudCBuZWlnaGJvcnNcbiAgICByZXR1cm4gY3JlYXRlTmVpZ2hib3JBcnJheUZvck5vZGUoXG4gICAgICB0eXBlID09PSAnbWl4ZWQnID8gdGhpcy50eXBlIDogdHlwZSxcbiAgICAgIGRpcmVjdGlvbixcbiAgICAgIG5vZGVEYXRhXG4gICAgKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBhdHRhY2hpbmcgYSBuZWlnaGJvcnMgY2FsbGJhY2sgaXRlcmF0b3IgbWV0aG9kIHRvIHRoZSBHcmFwaCBwcm90b3R5cGUuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3MgICAgICAgLSBUYXJnZXQgY2xhc3MuXG4gKiBAcGFyYW0ge29iamVjdH0gICBkZXNjcmlwdGlvbiAtIE1ldGhvZCBkZXNjcmlwdGlvbi5cbiAqL1xuZnVuY3Rpb24gYXR0YWNoRm9yRWFjaE5laWdoYm9yKENsYXNzLCBkZXNjcmlwdGlvbikge1xuICBjb25zdCB7bmFtZSwgdHlwZSwgZGlyZWN0aW9ufSA9IGRlc2NyaXB0aW9uO1xuXG4gIGNvbnN0IGZvckVhY2hOYW1lID0gJ2ZvckVhY2gnICsgbmFtZVswXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxLCAtMSk7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIGFsbCB0aGUgcmVsZXZhbnQgbmVpZ2hib3JzIHVzaW5nIGEgY2FsbGJhY2suXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgICBub2RlICAgICAtIFRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byB1c2UuXG4gICAqIEByZXR1cm4ge3VuZGVmaW5lZH1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgYXJndW1lbnRzLlxuICAgKi9cbiAgQ2xhc3MucHJvdG90eXBlW2ZvckVhY2hOYW1lXSA9IGZ1bmN0aW9uIChub2RlLCBjYWxsYmFjaykge1xuICAgIC8vIEVhcmx5IHRlcm1pbmF0aW9uXG4gICAgaWYgKHR5cGUgIT09ICdtaXhlZCcgJiYgdGhpcy50eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09IHRoaXMudHlwZSkgcmV0dXJuO1xuXG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKHR5cGVvZiBub2RlRGF0YSA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHtmb3JFYWNoTmFtZX06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7bm9kZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgLy8gSGVyZSwgd2Ugd2FudCB0byBpdGVyYXRlIG92ZXIgYSBub2RlJ3MgcmVsZXZhbnQgbmVpZ2hib3JzXG4gICAgZm9yRWFjaE5laWdoYm9yRm9yTm9kZShcbiAgICAgIHR5cGUgPT09ICdtaXhlZCcgPyB0aGlzLnR5cGUgOiB0eXBlLFxuICAgICAgZGlyZWN0aW9uLFxuICAgICAgbm9kZURhdGEsXG4gICAgICBjYWxsYmFja1xuICAgICk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIG1hcHBpbmcgdGhlIHJlbGV2YW50IG5laWdoYm9ycyB1c2luZyBhIGNhbGxiYWNrLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgbm9kZSAgICAgLSBUYXJnZXQgbm9kZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZXJlIGFyZSB0b28gbWFueSBhcmd1bWVudHMuXG4gICAqL1xuICBjb25zdCBtYXBOYW1lID0gJ21hcCcgKyBuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpO1xuXG4gIENsYXNzLnByb3RvdHlwZVttYXBOYW1lXSA9IGZ1bmN0aW9uIChub2RlLCBjYWxsYmFjaykge1xuICAgIC8vIFRPRE86IG9wdGltaXplIHdoZW4gc2l6ZSBpcyBrbm93biBiZWZvcmVoYW5kXG4gICAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgICB0aGlzW2ZvckVhY2hOYW1lXShub2RlLCAobiwgYSkgPT4ge1xuICAgICAgcmVzdWx0LnB1c2goY2FsbGJhY2sobiwgYSkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvKipcbiAgICogRnVuY3Rpb24gZmlsdGVyaW5nIHRoZSByZWxldmFudCBuZWlnaGJvcnMgdXNpbmcgYSBjYWxsYmFjay5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgIG5vZGUgICAgIC0gVGFyZ2V0IG5vZGUuXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIHVzZS5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgYXJndW1lbnRzLlxuICAgKi9cbiAgY29uc3QgZmlsdGVyTmFtZSA9ICdmaWx0ZXInICsgbmFtZVswXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKTtcblxuICBDbGFzcy5wcm90b3R5cGVbZmlsdGVyTmFtZV0gPSBmdW5jdGlvbiAobm9kZSwgY2FsbGJhY2spIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgIHRoaXNbZm9yRWFjaE5hbWVdKG5vZGUsIChuLCBhKSA9PiB7XG4gICAgICBpZiAoY2FsbGJhY2sobiwgYSkpIHJlc3VsdC5wdXNoKG4pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvKipcbiAgICogRnVuY3Rpb24gcmVkdWNpbmcgdGhlIHJlbGV2YW50IG5laWdoYm9ycyB1c2luZyBhIGNhbGxiYWNrLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgbm9kZSAgICAgLSBUYXJnZXQgbm9kZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZXJlIGFyZSB0b28gbWFueSBhcmd1bWVudHMuXG4gICAqL1xuICBjb25zdCByZWR1Y2VOYW1lID0gJ3JlZHVjZScgKyBuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpO1xuXG4gIENsYXNzLnByb3RvdHlwZVtyZWR1Y2VOYW1lXSA9IGZ1bmN0aW9uIChub2RlLCBjYWxsYmFjaywgaW5pdGlhbFZhbHVlKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAzKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHtyZWR1Y2VOYW1lfTogbWlzc2luZyBpbml0aWFsIHZhbHVlLiBZb3UgbXVzdCBwcm92aWRlIGl0IGJlY2F1c2UgdGhlIGNhbGxiYWNrIHRha2VzIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQgYW5kIHdlIGNhbm5vdCBpbmZlciB0aGUgaW5pdGlhbCB2YWx1ZSBmcm9tIHRoZSBmaXJzdCBpdGVyYXRpb24sIGFzIHlvdSBjb3VsZCB3aXRoIGEgc2ltcGxlIGFycmF5LmBcbiAgICAgICk7XG5cbiAgICBsZXQgYWNjdW11bGF0b3IgPSBpbml0aWFsVmFsdWU7XG5cbiAgICB0aGlzW2ZvckVhY2hOYW1lXShub2RlLCAobiwgYSkgPT4ge1xuICAgICAgYWNjdW11bGF0b3IgPSBjYWxsYmFjayhhY2N1bXVsYXRvciwgbiwgYSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH07XG59XG5cbi8qKlxuICogRnVuY3Rpb24gYXR0YWNoaW5nIGEgYnJlYWthYmxlIG5laWdoYm9ycyBjYWxsYmFjayBpdGVyYXRvciBtZXRob2QgdG8gdGhlXG4gKiBHcmFwaCBwcm90b3R5cGUuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3MgICAgICAgLSBUYXJnZXQgY2xhc3MuXG4gKiBAcGFyYW0ge29iamVjdH0gICBkZXNjcmlwdGlvbiAtIE1ldGhvZCBkZXNjcmlwdGlvbi5cbiAqL1xuZnVuY3Rpb24gYXR0YWNoRmluZE5laWdoYm9yKENsYXNzLCBkZXNjcmlwdGlvbikge1xuICBjb25zdCB7bmFtZSwgdHlwZSwgZGlyZWN0aW9ufSA9IGRlc2NyaXB0aW9uO1xuXG4gIGNvbnN0IGNhcGl0YWxpemVkU2luZ3VsYXIgPSBuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEsIC0xKTtcblxuICBjb25zdCBmaW5kTmFtZSA9ICdmaW5kJyArIGNhcGl0YWxpemVkU2luZ3VsYXI7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIGFsbCB0aGUgcmVsZXZhbnQgbmVpZ2hib3JzIHVzaW5nIGEgY2FsbGJhY2suXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgICBub2RlICAgICAtIFRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byB1c2UuXG4gICAqIEByZXR1cm4ge3VuZGVmaW5lZH1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgYXJndW1lbnRzLlxuICAgKi9cbiAgQ2xhc3MucHJvdG90eXBlW2ZpbmROYW1lXSA9IGZ1bmN0aW9uIChub2RlLCBjYWxsYmFjaykge1xuICAgIC8vIEVhcmx5IHRlcm1pbmF0aW9uXG4gICAgaWYgKHR5cGUgIT09ICdtaXhlZCcgJiYgdGhpcy50eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09IHRoaXMudHlwZSkgcmV0dXJuO1xuXG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKHR5cGVvZiBub2RlRGF0YSA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHtmaW5kTmFtZX06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7bm9kZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgLy8gSGVyZSwgd2Ugd2FudCB0byBpdGVyYXRlIG92ZXIgYSBub2RlJ3MgcmVsZXZhbnQgbmVpZ2hib3JzXG4gICAgcmV0dXJuIGZpbmROZWlnaGJvcihcbiAgICAgIHR5cGUgPT09ICdtaXhlZCcgPyB0aGlzLnR5cGUgOiB0eXBlLFxuICAgICAgZGlyZWN0aW9uLFxuICAgICAgbm9kZURhdGEsXG4gICAgICBjYWxsYmFja1xuICAgICk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIGFsbCB0aGUgcmVsZXZhbnQgbmVpZ2hib3JzIHRvIGZpbmQgaWYgYW55IG9mIHRoZW1cbiAgICogbWF0Y2hlcyB0aGUgZ2l2ZW4gcHJlZGljYXRlLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgbm9kZSAgICAgLSBUYXJnZXQgbm9kZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZXJlIGFyZSB0b28gbWFueSBhcmd1bWVudHMuXG4gICAqL1xuICBjb25zdCBzb21lTmFtZSA9ICdzb21lJyArIGNhcGl0YWxpemVkU2luZ3VsYXI7XG5cbiAgQ2xhc3MucHJvdG90eXBlW3NvbWVOYW1lXSA9IGZ1bmN0aW9uIChub2RlLCBjYWxsYmFjaykge1xuICAgIGNvbnN0IGZvdW5kID0gdGhpc1tmaW5kTmFtZV0obm9kZSwgY2FsbGJhY2spO1xuXG4gICAgaWYgKGZvdW5kKSByZXR1cm4gdHJ1ZTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICAvKipcbiAgICogRnVuY3Rpb24gaXRlcmF0aW5nIG92ZXIgYWxsIHRoZSByZWxldmFudCBuZWlnaGJvcnMgdG8gZmluZCBpZiBhbGwgb2YgdGhlbVxuICAgKiBtYXRjaGUgdGhlIGdpdmVuIHByZWRpY2F0ZS5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgIG5vZGUgICAgIC0gVGFyZ2V0IG5vZGUuXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIHVzZS5cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgYXJndW1lbnRzLlxuICAgKi9cbiAgY29uc3QgZXZlcnlOYW1lID0gJ2V2ZXJ5JyArIGNhcGl0YWxpemVkU2luZ3VsYXI7XG5cbiAgQ2xhc3MucHJvdG90eXBlW2V2ZXJ5TmFtZV0gPSBmdW5jdGlvbiAobm9kZSwgY2FsbGJhY2spIHtcbiAgICBjb25zdCBmb3VuZCA9IHRoaXNbZmluZE5hbWVdKG5vZGUsIChuLCBhKSA9PiB7XG4gICAgICByZXR1cm4gIWNhbGxiYWNrKG4sIGEpO1xuICAgIH0pO1xuXG4gICAgaWYgKGZvdW5kKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBhdHRhY2hpbmcgYSBuZWlnaGJvcnMgY2FsbGJhY2sgaXRlcmF0b3IgbWV0aG9kIHRvIHRoZSBHcmFwaCBwcm90b3R5cGUuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3MgICAgICAgLSBUYXJnZXQgY2xhc3MuXG4gKiBAcGFyYW0ge29iamVjdH0gICBkZXNjcmlwdGlvbiAtIE1ldGhvZCBkZXNjcmlwdGlvbi5cbiAqL1xuZnVuY3Rpb24gYXR0YWNoTmVpZ2hib3JJdGVyYXRvckNyZWF0b3IoQ2xhc3MsIGRlc2NyaXB0aW9uKSB7XG4gIGNvbnN0IHtuYW1lLCB0eXBlLCBkaXJlY3Rpb259ID0gZGVzY3JpcHRpb247XG5cbiAgY29uc3QgaXRlcmF0b3JOYW1lID0gbmFtZS5zbGljZSgwLCAtMSkgKyAnRW50cmllcyc7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHJldHVybmluZyBhbiBpdGVyYXRvciBvdmVyIGFsbCB0aGUgcmVsZXZhbnQgbmVpZ2hib3JzLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgbm9kZSAgICAgLSBUYXJnZXQgbm9kZS5cbiAgICogQHJldHVybiB7SXRlcmF0b3J9XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlcmUgYXJlIHRvbyBtYW55IGFyZ3VtZW50cy5cbiAgICovXG4gIENsYXNzLnByb3RvdHlwZVtpdGVyYXRvck5hbWVdID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAvLyBFYXJseSB0ZXJtaW5hdGlvblxuICAgIGlmICh0eXBlICE9PSAnbWl4ZWQnICYmIHRoaXMudHlwZSAhPT0gJ21peGVkJyAmJiB0eXBlICE9PSB0aGlzLnR5cGUpXG4gICAgICByZXR1cm4gSXRlcmF0b3IuZW1wdHkoKTtcblxuICAgIG5vZGUgPSAnJyArIG5vZGU7XG5cbiAgICBjb25zdCBub2RlRGF0YSA9IHRoaXMuX25vZGVzLmdldChub2RlKTtcblxuICAgIGlmICh0eXBlb2Ygbm9kZURhdGEgPT09ICd1bmRlZmluZWQnKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7aXRlcmF0b3JOYW1lfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICAvLyBIZXJlLCB3ZSB3YW50IHRvIGl0ZXJhdGUgb3ZlciBhIG5vZGUncyByZWxldmFudCBuZWlnaGJvcnNcbiAgICByZXR1cm4gY3JlYXRlTmVpZ2hib3JJdGVyYXRvcihcbiAgICAgIHR5cGUgPT09ICdtaXhlZCcgPyB0aGlzLnR5cGUgOiB0eXBlLFxuICAgICAgZGlyZWN0aW9uLFxuICAgICAgbm9kZURhdGFcbiAgICApO1xuICB9O1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGF0dGFjaGluZyBldmVyeSBuZWlnaGJvciBpdGVyYXRpb24gbWV0aG9kIHRvIHRoZSBHcmFwaCBjbGFzcy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBHcmFwaCAtIEdyYXBoIGNsYXNzLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhdHRhY2hOZWlnaGJvckl0ZXJhdGlvbk1ldGhvZHMoR3JhcGgpIHtcbiAgTkVJR0hCT1JTX0lURVJBVElPTi5mb3JFYWNoKGRlc2NyaXB0aW9uID0+IHtcbiAgICBhdHRhY2hOZWlnaGJvckFycmF5Q3JlYXRvcihHcmFwaCwgZGVzY3JpcHRpb24pO1xuICAgIGF0dGFjaEZvckVhY2hOZWlnaGJvcihHcmFwaCwgZGVzY3JpcHRpb24pO1xuICAgIGF0dGFjaEZpbmROZWlnaGJvcihHcmFwaCwgZGVzY3JpcHRpb24pO1xuICAgIGF0dGFjaE5laWdoYm9ySXRlcmF0b3JDcmVhdG9yKEdyYXBoLCBkZXNjcmlwdGlvbik7XG4gIH0pO1xufVxuIiwgIi8qKlxuICogR3JhcGhvbG9neSBBZGphY2VuY3kgSXRlcmF0aW9uXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIEF0dGFjaGluZyBzb21lIG1ldGhvZHMgdG8gdGhlIEdyYXBoIGNsYXNzIHRvIGJlIGFibGUgdG8gaXRlcmF0ZSBvdmVyIGFcbiAqIGdyYXBoJ3MgYWRqYWNlbmN5LlxuICovXG5cbi8qKlxuICogRnVuY3Rpb24gaXRlcmF0aW5nIG92ZXIgYSBzaW1wbGUgZ3JhcGgncyBhZGphY2VuY3kgdXNpbmcgYSBjYWxsYmFjay5cbiAqXG4gKiBAcGFyYW0ge2Jvb2xlYW59ICBicmVha2FibGUgICAgICAgICAtIENhbiB3ZSBicmVhaz9cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gIGFzc3ltZXRyaWMgICAgICAgIC0gV2hldGhlciB0byBlbWl0IHVuZGlyZWN0ZWQgZWRnZXMgb25seSBvbmNlLlxuICogQHBhcmFtIHtib29sZWFufSAgZGlzY29ubmVjdGVkTm9kZXMgLSBXaGV0aGVyIHRvIGVtaXQgZGlzY29ubmVjdGVkIG5vZGVzLlxuICogQHBhcmFtIHtHcmFwaH0gICAgZ3JhcGggICAgICAgICAgICAgLSBUYXJnZXQgR3JhcGggaW5zdGFuY2UuXG4gKiBAcGFyYW0ge2NhbGxiYWNrfSBmdW5jdGlvbiAgICAgICAgICAtIEl0ZXJhdGlvbiBjYWxsYmFjay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvckVhY2hBZGphY2VuY3lTaW1wbGUoXG4gIGJyZWFrYWJsZSxcbiAgYXNzeW1ldHJpYyxcbiAgZGlzY29ubmVjdGVkTm9kZXMsXG4gIGdyYXBoLFxuICBjYWxsYmFja1xuKSB7XG4gIGNvbnN0IGl0ZXJhdG9yID0gZ3JhcGguX25vZGVzLnZhbHVlcygpO1xuXG4gIGNvbnN0IHR5cGUgPSBncmFwaC50eXBlO1xuXG4gIGxldCBzdGVwLCBzb3VyY2VEYXRhLCBuZWlnaGJvciwgYWRqLCBlZGdlRGF0YSwgdGFyZ2V0RGF0YSwgc2hvdWxkQnJlYWs7XG5cbiAgd2hpbGUgKCgoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSksIHN0ZXAuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICBsZXQgaGFzRWRnZXMgPSBmYWxzZTtcblxuICAgIHNvdXJjZURhdGEgPSBzdGVwLnZhbHVlO1xuXG4gICAgaWYgKHR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgICAgYWRqID0gc291cmNlRGF0YS5vdXQ7XG5cbiAgICAgIGZvciAobmVpZ2hib3IgaW4gYWRqKSB7XG4gICAgICAgIGVkZ2VEYXRhID0gYWRqW25laWdoYm9yXTtcbiAgICAgICAgdGFyZ2V0RGF0YSA9IGVkZ2VEYXRhLnRhcmdldDtcblxuICAgICAgICBoYXNFZGdlcyA9IHRydWU7XG4gICAgICAgIHNob3VsZEJyZWFrID0gY2FsbGJhY2soXG4gICAgICAgICAgc291cmNlRGF0YS5rZXksXG4gICAgICAgICAgdGFyZ2V0RGF0YS5rZXksXG4gICAgICAgICAgc291cmNlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgIHRhcmdldERhdGEuYXR0cmlidXRlcyxcbiAgICAgICAgICBlZGdlRGF0YS5rZXksXG4gICAgICAgICAgZWRnZURhdGEuYXR0cmlidXRlcyxcbiAgICAgICAgICBlZGdlRGF0YS51bmRpcmVjdGVkXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGJyZWFrYWJsZSAmJiBzaG91bGRCcmVhaykgcmV0dXJuIGVkZ2VEYXRhO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlICE9PSAnZGlyZWN0ZWQnKSB7XG4gICAgICBhZGogPSBzb3VyY2VEYXRhLnVuZGlyZWN0ZWQ7XG5cbiAgICAgIGZvciAobmVpZ2hib3IgaW4gYWRqKSB7XG4gICAgICAgIGlmIChhc3N5bWV0cmljICYmIHNvdXJjZURhdGEua2V5ID4gbmVpZ2hib3IpIGNvbnRpbnVlO1xuXG4gICAgICAgIGVkZ2VEYXRhID0gYWRqW25laWdoYm9yXTtcbiAgICAgICAgdGFyZ2V0RGF0YSA9IGVkZ2VEYXRhLnRhcmdldDtcblxuICAgICAgICBpZiAodGFyZ2V0RGF0YS5rZXkgIT09IG5laWdoYm9yKSB0YXJnZXREYXRhID0gZWRnZURhdGEuc291cmNlO1xuXG4gICAgICAgIGhhc0VkZ2VzID0gdHJ1ZTtcbiAgICAgICAgc2hvdWxkQnJlYWsgPSBjYWxsYmFjayhcbiAgICAgICAgICBzb3VyY2VEYXRhLmtleSxcbiAgICAgICAgICB0YXJnZXREYXRhLmtleSxcbiAgICAgICAgICBzb3VyY2VEYXRhLmF0dHJpYnV0ZXMsXG4gICAgICAgICAgdGFyZ2V0RGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgIGVkZ2VEYXRhLmtleSxcbiAgICAgICAgICBlZGdlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgIGVkZ2VEYXRhLnVuZGlyZWN0ZWRcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoYnJlYWthYmxlICYmIHNob3VsZEJyZWFrKSByZXR1cm4gZWRnZURhdGE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRpc2Nvbm5lY3RlZE5vZGVzICYmICFoYXNFZGdlcykge1xuICAgICAgc2hvdWxkQnJlYWsgPSBjYWxsYmFjayhcbiAgICAgICAgc291cmNlRGF0YS5rZXksXG4gICAgICAgIG51bGwsXG4gICAgICAgIHNvdXJjZURhdGEuYXR0cmlidXRlcyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbnVsbFxuICAgICAgKTtcblxuICAgICAgaWYgKGJyZWFrYWJsZSAmJiBzaG91bGRCcmVhaykgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuO1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIGEgbXVsdGkgZ3JhcGgncyBhZGphY2VuY3kgdXNpbmcgYSBjYWxsYmFjay5cbiAqXG4gKiBAcGFyYW0ge2Jvb2xlYW59ICBicmVha2FibGUgICAgICAgICAtIENhbiB3ZSBicmVhaz9cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gIGFzc3ltZXRyaWMgICAgICAgIC0gV2hldGhlciB0byBlbWl0IHVuZGlyZWN0ZWQgZWRnZXMgb25seSBvbmNlLlxuICogQHBhcmFtIHtib29sZWFufSAgZGlzY29ubmVjdGVkTm9kZXMgLSBXaGV0aGVyIHRvIGVtaXQgZGlzY29ubmVjdGVkIG5vZGVzLlxuICogQHBhcmFtIHtHcmFwaH0gICAgZ3JhcGggICAgICAgICAgICAgLSBUYXJnZXQgR3JhcGggaW5zdGFuY2UuXG4gKiBAcGFyYW0ge2NhbGxiYWNrfSBmdW5jdGlvbiAgICAgICAgICAtIEl0ZXJhdGlvbiBjYWxsYmFjay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvckVhY2hBZGphY2VuY3lNdWx0aShcbiAgYnJlYWthYmxlLFxuICBhc3N5bWV0cmljLFxuICBkaXNjb25uZWN0ZWROb2RlcyxcbiAgZ3JhcGgsXG4gIGNhbGxiYWNrXG4pIHtcbiAgY29uc3QgaXRlcmF0b3IgPSBncmFwaC5fbm9kZXMudmFsdWVzKCk7XG5cbiAgY29uc3QgdHlwZSA9IGdyYXBoLnR5cGU7XG5cbiAgbGV0IHN0ZXA7XG4gIGxldCBzb3VyY2VEYXRhO1xuICBsZXQgbmVpZ2hib3I7XG4gIGxldCBjb250YWluZXI7XG4gIGxldCBjb250YWluZXJTdGVwO1xuICBsZXQgYWRqO1xuICBsZXQgZWRnZURhdGE7XG4gIGxldCB0YXJnZXREYXRhO1xuICBsZXQgc2hvdWxkQnJlYWs7XG5cbiAgd2hpbGUgKCgoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSksIHN0ZXAuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICBsZXQgaGFzRWRnZXMgPSBmYWxzZTtcblxuICAgIHNvdXJjZURhdGEgPSBzdGVwLnZhbHVlO1xuXG4gICAgaWYgKHR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgICAgYWRqID0gc291cmNlRGF0YS5vdXQ7XG5cbiAgICAgIGZvciAobmVpZ2hib3IgaW4gYWRqKSB7XG4gICAgICAgIGNvbnRhaW5lciA9IGFkaltuZWlnaGJvcl0udmFsdWVzKCk7XG5cbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICgoY29udGFpbmVyU3RlcCA9IGNvbnRhaW5lci5uZXh0KCkpLCBjb250YWluZXJTdGVwLmRvbmUgIT09IHRydWUpXG4gICAgICAgICkge1xuICAgICAgICAgIGVkZ2VEYXRhID0gY29udGFpbmVyU3RlcC52YWx1ZTtcbiAgICAgICAgICB0YXJnZXREYXRhID0gZWRnZURhdGEudGFyZ2V0O1xuXG4gICAgICAgICAgaGFzRWRnZXMgPSB0cnVlO1xuICAgICAgICAgIHNob3VsZEJyZWFrID0gY2FsbGJhY2soXG4gICAgICAgICAgICBzb3VyY2VEYXRhLmtleSxcbiAgICAgICAgICAgIHRhcmdldERhdGEua2V5LFxuICAgICAgICAgICAgc291cmNlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgdGFyZ2V0RGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgZWRnZURhdGEua2V5LFxuICAgICAgICAgICAgZWRnZURhdGEuYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGVkZ2VEYXRhLnVuZGlyZWN0ZWRcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKGJyZWFrYWJsZSAmJiBzaG91bGRCcmVhaykgcmV0dXJuIGVkZ2VEYXRhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgIT09ICdkaXJlY3RlZCcpIHtcbiAgICAgIGFkaiA9IHNvdXJjZURhdGEudW5kaXJlY3RlZDtcblxuICAgICAgZm9yIChuZWlnaGJvciBpbiBhZGopIHtcbiAgICAgICAgaWYgKGFzc3ltZXRyaWMgJiYgc291cmNlRGF0YS5rZXkgPiBuZWlnaGJvcikgY29udGludWU7XG5cbiAgICAgICAgY29udGFpbmVyID0gYWRqW25laWdoYm9yXS52YWx1ZXMoKTtcblxuICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgKChjb250YWluZXJTdGVwID0gY29udGFpbmVyLm5leHQoKSksIGNvbnRhaW5lclN0ZXAuZG9uZSAhPT0gdHJ1ZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgZWRnZURhdGEgPSBjb250YWluZXJTdGVwLnZhbHVlO1xuICAgICAgICAgIHRhcmdldERhdGEgPSBlZGdlRGF0YS50YXJnZXQ7XG5cbiAgICAgICAgICBpZiAodGFyZ2V0RGF0YS5rZXkgIT09IG5laWdoYm9yKSB0YXJnZXREYXRhID0gZWRnZURhdGEuc291cmNlO1xuXG4gICAgICAgICAgaGFzRWRnZXMgPSB0cnVlO1xuICAgICAgICAgIHNob3VsZEJyZWFrID0gY2FsbGJhY2soXG4gICAgICAgICAgICBzb3VyY2VEYXRhLmtleSxcbiAgICAgICAgICAgIHRhcmdldERhdGEua2V5LFxuICAgICAgICAgICAgc291cmNlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgdGFyZ2V0RGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgZWRnZURhdGEua2V5LFxuICAgICAgICAgICAgZWRnZURhdGEuYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGVkZ2VEYXRhLnVuZGlyZWN0ZWRcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKGJyZWFrYWJsZSAmJiBzaG91bGRCcmVhaykgcmV0dXJuIGVkZ2VEYXRhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRpc2Nvbm5lY3RlZE5vZGVzICYmICFoYXNFZGdlcykge1xuICAgICAgc2hvdWxkQnJlYWsgPSBjYWxsYmFjayhcbiAgICAgICAgc291cmNlRGF0YS5rZXksXG4gICAgICAgIG51bGwsXG4gICAgICAgIHNvdXJjZURhdGEuYXR0cmlidXRlcyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbnVsbFxuICAgICAgKTtcblxuICAgICAgaWYgKGJyZWFrYWJsZSAmJiBzaG91bGRCcmVhaykgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuO1xufVxuXG4vLyBleHBvcnQgZnVuY3Rpb24gY3JlYXRlQWRqYWNlbmN5SXRlcmF0b3JTaW1wbGUoZ3JhcGgpIHtcbi8vICAgY29uc3QgaXRlcmF0b3IgPSBncmFwaC5fbm9kZXMudmFsdWVzKCk7XG5cbi8vICAgY29uc3QgdHlwZSA9IGdyYXBoLnR5cGU7XG5cbi8vICAgbGV0IHN0YXRlID0gJ291dGVyJyxcbi8vICAgICBzb3VyY2VEYXRhLFxuLy8gICAgIG5laWdoYm9ycyxcbi8vICAgICBhZGosXG4vLyAgICAgb2Zmc2V0O1xuXG4vLyAgIHJldHVybiBuZXcgSXRlcmF0b3IoZnVuY3Rpb24gbmV4dCgpIHtcbi8vICAgICBsZXQgc3RlcDtcblxuLy8gICAgIGlmIChzdGF0ZSA9PT0gJ291dGVyJykge1xuLy8gICAgICAgc3RlcCA9IGl0ZXJhdG9yLm5leHQoKTtcblxuLy8gICAgICAgaWYgKHN0ZXAuZG9uZSA9PT0gdHJ1ZSkgcmV0dXJuIHN0ZXA7XG5cbi8vICAgICAgIHNvdXJjZURhdGEgPSBzdGVwLnZhbHVlO1xuXG4vLyAgICAgICBzdGF0ZSA9ICdkaXJlY3RlZCc7XG4vLyAgICAgICByZXR1cm4gbmV4dCgpO1xuLy8gICAgIH1cblxuLy8gICAgIGlmIChzdGF0ZSA9PT0gJ2RpcmVjdGVkJykge1xuLy8gICAgICAgaWYgKHR5cGUgPT09ICd1bmRpcmVjdGVkJykge1xuLy8gICAgICAgICBzdGF0ZSA9ICd1bmRpcmVjdGVkJztcbi8vICAgICAgICAgcmV0dXJuIG5leHQoKTtcbi8vICAgICAgIH1cblxuLy8gICAgICAgYWRqID0gc291cmNlRGF0YS5vdXQ7XG4vLyAgICAgICBuZWlnaGJvcnMgPSBPYmplY3Qua2V5cyhzb3VyY2VEYXRhLm91dCk7XG4vLyAgICAgICBvZmZzZXQgPSAwO1xuLy8gICAgICAgc3RhdGUgPSAnaW5uZXItZGlyZWN0ZWQnO1xuXG4vLyAgICAgICByZXR1cm4gbmV4dCgpO1xuLy8gICAgIH1cblxuLy8gICAgIGlmIChzdGF0ZSA9PT0gJ3VuZGlyZWN0ZWQnKSB7XG4vLyAgICAgICBpZiAodHlwZSA9PT0gJ2RpcmVjdGVkJykge1xuLy8gICAgICAgICBzdGF0ZSA9ICdvdXRlcic7XG4vLyAgICAgICAgIHJldHVybiBuZXh0KCk7XG4vLyAgICAgICB9XG5cbi8vICAgICAgIGFkaiA9IHNvdXJjZURhdGEudW5kaXJlY3RlZDtcbi8vICAgICAgIG5laWdoYm9ycyA9IE9iamVjdC5rZXlzKHNvdXJjZURhdGEudW5kaXJlY3RlZCk7XG4vLyAgICAgICBvZmZzZXQgPSAwO1xuLy8gICAgICAgc3RhdGUgPSAnaW5uZXItdW5kaXJlY3RlZCc7XG4vLyAgICAgfVxuXG4vLyAgICAgLy8gSW5uZXJcbi8vICAgICBpZiAob2Zmc2V0ID49IG5laWdoYm9ycy5sZW5ndGgpIHtcbi8vICAgICAgIGlmIChzdGF0ZSA9PT0gJ2lubmVyLXVuZGlyZWN0ZWQnKSBzdGF0ZSA9ICdvdXRlcic7XG4vLyAgICAgICBlbHNlIHN0YXRlID0gJ3VuZGlyZWN0ZWQnO1xuXG4vLyAgICAgICByZXR1cm4gbmV4dCgpO1xuLy8gICAgIH1cblxuLy8gICAgIGNvbnN0IG5laWdoYm9yID0gbmVpZ2hib3JzW29mZnNldCsrXTtcbi8vICAgICBjb25zdCBlZGdlRGF0YSA9IGFkaltuZWlnaGJvcl07XG4vLyAgICAgbGV0IHRhcmdldERhdGEgPSBlZGdlRGF0YS50YXJnZXQ7XG5cbi8vICAgICBpZiAoc3RhdGUgPT09ICdpbm5lci11bmRpcmVjdGVkJyAmJiB0YXJnZXREYXRhLmtleSA9PT0gc291cmNlRGF0YS5rZXkpXG4vLyAgICAgICB0YXJnZXREYXRhID0gZWRnZURhdGEuc291cmNlO1xuXG4vLyAgICAgcmV0dXJuIHtcbi8vICAgICAgIGRvbmU6IGZhbHNlLFxuLy8gICAgICAgdmFsdWU6IHtcbi8vICAgICAgICAgc291cmNlOiBzb3VyY2VEYXRhLmtleSxcbi8vICAgICAgICAgdGFyZ2V0OiB0YXJnZXREYXRhLmtleSxcbi8vICAgICAgICAgc291cmNlQXR0cmlidXRlczogc291cmNlRGF0YS5hdHRyaWJ1dGVzLFxuLy8gICAgICAgICB0YXJnZXRBdHRyaWJ1dGVzOiB0YXJnZXREYXRhLmF0dHJpYnV0ZXMsXG4vLyAgICAgICAgIGVkZ2VLZXk6IGVkZ2VEYXRhLmtleSxcbi8vICAgICAgICAgZWRnZUF0dHJpYnV0ZXM6IGVkZ2VEYXRhLmF0dHJpYnV0ZXMsXG4vLyAgICAgICAgIHVuZGlyZWN0ZWQ6IGVkZ2VEYXRhLnVuZGlyZWN0ZWRcbi8vICAgICAgIH1cbi8vICAgICB9O1xuLy8gICB9KTtcbi8vIH1cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkamFjZW5jeUl0ZXJhdG9yTXVsdGkoZ3JhcGgpIHtcbi8vICAgY29uc3QgaXRlcmF0b3IgPSBncmFwaC5fbm9kZXMudmFsdWVzKCk7XG5cbi8vICAgY29uc3QgdHlwZSA9IGdyYXBoLnR5cGU7XG5cbi8vICAgbGV0IHN0YXRlID0gJ291dGVyJyxcbi8vICAgICBzb3VyY2VEYXRhLFxuLy8gICAgIG5laWdoYm9ycyxcbi8vICAgICBjb250YWluZXIgPSBudWxsLFxuLy8gICAgIGFkaixcbi8vICAgICBvZmZzZXQ7XG5cbi8vICAgcmV0dXJuIG5ldyBJdGVyYXRvcihmdW5jdGlvbiBuZXh0KCkge1xuLy8gICAgIGxldCBzdGVwO1xuXG4vLyAgICAgaWYgKHN0YXRlID09PSAnb3V0ZXInKSB7XG4vLyAgICAgICBzdGVwID0gaXRlcmF0b3IubmV4dCgpO1xuXG4vLyAgICAgICBpZiAoc3RlcC5kb25lID09PSB0cnVlKSByZXR1cm4gc3RlcDtcblxuLy8gICAgICAgc291cmNlRGF0YSA9IHN0ZXAudmFsdWU7XG5cbi8vICAgICAgIHN0YXRlID0gJ2RpcmVjdGVkJztcbi8vICAgICAgIHJldHVybiBuZXh0KCk7XG4vLyAgICAgfVxuXG4vLyAgICAgaWYgKHN0YXRlID09PSAnZGlyZWN0ZWQnKSB7XG4vLyAgICAgICBpZiAodHlwZSA9PT0gJ3VuZGlyZWN0ZWQnKSB7XG4vLyAgICAgICAgIHN0YXRlID0gJ3VuZGlyZWN0ZWQnO1xuLy8gICAgICAgICByZXR1cm4gbmV4dCgpO1xuLy8gICAgICAgfVxuXG4vLyAgICAgICBhZGogPSBzb3VyY2VEYXRhLm91dDtcbi8vICAgICAgIG5laWdoYm9ycyA9IE9iamVjdC5rZXlzKHNvdXJjZURhdGEub3V0KTtcbi8vICAgICAgIG9mZnNldCA9IDA7XG4vLyAgICAgICBzdGF0ZSA9ICdpbm5lci1kaXJlY3RlZCc7XG5cbi8vICAgICAgIHJldHVybiBuZXh0KCk7XG4vLyAgICAgfVxuXG4vLyAgICAgaWYgKHN0YXRlID09PSAndW5kaXJlY3RlZCcpIHtcbi8vICAgICAgIGlmICh0eXBlID09PSAnZGlyZWN0ZWQnKSB7XG4vLyAgICAgICAgIHN0YXRlID0gJ291dGVyJztcbi8vICAgICAgICAgcmV0dXJuIG5leHQoKTtcbi8vICAgICAgIH1cblxuLy8gICAgICAgYWRqID0gc291cmNlRGF0YS51bmRpcmVjdGVkO1xuLy8gICAgICAgbmVpZ2hib3JzID0gT2JqZWN0LmtleXMoc291cmNlRGF0YS51bmRpcmVjdGVkKTtcbi8vICAgICAgIG9mZnNldCA9IDA7XG4vLyAgICAgICBzdGF0ZSA9ICdpbm5lci11bmRpcmVjdGVkJztcbi8vICAgICB9XG5cbi8vICAgICAvLyBJbm5lclxuLy8gICAgIGlmICghY29udGFpbmVyICYmIG9mZnNldCA+PSBuZWlnaGJvcnMubGVuZ3RoKSB7XG4vLyAgICAgICBpZiAoc3RhdGUgPT09ICdpbm5lci11bmRpcmVjdGVkJykgc3RhdGUgPSAnb3V0ZXInO1xuLy8gICAgICAgZWxzZSBzdGF0ZSA9ICd1bmRpcmVjdGVkJztcblxuLy8gICAgICAgcmV0dXJuIG5leHQoKTtcbi8vICAgICB9XG5cbi8vICAgICBpZiAoIWNvbnRhaW5lcikge1xuLy8gICAgICAgY29uc3QgbmVpZ2hib3IgPSBuZWlnaGJvcnNbb2Zmc2V0KytdO1xuLy8gICAgICAgY29udGFpbmVyID0gYWRqW25laWdoYm9yXS52YWx1ZXMoKTtcbi8vICAgICAgIHJldHVybiBuZXh0KCk7XG4vLyAgICAgfVxuXG4vLyAgICAgc3RlcCA9IGNvbnRhaW5lci5uZXh0KCk7XG5cbi8vICAgICBpZiAoc3RlcC5kb25lKSB7XG4vLyAgICAgICBjb250YWluZXIgPSBudWxsO1xuLy8gICAgICAgcmV0dXJuIG5leHQoKTtcbi8vICAgICB9XG5cbi8vICAgICBjb25zdCBlZGdlRGF0YSA9IHN0ZXAudmFsdWU7XG4vLyAgICAgbGV0IHRhcmdldERhdGEgPSBlZGdlRGF0YS50YXJnZXQ7XG5cbi8vICAgICBpZiAoc3RhdGUgPT09ICdpbm5lci11bmRpcmVjdGVkJyAmJiB0YXJnZXREYXRhLmtleSA9PT0gc291cmNlRGF0YS5rZXkpXG4vLyAgICAgICB0YXJnZXREYXRhID0gZWRnZURhdGEuc291cmNlO1xuXG4vLyAgICAgcmV0dXJuIHtcbi8vICAgICAgIGRvbmU6IGZhbHNlLFxuLy8gICAgICAgdmFsdWU6IHtcbi8vICAgICAgICAgc291cmNlOiBzb3VyY2VEYXRhLmtleSxcbi8vICAgICAgICAgdGFyZ2V0OiB0YXJnZXREYXRhLmtleSxcbi8vICAgICAgICAgc291cmNlQXR0cmlidXRlczogc291cmNlRGF0YS5hdHRyaWJ1dGVzLFxuLy8gICAgICAgICB0YXJnZXRBdHRyaWJ1dGVzOiB0YXJnZXREYXRhLmF0dHJpYnV0ZXMsXG4vLyAgICAgICAgIGVkZ2U6IGVkZ2VEYXRhLmtleSxcbi8vICAgICAgICAgZWRnZUF0dHJpYnV0ZXM6IGVkZ2VEYXRhLmF0dHJpYnV0ZXMsXG4vLyAgICAgICAgIHVuZGlyZWN0ZWQ6IGVkZ2VEYXRhLnVuZGlyZWN0ZWRcbi8vICAgICAgIH1cbi8vICAgICB9O1xuLy8gICB9KTtcbi8vIH1cbiIsICIvKipcbiAqIEdyYXBob2xvZ3kgU2VyaWFsaXphdGlvbiBVdGlsaXRpZXNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKlxuICogQ29sbGVjdGlvbiBvZiBmdW5jdGlvbnMgdXNlZCB0byB2YWxpZGF0ZSBpbXBvcnQtZXhwb3J0IGZvcm1hdHMgJiB0byBvdXB1dFxuICogdGhlbSBmcm9tIGludGVybmFsIGdyYXBoIGRhdGEuXG4gKlxuICogU2VyaWFsaXplZCBOb2RlOlxuICoge2tleSwgP2F0dHJpYnV0ZXN9XG4gKlxuICogU2VyaWFsaXplZCBFZGdlOlxuICoge2tleT8sIHNvdXJjZSwgdGFyZ2V0LCBhdHRyaWJ1dGVzPywgdW5kaXJlY3RlZD99XG4gKlxuICogU2VyaWFsaXplZCBHcmFwaDpcbiAqIHtub2Rlc1tdLCBlZGdlcz9bXX1cbiAqL1xuaW1wb3J0IHthc3NpZ24sIGlzUGxhaW5PYmplY3QsIGlzRW1wdHl9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIEZvcm1hdHMgaW50ZXJuYWwgbm9kZSBkYXRhIGludG8gYSBzZXJpYWxpemVkIG5vZGUuXG4gKlxuICogQHBhcmFtICB7YW55fSAgICBrZXkgIC0gVGhlIG5vZGUncyBrZXkuXG4gKiBAcGFyYW0gIHtvYmplY3R9IGRhdGEgLSBJbnRlcm5hbCBub2RlJ3MgZGF0YS5cbiAqIEByZXR1cm4ge2FycmF5fSAgICAgICAtIFRoZSBzZXJpYWxpemVkIG5vZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVOb2RlKGtleSwgZGF0YSkge1xuICBjb25zdCBzZXJpYWxpemVkID0ge2tleX07XG5cbiAgaWYgKCFpc0VtcHR5KGRhdGEuYXR0cmlidXRlcykpXG4gICAgc2VyaWFsaXplZC5hdHRyaWJ1dGVzID0gYXNzaWduKHt9LCBkYXRhLmF0dHJpYnV0ZXMpO1xuXG4gIHJldHVybiBzZXJpYWxpemVkO1xufVxuXG4vKipcbiAqIEZvcm1hdHMgaW50ZXJuYWwgZWRnZSBkYXRhIGludG8gYSBzZXJpYWxpemVkIGVkZ2UuXG4gKlxuICogQHBhcmFtICB7YW55fSAgICBrZXkgIC0gVGhlIGVkZ2UncyBrZXkuXG4gKiBAcGFyYW0gIHtvYmplY3R9IGRhdGEgLSBJbnRlcm5hbCBlZGdlJ3MgZGF0YS5cbiAqIEByZXR1cm4ge2FycmF5fSAgICAgICAtIFRoZSBzZXJpYWxpemVkIGVkZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVFZGdlKGtleSwgZGF0YSkge1xuICBjb25zdCBzZXJpYWxpemVkID0ge1xuICAgIGtleSxcbiAgICBzb3VyY2U6IGRhdGEuc291cmNlLmtleSxcbiAgICB0YXJnZXQ6IGRhdGEudGFyZ2V0LmtleVxuICB9O1xuXG4gIGlmICghaXNFbXB0eShkYXRhLmF0dHJpYnV0ZXMpKVxuICAgIHNlcmlhbGl6ZWQuYXR0cmlidXRlcyA9IGFzc2lnbih7fSwgZGF0YS5hdHRyaWJ1dGVzKTtcblxuICBpZiAoZGF0YS51bmRpcmVjdGVkKSBzZXJpYWxpemVkLnVuZGlyZWN0ZWQgPSB0cnVlO1xuXG4gIHJldHVybiBzZXJpYWxpemVkO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIHNlcmlhbGl6ZWQgbm9kZS5cbiAqXG4gKiBAcGFyYW0gIHttaXhlZH0gdmFsdWUgLSBUYXJnZXQgdmFsdWUuXG4gKiBAcmV0dXJuIHtzdHJpbmd8bnVsbH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU2VyaWFsaXplZE5vZGUodmFsdWUpIHtcbiAgaWYgKCFpc1BsYWluT2JqZWN0KHZhbHVlKSkgcmV0dXJuICdub3Qtb2JqZWN0JztcblxuICBpZiAoISgna2V5JyBpbiB2YWx1ZSkpIHJldHVybiAnbm8ta2V5JztcblxuICBpZiAoXG4gICAgJ2F0dHJpYnV0ZXMnIGluIHZhbHVlICYmXG4gICAgKCFpc1BsYWluT2JqZWN0KHZhbHVlLmF0dHJpYnV0ZXMpIHx8IHZhbHVlLmF0dHJpYnV0ZXMgPT09IG51bGwpXG4gIClcbiAgICByZXR1cm4gJ2ludmFsaWQtYXR0cmlidXRlcyc7XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIHZhbHVlIGlzIGEgc2VyaWFsaXplZCBlZGdlLlxuICpcbiAqIEBwYXJhbSAge21peGVkfSB2YWx1ZSAtIFRhcmdldCB2YWx1ZS5cbiAqIEByZXR1cm4ge3N0cmluZ3xudWxsfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTZXJpYWxpemVkRWRnZSh2YWx1ZSkge1xuICBpZiAoIWlzUGxhaW5PYmplY3QodmFsdWUpKSByZXR1cm4gJ25vdC1vYmplY3QnO1xuXG4gIGlmICghKCdzb3VyY2UnIGluIHZhbHVlKSkgcmV0dXJuICduby1zb3VyY2UnO1xuXG4gIGlmICghKCd0YXJnZXQnIGluIHZhbHVlKSkgcmV0dXJuICduby10YXJnZXQnO1xuXG4gIGlmIChcbiAgICAnYXR0cmlidXRlcycgaW4gdmFsdWUgJiZcbiAgICAoIWlzUGxhaW5PYmplY3QodmFsdWUuYXR0cmlidXRlcykgfHwgdmFsdWUuYXR0cmlidXRlcyA9PT0gbnVsbClcbiAgKVxuICAgIHJldHVybiAnaW52YWxpZC1hdHRyaWJ1dGVzJztcblxuICBpZiAoJ3VuZGlyZWN0ZWQnIGluIHZhbHVlICYmIHR5cGVvZiB2YWx1ZS51bmRpcmVjdGVkICE9PSAnYm9vbGVhbicpXG4gICAgcmV0dXJuICdpbnZhbGlkLXVuZGlyZWN0ZWQnO1xuXG4gIHJldHVybiBudWxsO1xufVxuIiwgIi8qIGVzbGludCBuby1uZXN0ZWQtdGVybmFyeTogMCAqL1xuLyoqXG4gKiBHcmFwaG9sb2d5IFJlZmVyZW5jZSBJbXBsZW1lbnRhdGlvblxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKlxuICogUmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBncmFwaG9sb2d5IHNwZWNzLlxuICovXG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCBJdGVyYXRvciBmcm9tICdvYmxpdGVyYXRvci9pdGVyYXRvcic7XG5pbXBvcnQgdGFrZSBmcm9tICdvYmxpdGVyYXRvci90YWtlJztcblxuaW1wb3J0IHtcbiAgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IsXG4gIE5vdEZvdW5kR3JhcGhFcnJvcixcbiAgVXNhZ2VHcmFwaEVycm9yXG59IGZyb20gJy4vZXJyb3JzJztcblxuaW1wb3J0IHtcbiAgTWl4ZWROb2RlRGF0YSxcbiAgRGlyZWN0ZWROb2RlRGF0YSxcbiAgVW5kaXJlY3RlZE5vZGVEYXRhLFxuICBFZGdlRGF0YVxufSBmcm9tICcuL2RhdGEnO1xuXG5pbXBvcnQge1xuICB1cGRhdGVTdHJ1Y3R1cmVJbmRleCxcbiAgY2xlYXJFZGdlRnJvbVN0cnVjdHVyZUluZGV4LFxuICBjbGVhclN0cnVjdHVyZUluZGV4LFxuICB1cGdyYWRlU3RydWN0dXJlSW5kZXhUb011bHRpXG59IGZyb20gJy4vaW5kaWNlcyc7XG5cbmltcG9ydCBhdHRhY2hOb2RlQXR0cmlidXRlc01ldGhvZHMgZnJvbSAnLi9hdHRyaWJ1dGVzL25vZGVzJztcbmltcG9ydCBhdHRhY2hFZGdlQXR0cmlidXRlc01ldGhvZHMgZnJvbSAnLi9hdHRyaWJ1dGVzL2VkZ2VzJztcbmltcG9ydCBhdHRhY2hFZGdlSXRlcmF0aW9uTWV0aG9kcyBmcm9tICcuL2l0ZXJhdGlvbi9lZGdlcyc7XG5pbXBvcnQgYXR0YWNoTmVpZ2hib3JJdGVyYXRpb25NZXRob2RzIGZyb20gJy4vaXRlcmF0aW9uL25laWdoYm9ycyc7XG5pbXBvcnQge1xuICBmb3JFYWNoQWRqYWNlbmN5U2ltcGxlLFxuICBmb3JFYWNoQWRqYWNlbmN5TXVsdGlcbn0gZnJvbSAnLi9pdGVyYXRpb24vYWRqYWNlbmN5JztcblxuaW1wb3J0IHtcbiAgc2VyaWFsaXplTm9kZSxcbiAgc2VyaWFsaXplRWRnZSxcbiAgdmFsaWRhdGVTZXJpYWxpemVkTm9kZSxcbiAgdmFsaWRhdGVTZXJpYWxpemVkRWRnZVxufSBmcm9tICcuL3NlcmlhbGl6YXRpb24nO1xuXG5pbXBvcnQge1xuICBhc3NpZ24sXG4gIGdldE1hdGNoaW5nRWRnZSxcbiAgaXNHcmFwaCxcbiAgaXNQbGFpbk9iamVjdCxcbiAgcHJpdmF0ZVByb3BlcnR5LFxuICByZWFkT25seVByb3BlcnR5LFxuICBpbmNyZW1lbnRhbElkU3RhcnRpbmdGcm9tUmFuZG9tQnl0ZSxcbiAgdmFsaWRhdGVIaW50c1xufSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBDb25zdGFudHMuXG4gKi9cbmNvbnN0IElOU1RBTkNFX0lEID0gaW5jcmVtZW50YWxJZFN0YXJ0aW5nRnJvbVJhbmRvbUJ5dGUoKTtcblxuLyoqXG4gKiBFbnVtcy5cbiAqL1xuY29uc3QgVFlQRVMgPSBuZXcgU2V0KFsnZGlyZWN0ZWQnLCAndW5kaXJlY3RlZCcsICdtaXhlZCddKTtcblxuY29uc3QgRU1JVFRFUl9QUk9QUyA9IG5ldyBTZXQoW1xuICAnZG9tYWluJyxcbiAgJ19ldmVudHMnLFxuICAnX2V2ZW50c0NvdW50JyxcbiAgJ19tYXhMaXN0ZW5lcnMnXG5dKTtcblxuY29uc3QgRURHRV9BRERfTUVUSE9EUyA9IFtcbiAge1xuICAgIG5hbWU6IHZlcmIgPT4gYCR7dmVyYn1FZGdlYCxcbiAgICBnZW5lcmF0ZUtleTogdHJ1ZVxuICB9LFxuICB7XG4gICAgbmFtZTogdmVyYiA9PiBgJHt2ZXJifURpcmVjdGVkRWRnZWAsXG4gICAgZ2VuZXJhdGVLZXk6IHRydWUsXG4gICAgdHlwZTogJ2RpcmVjdGVkJ1xuICB9LFxuICB7XG4gICAgbmFtZTogdmVyYiA9PiBgJHt2ZXJifVVuZGlyZWN0ZWRFZGdlYCxcbiAgICBnZW5lcmF0ZUtleTogdHJ1ZSxcbiAgICB0eXBlOiAndW5kaXJlY3RlZCdcbiAgfSxcbiAge1xuICAgIG5hbWU6IHZlcmIgPT4gYCR7dmVyYn1FZGdlV2l0aEtleWBcbiAgfSxcbiAge1xuICAgIG5hbWU6IHZlcmIgPT4gYCR7dmVyYn1EaXJlY3RlZEVkZ2VXaXRoS2V5YCxcbiAgICB0eXBlOiAnZGlyZWN0ZWQnXG4gIH0sXG4gIHtcbiAgICBuYW1lOiB2ZXJiID0+IGAke3ZlcmJ9VW5kaXJlY3RlZEVkZ2VXaXRoS2V5YCxcbiAgICB0eXBlOiAndW5kaXJlY3RlZCdcbiAgfVxuXTtcblxuLyoqXG4gKiBEZWZhdWx0IG9wdGlvbnMuXG4gKi9cbmNvbnN0IERFRkFVTFRTID0ge1xuICBhbGxvd1NlbGZMb29wczogdHJ1ZSxcbiAgbXVsdGk6IGZhbHNlLFxuICB0eXBlOiAnbWl4ZWQnXG59O1xuXG4vKipcbiAqIEFic3RyYWN0IGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBHcmFwaCBjbGFzcyBmb3IgdmFyaW91cyBtZXRob2RzLlxuICovXG5cbi8qKlxuICogSW50ZXJuYWwgbWV0aG9kIHVzZWQgdG8gYWRkIGEgbm9kZSB0byB0aGUgZ2l2ZW4gZ3JhcGhcbiAqXG4gKiBAcGFyYW0gIHtHcmFwaH0gICBncmFwaCAgICAgICAgICAgLSBUYXJnZXQgZ3JhcGguXG4gKiBAcGFyYW0gIHthbnl9ICAgICBub2RlICAgICAgICAgICAgLSBUaGUgbm9kZSdzIGtleS5cbiAqIEBwYXJhbSAge29iamVjdH0gIFthdHRyaWJ1dGVzXSAgICAtIE9wdGlvbmFsIGF0dHJpYnV0ZXMuXG4gKiBAcmV0dXJuIHtOb2RlRGF0YX0gICAgICAgICAgICAgICAgLSBDcmVhdGVkIG5vZGUgZGF0YS5cbiAqL1xuZnVuY3Rpb24gYWRkTm9kZShncmFwaCwgbm9kZSwgYXR0cmlidXRlcykge1xuICBpZiAoYXR0cmlidXRlcyAmJiAhaXNQbGFpbk9iamVjdChhdHRyaWJ1dGVzKSlcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICBgR3JhcGguYWRkTm9kZTogaW52YWxpZCBhdHRyaWJ1dGVzLiBFeHBlY3RpbmcgYW4gb2JqZWN0IGJ1dCBnb3QgXCIke2F0dHJpYnV0ZXN9XCJgXG4gICAgKTtcblxuICAvLyBTdHJpbmcgY29lcmNpb25cbiAgbm9kZSA9ICcnICsgbm9kZTtcbiAgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMgfHwge307XG5cbiAgaWYgKGdyYXBoLl9ub2Rlcy5oYXMobm9kZSkpXG4gICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgIGBHcmFwaC5hZGROb2RlOiB0aGUgXCIke25vZGV9XCIgbm9kZSBhbHJlYWR5IGV4aXN0IGluIHRoZSBncmFwaC5gXG4gICAgKTtcblxuICBjb25zdCBkYXRhID0gbmV3IGdyYXBoLk5vZGVEYXRhQ2xhc3Mobm9kZSwgYXR0cmlidXRlcyk7XG5cbiAgLy8gQWRkaW5nIHRoZSBub2RlIHRvIGludGVybmFsIHJlZ2lzdGVyXG4gIGdyYXBoLl9ub2Rlcy5zZXQobm9kZSwgZGF0YSk7XG5cbiAgLy8gRW1pdHRpbmdcbiAgZ3JhcGguZW1pdCgnbm9kZUFkZGVkJywge1xuICAgIGtleTogbm9kZSxcbiAgICBhdHRyaWJ1dGVzXG4gIH0pO1xuXG4gIHJldHVybiBkYXRhO1xufVxuXG4vKipcbiAqIFNhbWUgYXMgdGhlIGFib3ZlIGJ1dCB3aXRob3V0IHNhbml0eSBjaGVja3MgYmVjYXVzZSB3ZSBjYWxsIHRoaXMgaW4gY29udGV4dHNcbiAqIHdoZXJlIG5lY2Vzc2FyeSBjaGVja3Mgd2VyZSBhbHJlYWR5IGRvbmUuXG4gKi9cbmZ1bmN0aW9uIHVuc2FmZUFkZE5vZGUoZ3JhcGgsIG5vZGUsIGF0dHJpYnV0ZXMpIHtcbiAgY29uc3QgZGF0YSA9IG5ldyBncmFwaC5Ob2RlRGF0YUNsYXNzKG5vZGUsIGF0dHJpYnV0ZXMpO1xuXG4gIGdyYXBoLl9ub2Rlcy5zZXQobm9kZSwgZGF0YSk7XG5cbiAgZ3JhcGguZW1pdCgnbm9kZUFkZGVkJywge1xuICAgIGtleTogbm9kZSxcbiAgICBhdHRyaWJ1dGVzXG4gIH0pO1xuXG4gIHJldHVybiBkYXRhO1xufVxuXG4vKipcbiAqIEludGVybmFsIG1ldGhvZCB1c2VkIHRvIGFkZCBhbiBhcmJpdHJhcnkgZWRnZSB0byB0aGUgZ2l2ZW4gZ3JhcGguXG4gKlxuICogQHBhcmFtICB7R3JhcGh9ICAgZ3JhcGggICAgICAgICAgIC0gVGFyZ2V0IGdyYXBoLlxuICogQHBhcmFtICB7c3RyaW5nfSAgbmFtZSAgICAgICAgICAgIC0gTmFtZSBvZiB0aGUgY2hpbGQgbWV0aG9kIGZvciBlcnJvcnMuXG4gKiBAcGFyYW0gIHtib29sZWFufSBtdXN0R2VuZXJhdGVLZXkgLSBTaG91bGQgdGhlIGdyYXBoIGdlbmVyYXRlIGFuIGlkP1xuICogQHBhcmFtICB7Ym9vbGVhbn0gdW5kaXJlY3RlZCAgICAgIC0gV2hldGhlciB0aGUgZWRnZSBpcyB1bmRpcmVjdGVkLlxuICogQHBhcmFtICB7YW55fSAgICAgZWRnZSAgICAgICAgICAgIC0gVGhlIGVkZ2UncyBrZXkuXG4gKiBAcGFyYW0gIHthbnl9ICAgICBzb3VyY2UgICAgICAgICAgLSBUaGUgc291cmNlIG5vZGUuXG4gKiBAcGFyYW0gIHthbnl9ICAgICB0YXJnZXQgICAgICAgICAgLSBUaGUgdGFyZ2V0IG5vZGUuXG4gKiBAcGFyYW0gIHtvYmplY3R9ICBbYXR0cmlidXRlc10gICAgLSBPcHRpb25hbCBhdHRyaWJ1dGVzLlxuICogQHJldHVybiB7YW55fSAgICAgICAgICAgICAgICAgICAgIC0gVGhlIGVkZ2UuXG4gKlxuICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgZ3JhcGggaXMgb2YgdGhlIHdyb25nIHR5cGUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBnaXZlbiBhdHRyaWJ1dGVzIGFyZSBub3QgYW4gb2JqZWN0LlxuICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiBzb3VyY2Ugb3IgdGFyZ2V0IGRvZXNuJ3QgZXhpc3QuXG4gKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBlZGdlIGFscmVhZHkgZXhpc3QuXG4gKi9cbmZ1bmN0aW9uIGFkZEVkZ2UoXG4gIGdyYXBoLFxuICBuYW1lLFxuICBtdXN0R2VuZXJhdGVLZXksXG4gIHVuZGlyZWN0ZWQsXG4gIGVkZ2UsXG4gIHNvdXJjZSxcbiAgdGFyZ2V0LFxuICBhdHRyaWJ1dGVzXG4pIHtcbiAgLy8gQ2hlY2tpbmcgdmFsaWRpdHkgb2Ygb3BlcmF0aW9uXG4gIGlmICghdW5kaXJlY3RlZCAmJiBncmFwaC50eXBlID09PSAndW5kaXJlY3RlZCcpXG4gICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgIGBHcmFwaC4ke25hbWV9OiB5b3UgY2Fubm90IGFkZCBhIGRpcmVjdGVkIGVkZ2UgdG8gYW4gdW5kaXJlY3RlZCBncmFwaC4gVXNlIHRoZSAjLmFkZEVkZ2Ugb3IgIy5hZGRVbmRpcmVjdGVkRWRnZSBpbnN0ZWFkLmBcbiAgICApO1xuXG4gIGlmICh1bmRpcmVjdGVkICYmIGdyYXBoLnR5cGUgPT09ICdkaXJlY3RlZCcpXG4gICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgIGBHcmFwaC4ke25hbWV9OiB5b3UgY2Fubm90IGFkZCBhbiB1bmRpcmVjdGVkIGVkZ2UgdG8gYSBkaXJlY3RlZCBncmFwaC4gVXNlIHRoZSAjLmFkZEVkZ2Ugb3IgIy5hZGREaXJlY3RlZEVkZ2UgaW5zdGVhZC5gXG4gICAgKTtcblxuICBpZiAoYXR0cmlidXRlcyAmJiAhaXNQbGFpbk9iamVjdChhdHRyaWJ1dGVzKSlcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICBgR3JhcGguJHtuYW1lfTogaW52YWxpZCBhdHRyaWJ1dGVzLiBFeHBlY3RpbmcgYW4gb2JqZWN0IGJ1dCBnb3QgXCIke2F0dHJpYnV0ZXN9XCJgXG4gICAgKTtcblxuICAvLyBDb2VyY2lvbiBvZiBzb3VyY2UgJiB0YXJnZXQ6XG4gIHNvdXJjZSA9ICcnICsgc291cmNlO1xuICB0YXJnZXQgPSAnJyArIHRhcmdldDtcbiAgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMgfHwge307XG5cbiAgaWYgKCFncmFwaC5hbGxvd1NlbGZMb29wcyAmJiBzb3VyY2UgPT09IHRhcmdldClcbiAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgYEdyYXBoLiR7bmFtZX06IHNvdXJjZSAmIHRhcmdldCBhcmUgdGhlIHNhbWUgKFwiJHtzb3VyY2V9XCIpLCB0aHVzIGNyZWF0aW5nIGEgbG9vcCBleHBsaWNpdGx5IGZvcmJpZGRlbiBieSB0aGlzIGdyYXBoICdhbGxvd1NlbGZMb29wcycgb3B0aW9uIHNldCB0byBmYWxzZS5gXG4gICAgKTtcblxuICBjb25zdCBzb3VyY2VEYXRhID0gZ3JhcGguX25vZGVzLmdldChzb3VyY2UpLFxuICAgIHRhcmdldERhdGEgPSBncmFwaC5fbm9kZXMuZ2V0KHRhcmdldCk7XG5cbiAgaWYgKCFzb3VyY2VEYXRhKVxuICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICBgR3JhcGguJHtuYW1lfTogc291cmNlIG5vZGUgXCIke3NvdXJjZX1cIiBub3QgZm91bmQuYFxuICAgICk7XG5cbiAgaWYgKCF0YXJnZXREYXRhKVxuICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICBgR3JhcGguJHtuYW1lfTogdGFyZ2V0IG5vZGUgXCIke3RhcmdldH1cIiBub3QgZm91bmQuYFxuICAgICk7XG5cbiAgLy8gTXVzdCB0aGUgZ3JhcGggZ2VuZXJhdGUgYW4gaWQgZm9yIHRoaXMgZWRnZT9cbiAgY29uc3QgZXZlbnREYXRhID0ge1xuICAgIGtleTogbnVsbCxcbiAgICB1bmRpcmVjdGVkLFxuICAgIHNvdXJjZSxcbiAgICB0YXJnZXQsXG4gICAgYXR0cmlidXRlc1xuICB9O1xuXG4gIGlmIChtdXN0R2VuZXJhdGVLZXkpIHtcbiAgICAvLyBOT1RFOiBpbiB0aGlzIGNhc2Ugd2UgY2FuIGd1YXJhbnRlZSB0aGF0IHRoZSBrZXkgZG9lcyBub3QgYWxyZWFkeVxuICAgIC8vIGV4aXN0IGFuZCBpcyBhbHJlYWR5IGNvcnJlY3RseSBjYXN0ZWQgYXMgYSBzdHJpbmdcbiAgICBlZGdlID0gZ3JhcGguX2VkZ2VLZXlHZW5lcmF0b3IoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBDb2VyY2lvbiBvZiBlZGdlIGtleVxuICAgIGVkZ2UgPSAnJyArIGVkZ2U7XG5cbiAgICAvLyBIZXJlLCB3ZSBoYXZlIGEga2V5IGNvbGxpc2lvblxuICAgIGlmIChncmFwaC5fZWRnZXMuaGFzKGVkZ2UpKVxuICAgICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7bmFtZX06IHRoZSBcIiR7ZWRnZX1cIiBlZGdlIGFscmVhZHkgZXhpc3RzIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuICB9XG5cbiAgLy8gSGVyZSwgd2UgbWlnaHQgaGF2ZSBhIHNvdXJjZSAvIHRhcmdldCBjb2xsaXNpb25cbiAgaWYgKFxuICAgICFncmFwaC5tdWx0aSAmJlxuICAgICh1bmRpcmVjdGVkXG4gICAgICA/IHR5cGVvZiBzb3VyY2VEYXRhLnVuZGlyZWN0ZWRbdGFyZ2V0XSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgIDogdHlwZW9mIHNvdXJjZURhdGEub3V0W3RhcmdldF0gIT09ICd1bmRlZmluZWQnKVxuICApIHtcbiAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgYEdyYXBoLiR7bmFtZX06IGFuIGVkZ2UgbGlua2luZyBcIiR7c291cmNlfVwiIHRvIFwiJHt0YXJnZXR9XCIgYWxyZWFkeSBleGlzdHMuIElmIHlvdSByZWFsbHkgd2FudCB0byBhZGQgbXVsdGlwbGUgZWRnZXMgbGlua2luZyB0aG9zZSBub2RlcywgeW91IHNob3VsZCBjcmVhdGUgYSBtdWx0aSBncmFwaCBieSB1c2luZyB0aGUgJ211bHRpJyBvcHRpb24uYFxuICAgICk7XG4gIH1cblxuICAvLyBTdG9yaW5nIHNvbWUgZGF0YVxuICBjb25zdCBlZGdlRGF0YSA9IG5ldyBFZGdlRGF0YShcbiAgICB1bmRpcmVjdGVkLFxuICAgIGVkZ2UsXG4gICAgc291cmNlRGF0YSxcbiAgICB0YXJnZXREYXRhLFxuICAgIGF0dHJpYnV0ZXNcbiAgKTtcblxuICAvLyBBZGRpbmcgdGhlIGVkZ2UgdG8gdGhlIGludGVybmFsIHJlZ2lzdGVyXG4gIGdyYXBoLl9lZGdlcy5zZXQoZWRnZSwgZWRnZURhdGEpO1xuXG4gIC8vIEluY3JlbWVudGluZyBub2RlIGRlZ3JlZSBjb3VudGVyc1xuICBpZiAoc291cmNlID09PSB0YXJnZXQpIHtcbiAgICBpZiAodW5kaXJlY3RlZCkge1xuICAgICAgc291cmNlRGF0YS51bmRpcmVjdGVkU2VsZkxvb3BzKys7XG4gICAgICBncmFwaC5fdW5kaXJlY3RlZFNlbGZMb29wQ291bnQrKztcbiAgICB9IGVsc2Uge1xuICAgICAgc291cmNlRGF0YS5kaXJlY3RlZFNlbGZMb29wcysrO1xuICAgICAgZ3JhcGguX2RpcmVjdGVkU2VsZkxvb3BDb3VudCsrO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAodW5kaXJlY3RlZCkge1xuICAgICAgc291cmNlRGF0YS51bmRpcmVjdGVkRGVncmVlKys7XG4gICAgICB0YXJnZXREYXRhLnVuZGlyZWN0ZWREZWdyZWUrKztcbiAgICB9IGVsc2Uge1xuICAgICAgc291cmNlRGF0YS5vdXREZWdyZWUrKztcbiAgICAgIHRhcmdldERhdGEuaW5EZWdyZWUrKztcbiAgICB9XG4gIH1cblxuICAvLyBVcGRhdGluZyByZWxldmFudCBpbmRleFxuICB1cGRhdGVTdHJ1Y3R1cmVJbmRleChcbiAgICBncmFwaCxcbiAgICB1bmRpcmVjdGVkLFxuICAgIGVkZ2VEYXRhLFxuICAgIHNvdXJjZSxcbiAgICB0YXJnZXQsXG4gICAgc291cmNlRGF0YSxcbiAgICB0YXJnZXREYXRhXG4gICk7XG5cbiAgaWYgKHVuZGlyZWN0ZWQpIGdyYXBoLl91bmRpcmVjdGVkU2l6ZSsrO1xuICBlbHNlIGdyYXBoLl9kaXJlY3RlZFNpemUrKztcblxuICAvLyBFbWl0dGluZ1xuICBldmVudERhdGEua2V5ID0gZWRnZTtcblxuICBncmFwaC5lbWl0KCdlZGdlQWRkZWQnLCBldmVudERhdGEpO1xuXG4gIHJldHVybiBlZGdlO1xufVxuXG4vKipcbiAqIEludGVybmFsIG1ldGhvZCB1c2VkIHRvIGFkZCBhbiBhcmJpdHJhcnkgZWRnZSB0byB0aGUgZ2l2ZW4gZ3JhcGguXG4gKlxuICogQHBhcmFtICB7R3JhcGh9ICAgZ3JhcGggICAgICAgICAgIC0gVGFyZ2V0IGdyYXBoLlxuICogQHBhcmFtICB7c3RyaW5nfSAgbmFtZSAgICAgICAgICAgIC0gTmFtZSBvZiB0aGUgY2hpbGQgbWV0aG9kIGZvciBlcnJvcnMuXG4gKiBAcGFyYW0gIHtib29sZWFufSBtdXN0R2VuZXJhdGVLZXkgLSBTaG91bGQgdGhlIGdyYXBoIGdlbmVyYXRlIGFuIGlkP1xuICogQHBhcmFtICB7Ym9vbGVhbn0gdW5kaXJlY3RlZCAgICAgIC0gV2hldGhlciB0aGUgZWRnZSBpcyB1bmRpcmVjdGVkLlxuICogQHBhcmFtICB7YW55fSAgICAgZWRnZSAgICAgICAgICAgIC0gVGhlIGVkZ2UncyBrZXkuXG4gKiBAcGFyYW0gIHthbnl9ICAgICBzb3VyY2UgICAgICAgICAgLSBUaGUgc291cmNlIG5vZGUuXG4gKiBAcGFyYW0gIHthbnl9ICAgICB0YXJnZXQgICAgICAgICAgLSBUaGUgdGFyZ2V0IG5vZGUuXG4gKiBAcGFyYW0gIHtvYmplY3R9ICBbYXR0cmlidXRlc10gICAgLSBPcHRpb25hbCBhdHRyaWJ1dGVzLlxuICogQHBhcmFtICB7Ym9vbGVhbn0gW2FzVXBkYXRlcl0gICAgICAgLSBBcmUgd2UgdXBkYXRpbmcgb3IgbWVyZ2luZz9cbiAqIEByZXR1cm4ge2FueX0gICAgICAgICAgICAgICAgICAgICAtIFRoZSBlZGdlLlxuICpcbiAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIGdyYXBoIGlzIG9mIHRoZSB3cm9uZyB0eXBlLlxuICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgZ2l2ZW4gYXR0cmlidXRlcyBhcmUgbm90IGFuIG9iamVjdC5cbiAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgc291cmNlIG9yIHRhcmdldCBkb2Vzbid0IGV4aXN0LlxuICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgZWRnZSBhbHJlYWR5IGV4aXN0LlxuICovXG5mdW5jdGlvbiBtZXJnZUVkZ2UoXG4gIGdyYXBoLFxuICBuYW1lLFxuICBtdXN0R2VuZXJhdGVLZXksXG4gIHVuZGlyZWN0ZWQsXG4gIGVkZ2UsXG4gIHNvdXJjZSxcbiAgdGFyZ2V0LFxuICBhdHRyaWJ1dGVzLFxuICBhc1VwZGF0ZXJcbikge1xuICAvLyBDaGVja2luZyB2YWxpZGl0eSBvZiBvcGVyYXRpb25cbiAgaWYgKCF1bmRpcmVjdGVkICYmIGdyYXBoLnR5cGUgPT09ICd1bmRpcmVjdGVkJylcbiAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgYEdyYXBoLiR7bmFtZX06IHlvdSBjYW5ub3QgbWVyZ2UvdXBkYXRlIGEgZGlyZWN0ZWQgZWRnZSB0byBhbiB1bmRpcmVjdGVkIGdyYXBoLiBVc2UgdGhlICMubWVyZ2VFZGdlLyMudXBkYXRlRWRnZSBvciAjLmFkZFVuZGlyZWN0ZWRFZGdlIGluc3RlYWQuYFxuICAgICk7XG5cbiAgaWYgKHVuZGlyZWN0ZWQgJiYgZ3JhcGgudHlwZSA9PT0gJ2RpcmVjdGVkJylcbiAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgYEdyYXBoLiR7bmFtZX06IHlvdSBjYW5ub3QgbWVyZ2UvdXBkYXRlIGFuIHVuZGlyZWN0ZWQgZWRnZSB0byBhIGRpcmVjdGVkIGdyYXBoLiBVc2UgdGhlICMubWVyZ2VFZGdlLyMudXBkYXRlRWRnZSBvciAjLmFkZERpcmVjdGVkRWRnZSBpbnN0ZWFkLmBcbiAgICApO1xuXG4gIGlmIChhdHRyaWJ1dGVzKSB7XG4gICAgaWYgKGFzVXBkYXRlcikge1xuICAgICAgaWYgKHR5cGVvZiBhdHRyaWJ1dGVzICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bmFtZX06IGludmFsaWQgdXBkYXRlciBmdW5jdGlvbi4gRXhwZWN0aW5nIGEgZnVuY3Rpb24gYnV0IGdvdCBcIiR7YXR0cmlidXRlc31cImBcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFpc1BsYWluT2JqZWN0KGF0dHJpYnV0ZXMpKVxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bmFtZX06IGludmFsaWQgYXR0cmlidXRlcy4gRXhwZWN0aW5nIGFuIG9iamVjdCBidXQgZ290IFwiJHthdHRyaWJ1dGVzfVwiYFxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvZXJjaW9uIG9mIHNvdXJjZSAmIHRhcmdldDpcbiAgc291cmNlID0gJycgKyBzb3VyY2U7XG4gIHRhcmdldCA9ICcnICsgdGFyZ2V0O1xuXG4gIGxldCB1cGRhdGVyO1xuXG4gIGlmIChhc1VwZGF0ZXIpIHtcbiAgICB1cGRhdGVyID0gYXR0cmlidXRlcztcbiAgICBhdHRyaWJ1dGVzID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKCFncmFwaC5hbGxvd1NlbGZMb29wcyAmJiBzb3VyY2UgPT09IHRhcmdldClcbiAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgYEdyYXBoLiR7bmFtZX06IHNvdXJjZSAmIHRhcmdldCBhcmUgdGhlIHNhbWUgKFwiJHtzb3VyY2V9XCIpLCB0aHVzIGNyZWF0aW5nIGEgbG9vcCBleHBsaWNpdGx5IGZvcmJpZGRlbiBieSB0aGlzIGdyYXBoICdhbGxvd1NlbGZMb29wcycgb3B0aW9uIHNldCB0byBmYWxzZS5gXG4gICAgKTtcblxuICBsZXQgc291cmNlRGF0YSA9IGdyYXBoLl9ub2Rlcy5nZXQoc291cmNlKTtcbiAgbGV0IHRhcmdldERhdGEgPSBncmFwaC5fbm9kZXMuZ2V0KHRhcmdldCk7XG4gIGxldCBlZGdlRGF0YTtcblxuICAvLyBEbyB3ZSBuZWVkIHRvIGhhbmRsZSBkdXBsaWNhdGU/XG4gIGxldCBhbHJlYWR5RXhpc3RpbmdFZGdlRGF0YTtcblxuICBpZiAoIW11c3RHZW5lcmF0ZUtleSkge1xuICAgIGVkZ2VEYXRhID0gZ3JhcGguX2VkZ2VzLmdldChlZGdlKTtcblxuICAgIGlmIChlZGdlRGF0YSkge1xuICAgICAgLy8gSGVyZSwgd2UgbmVlZCB0byBlbnN1cmUsIGlmIHRoZSB1c2VyIGdhdmUgYSBrZXksIHRoYXQgc291cmNlICYgdGFyZ2V0XG4gICAgICAvLyBhcmUgY29oZXJlbnRcbiAgICAgIGlmIChcbiAgICAgICAgZWRnZURhdGEuc291cmNlLmtleSAhPT0gc291cmNlIHx8XG4gICAgICAgIGVkZ2VEYXRhLnRhcmdldC5rZXkgIT09IHRhcmdldCB8fFxuICAgICAgICAodW5kaXJlY3RlZCAmJlxuICAgICAgICAgIChlZGdlRGF0YS5zb3VyY2Uua2V5ICE9PSB0YXJnZXQgfHwgZWRnZURhdGEudGFyZ2V0LmtleSAhPT0gc291cmNlKSlcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke25hbWV9OiBpbmNvbnNpc3RlbmN5IGRldGVjdGVkIHdoZW4gYXR0ZW1wdGluZyB0byBtZXJnZSB0aGUgXCIke2VkZ2V9XCIgZWRnZSB3aXRoIFwiJHtzb3VyY2V9XCIgc291cmNlICYgXCIke3RhcmdldH1cIiB0YXJnZXQgdnMuIChcIiR7ZWRnZURhdGEuc291cmNlLmtleX1cIiwgXCIke2VkZ2VEYXRhLnRhcmdldC5rZXl9XCIpLmBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgYWxyZWFkeUV4aXN0aW5nRWRnZURhdGEgPSBlZGdlRGF0YTtcbiAgICB9XG4gIH1cblxuICAvLyBIZXJlLCB3ZSBtaWdodCBoYXZlIGEgc291cmNlIC8gdGFyZ2V0IGNvbGxpc2lvblxuICBpZiAoIWFscmVhZHlFeGlzdGluZ0VkZ2VEYXRhICYmICFncmFwaC5tdWx0aSAmJiBzb3VyY2VEYXRhKSB7XG4gICAgYWxyZWFkeUV4aXN0aW5nRWRnZURhdGEgPSB1bmRpcmVjdGVkXG4gICAgICA/IHNvdXJjZURhdGEudW5kaXJlY3RlZFt0YXJnZXRdXG4gICAgICA6IHNvdXJjZURhdGEub3V0W3RhcmdldF07XG4gIH1cblxuICAvLyBIYW5kbGluZyBkdXBsaWNhdGVzXG4gIGlmIChhbHJlYWR5RXhpc3RpbmdFZGdlRGF0YSkge1xuICAgIGNvbnN0IGluZm8gPSBbYWxyZWFkeUV4aXN0aW5nRWRnZURhdGEua2V5LCBmYWxzZSwgZmFsc2UsIGZhbHNlXTtcblxuICAgIC8vIFdlIGNhbiBza2lwIHRoZSBhdHRyaWJ1dGUgbWVyZ2luZyBwYXJ0IGlmIHRoZSB1c2VyIGRpZCBub3QgcHJvdmlkZSB0aGVtXG4gICAgaWYgKGFzVXBkYXRlciA/ICF1cGRhdGVyIDogIWF0dHJpYnV0ZXMpIHJldHVybiBpbmZvO1xuXG4gICAgLy8gVXBkYXRpbmcgdGhlIGF0dHJpYnV0ZXNcbiAgICBpZiAoYXNVcGRhdGVyKSB7XG4gICAgICBjb25zdCBvbGRBdHRyaWJ1dGVzID0gYWxyZWFkeUV4aXN0aW5nRWRnZURhdGEuYXR0cmlidXRlcztcbiAgICAgIGFscmVhZHlFeGlzdGluZ0VkZ2VEYXRhLmF0dHJpYnV0ZXMgPSB1cGRhdGVyKG9sZEF0dHJpYnV0ZXMpO1xuXG4gICAgICBncmFwaC5lbWl0KCdlZGdlQXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICAgIHR5cGU6ICdyZXBsYWNlJyxcbiAgICAgICAga2V5OiBhbHJlYWR5RXhpc3RpbmdFZGdlRGF0YS5rZXksXG4gICAgICAgIGF0dHJpYnV0ZXM6IGFscmVhZHlFeGlzdGluZ0VkZ2VEYXRhLmF0dHJpYnV0ZXNcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIE1lcmdpbmcgdGhlIGF0dHJpYnV0ZXNcbiAgICBlbHNlIHtcbiAgICAgIGFzc2lnbihhbHJlYWR5RXhpc3RpbmdFZGdlRGF0YS5hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzKTtcblxuICAgICAgZ3JhcGguZW1pdCgnZWRnZUF0dHJpYnV0ZXNVcGRhdGVkJywge1xuICAgICAgICB0eXBlOiAnbWVyZ2UnLFxuICAgICAgICBrZXk6IGFscmVhZHlFeGlzdGluZ0VkZ2VEYXRhLmtleSxcbiAgICAgICAgYXR0cmlidXRlczogYWxyZWFkeUV4aXN0aW5nRWRnZURhdGEuYXR0cmlidXRlcyxcbiAgICAgICAgZGF0YTogYXR0cmlidXRlc1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZm87XG4gIH1cblxuICBhdHRyaWJ1dGVzID0gYXR0cmlidXRlcyB8fCB7fTtcblxuICBpZiAoYXNVcGRhdGVyICYmIHVwZGF0ZXIpIGF0dHJpYnV0ZXMgPSB1cGRhdGVyKGF0dHJpYnV0ZXMpO1xuXG4gIC8vIE11c3QgdGhlIGdyYXBoIGdlbmVyYXRlIGFuIGlkIGZvciB0aGlzIGVkZ2U/XG4gIGNvbnN0IGV2ZW50RGF0YSA9IHtcbiAgICBrZXk6IG51bGwsXG4gICAgdW5kaXJlY3RlZCxcbiAgICBzb3VyY2UsXG4gICAgdGFyZ2V0LFxuICAgIGF0dHJpYnV0ZXNcbiAgfTtcblxuICBpZiAobXVzdEdlbmVyYXRlS2V5KSB7XG4gICAgLy8gTk9URTogaW4gdGhpcyBjYXNlIHdlIGNhbiBndWFyYW50ZWUgdGhhdCB0aGUga2V5IGRvZXMgbm90IGFscmVhZHlcbiAgICAvLyBleGlzdCBhbmQgaXMgYWxyZWFkeSBjb3JyZWN0bHkgY2FzdGVkIGFzIGEgc3RyaW5nXG4gICAgZWRnZSA9IGdyYXBoLl9lZGdlS2V5R2VuZXJhdG9yKCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gQ29lcmNpb24gb2YgZWRnZSBrZXlcbiAgICBlZGdlID0gJycgKyBlZGdlO1xuXG4gICAgLy8gSGVyZSwgd2UgaGF2ZSBhIGtleSBjb2xsaXNpb25cbiAgICBpZiAoZ3JhcGguX2VkZ2VzLmhhcyhlZGdlKSlcbiAgICAgIHRocm93IG5ldyBVc2FnZUdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke25hbWV9OiB0aGUgXCIke2VkZ2V9XCIgZWRnZSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcbiAgfVxuXG4gIGxldCBzb3VyY2VXYXNBZGRlZCA9IGZhbHNlO1xuICBsZXQgdGFyZ2V0V2FzQWRkZWQgPSBmYWxzZTtcblxuICBpZiAoIXNvdXJjZURhdGEpIHtcbiAgICBzb3VyY2VEYXRhID0gdW5zYWZlQWRkTm9kZShncmFwaCwgc291cmNlLCB7fSk7XG4gICAgc291cmNlV2FzQWRkZWQgPSB0cnVlO1xuXG4gICAgaWYgKHNvdXJjZSA9PT0gdGFyZ2V0KSB7XG4gICAgICB0YXJnZXREYXRhID0gc291cmNlRGF0YTtcbiAgICAgIHRhcmdldFdhc0FkZGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgaWYgKCF0YXJnZXREYXRhKSB7XG4gICAgdGFyZ2V0RGF0YSA9IHVuc2FmZUFkZE5vZGUoZ3JhcGgsIHRhcmdldCwge30pO1xuICAgIHRhcmdldFdhc0FkZGVkID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIFN0b3Jpbmcgc29tZSBkYXRhXG4gIGVkZ2VEYXRhID0gbmV3IEVkZ2VEYXRhKHVuZGlyZWN0ZWQsIGVkZ2UsIHNvdXJjZURhdGEsIHRhcmdldERhdGEsIGF0dHJpYnV0ZXMpO1xuXG4gIC8vIEFkZGluZyB0aGUgZWRnZSB0byB0aGUgaW50ZXJuYWwgcmVnaXN0ZXJcbiAgZ3JhcGguX2VkZ2VzLnNldChlZGdlLCBlZGdlRGF0YSk7XG5cbiAgLy8gSW5jcmVtZW50aW5nIG5vZGUgZGVncmVlIGNvdW50ZXJzXG4gIGlmIChzb3VyY2UgPT09IHRhcmdldCkge1xuICAgIGlmICh1bmRpcmVjdGVkKSB7XG4gICAgICBzb3VyY2VEYXRhLnVuZGlyZWN0ZWRTZWxmTG9vcHMrKztcbiAgICAgIGdyYXBoLl91bmRpcmVjdGVkU2VsZkxvb3BDb3VudCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzb3VyY2VEYXRhLmRpcmVjdGVkU2VsZkxvb3BzKys7XG4gICAgICBncmFwaC5fZGlyZWN0ZWRTZWxmTG9vcENvdW50Kys7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh1bmRpcmVjdGVkKSB7XG4gICAgICBzb3VyY2VEYXRhLnVuZGlyZWN0ZWREZWdyZWUrKztcbiAgICAgIHRhcmdldERhdGEudW5kaXJlY3RlZERlZ3JlZSsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzb3VyY2VEYXRhLm91dERlZ3JlZSsrO1xuICAgICAgdGFyZ2V0RGF0YS5pbkRlZ3JlZSsrO1xuICAgIH1cbiAgfVxuXG4gIC8vIFVwZGF0aW5nIHJlbGV2YW50IGluZGV4XG4gIHVwZGF0ZVN0cnVjdHVyZUluZGV4KFxuICAgIGdyYXBoLFxuICAgIHVuZGlyZWN0ZWQsXG4gICAgZWRnZURhdGEsXG4gICAgc291cmNlLFxuICAgIHRhcmdldCxcbiAgICBzb3VyY2VEYXRhLFxuICAgIHRhcmdldERhdGFcbiAgKTtcblxuICBpZiAodW5kaXJlY3RlZCkgZ3JhcGguX3VuZGlyZWN0ZWRTaXplKys7XG4gIGVsc2UgZ3JhcGguX2RpcmVjdGVkU2l6ZSsrO1xuXG4gIC8vIEVtaXR0aW5nXG4gIGV2ZW50RGF0YS5rZXkgPSBlZGdlO1xuXG4gIGdyYXBoLmVtaXQoJ2VkZ2VBZGRlZCcsIGV2ZW50RGF0YSk7XG5cbiAgcmV0dXJuIFtlZGdlLCB0cnVlLCBzb3VyY2VXYXNBZGRlZCwgdGFyZ2V0V2FzQWRkZWRdO1xufVxuXG4vKipcbiAqIEdyYXBoIGNsYXNzXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0gIHtvYmplY3R9ICBbb3B0aW9uc10gLSBPcHRpb25zOlxuICogQHBhcmFtICB7Ym9vbGVhbn0gICBbYWxsb3dTZWxmTG9vcHNdIC0gQWxsb3cgc2VsZiBsb29wcz9cbiAqIEBwYXJhbSAge3N0cmluZ30gICAgW3R5cGVdICAgICAgICAgICAtIFR5cGUgb2YgdGhlIGdyYXBoLlxuICogQHBhcmFtICB7Ym9vbGVhbn0gICBbbWFwXSAgICAgICAgICAgIC0gQWxsb3cgcmVmZXJlbmNlcyBhcyBrZXlzP1xuICogQHBhcmFtICB7Ym9vbGVhbn0gICBbbXVsdGldICAgICAgICAgIC0gQWxsb3cgcGFyYWxsZWwgZWRnZXM/XG4gKlxuICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgYXJndW1lbnRzIGFyZSBub3QgdmFsaWQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdyYXBoIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLy0tIFNvbHZpbmcgb3B0aW9uc1xuICAgIG9wdGlvbnMgPSBhc3NpZ24oe30sIERFRkFVTFRTLCBvcHRpb25zKTtcblxuICAgIC8vIEVuZm9yY2luZyBvcHRpb25zIHZhbGlkaXR5XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLm11bHRpICE9PSAnYm9vbGVhbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5jb25zdHJ1Y3RvcjogaW52YWxpZCAnbXVsdGknIG9wdGlvbi4gRXhwZWN0aW5nIGEgYm9vbGVhbiBidXQgZ290IFwiJHtvcHRpb25zLm11bHRpfVwiLmBcbiAgICAgICk7XG5cbiAgICBpZiAoIVRZUEVTLmhhcyhvcHRpb25zLnR5cGUpKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguY29uc3RydWN0b3I6IGludmFsaWQgJ3R5cGUnIG9wdGlvbi4gU2hvdWxkIGJlIG9uZSBvZiBcIm1peGVkXCIsIFwiZGlyZWN0ZWRcIiBvciBcInVuZGlyZWN0ZWRcIiBidXQgZ290IFwiJHtvcHRpb25zLnR5cGV9XCIuYFxuICAgICAgKTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hbGxvd1NlbGZMb29wcyAhPT0gJ2Jvb2xlYW4nKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguY29uc3RydWN0b3I6IGludmFsaWQgJ2FsbG93U2VsZkxvb3BzJyBvcHRpb24uIEV4cGVjdGluZyBhIGJvb2xlYW4gYnV0IGdvdCBcIiR7b3B0aW9ucy5hbGxvd1NlbGZMb29wc31cIi5gXG4gICAgICApO1xuXG4gICAgLy8tLSBQcml2YXRlIHByb3BlcnRpZXNcblxuICAgIC8vIFV0aWxpdGllc1xuICAgIGNvbnN0IE5vZGVEYXRhQ2xhc3MgPVxuICAgICAgb3B0aW9ucy50eXBlID09PSAnbWl4ZWQnXG4gICAgICAgID8gTWl4ZWROb2RlRGF0YVxuICAgICAgICA6IG9wdGlvbnMudHlwZSA9PT0gJ2RpcmVjdGVkJ1xuICAgICAgICA/IERpcmVjdGVkTm9kZURhdGFcbiAgICAgICAgOiBVbmRpcmVjdGVkTm9kZURhdGE7XG5cbiAgICBwcml2YXRlUHJvcGVydHkodGhpcywgJ05vZGVEYXRhQ2xhc3MnLCBOb2RlRGF0YUNsYXNzKTtcblxuICAgIC8vIEludGVybmFsIGVkZ2Uga2V5IGdlbmVyYXRvclxuXG4gICAgLy8gTk9URTogdGhpcyBpbnRlcm5hbCBnZW5lcmF0b3IgcHJvZHVjZSBrZXlzIHRoYXQgYXJlIHN0cmluZ3NcbiAgICAvLyBjb21wb3NlZCBvZiBhIHdlaXJkIHByZWZpeCwgYW4gaW5jcmVtZW50YWwgaW5zdGFuY2UgaWQgc3RhcnRpbmcgZnJvbVxuICAgIC8vIGEgcmFuZG9tIGJ5dGUgYW5kIGZpbmFsbHkgYW4gaW50ZXJuYWwgaW5zdGFuY2UgaW5jcmVtZW50YWwgaWQuXG4gICAgLy8gQWxsIHRoaXMgdG8gYXZvaWQgaW50cmEtZnJhbWUgYW5kIGNyb3NzLWZyYW1lIGFkdmVyc2FyaWFsIGlucHV0c1xuICAgIC8vIHRoYXQgY2FuIGZvcmNlIGEgc2luZ2xlICMuYWRkRWRnZSBjYWxsIHRvIGRlZ2VuZXJhdGUgaW50byBhIE8obilcbiAgICAvLyBhdmFpbGFibGUga2V5IHNlYXJjaCBsb29wLlxuXG4gICAgLy8gSXQgYWxzbyBlbnN1cmVzIHRoYXQgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZWRnZSBrZXlzIGFyZSB1bmxpa2VseVxuICAgIC8vIHRvIHByb2R1Y2UgY29sbGlzaW9ucyB3aXRoIGFyYml0cmFyeSBrZXlzIGdpdmVuIGJ5IHVzZXJzLlxuICAgIGNvbnN0IGluc3RhbmNlSWQgPSBJTlNUQU5DRV9JRCgpO1xuICAgIGxldCBlZGdlSWQgPSAwO1xuXG4gICAgY29uc3QgZWRnZUtleUdlbmVyYXRvciA9ICgpID0+IHtcbiAgICAgIGxldCBhdmFpbGFibGVFZGdlS2V5O1xuXG4gICAgICBkbyB7XG4gICAgICAgIGF2YWlsYWJsZUVkZ2VLZXkgPSAnZ2VpZF8nICsgaW5zdGFuY2VJZCArICdfJyArIGVkZ2VJZCsrO1xuICAgICAgfSB3aGlsZSAodGhpcy5fZWRnZXMuaGFzKGF2YWlsYWJsZUVkZ2VLZXkpKTtcblxuICAgICAgcmV0dXJuIGF2YWlsYWJsZUVkZ2VLZXk7XG4gICAgfTtcblxuICAgIC8vIEluZGV4ZXNcbiAgICBwcml2YXRlUHJvcGVydHkodGhpcywgJ19hdHRyaWJ1dGVzJywge30pO1xuICAgIHByaXZhdGVQcm9wZXJ0eSh0aGlzLCAnX25vZGVzJywgbmV3IE1hcCgpKTtcbiAgICBwcml2YXRlUHJvcGVydHkodGhpcywgJ19lZGdlcycsIG5ldyBNYXAoKSk7XG4gICAgcHJpdmF0ZVByb3BlcnR5KHRoaXMsICdfZGlyZWN0ZWRTaXplJywgMCk7XG4gICAgcHJpdmF0ZVByb3BlcnR5KHRoaXMsICdfdW5kaXJlY3RlZFNpemUnLCAwKTtcbiAgICBwcml2YXRlUHJvcGVydHkodGhpcywgJ19kaXJlY3RlZFNlbGZMb29wQ291bnQnLCAwKTtcbiAgICBwcml2YXRlUHJvcGVydHkodGhpcywgJ191bmRpcmVjdGVkU2VsZkxvb3BDb3VudCcsIDApO1xuICAgIHByaXZhdGVQcm9wZXJ0eSh0aGlzLCAnX2VkZ2VLZXlHZW5lcmF0b3InLCBlZGdlS2V5R2VuZXJhdG9yKTtcblxuICAgIC8vIE9wdGlvbnNcbiAgICBwcml2YXRlUHJvcGVydHkodGhpcywgJ19vcHRpb25zJywgb3B0aW9ucyk7XG5cbiAgICAvLyBFbWl0dGVyIHByb3BlcnRpZXNcbiAgICBFTUlUVEVSX1BST1BTLmZvckVhY2gocHJvcCA9PiBwcml2YXRlUHJvcGVydHkodGhpcywgcHJvcCwgdGhpc1twcm9wXSkpO1xuXG4gICAgLy8tLSBQcm9wZXJ0aWVzIHJlYWRlcnNcbiAgICByZWFkT25seVByb3BlcnR5KHRoaXMsICdvcmRlcicsICgpID0+IHRoaXMuX25vZGVzLnNpemUpO1xuICAgIHJlYWRPbmx5UHJvcGVydHkodGhpcywgJ3NpemUnLCAoKSA9PiB0aGlzLl9lZGdlcy5zaXplKTtcbiAgICByZWFkT25seVByb3BlcnR5KHRoaXMsICdkaXJlY3RlZFNpemUnLCAoKSA9PiB0aGlzLl9kaXJlY3RlZFNpemUpO1xuICAgIHJlYWRPbmx5UHJvcGVydHkodGhpcywgJ3VuZGlyZWN0ZWRTaXplJywgKCkgPT4gdGhpcy5fdW5kaXJlY3RlZFNpemUpO1xuICAgIHJlYWRPbmx5UHJvcGVydHkoXG4gICAgICB0aGlzLFxuICAgICAgJ3NlbGZMb29wQ291bnQnLFxuICAgICAgKCkgPT4gdGhpcy5fZGlyZWN0ZWRTZWxmTG9vcENvdW50ICsgdGhpcy5fdW5kaXJlY3RlZFNlbGZMb29wQ291bnRcbiAgICApO1xuICAgIHJlYWRPbmx5UHJvcGVydHkoXG4gICAgICB0aGlzLFxuICAgICAgJ2RpcmVjdGVkU2VsZkxvb3BDb3VudCcsXG4gICAgICAoKSA9PiB0aGlzLl9kaXJlY3RlZFNlbGZMb29wQ291bnRcbiAgICApO1xuICAgIHJlYWRPbmx5UHJvcGVydHkoXG4gICAgICB0aGlzLFxuICAgICAgJ3VuZGlyZWN0ZWRTZWxmTG9vcENvdW50JyxcbiAgICAgICgpID0+IHRoaXMuX3VuZGlyZWN0ZWRTZWxmTG9vcENvdW50XG4gICAgKTtcbiAgICByZWFkT25seVByb3BlcnR5KHRoaXMsICdtdWx0aScsIHRoaXMuX29wdGlvbnMubXVsdGkpO1xuICAgIHJlYWRPbmx5UHJvcGVydHkodGhpcywgJ3R5cGUnLCB0aGlzLl9vcHRpb25zLnR5cGUpO1xuICAgIHJlYWRPbmx5UHJvcGVydHkodGhpcywgJ2FsbG93U2VsZkxvb3BzJywgdGhpcy5fb3B0aW9ucy5hbGxvd1NlbGZMb29wcyk7XG4gICAgcmVhZE9ubHlQcm9wZXJ0eSh0aGlzLCAnaW1wbGVtZW50YXRpb24nLCAoKSA9PiAnZ3JhcGhvbG9neScpO1xuICB9XG5cbiAgX3Jlc2V0SW5zdGFuY2VDb3VudGVycygpIHtcbiAgICB0aGlzLl9kaXJlY3RlZFNpemUgPSAwO1xuICAgIHRoaXMuX3VuZGlyZWN0ZWRTaXplID0gMDtcbiAgICB0aGlzLl9kaXJlY3RlZFNlbGZMb29wQ291bnQgPSAwO1xuICAgIHRoaXMuX3VuZGlyZWN0ZWRTZWxmTG9vcENvdW50ID0gMDtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBSZWFkXG4gICAqKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKi9cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB3aGV0aGVyIHRoZSBnaXZlbiBub2RlIGlzIGZvdW5kIGluIHRoZSBncmFwaC5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgbm9kZSAtIFRoZSBub2RlLlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaGFzTm9kZShub2RlKSB7XG4gICAgcmV0dXJuIHRoaXMuX25vZGVzLmhhcygnJyArIG5vZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgd2hldGhlciB0aGUgZ2l2ZW4gZGlyZWN0ZWQgZWRnZSBpcyBmb3VuZCBpbiB0aGUgZ3JhcGguXG4gICAqXG4gICAqIEFyaXR5IDE6XG4gICAqIEBwYXJhbSAge2FueX0gICAgIGVkZ2UgLSBUaGUgZWRnZSdzIGtleS5cbiAgICpcbiAgICogQXJpdHkgMjpcbiAgICogQHBhcmFtICB7YW55fSAgICAgc291cmNlIC0gVGhlIGVkZ2UncyBzb3VyY2UuXG4gICAqIEBwYXJhbSAge2FueX0gICAgIHRhcmdldCAtIFRoZSBlZGdlJ3MgdGFyZ2V0LlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBhcmd1bWVudHMgYXJlIGludmFsaWQuXG4gICAqL1xuICBoYXNEaXJlY3RlZEVkZ2Uoc291cmNlLCB0YXJnZXQpIHtcbiAgICAvLyBFYXJseSB0ZXJtaW5hdGlvblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICd1bmRpcmVjdGVkJykgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IGVkZ2UgPSAnJyArIHNvdXJjZTtcblxuICAgICAgY29uc3QgZWRnZURhdGEgPSB0aGlzLl9lZGdlcy5nZXQoZWRnZSk7XG5cbiAgICAgIHJldHVybiAhIWVkZ2VEYXRhICYmICFlZGdlRGF0YS51bmRpcmVjdGVkO1xuICAgIH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgc291cmNlID0gJycgKyBzb3VyY2U7XG4gICAgICB0YXJnZXQgPSAnJyArIHRhcmdldDtcblxuICAgICAgLy8gSWYgdGhlIG5vZGUgc291cmNlIG9yIHRoZSB0YXJnZXQgaXMgbm90IGluIHRoZSBncmFwaCB3ZSBicmVha1xuICAgICAgY29uc3Qgbm9kZURhdGEgPSB0aGlzLl9ub2Rlcy5nZXQoc291cmNlKTtcblxuICAgICAgaWYgKCFub2RlRGF0YSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAvLyBJcyB0aGVyZSBhIGRpcmVjdGVkIGVkZ2UgcG9pbnRpbmcgdG93YXJkIHRhcmdldD9cbiAgICAgIGNvbnN0IGVkZ2VzID0gbm9kZURhdGEub3V0W3RhcmdldF07XG5cbiAgICAgIGlmICghZWRnZXMpIHJldHVybiBmYWxzZTtcblxuICAgICAgcmV0dXJuIHRoaXMubXVsdGkgPyAhIWVkZ2VzLnNpemUgOiB0cnVlO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgIGBHcmFwaC5oYXNEaXJlY3RlZEVkZ2U6IGludmFsaWQgYXJpdHkgKCR7YXJndW1lbnRzLmxlbmd0aH0sIGluc3RlYWQgb2YgMSBvciAyKS4gWW91IGNhbiBlaXRoZXIgYXNrIGZvciBhbiBlZGdlIGlkIG9yIGZvciB0aGUgZXhpc3RlbmNlIG9mIGFuIGVkZ2UgYmV0d2VlbiBhIHNvdXJjZSAmIGEgdGFyZ2V0LmBcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgd2hldGhlciB0aGUgZ2l2ZW4gdW5kaXJlY3RlZCBlZGdlIGlzIGZvdW5kIGluIHRoZSBncmFwaC5cbiAgICpcbiAgICogQXJpdHkgMTpcbiAgICogQHBhcmFtICB7YW55fSAgICAgZWRnZSAtIFRoZSBlZGdlJ3Mga2V5LlxuICAgKlxuICAgKiBBcml0eSAyOlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICBzb3VyY2UgLSBUaGUgZWRnZSdzIHNvdXJjZS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgdGFyZ2V0IC0gVGhlIGVkZ2UncyB0YXJnZXQuXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIGFyZ3VtZW50cyBhcmUgaW52YWxpZC5cbiAgICovXG4gIGhhc1VuZGlyZWN0ZWRFZGdlKHNvdXJjZSwgdGFyZ2V0KSB7XG4gICAgLy8gRWFybHkgdGVybWluYXRpb25cbiAgICBpZiAodGhpcy50eXBlID09PSAnZGlyZWN0ZWQnKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgZWRnZSA9ICcnICsgc291cmNlO1xuXG4gICAgICBjb25zdCBlZGdlRGF0YSA9IHRoaXMuX2VkZ2VzLmdldChlZGdlKTtcblxuICAgICAgcmV0dXJuICEhZWRnZURhdGEgJiYgZWRnZURhdGEudW5kaXJlY3RlZDtcbiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHNvdXJjZSA9ICcnICsgc291cmNlO1xuICAgICAgdGFyZ2V0ID0gJycgKyB0YXJnZXQ7XG5cbiAgICAgIC8vIElmIHRoZSBub2RlIHNvdXJjZSBvciB0aGUgdGFyZ2V0IGlzIG5vdCBpbiB0aGUgZ3JhcGggd2UgYnJlYWtcbiAgICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KHNvdXJjZSk7XG5cbiAgICAgIGlmICghbm9kZURhdGEpIHJldHVybiBmYWxzZTtcblxuICAgICAgLy8gSXMgdGhlcmUgYSBkaXJlY3RlZCBlZGdlIHBvaW50aW5nIHRvd2FyZCB0YXJnZXQ/XG4gICAgICBjb25zdCBlZGdlcyA9IG5vZGVEYXRhLnVuZGlyZWN0ZWRbdGFyZ2V0XTtcblxuICAgICAgaWYgKCFlZGdlcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgICByZXR1cm4gdGhpcy5tdWx0aSA/ICEhZWRnZXMuc2l6ZSA6IHRydWU7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgYEdyYXBoLmhhc0RpcmVjdGVkRWRnZTogaW52YWxpZCBhcml0eSAoJHthcmd1bWVudHMubGVuZ3RofSwgaW5zdGVhZCBvZiAxIG9yIDIpLiBZb3UgY2FuIGVpdGhlciBhc2sgZm9yIGFuIGVkZ2UgaWQgb3IgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYW4gZWRnZSBiZXR3ZWVuIGEgc291cmNlICYgYSB0YXJnZXQuYFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB3aGV0aGVyIHRoZSBnaXZlbiBlZGdlIGlzIGZvdW5kIGluIHRoZSBncmFwaC5cbiAgICpcbiAgICogQXJpdHkgMTpcbiAgICogQHBhcmFtICB7YW55fSAgICAgZWRnZSAtIFRoZSBlZGdlJ3Mga2V5LlxuICAgKlxuICAgKiBBcml0eSAyOlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICBzb3VyY2UgLSBUaGUgZWRnZSdzIHNvdXJjZS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgdGFyZ2V0IC0gVGhlIGVkZ2UncyB0YXJnZXQuXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIGFyZ3VtZW50cyBhcmUgaW52YWxpZC5cbiAgICovXG4gIGhhc0VkZ2Uoc291cmNlLCB0YXJnZXQpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgZWRnZSA9ICcnICsgc291cmNlO1xuXG4gICAgICByZXR1cm4gdGhpcy5fZWRnZXMuaGFzKGVkZ2UpO1xuICAgIH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgc291cmNlID0gJycgKyBzb3VyY2U7XG4gICAgICB0YXJnZXQgPSAnJyArIHRhcmdldDtcblxuICAgICAgLy8gSWYgdGhlIG5vZGUgc291cmNlIG9yIHRoZSB0YXJnZXQgaXMgbm90IGluIHRoZSBncmFwaCB3ZSBicmVha1xuICAgICAgY29uc3Qgbm9kZURhdGEgPSB0aGlzLl9ub2Rlcy5nZXQoc291cmNlKTtcblxuICAgICAgaWYgKCFub2RlRGF0YSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAvLyBJcyB0aGVyZSBhIGRpcmVjdGVkIGVkZ2UgcG9pbnRpbmcgdG93YXJkIHRhcmdldD9cbiAgICAgIGxldCBlZGdlcyA9IHR5cGVvZiBub2RlRGF0YS5vdXQgIT09ICd1bmRlZmluZWQnICYmIG5vZGVEYXRhLm91dFt0YXJnZXRdO1xuXG4gICAgICBpZiAoIWVkZ2VzKVxuICAgICAgICBlZGdlcyA9XG4gICAgICAgICAgdHlwZW9mIG5vZGVEYXRhLnVuZGlyZWN0ZWQgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgbm9kZURhdGEudW5kaXJlY3RlZFt0YXJnZXRdO1xuXG4gICAgICBpZiAoIWVkZ2VzKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIHJldHVybiB0aGlzLm11bHRpID8gISFlZGdlcy5zaXplIDogdHJ1ZTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICBgR3JhcGguaGFzRWRnZTogaW52YWxpZCBhcml0eSAoJHthcmd1bWVudHMubGVuZ3RofSwgaW5zdGVhZCBvZiAxIG9yIDIpLiBZb3UgY2FuIGVpdGhlciBhc2sgZm9yIGFuIGVkZ2UgaWQgb3IgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYW4gZWRnZSBiZXR3ZWVuIGEgc291cmNlICYgYSB0YXJnZXQuYFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgZWRnZSBtYXRjaGluZyBzb3VyY2UgJiB0YXJnZXQgaW4gYSBkaXJlY3RlZCBmYXNoaW9uLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9IHNvdXJjZSAtIFRoZSBlZGdlJ3Mgc291cmNlLlxuICAgKiBAcGFyYW0gIHthbnl9IHRhcmdldCAtIFRoZSBlZGdlJ3MgdGFyZ2V0LlxuICAgKlxuICAgKiBAcmV0dXJuIHthbnl8dW5kZWZpbmVkfVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBncmFwaCBpcyBtdWx0aS5cbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiBzb3VyY2Ugb3IgdGFyZ2V0IGRvZXNuJ3QgZXhpc3QuXG4gICAqL1xuICBkaXJlY3RlZEVkZ2Uoc291cmNlLCB0YXJnZXQpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSAndW5kaXJlY3RlZCcpIHJldHVybjtcblxuICAgIHNvdXJjZSA9ICcnICsgc291cmNlO1xuICAgIHRhcmdldCA9ICcnICsgdGFyZ2V0O1xuXG4gICAgaWYgKHRoaXMubXVsdGkpXG4gICAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgICAnR3JhcGguZGlyZWN0ZWRFZGdlOiB0aGlzIG1ldGhvZCBpcyBpcnJlbGV2YW50IHdpdGggbXVsdGlncmFwaHMgc2luY2UgdGhlcmUgbWlnaHQgYmUgbXVsdGlwbGUgZWRnZXMgYmV0d2VlbiBzb3VyY2UgJiB0YXJnZXQuIFNlZSAjLmRpcmVjdGVkRWRnZXMgaW5zdGVhZC4nXG4gICAgICApO1xuXG4gICAgY29uc3Qgc291cmNlRGF0YSA9IHRoaXMuX25vZGVzLmdldChzb3VyY2UpO1xuXG4gICAgaWYgKCFzb3VyY2VEYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLmRpcmVjdGVkRWRnZTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtzb3VyY2V9XCIgc291cmNlIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAoIXRoaXMuX25vZGVzLmhhcyh0YXJnZXQpKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLmRpcmVjdGVkRWRnZTogY291bGQgbm90IGZpbmQgdGhlIFwiJHt0YXJnZXR9XCIgdGFyZ2V0IG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBjb25zdCBlZGdlRGF0YSA9IChzb3VyY2VEYXRhLm91dCAmJiBzb3VyY2VEYXRhLm91dFt0YXJnZXRdKSB8fCB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZWRnZURhdGEpIHJldHVybiBlZGdlRGF0YS5rZXk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgZWRnZSBtYXRjaGluZyBzb3VyY2UgJiB0YXJnZXQgaW4gYSB1bmRpcmVjdGVkIGZhc2hpb24uXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gc291cmNlIC0gVGhlIGVkZ2UncyBzb3VyY2UuXG4gICAqIEBwYXJhbSAge2FueX0gdGFyZ2V0IC0gVGhlIGVkZ2UncyB0YXJnZXQuXG4gICAqXG4gICAqIEByZXR1cm4ge2FueXx1bmRlZmluZWR9XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIGdyYXBoIGlzIG11bHRpLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHNvdXJjZSBvciB0YXJnZXQgZG9lc24ndCBleGlzdC5cbiAgICovXG4gIHVuZGlyZWN0ZWRFZGdlKHNvdXJjZSwgdGFyZ2V0KSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2RpcmVjdGVkJykgcmV0dXJuO1xuXG4gICAgc291cmNlID0gJycgKyBzb3VyY2U7XG4gICAgdGFyZ2V0ID0gJycgKyB0YXJnZXQ7XG5cbiAgICBpZiAodGhpcy5tdWx0aSlcbiAgICAgIHRocm93IG5ldyBVc2FnZUdyYXBoRXJyb3IoXG4gICAgICAgICdHcmFwaC51bmRpcmVjdGVkRWRnZTogdGhpcyBtZXRob2QgaXMgaXJyZWxldmFudCB3aXRoIG11bHRpZ3JhcGhzIHNpbmNlIHRoZXJlIG1pZ2h0IGJlIG11bHRpcGxlIGVkZ2VzIGJldHdlZW4gc291cmNlICYgdGFyZ2V0LiBTZWUgIy51bmRpcmVjdGVkRWRnZXMgaW5zdGVhZC4nXG4gICAgICApO1xuXG4gICAgY29uc3Qgc291cmNlRGF0YSA9IHRoaXMuX25vZGVzLmdldChzb3VyY2UpO1xuXG4gICAgaWYgKCFzb3VyY2VEYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLnVuZGlyZWN0ZWRFZGdlOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke3NvdXJjZX1cIiBzb3VyY2Ugbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIGlmICghdGhpcy5fbm9kZXMuaGFzKHRhcmdldCkpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGgudW5kaXJlY3RlZEVkZ2U6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7dGFyZ2V0fVwiIHRhcmdldCBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgY29uc3QgZWRnZURhdGEgPVxuICAgICAgKHNvdXJjZURhdGEudW5kaXJlY3RlZCAmJiBzb3VyY2VEYXRhLnVuZGlyZWN0ZWRbdGFyZ2V0XSkgfHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKGVkZ2VEYXRhKSByZXR1cm4gZWRnZURhdGEua2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgdGhlIGVkZ2UgbWF0Y2hpbmcgc291cmNlICYgdGFyZ2V0IGluIGEgbWl4ZWQgZmFzaGlvbi5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSBzb3VyY2UgLSBUaGUgZWRnZSdzIHNvdXJjZS5cbiAgICogQHBhcmFtICB7YW55fSB0YXJnZXQgLSBUaGUgZWRnZSdzIHRhcmdldC5cbiAgICpcbiAgICogQHJldHVybiB7YW55fHVuZGVmaW5lZH1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgZ3JhcGggaXMgbXVsdGkuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgc291cmNlIG9yIHRhcmdldCBkb2Vzbid0IGV4aXN0LlxuICAgKi9cbiAgZWRnZShzb3VyY2UsIHRhcmdldCkge1xuICAgIGlmICh0aGlzLm11bHRpKVxuICAgICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgICAgJ0dyYXBoLmVkZ2U6IHRoaXMgbWV0aG9kIGlzIGlycmVsZXZhbnQgd2l0aCBtdWx0aWdyYXBocyBzaW5jZSB0aGVyZSBtaWdodCBiZSBtdWx0aXBsZSBlZGdlcyBiZXR3ZWVuIHNvdXJjZSAmIHRhcmdldC4gU2VlICMuZWRnZXMgaW5zdGVhZC4nXG4gICAgICApO1xuXG4gICAgc291cmNlID0gJycgKyBzb3VyY2U7XG4gICAgdGFyZ2V0ID0gJycgKyB0YXJnZXQ7XG5cbiAgICBjb25zdCBzb3VyY2VEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KHNvdXJjZSk7XG5cbiAgICBpZiAoIXNvdXJjZURhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguZWRnZTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtzb3VyY2V9XCIgc291cmNlIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAoIXRoaXMuX25vZGVzLmhhcyh0YXJnZXQpKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLmVkZ2U6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7dGFyZ2V0fVwiIHRhcmdldCBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgY29uc3QgZWRnZURhdGEgPVxuICAgICAgKHNvdXJjZURhdGEub3V0ICYmIHNvdXJjZURhdGEub3V0W3RhcmdldF0pIHx8XG4gICAgICAoc291cmNlRGF0YS51bmRpcmVjdGVkICYmIHNvdXJjZURhdGEudW5kaXJlY3RlZFt0YXJnZXRdKSB8fFxuICAgICAgdW5kZWZpbmVkO1xuXG4gICAgaWYgKGVkZ2VEYXRhKSByZXR1cm4gZWRnZURhdGEua2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgd2hldGhlciB0d28gbm9kZXMgYXJlIGRpcmVjdGVkIG5laWdoYm9ycy5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgbm9kZSAgICAgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgbmVpZ2hib3IgLSBUaGUgbmVpZ2hib3IncyBrZXkuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIG5vZGUgaXNuJ3QgaW4gdGhlIGdyYXBoLlxuICAgKi9cbiAgYXJlRGlyZWN0ZWROZWlnaGJvcnMobm9kZSwgbmVpZ2hib3IpIHtcbiAgICBub2RlID0gJycgKyBub2RlO1xuICAgIG5laWdoYm9yID0gJycgKyBuZWlnaGJvcjtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFub2RlRGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5hcmVEaXJlY3RlZE5laWdoYm9yczogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAndW5kaXJlY3RlZCcpIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiBuZWlnaGJvciBpbiBub2RlRGF0YS5pbiB8fCBuZWlnaGJvciBpbiBub2RlRGF0YS5vdXQ7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB3aGV0aGVyIHR3byBub2RlcyBhcmUgb3V0IG5laWdoYm9ycy5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgbm9kZSAgICAgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgbmVpZ2hib3IgLSBUaGUgbmVpZ2hib3IncyBrZXkuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIG5vZGUgaXNuJ3QgaW4gdGhlIGdyYXBoLlxuICAgKi9cbiAgYXJlT3V0TmVpZ2hib3JzKG5vZGUsIG5laWdoYm9yKSB7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcbiAgICBuZWlnaGJvciA9ICcnICsgbmVpZ2hib3I7XG5cbiAgICBjb25zdCBub2RlRGF0YSA9IHRoaXMuX25vZGVzLmdldChub2RlKTtcblxuICAgIGlmICghbm9kZURhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguYXJlT3V0TmVpZ2hib3JzOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke25vZGV9XCIgbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICd1bmRpcmVjdGVkJykgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmV0dXJuIG5laWdoYm9yIGluIG5vZGVEYXRhLm91dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHdoZXRoZXIgdHdvIG5vZGVzIGFyZSBpbiBuZWlnaGJvcnMuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5vZGUgICAgIC0gVGhlIG5vZGUncyBrZXkuXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5laWdoYm9yIC0gVGhlIG5laWdoYm9yJ3Mga2V5LlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIGFyZUluTmVpZ2hib3JzKG5vZGUsIG5laWdoYm9yKSB7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcbiAgICBuZWlnaGJvciA9ICcnICsgbmVpZ2hib3I7XG5cbiAgICBjb25zdCBub2RlRGF0YSA9IHRoaXMuX25vZGVzLmdldChub2RlKTtcblxuICAgIGlmICghbm9kZURhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguYXJlSW5OZWlnaGJvcnM6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7bm9kZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3VuZGlyZWN0ZWQnKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gbmVpZ2hib3IgaW4gbm9kZURhdGEuaW47XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB3aGV0aGVyIHR3byBub2RlcyBhcmUgdW5kaXJlY3RlZCBuZWlnaGJvcnMuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5vZGUgICAgIC0gVGhlIG5vZGUncyBrZXkuXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5laWdoYm9yIC0gVGhlIG5laWdoYm9yJ3Mga2V5LlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIGFyZVVuZGlyZWN0ZWROZWlnaGJvcnMobm9kZSwgbmVpZ2hib3IpIHtcbiAgICBub2RlID0gJycgKyBub2RlO1xuICAgIG5laWdoYm9yID0gJycgKyBuZWlnaGJvcjtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFub2RlRGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5hcmVVbmRpcmVjdGVkTmVpZ2hib3JzOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke25vZGV9XCIgbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdkaXJlY3RlZCcpIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiBuZWlnaGJvciBpbiBub2RlRGF0YS51bmRpcmVjdGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgd2hldGhlciB0d28gbm9kZXMgYXJlIG5laWdoYm9ycy5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgbm9kZSAgICAgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgbmVpZ2hib3IgLSBUaGUgbmVpZ2hib3IncyBrZXkuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIG5vZGUgaXNuJ3QgaW4gdGhlIGdyYXBoLlxuICAgKi9cbiAgYXJlTmVpZ2hib3JzKG5vZGUsIG5laWdoYm9yKSB7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcbiAgICBuZWlnaGJvciA9ICcnICsgbmVpZ2hib3I7XG5cbiAgICBjb25zdCBub2RlRGF0YSA9IHRoaXMuX25vZGVzLmdldChub2RlKTtcblxuICAgIGlmICghbm9kZURhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguYXJlTmVpZ2hib3JzOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke25vZGV9XCIgbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgICAgaWYgKG5laWdoYm9yIGluIG5vZGVEYXRhLmluIHx8IG5laWdoYm9yIGluIG5vZGVEYXRhLm91dCkgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ2RpcmVjdGVkJykge1xuICAgICAgaWYgKG5laWdoYm9yIGluIG5vZGVEYXRhLnVuZGlyZWN0ZWQpIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHdoZXRoZXIgdHdvIG5vZGVzIGFyZSBpbmJvdW5kIG5laWdoYm9ycy5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgbm9kZSAgICAgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgbmVpZ2hib3IgLSBUaGUgbmVpZ2hib3IncyBrZXkuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIG5vZGUgaXNuJ3QgaW4gdGhlIGdyYXBoLlxuICAgKi9cbiAgYXJlSW5ib3VuZE5laWdoYm9ycyhub2RlLCBuZWlnaGJvcikge1xuICAgIG5vZGUgPSAnJyArIG5vZGU7XG4gICAgbmVpZ2hib3IgPSAnJyArIG5laWdoYm9yO1xuXG4gICAgY29uc3Qgbm9kZURhdGEgPSB0aGlzLl9ub2Rlcy5nZXQobm9kZSk7XG5cbiAgICBpZiAoIW5vZGVEYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLmFyZUluYm91bmROZWlnaGJvcnM6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7bm9kZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ3VuZGlyZWN0ZWQnKSB7XG4gICAgICBpZiAobmVpZ2hib3IgaW4gbm9kZURhdGEuaW4pIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICdkaXJlY3RlZCcpIHtcbiAgICAgIGlmIChuZWlnaGJvciBpbiBub2RlRGF0YS51bmRpcmVjdGVkKSByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB3aGV0aGVyIHR3byBub2RlcyBhcmUgb3V0Ym91bmQgbmVpZ2hib3JzLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICBub2RlICAgICAtIFRoZSBub2RlJ3Mga2V5LlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICBuZWlnaGJvciAtIFRoZSBuZWlnaGJvcidzIGtleS5cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgbm9kZSBpc24ndCBpbiB0aGUgZ3JhcGguXG4gICAqL1xuICBhcmVPdXRib3VuZE5laWdoYm9ycyhub2RlLCBuZWlnaGJvcikge1xuICAgIG5vZGUgPSAnJyArIG5vZGU7XG4gICAgbmVpZ2hib3IgPSAnJyArIG5laWdoYm9yO1xuXG4gICAgY29uc3Qgbm9kZURhdGEgPSB0aGlzLl9ub2Rlcy5nZXQobm9kZSk7XG5cbiAgICBpZiAoIW5vZGVEYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLmFyZU91dGJvdW5kTmVpZ2hib3JzOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke25vZGV9XCIgbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgICAgaWYgKG5laWdoYm9yIGluIG5vZGVEYXRhLm91dCkgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ2RpcmVjdGVkJykge1xuICAgICAgaWYgKG5laWdoYm9yIGluIG5vZGVEYXRhLnVuZGlyZWN0ZWQpIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHRoZSBnaXZlbiBub2RlJ3MgaW4gZGVncmVlLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICBub2RlIC0gVGhlIG5vZGUncyBrZXkuXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgICAgLSBUaGUgbm9kZSdzIGluIGRlZ3JlZS5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgbm9kZSBpc24ndCBpbiB0aGUgZ3JhcGguXG4gICAqL1xuICBpbkRlZ3JlZShub2RlKSB7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFub2RlRGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5pbkRlZ3JlZTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAndW5kaXJlY3RlZCcpIHJldHVybiAwO1xuXG4gICAgcmV0dXJuIG5vZGVEYXRhLmluRGVncmVlICsgbm9kZURhdGEuZGlyZWN0ZWRTZWxmTG9vcHM7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgZ2l2ZW4gbm9kZSdzIG91dCBkZWdyZWUuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5vZGUgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAtIFRoZSBub2RlJ3MgaW4gZGVncmVlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIG91dERlZ3JlZShub2RlKSB7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFub2RlRGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5vdXREZWdyZWU6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7bm9kZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3VuZGlyZWN0ZWQnKSByZXR1cm4gMDtcblxuICAgIHJldHVybiBub2RlRGF0YS5vdXREZWdyZWUgKyBub2RlRGF0YS5kaXJlY3RlZFNlbGZMb29wcztcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHRoZSBnaXZlbiBub2RlJ3MgZGlyZWN0ZWQgZGVncmVlLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICBub2RlIC0gVGhlIG5vZGUncyBrZXkuXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgICAgLSBUaGUgbm9kZSdzIGluIGRlZ3JlZS5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgbm9kZSBpc24ndCBpbiB0aGUgZ3JhcGguXG4gICAqL1xuICBkaXJlY3RlZERlZ3JlZShub2RlKSB7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFub2RlRGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5kaXJlY3RlZERlZ3JlZTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAndW5kaXJlY3RlZCcpIHJldHVybiAwO1xuXG4gICAgY29uc3QgbG9vcHMgPSBub2RlRGF0YS5kaXJlY3RlZFNlbGZMb29wcztcblxuICAgIGNvbnN0IGluRGVncmVlID0gbm9kZURhdGEuaW5EZWdyZWUgKyBsb29wcztcbiAgICBjb25zdCBvdXREZWdyZWUgPSBub2RlRGF0YS5vdXREZWdyZWUgKyBsb29wcztcblxuICAgIHJldHVybiBpbkRlZ3JlZSArIG91dERlZ3JlZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHRoZSBnaXZlbiBub2RlJ3MgdW5kaXJlY3RlZCBkZWdyZWUuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5vZGUgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAtIFRoZSBub2RlJ3MgaW4gZGVncmVlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIHVuZGlyZWN0ZWREZWdyZWUobm9kZSkge1xuICAgIG5vZGUgPSAnJyArIG5vZGU7XG5cbiAgICBjb25zdCBub2RlRGF0YSA9IHRoaXMuX25vZGVzLmdldChub2RlKTtcblxuICAgIGlmICghbm9kZURhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGgudW5kaXJlY3RlZERlZ3JlZTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnZGlyZWN0ZWQnKSByZXR1cm4gMDtcblxuICAgIGNvbnN0IGxvb3BzID0gbm9kZURhdGEudW5kaXJlY3RlZFNlbGZMb29wcztcblxuICAgIHJldHVybiBub2RlRGF0YS51bmRpcmVjdGVkRGVncmVlICsgbG9vcHMgKiAyO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgdGhlIGdpdmVuIG5vZGUncyBkaXJlY3RlZCBkZWdyZWUuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5vZGUgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAtIFRoZSBub2RlJ3MgaW4gZGVncmVlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIGRlZ3JlZShub2RlKSB7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFub2RlRGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5kZWdyZWU6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7bm9kZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgbGV0IGRlZ3JlZSA9IDA7XG5cbiAgICBpZiAodGhpcy50eXBlICE9PSAnZGlyZWN0ZWQnKSB7XG4gICAgICBkZWdyZWUgKz0gbm9kZURhdGEudW5kaXJlY3RlZERlZ3JlZSArIG5vZGVEYXRhLnVuZGlyZWN0ZWRTZWxmTG9vcHMgKiAyO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgICAgZGVncmVlICs9XG4gICAgICAgIG5vZGVEYXRhLmluRGVncmVlICsgbm9kZURhdGEub3V0RGVncmVlICsgbm9kZURhdGEuZGlyZWN0ZWRTZWxmTG9vcHMgKiAyO1xuICAgIH1cblxuICAgIHJldHVybiBkZWdyZWU7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgZ2l2ZW4gbm9kZSdzIGluIGRlZ3JlZSB3aXRob3V0IGNvbnNpZGVyaW5nIHNlbGYgbG9vcHMuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5vZGUgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAtIFRoZSBub2RlJ3MgaW4gZGVncmVlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIGluRGVncmVlV2l0aG91dFNlbGZMb29wcyhub2RlKSB7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFub2RlRGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5pbkRlZ3JlZVdpdGhvdXRTZWxmTG9vcHM6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7bm9kZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3VuZGlyZWN0ZWQnKSByZXR1cm4gMDtcblxuICAgIHJldHVybiBub2RlRGF0YS5pbkRlZ3JlZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHRoZSBnaXZlbiBub2RlJ3Mgb3V0IGRlZ3JlZSB3aXRob3V0IGNvbnNpZGVyaW5nIHNlbGYgbG9vcHMuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5vZGUgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAtIFRoZSBub2RlJ3MgaW4gZGVncmVlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIG91dERlZ3JlZVdpdGhvdXRTZWxmTG9vcHMobm9kZSkge1xuICAgIG5vZGUgPSAnJyArIG5vZGU7XG5cbiAgICBjb25zdCBub2RlRGF0YSA9IHRoaXMuX25vZGVzLmdldChub2RlKTtcblxuICAgIGlmICghbm9kZURhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGgub3V0RGVncmVlV2l0aG91dFNlbGZMb29wczogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAndW5kaXJlY3RlZCcpIHJldHVybiAwO1xuXG4gICAgcmV0dXJuIG5vZGVEYXRhLm91dERlZ3JlZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHRoZSBnaXZlbiBub2RlJ3MgZGlyZWN0ZWQgZGVncmVlIHdpdGhvdXQgY29uc2lkZXJpbmcgc2VsZiBsb29wcy5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgbm9kZSAtIFRoZSBub2RlJ3Mga2V5LlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgICAgIC0gVGhlIG5vZGUncyBpbiBkZWdyZWUuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIG5vZGUgaXNuJ3QgaW4gdGhlIGdyYXBoLlxuICAgKi9cbiAgZGlyZWN0ZWREZWdyZWVXaXRob3V0U2VsZkxvb3BzKG5vZGUpIHtcbiAgICBub2RlID0gJycgKyBub2RlO1xuXG4gICAgY29uc3Qgbm9kZURhdGEgPSB0aGlzLl9ub2Rlcy5nZXQobm9kZSk7XG5cbiAgICBpZiAoIW5vZGVEYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLmRpcmVjdGVkRGVncmVlV2l0aG91dFNlbGZMb29wczogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAndW5kaXJlY3RlZCcpIHJldHVybiAwO1xuXG4gICAgcmV0dXJuIG5vZGVEYXRhLmluRGVncmVlICsgbm9kZURhdGEub3V0RGVncmVlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgdGhlIGdpdmVuIG5vZGUncyB1bmRpcmVjdGVkIGRlZ3JlZSB3aXRob3V0IGNvbnNpZGVyaW5nIHNlbGYgbG9vcHMuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5vZGUgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAtIFRoZSBub2RlJ3MgaW4gZGVncmVlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIHVuZGlyZWN0ZWREZWdyZWVXaXRob3V0U2VsZkxvb3BzKG5vZGUpIHtcbiAgICBub2RlID0gJycgKyBub2RlO1xuXG4gICAgY29uc3Qgbm9kZURhdGEgPSB0aGlzLl9ub2Rlcy5nZXQobm9kZSk7XG5cbiAgICBpZiAoIW5vZGVEYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLnVuZGlyZWN0ZWREZWdyZWVXaXRob3V0U2VsZkxvb3BzOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke25vZGV9XCIgbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdkaXJlY3RlZCcpIHJldHVybiAwO1xuXG4gICAgcmV0dXJuIG5vZGVEYXRhLnVuZGlyZWN0ZWREZWdyZWU7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgZ2l2ZW4gbm9kZSdzIGRpcmVjdGVkIGRlZ3JlZSB3aXRob3V0IGNvbnNpZGVyaW5nIHNlbGYgbG9vcHMuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5vZGUgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAtIFRoZSBub2RlJ3MgaW4gZGVncmVlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIGRlZ3JlZVdpdGhvdXRTZWxmTG9vcHMobm9kZSkge1xuICAgIG5vZGUgPSAnJyArIG5vZGU7XG5cbiAgICBjb25zdCBub2RlRGF0YSA9IHRoaXMuX25vZGVzLmdldChub2RlKTtcblxuICAgIGlmICghbm9kZURhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguZGVncmVlV2l0aG91dFNlbGZMb29wczogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBsZXQgZGVncmVlID0gMDtcblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICdkaXJlY3RlZCcpIHtcbiAgICAgIGRlZ3JlZSArPSBub2RlRGF0YS51bmRpcmVjdGVkRGVncmVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgICAgZGVncmVlICs9IG5vZGVEYXRhLmluRGVncmVlICsgbm9kZURhdGEub3V0RGVncmVlO1xuICAgIH1cblxuICAgIHJldHVybiBkZWdyZWU7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgZ2l2ZW4gZWRnZSdzIHNvdXJjZS5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSBlZGdlIC0gVGhlIGVkZ2UncyBrZXkuXG4gICAqIEByZXR1cm4ge2FueX0gICAgICAtIFRoZSBlZGdlJ3Mgc291cmNlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBlZGdlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIHNvdXJjZShlZGdlKSB7XG4gICAgZWRnZSA9ICcnICsgZWRnZTtcblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9lZGdlcy5nZXQoZWRnZSk7XG5cbiAgICBpZiAoIWRhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguc291cmNlOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VkZ2V9XCIgZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIHJldHVybiBkYXRhLnNvdXJjZS5rZXk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgZ2l2ZW4gZWRnZSdzIHRhcmdldC5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSBlZGdlIC0gVGhlIGVkZ2UncyBrZXkuXG4gICAqIEByZXR1cm4ge2FueX0gICAgICAtIFRoZSBlZGdlJ3MgdGFyZ2V0LlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBlZGdlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIHRhcmdldChlZGdlKSB7XG4gICAgZWRnZSA9ICcnICsgZWRnZTtcblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9lZGdlcy5nZXQoZWRnZSk7XG5cbiAgICBpZiAoIWRhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGgudGFyZ2V0OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VkZ2V9XCIgZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIHJldHVybiBkYXRhLnRhcmdldC5rZXk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgZ2l2ZW4gZWRnZSdzIGV4dHJlbWl0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgZWRnZSAtIFRoZSBlZGdlJ3Mga2V5LlxuICAgKiBAcmV0dXJuIHthcnJheX0gICAgICAtIFRoZSBlZGdlJ3MgZXh0cmVtaXRpZXMuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIGVkZ2UgaXNuJ3QgaW4gdGhlIGdyYXBoLlxuICAgKi9cbiAgZXh0cmVtaXRpZXMoZWRnZSkge1xuICAgIGVkZ2UgPSAnJyArIGVkZ2U7XG5cbiAgICBjb25zdCBlZGdlRGF0YSA9IHRoaXMuX2VkZ2VzLmdldChlZGdlKTtcblxuICAgIGlmICghZWRnZURhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguZXh0cmVtaXRpZXM6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7ZWRnZX1cIiBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgcmV0dXJuIFtlZGdlRGF0YS5zb3VyY2Uua2V5LCBlZGdlRGF0YS50YXJnZXQua2V5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhIG5vZGUgJiBhbiBlZGdlLCByZXR1cm5zIHRoZSBvdGhlciBleHRyZW1pdHkgb2YgdGhlIGVkZ2UuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICBub2RlIC0gVGhlIG5vZGUncyBrZXkuXG4gICAqIEBwYXJhbSAge2FueX0gICBlZGdlIC0gVGhlIGVkZ2UncyBrZXkuXG4gICAqIEByZXR1cm4ge2FueX0gICAgICAgIC0gVGhlIHJlbGF0ZWQgbm9kZS5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgZWRnZSBpc24ndCBpbiB0aGUgZ3JhcGggb3IgaWYgdGhlXG4gICAqICAgICAgICAgICAgICAgICAgIGVkZ2UgJiBub2RlIGFyZSBub3QgcmVsYXRlZC5cbiAgICovXG4gIG9wcG9zaXRlKG5vZGUsIGVkZ2UpIHtcbiAgICBub2RlID0gJycgKyBub2RlO1xuICAgIGVkZ2UgPSAnJyArIGVkZ2U7XG5cbiAgICBjb25zdCBkYXRhID0gdGhpcy5fZWRnZXMuZ2V0KGVkZ2UpO1xuXG4gICAgaWYgKCFkYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLm9wcG9zaXRlOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VkZ2V9XCIgZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIGNvbnN0IHNvdXJjZSA9IGRhdGEuc291cmNlLmtleTtcbiAgICBjb25zdCB0YXJnZXQgPSBkYXRhLnRhcmdldC5rZXk7XG5cbiAgICBpZiAobm9kZSA9PT0gc291cmNlKSByZXR1cm4gdGFyZ2V0O1xuICAgIGlmIChub2RlID09PSB0YXJnZXQpIHJldHVybiBzb3VyY2U7XG5cbiAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgYEdyYXBoLm9wcG9zaXRlOiB0aGUgXCIke25vZGV9XCIgbm9kZSBpcyBub3QgYXR0YWNoZWQgdG8gdGhlIFwiJHtlZGdlfVwiIGVkZ2UgKCR7c291cmNlfSwgJHt0YXJnZXR9KS5gXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIGVkZ2UgaGFzIHRoZSBnaXZlbiBub2RlIGFzIGV4dHJlbWl0eS5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgZWRnZSAtIFRoZSBlZGdlJ3Mga2V5LlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICBub2RlIC0gVGhlIG5vZGUncyBrZXkuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59ICAgICAgLSBUaGUgcmVsYXRlZCBub2RlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIGVpdGhlciB0aGUgbm9kZSBvciB0aGUgZWRnZSBpc24ndCBpbiB0aGUgZ3JhcGguXG4gICAqL1xuICBoYXNFeHRyZW1pdHkoZWRnZSwgbm9kZSkge1xuICAgIGVkZ2UgPSAnJyArIGVkZ2U7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9lZGdlcy5nZXQoZWRnZSk7XG5cbiAgICBpZiAoIWRhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguaGFzRXh0cmVtaXR5OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VkZ2V9XCIgZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIHJldHVybiBkYXRhLnNvdXJjZS5rZXkgPT09IG5vZGUgfHwgZGF0YS50YXJnZXQua2V5ID09PSBub2RlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgd2hldGhlciB0aGUgZ2l2ZW4gZWRnZSBpcyB1bmRpcmVjdGVkLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICBlZGdlIC0gVGhlIGVkZ2UncyBrZXkuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIGVkZ2UgaXNuJ3QgaW4gdGhlIGdyYXBoLlxuICAgKi9cbiAgaXNVbmRpcmVjdGVkKGVkZ2UpIHtcbiAgICBlZGdlID0gJycgKyBlZGdlO1xuXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuX2VkZ2VzLmdldChlZGdlKTtcblxuICAgIGlmICghZGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5pc1VuZGlyZWN0ZWQ6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7ZWRnZX1cIiBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgcmV0dXJuIGRhdGEudW5kaXJlY3RlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHdoZXRoZXIgdGhlIGdpdmVuIGVkZ2UgaXMgZGlyZWN0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIGVkZ2UgLSBUaGUgZWRnZSdzIGtleS5cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgZWRnZSBpc24ndCBpbiB0aGUgZ3JhcGguXG4gICAqL1xuICBpc0RpcmVjdGVkKGVkZ2UpIHtcbiAgICBlZGdlID0gJycgKyBlZGdlO1xuXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuX2VkZ2VzLmdldChlZGdlKTtcblxuICAgIGlmICghZGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5pc0RpcmVjdGVkOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VkZ2V9XCIgZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIHJldHVybiAhZGF0YS51bmRpcmVjdGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgd2hldGhlciB0aGUgZ2l2ZW4gZWRnZSBpcyBhIHNlbGYgbG9vcC5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgZWRnZSAtIFRoZSBlZGdlJ3Mga2V5LlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBlZGdlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIGlzU2VsZkxvb3AoZWRnZSkge1xuICAgIGVkZ2UgPSAnJyArIGVkZ2U7XG5cbiAgICBjb25zdCBkYXRhID0gdGhpcy5fZWRnZXMuZ2V0KGVkZ2UpO1xuXG4gICAgaWYgKCFkYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLmlzU2VsZkxvb3A6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7ZWRnZX1cIiBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgcmV0dXJuIGRhdGEuc291cmNlID09PSBkYXRhLnRhcmdldDtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBNdXRhdGlvblxuICAgKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICovXG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIHRvIGFkZCBhIG5vZGUgdG8gdGhlIGdyYXBoLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgIG5vZGUgICAgICAgICAtIFRoZSBub2RlLlxuICAgKiBAcGFyYW0gIHtvYmplY3R9IFthdHRyaWJ1dGVzXSAtIE9wdGlvbmFsIGF0dHJpYnV0ZXMuXG4gICAqIEByZXR1cm4ge2FueX0gICAgICAgICAgICAgICAgIC0gVGhlIG5vZGUuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIGdpdmVuIG5vZGUgYWxyZWFkeSBleGlzdC5cbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgZ2l2ZW4gYXR0cmlidXRlcyBhcmUgbm90IGFuIG9iamVjdC5cbiAgICovXG4gIGFkZE5vZGUobm9kZSwgYXR0cmlidXRlcykge1xuICAgIGNvbnN0IG5vZGVEYXRhID0gYWRkTm9kZSh0aGlzLCBub2RlLCBhdHRyaWJ1dGVzKTtcblxuICAgIHJldHVybiBub2RlRGF0YS5rZXk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgdG8gbWVyZ2UgYSBub2RlIGludG8gdGhlIGdyYXBoLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgIG5vZGUgICAgICAgICAtIFRoZSBub2RlLlxuICAgKiBAcGFyYW0gIHtvYmplY3R9IFthdHRyaWJ1dGVzXSAtIE9wdGlvbmFsIGF0dHJpYnV0ZXMuXG4gICAqIEByZXR1cm4ge2FueX0gICAgICAgICAgICAgICAgIC0gVGhlIG5vZGUuXG4gICAqL1xuICBtZXJnZU5vZGUobm9kZSwgYXR0cmlidXRlcykge1xuICAgIGlmIChhdHRyaWJ1dGVzICYmICFpc1BsYWluT2JqZWN0KGF0dHJpYnV0ZXMpKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGgubWVyZ2VOb2RlOiBpbnZhbGlkIGF0dHJpYnV0ZXMuIEV4cGVjdGluZyBhbiBvYmplY3QgYnV0IGdvdCBcIiR7YXR0cmlidXRlc31cImBcbiAgICAgICk7XG5cbiAgICAvLyBTdHJpbmcgY29lcmNpb25cbiAgICBub2RlID0gJycgKyBub2RlO1xuICAgIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzIHx8IHt9O1xuXG4gICAgLy8gSWYgdGhlIG5vZGUgYWxyZWFkeSBleGlzdHMsIHdlIG1lcmdlIHRoZSBhdHRyaWJ1dGVzXG4gICAgbGV0IGRhdGEgPSB0aGlzLl9ub2Rlcy5nZXQobm9kZSk7XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgYXNzaWduKGRhdGEuYXR0cmlidXRlcywgYXR0cmlidXRlcyk7XG5cbiAgICAgICAgdGhpcy5lbWl0KCdub2RlQXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICAgICAgdHlwZTogJ21lcmdlJyxcbiAgICAgICAgICBrZXk6IG5vZGUsXG4gICAgICAgICAgYXR0cmlidXRlczogZGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgIGRhdGE6IGF0dHJpYnV0ZXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gW25vZGUsIGZhbHNlXTtcbiAgICB9XG5cbiAgICBkYXRhID0gbmV3IHRoaXMuTm9kZURhdGFDbGFzcyhub2RlLCBhdHRyaWJ1dGVzKTtcblxuICAgIC8vIEFkZGluZyB0aGUgbm9kZSB0byBpbnRlcm5hbCByZWdpc3RlclxuICAgIHRoaXMuX25vZGVzLnNldChub2RlLCBkYXRhKTtcblxuICAgIC8vIEVtaXR0aW5nXG4gICAgdGhpcy5lbWl0KCdub2RlQWRkZWQnLCB7XG4gICAgICBrZXk6IG5vZGUsXG4gICAgICBhdHRyaWJ1dGVzXG4gICAgfSk7XG5cbiAgICByZXR1cm4gW25vZGUsIHRydWVdO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIHRvIGFkZCBhIG5vZGUgaWYgaXQgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGdyYXBoIG9yIGVsc2UgdG9cbiAgICogdXBkYXRlIGl0cyBhdHRyaWJ1dGVzIHVzaW5nIGEgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgICBub2RlICAgICAgLSBUaGUgbm9kZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IFt1cGRhdGVyXSAtIE9wdGlvbmFsIHVwZGF0ZXIgZnVuY3Rpb24uXG4gICAqIEByZXR1cm4ge2FueX0gICAgICAgICAgICAgICAgLSBUaGUgbm9kZS5cbiAgICovXG4gIHVwZGF0ZU5vZGUobm9kZSwgdXBkYXRlcikge1xuICAgIGlmICh1cGRhdGVyICYmIHR5cGVvZiB1cGRhdGVyICE9PSAnZnVuY3Rpb24nKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGgudXBkYXRlTm9kZTogaW52YWxpZCB1cGRhdGVyIGZ1bmN0aW9uLiBFeHBlY3RpbmcgYSBmdW5jdGlvbiBidXQgZ290IFwiJHt1cGRhdGVyfVwiYFxuICAgICAgKTtcblxuICAgIC8vIFN0cmluZyBjb2VyY2lvblxuICAgIG5vZGUgPSAnJyArIG5vZGU7XG5cbiAgICAvLyBJZiB0aGUgbm9kZSBhbHJlYWR5IGV4aXN0cywgd2UgdXBkYXRlIHRoZSBhdHRyaWJ1dGVzXG4gICAgbGV0IGRhdGEgPSB0aGlzLl9ub2Rlcy5nZXQobm9kZSk7XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKHVwZGF0ZXIpIHtcbiAgICAgICAgY29uc3Qgb2xkQXR0cmlidXRlcyA9IGRhdGEuYXR0cmlidXRlcztcbiAgICAgICAgZGF0YS5hdHRyaWJ1dGVzID0gdXBkYXRlcihvbGRBdHRyaWJ1dGVzKTtcblxuICAgICAgICB0aGlzLmVtaXQoJ25vZGVBdHRyaWJ1dGVzVXBkYXRlZCcsIHtcbiAgICAgICAgICB0eXBlOiAncmVwbGFjZScsXG4gICAgICAgICAga2V5OiBub2RlLFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlc1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbbm9kZSwgZmFsc2VdO1xuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB1cGRhdGVyID8gdXBkYXRlcih7fSkgOiB7fTtcblxuICAgIGRhdGEgPSBuZXcgdGhpcy5Ob2RlRGF0YUNsYXNzKG5vZGUsIGF0dHJpYnV0ZXMpO1xuXG4gICAgLy8gQWRkaW5nIHRoZSBub2RlIHRvIGludGVybmFsIHJlZ2lzdGVyXG4gICAgdGhpcy5fbm9kZXMuc2V0KG5vZGUsIGRhdGEpO1xuXG4gICAgLy8gRW1pdHRpbmdcbiAgICB0aGlzLmVtaXQoJ25vZGVBZGRlZCcsIHtcbiAgICAgIGtleTogbm9kZSxcbiAgICAgIGF0dHJpYnV0ZXNcbiAgICB9KTtcblxuICAgIHJldHVybiBbbm9kZSwgdHJ1ZV07XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgdG8gZHJvcCBhIHNpbmdsZSBub2RlICYgYWxsIGl0cyBhdHRhY2hlZCBlZGdlcyBmcm9tIHRoZSBncmFwaC5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICBub2RlIC0gVGhlIG5vZGUuXG4gICAqIEByZXR1cm4ge0dyYXBofVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGRvZXNuJ3QgZXhpc3QuXG4gICAqL1xuICBkcm9wTm9kZShub2RlKSB7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFub2RlRGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5kcm9wTm9kZTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICAvLyBSZW1vdmluZyBhdHRhY2hlZCBlZGdlc1xuICAgIC8vIFRPRE86IHdlIGNvdWxkIGRvIGZhc3RlclxuICAgIHRoaXMuZm9yRWFjaEVkZ2Uobm9kZSwgZWRnZSA9PiB7XG4gICAgICB0aGlzLmRyb3BFZGdlKGVkZ2UpO1xuICAgIH0pO1xuXG4gICAgLy8gRHJvcHBpbmcgdGhlIG5vZGUgZnJvbSB0aGUgcmVnaXN0ZXJcbiAgICB0aGlzLl9ub2Rlcy5kZWxldGUobm9kZSk7XG5cbiAgICAvLyBFbWl0dGluZ1xuICAgIHRoaXMuZW1pdCgnbm9kZURyb3BwZWQnLCB7XG4gICAgICBrZXk6IG5vZGUsXG4gICAgICBhdHRyaWJ1dGVzOiBub2RlRGF0YS5hdHRyaWJ1dGVzXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgdG8gZHJvcCBhIHNpbmdsZSBlZGdlIGZyb20gdGhlIGdyYXBoLlxuICAgKlxuICAgKiBBcml0eSAxOlxuICAgKiBAcGFyYW0gIHthbnl9ICAgIGVkZ2UgLSBUaGUgZWRnZS5cbiAgICpcbiAgICogQXJpdHkgMjpcbiAgICogQHBhcmFtICB7YW55fSAgICBzb3VyY2UgLSBTb3VyY2Ugbm9kZS5cbiAgICogQHBhcmFtICB7YW55fSAgICB0YXJnZXQgLSBUYXJnZXQgbm9kZS5cbiAgICpcbiAgICogQHJldHVybiB7R3JhcGh9XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIGVkZ2UgZG9lc24ndCBleGlzdC5cbiAgICovXG4gIGRyb3BFZGdlKGVkZ2UpIHtcbiAgICBsZXQgZWRnZURhdGE7XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9ICcnICsgYXJndW1lbnRzWzBdLFxuICAgICAgICB0YXJnZXQgPSAnJyArIGFyZ3VtZW50c1sxXTtcblxuICAgICAgZWRnZURhdGEgPSBnZXRNYXRjaGluZ0VkZ2UodGhpcywgc291cmNlLCB0YXJnZXQsIHRoaXMudHlwZSk7XG5cbiAgICAgIGlmICghZWRnZURhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLmRyb3BFZGdlOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke3NvdXJjZX1cIiAtPiBcIiR7dGFyZ2V0fVwiIGVkZ2UgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWRnZSA9ICcnICsgZWRnZTtcblxuICAgICAgZWRnZURhdGEgPSB0aGlzLl9lZGdlcy5nZXQoZWRnZSk7XG5cbiAgICAgIGlmICghZWRnZURhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLmRyb3BFZGdlOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VkZ2V9XCIgZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIERyb3BwaW5nIHRoZSBlZGdlIGZyb20gdGhlIHJlZ2lzdGVyXG4gICAgdGhpcy5fZWRnZXMuZGVsZXRlKGVkZ2VEYXRhLmtleSk7XG5cbiAgICAvLyBVcGRhdGluZyByZWxhdGVkIGRlZ3JlZXNcbiAgICBjb25zdCB7c291cmNlOiBzb3VyY2VEYXRhLCB0YXJnZXQ6IHRhcmdldERhdGEsIGF0dHJpYnV0ZXN9ID0gZWRnZURhdGE7XG5cbiAgICBjb25zdCB1bmRpcmVjdGVkID0gZWRnZURhdGEudW5kaXJlY3RlZDtcblxuICAgIGlmIChzb3VyY2VEYXRhID09PSB0YXJnZXREYXRhKSB7XG4gICAgICBpZiAodW5kaXJlY3RlZCkge1xuICAgICAgICBzb3VyY2VEYXRhLnVuZGlyZWN0ZWRTZWxmTG9vcHMtLTtcbiAgICAgICAgdGhpcy5fdW5kaXJlY3RlZFNlbGZMb29wQ291bnQtLTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNvdXJjZURhdGEuZGlyZWN0ZWRTZWxmTG9vcHMtLTtcbiAgICAgICAgdGhpcy5fZGlyZWN0ZWRTZWxmTG9vcENvdW50LS07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh1bmRpcmVjdGVkKSB7XG4gICAgICAgIHNvdXJjZURhdGEudW5kaXJlY3RlZERlZ3JlZS0tO1xuICAgICAgICB0YXJnZXREYXRhLnVuZGlyZWN0ZWREZWdyZWUtLTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNvdXJjZURhdGEub3V0RGVncmVlLS07XG4gICAgICAgIHRhcmdldERhdGEuaW5EZWdyZWUtLTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDbGVhcmluZyBpbmRleFxuICAgIGNsZWFyRWRnZUZyb21TdHJ1Y3R1cmVJbmRleCh0aGlzLCB1bmRpcmVjdGVkLCBlZGdlRGF0YSk7XG5cbiAgICBpZiAodW5kaXJlY3RlZCkgdGhpcy5fdW5kaXJlY3RlZFNpemUtLTtcbiAgICBlbHNlIHRoaXMuX2RpcmVjdGVkU2l6ZS0tO1xuXG4gICAgLy8gRW1pdHRpbmdcbiAgICB0aGlzLmVtaXQoJ2VkZ2VEcm9wcGVkJywge1xuICAgICAga2V5OiBlZGdlLFxuICAgICAgYXR0cmlidXRlcyxcbiAgICAgIHNvdXJjZTogc291cmNlRGF0YS5rZXksXG4gICAgICB0YXJnZXQ6IHRhcmdldERhdGEua2V5LFxuICAgICAgdW5kaXJlY3RlZFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgdG8gcmVtb3ZlIGV2ZXJ5IGVkZ2UgJiBldmVyeSBub2RlIGZyb20gdGhlIGdyYXBoLlxuICAgKlxuICAgKiBAcmV0dXJuIHtHcmFwaH1cbiAgICovXG4gIGNsZWFyKCkge1xuICAgIC8vIENsZWFyaW5nIGVkZ2VzXG4gICAgdGhpcy5fZWRnZXMuY2xlYXIoKTtcblxuICAgIC8vIENsZWFyaW5nIG5vZGVzXG4gICAgdGhpcy5fbm9kZXMuY2xlYXIoKTtcblxuICAgIC8vIFJlc2V0IGNvdW50ZXJzXG4gICAgdGhpcy5fcmVzZXRJbnN0YW5jZUNvdW50ZXJzKCk7XG5cbiAgICAvLyBFbWl0dGluZ1xuICAgIHRoaXMuZW1pdCgnY2xlYXJlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIHRvIHJlbW92ZSBldmVyeSBlZGdlIGZyb20gdGhlIGdyYXBoLlxuICAgKlxuICAgKiBAcmV0dXJuIHtHcmFwaH1cbiAgICovXG4gIGNsZWFyRWRnZXMoKSB7XG4gICAgY2xlYXJTdHJ1Y3R1cmVJbmRleCh0aGlzKTtcblxuICAgIC8vIENsZWFyaW5nIGVkZ2VzXG4gICAgdGhpcy5fZWRnZXMuY2xlYXIoKTtcblxuICAgIC8vIFJlc2V0IGNvdW50ZXJzXG4gICAgdGhpcy5fcmVzZXRJbnN0YW5jZUNvdW50ZXJzKCk7XG5cbiAgICAvLyBFbWl0dGluZ1xuICAgIHRoaXMuZW1pdCgnZWRnZXNDbGVhcmVkJyk7XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQXR0cmlidXRlcy1yZWxhdGVkIG1ldGhvZHNcbiAgICoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqL1xuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHRoZSBkZXNpcmVkIGdyYXBoJ3MgYXR0cmlidXRlLlxuICAgKlxuICAgKiBAcGFyYW0gIHtzdHJpbmd9IG5hbWUgLSBOYW1lIG9mIHRoZSBhdHRyaWJ1dGUuXG4gICAqIEByZXR1cm4ge2FueX1cbiAgICovXG4gIGdldEF0dHJpYnV0ZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuX2F0dHJpYnV0ZXNbbmFtZV07XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgZ3JhcGgncyBhdHRyaWJ1dGVzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAqL1xuICBnZXRBdHRyaWJ1dGVzKCkge1xuICAgIHJldHVybiB0aGlzLl9hdHRyaWJ1dGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgd2hldGhlciB0aGUgZ3JhcGggaGFzIHRoZSBkZXNpcmVkIGF0dHJpYnV0ZS5cbiAgICpcbiAgICogQHBhcmFtICB7c3RyaW5nfSAgbmFtZSAtIE5hbWUgb2YgdGhlIGF0dHJpYnV0ZS5cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGhhc0F0dHJpYnV0ZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuX2F0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkobmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHNldHRpbmcgYSB2YWx1ZSBmb3IgdGhlIGRlc2lyZWQgZ3JhcGgncyBhdHRyaWJ1dGUuXG4gICAqXG4gICAqIEBwYXJhbSAge3N0cmluZ30gIG5hbWUgIC0gTmFtZSBvZiB0aGUgYXR0cmlidXRlLlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICB2YWx1ZSAtIFZhbHVlIGZvciB0aGUgYXR0cmlidXRlLlxuICAgKiBAcmV0dXJuIHtHcmFwaH1cbiAgICovXG4gIHNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkge1xuICAgIHRoaXMuX2F0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZTtcblxuICAgIC8vIEVtaXR0aW5nXG4gICAgdGhpcy5lbWl0KCdhdHRyaWJ1dGVzVXBkYXRlZCcsIHtcbiAgICAgIHR5cGU6ICdzZXQnLFxuICAgICAgYXR0cmlidXRlczogdGhpcy5fYXR0cmlidXRlcyxcbiAgICAgIG5hbWVcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2luZyBhIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgZGVzaXJlZCBncmFwaCdzIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gIHtzdHJpbmd9ICAgbmFtZSAgICAtIE5hbWUgb2YgdGhlIGF0dHJpYnV0ZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IHVwZGF0ZXIgLSBGdW5jdGlvbiB1c2UgdG8gdXBkYXRlIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZS5cbiAgICogQHJldHVybiB7R3JhcGh9XG4gICAqL1xuICB1cGRhdGVBdHRyaWJ1dGUobmFtZSwgdXBkYXRlcikge1xuICAgIGlmICh0eXBlb2YgdXBkYXRlciAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ0dyYXBoLnVwZGF0ZUF0dHJpYnV0ZTogdXBkYXRlciBzaG91bGQgYmUgYSBmdW5jdGlvbi4nXG4gICAgICApO1xuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVdO1xuXG4gICAgdGhpcy5fYXR0cmlidXRlc1tuYW1lXSA9IHVwZGF0ZXIodmFsdWUpO1xuXG4gICAgLy8gRW1pdHRpbmdcbiAgICB0aGlzLmVtaXQoJ2F0dHJpYnV0ZXNVcGRhdGVkJywge1xuICAgICAgdHlwZTogJ3NldCcsXG4gICAgICBhdHRyaWJ1dGVzOiB0aGlzLl9hdHRyaWJ1dGVzLFxuICAgICAgbmFtZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJlbW92aW5nIHRoZSBkZXNpcmVkIGdyYXBoJ3MgYXR0cmlidXRlLlxuICAgKlxuICAgKiBAcGFyYW0gIHtzdHJpbmd9IG5hbWUgIC0gTmFtZSBvZiB0aGUgYXR0cmlidXRlLlxuICAgKiBAcmV0dXJuIHtHcmFwaH1cbiAgICovXG4gIHJlbW92ZUF0dHJpYnV0ZShuYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMuX2F0dHJpYnV0ZXNbbmFtZV07XG5cbiAgICAvLyBFbWl0dGluZ1xuICAgIHRoaXMuZW1pdCgnYXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICB0eXBlOiAncmVtb3ZlJyxcbiAgICAgIGF0dHJpYnV0ZXM6IHRoaXMuX2F0dHJpYnV0ZXMsXG4gICAgICBuYW1lXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmVwbGFjaW5nIHRoZSBncmFwaCdzIGF0dHJpYnV0ZXMuXG4gICAqXG4gICAqIEBwYXJhbSAge29iamVjdH0gYXR0cmlidXRlcyAtIE5ldyBhdHRyaWJ1dGVzLlxuICAgKiBAcmV0dXJuIHtHcmFwaH1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiBnaXZlbiBhdHRyaWJ1dGVzIGFyZSBub3QgYSBwbGFpbiBvYmplY3QuXG4gICAqL1xuICByZXBsYWNlQXR0cmlidXRlcyhhdHRyaWJ1dGVzKSB7XG4gICAgaWYgKCFpc1BsYWluT2JqZWN0KGF0dHJpYnV0ZXMpKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAnR3JhcGgucmVwbGFjZUF0dHJpYnV0ZXM6IHByb3ZpZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBhIHBsYWluIG9iamVjdC4nXG4gICAgICApO1xuXG4gICAgdGhpcy5fYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7XG5cbiAgICAvLyBFbWl0dGluZ1xuICAgIHRoaXMuZW1pdCgnYXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICB0eXBlOiAncmVwbGFjZScsXG4gICAgICBhdHRyaWJ1dGVzOiB0aGlzLl9hdHRyaWJ1dGVzXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgbWVyZ2luZyB0aGUgZ3JhcGgncyBhdHRyaWJ1dGVzLlxuICAgKlxuICAgKiBAcGFyYW0gIHtvYmplY3R9IGF0dHJpYnV0ZXMgLSBBdHRyaWJ1dGVzIHRvIG1lcmdlLlxuICAgKiBAcmV0dXJuIHtHcmFwaH1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiBnaXZlbiBhdHRyaWJ1dGVzIGFyZSBub3QgYSBwbGFpbiBvYmplY3QuXG4gICAqL1xuICBtZXJnZUF0dHJpYnV0ZXMoYXR0cmlidXRlcykge1xuICAgIGlmICghaXNQbGFpbk9iamVjdChhdHRyaWJ1dGVzKSlcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ0dyYXBoLm1lcmdlQXR0cmlidXRlczogcHJvdmlkZWQgYXR0cmlidXRlcyBhcmUgbm90IGEgcGxhaW4gb2JqZWN0LidcbiAgICAgICk7XG5cbiAgICBhc3NpZ24odGhpcy5fYXR0cmlidXRlcywgYXR0cmlidXRlcyk7XG5cbiAgICAvLyBFbWl0dGluZ1xuICAgIHRoaXMuZW1pdCgnYXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICB0eXBlOiAnbWVyZ2UnLFxuICAgICAgYXR0cmlidXRlczogdGhpcy5fYXR0cmlidXRlcyxcbiAgICAgIGRhdGE6IGF0dHJpYnV0ZXNcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1cGRhdGluZyB0aGUgZ3JhcGgncyBhdHRyaWJ1dGVzLlxuICAgKlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gdXBkYXRlciAtIEZ1bmN0aW9uIHVzZWQgdG8gdXBkYXRlIHRoZSBhdHRyaWJ1dGVzLlxuICAgKiBAcmV0dXJuIHtHcmFwaH1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiBnaXZlbiB1cGRhdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLlxuICAgKi9cbiAgdXBkYXRlQXR0cmlidXRlcyh1cGRhdGVyKSB7XG4gICAgaWYgKHR5cGVvZiB1cGRhdGVyICE9PSAnZnVuY3Rpb24nKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAnR3JhcGgudXBkYXRlQXR0cmlidXRlczogcHJvdmlkZWQgdXBkYXRlciBpcyBub3QgYSBmdW5jdGlvbi4nXG4gICAgICApO1xuXG4gICAgdGhpcy5fYXR0cmlidXRlcyA9IHVwZGF0ZXIodGhpcy5fYXR0cmlidXRlcyk7XG5cbiAgICAvLyBFbWl0dGluZ1xuICAgIHRoaXMuZW1pdCgnYXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICB0eXBlOiAndXBkYXRlJyxcbiAgICAgIGF0dHJpYnV0ZXM6IHRoaXMuX2F0dHJpYnV0ZXNcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIHRvIHVwZGF0ZSBlYWNoIG5vZGUncyBhdHRyaWJ1dGVzIHVzaW5nIHRoZSBnaXZlbiBmdW5jdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gIHVwZGF0ZXIgLSBVcGRhdGVyIGZ1bmN0aW9uIHRvIHVzZS5cbiAgICogQHBhcmFtIHtvYmplY3R9ICAgIFtoaW50c10gLSBPcHRpb25hbCBoaW50cy5cbiAgICovXG4gIHVwZGF0ZUVhY2hOb2RlQXR0cmlidXRlcyh1cGRhdGVyLCBoaW50cykge1xuICAgIGlmICh0eXBlb2YgdXBkYXRlciAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ0dyYXBoLnVwZGF0ZUVhY2hOb2RlQXR0cmlidXRlczogZXhwZWN0aW5nIGFuIHVwZGF0ZXIgZnVuY3Rpb24uJ1xuICAgICAgKTtcblxuICAgIGlmIChoaW50cyAmJiAhdmFsaWRhdGVIaW50cyhoaW50cykpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdHcmFwaC51cGRhdGVFYWNoTm9kZUF0dHJpYnV0ZXM6IGludmFsaWQgaGludHMuIEV4cGVjdGluZyBhbiBvYmplY3QgaGF2aW5nIHRoZSBmb2xsb3dpbmcgc2hhcGU6IHthdHRyaWJ1dGVzPzogW3N0cmluZ119J1xuICAgICAgKTtcblxuICAgIGNvbnN0IGl0ZXJhdG9yID0gdGhpcy5fbm9kZXMudmFsdWVzKCk7XG5cbiAgICBsZXQgc3RlcCwgbm9kZURhdGE7XG5cbiAgICB3aGlsZSAoKChzdGVwID0gaXRlcmF0b3IubmV4dCgpKSwgc3RlcC5kb25lICE9PSB0cnVlKSkge1xuICAgICAgbm9kZURhdGEgPSBzdGVwLnZhbHVlO1xuICAgICAgbm9kZURhdGEuYXR0cmlidXRlcyA9IHVwZGF0ZXIobm9kZURhdGEua2V5LCBub2RlRGF0YS5hdHRyaWJ1dGVzKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXQoJ2VhY2hOb2RlQXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICBoaW50czogaGludHMgPyBoaW50cyA6IG51bGxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdXNlZCB0byB1cGRhdGUgZWFjaCBlZGdlJ3MgYXR0cmlidXRlcyB1c2luZyB0aGUgZ2l2ZW4gZnVuY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259ICB1cGRhdGVyIC0gVXBkYXRlciBmdW5jdGlvbiB0byB1c2UuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSAgICBbaGludHNdIC0gT3B0aW9uYWwgaGludHMuXG4gICAqL1xuICB1cGRhdGVFYWNoRWRnZUF0dHJpYnV0ZXModXBkYXRlciwgaGludHMpIHtcbiAgICBpZiAodHlwZW9mIHVwZGF0ZXIgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdHcmFwaC51cGRhdGVFYWNoRWRnZUF0dHJpYnV0ZXM6IGV4cGVjdGluZyBhbiB1cGRhdGVyIGZ1bmN0aW9uLidcbiAgICAgICk7XG5cbiAgICBpZiAoaGludHMgJiYgIXZhbGlkYXRlSGludHMoaGludHMpKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAnR3JhcGgudXBkYXRlRWFjaEVkZ2VBdHRyaWJ1dGVzOiBpbnZhbGlkIGhpbnRzLiBFeHBlY3RpbmcgYW4gb2JqZWN0IGhhdmluZyB0aGUgZm9sbG93aW5nIHNoYXBlOiB7YXR0cmlidXRlcz86IFtzdHJpbmddfSdcbiAgICAgICk7XG5cbiAgICBjb25zdCBpdGVyYXRvciA9IHRoaXMuX2VkZ2VzLnZhbHVlcygpO1xuXG4gICAgbGV0IHN0ZXAsIGVkZ2VEYXRhLCBzb3VyY2VEYXRhLCB0YXJnZXREYXRhO1xuXG4gICAgd2hpbGUgKCgoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSksIHN0ZXAuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICAgIGVkZ2VEYXRhID0gc3RlcC52YWx1ZTtcbiAgICAgIHNvdXJjZURhdGEgPSBlZGdlRGF0YS5zb3VyY2U7XG4gICAgICB0YXJnZXREYXRhID0gZWRnZURhdGEudGFyZ2V0O1xuXG4gICAgICBlZGdlRGF0YS5hdHRyaWJ1dGVzID0gdXBkYXRlcihcbiAgICAgICAgZWRnZURhdGEua2V5LFxuICAgICAgICBlZGdlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICBzb3VyY2VEYXRhLmtleSxcbiAgICAgICAgdGFyZ2V0RGF0YS5rZXksXG4gICAgICAgIHNvdXJjZURhdGEuYXR0cmlidXRlcyxcbiAgICAgICAgdGFyZ2V0RGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICBlZGdlRGF0YS51bmRpcmVjdGVkXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdCgnZWFjaEVkZ2VBdHRyaWJ1dGVzVXBkYXRlZCcsIHtcbiAgICAgIGhpbnRzOiBoaW50cyA/IGhpbnRzIDogbnVsbFxuICAgIH0pO1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEl0ZXJhdGlvbi1yZWxhdGVkIG1ldGhvZHNcbiAgICoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqL1xuXG4gIC8qKlxuICAgKiBNZXRob2QgaXRlcmF0aW5nIG92ZXIgdGhlIGdyYXBoJ3MgYWRqYWNlbmN5IHVzaW5nIHRoZSBnaXZlbiBjYWxsYmFjay5cbiAgICpcbiAgICogQHBhcmFtICB7ZnVuY3Rpb259ICBjYWxsYmFjayAtIENhbGxiYWNrIHRvIHVzZS5cbiAgICovXG4gIGZvckVhY2hBZGphY2VuY3lFbnRyeShjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdHcmFwaC5mb3JFYWNoQWRqYWNlbmN5RW50cnk6IGV4cGVjdGluZyBhIGNhbGxiYWNrLidcbiAgICAgICk7XG5cbiAgICBpZiAodGhpcy5tdWx0aSkgZm9yRWFjaEFkamFjZW5jeU11bHRpKGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRoaXMsIGNhbGxiYWNrKTtcbiAgICBlbHNlIGZvckVhY2hBZGphY2VuY3lTaW1wbGUoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdGhpcywgY2FsbGJhY2spO1xuICB9XG4gIGZvckVhY2hBZGphY2VuY3lFbnRyeVdpdGhPcnBoYW5zKGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ0dyYXBoLmZvckVhY2hBZGphY2VuY3lFbnRyeVdpdGhPcnBoYW5zOiBleHBlY3RpbmcgYSBjYWxsYmFjay4nXG4gICAgICApO1xuXG4gICAgaWYgKHRoaXMubXVsdGkpIGZvckVhY2hBZGphY2VuY3lNdWx0aShmYWxzZSwgZmFsc2UsIHRydWUsIHRoaXMsIGNhbGxiYWNrKTtcbiAgICBlbHNlIGZvckVhY2hBZGphY2VuY3lTaW1wbGUoZmFsc2UsIGZhbHNlLCB0cnVlLCB0aGlzLCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGl0ZXJhdGluZyBvdmVyIHRoZSBncmFwaCdzIGFzc3ltZXRyaWMgYWRqYWNlbmN5IHVzaW5nIHRoZSBnaXZlbiBjYWxsYmFjay5cbiAgICpcbiAgICogQHBhcmFtICB7ZnVuY3Rpb259ICBjYWxsYmFjayAtIENhbGxiYWNrIHRvIHVzZS5cbiAgICovXG4gIGZvckVhY2hBc3N5bWV0cmljQWRqYWNlbmN5RW50cnkoY2FsbGJhY2spIHtcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAnR3JhcGguZm9yRWFjaEFzc3ltZXRyaWNBZGphY2VuY3lFbnRyeTogZXhwZWN0aW5nIGEgY2FsbGJhY2suJ1xuICAgICAgKTtcblxuICAgIGlmICh0aGlzLm11bHRpKSBmb3JFYWNoQWRqYWNlbmN5TXVsdGkoZmFsc2UsIHRydWUsIGZhbHNlLCB0aGlzLCBjYWxsYmFjayk7XG4gICAgZWxzZSBmb3JFYWNoQWRqYWNlbmN5U2ltcGxlKGZhbHNlLCB0cnVlLCBmYWxzZSwgdGhpcywgY2FsbGJhY2spO1xuICB9XG4gIGZvckVhY2hBc3N5bWV0cmljQWRqYWNlbmN5RW50cnlXaXRoT3JwaGFucyhjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdHcmFwaC5mb3JFYWNoQXNzeW1ldHJpY0FkamFjZW5jeUVudHJ5V2l0aE9ycGhhbnM6IGV4cGVjdGluZyBhIGNhbGxiYWNrLidcbiAgICAgICk7XG5cbiAgICBpZiAodGhpcy5tdWx0aSkgZm9yRWFjaEFkamFjZW5jeU11bHRpKGZhbHNlLCB0cnVlLCB0cnVlLCB0aGlzLCBjYWxsYmFjayk7XG4gICAgZWxzZSBmb3JFYWNoQWRqYWNlbmN5U2ltcGxlKGZhbHNlLCB0cnVlLCB0cnVlLCB0aGlzLCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgbGlzdCBvZiB0aGUgZ3JhcGgncyBub2Rlcy5cbiAgICpcbiAgICogQHJldHVybiB7YXJyYXl9IC0gVGhlIG5vZGVzLlxuICAgKi9cbiAgbm9kZXMoKSB7XG4gICAgaWYgKHR5cGVvZiBBcnJheS5mcm9tID09PSAnZnVuY3Rpb24nKSByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9ub2Rlcy5rZXlzKCkpO1xuXG4gICAgcmV0dXJuIHRha2UodGhpcy5fbm9kZXMua2V5cygpLCB0aGlzLl9ub2Rlcy5zaXplKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgaXRlcmF0aW5nIG92ZXIgdGhlIGdyYXBoJ3Mgbm9kZXMgdXNpbmcgdGhlIGdpdmVuIGNhbGxiYWNrLlxuICAgKlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gIGNhbGxiYWNrIC0gQ2FsbGJhY2sgKGtleSwgYXR0cmlidXRlcywgaW5kZXgpLlxuICAgKi9cbiAgZm9yRWFjaE5vZGUoY2FsbGJhY2spIHtcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAnR3JhcGguZm9yRWFjaE5vZGU6IGV4cGVjdGluZyBhIGNhbGxiYWNrLidcbiAgICAgICk7XG5cbiAgICBjb25zdCBpdGVyYXRvciA9IHRoaXMuX25vZGVzLnZhbHVlcygpO1xuXG4gICAgbGV0IHN0ZXAsIG5vZGVEYXRhO1xuXG4gICAgd2hpbGUgKCgoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSksIHN0ZXAuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICAgIG5vZGVEYXRhID0gc3RlcC52YWx1ZTtcbiAgICAgIGNhbGxiYWNrKG5vZGVEYXRhLmtleSwgbm9kZURhdGEuYXR0cmlidXRlcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBpdGVyYXRpbmcgYXR0ZW1wdGluZyB0byBmaW5kIGEgbm9kZSBtYXRjaGluZyB0aGUgZ2l2ZW4gcHJlZGljYXRlXG4gICAqIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gIGNhbGxiYWNrIC0gQ2FsbGJhY2sgKGtleSwgYXR0cmlidXRlcykuXG4gICAqL1xuICBmaW5kTm9kZShjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdHcmFwaC5maW5kTm9kZTogZXhwZWN0aW5nIGEgY2FsbGJhY2suJ1xuICAgICAgKTtcblxuICAgIGNvbnN0IGl0ZXJhdG9yID0gdGhpcy5fbm9kZXMudmFsdWVzKCk7XG5cbiAgICBsZXQgc3RlcCwgbm9kZURhdGE7XG5cbiAgICB3aGlsZSAoKChzdGVwID0gaXRlcmF0b3IubmV4dCgpKSwgc3RlcC5kb25lICE9PSB0cnVlKSkge1xuICAgICAgbm9kZURhdGEgPSBzdGVwLnZhbHVlO1xuXG4gICAgICBpZiAoY2FsbGJhY2sobm9kZURhdGEua2V5LCBub2RlRGF0YS5hdHRyaWJ1dGVzKSkgcmV0dXJuIG5vZGVEYXRhLmtleTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIG1hcHBpbmcgbm9kZXMuXG4gICAqXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSAgY2FsbGJhY2sgLSBDYWxsYmFjayAoa2V5LCBhdHRyaWJ1dGVzKS5cbiAgICovXG4gIG1hcE5vZGVzKGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ0dyYXBoLm1hcE5vZGU6IGV4cGVjdGluZyBhIGNhbGxiYWNrLidcbiAgICAgICk7XG5cbiAgICBjb25zdCBpdGVyYXRvciA9IHRoaXMuX25vZGVzLnZhbHVlcygpO1xuXG4gICAgbGV0IHN0ZXAsIG5vZGVEYXRhO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5KHRoaXMub3JkZXIpO1xuICAgIGxldCBpID0gMDtcblxuICAgIHdoaWxlICgoKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLCBzdGVwLmRvbmUgIT09IHRydWUpKSB7XG4gICAgICBub2RlRGF0YSA9IHN0ZXAudmFsdWU7XG4gICAgICByZXN1bHRbaSsrXSA9IGNhbGxiYWNrKG5vZGVEYXRhLmtleSwgbm9kZURhdGEuYXR0cmlidXRlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHdoZXRoZXIgc29tZSBub2RlIHZlcmlmeSB0aGUgZ2l2ZW4gcHJlZGljYXRlLlxuICAgKlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gIGNhbGxiYWNrIC0gQ2FsbGJhY2sgKGtleSwgYXR0cmlidXRlcykuXG4gICAqL1xuICBzb21lTm9kZShjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdHcmFwaC5zb21lTm9kZTogZXhwZWN0aW5nIGEgY2FsbGJhY2suJ1xuICAgICAgKTtcblxuICAgIGNvbnN0IGl0ZXJhdG9yID0gdGhpcy5fbm9kZXMudmFsdWVzKCk7XG5cbiAgICBsZXQgc3RlcCwgbm9kZURhdGE7XG5cbiAgICB3aGlsZSAoKChzdGVwID0gaXRlcmF0b3IubmV4dCgpKSwgc3RlcC5kb25lICE9PSB0cnVlKSkge1xuICAgICAgbm9kZURhdGEgPSBzdGVwLnZhbHVlO1xuXG4gICAgICBpZiAoY2FsbGJhY2sobm9kZURhdGEua2V5LCBub2RlRGF0YS5hdHRyaWJ1dGVzKSkgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgd2hldGhlciBhbGwgbm9kZSB2ZXJpZnkgdGhlIGdpdmVuIHByZWRpY2F0ZS5cbiAgICpcbiAgICogQHBhcmFtICB7ZnVuY3Rpb259ICBjYWxsYmFjayAtIENhbGxiYWNrIChrZXksIGF0dHJpYnV0ZXMpLlxuICAgKi9cbiAgZXZlcnlOb2RlKGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ0dyYXBoLmV2ZXJ5Tm9kZTogZXhwZWN0aW5nIGEgY2FsbGJhY2suJ1xuICAgICAgKTtcblxuICAgIGNvbnN0IGl0ZXJhdG9yID0gdGhpcy5fbm9kZXMudmFsdWVzKCk7XG5cbiAgICBsZXQgc3RlcCwgbm9kZURhdGE7XG5cbiAgICB3aGlsZSAoKChzdGVwID0gaXRlcmF0b3IubmV4dCgpKSwgc3RlcC5kb25lICE9PSB0cnVlKSkge1xuICAgICAgbm9kZURhdGEgPSBzdGVwLnZhbHVlO1xuXG4gICAgICBpZiAoIWNhbGxiYWNrKG5vZGVEYXRhLmtleSwgbm9kZURhdGEuYXR0cmlidXRlcykpIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgZmlsdGVyaW5nIG5vZGVzLlxuICAgKlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gIGNhbGxiYWNrIC0gQ2FsbGJhY2sgKGtleSwgYXR0cmlidXRlcykuXG4gICAqL1xuICBmaWx0ZXJOb2RlcyhjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdHcmFwaC5maWx0ZXJOb2RlczogZXhwZWN0aW5nIGEgY2FsbGJhY2suJ1xuICAgICAgKTtcblxuICAgIGNvbnN0IGl0ZXJhdG9yID0gdGhpcy5fbm9kZXMudmFsdWVzKCk7XG5cbiAgICBsZXQgc3RlcCwgbm9kZURhdGE7XG5cbiAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgIHdoaWxlICgoKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLCBzdGVwLmRvbmUgIT09IHRydWUpKSB7XG4gICAgICBub2RlRGF0YSA9IHN0ZXAudmFsdWU7XG5cbiAgICAgIGlmIChjYWxsYmFjayhub2RlRGF0YS5rZXksIG5vZGVEYXRhLmF0dHJpYnV0ZXMpKVxuICAgICAgICByZXN1bHQucHVzaChub2RlRGF0YS5rZXkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJlZHVjaW5nIG5vZGVzLlxuICAgKlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gIGNhbGxiYWNrIC0gQ2FsbGJhY2sgKGFjY3VtdWxhdG9yLCBrZXksIGF0dHJpYnV0ZXMpLlxuICAgKi9cbiAgcmVkdWNlTm9kZXMoY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSkge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdHcmFwaC5yZWR1Y2VOb2RlczogZXhwZWN0aW5nIGEgY2FsbGJhY2suJ1xuICAgICAgKTtcblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMilcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ0dyYXBoLnJlZHVjZU5vZGVzOiBtaXNzaW5nIGluaXRpYWwgdmFsdWUuIFlvdSBtdXN0IHByb3ZpZGUgaXQgYmVjYXVzZSB0aGUgY2FsbGJhY2sgdGFrZXMgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCBhbmQgd2UgY2Fubm90IGluZmVyIHRoZSBpbml0aWFsIHZhbHVlIGZyb20gdGhlIGZpcnN0IGl0ZXJhdGlvbiwgYXMgeW91IGNvdWxkIHdpdGggYSBzaW1wbGUgYXJyYXkuJ1xuICAgICAgKTtcblxuICAgIGxldCBhY2N1bXVsYXRvciA9IGluaXRpYWxWYWx1ZTtcblxuICAgIGNvbnN0IGl0ZXJhdG9yID0gdGhpcy5fbm9kZXMudmFsdWVzKCk7XG5cbiAgICBsZXQgc3RlcCwgbm9kZURhdGE7XG5cbiAgICB3aGlsZSAoKChzdGVwID0gaXRlcmF0b3IubmV4dCgpKSwgc3RlcC5kb25lICE9PSB0cnVlKSkge1xuICAgICAgbm9kZURhdGEgPSBzdGVwLnZhbHVlO1xuICAgICAgYWNjdW11bGF0b3IgPSBjYWxsYmFjayhhY2N1bXVsYXRvciwgbm9kZURhdGEua2V5LCBub2RlRGF0YS5hdHRyaWJ1dGVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyBhbiBpdGVyYXRvciBvdmVyIHRoZSBncmFwaCdzIG5vZGUgZW50cmllcy5cbiAgICpcbiAgICogQHJldHVybiB7SXRlcmF0b3J9XG4gICAqL1xuICBub2RlRW50cmllcygpIHtcbiAgICBjb25zdCBpdGVyYXRvciA9IHRoaXMuX25vZGVzLnZhbHVlcygpO1xuXG4gICAgcmV0dXJuIG5ldyBJdGVyYXRvcigoKSA9PiB7XG4gICAgICBjb25zdCBzdGVwID0gaXRlcmF0b3IubmV4dCgpO1xuXG4gICAgICBpZiAoc3RlcC5kb25lKSByZXR1cm4gc3RlcDtcblxuICAgICAgY29uc3QgZGF0YSA9IHN0ZXAudmFsdWU7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiB7bm9kZTogZGF0YS5rZXksIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlc30sXG4gICAgICAgIGRvbmU6IGZhbHNlXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIFNlcmlhbGl6YXRpb25cbiAgICoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqL1xuXG4gIC8qKlxuICAgKiBNZXRob2QgZXhwb3J0aW5nIHRoZSB0YXJnZXQgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgIG5vZGUgLSBUYXJnZXQgbm9kZS5cbiAgICogQHJldHVybiB7YXJyYXl9ICAgICAgLSBUaGUgc2VyaWFsaXplZCBub2RlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzIG5vdCBmb3VuZC5cbiAgICovXG4gIGV4cG9ydE5vZGUobm9kZSkge1xuICAgIG5vZGUgPSAnJyArIG5vZGU7XG5cbiAgICBjb25zdCBkYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFkYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLmV4cG9ydE5vZGU6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7bm9kZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgcmV0dXJuIHNlcmlhbGl6ZU5vZGUobm9kZSwgZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGV4cG9ydGluZyB0aGUgdGFyZ2V0IGVkZ2UuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICBlZGdlIC0gVGFyZ2V0IGVkZ2UuXG4gICAqIEByZXR1cm4ge2FycmF5fSAgICAgIC0gVGhlIHNlcmlhbGl6ZWQgZWRnZS5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgZWRnZSBpcyBub3QgZm91bmQuXG4gICAqL1xuICBleHBvcnRFZGdlKGVkZ2UpIHtcbiAgICBlZGdlID0gJycgKyBlZGdlO1xuXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuX2VkZ2VzLmdldChlZGdlKTtcblxuICAgIGlmICghZGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5leHBvcnRFZGdlOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VkZ2V9XCIgZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIHJldHVybiBzZXJpYWxpemVFZGdlKGVkZ2UsIGRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIHRvIGV4cG9ydCB0aGUgd2hvbGUgZ3JhcGguXG4gICAqXG4gICAqIEByZXR1cm4ge29iamVjdH0gLSBUaGUgc2VyaWFsaXplZCBncmFwaC5cbiAgICovXG4gIGV4cG9ydCgpIHtcbiAgICBjb25zdCBub2RlcyA9IG5ldyBBcnJheSh0aGlzLl9ub2Rlcy5zaXplKTtcblxuICAgIGxldCBpID0gMDtcblxuICAgIHRoaXMuX25vZGVzLmZvckVhY2goKGRhdGEsIGtleSkgPT4ge1xuICAgICAgbm9kZXNbaSsrXSA9IHNlcmlhbGl6ZU5vZGUoa2V5LCBkYXRhKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGVkZ2VzID0gbmV3IEFycmF5KHRoaXMuX2VkZ2VzLnNpemUpO1xuXG4gICAgaSA9IDA7XG5cbiAgICB0aGlzLl9lZGdlcy5mb3JFYWNoKChkYXRhLCBrZXkpID0+IHtcbiAgICAgIGVkZ2VzW2krK10gPSBzZXJpYWxpemVFZGdlKGtleSwgZGF0YSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXR0cmlidXRlczogdGhpcy5nZXRBdHRyaWJ1dGVzKCksXG4gICAgICBub2RlcyxcbiAgICAgIGVkZ2VzLFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgIG11bHRpOiB0aGlzLm11bHRpLFxuICAgICAgICBhbGxvd1NlbGZMb29wczogdGhpcy5hbGxvd1NlbGZMb29wc1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgdG8gaW1wb3J0IGEgc2VyaWFsaXplZCBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0gIHtvYmplY3R9IGRhdGEgICAtIFRoZSBzZXJpYWxpemVkIG5vZGUuXG4gICAqIEBwYXJhbSAge2Jvb2xlYW59IG1lcmdlIC0gV2hldGhlciB0byBtZXJnZSB0aGUgZ2l2ZW4gbm9kZS5cbiAgICogQHJldHVybiB7R3JhcGh9ICAgICAgICAgLSBSZXR1cm5zIGl0c2VsZiBmb3IgY2hhaW5pbmcuXG4gICAqL1xuICBpbXBvcnROb2RlKGRhdGEsIG1lcmdlID0gZmFsc2UpIHtcbiAgICAvLyBWYWxpZGF0aW5nXG4gICAgY29uc3QgZXJyb3IgPSB2YWxpZGF0ZVNlcmlhbGl6ZWROb2RlKGRhdGEpO1xuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgPT09ICdub3Qtb2JqZWN0JylcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAgICdHcmFwaC5pbXBvcnROb2RlOiBpbnZhbGlkIHNlcmlhbGl6ZWQgbm9kZS4gQSBzZXJpYWxpemVkIG5vZGUgc2hvdWxkIGJlIGEgcGxhaW4gb2JqZWN0IHdpdGggYXQgbGVhc3QgYSBcImtleVwiIHByb3BlcnR5LidcbiAgICAgICAgKTtcbiAgICAgIGlmIChlcnJvciA9PT0gJ25vLWtleScpXG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgICAnR3JhcGguaW1wb3J0Tm9kZTogbm8ga2V5IHByb3ZpZGVkLidcbiAgICAgICAgKTtcbiAgICAgIGlmIChlcnJvciA9PT0gJ2ludmFsaWQtYXR0cmlidXRlcycpXG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgICAnR3JhcGguaW1wb3J0Tm9kZTogaW52YWxpZCBhdHRyaWJ1dGVzLiBBdHRyaWJ1dGVzIHNob3VsZCBiZSBhIHBsYWluIG9iamVjdCwgbnVsbCBvciBvbWl0dGVkLidcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBBZGRpbmcgdGhlIG5vZGVcbiAgICBjb25zdCB7a2V5LCBhdHRyaWJ1dGVzID0ge319ID0gZGF0YTtcblxuICAgIGlmIChtZXJnZSkgdGhpcy5tZXJnZU5vZGUoa2V5LCBhdHRyaWJ1dGVzKTtcbiAgICBlbHNlIHRoaXMuYWRkTm9kZShrZXksIGF0dHJpYnV0ZXMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgdG8gaW1wb3J0IGEgc2VyaWFsaXplZCBlZGdlLlxuICAgKlxuICAgKiBAcGFyYW0gIHtvYmplY3R9ICBkYXRhICAtIFRoZSBzZXJpYWxpemVkIGVkZ2UuXG4gICAqIEBwYXJhbSAge2Jvb2xlYW59IG1lcmdlIC0gV2hldGhlciB0byBtZXJnZSB0aGUgZ2l2ZW4gZWRnZS5cbiAgICogQHJldHVybiB7R3JhcGh9ICAgICAgICAgLSBSZXR1cm5zIGl0c2VsZiBmb3IgY2hhaW5pbmcuXG4gICAqL1xuICBpbXBvcnRFZGdlKGRhdGEsIG1lcmdlID0gZmFsc2UpIHtcbiAgICAvLyBWYWxpZGF0aW5nXG4gICAgY29uc3QgZXJyb3IgPSB2YWxpZGF0ZVNlcmlhbGl6ZWRFZGdlKGRhdGEpO1xuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgPT09ICdub3Qtb2JqZWN0JylcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAgICdHcmFwaC5pbXBvcnRFZGdlOiBpbnZhbGlkIHNlcmlhbGl6ZWQgZWRnZS4gQSBzZXJpYWxpemVkIGVkZ2Ugc2hvdWxkIGJlIGEgcGxhaW4gb2JqZWN0IHdpdGggYXQgbGVhc3QgYSBcInNvdXJjZVwiICYgXCJ0YXJnZXRcIiBwcm9wZXJ0eS4nXG4gICAgICAgICk7XG4gICAgICBpZiAoZXJyb3IgPT09ICduby1zb3VyY2UnKVxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICAgJ0dyYXBoLmltcG9ydEVkZ2U6IG1pc3Npbmcgc291Y2UuJ1xuICAgICAgICApO1xuICAgICAgaWYgKGVycm9yID09PSAnbm8tdGFyZ2V0JylcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAgICdHcmFwaC5pbXBvcnRFZGdlOiBtaXNzaW5nIHRhcmdldC4nXG4gICAgICAgICk7XG4gICAgICBpZiAoZXJyb3IgPT09ICdpbnZhbGlkLWF0dHJpYnV0ZXMnKVxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICAgJ0dyYXBoLmltcG9ydEVkZ2U6IGludmFsaWQgYXR0cmlidXRlcy4gQXR0cmlidXRlcyBzaG91bGQgYmUgYSBwbGFpbiBvYmplY3QsIG51bGwgb3Igb21pdHRlZC4nXG4gICAgICAgICk7XG4gICAgICBpZiAoZXJyb3IgPT09ICdpbnZhbGlkLXVuZGlyZWN0ZWQnKVxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICAgJ0dyYXBoLmltcG9ydEVkZ2U6IGludmFsaWQgdW5kaXJlY3RlZC4gVW5kaXJlY3RlZCBzaG91bGQgYmUgYm9vbGVhbiBvciBvbWl0dGVkLidcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBBZGRpbmcgdGhlIGVkZ2VcbiAgICBjb25zdCB7c291cmNlLCB0YXJnZXQsIGF0dHJpYnV0ZXMgPSB7fSwgdW5kaXJlY3RlZCA9IGZhbHNlfSA9IGRhdGE7XG5cbiAgICBsZXQgbWV0aG9kO1xuXG4gICAgaWYgKCdrZXknIGluIGRhdGEpIHtcbiAgICAgIG1ldGhvZCA9IG1lcmdlXG4gICAgICAgID8gdW5kaXJlY3RlZFxuICAgICAgICAgID8gdGhpcy5tZXJnZVVuZGlyZWN0ZWRFZGdlV2l0aEtleVxuICAgICAgICAgIDogdGhpcy5tZXJnZURpcmVjdGVkRWRnZVdpdGhLZXlcbiAgICAgICAgOiB1bmRpcmVjdGVkXG4gICAgICAgID8gdGhpcy5hZGRVbmRpcmVjdGVkRWRnZVdpdGhLZXlcbiAgICAgICAgOiB0aGlzLmFkZERpcmVjdGVkRWRnZVdpdGhLZXk7XG5cbiAgICAgIG1ldGhvZC5jYWxsKHRoaXMsIGRhdGEua2V5LCBzb3VyY2UsIHRhcmdldCwgYXR0cmlidXRlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1ldGhvZCA9IG1lcmdlXG4gICAgICAgID8gdW5kaXJlY3RlZFxuICAgICAgICAgID8gdGhpcy5tZXJnZVVuZGlyZWN0ZWRFZGdlXG4gICAgICAgICAgOiB0aGlzLm1lcmdlRGlyZWN0ZWRFZGdlXG4gICAgICAgIDogdW5kaXJlY3RlZFxuICAgICAgICA/IHRoaXMuYWRkVW5kaXJlY3RlZEVkZ2VcbiAgICAgICAgOiB0aGlzLmFkZERpcmVjdGVkRWRnZTtcblxuICAgICAgbWV0aG9kLmNhbGwodGhpcywgc291cmNlLCB0YXJnZXQsIGF0dHJpYnV0ZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIHRvIGltcG9ydCBhIHNlcmlhbGl6ZWQgZ3JhcGguXG4gICAqXG4gICAqIEBwYXJhbSAge29iamVjdHxHcmFwaH0gZGF0YSAgLSBUaGUgc2VyaWFsaXplZCBncmFwaC5cbiAgICogQHBhcmFtICB7Ym9vbGVhbn0gICAgICBtZXJnZSAtIFdoZXRoZXIgdG8gbWVyZ2UgZGF0YS5cbiAgICogQHJldHVybiB7R3JhcGh9ICAgICAgICAgICAgICAtIFJldHVybnMgaXRzZWxmIGZvciBjaGFpbmluZy5cbiAgICovXG4gIGltcG9ydChkYXRhLCBtZXJnZSA9IGZhbHNlKSB7XG4gICAgLy8gSW1wb3J0aW5nIGEgR3JhcGggaW5zdGFuY2VcbiAgICBpZiAoaXNHcmFwaChkYXRhKSkge1xuICAgICAgdGhpcy5pbXBvcnQoZGF0YS5leHBvcnQoKSwgbWVyZ2UpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gSW1wb3J0aW5nIGEgc2VyaWFsaXplZCBncmFwaFxuICAgIGlmICghaXNQbGFpbk9iamVjdChkYXRhKSlcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ0dyYXBoLmltcG9ydDogaW52YWxpZCBhcmd1bWVudC4gRXhwZWN0aW5nIGEgc2VyaWFsaXplZCBncmFwaCBvciwgYWx0ZXJuYXRpdmVseSwgYSBHcmFwaCBpbnN0YW5jZS4nXG4gICAgICApO1xuXG4gICAgaWYgKGRhdGEuYXR0cmlidXRlcykge1xuICAgICAgaWYgKCFpc1BsYWluT2JqZWN0KGRhdGEuYXR0cmlidXRlcykpXG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgICAnR3JhcGguaW1wb3J0OiBpbnZhbGlkIGF0dHJpYnV0ZXMuIEV4cGVjdGluZyBhIHBsYWluIG9iamVjdC4nXG4gICAgICAgICk7XG5cbiAgICAgIGlmIChtZXJnZSkgdGhpcy5tZXJnZUF0dHJpYnV0ZXMoZGF0YS5hdHRyaWJ1dGVzKTtcbiAgICAgIGVsc2UgdGhpcy5yZXBsYWNlQXR0cmlidXRlcyhkYXRhLmF0dHJpYnV0ZXMpO1xuICAgIH1cblxuICAgIGxldCBpLCBsLCBsaXN0O1xuXG4gICAgaWYgKGRhdGEubm9kZXMpIHtcbiAgICAgIGxpc3QgPSBkYXRhLm5vZGVzO1xuXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkobGlzdCkpXG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgICAnR3JhcGguaW1wb3J0OiBpbnZhbGlkIG5vZGVzLiBFeHBlY3RpbmcgYW4gYXJyYXkuJ1xuICAgICAgICApO1xuXG4gICAgICBmb3IgKGkgPSAwLCBsID0gbGlzdC5sZW5ndGg7IGkgPCBsOyBpKyspIHRoaXMuaW1wb3J0Tm9kZShsaXN0W2ldLCBtZXJnZSk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuZWRnZXMpIHtcbiAgICAgIGxpc3QgPSBkYXRhLmVkZ2VzO1xuXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkobGlzdCkpXG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgICAnR3JhcGguaW1wb3J0OiBpbnZhbGlkIGVkZ2VzLiBFeHBlY3RpbmcgYW4gYXJyYXkuJ1xuICAgICAgICApO1xuXG4gICAgICBmb3IgKGkgPSAwLCBsID0gbGlzdC5sZW5ndGg7IGkgPCBsOyBpKyspIHRoaXMuaW1wb3J0RWRnZShsaXN0W2ldLCBtZXJnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogVXRpbHNcbiAgICoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqL1xuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIGEgbnVsbCBjb3B5IG9mIHRoZSBncmFwaCwgaS5lLiBhIGdyYXBoIHdpdGhvdXQgbm9kZXNcbiAgICogJiBlZGdlcyBidXQgd2l0aCB0aGUgZXhhY3Qgc2FtZSBvcHRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gIHtvYmplY3R9IG9wdGlvbnMgLSBPcHRpb25zIHRvIG1lcmdlIHdpdGggdGhlIGN1cnJlbnQgb25lcy5cbiAgICogQHJldHVybiB7R3JhcGh9ICAgICAgICAgIC0gVGhlIG51bGwgY29weS5cbiAgICovXG4gIG51bGxDb3B5KG9wdGlvbnMpIHtcbiAgICBjb25zdCBncmFwaCA9IG5ldyBHcmFwaChhc3NpZ24oe30sIHRoaXMuX29wdGlvbnMsIG9wdGlvbnMpKTtcbiAgICBncmFwaC5yZXBsYWNlQXR0cmlidXRlcyhhc3NpZ24oe30sIHRoaXMuZ2V0QXR0cmlidXRlcygpKSk7XG4gICAgcmV0dXJuIGdyYXBoO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgYW4gZW1wdHkgY29weSBvZiB0aGUgZ3JhcGgsIGkuZS4gYSBncmFwaCB3aXRob3V0IGVkZ2VzIGJ1dFxuICAgKiB3aXRoIHRoZSBleGFjdCBzYW1lIG9wdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSAge29iamVjdH0gb3B0aW9ucyAtIE9wdGlvbnMgdG8gbWVyZ2Ugd2l0aCB0aGUgY3VycmVudCBvbmVzLlxuICAgKiBAcmV0dXJuIHtHcmFwaH0gICAgICAgICAgLSBUaGUgZW1wdHkgY29weS5cbiAgICovXG4gIGVtcHR5Q29weShvcHRpb25zKSB7XG4gICAgY29uc3QgZ3JhcGggPSB0aGlzLm51bGxDb3B5KG9wdGlvbnMpO1xuXG4gICAgdGhpcy5fbm9kZXMuZm9yRWFjaCgobm9kZURhdGEsIGtleSkgPT4ge1xuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IGFzc2lnbih7fSwgbm9kZURhdGEuYXR0cmlidXRlcyk7XG5cbiAgICAgIC8vIE5PVEU6IG5vIG5lZWQgdG8gZW1pdCBldmVudHMgc2luY2UgdXNlciBjYW5ub3QgYWNjZXNzIHRoZSBpbnN0YW5jZSB5ZXRcbiAgICAgIG5vZGVEYXRhID0gbmV3IGdyYXBoLk5vZGVEYXRhQ2xhc3Moa2V5LCBhdHRyaWJ1dGVzKTtcbiAgICAgIGdyYXBoLl9ub2Rlcy5zZXQoa2V5LCBub2RlRGF0YSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ3JhcGg7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyBhbiBleGFjdCBjb3B5IG9mIHRoZSBncmFwaC5cbiAgICpcbiAgICogQHJldHVybiB7R3JhcGh9IC0gVGhlIGNvcHkuXG4gICAqL1xuICBjb3B5KCkge1xuICAgIGNvbnN0IGdyYXBoID0gdGhpcy5lbXB0eUNvcHkoKTtcblxuICAgIGNvbnN0IGl0ZXJhdG9yID0gdGhpcy5fZWRnZXMudmFsdWVzKCk7XG5cbiAgICBsZXQgc3RlcCwgZWRnZURhdGE7XG5cbiAgICB3aGlsZSAoKChzdGVwID0gaXRlcmF0b3IubmV4dCgpKSwgc3RlcC5kb25lICE9PSB0cnVlKSkge1xuICAgICAgZWRnZURhdGEgPSBzdGVwLnZhbHVlO1xuXG4gICAgICAvLyBOT1RFOiBubyBuZWVkIHRvIGVtaXQgZXZlbnRzIHNpbmNlIHVzZXIgY2Fubm90IGFjY2VzcyB0aGUgaW5zdGFuY2UgeWV0XG4gICAgICBhZGRFZGdlKFxuICAgICAgICBncmFwaCxcbiAgICAgICAgJ2NvcHknLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgZWRnZURhdGEudW5kaXJlY3RlZCxcbiAgICAgICAgZWRnZURhdGEua2V5LFxuICAgICAgICBlZGdlRGF0YS5zb3VyY2Uua2V5LFxuICAgICAgICBlZGdlRGF0YS50YXJnZXQua2V5LFxuICAgICAgICBhc3NpZ24oe30sIGVkZ2VEYXRhLmF0dHJpYnV0ZXMpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBncmFwaDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdXBncmFkaW5nIHRoZSBncmFwaCB0byBhIG1peGVkIG9uZS5cbiAgICpcbiAgICogQHJldHVybiB7R3JhcGh9IC0gVGhlIGNvcHkuXG4gICAqL1xuICB1cGdyYWRlVG9NaXhlZCgpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSAnbWl4ZWQnKSByZXR1cm4gdGhpcztcblxuICAgIC8vIFVwZ3JhZGluZyBub2RlIGRhdGE6XG4gICAgLy8gTk9URTogbWF5YmUgdGhpcyBjb3VsZCBsZWFkIHRvIHNvbWUgZGUtb3B0aW1pemF0aW9uIGJ5IHVzdWFsXG4gICAgLy8gSmF2YVNjcmlwdCBlbmdpbmVzIGJ1dCBJIGNhbm5vdCBiZSBzdXJlIG9mIGl0LiBBbm90aGVyIHNvbHV0aW9uXG4gICAgLy8gd291bGQgYmUgdG8gcmVpbnN0YW50aWF0ZSB0aGUgY2xhc3NlcyBidXQgdGhpcyBzdXJlbHkgaGFzIGEgcGVyZm9ybWFuY2VcbiAgICAvLyBhbmQgbWVtb3J5IGltcGFjdC5cbiAgICB0aGlzLl9ub2Rlcy5mb3JFYWNoKGRhdGEgPT4gZGF0YS51cGdyYWRlVG9NaXhlZCgpKTtcblxuICAgIC8vIE11dGF0aW5nIHRoZSBvcHRpb25zICYgdGhlIGluc3RhbmNlXG4gICAgdGhpcy5fb3B0aW9ucy50eXBlID0gJ21peGVkJztcbiAgICByZWFkT25seVByb3BlcnR5KHRoaXMsICd0eXBlJywgdGhpcy5fb3B0aW9ucy50eXBlKTtcbiAgICBwcml2YXRlUHJvcGVydHkodGhpcywgJ05vZGVEYXRhQ2xhc3MnLCBNaXhlZE5vZGVEYXRhKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1cGdyYWRpbmcgdGhlIGdyYXBoIHRvIGEgbXVsdGkgb25lLlxuICAgKlxuICAgKiBAcmV0dXJuIHtHcmFwaH0gLSBUaGUgY29weS5cbiAgICovXG4gIHVwZ3JhZGVUb011bHRpKCkge1xuICAgIGlmICh0aGlzLm11bHRpKSByZXR1cm4gdGhpcztcblxuICAgIC8vIE11dGF0aW5nIHRoZSBvcHRpb25zICYgdGhlIGluc3RhbmNlXG4gICAgdGhpcy5fb3B0aW9ucy5tdWx0aSA9IHRydWU7XG4gICAgcmVhZE9ubHlQcm9wZXJ0eSh0aGlzLCAnbXVsdGknLCB0cnVlKTtcblxuICAgIC8vIFVwZ3JhZGluZyBpbmRpY2VzXG4gICAgdXBncmFkZVN0cnVjdHVyZUluZGV4VG9NdWx0aSh0aGlzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEtub3duIG1ldGhvZHNcbiAgICoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqL1xuXG4gIC8qKlxuICAgKiBNZXRob2QgdXNlZCBieSBKYXZhU2NyaXB0IHRvIHBlcmZvcm0gSlNPTiBzZXJpYWxpemF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IC0gVGhlIHNlcmlhbGl6ZWQgZ3JhcGguXG4gICAqL1xuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMuZXhwb3J0KCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyBbb2JqZWN0IEdyYXBoXS5cbiAgICovXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiAnW29iamVjdCBHcmFwaF0nO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIGludGVybmFsbHkgYnkgbm9kZSdzIGNvbnNvbGUgdG8gZGlzcGxheSBhIGN1c3RvbSBvYmplY3QuXG4gICAqXG4gICAqIEByZXR1cm4ge29iamVjdH0gLSBGb3JtYXR0ZWQgb2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBncmFwaC5cbiAgICovXG4gIGluc3BlY3QoKSB7XG4gICAgY29uc3Qgbm9kZXMgPSB7fTtcbiAgICB0aGlzLl9ub2Rlcy5mb3JFYWNoKChkYXRhLCBrZXkpID0+IHtcbiAgICAgIG5vZGVzW2tleV0gPSBkYXRhLmF0dHJpYnV0ZXM7XG4gICAgfSk7XG5cbiAgICBjb25zdCBlZGdlcyA9IHt9LFxuICAgICAgbXVsdGlJbmRleCA9IHt9O1xuXG4gICAgdGhpcy5fZWRnZXMuZm9yRWFjaCgoZGF0YSwga2V5KSA9PiB7XG4gICAgICBjb25zdCBkaXJlY3Rpb24gPSBkYXRhLnVuZGlyZWN0ZWQgPyAnLS0nIDogJy0+JztcblxuICAgICAgbGV0IGxhYmVsID0gJyc7XG5cbiAgICAgIGxldCBzb3VyY2UgPSBkYXRhLnNvdXJjZS5rZXk7XG4gICAgICBsZXQgdGFyZ2V0ID0gZGF0YS50YXJnZXQua2V5O1xuICAgICAgbGV0IHRtcDtcblxuICAgICAgaWYgKGRhdGEudW5kaXJlY3RlZCAmJiBzb3VyY2UgPiB0YXJnZXQpIHtcbiAgICAgICAgdG1wID0gc291cmNlO1xuICAgICAgICBzb3VyY2UgPSB0YXJnZXQ7XG4gICAgICAgIHRhcmdldCA9IHRtcDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGVzYyA9IGAoJHtzb3VyY2V9KSR7ZGlyZWN0aW9ufSgke3RhcmdldH0pYDtcblxuICAgICAgaWYgKCFrZXkuc3RhcnRzV2l0aCgnZ2VpZF8nKSkge1xuICAgICAgICBsYWJlbCArPSBgWyR7a2V5fV06IGA7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBtdWx0aUluZGV4W2Rlc2NdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIG11bHRpSW5kZXhbZGVzY10gPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG11bHRpSW5kZXhbZGVzY10rKztcbiAgICAgICAgfVxuXG4gICAgICAgIGxhYmVsICs9IGAke211bHRpSW5kZXhbZGVzY119LiBgO1xuICAgICAgfVxuXG4gICAgICBsYWJlbCArPSBkZXNjO1xuXG4gICAgICBlZGdlc1tsYWJlbF0gPSBkYXRhLmF0dHJpYnV0ZXM7XG4gICAgfSk7XG5cbiAgICBjb25zdCBkdW1teSA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBrIGluIHRoaXMpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5oYXNPd25Qcm9wZXJ0eShrKSAmJlxuICAgICAgICAhRU1JVFRFUl9QUk9QUy5oYXMoaykgJiZcbiAgICAgICAgdHlwZW9mIHRoaXNba10gIT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgdHlwZW9mIGsgIT09ICdzeW1ib2wnXG4gICAgICApXG4gICAgICAgIGR1bW15W2tdID0gdGhpc1trXTtcbiAgICB9XG5cbiAgICBkdW1teS5hdHRyaWJ1dGVzID0gdGhpcy5fYXR0cmlidXRlcztcbiAgICBkdW1teS5ub2RlcyA9IG5vZGVzO1xuICAgIGR1bW15LmVkZ2VzID0gZWRnZXM7XG5cbiAgICBwcml2YXRlUHJvcGVydHkoZHVtbXksICdjb25zdHJ1Y3RvcicsIHRoaXMuY29uc3RydWN0b3IpO1xuXG4gICAgcmV0dXJuIGR1bW15O1xuICB9XG59XG5cbi8qKlxuICogQXR0YWNoaW5nIG1ldGhvZHMgdG8gdGhlIHByb3RvdHlwZS5cbiAqXG4gKiBIZXJlLCB3ZSBhcmUgYXR0YWNoaW5nIGEgd2lkZSB2YXJpZXR5IG9mIG1ldGhvZHMgdG8gdGhlIEdyYXBoIGNsYXNzJ1xuICogcHJvdG90eXBlIHdoZW4gdGhvc2UgYXJlIHZlcnkgbnVtZXJvdXMgYW5kIHdoZW4gdGhlaXIgY3JlYXRpb24gaXNcbiAqIGFic3RyYWN0ZWQuXG4gKi9cblxuLyoqXG4gKiBBdHRhY2hpbmcgY3VzdG9tIGluc3BlY3QgbWV0aG9kIGZvciBub2RlID49IDEwLlxuICovXG5pZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcpXG4gIEdyYXBoLnByb3RvdHlwZVtTeW1ib2wuZm9yKCdub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbScpXSA9XG4gICAgR3JhcGgucHJvdG90eXBlLmluc3BlY3Q7XG5cbi8qKlxuICogUmVsYXRlZCB0byBlZGdlIGFkZGl0aW9uLlxuICovXG5FREdFX0FERF9NRVRIT0RTLmZvckVhY2gobWV0aG9kID0+IHtcbiAgWydhZGQnLCAnbWVyZ2UnLCAndXBkYXRlJ10uZm9yRWFjaCh2ZXJiID0+IHtcbiAgICBjb25zdCBuYW1lID0gbWV0aG9kLm5hbWUodmVyYik7XG4gICAgY29uc3QgZm4gPSB2ZXJiID09PSAnYWRkJyA/IGFkZEVkZ2UgOiBtZXJnZUVkZ2U7XG5cbiAgICBpZiAobWV0aG9kLmdlbmVyYXRlS2V5KSB7XG4gICAgICBHcmFwaC5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoc291cmNlLCB0YXJnZXQsIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgcmV0dXJuIGZuKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICB0cnVlLFxuICAgICAgICAgIChtZXRob2QudHlwZSB8fCB0aGlzLnR5cGUpID09PSAndW5kaXJlY3RlZCcsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgdmVyYiA9PT0gJ3VwZGF0ZSdcbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIEdyYXBoLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uIChlZGdlLCBzb3VyY2UsIHRhcmdldCwgYXR0cmlidXRlcykge1xuICAgICAgICByZXR1cm4gZm4oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIChtZXRob2QudHlwZSB8fCB0aGlzLnR5cGUpID09PSAndW5kaXJlY3RlZCcsXG4gICAgICAgICAgZWRnZSxcbiAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgdmVyYiA9PT0gJ3VwZGF0ZSdcbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfVxuICB9KTtcbn0pO1xuXG4vKipcbiAqIEF0dHJpYnV0ZXMtcmVsYXRlZC5cbiAqL1xuYXR0YWNoTm9kZUF0dHJpYnV0ZXNNZXRob2RzKEdyYXBoKTtcbmF0dGFjaEVkZ2VBdHRyaWJ1dGVzTWV0aG9kcyhHcmFwaCk7XG5cbi8qKlxuICogRWRnZSBpdGVyYXRpb24tcmVsYXRlZC5cbiAqL1xuYXR0YWNoRWRnZUl0ZXJhdGlvbk1ldGhvZHMoR3JhcGgpO1xuXG4vKipcbiAqIE5laWdoYm9yIGl0ZXJhdGlvbi1yZWxhdGVkLlxuICovXG5hdHRhY2hOZWlnaGJvckl0ZXJhdGlvbk1ldGhvZHMoR3JhcGgpO1xuIiwgIi8qKlxuICogR3JhcGhvbG9neSBIZWxwZXIgQ2xhc3Nlc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqXG4gKiBCdWlsZGluZyBzb21lIGhpZ2hlci1vcmRlciBjbGFzc2VzIGluc3RhbnRpYXRpbmcgdGhlIGdyYXBoIHdpdGhcbiAqIHByZWRlZmluaXRlIG9wdGlvbnMuXG4gKi9cbmltcG9ydCB7YXNzaWdufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBHcmFwaCBmcm9tICcuL2dyYXBoJztcblxuaW1wb3J0IHtcbiAgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IsXG4gIE5vdEZvdW5kR3JhcGhFcnJvcixcbiAgVXNhZ2VHcmFwaEVycm9yXG59IGZyb20gJy4vZXJyb3JzJztcblxuLyoqXG4gKiBBbHRlcm5hdGl2ZSBjb25zdHJ1Y3RvcnMuXG4gKi9cbmNsYXNzIERpcmVjdGVkR3JhcGggZXh0ZW5kcyBHcmFwaCB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICBjb25zdCBmaW5hbE9wdGlvbnMgPSBhc3NpZ24oe3R5cGU6ICdkaXJlY3RlZCd9LCBvcHRpb25zKTtcblxuICAgIGlmICgnbXVsdGknIGluIGZpbmFsT3B0aW9ucyAmJiBmaW5hbE9wdGlvbnMubXVsdGkgIT09IGZhbHNlKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAnRGlyZWN0ZWRHcmFwaC5mcm9tOiBpbmNvbnNpc3RlbnQgaW5kaWNhdGlvbiB0aGF0IHRoZSBncmFwaCBzaG91bGQgYmUgbXVsdGkgaW4gZ2l2ZW4gb3B0aW9ucyEnXG4gICAgICApO1xuXG4gICAgaWYgKGZpbmFsT3B0aW9ucy50eXBlICE9PSAnZGlyZWN0ZWQnKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAnRGlyZWN0ZWRHcmFwaC5mcm9tOiBpbmNvbnNpc3RlbnQgXCInICtcbiAgICAgICAgICBmaW5hbE9wdGlvbnMudHlwZSArXG4gICAgICAgICAgJ1wiIHR5cGUgaW4gZ2l2ZW4gb3B0aW9ucyEnXG4gICAgICApO1xuXG4gICAgc3VwZXIoZmluYWxPcHRpb25zKTtcbiAgfVxufVxuY2xhc3MgVW5kaXJlY3RlZEdyYXBoIGV4dGVuZHMgR3JhcGgge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgY29uc3QgZmluYWxPcHRpb25zID0gYXNzaWduKHt0eXBlOiAndW5kaXJlY3RlZCd9LCBvcHRpb25zKTtcblxuICAgIGlmICgnbXVsdGknIGluIGZpbmFsT3B0aW9ucyAmJiBmaW5hbE9wdGlvbnMubXVsdGkgIT09IGZhbHNlKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAnVW5kaXJlY3RlZEdyYXBoLmZyb206IGluY29uc2lzdGVudCBpbmRpY2F0aW9uIHRoYXQgdGhlIGdyYXBoIHNob3VsZCBiZSBtdWx0aSBpbiBnaXZlbiBvcHRpb25zISdcbiAgICAgICk7XG5cbiAgICBpZiAoZmluYWxPcHRpb25zLnR5cGUgIT09ICd1bmRpcmVjdGVkJylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ1VuZGlyZWN0ZWRHcmFwaC5mcm9tOiBpbmNvbnNpc3RlbnQgXCInICtcbiAgICAgICAgICBmaW5hbE9wdGlvbnMudHlwZSArXG4gICAgICAgICAgJ1wiIHR5cGUgaW4gZ2l2ZW4gb3B0aW9ucyEnXG4gICAgICApO1xuXG4gICAgc3VwZXIoZmluYWxPcHRpb25zKTtcbiAgfVxufVxuY2xhc3MgTXVsdGlHcmFwaCBleHRlbmRzIEdyYXBoIHtcbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIGNvbnN0IGZpbmFsT3B0aW9ucyA9IGFzc2lnbih7bXVsdGk6IHRydWV9LCBvcHRpb25zKTtcblxuICAgIGlmICgnbXVsdGknIGluIGZpbmFsT3B0aW9ucyAmJiBmaW5hbE9wdGlvbnMubXVsdGkgIT09IHRydWUpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdNdWx0aUdyYXBoLmZyb206IGluY29uc2lzdGVudCBpbmRpY2F0aW9uIHRoYXQgdGhlIGdyYXBoIHNob3VsZCBiZSBzaW1wbGUgaW4gZ2l2ZW4gb3B0aW9ucyEnXG4gICAgICApO1xuXG4gICAgc3VwZXIoZmluYWxPcHRpb25zKTtcbiAgfVxufVxuY2xhc3MgTXVsdGlEaXJlY3RlZEdyYXBoIGV4dGVuZHMgR3JhcGgge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgY29uc3QgZmluYWxPcHRpb25zID0gYXNzaWduKHt0eXBlOiAnZGlyZWN0ZWQnLCBtdWx0aTogdHJ1ZX0sIG9wdGlvbnMpO1xuXG4gICAgaWYgKCdtdWx0aScgaW4gZmluYWxPcHRpb25zICYmIGZpbmFsT3B0aW9ucy5tdWx0aSAhPT0gdHJ1ZSlcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ011bHRpRGlyZWN0ZWRHcmFwaC5mcm9tOiBpbmNvbnNpc3RlbnQgaW5kaWNhdGlvbiB0aGF0IHRoZSBncmFwaCBzaG91bGQgYmUgc2ltcGxlIGluIGdpdmVuIG9wdGlvbnMhJ1xuICAgICAgKTtcblxuICAgIGlmIChmaW5hbE9wdGlvbnMudHlwZSAhPT0gJ2RpcmVjdGVkJylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ011bHRpRGlyZWN0ZWRHcmFwaC5mcm9tOiBpbmNvbnNpc3RlbnQgXCInICtcbiAgICAgICAgICBmaW5hbE9wdGlvbnMudHlwZSArXG4gICAgICAgICAgJ1wiIHR5cGUgaW4gZ2l2ZW4gb3B0aW9ucyEnXG4gICAgICApO1xuXG4gICAgc3VwZXIoZmluYWxPcHRpb25zKTtcbiAgfVxufVxuY2xhc3MgTXVsdGlVbmRpcmVjdGVkR3JhcGggZXh0ZW5kcyBHcmFwaCB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICBjb25zdCBmaW5hbE9wdGlvbnMgPSBhc3NpZ24oe3R5cGU6ICd1bmRpcmVjdGVkJywgbXVsdGk6IHRydWV9LCBvcHRpb25zKTtcblxuICAgIGlmICgnbXVsdGknIGluIGZpbmFsT3B0aW9ucyAmJiBmaW5hbE9wdGlvbnMubXVsdGkgIT09IHRydWUpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdNdWx0aVVuZGlyZWN0ZWRHcmFwaC5mcm9tOiBpbmNvbnNpc3RlbnQgaW5kaWNhdGlvbiB0aGF0IHRoZSBncmFwaCBzaG91bGQgYmUgc2ltcGxlIGluIGdpdmVuIG9wdGlvbnMhJ1xuICAgICAgKTtcblxuICAgIGlmIChmaW5hbE9wdGlvbnMudHlwZSAhPT0gJ3VuZGlyZWN0ZWQnKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAnTXVsdGlVbmRpcmVjdGVkR3JhcGguZnJvbTogaW5jb25zaXN0ZW50IFwiJyArXG4gICAgICAgICAgZmluYWxPcHRpb25zLnR5cGUgK1xuICAgICAgICAgICdcIiB0eXBlIGluIGdpdmVuIG9wdGlvbnMhJ1xuICAgICAgKTtcblxuICAgIHN1cGVyKGZpbmFsT3B0aW9ucyk7XG4gIH1cbn1cblxuLyoqXG4gKiBBdHRhY2hpbmcgc3RhdGljICMuZnJvbSBtZXRob2QgdG8gZWFjaCBvZiB0aGUgY29uc3RydWN0b3JzLlxuICovXG5mdW5jdGlvbiBhdHRhY2hTdGF0aWNGcm9tTWV0aG9kKENsYXNzKSB7XG4gIC8qKlxuICAgKiBCdWlsZHMgYSBncmFwaCBmcm9tIHNlcmlhbGl6ZWQgZGF0YSBvciBhbm90aGVyIGdyYXBoJ3MgZGF0YS5cbiAgICpcbiAgICogQHBhcmFtICB7R3JhcGh8U2VyaWFsaXplZEdyYXBofSBkYXRhICAgICAgLSBIeWRyYXRhdGlvbiBkYXRhLlxuICAgKiBAcGFyYW0gIHtvYmplY3R9ICAgICAgICAgICAgICAgIFtvcHRpb25zXSAtIE9wdGlvbnMuXG4gICAqIEByZXR1cm4ge0NsYXNzfVxuICAgKi9cbiAgQ2xhc3MuZnJvbSA9IGZ1bmN0aW9uIChkYXRhLCBvcHRpb25zKSB7XG4gICAgLy8gTWVyZ2luZyBnaXZlbiBvcHRpb25zIHdpdGggc2VyaWFsaXplZCBvbmVzXG4gICAgY29uc3QgZmluYWxPcHRpb25zID0gYXNzaWduKHt9LCBkYXRhLm9wdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgQ2xhc3MoZmluYWxPcHRpb25zKTtcbiAgICBpbnN0YW5jZS5pbXBvcnQoZGF0YSk7XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG59XG5cbmF0dGFjaFN0YXRpY0Zyb21NZXRob2QoR3JhcGgpO1xuYXR0YWNoU3RhdGljRnJvbU1ldGhvZChEaXJlY3RlZEdyYXBoKTtcbmF0dGFjaFN0YXRpY0Zyb21NZXRob2QoVW5kaXJlY3RlZEdyYXBoKTtcbmF0dGFjaFN0YXRpY0Zyb21NZXRob2QoTXVsdGlHcmFwaCk7XG5hdHRhY2hTdGF0aWNGcm9tTWV0aG9kKE11bHRpRGlyZWN0ZWRHcmFwaCk7XG5hdHRhY2hTdGF0aWNGcm9tTWV0aG9kKE11bHRpVW5kaXJlY3RlZEdyYXBoKTtcblxuR3JhcGguR3JhcGggPSBHcmFwaDtcbkdyYXBoLkRpcmVjdGVkR3JhcGggPSBEaXJlY3RlZEdyYXBoO1xuR3JhcGguVW5kaXJlY3RlZEdyYXBoID0gVW5kaXJlY3RlZEdyYXBoO1xuR3JhcGguTXVsdGlHcmFwaCA9IE11bHRpR3JhcGg7XG5HcmFwaC5NdWx0aURpcmVjdGVkR3JhcGggPSBNdWx0aURpcmVjdGVkR3JhcGg7XG5HcmFwaC5NdWx0aVVuZGlyZWN0ZWRHcmFwaCA9IE11bHRpVW5kaXJlY3RlZEdyYXBoO1xuXG5HcmFwaC5JbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvciA9IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yO1xuR3JhcGguTm90Rm91bmRHcmFwaEVycm9yID0gTm90Rm91bmRHcmFwaEVycm9yO1xuR3JhcGguVXNhZ2VHcmFwaEVycm9yID0gVXNhZ2VHcmFwaEVycm9yO1xuXG5leHBvcnQge1xuICBHcmFwaCxcbiAgRGlyZWN0ZWRHcmFwaCxcbiAgVW5kaXJlY3RlZEdyYXBoLFxuICBNdWx0aUdyYXBoLFxuICBNdWx0aURpcmVjdGVkR3JhcGgsXG4gIE11bHRpVW5kaXJlY3RlZEdyYXBoXG59O1xuIiwgIi8qKlxuICogR3JhcGhvbG9neSBpc0dyYXBoXG4gKiA9PT09PT09PT09PT09PT09PT09XG4gKlxuICogVmVyeSBzaW1wbGUgZnVuY3Rpb24gYWltaW5nIGF0IGVuc3VyaW5nIHRoZSBnaXZlbiB2YXJpYWJsZSBpcyBhXG4gKiBncmFwaG9sb2d5IGluc3RhbmNlLlxuICovXG5cbi8qKlxuICogQ2hlY2tpbmcgdGhlIHZhbHVlIGlzIGEgZ3JhcGhvbG9neSBpbnN0YW5jZS5cbiAqXG4gKiBAcGFyYW0gIHthbnl9ICAgICB2YWx1ZSAtIFRhcmdldCB2YWx1ZS5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNHcmFwaCh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHR5cGVvZiB2YWx1ZS5hZGRVbmRpcmVjdGVkRWRnZVdpdGhLZXkgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgdmFsdWUuZHJvcE5vZGUgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgdmFsdWUubXVsdGkgPT09ICdib29sZWFuJ1xuICApO1xufTtcbiIsICJleHBvcnRzLkFSUkFZX0JVRkZFUl9TVVBQT1JUID0gdHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJztcbmV4cG9ydHMuU1lNQk9MX1NVUFBPUlQgPSB0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJztcbiIsICIvKipcbiAqIE9ibGl0ZXJhdG9yIEZvckVhY2ggRnVuY3Rpb25cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKlxuICogSGVscGVyIGZ1bmN0aW9uIHVzZWQgdG8gZWFzaWx5IGl0ZXJhdGUgb3ZlciBtaXhlZCB2YWx1ZXMuXG4gKi9cbnZhciBzdXBwb3J0ID0gcmVxdWlyZSgnLi9zdXBwb3J0LmpzJyk7XG5cbnZhciBBUlJBWV9CVUZGRVJfU1VQUE9SVCA9IHN1cHBvcnQuQVJSQVlfQlVGRkVSX1NVUFBPUlQ7XG52YXIgU1lNQk9MX1NVUFBPUlQgPSBzdXBwb3J0LlNZTUJPTF9TVVBQT1JUO1xuXG4vKipcbiAqIEZ1bmN0aW9uIGFibGUgdG8gaXRlcmF0ZSBvdmVyIGFsbW9zdCBhbnkgaXRlcmFibGUgSlMgdmFsdWUuXG4gKlxuICogQHBhcmFtICB7YW55fSAgICAgIGl0ZXJhYmxlIC0gSXRlcmFibGUgdmFsdWUuXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBDYWxsYmFjayBmdW5jdGlvbi5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmb3JFYWNoKGl0ZXJhYmxlLCBjYWxsYmFjaykge1xuICB2YXIgaXRlcmF0b3IsIGssIGksIGwsIHM7XG5cbiAgaWYgKCFpdGVyYWJsZSkgdGhyb3cgbmV3IEVycm9yKCdvYmxpdGVyYXRvci9mb3JFYWNoOiBpbnZhbGlkIGl0ZXJhYmxlLicpO1xuXG4gIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdvYmxpdGVyYXRvci9mb3JFYWNoOiBleHBlY3RpbmcgYSBjYWxsYmFjay4nKTtcblxuICAvLyBUaGUgdGFyZ2V0IGlzIGFuIGFycmF5IG9yIGEgc3RyaW5nIG9yIGZ1bmN0aW9uIGFyZ3VtZW50c1xuICBpZiAoXG4gICAgQXJyYXkuaXNBcnJheShpdGVyYWJsZSkgfHxcbiAgICAoQVJSQVlfQlVGRkVSX1NVUFBPUlQgJiYgQXJyYXlCdWZmZXIuaXNWaWV3KGl0ZXJhYmxlKSkgfHxcbiAgICB0eXBlb2YgaXRlcmFibGUgPT09ICdzdHJpbmcnIHx8XG4gICAgaXRlcmFibGUudG9TdHJpbmcoKSA9PT0gJ1tvYmplY3QgQXJndW1lbnRzXSdcbiAgKSB7XG4gICAgZm9yIChpID0gMCwgbCA9IGl0ZXJhYmxlLmxlbmd0aDsgaSA8IGw7IGkrKykgY2FsbGJhY2soaXRlcmFibGVbaV0sIGkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIFRoZSB0YXJnZXQgaGFzIGEgIy5mb3JFYWNoIG1ldGhvZFxuICBpZiAodHlwZW9mIGl0ZXJhYmxlLmZvckVhY2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICBpdGVyYWJsZS5mb3JFYWNoKGNhbGxiYWNrKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBUaGUgdGFyZ2V0IGlzIGl0ZXJhYmxlXG4gIGlmIChcbiAgICBTWU1CT0xfU1VQUE9SVCAmJlxuICAgIFN5bWJvbC5pdGVyYXRvciBpbiBpdGVyYWJsZSAmJlxuICAgIHR5cGVvZiBpdGVyYWJsZS5uZXh0ICE9PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIGl0ZXJhYmxlID0gaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICB9XG5cbiAgLy8gVGhlIHRhcmdldCBpcyBhbiBpdGVyYXRvclxuICBpZiAodHlwZW9mIGl0ZXJhYmxlLm5leHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBpdGVyYXRvciA9IGl0ZXJhYmxlO1xuICAgIGkgPSAwO1xuXG4gICAgd2hpbGUgKCgocyA9IGl0ZXJhdG9yLm5leHQoKSksIHMuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICAgIGNhbGxiYWNrKHMudmFsdWUsIGkpO1xuICAgICAgaSsrO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIFRoZSB0YXJnZXQgaXMgYSBwbGFpbiBvYmplY3RcbiAgZm9yIChrIGluIGl0ZXJhYmxlKSB7XG4gICAgaWYgKGl0ZXJhYmxlLmhhc093blByb3BlcnR5KGspKSB7XG4gICAgICBjYWxsYmFjayhpdGVyYWJsZVtrXSwgayk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuO1xufTtcbiIsICIvKipcbiAqIE1uZW1vbmlzdCBUeXBlZCBBcnJheSBIZWxwZXJzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqXG4gKiBNaXNjZWxsYW5lb3VzIGhlbHBlcnMgcmVsYXRlZCB0byB0eXBlZCBhcnJheXMuXG4gKi9cblxuLyoqXG4gKiBXaGVuIHVzaW5nIGFuIHVuc2lnbmVkIGludGVnZXIgYXJyYXkgdG8gc3RvcmUgcG9pbnRlcnMsIG9uZSBtaWdodCB3YW50IHRvXG4gKiBjaG9vc2UgdGhlIG9wdGltYWwgd29yZCBzaXplIGluIHJlZ2FyZHMgdG8gdGhlIGFjdHVhbCBudW1iZXJzIG9mIHBvaW50ZXJzXG4gKiB0byBzdG9yZS5cbiAqXG4gKiBUaGlzIGhlbHBlcnMgZG9lcyBqdXN0IHRoYXQuXG4gKlxuICogQHBhcmFtICB7bnVtYmVyfSBzaXplIC0gRXhwZWN0ZWQgc2l6ZSBvZiB0aGUgYXJyYXkgdG8gbWFwLlxuICogQHJldHVybiB7VHlwZWRBcnJheX1cbiAqL1xudmFyIE1BWF84QklUX0lOVEVHRVIgPSBNYXRoLnBvdygyLCA4KSAtIDEsXG4gICAgTUFYXzE2QklUX0lOVEVHRVIgPSBNYXRoLnBvdygyLCAxNikgLSAxLFxuICAgIE1BWF8zMkJJVF9JTlRFR0VSID0gTWF0aC5wb3coMiwgMzIpIC0gMTtcblxudmFyIE1BWF9TSUdORURfOEJJVF9JTlRFR0VSID0gTWF0aC5wb3coMiwgNykgLSAxLFxuICAgIE1BWF9TSUdORURfMTZCSVRfSU5URUdFUiA9IE1hdGgucG93KDIsIDE1KSAtIDEsXG4gICAgTUFYX1NJR05FRF8zMkJJVF9JTlRFR0VSID0gTWF0aC5wb3coMiwgMzEpIC0gMTtcblxuZXhwb3J0cy5nZXRQb2ludGVyQXJyYXkgPSBmdW5jdGlvbihzaXplKSB7XG4gIHZhciBtYXhJbmRleCA9IHNpemUgLSAxO1xuXG4gIGlmIChtYXhJbmRleCA8PSBNQVhfOEJJVF9JTlRFR0VSKVxuICAgIHJldHVybiBVaW50OEFycmF5O1xuXG4gIGlmIChtYXhJbmRleCA8PSBNQVhfMTZCSVRfSU5URUdFUilcbiAgICByZXR1cm4gVWludDE2QXJyYXk7XG5cbiAgaWYgKG1heEluZGV4IDw9IE1BWF8zMkJJVF9JTlRFR0VSKVxuICAgIHJldHVybiBVaW50MzJBcnJheTtcblxuICB0aHJvdyBuZXcgRXJyb3IoJ21uZW1vbmlzdDogUG9pbnRlciBBcnJheSBvZiBzaXplID4gNDI5NDk2NzI5NSBpcyBub3Qgc3VwcG9ydGVkLicpO1xufTtcblxuZXhwb3J0cy5nZXRTaWduZWRQb2ludGVyQXJyYXkgPSBmdW5jdGlvbihzaXplKSB7XG4gIHZhciBtYXhJbmRleCA9IHNpemUgLSAxO1xuXG4gIGlmIChtYXhJbmRleCA8PSBNQVhfU0lHTkVEXzhCSVRfSU5URUdFUilcbiAgICByZXR1cm4gSW50OEFycmF5O1xuXG4gIGlmIChtYXhJbmRleCA8PSBNQVhfU0lHTkVEXzE2QklUX0lOVEVHRVIpXG4gICAgcmV0dXJuIEludDE2QXJyYXk7XG5cbiAgaWYgKG1heEluZGV4IDw9IE1BWF9TSUdORURfMzJCSVRfSU5URUdFUilcbiAgICByZXR1cm4gSW50MzJBcnJheTtcblxuICByZXR1cm4gRmxvYXQ2NEFycmF5O1xufTtcblxuLyoqXG4gKiBGdW5jdGlvbiByZXR1cm5pbmcgdGhlIG1pbmltYWwgdHlwZSBhYmxlIHRvIHJlcHJlc2VudCB0aGUgZ2l2ZW4gbnVtYmVyLlxuICpcbiAqIEBwYXJhbSAge251bWJlcn0gdmFsdWUgLSBWYWx1ZSB0byB0ZXN0LlxuICogQHJldHVybiB7VHlwZWRBcnJheUNsYXNzfVxuICovXG5leHBvcnRzLmdldE51bWJlclR5cGUgPSBmdW5jdGlvbih2YWx1ZSkge1xuXG4gIC8vIDw9IDMyIGJpdHMgaXRudGVnZXI/XG4gIGlmICh2YWx1ZSA9PT0gKHZhbHVlIHwgMCkpIHtcblxuICAgIC8vIE5lZ2F0aXZlXG4gICAgaWYgKE1hdGguc2lnbih2YWx1ZSkgPT09IC0xKSB7XG4gICAgICBpZiAodmFsdWUgPD0gMTI3ICYmIHZhbHVlID49IC0xMjgpXG4gICAgICAgIHJldHVybiBJbnQ4QXJyYXk7XG5cbiAgICAgIGlmICh2YWx1ZSA8PSAzMjc2NyAmJiB2YWx1ZSA+PSAtMzI3NjgpXG4gICAgICAgIHJldHVybiBJbnQxNkFycmF5O1xuXG4gICAgICByZXR1cm4gSW50MzJBcnJheTtcbiAgICB9XG4gICAgZWxzZSB7XG5cbiAgICAgIGlmICh2YWx1ZSA8PSAyNTUpXG4gICAgICAgIHJldHVybiBVaW50OEFycmF5O1xuXG4gICAgICBpZiAodmFsdWUgPD0gNjU1MzUpXG4gICAgICAgIHJldHVybiBVaW50MTZBcnJheTtcblxuICAgICAgcmV0dXJuIFVpbnQzMkFycmF5O1xuICAgIH1cbiAgfVxuXG4gIC8vIDUzIGJpdHMgaW50ZWdlciAmIGZsb2F0c1xuICAvLyBOT1RFOiBpdCdzIGtpbmRhIGhhcmQgdG8gdGVsbCB3aGV0aGVyIHdlIGNvdWxkIHVzZSAzMmJpdHMgb3Igbm90Li4uXG4gIHJldHVybiBGbG9hdDY0QXJyYXk7XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHJldHVybmluZyB0aGUgbWluaW1hbCB0eXBlIGFibGUgdG8gcmVwcmVzZW50IHRoZSBnaXZlbiBhcnJheVxuICogb2YgSmF2YVNjcmlwdCBudW1iZXJzLlxuICpcbiAqIEBwYXJhbSAge2FycmF5fSAgICBhcnJheSAgLSBBcnJheSB0byByZXByZXNlbnQuXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gZ2V0dGVyIC0gT3B0aW9uYWwgZ2V0dGVyLlxuICogQHJldHVybiB7VHlwZWRBcnJheUNsYXNzfVxuICovXG52YXIgVFlQRV9QUklPUklUWSA9IHtcbiAgVWludDhBcnJheTogMSxcbiAgSW50OEFycmF5OiAyLFxuICBVaW50MTZBcnJheTogMyxcbiAgSW50MTZBcnJheTogNCxcbiAgVWludDMyQXJyYXk6IDUsXG4gIEludDMyQXJyYXk6IDYsXG4gIEZsb2F0MzJBcnJheTogNyxcbiAgRmxvYXQ2NEFycmF5OiA4XG59O1xuXG4vLyBUT0RPOiBtYWtlIHRoaXMgYSBvbmUtc2hvdCBmb3Igb25lIHZhbHVlXG5leHBvcnRzLmdldE1pbmltYWxSZXByZXNlbnRhdGlvbiA9IGZ1bmN0aW9uKGFycmF5LCBnZXR0ZXIpIHtcbiAgdmFyIG1heFR5cGUgPSBudWxsLFxuICAgICAgbWF4UHJpb3JpdHkgPSAwLFxuICAgICAgcCxcbiAgICAgIHQsXG4gICAgICB2LFxuICAgICAgaSxcbiAgICAgIGw7XG5cbiAgZm9yIChpID0gMCwgbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHYgPSBnZXR0ZXIgPyBnZXR0ZXIoYXJyYXlbaV0pIDogYXJyYXlbaV07XG4gICAgdCA9IGV4cG9ydHMuZ2V0TnVtYmVyVHlwZSh2KTtcbiAgICBwID0gVFlQRV9QUklPUklUWVt0Lm5hbWVdO1xuXG4gICAgaWYgKHAgPiBtYXhQcmlvcml0eSkge1xuICAgICAgbWF4UHJpb3JpdHkgPSBwO1xuICAgICAgbWF4VHlwZSA9IHQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1heFR5cGU7XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHJldHVybmluZyB3aGV0aGVyIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBwYXJhbSAge2FueX0gdmFsdWUgLSBWYWx1ZSB0byB0ZXN0LlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0cy5pc1R5cGVkQXJyYXkgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiBBcnJheUJ1ZmZlci5pc1ZpZXcodmFsdWUpO1xufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB1c2VkIHRvIGNvbmNhdCBieXRlIGFycmF5cy5cbiAqXG4gKiBAcGFyYW0gIHsuLi5CeXRlQXJyYXl9XG4gKiBAcmV0dXJuIHtCeXRlQXJyYXl9XG4gKi9cbmV4cG9ydHMuY29uY2F0ID0gZnVuY3Rpb24oKSB7XG4gIHZhciBsZW5ndGggPSAwLFxuICAgICAgaSxcbiAgICAgIG8sXG4gICAgICBsO1xuXG4gIGZvciAoaSA9IDAsIGwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKVxuICAgIGxlbmd0aCArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xuXG4gIHZhciBhcnJheSA9IG5ldyAoYXJndW1lbnRzWzBdLmNvbnN0cnVjdG9yKShsZW5ndGgpO1xuXG4gIGZvciAoaSA9IDAsIG8gPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgYXJyYXkuc2V0KGFyZ3VtZW50c1tpXSwgbyk7XG4gICAgbyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIGFycmF5O1xufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB1c2VkIHRvIGluaXRpYWxpemUgYSBieXRlIGFycmF5IG9mIGluZGljZXMuXG4gKlxuICogQHBhcmFtICB7bnVtYmVyfSAgICBsZW5ndGggLSBMZW5ndGggb2YgdGFyZ2V0LlxuICogQHJldHVybiB7Qnl0ZUFycmF5fVxuICovXG5leHBvcnRzLmluZGljZXMgPSBmdW5jdGlvbihsZW5ndGgpIHtcbiAgdmFyIFBvaW50ZXJBcnJheSA9IGV4cG9ydHMuZ2V0UG9pbnRlckFycmF5KGxlbmd0aCk7XG5cbiAgdmFyIGFycmF5ID0gbmV3IFBvaW50ZXJBcnJheShsZW5ndGgpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspXG4gICAgYXJyYXlbaV0gPSBpO1xuXG4gIHJldHVybiBhcnJheTtcbn07XG4iLCAiLyoqXG4gKiBNbmVtb25pc3QgSXRlcmFibGUgRnVuY3Rpb25cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqXG4gKiBIYXJtb25pemVkIGl0ZXJhdGlvbiBoZWxwZXJzIG92ZXIgbWl4ZWQgaXRlcmFibGUgdGFyZ2V0cy5cbiAqL1xudmFyIGZvckVhY2ggPSByZXF1aXJlKCdvYmxpdGVyYXRvci9mb3JlYWNoJyk7XG5cbnZhciB0eXBlZCA9IHJlcXVpcmUoJy4vdHlwZWQtYXJyYXlzLmpzJyk7XG5cbi8qKlxuICogRnVuY3Rpb24gdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IHN1cHBvcnRzIGFycmF5LWxpa2VcbiAqIHJhbmRvbSBhY2Nlc3MuXG4gKlxuICogQHBhcmFtICB7YW55fSB0YXJnZXQgLSBUYXJnZXQgb2JqZWN0LlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodGFyZ2V0KSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHRhcmdldCkgfHwgdHlwZWQuaXNUeXBlZEFycmF5KHRhcmdldCk7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gdXNlZCB0byBndWVzcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJ1Y3R1cmUgb3ZlciB3aGljaCB3ZSBhcmUgZ29pbmdcbiAqIHRvIGl0ZXJhdGUuXG4gKlxuICogQHBhcmFtICB7YW55fSB0YXJnZXQgLSBUYXJnZXQgb2JqZWN0LlxuICogQHJldHVybiB7bnVtYmVyfHVuZGVmaW5lZH1cbiAqL1xuZnVuY3Rpb24gZ3Vlc3NMZW5ndGgodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgdGFyZ2V0Lmxlbmd0aCA9PT0gJ251bWJlcicpXG4gICAgcmV0dXJuIHRhcmdldC5sZW5ndGg7XG5cbiAgaWYgKHR5cGVvZiB0YXJnZXQuc2l6ZSA9PT0gJ251bWJlcicpXG4gICAgcmV0dXJuIHRhcmdldC5zaXplO1xuXG4gIHJldHVybjtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiB1c2VkIHRvIGNvbnZlcnQgYW4gaXRlcmFibGUgdG8gYW4gYXJyYXkuXG4gKlxuICogQHBhcmFtICB7YW55fSAgIHRhcmdldCAtIEl0ZXJhdGlvbiB0YXJnZXQuXG4gKiBAcmV0dXJuIHthcnJheX1cbiAqL1xuZnVuY3Rpb24gdG9BcnJheSh0YXJnZXQpIHtcbiAgdmFyIGwgPSBndWVzc0xlbmd0aCh0YXJnZXQpO1xuXG4gIHZhciBhcnJheSA9IHR5cGVvZiBsID09PSAnbnVtYmVyJyA/IG5ldyBBcnJheShsKSA6IFtdO1xuXG4gIHZhciBpID0gMDtcblxuICAvLyBUT0RPOiB3ZSBjb3VsZCBvcHRpbWl6ZSB3aGVuIGdpdmVuIHRhcmdldCBpcyBhcnJheSBsaWtlXG4gIGZvckVhY2godGFyZ2V0LCBmdW5jdGlvbih2YWx1ZSkge1xuICAgIGFycmF5W2krK10gPSB2YWx1ZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGFycmF5O1xufVxuXG4vKipcbiAqIFNhbWUgYXMgYWJvdmUgYnV0IHJldHVybnMgYSBzdXBwbGVtZW50YXJ5IGluZGljZXMgYXJyYXkuXG4gKlxuICogQHBhcmFtICB7YW55fSAgIHRhcmdldCAtIEl0ZXJhdGlvbiB0YXJnZXQuXG4gKiBAcmV0dXJuIHthcnJheX1cbiAqL1xuZnVuY3Rpb24gdG9BcnJheVdpdGhJbmRpY2VzKHRhcmdldCkge1xuICB2YXIgbCA9IGd1ZXNzTGVuZ3RoKHRhcmdldCk7XG5cbiAgdmFyIEluZGV4QXJyYXkgPSB0eXBlb2YgbCA9PT0gJ251bWJlcicgP1xuICAgIHR5cGVkLmdldFBvaW50ZXJBcnJheShsKSA6XG4gICAgQXJyYXk7XG5cbiAgdmFyIGFycmF5ID0gdHlwZW9mIGwgPT09ICdudW1iZXInID8gbmV3IEFycmF5KGwpIDogW107XG4gIHZhciBpbmRpY2VzID0gdHlwZW9mIGwgPT09ICdudW1iZXInID8gbmV3IEluZGV4QXJyYXkobCkgOiBbXTtcblxuICB2YXIgaSA9IDA7XG5cbiAgLy8gVE9ETzogd2UgY291bGQgb3B0aW1pemUgd2hlbiBnaXZlbiB0YXJnZXQgaXMgYXJyYXkgbGlrZVxuICBmb3JFYWNoKHRhcmdldCwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICBhcnJheVtpXSA9IHZhbHVlO1xuICAgIGluZGljZXNbaV0gPSBpKys7XG4gIH0pO1xuXG4gIHJldHVybiBbYXJyYXksIGluZGljZXNdO1xufVxuXG4vKipcbiAqIEV4cG9ydGluZy5cbiAqL1xuZXhwb3J0cy5pc0FycmF5TGlrZSA9IGlzQXJyYXlMaWtlO1xuZXhwb3J0cy5ndWVzc0xlbmd0aCA9IGd1ZXNzTGVuZ3RoO1xuZXhwb3J0cy50b0FycmF5ID0gdG9BcnJheTtcbmV4cG9ydHMudG9BcnJheVdpdGhJbmRpY2VzID0gdG9BcnJheVdpdGhJbmRpY2VzO1xuIiwgIi8qKlxuICogT2JsaXRlcmF0b3IgSXRlcmF0b3IgQ2xhc3NcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIFNpbXBsZSBjbGFzcyByZXByZXNlbnRpbmcgdGhlIGxpYnJhcnkncyBpdGVyYXRvcnMuXG4gKi9cblxuLyoqXG4gKiBJdGVyYXRvciBjbGFzcy5cbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IG5leHQgLSBOZXh0IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBJdGVyYXRvcihuZXh0KSB7XG4gIGlmICh0eXBlb2YgbmV4dCAhPT0gJ2Z1bmN0aW9uJylcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ29ibGl0ZXJhdG9yL2l0ZXJhdG9yOiBleHBlY3RpbmcgYSBmdW5jdGlvbiEnKTtcblxuICB0aGlzLm5leHQgPSBuZXh0O1xufVxuXG4vKipcbiAqIElmIHN5bWJvbHMgYXJlIHN1cHBvcnRlZCwgd2UgYWRkIGBuZXh0YCB0byBgU3ltYm9sLml0ZXJhdG9yYC5cbiAqL1xuaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnKVxuICBJdGVyYXRvci5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5pbmcgYW4gaXRlcmF0b3Igb2YgdGhlIGdpdmVuIHZhbHVlcy5cbiAqXG4gKiBAcGFyYW0gIHthbnkuLi59IHZhbHVlcyAtIFZhbHVlcy5cbiAqIEByZXR1cm4ge0l0ZXJhdG9yfVxuICovXG5JdGVyYXRvci5vZiA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgbCA9IGFyZ3MubGVuZ3RoLFxuICAgIGkgPSAwO1xuXG4gIHJldHVybiBuZXcgSXRlcmF0b3IoZnVuY3Rpb24gKCkge1xuICAgIGlmIChpID49IGwpIHJldHVybiB7ZG9uZTogdHJ1ZX07XG5cbiAgICByZXR1cm4ge2RvbmU6IGZhbHNlLCB2YWx1ZTogYXJnc1tpKytdfTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIFJldHVybmluZyBhbiBlbXB0eSBpdGVyYXRvci5cbiAqXG4gKiBAcmV0dXJuIHtJdGVyYXRvcn1cbiAqL1xuSXRlcmF0b3IuZW1wdHkgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBpdGVyYXRvciA9IG5ldyBJdGVyYXRvcihmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtkb25lOiB0cnVlfTtcbiAgfSk7XG5cbiAgcmV0dXJuIGl0ZXJhdG9yO1xufTtcblxuLyoqXG4gKiBSZXR1cm5pbmcgYW4gaXRlcmF0b3Igb3ZlciB0aGUgZ2l2ZW4gaW5kZXhlZCBzZXF1ZW5jZS5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd8QXJyYXl9IHNlcXVlbmNlIC0gVGFyZ2V0IHNlcXVlbmNlLlxuICogQHJldHVybiB7SXRlcmF0b3J9XG4gKi9cbkl0ZXJhdG9yLmZyb21TZXF1ZW5jZSA9IGZ1bmN0aW9uIChzZXF1ZW5jZSkge1xuICB2YXIgaSA9IDAsXG4gICAgbCA9IHNlcXVlbmNlLmxlbmd0aDtcblxuICByZXR1cm4gbmV3IEl0ZXJhdG9yKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoaSA+PSBsKSByZXR1cm4ge2RvbmU6IHRydWV9O1xuXG4gICAgcmV0dXJuIHtkb25lOiBmYWxzZSwgdmFsdWU6IHNlcXVlbmNlW2krK119O1xuICB9KTtcbn07XG5cbi8qKlxuICogUmV0dXJuaW5nIHdoZXRoZXIgdGhlIGdpdmVuIHZhbHVlIGlzIGFuIGl0ZXJhdG9yLlxuICpcbiAqIEBwYXJhbSAge2FueX0gdmFsdWUgLSBWYWx1ZS5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbkl0ZXJhdG9yLmlzID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEl0ZXJhdG9yKSByZXR1cm4gdHJ1ZTtcblxuICByZXR1cm4gKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgIHR5cGVvZiB2YWx1ZS5uZXh0ID09PSAnZnVuY3Rpb24nXG4gICk7XG59O1xuXG4vKipcbiAqIEV4cG9ydGluZy5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBJdGVyYXRvcjtcbiIsICIvKipcbiAqIE1uZW1vbmlzdCBGaXhlZERlcXVlXG4gKiA9PT09PT09PT09PT09PT09PT09PT1cbiAqXG4gKiBGaXhlZCBjYXBhY2l0eSBkb3VibGUtZW5kZWQgcXVldWUgaW1wbGVtZW50ZWQgYXMgcmluZyBkZXF1ZS5cbiAqL1xudmFyIGl0ZXJhYmxlcyA9IHJlcXVpcmUoJy4vdXRpbHMvaXRlcmFibGVzLmpzJyksXG4gICAgSXRlcmF0b3IgPSByZXF1aXJlKCdvYmxpdGVyYXRvci9pdGVyYXRvcicpO1xuXG4vKipcbiAqIEZpeGVkRGVxdWUuXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmZ1bmN0aW9uIEZpeGVkRGVxdWUoQXJyYXlDbGFzcywgY2FwYWNpdHkpIHtcblxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdtbmVtb25pc3QvZml4ZWQtZGVxdWU6IGV4cGVjdGluZyBhbiBBcnJheSBjbGFzcyBhbmQgYSBjYXBhY2l0eS4nKTtcblxuICBpZiAodHlwZW9mIGNhcGFjaXR5ICE9PSAnbnVtYmVyJyB8fCBjYXBhY2l0eSA8PSAwKVxuICAgIHRocm93IG5ldyBFcnJvcignbW5lbW9uaXN0L2ZpeGVkLWRlcXVlOiBgY2FwYWNpdHlgIHNob3VsZCBiZSBhIHBvc2l0aXZlIG51bWJlci4nKTtcblxuICB0aGlzLkFycmF5Q2xhc3MgPSBBcnJheUNsYXNzO1xuICB0aGlzLmNhcGFjaXR5ID0gY2FwYWNpdHk7XG4gIHRoaXMuaXRlbXMgPSBuZXcgQXJyYXlDbGFzcyh0aGlzLmNhcGFjaXR5KTtcbiAgdGhpcy5jbGVhcigpO1xufVxuXG4vKipcbiAqIE1ldGhvZCB1c2VkIHRvIGNsZWFyIHRoZSBzdHJ1Y3R1cmUuXG4gKlxuICogQHJldHVybiB7dW5kZWZpbmVkfVxuICovXG5GaXhlZERlcXVlLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkge1xuXG4gIC8vIFByb3BlcnRpZXNcbiAgdGhpcy5zdGFydCA9IDA7XG4gIHRoaXMuc2l6ZSA9IDA7XG59O1xuXG4vKipcbiAqIE1ldGhvZCB1c2VkIHRvIGFwcGVuZCBhIHZhbHVlIHRvIHRoZSBkZXF1ZS5cbiAqXG4gKiBAcGFyYW0gIHthbnl9ICAgIGl0ZW0gLSBJdGVtIHRvIGFwcGVuZC5cbiAqIEByZXR1cm4ge251bWJlcn0gICAgICAtIFJldHVybnMgdGhlIG5ldyBzaXplIG9mIHRoZSBkZXF1ZS5cbiAqL1xuRml4ZWREZXF1ZS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uKGl0ZW0pIHtcbiAgaWYgKHRoaXMuc2l6ZSA9PT0gdGhpcy5jYXBhY2l0eSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21uZW1vbmlzdC9maXhlZC1kZXF1ZS5wdXNoOiBkZXF1ZSBjYXBhY2l0eSAoJyArIHRoaXMuY2FwYWNpdHkgKyAnKSBleGNlZWRlZCEnKTtcblxuICB2YXIgaW5kZXggPSAodGhpcy5zdGFydCArIHRoaXMuc2l6ZSkgJSB0aGlzLmNhcGFjaXR5O1xuXG4gIHRoaXMuaXRlbXNbaW5kZXhdID0gaXRlbTtcblxuICByZXR1cm4gKyt0aGlzLnNpemU7XG59O1xuXG4vKipcbiAqIE1ldGhvZCB1c2VkIHRvIHByZXBlbmQgYSB2YWx1ZSB0byB0aGUgZGVxdWUuXG4gKlxuICogQHBhcmFtICB7YW55fSAgICBpdGVtIC0gSXRlbSB0byBwcmVwZW5kLlxuICogQHJldHVybiB7bnVtYmVyfSAgICAgIC0gUmV0dXJucyB0aGUgbmV3IHNpemUgb2YgdGhlIGRlcXVlLlxuICovXG5GaXhlZERlcXVlLnByb3RvdHlwZS51bnNoaWZ0ID0gZnVuY3Rpb24oaXRlbSkge1xuICBpZiAodGhpcy5zaXplID09PSB0aGlzLmNhcGFjaXR5KVxuICAgIHRocm93IG5ldyBFcnJvcignbW5lbW9uaXN0L2ZpeGVkLWRlcXVlLnVuc2hpZnQ6IGRlcXVlIGNhcGFjaXR5ICgnICsgdGhpcy5jYXBhY2l0eSArICcpIGV4Y2VlZGVkIScpO1xuXG4gIHZhciBpbmRleCA9IHRoaXMuc3RhcnQgLSAxO1xuXG4gIGlmICh0aGlzLnN0YXJ0ID09PSAwKVxuICAgIGluZGV4ID0gdGhpcy5jYXBhY2l0eSAtIDE7XG5cbiAgdGhpcy5pdGVtc1tpbmRleF0gPSBpdGVtO1xuICB0aGlzLnN0YXJ0ID0gaW5kZXg7XG5cbiAgcmV0dXJuICsrdGhpcy5zaXplO1xufTtcblxuLyoqXG4gKiBNZXRob2QgdXNlZCB0byBwb3AgdGhlIGRlcXVlLlxuICpcbiAqIEByZXR1cm4ge2FueX0gLSBSZXR1cm5zIHRoZSBwb3BwZWQgaXRlbS5cbiAqL1xuRml4ZWREZXF1ZS5wcm90b3R5cGUucG9wID0gZnVuY3Rpb24oKSB7XG4gIGlmICh0aGlzLnNpemUgPT09IDApXG4gICAgcmV0dXJuO1xuXG4gIGNvbnN0IGluZGV4ID0gKHRoaXMuc3RhcnQgKyB0aGlzLnNpemUgLSAxKSAlIHRoaXMuY2FwYWNpdHk7XG5cbiAgdGhpcy5zaXplLS07XG5cbiAgcmV0dXJuIHRoaXMuaXRlbXNbaW5kZXhdO1xufTtcblxuLyoqXG4gKiBNZXRob2QgdXNlZCB0byBzaGlmdCB0aGUgZGVxdWUuXG4gKlxuICogQHJldHVybiB7YW55fSAtIFJldHVybnMgdGhlIHNoaWZ0ZWQgaXRlbS5cbiAqL1xuRml4ZWREZXF1ZS5wcm90b3R5cGUuc2hpZnQgPSBmdW5jdGlvbigpIHtcbiAgaWYgKHRoaXMuc2l6ZSA9PT0gMClcbiAgICByZXR1cm47XG5cbiAgdmFyIGluZGV4ID0gdGhpcy5zdGFydDtcblxuICB0aGlzLnNpemUtLTtcbiAgdGhpcy5zdGFydCsrO1xuXG4gIGlmICh0aGlzLnN0YXJ0ID09PSB0aGlzLmNhcGFjaXR5KVxuICAgIHRoaXMuc3RhcnQgPSAwO1xuXG4gIHJldHVybiB0aGlzLml0ZW1zW2luZGV4XTtcbn07XG5cbi8qKlxuICogTWV0aG9kIHVzZWQgdG8gcGVlayB0aGUgZmlyc3QgdmFsdWUgb2YgdGhlIGRlcXVlLlxuICpcbiAqIEByZXR1cm4ge2FueX1cbiAqL1xuRml4ZWREZXF1ZS5wcm90b3R5cGUucGVla0ZpcnN0ID0gZnVuY3Rpb24oKSB7XG4gIGlmICh0aGlzLnNpemUgPT09IDApXG4gICAgcmV0dXJuO1xuXG4gIHJldHVybiB0aGlzLml0ZW1zW3RoaXMuc3RhcnRdO1xufTtcblxuLyoqXG4gKiBNZXRob2QgdXNlZCB0byBwZWVrIHRoZSBsYXN0IHZhbHVlIG9mIHRoZSBkZXF1ZS5cbiAqXG4gKiBAcmV0dXJuIHthbnl9XG4gKi9cbkZpeGVkRGVxdWUucHJvdG90eXBlLnBlZWtMYXN0ID0gZnVuY3Rpb24oKSB7XG4gIGlmICh0aGlzLnNpemUgPT09IDApXG4gICAgcmV0dXJuO1xuXG4gIHZhciBpbmRleCA9IHRoaXMuc3RhcnQgKyB0aGlzLnNpemUgLSAxO1xuXG4gIGlmIChpbmRleCA+IHRoaXMuY2FwYWNpdHkpXG4gICAgaW5kZXggLT0gdGhpcy5jYXBhY2l0eTtcblxuICByZXR1cm4gdGhpcy5pdGVtc1tpbmRleF07XG59O1xuXG4vKipcbiAqIE1ldGhvZCB1c2VkIHRvIGdldCB0aGUgZGVzaXJlZCB2YWx1ZSBvZiB0aGUgZGVxdWUuXG4gKlxuICogQHBhcmFtICB7bnVtYmVyfSBpbmRleFxuICogQHJldHVybiB7YW55fVxuICovXG5GaXhlZERlcXVlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihpbmRleCkge1xuICBpZiAodGhpcy5zaXplID09PSAwKVxuICAgIHJldHVybjtcblxuICBpbmRleCA9IHRoaXMuc3RhcnQgKyBpbmRleDtcblxuICBpZiAoaW5kZXggPiB0aGlzLmNhcGFjaXR5KVxuICAgIGluZGV4IC09IHRoaXMuY2FwYWNpdHk7XG5cbiAgcmV0dXJuIHRoaXMuaXRlbXNbaW5kZXhdO1xufTtcblxuLyoqXG4gKiBNZXRob2QgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGRlcXVlLlxuICpcbiAqIEBwYXJhbSAge2Z1bmN0aW9ufSAgY2FsbGJhY2sgLSBGdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIGl0ZW0uXG4gKiBAcGFyYW0gIHtvYmplY3R9ICAgIHNjb3BlICAgIC0gT3B0aW9uYWwgc2NvcGUuXG4gKiBAcmV0dXJuIHt1bmRlZmluZWR9XG4gKi9cbkZpeGVkRGVxdWUucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihjYWxsYmFjaywgc2NvcGUpIHtcbiAgc2NvcGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHNjb3BlIDogdGhpcztcblxuICB2YXIgYyA9IHRoaXMuY2FwYWNpdHksXG4gICAgICBsID0gdGhpcy5zaXplLFxuICAgICAgaSA9IHRoaXMuc3RhcnQsXG4gICAgICBqID0gMDtcblxuICB3aGlsZSAoaiA8IGwpIHtcbiAgICBjYWxsYmFjay5jYWxsKHNjb3BlLCB0aGlzLml0ZW1zW2ldLCBqLCB0aGlzKTtcbiAgICBpKys7XG4gICAgaisrO1xuXG4gICAgaWYgKGkgPT09IGMpXG4gICAgICBpID0gMDtcbiAgfVxufTtcblxuLyoqXG4gKiBNZXRob2QgdXNlZCB0byBjb252ZXJ0IHRoZSBkZXF1ZSB0byBhIEphdmFTY3JpcHQgYXJyYXkuXG4gKlxuICogQHJldHVybiB7YXJyYXl9XG4gKi9cbi8vIFRPRE86IG9wdGlvbmFsIGFycmF5IGNsYXNzIGFzIGFyZ3VtZW50P1xuRml4ZWREZXF1ZS5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uKCkge1xuXG4gIC8vIE9wdGltaXphdGlvblxuICB2YXIgb2Zmc2V0ID0gdGhpcy5zdGFydCArIHRoaXMuc2l6ZTtcblxuICBpZiAob2Zmc2V0IDwgdGhpcy5jYXBhY2l0eSlcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5zbGljZSh0aGlzLnN0YXJ0LCBvZmZzZXQpO1xuXG4gIHZhciBhcnJheSA9IG5ldyB0aGlzLkFycmF5Q2xhc3ModGhpcy5zaXplKSxcbiAgICAgIGMgPSB0aGlzLmNhcGFjaXR5LFxuICAgICAgbCA9IHRoaXMuc2l6ZSxcbiAgICAgIGkgPSB0aGlzLnN0YXJ0LFxuICAgICAgaiA9IDA7XG5cbiAgd2hpbGUgKGogPCBsKSB7XG4gICAgYXJyYXlbal0gPSB0aGlzLml0ZW1zW2ldO1xuICAgIGkrKztcbiAgICBqKys7XG5cbiAgICBpZiAoaSA9PT0gYylcbiAgICAgIGkgPSAwO1xuICB9XG5cbiAgcmV0dXJuIGFycmF5O1xufTtcblxuLyoqXG4gKiBNZXRob2QgdXNlZCB0byBjcmVhdGUgYW4gaXRlcmF0b3Igb3ZlciB0aGUgZGVxdWUncyB2YWx1ZXMuXG4gKlxuICogQHJldHVybiB7SXRlcmF0b3J9XG4gKi9cbkZpeGVkRGVxdWUucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSB0aGlzLml0ZW1zLFxuICAgICAgYyA9IHRoaXMuY2FwYWNpdHksXG4gICAgICBsID0gdGhpcy5zaXplLFxuICAgICAgaSA9IHRoaXMuc3RhcnQsXG4gICAgICBqID0gMDtcblxuICByZXR1cm4gbmV3IEl0ZXJhdG9yKGZ1bmN0aW9uKCkge1xuICAgIGlmIChqID49IGwpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkb25lOiB0cnVlXG4gICAgICB9O1xuXG4gICAgdmFyIHZhbHVlID0gaXRlbXNbaV07XG5cbiAgICBpKys7XG4gICAgaisrO1xuXG4gICAgaWYgKGkgPT09IGMpXG4gICAgICBpID0gMDtcblxuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBkb25lOiBmYWxzZVxuICAgIH07XG4gIH0pO1xufTtcblxuLyoqXG4gKiBNZXRob2QgdXNlZCB0byBjcmVhdGUgYW4gaXRlcmF0b3Igb3ZlciB0aGUgZGVxdWUncyBlbnRyaWVzLlxuICpcbiAqIEByZXR1cm4ge0l0ZXJhdG9yfVxuICovXG5GaXhlZERlcXVlLnByb3RvdHlwZS5lbnRyaWVzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IHRoaXMuaXRlbXMsXG4gICAgICBjID0gdGhpcy5jYXBhY2l0eSxcbiAgICAgIGwgPSB0aGlzLnNpemUsXG4gICAgICBpID0gdGhpcy5zdGFydCxcbiAgICAgIGogPSAwO1xuXG4gIHJldHVybiBuZXcgSXRlcmF0b3IoZnVuY3Rpb24oKSB7XG4gICAgaWYgKGogPj0gbClcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRvbmU6IHRydWVcbiAgICAgIH07XG5cbiAgICB2YXIgdmFsdWUgPSBpdGVtc1tpXTtcblxuICAgIGkrKztcblxuICAgIGlmIChpID09PSBjKVxuICAgICAgaSA9IDA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IFtqKyssIHZhbHVlXSxcbiAgICAgIGRvbmU6IGZhbHNlXG4gICAgfTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIEF0dGFjaGluZyB0aGUgIy52YWx1ZXMgbWV0aG9kIHRvIFN5bWJvbC5pdGVyYXRvciBpZiBwb3NzaWJsZS5cbiAqL1xuaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnKVxuICBGaXhlZERlcXVlLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdID0gRml4ZWREZXF1ZS5wcm90b3R5cGUudmFsdWVzO1xuXG4vKipcbiAqIENvbnZlbmllbmNlIGtub3duIG1ldGhvZHMuXG4gKi9cbkZpeGVkRGVxdWUucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGFycmF5ID0gdGhpcy50b0FycmF5KCk7XG5cbiAgYXJyYXkudHlwZSA9IHRoaXMuQXJyYXlDbGFzcy5uYW1lO1xuICBhcnJheS5jYXBhY2l0eSA9IHRoaXMuY2FwYWNpdHk7XG5cbiAgLy8gVHJpY2sgc28gdGhhdCBub2RlIGRpc3BsYXlzIHRoZSBuYW1lIG9mIHRoZSBjb25zdHJ1Y3RvclxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXJyYXksICdjb25zdHJ1Y3RvcicsIHtcbiAgICB2YWx1ZTogRml4ZWREZXF1ZSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICB9KTtcblxuICByZXR1cm4gYXJyYXk7XG59O1xuXG5pZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcpXG4gIEZpeGVkRGVxdWUucHJvdG90eXBlW1N5bWJvbC5mb3IoJ25vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tJyldID0gRml4ZWREZXF1ZS5wcm90b3R5cGUuaW5zcGVjdDtcblxuLyoqXG4gKiBTdGF0aWMgQC5mcm9tIGZ1bmN0aW9uIHRha2luZyBhbiBhcmJpdHJhcnkgaXRlcmFibGUgJiBjb252ZXJ0aW5nIGl0IGludG9cbiAqIGEgZGVxdWUuXG4gKlxuICogQHBhcmFtICB7SXRlcmFibGV9IGl0ZXJhYmxlICAgLSBUYXJnZXQgaXRlcmFibGUuXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gQXJyYXlDbGFzcyAtIEFycmF5IGNsYXNzIHRvIHVzZS5cbiAqIEBwYXJhbSAge251bWJlcn0gICBjYXBhY2l0eSAgIC0gRGVzaXJlZCBjYXBhY2l0eS5cbiAqIEByZXR1cm4ge0Zpbml0ZVN0YWNrfVxuICovXG5GaXhlZERlcXVlLmZyb20gPSBmdW5jdGlvbihpdGVyYWJsZSwgQXJyYXlDbGFzcywgY2FwYWNpdHkpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAzKSB7XG4gICAgY2FwYWNpdHkgPSBpdGVyYWJsZXMuZ3Vlc3NMZW5ndGgoaXRlcmFibGUpO1xuXG4gICAgaWYgKHR5cGVvZiBjYXBhY2l0eSAhPT0gJ251bWJlcicpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21uZW1vbmlzdC9maXhlZC1kZXF1ZS5mcm9tOiBjb3VsZCBub3QgZ3Vlc3MgaXRlcmFibGUgbGVuZ3RoLiBQbGVhc2UgcHJvdmlkZSBkZXNpcmVkIGNhcGFjaXR5IGFzIGxhc3QgYXJndW1lbnQuJyk7XG4gIH1cblxuICB2YXIgZGVxdWUgPSBuZXcgRml4ZWREZXF1ZShBcnJheUNsYXNzLCBjYXBhY2l0eSk7XG5cbiAgaWYgKGl0ZXJhYmxlcy5pc0FycmF5TGlrZShpdGVyYWJsZSkpIHtcbiAgICB2YXIgaSwgbDtcblxuICAgIGZvciAoaSA9IDAsIGwgPSBpdGVyYWJsZS5sZW5ndGg7IGkgPCBsOyBpKyspXG4gICAgICBkZXF1ZS5pdGVtc1tpXSA9IGl0ZXJhYmxlW2ldO1xuXG4gICAgZGVxdWUuc2l6ZSA9IGw7XG5cbiAgICByZXR1cm4gZGVxdWU7XG4gIH1cblxuICBpdGVyYWJsZXMuZm9yRWFjaChpdGVyYWJsZSwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICBkZXF1ZS5wdXNoKHZhbHVlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlcXVlO1xufTtcblxuLyoqXG4gKiBFeHBvcnRpbmcuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gRml4ZWREZXF1ZTtcbiIsICIvKipcbiAqIEdyYXBob2xvZ3kgVHJhdmVyc2FsIFV0aWxzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqXG4gKiBNaXNjZWxsYW5lb3VzIHV0aWxzIHVzZWQgdGhyb3VnaG91dCB0aGUgbGlicmFyeS5cbiAqL1xuXG5mdW5jdGlvbiBUcmF2ZXJzYWxSZWNvcmQobm9kZSwgYXR0ciwgZGVwdGgpIHtcbiAgdGhpcy5ub2RlID0gbm9kZTtcbiAgdGhpcy5hdHRyaWJ1dGVzID0gYXR0cjtcbiAgdGhpcy5kZXB0aCA9IGRlcHRoO1xufVxuXG5leHBvcnRzLlRyYXZlcnNhbFJlY29yZCA9IFRyYXZlcnNhbFJlY29yZDtcbiIsICIvKipcbiAqIEdyYXBob2xvZ3kgVHJhdmVyc2FsIEJGU1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIEJyZWFkdGgtRmlyc3QgU2VhcmNoIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xudmFyIGlzR3JhcGggPSByZXF1aXJlKCdncmFwaG9sb2d5LXV0aWxzL2lzLWdyYXBoJyk7XG52YXIgRml4ZWREZXF1ZSA9IHJlcXVpcmUoJ21uZW1vbmlzdC9maXhlZC1kZXF1ZScpO1xudmFyIFRyYXZlcnNhbFJlY29yZCA9IHJlcXVpcmUoJy4vdXRpbHMnKS5UcmF2ZXJzYWxSZWNvcmQ7XG5cbi8qKlxuICogQkZTIHRyYXZlcnNhbCBpbiB0aGUgZ2l2ZW4gZ3JhcGggdXNpbmcgYSBjYWxsYmFjayBmdW5jdGlvblxuICpcbiAqIEBwYXJhbSB7R3JhcGh9ICAgIGdyYXBoICAgIC0gVGFyZ2V0IGdyYXBoLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBJdGVyYXRpb24gY2FsbGJhY2suXG4gKi9cbmZ1bmN0aW9uIGJmcyhncmFwaCwgY2FsbGJhY2spIHtcbiAgaWYgKCFpc0dyYXBoKGdyYXBoKSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2dyYXBob2xvZ3ktdHJhdmVyc2FsL2JmczogZXhwZWN0aW5nIGEgZ3JhcGhvbG9neSBpbnN0YW5jZS4nKTtcblxuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKVxuICAgIHRocm93IG5ldyBFcnJvcignZ3JhcGhvbG9neS10cmF2ZXJzYWwvYmZzOiBnaXZlbiBjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbi4nKTtcblxuICAvLyBFYXJseSB0ZXJtaW5hdGlvblxuICBpZiAoZ3JhcGgub3JkZXIgPT09IDApXG4gICAgcmV0dXJuO1xuXG4gIHZhciBzZWVuID0gbmV3IFNldCgpO1xuICB2YXIgcXVldWUgPSBuZXcgRml4ZWREZXF1ZShBcnJheSwgZ3JhcGgub3JkZXIpO1xuICB2YXIgcmVjb3JkLCBkZXB0aDtcblxuICBmdW5jdGlvbiBuZWlnaGJvckNhbGxiYWNrKG5laWdoYm9yLCBhdHRyKSB7XG4gICAgaWYgKHNlZW4uaGFzKG5laWdoYm9yKSlcbiAgICAgIHJldHVybjtcblxuICAgIHNlZW4uYWRkKG5laWdoYm9yKTtcbiAgICBxdWV1ZS5wdXNoKG5ldyBUcmF2ZXJzYWxSZWNvcmQobmVpZ2hib3IsIGF0dHIsIGRlcHRoICsgMSkpO1xuICB9XG5cbiAgZ3JhcGguZm9yRWFjaE5vZGUoZnVuY3Rpb24obm9kZSwgYXR0cikge1xuICAgIGlmIChzZWVuLmhhcyhub2RlKSlcbiAgICAgIHJldHVybjtcblxuICAgIHNlZW4uYWRkKG5vZGUpO1xuICAgIHF1ZXVlLnB1c2gobmV3IFRyYXZlcnNhbFJlY29yZChub2RlLCBhdHRyLCAwKSk7XG5cbiAgICB3aGlsZSAocXVldWUuc2l6ZSAhPT0gMCkge1xuICAgICAgcmVjb3JkID0gcXVldWUuc2hpZnQoKTtcbiAgICAgIGRlcHRoID0gcmVjb3JkLmRlcHRoO1xuXG4gICAgICBjYWxsYmFjayhyZWNvcmQubm9kZSwgcmVjb3JkLmF0dHJpYnV0ZXMsIGRlcHRoKTtcblxuICAgICAgZ3JhcGguZm9yRWFjaE91dGJvdW5kTmVpZ2hib3IocmVjb3JkLm5vZGUsIG5laWdoYm9yQ2FsbGJhY2spO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogQkZTIHRyYXZlcnNhbCBpbiB0aGUgZ2l2ZW4gZ3JhcGgsIHN0YXJ0aW5nIGZyb20gdGhlIGdpdmVuIG5vZGUsIHVzaW5nIGFcbiAqIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7R3JhcGh9ICAgIGdyYXBoICAgIC0gVGFyZ2V0IGdyYXBoLlxuICogQHBhcmFtIHtzdHJpbmd9ICAgbm9kZSAgICAgLSBTdGFydGluZyBub2RlLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBJdGVyYXRpb24gY2FsbGJhY2suXG4gKi9cbmZ1bmN0aW9uIGJmc0Zyb21Ob2RlKGdyYXBoLCBub2RlLCBjYWxsYmFjaykge1xuICBpZiAoIWlzR3JhcGgoZ3JhcGgpKVxuICAgIHRocm93IG5ldyBFcnJvcignZ3JhcGhvbG9neS10cmF2ZXJzYWwvZGZzOiBleHBlY3RpbmcgYSBncmFwaG9sb2d5IGluc3RhbmNlLicpO1xuXG4gIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdncmFwaG9sb2d5LXRyYXZlcnNhbC9kZnM6IGdpdmVuIGNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uLicpO1xuXG4gIC8vIEVhcmx5IHRlcm1pbmF0aW9uXG4gIGlmIChncmFwaC5vcmRlciA9PT0gMClcbiAgICByZXR1cm47XG5cbiAgbm9kZSA9ICcnICsgbm9kZTtcblxuICB2YXIgc2VlbiA9IG5ldyBTZXQoKTtcbiAgdmFyIHF1ZXVlID0gbmV3IEZpeGVkRGVxdWUoQXJyYXksIGdyYXBoLm9yZGVyKTtcbiAgdmFyIGRlcHRoLCByZWNvcmQ7XG5cbiAgZnVuY3Rpb24gbmVpZ2hib3JDYWxsYmFjayhuZWlnaGJvciwgYXR0cikge1xuICAgIGlmIChzZWVuLmhhcyhuZWlnaGJvcikpXG4gICAgICByZXR1cm47XG5cbiAgICBzZWVuLmFkZChuZWlnaGJvcik7XG4gICAgcXVldWUucHVzaChuZXcgVHJhdmVyc2FsUmVjb3JkKG5laWdoYm9yLCBhdHRyLCBkZXB0aCArIDEpKTtcbiAgfVxuXG4gIHNlZW4uYWRkKG5vZGUpO1xuICBxdWV1ZS5wdXNoKG5ldyBUcmF2ZXJzYWxSZWNvcmQobm9kZSwgZ3JhcGguZ2V0Tm9kZUF0dHJpYnV0ZXMobm9kZSksIDApKTtcblxuICB3aGlsZSAocXVldWUuc2l6ZSAhPT0gMCkge1xuICAgIHJlY29yZCA9IHF1ZXVlLnNoaWZ0KCk7XG4gICAgZGVwdGggPSByZWNvcmQuZGVwdGg7XG5cbiAgICBjYWxsYmFjayhyZWNvcmQubm9kZSwgcmVjb3JkLmF0dHJpYnV0ZXMsIGRlcHRoKTtcblxuICAgIGdyYXBoLmZvckVhY2hPdXRib3VuZE5laWdoYm9yKHJlY29yZC5ub2RlLCBuZWlnaGJvckNhbGxiYWNrKTtcbiAgfVxufVxuXG5leHBvcnRzLmJmcyA9IGJmcztcbmV4cG9ydHMuYmZzRnJvbU5vZGUgPSBiZnNGcm9tTm9kZTtcbiIsICIvKipcbiAqIEdyYXBob2xvZ3kgVHJhdmVyc2FsIERGU1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIERlcHRoLUZpcnN0IFNlYXJjaCB0cmF2ZXJzYWwgZnVuY3Rpb24uXG4gKi9cbnZhciBpc0dyYXBoID0gcmVxdWlyZSgnZ3JhcGhvbG9neS11dGlscy9pcy1ncmFwaCcpO1xudmFyIFRyYXZlcnNhbFJlY29yZCA9IHJlcXVpcmUoJy4vdXRpbHMnKS5UcmF2ZXJzYWxSZWNvcmQ7XG5cbi8qKlxuICogREZTIHRyYXZlcnNhbCBpbiB0aGUgZ2l2ZW4gZ3JhcGggdXNpbmcgYSBjYWxsYmFjayBmdW5jdGlvblxuICpcbiAqIEBwYXJhbSB7R3JhcGh9ICAgIGdyYXBoICAgIC0gVGFyZ2V0IGdyYXBoLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBJdGVyYXRpb24gY2FsbGJhY2suXG4gKi9cbmZ1bmN0aW9uIGRmcyhncmFwaCwgY2FsbGJhY2spIHtcbiAgaWYgKCFpc0dyYXBoKGdyYXBoKSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2dyYXBob2xvZ3ktdHJhdmVyc2FsL2RmczogZXhwZWN0aW5nIGEgZ3JhcGhvbG9neSBpbnN0YW5jZS4nKTtcblxuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKVxuICAgIHRocm93IG5ldyBFcnJvcignZ3JhcGhvbG9neS10cmF2ZXJzYWwvZGZzOiBnaXZlbiBjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbi4nKTtcblxuICAvLyBFYXJseSB0ZXJtaW5hdGlvblxuICBpZiAoZ3JhcGgub3JkZXIgPT09IDApXG4gICAgcmV0dXJuO1xuXG4gIHZhciBzZWVuID0gbmV3IFNldCgpO1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGRlcHRoLCByZWNvcmQ7XG5cbiAgZnVuY3Rpb24gbmVpZ2hib3JDYWxsYmFjayhuZWlnaGJvciwgYXR0cikge1xuICAgIGlmIChzZWVuLmhhcyhuZWlnaGJvcikpXG4gICAgICByZXR1cm47XG5cbiAgICBzZWVuLmFkZChuZWlnaGJvcik7XG4gICAgc3RhY2sucHVzaChuZXcgVHJhdmVyc2FsUmVjb3JkKG5laWdoYm9yLCBhdHRyLCBkZXB0aCArIDEpKTtcbiAgfVxuXG4gIGdyYXBoLmZvckVhY2hOb2RlKGZ1bmN0aW9uKG5vZGUsIGF0dHIpIHtcbiAgICBpZiAoc2Vlbi5oYXMobm9kZSkpXG4gICAgICByZXR1cm47XG5cbiAgICBzZWVuLmFkZChub2RlKTtcbiAgICBzdGFjay5wdXNoKG5ldyBUcmF2ZXJzYWxSZWNvcmQobm9kZSwgYXR0ciwgMCkpO1xuXG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCAhPT0gMCkge1xuICAgICAgcmVjb3JkID0gc3RhY2sucG9wKCk7XG4gICAgICBkZXB0aCA9IHJlY29yZC5kZXB0aDtcblxuICAgICAgY2FsbGJhY2socmVjb3JkLm5vZGUsIHJlY29yZC5hdHRyaWJ1dGVzLCBkZXB0aCk7XG5cbiAgICAgIGdyYXBoLmZvckVhY2hPdXRib3VuZE5laWdoYm9yKHJlY29yZC5ub2RlLCBuZWlnaGJvckNhbGxiYWNrKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIERGUyB0cmF2ZXJzYWwgaW4gdGhlIGdpdmVuIGdyYXBoLCBzdGFydGluZyBmcm9tIHRoZSBnaXZlbiBub2RlLCB1c2luZyBhXG4gKiBjYWxsYmFjayBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0dyYXBofSAgICBncmFwaCAgICAtIFRhcmdldCBncmFwaC5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgIG5vZGUgICAgIC0gU3RhcnRpbmcgbm9kZS5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gSXRlcmF0aW9uIGNhbGxiYWNrLlxuICovXG5mdW5jdGlvbiBkZnNGcm9tTm9kZShncmFwaCwgbm9kZSwgY2FsbGJhY2spIHtcbiAgaWYgKCFpc0dyYXBoKGdyYXBoKSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2dyYXBob2xvZ3ktdHJhdmVyc2FsL2RmczogZXhwZWN0aW5nIGEgZ3JhcGhvbG9neSBpbnN0YW5jZS4nKTtcblxuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKVxuICAgIHRocm93IG5ldyBFcnJvcignZ3JhcGhvbG9neS10cmF2ZXJzYWwvZGZzOiBnaXZlbiBjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbi4nKTtcblxuICAvLyBFYXJseSB0ZXJtaW5hdGlvblxuICBpZiAoZ3JhcGgub3JkZXIgPT09IDApXG4gICAgcmV0dXJuO1xuXG4gIG5vZGUgPSAnJyArIG5vZGU7XG5cbiAgdmFyIHNlZW4gPSBuZXcgU2V0KCk7XG4gIHZhciBzdGFjayA9IFtdO1xuICB2YXIgZGVwdGgsIHJlY29yZDtcblxuICBmdW5jdGlvbiBuZWlnaGJvckNhbGxiYWNrKG5laWdoYm9yLCBhdHRyKSB7XG4gICAgaWYgKHNlZW4uaGFzKG5laWdoYm9yKSlcbiAgICAgIHJldHVybjtcblxuICAgIHNlZW4uYWRkKG5laWdoYm9yKTtcbiAgICBzdGFjay5wdXNoKG5ldyBUcmF2ZXJzYWxSZWNvcmQobmVpZ2hib3IsIGF0dHIsIGRlcHRoICsgMSkpO1xuICB9XG5cbiAgc2Vlbi5hZGQobm9kZSk7XG4gIHN0YWNrLnB1c2gobmV3IFRyYXZlcnNhbFJlY29yZChub2RlLCBncmFwaC5nZXROb2RlQXR0cmlidXRlcyhub2RlKSwgMCkpO1xuXG4gIHdoaWxlIChzdGFjay5sZW5ndGggIT09IDApIHtcbiAgICByZWNvcmQgPSBzdGFjay5wb3AoKTtcbiAgICBkZXB0aCA9IHJlY29yZC5kZXB0aDtcblxuICAgIGNhbGxiYWNrKHJlY29yZC5ub2RlLCByZWNvcmQuYXR0cmlidXRlcywgZGVwdGgpO1xuXG4gICAgZ3JhcGguZm9yRWFjaE91dGJvdW5kTmVpZ2hib3IocmVjb3JkLm5vZGUsIG5laWdoYm9yQ2FsbGJhY2spO1xuICB9XG59XG5cbmV4cG9ydHMuZGZzID0gZGZzO1xuZXhwb3J0cy5kZnNGcm9tTm9kZSA9IGRmc0Zyb21Ob2RlO1xuIiwgInZhciBiZnNNb2R1bGUgPSByZXF1aXJlKCcuL2Jmcy5qcycpO1xudmFyIGRmc01vZHVsZSA9IHJlcXVpcmUoJy4vZGZzLmpzJyk7XG5cbnZhciBrO1xuXG5mb3IgKGsgaW4gYmZzTW9kdWxlKVxuICBleHBvcnRzW2tdID0gYmZzTW9kdWxlW2tdO1xuXG5mb3IgKGsgaW4gZGZzTW9kdWxlKVxuICBleHBvcnRzW2tdID0gZGZzTW9kdWxlW2tdO1xuIiwgIi8vIHRoZXNlIGFyZW4ndCByZWFsbHkgcHJpdmF0ZSwgYnV0IG5vciBhcmUgdGhleSByZWFsbHkgdXNlZnVsIHRvIGRvY3VtZW50XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgTHV4b25FcnJvciBleHRlbmRzIEVycm9yIHt9XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWREYXRlVGltZUVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKHJlYXNvbikge1xuICAgIHN1cGVyKGBJbnZhbGlkIERhdGVUaW1lOiAke3JlYXNvbi50b01lc3NhZ2UoKX1gKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkSW50ZXJ2YWxFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihyZWFzb24pIHtcbiAgICBzdXBlcihgSW52YWxpZCBJbnRlcnZhbDogJHtyZWFzb24udG9NZXNzYWdlKCl9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgSW52YWxpZER1cmF0aW9uRXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHtcbiAgY29uc3RydWN0b3IocmVhc29uKSB7XG4gICAgc3VwZXIoYEludmFsaWQgRHVyYXRpb246ICR7cmVhc29uLnRvTWVzc2FnZSgpfWApO1xuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGNsYXNzIENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7fVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkVW5pdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKHVuaXQpIHtcbiAgICBzdXBlcihgSW52YWxpZCB1bml0ICR7dW5pdH1gKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige31cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgWm9uZUlzQWJzdHJhY3RFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIlpvbmUgaXMgYW4gYWJzdHJhY3QgY2xhc3NcIik7XG4gIH1cbn1cbiIsICIvKipcbiAqIEBwcml2YXRlXG4gKi9cblxuY29uc3QgbiA9IFwibnVtZXJpY1wiLFxuICBzID0gXCJzaG9ydFwiLFxuICBsID0gXCJsb25nXCI7XG5cbmV4cG9ydCBjb25zdCBEQVRFX1NIT1JUID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbixcbiAgZGF5OiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVfTUVEID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogcyxcbiAgZGF5OiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVfTUVEX1dJVEhfV0VFS0RBWSA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IHMsXG4gIGRheTogbixcbiAgd2Vla2RheTogcyxcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFX0ZVTEwgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBsLFxuICBkYXk6IG4sXG59O1xuXG5leHBvcnQgY29uc3QgREFURV9IVUdFID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbCxcbiAgZGF5OiBuLFxuICB3ZWVrZGF5OiBsLFxufTtcblxuZXhwb3J0IGNvbnN0IFRJTUVfU0lNUExFID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG59O1xuXG5leHBvcnQgY29uc3QgVElNRV9XSVRIX1NFQ09ORFMgPSB7XG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQgPSB7XG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxuICB0aW1lWm9uZU5hbWU6IHMsXG59O1xuXG5leHBvcnQgY29uc3QgVElNRV9XSVRIX0xPTkdfT0ZGU0VUID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbiAgdGltZVpvbmVOYW1lOiBsLFxufTtcblxuZXhwb3J0IGNvbnN0IFRJTUVfMjRfU0lNUExFID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIGhvdXJDeWNsZTogXCJoMjNcIixcbn07XG5cbmV4cG9ydCBjb25zdCBUSU1FXzI0X1dJVEhfU0VDT05EUyA9IHtcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBzZWNvbmQ6IG4sXG4gIGhvdXJDeWNsZTogXCJoMjNcIixcbn07XG5cbmV4cG9ydCBjb25zdCBUSU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VUID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbiAgaG91ckN5Y2xlOiBcImgyM1wiLFxuICB0aW1lWm9uZU5hbWU6IHMsXG59O1xuXG5leHBvcnQgY29uc3QgVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbiAgaG91ckN5Y2xlOiBcImgyM1wiLFxuICB0aW1lWm9uZU5hbWU6IGwsXG59O1xuXG5leHBvcnQgY29uc3QgREFURVRJTUVfU0hPUlQgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBuLFxuICBkYXk6IG4sXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBuLFxuICBkYXk6IG4sXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVUSU1FX01FRCA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IHMsXG4gIGRheTogbixcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBzLFxuICBkYXk6IG4sXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBzLFxuICBkYXk6IG4sXG4gIHdlZWtkYXk6IHMsXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9GVUxMID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbCxcbiAgZGF5OiBuLFxuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHRpbWVab25lTmFtZTogcyxcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IGwsXG4gIGRheTogbixcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBzZWNvbmQ6IG4sXG4gIHRpbWVab25lTmFtZTogcyxcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9IVUdFID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbCxcbiAgZGF5OiBuLFxuICB3ZWVrZGF5OiBsLFxuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHRpbWVab25lTmFtZTogbCxcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUyA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IGwsXG4gIGRheTogbixcbiAgd2Vla2RheTogbCxcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBzZWNvbmQ6IG4sXG4gIHRpbWVab25lTmFtZTogbCxcbn07XG4iLCAiLypcbiAgVGhpcyBpcyBqdXN0IGEganVuayBkcmF3ZXIsIGNvbnRhaW5pbmcgYW55dGhpbmcgdXNlZCBhY3Jvc3MgbXVsdGlwbGUgY2xhc3Nlcy5cbiAgQmVjYXVzZSBMdXhvbiBpcyBzbWFsbChpc2gpLCB0aGlzIHNob3VsZCBzdGF5IHNtYWxsIGFuZCB3ZSB3b24ndCB3b3JyeSBhYm91dCBzcGxpdHRpbmdcbiAgaXQgdXAgaW50bywgc2F5LCBwYXJzaW5nVXRpbC5qcyBhbmQgYmFzaWNVdGlsLmpzIGFuZCBzbyBvbi4gQnV0IHRoZXkgYXJlIGRpdmlkZWQgdXAgYnkgZmVhdHVyZSBhcmVhLlxuKi9cblxuaW1wb3J0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzLmpzXCI7XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuXG4vLyBUWVBFU1xuXG5leHBvcnQgZnVuY3Rpb24gaXNVbmRlZmluZWQobykge1xuICByZXR1cm4gdHlwZW9mIG8gPT09IFwidW5kZWZpbmVkXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlcihvKSB7XG4gIHJldHVybiB0eXBlb2YgbyA9PT0gXCJudW1iZXJcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW50ZWdlcihvKSB7XG4gIHJldHVybiB0eXBlb2YgbyA9PT0gXCJudW1iZXJcIiAmJiBvICUgMSA9PT0gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nKG8pIHtcbiAgcmV0dXJuIHR5cGVvZiBvID09PSBcInN0cmluZ1wiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlKG8pIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKSA9PT0gXCJbb2JqZWN0IERhdGVdXCI7XG59XG5cbi8vIENBUEFCSUxJVElFU1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzUmVsYXRpdmUoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHR5cGVvZiBJbnRsICE9PSBcInVuZGVmaW5lZFwiICYmICEhSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQ7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8gT0JKRUNUUyBBTkQgQVJSQVlTXG5cbmV4cG9ydCBmdW5jdGlvbiBtYXliZUFycmF5KHRoaW5nKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHRoaW5nKSA/IHRoaW5nIDogW3RoaW5nXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJlc3RCeShhcnIsIGJ5LCBjb21wYXJlKSB7XG4gIGlmIChhcnIubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gYXJyLnJlZHVjZSgoYmVzdCwgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHBhaXIgPSBbYnkobmV4dCksIG5leHRdO1xuICAgIGlmICghYmVzdCkge1xuICAgICAgcmV0dXJuIHBhaXI7XG4gICAgfSBlbHNlIGlmIChjb21wYXJlKGJlc3RbMF0sIHBhaXJbMF0pID09PSBiZXN0WzBdKSB7XG4gICAgICByZXR1cm4gYmVzdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHBhaXI7XG4gICAgfVxuICB9LCBudWxsKVsxXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBpY2sob2JqLCBrZXlzKSB7XG4gIHJldHVybiBrZXlzLnJlZHVjZSgoYSwgaykgPT4ge1xuICAgIGFba10gPSBvYmpba107XG4gICAgcmV0dXJuIGE7XG4gIH0sIHt9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG59XG5cbi8vIE5VTUJFUlMgQU5EIFNUUklOR1NcblxuZXhwb3J0IGZ1bmN0aW9uIGludGVnZXJCZXR3ZWVuKHRoaW5nLCBib3R0b20sIHRvcCkge1xuICByZXR1cm4gaXNJbnRlZ2VyKHRoaW5nKSAmJiB0aGluZyA+PSBib3R0b20gJiYgdGhpbmcgPD0gdG9wO1xufVxuXG4vLyB4ICUgbiBidXQgdGFrZXMgdGhlIHNpZ24gb2YgbiBpbnN0ZWFkIG9mIHhcbmV4cG9ydCBmdW5jdGlvbiBmbG9vck1vZCh4LCBuKSB7XG4gIHJldHVybiB4IC0gbiAqIE1hdGguZmxvb3IoeCAvIG4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFkU3RhcnQoaW5wdXQsIG4gPSAyKSB7XG4gIGNvbnN0IGlzTmVnID0gaW5wdXQgPCAwO1xuICBsZXQgcGFkZGVkO1xuICBpZiAoaXNOZWcpIHtcbiAgICBwYWRkZWQgPSBcIi1cIiArIChcIlwiICsgLWlucHV0KS5wYWRTdGFydChuLCBcIjBcIik7XG4gIH0gZWxzZSB7XG4gICAgcGFkZGVkID0gKFwiXCIgKyBpbnB1dCkucGFkU3RhcnQobiwgXCIwXCIpO1xuICB9XG4gIHJldHVybiBwYWRkZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUludGVnZXIoc3RyaW5nKSB7XG4gIGlmIChpc1VuZGVmaW5lZChzdHJpbmcpIHx8IHN0cmluZyA9PT0gbnVsbCB8fCBzdHJpbmcgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBwYXJzZUludChzdHJpbmcsIDEwKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VGbG9hdGluZyhzdHJpbmcpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKHN0cmluZykgfHwgc3RyaW5nID09PSBudWxsIHx8IHN0cmluZyA9PT0gXCJcIikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoc3RyaW5nKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VNaWxsaXMoZnJhY3Rpb24pIHtcbiAgLy8gUmV0dXJuIHVuZGVmaW5lZCAoaW5zdGVhZCBvZiAwKSBpbiB0aGVzZSBjYXNlcywgd2hlcmUgZnJhY3Rpb24gaXMgbm90IHNldFxuICBpZiAoaXNVbmRlZmluZWQoZnJhY3Rpb24pIHx8IGZyYWN0aW9uID09PSBudWxsIHx8IGZyYWN0aW9uID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBmID0gcGFyc2VGbG9hdChcIjAuXCIgKyBmcmFjdGlvbikgKiAxMDAwO1xuICAgIHJldHVybiBNYXRoLmZsb29yKGYpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByb3VuZFRvKG51bWJlciwgZGlnaXRzLCB0b3dhcmRaZXJvID0gZmFsc2UpIHtcbiAgY29uc3QgZmFjdG9yID0gMTAgKiogZGlnaXRzLFxuICAgIHJvdW5kZXIgPSB0b3dhcmRaZXJvID8gTWF0aC50cnVuYyA6IE1hdGgucm91bmQ7XG4gIHJldHVybiByb3VuZGVyKG51bWJlciAqIGZhY3RvcikgLyBmYWN0b3I7XG59XG5cbi8vIERBVEUgQkFTSUNTXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlYXBZZWFyKHllYXIpIHtcbiAgcmV0dXJuIHllYXIgJSA0ID09PSAwICYmICh5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF5c0luWWVhcih5ZWFyKSB7XG4gIHJldHVybiBpc0xlYXBZZWFyKHllYXIpID8gMzY2IDogMzY1O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF5c0luTW9udGgoeWVhciwgbW9udGgpIHtcbiAgY29uc3QgbW9kTW9udGggPSBmbG9vck1vZChtb250aCAtIDEsIDEyKSArIDEsXG4gICAgbW9kWWVhciA9IHllYXIgKyAobW9udGggLSBtb2RNb250aCkgLyAxMjtcblxuICBpZiAobW9kTW9udGggPT09IDIpIHtcbiAgICByZXR1cm4gaXNMZWFwWWVhcihtb2RZZWFyKSA/IDI5IDogMjg7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFszMSwgbnVsbCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdW21vZE1vbnRoIC0gMV07XG4gIH1cbn1cblxuLy8gY292ZXJ0IGEgY2FsZW5kYXIgb2JqZWN0IHRvIGEgbG9jYWwgdGltZXN0YW1wIChlcG9jaCwgYnV0IHdpdGggdGhlIG9mZnNldCBiYWtlZCBpbilcbmV4cG9ydCBmdW5jdGlvbiBvYmpUb0xvY2FsVFMob2JqKSB7XG4gIGxldCBkID0gRGF0ZS5VVEMoXG4gICAgb2JqLnllYXIsXG4gICAgb2JqLm1vbnRoIC0gMSxcbiAgICBvYmouZGF5LFxuICAgIG9iai5ob3VyLFxuICAgIG9iai5taW51dGUsXG4gICAgb2JqLnNlY29uZCxcbiAgICBvYmoubWlsbGlzZWNvbmRcbiAgKTtcblxuICAvLyBmb3IgbGVnYWN5IHJlYXNvbnMsIHllYXJzIGJldHdlZW4gMCBhbmQgOTkgYXJlIGludGVycHJldGVkIGFzIDE5WFg7IHJldmVydCB0aGF0XG4gIGlmIChvYmoueWVhciA8IDEwMCAmJiBvYmoueWVhciA+PSAwKSB7XG4gICAgZCA9IG5ldyBEYXRlKGQpO1xuICAgIGQuc2V0VVRDRnVsbFllYXIoZC5nZXRVVENGdWxsWWVhcigpIC0gMTkwMCk7XG4gIH1cbiAgcmV0dXJuICtkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2Vla3NJbldlZWtZZWFyKHdlZWtZZWFyKSB7XG4gIGNvbnN0IHAxID1cbiAgICAgICh3ZWVrWWVhciArXG4gICAgICAgIE1hdGguZmxvb3Iod2Vla1llYXIgLyA0KSAtXG4gICAgICAgIE1hdGguZmxvb3Iod2Vla1llYXIgLyAxMDApICtcbiAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDQwMCkpICVcbiAgICAgIDcsXG4gICAgbGFzdCA9IHdlZWtZZWFyIC0gMSxcbiAgICBwMiA9IChsYXN0ICsgTWF0aC5mbG9vcihsYXN0IC8gNCkgLSBNYXRoLmZsb29yKGxhc3QgLyAxMDApICsgTWF0aC5mbG9vcihsYXN0IC8gNDAwKSkgJSA3O1xuICByZXR1cm4gcDEgPT09IDQgfHwgcDIgPT09IDMgPyA1MyA6IDUyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW50cnVuY2F0ZVllYXIoeWVhcikge1xuICBpZiAoeWVhciA+IDk5KSB7XG4gICAgcmV0dXJuIHllYXI7XG4gIH0gZWxzZSByZXR1cm4geWVhciA+IDYwID8gMTkwMCArIHllYXIgOiAyMDAwICsgeWVhcjtcbn1cblxuLy8gUEFSU0lOR1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2Vab25lSW5mbyh0cywgb2Zmc2V0Rm9ybWF0LCBsb2NhbGUsIHRpbWVab25lID0gbnVsbCkge1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpLFxuICAgIGludGxPcHRzID0ge1xuICAgICAgaG91ckN5Y2xlOiBcImgyM1wiLFxuICAgICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgICBtb250aDogXCIyLWRpZ2l0XCIsXG4gICAgICBkYXk6IFwiMi1kaWdpdFwiLFxuICAgICAgaG91cjogXCIyLWRpZ2l0XCIsXG4gICAgICBtaW51dGU6IFwiMi1kaWdpdFwiLFxuICAgIH07XG5cbiAgaWYgKHRpbWVab25lKSB7XG4gICAgaW50bE9wdHMudGltZVpvbmUgPSB0aW1lWm9uZTtcbiAgfVxuXG4gIGNvbnN0IG1vZGlmaWVkID0geyB0aW1lWm9uZU5hbWU6IG9mZnNldEZvcm1hdCwgLi4uaW50bE9wdHMgfTtcblxuICBjb25zdCBwYXJzZWQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIG1vZGlmaWVkKVxuICAgIC5mb3JtYXRUb1BhcnRzKGRhdGUpXG4gICAgLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSBcInRpbWV6b25lbmFtZVwiKTtcbiAgcmV0dXJuIHBhcnNlZCA/IHBhcnNlZC52YWx1ZSA6IG51bGw7XG59XG5cbi8vIHNpZ25lZE9mZnNldCgnLTUnLCAnMzAnKSAtPiAtMzMwXG5leHBvcnQgZnVuY3Rpb24gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cikge1xuICBsZXQgb2ZmSG91ciA9IHBhcnNlSW50KG9mZkhvdXJTdHIsIDEwKTtcblxuICAvLyBkb24ndCB8fCB0aGlzIGJlY2F1c2Ugd2Ugd2FudCB0byBwcmVzZXJ2ZSAtMFxuICBpZiAoTnVtYmVyLmlzTmFOKG9mZkhvdXIpKSB7XG4gICAgb2ZmSG91ciA9IDA7XG4gIH1cblxuICBjb25zdCBvZmZNaW4gPSBwYXJzZUludChvZmZNaW51dGVTdHIsIDEwKSB8fCAwLFxuICAgIG9mZk1pblNpZ25lZCA9IG9mZkhvdXIgPCAwIHx8IE9iamVjdC5pcyhvZmZIb3VyLCAtMCkgPyAtb2ZmTWluIDogb2ZmTWluO1xuICByZXR1cm4gb2ZmSG91ciAqIDYwICsgb2ZmTWluU2lnbmVkO1xufVxuXG4vLyBDT0VSQ0lPTlxuXG5leHBvcnQgZnVuY3Rpb24gYXNOdW1iZXIodmFsdWUpIHtcbiAgY29uc3QgbnVtZXJpY1ZhbHVlID0gTnVtYmVyKHZhbHVlKTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIgfHwgdmFsdWUgPT09IFwiXCIgfHwgTnVtYmVyLmlzTmFOKG51bWVyaWNWYWx1ZSkpXG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBJbnZhbGlkIHVuaXQgdmFsdWUgJHt2YWx1ZX1gKTtcbiAgcmV0dXJuIG51bWVyaWNWYWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZXIpIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IHt9O1xuICBmb3IgKGNvbnN0IHUgaW4gb2JqKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5KG9iaiwgdSkpIHtcbiAgICAgIGNvbnN0IHYgPSBvYmpbdV07XG4gICAgICBpZiAodiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGwpIGNvbnRpbnVlO1xuICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVyKHUpXSA9IGFzTnVtYmVyKHYpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbm9ybWFsaXplZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE9mZnNldChvZmZzZXQsIGZvcm1hdCkge1xuICBjb25zdCBob3VycyA9IE1hdGgudHJ1bmMoTWF0aC5hYnMob2Zmc2V0IC8gNjApKSxcbiAgICBtaW51dGVzID0gTWF0aC50cnVuYyhNYXRoLmFicyhvZmZzZXQgJSA2MCkpLFxuICAgIHNpZ24gPSBvZmZzZXQgPj0gMCA/IFwiK1wiIDogXCItXCI7XG5cbiAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICBjYXNlIFwic2hvcnRcIjpcbiAgICAgIHJldHVybiBgJHtzaWdufSR7cGFkU3RhcnQoaG91cnMsIDIpfToke3BhZFN0YXJ0KG1pbnV0ZXMsIDIpfWA7XG4gICAgY2FzZSBcIm5hcnJvd1wiOlxuICAgICAgcmV0dXJuIGAke3NpZ259JHtob3Vyc30ke21pbnV0ZXMgPiAwID8gYDoke21pbnV0ZXN9YCA6IFwiXCJ9YDtcbiAgICBjYXNlIFwidGVjaGllXCI6XG4gICAgICByZXR1cm4gYCR7c2lnbn0ke3BhZFN0YXJ0KGhvdXJzLCAyKX0ke3BhZFN0YXJ0KG1pbnV0ZXMsIDIpfWA7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBWYWx1ZSBmb3JtYXQgJHtmb3JtYXR9IGlzIG91dCBvZiByYW5nZSBmb3IgcHJvcGVydHkgZm9ybWF0YCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRpbWVPYmplY3Qob2JqKSB7XG4gIHJldHVybiBwaWNrKG9iaiwgW1wiaG91clwiLCBcIm1pbnV0ZVwiLCBcInNlY29uZFwiLCBcIm1pbGxpc2Vjb25kXCJdKTtcbn1cblxuZXhwb3J0IGNvbnN0IGlhbmFSZWdleCA9IC9bQS1aYS16XystXXsxLDI1Nn0oOj9cXC9bQS1aYS16MC05XystXXsxLDI1Nn0oXFwvW0EtWmEtejAtOV8rLV17MSwyNTZ9KT8pPy87XG4iLCAiaW1wb3J0ICogYXMgRm9ybWF0cyBmcm9tIFwiLi9mb3JtYXRzLmpzXCI7XG5pbXBvcnQgeyBwaWNrIH0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuXG5mdW5jdGlvbiBzdHJpbmdpZnkob2JqKSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmosIE9iamVjdC5rZXlzKG9iaikuc29ydCgpKTtcbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5cbmV4cG9ydCBjb25zdCBtb250aHNMb25nID0gW1xuICBcIkphbnVhcnlcIixcbiAgXCJGZWJydWFyeVwiLFxuICBcIk1hcmNoXCIsXG4gIFwiQXByaWxcIixcbiAgXCJNYXlcIixcbiAgXCJKdW5lXCIsXG4gIFwiSnVseVwiLFxuICBcIkF1Z3VzdFwiLFxuICBcIlNlcHRlbWJlclwiLFxuICBcIk9jdG9iZXJcIixcbiAgXCJOb3ZlbWJlclwiLFxuICBcIkRlY2VtYmVyXCIsXG5dO1xuXG5leHBvcnQgY29uc3QgbW9udGhzU2hvcnQgPSBbXG4gIFwiSmFuXCIsXG4gIFwiRmViXCIsXG4gIFwiTWFyXCIsXG4gIFwiQXByXCIsXG4gIFwiTWF5XCIsXG4gIFwiSnVuXCIsXG4gIFwiSnVsXCIsXG4gIFwiQXVnXCIsXG4gIFwiU2VwXCIsXG4gIFwiT2N0XCIsXG4gIFwiTm92XCIsXG4gIFwiRGVjXCIsXG5dO1xuXG5leHBvcnQgY29uc3QgbW9udGhzTmFycm93ID0gW1wiSlwiLCBcIkZcIiwgXCJNXCIsIFwiQVwiLCBcIk1cIiwgXCJKXCIsIFwiSlwiLCBcIkFcIiwgXCJTXCIsIFwiT1wiLCBcIk5cIiwgXCJEXCJdO1xuXG5leHBvcnQgZnVuY3Rpb24gbW9udGhzKGxlbmd0aCkge1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgXCJuYXJyb3dcIjpcbiAgICAgIHJldHVybiBbLi4ubW9udGhzTmFycm93XTtcbiAgICBjYXNlIFwic2hvcnRcIjpcbiAgICAgIHJldHVybiBbLi4ubW9udGhzU2hvcnRdO1xuICAgIGNhc2UgXCJsb25nXCI6XG4gICAgICByZXR1cm4gWy4uLm1vbnRoc0xvbmddO1xuICAgIGNhc2UgXCJudW1lcmljXCI6XG4gICAgICByZXR1cm4gW1wiMVwiLCBcIjJcIiwgXCIzXCIsIFwiNFwiLCBcIjVcIiwgXCI2XCIsIFwiN1wiLCBcIjhcIiwgXCI5XCIsIFwiMTBcIiwgXCIxMVwiLCBcIjEyXCJdO1xuICAgIGNhc2UgXCIyLWRpZ2l0XCI6XG4gICAgICByZXR1cm4gW1wiMDFcIiwgXCIwMlwiLCBcIjAzXCIsIFwiMDRcIiwgXCIwNVwiLCBcIjA2XCIsIFwiMDdcIiwgXCIwOFwiLCBcIjA5XCIsIFwiMTBcIiwgXCIxMVwiLCBcIjEyXCJdO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2Vla2RheXNMb25nID0gW1xuICBcIk1vbmRheVwiLFxuICBcIlR1ZXNkYXlcIixcbiAgXCJXZWRuZXNkYXlcIixcbiAgXCJUaHVyc2RheVwiLFxuICBcIkZyaWRheVwiLFxuICBcIlNhdHVyZGF5XCIsXG4gIFwiU3VuZGF5XCIsXG5dO1xuXG5leHBvcnQgY29uc3Qgd2Vla2RheXNTaG9ydCA9IFtcIk1vblwiLCBcIlR1ZVwiLCBcIldlZFwiLCBcIlRodVwiLCBcIkZyaVwiLCBcIlNhdFwiLCBcIlN1blwiXTtcblxuZXhwb3J0IGNvbnN0IHdlZWtkYXlzTmFycm93ID0gW1wiTVwiLCBcIlRcIiwgXCJXXCIsIFwiVFwiLCBcIkZcIiwgXCJTXCIsIFwiU1wiXTtcblxuZXhwb3J0IGZ1bmN0aW9uIHdlZWtkYXlzKGxlbmd0aCkge1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgXCJuYXJyb3dcIjpcbiAgICAgIHJldHVybiBbLi4ud2Vla2RheXNOYXJyb3ddO1xuICAgIGNhc2UgXCJzaG9ydFwiOlxuICAgICAgcmV0dXJuIFsuLi53ZWVrZGF5c1Nob3J0XTtcbiAgICBjYXNlIFwibG9uZ1wiOlxuICAgICAgcmV0dXJuIFsuLi53ZWVrZGF5c0xvbmddO1xuICAgIGNhc2UgXCJudW1lcmljXCI6XG4gICAgICByZXR1cm4gW1wiMVwiLCBcIjJcIiwgXCIzXCIsIFwiNFwiLCBcIjVcIiwgXCI2XCIsIFwiN1wiXTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IG1lcmlkaWVtcyA9IFtcIkFNXCIsIFwiUE1cIl07XG5cbmV4cG9ydCBjb25zdCBlcmFzTG9uZyA9IFtcIkJlZm9yZSBDaHJpc3RcIiwgXCJBbm5vIERvbWluaVwiXTtcblxuZXhwb3J0IGNvbnN0IGVyYXNTaG9ydCA9IFtcIkJDXCIsIFwiQURcIl07XG5cbmV4cG9ydCBjb25zdCBlcmFzTmFycm93ID0gW1wiQlwiLCBcIkFcIl07XG5cbmV4cG9ydCBmdW5jdGlvbiBlcmFzKGxlbmd0aCkge1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgXCJuYXJyb3dcIjpcbiAgICAgIHJldHVybiBbLi4uZXJhc05hcnJvd107XG4gICAgY2FzZSBcInNob3J0XCI6XG4gICAgICByZXR1cm4gWy4uLmVyYXNTaG9ydF07XG4gICAgY2FzZSBcImxvbmdcIjpcbiAgICAgIHJldHVybiBbLi4uZXJhc0xvbmddO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyaWRpZW1Gb3JEYXRlVGltZShkdCkge1xuICByZXR1cm4gbWVyaWRpZW1zW2R0LmhvdXIgPCAxMiA/IDAgOiAxXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlZWtkYXlGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSB7XG4gIHJldHVybiB3ZWVrZGF5cyhsZW5ndGgpW2R0LndlZWtkYXkgLSAxXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vbnRoRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkge1xuICByZXR1cm4gbW9udGhzKGxlbmd0aClbZHQubW9udGggLSAxXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVyYUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGVyYXMobGVuZ3RoKVtkdC55ZWFyIDwgMCA/IDAgOiAxXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFJlbGF0aXZlVGltZSh1bml0LCBjb3VudCwgbnVtZXJpYyA9IFwiYWx3YXlzXCIsIG5hcnJvdyA9IGZhbHNlKSB7XG4gIGNvbnN0IHVuaXRzID0ge1xuICAgIHllYXJzOiBbXCJ5ZWFyXCIsIFwieXIuXCJdLFxuICAgIHF1YXJ0ZXJzOiBbXCJxdWFydGVyXCIsIFwicXRyLlwiXSxcbiAgICBtb250aHM6IFtcIm1vbnRoXCIsIFwibW8uXCJdLFxuICAgIHdlZWtzOiBbXCJ3ZWVrXCIsIFwid2suXCJdLFxuICAgIGRheXM6IFtcImRheVwiLCBcImRheVwiLCBcImRheXNcIl0sXG4gICAgaG91cnM6IFtcImhvdXJcIiwgXCJoci5cIl0sXG4gICAgbWludXRlczogW1wibWludXRlXCIsIFwibWluLlwiXSxcbiAgICBzZWNvbmRzOiBbXCJzZWNvbmRcIiwgXCJzZWMuXCJdLFxuICB9O1xuXG4gIGNvbnN0IGxhc3RhYmxlID0gW1wiaG91cnNcIiwgXCJtaW51dGVzXCIsIFwic2Vjb25kc1wiXS5pbmRleE9mKHVuaXQpID09PSAtMTtcblxuICBpZiAobnVtZXJpYyA9PT0gXCJhdXRvXCIgJiYgbGFzdGFibGUpIHtcbiAgICBjb25zdCBpc0RheSA9IHVuaXQgPT09IFwiZGF5c1wiO1xuICAgIHN3aXRjaCAoY291bnQpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgcmV0dXJuIGlzRGF5ID8gXCJ0b21vcnJvd1wiIDogYG5leHQgJHt1bml0c1t1bml0XVswXX1gO1xuICAgICAgY2FzZSAtMTpcbiAgICAgICAgcmV0dXJuIGlzRGF5ID8gXCJ5ZXN0ZXJkYXlcIiA6IGBsYXN0ICR7dW5pdHNbdW5pdF1bMF19YDtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgcmV0dXJuIGlzRGF5ID8gXCJ0b2RheVwiIDogYHRoaXMgJHt1bml0c1t1bml0XVswXX1gO1xuICAgICAgZGVmYXVsdDogLy8gZmFsbCB0aHJvdWdoXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaXNJblBhc3QgPSBPYmplY3QuaXMoY291bnQsIC0wKSB8fCBjb3VudCA8IDAsXG4gICAgZm10VmFsdWUgPSBNYXRoLmFicyhjb3VudCksXG4gICAgc2luZ3VsYXIgPSBmbXRWYWx1ZSA9PT0gMSxcbiAgICBsaWxVbml0cyA9IHVuaXRzW3VuaXRdLFxuICAgIGZtdFVuaXQgPSBuYXJyb3dcbiAgICAgID8gc2luZ3VsYXJcbiAgICAgICAgPyBsaWxVbml0c1sxXVxuICAgICAgICA6IGxpbFVuaXRzWzJdIHx8IGxpbFVuaXRzWzFdXG4gICAgICA6IHNpbmd1bGFyXG4gICAgICA/IHVuaXRzW3VuaXRdWzBdXG4gICAgICA6IHVuaXQ7XG4gIHJldHVybiBpc0luUGFzdCA/IGAke2ZtdFZhbHVlfSAke2ZtdFVuaXR9IGFnb2AgOiBgaW4gJHtmbXRWYWx1ZX0gJHtmbXRVbml0fWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTdHJpbmcoa25vd25Gb3JtYXQpIHtcbiAgLy8gdGhlc2UgYWxsIGhhdmUgdGhlIG9mZnNldHMgcmVtb3ZlZCBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZW1cbiAgLy8gd2l0aG91dCBhbGwgdGhlIGludGwgc3R1ZmYgdGhpcyBpcyBiYWNrZmlsbGluZ1xuICBjb25zdCBmaWx0ZXJlZCA9IHBpY2soa25vd25Gb3JtYXQsIFtcbiAgICAgIFwid2Vla2RheVwiLFxuICAgICAgXCJlcmFcIixcbiAgICAgIFwieWVhclwiLFxuICAgICAgXCJtb250aFwiLFxuICAgICAgXCJkYXlcIixcbiAgICAgIFwiaG91clwiLFxuICAgICAgXCJtaW51dGVcIixcbiAgICAgIFwic2Vjb25kXCIsXG4gICAgICBcInRpbWVab25lTmFtZVwiLFxuICAgICAgXCJob3VyQ3ljbGVcIixcbiAgICBdKSxcbiAgICBrZXkgPSBzdHJpbmdpZnkoZmlsdGVyZWQpLFxuICAgIGRhdGVUaW1lSHVnZSA9IFwiRUVFRSwgTExMTCBkLCB5eXl5LCBoOm1tIGFcIjtcbiAgc3dpdGNoIChrZXkpIHtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVfU0hPUlQpOlxuICAgICAgcmV0dXJuIFwiTS9kL3l5eXlcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVfTUVEKTpcbiAgICAgIHJldHVybiBcIkxMTCBkLCB5eXl5XCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFX01FRF9XSVRIX1dFRUtEQVkpOlxuICAgICAgcmV0dXJuIFwiRUVFLCBMTEwgZCwgeXl5eVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURV9GVUxMKTpcbiAgICAgIHJldHVybiBcIkxMTEwgZCwgeXl5eVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURV9IVUdFKTpcbiAgICAgIHJldHVybiBcIkVFRUUsIExMTEwgZCwgeXl5eVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuVElNRV9TSU1QTEUpOlxuICAgICAgcmV0dXJuIFwiaDptbSBhXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5USU1FX1dJVEhfU0VDT05EUyk6XG4gICAgICByZXR1cm4gXCJoOm1tOnNzIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLlRJTUVfV0lUSF9TSE9SVF9PRkZTRVQpOlxuICAgICAgcmV0dXJuIFwiaDptbSBhXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5USU1FX1dJVEhfTE9OR19PRkZTRVQpOlxuICAgICAgcmV0dXJuIFwiaDptbSBhXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5USU1FXzI0X1NJTVBMRSk6XG4gICAgICByZXR1cm4gXCJISDptbVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuVElNRV8yNF9XSVRIX1NFQ09ORFMpOlxuICAgICAgcmV0dXJuIFwiSEg6bW06c3NcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLlRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQpOlxuICAgICAgcmV0dXJuIFwiSEg6bW1cIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLlRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCk6XG4gICAgICByZXR1cm4gXCJISDptbVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfU0hPUlQpOlxuICAgICAgcmV0dXJuIFwiTS9kL3l5eXksIGg6bW0gYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfTUVEKTpcbiAgICAgIHJldHVybiBcIkxMTCBkLCB5eXl5LCBoOm1tIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVUSU1FX0ZVTEwpOlxuICAgICAgcmV0dXJuIFwiTExMTCBkLCB5eXl5LCBoOm1tIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVUSU1FX0hVR0UpOlxuICAgICAgcmV0dXJuIGRhdGVUaW1lSHVnZTtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUyk6XG4gICAgICByZXR1cm4gXCJNL2QveXl5eSwgaDptbTpzcyBhXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTKTpcbiAgICAgIHJldHVybiBcIkxMTCBkLCB5eXl5LCBoOm1tOnNzIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkpOlxuICAgICAgcmV0dXJuIFwiRUVFLCBkIExMTCB5eXl5LCBoOm1tIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTKTpcbiAgICAgIHJldHVybiBcIkxMTEwgZCwgeXl5eSwgaDptbTpzcyBhXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUyk6XG4gICAgICByZXR1cm4gXCJFRUVFLCBMTExMIGQsIHl5eXksIGg6bW06c3MgYVwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZGF0ZVRpbWVIdWdlO1xuICB9XG59XG4iLCAiaW1wb3J0ICogYXMgRW5nbGlzaCBmcm9tIFwiLi9lbmdsaXNoLmpzXCI7XG5pbXBvcnQgKiBhcyBGb3JtYXRzIGZyb20gXCIuL2Zvcm1hdHMuanNcIjtcbmltcG9ydCB7IHBhZFN0YXJ0IH0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuXG5mdW5jdGlvbiBzdHJpbmdpZnlUb2tlbnMoc3BsaXRzLCB0b2tlblRvU3RyaW5nKSB7XG4gIGxldCBzID0gXCJcIjtcbiAgZm9yIChjb25zdCB0b2tlbiBvZiBzcGxpdHMpIHtcbiAgICBpZiAodG9rZW4ubGl0ZXJhbCkge1xuICAgICAgcyArPSB0b2tlbi52YWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMgKz0gdG9rZW5Ub1N0cmluZyh0b2tlbi52YWwpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcztcbn1cblxuY29uc3QgbWFjcm9Ub2tlblRvRm9ybWF0T3B0cyA9IHtcbiAgRDogRm9ybWF0cy5EQVRFX1NIT1JULFxuICBERDogRm9ybWF0cy5EQVRFX01FRCxcbiAgREREOiBGb3JtYXRzLkRBVEVfRlVMTCxcbiAgRERERDogRm9ybWF0cy5EQVRFX0hVR0UsXG4gIHQ6IEZvcm1hdHMuVElNRV9TSU1QTEUsXG4gIHR0OiBGb3JtYXRzLlRJTUVfV0lUSF9TRUNPTkRTLFxuICB0dHQ6IEZvcm1hdHMuVElNRV9XSVRIX1NIT1JUX09GRlNFVCxcbiAgdHR0dDogRm9ybWF0cy5USU1FX1dJVEhfTE9OR19PRkZTRVQsXG4gIFQ6IEZvcm1hdHMuVElNRV8yNF9TSU1QTEUsXG4gIFRUOiBGb3JtYXRzLlRJTUVfMjRfV0lUSF9TRUNPTkRTLFxuICBUVFQ6IEZvcm1hdHMuVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCxcbiAgVFRUVDogRm9ybWF0cy5USU1FXzI0X1dJVEhfTE9OR19PRkZTRVQsXG4gIGY6IEZvcm1hdHMuREFURVRJTUVfU0hPUlQsXG4gIGZmOiBGb3JtYXRzLkRBVEVUSU1FX01FRCxcbiAgZmZmOiBGb3JtYXRzLkRBVEVUSU1FX0ZVTEwsXG4gIGZmZmY6IEZvcm1hdHMuREFURVRJTUVfSFVHRSxcbiAgRjogRm9ybWF0cy5EQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMsXG4gIEZGOiBGb3JtYXRzLkRBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMsXG4gIEZGRjogRm9ybWF0cy5EQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyxcbiAgRkZGRjogRm9ybWF0cy5EQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUyxcbn07XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGb3JtYXR0ZXIge1xuICBzdGF0aWMgY3JlYXRlKGxvY2FsZSwgb3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIG5ldyBGb3JtYXR0ZXIobG9jYWxlLCBvcHRzKTtcbiAgfVxuXG4gIHN0YXRpYyBwYXJzZUZvcm1hdChmbXQpIHtcbiAgICBsZXQgY3VycmVudCA9IG51bGwsXG4gICAgICBjdXJyZW50RnVsbCA9IFwiXCIsXG4gICAgICBicmFja2V0ZWQgPSBmYWxzZTtcbiAgICBjb25zdCBzcGxpdHMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZtdC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgYyA9IGZtdC5jaGFyQXQoaSk7XG4gICAgICBpZiAoYyA9PT0gXCInXCIpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRGdWxsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBzcGxpdHMucHVzaCh7IGxpdGVyYWw6IGJyYWNrZXRlZCwgdmFsOiBjdXJyZW50RnVsbCB9KTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50ID0gbnVsbDtcbiAgICAgICAgY3VycmVudEZ1bGwgPSBcIlwiO1xuICAgICAgICBicmFja2V0ZWQgPSAhYnJhY2tldGVkO1xuICAgICAgfSBlbHNlIGlmIChicmFja2V0ZWQpIHtcbiAgICAgICAgY3VycmVudEZ1bGwgKz0gYztcbiAgICAgIH0gZWxzZSBpZiAoYyA9PT0gY3VycmVudCkge1xuICAgICAgICBjdXJyZW50RnVsbCArPSBjO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGN1cnJlbnRGdWxsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBzcGxpdHMucHVzaCh7IGxpdGVyYWw6IGZhbHNlLCB2YWw6IGN1cnJlbnRGdWxsIH0pO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRGdWxsID0gYztcbiAgICAgICAgY3VycmVudCA9IGM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRGdWxsLmxlbmd0aCA+IDApIHtcbiAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogYnJhY2tldGVkLCB2YWw6IGN1cnJlbnRGdWxsIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzcGxpdHM7XG4gIH1cblxuICBzdGF0aWMgbWFjcm9Ub2tlblRvRm9ybWF0T3B0cyh0b2tlbikge1xuICAgIHJldHVybiBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzW3Rva2VuXTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGxvY2FsZSwgZm9ybWF0T3B0cykge1xuICAgIHRoaXMub3B0cyA9IGZvcm1hdE9wdHM7XG4gICAgdGhpcy5sb2MgPSBsb2NhbGU7XG4gICAgdGhpcy5zeXN0ZW1Mb2MgPSBudWxsO1xuICB9XG5cbiAgZm9ybWF0V2l0aFN5c3RlbURlZmF1bHQoZHQsIG9wdHMpIHtcbiAgICBpZiAodGhpcy5zeXN0ZW1Mb2MgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuc3lzdGVtTG9jID0gdGhpcy5sb2MucmVkZWZhdWx0VG9TeXN0ZW0oKTtcbiAgICB9XG4gICAgY29uc3QgZGYgPSB0aGlzLnN5c3RlbUxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7XG4gICAgcmV0dXJuIGRmLmZvcm1hdCgpO1xuICB9XG5cbiAgZm9ybWF0RGF0ZVRpbWUoZHQsIG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IGRmID0gdGhpcy5sb2MuZHRGb3JtYXR0ZXIoZHQsIHsgLi4udGhpcy5vcHRzLCAuLi5vcHRzIH0pO1xuICAgIHJldHVybiBkZi5mb3JtYXQoKTtcbiAgfVxuXG4gIGZvcm1hdERhdGVUaW1lUGFydHMoZHQsIG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IGRmID0gdGhpcy5sb2MuZHRGb3JtYXR0ZXIoZHQsIHsgLi4udGhpcy5vcHRzLCAuLi5vcHRzIH0pO1xuICAgIHJldHVybiBkZi5mb3JtYXRUb1BhcnRzKCk7XG4gIH1cblxuICByZXNvbHZlZE9wdGlvbnMoZHQsIG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IGRmID0gdGhpcy5sb2MuZHRGb3JtYXR0ZXIoZHQsIHsgLi4udGhpcy5vcHRzLCAuLi5vcHRzIH0pO1xuICAgIHJldHVybiBkZi5yZXNvbHZlZE9wdGlvbnMoKTtcbiAgfVxuXG4gIG51bShuLCBwID0gMCkge1xuICAgIC8vIHdlIGdldCBzb21lIHBlcmYgb3V0IG9mIGRvaW5nIHRoaXMgaGVyZSwgYW5ub3lpbmdseVxuICAgIGlmICh0aGlzLm9wdHMuZm9yY2VTaW1wbGUpIHtcbiAgICAgIHJldHVybiBwYWRTdGFydChuLCBwKTtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRzID0geyAuLi50aGlzLm9wdHMgfTtcblxuICAgIGlmIChwID4gMCkge1xuICAgICAgb3B0cy5wYWRUbyA9IHA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubG9jLm51bWJlckZvcm1hdHRlcihvcHRzKS5mb3JtYXQobik7XG4gIH1cblxuICBmb3JtYXREYXRlVGltZUZyb21TdHJpbmcoZHQsIGZtdCkge1xuICAgIGNvbnN0IGtub3duRW5nbGlzaCA9IHRoaXMubG9jLmxpc3RpbmdNb2RlKCkgPT09IFwiZW5cIixcbiAgICAgIHVzZURhdGVUaW1lRm9ybWF0dGVyID0gdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgJiYgdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgIT09IFwiZ3JlZ29yeVwiLFxuICAgICAgc3RyaW5nID0gKG9wdHMsIGV4dHJhY3QpID0+IHRoaXMubG9jLmV4dHJhY3QoZHQsIG9wdHMsIGV4dHJhY3QpLFxuICAgICAgZm9ybWF0T2Zmc2V0ID0gKG9wdHMpID0+IHtcbiAgICAgICAgaWYgKGR0LmlzT2Zmc2V0Rml4ZWQgJiYgZHQub2Zmc2V0ID09PSAwICYmIG9wdHMuYWxsb3daKSB7XG4gICAgICAgICAgcmV0dXJuIFwiWlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGR0LmlzVmFsaWQgPyBkdC56b25lLmZvcm1hdE9mZnNldChkdC50cywgb3B0cy5mb3JtYXQpIDogXCJcIjtcbiAgICAgIH0sXG4gICAgICBtZXJpZGllbSA9ICgpID0+XG4gICAgICAgIGtub3duRW5nbGlzaFxuICAgICAgICAgID8gRW5nbGlzaC5tZXJpZGllbUZvckRhdGVUaW1lKGR0KVxuICAgICAgICAgIDogc3RyaW5nKHsgaG91cjogXCJudW1lcmljXCIsIGhvdXJDeWNsZTogXCJoMTJcIiB9LCBcImRheXBlcmlvZFwiKSxcbiAgICAgIG1vbnRoID0gKGxlbmd0aCwgc3RhbmRhbG9uZSkgPT5cbiAgICAgICAga25vd25FbmdsaXNoXG4gICAgICAgICAgPyBFbmdsaXNoLm1vbnRoRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aClcbiAgICAgICAgICA6IHN0cmluZyhzdGFuZGFsb25lID8geyBtb250aDogbGVuZ3RoIH0gOiB7IG1vbnRoOiBsZW5ndGgsIGRheTogXCJudW1lcmljXCIgfSwgXCJtb250aFwiKSxcbiAgICAgIHdlZWtkYXkgPSAobGVuZ3RoLCBzdGFuZGFsb25lKSA9PlxuICAgICAgICBrbm93bkVuZ2xpc2hcbiAgICAgICAgICA/IEVuZ2xpc2gud2Vla2RheUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpXG4gICAgICAgICAgOiBzdHJpbmcoXG4gICAgICAgICAgICAgIHN0YW5kYWxvbmUgPyB7IHdlZWtkYXk6IGxlbmd0aCB9IDogeyB3ZWVrZGF5OiBsZW5ndGgsIG1vbnRoOiBcImxvbmdcIiwgZGF5OiBcIm51bWVyaWNcIiB9LFxuICAgICAgICAgICAgICBcIndlZWtkYXlcIlxuICAgICAgICAgICAgKSxcbiAgICAgIG1heWJlTWFjcm8gPSAodG9rZW4pID0+IHtcbiAgICAgICAgY29uc3QgZm9ybWF0T3B0cyA9IEZvcm1hdHRlci5tYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuKTtcbiAgICAgICAgaWYgKGZvcm1hdE9wdHMpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRXaXRoU3lzdGVtRGVmYXVsdChkdCwgZm9ybWF0T3B0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJhID0gKGxlbmd0aCkgPT5cbiAgICAgICAga25vd25FbmdsaXNoID8gRW5nbGlzaC5lcmFGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSA6IHN0cmluZyh7IGVyYTogbGVuZ3RoIH0sIFwiZXJhXCIpLFxuICAgICAgdG9rZW5Ub1N0cmluZyA9ICh0b2tlbikgPT4ge1xuICAgICAgICAvLyBXaGVyZSBwb3NzaWJsZTogaHR0cDovL2NsZHIudW5pY29kZS5vcmcvdHJhbnNsYXRpb24vZGF0ZS10aW1lLTEvZGF0ZS10aW1lI1RPQy1TdGFuZGFsb25lLXZzLi1Gb3JtYXQtU3R5bGVzXG4gICAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgICAvLyBtc1xuICAgICAgICAgIGNhc2UgXCJTXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQubWlsbGlzZWNvbmQpO1xuICAgICAgICAgIGNhc2UgXCJ1XCI6XG4gICAgICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgICAgICAgIGNhc2UgXCJTU1NcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taWxsaXNlY29uZCwgMyk7XG4gICAgICAgICAgLy8gc2Vjb25kc1xuICAgICAgICAgIGNhc2UgXCJzXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuc2Vjb25kKTtcbiAgICAgICAgICBjYXNlIFwic3NcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5zZWNvbmQsIDIpO1xuICAgICAgICAgIC8vIGZyYWN0aW9uYWwgc2Vjb25kc1xuICAgICAgICAgIGNhc2UgXCJ1dVwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKE1hdGguZmxvb3IoZHQubWlsbGlzZWNvbmQgLyAxMCksIDIpO1xuICAgICAgICAgIGNhc2UgXCJ1dXVcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShNYXRoLmZsb29yKGR0Lm1pbGxpc2Vjb25kIC8gMTAwKSk7XG4gICAgICAgICAgLy8gbWludXRlc1xuICAgICAgICAgIGNhc2UgXCJtXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQubWludXRlKTtcbiAgICAgICAgICBjYXNlIFwibW1cIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taW51dGUsIDIpO1xuICAgICAgICAgIC8vIGhvdXJzXG4gICAgICAgICAgY2FzZSBcImhcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyICUgMTIgPT09IDAgPyAxMiA6IGR0LmhvdXIgJSAxMik7XG4gICAgICAgICAgY2FzZSBcImhoXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciAlIDEyID09PSAwID8gMTIgOiBkdC5ob3VyICUgMTIsIDIpO1xuICAgICAgICAgIGNhc2UgXCJIXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91cik7XG4gICAgICAgICAgY2FzZSBcIkhIXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciwgMik7XG4gICAgICAgICAgLy8gb2Zmc2V0XG4gICAgICAgICAgY2FzZSBcIlpcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgKzZcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRPZmZzZXQoeyBmb3JtYXQ6IFwibmFycm93XCIsIGFsbG93WjogdGhpcy5vcHRzLmFsbG93WiB9KTtcbiAgICAgICAgICBjYXNlIFwiWlpcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgKzA2OjAwXG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHsgZm9ybWF0OiBcInNob3J0XCIsIGFsbG93WjogdGhpcy5vcHRzLmFsbG93WiB9KTtcbiAgICAgICAgICBjYXNlIFwiWlpaXCI6XG4gICAgICAgICAgICAvLyBsaWtlICswNjAwXG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHsgZm9ybWF0OiBcInRlY2hpZVwiLCBhbGxvd1o6IHRoaXMub3B0cy5hbGxvd1ogfSk7XG4gICAgICAgICAgY2FzZSBcIlpaWlpcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgRVNUXG4gICAgICAgICAgICByZXR1cm4gZHQuem9uZS5vZmZzZXROYW1lKGR0LnRzLCB7IGZvcm1hdDogXCJzaG9ydFwiLCBsb2NhbGU6IHRoaXMubG9jLmxvY2FsZSB9KTtcbiAgICAgICAgICBjYXNlIFwiWlpaWlpcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgRWFzdGVybiBTdGFuZGFyZCBUaW1lXG4gICAgICAgICAgICByZXR1cm4gZHQuem9uZS5vZmZzZXROYW1lKGR0LnRzLCB7IGZvcm1hdDogXCJsb25nXCIsIGxvY2FsZTogdGhpcy5sb2MubG9jYWxlIH0pO1xuICAgICAgICAgIC8vIHpvbmVcbiAgICAgICAgICBjYXNlIFwielwiOlxuICAgICAgICAgICAgLy8gbGlrZSBBbWVyaWNhL05ld19Zb3JrXG4gICAgICAgICAgICByZXR1cm4gZHQuem9uZU5hbWU7XG4gICAgICAgICAgLy8gbWVyaWRpZW1zXG4gICAgICAgICAgY2FzZSBcImFcIjpcbiAgICAgICAgICAgIHJldHVybiBtZXJpZGllbSgpO1xuICAgICAgICAgIC8vIGRhdGVzXG4gICAgICAgICAgY2FzZSBcImRcIjpcbiAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7IGRheTogXCJudW1lcmljXCIgfSwgXCJkYXlcIikgOiB0aGlzLm51bShkdC5kYXkpO1xuICAgICAgICAgIGNhc2UgXCJkZFwiOlxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyID8gc3RyaW5nKHsgZGF5OiBcIjItZGlnaXRcIiB9LCBcImRheVwiKSA6IHRoaXMubnVtKGR0LmRheSwgMik7XG4gICAgICAgICAgLy8gd2Vla2RheXMgLSBzdGFuZGFsb25lXG4gICAgICAgICAgY2FzZSBcImNcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtkYXkpO1xuICAgICAgICAgIGNhc2UgXCJjY2NcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXMnXG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheShcInNob3J0XCIsIHRydWUpO1xuICAgICAgICAgIGNhc2UgXCJjY2NjXCI6XG4gICAgICAgICAgICAvLyBsaWtlICdUdWVzZGF5J1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoXCJsb25nXCIsIHRydWUpO1xuICAgICAgICAgIGNhc2UgXCJjY2NjY1wiOlxuICAgICAgICAgICAgLy8gbGlrZSAnVCdcbiAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KFwibmFycm93XCIsIHRydWUpO1xuICAgICAgICAgIC8vIHdlZWtkYXlzIC0gZm9ybWF0XG4gICAgICAgICAgY2FzZSBcIkVcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtkYXkpO1xuICAgICAgICAgIGNhc2UgXCJFRUVcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXMnXG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheShcInNob3J0XCIsIGZhbHNlKTtcbiAgICAgICAgICBjYXNlIFwiRUVFRVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAnVHVlc2RheSdcbiAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KFwibG9uZ1wiLCBmYWxzZSk7XG4gICAgICAgICAgY2FzZSBcIkVFRUVFXCI6XG4gICAgICAgICAgICAvLyBsaWtlICdUJ1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoXCJuYXJyb3dcIiwgZmFsc2UpO1xuICAgICAgICAgIC8vIG1vbnRocyAtIHN0YW5kYWxvbmVcbiAgICAgICAgICBjYXNlIFwiTFwiOlxuICAgICAgICAgICAgLy8gbGlrZSAxXG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXJcbiAgICAgICAgICAgICAgPyBzdHJpbmcoeyBtb250aDogXCJudW1lcmljXCIsIGRheTogXCJudW1lcmljXCIgfSwgXCJtb250aFwiKVxuICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoKTtcbiAgICAgICAgICBjYXNlIFwiTExcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMDEsIGRvZXNuJ3Qgc2VlbSB0byB3b3JrXG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXJcbiAgICAgICAgICAgICAgPyBzdHJpbmcoeyBtb250aDogXCIyLWRpZ2l0XCIsIGRheTogXCJudW1lcmljXCIgfSwgXCJtb250aFwiKVxuICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTtcbiAgICAgICAgICBjYXNlIFwiTExMXCI6XG4gICAgICAgICAgICAvLyBsaWtlIEphblxuICAgICAgICAgICAgcmV0dXJuIG1vbnRoKFwic2hvcnRcIiwgdHJ1ZSk7XG4gICAgICAgICAgY2FzZSBcIkxMTExcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgSmFudWFyeVxuICAgICAgICAgICAgcmV0dXJuIG1vbnRoKFwibG9uZ1wiLCB0cnVlKTtcbiAgICAgICAgICBjYXNlIFwiTExMTExcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgSlxuICAgICAgICAgICAgcmV0dXJuIG1vbnRoKFwibmFycm93XCIsIHRydWUpO1xuICAgICAgICAgIC8vIG1vbnRocyAtIGZvcm1hdFxuICAgICAgICAgIGNhc2UgXCJNXCI6XG4gICAgICAgICAgICAvLyBsaWtlIDFcbiAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlclxuICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiBcIm51bWVyaWNcIiB9LCBcIm1vbnRoXCIpXG4gICAgICAgICAgICAgIDogdGhpcy5udW0oZHQubW9udGgpO1xuICAgICAgICAgIGNhc2UgXCJNTVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAwMVxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyXG4gICAgICAgICAgICAgID8gc3RyaW5nKHsgbW9udGg6IFwiMi1kaWdpdFwiIH0sIFwibW9udGhcIilcbiAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC5tb250aCwgMik7XG4gICAgICAgICAgY2FzZSBcIk1NTVwiOlxuICAgICAgICAgICAgLy8gbGlrZSBKYW5cbiAgICAgICAgICAgIHJldHVybiBtb250aChcInNob3J0XCIsIGZhbHNlKTtcbiAgICAgICAgICBjYXNlIFwiTU1NTVwiOlxuICAgICAgICAgICAgLy8gbGlrZSBKYW51YXJ5XG4gICAgICAgICAgICByZXR1cm4gbW9udGgoXCJsb25nXCIsIGZhbHNlKTtcbiAgICAgICAgICBjYXNlIFwiTU1NTU1cIjpcbiAgICAgICAgICAgIC8vIGxpa2UgSlxuICAgICAgICAgICAgcmV0dXJuIG1vbnRoKFwibmFycm93XCIsIGZhbHNlKTtcbiAgICAgICAgICAvLyB5ZWFyc1xuICAgICAgICAgIGNhc2UgXCJ5XCI6XG4gICAgICAgICAgICAvLyBsaWtlIDIwMTRcbiAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7IHllYXI6IFwibnVtZXJpY1wiIH0sIFwieWVhclwiKSA6IHRoaXMubnVtKGR0LnllYXIpO1xuICAgICAgICAgIGNhc2UgXCJ5eVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAxNFxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyXG4gICAgICAgICAgICAgID8gc3RyaW5nKHsgeWVhcjogXCIyLWRpZ2l0XCIgfSwgXCJ5ZWFyXCIpXG4gICAgICAgICAgICAgIDogdGhpcy5udW0oZHQueWVhci50b1N0cmluZygpLnNsaWNlKC0yKSwgMik7XG4gICAgICAgICAgY2FzZSBcInl5eXlcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMDAxMlxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyXG4gICAgICAgICAgICAgID8gc3RyaW5nKHsgeWVhcjogXCJudW1lcmljXCIgfSwgXCJ5ZWFyXCIpXG4gICAgICAgICAgICAgIDogdGhpcy5udW0oZHQueWVhciwgNCk7XG4gICAgICAgICAgY2FzZSBcInl5eXl5eVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAwMDAwMTJcbiAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlclxuICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6IFwibnVtZXJpY1wiIH0sIFwieWVhclwiKVxuICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDYpO1xuICAgICAgICAgIC8vIGVyYXNcbiAgICAgICAgICBjYXNlIFwiR1wiOlxuICAgICAgICAgICAgLy8gbGlrZSBBRFxuICAgICAgICAgICAgcmV0dXJuIGVyYShcInNob3J0XCIpO1xuICAgICAgICAgIGNhc2UgXCJHR1wiOlxuICAgICAgICAgICAgLy8gbGlrZSBBbm5vIERvbWluaVxuICAgICAgICAgICAgcmV0dXJuIGVyYShcImxvbmdcIik7XG4gICAgICAgICAgY2FzZSBcIkdHR0dHXCI6XG4gICAgICAgICAgICByZXR1cm4gZXJhKFwibmFycm93XCIpO1xuICAgICAgICAgIGNhc2UgXCJra1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTtcbiAgICAgICAgICBjYXNlIFwia2tra1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLCA0KTtcbiAgICAgICAgICBjYXNlIFwiV1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIpO1xuICAgICAgICAgIGNhc2UgXCJXV1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIsIDIpO1xuICAgICAgICAgIGNhc2UgXCJvXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQub3JkaW5hbCk7XG4gICAgICAgICAgY2FzZSBcIm9vb1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm9yZGluYWwsIDMpO1xuICAgICAgICAgIGNhc2UgXCJxXCI6XG4gICAgICAgICAgICAvLyBsaWtlIDFcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5xdWFydGVyKTtcbiAgICAgICAgICBjYXNlIFwicXFcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMDFcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5xdWFydGVyLCAyKTtcbiAgICAgICAgICBjYXNlIFwiWFwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKE1hdGguZmxvb3IoZHQudHMgLyAxMDAwKSk7XG4gICAgICAgICAgY2FzZSBcInhcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC50cyk7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBtYXliZU1hY3JvKHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZtdCksIHRva2VuVG9TdHJpbmcpO1xuICB9XG5cbiAgZm9ybWF0RHVyYXRpb25Gcm9tU3RyaW5nKGR1ciwgZm10KSB7XG4gICAgY29uc3QgdG9rZW5Ub0ZpZWxkID0gKHRva2VuKSA9PiB7XG4gICAgICAgIHN3aXRjaCAodG9rZW5bMF0pIHtcbiAgICAgICAgICBjYXNlIFwiU1wiOlxuICAgICAgICAgICAgcmV0dXJuIFwibWlsbGlzZWNvbmRcIjtcbiAgICAgICAgICBjYXNlIFwic1wiOlxuICAgICAgICAgICAgcmV0dXJuIFwic2Vjb25kXCI7XG4gICAgICAgICAgY2FzZSBcIm1cIjpcbiAgICAgICAgICAgIHJldHVybiBcIm1pbnV0ZVwiO1xuICAgICAgICAgIGNhc2UgXCJoXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJob3VyXCI7XG4gICAgICAgICAgY2FzZSBcImRcIjpcbiAgICAgICAgICAgIHJldHVybiBcImRheVwiO1xuICAgICAgICAgIGNhc2UgXCJNXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJtb250aFwiO1xuICAgICAgICAgIGNhc2UgXCJ5XCI6XG4gICAgICAgICAgICByZXR1cm4gXCJ5ZWFyXCI7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdG9rZW5Ub1N0cmluZyA9IChsaWxkdXIpID0+ICh0b2tlbikgPT4ge1xuICAgICAgICBjb25zdCBtYXBwZWQgPSB0b2tlblRvRmllbGQodG9rZW4pO1xuICAgICAgICBpZiAobWFwcGVkKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGxpbGR1ci5nZXQobWFwcGVkKSwgdG9rZW4ubGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0b2tlbnMgPSBGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm10KSxcbiAgICAgIHJlYWxUb2tlbnMgPSB0b2tlbnMucmVkdWNlKFxuICAgICAgICAoZm91bmQsIHsgbGl0ZXJhbCwgdmFsIH0pID0+IChsaXRlcmFsID8gZm91bmQgOiBmb3VuZC5jb25jYXQodmFsKSksXG4gICAgICAgIFtdXG4gICAgICApLFxuICAgICAgY29sbGFwc2VkID0gZHVyLnNoaWZ0VG8oLi4ucmVhbFRva2Vucy5tYXAodG9rZW5Ub0ZpZWxkKS5maWx0ZXIoKHQpID0+IHQpKTtcbiAgICByZXR1cm4gc3RyaW5naWZ5VG9rZW5zKHRva2VucywgdG9rZW5Ub1N0cmluZyhjb2xsYXBzZWQpKTtcbiAgfVxufVxuIiwgImV4cG9ydCBkZWZhdWx0IGNsYXNzIEludmFsaWQge1xuICBjb25zdHJ1Y3RvcihyZWFzb24sIGV4cGxhbmF0aW9uKSB7XG4gICAgdGhpcy5yZWFzb24gPSByZWFzb247XG4gICAgdGhpcy5leHBsYW5hdGlvbiA9IGV4cGxhbmF0aW9uO1xuICB9XG5cbiAgdG9NZXNzYWdlKCkge1xuICAgIGlmICh0aGlzLmV4cGxhbmF0aW9uKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5yZWFzb259OiAke3RoaXMuZXhwbGFuYXRpb259YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVhc29uO1xuICAgIH1cbiAgfVxufVxuIiwgImltcG9ydCB7IFpvbmVJc0Fic3RyYWN0RXJyb3IgfSBmcm9tIFwiLi9lcnJvcnMuanNcIjtcblxuLyoqXG4gKiBAaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFpvbmUge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygem9uZVxuICAgKiBAYWJzdHJhY3RcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCB0eXBlKCkge1xuICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyB6b25lLlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBuYW1lKCkge1xuICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBvZmZzZXQgaXMga25vd24gdG8gYmUgZml4ZWQgZm9yIHRoZSB3aG9sZSB5ZWFyLlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNVbml2ZXJzYWwoKSB7XG4gICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyBjb21tb24gbmFtZSAoc3VjaCBhcyBFU1QpIGF0IHRoZSBzcGVjaWZpZWQgdGltZXN0YW1wXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcGFyYW0ge251bWJlcn0gdHMgLSBFcG9jaCBtaWxsaXNlY29uZHMgZm9yIHdoaWNoIHRvIGdldCB0aGUgbmFtZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gYWZmZWN0IHRoZSBmb3JtYXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMuZm9ybWF0IC0gV2hhdCBzdHlsZSBvZiBvZmZzZXQgdG8gcmV0dXJuLiBBY2NlcHRzICdsb25nJyBvciAnc2hvcnQnLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5sb2NhbGUgLSBXaGF0IGxvY2FsZSB0byByZXR1cm4gdGhlIG9mZnNldCBuYW1lIGluLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBvZmZzZXROYW1lKHRzLCBvcHRzKSB7XG4gICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyB2YWx1ZSBhcyBhIHN0cmluZ1xuICAgKiBAYWJzdHJhY3RcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRzIC0gRXBvY2ggbWlsbGlzZWNvbmRzIGZvciB3aGljaCB0byBnZXQgdGhlIG9mZnNldFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0IC0gV2hhdCBzdHlsZSBvZiBvZmZzZXQgdG8gcmV0dXJuLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0cyAnbmFycm93JywgJ3Nob3J0Jywgb3IgJ3RlY2hpZScuIFJldHVybmluZyAnKzYnLCAnKzA2OjAwJywgb3IgJyswNjAwJyByZXNwZWN0aXZlbHlcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHtcbiAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgb2Zmc2V0IGluIG1pbnV0ZXMgZm9yIHRoaXMgem9uZSBhdCB0aGUgc3BlY2lmaWVkIHRpbWVzdGFtcC5cbiAgICogQGFic3RyYWN0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gY29tcHV0ZSB0aGUgb2Zmc2V0XG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIG9mZnNldCh0cykge1xuICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBab25lIGlzIGVxdWFsIHRvIGFub3RoZXIgem9uZVxuICAgKiBAYWJzdHJhY3RcbiAgICogQHBhcmFtIHtab25lfSBvdGhlclpvbmUgLSB0aGUgem9uZSB0byBjb21wYXJlXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBlcXVhbHMob3RoZXJab25lKSB7XG4gICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIFpvbmUgaXMgdmFsaWQuXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBpc1ZhbGlkKCkge1xuICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7XG4gIH1cbn1cbiIsICJpbXBvcnQgeyBmb3JtYXRPZmZzZXQsIHBhcnNlWm9uZUluZm8gfSBmcm9tIFwiLi4vaW1wbC91dGlsLmpzXCI7XG5pbXBvcnQgWm9uZSBmcm9tIFwiLi4vem9uZS5qc1wiO1xuXG5sZXQgc2luZ2xldG9uID0gbnVsbDtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBsb2NhbCB6b25lIGZvciB0aGlzIEphdmFTY3JpcHQgZW52aXJvbm1lbnQuXG4gKiBAaW1wbGVtZW50cyB7Wm9uZX1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3lzdGVtWm9uZSBleHRlbmRzIFpvbmUge1xuICAvKipcbiAgICogR2V0IGEgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBsb2NhbCB6b25lXG4gICAqIEByZXR1cm4ge1N5c3RlbVpvbmV9XG4gICAqL1xuICBzdGF0aWMgZ2V0IGluc3RhbmNlKCkge1xuICAgIGlmIChzaW5nbGV0b24gPT09IG51bGwpIHtcbiAgICAgIHNpbmdsZXRvbiA9IG5ldyBTeXN0ZW1ab25lKCk7XG4gICAgfVxuICAgIHJldHVybiBzaW5nbGV0b247XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gXCJzeXN0ZW1cIjtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IGlzVW5pdmVyc2FsKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldE5hbWUodHMsIHsgZm9ybWF0LCBsb2NhbGUgfSkge1xuICAgIHJldHVybiBwYXJzZVpvbmVJbmZvKHRzLCBmb3JtYXQsIGxvY2FsZSk7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkge1xuICAgIHJldHVybiBmb3JtYXRPZmZzZXQodGhpcy5vZmZzZXQodHMpLCBmb3JtYXQpO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgb2Zmc2V0KHRzKSB7XG4gICAgcmV0dXJuIC1uZXcgRGF0ZSh0cykuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGVxdWFscyhvdGhlclpvbmUpIHtcbiAgICByZXR1cm4gb3RoZXJab25lLnR5cGUgPT09IFwic3lzdGVtXCI7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIiwgImltcG9ydCB7IGZvcm1hdE9mZnNldCwgcGFyc2Vab25lSW5mbywgaXNVbmRlZmluZWQsIGlhbmFSZWdleCwgb2JqVG9Mb2NhbFRTIH0gZnJvbSBcIi4uL2ltcGwvdXRpbC5qc1wiO1xuaW1wb3J0IFpvbmUgZnJvbSBcIi4uL3pvbmUuanNcIjtcblxuY29uc3QgbWF0Y2hpbmdSZWdleCA9IFJlZ0V4cChgXiR7aWFuYVJlZ2V4LnNvdXJjZX0kYCk7XG5cbmxldCBkdGZDYWNoZSA9IHt9O1xuZnVuY3Rpb24gbWFrZURURih6b25lKSB7XG4gIGlmICghZHRmQ2FjaGVbem9uZV0pIHtcbiAgICBkdGZDYWNoZVt6b25lXSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFwiZW4tVVNcIiwge1xuICAgICAgaG91cjEyOiBmYWxzZSxcbiAgICAgIHRpbWVab25lOiB6b25lLFxuICAgICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgICBtb250aDogXCIyLWRpZ2l0XCIsXG4gICAgICBkYXk6IFwiMi1kaWdpdFwiLFxuICAgICAgaG91cjogXCIyLWRpZ2l0XCIsXG4gICAgICBtaW51dGU6IFwiMi1kaWdpdFwiLFxuICAgICAgc2Vjb25kOiBcIjItZGlnaXRcIixcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZHRmQ2FjaGVbem9uZV07XG59XG5cbmNvbnN0IHR5cGVUb1BvcyA9IHtcbiAgeWVhcjogMCxcbiAgbW9udGg6IDEsXG4gIGRheTogMixcbiAgaG91cjogMyxcbiAgbWludXRlOiA0LFxuICBzZWNvbmQ6IDUsXG59O1xuXG5mdW5jdGlvbiBoYWNreU9mZnNldChkdGYsIGRhdGUpIHtcbiAgY29uc3QgZm9ybWF0dGVkID0gZHRmLmZvcm1hdChkYXRlKS5yZXBsYWNlKC9cXHUyMDBFL2csIFwiXCIpLFxuICAgIHBhcnNlZCA9IC8oXFxkKylcXC8oXFxkKylcXC8oXFxkKyksPyAoXFxkKyk6KFxcZCspOihcXGQrKS8uZXhlYyhmb3JtYXR0ZWQpLFxuICAgIFssIGZNb250aCwgZkRheSwgZlllYXIsIGZIb3VyLCBmTWludXRlLCBmU2Vjb25kXSA9IHBhcnNlZDtcbiAgcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF07XG59XG5cbmZ1bmN0aW9uIHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSkge1xuICBjb25zdCBmb3JtYXR0ZWQgPSBkdGYuZm9ybWF0VG9QYXJ0cyhkYXRlKSxcbiAgICBmaWxsZWQgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb3JtYXR0ZWQubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBmb3JtYXR0ZWRbaV0sXG4gICAgICBwb3MgPSB0eXBlVG9Qb3NbdHlwZV07XG5cbiAgICBpZiAoIWlzVW5kZWZpbmVkKHBvcykpIHtcbiAgICAgIGZpbGxlZFtwb3NdID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZpbGxlZDtcbn1cblxubGV0IGlhbmFab25lQ2FjaGUgPSB7fTtcbi8qKlxuICogQSB6b25lIGlkZW50aWZpZWQgYnkgYW4gSUFOQSBpZGVudGlmaWVyLCBsaWtlIEFtZXJpY2EvTmV3X1lvcmtcbiAqIEBpbXBsZW1lbnRzIHtab25lfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJQU5BWm9uZSBleHRlbmRzIFpvbmUge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBab25lIG5hbWVcbiAgICogQHJldHVybiB7SUFOQVpvbmV9XG4gICAqL1xuICBzdGF0aWMgY3JlYXRlKG5hbWUpIHtcbiAgICBpZiAoIWlhbmFab25lQ2FjaGVbbmFtZV0pIHtcbiAgICAgIGlhbmFab25lQ2FjaGVbbmFtZV0gPSBuZXcgSUFOQVpvbmUobmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBpYW5hWm9uZUNhY2hlW25hbWVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IGxvY2FsIGNhY2hlcy4gU2hvdWxkIG9ubHkgYmUgbmVjZXNzYXJ5IGluIHRlc3Rpbmcgc2NlbmFyaW9zLlxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgc3RhdGljIHJlc2V0Q2FjaGUoKSB7XG4gICAgaWFuYVpvbmVDYWNoZSA9IHt9O1xuICAgIGR0ZkNhY2hlID0ge307XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBwcm92aWRlZCBzdHJpbmcgaXMgYSB2YWxpZCBzcGVjaWZpZXIuIFRoaXMgb25seSBjaGVja3MgdGhlIHN0cmluZydzIGZvcm1hdCwgbm90IHRoYXQgdGhlIHNwZWNpZmllciBpZGVudGlmaWVzIGEga25vd24gem9uZTsgc2VlIGlzVmFsaWRab25lIGZvciB0aGF0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcyAtIFRoZSBzdHJpbmcgdG8gY2hlY2sgdmFsaWRpdHkgb25cbiAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcihcIkFtZXJpY2EvTmV3X1lvcmtcIikgLy89PiB0cnVlXG4gICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRTcGVjaWZpZXIoXCJGYW50YXNpYS9DYXN0bGVcIikgLy89PiB0cnVlXG4gICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRTcGVjaWZpZXIoXCJTcG9ydH5+YmxvcnBcIikgLy89PiBmYWxzZVxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgc3RhdGljIGlzVmFsaWRTcGVjaWZpZXIocykge1xuICAgIHJldHVybiAhIShzICYmIHMubWF0Y2gobWF0Y2hpbmdSZWdleCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB0aGUgcHJvdmlkZWQgc3RyaW5nIGlkZW50aWZpZXMgYSByZWFsIHpvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHpvbmUgLSBUaGUgc3RyaW5nIHRvIGNoZWNrXG4gICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRab25lKFwiQW1lcmljYS9OZXdfWW9ya1wiKSAvLz0+IHRydWVcbiAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoXCJGYW50YXNpYS9DYXN0bGVcIikgLy89PiBmYWxzZVxuICAgKiBAZXhhbXBsZSBJQU5BWm9uZS5pc1ZhbGlkWm9uZShcIlNwb3J0fn5ibG9ycFwiKSAvLz0+IGZhbHNlXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBzdGF0aWMgaXNWYWxpZFpvbmUoem9uZSkge1xuICAgIGlmICghem9uZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoXCJlbi1VU1wiLCB7IHRpbWVab25lOiB6b25lIH0pLmZvcm1hdCgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKG5hbWUpIHtcbiAgICBzdXBlcigpO1xuICAgIC8qKiBAcHJpdmF0ZSAqKi9cbiAgICB0aGlzLnpvbmVOYW1lID0gbmFtZTtcbiAgICAvKiogQHByaXZhdGUgKiovXG4gICAgdGhpcy52YWxpZCA9IElBTkFab25lLmlzVmFsaWRab25lKG5hbWUpO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIFwiaWFuYVwiO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuem9uZU5hbWU7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNVbml2ZXJzYWwoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgb2Zmc2V0TmFtZSh0cywgeyBmb3JtYXQsIGxvY2FsZSB9KSB7XG4gICAgcmV0dXJuIHBhcnNlWm9uZUluZm8odHMsIGZvcm1hdCwgbG9jYWxlLCB0aGlzLm5hbWUpO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHtcbiAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMub2Zmc2V0KHRzKSwgZm9ybWF0KTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldCh0cykge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0cyk7XG5cbiAgICBpZiAoaXNOYU4oZGF0ZSkpIHJldHVybiBOYU47XG5cbiAgICBjb25zdCBkdGYgPSBtYWtlRFRGKHRoaXMubmFtZSksXG4gICAgICBbeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmRdID0gZHRmLmZvcm1hdFRvUGFydHNcbiAgICAgICAgPyBwYXJ0c09mZnNldChkdGYsIGRhdGUpXG4gICAgICAgIDogaGFja3lPZmZzZXQoZHRmLCBkYXRlKTtcblxuICAgIC8vIGJlY2F1c2Ugd2UncmUgdXNpbmcgaG91cjEyIGFuZCBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMDI1NTY0JmNhbj0yJnE9JTIyMjQlM0EwMCUyMiUyMGRhdGV0aW1lZm9ybWF0XG4gICAgY29uc3QgYWRqdXN0ZWRIb3VyID0gaG91ciA9PT0gMjQgPyAwIDogaG91cjtcblxuICAgIGNvbnN0IGFzVVRDID0gb2JqVG9Mb2NhbFRTKHtcbiAgICAgIHllYXIsXG4gICAgICBtb250aCxcbiAgICAgIGRheSxcbiAgICAgIGhvdXI6IGFkanVzdGVkSG91cixcbiAgICAgIG1pbnV0ZSxcbiAgICAgIHNlY29uZCxcbiAgICAgIG1pbGxpc2Vjb25kOiAwLFxuICAgIH0pO1xuXG4gICAgbGV0IGFzVFMgPSArZGF0ZTtcbiAgICBjb25zdCBvdmVyID0gYXNUUyAlIDEwMDA7XG4gICAgYXNUUyAtPSBvdmVyID49IDAgPyBvdmVyIDogMTAwMCArIG92ZXI7XG4gICAgcmV0dXJuIChhc1VUQyAtIGFzVFMpIC8gKDYwICogMTAwMCk7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBlcXVhbHMob3RoZXJab25lKSB7XG4gICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSBcImlhbmFcIiAmJiBvdGhlclpvbmUubmFtZSA9PT0gdGhpcy5uYW1lO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IGlzVmFsaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWQ7XG4gIH1cbn1cbiIsICJpbXBvcnQgeyBmb3JtYXRPZmZzZXQsIHNpZ25lZE9mZnNldCB9IGZyb20gXCIuLi9pbXBsL3V0aWwuanNcIjtcbmltcG9ydCBab25lIGZyb20gXCIuLi96b25lLmpzXCI7XG5cbmxldCBzaW5nbGV0b24gPSBudWxsO1xuXG4vKipcbiAqIEEgem9uZSB3aXRoIGEgZml4ZWQgb2Zmc2V0IChtZWFuaW5nIG5vIERTVClcbiAqIEBpbXBsZW1lbnRzIHtab25lfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGaXhlZE9mZnNldFpvbmUgZXh0ZW5kcyBab25lIHtcbiAgLyoqXG4gICAqIEdldCBhIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiBVVENcbiAgICogQHJldHVybiB7Rml4ZWRPZmZzZXRab25lfVxuICAgKi9cbiAgc3RhdGljIGdldCB1dGNJbnN0YW5jZSgpIHtcbiAgICBpZiAoc2luZ2xldG9uID09PSBudWxsKSB7XG4gICAgICBzaW5nbGV0b24gPSBuZXcgRml4ZWRPZmZzZXRab25lKDApO1xuICAgIH1cbiAgICByZXR1cm4gc2luZ2xldG9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBpbnN0YW5jZSB3aXRoIGEgc3BlY2lmaWVkIG9mZnNldFxuICAgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0IC0gVGhlIG9mZnNldCBpbiBtaW51dGVzXG4gICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX1cbiAgICovXG4gIHN0YXRpYyBpbnN0YW5jZShvZmZzZXQpIHtcbiAgICByZXR1cm4gb2Zmc2V0ID09PSAwID8gRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlIDogbmV3IEZpeGVkT2Zmc2V0Wm9uZShvZmZzZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBpbnN0YW5jZSBvZiBGaXhlZE9mZnNldFpvbmUgZnJvbSBhIFVUQyBvZmZzZXQgc3RyaW5nLCBsaWtlIFwiVVRDKzZcIlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcyAtIFRoZSBvZmZzZXQgc3RyaW5nIHRvIHBhcnNlXG4gICAqIEBleGFtcGxlIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcihcIlVUQys2XCIpXG4gICAqIEBleGFtcGxlIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcihcIlVUQyswNlwiKVxuICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoXCJVVEMtNjowMFwiKVxuICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9XG4gICAqL1xuICBzdGF0aWMgcGFyc2VTcGVjaWZpZXIocykge1xuICAgIGlmIChzKSB7XG4gICAgICBjb25zdCByID0gcy5tYXRjaCgvXnV0Yyg/OihbKy1dXFxkezEsMn0pKD86OihcXGR7Mn0pKT8pPyQvaSk7XG4gICAgICBpZiAocikge1xuICAgICAgICByZXR1cm4gbmV3IEZpeGVkT2Zmc2V0Wm9uZShzaWduZWRPZmZzZXQoclsxXSwgclsyXSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKG9mZnNldCkge1xuICAgIHN1cGVyKCk7XG4gICAgLyoqIEBwcml2YXRlICoqL1xuICAgIHRoaXMuZml4ZWQgPSBvZmZzZXQ7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gXCJmaXhlZFwiO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZml4ZWQgPT09IDAgPyBcIlVUQ1wiIDogYFVUQyR7Zm9ybWF0T2Zmc2V0KHRoaXMuZml4ZWQsIFwibmFycm93XCIpfWA7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBvZmZzZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkge1xuICAgIHJldHVybiBmb3JtYXRPZmZzZXQodGhpcy5maXhlZCwgZm9ybWF0KTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBpc1VuaXZlcnNhbCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldCgpIHtcbiAgICByZXR1cm4gdGhpcy5maXhlZDtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGVxdWFscyhvdGhlclpvbmUpIHtcbiAgICByZXR1cm4gb3RoZXJab25lLnR5cGUgPT09IFwiZml4ZWRcIiAmJiBvdGhlclpvbmUuZml4ZWQgPT09IHRoaXMuZml4ZWQ7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIiwgImltcG9ydCBab25lIGZyb20gXCIuLi96b25lLmpzXCI7XG5cbi8qKlxuICogQSB6b25lIHRoYXQgZmFpbGVkIHRvIHBhcnNlLiBZb3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gaW5zdGFudGlhdGUgdGhpcy5cbiAqIEBpbXBsZW1lbnRzIHtab25lfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnZhbGlkWm9uZSBleHRlbmRzIFpvbmUge1xuICBjb25zdHJ1Y3Rvcih6b25lTmFtZSkge1xuICAgIHN1cGVyKCk7XG4gICAgLyoqICBAcHJpdmF0ZSAqL1xuICAgIHRoaXMuem9uZU5hbWUgPSB6b25lTmFtZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiBcImludmFsaWRcIjtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnpvbmVOYW1lO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IGlzVW5pdmVyc2FsKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldE5hbWUoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBmb3JtYXRPZmZzZXQoKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBvZmZzZXQoKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGVxdWFscygpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsICIvKipcbiAqIEBwcml2YXRlXG4gKi9cblxuaW1wb3J0IFpvbmUgZnJvbSBcIi4uL3pvbmUuanNcIjtcbmltcG9ydCBJQU5BWm9uZSBmcm9tIFwiLi4vem9uZXMvSUFOQVpvbmUuanNcIjtcbmltcG9ydCBGaXhlZE9mZnNldFpvbmUgZnJvbSBcIi4uL3pvbmVzL2ZpeGVkT2Zmc2V0Wm9uZS5qc1wiO1xuaW1wb3J0IEludmFsaWRab25lIGZyb20gXCIuLi96b25lcy9pbnZhbGlkWm9uZS5qc1wiO1xuXG5pbXBvcnQgeyBpc1VuZGVmaW5lZCwgaXNTdHJpbmcsIGlzTnVtYmVyIH0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplWm9uZShpbnB1dCwgZGVmYXVsdFpvbmUpIHtcbiAgbGV0IG9mZnNldDtcbiAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSB8fCBpbnB1dCA9PT0gbnVsbCkge1xuICAgIHJldHVybiBkZWZhdWx0Wm9uZTtcbiAgfSBlbHNlIGlmIChpbnB1dCBpbnN0YW5jZW9mIFpvbmUpIHtcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH0gZWxzZSBpZiAoaXNTdHJpbmcoaW5wdXQpKSB7XG4gICAgY29uc3QgbG93ZXJlZCA9IGlucHV0LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGxvd2VyZWQgPT09IFwibG9jYWxcIiB8fCBsb3dlcmVkID09PSBcInN5c3RlbVwiKSByZXR1cm4gZGVmYXVsdFpvbmU7XG4gICAgZWxzZSBpZiAobG93ZXJlZCA9PT0gXCJ1dGNcIiB8fCBsb3dlcmVkID09PSBcImdtdFwiKSByZXR1cm4gRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlO1xuICAgIGVsc2UgaWYgKElBTkFab25lLmlzVmFsaWRTcGVjaWZpZXIobG93ZXJlZCkpIHJldHVybiBJQU5BWm9uZS5jcmVhdGUoaW5wdXQpO1xuICAgIGVsc2UgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcihsb3dlcmVkKSB8fCBuZXcgSW52YWxpZFpvbmUoaW5wdXQpO1xuICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSkge1xuICAgIHJldHVybiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoaW5wdXQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJvYmplY3RcIiAmJiBpbnB1dC5vZmZzZXQgJiYgdHlwZW9mIGlucHV0Lm9mZnNldCA9PT0gXCJudW1iZXJcIikge1xuICAgIC8vIFRoaXMgaXMgZHVtYiwgYnV0IHRoZSBpbnN0YW5jZW9mIGNoZWNrIGFib3ZlIGRvZXNuJ3Qgc2VlbSB0byByZWFsbHkgd29ya1xuICAgIC8vIHNvIHdlJ3JlIGR1Y2sgY2hlY2tpbmcgaXRcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBJbnZhbGlkWm9uZShpbnB1dCk7XG4gIH1cbn1cbiIsICJpbXBvcnQgU3lzdGVtWm9uZSBmcm9tIFwiLi96b25lcy9zeXN0ZW1ab25lLmpzXCI7XG5pbXBvcnQgSUFOQVpvbmUgZnJvbSBcIi4vem9uZXMvSUFOQVpvbmUuanNcIjtcbmltcG9ydCBMb2NhbGUgZnJvbSBcIi4vaW1wbC9sb2NhbGUuanNcIjtcblxuaW1wb3J0IHsgbm9ybWFsaXplWm9uZSB9IGZyb20gXCIuL2ltcGwvem9uZVV0aWwuanNcIjtcblxubGV0IG5vdyA9ICgpID0+IERhdGUubm93KCksXG4gIGRlZmF1bHRab25lID0gXCJzeXN0ZW1cIixcbiAgZGVmYXVsdExvY2FsZSA9IG51bGwsXG4gIGRlZmF1bHROdW1iZXJpbmdTeXN0ZW0gPSBudWxsLFxuICBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIgPSBudWxsLFxuICB0aHJvd09uSW52YWxpZDtcblxuLyoqXG4gKiBTZXR0aW5ncyBjb250YWlucyBzdGF0aWMgZ2V0dGVycyBhbmQgc2V0dGVycyB0aGF0IGNvbnRyb2wgTHV4b24ncyBvdmVyYWxsIGJlaGF2aW9yLiBMdXhvbiBpcyBhIHNpbXBsZSBsaWJyYXJ5IHdpdGggZmV3IG9wdGlvbnMsIGJ1dCB0aGUgb25lcyBpdCBkb2VzIGhhdmUgbGl2ZSBoZXJlLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIGNhbGxiYWNrIGZvciByZXR1cm5pbmcgdGhlIGN1cnJlbnQgdGltZXN0YW1wLlxuICAgKiBAdHlwZSB7ZnVuY3Rpb259XG4gICAqL1xuICBzdGF0aWMgZ2V0IG5vdygpIHtcbiAgICByZXR1cm4gbm93O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgY2FsbGJhY2sgZm9yIHJldHVybmluZyB0aGUgY3VycmVudCB0aW1lc3RhbXAuXG4gICAqIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgbnVtYmVyLCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIEVwb2NoIG1pbGxpc2Vjb25kIGNvdW50XG4gICAqIEB0eXBlIHtmdW5jdGlvbn1cbiAgICogQGV4YW1wbGUgU2V0dGluZ3Mubm93ID0gKCkgPT4gRGF0ZS5ub3coKSArIDMwMDAgLy8gcHJldGVuZCBpdCBpcyAzIHNlY29uZHMgaW4gdGhlIGZ1dHVyZVxuICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiAwIC8vIGFsd2F5cyBwcmV0ZW5kIGl0J3MgSmFuIDEsIDE5NzAgYXQgbWlkbmlnaHQgaW4gVVRDIHRpbWVcbiAgICovXG4gIHN0YXRpYyBzZXQgbm93KG4pIHtcbiAgICBub3cgPSBuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgdG8gY3JlYXRlIERhdGVUaW1lcyBpbi4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogVXNlIHRoZSB2YWx1ZSBcInN5c3RlbVwiIHRvIHJlc2V0IHRoaXMgdmFsdWUgdG8gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBzZXQgZGVmYXVsdFpvbmUoem9uZSkge1xuICAgIGRlZmF1bHRab25lID0gem9uZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlZmF1bHQgdGltZSB6b25lIG9iamVjdCBjdXJyZW50bHkgdXNlZCB0byBjcmVhdGUgRGF0ZVRpbWVzLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB0aGUgc3lzdGVtJ3MgdGltZSB6b25lICh0aGUgb25lIHNldCBvbiB0aGUgbWFjaGluZSB0aGF0IHJ1bnMgdGhpcyBjb2RlKS5cbiAgICogQHR5cGUge1pvbmV9XG4gICAqL1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRab25lKCkge1xuICAgIHJldHVybiBub3JtYWxpemVab25lKGRlZmF1bHRab25lLCBTeXN0ZW1ab25lLmluc3RhbmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlZmF1bHQgbG9jYWxlIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBnZXQgZGVmYXVsdExvY2FsZSgpIHtcbiAgICByZXR1cm4gZGVmYXVsdExvY2FsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlZmF1bHQgbG9jYWxlIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBzZXQgZGVmYXVsdExvY2FsZShsb2NhbGUpIHtcbiAgICBkZWZhdWx0TG9jYWxlID0gbG9jYWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBnZXQgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSgpIHtcbiAgICByZXR1cm4gZGVmYXVsdE51bWJlcmluZ1N5c3RlbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlZmF1bHQgbnVtYmVyaW5nIHN5c3RlbSB0byBjcmVhdGUgRGF0ZVRpbWVzIHdpdGguIERvZXMgbm90IGFmZmVjdCBleGlzdGluZyBpbnN0YW5jZXMuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBzdGF0aWMgc2V0IGRlZmF1bHROdW1iZXJpbmdTeXN0ZW0obnVtYmVyaW5nU3lzdGVtKSB7XG4gICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bWJlcmluZ1N5c3RlbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlZmF1bHQgb3V0cHV0IGNhbGVuZGFyIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBnZXQgZGVmYXVsdE91dHB1dENhbGVuZGFyKCkge1xuICAgIHJldHVybiBkZWZhdWx0T3V0cHV0Q2FsZW5kYXI7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBkZWZhdWx0IG91dHB1dCBjYWxlbmRhciB0byBjcmVhdGUgRGF0ZVRpbWVzIHdpdGguIERvZXMgbm90IGFmZmVjdCBleGlzdGluZyBpbnN0YW5jZXMuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBzdGF0aWMgc2V0IGRlZmF1bHRPdXRwdXRDYWxlbmRhcihvdXRwdXRDYWxlbmRhcikge1xuICAgIGRlZmF1bHRPdXRwdXRDYWxlbmRhciA9IG91dHB1dENhbGVuZGFyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB3aGV0aGVyIEx1eG9uIHdpbGwgdGhyb3cgd2hlbiBpdCBlbmNvdW50ZXJzIGludmFsaWQgRGF0ZVRpbWVzLCBEdXJhdGlvbnMsIG9yIEludGVydmFsc1xuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBnZXQgdGhyb3dPbkludmFsaWQoKSB7XG4gICAgcmV0dXJuIHRocm93T25JbnZhbGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB3aGV0aGVyIEx1eG9uIHdpbGwgdGhyb3cgd2hlbiBpdCBlbmNvdW50ZXJzIGludmFsaWQgRGF0ZVRpbWVzLCBEdXJhdGlvbnMsIG9yIEludGVydmFsc1xuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBzZXQgdGhyb3dPbkludmFsaWQodCkge1xuICAgIHRocm93T25JbnZhbGlkID0gdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCBMdXhvbidzIGdsb2JhbCBjYWNoZXMuIFNob3VsZCBvbmx5IGJlIG5lY2Vzc2FyeSBpbiB0ZXN0aW5nIHNjZW5hcmlvcy5cbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHN0YXRpYyByZXNldENhY2hlcygpIHtcbiAgICBMb2NhbGUucmVzZXRDYWNoZSgpO1xuICAgIElBTkFab25lLnJlc2V0Q2FjaGUoKTtcbiAgfVxufVxuIiwgImltcG9ydCB7IHBhZFN0YXJ0LCByb3VuZFRvLCBoYXNSZWxhdGl2ZSB9IGZyb20gXCIuL3V0aWwuanNcIjtcbmltcG9ydCAqIGFzIEVuZ2xpc2ggZnJvbSBcIi4vZW5nbGlzaC5qc1wiO1xuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuLi9zZXR0aW5ncy5qc1wiO1xuaW1wb3J0IERhdGVUaW1lIGZyb20gXCIuLi9kYXRldGltZS5qc1wiO1xuaW1wb3J0IElBTkFab25lIGZyb20gXCIuLi96b25lcy9JQU5BWm9uZS5qc1wiO1xuXG4vLyB0b2RvIC0gcmVtYXAgY2FjaGluZ1xuXG5sZXQgaW50bExGQ2FjaGUgPSB7fTtcbmZ1bmN0aW9uIGdldENhY2hlZExGKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTtcbiAgbGV0IGR0ZiA9IGludGxMRkNhY2hlW2tleV07XG4gIGlmICghZHRmKSB7XG4gICAgZHRmID0gbmV3IEludGwuTGlzdEZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxMRkNhY2hlW2tleV0gPSBkdGY7XG4gIH1cbiAgcmV0dXJuIGR0Zjtcbn1cblxubGV0IGludGxEVENhY2hlID0ge307XG5mdW5jdGlvbiBnZXRDYWNoZWREVEYobG9jU3RyaW5nLCBvcHRzID0ge30pIHtcbiAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgb3B0c10pO1xuICBsZXQgZHRmID0gaW50bERUQ2FjaGVba2V5XTtcbiAgaWYgKCFkdGYpIHtcbiAgICBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxEVENhY2hlW2tleV0gPSBkdGY7XG4gIH1cbiAgcmV0dXJuIGR0Zjtcbn1cblxubGV0IGludGxOdW1DYWNoZSA9IHt9O1xuZnVuY3Rpb24gZ2V0Q2FjaGVkSU5GKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTtcbiAgbGV0IGluZiA9IGludGxOdW1DYWNoZVtrZXldO1xuICBpZiAoIWluZikge1xuICAgIGluZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxOdW1DYWNoZVtrZXldID0gaW5mO1xuICB9XG4gIHJldHVybiBpbmY7XG59XG5cbmxldCBpbnRsUmVsQ2FjaGUgPSB7fTtcbmZ1bmN0aW9uIGdldENhY2hlZFJURihsb2NTdHJpbmcsIG9wdHMgPSB7fSkge1xuICBjb25zdCB7IGJhc2UsIC4uLmNhY2hlS2V5T3B0cyB9ID0gb3B0czsgLy8gZXhjbHVkZSBgYmFzZWAgZnJvbSB0aGUgb3B0aW9uc1xuICBjb25zdCBrZXkgPSBKU09OLnN0cmluZ2lmeShbbG9jU3RyaW5nLCBjYWNoZUtleU9wdHNdKTtcbiAgbGV0IGluZiA9IGludGxSZWxDYWNoZVtrZXldO1xuICBpZiAoIWluZikge1xuICAgIGluZiA9IG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxSZWxDYWNoZVtrZXldID0gaW5mO1xuICB9XG4gIHJldHVybiBpbmY7XG59XG5cbmxldCBzeXNMb2NhbGVDYWNoZSA9IG51bGw7XG5mdW5jdGlvbiBzeXN0ZW1Mb2NhbGUoKSB7XG4gIGlmIChzeXNMb2NhbGVDYWNoZSkge1xuICAgIHJldHVybiBzeXNMb2NhbGVDYWNoZTtcbiAgfSBlbHNlIHtcbiAgICBzeXNMb2NhbGVDYWNoZSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlO1xuICAgIHJldHVybiBzeXNMb2NhbGVDYWNoZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGVTdHIpIHtcbiAgLy8gSSByZWFsbHkgd2FudCB0byBhdm9pZCB3cml0aW5nIGEgQkNQIDQ3IHBhcnNlclxuICAvLyBzZWUsIGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9iY3AtNDdcbiAgLy8gSW5zdGVhZCwgd2UnbGwgZG8gdGhpczpcblxuICAvLyBhKSBpZiB0aGUgc3RyaW5nIGhhcyBubyAtdSBleHRlbnNpb25zLCBqdXN0IGxlYXZlIGl0IGFsb25lXG4gIC8vIGIpIGlmIGl0IGRvZXMsIHVzZSBJbnRsIHRvIHJlc29sdmUgZXZlcnl0aGluZ1xuICAvLyBjKSBpZiBJbnRsIGZhaWxzLCB0cnkgYWdhaW4gd2l0aG91dCB0aGUgLXVcblxuICBjb25zdCB1SW5kZXggPSBsb2NhbGVTdHIuaW5kZXhPZihcIi11LVwiKTtcbiAgaWYgKHVJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gW2xvY2FsZVN0cl07XG4gIH0gZWxzZSB7XG4gICAgbGV0IG9wdGlvbnM7XG4gICAgY29uc3Qgc21hbGxlciA9IGxvY2FsZVN0ci5zdWJzdHJpbmcoMCwgdUluZGV4KTtcbiAgICB0cnkge1xuICAgICAgb3B0aW9ucyA9IGdldENhY2hlZERURihsb2NhbGVTdHIpLnJlc29sdmVkT3B0aW9ucygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIG9wdGlvbnMgPSBnZXRDYWNoZWREVEYoc21hbGxlcikucmVzb2x2ZWRPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBvcHRpb25zO1xuICAgIC8vIHJldHVybiB0aGUgc21hbGxlciBvbmUgc28gdGhhdCB3ZSBjYW4gYXBwZW5kIHRoZSBjYWxlbmRhciBhbmQgbnVtYmVyaW5nIG92ZXJyaWRlcyB0byBpdFxuICAgIHJldHVybiBbc21hbGxlciwgbnVtYmVyaW5nU3lzdGVtLCBjYWxlbmRhcl07XG4gIH1cbn1cblxuZnVuY3Rpb24gaW50bENvbmZpZ1N0cmluZyhsb2NhbGVTdHIsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpIHtcbiAgaWYgKG91dHB1dENhbGVuZGFyIHx8IG51bWJlcmluZ1N5c3RlbSkge1xuICAgIGxvY2FsZVN0ciArPSBcIi11XCI7XG5cbiAgICBpZiAob3V0cHV0Q2FsZW5kYXIpIHtcbiAgICAgIGxvY2FsZVN0ciArPSBgLWNhLSR7b3V0cHV0Q2FsZW5kYXJ9YDtcbiAgICB9XG5cbiAgICBpZiAobnVtYmVyaW5nU3lzdGVtKSB7XG4gICAgICBsb2NhbGVTdHIgKz0gYC1udS0ke251bWJlcmluZ1N5c3RlbX1gO1xuICAgIH1cbiAgICByZXR1cm4gbG9jYWxlU3RyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsb2NhbGVTdHI7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFwTW9udGhzKGYpIHtcbiAgY29uc3QgbXMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDE7IGkgPD0gMTI7IGkrKykge1xuICAgIGNvbnN0IGR0ID0gRGF0ZVRpbWUudXRjKDIwMTYsIGksIDEpO1xuICAgIG1zLnB1c2goZihkdCkpO1xuICB9XG4gIHJldHVybiBtcztcbn1cblxuZnVuY3Rpb24gbWFwV2Vla2RheXMoZikge1xuICBjb25zdCBtcyA9IFtdO1xuICBmb3IgKGxldCBpID0gMTsgaSA8PSA3OyBpKyspIHtcbiAgICBjb25zdCBkdCA9IERhdGVUaW1lLnV0YygyMDE2LCAxMSwgMTMgKyBpKTtcbiAgICBtcy5wdXNoKGYoZHQpKTtcbiAgfVxuICByZXR1cm4gbXM7XG59XG5cbmZ1bmN0aW9uIGxpc3RTdHVmZihsb2MsIGxlbmd0aCwgZGVmYXVsdE9LLCBlbmdsaXNoRm4sIGludGxGbikge1xuICBjb25zdCBtb2RlID0gbG9jLmxpc3RpbmdNb2RlKGRlZmF1bHRPSyk7XG5cbiAgaWYgKG1vZGUgPT09IFwiZXJyb3JcIikge1xuICAgIHJldHVybiBudWxsO1xuICB9IGVsc2UgaWYgKG1vZGUgPT09IFwiZW5cIikge1xuICAgIHJldHVybiBlbmdsaXNoRm4obGVuZ3RoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaW50bEZuKGxlbmd0aCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3VwcG9ydHNGYXN0TnVtYmVycyhsb2MpIHtcbiAgaWYgKGxvYy5udW1iZXJpbmdTeXN0ZW0gJiYgbG9jLm51bWJlcmluZ1N5c3RlbSAhPT0gXCJsYXRuXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGxvYy5udW1iZXJpbmdTeXN0ZW0gPT09IFwibGF0blwiIHx8XG4gICAgICAhbG9jLmxvY2FsZSB8fFxuICAgICAgbG9jLmxvY2FsZS5zdGFydHNXaXRoKFwiZW5cIikgfHxcbiAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvYy5pbnRsKS5yZXNvbHZlZE9wdGlvbnMoKS5udW1iZXJpbmdTeXN0ZW0gPT09IFwibGF0blwiXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cblxuY2xhc3MgUG9seU51bWJlckZvcm1hdHRlciB7XG4gIGNvbnN0cnVjdG9yKGludGwsIGZvcmNlU2ltcGxlLCBvcHRzKSB7XG4gICAgdGhpcy5wYWRUbyA9IG9wdHMucGFkVG8gfHwgMDtcbiAgICB0aGlzLmZsb29yID0gb3B0cy5mbG9vciB8fCBmYWxzZTtcblxuICAgIGNvbnN0IHsgcGFkVG8sIGZsb29yLCAuLi5vdGhlck9wdHMgfSA9IG9wdHM7XG5cbiAgICBpZiAoIWZvcmNlU2ltcGxlIHx8IE9iamVjdC5rZXlzKG90aGVyT3B0cykubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgaW50bE9wdHMgPSB7IHVzZUdyb3VwaW5nOiBmYWxzZSwgLi4ub3B0cyB9O1xuICAgICAgaWYgKG9wdHMucGFkVG8gPiAwKSBpbnRsT3B0cy5taW5pbXVtSW50ZWdlckRpZ2l0cyA9IG9wdHMucGFkVG87XG4gICAgICB0aGlzLmluZiA9IGdldENhY2hlZElORihpbnRsLCBpbnRsT3B0cyk7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0KGkpIHtcbiAgICBpZiAodGhpcy5pbmYpIHtcbiAgICAgIGNvbnN0IGZpeGVkID0gdGhpcy5mbG9vciA/IE1hdGguZmxvb3IoaSkgOiBpO1xuICAgICAgcmV0dXJuIHRoaXMuaW5mLmZvcm1hdChmaXhlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRvIG1hdGNoIHRoZSBicm93c2VyJ3MgbnVtYmVyZm9ybWF0dGVyIGRlZmF1bHRzXG4gICAgICBjb25zdCBmaXhlZCA9IHRoaXMuZmxvb3IgPyBNYXRoLmZsb29yKGkpIDogcm91bmRUbyhpLCAzKTtcbiAgICAgIHJldHVybiBwYWRTdGFydChmaXhlZCwgdGhpcy5wYWRUbyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuXG5jbGFzcyBQb2x5RGF0ZUZvcm1hdHRlciB7XG4gIGNvbnN0cnVjdG9yKGR0LCBpbnRsLCBvcHRzKSB7XG4gICAgdGhpcy5vcHRzID0gb3B0cztcblxuICAgIGxldCB6O1xuICAgIGlmIChkdC56b25lLmlzVW5pdmVyc2FsKSB7XG4gICAgICAvLyBVVEMtOCBvciBFdGMvVVRDLTggYXJlIG5vdCBwYXJ0IG9mIHR6ZGF0YSwgb25seSBFdGMvR01UKzggYW5kIHRoZSBsaWtlLlxuICAgICAgLy8gVGhhdCBpcyB3aHkgZml4ZWQtb2Zmc2V0IFRaIGlzIHNldCB0byB0aGF0IHVubGVzcyBpdCBpczpcbiAgICAgIC8vIDEuIFJlcHJlc2VudGluZyBvZmZzZXQgMCB3aGVuIFVUQyBpcyB1c2VkIHRvIG1haW50YWluIHByZXZpb3VzIGJlaGF2aW9yIGFuZCBkb2VzIG5vdCBiZWNvbWUgR01ULlxuICAgICAgLy8gMi4gVW5zdXBwb3J0ZWQgYnkgdGhlIGJyb3dzZXI6XG4gICAgICAvLyAgICAtIHNvbWUgZG8gbm90IHN1cHBvcnQgRXRjL1xuICAgICAgLy8gICAgLSA8IEV0Yy9HTVQtMTQsID4gRXRjL0dNVCsxMiwgYW5kIDMwLW1pbnV0ZSBvciA0NS1taW51dGUgb2Zmc2V0cyBhcmUgbm90IHBhcnQgb2YgdHpkYXRhXG4gICAgICBjb25zdCBnbXRPZmZzZXQgPSAtMSAqIChkdC5vZmZzZXQgLyA2MCk7XG4gICAgICBjb25zdCBvZmZzZXRaID0gZ210T2Zmc2V0ID49IDAgPyBgRXRjL0dNVCske2dtdE9mZnNldH1gIDogYEV0Yy9HTVQke2dtdE9mZnNldH1gO1xuICAgICAgaWYgKGR0Lm9mZnNldCAhPT0gMCAmJiBJQU5BWm9uZS5jcmVhdGUob2Zmc2V0WikudmFsaWQpIHtcbiAgICAgICAgeiA9IG9mZnNldFo7XG4gICAgICAgIHRoaXMuZHQgPSBkdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vdCBhbGwgZml4ZWQtb2Zmc2V0IHpvbmVzIGxpa2UgRXRjLys0OjMwIGFyZSBwcmVzZW50IGluIHR6ZGF0YS5cbiAgICAgICAgLy8gU28gd2UgaGF2ZSB0byBtYWtlIGRvLiBUd28gY2FzZXM6XG4gICAgICAgIC8vIDEuIFRoZSBmb3JtYXQgb3B0aW9ucyB0ZWxsIHVzIHRvIHNob3cgdGhlIHpvbmUuIFdlIGNhbid0IGRvIHRoYXQsIHNvIHRoZSBiZXN0XG4gICAgICAgIC8vIHdlIGNhbiBkbyBpcyBmb3JtYXQgdGhlIGRhdGUgaW4gVVRDLlxuICAgICAgICAvLyAyLiBUaGUgZm9ybWF0IG9wdGlvbnMgZG9uJ3QgdGVsbCB1cyB0byBzaG93IHRoZSB6b25lLiBUaGVuIHdlIGNhbiBhZGp1c3QgdGhlbVxuICAgICAgICAvLyB0aGUgdGltZSBhbmQgdGVsbCB0aGUgZm9ybWF0dGVyIHRvIHNob3cgaXQgdG8gdXMgaW4gVVRDLCBzbyB0aGF0IHRoZSB0aW1lIGlzIHJpZ2h0XG4gICAgICAgIC8vIGFuZCB0aGUgYmFkIHpvbmUgZG9lc24ndCBzaG93IHVwLlxuICAgICAgICB6ID0gXCJVVENcIjtcbiAgICAgICAgaWYgKG9wdHMudGltZVpvbmVOYW1lKSB7XG4gICAgICAgICAgdGhpcy5kdCA9IGR0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZHQgPSBkdC5vZmZzZXQgPT09IDAgPyBkdCA6IERhdGVUaW1lLmZyb21NaWxsaXMoZHQudHMgKyBkdC5vZmZzZXQgKiA2MCAqIDEwMDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkdC56b25lLnR5cGUgPT09IFwic3lzdGVtXCIpIHtcbiAgICAgIHRoaXMuZHQgPSBkdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kdCA9IGR0O1xuICAgICAgeiA9IGR0LnpvbmUubmFtZTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnRsT3B0cyA9IHsgLi4udGhpcy5vcHRzIH07XG4gICAgaWYgKHopIHtcbiAgICAgIGludGxPcHRzLnRpbWVab25lID0gejtcbiAgICB9XG4gICAgdGhpcy5kdGYgPSBnZXRDYWNoZWREVEYoaW50bCwgaW50bE9wdHMpO1xuICB9XG5cbiAgZm9ybWF0KCkge1xuICAgIHJldHVybiB0aGlzLmR0Zi5mb3JtYXQodGhpcy5kdC50b0pTRGF0ZSgpKTtcbiAgfVxuXG4gIGZvcm1hdFRvUGFydHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZHRmLmZvcm1hdFRvUGFydHModGhpcy5kdC50b0pTRGF0ZSgpKTtcbiAgfVxuXG4gIHJlc29sdmVkT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5kdGYucmVzb2x2ZWRPcHRpb25zKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jbGFzcyBQb2x5UmVsRm9ybWF0dGVyIHtcbiAgY29uc3RydWN0b3IoaW50bCwgaXNFbmdsaXNoLCBvcHRzKSB7XG4gICAgdGhpcy5vcHRzID0geyBzdHlsZTogXCJsb25nXCIsIC4uLm9wdHMgfTtcbiAgICBpZiAoIWlzRW5nbGlzaCAmJiBoYXNSZWxhdGl2ZSgpKSB7XG4gICAgICB0aGlzLnJ0ZiA9IGdldENhY2hlZFJURihpbnRsLCBvcHRzKTtcbiAgICB9XG4gIH1cblxuICBmb3JtYXQoY291bnQsIHVuaXQpIHtcbiAgICBpZiAodGhpcy5ydGYpIHtcbiAgICAgIHJldHVybiB0aGlzLnJ0Zi5mb3JtYXQoY291bnQsIHVuaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gRW5nbGlzaC5mb3JtYXRSZWxhdGl2ZVRpbWUodW5pdCwgY291bnQsIHRoaXMub3B0cy5udW1lcmljLCB0aGlzLm9wdHMuc3R5bGUgIT09IFwibG9uZ1wiKTtcbiAgICB9XG4gIH1cblxuICBmb3JtYXRUb1BhcnRzKGNvdW50LCB1bml0KSB7XG4gICAgaWYgKHRoaXMucnRmKSB7XG4gICAgICByZXR1cm4gdGhpcy5ydGYuZm9ybWF0VG9QYXJ0cyhjb3VudCwgdW5pdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvY2FsZSB7XG4gIHN0YXRpYyBmcm9tT3B0cyhvcHRzKSB7XG4gICAgcmV0dXJuIExvY2FsZS5jcmVhdGUob3B0cy5sb2NhbGUsIG9wdHMubnVtYmVyaW5nU3lzdGVtLCBvcHRzLm91dHB1dENhbGVuZGFyLCBvcHRzLmRlZmF1bHRUb0VOKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyLCBkZWZhdWx0VG9FTiA9IGZhbHNlKSB7XG4gICAgY29uc3Qgc3BlY2lmaWVkTG9jYWxlID0gbG9jYWxlIHx8IFNldHRpbmdzLmRlZmF1bHRMb2NhbGU7XG4gICAgLy8gdGhlIHN5c3RlbSBsb2NhbGUgaXMgdXNlZnVsIGZvciBodW1hbiByZWFkYWJsZSBzdHJpbmdzIGJ1dCBhbm5veWluZyBmb3IgcGFyc2luZy9mb3JtYXR0aW5nIGtub3duIGZvcm1hdHNcbiAgICBjb25zdCBsb2NhbGVSID0gc3BlY2lmaWVkTG9jYWxlIHx8IChkZWZhdWx0VG9FTiA/IFwiZW4tVVNcIiA6IHN5c3RlbUxvY2FsZSgpKTtcbiAgICBjb25zdCBudW1iZXJpbmdTeXN0ZW1SID0gbnVtYmVyaW5nU3lzdGVtIHx8IFNldHRpbmdzLmRlZmF1bHROdW1iZXJpbmdTeXN0ZW07XG4gICAgY29uc3Qgb3V0cHV0Q2FsZW5kYXJSID0gb3V0cHV0Q2FsZW5kYXIgfHwgU2V0dGluZ3MuZGVmYXVsdE91dHB1dENhbGVuZGFyO1xuICAgIHJldHVybiBuZXcgTG9jYWxlKGxvY2FsZVIsIG51bWJlcmluZ1N5c3RlbVIsIG91dHB1dENhbGVuZGFyUiwgc3BlY2lmaWVkTG9jYWxlKTtcbiAgfVxuXG4gIHN0YXRpYyByZXNldENhY2hlKCkge1xuICAgIHN5c0xvY2FsZUNhY2hlID0gbnVsbDtcbiAgICBpbnRsRFRDYWNoZSA9IHt9O1xuICAgIGludGxOdW1DYWNoZSA9IHt9O1xuICAgIGludGxSZWxDYWNoZSA9IHt9O1xuICB9XG5cbiAgc3RhdGljIGZyb21PYmplY3QoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7XG4gICAgcmV0dXJuIExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGxvY2FsZSwgbnVtYmVyaW5nLCBvdXRwdXRDYWxlbmRhciwgc3BlY2lmaWVkTG9jYWxlKSB7XG4gICAgY29uc3QgW3BhcnNlZExvY2FsZSwgcGFyc2VkTnVtYmVyaW5nU3lzdGVtLCBwYXJzZWRPdXRwdXRDYWxlbmRhcl0gPSBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGUpO1xuXG4gICAgdGhpcy5sb2NhbGUgPSBwYXJzZWRMb2NhbGU7XG4gICAgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPSBudW1iZXJpbmcgfHwgcGFyc2VkTnVtYmVyaW5nU3lzdGVtIHx8IG51bGw7XG4gICAgdGhpcy5vdXRwdXRDYWxlbmRhciA9IG91dHB1dENhbGVuZGFyIHx8IHBhcnNlZE91dHB1dENhbGVuZGFyIHx8IG51bGw7XG4gICAgdGhpcy5pbnRsID0gaW50bENvbmZpZ1N0cmluZyh0aGlzLmxvY2FsZSwgdGhpcy5udW1iZXJpbmdTeXN0ZW0sIHRoaXMub3V0cHV0Q2FsZW5kYXIpO1xuXG4gICAgdGhpcy53ZWVrZGF5c0NhY2hlID0geyBmb3JtYXQ6IHt9LCBzdGFuZGFsb25lOiB7fSB9O1xuICAgIHRoaXMubW9udGhzQ2FjaGUgPSB7IGZvcm1hdDoge30sIHN0YW5kYWxvbmU6IHt9IH07XG4gICAgdGhpcy5tZXJpZGllbUNhY2hlID0gbnVsbDtcbiAgICB0aGlzLmVyYUNhY2hlID0ge307XG5cbiAgICB0aGlzLnNwZWNpZmllZExvY2FsZSA9IHNwZWNpZmllZExvY2FsZTtcbiAgICB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID0gbnVsbDtcbiAgfVxuXG4gIGdldCBmYXN0TnVtYmVycygpIHtcbiAgICBpZiAodGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9PSBudWxsKSB7XG4gICAgICB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID0gc3VwcG9ydHNGYXN0TnVtYmVycyh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mYXN0TnVtYmVyc0NhY2hlZDtcbiAgfVxuXG4gIGxpc3RpbmdNb2RlKCkge1xuICAgIGNvbnN0IGlzQWN0dWFsbHlFbiA9IHRoaXMuaXNFbmdsaXNoKCk7XG4gICAgY29uc3QgaGFzTm9XZWlyZG5lc3MgPVxuICAgICAgKHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBudWxsIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBcImxhdG5cIikgJiZcbiAgICAgICh0aGlzLm91dHB1dENhbGVuZGFyID09PSBudWxsIHx8IHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IFwiZ3JlZ29yeVwiKTtcbiAgICByZXR1cm4gaXNBY3R1YWxseUVuICYmIGhhc05vV2VpcmRuZXNzID8gXCJlblwiIDogXCJpbnRsXCI7XG4gIH1cblxuICBjbG9uZShhbHRzKSB7XG4gICAgaWYgKCFhbHRzIHx8IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFsdHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKFxuICAgICAgICBhbHRzLmxvY2FsZSB8fCB0aGlzLnNwZWNpZmllZExvY2FsZSxcbiAgICAgICAgYWx0cy5udW1iZXJpbmdTeXN0ZW0gfHwgdGhpcy5udW1iZXJpbmdTeXN0ZW0sXG4gICAgICAgIGFsdHMub3V0cHV0Q2FsZW5kYXIgfHwgdGhpcy5vdXRwdXRDYWxlbmRhcixcbiAgICAgICAgYWx0cy5kZWZhdWx0VG9FTiB8fCBmYWxzZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZWRlZmF1bHRUb0VOKGFsdHMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKHsgLi4uYWx0cywgZGVmYXVsdFRvRU46IHRydWUgfSk7XG4gIH1cblxuICByZWRlZmF1bHRUb1N5c3RlbShhbHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSh7IC4uLmFsdHMsIGRlZmF1bHRUb0VOOiBmYWxzZSB9KTtcbiAgfVxuXG4gIG1vbnRocyhsZW5ndGgsIGZvcm1hdCA9IGZhbHNlLCBkZWZhdWx0T0sgPSB0cnVlKSB7XG4gICAgcmV0dXJuIGxpc3RTdHVmZih0aGlzLCBsZW5ndGgsIGRlZmF1bHRPSywgRW5nbGlzaC5tb250aHMsICgpID0+IHtcbiAgICAgIGNvbnN0IGludGwgPSBmb3JtYXQgPyB7IG1vbnRoOiBsZW5ndGgsIGRheTogXCJudW1lcmljXCIgfSA6IHsgbW9udGg6IGxlbmd0aCB9LFxuICAgICAgICBmb3JtYXRTdHIgPSBmb3JtYXQgPyBcImZvcm1hdFwiIDogXCJzdGFuZGFsb25lXCI7XG4gICAgICBpZiAoIXRoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdKSB7XG4gICAgICAgIHRoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdID0gbWFwTW9udGhzKChkdCkgPT4gdGhpcy5leHRyYWN0KGR0LCBpbnRsLCBcIm1vbnRoXCIpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm1vbnRoc0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXTtcbiAgICB9KTtcbiAgfVxuXG4gIHdlZWtkYXlzKGxlbmd0aCwgZm9ybWF0ID0gZmFsc2UsIGRlZmF1bHRPSyA9IHRydWUpIHtcbiAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIGxlbmd0aCwgZGVmYXVsdE9LLCBFbmdsaXNoLndlZWtkYXlzLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnRsID0gZm9ybWF0XG4gICAgICAgICAgPyB7IHdlZWtkYXk6IGxlbmd0aCwgeWVhcjogXCJudW1lcmljXCIsIG1vbnRoOiBcImxvbmdcIiwgZGF5OiBcIm51bWVyaWNcIiB9XG4gICAgICAgICAgOiB7IHdlZWtkYXk6IGxlbmd0aCB9LFxuICAgICAgICBmb3JtYXRTdHIgPSBmb3JtYXQgPyBcImZvcm1hdFwiIDogXCJzdGFuZGFsb25lXCI7XG4gICAgICBpZiAoIXRoaXMud2Vla2RheXNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0pIHtcbiAgICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSA9IG1hcFdlZWtkYXlzKChkdCkgPT5cbiAgICAgICAgICB0aGlzLmV4dHJhY3QoZHQsIGludGwsIFwid2Vla2RheVwiKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMud2Vla2RheXNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF07XG4gICAgfSk7XG4gIH1cblxuICBtZXJpZGllbXMoZGVmYXVsdE9LID0gdHJ1ZSkge1xuICAgIHJldHVybiBsaXN0U3R1ZmYoXG4gICAgICB0aGlzLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgZGVmYXVsdE9LLFxuICAgICAgKCkgPT4gRW5nbGlzaC5tZXJpZGllbXMsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIC8vIEluIHRoZW9yeSB0aGVyZSBjb3VsZCBiZSBhcmliaXRyYXJ5IGRheSBwZXJpb2RzLiBXZSdyZSBnb25uYSBhc3N1bWUgdGhlcmUgYXJlIGV4YWN0bHkgdHdvXG4gICAgICAgIC8vIGZvciBBTSBhbmQgUE0uIFRoaXMgaXMgcHJvYmFibHkgd3JvbmcsIGJ1dCBpdCdzIG1ha2VzIHBhcnNpbmcgd2F5IGVhc2llci5cbiAgICAgICAgaWYgKCF0aGlzLm1lcmlkaWVtQ2FjaGUpIHtcbiAgICAgICAgICBjb25zdCBpbnRsID0geyBob3VyOiBcIm51bWVyaWNcIiwgaG91ckN5Y2xlOiBcImgxMlwiIH07XG4gICAgICAgICAgdGhpcy5tZXJpZGllbUNhY2hlID0gW0RhdGVUaW1lLnV0YygyMDE2LCAxMSwgMTMsIDkpLCBEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzLCAxOSldLm1hcChcbiAgICAgICAgICAgIChkdCkgPT4gdGhpcy5leHRyYWN0KGR0LCBpbnRsLCBcImRheXBlcmlvZFwiKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5tZXJpZGllbUNhY2hlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBlcmFzKGxlbmd0aCwgZGVmYXVsdE9LID0gdHJ1ZSkge1xuICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCBkZWZhdWx0T0ssIEVuZ2xpc2guZXJhcywgKCkgPT4ge1xuICAgICAgY29uc3QgaW50bCA9IHsgZXJhOiBsZW5ndGggfTtcblxuICAgICAgLy8gVGhpcyBpcyBwcm9ibGVtYXRpYy4gRGlmZmVyZW50IGNhbGVuZGFycyBhcmUgZ29pbmcgdG8gZGVmaW5lIGVyYXMgdG90YWxseSBkaWZmZXJlbnRseS4gV2hhdCBJIG5lZWQgaXMgdGhlIG1pbmltdW0gc2V0IG9mIGRhdGVzXG4gICAgICAvLyB0byBkZWZpbml0ZWx5IGVudW1lcmF0ZSB0aGVtLlxuICAgICAgaWYgKCF0aGlzLmVyYUNhY2hlW2xlbmd0aF0pIHtcbiAgICAgICAgdGhpcy5lcmFDYWNoZVtsZW5ndGhdID0gW0RhdGVUaW1lLnV0YygtNDAsIDEsIDEpLCBEYXRlVGltZS51dGMoMjAxNywgMSwgMSldLm1hcCgoZHQpID0+XG4gICAgICAgICAgdGhpcy5leHRyYWN0KGR0LCBpbnRsLCBcImVyYVwiKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5lcmFDYWNoZVtsZW5ndGhdO1xuICAgIH0pO1xuICB9XG5cbiAgZXh0cmFjdChkdCwgaW50bE9wdHMsIGZpZWxkKSB7XG4gICAgY29uc3QgZGYgPSB0aGlzLmR0Rm9ybWF0dGVyKGR0LCBpbnRsT3B0cyksXG4gICAgICByZXN1bHRzID0gZGYuZm9ybWF0VG9QYXJ0cygpLFxuICAgICAgbWF0Y2hpbmcgPSByZXN1bHRzLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSBmaWVsZCk7XG4gICAgcmV0dXJuIG1hdGNoaW5nID8gbWF0Y2hpbmcudmFsdWUgOiBudWxsO1xuICB9XG5cbiAgbnVtYmVyRm9ybWF0dGVyKG9wdHMgPSB7fSkge1xuICAgIC8vIHRoaXMgZm9yY2VzaW1wbGUgb3B0aW9uIGlzIG5ldmVyIHVzZWQgKHRoZSBvbmx5IGNhbGxlciBzaG9ydC1jaXJjdWl0cyBvbiBpdCwgYnV0IGl0IHNlZW1zIHNhZmVyIHRvIGxlYXZlKVxuICAgIC8vIChpbiBjb250cmFzdCwgdGhlIHJlc3Qgb2YgdGhlIGNvbmRpdGlvbiBpcyB1c2VkIGhlYXZpbHkpXG4gICAgcmV0dXJuIG5ldyBQb2x5TnVtYmVyRm9ybWF0dGVyKHRoaXMuaW50bCwgb3B0cy5mb3JjZVNpbXBsZSB8fCB0aGlzLmZhc3ROdW1iZXJzLCBvcHRzKTtcbiAgfVxuXG4gIGR0Rm9ybWF0dGVyKGR0LCBpbnRsT3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIG5ldyBQb2x5RGF0ZUZvcm1hdHRlcihkdCwgdGhpcy5pbnRsLCBpbnRsT3B0cyk7XG4gIH1cblxuICByZWxGb3JtYXR0ZXIob3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIG5ldyBQb2x5UmVsRm9ybWF0dGVyKHRoaXMuaW50bCwgdGhpcy5pc0VuZ2xpc2goKSwgb3B0cyk7XG4gIH1cblxuICBsaXN0Rm9ybWF0dGVyKG9wdHMgPSB7fSkge1xuICAgIHJldHVybiBnZXRDYWNoZWRMRih0aGlzLmludGwsIG9wdHMpO1xuICB9XG5cbiAgaXNFbmdsaXNoKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmxvY2FsZSA9PT0gXCJlblwiIHx8XG4gICAgICB0aGlzLmxvY2FsZS50b0xvd2VyQ2FzZSgpID09PSBcImVuLXVzXCIgfHxcbiAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMuaW50bCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLnN0YXJ0c1dpdGgoXCJlbi11c1wiKVxuICAgICk7XG4gIH1cblxuICBlcXVhbHMob3RoZXIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5sb2NhbGUgPT09IG90aGVyLmxvY2FsZSAmJlxuICAgICAgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPT09IG90aGVyLm51bWJlcmluZ1N5c3RlbSAmJlxuICAgICAgdGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gb3RoZXIub3V0cHV0Q2FsZW5kYXJcbiAgICApO1xuICB9XG59XG4iLCAiaW1wb3J0IHtcbiAgdW50cnVuY2F0ZVllYXIsXG4gIHNpZ25lZE9mZnNldCxcbiAgcGFyc2VJbnRlZ2VyLFxuICBwYXJzZU1pbGxpcyxcbiAgaWFuYVJlZ2V4LFxuICBpc1VuZGVmaW5lZCxcbiAgcGFyc2VGbG9hdGluZyxcbn0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuaW1wb3J0ICogYXMgRW5nbGlzaCBmcm9tIFwiLi9lbmdsaXNoLmpzXCI7XG5pbXBvcnQgRml4ZWRPZmZzZXRab25lIGZyb20gXCIuLi96b25lcy9maXhlZE9mZnNldFpvbmUuanNcIjtcbmltcG9ydCBJQU5BWm9uZSBmcm9tIFwiLi4vem9uZXMvSUFOQVpvbmUuanNcIjtcblxuLypcbiAqIFRoaXMgZmlsZSBoYW5kbGVzIHBhcnNpbmcgZm9yIHdlbGwtc3BlY2lmaWVkIGZvcm1hdHMuIEhlcmUncyBob3cgaXQgd29ya3M6XG4gKiBUd28gdGhpbmdzIGdvIGludG8gcGFyc2luZzogYSByZWdleCB0byBtYXRjaCB3aXRoIGFuZCBhbiBleHRyYWN0b3IgdG8gdGFrZSBhcGFydCB0aGUgZ3JvdXBzIGluIHRoZSBtYXRjaC5cbiAqIEFuIGV4dHJhY3RvciBpcyBqdXN0IGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHJlZ2V4IG1hdGNoIGFycmF5IGFuZCByZXR1cm5zIGEgeyB5ZWFyOiAuLi4sIG1vbnRoOiAuLi4gfSBvYmplY3RcbiAqIHBhcnNlKCkgZG9lcyB0aGUgd29yayBvZiBleGVjdXRpbmcgdGhlIHJlZ2V4IGFuZCBhcHBseWluZyB0aGUgZXh0cmFjdG9yLiBJdCB0YWtlcyBtdWx0aXBsZSByZWdleC9leHRyYWN0b3IgcGFpcnMgdG8gdHJ5IGluIHNlcXVlbmNlLlxuICogRXh0cmFjdG9ycyBjYW4gdGFrZSBhIFwiY3Vyc29yXCIgcmVwcmVzZW50aW5nIHRoZSBvZmZzZXQgaW4gdGhlIG1hdGNoIHRvIGxvb2sgYXQuIFRoaXMgbWFrZXMgaXQgZWFzeSB0byBjb21iaW5lIGV4dHJhY3RvcnMuXG4gKiBjb21iaW5lRXh0cmFjdG9ycygpIGRvZXMgdGhlIHdvcmsgb2YgY29tYmluaW5nIHRoZW0sIGtlZXBpbmcgdHJhY2sgb2YgdGhlIGN1cnNvciB0aHJvdWdoIG11bHRpcGxlIGV4dHJhY3Rpb25zLlxuICogU29tZSBleHRyYWN0aW9ucyBhcmUgc3VwZXIgZHVtYiBhbmQgc2ltcGxlUGFyc2UgYW5kIGZyb21TdHJpbmdzIGhlbHAgRFJZIHRoZW0uXG4gKi9cblxuZnVuY3Rpb24gY29tYmluZVJlZ2V4ZXMoLi4ucmVnZXhlcykge1xuICBjb25zdCBmdWxsID0gcmVnZXhlcy5yZWR1Y2UoKGYsIHIpID0+IGYgKyByLnNvdXJjZSwgXCJcIik7XG4gIHJldHVybiBSZWdFeHAoYF4ke2Z1bGx9JGApO1xufVxuXG5mdW5jdGlvbiBjb21iaW5lRXh0cmFjdG9ycyguLi5leHRyYWN0b3JzKSB7XG4gIHJldHVybiAobSkgPT5cbiAgICBleHRyYWN0b3JzXG4gICAgICAucmVkdWNlKFxuICAgICAgICAoW21lcmdlZFZhbHMsIG1lcmdlZFpvbmUsIGN1cnNvcl0sIGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgW3ZhbCwgem9uZSwgbmV4dF0gPSBleChtLCBjdXJzb3IpO1xuICAgICAgICAgIHJldHVybiBbeyAuLi5tZXJnZWRWYWxzLCAuLi52YWwgfSwgbWVyZ2VkWm9uZSB8fCB6b25lLCBuZXh0XTtcbiAgICAgICAgfSxcbiAgICAgICAgW3t9LCBudWxsLCAxXVxuICAgICAgKVxuICAgICAgLnNsaWNlKDAsIDIpO1xufVxuXG5mdW5jdGlvbiBwYXJzZShzLCAuLi5wYXR0ZXJucykge1xuICBpZiAocyA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtudWxsLCBudWxsXTtcbiAgfVxuXG4gIGZvciAoY29uc3QgW3JlZ2V4LCBleHRyYWN0b3JdIG9mIHBhdHRlcm5zKSB7XG4gICAgY29uc3QgbSA9IHJlZ2V4LmV4ZWMocyk7XG4gICAgaWYgKG0pIHtcbiAgICAgIHJldHVybiBleHRyYWN0b3IobSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbbnVsbCwgbnVsbF07XG59XG5cbmZ1bmN0aW9uIHNpbXBsZVBhcnNlKC4uLmtleXMpIHtcbiAgcmV0dXJuIChtYXRjaCwgY3Vyc29yKSA9PiB7XG4gICAgY29uc3QgcmV0ID0ge307XG4gICAgbGV0IGk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgcmV0W2tleXNbaV1dID0gcGFyc2VJbnRlZ2VyKG1hdGNoW2N1cnNvciArIGldKTtcbiAgICB9XG4gICAgcmV0dXJuIFtyZXQsIG51bGwsIGN1cnNvciArIGldO1xuICB9O1xufVxuXG4vLyBJU08gYW5kIFNRTCBwYXJzaW5nXG5jb25zdCBvZmZzZXRSZWdleCA9IC8oPzooWil8KFsrLV1cXGRcXGQpKD86Oj8oXFxkXFxkKSk/KS8sXG4gIGlzb1RpbWVCYXNlUmVnZXggPSAvKFxcZFxcZCkoPzo6PyhcXGRcXGQpKD86Oj8oXFxkXFxkKSg/OlsuLF0oXFxkezEsMzB9KSk/KT8pPy8sXG4gIGlzb1RpbWVSZWdleCA9IFJlZ0V4cChgJHtpc29UaW1lQmFzZVJlZ2V4LnNvdXJjZX0ke29mZnNldFJlZ2V4LnNvdXJjZX0/YCksXG4gIGlzb1RpbWVFeHRlbnNpb25SZWdleCA9IFJlZ0V4cChgKD86VCR7aXNvVGltZVJlZ2V4LnNvdXJjZX0pP2ApLFxuICBpc29ZbWRSZWdleCA9IC8oWystXVxcZHs2fXxcXGR7NH0pKD86LT8oXFxkXFxkKSg/Oi0/KFxcZFxcZCkpPyk/LyxcbiAgaXNvV2Vla1JlZ2V4ID0gLyhcXGR7NH0pLT9XKFxcZFxcZCkoPzotPyhcXGQpKT8vLFxuICBpc29PcmRpbmFsUmVnZXggPSAvKFxcZHs0fSktPyhcXGR7M30pLyxcbiAgZXh0cmFjdElTT1dlZWtEYXRhID0gc2ltcGxlUGFyc2UoXCJ3ZWVrWWVhclwiLCBcIndlZWtOdW1iZXJcIiwgXCJ3ZWVrRGF5XCIpLFxuICBleHRyYWN0SVNPT3JkaW5hbERhdGEgPSBzaW1wbGVQYXJzZShcInllYXJcIiwgXCJvcmRpbmFsXCIpLFxuICBzcWxZbWRSZWdleCA9IC8oXFxkezR9KS0oXFxkXFxkKS0oXFxkXFxkKS8sIC8vIGR1bWJlZC1kb3duIHZlcnNpb24gb2YgdGhlIElTTyBvbmVcbiAgc3FsVGltZVJlZ2V4ID0gUmVnRXhwKFxuICAgIGAke2lzb1RpbWVCYXNlUmVnZXguc291cmNlfSA/KD86JHtvZmZzZXRSZWdleC5zb3VyY2V9fCgke2lhbmFSZWdleC5zb3VyY2V9KSk/YFxuICApLFxuICBzcWxUaW1lRXh0ZW5zaW9uUmVnZXggPSBSZWdFeHAoYCg/OiAke3NxbFRpbWVSZWdleC5zb3VyY2V9KT9gKTtcblxuZnVuY3Rpb24gaW50KG1hdGNoLCBwb3MsIGZhbGxiYWNrKSB7XG4gIGNvbnN0IG0gPSBtYXRjaFtwb3NdO1xuICByZXR1cm4gaXNVbmRlZmluZWQobSkgPyBmYWxsYmFjayA6IHBhcnNlSW50ZWdlcihtKTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdElTT1ltZChtYXRjaCwgY3Vyc29yKSB7XG4gIGNvbnN0IGl0ZW0gPSB7XG4gICAgeWVhcjogaW50KG1hdGNoLCBjdXJzb3IpLFxuICAgIG1vbnRoOiBpbnQobWF0Y2gsIGN1cnNvciArIDEsIDEpLFxuICAgIGRheTogaW50KG1hdGNoLCBjdXJzb3IgKyAyLCAxKSxcbiAgfTtcblxuICByZXR1cm4gW2l0ZW0sIG51bGwsIGN1cnNvciArIDNdO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0SVNPVGltZShtYXRjaCwgY3Vyc29yKSB7XG4gIGNvbnN0IGl0ZW0gPSB7XG4gICAgaG91cnM6IGludChtYXRjaCwgY3Vyc29yLCAwKSxcbiAgICBtaW51dGVzOiBpbnQobWF0Y2gsIGN1cnNvciArIDEsIDApLFxuICAgIHNlY29uZHM6IGludChtYXRjaCwgY3Vyc29yICsgMiwgMCksXG4gICAgbWlsbGlzZWNvbmRzOiBwYXJzZU1pbGxpcyhtYXRjaFtjdXJzb3IgKyAzXSksXG4gIH07XG5cbiAgcmV0dXJuIFtpdGVtLCBudWxsLCBjdXJzb3IgKyA0XTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdElTT09mZnNldChtYXRjaCwgY3Vyc29yKSB7XG4gIGNvbnN0IGxvY2FsID0gIW1hdGNoW2N1cnNvcl0gJiYgIW1hdGNoW2N1cnNvciArIDFdLFxuICAgIGZ1bGxPZmZzZXQgPSBzaWduZWRPZmZzZXQobWF0Y2hbY3Vyc29yICsgMV0sIG1hdGNoW2N1cnNvciArIDJdKSxcbiAgICB6b25lID0gbG9jYWwgPyBudWxsIDogRml4ZWRPZmZzZXRab25lLmluc3RhbmNlKGZ1bGxPZmZzZXQpO1xuICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAzXTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdElBTkFab25lKG1hdGNoLCBjdXJzb3IpIHtcbiAgY29uc3Qgem9uZSA9IG1hdGNoW2N1cnNvcl0gPyBJQU5BWm9uZS5jcmVhdGUobWF0Y2hbY3Vyc29yXSkgOiBudWxsO1xuICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAxXTtcbn1cblxuLy8gSVNPIHRpbWUgcGFyc2luZ1xuXG5jb25zdCBpc29UaW1lT25seSA9IFJlZ0V4cChgXlQ/JHtpc29UaW1lQmFzZVJlZ2V4LnNvdXJjZX0kYCk7XG5cbi8vIElTTyBkdXJhdGlvbiBwYXJzaW5nXG5cbmNvbnN0IGlzb0R1cmF0aW9uID1cbiAgL14tP1AoPzooPzooLT9cXGR7MSw5fSg/OlxcLlxcZHsxLDl9KT8pWSk/KD86KC0/XFxkezEsOX0oPzpcXC5cXGR7MSw5fSk/KU0pPyg/OigtP1xcZHsxLDl9KD86XFwuXFxkezEsOX0pPylXKT8oPzooLT9cXGR7MSw5fSg/OlxcLlxcZHsxLDl9KT8pRCk/KD86VCg/OigtP1xcZHsxLDl9KD86XFwuXFxkezEsOX0pPylIKT8oPzooLT9cXGR7MSw5fSg/OlxcLlxcZHsxLDl9KT8pTSk/KD86KC0/XFxkezEsMjB9KSg/OlsuLF0oLT9cXGR7MSw5fSkpP1MpPyk/KSQvO1xuXG5mdW5jdGlvbiBleHRyYWN0SVNPRHVyYXRpb24obWF0Y2gpIHtcbiAgY29uc3QgW3MsIHllYXJTdHIsIG1vbnRoU3RyLCB3ZWVrU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyLCBtaWxsaXNlY29uZHNTdHJdID1cbiAgICBtYXRjaDtcblxuICBjb25zdCBoYXNOZWdhdGl2ZVByZWZpeCA9IHNbMF0gPT09IFwiLVwiO1xuICBjb25zdCBuZWdhdGl2ZVNlY29uZHMgPSBzZWNvbmRTdHIgJiYgc2Vjb25kU3RyWzBdID09PSBcIi1cIjtcblxuICBjb25zdCBtYXliZU5lZ2F0ZSA9IChudW0sIGZvcmNlID0gZmFsc2UpID0+XG4gICAgbnVtICE9PSB1bmRlZmluZWQgJiYgKGZvcmNlIHx8IChudW0gJiYgaGFzTmVnYXRpdmVQcmVmaXgpKSA/IC1udW0gOiBudW07XG5cbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICB5ZWFyczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyh5ZWFyU3RyKSksXG4gICAgICBtb250aHM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcobW9udGhTdHIpKSxcbiAgICAgIHdlZWtzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKHdlZWtTdHIpKSxcbiAgICAgIGRheXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoZGF5U3RyKSksXG4gICAgICBob3VyczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyhob3VyU3RyKSksXG4gICAgICBtaW51dGVzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKG1pbnV0ZVN0cikpLFxuICAgICAgc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyhzZWNvbmRTdHIpLCBzZWNvbmRTdHIgPT09IFwiLTBcIiksXG4gICAgICBtaWxsaXNlY29uZHM6IG1heWJlTmVnYXRlKHBhcnNlTWlsbGlzKG1pbGxpc2Vjb25kc1N0ciksIG5lZ2F0aXZlU2Vjb25kcyksXG4gICAgfSxcbiAgXTtcbn1cblxuLy8gVGhlc2UgYXJlIGEgbGl0dGxlIGJyYWluZGVhZC4gRURUICpzaG91bGQqIHRlbGwgdXMgdGhhdCB3ZSdyZSBpbiwgc2F5LCBBbWVyaWNhL05ld19Zb3JrXG4vLyBhbmQgbm90IGp1c3QgdGhhdCB3ZSdyZSBpbiAtMjQwICpyaWdodCBub3cqLiBCdXQgc2luY2UgSSBkb24ndCB0aGluayB0aGVzZSBhcmUgdXNlZCB0aGF0IG9mdGVuXG4vLyBJJ20ganVzdCBnb2luZyB0byBpZ25vcmUgdGhhdFxuY29uc3Qgb2JzT2Zmc2V0cyA9IHtcbiAgR01UOiAwLFxuICBFRFQ6IC00ICogNjAsXG4gIEVTVDogLTUgKiA2MCxcbiAgQ0RUOiAtNSAqIDYwLFxuICBDU1Q6IC02ICogNjAsXG4gIE1EVDogLTYgKiA2MCxcbiAgTVNUOiAtNyAqIDYwLFxuICBQRFQ6IC03ICogNjAsXG4gIFBTVDogLTggKiA2MCxcbn07XG5cbmZ1bmN0aW9uIGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKSB7XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICB5ZWFyOiB5ZWFyU3RyLmxlbmd0aCA9PT0gMiA/IHVudHJ1bmNhdGVZZWFyKHBhcnNlSW50ZWdlcih5ZWFyU3RyKSkgOiBwYXJzZUludGVnZXIoeWVhclN0ciksXG4gICAgbW9udGg6IEVuZ2xpc2gubW9udGhzU2hvcnQuaW5kZXhPZihtb250aFN0cikgKyAxLFxuICAgIGRheTogcGFyc2VJbnRlZ2VyKGRheVN0ciksXG4gICAgaG91cjogcGFyc2VJbnRlZ2VyKGhvdXJTdHIpLFxuICAgIG1pbnV0ZTogcGFyc2VJbnRlZ2VyKG1pbnV0ZVN0ciksXG4gIH07XG5cbiAgaWYgKHNlY29uZFN0cikgcmVzdWx0LnNlY29uZCA9IHBhcnNlSW50ZWdlcihzZWNvbmRTdHIpO1xuICBpZiAod2Vla2RheVN0cikge1xuICAgIHJlc3VsdC53ZWVrZGF5ID1cbiAgICAgIHdlZWtkYXlTdHIubGVuZ3RoID4gM1xuICAgICAgICA/IEVuZ2xpc2gud2Vla2RheXNMb25nLmluZGV4T2Yod2Vla2RheVN0cikgKyAxXG4gICAgICAgIDogRW5nbGlzaC53ZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0cikgKyAxO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gUkZDIDI4MjIvNTMyMlxuY29uc3QgcmZjMjgyMiA9XG4gIC9eKD86KE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1biksXFxzKT8oXFxkezEsMn0pXFxzKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKVxccyhcXGR7Miw0fSlcXHMoXFxkXFxkKTooXFxkXFxkKSg/OjooXFxkXFxkKSk/XFxzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfCg/OihbKy1dXFxkXFxkKShcXGRcXGQpKSkkLztcblxuZnVuY3Rpb24gZXh0cmFjdFJGQzI4MjIobWF0Y2gpIHtcbiAgY29uc3QgW1xuICAgICAgLFxuICAgICAgd2Vla2RheVN0cixcbiAgICAgIGRheVN0cixcbiAgICAgIG1vbnRoU3RyLFxuICAgICAgeWVhclN0cixcbiAgICAgIGhvdXJTdHIsXG4gICAgICBtaW51dGVTdHIsXG4gICAgICBzZWNvbmRTdHIsXG4gICAgICBvYnNPZmZzZXQsXG4gICAgICBtaWxPZmZzZXQsXG4gICAgICBvZmZIb3VyU3RyLFxuICAgICAgb2ZmTWludXRlU3RyLFxuICAgIF0gPSBtYXRjaCxcbiAgICByZXN1bHQgPSBmcm9tU3RyaW5ncyh3ZWVrZGF5U3RyLCB5ZWFyU3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cik7XG5cbiAgbGV0IG9mZnNldDtcbiAgaWYgKG9ic09mZnNldCkge1xuICAgIG9mZnNldCA9IG9ic09mZnNldHNbb2JzT2Zmc2V0XTtcbiAgfSBlbHNlIGlmIChtaWxPZmZzZXQpIHtcbiAgICBvZmZzZXQgPSAwO1xuICB9IGVsc2Uge1xuICAgIG9mZnNldCA9IHNpZ25lZE9mZnNldChvZmZIb3VyU3RyLCBvZmZNaW51dGVTdHIpO1xuICB9XG5cbiAgcmV0dXJuIFtyZXN1bHQsIG5ldyBGaXhlZE9mZnNldFpvbmUob2Zmc2V0KV07XG59XG5cbmZ1bmN0aW9uIHByZXByb2Nlc3NSRkMyODIyKHMpIHtcbiAgLy8gUmVtb3ZlIGNvbW1lbnRzIGFuZCBmb2xkaW5nIHdoaXRlc3BhY2UgYW5kIHJlcGxhY2UgbXVsdGlwbGUtc3BhY2VzIHdpdGggYSBzaW5nbGUgc3BhY2VcbiAgcmV0dXJuIHNcbiAgICAucmVwbGFjZSgvXFwoW14pXSpcXCl8W1xcblxcdF0vZywgXCIgXCIpXG4gICAgLnJlcGxhY2UoLyhcXHNcXHMrKS9nLCBcIiBcIilcbiAgICAudHJpbSgpO1xufVxuXG4vLyBodHRwIGRhdGVcblxuY29uc3QgcmZjMTEyMyA9XG4gICAgL14oTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSwgKFxcZFxcZCkgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoXFxkezR9KSAoXFxkXFxkKTooXFxkXFxkKTooXFxkXFxkKSBHTVQkLyxcbiAgcmZjODUwID1cbiAgICAvXihNb25kYXl8VHVlc2RheXxXZWRzZGF5fFRodXJzZGF5fEZyaWRheXxTYXR1cmRheXxTdW5kYXkpLCAoXFxkXFxkKS0oSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpLShcXGRcXGQpIChcXGRcXGQpOihcXGRcXGQpOihcXGRcXGQpIEdNVCQvLFxuICBhc2NpaSA9XG4gICAgL14oTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSAoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpICggXFxkfFxcZFxcZCkgKFxcZFxcZCk6KFxcZFxcZCk6KFxcZFxcZCkgKFxcZHs0fSkkLztcblxuZnVuY3Rpb24gZXh0cmFjdFJGQzExMjNPcjg1MChtYXRjaCkge1xuICBjb25zdCBbLCB3ZWVrZGF5U3RyLCBkYXlTdHIsIG1vbnRoU3RyLCB5ZWFyU3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cl0gPSBtYXRjaCxcbiAgICByZXN1bHQgPSBmcm9tU3RyaW5ncyh3ZWVrZGF5U3RyLCB5ZWFyU3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cik7XG4gIHJldHVybiBbcmVzdWx0LCBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2VdO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0QVNDSUkobWF0Y2gpIHtcbiAgY29uc3QgWywgd2Vla2RheVN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIsIHllYXJTdHJdID0gbWF0Y2gsXG4gICAgcmVzdWx0ID0gZnJvbVN0cmluZ3Mod2Vla2RheVN0ciwgeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpO1xuICByZXR1cm4gW3Jlc3VsdCwgRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlXTtcbn1cblxuY29uc3QgaXNvWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKGlzb1ltZFJlZ2V4LCBpc29UaW1lRXh0ZW5zaW9uUmVnZXgpO1xuY29uc3QgaXNvV2Vla1dpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29XZWVrUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7XG5jb25zdCBpc29PcmRpbmFsV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKGlzb09yZGluYWxSZWdleCwgaXNvVGltZUV4dGVuc2lvblJlZ2V4KTtcbmNvbnN0IGlzb1RpbWVDb21iaW5lZFJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoaXNvVGltZVJlZ2V4KTtcblxuY29uc3QgZXh0cmFjdElTT1ltZFRpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycyhcbiAgZXh0cmFjdElTT1ltZCxcbiAgZXh0cmFjdElTT1RpbWUsXG4gIGV4dHJhY3RJU09PZmZzZXRcbik7XG5jb25zdCBleHRyYWN0SVNPV2Vla1RpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycyhcbiAgZXh0cmFjdElTT1dlZWtEYXRhLFxuICBleHRyYWN0SVNPVGltZSxcbiAgZXh0cmFjdElTT09mZnNldFxuKTtcbmNvbnN0IGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWUgPSBjb21iaW5lRXh0cmFjdG9ycyhcbiAgZXh0cmFjdElTT09yZGluYWxEYXRhLFxuICBleHRyYWN0SVNPVGltZSxcbiAgZXh0cmFjdElTT09mZnNldFxuKTtcbmNvbnN0IGV4dHJhY3RJU09UaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUsIGV4dHJhY3RJU09PZmZzZXQpO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSVNPRGF0ZShzKSB7XG4gIHJldHVybiBwYXJzZShcbiAgICBzLFxuICAgIFtpc29ZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPWW1kVGltZUFuZE9mZnNldF0sXG4gICAgW2lzb1dlZWtXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPV2Vla1RpbWVBbmRPZmZzZXRdLFxuICAgIFtpc29PcmRpbmFsV2l0aFRpbWVFeHRlbnNpb25SZWdleCwgZXh0cmFjdElTT09yZGluYWxEYXRlQW5kVGltZV0sXG4gICAgW2lzb1RpbWVDb21iaW5lZFJlZ2V4LCBleHRyYWN0SVNPVGltZUFuZE9mZnNldF1cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUkZDMjgyMkRhdGUocykge1xuICByZXR1cm4gcGFyc2UocHJlcHJvY2Vzc1JGQzI4MjIocyksIFtyZmMyODIyLCBleHRyYWN0UkZDMjgyMl0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VIVFRQRGF0ZShzKSB7XG4gIHJldHVybiBwYXJzZShcbiAgICBzLFxuICAgIFtyZmMxMTIzLCBleHRyYWN0UkZDMTEyM09yODUwXSxcbiAgICBbcmZjODUwLCBleHRyYWN0UkZDMTEyM09yODUwXSxcbiAgICBbYXNjaWksIGV4dHJhY3RBU0NJSV1cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSVNPRHVyYXRpb24ocykge1xuICByZXR1cm4gcGFyc2UocywgW2lzb0R1cmF0aW9uLCBleHRyYWN0SVNPRHVyYXRpb25dKTtcbn1cblxuY29uc3QgZXh0cmFjdElTT1RpbWVPbmx5ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUpO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJU09UaW1lT25seShzKSB7XG4gIHJldHVybiBwYXJzZShzLCBbaXNvVGltZU9ubHksIGV4dHJhY3RJU09UaW1lT25seV0pO1xufVxuXG5jb25zdCBzcWxZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoc3FsWW1kUmVnZXgsIHNxbFRpbWVFeHRlbnNpb25SZWdleCk7XG5jb25zdCBzcWxUaW1lQ29tYmluZWRSZWdleCA9IGNvbWJpbmVSZWdleGVzKHNxbFRpbWVSZWdleCk7XG5cbmNvbnN0IGV4dHJhY3RJU09ZbWRUaW1lT2Zmc2V0QW5kSUFOQVpvbmUgPSBjb21iaW5lRXh0cmFjdG9ycyhcbiAgZXh0cmFjdElTT1ltZCxcbiAgZXh0cmFjdElTT1RpbWUsXG4gIGV4dHJhY3RJU09PZmZzZXQsXG4gIGV4dHJhY3RJQU5BWm9uZVxuKTtcbmNvbnN0IGV4dHJhY3RJU09UaW1lT2Zmc2V0QW5kSUFOQVpvbmUgPSBjb21iaW5lRXh0cmFjdG9ycyhcbiAgZXh0cmFjdElTT1RpbWUsXG4gIGV4dHJhY3RJU09PZmZzZXQsXG4gIGV4dHJhY3RJQU5BWm9uZVxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU1FMKHMpIHtcbiAgcmV0dXJuIHBhcnNlKFxuICAgIHMsXG4gICAgW3NxbFltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09ZbWRUaW1lT2Zmc2V0QW5kSUFOQVpvbmVdLFxuICAgIFtzcWxUaW1lQ29tYmluZWRSZWdleCwgZXh0cmFjdElTT1RpbWVPZmZzZXRBbmRJQU5BWm9uZV1cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBJbnZhbGlkQXJndW1lbnRFcnJvciwgSW52YWxpZER1cmF0aW9uRXJyb3IsIEludmFsaWRVbml0RXJyb3IgfSBmcm9tIFwiLi9lcnJvcnMuanNcIjtcbmltcG9ydCBGb3JtYXR0ZXIgZnJvbSBcIi4vaW1wbC9mb3JtYXR0ZXIuanNcIjtcbmltcG9ydCBJbnZhbGlkIGZyb20gXCIuL2ltcGwvaW52YWxpZC5qc1wiO1xuaW1wb3J0IExvY2FsZSBmcm9tIFwiLi9pbXBsL2xvY2FsZS5qc1wiO1xuaW1wb3J0IHsgcGFyc2VJU09EdXJhdGlvbiwgcGFyc2VJU09UaW1lT25seSB9IGZyb20gXCIuL2ltcGwvcmVnZXhQYXJzZXIuanNcIjtcbmltcG9ydCB7XG4gIGFzTnVtYmVyLFxuICBoYXNPd25Qcm9wZXJ0eSxcbiAgaXNJbnRlZ2VyLFxuICBpc051bWJlcixcbiAgaXNVbmRlZmluZWQsXG4gIG5vcm1hbGl6ZU9iamVjdCxcbiAgcm91bmRUbyxcbn0gZnJvbSBcIi4vaW1wbC91dGlsLmpzXCI7XG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3MuanNcIjtcblxuY29uc3QgSU5WQUxJRCA9IFwiSW52YWxpZCBEdXJhdGlvblwiO1xuXG4vLyB1bml0IGNvbnZlcnNpb24gY29uc3RhbnRzXG5leHBvcnQgY29uc3QgbG93T3JkZXJNYXRyaXggPSB7XG4gICAgd2Vla3M6IHtcbiAgICAgIGRheXM6IDcsXG4gICAgICBob3VyczogNyAqIDI0LFxuICAgICAgbWludXRlczogNyAqIDI0ICogNjAsXG4gICAgICBzZWNvbmRzOiA3ICogMjQgKiA2MCAqIDYwLFxuICAgICAgbWlsbGlzZWNvbmRzOiA3ICogMjQgKiA2MCAqIDYwICogMTAwMCxcbiAgICB9LFxuICAgIGRheXM6IHtcbiAgICAgIGhvdXJzOiAyNCxcbiAgICAgIG1pbnV0ZXM6IDI0ICogNjAsXG4gICAgICBzZWNvbmRzOiAyNCAqIDYwICogNjAsXG4gICAgICBtaWxsaXNlY29uZHM6IDI0ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgfSxcbiAgICBob3VyczogeyBtaW51dGVzOiA2MCwgc2Vjb25kczogNjAgKiA2MCwgbWlsbGlzZWNvbmRzOiA2MCAqIDYwICogMTAwMCB9LFxuICAgIG1pbnV0ZXM6IHsgc2Vjb25kczogNjAsIG1pbGxpc2Vjb25kczogNjAgKiAxMDAwIH0sXG4gICAgc2Vjb25kczogeyBtaWxsaXNlY29uZHM6IDEwMDAgfSxcbiAgfSxcbiAgY2FzdWFsTWF0cml4ID0ge1xuICAgIHllYXJzOiB7XG4gICAgICBxdWFydGVyczogNCxcbiAgICAgIG1vbnRoczogMTIsXG4gICAgICB3ZWVrczogNTIsXG4gICAgICBkYXlzOiAzNjUsXG4gICAgICBob3VyczogMzY1ICogMjQsXG4gICAgICBtaW51dGVzOiAzNjUgKiAyNCAqIDYwLFxuICAgICAgc2Vjb25kczogMzY1ICogMjQgKiA2MCAqIDYwLFxuICAgICAgbWlsbGlzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAgKiAxMDAwLFxuICAgIH0sXG4gICAgcXVhcnRlcnM6IHtcbiAgICAgIG1vbnRoczogMyxcbiAgICAgIHdlZWtzOiAxMyxcbiAgICAgIGRheXM6IDkxLFxuICAgICAgaG91cnM6IDkxICogMjQsXG4gICAgICBtaW51dGVzOiA5MSAqIDI0ICogNjAsXG4gICAgICBzZWNvbmRzOiA5MSAqIDI0ICogNjAgKiA2MCxcbiAgICAgIG1pbGxpc2Vjb25kczogOTEgKiAyNCAqIDYwICogNjAgKiAxMDAwLFxuICAgIH0sXG4gICAgbW9udGhzOiB7XG4gICAgICB3ZWVrczogNCxcbiAgICAgIGRheXM6IDMwLFxuICAgICAgaG91cnM6IDMwICogMjQsXG4gICAgICBtaW51dGVzOiAzMCAqIDI0ICogNjAsXG4gICAgICBzZWNvbmRzOiAzMCAqIDI0ICogNjAgKiA2MCxcbiAgICAgIG1pbGxpc2Vjb25kczogMzAgKiAyNCAqIDYwICogNjAgKiAxMDAwLFxuICAgIH0sXG5cbiAgICAuLi5sb3dPcmRlck1hdHJpeCxcbiAgfSxcbiAgZGF5c0luWWVhckFjY3VyYXRlID0gMTQ2MDk3LjAgLyA0MDAsXG4gIGRheXNJbk1vbnRoQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQ4MDAsXG4gIGFjY3VyYXRlTWF0cml4ID0ge1xuICAgIHllYXJzOiB7XG4gICAgICBxdWFydGVyczogNCxcbiAgICAgIG1vbnRoczogMTIsXG4gICAgICB3ZWVrczogZGF5c0luWWVhckFjY3VyYXRlIC8gNyxcbiAgICAgIGRheXM6IGRheXNJblllYXJBY2N1cmF0ZSxcbiAgICAgIGhvdXJzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCxcbiAgICAgIG1pbnV0ZXM6IGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjAsXG4gICAgICBzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsXG4gICAgICBtaWxsaXNlY29uZHM6IGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgfSxcbiAgICBxdWFydGVyczoge1xuICAgICAgbW9udGhzOiAzLFxuICAgICAgd2Vla3M6IGRheXNJblllYXJBY2N1cmF0ZSAvIDI4LFxuICAgICAgZGF5czogZGF5c0luWWVhckFjY3VyYXRlIC8gNCxcbiAgICAgIGhvdXJzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQpIC8gNCxcbiAgICAgIG1pbnV0ZXM6IChkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwKSAvIDQsXG4gICAgICBzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwKSAvIDQsXG4gICAgICBtaWxsaXNlY29uZHM6IChkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAgKiAxMDAwKSAvIDQsXG4gICAgfSxcbiAgICBtb250aHM6IHtcbiAgICAgIHdlZWtzOiBkYXlzSW5Nb250aEFjY3VyYXRlIC8gNyxcbiAgICAgIGRheXM6IGRheXNJbk1vbnRoQWNjdXJhdGUsXG4gICAgICBob3VyczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0LFxuICAgICAgbWludXRlczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0ICogNjAsXG4gICAgICBzZWNvbmRzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCAqIDYwLFxuICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCxcbiAgICB9LFxuICAgIC4uLmxvd09yZGVyTWF0cml4LFxuICB9O1xuXG4vLyB1bml0cyBvcmRlcmVkIGJ5IHNpemVcbmNvbnN0IG9yZGVyZWRVbml0cyA9IFtcbiAgXCJ5ZWFyc1wiLFxuICBcInF1YXJ0ZXJzXCIsXG4gIFwibW9udGhzXCIsXG4gIFwid2Vla3NcIixcbiAgXCJkYXlzXCIsXG4gIFwiaG91cnNcIixcbiAgXCJtaW51dGVzXCIsXG4gIFwic2Vjb25kc1wiLFxuICBcIm1pbGxpc2Vjb25kc1wiLFxuXTtcblxuY29uc3QgcmV2ZXJzZVVuaXRzID0gb3JkZXJlZFVuaXRzLnNsaWNlKDApLnJldmVyc2UoKTtcblxuLy8gY2xvbmUgcmVhbGx5IG1lYW5zIFwiY3JlYXRlIGFub3RoZXIgaW5zdGFuY2UganVzdCBsaWtlIHRoaXMgb25lLCBidXQgd2l0aCB0aGVzZSBjaGFuZ2VzXCJcbmZ1bmN0aW9uIGNsb25lKGR1ciwgYWx0cywgY2xlYXIgPSBmYWxzZSkge1xuICAvLyBkZWVwIG1lcmdlIGZvciB2YWxzXG4gIGNvbnN0IGNvbmYgPSB7XG4gICAgdmFsdWVzOiBjbGVhciA/IGFsdHMudmFsdWVzIDogeyAuLi5kdXIudmFsdWVzLCAuLi4oYWx0cy52YWx1ZXMgfHwge30pIH0sXG4gICAgbG9jOiBkdXIubG9jLmNsb25lKGFsdHMubG9jKSxcbiAgICBjb252ZXJzaW9uQWNjdXJhY3k6IGFsdHMuY29udmVyc2lvbkFjY3VyYWN5IHx8IGR1ci5jb252ZXJzaW9uQWNjdXJhY3ksXG4gIH07XG4gIHJldHVybiBuZXcgRHVyYXRpb24oY29uZik7XG59XG5cbmZ1bmN0aW9uIGFudGlUcnVuYyhuKSB7XG4gIHJldHVybiBuIDwgMCA/IE1hdGguZmxvb3IobikgOiBNYXRoLmNlaWwobik7XG59XG5cbi8vIE5COiBtdXRhdGVzIHBhcmFtZXRlcnNcbmZ1bmN0aW9uIGNvbnZlcnQobWF0cml4LCBmcm9tTWFwLCBmcm9tVW5pdCwgdG9NYXAsIHRvVW5pdCkge1xuICBjb25zdCBjb252ID0gbWF0cml4W3RvVW5pdF1bZnJvbVVuaXRdLFxuICAgIHJhdyA9IGZyb21NYXBbZnJvbVVuaXRdIC8gY29udixcbiAgICBzYW1lU2lnbiA9IE1hdGguc2lnbihyYXcpID09PSBNYXRoLnNpZ24odG9NYXBbdG9Vbml0XSksXG4gICAgLy8gb2ssIHNvIHRoaXMgaXMgd2lsZCwgYnV0IHNlZSB0aGUgbWF0cml4IGluIHRoZSB0ZXN0c1xuICAgIGFkZGVkID1cbiAgICAgICFzYW1lU2lnbiAmJiB0b01hcFt0b1VuaXRdICE9PSAwICYmIE1hdGguYWJzKHJhdykgPD0gMSA/IGFudGlUcnVuYyhyYXcpIDogTWF0aC50cnVuYyhyYXcpO1xuICB0b01hcFt0b1VuaXRdICs9IGFkZGVkO1xuICBmcm9tTWFwW2Zyb21Vbml0XSAtPSBhZGRlZCAqIGNvbnY7XG59XG5cbi8vIE5COiBtdXRhdGVzIHBhcmFtZXRlcnNcbmZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlcyhtYXRyaXgsIHZhbHMpIHtcbiAgcmV2ZXJzZVVuaXRzLnJlZHVjZSgocHJldmlvdXMsIGN1cnJlbnQpID0+IHtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHNbY3VycmVudF0pKSB7XG4gICAgICBpZiAocHJldmlvdXMpIHtcbiAgICAgICAgY29udmVydChtYXRyaXgsIHZhbHMsIHByZXZpb3VzLCB2YWxzLCBjdXJyZW50KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjdXJyZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcHJldmlvdXM7XG4gICAgfVxuICB9LCBudWxsKTtcbn1cblxuLyoqXG4gKiBBIER1cmF0aW9uIG9iamVjdCByZXByZXNlbnRzIGEgcGVyaW9kIG9mIHRpbWUsIGxpa2UgXCIyIG1vbnRoc1wiIG9yIFwiMSBkYXksIDEgaG91clwiLiBDb25jZXB0dWFsbHksIGl0J3MganVzdCBhIG1hcCBvZiB1bml0cyB0byB0aGVpciBxdWFudGl0aWVzLCBhY2NvbXBhbmllZCBieSBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBhbmQgbWV0aG9kcyBmb3IgY3JlYXRpbmcsIHBhcnNpbmcsIGludGVycm9nYXRpbmcsIHRyYW5zZm9ybWluZywgYW5kIGZvcm1hdHRpbmcgdGhlbS4gVGhleSBjYW4gYmUgdXNlZCBvbiB0aGVpciBvd24gb3IgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBMdXhvbiB0eXBlczsgZm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIHtAbGluayBEYXRlVGltZSNwbHVzfSB0byBhZGQgYSBEdXJhdGlvbiBvYmplY3QgdG8gYSBEYXRlVGltZSwgcHJvZHVjaW5nIGFub3RoZXIgRGF0ZVRpbWUuXG4gKlxuICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIGNvbW1vbmx5IHVzZWQgbWV0aG9kcyBhbmQgZ2V0dGVycyBpbiBEdXJhdGlvbjpcbiAqXG4gKiAqICoqQ3JlYXRpb24qKiBUbyBjcmVhdGUgYSBEdXJhdGlvbiwgdXNlIHtAbGluayBEdXJhdGlvbiNmcm9tTWlsbGlzfSwge0BsaW5rIER1cmF0aW9uI2Zyb21PYmplY3R9LCBvciB7QGxpbmsgRHVyYXRpb24jZnJvbUlTT30uXG4gKiAqICoqVW5pdCB2YWx1ZXMqKiBTZWUgdGhlIHtAbGluayBEdXJhdGlvbiN5ZWFyc30sIHtAbGluayBEdXJhdGlvbi5tb250aHN9LCB7QGxpbmsgRHVyYXRpb24jd2Vla3N9LCB7QGxpbmsgRHVyYXRpb24jZGF5c30sIHtAbGluayBEdXJhdGlvbiNob3Vyc30sIHtAbGluayBEdXJhdGlvbiNtaW51dGVzfSwge0BsaW5rIER1cmF0aW9uI3NlY29uZHN9LCB7QGxpbmsgRHVyYXRpb24jbWlsbGlzZWNvbmRzfSBhY2Nlc3NvcnMuXG4gKiAqICoqQ29uZmlndXJhdGlvbioqIFNlZSAge0BsaW5rIER1cmF0aW9uI2xvY2FsZX0gYW5kIHtAbGluayBEdXJhdGlvbiNudW1iZXJpbmdTeXN0ZW19IGFjY2Vzc29ycy5cbiAqICogKipUcmFuc2Zvcm1hdGlvbioqIFRvIGNyZWF0ZSBuZXcgRHVyYXRpb25zIG91dCBvZiBvbGQgb25lcyB1c2Uge0BsaW5rIER1cmF0aW9uI3BsdXN9LCB7QGxpbmsgRHVyYXRpb24jbWludXN9LCB7QGxpbmsgRHVyYXRpb24jbm9ybWFsaXplfSwge0BsaW5rIER1cmF0aW9uI3NldH0sIHtAbGluayBEdXJhdGlvbiNyZWNvbmZpZ3VyZX0sIHtAbGluayBEdXJhdGlvbiNzaGlmdFRvfSwgYW5kIHtAbGluayBEdXJhdGlvbiNuZWdhdGV9LlxuICogKiAqKk91dHB1dCoqIFRvIGNvbnZlcnQgdGhlIER1cmF0aW9uIGludG8gb3RoZXIgcmVwcmVzZW50YXRpb25zLCBzZWUge0BsaW5rIER1cmF0aW9uI2FzfSwge0BsaW5rIER1cmF0aW9uI3RvSVNPfSwge0BsaW5rIER1cmF0aW9uI3RvRm9ybWF0fSwgYW5kIHtAbGluayBEdXJhdGlvbiN0b0pTT059XG4gKlxuICogVGhlcmUncyBhcmUgbW9yZSBtZXRob2RzIGRvY3VtZW50ZWQgYmVsb3cuIEluIGFkZGl0aW9uLCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzdWJ0bGVyIHRvcGljcyBsaWtlIGludGVybmF0aW9uYWxpemF0aW9uIGFuZCB2YWxpZGl0eSwgc2VlIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0aW9uLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEdXJhdGlvbiB7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgY29uc3QgYWNjdXJhdGUgPSBjb25maWcuY29udmVyc2lvbkFjY3VyYWN5ID09PSBcImxvbmd0ZXJtXCIgfHwgZmFsc2U7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy52YWx1ZXMgPSBjb25maWcudmFsdWVzO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5jb252ZXJzaW9uQWNjdXJhY3kgPSBhY2N1cmF0ZSA/IFwibG9uZ3Rlcm1cIiA6IFwiY2FzdWFsXCI7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5pbnZhbGlkID0gY29uZmlnLmludmFsaWQgfHwgbnVsbDtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLm1hdHJpeCA9IGFjY3VyYXRlID8gYWNjdXJhdGVNYXRyaXggOiBjYXN1YWxNYXRyaXg7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5pc0x1eG9uRHVyYXRpb24gPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBEdXJhdGlvbiBmcm9tIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvdW50IG9mIG1pbGxpc2Vjb25kc1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIHBhcnNpbmdcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2VcbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBzdGF0aWMgZnJvbU1pbGxpcyhjb3VudCwgb3B0cykge1xuICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWlsbGlzZWNvbmRzOiBjb3VudCB9LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy5cbiAgICogSWYgdGhpcyBvYmplY3QgaXMgZW1wdHkgdGhlbiBhIHplcm8gbWlsbGlzZWNvbmRzIGR1cmF0aW9uIGlzIHJldHVybmVkLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gdGhlIG9iamVjdCB0byBjcmVhdGUgdGhlIERhdGVUaW1lIGZyb21cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai55ZWFyc1xuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnF1YXJ0ZXJzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubW9udGhzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla3NcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5kYXlzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouaG91cnNcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taW51dGVzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouc2Vjb25kc1xuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbGxpc2Vjb25kc1xuICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9W11dIC0gb3B0aW9ucyBmb3IgY3JlYXRpbmcgdGhpcyBEdXJhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gdGhlIGxvY2FsZSB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHN0YXRpYyBmcm9tT2JqZWN0KG9iaiwgb3B0cyA9IHt9KSB7XG4gICAgaWYgKG9iaiA9PSBudWxsIHx8IHR5cGVvZiBvYmogIT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgYER1cmF0aW9uLmZyb21PYmplY3Q6IGFyZ3VtZW50IGV4cGVjdGVkIHRvIGJlIGFuIG9iamVjdCwgZ290ICR7XG4gICAgICAgICAgb2JqID09PSBudWxsID8gXCJudWxsXCIgOiB0eXBlb2Ygb2JqXG4gICAgICAgIH1gXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRHVyYXRpb24oe1xuICAgICAgdmFsdWVzOiBub3JtYWxpemVPYmplY3Qob2JqLCBEdXJhdGlvbi5ub3JtYWxpemVVbml0KSxcbiAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0cyksXG4gICAgICBjb252ZXJzaW9uQWNjdXJhY3k6IG9wdHMuY29udmVyc2lvbkFjY3VyYWN5LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gRHVyYXRpb25MaWtlLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdCB8IG51bWJlciB8IER1cmF0aW9ufSBkdXJhdGlvbkxpa2VcbiAgICogT25lIG9mOlxuICAgKiAtIG9iamVjdCB3aXRoIGtleXMgbGlrZSAneWVhcnMnIGFuZCAnaG91cnMnLlxuICAgKiAtIG51bWJlciByZXByZXNlbnRpbmcgbWlsbGlzZWNvbmRzXG4gICAqIC0gRHVyYXRpb24gaW5zdGFuY2VcbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBzdGF0aWMgZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbkxpa2UpIHtcbiAgICBpZiAoaXNOdW1iZXIoZHVyYXRpb25MaWtlKSkge1xuICAgICAgcmV0dXJuIER1cmF0aW9uLmZyb21NaWxsaXMoZHVyYXRpb25MaWtlKTtcbiAgICB9IGVsc2UgaWYgKER1cmF0aW9uLmlzRHVyYXRpb24oZHVyYXRpb25MaWtlKSkge1xuICAgICAgcmV0dXJuIGR1cmF0aW9uTGlrZTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkdXJhdGlvbkxpa2UgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KGR1cmF0aW9uTGlrZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgYFVua25vd24gZHVyYXRpb24gYXJndW1lbnQgJHtkdXJhdGlvbkxpa2V9IG9mIHR5cGUgJHt0eXBlb2YgZHVyYXRpb25MaWtlfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gYW4gSVNPIDg2MDEgZHVyYXRpb24gc3RyaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRleHQgdG8gcGFyc2VcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjRHVyYXRpb25zXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU08oJ1AzWTZNMVc0RFQxMkgzME01UycpLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiAzLCBtb250aHM6IDYsIHdlZWtzOiAxLCBkYXlzOiA0LCBob3VyczogMTIsIG1pbnV0ZXM6IDMwLCBzZWNvbmRzOiA1IH1cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUFQyM0gnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjMgfVxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPKCdQNVkzTScpLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiA1LCBtb250aHM6IDMgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMpIHtcbiAgICBjb25zdCBbcGFyc2VkXSA9IHBhcnNlSVNPRHVyYXRpb24odGV4dCk7XG4gICAgaWYgKHBhcnNlZCkge1xuICAgICAgcmV0dXJuIER1cmF0aW9uLmZyb21PYmplY3QocGFyc2VkLCBvcHRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoXCJ1bnBhcnNhYmxlXCIsIGB0aGUgaW5wdXQgXCIke3RleHR9XCIgY2FuJ3QgYmUgcGFyc2VkIGFzIElTTyA4NjAxYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gYW4gSVNPIDg2MDEgdGltZSBzdHJpbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGV4dCB0byBwYXJzZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIHBhcnNpbmdcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2VcbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lc1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTE6MjI6MzMuNDQ0JykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDExLCBtaW51dGVzOiAyMiwgc2Vjb25kczogMzMsIG1pbGxpc2Vjb25kczogNDQ0IH1cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJzExOjAwJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDExLCBtaW51dGVzOiAwLCBzZWNvbmRzOiAwIH1cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJ1QxMTowMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9XG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU09UaW1lKCcxMTAwJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDExLCBtaW51dGVzOiAwLCBzZWNvbmRzOiAwIH1cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJ1QxMTAwJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDExLCBtaW51dGVzOiAwLCBzZWNvbmRzOiAwIH1cbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBzdGF0aWMgZnJvbUlTT1RpbWUodGV4dCwgb3B0cykge1xuICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09UaW1lT25seSh0ZXh0KTtcbiAgICBpZiAocGFyc2VkKSB7XG4gICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdChwYXJzZWQsIG9wdHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gRHVyYXRpb24uaW52YWxpZChcInVucGFyc2FibGVcIiwgYHRoZSBpbnB1dCBcIiR7dGV4dH1cIiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGludmFsaWQgRHVyYXRpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb24gLSBzaW1wbGUgc3RyaW5nIG9mIHdoeSB0aGlzIGRhdGV0aW1lIGlzIGludmFsaWQuIFNob3VsZCBub3QgY29udGFpbiBwYXJhbWV0ZXJzIG9yIGFueXRoaW5nIGVsc2UgZGF0YS1kZXBlbmRlbnRcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtleHBsYW5hdGlvbj1udWxsXSAtIGxvbmdlciBleHBsYW5hdGlvbiwgbWF5IGluY2x1ZGUgcGFyYW1ldGVycyBhbmQgb3RoZXIgdXNlZnVsIGRlYnVnZ2luZyBpbmZvcm1hdGlvblxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHN0YXRpYyBpbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24gPSBudWxsKSB7XG4gICAgaWYgKCFyZWFzb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgRHVyYXRpb24gaXMgaW52YWxpZFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnZhbGlkID0gcmVhc29uIGluc3RhbmNlb2YgSW52YWxpZCA/IHJlYXNvbiA6IG5ldyBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pO1xuXG4gICAgaWYgKFNldHRpbmdzLnRocm93T25JbnZhbGlkKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZER1cmF0aW9uRXJyb3IoaW52YWxpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgRHVyYXRpb24oeyBpbnZhbGlkIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc3RhdGljIG5vcm1hbGl6ZVVuaXQodW5pdCkge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7XG4gICAgICB5ZWFyOiBcInllYXJzXCIsXG4gICAgICB5ZWFyczogXCJ5ZWFyc1wiLFxuICAgICAgcXVhcnRlcjogXCJxdWFydGVyc1wiLFxuICAgICAgcXVhcnRlcnM6IFwicXVhcnRlcnNcIixcbiAgICAgIG1vbnRoOiBcIm1vbnRoc1wiLFxuICAgICAgbW9udGhzOiBcIm1vbnRoc1wiLFxuICAgICAgd2VlazogXCJ3ZWVrc1wiLFxuICAgICAgd2Vla3M6IFwid2Vla3NcIixcbiAgICAgIGRheTogXCJkYXlzXCIsXG4gICAgICBkYXlzOiBcImRheXNcIixcbiAgICAgIGhvdXI6IFwiaG91cnNcIixcbiAgICAgIGhvdXJzOiBcImhvdXJzXCIsXG4gICAgICBtaW51dGU6IFwibWludXRlc1wiLFxuICAgICAgbWludXRlczogXCJtaW51dGVzXCIsXG4gICAgICBzZWNvbmQ6IFwic2Vjb25kc1wiLFxuICAgICAgc2Vjb25kczogXCJzZWNvbmRzXCIsXG4gICAgICBtaWxsaXNlY29uZDogXCJtaWxsaXNlY29uZHNcIixcbiAgICAgIG1pbGxpc2Vjb25kczogXCJtaWxsaXNlY29uZHNcIixcbiAgICB9W3VuaXQgPyB1bml0LnRvTG93ZXJDYXNlKCkgOiB1bml0XTtcblxuICAgIGlmICghbm9ybWFsaXplZCkgdGhyb3cgbmV3IEludmFsaWRVbml0RXJyb3IodW5pdCk7XG5cbiAgICByZXR1cm4gbm9ybWFsaXplZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYSBEdXJhdGlvbi4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllc1xuICAgKiBAcGFyYW0ge29iamVjdH0gb1xuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgc3RhdGljIGlzRHVyYXRpb24obykge1xuICAgIHJldHVybiAobyAmJiBvLmlzTHV4b25EdXJhdGlvbikgfHwgZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0ICB0aGUgbG9jYWxlIG9mIGEgRHVyYXRpb24sIHN1Y2ggJ2VuLUdCJ1xuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IGxvY2FsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubG9jYWxlIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG51bWJlcmluZyBzeXN0ZW0gb2YgYSBEdXJhdGlvbiwgc3VjaCAnYmVuZycuIFRoZSBudW1iZXJpbmcgc3lzdGVtIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEdXJhdGlvblxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IG51bWJlcmluZ1N5c3RlbSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHVyYXRpb24gZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcuIFlvdSBtYXkgdXNlIHRoZXNlIHRva2VuczpcbiAgICogKiBgU2AgZm9yIG1pbGxpc2Vjb25kc1xuICAgKiAqIGBzYCBmb3Igc2Vjb25kc1xuICAgKiAqIGBtYCBmb3IgbWludXRlc1xuICAgKiAqIGBoYCBmb3IgaG91cnNcbiAgICogKiBgZGAgZm9yIGRheXNcbiAgICogKiBgTWAgZm9yIG1vbnRoc1xuICAgKiAqIGB5YCBmb3IgeWVhcnNcbiAgICogTm90ZXM6XG4gICAqICogQWRkIHBhZGRpbmcgYnkgcmVwZWF0aW5nIHRoZSB0b2tlbiwgZS5nLiBcInl5XCIgcGFkcyB0aGUgeWVhcnMgdG8gdHdvIGRpZ2l0cywgXCJoaGhoXCIgcGFkcyB0aGUgaG91cnMgb3V0IHRvIGZvdXIgZGlnaXRzXG4gICAqICogVGhlIGR1cmF0aW9uIHdpbGwgYmUgY29udmVydGVkIHRvIHRoZSBzZXQgb2YgdW5pdHMgaW4gdGhlIGZvcm1hdCBzdHJpbmcgdXNpbmcge0BsaW5rIER1cmF0aW9uI3NoaWZ0VG99IGFuZCB0aGUgRHVyYXRpb25zJ3MgY29udmVyc2lvbiBhY2N1cmFjeSBzZXR0aW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCBzdHJpbmdcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuZmxvb3I9dHJ1ZV0gLSBmbG9vciBudW1lcmljYWwgdmFsdWVzXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSwgZGF5czogNiwgc2Vjb25kczogMiB9KS50b0Zvcm1hdChcInkgZCBzXCIpIC8vPT4gXCIxIDYgMlwiXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSwgZGF5czogNiwgc2Vjb25kczogMiB9KS50b0Zvcm1hdChcInl5IGRkIHNzc1wiKSAvLz0+IFwiMDEgMDYgMDAyXCJcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KFwiTSBTXCIpIC8vPT4gXCIxMiA1MTg0MDIwMDBcIlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0Zvcm1hdChmbXQsIG9wdHMgPSB7fSkge1xuICAgIC8vIHJldmVyc2UtY29tcGF0IHNpbmNlIDEuMjsgd2UgYWx3YXlzIHJvdW5kIGRvd24gbm93LCBuZXZlciB1cCwgYW5kIHdlIGRvIGl0IGJ5IGRlZmF1bHRcbiAgICBjb25zdCBmbXRPcHRzID0ge1xuICAgICAgLi4ub3B0cyxcbiAgICAgIGZsb29yOiBvcHRzLnJvdW5kICE9PSBmYWxzZSAmJiBvcHRzLmZsb29yICE9PSBmYWxzZSxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRcbiAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZSh0aGlzLmxvYywgZm10T3B0cykuZm9ybWF0RHVyYXRpb25Gcm9tU3RyaW5nKHRoaXMsIGZtdClcbiAgICAgIDogSU5WQUxJRDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgRHVyYXRpb24gd2l0aCBhbGwgdW5pdHMgaW5jbHVkZWRcbiAgICogVG8gbW9kaWZ5IGl0cyBiZWhhdmlvciB1c2UgdGhlIGBsaXN0U3R5bGVgIGFuZCBhbnkgSW50bC5OdW1iZXJGb3JtYXQgb3B0aW9uLCB0aG91Z2ggYHVuaXREaXNwbGF5YCBpcyBlc3BlY2lhbGx5IHJlbGV2YW50LiBTZWUge0BsaW5rIEludGwuTnVtYmVyRm9ybWF0fS5cbiAgICogQHBhcmFtIG9wdHMgLSBPbiBvcHRpb24gb2JqZWN0IHRvIG92ZXJyaWRlIHRoZSBmb3JtYXR0aW5nLiBBY2NlcHRzIHRoZSBzYW1lIGtleXMgYXMgdGhlIG9wdGlvbnMgcGFyYW1ldGVyIG9mIHRoZSBuYXRpdmUgYEludC5OdW1iZXJGb3JtYXRgIGNvbnN0cnVjdG9yLCBhcyB3ZWxsIGFzIGBsaXN0U3R5bGVgLlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBqc1xuICAgKiB2YXIgZHVyID0gRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEsIGhvdXJzOiA1LCBtaW51dGVzOiA2IH0pXG4gICAqIGR1ci50b0h1bWFuKCkgLy89PiAnMSBkYXksIDUgaG91cnMsIDYgbWludXRlcydcbiAgICogZHVyLnRvSHVtYW4oeyBsaXN0U3R5bGU6IFwibG9uZ1wiIH0pIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCBhbmQgNiBtaW51dGVzJ1xuICAgKiBkdXIudG9IdW1hbih7IHVuaXREaXNwbGF5OiBcInNob3J0XCIgfSkgLy89PiAnMSBkYXksIDUgaHIsIDYgbWluJ1xuICAgKiBgYGBcbiAgICovXG4gIHRvSHVtYW4ob3B0cyA9IHt9KSB7XG4gICAgY29uc3QgbCA9IG9yZGVyZWRVbml0c1xuICAgICAgLm1hcCgodW5pdCkgPT4ge1xuICAgICAgICBjb25zdCB2YWwgPSB0aGlzLnZhbHVlc1t1bml0XTtcbiAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHZhbCkpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5sb2NcbiAgICAgICAgICAubnVtYmVyRm9ybWF0dGVyKHsgc3R5bGU6IFwidW5pdFwiLCB1bml0RGlzcGxheTogXCJsb25nXCIsIC4uLm9wdHMsIHVuaXQ6IHVuaXQuc2xpY2UoMCwgLTEpIH0pXG4gICAgICAgICAgLmZvcm1hdCh2YWwpO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKG4pID0+IG4pO1xuXG4gICAgcmV0dXJuIHRoaXMubG9jXG4gICAgICAubGlzdEZvcm1hdHRlcih7IHR5cGU6IFwiY29uanVuY3Rpb25cIiwgc3R5bGU6IG9wdHMubGlzdFN0eWxlIHx8IFwibmFycm93XCIsIC4uLm9wdHMgfSlcbiAgICAgIC5mb3JtYXQobCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGggdGhpcyBEdXJhdGlvbidzIHZhbHVlcy5cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH1cbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgdG9PYmplY3QoKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTtcbiAgICByZXR1cm4geyAuLi50aGlzLnZhbHVlcyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLlxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI0R1cmF0aW9uc1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDMsIHNlY29uZHM6IDQ1IH0pLnRvSVNPKCkgLy89PiAnUDNZVDQ1UydcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNCwgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQNE1UNDVTJ1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiA1IH0pLnRvSVNPKCkgLy89PiAnUDVNJ1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogNSB9KS50b0lTTygpIC8vPT4gJ1BUNU0nXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDYgfSkudG9JU08oKSAvLz0+ICdQVDAuMDA2UydcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU08oKSB7XG4gICAgLy8gd2UgY291bGQgdXNlIHRoZSBmb3JtYXR0ZXIsIGJ1dCB0aGlzIGlzIGFuIGVhc2llciB3YXkgdG8gZ2V0IHRoZSBtaW5pbXVtIHN0cmluZ1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDtcblxuICAgIGxldCBzID0gXCJQXCI7XG4gICAgaWYgKHRoaXMueWVhcnMgIT09IDApIHMgKz0gdGhpcy55ZWFycyArIFwiWVwiO1xuICAgIGlmICh0aGlzLm1vbnRocyAhPT0gMCB8fCB0aGlzLnF1YXJ0ZXJzICE9PSAwKSBzICs9IHRoaXMubW9udGhzICsgdGhpcy5xdWFydGVycyAqIDMgKyBcIk1cIjtcbiAgICBpZiAodGhpcy53ZWVrcyAhPT0gMCkgcyArPSB0aGlzLndlZWtzICsgXCJXXCI7XG4gICAgaWYgKHRoaXMuZGF5cyAhPT0gMCkgcyArPSB0aGlzLmRheXMgKyBcIkRcIjtcbiAgICBpZiAodGhpcy5ob3VycyAhPT0gMCB8fCB0aGlzLm1pbnV0ZXMgIT09IDAgfHwgdGhpcy5zZWNvbmRzICE9PSAwIHx8IHRoaXMubWlsbGlzZWNvbmRzICE9PSAwKVxuICAgICAgcyArPSBcIlRcIjtcbiAgICBpZiAodGhpcy5ob3VycyAhPT0gMCkgcyArPSB0aGlzLmhvdXJzICsgXCJIXCI7XG4gICAgaWYgKHRoaXMubWludXRlcyAhPT0gMCkgcyArPSB0aGlzLm1pbnV0ZXMgKyBcIk1cIjtcbiAgICBpZiAodGhpcy5zZWNvbmRzICE9PSAwIHx8IHRoaXMubWlsbGlzZWNvbmRzICE9PSAwKVxuICAgICAgLy8gdGhpcyB3aWxsIGhhbmRsZSBcImZsb2F0aW5nIHBvaW50IG1hZG5lc3NcIiBieSByZW1vdmluZyBleHRyYSBkZWNpbWFsIHBsYWNlc1xuICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTg4MDA0L2lzLWZsb2F0aW5nLXBvaW50LW1hdGgtYnJva2VuXG4gICAgICBzICs9IHJvdW5kVG8odGhpcy5zZWNvbmRzICsgdGhpcy5taWxsaXNlY29uZHMgLyAxMDAwLCAzKSArIFwiU1wiO1xuICAgIGlmIChzID09PSBcIlBcIikgcyArPSBcIlQwU1wiO1xuICAgIHJldHVybiBzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLCBmb3JtYXR0ZWQgYXMgYSB0aW1lIG9mIGRheS5cbiAgICogTm90ZSB0aGF0IHRoaXMgd2lsbCByZXR1cm4gbnVsbCBpZiB0aGUgZHVyYXRpb24gaXMgaW52YWxpZCwgbmVnYXRpdmUsIG9yIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiAyNCBob3Vycy5cbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lc1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVByZWZpeD1mYWxzZV0gLSBpbmNsdWRlIHRoZSBgVGAgcHJlZml4XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBjaG9vc2UgYmV0d2VlbiB0aGUgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdFxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSgpIC8vPT4gJzExOjAwOjAwLjAwMCdcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc01pbGxpc2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcxMTowMDowMCdcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc1NlY29uZHM6IHRydWUgfSkgLy89PiAnMTE6MDAnXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgaW5jbHVkZVByZWZpeDogdHJ1ZSB9KSAvLz0+ICdUMTE6MDA6MDAuMDAwJ1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcxMTAwMDAuMDAwJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0lTT1RpbWUob3B0cyA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgbWlsbGlzID0gdGhpcy50b01pbGxpcygpO1xuICAgIGlmIChtaWxsaXMgPCAwIHx8IG1pbGxpcyA+PSA4NjQwMDAwMCkgcmV0dXJuIG51bGw7XG5cbiAgICBvcHRzID0ge1xuICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHM6IGZhbHNlLFxuICAgICAgc3VwcHJlc3NTZWNvbmRzOiBmYWxzZSxcbiAgICAgIGluY2x1ZGVQcmVmaXg6IGZhbHNlLFxuICAgICAgZm9ybWF0OiBcImV4dGVuZGVkXCIsXG4gICAgICAuLi5vcHRzLFxuICAgIH07XG5cbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuc2hpZnRUbyhcImhvdXJzXCIsIFwibWludXRlc1wiLCBcInNlY29uZHNcIiwgXCJtaWxsaXNlY29uZHNcIik7XG5cbiAgICBsZXQgZm10ID0gb3B0cy5mb3JtYXQgPT09IFwiYmFzaWNcIiA/IFwiaGhtbVwiIDogXCJoaDptbVwiO1xuXG4gICAgaWYgKCFvcHRzLnN1cHByZXNzU2Vjb25kcyB8fCB2YWx1ZS5zZWNvbmRzICE9PSAwIHx8IHZhbHVlLm1pbGxpc2Vjb25kcyAhPT0gMCkge1xuICAgICAgZm10ICs9IG9wdHMuZm9ybWF0ID09PSBcImJhc2ljXCIgPyBcInNzXCIgOiBcIjpzc1wiO1xuICAgICAgaWYgKCFvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzIHx8IHZhbHVlLm1pbGxpc2Vjb25kcyAhPT0gMCkge1xuICAgICAgICBmbXQgKz0gXCIuU1NTXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHN0ciA9IHZhbHVlLnRvRm9ybWF0KGZtdCk7XG5cbiAgICBpZiAob3B0cy5pbmNsdWRlUHJlZml4KSB7XG4gICAgICBzdHIgPSBcIlRcIiArIHN0cjtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIEpTT04uXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy50b0lTTygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIGRlYnVnZ2luZy5cbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9JU08oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG1pbGxpc2Vjb25kcyB2YWx1ZSBvZiB0aGlzIER1cmF0aW9uLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICB0b01pbGxpcygpIHtcbiAgICByZXR1cm4gdGhpcy5hcyhcIm1pbGxpc2Vjb25kc1wiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG1pbGxpc2Vjb25kcyB2YWx1ZSBvZiB0aGlzIER1cmF0aW9uLiBBbGlhcyBvZiB7QGxpbmsgdG9NaWxsaXN9XG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIHZhbHVlT2YoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIHRoaXMgRHVyYXRpb24gbG9uZ2VyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi5cbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gYWRkLiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHBsdXMoZHVyYXRpb24pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG5cbiAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKSxcbiAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5KGR1ci52YWx1ZXMsIGspIHx8IGhhc093blByb3BlcnR5KHRoaXMudmFsdWVzLCBrKSkge1xuICAgICAgICByZXN1bHRba10gPSBkdXIuZ2V0KGspICsgdGhpcy5nZXQoayk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdmFsdWVzOiByZXN1bHQgfSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSB0aGlzIER1cmF0aW9uIHNob3J0ZXIgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLlxuICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBzdWJ0cmFjdC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KClcbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBtaW51cyhkdXJhdGlvbikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcblxuICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pO1xuICAgIHJldHVybiB0aGlzLnBsdXMoZHVyLm5lZ2F0ZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTY2FsZSB0aGlzIER1cmF0aW9uIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCB1bml0LiBBcml0eSBpcyAxIG9yIDI6IHRoZSB2YWx1ZSBvZiB0aGUgdW5pdCBhbmQsIG9wdGlvbmFsbHksIHRoZSB1bml0IG5hbWUuIE11c3QgcmV0dXJuIGEgbnVtYmVyLlxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIG1pbnV0ZXM6IDMwIH0pLm1hcFVuaXRzKHggPT4geCAqIDIpIC8vPT4geyBob3VyczogMiwgbWludXRlczogNjAgfVxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIG1pbnV0ZXM6IDMwIH0pLm1hcFVuaXRzKCh4LCB1KSA9PiB1ID09PSBcImhvdXJcIiA/IHggKiAyIDogeCkgLy89PiB7IGhvdXJzOiAyLCBtaW51dGVzOiAzMCB9XG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgbWFwVW5pdHMoZm4pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgZm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKHRoaXMudmFsdWVzKSkge1xuICAgICAgcmVzdWx0W2tdID0gYXNOdW1iZXIoZm4odGhpcy52YWx1ZXNba10sIGspKTtcbiAgICB9XG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdmFsdWVzOiByZXN1bHQgfSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIGEgdW5pdCBzdWNoIGFzICdtaW51dGUnIG9yICdkYXknXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAyLCBkYXlzOiAzfSkuZ2V0KCd5ZWFycycpIC8vPT4gMlxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnbW9udGhzJykgLy89PiAwXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAyLCBkYXlzOiAzfSkuZ2V0KCdkYXlzJykgLy89PiAzXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIGdldCh1bml0KSB7XG4gICAgcmV0dXJuIHRoaXNbRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1bml0KV07XG4gIH1cblxuICAvKipcbiAgICogXCJTZXRcIiB0aGUgdmFsdWVzIG9mIHNwZWNpZmllZCB1bml0cy4gUmV0dXJuIGEgbmV3bHktY29uc3RydWN0ZWQgRHVyYXRpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSBhIG1hcHBpbmcgb2YgdW5pdHMgdG8gbnVtYmVyc1xuICAgKiBAZXhhbXBsZSBkdXIuc2V0KHsgeWVhcnM6IDIwMTcgfSlcbiAgICogQGV4YW1wbGUgZHVyLnNldCh7IGhvdXJzOiA4LCBtaW51dGVzOiAzMCB9KVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHNldCh2YWx1ZXMpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG5cbiAgICBjb25zdCBtaXhlZCA9IHsgLi4udGhpcy52YWx1ZXMsIC4uLm5vcm1hbGl6ZU9iamVjdCh2YWx1ZXMsIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpIH07XG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdmFsdWVzOiBtaXhlZCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoZSBsb2NhbGUgYW5kL29yIG51bWJlcmluZ1N5c3RlbS4gIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi5cbiAgICogQGV4YW1wbGUgZHVyLnJlY29uZmlndXJlKHsgbG9jYWxlOiAnZW4tR0InIH0pXG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgcmVjb25maWd1cmUoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgY29udmVyc2lvbkFjY3VyYWN5IH0gPSB7fSkge1xuICAgIGNvbnN0IGxvYyA9IHRoaXMubG9jLmNsb25lKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0gfSksXG4gICAgICBvcHRzID0geyBsb2MgfTtcblxuICAgIGlmIChjb252ZXJzaW9uQWNjdXJhY3kpIHtcbiAgICAgIG9wdHMuY29udmVyc2lvbkFjY3VyYWN5ID0gY29udmVyc2lvbkFjY3VyYWN5O1xuICAgIH1cblxuICAgIHJldHVybiBjbG9uZSh0aGlzLCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgZHVyYXRpb24gaW4gdGhlIHNwZWNpZmllZCB1bml0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIGEgdW5pdCBzdWNoIGFzICdtaW51dGVzJyBvciAnZGF5cydcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDF9KS5hcygnZGF5cycpIC8vPT4gMzY1XG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAxfSkuYXMoJ21vbnRocycpIC8vPT4gMTJcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7aG91cnM6IDYwfSkuYXMoJ2RheXMnKSAvLz0+IDIuNVxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBhcyh1bml0KSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuc2hpZnRUbyh1bml0KS5nZXQodW5pdCkgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogUmVkdWNlIHRoaXMgRHVyYXRpb24gdG8gaXRzIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBpbiBpdHMgY3VycmVudCB1bml0cy5cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAyLCBkYXlzOiA1MDAwIH0pLm5vcm1hbGl6ZSgpLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiAxNSwgZGF5czogMjU1IH1cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMiwgbWludXRlczogLTQ1IH0pLm5vcm1hbGl6ZSgpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMTUgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIG5vcm1hbGl6ZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgdmFscyA9IHRoaXMudG9PYmplY3QoKTtcbiAgICBub3JtYWxpemVWYWx1ZXModGhpcy5tYXRyaXgsIHZhbHMpO1xuICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoaXMgRHVyYXRpb24gaW50byBpdHMgcmVwcmVzZW50YXRpb24gaW4gYSBkaWZmZXJlbnQgc2V0IG9mIHVuaXRzLlxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIHNlY29uZHM6IDMwIH0pLnNoaWZ0VG8oJ21pbnV0ZXMnLCAnbWlsbGlzZWNvbmRzJykudG9PYmplY3QoKSAvLz0+IHsgbWludXRlczogNjAsIG1pbGxpc2Vjb25kczogMzAwMDAgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHNoaWZ0VG8oLi4udW5pdHMpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG5cbiAgICBpZiAodW5pdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB1bml0cyA9IHVuaXRzLm1hcCgodSkgPT4gRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1KSk7XG5cbiAgICBjb25zdCBidWlsdCA9IHt9LFxuICAgICAgYWNjdW11bGF0ZWQgPSB7fSxcbiAgICAgIHZhbHMgPSB0aGlzLnRvT2JqZWN0KCk7XG4gICAgbGV0IGxhc3RVbml0O1xuXG4gICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cykge1xuICAgICAgaWYgKHVuaXRzLmluZGV4T2YoaykgPj0gMCkge1xuICAgICAgICBsYXN0VW5pdCA9IGs7XG5cbiAgICAgICAgbGV0IG93biA9IDA7XG5cbiAgICAgICAgLy8gYW55dGhpbmcgd2UgaGF2ZW4ndCBib2lsZWQgZG93biB5ZXQgc2hvdWxkIGdldCBib2lsZWQgdG8gdGhpcyB1bml0XG4gICAgICAgIGZvciAoY29uc3QgYWsgaW4gYWNjdW11bGF0ZWQpIHtcbiAgICAgICAgICBvd24gKz0gdGhpcy5tYXRyaXhbYWtdW2tdICogYWNjdW11bGF0ZWRbYWtdO1xuICAgICAgICAgIGFjY3VtdWxhdGVkW2FrXSA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBwbHVzIGFueXRoaW5nIHRoYXQncyBhbHJlYWR5IGluIHRoaXMgdW5pdFxuICAgICAgICBpZiAoaXNOdW1iZXIodmFsc1trXSkpIHtcbiAgICAgICAgICBvd24gKz0gdmFsc1trXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGkgPSBNYXRoLnRydW5jKG93bik7XG4gICAgICAgIGJ1aWx0W2tdID0gaTtcbiAgICAgICAgYWNjdW11bGF0ZWRba10gPSAob3duICogMTAwMCAtIGkgKiAxMDAwKSAvIDEwMDA7XG5cbiAgICAgICAgLy8gcGx1cyBhbnl0aGluZyBmdXJ0aGVyIGRvd24gdGhlIGNoYWluIHRoYXQgc2hvdWxkIGJlIHJvbGxlZCB1cCBpbiB0byB0aGlzXG4gICAgICAgIGZvciAoY29uc3QgZG93biBpbiB2YWxzKSB7XG4gICAgICAgICAgaWYgKG9yZGVyZWRVbml0cy5pbmRleE9mKGRvd24pID4gb3JkZXJlZFVuaXRzLmluZGV4T2YoaykpIHtcbiAgICAgICAgICAgIGNvbnZlcnQodGhpcy5tYXRyaXgsIHZhbHMsIGRvd24sIGJ1aWx0LCBrKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gb3RoZXJ3aXNlLCBrZWVwIGl0IGluIHRoZSB3aW5ncyB0byBib2lsIGl0IGxhdGVyXG4gICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKHZhbHNba10pKSB7XG4gICAgICAgIGFjY3VtdWxhdGVkW2tdID0gdmFsc1trXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBhbnl0aGluZyBsZWZ0b3ZlciBiZWNvbWVzIHRoZSBkZWNpbWFsIGZvciB0aGUgbGFzdCB1bml0XG4gICAgLy8gbGFzdFVuaXQgbXVzdCBiZSBkZWZpbmVkIHNpbmNlIHVuaXRzIGlzIG5vdCBlbXB0eVxuICAgIGZvciAoY29uc3Qga2V5IGluIGFjY3VtdWxhdGVkKSB7XG4gICAgICBpZiAoYWNjdW11bGF0ZWRba2V5XSAhPT0gMCkge1xuICAgICAgICBidWlsdFtsYXN0VW5pdF0gKz1cbiAgICAgICAgICBrZXkgPT09IGxhc3RVbml0ID8gYWNjdW11bGF0ZWRba2V5XSA6IGFjY3VtdWxhdGVkW2tleV0gLyB0aGlzLm1hdHJpeFtsYXN0VW5pdF1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2xvbmUodGhpcywgeyB2YWx1ZXM6IGJ1aWx0IH0sIHRydWUpLm5vcm1hbGl6ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgbmVnYXRpdmUgb2YgdGhpcyBEdXJhdGlvbi5cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBzZWNvbmRzOiAzMCB9KS5uZWdhdGUoKS50b09iamVjdCgpIC8vPT4geyBob3VyczogLTEsIHNlY29uZHM6IC0zMCB9XG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgbmVnYXRlKCkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcbiAgICBjb25zdCBuZWdhdGVkID0ge307XG4gICAgZm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKHRoaXMudmFsdWVzKSkge1xuICAgICAgbmVnYXRlZFtrXSA9IC10aGlzLnZhbHVlc1trXTtcbiAgICB9XG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdmFsdWVzOiBuZWdhdGVkIH0sIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgeWVhcnMuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgeWVhcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLnllYXJzIHx8IDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBxdWFydGVycy5cbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBxdWFydGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMucXVhcnRlcnMgfHwgMCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG1vbnRocy5cbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBtb250aHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1vbnRocyB8fCAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgd2Vla3NcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCB3ZWVrcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMud2Vla3MgfHwgMCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRheXMuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgZGF5cygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMuZGF5cyB8fCAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaG91cnMuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgaG91cnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLmhvdXJzIHx8IDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBtaW51dGVzLlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IG1pbnV0ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1pbnV0ZXMgfHwgMCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHNlY29uZHMuXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIGdldCBzZWNvbmRzKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5zZWNvbmRzIHx8IDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBtaWxsaXNlY29uZHMuXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIGdldCBtaWxsaXNlY29uZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1pbGxpc2Vjb25kcyB8fCAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB0aGUgRHVyYXRpb24gaXMgaW52YWxpZC4gSW52YWxpZCBkdXJhdGlvbnMgYXJlIHJldHVybmVkIGJ5IGRpZmYgb3BlcmF0aW9uc1xuICAgKiBvbiBpbnZhbGlkIERhdGVUaW1lcyBvciBJbnRlcnZhbHMuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIER1cmF0aW9uIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEdXJhdGlvbiBpcyB2YWxpZFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgaW52YWxpZFJlYXNvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBEdXJhdGlvbiBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRHVyYXRpb24gaXMgdmFsaWRcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBpbnZhbGlkRXhwbGFuYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogRXF1YWxpdHkgY2hlY2tcbiAgICogVHdvIER1cmF0aW9ucyBhcmUgZXF1YWwgaWZmIHRoZXkgaGF2ZSB0aGUgc2FtZSB1bml0cyBhbmQgdGhlIHNhbWUgdmFsdWVzIGZvciBlYWNoIHVuaXQuXG4gICAqIEBwYXJhbSB7RHVyYXRpb259IG90aGVyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBlcXVhbHMob3RoZXIpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhb3RoZXIuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5sb2MuZXF1YWxzKG90aGVyLmxvYykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlcSh2MSwgdjIpIHtcbiAgICAgIC8vIENvbnNpZGVyIDAgYW5kIHVuZGVmaW5lZCBhcyBlcXVhbFxuICAgICAgaWYgKHYxID09PSB1bmRlZmluZWQgfHwgdjEgPT09IDApIHJldHVybiB2MiA9PT0gdW5kZWZpbmVkIHx8IHYyID09PSAwO1xuICAgICAgcmV0dXJuIHYxID09PSB2MjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHUgb2Ygb3JkZXJlZFVuaXRzKSB7XG4gICAgICBpZiAoIWVxKHRoaXMudmFsdWVzW3VdLCBvdGhlci52YWx1ZXNbdV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiIsICJpbXBvcnQgRGF0ZVRpbWUsIHsgZnJpZW5kbHlEYXRlVGltZSB9IGZyb20gXCIuL2RhdGV0aW1lLmpzXCI7XG5pbXBvcnQgRHVyYXRpb24gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5ncy5qc1wiO1xuaW1wb3J0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IsIEludmFsaWRJbnRlcnZhbEVycm9yIH0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5pbXBvcnQgSW52YWxpZCBmcm9tIFwiLi9pbXBsL2ludmFsaWQuanNcIjtcblxuY29uc3QgSU5WQUxJRCA9IFwiSW52YWxpZCBJbnRlcnZhbFwiO1xuXG4vLyBjaGVja3MgaWYgdGhlIHN0YXJ0IGlzIGVxdWFsIHRvIG9yIGJlZm9yZSB0aGUgZW5kXG5mdW5jdGlvbiB2YWxpZGF0ZVN0YXJ0RW5kKHN0YXJ0LCBlbmQpIHtcbiAgaWYgKCFzdGFydCB8fCAhc3RhcnQuaXNWYWxpZCkge1xuICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKFwibWlzc2luZyBvciBpbnZhbGlkIHN0YXJ0XCIpO1xuICB9IGVsc2UgaWYgKCFlbmQgfHwgIWVuZC5pc1ZhbGlkKSB7XG4gICAgcmV0dXJuIEludGVydmFsLmludmFsaWQoXCJtaXNzaW5nIG9yIGludmFsaWQgZW5kXCIpO1xuICB9IGVsc2UgaWYgKGVuZCA8IHN0YXJ0KSB7XG4gICAgcmV0dXJuIEludGVydmFsLmludmFsaWQoXG4gICAgICBcImVuZCBiZWZvcmUgc3RhcnRcIixcbiAgICAgIGBUaGUgZW5kIG9mIGFuIGludGVydmFsIG11c3QgYmUgYWZ0ZXIgaXRzIHN0YXJ0LCBidXQgeW91IGhhZCBzdGFydD0ke3N0YXJ0LnRvSVNPKCl9IGFuZCBlbmQ9JHtlbmQudG9JU08oKX1gXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIEFuIEludGVydmFsIG9iamVjdCByZXByZXNlbnRzIGEgaGFsZi1vcGVuIGludGVydmFsIG9mIHRpbWUsIHdoZXJlIGVhY2ggZW5kcG9pbnQgaXMgYSB7QGxpbmsgRGF0ZVRpbWV9LiBDb25jZXB0dWFsbHksIGl0J3MgYSBjb250YWluZXIgZm9yIHRob3NlIHR3byBlbmRwb2ludHMsIGFjY29tcGFuaWVkIGJ5IG1ldGhvZHMgZm9yIGNyZWF0aW5nLCBwYXJzaW5nLCBpbnRlcnJvZ2F0aW5nLCBjb21wYXJpbmcsIHRyYW5zZm9ybWluZywgYW5kIGZvcm1hdHRpbmcgdGhlbS5cbiAqXG4gKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIEludGVydmFsOlxuICpcbiAqICogKipDcmVhdGlvbioqIFRvIGNyZWF0ZSBhbiBJbnRlcnZhbCwgdXNlIHtAbGluayBJbnRlcnZhbCNmcm9tRGF0ZVRpbWVzfSwge0BsaW5rIEludGVydmFsI2FmdGVyfSwge0BsaW5rIEludGVydmFsI2JlZm9yZX0sIG9yIHtAbGluayBJbnRlcnZhbCNmcm9tSVNPfS5cbiAqICogKipBY2Nlc3NvcnMqKiBVc2Uge0BsaW5rIEludGVydmFsI3N0YXJ0fSBhbmQge0BsaW5rIEludGVydmFsI2VuZH0gdG8gZ2V0IHRoZSBzdGFydCBhbmQgZW5kLlxuICogKiAqKkludGVycm9nYXRpb24qKiBUbyBhbmFseXplIHRoZSBJbnRlcnZhbCwgdXNlIHtAbGluayBJbnRlcnZhbCNjb3VudH0sIHtAbGluayBJbnRlcnZhbCNsZW5ndGh9LCB7QGxpbmsgSW50ZXJ2YWwjaGFzU2FtZX0sIHtAbGluayBJbnRlcnZhbCNjb250YWluc30sIHtAbGluayBJbnRlcnZhbCNpc0FmdGVyfSwgb3Ige0BsaW5rIEludGVydmFsI2lzQmVmb3JlfS5cbiAqICogKipUcmFuc2Zvcm1hdGlvbioqIFRvIGNyZWF0ZSBvdGhlciBJbnRlcnZhbHMgb3V0IG9mIHRoaXMgb25lLCB1c2Uge0BsaW5rIEludGVydmFsI3NldH0sIHtAbGluayBJbnRlcnZhbCNzcGxpdEF0fSwge0BsaW5rIEludGVydmFsI3NwbGl0Qnl9LCB7QGxpbmsgSW50ZXJ2YWwjZGl2aWRlRXF1YWxseX0sIHtAbGluayBJbnRlcnZhbCNtZXJnZX0sIHtAbGluayBJbnRlcnZhbCN4b3J9LCB7QGxpbmsgSW50ZXJ2YWwjdW5pb259LCB7QGxpbmsgSW50ZXJ2YWwjaW50ZXJzZWN0aW9ufSwgb3Ige0BsaW5rIEludGVydmFsI2RpZmZlcmVuY2V9LlxuICogKiAqKkNvbXBhcmlzb24qKiBUbyBjb21wYXJlIHRoaXMgSW50ZXJ2YWwgdG8gYW5vdGhlciBvbmUsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjZXF1YWxzfSwge0BsaW5rIEludGVydmFsI292ZXJsYXBzfSwge0BsaW5rIEludGVydmFsI2FidXRzU3RhcnR9LCB7QGxpbmsgSW50ZXJ2YWwjYWJ1dHNFbmR9LCB7QGxpbmsgSW50ZXJ2YWwjZW5ndWxmc31cbiAqICogKipPdXRwdXQqKiBUbyBjb252ZXJ0IHRoZSBJbnRlcnZhbCBpbnRvIG90aGVyIHJlcHJlc2VudGF0aW9ucywgc2VlIHtAbGluayBJbnRlcnZhbCN0b1N0cmluZ30sIHtAbGluayBJbnRlcnZhbCN0b0lTT30sIHtAbGluayBJbnRlcnZhbCN0b0lTT0RhdGV9LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU09UaW1lfSwge0BsaW5rIEludGVydmFsI3RvRm9ybWF0fSwgYW5kIHtAbGluayBJbnRlcnZhbCN0b0R1cmF0aW9ufS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW50ZXJ2YWwge1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMucyA9IGNvbmZpZy5zdGFydDtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmUgPSBjb25maWcuZW5kO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuaW52YWxpZCA9IGNvbmZpZy5pbnZhbGlkIHx8IG51bGw7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5pc0x1eG9uSW50ZXJ2YWwgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBpbnZhbGlkIEludGVydmFsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBJbnRlcnZhbCBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwbGFuYXRpb249bnVsbF0gLSBsb25nZXIgZXhwbGFuYXRpb24sIG1heSBpbmNsdWRlIHBhcmFtZXRlcnMgYW5kIG90aGVyIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cbiAgICogQHJldHVybiB7SW50ZXJ2YWx9XG4gICAqL1xuICBzdGF0aWMgaW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uID0gbnVsbCkge1xuICAgIGlmICghcmVhc29uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJuZWVkIHRvIHNwZWNpZnkgYSByZWFzb24gdGhlIEludGVydmFsIGlzIGludmFsaWRcIik7XG4gICAgfVxuXG4gICAgY29uc3QgaW52YWxpZCA9IHJlYXNvbiBpbnN0YW5jZW9mIEludmFsaWQgPyByZWFzb24gOiBuZXcgSW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uKTtcblxuICAgIGlmIChTZXR0aW5ncy50aHJvd09uSW52YWxpZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRJbnRlcnZhbEVycm9yKGludmFsaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IEludGVydmFsKHsgaW52YWxpZCB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYSBzdGFydCBEYXRlVGltZSBhbmQgYW4gZW5kIERhdGVUaW1lLiBJbmNsdXNpdmUgb2YgdGhlIHN0YXJ0IGJ1dCBub3QgdGhlIGVuZC5cbiAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnRcbiAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gZW5kXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgc3RhdGljIGZyb21EYXRlVGltZXMoc3RhcnQsIGVuZCkge1xuICAgIGNvbnN0IGJ1aWx0U3RhcnQgPSBmcmllbmRseURhdGVUaW1lKHN0YXJ0KSxcbiAgICAgIGJ1aWx0RW5kID0gZnJpZW5kbHlEYXRlVGltZShlbmQpO1xuXG4gICAgY29uc3QgdmFsaWRhdGVFcnJvciA9IHZhbGlkYXRlU3RhcnRFbmQoYnVpbHRTdGFydCwgYnVpbHRFbmQpO1xuXG4gICAgaWYgKHZhbGlkYXRlRXJyb3IgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7XG4gICAgICAgIHN0YXJ0OiBidWlsdFN0YXJ0LFxuICAgICAgICBlbmQ6IGJ1aWx0RW5kLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWxpZGF0ZUVycm9yO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gSW50ZXJ2YWwgZnJvbSBhIHN0YXJ0IERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCB0by5cbiAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnRcbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIHRoZSBsZW5ndGggb2YgdGhlIEludGVydmFsLlxuICAgKiBAcmV0dXJuIHtJbnRlcnZhbH1cbiAgICovXG4gIHN0YXRpYyBhZnRlcihzdGFydCwgZHVyYXRpb24pIHtcbiAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKSxcbiAgICAgIGR0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCk7XG4gICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQsIGR0LnBsdXMoZHVyKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYW4gZW5kIERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCBiYWNrd2FyZHMgdG8uXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IGVuZFxuICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gdGhlIGxlbmd0aCBvZiB0aGUgSW50ZXJ2YWwuXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgc3RhdGljIGJlZm9yZShlbmQsIGR1cmF0aW9uKSB7XG4gICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbiksXG4gICAgICBkdCA9IGZyaWVuZGx5RGF0ZVRpbWUoZW5kKTtcbiAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdC5taW51cyhkdXIpLCBkdCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYW4gSVNPIDg2MDEgc3RyaW5nLlxuICAgKiBBY2NlcHRzIGA8c3RhcnQ+LzxlbmQ+YCwgYDxzdGFydD4vPGR1cmF0aW9uPmAsIGFuZCBgPGR1cmF0aW9uPi88ZW5kPmAgZm9ybWF0cy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZyB0byBwYXJzZVxuICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gb3B0aW9ucyB0byBwYXNzIHtAbGluayBEYXRlVGltZSNmcm9tSVNPfSBhbmQgb3B0aW9uYWxseSB7QGxpbmsgRHVyYXRpb24jZnJvbUlTT31cbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFsc1xuICAgKiBAcmV0dXJuIHtJbnRlcnZhbH1cbiAgICovXG4gIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMpIHtcbiAgICBjb25zdCBbcywgZV0gPSAodGV4dCB8fCBcIlwiKS5zcGxpdChcIi9cIiwgMik7XG4gICAgaWYgKHMgJiYgZSkge1xuICAgICAgbGV0IHN0YXJ0LCBzdGFydElzVmFsaWQ7XG4gICAgICB0cnkge1xuICAgICAgICBzdGFydCA9IERhdGVUaW1lLmZyb21JU08ocywgb3B0cyk7XG4gICAgICAgIHN0YXJ0SXNWYWxpZCA9IHN0YXJ0LmlzVmFsaWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHN0YXJ0SXNWYWxpZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBsZXQgZW5kLCBlbmRJc1ZhbGlkO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZW5kID0gRGF0ZVRpbWUuZnJvbUlTTyhlLCBvcHRzKTtcbiAgICAgICAgZW5kSXNWYWxpZCA9IGVuZC5pc1ZhbGlkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBlbmRJc1ZhbGlkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGFydElzVmFsaWQgJiYgZW5kSXNWYWxpZCkge1xuICAgICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzdGFydCwgZW5kKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXJ0SXNWYWxpZCkge1xuICAgICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tSVNPKGUsIG9wdHMpO1xuICAgICAgICBpZiAoZHVyLmlzVmFsaWQpIHtcbiAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYWZ0ZXIoc3RhcnQsIGR1cik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZW5kSXNWYWxpZCkge1xuICAgICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tSVNPKHMsIG9wdHMpO1xuICAgICAgICBpZiAoZHVyLmlzVmFsaWQpIHtcbiAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYmVmb3JlKGVuZCwgZHVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZChcInVucGFyc2FibGVcIiwgYHRoZSBpbnB1dCBcIiR7dGV4dH1cIiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYW4gSW50ZXJ2YWwuIFdvcmtzIGFjcm9zcyBjb250ZXh0IGJvdW5kYXJpZXNcbiAgICogQHBhcmFtIHtvYmplY3R9IG9cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBpc0ludGVydmFsKG8pIHtcbiAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uSW50ZXJ2YWwpIHx8IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHN0YXJ0IG9mIHRoZSBJbnRlcnZhbFxuICAgKiBAdHlwZSB7RGF0ZVRpbWV9XG4gICAqL1xuICBnZXQgc3RhcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMucyA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZW5kIG9mIHRoZSBJbnRlcnZhbFxuICAgKiBAdHlwZSB7RGF0ZVRpbWV9XG4gICAqL1xuICBnZXQgZW5kKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmUgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB0aGlzIEludGVydmFsJ3MgZW5kIGlzIGF0IGxlYXN0IGl0cyBzdGFydCwgbWVhbmluZyB0aGF0IHRoZSBJbnRlcnZhbCBpc24ndCAnYmFja3dhcmRzJy5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkUmVhc29uID09PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIEludGVydmFsIGlzIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIEludGVydmFsIGlzIHZhbGlkXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgaW52YWxpZFJlYXNvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBJbnRlcnZhbCBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgSW50ZXJ2YWwgaXMgdmFsaWRcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBpbnZhbGlkRXhwbGFuYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbCBpbiB0aGUgc3BlY2lmaWVkIHVuaXQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gdGhlIHVuaXQgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIHJldHVybiB0aGUgbGVuZ3RoIGluLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBsZW5ndGgodW5pdCA9IFwibWlsbGlzZWNvbmRzXCIpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy50b0R1cmF0aW9uKC4uLlt1bml0XSkuZ2V0KHVuaXQpIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNvdW50IG9mIG1pbnV0ZXMsIGhvdXJzLCBkYXlzLCBtb250aHMsIG9yIHllYXJzIGluY2x1ZGVkIGluIHRoZSBJbnRlcnZhbCwgZXZlbiBpbiBwYXJ0LlxuICAgKiBVbmxpa2Uge0BsaW5rIEludGVydmFsI2xlbmd0aH0gdGhpcyBjb3VudHMgc2VjdGlvbnMgb2YgdGhlIGNhbGVuZGFyLCBub3QgcGVyaW9kcyBvZiB0aW1lLCBlLmcuIHNwZWNpZnlpbmcgJ2RheSdcbiAgICogYXNrcyAnd2hhdCBkYXRlcyBhcmUgaW5jbHVkZWQgaW4gdGhpcyBpbnRlcnZhbD8nLCBub3QgJ2hvdyBtYW55IGRheXMgbG9uZyBpcyB0aGlzIGludGVydmFsPydcbiAgICogQHBhcmFtIHtzdHJpbmd9IFt1bml0PSdtaWxsaXNlY29uZHMnXSAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY291bnQuXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIGNvdW50KHVuaXQgPSBcIm1pbGxpc2Vjb25kc1wiKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBOYU47XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnN0YXJ0LnN0YXJ0T2YodW5pdCksXG4gICAgICBlbmQgPSB0aGlzLmVuZC5zdGFydE9mKHVuaXQpO1xuICAgIHJldHVybiBNYXRoLmZsb29yKGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCkpICsgMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGFuZCBlbmQgYXJlIGJvdGggaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gdGhlIHVuaXQgb2YgdGltZSB0byBjaGVjayBzYW1lbmVzcyBvblxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaGFzU2FtZSh1bml0KSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuaXNFbXB0eSgpIHx8IHRoaXMuZS5taW51cygxKS5oYXNTYW1lKHRoaXMucywgdW5pdCkgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsIGhhcyB0aGUgc2FtZSBzdGFydCBhbmQgZW5kIERhdGVUaW1lcy5cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMucy52YWx1ZU9mKCkgPT09IHRoaXMuZS52YWx1ZU9mKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGlzIGFmdGVyIHRoZSBzcGVjaWZpZWQgRGF0ZVRpbWUuXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBpc0FmdGVyKGRhdGVUaW1lKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5zID4gZGF0ZVRpbWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBiZWZvcmUgdGhlIHNwZWNpZmllZCBEYXRlVGltZS5cbiAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWVcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGlzQmVmb3JlKGRhdGVUaW1lKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5lIDw9IGRhdGVUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgY29udGFpbnMgdGhlIHNwZWNpZmllZCBEYXRlVGltZS5cbiAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWVcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGNvbnRhaW5zKGRhdGVUaW1lKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5zIDw9IGRhdGVUaW1lICYmIHRoaXMuZSA+IGRhdGVUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0c1wiIHRoZSBzdGFydCBhbmQvb3IgZW5kIGRhdGVzLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgSW50ZXJ2YWwuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSB0aGUgdmFsdWVzIHRvIHNldFxuICAgKiBAcGFyYW0ge0RhdGVUaW1lfSB2YWx1ZXMuc3RhcnQgLSB0aGUgc3RhcnRpbmcgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtEYXRlVGltZX0gdmFsdWVzLmVuZCAtIHRoZSBlbmRpbmcgRGF0ZVRpbWVcbiAgICogQHJldHVybiB7SW50ZXJ2YWx9XG4gICAqL1xuICBzZXQoeyBzdGFydCwgZW5kIH0gPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcbiAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzdGFydCB8fCB0aGlzLnMsIGVuZCB8fCB0aGlzLmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgYXQgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIERhdGVUaW1lc1xuICAgKiBAcGFyYW0gey4uLkRhdGVUaW1lfSBkYXRlVGltZXMgLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNvdW50LlxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHNwbGl0QXQoLi4uZGF0ZVRpbWVzKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBbXTtcbiAgICBjb25zdCBzb3J0ZWQgPSBkYXRlVGltZXNcbiAgICAgICAgLm1hcChmcmllbmRseURhdGVUaW1lKVxuICAgICAgICAuZmlsdGVyKChkKSA9PiB0aGlzLmNvbnRhaW5zKGQpKVxuICAgICAgICAuc29ydCgpLFxuICAgICAgcmVzdWx0cyA9IFtdO1xuICAgIGxldCB7IHMgfSA9IHRoaXMsXG4gICAgICBpID0gMDtcblxuICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7XG4gICAgICBjb25zdCBhZGRlZCA9IHNvcnRlZFtpXSB8fCB0aGlzLmUsXG4gICAgICAgIG5leHQgPSArYWRkZWQgPiArdGhpcy5lID8gdGhpcy5lIDogYWRkZWQ7XG4gICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7XG4gICAgICBzID0gbmV4dDtcbiAgICAgIGkgKz0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdCB0aGlzIEludGVydmFsIGludG8gc21hbGxlciBJbnRlcnZhbHMsIGVhY2ggb2YgdGhlIHNwZWNpZmllZCBsZW5ndGguXG4gICAqIExlZnQgb3ZlciB0aW1lIGlzIGdyb3VwZWQgaW50byBhIHNtYWxsZXIgaW50ZXJ2YWxcbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBsZW5ndGggb2YgZWFjaCByZXN1bHRpbmcgaW50ZXJ2YWwuXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3BsaXRCeShkdXJhdGlvbikge1xuICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pO1xuXG4gICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIWR1ci5pc1ZhbGlkIHx8IGR1ci5hcyhcIm1pbGxpc2Vjb25kc1wiKSA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGxldCB7IHMgfSA9IHRoaXMsXG4gICAgICBpZHggPSAxLFxuICAgICAgbmV4dDtcblxuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICB3aGlsZSAocyA8IHRoaXMuZSkge1xuICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLnN0YXJ0LnBsdXMoZHVyLm1hcFVuaXRzKCh4KSA9PiB4ICogaWR4KSk7XG4gICAgICBuZXh0ID0gK2FkZGVkID4gK3RoaXMuZSA/IHRoaXMuZSA6IGFkZGVkO1xuICAgICAgcmVzdWx0cy5wdXNoKEludGVydmFsLmZyb21EYXRlVGltZXMocywgbmV4dCkpO1xuICAgICAgcyA9IG5leHQ7XG4gICAgICBpZHggKz0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdCB0aGlzIEludGVydmFsIGludG8gdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygc21hbGxlciBpbnRlcnZhbHMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXJPZlBhcnRzIC0gVGhlIG51bWJlciBvZiBJbnRlcnZhbHMgdG8gZGl2aWRlIHRoZSBJbnRlcnZhbCBpbnRvLlxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIGRpdmlkZUVxdWFsbHkobnVtYmVyT2ZQYXJ0cykge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gW107XG4gICAgcmV0dXJuIHRoaXMuc3BsaXRCeSh0aGlzLmxlbmd0aCgpIC8gbnVtYmVyT2ZQYXJ0cykuc2xpY2UoMCwgbnVtYmVyT2ZQYXJ0cyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBvdmVybGFwcyB3aXRoIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWxcbiAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIG92ZXJsYXBzKG90aGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZSA+IG90aGVyLnMgJiYgdGhpcy5zIDwgb3RoZXIuZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3MgZW5kIGlzIGFkamFjZW50IHRvIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwncyBzdGFydC5cbiAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGFidXRzU3RhcnQob3RoZXIpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiArdGhpcy5lID09PSArb3RoZXIucztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3Mgc3RhcnQgaXMgYWRqYWNlbnQgdG8gdGhlIHNwZWNpZmllZCBJbnRlcnZhbCdzIGVuZC5cbiAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGFidXRzRW5kKG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gK290aGVyLmUgPT09ICt0aGlzLnM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBlbmd1bGZzIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwuXG4gICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBlbmd1bGZzKG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5zIDw9IG90aGVyLnMgJiYgdGhpcy5lID49IG90aGVyLmU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBoYXMgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBhcyB0aGUgc3BlY2lmaWVkIEludGVydmFsLlxuICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlclxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgZXF1YWxzKG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zLmVxdWFscyhvdGhlci5zKSAmJiB0aGlzLmUuZXF1YWxzKG90aGVyLmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBJbnRlcnZhbCByZXByZXNlbnRpbmcgdGhlIGludGVyc2VjdGlvbiBvZiB0aGlzIEludGVydmFsIGFuZCB0aGUgc3BlY2lmaWVkIEludGVydmFsLlxuICAgKiBTcGVjaWZpY2FsbHksIHRoZSByZXN1bHRpbmcgSW50ZXJ2YWwgaGFzIHRoZSBtYXhpbXVtIHN0YXJ0IHRpbWUgYW5kIHRoZSBtaW5pbXVtIGVuZCB0aW1lIG9mIHRoZSB0d28gSW50ZXJ2YWxzLlxuICAgKiBSZXR1cm5zIG51bGwgaWYgdGhlIGludGVyc2VjdGlvbiBpcyBlbXB0eSwgbWVhbmluZywgdGhlIGludGVydmFscyBkb24ndCBpbnRlcnNlY3QuXG4gICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgaW50ZXJzZWN0aW9uKG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuICAgIGNvbnN0IHMgPSB0aGlzLnMgPiBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucyxcbiAgICAgIGUgPSB0aGlzLmUgPCBvdGhlci5lID8gdGhpcy5lIDogb3RoZXIuZTtcblxuICAgIGlmIChzID49IGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIEludGVydmFsIHJlcHJlc2VudGluZyB0aGUgdW5pb24gb2YgdGhpcyBJbnRlcnZhbCBhbmQgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC5cbiAgICogU3BlY2lmaWNhbGx5LCB0aGUgcmVzdWx0aW5nIEludGVydmFsIGhhcyB0aGUgbWluaW11bSBzdGFydCB0aW1lIGFuZCB0aGUgbWF4aW11bSBlbmQgdGltZSBvZiB0aGUgdHdvIEludGVydmFscy5cbiAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXJcbiAgICogQHJldHVybiB7SW50ZXJ2YWx9XG4gICAqL1xuICB1bmlvbihvdGhlcikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcbiAgICBjb25zdCBzID0gdGhpcy5zIDwgb3RoZXIucyA/IHRoaXMucyA6IG90aGVyLnMsXG4gICAgICBlID0gdGhpcy5lID4gb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7XG4gICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMocywgZSk7XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIGludG8gYSBlcXVpdmFsZW50IG1pbmltYWwgc2V0IG9mIEludGVydmFscy5cbiAgICogQ29tYmluZXMgb3ZlcmxhcHBpbmcgYW5kIGFkamFjZW50IEludGVydmFscy5cbiAgICogQHBhcmFtIHtBcnJheX0gaW50ZXJ2YWxzXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIG1lcmdlKGludGVydmFscykge1xuICAgIGNvbnN0IFtmb3VuZCwgZmluYWxdID0gaW50ZXJ2YWxzXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5zIC0gYi5zKVxuICAgICAgLnJlZHVjZShcbiAgICAgICAgKFtzb2ZhciwgY3VycmVudF0sIGl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBbc29mYXIsIGl0ZW1dO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5vdmVybGFwcyhpdGVtKSB8fCBjdXJyZW50LmFidXRzU3RhcnQoaXRlbSkpIHtcbiAgICAgICAgICAgIHJldHVybiBbc29mYXIsIGN1cnJlbnQudW5pb24oaXRlbSldO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW3NvZmFyLmNvbmNhdChbY3VycmVudF0pLCBpdGVtXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtbXSwgbnVsbF1cbiAgICAgICk7XG4gICAgaWYgKGZpbmFsKSB7XG4gICAgICBmb3VuZC5wdXNoKGZpbmFsKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvdW5kO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhcnJheSBvZiBJbnRlcnZhbHMgcmVwcmVzZW50aW5nIHRoZSBzcGFucyBvZiB0aW1lIHRoYXQgb25seSBhcHBlYXIgaW4gb25lIG9mIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWxzLlxuICAgKiBAcGFyYW0ge0FycmF5fSBpbnRlcnZhbHNcbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBzdGF0aWMgeG9yKGludGVydmFscykge1xuICAgIGxldCBzdGFydCA9IG51bGwsXG4gICAgICBjdXJyZW50Q291bnQgPSAwO1xuICAgIGNvbnN0IHJlc3VsdHMgPSBbXSxcbiAgICAgIGVuZHMgPSBpbnRlcnZhbHMubWFwKChpKSA9PiBbXG4gICAgICAgIHsgdGltZTogaS5zLCB0eXBlOiBcInNcIiB9LFxuICAgICAgICB7IHRpbWU6IGkuZSwgdHlwZTogXCJlXCIgfSxcbiAgICAgIF0pLFxuICAgICAgZmxhdHRlbmVkID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi5lbmRzKSxcbiAgICAgIGFyciA9IGZsYXR0ZW5lZC5zb3J0KChhLCBiKSA9PiBhLnRpbWUgLSBiLnRpbWUpO1xuXG4gICAgZm9yIChjb25zdCBpIG9mIGFycikge1xuICAgICAgY3VycmVudENvdW50ICs9IGkudHlwZSA9PT0gXCJzXCIgPyAxIDogLTE7XG5cbiAgICAgIGlmIChjdXJyZW50Q291bnQgPT09IDEpIHtcbiAgICAgICAgc3RhcnQgPSBpLnRpbWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc3RhcnQgJiYgK3N0YXJ0ICE9PSAraS50aW1lKSB7XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQsIGkudGltZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBJbnRlcnZhbC5tZXJnZShyZXN1bHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBzcGFuIG9mIHRpbWUgaW4gdGhpcyBJbnRlcnZhbCB0aGF0IGRvZXNuJ3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy5cbiAgICogQHBhcmFtIHsuLi5JbnRlcnZhbH0gaW50ZXJ2YWxzXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgZGlmZmVyZW5jZSguLi5pbnRlcnZhbHMpIHtcbiAgICByZXR1cm4gSW50ZXJ2YWwueG9yKFt0aGlzXS5jb25jYXQoaW50ZXJ2YWxzKSlcbiAgICAgIC5tYXAoKGkpID0+IHRoaXMuaW50ZXJzZWN0aW9uKGkpKVxuICAgICAgLmZpbHRlcigoaSkgPT4gaSAmJiAhaS5pc0VtcHR5KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbCBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b1N0cmluZygpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQ7XG4gICAgcmV0dXJuIGBbJHt0aGlzLnMudG9JU08oKX0gXHUyMDEzICR7dGhpcy5lLnRvSVNPKCl9KWA7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgSW50ZXJ2YWwuXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZV9pbnRlcnZhbHNcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZSN0b0lTT31cbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU08ob3B0cykge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRDtcbiAgICByZXR1cm4gYCR7dGhpcy5zLnRvSVNPKG9wdHMpfS8ke3RoaXMuZS50b0lTTyhvcHRzKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBkYXRlIG9mIHRoaXMgSW50ZXJ2YWwuXG4gICAqIFRoZSB0aW1lIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZV9pbnRlcnZhbHNcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU09EYXRlKCkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRDtcbiAgICByZXR1cm4gYCR7dGhpcy5zLnRvSVNPRGF0ZSgpfS8ke3RoaXMuZS50b0lTT0RhdGUoKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aW1lIG9mIHRoaXMgSW50ZXJ2YWwuXG4gICAqIFRoZSBkYXRlIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZV9pbnRlcnZhbHNcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZSN0b0lTT31cbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU09UaW1lKG9wdHMpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQ7XG4gICAgcmV0dXJuIGAke3RoaXMucy50b0lTT1RpbWUob3B0cyl9LyR7dGhpcy5lLnRvSVNPVGltZShvcHRzKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbCBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGVGb3JtYXQgLSB0aGUgZm9ybWF0IHN0cmluZy4gVGhpcyBzdHJpbmcgZm9ybWF0cyB0aGUgc3RhcnQgYW5kIGVuZCB0aW1lLiBTZWUge0BsaW5rIERhdGVUaW1lI3RvRm9ybWF0fSBmb3IgZGV0YWlscy5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5zZXBhcmF0b3IgPSAgJyBcdTIwMTMgJ10gLSBhIHNlcGFyYXRvciB0byBwbGFjZSBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgZW5kIHJlcHJlc2VudGF0aW9uc1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0Zvcm1hdChkYXRlRm9ybWF0LCB7IHNlcGFyYXRvciA9IFwiIFx1MjAxMyBcIiB9ID0ge30pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQ7XG4gICAgcmV0dXJuIGAke3RoaXMucy50b0Zvcm1hdChkYXRlRm9ybWF0KX0ke3NlcGFyYXRvcn0ke3RoaXMuZS50b0Zvcm1hdChkYXRlRm9ybWF0KX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIER1cmF0aW9uIHJlcHJlc2VudGluZyB0aGUgdGltZSBzcGFubmVkIGJ5IHRoaXMgaW50ZXJ2YWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvbi5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlXG4gICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oKS50b09iamVjdCgpIC8vPT4geyBtaWxsaXNlY29uZHM6IDg4NDg5MjU3IH1cbiAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbignZGF5cycpLnRvT2JqZWN0KCkgLy89PiB7IGRheXM6IDEuMDI0MTgxMjE1Mjc3Nzc3OCB9XG4gICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oWydob3VycycsICdtaW51dGVzJ10pLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAyNCwgbWludXRlczogMzQuODIwOTUgfVxuICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKFsnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJ10pLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAyNCwgbWludXRlczogMzQsIHNlY29uZHM6IDQ5LjI1NyB9XG4gICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oJ3NlY29uZHMnKS50b09iamVjdCgpIC8vPT4geyBzZWNvbmRzOiA4ODQ4OS4yNTcgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHRvRHVyYXRpb24odW5pdCwgb3B0cykge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gRHVyYXRpb24uaW52YWxpZCh0aGlzLmludmFsaWRSZWFzb24pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5lLmRpZmYodGhpcy5zLCB1bml0LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gbWFwRm4gb24gdGhlIGludGVydmFsIHN0YXJ0IGFuZCBlbmQsIHJldHVybmluZyBhIG5ldyBJbnRlcnZhbCBmcm9tIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVzXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1hcEZuXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS5tYXBFbmRwb2ludHMoZW5kcG9pbnQgPT4gZW5kcG9pbnQudG9VVEMoKSlcbiAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikubWFwRW5kcG9pbnRzKGVuZHBvaW50ID0+IGVuZHBvaW50LnBsdXMoeyBob3VyczogMiB9KSlcbiAgICovXG4gIG1hcEVuZHBvaW50cyhtYXBGbikge1xuICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKG1hcEZuKHRoaXMucyksIG1hcEZuKHRoaXMuZSkpO1xuICB9XG59XG4iLCAiaW1wb3J0IERhdGVUaW1lIGZyb20gXCIuL2RhdGV0aW1lLmpzXCI7XG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3MuanNcIjtcbmltcG9ydCBMb2NhbGUgZnJvbSBcIi4vaW1wbC9sb2NhbGUuanNcIjtcbmltcG9ydCBJQU5BWm9uZSBmcm9tIFwiLi96b25lcy9JQU5BWm9uZS5qc1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplWm9uZSB9IGZyb20gXCIuL2ltcGwvem9uZVV0aWwuanNcIjtcblxuaW1wb3J0IHsgaGFzUmVsYXRpdmUgfSBmcm9tIFwiLi9pbXBsL3V0aWwuanNcIjtcblxuLyoqXG4gKiBUaGUgSW5mbyBjbGFzcyBjb250YWlucyBzdGF0aWMgbWV0aG9kcyBmb3IgcmV0cmlldmluZyBnZW5lcmFsIHRpbWUgYW5kIGRhdGUgcmVsYXRlZCBkYXRhLiBGb3IgZXhhbXBsZSwgaXQgaGFzIG1ldGhvZHMgZm9yIGZpbmRpbmcgb3V0IGlmIGEgdGltZSB6b25lIGhhcyBhIERTVCwgZm9yIGxpc3RpbmcgdGhlIG1vbnRocyBpbiBhbnkgc3VwcG9ydGVkIGxvY2FsZSwgYW5kIGZvciBkaXNjb3ZlcmluZyB3aGljaCBvZiBMdXhvbiBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IGVudmlyb25tZW50LlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbmZvIHtcbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBjb250YWlucyBhIERTVC5cbiAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW3pvbmU9J2xvY2FsJ10gLSBab25lIHRvIGNoZWNrLiBEZWZhdWx0cyB0byB0aGUgZW52aXJvbm1lbnQncyBsb2NhbCB6b25lLlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgc3RhdGljIGhhc0RTVCh6b25lID0gU2V0dGluZ3MuZGVmYXVsdFpvbmUpIHtcbiAgICBjb25zdCBwcm90byA9IERhdGVUaW1lLm5vdygpLnNldFpvbmUoem9uZSkuc2V0KHsgbW9udGg6IDEyIH0pO1xuXG4gICAgcmV0dXJuICF6b25lLmlzVW5pdmVyc2FsICYmIHByb3RvLm9mZnNldCAhPT0gcHJvdG8uc2V0KHsgbW9udGg6IDYgfSkub2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBpcyBhIHZhbGlkIElBTkEgc3BlY2lmaWVyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gem9uZSAtIFpvbmUgdG8gY2hlY2tcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBpc1ZhbGlkSUFOQVpvbmUoem9uZSkge1xuICAgIHJldHVybiBJQU5BWm9uZS5pc1ZhbGlkU3BlY2lmaWVyKHpvbmUpICYmIElBTkFab25lLmlzVmFsaWRab25lKHpvbmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBpbnB1dCBpbnRvIGEge0BsaW5rIFpvbmV9IGluc3RhbmNlLlxuICAgKlxuICAgKiAqIElmIGBpbnB1dGAgaXMgYWxyZWFkeSBhIFpvbmUgaW5zdGFuY2UsIGl0IGlzIHJldHVybmVkIHVuY2hhbmdlZC5cbiAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSB2YWxpZCB0aW1lIHpvbmUgbmFtZSwgYSBab25lIGluc3RhbmNlXG4gICAqICAgd2l0aCB0aGF0IG5hbWUgaXMgcmV0dXJuZWQuXG4gICAqICogSWYgYGlucHV0YCBpcyBhIHN0cmluZyB0aGF0IGRvZXNuJ3QgcmVmZXIgdG8gYSBrbm93biB0aW1lIHpvbmUsIGEgWm9uZVxuICAgKiAgIGluc3RhbmNlIHdpdGgge0BsaW5rIFpvbmUjaXNWYWxpZH0gPT0gZmFsc2UgaXMgcmV0dXJuZWQuXG4gICAqICogSWYgYGlucHV0IGlzIGEgbnVtYmVyLCBhIFpvbmUgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGZpeGVkIG9mZnNldFxuICAgKiAgIGluIG1pbnV0ZXMgaXMgcmV0dXJuZWQuXG4gICAqICogSWYgYGlucHV0YCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoZSBkZWZhdWx0IHpvbmUgaXMgcmV0dXJuZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV8bnVtYmVyfSBbaW5wdXRdIC0gdGhlIHZhbHVlIHRvIGJlIGNvbnZlcnRlZFxuICAgKiBAcmV0dXJuIHtab25lfVxuICAgKi9cbiAgc3RhdGljIG5vcm1hbGl6ZVpvbmUoaW5wdXQpIHtcbiAgICByZXR1cm4gbm9ybWFsaXplWm9uZShpbnB1dCwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhcnJheSBvZiBzdGFuZGFsb25lIG1vbnRoIG5hbWVzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyBcIm51bWVyaWNcIiwgXCIyLWRpZ2l0XCIsIFwibmFycm93XCIsIFwic2hvcnRcIiwgXCJsb25nXCJcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5udW1iZXJpbmdTeXN0ZW09bnVsbF0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm91dHB1dENhbGVuZGFyPSdncmVnb3J5J10gLSB0aGUgY2FsZW5kYXJcbiAgICogQGV4YW1wbGUgSW5mby5tb250aHMoKVswXSAvLz0+ICdKYW51YXJ5J1xuICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnKVswXSAvLz0+ICdKYW4nXG4gICAqIEBleGFtcGxlIEluZm8ubW9udGhzKCdudW1lcmljJylbMF0gLy89PiAnMSdcbiAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ3Nob3J0JywgeyBsb2NhbGU6ICdmci1DQScgfSApWzBdIC8vPT4gJ2phbnYuJ1xuICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycsIHsgbG9jYWxlOiAnYXInIH0pWzBdIC8vPT4gJ1x1MDY2MSdcbiAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ2xvbmcnLCB7IG91dHB1dENhbGVuZGFyOiAnaXNsYW1pYycgfSlbMF0gLy89PiAnUmFiaVx1MDJCQiBJJ1xuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHN0YXRpYyBtb250aHMoXG4gICAgbGVuZ3RoID0gXCJsb25nXCIsXG4gICAgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsLCBvdXRwdXRDYWxlbmRhciA9IFwiZ3JlZ29yeVwiIH0gPSB7fVxuICApIHtcbiAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcikpLm1vbnRocyhsZW5ndGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhcnJheSBvZiBmb3JtYXQgbW9udGggbmFtZXMuXG4gICAqIEZvcm1hdCBtb250aHMgZGlmZmVyIGZyb20gc3RhbmRhbG9uZSBtb250aHMgaW4gdGhhdCB0aGV5J3JlIG1lYW50IHRvIGFwcGVhciBuZXh0IHRvIHRoZSBkYXkgb2YgdGhlIG1vbnRoLiBJbiBzb21lIGxhbmd1YWdlcywgdGhhdFxuICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuXG4gICAqIFNlZSB7QGxpbmsgSW5mbyNtb250aHN9XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyBcIm51bWVyaWNcIiwgXCIyLWRpZ2l0XCIsIFwibmFycm93XCIsIFwic2hvcnRcIiwgXCJsb25nXCJcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5udW1iZXJpbmdTeXN0ZW09bnVsbF0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm91dHB1dENhbGVuZGFyPSdncmVnb3J5J10gLSB0aGUgY2FsZW5kYXJcbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBzdGF0aWMgbW9udGhzRm9ybWF0KFxuICAgIGxlbmd0aCA9IFwibG9uZ1wiLFxuICAgIHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCwgbG9jT2JqID0gbnVsbCwgb3V0cHV0Q2FsZW5kYXIgPSBcImdyZWdvcnlcIiB9ID0ge31cbiAgKSB7XG4gICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpKS5tb250aHMobGVuZ3RoLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gYXJyYXkgb2Ygc3RhbmRhbG9uZSB3ZWVrIG5hbWVzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSB3ZWVrZGF5IHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzIFwibmFycm93XCIsIFwic2hvcnRcIiwgXCJsb25nXCIuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtPW51bGxdIC0gdGhlIG51bWJlcmluZyBzeXN0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY09iaj1udWxsXSAtIGFuIGV4aXN0aW5nIGxvY2FsZSBvYmplY3QgdG8gdXNlXG4gICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoKVswXSAvLz0+ICdNb25kYXknXG4gICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JylbMF0gLy89PiAnTW9uJ1xuICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKCdzaG9ydCcsIHsgbG9jYWxlOiAnZnItQ0EnIH0pWzBdIC8vPT4gJ2x1bi4nXG4gICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdhcicgfSlbMF0gLy89PiAnXHUwNjI3XHUwNjQ0XHUwNjI3XHUwNjJCXHUwNjQ2XHUwNjRBXHUwNjQ2J1xuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHN0YXRpYyB3ZWVrZGF5cyhsZW5ndGggPSBcImxvbmdcIiwgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fSkge1xuICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG51bGwpKS53ZWVrZGF5cyhsZW5ndGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhcnJheSBvZiBmb3JtYXQgd2VlayBuYW1lcy5cbiAgICogRm9ybWF0IHdlZWtkYXlzIGRpZmZlciBmcm9tIHN0YW5kYWxvbmUgd2Vla2RheXMgaW4gdGhhdCB0aGV5J3JlIG1lYW50IHRvIGFwcGVhciBuZXh0IHRvIG1vcmUgZGF0ZSBpbmZvcm1hdGlvbi4gSW4gc29tZSBsYW5ndWFnZXMsIHRoYXRcbiAgICogY2hhbmdlcyB0aGUgc3RyaW5nLlxuICAgKiBTZWUge0BsaW5rIEluZm8jd2Vla2RheXN9XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyBcIm5hcnJvd1wiLCBcInNob3J0XCIsIFwibG9uZ1wiLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT1udWxsXSAtIHRoZSBsb2NhbGUgY29kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtPW51bGxdIC0gdGhlIG51bWJlcmluZyBzeXN0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY09iaj1udWxsXSAtIGFuIGV4aXN0aW5nIGxvY2FsZSBvYmplY3QgdG8gdXNlXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIHdlZWtkYXlzRm9ybWF0KFxuICAgIGxlbmd0aCA9IFwibG9uZ1wiLFxuICAgIHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCwgbG9jT2JqID0gbnVsbCB9ID0ge31cbiAgKSB7XG4gICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgbnVsbCkpLndlZWtkYXlzKGxlbmd0aCwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIGFycmF5IG9mIG1lcmlkaWVtcy5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlXG4gICAqIEBleGFtcGxlIEluZm8ubWVyaWRpZW1zKCkgLy89PiBbICdBTScsICdQTScgXVxuICAgKiBAZXhhbXBsZSBJbmZvLm1lcmlkaWVtcyh7IGxvY2FsZTogJ215JyB9KSAvLz0+IFsgJ1x1MTAxNFx1MTAzNlx1MTAxNFx1MTAwMFx1MTAzQScsICdcdTEwMEFcdTEwMTRcdTEwMzEnIF1cbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBzdGF0aWMgbWVyaWRpZW1zKHsgbG9jYWxlID0gbnVsbCB9ID0ge30pIHtcbiAgICByZXR1cm4gTG9jYWxlLmNyZWF0ZShsb2NhbGUpLm1lcmlkaWVtcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhcnJheSBvZiBlcmFzLCBzdWNoIGFzIFsnQkMnLCAnQUQnXS4gVGhlIGxvY2FsZSBjYW4gYmUgc3BlY2lmaWVkLCBidXQgdGhlIGNhbGVuZGFyIHN5c3RlbSBpcyBhbHdheXMgR3JlZ29yaWFuLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nc2hvcnQnXSAtIHRoZSBsZW5ndGggb2YgdGhlIGVyYSByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyBcInNob3J0XCIgb3IgXCJsb25nXCIuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZVxuICAgKiBAZXhhbXBsZSBJbmZvLmVyYXMoKSAvLz0+IFsgJ0JDJywgJ0FEJyBdXG4gICAqIEBleGFtcGxlIEluZm8uZXJhcygnbG9uZycpIC8vPT4gWyAnQmVmb3JlIENocmlzdCcsICdBbm5vIERvbWluaScgXVxuICAgKiBAZXhhbXBsZSBJbmZvLmVyYXMoJ2xvbmcnLCB7IGxvY2FsZTogJ2ZyJyB9KSAvLz0+IFsgJ2F2YW50IEpcdTAwRTlzdXMtQ2hyaXN0JywgJ2Fwclx1MDBFOHMgSlx1MDBFOXN1cy1DaHJpc3QnIF1cbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBzdGF0aWMgZXJhcyhsZW5ndGggPSBcInNob3J0XCIsIHsgbG9jYWxlID0gbnVsbCB9ID0ge30pIHtcbiAgICByZXR1cm4gTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bGwsIFwiZ3JlZ29yeVwiKS5lcmFzKGxlbmd0aCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBzZXQgb2YgYXZhaWxhYmxlIGZlYXR1cmVzIGluIHRoaXMgZW52aXJvbm1lbnQuXG4gICAqIFNvbWUgZmVhdHVyZXMgb2YgTHV4b24gYXJlIG5vdCBhdmFpbGFibGUgaW4gYWxsIGVudmlyb25tZW50cy4gRm9yIGV4YW1wbGUsIG9uIG9sZGVyIGJyb3dzZXJzLCByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcgc3VwcG9ydCBpcyBub3QgYXZhaWxhYmxlLiBVc2UgdGhpcyBmdW5jdGlvbiB0byBmaWd1cmUgb3V0IGlmIHRoYXQncyB0aGUgY2FzZS5cbiAgICogS2V5czpcbiAgICogKiBgcmVsYXRpdmVgOiB3aGV0aGVyIHRoaXMgZW52aXJvbm1lbnQgc3VwcG9ydHMgcmVsYXRpdmUgdGltZSBmb3JtYXR0aW5nXG4gICAqIEBleGFtcGxlIEluZm8uZmVhdHVyZXMoKSAvLz0+IHsgcmVsYXRpdmU6IGZhbHNlIH1cbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGZlYXR1cmVzKCkge1xuICAgIHJldHVybiB7IHJlbGF0aXZlOiBoYXNSZWxhdGl2ZSgpIH07XG4gIH1cbn1cbiIsICJpbXBvcnQgRHVyYXRpb24gZnJvbSBcIi4uL2R1cmF0aW9uLmpzXCI7XG5cbmZ1bmN0aW9uIGRheURpZmYoZWFybGllciwgbGF0ZXIpIHtcbiAgY29uc3QgdXRjRGF5U3RhcnQgPSAoZHQpID0+IGR0LnRvVVRDKDAsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KS5zdGFydE9mKFwiZGF5XCIpLnZhbHVlT2YoKSxcbiAgICBtcyA9IHV0Y0RheVN0YXJ0KGxhdGVyKSAtIHV0Y0RheVN0YXJ0KGVhcmxpZXIpO1xuICByZXR1cm4gTWF0aC5mbG9vcihEdXJhdGlvbi5mcm9tTWlsbGlzKG1zKS5hcyhcImRheXNcIikpO1xufVxuXG5mdW5jdGlvbiBoaWdoT3JkZXJEaWZmcyhjdXJzb3IsIGxhdGVyLCB1bml0cykge1xuICBjb25zdCBkaWZmZXJzID0gW1xuICAgIFtcInllYXJzXCIsIChhLCBiKSA9PiBiLnllYXIgLSBhLnllYXJdLFxuICAgIFtcInF1YXJ0ZXJzXCIsIChhLCBiKSA9PiBiLnF1YXJ0ZXIgLSBhLnF1YXJ0ZXJdLFxuICAgIFtcIm1vbnRoc1wiLCAoYSwgYikgPT4gYi5tb250aCAtIGEubW9udGggKyAoYi55ZWFyIC0gYS55ZWFyKSAqIDEyXSxcbiAgICBbXG4gICAgICBcIndlZWtzXCIsXG4gICAgICAoYSwgYikgPT4ge1xuICAgICAgICBjb25zdCBkYXlzID0gZGF5RGlmZihhLCBiKTtcbiAgICAgICAgcmV0dXJuIChkYXlzIC0gKGRheXMgJSA3KSkgLyA3O1xuICAgICAgfSxcbiAgICBdLFxuICAgIFtcImRheXNcIiwgZGF5RGlmZl0sXG4gIF07XG5cbiAgY29uc3QgcmVzdWx0cyA9IHt9O1xuICBsZXQgbG93ZXN0T3JkZXIsIGhpZ2hXYXRlcjtcblxuICBmb3IgKGNvbnN0IFt1bml0LCBkaWZmZXJdIG9mIGRpZmZlcnMpIHtcbiAgICBpZiAodW5pdHMuaW5kZXhPZih1bml0KSA+PSAwKSB7XG4gICAgICBsb3dlc3RPcmRlciA9IHVuaXQ7XG5cbiAgICAgIGxldCBkZWx0YSA9IGRpZmZlcihjdXJzb3IsIGxhdGVyKTtcbiAgICAgIGhpZ2hXYXRlciA9IGN1cnNvci5wbHVzKHsgW3VuaXRdOiBkZWx0YSB9KTtcblxuICAgICAgaWYgKGhpZ2hXYXRlciA+IGxhdGVyKSB7XG4gICAgICAgIGN1cnNvciA9IGN1cnNvci5wbHVzKHsgW3VuaXRdOiBkZWx0YSAtIDEgfSk7XG4gICAgICAgIGRlbHRhIC09IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXJzb3IgPSBoaWdoV2F0ZXI7XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdHNbdW5pdF0gPSBkZWx0YTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gW2N1cnNvciwgcmVzdWx0cywgaGlnaFdhdGVyLCBsb3dlc3RPcmRlcl07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChlYXJsaWVyLCBsYXRlciwgdW5pdHMsIG9wdHMpIHtcbiAgbGV0IFtjdXJzb3IsIHJlc3VsdHMsIGhpZ2hXYXRlciwgbG93ZXN0T3JkZXJdID0gaGlnaE9yZGVyRGlmZnMoZWFybGllciwgbGF0ZXIsIHVuaXRzKTtcblxuICBjb25zdCByZW1haW5pbmdNaWxsaXMgPSBsYXRlciAtIGN1cnNvcjtcblxuICBjb25zdCBsb3dlck9yZGVyVW5pdHMgPSB1bml0cy5maWx0ZXIoXG4gICAgKHUpID0+IFtcImhvdXJzXCIsIFwibWludXRlc1wiLCBcInNlY29uZHNcIiwgXCJtaWxsaXNlY29uZHNcIl0uaW5kZXhPZih1KSA+PSAwXG4gICk7XG5cbiAgaWYgKGxvd2VyT3JkZXJVbml0cy5sZW5ndGggPT09IDApIHtcbiAgICBpZiAoaGlnaFdhdGVyIDwgbGF0ZXIpIHtcbiAgICAgIGhpZ2hXYXRlciA9IGN1cnNvci5wbHVzKHsgW2xvd2VzdE9yZGVyXTogMSB9KTtcbiAgICB9XG5cbiAgICBpZiAoaGlnaFdhdGVyICE9PSBjdXJzb3IpIHtcbiAgICAgIHJlc3VsdHNbbG93ZXN0T3JkZXJdID0gKHJlc3VsdHNbbG93ZXN0T3JkZXJdIHx8IDApICsgcmVtYWluaW5nTWlsbGlzIC8gKGhpZ2hXYXRlciAtIGN1cnNvcik7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZHVyYXRpb24gPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHJlc3VsdHMsIG9wdHMpO1xuXG4gIGlmIChsb3dlck9yZGVyVW5pdHMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBEdXJhdGlvbi5mcm9tTWlsbGlzKHJlbWFpbmluZ01pbGxpcywgb3B0cylcbiAgICAgIC5zaGlmdFRvKC4uLmxvd2VyT3JkZXJVbml0cylcbiAgICAgIC5wbHVzKGR1cmF0aW9uKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZHVyYXRpb247XG4gIH1cbn1cbiIsICJjb25zdCBudW1iZXJpbmdTeXN0ZW1zID0ge1xuICBhcmFiOiBcIltcXHUwNjYwLVxcdTA2NjldXCIsXG4gIGFyYWJleHQ6IFwiW1xcdTA2RjAtXFx1MDZGOV1cIixcbiAgYmFsaTogXCJbXFx1MUI1MC1cXHUxQjU5XVwiLFxuICBiZW5nOiBcIltcXHUwOUU2LVxcdTA5RUZdXCIsXG4gIGRldmE6IFwiW1xcdTA5NjYtXFx1MDk2Rl1cIixcbiAgZnVsbHdpZGU6IFwiW1xcdUZGMTAtXFx1RkYxOV1cIixcbiAgZ3VqcjogXCJbXFx1MEFFNi1cXHUwQUVGXVwiLFxuICBoYW5pZGVjOiBcIltcdTMwMDd8XHU0RTAwfFx1NEU4Q3xcdTRFMDl8XHU1NkRCfFx1NEU5NHxcdTUxNkR8XHU0RTAzfFx1NTE2QnxcdTRFNURdXCIsXG4gIGtobXI6IFwiW1xcdTE3RTAtXFx1MTdFOV1cIixcbiAga25kYTogXCJbXFx1MENFNi1cXHUwQ0VGXVwiLFxuICBsYW9vOiBcIltcXHUwRUQwLVxcdTBFRDldXCIsXG4gIGxpbWI6IFwiW1xcdTE5NDYtXFx1MTk0Rl1cIixcbiAgbWx5bTogXCJbXFx1MEQ2Ni1cXHUwRDZGXVwiLFxuICBtb25nOiBcIltcXHUxODEwLVxcdTE4MTldXCIsXG4gIG15bXI6IFwiW1xcdTEwNDAtXFx1MTA0OV1cIixcbiAgb3J5YTogXCJbXFx1MEI2Ni1cXHUwQjZGXVwiLFxuICB0YW1sZGVjOiBcIltcXHUwQkU2LVxcdTBCRUZdXCIsXG4gIHRlbHU6IFwiW1xcdTBDNjYtXFx1MEM2Rl1cIixcbiAgdGhhaTogXCJbXFx1MEU1MC1cXHUwRTU5XVwiLFxuICB0aWJ0OiBcIltcXHUwRjIwLVxcdTBGMjldXCIsXG4gIGxhdG46IFwiXFxcXGRcIixcbn07XG5cbmNvbnN0IG51bWJlcmluZ1N5c3RlbXNVVEYxNiA9IHtcbiAgYXJhYjogWzE2MzIsIDE2NDFdLFxuICBhcmFiZXh0OiBbMTc3NiwgMTc4NV0sXG4gIGJhbGk6IFs2OTkyLCA3MDAxXSxcbiAgYmVuZzogWzI1MzQsIDI1NDNdLFxuICBkZXZhOiBbMjQwNiwgMjQxNV0sXG4gIGZ1bGx3aWRlOiBbNjUyOTYsIDY1MzAzXSxcbiAgZ3VqcjogWzI3OTAsIDI3OTldLFxuICBraG1yOiBbNjExMiwgNjEyMV0sXG4gIGtuZGE6IFszMzAyLCAzMzExXSxcbiAgbGFvbzogWzM3OTIsIDM4MDFdLFxuICBsaW1iOiBbNjQ3MCwgNjQ3OV0sXG4gIG1seW06IFszNDMwLCAzNDM5XSxcbiAgbW9uZzogWzYxNjAsIDYxNjldLFxuICBteW1yOiBbNDE2MCwgNDE2OV0sXG4gIG9yeWE6IFsyOTE4LCAyOTI3XSxcbiAgdGFtbGRlYzogWzMwNDYsIDMwNTVdLFxuICB0ZWx1OiBbMzE3NCwgMzE4M10sXG4gIHRoYWk6IFszNjY0LCAzNjczXSxcbiAgdGlidDogWzM4NzIsIDM4ODFdLFxufTtcblxuY29uc3QgaGFuaWRlY0NoYXJzID0gbnVtYmVyaW5nU3lzdGVtcy5oYW5pZGVjLnJlcGxhY2UoL1tcXFt8XFxdXS9nLCBcIlwiKS5zcGxpdChcIlwiKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRGlnaXRzKHN0cikge1xuICBsZXQgdmFsdWUgPSBwYXJzZUludChzdHIsIDEwKTtcbiAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgIHZhbHVlID0gXCJcIjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuXG4gICAgICBpZiAoc3RyW2ldLnNlYXJjaChudW1iZXJpbmdTeXN0ZW1zLmhhbmlkZWMpICE9PSAtMSkge1xuICAgICAgICB2YWx1ZSArPSBoYW5pZGVjQ2hhcnMuaW5kZXhPZihzdHJbaV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbnVtYmVyaW5nU3lzdGVtc1VURjE2KSB7XG4gICAgICAgICAgY29uc3QgW21pbiwgbWF4XSA9IG51bWJlcmluZ1N5c3RlbXNVVEYxNltrZXldO1xuICAgICAgICAgIGlmIChjb2RlID49IG1pbiAmJiBjb2RlIDw9IG1heCkge1xuICAgICAgICAgICAgdmFsdWUgKz0gY29kZSAtIG1pbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWdpdFJlZ2V4KHsgbnVtYmVyaW5nU3lzdGVtIH0sIGFwcGVuZCA9IFwiXCIpIHtcbiAgcmV0dXJuIG5ldyBSZWdFeHAoYCR7bnVtYmVyaW5nU3lzdGVtc1tudW1iZXJpbmdTeXN0ZW0gfHwgXCJsYXRuXCJdfSR7YXBwZW5kfWApO1xufVxuIiwgImltcG9ydCB7IHBhcnNlTWlsbGlzLCBpc1VuZGVmaW5lZCwgdW50cnVuY2F0ZVllYXIsIHNpZ25lZE9mZnNldCwgaGFzT3duUHJvcGVydHkgfSBmcm9tIFwiLi91dGlsLmpzXCI7XG5pbXBvcnQgRm9ybWF0dGVyIGZyb20gXCIuL2Zvcm1hdHRlci5qc1wiO1xuaW1wb3J0IEZpeGVkT2Zmc2V0Wm9uZSBmcm9tIFwiLi4vem9uZXMvZml4ZWRPZmZzZXRab25lLmpzXCI7XG5pbXBvcnQgSUFOQVpvbmUgZnJvbSBcIi4uL3pvbmVzL0lBTkFab25lLmpzXCI7XG5pbXBvcnQgRGF0ZVRpbWUgZnJvbSBcIi4uL2RhdGV0aW1lLmpzXCI7XG5pbXBvcnQgeyBkaWdpdFJlZ2V4LCBwYXJzZURpZ2l0cyB9IGZyb20gXCIuL2RpZ2l0cy5qc1wiO1xuaW1wb3J0IHsgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzLmpzXCI7XG5cbmNvbnN0IE1JU1NJTkdfRlRQID0gXCJtaXNzaW5nIEludGwuRGF0ZVRpbWVGb3JtYXQuZm9ybWF0VG9QYXJ0cyBzdXBwb3J0XCI7XG5cbmZ1bmN0aW9uIGludFVuaXQocmVnZXgsIHBvc3QgPSAoaSkgPT4gaSkge1xuICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHBvc3QocGFyc2VEaWdpdHMocykpIH07XG59XG5cbmNvbnN0IE5CU1AgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDE2MCk7XG5jb25zdCBzcGFjZU9yTkJTUCA9IGAoIHwke05CU1B9KWA7XG5jb25zdCBzcGFjZU9yTkJTUFJlZ0V4cCA9IG5ldyBSZWdFeHAoc3BhY2VPck5CU1AsIFwiZ1wiKTtcblxuZnVuY3Rpb24gZml4TGlzdFJlZ2V4KHMpIHtcbiAgLy8gbWFrZSBkb3RzIG9wdGlvbmFsIGFuZCBhbHNvIG1ha2UgdGhlbSBsaXRlcmFsXG4gIC8vIG1ha2Ugc3BhY2UgYW5kIG5vbiBicmVha2FibGUgc3BhY2UgY2hhcmFjdGVycyBpbnRlcmNoYW5nZWFibGVcbiAgcmV0dXJuIHMucmVwbGFjZSgvXFwuL2csIFwiXFxcXC4/XCIpLnJlcGxhY2Uoc3BhY2VPck5CU1BSZWdFeHAsIHNwYWNlT3JOQlNQKTtcbn1cblxuZnVuY3Rpb24gc3RyaXBJbnNlbnNpdGl2aXRpZXMocykge1xuICByZXR1cm4gc1xuICAgIC5yZXBsYWNlKC9cXC4vZywgXCJcIikgLy8gaWdub3JlIGRvdHMgdGhhdCB3ZXJlIG1hZGUgb3B0aW9uYWxcbiAgICAucmVwbGFjZShzcGFjZU9yTkJTUFJlZ0V4cCwgXCIgXCIpIC8vIGludGVyY2hhbmdlIHNwYWNlIGFuZCBuYnNwXG4gICAgLnRvTG93ZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIG9uZU9mKHN0cmluZ3MsIHN0YXJ0SW5kZXgpIHtcbiAgaWYgKHN0cmluZ3MgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVnZXg6IFJlZ0V4cChzdHJpbmdzLm1hcChmaXhMaXN0UmVnZXgpLmpvaW4oXCJ8XCIpKSxcbiAgICAgIGRlc2VyOiAoW3NdKSA9PlxuICAgICAgICBzdHJpbmdzLmZpbmRJbmRleCgoaSkgPT4gc3RyaXBJbnNlbnNpdGl2aXRpZXMocykgPT09IHN0cmlwSW5zZW5zaXRpdml0aWVzKGkpKSArIHN0YXJ0SW5kZXgsXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvZmZzZXQocmVnZXgsIGdyb3Vwcykge1xuICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbLCBoLCBtXSkgPT4gc2lnbmVkT2Zmc2V0KGgsIG0pLCBncm91cHMgfTtcbn1cblxuZnVuY3Rpb24gc2ltcGxlKHJlZ2V4KSB7XG4gIHJldHVybiB7IHJlZ2V4LCBkZXNlcjogKFtzXSkgPT4gcyB9O1xufVxuXG5mdW5jdGlvbiBlc2NhcGVUb2tlbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZSgvW1xcLVxcW1xcXXt9KCkqKz8uLFxcXFxcXF4kfCNcXHNdL2csIFwiXFxcXCQmXCIpO1xufVxuXG5mdW5jdGlvbiB1bml0Rm9yVG9rZW4odG9rZW4sIGxvYykge1xuICBjb25zdCBvbmUgPSBkaWdpdFJlZ2V4KGxvYyksXG4gICAgdHdvID0gZGlnaXRSZWdleChsb2MsIFwiezJ9XCIpLFxuICAgIHRocmVlID0gZGlnaXRSZWdleChsb2MsIFwiezN9XCIpLFxuICAgIGZvdXIgPSBkaWdpdFJlZ2V4KGxvYywgXCJ7NH1cIiksXG4gICAgc2l4ID0gZGlnaXRSZWdleChsb2MsIFwiezZ9XCIpLFxuICAgIG9uZU9yVHdvID0gZGlnaXRSZWdleChsb2MsIFwiezEsMn1cIiksXG4gICAgb25lVG9UaHJlZSA9IGRpZ2l0UmVnZXgobG9jLCBcInsxLDN9XCIpLFxuICAgIG9uZVRvU2l4ID0gZGlnaXRSZWdleChsb2MsIFwiezEsNn1cIiksXG4gICAgb25lVG9OaW5lID0gZGlnaXRSZWdleChsb2MsIFwiezEsOX1cIiksXG4gICAgdHdvVG9Gb3VyID0gZGlnaXRSZWdleChsb2MsIFwiezIsNH1cIiksXG4gICAgZm91clRvU2l4ID0gZGlnaXRSZWdleChsb2MsIFwiezQsNn1cIiksXG4gICAgbGl0ZXJhbCA9ICh0KSA9PiAoeyByZWdleDogUmVnRXhwKGVzY2FwZVRva2VuKHQudmFsKSksIGRlc2VyOiAoW3NdKSA9PiBzLCBsaXRlcmFsOiB0cnVlIH0pLFxuICAgIHVuaXRhdGUgPSAodCkgPT4ge1xuICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHtcbiAgICAgICAgcmV0dXJuIGxpdGVyYWwodCk7XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKHQudmFsKSB7XG4gICAgICAgIC8vIGVyYVxuICAgICAgICBjYXNlIFwiR1wiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MuZXJhcyhcInNob3J0XCIsIGZhbHNlKSwgMCk7XG4gICAgICAgIGNhc2UgXCJHR1wiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MuZXJhcyhcImxvbmdcIiwgZmFsc2UpLCAwKTtcbiAgICAgICAgLy8geWVhcnNcbiAgICAgICAgY2FzZSBcInlcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVUb1NpeCk7XG4gICAgICAgIGNhc2UgXCJ5eVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3b1RvRm91ciwgdW50cnVuY2F0ZVllYXIpO1xuICAgICAgICBjYXNlIFwieXl5eVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXIpO1xuICAgICAgICBjYXNlIFwieXl5eXlcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChmb3VyVG9TaXgpO1xuICAgICAgICBjYXNlIFwieXl5eXl5XCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQoc2l4KTtcbiAgICAgICAgLy8gbW9udGhzXG4gICAgICAgIGNhc2UgXCJNXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pO1xuICAgICAgICBjYXNlIFwiTU1cIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pO1xuICAgICAgICBjYXNlIFwiTU1NXCI6XG4gICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoXCJzaG9ydFwiLCB0cnVlLCBmYWxzZSksIDEpO1xuICAgICAgICBjYXNlIFwiTU1NTVwiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKFwibG9uZ1wiLCB0cnVlLCBmYWxzZSksIDEpO1xuICAgICAgICBjYXNlIFwiTFwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcIkxMXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgY2FzZSBcIkxMTFwiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKFwic2hvcnRcIiwgZmFsc2UsIGZhbHNlKSwgMSk7XG4gICAgICAgIGNhc2UgXCJMTExMXCI6XG4gICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoXCJsb25nXCIsIGZhbHNlLCBmYWxzZSksIDEpO1xuICAgICAgICAvLyBkYXRlc1xuICAgICAgICBjYXNlIFwiZFwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcImRkXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgLy8gb3JkaW5hbHNcbiAgICAgICAgY2FzZSBcIm9cIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVUb1RocmVlKTtcbiAgICAgICAgY2FzZSBcIm9vb1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHRocmVlKTtcbiAgICAgICAgLy8gdGltZVxuICAgICAgICBjYXNlIFwiSEhcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pO1xuICAgICAgICBjYXNlIFwiSFwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcImhoXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgY2FzZSBcImhcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJtbVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIGNhc2UgXCJtXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pO1xuICAgICAgICBjYXNlIFwicVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcInFxXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgY2FzZSBcInNcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJzc1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIGNhc2UgXCJTXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lVG9UaHJlZSk7XG4gICAgICAgIGNhc2UgXCJTU1NcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0aHJlZSk7XG4gICAgICAgIGNhc2UgXCJ1XCI6XG4gICAgICAgICAgcmV0dXJuIHNpbXBsZShvbmVUb05pbmUpO1xuICAgICAgICBjYXNlIFwidXVcIjpcbiAgICAgICAgICByZXR1cm4gc2ltcGxlKG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcInV1dVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZSk7XG4gICAgICAgIC8vIG1lcmlkaWVtXG4gICAgICAgIGNhc2UgXCJhXCI6XG4gICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tZXJpZGllbXMoKSwgMCk7XG4gICAgICAgIC8vIHdlZWtZZWFyIChrKVxuICAgICAgICBjYXNlIFwia2tra1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXIpO1xuICAgICAgICBjYXNlIFwia2tcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d29Ub0ZvdXIsIHVudHJ1bmNhdGVZZWFyKTtcbiAgICAgICAgLy8gd2Vla051bWJlciAoVylcbiAgICAgICAgY2FzZSBcIldcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJXV1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIC8vIHdlZWtkYXlzXG4gICAgICAgIGNhc2UgXCJFXCI6XG4gICAgICAgIGNhc2UgXCJjXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lKTtcbiAgICAgICAgY2FzZSBcIkVFRVwiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoXCJzaG9ydFwiLCBmYWxzZSwgZmFsc2UpLCAxKTtcbiAgICAgICAgY2FzZSBcIkVFRUVcIjpcbiAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKFwibG9uZ1wiLCBmYWxzZSwgZmFsc2UpLCAxKTtcbiAgICAgICAgY2FzZSBcImNjY1wiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoXCJzaG9ydFwiLCB0cnVlLCBmYWxzZSksIDEpO1xuICAgICAgICBjYXNlIFwiY2NjY1wiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoXCJsb25nXCIsIHRydWUsIGZhbHNlKSwgMSk7XG4gICAgICAgIC8vIG9mZnNldC96b25lXG4gICAgICAgIGNhc2UgXCJaXCI6XG4gICAgICAgIGNhc2UgXCJaWlwiOlxuICAgICAgICAgIHJldHVybiBvZmZzZXQobmV3IFJlZ0V4cChgKFsrLV0ke29uZU9yVHdvLnNvdXJjZX0pKD86Oigke3R3by5zb3VyY2V9KSk/YCksIDIpO1xuICAgICAgICBjYXNlIFwiWlpaXCI6XG4gICAgICAgICAgcmV0dXJuIG9mZnNldChuZXcgUmVnRXhwKGAoWystXSR7b25lT3JUd28uc291cmNlfSkoJHt0d28uc291cmNlfSk/YCksIDIpO1xuICAgICAgICAvLyB3ZSBkb24ndCBzdXBwb3J0IFpaWlogKFBTVCkgb3IgWlpaWlogKFBhY2lmaWMgU3RhbmRhcmQgVGltZSkgaW4gcGFyc2luZ1xuICAgICAgICAvLyBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYW55IHdheSB0byBmaWd1cmUgb3V0IHdoYXQgdGhleSBhcmVcbiAgICAgICAgY2FzZSBcInpcIjpcbiAgICAgICAgICByZXR1cm4gc2ltcGxlKC9bYS16XystL117MSwyNTZ9Py9pKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbGl0ZXJhbCh0KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gIGNvbnN0IHVuaXQgPSB1bml0YXRlKHRva2VuKSB8fCB7XG4gICAgaW52YWxpZFJlYXNvbjogTUlTU0lOR19GVFAsXG4gIH07XG5cbiAgdW5pdC50b2tlbiA9IHRva2VuO1xuXG4gIHJldHVybiB1bml0O1xufVxuXG5jb25zdCBwYXJ0VHlwZVN0eWxlVG9Ub2tlblZhbCA9IHtcbiAgeWVhcjoge1xuICAgIFwiMi1kaWdpdFwiOiBcInl5XCIsXG4gICAgbnVtZXJpYzogXCJ5eXl5eVwiLFxuICB9LFxuICBtb250aDoge1xuICAgIG51bWVyaWM6IFwiTVwiLFxuICAgIFwiMi1kaWdpdFwiOiBcIk1NXCIsXG4gICAgc2hvcnQ6IFwiTU1NXCIsXG4gICAgbG9uZzogXCJNTU1NXCIsXG4gIH0sXG4gIGRheToge1xuICAgIG51bWVyaWM6IFwiZFwiLFxuICAgIFwiMi1kaWdpdFwiOiBcImRkXCIsXG4gIH0sXG4gIHdlZWtkYXk6IHtcbiAgICBzaG9ydDogXCJFRUVcIixcbiAgICBsb25nOiBcIkVFRUVcIixcbiAgfSxcbiAgZGF5cGVyaW9kOiBcImFcIixcbiAgZGF5UGVyaW9kOiBcImFcIixcbiAgaG91cjoge1xuICAgIG51bWVyaWM6IFwiaFwiLFxuICAgIFwiMi1kaWdpdFwiOiBcImhoXCIsXG4gIH0sXG4gIG1pbnV0ZToge1xuICAgIG51bWVyaWM6IFwibVwiLFxuICAgIFwiMi1kaWdpdFwiOiBcIm1tXCIsXG4gIH0sXG4gIHNlY29uZDoge1xuICAgIG51bWVyaWM6IFwic1wiLFxuICAgIFwiMi1kaWdpdFwiOiBcInNzXCIsXG4gIH0sXG59O1xuXG5mdW5jdGlvbiB0b2tlbkZvclBhcnQocGFydCwgbG9jYWxlLCBmb3JtYXRPcHRzKSB7XG4gIGNvbnN0IHsgdHlwZSwgdmFsdWUgfSA9IHBhcnQ7XG5cbiAgaWYgKHR5cGUgPT09IFwibGl0ZXJhbFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpdGVyYWw6IHRydWUsXG4gICAgICB2YWw6IHZhbHVlLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBzdHlsZSA9IGZvcm1hdE9wdHNbdHlwZV07XG5cbiAgbGV0IHZhbCA9IHBhcnRUeXBlU3R5bGVUb1Rva2VuVmFsW3R5cGVdO1xuICBpZiAodHlwZW9mIHZhbCA9PT0gXCJvYmplY3RcIikge1xuICAgIHZhbCA9IHZhbFtzdHlsZV07XG4gIH1cblxuICBpZiAodmFsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpdGVyYWw6IGZhbHNlLFxuICAgICAgdmFsLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBidWlsZFJlZ2V4KHVuaXRzKSB7XG4gIGNvbnN0IHJlID0gdW5pdHMubWFwKCh1KSA9PiB1LnJlZ2V4KS5yZWR1Y2UoKGYsIHIpID0+IGAke2Z9KCR7ci5zb3VyY2V9KWAsIFwiXCIpO1xuICByZXR1cm4gW2BeJHtyZX0kYCwgdW5pdHNdO1xufVxuXG5mdW5jdGlvbiBtYXRjaChpbnB1dCwgcmVnZXgsIGhhbmRsZXJzKSB7XG4gIGNvbnN0IG1hdGNoZXMgPSBpbnB1dC5tYXRjaChyZWdleCk7XG5cbiAgaWYgKG1hdGNoZXMpIHtcbiAgICBjb25zdCBhbGwgPSB7fTtcbiAgICBsZXQgbWF0Y2hJbmRleCA9IDE7XG4gICAgZm9yIChjb25zdCBpIGluIGhhbmRsZXJzKSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkoaGFuZGxlcnMsIGkpKSB7XG4gICAgICAgIGNvbnN0IGggPSBoYW5kbGVyc1tpXSxcbiAgICAgICAgICBncm91cHMgPSBoLmdyb3VwcyA/IGguZ3JvdXBzICsgMSA6IDE7XG4gICAgICAgIGlmICghaC5saXRlcmFsICYmIGgudG9rZW4pIHtcbiAgICAgICAgICBhbGxbaC50b2tlbi52YWxbMF1dID0gaC5kZXNlcihtYXRjaGVzLnNsaWNlKG1hdGNoSW5kZXgsIG1hdGNoSW5kZXggKyBncm91cHMpKTtcbiAgICAgICAgfVxuICAgICAgICBtYXRjaEluZGV4ICs9IGdyb3VwcztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFttYXRjaGVzLCBhbGxdO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBbbWF0Y2hlcywge31dO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRhdGVUaW1lRnJvbU1hdGNoZXMobWF0Y2hlcykge1xuICBjb25zdCB0b0ZpZWxkID0gKHRva2VuKSA9PiB7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgY2FzZSBcIlNcIjpcbiAgICAgICAgcmV0dXJuIFwibWlsbGlzZWNvbmRcIjtcbiAgICAgIGNhc2UgXCJzXCI6XG4gICAgICAgIHJldHVybiBcInNlY29uZFwiO1xuICAgICAgY2FzZSBcIm1cIjpcbiAgICAgICAgcmV0dXJuIFwibWludXRlXCI7XG4gICAgICBjYXNlIFwiaFwiOlxuICAgICAgY2FzZSBcIkhcIjpcbiAgICAgICAgcmV0dXJuIFwiaG91clwiO1xuICAgICAgY2FzZSBcImRcIjpcbiAgICAgICAgcmV0dXJuIFwiZGF5XCI7XG4gICAgICBjYXNlIFwib1wiOlxuICAgICAgICByZXR1cm4gXCJvcmRpbmFsXCI7XG4gICAgICBjYXNlIFwiTFwiOlxuICAgICAgY2FzZSBcIk1cIjpcbiAgICAgICAgcmV0dXJuIFwibW9udGhcIjtcbiAgICAgIGNhc2UgXCJ5XCI6XG4gICAgICAgIHJldHVybiBcInllYXJcIjtcbiAgICAgIGNhc2UgXCJFXCI6XG4gICAgICBjYXNlIFwiY1wiOlxuICAgICAgICByZXR1cm4gXCJ3ZWVrZGF5XCI7XG4gICAgICBjYXNlIFwiV1wiOlxuICAgICAgICByZXR1cm4gXCJ3ZWVrTnVtYmVyXCI7XG4gICAgICBjYXNlIFwia1wiOlxuICAgICAgICByZXR1cm4gXCJ3ZWVrWWVhclwiO1xuICAgICAgY2FzZSBcInFcIjpcbiAgICAgICAgcmV0dXJuIFwicXVhcnRlclwiO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xuXG4gIGxldCB6b25lID0gbnVsbDtcbiAgbGV0IHNwZWNpZmljT2Zmc2V0O1xuICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMueikpIHtcbiAgICB6b25lID0gSUFOQVpvbmUuY3JlYXRlKG1hdGNoZXMueik7XG4gIH1cblxuICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMuWikpIHtcbiAgICBpZiAoIXpvbmUpIHtcbiAgICAgIHpvbmUgPSBuZXcgRml4ZWRPZmZzZXRab25lKG1hdGNoZXMuWik7XG4gICAgfVxuICAgIHNwZWNpZmljT2Zmc2V0ID0gbWF0Y2hlcy5aO1xuICB9XG5cbiAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnEpKSB7XG4gICAgbWF0Y2hlcy5NID0gKG1hdGNoZXMucSAtIDEpICogMyArIDE7XG4gIH1cblxuICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMuaCkpIHtcbiAgICBpZiAobWF0Y2hlcy5oIDwgMTIgJiYgbWF0Y2hlcy5hID09PSAxKSB7XG4gICAgICBtYXRjaGVzLmggKz0gMTI7XG4gICAgfSBlbHNlIGlmIChtYXRjaGVzLmggPT09IDEyICYmIG1hdGNoZXMuYSA9PT0gMCkge1xuICAgICAgbWF0Y2hlcy5oID0gMDtcbiAgICB9XG4gIH1cblxuICBpZiAobWF0Y2hlcy5HID09PSAwICYmIG1hdGNoZXMueSkge1xuICAgIG1hdGNoZXMueSA9IC1tYXRjaGVzLnk7XG4gIH1cblxuICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMudSkpIHtcbiAgICBtYXRjaGVzLlMgPSBwYXJzZU1pbGxpcyhtYXRjaGVzLnUpO1xuICB9XG5cbiAgY29uc3QgdmFscyA9IE9iamVjdC5rZXlzKG1hdGNoZXMpLnJlZHVjZSgociwgaykgPT4ge1xuICAgIGNvbnN0IGYgPSB0b0ZpZWxkKGspO1xuICAgIGlmIChmKSB7XG4gICAgICByW2ZdID0gbWF0Y2hlc1trXTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfSwge30pO1xuXG4gIHJldHVybiBbdmFscywgem9uZSwgc3BlY2lmaWNPZmZzZXRdO1xufVxuXG5sZXQgZHVtbXlEYXRlVGltZUNhY2hlID0gbnVsbDtcblxuZnVuY3Rpb24gZ2V0RHVtbXlEYXRlVGltZSgpIHtcbiAgaWYgKCFkdW1teURhdGVUaW1lQ2FjaGUpIHtcbiAgICBkdW1teURhdGVUaW1lQ2FjaGUgPSBEYXRlVGltZS5mcm9tTWlsbGlzKDE1NTU1NTU1NTU1NTUpO1xuICB9XG5cbiAgcmV0dXJuIGR1bW15RGF0ZVRpbWVDYWNoZTtcbn1cblxuZnVuY3Rpb24gbWF5YmVFeHBhbmRNYWNyb1Rva2VuKHRva2VuLCBsb2NhbGUpIHtcbiAgaWYgKHRva2VuLmxpdGVyYWwpIHtcbiAgICByZXR1cm4gdG9rZW47XG4gIH1cblxuICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4udmFsKTtcblxuICBpZiAoIWZvcm1hdE9wdHMpIHtcbiAgICByZXR1cm4gdG9rZW47XG4gIH1cblxuICBjb25zdCBmb3JtYXR0ZXIgPSBGb3JtYXR0ZXIuY3JlYXRlKGxvY2FsZSwgZm9ybWF0T3B0cyk7XG4gIGNvbnN0IHBhcnRzID0gZm9ybWF0dGVyLmZvcm1hdERhdGVUaW1lUGFydHMoZ2V0RHVtbXlEYXRlVGltZSgpKTtcblxuICBjb25zdCB0b2tlbnMgPSBwYXJ0cy5tYXAoKHApID0+IHRva2VuRm9yUGFydChwLCBsb2NhbGUsIGZvcm1hdE9wdHMpKTtcblxuICBpZiAodG9rZW5zLmluY2x1ZGVzKHVuZGVmaW5lZCkpIHtcbiAgICByZXR1cm4gdG9rZW47XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufVxuXG5mdW5jdGlvbiBleHBhbmRNYWNyb1Rva2Vucyh0b2tlbnMsIGxvY2FsZSkge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi50b2tlbnMubWFwKCh0KSA9PiBtYXliZUV4cGFuZE1hY3JvVG9rZW4odCwgbG9jYWxlKSkpO1xufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cGxhaW5Gcm9tVG9rZW5zKGxvY2FsZSwgaW5wdXQsIGZvcm1hdCkge1xuICBjb25zdCB0b2tlbnMgPSBleHBhbmRNYWNyb1Rva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm9ybWF0KSwgbG9jYWxlKSxcbiAgICB1bml0cyA9IHRva2Vucy5tYXAoKHQpID0+IHVuaXRGb3JUb2tlbih0LCBsb2NhbGUpKSxcbiAgICBkaXNxdWFsaWZ5aW5nVW5pdCA9IHVuaXRzLmZpbmQoKHQpID0+IHQuaW52YWxpZFJlYXNvbik7XG5cbiAgaWYgKGRpc3F1YWxpZnlpbmdVbml0KSB7XG4gICAgcmV0dXJuIHsgaW5wdXQsIHRva2VucywgaW52YWxpZFJlYXNvbjogZGlzcXVhbGlmeWluZ1VuaXQuaW52YWxpZFJlYXNvbiB9O1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IFtyZWdleFN0cmluZywgaGFuZGxlcnNdID0gYnVpbGRSZWdleCh1bml0cyksXG4gICAgICByZWdleCA9IFJlZ0V4cChyZWdleFN0cmluZywgXCJpXCIpLFxuICAgICAgW3Jhd01hdGNoZXMsIG1hdGNoZXNdID0gbWF0Y2goaW5wdXQsIHJlZ2V4LCBoYW5kbGVycyksXG4gICAgICBbcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldF0gPSBtYXRjaGVzXG4gICAgICAgID8gZGF0ZVRpbWVGcm9tTWF0Y2hlcyhtYXRjaGVzKVxuICAgICAgICA6IFtudWxsLCBudWxsLCB1bmRlZmluZWRdO1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eShtYXRjaGVzLCBcImFcIikgJiYgaGFzT3duUHJvcGVydHkobWF0Y2hlcywgXCJIXCIpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoXG4gICAgICAgIFwiQ2FuJ3QgaW5jbHVkZSBtZXJpZGllbSB3aGVuIHNwZWNpZnlpbmcgMjQtaG91ciBmb3JtYXRcIlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgaW5wdXQsIHRva2VucywgcmVnZXgsIHJhd01hdGNoZXMsIG1hdGNoZXMsIHJlc3VsdCwgem9uZSwgc3BlY2lmaWNPZmZzZXQgfTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VGcm9tVG9rZW5zKGxvY2FsZSwgaW5wdXQsIGZvcm1hdCkge1xuICBjb25zdCB7IHJlc3VsdCwgem9uZSwgc3BlY2lmaWNPZmZzZXQsIGludmFsaWRSZWFzb24gfSA9IGV4cGxhaW5Gcm9tVG9rZW5zKGxvY2FsZSwgaW5wdXQsIGZvcm1hdCk7XG4gIHJldHVybiBbcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZFJlYXNvbl07XG59XG4iLCAiaW1wb3J0IHtcbiAgaW50ZWdlckJldHdlZW4sXG4gIGlzTGVhcFllYXIsXG4gIHRpbWVPYmplY3QsXG4gIGRheXNJblllYXIsXG4gIGRheXNJbk1vbnRoLFxuICB3ZWVrc0luV2Vla1llYXIsXG4gIGlzSW50ZWdlcixcbn0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuaW1wb3J0IEludmFsaWQgZnJvbSBcIi4vaW52YWxpZC5qc1wiO1xuXG5jb25zdCBub25MZWFwTGFkZGVyID0gWzAsIDMxLCA1OSwgOTAsIDEyMCwgMTUxLCAxODEsIDIxMiwgMjQzLCAyNzMsIDMwNCwgMzM0XSxcbiAgbGVhcExhZGRlciA9IFswLCAzMSwgNjAsIDkxLCAxMjEsIDE1MiwgMTgyLCAyMTMsIDI0NCwgMjc0LCAzMDUsIDMzNV07XG5cbmZ1bmN0aW9uIHVuaXRPdXRPZlJhbmdlKHVuaXQsIHZhbHVlKSB7XG4gIHJldHVybiBuZXcgSW52YWxpZChcbiAgICBcInVuaXQgb3V0IG9mIHJhbmdlXCIsXG4gICAgYHlvdSBzcGVjaWZpZWQgJHt2YWx1ZX0gKG9mIHR5cGUgJHt0eXBlb2YgdmFsdWV9KSBhcyBhICR7dW5pdH0sIHdoaWNoIGlzIGludmFsaWRgXG4gICk7XG59XG5cbmZ1bmN0aW9uIGRheU9mV2Vlayh5ZWFyLCBtb250aCwgZGF5KSB7XG4gIGNvbnN0IGpzID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGggLSAxLCBkYXkpKS5nZXRVVENEYXkoKTtcbiAgcmV0dXJuIGpzID09PSAwID8gNyA6IGpzO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlT3JkaW5hbCh5ZWFyLCBtb250aCwgZGF5KSB7XG4gIHJldHVybiBkYXkgKyAoaXNMZWFwWWVhcih5ZWFyKSA/IGxlYXBMYWRkZXIgOiBub25MZWFwTGFkZGVyKVttb250aCAtIDFdO1xufVxuXG5mdW5jdGlvbiB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpIHtcbiAgY29uc3QgdGFibGUgPSBpc0xlYXBZZWFyKHllYXIpID8gbGVhcExhZGRlciA6IG5vbkxlYXBMYWRkZXIsXG4gICAgbW9udGgwID0gdGFibGUuZmluZEluZGV4KChpKSA9PiBpIDwgb3JkaW5hbCksXG4gICAgZGF5ID0gb3JkaW5hbCAtIHRhYmxlW21vbnRoMF07XG4gIHJldHVybiB7IG1vbnRoOiBtb250aDAgKyAxLCBkYXkgfTtcbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBncmVnb3JpYW5Ub1dlZWsoZ3JlZ09iaikge1xuICBjb25zdCB7IHllYXIsIG1vbnRoLCBkYXkgfSA9IGdyZWdPYmosXG4gICAgb3JkaW5hbCA9IGNvbXB1dGVPcmRpbmFsKHllYXIsIG1vbnRoLCBkYXkpLFxuICAgIHdlZWtkYXkgPSBkYXlPZldlZWsoeWVhciwgbW9udGgsIGRheSk7XG5cbiAgbGV0IHdlZWtOdW1iZXIgPSBNYXRoLmZsb29yKChvcmRpbmFsIC0gd2Vla2RheSArIDEwKSAvIDcpLFxuICAgIHdlZWtZZWFyO1xuXG4gIGlmICh3ZWVrTnVtYmVyIDwgMSkge1xuICAgIHdlZWtZZWFyID0geWVhciAtIDE7XG4gICAgd2Vla051bWJlciA9IHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcik7XG4gIH0gZWxzZSBpZiAod2Vla051bWJlciA+IHdlZWtzSW5XZWVrWWVhcih5ZWFyKSkge1xuICAgIHdlZWtZZWFyID0geWVhciArIDE7XG4gICAgd2Vla051bWJlciA9IDE7XG4gIH0gZWxzZSB7XG4gICAgd2Vla1llYXIgPSB5ZWFyO1xuICB9XG5cbiAgcmV0dXJuIHsgd2Vla1llYXIsIHdlZWtOdW1iZXIsIHdlZWtkYXksIC4uLnRpbWVPYmplY3QoZ3JlZ09iaikgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlZWtUb0dyZWdvcmlhbih3ZWVrRGF0YSkge1xuICBjb25zdCB7IHdlZWtZZWFyLCB3ZWVrTnVtYmVyLCB3ZWVrZGF5IH0gPSB3ZWVrRGF0YSxcbiAgICB3ZWVrZGF5T2ZKYW40ID0gZGF5T2ZXZWVrKHdlZWtZZWFyLCAxLCA0KSxcbiAgICB5ZWFySW5EYXlzID0gZGF5c0luWWVhcih3ZWVrWWVhcik7XG5cbiAgbGV0IG9yZGluYWwgPSB3ZWVrTnVtYmVyICogNyArIHdlZWtkYXkgLSB3ZWVrZGF5T2ZKYW40IC0gMyxcbiAgICB5ZWFyO1xuXG4gIGlmIChvcmRpbmFsIDwgMSkge1xuICAgIHllYXIgPSB3ZWVrWWVhciAtIDE7XG4gICAgb3JkaW5hbCArPSBkYXlzSW5ZZWFyKHllYXIpO1xuICB9IGVsc2UgaWYgKG9yZGluYWwgPiB5ZWFySW5EYXlzKSB7XG4gICAgeWVhciA9IHdlZWtZZWFyICsgMTtcbiAgICBvcmRpbmFsIC09IGRheXNJblllYXIod2Vla1llYXIpO1xuICB9IGVsc2Uge1xuICAgIHllYXIgPSB3ZWVrWWVhcjtcbiAgfVxuXG4gIGNvbnN0IHsgbW9udGgsIGRheSB9ID0gdW5jb21wdXRlT3JkaW5hbCh5ZWFyLCBvcmRpbmFsKTtcbiAgcmV0dXJuIHsgeWVhciwgbW9udGgsIGRheSwgLi4udGltZU9iamVjdCh3ZWVrRGF0YSkgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdyZWdvcmlhblRvT3JkaW5hbChncmVnRGF0YSkge1xuICBjb25zdCB7IHllYXIsIG1vbnRoLCBkYXkgfSA9IGdyZWdEYXRhO1xuICBjb25zdCBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSk7XG4gIHJldHVybiB7IHllYXIsIG9yZGluYWwsIC4uLnRpbWVPYmplY3QoZ3JlZ0RhdGEpIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcmRpbmFsVG9HcmVnb3JpYW4ob3JkaW5hbERhdGEpIHtcbiAgY29uc3QgeyB5ZWFyLCBvcmRpbmFsIH0gPSBvcmRpbmFsRGF0YTtcbiAgY29uc3QgeyBtb250aCwgZGF5IH0gPSB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpO1xuICByZXR1cm4geyB5ZWFyLCBtb250aCwgZGF5LCAuLi50aW1lT2JqZWN0KG9yZGluYWxEYXRhKSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzSW52YWxpZFdlZWtEYXRhKG9iaikge1xuICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLndlZWtZZWFyKSxcbiAgICB2YWxpZFdlZWsgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla051bWJlciwgMSwgd2Vla3NJbldlZWtZZWFyKG9iai53ZWVrWWVhcikpLFxuICAgIHZhbGlkV2Vla2RheSA9IGludGVnZXJCZXR3ZWVuKG9iai53ZWVrZGF5LCAxLCA3KTtcblxuICBpZiAoIXZhbGlkWWVhcikge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcIndlZWtZZWFyXCIsIG9iai53ZWVrWWVhcik7XG4gIH0gZWxzZSBpZiAoIXZhbGlkV2Vlaykge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcIndlZWtcIiwgb2JqLndlZWspO1xuICB9IGVsc2UgaWYgKCF2YWxpZFdlZWtkYXkpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJ3ZWVrZGF5XCIsIG9iai53ZWVrZGF5KTtcbiAgfSBlbHNlIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0ludmFsaWRPcmRpbmFsRGF0YShvYmopIHtcbiAgY29uc3QgdmFsaWRZZWFyID0gaXNJbnRlZ2VyKG9iai55ZWFyKSxcbiAgICB2YWxpZE9yZGluYWwgPSBpbnRlZ2VyQmV0d2VlbihvYmoub3JkaW5hbCwgMSwgZGF5c0luWWVhcihvYmoueWVhcikpO1xuXG4gIGlmICghdmFsaWRZZWFyKSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwieWVhclwiLCBvYmoueWVhcik7XG4gIH0gZWxzZSBpZiAoIXZhbGlkT3JkaW5hbCkge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcIm9yZGluYWxcIiwgb2JqLm9yZGluYWwpO1xuICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB7XG4gIGNvbnN0IHZhbGlkWWVhciA9IGlzSW50ZWdlcihvYmoueWVhciksXG4gICAgdmFsaWRNb250aCA9IGludGVnZXJCZXR3ZWVuKG9iai5tb250aCwgMSwgMTIpLFxuICAgIHZhbGlkRGF5ID0gaW50ZWdlckJldHdlZW4ob2JqLmRheSwgMSwgZGF5c0luTW9udGgob2JqLnllYXIsIG9iai5tb250aCkpO1xuXG4gIGlmICghdmFsaWRZZWFyKSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwieWVhclwiLCBvYmoueWVhcik7XG4gIH0gZWxzZSBpZiAoIXZhbGlkTW9udGgpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJtb250aFwiLCBvYmoubW9udGgpO1xuICB9IGVsc2UgaWYgKCF2YWxpZERheSkge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcImRheVwiLCBvYmouZGF5KTtcbiAgfSBlbHNlIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0ludmFsaWRUaW1lRGF0YShvYmopIHtcbiAgY29uc3QgeyBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQgfSA9IG9iajtcbiAgY29uc3QgdmFsaWRIb3VyID1cbiAgICAgIGludGVnZXJCZXR3ZWVuKGhvdXIsIDAsIDIzKSB8fFxuICAgICAgKGhvdXIgPT09IDI0ICYmIG1pbnV0ZSA9PT0gMCAmJiBzZWNvbmQgPT09IDAgJiYgbWlsbGlzZWNvbmQgPT09IDApLFxuICAgIHZhbGlkTWludXRlID0gaW50ZWdlckJldHdlZW4obWludXRlLCAwLCA1OSksXG4gICAgdmFsaWRTZWNvbmQgPSBpbnRlZ2VyQmV0d2VlbihzZWNvbmQsIDAsIDU5KSxcbiAgICB2YWxpZE1pbGxpc2Vjb25kID0gaW50ZWdlckJldHdlZW4obWlsbGlzZWNvbmQsIDAsIDk5OSk7XG5cbiAgaWYgKCF2YWxpZEhvdXIpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJob3VyXCIsIGhvdXIpO1xuICB9IGVsc2UgaWYgKCF2YWxpZE1pbnV0ZSkge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcIm1pbnV0ZVwiLCBtaW51dGUpO1xuICB9IGVsc2UgaWYgKCF2YWxpZFNlY29uZCkge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcInNlY29uZFwiLCBzZWNvbmQpO1xuICB9IGVsc2UgaWYgKCF2YWxpZE1pbGxpc2Vjb25kKSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwibWlsbGlzZWNvbmRcIiwgbWlsbGlzZWNvbmQpO1xuICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xufVxuIiwgImltcG9ydCBEdXJhdGlvbiBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuaW1wb3J0IEludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3MuanNcIjtcbmltcG9ydCBJbmZvIGZyb20gXCIuL2luZm8uanNcIjtcbmltcG9ydCBGb3JtYXR0ZXIgZnJvbSBcIi4vaW1wbC9mb3JtYXR0ZXIuanNcIjtcbmltcG9ydCBGaXhlZE9mZnNldFpvbmUgZnJvbSBcIi4vem9uZXMvZml4ZWRPZmZzZXRab25lLmpzXCI7XG5pbXBvcnQgTG9jYWxlIGZyb20gXCIuL2ltcGwvbG9jYWxlLmpzXCI7XG5pbXBvcnQge1xuICBpc1VuZGVmaW5lZCxcbiAgbWF5YmVBcnJheSxcbiAgaXNEYXRlLFxuICBpc051bWJlcixcbiAgYmVzdEJ5LFxuICBkYXlzSW5Nb250aCxcbiAgZGF5c0luWWVhcixcbiAgaXNMZWFwWWVhcixcbiAgd2Vla3NJbldlZWtZZWFyLFxuICBub3JtYWxpemVPYmplY3QsXG4gIHJvdW5kVG8sXG4gIG9ialRvTG9jYWxUUyxcbiAgcGFkU3RhcnQsXG59IGZyb20gXCIuL2ltcGwvdXRpbC5qc1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplWm9uZSB9IGZyb20gXCIuL2ltcGwvem9uZVV0aWwuanNcIjtcbmltcG9ydCBkaWZmIGZyb20gXCIuL2ltcGwvZGlmZi5qc1wiO1xuaW1wb3J0IHsgcGFyc2VSRkMyODIyRGF0ZSwgcGFyc2VJU09EYXRlLCBwYXJzZUhUVFBEYXRlLCBwYXJzZVNRTCB9IGZyb20gXCIuL2ltcGwvcmVnZXhQYXJzZXIuanNcIjtcbmltcG9ydCB7IHBhcnNlRnJvbVRva2VucywgZXhwbGFpbkZyb21Ub2tlbnMgfSBmcm9tIFwiLi9pbXBsL3Rva2VuUGFyc2VyLmpzXCI7XG5pbXBvcnQge1xuICBncmVnb3JpYW5Ub1dlZWssXG4gIHdlZWtUb0dyZWdvcmlhbixcbiAgZ3JlZ29yaWFuVG9PcmRpbmFsLFxuICBvcmRpbmFsVG9HcmVnb3JpYW4sXG4gIGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhLFxuICBoYXNJbnZhbGlkV2Vla0RhdGEsXG4gIGhhc0ludmFsaWRPcmRpbmFsRGF0YSxcbiAgaGFzSW52YWxpZFRpbWVEYXRhLFxufSBmcm9tIFwiLi9pbXBsL2NvbnZlcnNpb25zLmpzXCI7XG5pbXBvcnQgKiBhcyBGb3JtYXRzIGZyb20gXCIuL2ltcGwvZm9ybWF0cy5qc1wiO1xuaW1wb3J0IHtcbiAgSW52YWxpZEFyZ3VtZW50RXJyb3IsXG4gIENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yLFxuICBJbnZhbGlkVW5pdEVycm9yLFxuICBJbnZhbGlkRGF0ZVRpbWVFcnJvcixcbn0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5pbXBvcnQgSW52YWxpZCBmcm9tIFwiLi9pbXBsL2ludmFsaWQuanNcIjtcblxuY29uc3QgSU5WQUxJRCA9IFwiSW52YWxpZCBEYXRlVGltZVwiO1xuY29uc3QgTUFYX0RBVEUgPSA4LjY0ZTE1O1xuXG5mdW5jdGlvbiB1bnN1cHBvcnRlZFpvbmUoem9uZSkge1xuICByZXR1cm4gbmV3IEludmFsaWQoXCJ1bnN1cHBvcnRlZCB6b25lXCIsIGB0aGUgem9uZSBcIiR7em9uZS5uYW1lfVwiIGlzIG5vdCBzdXBwb3J0ZWRgKTtcbn1cblxuLy8gd2UgY2FjaGUgd2VlayBkYXRhIG9uIHRoZSBEVCBvYmplY3QgYW5kIHRoaXMgaW50ZXJtZWRpYXRlcyB0aGUgY2FjaGVcbmZ1bmN0aW9uIHBvc3NpYmx5Q2FjaGVkV2Vla0RhdGEoZHQpIHtcbiAgaWYgKGR0LndlZWtEYXRhID09PSBudWxsKSB7XG4gICAgZHQud2Vla0RhdGEgPSBncmVnb3JpYW5Ub1dlZWsoZHQuYyk7XG4gIH1cbiAgcmV0dXJuIGR0LndlZWtEYXRhO1xufVxuXG4vLyBjbG9uZSByZWFsbHkgbWVhbnMsIFwibWFrZSBhIG5ldyBvYmplY3Qgd2l0aCB0aGVzZSBtb2RpZmljYXRpb25zXCIuIGFsbCBcInNldHRlcnNcIiByZWFsbHkgdXNlIHRoaXNcbi8vIHRvIGNyZWF0ZSBhIG5ldyBvYmplY3Qgd2hpbGUgb25seSBjaGFuZ2luZyBzb21lIG9mIHRoZSBwcm9wZXJ0aWVzXG5mdW5jdGlvbiBjbG9uZShpbnN0LCBhbHRzKSB7XG4gIGNvbnN0IGN1cnJlbnQgPSB7XG4gICAgdHM6IGluc3QudHMsXG4gICAgem9uZTogaW5zdC56b25lLFxuICAgIGM6IGluc3QuYyxcbiAgICBvOiBpbnN0Lm8sXG4gICAgbG9jOiBpbnN0LmxvYyxcbiAgICBpbnZhbGlkOiBpbnN0LmludmFsaWQsXG4gIH07XG4gIHJldHVybiBuZXcgRGF0ZVRpbWUoeyAuLi5jdXJyZW50LCAuLi5hbHRzLCBvbGQ6IGN1cnJlbnQgfSk7XG59XG5cbi8vIGZpbmQgdGhlIHJpZ2h0IG9mZnNldCBhIGdpdmVuIGxvY2FsIHRpbWUuIFRoZSBvIGlucHV0IGlzIG91ciBndWVzcywgd2hpY2ggZGV0ZXJtaW5lcyB3aGljaFxuLy8gb2Zmc2V0IHdlJ2xsIHBpY2sgaW4gYW1iaWd1b3VzIGNhc2VzIChlLmcuIHRoZXJlIGFyZSB0d28gMyBBTXMgYi9jIEZhbGxiYWNrIERTVClcbmZ1bmN0aW9uIGZpeE9mZnNldChsb2NhbFRTLCBvLCB0eikge1xuICAvLyBPdXIgVVRDIHRpbWUgaXMganVzdCBhIGd1ZXNzIGJlY2F1c2Ugb3VyIG9mZnNldCBpcyBqdXN0IGEgZ3Vlc3NcbiAgbGV0IHV0Y0d1ZXNzID0gbG9jYWxUUyAtIG8gKiA2MCAqIDEwMDA7XG5cbiAgLy8gVGVzdCB3aGV0aGVyIHRoZSB6b25lIG1hdGNoZXMgdGhlIG9mZnNldCBmb3IgdGhpcyB0c1xuICBjb25zdCBvMiA9IHR6Lm9mZnNldCh1dGNHdWVzcyk7XG5cbiAgLy8gSWYgc28sIG9mZnNldCBkaWRuJ3QgY2hhbmdlIGFuZCB3ZSdyZSBkb25lXG4gIGlmIChvID09PSBvMikge1xuICAgIHJldHVybiBbdXRjR3Vlc3MsIG9dO1xuICB9XG5cbiAgLy8gSWYgbm90LCBjaGFuZ2UgdGhlIHRzIGJ5IHRoZSBkaWZmZXJlbmNlIGluIHRoZSBvZmZzZXRcbiAgdXRjR3Vlc3MgLT0gKG8yIC0gbykgKiA2MCAqIDEwMDA7XG5cbiAgLy8gSWYgdGhhdCBnaXZlcyB1cyB0aGUgbG9jYWwgdGltZSB3ZSB3YW50LCB3ZSdyZSBkb25lXG4gIGNvbnN0IG8zID0gdHoub2Zmc2V0KHV0Y0d1ZXNzKTtcbiAgaWYgKG8yID09PSBvMykge1xuICAgIHJldHVybiBbdXRjR3Vlc3MsIG8yXTtcbiAgfVxuXG4gIC8vIElmIGl0J3MgZGlmZmVyZW50LCB3ZSdyZSBpbiBhIGhvbGUgdGltZS4gVGhlIG9mZnNldCBoYXMgY2hhbmdlZCwgYnV0IHRoZSB3ZSBkb24ndCBhZGp1c3QgdGhlIHRpbWVcbiAgcmV0dXJuIFtsb2NhbFRTIC0gTWF0aC5taW4obzIsIG8zKSAqIDYwICogMTAwMCwgTWF0aC5tYXgobzIsIG8zKV07XG59XG5cbi8vIGNvbnZlcnQgYW4gZXBvY2ggdGltZXN0YW1wIGludG8gYSBjYWxlbmRhciBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gb2Zmc2V0XG5mdW5jdGlvbiB0c1RvT2JqKHRzLCBvZmZzZXQpIHtcbiAgdHMgKz0gb2Zmc2V0ICogNjAgKiAxMDAwO1xuXG4gIGNvbnN0IGQgPSBuZXcgRGF0ZSh0cyk7XG5cbiAgcmV0dXJuIHtcbiAgICB5ZWFyOiBkLmdldFVUQ0Z1bGxZZWFyKCksXG4gICAgbW9udGg6IGQuZ2V0VVRDTW9udGgoKSArIDEsXG4gICAgZGF5OiBkLmdldFVUQ0RhdGUoKSxcbiAgICBob3VyOiBkLmdldFVUQ0hvdXJzKCksXG4gICAgbWludXRlOiBkLmdldFVUQ01pbnV0ZXMoKSxcbiAgICBzZWNvbmQ6IGQuZ2V0VVRDU2Vjb25kcygpLFxuICAgIG1pbGxpc2Vjb25kOiBkLmdldFVUQ01pbGxpc2Vjb25kcygpLFxuICB9O1xufVxuXG4vLyBjb252ZXJ0IGEgY2FsZW5kYXIgb2JqZWN0IHRvIGEgZXBvY2ggdGltZXN0YW1wXG5mdW5jdGlvbiBvYmpUb1RTKG9iaiwgb2Zmc2V0LCB6b25lKSB7XG4gIHJldHVybiBmaXhPZmZzZXQob2JqVG9Mb2NhbFRTKG9iaiksIG9mZnNldCwgem9uZSk7XG59XG5cbi8vIGNyZWF0ZSBhIG5ldyBEVCBpbnN0YW5jZSBieSBhZGRpbmcgYSBkdXJhdGlvbiwgYWRqdXN0aW5nIGZvciBEU1RzXG5mdW5jdGlvbiBhZGp1c3RUaW1lKGluc3QsIGR1cikge1xuICBjb25zdCBvUHJlID0gaW5zdC5vLFxuICAgIHllYXIgPSBpbnN0LmMueWVhciArIE1hdGgudHJ1bmMoZHVyLnllYXJzKSxcbiAgICBtb250aCA9IGluc3QuYy5tb250aCArIE1hdGgudHJ1bmMoZHVyLm1vbnRocykgKyBNYXRoLnRydW5jKGR1ci5xdWFydGVycykgKiAzLFxuICAgIGMgPSB7XG4gICAgICAuLi5pbnN0LmMsXG4gICAgICB5ZWFyLFxuICAgICAgbW9udGgsXG4gICAgICBkYXk6XG4gICAgICAgIE1hdGgubWluKGluc3QuYy5kYXksIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSkgK1xuICAgICAgICBNYXRoLnRydW5jKGR1ci5kYXlzKSArXG4gICAgICAgIE1hdGgudHJ1bmMoZHVyLndlZWtzKSAqIDcsXG4gICAgfSxcbiAgICBtaWxsaXNUb0FkZCA9IER1cmF0aW9uLmZyb21PYmplY3Qoe1xuICAgICAgeWVhcnM6IGR1ci55ZWFycyAtIE1hdGgudHJ1bmMoZHVyLnllYXJzKSxcbiAgICAgIHF1YXJ0ZXJzOiBkdXIucXVhcnRlcnMgLSBNYXRoLnRydW5jKGR1ci5xdWFydGVycyksXG4gICAgICBtb250aHM6IGR1ci5tb250aHMgLSBNYXRoLnRydW5jKGR1ci5tb250aHMpLFxuICAgICAgd2Vla3M6IGR1ci53ZWVrcyAtIE1hdGgudHJ1bmMoZHVyLndlZWtzKSxcbiAgICAgIGRheXM6IGR1ci5kYXlzIC0gTWF0aC50cnVuYyhkdXIuZGF5cyksXG4gICAgICBob3VyczogZHVyLmhvdXJzLFxuICAgICAgbWludXRlczogZHVyLm1pbnV0ZXMsXG4gICAgICBzZWNvbmRzOiBkdXIuc2Vjb25kcyxcbiAgICAgIG1pbGxpc2Vjb25kczogZHVyLm1pbGxpc2Vjb25kcyxcbiAgICB9KS5hcyhcIm1pbGxpc2Vjb25kc1wiKSxcbiAgICBsb2NhbFRTID0gb2JqVG9Mb2NhbFRTKGMpO1xuXG4gIGxldCBbdHMsIG9dID0gZml4T2Zmc2V0KGxvY2FsVFMsIG9QcmUsIGluc3Quem9uZSk7XG5cbiAgaWYgKG1pbGxpc1RvQWRkICE9PSAwKSB7XG4gICAgdHMgKz0gbWlsbGlzVG9BZGQ7XG4gICAgLy8gdGhhdCBjb3VsZCBoYXZlIGNoYW5nZWQgdGhlIG9mZnNldCBieSBnb2luZyBvdmVyIGEgRFNULCBidXQgd2Ugd2FudCB0byBrZWVwIHRoZSB0cyB0aGUgc2FtZVxuICAgIG8gPSBpbnN0LnpvbmUub2Zmc2V0KHRzKTtcbiAgfVxuXG4gIHJldHVybiB7IHRzLCBvIH07XG59XG5cbi8vIGhlbHBlciB1c2VmdWwgaW4gdHVybmluZyB0aGUgcmVzdWx0cyBvZiBwYXJzaW5nIGludG8gcmVhbCBkYXRlc1xuLy8gYnkgaGFuZGxpbmcgdGhlIHpvbmUgb3B0aW9uc1xuZnVuY3Rpb24gcGFyc2VEYXRhVG9EYXRlVGltZShwYXJzZWQsIHBhcnNlZFpvbmUsIG9wdHMsIGZvcm1hdCwgdGV4dCwgc3BlY2lmaWNPZmZzZXQpIHtcbiAgY29uc3QgeyBzZXRab25lLCB6b25lIH0gPSBvcHRzO1xuICBpZiAocGFyc2VkICYmIE9iamVjdC5rZXlzKHBhcnNlZCkubGVuZ3RoICE9PSAwKSB7XG4gICAgY29uc3QgaW50ZXJwcmV0YXRpb25ab25lID0gcGFyc2VkWm9uZSB8fCB6b25lLFxuICAgICAgaW5zdCA9IERhdGVUaW1lLmZyb21PYmplY3QocGFyc2VkLCB7XG4gICAgICAgIC4uLm9wdHMsXG4gICAgICAgIHpvbmU6IGludGVycHJldGF0aW9uWm9uZSxcbiAgICAgICAgc3BlY2lmaWNPZmZzZXQsXG4gICAgICB9KTtcbiAgICByZXR1cm4gc2V0Wm9uZSA/IGluc3QgOiBpbnN0LnNldFpvbmUoem9uZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoXG4gICAgICBuZXcgSW52YWxpZChcInVucGFyc2FibGVcIiwgYHRoZSBpbnB1dCBcIiR7dGV4dH1cIiBjYW4ndCBiZSBwYXJzZWQgYXMgJHtmb3JtYXR9YClcbiAgICApO1xuICB9XG59XG5cbi8vIGlmIHlvdSB3YW50IHRvIG91dHB1dCBhIHRlY2huaWNhbCBmb3JtYXQgKGUuZy4gUkZDIDI4MjIpLCB0aGlzIGhlbHBlclxuLy8gaGVscHMgaGFuZGxlIHRoZSBkZXRhaWxzXG5mdW5jdGlvbiB0b1RlY2hGb3JtYXQoZHQsIGZvcm1hdCwgYWxsb3daID0gdHJ1ZSkge1xuICByZXR1cm4gZHQuaXNWYWxpZFxuICAgID8gRm9ybWF0dGVyLmNyZWF0ZShMb2NhbGUuY3JlYXRlKFwiZW4tVVNcIiksIHtcbiAgICAgICAgYWxsb3daLFxuICAgICAgICBmb3JjZVNpbXBsZTogdHJ1ZSxcbiAgICAgIH0pLmZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyhkdCwgZm9ybWF0KVxuICAgIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gdG9JU09EYXRlKG8sIGV4dGVuZGVkKSB7XG4gIGNvbnN0IGxvbmdGb3JtYXQgPSBvLmMueWVhciA+IDk5OTkgfHwgby5jLnllYXIgPCAwO1xuICBsZXQgYyA9IFwiXCI7XG4gIGlmIChsb25nRm9ybWF0ICYmIG8uYy55ZWFyID49IDApIGMgKz0gXCIrXCI7XG4gIGMgKz0gcGFkU3RhcnQoby5jLnllYXIsIGxvbmdGb3JtYXQgPyA2IDogNCk7XG5cbiAgaWYgKGV4dGVuZGVkKSB7XG4gICAgYyArPSBcIi1cIjtcbiAgICBjICs9IHBhZFN0YXJ0KG8uYy5tb250aCk7XG4gICAgYyArPSBcIi1cIjtcbiAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpO1xuICB9IGVsc2Uge1xuICAgIGMgKz0gcGFkU3RhcnQoby5jLm1vbnRoKTtcbiAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpO1xuICB9XG4gIHJldHVybiBjO1xufVxuXG5mdW5jdGlvbiB0b0lTT1RpbWUobywgZXh0ZW5kZWQsIHN1cHByZXNzU2Vjb25kcywgc3VwcHJlc3NNaWxsaXNlY29uZHMsIGluY2x1ZGVPZmZzZXQpIHtcbiAgbGV0IGMgPSBwYWRTdGFydChvLmMuaG91cik7XG4gIGlmIChleHRlbmRlZCkge1xuICAgIGMgKz0gXCI6XCI7XG4gICAgYyArPSBwYWRTdGFydChvLmMubWludXRlKTtcbiAgICBpZiAoby5jLnNlY29uZCAhPT0gMCB8fCAhc3VwcHJlc3NTZWNvbmRzKSB7XG4gICAgICBjICs9IFwiOlwiO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpO1xuICB9XG5cbiAgaWYgKG8uYy5zZWNvbmQgIT09IDAgfHwgIXN1cHByZXNzU2Vjb25kcykge1xuICAgIGMgKz0gcGFkU3RhcnQoby5jLnNlY29uZCk7XG5cbiAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8ICFzdXBwcmVzc01pbGxpc2Vjb25kcykge1xuICAgICAgYyArPSBcIi5cIjtcbiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1pbGxpc2Vjb25kLCAzKTtcbiAgICB9XG4gIH1cblxuICBpZiAoaW5jbHVkZU9mZnNldCkge1xuICAgIGlmIChvLmlzT2Zmc2V0Rml4ZWQgJiYgby5vZmZzZXQgPT09IDApIHtcbiAgICAgIGMgKz0gXCJaXCI7XG4gICAgfSBlbHNlIGlmIChvLm8gPCAwKSB7XG4gICAgICBjICs9IFwiLVwiO1xuICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKC1vLm8gLyA2MCkpO1xuICAgICAgYyArPSBcIjpcIjtcbiAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYygtby5vICUgNjApKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYyArPSBcIitcIjtcbiAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gLyA2MCkpO1xuICAgICAgYyArPSBcIjpcIjtcbiAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gJSA2MCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYztcbn1cblxuLy8gZGVmYXVsdHMgZm9yIHVuc3BlY2lmaWVkIHVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzXG5jb25zdCBkZWZhdWx0VW5pdFZhbHVlcyA9IHtcbiAgICBtb250aDogMSxcbiAgICBkYXk6IDEsXG4gICAgaG91cjogMCxcbiAgICBtaW51dGU6IDAsXG4gICAgc2Vjb25kOiAwLFxuICAgIG1pbGxpc2Vjb25kOiAwLFxuICB9LFxuICBkZWZhdWx0V2Vla1VuaXRWYWx1ZXMgPSB7XG4gICAgd2Vla051bWJlcjogMSxcbiAgICB3ZWVrZGF5OiAxLFxuICAgIGhvdXI6IDAsXG4gICAgbWludXRlOiAwLFxuICAgIHNlY29uZDogMCxcbiAgICBtaWxsaXNlY29uZDogMCxcbiAgfSxcbiAgZGVmYXVsdE9yZGluYWxVbml0VmFsdWVzID0ge1xuICAgIG9yZGluYWw6IDEsXG4gICAgaG91cjogMCxcbiAgICBtaW51dGU6IDAsXG4gICAgc2Vjb25kOiAwLFxuICAgIG1pbGxpc2Vjb25kOiAwLFxuICB9O1xuXG4vLyBVbml0cyBpbiB0aGUgc3VwcG9ydGVkIGNhbGVuZGFycywgc29ydGVkIGJ5IGJpZ25lc3NcbmNvbnN0IG9yZGVyZWRVbml0cyA9IFtcInllYXJcIiwgXCJtb250aFwiLCBcImRheVwiLCBcImhvdXJcIiwgXCJtaW51dGVcIiwgXCJzZWNvbmRcIiwgXCJtaWxsaXNlY29uZFwiXSxcbiAgb3JkZXJlZFdlZWtVbml0cyA9IFtcbiAgICBcIndlZWtZZWFyXCIsXG4gICAgXCJ3ZWVrTnVtYmVyXCIsXG4gICAgXCJ3ZWVrZGF5XCIsXG4gICAgXCJob3VyXCIsXG4gICAgXCJtaW51dGVcIixcbiAgICBcInNlY29uZFwiLFxuICAgIFwibWlsbGlzZWNvbmRcIixcbiAgXSxcbiAgb3JkZXJlZE9yZGluYWxVbml0cyA9IFtcInllYXJcIiwgXCJvcmRpbmFsXCIsIFwiaG91clwiLCBcIm1pbnV0ZVwiLCBcInNlY29uZFwiLCBcIm1pbGxpc2Vjb25kXCJdO1xuXG4vLyBzdGFuZGFyZGl6ZSBjYXNlIGFuZCBwbHVyYWxpdHkgaW4gdW5pdHNcbmZ1bmN0aW9uIG5vcm1hbGl6ZVVuaXQodW5pdCkge1xuICBjb25zdCBub3JtYWxpemVkID0ge1xuICAgIHllYXI6IFwieWVhclwiLFxuICAgIHllYXJzOiBcInllYXJcIixcbiAgICBtb250aDogXCJtb250aFwiLFxuICAgIG1vbnRoczogXCJtb250aFwiLFxuICAgIGRheTogXCJkYXlcIixcbiAgICBkYXlzOiBcImRheVwiLFxuICAgIGhvdXI6IFwiaG91clwiLFxuICAgIGhvdXJzOiBcImhvdXJcIixcbiAgICBtaW51dGU6IFwibWludXRlXCIsXG4gICAgbWludXRlczogXCJtaW51dGVcIixcbiAgICBxdWFydGVyOiBcInF1YXJ0ZXJcIixcbiAgICBxdWFydGVyczogXCJxdWFydGVyXCIsXG4gICAgc2Vjb25kOiBcInNlY29uZFwiLFxuICAgIHNlY29uZHM6IFwic2Vjb25kXCIsXG4gICAgbWlsbGlzZWNvbmQ6IFwibWlsbGlzZWNvbmRcIixcbiAgICBtaWxsaXNlY29uZHM6IFwibWlsbGlzZWNvbmRcIixcbiAgICB3ZWVrZGF5OiBcIndlZWtkYXlcIixcbiAgICB3ZWVrZGF5czogXCJ3ZWVrZGF5XCIsXG4gICAgd2Vla251bWJlcjogXCJ3ZWVrTnVtYmVyXCIsXG4gICAgd2Vla3NudW1iZXI6IFwid2Vla051bWJlclwiLFxuICAgIHdlZWtudW1iZXJzOiBcIndlZWtOdW1iZXJcIixcbiAgICB3ZWVreWVhcjogXCJ3ZWVrWWVhclwiLFxuICAgIHdlZWt5ZWFyczogXCJ3ZWVrWWVhclwiLFxuICAgIG9yZGluYWw6IFwib3JkaW5hbFwiLFxuICB9W3VuaXQudG9Mb3dlckNhc2UoKV07XG5cbiAgaWYgKCFub3JtYWxpemVkKSB0aHJvdyBuZXcgSW52YWxpZFVuaXRFcnJvcih1bml0KTtcblxuICByZXR1cm4gbm9ybWFsaXplZDtcbn1cblxuLy8gdGhpcyBpcyBhIGR1bWJlZCBkb3duIHZlcnNpb24gb2YgZnJvbU9iamVjdCgpIHRoYXQgcnVucyBhYm91dCA2MCUgZmFzdGVyXG4vLyBidXQgZG9lc24ndCBkbyBhbnkgdmFsaWRhdGlvbiwgbWFrZXMgYSBidW5jaCBvZiBhc3N1bXB0aW9ucyBhYm91dCB3aGF0IHVuaXRzXG4vLyBhcmUgcHJlc2VudCwgYW5kIHNvIG9uLlxuXG4vLyB0aGlzIGlzIGEgZHVtYmVkIGRvd24gdmVyc2lvbiBvZiBmcm9tT2JqZWN0KCkgdGhhdCBydW5zIGFib3V0IDYwJSBmYXN0ZXJcbi8vIGJ1dCBkb2Vzbid0IGRvIGFueSB2YWxpZGF0aW9uLCBtYWtlcyBhIGJ1bmNoIG9mIGFzc3VtcHRpb25zIGFib3V0IHdoYXQgdW5pdHNcbi8vIGFyZSBwcmVzZW50LCBhbmQgc28gb24uXG5mdW5jdGlvbiBxdWlja0RUKG9iaiwgb3B0cykge1xuICBjb25zdCB6b25lID0gbm9ybWFsaXplWm9uZShvcHRzLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSxcbiAgICBsb2MgPSBMb2NhbGUuZnJvbU9iamVjdChvcHRzKSxcbiAgICB0c05vdyA9IFNldHRpbmdzLm5vdygpO1xuXG4gIGxldCB0cywgbztcblxuICAvLyBhc3N1bWUgd2UgaGF2ZSB0aGUgaGlnaGVyLW9yZGVyIHVuaXRzXG4gIGlmICghaXNVbmRlZmluZWQob2JqLnllYXIpKSB7XG4gICAgZm9yIChjb25zdCB1IG9mIG9yZGVyZWRVbml0cykge1xuICAgICAgaWYgKGlzVW5kZWZpbmVkKG9ialt1XSkpIHtcbiAgICAgICAgb2JqW3VdID0gZGVmYXVsdFVuaXRWYWx1ZXNbdV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaW52YWxpZCA9IGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG9iaikgfHwgaGFzSW52YWxpZFRpbWVEYXRhKG9iaik7XG4gICAgaWYgKGludmFsaWQpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKGludmFsaWQpO1xuICAgIH1cblxuICAgIGNvbnN0IG9mZnNldFByb3ZpcyA9IHpvbmUub2Zmc2V0KHRzTm93KTtcbiAgICBbdHMsIG9dID0gb2JqVG9UUyhvYmosIG9mZnNldFByb3Zpcywgem9uZSk7XG4gIH0gZWxzZSB7XG4gICAgdHMgPSB0c05vdztcbiAgfVxuXG4gIHJldHVybiBuZXcgRGF0ZVRpbWUoeyB0cywgem9uZSwgbG9jLCBvIH0pO1xufVxuXG5mdW5jdGlvbiBkaWZmUmVsYXRpdmUoc3RhcnQsIGVuZCwgb3B0cykge1xuICBjb25zdCByb3VuZCA9IGlzVW5kZWZpbmVkKG9wdHMucm91bmQpID8gdHJ1ZSA6IG9wdHMucm91bmQsXG4gICAgZm9ybWF0ID0gKGMsIHVuaXQpID0+IHtcbiAgICAgIGMgPSByb3VuZFRvKGMsIHJvdW5kIHx8IG9wdHMuY2FsZW5kYXJ5ID8gMCA6IDIsIHRydWUpO1xuICAgICAgY29uc3QgZm9ybWF0dGVyID0gZW5kLmxvYy5jbG9uZShvcHRzKS5yZWxGb3JtYXR0ZXIob3B0cyk7XG4gICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdChjLCB1bml0KTtcbiAgICB9LFxuICAgIGRpZmZlciA9ICh1bml0KSA9PiB7XG4gICAgICBpZiAob3B0cy5jYWxlbmRhcnkpIHtcbiAgICAgICAgaWYgKCFlbmQuaGFzU2FtZShzdGFydCwgdW5pdCkpIHtcbiAgICAgICAgICByZXR1cm4gZW5kLnN0YXJ0T2YodW5pdCkuZGlmZihzdGFydC5zdGFydE9mKHVuaXQpLCB1bml0KS5nZXQodW5pdCk7XG4gICAgICAgIH0gZWxzZSByZXR1cm4gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBlbmQuZGlmZihzdGFydCwgdW5pdCkuZ2V0KHVuaXQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgaWYgKG9wdHMudW5pdCkge1xuICAgIHJldHVybiBmb3JtYXQoZGlmZmVyKG9wdHMudW5pdCksIG9wdHMudW5pdCk7XG4gIH1cblxuICBmb3IgKGNvbnN0IHVuaXQgb2Ygb3B0cy51bml0cykge1xuICAgIGNvbnN0IGNvdW50ID0gZGlmZmVyKHVuaXQpO1xuICAgIGlmIChNYXRoLmFicyhjb3VudCkgPj0gMSkge1xuICAgICAgcmV0dXJuIGZvcm1hdChjb3VudCwgdW5pdCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBmb3JtYXQoc3RhcnQgPiBlbmQgPyAtMCA6IDAsIG9wdHMudW5pdHNbb3B0cy51bml0cy5sZW5ndGggLSAxXSk7XG59XG5cbmZ1bmN0aW9uIGxhc3RPcHRzKGFyZ0xpc3QpIHtcbiAgbGV0IG9wdHMgPSB7fSxcbiAgICBhcmdzO1xuICBpZiAoYXJnTGlzdC5sZW5ndGggPiAwICYmIHR5cGVvZiBhcmdMaXN0W2FyZ0xpc3QubGVuZ3RoIC0gMV0gPT09IFwib2JqZWN0XCIpIHtcbiAgICBvcHRzID0gYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdO1xuICAgIGFyZ3MgPSBBcnJheS5mcm9tKGFyZ0xpc3QpLnNsaWNlKDAsIGFyZ0xpc3QubGVuZ3RoIC0gMSk7XG4gIH0gZWxzZSB7XG4gICAgYXJncyA9IEFycmF5LmZyb20oYXJnTGlzdCk7XG4gIH1cbiAgcmV0dXJuIFtvcHRzLCBhcmdzXTtcbn1cblxuLyoqXG4gKiBBIERhdGVUaW1lIGlzIGFuIGltbXV0YWJsZSBkYXRhIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgYSBzcGVjaWZpYyBkYXRlIGFuZCB0aW1lIGFuZCBhY2NvbXBhbnlpbmcgbWV0aG9kcy4gSXQgY29udGFpbnMgY2xhc3MgYW5kIGluc3RhbmNlIG1ldGhvZHMgZm9yIGNyZWF0aW5nLCBwYXJzaW5nLCBpbnRlcnJvZ2F0aW5nLCB0cmFuc2Zvcm1pbmcsIGFuZCBmb3JtYXR0aW5nIHRoZW0uXG4gKlxuICogQSBEYXRlVGltZSBjb21wcmlzZXMgb2Y6XG4gKiAqIEEgdGltZXN0YW1wLiBFYWNoIERhdGVUaW1lIGluc3RhbmNlIHJlZmVycyB0byBhIHNwZWNpZmljIG1pbGxpc2Vjb25kIG9mIHRoZSBVbml4IGVwb2NoLlxuICogKiBBIHRpbWUgem9uZS4gRWFjaCBpbnN0YW5jZSBpcyBjb25zaWRlcmVkIGluIHRoZSBjb250ZXh0IG9mIGEgc3BlY2lmaWMgem9uZSAoYnkgZGVmYXVsdCB0aGUgbG9jYWwgc3lzdGVtJ3Mgem9uZSkuXG4gKiAqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0aGF0IGVmZmVjdCBob3cgb3V0cHV0IHN0cmluZ3MgYXJlIGZvcm1hdHRlZCwgc3VjaCBhcyBgbG9jYWxlYCwgYG51bWJlcmluZ1N5c3RlbWAsIGFuZCBgb3V0cHV0Q2FsZW5kYXJgLlxuICpcbiAqIEhlcmUgaXMgYSBicmllZiBvdmVydmlldyBvZiB0aGUgbW9zdCBjb21tb25seSB1c2VkIGZ1bmN0aW9uYWxpdHkgaXQgcHJvdmlkZXM6XG4gKlxuICogKiAqKkNyZWF0aW9uKio6IFRvIGNyZWF0ZSBhIERhdGVUaW1lIGZyb20gaXRzIGNvbXBvbmVudHMsIHVzZSBvbmUgb2YgaXRzIGZhY3RvcnkgY2xhc3MgbWV0aG9kczoge0BsaW5rIERhdGVUaW1lI2xvY2FsfSwge0BsaW5rIERhdGVUaW1lI3V0Y30sIGFuZCAobW9zdCBmbGV4aWJseSkge0BsaW5rIERhdGVUaW1lI2Zyb21PYmplY3R9LiBUbyBjcmVhdGUgb25lIGZyb20gYSBzdGFuZGFyZCBzdHJpbmcgZm9ybWF0LCB1c2Uge0BsaW5rIERhdGVUaW1lI2Zyb21JU099LCB7QGxpbmsgRGF0ZVRpbWUjZnJvbUhUVFB9LCBhbmQge0BsaW5rIERhdGVUaW1lI2Zyb21SRkMyODIyfS4gVG8gY3JlYXRlIG9uZSBmcm9tIGEgY3VzdG9tIHN0cmluZyBmb3JtYXQsIHVzZSB7QGxpbmsgRGF0ZVRpbWUjZnJvbUZvcm1hdH0uIFRvIGNyZWF0ZSBvbmUgZnJvbSBhIG5hdGl2ZSBKUyBkYXRlLCB1c2Uge0BsaW5rIERhdGVUaW1lI2Zyb21KU0RhdGV9LlxuICogKiAqKkdyZWdvcmlhbiBjYWxlbmRhciBhbmQgdGltZSoqOiBUbyBleGFtaW5lIHRoZSBHcmVnb3JpYW4gcHJvcGVydGllcyBvZiBhIERhdGVUaW1lIGluZGl2aWR1YWxseSAoaS5lIGFzIG9wcG9zZWQgdG8gY29sbGVjdGl2ZWx5IHRocm91Z2gge0BsaW5rIERhdGVUaW1lI3RvT2JqZWN0fSksIHVzZSB0aGUge0BsaW5rIERhdGVUaW1lI3llYXJ9LCB7QGxpbmsgRGF0ZVRpbWUjbW9udGh9LFxuICoge0BsaW5rIERhdGVUaW1lI2RheX0sIHtAbGluayBEYXRlVGltZSNob3VyfSwge0BsaW5rIERhdGVUaW1lI21pbnV0ZX0sIHtAbGluayBEYXRlVGltZSNzZWNvbmR9LCB7QGxpbmsgRGF0ZVRpbWUjbWlsbGlzZWNvbmR9IGFjY2Vzc29ycy5cbiAqICogKipXZWVrIGNhbGVuZGFyKio6IEZvciBJU08gd2VlayBjYWxlbmRhciBhdHRyaWJ1dGVzLCBzZWUgdGhlIHtAbGluayBEYXRlVGltZSN3ZWVrWWVhcn0sIHtAbGluayBEYXRlVGltZSN3ZWVrTnVtYmVyfSwgYW5kIHtAbGluayBEYXRlVGltZSN3ZWVrZGF5fSBhY2Nlc3NvcnMuXG4gKiAqICoqQ29uZmlndXJhdGlvbioqIFNlZSB0aGUge0BsaW5rIERhdGVUaW1lI2xvY2FsZX0gYW5kIHtAbGluayBEYXRlVGltZSNudW1iZXJpbmdTeXN0ZW19IGFjY2Vzc29ycy5cbiAqICogKipUcmFuc2Zvcm1hdGlvbioqOiBUbyB0cmFuc2Zvcm0gdGhlIERhdGVUaW1lIGludG8gb3RoZXIgRGF0ZVRpbWVzLCB1c2Uge0BsaW5rIERhdGVUaW1lI3NldH0sIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0sIHtAbGluayBEYXRlVGltZSNzZXRab25lfSwge0BsaW5rIERhdGVUaW1lI3NldExvY2FsZX0sIHtAbGluayBEYXRlVGltZS5wbHVzfSwge0BsaW5rIERhdGVUaW1lI21pbnVzfSwge0BsaW5rIERhdGVUaW1lI2VuZE9mfSwge0BsaW5rIERhdGVUaW1lI3N0YXJ0T2Z9LCB7QGxpbmsgRGF0ZVRpbWUjdG9VVEN9LCBhbmQge0BsaW5rIERhdGVUaW1lI3RvTG9jYWx9LlxuICogKiAqKk91dHB1dCoqOiBUbyBjb252ZXJ0IHRoZSBEYXRlVGltZSB0byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHVzZSB0aGUge0BsaW5rIERhdGVUaW1lI3RvUmVsYXRpdmV9LCB7QGxpbmsgRGF0ZVRpbWUjdG9SZWxhdGl2ZUNhbGVuZGFyfSwge0BsaW5rIERhdGVUaW1lI3RvSlNPTn0sIHtAbGluayBEYXRlVGltZSN0b0lTT30sIHtAbGluayBEYXRlVGltZSN0b0hUVFB9LCB7QGxpbmsgRGF0ZVRpbWUjdG9PYmplY3R9LCB7QGxpbmsgRGF0ZVRpbWUjdG9SRkMyODIyfSwge0BsaW5rIERhdGVUaW1lI3RvU3RyaW5nfSwge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSwge0BsaW5rIERhdGVUaW1lI3RvRm9ybWF0fSwge0BsaW5rIERhdGVUaW1lI3RvTWlsbGlzfSBhbmQge0BsaW5rIERhdGVUaW1lI3RvSlNEYXRlfS5cbiAqXG4gKiBUaGVyZSdzIHBsZW50eSBvdGhlcnMgZG9jdW1lbnRlZCBiZWxvdy4gSW4gYWRkaXRpb24sIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN1YnRsZXIgdG9waWNzIGxpa2UgaW50ZXJuYXRpb25hbGl6YXRpb24sIHRpbWUgem9uZXMsIGFsdGVybmF0aXZlIGNhbGVuZGFycywgdmFsaWRpdHksIGFuZCBzbyBvbiwgc2VlIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0aW9uLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEYXRlVGltZSB7XG4gIC8qKlxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIGNvbnN0IHpvbmUgPSBjb25maWcuem9uZSB8fCBTZXR0aW5ncy5kZWZhdWx0Wm9uZTtcblxuICAgIGxldCBpbnZhbGlkID1cbiAgICAgIGNvbmZpZy5pbnZhbGlkIHx8XG4gICAgICAoTnVtYmVyLmlzTmFOKGNvbmZpZy50cykgPyBuZXcgSW52YWxpZChcImludmFsaWQgaW5wdXRcIikgOiBudWxsKSB8fFxuICAgICAgKCF6b25lLmlzVmFsaWQgPyB1bnN1cHBvcnRlZFpvbmUoem9uZSkgOiBudWxsKTtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLnRzID0gaXNVbmRlZmluZWQoY29uZmlnLnRzKSA/IFNldHRpbmdzLm5vdygpIDogY29uZmlnLnRzO1xuXG4gICAgbGV0IGMgPSBudWxsLFxuICAgICAgbyA9IG51bGw7XG4gICAgaWYgKCFpbnZhbGlkKSB7XG4gICAgICBjb25zdCB1bmNoYW5nZWQgPSBjb25maWcub2xkICYmIGNvbmZpZy5vbGQudHMgPT09IHRoaXMudHMgJiYgY29uZmlnLm9sZC56b25lLmVxdWFscyh6b25lKTtcblxuICAgICAgaWYgKHVuY2hhbmdlZCkge1xuICAgICAgICBbYywgb10gPSBbY29uZmlnLm9sZC5jLCBjb25maWcub2xkLm9dO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3QgPSB6b25lLm9mZnNldCh0aGlzLnRzKTtcbiAgICAgICAgYyA9IHRzVG9PYmoodGhpcy50cywgb3QpO1xuICAgICAgICBpbnZhbGlkID0gTnVtYmVyLmlzTmFOKGMueWVhcikgPyBuZXcgSW52YWxpZChcImludmFsaWQgaW5wdXRcIikgOiBudWxsO1xuICAgICAgICBjID0gaW52YWxpZCA/IG51bGwgOiBjO1xuICAgICAgICBvID0gaW52YWxpZCA/IG51bGwgOiBvdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLl96b25lID0gem9uZTtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmxvYyA9IGNvbmZpZy5sb2MgfHwgTG9jYWxlLmNyZWF0ZSgpO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuaW52YWxpZCA9IGludmFsaWQ7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy53ZWVrRGF0YSA9IG51bGw7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5jID0gYztcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLm8gPSBvO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuaXNMdXhvbkRhdGVUaW1lID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIENPTlNUUlVDVFxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmb3IgdGhlIGN1cnJlbnQgaW5zdGFudCwgaW4gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS5cbiAgICpcbiAgICogVXNlIFNldHRpbmdzIHRvIG92ZXJyaWRlIHRoZXNlIGRlZmF1bHQgdmFsdWVzIGlmIG5lZWRlZC5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oKSAvL34+IG5vdyBpbiB0aGUgSVNPIGZvcm1hdFxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBub3coKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7fSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbG9jYWwgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt5ZWFyXSAtIFRoZSBjYWxlbmRhciB5ZWFyLiBJZiBvbWl0dGVkIChhcyBpbiwgY2FsbCBgbG9jYWwoKWAgd2l0aCBubyBhcmd1bWVudHMpLCB0aGUgY3VycmVudCB0aW1lIHdpbGwgYmUgdXNlZFxuICAgKiBAcGFyYW0ge251bWJlcn0gW21vbnRoPTFdIC0gVGhlIG1vbnRoLCAxLWluZGV4ZWRcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtkYXk9MV0gLSBUaGUgZGF5IG9mIHRoZSBtb250aCwgMS1pbmRleGVkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbaG91cj0wXSAtIFRoZSBob3VyIG9mIHRoZSBkYXksIGluIDI0LWhvdXIgdGltZVxuICAgKiBAcGFyYW0ge251bWJlcn0gW21pbnV0ZT0wXSAtIFRoZSBtaW51dGUgb2YgdGhlIGhvdXIsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA1OVxuICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbWlsbGlzZWNvbmQ9MF0gLSBUaGUgbWlsbGlzZWNvbmQgb2YgdGhlIHNlY29uZCwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDk5OVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gbm93XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKHsgem9uZTogXCJBbWVyaWNhL05ld19Zb3JrXCIgfSkgICAgICAvL34+IG5vdywgaW4gVVMgZWFzdCBjb2FzdCB0aW1lXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAxLTAxVDAwOjAwOjAwXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCB7IGxvY2FsZTogXCJmclwiIH0pICAgICAvL34+IDIwMTctMDMtMTJUMDA6MDA6MDAsIHdpdGggYSBGcmVuY2ggbG9jYWxlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1LCB7IHpvbmU6IFwidXRjXCIgfSkgICAvL34+IDIwMTctMDMtMTJUMDU6MDA6MDAsIGluIFVUQ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUpICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUsIDEwKSAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NToxMFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUsIDEwLCA3NjUpICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NToxMC43NjVcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgbG9jYWwoKSB7XG4gICAgY29uc3QgW29wdHMsIGFyZ3NdID0gbGFzdE9wdHMoYXJndW1lbnRzKSxcbiAgICAgIFt5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdID0gYXJncztcbiAgICByZXR1cm4gcXVpY2tEVCh7IHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZCB9LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBpbiBVVENcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt5ZWFyXSAtIFRoZSBjYWxlbmRhciB5ZWFyLiBJZiBvbWl0dGVkIChhcyBpbiwgY2FsbCBgdXRjKClgIHdpdGggbm8gYXJndW1lbnRzKSwgdGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWRcbiAgICogQHBhcmFtIHtudW1iZXJ9IFttb250aD0xXSAtIFRoZSBtb250aCwgMS1pbmRleGVkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbZGF5PTFdIC0gVGhlIGRheSBvZiB0aGUgbW9udGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtob3VyPTBdIC0gVGhlIGhvdXIgb2YgdGhlIGRheSwgaW4gMjQtaG91ciB0aW1lXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbc2Vjb25kPTBdIC0gVGhlIHNlY29uZCBvZiB0aGUgbWludXRlLCBtZWFuaW5nIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgNTlcbiAgICogQHBhcmFtIHtudW1iZXJ9IFttaWxsaXNlY29uZD0wXSAtIFRoZSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kLCBtZWFuaW5nIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgOTk5XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMub3V0cHV0Q2FsZW5kYXJdIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gbm93XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMS0wMVQwMDowMDowMFpcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwWlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNywgMywgMTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDA6MDA6MDBaXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3LCAzLCAxMiwgNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTowMDowMFpcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNywgMywgMTIsIDUsIDQ1LCB7IGxvY2FsZTogXCJmclwiIH0pICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMFogd2l0aCBhIEZyZW5jaCBsb2NhbGVcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTApICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwWlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNywgMywgMTIsIDUsIDQ1LCAxMCwgNzY1LCB7IGxvY2FsZTogXCJmclwiIH0pIC8vfj4gMjAxNy0wMy0xMlQwNTo0NToxMC43NjVaIHdpdGggYSBGcmVuY2ggbG9jYWxlXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc3RhdGljIHV0YygpIHtcbiAgICBjb25zdCBbb3B0cywgYXJnc10gPSBsYXN0T3B0cyhhcmd1bWVudHMpLFxuICAgICAgW3llYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZF0gPSBhcmdzO1xuXG4gICAgb3B0cy56b25lID0gRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlO1xuICAgIHJldHVybiBxdWlja0RUKHsgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0sIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBKYXZhU2NyaXB0IERhdGUgb2JqZWN0LiBVc2VzIHRoZSBkZWZhdWx0IHpvbmUuXG4gICAqIEBwYXJhbSB7RGF0ZX0gZGF0ZSAtIGEgSmF2YVNjcmlwdCBEYXRlIG9iamVjdFxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50b1xuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tSlNEYXRlKGRhdGUsIG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHRzID0gaXNEYXRlKGRhdGUpID8gZGF0ZS52YWx1ZU9mKCkgOiBOYU47XG4gICAgaWYgKE51bWJlci5pc05hTih0cykpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKFwiaW52YWxpZCBpbnB1dFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCB6b25lVG9Vc2UgPSBub3JtYWxpemVab25lKG9wdGlvbnMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpO1xuICAgIGlmICghem9uZVRvVXNlLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKHVuc3VwcG9ydGVkWm9uZSh6b25lVG9Vc2UpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERhdGVUaW1lKHtcbiAgICAgIHRzOiB0cyxcbiAgICAgIHpvbmU6IHpvbmVUb1VzZSxcbiAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG1pbGxpc2Vjb25kcyAtIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSAxOTcwIFVUQ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50b1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubG9jYWxlXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tTWlsbGlzKG1pbGxpc2Vjb25kcywgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKCFpc051bWJlcihtaWxsaXNlY29uZHMpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAgIGBmcm9tTWlsbGlzIHJlcXVpcmVzIGEgbnVtZXJpY2FsIGlucHV0LCBidXQgcmVjZWl2ZWQgYSAke3R5cGVvZiBtaWxsaXNlY29uZHN9IHdpdGggdmFsdWUgJHttaWxsaXNlY29uZHN9YFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKG1pbGxpc2Vjb25kcyA8IC1NQVhfREFURSB8fCBtaWxsaXNlY29uZHMgPiBNQVhfREFURSkge1xuICAgICAgLy8gdGhpcyBpc24ndCBwZXJmZWN0IGJlY2F1c2UgYmVjYXVzZSB3ZSBjYW4gc3RpbGwgZW5kIHVwIG91dCBvZiByYW5nZSBiZWNhdXNlIG9mIGFkZGl0aW9uYWwgc2hpZnRpbmcsIGJ1dCBpdCdzIGEgc3RhcnRcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKFwiVGltZXN0YW1wIG91dCBvZiByYW5nZVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7XG4gICAgICAgIHRzOiBtaWxsaXNlY29uZHMsXG4gICAgICAgIHpvbmU6IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksXG4gICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaCAobWVhbmluZyBzaW5jZSAxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLiBVc2VzIHRoZSBkZWZhdWx0IHpvbmUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSAxOTcwIFVUQ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50b1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubG9jYWxlXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tU2Vjb25kcyhzZWNvbmRzLCBvcHRpb25zID0ge30pIHtcbiAgICBpZiAoIWlzTnVtYmVyKHNlY29uZHMpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJmcm9tU2Vjb25kcyByZXF1aXJlcyBhIG51bWVyaWNhbCBpbnB1dFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7XG4gICAgICAgIHRzOiBzZWNvbmRzICogMTAwMCxcbiAgICAgICAgem9uZTogbm9ybWFsaXplWm9uZShvcHRpb25zLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSxcbiAgICAgICAgbG9jOiBMb2NhbGUuZnJvbU9iamVjdChvcHRpb25zKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXInIGFuZCAnaG91cicgd2l0aCByZWFzb25hYmxlIGRlZmF1bHRzLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gdGhlIG9iamVjdCB0byBjcmVhdGUgdGhlIERhdGVUaW1lIGZyb21cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai55ZWFyIC0gYSB5ZWFyLCBzdWNoIGFzIDE5ODdcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5tb250aCAtIGEgbW9udGgsIDEtMTJcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5kYXkgLSBhIGRheSBvZiB0aGUgbW9udGgsIDEtMzEsIGRlcGVuZGluZyBvbiB0aGUgbW9udGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5vcmRpbmFsIC0gZGF5IG9mIHRoZSB5ZWFyLCAxLTM2NSBvciAzNjZcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrWWVhciAtIGFuIElTTyB3ZWVrIHllYXJcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrTnVtYmVyIC0gYW4gSVNPIHdlZWsgbnVtYmVyLCBiZXR3ZWVuIDEgYW5kIDUyIG9yIDUzLCBkZXBlbmRpbmcgb24gdGhlIHllYXJcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrZGF5IC0gYW4gSVNPIHdlZWtkYXksIDEtNywgd2hlcmUgMSBpcyBNb25kYXkgYW5kIDcgaXMgU3VuZGF5XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouaG91ciAtIGhvdXIgb2YgdGhlIGRheSwgMC0yM1xuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbnV0ZSAtIG1pbnV0ZSBvZiB0aGUgaG91ciwgMC01OVxuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnNlY29uZCAtIHNlY29uZCBvZiB0aGUgbWludXRlLCAwLTU5XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubWlsbGlzZWNvbmQgLSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kLCAwLTk5OVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoaXMgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGludGVycHJldCB0aGUgbnVtYmVycyBpbiB0aGUgY29udGV4dCBvZiBhIHBhcnRpY3VsYXIgem9uZS4gQ2FuIHRha2UgYW55IHZhbHVlIHRha2VuIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBzZXRab25lKClcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIsIG1vbnRoOiA1LCBkYXk6IDI1fSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wNS0yNSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIgfSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wMS0wMSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IGhvdXI6IDEwLCBtaW51dGU6IDI2LCBzZWNvbmQ6IDYgfSkgLy9+PiB0b2RheSBhdCAxMDoyNjowNlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICd1dGMnIH0pLFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICdsb2NhbCcgfSlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IGhvdXI6IDEwLCBtaW51dGU6IDI2LCBzZWNvbmQ6IDYgfSwgeyB6b25lOiAnQW1lcmljYS9OZXdfWW9yaycgfSlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHdlZWtZZWFyOiAyMDE2LCB3ZWVrTnVtYmVyOiAyLCB3ZWVrZGF5OiAzIH0pLnRvSVNPRGF0ZSgpIC8vPT4gJzIwMTYtMDEtMTMnXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc3RhdGljIGZyb21PYmplY3Qob2JqLCBvcHRzID0ge30pIHtcbiAgICBvYmogPSBvYmogfHwge307XG4gICAgY29uc3Qgem9uZVRvVXNlID0gbm9ybWFsaXplWm9uZShvcHRzLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKTtcbiAgICBpZiAoIXpvbmVUb1VzZS5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZVRvVXNlKSk7XG4gICAgfVxuXG4gICAgY29uc3QgdHNOb3cgPSBTZXR0aW5ncy5ub3coKSxcbiAgICAgIG9mZnNldFByb3ZpcyA9ICFpc1VuZGVmaW5lZChvcHRzLnNwZWNpZmljT2Zmc2V0KVxuICAgICAgICA/IG9wdHMuc3BlY2lmaWNPZmZzZXRcbiAgICAgICAgOiB6b25lVG9Vc2Uub2Zmc2V0KHRzTm93KSxcbiAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVPYmplY3Qob2JqLCBub3JtYWxpemVVbml0KSxcbiAgICAgIGNvbnRhaW5zT3JkaW5hbCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpLFxuICAgICAgY29udGFpbnNHcmVnb3JZZWFyID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQueWVhciksXG4gICAgICBjb250YWluc0dyZWdvck1EID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQubW9udGgpIHx8ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSksXG4gICAgICBjb250YWluc0dyZWdvciA9IGNvbnRhaW5zR3JlZ29yWWVhciB8fCBjb250YWluc0dyZWdvck1ELFxuICAgICAgZGVmaW5pdGVXZWVrRGVmID0gbm9ybWFsaXplZC53ZWVrWWVhciB8fCBub3JtYWxpemVkLndlZWtOdW1iZXIsXG4gICAgICBsb2MgPSBMb2NhbGUuZnJvbU9iamVjdChvcHRzKTtcblxuICAgIC8vIGNhc2VzOlxuICAgIC8vIGp1c3QgYSB3ZWVrZGF5IC0+IHRoaXMgd2VlaydzIGluc3RhbmNlIG9mIHRoYXQgd2Vla2RheSwgbm8gd29ycmllc1xuICAgIC8vIChncmVnb3JpYW4gZGF0YSBvciBvcmRpbmFsKSArICh3ZWVrWWVhciBvciB3ZWVrTnVtYmVyKSAtPiBlcnJvclxuICAgIC8vIChncmVnb3JpYW4gbW9udGggb3IgZGF5KSArIG9yZGluYWwgLT4gZXJyb3JcbiAgICAvLyBvdGhlcndpc2UganVzdCB1c2Ugd2Vla3Mgb3Igb3JkaW5hbHMgb3IgZ3JlZ29yaWFuLCBkZXBlbmRpbmcgb24gd2hhdCdzIHNwZWNpZmllZFxuXG4gICAgaWYgKChjb250YWluc0dyZWdvciB8fCBjb250YWluc09yZGluYWwpICYmIGRlZmluaXRlV2Vla0RlZikge1xuICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKFxuICAgICAgICBcIkNhbid0IG1peCB3ZWVrWWVhci93ZWVrTnVtYmVyIHVuaXRzIHdpdGggeWVhci9tb250aC9kYXkgb3Igb3JkaW5hbHNcIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGFpbnNHcmVnb3JNRCAmJiBjb250YWluc09yZGluYWwpIHtcbiAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcihcIkNhbid0IG1peCBvcmRpbmFsIGRhdGVzIHdpdGggbW9udGgvZGF5XCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZVdlZWtEYXRhID0gZGVmaW5pdGVXZWVrRGVmIHx8IChub3JtYWxpemVkLndlZWtkYXkgJiYgIWNvbnRhaW5zR3JlZ29yKTtcblxuICAgIC8vIGNvbmZpZ3VyZSBvdXJzZWx2ZXMgdG8gZGVhbCB3aXRoIGdyZWdvcmlhbiBkYXRlcyBvciB3ZWVrIHN0dWZmXG4gICAgbGV0IHVuaXRzLFxuICAgICAgZGVmYXVsdFZhbHVlcyxcbiAgICAgIG9iak5vdyA9IHRzVG9PYmoodHNOb3csIG9mZnNldFByb3Zpcyk7XG4gICAgaWYgKHVzZVdlZWtEYXRhKSB7XG4gICAgICB1bml0cyA9IG9yZGVyZWRXZWVrVW5pdHM7XG4gICAgICBkZWZhdWx0VmFsdWVzID0gZGVmYXVsdFdlZWtVbml0VmFsdWVzO1xuICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9XZWVrKG9iak5vdyk7XG4gICAgfSBlbHNlIGlmIChjb250YWluc09yZGluYWwpIHtcbiAgICAgIHVuaXRzID0gb3JkZXJlZE9yZGluYWxVbml0cztcbiAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXM7XG4gICAgICBvYmpOb3cgPSBncmVnb3JpYW5Ub09yZGluYWwob2JqTm93KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdW5pdHMgPSBvcmRlcmVkVW5pdHM7XG4gICAgICBkZWZhdWx0VmFsdWVzID0gZGVmYXVsdFVuaXRWYWx1ZXM7XG4gICAgfVxuXG4gICAgLy8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvciBtaXNzaW5nIHN0dWZmXG4gICAgbGV0IGZvdW5kRmlyc3QgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IHUgb2YgdW5pdHMpIHtcbiAgICAgIGNvbnN0IHYgPSBub3JtYWxpemVkW3VdO1xuICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2KSkge1xuICAgICAgICBmb3VuZEZpcnN0ID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoZm91bmRGaXJzdCkge1xuICAgICAgICBub3JtYWxpemVkW3VdID0gZGVmYXVsdFZhbHVlc1t1XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vcm1hbGl6ZWRbdV0gPSBvYmpOb3dbdV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gbWFrZSBzdXJlIHRoZSB2YWx1ZXMgd2UgaGF2ZSBhcmUgaW4gcmFuZ2VcbiAgICBjb25zdCBoaWdoZXJPcmRlckludmFsaWQgPSB1c2VXZWVrRGF0YVxuICAgICAgICA/IGhhc0ludmFsaWRXZWVrRGF0YShub3JtYWxpemVkKVxuICAgICAgICA6IGNvbnRhaW5zT3JkaW5hbFxuICAgICAgICA/IGhhc0ludmFsaWRPcmRpbmFsRGF0YShub3JtYWxpemVkKVxuICAgICAgICA6IGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG5vcm1hbGl6ZWQpLFxuICAgICAgaW52YWxpZCA9IGhpZ2hlck9yZGVySW52YWxpZCB8fCBoYXNJbnZhbGlkVGltZURhdGEobm9ybWFsaXplZCk7XG5cbiAgICBpZiAoaW52YWxpZCkge1xuICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoaW52YWxpZCk7XG4gICAgfVxuXG4gICAgLy8gY29tcHV0ZSB0aGUgYWN0dWFsIHRpbWVcbiAgICBjb25zdCBncmVnb3JpYW4gPSB1c2VXZWVrRGF0YVxuICAgICAgICA/IHdlZWtUb0dyZWdvcmlhbihub3JtYWxpemVkKVxuICAgICAgICA6IGNvbnRhaW5zT3JkaW5hbFxuICAgICAgICA/IG9yZGluYWxUb0dyZWdvcmlhbihub3JtYWxpemVkKVxuICAgICAgICA6IG5vcm1hbGl6ZWQsXG4gICAgICBbdHNGaW5hbCwgb2Zmc2V0RmluYWxdID0gb2JqVG9UUyhncmVnb3JpYW4sIG9mZnNldFByb3Zpcywgem9uZVRvVXNlKSxcbiAgICAgIGluc3QgPSBuZXcgRGF0ZVRpbWUoe1xuICAgICAgICB0czogdHNGaW5hbCxcbiAgICAgICAgem9uZTogem9uZVRvVXNlLFxuICAgICAgICBvOiBvZmZzZXRGaW5hbCxcbiAgICAgICAgbG9jLFxuICAgICAgfSk7XG5cbiAgICAvLyBncmVnb3JpYW4gZGF0YSArIHdlZWtkYXkgc2VydmVzIG9ubHkgdG8gdmFsaWRhdGVcbiAgICBpZiAobm9ybWFsaXplZC53ZWVrZGF5ICYmIGNvbnRhaW5zR3JlZ29yICYmIG9iai53ZWVrZGF5ICE9PSBpbnN0LndlZWtkYXkpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKFxuICAgICAgICBcIm1pc21hdGNoZWQgd2Vla2RheVwiLFxuICAgICAgICBgeW91IGNhbid0IHNwZWNpZnkgYm90aCBhIHdlZWtkYXkgb2YgJHtub3JtYWxpemVkLndlZWtkYXl9IGFuZCBhIGRhdGUgb2YgJHtpbnN0LnRvSVNPKCl9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIElTTyA4NjAxIHN0cmluZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBJU08gc3RyaW5nXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0byBhZmZlY3QgdGhlIGNyZWF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnNldFpvbmU9ZmFsc2VdIC0gb3ZlcnJpZGUgdGhlIHpvbmUgd2l0aCBhIGZpeGVkLW9mZnNldCB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgaWYgaXQgc3BlY2lmaWVzIG9uZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5udW1iZXJpbmdTeXN0ZW1dIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUlTTygnMjAxNi0wNS0yNVQwOTowODozNC4xMjMnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtMDUtMjVUMDk6MDg6MzQuMTIzKzA2OjAwJywge3NldFpvbmU6IHRydWV9KVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMycsIHt6b25lOiAndXRjJ30pXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtVzA1LTQnKVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IFt2YWxzLCBwYXJzZWRab25lXSA9IHBhcnNlSVNPRGF0ZSh0ZXh0KTtcbiAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCBcIklTTyA4NjAxXCIsIHRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYW4gUkZDIDI4MjIgc3RyaW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIFJGQyAyODIyIHN0cmluZ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0cy56b25lPSdsb2NhbCddIC0gY29udmVydCB0aGUgdGltZSB0byB0aGlzIHpvbmUuIFNpbmNlIHRoZSBvZmZzZXQgaXMgYWx3YXlzIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgdGhpcyBoYXMgbm8gZWZmZWN0IG9uIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBzdHJpbmcsIG1lcmVseSB0aGUgem9uZSB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGlzIGV4cHJlc3NlZCBpbi5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzOjEyIEdNVCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCdGcmksIDI1IE5vdiAyMDE2IDEzOjIzOjEyICswNjAwJylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzIFonKVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tUkZDMjgyMih0ZXh0LCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZVJGQzI4MjJEYXRlKHRleHQpO1xuICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsIFwiUkZDIDI4MjJcIiwgdGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBIVFRQIGhlYWRlciBkYXRlXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIEhUVFAgaGVhZGVyIGRhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGNvbnZlcnQgdGhlIHRpbWUgdG8gdGhpcyB6b25lLiBTaW5jZSBIVFRQIGRhdGVzIGFyZSBhbHdheXMgaW4gVVRDLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnNldFpvbmU9ZmFsc2VdIC0gb3ZlcnJpZGUgdGhlIHpvbmUgd2l0aCB0aGUgZml4ZWQtb2Zmc2V0IHpvbmUgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcuIEZvciBIVFRQIGRhdGVzLCB0aGlzIGlzIGFsd2F5cyBVVEMsIHNvIHRoaXMgb3B0aW9uIGlzIGVxdWl2YWxlbnQgdG8gc2V0dGluZyB0aGUgYHpvbmVgIG9wdGlvbiB0byAndXRjJywgYnV0IHRoaXMgb3B0aW9uIGlzIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHNpbWlsYXIgbWV0aG9kcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1biwgMDYgTm92IDE5OTQgMDg6NDk6MzcgR01UJylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1bmRheSwgMDYtTm92LTk0IDA4OjQ5OjM3IEdNVCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21IVFRQKCdTdW4gTm92ICA2IDA4OjQ5OjM3IDE5OTQnKVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tSFRUUCh0ZXh0LCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZUhUVFBEYXRlKHRleHQpO1xuICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsIFwiSFRUUFwiLCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIGlucHV0IHN0cmluZyBhbmQgZm9ybWF0IHN0cmluZy5cbiAgICogRGVmYXVsdHMgdG8gZW4tVVMgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZCwgcmVnYXJkbGVzcyBvZiB0aGUgc3lzdGVtJ3MgbG9jYWxlLiBGb3IgYSB0YWJsZSBvZiB0b2tlbnMgYW5kIHRoZWlyIGludGVycHJldGF0aW9ucywgc2VlIFtoZXJlXShodHRwczovL21vbWVudC5naXRodWIuaW8vbHV4b24vIy9wYXJzaW5nP2lkPXRhYmxlLW9mLXRva2VucykuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIHN0cmluZyB0byBwYXJzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCB0aGUgc3RyaW5nIGlzIGV4cGVjdGVkIHRvIGJlIGluIChzZWUgdGhlIGxpbmsgYmVsb3cgZm9yIHRoZSBmb3JtYXRzKVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0cy56b25lPSdsb2NhbCddIC0gdXNlIHRoaXMgem9uZSBpZiBubyBvZmZzZXQgaXMgc3BlY2lmaWVkIGluIHRoZSBpbnB1dCBzdHJpbmcgaXRzZWxmLiBXaWxsIGFsc28gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyB6b25lXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIGEgbG9jYWxlIHN0cmluZyB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSBEYXRlVGltZSB0byB0aGlzIGxvY2FsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgdG8gdGhpcyBudW1iZXJpbmcgc3lzdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tRm9ybWF0KHRleHQsIGZtdCwgb3B0cyA9IHt9KSB7XG4gICAgaWYgKGlzVW5kZWZpbmVkKHRleHQpIHx8IGlzVW5kZWZpbmVkKGZtdCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcImZyb21Gb3JtYXQgcmVxdWlyZXMgYW4gaW5wdXQgc3RyaW5nIGFuZCBhIGZvcm1hdFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwgfSA9IG9wdHMsXG4gICAgICBsb2NhbGVUb1VzZSA9IExvY2FsZS5mcm9tT3B0cyh7XG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgbnVtYmVyaW5nU3lzdGVtLFxuICAgICAgICBkZWZhdWx0VG9FTjogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICAgW3ZhbHMsIHBhcnNlZFpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkXSA9IHBhcnNlRnJvbVRva2Vucyhsb2NhbGVUb1VzZSwgdGV4dCwgZm10KTtcbiAgICBpZiAoaW52YWxpZCkge1xuICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoaW52YWxpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsIGBmb3JtYXQgJHtmbXR9YCwgdGV4dCwgc3BlY2lmaWNPZmZzZXQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgZnJvbUZvcm1hdCBpbnN0ZWFkXG4gICAqL1xuICBzdGF0aWMgZnJvbVN0cmluZyh0ZXh0LCBmbXQsIG9wdHMgPSB7fSkge1xuICAgIHJldHVybiBEYXRlVGltZS5mcm9tRm9ybWF0KHRleHQsIGZtdCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIFNRTCBkYXRlLCB0aW1lLCBvciBkYXRldGltZVxuICAgKiBEZWZhdWx0cyB0byBlbi1VUyBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkLCByZWdhcmRsZXNzIG9mIHRoZSBzeXN0ZW0ncyBsb2NhbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0byBhZmZlY3QgdGhlIGNyZWF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSBEYXRlVGltZSB0byB0aGlzIHpvbmVcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgaWYgaXQgc3BlY2lmaWVzIG9uZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gYSBsb2NhbGUgc3RyaW5nIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIERhdGVUaW1lIHRvIHRoaXMgbG9jYWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIHJlc3VsdGluZyBEYXRlVGltZSB0byB0aGlzIG51bWJlcmluZyBzeXN0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0JylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDInKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiswNjowMCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQuMzQyIEFtZXJpY2EvTG9zX0FuZ2VsZXMnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiBBbWVyaWNhL0xvc19BbmdlbGVzJywgeyBzZXRab25lOiB0cnVlIH0pXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQuMzQyJywgeyB6b25lOiAnQW1lcmljYS9Mb3NfQW5nZWxlcycgfSlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMDk6MTI6MzQuMzQyJylcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbVNRTCh0ZXh0LCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZVNRTCh0ZXh0KTtcbiAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCBcIlNRTFwiLCB0ZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gaW52YWxpZCBEYXRlVGltZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlYXNvbiAtIHNpbXBsZSBzdHJpbmcgb2Ygd2h5IHRoaXMgRGF0ZVRpbWUgaXMgaW52YWxpZC4gU2hvdWxkIG5vdCBjb250YWluIHBhcmFtZXRlcnMgb3IgYW55dGhpbmcgZWxzZSBkYXRhLWRlcGVuZGVudFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHtcbiAgICBpZiAoIXJlYXNvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFwibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBEYXRlVGltZSBpcyBpbnZhbGlkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7XG5cbiAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkRGF0ZVRpbWVFcnJvcihpbnZhbGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7IGludmFsaWQgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIG9iamVjdCBpcyBhIERhdGVUaW1lLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBzdGF0aWMgaXNEYXRlVGltZShvKSB7XG4gICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkRhdGVUaW1lKSB8fCBmYWxzZTtcbiAgfVxuXG4gIC8vIElORk9cblxuICAvKipcbiAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIGEgdW5pdCBzdWNoIGFzICdtaW51dGUnIG9yICdkYXknXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDcsIDQpLmdldCgnbW9udGgnKTsgLy89PiA3XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDcsIDQpLmdldCgnZGF5Jyk7IC8vPT4gNFxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBnZXQodW5pdCkge1xuICAgIHJldHVybiB0aGlzW3VuaXRdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQuIEludmFsaWQgRGF0ZVRpbWVzIG9jY3VyIHdoZW46XG4gICAqICogVGhlIERhdGVUaW1lIHdhcyBjcmVhdGVkIGZyb20gaW52YWxpZCBjYWxlbmRhciBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgMTN0aCBtb250aCBvciBGZWJydWFyeSAzMFxuICAgKiAqIFRoZSBEYXRlVGltZSB3YXMgY3JlYXRlZCBieSBhbiBvcGVyYXRpb24gb24gYW5vdGhlciBpbnZhbGlkIGRhdGVcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIERhdGVUaW1lIGlzIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIERhdGVUaW1lIGlzIHZhbGlkXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgaW52YWxpZFJlYXNvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBEYXRlVGltZSBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRGF0ZVRpbWUgaXMgdmFsaWRcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBpbnZhbGlkRXhwbGFuYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsb2NhbGUgb2YgYSBEYXRlVGltZSwgc3VjaCAnZW4tR0InLiBUaGUgbG9jYWxlIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZVxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IGxvY2FsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubG9jYWxlIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG51bWJlcmluZyBzeXN0ZW0gb2YgYSBEYXRlVGltZSwgc3VjaCAnYmVuZycuIFRoZSBudW1iZXJpbmcgc3lzdGVtIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZVxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IG51bWJlcmluZ1N5c3RlbSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG91dHB1dCBjYWxlbmRhciBvZiBhIERhdGVUaW1lLCBzdWNoICdpc2xhbWljJy4gVGhlIG91dHB1dCBjYWxlbmRhciBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRGF0ZVRpbWVcbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBvdXRwdXRDYWxlbmRhcigpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdGltZSB6b25lIGFzc29jaWF0ZWQgd2l0aCB0aGlzIERhdGVUaW1lLlxuICAgKiBAdHlwZSB7Wm9uZX1cbiAgICovXG4gIGdldCB6b25lKCkge1xuICAgIHJldHVybiB0aGlzLl96b25lO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbmFtZSBvZiB0aGUgdGltZSB6b25lLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IHpvbmVOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnpvbmUubmFtZSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB5ZWFyXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS55ZWFyIC8vPT4gMjAxN1xuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IHllYXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy55ZWFyIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcXVhcnRlclxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkucXVhcnRlciAvLz0+IDJcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBxdWFydGVyKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBNYXRoLmNlaWwodGhpcy5jLm1vbnRoIC8gMykgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBtb250aCAoMS0xMikuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5tb250aCAvLz0+IDVcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBtb250aCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1vbnRoIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGF5IG9mIHRoZSBtb250aCAoMS0zMGlzaCkuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5kYXkgLy89PiAyNVxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IGRheSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLmRheSA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGhvdXIgb2YgdGhlIGRheSAoMC0yMykuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1LCA5KS5ob3VyIC8vPT4gOVxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IGhvdXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5ob3VyIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbWludXRlIG9mIHRoZSBob3VyICgwLTU5KS5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwKS5taW51dGUgLy89PiAzMFxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IG1pbnV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1pbnV0ZSA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHNlY29uZCBvZiB0aGUgbWludXRlICgwLTU5KS5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwLCA1Mikuc2Vjb25kIC8vPT4gNTJcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBzZWNvbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5zZWNvbmQgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kICgwLTk5OSkuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1LCA5LCAzMCwgNTIsIDY1NCkubWlsbGlzZWNvbmQgLy89PiA2NTRcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBtaWxsaXNlY29uZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1pbGxpc2Vjb25kIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgd2VlayB5ZWFyXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAxMiwgMzEpLndlZWtZZWFyIC8vPT4gMjAxNVxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IHdlZWtZZWFyKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKHRoaXMpLndlZWtZZWFyIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgd2VlayBudW1iZXIgb2YgdGhlIHdlZWsgeWVhciAoMS01MmlzaCkuXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkud2Vla051bWJlciAvLz0+IDIxXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgd2Vla051bWJlcigpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrTnVtYmVyIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGF5IG9mIHRoZSB3ZWVrLlxuICAgKiAxIGlzIE1vbmRheSBhbmQgNyBpcyBTdW5kYXlcbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDExLCAzMSkud2Vla2RheSAvLz0+IDRcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCB3ZWVrZGF5KCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKHRoaXMpLndlZWtkYXkgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBvcmRpbmFsIChtZWFuaW5nIHRoZSBkYXkgb2YgdGhlIHllYXIpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5vcmRpbmFsIC8vPT4gMTQ1XG4gICAqIEB0eXBlIHtudW1iZXJ8RGF0ZVRpbWV9XG4gICAqL1xuICBnZXQgb3JkaW5hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gZ3JlZ29yaWFuVG9PcmRpbmFsKHRoaXMuYykub3JkaW5hbCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIHNob3J0IG1vbnRoIG5hbWUsIHN1Y2ggYXMgJ09jdCcuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAxMCwgMzApLm1vbnRoU2hvcnQgLy89PiBPY3RcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBtb250aFNob3J0KCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLm1vbnRocyhcInNob3J0XCIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLm1vbnRoIC0gMV0gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgbG9uZyBtb250aCBuYW1lLCBzdWNoIGFzICdPY3RvYmVyJy5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkubW9udGhMb25nIC8vPT4gT2N0b2JlclxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IG1vbnRoTG9uZygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby5tb250aHMoXCJsb25nXCIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLm1vbnRoIC0gMV0gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgc2hvcnQgd2Vla2RheSwgc3VjaCBhcyAnTW9uJy5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkud2Vla2RheVNob3J0IC8vPT4gTW9uXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgd2Vla2RheVNob3J0KCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLndlZWtkYXlzKFwic2hvcnRcIiwgeyBsb2NPYmo6IHRoaXMubG9jIH0pW3RoaXMud2Vla2RheSAtIDFdIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIGxvbmcgd2Vla2RheSwgc3VjaCBhcyAnTW9uZGF5Jy5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkud2Vla2RheUxvbmcgLy89PiBNb25kYXlcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCB3ZWVrZGF5TG9uZygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby53ZWVrZGF5cyhcImxvbmdcIiwgeyBsb2NPYmo6IHRoaXMubG9jIH0pW3RoaXMud2Vla2RheSAtIDFdIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFVUQyBvZmZzZXQgb2YgdGhpcyBEYXRlVGltZSBpbiBtaW51dGVzXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm9mZnNldCAvLz0+IC0yNDBcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkub2Zmc2V0IC8vPT4gMFxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IG9mZnNldCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gK3RoaXMubyA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHNob3J0IGh1bWFuIG5hbWUgZm9yIHRoZSB6b25lJ3MgY3VycmVudCBvZmZzZXQsIGZvciBleGFtcGxlIFwiRVNUXCIgb3IgXCJFRFRcIi5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgb2Zmc2V0TmFtZVNob3J0KCkge1xuICAgIGlmICh0aGlzLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnpvbmUub2Zmc2V0TmFtZSh0aGlzLnRzLCB7XG4gICAgICAgIGZvcm1hdDogXCJzaG9ydFwiLFxuICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxvbmcgaHVtYW4gbmFtZSBmb3IgdGhlIHpvbmUncyBjdXJyZW50IG9mZnNldCwgZm9yIGV4YW1wbGUgXCJFYXN0ZXJuIFN0YW5kYXJkIFRpbWVcIiBvciBcIkVhc3Rlcm4gRGF5bGlnaHQgVGltZVwiLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWRcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBvZmZzZXROYW1lTG9uZygpIHtcbiAgICBpZiAodGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywge1xuICAgICAgICBmb3JtYXQ6IFwibG9uZ1wiLFxuICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgd2hldGhlciB0aGlzIHpvbmUncyBvZmZzZXQgZXZlciBjaGFuZ2VzLCBhcyBpbiBhIERTVC5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNPZmZzZXRGaXhlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy56b25lLmlzVW5pdmVyc2FsIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgaW4gYSBEU1QuXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IGlzSW5EU1QoKSB7XG4gICAgaWYgKHRoaXMuaXNPZmZzZXRGaXhlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLm9mZnNldCA+IHRoaXMuc2V0KHsgbW9udGg6IDEgfSkub2Zmc2V0IHx8IHRoaXMub2Zmc2V0ID4gdGhpcy5zZXQoeyBtb250aDogNSB9KS5vZmZzZXRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIERhdGVUaW1lIGlzIGluIGEgbGVhcCB5ZWFyLCBmYWxzZSBvdGhlcndpc2VcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNikuaXNJbkxlYXBZZWFyIC8vPT4gdHJ1ZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS5pc0luTGVhcFllYXIgLy89PiBmYWxzZVxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBpc0luTGVhcFllYXIoKSB7XG4gICAgcmV0dXJuIGlzTGVhcFllYXIodGhpcy55ZWFyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGlzIERhdGVUaW1lJ3MgbW9udGhcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMikuZGF5c0luTW9udGggLy89PiAyOVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE2LCAzKS5kYXlzSW5Nb250aCAvLz0+IDMxXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgZGF5c0luTW9udGgoKSB7XG4gICAgcmV0dXJuIGRheXNJbk1vbnRoKHRoaXMueWVhciwgdGhpcy5tb250aCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRheXMgaW4gdGhpcyBEYXRlVGltZSdzIHllYXJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNikuZGF5c0luWWVhciAvLz0+IDM2NlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS5kYXlzSW5ZZWFyIC8vPT4gMzY1XG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgZGF5c0luWWVhcigpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gZGF5c0luWWVhcih0aGlzLnllYXIpIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG51bWJlciBvZiB3ZWVrcyBpbiB0aGlzIERhdGVUaW1lJ3MgeWVhclxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAwNCkud2Vla3NJbldlZWtZZWFyIC8vPT4gNTNcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxMykud2Vla3NJbldlZWtZZWFyIC8vPT4gNTJcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCB3ZWVrc0luV2Vla1llYXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHdlZWtzSW5XZWVrWWVhcih0aGlzLndlZWtZZWFyKSA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSByZXNvbHZlZCBJbnRsIG9wdGlvbnMgZm9yIHRoaXMgRGF0ZVRpbWUuXG4gICAqIFRoaXMgaXMgdXNlZnVsIGluIHVuZGVyc3RhbmRpbmcgdGhlIGJlaGF2aW9yIG9mIGZvcm1hdHRpbmcgbWV0aG9kc1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIHRoZSBzYW1lIG9wdGlvbnMgYXMgdG9Mb2NhbGVTdHJpbmdcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgcmVzb2x2ZWRMb2NhbGVPcHRpb25zKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBGb3JtYXR0ZXIuY3JlYXRlKFxuICAgICAgdGhpcy5sb2MuY2xvbmUob3B0cyksXG4gICAgICBvcHRzXG4gICAgKS5yZXNvbHZlZE9wdGlvbnModGhpcyk7XG4gICAgcmV0dXJuIHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyOiBjYWxlbmRhciB9O1xuICB9XG5cbiAgLy8gVFJBTlNGT1JNXG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byBVVEMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS5cbiAgICpcbiAgICogRXF1aXZhbGVudCB0byB7QGxpbmsgRGF0ZVRpbWUjc2V0Wm9uZX0oJ3V0YycpXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbb2Zmc2V0PTBdIC0gb3B0aW9uYWxseSwgYW4gb2Zmc2V0IGZyb20gVVRDIGluIG1pbnV0ZXNcbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzPXt9XSAtIG9wdGlvbnMgdG8gcGFzcyB0byBgc2V0Wm9uZSgpYFxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHRvVVRDKG9mZnNldCA9IDAsIG9wdHMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLnNldFpvbmUoRml4ZWRPZmZzZXRab25lLmluc3RhbmNlKG9mZnNldCksIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byB0aGUgaG9zdCdzIGxvY2FsIHpvbmUuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS5cbiAgICpcbiAgICogRXF1aXZhbGVudCB0byBgc2V0Wm9uZSgnbG9jYWwnKWBcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICB0b0xvY2FsKCkge1xuICAgIHJldHVybiB0aGlzLnNldFpvbmUoU2V0dGluZ3MuZGVmYXVsdFpvbmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byBzcGVjaWZpZWQgem9uZS4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgc2V0dGVyIGtlZXBzIHRoZSB1bmRlcmx5aW5nIHRpbWUgdGhlIHNhbWUgKGFzIGluLCB0aGUgc2FtZSB0aW1lc3RhbXApLCBidXQgdGhlIG5ldyBpbnN0YW5jZSB3aWxsIHJlcG9ydCBkaWZmZXJlbnQgbG9jYWwgdGltZXMgYW5kIGNvbnNpZGVyIERTVHMgd2hlbiBtYWtpbmcgY29tcHV0YXRpb25zLCBhcyB3aXRoIHtAbGluayBEYXRlVGltZSNwbHVzfS4gWW91IG1heSB3aXNoIHRvIHVzZSB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbH0gYW5kIHtAbGluayBEYXRlVGltZSN0b1VUQ30gd2hpY2ggcHJvdmlkZSBzaW1wbGUgY29udmVuaWVuY2Ugd3JhcHBlcnMgZm9yIGNvbW1vbmx5IHVzZWQgem9uZXMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gYSB6b25lIGlkZW50aWZpZXIuIEFzIGEgc3RyaW5nLCB0aGF0IGNhbiBiZSBhbnkgSUFOQSB6b25lIHN1cHBvcnRlZCBieSB0aGUgaG9zdCBlbnZpcm9ubWVudCwgb3IgYSBmaXhlZC1vZmZzZXQgbmFtZSBvZiB0aGUgZm9ybSAnVVRDKzMnLCBvciB0aGUgc3RyaW5ncyAnbG9jYWwnIG9yICd1dGMnLiBZb3UgbWF5IGFsc28gc3VwcGx5IGFuIGluc3RhbmNlIG9mIGEge0BsaW5rIERhdGVUaW1lI1pvbmV9IGNsYXNzLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5rZWVwTG9jYWxUaW1lPWZhbHNlXSAtIElmIHRydWUsIGFkanVzdCB0aGUgdW5kZXJseWluZyB0aW1lIHNvIHRoYXQgdGhlIGxvY2FsIHRpbWUgc3RheXMgdGhlIHNhbWUsIGJ1dCBpbiB0aGUgdGFyZ2V0IHpvbmUuIFlvdSBzaG91bGQgcmFyZWx5IG5lZWQgdGhpcy5cbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzZXRab25lKHpvbmUsIHsga2VlcExvY2FsVGltZSA9IGZhbHNlLCBrZWVwQ2FsZW5kYXJUaW1lID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgem9uZSA9IG5vcm1hbGl6ZVpvbmUoem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpO1xuICAgIGlmICh6b25lLmVxdWFscyh0aGlzLnpvbmUpKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2UgaWYgKCF6b25lLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKHVuc3VwcG9ydGVkWm9uZSh6b25lKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBuZXdUUyA9IHRoaXMudHM7XG4gICAgICBpZiAoa2VlcExvY2FsVGltZSB8fCBrZWVwQ2FsZW5kYXJUaW1lKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldEd1ZXNzID0gem9uZS5vZmZzZXQodGhpcy50cyk7XG4gICAgICAgIGNvbnN0IGFzT2JqID0gdGhpcy50b09iamVjdCgpO1xuICAgICAgICBbbmV3VFNdID0gb2JqVG9UUyhhc09iaiwgb2Zmc2V0R3Vlc3MsIHpvbmUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdHM6IG5ld1RTLCB6b25lIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoZSBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3Igb3V0cHV0Q2FsZW5kYXIuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS5cbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BlcnRpZXMgLSB0aGUgcHJvcGVydGllcyB0byBzZXRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnJlY29uZmlndXJlKHsgbG9jYWxlOiAnZW4tR0InIH0pXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgcmVjb25maWd1cmUoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7XG4gICAgY29uc3QgbG9jID0gdGhpcy5sb2MuY2xvbmUoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSk7XG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgbG9jIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhlIGxvY2FsZS4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLlxuICAgKiBKdXN0IGEgY29udmVuaWVudCBhbGlhcyBmb3IgcmVjb25maWd1cmUoeyBsb2NhbGUgfSlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnNldExvY2FsZSgnZW4tR0InKVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHNldExvY2FsZShsb2NhbGUpIHtcbiAgICByZXR1cm4gdGhpcy5yZWNvbmZpZ3VyZSh7IGxvY2FsZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoZSB2YWx1ZXMgb2Ygc3BlY2lmaWVkIHVuaXRzLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuXG4gICAqIFlvdSBjYW4gb25seSBzZXQgdW5pdHMgd2l0aCB0aGlzIG1ldGhvZDsgZm9yIFwic2V0dGluZ1wiIG1ldGFkYXRhLCBzZWUge0BsaW5rIERhdGVUaW1lI3JlY29uZmlndXJlfSBhbmQge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9LlxuICAgKiBAcGFyYW0ge09iamVjdH0gdmFsdWVzIC0gYSBtYXBwaW5nIG9mIHVuaXRzIHRvIG51bWJlcnNcbiAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAxNyB9KVxuICAgKiBAZXhhbXBsZSBkdC5zZXQoeyBob3VyOiA4LCBtaW51dGU6IDMwIH0pXG4gICAqIEBleGFtcGxlIGR0LnNldCh7IHdlZWtkYXk6IDUgfSlcbiAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAwNSwgb3JkaW5hbDogMjM0IH0pXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc2V0KHZhbHVlcykge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcblxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVPYmplY3QodmFsdWVzLCBub3JtYWxpemVVbml0KSxcbiAgICAgIHNldHRpbmdXZWVrU3R1ZmYgPVxuICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrWWVhcikgfHxcbiAgICAgICAgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQud2Vla051bWJlcikgfHxcbiAgICAgICAgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQud2Vla2RheSksXG4gICAgICBjb250YWluc09yZGluYWwgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5vcmRpbmFsKSxcbiAgICAgIGNvbnRhaW5zR3JlZ29yWWVhciA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLnllYXIpLFxuICAgICAgY29udGFpbnNHcmVnb3JNRCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm1vbnRoKSB8fCAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5kYXkpLFxuICAgICAgY29udGFpbnNHcmVnb3IgPSBjb250YWluc0dyZWdvclllYXIgfHwgY29udGFpbnNHcmVnb3JNRCxcbiAgICAgIGRlZmluaXRlV2Vla0RlZiA9IG5vcm1hbGl6ZWQud2Vla1llYXIgfHwgbm9ybWFsaXplZC53ZWVrTnVtYmVyO1xuXG4gICAgaWYgKChjb250YWluc0dyZWdvciB8fCBjb250YWluc09yZGluYWwpICYmIGRlZmluaXRlV2Vla0RlZikge1xuICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKFxuICAgICAgICBcIkNhbid0IG1peCB3ZWVrWWVhci93ZWVrTnVtYmVyIHVuaXRzIHdpdGggeWVhci9tb250aC9kYXkgb3Igb3JkaW5hbHNcIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGFpbnNHcmVnb3JNRCAmJiBjb250YWluc09yZGluYWwpIHtcbiAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcihcIkNhbid0IG1peCBvcmRpbmFsIGRhdGVzIHdpdGggbW9udGgvZGF5XCIpO1xuICAgIH1cblxuICAgIGxldCBtaXhlZDtcbiAgICBpZiAoc2V0dGluZ1dlZWtTdHVmZikge1xuICAgICAgbWl4ZWQgPSB3ZWVrVG9HcmVnb3JpYW4oeyAuLi5ncmVnb3JpYW5Ub1dlZWsodGhpcy5jKSwgLi4ubm9ybWFsaXplZCB9KTtcbiAgICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpKSB7XG4gICAgICBtaXhlZCA9IG9yZGluYWxUb0dyZWdvcmlhbih7IC4uLmdyZWdvcmlhblRvT3JkaW5hbCh0aGlzLmMpLCAuLi5ub3JtYWxpemVkIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBtaXhlZCA9IHsgLi4udGhpcy50b09iamVjdCgpLCAuLi5ub3JtYWxpemVkIH07XG5cbiAgICAgIC8vIGlmIHdlIGRpZG4ndCBzZXQgdGhlIGRheSBidXQgd2UgZW5kZWQgdXAgb24gYW4gb3ZlcmZsb3cgZGF0ZSxcbiAgICAgIC8vIHVzZSB0aGUgbGFzdCBkYXkgb2YgdGhlIHJpZ2h0IG1vbnRoXG4gICAgICBpZiAoaXNVbmRlZmluZWQobm9ybWFsaXplZC5kYXkpKSB7XG4gICAgICAgIG1peGVkLmRheSA9IE1hdGgubWluKGRheXNJbk1vbnRoKG1peGVkLnllYXIsIG1peGVkLm1vbnRoKSwgbWl4ZWQuZGF5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBbdHMsIG9dID0gb2JqVG9UUyhtaXhlZCwgdGhpcy5vLCB0aGlzLnpvbmUpO1xuICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHRzLCBvIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHBlcmlvZCBvZiB0aW1lIHRvIHRoaXMgRGF0ZVRpbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lXG4gICAqXG4gICAqIEFkZGluZyBob3VycywgbWludXRlcywgc2Vjb25kcywgb3IgbWlsbGlzZWNvbmRzIGluY3JlYXNlcyB0aGUgdGltZXN0YW1wIGJ5IHRoZSByaWdodCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLiBBZGRpbmcgZGF5cywgbW9udGhzLCBvciB5ZWFycyBzaGlmdHMgdGhlIGNhbGVuZGFyLCBhY2NvdW50aW5nIGZvciBEU1RzIGFuZCBsZWFwIHllYXJzIGFsb25nIHRoZSB3YXkuIFRodXMsIGBkdC5wbHVzKHsgaG91cnM6IDI0IH0pYCBtYXkgcmVzdWx0IGluIGEgZGlmZmVyZW50IHRpbWUgdGhhbiBgZHQucGx1cyh7IGRheXM6IDEgfSlgIGlmIHRoZXJlJ3MgYSBEU1Qgc2hpZnQgaW4gYmV0d2Vlbi5cbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gYWRkLiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKDEyMykgLy9+PiBpbiAxMjMgbWlsbGlzZWNvbmRzXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBtaW51dGVzOiAxNSB9KSAvL34+IGluIDE1IG1pbnV0ZXNcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkgLy9+PiB0aGlzIHRpbWUgdG9tb3Jyb3dcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IC0xIH0pIC8vfj4gdGhpcyB0aW1lIHllc3RlcmRheVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgaG91cnM6IDMsIG1pbnV0ZXM6IDEzIH0pIC8vfj4gaW4gMyBociwgMTMgbWluXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAzLCBtaW51dGVzOiAxMyB9KSkgLy9+PiBpbiAzIGhyLCAxMyBtaW5cbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBwbHVzKGR1cmF0aW9uKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pO1xuICAgIHJldHVybiBjbG9uZSh0aGlzLCBhZGp1c3RUaW1lKHRoaXMsIGR1cikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnRyYWN0IGEgcGVyaW9kIG9mIHRpbWUgdG8gdGhpcyBEYXRlVGltZSBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVcbiAgICogU2VlIHtAbGluayBEYXRlVGltZSNwbHVzfVxuICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBzdWJ0cmFjdC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KClcbiAgIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgbWludXMoZHVyYXRpb24pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbikubmVnYXRlKCk7XG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIGFkanVzdFRpbWUodGhpcywgZHVyKSk7XG4gIH1cblxuICAvKipcbiAgICogXCJTZXRcIiB0aGlzIERhdGVUaW1lIHRvIHRoZSBiZWdpbm5pbmcgb2YgYSB1bml0IG9mIHRpbWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gVGhlIHVuaXQgdG8gZ28gdG8gdGhlIGJlZ2lubmluZyBvZi4gQ2FuIGJlICd5ZWFyJywgJ3F1YXJ0ZXInLCAnbW9udGgnLCAnd2VlaycsICdkYXknLCAnaG91cicsICdtaW51dGUnLCAnc2Vjb25kJywgb3IgJ21pbGxpc2Vjb25kJy5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZignbW9udGgnKS50b0lTT0RhdGUoKTsgLy89PiAnMjAxNC0wMy0wMSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZigneWVhcicpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAxLTAxJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5zdGFydE9mKCd3ZWVrJykudG9JU09EYXRlKCk7IC8vPT4gJzIwMTQtMDMtMDMnLCB3ZWVrcyBhbHdheXMgc3RhcnQgb24gTW9uZGF5c1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuc3RhcnRPZignZGF5JykudG9JU09UaW1lKCk7IC8vPT4gJzAwOjAwLjAwMC0wNTowMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLnN0YXJ0T2YoJ2hvdXInKS50b0lTT1RpbWUoKTsgLy89PiAnMDU6MDA6MDAuMDAwLTA1OjAwJ1xuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXJ0T2YodW5pdCkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcbiAgICBjb25zdCBvID0ge30sXG4gICAgICBub3JtYWxpemVkVW5pdCA9IER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQodW5pdCk7XG4gICAgc3dpdGNoIChub3JtYWxpemVkVW5pdCkge1xuICAgICAgY2FzZSBcInllYXJzXCI6XG4gICAgICAgIG8ubW9udGggPSAxO1xuICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgICAgY2FzZSBcInF1YXJ0ZXJzXCI6XG4gICAgICBjYXNlIFwibW9udGhzXCI6XG4gICAgICAgIG8uZGF5ID0gMTtcbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICAgIGNhc2UgXCJ3ZWVrc1wiOlxuICAgICAgY2FzZSBcImRheXNcIjpcbiAgICAgICAgby5ob3VyID0gMDtcbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICAgIGNhc2UgXCJob3Vyc1wiOlxuICAgICAgICBvLm1pbnV0ZSA9IDA7XG4gICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgICBjYXNlIFwibWludXRlc1wiOlxuICAgICAgICBvLnNlY29uZCA9IDA7XG4gICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgICBjYXNlIFwic2Vjb25kc1wiOlxuICAgICAgICBvLm1pbGxpc2Vjb25kID0gMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwibWlsbGlzZWNvbmRzXCI6XG4gICAgICAgIGJyZWFrO1xuICAgICAgLy8gbm8gZGVmYXVsdCwgaW52YWxpZCB1bml0cyB0aHJvdyBpbiBub3JtYWxpemVVbml0KClcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09IFwid2Vla3NcIikge1xuICAgICAgby53ZWVrZGF5ID0gMTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09IFwicXVhcnRlcnNcIikge1xuICAgICAgY29uc3QgcSA9IE1hdGguY2VpbCh0aGlzLm1vbnRoIC8gMyk7XG4gICAgICBvLm1vbnRoID0gKHEgLSAxKSAqIDMgKyAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNldChvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoaXMgRGF0ZVRpbWUgdG8gdGhlIGVuZCAobWVhbmluZyB0aGUgbGFzdCBtaWxsaXNlY29uZCkgb2YgYSB1bml0IG9mIHRpbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBUaGUgdW5pdCB0byBnbyB0byB0aGUgZW5kIG9mLiBDYW4gYmUgJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLCBvciAnbWlsbGlzZWNvbmQnLlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignbW9udGgnKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTMxVDIzOjU5OjU5Ljk5OS0wNTowMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuZW5kT2YoJ3llYXInKS50b0lTTygpOyAvLz0+ICcyMDE0LTEyLTMxVDIzOjU5OjU5Ljk5OS0wNTowMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuZW5kT2YoJ3dlZWsnKS50b0lTTygpOyAvLyA9PiAnMjAxNC0wMy0wOVQyMzo1OTo1OS45OTktMDU6MDAnLCB3ZWVrcyBzdGFydCBvbiBNb25kYXlzXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5lbmRPZignZGF5JykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0wM1QyMzo1OTo1OS45OTktMDU6MDAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5lbmRPZignaG91cicpLnRvSVNPKCk7IC8vPT4gJzIwMTQtMDMtMDNUMDU6NTk6NTkuOTk5LTA1OjAwJ1xuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIGVuZE9mKHVuaXQpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkXG4gICAgICA/IHRoaXMucGx1cyh7IFt1bml0XTogMSB9KVxuICAgICAgICAgIC5zdGFydE9mKHVuaXQpXG4gICAgICAgICAgLm1pbnVzKDEpXG4gICAgICA6IHRoaXM7XG4gIH1cblxuICAvLyBPVVRQVVRcblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nLlxuICAgKiAqKllvdSBtYXkgbm90IHdhbnQgdGhpcy4qKiBTZWUge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3IgYSBtb3JlIGZsZXhpYmxlIGZvcm1hdHRpbmcgdG9vbC4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvZm9ybWF0dGluZz9pZD10YWJsZS1vZi10b2tlbnMpLlxuICAgKiBEZWZhdWx0cyB0byBlbi1VUyBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkLCByZWdhcmRsZXNzIG9mIHRoZSBzeXN0ZW0ncyBsb2NhbGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdHMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbiB0aGlzIERhdGVUaW1lXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvRm9ybWF0KCd5eXl5IExMTCBkZCcpIC8vPT4gJzIwMTcgQXByIDIyJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoJ2ZyJykudG9Gb3JtYXQoJ3l5eXkgTExMIGRkJykgLy89PiAnMjAxNyBhdnIuIDIyJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnLCB7IGxvY2FsZTogXCJmclwiIH0pIC8vPT4gJzIwMTcgYXZyLiAyMidcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Gb3JtYXQoXCJISCAnaG91cnMgYW5kJyBtbSAnbWludXRlcydcIikgLy89PiAnMjAgaG91cnMgYW5kIDU1IG1pbnV0ZXMnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvRm9ybWF0KGZtdCwgb3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZFxuICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLnJlZGVmYXVsdFRvRU4ob3B0cykpLmZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyh0aGlzLCBmbXQpXG4gICAgICA6IElOVkFMSUQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxvY2FsaXplZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoaXMgZGF0ZS4gQWNjZXB0cyB0aGUgc2FtZSBvcHRpb25zIGFzIHRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIGFuZCBhbnkgcHJlc2V0cyBkZWZpbmVkIGJ5IEx1eG9uLCBzdWNoIGFzIGBEYXRlVGltZS5EQVRFX0ZVTExgIG9yIGBEYXRlVGltZS5USU1FX1NJTVBMRWAuXG4gICAqIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZCBpcyBicm93c2VyLXNwZWNpZmljLCBidXQgaW4gZ2VuZXJhbCBpdCB3aWxsIHJldHVybiBhbiBhcHByb3ByaWF0ZSByZXByZXNlbnRhdGlvblxuICAgKiBvZiB0aGUgRGF0ZVRpbWUgaW4gdGhlIGFzc2lnbmVkIGxvY2FsZS5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXRcbiAgICogQHBhcmFtIGZvcm1hdE9wdHMge09iamVjdH0gLSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIG9wdGlvbnMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdHMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbiB0aGlzIERhdGVUaW1lXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKCk7IC8vPT4gNC8yMC8yMDE3XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgnZW4tZ2InKS50b0xvY2FsZVN0cmluZygpOyAvLz0+ICcyMC8wNC8yMDE3J1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IGxvY2FsZTogJ2VuLWdiJyB9KTsgLy89PiAnMjAvMDQvMjAxNydcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuREFURV9GVUxMKTsgLy89PiAnQXByaWwgMjAsIDIwMTcnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLlRJTUVfU0lNUExFKTsgLy89PiAnMTE6MzIgQU0nXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVUSU1FX1NIT1JUKTsgLy89PiAnNC8yMC8yMDE3LCAxMTozMiBBTSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoeyB3ZWVrZGF5OiAnbG9uZycsIG1vbnRoOiAnbG9uZycsIGRheTogJzItZGlnaXQnIH0pOyAvLz0+ICdUaHVyc2RheSwgQXByaWwgMjAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKHsgd2Vla2RheTogJ3Nob3J0JywgbW9udGg6ICdzaG9ydCcsIGRheTogJzItZGlnaXQnLCBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnIH0pOyAvLz0+ICdUaHUsIEFwciAyMCwgMTE6MjcgQU0nXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKHsgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JywgaG91ckN5Y2xlOiAnaDIzJyB9KTsgLy89PiAnMTE6MzInXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvTG9jYWxlU3RyaW5nKGZvcm1hdE9wdHMgPSBGb3JtYXRzLkRBVEVfU0hPUlQsIG9wdHMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRcbiAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZSh0aGlzLmxvYy5jbG9uZShvcHRzKSwgZm9ybWF0T3B0cykuZm9ybWF0RGF0ZVRpbWUodGhpcylcbiAgICAgIDogSU5WQUxJRDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGZvcm1hdCBcInBhcnRzXCIsIG1lYW5pbmcgaW5kaXZpZHVhbCB0b2tlbnMgYWxvbmcgd2l0aCBtZXRhZGF0YS4gVGhpcyBpcyBhbGxvd3MgY2FsbGVycyB0byBwb3N0LXByb2Nlc3MgaW5kaXZpZHVhbCBzZWN0aW9ucyBvZiB0aGUgZm9ybWF0dGVkIG91dHB1dC5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQvZm9ybWF0VG9QYXJ0c1xuICAgKiBAcGFyYW0gb3B0cyB7T2JqZWN0fSAtIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3Igb3B0aW9ucywgc2FtZSBhcyBgdG9Mb2NhbGVTdHJpbmdgLlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVBhcnRzKCk7IC8vPT4gW1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ2RheScsIHZhbHVlOiAnMjUnIH0sXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnbGl0ZXJhbCcsIHZhbHVlOiAnLycgfSxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdtb250aCcsIHZhbHVlOiAnMDUnIH0sXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnbGl0ZXJhbCcsIHZhbHVlOiAnLycgfSxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICd5ZWFyJywgdmFsdWU6ICcxOTgyJyB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+IF1cbiAgICovXG4gIHRvTG9jYWxlUGFydHMob3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZFxuICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLmNsb25lKG9wdHMpLCBvcHRzKS5mb3JtYXREYXRlVGltZVBhcnRzKHRoaXMpXG4gICAgICA6IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDBcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDBcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDE5ODMsIDUsIDI1KS50b0lTTygpIC8vPT4gJzE5ODItMDUtMjVUMDA6MDA6MDAuMDAwWidcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oKSAvLz0+ICcyMDE3LTA0LTIyVDIwOjQ3OjA1LjMzNS0wNDowMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE3LTA0LTIyVDIwOjQ3OjA1LjMzNSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oeyBmb3JtYXQ6ICdiYXNpYycgfSkgLy89PiAnMjAxNzA0MjJUMjA0NzA1LjMzNS0wNDAwJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0lTTyh7XG4gICAgZm9ybWF0ID0gXCJleHRlbmRlZFwiLFxuICAgIHN1cHByZXNzU2Vjb25kcyA9IGZhbHNlLFxuICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzID0gZmFsc2UsXG4gICAgaW5jbHVkZU9mZnNldCA9IHRydWUsXG4gIH0gPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBleHQgPSBmb3JtYXQgPT09IFwiZXh0ZW5kZWRcIjtcblxuICAgIGxldCBjID0gdG9JU09EYXRlKHRoaXMsIGV4dCk7XG4gICAgYyArPSBcIlRcIjtcbiAgICBjICs9IHRvSVNPVGltZSh0aGlzLCBleHQsIHN1cHByZXNzU2Vjb25kcywgc3VwcHJlc3NNaWxsaXNlY29uZHMsIGluY2x1ZGVPZmZzZXQpO1xuICAgIHJldHVybiBjO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lJ3MgZGF0ZSBjb21wb25lbnRcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBjaG9vc2UgYmV0d2VlbiB0aGUgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MiwgNSwgMjUpLnRvSVNPRGF0ZSgpIC8vPT4gJzE5ODItMDUtMjUnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09EYXRlKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzE5ODIwNTI1J1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0lTT0RhdGUoeyBmb3JtYXQgPSBcImV4dGVuZGVkXCIgfSA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0b0lTT0RhdGUodGhpcywgZm9ybWF0ID09PSBcImV4dGVuZGVkXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lJ3Mgd2VlayBkYXRlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09XZWVrRGF0ZSgpIC8vPT4gJzE5ODItVzIxLTInXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSVNPV2Vla0RhdGUoKSB7XG4gICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCBcImtra2stJ1cnV1ctY1wiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIHRpbWUgY29tcG9uZW50XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDBcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDBcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJ1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVQcmVmaXg9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgYFRgIHByZWZpeFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCB9KS50b0lTT1RpbWUoKSAvLz0+ICcwNzozNDoxOS4zNjFaJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0LCBzZWNvbmRzOiAwLCBtaWxsaXNlY29uZHM6IDAgfSkudG9JU09UaW1lKHsgc3VwcHJlc3NTZWNvbmRzOiB0cnVlIH0pIC8vPT4gJzA3OjM0WidcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCB9KS50b0lTT1RpbWUoeyBmb3JtYXQ6ICdiYXNpYycgfSkgLy89PiAnMDczNDE5LjM2MVonXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQgfSkudG9JU09UaW1lKHsgaW5jbHVkZVByZWZpeDogdHJ1ZSB9KSAvLz0+ICdUMDc6MzQ6MTkuMzYxWidcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU09UaW1lKHtcbiAgICBzdXBwcmVzc01pbGxpc2Vjb25kcyA9IGZhbHNlLFxuICAgIHN1cHByZXNzU2Vjb25kcyA9IGZhbHNlLFxuICAgIGluY2x1ZGVPZmZzZXQgPSB0cnVlLFxuICAgIGluY2x1ZGVQcmVmaXggPSBmYWxzZSxcbiAgICBmb3JtYXQgPSBcImV4dGVuZGVkXCIsXG4gIH0gPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgYyA9IGluY2x1ZGVQcmVmaXggPyBcIlRcIiA6IFwiXCI7XG4gICAgcmV0dXJuIChcbiAgICAgIGMgK1xuICAgICAgdG9JU09UaW1lKHRoaXMsIGZvcm1hdCA9PT0gXCJleHRlbmRlZFwiLCBzdXBwcmVzc1NlY29uZHMsIHN1cHByZXNzTWlsbGlzZWNvbmRzLCBpbmNsdWRlT2Zmc2V0KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBSRkMgMjgyMi1jb21wYXRpYmxlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9SRkMyODIyKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCArMDAwMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvUkZDMjgyMigpIC8vPT4gJ1N1biwgMTMgSnVsIDIwMTQgMDA6MDA6MDAgLTA0MDAnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvUkZDMjgyMigpIHtcbiAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMsIFwiRUVFLCBkZCBMTEwgeXl5eSBISDptbTpzcyBaWlpcIiwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIEhUVFAgaGVhZGVycy4gVGhlIG91dHB1dCBpcyBhbHdheXMgZXhwcmVzc2VkIGluIEdNVC5cbiAgICogU3BlY2lmaWNhbGx5LCB0aGUgc3RyaW5nIGNvbmZvcm1zIHRvIFJGQyAxMTIzLlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzMuaHRtbCNzZWMzLjMuMVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvSFRUUCgpIC8vPT4gJ1N1biwgMTMgSnVsIDIwMTQgMDA6MDA6MDAgR01UJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMsIDE5KS50b0hUVFAoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDE5OjAwOjAwIEdNVCdcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9IVFRQKCkge1xuICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcy50b1VUQygpLCBcIkVFRSwgZGQgTExMIHl5eXkgSEg6bW06c3MgJ0dNVCdcIik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIERhdGVcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b1NRTERhdGUoKSAvLz0+ICcyMDE0LTA3LTEzJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b1NRTERhdGUoKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdG9JU09EYXRlKHRoaXMsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIFNRTCBUaW1lXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVab25lPWZhbHNlXSAtIGluY2x1ZGUgdGhlIHpvbmUsIHN1Y2ggYXMgJ0FtZXJpY2EvTmV3X1lvcmsnLiBPdmVycmlkZXMgaW5jbHVkZU9mZnNldC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS50b1NRTCgpIC8vPT4gJzA1OjE1OjE2LjM0NSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9TUUwoKSAvLz0+ICcwNToxNToxNi4zNDUgLTA0OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b1NRTCh7IGluY2x1ZGVPZmZzZXQ6IGZhbHNlIH0pIC8vPT4gJzA1OjE1OjE2LjM0NSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9TUUwoeyBpbmNsdWRlWm9uZTogZmFsc2UgfSkgLy89PiAnMDU6MTU6MTYuMzQ1IEFtZXJpY2EvTmV3X1lvcmsnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvU1FMVGltZSh7IGluY2x1ZGVPZmZzZXQgPSB0cnVlLCBpbmNsdWRlWm9uZSA9IGZhbHNlIH0gPSB7fSkge1xuICAgIGxldCBmbXQgPSBcIkhIOm1tOnNzLlNTU1wiO1xuXG4gICAgaWYgKGluY2x1ZGVab25lIHx8IGluY2x1ZGVPZmZzZXQpIHtcbiAgICAgIGZtdCArPSBcIiBcIjtcbiAgICAgIGlmIChpbmNsdWRlWm9uZSkge1xuICAgICAgICBmbXQgKz0gXCJ6XCI7XG4gICAgICB9IGVsc2UgaWYgKGluY2x1ZGVPZmZzZXQpIHtcbiAgICAgICAgZm10ICs9IFwiWlpcIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMsIGZtdCwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVab25lPWZhbHNlXSAtIGluY2x1ZGUgdGhlIHpvbmUsIHN1Y2ggYXMgJ0FtZXJpY2EvTmV3X1lvcmsnLiBPdmVycmlkZXMgaW5jbHVkZU9mZnNldC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvU1FMKCkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAgWidcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvU1FMKCkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAgLTA0OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvU1FMKHsgaW5jbHVkZVpvbmU6IHRydWUgfSkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAgQW1lcmljYS9OZXdfWW9yaydcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9TUUwob3B0cyA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0aGlzLnRvU1FMRGF0ZSgpfSAke3RoaXMudG9TUUxUaW1lKG9wdHMpfWA7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciBkZWJ1Z2dpbmdcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudG9JU08oKSA6IElOVkFMSUQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZXBvY2ggbWlsbGlzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuIEFsaWFzIG9mIHtAbGluayBEYXRlVGltZSN0b01pbGxpc31cbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgdmFsdWVPZigpIHtcbiAgICByZXR1cm4gdGhpcy50b01pbGxpcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGVwb2NoIG1pbGxpc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICB0b01pbGxpcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy50cyA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIHRvU2Vjb25kcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy50cyAvIDEwMDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSlNPTi5cbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLnRvSVNPKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIEJTT04gc2VyaWFsaXphYmxlIGVxdWl2YWxlbnQgdG8gdGhpcyBEYXRlVGltZS5cbiAgICogQHJldHVybiB7RGF0ZX1cbiAgICovXG4gIHRvQlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy50b0pTRGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHRoaXMgRGF0ZVRpbWUncyB5ZWFyLCBtb250aCwgZGF5LCBhbmQgc28gb24uXG4gICAqIEBwYXJhbSBvcHRzIC0gb3B0aW9ucyBmb3IgZ2VuZXJhdGluZyB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZUNvbmZpZz1mYWxzZV0gLSBpbmNsdWRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidXRlcyBpbiB0aGUgb3V0cHV0XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvT2JqZWN0KCkgLy89PiB7IHllYXI6IDIwMTcsIG1vbnRoOiA0LCBkYXk6IDIyLCBob3VyOiAyMCwgbWludXRlOiA0OSwgc2Vjb25kOiA0MiwgbWlsbGlzZWNvbmQ6IDI2OCB9XG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIHRvT2JqZWN0KG9wdHMgPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4ge307XG5cbiAgICBjb25zdCBiYXNlID0geyAuLi50aGlzLmMgfTtcblxuICAgIGlmIChvcHRzLmluY2x1ZGVDb25maWcpIHtcbiAgICAgIGJhc2Uub3V0cHV0Q2FsZW5kYXIgPSB0aGlzLm91dHB1dENhbGVuZGFyO1xuICAgICAgYmFzZS5udW1iZXJpbmdTeXN0ZW0gPSB0aGlzLmxvYy5udW1iZXJpbmdTeXN0ZW07XG4gICAgICBiYXNlLmxvY2FsZSA9IHRoaXMubG9jLmxvY2FsZTtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgRGF0ZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuXG4gICAqIEByZXR1cm4ge0RhdGV9XG4gICAqL1xuICB0b0pTRGF0ZSgpIHtcbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy5pc1ZhbGlkID8gdGhpcy50cyA6IE5hTik7XG4gIH1cblxuICAvLyBDT01QQVJFXG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBEYXRlVGltZXMgYXMgYSBEdXJhdGlvbi5cbiAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXJEYXRlVGltZSAtIHRoZSBEYXRlVGltZSB0byBjb21wYXJlIHRoaXMgb25lIHRvXG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIGFycmF5IG9mIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvbi5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlXG4gICAqIEBleGFtcGxlXG4gICAqIHZhciBpMSA9IERhdGVUaW1lLmZyb21JU08oJzE5ODItMDUtMjVUMDk6NDUnKSxcbiAgICogICAgIGkyID0gRGF0ZVRpbWUuZnJvbUlTTygnMTk4My0xMC0xNFQxMDozMCcpO1xuICAgKiBpMi5kaWZmKGkxKS50b09iamVjdCgpIC8vPT4geyBtaWxsaXNlY29uZHM6IDQzODA3NTAwMDAwIH1cbiAgICogaTIuZGlmZihpMSwgJ2hvdXJzJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDEyMTY4Ljc1IH1cbiAgICogaTIuZGlmZihpMSwgWydtb250aHMnLCAnZGF5cyddKS50b09iamVjdCgpIC8vPT4geyBtb250aHM6IDE2LCBkYXlzOiAxOS4wMzEyNSB9XG4gICAqIGkyLmRpZmYoaTEsIFsnbW9udGhzJywgJ2RheXMnLCAnaG91cnMnXSkudG9PYmplY3QoKSAvLz0+IHsgbW9udGhzOiAxNiwgZGF5czogMTksIGhvdXJzOiAwLjc1IH1cbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBkaWZmKG90aGVyRGF0ZVRpbWUsIHVuaXQgPSBcIm1pbGxpc2Vjb25kc1wiLCBvcHRzID0ge30pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhb3RoZXJEYXRlVGltZS5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gRHVyYXRpb24uaW52YWxpZChcImNyZWF0ZWQgYnkgZGlmZmluZyBhbiBpbnZhbGlkIERhdGVUaW1lXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGR1ck9wdHMgPSB7IGxvY2FsZTogdGhpcy5sb2NhbGUsIG51bWJlcmluZ1N5c3RlbTogdGhpcy5udW1iZXJpbmdTeXN0ZW0sIC4uLm9wdHMgfTtcblxuICAgIGNvbnN0IHVuaXRzID0gbWF5YmVBcnJheSh1bml0KS5tYXAoRHVyYXRpb24ubm9ybWFsaXplVW5pdCksXG4gICAgICBvdGhlcklzTGF0ZXIgPSBvdGhlckRhdGVUaW1lLnZhbHVlT2YoKSA+IHRoaXMudmFsdWVPZigpLFxuICAgICAgZWFybGllciA9IG90aGVySXNMYXRlciA/IHRoaXMgOiBvdGhlckRhdGVUaW1lLFxuICAgICAgbGF0ZXIgPSBvdGhlcklzTGF0ZXIgPyBvdGhlckRhdGVUaW1lIDogdGhpcyxcbiAgICAgIGRpZmZlZCA9IGRpZmYoZWFybGllciwgbGF0ZXIsIHVuaXRzLCBkdXJPcHRzKTtcblxuICAgIHJldHVybiBvdGhlcklzTGF0ZXIgPyBkaWZmZWQubmVnYXRlKCkgOiBkaWZmZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBEYXRlVGltZSBhbmQgcmlnaHQgbm93LlxuICAgKiBTZWUge0BsaW5rIERhdGVUaW1lI2RpZmZ9XG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIHVuaXRzIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvblxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdGhhdCBhZmZlY3QgdGhlIGNyZWF0aW9uIG9mIHRoZSBEdXJhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2VcbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBkaWZmTm93KHVuaXQgPSBcIm1pbGxpc2Vjb25kc1wiLCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5kaWZmKERhdGVUaW1lLm5vdygpLCB1bml0LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgc3Bhbm5pbmcgYmV0d2VlbiB0aGlzIERhdGVUaW1lIGFuZCBhbm90aGVyIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyRGF0ZVRpbWUgLSB0aGUgb3RoZXIgZW5kIHBvaW50IG9mIHRoZSBJbnRlcnZhbFxuICAgKiBAcmV0dXJuIHtJbnRlcnZhbH1cbiAgICovXG4gIHVudGlsKG90aGVyRGF0ZVRpbWUpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyh0aGlzLCBvdGhlckRhdGVUaW1lKSA6IHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBEYXRlVGltZSBpcyBpbiB0aGUgc2FtZSB1bml0IG9mIHRpbWUgYXMgYW5vdGhlciBEYXRlVGltZS5cbiAgICogSGlnaGVyLW9yZGVyIHVuaXRzIG11c3QgYWxzbyBiZSBpZGVudGljYWwgZm9yIHRoaXMgZnVuY3Rpb24gdG8gcmV0dXJuIGB0cnVlYC5cbiAgICogTm90ZSB0aGF0IHRpbWUgem9uZXMgYXJlICoqaWdub3JlZCoqIGluIHRoaXMgY29tcGFyaXNvbiwgd2hpY2ggY29tcGFyZXMgdGhlICoqbG9jYWwqKiBjYWxlbmRhciB0aW1lLiBVc2Uge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9IHRvIGNvbnZlcnQgb25lIG9mIHRoZSBkYXRlcyBpZiBuZWVkZWQuXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyRGF0ZVRpbWUgLSB0aGUgb3RoZXIgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNoZWNrIHNhbWVuZXNzIG9uXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLmhhc1NhbWUob3RoZXJEVCwgJ2RheScpOyAvL34+IHRydWUgaWYgb3RoZXJEVCBpcyBpbiB0aGUgc2FtZSBjdXJyZW50IGNhbGVuZGFyIGRheVxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaGFzU2FtZShvdGhlckRhdGVUaW1lLCB1bml0KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IGlucHV0TXMgPSBvdGhlckRhdGVUaW1lLnZhbHVlT2YoKTtcbiAgICBjb25zdCBhZGp1c3RlZFRvWm9uZSA9IHRoaXMuc2V0Wm9uZShvdGhlckRhdGVUaW1lLnpvbmUsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KTtcbiAgICByZXR1cm4gYWRqdXN0ZWRUb1pvbmUuc3RhcnRPZih1bml0KSA8PSBpbnB1dE1zICYmIGlucHV0TXMgPD0gYWRqdXN0ZWRUb1pvbmUuZW5kT2YodW5pdCk7XG4gIH1cblxuICAvKipcbiAgICogRXF1YWxpdHkgY2hlY2tcbiAgICogVHdvIERhdGVUaW1lcyBhcmUgZXF1YWwgaWZmIHRoZXkgcmVwcmVzZW50IHRoZSBzYW1lIG1pbGxpc2Vjb25kLCBoYXZlIHRoZSBzYW1lIHpvbmUgYW5kIGxvY2F0aW9uLCBhbmQgYXJlIGJvdGggdmFsaWQuXG4gICAqIFRvIGNvbXBhcmUganVzdCB0aGUgbWlsbGlzZWNvbmQgdmFsdWVzLCB1c2UgYCtkdDEgPT09ICtkdDJgLlxuICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlciAtIHRoZSBvdGhlciBEYXRlVGltZVxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgZXF1YWxzKG90aGVyKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaXNWYWxpZCAmJlxuICAgICAgb3RoZXIuaXNWYWxpZCAmJlxuICAgICAgdGhpcy52YWx1ZU9mKCkgPT09IG90aGVyLnZhbHVlT2YoKSAmJlxuICAgICAgdGhpcy56b25lLmVxdWFscyhvdGhlci56b25lKSAmJlxuICAgICAgdGhpcy5sb2MuZXF1YWxzKG90aGVyLmxvYylcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSB0aGlzIHRpbWUgcmVsYXRpdmUgdG8gbm93LCBzdWNoIGFzIFwiaW4gdHdvIGRheXNcIi4gQ2FuIG9ubHkgaW50ZXJuYXRpb25hbGl6ZSBpZiB5b3VyXG4gICAqIHBsYXRmb3JtIHN1cHBvcnRzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LiBSb3VuZHMgZG93biBieSBkZWZhdWx0LlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIG9wdGlvbnMgdGhhdCBhZmZlY3QgdGhlIG91dHB1dFxuICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBbb3B0aW9ucy5iYXNlPURhdGVUaW1lLm5vdygpXSAtIHRoZSBEYXRlVGltZSB0byB1c2UgYXMgdGhlIGJhc2lzIHRvIHdoaWNoIHRoaXMgdGltZSBpcyBjb21wYXJlZC4gRGVmYXVsdHMgdG8gbm93LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuc3R5bGU9XCJsb25nXCJdIC0gdGhlIHN0eWxlIG9mIHVuaXRzLCBtdXN0IGJlIFwibG9uZ1wiLCBcInNob3J0XCIsIG9yIFwibmFycm93XCJcbiAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IG9wdGlvbnMudW5pdCAtIHVzZSBhIHNwZWNpZmljIHVuaXQgb3IgYXJyYXkgb2YgdW5pdHM7IGlmIG9taXR0ZWQsIG9yIGFuIGFycmF5LCB0aGUgbWV0aG9kIHdpbGwgcGljayB0aGUgYmVzdCB1bml0LiBVc2UgYW4gYXJyYXkgb3Igb25lIG9mIFwieWVhcnNcIiwgXCJxdWFydGVyc1wiLCBcIm1vbnRoc1wiLCBcIndlZWtzXCIsIFwiZGF5c1wiLCBcImhvdXJzXCIsIFwibWludXRlc1wiLCBvciBcInNlY29uZHNcIlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnJvdW5kPXRydWVdIC0gd2hldGhlciB0byByb3VuZCB0aGUgbnVtYmVycyBpbiB0aGUgb3V0cHV0LlxuICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMucGFkZGluZz0wXSAtIHBhZGRpbmcgaW4gbWlsbGlzZWNvbmRzLiBUaGlzIGFsbG93cyB5b3UgdG8gcm91bmQgdXAgdGhlIHJlc3VsdCBpZiBpdCBmaXRzIGluc2lkZSB0aGUgdGhyZXNob2xkLiBEb24ndCB1c2UgaW4gY29tYmluYXRpb24gd2l0aCB7cm91bmQ6IGZhbHNlfSBiZWNhdXNlIHRoZSBkZWNpbWFsIG91dHB1dCB3aWxsIGluY2x1ZGUgdGhlIHBhZGRpbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmxvY2FsZSAtIG92ZXJyaWRlIHRoZSBsb2NhbGUgb2YgdGhpcyBEYXRlVGltZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSBvdmVycmlkZSB0aGUgbnVtYmVyaW5nU3lzdGVtIG9mIHRoaXMgRGF0ZVRpbWUuIFRoZSBJbnRsIHN5c3RlbSBtYXkgY2hvb3NlIG5vdCB0byBob25vciB0aGlzXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmUoKSAvLz0+IFwiaW4gMSBkYXlcIlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoXCJlc1wiKS50b1JlbGF0aXZlKHsgZGF5czogMSB9KSAvLz0+IFwiZGVudHJvIGRlIDEgZFx1MDBFRGFcIlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlKHsgbG9jYWxlOiBcImZyXCIgfSkgLy89PiBcImRhbnMgMjMgaGV1cmVzXCJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkubWludXMoeyBkYXlzOiAyIH0pLnRvUmVsYXRpdmUoKSAvLz0+IFwiMiBkYXlzIGFnb1wiXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKHsgdW5pdDogXCJob3Vyc1wiIH0pIC8vPT4gXCI0OCBob3VycyBhZ29cIlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGhvdXJzOiAzNiB9KS50b1JlbGF0aXZlKHsgcm91bmQ6IGZhbHNlIH0pIC8vPT4gXCIxLjUgZGF5cyBhZ29cIlxuICAgKi9cbiAgdG9SZWxhdGl2ZShvcHRpb25zID0ge30pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgYmFzZSA9IG9wdGlvbnMuYmFzZSB8fCBEYXRlVGltZS5mcm9tT2JqZWN0KHt9LCB7IHpvbmU6IHRoaXMuem9uZSB9KSxcbiAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcgPyAodGhpcyA8IGJhc2UgPyAtb3B0aW9ucy5wYWRkaW5nIDogb3B0aW9ucy5wYWRkaW5nKSA6IDA7XG4gICAgbGV0IHVuaXRzID0gW1wieWVhcnNcIiwgXCJtb250aHNcIiwgXCJkYXlzXCIsIFwiaG91cnNcIiwgXCJtaW51dGVzXCIsIFwic2Vjb25kc1wiXTtcbiAgICBsZXQgdW5pdCA9IG9wdGlvbnMudW5pdDtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLnVuaXQpKSB7XG4gICAgICB1bml0cyA9IG9wdGlvbnMudW5pdDtcbiAgICAgIHVuaXQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBkaWZmUmVsYXRpdmUoYmFzZSwgdGhpcy5wbHVzKHBhZGRpbmcpLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbnVtZXJpYzogXCJhbHdheXNcIixcbiAgICAgIHVuaXRzLFxuICAgICAgdW5pdCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgZGF0ZSByZWxhdGl2ZSB0byB0b2RheSwgc3VjaCBhcyBcInllc3RlcmRheVwiIG9yIFwibmV4dCBtb250aFwiLlxuICAgKiBPbmx5IGludGVybmF0aW9uYWxpemVzIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnRzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIG9wdGlvbnMgdGhhdCBhZmZlY3QgdGhlIG91dHB1dFxuICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBbb3B0aW9ucy5iYXNlPURhdGVUaW1lLm5vdygpXSAtIHRoZSBEYXRlVGltZSB0byB1c2UgYXMgdGhlIGJhc2lzIHRvIHdoaWNoIHRoaXMgdGltZSBpcyBjb21wYXJlZC4gRGVmYXVsdHMgdG8gbm93LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5sb2NhbGUgLSBvdmVycmlkZSB0aGUgbG9jYWxlIG9mIHRoaXMgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMudW5pdCAtIHVzZSBhIHNwZWNpZmljIHVuaXQ7IGlmIG9taXR0ZWQsIHRoZSBtZXRob2Qgd2lsbCBwaWNrIHRoZSB1bml0LiBVc2Ugb25lIG9mIFwieWVhcnNcIiwgXCJxdWFydGVyc1wiLCBcIm1vbnRoc1wiLCBcIndlZWtzXCIsIG9yIFwiZGF5c1wiXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIG92ZXJyaWRlIHRoZSBudW1iZXJpbmdTeXN0ZW0gb2YgdGhpcyBEYXRlVGltZS4gVGhlIEludGwgc3lzdGVtIG1heSBjaG9vc2Ugbm90IHRvIGhvbm9yIHRoaXNcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZUNhbGVuZGFyKCkgLy89PiBcInRvbW9ycm93XCJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkuc2V0TG9jYWxlKFwiZXNcIikucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZSgpIC8vPT4gXCJcIm1hXHUwMEYxYW5hXCJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZUNhbGVuZGFyKHsgbG9jYWxlOiBcImZyXCIgfSkgLy89PiBcImRlbWFpblwiXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoKSAvLz0+IFwiMiBkYXlzIGFnb1wiXG4gICAqL1xuICB0b1JlbGF0aXZlQ2FsZW5kYXIob3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIGRpZmZSZWxhdGl2ZShvcHRpb25zLmJhc2UgfHwgRGF0ZVRpbWUuZnJvbU9iamVjdCh7fSwgeyB6b25lOiB0aGlzLnpvbmUgfSksIHRoaXMsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBudW1lcmljOiBcImF1dG9cIixcbiAgICAgIHVuaXRzOiBbXCJ5ZWFyc1wiLCBcIm1vbnRoc1wiLCBcImRheXNcIl0sXG4gICAgICBjYWxlbmRhcnk6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBtaW4gb2Ygc2V2ZXJhbCBkYXRlIHRpbWVzXG4gICAqIEBwYXJhbSB7Li4uRGF0ZVRpbWV9IGRhdGVUaW1lcyAtIHRoZSBEYXRlVGltZXMgZnJvbSB3aGljaCB0byBjaG9vc2UgdGhlIG1pbmltdW1cbiAgICogQHJldHVybiB7RGF0ZVRpbWV9IHRoZSBtaW4gRGF0ZVRpbWUsIG9yIHVuZGVmaW5lZCBpZiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudFxuICAgKi9cbiAgc3RhdGljIG1pbiguLi5kYXRlVGltZXMpIHtcbiAgICBpZiAoIWRhdGVUaW1lcy5ldmVyeShEYXRlVGltZS5pc0RhdGVUaW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFwibWluIHJlcXVpcmVzIGFsbCBhcmd1bWVudHMgYmUgRGF0ZVRpbWVzXCIpO1xuICAgIH1cbiAgICByZXR1cm4gYmVzdEJ5KGRhdGVUaW1lcywgKGkpID0+IGkudmFsdWVPZigpLCBNYXRoLm1pbik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBtYXggb2Ygc2V2ZXJhbCBkYXRlIHRpbWVzXG4gICAqIEBwYXJhbSB7Li4uRGF0ZVRpbWV9IGRhdGVUaW1lcyAtIHRoZSBEYXRlVGltZXMgZnJvbSB3aGljaCB0byBjaG9vc2UgdGhlIG1heGltdW1cbiAgICogQHJldHVybiB7RGF0ZVRpbWV9IHRoZSBtYXggRGF0ZVRpbWUsIG9yIHVuZGVmaW5lZCBpZiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudFxuICAgKi9cbiAgc3RhdGljIG1heCguLi5kYXRlVGltZXMpIHtcbiAgICBpZiAoIWRhdGVUaW1lcy5ldmVyeShEYXRlVGltZS5pc0RhdGVUaW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFwibWF4IHJlcXVpcmVzIGFsbCBhcmd1bWVudHMgYmUgRGF0ZVRpbWVzXCIpO1xuICAgIH1cbiAgICByZXR1cm4gYmVzdEJ5KGRhdGVUaW1lcywgKGkpID0+IGkudmFsdWVPZigpLCBNYXRoLm1heCk7XG4gIH1cblxuICAvLyBNSVNDXG5cbiAgLyoqXG4gICAqIEV4cGxhaW4gaG93IGEgc3RyaW5nIHdvdWxkIGJlIHBhcnNlZCBieSBmcm9tRm9ybWF0KClcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHRoZSBzdHJpbmcgaXMgZXhwZWN0ZWQgdG8gYmUgaW4gKHNlZSBkZXNjcmlwdGlvbilcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRha2VuIGJ5IGZyb21Gb3JtYXQoKVxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZnJvbUZvcm1hdEV4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwgfSA9IG9wdGlvbnMsXG4gICAgICBsb2NhbGVUb1VzZSA9IExvY2FsZS5mcm9tT3B0cyh7XG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgbnVtYmVyaW5nU3lzdGVtLFxuICAgICAgICBkZWZhdWx0VG9FTjogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIHJldHVybiBleHBsYWluRnJvbVRva2Vucyhsb2NhbGVUb1VzZSwgdGV4dCwgZm10KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgZnJvbUZvcm1hdEV4cGxhaW4gaW5zdGVhZFxuICAgKi9cbiAgc3RhdGljIGZyb21TdHJpbmdFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXRFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyk7XG4gIH1cblxuICAvLyBGT1JNQVQgUFJFU0VUU1xuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlIDEwLzE0LzE5ODNcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURV9TSE9SVCgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFX1NIT1JUO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MydcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURV9NRUQoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURV9NRUQ7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpLCBPY3QgMTQsIDE5ODMnXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVfTUVEX1dJVEhfV0VFS0RBWSgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFX01FRF9XSVRIX1dFRUtEQVk7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MydcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURV9GVUxMKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVfRlVMTDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdUdWVzZGF5LCBPY3RvYmVyIDE0LCAxOTgzJ1xuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFX0hVR0UoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURV9IVUdFO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IFRJTUVfU0lNUExFKCkge1xuICAgIHJldHVybiBGb3JtYXRzLlRJTUVfU0lNUExFO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IFRJTUVfV0lUSF9TRUNPTkRTKCkge1xuICAgIHJldHVybiBGb3JtYXRzLlRJTUVfV0lUSF9TRUNPTkRTO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBUSU1FX1dJVEhfU0hPUlRfT0ZGU0VUKCkge1xuICAgIHJldHVybiBGb3JtYXRzLlRJTUVfV0lUSF9TSE9SVF9PRkZTRVQ7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgQU0gRWFzdGVybiBEYXlsaWdodCBUaW1lJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IFRJTUVfV0lUSF9MT05HX09GRlNFVCgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5USU1FX1dJVEhfTE9OR19PRkZTRVQ7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzAnLCBhbHdheXMgMjQtaG91ci5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgVElNRV8yNF9TSU1QTEUoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuVElNRV8yNF9TSU1QTEU7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMnLCBhbHdheXMgMjQtaG91ci5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX1NFQ09ORFMoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuVElNRV8yNF9XSVRIX1NFQ09ORFM7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgRURUJywgYWx3YXlzIDI0LWhvdXIuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IFRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLCBhbHdheXMgMjQtaG91ci5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUKCkge1xuICAgIHJldHVybiBGb3JtYXRzLlRJTUVfMjRfV0lUSF9MT05HX09GRlNFVDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVUSU1FX1NIT1JUKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX1NIT1JUO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzEwLzE0LzE5ODMsIDk6MzA6MzMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUztcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMsIDk6MzAgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfTUVEKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX01FRDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMsIDk6MzA6MzMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUygpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaSwgMTQgT2N0IDE5ODMsIDk6MzAgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfTUVEX1dJVEhfV0VFS0RBWSgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFVElNRV9NRURfV0lUSF9XRUVLREFZO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdG9iZXIgMTQsIDE5ODMsIDk6MzAgQU0gRURUJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVUSU1FX0ZVTEwoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURVRJTUVfRlVMTDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzLCA5OjMwOjMzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUygpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUztcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmlkYXksIE9jdG9iZXIgMTQsIDE5ODMsIDk6MzAgQU0gRWFzdGVybiBEYXlsaWdodCBUaW1lJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVUSU1FX0hVR0UoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURVRJTUVfSFVHRTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmlkYXksIE9jdG9iZXIgMTQsIDE5ODMsIDk6MzA6MzMgQU0gRWFzdGVybiBEYXlsaWdodCBUaW1lJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTO1xuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZyaWVuZGx5RGF0ZVRpbWUoZGF0ZVRpbWVpc2gpIHtcbiAgaWYgKERhdGVUaW1lLmlzRGF0ZVRpbWUoZGF0ZVRpbWVpc2gpKSB7XG4gICAgcmV0dXJuIGRhdGVUaW1laXNoO1xuICB9IGVsc2UgaWYgKGRhdGVUaW1laXNoICYmIGRhdGVUaW1laXNoLnZhbHVlT2YgJiYgaXNOdW1iZXIoZGF0ZVRpbWVpc2gudmFsdWVPZigpKSkge1xuICAgIHJldHVybiBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGVUaW1laXNoKTtcbiAgfSBlbHNlIGlmIChkYXRlVGltZWlzaCAmJiB0eXBlb2YgZGF0ZVRpbWVpc2ggPT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdChkYXRlVGltZWlzaCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgYFVua25vd24gZGF0ZXRpbWUgYXJndW1lbnQ6ICR7ZGF0ZVRpbWVpc2h9LCBvZiB0eXBlICR7dHlwZW9mIGRhdGVUaW1laXNofWBcbiAgICApO1xuICB9XG59XG4iLCAiaW1wb3J0IERhdGVUaW1lIGZyb20gXCIuL2RhdGV0aW1lLmpzXCI7XG5pbXBvcnQgRHVyYXRpb24gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcbmltcG9ydCBJbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IEluZm8gZnJvbSBcIi4vaW5mby5qc1wiO1xuaW1wb3J0IFpvbmUgZnJvbSBcIi4vem9uZS5qc1wiO1xuaW1wb3J0IEZpeGVkT2Zmc2V0Wm9uZSBmcm9tIFwiLi96b25lcy9maXhlZE9mZnNldFpvbmUuanNcIjtcbmltcG9ydCBJQU5BWm9uZSBmcm9tIFwiLi96b25lcy9JQU5BWm9uZS5qc1wiO1xuaW1wb3J0IEludmFsaWRab25lIGZyb20gXCIuL3pvbmVzL2ludmFsaWRab25lLmpzXCI7XG5pbXBvcnQgU3lzdGVtWm9uZSBmcm9tIFwiLi96b25lcy9zeXN0ZW1ab25lLmpzXCI7XG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3MuanNcIjtcblxuY29uc3QgVkVSU0lPTiA9IFwiMi4zLjBcIjtcblxuZXhwb3J0IHtcbiAgVkVSU0lPTixcbiAgRGF0ZVRpbWUsXG4gIER1cmF0aW9uLFxuICBJbnRlcnZhbCxcbiAgSW5mbyxcbiAgWm9uZSxcbiAgRml4ZWRPZmZzZXRab25lLFxuICBJQU5BWm9uZSxcbiAgSW52YWxpZFpvbmUsXG4gIFN5c3RlbVpvbmUsXG4gIFNldHRpbmdzLFxufTtcbiIsICIvKipcbiAqIEBsaWNlbnNlXG4gKiBMb2Rhc2ggPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBDb3B5cmlnaHQgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9vcGVuanNmLm9yZy8+XG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKi9cbjsoZnVuY3Rpb24oKSB7XG5cbiAgLyoqIFVzZWQgYXMgYSBzYWZlIHJlZmVyZW5jZSBmb3IgYHVuZGVmaW5lZGAgaW4gcHJlLUVTNSBlbnZpcm9ubWVudHMuICovXG4gIHZhciB1bmRlZmluZWQ7XG5cbiAgLyoqIFVzZWQgYXMgdGhlIHNlbWFudGljIHZlcnNpb24gbnVtYmVyLiAqL1xuICB2YXIgVkVSU0lPTiA9ICc0LjE3LjIxJztcblxuICAvKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbiAgdmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbiAgLyoqIEVycm9yIG1lc3NhZ2UgY29uc3RhbnRzLiAqL1xuICB2YXIgQ09SRV9FUlJPUl9URVhUID0gJ1Vuc3VwcG9ydGVkIGNvcmUtanMgdXNlLiBUcnkgaHR0cHM6Ly9ucG1zLmlvL3NlYXJjaD9xPXBvbnlmaWxsLicsXG4gICAgICBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbicsXG4gICAgICBJTlZBTElEX1RFTVBMX1ZBUl9FUlJPUl9URVhUID0gJ0ludmFsaWQgYHZhcmlhYmxlYCBvcHRpb24gcGFzc2VkIGludG8gYF8udGVtcGxhdGVgJztcblxuICAvKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG4gIHZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuICAvKiogVXNlZCBhcyB0aGUgbWF4aW11bSBtZW1vaXplIGNhY2hlIHNpemUuICovXG4gIHZhciBNQVhfTUVNT0laRV9TSVpFID0gNTAwO1xuXG4gIC8qKiBVc2VkIGFzIHRoZSBpbnRlcm5hbCBhcmd1bWVudCBwbGFjZWhvbGRlci4gKi9cbiAgdmFyIFBMQUNFSE9MREVSID0gJ19fbG9kYXNoX3BsYWNlaG9sZGVyX18nO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG4gIHZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgICAgQ0xPTkVfRkxBVF9GTEFHID0gMixcbiAgICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbiAgLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG4gIHZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuICAvKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBmdW5jdGlvbiBtZXRhZGF0YS4gKi9cbiAgdmFyIFdSQVBfQklORF9GTEFHID0gMSxcbiAgICAgIFdSQVBfQklORF9LRVlfRkxBRyA9IDIsXG4gICAgICBXUkFQX0NVUlJZX0JPVU5EX0ZMQUcgPSA0LFxuICAgICAgV1JBUF9DVVJSWV9GTEFHID0gOCxcbiAgICAgIFdSQVBfQ1VSUllfUklHSFRfRkxBRyA9IDE2LFxuICAgICAgV1JBUF9QQVJUSUFMX0ZMQUcgPSAzMixcbiAgICAgIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHID0gNjQsXG4gICAgICBXUkFQX0FSWV9GTEFHID0gMTI4LFxuICAgICAgV1JBUF9SRUFSR19GTEFHID0gMjU2LFxuICAgICAgV1JBUF9GTElQX0ZMQUcgPSA1MTI7XG5cbiAgLyoqIFVzZWQgYXMgZGVmYXVsdCBvcHRpb25zIGZvciBgXy50cnVuY2F0ZWAuICovXG4gIHZhciBERUZBVUxUX1RSVU5DX0xFTkdUSCA9IDMwLFxuICAgICAgREVGQVVMVF9UUlVOQ19PTUlTU0lPTiA9ICcuLi4nO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBob3QgZnVuY3Rpb25zIGJ5IG51bWJlciBvZiBjYWxscyB3aXRoaW4gYSBzcGFuIG9mIG1pbGxpc2Vjb25kcy4gKi9cbiAgdmFyIEhPVF9DT1VOVCA9IDgwMCxcbiAgICAgIEhPVF9TUEFOID0gMTY7XG5cbiAgLyoqIFVzZWQgdG8gaW5kaWNhdGUgdGhlIHR5cGUgb2YgbGF6eSBpdGVyYXRlZXMuICovXG4gIHZhciBMQVpZX0ZJTFRFUl9GTEFHID0gMSxcbiAgICAgIExBWllfTUFQX0ZMQUcgPSAyLFxuICAgICAgTEFaWV9XSElMRV9GTEFHID0gMztcblxuICAvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbiAgdmFyIElORklOSVRZID0gMSAvIDAsXG4gICAgICBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MSxcbiAgICAgIE1BWF9JTlRFR0VSID0gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgsXG4gICAgICBOQU4gPSAwIC8gMDtcblxuICAvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB0aGUgbWF4aW11bSBsZW5ndGggYW5kIGluZGV4IG9mIGFuIGFycmF5LiAqL1xuICB2YXIgTUFYX0FSUkFZX0xFTkdUSCA9IDQyOTQ5NjcyOTUsXG4gICAgICBNQVhfQVJSQVlfSU5ERVggPSBNQVhfQVJSQVlfTEVOR1RIIC0gMSxcbiAgICAgIEhBTEZfTUFYX0FSUkFZX0xFTkdUSCA9IE1BWF9BUlJBWV9MRU5HVEggPj4+IDE7XG5cbiAgLyoqIFVzZWQgdG8gYXNzb2NpYXRlIHdyYXAgbWV0aG9kcyB3aXRoIHRoZWlyIGJpdCBmbGFncy4gKi9cbiAgdmFyIHdyYXBGbGFncyA9IFtcbiAgICBbJ2FyeScsIFdSQVBfQVJZX0ZMQUddLFxuICAgIFsnYmluZCcsIFdSQVBfQklORF9GTEFHXSxcbiAgICBbJ2JpbmRLZXknLCBXUkFQX0JJTkRfS0VZX0ZMQUddLFxuICAgIFsnY3VycnknLCBXUkFQX0NVUlJZX0ZMQUddLFxuICAgIFsnY3VycnlSaWdodCcsIFdSQVBfQ1VSUllfUklHSFRfRkxBR10sXG4gICAgWydmbGlwJywgV1JBUF9GTElQX0ZMQUddLFxuICAgIFsncGFydGlhbCcsIFdSQVBfUEFSVElBTF9GTEFHXSxcbiAgICBbJ3BhcnRpYWxSaWdodCcsIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHXSxcbiAgICBbJ3JlYXJnJywgV1JBUF9SRUFSR19GTEFHXVxuICBdO1xuXG4gIC8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbiAgdmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICAgIGFzeW5jVGFnID0gJ1tvYmplY3QgQXN5bmNGdW5jdGlvbl0nLFxuICAgICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgICBkb21FeGNUYWcgPSAnW29iamVjdCBET01FeGNlcHRpb25dJyxcbiAgICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgICBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nLFxuICAgICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgICBwcm9taXNlVGFnID0gJ1tvYmplY3QgUHJvbWlzZV0nLFxuICAgICAgcHJveHlUYWcgPSAnW29iamVjdCBQcm94eV0nLFxuICAgICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXScsXG4gICAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJyxcbiAgICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXScsXG4gICAgICB3ZWFrU2V0VGFnID0gJ1tvYmplY3QgV2Vha1NldF0nO1xuXG4gIHZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggZW1wdHkgc3RyaW5nIGxpdGVyYWxzIGluIGNvbXBpbGVkIHRlbXBsYXRlIHNvdXJjZS4gKi9cbiAgdmFyIHJlRW1wdHlTdHJpbmdMZWFkaW5nID0gL1xcYl9fcCBcXCs9ICcnOy9nLFxuICAgICAgcmVFbXB0eVN0cmluZ01pZGRsZSA9IC9cXGIoX19wIFxcKz0pICcnIFxcKy9nLFxuICAgICAgcmVFbXB0eVN0cmluZ1RyYWlsaW5nID0gLyhfX2VcXCguKj9cXCl8XFxiX190XFwpKSBcXCtcXG4nJzsvZztcblxuICAvKiogVXNlZCB0byBtYXRjaCBIVE1MIGVudGl0aWVzIGFuZCBIVE1MIGNoYXJhY3RlcnMuICovXG4gIHZhciByZUVzY2FwZWRIdG1sID0gLyYoPzphbXB8bHR8Z3R8cXVvdHwjMzkpOy9nLFxuICAgICAgcmVVbmVzY2FwZWRIdG1sID0gL1smPD5cIiddL2csXG4gICAgICByZUhhc0VzY2FwZWRIdG1sID0gUmVnRXhwKHJlRXNjYXBlZEh0bWwuc291cmNlKSxcbiAgICAgIHJlSGFzVW5lc2NhcGVkSHRtbCA9IFJlZ0V4cChyZVVuZXNjYXBlZEh0bWwuc291cmNlKTtcblxuICAvKiogVXNlZCB0byBtYXRjaCB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLiAqL1xuICB2YXIgcmVFc2NhcGUgPSAvPCUtKFtcXHNcXFNdKz8pJT4vZyxcbiAgICAgIHJlRXZhbHVhdGUgPSAvPCUoW1xcc1xcU10rPyklPi9nLFxuICAgICAgcmVJbnRlcnBvbGF0ZSA9IC88JT0oW1xcc1xcU10rPyklPi9nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbiAgdmFyIHJlSXNEZWVwUHJvcCA9IC9cXC58XFxbKD86W15bXFxdXSp8KFtcIiddKSg/Oig/IVxcMSlbXlxcXFxdfFxcXFwuKSo/XFwxKVxcXS8sXG4gICAgICByZUlzUGxhaW5Qcm9wID0gL15cXHcqJC8sXG4gICAgICByZVByb3BOYW1lID0gL1teLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCQpKS9nO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gICAqIFtzeW50YXggY2hhcmFjdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcGF0dGVybnMpLlxuICAgKi9cbiAgdmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZyxcbiAgICAgIHJlSGFzUmVnRXhwQ2hhciA9IFJlZ0V4cChyZVJlZ0V4cENoYXIuc291cmNlKTtcblxuICAvKiogVXNlZCB0byBtYXRjaCBsZWFkaW5nIHdoaXRlc3BhY2UuICovXG4gIHZhciByZVRyaW1TdGFydCA9IC9eXFxzKy87XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggYSBzaW5nbGUgd2hpdGVzcGFjZSBjaGFyYWN0ZXIuICovXG4gIHZhciByZVdoaXRlc3BhY2UgPSAvXFxzLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB3cmFwIGRldGFpbCBjb21tZW50cy4gKi9cbiAgdmFyIHJlV3JhcENvbW1lbnQgPSAvXFx7KD86XFxuXFwvXFwqIFxcW3dyYXBwZWQgd2l0aCAuK1xcXSBcXCpcXC8pP1xcbj8vLFxuICAgICAgcmVXcmFwRGV0YWlscyA9IC9cXHtcXG5cXC9cXCogXFxbd3JhcHBlZCB3aXRoICguKylcXF0gXFwqLyxcbiAgICAgIHJlU3BsaXREZXRhaWxzID0gLyw/ICYgLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB3b3JkcyBjb21wb3NlZCBvZiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4gKi9cbiAgdmFyIHJlQXNjaWlXb3JkID0gL1teXFx4MDAtXFx4MmZcXHgzYS1cXHg0MFxceDViLVxceDYwXFx4N2ItXFx4N2ZdKy9nO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHZhbGlkYXRlIHRoZSBgdmFsaWRhdGVgIG9wdGlvbiBpbiBgXy50ZW1wbGF0ZWAgdmFyaWFibGUuXG4gICAqXG4gICAqIEZvcmJpZHMgY2hhcmFjdGVycyB3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50IGRlZmluaXRpb246XG4gICAqIC0gXCIoKSxcIiAobW9kaWZpY2F0aW9uIG9mIGZ1bmN0aW9uIHBhcmFtZXRlcnMpXG4gICAqIC0gXCI9XCIgKGRlZmF1bHQgdmFsdWUpXG4gICAqIC0gXCJbXXt9XCIgKGRlc3RydWN0dXJpbmcgb2YgZnVuY3Rpb24gcGFyYW1ldGVycylcbiAgICogLSBcIi9cIiAoYmVnaW5uaW5nIG9mIGEgY29tbWVudClcbiAgICogLSB3aGl0ZXNwYWNlXG4gICAqL1xuICB2YXIgcmVGb3JiaWRkZW5JZGVudGlmaWVyQ2hhcnMgPSAvWygpPSx7fVxcW1xcXVxcL1xcc10vO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGJhY2tzbGFzaGVzIGluIHByb3BlcnR5IHBhdGhzLiAqL1xuICB2YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWF0Y2hcbiAgICogW0VTIHRlbXBsYXRlIGRlbGltaXRlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRlbXBsYXRlLWxpdGVyYWwtbGV4aWNhbC1jb21wb25lbnRzKS5cbiAgICovXG4gIHZhciByZUVzVGVtcGxhdGUgPSAvXFwkXFx7KFteXFxcXH1dKig/OlxcXFwuW15cXFxcfV0qKSopXFx9L2c7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG4gIHZhciByZUZsYWdzID0gL1xcdyokLztcblxuICAvKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xuICB2YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xuICB2YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuICAvKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL1xuICB2YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIExhdGluIFVuaWNvZGUgbGV0dGVycyAoZXhjbHVkaW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRvcnMpLiAqL1xuICB2YXIgcmVMYXRpbiA9IC9bXFx4YzAtXFx4ZDZcXHhkOC1cXHhmNlxceGY4LVxceGZmXFx1MDEwMC1cXHUwMTdmXS9nO1xuXG4gIC8qKiBVc2VkIHRvIGVuc3VyZSBjYXB0dXJpbmcgb3JkZXIgb2YgdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbiAgdmFyIHJlTm9NYXRjaCA9IC8oJF4pLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB1bmVzY2FwZWQgY2hhcmFjdGVycyBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG4gIHZhciByZVVuZXNjYXBlZFN0cmluZyA9IC9bJ1xcblxcclxcdTIwMjhcXHUyMDI5XFxcXF0vZztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG4gIHZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgICAgcnNDb21ib01hcmtzUmFuZ2UgPSAnXFxcXHUwMzAwLVxcXFx1MDM2ZicsXG4gICAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgICAgcnNDb21ib1JhbmdlID0gcnNDb21ib01hcmtzUmFuZ2UgKyByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgKyByc0NvbWJvU3ltYm9sc1JhbmdlLFxuICAgICAgcnNEaW5nYmF0UmFuZ2UgPSAnXFxcXHUyNzAwLVxcXFx1MjdiZicsXG4gICAgICByc0xvd2VyUmFuZ2UgPSAnYS16XFxcXHhkZi1cXFxceGY2XFxcXHhmOC1cXFxceGZmJyxcbiAgICAgIHJzTWF0aE9wUmFuZ2UgPSAnXFxcXHhhY1xcXFx4YjFcXFxceGQ3XFxcXHhmNycsXG4gICAgICByc05vbkNoYXJSYW5nZSA9ICdcXFxceDAwLVxcXFx4MmZcXFxceDNhLVxcXFx4NDBcXFxceDViLVxcXFx4NjBcXFxceDdiLVxcXFx4YmYnLFxuICAgICAgcnNQdW5jdHVhdGlvblJhbmdlID0gJ1xcXFx1MjAwMC1cXFxcdTIwNmYnLFxuICAgICAgcnNTcGFjZVJhbmdlID0gJyBcXFxcdFxcXFx4MGJcXFxcZlxcXFx4YTBcXFxcdWZlZmZcXFxcblxcXFxyXFxcXHUyMDI4XFxcXHUyMDI5XFxcXHUxNjgwXFxcXHUxODBlXFxcXHUyMDAwXFxcXHUyMDAxXFxcXHUyMDAyXFxcXHUyMDAzXFxcXHUyMDA0XFxcXHUyMDA1XFxcXHUyMDA2XFxcXHUyMDA3XFxcXHUyMDA4XFxcXHUyMDA5XFxcXHUyMDBhXFxcXHUyMDJmXFxcXHUyMDVmXFxcXHUzMDAwJyxcbiAgICAgIHJzVXBwZXJSYW5nZSA9ICdBLVpcXFxceGMwLVxcXFx4ZDZcXFxceGQ4LVxcXFx4ZGUnLFxuICAgICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnLFxuICAgICAgcnNCcmVha1JhbmdlID0gcnNNYXRoT3BSYW5nZSArIHJzTm9uQ2hhclJhbmdlICsgcnNQdW5jdHVhdGlvblJhbmdlICsgcnNTcGFjZVJhbmdlO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbiAgdmFyIHJzQXBvcyA9IFwiWydcXHUyMDE5XVwiLFxuICAgICAgcnNBc3RyYWwgPSAnWycgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgICAgcnNCcmVhayA9ICdbJyArIHJzQnJlYWtSYW5nZSArICddJyxcbiAgICAgIHJzQ29tYm8gPSAnWycgKyByc0NvbWJvUmFuZ2UgKyAnXScsXG4gICAgICByc0RpZ2l0cyA9ICdcXFxcZCsnLFxuICAgICAgcnNEaW5nYmF0ID0gJ1snICsgcnNEaW5nYmF0UmFuZ2UgKyAnXScsXG4gICAgICByc0xvd2VyID0gJ1snICsgcnNMb3dlclJhbmdlICsgJ10nLFxuICAgICAgcnNNaXNjID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyByc0JyZWFrUmFuZ2UgKyByc0RpZ2l0cyArIHJzRGluZ2JhdFJhbmdlICsgcnNMb3dlclJhbmdlICsgcnNVcHBlclJhbmdlICsgJ10nLFxuICAgICAgcnNGaXR6ID0gJ1xcXFx1ZDgzY1tcXFxcdWRmZmItXFxcXHVkZmZmXScsXG4gICAgICByc01vZGlmaWVyID0gJyg/OicgKyByc0NvbWJvICsgJ3wnICsgcnNGaXR6ICsgJyknLFxuICAgICAgcnNOb25Bc3RyYWwgPSAnW14nICsgcnNBc3RyYWxSYW5nZSArICddJyxcbiAgICAgIHJzUmVnaW9uYWwgPSAnKD86XFxcXHVkODNjW1xcXFx1ZGRlNi1cXFxcdWRkZmZdKXsyfScsXG4gICAgICByc1N1cnJQYWlyID0gJ1tcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXScsXG4gICAgICByc1VwcGVyID0gJ1snICsgcnNVcHBlclJhbmdlICsgJ10nLFxuICAgICAgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgcmVnZXhlcy4gKi9cbiAgdmFyIHJzTWlzY0xvd2VyID0gJyg/OicgKyByc0xvd2VyICsgJ3wnICsgcnNNaXNjICsgJyknLFxuICAgICAgcnNNaXNjVXBwZXIgPSAnKD86JyArIHJzVXBwZXIgKyAnfCcgKyByc01pc2MgKyAnKScsXG4gICAgICByc09wdENvbnRyTG93ZXIgPSAnKD86JyArIHJzQXBvcyArICcoPzpkfGxsfG18cmV8c3x0fHZlKSk/JyxcbiAgICAgIHJzT3B0Q29udHJVcHBlciA9ICcoPzonICsgcnNBcG9zICsgJyg/OkR8TEx8TXxSRXxTfFR8VkUpKT8nLFxuICAgICAgcmVPcHRNb2QgPSByc01vZGlmaWVyICsgJz8nLFxuICAgICAgcnNPcHRWYXIgPSAnWycgKyByc1ZhclJhbmdlICsgJ10/JyxcbiAgICAgIHJzT3B0Sm9pbiA9ICcoPzonICsgcnNaV0ogKyAnKD86JyArIFtyc05vbkFzdHJhbCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNPcHRWYXIgKyByZU9wdE1vZCArICcpKicsXG4gICAgICByc09yZExvd2VyID0gJ1xcXFxkKig/OjFzdHwybmR8M3JkfCg/IVsxMjNdKVxcXFxkdGgpKD89XFxcXGJ8W0EtWl9dKScsXG4gICAgICByc09yZFVwcGVyID0gJ1xcXFxkKig/OjFTVHwyTkR8M1JEfCg/IVsxMjNdKVxcXFxkVEgpKD89XFxcXGJ8W2Etel9dKScsXG4gICAgICByc1NlcSA9IHJzT3B0VmFyICsgcmVPcHRNb2QgKyByc09wdEpvaW4sXG4gICAgICByc0Vtb2ppID0gJyg/OicgKyBbcnNEaW5nYmF0LCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyXS5qb2luKCd8JykgKyAnKScgKyByc1NlcSxcbiAgICAgIHJzU3ltYm9sID0gJyg/OicgKyBbcnNOb25Bc3RyYWwgKyByc0NvbWJvICsgJz8nLCByc0NvbWJvLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyLCByc0FzdHJhbF0uam9pbignfCcpICsgJyknO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGFwb3N0cm9waGVzLiAqL1xuICB2YXIgcmVBcG9zID0gUmVnRXhwKHJzQXBvcywgJ2cnKTtcblxuICAvKipcbiAgICogVXNlZCB0byBtYXRjaCBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3MpIGFuZFxuICAgKiBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzIGZvciBzeW1ib2xzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3NfZm9yX1N5bWJvbHMpLlxuICAgKi9cbiAgdmFyIHJlQ29tYm9NYXJrID0gUmVnRXhwKHJzQ29tYm8sICdnJyk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggW3N0cmluZyBzeW1ib2xzXShodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC11bmljb2RlKS4gKi9cbiAgdmFyIHJlVW5pY29kZSA9IFJlZ0V4cChyc0ZpdHogKyAnKD89JyArIHJzRml0eiArICcpfCcgKyByc1N5bWJvbCArIHJzU2VxLCAnZycpO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGNvbXBsZXggb3IgY29tcG91bmQgd29yZHMuICovXG4gIHZhciByZVVuaWNvZGVXb3JkID0gUmVnRXhwKFtcbiAgICByc1VwcGVyICsgJz8nICsgcnNMb3dlciArICcrJyArIHJzT3B0Q29udHJMb3dlciArICcoPz0nICsgW3JzQnJlYWssIHJzVXBwZXIsICckJ10uam9pbignfCcpICsgJyknLFxuICAgIHJzTWlzY1VwcGVyICsgJysnICsgcnNPcHRDb250clVwcGVyICsgJyg/PScgKyBbcnNCcmVhaywgcnNVcHBlciArIHJzTWlzY0xvd2VyLCAnJCddLmpvaW4oJ3wnKSArICcpJyxcbiAgICByc1VwcGVyICsgJz8nICsgcnNNaXNjTG93ZXIgKyAnKycgKyByc09wdENvbnRyTG93ZXIsXG4gICAgcnNVcHBlciArICcrJyArIHJzT3B0Q29udHJVcHBlcixcbiAgICByc09yZFVwcGVyLFxuICAgIHJzT3JkTG93ZXIsXG4gICAgcnNEaWdpdHMsXG4gICAgcnNFbW9qaVxuICBdLmpvaW4oJ3wnKSwgJ2cnKTtcblxuICAvKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB3aXRoIFt6ZXJvLXdpZHRoIGpvaW5lcnMgb3IgY29kZSBwb2ludHMgZnJvbSB0aGUgYXN0cmFsIHBsYW5lc10oaHR0cDovL2Vldi5lZS9ibG9nLzIwMTUvMDkvMTIvZGFyay1jb3JuZXJzLW9mLXVuaWNvZGUvKS4gKi9cbiAgdmFyIHJlSGFzVW5pY29kZSA9IFJlZ0V4cCgnWycgKyByc1pXSiArIHJzQXN0cmFsUmFuZ2UgICsgcnNDb21ib1JhbmdlICsgcnNWYXJSYW5nZSArICddJyk7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHN0cmluZ3MgdGhhdCBuZWVkIGEgbW9yZSByb2J1c3QgcmVnZXhwIHRvIG1hdGNoIHdvcmRzLiAqL1xuICB2YXIgcmVIYXNVbmljb2RlV29yZCA9IC9bYS16XVtBLVpdfFtBLVpdezJ9W2Etel18WzAtOV1bYS16QS1aXXxbYS16QS1aXVswLTldfFteYS16QS1aMC05IF0vO1xuXG4gIC8qKiBVc2VkIHRvIGFzc2lnbiBkZWZhdWx0IGBjb250ZXh0YCBvYmplY3QgcHJvcGVydGllcy4gKi9cbiAgdmFyIGNvbnRleHRQcm9wcyA9IFtcbiAgICAnQXJyYXknLCAnQnVmZmVyJywgJ0RhdGFWaWV3JywgJ0RhdGUnLCAnRXJyb3InLCAnRmxvYXQzMkFycmF5JywgJ0Zsb2F0NjRBcnJheScsXG4gICAgJ0Z1bmN0aW9uJywgJ0ludDhBcnJheScsICdJbnQxNkFycmF5JywgJ0ludDMyQXJyYXknLCAnTWFwJywgJ01hdGgnLCAnT2JqZWN0JyxcbiAgICAnUHJvbWlzZScsICdSZWdFeHAnLCAnU2V0JywgJ1N0cmluZycsICdTeW1ib2wnLCAnVHlwZUVycm9yJywgJ1VpbnQ4QXJyYXknLFxuICAgICdVaW50OENsYW1wZWRBcnJheScsICdVaW50MTZBcnJheScsICdVaW50MzJBcnJheScsICdXZWFrTWFwJyxcbiAgICAnXycsICdjbGVhclRpbWVvdXQnLCAnaXNGaW5pdGUnLCAncGFyc2VJbnQnLCAnc2V0VGltZW91dCdcbiAgXTtcblxuICAvKiogVXNlZCB0byBtYWtlIHRlbXBsYXRlIHNvdXJjZVVSTHMgZWFzaWVyIHRvIGlkZW50aWZ5LiAqL1xuICB2YXIgdGVtcGxhdGVDb3VudGVyID0gLTE7XG5cbiAgLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xuICB2YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbiAgdHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbiAgdHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxuICB0eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbiAgdHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxuICB0eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4gIC8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIHN1cHBvcnRlZCBieSBgXy5jbG9uZWAuICovXG4gIHZhciBjbG9uZWFibGVUYWdzID0ge307XG4gIGNsb25lYWJsZVRhZ3NbYXJnc1RhZ10gPSBjbG9uZWFibGVUYWdzW2FycmF5VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRhVmlld1RhZ10gPVxuICBjbG9uZWFibGVUYWdzW2Jvb2xUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRlVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbZmxvYXQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW2Zsb2F0NjRUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbaW50MTZUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tpbnQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW21hcFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW251bWJlclRhZ10gPSBjbG9uZWFibGVUYWdzW29iamVjdFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3JlZ2V4cFRhZ10gPSBjbG9uZWFibGVUYWdzW3NldFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3N0cmluZ1RhZ10gPSBjbG9uZWFibGVUYWdzW3N5bWJvbFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3VpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbdWludDE2VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG4gIGNsb25lYWJsZVRhZ3NbZXJyb3JUYWddID0gY2xvbmVhYmxlVGFnc1tmdW5jVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuICAvKiogVXNlZCB0byBtYXAgTGF0aW4gVW5pY29kZSBsZXR0ZXJzIHRvIGJhc2ljIExhdGluIGxldHRlcnMuICovXG4gIHZhciBkZWJ1cnJlZExldHRlcnMgPSB7XG4gICAgLy8gTGF0aW4tMSBTdXBwbGVtZW50IGJsb2NrLlxuICAgICdcXHhjMCc6ICdBJywgICdcXHhjMSc6ICdBJywgJ1xceGMyJzogJ0EnLCAnXFx4YzMnOiAnQScsICdcXHhjNCc6ICdBJywgJ1xceGM1JzogJ0EnLFxuICAgICdcXHhlMCc6ICdhJywgICdcXHhlMSc6ICdhJywgJ1xceGUyJzogJ2EnLCAnXFx4ZTMnOiAnYScsICdcXHhlNCc6ICdhJywgJ1xceGU1JzogJ2EnLFxuICAgICdcXHhjNyc6ICdDJywgICdcXHhlNyc6ICdjJyxcbiAgICAnXFx4ZDAnOiAnRCcsICAnXFx4ZjAnOiAnZCcsXG4gICAgJ1xceGM4JzogJ0UnLCAgJ1xceGM5JzogJ0UnLCAnXFx4Y2EnOiAnRScsICdcXHhjYic6ICdFJyxcbiAgICAnXFx4ZTgnOiAnZScsICAnXFx4ZTknOiAnZScsICdcXHhlYSc6ICdlJywgJ1xceGViJzogJ2UnLFxuICAgICdcXHhjYyc6ICdJJywgICdcXHhjZCc6ICdJJywgJ1xceGNlJzogJ0knLCAnXFx4Y2YnOiAnSScsXG4gICAgJ1xceGVjJzogJ2knLCAgJ1xceGVkJzogJ2knLCAnXFx4ZWUnOiAnaScsICdcXHhlZic6ICdpJyxcbiAgICAnXFx4ZDEnOiAnTicsICAnXFx4ZjEnOiAnbicsXG4gICAgJ1xceGQyJzogJ08nLCAgJ1xceGQzJzogJ08nLCAnXFx4ZDQnOiAnTycsICdcXHhkNSc6ICdPJywgJ1xceGQ2JzogJ08nLCAnXFx4ZDgnOiAnTycsXG4gICAgJ1xceGYyJzogJ28nLCAgJ1xceGYzJzogJ28nLCAnXFx4ZjQnOiAnbycsICdcXHhmNSc6ICdvJywgJ1xceGY2JzogJ28nLCAnXFx4ZjgnOiAnbycsXG4gICAgJ1xceGQ5JzogJ1UnLCAgJ1xceGRhJzogJ1UnLCAnXFx4ZGInOiAnVScsICdcXHhkYyc6ICdVJyxcbiAgICAnXFx4ZjknOiAndScsICAnXFx4ZmEnOiAndScsICdcXHhmYic6ICd1JywgJ1xceGZjJzogJ3UnLFxuICAgICdcXHhkZCc6ICdZJywgICdcXHhmZCc6ICd5JywgJ1xceGZmJzogJ3knLFxuICAgICdcXHhjNic6ICdBZScsICdcXHhlNic6ICdhZScsXG4gICAgJ1xceGRlJzogJ1RoJywgJ1xceGZlJzogJ3RoJyxcbiAgICAnXFx4ZGYnOiAnc3MnLFxuICAgIC8vIExhdGluIEV4dGVuZGVkLUEgYmxvY2suXG4gICAgJ1xcdTAxMDAnOiAnQScsICAnXFx1MDEwMic6ICdBJywgJ1xcdTAxMDQnOiAnQScsXG4gICAgJ1xcdTAxMDEnOiAnYScsICAnXFx1MDEwMyc6ICdhJywgJ1xcdTAxMDUnOiAnYScsXG4gICAgJ1xcdTAxMDYnOiAnQycsICAnXFx1MDEwOCc6ICdDJywgJ1xcdTAxMGEnOiAnQycsICdcXHUwMTBjJzogJ0MnLFxuICAgICdcXHUwMTA3JzogJ2MnLCAgJ1xcdTAxMDknOiAnYycsICdcXHUwMTBiJzogJ2MnLCAnXFx1MDEwZCc6ICdjJyxcbiAgICAnXFx1MDEwZSc6ICdEJywgICdcXHUwMTEwJzogJ0QnLCAnXFx1MDEwZic6ICdkJywgJ1xcdTAxMTEnOiAnZCcsXG4gICAgJ1xcdTAxMTInOiAnRScsICAnXFx1MDExNCc6ICdFJywgJ1xcdTAxMTYnOiAnRScsICdcXHUwMTE4JzogJ0UnLCAnXFx1MDExYSc6ICdFJyxcbiAgICAnXFx1MDExMyc6ICdlJywgICdcXHUwMTE1JzogJ2UnLCAnXFx1MDExNyc6ICdlJywgJ1xcdTAxMTknOiAnZScsICdcXHUwMTFiJzogJ2UnLFxuICAgICdcXHUwMTFjJzogJ0cnLCAgJ1xcdTAxMWUnOiAnRycsICdcXHUwMTIwJzogJ0cnLCAnXFx1MDEyMic6ICdHJyxcbiAgICAnXFx1MDExZCc6ICdnJywgICdcXHUwMTFmJzogJ2cnLCAnXFx1MDEyMSc6ICdnJywgJ1xcdTAxMjMnOiAnZycsXG4gICAgJ1xcdTAxMjQnOiAnSCcsICAnXFx1MDEyNic6ICdIJywgJ1xcdTAxMjUnOiAnaCcsICdcXHUwMTI3JzogJ2gnLFxuICAgICdcXHUwMTI4JzogJ0knLCAgJ1xcdTAxMmEnOiAnSScsICdcXHUwMTJjJzogJ0knLCAnXFx1MDEyZSc6ICdJJywgJ1xcdTAxMzAnOiAnSScsXG4gICAgJ1xcdTAxMjknOiAnaScsICAnXFx1MDEyYic6ICdpJywgJ1xcdTAxMmQnOiAnaScsICdcXHUwMTJmJzogJ2knLCAnXFx1MDEzMSc6ICdpJyxcbiAgICAnXFx1MDEzNCc6ICdKJywgICdcXHUwMTM1JzogJ2onLFxuICAgICdcXHUwMTM2JzogJ0snLCAgJ1xcdTAxMzcnOiAnaycsICdcXHUwMTM4JzogJ2snLFxuICAgICdcXHUwMTM5JzogJ0wnLCAgJ1xcdTAxM2InOiAnTCcsICdcXHUwMTNkJzogJ0wnLCAnXFx1MDEzZic6ICdMJywgJ1xcdTAxNDEnOiAnTCcsXG4gICAgJ1xcdTAxM2EnOiAnbCcsICAnXFx1MDEzYyc6ICdsJywgJ1xcdTAxM2UnOiAnbCcsICdcXHUwMTQwJzogJ2wnLCAnXFx1MDE0Mic6ICdsJyxcbiAgICAnXFx1MDE0Myc6ICdOJywgICdcXHUwMTQ1JzogJ04nLCAnXFx1MDE0Nyc6ICdOJywgJ1xcdTAxNGEnOiAnTicsXG4gICAgJ1xcdTAxNDQnOiAnbicsICAnXFx1MDE0Nic6ICduJywgJ1xcdTAxNDgnOiAnbicsICdcXHUwMTRiJzogJ24nLFxuICAgICdcXHUwMTRjJzogJ08nLCAgJ1xcdTAxNGUnOiAnTycsICdcXHUwMTUwJzogJ08nLFxuICAgICdcXHUwMTRkJzogJ28nLCAgJ1xcdTAxNGYnOiAnbycsICdcXHUwMTUxJzogJ28nLFxuICAgICdcXHUwMTU0JzogJ1InLCAgJ1xcdTAxNTYnOiAnUicsICdcXHUwMTU4JzogJ1InLFxuICAgICdcXHUwMTU1JzogJ3InLCAgJ1xcdTAxNTcnOiAncicsICdcXHUwMTU5JzogJ3InLFxuICAgICdcXHUwMTVhJzogJ1MnLCAgJ1xcdTAxNWMnOiAnUycsICdcXHUwMTVlJzogJ1MnLCAnXFx1MDE2MCc6ICdTJyxcbiAgICAnXFx1MDE1Yic6ICdzJywgICdcXHUwMTVkJzogJ3MnLCAnXFx1MDE1Zic6ICdzJywgJ1xcdTAxNjEnOiAncycsXG4gICAgJ1xcdTAxNjInOiAnVCcsICAnXFx1MDE2NCc6ICdUJywgJ1xcdTAxNjYnOiAnVCcsXG4gICAgJ1xcdTAxNjMnOiAndCcsICAnXFx1MDE2NSc6ICd0JywgJ1xcdTAxNjcnOiAndCcsXG4gICAgJ1xcdTAxNjgnOiAnVScsICAnXFx1MDE2YSc6ICdVJywgJ1xcdTAxNmMnOiAnVScsICdcXHUwMTZlJzogJ1UnLCAnXFx1MDE3MCc6ICdVJywgJ1xcdTAxNzInOiAnVScsXG4gICAgJ1xcdTAxNjknOiAndScsICAnXFx1MDE2Yic6ICd1JywgJ1xcdTAxNmQnOiAndScsICdcXHUwMTZmJzogJ3UnLCAnXFx1MDE3MSc6ICd1JywgJ1xcdTAxNzMnOiAndScsXG4gICAgJ1xcdTAxNzQnOiAnVycsICAnXFx1MDE3NSc6ICd3JyxcbiAgICAnXFx1MDE3Nic6ICdZJywgICdcXHUwMTc3JzogJ3knLCAnXFx1MDE3OCc6ICdZJyxcbiAgICAnXFx1MDE3OSc6ICdaJywgICdcXHUwMTdiJzogJ1onLCAnXFx1MDE3ZCc6ICdaJyxcbiAgICAnXFx1MDE3YSc6ICd6JywgICdcXHUwMTdjJzogJ3onLCAnXFx1MDE3ZSc6ICd6JyxcbiAgICAnXFx1MDEzMic6ICdJSicsICdcXHUwMTMzJzogJ2lqJyxcbiAgICAnXFx1MDE1Mic6ICdPZScsICdcXHUwMTUzJzogJ29lJyxcbiAgICAnXFx1MDE0OSc6IFwiJ25cIiwgJ1xcdTAxN2YnOiAncydcbiAgfTtcblxuICAvKiogVXNlZCB0byBtYXAgY2hhcmFjdGVycyB0byBIVE1MIGVudGl0aWVzLiAqL1xuICB2YXIgaHRtbEVzY2FwZXMgPSB7XG4gICAgJyYnOiAnJmFtcDsnLFxuICAgICc8JzogJyZsdDsnLFxuICAgICc+JzogJyZndDsnLFxuICAgICdcIic6ICcmcXVvdDsnLFxuICAgIFwiJ1wiOiAnJiMzOTsnXG4gIH07XG5cbiAgLyoqIFVzZWQgdG8gbWFwIEhUTUwgZW50aXRpZXMgdG8gY2hhcmFjdGVycy4gKi9cbiAgdmFyIGh0bWxVbmVzY2FwZXMgPSB7XG4gICAgJyZhbXA7JzogJyYnLFxuICAgICcmbHQ7JzogJzwnLFxuICAgICcmZ3Q7JzogJz4nLFxuICAgICcmcXVvdDsnOiAnXCInLFxuICAgICcmIzM5Oyc6IFwiJ1wiXG4gIH07XG5cbiAgLyoqIFVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgZm9yIGluY2x1c2lvbiBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG4gIHZhciBzdHJpbmdFc2NhcGVzID0ge1xuICAgICdcXFxcJzogJ1xcXFwnLFxuICAgIFwiJ1wiOiBcIidcIixcbiAgICAnXFxuJzogJ24nLFxuICAgICdcXHInOiAncicsXG4gICAgJ1xcdTIwMjgnOiAndTIwMjgnLFxuICAgICdcXHUyMDI5JzogJ3UyMDI5J1xuICB9O1xuXG4gIC8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG4gIHZhciBmcmVlUGFyc2VGbG9hdCA9IHBhcnNlRmxvYXQsXG4gICAgICBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xuICB2YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbiAgdmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG5cbiAgLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG4gIHZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG4gIHZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG4gIHZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbiAgLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbiAgdmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG4gIHZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4gIC8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xuICB2YXIgbm9kZVV0aWwgPSAoZnVuY3Rpb24oKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFVzZSBgdXRpbC50eXBlc2AgZm9yIE5vZGUuanMgMTArLlxuICAgICAgdmFyIHR5cGVzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlKCd1dGlsJykudHlwZXM7XG5cbiAgICAgIGlmICh0eXBlcykge1xuICAgICAgICByZXR1cm4gdHlwZXM7XG4gICAgICB9XG5cbiAgICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfSgpKTtcblxuICAvKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xuICB2YXIgbm9kZUlzQXJyYXlCdWZmZXIgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc0FycmF5QnVmZmVyLFxuICAgICAgbm9kZUlzRGF0ZSA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzRGF0ZSxcbiAgICAgIG5vZGVJc01hcCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzTWFwLFxuICAgICAgbm9kZUlzUmVnRXhwID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNSZWdFeHAsXG4gICAgICBub2RlSXNTZXQgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1NldCxcbiAgICAgIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgLyoqXG4gICAqIEEgZmFzdGVyIGFsdGVybmF0aXZlIHRvIGBGdW5jdGlvbiNhcHBseWAsIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBgZnVuY2BcbiAgICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgIGFuZCB0aGUgYXJndW1lbnRzIG9mIGBhcmdzYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICAgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuXG4gICAqL1xuICBmdW5jdGlvbiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKSB7XG4gICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO1xuICAgICAgY2FzZSAxOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0pO1xuICAgICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgY2FzZSAzOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VBZ2dyZWdhdG9yYCBmb3IgYXJyYXlzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGBhY2N1bXVsYXRvcmAgdmFsdWVzLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCBhZ2dyZWdhdGVkIG9iamVjdC5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBhY2N1bXVsYXRvcmAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUFnZ3JlZ2F0b3IoYXJyYXksIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgIHNldHRlcihhY2N1bXVsYXRvciwgdmFsdWUsIGl0ZXJhdGVlKHZhbHVlKSwgYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoUmlnaHRgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlFYWNoUmlnaHQoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbbGVuZ3RoXSwgbGVuZ3RoLCBhcnJheSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmV2ZXJ5YCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFsbCBlbGVtZW50cyBwYXNzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAqICBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUV2ZXJ5KGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKCFwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZpbHRlcmAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlGaWx0ZXIoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmNsdWRlc2AgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIHNwZWNpZnlpbmcgYW4gaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5SW5jbHVkZXMoYXJyYXksIHZhbHVlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIHJldHVybiAhIWxlbmd0aCAmJiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIDApID4gLTE7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhcnJheUluY2x1ZGVzYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGEgY29tcGFyYXRvci5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUluY2x1ZGVzV2l0aChhcnJheSwgdmFsdWUsIGNvbXBhcmF0b3IpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGNvbXBhcmF0b3IodmFsdWUsIGFycmF5W2luZGV4XSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWFwYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICogc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheU1hcChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhcHBlbmQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlQdXNoKGFycmF5LCB2YWx1ZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgICAgb2Zmc2V0ID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2luaXRBY2N1bV0gU3BlY2lmeSB1c2luZyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgIGFzXG4gICAqICB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlSZWR1Y2UoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgaWYgKGluaXRBY2N1bSAmJiBsZW5ndGgpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gYXJyYXlbKytpbmRleF07XG4gICAgfVxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlUmlnaHRgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbaW5pdEFjY3VtXSBTcGVjaWZ5IHVzaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YCBhc1xuICAgKiAgdGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5UmVkdWNlUmlnaHQoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIGlmIChpbml0QWNjdW0gJiYgbGVuZ3RoKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGFycmF5Wy0tbGVuZ3RoXTtcbiAgICB9XG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtsZW5ndGhdLCBsZW5ndGgsIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zb21lYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICogc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzaXplIG9mIGFuIEFTQ0lJIGBzdHJpbmdgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgaW5zcGVjdC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gICAqL1xuICB2YXIgYXNjaWlTaXplID0gYmFzZVByb3BlcnR5KCdsZW5ndGgnKTtcblxuICAvKipcbiAgICogQ29udmVydHMgYW4gQVNDSUkgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIGFzY2lpVG9BcnJheShzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nLnNwbGl0KCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdHMgYW4gQVNDSUkgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd29yZHMgb2YgYHN0cmluZ2AuXG4gICAqL1xuICBmdW5jdGlvbiBhc2NpaVdvcmRzKHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVBc2NpaVdvcmQpIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5maW5kS2V5YCBhbmQgYF8uZmluZExhc3RLZXlgLFxuICAgKiB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMsIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYGNvbGxlY3Rpb25gXG4gICAqIHVzaW5nIGBlYWNoRnVuY2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGBjb2xsZWN0aW9uYC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZvdW5kIGVsZW1lbnQgb3IgaXRzIGtleSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VGaW5kS2V5KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZWFjaEZ1bmMpIHtcbiAgICB2YXIgcmVzdWx0O1xuICAgIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGtleSwgY29sbGVjdGlvbikpIHtcbiAgICAgICAgcmVzdWx0ID0ga2V5O1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maW5kSW5kZXhgIGFuZCBgXy5maW5kTGFzdEluZGV4YCB3aXRob3V0XG4gICAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgsIGZyb21SaWdodCkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIGluZGV4ID0gZnJvbUluZGV4ICsgKGZyb21SaWdodCA/IDEgOiAtMSk7XG5cbiAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW5kZXhPZmAgd2l0aG91dCBgZnJvbUluZGV4YCBib3VuZHMgY2hlY2tzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICAgID8gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleClcbiAgICAgIDogYmFzZUZpbmRJbmRleChhcnJheSwgYmFzZUlzTmFOLCBmcm9tSW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYmFzZUluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VJbmRleE9mV2l0aChhcnJheSwgdmFsdWUsIGZyb21JbmRleCwgY29tcGFyYXRvcikge1xuICAgIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoY29tcGFyYXRvcihhcnJheVtpbmRleF0sIHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hTmAgd2l0aG91dCBzdXBwb3J0IGZvciBudW1iZXIgb2JqZWN0cy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlSXNOYU4odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lYW5gIGFuZCBgXy5tZWFuQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VNZWFuKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICByZXR1cm4gbGVuZ3RoID8gKGJhc2VTdW0oYXJyYXksIGl0ZXJhdGVlKSAvIGxlbmd0aCkgOiBOQU47XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVByb3BlcnR5KGtleSkge1xuICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlPZmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVByb3BlcnR5T2Yob2JqZWN0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZWR1Y2VgIGFuZCBgXy5yZWR1Y2VSaWdodGAsIHdpdGhvdXQgc3VwcG9ydFxuICAgKiBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgY29sbGVjdGlvbmAgdXNpbmcgYGVhY2hGdW5jYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0geyp9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGluaXRBY2N1bSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBvciBsYXN0IGVsZW1lbnQgb2ZcbiAgICogIGBjb2xsZWN0aW9uYCBhcyB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZWFjaEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBgY29sbGVjdGlvbmAuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VSZWR1Y2UoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGVhY2hGdW5jKSB7XG4gICAgZWFjaEZ1bmMoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGluaXRBY2N1bVxuICAgICAgICA/IChpbml0QWNjdW0gPSBmYWxzZSwgdmFsdWUpXG4gICAgICAgIDogaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRCeWAgd2hpY2ggdXNlcyBgY29tcGFyZXJgIHRvIGRlZmluZSB0aGVcbiAgICogc29ydCBvcmRlciBvZiBgYXJyYXlgIGFuZCByZXBsYWNlcyBjcml0ZXJpYSBvYmplY3RzIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZ1xuICAgKiB2YWx1ZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzb3J0LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJlciBUaGUgZnVuY3Rpb24gdG8gZGVmaW5lIHNvcnQgb3JkZXIuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVNvcnRCeShhcnJheSwgY29tcGFyZXIpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgYXJyYXkuc29ydChjb21wYXJlcik7XG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBhcnJheVtsZW5ndGhdID0gYXJyYXlbbGVuZ3RoXS52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnN1bWAgYW5kIGBfLnN1bUJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN1bS5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VTdW0oYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIHJlc3VsdCxcbiAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciBjdXJyZW50ID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdKTtcbiAgICAgIGlmIChjdXJyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBjdXJyZW50IDogKHJlc3VsdCArIGN1cnJlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRpbWVzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHNcbiAgICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShuKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1BhaXJzYCBhbmQgYF8udG9QYWlyc0luYCB3aGljaCBjcmVhdGVzIGFuIGFycmF5XG4gICAqIG9mIGtleS12YWx1ZSBwYWlycyBmb3IgYG9iamVjdGAgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZXMgb2YgYHByb3BzYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgbmFtZXMgdG8gZ2V0IHZhbHVlcyBmb3IuXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VUb1BhaXJzKG9iamVjdCwgcHJvcHMpIHtcbiAgICByZXR1cm4gYXJyYXlNYXAocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIFtrZXksIG9iamVjdFtrZXldXTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50cmltYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVRyaW0oc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZ1xuICAgICAgPyBzdHJpbmcuc2xpY2UoMCwgdHJpbW1lZEVuZEluZGV4KHN0cmluZykgKyAxKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJylcbiAgICAgIDogc3RyaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAgICogYXJyYXkgb2YgYG9iamVjdGAgcHJvcGVydHkgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb3BlcnR5IG5hbWVzXG4gICAqIG9mIGBwcm9wc2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgICByZXR1cm4gYXJyYXlNYXAocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdFtrZXldO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIGBjYWNoZWAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IGNhY2hlIFRoZSBjYWNoZSB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgICByZXR1cm4gY2FjaGUuaGFzKGtleSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbVN0YXJ0YCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBzdHJpbmcgc3ltYm9sXG4gICAqIHRoYXQgaXMgbm90IGZvdW5kIGluIHRoZSBjaGFyYWN0ZXIgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gc3RyU3ltYm9scyBUaGUgc3RyaW5nIHN5bWJvbHMgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtBcnJheX0gY2hyU3ltYm9scyBUaGUgY2hhcmFjdGVyIHN5bWJvbHMgdG8gZmluZC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IHVubWF0Y2hlZCBzdHJpbmcgc3ltYm9sLlxuICAgKi9cbiAgZnVuY3Rpb24gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc3RyU3ltYm9scy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCAmJiBiYXNlSW5kZXhPZihjaHJTeW1ib2xzLCBzdHJTeW1ib2xzW2luZGV4XSwgMCkgPiAtMSkge31cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbUVuZGAgdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBzdHJpbmcgc3ltYm9sXG4gICAqIHRoYXQgaXMgbm90IGZvdW5kIGluIHRoZSBjaGFyYWN0ZXIgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gc3RyU3ltYm9scyBUaGUgc3RyaW5nIHN5bWJvbHMgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtBcnJheX0gY2hyU3ltYm9scyBUaGUgY2hhcmFjdGVyIHN5bWJvbHMgdG8gZmluZC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdW5tYXRjaGVkIHN0cmluZyBzeW1ib2wuXG4gICAqL1xuICBmdW5jdGlvbiBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpIHtcbiAgICB2YXIgaW5kZXggPSBzdHJTeW1ib2xzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpbmRleC0tICYmIGJhc2VJbmRleE9mKGNoclN5bWJvbHMsIHN0clN5bWJvbHNbaW5kZXhdLCAwKSA+IC0xKSB7fVxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgYHBsYWNlaG9sZGVyYCBvY2N1cnJlbmNlcyBpbiBgYXJyYXlgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSBwbGFjZWhvbGRlciBUaGUgcGxhY2Vob2xkZXIgdG8gc2VhcmNoIGZvci5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcGxhY2Vob2xkZXIgY291bnQuXG4gICAqL1xuICBmdW5jdGlvbiBjb3VudEhvbGRlcnMoYXJyYXksIHBsYWNlaG9sZGVyKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzdWx0ID0gMDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgaWYgKGFycmF5W2xlbmd0aF0gPT09IHBsYWNlaG9sZGVyKSB7XG4gICAgICAgICsrcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8uZGVidXJyYCB0byBjb252ZXJ0IExhdGluLTEgU3VwcGxlbWVudCBhbmQgTGF0aW4gRXh0ZW5kZWQtQVxuICAgKiBsZXR0ZXJzIHRvIGJhc2ljIExhdGluIGxldHRlcnMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsZXR0ZXIgVGhlIG1hdGNoZWQgbGV0dGVyIHRvIGRlYnVyci5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZGVidXJyZWQgbGV0dGVyLlxuICAgKi9cbiAgdmFyIGRlYnVyckxldHRlciA9IGJhc2VQcm9wZXJ0eU9mKGRlYnVycmVkTGV0dGVycyk7XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8uZXNjYXBlYCB0byBjb252ZXJ0IGNoYXJhY3RlcnMgdG8gSFRNTCBlbnRpdGllcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNociBUaGUgbWF0Y2hlZCBjaGFyYWN0ZXIgdG8gZXNjYXBlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIGNoYXJhY3Rlci5cbiAgICovXG4gIHZhciBlc2NhcGVIdG1sQ2hhciA9IGJhc2VQcm9wZXJ0eU9mKGh0bWxFc2NhcGVzKTtcblxuICAvKipcbiAgICogVXNlZCBieSBgXy50ZW1wbGF0ZWAgdG8gZXNjYXBlIGNoYXJhY3RlcnMgZm9yIGluY2x1c2lvbiBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIGVzY2FwZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAqL1xuICBmdW5jdGlvbiBlc2NhcGVTdHJpbmdDaGFyKGNocikge1xuICAgIHJldHVybiAnXFxcXCcgKyBzdHJpbmdFc2NhcGVzW2Nocl07XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0VmFsdWUob2JqZWN0LCBrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYHN0cmluZ2AgY29udGFpbnMgVW5pY29kZSBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgc3ltYm9sIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBoYXNVbmljb2RlKHN0cmluZykge1xuICAgIHJldHVybiByZUhhc1VuaWNvZGUudGVzdChzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBgc3RyaW5nYCBjb250YWlucyBhIHdvcmQgY29tcG9zZWQgb2YgVW5pY29kZSBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgd29yZCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gaGFzVW5pY29kZVdvcmQoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHJlSGFzVW5pY29kZVdvcmQudGVzdChzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBpdGVyYXRvcmAgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBpdGVyYXRvciBUaGUgaXRlcmF0b3IgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBpdGVyYXRvclRvQXJyYXkoaXRlcmF0b3IpIHtcbiAgICB2YXIgZGF0YSxcbiAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICB3aGlsZSAoIShkYXRhID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICByZXN1bHQucHVzaChkYXRhLnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgbWFwYCB0byBpdHMga2V5LXZhbHVlIHBhaXJzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAqL1xuICBmdW5jdGlvbiBtYXBUb0FycmF5KG1hcCkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShtYXAuc2l6ZSk7XG5cbiAgICBtYXAuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICByZXN1bHRbKytpbmRleF0gPSBba2V5LCB2YWx1ZV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gb3ZlckFyZyhmdW5jLCB0cmFuc2Zvcm0pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgYHBsYWNlaG9sZGVyYCBlbGVtZW50cyBpbiBgYXJyYXlgIHdpdGggYW4gaW50ZXJuYWwgcGxhY2Vob2xkZXJcbiAgICogYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlaXIgaW5kZXhlcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICogQHBhcmFtIHsqfSBwbGFjZWhvbGRlciBUaGUgcGxhY2Vob2xkZXIgdG8gcmVwbGFjZS5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICovXG4gIGZ1bmN0aW9uIHJlcGxhY2VIb2xkZXJzKGFycmF5LCBwbGFjZWhvbGRlcikge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgaWYgKHZhbHVlID09PSBwbGFjZWhvbGRlciB8fCB2YWx1ZSA9PT0gUExBQ0VIT0xERVIpIHtcbiAgICAgICAgYXJyYXlbaW5kZXhdID0gUExBQ0VIT0xERVI7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzZXRgIHRvIGFuIGFycmF5IG9mIGl0cyB2YWx1ZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAgICovXG4gIGZ1bmN0aW9uIHNldFRvQXJyYXkoc2V0KSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KHNldC5zaXplKTtcblxuICAgIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzZXRgIHRvIGl0cyB2YWx1ZS12YWx1ZSBwYWlycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgdmFsdWUtdmFsdWUgcGFpcnMuXG4gICAqL1xuICBmdW5jdGlvbiBzZXRUb1BhaXJzKHNldCkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgICBzZXQuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmVzdWx0WysraW5kZXhdID0gW3ZhbHVlLCB2YWx1ZV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5kZXhPZmAgd2hpY2ggcGVyZm9ybXMgc3RyaWN0IGVxdWFsaXR5XG4gICAqIGNvbXBhcmlzb25zIG9mIHZhbHVlcywgaS5lLiBgPT09YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubGFzdEluZGV4T2ZgIHdoaWNoIHBlcmZvcm1zIHN0cmljdCBlcXVhbGl0eVxuICAgKiBjb21wYXJpc29ucyBvZiB2YWx1ZXMsIGkuZS4gYD09PWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmljdExhc3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgdmFyIGluZGV4ID0gZnJvbUluZGV4ICsgMTtcbiAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgaWYgKGFycmF5W2luZGV4XSA9PT0gdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbnVtYmVyIG9mIHN5bWJvbHMgaW4gYHN0cmluZ2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmluZ1NpemUoc3RyaW5nKSB7XG4gICAgcmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgICAgPyB1bmljb2RlU2l6ZShzdHJpbmcpXG4gICAgICA6IGFzY2lpU2l6ZShzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBzdHJpbmdUb0FycmF5KHN0cmluZykge1xuICAgIHJldHVybiBoYXNVbmljb2RlKHN0cmluZylcbiAgICAgID8gdW5pY29kZVRvQXJyYXkoc3RyaW5nKVxuICAgICAgOiBhc2NpaVRvQXJyYXkoc3RyaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltRW5kYCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlXG4gICAqIGNoYXJhY3RlciBvZiBgc3RyaW5nYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlIGNoYXJhY3Rlci5cbiAgICovXG4gIGZ1bmN0aW9uIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpIHtcbiAgICB2YXIgaW5kZXggPSBzdHJpbmcubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGluZGV4LS0gJiYgcmVXaGl0ZXNwYWNlLnRlc3Qoc3RyaW5nLmNoYXJBdChpbmRleCkpKSB7fVxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnVuZXNjYXBlYCB0byBjb252ZXJ0IEhUTUwgZW50aXRpZXMgdG8gY2hhcmFjdGVycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNociBUaGUgbWF0Y2hlZCBjaGFyYWN0ZXIgdG8gdW5lc2NhcGUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAqL1xuICB2YXIgdW5lc2NhcGVIdG1sQ2hhciA9IGJhc2VQcm9wZXJ0eU9mKGh0bWxVbmVzY2FwZXMpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzaXplIG9mIGEgVW5pY29kZSBgc3RyaW5nYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN0cmluZyBzaXplLlxuICAgKi9cbiAgZnVuY3Rpb24gdW5pY29kZVNpemUoc3RyaW5nKSB7XG4gICAgdmFyIHJlc3VsdCA9IHJlVW5pY29kZS5sYXN0SW5kZXggPSAwO1xuICAgIHdoaWxlIChyZVVuaWNvZGUudGVzdChzdHJpbmcpKSB7XG4gICAgICArK3Jlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIFVuaWNvZGUgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIHVuaWNvZGVUb0FycmF5KHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlKSB8fCBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdHMgYSBVbmljb2RlIGBzdHJpbmdgIGludG8gYW4gYXJyYXkgb2YgaXRzIHdvcmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHdvcmRzIG9mIGBzdHJpbmdgLlxuICAgKi9cbiAgZnVuY3Rpb24gdW5pY29kZVdvcmRzKHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlV29yZCkgfHwgW107XG4gIH1cblxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHByaXN0aW5lIGBsb2Rhc2hgIGZ1bmN0aW9uIHVzaW5nIHRoZSBgY29udGV4dGAgb2JqZWN0LlxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqIEBtZW1iZXJPZiBfXG4gICAqIEBzaW5jZSAxLjEuMFxuICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgKiBAcGFyYW0ge09iamVjdH0gW2NvbnRleHQ9cm9vdF0gVGhlIGNvbnRleHQgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYSBuZXcgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIF8ubWl4aW4oeyAnZm9vJzogXy5jb25zdGFudCgnZm9vJykgfSk7XG4gICAqXG4gICAqIHZhciBsb2Rhc2ggPSBfLnJ1bkluQ29udGV4dCgpO1xuICAgKiBsb2Rhc2gubWl4aW4oeyAnYmFyJzogbG9kYXNoLmNvbnN0YW50KCdiYXInKSB9KTtcbiAgICpcbiAgICogXy5pc0Z1bmN0aW9uKF8uZm9vKTtcbiAgICogLy8gPT4gdHJ1ZVxuICAgKiBfLmlzRnVuY3Rpb24oXy5iYXIpO1xuICAgKiAvLyA9PiBmYWxzZVxuICAgKlxuICAgKiBsb2Rhc2guaXNGdW5jdGlvbihsb2Rhc2guZm9vKTtcbiAgICogLy8gPT4gZmFsc2VcbiAgICogbG9kYXNoLmlzRnVuY3Rpb24obG9kYXNoLmJhcik7XG4gICAqIC8vID0+IHRydWVcbiAgICpcbiAgICogLy8gQ3JlYXRlIGEgc3VwZWQtdXAgYGRlZmVyYCBpbiBOb2RlLmpzLlxuICAgKiB2YXIgZGVmZXIgPSBfLnJ1bkluQ29udGV4dCh7ICdzZXRUaW1lb3V0Jzogc2V0SW1tZWRpYXRlIH0pLmRlZmVyO1xuICAgKi9cbiAgdmFyIHJ1bkluQ29udGV4dCA9IChmdW5jdGlvbiBydW5JbkNvbnRleHQoY29udGV4dCkge1xuICAgIGNvbnRleHQgPSBjb250ZXh0ID09IG51bGwgPyByb290IDogXy5kZWZhdWx0cyhyb290Lk9iamVjdCgpLCBjb250ZXh0LCBfLnBpY2socm9vdCwgY29udGV4dFByb3BzKSk7XG5cbiAgICAvKiogQnVpbHQtaW4gY29uc3RydWN0b3IgcmVmZXJlbmNlcy4gKi9cbiAgICB2YXIgQXJyYXkgPSBjb250ZXh0LkFycmF5LFxuICAgICAgICBEYXRlID0gY29udGV4dC5EYXRlLFxuICAgICAgICBFcnJvciA9IGNvbnRleHQuRXJyb3IsXG4gICAgICAgIEZ1bmN0aW9uID0gY29udGV4dC5GdW5jdGlvbixcbiAgICAgICAgTWF0aCA9IGNvbnRleHQuTWF0aCxcbiAgICAgICAgT2JqZWN0ID0gY29udGV4dC5PYmplY3QsXG4gICAgICAgIFJlZ0V4cCA9IGNvbnRleHQuUmVnRXhwLFxuICAgICAgICBTdHJpbmcgPSBjb250ZXh0LlN0cmluZyxcbiAgICAgICAgVHlwZUVycm9yID0gY29udGV4dC5UeXBlRXJyb3I7XG5cbiAgICAvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG4gICAgdmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGUsXG4gICAgICAgIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICAgICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4gICAgLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xuICAgIHZhciBjb3JlSnNEYXRhID0gY29udGV4dFsnX19jb3JlLWpzX3NoYXJlZF9fJ107XG5cbiAgICAvKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG4gICAgdmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuICAgIC8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xuICAgIHZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4gICAgLyoqIFVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIElEcy4gKi9cbiAgICB2YXIgaWRDb3VudGVyID0gMDtcblxuICAgIC8qKiBVc2VkIHRvIGRldGVjdCBtZXRob2RzIG1hc3F1ZXJhZGluZyBhcyBuYXRpdmUuICovXG4gICAgdmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICAgICAgcmV0dXJuIHVpZCA/ICgnU3ltYm9sKHNyYylfMS4nICsgdWlkKSA6ICcnO1xuICAgIH0oKSk7XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gICAgICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gICAgICogb2YgdmFsdWVzLlxuICAgICAqL1xuICAgIHZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4gICAgLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xuICAgIHZhciBvYmplY3RDdG9yU3RyaW5nID0gZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0KTtcblxuICAgIC8qKiBVc2VkIHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGBfYCByZWZlcmVuY2UgaW4gYF8ubm9Db25mbGljdGAuICovXG4gICAgdmFyIG9sZERhc2ggPSByb290Ll87XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xuICAgIHZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gICAgICBmdW5jVG9TdHJpbmcuY2FsbChoYXNPd25Qcm9wZXJ0eSkucmVwbGFjZShyZVJlZ0V4cENoYXIsICdcXFxcJCYnKVxuICAgICAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4gICAgKTtcblxuICAgIC8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xuICAgIHZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gY29udGV4dC5CdWZmZXIgOiB1bmRlZmluZWQsXG4gICAgICAgIFN5bWJvbCA9IGNvbnRleHQuU3ltYm9sLFxuICAgICAgICBVaW50OEFycmF5ID0gY29udGV4dC5VaW50OEFycmF5LFxuICAgICAgICBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCksXG4gICAgICAgIG9iamVjdENyZWF0ZSA9IE9iamVjdC5jcmVhdGUsXG4gICAgICAgIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGUsXG4gICAgICAgIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlLFxuICAgICAgICBzcHJlYWRhYmxlU3ltYm9sID0gU3ltYm9sID8gU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgc3ltSXRlcmF0b3IgPSBTeW1ib2wgPyBTeW1ib2wuaXRlcmF0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIGRlZmluZVByb3BlcnR5ID0gKGZ1bmN0aW9uKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICAgICAgZnVuYyh7fSwgJycsIHt9KTtcbiAgICAgICAgcmV0dXJuIGZ1bmM7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH0oKSk7XG5cbiAgICAvKiogTW9ja2VkIGJ1aWx0LWlucy4gKi9cbiAgICB2YXIgY3R4Q2xlYXJUaW1lb3V0ID0gY29udGV4dC5jbGVhclRpbWVvdXQgIT09IHJvb3QuY2xlYXJUaW1lb3V0ICYmIGNvbnRleHQuY2xlYXJUaW1lb3V0LFxuICAgICAgICBjdHhOb3cgPSBEYXRlICYmIERhdGUubm93ICE9PSByb290LkRhdGUubm93ICYmIERhdGUubm93LFxuICAgICAgICBjdHhTZXRUaW1lb3V0ID0gY29udGV4dC5zZXRUaW1lb3V0ICE9PSByb290LnNldFRpbWVvdXQgJiYgY29udGV4dC5zZXRUaW1lb3V0O1xuXG4gICAgLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xuICAgIHZhciBuYXRpdmVDZWlsID0gTWF0aC5jZWlsLFxuICAgICAgICBuYXRpdmVGbG9vciA9IE1hdGguZmxvb3IsXG4gICAgICAgIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLFxuICAgICAgICBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICAgICAgbmF0aXZlSXNGaW5pdGUgPSBjb250ZXh0LmlzRmluaXRlLFxuICAgICAgICBuYXRpdmVKb2luID0gYXJyYXlQcm90by5qb2luLFxuICAgICAgICBuYXRpdmVLZXlzID0gb3ZlckFyZyhPYmplY3Qua2V5cywgT2JqZWN0KSxcbiAgICAgICAgbmF0aXZlTWF4ID0gTWF0aC5tYXgsXG4gICAgICAgIG5hdGl2ZU1pbiA9IE1hdGgubWluLFxuICAgICAgICBuYXRpdmVOb3cgPSBEYXRlLm5vdyxcbiAgICAgICAgbmF0aXZlUGFyc2VJbnQgPSBjb250ZXh0LnBhcnNlSW50LFxuICAgICAgICBuYXRpdmVSYW5kb20gPSBNYXRoLnJhbmRvbSxcbiAgICAgICAgbmF0aXZlUmV2ZXJzZSA9IGFycmF5UHJvdG8ucmV2ZXJzZTtcblxuICAgIC8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbiAgICB2YXIgRGF0YVZpZXcgPSBnZXROYXRpdmUoY29udGV4dCwgJ0RhdGFWaWV3JyksXG4gICAgICAgIE1hcCA9IGdldE5hdGl2ZShjb250ZXh0LCAnTWFwJyksXG4gICAgICAgIFByb21pc2UgPSBnZXROYXRpdmUoY29udGV4dCwgJ1Byb21pc2UnKSxcbiAgICAgICAgU2V0ID0gZ2V0TmF0aXZlKGNvbnRleHQsICdTZXQnKSxcbiAgICAgICAgV2Vha01hcCA9IGdldE5hdGl2ZShjb250ZXh0LCAnV2Vha01hcCcpLFxuICAgICAgICBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5cbiAgICAvKiogVXNlZCB0byBzdG9yZSBmdW5jdGlvbiBtZXRhZGF0YS4gKi9cbiAgICB2YXIgbWV0YU1hcCA9IFdlYWtNYXAgJiYgbmV3IFdlYWtNYXA7XG5cbiAgICAvKiogVXNlZCB0byBsb29rdXAgdW5taW5pZmllZCBmdW5jdGlvbiBuYW1lcy4gKi9cbiAgICB2YXIgcmVhbE5hbWVzID0ge307XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3QgbWFwcywgc2V0cywgYW5kIHdlYWttYXBzLiAqL1xuICAgIHZhciBkYXRhVmlld0N0b3JTdHJpbmcgPSB0b1NvdXJjZShEYXRhVmlldyksXG4gICAgICAgIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLFxuICAgICAgICBwcm9taXNlQ3RvclN0cmluZyA9IHRvU291cmNlKFByb21pc2UpLFxuICAgICAgICBzZXRDdG9yU3RyaW5nID0gdG9Tb3VyY2UoU2V0KSxcbiAgICAgICAgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcblxuICAgIC8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xuICAgIHZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgbG9kYXNoYCBvYmplY3Qgd2hpY2ggd3JhcHMgYHZhbHVlYCB0byBlbmFibGUgaW1wbGljaXQgbWV0aG9kXG4gICAgICogY2hhaW4gc2VxdWVuY2VzLiBNZXRob2RzIHRoYXQgb3BlcmF0ZSBvbiBhbmQgcmV0dXJuIGFycmF5cywgY29sbGVjdGlvbnMsXG4gICAgICogYW5kIGZ1bmN0aW9ucyBjYW4gYmUgY2hhaW5lZCB0b2dldGhlci4gTWV0aG9kcyB0aGF0IHJldHJpZXZlIGEgc2luZ2xlIHZhbHVlXG4gICAgICogb3IgbWF5IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZSB3aWxsIGF1dG9tYXRpY2FsbHkgZW5kIHRoZSBjaGFpbiBzZXF1ZW5jZVxuICAgICAqIGFuZCByZXR1cm4gdGhlIHVud3JhcHBlZCB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgdmFsdWUgbXVzdCBiZSB1bndyYXBwZWRcbiAgICAgKiB3aXRoIGBfI3ZhbHVlYC5cbiAgICAgKlxuICAgICAqIEV4cGxpY2l0IGNoYWluIHNlcXVlbmNlcywgd2hpY2ggbXVzdCBiZSB1bndyYXBwZWQgd2l0aCBgXyN2YWx1ZWAsIG1heSBiZVxuICAgICAqIGVuYWJsZWQgdXNpbmcgYF8uY2hhaW5gLlxuICAgICAqXG4gICAgICogVGhlIGV4ZWN1dGlvbiBvZiBjaGFpbmVkIG1ldGhvZHMgaXMgbGF6eSwgdGhhdCBpcywgaXQncyBkZWZlcnJlZCB1bnRpbFxuICAgICAqIGBfI3ZhbHVlYCBpcyBpbXBsaWNpdGx5IG9yIGV4cGxpY2l0bHkgY2FsbGVkLlxuICAgICAqXG4gICAgICogTGF6eSBldmFsdWF0aW9uIGFsbG93cyBzZXZlcmFsIG1ldGhvZHMgdG8gc3VwcG9ydCBzaG9ydGN1dCBmdXNpb24uXG4gICAgICogU2hvcnRjdXQgZnVzaW9uIGlzIGFuIG9wdGltaXphdGlvbiB0byBtZXJnZSBpdGVyYXRlZSBjYWxsczsgdGhpcyBhdm9pZHNcbiAgICAgKiB0aGUgY3JlYXRpb24gb2YgaW50ZXJtZWRpYXRlIGFycmF5cyBhbmQgY2FuIGdyZWF0bHkgcmVkdWNlIHRoZSBudW1iZXIgb2ZcbiAgICAgKiBpdGVyYXRlZSBleGVjdXRpb25zLiBTZWN0aW9ucyBvZiBhIGNoYWluIHNlcXVlbmNlIHF1YWxpZnkgZm9yIHNob3J0Y3V0XG4gICAgICogZnVzaW9uIGlmIHRoZSBzZWN0aW9uIGlzIGFwcGxpZWQgdG8gYW4gYXJyYXkgYW5kIGl0ZXJhdGVlcyBhY2NlcHQgb25seVxuICAgICAqIG9uZSBhcmd1bWVudC4gVGhlIGhldXJpc3RpYyBmb3Igd2hldGhlciBhIHNlY3Rpb24gcXVhbGlmaWVzIGZvciBzaG9ydGN1dFxuICAgICAqIGZ1c2lvbiBpcyBzdWJqZWN0IHRvIGNoYW5nZS5cbiAgICAgKlxuICAgICAqIENoYWluaW5nIGlzIHN1cHBvcnRlZCBpbiBjdXN0b20gYnVpbGRzIGFzIGxvbmcgYXMgdGhlIGBfI3ZhbHVlYCBtZXRob2QgaXNcbiAgICAgKiBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGluY2x1ZGVkIGluIHRoZSBidWlsZC5cbiAgICAgKlxuICAgICAqIEluIGFkZGl0aW9uIHRvIGxvZGFzaCBtZXRob2RzLCB3cmFwcGVycyBoYXZlIGBBcnJheWAgYW5kIGBTdHJpbmdgIG1ldGhvZHMuXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBgQXJyYXlgIG1ldGhvZHMgYXJlOlxuICAgICAqIGBjb25jYXRgLCBgam9pbmAsIGBwb3BgLCBgcHVzaGAsIGBzaGlmdGAsIGBzb3J0YCwgYHNwbGljZWAsIGFuZCBgdW5zaGlmdGBcbiAgICAgKlxuICAgICAqIFRoZSB3cmFwcGVyIGBTdHJpbmdgIG1ldGhvZHMgYXJlOlxuICAgICAqIGByZXBsYWNlYCBhbmQgYHNwbGl0YFxuICAgICAqXG4gICAgICogVGhlIHdyYXBwZXIgbWV0aG9kcyB0aGF0IHN1cHBvcnQgc2hvcnRjdXQgZnVzaW9uIGFyZTpcbiAgICAgKiBgYXRgLCBgY29tcGFjdGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsIGBkcm9wV2hpbGVgLCBgZmlsdGVyYCwgYGZpbmRgLFxuICAgICAqIGBmaW5kTGFzdGAsIGBoZWFkYCwgYGluaXRpYWxgLCBgbGFzdGAsIGBtYXBgLCBgcmVqZWN0YCwgYHJldmVyc2VgLCBgc2xpY2VgLFxuICAgICAqIGB0YWlsYCwgYHRha2VgLCBgdGFrZVJpZ2h0YCwgYHRha2VSaWdodFdoaWxlYCwgYHRha2VXaGlsZWAsIGFuZCBgdG9BcnJheWBcbiAgICAgKlxuICAgICAqIFRoZSBjaGFpbmFibGUgd3JhcHBlciBtZXRob2RzIGFyZTpcbiAgICAgKiBgYWZ0ZXJgLCBgYXJ5YCwgYGFzc2lnbmAsIGBhc3NpZ25JbmAsIGBhc3NpZ25JbldpdGhgLCBgYXNzaWduV2l0aGAsIGBhdGAsXG4gICAgICogYGJlZm9yZWAsIGBiaW5kYCwgYGJpbmRBbGxgLCBgYmluZEtleWAsIGBjYXN0QXJyYXlgLCBgY2hhaW5gLCBgY2h1bmtgLFxuICAgICAqIGBjb21taXRgLCBgY29tcGFjdGAsIGBjb25jYXRgLCBgY29uZm9ybXNgLCBgY29uc3RhbnRgLCBgY291bnRCeWAsIGBjcmVhdGVgLFxuICAgICAqIGBjdXJyeWAsIGBkZWJvdW5jZWAsIGBkZWZhdWx0c2AsIGBkZWZhdWx0c0RlZXBgLCBgZGVmZXJgLCBgZGVsYXlgLFxuICAgICAqIGBkaWZmZXJlbmNlYCwgYGRpZmZlcmVuY2VCeWAsIGBkaWZmZXJlbmNlV2l0aGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsXG4gICAgICogYGRyb3BSaWdodFdoaWxlYCwgYGRyb3BXaGlsZWAsIGBleHRlbmRgLCBgZXh0ZW5kV2l0aGAsIGBmaWxsYCwgYGZpbHRlcmAsXG4gICAgICogYGZsYXRNYXBgLCBgZmxhdE1hcERlZXBgLCBgZmxhdE1hcERlcHRoYCwgYGZsYXR0ZW5gLCBgZmxhdHRlbkRlZXBgLFxuICAgICAqIGBmbGF0dGVuRGVwdGhgLCBgZmxpcGAsIGBmbG93YCwgYGZsb3dSaWdodGAsIGBmcm9tUGFpcnNgLCBgZnVuY3Rpb25zYCxcbiAgICAgKiBgZnVuY3Rpb25zSW5gLCBgZ3JvdXBCeWAsIGBpbml0aWFsYCwgYGludGVyc2VjdGlvbmAsIGBpbnRlcnNlY3Rpb25CeWAsXG4gICAgICogYGludGVyc2VjdGlvbldpdGhgLCBgaW52ZXJ0YCwgYGludmVydEJ5YCwgYGludm9rZU1hcGAsIGBpdGVyYXRlZWAsIGBrZXlCeWAsXG4gICAgICogYGtleXNgLCBga2V5c0luYCwgYG1hcGAsIGBtYXBLZXlzYCwgYG1hcFZhbHVlc2AsIGBtYXRjaGVzYCwgYG1hdGNoZXNQcm9wZXJ0eWAsXG4gICAgICogYG1lbW9pemVgLCBgbWVyZ2VgLCBgbWVyZ2VXaXRoYCwgYG1ldGhvZGAsIGBtZXRob2RPZmAsIGBtaXhpbmAsIGBuZWdhdGVgLFxuICAgICAqIGBudGhBcmdgLCBgb21pdGAsIGBvbWl0QnlgLCBgb25jZWAsIGBvcmRlckJ5YCwgYG92ZXJgLCBgb3ZlckFyZ3NgLFxuICAgICAqIGBvdmVyRXZlcnlgLCBgb3ZlclNvbWVgLCBgcGFydGlhbGAsIGBwYXJ0aWFsUmlnaHRgLCBgcGFydGl0aW9uYCwgYHBpY2tgLFxuICAgICAqIGBwaWNrQnlgLCBgcGxhbnRgLCBgcHJvcGVydHlgLCBgcHJvcGVydHlPZmAsIGBwdWxsYCwgYHB1bGxBbGxgLCBgcHVsbEFsbEJ5YCxcbiAgICAgKiBgcHVsbEFsbFdpdGhgLCBgcHVsbEF0YCwgYHB1c2hgLCBgcmFuZ2VgLCBgcmFuZ2VSaWdodGAsIGByZWFyZ2AsIGByZWplY3RgLFxuICAgICAqIGByZW1vdmVgLCBgcmVzdGAsIGByZXZlcnNlYCwgYHNhbXBsZVNpemVgLCBgc2V0YCwgYHNldFdpdGhgLCBgc2h1ZmZsZWAsXG4gICAgICogYHNsaWNlYCwgYHNvcnRgLCBgc29ydEJ5YCwgYHNwbGljZWAsIGBzcHJlYWRgLCBgdGFpbGAsIGB0YWtlYCwgYHRha2VSaWdodGAsXG4gICAgICogYHRha2VSaWdodFdoaWxlYCwgYHRha2VXaGlsZWAsIGB0YXBgLCBgdGhyb3R0bGVgLCBgdGhydWAsIGB0b0FycmF5YCxcbiAgICAgKiBgdG9QYWlyc2AsIGB0b1BhaXJzSW5gLCBgdG9QYXRoYCwgYHRvUGxhaW5PYmplY3RgLCBgdHJhbnNmb3JtYCwgYHVuYXJ5YCxcbiAgICAgKiBgdW5pb25gLCBgdW5pb25CeWAsIGB1bmlvbldpdGhgLCBgdW5pcWAsIGB1bmlxQnlgLCBgdW5pcVdpdGhgLCBgdW5zZXRgLFxuICAgICAqIGB1bnNoaWZ0YCwgYHVuemlwYCwgYHVuemlwV2l0aGAsIGB1cGRhdGVgLCBgdXBkYXRlV2l0aGAsIGB2YWx1ZXNgLFxuICAgICAqIGB2YWx1ZXNJbmAsIGB3aXRob3V0YCwgYHdyYXBgLCBgeG9yYCwgYHhvckJ5YCwgYHhvcldpdGhgLCBgemlwYCxcbiAgICAgKiBgemlwT2JqZWN0YCwgYHppcE9iamVjdERlZXBgLCBhbmQgYHppcFdpdGhgXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBtZXRob2RzIHRoYXQgYXJlICoqbm90KiogY2hhaW5hYmxlIGJ5IGRlZmF1bHQgYXJlOlxuICAgICAqIGBhZGRgLCBgYXR0ZW1wdGAsIGBjYW1lbENhc2VgLCBgY2FwaXRhbGl6ZWAsIGBjZWlsYCwgYGNsYW1wYCwgYGNsb25lYCxcbiAgICAgKiBgY2xvbmVEZWVwYCwgYGNsb25lRGVlcFdpdGhgLCBgY2xvbmVXaXRoYCwgYGNvbmZvcm1zVG9gLCBgZGVidXJyYCxcbiAgICAgKiBgZGVmYXVsdFRvYCwgYGRpdmlkZWAsIGBlYWNoYCwgYGVhY2hSaWdodGAsIGBlbmRzV2l0aGAsIGBlcWAsIGBlc2NhcGVgLFxuICAgICAqIGBlc2NhcGVSZWdFeHBgLCBgZXZlcnlgLCBgZmluZGAsIGBmaW5kSW5kZXhgLCBgZmluZEtleWAsIGBmaW5kTGFzdGAsXG4gICAgICogYGZpbmRMYXN0SW5kZXhgLCBgZmluZExhc3RLZXlgLCBgZmlyc3RgLCBgZmxvb3JgLCBgZm9yRWFjaGAsIGBmb3JFYWNoUmlnaHRgLFxuICAgICAqIGBmb3JJbmAsIGBmb3JJblJpZ2h0YCwgYGZvck93bmAsIGBmb3JPd25SaWdodGAsIGBnZXRgLCBgZ3RgLCBgZ3RlYCwgYGhhc2AsXG4gICAgICogYGhhc0luYCwgYGhlYWRgLCBgaWRlbnRpdHlgLCBgaW5jbHVkZXNgLCBgaW5kZXhPZmAsIGBpblJhbmdlYCwgYGludm9rZWAsXG4gICAgICogYGlzQXJndW1lbnRzYCwgYGlzQXJyYXlgLCBgaXNBcnJheUJ1ZmZlcmAsIGBpc0FycmF5TGlrZWAsIGBpc0FycmF5TGlrZU9iamVjdGAsXG4gICAgICogYGlzQm9vbGVhbmAsIGBpc0J1ZmZlcmAsIGBpc0RhdGVgLCBgaXNFbGVtZW50YCwgYGlzRW1wdHlgLCBgaXNFcXVhbGAsXG4gICAgICogYGlzRXF1YWxXaXRoYCwgYGlzRXJyb3JgLCBgaXNGaW5pdGVgLCBgaXNGdW5jdGlvbmAsIGBpc0ludGVnZXJgLCBgaXNMZW5ndGhgLFxuICAgICAqIGBpc01hcGAsIGBpc01hdGNoYCwgYGlzTWF0Y2hXaXRoYCwgYGlzTmFOYCwgYGlzTmF0aXZlYCwgYGlzTmlsYCwgYGlzTnVsbGAsXG4gICAgICogYGlzTnVtYmVyYCwgYGlzT2JqZWN0YCwgYGlzT2JqZWN0TGlrZWAsIGBpc1BsYWluT2JqZWN0YCwgYGlzUmVnRXhwYCxcbiAgICAgKiBgaXNTYWZlSW50ZWdlcmAsIGBpc1NldGAsIGBpc1N0cmluZ2AsIGBpc1VuZGVmaW5lZGAsIGBpc1R5cGVkQXJyYXlgLFxuICAgICAqIGBpc1dlYWtNYXBgLCBgaXNXZWFrU2V0YCwgYGpvaW5gLCBga2ViYWJDYXNlYCwgYGxhc3RgLCBgbGFzdEluZGV4T2ZgLFxuICAgICAqIGBsb3dlckNhc2VgLCBgbG93ZXJGaXJzdGAsIGBsdGAsIGBsdGVgLCBgbWF4YCwgYG1heEJ5YCwgYG1lYW5gLCBgbWVhbkJ5YCxcbiAgICAgKiBgbWluYCwgYG1pbkJ5YCwgYG11bHRpcGx5YCwgYG5vQ29uZmxpY3RgLCBgbm9vcGAsIGBub3dgLCBgbnRoYCwgYHBhZGAsXG4gICAgICogYHBhZEVuZGAsIGBwYWRTdGFydGAsIGBwYXJzZUludGAsIGBwb3BgLCBgcmFuZG9tYCwgYHJlZHVjZWAsIGByZWR1Y2VSaWdodGAsXG4gICAgICogYHJlcGVhdGAsIGByZXN1bHRgLCBgcm91bmRgLCBgcnVuSW5Db250ZXh0YCwgYHNhbXBsZWAsIGBzaGlmdGAsIGBzaXplYCxcbiAgICAgKiBgc25ha2VDYXNlYCwgYHNvbWVgLCBgc29ydGVkSW5kZXhgLCBgc29ydGVkSW5kZXhCeWAsIGBzb3J0ZWRMYXN0SW5kZXhgLFxuICAgICAqIGBzb3J0ZWRMYXN0SW5kZXhCeWAsIGBzdGFydENhc2VgLCBgc3RhcnRzV2l0aGAsIGBzdHViQXJyYXlgLCBgc3R1YkZhbHNlYCxcbiAgICAgKiBgc3R1Yk9iamVjdGAsIGBzdHViU3RyaW5nYCwgYHN0dWJUcnVlYCwgYHN1YnRyYWN0YCwgYHN1bWAsIGBzdW1CeWAsXG4gICAgICogYHRlbXBsYXRlYCwgYHRpbWVzYCwgYHRvRmluaXRlYCwgYHRvSW50ZWdlcmAsIGB0b0pTT05gLCBgdG9MZW5ndGhgLFxuICAgICAqIGB0b0xvd2VyYCwgYHRvTnVtYmVyYCwgYHRvU2FmZUludGVnZXJgLCBgdG9TdHJpbmdgLCBgdG9VcHBlcmAsIGB0cmltYCxcbiAgICAgKiBgdHJpbUVuZGAsIGB0cmltU3RhcnRgLCBgdHJ1bmNhdGVgLCBgdW5lc2NhcGVgLCBgdW5pcXVlSWRgLCBgdXBwZXJDYXNlYCxcbiAgICAgKiBgdXBwZXJGaXJzdGAsIGB2YWx1ZWAsIGFuZCBgd29yZHNgXG4gICAgICpcbiAgICAgKiBAbmFtZSBfXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAgaW4gYSBgbG9kYXNoYCBpbnN0YW5jZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDIsIDNdKTtcbiAgICAgKlxuICAgICAqIC8vIFJldHVybnMgYW4gdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIHdyYXBwZWQucmVkdWNlKF8uYWRkKTtcbiAgICAgKiAvLyA9PiA2XG4gICAgICpcbiAgICAgKiAvLyBSZXR1cm5zIGEgd3JhcHBlZCB2YWx1ZS5cbiAgICAgKiB2YXIgc3F1YXJlcyA9IHdyYXBwZWQubWFwKHNxdWFyZSk7XG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoc3F1YXJlcyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShzcXVhcmVzLnZhbHVlKCkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsb2Rhc2godmFsdWUpIHtcbiAgICAgIGlmIChpc09iamVjdExpa2UodmFsdWUpICYmICFpc0FycmF5KHZhbHVlKSAmJiAhKHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpKSB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIExvZGFzaFdyYXBwZXIpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdfX3dyYXBwZWRfXycpKSB7XG4gICAgICAgICAgcmV0dXJuIHdyYXBwZXJDbG9uZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY3JlYXRlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGFzc2lnbmluZ1xuICAgICAqIHByb3BlcnRpZXMgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvdG8gVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUNyZWF0ZSA9IChmdW5jdGlvbigpIHtcbiAgICAgIGZ1bmN0aW9uIG9iamVjdCgpIHt9XG4gICAgICByZXR1cm4gZnVuY3Rpb24ocHJvdG8pIHtcbiAgICAgICAgaWYgKCFpc09iamVjdChwcm90bykpIHtcbiAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9iamVjdENyZWF0ZSkge1xuICAgICAgICAgIHJldHVybiBvYmplY3RDcmVhdGUocHJvdG8pO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdC5wcm90b3R5cGUgPSBwcm90bztcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBvYmplY3Q7XG4gICAgICAgIG9iamVjdC5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0oKSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZnVuY3Rpb24gd2hvc2UgcHJvdG90eXBlIGNoYWluIHNlcXVlbmNlIHdyYXBwZXJzIGluaGVyaXQgZnJvbS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUxvZGFzaCgpIHtcbiAgICAgIC8vIE5vIG9wZXJhdGlvbiBwZXJmb3JtZWQuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgY29uc3RydWN0b3IgZm9yIGNyZWF0aW5nIGBsb2Rhc2hgIHdyYXBwZXIgb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtjaGFpbkFsbF0gRW5hYmxlIGV4cGxpY2l0IG1ldGhvZCBjaGFpbiBzZXF1ZW5jZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gTG9kYXNoV3JhcHBlcih2YWx1ZSwgY2hhaW5BbGwpIHtcbiAgICAgIHRoaXMuX193cmFwcGVkX18gPSB2YWx1ZTtcbiAgICAgIHRoaXMuX19hY3Rpb25zX18gPSBbXTtcbiAgICAgIHRoaXMuX19jaGFpbl9fID0gISFjaGFpbkFsbDtcbiAgICAgIHRoaXMuX19pbmRleF9fID0gMDtcbiAgICAgIHRoaXMuX192YWx1ZXNfXyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCeSBkZWZhdWx0LCB0aGUgdGVtcGxhdGUgZGVsaW1pdGVycyB1c2VkIGJ5IGxvZGFzaCBhcmUgbGlrZSB0aG9zZSBpblxuICAgICAqIGVtYmVkZGVkIFJ1YnkgKEVSQikgYXMgd2VsbCBhcyBFUzIwMTUgdGVtcGxhdGUgc3RyaW5ncy4gQ2hhbmdlIHRoZVxuICAgICAqIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICovXG4gICAgbG9kYXNoLnRlbXBsYXRlU2V0dGluZ3MgPSB7XG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBiZSBIVE1MLWVzY2FwZWQuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgICAqL1xuICAgICAgJ2VzY2FwZSc6IHJlRXNjYXBlLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgdG8gZGV0ZWN0IGNvZGUgdG8gYmUgZXZhbHVhdGVkLlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtSZWdFeHB9XG4gICAgICAgKi9cbiAgICAgICdldmFsdWF0ZSc6IHJlRXZhbHVhdGUsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBpbmplY3QuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgICAqL1xuICAgICAgJ2ludGVycG9sYXRlJzogcmVJbnRlcnBvbGF0ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2VkIHRvIHJlZmVyZW5jZSB0aGUgZGF0YSBvYmplY3QgaW4gdGhlIHRlbXBsYXRlIHRleHQuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAqL1xuICAgICAgJ3ZhcmlhYmxlJzogJycsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBpbXBvcnQgdmFyaWFibGVzIGludG8gdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICAgKi9cbiAgICAgICdpbXBvcnRzJzoge1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3MuaW1wb3J0c1xuICAgICAgICAgKiBAdHlwZSB7RnVuY3Rpb259XG4gICAgICAgICAqL1xuICAgICAgICAnXyc6IGxvZGFzaFxuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBFbnN1cmUgd3JhcHBlcnMgYXJlIGluc3RhbmNlcyBvZiBgYmFzZUxvZGFzaGAuXG4gICAgbG9kYXNoLnByb3RvdHlwZSA9IGJhc2VMb2Rhc2gucHJvdG90eXBlO1xuICAgIGxvZGFzaC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBsb2Rhc2g7XG5cbiAgICBMb2Rhc2hXcmFwcGVyLnByb3RvdHlwZSA9IGJhc2VDcmVhdGUoYmFzZUxvZGFzaC5wcm90b3R5cGUpO1xuICAgIExvZGFzaFdyYXBwZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTG9kYXNoV3JhcHBlcjtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBsYXp5IHdyYXBwZXIgb2JqZWN0IHdoaWNoIHdyYXBzIGB2YWx1ZWAgdG8gZW5hYmxlIGxhenkgZXZhbHVhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBMYXp5V3JhcHBlcih2YWx1ZSkge1xuICAgICAgdGhpcy5fX3dyYXBwZWRfXyA9IHZhbHVlO1xuICAgICAgdGhpcy5fX2FjdGlvbnNfXyA9IFtdO1xuICAgICAgdGhpcy5fX2Rpcl9fID0gMTtcbiAgICAgIHRoaXMuX19maWx0ZXJlZF9fID0gZmFsc2U7XG4gICAgICB0aGlzLl9faXRlcmF0ZWVzX18gPSBbXTtcbiAgICAgIHRoaXMuX190YWtlQ291bnRfXyA9IE1BWF9BUlJBWV9MRU5HVEg7XG4gICAgICB0aGlzLl9fdmlld3NfXyA9IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgbGF6eSB3cmFwcGVyIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgY2xvbmVcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgYExhenlXcmFwcGVyYCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGF6eUNsb25lKCkge1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMYXp5V3JhcHBlcih0aGlzLl9fd3JhcHBlZF9fKTtcbiAgICAgIHJlc3VsdC5fX2FjdGlvbnNfXyA9IGNvcHlBcnJheSh0aGlzLl9fYWN0aW9uc19fKTtcbiAgICAgIHJlc3VsdC5fX2Rpcl9fID0gdGhpcy5fX2Rpcl9fO1xuICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHRoaXMuX19maWx0ZXJlZF9fO1xuICAgICAgcmVzdWx0Ll9faXRlcmF0ZWVzX18gPSBjb3B5QXJyYXkodGhpcy5fX2l0ZXJhdGVlc19fKTtcbiAgICAgIHJlc3VsdC5fX3Rha2VDb3VudF9fID0gdGhpcy5fX3Rha2VDb3VudF9fO1xuICAgICAgcmVzdWx0Ll9fdmlld3NfXyA9IGNvcHlBcnJheSh0aGlzLl9fdmlld3NfXyk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldmVyc2VzIHRoZSBkaXJlY3Rpb24gb2YgbGF6eSBpdGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHJldmVyc2VcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgcmV2ZXJzZWQgYExhenlXcmFwcGVyYCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGF6eVJldmVyc2UoKSB7XG4gICAgICBpZiAodGhpcy5fX2ZpbHRlcmVkX18pIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgICAgcmVzdWx0Ll9fZGlyX18gPSAtMTtcbiAgICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSB0aGlzLmNsb25lKCk7XG4gICAgICAgIHJlc3VsdC5fX2Rpcl9fICo9IC0xO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyB0aGUgdW53cmFwcGVkIHZhbHVlIGZyb20gaXRzIGxhenkgd3JhcHBlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgdmFsdWVcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhenlWYWx1ZSgpIHtcbiAgICAgIHZhciBhcnJheSA9IHRoaXMuX193cmFwcGVkX18udmFsdWUoKSxcbiAgICAgICAgICBkaXIgPSB0aGlzLl9fZGlyX18sXG4gICAgICAgICAgaXNBcnIgPSBpc0FycmF5KGFycmF5KSxcbiAgICAgICAgICBpc1JpZ2h0ID0gZGlyIDwgMCxcbiAgICAgICAgICBhcnJMZW5ndGggPSBpc0FyciA/IGFycmF5Lmxlbmd0aCA6IDAsXG4gICAgICAgICAgdmlldyA9IGdldFZpZXcoMCwgYXJyTGVuZ3RoLCB0aGlzLl9fdmlld3NfXyksXG4gICAgICAgICAgc3RhcnQgPSB2aWV3LnN0YXJ0LFxuICAgICAgICAgIGVuZCA9IHZpZXcuZW5kLFxuICAgICAgICAgIGxlbmd0aCA9IGVuZCAtIHN0YXJ0LFxuICAgICAgICAgIGluZGV4ID0gaXNSaWdodCA/IGVuZCA6IChzdGFydCAtIDEpLFxuICAgICAgICAgIGl0ZXJhdGVlcyA9IHRoaXMuX19pdGVyYXRlZXNfXyxcbiAgICAgICAgICBpdGVyTGVuZ3RoID0gaXRlcmF0ZWVzLmxlbmd0aCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgdGFrZUNvdW50ID0gbmF0aXZlTWluKGxlbmd0aCwgdGhpcy5fX3Rha2VDb3VudF9fKTtcblxuICAgICAgaWYgKCFpc0FyciB8fCAoIWlzUmlnaHQgJiYgYXJyTGVuZ3RoID09IGxlbmd0aCAmJiB0YWtlQ291bnQgPT0gbGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gYmFzZVdyYXBwZXJWYWx1ZShhcnJheSwgdGhpcy5fX2FjdGlvbnNfXyk7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG5cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKGxlbmd0aC0tICYmIHJlc0luZGV4IDwgdGFrZUNvdW50KSB7XG4gICAgICAgIGluZGV4ICs9IGRpcjtcblxuICAgICAgICB2YXIgaXRlckluZGV4ID0gLTEsXG4gICAgICAgICAgICB2YWx1ZSA9IGFycmF5W2luZGV4XTtcblxuICAgICAgICB3aGlsZSAoKytpdGVySW5kZXggPCBpdGVyTGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIGRhdGEgPSBpdGVyYXRlZXNbaXRlckluZGV4XSxcbiAgICAgICAgICAgICAgaXRlcmF0ZWUgPSBkYXRhLml0ZXJhdGVlLFxuICAgICAgICAgICAgICB0eXBlID0gZGF0YS50eXBlLFxuICAgICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgICAgICAgIGlmICh0eXBlID09IExBWllfTUFQX0ZMQUcpIHtcbiAgICAgICAgICAgIHZhbHVlID0gY29tcHV0ZWQ7XG4gICAgICAgICAgfSBlbHNlIGlmICghY29tcHV0ZWQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlID09IExBWllfRklMVEVSX0ZMQUcpIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBicmVhayBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSBgTGF6eVdyYXBwZXJgIGlzIGFuIGluc3RhbmNlIG9mIGBiYXNlTG9kYXNoYC5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUgPSBiYXNlQ3JlYXRlKGJhc2VMb2Rhc2gucHJvdG90eXBlKTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMYXp5V3JhcHBlcjtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBoYXNoIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gSGFzaChlbnRyaWVzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGhhc2guXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoQ2xlYXIoKSB7XG4gICAgICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBoYXNoLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzaERlbGV0ZShrZXkpIHtcbiAgICAgIHZhciByZXN1bHQgPSB0aGlzLmhhcyhrZXkpICYmIGRlbGV0ZSB0aGlzLl9fZGF0YV9fW2tleV07XG4gICAgICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoR2V0KGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gZGF0YVtrZXldO1xuICAgICAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkgPyBkYXRhW2tleV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoSGFzKGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgcmV0dXJuIG5hdGl2ZUNyZWF0ZSA/IChkYXRhW2tleV0gIT09IHVuZGVmaW5lZCkgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBoYXNoIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgdGhpcy5zaXplICs9IHRoaXMuaGFzKGtleSkgPyAwIDogMTtcbiAgICAgIGRhdGFba2V5XSA9IChuYXRpdmVDcmVhdGUgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYEhhc2hgLlxuICAgIEhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuICAgIEhhc2gucHJvdG90eXBlWydkZWxldGUnXSA9IGhhc2hEZWxldGU7XG4gICAgSGFzaC5wcm90b3R5cGUuZ2V0ID0gaGFzaEdldDtcbiAgICBIYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuICAgIEhhc2gucHJvdG90eXBlLnNldCA9IGhhc2hTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICAgICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgICAgIHRoaXMuX19kYXRhX18gPSBbXTtcbiAgICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlRGVsZXRlKGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIGxhc3RJbmRleCA9IGRhdGEubGVuZ3RoIC0gMTtcbiAgICAgIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICAgICAgZGF0YS5wb3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICAgIC0tdGhpcy5zaXplO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGdldFxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgICAgIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlSGFzKGtleSkge1xuICAgICAgcmV0dXJuIGFzc29jSW5kZXhPZih0aGlzLl9fZGF0YV9fLCBrZXkpID4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbGlzdCBjYWNoZSBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgICsrdGhpcy5zaXplO1xuICAgICAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTGlzdENhY2hlYC5cbiAgICBMaXN0Q2FjaGUucHJvdG90eXBlLmNsZWFyID0gbGlzdENhY2hlQ2xlYXI7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5nZXQgPSBsaXN0Q2FjaGVHZXQ7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5oYXMgPSBsaXN0Q2FjaGVIYXM7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIE1hcENhY2hlKGVudHJpZXMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbWFwLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlQ2xlYXIoKSB7XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgICAgdGhpcy5fX2RhdGFfXyA9IHtcbiAgICAgICAgJ2hhc2gnOiBuZXcgSGFzaCxcbiAgICAgICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgICAgICdzdHJpbmcnOiBuZXcgSGFzaFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbWFwLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gICAgICB2YXIgcmVzdWx0ID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpWydkZWxldGUnXShrZXkpO1xuICAgICAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBtYXAgdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gICAgICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmdldChrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhIG1hcCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gICAgICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmhhcyhrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbWFwIGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLFxuICAgICAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgICAgIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgdGhpcy5zaXplICs9IGRhdGEuc2l6ZSA9PSBzaXplID8gMCA6IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTWFwQ2FjaGVgLlxuICAgIE1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IG1hcENhY2hlRGVsZXRlO1xuICAgIE1hcENhY2hlLnByb3RvdHlwZS5nZXQgPSBtYXBDYWNoZUdldDtcbiAgICBNYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlLnNldCA9IG1hcENhY2hlU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IGNhY2hlIG9iamVjdCB0byBzdG9yZSB1bmlxdWUgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIFNldENhY2hlKHZhbHVlcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gdmFsdWVzID09IG51bGwgPyAwIDogdmFsdWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuYWRkKHZhbHVlc1tpbmRleF0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYHZhbHVlYCB0byB0aGUgYXJyYXkgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGFkZFxuICAgICAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICAgICAqIEBhbGlhcyBwdXNoXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2FjaGUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0Q2FjaGVBZGQodmFsdWUpIHtcbiAgICAgIHRoaXMuX19kYXRhX18uc2V0KHZhbHVlLCBIQVNIX1VOREVGSU5FRCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBpbiB0aGUgYXJyYXkgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBTZXRDYWNoZWAuXG4gICAgU2V0Q2FjaGUucHJvdG90eXBlLmFkZCA9IFNldENhY2hlLnByb3RvdHlwZS5wdXNoID0gc2V0Q2FjaGVBZGQ7XG4gICAgU2V0Q2FjaGUucHJvdG90eXBlLmhhcyA9IHNldENhY2hlSGFzO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIFN0YWNrKGVudHJpZXMpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGUoZW50cmllcyk7XG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgc3RhY2suXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhY2tDbGVhcigpIHtcbiAgICAgIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICAgICAgdGhpcy5zaXplID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgc3RhY2suXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICByZXN1bHQgPSBkYXRhWydkZWxldGUnXShrZXkpO1xuXG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZ2V0XG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrR2V0KGtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgc3RhY2sgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgaGFzXG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrSGFzKGtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgc3RhY2sgYGtleWAgdG8gYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgc2V0XG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHN0YWNrIGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICAgIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgICAgIHZhciBwYWlycyA9IGRhdGEuX19kYXRhX187XG4gICAgICAgIGlmICghTWFwIHx8IChwYWlycy5sZW5ndGggPCBMQVJHRV9BUlJBWV9TSVpFIC0gMSkpIHtcbiAgICAgICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICAgICAgdGhpcy5zaXplID0gKytkYXRhLnNpemU7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGUocGFpcnMpO1xuICAgICAgfVxuICAgICAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgU3RhY2tgLlxuICAgIFN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG4gICAgU3RhY2sucHJvdG90eXBlWydkZWxldGUnXSA9IHN0YWNrRGVsZXRlO1xuICAgIFN0YWNrLnByb3RvdHlwZS5nZXQgPSBzdGFja0dldDtcbiAgICBTdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG4gICAgU3RhY2sucHJvdG90eXBlLnNldCA9IHN0YWNrU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpLFxuICAgICAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgICAgICBpc1R5cGUgPSAhaXNBcnIgJiYgIWlzQXJnICYmICFpc0J1ZmYgJiYgaXNUeXBlZEFycmF5KHZhbHVlKSxcbiAgICAgICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICAgICAhKHNraXBJbmRleGVzICYmIChcbiAgICAgICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAgICAgLy8gTm9kZS5qcyAwLjEwIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIGJ1ZmZlcnMuXG4gICAgICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgICAgIChpc1R5cGUgJiYgKGtleSA9PSAnYnVmZmVyJyB8fCBrZXkgPT0gJ2J5dGVMZW5ndGgnIHx8IGtleSA9PSAnYnl0ZU9mZnNldCcpKSB8fFxuICAgICAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgICAgICkpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2FtcGxlYCBmb3IgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheVNhbXBsZShhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBhcnJheVtiYXNlUmFuZG9tKDAsIGxlbmd0aCAtIDEpXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2FtcGxlU2l6ZWAgZm9yIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNhbXBsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheVNhbXBsZVNpemUoYXJyYXksIG4pIHtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZihjb3B5QXJyYXkoYXJyYXkpLCBiYXNlQ2xhbXAobiwgMCwgYXJyYXkubGVuZ3RoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNodWZmbGVgIGZvciBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFycmF5U2h1ZmZsZShhcnJheSkge1xuICAgICAgcmV0dXJuIHNodWZmbGVTZWxmKGNvcHlBcnJheShhcnJheSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXNzaWduVmFsdWVgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYXNzaWduXG4gICAgICogYHVuZGVmaW5lZGAgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKCh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmICFlcShvYmplY3Rba2V5XSwgdmFsdWUpKSB8fFxuICAgICAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgICAgIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhc3NvY0luZGV4T2YoYXJyYXksIGtleSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICBpZiAoZXEoYXJyYXlbbGVuZ3RoXVswXSwga2V5KSkge1xuICAgICAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZ2dyZWdhdGVzIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBvbiBgYWNjdW11bGF0b3JgIHdpdGgga2V5cyB0cmFuc2Zvcm1lZFxuICAgICAqIGJ5IGBpdGVyYXRlZWAgYW5kIHZhbHVlcyBzZXQgYnkgYHNldHRlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBgYWNjdW11bGF0b3JgIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIGFnZ3JlZ2F0ZWQgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgYWNjdW11bGF0b3JgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBZ2dyZWdhdG9yKGNvbGxlY3Rpb24sIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHNldHRlcihhY2N1bXVsYXRvciwgdmFsdWUsIGl0ZXJhdGVlKHZhbHVlKSwgY29sbGVjdGlvbik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICAgICAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUFzc2lnbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbkluYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAgICAgKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBc3NpZ25JbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5c0luKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGFzc2lnblZhbHVlYCBhbmQgYGFzc2lnbk1lcmdlVmFsdWVgIHdpdGhvdXRcbiAgICAgKiB2YWx1ZSBjaGVja3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgICAgIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICAgICAnZW51bWVyYWJsZSc6IHRydWUsXG4gICAgICAgICAgJ3ZhbHVlJzogdmFsdWUsXG4gICAgICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHBpY2tlZCBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQXQob2JqZWN0LCBwYXRocykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCksXG4gICAgICAgICAgc2tpcCA9IG9iamVjdCA9PSBudWxsO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXN1bHRbaW5kZXhdID0gc2tpcCA/IHVuZGVmaW5lZCA6IGdldChvYmplY3QsIHBhdGhzW2luZGV4XSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNsYW1wYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjbGFtcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyXSBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjbGFtcGVkIG51bWJlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQ2xhbXAobnVtYmVyLCBsb3dlciwgdXBwZXIpIHtcbiAgICAgIGlmIChudW1iZXIgPT09IG51bWJlcikge1xuICAgICAgICBpZiAodXBwZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG51bWJlciA9IG51bWJlciA8PSB1cHBlciA/IG51bWJlciA6IHVwcGVyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb3dlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbnVtYmVyID0gbnVtYmVyID49IGxvd2VyID8gbnVtYmVyIDogbG93ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xvbmVgIGFuZCBgXy5jbG9uZURlZXBgIHdoaWNoIHRyYWNrc1xuICAgICAqIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gICAgICogIDEgLSBEZWVwIGNsb25lXG4gICAgICogIDIgLSBGbGF0dGVuIGluaGVyaXRlZCBwcm9wZXJ0aWVzXG4gICAgICogIDQgLSBDbG9uZSBzeW1ib2xzXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2tleV0gVGhlIGtleSBvZiBgdmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgcGFyZW50IG9iamVjdCBvZiBgdmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBhbmQgdGhlaXIgY2xvbmUgY291bnRlcnBhcnRzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUNsb25lKHZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIG9iamVjdCwgc3RhY2spIHtcbiAgICAgIHZhciByZXN1bHQsXG4gICAgICAgICAgaXNEZWVwID0gYml0bWFzayAmIENMT05FX0RFRVBfRkxBRyxcbiAgICAgICAgICBpc0ZsYXQgPSBiaXRtYXNrICYgQ0xPTkVfRkxBVF9GTEFHLFxuICAgICAgICAgIGlzRnVsbCA9IGJpdG1hc2sgJiBDTE9ORV9TWU1CT0xTX0ZMQUc7XG5cbiAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgIHJlc3VsdCA9IG9iamVjdCA/IGN1c3RvbWl6ZXIodmFsdWUsIGtleSwgb2JqZWN0LCBzdGFjaykgOiBjdXN0b21pemVyKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSk7XG4gICAgICBpZiAoaXNBcnIpIHtcbiAgICAgICAgcmVzdWx0ID0gaW5pdENsb25lQXJyYXkodmFsdWUpO1xuICAgICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICAgIHJldHVybiBjb3B5QXJyYXkodmFsdWUsIHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICAgICAgaXNGdW5jID0gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZztcblxuICAgICAgICBpZiAoaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGNsb25lQnVmZmVyKHZhbHVlLCBpc0RlZXApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWcgPT0gb2JqZWN0VGFnIHx8IHRhZyA9PSBhcmdzVGFnIHx8IChpc0Z1bmMgJiYgIW9iamVjdCkpIHtcbiAgICAgICAgICByZXN1bHQgPSAoaXNGbGF0IHx8IGlzRnVuYykgPyB7fSA6IGluaXRDbG9uZU9iamVjdCh2YWx1ZSk7XG4gICAgICAgICAgaWYgKCFpc0RlZXApIHtcbiAgICAgICAgICAgIHJldHVybiBpc0ZsYXRcbiAgICAgICAgICAgICAgPyBjb3B5U3ltYm9sc0luKHZhbHVlLCBiYXNlQXNzaWduSW4ocmVzdWx0LCB2YWx1ZSkpXG4gICAgICAgICAgICAgIDogY29weVN5bWJvbHModmFsdWUsIGJhc2VBc3NpZ24ocmVzdWx0LCB2YWx1ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIWNsb25lYWJsZVRhZ3NbdGFnXSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iamVjdCA/IHZhbHVlIDoge307XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdCA9IGluaXRDbG9uZUJ5VGFnKHZhbHVlLCB0YWcsIGlzRGVlcCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzIGFuZCByZXR1cm4gaXRzIGNvcnJlc3BvbmRpbmcgY2xvbmUuXG4gICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQodmFsdWUpO1xuICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIHN0YWNrZWQ7XG4gICAgICB9XG4gICAgICBzdGFjay5zZXQodmFsdWUsIHJlc3VsdCk7XG5cbiAgICAgIGlmIChpc1NldCh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSkge1xuICAgICAgICAgIHJlc3VsdC5hZGQoYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdWJWYWx1ZSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChpc01hcCh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgICAgICAgcmVzdWx0LnNldChrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBrZXlzRnVuYyA9IGlzRnVsbFxuICAgICAgICA/IChpc0ZsYXQgPyBnZXRBbGxLZXlzSW4gOiBnZXRBbGxLZXlzKVxuICAgICAgICA6IChpc0ZsYXQgPyBrZXlzSW4gOiBrZXlzKTtcblxuICAgICAgdmFyIHByb3BzID0gaXNBcnIgPyB1bmRlZmluZWQgOiBrZXlzRnVuYyh2YWx1ZSk7XG4gICAgICBhcnJheUVhY2gocHJvcHMgfHwgdmFsdWUsIGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgICAga2V5ID0gc3ViVmFsdWU7XG4gICAgICAgICAgc3ViVmFsdWUgPSB2YWx1ZVtrZXldO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IHBvcHVsYXRlIGNsb25lIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY29uZm9ybXNgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNvdXJjZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQ29uZm9ybXMoc291cmNlKSB7XG4gICAgICB2YXIgcHJvcHMgPSBrZXlzKHNvdXJjZSk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBiYXNlQ29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSwgcHJvcHMpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jb25mb3Jtc1RvYCB3aGljaCBhY2NlcHRzIGBwcm9wc2AgdG8gY2hlY2suXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGNvbmZvcm1zLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UsIHByb3BzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAhbGVuZ3RoO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGtleSA9IHByb3BzW2xlbmd0aF0sXG4gICAgICAgICAgICBwcmVkaWNhdGUgPSBzb3VyY2Vba2V5XSxcbiAgICAgICAgICAgIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICAgICAgaWYgKCh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpIHx8ICFwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5kZWxheWAgYW5kIGBfLmRlZmVyYCB3aGljaCBhY2NlcHRzIGBhcmdzYFxuICAgICAqIHRvIHByb3ZpZGUgdG8gYGZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gd2FpdCBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheSBpbnZvY2F0aW9uLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBwcm92aWRlIHRvIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfE9iamVjdH0gUmV0dXJucyB0aGUgdGltZXIgaWQgb3IgdGltZW91dCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZURlbGF5KGZ1bmMsIHdhaXQsIGFyZ3MpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBmdW5jLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7IH0sIHdhaXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5kaWZmZXJlbmNlYCB3aXRob3V0IHN1cHBvcnRcbiAgICAgKiBmb3IgZXhjbHVkaW5nIG11bHRpcGxlIGFycmF5cyBvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VEaWZmZXJlbmNlKGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXMsXG4gICAgICAgICAgaXNDb21tb24gPSB0cnVlLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBbXSxcbiAgICAgICAgICB2YWx1ZXNMZW5ndGggPSB2YWx1ZXMubGVuZ3RoO1xuXG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgIHZhbHVlcyA9IGFycmF5TWFwKHZhbHVlcywgYmFzZVVuYXJ5KGl0ZXJhdGVlKSk7XG4gICAgICB9XG4gICAgICBpZiAoY29tcGFyYXRvcikge1xuICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodmFsdWVzLmxlbmd0aCA+PSBMQVJHRV9BUlJBWV9TSVpFKSB7XG4gICAgICAgIGluY2x1ZGVzID0gY2FjaGVIYXM7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcyA9IG5ldyBTZXRDYWNoZSh2YWx1ZXMpO1xuICAgICAgfVxuICAgICAgb3V0ZXI6XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID09IG51bGwgPyB2YWx1ZSA6IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgICAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICAgICAgaWYgKGlzQ29tbW9uICYmIGNvbXB1dGVkID09PSBjb21wdXRlZCkge1xuICAgICAgICAgIHZhciB2YWx1ZXNJbmRleCA9IHZhbHVlc0xlbmd0aDtcbiAgICAgICAgICB3aGlsZSAodmFsdWVzSW5kZXgtLSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlc1t2YWx1ZXNJbmRleF0gPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIWluY2x1ZGVzKHZhbHVlcywgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvckVhY2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICovXG4gICAgdmFyIGJhc2VFYWNoID0gY3JlYXRlQmFzZUVhY2goYmFzZUZvck93bik7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JFYWNoUmlnaHRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICovXG4gICAgdmFyIGJhc2VFYWNoUmlnaHQgPSBjcmVhdGVCYXNlRWFjaChiYXNlRm9yT3duUmlnaHQsIHRydWUpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZXZlcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbGwgZWxlbWVudHMgcGFzcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRXZlcnkoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgICAgICByZXN1bHQgPSAhIXByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5tYXhgIGFuZCBgXy5taW5gIHdoaWNoIGFjY2VwdHMgYVxuICAgICAqIGBjb21wYXJhdG9yYCB0byBkZXRlcm1pbmUgdGhlIGV4dHJlbXVtIHZhbHVlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciB1c2VkIHRvIGNvbXBhcmUgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBleHRyZW11bSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRXh0cmVtdW0oYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGN1cnJlbnQgPSBpdGVyYXRlZSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnQgIT0gbnVsbCAmJiAoY29tcHV0ZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICA/IChjdXJyZW50ID09PSBjdXJyZW50ICYmICFpc1N5bWJvbChjdXJyZW50KSlcbiAgICAgICAgICAgICAgOiBjb21wYXJhdG9yKGN1cnJlbnQsIGNvbXB1dGVkKVxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgIHZhciBjb21wdXRlZCA9IGN1cnJlbnQsXG4gICAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbGxgIHdpdGhvdXQgYW4gaXRlcmF0ZWUgY2FsbCBndWFyZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZpbGwuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZmlsbCBgYXJyYXlgIHdpdGguXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGaWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgc3RhcnQgPSB0b0ludGVnZXIoc3RhcnQpO1xuICAgICAgaWYgKHN0YXJ0IDwgMCkge1xuICAgICAgICBzdGFydCA9IC1zdGFydCA+IGxlbmd0aCA/IDAgOiAobGVuZ3RoICsgc3RhcnQpO1xuICAgICAgfVxuICAgICAgZW5kID0gKGVuZCA9PT0gdW5kZWZpbmVkIHx8IGVuZCA+IGxlbmd0aCkgPyBsZW5ndGggOiB0b0ludGVnZXIoZW5kKTtcbiAgICAgIGlmIChlbmQgPCAwKSB7XG4gICAgICAgIGVuZCArPSBsZW5ndGg7XG4gICAgICB9XG4gICAgICBlbmQgPSBzdGFydCA+IGVuZCA/IDAgOiB0b0xlbmd0aChlbmQpO1xuICAgICAgd2hpbGUgKHN0YXJ0IDwgZW5kKSB7XG4gICAgICAgIGFycmF5W3N0YXJ0KytdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmlsdGVyYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRmlsdGVyKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZsYXR0ZW5gIHdpdGggc3VwcG9ydCBmb3IgcmVzdHJpY3RpbmcgZmxhdHRlbmluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtwcmVkaWNhdGU9aXNGbGF0dGVuYWJsZV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1N0cmljdF0gUmVzdHJpY3QgdG8gdmFsdWVzIHRoYXQgcGFzcyBgcHJlZGljYXRlYCBjaGVja3MuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3Jlc3VsdD1bXV0gVGhlIGluaXRpYWwgcmVzdWx0IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRmxhdHRlbihhcnJheSwgZGVwdGgsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBwcmVkaWNhdGUgfHwgKHByZWRpY2F0ZSA9IGlzRmxhdHRlbmFibGUpO1xuICAgICAgcmVzdWx0IHx8IChyZXN1bHQgPSBbXSk7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgICAgaWYgKGRlcHRoID4gMCAmJiBwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICAgICAgaWYgKGRlcHRoID4gMSkge1xuICAgICAgICAgICAgLy8gUmVjdXJzaXZlbHkgZmxhdHRlbiBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgICAgIGJhc2VGbGF0dGVuKHZhbHVlLCBkZXB0aCAtIDEsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFycmF5UHVzaChyZXN1bHQsIHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzU3RyaWN0KSB7XG4gICAgICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGJhc2VGb3JPd25gIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYG9iamVjdGBcbiAgICAgKiBwcm9wZXJ0aWVzIHJldHVybmVkIGJ5IGBrZXlzRnVuY2AgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAgICAgKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgdmFyIGJhc2VGb3IgPSBjcmVhdGVCYXNlRm9yKCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGJhc2VGb3JgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgcHJvcGVydGllc1xuICAgICAqIGluIHRoZSBvcHBvc2l0ZSBvcmRlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUZvclJpZ2h0ID0gY3JlYXRlQmFzZUZvcih0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvck93bmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRm9yT3duKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgYmFzZUZvcihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JPd25SaWdodGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRm9yT3duUmlnaHQob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yUmlnaHQob2JqZWN0LCBpdGVyYXRlZSwga2V5cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZnVuY3Rpb25zYCB3aGljaCBjcmVhdGVzIGFuIGFycmF5IG9mXG4gICAgICogYG9iamVjdGAgZnVuY3Rpb24gcHJvcGVydHkgbmFtZXMgZmlsdGVyZWQgZnJvbSBgcHJvcHNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgbmFtZXMgdG8gZmlsdGVyLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZ1bmN0aW9ucyhvYmplY3QsIHByb3BzKSB7XG4gICAgICByZXR1cm4gYXJyYXlGaWx0ZXIocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgICByZXR1cm4gaXNGdW5jdGlvbihvYmplY3Rba2V5XSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5nZXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVmYXVsdCB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR2V0KG9iamVjdCwgcGF0aCkge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IDAsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG5cbiAgICAgIHdoaWxlIChvYmplY3QgIT0gbnVsbCAmJiBpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBvYmplY3QgPSBvYmplY3RbdG9LZXkocGF0aFtpbmRleCsrXSldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChpbmRleCAmJiBpbmRleCA9PSBsZW5ndGgpID8gb2JqZWN0IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRBbGxLZXlzYCBhbmQgYGdldEFsbEtleXNJbmAgd2hpY2ggdXNlc1xuICAgICAqIGBrZXlzRnVuY2AgYW5kIGBzeW1ib2xzRnVuY2AgdG8gZ2V0IHRoZSBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICAgICAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHN5bWJvbHNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNGdW5jLCBzeW1ib2xzRnVuYykge1xuICAgICAgdmFyIHJlc3VsdCA9IGtleXNGdW5jKG9iamVjdCk7XG4gICAgICByZXR1cm4gaXNBcnJheShvYmplY3QpID8gcmVzdWx0IDogYXJyYXlQdXNoKHJlc3VsdCwgc3ltYm9sc0Z1bmMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gICAgICB9XG4gICAgICByZXR1cm4gKHN5bVRvU3RyaW5nVGFnICYmIHN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSkpXG4gICAgICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgICAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5ndGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR3QodmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPiBvdGhlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5oYXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSGFzKG9iamVjdCwga2V5KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSGFzSW4ob2JqZWN0LCBrZXkpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBrZXkgaW4gT2JqZWN0KG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW5SYW5nZWAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG51bWJlcmAgaXMgaW4gdGhlIHJhbmdlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUluUmFuZ2UobnVtYmVyLCBzdGFydCwgZW5kKSB7XG4gICAgICByZXR1cm4gbnVtYmVyID49IG5hdGl2ZU1pbihzdGFydCwgZW5kKSAmJiBudW1iZXIgPCBuYXRpdmVNYXgoc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmludGVyc2VjdGlvbmAsIHdpdGhvdXQgc3VwcG9ydFxuICAgICAqIGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB0aGF0IGFjY2VwdHMgYW4gYXJyYXkgb2YgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5cyBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBzaGFyZWQgdmFsdWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJbnRlcnNlY3Rpb24oYXJyYXlzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluY2x1ZGVzID0gY29tcGFyYXRvciA/IGFycmF5SW5jbHVkZXNXaXRoIDogYXJyYXlJbmNsdWRlcyxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheXNbMF0ubGVuZ3RoLFxuICAgICAgICAgIG90aExlbmd0aCA9IGFycmF5cy5sZW5ndGgsXG4gICAgICAgICAgb3RoSW5kZXggPSBvdGhMZW5ndGgsXG4gICAgICAgICAgY2FjaGVzID0gQXJyYXkob3RoTGVuZ3RoKSxcbiAgICAgICAgICBtYXhMZW5ndGggPSBJbmZpbml0eSxcbiAgICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgd2hpbGUgKG90aEluZGV4LS0pIHtcbiAgICAgICAgdmFyIGFycmF5ID0gYXJyYXlzW290aEluZGV4XTtcbiAgICAgICAgaWYgKG90aEluZGV4ICYmIGl0ZXJhdGVlKSB7XG4gICAgICAgICAgYXJyYXkgPSBhcnJheU1hcChhcnJheSwgYmFzZVVuYXJ5KGl0ZXJhdGVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgbWF4TGVuZ3RoID0gbmF0aXZlTWluKGFycmF5Lmxlbmd0aCwgbWF4TGVuZ3RoKTtcbiAgICAgICAgY2FjaGVzW290aEluZGV4XSA9ICFjb21wYXJhdG9yICYmIChpdGVyYXRlZSB8fCAobGVuZ3RoID49IDEyMCAmJiBhcnJheS5sZW5ndGggPj0gMTIwKSlcbiAgICAgICAgICA/IG5ldyBTZXRDYWNoZShvdGhJbmRleCAmJiBhcnJheSlcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGFycmF5ID0gYXJyYXlzWzBdO1xuXG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBzZWVuID0gY2FjaGVzWzBdO1xuXG4gICAgICBvdXRlcjpcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoICYmIHJlc3VsdC5sZW5ndGggPCBtYXhMZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgICAgICBpZiAoIShzZWVuXG4gICAgICAgICAgICAgID8gY2FjaGVIYXMoc2VlbiwgY29tcHV0ZWQpXG4gICAgICAgICAgICAgIDogaW5jbHVkZXMocmVzdWx0LCBjb21wdXRlZCwgY29tcGFyYXRvcilcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICBvdGhJbmRleCA9IG90aExlbmd0aDtcbiAgICAgICAgICB3aGlsZSAoLS1vdGhJbmRleCkge1xuICAgICAgICAgICAgdmFyIGNhY2hlID0gY2FjaGVzW290aEluZGV4XTtcbiAgICAgICAgICAgIGlmICghKGNhY2hlXG4gICAgICAgICAgICAgICAgICA/IGNhY2hlSGFzKGNhY2hlLCBjb21wdXRlZClcbiAgICAgICAgICAgICAgICAgIDogaW5jbHVkZXMoYXJyYXlzW290aEluZGV4XSwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNlZW4pIHtcbiAgICAgICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbnZlcnRgIGFuZCBgXy5pbnZlcnRCeWAgd2hpY2ggaW52ZXJ0c1xuICAgICAqIGBvYmplY3RgIHdpdGggdmFsdWVzIHRyYW5zZm9ybWVkIGJ5IGBpdGVyYXRlZWAgYW5kIHNldCBieSBgc2V0dGVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBgYWNjdW11bGF0b3JgIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgaW52ZXJ0ZWQgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgYWNjdW11bGF0b3JgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJbnZlcnRlcihvYmplY3QsIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICBiYXNlRm9yT3duKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICAgIHNldHRlcihhY2N1bXVsYXRvciwgaXRlcmF0ZWUodmFsdWUpLCBrZXksIG9iamVjdCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbnZva2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICAgICAqIG1ldGhvZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgbWV0aG9kIHRvIGludm9rZS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBpbnZva2VkIG1ldGhvZC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSW52b2tlKG9iamVjdCwgcGF0aCwgYXJncykge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gICAgICBvYmplY3QgPSBwYXJlbnQob2JqZWN0LCBwYXRoKTtcbiAgICAgIHZhciBmdW5jID0gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBvYmplY3RbdG9LZXkobGFzdChwYXRoKSldO1xuICAgICAgcmV0dXJuIGZ1bmMgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGFwcGx5KGZ1bmMsIG9iamVjdCwgYXJncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJyYXlCdWZmZXJgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNBcnJheUJ1ZmZlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJyYXlCdWZmZXJUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNEYXRlYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBkYXRlIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0RhdGUodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGRhdGVUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNFcXVhbGAgd2hpY2ggc3VwcG9ydHMgcGFydGlhbCBjb21wYXJpc29uc1xuICAgICAqIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gICAgICogIDEgLSBVbm9yZGVyZWQgY29tcGFyaXNvblxuICAgICAqICAyIC0gUGFydGlhbCBjb21wYXJpc29uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgdmFsdWVgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gICAgICBpZiAodmFsdWUgPT09IG90aGVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlID09IG51bGwgfHwgb3RoZXIgPT0gbnVsbCB8fCAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgIWlzT2JqZWN0TGlrZShvdGhlcikpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VJc0VxdWFsRGVlcCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGJhc2VJc0VxdWFsLCBzdGFjayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbGAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICAgICAqIGRlZXAgY29tcGFyaXNvbnMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAgICAgKiByZWZlcmVuY2VzIHRvIGJlIGNvbXBhcmVkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0VxdWFsRGVlcChvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICB2YXIgb2JqSXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICAgICAgb3RoSXNBcnIgPSBpc0FycmF5KG90aGVyKSxcbiAgICAgICAgICBvYmpUYWcgPSBvYmpJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG9iamVjdCksXG4gICAgICAgICAgb3RoVGFnID0gb3RoSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvdGhlcik7XG5cbiAgICAgIG9ialRhZyA9IG9ialRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb2JqVGFnO1xuICAgICAgb3RoVGFnID0gb3RoVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvdGhUYWc7XG5cbiAgICAgIHZhciBvYmpJc09iaiA9IG9ialRhZyA9PSBvYmplY3RUYWcsXG4gICAgICAgICAgb3RoSXNPYmogPSBvdGhUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgICAgIGlzU2FtZVRhZyA9IG9ialRhZyA9PSBvdGhUYWc7XG5cbiAgICAgIGlmIChpc1NhbWVUYWcgJiYgaXNCdWZmZXIob2JqZWN0KSkge1xuICAgICAgICBpZiAoIWlzQnVmZmVyKG90aGVyKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBvYmpJc0FyciA9IHRydWU7XG4gICAgICAgIG9iaklzT2JqID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoaXNTYW1lVGFnICYmICFvYmpJc09iaikge1xuICAgICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgICByZXR1cm4gKG9iaklzQXJyIHx8IGlzVHlwZWRBcnJheShvYmplY3QpKVxuICAgICAgICAgID8gZXF1YWxBcnJheXMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaylcbiAgICAgICAgICA6IGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgb2JqVGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICAgIH1cbiAgICAgIGlmICghKGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRykpIHtcbiAgICAgICAgdmFyIG9iaklzV3JhcHBlZCA9IG9iaklzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCAnX193cmFwcGVkX18nKSxcbiAgICAgICAgICAgIG90aElzV3JhcHBlZCA9IG90aElzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsICdfX3dyYXBwZWRfXycpO1xuXG4gICAgICAgIGlmIChvYmpJc1dyYXBwZWQgfHwgb3RoSXNXcmFwcGVkKSB7XG4gICAgICAgICAgdmFyIG9ialVud3JhcHBlZCA9IG9iaklzV3JhcHBlZCA/IG9iamVjdC52YWx1ZSgpIDogb2JqZWN0LFxuICAgICAgICAgICAgICBvdGhVbndyYXBwZWQgPSBvdGhJc1dyYXBwZWQgPyBvdGhlci52YWx1ZSgpIDogb3RoZXI7XG5cbiAgICAgICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgICAgIHJldHVybiBlcXVhbEZ1bmMob2JqVW53cmFwcGVkLCBvdGhVbndyYXBwZWQsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFpc1NhbWVUYWcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgIHJldHVybiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc01hcCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBtYXBUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXRjaGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IG1hdGNoRGF0YSBUaGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3MgdG8gbWF0Y2guXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgbWF0Y2hEYXRhLCBjdXN0b21pemVyKSB7XG4gICAgICB2YXIgaW5kZXggPSBtYXRjaERhdGEubGVuZ3RoLFxuICAgICAgICAgIGxlbmd0aCA9IGluZGV4LFxuICAgICAgICAgIG5vQ3VzdG9taXplciA9ICFjdXN0b21pemVyO1xuXG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICFsZW5ndGg7XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIHZhciBkYXRhID0gbWF0Y2hEYXRhW2luZGV4XTtcbiAgICAgICAgaWYgKChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSlcbiAgICAgICAgICAgICAgPyBkYXRhWzFdICE9PSBvYmplY3RbZGF0YVswXV1cbiAgICAgICAgICAgICAgOiAhKGRhdGFbMF0gaW4gb2JqZWN0KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBkYXRhID0gbWF0Y2hEYXRhW2luZGV4XTtcbiAgICAgICAgdmFyIGtleSA9IGRhdGFbMF0sXG4gICAgICAgICAgICBvYmpWYWx1ZSA9IG9iamVjdFtrZXldLFxuICAgICAgICAgICAgc3JjVmFsdWUgPSBkYXRhWzFdO1xuXG4gICAgICAgIGlmIChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSkge1xuICAgICAgICAgIGlmIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHN0YWNrID0gbmV3IFN0YWNrO1xuICAgICAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCEocmVzdWx0ID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgICAgICAgICA6IHJlc3VsdFxuICAgICAgICAgICAgICApKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hdGl2ZWAgd2l0aG91dCBiYWQgc2hpbSBjaGVja3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzTmF0aXZlKHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gICAgICByZXR1cm4gcGF0dGVybi50ZXN0KHRvU291cmNlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNSZWdFeHBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHJlZ2V4cCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc1JlZ0V4cCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gcmVnZXhwVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzU2V0YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNTZXQodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gc2V0VGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgICAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLml0ZXJhdGVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSBbdmFsdWU9Xy5pZGVudGl0eV0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYW4gaXRlcmF0ZWUuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBpdGVyYXRlZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXRlcmF0ZWUodmFsdWUpIHtcbiAgICAgIC8vIERvbid0IHN0b3JlIHRoZSBgdHlwZW9mYCByZXN1bHQgaW4gYSB2YXJpYWJsZSB0byBhdm9pZCBhIEpJVCBidWcgaW4gU2FmYXJpIDkuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjAzNCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBpZGVudGl0eTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpXG4gICAgICAgICAgPyBiYXNlTWF0Y2hlc1Byb3BlcnR5KHZhbHVlWzBdLCB2YWx1ZVsxXSlcbiAgICAgICAgICA6IGJhc2VNYXRjaGVzKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c2Agd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlS2V5cyhvYmplY3QpIHtcbiAgICAgIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gbmF0aXZlS2V5cyhvYmplY3QpO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBrZXkgIT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c0luYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VLZXlzSW4ob2JqZWN0KSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICAgICAgfVxuICAgICAgdmFyIGlzUHJvdG8gPSBpc1Byb3RvdHlwZShvYmplY3QpLFxuICAgICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgIGlmICghKGtleSA9PSAnY29uc3RydWN0b3InICYmIChpc1Byb3RvIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5sdGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTHQodmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPCBvdGhlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXBgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIHJlc3VsdCA9IGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pID8gQXJyYXkoY29sbGVjdGlvbi5sZW5ndGgpIDogW107XG5cbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmVzdWx0WysraW5kZXhdID0gaXRlcmF0ZWUodmFsdWUsIGtleSwgY29sbGVjdGlvbik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWF0Y2hlc2Agd2hpY2ggZG9lc24ndCBjbG9uZSBgc291cmNlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNYXRjaGVzKHNvdXJjZSkge1xuICAgICAgdmFyIG1hdGNoRGF0YSA9IGdldE1hdGNoRGF0YShzb3VyY2UpO1xuICAgICAgaWYgKG1hdGNoRGF0YS5sZW5ndGggPT0gMSAmJiBtYXRjaERhdGFbMF1bMl0pIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKG1hdGNoRGF0YVswXVswXSwgbWF0Y2hEYXRhWzBdWzFdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCA9PT0gc291cmNlIHx8IGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzUHJvcGVydHlgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNyY1ZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNYXRjaGVzUHJvcGVydHkocGF0aCwgc3JjVmFsdWUpIHtcbiAgICAgIGlmIChpc0tleShwYXRoKSAmJiBpc1N0cmljdENvbXBhcmFibGUoc3JjVmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSh0b0tleShwYXRoKSwgc3JjVmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICB2YXIgb2JqVmFsdWUgPSBnZXQob2JqZWN0LCBwYXRoKTtcbiAgICAgICAgcmV0dXJuIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIG9ialZhbHVlID09PSBzcmNWYWx1ZSlcbiAgICAgICAgICA/IGhhc0luKG9iamVjdCwgcGF0aClcbiAgICAgICAgICA6IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWVyZ2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHNyY0luZGV4IFRoZSBpbmRleCBvZiBgc291cmNlYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBtZXJnZWQgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gICAgICogIGNvdW50ZXJwYXJ0cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjaykge1xuICAgICAgaWYgKG9iamVjdCA9PT0gc291cmNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGJhc2VGb3Ioc291cmNlLCBmdW5jdGlvbihzcmNWYWx1ZSwga2V5KSB7XG4gICAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICAgIGlmIChpc09iamVjdChzcmNWYWx1ZSkpIHtcbiAgICAgICAgICBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBiYXNlTWVyZ2UsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgICAgICA/IGN1c3RvbWl6ZXIoc2FmZUdldChvYmplY3QsIGtleSksIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sIGtleXNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlTWVyZ2VgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAgICAgKiBkZWVwIG1lcmdlcyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICAgICAqIHJlZmVyZW5jZXMgdG8gYmUgbWVyZ2VkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIG1lcmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gbWVyZ2VGdW5jIFRoZSBmdW5jdGlvbiB0byBtZXJnZSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gICAgICogIGNvdW50ZXJwYXJ0cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBtZXJnZUZ1bmMsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gICAgICB2YXIgb2JqVmFsdWUgPSBzYWZlR2V0KG9iamVjdCwga2V5KSxcbiAgICAgICAgICBzcmNWYWx1ZSA9IHNhZmVHZXQoc291cmNlLCBrZXkpLFxuICAgICAgICAgIHN0YWNrZWQgPSBzdGFjay5nZXQoc3JjVmFsdWUpO1xuXG4gICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBzdGFja2VkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICB2YXIgaXNDb21tb24gPSBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoaXNDb21tb24pIHtcbiAgICAgICAgdmFyIGlzQXJyID0gaXNBcnJheShzcmNWYWx1ZSksXG4gICAgICAgICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgaXNCdWZmZXIoc3JjVmFsdWUpLFxuICAgICAgICAgICAgaXNUeXBlZCA9ICFpc0FyciAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheShzcmNWYWx1ZSk7XG5cbiAgICAgICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgICAgaWYgKGlzQXJyIHx8IGlzQnVmZiB8fCBpc1R5cGVkKSB7XG4gICAgICAgICAgaWYgKGlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5TGlrZU9iamVjdChvYmpWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gY29weUFycmF5KG9ialZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoaXNCdWZmKSB7XG4gICAgICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBjbG9uZUJ1ZmZlcihzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKGlzVHlwZWQpIHtcbiAgICAgICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGNsb25lVHlwZWRBcnJheShzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdChzcmNWYWx1ZSkgfHwgaXNBcmd1bWVudHMoc3JjVmFsdWUpKSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgICAgICBpZiAoaXNBcmd1bWVudHMob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRvUGxhaW5PYmplY3Qob2JqVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmICghaXNPYmplY3Qob2JqVmFsdWUpIHx8IGlzRnVuY3Rpb24ob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGluaXRDbG9uZU9iamVjdChzcmNWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpc0NvbW1vbikge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgICAgIG1lcmdlRnVuYyhuZXdWYWx1ZSwgc3JjVmFsdWUsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubnRoYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmV0dXJuLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBudGggZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VOdGgoYXJyYXksIG4pIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBuICs9IG4gPCAwID8gbGVuZ3RoIDogMDtcbiAgICAgIHJldHVybiBpc0luZGV4KG4sIGxlbmd0aCkgPyBhcnJheVtuXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5vcmRlckJ5YCB3aXRob3V0IHBhcmFtIGd1YXJkcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb25bXXxPYmplY3RbXXxzdHJpbmdbXX0gaXRlcmF0ZWVzIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBvcmRlcnMgVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycykge1xuICAgICAgaWYgKGl0ZXJhdGVlcy5sZW5ndGgpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgICAgIGlmIChpc0FycmF5KGl0ZXJhdGVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBiYXNlR2V0KHZhbHVlLCBpdGVyYXRlZS5sZW5ndGggPT09IDEgPyBpdGVyYXRlZVswXSA6IGl0ZXJhdGVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGl0ZXJhdGVlO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IFtpZGVudGl0eV07XG4gICAgICB9XG5cbiAgICAgIHZhciBpbmRleCA9IC0xO1xuICAgICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZU1hcChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHZhciBjcml0ZXJpYSA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgICByZXR1cm4gaXRlcmF0ZWUodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsgJ2NyaXRlcmlhJzogY3JpdGVyaWEsICdpbmRleCc6ICsraW5kZXgsICd2YWx1ZSc6IHZhbHVlIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGJhc2VTb3J0QnkocmVzdWx0LCBmdW5jdGlvbihvYmplY3QsIG90aGVyKSB7XG4gICAgICAgIHJldHVybiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnBpY2tgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICAgICAqIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVBpY2sob2JqZWN0LCBwYXRocykge1xuICAgICAgcmV0dXJuIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgZnVuY3Rpb24odmFsdWUsIHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIGhhc0luKG9iamVjdCwgcGF0aCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiAgYF8ucGlja0J5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0ge307XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBwYXRoID0gcGF0aHNbaW5kZXhdLFxuICAgICAgICAgICAgdmFsdWUgPSBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG5cbiAgICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgcGF0aCkpIHtcbiAgICAgICAgICBiYXNlU2V0KHJlc3VsdCwgY2FzdFBhdGgocGF0aCwgb2JqZWN0KSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVByb3BlcnR5YCB3aGljaCBzdXBwb3J0cyBkZWVwIHBhdGhzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQcm9wZXJ0eURlZXAocGF0aCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wdWxsQWxsQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICAgKiBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXhPZiA9IGNvbXBhcmF0b3IgPyBiYXNlSW5kZXhPZldpdGggOiBiYXNlSW5kZXhPZixcbiAgICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICAgICAgc2VlbiA9IGFycmF5O1xuXG4gICAgICBpZiAoYXJyYXkgPT09IHZhbHVlcykge1xuICAgICAgICB2YWx1ZXMgPSBjb3B5QXJyYXkodmFsdWVzKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICBzZWVuID0gYXJyYXlNYXAoYXJyYXksIGJhc2VVbmFyeShpdGVyYXRlZSkpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGZyb21JbmRleCA9IDAsXG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlc1tpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgd2hpbGUgKChmcm9tSW5kZXggPSBpbmRleE9mKHNlZW4sIGNvbXB1dGVkLCBmcm9tSW5kZXgsIGNvbXBhcmF0b3IpKSA+IC0xKSB7XG4gICAgICAgICAgaWYgKHNlZW4gIT09IGFycmF5KSB7XG4gICAgICAgICAgICBzcGxpY2UuY2FsbChzZWVuLCBmcm9tSW5kZXgsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzcGxpY2UuY2FsbChhcnJheSwgZnJvbUluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnB1bGxBdGAgd2l0aG91dCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsXG4gICAgICogaW5kZXhlcyBvciBjYXB0dXJpbmcgdGhlIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJbXX0gaW5kZXhlcyBUaGUgaW5kZXhlcyBvZiBlbGVtZW50cyB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVB1bGxBdChhcnJheSwgaW5kZXhlcykge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID8gaW5kZXhlcy5sZW5ndGggOiAwLFxuICAgICAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIgaW5kZXggPSBpbmRleGVzW2xlbmd0aF07XG4gICAgICAgIGlmIChsZW5ndGggPT0gbGFzdEluZGV4IHx8IGluZGV4ICE9PSBwcmV2aW91cykge1xuICAgICAgICAgIHZhciBwcmV2aW91cyA9IGluZGV4O1xuICAgICAgICAgIGlmIChpc0luZGV4KGluZGV4KSkge1xuICAgICAgICAgICAgc3BsaWNlLmNhbGwoYXJyYXksIGluZGV4LCAxKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzZVVuc2V0KGFycmF5LCBpbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmFuZG9tYCB3aXRob3V0IHN1cHBvcnQgZm9yIHJldHVybmluZ1xuICAgICAqIGZsb2F0aW5nLXBvaW50IG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsb3dlciBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByYW5kb20gbnVtYmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSYW5kb20obG93ZXIsIHVwcGVyKSB7XG4gICAgICByZXR1cm4gbG93ZXIgKyBuYXRpdmVGbG9vcihuYXRpdmVSYW5kb20oKSAqICh1cHBlciAtIGxvd2VyICsgMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJhbmdlYCBhbmQgYF8ucmFuZ2VSaWdodGAgd2hpY2ggZG9lc24ndFxuICAgICAqIGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0ZXAgVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSYW5nZShzdGFydCwgZW5kLCBzdGVwLCBmcm9tUmlnaHQpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChuYXRpdmVDZWlsKChlbmQgLSBzdGFydCkgLyAoc3RlcCB8fCAxKSksIDApLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICByZXN1bHRbZnJvbVJpZ2h0ID8gbGVuZ3RoIDogKytpbmRleF0gPSBzdGFydDtcbiAgICAgICAgc3RhcnQgKz0gc3RlcDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVwZWF0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byByZXBlYXQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIHN0cmluZy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByZXBlYXRlZCBzdHJpbmcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVJlcGVhdChzdHJpbmcsIG4pIHtcbiAgICAgIHZhciByZXN1bHQgPSAnJztcbiAgICAgIGlmICghc3RyaW5nIHx8IG4gPCAxIHx8IG4gPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICAvLyBMZXZlcmFnZSB0aGUgZXhwb25lbnRpYXRpb24gYnkgc3F1YXJpbmcgYWxnb3JpdGhtIGZvciBhIGZhc3RlciByZXBlYXQuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXhwb25lbnRpYXRpb25fYnlfc3F1YXJpbmcgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKG4gJSAyKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgICBuID0gbmF0aXZlRmxvb3IobiAvIDIpO1xuICAgICAgICBpZiAobikge1xuICAgICAgICAgIHN0cmluZyArPSBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIH0gd2hpbGUgKG4pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlc3RgIHdoaWNoIGRvZXNuJ3QgdmFsaWRhdGUgb3IgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgICAgIHJldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLCBzdGFydCwgaWRlbnRpdHkpLCBmdW5jICsgJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNhbXBsZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNhbXBsZShjb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gYXJyYXlTYW1wbGUodmFsdWVzKGNvbGxlY3Rpb24pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zYW1wbGVTaXplYCB3aXRob3V0IHBhcmFtIGd1YXJkcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTYW1wbGVTaXplKGNvbGxlY3Rpb24sIG4pIHtcbiAgICAgIHZhciBhcnJheSA9IHZhbHVlcyhjb2xsZWN0aW9uKTtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZihhcnJheSwgYmFzZUNsYW1wKG4sIDAsIGFycmF5Lmxlbmd0aCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNldGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgcGF0aCBjcmVhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICB9XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICAgICAgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMSxcbiAgICAgICAgICBuZXN0ZWQgPSBvYmplY3Q7XG5cbiAgICAgIHdoaWxlIChuZXN0ZWQgIT0gbnVsbCAmJiArK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSksXG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmIChrZXkgPT09ICdfX3Byb3RvX18nIHx8IGtleSA9PT0gJ2NvbnN0cnVjdG9yJyB8fCBrZXkgPT09ICdwcm90b3R5cGUnKSB7XG4gICAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmRleCAhPSBsYXN0SW5kZXgpIHtcbiAgICAgICAgICB2YXIgb2JqVmFsdWUgPSBuZXN0ZWRba2V5XTtcbiAgICAgICAgICBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKG9ialZhbHVlLCBrZXksIG5lc3RlZCkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gaXNPYmplY3Qob2JqVmFsdWUpXG4gICAgICAgICAgICAgID8gb2JqVmFsdWVcbiAgICAgICAgICAgICAgOiAoaXNJbmRleChwYXRoW2luZGV4ICsgMV0pID8gW10gOiB7fSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGFzc2lnblZhbHVlKG5lc3RlZCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIG5lc3RlZCA9IG5lc3RlZFtrZXldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0RGF0YWAgd2l0aG91dCBzdXBwb3J0IGZvciBob3QgbG9vcCBzaG9ydGluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXNzb2NpYXRlIG1ldGFkYXRhIHdpdGguXG4gICAgICogQHBhcmFtIHsqfSBkYXRhIFRoZSBtZXRhZGF0YS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBiYXNlU2V0RGF0YSA9ICFtZXRhTWFwID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBkYXRhKSB7XG4gICAgICBtZXRhTWFwLnNldChmdW5jLCBkYXRhKTtcbiAgICAgIHJldHVybiBmdW5jO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gICAgICovXG4gICAgdmFyIGJhc2VTZXRUb1N0cmluZyA9ICFkZWZpbmVQcm9wZXJ0eSA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgc3RyaW5nKSB7XG4gICAgICByZXR1cm4gZGVmaW5lUHJvcGVydHkoZnVuYywgJ3RvU3RyaW5nJywge1xuICAgICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICAgJ2VudW1lcmFibGUnOiBmYWxzZSxcbiAgICAgICAgJ3ZhbHVlJzogY29uc3RhbnQoc3RyaW5nKSxcbiAgICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNodWZmbGVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTaHVmZmxlKGNvbGxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZih2YWx1ZXMoY29sbGVjdGlvbikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNsaWNlYCB3aXRob3V0IGFuIGl0ZXJhdGVlIGNhbGwgZ3VhcmQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzbGljZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgICAgIHN0YXJ0ID0gLXN0YXJ0ID4gbGVuZ3RoID8gMCA6IChsZW5ndGggKyBzdGFydCk7XG4gICAgICB9XG4gICAgICBlbmQgPSBlbmQgPiBsZW5ndGggPyBsZW5ndGggOiBlbmQ7XG4gICAgICBpZiAoZW5kIDwgMCkge1xuICAgICAgICBlbmQgKz0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgbGVuZ3RoID0gc3RhcnQgPiBlbmQgPyAwIDogKChlbmQgLSBzdGFydCkgPj4+IDApO1xuICAgICAgc3RhcnQgPj4+PSAwO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtpbmRleF0gPSBhcnJheVtpbmRleCArIHN0YXJ0XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29tZWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvbWUoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0O1xuXG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgICAgIHJldHVybiAhcmVzdWx0O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gISFyZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkSW5kZXhgIGFuZCBgXy5zb3J0ZWRMYXN0SW5kZXhgIHdoaWNoXG4gICAgICogcGVyZm9ybXMgYSBiaW5hcnkgc2VhcmNoIG9mIGBhcnJheWAgdG8gZGV0ZXJtaW5lIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgXG4gICAgICogc2hvdWxkIGJlIGluc2VydGVkIGludG8gYGFycmF5YCBpbiBvcmRlciB0byBtYWludGFpbiBpdHMgc29ydCBvcmRlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JldEhpZ2hlc3RdIFNwZWNpZnkgcmV0dXJuaW5nIHRoZSBoaWdoZXN0IHF1YWxpZmllZCBpbmRleC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSwgcmV0SGlnaGVzdCkge1xuICAgICAgdmFyIGxvdyA9IDAsXG4gICAgICAgICAgaGlnaCA9IGFycmF5ID09IG51bGwgPyBsb3cgOiBhcnJheS5sZW5ndGg7XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgdmFsdWUgPT09IHZhbHVlICYmIGhpZ2ggPD0gSEFMRl9NQVhfQVJSQVlfTEVOR1RIKSB7XG4gICAgICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7XG4gICAgICAgICAgdmFyIG1pZCA9IChsb3cgKyBoaWdoKSA+Pj4gMSxcbiAgICAgICAgICAgICAgY29tcHV0ZWQgPSBhcnJheVttaWRdO1xuXG4gICAgICAgICAgaWYgKGNvbXB1dGVkICE9PSBudWxsICYmICFpc1N5bWJvbChjb21wdXRlZCkgJiZcbiAgICAgICAgICAgICAgKHJldEhpZ2hlc3QgPyAoY29tcHV0ZWQgPD0gdmFsdWUpIDogKGNvbXB1dGVkIDwgdmFsdWUpKSkge1xuICAgICAgICAgICAgbG93ID0gbWlkICsgMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaGlnaCA9IG1pZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhpZ2g7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBpZGVudGl0eSwgcmV0SGlnaGVzdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkSW5kZXhCeWAgYW5kIGBfLnNvcnRlZExhc3RJbmRleEJ5YFxuICAgICAqIHdoaWNoIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgYHZhbHVlYCBhbmQgZWFjaCBlbGVtZW50IG9mIGBhcnJheWAgdG8gY29tcHV0ZVxuICAgICAqIHRoZWlyIHNvcnQgcmFua2luZy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ7ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXRIaWdoZXN0XSBTcGVjaWZ5IHJldHVybmluZyB0aGUgaGlnaGVzdCBxdWFsaWZpZWQgaW5kZXguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaXRlcmF0ZWUsIHJldEhpZ2hlc3QpIHtcbiAgICAgIHZhciBsb3cgPSAwLFxuICAgICAgICAgIGhpZ2ggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmIChoaWdoID09PSAwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuXG4gICAgICB2YWx1ZSA9IGl0ZXJhdGVlKHZhbHVlKTtcbiAgICAgIHZhciB2YWxJc05hTiA9IHZhbHVlICE9PSB2YWx1ZSxcbiAgICAgICAgICB2YWxJc051bGwgPSB2YWx1ZSA9PT0gbnVsbCxcbiAgICAgICAgICB2YWxJc1N5bWJvbCA9IGlzU3ltYm9sKHZhbHVlKSxcbiAgICAgICAgICB2YWxJc1VuZGVmaW5lZCA9IHZhbHVlID09PSB1bmRlZmluZWQ7XG5cbiAgICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7XG4gICAgICAgIHZhciBtaWQgPSBuYXRpdmVGbG9vcigobG93ICsgaGlnaCkgLyAyKSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUoYXJyYXlbbWlkXSksXG4gICAgICAgICAgICBvdGhJc0RlZmluZWQgPSBjb21wdXRlZCAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgICAgb3RoSXNOdWxsID0gY29tcHV0ZWQgPT09IG51bGwsXG4gICAgICAgICAgICBvdGhJc1JlZmxleGl2ZSA9IGNvbXB1dGVkID09PSBjb21wdXRlZCxcbiAgICAgICAgICAgIG90aElzU3ltYm9sID0gaXNTeW1ib2woY29tcHV0ZWQpO1xuXG4gICAgICAgIGlmICh2YWxJc05hTikge1xuICAgICAgICAgIHZhciBzZXRMb3cgPSByZXRIaWdoZXN0IHx8IG90aElzUmVmbGV4aXZlO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbElzVW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2V0TG93ID0gb3RoSXNSZWZsZXhpdmUgJiYgKHJldEhpZ2hlc3QgfHwgb3RoSXNEZWZpbmVkKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWxJc051bGwpIHtcbiAgICAgICAgICBzZXRMb3cgPSBvdGhJc1JlZmxleGl2ZSAmJiBvdGhJc0RlZmluZWQgJiYgKHJldEhpZ2hlc3QgfHwgIW90aElzTnVsbCk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsSXNTeW1ib2wpIHtcbiAgICAgICAgICBzZXRMb3cgPSBvdGhJc1JlZmxleGl2ZSAmJiBvdGhJc0RlZmluZWQgJiYgIW90aElzTnVsbCAmJiAocmV0SGlnaGVzdCB8fCAhb3RoSXNTeW1ib2wpO1xuICAgICAgICB9IGVsc2UgaWYgKG90aElzTnVsbCB8fCBvdGhJc1N5bWJvbCkge1xuICAgICAgICAgIHNldExvdyA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldExvdyA9IHJldEhpZ2hlc3QgPyAoY29tcHV0ZWQgPD0gdmFsdWUpIDogKGNvbXB1dGVkIDwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXRMb3cpIHtcbiAgICAgICAgICBsb3cgPSBtaWQgKyAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGhpZ2ggPSBtaWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuYXRpdmVNaW4oaGlnaCwgTUFYX0FSUkFZX0lOREVYKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb3J0ZWRVbmlxYCBhbmQgYF8uc29ydGVkVW5pcUJ5YCB3aXRob3V0XG4gICAgICogc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU29ydGVkVW5pcShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgICAgICBpZiAoIWluZGV4IHx8ICFlcShjb21wdXRlZCwgc2VlbikpIHtcbiAgICAgICAgICB2YXIgc2VlbiA9IGNvbXB1dGVkO1xuICAgICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlID09PSAwID8gMCA6IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvTnVtYmVyYCB3aGljaCBkb2Vzbid0IGVuc3VyZSBjb3JyZWN0XG4gICAgICogY29udmVyc2lvbnMgb2YgYmluYXJ5LCBoZXhhZGVjaW1hbCwgb3Igb2N0YWwgc3RyaW5nIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVRvTnVtYmVyKHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5BTjtcbiAgICAgIH1cbiAgICAgIHJldHVybiArdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udG9TdHJpbmdgIHdoaWNoIGRvZXNuJ3QgY29udmVydCBudWxsaXNoXG4gICAgICogdmFsdWVzIHRvIGVtcHR5IHN0cmluZ3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VUb1N0cmluZyh2YWx1ZSkge1xuICAgICAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbnZlcnQgdmFsdWVzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICAgICAgfVxuICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgICAgIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmlxQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVW5pcShhcnJheSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlcyxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgaXNDb21tb24gPSB0cnVlLFxuICAgICAgICAgIHJlc3VsdCA9IFtdLFxuICAgICAgICAgIHNlZW4gPSByZXN1bHQ7XG5cbiAgICAgIGlmIChjb21wYXJhdG9yKSB7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChsZW5ndGggPj0gTEFSR0VfQVJSQVlfU0laRSkge1xuICAgICAgICB2YXIgc2V0ID0gaXRlcmF0ZWUgPyBudWxsIDogY3JlYXRlU2V0KGFycmF5KTtcbiAgICAgICAgaWYgKHNldCkge1xuICAgICAgICAgIHJldHVybiBzZXRUb0FycmF5KHNldCk7XG4gICAgICAgIH1cbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgaW5jbHVkZXMgPSBjYWNoZUhhcztcbiAgICAgICAgc2VlbiA9IG5ldyBTZXRDYWNoZTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBzZWVuID0gaXRlcmF0ZWUgPyBbXSA6IHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgICAgICBpZiAoaXNDb21tb24gJiYgY29tcHV0ZWQgPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgdmFyIHNlZW5JbmRleCA9IHNlZW4ubGVuZ3RoO1xuICAgICAgICAgIHdoaWxlIChzZWVuSW5kZXgtLSkge1xuICAgICAgICAgICAgaWYgKHNlZW5bc2VlbkluZGV4XSA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFpbmNsdWRlcyhzZWVuLCBjb21wdXRlZCwgY29tcGFyYXRvcikpIHtcbiAgICAgICAgICBpZiAoc2VlbiAhPT0gcmVzdWx0KSB7XG4gICAgICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5zZXRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwcm9wZXJ0eSBwYXRoIHRvIHVuc2V0LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgaXMgZGVsZXRlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VVbnNldChvYmplY3QsIHBhdGgpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICAgICAgb2JqZWN0ID0gcGFyZW50KG9iamVjdCwgcGF0aCk7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgfHwgZGVsZXRlIG9iamVjdFt0b0tleShsYXN0KHBhdGgpKV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udXBkYXRlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gdXBkYXRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHVwZGF0ZXIgVGhlIGZ1bmN0aW9uIHRvIHByb2R1Y2UgdGhlIHVwZGF0ZWQgdmFsdWUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgcGF0aCBjcmVhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VVcGRhdGUob2JqZWN0LCBwYXRoLCB1cGRhdGVyLCBjdXN0b21pemVyKSB7XG4gICAgICByZXR1cm4gYmFzZVNldChvYmplY3QsIHBhdGgsIHVwZGF0ZXIoYmFzZUdldChvYmplY3QsIHBhdGgpKSwgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmRyb3BXaGlsZWAgYW5kIGBfLnRha2VXaGlsZWBcbiAgICAgKiB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0Ryb3BdIFNwZWNpZnkgZHJvcHBpbmcgZWxlbWVudHMgaW5zdGVhZCBvZiB0YWtpbmcgdGhlbS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVdoaWxlKGFycmF5LCBwcmVkaWNhdGUsIGlzRHJvcCwgZnJvbVJpZ2h0KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGluZGV4ID0gZnJvbVJpZ2h0ID8gbGVuZ3RoIDogLTE7XG5cbiAgICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpICYmXG4gICAgICAgIHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHt9XG5cbiAgICAgIHJldHVybiBpc0Ryb3BcbiAgICAgICAgPyBiYXNlU2xpY2UoYXJyYXksIChmcm9tUmlnaHQgPyAwIDogaW5kZXgpLCAoZnJvbVJpZ2h0ID8gaW5kZXggKyAxIDogbGVuZ3RoKSlcbiAgICAgICAgOiBiYXNlU2xpY2UoYXJyYXksIChmcm9tUmlnaHQgPyBpbmRleCArIDEgOiAwKSwgKGZyb21SaWdodCA/IGxlbmd0aCA6IGluZGV4KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHdyYXBwZXJWYWx1ZWAgd2hpY2ggcmV0dXJucyB0aGUgcmVzdWx0IG9mXG4gICAgICogcGVyZm9ybWluZyBhIHNlcXVlbmNlIG9mIGFjdGlvbnMgb24gdGhlIHVud3JhcHBlZCBgdmFsdWVgLCB3aGVyZSBlYWNoXG4gICAgICogc3VjY2Vzc2l2ZSBhY3Rpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhY3Rpb25zIEFjdGlvbnMgdG8gcGVyZm9ybSB0byByZXNvbHZlIHRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VXcmFwcGVyVmFsdWUodmFsdWUsIGFjdGlvbnMpIHtcbiAgICAgIHZhciByZXN1bHQgPSB2YWx1ZTtcbiAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQudmFsdWUoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheVJlZHVjZShhY3Rpb25zLCBmdW5jdGlvbihyZXN1bHQsIGFjdGlvbikge1xuICAgICAgICByZXR1cm4gYWN0aW9uLmZ1bmMuYXBwbHkoYWN0aW9uLnRoaXNBcmcsIGFycmF5UHVzaChbcmVzdWx0XSwgYWN0aW9uLmFyZ3MpKTtcbiAgICAgIH0sIHJlc3VsdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLnhvcmAsIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLCB0aGF0IGFjY2VwdHMgYW4gYXJyYXkgb2YgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5cyBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiB2YWx1ZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVhvcihhcnJheXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXlzLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlVW5pcShhcnJheXNbMF0pIDogW107XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgYXJyYXkgPSBhcnJheXNbaW5kZXhdLFxuICAgICAgICAgICAgb3RoSW5kZXggPSAtMTtcblxuICAgICAgICB3aGlsZSAoKytvdGhJbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIGlmIChvdGhJbmRleCAhPSBpbmRleCkge1xuICAgICAgICAgICAgcmVzdWx0W2luZGV4XSA9IGJhc2VEaWZmZXJlbmNlKHJlc3VsdFtpbmRleF0gfHwgYXJyYXksIGFycmF5c1tvdGhJbmRleF0sIGl0ZXJhdGVlLCBjb21wYXJhdG9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihyZXN1bHQsIDEpLCBpdGVyYXRlZSwgY29tcGFyYXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnppcE9iamVjdGAgd2hpY2ggYXNzaWducyB2YWx1ZXMgdXNpbmcgYGFzc2lnbkZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduRnVuYyBUaGUgZnVuY3Rpb24gdG8gYXNzaWduIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VaaXBPYmplY3QocHJvcHMsIHZhbHVlcywgYXNzaWduRnVuYykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoLFxuICAgICAgICAgIHZhbHNMZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBpbmRleCA8IHZhbHNMZW5ndGggPyB2YWx1ZXNbaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgICAgICBhc3NpZ25GdW5jKHJlc3VsdCwgcHJvcHNbaW5kZXhdLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhc3RzIGB2YWx1ZWAgdG8gYW4gZW1wdHkgYXJyYXkgaWYgaXQncyBub3QgYW4gYXJyYXkgbGlrZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyB0aGUgY2FzdCBhcnJheS1saWtlIG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0QXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpID8gdmFsdWUgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgdmFsdWVgIHRvIGBpZGVudGl0eWAgaWYgaXQncyBub3QgYSBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgY2FzdCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0RnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlIDogaWRlbnRpdHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYHZhbHVlYCB0byBhIHBhdGggYXJyYXkgaWYgaXQncyBub3Qgb25lLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdFBhdGgodmFsdWUsIG9iamVjdCkge1xuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc0tleSh2YWx1ZSwgb2JqZWN0KSA/IFt2YWx1ZV0gOiBzdHJpbmdUb1BhdGgodG9TdHJpbmcodmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIGBiYXNlUmVzdGAgYWxpYXMgd2hpY2ggY2FuIGJlIHJlcGxhY2VkIHdpdGggYGlkZW50aXR5YCBieSBtb2R1bGVcbiAgICAgKiByZXBsYWNlbWVudCBwbHVnaW5zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAdHlwZSB7RnVuY3Rpb259XG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICB2YXIgY2FzdFJlc3QgPSBiYXNlUmVzdDtcblxuICAgIC8qKlxuICAgICAqIENhc3RzIGBhcnJheWAgdG8gYSBzbGljZSBpZiBpdCdzIG5lZWRlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHNsaWNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RTbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogZW5kO1xuICAgICAgcmV0dXJuICghc3RhcnQgJiYgZW5kID49IGxlbmd0aCkgPyBhcnJheSA6IGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzaW1wbGUgd3JhcHBlciBhcm91bmQgdGhlIGdsb2JhbCBbYGNsZWFyVGltZW91dGBdKGh0dHBzOi8vbWRuLmlvL2NsZWFyVGltZW91dCkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfE9iamVjdH0gaWQgVGhlIHRpbWVyIGlkIG9yIHRpbWVvdXQgb2JqZWN0IG9mIHRoZSB0aW1lciB0byBjbGVhci5cbiAgICAgKi9cbiAgICB2YXIgY2xlYXJUaW1lb3V0ID0gY3R4Q2xlYXJUaW1lb3V0IHx8IGZ1bmN0aW9uKGlkKSB7XG4gICAgICByZXR1cm4gcm9vdC5jbGVhclRpbWVvdXQoaWQpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgIGBidWZmZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIFRoZSBidWZmZXIgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYnVmZmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lQnVmZmVyKGJ1ZmZlciwgaXNEZWVwKSB7XG4gICAgICBpZiAoaXNEZWVwKSB7XG4gICAgICAgIHJldHVybiBidWZmZXIuc2xpY2UoKTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBidWZmZXIubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IGFsbG9jVW5zYWZlID8gYWxsb2NVbnNhZmUobGVuZ3RoKSA6IG5ldyBidWZmZXIuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICAgICAgYnVmZmVyLmNvcHkocmVzdWx0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGBhcnJheUJ1ZmZlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGFycmF5QnVmZmVyIFRoZSBhcnJheSBidWZmZXIgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge0FycmF5QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYXJyYXkgYnVmZmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpIHtcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgYXJyYXlCdWZmZXIuY29uc3RydWN0b3IoYXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICBuZXcgVWludDhBcnJheShyZXN1bHQpLnNldChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGRhdGFWaWV3YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGRhdGFWaWV3IFRoZSBkYXRhIHZpZXcgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgZGF0YSB2aWV3LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lRGF0YVZpZXcoZGF0YVZpZXcsIGlzRGVlcCkge1xuICAgICAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIoZGF0YVZpZXcuYnVmZmVyKSA6IGRhdGFWaWV3LmJ1ZmZlcjtcbiAgICAgIHJldHVybiBuZXcgZGF0YVZpZXcuY29uc3RydWN0b3IoYnVmZmVyLCBkYXRhVmlldy5ieXRlT2Zmc2V0LCBkYXRhVmlldy5ieXRlTGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHJlZ2V4cGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSByZWdleHAgVGhlIHJlZ2V4cCB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgcmVnZXhwLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lUmVnRXhwKHJlZ2V4cCkge1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyByZWdleHAuY29uc3RydWN0b3IocmVnZXhwLnNvdXJjZSwgcmVGbGFncy5leGVjKHJlZ2V4cCkpO1xuICAgICAgcmVzdWx0Lmxhc3RJbmRleCA9IHJlZ2V4cC5sYXN0SW5kZXg7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgYHN5bWJvbGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3ltYm9sIFRoZSBzeW1ib2wgb2JqZWN0IHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBzeW1ib2wgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lU3ltYm9sKHN5bWJvbCkge1xuICAgICAgcmV0dXJuIHN5bWJvbFZhbHVlT2YgPyBPYmplY3Qoc3ltYm9sVmFsdWVPZi5jYWxsKHN5bWJvbCkpIDoge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGB0eXBlZEFycmF5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHR5cGVkQXJyYXkgVGhlIHR5cGVkIGFycmF5IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHR5cGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lVHlwZWRBcnJheSh0eXBlZEFycmF5LCBpc0RlZXApIHtcbiAgICAgIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKHR5cGVkQXJyYXkuYnVmZmVyKSA6IHR5cGVkQXJyYXkuYnVmZmVyO1xuICAgICAgcmV0dXJuIG5ldyB0eXBlZEFycmF5LmNvbnN0cnVjdG9yKGJ1ZmZlciwgdHlwZWRBcnJheS5ieXRlT2Zmc2V0LCB0eXBlZEFycmF5Lmxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcGFyZXMgdmFsdWVzIHRvIHNvcnQgdGhlbSBpbiBhc2NlbmRpbmcgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzb3J0IG9yZGVyIGluZGljYXRvciBmb3IgYHZhbHVlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wYXJlQXNjZW5kaW5nKHZhbHVlLCBvdGhlcikge1xuICAgICAgaWYgKHZhbHVlICE9PSBvdGhlcikge1xuICAgICAgICB2YXIgdmFsSXNEZWZpbmVkID0gdmFsdWUgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHZhbElzTnVsbCA9IHZhbHVlID09PSBudWxsLFxuICAgICAgICAgICAgdmFsSXNSZWZsZXhpdmUgPSB2YWx1ZSA9PT0gdmFsdWUsXG4gICAgICAgICAgICB2YWxJc1N5bWJvbCA9IGlzU3ltYm9sKHZhbHVlKTtcblxuICAgICAgICB2YXIgb3RoSXNEZWZpbmVkID0gb3RoZXIgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG90aElzTnVsbCA9IG90aGVyID09PSBudWxsLFxuICAgICAgICAgICAgb3RoSXNSZWZsZXhpdmUgPSBvdGhlciA9PT0gb3RoZXIsXG4gICAgICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKG90aGVyKTtcblxuICAgICAgICBpZiAoKCFvdGhJc051bGwgJiYgIW90aElzU3ltYm9sICYmICF2YWxJc1N5bWJvbCAmJiB2YWx1ZSA+IG90aGVyKSB8fFxuICAgICAgICAgICAgKHZhbElzU3ltYm9sICYmIG90aElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSAmJiAhb3RoSXNOdWxsICYmICFvdGhJc1N5bWJvbCkgfHxcbiAgICAgICAgICAgICh2YWxJc051bGwgJiYgb3RoSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgKCF2YWxJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICAgICAhdmFsSXNSZWZsZXhpdmUpIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKCF2YWxJc051bGwgJiYgIXZhbElzU3ltYm9sICYmICFvdGhJc1N5bWJvbCAmJiB2YWx1ZSA8IG90aGVyKSB8fFxuICAgICAgICAgICAgKG90aElzU3ltYm9sICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSAmJiAhdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCkgfHxcbiAgICAgICAgICAgIChvdGhJc051bGwgJiYgdmFsSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgKCFvdGhJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICAgICAhb3RoSXNSZWZsZXhpdmUpIHtcbiAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8ub3JkZXJCeWAgdG8gY29tcGFyZSBtdWx0aXBsZSBwcm9wZXJ0aWVzIG9mIGEgdmFsdWUgdG8gYW5vdGhlclxuICAgICAqIGFuZCBzdGFibGUgc29ydCB0aGVtLlxuICAgICAqXG4gICAgICogSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXMgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuIE90aGVyd2lzZSxcbiAgICAgKiBzcGVjaWZ5IGFuIG9yZGVyIG9mIFwiZGVzY1wiIGZvciBkZXNjZW5kaW5nIG9yIFwiYXNjXCIgZm9yIGFzY2VuZGluZyBzb3J0IG9yZGVyXG4gICAgICogb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtib29sZWFuW118c3RyaW5nW119IG9yZGVycyBUaGUgb3JkZXIgdG8gc29ydCBieSBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzb3J0IG9yZGVyIGluZGljYXRvciBmb3IgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcGFyZU11bHRpcGxlKG9iamVjdCwgb3RoZXIsIG9yZGVycykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgb2JqQ3JpdGVyaWEgPSBvYmplY3QuY3JpdGVyaWEsXG4gICAgICAgICAgb3RoQ3JpdGVyaWEgPSBvdGhlci5jcml0ZXJpYSxcbiAgICAgICAgICBsZW5ndGggPSBvYmpDcml0ZXJpYS5sZW5ndGgsXG4gICAgICAgICAgb3JkZXJzTGVuZ3RoID0gb3JkZXJzLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGNvbXBhcmVBc2NlbmRpbmcob2JqQ3JpdGVyaWFbaW5kZXhdLCBvdGhDcml0ZXJpYVtpbmRleF0pO1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgaWYgKGluZGV4ID49IG9yZGVyc0xlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG9yZGVyID0gb3JkZXJzW2luZGV4XTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0ICogKG9yZGVyID09ICdkZXNjJyA/IC0xIDogMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIEZpeGVzIGFuIGBBcnJheSNzb3J0YCBidWcgaW4gdGhlIEpTIGVuZ2luZSBlbWJlZGRlZCBpbiBBZG9iZSBhcHBsaWNhdGlvbnNcbiAgICAgIC8vIHRoYXQgY2F1c2VzIGl0LCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIHRvIHByb3ZpZGUgdGhlIHNhbWUgdmFsdWUgZm9yXG4gICAgICAvLyBgb2JqZWN0YCBhbmQgYG90aGVyYC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qYXNoa2VuYXMvdW5kZXJzY29yZS9wdWxsLzEyNDdcbiAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAvL1xuICAgICAgLy8gVGhpcyBhbHNvIGVuc3VyZXMgYSBzdGFibGUgc29ydCBpbiBWOCBhbmQgb3RoZXIgZW5naW5lcy5cbiAgICAgIC8vIFNlZSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD05MCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgcmV0dXJuIG9iamVjdC5pbmRleCAtIG90aGVyLmluZGV4O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgdGhhdCBpcyB0aGUgY29tcG9zaXRpb24gb2YgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLFxuICAgICAqIHBsYWNlaG9sZGVycywgYW5kIHByb3ZpZGVkIGFyZ3VtZW50cyBpbnRvIGEgc2luZ2xlIGFycmF5IG9mIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBob2xkZXJzIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtcyB7Ym9vbGVhbn0gW2lzQ3VycmllZF0gU3BlY2lmeSBjb21wb3NpbmcgZm9yIGEgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21wb3NlZCBhcmd1bWVudHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcG9zZUFyZ3MoYXJncywgcGFydGlhbHMsIGhvbGRlcnMsIGlzQ3VycmllZCkge1xuICAgICAgdmFyIGFyZ3NJbmRleCA9IC0xLFxuICAgICAgICAgIGFyZ3NMZW5ndGggPSBhcmdzLmxlbmd0aCxcbiAgICAgICAgICBob2xkZXJzTGVuZ3RoID0gaG9sZGVycy5sZW5ndGgsXG4gICAgICAgICAgbGVmdEluZGV4ID0gLTEsXG4gICAgICAgICAgbGVmdExlbmd0aCA9IHBhcnRpYWxzLmxlbmd0aCxcbiAgICAgICAgICByYW5nZUxlbmd0aCA9IG5hdGl2ZU1heChhcmdzTGVuZ3RoIC0gaG9sZGVyc0xlbmd0aCwgMCksXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobGVmdExlbmd0aCArIHJhbmdlTGVuZ3RoKSxcbiAgICAgICAgICBpc1VuY3VycmllZCA9ICFpc0N1cnJpZWQ7XG5cbiAgICAgIHdoaWxlICgrK2xlZnRJbmRleCA8IGxlZnRMZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W2xlZnRJbmRleF0gPSBwYXJ0aWFsc1tsZWZ0SW5kZXhdO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsrYXJnc0luZGV4IDwgaG9sZGVyc0xlbmd0aCkge1xuICAgICAgICBpZiAoaXNVbmN1cnJpZWQgfHwgYXJnc0luZGV4IDwgYXJnc0xlbmd0aCkge1xuICAgICAgICAgIHJlc3VsdFtob2xkZXJzW2FyZ3NJbmRleF1dID0gYXJnc1thcmdzSW5kZXhdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB3aGlsZSAocmFuZ2VMZW5ndGgtLSkge1xuICAgICAgICByZXN1bHRbbGVmdEluZGV4KytdID0gYXJnc1thcmdzSW5kZXgrK107XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgY29tcG9zZUFyZ3NgIGV4Y2VwdCB0aGF0IHRoZSBhcmd1bWVudHMgY29tcG9zaXRpb25cbiAgICAgKiBpcyB0YWlsb3JlZCBmb3IgYF8ucGFydGlhbFJpZ2h0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gYXBwZW5kIHRvIHRob3NlIHByb3ZpZGVkLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGhvbGRlcnMgVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW1zIHtib29sZWFufSBbaXNDdXJyaWVkXSBTcGVjaWZ5IGNvbXBvc2luZyBmb3IgYSBjdXJyaWVkIGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbXBvc2VkIGFyZ3VtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wb3NlQXJnc1JpZ2h0KGFyZ3MsIHBhcnRpYWxzLCBob2xkZXJzLCBpc0N1cnJpZWQpIHtcbiAgICAgIHZhciBhcmdzSW5kZXggPSAtMSxcbiAgICAgICAgICBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGgsXG4gICAgICAgICAgaG9sZGVyc0luZGV4ID0gLTEsXG4gICAgICAgICAgaG9sZGVyc0xlbmd0aCA9IGhvbGRlcnMubGVuZ3RoLFxuICAgICAgICAgIHJpZ2h0SW5kZXggPSAtMSxcbiAgICAgICAgICByaWdodExlbmd0aCA9IHBhcnRpYWxzLmxlbmd0aCxcbiAgICAgICAgICByYW5nZUxlbmd0aCA9IG5hdGl2ZU1heChhcmdzTGVuZ3RoIC0gaG9sZGVyc0xlbmd0aCwgMCksXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkocmFuZ2VMZW5ndGggKyByaWdodExlbmd0aCksXG4gICAgICAgICAgaXNVbmN1cnJpZWQgPSAhaXNDdXJyaWVkO1xuXG4gICAgICB3aGlsZSAoKythcmdzSW5kZXggPCByYW5nZUxlbmd0aCkge1xuICAgICAgICByZXN1bHRbYXJnc0luZGV4XSA9IGFyZ3NbYXJnc0luZGV4XTtcbiAgICAgIH1cbiAgICAgIHZhciBvZmZzZXQgPSBhcmdzSW5kZXg7XG4gICAgICB3aGlsZSAoKytyaWdodEluZGV4IDwgcmlnaHRMZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W29mZnNldCArIHJpZ2h0SW5kZXhdID0gcGFydGlhbHNbcmlnaHRJbmRleF07XG4gICAgICB9XG4gICAgICB3aGlsZSAoKytob2xkZXJzSW5kZXggPCBob2xkZXJzTGVuZ3RoKSB7XG4gICAgICAgIGlmIChpc1VuY3VycmllZCB8fCBhcmdzSW5kZXggPCBhcmdzTGVuZ3RoKSB7XG4gICAgICAgICAgcmVzdWx0W29mZnNldCArIGhvbGRlcnNbaG9sZGVyc0luZGV4XV0gPSBhcmdzW2FyZ3NJbmRleCsrXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5PVtdXSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgdG8uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29weUFycmF5KHNvdXJjZSwgYXJyYXkpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgICAgIGFycmF5IHx8IChhcnJheSA9IEFycmF5KGxlbmd0aCkpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgcHJvcGVydGllcyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycyB0byBjb3B5LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0by5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb3BpZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29weU9iamVjdChzb3VyY2UsIHByb3BzLCBvYmplY3QsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBpc05ldyA9ICFvYmplY3Q7XG4gICAgICBvYmplY3QgfHwgKG9iamVjdCA9IHt9KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuXG4gICAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgICA/IGN1c3RvbWl6ZXIob2JqZWN0W2tleV0sIHNvdXJjZVtrZXldLCBrZXksIG9iamVjdCwgc291cmNlKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOZXcpIHtcbiAgICAgICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcGllcyBvd24gc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlTeW1ib2xzKHNvdXJjZSwgb2JqZWN0KSB7XG4gICAgICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHMoc291cmNlKSwgb2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgb3duIGFuZCBpbmhlcml0ZWQgc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlTeW1ib2xzSW4oc291cmNlLCBvYmplY3QpIHtcbiAgICAgIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9sc0luKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uZ3JvdXBCeWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGFjY3VtdWxhdG9yIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaW5pdGlhbGl6ZXJdIFRoZSBhY2N1bXVsYXRvciBvYmplY3QgaW5pdGlhbGl6ZXIuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWdncmVnYXRvciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVBZ2dyZWdhdG9yKHNldHRlciwgaW5pdGlhbGl6ZXIpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUFnZ3JlZ2F0b3IgOiBiYXNlQWdncmVnYXRvcixcbiAgICAgICAgICAgIGFjY3VtdWxhdG9yID0gaW5pdGlhbGl6ZXIgPyBpbml0aWFsaXplcigpIDoge307XG5cbiAgICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgc2V0dGVyLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGFjY3VtdWxhdG9yKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uYXNzaWduYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduZXIgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoYXNzaWduZXIpIHtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgICBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aCxcbiAgICAgICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPiAxID8gc291cmNlc1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY3VzdG9taXplciA9IChhc3NpZ25lci5sZW5ndGggPiAzICYmIHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicpXG4gICAgICAgICAgPyAobGVuZ3RoLS0sIGN1c3RvbWl6ZXIpXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPCAzID8gdW5kZWZpbmVkIDogY3VzdG9taXplcjtcbiAgICAgICAgICBsZW5ndGggPSAxO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgICAgICBhc3NpZ25lcihvYmplY3QsIHNvdXJjZSwgaW5kZXgsIGN1c3RvbWl6ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBiYXNlRWFjaGAgb3IgYGJhc2VFYWNoUmlnaHRgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGEgY29sbGVjdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUJhc2VFYWNoKGVhY2hGdW5jLCBmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgICAgIHJldHVybiBlYWNoRnVuYyhjb2xsZWN0aW9uLCBpdGVyYXRlZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuICAgICAgICAgICAgaW5kZXggPSBmcm9tUmlnaHQgPyBsZW5ndGggOiAtMSxcbiAgICAgICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KGNvbGxlY3Rpb24pO1xuXG4gICAgICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2luZGV4XSwgaW5kZXgsIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGJhc2UgZnVuY3Rpb24gZm9yIG1ldGhvZHMgbGlrZSBgXy5mb3JJbmAgYW5kIGBfLmZvck93bmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQmFzZUZvcihmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzRnVuYykge1xuICAgICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KG9iamVjdCksXG4gICAgICAgICAgICBwcm9wcyA9IGtleXNGdW5jKG9iamVjdCksXG4gICAgICAgICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgICAgdmFyIGtleSA9IHByb3BzW2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdO1xuICAgICAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gaW52b2tlIGl0IHdpdGggdGhlIG9wdGlvbmFsIGB0aGlzYFxuICAgICAqIGJpbmRpbmcgb2YgYHRoaXNBcmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUJpbmQoZnVuYywgYml0bWFzaywgdGhpc0FyZykge1xuICAgICAgdmFyIGlzQmluZCA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRyxcbiAgICAgICAgICBDdG9yID0gY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGZuID0gKHRoaXMgJiYgdGhpcyAhPT0gcm9vdCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikgPyBDdG9yIDogZnVuYztcbiAgICAgICAgcmV0dXJuIGZuLmFwcGx5KGlzQmluZCA/IHRoaXNBcmcgOiB0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8ubG93ZXJGaXJzdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lIFRoZSBuYW1lIG9mIHRoZSBgU3RyaW5nYCBjYXNlIG1ldGhvZCB0byB1c2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FzZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDYXNlRmlyc3QobWV0aG9kTmFtZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuXG4gICAgICAgIHZhciBzdHJTeW1ib2xzID0gaGFzVW5pY29kZShzdHJpbmcpXG4gICAgICAgICAgPyBzdHJpbmdUb0FycmF5KHN0cmluZylcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICB2YXIgY2hyID0gc3RyU3ltYm9sc1xuICAgICAgICAgID8gc3RyU3ltYm9sc1swXVxuICAgICAgICAgIDogc3RyaW5nLmNoYXJBdCgwKTtcblxuICAgICAgICB2YXIgdHJhaWxpbmcgPSBzdHJTeW1ib2xzXG4gICAgICAgICAgPyBjYXN0U2xpY2Uoc3RyU3ltYm9scywgMSkuam9pbignJylcbiAgICAgICAgICA6IHN0cmluZy5zbGljZSgxKTtcblxuICAgICAgICByZXR1cm4gY2hyW21ldGhvZE5hbWVdKCkgKyB0cmFpbGluZztcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uY2FtZWxDYXNlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRvIGNvbWJpbmUgZWFjaCB3b3JkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbXBvdW5kZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQ29tcG91bmRlcihjYWxsYmFjaykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgICByZXR1cm4gYXJyYXlSZWR1Y2Uod29yZHMoZGVidXJyKHN0cmluZykucmVwbGFjZShyZUFwb3MsICcnKSksIGNhbGxiYWNrLCAnJyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIGFuIGluc3RhbmNlIG9mIGBDdG9yYCByZWdhcmRsZXNzIG9mXG4gICAgICogd2hldGhlciBpdCB3YXMgaW52b2tlZCBhcyBwYXJ0IG9mIGEgYG5ld2AgZXhwcmVzc2lvbiBvciBieSBgY2FsbGAgb3IgYGFwcGx5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gQ3RvciBUaGUgY29uc3RydWN0b3IgdG8gd3JhcC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUN0b3IoQ3Rvcikge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBVc2UgYSBgc3dpdGNoYCBzdGF0ZW1lbnQgdG8gd29yayB3aXRoIGNsYXNzIGNvbnN0cnVjdG9ycy4gU2VlXG4gICAgICAgIC8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtZnVuY3Rpb24tb2JqZWN0cy1jYWxsLXRoaXNhcmd1bWVudC1hcmd1bWVudHNsaXN0XG4gICAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEN0b3I7XG4gICAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSk7XG4gICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgICAgY2FzZSAzOiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgICAgICAgY2FzZSA0OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gICAgICAgICAgY2FzZSA1OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSk7XG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSwgYXJnc1s1XSk7XG4gICAgICAgICAgY2FzZSA3OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSwgYXJnc1s1XSwgYXJnc1s2XSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRoaXNCaW5kaW5nID0gYmFzZUNyZWF0ZShDdG9yLnByb3RvdHlwZSksXG4gICAgICAgICAgICByZXN1bHQgPSBDdG9yLmFwcGx5KHRoaXNCaW5kaW5nLCBhcmdzKTtcblxuICAgICAgICAvLyBNaW1pYyB0aGUgY29uc3RydWN0b3IncyBgcmV0dXJuYCBiZWhhdmlvci5cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDEzLjIuMiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICByZXR1cm4gaXNPYmplY3QocmVzdWx0KSA/IHJlc3VsdCA6IHRoaXNCaW5kaW5nO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gZW5hYmxlIGN1cnJ5aW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGFyaXR5IFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDdXJyeShmdW5jLCBiaXRtYXNrLCBhcml0eSkge1xuICAgICAgdmFyIEN0b3IgPSBjcmVhdGVDdG9yKGZ1bmMpO1xuXG4gICAgICBmdW5jdGlvbiB3cmFwcGVyKCkge1xuICAgICAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheShsZW5ndGgpLFxuICAgICAgICAgICAgaW5kZXggPSBsZW5ndGgsXG4gICAgICAgICAgICBwbGFjZWhvbGRlciA9IGdldEhvbGRlcih3cmFwcGVyKTtcblxuICAgICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICAgIGFyZ3NbaW5kZXhdID0gYXJndW1lbnRzW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaG9sZGVycyA9IChsZW5ndGggPCAzICYmIGFyZ3NbMF0gIT09IHBsYWNlaG9sZGVyICYmIGFyZ3NbbGVuZ3RoIC0gMV0gIT09IHBsYWNlaG9sZGVyKVxuICAgICAgICAgID8gW11cbiAgICAgICAgICA6IHJlcGxhY2VIb2xkZXJzKGFyZ3MsIHBsYWNlaG9sZGVyKTtcblxuICAgICAgICBsZW5ndGggLT0gaG9sZGVycy5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPCBhcml0eSkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVSZWN1cnJ5KFxuICAgICAgICAgICAgZnVuYywgYml0bWFzaywgY3JlYXRlSHlicmlkLCB3cmFwcGVyLnBsYWNlaG9sZGVyLCB1bmRlZmluZWQsXG4gICAgICAgICAgICBhcmdzLCBob2xkZXJzLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgYXJpdHkgLSBsZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmbiA9ICh0aGlzICYmIHRoaXMgIT09IHJvb3QgJiYgdGhpcyBpbnN0YW5jZW9mIHdyYXBwZXIpID8gQ3RvciA6IGZ1bmM7XG4gICAgICAgIHJldHVybiBhcHBseShmbiwgdGhpcywgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8uZmluZGAgb3IgYF8uZmluZExhc3RgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmaW5kSW5kZXhGdW5jIFRoZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZpbmQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlRmluZChmaW5kSW5kZXhGdW5jKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICAgICAgdmFyIGl0ZXJhYmxlID0gT2JqZWN0KGNvbGxlY3Rpb24pO1xuICAgICAgICBpZiAoIWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICAgICAgdmFyIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKTtcbiAgICAgICAgICBjb2xsZWN0aW9uID0ga2V5cyhjb2xsZWN0aW9uKTtcbiAgICAgICAgICBwcmVkaWNhdGUgPSBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpOyB9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBpbmRleCA9IGZpbmRJbmRleEZ1bmMoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBmcm9tSW5kZXgpO1xuICAgICAgICByZXR1cm4gaW5kZXggPiAtMSA/IGl0ZXJhYmxlW2l0ZXJhdGVlID8gY29sbGVjdGlvbltpbmRleF0gOiBpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgXy5mbG93YCBvciBgXy5mbG93UmlnaHRgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmbG93IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUZsb3coZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZmxhdFJlc3QoZnVuY3Rpb24oZnVuY3MpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGZ1bmNzLmxlbmd0aCxcbiAgICAgICAgICAgIGluZGV4ID0gbGVuZ3RoLFxuICAgICAgICAgICAgcHJlcmVxID0gTG9kYXNoV3JhcHBlci5wcm90b3R5cGUudGhydTtcblxuICAgICAgICBpZiAoZnJvbVJpZ2h0KSB7XG4gICAgICAgICAgZnVuY3MucmV2ZXJzZSgpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgICAgdmFyIGZ1bmMgPSBmdW5jc1tpbmRleF07XG4gICAgICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHByZXJlcSAmJiAhd3JhcHBlciAmJiBnZXRGdW5jTmFtZShmdW5jKSA9PSAnd3JhcHBlcicpIHtcbiAgICAgICAgICAgIHZhciB3cmFwcGVyID0gbmV3IExvZGFzaFdyYXBwZXIoW10sIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbmRleCA9IHdyYXBwZXIgPyBpbmRleCA6IGxlbmd0aDtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBmdW5jID0gZnVuY3NbaW5kZXhdO1xuXG4gICAgICAgICAgdmFyIGZ1bmNOYW1lID0gZ2V0RnVuY05hbWUoZnVuYyksXG4gICAgICAgICAgICAgIGRhdGEgPSBmdW5jTmFtZSA9PSAnd3JhcHBlcicgPyBnZXREYXRhKGZ1bmMpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgaWYgKGRhdGEgJiYgaXNMYXppYWJsZShkYXRhWzBdKSAmJlxuICAgICAgICAgICAgICAgIGRhdGFbMV0gPT0gKFdSQVBfQVJZX0ZMQUcgfCBXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX1BBUlRJQUxfRkxBRyB8IFdSQVBfUkVBUkdfRkxBRykgJiZcbiAgICAgICAgICAgICAgICAhZGF0YVs0XS5sZW5ndGggJiYgZGF0YVs5XSA9PSAxXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgd3JhcHBlciA9IHdyYXBwZXJbZ2V0RnVuY05hbWUoZGF0YVswXSldLmFwcGx5KHdyYXBwZXIsIGRhdGFbM10pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3cmFwcGVyID0gKGZ1bmMubGVuZ3RoID09IDEgJiYgaXNMYXppYWJsZShmdW5jKSlcbiAgICAgICAgICAgICAgPyB3cmFwcGVyW2Z1bmNOYW1lXSgpXG4gICAgICAgICAgICAgIDogd3JhcHBlci50aHJ1KGZ1bmMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICAgIHZhbHVlID0gYXJnc1swXTtcblxuICAgICAgICAgIGlmICh3cmFwcGVyICYmIGFyZ3MubGVuZ3RoID09IDEgJiYgaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwcGVyLnBsYW50KHZhbHVlKS52YWx1ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgICAgICAgICByZXN1bHQgPSBsZW5ndGggPyBmdW5jc1tpbmRleF0uYXBwbHkodGhpcywgYXJncykgOiB2YWx1ZTtcblxuICAgICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBmdW5jc1tpbmRleF0uY2FsbCh0aGlzLCByZXN1bHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGludm9rZSBpdCB3aXRoIG9wdGlvbmFsIGB0aGlzYFxuICAgICAqIGJpbmRpbmcgb2YgYHRoaXNBcmdgLCBwYXJ0aWFsIGFwcGxpY2F0aW9uLCBhbmQgY3VycnlpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258c3RyaW5nfSBmdW5jIFRoZSBmdW5jdGlvbiBvciBtZXRob2QgbmFtZSB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZCB0b1xuICAgICAqICB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzXSBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc1JpZ2h0XSBUaGUgYXJndW1lbnRzIHRvIGFwcGVuZCB0byB0aG9zZSBwcm92aWRlZFxuICAgICAqICB0byB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzUmlnaHRdIFRoZSBgcGFydGlhbHNSaWdodGAgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVIeWJyaWQoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIHBhcnRpYWxzUmlnaHQsIGhvbGRlcnNSaWdodCwgYXJnUG9zLCBhcnksIGFyaXR5KSB7XG4gICAgICB2YXIgaXNBcnkgPSBiaXRtYXNrICYgV1JBUF9BUllfRkxBRyxcbiAgICAgICAgICBpc0JpbmQgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcsXG4gICAgICAgICAgaXNCaW5kS2V5ID0gYml0bWFzayAmIFdSQVBfQklORF9LRVlfRkxBRyxcbiAgICAgICAgICBpc0N1cnJpZWQgPSBiaXRtYXNrICYgKFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfQ1VSUllfUklHSFRfRkxBRyksXG4gICAgICAgICAgaXNGbGlwID0gYml0bWFzayAmIFdSQVBfRkxJUF9GTEFHLFxuICAgICAgICAgIEN0b3IgPSBpc0JpbmRLZXkgPyB1bmRlZmluZWQgOiBjcmVhdGVDdG9yKGZ1bmMpO1xuXG4gICAgICBmdW5jdGlvbiB3cmFwcGVyKCkge1xuICAgICAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheShsZW5ndGgpLFxuICAgICAgICAgICAgaW5kZXggPSBsZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgICBhcmdzW2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ3VycmllZCkge1xuICAgICAgICAgIHZhciBwbGFjZWhvbGRlciA9IGdldEhvbGRlcih3cmFwcGVyKSxcbiAgICAgICAgICAgICAgaG9sZGVyc0NvdW50ID0gY291bnRIb2xkZXJzKGFyZ3MsIHBsYWNlaG9sZGVyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFydGlhbHMpIHtcbiAgICAgICAgICBhcmdzID0gY29tcG9zZUFyZ3MoYXJncywgcGFydGlhbHMsIGhvbGRlcnMsIGlzQ3VycmllZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnRpYWxzUmlnaHQpIHtcbiAgICAgICAgICBhcmdzID0gY29tcG9zZUFyZ3NSaWdodChhcmdzLCBwYXJ0aWFsc1JpZ2h0LCBob2xkZXJzUmlnaHQsIGlzQ3VycmllZCk7XG4gICAgICAgIH1cbiAgICAgICAgbGVuZ3RoIC09IGhvbGRlcnNDb3VudDtcbiAgICAgICAgaWYgKGlzQ3VycmllZCAmJiBsZW5ndGggPCBhcml0eSkge1xuICAgICAgICAgIHZhciBuZXdIb2xkZXJzID0gcmVwbGFjZUhvbGRlcnMoYXJncywgcGxhY2Vob2xkZXIpO1xuICAgICAgICAgIHJldHVybiBjcmVhdGVSZWN1cnJ5KFxuICAgICAgICAgICAgZnVuYywgYml0bWFzaywgY3JlYXRlSHlicmlkLCB3cmFwcGVyLnBsYWNlaG9sZGVyLCB0aGlzQXJnLFxuICAgICAgICAgICAgYXJncywgbmV3SG9sZGVycywgYXJnUG9zLCBhcnksIGFyaXR5IC0gbGVuZ3RoXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGhpc0JpbmRpbmcgPSBpc0JpbmQgPyB0aGlzQXJnIDogdGhpcyxcbiAgICAgICAgICAgIGZuID0gaXNCaW5kS2V5ID8gdGhpc0JpbmRpbmdbZnVuY10gOiBmdW5jO1xuXG4gICAgICAgIGxlbmd0aCA9IGFyZ3MubGVuZ3RoO1xuICAgICAgICBpZiAoYXJnUG9zKSB7XG4gICAgICAgICAgYXJncyA9IHJlb3JkZXIoYXJncywgYXJnUG9zKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0ZsaXAgJiYgbGVuZ3RoID4gMSkge1xuICAgICAgICAgIGFyZ3MucmV2ZXJzZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0FyeSAmJiBhcnkgPCBsZW5ndGgpIHtcbiAgICAgICAgICBhcmdzLmxlbmd0aCA9IGFyeTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcyAmJiB0aGlzICE9PSByb290ICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSB7XG4gICAgICAgICAgZm4gPSBDdG9yIHx8IGNyZWF0ZUN0b3IoZm4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzQmluZGluZywgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5pbnZlcnRCeWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGFjY3VtdWxhdG9yIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB0b0l0ZXJhdGVlIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIGl0ZXJhdGVlcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBpbnZlcnRlciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVJbnZlcnRlcihzZXR0ZXIsIHRvSXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52ZXJ0ZXIob2JqZWN0LCBzZXR0ZXIsIHRvSXRlcmF0ZWUoaXRlcmF0ZWUpLCB7fSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbiBvbiB0d28gdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcGVyYXRvciBUaGUgZnVuY3Rpb24gdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZGVmYXVsdFZhbHVlXSBUaGUgdmFsdWUgdXNlZCBmb3IgYHVuZGVmaW5lZGAgYXJndW1lbnRzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlTWF0aE9wZXJhdGlvbihvcGVyYXRvciwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIG90aGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG90aGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBvdGhlcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb3RoZXIgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZhbHVlID0gYmFzZVRvU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIG90aGVyID0gYmFzZVRvU3RyaW5nKG90aGVyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgPSBiYXNlVG9OdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgb3RoZXIgPSBiYXNlVG9OdW1iZXIob3RoZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQgPSBvcGVyYXRvcih2YWx1ZSwgb3RoZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLm92ZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBhcnJheUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBpdGVyYXRlZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgb3ZlciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVPdmVyKGFycmF5RnVuYykge1xuICAgICAgcmV0dXJuIGZsYXRSZXN0KGZ1bmN0aW9uKGl0ZXJhdGVlcykge1xuICAgICAgICBpdGVyYXRlZXMgPSBhcnJheU1hcChpdGVyYXRlZXMsIGJhc2VVbmFyeShnZXRJdGVyYXRlZSgpKSk7XG4gICAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgICAgdmFyIHRoaXNBcmcgPSB0aGlzO1xuICAgICAgICAgIHJldHVybiBhcnJheUZ1bmMoaXRlcmF0ZWVzLCBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFwcGx5KGl0ZXJhdGVlLCB0aGlzQXJnLCBhcmdzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIHRoZSBwYWRkaW5nIGZvciBgc3RyaW5nYCBiYXNlZCBvbiBgbGVuZ3RoYC4gVGhlIGBjaGFyc2Agc3RyaW5nXG4gICAgICogaXMgdHJ1bmNhdGVkIGlmIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBleGNlZWRzIGBsZW5ndGhgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGluZyBmb3IgYHN0cmluZ2AuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUGFkZGluZyhsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBjaGFycyA9IGNoYXJzID09PSB1bmRlZmluZWQgPyAnICcgOiBiYXNlVG9TdHJpbmcoY2hhcnMpO1xuXG4gICAgICB2YXIgY2hhcnNMZW5ndGggPSBjaGFycy5sZW5ndGg7XG4gICAgICBpZiAoY2hhcnNMZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiBjaGFyc0xlbmd0aCA/IGJhc2VSZXBlYXQoY2hhcnMsIGxlbmd0aCkgOiBjaGFycztcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBiYXNlUmVwZWF0KGNoYXJzLCBuYXRpdmVDZWlsKGxlbmd0aCAvIHN0cmluZ1NpemUoY2hhcnMpKSk7XG4gICAgICByZXR1cm4gaGFzVW5pY29kZShjaGFycylcbiAgICAgICAgPyBjYXN0U2xpY2Uoc3RyaW5nVG9BcnJheShyZXN1bHQpLCAwLCBsZW5ndGgpLmpvaW4oJycpXG4gICAgICAgIDogcmVzdWx0LnNsaWNlKDAsIGxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGludm9rZSBpdCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZ1xuICAgICAqIG9mIGB0aGlzQXJnYCBhbmQgYHBhcnRpYWxzYCBwcmVwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZCB0b1xuICAgICAqICB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUGFydGlhbChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscykge1xuICAgICAgdmFyIGlzQmluZCA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRyxcbiAgICAgICAgICBDdG9yID0gY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGFyZ3NJbmRleCA9IC0xLFxuICAgICAgICAgICAgYXJnc0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgICBsZWZ0SW5kZXggPSAtMSxcbiAgICAgICAgICAgIGxlZnRMZW5ndGggPSBwYXJ0aWFscy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkobGVmdExlbmd0aCArIGFyZ3NMZW5ndGgpLFxuICAgICAgICAgICAgZm4gPSAodGhpcyAmJiB0aGlzICE9PSByb290ICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSA/IEN0b3IgOiBmdW5jO1xuXG4gICAgICAgIHdoaWxlICgrK2xlZnRJbmRleCA8IGxlZnRMZW5ndGgpIHtcbiAgICAgICAgICBhcmdzW2xlZnRJbmRleF0gPSBwYXJ0aWFsc1tsZWZ0SW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChhcmdzTGVuZ3RoLS0pIHtcbiAgICAgICAgICBhcmdzW2xlZnRJbmRleCsrXSA9IGFyZ3VtZW50c1srK2FyZ3NJbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFwcGx5KGZuLCBpc0JpbmQgPyB0aGlzQXJnIDogdGhpcywgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8ucmFuZ2VgIG9yIGBfLnJhbmdlUmlnaHRgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByYW5nZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSYW5nZShmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdGFydCwgZW5kLCBzdGVwKSB7XG4gICAgICAgIGlmIChzdGVwICYmIHR5cGVvZiBzdGVwICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKHN0YXJ0LCBlbmQsIHN0ZXApKSB7XG4gICAgICAgICAgZW5kID0gc3RlcCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBFbnN1cmUgdGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gICAgICAgIHN0YXJ0ID0gdG9GaW5pdGUoc3RhcnQpO1xuICAgICAgICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBlbmQgPSBzdGFydDtcbiAgICAgICAgICBzdGFydCA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5kID0gdG9GaW5pdGUoZW5kKTtcbiAgICAgICAgfVxuICAgICAgICBzdGVwID0gc3RlcCA9PT0gdW5kZWZpbmVkID8gKHN0YXJ0IDwgZW5kID8gMSA6IC0xKSA6IHRvRmluaXRlKHN0ZXApO1xuICAgICAgICByZXR1cm4gYmFzZVJhbmdlKHN0YXJ0LCBlbmQsIHN0ZXAsIGZyb21SaWdodCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgcmVsYXRpb25hbCBvcGVyYXRpb24gb24gdHdvIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3BlcmF0b3IgVGhlIGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZWxhdGlvbmFsIG9wZXJhdGlvbiBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKG9wZXJhdG9yKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICAgIGlmICghKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyAmJiB0eXBlb2Ygb3RoZXIgPT0gJ3N0cmluZycpKSB7XG4gICAgICAgICAgdmFsdWUgPSB0b051bWJlcih2YWx1ZSk7XG4gICAgICAgICAgb3RoZXIgPSB0b051bWJlcihvdGhlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wZXJhdG9yKHZhbHVlLCBvdGhlcik7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBjb250aW51ZSBjdXJyeWluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHdyYXBGdW5jIFRoZSBmdW5jdGlvbiB0byBjcmVhdGUgdGhlIGBmdW5jYCB3cmFwcGVyLlxuICAgICAqIEBwYXJhbSB7Kn0gcGxhY2Vob2xkZXIgVGhlIHBsYWNlaG9sZGVyIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG9cbiAgICAgKiAgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc10gVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSZWN1cnJ5KGZ1bmMsIGJpdG1hc2ssIHdyYXBGdW5jLCBwbGFjZWhvbGRlciwgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIGFyZ1BvcywgYXJ5LCBhcml0eSkge1xuICAgICAgdmFyIGlzQ3VycnkgPSBiaXRtYXNrICYgV1JBUF9DVVJSWV9GTEFHLFxuICAgICAgICAgIG5ld0hvbGRlcnMgPSBpc0N1cnJ5ID8gaG9sZGVycyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBuZXdIb2xkZXJzUmlnaHQgPSBpc0N1cnJ5ID8gdW5kZWZpbmVkIDogaG9sZGVycyxcbiAgICAgICAgICBuZXdQYXJ0aWFscyA9IGlzQ3VycnkgPyBwYXJ0aWFscyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBuZXdQYXJ0aWFsc1JpZ2h0ID0gaXNDdXJyeSA/IHVuZGVmaW5lZCA6IHBhcnRpYWxzO1xuXG4gICAgICBiaXRtYXNrIHw9IChpc0N1cnJ5ID8gV1JBUF9QQVJUSUFMX0ZMQUcgOiBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyk7XG4gICAgICBiaXRtYXNrICY9IH4oaXNDdXJyeSA/IFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHIDogV1JBUF9QQVJUSUFMX0ZMQUcpO1xuXG4gICAgICBpZiAoIShiaXRtYXNrICYgV1JBUF9DVVJSWV9CT1VORF9GTEFHKSkge1xuICAgICAgICBiaXRtYXNrICY9IH4oV1JBUF9CSU5EX0ZMQUcgfCBXUkFQX0JJTkRfS0VZX0ZMQUcpO1xuICAgICAgfVxuICAgICAgdmFyIG5ld0RhdGEgPSBbXG4gICAgICAgIGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIG5ld1BhcnRpYWxzLCBuZXdIb2xkZXJzLCBuZXdQYXJ0aWFsc1JpZ2h0LFxuICAgICAgICBuZXdIb2xkZXJzUmlnaHQsIGFyZ1BvcywgYXJ5LCBhcml0eVxuICAgICAgXTtcblxuICAgICAgdmFyIHJlc3VsdCA9IHdyYXBGdW5jLmFwcGx5KHVuZGVmaW5lZCwgbmV3RGF0YSk7XG4gICAgICBpZiAoaXNMYXppYWJsZShmdW5jKSkge1xuICAgICAgICBzZXREYXRhKHJlc3VsdCwgbmV3RGF0YSk7XG4gICAgICB9XG4gICAgICByZXN1bHQucGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjtcbiAgICAgIHJldHVybiBzZXRXcmFwVG9TdHJpbmcocmVzdWx0LCBmdW5jLCBiaXRtYXNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5yb3VuZGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lIFRoZSBuYW1lIG9mIHRoZSBgTWF0aGAgbWV0aG9kIHRvIHVzZSB3aGVuIHJvdW5kaW5nLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJvdW5kIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVJvdW5kKG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBmdW5jID0gTWF0aFttZXRob2ROYW1lXTtcbiAgICAgIHJldHVybiBmdW5jdGlvbihudW1iZXIsIHByZWNpc2lvbikge1xuICAgICAgICBudW1iZXIgPSB0b051bWJlcihudW1iZXIpO1xuICAgICAgICBwcmVjaXNpb24gPSBwcmVjaXNpb24gPT0gbnVsbCA/IDAgOiBuYXRpdmVNaW4odG9JbnRlZ2VyKHByZWNpc2lvbiksIDI5Mik7XG4gICAgICAgIGlmIChwcmVjaXNpb24gJiYgbmF0aXZlSXNGaW5pdGUobnVtYmVyKSkge1xuICAgICAgICAgIC8vIFNoaWZ0IHdpdGggZXhwb25lbnRpYWwgbm90YXRpb24gdG8gYXZvaWQgZmxvYXRpbmctcG9pbnQgaXNzdWVzLlxuICAgICAgICAgIC8vIFNlZSBbTUROXShodHRwczovL21kbi5pby9yb3VuZCNFeGFtcGxlcykgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgICB2YXIgcGFpciA9ICh0b1N0cmluZyhudW1iZXIpICsgJ2UnKS5zcGxpdCgnZScpLFxuICAgICAgICAgICAgICB2YWx1ZSA9IGZ1bmMocGFpclswXSArICdlJyArICgrcGFpclsxXSArIHByZWNpc2lvbikpO1xuXG4gICAgICAgICAgcGFpciA9ICh0b1N0cmluZyh2YWx1ZSkgKyAnZScpLnNwbGl0KCdlJyk7XG4gICAgICAgICAgcmV0dXJuICsocGFpclswXSArICdlJyArICgrcGFpclsxXSAtIHByZWNpc2lvbikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jKG51bWJlcik7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzZXQgb2JqZWN0IG9mIGB2YWx1ZXNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhZGQgdG8gdGhlIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgc2V0LlxuICAgICAqL1xuICAgIHZhciBjcmVhdGVTZXQgPSAhKFNldCAmJiAoMSAvIHNldFRvQXJyYXkobmV3IFNldChbLC0wXSkpWzFdKSA9PSBJTkZJTklUWSkgPyBub29wIDogZnVuY3Rpb24odmFsdWVzKSB7XG4gICAgICByZXR1cm4gbmV3IFNldCh2YWx1ZXMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8udG9QYWlyc2Agb3IgYF8udG9QYWlyc0luYCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBhIGdpdmVuIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYWlycyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVUb1BhaXJzKGtleXNGdW5jKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHZhciB0YWcgPSBnZXRUYWcob2JqZWN0KTtcbiAgICAgICAgaWYgKHRhZyA9PSBtYXBUYWcpIHtcbiAgICAgICAgICByZXR1cm4gbWFwVG9BcnJheShvYmplY3QpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWcgPT0gc2V0VGFnKSB7XG4gICAgICAgICAgcmV0dXJuIHNldFRvUGFpcnMob2JqZWN0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmFzZVRvUGFpcnMob2JqZWN0LCBrZXlzRnVuYyhvYmplY3QpKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZWl0aGVyIGN1cnJpZXMgb3IgaW52b2tlcyBgZnVuY2Agd2l0aCBvcHRpb25hbFxuICAgICAqIGB0aGlzYCBiaW5kaW5nIGFuZCBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258c3RyaW5nfSBmdW5jIFRoZSBmdW5jdGlvbiBvciBtZXRob2QgbmFtZSB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICAgICAqICAgIDEgLSBgXy5iaW5kYFxuICAgICAqICAgIDIgLSBgXy5iaW5kS2V5YFxuICAgICAqICAgIDQgLSBgXy5jdXJyeWAgb3IgYF8uY3VycnlSaWdodGAgb2YgYSBib3VuZCBmdW5jdGlvblxuICAgICAqICAgIDggLSBgXy5jdXJyeWBcbiAgICAgKiAgIDE2IC0gYF8uY3VycnlSaWdodGBcbiAgICAgKiAgIDMyIC0gYF8ucGFydGlhbGBcbiAgICAgKiAgIDY0IC0gYF8ucGFydGlhbFJpZ2h0YFxuICAgICAqICAxMjggLSBgXy5yZWFyZ2BcbiAgICAgKiAgMjU2IC0gYF8uYXJ5YFxuICAgICAqICA1MTIgLSBgXy5mbGlwYFxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzXSBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFthcmdQb3NdIFRoZSBhcmd1bWVudCBwb3NpdGlvbnMgb2YgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyeV0gVGhlIGFyaXR5IGNhcCBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eV0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVdyYXAoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIGFyZ1BvcywgYXJ5LCBhcml0eSkge1xuICAgICAgdmFyIGlzQmluZEtleSA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfS0VZX0ZMQUc7XG4gICAgICBpZiAoIWlzQmluZEtleSAmJiB0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBwYXJ0aWFscyA/IHBhcnRpYWxzLmxlbmd0aCA6IDA7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICBiaXRtYXNrICY9IH4oV1JBUF9QQVJUSUFMX0ZMQUcgfCBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyk7XG4gICAgICAgIHBhcnRpYWxzID0gaG9sZGVycyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGFyeSA9IGFyeSA9PT0gdW5kZWZpbmVkID8gYXJ5IDogbmF0aXZlTWF4KHRvSW50ZWdlcihhcnkpLCAwKTtcbiAgICAgIGFyaXR5ID0gYXJpdHkgPT09IHVuZGVmaW5lZCA/IGFyaXR5IDogdG9JbnRlZ2VyKGFyaXR5KTtcbiAgICAgIGxlbmd0aCAtPSBob2xkZXJzID8gaG9sZGVycy5sZW5ndGggOiAwO1xuXG4gICAgICBpZiAoYml0bWFzayAmIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHKSB7XG4gICAgICAgIHZhciBwYXJ0aWFsc1JpZ2h0ID0gcGFydGlhbHMsXG4gICAgICAgICAgICBob2xkZXJzUmlnaHQgPSBob2xkZXJzO1xuXG4gICAgICAgIHBhcnRpYWxzID0gaG9sZGVycyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHZhciBkYXRhID0gaXNCaW5kS2V5ID8gdW5kZWZpbmVkIDogZ2V0RGF0YShmdW5jKTtcblxuICAgICAgdmFyIG5ld0RhdGEgPSBbXG4gICAgICAgIGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBwYXJ0aWFsc1JpZ2h0LCBob2xkZXJzUmlnaHQsXG4gICAgICAgIGFyZ1BvcywgYXJ5LCBhcml0eVxuICAgICAgXTtcblxuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgbWVyZ2VEYXRhKG5ld0RhdGEsIGRhdGEpO1xuICAgICAgfVxuICAgICAgZnVuYyA9IG5ld0RhdGFbMF07XG4gICAgICBiaXRtYXNrID0gbmV3RGF0YVsxXTtcbiAgICAgIHRoaXNBcmcgPSBuZXdEYXRhWzJdO1xuICAgICAgcGFydGlhbHMgPSBuZXdEYXRhWzNdO1xuICAgICAgaG9sZGVycyA9IG5ld0RhdGFbNF07XG4gICAgICBhcml0eSA9IG5ld0RhdGFbOV0gPSBuZXdEYXRhWzldID09PSB1bmRlZmluZWRcbiAgICAgICAgPyAoaXNCaW5kS2V5ID8gMCA6IGZ1bmMubGVuZ3RoKVxuICAgICAgICA6IG5hdGl2ZU1heChuZXdEYXRhWzldIC0gbGVuZ3RoLCAwKTtcblxuICAgICAgaWYgKCFhcml0eSAmJiBiaXRtYXNrICYgKFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfQ1VSUllfUklHSFRfRkxBRykpIHtcbiAgICAgICAgYml0bWFzayAmPSB+KFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfQ1VSUllfUklHSFRfRkxBRyk7XG4gICAgICB9XG4gICAgICBpZiAoIWJpdG1hc2sgfHwgYml0bWFzayA9PSBXUkFQX0JJTkRfRkxBRykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gY3JlYXRlQmluZChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnKTtcbiAgICAgIH0gZWxzZSBpZiAoYml0bWFzayA9PSBXUkFQX0NVUlJZX0ZMQUcgfHwgYml0bWFzayA9PSBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpIHtcbiAgICAgICAgcmVzdWx0ID0gY3JlYXRlQ3VycnkoZnVuYywgYml0bWFzaywgYXJpdHkpO1xuICAgICAgfSBlbHNlIGlmICgoYml0bWFzayA9PSBXUkFQX1BBUlRJQUxfRkxBRyB8fCBiaXRtYXNrID09IChXUkFQX0JJTkRfRkxBRyB8IFdSQVBfUEFSVElBTF9GTEFHKSkgJiYgIWhvbGRlcnMubGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdCA9IGNyZWF0ZVBhcnRpYWwoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gY3JlYXRlSHlicmlkLmFwcGx5KHVuZGVmaW5lZCwgbmV3RGF0YSk7XG4gICAgICB9XG4gICAgICB2YXIgc2V0dGVyID0gZGF0YSA/IGJhc2VTZXREYXRhIDogc2V0RGF0YTtcbiAgICAgIHJldHVybiBzZXRXcmFwVG9TdHJpbmcoc2V0dGVyKHJlc3VsdCwgbmV3RGF0YSksIGZ1bmMsIGJpdG1hc2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8uZGVmYXVsdHNgIHRvIGN1c3RvbWl6ZSBpdHMgYF8uYXNzaWduSW5gIHVzZSB0byBhc3NpZ24gcHJvcGVydGllc1xuICAgICAqIG9mIHNvdXJjZSBvYmplY3RzIHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGFsbCBkZXN0aW5hdGlvbiBwcm9wZXJ0aWVzXG4gICAgICogdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IG9ialZhbHVlIFRoZSBkZXN0aW5hdGlvbiB2YWx1ZS5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSBzb3VyY2UgdmFsdWUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgcGFyZW50IG9iamVjdCBvZiBgb2JqVmFsdWVgLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VzdG9tRGVmYXVsdHNBc3NpZ25JbihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICBpZiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgIChlcShvYmpWYWx1ZSwgb2JqZWN0UHJvdG9ba2V5XSkgJiYgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICByZXR1cm4gc3JjVmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCBieSBgXy5kZWZhdWx0c0RlZXBgIHRvIGN1c3RvbWl6ZSBpdHMgYF8ubWVyZ2VgIHVzZSB0byBtZXJnZSBzb3VyY2VcbiAgICAgKiBvYmplY3RzIGludG8gZGVzdGluYXRpb24gb2JqZWN0cyB0aGF0IGFyZSBwYXNzZWQgdGhydS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSBvYmpWYWx1ZSBUaGUgZGVzdGluYXRpb24gdmFsdWUuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgc291cmNlIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gbWVyZ2UuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgcGFyZW50IG9iamVjdCBvZiBgb2JqVmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHBhcmVudCBvYmplY3Qgb2YgYHNyY1ZhbHVlYC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICAgICAqICBjb3VudGVycGFydHMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXN0b21EZWZhdWx0c01lcmdlKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spIHtcbiAgICAgIGlmIChpc09iamVjdChvYmpWYWx1ZSkgJiYgaXNPYmplY3Qoc3JjVmFsdWUpKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG9iamVjdHMgYW5kIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBzdGFjay5zZXQoc3JjVmFsdWUsIG9ialZhbHVlKTtcbiAgICAgICAgYmFzZU1lcmdlKG9ialZhbHVlLCBzcmNWYWx1ZSwgdW5kZWZpbmVkLCBjdXN0b21EZWZhdWx0c01lcmdlLCBzdGFjayk7XG4gICAgICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCBieSBgXy5vbWl0YCB0byBjdXN0b21pemUgaXRzIGBfLmNsb25lRGVlcGAgdXNlIHRvIG9ubHkgY2xvbmUgcGxhaW5cbiAgICAgKiBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdW5jbG9uZWQgdmFsdWUgb3IgYHVuZGVmaW5lZGAgdG8gZGVmZXIgY2xvbmluZyB0byBgXy5jbG9uZURlZXBgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1c3RvbU9taXRDbG9uZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzUGxhaW5PYmplY3QodmFsdWUpID8gdW5kZWZpbmVkIDogdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBhcnJheXMgd2l0aCBzdXBwb3J0IGZvclxuICAgICAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtBcnJheX0gb3RoZXIgVGhlIG90aGVyIGFycmF5IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgYXJyYXlgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcnJheXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlcXVhbEFycmF5cyhhcnJheSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICAgICAgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIG90aExlbmd0aCA9IG90aGVyLmxlbmd0aDtcblxuICAgICAgaWYgKGFyckxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIShpc1BhcnRpYWwgJiYgb3RoTGVuZ3RoID4gYXJyTGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIGFyclN0YWNrZWQgPSBzdGFjay5nZXQoYXJyYXkpO1xuICAgICAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICAgICAgaWYgKGFyclN0YWNrZWQgJiYgb3RoU3RhY2tlZCkge1xuICAgICAgICByZXR1cm4gYXJyU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IGFycmF5O1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgcmVzdWx0ID0gdHJ1ZSxcbiAgICAgICAgICBzZWVuID0gKGJpdG1hc2sgJiBDT01QQVJFX1VOT1JERVJFRF9GTEFHKSA/IG5ldyBTZXRDYWNoZSA6IHVuZGVmaW5lZDtcblxuICAgICAgc3RhY2suc2V0KGFycmF5LCBvdGhlcik7XG4gICAgICBzdGFjay5zZXQob3RoZXIsIGFycmF5KTtcblxuICAgICAgLy8gSWdub3JlIG5vbi1pbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgd2hpbGUgKCsraW5kZXggPCBhcnJMZW5ndGgpIHtcbiAgICAgICAgdmFyIGFyclZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltpbmRleF07XG5cbiAgICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgYXJyVmFsdWUsIGluZGV4LCBvdGhlciwgYXJyYXksIHN0YWNrKVxuICAgICAgICAgICAgOiBjdXN0b21pemVyKGFyclZhbHVlLCBvdGhWYWx1ZSwgaW5kZXgsIGFycmF5LCBvdGhlciwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wYXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKGNvbXBhcmVkKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgaWYgKHNlZW4pIHtcbiAgICAgICAgICBpZiAoIWFycmF5U29tZShvdGhlciwgZnVuY3Rpb24ob3RoVmFsdWUsIG90aEluZGV4KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjYWNoZUhhcyhzZWVuLCBvdGhJbmRleCkgJiZcbiAgICAgICAgICAgICAgICAgICAgKGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gc2Vlbi5wdXNoKG90aEluZGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghKFxuICAgICAgICAgICAgICBhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3RhY2tbJ2RlbGV0ZSddKGFycmF5KTtcbiAgICAgIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgY29tcGFyaW5nIG9iamVjdHMgb2ZcbiAgICAgKiB0aGUgc2FtZSBgdG9TdHJpbmdUYWdgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjb21wYXJpbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICAgICAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIG9yIGBTdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdHMgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCB0YWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgICAgICAob2JqZWN0LmJ5dGVPZmZzZXQgIT0gb3RoZXIuYnl0ZU9mZnNldCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb2JqZWN0ID0gb2JqZWN0LmJ1ZmZlcjtcbiAgICAgICAgICBvdGhlciA9IG90aGVyLmJ1ZmZlcjtcblxuICAgICAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAgICAgIWVxdWFsRnVuYyhuZXcgVWludDhBcnJheShvYmplY3QpLCBuZXcgVWludDhBcnJheShvdGhlcikpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICAgIGNhc2UgYm9vbFRhZzpcbiAgICAgICAgY2FzZSBkYXRlVGFnOlxuICAgICAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgICAgICAvLyBDb2VyY2UgYm9vbGVhbnMgdG8gYDFgIG9yIGAwYCBhbmQgZGF0ZXMgdG8gbWlsbGlzZWNvbmRzLlxuICAgICAgICAgIC8vIEludmFsaWQgZGF0ZXMgYXJlIGNvZXJjZWQgdG8gYE5hTmAuXG4gICAgICAgICAgcmV0dXJuIGVxKCtvYmplY3QsICtvdGhlcik7XG5cbiAgICAgICAgY2FzZSBlcnJvclRhZzpcbiAgICAgICAgICByZXR1cm4gb2JqZWN0Lm5hbWUgPT0gb3RoZXIubmFtZSAmJiBvYmplY3QubWVzc2FnZSA9PSBvdGhlci5tZXNzYWdlO1xuXG4gICAgICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgICAgICAvLyBDb2VyY2UgcmVnZXhlcyB0byBzdHJpbmdzIGFuZCB0cmVhdCBzdHJpbmdzLCBwcmltaXRpdmVzIGFuZCBvYmplY3RzLFxuICAgICAgICAgIC8vIGFzIGVxdWFsLiBTZWUgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbiAgICAgICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICAgIHJldHVybiBvYmplY3QgPT0gKG90aGVyICsgJycpO1xuXG4gICAgICAgIGNhc2UgbWFwVGFnOlxuICAgICAgICAgIHZhciBjb252ZXJ0ID0gbWFwVG9BcnJheTtcblxuICAgICAgICBjYXNlIHNldFRhZzpcbiAgICAgICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHO1xuICAgICAgICAgIGNvbnZlcnQgfHwgKGNvbnZlcnQgPSBzZXRUb0FycmF5KTtcblxuICAgICAgICAgIGlmIChvYmplY3Quc2l6ZSAhPSBvdGhlci5zaXplICYmICFpc1BhcnRpYWwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICAgICAgICAgIH1cbiAgICAgICAgICBiaXRtYXNrIHw9IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUc7XG5cbiAgICAgICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IGVxdWFsQXJyYXlzKGNvbnZlcnQob2JqZWN0KSwgY29udmVydChvdGhlciksIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgICAgICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG5cbiAgICAgICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICAgICAgaWYgKHN5bWJvbFZhbHVlT2YpIHtcbiAgICAgICAgICAgIHJldHVybiBzeW1ib2xWYWx1ZU9mLmNhbGwob2JqZWN0KSA9PSBzeW1ib2xWYWx1ZU9mLmNhbGwob3RoZXIpO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIG9iamVjdHMgd2l0aCBzdXBwb3J0IGZvclxuICAgICAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICAgICAgb2JqUHJvcHMgPSBnZXRBbGxLZXlzKG9iamVjdCksXG4gICAgICAgICAgb2JqTGVuZ3RoID0gb2JqUHJvcHMubGVuZ3RoLFxuICAgICAgICAgIG90aFByb3BzID0gZ2V0QWxsS2V5cyhvdGhlciksXG4gICAgICAgICAgb3RoTGVuZ3RoID0gb3RoUHJvcHMubGVuZ3RoO1xuXG4gICAgICBpZiAob2JqTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IG9iakxlbmd0aDtcbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIHZhciBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgICAgIGlmICghKGlzUGFydGlhbCA/IGtleSBpbiBvdGhlciA6IGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsIGtleSkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIG9ialN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgICAgIHZhciBvdGhTdGFja2VkID0gc3RhY2suZ2V0KG90aGVyKTtcbiAgICAgIGlmIChvYmpTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIG9ialN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBvYmplY3Q7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgICAgIHN0YWNrLnNldChvdGhlciwgb2JqZWN0KTtcblxuICAgICAgdmFyIHNraXBDdG9yID0gaXNQYXJ0aWFsO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBvYmpMZW5ndGgpIHtcbiAgICAgICAga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgICAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgICAgIG90aFZhbHVlID0gb3RoZXJba2V5XTtcblxuICAgICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBvYmpWYWx1ZSwga2V5LCBvdGhlciwgb2JqZWN0LCBzdGFjaylcbiAgICAgICAgICAgIDogY3VzdG9taXplcihvYmpWYWx1ZSwgb3RoVmFsdWUsIGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBpZiAoIShjb21wYXJlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gKG9ialZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMob2JqVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpXG4gICAgICAgICAgICAgIDogY29tcGFyZWRcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBza2lwQ3RvciB8fCAoc2tpcEN0b3IgPSBrZXkgPT0gJ2NvbnN0cnVjdG9yJyk7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0ICYmICFza2lwQ3Rvcikge1xuICAgICAgICB2YXIgb2JqQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgICAgICAgIG90aEN0b3IgPSBvdGhlci5jb25zdHJ1Y3RvcjtcblxuICAgICAgICAvLyBOb24gYE9iamVjdGAgb2JqZWN0IGluc3RhbmNlcyB3aXRoIGRpZmZlcmVudCBjb25zdHJ1Y3RvcnMgYXJlIG5vdCBlcXVhbC5cbiAgICAgICAgaWYgKG9iakN0b3IgIT0gb3RoQ3RvciAmJlxuICAgICAgICAgICAgKCdjb25zdHJ1Y3RvcicgaW4gb2JqZWN0ICYmICdjb25zdHJ1Y3RvcicgaW4gb3RoZXIpICYmXG4gICAgICAgICAgICAhKHR5cGVvZiBvYmpDdG9yID09ICdmdW5jdGlvbicgJiYgb2JqQ3RvciBpbnN0YW5jZW9mIG9iakN0b3IgJiZcbiAgICAgICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCBmbGF0dGVucyB0aGUgcmVzdCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0UmVzdChmdW5jKSB7XG4gICAgICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgdW5kZWZpbmVkLCBmbGF0dGVuKSwgZnVuYyArICcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRBbGxLZXlzKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5cywgZ2V0U3ltYm9scyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICAgICAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldEFsbEtleXNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNJbiwgZ2V0U3ltYm9sc0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIG1ldGFkYXRhIGZvciBgZnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtZXRhZGF0YSBmb3IgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBnZXREYXRhID0gIW1ldGFNYXAgPyBub29wIDogZnVuY3Rpb24oZnVuYykge1xuICAgICAgcmV0dXJuIG1ldGFNYXAuZ2V0KGZ1bmMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYW1lIG9mIGBmdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRGdW5jTmFtZShmdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gKGZ1bmMubmFtZSArICcnKSxcbiAgICAgICAgICBhcnJheSA9IHJlYWxOYW1lc1tyZXN1bHRdLFxuICAgICAgICAgIGxlbmd0aCA9IGhhc093blByb3BlcnR5LmNhbGwocmVhbE5hbWVzLCByZXN1bHQpID8gYXJyYXkubGVuZ3RoIDogMDtcblxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBkYXRhID0gYXJyYXlbbGVuZ3RoXSxcbiAgICAgICAgICAgIG90aGVyRnVuYyA9IGRhdGEuZnVuYztcbiAgICAgICAgaWYgKG90aGVyRnVuYyA9PSBudWxsIHx8IG90aGVyRnVuYyA9PSBmdW5jKSB7XG4gICAgICAgICAgcmV0dXJuIGRhdGEubmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBhcmd1bWVudCBwbGFjZWhvbGRlciB2YWx1ZSBmb3IgYGZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwbGFjZWhvbGRlciB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRIb2xkZXIoZnVuYykge1xuICAgICAgdmFyIG9iamVjdCA9IGhhc093blByb3BlcnR5LmNhbGwobG9kYXNoLCAncGxhY2Vob2xkZXInKSA/IGxvZGFzaCA6IGZ1bmM7XG4gICAgICByZXR1cm4gb2JqZWN0LnBsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGFwcHJvcHJpYXRlIFwiaXRlcmF0ZWVcIiBmdW5jdGlvbi4gSWYgYF8uaXRlcmF0ZWVgIGlzIGN1c3RvbWl6ZWQsXG4gICAgICogdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjdXN0b20gbWV0aG9kLCBvdGhlcndpc2UgaXQgcmV0dXJucyBgYmFzZUl0ZXJhdGVlYC5cbiAgICAgKiBJZiBhcmd1bWVudHMgYXJlIHByb3ZpZGVkLCB0aGUgY2hvc2VuIGZ1bmN0aW9uIGlzIGludm9rZWQgd2l0aCB0aGVtIGFuZFxuICAgICAqIGl0cyByZXN1bHQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gW3ZhbHVlXSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhbiBpdGVyYXRlZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgdGhlIGNyZWF0ZWQgaXRlcmF0ZWUuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjaG9zZW4gZnVuY3Rpb24gb3IgaXRzIHJlc3VsdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRJdGVyYXRlZSgpIHtcbiAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2guaXRlcmF0ZWUgfHwgaXRlcmF0ZWU7XG4gICAgICByZXN1bHQgPSByZXN1bHQgPT09IGl0ZXJhdGVlID8gYmFzZUl0ZXJhdGVlIDogcmVzdWx0O1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyByZXN1bHQoYXJndW1lbnRzWzBdLCBhcmd1bWVudHNbMV0pIDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWFwIGRhdGEuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICAgICAgdmFyIGRhdGEgPSBtYXAuX19kYXRhX187XG4gICAgICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICAgICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICAgICAgOiBkYXRhLm1hcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbWF0Y2ggZGF0YSBvZiBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRNYXRjaERhdGEob2JqZWN0KSB7XG4gICAgICB2YXIgcmVzdWx0ID0ga2V5cyhvYmplY3QpLFxuICAgICAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIga2V5ID0gcmVzdWx0W2xlbmd0aF0sXG4gICAgICAgICAgICB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgICAgIHJlc3VsdFtsZW5ndGhdID0gW2tleSwgdmFsdWUsIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYXRpdmUgZnVuY3Rpb24gYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICAgICAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICAgICAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5bWJvbC50b1N0cmluZ1RhZ2AgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpIHtcbiAgICAgIHZhciBpc093biA9IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIHN5bVRvU3RyaW5nVGFnKSxcbiAgICAgICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHt9XG5cbiAgICAgIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICAgIGlmICh1bm1hc2tlZCkge1xuICAgICAgICBpZiAoaXNPd24pIHtcbiAgICAgICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICAgICAqL1xuICAgIHZhciBnZXRTeW1ib2xzID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgIHJldHVybiBhcnJheUZpbHRlcihuYXRpdmVHZXRTeW1ib2xzKG9iamVjdCksIGZ1bmN0aW9uKHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmplY3QsIHN5bWJvbCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICAgICAqL1xuICAgIHZhciBnZXRTeW1ib2xzSW4gPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgd2hpbGUgKG9iamVjdCkge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCBnZXRTeW1ib2xzKG9iamVjdCkpO1xuICAgICAgICBvYmplY3QgPSBnZXRQcm90b3R5cGUob2JqZWN0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGB0b1N0cmluZ1RhZ2Agb2YgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAgICAgKi9cbiAgICB2YXIgZ2V0VGFnID0gYmFzZUdldFRhZztcblxuICAgIC8vIEZhbGxiYWNrIGZvciBkYXRhIHZpZXdzLCBtYXBzLCBzZXRzLCBhbmQgd2VhayBtYXBzIGluIElFIDExIGFuZCBwcm9taXNlcyBpbiBOb2RlLmpzIDwgNi5cbiAgICBpZiAoKERhdGFWaWV3ICYmIGdldFRhZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpKSkgIT0gZGF0YVZpZXdUYWcpIHx8XG4gICAgICAgIChNYXAgJiYgZ2V0VGFnKG5ldyBNYXApICE9IG1hcFRhZykgfHxcbiAgICAgICAgKFByb21pc2UgJiYgZ2V0VGFnKFByb21pc2UucmVzb2x2ZSgpKSAhPSBwcm9taXNlVGFnKSB8fFxuICAgICAgICAoU2V0ICYmIGdldFRhZyhuZXcgU2V0KSAhPSBzZXRUYWcpIHx8XG4gICAgICAgIChXZWFrTWFwICYmIGdldFRhZyhuZXcgV2Vha01hcCkgIT0gd2Vha01hcFRhZykpIHtcbiAgICAgIGdldFRhZyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBiYXNlR2V0VGFnKHZhbHVlKSxcbiAgICAgICAgICAgIEN0b3IgPSByZXN1bHQgPT0gb2JqZWN0VGFnID8gdmFsdWUuY29uc3RydWN0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjdG9yU3RyaW5nID0gQ3RvciA/IHRvU291cmNlKEN0b3IpIDogJyc7XG5cbiAgICAgICAgaWYgKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgICBzd2l0Y2ggKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgICAgIGNhc2UgZGF0YVZpZXdDdG9yU3RyaW5nOiByZXR1cm4gZGF0YVZpZXdUYWc7XG4gICAgICAgICAgICBjYXNlIG1hcEN0b3JTdHJpbmc6IHJldHVybiBtYXBUYWc7XG4gICAgICAgICAgICBjYXNlIHByb21pc2VDdG9yU3RyaW5nOiByZXR1cm4gcHJvbWlzZVRhZztcbiAgICAgICAgICAgIGNhc2Ugc2V0Q3RvclN0cmluZzogcmV0dXJuIHNldFRhZztcbiAgICAgICAgICAgIGNhc2Ugd2Vha01hcEN0b3JTdHJpbmc6IHJldHVybiB3ZWFrTWFwVGFnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2aWV3LCBhcHBseWluZyBhbnkgYHRyYW5zZm9ybXNgIHRvIHRoZSBgc3RhcnRgIGFuZCBgZW5kYCBwb3NpdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHZpZXcuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSB2aWV3LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHRyYW5zZm9ybXMgVGhlIHRyYW5zZm9ybWF0aW9ucyB0byBhcHBseSB0byB0aGUgdmlldy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBgc3RhcnRgIGFuZCBgZW5kYFxuICAgICAqICBwb3NpdGlvbnMgb2YgdGhlIHZpZXcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0VmlldyhzdGFydCwgZW5kLCB0cmFuc2Zvcm1zKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSB0cmFuc2Zvcm1zLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGRhdGEgPSB0cmFuc2Zvcm1zW2luZGV4XSxcbiAgICAgICAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHtcbiAgICAgICAgICBjYXNlICdkcm9wJzogICAgICBzdGFydCArPSBzaXplOyBicmVhaztcbiAgICAgICAgICBjYXNlICdkcm9wUmlnaHQnOiBlbmQgLT0gc2l6ZTsgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGFrZSc6ICAgICAgZW5kID0gbmF0aXZlTWluKGVuZCwgc3RhcnQgKyBzaXplKTsgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGFrZVJpZ2h0Jzogc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQsIGVuZCAtIHNpemUpOyBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgJ3N0YXJ0Jzogc3RhcnQsICdlbmQnOiBlbmQgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyB3cmFwcGVyIGRldGFpbHMgZnJvbSB0aGUgYHNvdXJjZWAgYm9keSBjb21tZW50LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlIFRoZSBzb3VyY2UgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHdyYXBwZXIgZGV0YWlscy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRXcmFwRGV0YWlscyhzb3VyY2UpIHtcbiAgICAgIHZhciBtYXRjaCA9IHNvdXJjZS5tYXRjaChyZVdyYXBEZXRhaWxzKTtcbiAgICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdLnNwbGl0KHJlU3BsaXREZXRhaWxzKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcGF0aGAgZXhpc3RzIG9uIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFzRnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgcHJvcGVydGllcy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBoYXNGdW5jKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSk7XG4gICAgICAgIGlmICghKHJlc3VsdCA9IG9iamVjdCAhPSBudWxsICYmIGhhc0Z1bmMob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IG9iamVjdFtrZXldO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCB8fCArK2luZGV4ICE9IGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgbGVuZ3RoID0gb2JqZWN0ID09IG51bGwgPyAwIDogb2JqZWN0Lmxlbmd0aDtcbiAgICAgIHJldHVybiAhIWxlbmd0aCAmJiBpc0xlbmd0aChsZW5ndGgpICYmIGlzSW5kZXgoa2V5LCBsZW5ndGgpICYmXG4gICAgICAgIChpc0FycmF5KG9iamVjdCkgfHwgaXNBcmd1bWVudHMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgYW4gYXJyYXkgY2xvbmUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluaXRDbG9uZUFycmF5KGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IG5ldyBhcnJheS5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gICAgICAvLyBBZGQgcHJvcGVydGllcyBhc3NpZ25lZCBieSBgUmVnRXhwI2V4ZWNgLlxuICAgICAgaWYgKGxlbmd0aCAmJiB0eXBlb2YgYXJyYXlbMF0gPT0gJ3N0cmluZycgJiYgaGFzT3duUHJvcGVydHkuY2FsbChhcnJheSwgJ2luZGV4JykpIHtcbiAgICAgICAgcmVzdWx0LmluZGV4ID0gYXJyYXkuaW5kZXg7XG4gICAgICAgIHJlc3VsdC5pbnB1dCA9IGFycmF5LmlucHV0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0Q2xvbmVPYmplY3Qob2JqZWN0KSB7XG4gICAgICByZXR1cm4gKHR5cGVvZiBvYmplY3QuY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNQcm90b3R5cGUob2JqZWN0KSlcbiAgICAgICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgICAgICA6IHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZSBiYXNlZCBvbiBpdHMgYHRvU3RyaW5nVGFnYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY2xvbmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gICAgICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBNYXBgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIGBTZXRgLCBvciBgU3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluaXRDbG9uZUJ5VGFnKG9iamVjdCwgdGFnLCBpc0RlZXApIHtcbiAgICAgIHZhciBDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yO1xuICAgICAgc3dpdGNoICh0YWcpIHtcbiAgICAgICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlcihvYmplY3QpO1xuXG4gICAgICAgIGNhc2UgYm9vbFRhZzpcbiAgICAgICAgY2FzZSBkYXRlVGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3Rvcigrb2JqZWN0KTtcblxuICAgICAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZURhdGFWaWV3KG9iamVjdCwgaXNEZWVwKTtcblxuICAgICAgICBjYXNlIGZsb2F0MzJUYWc6IGNhc2UgZmxvYXQ2NFRhZzpcbiAgICAgICAgY2FzZSBpbnQ4VGFnOiBjYXNlIGludDE2VGFnOiBjYXNlIGludDMyVGFnOlxuICAgICAgICBjYXNlIHVpbnQ4VGFnOiBjYXNlIHVpbnQ4Q2xhbXBlZFRhZzogY2FzZSB1aW50MTZUYWc6IGNhc2UgdWludDMyVGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZVR5cGVkQXJyYXkob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgICAgIGNhc2UgbWFwVGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgICAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBDdG9yKG9iamVjdCk7XG5cbiAgICAgICAgY2FzZSByZWdleHBUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lUmVnRXhwKG9iamVjdCk7XG5cbiAgICAgICAgY2FzZSBzZXRUYWc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZVN5bWJvbChvYmplY3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluc2VydHMgd3JhcHBlciBgZGV0YWlsc2AgaW4gYSBjb21tZW50IGF0IHRoZSB0b3Agb2YgdGhlIGBzb3VyY2VgIGJvZHkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2UgVGhlIHNvdXJjZSB0byBtb2RpZnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBkZXRhaWxzIFRoZSBkZXRhaWxzIHRvIGluc2VydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBtb2RpZmllZCBzb3VyY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5zZXJ0V3JhcERldGFpbHMoc291cmNlLCBkZXRhaWxzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gZGV0YWlscy5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgICAgfVxuICAgICAgdmFyIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG4gICAgICBkZXRhaWxzW2xhc3RJbmRleF0gPSAobGVuZ3RoID4gMSA/ICcmICcgOiAnJykgKyBkZXRhaWxzW2xhc3RJbmRleF07XG4gICAgICBkZXRhaWxzID0gZGV0YWlscy5qb2luKGxlbmd0aCA+IDIgPyAnLCAnIDogJyAnKTtcbiAgICAgIHJldHVybiBzb3VyY2UucmVwbGFjZShyZVdyYXBDb21tZW50LCAne1xcbi8qIFt3cmFwcGVkIHdpdGggJyArIGRldGFpbHMgKyAnXSAqL1xcbicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgZmxhdHRlbmFibGUgYGFyZ3VtZW50c2Agb2JqZWN0IG9yIGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmbGF0dGVuYWJsZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRmxhdHRlbmFibGUodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc0FycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkgfHxcbiAgICAgICAgISEoc3ByZWFkYWJsZVN5bWJvbCAmJiB2YWx1ZSAmJiB2YWx1ZVtzcHJlYWRhYmxlU3ltYm9sXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBpbmRleCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgICAgIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICAgICAodHlwZSA9PSAnbnVtYmVyJyB8fFxuICAgICAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgdmFsdWUgYXJndW1lbnQuXG4gICAgICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAgICAgKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIG9iamVjdCBhcmd1bWVudC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNJdGVyYXRlZUNhbGwodmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgICAgIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgdHlwZSA9IHR5cGVvZiBpbmRleDtcbiAgICAgIGlmICh0eXBlID09ICdudW1iZXInXG4gICAgICAgICAgICA/IChpc0FycmF5TGlrZShvYmplY3QpICYmIGlzSW5kZXgoaW5kZXgsIG9iamVjdC5sZW5ndGgpKVxuICAgICAgICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpXG4gICAgICAgICAgKSB7XG4gICAgICAgIHJldHVybiBlcShvYmplY3RbaW5kZXhdLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lIGFuZCBub3QgYSBwcm9wZXJ0eSBwYXRoLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzS2V5KHZhbHVlLCBvYmplY3QpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICAgIGlmICh0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicgfHxcbiAgICAgICAgICB2YWx1ZSA9PSBudWxsIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZUlzUGxhaW5Qcm9wLnRlc3QodmFsdWUpIHx8ICFyZUlzRGVlcFByb3AudGVzdCh2YWx1ZSkgfHxcbiAgICAgICAgKG9iamVjdCAhPSBudWxsICYmIHZhbHVlIGluIE9iamVjdChvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIHVuaXF1ZSBvYmplY3Qga2V5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzS2V5YWJsZSh2YWx1ZSkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgICAgICA/ICh2YWx1ZSAhPT0gJ19fcHJvdG9fXycpXG4gICAgICAgIDogKHZhbHVlID09PSBudWxsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBhIGxhenkgY291bnRlcnBhcnQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaGFzIGEgbGF6eSBjb3VudGVycGFydCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTGF6aWFibGUoZnVuYykge1xuICAgICAgdmFyIGZ1bmNOYW1lID0gZ2V0RnVuY05hbWUoZnVuYyksXG4gICAgICAgICAgb3RoZXIgPSBsb2Rhc2hbZnVuY05hbWVdO1xuXG4gICAgICBpZiAodHlwZW9mIG90aGVyICE9ICdmdW5jdGlvbicgfHwgIShmdW5jTmFtZSBpbiBMYXp5V3JhcHBlci5wcm90b3R5cGUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChmdW5jID09PSBvdGhlcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBkYXRhID0gZ2V0RGF0YShvdGhlcik7XG4gICAgICByZXR1cm4gISFkYXRhICYmIGZ1bmMgPT09IGRhdGFbMF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICAgICAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYGZ1bmNgIGlzIGNhcGFibGUgb2YgYmVpbmcgbWFza2VkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2thYmxlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgdmFyIGlzTWFza2FibGUgPSBjb3JlSnNEYXRhID8gaXNGdW5jdGlvbiA6IHN0dWJGYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvdG90eXBlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgICAgIHZhciBDdG9yID0gdmFsdWUgJiYgdmFsdWUuY29uc3RydWN0b3IsXG4gICAgICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaWYgc3VpdGFibGUgZm9yIHN0cmljdFxuICAgICAqICBlcXVhbGl0eSBjb21wYXJpc29ucywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSAmJiAhaXNPYmplY3QodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgbWF0Y2hlc1Byb3BlcnR5YCBmb3Igc291cmNlIHZhbHVlcyBzdWl0YWJsZVxuICAgICAqIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUoa2V5LCBzcmNWYWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iamVjdFtrZXldID09PSBzcmNWYWx1ZSAmJlxuICAgICAgICAgIChzcmNWYWx1ZSAhPT0gdW5kZWZpbmVkIHx8IChrZXkgaW4gT2JqZWN0KG9iamVjdCkpKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1lbW9pemVgIHdoaWNoIGNsZWFycyB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24nc1xuICAgICAqIGNhY2hlIHdoZW4gaXQgZXhjZWVkcyBgTUFYX01FTU9JWkVfU0laRWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtZW1vaXplQ2FwcGVkKGZ1bmMpIHtcbiAgICAgIHZhciByZXN1bHQgPSBtZW1vaXplKGZ1bmMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgICBpZiAoY2FjaGUuc2l6ZSA9PT0gTUFYX01FTU9JWkVfU0laRSkge1xuICAgICAgICAgIGNhY2hlLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgY2FjaGUgPSByZXN1bHQuY2FjaGU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlcyB0aGUgZnVuY3Rpb24gbWV0YWRhdGEgb2YgYHNvdXJjZWAgaW50byBgZGF0YWAuXG4gICAgICpcbiAgICAgKiBNZXJnaW5nIG1ldGFkYXRhIHJlZHVjZXMgdGhlIG51bWJlciBvZiB3cmFwcGVycyB1c2VkIHRvIGludm9rZSBhIGZ1bmN0aW9uLlxuICAgICAqIFRoaXMgaXMgcG9zc2libGUgYmVjYXVzZSBtZXRob2RzIGxpa2UgYF8uYmluZGAsIGBfLmN1cnJ5YCwgYW5kIGBfLnBhcnRpYWxgXG4gICAgICogbWF5IGJlIGFwcGxpZWQgcmVnYXJkbGVzcyBvZiBleGVjdXRpb24gb3JkZXIuIE1ldGhvZHMgbGlrZSBgXy5hcnlgIGFuZFxuICAgICAqIGBfLnJlYXJnYCBtb2RpZnkgZnVuY3Rpb24gYXJndW1lbnRzLCBtYWtpbmcgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlXG4gICAgICogZXhlY3V0ZWQgaW1wb3J0YW50LCBwcmV2ZW50aW5nIHRoZSBtZXJnaW5nIG9mIG1ldGFkYXRhLiBIb3dldmVyLCB3ZSBtYWtlXG4gICAgICogYW4gZXhjZXB0aW9uIGZvciBhIHNhZmUgY29tYmluZWQgY2FzZSB3aGVyZSBjdXJyaWVkIGZ1bmN0aW9ucyBoYXZlIGBfLmFyeWBcbiAgICAgKiBhbmQgb3IgYF8ucmVhcmdgIGFwcGxpZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGRhdGEgVGhlIGRlc3RpbmF0aW9uIG1ldGFkYXRhLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHNvdXJjZSBUaGUgc291cmNlIG1ldGFkYXRhLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgZGF0YWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVyZ2VEYXRhKGRhdGEsIHNvdXJjZSkge1xuICAgICAgdmFyIGJpdG1hc2sgPSBkYXRhWzFdLFxuICAgICAgICAgIHNyY0JpdG1hc2sgPSBzb3VyY2VbMV0sXG4gICAgICAgICAgbmV3Qml0bWFzayA9IGJpdG1hc2sgfCBzcmNCaXRtYXNrLFxuICAgICAgICAgIGlzQ29tbW9uID0gbmV3Qml0bWFzayA8IChXUkFQX0JJTkRfRkxBRyB8IFdSQVBfQklORF9LRVlfRkxBRyB8IFdSQVBfQVJZX0ZMQUcpO1xuXG4gICAgICB2YXIgaXNDb21ibyA9XG4gICAgICAgICgoc3JjQml0bWFzayA9PSBXUkFQX0FSWV9GTEFHKSAmJiAoYml0bWFzayA9PSBXUkFQX0NVUlJZX0ZMQUcpKSB8fFxuICAgICAgICAoKHNyY0JpdG1hc2sgPT0gV1JBUF9BUllfRkxBRykgJiYgKGJpdG1hc2sgPT0gV1JBUF9SRUFSR19GTEFHKSAmJiAoZGF0YVs3XS5sZW5ndGggPD0gc291cmNlWzhdKSkgfHxcbiAgICAgICAgKChzcmNCaXRtYXNrID09IChXUkFQX0FSWV9GTEFHIHwgV1JBUF9SRUFSR19GTEFHKSkgJiYgKHNvdXJjZVs3XS5sZW5ndGggPD0gc291cmNlWzhdKSAmJiAoYml0bWFzayA9PSBXUkFQX0NVUlJZX0ZMQUcpKTtcblxuICAgICAgLy8gRXhpdCBlYXJseSBpZiBtZXRhZGF0YSBjYW4ndCBiZSBtZXJnZWQuXG4gICAgICBpZiAoIShpc0NvbW1vbiB8fCBpc0NvbWJvKSkge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYHRoaXNBcmdgIGlmIGF2YWlsYWJsZS5cbiAgICAgIGlmIChzcmNCaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcpIHtcbiAgICAgICAgZGF0YVsyXSA9IHNvdXJjZVsyXTtcbiAgICAgICAgLy8gU2V0IHdoZW4gY3VycnlpbmcgYSBib3VuZCBmdW5jdGlvbi5cbiAgICAgICAgbmV3Qml0bWFzayB8PSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcgPyAwIDogV1JBUF9DVVJSWV9CT1VORF9GTEFHO1xuICAgICAgfVxuICAgICAgLy8gQ29tcG9zZSBwYXJ0aWFsIGFyZ3VtZW50cy5cbiAgICAgIHZhciB2YWx1ZSA9IHNvdXJjZVszXTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICB2YXIgcGFydGlhbHMgPSBkYXRhWzNdO1xuICAgICAgICBkYXRhWzNdID0gcGFydGlhbHMgPyBjb21wb3NlQXJncyhwYXJ0aWFscywgdmFsdWUsIHNvdXJjZVs0XSkgOiB2YWx1ZTtcbiAgICAgICAgZGF0YVs0XSA9IHBhcnRpYWxzID8gcmVwbGFjZUhvbGRlcnMoZGF0YVszXSwgUExBQ0VIT0xERVIpIDogc291cmNlWzRdO1xuICAgICAgfVxuICAgICAgLy8gQ29tcG9zZSBwYXJ0aWFsIHJpZ2h0IGFyZ3VtZW50cy5cbiAgICAgIHZhbHVlID0gc291cmNlWzVdO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHBhcnRpYWxzID0gZGF0YVs1XTtcbiAgICAgICAgZGF0YVs1XSA9IHBhcnRpYWxzID8gY29tcG9zZUFyZ3NSaWdodChwYXJ0aWFscywgdmFsdWUsIHNvdXJjZVs2XSkgOiB2YWx1ZTtcbiAgICAgICAgZGF0YVs2XSA9IHBhcnRpYWxzID8gcmVwbGFjZUhvbGRlcnMoZGF0YVs1XSwgUExBQ0VIT0xERVIpIDogc291cmNlWzZdO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgYXJnUG9zYCBpZiBhdmFpbGFibGUuXG4gICAgICB2YWx1ZSA9IHNvdXJjZVs3XTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBkYXRhWzddID0gdmFsdWU7XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGBhcnlgIGlmIGl0J3Mgc21hbGxlci5cbiAgICAgIGlmIChzcmNCaXRtYXNrICYgV1JBUF9BUllfRkxBRykge1xuICAgICAgICBkYXRhWzhdID0gZGF0YVs4XSA9PSBudWxsID8gc291cmNlWzhdIDogbmF0aXZlTWluKGRhdGFbOF0sIHNvdXJjZVs4XSk7XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGBhcml0eWAgaWYgb25lIGlzIG5vdCBwcm92aWRlZC5cbiAgICAgIGlmIChkYXRhWzldID09IG51bGwpIHtcbiAgICAgICAgZGF0YVs5XSA9IHNvdXJjZVs5XTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYGZ1bmNgIGFuZCBtZXJnZSBiaXRtYXNrcy5cbiAgICAgIGRhdGFbMF0gPSBzb3VyY2VbMF07XG4gICAgICBkYXRhWzFdID0gbmV3Qml0bWFzaztcblxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlXG4gICAgICogW2BPYmplY3Qua2V5c2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICAgICAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGlmIChvYmplY3QgIT0gbnVsbCkge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgICAgIHJldHVybiBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCB0cmFuc2Zvcm1zIHRoZSByZXN0IGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIHJlc3QgYXJyYXkgdHJhbnNmb3JtLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCB0cmFuc2Zvcm0pIHtcbiAgICAgIHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0ID09PSB1bmRlZmluZWQgPyAoZnVuYy5sZW5ndGggLSAxKSA6IHN0YXJ0LCAwKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KGFyZ3MubGVuZ3RoIC0gc3RhcnQsIDApLFxuICAgICAgICAgICAgYXJyYXkgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYXJyYXlbaW5kZXhdID0gYXJnc1tzdGFydCArIGluZGV4XTtcbiAgICAgICAgfVxuICAgICAgICBpbmRleCA9IC0xO1xuICAgICAgICB2YXIgb3RoZXJBcmdzID0gQXJyYXkoc3RhcnQgKyAxKTtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgICAgIG90aGVyQXJnc1tpbmRleF0gPSBhcmdzW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICBvdGhlckFyZ3Nbc3RhcnRdID0gdHJhbnNmb3JtKGFycmF5KTtcbiAgICAgICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHBhcmVudCB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXRoIFRoZSBwYXRoIHRvIGdldCB0aGUgcGFyZW50IHZhbHVlIG9mLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwYXJlbnQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFyZW50KG9iamVjdCwgcGF0aCkge1xuICAgICAgcmV0dXJuIHBhdGgubGVuZ3RoIDwgMiA/IG9iamVjdCA6IGJhc2VHZXQob2JqZWN0LCBiYXNlU2xpY2UocGF0aCwgMCwgLTEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW9yZGVyIGBhcnJheWAgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgaW5kZXhlcyB3aGVyZSB0aGUgZWxlbWVudCBhdFxuICAgICAqIHRoZSBmaXJzdCBpbmRleCBpcyBhc3NpZ25lZCBhcyB0aGUgZmlyc3QgZWxlbWVudCwgdGhlIGVsZW1lbnQgYXRcbiAgICAgKiB0aGUgc2Vjb25kIGluZGV4IGlzIGFzc2lnbmVkIGFzIHRoZSBzZWNvbmQgZWxlbWVudCwgYW5kIHNvIG9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcmVvcmRlci5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBpbmRleGVzIFRoZSBhcnJhbmdlZCBhcnJheSBpbmRleGVzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlb3JkZXIoYXJyYXksIGluZGV4ZXMpIHtcbiAgICAgIHZhciBhcnJMZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKGluZGV4ZXMubGVuZ3RoLCBhcnJMZW5ndGgpLFxuICAgICAgICAgIG9sZEFycmF5ID0gY29weUFycmF5KGFycmF5KTtcblxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGluZGV4ZXNbbGVuZ3RoXTtcbiAgICAgICAgYXJyYXlbbGVuZ3RoXSA9IGlzSW5kZXgoaW5kZXgsIGFyckxlbmd0aCkgPyBvbGRBcnJheVtpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAsIHVubGVzcyBga2V5YCBpcyBcIl9fcHJvdG9fX1wiIG9yIFwiY29uc3RydWN0b3JcIi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzYWZlR2V0KG9iamVjdCwga2V5KSB7XG4gICAgICBpZiAoa2V5ID09PSAnY29uc3RydWN0b3InICYmIHR5cGVvZiBvYmplY3Rba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChrZXkgPT0gJ19fcHJvdG9fXycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBtZXRhZGF0YSBmb3IgYGZ1bmNgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIElmIHRoaXMgZnVuY3Rpb24gYmVjb21lcyBob3QsIGkuZS4gaXMgaW52b2tlZCBhIGxvdCBpbiBhIHNob3J0XG4gICAgICogcGVyaW9kIG9mIHRpbWUsIGl0IHdpbGwgdHJpcCBpdHMgYnJlYWtlciBhbmQgdHJhbnNpdGlvbiB0byBhbiBpZGVudGl0eVxuICAgICAqIGZ1bmN0aW9uIHRvIGF2b2lkIGdhcmJhZ2UgY29sbGVjdGlvbiBwYXVzZXMgaW4gVjguIFNlZVxuICAgICAqIFtWOCBpc3N1ZSAyMDcwXShodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0yMDcwKVxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFzc29jaWF0ZSBtZXRhZGF0YSB3aXRoLlxuICAgICAqIEBwYXJhbSB7Kn0gZGF0YSBUaGUgbWV0YWRhdGEuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgc2V0RGF0YSA9IHNob3J0T3V0KGJhc2VTZXREYXRhKTtcblxuICAgIC8qKlxuICAgICAqIEEgc2ltcGxlIHdyYXBwZXIgYXJvdW5kIHRoZSBnbG9iYWwgW2BzZXRUaW1lb3V0YF0oaHR0cHM6Ly9tZG4uaW8vc2V0VGltZW91dCkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3YWl0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5IGludm9jYXRpb24uXG4gICAgICogQHJldHVybnMge251bWJlcnxPYmplY3R9IFJldHVybnMgdGhlIHRpbWVyIGlkIG9yIHRpbWVvdXQgb2JqZWN0LlxuICAgICAqL1xuICAgIHZhciBzZXRUaW1lb3V0ID0gY3R4U2V0VGltZW91dCB8fCBmdW5jdGlvbihmdW5jLCB3YWl0KSB7XG4gICAgICByZXR1cm4gcm9vdC5zZXRUaW1lb3V0KGZ1bmMsIHdhaXQpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgZnVuY2AgdG8gcmV0dXJuIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBzZXRUb1N0cmluZyA9IHNob3J0T3V0KGJhc2VTZXRUb1N0cmluZyk7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgd3JhcHBlcmAgdG8gbWltaWMgdGhlIHNvdXJjZSBvZiBgcmVmZXJlbmNlYFxuICAgICAqIHdpdGggd3JhcHBlciBkZXRhaWxzIGluIGEgY29tbWVudCBhdCB0aGUgdG9wIG9mIHRoZSBzb3VyY2UgYm9keS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gd3JhcHBlciBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHJlZmVyZW5jZSBUaGUgcmVmZXJlbmNlIGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGB3cmFwcGVyYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRXcmFwVG9TdHJpbmcod3JhcHBlciwgcmVmZXJlbmNlLCBiaXRtYXNrKSB7XG4gICAgICB2YXIgc291cmNlID0gKHJlZmVyZW5jZSArICcnKTtcbiAgICAgIHJldHVybiBzZXRUb1N0cmluZyh3cmFwcGVyLCBpbnNlcnRXcmFwRGV0YWlscyhzb3VyY2UsIHVwZGF0ZVdyYXBEZXRhaWxzKGdldFdyYXBEZXRhaWxzKHNvdXJjZSksIGJpdG1hc2spKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQnbGwgc2hvcnQgb3V0IGFuZCBpbnZva2UgYGlkZW50aXR5YCBpbnN0ZWFkXG4gICAgICogb2YgYGZ1bmNgIHdoZW4gaXQncyBjYWxsZWQgYEhPVF9DT1VOVGAgb3IgbW9yZSB0aW1lcyBpbiBgSE9UX1NQQU5gXG4gICAgICogbWlsbGlzZWNvbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzaG9ydGFibGUgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICAgICAgdmFyIGNvdW50ID0gMCxcbiAgICAgICAgICBsYXN0Q2FsbGVkID0gMDtcblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc3RhbXAgPSBuYXRpdmVOb3coKSxcbiAgICAgICAgICAgIHJlbWFpbmluZyA9IEhPVF9TUEFOIC0gKHN0YW1wIC0gbGFzdENhbGxlZCk7XG5cbiAgICAgICAgbGFzdENhbGxlZCA9IHN0YW1wO1xuICAgICAgICBpZiAocmVtYWluaW5nID4gMCkge1xuICAgICAgICAgIGlmICgrK2NvdW50ID49IEhPVF9DT1VOVCkge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY291bnQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNodWZmbGVgIHdoaWNoIG11dGF0ZXMgYW5kIHNldHMgdGhlIHNpemUgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNodWZmbGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzaXplPWFycmF5Lmxlbmd0aF0gVGhlIHNpemUgb2YgYGFycmF5YC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzaHVmZmxlU2VsZihhcnJheSwgc2l6ZSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgICAgIHNpemUgPSBzaXplID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiBzaXplO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBzaXplKSB7XG4gICAgICAgIHZhciByYW5kID0gYmFzZVJhbmRvbShpbmRleCwgbGFzdEluZGV4KSxcbiAgICAgICAgICAgIHZhbHVlID0gYXJyYXlbcmFuZF07XG5cbiAgICAgICAgYXJyYXlbcmFuZF0gPSBhcnJheVtpbmRleF07XG4gICAgICAgIGFycmF5W2luZGV4XSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgYXJyYXkubGVuZ3RoID0gc2l6ZTtcbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAgICAgKi9cbiAgICB2YXIgc3RyaW5nVG9QYXRoID0gbWVtb2l6ZUNhcHBlZChmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGlmIChzdHJpbmcuY2hhckNvZGVBdCgwKSA9PT0gNDYgLyogLiAqLykge1xuICAgICAgICByZXN1bHQucHVzaCgnJyk7XG4gICAgICB9XG4gICAgICBzdHJpbmcucmVwbGFjZShyZVByb3BOYW1lLCBmdW5jdGlvbihtYXRjaCwgbnVtYmVyLCBxdW90ZSwgc3ViU3RyaW5nKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHF1b3RlID8gc3ViU3RyaW5nLnJlcGxhY2UocmVFc2NhcGVDaGFyLCAnJDEnKSA6IChudW1iZXIgfHwgbWF0Y2gpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcga2V5IGlmIGl0J3Mgbm90IGEgc3RyaW5nIG9yIHN5bWJvbC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfHN5bWJvbH0gUmV0dXJucyB0aGUga2V5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvS2V5KHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICAgICAgcmV0dXJuIChyZXN1bHQgPT0gJzAnICYmICgxIC8gdmFsdWUpID09IC1JTkZJTklUWSkgPyAnLTAnIDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBmdW5jYCB0byBpdHMgc291cmNlIGNvZGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc291cmNlIGNvZGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9Tb3VyY2UoZnVuYykge1xuICAgICAgaWYgKGZ1bmMgIT0gbnVsbCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBmdW5jVG9TdHJpbmcuY2FsbChmdW5jKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gKGZ1bmMgKyAnJyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICB9XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB3cmFwcGVyIGBkZXRhaWxzYCBiYXNlZCBvbiBgYml0bWFza2AgZmxhZ3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gZGV0YWlscyBUaGUgZGV0YWlscyB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGRldGFpbHNgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVwZGF0ZVdyYXBEZXRhaWxzKGRldGFpbHMsIGJpdG1hc2spIHtcbiAgICAgIGFycmF5RWFjaCh3cmFwRmxhZ3MsIGZ1bmN0aW9uKHBhaXIpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gJ18uJyArIHBhaXJbMF07XG4gICAgICAgIGlmICgoYml0bWFzayAmIHBhaXJbMV0pICYmICFhcnJheUluY2x1ZGVzKGRldGFpbHMsIHZhbHVlKSkge1xuICAgICAgICAgIGRldGFpbHMucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGRldGFpbHMuc29ydCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgd3JhcHBlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSB3cmFwcGVyIFRoZSB3cmFwcGVyIHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB3cmFwcGVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJDbG9uZSh3cmFwcGVyKSB7XG4gICAgICBpZiAod3JhcHBlciBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSB7XG4gICAgICAgIHJldHVybiB3cmFwcGVyLmNsb25lKCk7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IExvZGFzaFdyYXBwZXIod3JhcHBlci5fX3dyYXBwZWRfXywgd3JhcHBlci5fX2NoYWluX18pO1xuICAgICAgcmVzdWx0Ll9fYWN0aW9uc19fID0gY29weUFycmF5KHdyYXBwZXIuX19hY3Rpb25zX18pO1xuICAgICAgcmVzdWx0Ll9faW5kZXhfXyAgPSB3cmFwcGVyLl9faW5kZXhfXztcbiAgICAgIHJlc3VsdC5fX3ZhbHVlc19fID0gd3JhcHBlci5fX3ZhbHVlc19fO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzIHNwbGl0IGludG8gZ3JvdXBzIHRoZSBsZW5ndGggb2YgYHNpemVgLlxuICAgICAqIElmIGBhcnJheWAgY2FuJ3QgYmUgc3BsaXQgZXZlbmx5LCB0aGUgZmluYWwgY2h1bmsgd2lsbCBiZSB0aGUgcmVtYWluaW5nXG4gICAgICogZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NpemU9MV0gVGhlIGxlbmd0aCBvZiBlYWNoIGNodW5rXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjaHVua3MuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2h1bmsoWydhJywgJ2InLCAnYycsICdkJ10sIDIpO1xuICAgICAqIC8vID0+IFtbJ2EnLCAnYiddLCBbJ2MnLCAnZCddXVxuICAgICAqXG4gICAgICogXy5jaHVuayhbJ2EnLCAnYicsICdjJywgJ2QnXSwgMyk7XG4gICAgICogLy8gPT4gW1snYScsICdiJywgJ2MnXSwgWydkJ11dXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2h1bmsoYXJyYXksIHNpemUsIGd1YXJkKSB7XG4gICAgICBpZiAoKGd1YXJkID8gaXNJdGVyYXRlZUNhbGwoYXJyYXksIHNpemUsIGd1YXJkKSA6IHNpemUgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgc2l6ZSA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaXplID0gbmF0aXZlTWF4KHRvSW50ZWdlcihzaXplKSwgMCk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCB8fCBzaXplIDwgMSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShuYXRpdmVDZWlsKGxlbmd0aCAvIHNpemUpKTtcblxuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IGJhc2VTbGljZShhcnJheSwgaW5kZXgsIChpbmRleCArPSBzaXplKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgd2l0aCBhbGwgZmFsc2V5IHZhbHVlcyByZW1vdmVkLiBUaGUgdmFsdWVzIGBmYWxzZWAsIGBudWxsYCxcbiAgICAgKiBgMGAsIGBcIlwiYCwgYHVuZGVmaW5lZGAsIGFuZCBgTmFOYCBhcmUgZmFsc2V5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbXBhY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNvbXBhY3QoWzAsIDEsIGZhbHNlLCAyLCAnJywgM10pO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBhY3QoYXJyYXkpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGFycmF5IGNvbmNhdGVuYXRpbmcgYGFycmF5YCB3aXRoIGFueSBhZGRpdGlvbmFsIGFycmF5c1xuICAgICAqIGFuZC9vciB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29uY2F0ZW5hdGUuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNvbmNhdGVuYXRlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGNvbmNhdGVuYXRlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzFdO1xuICAgICAqIHZhciBvdGhlciA9IF8uY29uY2F0KGFycmF5LCAyLCBbM10sIFtbNF1dKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG90aGVyKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgMywgWzRdXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmNhdCgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGFyZ3MgPSBBcnJheShsZW5ndGggLSAxKSxcbiAgICAgICAgICBhcnJheSA9IGFyZ3VtZW50c1swXSxcbiAgICAgICAgICBpbmRleCA9IGxlbmd0aDtcblxuICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgYXJnc1tpbmRleCAtIDFdID0gYXJndW1lbnRzW2luZGV4XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheVB1c2goaXNBcnJheShhcnJheSkgPyBjb3B5QXJyYXkoYXJyYXkpIDogW2FycmF5XSwgYmFzZUZsYXR0ZW4oYXJncywgMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgYGFycmF5YCB2YWx1ZXMgbm90IGluY2x1ZGVkIGluIHRoZSBvdGhlciBnaXZlbiBhcnJheXNcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxBbGxgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAc2VlIF8ud2l0aG91dCwgXy54b3JcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kaWZmZXJlbmNlKFsyLCAxXSwgWzIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKi9cbiAgICB2YXIgZGlmZmVyZW5jZSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICAgICAgPyBiYXNlRGlmZmVyZW5jZShhcnJheSwgYmFzZUZsYXR0ZW4odmFsdWVzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSkpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmRpZmZlcmVuY2VgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIGFuZCBgdmFsdWVzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uXG4gICAgICogYnkgd2hpY2ggdGhleSdyZSBjb21wYXJlZC4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OlxuICAgICAqICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxBbGxCeWAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kaWZmZXJlbmNlQnkoWzIuMSwgMS4yXSwgWzIuMywgMy40XSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzEuMl1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZGlmZmVyZW5jZUJ5KFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgW3sgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIHZhciBkaWZmZXJlbmNlQnkgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBsYXN0KHZhbHVlcyk7XG4gICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoaXRlcmF0ZWUpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgICAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCBiYXNlRmxhdHRlbih2YWx1ZXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kaWZmZXJlbmNlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgIHRvIGB2YWx1ZXNgLiBUaGUgb3JkZXIgYW5kXG4gICAgICogcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGNvbXBhcmF0b3JcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucHVsbEFsbFdpdGhgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dO1xuICAgICAqXG4gICAgICogXy5kaWZmZXJlbmNlV2l0aChvYmplY3RzLCBbeyAneCc6IDEsICd5JzogMiB9XSwgXy5pc0VxdWFsKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIsICd5JzogMSB9XVxuICAgICAqL1xuICAgIHZhciBkaWZmZXJlbmNlV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdCh2YWx1ZXMpO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGNvbXBhcmF0b3IpKSB7XG4gICAgICAgIGNvbXBhcmF0b3IgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QoYXJyYXkpXG4gICAgICAgID8gYmFzZURpZmZlcmVuY2UoYXJyYXksIGJhc2VGbGF0dGVuKHZhbHVlcywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyBkcm9wcGVkIGZyb20gdGhlIGJlZ2lubmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjUuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBkcm9wLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRyb3AoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKlxuICAgICAqIF8uZHJvcChbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFszXVxuICAgICAqXG4gICAgICogXy5kcm9wKFsxLCAyLCAzXSwgNSk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKlxuICAgICAqIF8uZHJvcChbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3AoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgbiA8IDAgPyAwIDogbiwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyBkcm9wcGVkIGZyb20gdGhlIGVuZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBkcm9wLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogXy5kcm9wUmlnaHQoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSwgNSk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZHJvcFJpZ2h0KGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIG4gPSBsZW5ndGggLSBuO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgMCwgbiA8IDAgPyAwIDogbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgZXhjbHVkaW5nIGVsZW1lbnRzIGRyb3BwZWQgZnJvbSB0aGUgZW5kLlxuICAgICAqIEVsZW1lbnRzIGFyZSBkcm9wcGVkIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BSaWdodFdoaWxlKHVzZXJzLCB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wUmlnaHRXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJywgJ3BlYmJsZXMnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3BSaWdodFdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgdHJ1ZSwgdHJ1ZSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCBleGNsdWRpbmcgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBiZWdpbm5pbmcuXG4gICAgICogRWxlbWVudHMgYXJlIGRyb3BwZWQgdW50aWwgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkuIFRoZSBwcmVkaWNhdGUgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BXaGlsZSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZHJvcFdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgdHJ1ZSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaWxscyBlbGVtZW50cyBvZiBgYXJyYXlgIHdpdGggYHZhbHVlYCBmcm9tIGBzdGFydGAgdXAgdG8sIGJ1dCBub3RcbiAgICAgKiBpbmNsdWRpbmcsIGBlbmRgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmaWxsLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGZpbGwgYGFycmF5YCB3aXRoLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqXG4gICAgICogXy5maWxsKGFycmF5LCAnYScpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYScsICdhJ11cbiAgICAgKlxuICAgICAqIF8uZmlsbChBcnJheSgzKSwgMik7XG4gICAgICogLy8gPT4gWzIsIDIsIDJdXG4gICAgICpcbiAgICAgKiBfLmZpbGwoWzQsIDYsIDgsIDEwXSwgJyonLCAxLCAzKTtcbiAgICAgKiAvLyA9PiBbNCwgJyonLCAnKicsIDEwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbGwoYXJyYXksIHZhbHVlLCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoc3RhcnQgJiYgdHlwZW9mIHN0YXJ0ICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQpKSB7XG4gICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgICAgZW5kID0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VGaWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RcbiAgICAgKiBlbGVtZW50IGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciBpbnN0ZWFkIG9mIHRoZSBlbGVtZW50IGl0c2VsZi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZvdW5kIGVsZW1lbnQsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maW5kSW5kZXgodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlciA9PSAnYmFybmV5JzsgfSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgeyAndXNlcic6ICdmcmVkJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEluZGV4KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IGZyb21JbmRleCA9PSBudWxsID8gMCA6IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICBpbmRleCA9IG5hdGl2ZU1heChsZW5ndGggKyBpbmRleCwgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUZpbmRJbmRleChhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgaW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZEluZGV4YCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzXG4gICAgICogb2YgYGNvbGxlY3Rpb25gIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD1hcnJheS5sZW5ndGgtMV0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmb3VuZCBlbGVtZW50LCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyID09ICdwZWJibGVzJzsgfSk7XG4gICAgICogLy8gPT4gMlxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kTGFzdEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gbGVuZ3RoIC0gMTtcbiAgICAgIGlmIChmcm9tSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpbmRleCA9IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICAgICAgICBpbmRleCA9IGZyb21JbmRleCA8IDBcbiAgICAgICAgICA/IG5hdGl2ZU1heChsZW5ndGggKyBpbmRleCwgMClcbiAgICAgICAgICA6IG5hdGl2ZU1pbihpbmRleCwgbGVuZ3RoIC0gMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUZpbmRJbmRleChhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgaW5kZXgsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZsYXR0ZW5zIGBhcnJheWAgYSBzaW5nbGUgbGV2ZWwgZGVlcC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mbGF0dGVuKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gICAgICogLy8gPT4gWzEsIDIsIFszLCBbNF1dLCA1XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXR0ZW4oYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlRmxhdHRlbihhcnJheSwgMSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWN1cnNpdmVseSBmbGF0dGVucyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZsYXR0ZW5EZWVwKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIDQsIDVdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdHRlbkRlZXAoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlRmxhdHRlbihhcnJheSwgSU5GSU5JVFkpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjdXJzaXZlbHkgZmxhdHRlbiBgYXJyYXlgIHVwIHRvIGBkZXB0aGAgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC40LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RlcHRoPTFdIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCBbMiwgWzMsIFs0XV0sIDVdXTtcbiAgICAgKlxuICAgICAqIF8uZmxhdHRlbkRlcHRoKGFycmF5LCAxKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgWzMsIFs0XV0sIDVdXG4gICAgICpcbiAgICAgKiBfLmZsYXR0ZW5EZXB0aChhcnJheSwgMik7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIFs0XSwgNV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0dGVuRGVwdGgoYXJyYXksIGRlcHRoKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBkZXB0aCA9IGRlcHRoID09PSB1bmRlZmluZWQgPyAxIDogdG9JbnRlZ2VyKGRlcHRoKTtcbiAgICAgIHJldHVybiBiYXNlRmxhdHRlbihhcnJheSwgZGVwdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBpbnZlcnNlIG9mIGBfLnRvUGFpcnNgOyB0aGlzIG1ldGhvZCByZXR1cm5zIGFuIG9iamVjdCBjb21wb3NlZFxuICAgICAqIGZyb20ga2V5LXZhbHVlIGBwYWlyc2AuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYWlycyBUaGUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZnJvbVBhaXJzKFtbJ2EnLCAxXSwgWydiJywgMl1dKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmcm9tUGFpcnMocGFpcnMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhaXJzID09IG51bGwgPyAwIDogcGFpcnMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgcGFpciA9IHBhaXJzW2luZGV4XTtcbiAgICAgICAgcmVzdWx0W3BhaXJbMF1dID0gcGFpclsxXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGFsaWFzIGZpcnN0XG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaGVhZChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIF8uaGVhZChbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGVhZChhcnJheSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYXJyYXlbMF0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYHZhbHVlYCBpcyBmb3VuZCBpbiBgYXJyYXlgXG4gICAgICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuIElmIGBmcm9tSW5kZXhgIGlzIG5lZ2F0aXZlLCBpdCdzIHVzZWQgYXMgdGhlXG4gICAgICogb2Zmc2V0IGZyb20gdGhlIGVuZCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbmRleE9mKFsxLCAyLCAxLCAyXSwgMik7XG4gICAgICogLy8gPT4gMVxuICAgICAqXG4gICAgICogLy8gU2VhcmNoIGZyb20gdGhlIGBmcm9tSW5kZXhgLlxuICAgICAqIF8uaW5kZXhPZihbMSwgMiwgMSwgMl0sIDIsIDIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgaW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgaW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIGJ1dCB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmluaXRpYWwoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0aWFsKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZVNsaWNlKGFycmF5LCAwLCAtMSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gYWxsIGdpdmVuIGFycmF5c1xuICAgICAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmVcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmludGVyc2VjdGlvbihbMiwgMV0sIFsyLCAzXSk7XG4gICAgICogLy8gPT4gWzJdXG4gICAgICovXG4gICAgdmFyIGludGVyc2VjdGlvbiA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG4gICAgICByZXR1cm4gKG1hcHBlZC5sZW5ndGggJiYgbWFwcGVkWzBdID09PSBhcnJheXNbMF0pXG4gICAgICAgID8gYmFzZUludGVyc2VjdGlvbihtYXBwZWQpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludGVyc2VjdGlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGVhY2ggYGFycmF5c2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvblxuICAgICAqIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZVxuICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmludGVyc2VjdGlvbkJ5KFsyLjEsIDEuMl0sIFsyLjMsIDMuNF0sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsyLjFdXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmludGVyc2VjdGlvbkJ5KFt7ICd4JzogMSB9XSwgW3sgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSB9XVxuICAgICAqL1xuICAgIHZhciBpbnRlcnNlY3Rpb25CeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGl0ZXJhdGVlID0gbGFzdChhcnJheXMpLFxuICAgICAgICAgIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG5cbiAgICAgIGlmIChpdGVyYXRlZSA9PT0gbGFzdChtYXBwZWQpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFwcGVkLnBvcCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChtYXBwZWQubGVuZ3RoICYmIG1hcHBlZFswXSA9PT0gYXJyYXlzWzBdKVxuICAgICAgICA/IGJhc2VJbnRlcnNlY3Rpb24obWFwcGVkLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludGVyc2VjdGlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5c2AuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlc1xuICAgICAqIG9mIHJlc3VsdCB2YWx1ZXMgYXJlIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgY29tcGFyYXRvciBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGludGVyc2VjdGluZyB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAgICAgKiB2YXIgb3RoZXJzID0gW3sgJ3gnOiAxLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8uaW50ZXJzZWN0aW9uV2l0aChvYmplY3RzLCBvdGhlcnMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgaW50ZXJzZWN0aW9uV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyksXG4gICAgICAgICAgbWFwcGVkID0gYXJyYXlNYXAoYXJyYXlzLCBjYXN0QXJyYXlMaWtlT2JqZWN0KTtcblxuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKGNvbXBhcmF0b3IpIHtcbiAgICAgICAgbWFwcGVkLnBvcCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChtYXBwZWQubGVuZ3RoICYmIG1hcHBlZFswXSA9PT0gYXJyYXlzWzBdKVxuICAgICAgICA/IGJhc2VJbnRlcnNlY3Rpb24obWFwcGVkLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBhbGwgZWxlbWVudHMgaW4gYGFycmF5YCBpbnRvIGEgc3RyaW5nIHNlcGFyYXRlZCBieSBgc2VwYXJhdG9yYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb252ZXJ0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc2VwYXJhdG9yPScsJ10gVGhlIGVsZW1lbnQgc2VwYXJhdG9yLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGpvaW5lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uam9pbihbJ2EnLCAnYicsICdjJ10sICd+Jyk7XG4gICAgICogLy8gPT4gJ2F+Yn5jJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGpvaW4oYXJyYXksIHNlcGFyYXRvcikge1xuICAgICAgcmV0dXJuIGFycmF5ID09IG51bGwgPyAnJyA6IG5hdGl2ZUpvaW4uY2FsbChhcnJheSwgc2VwYXJhdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubGFzdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXN0KGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYXJyYXlbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbmRleE9mYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYGFycmF5YCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PWFycmF5Lmxlbmd0aC0xXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sYXN0SW5kZXhPZihbMSwgMiwgMSwgMl0sIDIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIC8vIFNlYXJjaCBmcm9tIHRoZSBgZnJvbUluZGV4YC5cbiAgICAgKiBfLmxhc3RJbmRleE9mKFsxLCAyLCAxLCAyXSwgMiwgMik7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhc3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBsZW5ndGg7XG4gICAgICBpZiAoZnJvbUluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaW5kZXggPSB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgICAgaW5kZXggPSBpbmRleCA8IDAgPyBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApIDogbmF0aXZlTWluKGluZGV4LCBsZW5ndGggLSAxKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICAgICAgPyBzdHJpY3RMYXN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGluZGV4KVxuICAgICAgICA6IGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJc05hTiwgaW5kZXgsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGVsZW1lbnQgYXQgaW5kZXggYG5gIG9mIGBhcnJheWAuIElmIGBuYCBpcyBuZWdhdGl2ZSwgdGhlIG50aFxuICAgICAqIGVsZW1lbnQgZnJvbSB0aGUgZW5kIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MF0gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IHRvIHJldHVybi5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbnRoIGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdkJ107XG4gICAgICpcbiAgICAgKiBfLm50aChhcnJheSwgMSk7XG4gICAgICogLy8gPT4gJ2InXG4gICAgICpcbiAgICAgKiBfLm50aChhcnJheSwgLTIpO1xuICAgICAqIC8vID0+ICdjJztcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBudGgoYXJyYXksIG4pIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VOdGgoYXJyYXksIHRvSW50ZWdlcihuKSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwgZ2l2ZW4gdmFsdWVzIGZyb20gYGFycmF5YCB1c2luZ1xuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy53aXRob3V0YCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLiBVc2UgYF8ucmVtb3ZlYFxuICAgICAqIHRvIHJlbW92ZSBlbGVtZW50cyBmcm9tIGFuIGFycmF5IGJ5IHByZWRpY2F0ZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdhJywgJ2InLCAnYyddO1xuICAgICAqXG4gICAgICogXy5wdWxsKGFycmF5LCAnYScsICdjJyk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsnYicsICdiJ11cbiAgICAgKi9cbiAgICB2YXIgcHVsbCA9IGJhc2VSZXN0KHB1bGxBbGwpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wdWxsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGFuIGFycmF5IG9mIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmRpZmZlcmVuY2VgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdhJywgJ2InLCAnYyddO1xuICAgICAqXG4gICAgICogXy5wdWxsQWxsKGFycmF5LCBbJ2EnLCAnYyddKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWydiJywgJ2InXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHB1bGxBbGwoYXJyYXksIHZhbHVlcykge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGggJiYgdmFsdWVzICYmIHZhbHVlcy5sZW5ndGgpXG4gICAgICAgID8gYmFzZVB1bGxBbGwoYXJyYXksIHZhbHVlcylcbiAgICAgICAgOiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnB1bGxBbGxgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIGFuZCBgdmFsdWVzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uXG4gICAgICogYnkgd2hpY2ggdGhleSdyZSBjb21wYXJlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmRpZmZlcmVuY2VCeWAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW3sgJ3gnOiAxIH0sIHsgJ3gnOiAyIH0sIHsgJ3gnOiAzIH0sIHsgJ3gnOiAxIH1dO1xuICAgICAqXG4gICAgICogXy5wdWxsQWxsQnkoYXJyYXksIFt7ICd4JzogMSB9LCB7ICd4JzogMyB9XSwgJ3gnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyIH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gcHVsbEFsbEJ5KGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCAmJiB2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aClcbiAgICAgICAgPyBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgICAgIDogYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wdWxsQWxsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgIHRvIGB2YWx1ZXNgLiBUaGUgY29tcGFyYXRvciBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5kaWZmZXJlbmNlV2l0aGAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjYuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMywgJ3knOiA0IH0sIHsgJ3gnOiA1LCAneSc6IDYgfV07XG4gICAgICpcbiAgICAgKiBfLnB1bGxBbGxXaXRoKGFycmF5LCBbeyAneCc6IDMsICd5JzogNCB9XSwgXy5pc0VxdWFsKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDUsICd5JzogNiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHB1bGxBbGxXaXRoKGFycmF5LCB2YWx1ZXMsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoICYmIHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoKVxuICAgICAgICA/IGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMsIHVuZGVmaW5lZCwgY29tcGFyYXRvcilcbiAgICAgICAgOiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGVsZW1lbnRzIGZyb20gYGFycmF5YCBjb3JyZXNwb25kaW5nIHRvIGBpbmRleGVzYCBhbmQgcmV0dXJucyBhblxuICAgICAqIGFycmF5IG9mIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmF0YCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0gey4uLihudW1iZXJ8bnVtYmVyW10pfSBbaW5kZXhlc10gVGhlIGluZGV4ZXMgb2YgZWxlbWVudHMgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnZCddO1xuICAgICAqIHZhciBwdWxsZWQgPSBfLnB1bGxBdChhcnJheSwgWzEsIDNdKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYyddXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhwdWxsZWQpO1xuICAgICAqIC8vID0+IFsnYicsICdkJ11cbiAgICAgKi9cbiAgICB2YXIgcHVsbEF0ID0gZmxhdFJlc3QoZnVuY3Rpb24oYXJyYXksIGluZGV4ZXMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBiYXNlQXQoYXJyYXksIGluZGV4ZXMpO1xuXG4gICAgICBiYXNlUHVsbEF0KGFycmF5LCBhcnJheU1hcChpbmRleGVzLCBmdW5jdGlvbihpbmRleCkge1xuICAgICAgICByZXR1cm4gaXNJbmRleChpbmRleCwgbGVuZ3RoKSA/ICtpbmRleCA6IGluZGV4O1xuICAgICAgfSkuc29ydChjb21wYXJlQXNjZW5kaW5nKSk7XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIGBhcnJheWAgdGhhdCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3JcbiAgICAgKiBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiB0aGUgcmVtb3ZlZCBlbGVtZW50cy4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uZmlsdGVyYCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLiBVc2UgYF8ucHVsbGBcbiAgICAgKiB0byBwdWxsIGVsZW1lbnRzIGZyb20gYW4gYXJyYXkgYnkgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgMywgNF07XG4gICAgICogdmFyIGV2ZW5zID0gXy5yZW1vdmUoYXJyYXksIGZ1bmN0aW9uKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICUgMiA9PSAwO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAzXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coZXZlbnMpO1xuICAgICAqIC8vID0+IFsyLCA0XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlbW92ZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpbmRleGVzID0gW10sXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBwcmVkaWNhdGUgPSBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICAgIGluZGV4ZXMucHVzaChpbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJhc2VQdWxsQXQoYXJyYXksIGluZGV4ZXMpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnNlcyBgYXJyYXlgIHNvIHRoYXQgdGhlIGZpcnN0IGVsZW1lbnQgYmVjb21lcyB0aGUgbGFzdCwgdGhlIHNlY29uZFxuICAgICAqIGVsZW1lbnQgYmVjb21lcyB0aGUgc2Vjb25kIHRvIGxhc3QsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAgYW5kIGlzIGJhc2VkIG9uXG4gICAgICogW2BBcnJheSNyZXZlcnNlYF0oaHR0cHM6Ly9tZG4uaW8vQXJyYXkvcmV2ZXJzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgM107XG4gICAgICpcbiAgICAgKiBfLnJldmVyc2UoYXJyYXkpO1xuICAgICAqIC8vID0+IFszLCAyLCAxXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFszLCAyLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJldmVyc2UoYXJyYXkpIHtcbiAgICAgIHJldHVybiBhcnJheSA9PSBudWxsID8gYXJyYXkgOiBuYXRpdmVSZXZlcnNlLmNhbGwoYXJyYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIGZyb20gYHN0YXJ0YCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIHVzZWQgaW5zdGVhZCBvZlxuICAgICAqIFtgQXJyYXkjc2xpY2VgXShodHRwczovL21kbi5pby9BcnJheS9zbGljZSkgdG8gZW5zdXJlIGRlbnNlIGFycmF5cyBhcmVcbiAgICAgKiByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzbGljZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNsaWNlKGFycmF5LCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoZW5kICYmIHR5cGVvZiBlbmQgIT0gJ251bWJlcicgJiYgaXNJdGVyYXRlZUNhbGwoYXJyYXksIHN0YXJ0LCBlbmQpKSB7XG4gICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgICAgZW5kID0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHN0YXJ0ID0gc3RhcnQgPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoc3RhcnQpO1xuICAgICAgICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IHRvSW50ZWdlcihlbmQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlcyBhIGJpbmFyeSBzZWFyY2ggdG8gZGV0ZXJtaW5lIHRoZSBsb3dlc3QgaW5kZXggYXQgd2hpY2ggYHZhbHVlYFxuICAgICAqIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGBhcnJheWAgaW4gb3JkZXIgdG8gbWFpbnRhaW4gaXRzIHNvcnQgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZEluZGV4KFszMCwgNTBdLCA0MCk7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydGVkSW5kZXhgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgZm9yIGB2YWx1ZWAgYW5kIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIHRvIGNvbXB1dGUgdGhlaXJcbiAgICAgKiBzb3J0IHJhbmtpbmcuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiA0IH0sIHsgJ3gnOiA1IH1dO1xuICAgICAqXG4gICAgICogXy5zb3J0ZWRJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ueDsgfSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb3J0ZWRJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sICd4Jyk7XG4gICAgICogLy8gPT4gMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IHBlcmZvcm1zIGEgYmluYXJ5XG4gICAgICogc2VhcmNoIG9uIGEgc29ydGVkIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkSW5kZXhPZihbNCwgNSwgNSwgNSwgNl0sIDUpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRJbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCkge1xuICAgICAgICB2YXIgaW5kZXggPSBiYXNlU29ydGVkSW5kZXgoYXJyYXksIHZhbHVlKTtcbiAgICAgICAgaWYgKGluZGV4IDwgbGVuZ3RoICYmIGVxKGFycmF5W2luZGV4XSwgdmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zb3J0ZWRJbmRleGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgaGlnaGVzdFxuICAgICAqIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkIGludG8gYGFycmF5YCBpbiBvcmRlciB0b1xuICAgICAqIG1haW50YWluIGl0cyBzb3J0IG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRMYXN0SW5kZXgoWzQsIDUsIDUsIDUsIDZdLCA1KTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkTGFzdEluZGV4KGFycmF5LCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydGVkTGFzdEluZGV4YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIGZvciBgdmFsdWVgIGFuZCBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCB0byBjb21wdXRlIHRoZWlyXG4gICAgICogc29ydCByYW5raW5nLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogNCB9LCB7ICd4JzogNSB9XTtcbiAgICAgKlxuICAgICAqIF8uc29ydGVkTGFzdEluZGV4Qnkob2JqZWN0cywgeyAneCc6IDQgfSwgZnVuY3Rpb24obykgeyByZXR1cm4gby54OyB9KTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvcnRlZExhc3RJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sICd4Jyk7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZExhc3RJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXhCeShhcnJheSwgdmFsdWUsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5sYXN0SW5kZXhPZmAgZXhjZXB0IHRoYXQgaXQgcGVyZm9ybXMgYSBiaW5hcnlcbiAgICAgKiBzZWFyY2ggb24gYSBzb3J0ZWQgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRMYXN0SW5kZXhPZihbNCwgNSwgNSwgNSwgNl0sIDUpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRMYXN0SW5kZXhPZihhcnJheSwgdmFsdWUpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGgpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSwgdHJ1ZSkgLSAxO1xuICAgICAgICBpZiAoZXEoYXJyYXlbaW5kZXhdLCB2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFgIGV4Y2VwdCB0aGF0IGl0J3MgZGVzaWduZWQgYW5kIG9wdGltaXplZFxuICAgICAqIGZvciBzb3J0ZWQgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkVW5pcShbMSwgMSwgMl0pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZFVuaXEoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTb3J0ZWRVbmlxKGFycmF5KVxuICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcUJ5YCBleGNlcHQgdGhhdCBpdCdzIGRlc2lnbmVkIGFuZCBvcHRpbWl6ZWRcbiAgICAgKiBmb3Igc29ydGVkIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkVW5pcUJ5KFsxLjEsIDEuMiwgMi4zLCAyLjRdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiBbMS4xLCAyLjNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkVW5pcUJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVNvcnRlZFVuaXEoYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBidXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGFpbChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRhaWwoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlU2xpY2UoYXJyYXksIDEsIGxlbmd0aCkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyB0YWtlbiBmcm9tIHRoZSBiZWdpbm5pbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gdGFrZS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50YWtlKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICpcbiAgICAgKiBfLnRha2UoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIF8udGFrZShbMSwgMiwgM10sIDUpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogXy50YWtlKFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWtlKGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgMCwgbiA8IDAgPyAwIDogbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgZW5kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHRha2UuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzNdXG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFsyLCAzXVxuICAgICAqXG4gICAgICogXy50YWtlUmlnaHQoWzEsIDIsIDNdLCA1KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWtlUmlnaHQoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgbiA9IGxlbmd0aCAtIG47XG4gICAgICByZXR1cm4gYmFzZVNsaWNlKGFycmF5LCBuIDwgMCA/IDAgOiBuLCBsZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgZW5kLiBFbGVtZW50cyBhcmVcbiAgICAgKiB0YWtlbiB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGhcbiAgICAgKiB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodFdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlUmlnaHRXaGlsZSh1c2VycywgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlUmlnaHRXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRha2VSaWdodFdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgZmFsc2UsIHRydWUpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBlbGVtZW50cyB0YWtlbiBmcm9tIHRoZSBiZWdpbm5pbmcuIEVsZW1lbnRzXG4gICAgICogYXJlIHRha2VuIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aFxuICAgICAqIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8udGFrZVdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVdoaWxlKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFrZVdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMsIGluIG9yZGVyLCBmcm9tIGFsbCBnaXZlbiBhcnJheXMgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21iaW5lZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pb24oWzJdLCBbMSwgMl0pO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIHZhciB1bmlvbiA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBlYWNoIGBhcnJheXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnlcbiAgICAgKiB3aGljaCB1bmlxdWVuZXNzIGlzIGNvbXB1dGVkLiBSZXN1bHQgdmFsdWVzIGFyZSBjaG9zZW4gZnJvbSB0aGUgZmlyc3RcbiAgICAgKiBhcnJheSBpbiB3aGljaCB0aGUgdmFsdWUgb2NjdXJzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21iaW5lZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pb25CeShbMi4xXSwgWzEuMiwgMi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzIuMSwgMS4yXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy51bmlvbkJ5KFt7ICd4JzogMSB9XSwgW3sgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSB9LCB7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIHZhciB1bmlvbkJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBsYXN0KGFycmF5cyk7XG4gICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoaXRlcmF0ZWUpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5c2AuIFJlc3VsdCB2YWx1ZXMgYXJlIGNob3NlbiBmcm9tXG4gICAgICogdGhlIGZpcnN0IGFycmF5IGluIHdoaWNoIHRoZSB2YWx1ZSBvY2N1cnMuIFRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICogdmFyIG90aGVycyA9IFt7ICd4JzogMSwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLnVuaW9uV2l0aChvYmplY3RzLCBvdGhlcnMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAxIH1dXG4gICAgICovXG4gICAgdmFyIHVuaW9uV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyk7XG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZVVuaXEoYmFzZUZsYXR0ZW4oYXJyYXlzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSksIHVuZGVmaW5lZCwgY29tcGFyYXRvcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZHVwbGljYXRlLWZyZWUgdmVyc2lvbiBvZiBhbiBhcnJheSwgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucywgaW4gd2hpY2ggb25seSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBlYWNoIGVsZW1lbnRcbiAgICAgKiBpcyBrZXB0LiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyXG4gICAgICogaW4gdGhlIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pcShbMiwgMSwgMl0pO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXEoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VVbmlxKGFycmF5KSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IGluIGBhcnJheWAgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvbiBieSB3aGljaFxuICAgICAqIHVuaXF1ZW5lc3MgaXMgY29tcHV0ZWQuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlXG4gICAgICogb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OlxuICAgICAqICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pcUJ5KFsyLjEsIDEuMiwgMi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzIuMSwgMS4yXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy51bmlxQnkoW3sgJ3gnOiAxIH0sIHsgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSB9LCB7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXFCeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VVbmlxKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlxYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpc1xuICAgICAqIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5LlRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLnVuaXFXaXRoKG9iamVjdHMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXFXaXRoKGFycmF5LCBjb21wYXJhdG9yKSB7XG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uemlwYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGFuIGFycmF5IG9mIGdyb3VwZWRcbiAgICAgKiBlbGVtZW50cyBhbmQgY3JlYXRlcyBhbiBhcnJheSByZWdyb3VwaW5nIHRoZSBlbGVtZW50cyB0byB0aGVpciBwcmUtemlwXG4gICAgICogY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjIuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgemlwcGVkID0gXy56aXAoWydhJywgJ2InXSwgWzEsIDJdLCBbdHJ1ZSwgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMSwgdHJ1ZV0sIFsnYicsIDIsIGZhbHNlXV1cbiAgICAgKlxuICAgICAqIF8udW56aXAoemlwcGVkKTtcbiAgICAgKiAvLyA9PiBbWydhJywgJ2InXSwgWzEsIDJdLCBbdHJ1ZSwgZmFsc2VdXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuemlwKGFycmF5KSB7XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSAwO1xuICAgICAgYXJyYXkgPSBhcnJheUZpbHRlcihhcnJheSwgZnVuY3Rpb24oZ3JvdXApIHtcbiAgICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGdyb3VwKSkge1xuICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChncm91cC5sZW5ndGgsIGxlbmd0aCk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGJhc2VUaW1lcyhsZW5ndGgsIGZ1bmN0aW9uKGluZGV4KSB7XG4gICAgICAgIHJldHVybiBhcnJheU1hcChhcnJheSwgYmFzZVByb3BlcnR5KGluZGV4KSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuemlwYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgdG8gc3BlY2lmeVxuICAgICAqIGhvdyByZWdyb3VwZWQgdmFsdWVzIHNob3VsZCBiZSBjb21iaW5lZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aGVcbiAgICAgKiBlbGVtZW50cyBvZiBlYWNoIGdyb3VwOiAoLi4uZ3JvdXApLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIHRvIGNvbWJpbmVcbiAgICAgKiAgcmVncm91cGVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZWdyb3VwZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB6aXBwZWQgPSBfLnppcChbMSwgMl0sIFsxMCwgMjBdLCBbMTAwLCAyMDBdKTtcbiAgICAgKiAvLyA9PiBbWzEsIDEwLCAxMDBdLCBbMiwgMjAsIDIwMF1dXG4gICAgICpcbiAgICAgKiBfLnVuemlwV2l0aCh6aXBwZWQsIF8uYWRkKTtcbiAgICAgKiAvLyA9PiBbMywgMzAsIDMwMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bnppcFdpdGgoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSB1bnppcChhcnJheSk7XG4gICAgICBpZiAoaXRlcmF0ZWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5TWFwKHJlc3VsdCwgZnVuY3Rpb24oZ3JvdXApIHtcbiAgICAgICAgcmV0dXJuIGFwcGx5KGl0ZXJhdGVlLCB1bmRlZmluZWQsIGdyb3VwKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgZXhjbHVkaW5nIGFsbCBnaXZlbiB2YWx1ZXMgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucHVsbGAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0gey4uLip9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQHNlZSBfLmRpZmZlcmVuY2UsIF8ueG9yXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ud2l0aG91dChbMiwgMSwgMiwgM10sIDEsIDIpO1xuICAgICAqIC8vID0+IFszXVxuICAgICAqL1xuICAgIHZhciB3aXRob3V0ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXksIHZhbHVlcykge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgICAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCB2YWx1ZXMpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMgdGhhdCBpcyB0aGVcbiAgICAgKiBbc3ltbWV0cmljIGRpZmZlcmVuY2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N5bW1ldHJpY19kaWZmZXJlbmNlKVxuICAgICAqIG9mIHRoZSBnaXZlbiBhcnJheXMuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlIG9yZGVyXG4gICAgICogdGhleSBvY2N1ciBpbiB0aGUgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAc2VlIF8uZGlmZmVyZW5jZSwgXy53aXRob3V0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ueG9yKFsyLCAxXSwgWzIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgM11cbiAgICAgKi9cbiAgICB2YXIgeG9yID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICByZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsIGlzQXJyYXlMaWtlT2JqZWN0KSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnhvcmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGVhY2ggYGFycmF5c2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvbiBieVxuICAgICAqIHdoaWNoIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWRcbiAgICAgKiBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXlzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZVxuICAgICAqIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ueG9yQnkoWzIuMSwgMS4yXSwgWzIuMywgMy40XSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzEuMiwgMy40XVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy54b3JCeShbeyAneCc6IDEgfV0sIFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgeG9yQnkgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBpdGVyYXRlZSA9IGxhc3QoYXJyYXlzKTtcbiAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChpdGVyYXRlZSkpIHtcbiAgICAgICAgaXRlcmF0ZWUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsIGlzQXJyYXlMaWtlT2JqZWN0KSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ueG9yYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlzYC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXNcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIHRoZSBhcnJheXMuIFRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICogdmFyIG90aGVycyA9IFt7ICd4JzogMSwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLnhvcldpdGgob2JqZWN0cywgb3RoZXJzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDEgfV1cbiAgICAgKi9cbiAgICB2YXIgeG9yV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyk7XG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsIGlzQXJyYXlMaWtlT2JqZWN0KSwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cywgdGhlIGZpcnN0IG9mIHdoaWNoIGNvbnRhaW5zIHRoZVxuICAgICAqIGZpcnN0IGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBhcnJheXMsIHRoZSBzZWNvbmQgb2Ygd2hpY2ggY29udGFpbnMgdGhlXG4gICAgICogc2Vjb25kIGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBhcnJheXMsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcChbJ2EnLCAnYiddLCBbMSwgMl0sIFt0cnVlLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IFtbJ2EnLCAxLCB0cnVlXSwgWydiJywgMiwgZmFsc2VdXVxuICAgICAqL1xuICAgIHZhciB6aXAgPSBiYXNlUmVzdCh1bnppcCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZyb21QYWlyc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyB0d28gYXJyYXlzLFxuICAgICAqIG9uZSBvZiBwcm9wZXJ0eSBpZGVudGlmaWVycyBhbmQgb25lIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gW3Byb3BzPVtdXSBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlcz1bXV0gVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcE9iamVjdChbJ2EnLCAnYiddLCBbMSwgMl0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHppcE9iamVjdChwcm9wcywgdmFsdWVzKSB7XG4gICAgICByZXR1cm4gYmFzZVppcE9iamVjdChwcm9wcyB8fCBbXSwgdmFsdWVzIHx8IFtdLCBhc3NpZ25WYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy56aXBPYmplY3RgIGV4Y2VwdCB0aGF0IGl0IHN1cHBvcnRzIHByb3BlcnR5IHBhdGhzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gW3Byb3BzPVtdXSBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlcz1bXV0gVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcE9iamVjdERlZXAoWydhLmJbMF0uYycsICdhLmJbMV0uZCddLCBbMSwgMl0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiB7ICdiJzogW3sgJ2MnOiAxIH0sIHsgJ2QnOiAyIH1dIH0gfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHppcE9iamVjdERlZXAocHJvcHMsIHZhbHVlcykge1xuICAgICAgcmV0dXJuIGJhc2VaaXBPYmplY3QocHJvcHMgfHwgW10sIHZhbHVlcyB8fCBbXSwgYmFzZVNldCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy56aXBgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB0byBzcGVjaWZ5XG4gICAgICogaG93IGdyb3VwZWQgdmFsdWVzIHNob3VsZCBiZSBjb21iaW5lZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aGVcbiAgICAgKiBlbGVtZW50cyBvZiBlYWNoIGdyb3VwOiAoLi4uZ3JvdXApLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBwcm9jZXNzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gdG8gY29tYmluZVxuICAgICAqICBncm91cGVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcFdpdGgoWzEsIDJdLCBbMTAsIDIwXSwgWzEwMCwgMjAwXSwgZnVuY3Rpb24oYSwgYiwgYykge1xuICAgICAqICAgcmV0dXJuIGEgKyBiICsgYztcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBbMTExLCAyMjJdXG4gICAgICovXG4gICAgdmFyIHppcFdpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheXMubGVuZ3RoLFxuICAgICAgICAgIGl0ZXJhdGVlID0gbGVuZ3RoID4gMSA/IGFycmF5c1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcblxuICAgICAgaXRlcmF0ZWUgPSB0eXBlb2YgaXRlcmF0ZWUgPT0gJ2Z1bmN0aW9uJyA/IChhcnJheXMucG9wKCksIGl0ZXJhdGVlKSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB1bnppcFdpdGgoYXJyYXlzLCBpdGVyYXRlZSk7XG4gICAgfSk7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZSB0aGF0IHdyYXBzIGB2YWx1ZWAgd2l0aCBleHBsaWNpdCBtZXRob2RcbiAgICAgKiBjaGFpbiBzZXF1ZW5jZXMgZW5hYmxlZC4gVGhlIHJlc3VsdCBvZiBzdWNoIHNlcXVlbmNlcyBtdXN0IGJlIHVud3JhcHBlZFxuICAgICAqIHdpdGggYF8jdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMy4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIHZhciB5b3VuZ2VzdCA9IF9cbiAgICAgKiAgIC5jaGFpbih1c2VycylcbiAgICAgKiAgIC5zb3J0QnkoJ2FnZScpXG4gICAgICogICAubWFwKGZ1bmN0aW9uKG8pIHtcbiAgICAgKiAgICAgcmV0dXJuIG8udXNlciArICcgaXMgJyArIG8uYWdlO1xuICAgICAqICAgfSlcbiAgICAgKiAgIC5oZWFkKClcbiAgICAgKiAgIC52YWx1ZSgpO1xuICAgICAqIC8vID0+ICdwZWJibGVzIGlzIDEnXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2hhaW4odmFsdWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2godmFsdWUpO1xuICAgICAgcmVzdWx0Ll9fY2hhaW5fXyA9IHRydWU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGludm9rZXMgYGludGVyY2VwdG9yYCBhbmQgcmV0dXJucyBgdmFsdWVgLiBUaGUgaW50ZXJjZXB0b3JcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OyAodmFsdWUpLiBUaGUgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0b1xuICAgICAqIFwidGFwIGludG9cIiBhIG1ldGhvZCBjaGFpbiBzZXF1ZW5jZSBpbiBvcmRlciB0byBtb2RpZnkgaW50ZXJtZWRpYXRlIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvdmlkZSB0byBgaW50ZXJjZXB0b3JgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGludGVyY2VwdG9yIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgYHZhbHVlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXyhbMSwgMiwgM10pXG4gICAgICogIC50YXAoZnVuY3Rpb24oYXJyYXkpIHtcbiAgICAgKiAgICAvLyBNdXRhdGUgaW5wdXQgYXJyYXkuXG4gICAgICogICAgYXJyYXkucG9wKCk7XG4gICAgICogIH0pXG4gICAgICogIC5yZXZlcnNlKClcbiAgICAgKiAgLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFwKHZhbHVlLCBpbnRlcmNlcHRvcikge1xuICAgICAgaW50ZXJjZXB0b3IodmFsdWUpO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udGFwYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSByZXN1bHQgb2YgYGludGVyY2VwdG9yYC5cbiAgICAgKiBUaGUgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBcInBhc3MgdGhydVwiIHZhbHVlcyByZXBsYWNpbmcgaW50ZXJtZWRpYXRlXG4gICAgICogcmVzdWx0cyBpbiBhIG1ldGhvZCBjaGFpbiBzZXF1ZW5jZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm92aWRlIHRvIGBpbnRlcmNlcHRvcmAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaW50ZXJjZXB0b3IgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBpbnRlcmNlcHRvcmAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8oJyAgYWJjICAnKVxuICAgICAqICAuY2hhaW4oKVxuICAgICAqICAudHJpbSgpXG4gICAgICogIC50aHJ1KGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICAgcmV0dXJuIFt2YWx1ZV07XG4gICAgICogIH0pXG4gICAgICogIC52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsnYWJjJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0aHJ1KHZhbHVlLCBpbnRlcmNlcHRvcikge1xuICAgICAgcmV0dXJuIGludGVyY2VwdG9yKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0aGUgd3JhcHBlciB2ZXJzaW9uIG9mIGBfLmF0YC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGF0XG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfSwgNF0gfTtcbiAgICAgKlxuICAgICAqIF8ob2JqZWN0KS5hdChbJ2FbMF0uYi5jJywgJ2FbMV0nXSkudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbMywgNF1cbiAgICAgKi9cbiAgICB2YXIgd3JhcHBlckF0ID0gZmxhdFJlc3QoZnVuY3Rpb24ocGF0aHMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICAgICAgc3RhcnQgPSBsZW5ndGggPyBwYXRoc1swXSA6IDAsXG4gICAgICAgICAgdmFsdWUgPSB0aGlzLl9fd3JhcHBlZF9fLFxuICAgICAgICAgIGludGVyY2VwdG9yID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBiYXNlQXQob2JqZWN0LCBwYXRocyk7IH07XG5cbiAgICAgIGlmIChsZW5ndGggPiAxIHx8IHRoaXMuX19hY3Rpb25zX18ubGVuZ3RoIHx8XG4gICAgICAgICAgISh2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSB8fCAhaXNJbmRleChzdGFydCkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGhydShpbnRlcmNlcHRvcik7XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKHN0YXJ0LCArc3RhcnQgKyAobGVuZ3RoID8gMSA6IDApKTtcbiAgICAgIHZhbHVlLl9fYWN0aW9uc19fLnB1c2goe1xuICAgICAgICAnZnVuYyc6IHRocnUsXG4gICAgICAgICdhcmdzJzogW2ludGVyY2VwdG9yXSxcbiAgICAgICAgJ3RoaXNBcmcnOiB1bmRlZmluZWRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHZhbHVlLCB0aGlzLl9fY2hhaW5fXykudGhydShmdW5jdGlvbihhcnJheSkge1xuICAgICAgICBpZiAobGVuZ3RoICYmICFhcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICBhcnJheS5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycmF5O1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZSB3aXRoIGV4cGxpY2l0IG1ldGhvZCBjaGFpbiBzZXF1ZW5jZXMgZW5hYmxlZC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGNoYWluXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIEEgc2VxdWVuY2Ugd2l0aG91dCBleHBsaWNpdCBjaGFpbmluZy5cbiAgICAgKiBfKHVzZXJzKS5oZWFkKCk7XG4gICAgICogLy8gPT4geyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfVxuICAgICAqXG4gICAgICogLy8gQSBzZXF1ZW5jZSB3aXRoIGV4cGxpY2l0IGNoYWluaW5nLlxuICAgICAqIF8odXNlcnMpXG4gICAgICogICAuY2hhaW4oKVxuICAgICAqICAgLmhlYWQoKVxuICAgICAqICAgLnBpY2soJ3VzZXInKVxuICAgICAqICAgLnZhbHVlKCk7XG4gICAgICogLy8gPT4geyAndXNlcic6ICdiYXJuZXknIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyQ2hhaW4oKSB7XG4gICAgICByZXR1cm4gY2hhaW4odGhpcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhlY3V0ZXMgdGhlIGNoYWluIHNlcXVlbmNlIGFuZCByZXR1cm5zIHRoZSB3cmFwcGVkIHJlc3VsdC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGNvbW1pdFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMl07XG4gICAgICogdmFyIHdyYXBwZWQgPSBfKGFycmF5KS5wdXNoKDMpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogd3JhcHBlZCA9IHdyYXBwZWQuY29tbWl0KCk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogd3JhcHBlZC5sYXN0KCk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJDb21taXQoKSB7XG4gICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIodGhpcy52YWx1ZSgpLCB0aGlzLl9fY2hhaW5fXyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbmV4dCB2YWx1ZSBvbiBhIHdyYXBwZWQgb2JqZWN0IGZvbGxvd2luZyB0aGVcbiAgICAgKiBbaXRlcmF0b3IgcHJvdG9jb2xdKGh0dHBzOi8vbWRuLmlvL2l0ZXJhdGlvbl9wcm90b2NvbHMjaXRlcmF0b3IpLlxuICAgICAqXG4gICAgICogQG5hbWUgbmV4dFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5leHQgaXRlcmF0b3IgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMl0pO1xuICAgICAqXG4gICAgICogd3JhcHBlZC5uZXh0KCk7XG4gICAgICogLy8gPT4geyAnZG9uZSc6IGZhbHNlLCAndmFsdWUnOiAxIH1cbiAgICAgKlxuICAgICAqIHdyYXBwZWQubmV4dCgpO1xuICAgICAqIC8vID0+IHsgJ2RvbmUnOiBmYWxzZSwgJ3ZhbHVlJzogMiB9XG4gICAgICpcbiAgICAgKiB3cmFwcGVkLm5leHQoKTtcbiAgICAgKiAvLyA9PiB7ICdkb25lJzogdHJ1ZSwgJ3ZhbHVlJzogdW5kZWZpbmVkIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyTmV4dCgpIHtcbiAgICAgIGlmICh0aGlzLl9fdmFsdWVzX18gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9fdmFsdWVzX18gPSB0b0FycmF5KHRoaXMudmFsdWUoKSk7XG4gICAgICB9XG4gICAgICB2YXIgZG9uZSA9IHRoaXMuX19pbmRleF9fID49IHRoaXMuX192YWx1ZXNfXy5sZW5ndGgsXG4gICAgICAgICAgdmFsdWUgPSBkb25lID8gdW5kZWZpbmVkIDogdGhpcy5fX3ZhbHVlc19fW3RoaXMuX19pbmRleF9fKytdO1xuXG4gICAgICByZXR1cm4geyAnZG9uZSc6IGRvbmUsICd2YWx1ZSc6IHZhbHVlIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW5hYmxlcyB0aGUgd3JhcHBlciB0byBiZSBpdGVyYWJsZS5cbiAgICAgKlxuICAgICAqIEBuYW1lIFN5bWJvbC5pdGVyYXRvclxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHdyYXBwZXIgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDJdKTtcbiAgICAgKlxuICAgICAqIHdyYXBwZWRbU3ltYm9sLml0ZXJhdG9yXSgpID09PSB3cmFwcGVkO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIEFycmF5LmZyb20od3JhcHBlZCk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlclRvSXRlcmF0b3IoKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGNoYWluIHNlcXVlbmNlIHBsYW50aW5nIGB2YWx1ZWAgYXMgdGhlIHdyYXBwZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBwbGFudFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHBsYW50LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMl0pLm1hcChzcXVhcmUpO1xuICAgICAqIHZhciBvdGhlciA9IHdyYXBwZWQucGxhbnQoWzMsIDRdKTtcbiAgICAgKlxuICAgICAqIG90aGVyLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzksIDE2XVxuICAgICAqXG4gICAgICogd3JhcHBlZC52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsxLCA0XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJQbGFudCh2YWx1ZSkge1xuICAgICAgdmFyIHJlc3VsdCxcbiAgICAgICAgICBwYXJlbnQgPSB0aGlzO1xuXG4gICAgICB3aGlsZSAocGFyZW50IGluc3RhbmNlb2YgYmFzZUxvZGFzaCkge1xuICAgICAgICB2YXIgY2xvbmUgPSB3cmFwcGVyQ2xvbmUocGFyZW50KTtcbiAgICAgICAgY2xvbmUuX19pbmRleF9fID0gMDtcbiAgICAgICAgY2xvbmUuX192YWx1ZXNfXyA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHByZXZpb3VzLl9fd3JhcHBlZF9fID0gY2xvbmU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gY2xvbmU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHByZXZpb3VzID0gY2xvbmU7XG4gICAgICAgIHBhcmVudCA9IHBhcmVudC5fX3dyYXBwZWRfXztcbiAgICAgIH1cbiAgICAgIHByZXZpb3VzLl9fd3JhcHBlZF9fID0gdmFsdWU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHRoZSB3cmFwcGVyIHZlcnNpb24gb2YgYF8ucmV2ZXJzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyB0aGUgd3JhcHBlZCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBuYW1lIHJldmVyc2VcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqXG4gICAgICogXyhhcnJheSkucmV2ZXJzZSgpLnZhbHVlKClcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyUmV2ZXJzZSgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX193cmFwcGVkX187XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikge1xuICAgICAgICB2YXIgd3JhcHBlZCA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgpIHtcbiAgICAgICAgICB3cmFwcGVkID0gbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHdyYXBwZWQgPSB3cmFwcGVkLnJldmVyc2UoKTtcbiAgICAgICAgd3JhcHBlZC5fX2FjdGlvbnNfXy5wdXNoKHtcbiAgICAgICAgICAnZnVuYyc6IHRocnUsXG4gICAgICAgICAgJ2FyZ3MnOiBbcmV2ZXJzZV0sXG4gICAgICAgICAgJ3RoaXNBcmcnOiB1bmRlZmluZWRcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih3cmFwcGVkLCB0aGlzLl9fY2hhaW5fXyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy50aHJ1KHJldmVyc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIHRoZSBjaGFpbiBzZXF1ZW5jZSB0byByZXNvbHZlIHRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSB2YWx1ZVxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGFsaWFzIHRvSlNPTiwgdmFsdWVPZlxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfKFsxLCAyLCAzXSkudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyVmFsdWUoKSB7XG4gICAgICByZXR1cm4gYmFzZVdyYXBwZXJWYWx1ZSh0aGlzLl9fd3JhcHBlZF9fLCB0aGlzLl9fYWN0aW9uc19fKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiBrZXlzIGdlbmVyYXRlZCBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmdcbiAgICAgKiBlYWNoIGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYC4gVGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgb2ZcbiAgICAgKiBlYWNoIGtleSBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBrZXkgd2FzIHJldHVybmVkIGJ5IGBpdGVyYXRlZWAuIFRoZVxuICAgICAqIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC41LjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbXBvc2VkIGFnZ3JlZ2F0ZSBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY291bnRCeShbNi4xLCA0LjIsIDYuM10sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IHsgJzQnOiAxLCAnNic6IDIgfVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5jb3VudEJ5KFsnb25lJywgJ3R3bycsICd0aHJlZSddLCAnbGVuZ3RoJyk7XG4gICAgICogLy8gPT4geyAnMyc6IDIsICc1JzogMSB9XG4gICAgICovXG4gICAgdmFyIGNvdW50QnkgPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCBrZXkpKSB7XG4gICAgICAgICsrcmVzdWx0W2tleV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBrZXksIDEpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciAqKmFsbCoqIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBJdGVyYXRpb24gaXMgc3RvcHBlZCBvbmNlIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIHJldHVybnMgYHRydWVgIGZvclxuICAgICAqIFtlbXB0eSBjb2xsZWN0aW9uc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW1wdHlfc2V0KSBiZWNhdXNlXG4gICAgICogW2V2ZXJ5dGhpbmcgaXMgdHJ1ZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmFjdW91c190cnV0aCkgb2ZcbiAgICAgKiBlbGVtZW50cyBvZiBlbXB0eSBjb2xsZWN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbGwgZWxlbWVudHMgcGFzcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZXZlcnkoW3RydWUsIDEsIG51bGwsICd5ZXMnXSwgQm9vbGVhbik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZXZlcnkodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5ldmVyeSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZXZlcnkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGV2ZXJ5KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZ3VhcmQpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RXZlcnkgOiBiYXNlRXZlcnk7XG4gICAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBndWFyZCkpIHtcbiAgICAgICAgcHJlZGljYXRlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAsIHJldHVybmluZyBhbiBhcnJheSBvZiBhbGwgZWxlbWVudHNcbiAgICAgKiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnJlbW92ZWAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gICAgICogQHNlZSBfLnJlamVjdFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcih1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIENvbWJpbmluZyBzZXZlcmFsIHByZWRpY2F0ZXMgdXNpbmcgYF8ub3ZlckV2ZXJ5YCBvciBgXy5vdmVyU29tZWAuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIF8ub3ZlclNvbWUoW3sgJ2FnZSc6IDM2IH0sIFsnYWdlJywgNDBdXSkpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdiYXJuZXknXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbHRlcihjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gLCByZXR1cm5pbmcgdGhlIGZpcnN0IGVsZW1lbnRcbiAgICAgKiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF0Y2hlZCBlbGVtZW50LCBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEsICAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2UgPCA0MDsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0IGZvciAnYmFybmV5J1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmQodXNlcnMsIHsgJ2FnZSc6IDEsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ3BlYmJsZXMnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0IGZvciAnZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ2Jhcm5leSdcbiAgICAgKi9cbiAgICB2YXIgZmluZCA9IGNyZWF0ZUZpbmQoZmluZEluZGV4KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PWNvbGxlY3Rpb24ubGVuZ3RoLTFdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF0Y2hlZCBlbGVtZW50LCBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZpbmRMYXN0KFsxLCAyLCAzLCA0XSwgZnVuY3Rpb24obikge1xuICAgICAqICAgcmV0dXJuIG4gJSAyID09IDE7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIHZhciBmaW5kTGFzdCA9IGNyZWF0ZUZpbmQoZmluZExhc3RJbmRleCk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZmxhdHRlbmVkIGFycmF5IG9mIHZhbHVlcyBieSBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmBcbiAgICAgKiB0aHJ1IGBpdGVyYXRlZWAgYW5kIGZsYXR0ZW5pbmcgdGhlIG1hcHBlZCByZXN1bHRzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGR1cGxpY2F0ZShuKSB7XG4gICAgICogICByZXR1cm4gW24sIG5dO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8uZmxhdE1hcChbMSwgMl0sIGR1cGxpY2F0ZSk7XG4gICAgICogLy8gPT4gWzEsIDEsIDIsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdE1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSksIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmxhdE1hcGAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgZmxhdHRlbnMgdGhlXG4gICAgICogbWFwcGVkIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGR1cGxpY2F0ZShuKSB7XG4gICAgICogICByZXR1cm4gW1tbbiwgbl1dXTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZsYXRNYXBEZWVwKFsxLCAyXSwgZHVwbGljYXRlKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMiwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0TWFwRGVlcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSksIElORklOSVRZKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZsYXRNYXBgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGZsYXR0ZW5zIHRoZVxuICAgICAqIG1hcHBlZCByZXN1bHRzIHVwIHRvIGBkZXB0aGAgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RlcHRoPTFdIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGR1cGxpY2F0ZShuKSB7XG4gICAgICogICByZXR1cm4gW1tbbiwgbl1dXTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZsYXRNYXBEZXB0aChbMSwgMl0sIGR1cGxpY2F0ZSwgMik7XG4gICAgICogLy8gPT4gW1sxLCAxXSwgWzIsIDJdXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXRNYXBEZXB0aChjb2xsZWN0aW9uLCBpdGVyYXRlZSwgZGVwdGgpIHtcbiAgICAgIGRlcHRoID0gZGVwdGggPT09IHVuZGVmaW5lZCA/IDEgOiB0b0ludGVnZXIoZGVwdGgpO1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSksIGRlcHRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIGVsZW1lbnQuXG4gICAgICogVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogQXMgd2l0aCBvdGhlciBcIkNvbGxlY3Rpb25zXCIgbWV0aG9kcywgb2JqZWN0cyB3aXRoIGEgXCJsZW5ndGhcIlxuICAgICAqIHByb3BlcnR5IGFyZSBpdGVyYXRlZCBsaWtlIGFycmF5cy4gVG8gYXZvaWQgdGhpcyBiZWhhdmlvciB1c2UgYF8uZm9ySW5gXG4gICAgICogb3IgYF8uZm9yT3duYCBmb3Igb2JqZWN0IGl0ZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBhbGlhcyBlYWNoXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICogQHNlZSBfLmZvckVhY2hSaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZvckVhY2goWzEsIDJdLCBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAqICAgY29uc29sZS5sb2codmFsdWUpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgYDFgIHRoZW4gYDJgLlxuICAgICAqXG4gICAgICogXy5mb3JFYWNoKHsgJ2EnOiAxLCAnYic6IDIgfSwgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdhJyB0aGVuICdiJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JFYWNoKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUVhY2ggOiBiYXNlRWFjaDtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mb3JFYWNoYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYGNvbGxlY3Rpb25gIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBhbGlhcyBlYWNoUmlnaHRcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBAc2VlIF8uZm9yRWFjaFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZvckVhY2hSaWdodChbMSwgMl0sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyBgMmAgdGhlbiBgMWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9yRWFjaFJpZ2h0KGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUVhY2hSaWdodCA6IGJhc2VFYWNoUmlnaHQ7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIGtleXMgZ2VuZXJhdGVkIGZyb20gdGhlIHJlc3VsdHMgb2YgcnVubmluZ1xuICAgICAqIGVhY2ggZWxlbWVudCBvZiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgb3JkZXIgb2YgZ3JvdXBlZCB2YWx1ZXNcbiAgICAgKiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIGBjb2xsZWN0aW9uYC4gVGhlIGNvcnJlc3BvbmRpbmdcbiAgICAgKiB2YWx1ZSBvZiBlYWNoIGtleSBpcyBhbiBhcnJheSBvZiBlbGVtZW50cyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGVcbiAgICAgKiBrZXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb21wb3NlZCBhZ2dyZWdhdGUgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmdyb3VwQnkoWzYuMSwgNC4yLCA2LjNdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiB7ICc0JzogWzQuMl0sICc2JzogWzYuMSwgNi4zXSB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmdyb3VwQnkoWydvbmUnLCAndHdvJywgJ3RocmVlJ10sICdsZW5ndGgnKTtcbiAgICAgKiAvLyA9PiB7ICczJzogWydvbmUnLCAndHdvJ10sICc1JzogWyd0aHJlZSddIH1cbiAgICAgKi9cbiAgICB2YXIgZ3JvdXBCeSA9IGNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChyZXN1bHQsIGtleSkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0ucHVzaCh2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBrZXksIFt2YWx1ZV0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgaW4gYGNvbGxlY3Rpb25gLiBJZiBgY29sbGVjdGlvbmAgaXMgYSBzdHJpbmcsIGl0J3NcbiAgICAgKiBjaGVja2VkIGZvciBhIHN1YnN0cmluZyBvZiBgdmFsdWVgLCBvdGhlcndpc2VcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGlzIHVzZWQgZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBJZiBgZnJvbUluZGV4YCBpcyBuZWdhdGl2ZSwgaXQncyB1c2VkIGFzXG4gICAgICogdGhlIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdHxzdHJpbmd9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5yZWR1Y2VgLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW5jbHVkZXMoWzEsIDIsIDNdLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKFsxLCAyLCAzXSwgMSwgMik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5jbHVkZXMoeyAnYSc6IDEsICdiJzogMiB9LCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKCdhYmNkJywgJ2JjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluY2x1ZGVzKGNvbGxlY3Rpb24sIHZhbHVlLCBmcm9tSW5kZXgsIGd1YXJkKSB7XG4gICAgICBjb2xsZWN0aW9uID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBjb2xsZWN0aW9uIDogdmFsdWVzKGNvbGxlY3Rpb24pO1xuICAgICAgZnJvbUluZGV4ID0gKGZyb21JbmRleCAmJiAhZ3VhcmQpID8gdG9JbnRlZ2VyKGZyb21JbmRleCkgOiAwO1xuXG4gICAgICB2YXIgbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7XG4gICAgICBpZiAoZnJvbUluZGV4IDwgMCkge1xuICAgICAgICBmcm9tSW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgZnJvbUluZGV4LCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc1N0cmluZyhjb2xsZWN0aW9uKVxuICAgICAgICA/IChmcm9tSW5kZXggPD0gbGVuZ3RoICYmIGNvbGxlY3Rpb24uaW5kZXhPZih2YWx1ZSwgZnJvbUluZGV4KSA+IC0xKVxuICAgICAgICA6ICghIWxlbmd0aCAmJiBiYXNlSW5kZXhPZihjb2xsZWN0aW9uLCB2YWx1ZSwgZnJvbUluZGV4KSA+IC0xKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VzIHRoZSBtZXRob2QgYXQgYHBhdGhgIG9mIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAsIHJldHVybmluZ1xuICAgICAqIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mIGVhY2ggaW52b2tlZCBtZXRob2QuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgICAqIGFyZSBwcm92aWRlZCB0byBlYWNoIGludm9rZWQgbWV0aG9kLiBJZiBgcGF0aGAgaXMgYSBmdW5jdGlvbiwgaXQncyBpbnZva2VkXG4gICAgICogZm9yLCBhbmQgYHRoaXNgIGJvdW5kIHRvLCBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtBcnJheXxGdW5jdGlvbnxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIG1ldGhvZCB0byBpbnZva2Ugb3JcbiAgICAgKiAgdGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBlYWNoIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbnZva2VNYXAoW1s1LCAxLCA3XSwgWzMsIDIsIDFdXSwgJ3NvcnQnKTtcbiAgICAgKiAvLyA9PiBbWzEsIDUsIDddLCBbMSwgMiwgM11dXG4gICAgICpcbiAgICAgKiBfLmludm9rZU1hcChbMTIzLCA0NTZdLCBTdHJpbmcucHJvdG90eXBlLnNwbGl0LCAnJyk7XG4gICAgICogLy8gPT4gW1snMScsICcyJywgJzMnXSwgWyc0JywgJzUnLCAnNiddXVxuICAgICAqL1xuICAgIHZhciBpbnZva2VNYXAgPSBiYXNlUmVzdChmdW5jdGlvbihjb2xsZWN0aW9uLCBwYXRoLCBhcmdzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpc0Z1bmMgPSB0eXBlb2YgcGF0aCA9PSAnZnVuY3Rpb24nLFxuICAgICAgICAgIHJlc3VsdCA9IGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pID8gQXJyYXkoY29sbGVjdGlvbi5sZW5ndGgpIDogW107XG5cbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHJlc3VsdFsrK2luZGV4XSA9IGlzRnVuYyA/IGFwcGx5KHBhdGgsIHZhbHVlLCBhcmdzKSA6IGJhc2VJbnZva2UodmFsdWUsIHBhdGgsIGFyZ3MpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2Yga2V5cyBnZW5lcmF0ZWQgZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nXG4gICAgICogZWFjaCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIG9mXG4gICAgICogZWFjaCBrZXkgaXMgdGhlIGxhc3QgZWxlbWVudCByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGUga2V5LiBUaGVcbiAgICAgKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb21wb3NlZCBhZ2dyZWdhdGUgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbXG4gICAgICogICB7ICdkaXInOiAnbGVmdCcsICdjb2RlJzogOTcgfSxcbiAgICAgKiAgIHsgJ2Rpcic6ICdyaWdodCcsICdjb2RlJzogMTAwIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5rZXlCeShhcnJheSwgZnVuY3Rpb24obykge1xuICAgICAqICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoby5jb2RlKTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogeyAnZGlyJzogJ2xlZnQnLCAnY29kZSc6IDk3IH0sICdkJzogeyAnZGlyJzogJ3JpZ2h0JywgJ2NvZGUnOiAxMDAgfSB9XG4gICAgICpcbiAgICAgKiBfLmtleUJ5KGFycmF5LCAnZGlyJyk7XG4gICAgICogLy8gPT4geyAnbGVmdCc6IHsgJ2Rpcic6ICdsZWZ0JywgJ2NvZGUnOiA5NyB9LCAncmlnaHQnOiB7ICdkaXInOiAncmlnaHQnLCAnY29kZSc6IDEwMCB9IH1cbiAgICAgKi9cbiAgICB2YXIga2V5QnkgPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCB2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHZhbHVlcyBieSBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydVxuICAgICAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICAgICAqICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIE1hbnkgbG9kYXNoIG1ldGhvZHMgYXJlIGd1YXJkZWQgdG8gd29yayBhcyBpdGVyYXRlZXMgZm9yIG1ldGhvZHMgbGlrZVxuICAgICAqIGBfLmV2ZXJ5YCwgYF8uZmlsdGVyYCwgYF8ubWFwYCwgYF8ubWFwVmFsdWVzYCwgYF8ucmVqZWN0YCwgYW5kIGBfLnNvbWVgLlxuICAgICAqXG4gICAgICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gICAgICogYGFyeWAsIGBjaHVua2AsIGBjdXJyeWAsIGBjdXJyeVJpZ2h0YCwgYGRyb3BgLCBgZHJvcFJpZ2h0YCwgYGV2ZXJ5YCxcbiAgICAgKiBgZmlsbGAsIGBpbnZlcnRgLCBgcGFyc2VJbnRgLCBgcmFuZG9tYCwgYHJhbmdlYCwgYHJhbmdlUmlnaHRgLCBgcmVwZWF0YCxcbiAgICAgKiBgc2FtcGxlU2l6ZWAsIGBzbGljZWAsIGBzb21lYCwgYHNvcnRCeWAsIGBzcGxpdGAsIGB0YWtlYCwgYHRha2VSaWdodGAsXG4gICAgICogYHRlbXBsYXRlYCwgYHRyaW1gLCBgdHJpbUVuZGAsIGB0cmltU3RhcnRgLCBhbmQgYHdvcmRzYFxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8ubWFwKFs0LCA4XSwgc3F1YXJlKTtcbiAgICAgKiAvLyA9PiBbMTYsIDY0XVxuICAgICAqXG4gICAgICogXy5tYXAoeyAnYSc6IDQsICdiJzogOCB9LCBzcXVhcmUpO1xuICAgICAqIC8vID0+IFsxNiwgNjRdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1hcCh1c2VycywgJ3VzZXInKTtcbiAgICAgKiAvLyA9PiBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5TWFwIDogYmFzZU1hcDtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zb3J0QnlgIGV4Y2VwdCB0aGF0IGl0IGFsbG93cyBzcGVjaWZ5aW5nIHRoZSBzb3J0XG4gICAgICogb3JkZXJzIG9mIHRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS4gSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXNcbiAgICAgKiBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4gT3RoZXJ3aXNlLCBzcGVjaWZ5IGFuIG9yZGVyIG9mIFwiZGVzY1wiIGZvclxuICAgICAqIGRlc2NlbmRpbmcgb3IgXCJhc2NcIiBmb3IgYXNjZW5kaW5nIHNvcnQgb3JkZXIgb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0FycmF5W118RnVuY3Rpb25bXXxPYmplY3RbXXxzdHJpbmdbXX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbb3JkZXJzXSBUaGUgc29ydCBvcmRlcnMgb2YgYGl0ZXJhdGVlc2AuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ucmVkdWNlYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQ4IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNCB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gU29ydCBieSBgdXNlcmAgaW4gYXNjZW5kaW5nIG9yZGVyIGFuZCBieSBgYWdlYCBpbiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgICAqIF8ub3JkZXJCeSh1c2VycywgWyd1c2VyJywgJ2FnZSddLCBbJ2FzYycsICdkZXNjJ10pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM2XSwgWydiYXJuZXknLCAzNF0sIFsnZnJlZCcsIDQ4XSwgWydmcmVkJywgNDBdXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9yZGVyQnkoY29sbGVjdGlvbiwgaXRlcmF0ZWVzLCBvcmRlcnMsIGd1YXJkKSB7XG4gICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNBcnJheShpdGVyYXRlZXMpKSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IGl0ZXJhdGVlcyA9PSBudWxsID8gW10gOiBbaXRlcmF0ZWVzXTtcbiAgICAgIH1cbiAgICAgIG9yZGVycyA9IGd1YXJkID8gdW5kZWZpbmVkIDogb3JkZXJzO1xuICAgICAgaWYgKCFpc0FycmF5KG9yZGVycykpIHtcbiAgICAgICAgb3JkZXJzID0gb3JkZXJzID09IG51bGwgPyBbXSA6IFtvcmRlcnNdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGl0ZXJhdGVlcywgb3JkZXJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzIHNwbGl0IGludG8gdHdvIGdyb3VwcywgdGhlIGZpcnN0IG9mIHdoaWNoXG4gICAgICogY29udGFpbnMgZWxlbWVudHMgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLCB0aGUgc2Vjb25kIG9mIHdoaWNoXG4gICAgICogY29udGFpbnMgZWxlbWVudHMgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkgZm9yLiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSwgICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snZnJlZCddLCBbJ2Jhcm5leScsICdwZWJibGVzJ11dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCB7ICdhZ2UnOiAxLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1sncGViYmxlcyddLCBbJ2Jhcm5leScsICdmcmVkJ11dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5wYXJ0aXRpb24odXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAncGViYmxlcyddLCBbJ2ZyZWQnXV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snZnJlZCddLCBbJ2Jhcm5leScsICdwZWJibGVzJ11dXG4gICAgICovXG4gICAgdmFyIHBhcnRpdGlvbiA9IGNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICByZXN1bHRba2V5ID8gMCA6IDFdLnB1c2godmFsdWUpO1xuICAgIH0sIGZ1bmN0aW9uKCkgeyByZXR1cm4gW1tdLCBbXV07IH0pO1xuXG4gICAgLyoqXG4gICAgICogUmVkdWNlcyBgY29sbGVjdGlvbmAgdG8gYSB2YWx1ZSB3aGljaCBpcyB0aGUgYWNjdW11bGF0ZWQgcmVzdWx0IG9mIHJ1bm5pbmdcbiAgICAgKiBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYCwgd2hlcmUgZWFjaCBzdWNjZXNzaXZlXG4gICAgICogaW52b2NhdGlvbiBpcyBzdXBwbGllZCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcmV2aW91cy4gSWYgYGFjY3VtdWxhdG9yYFxuICAgICAqIGlzIG5vdCBnaXZlbiwgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIGlzIHVzZWQgYXMgdGhlIGluaXRpYWxcbiAgICAgKiB2YWx1ZS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBmb3VyIGFyZ3VtZW50czpcbiAgICAgKiAoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogTWFueSBsb2Rhc2ggbWV0aG9kcyBhcmUgZ3VhcmRlZCB0byB3b3JrIGFzIGl0ZXJhdGVlcyBmb3IgbWV0aG9kcyBsaWtlXG4gICAgICogYF8ucmVkdWNlYCwgYF8ucmVkdWNlUmlnaHRgLCBhbmQgYF8udHJhbnNmb3JtYC5cbiAgICAgKlxuICAgICAqIFRoZSBndWFyZGVkIG1ldGhvZHMgYXJlOlxuICAgICAqIGBhc3NpZ25gLCBgZGVmYXVsdHNgLCBgZGVmYXVsdHNEZWVwYCwgYGluY2x1ZGVzYCwgYG1lcmdlYCwgYG9yZGVyQnlgLFxuICAgICAqIGFuZCBgc29ydEJ5YFxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8ucmVkdWNlUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yZWR1Y2UoWzEsIDJdLCBmdW5jdGlvbihzdW0sIG4pIHtcbiAgICAgKiAgIHJldHVybiBzdW0gKyBuO1xuICAgICAqIH0sIDApO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8ucmVkdWNlKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gICAgICogICByZXR1cm4gcmVzdWx0O1xuICAgICAqIH0sIHt9KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlSZWR1Y2UgOiBiYXNlUmVkdWNlLFxuICAgICAgICAgIGluaXRBY2N1bSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzO1xuXG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgNCksIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGJhc2VFYWNoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnJlZHVjZWAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5yZWR1Y2VcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW1swLCAxXSwgWzIsIDNdLCBbNCwgNV1dO1xuICAgICAqXG4gICAgICogXy5yZWR1Y2VSaWdodChhcnJheSwgZnVuY3Rpb24oZmxhdHRlbmVkLCBvdGhlcikge1xuICAgICAqICAgcmV0dXJuIGZsYXR0ZW5lZC5jb25jYXQob3RoZXIpO1xuICAgICAqIH0sIFtdKTtcbiAgICAgKiAvLyA9PiBbNCwgNSwgMiwgMywgMCwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZWR1Y2VSaWdodChjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5UmVkdWNlUmlnaHQgOiBiYXNlUmVkdWNlLFxuICAgICAgICAgIGluaXRBY2N1bSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzO1xuXG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgNCksIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGJhc2VFYWNoUmlnaHQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5maWx0ZXJgOyB0aGlzIG1ldGhvZCByZXR1cm5zIHRoZSBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmBcbiAgICAgKiB0aGF0IGBwcmVkaWNhdGVgIGRvZXMgKipub3QqKiByZXR1cm4gdHJ1dGh5IGZvci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAgICAgKiBAc2VlIF8uZmlsdGVyXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCB7ICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlamVjdChjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIHJhbmRvbSBlbGVtZW50IGZyb20gYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzYW1wbGUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNhbXBsZShbMSwgMiwgMywgNF0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzYW1wbGUoY29sbGVjdGlvbikge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlTYW1wbGUgOiBiYXNlU2FtcGxlO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBgbmAgcmFuZG9tIGVsZW1lbnRzIGF0IHVuaXF1ZSBrZXlzIGZyb20gYGNvbGxlY3Rpb25gIHVwIHRvIHRoZVxuICAgICAqIHNpemUgb2YgYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzYW1wbGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc2FtcGxlU2l6ZShbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFszLCAxXVxuICAgICAqXG4gICAgICogXy5zYW1wbGVTaXplKFsxLCAyLCAzXSwgNCk7XG4gICAgICogLy8gPT4gWzIsIDMsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2FtcGxlU2l6ZShjb2xsZWN0aW9uLCBuLCBndWFyZCkge1xuICAgICAgaWYgKChndWFyZCA/IGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIG4sIGd1YXJkKSA6IG4gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgbiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgfVxuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlTYW1wbGVTaXplIDogYmFzZVNhbXBsZVNpemU7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHNodWZmbGVkIHZhbHVlcywgdXNpbmcgYSB2ZXJzaW9uIG9mIHRoZVxuICAgICAqIFtGaXNoZXItWWF0ZXMgc2h1ZmZsZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlzaGVyLVlhdGVzX3NodWZmbGUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNodWZmbGUoWzEsIDIsIDMsIDRdKTtcbiAgICAgKiAvLyA9PiBbNCwgMSwgMywgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzaHVmZmxlKGNvbGxlY3Rpb24pIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5U2h1ZmZsZSA6IGJhc2VTaHVmZmxlO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgc2l6ZSBvZiBgY29sbGVjdGlvbmAgYnkgcmV0dXJuaW5nIGl0cyBsZW5ndGggZm9yIGFycmF5LWxpa2VcbiAgICAgKiB2YWx1ZXMgb3IgdGhlIG51bWJlciBvZiBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBmb3Igb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R8c3RyaW5nfSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29sbGVjdGlvbiBzaXplLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNpemUoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnNpemUoeyAnYSc6IDEsICdiJzogMiB9KTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiBfLnNpemUoJ3BlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiA3XG4gICAgICovXG4gICAgZnVuY3Rpb24gc2l6ZShjb2xsZWN0aW9uKSB7XG4gICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICAgIHJldHVybiBpc1N0cmluZyhjb2xsZWN0aW9uKSA/IHN0cmluZ1NpemUoY29sbGVjdGlvbikgOiBjb2xsZWN0aW9uLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHZhciB0YWcgPSBnZXRUYWcoY29sbGVjdGlvbik7XG4gICAgICBpZiAodGFnID09IG1hcFRhZyB8fCB0YWcgPT0gc2V0VGFnKSB7XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uLnNpemU7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUtleXMoY29sbGVjdGlvbikubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgKiphbnkqKiBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBJdGVyYXRpb24gaXMgc3RvcHBlZCBvbmNlIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29tZShbbnVsbCwgMCwgJ3llcycsIGZhbHNlXSwgQm9vbGVhbik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc29tZSh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvbWUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvbWUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29tZShjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGd1YXJkKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVNvbWUgOiBiYXNlU29tZTtcbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGd1YXJkKSkge1xuICAgICAgICBwcmVkaWNhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzLCBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IHRoZSByZXN1bHRzIG9mXG4gICAgICogcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYSBjb2xsZWN0aW9uIHRocnUgZWFjaCBpdGVyYXRlZS4gVGhpcyBtZXRob2RcbiAgICAgKiBwZXJmb3JtcyBhIHN0YWJsZSBzb3J0LCB0aGF0IGlzLCBpdCBwcmVzZXJ2ZXMgdGhlIG9yaWdpbmFsIHNvcnQgb3JkZXIgb2ZcbiAgICAgKiBlcXVhbCBlbGVtZW50cy4gVGhlIGl0ZXJhdGVlcyBhcmUgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDggfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiAzMCB9LFxuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzQgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnNvcnRCeSh1c2VycywgW2Z1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlcjsgfV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM2XSwgWydiYXJuZXknLCAzNF0sIFsnZnJlZCcsIDQ4XSwgWydmcmVkJywgMzBdXVxuICAgICAqXG4gICAgICogXy5zb3J0QnkodXNlcnMsIFsndXNlcicsICdhZ2UnXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzRdLCBbJ2Jhcm5leScsIDM2XSwgWydmcmVkJywgMzBdLCBbJ2ZyZWQnLCA0OF1dXG4gICAgICovXG4gICAgdmFyIHNvcnRCeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGl0ZXJhdGVlcykge1xuICAgICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gaXRlcmF0ZWVzLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggPiAxICYmIGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIGl0ZXJhdGVlc1swXSwgaXRlcmF0ZWVzWzFdKSkge1xuICAgICAgICBpdGVyYXRlZXMgPSBbXTtcbiAgICAgIH0gZWxzZSBpZiAobGVuZ3RoID4gMiAmJiBpc0l0ZXJhdGVlQ2FsbChpdGVyYXRlZXNbMF0sIGl0ZXJhdGVlc1sxXSwgaXRlcmF0ZWVzWzJdKSkge1xuICAgICAgICBpdGVyYXRlZXMgPSBbaXRlcmF0ZWVzWzBdXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBiYXNlRmxhdHRlbihpdGVyYXRlZXMsIDEpLCBbXSk7XG4gICAgfSk7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB0aW1lc3RhbXAgb2YgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdGhhdCBoYXZlIGVsYXBzZWQgc2luY2VcbiAgICAgKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBEYXRlXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gICAgICogICBjb25zb2xlLmxvZyhfLm5vdygpIC0gc3RhbXApO1xuICAgICAqIH0sIF8ubm93KCkpO1xuICAgICAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gICAgICovXG4gICAgdmFyIG5vdyA9IGN0eE5vdyB8fCBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiByb290LkRhdGUubm93KCk7XG4gICAgfTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5iZWZvcmVgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzXG4gICAgICogYGZ1bmNgIG9uY2UgaXQncyBjYWxsZWQgYG5gIG9yIG1vcmUgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGNhbGxzIGJlZm9yZSBgZnVuY2AgaXMgaW52b2tlZC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZXN0cmljdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgc2F2ZXMgPSBbJ3Byb2ZpbGUnLCAnc2V0dGluZ3MnXTtcbiAgICAgKlxuICAgICAqIHZhciBkb25lID0gXy5hZnRlcihzYXZlcy5sZW5ndGgsIGZ1bmN0aW9uKCkge1xuICAgICAqICAgY29uc29sZS5sb2coJ2RvbmUgc2F2aW5nIScpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogXy5mb3JFYWNoKHNhdmVzLCBmdW5jdGlvbih0eXBlKSB7XG4gICAgICogICBhc3luY1NhdmUoeyAndHlwZSc6IHR5cGUsICdjb21wbGV0ZSc6IGRvbmUgfSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnZG9uZSBzYXZpbmchJyBhZnRlciB0aGUgdHdvIGFzeW5jIHNhdmVzIGhhdmUgY29tcGxldGVkLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFmdGVyKG4sIGZ1bmMpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICgtLW4gPCAxKSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCwgd2l0aCB1cCB0byBgbmAgYXJndW1lbnRzLFxuICAgICAqIGlnbm9yaW5nIGFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj1mdW5jLmxlbmd0aF0gVGhlIGFyaXR5IGNhcC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXAoWyc2JywgJzgnLCAnMTAnXSwgXy5hcnkocGFyc2VJbnQsIDEpKTtcbiAgICAgKiAvLyA9PiBbNiwgOCwgMTBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXJ5KGZ1bmMsIG4sIGd1YXJkKSB7XG4gICAgICBuID0gZ3VhcmQgPyB1bmRlZmluZWQgOiBuO1xuICAgICAgbiA9IChmdW5jICYmIG4gPT0gbnVsbCkgPyBmdW5jLmxlbmd0aCA6IG47XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX0FSWV9GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgLCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzXG4gICAgICogb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24sIHdoaWxlIGl0J3MgY2FsbGVkIGxlc3MgdGhhbiBgbmAgdGltZXMuIFN1YnNlcXVlbnRcbiAgICAgKiBjYWxscyB0byB0aGUgY3JlYXRlZCBmdW5jdGlvbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2AgaW52b2NhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgY2FsbHMgYXQgd2hpY2ggYGZ1bmNgIGlzIG5vIGxvbmdlciBpbnZva2VkLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJlc3RyaWN0ZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmJlZm9yZSg1LCBhZGRDb250YWN0VG9MaXN0KSk7XG4gICAgICogLy8gPT4gQWxsb3dzIGFkZGluZyB1cCB0byA0IGNvbnRhY3RzIHRvIHRoZSBsaXN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJlZm9yZShuLCBmdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0O1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKC0tbiA+IDApIHtcbiAgICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4gPD0gMSkge1xuICAgICAgICAgIGZ1bmMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgXG4gICAgICogYW5kIGBwYXJ0aWFsc2AgcHJlcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uYmluZC5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljIGJ1aWxkcyxcbiAgICAgKiBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIG5hdGl2ZSBgRnVuY3Rpb24jYmluZGAsIHRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiXG4gICAgICogcHJvcGVydHkgb2YgYm91bmQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYmluZC5cbiAgICAgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0gey4uLip9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBib3VuZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZ3JlZXQoZ3JlZXRpbmcsIHB1bmN0dWF0aW9uKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyB0aGlzLnVzZXIgKyBwdW5jdHVhdGlvbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAndXNlcic6ICdmcmVkJyB9O1xuICAgICAqXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kKGdyZWV0LCBvYmplY3QsICdoaScpO1xuICAgICAqIGJvdW5kKCchJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQhJ1xuICAgICAqXG4gICAgICogLy8gQm91bmQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kKGdyZWV0LCBvYmplY3QsIF8sICchJyk7XG4gICAgICogYm91bmQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQhJ1xuICAgICAqL1xuICAgIHZhciBiaW5kID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgdGhpc0FyZywgcGFydGlhbHMpIHtcbiAgICAgIHZhciBiaXRtYXNrID0gV1JBUF9CSU5EX0ZMQUc7XG4gICAgICBpZiAocGFydGlhbHMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBob2xkZXJzID0gcmVwbGFjZUhvbGRlcnMocGFydGlhbHMsIGdldEhvbGRlcihiaW5kKSk7XG4gICAgICAgIGJpdG1hc2sgfD0gV1JBUF9QQVJUSUFMX0ZMQUc7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscywgaG9sZGVycyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBtZXRob2QgYXQgYG9iamVjdFtrZXldYCB3aXRoIGBwYXJ0aWFsc2BcbiAgICAgKiBwcmVwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSBgXy5iaW5kYCBieSBhbGxvd2luZyBib3VuZCBmdW5jdGlvbnMgdG8gcmVmZXJlbmNlXG4gICAgICogbWV0aG9kcyB0aGF0IG1heSBiZSByZWRlZmluZWQgb3IgZG9uJ3QgeWV0IGV4aXN0LiBTZWVcbiAgICAgKiBbUGV0ZXIgTWljaGF1eCdzIGFydGljbGVdKGh0dHA6Ly9wZXRlci5taWNoYXV4LmNhL2FydGljbGVzL2xhenktZnVuY3Rpb24tZGVmaW5pdGlvbi1wYXR0ZXJuKVxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uYmluZEtleS5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljXG4gICAgICogYnVpbGRzLCBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGludm9rZSB0aGUgbWV0aG9kIG9uLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgbWV0aG9kLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJvdW5kIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge1xuICAgICAqICAgJ3VzZXInOiAnZnJlZCcsXG4gICAgICogICAnZ3JlZXQnOiBmdW5jdGlvbihncmVldGluZywgcHVuY3R1YXRpb24pIHtcbiAgICAgKiAgICAgcmV0dXJuIGdyZWV0aW5nICsgJyAnICsgdGhpcy51c2VyICsgcHVuY3R1YXRpb247XG4gICAgICogICB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBib3VuZCA9IF8uYmluZEtleShvYmplY3QsICdncmVldCcsICdoaScpO1xuICAgICAqIGJvdW5kKCchJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQhJ1xuICAgICAqXG4gICAgICogb2JqZWN0LmdyZWV0ID0gZnVuY3Rpb24oZ3JlZXRpbmcsIHB1bmN0dWF0aW9uKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAneWEgJyArIHRoaXMudXNlciArIHB1bmN0dWF0aW9uO1xuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBib3VuZCgnIScpO1xuICAgICAqIC8vID0+ICdoaXlhIGZyZWQhJ1xuICAgICAqXG4gICAgICogLy8gQm91bmQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kS2V5KG9iamVjdCwgJ2dyZWV0JywgXywgJyEnKTtcbiAgICAgKiBib3VuZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGl5YSBmcmVkISdcbiAgICAgKi9cbiAgICB2YXIgYmluZEtleSA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwga2V5LCBwYXJ0aWFscykge1xuICAgICAgdmFyIGJpdG1hc2sgPSBXUkFQX0JJTkRfRkxBRyB8IFdSQVBfQklORF9LRVlfRkxBRztcbiAgICAgIGlmIChwYXJ0aWFscy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGhvbGRlcnMgPSByZXBsYWNlSG9sZGVycyhwYXJ0aWFscywgZ2V0SG9sZGVyKGJpbmRLZXkpKTtcbiAgICAgICAgYml0bWFzayB8PSBXUkFQX1BBUlRJQUxfRkxBRztcbiAgICAgIH1cbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGtleSwgYml0bWFzaywgb2JqZWN0LCBwYXJ0aWFscywgaG9sZGVycyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGFyZ3VtZW50cyBvZiBgZnVuY2AgYW5kIGVpdGhlciBpbnZva2VzXG4gICAgICogYGZ1bmNgIHJldHVybmluZyBpdHMgcmVzdWx0LCBpZiBhdCBsZWFzdCBgYXJpdHlgIG51bWJlciBvZiBhcmd1bWVudHMgaGF2ZVxuICAgICAqIGJlZW4gcHJvdmlkZWQsIG9yIHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIHJlbWFpbmluZyBgZnVuY2BcbiAgICAgKiBhcmd1bWVudHMsIGFuZCBzbyBvbi4gVGhlIGFyaXR5IG9mIGBmdW5jYCBtYXkgYmUgc3BlY2lmaWVkIGlmIGBmdW5jLmxlbmd0aGBcbiAgICAgKiBpcyBub3Qgc3VmZmljaWVudC5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5jdXJyeS5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljIGJ1aWxkcyxcbiAgICAgKiBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCIgcHJvcGVydHkgb2YgY3VycmllZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjdXJyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5PWZ1bmMubGVuZ3RoXSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFiYyA9IGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBbYSwgYiwgY107XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBjdXJyaWVkID0gXy5jdXJyeShhYmMpO1xuICAgICAqXG4gICAgICogY3VycmllZCgxKSgyKSgzKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMSwgMikoMyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDEsIDIsIDMpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogLy8gQ3VycmllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiBjdXJyaWVkKDEpKF8sIDMpKDIpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1cnJ5KGZ1bmMsIGFyaXR5LCBndWFyZCkge1xuICAgICAgYXJpdHkgPSBndWFyZCA/IHVuZGVmaW5lZCA6IGFyaXR5O1xuICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9DVVJSWV9GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgYXJpdHkpO1xuICAgICAgcmVzdWx0LnBsYWNlaG9sZGVyID0gY3VycnkucGxhY2Vob2xkZXI7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY3VycnlgIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgYXBwbGllZCB0byBgZnVuY2BcbiAgICAgKiBpbiB0aGUgbWFubmVyIG9mIGBfLnBhcnRpYWxSaWdodGAgaW5zdGVhZCBvZiBgXy5wYXJ0aWFsYC5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5jdXJyeVJpZ2h0LnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBjdXJyaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGN1cnJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHk9ZnVuYy5sZW5ndGhdIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjdXJyaWVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYWJjID0gZnVuY3Rpb24oYSwgYiwgYykge1xuICAgICAqICAgcmV0dXJuIFthLCBiLCBjXTtcbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogdmFyIGN1cnJpZWQgPSBfLmN1cnJ5UmlnaHQoYWJjKTtcbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMykoMikoMSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDIsIDMpKDEpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogY3VycmllZCgxLCAyLCAzKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIC8vIEN1cnJpZWQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogY3VycmllZCgzKSgxLCBfKSgyKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXJyeVJpZ2h0KGZ1bmMsIGFyaXR5LCBndWFyZCkge1xuICAgICAgYXJpdHkgPSBndWFyZCA/IHVuZGVmaW5lZCA6IGFyaXR5O1xuICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9DVVJSWV9SSUdIVF9GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgYXJpdHkpO1xuICAgICAgcmVzdWx0LnBsYWNlaG9sZGVyID0gY3VycnlSaWdodC5wbGFjZWhvbGRlcjtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IGRlbGF5cyBpbnZva2luZyBgZnVuY2AgdW50aWwgYWZ0ZXIgYHdhaXRgXG4gICAgICogbWlsbGlzZWNvbmRzIGhhdmUgZWxhcHNlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gd2FzXG4gICAgICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICAgICAqIGRlbGF5ZWQgYGZ1bmNgIGludm9jYXRpb25zIGFuZCBhIGBmbHVzaGAgbWV0aG9kIHRvIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLlxuICAgICAqIFByb3ZpZGUgYG9wdGlvbnNgIHRvIGluZGljYXRlIHdoZXRoZXIgYGZ1bmNgIHNob3VsZCBiZSBpbnZva2VkIG9uIHRoZVxuICAgICAqIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YCB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRoZSBsYXN0IGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50XG4gICAgICogY2FsbHMgdG8gdGhlIGRlYm91bmNlZCBmdW5jdGlvbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2BcbiAgICAgKiBpbnZvY2F0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIElmIGBsZWFkaW5nYCBhbmQgYHRyYWlsaW5nYCBvcHRpb25zIGFyZSBgdHJ1ZWAsIGBmdW5jYCBpc1xuICAgICAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uXG4gICAgICogaXMgaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICAgICAqXG4gICAgICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gICAgICogdW50aWwgdG8gdGhlIG5leHQgdGljaywgc2ltaWxhciB0byBgc2V0VGltZW91dGAgd2l0aCBhIHRpbWVvdXQgb2YgYDBgLlxuICAgICAqXG4gICAgICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gICAgICogZm9yIGRldGFpbHMgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBgXy5kZWJvdW5jZWAgYW5kIGBfLnRocm90dGxlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlYm91bmNlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbd2FpdD0wXSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlYWRpbmc9ZmFsc2VdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4V2FpdF1cbiAgICAgKiAgVGhlIG1heGltdW0gdGltZSBgZnVuY2AgaXMgYWxsb3dlZCB0byBiZSBkZWxheWVkIGJlZm9yZSBpdCdzIGludm9rZWQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy50cmFpbGluZz10cnVlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGRlYm91bmNlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gQXZvaWQgY29zdGx5IGNhbGN1bGF0aW9ucyB3aGlsZSB0aGUgd2luZG93IHNpemUgaXMgaW4gZmx1eC5cbiAgICAgKiBqUXVlcnkod2luZG93KS5vbigncmVzaXplJywgXy5kZWJvdW5jZShjYWxjdWxhdGVMYXlvdXQsIDE1MCkpO1xuICAgICAqXG4gICAgICogLy8gSW52b2tlIGBzZW5kTWFpbGAgd2hlbiBjbGlja2VkLCBkZWJvdW5jaW5nIHN1YnNlcXVlbnQgY2FsbHMuXG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIF8uZGVib3VuY2Uoc2VuZE1haWwsIDMwMCwge1xuICAgICAqICAgJ2xlYWRpbmcnOiB0cnVlLFxuICAgICAqICAgJ3RyYWlsaW5nJzogZmFsc2VcbiAgICAgKiB9KSk7XG4gICAgICpcbiAgICAgKiAvLyBFbnN1cmUgYGJhdGNoTG9nYCBpcyBpbnZva2VkIG9uY2UgYWZ0ZXIgMSBzZWNvbmQgb2YgZGVib3VuY2VkIGNhbGxzLlxuICAgICAqIHZhciBkZWJvdW5jZWQgPSBfLmRlYm91bmNlKGJhdGNoTG9nLCAyNTAsIHsgJ21heFdhaXQnOiAxMDAwIH0pO1xuICAgICAqIHZhciBzb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2UoJy9zdHJlYW0nKTtcbiAgICAgKiBqUXVlcnkoc291cmNlKS5vbignbWVzc2FnZScsIGRlYm91bmNlZCk7XG4gICAgICpcbiAgICAgKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIGRlYm91bmNlZCBpbnZvY2F0aW9uLlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIGRlYm91bmNlZC5jYW5jZWwpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBsYXN0QXJncyxcbiAgICAgICAgICBsYXN0VGhpcyxcbiAgICAgICAgICBtYXhXYWl0LFxuICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICB0aW1lcklkLFxuICAgICAgICAgIGxhc3RDYWxsVGltZSxcbiAgICAgICAgICBsYXN0SW52b2tlVGltZSA9IDAsXG4gICAgICAgICAgbGVhZGluZyA9IGZhbHNlLFxuICAgICAgICAgIG1heGluZyA9IGZhbHNlLFxuICAgICAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgd2FpdCA9IHRvTnVtYmVyKHdhaXQpIHx8IDA7XG4gICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgbGVhZGluZyA9ICEhb3B0aW9ucy5sZWFkaW5nO1xuICAgICAgICBtYXhpbmcgPSAnbWF4V2FpdCcgaW4gb3B0aW9ucztcbiAgICAgICAgbWF4V2FpdCA9IG1heGluZyA/IG5hdGl2ZU1heCh0b051bWJlcihvcHRpb25zLm1heFdhaXQpIHx8IDAsIHdhaXQpIDogbWF4V2FpdDtcbiAgICAgICAgdHJhaWxpbmcgPSAndHJhaWxpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMudHJhaWxpbmcgOiB0cmFpbGluZztcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gaW52b2tlRnVuYyh0aW1lKSB7XG4gICAgICAgIHZhciBhcmdzID0gbGFzdEFyZ3MsXG4gICAgICAgICAgICB0aGlzQXJnID0gbGFzdFRoaXM7XG5cbiAgICAgICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBsZWFkaW5nRWRnZSh0aW1lKSB7XG4gICAgICAgIC8vIFJlc2V0IGFueSBgbWF4V2FpdGAgdGltZXIuXG4gICAgICAgIGxhc3RJbnZva2VUaW1lID0gdGltZTtcbiAgICAgICAgLy8gU3RhcnQgdGhlIHRpbWVyIGZvciB0aGUgdHJhaWxpbmcgZWRnZS5cbiAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgLy8gSW52b2tlIHRoZSBsZWFkaW5nIGVkZ2UuXG4gICAgICAgIHJldHVybiBsZWFkaW5nID8gaW52b2tlRnVuYyh0aW1lKSA6IHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gcmVtYWluaW5nV2FpdCh0aW1lKSB7XG4gICAgICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lLFxuICAgICAgICAgICAgdGltZVdhaXRpbmcgPSB3YWl0IC0gdGltZVNpbmNlTGFzdENhbGw7XG5cbiAgICAgICAgcmV0dXJuIG1heGluZ1xuICAgICAgICAgID8gbmF0aXZlTWluKHRpbWVXYWl0aW5nLCBtYXhXYWl0IC0gdGltZVNpbmNlTGFzdEludm9rZSlcbiAgICAgICAgICA6IHRpbWVXYWl0aW5nO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBzaG91bGRJbnZva2UodGltZSkge1xuICAgICAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICAgICAgdGltZVNpbmNlTGFzdEludm9rZSA9IHRpbWUgLSBsYXN0SW52b2tlVGltZTtcblxuICAgICAgICAvLyBFaXRoZXIgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCwgYWN0aXZpdHkgaGFzIHN0b3BwZWQgYW5kIHdlJ3JlIGF0IHRoZVxuICAgICAgICAvLyB0cmFpbGluZyBlZGdlLCB0aGUgc3lzdGVtIHRpbWUgaGFzIGdvbmUgYmFja3dhcmRzIGFuZCB3ZSdyZSB0cmVhdGluZ1xuICAgICAgICAvLyBpdCBhcyB0aGUgdHJhaWxpbmcgZWRnZSwgb3Igd2UndmUgaGl0IHRoZSBgbWF4V2FpdGAgbGltaXQuXG4gICAgICAgIHJldHVybiAobGFzdENhbGxUaW1lID09PSB1bmRlZmluZWQgfHwgKHRpbWVTaW5jZUxhc3RDYWxsID49IHdhaXQpIHx8XG4gICAgICAgICAgKHRpbWVTaW5jZUxhc3RDYWxsIDwgMCkgfHwgKG1heGluZyAmJiB0aW1lU2luY2VMYXN0SW52b2tlID49IG1heFdhaXQpKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gdGltZXJFeHBpcmVkKCkge1xuICAgICAgICB2YXIgdGltZSA9IG5vdygpO1xuICAgICAgICBpZiAoc2hvdWxkSW52b2tlKHRpbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHRyYWlsaW5nRWRnZSh0aW1lKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXN0YXJ0IHRoZSB0aW1lci5cbiAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCByZW1haW5pbmdXYWl0KHRpbWUpKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gdHJhaWxpbmdFZGdlKHRpbWUpIHtcbiAgICAgICAgdGltZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgICAgICAvLyBPbmx5IGludm9rZSBpZiB3ZSBoYXZlIGBsYXN0QXJnc2Agd2hpY2ggbWVhbnMgYGZ1bmNgIGhhcyBiZWVuXG4gICAgICAgIC8vIGRlYm91bmNlZCBhdCBsZWFzdCBvbmNlLlxuICAgICAgICBpZiAodHJhaWxpbmcgJiYgbGFzdEFyZ3MpIHtcbiAgICAgICAgICByZXR1cm4gaW52b2tlRnVuYyh0aW1lKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgICAgIGlmICh0aW1lcklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXJJZCk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdEludm9rZVRpbWUgPSAwO1xuICAgICAgICBsYXN0QXJncyA9IGxhc3RDYWxsVGltZSA9IGxhc3RUaGlzID0gdGltZXJJZCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgICAgIHJldHVybiB0aW1lcklkID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiB0cmFpbGluZ0VkZ2Uobm93KCkpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBkZWJvdW5jZWQoKSB7XG4gICAgICAgIHZhciB0aW1lID0gbm93KCksXG4gICAgICAgICAgICBpc0ludm9raW5nID0gc2hvdWxkSW52b2tlKHRpbWUpO1xuXG4gICAgICAgIGxhc3RBcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBsYXN0VGhpcyA9IHRoaXM7XG4gICAgICAgIGxhc3RDYWxsVGltZSA9IHRpbWU7XG5cbiAgICAgICAgaWYgKGlzSW52b2tpbmcpIHtcbiAgICAgICAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gbGVhZGluZ0VkZ2UobGFzdENhbGxUaW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1heGluZykge1xuICAgICAgICAgICAgLy8gSGFuZGxlIGludm9jYXRpb25zIGluIGEgdGlnaHQgbG9vcC5cbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICAgICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgICAgICByZXR1cm4gaW52b2tlRnVuYyhsYXN0Q2FsbFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgZGVib3VuY2VkLmNhbmNlbCA9IGNhbmNlbDtcbiAgICAgIGRlYm91bmNlZC5mbHVzaCA9IGZsdXNoO1xuICAgICAgcmV0dXJuIGRlYm91bmNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZlcnMgaW52b2tpbmcgdGhlIGBmdW5jYCB1bnRpbCB0aGUgY3VycmVudCBjYWxsIHN0YWNrIGhhcyBjbGVhcmVkLiBBbnlcbiAgICAgKiBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gYGZ1bmNgIHdoZW4gaXQncyBpbnZva2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVmZXIuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXIgaWQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmZXIoZnVuY3Rpb24odGV4dCkge1xuICAgICAqICAgY29uc29sZS5sb2codGV4dCk7XG4gICAgICogfSwgJ2RlZmVycmVkJyk7XG4gICAgICogLy8gPT4gTG9ncyAnZGVmZXJyZWQnIGFmdGVyIG9uZSBtaWxsaXNlY29uZC5cbiAgICAgKi9cbiAgICB2YXIgZGVmZXIgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBhcmdzKSB7XG4gICAgICByZXR1cm4gYmFzZURlbGF5KGZ1bmMsIDEsIGFyZ3MpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyBgZnVuY2AgYWZ0ZXIgYHdhaXRgIG1pbGxpc2Vjb25kcy4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZVxuICAgICAqIHByb3ZpZGVkIHRvIGBmdW5jYCB3aGVuIGl0J3MgaW52b2tlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3YWl0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5IGludm9jYXRpb24uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXIgaWQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVsYXkoZnVuY3Rpb24odGV4dCkge1xuICAgICAqICAgY29uc29sZS5sb2codGV4dCk7XG4gICAgICogfSwgMTAwMCwgJ2xhdGVyJyk7XG4gICAgICogLy8gPT4gTG9ncyAnbGF0ZXInIGFmdGVyIG9uZSBzZWNvbmQuXG4gICAgICovXG4gICAgdmFyIGRlbGF5ID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgd2FpdCwgYXJncykge1xuICAgICAgcmV0dXJuIGJhc2VEZWxheShmdW5jLCB0b051bWJlcih3YWl0KSB8fCAwLCBhcmdzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYXJndW1lbnRzIHJldmVyc2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZmxpcCBhcmd1bWVudHMgZm9yLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZsaXBwZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmbGlwcGVkID0gXy5mbGlwKGZ1bmN0aW9uKCkge1xuICAgICAqICAgcmV0dXJuIF8udG9BcnJheShhcmd1bWVudHMpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogZmxpcHBlZCgnYScsICdiJywgJ2MnLCAnZCcpO1xuICAgICAqIC8vID0+IFsnZCcsICdjJywgJ2InLCAnYSddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxpcChmdW5jKSB7XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX0ZMSVBfRkxBRyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbWVtb2l6ZXMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuIElmIGByZXNvbHZlcmAgaXNcbiAgICAgKiBwcm92aWRlZCwgaXQgZGV0ZXJtaW5lcyB0aGUgY2FjaGUga2V5IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlXG4gICAgICogYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbi4gQnkgZGVmYXVsdCwgdGhlIGZpcnN0IGFyZ3VtZW50XG4gICAgICogcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlIG1hcCBjYWNoZSBrZXkuIFRoZSBgZnVuY2BcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBtZW1vaXplZCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGUgY2FjaGUgaXMgZXhwb3NlZCBhcyB0aGUgYGNhY2hlYCBwcm9wZXJ0eSBvbiB0aGUgbWVtb2l6ZWRcbiAgICAgKiBmdW5jdGlvbi4gSXRzIGNyZWF0aW9uIG1heSBiZSBjdXN0b21pemVkIGJ5IHJlcGxhY2luZyB0aGUgYF8ubWVtb2l6ZS5DYWNoZWBcbiAgICAgKiBjb25zdHJ1Y3RvciB3aXRoIG9uZSB3aG9zZSBpbnN0YW5jZXMgaW1wbGVtZW50IHRoZVxuICAgICAqIFtgTWFwYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcHJvcGVydGllcy1vZi10aGUtbWFwLXByb3RvdHlwZS1vYmplY3QpXG4gICAgICogbWV0aG9kIGludGVyZmFjZSBvZiBgY2xlYXJgLCBgZGVsZXRlYCwgYGdldGAsIGBoYXNgLCBhbmQgYHNldGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3Jlc29sdmVyXSBUaGUgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgY2FjaGUga2V5LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICAgICAqIHZhciBvdGhlciA9IHsgJ2MnOiAzLCAnZCc6IDQgfTtcbiAgICAgKlxuICAgICAqIHZhciB2YWx1ZXMgPSBfLm1lbW9pemUoXy52YWx1ZXMpO1xuICAgICAqIHZhbHVlcyhvYmplY3QpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogdmFsdWVzKG90aGVyKTtcbiAgICAgKiAvLyA9PiBbMywgNF1cbiAgICAgKlxuICAgICAqIG9iamVjdC5hID0gMjtcbiAgICAgKiB2YWx1ZXMob2JqZWN0KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIC8vIE1vZGlmeSB0aGUgcmVzdWx0IGNhY2hlLlxuICAgICAqIHZhbHVlcy5jYWNoZS5zZXQob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAgICAgKiB2YWx1ZXMob2JqZWN0KTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddXG4gICAgICpcbiAgICAgKiAvLyBSZXBsYWNlIGBfLm1lbW9pemUuQ2FjaGVgLlxuICAgICAqIF8ubWVtb2l6ZS5DYWNoZSA9IFdlYWtNYXA7XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVtb2l6ZShmdW5jLCByZXNvbHZlcikge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicgfHwgKHJlc29sdmVyICE9IG51bGwgJiYgdHlwZW9mIHJlc29sdmVyICE9ICdmdW5jdGlvbicpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHZhciBtZW1vaXplZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgICAgIGtleSA9IHJlc29sdmVyID8gcmVzb2x2ZXIuYXBwbHkodGhpcywgYXJncykgOiBhcmdzWzBdLFxuICAgICAgICAgICAgY2FjaGUgPSBtZW1vaXplZC5jYWNoZTtcblxuICAgICAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIG1lbW9pemVkLmNhY2hlID0gY2FjaGUuc2V0KGtleSwgcmVzdWx0KSB8fCBjYWNoZTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgICBtZW1vaXplZC5jYWNoZSA9IG5ldyAobWVtb2l6ZS5DYWNoZSB8fCBNYXBDYWNoZSk7XG4gICAgICByZXR1cm4gbWVtb2l6ZWQ7XG4gICAgfVxuXG4gICAgLy8gRXhwb3NlIGBNYXBDYWNoZWAuXG4gICAgbWVtb2l6ZS5DYWNoZSA9IE1hcENhY2hlO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbmVnYXRlcyB0aGUgcmVzdWx0IG9mIHRoZSBwcmVkaWNhdGUgYGZ1bmNgLiBUaGVcbiAgICAgKiBgZnVuY2AgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgYW5kIGFyZ3VtZW50cyBvZiB0aGVcbiAgICAgKiBjcmVhdGVkIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBwcmVkaWNhdGUgdG8gbmVnYXRlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG5lZ2F0ZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGlzRXZlbihuKSB7XG4gICAgICogICByZXR1cm4gbiAlIDIgPT0gMDtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcihbMSwgMiwgMywgNCwgNSwgNl0sIF8ubmVnYXRlKGlzRXZlbikpO1xuICAgICAqIC8vID0+IFsxLCAzLCA1XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5lZ2F0ZShwcmVkaWNhdGUpIHtcbiAgICAgIGlmICh0eXBlb2YgcHJlZGljYXRlICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMDogcmV0dXJuICFwcmVkaWNhdGUuY2FsbCh0aGlzKTtcbiAgICAgICAgICBjYXNlIDE6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcywgYXJnc1swXSk7XG4gICAgICAgICAgY2FzZSAyOiByZXR1cm4gIXByZWRpY2F0ZS5jYWxsKHRoaXMsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuICFwcmVkaWNhdGUuY2FsbCh0aGlzLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIXByZWRpY2F0ZS5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaXMgcmVzdHJpY3RlZCB0byBpbnZva2luZyBgZnVuY2Agb25jZS4gUmVwZWF0IGNhbGxzXG4gICAgICogdG8gdGhlIGZ1bmN0aW9uIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGludm9jYXRpb24uIFRoZSBgZnVuY2AgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZXN0cmljdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgaW5pdGlhbGl6ZSA9IF8ub25jZShjcmVhdGVBcHBsaWNhdGlvbik7XG4gICAgICogaW5pdGlhbGl6ZSgpO1xuICAgICAqIGluaXRpYWxpemUoKTtcbiAgICAgKiAvLyA9PiBgY3JlYXRlQXBwbGljYXRpb25gIGlzIGludm9rZWQgb25jZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9uY2UoZnVuYykge1xuICAgICAgcmV0dXJuIGJlZm9yZSgyLCBmdW5jKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudHMgdHJhbnNmb3JtZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbdHJhbnNmb3Jtcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm1zLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBkb3VibGVkKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyQXJncyhmdW5jdGlvbih4LCB5KSB7XG4gICAgICogICByZXR1cm4gW3gsIHldO1xuICAgICAqIH0sIFtzcXVhcmUsIGRvdWJsZWRdKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoOSwgMyk7XG4gICAgICogLy8gPT4gWzgxLCA2XVxuICAgICAqXG4gICAgICogZnVuYygxMCwgNSk7XG4gICAgICogLy8gPT4gWzEwMCwgMTBdXG4gICAgICovXG4gICAgdmFyIG92ZXJBcmdzID0gY2FzdFJlc3QoZnVuY3Rpb24oZnVuYywgdHJhbnNmb3Jtcykge1xuICAgICAgdHJhbnNmb3JtcyA9ICh0cmFuc2Zvcm1zLmxlbmd0aCA9PSAxICYmIGlzQXJyYXkodHJhbnNmb3Jtc1swXSkpXG4gICAgICAgID8gYXJyYXlNYXAodHJhbnNmb3Jtc1swXSwgYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKVxuICAgICAgICA6IGFycmF5TWFwKGJhc2VGbGF0dGVuKHRyYW5zZm9ybXMsIDEpLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO1xuXG4gICAgICB2YXIgZnVuY3NMZW5ndGggPSB0cmFuc2Zvcm1zLmxlbmd0aDtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKGFyZ3MubGVuZ3RoLCBmdW5jc0xlbmd0aCk7XG5cbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBhcmdzW2luZGV4XSA9IHRyYW5zZm9ybXNbaW5kZXhdLmNhbGwodGhpcywgYXJnc1tpbmRleF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBhcmdzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBgcGFydGlhbHNgIHByZXBlbmRlZCB0byB0aGVcbiAgICAgKiBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYmluZGAgZXhjZXB0IGl0IGRvZXMgKipub3QqKlxuICAgICAqIGFsdGVyIHRoZSBgdGhpc2AgYmluZGluZy5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5wYXJ0aWFsLnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBwYXJ0aWFsbHlcbiAgICAgKiBhcHBsaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjIuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHBhcnRpYWxseSBhcHBseSBhcmd1bWVudHMgdG8uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFydGlhbGx5IGFwcGxpZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGdyZWV0KGdyZWV0aW5nLCBuYW1lKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyBuYW1lO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBzYXlIZWxsb1RvID0gXy5wYXJ0aWFsKGdyZWV0LCAnaGVsbG8nKTtcbiAgICAgKiBzYXlIZWxsb1RvKCdmcmVkJyk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBQYXJ0aWFsbHkgYXBwbGllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiB2YXIgZ3JlZXRGcmVkID0gXy5wYXJ0aWFsKGdyZWV0LCBfLCAnZnJlZCcpO1xuICAgICAqIGdyZWV0RnJlZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCdcbiAgICAgKi9cbiAgICB2YXIgcGFydGlhbCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgaG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLCBnZXRIb2xkZXIocGFydGlhbCkpO1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9QQVJUSUFMX0ZMQUcsIHVuZGVmaW5lZCwgcGFydGlhbHMsIGhvbGRlcnMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wYXJ0aWFsYCBleGNlcHQgdGhhdCBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHNcbiAgICAgKiBhcmUgYXBwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5wYXJ0aWFsUmlnaHQucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpY1xuICAgICAqIGJ1aWxkcywgbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIHBhcnRpYWxseVxuICAgICAqIGFwcGxpZWQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcGFydGlhbGx5IGFwcGx5IGFyZ3VtZW50cyB0by5cbiAgICAgKiBAcGFyYW0gey4uLip9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYXJ0aWFsbHkgYXBwbGllZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZ3JlZXQoZ3JlZXRpbmcsIG5hbWUpIHtcbiAgICAgKiAgIHJldHVybiBncmVldGluZyArICcgJyArIG5hbWU7XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGdyZWV0RnJlZCA9IF8ucGFydGlhbFJpZ2h0KGdyZWV0LCAnZnJlZCcpO1xuICAgICAqIGdyZWV0RnJlZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFBhcnRpYWxseSBhcHBsaWVkIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIHZhciBzYXlIZWxsb1RvID0gXy5wYXJ0aWFsUmlnaHQoZ3JlZXQsICdoZWxsbycsIF8pO1xuICAgICAqIHNheUhlbGxvVG8oJ2ZyZWQnKTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gZnJlZCdcbiAgICAgKi9cbiAgICB2YXIgcGFydGlhbFJpZ2h0ID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgcGFydGlhbHMpIHtcbiAgICAgIHZhciBob2xkZXJzID0gcmVwbGFjZUhvbGRlcnMocGFydGlhbHMsIGdldEhvbGRlcihwYXJ0aWFsUmlnaHQpKTtcbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHLCB1bmRlZmluZWQsIHBhcnRpYWxzLCBob2xkZXJzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYXJndW1lbnRzIGFycmFuZ2VkIGFjY29yZGluZ1xuICAgICAqIHRvIHRoZSBzcGVjaWZpZWQgYGluZGV4ZXNgIHdoZXJlIHRoZSBhcmd1bWVudCB2YWx1ZSBhdCB0aGUgZmlyc3QgaW5kZXggaXNcbiAgICAgKiBwcm92aWRlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQsIHRoZSBhcmd1bWVudCB2YWx1ZSBhdCB0aGUgc2Vjb25kIGluZGV4IGlzXG4gICAgICogcHJvdmlkZWQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCwgYW5kIHNvIG9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVhcnJhbmdlIGFyZ3VtZW50cyBmb3IuXG4gICAgICogQHBhcmFtIHsuLi4obnVtYmVyfG51bWJlcltdKX0gaW5kZXhlcyBUaGUgYXJyYW5nZWQgYXJndW1lbnQgaW5kZXhlcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHJlYXJnZWQgPSBfLnJlYXJnKGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBbYSwgYiwgY107XG4gICAgICogfSwgWzIsIDAsIDFdKTtcbiAgICAgKlxuICAgICAqIHJlYXJnZWQoJ2InLCAnYycsICdhJylcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAgICAgKi9cbiAgICB2YXIgcmVhcmcgPSBmbGF0UmVzdChmdW5jdGlvbihmdW5jLCBpbmRleGVzKSB7XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX1JFQVJHX0ZMQUcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGluZGV4ZXMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlXG4gICAgICogY3JlYXRlZCBmdW5jdGlvbiBhbmQgYXJndW1lbnRzIGZyb20gYHN0YXJ0YCBhbmQgYmV5b25kIHByb3ZpZGVkIGFzXG4gICAgICogYW4gYXJyYXkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb24gdGhlXG4gICAgICogW3Jlc3QgcGFyYW1ldGVyXShodHRwczovL21kbi5pby9yZXN0X3BhcmFtZXRlcnMpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBzYXkgPSBfLnJlc3QoZnVuY3Rpb24od2hhdCwgbmFtZXMpIHtcbiAgICAgKiAgIHJldHVybiB3aGF0ICsgJyAnICsgXy5pbml0aWFsKG5hbWVzKS5qb2luKCcsICcpICtcbiAgICAgKiAgICAgKF8uc2l6ZShuYW1lcykgPiAxID8gJywgJiAnIDogJycpICsgXy5sYXN0KG5hbWVzKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIHNheSgnaGVsbG8nLCAnZnJlZCcsICdiYXJuZXknLCAncGViYmxlcycpO1xuICAgICAqIC8vID0+ICdoZWxsbyBmcmVkLCBiYXJuZXksICYgcGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBzdGFydCA9IHN0YXJ0ID09PSB1bmRlZmluZWQgPyBzdGFydCA6IHRvSW50ZWdlcihzdGFydCk7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuYywgc3RhcnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZVxuICAgICAqIGNyZWF0ZSBmdW5jdGlvbiBhbmQgYW4gYXJyYXkgb2YgYXJndW1lbnRzIG11Y2ggbGlrZVxuICAgICAqIFtgRnVuY3Rpb24jYXBwbHlgXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGVcbiAgICAgKiBbc3ByZWFkIG9wZXJhdG9yXShodHRwczovL21kbi5pby9zcHJlYWRfb3BlcmF0b3IpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gc3ByZWFkIGFyZ3VtZW50cyBvdmVyLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSBzcHJlYWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBzYXkgPSBfLnNwcmVhZChmdW5jdGlvbih3aG8sIHdoYXQpIHtcbiAgICAgKiAgIHJldHVybiB3aG8gKyAnIHNheXMgJyArIHdoYXQ7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBzYXkoWydmcmVkJywgJ2hlbGxvJ10pO1xuICAgICAqIC8vID0+ICdmcmVkIHNheXMgaGVsbG8nXG4gICAgICpcbiAgICAgKiB2YXIgbnVtYmVycyA9IFByb21pc2UuYWxsKFtcbiAgICAgKiAgIFByb21pc2UucmVzb2x2ZSg0MCksXG4gICAgICogICBQcm9taXNlLnJlc29sdmUoMzYpXG4gICAgICogXSk7XG4gICAgICpcbiAgICAgKiBudW1iZXJzLnRoZW4oXy5zcHJlYWQoZnVuY3Rpb24oeCwgeSkge1xuICAgICAqICAgcmV0dXJuIHggKyB5O1xuICAgICAqIH0pKTtcbiAgICAgKiAvLyA9PiBhIFByb21pc2Ugb2YgNzZcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzcHJlYWQoZnVuYywgc3RhcnQpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gc3RhcnQgPT0gbnVsbCA/IDAgOiBuYXRpdmVNYXgodG9JbnRlZ2VyKHN0YXJ0KSwgMCk7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgICB2YXIgYXJyYXkgPSBhcmdzW3N0YXJ0XSxcbiAgICAgICAgICAgIG90aGVyQXJncyA9IGNhc3RTbGljZShhcmdzLCAwLCBzdGFydCk7XG5cbiAgICAgICAgaWYgKGFycmF5KSB7XG4gICAgICAgICAgYXJyYXlQdXNoKG90aGVyQXJncywgYXJyYXkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBvdGhlckFyZ3MpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHRocm90dGxlZCBmdW5jdGlvbiB0aGF0IG9ubHkgaW52b2tlcyBgZnVuY2AgYXQgbW9zdCBvbmNlIHBlclxuICAgICAqIGV2ZXJ5IGB3YWl0YCBtaWxsaXNlY29uZHMuIFRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gY29tZXMgd2l0aCBhIGBjYW5jZWxgXG4gICAgICogbWV0aG9kIHRvIGNhbmNlbCBkZWxheWVkIGBmdW5jYCBpbnZvY2F0aW9ucyBhbmQgYSBgZmx1c2hgIG1ldGhvZCB0b1xuICAgICAqIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYFxuICAgICAqIHNob3VsZCBiZSBpbnZva2VkIG9uIHRoZSBsZWFkaW5nIGFuZC9vciB0cmFpbGluZyBlZGdlIG9mIHRoZSBgd2FpdGBcbiAgICAgKiB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWQgd2l0aCB0aGUgbGFzdCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlXG4gICAgICogdGhyb3R0bGVkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50IGNhbGxzIHRvIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gcmV0dXJuIHRoZVxuICAgICAqIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2AgaW52b2NhdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAgICAgKiBpbnZva2VkIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0IG9ubHkgaWYgdGhlIHRocm90dGxlZCBmdW5jdGlvblxuICAgICAqIGlzIGludm9rZWQgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBgd2FpdGAgdGltZW91dC5cbiAgICAgKlxuICAgICAqIElmIGB3YWl0YCBpcyBgMGAgYW5kIGBsZWFkaW5nYCBpcyBgZmFsc2VgLCBgZnVuY2AgaW52b2NhdGlvbiBpcyBkZWZlcnJlZFxuICAgICAqIHVudGlsIHRvIHRoZSBuZXh0IHRpY2ssIHNpbWlsYXIgdG8gYHNldFRpbWVvdXRgIHdpdGggYSB0aW1lb3V0IG9mIGAwYC5cbiAgICAgKlxuICAgICAqIFNlZSBbRGF2aWQgQ29yYmFjaG8ncyBhcnRpY2xlXShodHRwczovL2Nzcy10cmlja3MuY29tL2RlYm91bmNpbmctdGhyb3R0bGluZy1leHBsYWluZWQtZXhhbXBsZXMvKVxuICAgICAqIGZvciBkZXRhaWxzIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYF8udGhyb3R0bGVgIGFuZCBgXy5kZWJvdW5jZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB0aHJvdHRsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhyb3R0bGUgaW52b2NhdGlvbnMgdG8uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sZWFkaW5nPXRydWVdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnRyYWlsaW5nPXRydWVdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgdGhyb3R0bGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBBdm9pZCBleGNlc3NpdmVseSB1cGRhdGluZyB0aGUgcG9zaXRpb24gd2hpbGUgc2Nyb2xsaW5nLlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdzY3JvbGwnLCBfLnRocm90dGxlKHVwZGF0ZVBvc2l0aW9uLCAxMDApKTtcbiAgICAgKlxuICAgICAqIC8vIEludm9rZSBgcmVuZXdUb2tlbmAgd2hlbiB0aGUgY2xpY2sgZXZlbnQgaXMgZmlyZWQsIGJ1dCBub3QgbW9yZSB0aGFuIG9uY2UgZXZlcnkgNSBtaW51dGVzLlxuICAgICAqIHZhciB0aHJvdHRsZWQgPSBfLnRocm90dGxlKHJlbmV3VG9rZW4sIDMwMDAwMCwgeyAndHJhaWxpbmcnOiBmYWxzZSB9KTtcbiAgICAgKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgdGhyb3R0bGVkKTtcbiAgICAgKlxuICAgICAqIC8vIENhbmNlbCB0aGUgdHJhaWxpbmcgdGhyb3R0bGVkIGludm9jYXRpb24uXG4gICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgdGhyb3R0bGVkLmNhbmNlbCk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gdGhyb3R0bGUoZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICAgICAgdmFyIGxlYWRpbmcgPSB0cnVlLFxuICAgICAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIGxlYWRpbmcgPSAnbGVhZGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy5sZWFkaW5nIDogbGVhZGluZztcbiAgICAgICAgdHJhaWxpbmcgPSAndHJhaWxpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMudHJhaWxpbmcgOiB0cmFpbGluZztcbiAgICAgIH1cbiAgICAgIHJldHVybiBkZWJvdW5jZShmdW5jLCB3YWl0LCB7XG4gICAgICAgICdsZWFkaW5nJzogbGVhZGluZyxcbiAgICAgICAgJ21heFdhaXQnOiB3YWl0LFxuICAgICAgICAndHJhaWxpbmcnOiB0cmFpbGluZ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB1cCB0byBvbmUgYXJndW1lbnQsIGlnbm9yaW5nIGFueVxuICAgICAqIGFkZGl0aW9uYWwgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1hcChbJzYnLCAnOCcsICcxMCddLCBfLnVuYXJ5KHBhcnNlSW50KSk7XG4gICAgICogLy8gPT4gWzYsIDgsIDEwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuYXJ5KGZ1bmMpIHtcbiAgICAgIHJldHVybiBhcnkoZnVuYywgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgYHZhbHVlYCB0byBgd3JhcHBlcmAgYXMgaXRzIGZpcnN0XG4gICAgICogYXJndW1lbnQuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgZnVuY3Rpb24gYXJlIGFwcGVuZGVkXG4gICAgICogdG8gdGhvc2UgcHJvdmlkZWQgdG8gdGhlIGB3cmFwcGVyYC4gVGhlIHdyYXBwZXIgaXMgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2BcbiAgICAgKiBiaW5kaW5nIG9mIHRoZSBjcmVhdGVkIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbd3JhcHBlcj1pZGVudGl0eV0gVGhlIHdyYXBwZXIgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBwID0gXy53cmFwKF8uZXNjYXBlLCBmdW5jdGlvbihmdW5jLCB0ZXh0KSB7XG4gICAgICogICByZXR1cm4gJzxwPicgKyBmdW5jKHRleHQpICsgJzwvcD4nO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogcCgnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnPHA+ZnJlZCwgYmFybmV5LCAmYW1wOyBwZWJibGVzPC9wPidcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwKHZhbHVlLCB3cmFwcGVyKSB7XG4gICAgICByZXR1cm4gcGFydGlhbChjYXN0RnVuY3Rpb24od3JhcHBlciksIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgdmFsdWVgIGFzIGFuIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjQuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KDEpO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkoeyAnYSc6IDEgfSk7XG4gICAgICogLy8gPT4gW3sgJ2EnOiAxIH1dXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSgnYWJjJyk7XG4gICAgICogLy8gPT4gWydhYmMnXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkobnVsbCk7XG4gICAgICogLy8gPT4gW251bGxdXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSh1bmRlZmluZWQpO1xuICAgICAqIC8vID0+IFt1bmRlZmluZWRdXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSgpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgM107XG4gICAgICogY29uc29sZS5sb2coXy5jYXN0QXJyYXkoYXJyYXkpID09PSBhcnJheSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RBcnJheSgpIHtcbiAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgdmFsdWUgPSBhcmd1bWVudHNbMF07XG4gICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNoYWxsb3cgY2xvbmUgb2YgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uIHRoZVxuICAgICAqIFtzdHJ1Y3R1cmVkIGNsb25lIGFsZ29yaXRobV0oaHR0cHM6Ly9tZG4uaW8vU3RydWN0dXJlZF9jbG9uZV9hbGdvcml0aG0pXG4gICAgICogYW5kIHN1cHBvcnRzIGNsb25pbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucywgZGF0ZSBvYmplY3RzLCBtYXBzLFxuICAgICAqIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZFxuICAgICAqIGFycmF5cy4gVGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgYGFyZ3VtZW50c2Agb2JqZWN0cyBhcmUgY2xvbmVkXG4gICAgICogYXMgcGxhaW4gb2JqZWN0cy4gQW4gZW1wdHkgb2JqZWN0IGlzIHJldHVybmVkIGZvciB1bmNsb25lYWJsZSB2YWx1ZXMgc3VjaFxuICAgICAqIGFzIGVycm9yIG9iamVjdHMsIGZ1bmN0aW9ucywgRE9NIG5vZGVzLCBhbmQgV2Vha01hcHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLmNsb25lRGVlcFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAgICAgKlxuICAgICAqIHZhciBzaGFsbG93ID0gXy5jbG9uZShvYmplY3RzKTtcbiAgICAgKiBjb25zb2xlLmxvZyhzaGFsbG93WzBdID09PSBvYmplY3RzWzBdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmUodmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX1NZTUJPTFNfRkxBRyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIGNsb25lZCB2YWx1ZS4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsXG4gICAgICogY2xvbmluZyBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGhcbiAgICAgKiB1cCB0byBmb3VyIGFyZ3VtZW50czsgKHZhbHVlIFssIGluZGV4fGtleSwgb2JqZWN0LCBzdGFja10pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLmNsb25lRGVlcFdpdGhcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcih2YWx1ZSkge1xuICAgICAqICAgaWYgKF8uaXNFbGVtZW50KHZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdmFsdWUuY2xvbmVOb2RlKGZhbHNlKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZWwgPSBfLmNsb25lV2l0aChkb2N1bWVudC5ib2R5LCBjdXN0b21pemVyKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGVsID09PSBkb2N1bWVudC5ib2R5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqIGNvbnNvbGUubG9nKGVsLm5vZGVOYW1lKTtcbiAgICAgKiAvLyA9PiAnQk9EWSdcbiAgICAgKiBjb25zb2xlLmxvZyhlbC5jaGlsZE5vZGVzLmxlbmd0aCk7XG4gICAgICogLy8gPT4gMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lV2l0aCh2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmNsb25lYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBjbG9uZXMgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVjdXJzaXZlbHkgY2xvbmUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5jbG9uZVxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAgICAgKlxuICAgICAqIHZhciBkZWVwID0gXy5jbG9uZURlZXAob2JqZWN0cyk7XG4gICAgICogY29uc29sZS5sb2coZGVlcFswXSA9PT0gb2JqZWN0c1swXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZURlZXAodmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZVdpdGhgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGNsb25lcyBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZWN1cnNpdmVseSBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBkZWVwIGNsb25lZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8uY2xvbmVXaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIodmFsdWUpIHtcbiAgICAgKiAgIGlmIChfLmlzRWxlbWVudCh2YWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHZhbHVlLmNsb25lTm9kZSh0cnVlKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZWwgPSBfLmNsb25lRGVlcFdpdGgoZG9jdW1lbnQuYm9keSwgY3VzdG9taXplcik7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhlbCA9PT0gZG9jdW1lbnQuYm9keSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKiBjb25zb2xlLmxvZyhlbC5ub2RlTmFtZSk7XG4gICAgICogLy8gPT4gJ0JPRFknXG4gICAgICogY29uc29sZS5sb2coZWwuY2hpbGROb2Rlcy5sZW5ndGgpO1xuICAgICAqIC8vID0+IDIwXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVEZWVwV2l0aCh2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYG9iamVjdGAgY29uZm9ybXMgdG8gYHNvdXJjZWAgYnkgaW52b2tpbmcgdGhlIHByZWRpY2F0ZVxuICAgICAqIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0byBgXy5jb25mb3Jtc2Agd2hlbiBgc291cmNlYCBpc1xuICAgICAqIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTQuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgY29uZm9ybXMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAgICAgKlxuICAgICAqIF8uY29uZm9ybXNUbyhvYmplY3QsIHsgJ2InOiBmdW5jdGlvbihuKSB7IHJldHVybiBuID4gMTsgfSB9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmNvbmZvcm1zVG8ob2JqZWN0LCB7ICdiJzogZnVuY3Rpb24obikgeyByZXR1cm4gbiA+IDI7IH0gfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25mb3Jtc1RvKG9iamVjdCwgc291cmNlKSB7XG4gICAgICByZXR1cm4gc291cmNlID09IG51bGwgfHwgYmFzZUNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UsIGtleXMoc291cmNlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYVxuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICAgICAqXG4gICAgICogXy5lcShvYmplY3QsIG9iamVjdCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5lcShvYmplY3QsIG90aGVyKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5lcSgnYScsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5lcSgnYScsIE9iamVjdCgnYScpKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5lcShOYU4sIE5hTik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVxKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gYG90aGVyYCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5sdFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmd0KDMsIDEpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZ3QoMywgMyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uZ3QoMSwgMyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgZ3QgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGJhc2VHdCk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYG90aGVyYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjkuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0b1xuICAgICAqICBgb3RoZXJgLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLmx0ZVxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmd0ZSgzLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmd0ZSgzLCAzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmd0ZSgxLCAzKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBndGUgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlID49IG90aGVyO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQXJndW1lbnRzID0gYmFzZUlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID8gYmFzZUlzQXJndW1lbnRzIDogZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheSgnYWJjJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShfLm5vb3ApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlCdWZmZXJgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXkgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUJ1ZmZlcihuZXcgQXJyYXlCdWZmZXIoMikpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUJ1ZmZlcihuZXcgQXJyYXkoMikpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQXJyYXlCdWZmZXIgPSBub2RlSXNBcnJheUJ1ZmZlciA/IGJhc2VVbmFyeShub2RlSXNBcnJheUJ1ZmZlcikgOiBiYXNlSXNBcnJheUJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAgICAgKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gICAgICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0FycmF5TGlrZWAgZXhjZXB0IHRoYXQgaXQgYWxzbyBjaGVja3MgaWYgYHZhbHVlYFxuICAgICAqIGlzIGFuIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXktbGlrZSBvYmplY3QsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZU9iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZU9iamVjdCgnYWJjJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoXy5ub29wKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0FycmF5TGlrZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGJvb2xlYW4gcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBib29sZWFuLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNCb29sZWFuKGZhbHNlKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQm9vbGVhbihudWxsKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZSB8fFxuICAgICAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBib29sVGFnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRGF0ZWAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGRhdGUgb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNEYXRlKG5ldyBEYXRlKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRGF0ZSgnTW9uIEFwcmlsIDIzIDIwMTInKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0RhdGUgPSBub2RlSXNEYXRlID8gYmFzZVVuYXJ5KG5vZGVJc0RhdGUpIDogYmFzZUlzRGF0ZTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIERPTSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIERPTSBlbGVtZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNFbGVtZW50KGRvY3VtZW50LmJvZHkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFbGVtZW50KCc8Ym9keT4nKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgdmFsdWUubm9kZVR5cGUgPT09IDEgJiYgIWlzUGxhaW5PYmplY3QodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGVtcHR5IG9iamVjdCwgY29sbGVjdGlvbiwgbWFwLCBvciBzZXQuXG4gICAgICpcbiAgICAgKiBPYmplY3RzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBubyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWRcbiAgICAgKiBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQXJyYXktbGlrZSB2YWx1ZXMgc3VjaCBhcyBgYXJndW1lbnRzYCBvYmplY3RzLCBhcnJheXMsIGJ1ZmZlcnMsIHN0cmluZ3MsIG9yXG4gICAgICogalF1ZXJ5LWxpa2UgY29sbGVjdGlvbnMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYGxlbmd0aGAgb2YgYDBgLlxuICAgICAqIFNpbWlsYXJseSwgbWFwcyBhbmQgc2V0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgc2l6ZWAgb2YgYDBgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBlbXB0eSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KHRydWUpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eSgxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KHsgJ2EnOiAxIH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNBcnJheUxpa2UodmFsdWUpICYmXG4gICAgICAgICAgKGlzQXJyYXkodmFsdWUpIHx8IHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUuc3BsaWNlID09ICdmdW5jdGlvbicgfHxcbiAgICAgICAgICAgIGlzQnVmZmVyKHZhbHVlKSB8fCBpc1R5cGVkQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSkpIHtcbiAgICAgICAgcmV0dXJuICF2YWx1ZS5sZW5ndGg7XG4gICAgICB9XG4gICAgICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKTtcbiAgICAgIGlmICh0YWcgPT0gbWFwVGFnIHx8IHRhZyA9PSBzZXRUYWcpIHtcbiAgICAgICAgcmV0dXJuICF2YWx1ZS5zaXplO1xuICAgICAgfVxuICAgICAgaWYgKGlzUHJvdG90eXBlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gIWJhc2VLZXlzKHZhbHVlKS5sZW5ndGg7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGEgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmVcbiAgICAgKiBlcXVpdmFsZW50LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIHN1cHBvcnRzIGNvbXBhcmluZyBhcnJheXMsIGFycmF5IGJ1ZmZlcnMsIGJvb2xlYW5zLFxuICAgICAqIGRhdGUgb2JqZWN0cywgZXJyb3Igb2JqZWN0cywgbWFwcywgbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcyxcbiAgICAgKiBzZXRzLCBzdHJpbmdzLCBzeW1ib2xzLCBhbmQgdHlwZWQgYXJyYXlzLiBgT2JqZWN0YCBvYmplY3RzIGFyZSBjb21wYXJlZFxuICAgICAqIGJ5IHRoZWlyIG93biwgbm90IGluaGVyaXRlZCwgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLiBGdW5jdGlvbnMgYW5kIERPTVxuICAgICAqIG5vZGVzIGFyZSBjb21wYXJlZCBieSBzdHJpY3QgZXF1YWxpdHksIGkuZS4gYD09PWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICAgICAqXG4gICAgICogXy5pc0VxdWFsKG9iamVjdCwgb3RoZXIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIG9iamVjdCA9PT0gb3RoZXI7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0VxdWFsKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0VxdWFsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLCBjb21wYXJpc29uc1xuICAgICAqIGFyZSBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggdXAgdG9cbiAgICAgKiBzaXggYXJndW1lbnRzOiAob2JqVmFsdWUsIG90aFZhbHVlIFssIGluZGV4fGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2tdKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiAvXmgoPzppfGVsbG8pJC8udGVzdCh2YWx1ZSk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgb3RoVmFsdWUpIHtcbiAgICAgKiAgIGlmIChpc0dyZWV0aW5nKG9ialZhbHVlKSAmJiBpc0dyZWV0aW5nKG90aFZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbJ2hlbGxvJywgJ2dvb2RieWUnXTtcbiAgICAgKiB2YXIgb3RoZXIgPSBbJ2hpJywgJ2dvb2RieWUnXTtcbiAgICAgKlxuICAgICAqIF8uaXNFcXVhbFdpdGgoYXJyYXksIG90aGVyLCBjdXN0b21pemVyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFcXVhbFdpdGgodmFsdWUsIG90aGVyLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICB2YXIgcmVzdWx0ID0gY3VzdG9taXplciA/IGN1c3RvbWl6ZXIodmFsdWUsIG90aGVyKSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlciwgdW5kZWZpbmVkLCBjdXN0b21pemVyKSA6ICEhcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGBFcnJvcmAsIGBFdmFsRXJyb3JgLCBgUmFuZ2VFcnJvcmAsIGBSZWZlcmVuY2VFcnJvcmAsXG4gICAgICogYFN5bnRheEVycm9yYCwgYFR5cGVFcnJvcmAsIG9yIGBVUklFcnJvcmAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBlcnJvciBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0Vycm9yKG5ldyBFcnJvcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Vycm9yKEVycm9yKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRXJyb3IodmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gICAgICByZXR1cm4gdGFnID09IGVycm9yVGFnIHx8IHRhZyA9PSBkb21FeGNUYWcgfHxcbiAgICAgICAgKHR5cGVvZiB2YWx1ZS5tZXNzYWdlID09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZS5uYW1lID09ICdzdHJpbmcnICYmICFpc1BsYWluT2JqZWN0KHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBmaW5pdGUgcHJpbWl0aXZlIG51bWJlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgTnVtYmVyLmlzRmluaXRlYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzRmluaXRlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmaW5pdGUgbnVtYmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNGaW5pdGUoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRmluaXRlKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0Zpbml0ZSgnMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNGaW5pdGUodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgbmF0aXZlSXNGaW5pdGUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRnVuY3Rpb24oXyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAgICAgLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gICAgICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gICAgICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGludGVnZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYE51bWJlci5pc0ludGVnZXJgXShodHRwczovL21kbi5pby9OdW1iZXIvaXNJbnRlZ2VyKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gaW50ZWdlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcigzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcignMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNJbnRlZ2VyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIHZhbHVlID09IHRvSW50ZWdlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aCgzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aCgnMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICAgICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICAgICAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAgICAgKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0KHt9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdChfLm5vb3ApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3QobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICAgICAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2Uoe30pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYE1hcGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTWFwKG5ldyBNYXApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNNYXAobmV3IFdlYWtNYXApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzTWFwID0gbm9kZUlzTWFwID8gYmFzZVVuYXJ5KG5vZGVJc01hcCkgOiBiYXNlSXNNYXA7XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIHBhcnRpYWwgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gYG9iamVjdGAgYW5kIGBzb3VyY2VgIHRvXG4gICAgICogZGV0ZXJtaW5lIGlmIGBvYmplY3RgIGNvbnRhaW5zIGVxdWl2YWxlbnQgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8gYF8ubWF0Y2hlc2Agd2hlbiBgc291cmNlYCBpc1xuICAgICAqIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqXG4gICAgICogUGFydGlhbCBjb21wYXJpc29ucyB3aWxsIG1hdGNoIGVtcHR5IGFycmF5IGFuZCBlbXB0eSBvYmplY3QgYHNvdXJjZWBcbiAgICAgKiB2YWx1ZXMgYWdhaW5zdCBhbnkgYXJyYXkgb3Igb2JqZWN0IHZhbHVlLCByZXNwZWN0aXZlbHkuIFNlZSBgXy5pc0VxdWFsYFxuICAgICAqIGZvciBhIGxpc3Qgb2Ygc3VwcG9ydGVkIHZhbHVlIGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gICAgICpcbiAgICAgKiBfLmlzTWF0Y2gob2JqZWN0LCB7ICdiJzogMiB9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTWF0Y2gob2JqZWN0LCB7ICdiJzogMSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTWF0Y2gob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT09IHNvdXJjZSB8fCBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgZ2V0TWF0Y2hEYXRhKHNvdXJjZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNNYXRjaGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgY29tcGFyaXNvbnNcbiAgICAgKiBhcmUgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIGZpdmVcbiAgICAgKiBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGluZGV4fGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiAvXmgoPzppfGVsbG8pJC8udGVzdCh2YWx1ZSk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAgICAgKiAgIGlmIChpc0dyZWV0aW5nKG9ialZhbHVlKSAmJiBpc0dyZWV0aW5nKHNyY1ZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnZ3JlZXRpbmcnOiAnaGVsbG8nIH07XG4gICAgICogdmFyIHNvdXJjZSA9IHsgJ2dyZWV0aW5nJzogJ2hpJyB9O1xuICAgICAqXG4gICAgICogXy5pc01hdGNoV2l0aChvYmplY3QsIHNvdXJjZSwgY3VzdG9taXplcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTWF0Y2hXaXRoKG9iamVjdCwgc291cmNlLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIGdldE1hdGNoRGF0YShzb3VyY2UpLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgTmFOYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgTnVtYmVyLmlzTmFOYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzTmFOKSBhbmQgaXMgbm90IHRoZSBzYW1lIGFzXG4gICAgICogZ2xvYmFsIFtgaXNOYU5gXShodHRwczovL21kbi5pby9pc05hTikgd2hpY2ggcmV0dXJucyBgdHJ1ZWAgZm9yXG4gICAgICogYHVuZGVmaW5lZGAgYW5kIG90aGVyIG5vbi1udW1iZXIgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgTmFOYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTmFOKE5hTik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05hTihuZXcgTnVtYmVyKE5hTikpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGlzTmFOKHVuZGVmaW5lZCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05hTih1bmRlZmluZWQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOYU4odmFsdWUpIHtcbiAgICAgIC8vIEFuIGBOYU5gIHByaW1pdGl2ZSBpcyB0aGUgb25seSB2YWx1ZSB0aGF0IGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuXG4gICAgICAvLyBQZXJmb3JtIHRoZSBgdG9TdHJpbmdUYWdgIGNoZWNrIGZpcnN0IHRvIGF2b2lkIGVycm9ycyB3aXRoIHNvbWVcbiAgICAgIC8vIEFjdGl2ZVggb2JqZWN0cyBpbiBJRS5cbiAgICAgIHJldHVybiBpc051bWJlcih2YWx1ZSkgJiYgdmFsdWUgIT0gK3ZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcHJpc3RpbmUgbmF0aXZlIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGNhbid0IHJlbGlhYmx5IGRldGVjdCBuYXRpdmUgZnVuY3Rpb25zIGluIHRoZSBwcmVzZW5jZVxuICAgICAqIG9mIHRoZSBjb3JlLWpzIHBhY2thZ2UgYmVjYXVzZSBjb3JlLWpzIGNpcmN1bXZlbnRzIHRoaXMga2luZCBvZiBkZXRlY3Rpb24uXG4gICAgICogRGVzcGl0ZSBtdWx0aXBsZSByZXF1ZXN0cywgdGhlIGNvcmUtanMgbWFpbnRhaW5lciBoYXMgbWFkZSBpdCBjbGVhcjogYW55XG4gICAgICogYXR0ZW1wdCB0byBmaXggdGhlIGRldGVjdGlvbiB3aWxsIGJlIG9ic3RydWN0ZWQuIEFzIGEgcmVzdWx0LCB3ZSdyZSBsZWZ0XG4gICAgICogd2l0aCBsaXR0bGUgY2hvaWNlIGJ1dCB0byB0aHJvdyBhbiBlcnJvci4gVW5mb3J0dW5hdGVseSwgdGhpcyBhbHNvIGFmZmVjdHNcbiAgICAgKiBwYWNrYWdlcywgbGlrZSBbYmFiZWwtcG9seWZpbGxdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2JhYmVsLXBvbHlmaWxsKSxcbiAgICAgKiB3aGljaCByZWx5IG9uIGNvcmUtanMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOYXRpdmUoQXJyYXkucHJvdG90eXBlLnB1c2gpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOYXRpdmUoXyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc05hdGl2ZSh2YWx1ZSkge1xuICAgICAgaWYgKGlzTWFza2FibGUodmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihDT1JFX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYG51bGxgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgbnVsbGAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc051bGwobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc051bGwodm9pZCAwKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTnVsbCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbnVsbGlzaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTmlsKG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOaWwodm9pZCAwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmlsKE5hTik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc05pbCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBOdW1iZXJgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVG8gZXhjbHVkZSBgSW5maW5pdHlgLCBgLUluZmluaXR5YCwgYW5kIGBOYU5gLCB3aGljaCBhcmVcbiAgICAgKiBjbGFzc2lmaWVkIGFzIG51bWJlcnMsIHVzZSB0aGUgYF8uaXNGaW5pdGVgIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBudW1iZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc051bWJlcigzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOdW1iZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOdW1iZXIoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInIHx8XG4gICAgICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IG51bWJlclRhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICAgICAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjguMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgICAgIGlmIChwcm90byA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBDdG9yID0gaGFzT3duUHJvcGVydHkuY2FsbChwcm90bywgJ2NvbnN0cnVjdG9yJykgJiYgcHJvdG8uY29uc3RydWN0b3I7XG4gICAgICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJlxuICAgICAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgUmVnRXhwYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcmVnZXhwLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNSZWdFeHAoL2FiYy8pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNSZWdFeHAoJy9hYmMvJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNSZWdFeHAgPSBub2RlSXNSZWdFeHAgPyBiYXNlVW5hcnkobm9kZUlzUmVnRXhwKSA6IGJhc2VJc1JlZ0V4cDtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgc2FmZSBpbnRlZ2VyLiBBbiBpbnRlZ2VyIGlzIHNhZmUgaWYgaXQncyBhbiBJRUVFLTc1NFxuICAgICAqIGRvdWJsZSBwcmVjaXNpb24gbnVtYmVyIHdoaWNoIGlzbid0IHRoZSByZXN1bHQgb2YgYSByb3VuZGVkIHVuc2FmZSBpbnRlZ2VyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BOdW1iZXIuaXNTYWZlSW50ZWdlcmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc1NhZmVJbnRlZ2VyKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzYWZlIGludGVnZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKCczJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1NhZmVJbnRlZ2VyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNJbnRlZ2VyKHZhbHVlKSAmJiB2YWx1ZSA+PSAtTUFYX1NBRkVfSU5URUdFUiAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU2V0YCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNTZXQobmV3IFNldCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1NldChuZXcgV2Vha1NldCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNTZXQgPSBub2RlSXNTZXQgPyBiYXNlVW5hcnkobm9kZUlzU2V0KSA6IGJhc2VJc1NldDtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3RyaW5nYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN0cmluZywgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzU3RyaW5nKDEpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHxcbiAgICAgICAgKCFpc0FycmF5KHZhbHVlKSAmJiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN0cmluZ1RhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1VuZGVmaW5lZCh2b2lkIDApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNVbmRlZmluZWQobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBXZWFrTWFwYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgd2VhayBtYXAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1dlYWtNYXAobmV3IFdlYWtNYXApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrTWFwKG5ldyBNYXApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNXZWFrTWFwKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IHdlYWtNYXBUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBXZWFrU2V0YCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgd2VhayBzZXQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1dlYWtTZXQobmV3IFdlYWtTZXQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrU2V0KG5ldyBTZXQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNXZWFrU2V0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSB3ZWFrU2V0VGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8uZ3RcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sdCgxLCAzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmx0KDMsIDMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmx0KDMsIDEpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGx0ID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihiYXNlTHQpO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBvdGhlcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG9cbiAgICAgKiAgYG90aGVyYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5ndGVcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sdGUoMSwgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5sdGUoMywgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5sdGUoMywgMSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgbHRlID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA8PSBvdGhlcjtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9BcnJheSh7ICdhJzogMSwgJ2InOiAyIH0pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogXy50b0FycmF5KCdhYmMnKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAgICAgKlxuICAgICAqIF8udG9BcnJheSgxKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqXG4gICAgICogXy50b0FycmF5KG51bGwpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9BcnJheSh2YWx1ZSkge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoaXNBcnJheUxpa2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBpc1N0cmluZyh2YWx1ZSkgPyBzdHJpbmdUb0FycmF5KHZhbHVlKSA6IGNvcHlBcnJheSh2YWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3ltSXRlcmF0b3IgJiYgdmFsdWVbc3ltSXRlcmF0b3JdKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRvclRvQXJyYXkodmFsdWVbc3ltSXRlcmF0b3JdKCkpO1xuICAgICAgfVxuICAgICAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSksXG4gICAgICAgICAgZnVuYyA9IHRhZyA9PSBtYXBUYWcgPyBtYXBUb0FycmF5IDogKHRhZyA9PSBzZXRUYWcgPyBzZXRUb0FycmF5IDogdmFsdWVzKTtcblxuICAgICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBmaW5pdGUgbnVtYmVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTIuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvRmluaXRlKDMuMik7XG4gICAgICogLy8gPT4gMy4yXG4gICAgICpcbiAgICAgKiBfLnRvRmluaXRlKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDVlLTMyNFxuICAgICAqXG4gICAgICogXy50b0Zpbml0ZShJbmZpbml0eSk7XG4gICAgICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAgICAgKlxuICAgICAqIF8udG9GaW5pdGUoJzMuMicpO1xuICAgICAqIC8vID0+IDMuMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvRmluaXRlKHZhbHVlKSB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMDtcbiAgICAgIH1cbiAgICAgIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICAgICAgaWYgKHZhbHVlID09PSBJTkZJTklUWSB8fCB2YWx1ZSA9PT0gLUlORklOSVRZKSB7XG4gICAgICAgIHZhciBzaWduID0gKHZhbHVlIDwgMCA/IC0xIDogMSk7XG4gICAgICAgIHJldHVybiBzaWduICogTUFYX0lOVEVHRVI7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlID8gdmFsdWUgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gaW50ZWdlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICogW2BUb0ludGVnZXJgXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9pbnRlZ2VyKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0ludGVnZXIoMy4yKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiBfLnRvSW50ZWdlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAgICAgKlxuICAgICAqIF8udG9JbnRlZ2VyKCczLjInKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdG9GaW5pdGUodmFsdWUpLFxuICAgICAgICAgIHJlbWFpbmRlciA9IHJlc3VsdCAlIDE7XG5cbiAgICAgIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIgc3VpdGFibGUgZm9yIHVzZSBhcyB0aGUgbGVuZ3RoIG9mIGFuXG4gICAgICogYXJyYXktbGlrZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKDMuMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy50b0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiA0Mjk0OTY3Mjk1XG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKCczLjInKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9MZW5ndGgodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA/IGJhc2VDbGFtcCh0b0ludGVnZXIodmFsdWUpLCAwLCBNQVhfQVJSQVlfTEVOR1RIKSA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9OdW1iZXIoMy4yKTtcbiAgICAgKiAvLyA9PiAzLjJcbiAgICAgKlxuICAgICAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gNWUtMzI0XG4gICAgICpcbiAgICAgKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBJbmZpbml0eVxuICAgICAqXG4gICAgICogXy50b051bWJlcignMy4yJyk7XG4gICAgICogLy8gPT4gMy4yXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gTkFOO1xuICAgICAgfVxuICAgICAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICB2YXIgb3RoZXIgPSB0eXBlb2YgdmFsdWUudmFsdWVPZiA9PSAnZnVuY3Rpb24nID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICAgICAgfVxuICAgICAgdmFsdWUgPSBiYXNlVHJpbSh2YWx1ZSk7XG4gICAgICB2YXIgaXNCaW5hcnkgPSByZUlzQmluYXJ5LnRlc3QodmFsdWUpO1xuICAgICAgcmV0dXJuIChpc0JpbmFyeSB8fCByZUlzT2N0YWwudGVzdCh2YWx1ZSkpXG4gICAgICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgICAgICA6IChyZUlzQmFkSGV4LnRlc3QodmFsdWUpID8gTkFOIDogK3ZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgcGxhaW4gb2JqZWN0IGZsYXR0ZW5pbmcgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nXG4gICAgICoga2V5ZWQgcHJvcGVydGllcyBvZiBgdmFsdWVgIHRvIG93biBwcm9wZXJ0aWVzIG9mIHRoZSBwbGFpbiBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29udmVydGVkIHBsYWluIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgbmV3IEZvbyk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICpcbiAgICAgKiBfLmFzc2lnbih7ICdhJzogMSB9LCBfLnRvUGxhaW5PYmplY3QobmV3IEZvbykpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9QbGFpbk9iamVjdCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGNvcHlPYmplY3QodmFsdWUsIGtleXNJbih2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzYWZlIGludGVnZXIuIEEgc2FmZSBpbnRlZ2VyIGNhbiBiZSBjb21wYXJlZCBhbmRcbiAgICAgKiByZXByZXNlbnRlZCBjb3JyZWN0bHkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcigzLjIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiBfLnRvU2FmZUludGVnZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IDkwMDcxOTkyNTQ3NDA5OTFcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcignMy4yJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvU2FmZUludGVnZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICA/IGJhc2VDbGFtcCh0b0ludGVnZXIodmFsdWUpLCAtTUFYX1NBRkVfSU5URUdFUiwgTUFYX1NBRkVfSU5URUdFUilcbiAgICAgICAgOiAodmFsdWUgPT09IDAgPyB2YWx1ZSA6IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBmb3IgYG51bGxgXG4gICAgICogYW5kIGB1bmRlZmluZWRgIHZhbHVlcy4gVGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1N0cmluZyhudWxsKTtcbiAgICAgKiAvLyA9PiAnJ1xuICAgICAqXG4gICAgICogXy50b1N0cmluZygtMCk7XG4gICAgICogLy8gPT4gJy0wJ1xuICAgICAqXG4gICAgICogXy50b1N0cmluZyhbMSwgMiwgM10pO1xuICAgICAqIC8vID0+ICcxLDIsMydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1N0cmluZyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQXNzaWducyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2Ugb2JqZWN0cyB0byB0aGVcbiAgICAgKiBkZXN0aW5hdGlvbiBvYmplY3QuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC5cbiAgICAgKiBTdWJzZXF1ZW50IHNvdXJjZXMgb3ZlcndyaXRlIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHNvdXJjZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YCBhbmQgaXMgbG9vc2VseSBiYXNlZCBvblxuICAgICAqIFtgT2JqZWN0LmFzc2lnbmBdKGh0dHBzOi8vbWRuLmlvL09iamVjdC9hc3NpZ24pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uYXNzaWduSW5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBCYXIoKSB7XG4gICAgICogICB0aGlzLmMgPSAzO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYiA9IDI7XG4gICAgICogQmFyLnByb3RvdHlwZS5kID0gNDtcbiAgICAgKlxuICAgICAqIF8uYXNzaWduKHsgJ2EnOiAwIH0sIG5ldyBGb28sIG5ldyBCYXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICAgICAqL1xuICAgIHZhciBhc3NpZ24gPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgaWYgKGlzUHJvdG90eXBlKHNvdXJjZSkgfHwgaXNBcnJheUxpa2Uoc291cmNlKSkge1xuICAgICAgICBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBzb3VyY2Vba2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIG93biBhbmRcbiAgICAgKiBpbmhlcml0ZWQgc291cmNlIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBhbGlhcyBleHRlbmRcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmFzc2lnblxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEJhcigpIHtcbiAgICAgKiAgIHRoaXMuYyA9IDM7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5iID0gMjtcbiAgICAgKiBCYXIucHJvdG90eXBlLmQgPSA0O1xuICAgICAqXG4gICAgICogXy5hc3NpZ25Jbih7ICdhJzogMCB9LCBuZXcgRm9vLCBuZXcgQmFyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMsICdkJzogNCB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbkluID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduSW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBhc3NpZ25lZCB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zXG4gICAgICogYHVuZGVmaW5lZGAsIGFzc2lnbm1lbnQgaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmBcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggZml2ZSBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAYWxpYXMgZXh0ZW5kV2l0aFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5hc3NpZ25XaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICByZXR1cm4gXy5pc1VuZGVmaW5lZChvYmpWYWx1ZSkgPyBzcmNWYWx1ZSA6IG9ialZhbHVlO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBkZWZhdWx0cyA9IF8ucGFydGlhbFJpZ2h0KF8uYXNzaWduSW5XaXRoLCBjdXN0b21pemVyKTtcbiAgICAgKlxuICAgICAqIGRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIHZhciBhc3NpZ25JbldpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0LCBjdXN0b21pemVyKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgYXNzaWduZWQgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJuc1xuICAgICAqIGB1bmRlZmluZWRgLCBhc3NpZ25tZW50IGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgXG4gICAgICogaXMgaW52b2tlZCB3aXRoIGZpdmUgYXJndW1lbnRzOiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gc291cmNlcyBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmFzc2lnbkluV2l0aFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSkge1xuICAgICAqICAgcmV0dXJuIF8uaXNVbmRlZmluZWQob2JqVmFsdWUpID8gc3JjVmFsdWUgOiBvYmpWYWx1ZTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZGVmYXVsdHMgPSBfLnBhcnRpYWxSaWdodChfLmFzc2lnbldpdGgsIGN1c3RvbWl6ZXIpO1xuICAgICAqXG4gICAgICogZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbldpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCwgY3VzdG9taXplcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGBwYXRoc2Agb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcGlja2VkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfSwgNF0gfTtcbiAgICAgKlxuICAgICAqIF8uYXQob2JqZWN0LCBbJ2FbMF0uYi5jJywgJ2FbMV0nXSk7XG4gICAgICogLy8gPT4gWzMsIDRdXG4gICAgICovXG4gICAgdmFyIGF0ID0gZmxhdFJlc3QoYmFzZUF0KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IHRoYXQgaW5oZXJpdHMgZnJvbSB0aGUgYHByb3RvdHlwZWAgb2JqZWN0LiBJZiBhXG4gICAgICogYHByb3BlcnRpZXNgIG9iamVjdCBpcyBnaXZlbiwgaXRzIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzXG4gICAgICogYXJlIGFzc2lnbmVkIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvdG90eXBlIFRoZSBvYmplY3QgdG8gaW5oZXJpdCBmcm9tLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbcHJvcGVydGllc10gVGhlIHByb3BlcnRpZXMgdG8gYXNzaWduIHRvIHRoZSBvYmplY3QuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gU2hhcGUoKSB7XG4gICAgICogICB0aGlzLnggPSAwO1xuICAgICAqICAgdGhpcy55ID0gMDtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBDaXJjbGUoKSB7XG4gICAgICogICBTaGFwZS5jYWxsKHRoaXMpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIENpcmNsZS5wcm90b3R5cGUgPSBfLmNyZWF0ZShTaGFwZS5wcm90b3R5cGUsIHtcbiAgICAgKiAgICdjb25zdHJ1Y3Rvcic6IENpcmNsZVxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogdmFyIGNpcmNsZSA9IG5ldyBDaXJjbGU7XG4gICAgICogY2lyY2xlIGluc3RhbmNlb2YgQ2lyY2xlO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGNpcmNsZSBpbnN0YW5jZW9mIFNoYXBlO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGUocHJvdG90eXBlLCBwcm9wZXJ0aWVzKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZUNyZWF0ZShwcm90b3R5cGUpO1xuICAgICAgcmV0dXJuIHByb3BlcnRpZXMgPT0gbnVsbCA/IHJlc3VsdCA6IGJhc2VBc3NpZ24ocmVzdWx0LCBwcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBc3NpZ25zIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlXG4gICAgICogb2JqZWN0cyB0byB0aGUgZGVzdGluYXRpb24gb2JqZWN0IGZvciBhbGwgZGVzdGluYXRpb24gcHJvcGVydGllcyB0aGF0XG4gICAgICogcmVzb2x2ZSB0byBgdW5kZWZpbmVkYC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICAgICAqIE9uY2UgYSBwcm9wZXJ0eSBpcyBzZXQsIGFkZGl0aW9uYWwgdmFsdWVzIG9mIHRoZSBzYW1lIHByb3BlcnR5IGFyZSBpZ25vcmVkLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmRlZmF1bHRzRGVlcFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIHZhciBkZWZhdWx0cyA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xO1xuICAgICAgdmFyIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoO1xuICAgICAgdmFyIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgICAgbGVuZ3RoID0gMTtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgICAgICB2YXIgcHJvcHMgPSBrZXlzSW4oc291cmNlKTtcbiAgICAgICAgdmFyIHByb3BzSW5kZXggPSAtMTtcbiAgICAgICAgdmFyIHByb3BzTGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgICAgIHdoaWxlICgrK3Byb3BzSW5kZXggPCBwcm9wc0xlbmd0aCkge1xuICAgICAgICAgIHZhciBrZXkgPSBwcm9wc1twcm9wc0luZGV4XTtcbiAgICAgICAgICB2YXIgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgIChlcSh2YWx1ZSwgb2JqZWN0UHJvdG9ba2V5XSkgJiYgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICAgICAgb2JqZWN0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZGVmYXVsdHNgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGFzc2lnbnNcbiAgICAgKiBkZWZhdWx0IHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmRlZmF1bHRzXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdHNEZWVwKHsgJ2EnOiB7ICdiJzogMiB9IH0sIHsgJ2EnOiB7ICdiJzogMSwgJ2MnOiAzIH0gfSk7XG4gICAgICogLy8gPT4geyAnYSc6IHsgJ2InOiAyLCAnYyc6IDMgfSB9XG4gICAgICovXG4gICAgdmFyIGRlZmF1bHRzRGVlcCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgIGFyZ3MucHVzaCh1bmRlZmluZWQsIGN1c3RvbURlZmF1bHRzTWVyZ2UpO1xuICAgICAgcmV0dXJuIGFwcGx5KG1lcmdlV2l0aCwgdW5kZWZpbmVkLCBhcmdzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUga2V5IG9mIHRoZSBmaXJzdFxuICAgICAqIGVsZW1lbnQgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yIGluc3RlYWQgb2YgdGhlIGVsZW1lbnQgaXRzZWxmLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMS4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH0gUmV0dXJucyB0aGUga2V5IG9mIHRoZSBtYXRjaGVkIGVsZW1lbnQsXG4gICAgICogIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IHtcbiAgICAgKiAgICdiYXJuZXknOiAgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICAnZnJlZCc6ICAgIHsgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgICdwZWJibGVzJzogeyAnYWdlJzogMSwgICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5maW5kS2V5KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZSA8IDQwOyB9KTtcbiAgICAgKiAvLyA9PiAnYmFybmV5JyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRLZXkodXNlcnMsIHsgJ2FnZSc6IDEsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+ICdwZWJibGVzJ1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEtleSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+ICdmcmVkJ1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kS2V5KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gJ2Jhcm5leSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kS2V5KG9iamVjdCwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gYmFzZUZpbmRLZXkob2JqZWN0LCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCBiYXNlRm9yT3duKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRLZXlgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2ZcbiAgICAgKiBhIGNvbGxlY3Rpb24gaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH0gUmV0dXJucyB0aGUga2V5IG9mIHRoZSBtYXRjaGVkIGVsZW1lbnQsXG4gICAgICogIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IHtcbiAgICAgKiAgICdiYXJuZXknOiAgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICAnZnJlZCc6ICAgIHsgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgICdwZWJibGVzJzogeyAnYWdlJzogMSwgICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5maW5kTGFzdEtleSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2UgPCA0MDsgfSk7XG4gICAgICogLy8gPT4gcmV0dXJucyAncGViYmxlcycgYXNzdW1pbmcgYF8uZmluZEtleWAgcmV0dXJucyAnYmFybmV5J1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gJ2Jhcm5leSdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gJ3BlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmluZExhc3RLZXkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiBiYXNlRmluZEtleShvYmplY3QsIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGJhc2VGb3JPd25SaWdodCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGFuXG4gICAgICogb2JqZWN0IGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXRcbiAgICAgKiBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmZvckluUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uZm9ySW4obmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdhJywgJ2InLCB0aGVuICdjJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JJbihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGxcbiAgICAgICAgPyBvYmplY3RcbiAgICAgICAgOiBiYXNlRm9yKG9iamVjdCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpLCBrZXlzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZm9ySW5gIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgcHJvcGVydGllcyBvZlxuICAgICAqIGBvYmplY3RgIGluIHRoZSBvcHBvc2l0ZSBvcmRlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmZvckluXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmZvckluUmlnaHQobmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdjJywgJ2InLCB0aGVuICdhJyBhc3N1bWluZyBgXy5mb3JJbmAgbG9ncyAnYScsICdiJywgdGhlbiAnYycuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9ySW5SaWdodChvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGxcbiAgICAgICAgPyBvYmplY3RcbiAgICAgICAgOiBiYXNlRm9yUmlnaHQob2JqZWN0LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyksIGtleXNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBhbiBvYmplY3QgYW5kXG4gICAgICogaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGtleSwgb2JqZWN0KS4gSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvblxuICAgICAqIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5mb3JPd25SaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5mb3JPd24obmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdhJyB0aGVuICdiJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JPd24ob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yT3duKG9iamVjdCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZvck93bmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBwcm9wZXJ0aWVzIG9mXG4gICAgICogYG9iamVjdGAgaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZm9yT3duXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmZvck93blJpZ2h0KG5ldyBGb28sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnYicgdGhlbiAnYScgYXNzdW1pbmcgYF8uZm9yT3duYCBsb2dzICdhJyB0aGVuICdiJy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JPd25SaWdodChvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3JPd25SaWdodChvYmplY3QsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBmdW5jdGlvbiBwcm9wZXJ0eSBuYW1lcyBmcm9tIG93biBlbnVtZXJhYmxlIHByb3BlcnRpZXNcbiAgICAgKiBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGZ1bmN0aW9uIG5hbWVzLlxuICAgICAqIEBzZWUgXy5mdW5jdGlvbnNJblxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSBfLmNvbnN0YW50KCdhJyk7XG4gICAgICogICB0aGlzLmIgPSBfLmNvbnN0YW50KCdiJyk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gXy5jb25zdGFudCgnYycpO1xuICAgICAqXG4gICAgICogXy5mdW5jdGlvbnMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZ1bmN0aW9ucyhvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZUZ1bmN0aW9ucyhvYmplY3QsIGtleXMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBmdW5jdGlvbiBwcm9wZXJ0eSBuYW1lcyBmcm9tIG93biBhbmQgaW5oZXJpdGVkXG4gICAgICogZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZXMuXG4gICAgICogQHNlZSBfLmZ1bmN0aW9uc1xuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSBfLmNvbnN0YW50KCdhJyk7XG4gICAgICogICB0aGlzLmIgPSBfLmNvbnN0YW50KCdiJyk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gXy5jb25zdGFudCgnYycpO1xuICAgICAqXG4gICAgICogXy5mdW5jdGlvbnNJbihuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmdW5jdGlvbnNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZUZ1bmN0aW9ucyhvYmplY3QsIGtleXNJbihvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIHRoZSByZXNvbHZlZCB2YWx1ZSBpc1xuICAgICAqIGB1bmRlZmluZWRgLCB0aGUgYGRlZmF1bHRWYWx1ZWAgaXMgcmV0dXJuZWQgaW4gaXRzIHBsYWNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHJldHVybmVkIGZvciBgdW5kZWZpbmVkYCByZXNvbHZlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICAgICAqXG4gICAgICogXy5nZXQob2JqZWN0LCAnYVswXS5iLmMnKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLmdldChvYmplY3QsIFsnYScsICcwJywgJ2InLCAnYyddKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLmdldChvYmplY3QsICdhLmIuYycsICdkZWZhdWx0Jyk7XG4gICAgICogLy8gPT4gJ2RlZmF1bHQnXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0KG9iamVjdCwgcGF0aCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gICAgICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBkZWZhdWx0VmFsdWUgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBwcm9wZXJ0eSBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiB7ICdiJzogMiB9IH07XG4gICAgICogdmFyIG90aGVyID0gXy5jcmVhdGUoeyAnYSc6IF8uY3JlYXRlKHsgJ2InOiAyIH0pIH0pO1xuICAgICAqXG4gICAgICogXy5oYXMob2JqZWN0LCAnYScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzKG9iamVjdCwgJ2EuYicpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzKG9iamVjdCwgWydhJywgJ2InXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXMob3RoZXIsICdhJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXMob2JqZWN0LCBwYXRoKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcGF0aGAgaXMgYSBkaXJlY3Qgb3IgaW5oZXJpdGVkIHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0gXy5jcmVhdGUoeyAnYSc6IF8uY3JlYXRlKHsgJ2InOiAyIH0pIH0pO1xuICAgICAqXG4gICAgICogXy5oYXNJbihvYmplY3QsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXNJbihvYmplY3QsICdhLmInKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgWydhJywgJ2InXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXNJbihvYmplY3QsICdiJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNJbihvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhc0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGUgaW52ZXJ0ZWQga2V5cyBhbmQgdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqIElmIGBvYmplY3RgIGNvbnRhaW5zIGR1cGxpY2F0ZSB2YWx1ZXMsIHN1YnNlcXVlbnQgdmFsdWVzIG92ZXJ3cml0ZVxuICAgICAqIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjcuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW52ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBpbnZlcnRlZCBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uaW52ZXJ0KG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnMSc6ICdjJywgJzInOiAnYicgfVxuICAgICAqL1xuICAgIHZhciBpbnZlcnQgPSBjcmVhdGVJbnZlcnRlcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmXG4gICAgICAgICAgdHlwZW9mIHZhbHVlLnRvU3RyaW5nICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFsdWUgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0W3ZhbHVlXSA9IGtleTtcbiAgICB9LCBjb25zdGFudChpZGVudGl0eSkpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbnZlcnRgIGV4Y2VwdCB0aGF0IHRoZSBpbnZlcnRlZCBvYmplY3QgaXMgZ2VuZXJhdGVkXG4gICAgICogZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nIGVhY2ggZWxlbWVudCBvZiBgb2JqZWN0YCB0aHJ1IGBpdGVyYXRlZWAuIFRoZVxuICAgICAqIGNvcnJlc3BvbmRpbmcgaW52ZXJ0ZWQgdmFsdWUgb2YgZWFjaCBpbnZlcnRlZCBrZXkgaXMgYW4gYXJyYXkgb2Yga2V5c1xuICAgICAqIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoZSBpbnZlcnRlZCB2YWx1ZS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW52ZXJ0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgaW52ZXJ0ZWQgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH07XG4gICAgICpcbiAgICAgKiBfLmludmVydEJ5KG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnMSc6IFsnYScsICdjJ10sICcyJzogWydiJ10gfVxuICAgICAqXG4gICAgICogXy5pbnZlcnRCeShvYmplY3QsIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICByZXR1cm4gJ2dyb3VwJyArIHZhbHVlO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IHsgJ2dyb3VwMSc6IFsnYScsICdjJ10sICdncm91cDInOiBbJ2InXSB9XG4gICAgICovXG4gICAgdmFyIGludmVydEJ5ID0gY3JlYXRlSW52ZXJ0ZXIoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJlxuICAgICAgICAgIHR5cGVvZiB2YWx1ZS50b1N0cmluZyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhbHVlID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwgdmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdFt2YWx1ZV0ucHVzaChrZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0W3ZhbHVlXSA9IFtrZXldO1xuICAgICAgfVxuICAgIH0sIGdldEl0ZXJhdGVlKTtcblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgdGhlIG1ldGhvZCBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBpbnZva2VkIG1ldGhvZC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiBbMSwgMiwgMywgNF0gfSB9XSB9O1xuICAgICAqXG4gICAgICogXy5pbnZva2Uob2JqZWN0LCAnYVswXS5iLmMuc2xpY2UnLCAxLCAzKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKi9cbiAgICB2YXIgaW52b2tlID0gYmFzZVJlc3QoYmFzZUludm9rZSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLiBTZWUgdGhlXG4gICAgICogW0VTIHNwZWNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmtleXMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogXy5rZXlzKCdoaScpO1xuICAgICAqIC8vID0+IFsnMCcsICcxJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBrZXlzKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8ua2V5c0luKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGtleXNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QsIHRydWUpIDogYmFzZUtleXNJbihvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5tYXBWYWx1ZXNgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCB3aXRoIHRoZVxuICAgICAqIHNhbWUgdmFsdWVzIGFzIGBvYmplY3RgIGFuZCBrZXlzIGdlbmVyYXRlZCBieSBydW5uaW5nIGVhY2ggb3duIGVudW1lcmFibGVcbiAgICAgKiBzdHJpbmcga2V5ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGtleSwgb2JqZWN0KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjguMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgb2JqZWN0LlxuICAgICAqIEBzZWUgXy5tYXBWYWx1ZXNcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXBLZXlzKHsgJ2EnOiAxLCAnYic6IDIgfSwgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgcmV0dXJuIGtleSArIHZhbHVlO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IHsgJ2ExJzogMSwgJ2IyJzogMiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwS2V5cyhvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKTtcblxuICAgICAgYmFzZUZvck93bihvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBpdGVyYXRlZSh2YWx1ZSwga2V5LCBvYmplY3QpLCB2YWx1ZSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBrZXlzIGFzIGBvYmplY3RgIGFuZCB2YWx1ZXMgZ2VuZXJhdGVkXG4gICAgICogYnkgcnVubmluZyBlYWNoIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YCB0aHJ1XG4gICAgICogYGl0ZXJhdGVlYC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6XG4gICAgICogKHZhbHVlLCBrZXksIG9iamVjdCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi40LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIG9iamVjdC5cbiAgICAgKiBAc2VlIF8ubWFwS2V5c1xuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSB7XG4gICAgICogICAnZnJlZCc6ICAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCB9LFxuICAgICAqICAgJ3BlYmJsZXMnOiB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8ubWFwVmFsdWVzKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZTsgfSk7XG4gICAgICogLy8gPT4geyAnZnJlZCc6IDQwLCAncGViYmxlcyc6IDEgfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5tYXBWYWx1ZXModXNlcnMsICdhZ2UnKTtcbiAgICAgKiAvLyA9PiB7ICdmcmVkJzogNDAsICdwZWJibGVzJzogMSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwVmFsdWVzKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpO1xuXG4gICAgICBiYXNlRm9yT3duKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgaXRlcmF0ZWUodmFsdWUsIGtleSwgb2JqZWN0KSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IG1lcmdlcyBvd24gYW5kXG4gICAgICogaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgaW50byB0aGVcbiAgICAgKiBkZXN0aW5hdGlvbiBvYmplY3QuIFNvdXJjZSBwcm9wZXJ0aWVzIHRoYXQgcmVzb2x2ZSB0byBgdW5kZWZpbmVkYCBhcmVcbiAgICAgKiBza2lwcGVkIGlmIGEgZGVzdGluYXRpb24gdmFsdWUgZXhpc3RzLiBBcnJheSBhbmQgcGxhaW4gb2JqZWN0IHByb3BlcnRpZXNcbiAgICAgKiBhcmUgbWVyZ2VkIHJlY3Vyc2l2ZWx5LiBPdGhlciBvYmplY3RzIGFuZCB2YWx1ZSB0eXBlcyBhcmUgb3ZlcnJpZGRlbiBieVxuICAgICAqIGFzc2lnbm1lbnQuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC4gU3Vic2VxdWVudFxuICAgICAqIHNvdXJjZXMgb3ZlcndyaXRlIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHNvdXJjZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjUuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHtcbiAgICAgKiAgICdhJzogW3sgJ2InOiAyIH0sIHsgJ2QnOiA0IH1dXG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBvdGhlciA9IHtcbiAgICAgKiAgICdhJzogW3sgJ2MnOiAzIH0sIHsgJ2UnOiA1IH1dXG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8ubWVyZ2Uob2JqZWN0LCBvdGhlcik7XG4gICAgICogLy8gPT4geyAnYSc6IFt7ICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2QnOiA0LCAnZSc6IDUgfV0gfVxuICAgICAqL1xuICAgIHZhciBtZXJnZSA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCkge1xuICAgICAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1lcmdlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgbWVyZ2VkIHZhbHVlcyBvZiB0aGUgZGVzdGluYXRpb24gYW5kIHNvdXJjZVxuICAgICAqIHByb3BlcnRpZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLCBtZXJnaW5nIGlzIGhhbmRsZWQgYnkgdGhlXG4gICAgICogbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIHNpeCBhcmd1bWVudHM6XG4gICAgICogKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICBpZiAoXy5pc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gb2JqVmFsdWUuY29uY2F0KHNyY1ZhbHVlKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFsxXSwgJ2InOiBbMl0gfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdhJzogWzNdLCAnYic6IFs0XSB9O1xuICAgICAqXG4gICAgICogXy5tZXJnZVdpdGgob2JqZWN0LCBvdGhlciwgY3VzdG9taXplcik7XG4gICAgICogLy8gPT4geyAnYSc6IFsxLCAzXSwgJ2InOiBbMiwgNF0gfVxuICAgICAqL1xuICAgIHZhciBtZXJnZVdpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLnBpY2tgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGVcbiAgICAgKiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IHBhdGhzIG9mIGBvYmplY3RgIHRoYXQgYXJlIG5vdCBvbWl0dGVkLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGNvbnNpZGVyYWJseSBzbG93ZXIgdGhhbiBgXy5waWNrYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIG9taXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLm9taXQob2JqZWN0LCBbJ2EnLCAnYyddKTtcbiAgICAgKiAvLyA9PiB7ICdiJzogJzInIH1cbiAgICAgKi9cbiAgICB2YXIgb21pdCA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgcGF0aHMpIHtcbiAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgdmFyIGlzRGVlcCA9IGZhbHNlO1xuICAgICAgcGF0aHMgPSBhcnJheU1hcChwYXRocywgZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcbiAgICAgICAgaXNEZWVwIHx8IChpc0RlZXAgPSBwYXRoLmxlbmd0aCA+IDEpO1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgIH0pO1xuICAgICAgY29weU9iamVjdChvYmplY3QsIGdldEFsbEtleXNJbihvYmplY3QpLCByZXN1bHQpO1xuICAgICAgaWYgKGlzRGVlcCkge1xuICAgICAgICByZXN1bHQgPSBiYXNlQ2xvbmUocmVzdWx0LCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9GTEFUX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcsIGN1c3RvbU9taXRDbG9uZSk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gcGF0aHMubGVuZ3RoO1xuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIGJhc2VVbnNldChyZXN1bHQsIHBhdGhzW2xlbmd0aF0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5waWNrQnlgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZlxuICAgICAqIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGBvYmplY3RgIHRoYXRcbiAgICAgKiBgcHJlZGljYXRlYCBkb2Vzbid0IHJldHVybiB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0d29cbiAgICAgKiBhcmd1bWVudHM6ICh2YWx1ZSwga2V5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIHByb3BlcnR5LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICAgICAqXG4gICAgICogXy5vbWl0Qnkob2JqZWN0LCBfLmlzTnVtYmVyKTtcbiAgICAgKiAvLyA9PiB7ICdiJzogJzInIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbWl0Qnkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiBwaWNrQnkob2JqZWN0LCBuZWdhdGUoZ2V0SXRlcmF0ZWUocHJlZGljYXRlKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBwaWNrZWQgYG9iamVjdGAgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLnBpY2sob2JqZWN0LCBbJ2EnLCAnYyddKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAgICAgKi9cbiAgICB2YXIgcGljayA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgcGF0aHMpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHt9IDogYmFzZVBpY2sob2JqZWN0LCBwYXRocyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGUgYG9iamVjdGAgcHJvcGVydGllcyBgcHJlZGljYXRlYCByZXR1cm5zXG4gICAgICogdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKHZhbHVlLCBrZXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLnBpY2tCeShvYmplY3QsIF8uaXNOdW1iZXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBpY2tCeShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHZhciBwcm9wcyA9IGFycmF5TWFwKGdldEFsbEtleXNJbihvYmplY3QpLCBmdW5jdGlvbihwcm9wKSB7XG4gICAgICAgIHJldHVybiBbcHJvcF07XG4gICAgICB9KTtcbiAgICAgIHByZWRpY2F0ZSA9IGdldEl0ZXJhdGVlKHByZWRpY2F0ZSk7XG4gICAgICByZXR1cm4gYmFzZVBpY2tCeShvYmplY3QsIHByb3BzLCBmdW5jdGlvbih2YWx1ZSwgcGF0aCkge1xuICAgICAgICByZXR1cm4gcHJlZGljYXRlKHZhbHVlLCBwYXRoWzBdKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZ2V0YCBleGNlcHQgdGhhdCBpZiB0aGUgcmVzb2x2ZWQgdmFsdWUgaXMgYVxuICAgICAqIGZ1bmN0aW9uIGl0J3MgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBpdHMgcGFyZW50IG9iamVjdCBhbmRcbiAgICAgKiBpdHMgcmVzdWx0IGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gcmVzb2x2ZS5cbiAgICAgKiBAcGFyYW0geyp9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgYHVuZGVmaW5lZGAgcmVzb2x2ZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MxJzogMywgJ2MyJzogXy5jb25zdGFudCg0KSB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzEnKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzInKTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzMnLCAnZGVmYXVsdCcpO1xuICAgICAqIC8vID0+ICdkZWZhdWx0J1xuICAgICAqXG4gICAgICogXy5yZXN1bHQob2JqZWN0LCAnYVswXS5iLmMzJywgXy5jb25zdGFudCgnZGVmYXVsdCcpKTtcbiAgICAgKiAvLyA9PiAnZGVmYXVsdCdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXN1bHQob2JqZWN0LCBwYXRoLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aDtcblxuICAgICAgLy8gRW5zdXJlIHRoZSBsb29wIGlzIGVudGVyZWQgd2hlbiBwYXRoIGlzIGVtcHR5LlxuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgbGVuZ3RoID0gMTtcbiAgICAgICAgb2JqZWN0ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3RbdG9LZXkocGF0aFtpbmRleF0pXTtcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpbmRleCA9IGxlbmd0aDtcbiAgICAgICAgICB2YWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3QgPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHZhbHVlLmNhbGwob2JqZWN0KSA6IHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIGEgcG9ydGlvbiBvZiBgcGF0aGAgZG9lc24ndCBleGlzdCxcbiAgICAgKiBpdCdzIGNyZWF0ZWQuIEFycmF5cyBhcmUgY3JlYXRlZCBmb3IgbWlzc2luZyBpbmRleCBwcm9wZXJ0aWVzIHdoaWxlIG9iamVjdHNcbiAgICAgKiBhcmUgY3JlYXRlZCBmb3IgYWxsIG90aGVyIG1pc3NpbmcgcHJvcGVydGllcy4gVXNlIGBfLnNldFdpdGhgIHRvIGN1c3RvbWl6ZVxuICAgICAqIGBwYXRoYCBjcmVhdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8uc2V0KG9iamVjdCwgJ2FbMF0uYi5jJywgNCk7XG4gICAgICogY29uc29sZS5sb2cob2JqZWN0LmFbMF0uYi5jKTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLnNldChvYmplY3QsIFsneCcsICcwJywgJ3knLCAneiddLCA1KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QueFswXS55LnopO1xuICAgICAqIC8vID0+IDVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNldGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIG9iamVjdHMgb2YgYHBhdGhgLiAgSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGBcbiAgICAgKiBwYXRoIGNyZWF0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKG5zVmFsdWUsIGtleSwgbnNPYmplY3QpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHt9O1xuICAgICAqXG4gICAgICogXy5zZXRXaXRoKG9iamVjdCwgJ1swXVsxXScsICdhJywgT2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICcwJzogeyAnMSc6ICdhJyB9IH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRXaXRoKG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQtdmFsdWUgcGFpcnMgZm9yIGBvYmplY3RgXG4gICAgICogd2hpY2ggY2FuIGJlIGNvbnN1bWVkIGJ5IGBfLmZyb21QYWlyc2AuIElmIGBvYmplY3RgIGlzIGEgbWFwIG9yIHNldCwgaXRzXG4gICAgICogZW50cmllcyBhcmUgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAYWxpYXMgZW50cmllc1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLnRvUGFpcnMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gW1snYScsIDFdLCBbJ2InLCAyXV0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICB2YXIgdG9QYWlycyA9IGNyZWF0ZVRvUGFpcnMoa2V5cyk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkLXZhbHVlIHBhaXJzXG4gICAgICogZm9yIGBvYmplY3RgIHdoaWNoIGNhbiBiZSBjb25zdW1lZCBieSBgXy5mcm9tUGFpcnNgLiBJZiBgb2JqZWN0YCBpcyBhIG1hcFxuICAgICAqIG9yIHNldCwgaXRzIGVudHJpZXMgYXJlIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGFsaWFzIGVudHJpZXNJblxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLnRvUGFpcnNJbihuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMV0sIFsnYicsIDJdLCBbJ2MnLCAzXV0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICB2YXIgdG9QYWlyc0luID0gY3JlYXRlVG9QYWlycyhrZXlzSW4pO1xuXG4gICAgLyoqXG4gICAgICogQW4gYWx0ZXJuYXRpdmUgdG8gYF8ucmVkdWNlYDsgdGhpcyBtZXRob2QgdHJhbnNmb3JtcyBgb2JqZWN0YCB0byBhIG5ld1xuICAgICAqIGBhY2N1bXVsYXRvcmAgb2JqZWN0IHdoaWNoIGlzIHRoZSByZXN1bHQgb2YgcnVubmluZyBlYWNoIG9mIGl0cyBvd25cbiAgICAgKiBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIHRocnUgYGl0ZXJhdGVlYCwgd2l0aCBlYWNoIGludm9jYXRpb25cbiAgICAgKiBwb3RlbnRpYWxseSBtdXRhdGluZyB0aGUgYGFjY3VtdWxhdG9yYCBvYmplY3QuIElmIGBhY2N1bXVsYXRvcmAgaXMgbm90XG4gICAgICogcHJvdmlkZWQsIGEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIGBbW1Byb3RvdHlwZV1dYCB3aWxsIGJlIHVzZWQuIFRoZVxuICAgICAqIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBmb3VyIGFyZ3VtZW50czogKGFjY3VtdWxhdG9yLCB2YWx1ZSwga2V5LCBvYmplY3QpLlxuICAgICAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgY3VzdG9tIGFjY3VtdWxhdG9yIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50cmFuc2Zvcm0oWzIsIDMsIDRdLCBmdW5jdGlvbihyZXN1bHQsIG4pIHtcbiAgICAgKiAgIHJlc3VsdC5wdXNoKG4gKj0gbik7XG4gICAgICogICByZXR1cm4gbiAlIDIgPT0gMDtcbiAgICAgKiB9LCBbXSk7XG4gICAgICogLy8gPT4gWzQsIDldXG4gICAgICpcbiAgICAgKiBfLnRyYW5zZm9ybSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICogICAocmVzdWx0W3ZhbHVlXSB8fCAocmVzdWx0W3ZhbHVlXSA9IFtdKSkucHVzaChrZXkpO1xuICAgICAqIH0sIHt9KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJhbnNmb3JtKG9iamVjdCwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICB2YXIgaXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICAgICAgaXNBcnJMaWtlID0gaXNBcnIgfHwgaXNCdWZmZXIob2JqZWN0KSB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KTtcblxuICAgICAgaXRlcmF0ZWUgPSBnZXRJdGVyYXRlZShpdGVyYXRlZSwgNCk7XG4gICAgICBpZiAoYWNjdW11bGF0b3IgPT0gbnVsbCkge1xuICAgICAgICB2YXIgQ3RvciA9IG9iamVjdCAmJiBvYmplY3QuY29uc3RydWN0b3I7XG4gICAgICAgIGlmIChpc0Fyckxpa2UpIHtcbiAgICAgICAgICBhY2N1bXVsYXRvciA9IGlzQXJyID8gbmV3IEN0b3IgOiBbXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgICAgYWNjdW11bGF0b3IgPSBpc0Z1bmN0aW9uKEN0b3IpID8gYmFzZUNyZWF0ZShnZXRQcm90b3R5cGUob2JqZWN0KSkgOiB7fTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBhY2N1bXVsYXRvciA9IHt9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAoaXNBcnJMaWtlID8gYXJyYXlFYWNoIDogYmFzZUZvck93bikob2JqZWN0LCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIG9iamVjdCkge1xuICAgICAgICByZXR1cm4gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgb2JqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdGhlIHByb3BlcnR5IGF0IGBwYXRoYCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHVuc2V0LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgaXMgZGVsZXRlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDcgfSB9XSB9O1xuICAgICAqIF8udW5zZXQob2JqZWN0LCAnYVswXS5iLmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QpO1xuICAgICAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IHt9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLnVuc2V0KG9iamVjdCwgWydhJywgJzAnLCAnYicsICdjJ10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnYSc6IFt7ICdiJzoge30gfV0gfTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bnNldChvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHRydWUgOiBiYXNlVW5zZXQob2JqZWN0LCBwYXRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNldGAgZXhjZXB0IHRoYXQgYWNjZXB0cyBgdXBkYXRlcmAgdG8gcHJvZHVjZSB0aGVcbiAgICAgKiB2YWx1ZSB0byBzZXQuIFVzZSBgXy51cGRhdGVXaXRoYCB0byBjdXN0b21pemUgYHBhdGhgIGNyZWF0aW9uLiBUaGUgYHVwZGF0ZXJgXG4gICAgICogaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNi4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB1cGRhdGVyIFRoZSBmdW5jdGlvbiB0byBwcm9kdWNlIHRoZSB1cGRhdGVkIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLnVwZGF0ZShvYmplY3QsICdhWzBdLmIuYycsIGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gKiBuOyB9KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QuYVswXS5iLmMpO1xuICAgICAqIC8vID0+IDlcbiAgICAgKlxuICAgICAqIF8udXBkYXRlKG9iamVjdCwgJ3hbMF0ueS56JywgZnVuY3Rpb24obikgeyByZXR1cm4gbiA/IG4gKyAxIDogMDsgfSk7XG4gICAgICogY29uc29sZS5sb2cob2JqZWN0LnhbMF0ueS56KTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICovXG4gICAgZnVuY3Rpb24gdXBkYXRlKG9iamVjdCwgcGF0aCwgdXBkYXRlcikge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVVwZGF0ZShvYmplY3QsIHBhdGgsIGNhc3RGdW5jdGlvbih1cGRhdGVyKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51cGRhdGVgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCB0byBwcm9kdWNlIHRoZSBvYmplY3RzIG9mIGBwYXRoYC4gIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgXG4gICAgICogcGF0aCBjcmVhdGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6IChuc1ZhbHVlLCBrZXksIG5zT2JqZWN0KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNi4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB1cGRhdGVyIFRoZSBmdW5jdGlvbiB0byBwcm9kdWNlIHRoZSB1cGRhdGVkIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge307XG4gICAgICpcbiAgICAgKiBfLnVwZGF0ZVdpdGgob2JqZWN0LCAnWzBdWzFdJywgXy5jb25zdGFudCgnYScpLCBPYmplY3QpO1xuICAgICAqIC8vID0+IHsgJzAnOiB7ICcxJzogJ2EnIH0gfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVwZGF0ZVdpdGgob2JqZWN0LCBwYXRoLCB1cGRhdGVyLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlVXBkYXRlKG9iamVjdCwgcGF0aCwgY2FzdEZ1bmN0aW9uKHVwZGF0ZXIpLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHkgdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy52YWx1ZXMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gWzEsIDJdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiBfLnZhbHVlcygnaGknKTtcbiAgICAgKiAvLyA9PiBbJ2gnLCAnaSddXG4gICAgICovXG4gICAgZnVuY3Rpb24gdmFsdWVzKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlVmFsdWVzKG9iamVjdCwga2V5cyhvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eVxuICAgICAqIHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8udmFsdWVzSW4obmV3IEZvbyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gdmFsdWVzSW4ob2JqZWN0KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VWYWx1ZXMob2JqZWN0LCBrZXlzSW4ob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ2xhbXBzIGBudW1iZXJgIHdpdGhpbiB0aGUgaW5jbHVzaXZlIGBsb3dlcmAgYW5kIGB1cHBlcmAgYm91bmRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE51bWJlclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjbGFtcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyXSBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjbGFtcGVkIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jbGFtcCgtMTAsIC01LCA1KTtcbiAgICAgKiAvLyA9PiAtNVxuICAgICAqXG4gICAgICogXy5jbGFtcCgxMCwgLTUsIDUpO1xuICAgICAqIC8vID0+IDVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbGFtcChudW1iZXIsIGxvd2VyLCB1cHBlcikge1xuICAgICAgaWYgKHVwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdXBwZXIgPSBsb3dlcjtcbiAgICAgICAgbG93ZXIgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAodXBwZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cHBlciA9IHRvTnVtYmVyKHVwcGVyKTtcbiAgICAgICAgdXBwZXIgPSB1cHBlciA9PT0gdXBwZXIgPyB1cHBlciA6IDA7XG4gICAgICB9XG4gICAgICBpZiAobG93ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsb3dlciA9IHRvTnVtYmVyKGxvd2VyKTtcbiAgICAgICAgbG93ZXIgPSBsb3dlciA9PT0gbG93ZXIgPyBsb3dlciA6IDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUNsYW1wKHRvTnVtYmVyKG51bWJlciksIGxvd2VyLCB1cHBlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBuYCBpcyBiZXR3ZWVuIGBzdGFydGAgYW5kIHVwIHRvLCBidXQgbm90IGluY2x1ZGluZywgYGVuZGAuIElmXG4gICAgICogYGVuZGAgaXMgbm90IHNwZWNpZmllZCwgaXQncyBzZXQgdG8gYHN0YXJ0YCB3aXRoIGBzdGFydGAgdGhlbiBzZXQgdG8gYDBgLlxuICAgICAqIElmIGBzdGFydGAgaXMgZ3JlYXRlciB0aGFuIGBlbmRgIHRoZSBwYXJhbXMgYXJlIHN3YXBwZWQgdG8gc3VwcG9ydFxuICAgICAqIG5lZ2F0aXZlIHJhbmdlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjMuMFxuICAgICAqIEBjYXRlZ29yeSBOdW1iZXJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBudW1iZXJgIGlzIGluIHRoZSByYW5nZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5yYW5nZSwgXy5yYW5nZVJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgzLCAyLCA0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoNCwgOCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDQsIDIpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoMiwgMik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgxLjIsIDIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSg1LjIsIDQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoLTMsIC0yLCAtNik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluUmFuZ2UobnVtYmVyLCBzdGFydCwgZW5kKSB7XG4gICAgICBzdGFydCA9IHRvRmluaXRlKHN0YXJ0KTtcbiAgICAgIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBlbmQgPSBzdGFydDtcbiAgICAgICAgc3RhcnQgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW5kID0gdG9GaW5pdGUoZW5kKTtcbiAgICAgIH1cbiAgICAgIG51bWJlciA9IHRvTnVtYmVyKG51bWJlcik7XG4gICAgICByZXR1cm4gYmFzZUluUmFuZ2UobnVtYmVyLCBzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9kdWNlcyBhIHJhbmRvbSBudW1iZXIgYmV0d2VlbiB0aGUgaW5jbHVzaXZlIGBsb3dlcmAgYW5kIGB1cHBlcmAgYm91bmRzLlxuICAgICAqIElmIG9ubHkgb25lIGFyZ3VtZW50IGlzIHByb3ZpZGVkIGEgbnVtYmVyIGJldHdlZW4gYDBgIGFuZCB0aGUgZ2l2ZW4gbnVtYmVyXG4gICAgICogaXMgcmV0dXJuZWQuIElmIGBmbG9hdGluZ2AgaXMgYHRydWVgLCBvciBlaXRoZXIgYGxvd2VyYCBvciBgdXBwZXJgIGFyZVxuICAgICAqIGZsb2F0cywgYSBmbG9hdGluZy1wb2ludCBudW1iZXIgaXMgcmV0dXJuZWQgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEphdmFTY3JpcHQgZm9sbG93cyB0aGUgSUVFRS03NTQgc3RhbmRhcmQgZm9yIHJlc29sdmluZ1xuICAgICAqIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGljaCBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgTnVtYmVyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsb3dlcj0wXSBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFt1cHBlcj0xXSBUaGUgdXBwZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZmxvYXRpbmddIFNwZWNpZnkgcmV0dXJuaW5nIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJhbmRvbSBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDAsIDUpO1xuICAgICAqIC8vID0+IGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCA1XG4gICAgICpcbiAgICAgKiBfLnJhbmRvbSg1KTtcbiAgICAgKiAvLyA9PiBhbHNvIGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCA1XG4gICAgICpcbiAgICAgKiBfLnJhbmRvbSg1LCB0cnVlKTtcbiAgICAgKiAvLyA9PiBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBiZXR3ZWVuIDAgYW5kIDVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDEuMiwgNS4yKTtcbiAgICAgKiAvLyA9PiBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBiZXR3ZWVuIDEuMiBhbmQgNS4yXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmFuZG9tKGxvd2VyLCB1cHBlciwgZmxvYXRpbmcpIHtcbiAgICAgIGlmIChmbG9hdGluZyAmJiB0eXBlb2YgZmxvYXRpbmcgIT0gJ2Jvb2xlYW4nICYmIGlzSXRlcmF0ZWVDYWxsKGxvd2VyLCB1cHBlciwgZmxvYXRpbmcpKSB7XG4gICAgICAgIHVwcGVyID0gZmxvYXRpbmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAoZmxvYXRpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIHVwcGVyID09ICdib29sZWFuJykge1xuICAgICAgICAgIGZsb2F0aW5nID0gdXBwZXI7XG4gICAgICAgICAgdXBwZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGxvd2VyID09ICdib29sZWFuJykge1xuICAgICAgICAgIGZsb2F0aW5nID0gbG93ZXI7XG4gICAgICAgICAgbG93ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChsb3dlciA9PT0gdW5kZWZpbmVkICYmIHVwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbG93ZXIgPSAwO1xuICAgICAgICB1cHBlciA9IDE7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgbG93ZXIgPSB0b0Zpbml0ZShsb3dlcik7XG4gICAgICAgIGlmICh1cHBlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdXBwZXIgPSBsb3dlcjtcbiAgICAgICAgICBsb3dlciA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXBwZXIgPSB0b0Zpbml0ZSh1cHBlcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChsb3dlciA+IHVwcGVyKSB7XG4gICAgICAgIHZhciB0ZW1wID0gbG93ZXI7XG4gICAgICAgIGxvd2VyID0gdXBwZXI7XG4gICAgICAgIHVwcGVyID0gdGVtcDtcbiAgICAgIH1cbiAgICAgIGlmIChmbG9hdGluZyB8fCBsb3dlciAlIDEgfHwgdXBwZXIgJSAxKSB7XG4gICAgICAgIHZhciByYW5kID0gbmF0aXZlUmFuZG9tKCk7XG4gICAgICAgIHJldHVybiBuYXRpdmVNaW4obG93ZXIgKyAocmFuZCAqICh1cHBlciAtIGxvd2VyICsgZnJlZVBhcnNlRmxvYXQoJzFlLScgKyAoKHJhbmQgKyAnJykubGVuZ3RoIC0gMSkpKSksIHVwcGVyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlUmFuZG9tKGxvd2VyLCB1cHBlcik7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gW2NhbWVsIGNhc2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhbWVsQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjYW1lbCBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2FtZWxDYXNlKCdGb28gQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvb0JhcidcbiAgICAgKlxuICAgICAqIF8uY2FtZWxDYXNlKCctLWZvby1iYXItLScpO1xuICAgICAqIC8vID0+ICdmb29CYXInXG4gICAgICpcbiAgICAgKiBfLmNhbWVsQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnZm9vQmFyJ1xuICAgICAqL1xuICAgIHZhciBjYW1lbENhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHdvcmQgPSB3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gY2FwaXRhbGl6ZSh3b3JkKSA6IHdvcmQpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byB1cHBlciBjYXNlIGFuZCB0aGUgcmVtYWluaW5nXG4gICAgICogdG8gbG93ZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjYXBpdGFsaXplLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNhcGl0YWxpemVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jYXBpdGFsaXplKCdGUkVEJyk7XG4gICAgICogLy8gPT4gJ0ZyZWQnXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FwaXRhbGl6ZShzdHJpbmcpIHtcbiAgICAgIHJldHVybiB1cHBlckZpcnN0KHRvU3RyaW5nKHN0cmluZykudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVidXJycyBgc3RyaW5nYCBieSBjb252ZXJ0aW5nXG4gICAgICogW0xhdGluLTEgU3VwcGxlbWVudF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGF0aW4tMV9TdXBwbGVtZW50XyhVbmljb2RlX2Jsb2NrKSNDaGFyYWN0ZXJfdGFibGUpXG4gICAgICogYW5kIFtMYXRpbiBFeHRlbmRlZC1BXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXRpbl9FeHRlbmRlZC1BKVxuICAgICAqIGxldHRlcnMgdG8gYmFzaWMgTGF0aW4gbGV0dGVycyBhbmQgcmVtb3ZpbmdcbiAgICAgKiBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3MpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGRlYnVyci5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBkZWJ1cnJlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVidXJyKCdkXHUwMEU5alx1MDBFMCB2dScpO1xuICAgICAqIC8vID0+ICdkZWphIHZ1J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlYnVycihzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICByZXR1cm4gc3RyaW5nICYmIHN0cmluZy5yZXBsYWNlKHJlTGF0aW4sIGRlYnVyckxldHRlcikucmVwbGFjZShyZUNvbWJvTWFyaywgJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgc3RyaW5nYCBlbmRzIHdpdGggdGhlIGdpdmVuIHRhcmdldCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3RhcmdldF0gVGhlIHN0cmluZyB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcG9zaXRpb249c3RyaW5nLmxlbmd0aF0gVGhlIHBvc2l0aW9uIHRvIHNlYXJjaCB1cCB0by5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHN0cmluZ2AgZW5kcyB3aXRoIGB0YXJnZXRgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZW5kc1dpdGgoJ2FiYycsICdjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5lbmRzV2l0aCgnYWJjJywgJ2InKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5lbmRzV2l0aCgnYWJjJywgJ2InLCAyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gZW5kc1dpdGgoc3RyaW5nLCB0YXJnZXQsIHBvc2l0aW9uKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgdGFyZ2V0ID0gYmFzZVRvU3RyaW5nKHRhcmdldCk7XG5cbiAgICAgIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbiA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gbGVuZ3RoXG4gICAgICAgIDogYmFzZUNsYW1wKHRvSW50ZWdlcihwb3NpdGlvbiksIDAsIGxlbmd0aCk7XG5cbiAgICAgIHZhciBlbmQgPSBwb3NpdGlvbjtcbiAgICAgIHBvc2l0aW9uIC09IHRhcmdldC5sZW5ndGg7XG4gICAgICByZXR1cm4gcG9zaXRpb24gPj0gMCAmJiBzdHJpbmcuc2xpY2UocG9zaXRpb24sIGVuZCkgPT0gdGFyZ2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBjaGFyYWN0ZXJzIFwiJlwiLCBcIjxcIiwgXCI+XCIsICdcIicsIGFuZCBcIidcIiBpbiBgc3RyaW5nYCB0byB0aGVpclxuICAgICAqIGNvcnJlc3BvbmRpbmcgSFRNTCBlbnRpdGllcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBObyBvdGhlciBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkLiBUbyBlc2NhcGUgYWRkaXRpb25hbFxuICAgICAqIGNoYXJhY3RlcnMgdXNlIGEgdGhpcmQtcGFydHkgbGlicmFyeSBsaWtlIFtfaGVfXShodHRwczovL210aHMuYmUvaGUpLlxuICAgICAqXG4gICAgICogVGhvdWdoIHRoZSBcIj5cIiBjaGFyYWN0ZXIgaXMgZXNjYXBlZCBmb3Igc3ltbWV0cnksIGNoYXJhY3RlcnMgbGlrZVxuICAgICAqIFwiPlwiIGFuZCBcIi9cIiBkb24ndCBuZWVkIGVzY2FwaW5nIGluIEhUTUwgYW5kIGhhdmUgbm8gc3BlY2lhbCBtZWFuaW5nXG4gICAgICogdW5sZXNzIHRoZXkncmUgcGFydCBvZiBhIHRhZyBvciB1bnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUuIFNlZVxuICAgICAqIFtNYXRoaWFzIEJ5bmVucydzIGFydGljbGVdKGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9hbWJpZ3VvdXMtYW1wZXJzYW5kcylcbiAgICAgKiAodW5kZXIgXCJzZW1pLXJlbGF0ZWQgZnVuIGZhY3RcIikgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKlxuICAgICAqIFdoZW4gd29ya2luZyB3aXRoIEhUTUwgeW91IHNob3VsZCBhbHdheXNcbiAgICAgKiBbcXVvdGUgYXR0cmlidXRlIHZhbHVlc10oaHR0cDovL3dvbmtvLmNvbS9wb3N0L2h0bWwtZXNjYXBpbmcpIHRvIHJlZHVjZVxuICAgICAqIFhTUyB2ZWN0b3JzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGVzY2FwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5lc2NhcGUoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICogLy8gPT4gJ2ZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlc2NhcGUoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNVbmVzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSlcbiAgICAgICAgPyBzdHJpbmcucmVwbGFjZShyZVVuZXNjYXBlZEh0bWwsIGVzY2FwZUh0bWxDaGFyKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFc2NhcGVzIHRoZSBgUmVnRXhwYCBzcGVjaWFsIGNoYXJhY3RlcnMgXCJeXCIsIFwiJFwiLCBcIlxcXCIsIFwiLlwiLCBcIipcIiwgXCIrXCIsXG4gICAgICogXCI/XCIsIFwiKFwiLCBcIilcIiwgXCJbXCIsIFwiXVwiLCBcIntcIiwgXCJ9XCIsIGFuZCBcInxcIiBpbiBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZXNjYXBlUmVnRXhwKCdbbG9kYXNoXShodHRwczovL2xvZGFzaC5jb20vKScpO1xuICAgICAqIC8vID0+ICdcXFtsb2Rhc2hcXF1cXChodHRwczovL2xvZGFzaFxcLmNvbS9cXCknXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHN0cmluZykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHJldHVybiAoc3RyaW5nICYmIHJlSGFzUmVnRXhwQ2hhci50ZXN0KHN0cmluZykpXG4gICAgICAgID8gc3RyaW5nLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG9cbiAgICAgKiBba2ViYWIgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGV0dGVyX2Nhc2UjU3BlY2lhbF9jYXNlX3N0eWxlcykuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBrZWJhYiBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ua2ViYWJDYXNlKCdGb28gQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvby1iYXInXG4gICAgICpcbiAgICAgKiBfLmtlYmFiQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvby1iYXInXG4gICAgICpcbiAgICAgKiBfLmtlYmFiQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnZm9vLWJhcidcbiAgICAgKi9cbiAgICB2YXIga2ViYWJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJy0nIDogJycpICsgd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIHNwYWNlIHNlcGFyYXRlZCB3b3JkcywgdG8gbG93ZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGxvd2VyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sb3dlckNhc2UoJy0tRm9vLUJhci0tJyk7XG4gICAgICogLy8gPT4gJ2ZvbyBiYXInXG4gICAgICpcbiAgICAgKiBfLmxvd2VyQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2ZvbyBiYXInXG4gICAgICpcbiAgICAgKiBfLmxvd2VyQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnZm9vIGJhcidcbiAgICAgKi9cbiAgICB2YXIgbG93ZXJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byBsb3dlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sb3dlckZpcnN0KCdGcmVkJyk7XG4gICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICpcbiAgICAgKiBfLmxvd2VyRmlyc3QoJ0ZSRUQnKTtcbiAgICAgKiAvLyA9PiAnZlJFRCdcbiAgICAgKi9cbiAgICB2YXIgbG93ZXJGaXJzdCA9IGNyZWF0ZUNhc2VGaXJzdCgndG9Mb3dlckNhc2UnKTtcblxuICAgIC8qKlxuICAgICAqIFBhZHMgYHN0cmluZ2Agb24gdGhlIGxlZnQgYW5kIHJpZ2h0IHNpZGVzIGlmIGl0J3Mgc2hvcnRlciB0aGFuIGBsZW5ndGhgLlxuICAgICAqIFBhZGRpbmcgY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgY2FuJ3QgYmUgZXZlbmx5IGRpdmlkZWQgYnkgYGxlbmd0aGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcGFkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPTBdIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYWQoJ2FiYycsIDgpO1xuICAgICAqIC8vID0+ICcgIGFiYyAgICdcbiAgICAgKlxuICAgICAqIF8ucGFkKCdhYmMnLCA4LCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnXy1hYmNfLV8nXG4gICAgICpcbiAgICAgKiBfLnBhZCgnYWJjJywgMyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYWQoc3RyaW5nLCBsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgbGVuZ3RoID0gdG9JbnRlZ2VyKGxlbmd0aCk7XG5cbiAgICAgIHZhciBzdHJMZW5ndGggPSBsZW5ndGggPyBzdHJpbmdTaXplKHN0cmluZykgOiAwO1xuICAgICAgaWYgKCFsZW5ndGggfHwgc3RyTGVuZ3RoID49IGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIG1pZCA9IChsZW5ndGggLSBzdHJMZW5ndGgpIC8gMjtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGNyZWF0ZVBhZGRpbmcobmF0aXZlRmxvb3IobWlkKSwgY2hhcnMpICtcbiAgICAgICAgc3RyaW5nICtcbiAgICAgICAgY3JlYXRlUGFkZGluZyhuYXRpdmVDZWlsKG1pZCksIGNoYXJzKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYWRzIGBzdHJpbmdgIG9uIHRoZSByaWdodCBzaWRlIGlmIGl0J3Mgc2hvcnRlciB0aGFuIGBsZW5ndGhgLiBQYWRkaW5nXG4gICAgICogY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgZXhjZWVkIGBsZW5ndGhgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHBhZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD0wXSBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz0nICddIFRoZSBzdHJpbmcgdXNlZCBhcyBwYWRkaW5nLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucGFkRW5kKCdhYmMnLCA2KTtcbiAgICAgKiAvLyA9PiAnYWJjICAgJ1xuICAgICAqXG4gICAgICogXy5wYWRFbmQoJ2FiYycsIDYsICdfLScpO1xuICAgICAqIC8vID0+ICdhYmNfLV8nXG4gICAgICpcbiAgICAgKiBfLnBhZEVuZCgnYWJjJywgMyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYWRFbmQoc3RyaW5nLCBsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgbGVuZ3RoID0gdG9JbnRlZ2VyKGxlbmd0aCk7XG5cbiAgICAgIHZhciBzdHJMZW5ndGggPSBsZW5ndGggPyBzdHJpbmdTaXplKHN0cmluZykgOiAwO1xuICAgICAgcmV0dXJuIChsZW5ndGggJiYgc3RyTGVuZ3RoIDwgbGVuZ3RoKVxuICAgICAgICA/IChzdHJpbmcgKyBjcmVhdGVQYWRkaW5nKGxlbmd0aCAtIHN0ckxlbmd0aCwgY2hhcnMpKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYWRzIGBzdHJpbmdgIG9uIHRoZSBsZWZ0IHNpZGUgaWYgaXQncyBzaG9ydGVyIHRoYW4gYGxlbmd0aGAuIFBhZGRpbmdcbiAgICAgKiBjaGFyYWN0ZXJzIGFyZSB0cnVuY2F0ZWQgaWYgdGhleSBleGNlZWQgYGxlbmd0aGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcGFkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPTBdIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYWRTdGFydCgnYWJjJywgNik7XG4gICAgICogLy8gPT4gJyAgIGFiYydcbiAgICAgKlxuICAgICAqIF8ucGFkU3RhcnQoJ2FiYycsIDYsICdfLScpO1xuICAgICAqIC8vID0+ICdfLV9hYmMnXG4gICAgICpcbiAgICAgKiBfLnBhZFN0YXJ0KCdhYmMnLCAzKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhZFN0YXJ0KHN0cmluZywgbGVuZ3RoLCBjaGFycykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGxlbmd0aCA9IHRvSW50ZWdlcihsZW5ndGgpO1xuXG4gICAgICB2YXIgc3RyTGVuZ3RoID0gbGVuZ3RoID8gc3RyaW5nU2l6ZShzdHJpbmcpIDogMDtcbiAgICAgIHJldHVybiAobGVuZ3RoICYmIHN0ckxlbmd0aCA8IGxlbmd0aClcbiAgICAgICAgPyAoY3JlYXRlUGFkZGluZyhsZW5ndGggLSBzdHJMZW5ndGgsIGNoYXJzKSArIHN0cmluZylcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gYW4gaW50ZWdlciBvZiB0aGUgc3BlY2lmaWVkIHJhZGl4LiBJZiBgcmFkaXhgIGlzXG4gICAgICogYHVuZGVmaW5lZGAgb3IgYDBgLCBhIGByYWRpeGAgb2YgYDEwYCBpcyB1c2VkIHVubGVzcyBgdmFsdWVgIGlzIGFcbiAgICAgKiBoZXhhZGVjaW1hbCwgaW4gd2hpY2ggY2FzZSBhIGByYWRpeGAgb2YgYDE2YCBpcyB1c2VkLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGFsaWducyB3aXRoIHRoZVxuICAgICAqIFtFUzUgaW1wbGVtZW50YXRpb25dKGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDE1LjEuMi4yKSBvZiBgcGFyc2VJbnRgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMS4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcmFkaXg9MTBdIFRoZSByYWRpeCB0byBpbnRlcnByZXQgYHZhbHVlYCBieS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnBhcnNlSW50KCcwOCcpO1xuICAgICAqIC8vID0+IDhcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnNicsICcwOCcsICcxMCddLCBfLnBhcnNlSW50KTtcbiAgICAgKiAvLyA9PiBbNiwgOCwgMTBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFyc2VJbnQoc3RyaW5nLCByYWRpeCwgZ3VhcmQpIHtcbiAgICAgIGlmIChndWFyZCB8fCByYWRpeCA9PSBudWxsKSB7XG4gICAgICAgIHJhZGl4ID0gMDtcbiAgICAgIH0gZWxzZSBpZiAocmFkaXgpIHtcbiAgICAgICAgcmFkaXggPSArcmFkaXg7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmF0aXZlUGFyc2VJbnQodG9TdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJyksIHJhZGl4IHx8IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcGVhdHMgdGhlIGdpdmVuIHN0cmluZyBgbmAgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcmVwZWF0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJlcGVhdCB0aGUgc3RyaW5nLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmVwZWF0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJlcGVhdCgnKicsIDMpO1xuICAgICAqIC8vID0+ICcqKionXG4gICAgICpcbiAgICAgKiBfLnJlcGVhdCgnYWJjJywgMik7XG4gICAgICogLy8gPT4gJ2FiY2FiYydcbiAgICAgKlxuICAgICAqIF8ucmVwZWF0KCdhYmMnLCAwKTtcbiAgICAgKiAvLyA9PiAnJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlcGVhdChzdHJpbmcsIG4sIGd1YXJkKSB7XG4gICAgICBpZiAoKGd1YXJkID8gaXNJdGVyYXRlZUNhbGwoc3RyaW5nLCBuLCBndWFyZCkgOiBuID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIG4gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlUmVwZWF0KHRvU3RyaW5nKHN0cmluZyksIG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcGxhY2VzIG1hdGNoZXMgZm9yIGBwYXR0ZXJuYCBpbiBgc3RyaW5nYCB3aXRoIGByZXBsYWNlbWVudGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFN0cmluZyNyZXBsYWNlYF0oaHR0cHM6Ly9tZG4uaW8vU3RyaW5nL3JlcGxhY2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IHBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gcmVwbGFjZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufHN0cmluZ30gcmVwbGFjZW1lbnQgVGhlIG1hdGNoIHJlcGxhY2VtZW50LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIG1vZGlmaWVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yZXBsYWNlKCdIaSBGcmVkJywgJ0ZyZWQnLCAnQmFybmV5Jyk7XG4gICAgICogLy8gPT4gJ0hpIEJhcm5leSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXBsYWNlKCkge1xuICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgc3RyaW5nID0gdG9TdHJpbmcoYXJnc1swXSk7XG5cbiAgICAgIHJldHVybiBhcmdzLmxlbmd0aCA8IDMgPyBzdHJpbmcgOiBzdHJpbmcucmVwbGFjZShhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0b1xuICAgICAqIFtzbmFrZSBjYXNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TbmFrZV9jYXNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNuYWtlIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zbmFrZUNhc2UoJ0ZvbyBCYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vX2JhcidcbiAgICAgKlxuICAgICAqIF8uc25ha2VDYXNlKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vX2JhcidcbiAgICAgKlxuICAgICAqIF8uc25ha2VDYXNlKCctLUZPTy1CQVItLScpO1xuICAgICAqIC8vID0+ICdmb29fYmFyJ1xuICAgICAqL1xuICAgIHZhciBzbmFrZUNhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyAnXycgOiAnJykgKyB3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBTcGxpdHMgYHN0cmluZ2AgYnkgYHNlcGFyYXRvcmAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFN0cmluZyNzcGxpdGBdKGh0dHBzOi8vbWRuLmlvL1N0cmluZy9zcGxpdCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gc3BsaXQuXG4gICAgICogQHBhcmFtIHtSZWdFeHB8c3RyaW5nfSBzZXBhcmF0b3IgVGhlIHNlcGFyYXRvciBwYXR0ZXJuIHRvIHNwbGl0IGJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGltaXRdIFRoZSBsZW5ndGggdG8gdHJ1bmNhdGUgcmVzdWx0cyB0by5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHN0cmluZyBzZWdtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zcGxpdCgnYS1iLWMnLCAnLScsIDIpO1xuICAgICAqIC8vID0+IFsnYScsICdiJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzcGxpdChzdHJpbmcsIHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAgIGlmIChsaW1pdCAmJiB0eXBlb2YgbGltaXQgIT0gJ251bWJlcicgJiYgaXNJdGVyYXRlZUNhbGwoc3RyaW5nLCBzZXBhcmF0b3IsIGxpbWl0KSkge1xuICAgICAgICBzZXBhcmF0b3IgPSBsaW1pdCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGxpbWl0ID0gbGltaXQgPT09IHVuZGVmaW5lZCA/IE1BWF9BUlJBWV9MRU5HVEggOiBsaW1pdCA+Pj4gMDtcbiAgICAgIGlmICghbGltaXQpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKFxuICAgICAgICAgICAgdHlwZW9mIHNlcGFyYXRvciA9PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgKHNlcGFyYXRvciAhPSBudWxsICYmICFpc1JlZ0V4cChzZXBhcmF0b3IpKVxuICAgICAgICAgICkpIHtcbiAgICAgICAgc2VwYXJhdG9yID0gYmFzZVRvU3RyaW5nKHNlcGFyYXRvcik7XG4gICAgICAgIGlmICghc2VwYXJhdG9yICYmIGhhc1VuaWNvZGUoc3RyaW5nKSkge1xuICAgICAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyaW5nVG9BcnJheShzdHJpbmcpLCAwLCBsaW1pdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHJpbmcuc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG9cbiAgICAgKiBbc3RhcnQgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGV0dGVyX2Nhc2UjU3R5bGlzdGljX29yX3NwZWNpYWxpc2VkX3VzYWdlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0YXJ0IGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zdGFydENhc2UoJy0tZm9vLWJhci0tJyk7XG4gICAgICogLy8gPT4gJ0ZvbyBCYXInXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0Q2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ0ZvbyBCYXInXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0Q2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnRk9PIEJBUidcbiAgICAgKi9cbiAgICB2YXIgc3RhcnRDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgdXBwZXJGaXJzdCh3b3JkKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgc3RyaW5nYCBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gdGFyZ2V0IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdGFyZ2V0XSBUaGUgc3RyaW5nIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwb3NpdGlvbj0wXSBUaGUgcG9zaXRpb24gdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBzdHJpbmdgIHN0YXJ0cyB3aXRoIGB0YXJnZXRgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3RhcnRzV2l0aCgnYWJjJywgJ2EnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0c1dpdGgoJ2FiYycsICdiJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uc3RhcnRzV2l0aCgnYWJjJywgJ2InLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhcnRzV2l0aChzdHJpbmcsIHRhcmdldCwgcG9zaXRpb24pIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uID09IG51bGxcbiAgICAgICAgPyAwXG4gICAgICAgIDogYmFzZUNsYW1wKHRvSW50ZWdlcihwb3NpdGlvbiksIDAsIHN0cmluZy5sZW5ndGgpO1xuXG4gICAgICB0YXJnZXQgPSBiYXNlVG9TdHJpbmcodGFyZ2V0KTtcbiAgICAgIHJldHVybiBzdHJpbmcuc2xpY2UocG9zaXRpb24sIHBvc2l0aW9uICsgdGFyZ2V0Lmxlbmd0aCkgPT0gdGFyZ2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjb21waWxlZCB0ZW1wbGF0ZSBmdW5jdGlvbiB0aGF0IGNhbiBpbnRlcnBvbGF0ZSBkYXRhIHByb3BlcnRpZXNcbiAgICAgKiBpbiBcImludGVycG9sYXRlXCIgZGVsaW1pdGVycywgSFRNTC1lc2NhcGUgaW50ZXJwb2xhdGVkIGRhdGEgcHJvcGVydGllcyBpblxuICAgICAqIFwiZXNjYXBlXCIgZGVsaW1pdGVycywgYW5kIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBcImV2YWx1YXRlXCIgZGVsaW1pdGVycy4gRGF0YVxuICAgICAqIHByb3BlcnRpZXMgbWF5IGJlIGFjY2Vzc2VkIGFzIGZyZWUgdmFyaWFibGVzIGluIHRoZSB0ZW1wbGF0ZS4gSWYgYSBzZXR0aW5nXG4gICAgICogb2JqZWN0IGlzIGdpdmVuLCBpdCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYF8udGVtcGxhdGVTZXR0aW5nc2AgdmFsdWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEluIHRoZSBkZXZlbG9wbWVudCBidWlsZCBgXy50ZW1wbGF0ZWAgdXRpbGl6ZXNcbiAgICAgKiBbc291cmNlVVJMc10oaHR0cDovL3d3dy5odG1sNXJvY2tzLmNvbS9lbi90dXRvcmlhbHMvZGV2ZWxvcGVydG9vbHMvc291cmNlbWFwcy8jdG9jLXNvdXJjZXVybClcbiAgICAgKiBmb3IgZWFzaWVyIGRlYnVnZ2luZy5cbiAgICAgKlxuICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHByZWNvbXBpbGluZyB0ZW1wbGF0ZXMgc2VlXG4gICAgICogW2xvZGFzaCdzIGN1c3RvbSBidWlsZHMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9sb2Rhc2guY29tL2N1c3RvbS1idWlsZHMpLlxuICAgICAqXG4gICAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQ2hyb21lIGV4dGVuc2lvbiBzYW5kYm94ZXMgc2VlXG4gICAgICogW0Nocm9tZSdzIGV4dGVuc2lvbnMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3NhbmRib3hpbmdFdmFsKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHRlbXBsYXRlIHN0cmluZy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuZXNjYXBlPV8udGVtcGxhdGVTZXR0aW5ncy5lc2NhcGVdXG4gICAgICogIFRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5ldmFsdWF0ZT1fLnRlbXBsYXRlU2V0dGluZ3MuZXZhbHVhdGVdXG4gICAgICogIFRoZSBcImV2YWx1YXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucy5pbXBvcnRzPV8udGVtcGxhdGVTZXR0aW5ncy5pbXBvcnRzXVxuICAgICAqICBBbiBvYmplY3QgdG8gaW1wb3J0IGludG8gdGhlIHRlbXBsYXRlIGFzIGZyZWUgdmFyaWFibGVzLlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5pbnRlcnBvbGF0ZT1fLnRlbXBsYXRlU2V0dGluZ3MuaW50ZXJwb2xhdGVdXG4gICAgICogIFRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zb3VyY2VVUkw9J2xvZGFzaC50ZW1wbGF0ZVNvdXJjZXNbbl0nXVxuICAgICAqICBUaGUgc291cmNlVVJMIG9mIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudmFyaWFibGU9J29iaiddXG4gICAgICogIFRoZSBkYXRhIG9iamVjdCB2YXJpYWJsZSBuYW1lLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjb21waWxlZCB0ZW1wbGF0ZSBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyIHRvIGNyZWF0ZSBhIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvIDwlPSB1c2VyICU+IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnZnJlZCcgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQhJ1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyIHRvIGVzY2FwZSBkYXRhIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8Yj48JS0gdmFsdWUgJT48L2I+Jyk7XG4gICAgICogY29tcGlsZWQoeyAndmFsdWUnOiAnPHNjcmlwdD4nIH0pO1xuICAgICAqIC8vID0+ICc8Yj4mbHQ7c2NyaXB0Jmd0OzwvYj4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXIgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGFuZCBnZW5lcmF0ZSBIVE1MLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlIF8uZm9yRWFjaCh1c2VycywgZnVuY3Rpb24odXNlcikgeyAlPjxsaT48JS0gdXNlciAlPjwvbGk+PCUgfSk7ICU+Jyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcnMnOiBbJ2ZyZWQnLCAnYmFybmV5J10gfSk7XG4gICAgICogLy8gPT4gJzxsaT5mcmVkPC9saT48bGk+YmFybmV5PC9saT4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGludGVybmFsIGBwcmludGAgZnVuY3Rpb24gaW4gXCJldmFsdWF0ZVwiIGRlbGltaXRlcnMuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCUgcHJpbnQoXCJoZWxsbyBcIiArIHVzZXIpOyAlPiEnKTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2VyJzogJ2Jhcm5leScgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGJhcm5leSEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIEVTIHRlbXBsYXRlIGxpdGVyYWwgZGVsaW1pdGVyIGFzIGFuIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gICAgICogLy8gRGlzYWJsZSBzdXBwb3J0IGJ5IHJlcGxhY2luZyB0aGUgXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlci5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyAkeyB1c2VyIH0hJyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcic6ICdwZWJibGVzJyB9KTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gcGViYmxlcyEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgYmFja3NsYXNoZXMgdG8gdHJlYXQgZGVsaW1pdGVycyBhcyBwbGFpbiB0ZXh0LlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlPSBcIlxcXFw8JS0gdmFsdWUgJVxcXFw+XCIgJT4nKTtcbiAgICAgKiBjb21waWxlZCh7ICd2YWx1ZSc6ICdpZ25vcmVkJyB9KTtcbiAgICAgKiAvLyA9PiAnPCUtIHZhbHVlICU+J1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBgaW1wb3J0c2Agb3B0aW9uIHRvIGltcG9ydCBgalF1ZXJ5YCBhcyBganFgLlxuICAgICAqIHZhciB0ZXh0ID0gJzwlIGpxLmVhY2godXNlcnMsIGZ1bmN0aW9uKHVzZXIpIHsgJT48bGk+PCUtIHVzZXIgJT48L2xpPjwlIH0pOyAlPic7XG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSh0ZXh0LCB7ICdpbXBvcnRzJzogeyAnanEnOiBqUXVlcnkgfSB9KTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2Vycyc6IFsnZnJlZCcsICdiYXJuZXknXSB9KTtcbiAgICAgKiAvLyA9PiAnPGxpPmZyZWQ8L2xpPjxsaT5iYXJuZXk8L2xpPidcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgYHNvdXJjZVVSTGAgb3B0aW9uIHRvIHNwZWNpZnkgYSBjdXN0b20gc291cmNlVVJMIGZvciB0aGUgdGVtcGxhdGUuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gPCU9IHVzZXIgJT4hJywgeyAnc291cmNlVVJMJzogJy9iYXNpYy9ncmVldGluZy5qc3QnIH0pO1xuICAgICAqIGNvbXBpbGVkKGRhdGEpO1xuICAgICAqIC8vID0+IEZpbmQgdGhlIHNvdXJjZSBvZiBcImdyZWV0aW5nLmpzdFwiIHVuZGVyIHRoZSBTb3VyY2VzIHRhYiBvciBSZXNvdXJjZXMgcGFuZWwgb2YgdGhlIHdlYiBpbnNwZWN0b3IuXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGB2YXJpYWJsZWAgb3B0aW9uIHRvIGVuc3VyZSBhIHdpdGgtc3RhdGVtZW50IGlzbid0IHVzZWQgaW4gdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hpIDwlPSBkYXRhLnVzZXIgJT4hJywgeyAndmFyaWFibGUnOiAnZGF0YScgfSk7XG4gICAgICogY29tcGlsZWQuc291cmNlO1xuICAgICAqIC8vID0+IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgKiAvLyAgIHZhciBfX3QsIF9fcCA9ICcnO1xuICAgICAqIC8vICAgX19wICs9ICdoaSAnICsgKChfX3QgPSAoIGRhdGEudXNlciApKSA9PSBudWxsID8gJycgOiBfX3QpICsgJyEnO1xuICAgICAqIC8vICAgcmV0dXJuIF9fcDtcbiAgICAgKiAvLyB9XG4gICAgICpcbiAgICAgKiAvLyBVc2UgY3VzdG9tIHRlbXBsYXRlIGRlbGltaXRlcnMuXG4gICAgICogXy50ZW1wbGF0ZVNldHRpbmdzLmludGVycG9sYXRlID0gL3t7KFtcXHNcXFNdKz8pfX0vZztcbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyB7eyB1c2VyIH19IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnbXVzdGFjaGUnIH0pO1xuICAgICAqIC8vID0+ICdoZWxsbyBtdXN0YWNoZSEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGBzb3VyY2VgIHByb3BlcnR5IHRvIGlubGluZSBjb21waWxlZCB0ZW1wbGF0ZXMgZm9yIG1lYW5pbmdmdWxcbiAgICAgKiAvLyBsaW5lIG51bWJlcnMgaW4gZXJyb3IgbWVzc2FnZXMgYW5kIHN0YWNrIHRyYWNlcy5cbiAgICAgKiBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnanN0LmpzJyksICdcXFxuICAgICAqICAgdmFyIEpTVCA9IHtcXFxuICAgICAqICAgICBcIm1haW5cIjogJyArIF8udGVtcGxhdGUobWFpblRleHQpLnNvdXJjZSArICdcXFxuICAgICAqICAgfTtcXFxuICAgICAqICcpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRlbXBsYXRlKHN0cmluZywgb3B0aW9ucywgZ3VhcmQpIHtcbiAgICAgIC8vIEJhc2VkIG9uIEpvaG4gUmVzaWcncyBgdG1wbGAgaW1wbGVtZW50YXRpb25cbiAgICAgIC8vIChodHRwOi8vZWpvaG4ub3JnL2Jsb2cvamF2YXNjcmlwdC1taWNyby10ZW1wbGF0aW5nLylcbiAgICAgIC8vIGFuZCBMYXVyYSBEb2t0b3JvdmEncyBkb1QuanMgKGh0dHBzOi8vZ2l0aHViLmNvbS9vbGFkby9kb1QpLlxuICAgICAgdmFyIHNldHRpbmdzID0gbG9kYXNoLnRlbXBsYXRlU2V0dGluZ3M7XG5cbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzdHJpbmcsIG9wdGlvbnMsIGd1YXJkKSkge1xuICAgICAgICBvcHRpb25zID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIG9wdGlvbnMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMsIHNldHRpbmdzLCBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKTtcblxuICAgICAgdmFyIGltcG9ydHMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMuaW1wb3J0cywgc2V0dGluZ3MuaW1wb3J0cywgY3VzdG9tRGVmYXVsdHNBc3NpZ25JbiksXG4gICAgICAgICAgaW1wb3J0c0tleXMgPSBrZXlzKGltcG9ydHMpLFxuICAgICAgICAgIGltcG9ydHNWYWx1ZXMgPSBiYXNlVmFsdWVzKGltcG9ydHMsIGltcG9ydHNLZXlzKTtcblxuICAgICAgdmFyIGlzRXNjYXBpbmcsXG4gICAgICAgICAgaXNFdmFsdWF0aW5nLFxuICAgICAgICAgIGluZGV4ID0gMCxcbiAgICAgICAgICBpbnRlcnBvbGF0ZSA9IG9wdGlvbnMuaW50ZXJwb2xhdGUgfHwgcmVOb01hdGNoLFxuICAgICAgICAgIHNvdXJjZSA9IFwiX19wICs9ICdcIjtcblxuICAgICAgLy8gQ29tcGlsZSB0aGUgcmVnZXhwIHRvIG1hdGNoIGVhY2ggZGVsaW1pdGVyLlxuICAgICAgdmFyIHJlRGVsaW1pdGVycyA9IFJlZ0V4cChcbiAgICAgICAgKG9wdGlvbnMuZXNjYXBlIHx8IHJlTm9NYXRjaCkuc291cmNlICsgJ3wnICtcbiAgICAgICAgaW50ZXJwb2xhdGUuc291cmNlICsgJ3wnICtcbiAgICAgICAgKGludGVycG9sYXRlID09PSByZUludGVycG9sYXRlID8gcmVFc1RlbXBsYXRlIDogcmVOb01hdGNoKS5zb3VyY2UgKyAnfCcgK1xuICAgICAgICAob3B0aW9ucy5ldmFsdWF0ZSB8fCByZU5vTWF0Y2gpLnNvdXJjZSArICd8JCdcbiAgICAgICwgJ2cnKTtcblxuICAgICAgLy8gVXNlIGEgc291cmNlVVJMIGZvciBlYXNpZXIgZGVidWdnaW5nLlxuICAgICAgLy8gVGhlIHNvdXJjZVVSTCBnZXRzIGluamVjdGVkIGludG8gdGhlIHNvdXJjZSB0aGF0J3MgZXZhbC1lZCwgc28gYmUgY2FyZWZ1bFxuICAgICAgLy8gdG8gbm9ybWFsaXplIGFsbCBraW5kcyBvZiB3aGl0ZXNwYWNlLCBzbyBlLmcuIG5ld2xpbmVzIChhbmQgdW5pY29kZSB2ZXJzaW9ucyBvZiBpdCkgY2FuJ3Qgc25lYWsgaW5cbiAgICAgIC8vIGFuZCBlc2NhcGUgdGhlIGNvbW1lbnQsIHRodXMgaW5qZWN0aW5nIGNvZGUgdGhhdCBnZXRzIGV2YWxlZC5cbiAgICAgIHZhciBzb3VyY2VVUkwgPSAnLy8jIHNvdXJjZVVSTD0nICtcbiAgICAgICAgKGhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3NvdXJjZVVSTCcpXG4gICAgICAgICAgPyAob3B0aW9ucy5zb3VyY2VVUkwgKyAnJykucmVwbGFjZSgvXFxzL2csICcgJylcbiAgICAgICAgICA6ICgnbG9kYXNoLnRlbXBsYXRlU291cmNlc1snICsgKCsrdGVtcGxhdGVDb3VudGVyKSArICddJylcbiAgICAgICAgKSArICdcXG4nO1xuXG4gICAgICBzdHJpbmcucmVwbGFjZShyZURlbGltaXRlcnMsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGVWYWx1ZSwgaW50ZXJwb2xhdGVWYWx1ZSwgZXNUZW1wbGF0ZVZhbHVlLCBldmFsdWF0ZVZhbHVlLCBvZmZzZXQpIHtcbiAgICAgICAgaW50ZXJwb2xhdGVWYWx1ZSB8fCAoaW50ZXJwb2xhdGVWYWx1ZSA9IGVzVGVtcGxhdGVWYWx1ZSk7XG5cbiAgICAgICAgLy8gRXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBjYW4ndCBiZSBpbmNsdWRlZCBpbiBzdHJpbmcgbGl0ZXJhbHMuXG4gICAgICAgIHNvdXJjZSArPSBzdHJpbmcuc2xpY2UoaW5kZXgsIG9mZnNldCkucmVwbGFjZShyZVVuZXNjYXBlZFN0cmluZywgZXNjYXBlU3RyaW5nQ2hhcik7XG5cbiAgICAgICAgLy8gUmVwbGFjZSBkZWxpbWl0ZXJzIHdpdGggc25pcHBldHMuXG4gICAgICAgIGlmIChlc2NhcGVWYWx1ZSkge1xuICAgICAgICAgIGlzRXNjYXBpbmcgPSB0cnVlO1xuICAgICAgICAgIHNvdXJjZSArPSBcIicgK1xcbl9fZShcIiArIGVzY2FwZVZhbHVlICsgXCIpICtcXG4nXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2YWx1YXRlVmFsdWUpIHtcbiAgICAgICAgICBpc0V2YWx1YXRpbmcgPSB0cnVlO1xuICAgICAgICAgIHNvdXJjZSArPSBcIic7XFxuXCIgKyBldmFsdWF0ZVZhbHVlICsgXCI7XFxuX19wICs9ICdcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW50ZXJwb2xhdGVWYWx1ZSkge1xuICAgICAgICAgIHNvdXJjZSArPSBcIicgK1xcbigoX190ID0gKFwiICsgaW50ZXJwb2xhdGVWYWx1ZSArIFwiKSkgPT0gbnVsbCA/ICcnIDogX190KSArXFxuJ1wiO1xuICAgICAgICB9XG4gICAgICAgIGluZGV4ID0gb2Zmc2V0ICsgbWF0Y2gubGVuZ3RoO1xuXG4gICAgICAgIC8vIFRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgcHJvZHVjdHMgbmVlZHMgYG1hdGNoYCByZXR1cm5lZCBpblxuICAgICAgICAvLyBvcmRlciB0byBwcm9kdWNlIHRoZSBjb3JyZWN0IGBvZmZzZXRgIHZhbHVlLlxuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICB9KTtcblxuICAgICAgc291cmNlICs9IFwiJztcXG5cIjtcblxuICAgICAgLy8gSWYgYHZhcmlhYmxlYCBpcyBub3Qgc3BlY2lmaWVkIHdyYXAgYSB3aXRoLXN0YXRlbWVudCBhcm91bmQgdGhlIGdlbmVyYXRlZFxuICAgICAgLy8gY29kZSB0byBhZGQgdGhlIGRhdGEgb2JqZWN0IHRvIHRoZSB0b3Agb2YgdGhlIHNjb3BlIGNoYWluLlxuICAgICAgdmFyIHZhcmlhYmxlID0gaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLCAndmFyaWFibGUnKSAmJiBvcHRpb25zLnZhcmlhYmxlO1xuICAgICAgaWYgKCF2YXJpYWJsZSkge1xuICAgICAgICBzb3VyY2UgPSAnd2l0aCAob2JqKSB7XFxuJyArIHNvdXJjZSArICdcXG59XFxuJztcbiAgICAgIH1cbiAgICAgIC8vIFRocm93IGFuIGVycm9yIGlmIGEgZm9yYmlkZGVuIGNoYXJhY3RlciB3YXMgZm91bmQgaW4gYHZhcmlhYmxlYCwgdG8gcHJldmVudFxuICAgICAgLy8gcG90ZW50aWFsIGNvbW1hbmQgaW5qZWN0aW9uIGF0dGFja3MuXG4gICAgICBlbHNlIGlmIChyZUZvcmJpZGRlbklkZW50aWZpZXJDaGFycy50ZXN0KHZhcmlhYmxlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5WQUxJRF9URU1QTF9WQVJfRVJST1JfVEVYVCk7XG4gICAgICB9XG5cbiAgICAgIC8vIENsZWFudXAgY29kZSBieSBzdHJpcHBpbmcgZW1wdHkgc3RyaW5ncy5cbiAgICAgIHNvdXJjZSA9IChpc0V2YWx1YXRpbmcgPyBzb3VyY2UucmVwbGFjZShyZUVtcHR5U3RyaW5nTGVhZGluZywgJycpIDogc291cmNlKVxuICAgICAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nTWlkZGxlLCAnJDEnKVxuICAgICAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nVHJhaWxpbmcsICckMTsnKTtcblxuICAgICAgLy8gRnJhbWUgY29kZSBhcyB0aGUgZnVuY3Rpb24gYm9keS5cbiAgICAgIHNvdXJjZSA9ICdmdW5jdGlvbignICsgKHZhcmlhYmxlIHx8ICdvYmonKSArICcpIHtcXG4nICtcbiAgICAgICAgKHZhcmlhYmxlXG4gICAgICAgICAgPyAnJ1xuICAgICAgICAgIDogJ29iaiB8fCAob2JqID0ge30pO1xcbidcbiAgICAgICAgKSArXG4gICAgICAgIFwidmFyIF9fdCwgX19wID0gJydcIiArXG4gICAgICAgIChpc0VzY2FwaW5nXG4gICAgICAgICAgID8gJywgX19lID0gXy5lc2NhcGUnXG4gICAgICAgICAgIDogJydcbiAgICAgICAgKSArXG4gICAgICAgIChpc0V2YWx1YXRpbmdcbiAgICAgICAgICA/ICcsIF9faiA9IEFycmF5LnByb3RvdHlwZS5qb2luO1xcbicgK1xuICAgICAgICAgICAgXCJmdW5jdGlvbiBwcmludCgpIHsgX19wICs9IF9fai5jYWxsKGFyZ3VtZW50cywgJycpIH1cXG5cIlxuICAgICAgICAgIDogJztcXG4nXG4gICAgICAgICkgK1xuICAgICAgICBzb3VyY2UgK1xuICAgICAgICAncmV0dXJuIF9fcFxcbn0nO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYXR0ZW1wdChmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEZ1bmN0aW9uKGltcG9ydHNLZXlzLCBzb3VyY2VVUkwgKyAncmV0dXJuICcgKyBzb3VyY2UpXG4gICAgICAgICAgLmFwcGx5KHVuZGVmaW5lZCwgaW1wb3J0c1ZhbHVlcyk7XG4gICAgICB9KTtcblxuICAgICAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24ncyBzb3VyY2UgYnkgaXRzIGB0b1N0cmluZ2AgbWV0aG9kIG9yXG4gICAgICAvLyB0aGUgYHNvdXJjZWAgcHJvcGVydHkgYXMgYSBjb252ZW5pZW5jZSBmb3IgaW5saW5pbmcgY29tcGlsZWQgdGVtcGxhdGVzLlxuICAgICAgcmVzdWx0LnNvdXJjZSA9IHNvdXJjZTtcbiAgICAgIGlmIChpc0Vycm9yKHJlc3VsdCkpIHtcbiAgICAgICAgdGhyb3cgcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgYSB3aG9sZSwgdG8gbG93ZXIgY2FzZSBqdXN0IGxpa2VcbiAgICAgKiBbU3RyaW5nI3RvTG93ZXJDYXNlXShodHRwczovL21kbi5pby90b0xvd2VyQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBsb3dlciBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9Mb3dlcignLS1Gb28tQmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnLS1mb28tYmFyLS0nXG4gICAgICpcbiAgICAgKiBfLnRvTG93ZXIoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdmb29iYXInXG4gICAgICpcbiAgICAgKiBfLnRvTG93ZXIoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ19fZm9vX2Jhcl9fJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvTG93ZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0b1N0cmluZyh2YWx1ZSkudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgYSB3aG9sZSwgdG8gdXBwZXIgY2FzZSBqdXN0IGxpa2VcbiAgICAgKiBbU3RyaW5nI3RvVXBwZXJDYXNlXShodHRwczovL21kbi5pby90b1VwcGVyQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1cHBlciBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9VcHBlcignLS1mb28tYmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnLS1GT08tQkFSLS0nXG4gICAgICpcbiAgICAgKiBfLnRvVXBwZXIoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdGT09CQVInXG4gICAgICpcbiAgICAgKiBfLnRvVXBwZXIoJ19fZm9vX2Jhcl9fJyk7XG4gICAgICogLy8gPT4gJ19fRk9PX0JBUl9fJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvVXBwZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0b1N0cmluZyh2YWx1ZSkudG9VcHBlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW0oJyAgYWJjICAnKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqXG4gICAgICogXy50cmltKCctXy1hYmMtXy0nLCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqXG4gICAgICogXy5tYXAoWycgIGZvbyAgJywgJyAgYmFyICAnXSwgXy50cmltKTtcbiAgICAgKiAvLyA9PiBbJ2ZvbycsICdiYXInXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyaW0oc3RyaW5nLCBjaGFycywgZ3VhcmQpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBpZiAoc3RyaW5nICYmIChndWFyZCB8fCBjaGFycyA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICByZXR1cm4gYmFzZVRyaW0oc3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIGlmICghc3RyaW5nIHx8ICEoY2hhcnMgPSBiYXNlVG9TdHJpbmcoY2hhcnMpKSkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyksXG4gICAgICAgICAgY2hyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoY2hhcnMpLFxuICAgICAgICAgIHN0YXJ0ID0gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpLFxuICAgICAgICAgIGVuZCA9IGNoYXJzRW5kSW5kZXgoc3RyU3ltYm9scywgY2hyU3ltYm9scykgKyAxO1xuXG4gICAgICByZXR1cm4gY2FzdFNsaWNlKHN0clN5bWJvbHMsIHN0YXJ0LCBlbmQpLmpvaW4oJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdHJhaWxpbmcgd2hpdGVzcGFjZSBvciBzcGVjaWZpZWQgY2hhcmFjdGVycyBmcm9tIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz13aGl0ZXNwYWNlXSBUaGUgY2hhcmFjdGVycyB0byB0cmltLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJpbUVuZCgnICBhYmMgICcpO1xuICAgICAqIC8vID0+ICcgIGFiYydcbiAgICAgKlxuICAgICAqIF8udHJpbUVuZCgnLV8tYWJjLV8tJywgJ18tJyk7XG4gICAgICogLy8gPT4gJy1fLWFiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0cmltRW5kKHN0cmluZywgY2hhcnMsIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgaWYgKHN0cmluZyAmJiAoZ3VhcmQgfHwgY2hhcnMgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZy5zbGljZSgwLCB0cmltbWVkRW5kSW5kZXgoc3RyaW5nKSArIDEpO1xuICAgICAgfVxuICAgICAgaWYgKCFzdHJpbmcgfHwgIShjaGFycyA9IGJhc2VUb1N0cmluZyhjaGFycykpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgc3RyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoc3RyaW5nKSxcbiAgICAgICAgICBlbmQgPSBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIHN0cmluZ1RvQXJyYXkoY2hhcnMpKSArIDE7XG5cbiAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyU3ltYm9scywgMCwgZW5kKS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGxlYWRpbmcgd2hpdGVzcGFjZSBvciBzcGVjaWZpZWQgY2hhcmFjdGVycyBmcm9tIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz13aGl0ZXNwYWNlXSBUaGUgY2hhcmFjdGVycyB0byB0cmltLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJpbVN0YXJ0KCcgIGFiYyAgJyk7XG4gICAgICogLy8gPT4gJ2FiYyAgJ1xuICAgICAqXG4gICAgICogXy50cmltU3RhcnQoJy1fLWFiYy1fLScsICdfLScpO1xuICAgICAqIC8vID0+ICdhYmMtXy0nXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJpbVN0YXJ0KHN0cmluZywgY2hhcnMsIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgaWYgKHN0cmluZyAmJiAoZ3VhcmQgfHwgY2hhcnMgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAoIXN0cmluZyB8fCAhKGNoYXJzID0gYmFzZVRvU3RyaW5nKGNoYXJzKSkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpLFxuICAgICAgICAgIHN0YXJ0ID0gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIHN0cmluZ1RvQXJyYXkoY2hhcnMpKTtcblxuICAgICAgcmV0dXJuIGNhc3RTbGljZShzdHJTeW1ib2xzLCBzdGFydCkuam9pbignJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJ1bmNhdGVzIGBzdHJpbmdgIGlmIGl0J3MgbG9uZ2VyIHRoYW4gdGhlIGdpdmVuIG1heGltdW0gc3RyaW5nIGxlbmd0aC5cbiAgICAgKiBUaGUgbGFzdCBjaGFyYWN0ZXJzIG9mIHRoZSB0cnVuY2F0ZWQgc3RyaW5nIGFyZSByZXBsYWNlZCB3aXRoIHRoZSBvbWlzc2lvblxuICAgICAqIHN0cmluZyB3aGljaCBkZWZhdWx0cyB0byBcIi4uLlwiLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRydW5jYXRlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5sZW5ndGg9MzBdIFRoZSBtYXhpbXVtIHN0cmluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLm9taXNzaW9uPScuLi4nXSBUaGUgc3RyaW5nIHRvIGluZGljYXRlIHRleHQgaXMgb21pdHRlZC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IFtvcHRpb25zLnNlcGFyYXRvcl0gVGhlIHNlcGFyYXRvciBwYXR0ZXJuIHRvIHRydW5jYXRlIHRvLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRydW5jYXRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nKTtcbiAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnaGJvLi4uJ1xuICAgICAqXG4gICAgICogXy50cnVuY2F0ZSgnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnaGJvcmlubycsIHtcbiAgICAgKiAgICdsZW5ndGgnOiAyNCxcbiAgICAgKiAgICdzZXBhcmF0b3InOiAnICdcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLC4uLidcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICogICAnbGVuZ3RoJzogMjQsXG4gICAgICogICAnc2VwYXJhdG9yJzogLyw/ICsvXG4gICAgICogfSk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZS4uLidcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICogICAnb21pc3Npb24nOiAnIFsuLi5dJ1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+ICdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWcgWy4uLl0nXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJ1bmNhdGUoc3RyaW5nLCBvcHRpb25zKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gREVGQVVMVF9UUlVOQ19MRU5HVEgsXG4gICAgICAgICAgb21pc3Npb24gPSBERUZBVUxUX1RSVU5DX09NSVNTSU9OO1xuXG4gICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgdmFyIHNlcGFyYXRvciA9ICdzZXBhcmF0b3InIGluIG9wdGlvbnMgPyBvcHRpb25zLnNlcGFyYXRvciA6IHNlcGFyYXRvcjtcbiAgICAgICAgbGVuZ3RoID0gJ2xlbmd0aCcgaW4gb3B0aW9ucyA/IHRvSW50ZWdlcihvcHRpb25zLmxlbmd0aCkgOiBsZW5ndGg7XG4gICAgICAgIG9taXNzaW9uID0gJ29taXNzaW9uJyBpbiBvcHRpb25zID8gYmFzZVRvU3RyaW5nKG9wdGlvbnMub21pc3Npb24pIDogb21pc3Npb247XG4gICAgICB9XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuXG4gICAgICB2YXIgc3RyTGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcbiAgICAgIGlmIChoYXNVbmljb2RlKHN0cmluZykpIHtcbiAgICAgICAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyk7XG4gICAgICAgIHN0ckxlbmd0aCA9IHN0clN5bWJvbHMubGVuZ3RoO1xuICAgICAgfVxuICAgICAgaWYgKGxlbmd0aCA+PSBzdHJMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBlbmQgPSBsZW5ndGggLSBzdHJpbmdTaXplKG9taXNzaW9uKTtcbiAgICAgIGlmIChlbmQgPCAxKSB7XG4gICAgICAgIHJldHVybiBvbWlzc2lvbjtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBzdHJTeW1ib2xzXG4gICAgICAgID8gY2FzdFNsaWNlKHN0clN5bWJvbHMsIDAsIGVuZCkuam9pbignJylcbiAgICAgICAgOiBzdHJpbmcuc2xpY2UoMCwgZW5kKTtcblxuICAgICAgaWYgKHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQgKyBvbWlzc2lvbjtcbiAgICAgIH1cbiAgICAgIGlmIChzdHJTeW1ib2xzKSB7XG4gICAgICAgIGVuZCArPSAocmVzdWx0Lmxlbmd0aCAtIGVuZCk7XG4gICAgICB9XG4gICAgICBpZiAoaXNSZWdFeHAoc2VwYXJhdG9yKSkge1xuICAgICAgICBpZiAoc3RyaW5nLnNsaWNlKGVuZCkuc2VhcmNoKHNlcGFyYXRvcikpIHtcbiAgICAgICAgICB2YXIgbWF0Y2gsXG4gICAgICAgICAgICAgIHN1YnN0cmluZyA9IHJlc3VsdDtcblxuICAgICAgICAgIGlmICghc2VwYXJhdG9yLmdsb2JhbCkge1xuICAgICAgICAgICAgc2VwYXJhdG9yID0gUmVnRXhwKHNlcGFyYXRvci5zb3VyY2UsIHRvU3RyaW5nKHJlRmxhZ3MuZXhlYyhzZXBhcmF0b3IpKSArICdnJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNlcGFyYXRvci5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgIHdoaWxlICgobWF0Y2ggPSBzZXBhcmF0b3IuZXhlYyhzdWJzdHJpbmcpKSkge1xuICAgICAgICAgICAgdmFyIG5ld0VuZCA9IG1hdGNoLmluZGV4O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMCwgbmV3RW5kID09PSB1bmRlZmluZWQgPyBlbmQgOiBuZXdFbmQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHN0cmluZy5pbmRleE9mKGJhc2VUb1N0cmluZyhzZXBhcmF0b3IpLCBlbmQpICE9IGVuZCkge1xuICAgICAgICB2YXIgaW5kZXggPSByZXN1bHQubGFzdEluZGV4T2Yoc2VwYXJhdG9yKTtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMCwgaW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0ICsgb21pc3Npb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGludmVyc2Ugb2YgYF8uZXNjYXBlYDsgdGhpcyBtZXRob2QgY29udmVydHMgdGhlIEhUTUwgZW50aXRpZXNcbiAgICAgKiBgJmFtcDtgLCBgJmx0O2AsIGAmZ3Q7YCwgYCZxdW90O2AsIGFuZCBgJiMzOTtgIGluIGBzdHJpbmdgIHRvXG4gICAgICogdGhlaXIgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vIG90aGVyIEhUTUwgZW50aXRpZXMgYXJlIHVuZXNjYXBlZC4gVG8gdW5lc2NhcGUgYWRkaXRpb25hbFxuICAgICAqIEhUTUwgZW50aXRpZXMgdXNlIGEgdGhpcmQtcGFydHkgbGlicmFyeSBsaWtlIFtfaGVfXShodHRwczovL210aHMuYmUvaGUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNi4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHVuZXNjYXBlLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuZXNjYXBlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5lc2NhcGUoJ2ZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlcycpO1xuICAgICAqIC8vID0+ICdmcmVkLCBiYXJuZXksICYgcGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmVzY2FwZShzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICByZXR1cm4gKHN0cmluZyAmJiByZUhhc0VzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSlcbiAgICAgICAgPyBzdHJpbmcucmVwbGFjZShyZUVzY2FwZWRIdG1sLCB1bmVzY2FwZUh0bWxDaGFyKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgc3BhY2Ugc2VwYXJhdGVkIHdvcmRzLCB0byB1cHBlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdXBwZXIgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVwcGVyQ2FzZSgnLS1mb28tYmFyJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICpcbiAgICAgKiBfLnVwcGVyQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICpcbiAgICAgKiBfLnVwcGVyQ2FzZSgnX19mb29fYmFyX18nKTtcbiAgICAgKiAvLyA9PiAnRk9PIEJBUidcbiAgICAgKi9cbiAgICB2YXIgdXBwZXJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgd29yZC50b1VwcGVyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byB1cHBlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51cHBlckZpcnN0KCdmcmVkJyk7XG4gICAgICogLy8gPT4gJ0ZyZWQnXG4gICAgICpcbiAgICAgKiBfLnVwcGVyRmlyc3QoJ0ZSRUQnKTtcbiAgICAgKiAvLyA9PiAnRlJFRCdcbiAgICAgKi9cbiAgICB2YXIgdXBwZXJGaXJzdCA9IGNyZWF0ZUNhc2VGaXJzdCgndG9VcHBlckNhc2UnKTtcblxuICAgIC8qKlxuICAgICAqIFNwbGl0cyBgc3RyaW5nYCBpbnRvIGFuIGFycmF5IG9mIGl0cyB3b3Jkcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfHN0cmluZ30gW3BhdHRlcm5dIFRoZSBwYXR0ZXJuIHRvIG1hdGNoIHdvcmRzLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3b3JkcyBvZiBgc3RyaW5nYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy53b3JkcygnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiBbJ2ZyZWQnLCAnYmFybmV5JywgJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogXy53b3JkcygnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnLCAvW14sIF0rL2cpO1xuICAgICAqIC8vID0+IFsnZnJlZCcsICdiYXJuZXknLCAnJicsICdwZWJibGVzJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3b3JkcyhzdHJpbmcsIHBhdHRlcm4sIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcGF0dGVybiA9IGd1YXJkID8gdW5kZWZpbmVkIDogcGF0dGVybjtcblxuICAgICAgaWYgKHBhdHRlcm4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gaGFzVW5pY29kZVdvcmQoc3RyaW5nKSA/IHVuaWNvZGVXb3JkcyhzdHJpbmcpIDogYXNjaWlXb3JkcyhzdHJpbmcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN0cmluZy5tYXRjaChwYXR0ZXJuKSB8fCBbXTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBBdHRlbXB0cyB0byBpbnZva2UgYGZ1bmNgLCByZXR1cm5pbmcgZWl0aGVyIHRoZSByZXN1bHQgb3IgdGhlIGNhdWdodCBlcnJvclxuICAgICAqIG9iamVjdC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZSBwcm92aWRlZCB0byBgZnVuY2Agd2hlbiBpdCdzIGludm9rZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGF0dGVtcHQuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGBmdW5jYCByZXN1bHQgb3IgZXJyb3Igb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBBdm9pZCB0aHJvd2luZyBlcnJvcnMgZm9yIGludmFsaWQgc2VsZWN0b3JzLlxuICAgICAqIHZhciBlbGVtZW50cyA9IF8uYXR0ZW1wdChmdW5jdGlvbihzZWxlY3Rvcikge1xuICAgICAqICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuICAgICAqIH0sICc+Xz4nKTtcbiAgICAgKlxuICAgICAqIGlmIChfLmlzRXJyb3IoZWxlbWVudHMpKSB7XG4gICAgICogICBlbGVtZW50cyA9IFtdO1xuICAgICAqIH1cbiAgICAgKi9cbiAgICB2YXIgYXR0ZW1wdCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIGFyZ3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB1bmRlZmluZWQsIGFyZ3MpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gaXNFcnJvcihlKSA/IGUgOiBuZXcgRXJyb3IoZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBCaW5kcyBtZXRob2RzIG9mIGFuIG9iamVjdCB0byB0aGUgb2JqZWN0IGl0c2VsZiwgb3ZlcndyaXRpbmcgdGhlIGV4aXN0aW5nXG4gICAgICogbWV0aG9kLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIGJvdW5kIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGJpbmQgYW5kIGFzc2lnbiB0aGUgYm91bmQgbWV0aG9kcyB0by5cbiAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBtZXRob2ROYW1lcyBUaGUgb2JqZWN0IG1ldGhvZCBuYW1lcyB0byBiaW5kLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB2aWV3ID0ge1xuICAgICAqICAgJ2xhYmVsJzogJ2RvY3MnLFxuICAgICAqICAgJ2NsaWNrJzogZnVuY3Rpb24oKSB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdjbGlja2VkICcgKyB0aGlzLmxhYmVsKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5iaW5kQWxsKHZpZXcsIFsnY2xpY2snXSk7XG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIHZpZXcuY2xpY2spO1xuICAgICAqIC8vID0+IExvZ3MgJ2NsaWNrZWQgZG9jcycgd2hlbiBjbGlja2VkLlxuICAgICAqL1xuICAgIHZhciBiaW5kQWxsID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBtZXRob2ROYW1lcykge1xuICAgICAgYXJyYXlFYWNoKG1ldGhvZE5hbWVzLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgICAga2V5ID0gdG9LZXkoa2V5KTtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBiaW5kKG9iamVjdFtrZXldLCBvYmplY3QpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGl0ZXJhdGVzIG92ZXIgYHBhaXJzYCBhbmQgaW52b2tlcyB0aGUgY29ycmVzcG9uZGluZ1xuICAgICAqIGZ1bmN0aW9uIG9mIHRoZSBmaXJzdCBwcmVkaWNhdGUgdG8gcmV0dXJuIHRydXRoeS4gVGhlIHByZWRpY2F0ZS1mdW5jdGlvblxuICAgICAqIHBhaXJzIGFyZSBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWRcbiAgICAgKiBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheX0gcGFpcnMgVGhlIHByZWRpY2F0ZS1mdW5jdGlvbiBwYWlycy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb21wb3NpdGUgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5jb25kKFtcbiAgICAgKiAgIFtfLm1hdGNoZXMoeyAnYSc6IDEgfSksICAgICAgICAgICBfLmNvbnN0YW50KCdtYXRjaGVzIEEnKV0sXG4gICAgICogICBbXy5jb25mb3Jtcyh7ICdiJzogXy5pc051bWJlciB9KSwgXy5jb25zdGFudCgnbWF0Y2hlcyBCJyldLFxuICAgICAqICAgW18uc3R1YlRydWUsICAgICAgICAgICAgICAgICAgICAgIF8uY29uc3RhbnQoJ25vIG1hdGNoJyldXG4gICAgICogXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gICAgICogLy8gPT4gJ21hdGNoZXMgQSdcbiAgICAgKlxuICAgICAqIGZ1bmMoeyAnYSc6IDAsICdiJzogMSB9KTtcbiAgICAgKiAvLyA9PiAnbWF0Y2hlcyBCJ1xuICAgICAqXG4gICAgICogZnVuYyh7ICdhJzogJzEnLCAnYic6ICcyJyB9KTtcbiAgICAgKiAvLyA9PiAnbm8gbWF0Y2gnXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29uZChwYWlycykge1xuICAgICAgdmFyIGxlbmd0aCA9IHBhaXJzID09IG51bGwgPyAwIDogcGFpcnMubGVuZ3RoLFxuICAgICAgICAgIHRvSXRlcmF0ZWUgPSBnZXRJdGVyYXRlZSgpO1xuXG4gICAgICBwYWlycyA9ICFsZW5ndGggPyBbXSA6IGFycmF5TWFwKHBhaXJzLCBmdW5jdGlvbihwYWlyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcGFpclsxXSAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbdG9JdGVyYXRlZShwYWlyWzBdKSwgcGFpclsxXV07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTE7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIHBhaXIgPSBwYWlyc1tpbmRleF07XG4gICAgICAgICAgaWYgKGFwcGx5KHBhaXJbMF0sIHRoaXMsIGFyZ3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwbHkocGFpclsxXSwgdGhpcywgYXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBwcmVkaWNhdGUgcHJvcGVydGllcyBvZiBgc291cmNlYCB3aXRoXG4gICAgICogdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgdmFsdWVzIG9mIGEgZ2l2ZW4gb2JqZWN0LCByZXR1cm5pbmcgYHRydWVgIGlmXG4gICAgICogYWxsIHByZWRpY2F0ZXMgcmV0dXJuIHRydXRoeSwgZWxzZSBgZmFsc2VgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoZSBjcmVhdGVkIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gYF8uY29uZm9ybXNUb2Agd2l0aFxuICAgICAqIGBzb3VyY2VgIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgcHJlZGljYXRlcyB0byBjb25mb3JtIHRvLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW1xuICAgICAqICAgeyAnYSc6IDIsICdiJzogMSB9LFxuICAgICAqICAgeyAnYSc6IDEsICdiJzogMiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmlsdGVyKG9iamVjdHMsIF8uY29uZm9ybXMoeyAnYic6IGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPiAxOyB9IH0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEsICdiJzogMiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmZvcm1zKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIGJhc2VDb25mb3JtcyhiYXNlQ2xvbmUoc291cmNlLCBDTE9ORV9ERUVQX0ZMQUcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi40LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBmcm9tIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29uc3RhbnQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLmNvbnN0YW50KHsgJ2EnOiAxIH0pKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHMpO1xuICAgICAqIC8vID0+IFt7ICdhJzogMSB9LCB7ICdhJzogMSB9XVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbnN0YW50KHZhbHVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGB2YWx1ZWAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBkZWZhdWx0IHZhbHVlIHNob3VsZCBiZSByZXR1cm5lZCBpblxuICAgICAqIGl0cyBwbGFjZS4gVGhlIGBkZWZhdWx0VmFsdWVgIGlzIHJldHVybmVkIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGBudWxsYCxcbiAgICAgKiBvciBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjE0LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7Kn0gZGVmYXVsdFZhbHVlIFRoZSBkZWZhdWx0IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZhdWx0VG8oMSwgMTApO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdFRvKHVuZGVmaW5lZCwgMTApO1xuICAgICAqIC8vID0+IDEwXG4gICAgICovXG4gICAgZnVuY3Rpb24gZGVmYXVsdFRvKHZhbHVlLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHJldHVybiAodmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSAhPT0gdmFsdWUpID8gZGVmYXVsdFZhbHVlIDogdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIGludm9raW5nIHRoZSBnaXZlbiBmdW5jdGlvbnNcbiAgICAgKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGUgY3JlYXRlZCBmdW5jdGlvbiwgd2hlcmUgZWFjaCBzdWNjZXNzaXZlXG4gICAgICogaW52b2NhdGlvbiBpcyBzdXBwbGllZCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcmV2aW91cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtmdW5jc10gVGhlIGZ1bmN0aW9ucyB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBzZWUgXy5mbG93UmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgYWRkU3F1YXJlID0gXy5mbG93KFtfLmFkZCwgc3F1YXJlXSk7XG4gICAgICogYWRkU3F1YXJlKDEsIDIpO1xuICAgICAqIC8vID0+IDlcbiAgICAgKi9cbiAgICB2YXIgZmxvdyA9IGNyZWF0ZUZsb3coKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmxvd2AgZXhjZXB0IHRoYXQgaXQgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXRcbiAgICAgKiBpbnZva2VzIHRoZSBnaXZlbiBmdW5jdGlvbnMgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2Z1bmNzXSBUaGUgZnVuY3Rpb25zIHRvIGludm9rZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb21wb3NpdGUgZnVuY3Rpb24uXG4gICAgICogQHNlZSBfLmZsb3dcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgYWRkU3F1YXJlID0gXy5mbG93UmlnaHQoW3NxdWFyZSwgXy5hZGRdKTtcbiAgICAgKiBhZGRTcXVhcmUoMSwgMik7XG4gICAgICogLy8gPT4gOVxuICAgICAqL1xuICAgIHZhciBmbG93UmlnaHQgPSBjcmVhdGVGbG93KHRydWUpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgQW55IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coXy5pZGVudGl0eShvYmplY3QpID09PSBvYmplY3QpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGFyZ3VtZW50cyBvZiB0aGUgY3JlYXRlZFxuICAgICAqIGZ1bmN0aW9uLiBJZiBgZnVuY2AgaXMgYSBwcm9wZXJ0eSBuYW1lLCB0aGUgY3JlYXRlZCBmdW5jdGlvbiByZXR1cm5zIHRoZVxuICAgICAqIHByb3BlcnR5IHZhbHVlIGZvciBhIGdpdmVuIGVsZW1lbnQuIElmIGBmdW5jYCBpcyBhbiBhcnJheSBvciBvYmplY3QsIHRoZVxuICAgICAqIGNyZWF0ZWQgZnVuY3Rpb24gcmV0dXJucyBgdHJ1ZWAgZm9yIGVsZW1lbnRzIHRoYXQgY29udGFpbiB0aGUgZXF1aXZhbGVudFxuICAgICAqIHNvdXJjZSBwcm9wZXJ0aWVzLCBvdGhlcndpc2UgaXQgcmV0dXJucyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IFtmdW5jPV8uaWRlbnRpdHldIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIGEgY2FsbGJhY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjYWxsYmFjay5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgXy5pdGVyYXRlZSh7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiB0cnVlIH0pKTtcbiAgICAgKiAvLyA9PiBbeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH1dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIF8uaXRlcmF0ZWUoWyd1c2VyJywgJ2ZyZWQnXSkpO1xuICAgICAqIC8vID0+IFt7ICd1c2VyJzogJ2ZyZWQnLCAnYWdlJzogNDAgfV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWFwKHVzZXJzLCBfLml0ZXJhdGVlKCd1c2VyJykpO1xuICAgICAqIC8vID0+IFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gQ3JlYXRlIGN1c3RvbSBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqIF8uaXRlcmF0ZWUgPSBfLndyYXAoXy5pdGVyYXRlZSwgZnVuY3Rpb24oaXRlcmF0ZWUsIGZ1bmMpIHtcbiAgICAgKiAgIHJldHVybiAhXy5pc1JlZ0V4cChmdW5jKSA/IGl0ZXJhdGVlKGZ1bmMpIDogZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICogICAgIHJldHVybiBmdW5jLnRlc3Qoc3RyaW5nKTtcbiAgICAgKiAgIH07XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcihbJ2FiYycsICdkZWYnXSwgL2VmLyk7XG4gICAgICogLy8gPT4gWydkZWYnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGl0ZXJhdGVlKGZ1bmMpIHtcbiAgICAgIHJldHVybiBiYXNlSXRlcmF0ZWUodHlwZW9mIGZ1bmMgPT0gJ2Z1bmN0aW9uJyA/IGZ1bmMgOiBiYXNlQ2xvbmUoZnVuYywgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIGEgZ2l2ZW5cbiAgICAgKiBvYmplY3QgYW5kIGBzb3VyY2VgLCByZXR1cm5pbmcgYHRydWVgIGlmIHRoZSBnaXZlbiBvYmplY3QgaGFzIGVxdWl2YWxlbnRcbiAgICAgKiBwcm9wZXJ0eSB2YWx1ZXMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGUgY3JlYXRlZCBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGBfLmlzTWF0Y2hgIHdpdGggYHNvdXJjZWBcbiAgICAgKiBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIFBhcnRpYWwgY29tcGFyaXNvbnMgd2lsbCBtYXRjaCBlbXB0eSBhcnJheSBhbmQgZW1wdHkgb2JqZWN0IGBzb3VyY2VgXG4gICAgICogdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWUgYF8uaXNFcXVhbGBcbiAgICAgKiBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCB2YWx1ZSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBNdWx0aXBsZSB2YWx1ZXMgY2FuIGJlIGNoZWNrZWQgYnkgY29tYmluaW5nIHNldmVyYWwgbWF0Y2hlcnNcbiAgICAgKiB1c2luZyBgXy5vdmVyU29tZWBcbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9LFxuICAgICAqICAgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maWx0ZXIob2JqZWN0cywgXy5tYXRjaGVzKHsgJ2EnOiA0LCAnYyc6IDYgfSkpO1xuICAgICAqIC8vID0+IFt7ICdhJzogNCwgJ2InOiA1LCAnYyc6IDYgfV1cbiAgICAgKlxuICAgICAqIC8vIENoZWNraW5nIGZvciBzZXZlcmFsIHBvc3NpYmxlIHZhbHVlc1xuICAgICAqIF8uZmlsdGVyKG9iamVjdHMsIF8ub3ZlclNvbWUoW18ubWF0Y2hlcyh7ICdhJzogMSB9KSwgXy5tYXRjaGVzKHsgJ2EnOiA0IH0pXSkpO1xuICAgICAqIC8vID0+IFt7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSwgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF0Y2hlcyhzb3VyY2UpIHtcbiAgICAgIHJldHVybiBiYXNlTWF0Y2hlcyhiYXNlQ2xvbmUoc291cmNlLCBDTE9ORV9ERUVQX0ZMQUcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIHBhcnRpYWwgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gdGhlXG4gICAgICogdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0IHRvIGBzcmNWYWx1ZWAsIHJldHVybmluZyBgdHJ1ZWAgaWYgdGhlXG4gICAgICogb2JqZWN0IHZhbHVlIGlzIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBQYXJ0aWFsIGNvbXBhcmlzb25zIHdpbGwgbWF0Y2ggZW1wdHkgYXJyYXkgYW5kIGVtcHR5IG9iamVjdFxuICAgICAqIGBzcmNWYWx1ZWAgdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWVcbiAgICAgKiBgXy5pc0VxdWFsYCBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCB2YWx1ZSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBNdWx0aXBsZSB2YWx1ZXMgY2FuIGJlIGNoZWNrZWQgYnkgY29tYmluaW5nIHNldmVyYWwgbWF0Y2hlcnNcbiAgICAgKiB1c2luZyBgXy5vdmVyU29tZWBcbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9LFxuICAgICAqICAgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maW5kKG9iamVjdHMsIF8ubWF0Y2hlc1Byb3BlcnR5KCdhJywgNCkpO1xuICAgICAqIC8vID0+IHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XG4gICAgICpcbiAgICAgKiAvLyBDaGVja2luZyBmb3Igc2V2ZXJhbCBwb3NzaWJsZSB2YWx1ZXNcbiAgICAgKiBfLmZpbHRlcihvYmplY3RzLCBfLm92ZXJTb21lKFtfLm1hdGNoZXNQcm9wZXJ0eSgnYScsIDEpLCBfLm1hdGNoZXNQcm9wZXJ0eSgnYScsIDQpXSkpO1xuICAgICAqIC8vID0+IFt7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSwgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF0Y2hlc1Byb3BlcnR5KHBhdGgsIHNyY1ZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLCBiYXNlQ2xvbmUoc3JjVmFsdWUsIENMT05FX0RFRVBfRkxBRykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIG1ldGhvZCBhdCBgcGF0aGAgb2YgYSBnaXZlbiBvYmplY3QuXG4gICAgICogQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZSBwcm92aWRlZCB0byB0aGUgaW52b2tlZCBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy43LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBpbnZva2VyIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiB7ICdiJzogXy5jb25zdGFudCgyKSB9IH0sXG4gICAgICogICB7ICdhJzogeyAnYic6IF8uY29uc3RhbnQoMSkgfSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ubWFwKG9iamVjdHMsIF8ubWV0aG9kKCdhLmInKSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICpcbiAgICAgKiBfLm1hcChvYmplY3RzLCBfLm1ldGhvZChbJ2EnLCAnYiddKSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICovXG4gICAgdmFyIG1ldGhvZCA9IGJhc2VSZXN0KGZ1bmN0aW9uKHBhdGgsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VJbnZva2Uob2JqZWN0LCBwYXRoLCBhcmdzKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ubWV0aG9kYDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlc1xuICAgICAqIHRoZSBtZXRob2QgYXQgYSBnaXZlbiBwYXRoIG9mIGBvYmplY3RgLiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgYXJlXG4gICAgICogcHJvdmlkZWQgdG8gdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgdGhlIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGludm9rZXIgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IF8udGltZXMoMywgXy5jb25zdGFudCksXG4gICAgICogICAgIG9iamVjdCA9IHsgJ2EnOiBhcnJheSwgJ2InOiBhcnJheSwgJ2MnOiBhcnJheSB9O1xuICAgICAqXG4gICAgICogXy5tYXAoWydhWzJdJywgJ2NbMF0nXSwgXy5tZXRob2RPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKlxuICAgICAqIF8ubWFwKFtbJ2EnLCAnMiddLCBbJ2MnLCAnMCddXSwgXy5tZXRob2RPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKi9cbiAgICB2YXIgbWV0aG9kT2YgPSBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52b2tlKG9iamVjdCwgcGF0aCwgYXJncyk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQWRkcyBhbGwgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIGZ1bmN0aW9uIHByb3BlcnRpZXMgb2YgYSBzb3VyY2VcbiAgICAgKiBvYmplY3QgdG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdC4gSWYgYG9iamVjdGAgaXMgYSBmdW5jdGlvbiwgdGhlbiBtZXRob2RzXG4gICAgICogYXJlIGFkZGVkIHRvIGl0cyBwcm90b3R5cGUgYXMgd2VsbC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVc2UgYF8ucnVuSW5Db250ZXh0YCB0byBjcmVhdGUgYSBwcmlzdGluZSBgbG9kYXNoYCBmdW5jdGlvbiB0b1xuICAgICAqIGF2b2lkIGNvbmZsaWN0cyBjYXVzZWQgYnkgbW9kaWZ5aW5nIHRoZSBvcmlnaW5hbC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbnxPYmplY3R9IFtvYmplY3Q9bG9kYXNoXSBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBmdW5jdGlvbnMgdG8gYWRkLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuY2hhaW49dHJ1ZV0gU3BlY2lmeSB3aGV0aGVyIG1peGlucyBhcmUgY2hhaW5hYmxlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbnxPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHZvd2VscyhzdHJpbmcpIHtcbiAgICAgKiAgIHJldHVybiBfLmZpbHRlcihzdHJpbmcsIGZ1bmN0aW9uKHYpIHtcbiAgICAgKiAgICAgcmV0dXJuIC9bYWVpb3VdL2kudGVzdCh2KTtcbiAgICAgKiAgIH0pO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8ubWl4aW4oeyAndm93ZWxzJzogdm93ZWxzIH0pO1xuICAgICAqIF8udm93ZWxzKCdmcmVkJyk7XG4gICAgICogLy8gPT4gWydlJ11cbiAgICAgKlxuICAgICAqIF8oJ2ZyZWQnKS52b3dlbHMoKS52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsnZSddXG4gICAgICpcbiAgICAgKiBfLm1peGluKHsgJ3Zvd2Vscyc6IHZvd2VscyB9LCB7ICdjaGFpbic6IGZhbHNlIH0pO1xuICAgICAqIF8oJ2ZyZWQnKS52b3dlbHMoKTtcbiAgICAgKiAvLyA9PiBbJ2UnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1peGluKG9iamVjdCwgc291cmNlLCBvcHRpb25zKSB7XG4gICAgICB2YXIgcHJvcHMgPSBrZXlzKHNvdXJjZSksXG4gICAgICAgICAgbWV0aG9kTmFtZXMgPSBiYXNlRnVuY3Rpb25zKHNvdXJjZSwgcHJvcHMpO1xuXG4gICAgICBpZiAob3B0aW9ucyA9PSBudWxsICYmXG4gICAgICAgICAgIShpc09iamVjdChzb3VyY2UpICYmIChtZXRob2ROYW1lcy5sZW5ndGggfHwgIXByb3BzLmxlbmd0aCkpKSB7XG4gICAgICAgIG9wdGlvbnMgPSBzb3VyY2U7XG4gICAgICAgIHNvdXJjZSA9IG9iamVjdDtcbiAgICAgICAgb2JqZWN0ID0gdGhpcztcbiAgICAgICAgbWV0aG9kTmFtZXMgPSBiYXNlRnVuY3Rpb25zKHNvdXJjZSwga2V5cyhzb3VyY2UpKTtcbiAgICAgIH1cbiAgICAgIHZhciBjaGFpbiA9ICEoaXNPYmplY3Qob3B0aW9ucykgJiYgJ2NoYWluJyBpbiBvcHRpb25zKSB8fCAhIW9wdGlvbnMuY2hhaW4sXG4gICAgICAgICAgaXNGdW5jID0gaXNGdW5jdGlvbihvYmplY3QpO1xuXG4gICAgICBhcnJheUVhY2gobWV0aG9kTmFtZXMsIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBzb3VyY2VbbWV0aG9kTmFtZV07XG4gICAgICAgIG9iamVjdFttZXRob2ROYW1lXSA9IGZ1bmM7XG4gICAgICAgIGlmIChpc0Z1bmMpIHtcbiAgICAgICAgICBvYmplY3QucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgY2hhaW5BbGwgPSB0aGlzLl9fY2hhaW5fXztcbiAgICAgICAgICAgIGlmIChjaGFpbiB8fCBjaGFpbkFsbCkge1xuICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gb2JqZWN0KHRoaXMuX193cmFwcGVkX18pLFxuICAgICAgICAgICAgICAgICAgYWN0aW9ucyA9IHJlc3VsdC5fX2FjdGlvbnNfXyA9IGNvcHlBcnJheSh0aGlzLl9fYWN0aW9uc19fKTtcblxuICAgICAgICAgICAgICBhY3Rpb25zLnB1c2goeyAnZnVuYyc6IGZ1bmMsICdhcmdzJzogYXJndW1lbnRzLCAndGhpc0FyZyc6IG9iamVjdCB9KTtcbiAgICAgICAgICAgICAgcmVzdWx0Ll9fY2hhaW5fXyA9IGNoYWluQWxsO1xuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkob2JqZWN0LCBhcnJheVB1c2goW3RoaXMudmFsdWUoKV0sIGFyZ3VtZW50cykpO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldmVydHMgdGhlIGBfYCB2YXJpYWJsZSB0byBpdHMgcHJldmlvdXMgdmFsdWUgYW5kIHJldHVybnMgYSByZWZlcmVuY2UgdG9cbiAgICAgKiB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBsb2Rhc2ggPSBfLm5vQ29uZmxpY3QoKTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBub0NvbmZsaWN0KCkge1xuICAgICAgaWYgKHJvb3QuXyA9PT0gdGhpcykge1xuICAgICAgICByb290Ll8gPSBvbGREYXNoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGltZXMoMiwgXy5ub29wKTtcbiAgICAgKiAvLyA9PiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdXG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9vcCgpIHtcbiAgICAgIC8vIE5vIG9wZXJhdGlvbiBwZXJmb3JtZWQuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZ2V0cyB0aGUgYXJndW1lbnQgYXQgaW5kZXggYG5gLiBJZiBgbmAgaXMgbmVnYXRpdmUsXG4gICAgICogdGhlIG50aCBhcmd1bWVudCBmcm9tIHRoZSBlbmQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0wXSBUaGUgaW5kZXggb2YgdGhlIGFyZ3VtZW50IHRvIHJldHVybi5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYXNzLXRocnUgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5udGhBcmcoMSk7XG4gICAgICogZnVuYygnYScsICdiJywgJ2MnLCAnZCcpO1xuICAgICAqIC8vID0+ICdiJ1xuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm50aEFyZygtMik7XG4gICAgICogZnVuYygnYScsICdiJywgJ2MnLCAnZCcpO1xuICAgICAqIC8vID0+ICdjJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIG50aEFyZyhuKSB7XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VOdGgoYXJncywgbik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBpdGVyYXRlZXNgIHdpdGggdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlc1xuICAgICAqIGFuZCByZXR1cm5zIHRoZWlyIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIGl0ZXJhdGVlcyB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyKFtNYXRoLm1heCwgTWF0aC5taW5dKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoMSwgMiwgMywgNCk7XG4gICAgICogLy8gPT4gWzQsIDFdXG4gICAgICovXG4gICAgdmFyIG92ZXIgPSBjcmVhdGVPdmVyKGFycmF5TWFwKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiAqKmFsbCoqIG9mIHRoZSBgcHJlZGljYXRlc2AgcmV0dXJuXG4gICAgICogdHJ1dGh5IHdoZW4gaW52b2tlZCB3aXRoIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBGb2xsb3dpbmcgc2hvcnRoYW5kcyBhcmUgcG9zc2libGUgZm9yIHByb3ZpZGluZyBwcmVkaWNhdGVzLlxuICAgICAqIFBhc3MgYW4gYE9iamVjdGAgYW5kIGl0IHdpbGwgYmUgdXNlZCBhcyBhbiBwYXJhbWV0ZXIgZm9yIGBfLm1hdGNoZXNgIHRvIGNyZWF0ZSB0aGUgcHJlZGljYXRlLlxuICAgICAqIFBhc3MgYW4gYEFycmF5YCBvZiBwYXJhbWV0ZXJzIGZvciBgXy5tYXRjaGVzUHJvcGVydHlgIGFuZCB0aGUgcHJlZGljYXRlIHdpbGwgYmUgY3JlYXRlZCB1c2luZyB0aGVtLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW3ByZWRpY2F0ZXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgcHJlZGljYXRlcyB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm92ZXJFdmVyeShbQm9vbGVhbiwgaXNGaW5pdGVdKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoJzEnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBmdW5jKG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBmdW5jKE5hTik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgb3ZlckV2ZXJ5ID0gY3JlYXRlT3ZlcihhcnJheUV2ZXJ5KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiAqKmFueSoqIG9mIHRoZSBgcHJlZGljYXRlc2AgcmV0dXJuXG4gICAgICogdHJ1dGh5IHdoZW4gaW52b2tlZCB3aXRoIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBGb2xsb3dpbmcgc2hvcnRoYW5kcyBhcmUgcG9zc2libGUgZm9yIHByb3ZpZGluZyBwcmVkaWNhdGVzLlxuICAgICAqIFBhc3MgYW4gYE9iamVjdGAgYW5kIGl0IHdpbGwgYmUgdXNlZCBhcyBhbiBwYXJhbWV0ZXIgZm9yIGBfLm1hdGNoZXNgIHRvIGNyZWF0ZSB0aGUgcHJlZGljYXRlLlxuICAgICAqIFBhc3MgYW4gYEFycmF5YCBvZiBwYXJhbWV0ZXJzIGZvciBgXy5tYXRjaGVzUHJvcGVydHlgIGFuZCB0aGUgcHJlZGljYXRlIHdpbGwgYmUgY3JlYXRlZCB1c2luZyB0aGVtLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW3ByZWRpY2F0ZXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgcHJlZGljYXRlcyB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm92ZXJTb21lKFtCb29sZWFuLCBpc0Zpbml0ZV0pO1xuICAgICAqXG4gICAgICogZnVuYygnMScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGZ1bmMobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogZnVuYyhOYU4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiB2YXIgbWF0Y2hlc0Z1bmMgPSBfLm92ZXJTb21lKFt7ICdhJzogMSB9LCB7ICdhJzogMiB9XSlcbiAgICAgKiB2YXIgbWF0Y2hlc1Byb3BlcnR5RnVuYyA9IF8ub3ZlclNvbWUoW1snYScsIDFdLCBbJ2EnLCAyXV0pXG4gICAgICovXG4gICAgdmFyIG92ZXJTb21lID0gY3JlYXRlT3ZlcihhcnJheVNvbWUpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiB7ICdiJzogMiB9IH0sXG4gICAgICogICB7ICdhJzogeyAnYic6IDEgfSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ubWFwKG9iamVjdHMsIF8ucHJvcGVydHkoJ2EuYicpKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKlxuICAgICAqIF8ubWFwKF8uc29ydEJ5KG9iamVjdHMsIF8ucHJvcGVydHkoWydhJywgJ2InXSkpLCAnYS5iJyk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcHJvcGVydHkocGF0aCkge1xuICAgICAgcmV0dXJuIGlzS2V5KHBhdGgpID8gYmFzZVByb3BlcnR5KHRvS2V5KHBhdGgpKSA6IGJhc2VQcm9wZXJ0eURlZXAocGF0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLnByb3BlcnR5YDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJuc1xuICAgICAqIHRoZSB2YWx1ZSBhdCBhIGdpdmVuIHBhdGggb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzAsIDEsIDJdLFxuICAgICAqICAgICBvYmplY3QgPSB7ICdhJzogYXJyYXksICdiJzogYXJyYXksICdjJzogYXJyYXkgfTtcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnYVsyXScsICdjWzBdJ10sIF8ucHJvcGVydHlPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKlxuICAgICAqIF8ubWFwKFtbJ2EnLCAnMiddLCBbJ2MnLCAnMCddXSwgXy5wcm9wZXJ0eU9mKG9iamVjdCkpO1xuICAgICAqIC8vID0+IFsyLCAwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHByb3BlcnR5T2Yob2JqZWN0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgbnVtYmVycyAocG9zaXRpdmUgYW5kL29yIG5lZ2F0aXZlKSBwcm9ncmVzc2luZyBmcm9tXG4gICAgICogYHN0YXJ0YCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLiBBIHN0ZXAgb2YgYC0xYCBpcyB1c2VkIGlmIGEgbmVnYXRpdmVcbiAgICAgKiBgc3RhcnRgIGlzIHNwZWNpZmllZCB3aXRob3V0IGFuIGBlbmRgIG9yIGBzdGVwYC4gSWYgYGVuZGAgaXMgbm90IHNwZWNpZmllZCxcbiAgICAgKiBpdCdzIHNldCB0byBgc3RhcnRgIHdpdGggYHN0YXJ0YCB0aGVuIHNldCB0byBgMGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSmF2YVNjcmlwdCBmb2xsb3dzIHRoZSBJRUVFLTc1NCBzdGFuZGFyZCBmb3IgcmVzb2x2aW5nXG4gICAgICogZmxvYXRpbmctcG9pbnQgdmFsdWVzIHdoaWNoIGNhbiBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGVwPTFdIFRoZSB2YWx1ZSB0byBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgbnVtYmVycy5cbiAgICAgKiBAc2VlIF8uaW5SYW5nZSwgXy5yYW5nZVJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoNCk7XG4gICAgICogLy8gPT4gWzAsIDEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKC00KTtcbiAgICAgKiAvLyA9PiBbMCwgLTEsIC0yLCAtM11cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMSwgNSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIDRdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDAsIDIwLCA1KTtcbiAgICAgKiAvLyA9PiBbMCwgNSwgMTAsIDE1XVxuICAgICAqXG4gICAgICogXy5yYW5nZSgwLCAtNCwgLTEpO1xuICAgICAqIC8vID0+IFswLCAtMSwgLTIsIC0zXVxuICAgICAqXG4gICAgICogXy5yYW5nZSgxLCA0LCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICB2YXIgcmFuZ2UgPSBjcmVhdGVSYW5nZSgpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5yYW5nZWAgZXhjZXB0IHRoYXQgaXQgcG9wdWxhdGVzIHZhbHVlcyBpblxuICAgICAqIGRlc2NlbmRpbmcgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RlcD0xXSBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gICAgICogQHNlZSBfLmluUmFuZ2UsIF8ucmFuZ2VcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KDQpO1xuICAgICAqIC8vID0+IFszLCAyLCAxLCAwXVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KC00KTtcbiAgICAgKiAvLyA9PiBbLTMsIC0yLCAtMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgxLCA1KTtcbiAgICAgKiAvLyA9PiBbNCwgMywgMiwgMV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgwLCAyMCwgNSk7XG4gICAgICogLy8gPT4gWzE1LCAxMCwgNSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgwLCAtNCwgLTEpO1xuICAgICAqIC8vID0+IFstMywgLTIsIC0xLCAwXVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KDEsIDQsIDApO1xuICAgICAqIC8vID0+IFsxLCAxLCAxXVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgdmFyIHJhbmdlUmlnaHQgPSBjcmVhdGVSYW5nZSh0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xMy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5cyA9IF8udGltZXMoMiwgXy5zdHViQXJyYXkpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXlzKTtcbiAgICAgKiAvLyA9PiBbW10sIFtdXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXlzWzBdID09PSBhcnJheXNbMV0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1YkFycmF5KCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICAgICAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGVtcHR5IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBfLnRpbWVzKDIsIF8uc3R1Yk9iamVjdCk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAgICAgKiAvLyA9PiBbe30sIHt9XVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdHViT2JqZWN0KCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8uc3R1YlN0cmluZyk7XG4gICAgICogLy8gPT4gWycnLCAnJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdHViU3RyaW5nKCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYHRydWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8uc3R1YlRydWUpO1xuICAgICAqIC8vID0+IFt0cnVlLCB0cnVlXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJUcnVlKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyB0aGUgaXRlcmF0ZWUgYG5gIHRpbWVzLCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgdGhlIHJlc3VsdHMgb2ZcbiAgICAgKiBlYWNoIGludm9jYXRpb24uIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OyAoaW5kZXgpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIGludm9rZSBgaXRlcmF0ZWVgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygzLCBTdHJpbmcpO1xuICAgICAqIC8vID0+IFsnMCcsICcxJywgJzInXVxuICAgICAqXG4gICAgICogIF8udGltZXMoNCwgXy5jb25zdGFudCgwKSk7XG4gICAgICogLy8gPT4gWzAsIDAsIDAsIDBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICBpZiAobiA8IDEgfHwgbiA+IE1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gTUFYX0FSUkFZX0xFTkdUSCxcbiAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNaW4obiwgTUFYX0FSUkFZX0xFTkdUSCk7XG5cbiAgICAgIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUpO1xuICAgICAgbiAtPSBNQVhfQVJSQVlfTEVOR1RIO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZVRpbWVzKGxlbmd0aCwgaXRlcmF0ZWUpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgICAgIGl0ZXJhdGVlKGluZGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1BhdGgoJ2EuYi5jJyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gICAgICpcbiAgICAgKiBfLnRvUGF0aCgnYVswXS5iLmMnKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnMCcsICdiJywgJ2MnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvUGF0aCh2YWx1ZSkge1xuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgdG9LZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzU3ltYm9sKHZhbHVlKSA/IFt2YWx1ZV0gOiBjb3B5QXJyYXkoc3RyaW5nVG9QYXRoKHRvU3RyaW5nKHZhbHVlKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIHVuaXF1ZSBJRC4gSWYgYHByZWZpeGAgaXMgZ2l2ZW4sIHRoZSBJRCBpcyBhcHBlbmRlZCB0byBpdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtwcmVmaXg9JyddIFRoZSB2YWx1ZSB0byBwcmVmaXggdGhlIElEIHdpdGguXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdW5pcXVlIElELlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaXF1ZUlkKCdjb250YWN0XycpO1xuICAgICAqIC8vID0+ICdjb250YWN0XzEwNCdcbiAgICAgKlxuICAgICAqIF8udW5pcXVlSWQoKTtcbiAgICAgKiAvLyA9PiAnMTA1J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXF1ZUlkKHByZWZpeCkge1xuICAgICAgdmFyIGlkID0gKytpZENvdW50ZXI7XG4gICAgICByZXR1cm4gdG9TdHJpbmcocHJlZml4KSArIGlkO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIEFkZHMgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy40LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhdWdlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhbiBhZGRpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYWRkZW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGFuIGFkZGl0aW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRvdGFsLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmFkZCg2LCA0KTtcbiAgICAgKiAvLyA9PiAxMFxuICAgICAqL1xuICAgIHZhciBhZGQgPSBjcmVhdGVNYXRoT3BlcmF0aW9uKGZ1bmN0aW9uKGF1Z2VuZCwgYWRkZW5kKSB7XG4gICAgICByZXR1cm4gYXVnZW5kICsgYWRkZW5kO1xuICAgIH0sIDApO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYG51bWJlcmAgcm91bmRlZCB1cCB0byBgcHJlY2lzaW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZCB1cC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3ByZWNpc2lvbj0wXSBUaGUgcHJlY2lzaW9uIHRvIHJvdW5kIHVwIHRvLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJvdW5kZWQgdXAgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNlaWwoNC4wMDYpO1xuICAgICAqIC8vID0+IDVcbiAgICAgKlxuICAgICAqIF8uY2VpbCg2LjAwNCwgMik7XG4gICAgICogLy8gPT4gNi4wMVxuICAgICAqXG4gICAgICogXy5jZWlsKDYwNDAsIC0yKTtcbiAgICAgKiAvLyA9PiA2MTAwXG4gICAgICovXG4gICAgdmFyIGNlaWwgPSBjcmVhdGVSb3VuZCgnY2VpbCcpO1xuXG4gICAgLyoqXG4gICAgICogRGl2aWRlIHR3byBudW1iZXJzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGl2aWRlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhIGRpdmlzaW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkaXZpc29yIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgZGl2aXNpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcXVvdGllbnQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGl2aWRlKDYsIDQpO1xuICAgICAqIC8vID0+IDEuNVxuICAgICAqL1xuICAgIHZhciBkaXZpZGUgPSBjcmVhdGVNYXRoT3BlcmF0aW9uKGZ1bmN0aW9uKGRpdmlkZW5kLCBkaXZpc29yKSB7XG4gICAgICByZXR1cm4gZGl2aWRlbmQgLyBkaXZpc29yO1xuICAgIH0sIDEpO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYG51bWJlcmAgcm91bmRlZCBkb3duIHRvIGBwcmVjaXNpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIHJvdW5kIGRvd24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCBkb3duIHRvLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJvdW5kZWQgZG93biBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZmxvb3IoNC4wMDYpO1xuICAgICAqIC8vID0+IDRcbiAgICAgKlxuICAgICAqIF8uZmxvb3IoMC4wNDYsIDIpO1xuICAgICAqIC8vID0+IDAuMDRcbiAgICAgKlxuICAgICAqIF8uZmxvb3IoNDA2MCwgLTIpO1xuICAgICAqIC8vID0+IDQwMDBcbiAgICAgKi9cbiAgICB2YXIgZmxvb3IgPSBjcmVhdGVSb3VuZCgnZmxvb3InKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIHRoZSBtYXhpbXVtIHZhbHVlIG9mIGBhcnJheWAuIElmIGBhcnJheWAgaXMgZW1wdHkgb3IgZmFsc2V5LFxuICAgICAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1heChbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDhcbiAgICAgKlxuICAgICAqIF8ubWF4KFtdKTtcbiAgICAgKiAvLyA9PiB1bmRlZmluZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXgoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VHdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5tYXhgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAgICAgKiB0aGUgdmFsdWUgaXMgcmFua2VkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiAxIH0sIHsgJ24nOiAyIH1dO1xuICAgICAqXG4gICAgICogXy5tYXhCeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IHsgJ24nOiAyIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWF4Qnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiB7ICduJzogMiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF4QnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYmFzZUd0KVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWVhbiBvZiB0aGUgdmFsdWVzIGluIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tZWFuKFs0LCAyLCA4LCA2XSk7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lYW4oYXJyYXkpIHtcbiAgICAgIHJldHVybiBiYXNlTWVhbihhcnJheSwgaWRlbnRpdHkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWVhbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IGluIGBhcnJheWAgdG8gZ2VuZXJhdGUgdGhlIHZhbHVlIHRvIGJlIGF2ZXJhZ2VkLlxuICAgICAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBtZWFuLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogNCB9LCB7ICduJzogMiB9LCB7ICduJzogOCB9LCB7ICduJzogNiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWVhbkJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gICAgICogLy8gPT4gNVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5tZWFuQnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiA1XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVhbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VNZWFuKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIHRoZSBtaW5pbXVtIHZhbHVlIG9mIGBhcnJheWAuIElmIGBhcnJheWAgaXMgZW1wdHkgb3IgZmFsc2V5LFxuICAgICAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1pbihbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIF8ubWluKFtdKTtcbiAgICAgKiAvLyA9PiB1bmRlZmluZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtaW4oYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VMdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5taW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAgICAgKiB0aGUgdmFsdWUgaXMgcmFua2VkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1pbmltdW0gdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiAxIH0sIHsgJ24nOiAyIH1dO1xuICAgICAqXG4gICAgICogXy5taW5CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IHsgJ24nOiAxIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWluQnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiB7ICduJzogMSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWluQnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYmFzZUx0KVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNdWx0aXBseSB0d28gbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG11bHRpcGxpZXIgVGhlIGZpcnN0IG51bWJlciBpbiBhIG11bHRpcGxpY2F0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtdWx0aXBsaWNhbmQgVGhlIHNlY29uZCBudW1iZXIgaW4gYSBtdWx0aXBsaWNhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBwcm9kdWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm11bHRpcGx5KDYsIDQpO1xuICAgICAqIC8vID0+IDI0XG4gICAgICovXG4gICAgdmFyIG11bHRpcGx5ID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihtdWx0aXBsaWVyLCBtdWx0aXBsaWNhbmQpIHtcbiAgICAgIHJldHVybiBtdWx0aXBsaWVyICogbXVsdGlwbGljYW5kO1xuICAgIH0sIDEpO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYG51bWJlcmAgcm91bmRlZCB0byBgcHJlY2lzaW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3ByZWNpc2lvbj0wXSBUaGUgcHJlY2lzaW9uIHRvIHJvdW5kIHRvLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJvdW5kZWQgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJvdW5kKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLnJvdW5kKDQuMDA2LCAyKTtcbiAgICAgKiAvLyA9PiA0LjAxXG4gICAgICpcbiAgICAgKiBfLnJvdW5kKDQwNjAsIC0yKTtcbiAgICAgKiAvLyA9PiA0MTAwXG4gICAgICovXG4gICAgdmFyIHJvdW5kID0gY3JlYXRlUm91bmQoJ3JvdW5kJyk7XG5cbiAgICAvKipcbiAgICAgKiBTdWJ0cmFjdCB0d28gbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG1pbnVlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhIHN1YnRyYWN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdWJ0cmFoZW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgc3VidHJhY3Rpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgZGlmZmVyZW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zdWJ0cmFjdCg2LCA0KTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICovXG4gICAgdmFyIHN1YnRyYWN0ID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihtaW51ZW5kLCBzdWJ0cmFoZW5kKSB7XG4gICAgICByZXR1cm4gbWludWVuZCAtIHN1YnRyYWhlbmQ7XG4gICAgfSwgMCk7XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgc3VtIG9mIHRoZSB2YWx1ZXMgaW4gYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjQuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdW0uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3VtKFs0LCAyLCA4LCA2XSk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdW0oYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTdW0oYXJyYXksIGlkZW50aXR5KVxuICAgICAgICA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zdW1gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSB2YWx1ZSB0byBiZSBzdW1tZWQuXG4gICAgICogVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN1bS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDQgfSwgeyAnbic6IDIgfSwgeyAnbic6IDggfSwgeyAnbic6IDYgfV07XG4gICAgICpcbiAgICAgKiBfLnN1bUJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc3VtQnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiAyMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN1bUJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVN1bShhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IDA7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLy8gQWRkIG1ldGhvZHMgdGhhdCByZXR1cm4gd3JhcHBlZCB2YWx1ZXMgaW4gY2hhaW4gc2VxdWVuY2VzLlxuICAgIGxvZGFzaC5hZnRlciA9IGFmdGVyO1xuICAgIGxvZGFzaC5hcnkgPSBhcnk7XG4gICAgbG9kYXNoLmFzc2lnbiA9IGFzc2lnbjtcbiAgICBsb2Rhc2guYXNzaWduSW4gPSBhc3NpZ25JbjtcbiAgICBsb2Rhc2guYXNzaWduSW5XaXRoID0gYXNzaWduSW5XaXRoO1xuICAgIGxvZGFzaC5hc3NpZ25XaXRoID0gYXNzaWduV2l0aDtcbiAgICBsb2Rhc2guYXQgPSBhdDtcbiAgICBsb2Rhc2guYmVmb3JlID0gYmVmb3JlO1xuICAgIGxvZGFzaC5iaW5kID0gYmluZDtcbiAgICBsb2Rhc2guYmluZEFsbCA9IGJpbmRBbGw7XG4gICAgbG9kYXNoLmJpbmRLZXkgPSBiaW5kS2V5O1xuICAgIGxvZGFzaC5jYXN0QXJyYXkgPSBjYXN0QXJyYXk7XG4gICAgbG9kYXNoLmNoYWluID0gY2hhaW47XG4gICAgbG9kYXNoLmNodW5rID0gY2h1bms7XG4gICAgbG9kYXNoLmNvbXBhY3QgPSBjb21wYWN0O1xuICAgIGxvZGFzaC5jb25jYXQgPSBjb25jYXQ7XG4gICAgbG9kYXNoLmNvbmQgPSBjb25kO1xuICAgIGxvZGFzaC5jb25mb3JtcyA9IGNvbmZvcm1zO1xuICAgIGxvZGFzaC5jb25zdGFudCA9IGNvbnN0YW50O1xuICAgIGxvZGFzaC5jb3VudEJ5ID0gY291bnRCeTtcbiAgICBsb2Rhc2guY3JlYXRlID0gY3JlYXRlO1xuICAgIGxvZGFzaC5jdXJyeSA9IGN1cnJ5O1xuICAgIGxvZGFzaC5jdXJyeVJpZ2h0ID0gY3VycnlSaWdodDtcbiAgICBsb2Rhc2guZGVib3VuY2UgPSBkZWJvdW5jZTtcbiAgICBsb2Rhc2guZGVmYXVsdHMgPSBkZWZhdWx0cztcbiAgICBsb2Rhc2guZGVmYXVsdHNEZWVwID0gZGVmYXVsdHNEZWVwO1xuICAgIGxvZGFzaC5kZWZlciA9IGRlZmVyO1xuICAgIGxvZGFzaC5kZWxheSA9IGRlbGF5O1xuICAgIGxvZGFzaC5kaWZmZXJlbmNlID0gZGlmZmVyZW5jZTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZUJ5ID0gZGlmZmVyZW5jZUJ5O1xuICAgIGxvZGFzaC5kaWZmZXJlbmNlV2l0aCA9IGRpZmZlcmVuY2VXaXRoO1xuICAgIGxvZGFzaC5kcm9wID0gZHJvcDtcbiAgICBsb2Rhc2guZHJvcFJpZ2h0ID0gZHJvcFJpZ2h0O1xuICAgIGxvZGFzaC5kcm9wUmlnaHRXaGlsZSA9IGRyb3BSaWdodFdoaWxlO1xuICAgIGxvZGFzaC5kcm9wV2hpbGUgPSBkcm9wV2hpbGU7XG4gICAgbG9kYXNoLmZpbGwgPSBmaWxsO1xuICAgIGxvZGFzaC5maWx0ZXIgPSBmaWx0ZXI7XG4gICAgbG9kYXNoLmZsYXRNYXAgPSBmbGF0TWFwO1xuICAgIGxvZGFzaC5mbGF0TWFwRGVlcCA9IGZsYXRNYXBEZWVwO1xuICAgIGxvZGFzaC5mbGF0TWFwRGVwdGggPSBmbGF0TWFwRGVwdGg7XG4gICAgbG9kYXNoLmZsYXR0ZW4gPSBmbGF0dGVuO1xuICAgIGxvZGFzaC5mbGF0dGVuRGVlcCA9IGZsYXR0ZW5EZWVwO1xuICAgIGxvZGFzaC5mbGF0dGVuRGVwdGggPSBmbGF0dGVuRGVwdGg7XG4gICAgbG9kYXNoLmZsaXAgPSBmbGlwO1xuICAgIGxvZGFzaC5mbG93ID0gZmxvdztcbiAgICBsb2Rhc2guZmxvd1JpZ2h0ID0gZmxvd1JpZ2h0O1xuICAgIGxvZGFzaC5mcm9tUGFpcnMgPSBmcm9tUGFpcnM7XG4gICAgbG9kYXNoLmZ1bmN0aW9ucyA9IGZ1bmN0aW9ucztcbiAgICBsb2Rhc2guZnVuY3Rpb25zSW4gPSBmdW5jdGlvbnNJbjtcbiAgICBsb2Rhc2guZ3JvdXBCeSA9IGdyb3VwQnk7XG4gICAgbG9kYXNoLmluaXRpYWwgPSBpbml0aWFsO1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb24gPSBpbnRlcnNlY3Rpb247XG4gICAgbG9kYXNoLmludGVyc2VjdGlvbkJ5ID0gaW50ZXJzZWN0aW9uQnk7XG4gICAgbG9kYXNoLmludGVyc2VjdGlvbldpdGggPSBpbnRlcnNlY3Rpb25XaXRoO1xuICAgIGxvZGFzaC5pbnZlcnQgPSBpbnZlcnQ7XG4gICAgbG9kYXNoLmludmVydEJ5ID0gaW52ZXJ0Qnk7XG4gICAgbG9kYXNoLmludm9rZU1hcCA9IGludm9rZU1hcDtcbiAgICBsb2Rhc2guaXRlcmF0ZWUgPSBpdGVyYXRlZTtcbiAgICBsb2Rhc2gua2V5QnkgPSBrZXlCeTtcbiAgICBsb2Rhc2gua2V5cyA9IGtleXM7XG4gICAgbG9kYXNoLmtleXNJbiA9IGtleXNJbjtcbiAgICBsb2Rhc2gubWFwID0gbWFwO1xuICAgIGxvZGFzaC5tYXBLZXlzID0gbWFwS2V5cztcbiAgICBsb2Rhc2gubWFwVmFsdWVzID0gbWFwVmFsdWVzO1xuICAgIGxvZGFzaC5tYXRjaGVzID0gbWF0Y2hlcztcbiAgICBsb2Rhc2gubWF0Y2hlc1Byb3BlcnR5ID0gbWF0Y2hlc1Byb3BlcnR5O1xuICAgIGxvZGFzaC5tZW1vaXplID0gbWVtb2l6ZTtcbiAgICBsb2Rhc2gubWVyZ2UgPSBtZXJnZTtcbiAgICBsb2Rhc2gubWVyZ2VXaXRoID0gbWVyZ2VXaXRoO1xuICAgIGxvZGFzaC5tZXRob2QgPSBtZXRob2Q7XG4gICAgbG9kYXNoLm1ldGhvZE9mID0gbWV0aG9kT2Y7XG4gICAgbG9kYXNoLm1peGluID0gbWl4aW47XG4gICAgbG9kYXNoLm5lZ2F0ZSA9IG5lZ2F0ZTtcbiAgICBsb2Rhc2gubnRoQXJnID0gbnRoQXJnO1xuICAgIGxvZGFzaC5vbWl0ID0gb21pdDtcbiAgICBsb2Rhc2gub21pdEJ5ID0gb21pdEJ5O1xuICAgIGxvZGFzaC5vbmNlID0gb25jZTtcbiAgICBsb2Rhc2gub3JkZXJCeSA9IG9yZGVyQnk7XG4gICAgbG9kYXNoLm92ZXIgPSBvdmVyO1xuICAgIGxvZGFzaC5vdmVyQXJncyA9IG92ZXJBcmdzO1xuICAgIGxvZGFzaC5vdmVyRXZlcnkgPSBvdmVyRXZlcnk7XG4gICAgbG9kYXNoLm92ZXJTb21lID0gb3ZlclNvbWU7XG4gICAgbG9kYXNoLnBhcnRpYWwgPSBwYXJ0aWFsO1xuICAgIGxvZGFzaC5wYXJ0aWFsUmlnaHQgPSBwYXJ0aWFsUmlnaHQ7XG4gICAgbG9kYXNoLnBhcnRpdGlvbiA9IHBhcnRpdGlvbjtcbiAgICBsb2Rhc2gucGljayA9IHBpY2s7XG4gICAgbG9kYXNoLnBpY2tCeSA9IHBpY2tCeTtcbiAgICBsb2Rhc2gucHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICBsb2Rhc2gucHJvcGVydHlPZiA9IHByb3BlcnR5T2Y7XG4gICAgbG9kYXNoLnB1bGwgPSBwdWxsO1xuICAgIGxvZGFzaC5wdWxsQWxsID0gcHVsbEFsbDtcbiAgICBsb2Rhc2gucHVsbEFsbEJ5ID0gcHVsbEFsbEJ5O1xuICAgIGxvZGFzaC5wdWxsQWxsV2l0aCA9IHB1bGxBbGxXaXRoO1xuICAgIGxvZGFzaC5wdWxsQXQgPSBwdWxsQXQ7XG4gICAgbG9kYXNoLnJhbmdlID0gcmFuZ2U7XG4gICAgbG9kYXNoLnJhbmdlUmlnaHQgPSByYW5nZVJpZ2h0O1xuICAgIGxvZGFzaC5yZWFyZyA9IHJlYXJnO1xuICAgIGxvZGFzaC5yZWplY3QgPSByZWplY3Q7XG4gICAgbG9kYXNoLnJlbW92ZSA9IHJlbW92ZTtcbiAgICBsb2Rhc2gucmVzdCA9IHJlc3Q7XG4gICAgbG9kYXNoLnJldmVyc2UgPSByZXZlcnNlO1xuICAgIGxvZGFzaC5zYW1wbGVTaXplID0gc2FtcGxlU2l6ZTtcbiAgICBsb2Rhc2guc2V0ID0gc2V0O1xuICAgIGxvZGFzaC5zZXRXaXRoID0gc2V0V2l0aDtcbiAgICBsb2Rhc2guc2h1ZmZsZSA9IHNodWZmbGU7XG4gICAgbG9kYXNoLnNsaWNlID0gc2xpY2U7XG4gICAgbG9kYXNoLnNvcnRCeSA9IHNvcnRCeTtcbiAgICBsb2Rhc2guc29ydGVkVW5pcSA9IHNvcnRlZFVuaXE7XG4gICAgbG9kYXNoLnNvcnRlZFVuaXFCeSA9IHNvcnRlZFVuaXFCeTtcbiAgICBsb2Rhc2guc3BsaXQgPSBzcGxpdDtcbiAgICBsb2Rhc2guc3ByZWFkID0gc3ByZWFkO1xuICAgIGxvZGFzaC50YWlsID0gdGFpbDtcbiAgICBsb2Rhc2gudGFrZSA9IHRha2U7XG4gICAgbG9kYXNoLnRha2VSaWdodCA9IHRha2VSaWdodDtcbiAgICBsb2Rhc2gudGFrZVJpZ2h0V2hpbGUgPSB0YWtlUmlnaHRXaGlsZTtcbiAgICBsb2Rhc2gudGFrZVdoaWxlID0gdGFrZVdoaWxlO1xuICAgIGxvZGFzaC50YXAgPSB0YXA7XG4gICAgbG9kYXNoLnRocm90dGxlID0gdGhyb3R0bGU7XG4gICAgbG9kYXNoLnRocnUgPSB0aHJ1O1xuICAgIGxvZGFzaC50b0FycmF5ID0gdG9BcnJheTtcbiAgICBsb2Rhc2gudG9QYWlycyA9IHRvUGFpcnM7XG4gICAgbG9kYXNoLnRvUGFpcnNJbiA9IHRvUGFpcnNJbjtcbiAgICBsb2Rhc2gudG9QYXRoID0gdG9QYXRoO1xuICAgIGxvZGFzaC50b1BsYWluT2JqZWN0ID0gdG9QbGFpbk9iamVjdDtcbiAgICBsb2Rhc2gudHJhbnNmb3JtID0gdHJhbnNmb3JtO1xuICAgIGxvZGFzaC51bmFyeSA9IHVuYXJ5O1xuICAgIGxvZGFzaC51bmlvbiA9IHVuaW9uO1xuICAgIGxvZGFzaC51bmlvbkJ5ID0gdW5pb25CeTtcbiAgICBsb2Rhc2gudW5pb25XaXRoID0gdW5pb25XaXRoO1xuICAgIGxvZGFzaC51bmlxID0gdW5pcTtcbiAgICBsb2Rhc2gudW5pcUJ5ID0gdW5pcUJ5O1xuICAgIGxvZGFzaC51bmlxV2l0aCA9IHVuaXFXaXRoO1xuICAgIGxvZGFzaC51bnNldCA9IHVuc2V0O1xuICAgIGxvZGFzaC51bnppcCA9IHVuemlwO1xuICAgIGxvZGFzaC51bnppcFdpdGggPSB1bnppcFdpdGg7XG4gICAgbG9kYXNoLnVwZGF0ZSA9IHVwZGF0ZTtcbiAgICBsb2Rhc2gudXBkYXRlV2l0aCA9IHVwZGF0ZVdpdGg7XG4gICAgbG9kYXNoLnZhbHVlcyA9IHZhbHVlcztcbiAgICBsb2Rhc2gudmFsdWVzSW4gPSB2YWx1ZXNJbjtcbiAgICBsb2Rhc2gud2l0aG91dCA9IHdpdGhvdXQ7XG4gICAgbG9kYXNoLndvcmRzID0gd29yZHM7XG4gICAgbG9kYXNoLndyYXAgPSB3cmFwO1xuICAgIGxvZGFzaC54b3IgPSB4b3I7XG4gICAgbG9kYXNoLnhvckJ5ID0geG9yQnk7XG4gICAgbG9kYXNoLnhvcldpdGggPSB4b3JXaXRoO1xuICAgIGxvZGFzaC56aXAgPSB6aXA7XG4gICAgbG9kYXNoLnppcE9iamVjdCA9IHppcE9iamVjdDtcbiAgICBsb2Rhc2guemlwT2JqZWN0RGVlcCA9IHppcE9iamVjdERlZXA7XG4gICAgbG9kYXNoLnppcFdpdGggPSB6aXBXaXRoO1xuXG4gICAgLy8gQWRkIGFsaWFzZXMuXG4gICAgbG9kYXNoLmVudHJpZXMgPSB0b1BhaXJzO1xuICAgIGxvZGFzaC5lbnRyaWVzSW4gPSB0b1BhaXJzSW47XG4gICAgbG9kYXNoLmV4dGVuZCA9IGFzc2lnbkluO1xuICAgIGxvZGFzaC5leHRlbmRXaXRoID0gYXNzaWduSW5XaXRoO1xuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYGxvZGFzaC5wcm90b3R5cGVgLlxuICAgIG1peGluKGxvZGFzaCwgbG9kYXNoKTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8vIEFkZCBtZXRob2RzIHRoYXQgcmV0dXJuIHVud3JhcHBlZCB2YWx1ZXMgaW4gY2hhaW4gc2VxdWVuY2VzLlxuICAgIGxvZGFzaC5hZGQgPSBhZGQ7XG4gICAgbG9kYXNoLmF0dGVtcHQgPSBhdHRlbXB0O1xuICAgIGxvZGFzaC5jYW1lbENhc2UgPSBjYW1lbENhc2U7XG4gICAgbG9kYXNoLmNhcGl0YWxpemUgPSBjYXBpdGFsaXplO1xuICAgIGxvZGFzaC5jZWlsID0gY2VpbDtcbiAgICBsb2Rhc2guY2xhbXAgPSBjbGFtcDtcbiAgICBsb2Rhc2guY2xvbmUgPSBjbG9uZTtcbiAgICBsb2Rhc2guY2xvbmVEZWVwID0gY2xvbmVEZWVwO1xuICAgIGxvZGFzaC5jbG9uZURlZXBXaXRoID0gY2xvbmVEZWVwV2l0aDtcbiAgICBsb2Rhc2guY2xvbmVXaXRoID0gY2xvbmVXaXRoO1xuICAgIGxvZGFzaC5jb25mb3Jtc1RvID0gY29uZm9ybXNUbztcbiAgICBsb2Rhc2guZGVidXJyID0gZGVidXJyO1xuICAgIGxvZGFzaC5kZWZhdWx0VG8gPSBkZWZhdWx0VG87XG4gICAgbG9kYXNoLmRpdmlkZSA9IGRpdmlkZTtcbiAgICBsb2Rhc2guZW5kc1dpdGggPSBlbmRzV2l0aDtcbiAgICBsb2Rhc2guZXEgPSBlcTtcbiAgICBsb2Rhc2guZXNjYXBlID0gZXNjYXBlO1xuICAgIGxvZGFzaC5lc2NhcGVSZWdFeHAgPSBlc2NhcGVSZWdFeHA7XG4gICAgbG9kYXNoLmV2ZXJ5ID0gZXZlcnk7XG4gICAgbG9kYXNoLmZpbmQgPSBmaW5kO1xuICAgIGxvZGFzaC5maW5kSW5kZXggPSBmaW5kSW5kZXg7XG4gICAgbG9kYXNoLmZpbmRLZXkgPSBmaW5kS2V5O1xuICAgIGxvZGFzaC5maW5kTGFzdCA9IGZpbmRMYXN0O1xuICAgIGxvZGFzaC5maW5kTGFzdEluZGV4ID0gZmluZExhc3RJbmRleDtcbiAgICBsb2Rhc2guZmluZExhc3RLZXkgPSBmaW5kTGFzdEtleTtcbiAgICBsb2Rhc2guZmxvb3IgPSBmbG9vcjtcbiAgICBsb2Rhc2guZm9yRWFjaCA9IGZvckVhY2g7XG4gICAgbG9kYXNoLmZvckVhY2hSaWdodCA9IGZvckVhY2hSaWdodDtcbiAgICBsb2Rhc2guZm9ySW4gPSBmb3JJbjtcbiAgICBsb2Rhc2guZm9ySW5SaWdodCA9IGZvckluUmlnaHQ7XG4gICAgbG9kYXNoLmZvck93biA9IGZvck93bjtcbiAgICBsb2Rhc2guZm9yT3duUmlnaHQgPSBmb3JPd25SaWdodDtcbiAgICBsb2Rhc2guZ2V0ID0gZ2V0O1xuICAgIGxvZGFzaC5ndCA9IGd0O1xuICAgIGxvZGFzaC5ndGUgPSBndGU7XG4gICAgbG9kYXNoLmhhcyA9IGhhcztcbiAgICBsb2Rhc2guaGFzSW4gPSBoYXNJbjtcbiAgICBsb2Rhc2guaGVhZCA9IGhlYWQ7XG4gICAgbG9kYXNoLmlkZW50aXR5ID0gaWRlbnRpdHk7XG4gICAgbG9kYXNoLmluY2x1ZGVzID0gaW5jbHVkZXM7XG4gICAgbG9kYXNoLmluZGV4T2YgPSBpbmRleE9mO1xuICAgIGxvZGFzaC5pblJhbmdlID0gaW5SYW5nZTtcbiAgICBsb2Rhc2guaW52b2tlID0gaW52b2tlO1xuICAgIGxvZGFzaC5pc0FyZ3VtZW50cyA9IGlzQXJndW1lbnRzO1xuICAgIGxvZGFzaC5pc0FycmF5ID0gaXNBcnJheTtcbiAgICBsb2Rhc2guaXNBcnJheUJ1ZmZlciA9IGlzQXJyYXlCdWZmZXI7XG4gICAgbG9kYXNoLmlzQXJyYXlMaWtlID0gaXNBcnJheUxpa2U7XG4gICAgbG9kYXNoLmlzQXJyYXlMaWtlT2JqZWN0ID0gaXNBcnJheUxpa2VPYmplY3Q7XG4gICAgbG9kYXNoLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjtcbiAgICBsb2Rhc2guaXNCdWZmZXIgPSBpc0J1ZmZlcjtcbiAgICBsb2Rhc2guaXNEYXRlID0gaXNEYXRlO1xuICAgIGxvZGFzaC5pc0VsZW1lbnQgPSBpc0VsZW1lbnQ7XG4gICAgbG9kYXNoLmlzRW1wdHkgPSBpc0VtcHR5O1xuICAgIGxvZGFzaC5pc0VxdWFsID0gaXNFcXVhbDtcbiAgICBsb2Rhc2guaXNFcXVhbFdpdGggPSBpc0VxdWFsV2l0aDtcbiAgICBsb2Rhc2guaXNFcnJvciA9IGlzRXJyb3I7XG4gICAgbG9kYXNoLmlzRmluaXRlID0gaXNGaW5pdGU7XG4gICAgbG9kYXNoLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xuICAgIGxvZGFzaC5pc0ludGVnZXIgPSBpc0ludGVnZXI7XG4gICAgbG9kYXNoLmlzTGVuZ3RoID0gaXNMZW5ndGg7XG4gICAgbG9kYXNoLmlzTWFwID0gaXNNYXA7XG4gICAgbG9kYXNoLmlzTWF0Y2ggPSBpc01hdGNoO1xuICAgIGxvZGFzaC5pc01hdGNoV2l0aCA9IGlzTWF0Y2hXaXRoO1xuICAgIGxvZGFzaC5pc05hTiA9IGlzTmFOO1xuICAgIGxvZGFzaC5pc05hdGl2ZSA9IGlzTmF0aXZlO1xuICAgIGxvZGFzaC5pc05pbCA9IGlzTmlsO1xuICAgIGxvZGFzaC5pc051bGwgPSBpc051bGw7XG4gICAgbG9kYXNoLmlzTnVtYmVyID0gaXNOdW1iZXI7XG4gICAgbG9kYXNoLmlzT2JqZWN0ID0gaXNPYmplY3Q7XG4gICAgbG9kYXNoLmlzT2JqZWN0TGlrZSA9IGlzT2JqZWN0TGlrZTtcbiAgICBsb2Rhc2guaXNQbGFpbk9iamVjdCA9IGlzUGxhaW5PYmplY3Q7XG4gICAgbG9kYXNoLmlzUmVnRXhwID0gaXNSZWdFeHA7XG4gICAgbG9kYXNoLmlzU2FmZUludGVnZXIgPSBpc1NhZmVJbnRlZ2VyO1xuICAgIGxvZGFzaC5pc1NldCA9IGlzU2V0O1xuICAgIGxvZGFzaC5pc1N0cmluZyA9IGlzU3RyaW5nO1xuICAgIGxvZGFzaC5pc1N5bWJvbCA9IGlzU3ltYm9sO1xuICAgIGxvZGFzaC5pc1R5cGVkQXJyYXkgPSBpc1R5cGVkQXJyYXk7XG4gICAgbG9kYXNoLmlzVW5kZWZpbmVkID0gaXNVbmRlZmluZWQ7XG4gICAgbG9kYXNoLmlzV2Vha01hcCA9IGlzV2Vha01hcDtcbiAgICBsb2Rhc2guaXNXZWFrU2V0ID0gaXNXZWFrU2V0O1xuICAgIGxvZGFzaC5qb2luID0gam9pbjtcbiAgICBsb2Rhc2gua2ViYWJDYXNlID0ga2ViYWJDYXNlO1xuICAgIGxvZGFzaC5sYXN0ID0gbGFzdDtcbiAgICBsb2Rhc2gubGFzdEluZGV4T2YgPSBsYXN0SW5kZXhPZjtcbiAgICBsb2Rhc2gubG93ZXJDYXNlID0gbG93ZXJDYXNlO1xuICAgIGxvZGFzaC5sb3dlckZpcnN0ID0gbG93ZXJGaXJzdDtcbiAgICBsb2Rhc2gubHQgPSBsdDtcbiAgICBsb2Rhc2gubHRlID0gbHRlO1xuICAgIGxvZGFzaC5tYXggPSBtYXg7XG4gICAgbG9kYXNoLm1heEJ5ID0gbWF4Qnk7XG4gICAgbG9kYXNoLm1lYW4gPSBtZWFuO1xuICAgIGxvZGFzaC5tZWFuQnkgPSBtZWFuQnk7XG4gICAgbG9kYXNoLm1pbiA9IG1pbjtcbiAgICBsb2Rhc2gubWluQnkgPSBtaW5CeTtcbiAgICBsb2Rhc2guc3R1YkFycmF5ID0gc3R1YkFycmF5O1xuICAgIGxvZGFzaC5zdHViRmFsc2UgPSBzdHViRmFsc2U7XG4gICAgbG9kYXNoLnN0dWJPYmplY3QgPSBzdHViT2JqZWN0O1xuICAgIGxvZGFzaC5zdHViU3RyaW5nID0gc3R1YlN0cmluZztcbiAgICBsb2Rhc2guc3R1YlRydWUgPSBzdHViVHJ1ZTtcbiAgICBsb2Rhc2gubXVsdGlwbHkgPSBtdWx0aXBseTtcbiAgICBsb2Rhc2gubnRoID0gbnRoO1xuICAgIGxvZGFzaC5ub0NvbmZsaWN0ID0gbm9Db25mbGljdDtcbiAgICBsb2Rhc2gubm9vcCA9IG5vb3A7XG4gICAgbG9kYXNoLm5vdyA9IG5vdztcbiAgICBsb2Rhc2gucGFkID0gcGFkO1xuICAgIGxvZGFzaC5wYWRFbmQgPSBwYWRFbmQ7XG4gICAgbG9kYXNoLnBhZFN0YXJ0ID0gcGFkU3RhcnQ7XG4gICAgbG9kYXNoLnBhcnNlSW50ID0gcGFyc2VJbnQ7XG4gICAgbG9kYXNoLnJhbmRvbSA9IHJhbmRvbTtcbiAgICBsb2Rhc2gucmVkdWNlID0gcmVkdWNlO1xuICAgIGxvZGFzaC5yZWR1Y2VSaWdodCA9IHJlZHVjZVJpZ2h0O1xuICAgIGxvZGFzaC5yZXBlYXQgPSByZXBlYXQ7XG4gICAgbG9kYXNoLnJlcGxhY2UgPSByZXBsYWNlO1xuICAgIGxvZGFzaC5yZXN1bHQgPSByZXN1bHQ7XG4gICAgbG9kYXNoLnJvdW5kID0gcm91bmQ7XG4gICAgbG9kYXNoLnJ1bkluQ29udGV4dCA9IHJ1bkluQ29udGV4dDtcbiAgICBsb2Rhc2guc2FtcGxlID0gc2FtcGxlO1xuICAgIGxvZGFzaC5zaXplID0gc2l6ZTtcbiAgICBsb2Rhc2guc25ha2VDYXNlID0gc25ha2VDYXNlO1xuICAgIGxvZGFzaC5zb21lID0gc29tZTtcbiAgICBsb2Rhc2guc29ydGVkSW5kZXggPSBzb3J0ZWRJbmRleDtcbiAgICBsb2Rhc2guc29ydGVkSW5kZXhCeSA9IHNvcnRlZEluZGV4Qnk7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4T2YgPSBzb3J0ZWRJbmRleE9mO1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXggPSBzb3J0ZWRMYXN0SW5kZXg7XG4gICAgbG9kYXNoLnNvcnRlZExhc3RJbmRleEJ5ID0gc29ydGVkTGFzdEluZGV4Qnk7XG4gICAgbG9kYXNoLnNvcnRlZExhc3RJbmRleE9mID0gc29ydGVkTGFzdEluZGV4T2Y7XG4gICAgbG9kYXNoLnN0YXJ0Q2FzZSA9IHN0YXJ0Q2FzZTtcbiAgICBsb2Rhc2guc3RhcnRzV2l0aCA9IHN0YXJ0c1dpdGg7XG4gICAgbG9kYXNoLnN1YnRyYWN0ID0gc3VidHJhY3Q7XG4gICAgbG9kYXNoLnN1bSA9IHN1bTtcbiAgICBsb2Rhc2guc3VtQnkgPSBzdW1CeTtcbiAgICBsb2Rhc2gudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICBsb2Rhc2gudGltZXMgPSB0aW1lcztcbiAgICBsb2Rhc2gudG9GaW5pdGUgPSB0b0Zpbml0ZTtcbiAgICBsb2Rhc2gudG9JbnRlZ2VyID0gdG9JbnRlZ2VyO1xuICAgIGxvZGFzaC50b0xlbmd0aCA9IHRvTGVuZ3RoO1xuICAgIGxvZGFzaC50b0xvd2VyID0gdG9Mb3dlcjtcbiAgICBsb2Rhc2gudG9OdW1iZXIgPSB0b051bWJlcjtcbiAgICBsb2Rhc2gudG9TYWZlSW50ZWdlciA9IHRvU2FmZUludGVnZXI7XG4gICAgbG9kYXNoLnRvU3RyaW5nID0gdG9TdHJpbmc7XG4gICAgbG9kYXNoLnRvVXBwZXIgPSB0b1VwcGVyO1xuICAgIGxvZGFzaC50cmltID0gdHJpbTtcbiAgICBsb2Rhc2gudHJpbUVuZCA9IHRyaW1FbmQ7XG4gICAgbG9kYXNoLnRyaW1TdGFydCA9IHRyaW1TdGFydDtcbiAgICBsb2Rhc2gudHJ1bmNhdGUgPSB0cnVuY2F0ZTtcbiAgICBsb2Rhc2gudW5lc2NhcGUgPSB1bmVzY2FwZTtcbiAgICBsb2Rhc2gudW5pcXVlSWQgPSB1bmlxdWVJZDtcbiAgICBsb2Rhc2gudXBwZXJDYXNlID0gdXBwZXJDYXNlO1xuICAgIGxvZGFzaC51cHBlckZpcnN0ID0gdXBwZXJGaXJzdDtcblxuICAgIC8vIEFkZCBhbGlhc2VzLlxuICAgIGxvZGFzaC5lYWNoID0gZm9yRWFjaDtcbiAgICBsb2Rhc2guZWFjaFJpZ2h0ID0gZm9yRWFjaFJpZ2h0O1xuICAgIGxvZGFzaC5maXJzdCA9IGhlYWQ7XG5cbiAgICBtaXhpbihsb2Rhc2gsIChmdW5jdGlvbigpIHtcbiAgICAgIHZhciBzb3VyY2UgPSB7fTtcbiAgICAgIGJhc2VGb3JPd24obG9kYXNoLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbChsb2Rhc2gucHJvdG90eXBlLCBtZXRob2ROYW1lKSkge1xuICAgICAgICAgIHNvdXJjZVttZXRob2ROYW1lXSA9IGZ1bmM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9KCkpLCB7ICdjaGFpbic6IGZhbHNlIH0pO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNlbWFudGljIHZlcnNpb24gbnVtYmVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICBsb2Rhc2guVkVSU0lPTiA9IFZFUlNJT047XG5cbiAgICAvLyBBc3NpZ24gZGVmYXVsdCBwbGFjZWhvbGRlcnMuXG4gICAgYXJyYXlFYWNoKFsnYmluZCcsICdiaW5kS2V5JywgJ2N1cnJ5JywgJ2N1cnJ5UmlnaHQnLCAncGFydGlhbCcsICdwYXJ0aWFsUmlnaHQnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSkge1xuICAgICAgbG9kYXNoW21ldGhvZE5hbWVdLnBsYWNlaG9sZGVyID0gbG9kYXNoO1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uZHJvcGAgYW5kIGBfLnRha2VgIHZhcmlhbnRzLlxuICAgIGFycmF5RWFjaChbJ2Ryb3AnLCAndGFrZSddLCBmdW5jdGlvbihtZXRob2ROYW1lLCBpbmRleCkge1xuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24obikge1xuICAgICAgICBuID0gbiA9PT0gdW5kZWZpbmVkID8gMSA6IG5hdGl2ZU1heCh0b0ludGVnZXIobiksIDApO1xuXG4gICAgICAgIHZhciByZXN1bHQgPSAodGhpcy5fX2ZpbHRlcmVkX18gJiYgIWluZGV4KVxuICAgICAgICAgID8gbmV3IExhenlXcmFwcGVyKHRoaXMpXG4gICAgICAgICAgOiB0aGlzLmNsb25lKCk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5fX2ZpbHRlcmVkX18pIHtcbiAgICAgICAgICByZXN1bHQuX190YWtlQ291bnRfXyA9IG5hdGl2ZU1pbihuLCByZXN1bHQuX190YWtlQ291bnRfXyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0Ll9fdmlld3NfXy5wdXNoKHtcbiAgICAgICAgICAgICdzaXplJzogbmF0aXZlTWluKG4sIE1BWF9BUlJBWV9MRU5HVEgpLFxuICAgICAgICAgICAgJ3R5cGUnOiBtZXRob2ROYW1lICsgKHJlc3VsdC5fX2Rpcl9fIDwgMCA/ICdSaWdodCcgOiAnJylcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWUgKyAnUmlnaHQnXSA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZSgpW21ldGhvZE5hbWVdKG4pLnJldmVyc2UoKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYExhenlXcmFwcGVyYCBtZXRob2RzIHRoYXQgYWNjZXB0IGFuIGBpdGVyYXRlZWAgdmFsdWUuXG4gICAgYXJyYXlFYWNoKFsnZmlsdGVyJywgJ21hcCcsICd0YWtlV2hpbGUnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIHZhciB0eXBlID0gaW5kZXggKyAxLFxuICAgICAgICAgIGlzRmlsdGVyID0gdHlwZSA9PSBMQVpZX0ZJTFRFUl9GTEFHIHx8IHR5cGUgPT0gTEFaWV9XSElMRV9GTEFHO1xuXG4gICAgICBMYXp5V3JhcHBlci5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5jbG9uZSgpO1xuICAgICAgICByZXN1bHQuX19pdGVyYXRlZXNfXy5wdXNoKHtcbiAgICAgICAgICAnaXRlcmF0ZWUnOiBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyksXG4gICAgICAgICAgJ3R5cGUnOiB0eXBlXG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHQuX19maWx0ZXJlZF9fID0gcmVzdWx0Ll9fZmlsdGVyZWRfXyB8fCBpc0ZpbHRlcjtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYExhenlXcmFwcGVyYCBtZXRob2RzIGZvciBgXy5oZWFkYCBhbmQgYF8ubGFzdGAuXG4gICAgYXJyYXlFYWNoKFsnaGVhZCcsICdsYXN0J10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUsIGluZGV4KSB7XG4gICAgICB2YXIgdGFrZU5hbWUgPSAndGFrZScgKyAoaW5kZXggPyAnUmlnaHQnIDogJycpO1xuXG4gICAgICBMYXp5V3JhcHBlci5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbdGFrZU5hbWVdKDEpLnZhbHVlKClbMF07XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uaW5pdGlhbGAgYW5kIGBfLnRhaWxgLlxuICAgIGFycmF5RWFjaChbJ2luaXRpYWwnLCAndGFpbCddLCBmdW5jdGlvbihtZXRob2ROYW1lLCBpbmRleCkge1xuICAgICAgdmFyIGRyb3BOYW1lID0gJ2Ryb3AnICsgKGluZGV4ID8gJycgOiAnUmlnaHQnKTtcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9fZmlsdGVyZWRfXyA/IG5ldyBMYXp5V3JhcHBlcih0aGlzKSA6IHRoaXNbZHJvcE5hbWVdKDEpO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5jb21wYWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXIoaWRlbnRpdHkpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKHByZWRpY2F0ZSkuaGVhZCgpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuZmluZExhc3QgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJldmVyc2UoKS5maW5kKHByZWRpY2F0ZSk7XG4gICAgfTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5pbnZva2VNYXAgPSBiYXNlUmVzdChmdW5jdGlvbihwYXRoLCBhcmdzKSB7XG4gICAgICBpZiAodHlwZW9mIHBhdGggPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52b2tlKHZhbHVlLCBwYXRoLCBhcmdzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnJlamVjdCA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUpKSk7XG4gICAgfTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgICAgIHN0YXJ0ID0gdG9JbnRlZ2VyKHN0YXJ0KTtcblxuICAgICAgdmFyIHJlc3VsdCA9IHRoaXM7XG4gICAgICBpZiAocmVzdWx0Ll9fZmlsdGVyZWRfXyAmJiAoc3RhcnQgPiAwIHx8IGVuZCA8IDApKSB7XG4gICAgICAgIHJldHVybiBuZXcgTGF6eVdyYXBwZXIocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnRha2VSaWdodCgtc3RhcnQpO1xuICAgICAgfSBlbHNlIGlmIChzdGFydCkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQuZHJvcChzdGFydCk7XG4gICAgICB9XG4gICAgICBpZiAoZW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZW5kID0gdG9JbnRlZ2VyKGVuZCk7XG4gICAgICAgIHJlc3VsdCA9IGVuZCA8IDAgPyByZXN1bHQuZHJvcFJpZ2h0KC1lbmQpIDogcmVzdWx0LnRha2UoZW5kIC0gc3RhcnQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnRha2VSaWdodFdoaWxlID0gZnVuY3Rpb24ocHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXZlcnNlKCkudGFrZVdoaWxlKHByZWRpY2F0ZSkucmV2ZXJzZSgpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMudGFrZShNQVhfQVJSQVlfTEVOR1RIKTtcbiAgICB9O1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyB0byBgbG9kYXNoLnByb3RvdHlwZWAuXG4gICAgYmFzZUZvck93bihMYXp5V3JhcHBlci5wcm90b3R5cGUsIGZ1bmN0aW9uKGZ1bmMsIG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBjaGVja0l0ZXJhdGVlID0gL14oPzpmaWx0ZXJ8ZmluZHxtYXB8cmVqZWN0KXxXaGlsZSQvLnRlc3QobWV0aG9kTmFtZSksXG4gICAgICAgICAgaXNUYWtlciA9IC9eKD86aGVhZHxsYXN0KSQvLnRlc3QobWV0aG9kTmFtZSksXG4gICAgICAgICAgbG9kYXNoRnVuYyA9IGxvZGFzaFtpc1Rha2VyID8gKCd0YWtlJyArIChtZXRob2ROYW1lID09ICdsYXN0JyA/ICdSaWdodCcgOiAnJykpIDogbWV0aG9kTmFtZV0sXG4gICAgICAgICAgcmV0VW53cmFwcGVkID0gaXNUYWtlciB8fCAvXmZpbmQvLnRlc3QobWV0aG9kTmFtZSk7XG5cbiAgICAgIGlmICghbG9kYXNoRnVuYykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsb2Rhc2gucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX193cmFwcGVkX18sXG4gICAgICAgICAgICBhcmdzID0gaXNUYWtlciA/IFsxXSA6IGFyZ3VtZW50cyxcbiAgICAgICAgICAgIGlzTGF6eSA9IHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIsXG4gICAgICAgICAgICBpdGVyYXRlZSA9IGFyZ3NbMF0sXG4gICAgICAgICAgICB1c2VMYXp5ID0gaXNMYXp5IHx8IGlzQXJyYXkodmFsdWUpO1xuXG4gICAgICAgIHZhciBpbnRlcmNlcHRvciA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IGxvZGFzaEZ1bmMuYXBwbHkobG9kYXNoLCBhcnJheVB1c2goW3ZhbHVlXSwgYXJncykpO1xuICAgICAgICAgIHJldHVybiAoaXNUYWtlciAmJiBjaGFpbkFsbCkgPyByZXN1bHRbMF0gOiByZXN1bHQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHVzZUxhenkgJiYgY2hlY2tJdGVyYXRlZSAmJiB0eXBlb2YgaXRlcmF0ZWUgPT0gJ2Z1bmN0aW9uJyAmJiBpdGVyYXRlZS5sZW5ndGggIT0gMSkge1xuICAgICAgICAgIC8vIEF2b2lkIGxhenkgdXNlIGlmIHRoZSBpdGVyYXRlZSBoYXMgYSBcImxlbmd0aFwiIHZhbHVlIG90aGVyIHRoYW4gYDFgLlxuICAgICAgICAgIGlzTGF6eSA9IHVzZUxhenkgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY2hhaW5BbGwgPSB0aGlzLl9fY2hhaW5fXyxcbiAgICAgICAgICAgIGlzSHlicmlkID0gISF0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCxcbiAgICAgICAgICAgIGlzVW53cmFwcGVkID0gcmV0VW53cmFwcGVkICYmICFjaGFpbkFsbCxcbiAgICAgICAgICAgIG9ubHlMYXp5ID0gaXNMYXp5ICYmICFpc0h5YnJpZDtcblxuICAgICAgICBpZiAoIXJldFVud3JhcHBlZCAmJiB1c2VMYXp5KSB7XG4gICAgICAgICAgdmFsdWUgPSBvbmx5TGF6eSA/IHZhbHVlIDogbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHZhbHVlLCBhcmdzKTtcbiAgICAgICAgICByZXN1bHQuX19hY3Rpb25zX18ucHVzaCh7ICdmdW5jJzogdGhydSwgJ2FyZ3MnOiBbaW50ZXJjZXB0b3JdLCAndGhpc0FyZyc6IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIocmVzdWx0LCBjaGFpbkFsbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVW53cmFwcGVkICYmIG9ubHlMYXp5KSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gdGhpcy50aHJ1KGludGVyY2VwdG9yKTtcbiAgICAgICAgcmV0dXJuIGlzVW53cmFwcGVkID8gKGlzVGFrZXIgPyByZXN1bHQudmFsdWUoKVswXSA6IHJlc3VsdC52YWx1ZSgpKSA6IHJlc3VsdDtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYEFycmF5YCBtZXRob2RzIHRvIGBsb2Rhc2gucHJvdG90eXBlYC5cbiAgICBhcnJheUVhY2goWydwb3AnLCAncHVzaCcsICdzaGlmdCcsICdzb3J0JywgJ3NwbGljZScsICd1bnNoaWZ0J10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBmdW5jID0gYXJyYXlQcm90b1ttZXRob2ROYW1lXSxcbiAgICAgICAgICBjaGFpbk5hbWUgPSAvXig/OnB1c2h8c29ydHx1bnNoaWZ0KSQvLnRlc3QobWV0aG9kTmFtZSkgPyAndGFwJyA6ICd0aHJ1JyxcbiAgICAgICAgICByZXRVbndyYXBwZWQgPSAvXig/OnBvcHxzaGlmdCkkLy50ZXN0KG1ldGhvZE5hbWUpO1xuXG4gICAgICBsb2Rhc2gucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBpZiAocmV0VW53cmFwcGVkICYmICF0aGlzLl9fY2hhaW5fXykge1xuICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWUoKTtcbiAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseShpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW10sIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzW2NoYWluTmFtZV0oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseShpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW10sIGFyZ3MpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBNYXAgbWluaWZpZWQgbWV0aG9kIG5hbWVzIHRvIHRoZWlyIHJlYWwgbmFtZXMuXG4gICAgYmFzZUZvck93bihMYXp5V3JhcHBlci5wcm90b3R5cGUsIGZ1bmN0aW9uKGZ1bmMsIG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBsb2Rhc2hGdW5jID0gbG9kYXNoW21ldGhvZE5hbWVdO1xuICAgICAgaWYgKGxvZGFzaEZ1bmMpIHtcbiAgICAgICAgdmFyIGtleSA9IGxvZGFzaEZ1bmMubmFtZSArICcnO1xuICAgICAgICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwocmVhbE5hbWVzLCBrZXkpKSB7XG4gICAgICAgICAgcmVhbE5hbWVzW2tleV0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICByZWFsTmFtZXNba2V5XS5wdXNoKHsgJ25hbWUnOiBtZXRob2ROYW1lLCAnZnVuYyc6IGxvZGFzaEZ1bmMgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZWFsTmFtZXNbY3JlYXRlSHlicmlkKHVuZGVmaW5lZCwgV1JBUF9CSU5EX0tFWV9GTEFHKS5uYW1lXSA9IFt7XG4gICAgICAnbmFtZSc6ICd3cmFwcGVyJyxcbiAgICAgICdmdW5jJzogdW5kZWZpbmVkXG4gICAgfV07XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTGF6eVdyYXBwZXJgLlxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5jbG9uZSA9IGxhenlDbG9uZTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUucmV2ZXJzZSA9IGxhenlSZXZlcnNlO1xuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS52YWx1ZSA9IGxhenlWYWx1ZTtcblxuICAgIC8vIEFkZCBjaGFpbiBzZXF1ZW5jZSBtZXRob2RzIHRvIHRoZSBgbG9kYXNoYCB3cmFwcGVyLlxuICAgIGxvZGFzaC5wcm90b3R5cGUuYXQgPSB3cmFwcGVyQXQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5jaGFpbiA9IHdyYXBwZXJDaGFpbjtcbiAgICBsb2Rhc2gucHJvdG90eXBlLmNvbW1pdCA9IHdyYXBwZXJDb21taXQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5uZXh0ID0gd3JhcHBlck5leHQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5wbGFudCA9IHdyYXBwZXJQbGFudDtcbiAgICBsb2Rhc2gucHJvdG90eXBlLnJldmVyc2UgPSB3cmFwcGVyUmV2ZXJzZTtcbiAgICBsb2Rhc2gucHJvdG90eXBlLnRvSlNPTiA9IGxvZGFzaC5wcm90b3R5cGUudmFsdWVPZiA9IGxvZGFzaC5wcm90b3R5cGUudmFsdWUgPSB3cmFwcGVyVmFsdWU7XG5cbiAgICAvLyBBZGQgbGF6eSBhbGlhc2VzLlxuICAgIGxvZGFzaC5wcm90b3R5cGUuZmlyc3QgPSBsb2Rhc2gucHJvdG90eXBlLmhlYWQ7XG5cbiAgICBpZiAoc3ltSXRlcmF0b3IpIHtcbiAgICAgIGxvZGFzaC5wcm90b3R5cGVbc3ltSXRlcmF0b3JdID0gd3JhcHBlclRvSXRlcmF0b3I7XG4gICAgfVxuICAgIHJldHVybiBsb2Rhc2g7XG4gIH0pO1xuXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gIC8vIEV4cG9ydCBsb2Rhc2guXG4gIHZhciBfID0gcnVuSW5Db250ZXh0KCk7XG5cbiAgLy8gU29tZSBBTUQgYnVpbGQgb3B0aW1pemVycywgbGlrZSByLmpzLCBjaGVjayBmb3IgY29uZGl0aW9uIHBhdHRlcm5zIGxpa2U6XG4gIGlmICh0eXBlb2YgZGVmaW5lID09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRlZmluZS5hbWQgPT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuICAgIC8vIEV4cG9zZSBMb2Rhc2ggb24gdGhlIGdsb2JhbCBvYmplY3QgdG8gcHJldmVudCBlcnJvcnMgd2hlbiBMb2Rhc2ggaXNcbiAgICAvLyBsb2FkZWQgYnkgYSBzY3JpcHQgdGFnIGluIHRoZSBwcmVzZW5jZSBvZiBhbiBBTUQgbG9hZGVyLlxuICAgIC8vIFNlZSBodHRwOi8vcmVxdWlyZWpzLm9yZy9kb2NzL2Vycm9ycy5odG1sI21pc21hdGNoIGZvciBtb3JlIGRldGFpbHMuXG4gICAgLy8gVXNlIGBfLm5vQ29uZmxpY3RgIHRvIHJlbW92ZSBMb2Rhc2ggZnJvbSB0aGUgZ2xvYmFsIG9iamVjdC5cbiAgICByb290Ll8gPSBfO1xuXG4gICAgLy8gRGVmaW5lIGFzIGFuIGFub255bW91cyBtb2R1bGUgc28sIHRocm91Z2ggcGF0aCBtYXBwaW5nLCBpdCBjYW4gYmVcbiAgICAvLyByZWZlcmVuY2VkIGFzIHRoZSBcInVuZGVyc2NvcmVcIiBtb2R1bGUuXG4gICAgZGVmaW5lKGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIF87XG4gICAgfSk7XG4gIH1cbiAgLy8gQ2hlY2sgZm9yIGBleHBvcnRzYCBhZnRlciBgZGVmaW5lYCBpbiBjYXNlIGEgYnVpbGQgb3B0aW1pemVyIGFkZHMgaXQuXG4gIGVsc2UgaWYgKGZyZWVNb2R1bGUpIHtcbiAgICAvLyBFeHBvcnQgZm9yIE5vZGUuanMuXG4gICAgKGZyZWVNb2R1bGUuZXhwb3J0cyA9IF8pLl8gPSBfO1xuICAgIC8vIEV4cG9ydCBmb3IgQ29tbW9uSlMgc3VwcG9ydC5cbiAgICBmcmVlRXhwb3J0cy5fID0gXztcbiAgfVxuICBlbHNlIHtcbiAgICAvLyBFeHBvcnQgdG8gdGhlIGdsb2JhbCBvYmplY3QuXG4gICAgcm9vdC5fID0gXztcbiAgfVxufS5jYWxsKHRoaXMpKTtcbiIsICJpbXBvcnQgdHlwZSB7IE11bHRpR3JhcGggfSBmcm9tIFwiZ3JhcGhvbG9neVwiO1xyXG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwianVnZ2wtYXBpXCI7XHJcbmltcG9ydCB7IGFkZEljb24sIEV2ZW50UmVmLCBNYXJrZG93blZpZXcsIFBsdWdpbiB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQge1xyXG4gIGFkZEZlYXRoZXJJY29uLFxyXG4gIG9wZW5WaWV3LFxyXG4gIHdhaXQsXHJcbn0gZnJvbSBcIm9ic2lkaWFuLWNvbW11bml0eS1saWIvZGlzdC91dGlsc1wiO1xyXG5pbXBvcnQgeyBCQ0FQSSB9IGZyb20gXCIuL0FQSVwiO1xyXG5pbXBvcnQgeyBEZWJ1Z2dlciB9IGZyb20gXCJzcmMvRGVidWdnZXJcIjtcclxuaW1wb3J0IHsgSGllcmFyY2h5Tm90ZVNlbGVjdG9yTW9kYWwgfSBmcm9tIFwiLi9BbHRlcm5hdGl2ZUhpZXJhcmNoaWVzL0hpZXJhcmNoeU5vdGVzL0hpZXJOb3RlTW9kYWxcIjtcclxuaW1wb3J0IHsgZ2V0Q29kZWJsb2NrQ0IgfSBmcm9tIFwiLi9Db2RlYmxvY2tzXCI7XHJcbmltcG9ydCB7IGNvcHlHbG9iYWxJbmRleCwgY29weUxvY2FsSW5kZXggfSBmcm9tIFwiLi9Db21tYW5kcy9DcmVhdGVJbmRleFwiO1xyXG5pbXBvcnQgeyBqdW1wVG9GaXJzdERpciB9IGZyb20gXCIuL0NvbW1hbmRzL2p1bXBUb0ZpcnN0RGlyXCI7XHJcbmltcG9ydCB7IHRocmVhZCB9IGZyb20gXCIuL0NvbW1hbmRzL3RocmVhZGluZ1wiO1xyXG5pbXBvcnQgeyB3cml0ZUJDc1RvQWxsRmlsZXMsIHdyaXRlQkNUb0ZpbGUgfSBmcm9tIFwiLi9Db21tYW5kcy9Xcml0ZUJDc1wiO1xyXG5pbXBvcnQge1xyXG4gIERFRkFVTFRfU0VUVElOR1MsXHJcbiAgRFVDS19JQ09OLFxyXG4gIERVQ0tfSUNPTl9TVkcsXHJcbiAgRFVDS19WSUVXLFxyXG4gIE1BVFJJWF9WSUVXLFxyXG4gIFRSQUlMX0lDT04sXHJcbiAgVFJBSUxfSUNPTl9TVkcsXHJcbiAgVFJFRV9WSUVXLFxyXG4gIEFQSV9OQU1FLFxyXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBGaWVsZFN1Z2dlc3RvciB9IGZyb20gXCIuL0ZpZWxkU3VnZ2VzdG9yXCI7XHJcbmltcG9ydCB0eXBlIHtcclxuICBCQ0FQSUksXHJcbiAgQkNTZXR0aW5ncyxcclxuICBEaXJlY3Rpb25zLFxyXG4gIE15VmlldyxcclxuICBWaWV3SW5mbyxcclxufSBmcm9tIFwiLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7IGJ1aWxkQ2xvc2VkRywgYnVpbGRNYWluRywgcmVmcmVzaEluZGV4IH0gZnJvbSBcIi4vcmVmcmVzaEluZGV4XCI7XHJcbmltcG9ydCB7IFJlbGF0aW9uU3VnZ2VzdG9yIH0gZnJvbSBcIi4vUmVsYXRpb25TdWdnZXN0b3JcIjtcclxuaW1wb3J0IHsgQkNTZXR0aW5nVGFiIH0gZnJvbSBcIi4vU2V0dGluZ3MvQnJlYWRjcnVtYnNTZXR0aW5nVGFiXCI7XHJcbmltcG9ydCB7IGdldEZpZWxkcyB9IGZyb20gXCIuL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyB3YWl0Rm9yQ2FjaGUgfSBmcm9tIFwiLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcbmltcG9ydCBEdWNrc1ZpZXcgZnJvbSBcIi4vVmlld3MvRHVja3NWaWV3XCI7XHJcbmltcG9ydCBNYXRyaXhWaWV3IGZyb20gXCIuL1ZpZXdzL01hdHJpeFZpZXdcIjtcclxuaW1wb3J0IHsgZHJhd1RyYWlsIH0gZnJvbSBcIi4vVmlld3MvVHJhaWxWaWV3XCI7XHJcbmltcG9ydCBUcmVlVmlldyBmcm9tIFwiLi9WaWV3cy9UcmVlVmlld1wiO1xyXG5pbXBvcnQgeyBCQ1N0b3JlIH0gZnJvbSBcIi4vVmlzdWFsaXNhdGlvbnMvSnVnZ2xcIjtcclxuaW1wb3J0IHsgVmlzTW9kYWwgfSBmcm9tIFwiLi9WaXN1YWxpc2F0aW9ucy9WaXNNb2RhbFwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQkNQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xyXG4gIHNldHRpbmdzOiBCQ1NldHRpbmdzO1xyXG5cclxuICB2aXNpdGVkOiBbc3RyaW5nLCBIVE1MRGl2RWxlbWVudF1bXSA9IFtdO1xyXG5cclxuICBtYWluRzogTXVsdGlHcmFwaDtcclxuICBjbG9zZWRHOiBNdWx0aUdyYXBoO1xyXG5cclxuICBhY3RpdmVMZWFmQ2hhbmdlOiBFdmVudFJlZiA9IHVuZGVmaW5lZDtcclxuICBsYXlvdXRDaGFuZ2U6IEV2ZW50UmVmID0gdW5kZWZpbmVkO1xyXG5cclxuICBkYjogRGVidWdnZXI7XHJcblxyXG4gIFZJRVdTOiBWaWV3SW5mb1tdO1xyXG5cclxuICBhcGk6IEJDQVBJSTtcclxuICBwcml2YXRlIGJjU3RvcmU6IEJDU3RvcmU7XHJcblxyXG4gIHJlZ2lzdGVyQWN0aXZlTGVhZkNoYW5nZUV2ZW50KCkge1xyXG4gICAgdGhpcy5hY3RpdmVMZWFmQ2hhbmdlID0gYXBwLndvcmtzcGFjZS5vbihcclxuICAgICAgXCJmaWxlLW9wZW5cIixcclxuICAgICAgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLnJlZnJlc2hPbk5vdGVDaGFuZ2UpIGF3YWl0IHJlZnJlc2hJbmRleCh0aGlzKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGFjdGl2ZVZpZXcgPSB0aGlzLmdldEFjdGl2ZVRZUEVWaWV3KE1BVFJJWF9WSUVXKTtcclxuICAgICAgICAgIGlmIChhY3RpdmVWaWV3KSBhd2FpdCBhY3RpdmVWaWV3LmRyYXcoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLnJlZ2lzdGVyRXZlbnQodGhpcy5hY3RpdmVMZWFmQ2hhbmdlKTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyTGF5b3V0Q2hhbmdlRXZlbnQoKSB7XHJcbiAgICB0aGlzLmxheW91dENoYW5nZSA9IGFwcC53b3Jrc3BhY2Uub24oXCJsYXlvdXQtY2hhbmdlXCIsIGFzeW5jICgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuc2V0dGluZ3Muc2hvd0JDcykgYXdhaXQgZHJhd1RyYWlsKHRoaXMpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlZ2lzdGVyRXZlbnQodGhpcy5sYXlvdXRDaGFuZ2UpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25sb2FkKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc29sZS5sb2coXCJsb2FkaW5nIGJyZWFkY3J1bWJzIHBsdWdpblwiKTtcclxuXHJcbiAgICBhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xyXG4gICAgdGhpcy5hZGRTZXR0aW5nVGFiKG5ldyBCQ1NldHRpbmdUYWIodGhpcykpO1xyXG5cclxuICAgIHRoaXMuZGIgPSBuZXcgRGVidWdnZXIodGhpcyk7XHJcblxyXG4gICAgY29uc3QgeyBzZXR0aW5ncyB9ID0gdGhpcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgZmllbGRTdWdnZXN0b3IsXHJcbiAgICAgIGVuYWJsZVJlbGF0aW9uU3VnZ2VzdG9yLFxyXG4gICAgICBvcGVuTWF0cml4T25Mb2FkLFxyXG4gICAgICBvcGVuRHVja09uTG9hZCxcclxuICAgICAgb3BlbkRvd25PbkxvYWQsXHJcbiAgICAgIHNob3dCQ3MsXHJcbiAgICAgIHVzZXJIaWVycyxcclxuICAgIH0gPSBzZXR0aW5ncztcclxuXHJcbiAgICBpZiAoZmllbGRTdWdnZXN0b3IpIHRoaXMucmVnaXN0ZXJFZGl0b3JTdWdnZXN0KG5ldyBGaWVsZFN1Z2dlc3Rvcih0aGlzKSk7XHJcbiAgICBpZiAoZW5hYmxlUmVsYXRpb25TdWdnZXN0b3IpXHJcbiAgICAgIHRoaXMucmVnaXN0ZXJFZGl0b3JTdWdnZXN0KG5ldyBSZWxhdGlvblN1Z2dlc3Rvcih0aGlzKSk7XHJcblxyXG5cclxuICAgIC8vIE92ZXJyaWRlIG9sZGVyIHZlcnNpb25zIG9mIHRoZXNlIHNldHRpbmdzXHJcbiAgICBpZiAoc2V0dGluZ3MubGltaXRUcmFpbENoZWNrYm94ZXMubGVuZ3RoID09PSAwKSBzZXR0aW5ncy5saW1pdFRyYWlsQ2hlY2tib3hlcyA9IGdldEZpZWxkcyhzZXR0aW5ncy51c2VySGllcnMpXHJcbiAgICBpZiAodHlwZW9mIHNldHRpbmdzLnNob3dBbGwgPT09ICdib29sZWFuJykgc2V0dGluZ3Muc2hvd0FsbCA9IHNldHRpbmdzLnNob3dBbGwgPyAnQWxsJyA6ICdTaG9ydGVzdCdcclxuXHJcbiAgICB0aGlzLlZJRVdTID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgcGxhaW46IFwiTWF0cml4XCIsXHJcbiAgICAgICAgdHlwZTogTUFUUklYX1ZJRVcsXHJcbiAgICAgICAgY29uc3RydWN0b3I6IE1hdHJpeFZpZXcsXHJcbiAgICAgICAgb3Blbk9uTG9hZDogb3Blbk1hdHJpeE9uTG9hZCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHBsYWluOiBcIkR1Y2tcIixcclxuICAgICAgICB0eXBlOiBEVUNLX1ZJRVcsXHJcbiAgICAgICAgY29uc3RydWN0b3I6IER1Y2tzVmlldyxcclxuICAgICAgICBvcGVuT25Mb2FkOiBvcGVuRHVja09uTG9hZCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHBsYWluOiBcIkRvd25cIixcclxuICAgICAgICB0eXBlOiBUUkVFX1ZJRVcsXHJcbiAgICAgICAgY29uc3RydWN0b3I6IFRyZWVWaWV3LFxyXG4gICAgICAgIG9wZW5PbkxvYWQ6IG9wZW5Eb3duT25Mb2FkLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IHsgY29uc3RydWN0b3IsIHR5cGUgfSBvZiB0aGlzLlZJRVdTKSB7XHJcbiAgICAgIHRoaXMucmVnaXN0ZXJWaWV3KHR5cGUsIChsZWFmKSA9PiBuZXcgY29uc3RydWN0b3IobGVhZiwgdGhpcykpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEljb24oRFVDS19JQ09OLCBEVUNLX0lDT05fU1ZHKTtcclxuICAgIGFkZEljb24oVFJBSUxfSUNPTiwgVFJBSUxfSUNPTl9TVkcpO1xyXG5cclxuICAgIGF3YWl0IHdhaXRGb3JDYWNoZSh0aGlzKTtcclxuICAgIHRoaXMubWFpbkcgPSBhd2FpdCBidWlsZE1haW5HKHRoaXMpO1xyXG4gICAgdGhpcy5jbG9zZWRHID0gYnVpbGRDbG9zZWRHKHRoaXMpO1xyXG5cclxuICAgIGFwcC53b3Jrc3BhY2Uub25MYXlvdXRSZWFkeShhc3luYyAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG5vRmlsZXMgPSBhcHAudmF1bHQuZ2V0TWFya2Rvd25GaWxlcygpLmxlbmd0aDtcclxuICAgICAgaWYgKHRoaXMubWFpbkc/Lm5vZGVzKCkubGVuZ3RoIDwgbm9GaWxlcykge1xyXG4gICAgICAgIGF3YWl0IHdhaXQoMzAwMCk7XHJcbiAgICAgICAgdGhpcy5tYWluRyA9IGF3YWl0IGJ1aWxkTWFpbkcodGhpcyk7XHJcbiAgICAgICAgdGhpcy5jbG9zZWRHID0gYnVpbGRDbG9zZWRHKHRoaXMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IHsgb3Blbk9uTG9hZCwgdHlwZSwgY29uc3RydWN0b3IgfSBvZiB0aGlzLlZJRVdTKVxyXG4gICAgICAgIGlmIChvcGVuT25Mb2FkKSBhd2FpdCBvcGVuVmlldyh0eXBlLCBjb25zdHJ1Y3Rvcik7XHJcblxyXG4gICAgICBpZiAoc2hvd0JDcykgYXdhaXQgZHJhd1RyYWlsKHRoaXMpO1xyXG4gICAgICB0aGlzLnJlZ2lzdGVyQWN0aXZlTGVhZkNoYW5nZUV2ZW50KCk7XHJcbiAgICAgIHRoaXMucmVnaXN0ZXJMYXlvdXRDaGFuZ2VFdmVudCgpO1xyXG5cclxuICAgICAgLy8gU291cmNlIGZvciBzYXZlIHNldHRpbmdcclxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2hpcHN0ZXJzbW9vdGhpZS9vYnNpZGlhbi1wbHVnaW4tcHJldHRpZXIvYmxvYi9tYWluL3NyYy9tYWluLnRzXHJcbiAgICAgIGNvbnN0IHNhdmVDb21tYW5kRGVmaW5pdGlvbiA9XHJcbiAgICAgICAgYXBwLmNvbW1hbmRzLmNvbW1hbmRzW1wiZWRpdG9yOnNhdmUtZmlsZVwiXTtcclxuICAgICAgY29uc3Qgc2F2ZSA9IHNhdmVDb21tYW5kRGVmaW5pdGlvbj8uY2FsbGJhY2s7XHJcblxyXG4gICAgICBpZiAodHlwZW9mIHNhdmUgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgIHNhdmVDb21tYW5kRGVmaW5pdGlvbi5jYWxsYmFjayA9IGFzeW5jICgpID0+IHtcclxuICAgICAgICAgIGF3YWl0IHNhdmUoKTtcclxuICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzLnJlZnJlc2hPbk5vdGVTYXZlKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHJlZnJlc2hJbmRleCh0aGlzKTtcclxuICAgICAgICAgICAgY29uc3QgYWN0aXZlVmlldyA9IHRoaXMuZ2V0QWN0aXZlVFlQRVZpZXcoTUFUUklYX1ZJRVcpO1xyXG4gICAgICAgICAgICBpZiAoYWN0aXZlVmlldykgYXdhaXQgYWN0aXZlVmlldy5kcmF3KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgYXBwLndvcmtzcGFjZS5pdGVyYXRlQWxsTGVhdmVzKChsZWFmKSA9PiB7XHJcbiAgICAgICAgaWYgKGxlYWYgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcpXHJcbiAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgIGxlYWYudmlldy5wcmV2aWV3TW9kZS5yZXJlbmRlcih0cnVlKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IHsgdHlwZSwgcGxhaW4sIGNvbnN0cnVjdG9yIH0gb2YgdGhpcy5WSUVXUykge1xyXG4gICAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICAgIGlkOiBgc2hvdy0ke3R5cGV9LXZpZXdgLFxyXG4gICAgICAgIG5hbWU6IGBPcGVuICR7cGxhaW59IFZpZXdgLFxyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIGNoZWNrQ2FsbGJhY2s6IGFzeW5jIChjaGVja2luZzogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoZWNraW5nKSByZXR1cm4gYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUodHlwZSkubGVuZ3RoID09PSAwO1xyXG4gICAgICAgICAgYXdhaXQgb3BlblZpZXcodHlwZSwgY29uc3RydWN0b3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiBcIm9wZW4tdmlzLW1vZGFsXCIsXHJcbiAgICAgIG5hbWU6IFwiT3BlbiBWaXN1YWxpc2F0aW9uIE1vZGFsXCIsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiBuZXcgVmlzTW9kYWwodGhpcykub3BlbigpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6IFwibWFuaXB1bGF0ZS1oaWVyYXJjaHktbm90ZXNcIixcclxuICAgICAgbmFtZTogXCJBZGp1c3QgSGllcmFyY2h5IE5vdGVzXCIsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiBuZXcgSGllcmFyY2h5Tm90ZVNlbGVjdG9yTW9kYWwodGhpcykub3BlbigpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6IFwiUmVmcmVzaC1CcmVhZGNydW1icy1JbmRleFwiLFxyXG4gICAgICBuYW1lOiBcIlJlZnJlc2ggQnJlYWRjcnVtYnMgSW5kZXhcIixcclxuICAgICAgY2FsbGJhY2s6IGFzeW5jICgpID0+IGF3YWl0IHJlZnJlc2hJbmRleCh0aGlzKSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiBcIlRvZ2dsZS10cmFpbC1pbi1FZGl0JkxQXCIsXHJcbiAgICAgIG5hbWU6IFwiVG9nZ2xlOiBTaG93IFRyYWlsL0dyaWQgaW4gRWRpdCAmIExQIG1vZGVcIixcclxuICAgICAgY2FsbGJhY2s6IGFzeW5jICgpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy5zaG93QkNzSW5FZGl0TFBNb2RlID0gIXNldHRpbmdzLnNob3dCQ3NJbkVkaXRMUE1vZGU7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICBhd2FpdCBkcmF3VHJhaWwodGhpcyk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogXCJXcml0ZS1CcmVhZGNydW1icy10by1DdXJyZW50LUZpbGVcIixcclxuICAgICAgbmFtZTogXCJXcml0ZSBCcmVhZGNydW1icyB0byBDdXJyZW50IEZpbGVcIixcclxuICAgICAgY2FsbGJhY2s6IGFzeW5jICgpID0+IGF3YWl0IHdyaXRlQkNUb0ZpbGUodGhpcyksXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogXCJXcml0ZS1CcmVhZGNydW1icy10by1BbGwtRmlsZXNcIixcclxuICAgICAgbmFtZTogXCJXcml0ZSBCcmVhZGNydW1icyB0byAqKkFMTCoqIEZpbGVzXCIsXHJcbiAgICAgIGNhbGxiYWNrOiBhc3luYyAoKSA9PiBhd2FpdCB3cml0ZUJDc1RvQWxsRmlsZXModGhpcyksXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogXCJsb2NhbC1pbmRleFwiLFxyXG4gICAgICBuYW1lOiBcIkNvcHkgYSBMb2NhbCBJbmRleCB0byB0aGUgY2xpcGJvYXJkXCIsXHJcbiAgICAgIGNhbGxiYWNrOiBhc3luYyAoKSA9PiBhd2FpdCBjb3B5TG9jYWxJbmRleCh0aGlzKSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiBcImdsb2JhbC1pbmRleFwiLFxyXG4gICAgICBuYW1lOiBcIkNvcHkgYSBHbG9iYWwgSW5kZXggdG8gdGhlIGNsaXBib2FyZFwiLFxyXG4gICAgICBjYWxsYmFjazogYXN5bmMgKCkgPT4gYXdhaXQgY29weUdsb2JhbEluZGV4KHRoaXMpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgW1widXBcIiwgXCJkb3duXCIsIFwibmV4dFwiLCBcInByZXZcIl0uZm9yRWFjaCgoZGlyOiBEaXJlY3Rpb25zKSA9PiB7XHJcbiAgICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgICAgaWQ6IGBqdW1wLXRvLWZpcnN0LSR7ZGlyfWAsXHJcbiAgICAgICAgbmFtZTogYEp1bXAgdG8gZmlyc3QgJyR7ZGlyfSdgLFxyXG4gICAgICAgIGNhbGxiYWNrOiBhc3luYyAoKSA9PiBhd2FpdCBqdW1wVG9GaXJzdERpcih0aGlzLCBkaXIpLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGdldEZpZWxkcyh1c2VySGllcnMpLmZvckVhY2goKGZpZWxkOiBzdHJpbmcpID0+IHtcclxuICAgICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgICBpZDogYG5ldy1maWxlLXdpdGgtY3Vyci1hcy0ke2ZpZWxkfWAsXHJcbiAgICAgICAgbmFtZTogYENyZWF0ZSBhIG5ldyAnJHtmaWVsZH0nIGZyb20gdGhlIGN1cnJlbnQgbm90ZWAsXHJcbiAgICAgICAgY2FsbGJhY2s6IGFzeW5jICgpID0+IGF3YWl0IHRocmVhZCh0aGlzLCBmaWVsZCksXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRSaWJib25JY29uKFxyXG4gICAgICBhZGRGZWF0aGVySWNvbihcInR2XCIpIGFzIHN0cmluZyxcclxuICAgICAgXCJCcmVhZGNydW1icyBWaXN1YWxpc2F0aW9uXCIsXHJcbiAgICAgICgpID0+IG5ldyBWaXNNb2RhbCh0aGlzKS5vcGVuKClcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5yZWdpc3Rlck1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yKFxyXG4gICAgICBcImJyZWFkY3J1bWJzXCIsXHJcbiAgICAgIGdldENvZGVibG9ja0NCKHRoaXMpXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGp1Z2dsUGx1Z2luID0gZ2V0UGx1Z2luKGFwcCk7XHJcbiAgICBpZiAoanVnZ2xQbHVnaW4pIHtcclxuICAgICAgdGhpcy5iY1N0b3JlID0gbmV3IEJDU3RvcmUodGhpcy5tYWluRywgYXBwLm1ldGFkYXRhQ2FjaGUpO1xyXG4gICAgICBqdWdnbFBsdWdpbi5yZWdpc3RlclN0b3JlKHRoaXMuYmNTdG9yZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hcGkgPSBuZXcgQkNBUEkodGhpcyk7XHJcbiAgICAvLyBSZWdpc3RlciBBUEkgdG8gZ2xvYmFsIHdpbmRvdyBvYmplY3QuXHJcbiAgICAod2luZG93W0FQSV9OQU1FXSA9IHRoaXMuYXBpKSAmJlxyXG4gICAgICB0aGlzLnJlZ2lzdGVyKCgpID0+IGRlbGV0ZSB3aW5kb3dbQVBJX05BTUVdKTtcclxuICB9XHJcblxyXG4gIGdldEFjdGl2ZVRZUEVWaWV3KHR5cGU6IHN0cmluZyk6IE15VmlldyB8IG51bGwge1xyXG4gICAgY29uc3QgeyBjb25zdHJ1Y3RvciB9ID0gdGhpcy5WSUVXUy5maW5kKCh2aWV3KSA9PiB2aWV3LnR5cGUgPT09IHR5cGUpO1xyXG4gICAgY29uc3QgbGVhdmVzID0gYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUodHlwZSk7XHJcbiAgICBpZiAobGVhdmVzICYmIGxlYXZlcy5sZW5ndGggPj0gMSkge1xyXG4gICAgICBjb25zdCB7IHZpZXcgfSA9IGxlYXZlc1swXTtcclxuICAgICAgaWYgKHZpZXcgaW5zdGFuY2VvZiBjb25zdHJ1Y3RvcikgcmV0dXJuIHZpZXc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGxvYWRTZXR0aW5ncyA9IGFzeW5jICgpID0+XHJcbiAgKHRoaXMuc2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKFxyXG4gICAge30sXHJcbiAgICBERUZBVUxUX1NFVFRJTkdTLFxyXG4gICAgYXdhaXQgdGhpcy5sb2FkRGF0YSgpXHJcbiAgKSk7XHJcblxyXG4gIHNhdmVTZXR0aW5ncyA9IGFzeW5jICgpID0+IGF3YWl0IHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcblxyXG4gIG9udW5sb2FkKCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJ1bmxvYWRpbmdcIik7XHJcbiAgICB0aGlzLlZJRVdTLmZvckVhY2goYXN5bmMgKHZpZXcpID0+IHtcclxuICAgICAgYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUodmlldy50eXBlKS5mb3JFYWNoKChsZWFmKSA9PiB7XHJcbiAgICAgICAgbGVhZi5kZXRhY2goKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnZpc2l0ZWQuZm9yRWFjaCgodmlzaXQpID0+IHZpc2l0WzFdLnJlbW92ZSgpKTtcclxuICAgIGlmICh0aGlzLmJjU3RvcmUpIHtcclxuICAgICAgY29uc3QganVnZ2xQbHVnaW4gPSBnZXRQbHVnaW4oYXBwKTtcclxuICAgICAgaWYgKGp1Z2dsUGx1Z2luKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGp1Z2dsUGx1Z2luLnJlbW92ZVN0b3JlKHRoaXMuYmNTdG9yZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwgImltcG9ydCB7IHBhcnNlRnJvbnRNYXR0ZXJUYWdzLCBwYXJzZUZyb250TWF0dGVyU3RyaW5nQXJyYXkgfSBmcm9tICdvYnNpZGlhbic7XG5cbmNvbnN0IENBVF9EQU5HTElORyA9ICdkYW5nbGluZyc7XG5jb25zdCBDT1JFX1NUT1JFX0lEID0gJ2NvcmUnO1xuY2xhc3MgVml6SWQge1xuICAgIGNvbnN0cnVjdG9yKGlkLCBzdG9yZUlkKSB7XG4gICAgICAgIHRoaXMuaWQgPSBpZDtcbiAgICAgICAgdGhpcy5zdG9yZUlkID0gc3RvcmVJZDtcbiAgICB9XG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnN0b3JlSWR9OiR7dGhpcy5pZH1gO1xuICAgIH1cbiAgICB0b0lkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50b1N0cmluZygpO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbUlkKGlkKSB7XG4gICAgICAgIGNvbnN0IHNwbGl0ID0gaWQuc3BsaXQoJzonKTtcbiAgICAgICAgY29uc3Qgc3RvcmVJZCA9IHNwbGl0WzBdO1xuICAgICAgICBjb25zdCBfaWQgPSBzcGxpdC5zbGljZSgxKS5qb2luKCc6Jyk7XG4gICAgICAgIHJldHVybiBuZXcgVml6SWQoX2lkLCBzdG9yZUlkKTtcbiAgICB9XG4gICAgc3RhdGljIGZyb21Ob2RlKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIFZpeklkLmZyb21JZChub2RlLmlkKCkpO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbU5vZGVzKG5vZGVzKSB7XG4gICAgICAgIHJldHVybiBub2Rlcy5tYXAoKG4pID0+IFZpeklkLmZyb21Ob2RlKG4pKTtcbiAgICB9XG4gICAgc3RhdGljIGZyb21GaWxlKGZpbGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBWaXpJZChmaWxlLm5hbWUsICdjb3JlJyk7XG4gICAgfVxuICAgIHN0YXRpYyB0b0lkKGlkLCBzdG9yZUlkKSB7XG4gICAgICAgIHJldHVybiBuZXcgVml6SWQoaWQsIHN0b3JlSWQpLnRvSWQoKTtcbiAgICB9XG59XG5jb25zdCBfcGFyc2VUYWdzID0gZnVuY3Rpb24gKHRhZ3MpIHtcbiAgICByZXR1cm4gW10uY29uY2F0KC4uLnRhZ3NcbiAgICAgICAgLm1hcCgodGFnKSA9PiB7XG4gICAgICAgIHRhZyA9IHRhZy5zbGljZSgxKTtcbiAgICAgICAgY29uc3QgaFNwbGl0ID0gdGFnLnNwbGl0KCcvJyk7XG4gICAgICAgIGNvbnN0IHRhZ3MgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpIGluIGhTcGxpdCkge1xuICAgICAgICAgICAgY29uc3QgaFRhZyA9IGhTcGxpdC5zbGljZSgwLCBwYXJzZUludChpKSArIDEpLmpvaW4oJy0nKTtcbiAgICAgICAgICAgIHRhZ3MucHVzaChgdGFnLSR7aFRhZ31gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFncztcbiAgICB9KSk7XG59O1xuY29uc3QgZ2V0Q2xhc3NlcyA9IGZ1bmN0aW9uIChmaWxlLCBtZXRhZGF0YUNhY2hlKSB7XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgICAgY29uc3QgY2xhc3NlcyA9IFtdO1xuICAgICAgICBpZiAoWydwbmcnLCAnanBnJywgJ2pwZWcnLCAnZ2lmJywgJ2JtcCcsICdzdmcnLCAndGlmZiddLmNvbnRhaW5zKGZpbGUuZXh0ZW5zaW9uKSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdpbWFnZScpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKFsnbXAzJywgJ3dlYm0nLCAnd2F2JywgJ200YScsICdvZ2cnLCAnM2dwJywgJ2ZsYWMnXS5jb250YWlucyhmaWxlLmV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnYXVkaW8nKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChbJ21wNCcsICd3ZWJtJywgJ29ndiddLmNvbnRhaW5zKGZpbGUuZXh0ZW5zaW9uKSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCd2aWRlbycpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGZpbGUuZXh0ZW5zaW9uID09PSAncGRmJykge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdwZGYnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGlzIGlzIHJlcGxhY2VkIGJ5IHRoZSAncGF0aCcgZGF0YSBhdHRyaWJ1dGUuXG4gICAgICAgIC8vIGlmICghKGZpbGUucGFyZW50Lm5hbWUgPT09ICcvJyB8fCBmaWxlLnBhcmVudC5uYW1lID09PSAnJykpIHtcbiAgICAgICAgLy8gICBjbGFzc2VzLnB1c2goYGZvbGRlci0ke2ZpbGUucGFyZW50Lm5hbWVcbiAgICAgICAgLy8gICAgICAgLnJlcGxhY2UoJyAnLCAnXycpfWApO1xuICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAvLyAgIGNsYXNzZXMucHVzaCgncm9vdCcpO1xuICAgICAgICAvLyB9XG4gICAgICAgIGlmIChmaWxlLmV4dGVuc2lvbiA9PT0gJ21kJykge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdub3RlJyk7XG4gICAgICAgICAgICBjb25zdCBjYWNoZSA9IG1ldGFkYXRhQ2FjaGUuZ2V0RmlsZUNhY2hlKGZpbGUpO1xuICAgICAgICAgICAgaWYgKGNhY2hlPy5mcm9udG1hdHRlcikge1xuICAgICAgICAgICAgICAgIGlmICgnaW1hZ2UnIGluIGNhY2hlLmZyb250bWF0dGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnaW1hZ2UnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCd0YWdzJyBpbiBjYWNoZS5mcm9udG1hdHRlcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YWdzID0gcGFyc2VGcm9udE1hdHRlclRhZ3MoY2FjaGUuZnJvbnRtYXR0ZXIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFncykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKC4uLl9wYXJzZVRhZ3ModGFncykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICgnY3NzY2xhc3MnIGluIGNhY2hlLmZyb250bWF0dGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsYXp6ZXMgPSBwYXJzZUZyb250TWF0dGVyU3RyaW5nQXJyYXkoY2FjaGUuZnJvbnRtYXR0ZXIsICdjc3NjbGFzcycpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2xhenplcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKC4uLmNsYXp6ZXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNhY2hlPy50YWdzKSB7XG4gICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKC4uLl9wYXJzZVRhZ3MoY2FjaGUudGFncy5tYXAoKHQpID0+IHQudGFnKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdmaWxlJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNsYXNzZXM7XG4gICAgfVxuICAgIHJldHVybiBbQ0FUX0RBTkdMSU5HXTtcbn07XG5jb25zdCBub2RlRnJvbUZpbGUgPSBhc3luYyBmdW5jdGlvbiAoZmlsZSwgcGx1Z2luLCBzZXR0aW5ncywgaWQpIHtcbiAgICBpZiAoIWlkKSB7XG4gICAgICAgIGlkID0gVml6SWQudG9JZChmaWxlLm5hbWUsIENPUkVfU1RPUkVfSUQpO1xuICAgIH1cbiAgICBjb25zdCBjYWNoZSA9IHBsdWdpbi5hcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XG4gICAgY29uc3QgbmFtZSA9IGZpbGUuZXh0ZW5zaW9uID09PSAnbWQnID8gZmlsZS5iYXNlbmFtZSA6IGZpbGUubmFtZTtcbiAgICBjb25zdCBjbGFzc2VzID0gZ2V0Q2xhc3NlcyhmaWxlLCBwbHVnaW4uYXBwLm1ldGFkYXRhQ2FjaGUpLmpvaW4oJyAnKTtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICBpZCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgcGF0aDogZmlsZS5wYXRoLFxuICAgIH07XG4gICAgaWYgKFsncG5nJywgJ2pwZycsICdqcGVnJywgJ2dpZicsICdibXAnLCAnc3ZnJywgJ3RpZmYnXS5jb250YWlucyhmaWxlLmV4dGVuc2lvbikpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGRhdGFbJ3Jlc291cmNlX3VybCddID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtwbHVnaW4uc2V0dGluZ3MuaW1nU2VydmVyUG9ydH0vJHtlbmNvZGVVUkkoZmlsZS5wYXRoKX1gO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIHsgfVxuICAgIH1cbiAgICBpZiAoc2V0dGluZ3MucmVhZENvbnRlbnQgJiYgZmlsZS5leHRlbnNpb24gPT0gJ21kJykge1xuICAgICAgICBkYXRhWydjb250ZW50J10gPSBhd2FpdCBwbHVnaW4uYXBwLnZhdWx0LmNhY2hlZFJlYWQoZmlsZSk7XG4gICAgfVxuICAgIGNvbnN0IGZyb250bWF0dGVyID0gY2FjaGU/LmZyb250bWF0dGVyO1xuICAgIGlmIChmcm9udG1hdHRlcikge1xuICAgICAgICBPYmplY3Qua2V5cyhmcm9udG1hdHRlcikuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgaWYgKCEoayA9PT0gJ3Bvc2l0aW9uJykpIHtcbiAgICAgICAgICAgICAgICBpZiAoayA9PT0gJ2ltYWdlJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbWFnZUZpZWxkID0gZnJvbnRtYXR0ZXJba107XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB1cmwuIHRocm93cyBlcnJvciBvdGhlcndpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBVUkwoaW1hZ2VGaWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2tdID0gaW1hZ2VGaWVsZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2tdID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtwbHVnaW4uc2V0dGluZ3MuaW1nU2VydmVyUG9ydH0vJHtlbmNvZGVVUkkoaW1hZ2VGaWVsZCl9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIHsgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkYXRhW2tdID0gZnJvbnRtYXR0ZXJba107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ3JvdXA6ICdub2RlcycsXG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGNsYXNzZXM6IGNsYXNzZXMsXG4gICAgfTtcbn07XG5jb25zdCBub2RlRGFuZ2xpbmcgPSBmdW5jdGlvbiAocGF0aCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGdyb3VwOiAnbm9kZXMnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpZDogVml6SWQudG9JZChwYXRoLCBDT1JFX1NUT1JFX0lEKSxcbiAgICAgICAgICAgIG5hbWU6IHBhdGgsXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzZXM6ICdkYW5nbGluZycsXG4gICAgfTtcbn07XG5jb25zdCB3aWtpbGlua1JlZ2V4ID0gJ1xcXFxbXFxcXFsoW15cXFxcXVxcXFxyXFxcXG5dKz8pXFxcXF1cXFxcXSc7XG5jb25zdCBuYW1lUmVnZXggPSAnW15cXFxcV1xcXFxkXVxcXFx3Kic7XG5jb25zdCByZWdleEVzY2FwZSA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1stXFwvXFxcXF4kKis/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpO1xufTtcbmNvbnN0IHBhcnNlVHlwZWRMaW5rID0gZnVuY3Rpb24gKGxpbmssIGxpbmUsIHR5cGVkTGlua1ByZWZpeCkge1xuICAgIC8vIFRPRE86IFRoaXMgaXMgc29tZXRoaW5nIHNwZWNpZmljIEkgdXNlLCBidXQgc2hvdWxkbid0IGtlZXAgYmVpbmcgaW4gdGhpcyByZXBvLlxuICAgIGNvbnN0IHJlZ2V4UHVibGlzaGVkSW4gPSBuZXcgUmVnRXhwKGBeJHtyZWdleEVzY2FwZSh0eXBlZExpbmtQcmVmaXgpfSAocHVibGlzaGVkSW4pIChcXFxcZFxcXFxkXFxcXGRcXFxcZCkgKCR7d2lraWxpbmtSZWdleH0sPyAqKSskYCk7XG4gICAgY29uc3QgbWF0Y2hQSSA9IHJlZ2V4UHVibGlzaGVkSW4uZXhlYyhsaW5lKTtcbiAgICBpZiAoIShtYXRjaFBJID09PSBudWxsKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2xhc3M6ICd0eXBlLXB1Ymxpc2hlZEluJyxcbiAgICAgICAgICAgIGlzSW5saW5lOiBmYWxzZSxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICB5ZWFyOiBtYXRjaFBJWzJdLFxuICAgICAgICAgICAgICAgIGNvbnRleHQ6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdwdWJsaXNoZWRJbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvLyBJbnR1aXRpb246IFN0YXJ0IHdpdGggdGhlIHR5cGVkIGxpbmsgcHJlZml4LiBUaGVuIGEgbmVvNGogbmFtZSAobmFtZVJlZ2V4KS5cbiAgICAvLyBUaGVuIG9uZSBvciBtb3JlIG9mIHRoZSB3aWtpbGluayBncm91cDogd2lraWxpbmsgcmVnZXggc2VwYXJhdGVkIGJ5IG9wdGlvbmFsIGNvbW1hIGFuZCBtdWx0aXBsZSBzcGFjZXNcbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYF4ke3JlZ2V4RXNjYXBlKHR5cGVkTGlua1ByZWZpeCl9ICgke25hbWVSZWdleH0pICgke3dpa2lsaW5rUmVnZXh9LD8gKikrJGApO1xuICAgIGNvbnN0IG1hdGNoID0gcmVnZXguZXhlYyhsaW5lKTtcbiAgICBjb25zdCBzcGxpdExpbmsgPSBsaW5rLm9yaWdpbmFsLnNwbGl0KCd8Jyk7XG4gICAgbGV0IGFsaWFzID0gbnVsbDtcbiAgICBpZiAoc3BsaXRMaW5rLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgYWxpYXMgPSBzcGxpdExpbmsuc2xpY2UoMSkuam9pbigpLnNsaWNlKDAsIC0yKTtcbiAgICB9XG4gICAgaWYgKCEobWF0Y2ggPT09IG51bGwpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjbGFzczogYHR5cGUtJHttYXRjaFsxXX1gLFxuICAgICAgICAgICAgaXNJbmxpbmU6IGZhbHNlLFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIGFsaWFzOiBhbGlhcyxcbiAgICAgICAgICAgICAgICBjb250ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiBtYXRjaFsxXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcbmNvbnN0IHBhcnNlUmVmQ2FjaGUgPSBmdW5jdGlvbiAocmVmLCBjb250ZW50LCBpZCwgc291cmNlLCB0YXJnZXQsIHR5cGVkTGlua1ByZWZpeCkge1xuICAgIGNvbnN0IGxpbmUgPSBjb250ZW50W3JlZi5wb3NpdGlvbi5zdGFydC5saW5lXTtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgaWQ6IGlkLFxuICAgICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgICAgdGFyZ2V0OiB0YXJnZXQsXG4gICAgICAgIGNvbnRleHQ6IGxpbmUsXG4gICAgICAgIGVkZ2VDb3VudDogMSxcbiAgICB9O1xuICAgIGNvbnN0IHNwbGl0TGluayA9IHJlZi5vcmlnaW5hbC5zcGxpdCgnfCcpO1xuICAgIGlmIChzcGxpdExpbmsubGVuZ3RoID4gMSkge1xuICAgICAgICBkYXRhWydhbGlhcyddID0gc3BsaXRMaW5rLnNsaWNlKDEpLmpvaW4oKS5zbGljZSgwLCAtMik7XG4gICAgfVxuICAgIGxldCBjbGFzc2VzID0gJyc7XG4gICAgY29uc3QgdHlwZWRMaW5rID0gcGFyc2VUeXBlZExpbmsocmVmLCBsaW5lLCB0eXBlZExpbmtQcmVmaXgpO1xuICAgIGlmICh0eXBlZExpbmsgPT09IG51bGwpIHtcbiAgICAgICAgY2xhc3NlcyA9IGAke2NsYXNzZXN9IGlubGluZWA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBkYXRhID0geyAuLi50eXBlZExpbmsucHJvcGVydGllcywgLi4uZGF0YSB9O1xuICAgICAgICBjbGFzc2VzID0gYCR7Y2xhc3Nlc30gJHt0eXBlZExpbmsuY2xhc3N9YDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ3JvdXA6ICdlZGdlcycsXG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGNsYXNzZXM6IGNsYXNzZXMsXG4gICAgfTtcbn07XG5cbmNvbnN0IGdldFBsdWdpbiA9IGZ1bmN0aW9uIChhcHApIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKCdqdWdnbCcgaW4gYXBwLnBsdWdpbnMucGx1Z2lucykge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBhcHAucGx1Z2lucy5wbHVnaW5zWydqdWdnbCddO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCB7IFZpeklkLCBnZXRDbGFzc2VzLCBnZXRQbHVnaW4sIG5vZGVEYW5nbGluZywgbm9kZUZyb21GaWxlLCBwYXJzZVJlZkNhY2hlLCBwYXJzZVR5cGVkTGluayB9O1xuIiwgIi8qKlxyXG4gKiBUaGlzIG1vZHVsZSBjb250YWlucyB2YXJpb3VzIHV0aWxpdHkgZnVuY3Rpb25zIGNvbW1vbmx5IHVzZWQgaW4gT2JzaWRpYW4gcGx1Z2lucy5cclxuICogQG1vZHVsZSBvYnNpZGlhbi1jb21tdW5pdHktbGliXHJcbiAqL1xyXG5pbXBvcnQgKiBhcyBmZWF0aGVyIGZyb20gXCJmZWF0aGVyLWljb25zXCI7XHJcbmltcG9ydCB7IGFkZEljb24sIE1hcmtkb3duUmVuZGVyZXIsIE1hcmtkb3duVmlldywgTW9kYWwsIG5vcm1hbGl6ZVBhdGgsIE5vdGljZSwgcmVxdWVzdCwgVEZpbGUsIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbi8qKlxyXG4gKiBZb3UgY2FuIGF3YWl0IHRoaXMgRnVuY3Rpb24gdG8gZGVsYXkgZXhlY3V0aW9uXHJcbiAqXHJcbiAqIEBwYXJhbSBkZWxheSBUaGUgZGVsYXkgaW4gbXNcclxuICovXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0KGRlbGF5KSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgZGVsYXkpKTtcclxufVxyXG4vKipcclxuICogQWRkcyBhbGwgb2ZmaWNpYWwgRmVhdGhlciBJY29ucyB0byBPYnNpZGlhbi5cclxuICogaHR0cHM6Ly9mZWF0aGVyaWNvbnMuY29tL1xyXG4gKlxyXG4gKiBAcGFyYW0gYXR0ciBTVkcgQXR0cmlidXRlcyBmb3IgdGhlIEljb24uIFRoZSBkZWZhdWx0IHNob3VsZCB3b3JrIGZvciBtb3N0IHVzZWNhc2VzLlxyXG4gKlxyXG4gKiBAZGVwcmVjYXRlZCBBcyBvZiBPYnNpZGlhbiAwLjEzLjI3IHRoaXMgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgYmVjYXVzZSBPYnNpZGlhbiBzaGlwcyB3aXRoIGBsdWNpZGVgLCBhIG1haW50YWluZWQgZm9yayBvZiBmZWF0aGVyLiAoaHR0cHM6Ly9sdWNpZGUuZGV2LylcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRBbGxGZWF0aGVySWNvbnMoYXR0ciA9IHsgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IFwiMTAwXCIsIGhlaWdodDogXCIxMDBcIiB9KSB7XHJcbiAgICBPYmplY3QudmFsdWVzKGZlYXRoZXIuaWNvbnMpLmZvckVhY2goKGkpID0+IHtcclxuICAgICAgICBjb25zdCBzdmcgPSBpLnRvU3ZnKGF0dHIpO1xyXG4gICAgICAgIGFkZEljb24oYGZlYXRoZXItJHtpLm5hbWV9YCwgc3ZnKTtcclxuICAgIH0pO1xyXG59XHJcbi8qKlxyXG4gKiBBZGRzIGEgc3BlY2lmaWMgRmVhdGhlciBJY29uIHRvIE9ic2lkaWFuLlxyXG4gKlxyXG4gKiBAcGFyYW0gbmFtZSBvZmZpY2lhbCBOYW1lIG9mIHRoZSBJY29uIChodHRwczovL2ZlYXRoZXJpY29ucy5jb20vKVxyXG4gKiBAcGFyYW0gYXR0ciBTVkcgQXR0cmlidXRlcyBmb3IgdGhlIEljb24uIFRoZSBkZWZhdWx0IHNob3VsZCB3b3JrIGZvciBtb3N0IHVzZWNhc2VzLlxyXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBJY29uIG5hbWVcclxuICpcclxuICogQGRlcHJlY2F0ZWQgQXMgb2YgT2JzaWRpYW4gMC4xMy4yNyB0aGlzIGlzIG5vIGxvbmdlciBuZWVkZWQsIGJlY2F1c2UgT2JzaWRpYW4gc2hpcHMgd2l0aCBgbHVjaWRlYCwgYSBtYWludGFpbmVkIGZvcmsgb2YgZmVhdGhlci4gKGh0dHBzOi8vbHVjaWRlLmRldi8pXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYWRkRmVhdGhlckljb24obmFtZSwgYXR0ciA9IHsgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IFwiMTAwXCIsIGhlaWdodDogXCIxMDBcIiB9KSB7XHJcbiAgICBpZiAoZmVhdGhlci5pY29uc1tuYW1lXSkge1xyXG4gICAgICAgIGNvbnN0IGljb25OYW1lID0gYGZlYXRoZXItJHtuYW1lfWA7XHJcbiAgICAgICAgYWRkSWNvbihpY29uTmFtZSwgZmVhdGhlci5pY29uc1tuYW1lXS50b1N2ZyhhdHRyKSk7XHJcbiAgICAgICAgcmV0dXJuIGljb25OYW1lO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdGhyb3cgRXJyb3IoYFRoaXMgSWNvbiAoJHtuYW1lfSkgZG9lc24ndCBleGlzdCBpbiB0aGUgRmVhdGhlciBMaWJyYXJ5LmApO1xyXG4gICAgfVxyXG59XHJcbi8qKlxyXG4gKiBDb252ZXJ0IGEgYmFzZTY0IFN0cmluZyB0byBhbiBBcnJheUJ1ZmZlci5cclxuICogWW91IGNhbiB0aGVuIHVzZSB0aGUgQXJyYXlCdWZmZXIgdG8gc2F2ZSB0aGUgYXNzZXQgdG8gZGlzay5cclxuICpcclxuICogQHBhcmFtIGJhc2U2NCBiYXNlNjQgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZC5cclxuICogQHJldHVybnMgQXJyYXlCdWZmZXJcclxuICogQGRlcHJlY2F0ZWQgT2JzaWRpYW4gb2ZmZXJzIGl0J3Mgb3duIG1ldGhvZCBhcyBvZiAwLjE0LjVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBiYXNlNjRUb0FycmF5QnVmZmVyKGJhc2U2NCkge1xyXG4gICAgY29uc3QgYmluYXJ5X3N0cmluZyA9IHdpbmRvdy5hdG9iKGJhc2U2NCk7XHJcbiAgICBjb25zdCBsZW4gPSBiaW5hcnlfc3RyaW5nLmxlbmd0aDtcclxuICAgIGxldCBieXRlcyA9IG5ldyBVaW50OEFycmF5KGxlbik7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgYnl0ZXNbaV0gPSBiaW5hcnlfc3RyaW5nLmNoYXJDb2RlQXQoaSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYnl0ZXMuYnVmZmVyO1xyXG59XHJcbi8qKlxyXG4gKiBUaGlzIGlzIGEgaGVscGVyIG1ldGhvZCBmb3IgYW4gdW5kb2N1bWVudGVkIEFQSSBvZiBPYnNpZGlhbi5cclxuICpcclxuICogQHBhcmFtIGZpbGVOYW1lIFRoZSBGaWxlbmFtZSBmb3IgeW91ciBBdHRhY2htZW50XHJcbiAqIEBwYXJhbSBmb3JtYXQgVGhlIEZpbGVmb3JtYXQgb2YgeW91ciBBdHRhY2htZW50XHJcbiAqIEBwYXJhbSBzb3VyY2VGaWxlIFRoZSBTb3VyY2VmaWxlIGZyb20gd2hlcmUgdGhlIEF0dGFjaG1lbnQgZ2V0cyBhZGRlZCwgdGhpcyBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgQXR0YWNobWVudCBGb2xkZXIgbWlnaHQgYmUgZGlmZmVyZW50IGJhc2VkIG9uIHdoZXJlIGl0IGdldHMgaW5zZXJ0ZWQuXHJcbiAqIEByZXR1cm5zIFRoZSBBdHRhY2htZW50IFBhdGhcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMoZmlsZU5hbWUsIGZvcm1hdCwgc291cmNlRmlsZSkge1xyXG4gICAgLy9AdHMtZXhwZWN0LWVycm9yXHJcbiAgICByZXR1cm4gYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyhmaWxlTmFtZSwgZm9ybWF0LCBzb3VyY2VGaWxlKTtcclxufVxyXG4vKipcclxuICogQ29weSBgY29udGVudGAgdG8gdGhlIHVzZXJzIGNsaXBib2FyZC5cclxuICpcclxuICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgVGhlIGNvbnRlbnQgdG8gYmUgY29waWVkIHRvIGNsaXBib2FyZC5cclxuICogQHBhcmFtIHsoKSA9PiBhbnl9IHN1Y2Nlc3MgVGhlIGNhbGxiYWNrIHRvIHJ1biB3aGVuIHRleHQgaXMgc3VjY2Vzc2Z1bGx5IGNvcGllZC4gRGVmYXVsdCB0aHJvd3MgYSBuZXcgYE5vdGljZWBcclxuICogQHBhcmFtIHsocmVhc29uPykgPT4gYW55fSBmYWlsdXJlIFRoZSBjYWxsYmFjayB0byBydW4gd2hlbiB0ZXh0IHdhcyBub3QgYWJsZSB0byBiZSBjb3BpZWQuIERlZmF1bHQgdGhyb3dzIGEgbmV3IGBOb3RpY2VgLCBhbmQgY29uc29sZSBsb2dzIHRoZSBlcnJvci5gXHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29weShjb250ZW50LCBzdWNjZXNzID0gKCkgPT4gbmV3IE5vdGljZShcIkNvcGllZCB0byBjbGlwYm9hcmRcIiksIGZhaWx1cmUgPSAocmVhc29uKSA9PiB7XHJcbiAgICBuZXcgTm90aWNlKFwiQ291bGQgbm90IGNvcHkgdG8gY2xpcGJvYXJkXCIpO1xyXG4gICAgY29uc29sZS5sb2coeyByZWFzb24gfSk7XHJcbn0pIHtcclxuICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvbnRlbnQpLnRoZW4oc3VjY2VzcywgZmFpbHVyZSk7XHJcbn1cclxuLyoqXHJcbiAqIEdpdmVuIGFuIGVkaXRvciwgY2hlY2sgaWYgc29tZXRoaW5nIGlzIHNlbGVjdGVkIGFuZCByZXR1cm4gdGhhdCBzZWxlY3Rpb24sIG90aGVyd2lzZSByZXR1cm4gdGhlIGVudGlyZSBjb250ZW50IG9mIHRoZSBlZGl0b3JcclxuICogQHBhcmFtICB7RWRpdG9yfSBlZGl0b3JcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3Rpb25Gcm9tRWRpdG9yKGVkaXRvcikge1xyXG4gICAgaWYgKGVkaXRvci5zb21ldGhpbmdTZWxlY3RlZCgpKVxyXG4gICAgICAgIHJldHVybiBlZGl0b3IuZ2V0U2VsZWN0aW9uKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIGVkaXRvci5nZXRWYWx1ZSgpO1xyXG59XHJcbi8qKlxyXG4gKiBDaGVjayBpZiBzb21ldGhpbmcgaXMgc2VsZWN0ZWQgaW4gdGhlIGN1cnJlbnQgZmlsZSBhbmQgcmV0dXJuIHRoYXQgc2VsZWN0aW9uLCBvdGhlcndpc2UgcmV0dXJuIHRoZSBlbnRpcmUgY29udGVudCBvZiB0aGUgY3VycmVudCBmaWxlLlxyXG4gKiBAcGFyYW0gIHtib29sZWFufSBbY2FjaGVkPXRydWVdIFVzZSBgY2FjaGVkUmVhZGAgb3IgYHJlYWRgLiBgY2FjaGVkUmVhZGAgYnkgZGVmYXVsdC5cclxuICogQHJldHVybnMge3N0cmluZyB8IG51bGx9IGBudWxsYCBpZiBub3QgZm9jdXNzZWQgb24gYSBtYXJrZG93biBmaWxlXHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U2VsZWN0aW9uRnJvbUN1cnJGaWxlKGNhY2hlZCA9IHRydWUpIHtcclxuICAgIHZhciBfYTtcclxuICAgIGNvbnN0IHRleHQgPSAoX2EgPSB3aW5kb3cgPT09IG51bGwgfHwgd2luZG93ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1N0cmluZygpO1xyXG4gICAgaWYgKHRleHQpXHJcbiAgICAgICAgcmV0dXJuIHRleHQ7XHJcbiAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGdldEFjdGl2ZUZpbGVDb250ZW50KGNhY2hlZCk7XHJcbn1cclxuLyoqXHJcbiAqIENoZWNrIGlmIGBub3RlTmFtZWAgaXMgdGhlIG5hbWUgb2YgYSBub3RlIHRoYXQgZXhpc3RzIGluIHRoZSB2YXVsdC5cclxuICogQHBhcmFtICB7c3RyaW5nfSBub3RlTmFtZSBCYXNlbmFtZSBvZiB0aGUgbm90ZSB0byBzZWFyY2ggZm9yLlxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IFtzb3VyY2VQYXRoPVwiXCJdIE9wdGlvbmFsIGZpbGUgcGF0aCB0byBzdGFydCBzZWFyY2hpbmcgZnJvbS4gRGVmYXVsdCBpcyB0aGUgY3VycmVudCBmaWxlLlxyXG4gKiBAcmV0dXJucyBib29sZWFuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgaXNJblZhdWx0ID0gKG5vdGVOYW1lLCBzb3VyY2VQYXRoID0gXCJcIikgPT4gISFhcHAubWV0YWRhdGFDYWNoZS5nZXRGaXJzdExpbmtwYXRoRGVzdChub3RlTmFtZSwgc291cmNlUGF0aCk7XHJcbi8qKlxyXG4gKiBXaGVuIGhvdmVyaW5nIGEgbGluayBnb2luZyB0byBgdG9gLCBzaG93IHRoZSBPYnNpZGlhbiBob3Zlci1wcmV2aWV3IG9mIHRoYXQgbm90ZS5cclxuICpcclxuICogWW91IHByb2JhYmx5IGhhdmUgdG8gaG9sZCBkb3duIGBDdHJsYCB3aGVuIGhvdmVyaW5nIHRoZSBsaW5rIGZvciB0aGUgcHJldmlldyB0byBhcHBlYXIhXHJcbiAqIEBwYXJhbSAge01vdXNlRXZlbnR9IGV2ZW50XHJcbiAqIEBwYXJhbSAge1lvdXJWaWV3fSB2aWV3IFRoZSB2aWV3IHdpdGggdGhlIGxpbmsgYmVpbmcgaG92ZXJlZFxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHRvIFRoZSBiYXNlbmFtZSBvZiB0aGUgbm90ZSB0byBwcmV2aWV3LlxyXG4gKiBAdGVtcGxhdGUgWW91clZpZXcgVGhlIFZpZXdUeXBlIG9mIHlvdXIgdmlld1xyXG4gKiBAcmV0dXJucyB2b2lkXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaG92ZXJQcmV2aWV3KGV2ZW50LCB2aWV3LCB0bykge1xyXG4gICAgY29uc3QgdGFyZ2V0RWwgPSBldmVudC50YXJnZXQ7XHJcbiAgICBhcHAud29ya3NwYWNlLnRyaWdnZXIoXCJob3Zlci1saW5rXCIsIHtcclxuICAgICAgICBldmVudCxcclxuICAgICAgICBzb3VyY2U6IHZpZXcuZ2V0Vmlld1R5cGUoKSxcclxuICAgICAgICBob3ZlclBhcmVudDogdmlldyxcclxuICAgICAgICB0YXJnZXRFbCxcclxuICAgICAgICBsaW5rdGV4dDogdG8sXHJcbiAgICB9KTtcclxufVxyXG4vKipcclxuICogQ3JlYXRlIGEgbmV3IG1hcmtkb3duIG5vdGUgbmFtZWQgYG5ld05hbWVgIGluIHRoZSB1c2VyJ3MgcHJlZmZlcmVkIG5ldy1ub3RlLWZvbGRlci5cclxuICogQHBhcmFtICB7c3RyaW5nfSBuZXdOYW1lIE5hbWUgb2YgbmV3IG5vdGUgKHdpdGggb3Igd2l0aG91dCAnLm1kJylcclxuICogQHBhcmFtICB7c3RyaW5nfSBbY3VyckZpbGVQYXRoPVwiXCJdIEZpbGUgcGF0aCBvZiB0aGUgY3VycmVudCBub3RlLiBVc2UgYW4gZW1wdHkgc3RyaW5nIGlmIHRoZXJlIGlzIG5vIGFjdGl2ZSBmaWxlLlxyXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxURmlsZT59IG5ldyBURmlsZVxyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU5ld01ETm90ZShuZXdOYW1lLCBjdXJyRmlsZVBhdGggPSBcIlwiKSB7XHJcbiAgICBjb25zdCBuZXdGaWxlRm9sZGVyID0gYXBwLmZpbGVNYW5hZ2VyLmdldE5ld0ZpbGVQYXJlbnQoY3VyckZpbGVQYXRoKS5wYXRoO1xyXG4gICAgY29uc3QgbmV3RmlsZVBhdGggPSBub3JtYWxpemVQYXRoKGAke25ld0ZpbGVGb2xkZXJ9JHtuZXdGaWxlRm9sZGVyID09PSBcIi9cIiA/IFwiXCIgOiBcIi9cIn0ke2FkZE1EKG5ld05hbWUpfWApO1xyXG4gICAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5jcmVhdGUobmV3RmlsZVBhdGgsIFwiXCIpO1xyXG59XHJcbi8qKlxyXG4gKiBBZGQgJy5tZCcgdG8gYG5vdGVOYW1lYCBpZiBpdCBpc24ndCBhbHJlYWR5IHRoZXJlLlxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IG5vdGVOYW1lIHdpdGggb3Igd2l0aG91dCAnLm1kJyBvbiB0aGUgZW5kLlxyXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBub3RlTmFtZSB3aXRoICcubWQnIG9uIHRoZSBlbmQuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgYWRkTUQgPSAobm90ZU5hbWUpID0+IHtcclxuICAgIHJldHVybiBub3RlTmFtZS5tYXRjaCgvXFwuTUQkfFxcLm1kJC9tKSA/IG5vdGVOYW1lIDogbm90ZU5hbWUgKyBcIi5tZFwiO1xyXG59O1xyXG4vKipcclxuICogU3RyaXAgJy5tZCcgb2ZmIHRoZSBlbmQgb2YgYSBub3RlIG5hbWUgdG8gZ2V0IGl0cyBiYXNlbmFtZS5cclxuICpcclxuICogV29ya3Mgd2l0aCB0aGUgZWRnZWNhc2Ugd2hlcmUgYSBub3RlIGhhcyAnLm1kJyBpbiBpdHMgYmFzZW5hbWU6IGBPYnNpZGlhbi5tZC5tZGAsIGZvciBleGFtcGxlLlxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IG5vdGVOYW1lIHdpdGggb3Igd2l0aG91dCAnLm1kJyBvbiB0aGUgZW5kLlxyXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBub3RlTmFtZSB3aXRob3V0ICcubWQnXHJcbiAqL1xyXG5leHBvcnQgY29uc3Qgc3RyaXBNRCA9IChub3RlTmFtZSkgPT4ge1xyXG4gICAgaWYgKG5vdGVOYW1lLm1hdGNoKC9cXC5NRCR8XFwubWQkL20pKSB7XHJcbiAgICAgICAgcmV0dXJuIG5vdGVOYW1lLnNwbGl0KC9cXC5NRCR8XFwubWQkL20pLnNsaWNlKDAsIC0xKS5qb2luKFwiLm1kXCIpO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICAgIHJldHVybiBub3RlTmFtZTtcclxufTtcclxuLyoqXHJcbiAqIFdoZW4gY2xpY2tpbmcgYSBsaW5rLCBjaGVjayBpZiB0aGF0IG5vdGUgaXMgYWxyZWFkeSBvcGVuIGluIGFub3RoZXIgbGVhZiwgYW5kIHN3aXRjaCB0byB0aGF0IGxlYWYsIGlmIHNvLiBPdGhlcndpc2UsIG9wZW4gdGhlIG5vdGUgaW4gYSBuZXcgcGFuZS5cclxuICogQHBhcmFtICB7c3RyaW5nfSBkZXN0IE5hbWUgb2Ygbm90ZSB0byBvcGVuLiBJZiB5b3Ugd2FudCB0byBvcGVuIGEgbm9uLW1kIG5vdGUsIGJlIHN1cmUgdG8gYWRkIHRoZSBmaWxlIGV4dGVuc2lvbi5cclxuICogQHBhcmFtICB7TW91c2VFdmVudH0gZXZlbnRcclxuICogQHBhcmFtICB7e2NyZWF0ZU5ld0ZpbGU6Ym9vbGVhbn19IFtvcHRpb25zPXtjcmVhdGVOZXdGaWxlOnRydWV9XSBXaGV0aGVyIG9yIG5vdCB0byBjcmVhdGUgYGRlc3RgIGZpbGUgaWYgaXQgZG9lc24ndCBleGlzdC4gSWYgYGZhbHNlYCwgc2ltcGx5IHJldHVybiBmcm9tIHRoZSBmdW5jdGlvbi5cclxuICogQHJldHVybnMgUHJvbWlzZVxyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5PclN3aXRjaChkZXN0LCBldmVudCwgb3B0aW9ucyA9IHsgY3JlYXRlTmV3RmlsZTogdHJ1ZSB9KSB7XHJcbiAgICBjb25zdCB7IHdvcmtzcGFjZSB9ID0gYXBwO1xyXG4gICAgbGV0IGRlc3RGaWxlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Rmlyc3RMaW5rcGF0aERlc3QoZGVzdCwgXCJcIik7XHJcbiAgICAvLyBJZiBkZXN0IGRvZXNuJ3QgZXhpc3QsIG1ha2UgaXRcclxuICAgIGlmICghZGVzdEZpbGUgJiYgb3B0aW9ucy5jcmVhdGVOZXdGaWxlKSB7XHJcbiAgICAgICAgZGVzdEZpbGUgPSBhd2FpdCBjcmVhdGVOZXdNRE5vdGUoZGVzdCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICghZGVzdEZpbGUgJiYgIW9wdGlvbnMuY3JlYXRlTmV3RmlsZSlcclxuICAgICAgICByZXR1cm47XHJcbiAgICAvLyBDaGVjayBpZiBpdCdzIGFscmVhZHkgb3BlblxyXG4gICAgY29uc3QgbGVhdmVzV2l0aERlc3RBbHJlYWR5T3BlbiA9IFtdO1xyXG4gICAgLy8gRm9yIGFsbCBvcGVuIGxlYXZlcywgaWYgdGhlIGxlYXZlJ3MgYmFzZW5hbWUgaXMgZXF1YWwgdG8gdGhlIGxpbmsgZGVzdGluYXRpb24sIHJhdGhlciBhY3RpdmF0ZSB0aGF0IGxlYWYgaW5zdGVhZCBvZiBvcGVuaW5nIGl0IGluIHR3byBwYW5lc1xyXG4gICAgd29ya3NwYWNlLml0ZXJhdGVBbGxMZWF2ZXMoKGxlYWYpID0+IHtcclxuICAgICAgICB2YXIgX2E7XHJcbiAgICAgICAgaWYgKGxlYWYudmlldyBpbnN0YW5jZW9mIE1hcmtkb3duVmlldykge1xyXG4gICAgICAgICAgICBjb25zdCBmaWxlID0gKF9hID0gbGVhZi52aWV3KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZmlsZTtcclxuICAgICAgICAgICAgaWYgKGZpbGUgJiYgZmlsZS5iYXNlbmFtZSArIFwiLlwiICsgZmlsZS5leHRlbnNpb24gPT09IGRlc3QpIHtcclxuICAgICAgICAgICAgICAgIGxlYXZlc1dpdGhEZXN0QWxyZWFkeU9wZW4ucHVzaChsZWFmKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gUmF0aGVyIHN3aXRjaCB0byBpdCBpZiBpdCBpcyBvcGVuXHJcbiAgICBpZiAobGVhdmVzV2l0aERlc3RBbHJlYWR5T3Blbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgd29ya3NwYWNlLnNldEFjdGl2ZUxlYWYobGVhdmVzV2l0aERlc3RBbHJlYWR5T3BlblswXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgY29uc3QgbW9kZSA9IGFwcC52YXVsdC5nZXRDb25maWcoXCJkZWZhdWx0Vmlld01vZGVcIik7XHJcbiAgICAgICAgY29uc3QgbGVhZiA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZShcIk1ldGFcIilcclxuICAgICAgICAgICAgPyB3b3Jrc3BhY2Uuc3BsaXRBY3RpdmVMZWFmKClcclxuICAgICAgICAgICAgOiB3b3Jrc3BhY2UuZ2V0VW5waW5uZWRMZWFmKCk7XHJcbiAgICAgICAgLy9AdHMtZXhwZWN0LWVycm9yXHJcbiAgICAgICAgYXdhaXQgbGVhZi5vcGVuRmlsZShkZXN0RmlsZSwgeyBhY3RpdmU6IHRydWUsIG1vZGUgfSk7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIEdpdmVuIGEgbGlzdCBvZiByZXNvbHZlZCBsaW5rcyBmcm9tIGFwcC5tZXRhZGF0YUNhY2hlLCBjaGVjayBpZiBgZnJvbWAgaGFzIGEgbGluayB0byBgdG9gXHJcbiAqIEBwYXJhbSAge1Jlc29sdmVkTGlua3N9IHJlc29sdmVkTGlua3NcclxuICogQHBhcmFtICB7c3RyaW5nfSBmcm9tIE5vdGUgbmFtZSB3aXRoIGxpbmsgbGVhdmluZyAoV2l0aCBvciB3aXRob3V0ICcubWQnKVxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHRvIE5vdGUgbmFtZSB3aXRoIGxpbmsgYXJyaXZpbmcgKFdpdGggb3Igd2l0aG91dCAnLm1kJylcclxuICogQHBhcmFtIHtib29sZWFufSBbZGlyZWN0ZWQ9dHJ1ZV0gT25seSBjaGVjayBpZiBgZnJvbWAgaGFzIGEgbGluayB0byBgdG9gLiBJZiBub3QgZGlyZWN0ZWQsIGNoZWNrIGluIGJvdGggZGlyZWN0aW9uc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzTGlua2VkKHJlc29sdmVkTGlua3MsIGZyb20sIHRvLCBkaXJlY3RlZCA9IHRydWUpIHtcclxuICAgIHZhciBfYSwgX2I7XHJcbiAgICBmcm9tID0gYWRkTUQoZnJvbSk7XHJcbiAgICB0byA9IGFkZE1EKHRvKTtcclxuICAgIGNvbnN0IGZyb21UbyA9IChfYSA9IHJlc29sdmVkTGlua3NbZnJvbV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5oYXNPd25Qcm9wZXJ0eSh0byk7XHJcbiAgICBpZiAoIWZyb21UbyAmJiAhZGlyZWN0ZWQpIHtcclxuICAgICAgICBjb25zdCB0b0Zyb20gPSAoX2IgPSByZXNvbHZlZExpbmtzW3RvXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmhhc093blByb3BlcnR5KGZyb20pO1xyXG4gICAgICAgIHJldHVybiB0b0Zyb207XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIGZyb21UbztcclxufVxyXG4vKipcclxuICogQ2hlY2sgaWYgdGhlIGxpbmsgYGZyb21gIFx1MjE5MiBgdG9gIGlzIHJlc29sdmVkIG9yIG5vdC5cclxuICogQHBhcmFtICB7c3RyaW5nfSB0b1xyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGZyb21cclxuICogQHJldHVybnMgYm9vbGVhblxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVzb2x2ZWQodG8sIGZyb20pIHtcclxuICAgIHZhciBfYTtcclxuICAgIGNvbnN0IHsgcmVzb2x2ZWRMaW5rcyB9ID0gYXBwLm1ldGFkYXRhQ2FjaGU7XHJcbiAgICByZXR1cm4gKChfYSA9IHJlc29sdmVkTGlua3MgPT09IG51bGwgfHwgcmVzb2x2ZWRMaW5rcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzb2x2ZWRMaW5rc1thZGRNRChmcm9tKV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVthZGRNRCh0byldKSA+IDA7XHJcbn1cclxuLyoqXHJcbiAqIE9wZW4geW91ciB2aWV3IG9uIHRoZSBjaG9zZW4gYHNpZGVgIGlmIGl0IGlzbid0IGFscmVhZHkgb3BlblxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHZpZXdUeXBlXHJcbiAqIEBwYXJhbSAge0NvbnN0cnVjdG9yPFlvdXJWaWV3Pn0gdmlld0NsYXNzIFRoZSBjbGFzcyBjb25zdHJ1Y3RvciBvZiB5b3VyIHZpZXdcclxuICogQHBhcmFtICB7XCJsZWZ0XCJ8XCJyaWdodFwifSBbc2lkZT1cInJpZ2h0XCJdXHJcbiAqIEByZXR1cm5zIHtQcm9taXNlPFlvdXJWaWV3Pn0gVGhlIG9wZW5lZCB2aWV3XHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlblZpZXcodmlld1R5cGUsIHZpZXdDbGFzcywgc2lkZSA9IFwicmlnaHRcIikge1xyXG4gICAgbGV0IGxlYWYgPSBudWxsO1xyXG4gICAgZm9yIChsZWFmIG9mIGFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKHZpZXdUeXBlKSkge1xyXG4gICAgICAgIGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiB2aWV3Q2xhc3MpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGxlYWYudmlldztcclxuICAgICAgICB9XHJcbiAgICAgICAgYXdhaXQgbGVhZi5zZXRWaWV3U3RhdGUoeyB0eXBlOiBcImVtcHR5XCIgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBsZWFmID1cclxuICAgICAgICAobGVhZiAhPT0gbnVsbCAmJiBsZWFmICE9PSB2b2lkIDAgPyBsZWFmIDogc2lkZSA9PT0gXCJyaWdodFwiKVxyXG4gICAgICAgICAgICA/IGFwcC53b3Jrc3BhY2UuZ2V0UmlnaHRMZWFmKGZhbHNlKVxyXG4gICAgICAgICAgICA6IGFwcC53b3Jrc3BhY2UuZ2V0TGVmdExlYWYoZmFsc2UpO1xyXG4gICAgYXdhaXQgbGVhZi5zZXRWaWV3U3RhdGUoe1xyXG4gICAgICAgIHR5cGU6IHZpZXdUeXBlLFxyXG4gICAgICAgIGFjdGl2ZTogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGxlYWYudmlldztcclxufVxyXG4vKipcclxuICogQ2hlY2sgd2hpY2ggc2lkZSBvZiB0aGUgd29ya3NwYWNlIHlvdXIgYHZpZXdUeXBlYCBpcyBvbiwgYW5kIHNhdmUgaXQgaW50byBgcGx1Z2luLnNldHRpbmdzW3NldHRpbmdOYW1lXWAuXHJcbiAqXHJcbiAqICoqVGlwKio6IFJ1biB0aGlzIGZ1bmN0aW9uIG9uIGBwbHVnaW4udW5sb2FkYCB0byBzYXZlIHRoZSBsYXN0IHNpZGUgeW91ciB2aWV3IHdhcyBvbiB3aGVuIGNsb3NpbmcsIHRoZW4ge0BsaW5rIG9wZW5WaWV3fSBvbiB0aGUgc2FtZSBzaWRlIGl0IHdhcyBsYXN0LlxyXG4gKiBAcGFyYW0gIHtZb3VyUGx1Z2lufSBwbHVnaW5cclxuICogQHBhcmFtICB7c3RyaW5nfSB2aWV3VHlwZVxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHNldHRpbmdOYW1lXHJcbiAqIEByZXR1cm5zIHtcImxlZnRcIiB8IFwicmlnaHRcIn0gYHNpZGVgXHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2F2ZVZpZXdTaWRlKHBsdWdpbiwgdmlld1R5cGUsIHNldHRpbmdOYW1lKSB7XHJcbiAgICBjb25zdCBsZWFmID0gYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUodmlld1R5cGUpWzBdO1xyXG4gICAgaWYgKCFsZWFmKSB7XHJcbiAgICAgICAgY29uc29sZS5pbmZvKGBPYnNpZGlhbi1Db21tdW5pdHktTGliOiBObyBpbnN0YW5jZSBvZiAnJHt2aWV3VHlwZX0nIG9wZW4sIGNhbm5vdCBzYXZlIHNpZGVgKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIGNvbnN0IHNpZGUgPSBsZWFmLmdldFJvb3QoKS5zaWRlO1xyXG4gICAgLy9AdHMtaWdub3JlXHJcbiAgICBwbHVnaW4uc2V0dGluZ3Nbc2V0dGluZ05hbWVdID0gc2lkZTtcclxuICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgcmV0dXJuIHNpZGU7XHJcbn1cclxuLyoqXHJcbiAqIEEgTW9kYWwgdXNlZCBpbiB7QGxpbmsgYWRkUmVuZGVyZWRNYXJrZG93bkJ1dHRvbn0gdG8gZGlzcGxheSByZW5kZXJlZCBtYXJrZG93biBmcm9tIGEgcmF3IHN0cmluZywgb3IgZmV0Y2hlZCBmcm9tIGEgcHJvdmlkZWQgdXJsLlxyXG4gKlxyXG4gKiAhW10oaHR0cHM6Ly9pLmltZ3VyLmNvbS9OTXdNNTBFLnBuZylcclxuICogQHBhcmFtICB7WW91clBsdWdpbn0gcGx1Z2luXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gc291cmNlIFJhdyBtYXJrZG93biBjb250ZW50IG9yIHVybCB0byBmaW5kIHJhdyBtYXJrZG93bi5cclxuICogQHBhcmFtICB7Ym9vbGVhbn0gZmV0Y2ggVHJ1ZSBcdTIxOTIgZmV0Y2ggbWFya2Rvd24gZnJvbSBgc291cmNlYCBhcyB1cmwuIEZhbHNlIFx1MjE5MiBgc291cmNlYCBpcyBhbHJlYWR5IGEgbWFya2Rvd24gc3RyaW5nLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFJlbmRlcmVkTWFya2Rvd25Nb2RhbCBleHRlbmRzIE1vZGFsIHtcclxuICAgIGNvbnN0cnVjdG9yKHBsdWdpbiwgc291cmNlLCBmZXRjaCkge1xyXG4gICAgICAgIHN1cGVyKGFwcCk7XHJcbiAgICAgICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XHJcbiAgICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XHJcbiAgICAgICAgdGhpcy5mZXRjaCA9IGZldGNoO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgb25PcGVuKCkge1xyXG4gICAgICAgIGxldCB7IGNvbnRlbnRFbCwgc291cmNlLCBwbHVnaW4sIGZldGNoIH0gPSB0aGlzO1xyXG4gICAgICAgIGxldCBjb250ZW50ID0gc291cmNlO1xyXG4gICAgICAgIGlmIChmZXRjaCkge1xyXG4gICAgICAgICAgICBjb250ZW50RWwuY3JlYXRlRGl2KHsgdGV4dDogYFdhaXRpbmcgZm9yIGNvbnRlbnQgZnJvbTogJyR7c291cmNlfSdgIH0pO1xyXG4gICAgICAgICAgICBjb250ZW50ID0gYXdhaXQgcmVxdWVzdCh7IHVybDogc291cmNlIH0pO1xyXG4gICAgICAgICAgICBjb250ZW50RWwuZW1wdHkoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbG9nRGl2ID0gY29udGVudEVsLmNyZWF0ZURpdih7IGNsczogXCJPQ0wtUmVuZGVyZWRNYXJrZG93bk1vZGFsXCIgfSk7XHJcbiAgICAgICAgTWFya2Rvd25SZW5kZXJlci5yZW5kZXJNYXJrZG93bihjb250ZW50LCBsb2dEaXYsIFwiXCIsIHBsdWdpbik7XHJcbiAgICB9XHJcbiAgICBvbkNsb3NlKCkge1xyXG4gICAgICAgIHRoaXMuY29udGVudEVsLmVtcHR5KCk7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIEFkZCBhIGJ1dHRvbiB0byBhbiBIVE1MRUxlbWVudCwgd2hpY2gsIHdoZW4gY2xpY2tlZCwgcG9wcyB1cCBhIHtAbGluayBSZW5kZXJlZE1hcmtkb3duTW9kYWx9IHNob3dpbmcgcmVuZGVyZWQgbWFya2Rvd24uXHJcbiAqXHJcbiAqIFVzZSBgZmV0Y2hgIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIG1hcmtkb3duIHN0cmluZyBuZWVkcyB0byBiZSBmZXRjaGVkLCBvciBpZiBpdCBoYXMgYmVlbiBwcm92aWRlZCBhcyBhIHN0cmluZyBhbHJlYWR5LlxyXG4gKlxyXG4gKiAhW10oaHR0cHM6Ly9pLmltZ3VyLmNvbS9IaTRneXl2LnBuZylcclxuICogQHBhcmFtICB7WW91clBsdWdpbn0gcGx1Z2luXHJcbiAqIEBwYXJhbSAge0hUTUxFbGVtZW50fSBjb250YWluZXJFbCBIVE1MRWxlbWVudCB0byBhZGQgdGhlIGJ1dHRvbiB0b1xyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHNvdXJjZSBSYXcgbWFya2Rvd24gY29udGVudCBvciB1cmwgdG8gZmluZCByYXcgbWFya2Rvd24uXHJcbiAqIEBwYXJhbSAge2Jvb2xlYW59IGZldGNoIFRydWUgXHUyMTkyIGZldGNoIG1hcmtkb3duIGZyb20gYHNvdXJjZWAgYXMgdXJsLiBGYWxzZSBcdTIxOTIgYHNvdXJjZWAgaXMgYWxyZWFkeSBhIG1hcmtkb3duIHN0cmluZy5cclxuICogQHBhcmFtICB7c3RyaW5nfSBkaXNwbGF5VGV4dCBUZXh0IHRvIGRpc3BsYXkgaW4gdGhlIGJ1dHRvbi5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRSZW5kZXJlZE1hcmtkb3duQnV0dG9uKHBsdWdpbiwgY29udGFpbmVyRWwsIHNvdXJjZSwgZmV0Y2gsIGRpc3BsYXlUZXh0KSB7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbChcImJ1dHRvblwiLCB7IHRleHQ6IGRpc3BsYXlUZXh0IH0sIChidXQpID0+IGJ1dC5vbkNsaWNrRXZlbnQoKCkgPT4ge1xyXG4gICAgICAgIG5ldyBSZW5kZXJlZE1hcmtkb3duTW9kYWwocGx1Z2luLCBzb3VyY2UsIGZldGNoKS5vcGVuKCk7XHJcbiAgICB9KSk7XHJcbn1cclxuLyoqXHJcbiAqIENoZWNrIGlmIGBhcHAubWV0YWRhdGFDYWNoZS5SZXNvbHZlZExpbmtzYCBoYXZlIGZ1bGx5IGluaXRhbGlzZWQuXHJcbiAqXHJcbiAqIFVzZWQgd2l0aCB7QGxpbmsgd2FpdEZvclJlc29sdmVkTGlua3N9LlxyXG4gKiBAcGFyYW0gIHtudW1iZXJ9IG5vRmlsZXMgTnVtYmVyIG9mIGZpbGVzIGluIHlvdXIgdmF1bHQuXHJcbiAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVkTGlua3NDb21wbGV0ZShub0ZpbGVzKSB7XHJcbiAgICBjb25zdCB7IHJlc29sdmVkTGlua3MgfSA9IGFwcC5tZXRhZGF0YUNhY2hlO1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHJlc29sdmVkTGlua3MpLmxlbmd0aCA9PT0gbm9GaWxlcztcclxufVxyXG4vKipcclxuICogV2FpdCBmb3IgYGFwcC5tZXRhZGF0YUNhY2hlLlJlc29sdmVkTGlua3NgIHRvIGhhdmUgZnVsbHkgaW5pdGlhbGlzZWQuXHJcbiAqIEBwYXJhbSAge251bWJlcn0gW2RlbGF5PTEwMDBdIE51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZXR3ZWVuIGVhY2ggY2hlY2suXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBbbWF4PTUwXSBNYXhpbXVtIG51bWJlciBvZiBpdGVyYXRpb25zIHRvIGNoZWNrIGJlZm9yZSB0aHJvd2luZyBhbiBlcnJvciBhbmQgYnJlYWtpbmcgb3V0IG9mIHRoZSBsb29wLlxyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JSZXNvbHZlZExpbmtzKGRlbGF5ID0gMTAwMCwgbWF4ID0gNTApIHtcclxuICAgIGNvbnN0IG5vRmlsZXMgPSBhcHAudmF1bHQuZ2V0TWFya2Rvd25GaWxlcygpLmxlbmd0aDtcclxuICAgIGxldCBpID0gMDtcclxuICAgIHdoaWxlICghcmVzb2x2ZWRMaW5rc0NvbXBsZXRlKG5vRmlsZXMpICYmIGkgPCBtYXgpIHtcclxuICAgICAgICBhd2FpdCB3YWl0KGRlbGF5KTtcclxuICAgICAgICBpKys7XHJcbiAgICB9XHJcbiAgICBpZiAoaSA9PT0gbWF4KSB7XHJcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJPYnNpZGlhbi1Db21tdW5pdHktTGliOiBSZXNvbHZlZExpbmtzIGRpZCBub3QgZmluaXNoIGluaXRpYWxpc2luZy4gYG1heGAgaXRlcmF0aW9ucyB3YXMgcmVhY2hlZCBmaXJzdC5cIik7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIENoZWNrIGlmIHRoZSBjb250ZW50IG9mIGEgbm90ZSBoYXMgWUFNTC4gSWYgc28sIHJldHVybiBhbiBhcnJheSBvZiB0aGUgWUFNTCBhbmQgdGhlIHJlc3Qgb2YgdGhlIG5vdGUuIElmIG5vdCwgcmV0dXJuIGBbJycsIGNvbnRlbnRdYFxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGNvbnRlbnRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBzcGxpdEF0WWFtbChjb250ZW50KSB7XHJcbiAgICBpZiAoIS9eLS0tXFxuLy50ZXN0KGNvbnRlbnQpKVxyXG4gICAgICAgIHJldHVybiBbXCJcIiwgY29udGVudF07XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBzcGxpdHMgPSBjb250ZW50LnNwbGl0KFwiLS0tXCIpO1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIHNwbGl0cy5zbGljZSgwLCAyKS5qb2luKFwiLS0tXCIpICsgXCItLS1cIixcclxuICAgICAgICAgICAgc3BsaXRzLnNsaWNlKDIpLmpvaW4oXCItLS1cIiksXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICpcclxuICogQHBhcmFtIHtib29sZWFufSBjYWNoZWQgUmV0dXJuIGNhY2hlZCBmaWxlIGNvbnRlbnQgKipvcioqIHJldHVybiB3aGF0J3Mgb24gZGlzay5cclxuICogQHJldHVybnNcclxuICovXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBY3RpdmVGaWxlQ29udGVudChjYWNoZWQgPSB0cnVlKSB7XHJcbiAgICBjb25zdCBjdXJyRmlsZSA9IGFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpO1xyXG4gICAgaWYgKCEoY3VyckZpbGUgaW5zdGFuY2VvZiBURmlsZSkpXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICBpZiAoY2FjaGVkKVxyXG4gICAgICAgIHJldHVybiBhd2FpdCBhcHAudmF1bHQuY2FjaGVkUmVhZChjdXJyRmlsZSk7XHJcbiAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5yZWFkKGN1cnJGaWxlKTtcclxufVxyXG4iLCAiaW1wb3J0IHR5cGUge1xyXG4gIEJDU2V0dGluZ3MsXHJcbiAgRGlyZWN0aW9ucyxcclxuICBSZWFsTkltcGxpZWQsXHJcbiAgVXNlckhpZXIsXHJcbn0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgdHlwZSB7IElKdWdnbFNldHRpbmdzIH0gZnJvbSBcImp1Z2dsLWFwaVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IE1BVFJJWF9WSUVXID0gXCJCQy1tYXRyaXhcIjtcclxuLy8gZXhwb3J0IGNvbnN0IFNUQVRTX1ZJRVcgPSBcIkJDLXN0YXRzXCI7XHJcbmV4cG9ydCBjb25zdCBEVUNLX1ZJRVcgPSBcIkJDLWR1Y2tzXCI7XHJcbmV4cG9ydCBjb25zdCBUUkVFX1ZJRVcgPSBcIkJDLXRyZWVcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBUUkFJTF9JQ09OID0gXCJCQy10cmFpbC1pY29uXCI7XHJcbmV4cG9ydCBjb25zdCBUUkFJTF9JQ09OX1NWRyA9XHJcbiAgJzxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTQ4LjgsNGMtNiwwLTEzLjUsMC41LTE5LjcsMy4zUzE3LjksMTUuOSwxNy45LDI1YzAsNSwyLjYsOS43LDYuMSwxMy45czguMSw4LjMsMTIuNiwxMi4zczksNy44LDEyLjIsMTEuNSBjMy4yLDMuNyw1LjEsNy4xLDUuMSwxMC4yYzAsMTQuNC0xMy40LDE5LjMtMTMuNCwxOS4zYy0wLjcsMC4yLTEuMiwwLjgtMS4zLDEuNXMwLjEsMS40LDAuNywxLjljMC42LDAuNSwxLjMsMC42LDIsMC4zIGMwLDAsMTYuMS02LjEsMTYuMS0yM2MwLTQuNi0yLjYtOC44LTYuMS0xMi44Yy0zLjUtNC04LjEtNy45LTEyLjYtMTEuOGMtNC41LTMuOS04LjktNy45LTEyLjItMTEuOGMtMy4yLTMuOS01LjItNy43LTUuMi0xMS40IGMwLTcuOCwzLjYtMTEuNiw4LjgtMTRTNDMsOCw0OC44LDhjNC42LDAsOS4zLDAsMTEsMGMwLjcsMCwxLjQtMC40LDEuNy0xYzAuMy0wLjYsMC4zLTEuNCwwLTJzLTEtMS0xLjctMUM1OC4zLDQsNTMuNCw0LDQ4LjgsNCBMNDguOCw0eiBNNzguMSw0Yy0wLjYsMC0xLjIsMC4yLTEuNiwwLjdsLTguOSw5LjljLTAuNSwwLjYtMC43LDEuNC0wLjMsMi4yYzAuMywwLjcsMSwxLjIsMS44LDEuMmgwLjFsLTIuOCwyLjYgYy0wLjYsMC42LTAuOCwxLjQtMC41LDIuMmMwLjMsMC44LDEsMS4zLDEuOSwxLjNoMS4zbC00LjUsNC42Yy0wLjYsMC42LTAuNywxLjQtMC40LDIuMmMwLjMsMC43LDEsMS4yLDEuOCwxLjJoMTB2NCBjMCwwLjcsMC40LDEuNCwxLDEuOGMwLjYsMC40LDEuNCwwLjQsMiwwYzAuNi0wLjQsMS0xLDEtMS44di00aDEwYzAuOCwwLDEuNS0wLjUsMS44LTEuMmMwLjMtMC43LDAuMS0xLjYtMC40LTIuMkw4Ni45LDI0aDEuMyBjMC44LDAsMS42LTAuNSwxLjktMS4zYzAuMy0wLjgsMC4xLTEuNi0wLjUtMi4ybC0yLjgtMi42aDAuMWMwLjgsMCwxLjUtMC41LDEuOC0xLjJjMC4zLTAuNywwLjItMS42LTAuMy0yLjJsLTguOS05LjkgQzc5LjEsNC4zLDc4LjYsNCw3OC4xLDRMNzguMSw0eiBNNzgsOWw0LjQsNC45aC0wLjdjLTAuOCwwLTEuNiwwLjUtMS45LDEuM2MtMC4zLDAuOC0wLjEsMS42LDAuNSwyLjJsMi44LDIuNmgtMS4xIGMtMC44LDAtMS41LDAuNS0xLjgsMS4yYy0wLjMsMC43LTAuMSwxLjYsMC40LDIuMmw0LjUsNC42SDcwLjhsNC41LTQuNmMwLjYtMC42LDAuNy0xLjQsMC40LTIuMmMtMC4zLTAuNy0xLTEuMi0xLjgtMS4yaC0xLjEgbDIuOC0yLjZjMC42LTAuNiwwLjgtMS40LDAuNS0yLjJjLTAuMy0wLjgtMS0xLjMtMS45LTEuM2gtMC43TDc4LDl6IE01Mi40LDEyYy00LjEsMC03LjEsMC41LTkuNCwxLjVjLTIuMywxLTMuOCwyLjUtNC41LDQuMyBjLTAuNywxLjgtMC41LDMuNiwwLjEsNS4yYzAuNiwxLjUsMS41LDIuOSwyLjUsMy45YzUuNCw1LjQsMTguMSwxMi42LDI5LjYsMjFjNS44LDQuMiwxMS4yLDguNiwxNS4xLDEzYzMuOSw0LjQsNi4yLDguNyw2LjIsMTIuNCBjMCwxNC41LTEyLjksMTguNy0xMi45LDE4LjdjLTAuNywwLjItMS4yLDAuOC0xLjQsMS41czAuMSwxLjUsMC43LDEuOWMwLjYsMC41LDEuMywwLjYsMiwwLjNjMCwwLDE1LjYtNS42LDE1LjYtMjIuNSBjMC01LjMtMi45LTEwLjMtNy4yLTE1LjFDODQuNiw1My42LDc5LDQ5LDczLjEsNDQuN2MtMTEuOC04LjYtMjQuOC0xNi4zLTI5LjItMjAuNmMtMC42LTAuNi0xLjItMS41LTEuNi0yLjQgYy0wLjMtMC45LTAuNC0xLjctMC4xLTIuNGMwLjMtMC43LDAuOC0xLjQsMi4zLTJjMS41LTAuNyw0LjEtMS4yLDcuOC0xLjJjNC45LDAsOS40LDAuMSw5LjQsMC4xYzAuNywwLDEuNC0wLjMsMS44LTEgYzAuNC0wLjYsMC40LTEuNCwwLTIuMWMtMC40LTAuNi0xLjEtMS0xLjgtMUM2MS45LDEyLjEsNTcuMywxMiw1Mi40LDEyTDUyLjQsMTJ6IE0yNCw0NmMtMC41LDAtMS4xLDAuMi0xLjQsMC42TDkuMiw2MC41IGMtMC42LDAuNi0wLjcsMS40LTAuNCwyLjJjMC4zLDAuNywxLDEuMiwxLjgsMS4yaDNsLTYuNSw2LjhjLTAuNiwwLjYtMC43LDEuNC0wLjQsMi4yczEsMS4yLDEuOCwxLjJIMTNsLTguNSw4LjYgQzQsODMuMiwzLjgsODQsNC4yLDg0LjhDNC41LDg1LjUsNS4yLDg2LDYsODZoMTZ2NS40YzAsMC43LDAuNCwxLjQsMSwxLjhjMC42LDAuNCwxLjQsMC40LDIsMGMwLjYtMC40LDEtMSwxLTEuOFY4NmgxNiBjMC44LDAsMS41LTAuNSwxLjgtMS4yYzAuMy0wLjcsMC4xLTEuNi0wLjQtMi4yTDM1LDc0aDQuNGMwLjgsMCwxLjUtMC41LDEuOC0xLjJzMC4yLTEuNi0wLjQtMi4ybC02LjUtNi44aDMgYzAuOCwwLDEuNS0wLjUsMS44LTEuMmMwLjMtMC43LDAuMi0xLjYtMC40LTIuMkwyNS40LDQ2LjZDMjUuMSw0Ni4yLDI0LjUsNDYsMjQsNDZMMjQsNDZ6IE0yNCw1MC45bDguNyw5aC0zIGMtMC44LDAtMS41LDAuNS0xLjgsMS4ycy0wLjIsMS42LDAuNCwyLjJsNi41LDYuOGgtNC41Yy0wLjgsMC0xLjUsMC41LTEuOCwxLjJjLTAuMywwLjctMC4xLDEuNiwwLjQsMi4ybDguNSw4LjZIMTAuOGw4LjUtOC42IGMwLjYtMC42LDAuNy0xLjQsMC40LTIuMmMtMC4zLTAuNy0xLTEuMi0xLjgtMS4yaC00LjVsNi41LTYuOGMwLjYtMC42LDAuNy0xLjQsMC40LTIuMmMtMC4zLTAuNy0xLTEuMi0xLjgtMS4yaC0zTDI0LDUwLjl6XCIvPic7XHJcblxyXG5leHBvcnQgY29uc3QgRFVDS19JQ09OID0gXCJCQy1kdWNrLWljb25cIjtcclxuZXhwb3J0IGNvbnN0IERVQ0tfSUNPTl9TVkcgPVxyXG4gICc8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgZD1cIk03MiwzMWMwLTEuNS0xLjItMi44LTIuOC0yLjhjLTEuNSwwLTIuOCwxLjItMi44LDIuOHMxLjIsMi44LDIuOCwyLjhDNzAuOCwzMy44LDcyLDMyLjYsNzIsMzF6IE04MC40LDQ3LjdjMTAuNywwLDE5LjQtOC43LDE5LjQtMTkuNEg4OC40Yy0wLjEtMC42LTAuMS0xLjEtMC4yLTEuN2MtMS42LTcuMS03LjMtMTIuOC0xNC4zLTE0NGMtMS42LTAuNC0zLjEtMC41LTQuNi0wLjVjLTEwLjcsMC0xOS40LDguNy0xOS40LDE5LjR2MTMuOWgtOS40Yy02LjgsMC0xMy42LTIuNC0xOC4yLTcuM2MtMC43LTAuNy0xLjYtMS4xLTIuNC0xMWMtMS43LDAtMy4zLDEuMy0zLjMsMy4zYzAsMTYuNCwxMi41LDMxLDI4LjYsMzIuNmMxLjYsMC4yLDMuMS0xLjEsMy4xLTIuOHYtMi44YzAtMS40LTEtMi42LTIuNC0yLjdjLTcuOS0wOS0xNC44LTYuMi0xOC40LTEzLjVjNC4xLDEuNiw4LjUsMi41LDEzLjEsMi41bDE3LjcsMC4xVjMxYzAtNi4xLDUtMTEuMSwxMS4xLTExLjFjMC45LDAsMS44LDAuMSwyLjcsMC4zYzMuOSwwLjksNy4yLDQuMiw4LjEsOC4xQzgxNCwzNC40LDc4LDM5LjEsNzQsNDFsLTQuNywyLjN2MTIuNGwyLjEsMi40YzEuNSwxLjgsMy40LDQuNywzLjUsOC44YzAuMSwzLjQtMS4zLDYuNy0zLjksOS40Yy0zLDMtNyw0LjgtMTEuMiw0LjhINDMuOWMtMSwwLTIuMS0wMS0zLjItMC4yQzI1LjIsNzkuNSwxMi4zLDY4LjEsOC43LDUzLjJoNS4xYy0xLjItMi43LTItNS41LTIuNS04LjNINS40Yy0zLjMsMC02LDMtNS41LDYuM2MyLjksMjAuMywxOS40LDM2LjEsNDAsMzhjMS4zLDAuMSwyLjYsMDIsNCwwLjJoMTUuOGMxMi41LDAsMjMuNy0xMC4yLDIzLjQtMjIuN2MtMC4xLTUuNC0yLjItMTAuMy01LjYtMTQuMXYtNC45SDgwLjRMODAuNCw0Ny43elwiLz4nO1xyXG5cclxuZXhwb3J0IGNvbnN0IHNwbGl0TGlua3NSZWdleCA9IG5ldyBSZWdFeHAoL1xcW1xcWyguKz8pXFxdXFxdL2cpO1xyXG5leHBvcnQgY29uc3QgZHJvcEhlYWRlck9yQWxpYXMgPSBuZXcgUmVnRXhwKC9cXFtcXFsoW14jfF0rKVxcXVxcXS8pO1xyXG5cclxuLyoqIEEgbWV0YS1yZWdleCB0aGF0IHRha2VzIGluIGEgc3RyaW5nIG9mIHRoZSBmb3JtIGAvcmVnZXgvZmxhZ3NgLCBhbmQgcmV0dXJucyAyIGdyb3VwcywgdGhlIGlubmVyIGByZWdleGAsIGFuZCB0aGUgYGZsYWdzYC4gKi9cclxuZXhwb3J0IGNvbnN0IHJlZ05GbGFncyA9IG5ldyBSZWdFeHAoL14uKC4qPylcXFcoXFx3KikkLyk7XHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IFRSQUlMX0xFTkdUSFMgPSBbXHJcbiAgJ1Nob3J0ZXN0JyxcclxuICAnTG9uZ2VzdCcsXHJcbiAgJ0FsbCdcclxuXVxyXG5cclxuZXhwb3J0IGNvbnN0IFZJU1RZUEVTID0gW1xyXG4gIFwiRm9yY2UgRGlyZWN0ZWQgR3JhcGhcIixcclxuICBcIlRpZHkgVHJlZVwiLFxyXG4gIFwiQ2lyY2xlIFBhY2tpbmdcIixcclxuICBcIkVkZ2UgQnVuZGxpbmdcIixcclxuICBcIkFyYyBEaWFncmFtXCIsXHJcbiAgXCJTdW5idXJzdFwiLFxyXG4gIFwiVHJlZSBNYXBcIixcclxuICBcIkljaWNsZVwiLFxyXG4gIFwiUmFkaWFsIFRyZWVcIixcclxuXSBhcyBjb25zdDtcclxuXHJcbi8qIEFsbCA1IHBvc3NpYmxlIGRpcmVjdGlvbnMuICovXHJcbmV4cG9ydCBjb25zdCBESVJFQ1RJT05TID0gW1widXBcIiwgXCJzYW1lXCIsIFwiZG93blwiLCBcIm5leHRcIiwgXCJwcmV2XCJdIGFzIGNvbnN0O1xyXG5cclxuLyoqXHJcbiAqIEFuIGFycm93IGZvciBlYWNoIHtAbGluayBESVJFQ1RJT05TfSB2YWx1ZS5cclxuICovXHJcbmV4cG9ydCBjb25zdCBBUlJPV19ESVJFQ1RJT05TOiB7IFtkaXIgaW4gRGlyZWN0aW9uc106IHN0cmluZyB9ID0ge1xyXG4gIHVwOiBcIlx1MjE5MVwiLFxyXG4gIHNhbWU6IFwiXHUyMTk0XCIsXHJcbiAgZG93bjogXCJcdTIxOTNcIixcclxuICBuZXh0OiBcIlx1MjE5MlwiLFxyXG4gIHByZXY6IFwiXHUyMTkwXCIsXHJcbn07XHJcbmV4cG9ydCBjb25zdCBSRUxBVElPTlMgPSBbXCJQYXJlbnRcIiwgXCJTaWJsaW5nXCIsIFwiQ2hpbGRcIl0gYXMgY29uc3Q7XHJcbmV4cG9ydCBjb25zdCBSRUFsQ0xPU0VEID0gW1wiUmVhbFwiLCBcIkNsb3NlZFwiXTtcclxuZXhwb3J0IGNvbnN0IEFMTFVOTElOS0VEID0gW1wiQWxsXCIsIFwiTm8gVW5saW5rZWRcIl07XHJcbmV4cG9ydCBjb25zdCBDT0RFQkxPQ0tfVFlQRVMgPSBbXCJ0cmVlXCIsIFwianVnZ2xcIl07XHJcbmV4cG9ydCBjb25zdCBDT0RFQkxPQ0tfRklFTERTID0gW1xyXG4gIFwidHlwZVwiLFxyXG4gIFwiZGlyXCIsXHJcbiAgXCJmaWVsZHNcIixcclxuICBcImRlcHRoXCIsXHJcbiAgXCJ0aXRsZVwiLFxyXG4gIFwiZmxhdFwiLFxyXG4gIFwiY29udGVudFwiLFxyXG4gIFwiZnJvbVwiLFxyXG4gIFwiaW1wbGllZFwiLFxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IEpVR0dMX0NCX0RFRkFVTFRTOiBJSnVnZ2xTZXR0aW5ncyA9IHtcclxuICAvLyBAdHMtaWdub3JlXHJcbiAgYW5pbWF0ZUxheW91dDogdHJ1ZSxcclxuICBhdXRvQWRkTm9kZXM6IGZhbHNlLFxyXG4gIGF1dG9FeHBhbmQ6IGZhbHNlLFxyXG4gIGF1dG9ab29tOiBmYWxzZSxcclxuICBjb3JlU3RvcmU6IFwiY29yZVwiLFxyXG4gIGV4cGFuZEluaXRpYWw6IGZhbHNlLFxyXG4gIGZkZ2RMYXlvdXQ6IFwiZDMtZm9yY2VcIixcclxuICBmaWx0ZXI6IFwiXCIsXHJcbiAgaGVpZ2h0OiBcIjc1MHB4XCIsXHJcbiAgaG92ZXJFZGdlczogZmFsc2UsXHJcbiAgbGF5b3V0OiBcImZvcmNlLWRpcmVjdGVkXCIsXHJcbiAgbGltaXQ6IDI1MCxcclxuICBtZXJnZUVkZ2VzOiB0cnVlLFxyXG4gIG1ldGFLZXlIb3ZlcjogdHJ1ZSxcclxuICBtb2RlOiBcIndvcmtzcGFjZVwiLFxyXG4gIG5hdmlnYXRvcjogdHJ1ZSxcclxuICBvcGVuV2l0aFNoaWZ0OiBmYWxzZSxcclxuICByZWFkQ29udGVudDogdHJ1ZSxcclxuICBzdHlsZUdyb3VwczogW10sXHJcbiAgdG9vbGJhcjogdHJ1ZSxcclxuICB3aWR0aDogXCIxMDAlXCIsXHJcbiAgem9vbVNwZWVkOiAxLFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IEpVR0dMX1RSQUlMX0RFRkFVTFRTOiBJSnVnZ2xTZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oXHJcbiAgSlVHR0xfQ0JfREVGQVVMVFMsXHJcbiAge1xyXG4gICAgYW5pbWF0ZUxheW91dDogdHJ1ZSxcclxuICAgIGF1dG9ab29tOiBmYWxzZSxcclxuICAgIGZkZ2RMYXlvdXQ6IFwiZDMtZm9yY2VcIixcclxuICAgIGhlaWdodDogXCIzMDBweFwiLFxyXG4gICAgcmVhZENvbnRlbnQ6IGZhbHNlLFxyXG4gICAgdG9vbGJhcjogZmFsc2UsXHJcbiAgICBuYXZpZ2F0b3I6IGZhbHNlLFxyXG4gIH1cclxuKTtcclxuQ09ERUJMT0NLX0ZJRUxEUy5wdXNoKC4uLk9iamVjdC5rZXlzKEpVR0dMX0NCX0RFRkFVTFRTKSk7XHJcblxyXG5leHBvcnQgY29uc3QgYmxhbmtVc2VySGllciA9ICgpOiBVc2VySGllciA9PiB7XHJcbiAgcmV0dXJuIHsgdXA6IFtdLCBzYW1lOiBbXSwgZG93bjogW10sIG5leHQ6IFtdLCBwcmV2OiBbXSB9O1xyXG59O1xyXG5leHBvcnQgY29uc3QgYmxhbmtEaXJPYmpzID0gKCk6IHsgW2RpciBpbiBEaXJlY3Rpb25zXToge30gfSA9PiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIHVwOiB7fSxcclxuICAgIHNhbWU6IHt9LFxyXG4gICAgZG93bjoge30sXHJcbiAgICBuZXh0OiB7fSxcclxuICAgIHByZXY6IHt9LFxyXG4gIH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYmxhbmtSZWFsTkltcGxpZWQgPSAoKTogUmVhbE5JbXBsaWVkID0+IHtcclxuICByZXR1cm4ge1xyXG4gICAgdXA6IHsgcmVhbHM6IFtdLCBpbXBsaWVkczogW10gfSxcclxuICAgIGRvd246IHsgcmVhbHM6IFtdLCBpbXBsaWVkczogW10gfSxcclxuICAgIHNhbWU6IHsgcmVhbHM6IFtdLCBpbXBsaWVkczogW10gfSxcclxuICAgIG5leHQ6IHsgcmVhbHM6IFtdLCBpbXBsaWVkczogW10gfSxcclxuICAgIHByZXY6IHsgcmVhbHM6IFtdLCBpbXBsaWVkczogW10gfSxcclxuICB9O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IFtcclxuICBCQ19JX0FVTlQsXHJcbiAgQkNfSV9DT1VTSU4sXHJcbiAgQkNfSV9TSUJMSU5HXzEsXHJcbiAgQkNfSV9TSUJMSU5HXzIsXHJcbiAgQkNfSV9SRUZMRVhJVkUsXHJcbiAgQkNfSV9QQVJFTlQsXHJcbl0gPSBbXHJcbiAgICBcIkJDLUF1bnRcIixcclxuICAgIFwiQkMtQ291c2luXCIsXHJcbiAgICBcIkJDLVNpYmxpbmctMVwiLFxyXG4gICAgXCJCQy1TaWJsaW5nLTJcIixcclxuICAgIFwiQkMtUmVmbGV4aXZlXCIsXHJcbiAgICBcIkJDLVBhcmVudFwiLFxyXG4gIF07XHJcblxyXG5leHBvcnQgY29uc3QgW1xyXG4gIEJDX0ZPTERFUl9OT1RFLFxyXG4gIEJDX0ZPTERFUl9OT1RFX1NVQkZPTERFUlMsXHJcbiAgQkNfRk9MREVSX05PVEVfUkVDVVJTSVZFLFxyXG4gIEJDX1RBR19OT1RFLFxyXG4gIEJDX1RBR19OT1RFX0ZJRUxELFxyXG4gIEJDX1RBR19OT1RFX0VYQUNULFxyXG4gIEJDX0xJTktfTk9URSxcclxuICBCQ19UUkFWRVJTRV9OT1RFLFxyXG4gIEJDX1JFR0VYX05PVEUsXHJcbiAgQkNfUkVHRVhfTk9URV9GSUVMRCxcclxuICBCQ19EVl9OT1RFLFxyXG4gIEJDX0RWX05PVEVfRklFTEQsXHJcbiAgQkNfSUdOT1JFLFxyXG4gIEJDX0lHTk9SRV9ERU5EUk9OLFxyXG4gIEJDX0hJREVfVFJBSUwsXHJcbiAgQkNfT1JERVIsXHJcbl0gPSBbXHJcbiAgICBcIkJDLWZvbGRlci1ub3RlXCIsXHJcbiAgICBcIkJDLWZvbGRlci1ub3RlLXN1YmZvbGRlcnNcIixcclxuICAgIFwiQkMtZm9sZGVyLW5vdGUtcmVjdXJzaXZlXCIsXHJcbiAgICBcIkJDLXRhZy1ub3RlXCIsXHJcbiAgICBcIkJDLXRhZy1ub3RlLWZpZWxkXCIsXHJcbiAgICBcIkJDLXRhZy1ub3RlLWV4YWN0XCIsXHJcbiAgICBcIkJDLWxpbmstbm90ZVwiLFxyXG4gICAgXCJCQy10cmF2ZXJzZS1ub3RlXCIsXHJcbiAgICBcIkJDLXJlZ2V4LW5vdGVcIixcclxuICAgIFwiQkMtcmVnZXgtbm90ZS1maWVsZFwiLFxyXG4gICAgXCJCQy1kYXRhdmlldy1ub3RlXCIsXHJcbiAgICBcIkJDLWRhdGF2aWV3LW5vdGUtZmllbGRcIixcclxuICAgIFwiQkMtaWdub3JlXCIsXHJcbiAgICBcIkJDLWlnbm9yZS1kZW5kcm9uXCIsXHJcbiAgICBcIkJDLWhpZGUtdHJhaWxcIixcclxuICAgIFwiQkMtb3JkZXJcIixcclxuICBdO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJDX0ZJRUxEU19JTkZPID0gW1xyXG4gIHtcclxuICAgIGZpZWxkOiBCQ19GT0xERVJfTk9URSxcclxuICAgIGRlc2M6IFwiU2V0IHRoaXMgbm90ZSBhcyBhIEJyZWFkY3J1bWJzIGZvbGRlci1ub3RlLiBBbGwgb3RoZXIgbm90ZXMgaW4gdGhpcyBmb2xkZXIgd2lsbCBiZSBhZGRlZCB0byB0aGUgZ3JhcGggd2l0aCB0aGUgZmllbGQgbmFtZSBzcGVjaWZpZWQgaW4gdGhpcyBrZXkncyB2YWx1ZVwiLFxyXG4gICAgYWZ0ZXJZYW1sOiBcIjogXCIsXHJcbiAgICBhZnRlcklubGluZTogXCI6OiBcIixcclxuICAgIGFsdDogdHJ1ZSxcclxuICB9LFxyXG4gIHtcclxuICAgIGZpZWxkOiBCQ19GT0xERVJfTk9URV9TVUJGT0xERVJTLFxyXG4gICAgZGVzYzogXCJMaW5rIHRvIG5vdGVzIGluIHN1YmZvbGRlcnMgd2l0aCB0aGUgZ2l2ZW4gZmllbGQuXCIsXHJcbiAgICBhZnRlcllhbWw6IFwiOiBcIixcclxuICAgIGFmdGVySW5saW5lOiBcIjo6IFwiLFxyXG4gICAgYWx0OiBmYWxzZSxcclxuICB9LFxyXG4gIHtcclxuICAgIGZpZWxkOiBCQ19GT0xERVJfTk9URV9SRUNVUlNJVkUsXHJcbiAgICBkZXNjOiBcIlJlY3Vyc2l2ZWx5IGFkZCBub3RlcyBpbiBzdWJmb2xkZXJzIHRvIHRoZSBmb2xkZXJub3RlIG9mIF90aGF0XyBzdWJmb2xkZXIuXCIsXHJcbiAgICBhZnRlcllhbWw6IFwiOiB0cnVlXCIsXHJcbiAgICBhZnRlcklubGluZTogXCI6OiB0cnVlXCIsXHJcbiAgICBhbHQ6IGZhbHNlLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgZmllbGQ6IEJDX1RBR19OT1RFLFxyXG4gICAgZGVzYzogXCJTZXQgdGhpcyBub3RlIGFzIGEgQnJlYWRjcnVtYnMgdGFnLW5vdGUuIEFsbCBvdGhlciBub3RlcyB3aXRoIHRoaXMgdGFnIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGdyYXBoIHVzaW5nIHRoZSBkZWZhdWx0IGZpZWxkTmFtZSBzcGVjaWZpZWQgaW4gYFNldHRpbmdzID4gQWx0ZXJuYXRpdmUgSGllcmFyY2hpZXMgPiBUYWcgTm90ZXMgPiBEZWZhdWx0IEZpZWxkYCwgb3IgdXNpbmcgdGhlIGZpZWxkTmFtZSB5b3Ugc3BlY2lmeSB3aXRoIGBCQy10YWctbm90ZS1maWVsZDogZmllbGROYW1lYFwiLFxyXG4gICAgYWZ0ZXJZYW1sOiBcIjogJyNcIixcclxuICAgIGFmdGVySW5saW5lOiBcIjo6ICNcIixcclxuICAgIGFsdDogdHJ1ZSxcclxuICB9LFxyXG4gIHtcclxuICAgIGZpZWxkOiBCQ19UQUdfTk9URV9GSUVMRCxcclxuICAgIGRlc2M6IFwiTWFudWFsbHkgY2hvb3NlIHRoZSBmaWVsZCBmb3IgdGhpcyB0YWctbm90ZSB0byB1c2VcIixcclxuICAgIGFmdGVyWWFtbDogXCI6IFwiLFxyXG4gICAgYWZ0ZXJJbmxpbmU6IFwiOjogXCIsXHJcbiAgICBhbHQ6IGZhbHNlLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgZmllbGQ6IEJDX1RBR19OT1RFX0VYQUNULFxyXG4gICAgZGVzYzogXCJPbmx5IGxvb2sgZm9yIG5vdGVzIHdpdGggdGhlIGV4YWN0IHRhZy4gaS5lLiBgI0FgIHdvbid0IG1hdGNoIGAjQS9CYFwiLFxyXG4gICAgYWZ0ZXJZYW1sOiBcIjogdHJ1ZVwiLFxyXG4gICAgYWZ0ZXJJbmxpbmU6IFwiOjogdHJ1ZVwiLFxyXG4gICAgYWx0OiBmYWxzZSxcclxuICB9LFxyXG4gIHtcclxuICAgIGZpZWxkOiBCQ19MSU5LX05PVEUsXHJcbiAgICBkZXNjOiBcIlNldCB0aGlzIG5vdGUgYXMgYSBCcmVhZGNydW1icyBsaW5rLW5vdGUuIEFsbCBsaW5rcyBsZWF2aW5nIHRoaXMgbm90ZSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBncmFwaCB3aXRoIHRoZSBmaWVsZCBuYW1lIHNwZWNpZmllZCBpbiB0aGlzIGtleSdzIHZhbHVlLlwiLFxyXG4gICAgYWZ0ZXJZYW1sOiBcIjogXCIsXHJcbiAgICBhZnRlcklubGluZTogXCI6OiBcIixcclxuICAgIGFsdDogdHJ1ZSxcclxuICB9LFxyXG4gIHtcclxuICAgIGZpZWxkOiBCQ19UUkFWRVJTRV9OT1RFLFxyXG4gICAgZGVzYzogXCJTZXQgdGhpcyBub3RlIGFzIGEgQnJlYWRjcnVtYnMgdHJhdmVyc2Utbm90ZS4gU3RhcnRpbmcgZnJvbSB0aGlzIG5vdGUsIHRoZSBPYnNpZGlhbiBncmFwaCB3aWxsIGJlIHRyYXZlcnNlZCBpbiBkZXB0aC1maXJzdCBvcmRlciwgYW5kIGFsbCBub3RlcyBhbG9uZyB0aGUgd2F5IHdpbGwgYmUgYWRkZWQgdG8gdGhlIEJDIGdyYXBoIHVzaW5nIHRoZSBmaWVsZE5hbWUgeW91IHNwZWNpZnlcIixcclxuICAgIGFmdGVyWWFtbDogXCI6IFwiLFxyXG4gICAgYWZ0ZXJJbmxpbmU6IFwiOjogXCIsXHJcbiAgICBhbHQ6IHRydWUsXHJcbiAgfSxcclxuICB7XHJcbiAgICBmaWVsZDogQkNfUkVHRVhfTk9URSxcclxuICAgIGRlc2M6IFwiU2V0IHRoaXMgbm90ZSBhcyBhIEJyZWFkY3J1bWJzIHJlZ2V4LW5vdGUuIFRoZSB2YWx1ZSBvZiB0aGlzIGZpZWxkIGlzIGEgcmVndWxhciBleHByZXNzaW9uIChvZiB0aGUgZm9ybSAnL3JlZ2V4L2ZsYWdzJykuIEFsbCBub3RlIG5hbWVzIHRoYXQgbWF0Y2ggdGhlIHJlZ2V4IHdpbGwgYmUgYWRkZWQgdG8gdGhlIEJDIGdyYXBoIHVzaW5nIHRoZSBkZWZhdWx0IGZpZWxkTmFtZSBzcGVjaWZpZWQgaW4gYFNldHRpbmdzID4gQWx0ZXJuYXRpdmUgSGllcmFyY2hpZXMgPiBSZWdleCBOb3RlcyA+IERlZmF1bHQgRmllbGRgLCBvciB1c2luZyB0aGUgZmllbGROYW1lIHlvdSBzcGVjaWZ5IGluICdCQy1yZWdleC1ub3RlLWZpZWxkJy5cIixcclxuICAgIGFmdGVyWWFtbDogXCI6ICcvXCIsXHJcbiAgICBhZnRlcklubGluZTogXCI6OiAvXCIsXHJcbiAgICBhbHQ6IHRydWUsXHJcbiAgfSxcclxuICB7XHJcbiAgICBmaWVsZDogQkNfUkVHRVhfTk9URV9GSUVMRCxcclxuICAgIGRlc2M6IFwiTWFudWFsbHkgY2hvb3NlIHRoZSBmaWVsZCBmb3IgdGhpcyByZWdleC1ub3RlIHRvIHVzZVwiLFxyXG4gICAgYWZ0ZXJZYW1sOiBcIjogXCIsXHJcbiAgICBhZnRlcklubGluZTogXCI6OiBcIixcclxuICAgIGFsdDogZmFsc2UsXHJcbiAgfSxcclxuICB7XHJcbiAgICBmaWVsZDogQkNfRFZfTk9URSxcclxuICAgIGRlc2M6IFwiU2V0IHRoaXMgbm90ZSBhcyBhIEJyZWFkY3J1bWJzIERhdGF2aWV3LW5vdGUuIFRoZSB2YWx1ZSBvZiB0aGlzIGZpZWxkIGlzIGEgRGF0YXZpZXcgYGZyb21gIHF1ZXJ5LiBBbGwgbm90ZXMgdGhhdCBtYXRjaCB0aGUgcXVlcnkgd2lsbCBiZSBhZGRlZCB0byB0aGUgQkMgZ3JhcGggdXNpbmcgdGhlIGRlZmF1bHQgZmllbGROYW1lIHNwZWNpZmllZCBpbiBgU2V0dGluZ3MgPiBBbHRlcm5hdGl2ZSBIaWVyYXJjaGllcyA+IERhdGF2aWV3IE5vdGVzID4gRGVmYXVsdCBGaWVsZGAsIG9yIHVzaW5nIHRoZSBmaWVsZE5hbWUgeW91IHNwZWNpZnkgaW4gJ0JDLWRhdGF2aWV3LW5vdGUtZmllbGQnLlwiLFxyXG4gICAgYWZ0ZXJZYW1sOiBcIjogJ1wiLFxyXG4gICAgYWZ0ZXJJbmxpbmU6IFwiOjogXCIsXHJcbiAgICBhbHQ6IHRydWUsXHJcbiAgfSxcclxuICB7XHJcbiAgICBmaWVsZDogQkNfRFZfTk9URV9GSUVMRCxcclxuICAgIGRlc2M6IFwiTWFudWFsbHkgY2hvb3NlIHRoZSBmaWVsZCBmb3IgdGhpcyBEYXRhdmlldy1ub3RlIHRvIHVzZVwiLFxyXG4gICAgYWZ0ZXJZYW1sOiBcIjogXCIsXHJcbiAgICBhZnRlcklubGluZTogXCI6OiBcIixcclxuICAgIGFsdDogZmFsc2UsXHJcbiAgfSxcclxuICB7XHJcbiAgICBmaWVsZDogQkNfSUdOT1JFLFxyXG4gICAgZGVzYzogXCJUZWxscyBCcmVhZGNydW1icyB0byBpZ25vcmUgYSBub3RlIGZyb20gaXRzIGluZGV4IGVudGlyZWx5LiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byB1c2UgQnJlYWRjcnVtYnMgdG8gaW5kZXggbm90ZXMsIGJ1dCB5b3UgZG9uJ3Qgd2FudCB0byBzaG93IHRoZW0gaW4gdGhlIGdyYXBoLlwiLFxyXG4gICAgYWZ0ZXJZYW1sOiBcIjogdHJ1ZVwiLFxyXG4gICAgYWZ0ZXJJbmxpbmU6IFwiOjogdHJ1ZVwiLFxyXG4gICAgYWx0OiBmYWxzZSxcclxuICB9LFxyXG4gIHtcclxuICAgIGZpZWxkOiBCQ19JR05PUkVfREVORFJPTixcclxuICAgIGRlc2M6IFwiVGVsbHMgQnJlYWRjcnVtYnMgdG8gbm90IHRyZWF0IHRoaXMgbm90ZSBhcyBhIGRlbmRyb24gbm90ZSAob25seSB1c2VmdWwgaWYgdGhlIG5vdGUgbmFtZSBoYXMgeW91IGRlbmRyb24gc3BsaXR0ZXIgaW4gaXQsIHVzdWFsbHkgYSBwZXJpb2QgYC5gKS5cIixcclxuICAgIGFmdGVyWWFtbDogXCI6IHRydWVcIixcclxuICAgIGFmdGVySW5saW5lOiBcIjo6IHRydWVcIixcclxuICAgIGFsdDogZmFsc2UsXHJcbiAgfSxcclxuICB7XHJcbiAgICBmaWVsZDogQkNfSElERV9UUkFJTCxcclxuICAgIGRlc2M6IFwiRG9uJ3Qgc2hvdyB0aGUgdHJhaWwgaW4gdGhpcyBub3RlXCIsXHJcbiAgICBhZnRlcllhbWw6IFwiOiB0cnVlXCIsXHJcbiAgICBhZnRlcklubGluZTogXCI6OiB0cnVlXCIsXHJcbiAgICBhbHQ6IGZhbHNlLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgZmllbGQ6IEJDX09SREVSLFxyXG4gICAgZGVzYzogXCJTZXQgdGhlIG9yZGVyIG9mIHRoaXMgbm90ZSBpbiB0aGUgTWF0cml4IHZpZXcuIEEgbG93ZXIgdmFsdWUgcGxhY2VzIHRoaXMgbm90ZSBoaWdoZXIgaW4gdGhlIG9yZGVyLlwiLFxyXG4gICAgYWZ0ZXJZYW1sOiBcIjogXCIsXHJcbiAgICBhZnRlcklubGluZTogXCI6OiBcIixcclxuICAgIGFsdDogZmFsc2UsXHJcbiAgfSxcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBCQ19BTFRTID0gQkNfRklFTERTX0lORk8uZmlsdGVyKChmKSA9PiBmLmFsdCkubWFwKChmKSA9PiBmLmZpZWxkKTtcclxuXHJcbmV4cG9ydCBjb25zdCBJTExFR0FMX0ZJTEVOQU1FX0NIQVJTID0gW1xyXG4gIFwiXFxcXFwiLFxyXG4gIFwiL1wiLFxyXG4gIFwiOlwiLFxyXG4gIFwiKlwiLFxyXG4gIFwiP1wiLFxyXG4gICdcIicsXHJcbiAgXCI8XCIsXHJcbiAgXCI+XCIsXHJcbiAgXCJ8XCIsXHJcbl07XHJcblxyXG5leHBvcnQgY29uc3QgREFUQVZJRVdfTUlTU0lORyA9XHJcbiAgXCJUaGUgRGF0YXZpZXcgcGx1Z2luIG11c3QgYmUgaW5zdGFsbGVkIGZvciB0aGlzIHRvIHdvcmtcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBBUElfTkFNRSA9IFwiQkNBUElcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFVFRJTkdTOiBCQ1NldHRpbmdzID0ge1xyXG4gIGFkZERlbmRyb25Ob3RlczogZmFsc2UsXHJcbiAgYWRkRGF0ZU5vdGVzOiBmYWxzZSxcclxuICBhbGlhc2VzSW5JbmRleDogZmFsc2UsXHJcbiAgYWxwaGFTb3J0QXNjOiB0cnVlLFxyXG4gIGFsdExpbmtGaWVsZHM6IFtdLFxyXG4gIENTVlBhdGhzOiBcIlwiLFxyXG4gIGNyZWF0ZUluZGV4SW5kZW50OiAnICAnLFxyXG4gIGRhdGVGb3JtYXQ6IFwiWVlZWS1NTS1ERFwiLFxyXG4gIGRhdGVOb3RlRm9ybWF0OiBcInl5eXktTU0tZGRcIixcclxuICBkYXRlTm90ZUZpZWxkOiBcIm5leHRcIixcclxuICBkYXRhdmlld05vdGVGaWVsZDogXCJ1cFwiLFxyXG4gIGRhdGVOb3RlQWRkTW9udGg6IFwiXCIsXHJcbiAgZGF0ZU5vdGVBZGRZZWFyOiBcIlwiLFxyXG4gIGRlYnVnTW9kZTogXCJXQVJOXCIsXHJcbiAgZGVuZHJvbk5vdGVEZWxpbWl0ZXI6IFwiLlwiLFxyXG4gIGRlbmRyb25Ob3RlRmllbGQ6IFwidXBcIixcclxuICBkdldhaXRUaW1lOiA1MDAwLFxyXG4gIGVuYWJsZUFscGhhU29ydDogdHJ1ZSxcclxuICBlbmFibGVSZWxhdGlvblN1Z2dlc3RvcjogZmFsc2UsXHJcbiAgZmllbGRTdWdnZXN0b3I6IHRydWUsXHJcbiAgZmlsdGVySW1wbGllZFNpYmxpbmdzT2ZEaWZmZXJlbnRUeXBlczogZmFsc2UsXHJcbiAganVnZ2xMYXlvdXQ6IFwiaGllcmFyY2h5XCIsXHJcbiAgbGltaXRXcml0ZUJDQ2hlY2tib3hlczogW10sXHJcbiAgQ0hFQ0tCT1hfU1RBVEVTX09WRVJXUklUVEVOOiBmYWxzZSxcclxuICBncmlkRGVmYXVsdERlcHRoOiAyNSxcclxuICBoaWVyYXJjaHlOb3RlczogW1wiXCJdLFxyXG4gIGhpZXJhcmNoeU5vdGVJc1BhcmVudDogZmFsc2UsXHJcbiAgSE5VcEZpZWxkOiBcIlwiLFxyXG4gIGluZGV4Tm90ZXM6IFtcIlwiXSxcclxuICBuYW1pbmdTeXN0ZW1GaWVsZDogXCJcIixcclxuICBuYW1pbmdTeXN0ZW1SZWdleDogXCJcIixcclxuICBuYW1pbmdTeXN0ZW1TcGxpdDogXCIuXCIsXHJcbiAgbmFtaW5nU3lzdGVtRW5kc1dpdGhEZWxpbWl0ZXI6IGZhbHNlLFxyXG4gIHJlZnJlc2hPbk5vdGVDaGFuZ2U6IGZhbHNlLFxyXG4gIHVzZUFsbE1ldGFkYXRhOiB0cnVlLFxyXG4gIG9wZW5NYXRyaXhPbkxvYWQ6IHRydWUsXHJcbiAgb3BlbkR1Y2tPbkxvYWQ6IGZhbHNlLFxyXG4gIG9wZW5Eb3duT25Mb2FkOiB0cnVlLFxyXG4gIHBhcnNlSnVnZ2xMaW5rc1dpdGhvdXRKdWdnbDogZmFsc2UsXHJcbiAgc2hvd05hbWVPclR5cGU6IHRydWUsXHJcbiAgc2hvd1JlbGF0aW9uVHlwZTogdHJ1ZSxcclxuICByZWdleE5vdGVGaWVsZDogXCJcIixcclxuICByZWxTdWdnZXN0b3JUcmlnZ2VyOiBcIlxcXFxcIixcclxuICBybExlYWY6IHRydWUsXHJcbiAgc2hvd0FsbFBhdGhzSWZOb25lVG9JbmRleE5vdGU6IGZhbHNlLFxyXG4gIHNob3dBbGxBbGlhc2VzOiB0cnVlLFxyXG4gIHNob3dCQ3M6IHRydWUsXHJcbiAgc2hvd0JDc0luRWRpdExQTW9kZTogZmFsc2UsXHJcbiAgc2hvd1JlZnJlc2hOb3RpY2U6IHRydWUsXHJcbiAgc2hvd0ltcGxpZWRSZWxhdGlvbnM6IHRydWUsXHJcbiAgc2hvd1RyYWlsOiB0cnVlLFxyXG4gIHNob3dHcmlkOiB0cnVlLFxyXG4gIHNob3dKdWdnbDogZmFsc2UsXHJcbiAgc2hvd1ByZXZOZXh0OiB0cnVlLFxyXG4gIHNvcnRCeU5hbWVTaG93QWxpYXM6IGZhbHNlLFxyXG4gIHNxdWFyZURpcmVjdGlvbnNPcmRlcjogWzAsIDEsIDIsIDMsIDRdLFxyXG4gIGxpbWl0VHJhaWxDaGVja2JveGVzOiBbXSxcclxuICBsaW1pdEp1bXBUb0ZpcnN0RmllbGRzOiBbXSxcclxuICBzaG93QWxsOiAnQWxsJyxcclxuICBub1BhdGhNZXNzYWdlOiBgVGhpcyBub3RlIGhhcyBubyByZWFsIG9yIGltcGxpZWQgcGFyZW50c2AsXHJcbiAgdGFnTm90ZUZpZWxkOiBcIlwiLFxyXG4gIHRocmVhZEludG9OZXdQYW5lOiBmYWxzZSxcclxuICB0aHJlYWRpbmdUZW1wbGF0ZTogXCJ7e2ZpZWxkfX0gb2Yge3tjdXJyZW50fX1cIixcclxuICB0aHJlYWRpbmdEaXJUZW1wbGF0ZXM6IHsgdXA6IFwiXCIsIHNhbWU6IFwiXCIsIGRvd246IFwiXCIsIG5leHQ6IFwiXCIsIHByZXY6IFwiXCIgfSxcclxuICB0aHJlYWRVbmRlckN1cnNvcjogZmFsc2UsXHJcbiAgdHJhaWxTZXBlcmF0b3I6IFwiXHUyMTkyXCIsXHJcbiAgdHJlYXRDdXJyTm9kZUFzSW1wbGllZFNpYmxpbmc6IGZhbHNlLFxyXG4gIHRyaW1EZW5kcm9uTm90ZXM6IGZhbHNlLFxyXG4gIHJlc3BlY3RSZWFkYWJsZUxpbmVMZW5ndGg6IHRydWUsXHJcbiAgdXNlckhpZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHVwOiBbXCJ1cFwiXSxcclxuICAgICAgc2FtZTogW1wic2FtZVwiXSxcclxuICAgICAgZG93bjogW1wiZG93blwiXSxcclxuICAgICAgbmV4dDogW1wibmV4dFwiXSxcclxuICAgICAgcHJldjogW1wicHJldlwiXSxcclxuICAgIH0sXHJcbiAgXSxcclxuICB3cml0ZUJDc0lubGluZTogZmFsc2UsXHJcbiAgc2hvd1dyaXRlQWxsQkNzQ21kOiBmYWxzZSxcclxuICB2aXNHcmFwaDogXCJGb3JjZSBEaXJlY3RlZCBHcmFwaFwiLFxyXG4gIHZpc1JlbGF0aW9uOiBcIlBhcmVudFwiLFxyXG4gIHZpc0Nsb3NlZDogXCJSZWFsXCIsXHJcbiAgdmlzQWxsOiBcIkFsbFwiLFxyXG4gIHdpa2lsaW5rSW5kZXg6IHRydWUsXHJcbiAgaW1wbGllZFJlbGF0aW9uczoge1xyXG4gICAgc2libGluZ0lkZW50aXR5OiBmYWxzZSxcclxuICAgIHNhbWVQYXJlbnRJc1NpYmxpbmc6IHRydWUsXHJcbiAgICBzaWJsaW5nc1NpYmxpbmdJc1NpYmxpbmc6IGZhbHNlLFxyXG4gICAgc2libGluZ3NQYXJlbnRJc1BhcmVudDogZmFsc2UsXHJcbiAgICBwYXJlbnRzU2libGluZ3NJc1BhcmVudHM6IGZhbHNlLFxyXG4gICAgcGFyZW50c1BhcmVudHNJc1BhcmVudDogZmFsc2UsXHJcbiAgICBjb3VzaW5zSXNTaWJsaW5nOiBmYWxzZSxcclxuICB9LFxyXG4gIHJlZnJlc2hPbk5vdGVTYXZlOiBmYWxzZSxcclxuICBzaG93VXBJbkp1Z2dsOiBmYWxzZVxyXG59O1xyXG4iLCAiaW1wb3J0IHsgZXJyb3IsIGluZm8gfSBmcm9tIFwibG9nbGV2ZWxcIjtcclxuaW1wb3J0IHsgSXRlbVZpZXcsIFRGaWxlLCBXb3Jrc3BhY2VMZWFmIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IERlYnVnZ2VyIH0gZnJvbSBcInNyYy9EZWJ1Z2dlclwiO1xyXG5pbXBvcnQgTWF0cml4IGZyb20gXCIuLi9Db21wb25lbnRzL01hdHJpeC5zdmVsdGVcIjtcclxuaW1wb3J0IHtcclxuICBBUlJPV19ESVJFQ1RJT05TLFxyXG4gIGJsYW5rUmVhbE5JbXBsaWVkLFxyXG4gIE1BVFJJWF9WSUVXLFxyXG4gIFRSQUlMX0lDT04sXHJcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgdHlwZSB7XHJcbiAgRGlyZWN0aW9ucyxcclxuICBFZGdlQXR0cixcclxuICBpbnRlcm5hbExpbmtPYmosXHJcbiAgU3F1YXJlSXRlbSxcclxuICBTcXVhcmVQcm9wcyxcclxuICBVc2VySGllcixcclxufSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG5pbXBvcnQgeyBzcGxpdEFuZFRyaW0gfSBmcm9tIFwiLi4vVXRpbHMvZ2VuZXJhbFV0aWxzXCI7XHJcbmltcG9ydCB7IGdldE9wcERpciwgZ2V0T3BwRmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXREVkFwaSwgZ2V0Q3VyckZpbGUsIGxpbmtDbGFzcyB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWF0cml4TmVpZ2hib3VycyhwbHVnaW46IEJDUGx1Z2luLCBjdXJyTm9kZTogc3RyaW5nKSB7XHJcbiAgY29uc3QgeyBjbG9zZWRHLCBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgdXNlckhpZXJzIH0gPSBzZXR0aW5ncztcclxuICBjb25zdCBuZWlnaGJvdXJzID0gYmxhbmtSZWFsTkltcGxpZWQoKTtcclxuICBpZiAoIWNsb3NlZEcpIHJldHVybiBuZWlnaGJvdXJzO1xyXG5cclxuICBjbG9zZWRHLmZvckVhY2hFZGdlKGN1cnJOb2RlLCAoaywgYSwgcywgdCkgPT4ge1xyXG4gICAgY29uc3QgeyBmaWVsZCwgZGlyLCBpbXBsaWVkIH0gPSBhIGFzIEVkZ2VBdHRyO1xyXG5cclxuICAgIGlmIChzID09PSBjdXJyTm9kZSkge1xyXG4gICAgICBuZWlnaGJvdXJzW2Rpcl0ucmVhbHMucHVzaCh7IHRvOiB0LCBmaWVsZCwgaW1wbGllZCB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5laWdoYm91cnNbZ2V0T3BwRGlyKGRpcildLmltcGxpZWRzLnB1c2goe1xyXG4gICAgICAgIHRvOiBzLFxyXG4gICAgICAgIGZpZWxkOiBnZXRPcHBGaWVsZHModXNlckhpZXJzLCBmaWVsZCwgZGlyKVswXSxcclxuICAgICAgICBpbXBsaWVkLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIG5laWdoYm91cnM7XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWF0cml4VmlldyBleHRlbmRzIEl0ZW1WaWV3IHtcclxuICBwbHVnaW46IEJDUGx1Z2luO1xyXG4gIHByaXZhdGUgdmlldzogTWF0cml4O1xyXG4gIGRiOiBEZWJ1Z2dlcjtcclxuXHJcbiAgY29uc3RydWN0b3IobGVhZjogV29ya3NwYWNlTGVhZiwgcGx1Z2luOiBCQ1BsdWdpbikge1xyXG4gICAgc3VwZXIobGVhZik7XHJcbiAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcclxuICAgIHRoaXMuZGIgPSBuZXcgRGVidWdnZXIocGx1Z2luKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9ubG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHN1cGVyLm9ubG9hZCgpO1xyXG4gICAgY29uc3QgeyBwbHVnaW4gfSA9IHRoaXM7XHJcblxyXG4gICAgYXBwLndvcmtzcGFjZS5vbkxheW91dFJlYWR5KCgpID0+IHtcclxuICAgICAgc2V0VGltZW91dChcclxuICAgICAgICBhc3luYyAoKSA9PiBhd2FpdCB0aGlzLmRyYXcoKSxcclxuICAgICAgICBhcHAucGx1Z2lucy5wbHVnaW5zLmRhdGF2aWV3XHJcbiAgICAgICAgICA/IGFwcC5wbHVnaW5zLnBsdWdpbnMuZGF0YXZpZXcuYXBpXHJcbiAgICAgICAgICAgID8gMVxyXG4gICAgICAgICAgICA6IHBsdWdpbi5zZXR0aW5ncy5kdldhaXRUaW1lXHJcbiAgICAgICAgICA6IDMwMDBcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Vmlld1R5cGUoKSB7XHJcbiAgICByZXR1cm4gTUFUUklYX1ZJRVc7XHJcbiAgfVxyXG4gIGdldERpc3BsYXlUZXh0KCkge1xyXG4gICAgcmV0dXJuIFwiQnJlYWRjcnVtYnMgTWF0cml4XCI7XHJcbiAgfVxyXG4gIGljb24gPSBUUkFJTF9JQ09OO1xyXG5cclxuICBhc3luYyBvbk9wZW4oKTogUHJvbWlzZTx2b2lkPiB7IH1cclxuXHJcbiAgb25DbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudmlldz8uJGRlc3Ryb3koKTtcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICB9XHJcblxyXG4gIGdldEFsdChub2RlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGNvbnN0IHsgcGx1Z2luIH0gPSB0aGlzO1xyXG4gICAgY29uc3QgeyBhbHRMaW5rRmllbGRzLCBzaG93QWxsQWxpYXNlcyB9ID0gcGx1Z2luLnNldHRpbmdzO1xyXG4gICAgaWYgKCFhbHRMaW5rRmllbGRzLmxlbmd0aCkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgLy8gZHYgRmlyc3RcclxuICAgIGNvbnN0IGR2ID0gZ2V0RFZBcGkocGx1Z2luKTtcclxuICAgIGlmIChkdikge1xyXG4gICAgICBjb25zdCBwYWdlID0gZHYucGFnZShub2RlKTtcclxuICAgICAgaWYgKCFwYWdlKSByZXR1cm4gbnVsbDtcclxuICAgICAgZm9yIChjb25zdCBhbHQgb2YgYWx0TGlua0ZpZWxkcykge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gcGFnZVthbHRdIGFzIHN0cmluZztcclxuXHJcbiAgICAgICAgY29uc3QgYXJyOiBzdHJpbmdbXSA9XHJcbiAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyBzcGxpdEFuZFRyaW0odmFsdWUpIDogdmFsdWU7XHJcbiAgICAgICAgaWYgKHZhbHVlKSByZXR1cm4gc2hvd0FsbEFsaWFzZXMgPyBhcnIuam9pbihcIiwgXCIpIDogYXJyWzBdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBmaWxlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Rmlyc3RMaW5rcGF0aERlc3Qobm9kZSwgXCJcIik7XHJcbiAgICAgIGlmIChmaWxlKSB7XHJcbiAgICAgICAgY29uc3QgeyBmcm9udG1hdHRlciB9ID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0RmlsZUNhY2hlKGZpbGUpO1xyXG4gICAgICAgIGZvciAoY29uc3QgYWx0RmllbGQgb2YgYWx0TGlua0ZpZWxkcykge1xyXG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBmcm9udG1hdHRlcj8uW2FsdEZpZWxkXTtcclxuXHJcbiAgICAgICAgICBjb25zdCBhcnI6IHN0cmluZ1tdID1cclxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gc3BsaXRBbmRUcmltKHZhbHVlKSA6IHZhbHVlO1xyXG4gICAgICAgICAgaWYgKHZhbHVlKSByZXR1cm4gc2hvd0FsbEFsaWFzZXMgPyBhcnIuam9pbihcIiwgXCIpIDogYXJyWzBdO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9JbnRlcm5hbExpbmtPYmogPSAoXHJcbiAgICB0bzogc3RyaW5nLFxyXG4gICAgcmVhbFEgPSB0cnVlLFxyXG4gICAgcGFyZW50OiBzdHJpbmcgfCBudWxsLFxyXG4gICAgaW1wbGllZD86IHN0cmluZ1xyXG4gICk6IGludGVybmFsTGlua09iaiA9PiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0byxcclxuICAgICAgY2xzOiBsaW5rQ2xhc3ModG8sIHJlYWxRKSxcclxuICAgICAgYWx0OiB0aGlzLmdldEFsdCh0byksXHJcbiAgICAgIG9yZGVyOiB0aGlzLmdldE9yZGVyKHRvKSxcclxuICAgICAgcGFyZW50LFxyXG4gICAgICBpbXBsaWVkLFxyXG4gICAgfTtcclxuICB9O1xyXG5cclxuICAvLyBBTkNIT1IgUmVtb3ZlIGR1cGxpY2F0ZSBpbXBsaWVkIGxpbmtzXHJcblxyXG4gIHJlbW92ZUR1cGxpY2F0ZUltcGxpZWQoXHJcbiAgICByZWFsczogaW50ZXJuYWxMaW5rT2JqW10sXHJcbiAgICBpbXBsaWVkczogaW50ZXJuYWxMaW5rT2JqW11cclxuICApOiBpbnRlcm5hbExpbmtPYmpbXSB7XHJcbiAgICBjb25zdCByZWFsVG9zID0gcmVhbHMubWFwKChyZWFsKSA9PiByZWFsLnRvKTtcclxuICAgIHJldHVybiBpbXBsaWVkcy5maWx0ZXIoKGltcGxpZWQpID0+ICFyZWFsVG9zLmluY2x1ZGVzKGltcGxpZWQudG8pKTtcclxuICB9XHJcblxyXG4gIGdldE9yZGVyID0gKG5vZGU6IHN0cmluZykgPT5cclxuICAgIE51bWJlci5wYXJzZUludCh0aGlzLnBsdWdpbi5tYWluRy5nZXROb2RlQXR0cmlidXRlKG5vZGUsIFwib3JkZXJcIikpO1xyXG5cclxuICBzb3J0SXRlbXNBbHBoYSA9IChhOiBpbnRlcm5hbExpbmtPYmosIGI6IGludGVybmFsTGlua09iaikgPT4ge1xyXG4gICAgY29uc3QgeyBzb3J0QnlOYW1lU2hvd0FsaWFzLCBhbHBoYVNvcnRBc2MgfSA9IHRoaXMucGx1Z2luLnNldHRpbmdzO1xyXG4gICAgY29uc3QgYVRvU29ydCA9IChzb3J0QnlOYW1lU2hvd0FsaWFzID8gYS50byA6IGEuYWx0ID8/IGEudG8pLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zdCBiVG9Tb3J0ID0gKHNvcnRCeU5hbWVTaG93QWxpYXMgPyBiLnRvIDogYi5hbHQgPz8gYi50bykudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICBjb25zdCBsZXNzID0gYWxwaGFTb3J0QXNjID8gLTEgOiAxO1xyXG4gICAgY29uc3QgbW9yZSA9IGFscGhhU29ydEFzYyA/IDEgOiAtMTtcclxuXHJcbiAgICByZXR1cm4gYVRvU29ydCA8IGJUb1NvcnQgPyBsZXNzIDogbW9yZTtcclxuICB9O1xyXG5cclxuICBnZXRIaWVyU3F1YXJlcyh1c2VySGllcnM6IFVzZXJIaWVyW10sIGN1cnJGaWxlOiBURmlsZSk6IFNxdWFyZVByb3BzW11bXSB7XHJcbiAgICBjb25zdCB7IHBsdWdpbiB9ID0gdGhpcztcclxuICAgIGNvbnN0IHsgbWFpbkcsIHNldHRpbmdzIH0gPSBwbHVnaW47XHJcbiAgICBjb25zdCB7IGVuYWJsZUFscGhhU29ydCwgc3F1YXJlRGlyZWN0aW9uc09yZGVyIH0gPSBzZXR0aW5ncztcclxuICAgIGlmICghbWFpbkcpIHJldHVybiBbXTtcclxuXHJcbiAgICBjb25zdCB7IGJhc2VuYW1lIH0gPSBjdXJyRmlsZTtcclxuICAgIGlmICghbWFpbkcuaGFzTm9kZShiYXNlbmFtZSkpIHJldHVybiBbXTtcclxuICAgIGNvbnN0IHJlYWxzbkltcGxpZWRzID0gZ2V0TWF0cml4TmVpZ2hib3VycyhwbHVnaW4sIGJhc2VuYW1lKTtcclxuXHJcbiAgICByZXR1cm4gdXNlckhpZXJzLm1hcCgoaGllcikgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZFJlYWxOSW1wbGllZCA9IGJsYW5rUmVhbE5JbXBsaWVkKCkgYXMgdW5rbm93biBhcyB7XHJcbiAgICAgICAgW2RpciBpbiBEaXJlY3Rpb25zXToge1xyXG4gICAgICAgICAgcmVhbHM6IGludGVybmFsTGlua09ialtdO1xyXG4gICAgICAgICAgaW1wbGllZHM6IGludGVybmFsTGlua09ialtdO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zdCByZXN1bHRzRmlsdGVyID0gKFxyXG4gICAgICAgIGl0ZW06IFNxdWFyZUl0ZW0sXHJcbiAgICAgICAgZGlyOiBEaXJlY3Rpb25zLFxyXG4gICAgICAgIG9wcERpcjogRGlyZWN0aW9ucyxcclxuICAgICAgICBhcnJvdzogc3RyaW5nXHJcbiAgICAgICkgPT5cclxuICAgICAgICBoaWVyW2Rpcl0uaW5jbHVkZXMoaXRlbS5maWVsZCkgfHxcclxuICAgICAgICAoaXRlbS5maWVsZC5pbmNsdWRlcyhgPCR7YXJyb3d9PmApICYmXHJcbiAgICAgICAgICBoaWVyW29wcERpcl0uaW5jbHVkZXMoaXRlbS5maWVsZC5zcGxpdChcIiA8XCIpWzBdKSk7XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IGRpciBpbiByZWFsc25JbXBsaWVkcykge1xyXG4gICAgICAgIGNvbnN0IG9wcERpciA9IGdldE9wcERpcihkaXIgYXMgRGlyZWN0aW9ucyk7XHJcbiAgICAgICAgY29uc3QgYXJyb3cgPSBBUlJPV19ESVJFQ1RJT05TW2Rpcl07XHJcbiAgICAgICAgY29uc3QgeyByZWFscywgaW1wbGllZHMgfSA9IHJlYWxzbkltcGxpZWRzW2Rpcl07XHJcblxyXG4gICAgICAgIGZpbHRlcmVkUmVhbE5JbXBsaWVkW2Rpcl0ucmVhbHMgPSByZWFsc1xyXG4gICAgICAgICAgLmZpbHRlcigocmVhbCkgPT5cclxuICAgICAgICAgICAgcmVzdWx0c0ZpbHRlcihyZWFsLCBkaXIgYXMgRGlyZWN0aW9ucywgb3BwRGlyLCBhcnJvdylcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5tYXAoKGl0ZW0pID0+XHJcbiAgICAgICAgICAgIHRoaXMudG9JbnRlcm5hbExpbmtPYmooaXRlbS50bywgdHJ1ZSwgbnVsbCwgaXRlbS5pbXBsaWVkKVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgZmlsdGVyZWRSZWFsTkltcGxpZWRbZGlyXS5pbXBsaWVkcyA9IGltcGxpZWRzXHJcbiAgICAgICAgICAuZmlsdGVyKChpbXBsaWVkKSA9PlxyXG4gICAgICAgICAgICByZXN1bHRzRmlsdGVyKGltcGxpZWQsIGRpciBhcyBEaXJlY3Rpb25zLCBvcHBEaXIsIGFycm93KVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLm1hcCgoaXRlbSkgPT5cclxuICAgICAgICAgICAgdGhpcy50b0ludGVybmFsTGlua09iaihpdGVtLnRvLCBmYWxzZSwgbnVsbCwgaXRlbS5pbXBsaWVkKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IHtcclxuICAgICAgICB1cDogeyByZWFsczogcnUsIGltcGxpZWRzOiBpdSB9LFxyXG4gICAgICAgIHNhbWU6IHsgcmVhbHM6IHJzLCBpbXBsaWVkczogaXMgfSxcclxuICAgICAgICBkb3duOiB7IHJlYWxzOiByZCwgaW1wbGllZHM6IGlkIH0sXHJcbiAgICAgICAgbmV4dDogeyByZWFsczogcm4sIGltcGxpZWRzOiBpTiB9LFxyXG4gICAgICAgIHByZXY6IHsgcmVhbHM6IHJwLCBpbXBsaWVkczogaXAgfSxcclxuICAgICAgfSA9IGZpbHRlcmVkUmVhbE5JbXBsaWVkO1xyXG5cclxuICAgICAgLy8gIVNFQ1RJT05cclxuXHJcbiAgICAgIFtpdSwgaXMsIGlkLCBpTiwgaXBdID0gW1xyXG4gICAgICAgIHRoaXMucmVtb3ZlRHVwbGljYXRlSW1wbGllZChydSwgaXUpLFxyXG4gICAgICAgIHRoaXMucmVtb3ZlRHVwbGljYXRlSW1wbGllZChycywgaXMpLFxyXG4gICAgICAgIHRoaXMucmVtb3ZlRHVwbGljYXRlSW1wbGllZChyZCwgaWQpLFxyXG4gICAgICAgIHRoaXMucmVtb3ZlRHVwbGljYXRlSW1wbGllZChybiwgaU4pLFxyXG4gICAgICAgIHRoaXMucmVtb3ZlRHVwbGljYXRlSW1wbGllZChycCwgaXApLFxyXG4gICAgICBdO1xyXG5cclxuICAgICAgY29uc3QgaVNhbWVOb0R1cDogaW50ZXJuYWxMaW5rT2JqW10gPSBbXTtcclxuICAgICAgaXMuZm9yRWFjaCgoaW1wU2liKSA9PiB7XHJcbiAgICAgICAgaWYgKGlTYW1lTm9EdXAuZXZlcnkoKG5vRHVwKSA9PiBub0R1cC50byAhPT0gaW1wU2liLnRvKSkge1xyXG4gICAgICAgICAgaVNhbWVOb0R1cC5wdXNoKGltcFNpYik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaXMgPSBpU2FtZU5vRHVwO1xyXG5cclxuICAgICAgY29uc3QgZ2V0RmllbGRJbkhpZXIgPSAoZGlyOiBEaXJlY3Rpb25zKSA9PlxyXG4gICAgICAgIGhpZXJbZGlyXVswXVxyXG4gICAgICAgICAgPyBoaWVyW2Rpcl0uam9pbihcIiwgXCIpXHJcbiAgICAgICAgICA6IGAke2hpZXJbZ2V0T3BwRGlyKGRpcildLmpvaW4oXCIsXCIpfSR7QVJST1dfRElSRUNUSU9OU1tkaXJdfWA7XHJcblxyXG4gICAgICBjb25zdCBzcXVhcmVzID0gW3J1LCBycywgcmQsIHJuLCBycCwgaXUsIGlzLCBpZCwgaU4sIGlwXTtcclxuXHJcbiAgICAgIGlmIChlbmFibGVBbHBoYVNvcnQpXHJcbiAgICAgICAgc3F1YXJlcy5mb3JFYWNoKChzcSkgPT4gc3Euc29ydCh0aGlzLnNvcnRJdGVtc0FscGhhKSk7XHJcblxyXG4gICAgICBzcXVhcmVzLmZvckVhY2goKHNxKSA9PiBzcS5zb3J0KChhLCBiKSA9PiBhLm9yZGVyIC0gYi5vcmRlcikpO1xyXG5cclxuICAgICAgaW5mbyhbXHJcbiAgICAgICAgeyBydSB9LFxyXG4gICAgICAgIHsgcnMgfSxcclxuICAgICAgICB7IHJkIH0sXHJcbiAgICAgICAgeyBybiB9LFxyXG4gICAgICAgIHsgcnAgfSxcclxuICAgICAgICB7IGl1IH0sXHJcbiAgICAgICAgeyBpcyB9LFxyXG4gICAgICAgIHsgaWQgfSxcclxuICAgICAgICB7IGlOIH0sXHJcbiAgICAgICAgeyBpcCB9LFxyXG4gICAgICBdKTtcclxuXHJcbiAgICAgIGNvbnN0IHNxdWFyZSA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICByZWFsSXRlbXM6IHJ1LFxyXG4gICAgICAgICAgaW1wbGllZEl0ZW1zOiBpdSxcclxuICAgICAgICAgIGZpZWxkOiBnZXRGaWVsZEluSGllcihcInVwXCIpLFxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHJlYWxJdGVtczogcnMsXHJcbiAgICAgICAgICBpbXBsaWVkSXRlbXM6IGlzLFxyXG4gICAgICAgICAgZmllbGQ6IGdldEZpZWxkSW5IaWVyKFwic2FtZVwiKSxcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB7XHJcbiAgICAgICAgICByZWFsSXRlbXM6IHJkLFxyXG4gICAgICAgICAgaW1wbGllZEl0ZW1zOiBpZCxcclxuICAgICAgICAgIGZpZWxkOiBnZXRGaWVsZEluSGllcihcImRvd25cIiksXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICByZWFsSXRlbXM6IHJuLFxyXG4gICAgICAgICAgaW1wbGllZEl0ZW1zOiBpTixcclxuICAgICAgICAgIGZpZWxkOiBnZXRGaWVsZEluSGllcihcIm5leHRcIiksXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICByZWFsSXRlbXM6IHJwLFxyXG4gICAgICAgICAgaW1wbGllZEl0ZW1zOiBpcCxcclxuICAgICAgICAgIGZpZWxkOiBnZXRGaWVsZEluSGllcihcInByZXZcIiksXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuXHJcbiAgICAgIHJldHVybiBzcXVhcmVEaXJlY3Rpb25zT3JkZXIubWFwKChvcmRlcikgPT4gc3F1YXJlW29yZGVyXSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRyYXcoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB7IGNvbnRlbnRFbCwgZGIsIHBsdWdpbiB9ID0gdGhpcztcclxuICAgICAgZGIuc3RhcnQyRyhcIkRyYXcgTWF0cml4IFZpZXdcIik7XHJcbiAgICAgIGNvbnRlbnRFbC5lbXB0eSgpO1xyXG5cclxuICAgICAgY29uc3QgeyB1c2VySGllcnMgfSA9IHBsdWdpbi5zZXR0aW5ncztcclxuXHJcbiAgICAgIGNvbnN0IGN1cnJGaWxlID0gZ2V0Q3VyckZpbGUoKTtcclxuICAgICAgaWYgKCFjdXJyRmlsZSkgcmV0dXJuO1xyXG5cclxuICAgICAgY29uc3QgaGllclNxdWFyZXMgPSB0aGlzLmdldEhpZXJTcXVhcmVzKHVzZXJIaWVycywgY3VyckZpbGUpLmZpbHRlcihcclxuICAgICAgICAoc3F1YXJlQXJyKSA9PlxyXG4gICAgICAgICAgc3F1YXJlQXJyLnNvbWUoXHJcbiAgICAgICAgICAgIChzcSkgPT4gc3EucmVhbEl0ZW1zLmxlbmd0aCArIHNxLmltcGxpZWRJdGVtcy5sZW5ndGggPiAwXHJcbiAgICAgICAgICApXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBuZXcgTWF0cml4KHtcclxuICAgICAgICB0YXJnZXQ6IGNvbnRlbnRFbCxcclxuICAgICAgICBwcm9wczogeyBoaWVyU3F1YXJlcywgbWF0cml4VmlldzogdGhpcywgY3VyckZpbGUgfSxcclxuICAgICAgfSlcclxuXHJcblxyXG4gICAgICBkYi5lbmQyRygpO1xyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGVycm9yKGVycik7XHJcbiAgICAgIHRoaXMuZGIuZW5kMkcoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwgImltcG9ydCB7IGRlYnVnLCBpbmZvLCBsZXZlbHMgfSBmcm9tIFwibG9nbGV2ZWxcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcInNyYy9tYWluXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgRGVidWdnZXIge1xyXG4gIHBsdWdpbjogQkNQbHVnaW47XHJcbiAgY29uc3RydWN0b3IocGx1Z2luOiBCQ1BsdWdpbikge1xyXG4gICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XHJcbiAgfVxyXG5cclxuICBkZWJ1Z0xlc3NUaGFuID0gKGxldmVsOiBudW1iZXIpID0+XHJcbiAgICBsZXZlbHNbdGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVidWdNb2RlXSA8IGxldmVsO1xyXG5cclxuICBzdGFydDJHKGdyb3VwOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmRlYnVnTGVzc1RoYW4oMykpIGNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQoZ3JvdXApO1xyXG4gIH1cclxuICBlbmQyRyguLi5tc2dzOiBhbnlbXSkge1xyXG4gICAgaWYgKHRoaXMuZGVidWdMZXNzVGhhbigzKSkge1xyXG4gICAgICBpZiAobXNncy5sZW5ndGgpIGluZm8oLi4ubXNncyk7XHJcbiAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgc3RhcnQxRyhncm91cDogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5kZWJ1Z0xlc3NUaGFuKDIpKSBjb25zb2xlLmdyb3VwQ29sbGFwc2VkKGdyb3VwKTtcclxuICB9XHJcbiAgZW5kMUcoLi4ubXNnczogYW55W10pIHtcclxuICAgIGlmICh0aGlzLmRlYnVnTGVzc1RoYW4oMikpIHtcclxuICAgICAgaWYgKG1zZ3MubGVuZ3RoKSBkZWJ1ZyguLi5tc2dzKTtcclxuICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhcnRHcyguLi5ncm91cHM6IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLnN0YXJ0MkcoZ3JvdXBzWzBdKTtcclxuICAgIGlmIChncm91cHNbMV0pIHRoaXMuc3RhcnQxRyhncm91cHNbMV0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW5kIGEgZGVidWcgYW5kIGluZm8gZ3JvdXAsIGxvZ2dpbmcgYG1zZ3NgIGluIGBlbmREZWJ1Z0dyb3VwYFxyXG4gICAqIEBwYXJhbSAgezF8Mn0gY291bnQgVGhlIG51bWJlciBvZiBncm91cHMgdG8gZW5kLiBgMWAgZW5kcyBUcmFjZSwgMiBlbmRzIGJvdGhcclxuICAgKiBAcGFyYW0gIHthbnlbXX0gLi4ubXNnc1xyXG4gICAqL1xyXG4gIGVuZEdzKGNvdW50OiAxIHwgMiwgLi4ubXNnczogYW55W10pIHtcclxuICAgIGlmIChjb3VudCA9PT0gMSkgdGhpcy5lbmQyRyguLi5tc2dzKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmVuZDFHKCk7XHJcbiAgICAgIHRoaXMuZW5kMkcoLi4ubXNncyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsICJmdW5jdGlvbiBub29wKCkgeyB9XG5jb25zdCBpZGVudGl0eSA9IHggPT4geDtcbmZ1bmN0aW9uIGFzc2lnbih0YXIsIHNyYykge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBmb3IgKGNvbnN0IGsgaW4gc3JjKVxuICAgICAgICB0YXJba10gPSBzcmNba107XG4gICAgcmV0dXJuIHRhcjtcbn1cbmZ1bmN0aW9uIGlzX3Byb21pc2UodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0aW9uJztcbn1cbmZ1bmN0aW9uIGFkZF9sb2NhdGlvbihlbGVtZW50LCBmaWxlLCBsaW5lLCBjb2x1bW4sIGNoYXIpIHtcbiAgICBlbGVtZW50Ll9fc3ZlbHRlX21ldGEgPSB7XG4gICAgICAgIGxvYzogeyBmaWxlLCBsaW5lLCBjb2x1bW4sIGNoYXIgfVxuICAgIH07XG59XG5mdW5jdGlvbiBydW4oZm4pIHtcbiAgICByZXR1cm4gZm4oKTtcbn1cbmZ1bmN0aW9uIGJsYW5rX29iamVjdCgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsKTtcbn1cbmZ1bmN0aW9uIHJ1bl9hbGwoZm5zKSB7XG4gICAgZm5zLmZvckVhY2gocnVuKTtcbn1cbmZ1bmN0aW9uIGlzX2Z1bmN0aW9uKHRoaW5nKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGluZyA9PT0gJ2Z1bmN0aW9uJztcbn1cbmZ1bmN0aW9uIHNhZmVfbm90X2VxdWFsKGEsIGIpIHtcbiAgICByZXR1cm4gYSAhPSBhID8gYiA9PSBiIDogYSAhPT0gYiB8fCAoKGEgJiYgdHlwZW9mIGEgPT09ICdvYmplY3QnKSB8fCB0eXBlb2YgYSA9PT0gJ2Z1bmN0aW9uJyk7XG59XG5sZXQgc3JjX3VybF9lcXVhbF9hbmNob3I7XG5mdW5jdGlvbiBzcmNfdXJsX2VxdWFsKGVsZW1lbnRfc3JjLCB1cmwpIHtcbiAgICBpZiAoIXNyY191cmxfZXF1YWxfYW5jaG9yKSB7XG4gICAgICAgIHNyY191cmxfZXF1YWxfYW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIH1cbiAgICBzcmNfdXJsX2VxdWFsX2FuY2hvci5ocmVmID0gdXJsO1xuICAgIHJldHVybiBlbGVtZW50X3NyYyA9PT0gc3JjX3VybF9lcXVhbF9hbmNob3IuaHJlZjtcbn1cbmZ1bmN0aW9uIG5vdF9lcXVhbChhLCBiKSB7XG4gICAgcmV0dXJuIGEgIT0gYSA/IGIgPT0gYiA6IGEgIT09IGI7XG59XG5mdW5jdGlvbiBpc19lbXB0eShvYmopIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT09IDA7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZV9zdG9yZShzdG9yZSwgbmFtZSkge1xuICAgIGlmIChzdG9yZSAhPSBudWxsICYmIHR5cGVvZiBzdG9yZS5zdWJzY3JpYmUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtuYW1lfScgaXMgbm90IGEgc3RvcmUgd2l0aCBhICdzdWJzY3JpYmUnIG1ldGhvZGApO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHN1YnNjcmliZShzdG9yZSwgLi4uY2FsbGJhY2tzKSB7XG4gICAgaWYgKHN0b3JlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG5vb3A7XG4gICAgfVxuICAgIGNvbnN0IHVuc3ViID0gc3RvcmUuc3Vic2NyaWJlKC4uLmNhbGxiYWNrcyk7XG4gICAgcmV0dXJuIHVuc3ViLnVuc3Vic2NyaWJlID8gKCkgPT4gdW5zdWIudW5zdWJzY3JpYmUoKSA6IHVuc3ViO1xufVxuZnVuY3Rpb24gZ2V0X3N0b3JlX3ZhbHVlKHN0b3JlKSB7XG4gICAgbGV0IHZhbHVlO1xuICAgIHN1YnNjcmliZShzdG9yZSwgXyA9PiB2YWx1ZSA9IF8pKCk7XG4gICAgcmV0dXJuIHZhbHVlO1xufVxuZnVuY3Rpb24gY29tcG9uZW50X3N1YnNjcmliZShjb21wb25lbnQsIHN0b3JlLCBjYWxsYmFjaykge1xuICAgIGNvbXBvbmVudC4kJC5vbl9kZXN0cm95LnB1c2goc3Vic2NyaWJlKHN0b3JlLCBjYWxsYmFjaykpO1xufVxuZnVuY3Rpb24gY3JlYXRlX3Nsb3QoZGVmaW5pdGlvbiwgY3R4LCAkJHNjb3BlLCBmbikge1xuICAgIGlmIChkZWZpbml0aW9uKSB7XG4gICAgICAgIGNvbnN0IHNsb3RfY3R4ID0gZ2V0X3Nsb3RfY29udGV4dChkZWZpbml0aW9uLCBjdHgsICQkc2NvcGUsIGZuKTtcbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb25bMF0oc2xvdF9jdHgpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGdldF9zbG90X2NvbnRleHQoZGVmaW5pdGlvbiwgY3R4LCAkJHNjb3BlLCBmbikge1xuICAgIHJldHVybiBkZWZpbml0aW9uWzFdICYmIGZuXG4gICAgICAgID8gYXNzaWduKCQkc2NvcGUuY3R4LnNsaWNlKCksIGRlZmluaXRpb25bMV0oZm4oY3R4KSkpXG4gICAgICAgIDogJCRzY29wZS5jdHg7XG59XG5mdW5jdGlvbiBnZXRfc2xvdF9jaGFuZ2VzKGRlZmluaXRpb24sICQkc2NvcGUsIGRpcnR5LCBmbikge1xuICAgIGlmIChkZWZpbml0aW9uWzJdICYmIGZuKSB7XG4gICAgICAgIGNvbnN0IGxldHMgPSBkZWZpbml0aW9uWzJdKGZuKGRpcnR5KSk7XG4gICAgICAgIGlmICgkJHNjb3BlLmRpcnR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBsZXRzO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgbGV0cyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZCA9IFtdO1xuICAgICAgICAgICAgY29uc3QgbGVuID0gTWF0aC5tYXgoJCRzY29wZS5kaXJ0eS5sZW5ndGgsIGxldHMubGVuZ3RoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgICBtZXJnZWRbaV0gPSAkJHNjb3BlLmRpcnR5W2ldIHwgbGV0c1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBtZXJnZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICQkc2NvcGUuZGlydHkgfCBsZXRzO1xuICAgIH1cbiAgICByZXR1cm4gJCRzY29wZS5kaXJ0eTtcbn1cbmZ1bmN0aW9uIHVwZGF0ZV9zbG90X2Jhc2Uoc2xvdCwgc2xvdF9kZWZpbml0aW9uLCBjdHgsICQkc2NvcGUsIHNsb3RfY2hhbmdlcywgZ2V0X3Nsb3RfY29udGV4dF9mbikge1xuICAgIGlmIChzbG90X2NoYW5nZXMpIHtcbiAgICAgICAgY29uc3Qgc2xvdF9jb250ZXh0ID0gZ2V0X3Nsb3RfY29udGV4dChzbG90X2RlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgZ2V0X3Nsb3RfY29udGV4dF9mbik7XG4gICAgICAgIHNsb3QucChzbG90X2NvbnRleHQsIHNsb3RfY2hhbmdlcyk7XG4gICAgfVxufVxuZnVuY3Rpb24gdXBkYXRlX3Nsb3Qoc2xvdCwgc2xvdF9kZWZpbml0aW9uLCBjdHgsICQkc2NvcGUsIGRpcnR5LCBnZXRfc2xvdF9jaGFuZ2VzX2ZuLCBnZXRfc2xvdF9jb250ZXh0X2ZuKSB7XG4gICAgY29uc3Qgc2xvdF9jaGFuZ2VzID0gZ2V0X3Nsb3RfY2hhbmdlcyhzbG90X2RlZmluaXRpb24sICQkc2NvcGUsIGRpcnR5LCBnZXRfc2xvdF9jaGFuZ2VzX2ZuKTtcbiAgICB1cGRhdGVfc2xvdF9iYXNlKHNsb3QsIHNsb3RfZGVmaW5pdGlvbiwgY3R4LCAkJHNjb3BlLCBzbG90X2NoYW5nZXMsIGdldF9zbG90X2NvbnRleHRfZm4pO1xufVxuZnVuY3Rpb24gZ2V0X2FsbF9kaXJ0eV9mcm9tX3Njb3BlKCQkc2NvcGUpIHtcbiAgICBpZiAoJCRzY29wZS5jdHgubGVuZ3RoID4gMzIpIHtcbiAgICAgICAgY29uc3QgZGlydHkgPSBbXTtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gJCRzY29wZS5jdHgubGVuZ3RoIC8gMzI7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGRpcnR5W2ldID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpcnR5O1xuICAgIH1cbiAgICByZXR1cm4gLTE7XG59XG5mdW5jdGlvbiBleGNsdWRlX2ludGVybmFsX3Byb3BzKHByb3BzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgZm9yIChjb25zdCBrIGluIHByb3BzKVxuICAgICAgICBpZiAoa1swXSAhPT0gJyQnKVxuICAgICAgICAgICAgcmVzdWx0W2tdID0gcHJvcHNba107XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGNvbXB1dGVfcmVzdF9wcm9wcyhwcm9wcywga2V5cykge1xuICAgIGNvbnN0IHJlc3QgPSB7fTtcbiAgICBrZXlzID0gbmV3IFNldChrZXlzKTtcbiAgICBmb3IgKGNvbnN0IGsgaW4gcHJvcHMpXG4gICAgICAgIGlmICgha2V5cy5oYXMoaykgJiYga1swXSAhPT0gJyQnKVxuICAgICAgICAgICAgcmVzdFtrXSA9IHByb3BzW2tdO1xuICAgIHJldHVybiByZXN0O1xufVxuZnVuY3Rpb24gY29tcHV0ZV9zbG90cyhzbG90cykge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IGluIHNsb3RzKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG9uY2UoZm4pIHtcbiAgICBsZXQgcmFuID0gZmFsc2U7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgIGlmIChyYW4pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHJhbiA9IHRydWU7XG4gICAgICAgIGZuLmNhbGwodGhpcywgLi4uYXJncyk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIG51bGxfdG9fZW1wdHkodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWU7XG59XG5mdW5jdGlvbiBzZXRfc3RvcmVfdmFsdWUoc3RvcmUsIHJldCwgdmFsdWUpIHtcbiAgICBzdG9yZS5zZXQodmFsdWUpO1xuICAgIHJldHVybiByZXQ7XG59XG5jb25zdCBoYXNfcHJvcCA9IChvYmosIHByb3ApID0+IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xuZnVuY3Rpb24gYWN0aW9uX2Rlc3Ryb3llcihhY3Rpb25fcmVzdWx0KSB7XG4gICAgcmV0dXJuIGFjdGlvbl9yZXN1bHQgJiYgaXNfZnVuY3Rpb24oYWN0aW9uX3Jlc3VsdC5kZXN0cm95KSA/IGFjdGlvbl9yZXN1bHQuZGVzdHJveSA6IG5vb3A7XG59XG5cbmNvbnN0IGlzX2NsaWVudCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xubGV0IG5vdyA9IGlzX2NsaWVudFxuICAgID8gKCkgPT4gd2luZG93LnBlcmZvcm1hbmNlLm5vdygpXG4gICAgOiAoKSA9PiBEYXRlLm5vdygpO1xubGV0IHJhZiA9IGlzX2NsaWVudCA/IGNiID0+IHJlcXVlc3RBbmltYXRpb25GcmFtZShjYikgOiBub29wO1xuLy8gdXNlZCBpbnRlcm5hbGx5IGZvciB0ZXN0aW5nXG5mdW5jdGlvbiBzZXRfbm93KGZuKSB7XG4gICAgbm93ID0gZm47XG59XG5mdW5jdGlvbiBzZXRfcmFmKGZuKSB7XG4gICAgcmFmID0gZm47XG59XG5cbmNvbnN0IHRhc2tzID0gbmV3IFNldCgpO1xuZnVuY3Rpb24gcnVuX3Rhc2tzKG5vdykge1xuICAgIHRhc2tzLmZvckVhY2godGFzayA9PiB7XG4gICAgICAgIGlmICghdGFzay5jKG5vdykpIHtcbiAgICAgICAgICAgIHRhc2tzLmRlbGV0ZSh0YXNrKTtcbiAgICAgICAgICAgIHRhc2suZigpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHRhc2tzLnNpemUgIT09IDApXG4gICAgICAgIHJhZihydW5fdGFza3MpO1xufVxuLyoqXG4gKiBGb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5IVxuICovXG5mdW5jdGlvbiBjbGVhcl9sb29wcygpIHtcbiAgICB0YXNrcy5jbGVhcigpO1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHRhc2sgdGhhdCBydW5zIG9uIGVhY2ggcmFmIGZyYW1lXG4gKiB1bnRpbCBpdCByZXR1cm5zIGEgZmFsc3kgdmFsdWUgb3IgaXMgYWJvcnRlZFxuICovXG5mdW5jdGlvbiBsb29wKGNhbGxiYWNrKSB7XG4gICAgbGV0IHRhc2s7XG4gICAgaWYgKHRhc2tzLnNpemUgPT09IDApXG4gICAgICAgIHJhZihydW5fdGFza3MpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHByb21pc2U6IG5ldyBQcm9taXNlKGZ1bGZpbGwgPT4ge1xuICAgICAgICAgICAgdGFza3MuYWRkKHRhc2sgPSB7IGM6IGNhbGxiYWNrLCBmOiBmdWxmaWxsIH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgYWJvcnQoKSB7XG4gICAgICAgICAgICB0YXNrcy5kZWxldGUodGFzayk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG4vLyBUcmFjayB3aGljaCBub2RlcyBhcmUgY2xhaW1lZCBkdXJpbmcgaHlkcmF0aW9uLiBVbmNsYWltZWQgbm9kZXMgY2FuIHRoZW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBET01cbi8vIGF0IHRoZSBlbmQgb2YgaHlkcmF0aW9uIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHJlbWFpbmluZyBub2Rlcy5cbmxldCBpc19oeWRyYXRpbmcgPSBmYWxzZTtcbmZ1bmN0aW9uIHN0YXJ0X2h5ZHJhdGluZygpIHtcbiAgICBpc19oeWRyYXRpbmcgPSB0cnVlO1xufVxuZnVuY3Rpb24gZW5kX2h5ZHJhdGluZygpIHtcbiAgICBpc19oeWRyYXRpbmcgPSBmYWxzZTtcbn1cbmZ1bmN0aW9uIHVwcGVyX2JvdW5kKGxvdywgaGlnaCwga2V5LCB2YWx1ZSkge1xuICAgIC8vIFJldHVybiBmaXJzdCBpbmRleCBvZiB2YWx1ZSBsYXJnZXIgdGhhbiBpbnB1dCB2YWx1ZSBpbiB0aGUgcmFuZ2UgW2xvdywgaGlnaClcbiAgICB3aGlsZSAobG93IDwgaGlnaCkge1xuICAgICAgICBjb25zdCBtaWQgPSBsb3cgKyAoKGhpZ2ggLSBsb3cpID4+IDEpO1xuICAgICAgICBpZiAoa2V5KG1pZCkgPD0gdmFsdWUpIHtcbiAgICAgICAgICAgIGxvdyA9IG1pZCArIDE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBoaWdoID0gbWlkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBsb3c7XG59XG5mdW5jdGlvbiBpbml0X2h5ZHJhdGUodGFyZ2V0KSB7XG4gICAgaWYgKHRhcmdldC5oeWRyYXRlX2luaXQpXG4gICAgICAgIHJldHVybjtcbiAgICB0YXJnZXQuaHlkcmF0ZV9pbml0ID0gdHJ1ZTtcbiAgICAvLyBXZSBrbm93IHRoYXQgYWxsIGNoaWxkcmVuIGhhdmUgY2xhaW1fb3JkZXIgdmFsdWVzIHNpbmNlIHRoZSB1bmNsYWltZWQgaGF2ZSBiZWVuIGRldGFjaGVkIGlmIHRhcmdldCBpcyBub3QgPGhlYWQ+XG4gICAgbGV0IGNoaWxkcmVuID0gdGFyZ2V0LmNoaWxkTm9kZXM7XG4gICAgLy8gSWYgdGFyZ2V0IGlzIDxoZWFkPiwgdGhlcmUgbWF5IGJlIGNoaWxkcmVuIHdpdGhvdXQgY2xhaW1fb3JkZXJcbiAgICBpZiAodGFyZ2V0Lm5vZGVOYW1lID09PSAnSEVBRCcpIHtcbiAgICAgICAgY29uc3QgbXlDaGlsZHJlbiA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gY2hpbGRyZW5baV07XG4gICAgICAgICAgICBpZiAobm9kZS5jbGFpbV9vcmRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgbXlDaGlsZHJlbi5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNoaWxkcmVuID0gbXlDaGlsZHJlbjtcbiAgICB9XG4gICAgLypcbiAgICAqIFJlb3JkZXIgY2xhaW1lZCBjaGlsZHJlbiBvcHRpbWFsbHkuXG4gICAgKiBXZSBjYW4gcmVvcmRlciBjbGFpbWVkIGNoaWxkcmVuIG9wdGltYWxseSBieSBmaW5kaW5nIHRoZSBsb25nZXN0IHN1YnNlcXVlbmNlIG9mXG4gICAgKiBub2RlcyB0aGF0IGFyZSBhbHJlYWR5IGNsYWltZWQgaW4gb3JkZXIgYW5kIG9ubHkgbW92aW5nIHRoZSByZXN0LiBUaGUgbG9uZ2VzdFxuICAgICogc3Vic2VxdWVuY2Ugc3Vic2VxdWVuY2Ugb2Ygbm9kZXMgdGhhdCBhcmUgY2xhaW1lZCBpbiBvcmRlciBjYW4gYmUgZm91bmQgYnlcbiAgICAqIGNvbXB1dGluZyB0aGUgbG9uZ2VzdCBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlIG9mIC5jbGFpbV9vcmRlciB2YWx1ZXMuXG4gICAgKlxuICAgICogVGhpcyBhbGdvcml0aG0gaXMgb3B0aW1hbCBpbiBnZW5lcmF0aW5nIHRoZSBsZWFzdCBhbW91bnQgb2YgcmVvcmRlciBvcGVyYXRpb25zXG4gICAgKiBwb3NzaWJsZS5cbiAgICAqXG4gICAgKiBQcm9vZjpcbiAgICAqIFdlIGtub3cgdGhhdCwgZ2l2ZW4gYSBzZXQgb2YgcmVvcmRlcmluZyBvcGVyYXRpb25zLCB0aGUgbm9kZXMgdGhhdCBkbyBub3QgbW92ZVxuICAgICogYWx3YXlzIGZvcm0gYW4gaW5jcmVhc2luZyBzdWJzZXF1ZW5jZSwgc2luY2UgdGhleSBkbyBub3QgbW92ZSBhbW9uZyBlYWNoIG90aGVyXG4gICAgKiBtZWFuaW5nIHRoYXQgdGhleSBtdXN0IGJlIGFscmVhZHkgb3JkZXJlZCBhbW9uZyBlYWNoIG90aGVyLiBUaHVzLCB0aGUgbWF4aW1hbFxuICAgICogc2V0IG9mIG5vZGVzIHRoYXQgZG8gbm90IG1vdmUgZm9ybSBhIGxvbmdlc3QgaW5jcmVhc2luZyBzdWJzZXF1ZW5jZS5cbiAgICAqL1xuICAgIC8vIENvbXB1dGUgbG9uZ2VzdCBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlXG4gICAgLy8gbTogc3Vic2VxdWVuY2UgbGVuZ3RoIGogPT4gaW5kZXggayBvZiBzbWFsbGVzdCB2YWx1ZSB0aGF0IGVuZHMgYW4gaW5jcmVhc2luZyBzdWJzZXF1ZW5jZSBvZiBsZW5ndGggalxuICAgIGNvbnN0IG0gPSBuZXcgSW50MzJBcnJheShjaGlsZHJlbi5sZW5ndGggKyAxKTtcbiAgICAvLyBQcmVkZWNlc3NvciBpbmRpY2VzICsgMVxuICAgIGNvbnN0IHAgPSBuZXcgSW50MzJBcnJheShjaGlsZHJlbi5sZW5ndGgpO1xuICAgIG1bMF0gPSAtMTtcbiAgICBsZXQgbG9uZ2VzdCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gY2hpbGRyZW5baV0uY2xhaW1fb3JkZXI7XG4gICAgICAgIC8vIEZpbmQgdGhlIGxhcmdlc3Qgc3Vic2VxdWVuY2UgbGVuZ3RoIHN1Y2ggdGhhdCBpdCBlbmRzIGluIGEgdmFsdWUgbGVzcyB0aGFuIG91ciBjdXJyZW50IHZhbHVlXG4gICAgICAgIC8vIHVwcGVyX2JvdW5kIHJldHVybnMgZmlyc3QgZ3JlYXRlciB2YWx1ZSwgc28gd2Ugc3VidHJhY3Qgb25lXG4gICAgICAgIC8vIHdpdGggZmFzdCBwYXRoIGZvciB3aGVuIHdlIGFyZSBvbiB0aGUgY3VycmVudCBsb25nZXN0IHN1YnNlcXVlbmNlXG4gICAgICAgIGNvbnN0IHNlcUxlbiA9ICgobG9uZ2VzdCA+IDAgJiYgY2hpbGRyZW5bbVtsb25nZXN0XV0uY2xhaW1fb3JkZXIgPD0gY3VycmVudCkgPyBsb25nZXN0ICsgMSA6IHVwcGVyX2JvdW5kKDEsIGxvbmdlc3QsIGlkeCA9PiBjaGlsZHJlblttW2lkeF1dLmNsYWltX29yZGVyLCBjdXJyZW50KSkgLSAxO1xuICAgICAgICBwW2ldID0gbVtzZXFMZW5dICsgMTtcbiAgICAgICAgY29uc3QgbmV3TGVuID0gc2VxTGVuICsgMTtcbiAgICAgICAgLy8gV2UgY2FuIGd1YXJhbnRlZSB0aGF0IGN1cnJlbnQgaXMgdGhlIHNtYWxsZXN0IHZhbHVlLiBPdGhlcndpc2UsIHdlIHdvdWxkIGhhdmUgZ2VuZXJhdGVkIGEgbG9uZ2VyIHNlcXVlbmNlLlxuICAgICAgICBtW25ld0xlbl0gPSBpO1xuICAgICAgICBsb25nZXN0ID0gTWF0aC5tYXgobmV3TGVuLCBsb25nZXN0KTtcbiAgICB9XG4gICAgLy8gVGhlIGxvbmdlc3QgaW5jcmVhc2luZyBzdWJzZXF1ZW5jZSBvZiBub2RlcyAoaW5pdGlhbGx5IHJldmVyc2VkKVxuICAgIGNvbnN0IGxpcyA9IFtdO1xuICAgIC8vIFRoZSByZXN0IG9mIHRoZSBub2Rlcywgbm9kZXMgdGhhdCB3aWxsIGJlIG1vdmVkXG4gICAgY29uc3QgdG9Nb3ZlID0gW107XG4gICAgbGV0IGxhc3QgPSBjaGlsZHJlbi5sZW5ndGggLSAxO1xuICAgIGZvciAobGV0IGN1ciA9IG1bbG9uZ2VzdF0gKyAxOyBjdXIgIT0gMDsgY3VyID0gcFtjdXIgLSAxXSkge1xuICAgICAgICBsaXMucHVzaChjaGlsZHJlbltjdXIgLSAxXSk7XG4gICAgICAgIGZvciAoOyBsYXN0ID49IGN1cjsgbGFzdC0tKSB7XG4gICAgICAgICAgICB0b01vdmUucHVzaChjaGlsZHJlbltsYXN0XSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdC0tO1xuICAgIH1cbiAgICBmb3IgKDsgbGFzdCA+PSAwOyBsYXN0LS0pIHtcbiAgICAgICAgdG9Nb3ZlLnB1c2goY2hpbGRyZW5bbGFzdF0pO1xuICAgIH1cbiAgICBsaXMucmV2ZXJzZSgpO1xuICAgIC8vIFdlIHNvcnQgdGhlIG5vZGVzIGJlaW5nIG1vdmVkIHRvIGd1YXJhbnRlZSB0aGF0IHRoZWlyIGluc2VydGlvbiBvcmRlciBtYXRjaGVzIHRoZSBjbGFpbSBvcmRlclxuICAgIHRvTW92ZS5zb3J0KChhLCBiKSA9PiBhLmNsYWltX29yZGVyIC0gYi5jbGFpbV9vcmRlcik7XG4gICAgLy8gRmluYWxseSwgd2UgbW92ZSB0aGUgbm9kZXNcbiAgICBmb3IgKGxldCBpID0gMCwgaiA9IDA7IGkgPCB0b01vdmUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgd2hpbGUgKGogPCBsaXMubGVuZ3RoICYmIHRvTW92ZVtpXS5jbGFpbV9vcmRlciA+PSBsaXNbal0uY2xhaW1fb3JkZXIpIHtcbiAgICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbmNob3IgPSBqIDwgbGlzLmxlbmd0aCA/IGxpc1tqXSA6IG51bGw7XG4gICAgICAgIHRhcmdldC5pbnNlcnRCZWZvcmUodG9Nb3ZlW2ldLCBhbmNob3IpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFwcGVuZCh0YXJnZXQsIG5vZGUpIHtcbiAgICB0YXJnZXQuYXBwZW5kQ2hpbGQobm9kZSk7XG59XG5mdW5jdGlvbiBhcHBlbmRfc3R5bGVzKHRhcmdldCwgc3R5bGVfc2hlZXRfaWQsIHN0eWxlcykge1xuICAgIGNvbnN0IGFwcGVuZF9zdHlsZXNfdG8gPSBnZXRfcm9vdF9mb3Jfc3R5bGUodGFyZ2V0KTtcbiAgICBpZiAoIWFwcGVuZF9zdHlsZXNfdG8uZ2V0RWxlbWVudEJ5SWQoc3R5bGVfc2hlZXRfaWQpKSB7XG4gICAgICAgIGNvbnN0IHN0eWxlID0gZWxlbWVudCgnc3R5bGUnKTtcbiAgICAgICAgc3R5bGUuaWQgPSBzdHlsZV9zaGVldF9pZDtcbiAgICAgICAgc3R5bGUudGV4dENvbnRlbnQgPSBzdHlsZXM7XG4gICAgICAgIGFwcGVuZF9zdHlsZXNoZWV0KGFwcGVuZF9zdHlsZXNfdG8sIHN0eWxlKTtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRfcm9vdF9mb3Jfc3R5bGUobm9kZSkge1xuICAgIGlmICghbm9kZSlcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgIGNvbnN0IHJvb3QgPSBub2RlLmdldFJvb3ROb2RlID8gbm9kZS5nZXRSb290Tm9kZSgpIDogbm9kZS5vd25lckRvY3VtZW50O1xuICAgIGlmIChyb290ICYmIHJvb3QuaG9zdCkge1xuICAgICAgICByZXR1cm4gcm9vdDtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGUub3duZXJEb2N1bWVudDtcbn1cbmZ1bmN0aW9uIGFwcGVuZF9lbXB0eV9zdHlsZXNoZWV0KG5vZGUpIHtcbiAgICBjb25zdCBzdHlsZV9lbGVtZW50ID0gZWxlbWVudCgnc3R5bGUnKTtcbiAgICBhcHBlbmRfc3R5bGVzaGVldChnZXRfcm9vdF9mb3Jfc3R5bGUobm9kZSksIHN0eWxlX2VsZW1lbnQpO1xuICAgIHJldHVybiBzdHlsZV9lbGVtZW50O1xufVxuZnVuY3Rpb24gYXBwZW5kX3N0eWxlc2hlZXQobm9kZSwgc3R5bGUpIHtcbiAgICBhcHBlbmQobm9kZS5oZWFkIHx8IG5vZGUsIHN0eWxlKTtcbn1cbmZ1bmN0aW9uIGFwcGVuZF9oeWRyYXRpb24odGFyZ2V0LCBub2RlKSB7XG4gICAgaWYgKGlzX2h5ZHJhdGluZykge1xuICAgICAgICBpbml0X2h5ZHJhdGUodGFyZ2V0KTtcbiAgICAgICAgaWYgKCh0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZCA9PT0gdW5kZWZpbmVkKSB8fCAoKHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkICE9PSBudWxsKSAmJiAodGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQucGFyZW50RWxlbWVudCAhPT0gdGFyZ2V0KSkpIHtcbiAgICAgICAgICAgIHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkID0gdGFyZ2V0LmZpcnN0Q2hpbGQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2tpcCBub2RlcyBvZiB1bmRlZmluZWQgb3JkZXJpbmdcbiAgICAgICAgd2hpbGUgKCh0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZCAhPT0gbnVsbCkgJiYgKHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkLmNsYWltX29yZGVyID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICB0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZCA9IHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkLm5leHRTaWJsaW5nO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlICE9PSB0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZCkge1xuICAgICAgICAgICAgLy8gV2Ugb25seSBpbnNlcnQgaWYgdGhlIG9yZGVyaW5nIG9mIHRoaXMgbm9kZSBzaG91bGQgYmUgbW9kaWZpZWQgb3IgdGhlIHBhcmVudCBub2RlIGlzIG5vdCB0YXJnZXRcbiAgICAgICAgICAgIGlmIChub2RlLmNsYWltX29yZGVyICE9PSB1bmRlZmluZWQgfHwgbm9kZS5wYXJlbnROb2RlICE9PSB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQuaW5zZXJ0QmVmb3JlKG5vZGUsIHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkID0gbm9kZS5uZXh0U2libGluZztcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChub2RlLnBhcmVudE5vZGUgIT09IHRhcmdldCB8fCBub2RlLm5leHRTaWJsaW5nICE9PSBudWxsKSB7XG4gICAgICAgIHRhcmdldC5hcHBlbmRDaGlsZChub2RlKTtcbiAgICB9XG59XG5mdW5jdGlvbiBpbnNlcnQodGFyZ2V0LCBub2RlLCBhbmNob3IpIHtcbiAgICB0YXJnZXQuaW5zZXJ0QmVmb3JlKG5vZGUsIGFuY2hvciB8fCBudWxsKTtcbn1cbmZ1bmN0aW9uIGluc2VydF9oeWRyYXRpb24odGFyZ2V0LCBub2RlLCBhbmNob3IpIHtcbiAgICBpZiAoaXNfaHlkcmF0aW5nICYmICFhbmNob3IpIHtcbiAgICAgICAgYXBwZW5kX2h5ZHJhdGlvbih0YXJnZXQsIG5vZGUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChub2RlLnBhcmVudE5vZGUgIT09IHRhcmdldCB8fCBub2RlLm5leHRTaWJsaW5nICE9IGFuY2hvcikge1xuICAgICAgICB0YXJnZXQuaW5zZXJ0QmVmb3JlKG5vZGUsIGFuY2hvciB8fCBudWxsKTtcbiAgICB9XG59XG5mdW5jdGlvbiBkZXRhY2gobm9kZSkge1xuICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbn1cbmZ1bmN0aW9uIGRlc3Ryb3lfZWFjaChpdGVyYXRpb25zLCBkZXRhY2hpbmcpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZXJhdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKGl0ZXJhdGlvbnNbaV0pXG4gICAgICAgICAgICBpdGVyYXRpb25zW2ldLmQoZGV0YWNoaW5nKTtcbiAgICB9XG59XG5mdW5jdGlvbiBlbGVtZW50KG5hbWUpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKTtcbn1cbmZ1bmN0aW9uIGVsZW1lbnRfaXMobmFtZSwgaXMpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lLCB7IGlzIH0pO1xufVxuZnVuY3Rpb24gb2JqZWN0X3dpdGhvdXRfcHJvcGVydGllcyhvYmosIGV4Y2x1ZGUpIHtcbiAgICBjb25zdCB0YXJnZXQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGsgaW4gb2JqKSB7XG4gICAgICAgIGlmIChoYXNfcHJvcChvYmosIGspXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAmJiBleGNsdWRlLmluZGV4T2YoaykgPT09IC0xKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICB0YXJnZXRba10gPSBvYmpba107XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cbmZ1bmN0aW9uIHN2Z19lbGVtZW50KG5hbWUpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsIG5hbWUpO1xufVxuZnVuY3Rpb24gdGV4dChkYXRhKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGRhdGEpO1xufVxuZnVuY3Rpb24gc3BhY2UoKSB7XG4gICAgcmV0dXJuIHRleHQoJyAnKTtcbn1cbmZ1bmN0aW9uIGVtcHR5KCkge1xuICAgIHJldHVybiB0ZXh0KCcnKTtcbn1cbmZ1bmN0aW9uIGxpc3Rlbihub2RlLCBldmVudCwgaGFuZGxlciwgb3B0aW9ucykge1xuICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgb3B0aW9ucyk7XG4gICAgcmV0dXJuICgpID0+IG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgb3B0aW9ucyk7XG59XG5mdW5jdGlvbiBwcmV2ZW50X2RlZmF1bHQoZm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIGZuLmNhbGwodGhpcywgZXZlbnQpO1xuICAgIH07XG59XG5mdW5jdGlvbiBzdG9wX3Byb3BhZ2F0aW9uKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gZm4uY2FsbCh0aGlzLCBldmVudCk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHNlbGYoZm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gdGhpcylcbiAgICAgICAgICAgIGZuLmNhbGwodGhpcywgZXZlbnQpO1xuICAgIH07XG59XG5mdW5jdGlvbiB0cnVzdGVkKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmIChldmVudC5pc1RydXN0ZWQpXG4gICAgICAgICAgICBmbi5jYWxsKHRoaXMsIGV2ZW50KTtcbiAgICB9O1xufVxuZnVuY3Rpb24gYXR0cihub2RlLCBhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpXG4gICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgZWxzZSBpZiAobm9kZS5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKSAhPT0gdmFsdWUpXG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgdmFsdWUpO1xufVxuZnVuY3Rpb24gc2V0X2F0dHJpYnV0ZXMobm9kZSwgYXR0cmlidXRlcykge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBkZXNjcmlwdG9ycyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG5vZGUuX19wcm90b19fKTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgIGlmIChhdHRyaWJ1dGVzW2tleV0gPT0gbnVsbCkge1xuICAgICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdzdHlsZScpIHtcbiAgICAgICAgICAgIG5vZGUuc3R5bGUuY3NzVGV4dCA9IGF0dHJpYnV0ZXNba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdfX3ZhbHVlJykge1xuICAgICAgICAgICAgbm9kZS52YWx1ZSA9IG5vZGVba2V5XSA9IGF0dHJpYnV0ZXNba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkZXNjcmlwdG9yc1trZXldICYmIGRlc2NyaXB0b3JzW2tleV0uc2V0KSB7XG4gICAgICAgICAgICBub2RlW2tleV0gPSBhdHRyaWJ1dGVzW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhdHRyKG5vZGUsIGtleSwgYXR0cmlidXRlc1trZXldKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHNldF9zdmdfYXR0cmlidXRlcyhub2RlLCBhdHRyaWJ1dGVzKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gYXR0cmlidXRlcykge1xuICAgICAgICBhdHRyKG5vZGUsIGtleSwgYXR0cmlidXRlc1trZXldKTtcbiAgICB9XG59XG5mdW5jdGlvbiBzZXRfY3VzdG9tX2VsZW1lbnRfZGF0YShub2RlLCBwcm9wLCB2YWx1ZSkge1xuICAgIGlmIChwcm9wIGluIG5vZGUpIHtcbiAgICAgICAgbm9kZVtwcm9wXSA9IHR5cGVvZiBub2RlW3Byb3BdID09PSAnYm9vbGVhbicgJiYgdmFsdWUgPT09ICcnID8gdHJ1ZSA6IHZhbHVlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgYXR0cihub2RlLCBwcm9wLCB2YWx1ZSk7XG4gICAgfVxufVxuZnVuY3Rpb24geGxpbmtfYXR0cihub2RlLCBhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGVOUygnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycsIGF0dHJpYnV0ZSwgdmFsdWUpO1xufVxuZnVuY3Rpb24gZ2V0X2JpbmRpbmdfZ3JvdXBfdmFsdWUoZ3JvdXAsIF9fdmFsdWUsIGNoZWNrZWQpIHtcbiAgICBjb25zdCB2YWx1ZSA9IG5ldyBTZXQoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdyb3VwLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGlmIChncm91cFtpXS5jaGVja2VkKVxuICAgICAgICAgICAgdmFsdWUuYWRkKGdyb3VwW2ldLl9fdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoIWNoZWNrZWQpIHtcbiAgICAgICAgdmFsdWUuZGVsZXRlKF9fdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gQXJyYXkuZnJvbSh2YWx1ZSk7XG59XG5mdW5jdGlvbiB0b19udW1iZXIodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09ICcnID8gbnVsbCA6ICt2YWx1ZTtcbn1cbmZ1bmN0aW9uIHRpbWVfcmFuZ2VzX3RvX2FycmF5KHJhbmdlcykge1xuICAgIGNvbnN0IGFycmF5ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgYXJyYXkucHVzaCh7IHN0YXJ0OiByYW5nZXMuc3RhcnQoaSksIGVuZDogcmFuZ2VzLmVuZChpKSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xufVxuZnVuY3Rpb24gY2hpbGRyZW4oZWxlbWVudCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKGVsZW1lbnQuY2hpbGROb2Rlcyk7XG59XG5mdW5jdGlvbiBpbml0X2NsYWltX2luZm8obm9kZXMpIHtcbiAgICBpZiAobm9kZXMuY2xhaW1faW5mbyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5vZGVzLmNsYWltX2luZm8gPSB7IGxhc3RfaW5kZXg6IDAsIHRvdGFsX2NsYWltZWQ6IDAgfTtcbiAgICB9XG59XG5mdW5jdGlvbiBjbGFpbV9ub2RlKG5vZGVzLCBwcmVkaWNhdGUsIHByb2Nlc3NOb2RlLCBjcmVhdGVOb2RlLCBkb250VXBkYXRlTGFzdEluZGV4ID0gZmFsc2UpIHtcbiAgICAvLyBUcnkgdG8gZmluZCBub2RlcyBpbiBhbiBvcmRlciBzdWNoIHRoYXQgd2UgbGVuZ3RoZW4gdGhlIGxvbmdlc3QgaW5jcmVhc2luZyBzdWJzZXF1ZW5jZVxuICAgIGluaXRfY2xhaW1faW5mbyhub2Rlcyk7XG4gICAgY29uc3QgcmVzdWx0Tm9kZSA9ICgoKSA9PiB7XG4gICAgICAgIC8vIFdlIGZpcnN0IHRyeSB0byBmaW5kIGFuIGVsZW1lbnQgYWZ0ZXIgdGhlIHByZXZpb3VzIG9uZVxuICAgICAgICBmb3IgKGxldCBpID0gbm9kZXMuY2xhaW1faW5mby5sYXN0X2luZGV4OyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgICAgIGlmIChwcmVkaWNhdGUobm9kZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXBsYWNlbWVudCA9IHByb2Nlc3NOb2RlKG5vZGUpO1xuICAgICAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzW2ldID0gcmVwbGFjZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghZG9udFVwZGF0ZUxhc3RJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBub2Rlcy5jbGFpbV9pbmZvLmxhc3RfaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBPdGhlcndpc2UsIHdlIHRyeSB0byBmaW5kIG9uZSBiZWZvcmVcbiAgICAgICAgLy8gV2UgaXRlcmF0ZSBpbiByZXZlcnNlIHNvIHRoYXQgd2UgZG9uJ3QgZ28gdG9vIGZhciBiYWNrXG4gICAgICAgIGZvciAobGV0IGkgPSBub2Rlcy5jbGFpbV9pbmZvLmxhc3RfaW5kZXggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICAgICAgaWYgKHByZWRpY2F0ZShub2RlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gcHJvY2Vzc05vZGUobm9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXNbaV0gPSByZXBsYWNlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFkb250VXBkYXRlTGFzdEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzLmNsYWltX2luZm8ubGFzdF9pbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlcGxhY2VtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2luY2Ugd2Ugc3BsaWNlZCBiZWZvcmUgdGhlIGxhc3RfaW5kZXgsIHdlIGRlY3JlYXNlIGl0XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzLmNsYWltX2luZm8ubGFzdF9pbmRleC0tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB3ZSBjYW4ndCBmaW5kIGFueSBtYXRjaGluZyBub2RlLCB3ZSBjcmVhdGUgYSBuZXcgb25lXG4gICAgICAgIHJldHVybiBjcmVhdGVOb2RlKCk7XG4gICAgfSkoKTtcbiAgICByZXN1bHROb2RlLmNsYWltX29yZGVyID0gbm9kZXMuY2xhaW1faW5mby50b3RhbF9jbGFpbWVkO1xuICAgIG5vZGVzLmNsYWltX2luZm8udG90YWxfY2xhaW1lZCArPSAxO1xuICAgIHJldHVybiByZXN1bHROb2RlO1xufVxuZnVuY3Rpb24gY2xhaW1fZWxlbWVudF9iYXNlKG5vZGVzLCBuYW1lLCBhdHRyaWJ1dGVzLCBjcmVhdGVfZWxlbWVudCkge1xuICAgIHJldHVybiBjbGFpbV9ub2RlKG5vZGVzLCAobm9kZSkgPT4gbm9kZS5ub2RlTmFtZSA9PT0gbmFtZSwgKG5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgcmVtb3ZlID0gW107XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbm9kZS5hdHRyaWJ1dGVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGUgPSBub2RlLmF0dHJpYnV0ZXNbal07XG4gICAgICAgICAgICBpZiAoIWF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlLnB1c2goYXR0cmlidXRlLm5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlbW92ZS5mb3JFYWNoKHYgPT4gbm9kZS5yZW1vdmVBdHRyaWJ1dGUodikpO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0sICgpID0+IGNyZWF0ZV9lbGVtZW50KG5hbWUpKTtcbn1cbmZ1bmN0aW9uIGNsYWltX2VsZW1lbnQobm9kZXMsIG5hbWUsIGF0dHJpYnV0ZXMpIHtcbiAgICByZXR1cm4gY2xhaW1fZWxlbWVudF9iYXNlKG5vZGVzLCBuYW1lLCBhdHRyaWJ1dGVzLCBlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGNsYWltX3N2Z19lbGVtZW50KG5vZGVzLCBuYW1lLCBhdHRyaWJ1dGVzKSB7XG4gICAgcmV0dXJuIGNsYWltX2VsZW1lbnRfYmFzZShub2RlcywgbmFtZSwgYXR0cmlidXRlcywgc3ZnX2VsZW1lbnQpO1xufVxuZnVuY3Rpb24gY2xhaW1fdGV4dChub2RlcywgZGF0YSkge1xuICAgIHJldHVybiBjbGFpbV9ub2RlKG5vZGVzLCAobm9kZSkgPT4gbm9kZS5ub2RlVHlwZSA9PT0gMywgKG5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YVN0ciA9ICcnICsgZGF0YTtcbiAgICAgICAgaWYgKG5vZGUuZGF0YS5zdGFydHNXaXRoKGRhdGFTdHIpKSB7XG4gICAgICAgICAgICBpZiAobm9kZS5kYXRhLmxlbmd0aCAhPT0gZGF0YVN0ci5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5zcGxpdFRleHQoZGF0YVN0ci5sZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbm9kZS5kYXRhID0gZGF0YVN0cjtcbiAgICAgICAgfVxuICAgIH0sICgpID0+IHRleHQoZGF0YSksIHRydWUgLy8gVGV4dCBub2RlcyBzaG91bGQgbm90IHVwZGF0ZSBsYXN0IGluZGV4IHNpbmNlIGl0IGlzIGxpa2VseSBub3Qgd29ydGggaXQgdG8gZWxpbWluYXRlIGFuIGluY3JlYXNpbmcgc3Vic2VxdWVuY2Ugb2YgYWN0dWFsIGVsZW1lbnRzXG4gICAgKTtcbn1cbmZ1bmN0aW9uIGNsYWltX3NwYWNlKG5vZGVzKSB7XG4gICAgcmV0dXJuIGNsYWltX3RleHQobm9kZXMsICcgJyk7XG59XG5mdW5jdGlvbiBmaW5kX2NvbW1lbnQobm9kZXMsIHRleHQsIHN0YXJ0KSB7XG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgbm9kZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gOCAvKiBjb21tZW50IG5vZGUgKi8gJiYgbm9kZS50ZXh0Q29udGVudC50cmltKCkgPT09IHRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBub2Rlcy5sZW5ndGg7XG59XG5mdW5jdGlvbiBjbGFpbV9odG1sX3RhZyhub2Rlcykge1xuICAgIC8vIGZpbmQgaHRtbCBvcGVuaW5nIHRhZ1xuICAgIGNvbnN0IHN0YXJ0X2luZGV4ID0gZmluZF9jb21tZW50KG5vZGVzLCAnSFRNTF9UQUdfU1RBUlQnLCAwKTtcbiAgICBjb25zdCBlbmRfaW5kZXggPSBmaW5kX2NvbW1lbnQobm9kZXMsICdIVE1MX1RBR19FTkQnLCBzdGFydF9pbmRleCk7XG4gICAgaWYgKHN0YXJ0X2luZGV4ID09PSBlbmRfaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBIdG1sVGFnSHlkcmF0aW9uKCk7XG4gICAgfVxuICAgIGluaXRfY2xhaW1faW5mbyhub2Rlcyk7XG4gICAgY29uc3QgaHRtbF90YWdfbm9kZXMgPSBub2Rlcy5zcGxpY2Uoc3RhcnRfaW5kZXgsIGVuZF9pbmRleCArIDEpO1xuICAgIGRldGFjaChodG1sX3RhZ19ub2Rlc1swXSk7XG4gICAgZGV0YWNoKGh0bWxfdGFnX25vZGVzW2h0bWxfdGFnX25vZGVzLmxlbmd0aCAtIDFdKTtcbiAgICBjb25zdCBjbGFpbWVkX25vZGVzID0gaHRtbF90YWdfbm9kZXMuc2xpY2UoMSwgaHRtbF90YWdfbm9kZXMubGVuZ3RoIC0gMSk7XG4gICAgZm9yIChjb25zdCBuIG9mIGNsYWltZWRfbm9kZXMpIHtcbiAgICAgICAgbi5jbGFpbV9vcmRlciA9IG5vZGVzLmNsYWltX2luZm8udG90YWxfY2xhaW1lZDtcbiAgICAgICAgbm9kZXMuY2xhaW1faW5mby50b3RhbF9jbGFpbWVkICs9IDE7XG4gICAgfVxuICAgIHJldHVybiBuZXcgSHRtbFRhZ0h5ZHJhdGlvbihjbGFpbWVkX25vZGVzKTtcbn1cbmZ1bmN0aW9uIHNldF9kYXRhKHRleHQsIGRhdGEpIHtcbiAgICBkYXRhID0gJycgKyBkYXRhO1xuICAgIGlmICh0ZXh0Lndob2xlVGV4dCAhPT0gZGF0YSlcbiAgICAgICAgdGV4dC5kYXRhID0gZGF0YTtcbn1cbmZ1bmN0aW9uIHNldF9pbnB1dF92YWx1ZShpbnB1dCwgdmFsdWUpIHtcbiAgICBpbnB1dC52YWx1ZSA9IHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xufVxuZnVuY3Rpb24gc2V0X2lucHV0X3R5cGUoaW5wdXQsIHR5cGUpIHtcbiAgICB0cnkge1xuICAgICAgICBpbnB1dC50eXBlID0gdHlwZTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbn1cbmZ1bmN0aW9uIHNldF9zdHlsZShub2RlLCBrZXksIHZhbHVlLCBpbXBvcnRhbnQpIHtcbiAgICBub2RlLnN0eWxlLnNldFByb3BlcnR5KGtleSwgdmFsdWUsIGltcG9ydGFudCA/ICdpbXBvcnRhbnQnIDogJycpO1xufVxuZnVuY3Rpb24gc2VsZWN0X29wdGlvbihzZWxlY3QsIHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3Qub3B0aW9ucy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBjb25zdCBvcHRpb24gPSBzZWxlY3Qub3B0aW9uc1tpXTtcbiAgICAgICAgaWYgKG9wdGlvbi5fX3ZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzZWxlY3Quc2VsZWN0ZWRJbmRleCA9IC0xOyAvLyBubyBvcHRpb24gc2hvdWxkIGJlIHNlbGVjdGVkXG59XG5mdW5jdGlvbiBzZWxlY3Rfb3B0aW9ucyhzZWxlY3QsIHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3Qub3B0aW9ucy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBjb25zdCBvcHRpb24gPSBzZWxlY3Qub3B0aW9uc1tpXTtcbiAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gfnZhbHVlLmluZGV4T2Yob3B0aW9uLl9fdmFsdWUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHNlbGVjdF92YWx1ZShzZWxlY3QpIHtcbiAgICBjb25zdCBzZWxlY3RlZF9vcHRpb24gPSBzZWxlY3QucXVlcnlTZWxlY3RvcignOmNoZWNrZWQnKSB8fCBzZWxlY3Qub3B0aW9uc1swXTtcbiAgICByZXR1cm4gc2VsZWN0ZWRfb3B0aW9uICYmIHNlbGVjdGVkX29wdGlvbi5fX3ZhbHVlO1xufVxuZnVuY3Rpb24gc2VsZWN0X211bHRpcGxlX3ZhbHVlKHNlbGVjdCkge1xuICAgIHJldHVybiBbXS5tYXAuY2FsbChzZWxlY3QucXVlcnlTZWxlY3RvckFsbCgnOmNoZWNrZWQnKSwgb3B0aW9uID0+IG9wdGlvbi5fX3ZhbHVlKTtcbn1cbi8vIHVuZm9ydHVuYXRlbHkgdGhpcyBjYW4ndCBiZSBhIGNvbnN0YW50IGFzIHRoYXQgd291bGRuJ3QgYmUgdHJlZS1zaGFrZWFibGVcbi8vIHNvIHdlIGNhY2hlIHRoZSByZXN1bHQgaW5zdGVhZFxubGV0IGNyb3Nzb3JpZ2luO1xuZnVuY3Rpb24gaXNfY3Jvc3NvcmlnaW4oKSB7XG4gICAgaWYgKGNyb3Nzb3JpZ2luID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY3Jvc3NvcmlnaW4gPSBmYWxzZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cucGFyZW50KSB7XG4gICAgICAgICAgICAgICAgdm9pZCB3aW5kb3cucGFyZW50LmRvY3VtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY3Jvc3NvcmlnaW4gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjcm9zc29yaWdpbjtcbn1cbmZ1bmN0aW9uIGFkZF9yZXNpemVfbGlzdGVuZXIobm9kZSwgZm4pIHtcbiAgICBjb25zdCBjb21wdXRlZF9zdHlsZSA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gICAgaWYgKGNvbXB1dGVkX3N0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgICAgICBub2RlLnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICB9XG4gICAgY29uc3QgaWZyYW1lID0gZWxlbWVudCgnaWZyYW1lJyk7XG4gICAgaWZyYW1lLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZGlzcGxheTogYmxvY2s7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyAnICtcbiAgICAgICAgJ292ZXJmbG93OiBoaWRkZW47IGJvcmRlcjogMDsgb3BhY2l0eTogMDsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHotaW5kZXg6IC0xOycpO1xuICAgIGlmcmFtZS5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICBpZnJhbWUudGFiSW5kZXggPSAtMTtcbiAgICBjb25zdCBjcm9zc29yaWdpbiA9IGlzX2Nyb3Nzb3JpZ2luKCk7XG4gICAgbGV0IHVuc3Vic2NyaWJlO1xuICAgIGlmIChjcm9zc29yaWdpbikge1xuICAgICAgICBpZnJhbWUuc3JjID0gXCJkYXRhOnRleHQvaHRtbCw8c2NyaXB0Pm9ucmVzaXplPWZ1bmN0aW9uKCl7cGFyZW50LnBvc3RNZXNzYWdlKDAsJyonKX08L3NjcmlwdD5cIjtcbiAgICAgICAgdW5zdWJzY3JpYmUgPSBsaXN0ZW4od2luZG93LCAnbWVzc2FnZScsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGV2ZW50LnNvdXJjZSA9PT0gaWZyYW1lLmNvbnRlbnRXaW5kb3cpXG4gICAgICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpZnJhbWUuc3JjID0gJ2Fib3V0OmJsYW5rJztcbiAgICAgICAgaWZyYW1lLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgIHVuc3Vic2NyaWJlID0gbGlzdGVuKGlmcmFtZS5jb250ZW50V2luZG93LCAncmVzaXplJywgZm4pO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBhcHBlbmQobm9kZSwgaWZyYW1lKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBpZiAoY3Jvc3NvcmlnaW4pIHtcbiAgICAgICAgICAgIHVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodW5zdWJzY3JpYmUgJiYgaWZyYW1lLmNvbnRlbnRXaW5kb3cpIHtcbiAgICAgICAgICAgIHVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZGV0YWNoKGlmcmFtZSk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHRvZ2dsZV9jbGFzcyhlbGVtZW50LCBuYW1lLCB0b2dnbGUpIHtcbiAgICBlbGVtZW50LmNsYXNzTGlzdFt0b2dnbGUgPyAnYWRkJyA6ICdyZW1vdmUnXShuYW1lKTtcbn1cbmZ1bmN0aW9uIGN1c3RvbV9ldmVudCh0eXBlLCBkZXRhaWwsIGJ1YmJsZXMgPSBmYWxzZSkge1xuICAgIGNvbnN0IGUgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTtcbiAgICBlLmluaXRDdXN0b21FdmVudCh0eXBlLCBidWJibGVzLCBmYWxzZSwgZGV0YWlsKTtcbiAgICByZXR1cm4gZTtcbn1cbmZ1bmN0aW9uIHF1ZXJ5X3NlbGVjdG9yX2FsbChzZWxlY3RvciwgcGFyZW50ID0gZG9jdW1lbnQuYm9keSkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHBhcmVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7XG59XG5jbGFzcyBIdG1sVGFnIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5lID0gdGhpcy5uID0gbnVsbDtcbiAgICB9XG4gICAgYyhodG1sKSB7XG4gICAgICAgIHRoaXMuaChodG1sKTtcbiAgICB9XG4gICAgbShodG1sLCB0YXJnZXQsIGFuY2hvciA9IG51bGwpIHtcbiAgICAgICAgaWYgKCF0aGlzLmUpIHtcbiAgICAgICAgICAgIHRoaXMuZSA9IGVsZW1lbnQodGFyZ2V0Lm5vZGVOYW1lKTtcbiAgICAgICAgICAgIHRoaXMudCA9IHRhcmdldDtcbiAgICAgICAgICAgIHRoaXMuYyhodG1sKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmkoYW5jaG9yKTtcbiAgICB9XG4gICAgaChodG1sKSB7XG4gICAgICAgIHRoaXMuZS5pbm5lckhUTUwgPSBodG1sO1xuICAgICAgICB0aGlzLm4gPSBBcnJheS5mcm9tKHRoaXMuZS5jaGlsZE5vZGVzKTtcbiAgICB9XG4gICAgaShhbmNob3IpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm4ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGluc2VydCh0aGlzLnQsIHRoaXMubltpXSwgYW5jaG9yKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwKGh0bWwpIHtcbiAgICAgICAgdGhpcy5kKCk7XG4gICAgICAgIHRoaXMuaChodG1sKTtcbiAgICAgICAgdGhpcy5pKHRoaXMuYSk7XG4gICAgfVxuICAgIGQoKSB7XG4gICAgICAgIHRoaXMubi5mb3JFYWNoKGRldGFjaCk7XG4gICAgfVxufVxuY2xhc3MgSHRtbFRhZ0h5ZHJhdGlvbiBleHRlbmRzIEh0bWxUYWcge1xuICAgIGNvbnN0cnVjdG9yKGNsYWltZWRfbm9kZXMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5lID0gdGhpcy5uID0gbnVsbDtcbiAgICAgICAgdGhpcy5sID0gY2xhaW1lZF9ub2RlcztcbiAgICB9XG4gICAgYyhodG1sKSB7XG4gICAgICAgIGlmICh0aGlzLmwpIHtcbiAgICAgICAgICAgIHRoaXMubiA9IHRoaXMubDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLmMoaHRtbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaShhbmNob3IpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm4ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGluc2VydF9oeWRyYXRpb24odGhpcy50LCB0aGlzLm5baV0sIGFuY2hvcik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBhdHRyaWJ1dGVfdG9fb2JqZWN0KGF0dHJpYnV0ZXMpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgIHJlc3VsdFthdHRyaWJ1dGUubmFtZV0gPSBhdHRyaWJ1dGUudmFsdWU7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBnZXRfY3VzdG9tX2VsZW1lbnRzX3Nsb3RzKGVsZW1lbnQpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBlbGVtZW50LmNoaWxkTm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICByZXN1bHRbbm9kZS5zbG90IHx8ICdkZWZhdWx0J10gPSB0cnVlO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmNvbnN0IGFjdGl2ZV9kb2NzID0gbmV3IFNldCgpO1xubGV0IGFjdGl2ZSA9IDA7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vZGFya3NreWFwcC9zdHJpbmctaGFzaC9ibG9iL21hc3Rlci9pbmRleC5qc1xuZnVuY3Rpb24gaGFzaChzdHIpIHtcbiAgICBsZXQgaGFzaCA9IDUzODE7XG4gICAgbGV0IGkgPSBzdHIubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pXG4gICAgICAgIGhhc2ggPSAoKGhhc2ggPDwgNSkgLSBoYXNoKSBeIHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgIHJldHVybiBoYXNoID4+PiAwO1xufVxuZnVuY3Rpb24gY3JlYXRlX3J1bGUobm9kZSwgYSwgYiwgZHVyYXRpb24sIGRlbGF5LCBlYXNlLCBmbiwgdWlkID0gMCkge1xuICAgIGNvbnN0IHN0ZXAgPSAxNi42NjYgLyBkdXJhdGlvbjtcbiAgICBsZXQga2V5ZnJhbWVzID0gJ3tcXG4nO1xuICAgIGZvciAobGV0IHAgPSAwOyBwIDw9IDE7IHAgKz0gc3RlcCkge1xuICAgICAgICBjb25zdCB0ID0gYSArIChiIC0gYSkgKiBlYXNlKHApO1xuICAgICAgICBrZXlmcmFtZXMgKz0gcCAqIDEwMCArIGAleyR7Zm4odCwgMSAtIHQpfX1cXG5gO1xuICAgIH1cbiAgICBjb25zdCBydWxlID0ga2V5ZnJhbWVzICsgYDEwMCUgeyR7Zm4oYiwgMSAtIGIpfX1cXG59YDtcbiAgICBjb25zdCBuYW1lID0gYF9fc3ZlbHRlXyR7aGFzaChydWxlKX1fJHt1aWR9YDtcbiAgICBjb25zdCBkb2MgPSBnZXRfcm9vdF9mb3Jfc3R5bGUobm9kZSk7XG4gICAgYWN0aXZlX2RvY3MuYWRkKGRvYyk7XG4gICAgY29uc3Qgc3R5bGVzaGVldCA9IGRvYy5fX3N2ZWx0ZV9zdHlsZXNoZWV0IHx8IChkb2MuX19zdmVsdGVfc3R5bGVzaGVldCA9IGFwcGVuZF9lbXB0eV9zdHlsZXNoZWV0KG5vZGUpLnNoZWV0KTtcbiAgICBjb25zdCBjdXJyZW50X3J1bGVzID0gZG9jLl9fc3ZlbHRlX3J1bGVzIHx8IChkb2MuX19zdmVsdGVfcnVsZXMgPSB7fSk7XG4gICAgaWYgKCFjdXJyZW50X3J1bGVzW25hbWVdKSB7XG4gICAgICAgIGN1cnJlbnRfcnVsZXNbbmFtZV0gPSB0cnVlO1xuICAgICAgICBzdHlsZXNoZWV0Lmluc2VydFJ1bGUoYEBrZXlmcmFtZXMgJHtuYW1lfSAke3J1bGV9YCwgc3R5bGVzaGVldC5jc3NSdWxlcy5sZW5ndGgpO1xuICAgIH1cbiAgICBjb25zdCBhbmltYXRpb24gPSBub2RlLnN0eWxlLmFuaW1hdGlvbiB8fCAnJztcbiAgICBub2RlLnN0eWxlLmFuaW1hdGlvbiA9IGAke2FuaW1hdGlvbiA/IGAke2FuaW1hdGlvbn0sIGAgOiAnJ30ke25hbWV9ICR7ZHVyYXRpb259bXMgbGluZWFyICR7ZGVsYXl9bXMgMSBib3RoYDtcbiAgICBhY3RpdmUgKz0gMTtcbiAgICByZXR1cm4gbmFtZTtcbn1cbmZ1bmN0aW9uIGRlbGV0ZV9ydWxlKG5vZGUsIG5hbWUpIHtcbiAgICBjb25zdCBwcmV2aW91cyA9IChub2RlLnN0eWxlLmFuaW1hdGlvbiB8fCAnJykuc3BsaXQoJywgJyk7XG4gICAgY29uc3QgbmV4dCA9IHByZXZpb3VzLmZpbHRlcihuYW1lXG4gICAgICAgID8gYW5pbSA9PiBhbmltLmluZGV4T2YobmFtZSkgPCAwIC8vIHJlbW92ZSBzcGVjaWZpYyBhbmltYXRpb25cbiAgICAgICAgOiBhbmltID0+IGFuaW0uaW5kZXhPZignX19zdmVsdGUnKSA9PT0gLTEgLy8gcmVtb3ZlIGFsbCBTdmVsdGUgYW5pbWF0aW9uc1xuICAgICk7XG4gICAgY29uc3QgZGVsZXRlZCA9IHByZXZpb3VzLmxlbmd0aCAtIG5leHQubGVuZ3RoO1xuICAgIGlmIChkZWxldGVkKSB7XG4gICAgICAgIG5vZGUuc3R5bGUuYW5pbWF0aW9uID0gbmV4dC5qb2luKCcsICcpO1xuICAgICAgICBhY3RpdmUgLT0gZGVsZXRlZDtcbiAgICAgICAgaWYgKCFhY3RpdmUpXG4gICAgICAgICAgICBjbGVhcl9ydWxlcygpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNsZWFyX3J1bGVzKCkge1xuICAgIHJhZigoKSA9PiB7XG4gICAgICAgIGlmIChhY3RpdmUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGFjdGl2ZV9kb2NzLmZvckVhY2goZG9jID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlc2hlZXQgPSBkb2MuX19zdmVsdGVfc3R5bGVzaGVldDtcbiAgICAgICAgICAgIGxldCBpID0gc3R5bGVzaGVldC5jc3NSdWxlcy5sZW5ndGg7XG4gICAgICAgICAgICB3aGlsZSAoaS0tKVxuICAgICAgICAgICAgICAgIHN0eWxlc2hlZXQuZGVsZXRlUnVsZShpKTtcbiAgICAgICAgICAgIGRvYy5fX3N2ZWx0ZV9ydWxlcyA9IHt9O1xuICAgICAgICB9KTtcbiAgICAgICAgYWN0aXZlX2RvY3MuY2xlYXIoKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlX2FuaW1hdGlvbihub2RlLCBmcm9tLCBmbiwgcGFyYW1zKSB7XG4gICAgaWYgKCFmcm9tKVxuICAgICAgICByZXR1cm4gbm9vcDtcbiAgICBjb25zdCB0byA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgaWYgKGZyb20ubGVmdCA9PT0gdG8ubGVmdCAmJiBmcm9tLnJpZ2h0ID09PSB0by5yaWdodCAmJiBmcm9tLnRvcCA9PT0gdG8udG9wICYmIGZyb20uYm90dG9tID09PSB0by5ib3R0b20pXG4gICAgICAgIHJldHVybiBub29wO1xuICAgIGNvbnN0IHsgZGVsYXkgPSAwLCBkdXJhdGlvbiA9IDMwMCwgZWFzaW5nID0gaWRlbnRpdHksIFxuICAgIC8vIEB0cy1pZ25vcmUgdG9kbzogc2hvdWxkIHRoaXMgYmUgc2VwYXJhdGVkIGZyb20gZGVzdHJ1Y3R1cmluZz8gT3Igc3RhcnQvZW5kIGFkZGVkIHRvIHB1YmxpYyBhcGkgYW5kIGRvY3VtZW50YXRpb24/XG4gICAgc3RhcnQ6IHN0YXJ0X3RpbWUgPSBub3coKSArIGRlbGF5LCBcbiAgICAvLyBAdHMtaWdub3JlIHRvZG86XG4gICAgZW5kID0gc3RhcnRfdGltZSArIGR1cmF0aW9uLCB0aWNrID0gbm9vcCwgY3NzIH0gPSBmbihub2RlLCB7IGZyb20sIHRvIH0sIHBhcmFtcyk7XG4gICAgbGV0IHJ1bm5pbmcgPSB0cnVlO1xuICAgIGxldCBzdGFydGVkID0gZmFsc2U7XG4gICAgbGV0IG5hbWU7XG4gICAgZnVuY3Rpb24gc3RhcnQoKSB7XG4gICAgICAgIGlmIChjc3MpIHtcbiAgICAgICAgICAgIG5hbWUgPSBjcmVhdGVfcnVsZShub2RlLCAwLCAxLCBkdXJhdGlvbiwgZGVsYXksIGVhc2luZywgY3NzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWRlbGF5KSB7XG4gICAgICAgICAgICBzdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBzdG9wKCkge1xuICAgICAgICBpZiAoY3NzKVxuICAgICAgICAgICAgZGVsZXRlX3J1bGUobm9kZSwgbmFtZSk7XG4gICAgICAgIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICB9XG4gICAgbG9vcChub3cgPT4ge1xuICAgICAgICBpZiAoIXN0YXJ0ZWQgJiYgbm93ID49IHN0YXJ0X3RpbWUpIHtcbiAgICAgICAgICAgIHN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydGVkICYmIG5vdyA+PSBlbmQpIHtcbiAgICAgICAgICAgIHRpY2soMSwgMCk7XG4gICAgICAgICAgICBzdG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFydW5uaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHAgPSBub3cgLSBzdGFydF90aW1lO1xuICAgICAgICAgICAgY29uc3QgdCA9IDAgKyAxICogZWFzaW5nKHAgLyBkdXJhdGlvbik7XG4gICAgICAgICAgICB0aWNrKHQsIDEgLSB0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgICBzdGFydCgpO1xuICAgIHRpY2soMCwgMSk7XG4gICAgcmV0dXJuIHN0b3A7XG59XG5mdW5jdGlvbiBmaXhfcG9zaXRpb24obm9kZSkge1xuICAgIGNvbnN0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTtcbiAgICBpZiAoc3R5bGUucG9zaXRpb24gIT09ICdhYnNvbHV0ZScgJiYgc3R5bGUucG9zaXRpb24gIT09ICdmaXhlZCcpIHtcbiAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBzdHlsZTtcbiAgICAgICAgY29uc3QgYSA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIG5vZGUuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgICBub2RlLnN0eWxlLndpZHRoID0gd2lkdGg7XG4gICAgICAgIG5vZGUuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICBhZGRfdHJhbnNmb3JtKG5vZGUsIGEpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFkZF90cmFuc2Zvcm0obm9kZSwgYSkge1xuICAgIGNvbnN0IGIgPSBub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGlmIChhLmxlZnQgIT09IGIubGVmdCB8fCBhLnRvcCAhPT0gYi50b3ApIHtcbiAgICAgICAgY29uc3Qgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKG5vZGUpO1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm0gPSBzdHlsZS50cmFuc2Zvcm0gPT09ICdub25lJyA/ICcnIDogc3R5bGUudHJhbnNmb3JtO1xuICAgICAgICBub2RlLnN0eWxlLnRyYW5zZm9ybSA9IGAke3RyYW5zZm9ybX0gdHJhbnNsYXRlKCR7YS5sZWZ0IC0gYi5sZWZ0fXB4LCAke2EudG9wIC0gYi50b3B9cHgpYDtcbiAgICB9XG59XG5cbmxldCBjdXJyZW50X2NvbXBvbmVudDtcbmZ1bmN0aW9uIHNldF9jdXJyZW50X2NvbXBvbmVudChjb21wb25lbnQpIHtcbiAgICBjdXJyZW50X2NvbXBvbmVudCA9IGNvbXBvbmVudDtcbn1cbmZ1bmN0aW9uIGdldF9jdXJyZW50X2NvbXBvbmVudCgpIHtcbiAgICBpZiAoIWN1cnJlbnRfY29tcG9uZW50KVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Z1bmN0aW9uIGNhbGxlZCBvdXRzaWRlIGNvbXBvbmVudCBpbml0aWFsaXphdGlvbicpO1xuICAgIHJldHVybiBjdXJyZW50X2NvbXBvbmVudDtcbn1cbmZ1bmN0aW9uIGJlZm9yZVVwZGF0ZShmbikge1xuICAgIGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLmJlZm9yZV91cGRhdGUucHVzaChmbik7XG59XG5mdW5jdGlvbiBvbk1vdW50KGZuKSB7XG4gICAgZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQub25fbW91bnQucHVzaChmbik7XG59XG5mdW5jdGlvbiBhZnRlclVwZGF0ZShmbikge1xuICAgIGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLmFmdGVyX3VwZGF0ZS5wdXNoKGZuKTtcbn1cbmZ1bmN0aW9uIG9uRGVzdHJveShmbikge1xuICAgIGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLm9uX2Rlc3Ryb3kucHVzaChmbik7XG59XG5mdW5jdGlvbiBjcmVhdGVFdmVudERpc3BhdGNoZXIoKSB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gZ2V0X2N1cnJlbnRfY29tcG9uZW50KCk7XG4gICAgcmV0dXJuICh0eXBlLCBkZXRhaWwpID0+IHtcbiAgICAgICAgY29uc3QgY2FsbGJhY2tzID0gY29tcG9uZW50LiQkLmNhbGxiYWNrc1t0eXBlXTtcbiAgICAgICAgaWYgKGNhbGxiYWNrcykge1xuICAgICAgICAgICAgLy8gVE9ETyBhcmUgdGhlcmUgc2l0dWF0aW9ucyB3aGVyZSBldmVudHMgY291bGQgYmUgZGlzcGF0Y2hlZFxuICAgICAgICAgICAgLy8gaW4gYSBzZXJ2ZXIgKG5vbi1ET00pIGVudmlyb25tZW50P1xuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBjdXN0b21fZXZlbnQodHlwZSwgZGV0YWlsKTtcbiAgICAgICAgICAgIGNhbGxiYWNrcy5zbGljZSgpLmZvckVhY2goZm4gPT4ge1xuICAgICAgICAgICAgICAgIGZuLmNhbGwoY29tcG9uZW50LCBldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG59XG5mdW5jdGlvbiBzZXRDb250ZXh0KGtleSwgY29udGV4dCkge1xuICAgIGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLmNvbnRleHQuc2V0KGtleSwgY29udGV4dCk7XG59XG5mdW5jdGlvbiBnZXRDb250ZXh0KGtleSkge1xuICAgIHJldHVybiBnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5jb250ZXh0LmdldChrZXkpO1xufVxuZnVuY3Rpb24gZ2V0QWxsQ29udGV4dHMoKSB7XG4gICAgcmV0dXJuIGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLmNvbnRleHQ7XG59XG5mdW5jdGlvbiBoYXNDb250ZXh0KGtleSkge1xuICAgIHJldHVybiBnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5jb250ZXh0LmhhcyhrZXkpO1xufVxuLy8gVE9ETyBmaWd1cmUgb3V0IGlmIHdlIHN0aWxsIHdhbnQgdG8gc3VwcG9ydFxuLy8gc2hvcnRoYW5kIGV2ZW50cywgb3IgaWYgd2Ugd2FudCB0byBpbXBsZW1lbnRcbi8vIGEgcmVhbCBidWJibGluZyBtZWNoYW5pc21cbmZ1bmN0aW9uIGJ1YmJsZShjb21wb25lbnQsIGV2ZW50KSB7XG4gICAgY29uc3QgY2FsbGJhY2tzID0gY29tcG9uZW50LiQkLmNhbGxiYWNrc1tldmVudC50eXBlXTtcbiAgICBpZiAoY2FsbGJhY2tzKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY2FsbGJhY2tzLnNsaWNlKCkuZm9yRWFjaChmbiA9PiBmbi5jYWxsKHRoaXMsIGV2ZW50KSk7XG4gICAgfVxufVxuXG5jb25zdCBkaXJ0eV9jb21wb25lbnRzID0gW107XG5jb25zdCBpbnRyb3MgPSB7IGVuYWJsZWQ6IGZhbHNlIH07XG5jb25zdCBiaW5kaW5nX2NhbGxiYWNrcyA9IFtdO1xuY29uc3QgcmVuZGVyX2NhbGxiYWNrcyA9IFtdO1xuY29uc3QgZmx1c2hfY2FsbGJhY2tzID0gW107XG5jb25zdCByZXNvbHZlZF9wcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5sZXQgdXBkYXRlX3NjaGVkdWxlZCA9IGZhbHNlO1xuZnVuY3Rpb24gc2NoZWR1bGVfdXBkYXRlKCkge1xuICAgIGlmICghdXBkYXRlX3NjaGVkdWxlZCkge1xuICAgICAgICB1cGRhdGVfc2NoZWR1bGVkID0gdHJ1ZTtcbiAgICAgICAgcmVzb2x2ZWRfcHJvbWlzZS50aGVuKGZsdXNoKTtcbiAgICB9XG59XG5mdW5jdGlvbiB0aWNrKCkge1xuICAgIHNjaGVkdWxlX3VwZGF0ZSgpO1xuICAgIHJldHVybiByZXNvbHZlZF9wcm9taXNlO1xufVxuZnVuY3Rpb24gYWRkX3JlbmRlcl9jYWxsYmFjayhmbikge1xuICAgIHJlbmRlcl9jYWxsYmFja3MucHVzaChmbik7XG59XG5mdW5jdGlvbiBhZGRfZmx1c2hfY2FsbGJhY2soZm4pIHtcbiAgICBmbHVzaF9jYWxsYmFja3MucHVzaChmbik7XG59XG5sZXQgZmx1c2hpbmcgPSBmYWxzZTtcbmNvbnN0IHNlZW5fY2FsbGJhY2tzID0gbmV3IFNldCgpO1xuZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgaWYgKGZsdXNoaW5nKVxuICAgICAgICByZXR1cm47XG4gICAgZmx1c2hpbmcgPSB0cnVlO1xuICAgIGRvIHtcbiAgICAgICAgLy8gZmlyc3QsIGNhbGwgYmVmb3JlVXBkYXRlIGZ1bmN0aW9uc1xuICAgICAgICAvLyBhbmQgdXBkYXRlIGNvbXBvbmVudHNcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXJ0eV9jb21wb25lbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnQgPSBkaXJ0eV9jb21wb25lbnRzW2ldO1xuICAgICAgICAgICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgICAgICAgICB1cGRhdGUoY29tcG9uZW50LiQkKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRfY3VycmVudF9jb21wb25lbnQobnVsbCk7XG4gICAgICAgIGRpcnR5X2NvbXBvbmVudHMubGVuZ3RoID0gMDtcbiAgICAgICAgd2hpbGUgKGJpbmRpbmdfY2FsbGJhY2tzLmxlbmd0aClcbiAgICAgICAgICAgIGJpbmRpbmdfY2FsbGJhY2tzLnBvcCgpKCk7XG4gICAgICAgIC8vIHRoZW4sIG9uY2UgY29tcG9uZW50cyBhcmUgdXBkYXRlZCwgY2FsbFxuICAgICAgICAvLyBhZnRlclVwZGF0ZSBmdW5jdGlvbnMuIFRoaXMgbWF5IGNhdXNlXG4gICAgICAgIC8vIHN1YnNlcXVlbnQgdXBkYXRlcy4uLlxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlbmRlcl9jYWxsYmFja3MubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gcmVuZGVyX2NhbGxiYWNrc1tpXTtcbiAgICAgICAgICAgIGlmICghc2Vlbl9jYWxsYmFja3MuaGFzKGNhbGxiYWNrKSkge1xuICAgICAgICAgICAgICAgIC8vIC4uLnNvIGd1YXJkIGFnYWluc3QgaW5maW5pdGUgbG9vcHNcbiAgICAgICAgICAgICAgICBzZWVuX2NhbGxiYWNrcy5hZGQoY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyX2NhbGxiYWNrcy5sZW5ndGggPSAwO1xuICAgIH0gd2hpbGUgKGRpcnR5X2NvbXBvbmVudHMubGVuZ3RoKTtcbiAgICB3aGlsZSAoZmx1c2hfY2FsbGJhY2tzLmxlbmd0aCkge1xuICAgICAgICBmbHVzaF9jYWxsYmFja3MucG9wKCkoKTtcbiAgICB9XG4gICAgdXBkYXRlX3NjaGVkdWxlZCA9IGZhbHNlO1xuICAgIGZsdXNoaW5nID0gZmFsc2U7XG4gICAgc2Vlbl9jYWxsYmFja3MuY2xlYXIoKTtcbn1cbmZ1bmN0aW9uIHVwZGF0ZSgkJCkge1xuICAgIGlmICgkJC5mcmFnbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAkJC51cGRhdGUoKTtcbiAgICAgICAgcnVuX2FsbCgkJC5iZWZvcmVfdXBkYXRlKTtcbiAgICAgICAgY29uc3QgZGlydHkgPSAkJC5kaXJ0eTtcbiAgICAgICAgJCQuZGlydHkgPSBbLTFdO1xuICAgICAgICAkJC5mcmFnbWVudCAmJiAkJC5mcmFnbWVudC5wKCQkLmN0eCwgZGlydHkpO1xuICAgICAgICAkJC5hZnRlcl91cGRhdGUuZm9yRWFjaChhZGRfcmVuZGVyX2NhbGxiYWNrKTtcbiAgICB9XG59XG5cbmxldCBwcm9taXNlO1xuZnVuY3Rpb24gd2FpdCgpIHtcbiAgICBpZiAoIXByb21pc2UpIHtcbiAgICAgICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICBwcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcHJvbWlzZSA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cbmZ1bmN0aW9uIGRpc3BhdGNoKG5vZGUsIGRpcmVjdGlvbiwga2luZCkge1xuICAgIG5vZGUuZGlzcGF0Y2hFdmVudChjdXN0b21fZXZlbnQoYCR7ZGlyZWN0aW9uID8gJ2ludHJvJyA6ICdvdXRybyd9JHtraW5kfWApKTtcbn1cbmNvbnN0IG91dHJvaW5nID0gbmV3IFNldCgpO1xubGV0IG91dHJvcztcbmZ1bmN0aW9uIGdyb3VwX291dHJvcygpIHtcbiAgICBvdXRyb3MgPSB7XG4gICAgICAgIHI6IDAsXG4gICAgICAgIGM6IFtdLFxuICAgICAgICBwOiBvdXRyb3MgLy8gcGFyZW50IGdyb3VwXG4gICAgfTtcbn1cbmZ1bmN0aW9uIGNoZWNrX291dHJvcygpIHtcbiAgICBpZiAoIW91dHJvcy5yKSB7XG4gICAgICAgIHJ1bl9hbGwob3V0cm9zLmMpO1xuICAgIH1cbiAgICBvdXRyb3MgPSBvdXRyb3MucDtcbn1cbmZ1bmN0aW9uIHRyYW5zaXRpb25faW4oYmxvY2ssIGxvY2FsKSB7XG4gICAgaWYgKGJsb2NrICYmIGJsb2NrLmkpIHtcbiAgICAgICAgb3V0cm9pbmcuZGVsZXRlKGJsb2NrKTtcbiAgICAgICAgYmxvY2suaShsb2NhbCk7XG4gICAgfVxufVxuZnVuY3Rpb24gdHJhbnNpdGlvbl9vdXQoYmxvY2ssIGxvY2FsLCBkZXRhY2gsIGNhbGxiYWNrKSB7XG4gICAgaWYgKGJsb2NrICYmIGJsb2NrLm8pIHtcbiAgICAgICAgaWYgKG91dHJvaW5nLmhhcyhibG9jaykpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIG91dHJvaW5nLmFkZChibG9jayk7XG4gICAgICAgIG91dHJvcy5jLnB1c2goKCkgPT4ge1xuICAgICAgICAgICAgb3V0cm9pbmcuZGVsZXRlKGJsb2NrKTtcbiAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGlmIChkZXRhY2gpXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrLmQoMSk7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGJsb2NrLm8obG9jYWwpO1xuICAgIH1cbn1cbmNvbnN0IG51bGxfdHJhbnNpdGlvbiA9IHsgZHVyYXRpb246IDAgfTtcbmZ1bmN0aW9uIGNyZWF0ZV9pbl90cmFuc2l0aW9uKG5vZGUsIGZuLCBwYXJhbXMpIHtcbiAgICBsZXQgY29uZmlnID0gZm4obm9kZSwgcGFyYW1zKTtcbiAgICBsZXQgcnVubmluZyA9IGZhbHNlO1xuICAgIGxldCBhbmltYXRpb25fbmFtZTtcbiAgICBsZXQgdGFzaztcbiAgICBsZXQgdWlkID0gMDtcbiAgICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgICBpZiAoYW5pbWF0aW9uX25hbWUpXG4gICAgICAgICAgICBkZWxldGVfcnVsZShub2RlLCBhbmltYXRpb25fbmFtZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdvKCkge1xuICAgICAgICBjb25zdCB7IGRlbGF5ID0gMCwgZHVyYXRpb24gPSAzMDAsIGVhc2luZyA9IGlkZW50aXR5LCB0aWNrID0gbm9vcCwgY3NzIH0gPSBjb25maWcgfHwgbnVsbF90cmFuc2l0aW9uO1xuICAgICAgICBpZiAoY3NzKVxuICAgICAgICAgICAgYW5pbWF0aW9uX25hbWUgPSBjcmVhdGVfcnVsZShub2RlLCAwLCAxLCBkdXJhdGlvbiwgZGVsYXksIGVhc2luZywgY3NzLCB1aWQrKyk7XG4gICAgICAgIHRpY2soMCwgMSk7XG4gICAgICAgIGNvbnN0IHN0YXJ0X3RpbWUgPSBub3coKSArIGRlbGF5O1xuICAgICAgICBjb25zdCBlbmRfdGltZSA9IHN0YXJ0X3RpbWUgKyBkdXJhdGlvbjtcbiAgICAgICAgaWYgKHRhc2spXG4gICAgICAgICAgICB0YXNrLmFib3J0KCk7XG4gICAgICAgIHJ1bm5pbmcgPSB0cnVlO1xuICAgICAgICBhZGRfcmVuZGVyX2NhbGxiYWNrKCgpID0+IGRpc3BhdGNoKG5vZGUsIHRydWUsICdzdGFydCcpKTtcbiAgICAgICAgdGFzayA9IGxvb3Aobm93ID0+IHtcbiAgICAgICAgICAgIGlmIChydW5uaW5nKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vdyA+PSBlbmRfdGltZSkge1xuICAgICAgICAgICAgICAgICAgICB0aWNrKDEsIDApO1xuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaChub2RlLCB0cnVlLCAnZW5kJyk7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5vdyA+PSBzdGFydF90aW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlYXNpbmcoKG5vdyAtIHN0YXJ0X3RpbWUpIC8gZHVyYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB0aWNrKHQsIDEgLSB0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcnVubmluZztcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGxldCBzdGFydGVkID0gZmFsc2U7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnQoKSB7XG4gICAgICAgICAgICBpZiAoc3RhcnRlZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBzdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGRlbGV0ZV9ydWxlKG5vZGUpO1xuICAgICAgICAgICAgaWYgKGlzX2Z1bmN0aW9uKGNvbmZpZykpIHtcbiAgICAgICAgICAgICAgICBjb25maWcgPSBjb25maWcoKTtcbiAgICAgICAgICAgICAgICB3YWl0KCkudGhlbihnbyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBnbygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbnZhbGlkYXRlKCkge1xuICAgICAgICAgICAgc3RhcnRlZCA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBlbmQoKSB7XG4gICAgICAgICAgICBpZiAocnVubmluZykge1xuICAgICAgICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICAgICAgICBydW5uaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlX291dF90cmFuc2l0aW9uKG5vZGUsIGZuLCBwYXJhbXMpIHtcbiAgICBsZXQgY29uZmlnID0gZm4obm9kZSwgcGFyYW1zKTtcbiAgICBsZXQgcnVubmluZyA9IHRydWU7XG4gICAgbGV0IGFuaW1hdGlvbl9uYW1lO1xuICAgIGNvbnN0IGdyb3VwID0gb3V0cm9zO1xuICAgIGdyb3VwLnIgKz0gMTtcbiAgICBmdW5jdGlvbiBnbygpIHtcbiAgICAgICAgY29uc3QgeyBkZWxheSA9IDAsIGR1cmF0aW9uID0gMzAwLCBlYXNpbmcgPSBpZGVudGl0eSwgdGljayA9IG5vb3AsIGNzcyB9ID0gY29uZmlnIHx8IG51bGxfdHJhbnNpdGlvbjtcbiAgICAgICAgaWYgKGNzcylcbiAgICAgICAgICAgIGFuaW1hdGlvbl9uYW1lID0gY3JlYXRlX3J1bGUobm9kZSwgMSwgMCwgZHVyYXRpb24sIGRlbGF5LCBlYXNpbmcsIGNzcyk7XG4gICAgICAgIGNvbnN0IHN0YXJ0X3RpbWUgPSBub3coKSArIGRlbGF5O1xuICAgICAgICBjb25zdCBlbmRfdGltZSA9IHN0YXJ0X3RpbWUgKyBkdXJhdGlvbjtcbiAgICAgICAgYWRkX3JlbmRlcl9jYWxsYmFjaygoKSA9PiBkaXNwYXRjaChub2RlLCBmYWxzZSwgJ3N0YXJ0JykpO1xuICAgICAgICBsb29wKG5vdyA9PiB7XG4gICAgICAgICAgICBpZiAocnVubmluZykge1xuICAgICAgICAgICAgICAgIGlmIChub3cgPj0gZW5kX3RpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGljaygwLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gobm9kZSwgZmFsc2UsICdlbmQnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEtLWdyb3VwLnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgd2lsbCByZXN1bHQgaW4gYGVuZCgpYCBiZWluZyBjYWxsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzbyB3ZSBkb24ndCBuZWVkIHRvIGNsZWFuIHVwIGhlcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9hbGwoZ3JvdXAuYyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobm93ID49IHN0YXJ0X3RpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGVhc2luZygobm93IC0gc3RhcnRfdGltZSkgLyBkdXJhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIHRpY2soMSAtIHQsIHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBydW5uaW5nO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGlzX2Z1bmN0aW9uKGNvbmZpZykpIHtcbiAgICAgICAgd2FpdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgY29uZmlnID0gY29uZmlnKCk7XG4gICAgICAgICAgICBnbygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGdvKCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGVuZChyZXNldCkge1xuICAgICAgICAgICAgaWYgKHJlc2V0ICYmIGNvbmZpZy50aWNrKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLnRpY2soMSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocnVubmluZykge1xuICAgICAgICAgICAgICAgIGlmIChhbmltYXRpb25fbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlX3J1bGUobm9kZSwgYW5pbWF0aW9uX25hbWUpO1xuICAgICAgICAgICAgICAgIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG59XG5mdW5jdGlvbiBjcmVhdGVfYmlkaXJlY3Rpb25hbF90cmFuc2l0aW9uKG5vZGUsIGZuLCBwYXJhbXMsIGludHJvKSB7XG4gICAgbGV0IGNvbmZpZyA9IGZuKG5vZGUsIHBhcmFtcyk7XG4gICAgbGV0IHQgPSBpbnRybyA/IDAgOiAxO1xuICAgIGxldCBydW5uaW5nX3Byb2dyYW0gPSBudWxsO1xuICAgIGxldCBwZW5kaW5nX3Byb2dyYW0gPSBudWxsO1xuICAgIGxldCBhbmltYXRpb25fbmFtZSA9IG51bGw7XG4gICAgZnVuY3Rpb24gY2xlYXJfYW5pbWF0aW9uKCkge1xuICAgICAgICBpZiAoYW5pbWF0aW9uX25hbWUpXG4gICAgICAgICAgICBkZWxldGVfcnVsZShub2RlLCBhbmltYXRpb25fbmFtZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluaXQocHJvZ3JhbSwgZHVyYXRpb24pIHtcbiAgICAgICAgY29uc3QgZCA9IChwcm9ncmFtLmIgLSB0KTtcbiAgICAgICAgZHVyYXRpb24gKj0gTWF0aC5hYnMoZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhOiB0LFxuICAgICAgICAgICAgYjogcHJvZ3JhbS5iLFxuICAgICAgICAgICAgZCxcbiAgICAgICAgICAgIGR1cmF0aW9uLFxuICAgICAgICAgICAgc3RhcnQ6IHByb2dyYW0uc3RhcnQsXG4gICAgICAgICAgICBlbmQ6IHByb2dyYW0uc3RhcnQgKyBkdXJhdGlvbixcbiAgICAgICAgICAgIGdyb3VwOiBwcm9ncmFtLmdyb3VwXG4gICAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdvKGIpIHtcbiAgICAgICAgY29uc3QgeyBkZWxheSA9IDAsIGR1cmF0aW9uID0gMzAwLCBlYXNpbmcgPSBpZGVudGl0eSwgdGljayA9IG5vb3AsIGNzcyB9ID0gY29uZmlnIHx8IG51bGxfdHJhbnNpdGlvbjtcbiAgICAgICAgY29uc3QgcHJvZ3JhbSA9IHtcbiAgICAgICAgICAgIHN0YXJ0OiBub3coKSArIGRlbGF5LFxuICAgICAgICAgICAgYlxuICAgICAgICB9O1xuICAgICAgICBpZiAoIWIpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgdG9kbzogaW1wcm92ZSB0eXBpbmdzXG4gICAgICAgICAgICBwcm9ncmFtLmdyb3VwID0gb3V0cm9zO1xuICAgICAgICAgICAgb3V0cm9zLnIgKz0gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocnVubmluZ19wcm9ncmFtIHx8IHBlbmRpbmdfcHJvZ3JhbSkge1xuICAgICAgICAgICAgcGVuZGluZ19wcm9ncmFtID0gcHJvZ3JhbTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgYW4gaW50cm8sIGFuZCB0aGVyZSdzIGEgZGVsYXksIHdlIG5lZWQgdG8gZG9cbiAgICAgICAgICAgIC8vIGFuIGluaXRpYWwgdGljayBhbmQvb3IgYXBwbHkgQ1NTIGFuaW1hdGlvbiBpbW1lZGlhdGVseVxuICAgICAgICAgICAgaWYgKGNzcykge1xuICAgICAgICAgICAgICAgIGNsZWFyX2FuaW1hdGlvbigpO1xuICAgICAgICAgICAgICAgIGFuaW1hdGlvbl9uYW1lID0gY3JlYXRlX3J1bGUobm9kZSwgdCwgYiwgZHVyYXRpb24sIGRlbGF5LCBlYXNpbmcsIGNzcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYilcbiAgICAgICAgICAgICAgICB0aWNrKDAsIDEpO1xuICAgICAgICAgICAgcnVubmluZ19wcm9ncmFtID0gaW5pdChwcm9ncmFtLCBkdXJhdGlvbik7XG4gICAgICAgICAgICBhZGRfcmVuZGVyX2NhbGxiYWNrKCgpID0+IGRpc3BhdGNoKG5vZGUsIGIsICdzdGFydCcpKTtcbiAgICAgICAgICAgIGxvb3Aobm93ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGVuZGluZ19wcm9ncmFtICYmIG5vdyA+IHBlbmRpbmdfcHJvZ3JhbS5zdGFydCkge1xuICAgICAgICAgICAgICAgICAgICBydW5uaW5nX3Byb2dyYW0gPSBpbml0KHBlbmRpbmdfcHJvZ3JhbSwgZHVyYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nX3Byb2dyYW0gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaChub2RlLCBydW5uaW5nX3Byb2dyYW0uYiwgJ3N0YXJ0Jyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyX2FuaW1hdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uX25hbWUgPSBjcmVhdGVfcnVsZShub2RlLCB0LCBydW5uaW5nX3Byb2dyYW0uYiwgcnVubmluZ19wcm9ncmFtLmR1cmF0aW9uLCAwLCBlYXNpbmcsIGNvbmZpZy5jc3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChydW5uaW5nX3Byb2dyYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vdyA+PSBydW5uaW5nX3Byb2dyYW0uZW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aWNrKHQgPSBydW5uaW5nX3Byb2dyYW0uYiwgMSAtIHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gobm9kZSwgcnVubmluZ19wcm9ncmFtLmIsICdlbmQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGVuZGluZ19wcm9ncmFtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UncmUgZG9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChydW5uaW5nX3Byb2dyYW0uYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRybyBcdTIwMTQgd2UgY2FuIHRpZHkgdXAgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJfYW5pbWF0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRybyBcdTIwMTQgbmVlZHMgdG8gYmUgY29vcmRpbmF0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEtLXJ1bm5pbmdfcHJvZ3JhbS5ncm91cC5yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuX2FsbChydW5uaW5nX3Byb2dyYW0uZ3JvdXAuYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcnVubmluZ19wcm9ncmFtID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChub3cgPj0gcnVubmluZ19wcm9ncmFtLnN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gbm93IC0gcnVubmluZ19wcm9ncmFtLnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHJ1bm5pbmdfcHJvZ3JhbS5hICsgcnVubmluZ19wcm9ncmFtLmQgKiBlYXNpbmcocCAvIHJ1bm5pbmdfcHJvZ3JhbS5kdXJhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aWNrKHQsIDEgLSB0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gISEocnVubmluZ19wcm9ncmFtIHx8IHBlbmRpbmdfcHJvZ3JhbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBydW4oYikge1xuICAgICAgICAgICAgaWYgKGlzX2Z1bmN0aW9uKGNvbmZpZykpIHtcbiAgICAgICAgICAgICAgICB3YWl0KCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnID0gY29uZmlnKCk7XG4gICAgICAgICAgICAgICAgICAgIGdvKGIpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZ28oYik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVuZCgpIHtcbiAgICAgICAgICAgIGNsZWFyX2FuaW1hdGlvbigpO1xuICAgICAgICAgICAgcnVubmluZ19wcm9ncmFtID0gcGVuZGluZ19wcm9ncmFtID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbmZ1bmN0aW9uIGhhbmRsZV9wcm9taXNlKHByb21pc2UsIGluZm8pIHtcbiAgICBjb25zdCB0b2tlbiA9IGluZm8udG9rZW4gPSB7fTtcbiAgICBmdW5jdGlvbiB1cGRhdGUodHlwZSwgaW5kZXgsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGluZm8udG9rZW4gIT09IHRva2VuKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpbmZvLnJlc29sdmVkID0gdmFsdWU7XG4gICAgICAgIGxldCBjaGlsZF9jdHggPSBpbmZvLmN0eDtcbiAgICAgICAgaWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjaGlsZF9jdHggPSBjaGlsZF9jdHguc2xpY2UoKTtcbiAgICAgICAgICAgIGNoaWxkX2N0eFtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYmxvY2sgPSB0eXBlICYmIChpbmZvLmN1cnJlbnQgPSB0eXBlKShjaGlsZF9jdHgpO1xuICAgICAgICBsZXQgbmVlZHNfZmx1c2ggPSBmYWxzZTtcbiAgICAgICAgaWYgKGluZm8uYmxvY2spIHtcbiAgICAgICAgICAgIGlmIChpbmZvLmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIGluZm8uYmxvY2tzLmZvckVhY2goKGJsb2NrLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpICE9PSBpbmRleCAmJiBibG9jaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBfb3V0cm9zKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uX291dChibG9jaywgMSwgMSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmZvLmJsb2Nrc1tpXSA9PT0gYmxvY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5ibG9ja3NbaV0gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfb3V0cm9zKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGluZm8uYmxvY2suZCgxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJsb2NrLmMoKTtcbiAgICAgICAgICAgIHRyYW5zaXRpb25faW4oYmxvY2ssIDEpO1xuICAgICAgICAgICAgYmxvY2subShpbmZvLm1vdW50KCksIGluZm8uYW5jaG9yKTtcbiAgICAgICAgICAgIG5lZWRzX2ZsdXNoID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpbmZvLmJsb2NrID0gYmxvY2s7XG4gICAgICAgIGlmIChpbmZvLmJsb2NrcylcbiAgICAgICAgICAgIGluZm8uYmxvY2tzW2luZGV4XSA9IGJsb2NrO1xuICAgICAgICBpZiAobmVlZHNfZmx1c2gpIHtcbiAgICAgICAgICAgIGZsdXNoKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzX3Byb21pc2UocHJvbWlzZSkpIHtcbiAgICAgICAgY29uc3QgY3VycmVudF9jb21wb25lbnQgPSBnZXRfY3VycmVudF9jb21wb25lbnQoKTtcbiAgICAgICAgcHJvbWlzZS50aGVuKHZhbHVlID0+IHtcbiAgICAgICAgICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChjdXJyZW50X2NvbXBvbmVudCk7XG4gICAgICAgICAgICB1cGRhdGUoaW5mby50aGVuLCAxLCBpbmZvLnZhbHVlLCB2YWx1ZSk7XG4gICAgICAgICAgICBzZXRfY3VycmVudF9jb21wb25lbnQobnVsbCk7XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChjdXJyZW50X2NvbXBvbmVudCk7XG4gICAgICAgICAgICB1cGRhdGUoaW5mby5jYXRjaCwgMiwgaW5mby5lcnJvciwgZXJyb3IpO1xuICAgICAgICAgICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KG51bGwpO1xuICAgICAgICAgICAgaWYgKCFpbmZvLmhhc0NhdGNoKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBpZiB3ZSBwcmV2aW91c2x5IGhhZCBhIHRoZW4vY2F0Y2ggYmxvY2ssIGRlc3Ryb3kgaXRcbiAgICAgICAgaWYgKGluZm8uY3VycmVudCAhPT0gaW5mby5wZW5kaW5nKSB7XG4gICAgICAgICAgICB1cGRhdGUoaW5mby5wZW5kaW5nLCAwKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpZiAoaW5mby5jdXJyZW50ICE9PSBpbmZvLnRoZW4pIHtcbiAgICAgICAgICAgIHVwZGF0ZShpbmZvLnRoZW4sIDEsIGluZm8udmFsdWUsIHByb21pc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaW5mby5yZXNvbHZlZCA9IHByb21pc2U7XG4gICAgfVxufVxuZnVuY3Rpb24gdXBkYXRlX2F3YWl0X2Jsb2NrX2JyYW5jaChpbmZvLCBjdHgsIGRpcnR5KSB7XG4gICAgY29uc3QgY2hpbGRfY3R4ID0gY3R4LnNsaWNlKCk7XG4gICAgY29uc3QgeyByZXNvbHZlZCB9ID0gaW5mbztcbiAgICBpZiAoaW5mby5jdXJyZW50ID09PSBpbmZvLnRoZW4pIHtcbiAgICAgICAgY2hpbGRfY3R4W2luZm8udmFsdWVdID0gcmVzb2x2ZWQ7XG4gICAgfVxuICAgIGlmIChpbmZvLmN1cnJlbnQgPT09IGluZm8uY2F0Y2gpIHtcbiAgICAgICAgY2hpbGRfY3R4W2luZm8uZXJyb3JdID0gcmVzb2x2ZWQ7XG4gICAgfVxuICAgIGluZm8uYmxvY2sucChjaGlsZF9jdHgsIGRpcnR5KTtcbn1cblxuY29uc3QgZ2xvYmFscyA9ICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJ1xuICAgID8gd2luZG93XG4gICAgOiB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgPyBnbG9iYWxUaGlzXG4gICAgICAgIDogZ2xvYmFsKTtcblxuZnVuY3Rpb24gZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKSB7XG4gICAgYmxvY2suZCgxKTtcbiAgICBsb29rdXAuZGVsZXRlKGJsb2NrLmtleSk7XG59XG5mdW5jdGlvbiBvdXRyb19hbmRfZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKSB7XG4gICAgdHJhbnNpdGlvbl9vdXQoYmxvY2ssIDEsIDEsICgpID0+IHtcbiAgICAgICAgbG9va3VwLmRlbGV0ZShibG9jay5rZXkpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZml4X2FuZF9kZXN0cm95X2Jsb2NrKGJsb2NrLCBsb29rdXApIHtcbiAgICBibG9jay5mKCk7XG4gICAgZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKTtcbn1cbmZ1bmN0aW9uIGZpeF9hbmRfb3V0cm9fYW5kX2Rlc3Ryb3lfYmxvY2soYmxvY2ssIGxvb2t1cCkge1xuICAgIGJsb2NrLmYoKTtcbiAgICBvdXRyb19hbmRfZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKTtcbn1cbmZ1bmN0aW9uIHVwZGF0ZV9rZXllZF9lYWNoKG9sZF9ibG9ja3MsIGRpcnR5LCBnZXRfa2V5LCBkeW5hbWljLCBjdHgsIGxpc3QsIGxvb2t1cCwgbm9kZSwgZGVzdHJveSwgY3JlYXRlX2VhY2hfYmxvY2ssIG5leHQsIGdldF9jb250ZXh0KSB7XG4gICAgbGV0IG8gPSBvbGRfYmxvY2tzLmxlbmd0aDtcbiAgICBsZXQgbiA9IGxpc3QubGVuZ3RoO1xuICAgIGxldCBpID0gbztcbiAgICBjb25zdCBvbGRfaW5kZXhlcyA9IHt9O1xuICAgIHdoaWxlIChpLS0pXG4gICAgICAgIG9sZF9pbmRleGVzW29sZF9ibG9ja3NbaV0ua2V5XSA9IGk7XG4gICAgY29uc3QgbmV3X2Jsb2NrcyA9IFtdO1xuICAgIGNvbnN0IG5ld19sb29rdXAgPSBuZXcgTWFwKCk7XG4gICAgY29uc3QgZGVsdGFzID0gbmV3IE1hcCgpO1xuICAgIGkgPSBuO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgY29uc3QgY2hpbGRfY3R4ID0gZ2V0X2NvbnRleHQoY3R4LCBsaXN0LCBpKTtcbiAgICAgICAgY29uc3Qga2V5ID0gZ2V0X2tleShjaGlsZF9jdHgpO1xuICAgICAgICBsZXQgYmxvY2sgPSBsb29rdXAuZ2V0KGtleSk7XG4gICAgICAgIGlmICghYmxvY2spIHtcbiAgICAgICAgICAgIGJsb2NrID0gY3JlYXRlX2VhY2hfYmxvY2soa2V5LCBjaGlsZF9jdHgpO1xuICAgICAgICAgICAgYmxvY2suYygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGR5bmFtaWMpIHtcbiAgICAgICAgICAgIGJsb2NrLnAoY2hpbGRfY3R4LCBkaXJ0eSk7XG4gICAgICAgIH1cbiAgICAgICAgbmV3X2xvb2t1cC5zZXQoa2V5LCBuZXdfYmxvY2tzW2ldID0gYmxvY2spO1xuICAgICAgICBpZiAoa2V5IGluIG9sZF9pbmRleGVzKVxuICAgICAgICAgICAgZGVsdGFzLnNldChrZXksIE1hdGguYWJzKGkgLSBvbGRfaW5kZXhlc1trZXldKSk7XG4gICAgfVxuICAgIGNvbnN0IHdpbGxfbW92ZSA9IG5ldyBTZXQoKTtcbiAgICBjb25zdCBkaWRfbW92ZSA9IG5ldyBTZXQoKTtcbiAgICBmdW5jdGlvbiBpbnNlcnQoYmxvY2spIHtcbiAgICAgICAgdHJhbnNpdGlvbl9pbihibG9jaywgMSk7XG4gICAgICAgIGJsb2NrLm0obm9kZSwgbmV4dCk7XG4gICAgICAgIGxvb2t1cC5zZXQoYmxvY2sua2V5LCBibG9jayk7XG4gICAgICAgIG5leHQgPSBibG9jay5maXJzdDtcbiAgICAgICAgbi0tO1xuICAgIH1cbiAgICB3aGlsZSAobyAmJiBuKSB7XG4gICAgICAgIGNvbnN0IG5ld19ibG9jayA9IG5ld19ibG9ja3NbbiAtIDFdO1xuICAgICAgICBjb25zdCBvbGRfYmxvY2sgPSBvbGRfYmxvY2tzW28gLSAxXTtcbiAgICAgICAgY29uc3QgbmV3X2tleSA9IG5ld19ibG9jay5rZXk7XG4gICAgICAgIGNvbnN0IG9sZF9rZXkgPSBvbGRfYmxvY2sua2V5O1xuICAgICAgICBpZiAobmV3X2Jsb2NrID09PSBvbGRfYmxvY2spIHtcbiAgICAgICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICAgICAgICAgIG5leHQgPSBuZXdfYmxvY2suZmlyc3Q7XG4gICAgICAgICAgICBvLS07XG4gICAgICAgICAgICBuLS07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIW5ld19sb29rdXAuaGFzKG9sZF9rZXkpKSB7XG4gICAgICAgICAgICAvLyByZW1vdmUgb2xkIGJsb2NrXG4gICAgICAgICAgICBkZXN0cm95KG9sZF9ibG9jaywgbG9va3VwKTtcbiAgICAgICAgICAgIG8tLTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghbG9va3VwLmhhcyhuZXdfa2V5KSB8fCB3aWxsX21vdmUuaGFzKG5ld19rZXkpKSB7XG4gICAgICAgICAgICBpbnNlcnQobmV3X2Jsb2NrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkaWRfbW92ZS5oYXMob2xkX2tleSkpIHtcbiAgICAgICAgICAgIG8tLTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkZWx0YXMuZ2V0KG5ld19rZXkpID4gZGVsdGFzLmdldChvbGRfa2V5KSkge1xuICAgICAgICAgICAgZGlkX21vdmUuYWRkKG5ld19rZXkpO1xuICAgICAgICAgICAgaW5zZXJ0KG5ld19ibG9jayk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB3aWxsX21vdmUuYWRkKG9sZF9rZXkpO1xuICAgICAgICAgICAgby0tO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdoaWxlIChvLS0pIHtcbiAgICAgICAgY29uc3Qgb2xkX2Jsb2NrID0gb2xkX2Jsb2Nrc1tvXTtcbiAgICAgICAgaWYgKCFuZXdfbG9va3VwLmhhcyhvbGRfYmxvY2sua2V5KSlcbiAgICAgICAgICAgIGRlc3Ryb3kob2xkX2Jsb2NrLCBsb29rdXApO1xuICAgIH1cbiAgICB3aGlsZSAobilcbiAgICAgICAgaW5zZXJ0KG5ld19ibG9ja3NbbiAtIDFdKTtcbiAgICByZXR1cm4gbmV3X2Jsb2Nrcztcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlX2VhY2hfa2V5cyhjdHgsIGxpc3QsIGdldF9jb250ZXh0LCBnZXRfa2V5KSB7XG4gICAgY29uc3Qga2V5cyA9IG5ldyBTZXQoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qga2V5ID0gZ2V0X2tleShnZXRfY29udGV4dChjdHgsIGxpc3QsIGkpKTtcbiAgICAgICAgaWYgKGtleXMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGhhdmUgZHVwbGljYXRlIGtleXMgaW4gYSBrZXllZCBlYWNoJyk7XG4gICAgICAgIH1cbiAgICAgICAga2V5cy5hZGQoa2V5KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldF9zcHJlYWRfdXBkYXRlKGxldmVscywgdXBkYXRlcykge1xuICAgIGNvbnN0IHVwZGF0ZSA9IHt9O1xuICAgIGNvbnN0IHRvX251bGxfb3V0ID0ge307XG4gICAgY29uc3QgYWNjb3VudGVkX2ZvciA9IHsgJCRzY29wZTogMSB9O1xuICAgIGxldCBpID0gbGV2ZWxzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgIGNvbnN0IG8gPSBsZXZlbHNbaV07XG4gICAgICAgIGNvbnN0IG4gPSB1cGRhdGVzW2ldO1xuICAgICAgICBpZiAobikge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbykge1xuICAgICAgICAgICAgICAgIGlmICghKGtleSBpbiBuKSlcbiAgICAgICAgICAgICAgICAgICAgdG9fbnVsbF9vdXRba2V5XSA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBuKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFhY2NvdW50ZWRfZm9yW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlW2tleV0gPSBuW2tleV07XG4gICAgICAgICAgICAgICAgICAgIGFjY291bnRlZF9mb3Jba2V5XSA9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV2ZWxzW2ldID0gbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG8pIHtcbiAgICAgICAgICAgICAgICBhY2NvdW50ZWRfZm9yW2tleV0gPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IGluIHRvX251bGxfb3V0KSB7XG4gICAgICAgIGlmICghKGtleSBpbiB1cGRhdGUpKVxuICAgICAgICAgICAgdXBkYXRlW2tleV0gPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB1cGRhdGU7XG59XG5mdW5jdGlvbiBnZXRfc3ByZWFkX29iamVjdChzcHJlYWRfcHJvcHMpIHtcbiAgICByZXR1cm4gdHlwZW9mIHNwcmVhZF9wcm9wcyA9PT0gJ29iamVjdCcgJiYgc3ByZWFkX3Byb3BzICE9PSBudWxsID8gc3ByZWFkX3Byb3BzIDoge307XG59XG5cbi8vIHNvdXJjZTogaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5kaWNlcy5odG1sXG5jb25zdCBib29sZWFuX2F0dHJpYnV0ZXMgPSBuZXcgU2V0KFtcbiAgICAnYWxsb3dmdWxsc2NyZWVuJyxcbiAgICAnYWxsb3dwYXltZW50cmVxdWVzdCcsXG4gICAgJ2FzeW5jJyxcbiAgICAnYXV0b2ZvY3VzJyxcbiAgICAnYXV0b3BsYXknLFxuICAgICdjaGVja2VkJyxcbiAgICAnY29udHJvbHMnLFxuICAgICdkZWZhdWx0JyxcbiAgICAnZGVmZXInLFxuICAgICdkaXNhYmxlZCcsXG4gICAgJ2Zvcm1ub3ZhbGlkYXRlJyxcbiAgICAnaGlkZGVuJyxcbiAgICAnaXNtYXAnLFxuICAgICdsb29wJyxcbiAgICAnbXVsdGlwbGUnLFxuICAgICdtdXRlZCcsXG4gICAgJ25vbW9kdWxlJyxcbiAgICAnbm92YWxpZGF0ZScsXG4gICAgJ29wZW4nLFxuICAgICdwbGF5c2lubGluZScsXG4gICAgJ3JlYWRvbmx5JyxcbiAgICAncmVxdWlyZWQnLFxuICAgICdyZXZlcnNlZCcsXG4gICAgJ3NlbGVjdGVkJ1xuXSk7XG5cbmNvbnN0IGludmFsaWRfYXR0cmlidXRlX25hbWVfY2hhcmFjdGVyID0gL1tcXHMnXCI+Lz1cXHV7RkREMH0tXFx1e0ZERUZ9XFx1e0ZGRkV9XFx1e0ZGRkZ9XFx1ezFGRkZFfVxcdXsxRkZGRn1cXHV7MkZGRkV9XFx1ezJGRkZGfVxcdXszRkZGRX1cXHV7M0ZGRkZ9XFx1ezRGRkZFfVxcdXs0RkZGRn1cXHV7NUZGRkV9XFx1ezVGRkZGfVxcdXs2RkZGRX1cXHV7NkZGRkZ9XFx1ezdGRkZFfVxcdXs3RkZGRn1cXHV7OEZGRkV9XFx1ezhGRkZGfVxcdXs5RkZGRX1cXHV7OUZGRkZ9XFx1e0FGRkZFfVxcdXtBRkZGRn1cXHV7QkZGRkV9XFx1e0JGRkZGfVxcdXtDRkZGRX1cXHV7Q0ZGRkZ9XFx1e0RGRkZFfVxcdXtERkZGRn1cXHV7RUZGRkV9XFx1e0VGRkZGfVxcdXtGRkZGRX1cXHV7RkZGRkZ9XFx1ezEwRkZGRX1cXHV7MTBGRkZGfV0vdTtcbi8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2F0dHJpYnV0ZXMtMlxuLy8gaHR0cHM6Ly9pbmZyYS5zcGVjLndoYXR3Zy5vcmcvI25vbmNoYXJhY3RlclxuZnVuY3Rpb24gc3ByZWFkKGFyZ3MsIGNsYXNzZXNfdG9fYWRkKSB7XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IE9iamVjdC5hc3NpZ24oe30sIC4uLmFyZ3MpO1xuICAgIGlmIChjbGFzc2VzX3RvX2FkZCkge1xuICAgICAgICBpZiAoYXR0cmlidXRlcy5jbGFzcyA9PSBudWxsKSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzLmNsYXNzID0gY2xhc3Nlc190b19hZGQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzLmNsYXNzICs9ICcgJyArIGNsYXNzZXNfdG9fYWRkO1xuICAgICAgICB9XG4gICAgfVxuICAgIGxldCBzdHIgPSAnJztcbiAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgICBpZiAoaW52YWxpZF9hdHRyaWJ1dGVfbmFtZV9jaGFyYWN0ZXIudGVzdChuYW1lKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBhdHRyaWJ1dGVzW25hbWVdO1xuICAgICAgICBpZiAodmFsdWUgPT09IHRydWUpXG4gICAgICAgICAgICBzdHIgKz0gJyAnICsgbmFtZTtcbiAgICAgICAgZWxzZSBpZiAoYm9vbGVhbl9hdHRyaWJ1dGVzLmhhcyhuYW1lLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpXG4gICAgICAgICAgICAgICAgc3RyICs9ICcgJyArIG5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgc3RyICs9IGAgJHtuYW1lfT1cIiR7dmFsdWV9XCJgO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHN0cjtcbn1cbmNvbnN0IGVzY2FwZWQgPSB7XG4gICAgJ1wiJzogJyZxdW90OycsXG4gICAgXCInXCI6ICcmIzM5OycsXG4gICAgJyYnOiAnJmFtcDsnLFxuICAgICc8JzogJyZsdDsnLFxuICAgICc+JzogJyZndDsnXG59O1xuZnVuY3Rpb24gZXNjYXBlKGh0bWwpIHtcbiAgICByZXR1cm4gU3RyaW5nKGh0bWwpLnJlcGxhY2UoL1tcIicmPD5dL2csIG1hdGNoID0+IGVzY2FwZWRbbWF0Y2hdKTtcbn1cbmZ1bmN0aW9uIGVzY2FwZV9hdHRyaWJ1dGVfdmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IGVzY2FwZSh2YWx1ZSkgOiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGVzY2FwZV9vYmplY3Qob2JqKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gZXNjYXBlX2F0dHJpYnV0ZV92YWx1ZShvYmpba2V5XSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBlYWNoKGl0ZW1zLCBmbikge1xuICAgIGxldCBzdHIgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHN0ciArPSBmbihpdGVtc1tpXSwgaSk7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG59XG5jb25zdCBtaXNzaW5nX2NvbXBvbmVudCA9IHtcbiAgICAkJHJlbmRlcjogKCkgPT4gJydcbn07XG5mdW5jdGlvbiB2YWxpZGF0ZV9jb21wb25lbnQoY29tcG9uZW50LCBuYW1lKSB7XG4gICAgaWYgKCFjb21wb25lbnQgfHwgIWNvbXBvbmVudC4kJHJlbmRlcikge1xuICAgICAgICBpZiAobmFtZSA9PT0gJ3N2ZWx0ZTpjb21wb25lbnQnKVxuICAgICAgICAgICAgbmFtZSArPSAnIHRoaXM9ey4uLn0nO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYDwke25hbWV9PiBpcyBub3QgYSB2YWxpZCBTU1IgY29tcG9uZW50LiBZb3UgbWF5IG5lZWQgdG8gcmV2aWV3IHlvdXIgYnVpbGQgY29uZmlnIHRvIGVuc3VyZSB0aGF0IGRlcGVuZGVuY2llcyBhcmUgY29tcGlsZWQsIHJhdGhlciB0aGFuIGltcG9ydGVkIGFzIHByZS1jb21waWxlZCBtb2R1bGVzYCk7XG4gICAgfVxuICAgIHJldHVybiBjb21wb25lbnQ7XG59XG5mdW5jdGlvbiBkZWJ1ZyhmaWxlLCBsaW5lLCBjb2x1bW4sIHZhbHVlcykge1xuICAgIGNvbnNvbGUubG9nKGB7QGRlYnVnfSAke2ZpbGUgPyBmaWxlICsgJyAnIDogJyd9KCR7bGluZX06JHtjb2x1bW59KWApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmxvZyh2YWx1ZXMpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgICByZXR1cm4gJyc7XG59XG5sZXQgb25fZGVzdHJveTtcbmZ1bmN0aW9uIGNyZWF0ZV9zc3JfY29tcG9uZW50KGZuKSB7XG4gICAgZnVuY3Rpb24gJCRyZW5kZXIocmVzdWx0LCBwcm9wcywgYmluZGluZ3MsIHNsb3RzLCBjb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IHBhcmVudF9jb21wb25lbnQgPSBjdXJyZW50X2NvbXBvbmVudDtcbiAgICAgICAgY29uc3QgJCQgPSB7XG4gICAgICAgICAgICBvbl9kZXN0cm95LFxuICAgICAgICAgICAgY29udGV4dDogbmV3IE1hcChjb250ZXh0IHx8IChwYXJlbnRfY29tcG9uZW50ID8gcGFyZW50X2NvbXBvbmVudC4kJC5jb250ZXh0IDogW10pKSxcbiAgICAgICAgICAgIC8vIHRoZXNlIHdpbGwgYmUgaW1tZWRpYXRlbHkgZGlzY2FyZGVkXG4gICAgICAgICAgICBvbl9tb3VudDogW10sXG4gICAgICAgICAgICBiZWZvcmVfdXBkYXRlOiBbXSxcbiAgICAgICAgICAgIGFmdGVyX3VwZGF0ZTogW10sXG4gICAgICAgICAgICBjYWxsYmFja3M6IGJsYW5rX29iamVjdCgpXG4gICAgICAgIH07XG4gICAgICAgIHNldF9jdXJyZW50X2NvbXBvbmVudCh7ICQkIH0pO1xuICAgICAgICBjb25zdCBodG1sID0gZm4ocmVzdWx0LCBwcm9wcywgYmluZGluZ3MsIHNsb3RzKTtcbiAgICAgICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KHBhcmVudF9jb21wb25lbnQpO1xuICAgICAgICByZXR1cm4gaHRtbDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcmVuZGVyOiAocHJvcHMgPSB7fSwgeyAkJHNsb3RzID0ge30sIGNvbnRleHQgPSBuZXcgTWFwKCkgfSA9IHt9KSA9PiB7XG4gICAgICAgICAgICBvbl9kZXN0cm95ID0gW107XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB7IHRpdGxlOiAnJywgaGVhZDogJycsIGNzczogbmV3IFNldCgpIH07XG4gICAgICAgICAgICBjb25zdCBodG1sID0gJCRyZW5kZXIocmVzdWx0LCBwcm9wcywge30sICQkc2xvdHMsIGNvbnRleHQpO1xuICAgICAgICAgICAgcnVuX2FsbChvbl9kZXN0cm95KTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaHRtbCxcbiAgICAgICAgICAgICAgICBjc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogQXJyYXkuZnJvbShyZXN1bHQuY3NzKS5tYXAoY3NzID0+IGNzcy5jb2RlKS5qb2luKCdcXG4nKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwOiBudWxsIC8vIFRPRE9cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGhlYWQ6IHJlc3VsdC50aXRsZSArIHJlc3VsdC5oZWFkXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICAkJHJlbmRlclxuICAgIH07XG59XG5mdW5jdGlvbiBhZGRfYXR0cmlidXRlKG5hbWUsIHZhbHVlLCBib29sZWFuKSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwgfHwgKGJvb2xlYW4gJiYgIXZhbHVlKSlcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIHJldHVybiBgICR7bmFtZX0ke3ZhbHVlID09PSB0cnVlID8gJycgOiBgPSR7dHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IEpTT04uc3RyaW5naWZ5KGVzY2FwZSh2YWx1ZSkpIDogYFwiJHt2YWx1ZX1cImB9YH1gO1xufVxuZnVuY3Rpb24gYWRkX2NsYXNzZXMoY2xhc3Nlcykge1xuICAgIHJldHVybiBjbGFzc2VzID8gYCBjbGFzcz1cIiR7Y2xhc3Nlc31cImAgOiAnJztcbn1cblxuZnVuY3Rpb24gYmluZChjb21wb25lbnQsIG5hbWUsIGNhbGxiYWNrKSB7XG4gICAgY29uc3QgaW5kZXggPSBjb21wb25lbnQuJCQucHJvcHNbbmFtZV07XG4gICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29tcG9uZW50LiQkLmJvdW5kW2luZGV4XSA9IGNhbGxiYWNrO1xuICAgICAgICBjYWxsYmFjayhjb21wb25lbnQuJCQuY3R4W2luZGV4XSk7XG4gICAgfVxufVxuZnVuY3Rpb24gY3JlYXRlX2NvbXBvbmVudChibG9jaykge1xuICAgIGJsb2NrICYmIGJsb2NrLmMoKTtcbn1cbmZ1bmN0aW9uIGNsYWltX2NvbXBvbmVudChibG9jaywgcGFyZW50X25vZGVzKSB7XG4gICAgYmxvY2sgJiYgYmxvY2subChwYXJlbnRfbm9kZXMpO1xufVxuZnVuY3Rpb24gbW91bnRfY29tcG9uZW50KGNvbXBvbmVudCwgdGFyZ2V0LCBhbmNob3IsIGN1c3RvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB7IGZyYWdtZW50LCBvbl9tb3VudCwgb25fZGVzdHJveSwgYWZ0ZXJfdXBkYXRlIH0gPSBjb21wb25lbnQuJCQ7XG4gICAgZnJhZ21lbnQgJiYgZnJhZ21lbnQubSh0YXJnZXQsIGFuY2hvcik7XG4gICAgaWYgKCFjdXN0b21FbGVtZW50KSB7XG4gICAgICAgIC8vIG9uTW91bnQgaGFwcGVucyBiZWZvcmUgdGhlIGluaXRpYWwgYWZ0ZXJVcGRhdGVcbiAgICAgICAgYWRkX3JlbmRlcl9jYWxsYmFjaygoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdfb25fZGVzdHJveSA9IG9uX21vdW50Lm1hcChydW4pLmZpbHRlcihpc19mdW5jdGlvbik7XG4gICAgICAgICAgICBpZiAob25fZGVzdHJveSkge1xuICAgICAgICAgICAgICAgIG9uX2Rlc3Ryb3kucHVzaCguLi5uZXdfb25fZGVzdHJveSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBFZGdlIGNhc2UgLSBjb21wb25lbnQgd2FzIGRlc3Ryb3llZCBpbW1lZGlhdGVseSxcbiAgICAgICAgICAgICAgICAvLyBtb3N0IGxpa2VseSBhcyBhIHJlc3VsdCBvZiBhIGJpbmRpbmcgaW5pdGlhbGlzaW5nXG4gICAgICAgICAgICAgICAgcnVuX2FsbChuZXdfb25fZGVzdHJveSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21wb25lbnQuJCQub25fbW91bnQgPSBbXTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFmdGVyX3VwZGF0ZS5mb3JFYWNoKGFkZF9yZW5kZXJfY2FsbGJhY2spO1xufVxuZnVuY3Rpb24gZGVzdHJveV9jb21wb25lbnQoY29tcG9uZW50LCBkZXRhY2hpbmcpIHtcbiAgICBjb25zdCAkJCA9IGNvbXBvbmVudC4kJDtcbiAgICBpZiAoJCQuZnJhZ21lbnQgIT09IG51bGwpIHtcbiAgICAgICAgcnVuX2FsbCgkJC5vbl9kZXN0cm95KTtcbiAgICAgICAgJCQuZnJhZ21lbnQgJiYgJCQuZnJhZ21lbnQuZChkZXRhY2hpbmcpO1xuICAgICAgICAvLyBUT0RPIG51bGwgb3V0IG90aGVyIHJlZnMsIGluY2x1ZGluZyBjb21wb25lbnQuJCQgKGJ1dCBuZWVkIHRvXG4gICAgICAgIC8vIHByZXNlcnZlIGZpbmFsIHN0YXRlPylcbiAgICAgICAgJCQub25fZGVzdHJveSA9ICQkLmZyYWdtZW50ID0gbnVsbDtcbiAgICAgICAgJCQuY3R4ID0gW107XG4gICAgfVxufVxuZnVuY3Rpb24gbWFrZV9kaXJ0eShjb21wb25lbnQsIGkpIHtcbiAgICBpZiAoY29tcG9uZW50LiQkLmRpcnR5WzBdID09PSAtMSkge1xuICAgICAgICBkaXJ0eV9jb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgICAgICAgc2NoZWR1bGVfdXBkYXRlKCk7XG4gICAgICAgIGNvbXBvbmVudC4kJC5kaXJ0eS5maWxsKDApO1xuICAgIH1cbiAgICBjb21wb25lbnQuJCQuZGlydHlbKGkgLyAzMSkgfCAwXSB8PSAoMSA8PCAoaSAlIDMxKSk7XG59XG5mdW5jdGlvbiBpbml0KGNvbXBvbmVudCwgb3B0aW9ucywgaW5zdGFuY2UsIGNyZWF0ZV9mcmFnbWVudCwgbm90X2VxdWFsLCBwcm9wcywgYXBwZW5kX3N0eWxlcywgZGlydHkgPSBbLTFdKSB7XG4gICAgY29uc3QgcGFyZW50X2NvbXBvbmVudCA9IGN1cnJlbnRfY29tcG9uZW50O1xuICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChjb21wb25lbnQpO1xuICAgIGNvbnN0ICQkID0gY29tcG9uZW50LiQkID0ge1xuICAgICAgICBmcmFnbWVudDogbnVsbCxcbiAgICAgICAgY3R4OiBudWxsLFxuICAgICAgICAvLyBzdGF0ZVxuICAgICAgICBwcm9wcyxcbiAgICAgICAgdXBkYXRlOiBub29wLFxuICAgICAgICBub3RfZXF1YWwsXG4gICAgICAgIGJvdW5kOiBibGFua19vYmplY3QoKSxcbiAgICAgICAgLy8gbGlmZWN5Y2xlXG4gICAgICAgIG9uX21vdW50OiBbXSxcbiAgICAgICAgb25fZGVzdHJveTogW10sXG4gICAgICAgIG9uX2Rpc2Nvbm5lY3Q6IFtdLFxuICAgICAgICBiZWZvcmVfdXBkYXRlOiBbXSxcbiAgICAgICAgYWZ0ZXJfdXBkYXRlOiBbXSxcbiAgICAgICAgY29udGV4dDogbmV3IE1hcChvcHRpb25zLmNvbnRleHQgfHwgKHBhcmVudF9jb21wb25lbnQgPyBwYXJlbnRfY29tcG9uZW50LiQkLmNvbnRleHQgOiBbXSkpLFxuICAgICAgICAvLyBldmVyeXRoaW5nIGVsc2VcbiAgICAgICAgY2FsbGJhY2tzOiBibGFua19vYmplY3QoKSxcbiAgICAgICAgZGlydHksXG4gICAgICAgIHNraXBfYm91bmQ6IGZhbHNlLFxuICAgICAgICByb290OiBvcHRpb25zLnRhcmdldCB8fCBwYXJlbnRfY29tcG9uZW50LiQkLnJvb3RcbiAgICB9O1xuICAgIGFwcGVuZF9zdHlsZXMgJiYgYXBwZW5kX3N0eWxlcygkJC5yb290KTtcbiAgICBsZXQgcmVhZHkgPSBmYWxzZTtcbiAgICAkJC5jdHggPSBpbnN0YW5jZVxuICAgICAgICA/IGluc3RhbmNlKGNvbXBvbmVudCwgb3B0aW9ucy5wcm9wcyB8fCB7fSwgKGksIHJldCwgLi4ucmVzdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSByZXN0Lmxlbmd0aCA/IHJlc3RbMF0gOiByZXQ7XG4gICAgICAgICAgICBpZiAoJCQuY3R4ICYmIG5vdF9lcXVhbCgkJC5jdHhbaV0sICQkLmN0eFtpXSA9IHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGlmICghJCQuc2tpcF9ib3VuZCAmJiAkJC5ib3VuZFtpXSlcbiAgICAgICAgICAgICAgICAgICAgJCQuYm91bmRbaV0odmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmIChyZWFkeSlcbiAgICAgICAgICAgICAgICAgICAgbWFrZV9kaXJ0eShjb21wb25lbnQsIGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgfSlcbiAgICAgICAgOiBbXTtcbiAgICAkJC51cGRhdGUoKTtcbiAgICByZWFkeSA9IHRydWU7XG4gICAgcnVuX2FsbCgkJC5iZWZvcmVfdXBkYXRlKTtcbiAgICAvLyBgZmFsc2VgIGFzIGEgc3BlY2lhbCBjYXNlIG9mIG5vIERPTSBjb21wb25lbnRcbiAgICAkJC5mcmFnbWVudCA9IGNyZWF0ZV9mcmFnbWVudCA/IGNyZWF0ZV9mcmFnbWVudCgkJC5jdHgpIDogZmFsc2U7XG4gICAgaWYgKG9wdGlvbnMudGFyZ2V0KSB7XG4gICAgICAgIGlmIChvcHRpb25zLmh5ZHJhdGUpIHtcbiAgICAgICAgICAgIHN0YXJ0X2h5ZHJhdGluZygpO1xuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBjaGlsZHJlbihvcHRpb25zLnRhcmdldCk7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgICAgJCQuZnJhZ21lbnQgJiYgJCQuZnJhZ21lbnQubChub2Rlcyk7XG4gICAgICAgICAgICBub2Rlcy5mb3JFYWNoKGRldGFjaCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgICAgJCQuZnJhZ21lbnQgJiYgJCQuZnJhZ21lbnQuYygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmludHJvKVxuICAgICAgICAgICAgdHJhbnNpdGlvbl9pbihjb21wb25lbnQuJCQuZnJhZ21lbnQpO1xuICAgICAgICBtb3VudF9jb21wb25lbnQoY29tcG9uZW50LCBvcHRpb25zLnRhcmdldCwgb3B0aW9ucy5hbmNob3IsIG9wdGlvbnMuY3VzdG9tRWxlbWVudCk7XG4gICAgICAgIGVuZF9oeWRyYXRpbmcoKTtcbiAgICAgICAgZmx1c2goKTtcbiAgICB9XG4gICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KHBhcmVudF9jb21wb25lbnQpO1xufVxubGV0IFN2ZWx0ZUVsZW1lbnQ7XG5pZiAodHlwZW9mIEhUTUxFbGVtZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgU3ZlbHRlRWxlbWVudCA9IGNsYXNzIGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICAgIHN1cGVyKCk7XG4gICAgICAgICAgICB0aGlzLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25uZWN0ZWRDYWxsYmFjaygpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgb25fbW91bnQgfSA9IHRoaXMuJCQ7XG4gICAgICAgICAgICB0aGlzLiQkLm9uX2Rpc2Nvbm5lY3QgPSBvbl9tb3VudC5tYXAocnVuKS5maWx0ZXIoaXNfZnVuY3Rpb24pO1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSB0b2RvOiBpbXByb3ZlIHR5cGluZ3NcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuJCQuc2xvdHRlZCkge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgdG9kbzogaW1wcm92ZSB0eXBpbmdzXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZCh0aGlzLiQkLnNsb3R0ZWRba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKGF0dHIsIF9vbGRWYWx1ZSwgbmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXNbYXR0cl0gPSBuZXdWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBkaXNjb25uZWN0ZWRDYWxsYmFjaygpIHtcbiAgICAgICAgICAgIHJ1bl9hbGwodGhpcy4kJC5vbl9kaXNjb25uZWN0KTtcbiAgICAgICAgfVxuICAgICAgICAkZGVzdHJveSgpIHtcbiAgICAgICAgICAgIGRlc3Ryb3lfY29tcG9uZW50KHRoaXMsIDEpO1xuICAgICAgICAgICAgdGhpcy4kZGVzdHJveSA9IG5vb3A7XG4gICAgICAgIH1cbiAgICAgICAgJG9uKHR5cGUsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAvLyBUT0RPIHNob3VsZCB0aGlzIGRlbGVnYXRlIHRvIGFkZEV2ZW50TGlzdGVuZXI/XG4gICAgICAgICAgICBjb25zdCBjYWxsYmFja3MgPSAodGhpcy4kJC5jYWxsYmFja3NbdHlwZV0gfHwgKHRoaXMuJCQuY2FsbGJhY2tzW3R5cGVdID0gW10pKTtcbiAgICAgICAgICAgIGNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBjYWxsYmFja3MuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgICRzZXQoJCRwcm9wcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuJCRzZXQgJiYgIWlzX2VtcHR5KCQkcHJvcHMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kJC5za2lwX2JvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLiQkc2V0KCQkcHJvcHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuJCQuc2tpcF9ib3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbn1cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgU3ZlbHRlIGNvbXBvbmVudHMuIFVzZWQgd2hlbiBkZXY9ZmFsc2UuXG4gKi9cbmNsYXNzIFN2ZWx0ZUNvbXBvbmVudCB7XG4gICAgJGRlc3Ryb3koKSB7XG4gICAgICAgIGRlc3Ryb3lfY29tcG9uZW50KHRoaXMsIDEpO1xuICAgICAgICB0aGlzLiRkZXN0cm95ID0gbm9vcDtcbiAgICB9XG4gICAgJG9uKHR5cGUsIGNhbGxiYWNrKSB7XG4gICAgICAgIGNvbnN0IGNhbGxiYWNrcyA9ICh0aGlzLiQkLmNhbGxiYWNrc1t0eXBlXSB8fCAodGhpcy4kJC5jYWxsYmFja3NbdHlwZV0gPSBbXSkpO1xuICAgICAgICBjYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IGNhbGxiYWNrcy5pbmRleE9mKGNhbGxiYWNrKTtcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpXG4gICAgICAgICAgICAgICAgY2FsbGJhY2tzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH07XG4gICAgfVxuICAgICRzZXQoJCRwcm9wcykge1xuICAgICAgICBpZiAodGhpcy4kJHNldCAmJiAhaXNfZW1wdHkoJCRwcm9wcykpIHtcbiAgICAgICAgICAgIHRoaXMuJCQuc2tpcF9ib3VuZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLiQkc2V0KCQkcHJvcHMpO1xuICAgICAgICAgICAgdGhpcy4kJC5za2lwX2JvdW5kID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRpc3BhdGNoX2Rldih0eXBlLCBkZXRhaWwpIHtcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbV9ldmVudCh0eXBlLCBPYmplY3QuYXNzaWduKHsgdmVyc2lvbjogJzMuNDMuMCcgfSwgZGV0YWlsKSwgdHJ1ZSkpO1xufVxuZnVuY3Rpb24gYXBwZW5kX2Rldih0YXJnZXQsIG5vZGUpIHtcbiAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTUluc2VydCcsIHsgdGFyZ2V0LCBub2RlIH0pO1xuICAgIGFwcGVuZCh0YXJnZXQsIG5vZGUpO1xufVxuZnVuY3Rpb24gYXBwZW5kX2h5ZHJhdGlvbl9kZXYodGFyZ2V0LCBub2RlKSB7XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01JbnNlcnQnLCB7IHRhcmdldCwgbm9kZSB9KTtcbiAgICBhcHBlbmRfaHlkcmF0aW9uKHRhcmdldCwgbm9kZSk7XG59XG5mdW5jdGlvbiBpbnNlcnRfZGV2KHRhcmdldCwgbm9kZSwgYW5jaG9yKSB7XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01JbnNlcnQnLCB7IHRhcmdldCwgbm9kZSwgYW5jaG9yIH0pO1xuICAgIGluc2VydCh0YXJnZXQsIG5vZGUsIGFuY2hvcik7XG59XG5mdW5jdGlvbiBpbnNlcnRfaHlkcmF0aW9uX2Rldih0YXJnZXQsIG5vZGUsIGFuY2hvcikge1xuICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NSW5zZXJ0JywgeyB0YXJnZXQsIG5vZGUsIGFuY2hvciB9KTtcbiAgICBpbnNlcnRfaHlkcmF0aW9uKHRhcmdldCwgbm9kZSwgYW5jaG9yKTtcbn1cbmZ1bmN0aW9uIGRldGFjaF9kZXYobm9kZSkge1xuICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NUmVtb3ZlJywgeyBub2RlIH0pO1xuICAgIGRldGFjaChub2RlKTtcbn1cbmZ1bmN0aW9uIGRldGFjaF9iZXR3ZWVuX2RldihiZWZvcmUsIGFmdGVyKSB7XG4gICAgd2hpbGUgKGJlZm9yZS5uZXh0U2libGluZyAmJiBiZWZvcmUubmV4dFNpYmxpbmcgIT09IGFmdGVyKSB7XG4gICAgICAgIGRldGFjaF9kZXYoYmVmb3JlLm5leHRTaWJsaW5nKTtcbiAgICB9XG59XG5mdW5jdGlvbiBkZXRhY2hfYmVmb3JlX2RldihhZnRlcikge1xuICAgIHdoaWxlIChhZnRlci5wcmV2aW91c1NpYmxpbmcpIHtcbiAgICAgICAgZGV0YWNoX2RldihhZnRlci5wcmV2aW91c1NpYmxpbmcpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGRldGFjaF9hZnRlcl9kZXYoYmVmb3JlKSB7XG4gICAgd2hpbGUgKGJlZm9yZS5uZXh0U2libGluZykge1xuICAgICAgICBkZXRhY2hfZGV2KGJlZm9yZS5uZXh0U2libGluZyk7XG4gICAgfVxufVxuZnVuY3Rpb24gbGlzdGVuX2Rldihub2RlLCBldmVudCwgaGFuZGxlciwgb3B0aW9ucywgaGFzX3ByZXZlbnRfZGVmYXVsdCwgaGFzX3N0b3BfcHJvcGFnYXRpb24pIHtcbiAgICBjb25zdCBtb2RpZmllcnMgPSBvcHRpb25zID09PSB0cnVlID8gWydjYXB0dXJlJ10gOiBvcHRpb25zID8gQXJyYXkuZnJvbShPYmplY3Qua2V5cyhvcHRpb25zKSkgOiBbXTtcbiAgICBpZiAoaGFzX3ByZXZlbnRfZGVmYXVsdClcbiAgICAgICAgbW9kaWZpZXJzLnB1c2goJ3ByZXZlbnREZWZhdWx0Jyk7XG4gICAgaWYgKGhhc19zdG9wX3Byb3BhZ2F0aW9uKVxuICAgICAgICBtb2RpZmllcnMucHVzaCgnc3RvcFByb3BhZ2F0aW9uJyk7XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01BZGRFdmVudExpc3RlbmVyJywgeyBub2RlLCBldmVudCwgaGFuZGxlciwgbW9kaWZpZXJzIH0pO1xuICAgIGNvbnN0IGRpc3Bvc2UgPSBsaXN0ZW4obm9kZSwgZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NUmVtb3ZlRXZlbnRMaXN0ZW5lcicsIHsgbm9kZSwgZXZlbnQsIGhhbmRsZXIsIG1vZGlmaWVycyB9KTtcbiAgICAgICAgZGlzcG9zZSgpO1xuICAgIH07XG59XG5mdW5jdGlvbiBhdHRyX2Rldihub2RlLCBhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gICAgYXR0cihub2RlLCBhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgICBpZiAodmFsdWUgPT0gbnVsbClcbiAgICAgICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01SZW1vdmVBdHRyaWJ1dGUnLCB7IG5vZGUsIGF0dHJpYnV0ZSB9KTtcbiAgICBlbHNlXG4gICAgICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NU2V0QXR0cmlidXRlJywgeyBub2RlLCBhdHRyaWJ1dGUsIHZhbHVlIH0pO1xufVxuZnVuY3Rpb24gcHJvcF9kZXYobm9kZSwgcHJvcGVydHksIHZhbHVlKSB7XG4gICAgbm9kZVtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTVNldFByb3BlcnR5JywgeyBub2RlLCBwcm9wZXJ0eSwgdmFsdWUgfSk7XG59XG5mdW5jdGlvbiBkYXRhc2V0X2Rldihub2RlLCBwcm9wZXJ0eSwgdmFsdWUpIHtcbiAgICBub2RlLmRhdGFzZXRbcHJvcGVydHldID0gdmFsdWU7XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01TZXREYXRhc2V0JywgeyBub2RlLCBwcm9wZXJ0eSwgdmFsdWUgfSk7XG59XG5mdW5jdGlvbiBzZXRfZGF0YV9kZXYodGV4dCwgZGF0YSkge1xuICAgIGRhdGEgPSAnJyArIGRhdGE7XG4gICAgaWYgKHRleHQud2hvbGVUZXh0ID09PSBkYXRhKVxuICAgICAgICByZXR1cm47XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01TZXREYXRhJywgeyBub2RlOiB0ZXh0LCBkYXRhIH0pO1xuICAgIHRleHQuZGF0YSA9IGRhdGE7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZV9lYWNoX2FyZ3VtZW50KGFyZykge1xuICAgIGlmICh0eXBlb2YgYXJnICE9PSAnc3RyaW5nJyAmJiAhKGFyZyAmJiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiAnbGVuZ3RoJyBpbiBhcmcpKSB7XG4gICAgICAgIGxldCBtc2cgPSAneyNlYWNofSBvbmx5IGl0ZXJhdGVzIG92ZXIgYXJyYXktbGlrZSBvYmplY3RzLic7XG4gICAgICAgIGlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIGFyZyAmJiBTeW1ib2wuaXRlcmF0b3IgaW4gYXJnKSB7XG4gICAgICAgICAgICBtc2cgKz0gJyBZb3UgY2FuIHVzZSBhIHNwcmVhZCB0byBjb252ZXJ0IHRoaXMgaXRlcmFibGUgaW50byBhbiBhcnJheS4nO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHZhbGlkYXRlX3Nsb3RzKG5hbWUsIHNsb3QsIGtleXMpIHtcbiAgICBmb3IgKGNvbnN0IHNsb3Rfa2V5IG9mIE9iamVjdC5rZXlzKHNsb3QpKSB7XG4gICAgICAgIGlmICghfmtleXMuaW5kZXhPZihzbG90X2tleSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgPCR7bmFtZX0+IHJlY2VpdmVkIGFuIHVuZXhwZWN0ZWQgc2xvdCBcIiR7c2xvdF9rZXl9XCIuYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIFN2ZWx0ZSBjb21wb25lbnRzIHdpdGggc29tZSBtaW5vciBkZXYtZW5oYW5jZW1lbnRzLiBVc2VkIHdoZW4gZGV2PXRydWUuXG4gKi9cbmNsYXNzIFN2ZWx0ZUNvbXBvbmVudERldiBleHRlbmRzIFN2ZWx0ZUNvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBpZiAoIW9wdGlvbnMgfHwgKCFvcHRpb25zLnRhcmdldCAmJiAhb3B0aW9ucy4kJGlubGluZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIid0YXJnZXQnIGlzIGEgcmVxdWlyZWQgb3B0aW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuICAgICRkZXN0cm95KCkge1xuICAgICAgICBzdXBlci4kZGVzdHJveSgpO1xuICAgICAgICB0aGlzLiRkZXN0cm95ID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdDb21wb25lbnQgd2FzIGFscmVhZHkgZGVzdHJveWVkJyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgICAgICB9O1xuICAgIH1cbiAgICAkY2FwdHVyZV9zdGF0ZSgpIHsgfVxuICAgICRpbmplY3Rfc3RhdGUoKSB7IH1cbn1cbi8qKlxuICogQmFzZSBjbGFzcyB0byBjcmVhdGUgc3Ryb25nbHkgdHlwZWQgU3ZlbHRlIGNvbXBvbmVudHMuXG4gKiBUaGlzIG9ubHkgZXhpc3RzIGZvciB0eXBpbmcgcHVycG9zZXMgYW5kIHNob3VsZCBiZSB1c2VkIGluIGAuZC50c2AgZmlsZXMuXG4gKlxuICogIyMjIEV4YW1wbGU6XG4gKlxuICogWW91IGhhdmUgY29tcG9uZW50IGxpYnJhcnkgb24gbnBtIGNhbGxlZCBgY29tcG9uZW50LWxpYnJhcnlgLCBmcm9tIHdoaWNoXG4gKiB5b3UgZXhwb3J0IGEgY29tcG9uZW50IGNhbGxlZCBgTXlDb21wb25lbnRgLiBGb3IgU3ZlbHRlK1R5cGVTY3JpcHQgdXNlcnMsXG4gKiB5b3Ugd2FudCB0byBwcm92aWRlIHR5cGluZ3MuIFRoZXJlZm9yZSB5b3UgY3JlYXRlIGEgYGluZGV4LmQudHNgOlxuICogYGBgdHNcbiAqIGltcG9ydCB7IFN2ZWx0ZUNvbXBvbmVudFR5cGVkIH0gZnJvbSBcInN2ZWx0ZVwiO1xuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IGV4dGVuZHMgU3ZlbHRlQ29tcG9uZW50VHlwZWQ8e2Zvbzogc3RyaW5nfT4ge31cbiAqIGBgYFxuICogVHlwaW5nIHRoaXMgbWFrZXMgaXQgcG9zc2libGUgZm9yIElERXMgbGlrZSBWUyBDb2RlIHdpdGggdGhlIFN2ZWx0ZSBleHRlbnNpb25cbiAqIHRvIHByb3ZpZGUgaW50ZWxsaXNlbnNlIGFuZCB0byB1c2UgdGhlIGNvbXBvbmVudCBsaWtlIHRoaXMgaW4gYSBTdmVsdGUgZmlsZVxuICogd2l0aCBUeXBlU2NyaXB0OlxuICogYGBgc3ZlbHRlXG4gKiA8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICogXHRpbXBvcnQgeyBNeUNvbXBvbmVudCB9IGZyb20gXCJjb21wb25lbnQtbGlicmFyeVwiO1xuICogPC9zY3JpcHQ+XG4gKiA8TXlDb21wb25lbnQgZm9vPXsnYmFyJ30gLz5cbiAqIGBgYFxuICpcbiAqICMjIyMgV2h5IG5vdCBtYWtlIHRoaXMgcGFydCBvZiBgU3ZlbHRlQ29tcG9uZW50KERldilgP1xuICogQmVjYXVzZVxuICogYGBgdHNcbiAqIGNsYXNzIEFTdWJjbGFzc09mU3ZlbHRlQ29tcG9uZW50IGV4dGVuZHMgU3ZlbHRlQ29tcG9uZW50PHtmb286IHN0cmluZ30+IHt9XG4gKiBjb25zdCBjb21wb25lbnQ6IHR5cGVvZiBTdmVsdGVDb21wb25lbnQgPSBBU3ViY2xhc3NPZlN2ZWx0ZUNvbXBvbmVudDtcbiAqIGBgYFxuICogd2lsbCB0aHJvdyBhIHR5cGUgZXJyb3IsIHNvIHdlIG5lZWQgdG8gc2VwYXJhdGUgdGhlIG1vcmUgc3RyaWN0bHkgdHlwZWQgY2xhc3MuXG4gKi9cbmNsYXNzIFN2ZWx0ZUNvbXBvbmVudFR5cGVkIGV4dGVuZHMgU3ZlbHRlQ29tcG9uZW50RGV2IHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGxvb3BfZ3VhcmQodGltZW91dCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBpZiAoRGF0ZS5ub3coKSAtIHN0YXJ0ID4gdGltZW91dCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbmZpbml0ZSBsb29wIGRldGVjdGVkJyk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5leHBvcnQgeyBIdG1sVGFnLCBIdG1sVGFnSHlkcmF0aW9uLCBTdmVsdGVDb21wb25lbnQsIFN2ZWx0ZUNvbXBvbmVudERldiwgU3ZlbHRlQ29tcG9uZW50VHlwZWQsIFN2ZWx0ZUVsZW1lbnQsIGFjdGlvbl9kZXN0cm95ZXIsIGFkZF9hdHRyaWJ1dGUsIGFkZF9jbGFzc2VzLCBhZGRfZmx1c2hfY2FsbGJhY2ssIGFkZF9sb2NhdGlvbiwgYWRkX3JlbmRlcl9jYWxsYmFjaywgYWRkX3Jlc2l6ZV9saXN0ZW5lciwgYWRkX3RyYW5zZm9ybSwgYWZ0ZXJVcGRhdGUsIGFwcGVuZCwgYXBwZW5kX2RldiwgYXBwZW5kX2VtcHR5X3N0eWxlc2hlZXQsIGFwcGVuZF9oeWRyYXRpb24sIGFwcGVuZF9oeWRyYXRpb25fZGV2LCBhcHBlbmRfc3R5bGVzLCBhc3NpZ24sIGF0dHIsIGF0dHJfZGV2LCBhdHRyaWJ1dGVfdG9fb2JqZWN0LCBiZWZvcmVVcGRhdGUsIGJpbmQsIGJpbmRpbmdfY2FsbGJhY2tzLCBibGFua19vYmplY3QsIGJ1YmJsZSwgY2hlY2tfb3V0cm9zLCBjaGlsZHJlbiwgY2xhaW1fY29tcG9uZW50LCBjbGFpbV9lbGVtZW50LCBjbGFpbV9odG1sX3RhZywgY2xhaW1fc3BhY2UsIGNsYWltX3N2Z19lbGVtZW50LCBjbGFpbV90ZXh0LCBjbGVhcl9sb29wcywgY29tcG9uZW50X3N1YnNjcmliZSwgY29tcHV0ZV9yZXN0X3Byb3BzLCBjb21wdXRlX3Nsb3RzLCBjcmVhdGVFdmVudERpc3BhdGNoZXIsIGNyZWF0ZV9hbmltYXRpb24sIGNyZWF0ZV9iaWRpcmVjdGlvbmFsX3RyYW5zaXRpb24sIGNyZWF0ZV9jb21wb25lbnQsIGNyZWF0ZV9pbl90cmFuc2l0aW9uLCBjcmVhdGVfb3V0X3RyYW5zaXRpb24sIGNyZWF0ZV9zbG90LCBjcmVhdGVfc3NyX2NvbXBvbmVudCwgY3VycmVudF9jb21wb25lbnQsIGN1c3RvbV9ldmVudCwgZGF0YXNldF9kZXYsIGRlYnVnLCBkZXN0cm95X2Jsb2NrLCBkZXN0cm95X2NvbXBvbmVudCwgZGVzdHJveV9lYWNoLCBkZXRhY2gsIGRldGFjaF9hZnRlcl9kZXYsIGRldGFjaF9iZWZvcmVfZGV2LCBkZXRhY2hfYmV0d2Vlbl9kZXYsIGRldGFjaF9kZXYsIGRpcnR5X2NvbXBvbmVudHMsIGRpc3BhdGNoX2RldiwgZWFjaCwgZWxlbWVudCwgZWxlbWVudF9pcywgZW1wdHksIGVuZF9oeWRyYXRpbmcsIGVzY2FwZSwgZXNjYXBlX2F0dHJpYnV0ZV92YWx1ZSwgZXNjYXBlX29iamVjdCwgZXNjYXBlZCwgZXhjbHVkZV9pbnRlcm5hbF9wcm9wcywgZml4X2FuZF9kZXN0cm95X2Jsb2NrLCBmaXhfYW5kX291dHJvX2FuZF9kZXN0cm95X2Jsb2NrLCBmaXhfcG9zaXRpb24sIGZsdXNoLCBnZXRBbGxDb250ZXh0cywgZ2V0Q29udGV4dCwgZ2V0X2FsbF9kaXJ0eV9mcm9tX3Njb3BlLCBnZXRfYmluZGluZ19ncm91cF92YWx1ZSwgZ2V0X2N1cnJlbnRfY29tcG9uZW50LCBnZXRfY3VzdG9tX2VsZW1lbnRzX3Nsb3RzLCBnZXRfcm9vdF9mb3Jfc3R5bGUsIGdldF9zbG90X2NoYW5nZXMsIGdldF9zcHJlYWRfb2JqZWN0LCBnZXRfc3ByZWFkX3VwZGF0ZSwgZ2V0X3N0b3JlX3ZhbHVlLCBnbG9iYWxzLCBncm91cF9vdXRyb3MsIGhhbmRsZV9wcm9taXNlLCBoYXNDb250ZXh0LCBoYXNfcHJvcCwgaWRlbnRpdHksIGluaXQsIGluc2VydCwgaW5zZXJ0X2RldiwgaW5zZXJ0X2h5ZHJhdGlvbiwgaW5zZXJ0X2h5ZHJhdGlvbl9kZXYsIGludHJvcywgaW52YWxpZF9hdHRyaWJ1dGVfbmFtZV9jaGFyYWN0ZXIsIGlzX2NsaWVudCwgaXNfY3Jvc3NvcmlnaW4sIGlzX2VtcHR5LCBpc19mdW5jdGlvbiwgaXNfcHJvbWlzZSwgbGlzdGVuLCBsaXN0ZW5fZGV2LCBsb29wLCBsb29wX2d1YXJkLCBtaXNzaW5nX2NvbXBvbmVudCwgbW91bnRfY29tcG9uZW50LCBub29wLCBub3RfZXF1YWwsIG5vdywgbnVsbF90b19lbXB0eSwgb2JqZWN0X3dpdGhvdXRfcHJvcGVydGllcywgb25EZXN0cm95LCBvbk1vdW50LCBvbmNlLCBvdXRyb19hbmRfZGVzdHJveV9ibG9jaywgcHJldmVudF9kZWZhdWx0LCBwcm9wX2RldiwgcXVlcnlfc2VsZWN0b3JfYWxsLCByYWYsIHJ1biwgcnVuX2FsbCwgc2FmZV9ub3RfZXF1YWwsIHNjaGVkdWxlX3VwZGF0ZSwgc2VsZWN0X211bHRpcGxlX3ZhbHVlLCBzZWxlY3Rfb3B0aW9uLCBzZWxlY3Rfb3B0aW9ucywgc2VsZWN0X3ZhbHVlLCBzZWxmLCBzZXRDb250ZXh0LCBzZXRfYXR0cmlidXRlcywgc2V0X2N1cnJlbnRfY29tcG9uZW50LCBzZXRfY3VzdG9tX2VsZW1lbnRfZGF0YSwgc2V0X2RhdGEsIHNldF9kYXRhX2Rldiwgc2V0X2lucHV0X3R5cGUsIHNldF9pbnB1dF92YWx1ZSwgc2V0X25vdywgc2V0X3JhZiwgc2V0X3N0b3JlX3ZhbHVlLCBzZXRfc3R5bGUsIHNldF9zdmdfYXR0cmlidXRlcywgc3BhY2UsIHNwcmVhZCwgc3JjX3VybF9lcXVhbCwgc3RhcnRfaHlkcmF0aW5nLCBzdG9wX3Byb3BhZ2F0aW9uLCBzdWJzY3JpYmUsIHN2Z19lbGVtZW50LCB0ZXh0LCB0aWNrLCB0aW1lX3Jhbmdlc190b19hcnJheSwgdG9fbnVtYmVyLCB0b2dnbGVfY2xhc3MsIHRyYW5zaXRpb25faW4sIHRyYW5zaXRpb25fb3V0LCB0cnVzdGVkLCB1cGRhdGVfYXdhaXRfYmxvY2tfYnJhbmNoLCB1cGRhdGVfa2V5ZWRfZWFjaCwgdXBkYXRlX3Nsb3QsIHVwZGF0ZV9zbG90X2Jhc2UsIHZhbGlkYXRlX2NvbXBvbmVudCwgdmFsaWRhdGVfZWFjaF9hcmd1bWVudCwgdmFsaWRhdGVfZWFjaF9rZXlzLCB2YWxpZGF0ZV9zbG90cywgdmFsaWRhdGVfc3RvcmUsIHhsaW5rX2F0dHIgfTtcbiIsICJpbXBvcnQgeyBNdWx0aUdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHsgZGVidWcsIGVycm9yIH0gZnJvbSBcImxvZ2xldmVsXCI7XHJcbmltcG9ydCB7IG5vcm1hbGl6ZVBhdGgsIE5vdGljZSwgUG9zLCBURmlsZSwgVEZvbGRlciB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgeyB3YWl0IH0gZnJvbSBcIm9ic2lkaWFuLWNvbW11bml0eS1saWJcIjtcclxuaW1wb3J0IHsgYWRkU2libGluZ3NGcm9tU2FtZVBhcmVudCwgYWRkU2libGluZ3NQYXJlbnRJc1BhcmVudCwgYWRkQXVudHNVbmNsZXMsIGFkZENvdXNpbnMsIGFkZFN0cnVjdHVyYWxFcXVpdmFsZW5jZVNpYmxpbmdzIH0gZnJvbSBcIi4vUmVsYXRpb25zXCI7XHJcbmltcG9ydCB7IGFkZENTVkNydW1icywgZ2V0Q1NWUm93cyB9IGZyb20gXCIuL0FsdGVybmF0aXZlSGllcmFyY2hpZXMvQ1NWQ3J1bWJzXCI7XHJcbmltcG9ydCB7IGFkZERhdGF2aWV3Tm90ZXNUb0dyYXBoIH0gZnJvbSBcIi4vQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9EYXRhdmlld05vdGVzXCI7XHJcbmltcG9ydCB7IGFkZERhdGVOb3Rlc1RvR3JhcGggfSBmcm9tIFwiLi9BbHRlcm5hdGl2ZUhpZXJhcmNoaWVzL0RhdGVOb3Rlc1wiO1xyXG5pbXBvcnQgeyBhZGREZW5kcm9uTm90ZXNUb0dyYXBoIH0gZnJvbSBcIi4vQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9EZW5kcm9uTm90ZXNcIjtcclxuaW1wb3J0IHsgYWRkRm9sZGVyTm90ZXNUb0dyYXBoIH0gZnJvbSBcIi4vQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9Gb2xkZXJOb3Rlc1wiO1xyXG5pbXBvcnQge1xyXG4gIGFkZEhOc1RvR3JhcGgsXHJcbiAgZ2V0SGllcmFyY2h5Tm90ZUl0ZW1zLFxyXG59IGZyb20gXCIuL0FsdGVybmF0aXZlSGllcmFyY2hpZXMvSGllcmFyY2h5Tm90ZXMvSGllcmFyY2h5Tm90ZXNcIjtcclxuaW1wb3J0IHtcclxuICBhZGRKdWdnbExpbmtzVG9HcmFwaCxcclxuICBnZXRKdWdnbExpbmtzLFxyXG59IGZyb20gXCIuL0FsdGVybmF0aXZlSGllcmFyY2hpZXMvSnVnZ2xMaW5rc1wiO1xyXG5pbXBvcnQgeyBhZGRMaW5rTm90ZXNUb0dyYXBoIH0gZnJvbSBcIi4vQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9MaW5rTm90ZXNcIjtcclxuaW1wb3J0IHsgYWRkUmVnZXhOb3Rlc1RvR3JhcGggfSBmcm9tIFwiLi9BbHRlcm5hdGl2ZUhpZXJhcmNoaWVzL1JlZ2V4Tm90ZXNcIjtcclxuaW1wb3J0IHsgYWRkVGFnTm90ZXNUb0dyYXBoIH0gZnJvbSBcIi4vQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9UYWdOb3Rlc1wiO1xyXG5pbXBvcnQgeyBhZGRUcmF2ZXJzZU5vdGVzVG9HcmFwaCB9IGZyb20gXCIuL0FsdGVybmF0aXZlSGllcmFyY2hpZXMvVHJhdmVyc2VOb3Rlc1wiO1xyXG5pbXBvcnQge1xyXG4gIEJDX0FMVFMsXHJcbiAgQkNfRFZfTk9URSxcclxuICBCQ19GT0xERVJfTk9URSxcclxuICBCQ19JX0FVTlQsXHJcbiAgQkNfSV9DT1VTSU4sXHJcbiAgQkNfSV9QQVJFTlQsXHJcbiAgQkNfSV9TSUJMSU5HXzEsXHJcbiAgQkNfSV9TSUJMSU5HXzIsXHJcbiAgQkNfTElOS19OT1RFLFxyXG4gIEJDX1JFR0VYX05PVEUsXHJcbiAgQkNfVEFHX05PVEUsXHJcbiAgQkNfVFJBVkVSU0VfTk9URSxcclxuICBkcm9wSGVhZGVyT3JBbGlhcyxcclxuICBzcGxpdExpbmtzUmVnZXgsXHJcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB0eXBlIHtcclxuICBCQ1NldHRpbmdzLFxyXG4gIGR2RnJvbnRtYXR0ZXJDYWNoZSxcclxuICBkdkxpbmssXHJcbiAgUmF3VmFsdWUsXHJcbn0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi9tYWluXCI7XHJcbmltcG9ydCB7XHJcbiAgYWRkRWRnZUlmTm90LFxyXG4gIGFkZE5vZGVzSWZOb3QsXHJcbiAgYnVpbGRPYnNHcmFwaCxcclxuICBnZXRSZWZsZXhpdmVDbG9zdXJlLFxyXG4gIGdldFNvdXJjZU9yZGVyLFxyXG4gIGdldFRhcmdldE9yZGVyLFxyXG4gIHBvcHVsYXRlTWFpbixcclxufSBmcm9tIFwiLi9VdGlscy9ncmFwaFV0aWxzXCI7XHJcbmltcG9ydCB7IGZhbGxiYWNrRmllbGQsIGdldEZpZWxkSW5mbywgaXRlcmF0ZUhpZXJzIH0gZnJvbSBcIi4vVXRpbHMvSGllclV0aWxzXCI7XHJcbmltcG9ydCB7XHJcbiAgZ2V0QmFzZUZyb21NRFBhdGgsXHJcbiAgZ2V0RFZBcGksXHJcbiAgZ2V0RFZCYXNlbmFtZSxcclxufSBmcm9tIFwiLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcbmltcG9ydCB7IGRyYXdUcmFpbCB9IGZyb20gXCIuL1ZpZXdzL1RyYWlsVmlld1wiO1xyXG5cclxuZnVuY3Rpb24gZ2V0RFZNZXRhZGF0YUNhY2hlKHBsdWdpbjogQkNQbHVnaW4sIGZpbGVzOiBURmlsZVtdKSB7XHJcbiAgY29uc3QgeyBkYiB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IGFwaSA9IGdldERWQXBpKHBsdWdpbik7XHJcbiAgZGIuc3RhcnQxRyhcImdldERWTWV0YWRhdGFDYWNoZVwiKTtcclxuXHJcbiAgY29uc3QgZnJvbnRtcyA9IGZpbGVzLm1hcCgoZmlsZSkgPT4gYXBpLnBhZ2UoZmlsZS5wYXRoKSk7XHJcblxyXG4gIGRiLmVuZDFHKHsgZnJvbnRtcyB9KTtcclxuICByZXR1cm4gZnJvbnRtcztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0T2JzTWV0YWRhdGFDYWNoZShwbHVnaW46IEJDUGx1Z2luLCBmaWxlczogVEZpbGVbXSkge1xyXG4gIGNvbnN0IHsgZGIgfSA9IHBsdWdpbjtcclxuICBkYi5zdGFydDFHKFwiZ2V0T2JzTWV0YWRhdGFDYWNoZVwiKTtcclxuXHJcbiAgY29uc3QgZnJvbnRtczogZHZGcm9udG1hdHRlckNhY2hlW10gPSBmaWxlcy5tYXAoKGZpbGUpID0+IHtcclxuICAgIGNvbnN0IHsgZnJvbnRtYXR0ZXIgfSA9IGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKTtcclxuICAgIHJldHVybiBmcm9udG1hdHRlciA/IHsgZmlsZSwgLi4uZnJvbnRtYXR0ZXIgfSA6IHsgZmlsZSB9O1xyXG4gIH0pO1xyXG5cclxuICBkYi5lbmQxRyh7IGZyb250bXMgfSk7XHJcbiAgcmV0dXJuIGZyb250bXM7XHJcbn1cclxuXHJcbmNvbnN0IGlzRFZQcm94eSA9IChpdGVtOiBSYXdWYWx1ZSkgPT4gdHlwZW9mIGl0ZW0uZGVmYXVsdENvbXBhcmF0b3IgPT09IFwiZnVuY3Rpb25cIlxyXG5cclxuLyoqXHJcbiAqIEtlZXAgdW53cmFwcGluZyBhIHByb3hpZWQgaXRlbSB1bnRpbCBpdCBpc24ndCBvbmUgYW55bW9yZVxyXG4gKiBAcGFyYW0gIHtSYXdWYWx1ZX0gaXRlbVxyXG4gKi9cclxuZnVuY3Rpb24gdW5wcm94eShpdGVtOiBSYXdWYWx1ZSkge1xyXG4gIGNvbnN0IHVucHJveGllZCA9IFtdO1xyXG4gIGNvbnN0IHF1ZXVlID0gW2l0ZW1dO1xyXG5cclxuICB3aGlsZSAocXVldWUubGVuZ3RoKSB7XHJcbiAgICBjb25zdCBjdXJySXRlbSA9IHF1ZXVlLnNoaWZ0KCk7XHJcblxyXG4gICAgaWYgKGlzRFZQcm94eShjdXJySXRlbSkpIHF1ZXVlLnB1c2goLi4uY3Vyckl0ZW0udmFsdWVzKTtcclxuICAgIGVsc2UgdW5wcm94aWVkLnB1c2goY3Vyckl0ZW0pO1xyXG4gIH1cclxuICByZXR1cm4gdW5wcm94aWVkO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEdpdmVuIGEgYGR2Q2FjaGVbZmllbGRdYCB2YWx1ZSwgcGFyc2UgdGhlIGxpbmsocykgb3V0IG9mIGl0XHJcbiAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW10gfCBzdHJpbmdbXVtdIHwgZHZMaW5rIHwgZHZMaW5rW10gfCBQb3MgfCBURmlsZX0gdmFsdWVcclxuICovXHJcbmZ1bmN0aW9uIHBhcnNlRmllbGRWYWx1ZShcclxuICB2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10gfCBzdHJpbmdbXVtdIHwgZHZMaW5rIHwgZHZMaW5rW10gfCBQb3MgfCBURmlsZVxyXG4pIHtcclxuICBpZiAoIXZhbHVlKSByZXR1cm4gW107XHJcblxyXG4gIGNvbnN0IHBhcnNlZDogc3RyaW5nW10gPSBbXTtcclxuICB0cnkge1xyXG5cclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgY29uc3Qgc3BsaXRzID0gdmFsdWUubWF0Y2goc3BsaXRMaW5rc1JlZ2V4KTtcclxuXHJcbiAgICAgIGlmIChzcGxpdHMgIT09IG51bGwpIHtcclxuICAgICAgICBjb25zdCBsaW5rTmFtZXMgPSBzcGxpdHMubWFwKChsaW5rKSA9PlxyXG4gICAgICAgICAgZ2V0QmFzZUZyb21NRFBhdGgobGluay5tYXRjaChkcm9wSGVhZGVyT3JBbGlhcylbMV0pXHJcbiAgICAgICAgKTtcclxuICAgICAgICBwYXJzZWQucHVzaCguLi5saW5rTmFtZXMpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCByYXdWYWx1ZXM6IFJhd1ZhbHVlW10gPSBbdmFsdWVdLmZsYXQoNCk7XHJcbiAgICAgIGRlYnVnKC4uLnJhd1ZhbHVlcyk7XHJcblxyXG4gICAgICByYXdWYWx1ZXMuZm9yRWFjaCgocmF3SXRlbSkgPT4ge1xyXG4gICAgICAgIGlmICghcmF3SXRlbSkgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCB1blByb3hpZWQgPSB1bnByb3h5KHJhd0l0ZW0pO1xyXG4gICAgICAgIHVuUHJveGllZC5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgICAgICAgY29uc3QgcmF3QXNTdHJpbmcgPSB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICBjb25zdCBzcGxpdHMgPSByYXdBc1N0cmluZy5tYXRjaChzcGxpdExpbmtzUmVnZXgpO1xyXG4gICAgICAgICAgICBpZiAoc3BsaXRzICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgY29uc3Qgc3RycyA9IHNwbGl0cy5tYXAoKGxpbmspID0+XHJcbiAgICAgICAgICAgICAgICBnZXRCYXNlRnJvbU1EUGF0aChsaW5rLm1hdGNoKGRyb3BIZWFkZXJPckFsaWFzKVsxXSlcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIHBhcnNlZC5wdXNoKC4uLnN0cnMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGJhc2VuYW1lID0gZ2V0QmFzZUZyb21NRFBhdGgocmF3QXNTdHJpbmcpO1xyXG4gICAgICAgICAgICAgIHBhcnNlZC5wdXNoKGJhc2VuYW1lLnNwbGl0KFwiI1wiKVswXS5zcGxpdChcInxcIilbMF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLnBhdGggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBjb25zdCBiYXNlbmFtZSA9IGdldEJhc2VGcm9tTURQYXRoKHZhbHVlLnBhdGgpO1xyXG4gICAgICAgICAgICBpZiAoYmFzZW5hbWUgIT09IHVuZGVmaW5lZCkgcGFyc2VkLnB1c2goYmFzZW5hbWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJzZWQ7XHJcbiAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICBlcnJvcihlcnIpO1xyXG4gICAgcmV0dXJuIHBhcnNlZDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZE1haW5HKHBsdWdpbjogQkNQbHVnaW4pOiBQcm9taXNlPE11bHRpR3JhcGg+IHtcclxuICBjb25zdCBtYWluRyA9IG5ldyBNdWx0aUdyYXBoKCk7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHsgc2V0dGluZ3MsIGRiIH0gPSBwbHVnaW47XHJcbiAgICBjb25zdCB7IHVzZXJIaWVycywgQ1NWUGF0aHMsIHBhcnNlSnVnZ2xMaW5rc1dpdGhvdXRKdWdnbCwgaGllcmFyY2h5Tm90ZXMgfSA9XHJcbiAgICAgIHNldHRpbmdzO1xyXG4gICAgZGIuc3RhcnQyRyhcImluaXRHcmFwaHNcIik7XHJcblxyXG4gICAgaWYgKHVzZXJIaWVycy5sZW5ndGggPT09IDApIHtcclxuICAgICAgZGIuZW5kMkcoKTtcclxuICAgICAgbmV3IE5vdGljZShcIllvdSBkbyBub3QgaGF2ZSBhbnkgQnJlYWRjcnVtYnMgaGllcmFyY2hpZXMgc2V0IHVwLlwiKTtcclxuICAgICAgcmV0dXJuIG1haW5HO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbGVzID0gYXBwLnZhdWx0LmdldE1hcmtkb3duRmlsZXMoKTtcclxuICAgIGNvbnN0IGR2USA9IGFwcC5wbHVnaW5zLmVuYWJsZWRQbHVnaW5zLmhhcyhcImRhdGF2aWV3XCIpO1xyXG5cclxuICAgIGxldCBmcm9udG1zOiBkdkZyb250bWF0dGVyQ2FjaGVbXSA9IGR2UVxyXG4gICAgICA/IGdldERWTWV0YWRhdGFDYWNoZShwbHVnaW4sIGZpbGVzKVxyXG4gICAgICA6IGdldE9ic01ldGFkYXRhQ2FjaGUocGx1Z2luLCBmaWxlcyk7XHJcblxyXG4gICAgaWYgKGZyb250bXMuc29tZSgoZnJvbnRtKSA9PiBmcm9udG0gPT09IHVuZGVmaW5lZCkpIHtcclxuICAgICAgYXdhaXQgd2FpdCgyMDAwKTtcclxuICAgICAgZnJvbnRtcyA9IGR2UVxyXG4gICAgICAgID8gZ2V0RFZNZXRhZGF0YUNhY2hlKHBsdWdpbiwgZmlsZXMpXHJcbiAgICAgICAgOiBnZXRPYnNNZXRhZGF0YUNhY2hlKHBsdWdpbiwgZmlsZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IENTVlJvd3MgPSBDU1ZQYXRocyAhPT0gXCJcIiA/IGF3YWl0IGdldENTVlJvd3MocGx1Z2luKSA6IFtdO1xyXG5cclxuICAgIGNvbnN0IGVsaWdhYmxlQWx0czogeyBbYWx0RmllbGQ6IHN0cmluZ106IGR2RnJvbnRtYXR0ZXJDYWNoZVtdIH0gPSB7fTtcclxuICAgIEJDX0FMVFMuZm9yRWFjaCgoYWx0KSA9PiAoZWxpZ2FibGVBbHRzW2FsdF0gPSBbXSkpO1xyXG5cclxuICAgIGRiLnN0YXJ0MkcoXCJhZGRGcm9udG1hdHRlclRvR3JhcGhcIik7XHJcbiAgICBmcm9udG1zLmZvckVhY2goKHBhZ2UpID0+IHtcclxuICAgICAgQkNfQUxUUy5mb3JFYWNoKChhbHQpID0+IHtcclxuICAgICAgICBpZiAocGFnZVthbHRdICE9PSB1bmRlZmluZWQgJiYgcGFnZVthbHRdICE9PSBudWxsKVxyXG4gICAgICAgICAgZWxpZ2FibGVBbHRzW2FsdF0ucHVzaChwYWdlKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBjb25zdCBiYXNlbmFtZSA9IGdldERWQmFzZW5hbWUocGFnZS5maWxlKTtcclxuICAgICAgY29uc3Qgc291cmNlT3JkZXIgPSBnZXRTb3VyY2VPcmRlcihwYWdlKTtcclxuXHJcbiAgICAgIGl0ZXJhdGVIaWVycyh1c2VySGllcnMsIChoaWVyLCBkaXIsIGZpZWxkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVzID0gcGFyc2VGaWVsZFZhbHVlKHBhZ2VbZmllbGRdKTtcclxuXHJcbiAgICAgICAgdmFsdWVzLmZvckVhY2goKHRhcmdldCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRhcmdldC5zdGFydHNXaXRoKFwiPCVcIikgfHwgdGFyZ2V0LnN0YXJ0c1dpdGgoXCJ7e1wiKSkgcmV0dXJuO1xyXG4gICAgICAgICAgY29uc3QgdGFyZ2V0T3JkZXIgPSBnZXRUYXJnZXRPcmRlcihmcm9udG1zLCB0YXJnZXQpO1xyXG5cclxuICAgICAgICAgIHBvcHVsYXRlTWFpbihcclxuICAgICAgICAgICAgc2V0dGluZ3MsXHJcbiAgICAgICAgICAgIG1haW5HLFxyXG4gICAgICAgICAgICBiYXNlbmFtZSxcclxuICAgICAgICAgICAgZmllbGQsXHJcbiAgICAgICAgICAgIHRhcmdldCxcclxuICAgICAgICAgICAgc291cmNlT3JkZXIsXHJcbiAgICAgICAgICAgIHRhcmdldE9yZGVyXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChDU1ZSb3dzLmxlbmd0aCkgYWRkQ1NWQ3J1bWJzKG1haW5HLCBDU1ZSb3dzLCBkaXIsIGZpZWxkKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBkYi5lbmQyRygpO1xyXG5cclxuICAgIC8vIFNFQ1RJT04gIEp1Z2dsIExpbmtzXHJcbiAgICBjb25zdCBqdWdnbExpbmtzID1cclxuICAgICAgYXBwLnBsdWdpbnMucGx1Z2lucy5qdWdnbCB8fCBwYXJzZUp1Z2dsTGlua3NXaXRob3V0SnVnZ2xcclxuICAgICAgICA/IGF3YWl0IGdldEp1Z2dsTGlua3MocGx1Z2luLCBmaWxlcylcclxuICAgICAgICA6IFtdO1xyXG5cclxuICAgIGlmIChqdWdnbExpbmtzLmxlbmd0aClcclxuICAgICAgYWRkSnVnZ2xMaW5rc1RvR3JhcGgoc2V0dGluZ3MsIGp1Z2dsTGlua3MsIGZyb250bXMsIG1haW5HKTtcclxuXHJcbiAgICAvLyAhU0VDVElPTiAgSnVnZ2wgTGlua3NcclxuXHJcbiAgICBkYi5zdGFydDJHKFwiQWx0ZXJuYXRpdmUgSGllcmFyY2hpZXNcIik7XHJcbiAgICAvLyBTRUNUSU9OICBIaWVyYXJjaHkgTm90ZXNcclxuICAgIGRiLnN0YXJ0MkcoXCJIaWVyYXJjaHkgTm90ZXNcIik7XHJcblxyXG4gICAgaWYgKGhpZXJhcmNoeU5vdGVzLmxlbmd0aCkge1xyXG4gICAgICBmb3IgKGNvbnN0IG5vdGVPckZvbGRlciBvZiBoaWVyYXJjaHlOb3Rlcykge1xyXG4gICAgICAgIGlmIChub3RlT3JGb2xkZXIuZW5kc1dpdGgoXCIvXCIpKSB7XHJcbiAgICAgICAgICBjb25zdCBmb2xkZXIgPSBhcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKFxyXG4gICAgICAgICAgICBub3JtYWxpemVQYXRoKG5vdGVPckZvbGRlcilcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgaWYgKCEoZm9sZGVyIGluc3RhbmNlb2YgVEZvbGRlcikpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBmb2xkZXIuY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgVEZpbGUpIHtcclxuICAgICAgICAgICAgICBhZGRITnNUb0dyYXBoKFxyXG4gICAgICAgICAgICAgICAgc2V0dGluZ3MsXHJcbiAgICAgICAgICAgICAgICBhd2FpdCBnZXRIaWVyYXJjaHlOb3RlSXRlbXMoY2hpbGQpLFxyXG4gICAgICAgICAgICAgICAgbWFpbkdcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGZpbGUgPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaXJzdExpbmtwYXRoRGVzdChub3RlT3JGb2xkZXIsIFwiXCIpO1xyXG4gICAgICAgICAgaWYgKGZpbGUpXHJcbiAgICAgICAgICAgIGFkZEhOc1RvR3JhcGgoXHJcbiAgICAgICAgICAgICAgc2V0dGluZ3MsXHJcbiAgICAgICAgICAgICAgYXdhaXQgZ2V0SGllcmFyY2h5Tm90ZUl0ZW1zKGZpbGUpLFxyXG4gICAgICAgICAgICAgIG1haW5HXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZGIuZW5kMkcoKTtcclxuICAgIC8vICFTRUNUSU9OICBIaWVyYXJjaHkgTm90ZXNcclxuXHJcbiAgICBkYi5zdGFydDJHKFwiRm9sZGVyIE5vdGVzXCIpO1xyXG4gICAgYWRkRm9sZGVyTm90ZXNUb0dyYXBoKHBsdWdpbiwgZWxpZ2FibGVBbHRzW0JDX0ZPTERFUl9OT1RFXSwgZnJvbnRtcywgbWFpbkcpO1xyXG4gICAgZGIuZW5kMkcoKTtcclxuICAgIGRiLnN0YXJ0MkcoXCJUYWcgTm90ZXNcIik7XHJcbiAgICBhZGRUYWdOb3Rlc1RvR3JhcGgocGx1Z2luLCBlbGlnYWJsZUFsdHNbQkNfVEFHX05PVEVdLCBmcm9udG1zLCBtYWluRyk7XHJcbiAgICBkYi5lbmQyRygpO1xyXG4gICAgZGIuc3RhcnQyRyhcIkxpbmsgTm90ZXNcIik7XHJcbiAgICBhZGRMaW5rTm90ZXNUb0dyYXBoKHBsdWdpbiwgZWxpZ2FibGVBbHRzW0JDX0xJTktfTk9URV0sIGZyb250bXMsIG1haW5HKTtcclxuICAgIGRiLmVuZDJHKCk7XHJcbiAgICBkYi5zdGFydDJHKFwiUmVnZXggTm90ZXNcIik7XHJcbiAgICBhZGRSZWdleE5vdGVzVG9HcmFwaChwbHVnaW4sIGVsaWdhYmxlQWx0c1tCQ19SRUdFWF9OT1RFXSwgZnJvbnRtcywgbWFpbkcpO1xyXG4gICAgZGIuZW5kMkcoKTtcclxuICAgIC8vIHBsdWdpbi5hZGROYW1pbmdTeXN0ZW1Ob3Rlc1RvR3JhcGgoZnJvbnRtcywgbWFpbkcpO1xyXG4gICAgZGIuc3RhcnQyRyhcIlRyYXZlcnNlIE5vdGVzXCIpO1xyXG4gICAgYWRkVHJhdmVyc2VOb3Rlc1RvR3JhcGgoXHJcbiAgICAgIHBsdWdpbixcclxuICAgICAgZWxpZ2FibGVBbHRzW0JDX1RSQVZFUlNFX05PVEVdLFxyXG4gICAgICBtYWluRyxcclxuICAgICAgYnVpbGRPYnNHcmFwaCgpXHJcbiAgICApO1xyXG4gICAgZGIuZW5kMkcoKTtcclxuICAgIGRiLnN0YXJ0MkcoXCJEZW5kcm9uIE5vdGVzXCIpO1xyXG4gICAgYWRkRGVuZHJvbk5vdGVzVG9HcmFwaChwbHVnaW4sIGZyb250bXMsIG1haW5HKTtcclxuICAgIGRiLmVuZDJHKCk7XHJcbiAgICBkYi5zdGFydDJHKFwiRGF0YXZpZXcgTm90ZXNcIik7XHJcbiAgICBhZGREYXRhdmlld05vdGVzVG9HcmFwaChwbHVnaW4sIGVsaWdhYmxlQWx0c1tCQ19EVl9OT1RFXSwgZnJvbnRtcywgbWFpbkcpO1xyXG4gICAgZGIuZW5kMkcoKTtcclxuICAgIGRiLnN0YXJ0MkcoXCJEYXRlIE5vdGVzXCIpO1xyXG4gICAgYWRkRGF0ZU5vdGVzVG9HcmFwaChwbHVnaW4sIGZyb250bXMsIG1haW5HKTtcclxuICAgIGRiLmVuZDJHKCk7XHJcblxyXG4gICAgZGIuZW5kMkcoKTtcclxuXHJcbiAgICBmaWxlcy5mb3JFYWNoKChmaWxlKSA9PiBhZGROb2Rlc0lmTm90KG1haW5HLCBbZmlsZS5iYXNlbmFtZV0pKTtcclxuICAgIGRiLmVuZDJHKFwiZ3JhcGhzIGluaXRlZFwiLCB7IG1haW5HIH0pO1xyXG4gICAgcmV0dXJuIG1haW5HO1xyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgZXJyb3IoZXJyKTtcclxuICAgIHBsdWdpbi5kYi5lbmQyRygpO1xyXG4gICAgcmV0dXJuIG1haW5HO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQ2xvc2VkRyhwbHVnaW46IEJDUGx1Z2luKSB7XHJcbiAgY29uc3QgeyBtYWluRywgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCB7XHJcbiAgICB1c2VySGllcnMsXHJcbiAgICBpbXBsaWVkUmVsYXRpb25zOiB7XHJcbiAgICAgIHNhbWVQYXJlbnRJc1NpYmxpbmcsXHJcbiAgICAgIHBhcmVudHNTaWJsaW5nc0lzUGFyZW50cyxcclxuICAgICAgY291c2luc0lzU2libGluZyxcclxuICAgICAgc2libGluZ3NTaWJsaW5nSXNTaWJsaW5nLFxyXG4gICAgICBzaWJsaW5nc1BhcmVudElzUGFyZW50LFxyXG4gICAgfSxcclxuICB9ID0gc2V0dGluZ3M7XHJcbiAgbGV0IGNsb3NlZEcgPSBnZXRSZWZsZXhpdmVDbG9zdXJlKG1haW5HLCB1c2VySGllcnMpO1xyXG5cclxuICBpZiAoc2FtZVBhcmVudElzU2libGluZykgYWRkU2libGluZ3NGcm9tU2FtZVBhcmVudChjbG9zZWRHLCBzZXR0aW5ncyk7XHJcbiAgaWYgKHNpYmxpbmdzUGFyZW50SXNQYXJlbnQpIGFkZFNpYmxpbmdzUGFyZW50SXNQYXJlbnQoY2xvc2VkRyk7XHJcbiAgaWYgKHBhcmVudHNTaWJsaW5nc0lzUGFyZW50cykgYWRkQXVudHNVbmNsZXMoY2xvc2VkRyk7XHJcbiAgaWYgKGNvdXNpbnNJc1NpYmxpbmcpIGFkZENvdXNpbnMoY2xvc2VkRyk7XHJcbiAgaWYgKHNpYmxpbmdzU2libGluZ0lzU2libGluZykgYWRkU3RydWN0dXJhbEVxdWl2YWxlbmNlU2libGluZ3MoY2xvc2VkRyk7XHJcblxyXG4gIHJldHVybiBjbG9zZWRHO1xyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVmcmVzaEluZGV4KHBsdWdpbjogQkNQbHVnaW4pIHtcclxuICBpZiAoIXBsdWdpbi5hY3RpdmVMZWFmQ2hhbmdlKSBwbHVnaW4ucmVnaXN0ZXJBY3RpdmVMZWFmQ2hhbmdlRXZlbnQoKTtcclxuICBpZiAoIXBsdWdpbi5sYXlvdXRDaGFuZ2UpIHBsdWdpbi5yZWdpc3RlckxheW91dENoYW5nZUV2ZW50KCk7XHJcblxyXG4gIHBsdWdpbi5tYWluRyA9IGF3YWl0IGJ1aWxkTWFpbkcocGx1Z2luKTtcclxuICBwbHVnaW4uY2xvc2VkRyA9IGJ1aWxkQ2xvc2VkRyhwbHVnaW4pO1xyXG5cclxuICBmb3IgKGNvbnN0IHsgdHlwZSB9IG9mIHBsdWdpbi5WSUVXUylcclxuICAgIGF3YWl0IHBsdWdpbi5nZXRBY3RpdmVUWVBFVmlldyh0eXBlKT8uZHJhdygpO1xyXG5cclxuICBpZiAocGx1Z2luLnNldHRpbmdzLnNob3dCQ3MpIGF3YWl0IGRyYXdUcmFpbChwbHVnaW4pO1xyXG4gIGlmIChwbHVnaW4uc2V0dGluZ3Muc2hvd1JlZnJlc2hOb3RpY2UpIG5ldyBOb3RpY2UoXCJCQyBJbmRleCByZWZyZXNoZWRcIik7XHJcbn1cclxuIiwgImltcG9ydCBHcmFwaCwgeyBNdWx0aUdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHsgZGZzRnJvbU5vZGUgfSBmcm9tIFwiZ3JhcGhvbG9neS10cmF2ZXJzYWxcIjtcclxuaW1wb3J0IHR5cGUgeyBBdHRyaWJ1dGVzIH0gZnJvbSBcImdyYXBob2xvZ3ktdHlwZXNcIjtcclxuaW1wb3J0IHsgaW5mbyB9IGZyb20gXCJsb2dsZXZlbFwiO1xyXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vLi4vbWFpblwiO1xyXG5pbXBvcnQge1xyXG4gIEJDX0lfUkVGTEVYSVZFLFxyXG4gIEJDX09SREVSLFxyXG4gIGJsYW5rUmVhbE5JbXBsaWVkLFxyXG4gIERJUkVDVElPTlMsXHJcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgdHlwZSB7XHJcbiAgQkNTZXR0aW5ncyxcclxuICBEaXJlY3Rpb25zLFxyXG4gIGR2RnJvbnRtYXR0ZXJDYWNoZSxcclxuICBFZGdlQXR0cixcclxuICBOb2RlUGF0aCxcclxuICBSZWFsTkltcGxpZWQsXHJcbiAgVXNlckhpZXIsXHJcbn0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHsgZ2V0RmllbGRJbmZvLCBnZXRPcHBEaXIsIGdldE9wcEZpZWxkcyB9IGZyb20gXCIuL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXRCYXNlRnJvbU1EUGF0aCB9IGZyb20gXCIuL09ic2lkaWFuVXRpbHNcIjtcclxuXHJcbi8vIFRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIHJlYWwgJiBpbXBsaWVkIGdyYXBocyBmb3IgYSBnaXZlbiByZWxhdGlvbiwgYW5kIHJldHVybnMgYSBuZXcgZ3JhcGhzIHdpdGggYm90aC5cclxuLy8gSXQgbWFrZXMgaW1wbGllZCByZWxhdGlvbnMgcmVhbFxyXG4vLyBUT0RPIHVzZSByZWZsZXhpdmVDbG9zdXJlIGluc3RlYWRcclxuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlSW1wbGllZExpbmtzKFxyXG4gIHJlYWw6IE11bHRpR3JhcGgsXHJcbiAgaW1wbGllZDogTXVsdGlHcmFwaFxyXG4pOiBNdWx0aUdyYXBoIHtcclxuICBjb25zdCBjbG9zZWRHID0gcmVhbC5jb3B5KCk7XHJcbiAgaW1wbGllZC5mb3JFYWNoRWRnZSgoa2V5LCBhLCBzLCB0KSA9PiB7XHJcbiAgICBjbG9zZWRHLm1lcmdlRWRnZSh0LCBzLCBhKTtcclxuICB9KTtcclxuICByZXR1cm4gY2xvc2VkRztcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVW5saW5rZWROb2RlcyhnOiBNdWx0aUdyYXBoKSB7XHJcbiAgY29uc3QgY29weSA9IGcuY29weSgpO1xyXG4gIGNvcHkuZm9yRWFjaE5vZGUoKG5vZGUpID0+IHtcclxuICAgIGlmICghY29weS5kZWdyZWUobm9kZSkpIGNvcHkuZHJvcE5vZGUobm9kZSk7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGNvcHk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gYSBzdWJncmFwaCBvZiBhbGwgbm9kZXMgJiBlZGdlcyB3aXRoIGBkaXJzLmluY2x1ZGVzKGEuZGlyKWBcclxuICpcclxuICogRmlsdGVyIHRoZSBnaXZlbiBncmFwaCB0byBvbmx5IGluY2x1ZGUgZWRnZXMgaW4gdGhlIGdpdmVuIGRpcmVjdGlvbnMuXHJcbiAqIEBwYXJhbSAge011bHRpR3JhcGh9IGdcclxuICogQHBhcmFtICB7RGlyZWN0aW9uc30gZGlyXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3ViSW5EaXJzKGc6IE11bHRpR3JhcGgsIC4uLmRpcnM6IERpcmVjdGlvbnNbXSkge1xyXG4gIGNvbnN0IHN1YiA9IG5ldyBNdWx0aUdyYXBoKCk7XHJcbiAgZz8uZm9yRWFjaEVkZ2UoKGssIGEsIHMsIHQpID0+IHtcclxuICAgIGlmIChkaXJzLmluY2x1ZGVzKGEuZGlyKSkge1xyXG4gICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgYWRkTm9kZXNJZk5vdChzdWIsIFtzLCB0XSwgeyBvcmRlcjogYS5vcmRlciB9KTtcclxuICAgICAgc3ViLmFkZEVkZ2UocywgdCwgYSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHN1YjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiBhIHN1YmdyYXBoIG9mIGFsbCBub2RlcyAmIGVkZ2VzIHdpdGggYGZpZWxkcy5pbmNsdWRlcyhhLmZpZWxkKWAuXHJcbiAqXHJcbiAqIEZpbHRlciB0aGUgZ2l2ZW4gZ3JhcGggdG8gb25seSBpbmNsdWRlIGVkZ2VzIHdpdGggdGhlIGdpdmVuIGZpZWxkcy5cclxuICogQHBhcmFtICB7TXVsdGlHcmFwaH0gZ1xyXG4gKiBAcGFyYW0gIHtzdHJpbmdbXX0gZmllbGRzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3ViRm9yRmllbGRzKGc6IE11bHRpR3JhcGgsIGZpZWxkczogc3RyaW5nW10pIHtcclxuICBjb25zdCBzdWIgPSBuZXcgTXVsdGlHcmFwaCgpO1xyXG4gIGcuZm9yRWFjaEVkZ2UoKGssIGEsIHMsIHQpID0+IHtcclxuICAgIGlmIChmaWVsZHMuaW5jbHVkZXMoYS5maWVsZCkpIHtcclxuICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgIGFkZE5vZGVzSWZOb3Qoc3ViLCBbcywgdF0sIHsgb3JkZXI6IGEub3JkZXIgfSk7XHJcbiAgICAgIHN1Yi5hZGRFZGdlKHMsIHQsIGEpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBzdWI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGb3IgZXZlcnkgZWRnZSBpbiBgZ2AsIGFkZCB0aGUgcmV2ZXJzZSBvZiB0aGUgZWRnZSB0byBhIGNvcHkgb2YgYGdgLlxyXG4gKlxyXG4gKiBJdCBhbHNvIHNldHMgdGhlIGF0dHJzIG9mIHRoZSByZXZlcnNlIGVkZ2VzIHRvIGBvcHBEaXJgIGFuZCBgb3BwRmllbGRzWzBdYFxyXG4gKiBAcGFyYW0gIHtNdWx0aUdyYXBofSBnXHJcbiAqIEBwYXJhbSAge1VzZXJIaWVyW119IHVzZXJIaWVyc1xyXG4gKiBAcGFyYW0gIHtib29sZWFufSBjbG9zZUFzT3Bwb3NpdGVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWZsZXhpdmVDbG9zdXJlKFxyXG4gIGc6IE11bHRpR3JhcGgsXHJcbiAgdXNlckhpZXJzOiBVc2VySGllcltdXHJcbik6IE11bHRpR3JhcGgge1xyXG4gIGNvbnN0IGNvcHkgPSBnLmNvcHkoKTtcclxuICBjb3B5LmZvckVhY2hFZGdlKChrLCBhLCBzLCB0KSA9PiB7XHJcbiAgICBjb25zdCB7IGRpciwgZmllbGQgfSA9IGE7XHJcbiAgICBpZiAoZmllbGQgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgY29uc3Qgb3BwRGlyID0gZ2V0T3BwRGlyKGRpcik7XHJcbiAgICBjb25zdCBvcHBGaWVsZCA9XHJcbiAgICAgIGRpciA9PT0gXCJzYW1lXCIgPyBmaWVsZCA6IGdldE9wcEZpZWxkcyh1c2VySGllcnMsIGZpZWxkLCBkaXIpWzBdO1xyXG5cclxuICAgIGFkZE5vZGVzSWZOb3QoY29weSwgW3MsIHRdLCB7IG9yZGVyOiA5OTk5IH0pO1xyXG4gICAgYWRkRWRnZUlmTm90KGNvcHksIHQsIHMsIHtcclxuICAgICAgZGlyOiBvcHBEaXIsXHJcbiAgICAgIGZpZWxkOiBvcHBGaWVsZCxcclxuICAgICAgaW1wbGllZDogQkNfSV9SRUZMRVhJVkUsXHJcbiAgICB9KTtcclxuICB9KTtcclxuICByZXR1cm4gY29weTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZE5vZGVzSWZOb3QoXHJcbiAgZzogTXVsdGlHcmFwaCxcclxuICBub2Rlczogc3RyaW5nW10sXHJcbiAgYXR0ciA9IHsgb3JkZXI6IDk5OTkgfVxyXG4pIHtcclxuICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcclxuICAgIGcudXBkYXRlTm9kZShub2RlLCAoZXhzdGFudEF0dHJzOiBBdHRyaWJ1dGVzKSA9PiB7XHJcbiAgICAgIGNvbnN0IGV4dGFudE9yZGVyOiBudW1iZXIgfCB1bmRlZmluZWQgPSBleHN0YW50QXR0cnMub3JkZXI7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uZXhzdGFudEF0dHJzLFxyXG4gICAgICAgIG9yZGVyOiBleHRhbnRPcmRlciAmJiBleHRhbnRPcmRlciA8IDk5OTkgPyBleHRhbnRPcmRlciA6IGF0dHIub3JkZXIsXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRFZGdlSWZOb3QoXHJcbiAgZzogTXVsdGlHcmFwaCxcclxuICBzb3VyY2U6IHN0cmluZyxcclxuICB0YXJnZXQ6IHN0cmluZyxcclxuICBhdHRyPzogQXR0cmlidXRlc1xyXG4pIHtcclxuICBpZiAoIWcuaGFzRWRnZShzb3VyY2UsIHRhcmdldCkpIGcuYWRkRWRnZShzb3VyY2UsIHRhcmdldCwgYXR0cik7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTaW5rcyA9IChnOiBNdWx0aUdyYXBoKSA9PlxyXG4gIGcuZmlsdGVyTm9kZXMoKG5vZGUpID0+IGcuaGFzTm9kZShub2RlKSAmJiAhZy5vdXREZWdyZWUobm9kZSkpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFNvdXJjZXMgPSAoZzogTXVsdGlHcmFwaCkgPT5cclxuICBnLmZpbHRlck5vZGVzKChub2RlKSA9PiBnLmhhc05vZGUobm9kZSkgJiYgIWcuaW5EZWdyZWUobm9kZSkpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldE91dE5laWdoYm91cnMgPSAoZzogTXVsdGlHcmFwaCwgbm9kZTogc3RyaW5nKSA9PlxyXG4gIGcuaGFzTm9kZShub2RlKSA/IGcub3V0TmVpZ2hib3JzKG5vZGUpIDogW107XHJcbmV4cG9ydCBjb25zdCBnZXRJbk5laWdoYm91cnMgPSAoZzogTXVsdGlHcmFwaCwgbm9kZTogc3RyaW5nKSA9PlxyXG4gIGcuaGFzTm9kZShub2RlKSA/IGcuaW5OZWlnaGJvcnMobm9kZSkgOiBbXTtcclxuXHJcbi8qKlxyXG4gKiBGaW5kcyBhbGwgcGF0aHMgZnJvbSBhIHN0YXJ0aW5nIG5vZGUgdG8gYWxsIG90aGVyIHNpbmtzIGluIGEgZ3JhcGguXHJcbiAqXHJcbiAqXHJcbiAqIEBwYXJhbSB7TXVsdGlHcmFwaH0gZyAtIFRoZSBncmFwaCB0byBzZWFyY2hcclxuICogQHBhcmFtIHtzdHJpbmd9IHN0YXJ0IC0gVGhlIHN0YXJ0aW5nIG5vZGVcclxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgYXJyYXlzLiBFYWNoIGFycmF5IGlzIGEgcGF0aC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBkZnNBbGxQYXRocyhnOiBNdWx0aUdyYXBoLCBzdGFydDogc3RyaW5nKTogc3RyaW5nW11bXSB7XHJcbiAgY29uc3QgcXVldWU6IE5vZGVQYXRoW10gPSBbeyBub2RlOiBzdGFydCwgcGF0aDogW10gfV07XHJcbiAgY29uc3QgdmlzaXRlZDogeyBbbm90ZTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcclxuICBjb25zdCBhbGxQYXRoczogc3RyaW5nW11bXSA9IFtdO1xyXG5cclxuICBsZXQgaSA9IDA7XHJcbiAgd2hpbGUgKHF1ZXVlLmxlbmd0aCA+IDAgJiYgaSA8IDEwMDApIHtcclxuICAgIGkrKztcclxuICAgIGNvbnN0IHsgbm9kZSwgcGF0aCB9ID0gcXVldWUuc2hpZnQoKTtcclxuXHJcbiAgICBjb25zdCBleHRQYXRoID0gW25vZGUsIC4uLnBhdGhdO1xyXG4gICAgY29uc3Qgc3VjY3NOb3RWaXNpdGVkID0gZy5oYXNOb2RlKG5vZGUpXHJcbiAgICAgID8gZy5maWx0ZXJPdXROZWlnaGJvcnMoXHJcbiAgICAgICAgbm9kZSxcclxuICAgICAgICAoc3VjYykgPT4gIXZpc2l0ZWRbc3VjY10gfHwgdmlzaXRlZFtzdWNjXSA8IDVcclxuICAgICAgKVxyXG4gICAgICA6IFtdO1xyXG4gICAgY29uc3QgbmV3SXRlbXMgPSBzdWNjc05vdFZpc2l0ZWQubWFwKChzdWNjKSA9PiB7XHJcbiAgICAgIHZpc2l0ZWRbc3VjY10gPSB2aXNpdGVkW3N1Y2NdID8gdmlzaXRlZFtzdWNjXSArIDEgOiAxO1xyXG4gICAgICByZXR1cm4geyBub2RlOiBzdWNjLCBwYXRoOiBleHRQYXRoIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICBxdWV1ZS51bnNoaWZ0KC4uLm5ld0l0ZW1zKTtcclxuXHJcbiAgICBpZiAoIWcuaGFzTm9kZShub2RlKSB8fCAhZy5vdXREZWdyZWUobm9kZSkpIGFsbFBhdGhzLnB1c2goZXh0UGF0aCk7XHJcbiAgfVxyXG4gIHJldHVybiBhbGxQYXRocztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGJmc0FsbFBhdGhzKGc6IE11bHRpR3JhcGgsIHN0YXJ0OiBzdHJpbmcpOiBzdHJpbmdbXVtdIHtcclxuICBjb25zdCBwYXRoc0Fycjogc3RyaW5nW11bXSA9IFtdO1xyXG4gIGNvbnN0IHF1ZXVlOiBOb2RlUGF0aFtdID0gW3sgbm9kZTogc3RhcnQsIHBhdGg6IFtdIH1dO1xyXG5cclxuICBsZXQgaSA9IDA7XHJcbiAgd2hpbGUgKHF1ZXVlLmxlbmd0aCAhPT0gMCAmJiBpIDwgMTAwMCkge1xyXG4gICAgaSsrO1xyXG4gICAgY29uc3QgeyBub2RlLCBwYXRoIH0gPSBxdWV1ZS5zaGlmdCgpO1xyXG4gICAgY29uc3QgZXh0UGF0aCA9IFtub2RlLCAuLi5wYXRoXTtcclxuXHJcbiAgICBjb25zdCBzdWNjcyA9IGcuaGFzTm9kZShub2RlKVxyXG4gICAgICA/IGcuZmlsdGVyT3V0TmVpZ2hib3JzKG5vZGUsIChuKSA9PiAhcGF0aC5pbmNsdWRlcyhuKSlcclxuICAgICAgOiBbXTtcclxuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBzdWNjcykge1xyXG4gICAgICBxdWV1ZS5wdXNoKHsgbm9kZSwgcGF0aDogZXh0UGF0aCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0ZXJtaW5hbCBub2RlXHJcbiAgICBpZiAoIWcuaGFzTm9kZShub2RlKSB8fCBzdWNjcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcGF0aHNBcnIucHVzaChleHRQYXRoKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gU3BsaWNlIG9mZiB0aGUgY3VycmVudCBub3RlIGZyb20gdGhlIHBhdGhcclxuICBwYXRoc0Fyci5mb3JFYWNoKChwYXRoKSA9PiB7XHJcbiAgICBpZiAocGF0aC5sZW5ndGgpIHBhdGguc3BsaWNlKHBhdGgubGVuZ3RoIC0gMSwgMSk7XHJcbiAgfSk7XHJcbiAgaW5mbyh7IHBhdGhzQXJyIH0pO1xyXG4gIHJldHVybiBwYXRoc0FycjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUN5Y2xlcyhnOiBHcmFwaCwgc3RhcnROb2RlOiBzdHJpbmcpIHtcclxuICBjb25zdCBjb3B5ID0gZy5jb3B5KCk7XHJcbiAgbGV0IHByZXZOb2RlID0gbnVsbDtcclxuICBkZnNGcm9tTm9kZShjb3B5LCBzdGFydE5vZGUsIChuKSA9PiB7XHJcbiAgICBjb3B5LmZvckVhY2hPdXROZWlnaGJvcihuLCAodCkgPT4ge1xyXG4gICAgICBpZiAodCA9PT0gcHJldk5vZGUgJiYgY29weS5oYXNFZGdlKHQsIHByZXZOb2RlKSkge1xyXG4gICAgICAgIHRyeSB7IGNvcHkuZHJvcEVkZ2UodCwgcHJldk5vZGUpIH1cclxuICAgICAgICBjYXRjaCAoZXJyb3IpIHsgY29uc29sZS5lcnJvcih0LCBwcmV2Tm9kZSwgZXJyb3IpIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcHJldk5vZGUgPSBuO1xyXG4gIH0pO1xyXG4gIHJldHVybiBjb3B5O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3ViQ2xvc2VTdWIoXHJcbiAgZzogTXVsdGlHcmFwaCxcclxuICB1c2VySGllcnM6IFVzZXJIaWVyW10sXHJcbiAgLi4uZGlyczogRGlyZWN0aW9uc1tdXHJcbikge1xyXG4gIGNvbnN0IHN1YiA9IGdldFN1YkluRGlycyhnLCAuLi5kaXJzKTtcclxuICBjb25zdCBjbG9zZWQgPSBnZXRSZWZsZXhpdmVDbG9zdXJlKHN1YiwgdXNlckhpZXJzKTtcclxuICBjb25zdCBjbG9zZWRTdWIgPSBnZXRTdWJJbkRpcnMoY2xvc2VkLCBkaXJzWzBdKTtcclxuICByZXR1cm4gY2xvc2VkU3ViO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRPYnNHcmFwaCgpOiBNdWx0aUdyYXBoIHtcclxuICBjb25zdCBPYnNHID0gbmV3IE11bHRpR3JhcGgoKTtcclxuICBjb25zdCB7IHJlc29sdmVkTGlua3MsIHVucmVzb2x2ZWRMaW5rcyB9ID0gYXBwLm1ldGFkYXRhQ2FjaGU7XHJcblxyXG4gIGZvciAoY29uc3Qgc291cmNlIGluIHJlc29sdmVkTGlua3MpIHtcclxuICAgIGlmICghc291cmNlLmVuZHNXaXRoKFwiLm1kXCIpKSBjb250aW51ZTtcclxuICAgIGNvbnN0IHNvdXJjZUJhc2UgPSBnZXRCYXNlRnJvbU1EUGF0aChzb3VyY2UpO1xyXG4gICAgYWRkTm9kZXNJZk5vdChPYnNHLCBbc291cmNlQmFzZV0pO1xyXG5cclxuICAgIGZvciAoY29uc3QgZGVzdCBpbiByZXNvbHZlZExpbmtzW3NvdXJjZV0pIHtcclxuICAgICAgaWYgKCFkZXN0LmVuZHNXaXRoKFwiLm1kXCIpKSBjb250aW51ZTtcclxuICAgICAgY29uc3QgZGVzdEJhc2UgPSBnZXRCYXNlRnJvbU1EUGF0aChkZXN0KTtcclxuICAgICAgYWRkTm9kZXNJZk5vdChPYnNHLCBbZGVzdEJhc2VdKTtcclxuICAgICAgT2JzRy5hZGRFZGdlKHNvdXJjZUJhc2UsIGRlc3RCYXNlLCB7IHJlc29sdmVkOiB0cnVlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9yIChjb25zdCBzb3VyY2UgaW4gdW5yZXNvbHZlZExpbmtzKSB7XHJcbiAgICBjb25zdCBzb3VyY2VCYXNlID0gZ2V0QmFzZUZyb21NRFBhdGgoc291cmNlKTtcclxuICAgIGFkZE5vZGVzSWZOb3QoT2JzRywgW3NvdXJjZUJhc2VdKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGRlc3QgaW4gdW5yZXNvbHZlZExpbmtzW3NvdXJjZV0pIHtcclxuICAgICAgY29uc3QgZGVzdEJhc2UgPSBnZXRCYXNlRnJvbU1EUGF0aChkZXN0KTtcclxuICAgICAgYWRkTm9kZXNJZk5vdChPYnNHLCBbZGVzdEJhc2VdKTtcclxuICAgICAgaWYgKHNvdXJjZUJhc2UgPT09IGRlc3RCYXNlKSBjb250aW51ZTtcclxuICAgICAgT2JzRy5hZGRFZGdlKHNvdXJjZUJhc2UsIGRlc3RCYXNlLCB7IHJlc29sdmVkOiBmYWxzZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluZm8oeyBPYnNHIH0pO1xyXG4gIHJldHVybiBPYnNHO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcG9wdWxhdGVNYWluKFxyXG4gIHNldHRpbmdzOiBCQ1NldHRpbmdzLFxyXG4gIG1haW5HOiBNdWx0aUdyYXBoLFxyXG4gIHNvdXJjZTogc3RyaW5nLFxyXG4gIGZpZWxkOiBzdHJpbmcsXHJcbiAgdGFyZ2V0OiBzdHJpbmcsXHJcbiAgc291cmNlT3JkZXI6IG51bWJlcixcclxuICB0YXJnZXRPcmRlcjogbnVtYmVyLFxyXG4gIGZpbGxPcHAgPSBmYWxzZVxyXG4pOiB2b2lkIHtcclxuICBjb25zdCB7IHVzZXJIaWVycyB9ID0gc2V0dGluZ3M7XHJcbiAgY29uc3QgZGlyID0gZ2V0RmllbGRJbmZvKHVzZXJIaWVycywgZmllbGQpLmZpZWxkRGlyO1xyXG5cclxuICBhZGROb2Rlc0lmTm90KG1haW5HLCBbc291cmNlXSwge1xyXG4gICAgb3JkZXI6IHNvdXJjZU9yZGVyLFxyXG4gIH0pO1xyXG5cclxuICBhZGROb2Rlc0lmTm90KG1haW5HLCBbdGFyZ2V0XSwge1xyXG4gICAgb3JkZXI6IHRhcmdldE9yZGVyLFxyXG4gIH0pO1xyXG5cclxuICBhZGRFZGdlSWZOb3QobWFpbkcsIHNvdXJjZSwgdGFyZ2V0LCB7XHJcbiAgICBkaXIsXHJcbiAgICBmaWVsZCxcclxuICB9KTtcclxuICBpZiAoZmlsbE9wcCkge1xyXG4gICAgYWRkRWRnZUlmTm90KG1haW5HLCB0YXJnZXQsIHNvdXJjZSwge1xyXG4gICAgICBkaXI6IGdldE9wcERpcihkaXIpLFxyXG4gICAgICBmaWVsZDogZ2V0T3BwRmllbGRzKHVzZXJIaWVycywgZmllbGQsIGRpcilbMF0sXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBnZXRUYXJnZXRPcmRlciA9IChmcm9udG1zOiBkdkZyb250bWF0dGVyQ2FjaGVbXSwgdGFyZ2V0OiBzdHJpbmcpID0+XHJcbiAgcGFyc2VJbnQoXHJcbiAgICAoZnJvbnRtcy5maW5kKChmZikgPT4gZmY/LmZpbGU/LmJhc2VuYW1lID09PSB0YXJnZXQpPy5bXHJcbiAgICAgIEJDX09SREVSXHJcbiAgICBdIGFzIHN0cmluZykgPz8gXCI5OTk5XCJcclxuICApO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFNvdXJjZU9yZGVyID0gKGZyb250bTogZHZGcm9udG1hdHRlckNhY2hlKSA9PlxyXG4gIHBhcnNlSW50KChmcm9udG1bQkNfT1JERVJdIGFzIHN0cmluZykgPz8gXCI5OTk5XCIpO1xyXG5cclxuLyoqIFJlbWVtYmVyIHRvIGZpbHRlciBieSBoaWVyYXJjaHkgaW4gTWF0cml4VmlldyEgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlYWxuSW1wbGllZChcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIGN1cnJOb2RlOiBzdHJpbmcsXHJcbiAgZGlyOiBEaXJlY3Rpb25zID0gbnVsbFxyXG4pOiBSZWFsTkltcGxpZWQge1xyXG4gIGNvbnN0IHJlYWxzbkltcGxpZWRzOiBSZWFsTkltcGxpZWQgPSBibGFua1JlYWxOSW1wbGllZCgpO1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MsIGNsb3NlZEcgfSA9IHBsdWdpbjtcclxuICBjb25zdCB7IHVzZXJIaWVycyB9ID0gc2V0dGluZ3M7XHJcblxyXG4gIGlmICghY2xvc2VkRy5oYXNOb2RlKGN1cnJOb2RlKSkgcmV0dXJuIHJlYWxzbkltcGxpZWRzO1xyXG4gIGNsb3NlZEcuZm9yRWFjaEVkZ2UoY3Vyck5vZGUsIChrLCBhLCBzLCB0KSA9PiB7XHJcbiAgICBjb25zdCB7IGZpZWxkLCBkaXI6IGVkZ2VEaXIsIGltcGxpZWQgfSA9IGEgYXMgRWRnZUF0dHI7XHJcbiAgICBjb25zdCBvcHBGaWVsZCA9IGdldE9wcEZpZWxkcyh1c2VySGllcnMsIGZpZWxkLCBlZGdlRGlyKVswXTtcclxuXHJcbiAgICAoZGlyID8gW2RpciwgZ2V0T3BwRGlyKGRpcildIDogRElSRUNUSU9OUykuZm9yRWFjaChcclxuICAgICAgKGN1cnJEaXI6IERpcmVjdGlvbnMpID0+IHtcclxuICAgICAgICBjb25zdCBvcHBEaXIgPSBnZXRPcHBEaXIoY3VyckRpcik7XHJcbiAgICAgICAgLy8gUmVhbHNcclxuICAgICAgICBpZiAocyA9PT0gY3Vyck5vZGUgJiYgKGVkZ2VEaXIgPT09IGN1cnJEaXIgfHwgZWRnZURpciA9PT0gb3BwRGlyKSkge1xyXG4gICAgICAgICAgY29uc3QgYXJyID0gcmVhbHNuSW1wbGllZHNbZWRnZURpcl0ucmVhbHM7XHJcbiAgICAgICAgICBpZiAoYXJyLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS50byA9PT0gdCkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIGFyci5wdXNoKHsgdG86IHQsIGZpZWxkLCBpbXBsaWVkIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJbXBsaWVkc1xyXG4gICAgICAgIC8vIElmIGBzICE9PSBjdXJyTm9kZWAgdGhlbiBgdGAgbXVzdCBiZVxyXG4gICAgICAgIGVsc2UgaWYgKGVkZ2VEaXIgPT09IGN1cnJEaXIgfHwgZWRnZURpciA9PT0gb3BwRGlyKSB7XHJcbiAgICAgICAgICBjb25zdCBhcnIgPSByZWFsc25JbXBsaWVkc1tnZXRPcHBEaXIoZWRnZURpcildLmltcGxpZWRzO1xyXG4gICAgICAgICAgaWYgKGFyci5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0udG8gPT09IHMpID09PSAtMSkge1xyXG4gICAgICAgICAgICBhcnIucHVzaCh7XHJcbiAgICAgICAgICAgICAgdG86IHMsXHJcbiAgICAgICAgICAgICAgZmllbGQ6IG9wcEZpZWxkLFxyXG4gICAgICAgICAgICAgIGltcGxpZWQsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9KTtcclxuICByZXR1cm4gcmVhbHNuSW1wbGllZHM7XHJcbn1cclxuIiwgImltcG9ydCB7IEFSUk9XX0RJUkVDVElPTlMsIERJUkVDVElPTlMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB0eXBlIHsgRGlyZWN0aW9ucywgVXNlckhpZXIgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5cclxuLyoqXHJcbiAqIEdldCBhbGwgdGhlIGZpZWxkcyBpbiBgZGlyYC5cclxuICogUmV0dXJucyBhbGwgZmllbGRzIGlmIGBkaXIgPT09ICdhbGwnYFxyXG4gKiBAcGFyYW0gIHtVc2VySGllcltdfSB1c2VySGllcnNcclxuICogQHBhcmFtICB7RGlyZWN0aW9uc3xcImFsbFwifSBkaXJcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWVsZHMoXHJcbiAgdXNlckhpZXJzOiBVc2VySGllcltdLFxyXG4gIGRpcjogRGlyZWN0aW9ucyB8IFwiYWxsXCIgPSBcImFsbFwiXHJcbikge1xyXG4gIGNvbnN0IGZpZWxkczogc3RyaW5nW10gPSBbXTtcclxuICB1c2VySGllcnMuZm9yRWFjaCgoaGllcikgPT4ge1xyXG4gICAgaWYgKGRpciA9PT0gXCJhbGxcIikge1xyXG4gICAgICBESVJFQ1RJT05TLmZvckVhY2goKGVhY2hEaXIpID0+IHtcclxuICAgICAgICBmaWVsZHMucHVzaCguLi5oaWVyW2VhY2hEaXJdKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmaWVsZHMucHVzaCguLi5oaWVyW2Rpcl0pO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBmaWVsZHM7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBnZXRPcHBEaXIgPSAoZGlyOiBEaXJlY3Rpb25zKTogRGlyZWN0aW9ucyA9PiB7XHJcbiAgc3dpdGNoIChkaXIpIHtcclxuICAgIGNhc2UgXCJ1cFwiOlxyXG4gICAgICByZXR1cm4gXCJkb3duXCI7XHJcbiAgICBjYXNlIFwiZG93blwiOlxyXG4gICAgICByZXR1cm4gXCJ1cFwiO1xyXG4gICAgY2FzZSBcInNhbWVcIjpcclxuICAgICAgcmV0dXJuIFwic2FtZVwiO1xyXG4gICAgY2FzZSBcIm5leHRcIjpcclxuICAgICAgcmV0dXJuIFwicHJldlwiO1xyXG4gICAgY2FzZSBcInByZXZcIjpcclxuICAgICAgcmV0dXJuIFwibmV4dFwiO1xyXG4gIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiAgR2V0IHRoZSBoaWVyYXJjaHkgYW5kIGRpcmVjdGlvbiB0aGF0IGBmaWVsZGAgaXMgaW5cclxuICogKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpZWxkSW5mbyh1c2VySGllcnM6IFVzZXJIaWVyW10sIGZpZWxkOiBzdHJpbmcpIHtcclxuICBsZXQgZmllbGREaXI6IERpcmVjdGlvbnM7XHJcbiAgbGV0IGZpZWxkSGllcjogVXNlckhpZXI7XHJcblxyXG4gIERJUkVDVElPTlMuZm9yRWFjaCgoZGlyOiBEaXJlY3Rpb25zKSA9PiB7XHJcbiAgICB1c2VySGllcnMuZm9yRWFjaCgoaGllcikgPT4ge1xyXG4gICAgICBpZiAoaGllcltkaXJdLmluY2x1ZGVzKGZpZWxkKSkge1xyXG4gICAgICAgIGZpZWxkRGlyID0gZGlyO1xyXG4gICAgICAgIGZpZWxkSGllciA9IGhpZXI7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9KTtcclxuICByZXR1cm4geyBmaWVsZEhpZXIsIGZpZWxkRGlyIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRPcHBGaWVsZHMoXHJcbiAgdXNlckhpZXJzOiBVc2VySGllcltdLFxyXG4gIGZpZWxkOiBzdHJpbmcsXHJcbiAgZGlyOiBEaXJlY3Rpb25zXHJcbikge1xyXG4gIC8vIElmIHRoZSBmaWVsZCBlbmRzIHdpdGggYD5gLCBpdCBpcyBhbHJlYWR5IHRoZSBvcHBvc2l0ZSBmaWVsZCB3ZSBuZWVkIChjb21pbmcgZnJvbSBgZ2V0T3BwRmFsbGJhY2tgKVxyXG4gIGlmIChmaWVsZC5lbmRzV2l0aChcIj5cIikpIHJldHVybiBbZmllbGQuc2xpY2UoMCwgLTQpXTtcclxuXHJcbiAgY29uc3Qgb3BwRmllbGRzID0gW2ZhbGxiYWNrT3BwRmllbGQoZmllbGQsIGRpcildO1xyXG4gIGNvbnN0IHsgZmllbGRIaWVyLCBmaWVsZERpciB9ID0gZ2V0RmllbGRJbmZvKHVzZXJIaWVycywgZmllbGQpO1xyXG4gIGlmICghZmllbGRIaWVyIHx8ICFmaWVsZERpcikgcmV0dXJuIG9wcEZpZWxkcztcclxuXHJcbiAgY29uc3Qgb3BwRGlyID0gZ2V0T3BwRGlyKGZpZWxkRGlyKTtcclxuICBvcHBGaWVsZHMudW5zaGlmdCguLi5maWVsZEhpZXJbb3BwRGlyXSk7XHJcbiAgcmV0dXJuIG9wcEZpZWxkcztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGhpZXJUb1N0ciA9IChoaWVyOiBVc2VySGllcikgPT5cclxuICBESVJFQ1RJT05TLm1hcChcclxuICAgIChkaXIpID0+IGAke0FSUk9XX0RJUkVDVElPTlNbZGlyXX06ICR7aGllcltkaXJdLmpvaW4oXCIsIFwiKX1gXHJcbiAgKS5qb2luKFwiXFxuXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGZhbGxiYWNrRmllbGQgPSAoZmllbGQ6IHN0cmluZywgZGlyOiBEaXJlY3Rpb25zKSA9PlxyXG4gIGAke2ZpZWxkfSA8JHtBUlJPV19ESVJFQ1RJT05TW2Rpcl19PmA7XHJcbmV4cG9ydCBjb25zdCBmYWxsYmFja09wcEZpZWxkID0gKGZpZWxkOiBzdHJpbmcsIGRpcjogRGlyZWN0aW9ucykgPT5cclxuICBgJHtmaWVsZH0gPCR7QVJST1dfRElSRUNUSU9OU1tnZXRPcHBEaXIoZGlyKV19PmA7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXRlcmF0ZUhpZXJzKFxyXG4gIHVzZXJIaWVyczogVXNlckhpZXJbXSxcclxuICBmbjogKGhpZXI6IFVzZXJIaWVyLCBkaXI6IERpcmVjdGlvbnMsIGZpZWxkOiBzdHJpbmcpID0+IHZvaWRcclxuKSB7XHJcbiAgdXNlckhpZXJzLmZvckVhY2goKGhpZXIpID0+IHtcclxuICAgIERJUkVDVElPTlMuZm9yRWFjaCgoZGlyKSA9PiB7XHJcbiAgICAgIGhpZXJbZGlyXS5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGZuKGhpZXIsIGRpciwgZmllbGQpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG59XHJcbiIsICJpbXBvcnQgeyBpbmZvIH0gZnJvbSBcImxvZ2xldmVsXCI7XHJcbmltcG9ydCB7XHJcbiAgRnJvbnRNYXR0ZXJDYWNoZSxcclxuICBwYXJzZVlhbWwsXHJcbiAgc3RyaW5naWZ5WWFtbCxcclxuICBURmlsZSxcclxufSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHtcclxuICBpc0luVmF1bHQsXHJcbiAgd2FpdCxcclxuICB3YWl0Rm9yUmVzb2x2ZWRMaW5rcyxcclxufSBmcm9tIFwib2JzaWRpYW4tY29tbXVuaXR5LWxpYi9kaXN0L3V0aWxzXCI7XHJcbmltcG9ydCB0eXBlIHsgTWV0YWVkaXRBcGkgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG5pbXBvcnQgeyBzcGxpdEFuZFRyaW0gfSBmcm9tIFwiLi9nZW5lcmFsVXRpbHNcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTZXR0aW5ncyA9ICgpID0+IGFwcC5wbHVnaW5zLnBsdWdpbnMuYnJlYWRjcnVtYnMuc2V0dGluZ3NcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRDdXJyRmlsZSA9ICgpOiBURmlsZSB8IG51bGwgPT4gYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVGaWxlKClcclxuXHJcbi8qKlxyXG4gKiBHZXQgYmFzZW5hbWUgZnJvbSBhICoqTWFya2Rvd24qKiBgcGF0aGBcclxuICogQHBhcmFtICB7c3RyaW5nfSBwYXRoXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZ2V0QmFzZUZyb21NRFBhdGggPSAocGF0aDogc3RyaW5nKSA9PiB7XHJcbiAgY29uc3Qgc3BsaXRTbGFzaCA9IHBhdGguc3BsaXQoXCIvXCIpLmxhc3QoKTtcclxuICBpZiAoc3BsaXRTbGFzaC5lbmRzV2l0aChcIi5tZFwiKSkge1xyXG4gICAgcmV0dXJuIHNwbGl0U2xhc2guc3BsaXQoXCIubWRcIikuc2xpY2UoMCwgLTEpLmpvaW4oXCIuXCIpO1xyXG4gIH0gZWxzZSByZXR1cm4gc3BsaXRTbGFzaDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXREVkJhc2VuYW1lID0gKGZpbGU6IFRGaWxlKSA9PiBmaWxlLmJhc2VuYW1lIHx8IGZpbGUubmFtZTtcclxuZXhwb3J0IGNvbnN0IGdldEZvbGRlck5hbWUgPSAoZmlsZTogVEZpbGUpOiBzdHJpbmcgPT5cclxuICAvL0B0cy1pZ25vcmVcclxuICBmaWxlPy5wYXJlbnQ/Lm5hbWUgfHwgZmlsZS5mb2xkZXI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbWFrZVdpa2koc3RyOiBzdHJpbmcsIHdpa2lRID0gdHJ1ZSkge1xyXG4gIGxldCBjb3B5ID0gc3RyLnNsaWNlKCk7XHJcbiAgaWYgKHdpa2lRKSB7XHJcbiAgICBjb3B5ID0gXCJbW1wiICsgY29weTtcclxuICAgIGNvcHkgKz0gXCJdXVwiO1xyXG4gIH1cclxuICByZXR1cm4gY29weTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRyb3BXaWtpbGlua3Moc3RyOiBzdHJpbmcpIHtcclxuICBsZXQgY29weSA9IHN0ci5zbGljZSgpO1xyXG4gIGlmIChjb3B5LnN0YXJ0c1dpdGgoXCJbW1wiKSAmJiBjb3B5LmVuZHNXaXRoKFwiXV1cIikpIGNvcHkgPSBjb3B5LnNsaWNlKDIsIC0yKTtcclxuICByZXR1cm4gY29weTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZHMgb3IgdXBkYXRlcyB0aGUgZ2l2ZW4geWFtbCBga2V5YCB0byBgdmFsdWVgIGluIHRoZSBnaXZlbiBURmlsZVxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGtleVxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHZhbHVlXHJcbiAqIEBwYXJhbSAge1RGaWxlfSBmaWxlXHJcbiAqIEBwYXJhbSAge0Zyb250TWF0dGVyQ2FjaGV8dW5kZWZpbmVkfSBmcm9udG1hdHRlclxyXG4gKiBAcGFyYW0gIHtNZXRhZWRpdEFwaX0gYXBpXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgY3JlYXRlT3JVcGRhdGVZYW1sID0gYXN5bmMgKFxyXG4gIGtleTogc3RyaW5nLFxyXG4gIHZhbHVlOiBzdHJpbmcsXHJcbiAgZmlsZTogVEZpbGUsXHJcbiAgZnJvbnRtYXR0ZXI6IEZyb250TWF0dGVyQ2FjaGUgfCB1bmRlZmluZWQsXHJcbiAgYXBpOiBNZXRhZWRpdEFwaVxyXG4pID0+IHtcclxuICBjb25zdCB2YWx1ZVN0ciA9IHZhbHVlLnRvU3RyaW5nKCk7XHJcblxyXG4gIGlmICghZnJvbnRtYXR0ZXIgfHwgZnJvbnRtYXR0ZXJba2V5XSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICBpbmZvKGBDcmVhdGluZzogJHtrZXl9OiAke3ZhbHVlU3RyfWApO1xyXG4gICAgYXdhaXQgYXBpLmNyZWF0ZVlhbWxQcm9wZXJ0eShrZXksIGBbJyR7dmFsdWVTdHJ9J11gLCBmaWxlKTtcclxuICB9IGVsc2UgaWYgKFsuLi5bZnJvbnRtYXR0ZXJba2V5XV1dLmZsYXQoMykuc29tZSgodmFsKSA9PiB2YWwgPT0gdmFsdWVTdHIpKSB7XHJcbiAgICBpbmZvKFwiQWxyZWFkeSBFeGlzdHMhXCIpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zdCBvbGRWYWx1ZUZsYXQ6IHN0cmluZ1tdID0gWy4uLltmcm9udG1hdHRlcltrZXldXV0uZmxhdCg0KTtcclxuICAgIGNvbnN0IG5ld1ZhbHVlID0gWy4uLm9sZFZhbHVlRmxhdCwgYCcke3ZhbHVlU3RyfSdgXTtcclxuICAgIGluZm8oYFVwZGF0aW5nOiAke2tleX06ICR7bmV3VmFsdWV9YCk7XHJcbiAgICBhd2FpdCBhcGkudXBkYXRlKGtleSwgYFske25ld1ZhbHVlLmpvaW4oXCIsIFwiKX1dYCwgZmlsZSk7XHJcbiAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNoYW5nZVlhbWwoeWFtbDogc3RyaW5nLCBrZXk6IHN0cmluZywgbmV3VmFsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIGlmICh5YW1sID09PSBcIlwiKSB7XHJcbiAgICByZXR1cm4gYCR7a2V5fTogWycke25ld1ZhbH0nXWA7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnN0IHBhcnNlZDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHBhcnNlWWFtbCh5YW1sKTtcclxuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VkW2tleV07XHJcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBwYXJzZWRba2V5XSA9IG5ld1ZhbDtcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlICE9PSBuZXdWYWwpIHtcclxuICAgICAgcGFyc2VkW2tleV0gPSBbdmFsdWUsIG5ld1ZhbF07XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0eXBlb2YgdmFsdWU/LlswXSA9PT0gXCJzdHJpbmdcIiAmJlxyXG4gICAgICB2YWx1ZS5pbmNsdWRlcyAmJlxyXG4gICAgICAhdmFsdWUuaW5jbHVkZXMobmV3VmFsKVxyXG4gICAgKSB7XHJcbiAgICAgIHBhcnNlZFtrZXldID0gWy4uLnZhbHVlLCBuZXdWYWxdO1xyXG4gICAgfVxyXG4gICAgLy8gZWxzZSBpZiAob3RoZXIgdHlwZXMgb2YgdmFsdWVzLi4uKVxyXG4gICAgcmV0dXJuIHN0cmluZ2lmeVlhbWwocGFyc2VkKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzcGxpdEF0WWFtbChjb250ZW50OiBzdHJpbmcpOiBbc3RyaW5nLCBzdHJpbmddIHtcclxuICBpZiAoIWNvbnRlbnQuc3RhcnRzV2l0aChcIi0tLVxcblwiKSkgcmV0dXJuIFtcIlwiLCBjb250ZW50XTtcclxuICBlbHNlIHtcclxuICAgIGNvbnN0IHNwbGl0cyA9IGNvbnRlbnQuc3BsaXQoXCItLS1cIik7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICBzcGxpdHMuc2xpY2UoMCwgMikuam9pbihcIi0tLVwiKSArIFwiLS0tXCIsXHJcbiAgICAgIHNwbGl0cy5zbGljZSgyKS5qb2luKFwiLS0tXCIpLFxyXG4gICAgXTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBkcm9wSGFzaCA9ICh0YWc6IHN0cmluZykgPT5cclxuICB0YWcuc3RhcnRzV2l0aChcIiNcIikgPyB0YWcuc2xpY2UoMSkgOiB0YWc7XHJcblxyXG5leHBvcnQgY29uc3QgYWRkSGFzaCA9ICh0YWc6IHN0cmluZykgPT4gKHRhZy5zdGFydHNXaXRoKFwiI1wiKSA/IHRhZyA6IGAjJHt0YWd9YCk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWx0KG5vZGU6IHN0cmluZywgcGx1Z2luOiBCQ1BsdWdpbik6IHN0cmluZyB8IG51bGwge1xyXG4gIGNvbnN0IHsgYWx0TGlua0ZpZWxkcywgc2hvd0FsbEFsaWFzZXMgfSA9IHBsdWdpbi5zZXR0aW5ncztcclxuICBpZiAoYWx0TGlua0ZpZWxkcy5sZW5ndGgpIHtcclxuICAgIGNvbnN0IGZpbGUgPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaXJzdExpbmtwYXRoRGVzdChub2RlLCBcIlwiKTtcclxuICAgIGlmIChmaWxlKSB7XHJcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0RmlsZUNhY2hlKGZpbGUpO1xyXG4gICAgICBmb3IgKGNvbnN0IGFsdEZpZWxkIG9mIGFsdExpbmtGaWVsZHMpIHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IG1ldGFkYXRhPy5mcm9udG1hdHRlcj8uW2FsdEZpZWxkXTtcclxuXHJcbiAgICAgICAgY29uc3QgYXJyOiBzdHJpbmdbXSA9XHJcbiAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyBzcGxpdEFuZFRyaW0odmFsdWUpIDogdmFsdWU7XHJcbiAgICAgICAgaWYgKHZhbHVlKSByZXR1cm4gc2hvd0FsbEFsaWFzZXMgPyBhcnIuam9pbihcIiwgXCIpIDogYXJyWzBdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSBlbHNlIHJldHVybiBudWxsO1xyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2FpdEZvckNhY2hlKHBsdWdpbjogQkNQbHVnaW4pIHtcclxuICBpZiAoYXBwLnBsdWdpbnMuZW5hYmxlZFBsdWdpbnMuaGFzKFwiZGF0YXZpZXdcIikpIHtcclxuICAgIGxldCBiYXNlbmFtZTogc3RyaW5nO1xyXG4gICAgd2hpbGUgKCFiYXNlbmFtZSB8fCAhYXBwLnBsdWdpbnMucGx1Z2lucy5kYXRhdmlldy5hcGkucGFnZShiYXNlbmFtZSkpIHtcclxuICAgICAgYXdhaXQgd2FpdCgxMDApO1xyXG4gICAgICBiYXNlbmFtZSA9IGdldEN1cnJGaWxlKCk/LmJhc2VuYW1lO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBhd2FpdCB3YWl0Rm9yUmVzb2x2ZWRMaW5rcyhhcHApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGxpbmtDbGFzcyA9ICh0bzogc3RyaW5nLCByZWFsUSA9IHRydWUpID0+XHJcbiAgYGludGVybmFsLWxpbmsgQkMtTGluayAke2lzSW5WYXVsdCh0bykgPyBcIlwiIDogXCJpcy11bnJlc29sdmVkXCJ9ICR7cmVhbFEgPyBcIlwiIDogXCJCQy1JbXBsaWVkXCJcclxuICB9YDtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXREVkFwaSA9IChwbHVnaW46IEJDUGx1Z2luKSA9PlxyXG4gIGFwcC5wbHVnaW5zLnBsdWdpbnMuZGF0YXZpZXc/LmFwaTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc0luc2lkZVlhbWwoKTogYm9vbGVhbiB8IG51bGwge1xyXG4gIGNvbnN0IHsgd29ya3NwYWNlLCBtZXRhZGF0YUNhY2hlIH0gPSBhcHA7XHJcbiAgY29uc3QgeyBhY3RpdmVMZWFmIH0gPSB3b3Jrc3BhY2U7XHJcbiAgY29uc3Qge1xyXG4gICAgc3RhdGU6IHsgbW9kZSB9LFxyXG4gIH0gPSBhY3RpdmVMZWFmLmdldFZpZXdTdGF0ZSgpO1xyXG5cclxuICBpZiAobW9kZSAhPT0gXCJzb3VyY2VcIikgcmV0dXJuIG51bGw7XHJcblxyXG4gIGNvbnN0IHsgZWRpdG9yIH0gPSBhY3RpdmVMZWFmLnZpZXc7XHJcblxyXG4gIGNvbnN0IGZpbGUgPSBnZXRDdXJyRmlsZSgpO1xyXG4gIGlmICghZmlsZSkgcmV0dXJuIG51bGw7XHJcblxyXG4gIGNvbnN0IHsgZnJvbnRtYXR0ZXIgfSA9IG1ldGFkYXRhQ2FjaGUuZ2V0RmlsZUNhY2hlKGZpbGUpO1xyXG4gIGlmICghZnJvbnRtYXR0ZXIpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSBmcm9udG1hdHRlci5wb3NpdGlvbjtcclxuICBjb25zdCBjdXJyT2ZmID0gZWRpdG9yLnBvc1RvT2Zmc2V0KGVkaXRvci5nZXRDdXJzb3IoKSk7XHJcbiAgaWYgKGN1cnJPZmYgPj0gc3RhcnQub2Zmc2V0ICYmIGN1cnJPZmYgPD0gZW5kLm9mZnNldCkgcmV0dXJuIHRydWU7XHJcbiAgZWxzZSByZXR1cm4gZmFsc2U7XHJcbn1cclxuIiwgImltcG9ydCB7IHdhcm4gfSBmcm9tIFwibG9nbGV2ZWxcIjtcclxuaW1wb3J0IHsgZHJvcEhlYWRlck9yQWxpYXMsIHJlZ05GbGFncywgc3BsaXRMaW5rc1JlZ2V4IH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgdHlwZSB7IEJDU2V0dGluZ3MgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHN1bShhcnI6IG51bWJlcltdKTogbnVtYmVyIHtcclxuICByZXR1cm4gYXJyLnJlZHVjZSgoYSwgYikgPT4gYSArIGIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXNlKGFycjogbnVtYmVyW10pOiBudW1iZXJbXSB7XHJcbiAgY29uc3QgbWF4ID0gTWF0aC5tYXgoLi4uYXJyKTtcclxuICByZXR1cm4gYXJyLm1hcCgoaXRlbSkgPT4gaXRlbSAvIG1heCk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBpc1N1YnNldCA9IDxUPihhcnIxOiBUW10sIGFycjI6IFRbXSk6IGJvb2xlYW4gPT5cclxuICBhcnIxLmV2ZXJ5KCh2YWx1ZSkgPT4gYXJyMi5pbmNsdWRlcyh2YWx1ZSkpO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0QW5kRHJvcChzdHI6IHN0cmluZyk6IHN0cmluZ1tdIHtcclxuICByZXR1cm4gKFxyXG4gICAgc3RyXHJcbiAgICAgID8ubWF0Y2goc3BsaXRMaW5rc1JlZ2V4KVxyXG4gICAgICA/Lm1hcCgobGluaykgPT4gbGluay5tYXRjaChkcm9wSGVhZGVyT3JBbGlhcyk/LlsxXSkgPz8gW11cclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZHJvcFBhdGggPSAocGF0aDogc3RyaW5nKSA9PiBwYXRoLnJlcGxhY2UoL14uKlxcLy8sIFwiXCIpO1xyXG5leHBvcnQgY29uc3QgZHJvcERlbmRyb24gPSAocGF0aDogc3RyaW5nLCBzZXR0aW5nczogQkNTZXR0aW5ncykgPT5cclxuICBzZXR0aW5ncy50cmltRGVuZHJvbk5vdGVzXHJcbiAgICA/IHBhdGguc3BsaXQoc2V0dGluZ3MuZGVuZHJvbk5vdGVEZWxpbWl0ZXIpLmxhc3QoKVxyXG4gICAgOiBwYXRoO1xyXG5cclxuZXhwb3J0IGNvbnN0IGRyb3BQYXRoTkRlbmRyb24gPSAocGF0aDogc3RyaW5nLCBzZXR0aW5nczogQkNTZXR0aW5ncykgPT5cclxuICBkcm9wRGVuZHJvbihkcm9wUGF0aChwYXRoKSwgc2V0dGluZ3MpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGRyb3BGb2xkZXIgPSAocGF0aDogc3RyaW5nKSA9PlxyXG4gIHBhdGguc3BsaXQoXCIvXCIpLmxhc3QoKS5zcGxpdChcIi5cIikuc2xpY2UoMCwgLTEpLmpvaW4oXCIuXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IHNwbGl0QW5kVHJpbSA9IChmaWVsZHM6IHN0cmluZyk6IHN0cmluZ1tdID0+IHtcclxuICBpZiAoIWZpZWxkcyB8fCBmaWVsZHMgPT09IFwiXCIpIHJldHVybiBbXTtcclxuICBlbHNlIHJldHVybiBmaWVsZHMuc3BsaXQoXCIsXCIpLm1hcCgoc3RyKSA9PiBzdHIudHJpbSgpKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBQYWQgYW4gYXJyYXkgd2l0aCBhIGZpbGxlciB2YWx1ZSB0byBhIHNwZWNpZmllZCBsZW5ndGguXHJcbiAqIEBwYXJhbSB7VFtdfSBhcnIgLSBUaGUgYXJyYXkgdG8gcGFkLlxyXG4gKiBAcGFyYW0ge251bWJlcn0gZmluYWxMZW5ndGggLSBUaGUgZmluYWwgbGVuZ3RoIG9mIHRoZSBhcnJheVxyXG4gKiBAcGFyYW0ge3N0cmluZ30gW2ZpbGxlcj1cIlwiXSAtIFRoZSBmaWxsZXIgdG8gdXNlIGlmIHRoZSBhcnJheSBpcyB0b28gc2hvcnQuXHJcbiAqIEByZXR1cm5zIHsoVCB8IHN0cmluZylbXX0gVGhlIGFycmF5IHdpdGggdGhlIG5ldyB2YWx1ZXMuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcGFkQXJyYXk8VD4oXHJcbiAgYXJyOiBUW10sXHJcbiAgZmluYWxMZW5ndGg6IG51bWJlcixcclxuICBmaWxsZXI6IHN0cmluZyA9IFwiXCJcclxuKTogKFQgfCBzdHJpbmcpW10ge1xyXG4gIGNvbnN0IGNvcHk6IChUIHwgc3RyaW5nKVtdID0gWy4uLmFycl07XHJcbiAgY29uc3QgY3Vyckxlbmd0aCA9IGNvcHkubGVuZ3RoO1xyXG4gIGlmIChjdXJyTGVuZ3RoID4gZmluYWxMZW5ndGgpXHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDdXJyZW50IGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gZmluYWwgbGVuZ3RoXCIpO1xyXG4gIGVsc2UgaWYgKGN1cnJMZW5ndGggPT09IGZpbmFsTGVuZ3RoKSByZXR1cm4gY29weTtcclxuICBlbHNlIHtcclxuICAgIGZvciAobGV0IGkgPSBjdXJyTGVuZ3RoOyBpIDwgZmluYWxMZW5ndGg7IGkrKykgY29weS5wdXNoKGZpbGxlcik7XHJcbiAgICByZXR1cm4gY29weTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiB0cmFuc3Bvc2UoQSkgcmV0dXJucyB0aGUgdHJhbnNwb3NlIG9mIEEuXHJcbiAqIEBwYXJhbSB7VFtdW119IEEgLSBUaGUgbWF0cml4IHRvIHRyYW5zcG9zZS5cclxuICogQHJldHVybnMge1RbXVtdfSBBIDJEIGFycmF5IG9mIHRoZSB0cmFuc3Bvc2VkIG1hdHJpeC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3Bvc2U8VD4oQTogVFtdW10pOiBUW11bXSB7XHJcbiAgY29uc3QgY29scyA9IEFbMF0ubGVuZ3RoO1xyXG4gIGNvbnN0IEFUOiBUW11bXSA9IFtdO1xyXG5cclxuICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHM7IGorKykgQVQucHVzaChBLm1hcCgocm93KSA9PiByb3dbal0pKTtcclxuXHJcbiAgcmV0dXJuIEFUO1xyXG59XHJcblxyXG4vKipcclxuICogR2l2ZW4gYW4gYXJyYXkgb2Ygc3RyaW5ncywgcmV0dXJuIGFuIGFycmF5IG9mIG9iamVjdHMgdGhhdCByZXByZXNlbnQgdGhlIHJ1bnMgb2YgY29uc2VjdXRpdmUgc3RyaW5nc1xyXG4gKiBpbiB0aGUgYXJyYXkuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcnJcclxuICogQHJldHVybnMgQW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcclxuICpcclxuICogICBgdmFsdWVgOiB0aGUgdmFsdWUgb2YgdGhlIHJ1blxyXG4gKlxyXG4gKiAgIGBmaXJzdGA6IHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgcnVuXHJcbiAqXHJcbiAqICAgYGxhc3RgOiB0aGUgaW5kZXggb2YgdGhlIGxhc3QgZWxlbWVudCBpbiB0aGUgcnVuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcnVucyhcclxuICBhcnI6IHN0cmluZ1tdXHJcbik6IHsgdmFsdWU6IHN0cmluZzsgZmlyc3Q6IG51bWJlcjsgbGFzdDogbnVtYmVyIH1bXSB7XHJcbiAgY29uc3QgcnVuczogeyB2YWx1ZTogc3RyaW5nOyBmaXJzdDogbnVtYmVyOyBsYXN0OiBudW1iZXIgfVtdID0gW107XHJcbiAgbGV0IGkgPSAwO1xyXG4gIHdoaWxlIChpIDwgYXJyLmxlbmd0aCkge1xyXG4gICAgY29uc3QgY3VyclZhbHVlID0gYXJyW2ldO1xyXG4gICAgcnVucy5wdXNoKHsgdmFsdWU6IGN1cnJWYWx1ZSwgZmlyc3Q6IGksIGxhc3Q6IHVuZGVmaW5lZCB9KTtcclxuICAgIHdoaWxlIChjdXJyVmFsdWUgPT09IGFycltpXSkge1xyXG4gICAgICBpKys7XHJcbiAgICB9XHJcbiAgICBydW5zLmxhc3QoKS5sYXN0ID0gaSAtIDE7XHJcbiAgfVxyXG4gIHJldHVybiBydW5zO1xyXG59XHJcblxyXG4vLyBTT1VSQ0UgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvOTk2MDkwOC9wZXJtdXRhdGlvbnMtaW4tamF2YXNjcmlwdFxyXG4vKipcclxuICogR2l2ZW4gYSBwZXJtdXRhdGlvbiwgcmV0dXJuIGFsbCBwb3NzaWJsZSBwZXJtdXRhdGlvbnMgb2YgdGhhdCBwZXJtdXRhdGlvbi5cclxuICogQHBhcmFtIHBlcm11dGF0aW9uIC0gdGhlIGFycmF5IHRvIGJlIHBlcm11dGVkXHJcbiAqIEByZXR1cm5zIGBbIFsgMSwgMiwgMyBdLCBbIDEsIDMsIDIgXSwgWyAyLCAxLCAzIF0sIFsgMiwgMywgMSBdLCBbIDMsIDEsIDIgXSwgWyAzLCAyLCAxIF0gXWBcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBwZXJtdXRlKHBlcm11dGF0aW9uOiBhbnlbXSk6IGFueVtdW10ge1xyXG4gIGNvbnN0IGxlbmd0aCA9IHBlcm11dGF0aW9uLmxlbmd0aCxcclxuICAgIHJlc3VsdCA9IFtwZXJtdXRhdGlvbi5zbGljZSgpXSxcclxuICAgIGMgPSBuZXcgQXJyYXkobGVuZ3RoKS5maWxsKDApO1xyXG5cclxuICBsZXQgaSA9IDEsXHJcbiAgICBrOiBudW1iZXIsXHJcbiAgICBwOiBudW1iZXI7XHJcblxyXG4gIHdoaWxlIChpIDwgbGVuZ3RoKSB7XHJcbiAgICBpZiAoY1tpXSA8IGkpIHtcclxuICAgICAgayA9IGkgJSAyICYmIGNbaV07XHJcbiAgICAgIHAgPSBwZXJtdXRhdGlvbltpXTtcclxuICAgICAgcGVybXV0YXRpb25baV0gPSBwZXJtdXRhdGlvbltrXTtcclxuICAgICAgcGVybXV0YXRpb25ba10gPSBwO1xyXG4gICAgICArK2NbaV07XHJcbiAgICAgIGkgPSAxO1xyXG4gICAgICByZXN1bHQucHVzaChwZXJtdXRhdGlvbi5zbGljZSgpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNbaV0gPSAwO1xyXG4gICAgICArK2k7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCByYW5nZSA9IChuOiBudW1iZXIpID0+IFsuLi5BcnJheShuKS5rZXlzKCldO1xyXG5cclxuLyoqXHJcbiAqIFwiR2l2ZW4gdHdvIGFycmF5cywgcmV0dXJuIHRoZSBlbGVtZW50cyBpbiB0aGUgZmlyc3QgYXJyYXkgdGhhdCBhcmUgbm90IGluIHRoZSBzZWNvbmQgYXJyYXkuXCJcclxuICogQHBhcmFtIHtUW119IEEgLSB0aGUgYXJyYXkgb2YgaXRlbXMgdG8gYmUgZmlsdGVyZWRcclxuICogQHBhcmFtIHtUW119IEIgLSB0aGUgYXJyYXkgb2YgaXRlbXMgdGhhdCBhcmUgbm90IGluIEFcclxuICogQHJldHVybnMge1RbXX0gTm9uZVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGNvbXBsZW1lbnQgPSA8VD4oQTogVFtdLCBCOiBUW10pID0+XHJcbiAgQS5maWx0ZXIoKGEpID0+ICFCLmluY2x1ZGVzKGEpKTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzd2FwSXRlbXM8VD4oaTogbnVtYmVyLCBqOiBudW1iZXIsIGFycjogVFtdKSB7XHJcbiAgY29uc3QgbWF4ID0gYXJyLmxlbmd0aCAtIDE7XHJcbiAgaWYgKGkgPCAwIHx8IGkgPiBtYXggfHwgaiA8IDAgfHwgaiA+IG1heCkgcmV0dXJuIGFycjtcclxuICBjb25zdCB0bXAgPSBhcnJbaV07XHJcbiAgYXJyW2ldID0gYXJyW2pdO1xyXG4gIGFycltqXSA9IHRtcDtcclxuICByZXR1cm4gYXJyO1xyXG59XHJcblxyXG4vKipcclxuICogUmVtb3ZlIGR1cGxpY2F0ZXMgZnJvbSBhbiBhcnJheS5cclxuICogQHBhcmFtIHtUW119IGFyciAtIFRoZSBhcnJheSB0byBiZSBmaWx0ZXJlZC5cclxuICogQHJldHVybnMge1RbXX0gVGhlIGFycmF5IHdpdGggZHVwbGljYXRlcyByZW1vdmVkLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHJlbW92ZUR1cGxpY2F0ZXMgPSA8VD4oYXJyOiBUW10pID0+IFsuLi5uZXcgU2V0KGFycildO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHN0clRvUmVnZXgoaW5wdXQ6IHN0cmluZykge1xyXG4gIGNvbnN0IG1hdGNoID0gaW5wdXQubWF0Y2gocmVnTkZsYWdzKTtcclxuICBpZiAoIW1hdGNoKSByZXR1cm4gbnVsbDtcclxuICBjb25zdCBbLCBpbm5lclJlZ2V4LCBmbGFnc10gPSBtYXRjaDtcclxuICB0cnkge1xyXG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGlubmVyUmVnZXgsIGZsYWdzKTtcclxuICAgIHJldHVybiByZWdleDtcclxuICB9IGNhdGNoIChlKSB7XHJcbiAgICB3YXJuKGUpO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBTb3VyY2U6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM1NjE0OTMvaXMtdGhlcmUtYS1yZWdleHAtZXNjYXBlLWZ1bmN0aW9uLWluLWphdmFzY3JpcHRcclxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZVJlZ2V4KHN0cmluZykge1xyXG4gIHJldHVybiBzdHJpbmcucmVwbGFjZSgvWy1cXC9cXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCBcIlxcXFwkJlwiKTtcclxufVxyXG4iLCAiaW1wb3J0IHR5cGUgeyBNdWx0aUdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHsgYWRkRWRnZUlmTm90IH0gZnJvbSBcIi4vVXRpbHMvZ3JhcGhVdGlsc1wiO1xyXG5pbXBvcnQgeyBCQ19JX0FVTlQsIEJDX0lfQ09VU0lOLCBCQ19JX1BBUkVOVCwgQkNfSV9TSUJMSU5HXzEsIEJDX0lfU0lCTElOR18yIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB0eXBlIHsgQkNTZXR0aW5ncyB9IGZyb20gXCIuL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHsgZmFsbGJhY2tGaWVsZCwgZ2V0RmllbGRJbmZvIH0gZnJvbSBcIi4vVXRpbHMvSGllclV0aWxzXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkU2libGluZ3NGcm9tU2FtZVBhcmVudChnOiBNdWx0aUdyYXBoLCBzZXR0aW5nczogQkNTZXR0aW5ncykge1xyXG4gICAgY29uc3QgeyB1c2VySGllcnMsIHRyZWF0Q3Vyck5vZGVBc0ltcGxpZWRTaWJsaW5nIH0gPSBzZXR0aW5ncztcclxuICAgIGcuZm9yRWFjaE5vZGUoKGN1cnJOLCBhKSA9PiB7XHJcbiAgICAgICAgLy8gRmluZCBwYXJlbnRzIG9mIGN1cnJlbnQgbm9kZVxyXG4gICAgICAgIGcuZm9yRWFjaE91dEVkZ2UoY3Vyck4sIChrLCBjdXJyTkF0dHIsIHMsIHBhcmVudE5vZGUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGN1cnJOQXR0ci5kaXIgIT09IFwidXBcIikgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgeyBmaWVsZERpciwgZmllbGRIaWVyIH0gPSBnZXRGaWVsZEluZm8odXNlckhpZXJzLCBjdXJyTkF0dHIuZmllbGQpO1xyXG4gICAgICAgICAgICBjb25zdCBmaWVsZCA9XHJcbiAgICAgICAgICAgICAgICBmaWVsZEhpZXIuc2FtZVswXSA/PyBmYWxsYmFja0ZpZWxkKGN1cnJOQXR0ci5maWVsZCwgZmllbGREaXIpO1xyXG5cclxuICAgICAgICAgICAgLy8gRmluZCB0aGUgY2hpbGRyZW4gb2YgdGhvc2UgcGFyZW50c1xyXG4gICAgICAgICAgICBnLmZvckVhY2hPdXRFZGdlKHBhcmVudE5vZGUsIChrLCBhLCBzLCBpbXBsaWVkU2libGluZykgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gU2tpcCB0aGUgY3VycmVudCBub2RlIGlmIHRoZSBzZXR0aW5ncyBzYXkgdG9cclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICBhLmRpciAhPT0gXCJkb3duXCIgfHxcclxuICAgICAgICAgICAgICAgICAgICAoIXRyZWF0Q3Vyck5vZGVBc0ltcGxpZWRTaWJsaW5nICYmIGltcGxpZWRTaWJsaW5nID09PSBjdXJyTilcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICAgICAgYWRkRWRnZUlmTm90KGcsIGN1cnJOLCBpbXBsaWVkU2libGluZywge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpcjogXCJzYW1lXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgaW1wbGllZDogQkNfSV9TSUJMSU5HXzEsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZFNpYmxpbmdzUGFyZW50SXNQYXJlbnQoZzogTXVsdGlHcmFwaCkge1xyXG4gICAgZy5mb3JFYWNoTm9kZSgoY3Vyck4sIGEpID0+IHtcclxuICAgICAgICAvLyBGaW5kIHNpYmxpbmdzIG9mIGN1cnJlbnQgbm9kZVxyXG4gICAgICAgIGcuZm9yRWFjaE91dEVkZ2UoY3Vyck4sIChrLCBjdXJyTkF0dHIsIHMsIHNpYmxpbmcpID0+IHtcclxuICAgICAgICAgICAgaWYgKGN1cnJOQXR0ci5kaXIgIT09IFwic2FtZVwiKSByZXR1cm47XHJcbiAgICAgICAgICAgIC8vIEZpbmQgdGhlIHBhcmVudHMgb2YgdGhvc2Ugc2libGluZ3NcclxuICAgICAgICAgICAgZy5mb3JFYWNoT3V0RWRnZShzaWJsaW5nLCAoaywgYSwgcywgcGFyZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IGRpciwgZmllbGQgfSA9IGE7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGlyICE9PSBcInVwXCIpIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgICAgICBhZGRFZGdlSWZOb3QoZywgY3Vyck4sIHBhcmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpcjogXCJ1cFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgIGltcGxpZWQ6IEJDX0lfUEFSRU5ULFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbi8vIFRyYW5zaXRpdmUgY2xvc3VyZSBvZiBzaWJsaW5nc1xyXG5leHBvcnQgZnVuY3Rpb24gYWRkU2libGluZ3NGcm9tU2libGluZ3MoZzogTXVsdGlHcmFwaCkgeyB9XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkQXVudHNVbmNsZXMoZzogTXVsdGlHcmFwaCkge1xyXG4gICAgZy5mb3JFYWNoTm9kZSgoY3Vyck4sIGEpID0+IHtcclxuICAgICAgICAvLyBGaW5kIHBhcmVudHMgb2YgY3VycmVudCBub2RlXHJcbiAgICAgICAgZy5mb3JFYWNoT3V0RWRnZShjdXJyTiwgKGssIGN1cnJFQXR0ciwgcywgcGFyZW50Tm9kZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY3VyckVBdHRyLmRpciAhPT0gXCJ1cFwiKSByZXR1cm47XHJcbiAgICAgICAgICAgIC8vIEZpbmQgdGhlIHNpYmxpbmdzIG9mIHRob3NlIHBhcmVudHNcclxuICAgICAgICAgICAgZy5mb3JFYWNoT3V0RWRnZShwYXJlbnROb2RlLCAoaywgYSwgcywgdW5jbGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChhLmRpciAhPT0gXCJzYW1lXCIpIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgICAgICBhZGRFZGdlSWZOb3QoZywgY3Vyck4sIHVuY2xlLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlyOiBcInVwXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBzdGFydGluZyBub2RlJ3MgcGFyZW50IGZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGN1cnJFQXR0ci5maWVsZCxcclxuICAgICAgICAgICAgICAgICAgICBpbXBsaWVkOiBCQ19JX0FVTlQsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gYWRkQ291c2lucyhnOiBNdWx0aUdyYXBoKSB7XHJcbiAgICBnLmZvckVhY2hOb2RlKChjdXJyTiwgYSkgPT4ge1xyXG4gICAgICAgIC8vIEZpbmQgcGFyZW50cyBvZiBjdXJyZW50IG5vZGVcclxuICAgICAgICBnLmZvckVhY2hPdXRFZGdlKGN1cnJOLCAoaywgY3VyckVBdHRyLCBzLCBwYXJlbnROb2RlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjdXJyRUF0dHIuZGlyICE9PSBcInVwXCIpIHJldHVybjtcclxuICAgICAgICAgICAgLy8gRmluZCB0aGUgc2libGluZ3Mgb2YgdGhvc2UgcGFyZW50c1xyXG4gICAgICAgICAgICBnLmZvckVhY2hPdXRFZGdlKHBhcmVudE5vZGUsIChrLCBwYXJlbnRTaWJsaW5nQXR0ciwgcywgdW5jbGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTaWJsaW5nQXR0ci5kaXIgIT09IFwic2FtZVwiKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgICAgICAgZy5mb3JFYWNoT3V0RWRnZSh1bmNsZSwgKGssIGEsIHMsIGNvdXNpbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChhLmRpciAhPT0gXCJkb3duXCIgfHwgY3Vyck4gPT09IGNvdXNpbikgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBhZGRFZGdlSWZOb3QoZywgY3Vyck4sIGNvdXNpbiwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXI6IFwic2FtZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogcGFyZW50U2libGluZ0F0dHIuZmllbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltcGxpZWQ6IEJDX0lfQ09VU0lOLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbi8vIFNpcyAtLT4gTWUgPC0tIEJyb1xyXG4vLyBJbXBsaWVzOiBTaXMgPC0tPiBCcm9cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZFN0cnVjdHVyYWxFcXVpdmFsZW5jZVNpYmxpbmdzKGc6IE11bHRpR3JhcGgpIHtcclxuICAgIGcuZm9yRWFjaE5vZGUoKGN1cnJOLCBhKSA9PiB7XHJcbiAgICAgICAgZy5mb3JFYWNoSW5FZGdlKGN1cnJOLCAoaywgYVNpcywgc2lzLCBfKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChhU2lzLmRpciAhPT0gXCJzYW1lXCIpIHJldHVybjtcclxuICAgICAgICAgICAgZy5mb3JFYWNoSW5FZGdlKGN1cnJOLCAoaywgYUJybywgYnJvLCBfKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYUJyby5kaXIgIT09IFwic2FtZVwiIHx8IHNpcyA9PT0gYnJvKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBpZiAoYUJyby5maWVsZCA9PT0gYVNpcy5maWVsZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGFkZEVkZ2VJZk5vdChnLCBzaXMsIGJybywge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXI6IFwic2FtZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogYUJyby5maWVsZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGllZDogQkNfSV9TSUJMSU5HXzIsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB0eXBlIHsgTXVsdGlHcmFwaCB9IGZyb20gXCJncmFwaG9sb2d5XCI7XHJcbmltcG9ydCB7IGRlYnVnIH0gZnJvbSBcImxvZ2xldmVsXCI7XHJcbmltcG9ydCB7IG5vcm1hbGl6ZVBhdGggfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHsgZHJvcFdpa2lsaW5rcyB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcbmltcG9ydCB0eXBlIHsgRGlyZWN0aW9ucyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IGFkZEVkZ2VJZk5vdCwgYWRkTm9kZXNJZk5vdCB9IGZyb20gXCIuLi9VdGlscy9ncmFwaFV0aWxzXCI7XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q1NWUm93cyhwbHVnaW46IEJDUGx1Z2luKSB7XHJcbiAgY29uc3QgeyBDU1ZQYXRocyB9ID0gcGx1Z2luLnNldHRpbmdzO1xyXG4gIGNvbnN0IENTVlJvd3M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1bXSA9IFtdO1xyXG4gIGlmIChDU1ZQYXRocyA9PT0gXCJcIikgcmV0dXJuIENTVlJvd3M7XHJcblxyXG4gIGNvbnN0IGZ1bGxQYXRoID0gbm9ybWFsaXplUGF0aChDU1ZQYXRocyk7XHJcblxyXG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5yZWFkKGZ1bGxQYXRoKTtcclxuICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoXCJcXG5cIik7XHJcblxyXG4gIGNvbnN0IGhlYWRlcnMgPSBsaW5lc1swXS5zcGxpdChcIixcIikubWFwKChoZWFkKSA9PiBoZWFkLnRyaW0oKSk7XHJcbiAgbGluZXMuc2xpY2UoMSkuZm9yRWFjaCgocm93KSA9PiB7XHJcbiAgICBjb25zdCByb3dPYmogPSB7fTtcclxuICAgIHJvd1xyXG4gICAgICAuc3BsaXQoXCIsXCIpXHJcbiAgICAgIC5tYXAoKGhlYWQpID0+IGRyb3BXaWtpbGlua3MoaGVhZC50cmltKCkpKVxyXG4gICAgICAuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIHJvd09ialtoZWFkZXJzW2ldXSA9IGl0ZW07XHJcbiAgICAgIH0pO1xyXG4gICAgZGVidWcoeyByb3dPYmogfSk7XHJcbiAgICBDU1ZSb3dzLnB1c2gocm93T2JqKTtcclxuICB9KTtcclxuICByZXR1cm4gQ1NWUm93cztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZENTVkNydW1icyhcclxuICBnOiBNdWx0aUdyYXBoLFxyXG4gIENTVlJvd3M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1bXSxcclxuICBkaXI6IERpcmVjdGlvbnMsXHJcbiAgZmllbGQ6IHN0cmluZ1xyXG4pIHtcclxuICBDU1ZSb3dzLmZvckVhY2goKHJvdykgPT4ge1xyXG4gICAgYWRkTm9kZXNJZk5vdChnLCBbcm93LmZpbGVdKTtcclxuICAgIGlmIChmaWVsZCA9PT0gXCJcIiB8fCAhcm93W2ZpZWxkXSkgcmV0dXJuO1xyXG5cclxuICAgIGFkZE5vZGVzSWZOb3QoZywgW3Jvd1tmaWVsZF1dKTtcclxuICAgIGFkZEVkZ2VJZk5vdChnLCByb3cuZmlsZSwgcm93W2ZpZWxkXSwgeyBkaXIsIGZpZWxkIH0pO1xyXG4gIH0pO1xyXG59XHJcbiIsICJpbXBvcnQgdHlwZSB7IE11bHRpR3JhcGggfSBmcm9tIFwiZ3JhcGhvbG9neVwiO1xyXG5pbXBvcnQgeyB3YXJuIH0gZnJvbSBcImxvZ2xldmVsXCI7XHJcbmltcG9ydCB7IE5vdGljZSB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgeyBCQ19EVl9OT1RFLCBCQ19EVl9OT1RFX0ZJRUxELCBCQ19JR05PUkUsIERBVEFWSUVXX01JU1NJTkcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB0eXBlIHsgZHZGcm9udG1hdHRlckNhY2hlIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHtcclxuICBnZXRTb3VyY2VPcmRlcixcclxuICBnZXRUYXJnZXRPcmRlcixcclxuICBwb3B1bGF0ZU1haW4sXHJcbn0gZnJvbSBcIi4uL1V0aWxzL2dyYXBoVXRpbHNcIjtcclxuaW1wb3J0IHsgZ2V0RmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXREVkFwaSwgZ2V0RFZCYXNlbmFtZSB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkRGF0YXZpZXdOb3Rlc1RvR3JhcGgoXHJcbiAgcGx1Z2luOiBCQ1BsdWdpbixcclxuICBlbGlnYWJsZUFsdHM6IGR2RnJvbnRtYXR0ZXJDYWNoZVtdLFxyXG4gIGZyb250bXM6IGR2RnJvbnRtYXR0ZXJDYWNoZVtdLFxyXG4gIG1haW5HOiBNdWx0aUdyYXBoXHJcbikge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCB7IHVzZXJIaWVycywgZGF0YXZpZXdOb3RlRmllbGQgfSA9IHNldHRpbmdzO1xyXG4gIGNvbnN0IGR2ID0gZ2V0RFZBcGkocGx1Z2luKTtcclxuICBpZiAoIWR2ICYmIGVsaWdhYmxlQWx0cy5sZW5ndGgpIHtcclxuICAgIG5ldyBOb3RpY2UoREFUQVZJRVdfTUlTU0lORyk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBjb25zdCBmaWVsZHMgPSBnZXRGaWVsZHModXNlckhpZXJzKTtcclxuXHJcbiAgZWxpZ2FibGVBbHRzLmZvckVhY2goKGFsdEZpbGUpID0+IHtcclxuICAgIGNvbnN0IGJhc2VuYW1lID0gZ2V0RFZCYXNlbmFtZShhbHRGaWxlLmZpbGUpO1xyXG5cclxuICAgIGxldCBxdWVyeSA9IGFsdEZpbGVbQkNfRFZfTk9URV0gYXMgKHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pO1xyXG4gICAgaWYgKHF1ZXJ5Lmhhc093blByb3BlcnR5KCdwYXRoJykpIHtcclxuICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgIHF1ZXJ5ID0gYFtbJHtxdWVyeS5wYXRofV1dYDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgbGV0IGZpZWxkID1cclxuICAgICAgKGFsdEZpbGVbQkNfRFZfTk9URV9GSUVMRF0gYXMgc3RyaW5nKSA/PyAoZGF0YXZpZXdOb3RlRmllbGQgfHwgZmllbGRzWzBdKTtcclxuXHJcbiAgICBsZXQgdGFyZ2V0czogZHZGcm9udG1hdHRlckNhY2hlW10gPSBbXTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRhcmdldHMgPSBkdi5wYWdlcyg8c3RyaW5nPnF1ZXJ5KS52YWx1ZXM7XHJcbiAgICB9IGNhdGNoIChlcikge1xyXG4gICAgICBuZXcgTm90aWNlKGAke3F1ZXJ5fSBpcyBub3QgYSB2YWxpZCBEYXRhdmlldyBmcm9tLXF1ZXJ5YCk7XHJcbiAgICAgIHdhcm4oZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIHRhcmdldHMpIHtcclxuICAgICAgaWYgKHRhcmdldFtCQ19JR05PUkVdKSBjb250aW51ZTtcclxuICAgICAgY29uc3QgdGFyZ2V0Qk4gPSBnZXREVkJhc2VuYW1lKHRhcmdldC5maWxlKTtcclxuICAgICAgY29uc3Qgc291cmNlT3JkZXIgPSBnZXRTb3VyY2VPcmRlcihhbHRGaWxlKTtcclxuICAgICAgY29uc3QgdGFyZ2V0T3JkZXIgPSBnZXRUYXJnZXRPcmRlcihmcm9udG1zLCB0YXJnZXRCTik7XHJcblxyXG4gICAgICBwb3B1bGF0ZU1haW4oXHJcbiAgICAgICAgc2V0dGluZ3MsXHJcbiAgICAgICAgbWFpbkcsXHJcbiAgICAgICAgYmFzZW5hbWUsXHJcbiAgICAgICAgZmllbGQsXHJcbiAgICAgICAgdGFyZ2V0Qk4sXHJcbiAgICAgICAgc291cmNlT3JkZXIsXHJcbiAgICAgICAgdGFyZ2V0T3JkZXIsXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcbiIsICJpbXBvcnQgdHlwZSB7IE11bHRpR3JhcGggfSBmcm9tIFwiZ3JhcGhvbG9neVwiO1xyXG5pbXBvcnQgdHlwZSB7IGR2RnJvbnRtYXR0ZXJDYWNoZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IHBvcHVsYXRlTWFpbiB9IGZyb20gXCIuLi9VdGlscy9ncmFwaFV0aWxzXCI7XHJcbmltcG9ydCB7IGdldERWQmFzZW5hbWUgfSBmcm9tIFwiLi4vVXRpbHMvT2JzaWRpYW5VdGlsc1wiO1xyXG5pbXBvcnQgKiBhcyBsdXhvbiBmcm9tIFwibHV4b25cIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGREYXRlTm90ZXNUb0dyYXBoKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgZnJvbnRtczogZHZGcm9udG1hdHRlckNhY2hlW10sXHJcbiAgbWFpbkc6IE11bHRpR3JhcGhcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHtcclxuICAgIGFkZERhdGVOb3RlcyxcclxuICAgIGRhdGVOb3RlQWRkTW9udGgsXHJcbiAgICBkYXRlTm90ZUFkZFllYXIsXHJcbiAgICBkYXRlTm90ZUZvcm1hdCxcclxuICAgIGRhdGVOb3RlRmllbGQsXHJcbiAgfSA9IHNldHRpbmdzO1xyXG4gIGlmICghYWRkRGF0ZU5vdGVzKSByZXR1cm47XHJcblxyXG4gIGNvbnN0IHsgcmVnZXggfSA9IGx1eG9uLkRhdGVUaW1lLmZyb21Gb3JtYXRFeHBsYWluKFwiXCIsIGRhdGVOb3RlRm9ybWF0KTtcclxuICBmcm9udG1zLmZvckVhY2goKHBhZ2UpID0+IHtcclxuICAgIGNvbnN0IHsgZmlsZSB9ID0gcGFnZTtcclxuICAgIGNvbnN0IHsgZGF5IH0gPSBmaWxlO1xyXG4gICAgaWYgKCFkYXkgfHwgIXJlZ2V4LnRlc3QoZ2V0RFZCYXNlbmFtZShmaWxlKSkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB0b2RheSA9IGdldERWQmFzZW5hbWUoZmlsZSk7XHJcbiAgICBjb25zdCB0b21vcnJvdyA9IGRheS5wbHVzKHsgZGF5czogMSB9KTtcclxuICAgIGNvbnN0IHRvbVN0ciA9IHRvbW9ycm93LnRvRm9ybWF0KGRhdGVOb3RlRm9ybWF0KTtcclxuXHJcbiAgICBwb3B1bGF0ZU1haW4oXHJcbiAgICAgIHNldHRpbmdzLFxyXG4gICAgICBtYWluRyxcclxuICAgICAgdG9kYXksXHJcbiAgICAgIGRhdGVOb3RlRmllbGQsXHJcbiAgICAgIHRvbVN0cixcclxuICAgICAgOTk5OSxcclxuICAgICAgOTk5OSxcclxuICAgICAgdHJ1ZVxyXG4gICAgKTtcclxuICB9KTtcclxufVxyXG4iLCAiaW1wb3J0IHR5cGUgeyBNdWx0aUdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHsgQkNfSUdOT1JFLCBCQ19JR05PUkVfREVORFJPTiB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHR5cGUgeyBkdkZyb250bWF0dGVyQ2FjaGUgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG5pbXBvcnQge1xyXG4gIGdldFNvdXJjZU9yZGVyLFxyXG4gIGdldFRhcmdldE9yZGVyLFxyXG4gIHBvcHVsYXRlTWFpbixcclxufSBmcm9tIFwiLi4vVXRpbHMvZ3JhcGhVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXREVkJhc2VuYW1lIH0gZnJvbSBcIi4uL1V0aWxzL09ic2lkaWFuVXRpbHNcIjtcclxuXHJcbmNvbnN0IGdldERlbmRyb25QYXJlbnQgPSAoZGVuZHJvbjogc3RyaW5nLCBzcGxpdHRlcjogc3RyaW5nKSA9PlxyXG4gIGRlbmRyb24uc3BsaXQoc3BsaXR0ZXIpLnNsaWNlKDAsIC0xKS5qb2luKHNwbGl0dGVyKTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGREZW5kcm9uTm90ZXNUb0dyYXBoKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgZnJvbnRtczogZHZGcm9udG1hdHRlckNhY2hlW10sXHJcbiAgbWFpbkc6IE11bHRpR3JhcGhcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgYWRkRGVuZHJvbk5vdGVzLCBkZW5kcm9uTm90ZURlbGltaXRlciwgZGVuZHJvbk5vdGVGaWVsZCB9ID0gc2V0dGluZ3M7XHJcbiAgaWYgKCFhZGREZW5kcm9uTm90ZXMpIHJldHVybjtcclxuXHJcbiAgZm9yIChjb25zdCBmcm9udG0gb2YgZnJvbnRtcykge1xyXG4gICAgaWYgKGZyb250bVtCQ19JR05PUkVfREVORFJPTl0gfHwgZnJvbnRtW0JDX0lHTk9SRV0pIGNvbnRpbnVlO1xyXG5cclxuICAgIGxldCBjdXJyID0gZ2V0RFZCYXNlbmFtZShmcm9udG0uZmlsZSk7XHJcbiAgICBsZXQgcGFyZW50ID0gZ2V0RGVuZHJvblBhcmVudChjdXJyLCBkZW5kcm9uTm90ZURlbGltaXRlcik7XHJcblxyXG4gICAgd2hpbGUgKHBhcmVudCAhPT0gXCJcIikge1xyXG4gICAgICBjb25zdCBwYXJlbnRGaWxlID0gZnJvbnRtcy5maW5kKFxyXG4gICAgICAgIChmbSkgPT4gZ2V0RFZCYXNlbmFtZShmbS5maWxlKSA9PT0gcGFyZW50XHJcbiAgICAgICk7XHJcblxyXG4gICAgICAvLyAhcGFyZW50RmlsZSBpbXBsaWVzIGEgXCJzdHViXCJcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBpZiAoIXBhcmVudEZpbGUgfHwgcGFyZW50RmlsZVtCQ19JR05PUkVfREVORFJPTl0gIT09IHRydWUpIHtcclxuICAgICAgICBwb3B1bGF0ZU1haW4oXHJcbiAgICAgICAgICBzZXR0aW5ncyxcclxuICAgICAgICAgIG1haW5HLFxyXG4gICAgICAgICAgY3VycixcclxuICAgICAgICAgIGRlbmRyb25Ob3RlRmllbGQsXHJcbiAgICAgICAgICBwYXJlbnQsXHJcbiAgICAgICAgICA5OTk5LFxyXG4gICAgICAgICAgOTk5OSxcclxuICAgICAgICAgIHRydWVcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGN1cnIgPSBwYXJlbnQ7XHJcbiAgICAgIHBhcmVudCA9IGdldERlbmRyb25QYXJlbnQocGFyZW50LCBkZW5kcm9uTm90ZURlbGltaXRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyBleHBvcnQgZnVuY3Rpb24gYWRkRGVuZHJvbk5vdGVzVG9HcmFwaChcclxuLy8gICBwbHVnaW46IEJDUGx1Z2luLFxyXG4vLyAgIGZyb250bXM6IGR2RnJvbnRtYXR0ZXJDYWNoZVtdLFxyXG4vLyAgIG1haW5HOiBNdWx0aUdyYXBoXHJcbi8vICkge1xyXG4vLyAgIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuLy8gICBjb25zdCB7IGFkZERlbmRyb25Ob3RlcywgZGVuZHJvbk5vdGVEZWxpbWl0ZXIsIGRlbmRyb25Ob3RlRmllbGQgfSA9IHNldHRpbmdzO1xyXG4vLyAgIGlmICghYWRkRGVuZHJvbk5vdGVzKSByZXR1cm47XHJcblxyXG4vLyAgIGZvciAoY29uc3QgZnJvbnRtIG9mIGZyb250bXMpIHtcclxuLy8gICAgIGlmIChmcm9udG1bQkNfSUdOT1JFX0RFTkRST05dKSBjb250aW51ZTtcclxuXHJcbi8vICAgICBjb25zdCBiYXNlbmFtZSA9IGdldERWQmFzZW5hbWUoZnJvbnRtLmZpbGUpO1xyXG5cclxuLy8gICAgIGNvbnN0IHNwbGl0cyA9IGJhc2VuYW1lLnNwbGl0KGRlbmRyb25Ob3RlRGVsaW1pdGVyKTtcclxuLy8gICAgIGlmIChzcGxpdHMubGVuZ3RoIDw9IDEpIGNvbnRpbnVlO1xyXG5cclxuLy8gICAgIGNvbnN0IG5leHRTbGljZSA9IHNwbGl0cy5zbGljZSgwLCAtMSkuam9pbihkZW5kcm9uTm90ZURlbGltaXRlcik7XHJcbi8vICAgICBpZiAoIW5leHRTbGljZSkgY29udGludWU7XHJcbi8vICAgICBjb25zdCBuZXh0U2xpY2VGaWxlID0gZnJvbnRtcy5maW5kKFxyXG4vLyAgICAgICAoZm0pID0+IGdldERWQmFzZW5hbWUoZm0uZmlsZSkgPT09IG5leHRTbGljZVxyXG4vLyAgICAgKTtcclxuXHJcbi8vICAgICBpZiAoIW5leHRTbGljZUZpbGUgfHwgbmV4dFNsaWNlRmlsZVtCQ19JR05PUkVfREVORFJPTl0pIGNvbnRpbnVlO1xyXG5cclxuLy8gICAgIGNvbnN0IHNvdXJjZU9yZGVyID0gZ2V0U291cmNlT3JkZXIoZnJvbnRtKTtcclxuLy8gICAgIGNvbnN0IHRhcmdldE9yZGVyID0gZ2V0VGFyZ2V0T3JkZXIoZnJvbnRtcywgbmV4dFNsaWNlKTtcclxuXHJcbi8vICAgICBwb3B1bGF0ZU1haW4oXHJcbi8vICAgICAgIHNldHRpbmdzLFxyXG4vLyAgICAgICBtYWluRyxcclxuLy8gICAgICAgYmFzZW5hbWUsXHJcbi8vICAgICAgIGRlbmRyb25Ob3RlRmllbGQsXHJcbi8vICAgICAgIG5leHRTbGljZSxcclxuLy8gICAgICAgc291cmNlT3JkZXIsXHJcbi8vICAgICAgIHRhcmdldE9yZGVyLFxyXG4vLyAgICAgICB0cnVlXHJcbi8vICAgICApO1xyXG4vLyAgIH1cclxuLy8gfVxyXG4iLCAiaW1wb3J0IHR5cGUgeyBNdWx0aUdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHsgVEZpbGUsIFRGb2xkZXIgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHtcclxuICBCQ19GT0xERVJfTk9URSxcclxuICBCQ19GT0xERVJfTk9URV9SRUNVUlNJVkUsXHJcbiAgQkNfRk9MREVSX05PVEVfU1VCRk9MREVSUyxcclxuICBCQ19JR05PUkUsXHJcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgdHlwZSB7IGR2RnJvbnRtYXR0ZXJDYWNoZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7XHJcbiAgZ2V0U291cmNlT3JkZXIsXHJcbiAgZ2V0VGFyZ2V0T3JkZXIsXHJcbiAgcG9wdWxhdGVNYWluLFxyXG59IGZyb20gXCIuLi9VdGlscy9ncmFwaFV0aWxzXCI7XHJcbmltcG9ydCB7IGdldEZpZWxkcyB9IGZyb20gXCIuLi9VdGlscy9IaWVyVXRpbHNcIjtcclxuaW1wb3J0IHsgZ2V0RFZCYXNlbmFtZSwgZ2V0Rm9sZGVyTmFtZSB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG5jb25zdCBnZXRTdWJzRnJvbUZvbGRlciA9IChmb2xkZXI6IFRGb2xkZXIpID0+IHtcclxuICBjb25zdCBvdGhlck5vdGVzOiBURmlsZVtdID0gW10sXHJcbiAgICBzdWJGb2xkZXJzOiBURm9sZGVyW10gPSBbXTtcclxuICBmb2xkZXIuY2hpbGRyZW4uZm9yRWFjaCgodEFic3RyYWN0KSA9PiB7XHJcbiAgICBpZiAodEFic3RyYWN0IGluc3RhbmNlb2YgVEZpbGUpIG90aGVyTm90ZXMucHVzaCh0QWJzdHJhY3QpO1xyXG4gICAgZWxzZSBzdWJGb2xkZXJzLnB1c2godEFic3RyYWN0IGFzIFRGb2xkZXIpO1xyXG4gIH0pO1xyXG4gIHJldHVybiB7IG90aGVyTm90ZXMsIHN1YkZvbGRlcnMgfTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRGb2xkZXJOb3Rlc1RvR3JhcGgoXHJcbiAgcGx1Z2luOiBCQ1BsdWdpbixcclxuICBmb2xkZXJOb3RlczogZHZGcm9udG1hdHRlckNhY2hlW10sXHJcbiAgZnJvbnRtczogZHZGcm9udG1hdHRlckNhY2hlW10sXHJcbiAgbWFpbkc6IE11bHRpR3JhcGhcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgdXNlckhpZXJzIH0gPSBzZXR0aW5ncztcclxuICBjb25zdCBmaWVsZHMgPSBnZXRGaWVsZHModXNlckhpZXJzKTtcclxuXHJcbiAgZm9sZGVyTm90ZXMuZm9yRWFjaCgoYWx0RmlsZSkgPT4ge1xyXG4gICAgY29uc3QgeyBmaWxlIH0gPSBhbHRGaWxlO1xyXG4gICAgY29uc3QgYmFzZW5hbWUgPSBnZXREVkJhc2VuYW1lKGZpbGUpO1xyXG4gICAgY29uc3QgdG9wRm9sZGVyTmFtZSA9IGdldEZvbGRlck5hbWUoZmlsZSk7XHJcbiAgICBjb25zdCB0b3BGb2xkZXIgPSBhcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKHRvcEZvbGRlck5hbWUpIGFzIFRGb2xkZXI7XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0cyA9IGZyb250bXNcclxuICAgICAgLm1hcCgoZmYpID0+IGZmLmZpbGUpXHJcbiAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgKG90aGVyKSA9PlxyXG4gICAgICAgICAgZ2V0Rm9sZGVyTmFtZShvdGhlcikgPT09IHRvcEZvbGRlck5hbWUgJiYgb3RoZXIucGF0aCAhPT0gZmlsZS5wYXRoICYmICFvdGhlcltCQ19JR05PUkVdXHJcbiAgICAgIClcclxuICAgICAgLm1hcChnZXREVkJhc2VuYW1lKTtcclxuXHJcbiAgICBjb25zdCBmaWVsZCA9IGFsdEZpbGVbQkNfRk9MREVSX05PVEVdIGFzIHN0cmluZztcclxuICAgIGlmICh0eXBlb2YgZmllbGQgIT09IFwic3RyaW5nXCIgfHwgIWZpZWxkcy5pbmNsdWRlcyhmaWVsZCkpIHJldHVybjtcclxuXHJcbiAgICB0YXJnZXRzLmZvckVhY2goKHRhcmdldCkgPT4ge1xyXG4gICAgICAvLyBUaGlzIGlzIGdldHRpbmcgdGhlIG9yZGVyIG9mIHRoZSBmb2xkZXIgbm90ZSwgbm90IHRoZSBzb3VyY2UgcG9pbnRpbmcgdXAgdG8gaXRcclxuICAgICAgY29uc3Qgc291cmNlT3JkZXIgPSBnZXRTb3VyY2VPcmRlcihhbHRGaWxlKTtcclxuICAgICAgY29uc3QgdGFyZ2V0T3JkZXIgPSBnZXRUYXJnZXRPcmRlcihmcm9udG1zLCBiYXNlbmFtZSk7XHJcbiAgICAgIHBvcHVsYXRlTWFpbihcclxuICAgICAgICBzZXR0aW5ncyxcclxuICAgICAgICBtYWluRyxcclxuICAgICAgICBiYXNlbmFtZSxcclxuICAgICAgICBmaWVsZCxcclxuICAgICAgICB0YXJnZXQsXHJcbiAgICAgICAgc291cmNlT3JkZXIsXHJcbiAgICAgICAgdGFyZ2V0T3JkZXIsXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGFsdEZpbGVbQkNfRk9MREVSX05PVEVfU1VCRk9MREVSU10pIHtcclxuICAgICAgY29uc3Qgc3ViZm9sZGVyRmllbGQgPSBhbHRGaWxlW0JDX0ZPTERFUl9OT1RFX1NVQkZPTERFUlNdIGFzIHN0cmluZztcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHR5cGVvZiBzdWJmb2xkZXJGaWVsZCAhPT0gXCJzdHJpbmdcIiB8fFxyXG4gICAgICAgICFmaWVsZHMuaW5jbHVkZXMoc3ViZm9sZGVyRmllbGQpXHJcbiAgICAgIClcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCB7IHN1YkZvbGRlcnMgfSA9IGdldFN1YnNGcm9tRm9sZGVyKHRvcEZvbGRlcik7XHJcblxyXG4gICAgICBzdWJGb2xkZXJzLmZvckVhY2goKHN1YkZvbGRlcikgPT4ge1xyXG4gICAgICAgIHN1YkZvbGRlci5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgVEZpbGUpIHtcclxuICAgICAgICAgICAgY29uc3QgY2hpbGRCYXNlbmFtZSA9IGdldERWQmFzZW5hbWUoY2hpbGQpO1xyXG5cclxuICAgICAgICAgICAgcG9wdWxhdGVNYWluKFxyXG4gICAgICAgICAgICAgIHNldHRpbmdzLFxyXG4gICAgICAgICAgICAgIG1haW5HLFxyXG4gICAgICAgICAgICAgIGJhc2VuYW1lLFxyXG4gICAgICAgICAgICAgIHN1YmZvbGRlckZpZWxkLFxyXG4gICAgICAgICAgICAgIGNoaWxkQmFzZW5hbWUsXHJcbiAgICAgICAgICAgICAgOTk5OSxcclxuICAgICAgICAgICAgICA5OTk5LFxyXG4gICAgICAgICAgICAgIHRydWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGFsdEZpbGVbQkNfRk9MREVSX05PVEVfUkVDVVJTSVZFXSkge1xyXG4gICAgICBjb25zdCB7IHN1YkZvbGRlcnMgfSA9IGdldFN1YnNGcm9tRm9sZGVyKHRvcEZvbGRlcik7XHJcbiAgICAgIGNvbnN0IGZvbGRlclF1ZXVlOiBURm9sZGVyW10gPSBbLi4uc3ViRm9sZGVyc107XHJcblxyXG4gICAgICBsZXQgY3VyckZvbGRlciA9IGZvbGRlclF1ZXVlLnNoaWZ0KCk7XHJcbiAgICAgIHdoaWxlIChjdXJyRm9sZGVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBjb25zdCB7IG90aGVyTm90ZXMsIHN1YkZvbGRlcnMgfSA9IGdldFN1YnNGcm9tRm9sZGVyKGN1cnJGb2xkZXIpO1xyXG5cclxuICAgICAgICBjb25zdCBmb2xkZXJOb3RlID0gY3VyckZvbGRlci5uYW1lO1xyXG4gICAgICAgIGNvbnN0IHRhcmdldHMgPSBvdGhlck5vdGVzLm1hcChnZXREVkJhc2VuYW1lKTtcclxuXHJcbiAgICAgICAgLy8gaWYgKCFpc0luVmF1bHQoIGZvbGRlck5vdGUsIGZvbGRlck5vdGUpKSBjb250aW51ZTtcclxuXHJcbiAgICAgICAgY29uc3Qgc291cmNlT3JkZXIgPSA5OTk5OyAvLyBnZXRTb3VyY2VPcmRlcihhbHRGaWxlKTtcclxuICAgICAgICBjb25zdCB0YXJnZXRPcmRlciA9IDk5OTk7IC8vICBnZXRUYXJnZXRPcmRlcihmcm9udG1zLCBiYXNlbmFtZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHBhcmVudEZvbGRlck5vdGUgPSBjdXJyRm9sZGVyLnBhcmVudC5uYW1lO1xyXG5cclxuICAgICAgICBwb3B1bGF0ZU1haW4oXHJcbiAgICAgICAgICBzZXR0aW5ncyxcclxuICAgICAgICAgIG1haW5HLFxyXG4gICAgICAgICAgcGFyZW50Rm9sZGVyTm90ZSxcclxuICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAgZm9sZGVyTm90ZSxcclxuICAgICAgICAgIHNvdXJjZU9yZGVyLFxyXG4gICAgICAgICAgdGFyZ2V0T3JkZXIsXHJcbiAgICAgICAgICB0cnVlXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGFyZ2V0cy5mb3JFYWNoKCh0YXJnZXQpID0+IHtcclxuICAgICAgICAgIGlmICh0YXJnZXQgPT09IGZvbGRlck5vdGUpIHJldHVybjtcclxuICAgICAgICAgIGNvbnN0IHNvdXJjZU9yZGVyID0gOTk5OTsgLy8gZ2V0U291cmNlT3JkZXIoYWx0RmlsZSk7XHJcbiAgICAgICAgICBjb25zdCB0YXJnZXRPcmRlciA9IDk5OTk7IC8vICBnZXRUYXJnZXRPcmRlcihmcm9udG1zLCBiYXNlbmFtZSk7XHJcblxyXG4gICAgICAgICAgcG9wdWxhdGVNYWluKFxyXG4gICAgICAgICAgICBzZXR0aW5ncyxcclxuICAgICAgICAgICAgbWFpbkcsXHJcbiAgICAgICAgICAgIGZvbGRlck5vdGUsXHJcbiAgICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAgICB0YXJnZXQsXHJcbiAgICAgICAgICAgIHNvdXJjZU9yZGVyLFxyXG4gICAgICAgICAgICB0YXJnZXRPcmRlcixcclxuICAgICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgZm9sZGVyUXVldWUucHVzaCguLi5zdWJGb2xkZXJzKTtcclxuICAgICAgICBjdXJyRm9sZGVyID0gZm9sZGVyUXVldWUuc2hpZnQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEZpcnN0IGFkZCBvdGhlck5vdGVzIHRvIGdyYXBoXHJcblxyXG4gICAgLy8gVGhlbiBpdGVyYXRlIHN1YkZvbGRlcnMgZG9pbmcgdGhlIHNhbWVcclxuICB9KTtcclxufVxyXG4iLCAiaW1wb3J0IHR5cGUgeyBNdWx0aUdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHR5cGUgeyBURmlsZSB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgeyBnZXREVkJhc2VuYW1lLCBnZXRTZXR0aW5ncyB9IGZyb20gXCIuLi8uLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcbmltcG9ydCB0eXBlIHsgQkNTZXR0aW5ncywgSGllcmFyY2h5Tm90ZUl0ZW0gfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBhZGRFZGdlSWZOb3QsIGFkZE5vZGVzSWZOb3QgfSBmcm9tIFwiLi4vLi4vVXRpbHMvZ3JhcGhVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXRGaWVsZEluZm8sIGdldEZpZWxkcywgZ2V0T3BwRGlyLCBnZXRPcHBGaWVsZHMgfSBmcm9tIFwiLi4vLi4vVXRpbHMvSGllclV0aWxzXCI7XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0SGllcmFyY2h5Tm90ZUl0ZW1zKGZpbGU6IFRGaWxlKSB7XHJcbiAgY29uc3QgeyBsaXN0SXRlbXMgfSA9IGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKTtcclxuICBpZiAoIWxpc3RJdGVtcykgcmV0dXJuIFtdO1xyXG5cclxuICBjb25zdCBiYXNlbmFtZSA9IGdldERWQmFzZW5hbWUoZmlsZSlcclxuICBjb25zdCB7IGhpZXJhcmNoeU5vdGVJc1BhcmVudCB9ID0gZ2V0U2V0dGluZ3MoKTtcclxuXHJcbiAgY29uc3QgbGluZXMgPSAoYXdhaXQgYXBwLnZhdWx0LmNhY2hlZFJlYWQoZmlsZSkpLnNwbGl0KFwiXFxuXCIpO1xyXG5cclxuICBjb25zdCBoaWVyYXJjaHlOb3RlSXRlbXM6IEhpZXJhcmNoeU5vdGVJdGVtW10gPSBbXTtcclxuXHJcbiAgY29uc3QgYWZ0ZXJCdWxsZXRSZWcgPSBuZXcgUmVnRXhwKC9cXHMqWysqLV1cXHMoLiokKS8pO1xyXG4gIGNvbnN0IGRyb3BXaWtpTGlua3NSZWcgPSBuZXcgUmVnRXhwKC9cXFtcXFsoLio/KVxcXVxcXS8pO1xyXG4gIGNvbnN0IGZpZWxkUmVnID0gbmV3IFJlZ0V4cCgvKC4qPylcXFtcXFsuKj9cXF1cXF0vKTtcclxuXHJcbiAgZm9yIChjb25zdCBpdGVtIG9mIGxpc3RJdGVtcykge1xyXG4gICAgY29uc3QgbGluZSA9IGxpbmVzW2l0ZW0ucG9zaXRpb24uc3RhcnQubGluZV07XHJcblxyXG4gICAgY29uc3QgYWZ0ZXJCdWxsZXRDdXJyID0gYWZ0ZXJCdWxsZXRSZWcuZXhlYyhsaW5lKVsxXTtcclxuICAgIGNvbnN0IG5vdGUgPSBkcm9wV2lraUxpbmtzUmVnLmV4ZWMoYWZ0ZXJCdWxsZXRDdXJyKVsxXTtcclxuICAgIGxldCBmaWVsZCA9IGZpZWxkUmVnLmV4ZWMoYWZ0ZXJCdWxsZXRDdXJyKVsxXS50cmltKCkgfHwgbnVsbDtcclxuXHJcbiAgICBjb25zdCB7IHBhcmVudCB9ID0gaXRlbTtcclxuICAgIGlmIChwYXJlbnQgPj0gMCkge1xyXG4gICAgICBjb25zdCBwYXJlbnROb3RlID0gbGluZXNbcGFyZW50XTtcclxuICAgICAgY29uc3QgYWZ0ZXJCdWxsZXRQYXJlbnQgPSBhZnRlckJ1bGxldFJlZy5leGVjKHBhcmVudE5vdGUpWzFdO1xyXG4gICAgICBjb25zdCBkcm9wV2lraVBhcmVudCA9IGRyb3BXaWtpTGlua3NSZWcuZXhlYyhhZnRlckJ1bGxldFBhcmVudClbMV07XHJcblxyXG4gICAgICBoaWVyYXJjaHlOb3RlSXRlbXMucHVzaCh7XHJcbiAgICAgICAgbm90ZSxcclxuICAgICAgICBwYXJlbnQ6IGRyb3BXaWtpUGFyZW50LFxyXG4gICAgICAgIGZpZWxkLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGhpZXJhcmNoeU5vdGVJdGVtcy5wdXNoKHtcclxuICAgICAgICBub3RlLFxyXG4gICAgICAgIHBhcmVudDogaGllcmFyY2h5Tm90ZUlzUGFyZW50ID8gYmFzZW5hbWUgOiBudWxsLFxyXG4gICAgICAgIGZpZWxkLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGhpZXJhcmNoeU5vdGVJdGVtcztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZEhOc1RvR3JhcGgoXHJcbiAgc2V0dGluZ3M6IEJDU2V0dGluZ3MsXHJcbiAgaG5BcnI6IEhpZXJhcmNoeU5vdGVJdGVtW10sXHJcbiAgbWFpbkc6IE11bHRpR3JhcGhcclxuKSB7XHJcbiAgY29uc3QgeyBITlVwRmllbGQsIHVzZXJIaWVycyB9ID0gc2V0dGluZ3M7XHJcbiAgY29uc3QgdXBGaWVsZHMgPSBnZXRGaWVsZHModXNlckhpZXJzLCBcInVwXCIpO1xyXG5cclxuICBobkFyci5mb3JFYWNoKChobkl0ZW0sIGkpID0+IHtcclxuICAgIGNvbnN0IHsgbm90ZSwgZmllbGQsIHBhcmVudCB9ID0gaG5JdGVtO1xyXG5cclxuICAgIGNvbnN0IHRhcmdldEZpZWxkID0gZmllbGQgPz8gKEhOVXBGaWVsZCB8fCB1cEZpZWxkc1swXSk7XHJcbiAgICBjb25zdCBkaXIgPSBnZXRGaWVsZEluZm8odXNlckhpZXJzLCB0YXJnZXRGaWVsZCk/LmZpZWxkRGlyO1xyXG4gICAgY29uc3Qgb3BwRGlyID0gZ2V0T3BwRGlyKGRpcik7XHJcbiAgICBjb25zdCBvcHBGaWVsZCA9IGdldE9wcEZpZWxkcyh1c2VySGllcnMsIHRhcmdldEZpZWxkLCBkaXIpWzBdO1xyXG5cclxuICAgIGlmIChwYXJlbnQgPT09IG51bGwpIHtcclxuICAgICAgY29uc3QgcyA9IG5vdGU7XHJcbiAgICAgIGNvbnN0IHQgPSBobkFycltpICsgMV0/Lm5vdGU7XHJcblxyXG4gICAgICBhZGROb2Rlc0lmTm90KG1haW5HLCBbcywgdF0pO1xyXG4gICAgICBhZGRFZGdlSWZOb3QobWFpbkcsIHMsIHQsIHsgZGlyOiBvcHBEaXIsIGZpZWxkOiBvcHBGaWVsZCB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFkZE5vZGVzSWZOb3QobWFpbkcsIFtub3RlLCBwYXJlbnRdKTtcclxuICAgICAgaWYgKHNldHRpbmdzLnNob3dVcEluSnVnZ2wpIHtcclxuICAgICAgICBhZGRFZGdlSWZOb3QobWFpbkcsIG5vdGUsIHBhcmVudCwge1xyXG4gICAgICAgICAgZGlyLFxyXG4gICAgICAgICAgZmllbGQ6IHRhcmdldEZpZWxkLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBhZGRFZGdlSWZOb3QobWFpbkcsIHBhcmVudCwgbm90ZSwge1xyXG4gICAgICAgIGRpcjogb3BwRGlyLFxyXG4gICAgICAgIGZpZWxkOiBvcHBGaWVsZCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB0eXBlIHsgTXVsdGlHcmFwaCB9IGZyb20gXCJncmFwaG9sb2d5XCI7XHJcbmltcG9ydCB7IHBhcnNlVHlwZWRMaW5rIH0gZnJvbSBcImp1Z2dsLWFwaVwiO1xyXG5pbXBvcnQgdHlwZSB7IFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IHNwbGl0TGlua3NSZWdleCB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHR5cGUgeyBCQ1NldHRpbmdzLCBkdkZyb250bWF0dGVyQ2FjaGUsIEp1Z2dsTGluayB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IGdldFRhcmdldE9yZGVyLCBwb3B1bGF0ZU1haW4gfSBmcm9tIFwiLi4vVXRpbHMvZ3JhcGhVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXRGaWVsZEluZm8sIGdldEZpZWxkcyB9IGZyb20gXCIuLi9VdGlscy9IaWVyVXRpbHNcIjtcclxuXHJcbi8vIFRPRE8gSSB0aGluayBpdCdkIGJlIGJldHRlciB0byBkbyB0aGlzIHdob2xlIHRoaW5nIGFzIGFuIG9iaiBpbnN0ZWFkIG9mIEp1Z2dsTGlua1tdXHJcbi8vID0+IHtbbm90ZTogc3RyaW5nXToge3R5cGU6IHN0cmluZywgbGlua3NJbkxpbmU6IHN0cmluZ1tdfVtdfVxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0SnVnZ2xMaW5rcyhcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIGZpbGVzOiBURmlsZVtdXHJcbik6IFByb21pc2U8SnVnZ2xMaW5rW10+IHtcclxuICBjb25zdCB7IHNldHRpbmdzLCBkYiB9ID0gcGx1Z2luO1xyXG4gIGRiLnN0YXJ0MkcoXCJnZXRKdWdnbExpbmtzXCIpO1xyXG5cclxuICBjb25zdCB7IHVzZXJIaWVycyB9ID0gc2V0dGluZ3M7XHJcblxyXG4gIC8vIEFkZCBKdWdnbCBsaW5rc1xyXG4gIGNvbnN0IHR5cGVkTGlua3NBcnI6IEp1Z2dsTGlua1tdID0gYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICBmaWxlcy5tYXAoYXN5bmMgKGZpbGUpID0+IHtcclxuICAgICAgY29uc3QganVnZ2xMaW5rOiBKdWdnbExpbmsgPSB7IGZpbGUsIGxpbmtzOiBbXSB9O1xyXG5cclxuICAgICAgLy8gVXNlIE9icyBtZXRhZGF0YWNhY2hlIHRvIGdldCB0aGUgbGlua3MgaW4gdGhlIGN1cnJlbnQgZmlsZVxyXG4gICAgICBjb25zdCBsaW5rcyA9IGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKT8ubGlua3MgPz8gW107XHJcblxyXG4gICAgICBjb25zdCBjb250ZW50ID0gbGlua3MubGVuZ3RoID8gYXdhaXQgYXBwLnZhdWx0LmNhY2hlZFJlYWQoZmlsZSkgOiBcIlwiO1xyXG4gICAgICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoXCJcXG5cIik7XHJcblxyXG4gICAgICBsaW5rcy5mb3JFYWNoKChsaW5rKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbGluZU5vID0gbGluay5wb3NpdGlvbi5zdGFydC5saW5lO1xyXG4gICAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1tsaW5lTm9dO1xyXG5cclxuICAgICAgICAvLyBDaGVjayB0aGUgbGluZSBmb3Igd2lraWxpbmtzLCBhbmQgcmV0dXJuIGFuIGFycmF5IG9mIGxpbmsuaW5uZXJUZXh0XHJcbiAgICAgICAgY29uc3QgbGlua3NJbkxpbmUgPVxyXG4gICAgICAgICAgbGluZVxyXG4gICAgICAgICAgICAubWF0Y2goc3BsaXRMaW5rc1JlZ2V4KVxyXG4gICAgICAgICAgICA/Lm1hcCgobGluaykgPT4gbGluay5zbGljZSgyLCBsaW5rLmxlbmd0aCAtIDIpKVxyXG4gICAgICAgICAgICA/Lm1hcCgoaW5uZXJUZXh0KSA9PiBpbm5lclRleHQuc3BsaXQoXCJ8XCIpWzBdKSA/PyBbXTtcclxuXHJcbiAgICAgICAgY29uc3QgdHlwZWRMaW5rUHJlZml4ID1cclxuICAgICAgICAgIGFwcC5wbHVnaW5zLnBsdWdpbnMuanVnZ2w/LnNldHRpbmdzLnR5cGVkTGlua1ByZWZpeCA/PyBcIi1cIjtcclxuXHJcbiAgICAgICAgY29uc3QgcGFyc2VkTGlua3MgPSBwYXJzZVR5cGVkTGluayhsaW5rLCBsaW5lLCB0eXBlZExpbmtQcmVmaXgpO1xyXG5cclxuICAgICAgICBjb25zdCBmaWVsZCA9IHBhcnNlZExpbmtzPy5wcm9wZXJ0aWVzPy50eXBlID8/IFwiXCI7XHJcbiAgICAgICAgaWYgKGZpZWxkID09PSBcIlwiKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgeyBmaWVsZERpciB9ID0gZ2V0RmllbGRJbmZvKHVzZXJIaWVycywgZmllbGQpIHx8IHt9O1xyXG4gICAgICAgIGlmICghZmllbGREaXIpIHJldHVybjtcclxuXHJcbiAgICAgICAganVnZ2xMaW5rLmxpbmtzLnB1c2goe1xyXG4gICAgICAgICAgZGlyOiBmaWVsZERpcixcclxuICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAgbGlua3NJbkxpbmUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4ganVnZ2xMaW5rO1xyXG4gICAgfSlcclxuICApO1xyXG5cclxuICBjb25zdCBhbGxGaWVsZHMgPSBnZXRGaWVsZHModXNlckhpZXJzKTtcclxuXHJcbiAgY29uc3QgZmlsdGVyZWRMaW5rcyA9IHR5cGVkTGlua3NBcnIubWFwKChqdWdnbExpbmspID0+IHtcclxuICAgIC8vIEZpbHRlciBvdXQgbGlua3Mgd2hvc2UgdHlwZSBpcyBub3QgaW4gYWxsRmllbGRzXHJcbiAgICBqdWdnbExpbmsubGlua3MgPSBqdWdnbExpbmsubGlua3MuZmlsdGVyKChsaW5rKSA9PlxyXG4gICAgICBhbGxGaWVsZHMuaW5jbHVkZXMobGluay5maWVsZClcclxuICAgICk7XHJcbiAgICByZXR1cm4ganVnZ2xMaW5rO1xyXG4gIH0pO1xyXG4gIGRiLmVuZDJHKHsgZmlsdGVyZWRMaW5rcyB9KTtcclxuICByZXR1cm4gZmlsdGVyZWRMaW5rcztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZEp1Z2dsTGlua3NUb0dyYXBoKFxyXG4gIHNldHRpbmdzOiBCQ1NldHRpbmdzLFxyXG4gIGp1Z2dsTGlua3M6IEp1Z2dsTGlua1tdLFxyXG4gIGZyb250bXM6IGR2RnJvbnRtYXR0ZXJDYWNoZVtdLFxyXG4gIG1haW5HOiBNdWx0aUdyYXBoXHJcbikge1xyXG4gIGp1Z2dsTGlua3MuZm9yRWFjaCgoanVnZ2xMaW5rKSA9PiB7XHJcbiAgICBjb25zdCB7IGJhc2VuYW1lIH0gPSBqdWdnbExpbmsuZmlsZTtcclxuICAgIGp1Z2dsTGluay5saW5rcy5mb3JFYWNoKChsaW5rKSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgZGlyLCBmaWVsZCwgbGlua3NJbkxpbmUgfSA9IGxpbms7XHJcbiAgICAgIGlmIChkaXIgPT09IFwiXCIpIHJldHVybjtcclxuICAgICAgY29uc3Qgc291cmNlT3JkZXIgPSBnZXRUYXJnZXRPcmRlcihmcm9udG1zLCBiYXNlbmFtZSk7XHJcbiAgICAgIGxpbmtzSW5MaW5lLmZvckVhY2goKGxpbmtJbkxpbmUpID0+IHtcclxuICAgICAgICAvLyBJcyB0aGlzIGEgYnVnPyBXaHkgbm90IGBnZXRTb3VyY2VPcmRlcmA/XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0c09yZGVyID0gZ2V0VGFyZ2V0T3JkZXIoZnJvbnRtcywgbGlua0luTGluZSk7XHJcblxyXG4gICAgICAgIHBvcHVsYXRlTWFpbihcclxuICAgICAgICAgIHNldHRpbmdzLFxyXG4gICAgICAgICAgbWFpbkcsXHJcbiAgICAgICAgICBiYXNlbmFtZSxcclxuICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAgbGlua0luTGluZSxcclxuICAgICAgICAgIHNvdXJjZU9yZGVyLFxyXG4gICAgICAgICAgdGFyZ2V0c09yZGVyXHJcbiAgICAgICAgKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9KTtcclxufVxyXG4iLCAiaW1wb3J0IHR5cGUgeyBNdWx0aUdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHsgQkNfTElOS19OT1RFIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgdHlwZSB7IGR2RnJvbnRtYXR0ZXJDYWNoZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7XHJcbiAgZ2V0U291cmNlT3JkZXIsXHJcbiAgZ2V0VGFyZ2V0T3JkZXIsXHJcbiAgcG9wdWxhdGVNYWluLFxyXG59IGZyb20gXCIuLi9VdGlscy9ncmFwaFV0aWxzXCI7XHJcbmltcG9ydCB7IGdldEZpZWxkcyB9IGZyb20gXCIuLi9VdGlscy9IaWVyVXRpbHNcIjtcclxuaW1wb3J0IHsgZ2V0RFZCYXNlbmFtZSB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkTGlua05vdGVzVG9HcmFwaChcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIGVsaWdhYmxlQWx0czogZHZGcm9udG1hdHRlckNhY2hlW10sXHJcbiAgZnJvbnRtczogZHZGcm9udG1hdHRlckNhY2hlW10sXHJcbiAgbWFpbkc6IE11bHRpR3JhcGhcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgdXNlckhpZXJzIH0gPSBzZXR0aW5ncztcclxuICBjb25zdCBmaWVsZHMgPSBnZXRGaWVsZHModXNlckhpZXJzKTtcclxuICBlbGlnYWJsZUFsdHMuZm9yRWFjaCgoYWx0RmlsZSkgPT4ge1xyXG4gICAgY29uc3QgbGlua05vdGVGaWxlID0gYWx0RmlsZS5maWxlO1xyXG4gICAgY29uc3QgbGlua05vdGVCYXNlbmFtZSA9IGdldERWQmFzZW5hbWUobGlua05vdGVGaWxlKTtcclxuXHJcbiAgICBsZXQgZmllbGQgPSBhbHRGaWxlW0JDX0xJTktfTk9URV0gYXMgc3RyaW5nO1xyXG4gICAgaWYgKHR5cGVvZiBmaWVsZCAhPT0gXCJzdHJpbmdcIiB8fCAhZmllbGRzLmluY2x1ZGVzKGZpZWxkKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGxpbmtzID0gYXBwLm1ldGFkYXRhQ2FjaGVcclxuICAgICAgLmdldEZpbGVDYWNoZShsaW5rTm90ZUZpbGUpXHJcbiAgICAgID8ubGlua3M/Lm1hcCgobCkgPT4gbC5saW5rLm1hdGNoKC9bXiN8XSsvKVswXSk7XHJcblxyXG4gICAgY29uc3QgZW1iZWRzID0gYXBwLm1ldGFkYXRhQ2FjaGVcclxuICAgICAgLmdldEZpbGVDYWNoZShsaW5rTm90ZUZpbGUpXHJcbiAgICAgID8uZW1iZWRzPy5tYXAoKGwpID0+IGwubGluay5tYXRjaCgvW14jfF0rLylbMF0pO1xyXG5cclxuICAgIGNvbnN0IHRhcmdldHMgPSBbLi4uKGxpbmtzID8/IFtdKSwgLi4uKGVtYmVkcyA/PyBbXSldO1xyXG5cclxuICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIHRhcmdldHMpIHtcclxuICAgICAgY29uc3Qgc291cmNlT3JkZXIgPSBnZXRTb3VyY2VPcmRlcihhbHRGaWxlKTtcclxuICAgICAgY29uc3QgdGFyZ2V0T3JkZXIgPSBnZXRUYXJnZXRPcmRlcihmcm9udG1zLCBsaW5rTm90ZUJhc2VuYW1lKTtcclxuICAgICAgcG9wdWxhdGVNYWluKFxyXG4gICAgICAgIHNldHRpbmdzLFxyXG4gICAgICAgIG1haW5HLFxyXG4gICAgICAgIGxpbmtOb3RlQmFzZW5hbWUsXHJcbiAgICAgICAgZmllbGQsXHJcbiAgICAgICAgdGFyZ2V0LFxyXG4gICAgICAgIHNvdXJjZU9yZGVyLFxyXG4gICAgICAgIHRhcmdldE9yZGVyLFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG4iLCAiaW1wb3J0IHR5cGUgeyBNdWx0aUdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHsgaW5mbyB9IGZyb20gXCJsb2dsZXZlbFwiO1xyXG5pbXBvcnQgeyBCQ19JR05PUkUsIEJDX1JFR0VYX05PVEUsIEJDX1JFR0VYX05PVEVfRklFTEQgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB0eXBlIHsgZHZGcm9udG1hdHRlckNhY2hlIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHsgc3RyVG9SZWdleCB9IGZyb20gXCIuLi9VdGlscy9nZW5lcmFsVXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBnZXRTb3VyY2VPcmRlcixcclxuICBnZXRUYXJnZXRPcmRlcixcclxuICBwb3B1bGF0ZU1haW4sXHJcbn0gZnJvbSBcIi4uL1V0aWxzL2dyYXBoVXRpbHNcIjtcclxuaW1wb3J0IHsgZ2V0RmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXREVkJhc2VuYW1lIH0gZnJvbSBcIi4uL1V0aWxzL09ic2lkaWFuVXRpbHNcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRSZWdleE5vdGVzVG9HcmFwaChcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIGVsaWdhYmxlQWx0czogZHZGcm9udG1hdHRlckNhY2hlW10sXHJcbiAgZnJvbnRtczogZHZGcm9udG1hdHRlckNhY2hlW10sXHJcbiAgbWFpbkc6IE11bHRpR3JhcGhcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgdXNlckhpZXJzLCByZWdleE5vdGVGaWVsZCB9ID0gc2V0dGluZ3M7XHJcbiAgY29uc3QgZmllbGRzID0gZ2V0RmllbGRzKHVzZXJIaWVycyk7XHJcblxyXG4gIGVsaWdhYmxlQWx0cy5mb3JFYWNoKChhbHRGaWxlKSA9PiB7XHJcbiAgICBjb25zdCByZWdleE5vdGVGaWxlID0gYWx0RmlsZS5maWxlO1xyXG4gICAgY29uc3QgcmVnZXhOb3RlQmFzZW5hbWUgPSBnZXREVkJhc2VuYW1lKHJlZ2V4Tm90ZUZpbGUpO1xyXG5cclxuICAgIGNvbnN0IHJlZ2V4ID0gc3RyVG9SZWdleChhbHRGaWxlW0JDX1JFR0VYX05PVEVdIGFzIHN0cmluZyk7XHJcbiAgICBpbmZvKHsgcmVnZXggfSk7XHJcblxyXG4gICAgbGV0IGZpZWxkID0gYWx0RmlsZVtCQ19SRUdFWF9OT1RFX0ZJRUxEXSBhcyBzdHJpbmc7XHJcbiAgICBpZiAodHlwZW9mIGZpZWxkICE9PSBcInN0cmluZ1wiIHx8ICFmaWVsZHMuaW5jbHVkZXMoZmllbGQpKVxyXG4gICAgICBmaWVsZCA9IHJlZ2V4Tm90ZUZpZWxkIHx8IGZpZWxkc1swXTtcclxuXHJcbiAgICBjb25zdCB0YXJnZXRzID0gW107XHJcbiAgICBmcm9udG1zLmZvckVhY2goKHBhZ2UpID0+IHtcclxuICAgICAgaWYgKHBhZ2VbQkNfSUdOT1JFXSkgcmV0dXJuO1xyXG4gICAgICBjb25zdCBiYXNlbmFtZSA9IGdldERWQmFzZW5hbWUocGFnZS5maWxlKTtcclxuICAgICAgaWYgKGJhc2VuYW1lICE9PSByZWdleE5vdGVCYXNlbmFtZSAmJiByZWdleC50ZXN0KGJhc2VuYW1lKSlcclxuICAgICAgICB0YXJnZXRzLnB1c2goYmFzZW5hbWUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZm9yIChjb25zdCB0YXJnZXQgb2YgdGFyZ2V0cykge1xyXG4gICAgICBjb25zdCBzb3VyY2VPcmRlciA9IGdldFNvdXJjZU9yZGVyKGFsdEZpbGUpO1xyXG4gICAgICBjb25zdCB0YXJnZXRPcmRlciA9IGdldFRhcmdldE9yZGVyKGZyb250bXMsIHJlZ2V4Tm90ZUJhc2VuYW1lKTtcclxuICAgICAgcG9wdWxhdGVNYWluKFxyXG4gICAgICAgIHNldHRpbmdzLFxyXG4gICAgICAgIG1haW5HLFxyXG4gICAgICAgIHJlZ2V4Tm90ZUJhc2VuYW1lLFxyXG4gICAgICAgIGZpZWxkLFxyXG4gICAgICAgIHRhcmdldCxcclxuICAgICAgICBzb3VyY2VPcmRlcixcclxuICAgICAgICB0YXJnZXRPcmRlcixcclxuICAgICAgICB0cnVlXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB0eXBlIHsgTXVsdGlHcmFwaCB9IGZyb20gXCJncmFwaG9sb2d5XCI7XHJcbmltcG9ydCB7IGluZm8gfSBmcm9tIFwibG9nbGV2ZWxcIjtcclxuaW1wb3J0IHR5cGUgeyBURmlsZSB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQge1xyXG4gIEJDX0lHTk9SRSxcclxuICBCQ19UQUdfTk9URSxcclxuICBCQ19UQUdfTk9URV9FWEFDVCxcclxuICBCQ19UQUdfTk9URV9GSUVMRCxcclxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB0eXBlIHsgZHZGcm9udG1hdHRlckNhY2hlIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHsgc3BsaXRBbmRUcmltIH0gZnJvbSBcIi4uL1V0aWxzL2dlbmVyYWxVdGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIGdldFNvdXJjZU9yZGVyLFxyXG4gIGdldFRhcmdldE9yZGVyLFxyXG4gIHBvcHVsYXRlTWFpbixcclxufSBmcm9tIFwiLi4vVXRpbHMvZ3JhcGhVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXRGaWVsZHMgfSBmcm9tIFwiLi4vVXRpbHMvSGllclV0aWxzXCI7XHJcbmltcG9ydCB7IGFkZEhhc2gsIGRyb3BIYXNoLCBnZXREVkJhc2VuYW1lIH0gZnJvbSBcIi4uL1V0aWxzL09ic2lkaWFuVXRpbHNcIjtcclxuXHJcbmNvbnN0IGdldEFsbFRhZ3MgPSAoZmlsZTogVEZpbGUsIHdpdGhIYXNoID0gdHJ1ZSk6IHN0cmluZ1tdID0+IHtcclxuICBjb25zdCB7IHRhZ3MsIGZyb250bWF0dGVyIH0gPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XHJcbiAgY29uc3QgYWxsVGFnczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgdGFncz8uZm9yRWFjaCgodCkgPT4gYWxsVGFncy5wdXNoKGRyb3BIYXNoKHQudGFnKSkpO1xyXG5cclxuICBbZnJvbnRtYXR0ZXI/LnRhZ3MgPz8gW11dLmZsYXQoKS5mb3JFYWNoKCh0OiBzdHJpbmcpID0+IHtcclxuICAgIHNwbGl0QW5kVHJpbSh0KS5mb3JFYWNoKChpbm5lclQpID0+IGFsbFRhZ3MucHVzaChkcm9wSGFzaChpbm5lclQpKSk7XHJcbiAgfSk7XHJcbiAgW2Zyb250bWF0dGVyPy50YWcgPz8gW11dLmZsYXQoKS5mb3JFYWNoKCh0OiBzdHJpbmcpID0+IHtcclxuICAgIHNwbGl0QW5kVHJpbSh0KS5mb3JFYWNoKChpbm5lclQpID0+IGFsbFRhZ3MucHVzaChkcm9wSGFzaChpbm5lclQpKSk7XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBhbGxUYWdzLm1hcCgodCkgPT4gKHdpdGhIYXNoID8gXCIjXCIgOiBcIlwiKSArIHQudG9Mb3dlckNhc2UoKSk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkVGFnTm90ZXNUb0dyYXBoKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgZWxpZ2FibGVBbHRzOiBkdkZyb250bWF0dGVyQ2FjaGVbXSxcclxuICBmcm9udG1zOiBkdkZyb250bWF0dGVyQ2FjaGVbXSxcclxuICBtYWluRzogTXVsdGlHcmFwaFxyXG4pIHtcclxuICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW47XHJcbiAgY29uc3QgeyB1c2VySGllcnMsIHRhZ05vdGVGaWVsZCB9ID0gc2V0dGluZ3M7XHJcbiAgY29uc3QgZmllbGRzID0gZ2V0RmllbGRzKHVzZXJIaWVycyk7XHJcbiAgZWxpZ2FibGVBbHRzLmZvckVhY2goKGFsdEZpbGUpID0+IHtcclxuICAgIGNvbnN0IHRhZ05vdGVGaWxlID0gYWx0RmlsZS5maWxlO1xyXG5cclxuICAgIGNvbnN0IHRhZ05vdGVCYXNlbmFtZSA9IGdldERWQmFzZW5hbWUodGFnTm90ZUZpbGUpO1xyXG4gICAgY29uc3QgdGFnID0gYWRkSGFzaCgoYWx0RmlsZVtCQ19UQUdfTk9URV0gYXMgc3RyaW5nKS50cmltKCkudG9Mb3dlckNhc2UoKSk7XHJcbiAgICBpbmZvKHsgdGFnIH0pO1xyXG5cclxuICAgIGNvbnN0IGhhc1RoaXNUYWcgPSAoZmlsZTogVEZpbGUpID0+IHtcclxuICAgICAgY29uc3QgYWxsVGFncyA9IGdldEFsbFRhZ3MoZmlsZSk7XHJcbiAgICAgIHJldHVybiBhbHRGaWxlW0JDX1RBR19OT1RFX0VYQUNUXSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgPyBhbGxUYWdzLmluY2x1ZGVzKHRhZylcclxuICAgICAgICA6IGFsbFRhZ3Muc29tZSgodCkgPT4gdC5pbmNsdWRlcyh0YWcpKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0cyA9IGZyb250bXNcclxuICAgICAgLm1hcCgoZmYpID0+IGZmLmZpbGUpXHJcbiAgICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGUucGF0aCAhPT0gdGFnTm90ZUZpbGUucGF0aCAmJiBoYXNUaGlzVGFnKGZpbGUpICYmICFmaWxlW0JDX0lHTk9SRV0pXHJcbiAgICAgIC5tYXAoZ2V0RFZCYXNlbmFtZSk7XHJcbiAgICBpbmZvKHsgdGFyZ2V0cyB9KTtcclxuXHJcbiAgICBsZXQgZmllbGQgPVxyXG4gICAgICAoYWx0RmlsZVtCQ19UQUdfTk9URV9GSUVMRF0gYXMgc3RyaW5nKSA/PyAodGFnTm90ZUZpZWxkIHx8IGZpZWxkc1swXSk7XHJcblxyXG4gICAgdGFyZ2V0cy5mb3JFYWNoKCh0YXJnZXQpID0+IHtcclxuICAgICAgY29uc3Qgc291cmNlT3JkZXIgPSBnZXRTb3VyY2VPcmRlcihhbHRGaWxlKTtcclxuICAgICAgY29uc3QgdGFyZ2V0T3JkZXIgPSBnZXRUYXJnZXRPcmRlcihmcm9udG1zLCB0YWdOb3RlQmFzZW5hbWUpO1xyXG4gICAgICBwb3B1bGF0ZU1haW4oXHJcbiAgICAgICAgc2V0dGluZ3MsXHJcbiAgICAgICAgbWFpbkcsXHJcbiAgICAgICAgdGFnTm90ZUJhc2VuYW1lLFxyXG4gICAgICAgIGZpZWxkLFxyXG4gICAgICAgIHRhcmdldCxcclxuICAgICAgICBzb3VyY2VPcmRlcixcclxuICAgICAgICB0YXJnZXRPcmRlcixcclxuICAgICAgICB0cnVlXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9KTtcclxufVxyXG4iLCAiaW1wb3J0IHR5cGUgeyBNdWx0aUdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHsgaW5mbyB9IGZyb20gXCJsb2dsZXZlbFwiO1xyXG5pbXBvcnQgeyBCQ19UUkFWRVJTRV9OT1RFIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgdHlwZSB7IGR2RnJvbnRtYXR0ZXJDYWNoZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IGRmc0FsbFBhdGhzLCBwb3B1bGF0ZU1haW4sIHJlbW92ZUN5Y2xlcyB9IGZyb20gXCIuLi9VdGlscy9ncmFwaFV0aWxzXCI7XHJcbmltcG9ydCB7IGdldEZpZWxkcyB9IGZyb20gXCIuLi9VdGlscy9IaWVyVXRpbHNcIjtcclxuaW1wb3J0IHsgZ2V0RFZCYXNlbmFtZSB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkVHJhdmVyc2VOb3Rlc1RvR3JhcGgoXHJcbiAgcGx1Z2luOiBCQ1BsdWdpbixcclxuICB0cmF2ZXJzZU5vdGVzOiBkdkZyb250bWF0dGVyQ2FjaGVbXSxcclxuICBtYWluRzogTXVsdGlHcmFwaCxcclxuICBvYnNHOiBNdWx0aUdyYXBoXHJcbikge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCB7IHVzZXJIaWVycyB9ID0gc2V0dGluZ3M7XHJcbiAgY29uc3QgZmllbGRzID0gZ2V0RmllbGRzKHVzZXJIaWVycyk7XHJcblxyXG4gIHRyYXZlcnNlTm90ZXMuZm9yRWFjaCgoYWx0RmlsZSkgPT4ge1xyXG4gICAgY29uc3QgeyBmaWxlIH0gPSBhbHRGaWxlO1xyXG4gICAgY29uc3QgYmFzZW5hbWUgPSBnZXREVkJhc2VuYW1lKGZpbGUpO1xyXG4gICAgY29uc3Qgbm9DeWNsZXMgPSByZW1vdmVDeWNsZXMob2JzRywgYmFzZW5hbWUpO1xyXG5cclxuICAgIGxldCBmaWVsZCA9IGFsdEZpbGVbQkNfVFJBVkVSU0VfTk9URV0gYXMgc3RyaW5nO1xyXG4gICAgaWYgKHR5cGVvZiBmaWVsZCAhPT0gXCJzdHJpbmdcIiB8fCAhZmllbGRzLmluY2x1ZGVzKGZpZWxkKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGFsbFBhdGhzID0gZGZzQWxsUGF0aHMobm9DeWNsZXMsIGJhc2VuYW1lKTtcclxuICAgIGluZm8oYWxsUGF0aHMpO1xyXG4gICAgY29uc3QgcmV2ZXJzZWQgPSBbLi4uYWxsUGF0aHNdLm1hcCgocGF0aCkgPT4gcGF0aC5yZXZlcnNlKCkpO1xyXG4gICAgcmV2ZXJzZWQuZm9yRWFjaCgocGF0aCkgPT4ge1xyXG4gICAgICBwYXRoLmZvckVhY2goKG5vZGUsIGkpID0+IHtcclxuICAgICAgICBjb25zdCBuZXh0ID0gcGF0aFtpICsgMV07XHJcbiAgICAgICAgaWYgKG5leHQgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgICAgIHBvcHVsYXRlTWFpbihcclxuICAgICAgICAgIHNldHRpbmdzLFxyXG4gICAgICAgICAgbWFpbkcsXHJcbiAgICAgICAgICBub2RlLFxyXG4gICAgICAgICAgZmllbGQgYXMgc3RyaW5nLFxyXG4gICAgICAgICAgbmV4dCxcclxuICAgICAgICAgIDk5OTksXHJcbiAgICAgICAgICA5OTk5LFxyXG4gICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB0eXBlIHsgTXVsdGlHcmFwaCB9IGZyb20gXCJncmFwaG9sb2d5XCI7XHJcbmltcG9ydCB7IGVycm9yLCBpbmZvIH0gZnJvbSBcImxvZ2xldmVsXCI7XHJcbmltcG9ydCB7IE1hcmtkb3duVmlldywgVEZpbGUgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IE5leHRQcmV2IGZyb20gXCIuLi9Db21wb25lbnRzL05leHRQcmV2LnN2ZWx0ZVwiO1xyXG5pbXBvcnQgVHJhaWxHcmlkIGZyb20gXCIuLi9Db21wb25lbnRzL1RyYWlsR3JpZC5zdmVsdGVcIjtcclxuaW1wb3J0IFRyYWlsUGF0aCBmcm9tIFwiLi4vQ29tcG9uZW50cy9UcmFpbFBhdGguc3ZlbHRlXCI7XHJcbmltcG9ydCB7XHJcbiAgQkNfSElERV9UUkFJTCxcclxuICBibGFua1JlYWxOSW1wbGllZCxcclxuICBKVUdHTF9UUkFJTF9ERUZBVUxUUyxcclxuICBUUkFJTF9MRU5HVEhTLFxyXG59IGZyb20gXCIuLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHR5cGUgeyBCQ1NldHRpbmdzLCBFZGdlQXR0ciwgUmVhbE5JbXBsaWVkIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHtcclxuICBiZnNBbGxQYXRocyxcclxuICBnZXRSZWZsZXhpdmVDbG9zdXJlLFxyXG4gIGdldFN1YkZvckZpZWxkcyxcclxuICBnZXRTdWJJbkRpcnMsXHJcbn0gZnJvbSBcIi4uL1V0aWxzL2dyYXBoVXRpbHNcIjtcclxuaW1wb3J0IHsgZ2V0RmllbGRzLCBnZXRPcHBEaXIsIGdldE9wcEZpZWxkcyB9IGZyb20gXCIuLi9VdGlscy9IaWVyVXRpbHNcIjtcclxuaW1wb3J0IHsgY3JlYXRlSnVnZ2xUcmFpbCB9IGZyb20gXCIuLi9WaXN1YWxpc2F0aW9ucy9KdWdnbFwiO1xyXG5cclxuZnVuY3Rpb24gZ2V0TGltaXRlZFRyYWlsU3ViKHBsdWdpbjogQkNQbHVnaW4pIHtcclxuICBjb25zdCB7IHNldHRpbmdzLCBtYWluRywgY2xvc2VkRyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgbGltaXRUcmFpbENoZWNrYm94ZXMsIHVzZXJIaWVycyB9ID0gc2V0dGluZ3M7XHJcblxyXG4gIGlmIChcclxuICAgIGdldEZpZWxkcyh1c2VySGllcnMpLmV2ZXJ5KChmaWVsZCkgPT4gbGltaXRUcmFpbENoZWNrYm94ZXMuaW5jbHVkZXMoZmllbGQpKVxyXG4gICkge1xyXG4gICAgcmV0dXJuIGdldFN1YkluRGlycyhjbG9zZWRHLCBcInVwXCIpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zdCBvcHBGaWVsZHMgPSBsaW1pdFRyYWlsQ2hlY2tib3hlc1xyXG4gICAgICAubWFwKChmaWVsZCkgPT4gZ2V0T3BwRmllbGRzKHVzZXJIaWVycywgZmllbGQsIFwidXBcIik/LlswXSlcclxuICAgICAgLmZpbHRlcigoZmllbGQpID0+IGZpZWxkICE9PSB1bmRlZmluZWQpO1xyXG4gICAgY29uc3Qgc3ViR3JhcGggPSBnZXRTdWJGb3JGaWVsZHMobWFpbkcsIFtcclxuICAgICAgLi4ubGltaXRUcmFpbENoZWNrYm94ZXMsXHJcbiAgICAgIC4uLm9wcEZpZWxkcyxcclxuICAgIF0pO1xyXG4gICAgY29uc3QgY2xvc2VkID0gZ2V0UmVmbGV4aXZlQ2xvc3VyZShzdWJHcmFwaCwgdXNlckhpZXJzKTtcclxuICAgIHJldHVybiBnZXRTdWJJbkRpcnMoY2xvc2VkLCBcInVwXCIpO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0QnJlYWRjcnVtYnMoXHJcbiAgc2V0dGluZ3M6IEJDU2V0dGluZ3MsXHJcbiAgZzogTXVsdGlHcmFwaCxcclxuICBjdXJyRmlsZTogVEZpbGVcclxuKTogc3RyaW5nW11bXSB8IG51bGwge1xyXG4gIGNvbnN0IHsgYmFzZW5hbWUsIGV4dGVuc2lvbiB9ID0gY3VyckZpbGU7XHJcbiAgaWYgKGV4dGVuc2lvbiAhPT0gXCJtZFwiKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgY29uc3QgYWxsVHJhaWxzID0gYmZzQWxsUGF0aHMoZywgYmFzZW5hbWUpO1xyXG4gIGxldCBmaWx0ZXJlZFRyYWlscyA9IFsuLi5hbGxUcmFpbHNdO1xyXG5cclxuICBjb25zdCB7IGluZGV4Tm90ZXMsIHNob3dBbGxQYXRoc0lmTm9uZVRvSW5kZXhOb3RlIH0gPSBzZXR0aW5ncztcclxuICAvLyBGaWx0ZXIgZm9yIGluZGV4IG5vdGVzXHJcbiAgaWYgKFxyXG4gICAgLy8gV29ya3MgZm9yIGB1bmRlZmluZWRgIGFuZCBgXCJcImBcclxuICAgIGluZGV4Tm90ZXNbMF0gJiZcclxuICAgIGZpbHRlcmVkVHJhaWxzLmxlbmd0aFxyXG4gICkge1xyXG4gICAgZmlsdGVyZWRUcmFpbHMgPSBmaWx0ZXJlZFRyYWlscy5maWx0ZXIoKHRyYWlsKSA9PlxyXG4gICAgICBpbmRleE5vdGVzLmluY2x1ZGVzKHRyYWlsWzBdKVxyXG4gICAgKTtcclxuICAgIGlmIChmaWx0ZXJlZFRyYWlscy5sZW5ndGggPT09IDAgJiYgc2hvd0FsbFBhdGhzSWZOb25lVG9JbmRleE5vdGUpXHJcbiAgICAgIGZpbHRlcmVkVHJhaWxzID0gWy4uLmFsbFRyYWlsc107XHJcbiAgfVxyXG5cclxuICBjb25zdCBzb3J0ZWRUcmFpbHMgPSBmaWx0ZXJlZFRyYWlsc1xyXG4gICAgLmZpbHRlcigodHJhaWwpID0+IHRyYWlsLmxlbmd0aCA+IDApXHJcbiAgICAuc29ydCgoYSwgYikgPT4gYS5sZW5ndGggLSBiLmxlbmd0aCk7XHJcblxyXG4gIHJldHVybiBzb3J0ZWRUcmFpbHM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldE5leHROUHJldihwbHVnaW46IEJDUGx1Z2luLCBjdXJyTm9kZTogc3RyaW5nKSB7XHJcbiAgY29uc3QgeyBtYWluRyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgdXNlckhpZXJzIH0gPSBwbHVnaW4uc2V0dGluZ3M7XHJcbiAgaWYgKCFtYWluRykgcmV0dXJuIG51bGw7XHJcbiAgY29uc3QgbmV4dE5QcmV2OiBSZWFsTkltcGxpZWQgPSBibGFua1JlYWxOSW1wbGllZCgpO1xyXG5cclxuICBtYWluRy5mb3JFYWNoRWRnZShjdXJyTm9kZSwgKGssIGEsIHMsIHQpID0+IHtcclxuICAgIGNvbnN0IHsgZGlyLCBmaWVsZCwgaW1wbGllZCB9ID0gYSBhcyBFZGdlQXR0cjtcclxuICAgIGlmIChkaXIgIT09IFwibmV4dFwiICYmIGRpciAhPT0gXCJwcmV2XCIpIHJldHVybjtcclxuICAgIGlmIChzID09PSBjdXJyTm9kZSkge1xyXG4gICAgICBuZXh0TlByZXZbZGlyXS5yZWFscy5wdXNoKHsgZmllbGQsIHRvOiB0LCBpbXBsaWVkIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3Qgb3BwRmllbGQgPSBnZXRPcHBGaWVsZHModXNlckhpZXJzLCBmaWVsZCwgZGlyKVswXTtcclxuICAgICAgbmV4dE5QcmV2W2dldE9wcERpcihkaXIpXS5pbXBsaWVkcy5wdXNoKHtcclxuICAgICAgICBmaWVsZDogb3BwRmllbGQsXHJcbiAgICAgICAgdG86IHMsXHJcbiAgICAgICAgaW1wbGllZCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIG5leHROUHJldjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYWlsTGVuZ3RoKGN1cnI6IHN0cmluZywgb2Zmc2V0OiBudW1iZXIgPSAxKSB7XHJcbiAgY29uc3QgaW5kZXggPVxyXG4gICAgKFRSQUlMX0xFTkdUSFMuaW5kZXhPZihjdXJyKSArIG9mZnNldCkgJSBUUkFJTF9MRU5HVEhTLmxlbmd0aDtcclxuICByZXR1cm4gVFJBSUxfTEVOR1RIU1tpbmRleCA8IDAgPyBUUkFJTF9MRU5HVEhTLmxlbmd0aCArIGluZGV4IDogaW5kZXhdO1xyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZHJhd1RyYWlsKHBsdWdpbjogQkNQbHVnaW4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICB0cnkge1xyXG4gICAgY29uc3QgeyBzZXR0aW5ncywgZGIsIG1haW5HIH0gPSBwbHVnaW47XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNob3dCQ3MsXHJcbiAgICAgIG5vUGF0aE1lc3NhZ2UsXHJcbiAgICAgIHJlc3BlY3RSZWFkYWJsZUxpbmVMZW5ndGgsXHJcbiAgICAgIHNob3dUcmFpbCxcclxuICAgICAgc2hvd0dyaWQsXHJcbiAgICAgIHNob3dKdWdnbCxcclxuICAgICAgc2hvd1ByZXZOZXh0LFxyXG4gICAgICBzaG93QkNzSW5FZGl0TFBNb2RlLFxyXG4gICAgfSA9IHNldHRpbmdzO1xyXG5cclxuICAgIGRiLnN0YXJ0MkcoXCJkcmF3VHJhaWxcIik7XHJcblxyXG4gICAgY29uc3QgYWN0aXZlTURWaWV3ID0gYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XHJcbiAgICBjb25zdCBtb2RlID0gYWN0aXZlTURWaWV3Py5nZXRNb2RlKCk7XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICAhc2hvd0JDcyB8fFxyXG4gICAgICAhYWN0aXZlTURWaWV3IHx8XHJcbiAgICAgIChtb2RlICE9PSBcInByZXZpZXdcIiAmJiAhc2hvd0JDc0luRWRpdExQTW9kZSlcclxuICAgICkge1xyXG4gICAgICBhY3RpdmVNRFZpZXc/LmNvbnRhaW5lckVsLnF1ZXJ5U2VsZWN0b3IoXCIuQkMtdHJhaWxcIik/LnJlbW92ZSgpO1xyXG4gICAgICByZXR1cm4gZGIuZW5kMkcoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB7IGZpbGUgfSA9IGFjdGl2ZU1EVmlldztcclxuICAgIGNvbnN0IHsgZnJvbnRtYXR0ZXIgfSA9IGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKSA/PyB7fTtcclxuXHJcblxyXG4gICAgaWYgKGZyb250bWF0dGVyPy5bQkNfSElERV9UUkFJTF0gfHwgZnJvbnRtYXR0ZXI/LltcImthbmJhbi1wbHVnaW5cIl0pIHJldHVybiBkYi5lbmQyRygpO1xyXG5cclxuICAgIGNvbnN0IHsgYmFzZW5hbWUgfSA9IGZpbGU7XHJcbiAgICBpZiAoIW1haW5HLmhhc05vZGUoYmFzZW5hbWUpKSByZXR1cm4gZGIuZW5kMkcoKTtcclxuXHJcbiAgICBjb25zdCB2aWV3ID1cclxuICAgICAgbW9kZSA9PT0gXCJwcmV2aWV3XCJcclxuICAgICAgICA/IGFjdGl2ZU1EVmlldy5wcmV2aWV3TW9kZS5jb250YWluZXJFbC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgICAgXCJkaXYubWFya2Rvd24tcHJldmlldy12aWV3XCJcclxuICAgICAgICApXHJcbiAgICAgICAgOiBhY3RpdmVNRFZpZXcuY29udGVudEVsLnF1ZXJ5U2VsZWN0b3IoXCJkaXYubWFya2Rvd24tc291cmNlLXZpZXdcIik7XHJcblxyXG4gICAgYWN0aXZlTURWaWV3LmNvbnRhaW5lckVsXHJcbiAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKFwiLkJDLXRyYWlsXCIpXHJcbiAgICAgID8uZm9yRWFjaCgodHJhaWwpID0+IHRyYWlsLnJlbW92ZSgpKTtcclxuXHJcbiAgICBjb25zdCBjbG9zZWRVcCA9IGdldExpbWl0ZWRUcmFpbFN1YihwbHVnaW4pO1xyXG4gICAgY29uc3Qgc29ydGVkVHJhaWxzID0gZ2V0QnJlYWRjcnVtYnMoc2V0dGluZ3MsIGNsb3NlZFVwLCBmaWxlKTtcclxuICAgIGluZm8oeyBzb3J0ZWRUcmFpbHMgfSk7XHJcblxyXG4gICAgY29uc3Qge1xyXG4gICAgICBuZXh0OiB7IHJlYWxzOiByTmV4dCwgaW1wbGllZHM6IGlOZXh0IH0sXHJcbiAgICAgIHByZXY6IHsgcmVhbHM6IHJQcmV2LCBpbXBsaWVkczogaVByZXYgfSxcclxuICAgIH0gPSBnZXROZXh0TlByZXYocGx1Z2luLCBiYXNlbmFtZSk7XHJcblxyXG4gICAgLy8gUmVtb3ZlIGR1cGxpY2F0ZSBpbXBsaWVkXHJcbiAgICBjb25zdCBuZXh0ID0gWy4uLnJOZXh0XTtcclxuICAgIGlOZXh0LmZvckVhY2goKGkpID0+IHtcclxuICAgICAgaWYgKG5leHQuZmluZEluZGV4KChuKSA9PiBuLnRvID09PSBpLnRvKSA9PT0gLTEpXHJcbiAgICAgICAgbmV4dC5wdXNoKGkpXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHByZXYgPSBbLi4uclByZXZdO1xyXG4gICAgaVByZXYuZm9yRWFjaCgoaSkgPT4ge1xyXG4gICAgICBpZiAocHJldi5maW5kSW5kZXgoKG4pID0+IG4udG8gPT09IGkudG8pID09PSAtMSlcclxuICAgICAgICBwcmV2LnB1c2goaSlcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IG5vSXRlbXMgPSAhc29ydGVkVHJhaWxzLmxlbmd0aCAmJiAhbmV4dC5sZW5ndGggJiYgIXByZXYubGVuZ3RoO1xyXG5cclxuICAgIGlmIChub0l0ZW1zICYmIG5vUGF0aE1lc3NhZ2UgPT09IFwiXCIpIHJldHVybiBkYi5lbmQyRygpO1xyXG5cclxuICAgIGNvbnN0IHNlbGVjdG9yRm9yTWF4V2lkdGggPVxyXG4gICAgICBtb2RlID09PSBcInByZXZpZXdcIlxyXG4gICAgICAgID8gXCIubWFya2Rvd24tcHJldmlldy12aWV3LmlzLXJlYWRhYmxlLWxpbmUtd2lkdGggLm1hcmtkb3duLXByZXZpZXctc2l6ZXJcIlxyXG4gICAgICAgIDogXCJcIjtcclxuXHJcbiAgICBjb25zdCBlbEZvck1heFdpZHRoID1cclxuICAgICAgc2VsZWN0b3JGb3JNYXhXaWR0aCAhPT0gXCJcIlxyXG4gICAgICAgID8gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvckZvck1heFdpZHRoKVxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IG1heF93aWR0aCA9IGVsRm9yTWF4V2lkdGhcclxuICAgICAgPyBnZXRDb21wdXRlZFN0eWxlKGVsRm9yTWF4V2lkdGgpLmdldFByb3BlcnR5VmFsdWUoXCJtYXgtd2lkdGhcIilcclxuICAgICAgOiBcIjEwMCVcIjtcclxuXHJcbiAgICBjb25zdCB0cmFpbERpdiA9IGNyZWF0ZURpdih7XHJcbiAgICAgIGNsczogYEJDLXRyYWlsICR7cmVzcGVjdFJlYWRhYmxlTGluZUxlbmd0aFxyXG4gICAgICAgID8gXCJpcy1yZWFkYWJsZS1saW5lLXdpZHRoIG1hcmtkb3duLXByZXZpZXctc2l6ZXIgbWFya2Rvd24tcHJldmlldy1zZWN0aW9uXCJcclxuICAgICAgICA6IFwiXCJcclxuICAgICAgICB9YCxcclxuICAgICAgYXR0cjoge1xyXG4gICAgICAgIHN0eWxlOlxyXG4gICAgICAgICAgKG1vZGUgIT09IFwicHJldmlld1wiID8gYG1heC13aWR0aDogJHttYXhfd2lkdGh9O2AgOiBcIlwiKSArXHJcbiAgICAgICAgICBcIm1hcmdpbjogMCBhdXRvOyB3aWR0aDogMTAwJTtcIixcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIHBsdWdpbi52aXNpdGVkLnB1c2goW2ZpbGUucGF0aCwgdHJhaWxEaXZdKTtcclxuXHJcbiAgICBpZiAobW9kZSA9PT0gXCJwcmV2aWV3XCIpIHtcclxuICAgICAgdmlldy5xdWVyeVNlbGVjdG9yKFwiZGl2Lm1hcmtkb3duLXByZXZpZXctc2l6ZXJcIikuYmVmb3JlKHRyYWlsRGl2KTtcclxuXHJcbiAgICAgIC8vIGNvbnN0IGJhbm5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5vYnNpZGlhbi1iYW5uZXItd3JhcHBlcicpXHJcbiAgICAgIC8vIGlmIChiYW5uZXIpIHtcclxuICAgICAgLy8gICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICAvLyAgICAgY29uc3QgYmFubmVyTWFyZ2luID0gZ2V0Q29tcHV0ZWRTdHlsZShiYW5uZXIpLm1hcmdpblRvcFxyXG4gICAgICAvLyAgICAgY29uc29sZS5sb2coYmFubmVyTWFyZ2luKVxyXG4gICAgICAvLyAgICAgdHJhaWxEaXYuc3R5bGUubWFyZ2luVG9wID0gYmFubmVyTWFyZ2luO1xyXG4gICAgICAvLyAgICAgYmFubmVyLnN0eWxlLm1hcmdpblRvcCA9ICcwcHgnXHJcbiAgICAgIC8vICAgfSlcclxuICAgICAgLy8gfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgY21HdXR0ZXIgPSB2aWV3LnF1ZXJ5U2VsZWN0b3IoXCJkaXYuY20tZ3V0dGVyc1wiKTtcclxuICAgICAgaWYgKGNtR3V0dGVyKSB7XHJcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGd1dHRlckhlaWdodCA9IHRyYWlsRGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcclxuICAgICAgICAgIC8vIHNldCBwYWRkaW5nIHRvcCBvZiBndXR0ZXIgdG8gbWF0Y2ggaGVpZ2h0IG9mIHRyYWlsRGl2XHJcbiAgICAgICAgICBjbUd1dHRlci5zdHlsZS5wYWRkaW5nVG9wID0gYCR7Z3V0dGVySGVpZ2h0ICsgNH1weGA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGNvbnN0IGJhbm5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5vYnNpZGlhbi1iYW5uZXItc3BhY2VyJylcclxuICAgICAgLy8gaWYgKGJhbm5lcikge1xyXG4gICAgICAvLyAgIGNvbnNvbGUubG9nKHsgYmFubmVyIH0pXHJcbiAgICAgIC8vICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgLy8gICAgIGNvbnN0IGJhbm5lck1hcmdpbiA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoYmFubmVyKS5oZWlnaHQpXHJcbiAgICAgIC8vICAgICBjb25zb2xlLmxvZyhiYW5uZXJNYXJnaW4pXHJcbiAgICAgIC8vICAgICB0cmFpbERpdi5zdHlsZS5tYXJnaW5Ub3AgPSBgJHtiYW5uZXJNYXJnaW4gKyAxMH1weGA7XHJcbiAgICAgIC8vICAgICBiYW5uZXIuc3R5bGUuaGVpZ2h0ID0gJzBweCdcclxuICAgICAgLy8gICB9KVxyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICB2aWV3LnF1ZXJ5U2VsZWN0b3IoXCJkaXYuY20tY29udGVudENvbnRhaW5lclwiKT8uYmVmb3JlKHRyYWlsRGl2KVxyXG5cclxuICAgIH1cclxuXHJcblxyXG4gICAgdHJhaWxEaXYuZW1wdHkoKTtcclxuICAgIGlmIChzZXR0aW5ncy5pbmRleE5vdGVzLmluY2x1ZGVzKGJhc2VuYW1lKSkge1xyXG4gICAgICB0cmFpbERpdi5pbm5lclRleHQgPSBcIkluZGV4IE5vdGVcIjtcclxuICAgICAgcmV0dXJuIGRiLmVuZDJHKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG5vSXRlbXMpIHtcclxuICAgICAgdHJhaWxEaXYuaW5uZXJUZXh0ID0gbm9QYXRoTWVzc2FnZTtcclxuICAgICAgcmV0dXJuIGRiLmVuZDJHKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0UHJvcHMgPSB7XHJcbiAgICAgIHRhcmdldDogdHJhaWxEaXYsXHJcbiAgICAgIHByb3BzOiB7IHNvcnRlZFRyYWlscywgcGx1Z2luIH0sXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChzaG93VHJhaWwgJiYgc29ydGVkVHJhaWxzLmxlbmd0aCkgbmV3IFRyYWlsUGF0aCh0YXJnZXRQcm9wcyk7XHJcbiAgICBpZiAoc2hvd0dyaWQgJiYgc29ydGVkVHJhaWxzLmxlbmd0aCkgbmV3IFRyYWlsR3JpZCh0YXJnZXRQcm9wcyk7XHJcbiAgICBpZiAoc2hvd1ByZXZOZXh0ICYmIChuZXh0Lmxlbmd0aCB8fCBwcmV2Lmxlbmd0aCkpIHtcclxuICAgICAgbmV3IE5leHRQcmV2KHtcclxuICAgICAgICB0YXJnZXQ6IHRyYWlsRGl2LFxyXG4gICAgICAgIHByb3BzOiB7IHBsdWdpbiwgbmV4dCwgcHJldiB9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChzaG93SnVnZ2wgJiYgc29ydGVkVHJhaWxzLmxlbmd0aCkge1xyXG4gICAgICBjcmVhdGVKdWdnbFRyYWlsKFxyXG4gICAgICAgIHBsdWdpbixcclxuICAgICAgICB0cmFpbERpdixcclxuICAgICAgICBzb3J0ZWRUcmFpbHMsXHJcbiAgICAgICAgYmFzZW5hbWUsXHJcbiAgICAgICAgSlVHR0xfVFJBSUxfREVGQVVMVFNcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGRiLmVuZDJHKCk7XHJcbiAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICBlcnJvcihlcnIpO1xyXG4gICAgcGx1Z2luLmRiLmVuZDJHKCk7XHJcbiAgfVxyXG59XHJcbiIsIG51bGwsICI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG4gIGltcG9ydCB7IG9wZW5PclN3aXRjaCwgaG92ZXJQcmV2aWV3IH0gZnJvbSBcIm9ic2lkaWFuLWNvbW11bml0eS1saWJcIjtcclxuICBpbXBvcnQgdHlwZSB7IFNxdWFyZUl0ZW0gfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG4gIGltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbiAgaW1wb3J0IHsgbGlua0NsYXNzIH0gZnJvbSBcIi4uL1V0aWxzL09ic2lkaWFuVXRpbHNcIjtcclxuXHJcbiAgZXhwb3J0IGxldCBwbHVnaW46IEJDUGx1Z2luO1xyXG4gIGV4cG9ydCBsZXQgbmV4dDogU3F1YXJlSXRlbVtdO1xyXG4gIGV4cG9ydCBsZXQgcHJldjogU3F1YXJlSXRlbVtdO1xyXG5cclxuICBjb25zdCBhY3RpdmVMZWFmVmlldyA9IGFwcC53b3Jrc3BhY2UuYWN0aXZlTGVhZi52aWV3O1xyXG48L3NjcmlwdD5cclxuXHJcbjxkaXYgY2xhc3M9XCJCQy1OZXh0UHJldi1Db250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwiQkMtcHJldnNcIj5cclxuICAgIDxzcGFuPlxyXG4gICAgICB7I2VhY2ggcHJldiBhcyB7IGZpZWxkLCByZWFsLCB0byB9fVxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwie2xpbmtDbGFzcyh0bywgcmVhbCl9IEJDLXByZXZcIlxyXG4gICAgICAgICAgb246Y2xpY2s9e2FzeW5jIChlKSA9PiBhd2FpdCBvcGVuT3JTd2l0Y2godG8sIGUpfVxyXG4gICAgICAgICAgb246bW91c2VvdmVyPXsoZSkgPT4gaG92ZXJQcmV2aWV3KGUsIGFjdGl2ZUxlYWZWaWV3LCB0byl9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+XHJcbiAgICAgICAgICB7dG99XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIHsvZWFjaH1cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiQkMtbmV4dHNcIj5cclxuICAgIDxzcGFuPlxyXG4gICAgICB7I2VhY2ggbmV4dCBhcyB7IGZpZWxkLCByZWFsLCB0byB9fVxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwie2xpbmtDbGFzcyh0bywgcmVhbCl9IEJDLW5leHRcIlxyXG4gICAgICAgICAgb246Y2xpY2s9e2FzeW5jIChlKSA9PiBhd2FpdCBvcGVuT3JTd2l0Y2godG8sIGUpfVxyXG4gICAgICAgICAgb246bW91c2VvdmVyPXsoZSkgPT4gaG92ZXJQcmV2aWV3KGUsIGFjdGl2ZUxlYWZWaWV3LCB0byl9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3RvfSA8c3Ryb25nPntmaWVsZH08L3N0cm9uZz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgey9lYWNofVxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxzdHlsZT5cclxuICAuQkMtbmV4dHMgZGl2IHtcclxuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xyXG4gIH1cclxuXHJcbiAgLkJDLW5leHRzIHtcclxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tYmFja2dyb3VuZC1tb2RpZmllci1ib3JkZXIpO1xyXG4gIH1cclxuICAuQkMtcHJldnMge1xyXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tYmFja2dyb3VuZC1tb2RpZmllci1ib3JkZXIpO1xyXG4gIH1cclxuXHJcbiAgLkJDLU5leHRQcmV2LUNvbnRhaW5lciB7XHJcbiAgICBkaXNwbGF5OiBncmlkO1xyXG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xyXG4gIH1cclxuPC9zdHlsZT5cclxuIiwgbnVsbCwgIjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbiAgaW1wb3J0IHtcclxuICAgIGhvdmVyUHJldmlldyxcclxuICAgIG9wZW5PclN3aXRjaCxcclxuICB9IGZyb20gXCJvYnNpZGlhbi1jb21tdW5pdHktbGliL2Rpc3QvdXRpbHNcIjtcclxuICBpbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG4gIGltcG9ydCB7XHJcbiAgICBkcm9wRGVuZHJvbixcclxuICAgIHBhZEFycmF5LFxyXG4gICAgcnVucyxcclxuICAgIHRyYW5zcG9zZSxcclxuICB9IGZyb20gXCIuLi9VdGlscy9nZW5lcmFsVXRpbHNcIjtcclxuICBpbXBvcnQgeyBnZXRBbHQsIGxpbmtDbGFzcyB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG4gIGV4cG9ydCBsZXQgc29ydGVkVHJhaWxzOiBzdHJpbmdbXVtdO1xyXG4gIGV4cG9ydCBsZXQgcGx1Z2luOiBCQ1BsdWdpbjtcclxuXHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgZ3JpZERlZmF1bHREZXB0aCB9ID0gc2V0dGluZ3M7XHJcblxyXG4gIGNvbnN0IGFjdGl2ZUxlYWZWaWV3ID0gYXBwLndvcmtzcGFjZS5hY3RpdmVMZWFmLnZpZXc7XHJcbiAgY29uc3QgbWF4TGVuZ3RoID0gc29ydGVkVHJhaWxzLmxhc3QoKS5sZW5ndGg7XHJcblxyXG4gIC8vIFVzZSB0aGUgdXNlciBzZXR0aW5nIHRvIGxpbWl0IHRoZSBpbml0aWFsIGRlcHRoXHJcbiAgbGV0IGRlcHRoID0gTWF0aC5taW4obWF4TGVuZ3RoLCBncmlkRGVmYXVsdERlcHRoKTtcclxuXHJcbiAgbGV0IHNsaWNlZFRyYWlscyA9IHNvcnRlZFRyYWlscztcclxuICAkOiB7XHJcbiAgICBzbGljZWRUcmFpbHMgPSBbXTtcclxuICAgIHNvcnRlZFRyYWlscy5mb3JFYWNoKCh0cmFpbCkgPT4ge1xyXG4gICAgICBjb25zdCBzbGljZSA9IHRyYWlsLnNsaWNlKG1heExlbmd0aCAtIGRlcHRoKTtcclxuICAgICAgaWYgKHNsaWNlLmxlbmd0aCkgc2xpY2VkVHJhaWxzLnB1c2goc2xpY2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAkOiBwYWRkZWRUcmFpbHMgPSBzbGljZWRUcmFpbHMubWFwKCh0cmFpbCkgPT4gcGFkQXJyYXkodHJhaWwsIGRlcHRoKSk7XHJcblxyXG4gICQ6IHRyYW5zcG9zZWRUcmFpbHMgPSB0cmFuc3Bvc2UocGFkZGVkVHJhaWxzKTtcclxuICAkOiBhbGxSdW5zID0gdHJhbnNwb3NlZFRyYWlscy5tYXAocnVucyk7XHJcbjwvc2NyaXB0PlxyXG5cclxuPGRpdiBjbGFzcz1cIkJDLWdyaWQtd3JhcHBlclwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiQkMtdHJhaWwtZ3JpZFwiXHJcbiAgICBzdHlsZT1cIlxyXG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHsnMWZyICcucmVwZWF0KHRyYW5zcG9zZWRUcmFpbHMubGVuZ3RoKX07XHJcbiAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogeycxZnIgJy5yZXBlYXQoc2xpY2VkVHJhaWxzLmxlbmd0aCl9XCJcclxuICA+XHJcbiAgICB7I2VhY2ggdHJhbnNwb3NlZFRyYWlscyBhcyBjb2wsIGl9XHJcbiAgICAgIHsjZWFjaCBhbGxSdW5zW2ldIGFzIHsgdmFsdWUsIGZpcnN0LCBsYXN0IH19XHJcbiAgICAgICAgPCEtLSBzdmVsdGUtaWdub3JlIGExMXktbW91c2UtZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cIkJDLXRyYWlsLWdyaWQtaXRlbSB7dmFsdWUgPT09ICcnID8gJ0JDLWZpbGxlcicgOiAnJ31cIlxyXG4gICAgICAgICAgc3R5bGU9XCJcclxuICAgICAgICAgICAgICBncmlkLWFyZWE6IHtmaXJzdCArIDF9IC8ge2kgKyAxfSAvXHJcbiAgICAgICAgICAgICAgICAgIHtsYXN0ICsgMn0gLyB7aSArIDJ9O1wiXHJcbiAgICAgICAgICBvbjpjbGljaz17YXN5bmMgKGUpID0+IGF3YWl0IG9wZW5PclN3aXRjaCh2YWx1ZSwgZSl9XHJcbiAgICAgICAgICBvbjptb3VzZW92ZXI9eyhlKSA9PiBob3ZlclByZXZpZXcoZSwgYWN0aXZlTGVhZlZpZXcsIHZhbHVlKX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPXtsaW5rQ2xhc3ModmFsdWUpfT5cclxuICAgICAgICAgICAge2dldEFsdCh2YWx1ZSwgcGx1Z2luKSA/PyBkcm9wRGVuZHJvbih2YWx1ZSwgc2V0dGluZ3MpfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIHsvZWFjaH1cclxuICAgIHsvZWFjaH1cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cIkJDLWdyaWQtb3B0aW9uc1wiPlxyXG4gICAgPHNwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiQkMtZ3JpZC1vcHRpb25zLWljb25cIj5cdTI2OTlcdUZFMEY8L3NwYW4+XHJcblxyXG4gICAgICA8c3BhbiBjbGFzcz1cIkJDLWdyaWQtb3B0aW9ucy1vcHRpb25zXCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJCQy1kZXB0aC1idXR0b25cIlxyXG4gICAgICAgICAgZGlzYWJsZWQ9e2RlcHRoID09PSAxfVxyXG4gICAgICAgICAgb246Y2xpY2s9eygpID0+IChkZXB0aCAtPSAxKX0+LTwvYnV0dG9uXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidHJlZS1pdGVtLWZsYWlyXCI+e2RlcHRofTwvc3Bhbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cIkJDLWRlcHRoLWJ1dHRvblwiXHJcbiAgICAgICAgICBkaXNhYmxlZD17ZGVwdGggPT09IG1heExlbmd0aH1cclxuICAgICAgICAgIG9uOmNsaWNrPXsoKSA9PiAoZGVwdGggKz0gMSl9Pis8L2J1dHRvblxyXG4gICAgICAgID5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxzdHlsZT5cclxuICBkaXYuQkMtZ3JpZC13cmFwcGVyIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB9XHJcblxyXG4gIGRpdi5CQy10cmFpbC1ncmlkIHtcclxuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWJhY2tncm91bmQtbW9kaWZpZXItYm9yZGVyKTtcclxuICAgIGRpc3BsYXk6IGdyaWQ7XHJcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcclxuICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgaGVpZ2h0OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgLkJDLWdyaWQtb3B0aW9ucyB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDBweDtcclxuICAgIHJpZ2h0OiAwcHg7XHJcbiAgICBoZWlnaHQ6IDM1cHg7XHJcbiAgICB3aWR0aDogMzJweDtcclxuXHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1iYWNrZ3JvdW5kLW1vZGlmaWVyLWJvcmRlcik7XHJcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xyXG5cclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHJcbiAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzO1xyXG4gICAgb3ZlcmZsb3ctd3JhcDogbm9ybWFsO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcbiAgZGl2LkJDLWdyaWQtb3B0aW9uczpob3ZlciB7XHJcbiAgICBwYWRkaW5nOiA1cHg7XHJcbiAgICB3aWR0aDogZml0LWNvbnRlbnQ7XHJcbiAgfVxyXG4gIGRpdi5CQy1ncmlkLW9wdGlvbnM6aG92ZXIgLkJDLWdyaWQtb3B0aW9ucy1pY29uIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG5cclxuICAuQkMtZ3JpZC1vcHRpb25zLW9wdGlvbnMge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcbiAgZGl2LkJDLWdyaWQtb3B0aW9uczpob3ZlciAuQkMtZ3JpZC1vcHRpb25zLW9wdGlvbnMge1xyXG4gICAgZGlzcGxheTogdW5zZXQ7XHJcbiAgfVxyXG5cclxuICAuQkMtZGVwdGgtYnV0dG9uIHtcclxuICAgIHBhZGRpbmc6IDNweCA1cHg7XHJcbiAgfVxyXG5cclxuICBkaXYuQkMtdHJhaWwtZ3JpZC1pdGVtIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYmFja2dyb3VuZC1tb2RpZmllci1ib3JkZXIpO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgcGFkZGluZzogMnB4O1xyXG4gICAgZm9udC1zaXplOiBzbWFsbGVyO1xyXG4gIH1cclxuXHJcbiAgZGl2LkJDLXRyYWlsLWdyaWQtaXRlbS5CQy1maWxsZXIge1xyXG4gICAgb3BhY2l0eTogMC43O1xyXG4gIH1cclxuXHJcbiAgLyogLmRvdCB7XHJcbiAgICBoZWlnaHQ6IDVweDtcclxuICAgIHdpZHRoOiA1cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgfSAqL1xyXG48L3N0eWxlPlxyXG4iLCBudWxsLCAiPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuICBpbXBvcnQge1xyXG4gICAgaG92ZXJQcmV2aWV3LFxyXG4gICAgb3Blbk9yU3dpdGNoLFxyXG4gIH0gZnJvbSBcIm9ic2lkaWFuLWNvbW11bml0eS1saWIvZGlzdC91dGlsc1wiO1xyXG4gIGltcG9ydCB7IGdldFRyYWlsTGVuZ3RoIH0gZnJvbSBcIi4uL1ZpZXdzL1RyYWlsVmlld1wiO1xyXG4gIGltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbiAgaW1wb3J0IHsgZHJvcERlbmRyb24gfSBmcm9tIFwiLi4vVXRpbHMvZ2VuZXJhbFV0aWxzXCI7XHJcbiAgaW1wb3J0IHsgZ2V0QWx0IH0gZnJvbSBcIi4uL1V0aWxzL09ic2lkaWFuVXRpbHNcIjtcclxuXHJcbiAgZXhwb3J0IGxldCBzb3J0ZWRUcmFpbHM6IHN0cmluZ1tdW107XHJcbiAgZXhwb3J0IGxldCBwbHVnaW46IEJDUGx1Z2luO1xyXG5cclxuICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW47XHJcbiAgY29uc3QgeyB2aWV3IH0gPSBhcHAud29ya3NwYWNlLmFjdGl2ZUxlYWY7XHJcbiAgbGV0IHsgc2hvd0FsbCwgbm9QYXRoTWVzc2FnZSwgdHJhaWxTZXBlcmF0b3IgfSA9IHNldHRpbmdzO1xyXG5cclxuICBsZXQgdHJhaWxfbGVuZ3RoID0gc2hvd0FsbDtcclxuXHJcbiAgJDogdHJhaWxzVG9TaG93ID1cclxuICAgIHRyYWlsX2xlbmd0aCA9PSBcIkFsbFwiXHJcbiAgICAgID8gc29ydGVkVHJhaWxzXHJcbiAgICAgIDogdHJhaWxfbGVuZ3RoID09IFwiU2hvcnRlc3RcIlxyXG4gICAgICA/IFtzb3J0ZWRUcmFpbHNbMF1dXHJcbiAgICAgIDogW3NvcnRlZFRyYWlscy5sYXN0KCldO1xyXG48L3NjcmlwdD5cclxuXHJcbjxzcGFuIGNsYXNzPVwiQkMtdHJhaWwtcGF0aC1jb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwidHJhaWxzLWRpdlwiPlxyXG4gICAgeyNlYWNoIHRyYWlsc1RvU2hvdyBhcyB0cmFpbH1cclxuICAgICAgPGRpdj5cclxuICAgICAgICB7I2lmICF0cmFpbC5sZW5ndGh9XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIkJDLWVtcHR5LXRyYWlsXCI+e25vUGF0aE1lc3NhZ2V9PC9zcGFuPlxyXG4gICAgICAgIHs6ZWxzZX1cclxuICAgICAgICAgIHsjZWFjaCB0cmFpbCBhcyBjcnVtYiwgaX1cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cImludGVybmFsLWxpbmsgQkMtTGlua1wiXHJcbiAgICAgICAgICAgICAgb246Y2xpY2s9e2FzeW5jIChlKSA9PiBhd2FpdCBvcGVuT3JTd2l0Y2goY3J1bWIsIGUpfVxyXG4gICAgICAgICAgICAgIG9uOm1vdXNlb3Zlcj17KGUpID0+IGhvdmVyUHJldmlldyhlLCB2aWV3LCBjcnVtYil9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7Z2V0QWx0KGNydW1iLCBwbHVnaW4pID8/IGRyb3BEZW5kcm9uKGNydW1iLCBzZXR0aW5ncyl9XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgeyNpZiBpIDwgdHJhaWwubGVuZ3RoIC0gMX1cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIkJDLXRyYWlsLXNlcFwiPntcIiBcIiArIHRyYWlsU2VwZXJhdG9yICsgXCIgXCJ9PC9zcGFuPlxyXG4gICAgICAgICAgICB7L2lmfVxyXG4gICAgICAgICAgey9lYWNofVxyXG4gICAgICAgIHsvaWZ9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgey9lYWNofVxyXG4gIDwvZGl2PlxyXG5cclxuICB7I2lmIHNvcnRlZFRyYWlscy5sZW5ndGggPiAxfVxyXG4gICAgPGRpdj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiYnV0dG9uLWRpdlwiXHJcbiAgICAgICAgb246Y2xpY2s9eygpID0+ICh0cmFpbF9sZW5ndGggPSBnZXRUcmFpbExlbmd0aCh0cmFpbF9sZW5ndGgpKX1cclxuICAgICAgICBvbjpjb250ZXh0bWVudT17KGUpID0+IHtcclxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIHRyYWlsX2xlbmd0aCA9IGdldFRyYWlsTGVuZ3RoKHRyYWlsX2xlbmd0aCwgLTEpO1xyXG4gICAgICAgIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dHJhaWxfbGVuZ3RofVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIHsvaWZ9XHJcbjwvc3Bhbj5cclxuXHJcbjxzdHlsZT5cclxuICBzcGFuLkJDLXRyYWlsLXBhdGgtY29udGFpbmVyIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgfVxyXG48L3N0eWxlPlxyXG4iLCAiaW1wb3J0IHR5cGUgeyBFZGdlRGVmaW5pdGlvbiwgTm9kZVNpbmd1bGFyIH0gZnJvbSBcImN5dG9zY2FwZVwiO1xyXG5pbXBvcnQgdHlwZSB7IE11bHRpR3JhcGggfSBmcm9tIFwiZ3JhcGhvbG9neVwiO1xyXG5pbXBvcnQge1xyXG4gIERhdGFTdG9yZUV2ZW50cyxcclxuICBnZXRQbHVnaW4sXHJcbiAgSUNvcmVEYXRhU3RvcmUsXHJcbiAgSUp1Z2dsLFxyXG4gIElKdWdnbFNldHRpbmdzLFxyXG4gIElKdWdnbFN0b3JlcyxcclxuICBub2RlRGFuZ2xpbmcsXHJcbiAgbm9kZUZyb21GaWxlLFxyXG4gIFZpeklkLFxyXG59IGZyb20gXCJqdWdnbC1hcGlcIjtcclxuaW1wb3J0IHsgaW5mbywgd2FybiB9IGZyb20gXCJsb2dsZXZlbFwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50cywgTWV0YWRhdGFDYWNoZSwgVEZpbGUgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHsgY3JlYXRlSW5kZXggfSBmcm9tIFwiLi4vQ29tbWFuZHMvQ3JlYXRlSW5kZXhcIjtcclxuaW1wb3J0IEp1Z2dsQnV0dG9uIGZyb20gXCIuLi9Db21wb25lbnRzL0p1Z2dsQnV0dG9uLnN2ZWx0ZVwiO1xyXG5pbXBvcnQgSnVnZ2xEZXB0aCBmcm9tIFwiLi4vQ29tcG9uZW50cy9KdWdnbERlcHRoLnN2ZWx0ZVwiO1xyXG5pbXBvcnQgeyBKVUdHTF9DQl9ERUZBVUxUUyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHtcclxuICBkZnNBbGxQYXRocyxcclxuICBnZXRSZWZsZXhpdmVDbG9zdXJlLFxyXG4gIGdldFN1YkluRGlycyxcclxufSBmcm9tIFwiLi4vVXRpbHMvZ3JhcGhVdGlsc1wiO1xyXG5jb25zdCBTVE9SRV9JRCA9IFwiY29yZVwiO1xyXG5cclxuY2xhc3MgQkNTdG9yZUV2ZW50cyBleHRlbmRzIEV2ZW50cyBpbXBsZW1lbnRzIERhdGFTdG9yZUV2ZW50cyB7IH1cclxuXHJcbmV4cG9ydCBjbGFzcyBCQ1N0b3JlIGV4dGVuZHMgQ29tcG9uZW50IGltcGxlbWVudHMgSUNvcmVEYXRhU3RvcmUge1xyXG4gIGdyYXBoOiBNdWx0aUdyYXBoO1xyXG4gIGNhY2hlOiBNZXRhZGF0YUNhY2hlO1xyXG4gIGRlcHRoTWFwOiB7IFt2YWx1ZTogc3RyaW5nXTogbnVtYmVyIH07XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBncmFwaDogTXVsdGlHcmFwaCxcclxuICAgIG1ldGFkYXRhOiBNZXRhZGF0YUNhY2hlLFxyXG4gICAgZGVwdGhNYXA/OiB7IFt2YWx1ZTogc3RyaW5nXTogbnVtYmVyIH1cclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmdyYXBoID0gZ3JhcGg7XHJcbiAgICB0aGlzLmNhY2hlID0gbWV0YWRhdGE7XHJcbiAgICB0aGlzLmRlcHRoTWFwID0gZGVwdGhNYXA7XHJcbiAgfVxyXG5cclxuICBhc1N0cmluZyhub2RlOiBOb2RlU2luZ3VsYXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgaWQgPSBWaXpJZC5mcm9tTm9kZShub2RlKTtcclxuICAgIHJldHVybiBpZC5pZC5zbGljZSgwLCAtMyk7XHJcbiAgfVxyXG5cclxuICBnZXRGaWxlKG5vZGVJZDogVml6SWQpOiBURmlsZSB7XHJcbiAgICByZXR1cm4gdGhpcy5jYWNoZS5nZXRGaXJzdExpbmtwYXRoRGVzdChub2RlSWQuaWQsIFwiXCIpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY29ubmVjdE5vZGVzKFxyXG4gICAgYWxsTm9kZXM6IGN5dG9zY2FwZS5Ob2RlQ29sbGVjdGlvbixcclxuICAgIG5ld05vZGVzOiBjeXRvc2NhcGUuTm9kZUNvbGxlY3Rpb24sXHJcbiAgICBncmFwaDogSUp1Z2dsXHJcbiAgKTogUHJvbWlzZTxjeXRvc2NhcGUuRWRnZURlZmluaXRpb25bXT4ge1xyXG4gICAgY29uc3QgZWRnZXM6IEVkZ2VEZWZpbml0aW9uW10gPSBbXTtcclxuICAgIGNvbnN0IG5vZGVzTGlzdFMgPSBuZXcgU2V0KFxyXG4gICAgICBhbGxOb2Rlcy5tYXAoKG5vZGUpID0+IHRoaXMuYXNTdHJpbmcobm9kZSkpLmZpbHRlcigocykgPT4gcylcclxuICAgICk7XHJcbiAgICBuZXdOb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmFzU3RyaW5nKG5vZGUpO1xyXG4gICAgICBpZiAoIXRoaXMuZ3JhcGguaGFzTm9kZShuYW1lKSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmdyYXBoLmZvckVhY2hPdXRFZGdlKFxyXG4gICAgICAgIHRoaXMuYXNTdHJpbmcobm9kZSksXHJcbiAgICAgICAgKGtleSwgYXR0ciwgc291cmNlLCB0YXJnZXQpID0+IHtcclxuICAgICAgICAgIGlmIChub2Rlc0xpc3RTLmhhcyh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgIGVkZ2VzLnB1c2goe1xyXG4gICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIGlkOiBgQkM6JHtzb3VyY2V9LT4ke3RhcmdldH1gLFxyXG4gICAgICAgICAgICAgICAgc291cmNlOiBWaXpJZC50b0lkKHNvdXJjZSwgU1RPUkVfSUQpICsgXCIubWRcIixcclxuICAgICAgICAgICAgICAgIHRhcmdldDogVml6SWQudG9JZCh0YXJnZXQsIFNUT1JFX0lEKSArIFwiLm1kXCIsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBhdHRyLmZpZWxkLFxyXG4gICAgICAgICAgICAgICAgZGlyOiBhdHRyLmRpcixcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGNsYXNzZXM6IGB0eXBlLSR7YXR0ci5maWVsZH0gZGlyLSR7YXR0ci5kaXJ9IGJyZWFkY3J1bWJzJGAsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShlZGdlcyk7XHJcbiAgfVxyXG5cclxuICBnZXRFdmVudHModmlldzogSUp1Z2dsKTogRGF0YVN0b3JlRXZlbnRzIHtcclxuICAgIHJldHVybiBuZXcgQkNTdG9yZUV2ZW50cygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0TmVpZ2hib3VyaG9vZChcclxuICAgIG5vZGVJZHM6IFZpeklkW10sXHJcbiAgICB2aWV3OiBJSnVnZ2xcclxuICApOiBQcm9taXNlPGN5dG9zY2FwZS5Ob2RlRGVmaW5pdGlvbltdPiB7XHJcbiAgICBjb25zdCBuZXdfbm9kZXMgPSBbXTtcclxuICAgIGZvciAoY29uc3Qgbm9kZUlkIG9mIG5vZGVJZHMpIHtcclxuICAgICAgY29uc3QgbmFtZSA9IG5vZGVJZC5pZC5zbGljZSgwLCAtMyk7XHJcbiAgICAgIGlmICghdGhpcy5ncmFwaC5oYXNOb2RlKG5hbWUpKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChjb25zdCBuZXdfbm9kZSBvZiB0aGlzLmdyYXBoLm5laWdoYm9ycyhuYW1lKSkge1xyXG4gICAgICAgIG5ld19ub2Rlcy5wdXNoKFxyXG4gICAgICAgICAgYXdhaXQgdGhpcy5nZXQobmV3IFZpeklkKG5ld19ub2RlICsgXCIubWRcIiwgU1RPUkVfSUQpLCB2aWV3KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBuZXdfbm9kZXM7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoTm9kZShpZDogVml6SWQsIHZpZXc6IElKdWdnbCk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIHN0b3JlSWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBTVE9SRV9JRDtcclxuICB9XHJcblxyXG4gIGdldChub2RlSWQ6IFZpeklkLCB2aWV3OiBJSnVnZ2wpOiBQcm9taXNlPGN5dG9zY2FwZS5Ob2RlRGVmaW5pdGlvbj4ge1xyXG4gICAgY29uc3QgZmlsZSA9IHRoaXMuZ2V0RmlsZShub2RlSWQpO1xyXG4gICAgbGV0IGRlcHRoID0gMDtcclxuICAgIGlmICh0aGlzLmRlcHRoTWFwICYmIG5vZGVJZC5pZCBpbiB0aGlzLmRlcHRoTWFwKSB7XHJcbiAgICAgIGRlcHRoID0gdGhpcy5kZXB0aE1hcFtub2RlSWQuaWRdO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpbGUgPT09IG51bGwpIHtcclxuICAgICAgY29uc3QgZGFuZ2xpbmcgPSBub2RlRGFuZ2xpbmcobm9kZUlkLmlkKTtcclxuICAgICAgZGFuZ2xpbmcuZGF0YS5kZXB0aCA9IGRlcHRoO1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGRhbmdsaW5nKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNhY2hlID0gdGhpcy5jYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XHJcbiAgICBpZiAoY2FjaGUgPT09IG51bGwpIHtcclxuICAgICAgaW5mbyhcInJldHVybmluZyBlbXB0eSBjYWNoZVwiLCBub2RlSWQpO1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5vZGVEYW5nbGluZyhub2RlSWQuaWQpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbm9kZUZyb21GaWxlKGZpbGUsIHZpZXcucGx1Z2luLCB2aWV3LnNldHRpbmdzLCBub2RlSWQudG9JZCgpKS50aGVuKFxyXG4gICAgICAobm9kZSkgPT4ge1xyXG4gICAgICAgIG5vZGUuZGF0YS5kZXB0aCA9IGRlcHRoO1xyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUp1Z2dsKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgdGFyZ2V0OiBIVE1MRWxlbWVudCxcclxuICBpbml0aWFsTm9kZXM6IHN0cmluZ1tdLFxyXG4gIGFyZ3M6IElKdWdnbFNldHRpbmdzLFxyXG4gIGRlcHRoTWFwOiB7IFt2YWx1ZTogc3RyaW5nXTogbnVtYmVyIH0gPSBudWxsXHJcbik6IElKdWdnbCB7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IGp1Z2dsUGx1Z2luID0gZ2V0UGx1Z2luKGFwcCk7XHJcbiAgICBpZiAoIWp1Z2dsUGx1Z2luKSB7XHJcbiAgICAgIC8vIFRPRE86IEVycm9yIGhhbmRsaW5nXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGtleSBpbiBKVUdHTF9DQl9ERUZBVUxUUykge1xyXG4gICAgICBpZiAoa2V5IGluIGFyZ3MgJiYgYXJnc1trZXldID09PSB1bmRlZmluZWQpXHJcbiAgICAgICAgYXJnc1trZXldID0gSlVHR0xfQ0JfREVGQVVMVFNba2V5XTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBiY1N0b3JlID0gbmV3IEJDU3RvcmUoXHJcbiAgICAgIHBsdWdpbi5tYWluRyxcclxuICAgICAgYXBwLm1ldGFkYXRhQ2FjaGUsXHJcbiAgICAgIGRlcHRoTWFwXHJcbiAgICApO1xyXG4gICAgY29uc3Qgc3RvcmVzOiBJSnVnZ2xTdG9yZXMgPSB7XHJcbiAgICAgIGNvcmVTdG9yZTogYmNTdG9yZSxcclxuICAgICAgZGF0YVN0b3JlczogW2JjU3RvcmVdLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBqdWdnbCA9IGp1Z2dsUGx1Z2luLmNyZWF0ZUp1Z2dsKHRhcmdldCwgYXJncywgc3RvcmVzLCBpbml0aWFsTm9kZXMpO1xyXG4gICAgcGx1Z2luLmFkZENoaWxkKGp1Z2dsKTtcclxuICAgIGluZm8oeyBqdWdnbCB9KTtcclxuICAgIHJldHVybiBqdWdnbDtcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgd2Fybih7IGVycm9yIH0pO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB6b29tVG9Tb3VyY2UoanVnZ2w6IElKdWdnbCwgc291cmNlOiBzdHJpbmcpIHtcclxuICBpZiAoIWp1Z2dsKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGp1Z2dsLm9uKFwidml6UmVhZHlcIiwgKHZpeikgPT4ge1xyXG4gICAgLy8gQWZ0ZXIgbGF5b3V0IGlzIGRvbmUsIGNlbnRlciBvbiBzb3VyY2Ugbm9kZVxyXG4gICAgdml6Lm9uZShcImxheW91dHN0b3BcIiwgKGUpID0+IHtcclxuICAgICAgY29uc3Qgdml6ID0gZS5jeTtcclxuICAgICAgY29uc3Qgbm9kZSA9IHZpei4kaWQoVml6SWQudG9JZChzb3VyY2UgKyBcIi5tZFwiLCBTVE9SRV9JRCkpO1xyXG4gICAgICB2aXouYW5pbWF0ZSh7XHJcbiAgICAgICAgY2VudGVyOiB7XHJcbiAgICAgICAgICBlbGVzOiBub2RlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZHVyYXRpb246IDI1MCxcclxuICAgICAgICBxdWV1ZTogZmFsc2UsXHJcbiAgICAgICAgem9vbTogMS43LFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiB6b29tVG9HcmFwaChqdWdnbDogSUp1Z2dsKSB7XHJcbiAganVnZ2wub24oXCJ2aXpSZWFkeVwiLCAodml6KSA9PiB7XHJcbiAgICB2aXouZml0KHZpei5ub2RlcygpKTtcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlRGVwdGhNYXAoXHJcbiAgcGF0aHM6IHN0cmluZ1tdW10sXHJcbiAgc291cmNlOiBzdHJpbmcsXHJcbiAgb2Zmc2V0ID0gMFxyXG4pOiB7IFtuYW1lOiBzdHJpbmddOiBudW1iZXIgfSB7XHJcbiAgLy8gVE9ETzogSXMgdGhlcmUgYSBCQyBmdW5jdGlvbiBmb3IgdGhpcyBhbHJlYWR5P1xyXG4gIGxldCBkZXB0aE1hcDogeyBbdmFsdWU6IHN0cmluZ106IG51bWJlciB9ID0ge307XHJcbiAgZGVwdGhNYXBbc291cmNlICsgXCIubWRcIl0gPSAwO1xyXG4gIHBhdGhzLmZvckVhY2goKHBhdGgpID0+IHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBuYW1lID0gcGF0aFtpXSArIFwiLm1kXCI7XHJcbiAgICAgIGNvbnN0IGRlcHRoID0gcGF0aC5sZW5ndGggLSBpIC0gMSArIG9mZnNldDtcclxuICAgICAgaWYgKG5hbWUgaW4gZGVwdGhNYXApIHtcclxuICAgICAgICBkZXB0aE1hcFtuYW1lXSA9IE1hdGgubWluKGRlcHRoTWFwW25hbWVdLCBkZXB0aCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZGVwdGhNYXBbbmFtZV0gPSBkZXB0aDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBkZXB0aE1hcDtcclxufVxyXG5cclxuZnVuY3Rpb24gdXBkYXRlRGVwdGgoanVnZ2w6IElKdWdnbCwgZGVwdGg6IG51bWJlcikge1xyXG4gIGp1Z2dsLnZpei4kKGBbZGVwdGg+JHtkZXB0aH1dYCkuYWRkQ2xhc3MoXCJmaWx0ZXJlZFwiKTtcclxuICBqdWdnbC52aXouJChgW2RlcHRoPD0ke2RlcHRofV1gKS5yZW1vdmVDbGFzcyhcImZpbHRlcmVkXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSnVnZ2xUcmFpbChcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIHRhcmdldDogSFRNTEVsZW1lbnQsXHJcbiAgcGF0aHM6IHN0cmluZ1tdW10sXHJcbiAgc291cmNlOiBzdHJpbmcsXHJcbiAgYXJnczogSUp1Z2dsU2V0dGluZ3NcclxuKSB7XHJcbiAgY29uc3QgdG9vbGJhckRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgdG9vbGJhckRpdi5hZGRDbGFzcyhcImN5LXRvb2xiYXJcIik7XHJcbiAgdGFyZ2V0LmFwcGVuZENoaWxkKHRvb2xiYXJEaXYpO1xyXG5cclxuICBjb25zdCBzZWN0RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICBzZWN0RGl2LmFkZENsYXNzKFwiY3ktdG9vbGJhci1zZWN0aW9uXCIpO1xyXG4gIHRvb2xiYXJEaXYuYXBwZW5kQ2hpbGQoc2VjdERpdik7XHJcblxyXG4gIGNvbnN0IGFtdENoaWxkcmVuID0gdGFyZ2V0LmNoaWxkcmVuLmxlbmd0aDtcclxuXHJcbiAgbGV0IGp1Z2dsVXA6IElKdWdnbCA9IG51bGw7XHJcbiAgbGV0IGp1Z2dsRG93bjogSUp1Z2dsID0gbnVsbDtcclxuXHJcbiAgbmV3IEp1Z2dsQnV0dG9uKHtcclxuICAgIHRhcmdldDogc2VjdERpdixcclxuICAgIHByb3BzOiB7XHJcbiAgICAgIGljb246IFwiXHUyMTkxXCIsXHJcbiAgICAgIG9uQ2xpY2s6ICgpID0+IHtcclxuICAgICAgICBpZiAoanVnZ2xVcCkge1xyXG4gICAgICAgICAgdGFyZ2V0LmNoaWxkcmVuW2FtdENoaWxkcmVuXS5jbGFzc0xpc3QucmVtb3ZlKFwianVnZ2wtaGlkZVwiKTtcclxuICAgICAgICAgIGRlcHRoVXAuJHNldCh7IHZpc2libGU6IHRydWUgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChqdWdnbERvd24pIHtcclxuICAgICAgICAgIHRhcmdldC5jaGlsZHJlblthbXRDaGlsZHJlbiArIDFdLmNsYXNzTGlzdC5hZGQoXCJqdWdnbC1oaWRlXCIpO1xyXG4gICAgICAgICAgZGVwdGhEb3duLiRzZXQoeyB2aXNpYmxlOiBmYWxzZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgdGl0bGU6IFwiU2hvdyB1cCBncmFwaFwiLFxyXG4gICAgfSxcclxuICB9KTtcclxuXHJcbiAgbmV3IEp1Z2dsQnV0dG9uKHtcclxuICAgIHRhcmdldDogc2VjdERpdixcclxuICAgIHByb3BzOiB7XHJcbiAgICAgIGljb246IFwiXHUyMTkzXCIsXHJcbiAgICAgIG9uQ2xpY2s6ICgpID0+IHtcclxuICAgICAgICBpZiAoanVnZ2xEb3duKSB7XHJcbiAgICAgICAgICB0YXJnZXQuY2hpbGRyZW5bYW10Q2hpbGRyZW4gKyAxXS5jbGFzc0xpc3QucmVtb3ZlKFwianVnZ2wtaGlkZVwiKTtcclxuICAgICAgICAgIGRlcHRoVXAuJHNldCh7IHZpc2libGU6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgaWYgKGp1Z2dsVXApIHtcclxuICAgICAgICAgICAgdGFyZ2V0LmNoaWxkcmVuW2FtdENoaWxkcmVuXS5jbGFzc0xpc3QuYWRkKFwianVnZ2wtaGlkZVwiKTtcclxuICAgICAgICAgICAgZGVwdGhEb3duLiRzZXQoeyB2aXNpYmxlOiB0cnVlIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzdWIgPSBnZXRTdWJJbkRpcnMocGx1Z2luLm1haW5HLCBcImRvd25cIiwgXCJ1cFwiKTtcclxuICAgICAgICBjb25zdCBjbG9zZWQgPSBnZXRSZWZsZXhpdmVDbG9zdXJlKHN1YiwgcGx1Z2luLnNldHRpbmdzLnVzZXJIaWVycyk7XHJcbiAgICAgICAgY29uc3Qgc3ViQ2xvc2VkID0gZ2V0U3ViSW5EaXJzKGNsb3NlZCwgXCJkb3duXCIpO1xyXG5cclxuXHJcbiAgICAgICAgY29uc3QgeyBjcmVhdGVJbmRleEluZGVudCB9ID0gcGx1Z2luLnNldHRpbmdzXHJcbiAgICAgICAgY29uc3QgYWxsUGF0aHMgPSBkZnNBbGxQYXRocyhzdWJDbG9zZWQsIHNvdXJjZSk7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBjcmVhdGVJbmRleChhbGxQYXRocywgZmFsc2UsIGNyZWF0ZUluZGV4SW5kZW50KTtcclxuICAgICAgICBjb25zdCBsaW5lcyA9IGluZGV4XHJcbiAgICAgICAgICAuc3BsaXQoXCJcXG5cIilcclxuICAgICAgICAgIC5tYXAoKGxpbmUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgW2luZGVudCwgLi4uY29udGVudF0gPSBsaW5lLnNwbGl0KFwiLSBcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50LmpvaW4oXCItIFwiKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZmlsdGVyKChwYWlyKSA9PiBwYWlyKTtcclxuICAgICAgICBsZXQgZGVwdGhNYXBEb3duID0gY3JlYXRlRGVwdGhNYXAoYWxsUGF0aHMsIHNvdXJjZSk7XHJcbiAgICAgICAgY29uc3QgbWF4RGVwdGhEb3duID0gTWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyhkZXB0aE1hcERvd24pKTtcclxuXHJcbiAgICAgICAgZGVwdGhEb3duID0gbmV3IEp1Z2dsRGVwdGgoe1xyXG4gICAgICAgICAgdGFyZ2V0OiB0b29sYmFyRGl2LFxyXG4gICAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgICAgbWF4RGVwdGg6IG1heERlcHRoRG93bixcclxuICAgICAgICAgICAgb25VcGRhdGVEZXB0aDogKGQpID0+IHtcclxuICAgICAgICAgICAgICB1cGRhdGVEZXB0aChqdWdnbERvd24sIGQpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBsZXQgbm9kZXNTID0gbmV3IFNldChsaW5lcyk7XHJcbiAgICAgICAgbm9kZXNTLmFkZChzb3VyY2UpO1xyXG4gICAgICAgIGNvbnN0IG5vZGVzID0gQXJyYXkuZnJvbShub2Rlc1MpLm1hcCgocykgPT4gcyArIFwiLm1kXCIpO1xyXG5cclxuICAgICAgICBjb25zdCBhcmdzRG93biA9IE9iamVjdC5hc3NpZ24oe30sIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IGxheW91dCA9IHBsdWdpbi5zZXR0aW5ncy5qdWdnbExheW91dDtcclxuICAgICAgICBpZiAobGF5b3V0ID09PSBcImhpZXJhcmNoeVwiKSB7XHJcbiAgICAgICAgICBhcmdzRG93bi5sYXlvdXQgPSB7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgbmFtZTogXCJkYWdyZVwiLFxyXG4gICAgICAgICAgICBhbmltYXRlOiBmYWxzZSxcclxuICAgICAgICAgICAgcmFua2VyOiAoZ3JhcGgpID0+IHtcclxuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhncmFwaC5fbm9kZXMpLmZvckVhY2goKGlkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gVml6SWQuZnJvbUlkKGlkKS5pZDtcclxuICAgICAgICAgICAgICAgIGlmIChuYW1lIGluIGRlcHRoTWFwRG93bikge1xyXG4gICAgICAgICAgICAgICAgICBncmFwaC5fbm9kZXNbaWRdLnJhbmsgPSBkZXB0aE1hcERvd25bbmFtZV0gKyAxO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgZ3JhcGguX25vZGVzW2lkXS5yYW5rID0gMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGFyZ3NEb3duLmxheW91dCA9IGxheW91dDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXNGZGdkID0gbGF5b3V0ID09PSBcImNvbGFcIiB8fCBsYXlvdXQgPT09IFwiZDMtZm9yY2VcIjtcclxuICAgICAgICBpZiAoaXNGZGdkKSB7XHJcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICBhcmdzRG93bi5mZGdkTGF5b3V0ID0gbGF5b3V0O1xyXG4gICAgICAgICAgYXJnc0Rvd24ubGF5b3V0ID0gXCJmb3JjZS1kaXJlY3RlZFwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhcmdzRG93bi5hdXRvWm9vbSA9IHRydWU7XHJcbiAgICAgICAgICBhcmdzRG93bi5hbmltYXRlTGF5b3V0ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBqdWdnbERvd24gPSBjcmVhdGVKdWdnbChwbHVnaW4sIHRhcmdldCwgbm9kZXMsIGFyZ3NEb3duLCBkZXB0aE1hcERvd24pO1xyXG5cclxuICAgICAgICBpZiAoaXNGZGdkKSB7XHJcbiAgICAgICAgICB6b29tVG9Tb3VyY2UoanVnZ2xEb3duLCBzb3VyY2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB6b29tVG9HcmFwaChqdWdnbERvd24pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGp1Z2dsVXApIHtcclxuICAgICAgICAgIHRhcmdldC5jaGlsZHJlblthbXRDaGlsZHJlbl0uYWRkQ2xhc3MoXCJqdWdnbC1oaWRlXCIpO1xyXG4gICAgICAgICAgZGVwdGhVcC4kc2V0KHsgdmlzaWJsZTogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgIHRpdGxlOiBcIlNob3cgZG93biBncmFwaFwiLFxyXG4gICAgfSxcclxuICB9KTtcclxuICBjb25zdCBkZXB0aE1hcFVwID0gY3JlYXRlRGVwdGhNYXAocGF0aHMsIHNvdXJjZSwgMSk7XHJcbiAgY29uc3QgbWF4RGVwdGhVcCA9IE1hdGgubWF4KC4uLk9iamVjdC52YWx1ZXMoZGVwdGhNYXBVcCkpO1xyXG5cclxuICBsZXQgZGVwdGhEb3duOiBKdWdnbERlcHRoO1xyXG4gIGNvbnN0IGRlcHRoVXAgPSBuZXcgSnVnZ2xEZXB0aCh7XHJcbiAgICB0YXJnZXQ6IHRvb2xiYXJEaXYsXHJcbiAgICBwcm9wczoge1xyXG4gICAgICBtYXhEZXB0aDogbWF4RGVwdGhVcCxcclxuICAgICAgb25VcGRhdGVEZXB0aDogKGQpID0+IHtcclxuICAgICAgICB1cGRhdGVEZXB0aChqdWdnbFVwLCBkKTtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgfSk7XHJcblxyXG4gIC8vIG5ldyBKdWdnbEJ1dHRvbih7XHJcbiAgLy8gICAgIHRhcmdldDogc2VjdERpdixcclxuICAvLyAgICAgcHJvcHM6IHtcclxuICAvLyAgICAgICAgIGljb246IFwiXHUyNkY2XCIsXHJcbiAgLy8gICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc29sZS5sb2coXCJoZXJlXCIpXHJcbiAgLy8gICAgICAgICAgICAgdGFyZ2V0LmNoaWxkcmVuWzFdLmFkZENsYXNzKFwianVnZ2wtZnVsbC1zY3JlZW5cIilcclxuICAvLyAgICAgICAgICAgICB0YXJnZXQuY2hpbGRyZW5bMV0uc2V0QXR0cihcInN0eWxlXCIsIFwiXCIpO1xyXG4gIC8vICAgICAgICAgfSxcclxuICAvLyAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAvLyAgICAgICAgIHRpdGxlOiBcIkZ1bGwgaGVpZ2h0XCJcclxuICAvLyAgICAgfVxyXG4gIC8vIH0pO1xyXG4gIGxldCBub2RlcyA9IEFycmF5LmZyb20oXHJcbiAgICBuZXcgU2V0KHBhdGhzLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldi5jb25jYXQoY3VyciksIFtdKSlcclxuICApO1xyXG5cclxuICBub2Rlcy5wdXNoKHNvdXJjZSk7XHJcbiAgbm9kZXMgPSBub2Rlcy5tYXAoKHMpID0+IHMgKyBcIi5tZFwiKTtcclxuXHJcbiAgY29uc3QgYXJnc1VwOiBJSnVnZ2xTZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIGFyZ3MpO1xyXG5cclxuICBjb25zdCBsYXlvdXQgPSBwbHVnaW4uc2V0dGluZ3MuanVnZ2xMYXlvdXQ7XHJcbiAgaWYgKGxheW91dCA9PT0gXCJoaWVyYXJjaHlcIikge1xyXG4gICAgYXJnc1VwLmxheW91dCA9IHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBuYW1lOiBcImRhZ3JlXCIsXHJcbiAgICAgIGFuaW1hdGU6IGZhbHNlLFxyXG4gICAgICByYW5rZXI6IChncmFwaCkgPT4ge1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGdyYXBoLl9ub2RlcykuZm9yRWFjaCgoaWQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5hbWUgPSBWaXpJZC5mcm9tSWQoaWQpLmlkO1xyXG4gICAgICAgICAgaWYgKG5hbWUgaW4gZGVwdGhNYXBVcCkge1xyXG4gICAgICAgICAgICBncmFwaC5fbm9kZXNbaWRdLnJhbmsgPSBtYXhEZXB0aFVwIC0gZGVwdGhNYXBVcFtuYW1lXSArIDE7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBncmFwaC5fbm9kZXNbaWRdLnJhbmsgPSBtYXhEZXB0aFVwICsgMjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgfSBlbHNlIHtcclxuICAgIGFyZ3NVcC5sYXlvdXQgPSBsYXlvdXQ7XHJcbiAgfVxyXG4gIGNvbnN0IGlzRmRnZCA9IGxheW91dCA9PT0gXCJjb2xhXCIgfHwgbGF5b3V0ID09PSBcImQzLWZvcmNlXCI7XHJcbiAgaWYgKGlzRmRnZCkge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgYXJnc1VwLmZkZ2RMYXlvdXQgPSBsYXlvdXQ7XHJcbiAgICBhcmdzVXAubGF5b3V0ID0gXCJmb3JjZS1kaXJlY3RlZFwiO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBhcmdzVXAuYXV0b1pvb20gPSB0cnVlO1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgYXJnc1VwLmFuaW1hdGVMYXlvdXQgPSBmYWxzZTtcclxuICB9XHJcbiAganVnZ2xVcCA9IGNyZWF0ZUp1Z2dsKHBsdWdpbiwgdGFyZ2V0LCBub2RlcywgYXJnc1VwLCBkZXB0aE1hcFVwKTtcclxuICBpZiAoaXNGZGdkKSB7XHJcbiAgICB6b29tVG9Tb3VyY2UoanVnZ2xVcCwgc291cmNlKTtcclxuICB9IGVsc2Uge1xyXG4gICAgem9vbVRvR3JhcGgoanVnZ2xVcCk7XHJcbiAgfVxyXG59XHJcbiIsICJpbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCB7IGluZm8gfSBmcm9tIFwibG9nbGV2ZWxcIjtcclxuaW1wb3J0IHsgY29weSB9IGZyb20gXCJvYnNpZGlhbi1jb21tdW5pdHktbGliL2Rpc3QvdXRpbHNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHsgZGZzQWxsUGF0aHMsIGdldFNpbmtzLCBnZXRTdWJJbkRpcnMgfSBmcm9tIFwiLi4vVXRpbHMvZ3JhcGhVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXRDdXJyRmlsZSwgbWFrZVdpa2kgfSBmcm9tIFwiLi4vVXRpbHMvT2JzaWRpYW5VdGlsc1wiO1xyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgYSBjb3B5IG9mIGBpbmRleGAsIGRvZXNuJ3QgbXV0YXRlLlxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGluZGV4XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYWRkQWxpYXNlc1RvSW5kZXgocGx1Z2luOiBCQ1BsdWdpbiwgaW5kZXg6IHN0cmluZykge1xyXG4gIGNvbnN0IHsgYWxpYXNlc0luSW5kZXggfSA9IHBsdWdpbi5zZXR0aW5ncztcclxuXHJcbiAgY29uc3QgbGluZXMgPSBpbmRleC5zbGljZSgpLnNwbGl0KFwiXFxuXCIpO1xyXG5cclxuICBpZiAoYWxpYXNlc0luSW5kZXgpIHtcclxuICAgIGZvciAobGV0IGxpbmUgb2YgbGluZXMpIHtcclxuICAgICAgY29uc3QgW2luZGVudCwgLi4uY29udGVudF0gPSBsaW5lLnNwbGl0KFwiLSBcIik7XHJcbiAgICAgIGNvbnN0IG5vdGUgPSBjb250ZW50LmpvaW4oXCItIFwiKTtcclxuICAgICAgaWYgKCFub3RlKSBjb250aW51ZTtcclxuXHJcbiAgICAgIGNvbnN0IGN1cnJGaWxlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Rmlyc3RMaW5rcGF0aERlc3Qobm90ZSwgXCJcIik7XHJcblxyXG4gICAgICBpZiAoY3VyckZpbGUgIT09IG51bGwpIHtcclxuICAgICAgICBjb25zdCBjYWNoZSA9IGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShjdXJyRmlsZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGFsaWFzOiBzdHJpbmdbXSA9IGNhY2hlPy5mcm9udG1hdHRlcj8uYWxpYXMgPz8gW107XHJcbiAgICAgICAgY29uc3QgYWxpYXNlczogc3RyaW5nW10gPSBjYWNoZT8uZnJvbnRtYXR0ZXI/LmFsaWFzZXMgPz8gW107XHJcblxyXG4gICAgICAgIGNvbnN0IGFsbEFsaWFzZXM6IHN0cmluZ1tdID0gWy4uLlthbGlhc10uZmxhdCgzKSwgLi4uW2FsaWFzZXNdLmZsYXQoMyldO1xyXG4gICAgICAgIGlmIChhbGxBbGlhc2VzLmxlbmd0aCkge1xyXG4gICAgICAgICAgbGluZSArPSBgICgke2FsbEFsaWFzZXMuam9pbihcIiwgXCIpfSlgO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gbGluZXMuam9pbihcIlxcblwiKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZSBhbiBpbmRleCBvZiBhbGwgdGhlIHBhdGhzIGluIHRoZSBncmFwaC5cclxuICogQHBhcmFtIGFsbFBhdGhzIC0gQSBsaXN0IG9mIGFsbCBwYXRocyBmcm9tIHRoZSByb290IHRvIHRoZSBsZWF2ZXMuXHJcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYXNXaWtpbGlua3MgLSBXaGV0aGVyIHRvIHVzZSB3aWtpbGlua3MgaW5zdGVhZCBvZiBwbGFpbiB0ZXh0LlxyXG4gKiBAcmV0dXJucyBBIHN0cmluZy5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbmRleChcclxuICBhbGxQYXRoczogc3RyaW5nW11bXSxcclxuICBhc1dpa2lsaW5rczogYm9vbGVhbixcclxuICBpbmRlbnQgPSBcIiAgXCJcclxuKTogc3RyaW5nIHtcclxuICBsZXQgaW5kZXggPSBcIlwiO1xyXG4gIGNvbnN0IGNvcHkgPSBjbG9uZURlZXAoYWxsUGF0aHMpO1xyXG4gIGNvbnN0IHJldmVyc2VkID0gY29weS5tYXAoKHBhdGgpID0+IHBhdGgucmV2ZXJzZSgpKTtcclxuICByZXZlcnNlZC5mb3JFYWNoKChwYXRoKSA9PiBwYXRoLnNoaWZ0KCkpO1xyXG5cclxuICBjb25zdCByZWFsSW5kZW50ID0gaW5kZW50ID09PSAnXFxcXHQnID8gJ1xcdCcgOiBpbmRlbnQ7XHJcblxyXG4gIGNvbnN0IHZpc2l0ZWQ6IHtcclxuICAgIFtub2RlOiBzdHJpbmddOiAvKiogVGhlIGRlcHRocyBhdCB3aGljaCBgbm9kZWAgd2FzIHZpc2l0ZWQgKi8gbnVtYmVyW107XHJcbiAgfSA9IHt9O1xyXG5cclxuICByZXZlcnNlZC5mb3JFYWNoKChwYXRoKSA9PiB7XHJcbiAgICBmb3IgKGxldCBkZXB0aCA9IDA7IGRlcHRoIDwgcGF0aC5sZW5ndGg7IGRlcHRoKyspIHtcclxuICAgICAgY29uc3QgY3Vyck5vZGUgPSBwYXRoW2RlcHRoXTtcclxuXHJcbiAgICAgIC8vIElmIHRoYXQgbm9kZSBoYXMgYmVlbiB2aXNpdGVkIGJlZm9yZSBhdCB0aGUgY3VycmVudCBkZXB0aFxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdmlzaXRlZC5oYXNPd25Qcm9wZXJ0eShjdXJyTm9kZSkgJiZcclxuICAgICAgICB2aXNpdGVkW2N1cnJOb2RlXS5pbmNsdWRlcyhkZXB0aClcclxuICAgICAgKSBjb250aW51ZVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpbmRleCArPSBgJHtyZWFsSW5kZW50LnJlcGVhdChkZXB0aCl9LSAke2FzV2lraWxpbmtzID8gbWFrZVdpa2koY3Vyck5vZGUpIDogY3Vyck5vZGVcclxuICAgICAgICAgIH1cXG5gO1xyXG5cclxuICAgICAgICBpZiAoIXZpc2l0ZWQuaGFzT3duUHJvcGVydHkoY3Vyck5vZGUpKSB2aXNpdGVkW2N1cnJOb2RlXSA9IFtdO1xyXG4gICAgICAgIHZpc2l0ZWRbY3Vyck5vZGVdLnB1c2goZGVwdGgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGluZGV4O1xyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29weUxvY2FsSW5kZXgocGx1Z2luOiBCQ1BsdWdpbikge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MsIGNsb3NlZEcgfSA9IHBsdWdpbjtcclxuICBjb25zdCB7IHdpa2lsaW5rSW5kZXgsIGNyZWF0ZUluZGV4SW5kZW50IH0gPSBzZXR0aW5ncztcclxuICBjb25zdCB7IGJhc2VuYW1lIH0gPSBnZXRDdXJyRmlsZSgpXHJcblxyXG4gIGNvbnN0IG9ubHlEb3ducyA9IGdldFN1YkluRGlycyhjbG9zZWRHLCBcImRvd25cIik7XHJcbiAgY29uc3QgYWxsUGF0aHMgPSBkZnNBbGxQYXRocyhvbmx5RG93bnMsIGJhc2VuYW1lKTtcclxuICBjb25zdCBpbmRleCA9IGFkZEFsaWFzZXNUb0luZGV4KHBsdWdpbiwgY3JlYXRlSW5kZXgoYWxsUGF0aHMsIHdpa2lsaW5rSW5kZXgsIGNyZWF0ZUluZGV4SW5kZW50KSk7XHJcblxyXG4gIGluZm8oeyBpbmRleCB9KTtcclxuICBhd2FpdCBjb3B5KGluZGV4KTtcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvcHlHbG9iYWxJbmRleChwbHVnaW46IEJDUGx1Z2luKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncywgY2xvc2VkRyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgd2lraWxpbmtJbmRleCwgY3JlYXRlSW5kZXhJbmRlbnQgfSA9IHNldHRpbmdzO1xyXG5cclxuICBjb25zdCBvbmx5RG93bnMgPSBnZXRTdWJJbkRpcnMoY2xvc2VkRywgXCJkb3duXCIpO1xyXG4gIGNvbnN0IG9ubHlVcHMgPSBnZXRTdWJJbkRpcnMoY2xvc2VkRywgXCJ1cFwiKTtcclxuXHJcbiAgY29uc3Qgc2lua3MgPSBnZXRTaW5rcyhvbmx5VXBzKTtcclxuXHJcbiAgbGV0IGdsb2JhbEluZGV4ID0gXCJcIjtcclxuICBzaW5rcy5mb3JFYWNoKCh0ZXJtaW5hbCkgPT4ge1xyXG4gICAgZ2xvYmFsSW5kZXggKz0gdGVybWluYWwgKyBcIlxcblwiO1xyXG4gICAgY29uc3QgYWxsUGF0aHMgPSBkZnNBbGxQYXRocyhvbmx5RG93bnMsIHRlcm1pbmFsKTtcclxuICAgIGdsb2JhbEluZGV4ICs9XHJcbiAgICAgIGFkZEFsaWFzZXNUb0luZGV4KHBsdWdpbiwgY3JlYXRlSW5kZXgoYWxsUGF0aHMsIHdpa2lsaW5rSW5kZXgsIGNyZWF0ZUluZGV4SW5kZW50KSkgKyBcIlxcblwiO1xyXG4gIH0pO1xyXG5cclxuICBpbmZvKHsgZ2xvYmFsSW5kZXggfSk7XHJcbiAgYXdhaXQgY29weShnbG9iYWxJbmRleCk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBpbmRleFRvTGluZVBhaXJzID0gKFxyXG4gIGluZGV4OiBzdHJpbmcsXHJcbiAgZmxhdCA9IGZhbHNlXHJcbik6IFtzdHJpbmcsIHN0cmluZ11bXSA9PlxyXG4gIGluZGV4XHJcbiAgICAuc3BsaXQoXCJcXG5cIilcclxuICAgIC5tYXAoKGxpbmUpID0+IHtcclxuICAgICAgY29uc3QgW2luZGVudCwgLi4uY29udGVudF0gPSBsaW5lLnNwbGl0KFwiLSBcIik7XHJcbiAgICAgIHJldHVybiBbZmxhdCA/IFwiXCIgOiBpbmRlbnQsIGNvbnRlbnQuam9pbihcIi0gXCIpXSBhcyBbXHJcbiAgICAgICAgc3RyaW5nLFxyXG4gICAgICAgIHN0cmluZ1xyXG4gICAgICBdO1xyXG4gICAgfSlcclxuICAgIC5maWx0ZXIoKHBhaXIpID0+IHBhaXJbMV0gIT09IFwiXCIpO1xyXG4iLCAiPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuICBleHBvcnQgbGV0IGljb247XHJcbiAgZXhwb3J0IGxldCBvbkNsaWNrOiAoKSA9PiB2b2lkO1xyXG4gIGV4cG9ydCBsZXQgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBleHBvcnQgbGV0IHRpdGxlID0gXCJcIjtcclxuXHJcbiAgJDogcmVuZGVyZWRJY29uID0gaWNvbjtcclxuPC9zY3JpcHQ+XHJcblxyXG48YnV0dG9uXHJcbiAgdHlwZT1cImJ1dHRvblwiXHJcbiAgY2xhc3M9XCJqdWdnbC1idXR0b25cIlxyXG4gIG9uOmNsaWNrPXtvbkNsaWNrfVxyXG4gIGFyaWEtbGFiZWw9e3RpdGxlfVxyXG4gIHtkaXNhYmxlZH1cclxuPlxyXG4gIHtyZW5kZXJlZEljb259XHJcbjwvYnV0dG9uPlxyXG4iLCBudWxsLCBudWxsLCAiPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuICBpbXBvcnQgSnVnZ2xCdXR0b24gZnJvbSBcIi4vSnVnZ2xCdXR0b24uc3ZlbHRlXCI7XHJcblxyXG4gIGV4cG9ydCBsZXQgdmlzaWJsZSA9IHRydWU7XHJcbiAgZXhwb3J0IGxldCBtYXhEZXB0aDogbnVtYmVyO1xyXG4gIGV4cG9ydCBsZXQgb25VcGRhdGVEZXB0aDogKGRlcHRoOiBudW1iZXIpID0+IHZvaWQ7XHJcblxyXG4gIGxldCBkZXB0aCA9IG1heERlcHRoO1xyXG48L3NjcmlwdD5cclxuXHJcbnsjaWYgdmlzaWJsZX1cclxuICA8ZGl2IGNsYXNzPVwiY3ktdG9vbGJhci1zZWN0aW9uXCI+XHJcbiAgICA8SnVnZ2xCdXR0b25cclxuICAgICAgaWNvbj1cIi1cIlxyXG4gICAgICBkaXNhYmxlZD17ZGVwdGggPD0gMH1cclxuICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgIGRlcHRoIC09IDE7XHJcbiAgICAgICAgb25VcGRhdGVEZXB0aChkZXB0aCk7XHJcbiAgICAgIH19XHJcbiAgICAvPlxyXG5cclxuICAgIDxKdWdnbEJ1dHRvbiBpY29uPXtkZXB0aH0gZGlzYWJsZWQ9e3RydWV9IG9uQ2xpY2s9e251bGx9IC8+XHJcblxyXG4gICAgPEp1Z2dsQnV0dG9uXHJcbiAgICAgIGljb249XCIrXCJcclxuICAgICAgZGlzYWJsZWQ9e2RlcHRoID49IG1heERlcHRofVxyXG4gICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgZGVwdGggKz0gMTtcclxuICAgICAgICBvblVwZGF0ZURlcHRoKGRlcHRoKTtcclxuICAgICAgfX1cclxuICAgIC8+XHJcbiAgPC9kaXY+XHJcbnsvaWZ9XHJcbiIsIG51bGwsICI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG4gIGltcG9ydCB7IHJlZnJlc2hJbmRleCB9IGZyb20gXCIuLi9yZWZyZXNoSW5kZXhcIjtcclxuICBpbXBvcnQgdHlwZSBNYXRyaXhWaWV3IGZyb20gXCIuLi9WaWV3cy9NYXRyaXhWaWV3XCI7XHJcblxyXG4gIGV4cG9ydCBsZXQgbWF0cml4VmlldzogTWF0cml4VmlldztcclxuXHJcbiAgY29uc3QgeyBwbHVnaW4gfSA9IG1hdHJpeFZpZXc7XHJcbiAgY29uc3QgeyBhbHBoYVNvcnRBc2MsIGVuYWJsZUFscGhhU29ydCB9ID0gcGx1Z2luLnNldHRpbmdzO1xyXG48L3NjcmlwdD5cclxuXHJcbjxidXR0b25cclxuICBjbGFzcz1cIkJDLXJlZnJlc2gtYnV0dG9uXCJcclxuICBhcmlhLWxhYmVsPVwiUmVmcmVzaCBJbmRleFwiXHJcbiAgb246Y2xpY2s9e2FzeW5jICgpID0+IGF3YWl0IHJlZnJlc2hJbmRleChwbHVnaW4pfVxyXG4+XHJcbiAgXHUyMUJCXHJcbjwvYnV0dG9uPlxyXG5cclxueyNpZiBlbmFibGVBbHBoYVNvcnR9XHJcbiAgPGJ1dHRvblxyXG4gICAgY2xhc3M9XCJCQy1zb3J0LWJ1dHRvblwiXHJcbiAgICBhcmlhLWxhYmVsPVwiQWxwaGFiZXRpY2FsIFNvcnRpbmcgT3JkZXJcIlxyXG4gICAgb246Y2xpY2s9e2FzeW5jICgpID0+IHtcclxuICAgICAgcGx1Z2luLnNldHRpbmdzLmFscGhhU29ydEFzYyA9ICFhbHBoYVNvcnRBc2M7XHJcbiAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgYXdhaXQgbWF0cml4Vmlldy5kcmF3KCk7XHJcbiAgICB9fVxyXG4gID5cclxuICAgIHthbHBoYVNvcnRBc2MgPyBcIlx1MjE5N1wiIDogXCJcdTIxOThcIn1cclxuICA8L2J1dHRvbj5cclxuey9pZn1cclxuXHJcbjxzdHlsZT5cclxuICBidXR0b24ge1xyXG4gICAgcGFkZGluZzogMXB4IDZweCAycHggNnB4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiA2cHg7XHJcbiAgfVxyXG48L3N0eWxlPlxyXG4iLCBudWxsLCAiPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuICBpbXBvcnQgdHlwZSB7IFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbiAgaW1wb3J0IHsgaG92ZXJQcmV2aWV3LCBvcGVuT3JTd2l0Y2ggfSBmcm9tIFwib2JzaWRpYW4tY29tbXVuaXR5LWxpYlwiO1xyXG4gIGltcG9ydCBNYXRyaXhCdXR0b25zIGZyb20gXCIuL01hdHJpeEJ1dHRvbnMuc3ZlbHRlXCI7XHJcbiAgaW1wb3J0IHR5cGUgeyBTcXVhcmVQcm9wcyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbiAgaW1wb3J0IHsgZHJvcFBhdGhORGVuZHJvbiB9IGZyb20gXCIuLi9VdGlscy9nZW5lcmFsVXRpbHNcIjtcclxuICBpbXBvcnQgdHlwZSBNYXRyaXhWaWV3IGZyb20gXCIuLi9WaWV3cy9NYXRyaXhWaWV3XCI7XHJcblxyXG4gIGV4cG9ydCBsZXQgaGllclNxdWFyZXM6IFNxdWFyZVByb3BzW11bXTtcclxuICBleHBvcnQgbGV0IGN1cnJGaWxlOiBURmlsZTtcclxuICBleHBvcnQgbGV0IG1hdHJpeFZpZXc6IE1hdHJpeFZpZXc7XHJcblxyXG4gIGNvbnN0IHsgcGx1Z2luIH0gPSBtYXRyaXhWaWV3O1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuXHJcbiAgY29uc3Qge1xyXG4gICAgc2hvd0ltcGxpZWRSZWxhdGlvbnMsXHJcbiAgICBybExlYWYsXHJcbiAgICB0cmVhdEN1cnJOb2RlQXNJbXBsaWVkU2libGluZyxcclxuICAgIHNob3dSZWxhdGlvblR5cGUsXHJcbiAgfSA9IHNldHRpbmdzO1xyXG48L3NjcmlwdD5cclxuXHJcbjxkaXYgY2xhc3M9XCJCQy1tYXRyaXgtYnV0dG9uc1wiPlxyXG4gIDxNYXRyaXhCdXR0b25zIHttYXRyaXhWaWV3fSAvPlxyXG48L2Rpdj5cclxuXHJcbjxkaXZcclxuICBjbGFzcz1cIkJDLU1hdHJpeCAgbWFya2Rvd24tcHJldmlldy12aWV3IHtoaWVyU3F1YXJlcy5sZW5ndGhcclxuICAgID8gJydcclxuICAgIDogJ0JDLWVtcHR5LXZpZXcnfVwiXHJcbj5cclxuICB7I2VhY2ggaGllclNxdWFyZXMgYXMgc3F1YXJlc31cclxuICAgIDxkaXYgY2xhc3M9XCJCQy1tYXRyaXgtaGllclwiPlxyXG4gICAgICB7I2VhY2ggc3F1YXJlcyBhcyB7IGZpZWxkLCBpbXBsaWVkSXRlbXMsIHJlYWxJdGVtcyB9fVxyXG4gICAgICAgIHsjaWYgcmVhbEl0ZW1zLmxlbmd0aCB8fCAoc2hvd0ltcGxpZWRSZWxhdGlvbnMgJiYgaW1wbGllZEl0ZW1zLmxlbmd0aCl9XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiQkMtTWF0cml4LXNxdWFyZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiQkMtTWF0cml4LWhlYWRlcnNcIj5cclxuICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJCQy1NYXRyaXgtaGVhZGVyXCI+e2ZpZWxkfTwvaDQ+XHJcblxyXG4gICAgICAgICAgICAgIHsjaWYgc2hvd1JlbGF0aW9uVHlwZX1cclxuICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cIkJDLU1hdHJpeC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAge3JlYWxJdGVtcy5sZW5ndGggPyBcIlJlYWxcIiA6IFwiSW1wbGllZFwifVxyXG4gICAgICAgICAgICAgICAgPC9oNj5cclxuICAgICAgICAgICAgICB7L2lmfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgeyNpZiByZWFsSXRlbXMubGVuZ3RofVxyXG4gICAgICAgICAgICAgIDxvbD5cclxuICAgICAgICAgICAgICAgIHsjZWFjaCByZWFsSXRlbXMgYXMgeyBhbHQsIGNscywgaW1wbGllZCwgdG8gfX1cclxuICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gc3ZlbHRlLWlnbm9yZSBhMTF5LXVua25vd24tYXJpYS1hdHRyaWJ1dGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBzdmVsdGUtaWdub3JlIGExMXktbW91c2UtZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIntjbHN9IHtpbXBsaWVkID8/ICcnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBvbjpjbGljaz17YXN5bmMgKGUpID0+IGF3YWl0IG9wZW5PclN3aXRjaCh0bywgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICBvbjptb3VzZW92ZXI9eyhldmVudCkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJQcmV2aWV3KGV2ZW50LCBtYXRyaXhWaWV3LCB0byl9XHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXthbHQgPyB0byA6IFwiXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsLXBvc2l0aW9uPXtybExlYWYgPyBcImxlZnRcIiA6IFwicmlnaHRcIn1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7YWx0ID8/IGRyb3BQYXRoTkRlbmRyb24odG8sIHNldHRpbmdzKX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIHsvZWFjaH1cclxuICAgICAgICAgICAgICA8L29sPlxyXG4gICAgICAgICAgICB7L2lmfVxyXG5cclxuICAgICAgICAgICAgeyNpZiBzaG93SW1wbGllZFJlbGF0aW9ucyAmJiBpbXBsaWVkSXRlbXMubGVuZ3RofVxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJCQy1NYXRyaXgtaGVhZGVyc1wiPlxyXG4gICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiQkMtTWF0cml4LWhlYWRlclwiPntcIiBcIn08L2g0PlxyXG4gICAgICAgICAgICAgICAgeyNpZiBpbXBsaWVkSXRlbXMubGVuZ3RofVxyXG4gICAgICAgICAgICAgICAgICB7I2lmIHNob3dSZWxhdGlvblR5cGUgJiYgcmVhbEl0ZW1zLmxlbmd0aH1cclxuICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJCQy1NYXRyaXgtaGVhZGVyXCI+SW1wbGllZDwvaDY+XHJcbiAgICAgICAgICAgICAgICAgIHsvaWZ9XHJcbiAgICAgICAgICAgICAgICB7L2lmfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxvbCBzdGFydD17cmVhbEl0ZW1zLmxlbmd0aCArIDF9PlxyXG4gICAgICAgICAgICAgICAgeyNlYWNoIGltcGxpZWRJdGVtcyBhcyB7IGFsdCwgY2xzLCBpbXBsaWVkLCB0bywgcGFyZW50IH19XHJcbiAgICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiQkMtSW1wbGllZCB7dHJlYXRDdXJyTm9kZUFzSW1wbGllZFNpYmxpbmcgJiZcclxuICAgICAgICAgICAgICAgICAgICB0byA9PT0gY3VyckZpbGUuYmFzZW5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgID8gJ0JDLWFjdGl2ZS1ub3RlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgOiAnJ31cIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBzdmVsdGUtaWdub3JlIGExMXktdW5rbm93bi1hcmlhLWF0dHJpYnV0ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIHN2ZWx0ZS1pZ25vcmUgYTExeS1tb3VzZS1ldmVudHMtaGF2ZS1rZXktZXZlbnRzIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie2Nsc30ge2ltcGxpZWQgPz8gJyd9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIG9uOmNsaWNrPXthc3luYyAoZSkgPT4gYXdhaXQgb3Blbk9yU3dpdGNoKHRvLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgIG9uOm1vdXNlb3Zlcj17KGUpID0+IGhvdmVyUHJldmlldyhlLCBtYXRyaXhWaWV3LCB0byl9XHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXsoYWx0ID8gYCR7dG99XFxuYCA6IFwiXCIpICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudCA/IFwiXHUyMTkxIFwiICsgcGFyZW50IDogXCJcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsLXBvc2l0aW9uPXtybExlYWYgPyBcImxlZnRcIiA6IFwicmlnaHRcIn1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7YWx0ID8/IGRyb3BQYXRoTkRlbmRyb24odG8sIHNldHRpbmdzKX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIHsvZWFjaH1cclxuICAgICAgICAgICAgICA8L29sPlxyXG4gICAgICAgICAgICB7L2lmfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgey9pZn1cclxuICAgICAgey9lYWNofVxyXG4gICAgPC9kaXY+XHJcbiAgey9lYWNofVxyXG48L2Rpdj5cclxuXHJcbjxzdHlsZT5cclxuICAuQkMtTWF0cml4IHtcclxuICAgIHBhZGRpbmc6IDVweDtcclxuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XHJcbiAgICBsaW5lLWhlaWdodDogMS41O1xyXG4gIH1cclxuICAuQkMtTWF0cml4ID4gZGl2IHtcclxuICAgIGJvcmRlcjogM3B4IHNvbGlkIHZhcigtLWJhY2tncm91bmQtbW9kaWZpZXItYm9yZGVyKTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgIC8qIHRleHQtYWxpZ246IGNlbnRlcjsgKi9cclxuICAgIG1hcmdpbjogM3B4O1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgaGVpZ2h0OiBmaXQtY29udGVudDtcclxuICB9XHJcblxyXG4gIC8qIC5CQy1tYXRyaXggZGl2IHtcclxuICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgfSAqL1xyXG5cclxuICAuQkMtTWF0cml4LXNxdWFyZSB7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1iYWNrZ3JvdW5kLW1vZGlmaWVyLWJvcmRlcik7XHJcbiAgfVxyXG5cclxuICAuQkMtTWF0cml4LWhlYWRlcnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgfVxyXG4gIC5CQy1NYXRyaXgtaGVhZGVyIHtcclxuICAgIG1hcmdpbjogMnB4O1xyXG4gICAgcGFkZGluZzogMHB4IDEwcHg7XHJcbiAgfVxyXG4gIGg0LkJDLU1hdHJpeC1oZWFkZXI6Zmlyc3QtbGV0dGVyIHtcclxuICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xyXG4gIH1cclxuXHJcbiAgb2wge1xyXG4gICAgbWFyZ2luOiAzcHg7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDMwcHg7XHJcbiAgfVxyXG5cclxuICAuQkMtTWF0cml4IGxpIHtcclxuICAgIG1hcmdpbjogMC4xZW07XHJcbiAgfVxyXG48L3N0eWxlPlxyXG4iLCAiaW1wb3J0IHR5cGUgeyBNdWx0aUdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHsgQVJST1dfRElSRUNUSU9OUywgRElSRUNUSU9OUyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgdHlwZSB7IEJDQVBJSSwgRGlyZWN0aW9ucywgVXNlckhpZXIgfSBmcm9tIFwiLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuL21haW5cIjtcclxuaW1wb3J0IHsgZ2V0TWF0cml4TmVpZ2hib3VycyB9IGZyb20gXCIuL1ZpZXdzL01hdHJpeFZpZXdcIjtcclxuaW1wb3J0IHtcclxuICBidWlsZE9ic0dyYXBoLFxyXG4gIGRmc0FsbFBhdGhzLFxyXG4gIGdldFN1YkZvckZpZWxkcyxcclxuICBnZXRTdWJJbkRpcnMsXHJcbn0gZnJvbSBcIi4vVXRpbHMvZ3JhcGhVdGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIGdldEZpZWxkSW5mbyxcclxuICBnZXRGaWVsZHMsXHJcbiAgZ2V0T3BwRGlyLFxyXG4gIGdldE9wcEZpZWxkcyxcclxuICBpdGVyYXRlSGllcnMsXHJcbn0gZnJvbSBcIi4vVXRpbHMvSGllclV0aWxzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUluZGV4IH0gZnJvbSBcIi4vQ29tbWFuZHMvQ3JlYXRlSW5kZXhcIjtcclxuaW1wb3J0IHsgcmVmcmVzaEluZGV4IH0gZnJvbSBcIi4vcmVmcmVzaEluZGV4XCI7XHJcbmltcG9ydCB7IGdldEN1cnJGaWxlIH0gZnJvbSBcIi4vVXRpbHMvT2JzaWRpYW5VdGlsc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEJDQVBJIGltcGxlbWVudHMgQkNBUElJIHtcclxuXHJcbiAgcGx1Z2luOiBCQ1BsdWdpbjtcclxuICBtYWluRzogTXVsdGlHcmFwaDtcclxuICBjbG9zZWRHOiBNdWx0aUdyYXBoO1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IocGx1Z2luOiBCQ1BsdWdpbikge1xyXG5cclxuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xyXG4gICAgdGhpcy5tYWluRyA9IHRoaXMucGx1Z2luLm1haW5HO1xyXG4gICAgdGhpcy5jbG9zZWRHID0gdGhpcy5wbHVnaW4uY2xvc2VkRztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBESVJFQ1RJT05TID0gRElSRUNUSU9OUztcclxuICBwdWJsaWMgQVJST1dfRElSRUNUSU9OUyA9IEFSUk9XX0RJUkVDVElPTlM7XHJcblxyXG4gIHB1YmxpYyBidWlsZE9ic0dyYXBoID0gYnVpbGRPYnNHcmFwaDtcclxuXHJcbiAgcHVibGljIHJlZnJlc2hJbmRleCA9IGFzeW5jICgpID0+IGF3YWl0IHJlZnJlc2hJbmRleCh0aGlzLnBsdWdpbilcclxuXHJcbiAgcHVibGljIGdldFN1YkluRGlycyA9IChkaXJzOiBEaXJlY3Rpb25zW10sIGcgPSB0aGlzLm1haW5HKSA9PlxyXG4gICAgZ2V0U3ViSW5EaXJzKGcsIC4uLmRpcnMpO1xyXG5cclxuICBwdWJsaWMgZ2V0U3ViRm9yRmllbGRzID0gKGZpZWxkczogc3RyaW5nW10sIGcgPSB0aGlzLm1haW5HKSA9PlxyXG4gICAgZ2V0U3ViRm9yRmllbGRzKGcsIGZpZWxkcyk7XHJcblxyXG4gIHB1YmxpYyBkZnNBbGxQYXRocyA9IChcclxuICAgIGZyb21Ob2RlID0gZ2V0Q3VyckZpbGUoKT8uYmFzZW5hbWUsXHJcbiAgICBnID0gdGhpcy5tYWluR1xyXG4gICkgPT4gZGZzQWxsUGF0aHMoZywgZnJvbU5vZGUpO1xyXG5cclxuICBwdWJsaWMgY3JlYXRlSW5kZXggPSAoYWxsUGF0aHM6IHN0cmluZ1tdW10sIHdpa2lsaW5rcyA9IGZhbHNlLCBpbmRlbnQgPSAnICAnKSA9PlxyXG4gICAgY3JlYXRlSW5kZXgoYWxsUGF0aHMsIHdpa2lsaW5rcywgaW5kZW50KTtcclxuXHJcbiAgcHVibGljIGdldE1hdHJpeE5laWdoYm91cnMgPSAoXHJcbiAgICBmcm9tTm9kZSA9IGdldEN1cnJGaWxlKCk/LmJhc2VuYW1lXHJcbiAgKSA9PiBnZXRNYXRyaXhOZWlnaGJvdXJzKHRoaXMucGx1Z2luLCBmcm9tTm9kZSk7XHJcblxyXG4gIHB1YmxpYyBnZXRPcHBEaXIgPSAoZGlyOiBEaXJlY3Rpb25zKSA9PiBnZXRPcHBEaXIoZGlyKTtcclxuXHJcbiAgcHVibGljIGdldE9wcEZpZWxkcyA9IChmaWVsZDogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCB7IGZpZWxkRGlyIH0gPSBnZXRGaWVsZEluZm8odGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckhpZXJzLCBmaWVsZCk7XHJcbiAgICByZXR1cm4gZ2V0T3BwRmllbGRzKHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJIaWVycywgZmllbGQsIGZpZWxkRGlyKTtcclxuICB9O1xyXG5cclxuICBwdWJsaWMgZ2V0RmllbGRJbmZvID0gKGZpZWxkOiBzdHJpbmcpID0+XHJcbiAgICBnZXRGaWVsZEluZm8odGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckhpZXJzLCBmaWVsZCk7XHJcbiAgcHVibGljIGdldEZpZWxkcyA9IChkaXI/OiBEaXJlY3Rpb25zKSA9PlxyXG4gICAgZ2V0RmllbGRzKHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJIaWVycywgZGlyID8/IFwiYWxsXCIpO1xyXG5cclxuICBwdWJsaWMgaXRlcmF0ZUhpZXJzKFxyXG4gICAgY2I6IChoaWVyOiBVc2VySGllciwgZGlyOiBEaXJlY3Rpb25zLCBmaWVsZDogc3RyaW5nKSA9PiB2b2lkXHJcbiAgKSB7XHJcbiAgICBpdGVyYXRlSGllcnModGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckhpZXJzLCBjYik7XHJcbiAgfVxyXG59XHJcbiIsICJpbXBvcnQgeyBGdXp6eU1hdGNoLCBGdXp6eVN1Z2dlc3RNb2RhbCwgTm90aWNlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IEhpZXJhcmNoeU5vdGVNYW5pcHVsYXRvciB9IGZyb20gXCIuL0hpZXJhcmNoeU5vdGVNYW5pcHVsYXRvclwiO1xyXG5pbXBvcnQgdHlwZSB7IEJDU2V0dGluZ3MgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vLi4vbWFpblwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEhpZXJhcmNoeU5vdGVTZWxlY3Rvck1vZGFsIGV4dGVuZHMgRnV6enlTdWdnZXN0TW9kYWw8c3RyaW5nPiB7XHJcbiAgcGx1Z2luOiBCQ1BsdWdpbjtcclxuICBzZXR0aW5nczogQkNTZXR0aW5ncztcclxuXHJcbiAgY29uc3RydWN0b3IocGx1Z2luOiBCQ1BsdWdpbikge1xyXG4gICAgc3VwZXIoYXBwKTtcclxuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xyXG4gICAgdGhpcy5zZXR0aW5ncyA9IHRoaXMucGx1Z2luLnNldHRpbmdzO1xyXG4gIH1cclxuXHJcbiAgb25PcGVuKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRQbGFjZWhvbGRlcihcIkhOIENob29zZXJcIik7XHJcbiAgICBjb25zdCB7IGhpZXJhcmNoeU5vdGVzIH0gPSB0aGlzLnNldHRpbmdzO1xyXG4gICAgaWYgKGhpZXJhcmNoeU5vdGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgIG5ldyBOb3RpY2UoXCJObyBoaWVyYXJjaHkgbm90ZXMgZm91bmRcIik7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICBoaWVyYXJjaHlOb3Rlcy5sZW5ndGggPT09IDEgJiZcclxuICAgICAgIWhpZXJhcmNoeU5vdGVzWzBdLmVuZHNXaXRoKFwiL1wiKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgbmV3IEhpZXJhcmNoeU5vdGVNYW5pcHVsYXRvcihcclxuICAgICAgICB0aGlzLnBsdWdpbixcclxuICAgICAgICBoaWVyYXJjaHlOb3Rlc1swXVxyXG4gICAgICApLm9wZW4oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN1cGVyLm9uT3BlbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbXMoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgeyBoaWVyYXJjaHlOb3RlcyB9ID0gdGhpcy5zZXR0aW5ncztcclxuICAgIGlmIChoaWVyYXJjaHlOb3Rlcy5sZW5ndGggPT0gMSAmJiBoaWVyYXJjaHlOb3Rlc1swXS5lbmRzV2l0aChcIi9cIikpIHtcclxuICAgICAgLy8gdGhpcyBpcyBhIGZvbGRlclxyXG4gICAgICBsZXQgZm9sZGVyID0gaGllcmFyY2h5Tm90ZXNbMF0uc2xpY2UoMCwgLTEpO1xyXG4gICAgICBpZiAoYXBwLnBsdWdpbnMucGx1Z2lucy5kYXRhdmlldyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBsZXQgcGFnZXMgPSBhcHAucGx1Z2lucy5wbHVnaW5zLmRhdGF2aWV3LmFwaS5wYWdlcyhcclxuICAgICAgICAgIGBcIiR7Zm9sZGVyfVwiYFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHBhZ2VzLnZhbHVlcy5tYXAoKHBhZ2UpID0+IHBhZ2UuZmlsZS5wYXRoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXcgTm90aWNlKFwibWFrZSBzdXJlIHlvdSBoYXZlIGRhdGF2aWV3IGVuYWJsZWRcIik7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSByZXR1cm4gaGllcmFyY2h5Tm90ZXM7XHJcbiAgfVxyXG5cclxuICBnZXRJdGVtVGV4dChpdGVtOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke2l0ZW19YDtcclxuICB9XHJcblxyXG4gIHJlbmRlclN1Z2dlc3Rpb24oaXRlbTogRnV6enlNYXRjaDxzdHJpbmc+LCBlbDogSFRNTEVsZW1lbnQpIHtcclxuICAgIHN1cGVyLnJlbmRlclN1Z2dlc3Rpb24oaXRlbSwgZWwpO1xyXG4gIH1cclxuXHJcbiAgb25DaG9vc2VJdGVtKGl0ZW06IHN0cmluZywgZXZ0OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgbmV3IEhpZXJhcmNoeU5vdGVNYW5pcHVsYXRvcih0aGlzLnBsdWdpbiwgaXRlbSkub3BlbigpO1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gIH1cclxufVxyXG4iLCAiaW1wb3J0IHsgZXJyb3IsIGluZm8gfSBmcm9tIFwibG9nbGV2ZWxcIjtcclxuaW1wb3J0IHtcclxuICBGdXp6eU1hdGNoLFxyXG4gIEZ1enp5U3VnZ2VzdE1vZGFsLFxyXG4gIExpc3RJdGVtQ2FjaGUsXHJcbiAgTWFya2Rvd25WaWV3LFxyXG4gIE5vdGljZSxcclxuICBURmlsZSxcclxufSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHR5cGUgeyBCQ1NldHRpbmdzIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uLy4uL21haW5cIjtcclxuaW1wb3J0IHsgZHJvcFdpa2lsaW5rcyB9IGZyb20gXCIuLi8uLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcbmltcG9ydCB7IE1vZGlmeUhpZXJJdGVtTW9kYWwgfSBmcm9tIFwiLi9Nb2RpZnlIaWVySXRlbU1vZGFsXCI7XHJcblxyXG5pbnRlcmZhY2UgSE5JdGVtIHtcclxuICBkZXB0aDogbnVtYmVyO1xyXG4gIGxpbmU6IHN0cmluZztcclxuICBsaW5lTm86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEhpZXJhcmNoeU5vdGVNYW5pcHVsYXRvciBleHRlbmRzIEZ1enp5U3VnZ2VzdE1vZGFsPEhOSXRlbT4ge1xyXG4gIHBsdWdpbjogQkNQbHVnaW47XHJcbiAgc2V0dGluZ3M6IEJDU2V0dGluZ3M7XHJcbiAgaGllck5vdGVOYW1lOiBzdHJpbmc7XHJcbiAgbGluZXM6IHN0cmluZ1tdO1xyXG4gIGxpc3RJdGVtczogTGlzdEl0ZW1DYWNoZVtdO1xyXG4gIGZpbGU6IFRGaWxlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwbHVnaW46IEJDUGx1Z2luLCBoaWVyTm90ZU5hbWU6IHN0cmluZykge1xyXG4gICAgc3VwZXIoYXBwKTtcclxuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xyXG4gICAgdGhpcy5zZXR0aW5ncyA9IHRoaXMucGx1Z2luLnNldHRpbmdzO1xyXG4gICAgdGhpcy5oaWVyTm90ZU5hbWUgPSBoaWVyTm90ZU5hbWU7XHJcblxyXG4gICAgY29uc3QgY2hvb3NlT3ZlcnJpZGUgPSAoZXZ0OiBLZXlib2FyZEV2ZW50KSA9PiB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgdGhpcy5jaG9vc2VyLnVzZVNlbGVjdGVkSXRlbShldnQpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5zY29wZS5yZWdpc3RlcihbXSwgXCJEZWxldGVcIiwgY2hvb3NlT3ZlcnJpZGUpO1xyXG4gICAgdGhpcy5zY29wZS5yZWdpc3RlcihbXCJTaGlmdFwiXSwgXCJBcnJvd1VwXCIsIGNob29zZU92ZXJyaWRlKTtcclxuICAgIHRoaXMuc2NvcGUucmVnaXN0ZXIoW1wiU2hpZnRcIl0sIFwiQXJyb3dSaWdodFwiLCBjaG9vc2VPdmVycmlkZSk7XHJcbiAgICB0aGlzLnNjb3BlLnJlZ2lzdGVyKFtcIlNoaWZ0XCJdLCBcIkFycm93RG93blwiLCBjaG9vc2VPdmVycmlkZSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbk9wZW4oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnNldFBsYWNlaG9sZGVyKFwiSE4gTWFuaXB1bGF0b3JcIik7XHJcbiAgICB0aGlzLnNldEluc3RydWN0aW9ucyhbXHJcbiAgICAgIHsgY29tbWFuZDogXCJTaGlmdCArIEVudGVyXCIsIHB1cnBvc2U6IFwiSnVtcCB0byBpdGVtXCIgfSxcclxuICAgICAgeyBjb21tYW5kOiBcIlNoaWZ0ICsgXHUyMTkxXCIsIHB1cnBvc2U6IFwiQWRkIHBhcmVudFwiIH0sXHJcbiAgICAgIHsgY29tbWFuZDogXCJTaGlmdCArIFx1MjE5MlwiLCBwdXJwb3NlOiBcIkFkZCBzaWJsaW5nXCIgfSxcclxuICAgICAgeyBjb21tYW5kOiBcIlNoaWZ0ICsgXHUyMTkzIC8gRW50ZXIgLyBDbGlja1wiLCBwdXJwb3NlOiBcIkFkZCBjaGlsZFwiIH0sXHJcbiAgICAgIHsgY29tbWFuZDogXCJEZWxldGVcIiwgcHVycG9zZTogXCJEZWxldGUgaXRlbVwiIH0sXHJcbiAgICBdKTtcclxuXHJcbiAgICB0aGlzLmZpbGUgPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaXJzdExpbmtwYXRoRGVzdCh0aGlzLmhpZXJOb3RlTmFtZSwgXCJcIik7XHJcbiAgICBpZiAoIXRoaXMuZmlsZSkgdGhpcy5saW5lcyA9IFtdO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKHRoaXMpO1xyXG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5jYWNoZWRSZWFkKHRoaXMuZmlsZSk7XHJcbiAgICB0aGlzLmxpbmVzID0gY29udGVudC5zcGxpdChcIlxcblwiKTtcclxuXHJcbiAgICB0aGlzLmxpc3RJdGVtcyA9IGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZSh0aGlzLmZpbGUpLmxpc3RJdGVtcztcclxuXHJcbiAgICBjb25zb2xlLmxvZyh0aGlzKTtcclxuICAgIHN1cGVyLm9uT3BlbigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbXMoKTogSE5JdGVtW10ge1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmxpc3RJdGVtc1xyXG4gICAgICAubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaSA9IGl0ZW0ucG9zaXRpb24uc3RhcnQubGluZTtcclxuICAgICAgICByZXR1cm4geyBpLCBsaW5lOiB0aGlzLmxpbmVzW2ldIH07XHJcbiAgICAgIH0pXHJcbiAgICAgIC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBjb25zdCBzcGxpdHMgPSBpdGVtLmxpbmUuc3BsaXQoXCItIFwiKTtcclxuICAgICAgICBjb25zdCBkZXB0aCA9IHNwbGl0c1swXS5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgbGluZSA9IHNwbGl0cy5zbGljZSgxKS5qb2luKFwiLSBcIik7XHJcblxyXG4gICAgICAgIHJldHVybiB7IGRlcHRoLCBsaW5lLCBsaW5lTm86IGl0ZW0uaSB9O1xyXG4gICAgICB9KTtcclxuXHJcbiAgICBpbmZvKGl0ZW1zKTtcclxuICAgIHJldHVybiBpdGVtcztcclxuICB9XHJcblxyXG4gIGdldEl0ZW1UZXh0KGl0ZW06IEhOSXRlbSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7XCIgXCIucmVwZWF0KGl0ZW0uZGVwdGgpfS0gJHtkcm9wV2lraWxpbmtzKGl0ZW0ubGluZSl9YDtcclxuICB9XHJcblxyXG4gIHJlbmRlclN1Z2dlc3Rpb24oaXRlbTogRnV6enlNYXRjaDxITkl0ZW0+LCBlbDogSFRNTEVsZW1lbnQpIHtcclxuICAgIHN1cGVyLnJlbmRlclN1Z2dlc3Rpb24oaXRlbSwgZWwpO1xyXG4gICAgZWwuaW5uZXJUZXh0ID0gYCR7XCIgXCIucmVwZWF0KGl0ZW0uaXRlbS5kZXB0aCl9LSAke2Ryb3BXaWtpbGlua3MoXHJcbiAgICAgIGl0ZW0uaXRlbS5saW5lXHJcbiAgICApfWA7XHJcbiAgfVxyXG5cclxuICBhc3luYyBkZWxldGVJdGVtKGl0ZW06IEhOSXRlbSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5saW5lcy5zcGxpY2UoaXRlbS5saW5lTm8sIDEpO1xyXG4gICAgICB0aGlzLmxpc3RJdGVtcy5zcGxpY2UoaXRlbS5saW5lTm8sIDEpO1xyXG4gICAgICBhd2FpdCBhcHAudmF1bHQubW9kaWZ5KHRoaXMuZmlsZSwgdGhpcy5saW5lcy5qb2luKFwiXFxuXCIpKTtcclxuICAgICAgbmV3IE5vdGljZShcIkl0ZW0gZGVsZXRlZCBTdWNjZXNmdWxseVwiKTtcclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICBlcnJvcihlcnIpO1xyXG4gICAgICBuZXcgTm90aWNlKFwiQW4gZXJyb3Igb2NjdXJlZC4gUGxlYXNlIGNoZWNrIHRoZSBjb25zb2xlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaG9vc2VJdGVtKGl0ZW06IEhOSXRlbSwgZXZ0OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2dCBpbnN0YW5jZW9mIEtleWJvYXJkRXZlbnQgJiYgZXZ0LmtleSA9PT0gXCJEZWxldGVcIikge1xyXG4gICAgICB0aGlzLmRlbGV0ZUl0ZW0oaXRlbSk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICBldnQgaW5zdGFuY2VvZiBLZXlib2FyZEV2ZW50ICYmXHJcbiAgICAgIGV2dC5rZXkgPT0gXCJFbnRlclwiICYmXHJcbiAgICAgIGV2dC5zaGlmdEtleVxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IHZpZXcgPSBhcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcclxuICAgICAgY29uc3QgeyBlZGl0b3IgfSA9IHZpZXcgPz8ge307XHJcbiAgICAgIGlmICghZWRpdG9yKSByZXR1cm47XHJcbiAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICB2aWV3LmxlYWYub3BlbkZpbGUodGhpcy5maWxlLCB7IGFjdGl2ZTogdHJ1ZSwgbW9kZTogXCJzb3VyY2VcIiB9KTtcclxuICAgICAgZWRpdG9yLnNldEN1cnNvcih7IGxpbmU6IGl0ZW0ubGluZU5vLCBjaDogaXRlbS5kZXB0aCArIDIgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2dCBpbnN0YW5jZW9mIEtleWJvYXJkRXZlbnQgfHwgZXZ0IGluc3RhbmNlb2YgTW91c2VFdmVudCkge1xyXG4gICAgICBsZXQgcmVsOiBcInVwXCIgfCBcImRvd25cIiB8IFwic2FtZVwiO1xyXG4gICAgICBpZiAoZXZ0IGluc3RhbmNlb2YgTW91c2VFdmVudCAmJiBldnQudHlwZSA9PSBcImNsaWNrXCIpIHJlbCA9IFwiZG93blwiO1xyXG4gICAgICBpZiAoZXZ0IGluc3RhbmNlb2YgS2V5Ym9hcmRFdmVudCkgaWYgKGV2dC5rZXkgPT09IFwiRW50ZXJcIikgcmVsID0gXCJkb3duXCI7XHJcbiAgICAgIGlmIChldnQgaW5zdGFuY2VvZiBLZXlib2FyZEV2ZW50ICYmIGV2dC5zaGlmdEtleSkge1xyXG4gICAgICAgIGlmIChldnQua2V5ID09PSBcIkFycm93VXBcIikgcmVsID0gXCJ1cFwiO1xyXG4gICAgICAgIGlmIChldnQua2V5ID09PSBcIkFycm93RG93blwiKSByZWwgPSBcImRvd25cIjtcclxuICAgICAgICBpZiAoZXZ0LmtleSA9PT0gXCJBcnJvd1JpZ2h0XCIpIHJlbCA9IFwic2FtZVwiO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBuZXcgTW9kaWZ5SGllckl0ZW1Nb2RhbChcclxuICAgICAgICB0aGlzLnBsdWdpbixcclxuICAgICAgICBpdGVtLFxyXG4gICAgICAgIHRoaXMuZmlsZSxcclxuICAgICAgICByZWxcclxuICAgICAgKS5vcGVuKCk7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwgImltcG9ydCB7IE1vZGFsLCBURmlsZSB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgTW9kaWZ5SE5JdGVtQ29tcCBmcm9tIFwiLi4vLi4vQ29tcG9uZW50cy9Nb2RpZnlITkl0ZW1Db21wLnN2ZWx0ZVwiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vLi4vbWFpblwiO1xyXG5cclxuaW50ZXJmYWNlIEhOSXRlbSB7XHJcbiAgZGVwdGg6IG51bWJlcjtcclxuICBsaW5lOiBzdHJpbmc7XHJcbiAgbGluZU5vOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBNb2RpZnlIaWVySXRlbU1vZGFsIGV4dGVuZHMgTW9kYWwge1xyXG4gIG1vdW50OiBNb2RpZnlITkl0ZW1Db21wO1xyXG4gIHBsdWdpbjogQkNQbHVnaW47XHJcbiAgbW9kYWw6IE1vZGlmeUhpZXJJdGVtTW9kYWw7XHJcbiAgaG5JdGVtOiBITkl0ZW07XHJcbiAgZmlsZTogVEZpbGU7XHJcbiAgcmVsOiBcInVwXCIgfCBcInNhbWVcIiB8IFwiZG93blwiO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgICBobkl0ZW06IEhOSXRlbSxcclxuICAgIGZpbGU6IFRGaWxlLFxyXG4gICAgcmVsOiBcInVwXCIgfCBcInNhbWVcIiB8IFwiZG93blwiXHJcbiAgKSB7XHJcbiAgICBzdXBlcihhcHApO1xyXG4gICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XHJcbiAgICB0aGlzLm1vZGFsID0gdGhpcztcclxuICAgIHRoaXMuaG5JdGVtID0gaG5JdGVtO1xyXG4gICAgdGhpcy5maWxlID0gZmlsZTtcclxuICAgIHRoaXMucmVsID0gcmVsO1xyXG4gIH1cclxuXHJcbiAgb25PcGVuKCkge1xyXG4gICAgY29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XHJcbiAgICBjb250ZW50RWwuZW1wdHkoKTtcclxuXHJcbiAgICB0aGlzLm1vdW50ID0gbmV3IE1vZGlmeUhOSXRlbUNvbXAoe1xyXG4gICAgICB0YXJnZXQ6IGNvbnRlbnRFbCxcclxuICAgICAgcHJvcHM6IHtcclxuICAgICAgICBtb2RhbDogdGhpcyxcclxuICAgICAgICBzZXR0aW5nczogdGhpcy5wbHVnaW4uc2V0dGluZ3MsXHJcbiAgICAgICAgaG5JdGVtOiB0aGlzLmhuSXRlbSxcclxuICAgICAgICBmaWxlOiB0aGlzLmZpbGUsXHJcbiAgICAgICAgcmVsOiB0aGlzLnJlbCxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZSgpIHtcclxuICAgIHRoaXMubW91bnQuJGRlc3Ryb3koKTtcclxuICAgIHRoaXMuY29udGVudEVsLmVtcHR5KCk7XHJcbiAgfVxyXG59XHJcbiIsIG51bGwsICI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG4gIGltcG9ydCB7IGVycm9yIH0gZnJvbSBcImNvbnNvbGVcIjtcclxuICBpbXBvcnQgeyBOb3RpY2UsIFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbiAgaW1wb3J0IHR5cGUgeyBNb2RpZnlIaWVySXRlbU1vZGFsIH0gZnJvbSBcIi4uL0FsdGVybmF0aXZlSGllcmFyY2hpZXMvSGllcmFyY2h5Tm90ZXMvTW9kaWZ5SGllckl0ZW1Nb2RhbFwiO1xyXG4gIGltcG9ydCB7IEFSUk9XX0RJUkVDVElPTlMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbiAgaW1wb3J0IHR5cGUgeyBCQ1NldHRpbmdzIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuICBpbXBvcnQgeyBkcm9wV2lraWxpbmtzLCBtYWtlV2lraSB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG4gIGV4cG9ydCBsZXQgbW9kYWw6IE1vZGlmeUhpZXJJdGVtTW9kYWw7XHJcbiAgZXhwb3J0IGxldCBzZXR0aW5nczogQkNTZXR0aW5ncztcclxuICBleHBvcnQgbGV0IGhuSXRlbTogSE5JdGVtO1xyXG4gIGV4cG9ydCBsZXQgZmlsZTogVEZpbGU7XHJcbiAgZXhwb3J0IGxldCByZWw6IFwidXBcIiB8IFwic2FtZVwiIHwgXCJkb3duXCI7XHJcblxyXG4gIGludGVyZmFjZSBITkl0ZW0ge1xyXG4gICAgZGVwdGg6IG51bWJlcjtcclxuICAgIGxpbmU6IHN0cmluZztcclxuICAgIGxpbmVObzogbnVtYmVyO1xyXG4gIH1cclxuICBsZXQgaW5wdXRFbDogSFRNTElucHV0RWxlbWVudDtcclxuXHJcbiAgLy9AdHMtaWdub3JlXHJcbiAgbGV0IG5ld0l0ZW0gPSBhcHAud29ya3NwYWNlLmFjdGl2ZUxlYWYudmlldy5maWxlLmJhc2VuYW1lO1xyXG5cclxuICBjb25zdCBidWlsZE5ld0l0ZW0gPSAoXHJcbiAgICBuZXdJdGVtOiBzdHJpbmcsXHJcbiAgICBkZXB0aCA9IGhuSXRlbS5kZXB0aCxcclxuICAgIHByZXZpZXcgPSBmYWxzZVxyXG4gICkgPT5cclxuICAgIGAke1wiIFwiLnJlcGVhdChNYXRoLnJvdW5kKGRlcHRoIC8gKHByZXZpZXcgPyAyIDogMSkpKX0tICR7XHJcbiAgICAgIHByZXZpZXcgPyBuZXdJdGVtIHx8IFwiPEVtcHR5PlwiIDogbWFrZVdpa2kobmV3SXRlbSlcclxuICAgIH1gO1xyXG5cclxuICAvLyBvbk1vdW50KGlucHV0RWwuZm9jdXMpO1xyXG48L3NjcmlwdD5cclxuXHJcbjxoNT5BZGQgYW4ge0FSUk9XX0RJUkVDVElPTlNbcmVsXX0gdG8ge2Ryb3BXaWtpbGlua3MoaG5JdGVtLmxpbmUpfTwvaDU+XHJcbjxkaXY+XHJcbiAgeyNpZiByZWwgPT09IFwidXBcIn1cclxuICAgIHsjaWYgaG5JdGVtLmRlcHRoID09PSAwfVxyXG4gICAgICA8ZGl2PkNhbid0IGFkZCBwYXJlbnQgdG8gdG9wIGxldmVsIGl0ZW0sIGNob29zZSBhbm90aGVyIGRpcmVjdGlvbjwvZGl2PlxyXG4gICAgezplbHNlfVxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxwcmU+XHJcbiAgICAgICAgICB7YnVpbGROZXdJdGVtKG5ld0l0ZW0sIGhuSXRlbS5kZXB0aCAtIDQsIHRydWUpfVxyXG4gICAgICAgIDwvcHJlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIHsvaWZ9XHJcbiAgey9pZn1cclxuICA8ZGl2PlxyXG4gICAgPHByZT5cclxuICAgICAgICA8c3Ryb25nXHJcbiAgICAgICAgPntidWlsZE5ld0l0ZW0oZHJvcFdpa2lsaW5rcyhobkl0ZW0ubGluZSksIGhuSXRlbS5kZXB0aCwgdHJ1ZSl9PC9zdHJvbmdcclxuICAgICAgPlxyXG4gICAgPC9wcmU+XHJcbiAgPC9kaXY+XHJcbiAgeyNpZiByZWwgPT09IFwic2FtZVwifVxyXG4gICAgPGRpdj5cclxuICAgICAgPHByZT5cclxuICAgICAgICB7YnVpbGROZXdJdGVtKG5ld0l0ZW0sIGhuSXRlbS5kZXB0aCwgdHJ1ZSl9XHJcbiAgICA8L3ByZT5cclxuICAgIDwvZGl2PlxyXG4gIHs6ZWxzZSBpZiByZWwgPT09IFwiZG93blwifVxyXG4gICAgPGRpdj5cclxuICAgICAgPHByZT5cclxuICAgICAgICB7YnVpbGROZXdJdGVtKG5ld0l0ZW0sIGhuSXRlbS5kZXB0aCArIDQsIHRydWUpfVxyXG4gICAgPC9wcmU+XHJcbiAgICA8L2Rpdj5cclxuICB7L2lmfVxyXG5cclxuICA8IS0tIHN2ZWx0ZS1pZ25vcmUgYTExeS1uby1vbmNoYW5nZSAtLT5cclxuICA8c2VsZWN0IGNsYXNzPVwiZHJvcGRvd25cIiB3aWR0aD1cIjFcIiBiaW5kOnZhbHVlPXtyZWx9PlxyXG4gICAgPG9wdGlvbiB2YWx1ZT1cInVwXCI+dXA8L29wdGlvbj5cclxuICAgIDxvcHRpb24gdmFsdWU9XCJzYW1lXCI+c2FtZTwvb3B0aW9uPlxyXG4gICAgPG9wdGlvbiB2YWx1ZT1cImRvd25cIj5kb3duPC9vcHRpb24+XHJcbiAgPC9zZWxlY3Q+XHJcblxyXG4gIDxpbnB1dFxyXG4gICAgdHlwZT1cInRleHRcIlxyXG4gICAgcGxhY2Vob2xkZXI9XCJOZXcgaXRlbVwiXHJcbiAgICBiaW5kOnRoaXM9e2lucHV0RWx9XHJcbiAgICBiaW5kOnZhbHVlPXtuZXdJdGVtfVxyXG4gIC8+XHJcblxyXG4gIDxidXR0b25cclxuICAgIG9uOmNsaWNrPXthc3luYyAoZSkgPT4ge1xyXG4gICAgICBpZiAocmVsID09PSBcInVwXCIgJiYgaG5JdGVtLmRlcHRoID09PSAwKSB7XHJcbiAgICAgICAgbmV3IE5vdGljZShcclxuICAgICAgICAgIFwiQ2FuJ3QgYWRkIHBhcmVudCB0byB0b3AgbGV2ZWwgaXRlbSwgY2hvb3NlIGFub3RoZXIgZGlyZWN0aW9uXCJcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5yZWFkKGZpbGUpO1xyXG4gICAgICAgICAgY29uc3QgbGluZXMgPSBjb250ZW50LnNwbGl0KFwiXFxuXCIpO1xyXG4gICAgICAgICAgY29uc3QgbGluZU5vID0gcmVsID09PSBcInVwXCIgPyBobkl0ZW0ubGluZU5vIDogaG5JdGVtLmxpbmVObyArIDE7XHJcblxyXG4gICAgICAgICAgY29uc3QgZGVwdGggPVxyXG4gICAgICAgICAgICByZWwgPT09IFwidXBcIlxyXG4gICAgICAgICAgICAgID8gaG5JdGVtLmRlcHRoIC0gNFxyXG4gICAgICAgICAgICAgIDogcmVsID09PSBcImRvd25cIlxyXG4gICAgICAgICAgICAgID8gaG5JdGVtLmRlcHRoICsgNFxyXG4gICAgICAgICAgICAgIDogaG5JdGVtLmRlcHRoO1xyXG5cclxuICAgICAgICAgIGxpbmVzLnNwbGljZShsaW5lTm8sIDAsIGJ1aWxkTmV3SXRlbShuZXdJdGVtLCBkZXB0aCkpO1xyXG4gICAgICAgICAgYXdhaXQgYXBwLnZhdWx0Lm1vZGlmeShmaWxlLCBsaW5lcy5qb2luKFwiXFxuXCIpKTtcclxuICAgICAgICAgIG1vZGFsLmNsb3NlKCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICBlcnJvcihlcnIpO1xyXG4gICAgICAgICAgbmV3IE5vdGljZShcIkFuIGVycm9yIG9jY3VyZWQsIHBsZWFzZSBjaGVjayB0aGUgY29uc29sZVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH19PkFkZDwvYnV0dG9uXHJcbiAgPlxyXG48L2Rpdj5cclxuXHJcbjxzdHlsZT5cclxuICBwcmUge1xyXG4gICAgZGlzcGxheTogaW5saW5lO1xyXG4gIH1cclxuPC9zdHlsZT5cclxuIiwgImltcG9ydCB7IGluZm8gfSBmcm9tIFwibG9nbGV2ZWxcIjtcclxuaW1wb3J0IHsgTWFya2Rvd25Qb3N0UHJvY2Vzc29yQ29udGV4dCwgTm90aWNlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IGdldERWQXBpIH0gZnJvbSBcIi4vVXRpbHMvT2JzaWRpYW5VdGlsc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVJbmRleCwgaW5kZXhUb0xpbmVQYWlycyB9IGZyb20gXCIuL0NvbW1hbmRzL0NyZWF0ZUluZGV4XCI7XHJcbmltcG9ydCBDQlRyZWUgZnJvbSBcIi4vQ29tcG9uZW50cy9DQlRyZWUuc3ZlbHRlXCI7XHJcbmltcG9ydCB7IENPREVCTE9DS19GSUVMRFMsIENPREVCTE9DS19UWVBFUywgRElSRUNUSU9OUyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgdHlwZSB7IENvZGVibG9ja0ZpZWxkcywgUGFyc2VkQ29kZWJsb2NrIH0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi9tYWluXCI7XHJcbmltcG9ydCB7IGRyb3BGb2xkZXIsIHNwbGl0QW5kVHJpbSB9IGZyb20gXCIuL1V0aWxzL2dlbmVyYWxVdGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIGRmc0FsbFBhdGhzLFxyXG4gIGdldFJlZmxleGl2ZUNsb3N1cmUsXHJcbiAgZ2V0U3ViRm9yRmllbGRzLFxyXG4gIGdldFN1YkluRGlycyxcclxufSBmcm9tIFwiLi9VdGlscy9ncmFwaFV0aWxzXCI7XHJcbmltcG9ydCB7IGdldEZpZWxkSW5mbywgZ2V0RmllbGRzLCBnZXRPcHBEaXIgfSBmcm9tIFwiLi9VdGlscy9IaWVyVXRpbHNcIjtcclxuaW1wb3J0IHsgY3JlYXRlSnVnZ2wgfSBmcm9tIFwiLi9WaXN1YWxpc2F0aW9ucy9KdWdnbFwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENvZGVibG9ja0NCKHBsdWdpbjogQkNQbHVnaW4pIHtcclxuICBjb25zdCB7IHNldHRpbmdzLCBkYiB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgdXNlckhpZXJzLCBjcmVhdGVJbmRleEluZGVudCB9ID0gc2V0dGluZ3M7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICBzb3VyY2U6IHN0cmluZyxcclxuICAgIGVsOiBIVE1MRWxlbWVudCxcclxuICAgIGN0eDogTWFya2Rvd25Qb3N0UHJvY2Vzc29yQ29udGV4dFxyXG4gICkgPT4ge1xyXG4gICAgZGIuc3RhcnQyRyhcIkNvZGVibG9ja1wiKTtcclxuICAgIGNvbnN0IHBhcnNlZFNvdXJjZSA9IHBhcnNlQ29kZUJsb2NrU291cmNlKHNvdXJjZSk7XHJcbiAgICBjb25zdCBlcnIgPSBjb2RlYmxvY2tFcnJvcihwbHVnaW4sIHBhcnNlZFNvdXJjZSk7XHJcblxyXG4gICAgaWYgKGVyciAhPT0gXCJcIikge1xyXG4gICAgICBlbC5pbm5lckhUTUwgPSBlcnI7XHJcbiAgICAgIGRiLmVuZDJHKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgbWluID0gMCxcclxuICAgICAgbWF4ID0gSW5maW5pdHk7XHJcbiAgICBsZXQgeyBkZXB0aCwgZGlyLCBmaWVsZHMsIGZyb20sIGltcGxpZWQsIGZsYXQgfSA9IHBhcnNlZFNvdXJjZTtcclxuICAgIGlmIChkZXB0aCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbnN0IG1pbk51bSA9IHBhcnNlSW50KGRlcHRoWzBdKTtcclxuICAgICAgaWYgKCFpc05hTihtaW5OdW0pKSBtaW4gPSBtaW5OdW07XHJcbiAgICAgIGNvbnN0IG1heE51bSA9IHBhcnNlSW50KGRlcHRoWzFdKTtcclxuICAgICAgaWYgKCFpc05hTihtYXhOdW0pKSBtYXggPSBtYXhOdW07XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNvbnN0IGN1cnJGaWxlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Rmlyc3RMaW5rcGF0aERlc3QoXHJcbiAgICAgIGN0eC5zb3VyY2VQYXRoLFxyXG4gICAgICBcIlwiXHJcbiAgICApO1xyXG4gICAgY29uc3QgeyBiYXNlbmFtZSB9ID0gY3VyckZpbGU7XHJcblxyXG4gICAgbGV0IGZyb21zID0gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGZyb20gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IGFwaSA9IGdldERWQXBpKHBsdWdpbik7XHJcbiAgICAgICAgaWYgKGFwaSkge1xyXG4gICAgICAgICAgY29uc3QgcGFnZXMgPSBhcGkucGFnZVBhdGhzKGZyb20pPy52YWx1ZXM7XHJcbiAgICAgICAgICBmcm9tcyA9IHBhZ2VzLm1hcChkcm9wRm9sZGVyKTtcclxuICAgICAgICB9IGVsc2UgbmV3IE5vdGljZShcIkRhdGF2aWV3IG11c3QgYmUgZW5hYmxlZCBmb3IgYGZyb21gIHRvIHdvcmsuXCIpO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgbmV3IE5vdGljZShgVGhlIHF1ZXJ5IFwiJHtmcm9tfVwiIGZhaWxlZC5gKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9wcERpciA9IGdldE9wcERpcihkaXIpO1xyXG4gICAgY29uc3Qgc3ViID1cclxuICAgICAgaW1wbGllZCA9PT0gZmFsc2VcclxuICAgICAgICA/IGdldFN1YkluRGlycyhwbHVnaW4ubWFpbkcsIGRpcilcclxuICAgICAgICA6IGdldFN1YkluRGlycyhwbHVnaW4ubWFpbkcsIGRpciwgb3BwRGlyKTtcclxuICAgIGNvbnN0IGNsb3NlZCA9IGdldFJlZmxleGl2ZUNsb3N1cmUoc3ViLCB1c2VySGllcnMpO1xyXG5cclxuICAgIGNvbnN0IHN1YkZpZWxkcyA9IGZpZWxkcyA/PyBnZXRGaWVsZHModXNlckhpZXJzKTtcclxuICAgIGNvbnN0IHN1YkNsb3NlZCA9IGdldFN1YkZvckZpZWxkcyhnZXRTdWJJbkRpcnMoY2xvc2VkLCBkaXIpLCBzdWJGaWVsZHMpO1xyXG5cclxuXHJcbiAgICBjb25zdCBhbGxQYXRocyA9IGRmc0FsbFBhdGhzKHN1YkNsb3NlZCwgYmFzZW5hbWUpO1xyXG4gICAgY29uc3QgaW5kZXggPSBjcmVhdGVJbmRleChhbGxQYXRocywgZmFsc2UsIGNyZWF0ZUluZGV4SW5kZW50KTtcclxuICAgIGluZm8oeyBhbGxQYXRocywgaW5kZXggfSk7XHJcblxyXG4gICAgY29uc3QgbGluZXMgPSBpbmRleFRvTGluZVBhaXJzKGluZGV4LCBmbGF0KTtcclxuXHJcbiAgICBzd2l0Y2ggKHBhcnNlZFNvdXJjZS50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJ0cmVlXCI6XHJcbiAgICAgICAgbmV3IENCVHJlZSh7XHJcbiAgICAgICAgICB0YXJnZXQ6IGVsLFxyXG4gICAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgICAgcGx1Z2luLFxyXG4gICAgICAgICAgICBlbCxcclxuICAgICAgICAgICAgbWluLFxyXG4gICAgICAgICAgICBtYXgsXHJcbiAgICAgICAgICAgIGxpbmVzLFxyXG4gICAgICAgICAgICBmcm9tcyxcclxuICAgICAgICAgICAgYmFzZW5hbWUsXHJcbiAgICAgICAgICAgIHBhcnNlZFNvdXJjZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJqdWdnbFwiOlxyXG4gICAgICAgIGNyZWF0ZWRKdWdnbENCKFxyXG4gICAgICAgICAgcGx1Z2luLFxyXG4gICAgICAgICAgZWwsXHJcbiAgICAgICAgICBwYXJzZWRTb3VyY2UsXHJcbiAgICAgICAgICBsaW5lcyxcclxuICAgICAgICAgIGZyb21zLFxyXG4gICAgICAgICAgYmFzZW5hbWUsXHJcbiAgICAgICAgICBtaW4sXHJcbiAgICAgICAgICBtYXhcclxuICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGRiLmVuZDJHKCk7XHJcbiAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFBhcnNlIGEgc3RyaW5nIGFzIGEgYm9vbGVhbiB2YWx1ZS4gSWYgbm90IFwidHJ1ZVwiIG9yIFwiZmFsc2VcIiwgcmV0dXJuIGB2YWx1ZWAuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIHN0cmluZ1xyXG4gKiBAcmV0dXJucyB7c3RyaW5nIHwgYm9vbGVhbn1cclxuICovXHJcbmNvbnN0IHBhcnNlQXNCb29sID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgfCBib29sZWFuID0+XHJcbiAgdmFsdWUgPT09IFwidHJ1ZVwiID8gdHJ1ZSA6IHZhbHVlID09PSBcImZhbHNlXCIgPyBmYWxzZSA6IHZhbHVlO1xyXG5cclxuZnVuY3Rpb24gcGFyc2VDb2RlQmxvY2tTb3VyY2Uoc291cmNlOiBzdHJpbmcpOiBQYXJzZWRDb2RlYmxvY2sge1xyXG4gIGNvbnN0IGxpbmVzID0gc291cmNlLnNwbGl0KFwiXFxuXCIpO1xyXG4gIGNvbnN0IGdldFZhbHVlID0gKHR5cGU6IHN0cmluZykgPT5cclxuICAgIGxpbmVzXHJcbiAgICAgIC5maW5kKChsKSA9PiBsLnN0YXJ0c1dpdGgoYCR7dHlwZX06YCkpXHJcbiAgICAgID8uc3BsaXQoXCI6XCIpPy5bMV1cclxuICAgICAgPy50cmltKCk7XHJcblxyXG4gIGNvbnN0IHJlc3VsdHM6IHsgW2ZpZWxkIGluIENvZGVibG9ja0ZpZWxkc106IHN0cmluZyB8IGJvb2xlYW4gfCBzdHJpbmdbXSB9ID1cclxuICAgIHt9O1xyXG5cclxuICBDT0RFQkxPQ0tfRklFTERTLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGdldFZhbHVlKGZpZWxkKTtcclxuICAgIHJlc3VsdHNbZmllbGRdID0gcGFyc2VBc0Jvb2wodmFsdWUpO1xyXG4gIH0pO1xyXG5cclxuICByZXN1bHRzLmZpZWxkcyA9IHJlc3VsdHMuZmllbGRzXHJcbiAgICA/IHNwbGl0QW5kVHJpbShyZXN1bHRzLmZpZWxkcyBhcyBzdHJpbmcpXHJcbiAgICA6IHVuZGVmaW5lZDtcclxuXHJcbiAgaWYgKHJlc3VsdHMuZGVwdGgpIHtcclxuICAgIGNvbnN0IG1hdGNoID0gKHJlc3VsdHMuZGVwdGggYXMgc3RyaW5nKS5tYXRjaCgvKFxcZCopLT8oXFxkKikvKTtcclxuICAgIHJlc3VsdHMuZGVwdGggPSBbbWF0Y2hbMV0sIG1hdGNoWzJdXTtcclxuICB9XHJcblxyXG4gIHJldHVybiByZXN1bHRzIGFzIHVua25vd24gYXMgUGFyc2VkQ29kZWJsb2NrO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjb2RlYmxvY2tFcnJvcihwbHVnaW46IEJDUGx1Z2luLCBwYXJzZWRTb3VyY2U6IFBhcnNlZENvZGVibG9jaykge1xyXG4gIGNvbnN0IHsgZGlyLCBmaWVsZHMsIHR5cGUsIHRpdGxlLCBkZXB0aCwgZmxhdCwgY29udGVudCwgZnJvbSwgaW1wbGllZCB9ID1cclxuICAgIHBhcnNlZFNvdXJjZTtcclxuICBjb25zdCB7IHVzZXJIaWVycyB9ID0gcGx1Z2luLnNldHRpbmdzO1xyXG4gIGxldCBlcnIgPSBcIlwiO1xyXG5cclxuICBpZiAoIUNPREVCTE9DS19UWVBFUy5pbmNsdWRlcyh0eXBlKSlcclxuICAgIGVyciArPSBgPGNvZGU+dHlwZTogJHt0eXBlfTwvY29kZT4gaXMgbm90IGEgdmFsaWQgdHlwZS4gSXQgbXVzdCBiZSBvbmUgb2Y6ICR7Q09ERUJMT0NLX1RZUEVTLm1hcChcclxuICAgICAgKHR5cGUpID0+IGA8Y29kZT4ke3R5cGV9PC9jb2RlPmBcclxuICAgICkuam9pbihcIiwgXCIpfS48L2JyPmA7XHJcblxyXG4gIGNvbnN0IHZhbGlkRGlyID0gRElSRUNUSU9OUy5pbmNsdWRlcyhkaXIpO1xyXG4gIGlmICghdmFsaWREaXIpXHJcbiAgICBlcnIgKz0gYDxjb2RlPmRpcjogJHtkaXJ9PC9jb2RlPiBpcyBub3QgYSB2YWxpZCBkaXJlY3Rpb24uPC9icj5gO1xyXG5cclxuICBjb25zdCBhbGxGaWVsZHMgPSBnZXRGaWVsZHModXNlckhpZXJzKTtcclxuICBbZmllbGRzXS5mbGF0KCk/LmZvckVhY2goKGYpID0+IHtcclxuICAgIGlmIChmICE9PSB1bmRlZmluZWQgJiYgIWFsbEZpZWxkcy5pbmNsdWRlcyhmKSlcclxuICAgICAgZXJyICs9IGA8Y29kZT5maWVsZHM6ICR7Zn08L2NvZGU+IGlzIG5vdCBhIGZpZWxkIGluIHlvdXIgaGllcmFyY2hpZXMuPC9icj5gO1xyXG4gIH0pO1xyXG5cclxuICBpZiAodGl0bGUgIT09IHVuZGVmaW5lZCAmJiB0aXRsZSAhPT0gZmFsc2UpXHJcbiAgICBlcnIgKz0gYDxjb2RlPnRpdGxlOiAke3RpdGxlfTwvY29kZT4gaXMgbm90IGEgdmFsaWQgdmFsdWUuIEl0IGhhcyB0byBiZSA8Y29kZT5mYWxzZTwvY29kZT4sIG9yIGxlYXZlIHRoZSBlbnRpcmUgbGluZSBvdXQuPC9icj5gO1xyXG5cclxuICBpZiAoZGVwdGggIT09IHVuZGVmaW5lZCAmJiBkZXB0aC5ldmVyeSgobnVtKSA9PiBpc05hTihwYXJzZUludChudW0pKSkpXHJcbiAgICBlcnIgKz0gYDxjb2RlPmRlcHRoOiAke2RlcHRofTwvY29kZT4gaXMgbm90IGEgdmFsaWQgdmFsdWUuIEl0IGhhcyB0byBiZSBhIG51bWJlci48L2JyPmA7XHJcblxyXG4gIGlmIChmbGF0ICE9PSB1bmRlZmluZWQgJiYgZmxhdCAhPT0gdHJ1ZSlcclxuICAgIGVyciArPSBgPGNvZGU+ZmxhdDogJHtmbGF0fTwvY29kZT4gaXMgbm90IGEgdmFsaWQgdmFsdWUuIEl0IGhhcyB0byBiZSA8Y29kZT50cnVlPC9jb2RlPiwgb3IgbGVhdmUgdGhlIGVudGlyZSBsaW5lIG91dC48L2JyPmA7XHJcblxyXG4gIGlmIChjb250ZW50ICE9PSB1bmRlZmluZWQgJiYgY29udGVudCAhPT0gXCJvcGVuXCIgJiYgY29udGVudCAhPT0gXCJjbG9zZWRcIilcclxuICAgIGVyciArPSBgPGNvZGU+Y29udGVudDogJHtjb250ZW50fTwvY29kZT4gaXMgbm90IGEgdmFsaWQgdmFsdWUuIEl0IGhhcyB0byBiZSA8Y29kZT5vcGVuPC9jb2RlPiBvciA8Y29kZT5jbG9zZWQ8L2NvZGU+LCBvciBsZWF2ZSB0aGUgZW50aXJlIGxpbmUgb3V0LjwvYnI+YDtcclxuXHJcbiAgaWYgKFxyXG4gICAgZnJvbSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAhYXBwLnBsdWdpbnMuZW5hYmxlZFBsdWdpbnMuaGFzKFwiZGF0YXZpZXdcIilcclxuICApIHtcclxuICAgIGVyciArPSBgRGF0YXZpZXcgbXVzdCBiZSBlbmFibGVkIHRvIHVzZSA8Y29kZT5mcm9tPC9jb2RlPi48L2JyPmA7XHJcbiAgfVxyXG5cclxuICBpZiAoaW1wbGllZCAhPT0gdW5kZWZpbmVkICYmIGltcGxpZWQgIT09IGZhbHNlKVxyXG4gICAgZXJyICs9IGA8Y29kZT5pbXBsaWVkOiAke2ltcGxpZWR9PC9jb2RlPiBpcyBub3QgYSB2YWxpZCB2YWx1ZS4gSXQgaGFzIHRvIGJlIDxjb2RlPmZhbHNlPC9jb2RlPiwgb3IgbGVhdmUgdGhlIGVudGlyZSBsaW5lIG91dC48L2JyPmA7XHJcblxyXG4gIHJldHVybiBlcnIgPT09IFwiXCJcclxuICAgID8gXCJcIlxyXG4gICAgOiBgJHtlcnJ9PC9icj5cclxuICAgIEEgdmFsaWQgZXhhbXBsZSB3b3VsZCBiZTpcclxuICAgIDxwcmU+PGNvZGU+XHJcbiAgICAgIHR5cGU6IHRyZWVcclxuICAgICAgZGlyOiAke3ZhbGlkRGlyID8gZGlyIDogXCJkb3duXCJ9XHJcbiAgICAgIGZpZWxkczogJHthbGxGaWVsZHNcclxuICAgICAgLm1hcCgoZikgPT4ge1xyXG4gICAgICAgIHJldHVybiB7IGYsIGRpcjogZ2V0RmllbGRJbmZvKHVzZXJIaWVycywgZikuZmllbGREaXIgfTtcclxuICAgICAgfSlcclxuICAgICAgLmZpbHRlcigoaW5mbykgPT4gaW5mby5kaXIgPT09IGRpcilcclxuICAgICAgLm1hcCgoaW5mbykgPT4gaW5mby5mKVxyXG4gICAgICAuam9pbihcIiwgXCIpIHx8IFwiY2hpbGRcIlxyXG4gICAgfVxyXG4gICAgICBkZXB0aDogM1xyXG4gICAgICA8L2NvZGU+PC9wcmU+YDtcclxufVxyXG5cclxuY29uc3QgaW5kZW50VG9EZXB0aCA9IChpbmRlbnQ6IHN0cmluZykgPT4gaW5kZW50Lmxlbmd0aCAvIDIgKyAxO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1lZXRzQ29uZGl0aW9ucyhcclxuICBpbmRlbnQ6IHN0cmluZyxcclxuICBub2RlOiBzdHJpbmcsXHJcbiAgZnJvbXM6IHN0cmluZ1tdLFxyXG4gIG1pbjogbnVtYmVyLFxyXG4gIG1heDogbnVtYmVyXHJcbikge1xyXG4gIGNvbnN0IGRlcHRoID0gaW5kZW50VG9EZXB0aChpbmRlbnQpO1xyXG4gIHJldHVybiAoXHJcbiAgICBkZXB0aCA+PSBtaW4gJiZcclxuICAgIGRlcHRoIDw9IG1heCAmJlxyXG4gICAgKGZyb21zID09PSB1bmRlZmluZWQgfHwgZnJvbXMuaW5jbHVkZXMobm9kZSkpXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZWRKdWdnbENCKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgdGFyZ2V0OiBIVE1MRWxlbWVudCxcclxuICBhcmdzOiBQYXJzZWRDb2RlYmxvY2ssXHJcbiAgbGluZXM6IFtzdHJpbmcsIHN0cmluZ11bXSxcclxuICBmcm9tczogc3RyaW5nW10sXHJcbiAgc291cmNlOiBzdHJpbmcsXHJcbiAgbWluOiBudW1iZXIsXHJcbiAgbWF4OiBudW1iZXJcclxuKSB7XHJcbiAgY29uc3Qgbm9kZXMgPSBsaW5lc1xyXG4gICAgLmZpbHRlcigoW2luZGVudCwgbm9kZV0pID0+IG1lZXRzQ29uZGl0aW9ucyhpbmRlbnQsIG5vZGUsIGZyb21zLCBtaW4sIG1heCkpXHJcbiAgICAubWFwKChbXywgbm9kZV0pID0+IG5vZGUgKyBcIi5tZFwiKTtcclxuICBpZiAobWluIDw9IDApIG5vZGVzLnB1c2goc291cmNlICsgXCIubWRcIik7XHJcblxyXG4gIGNyZWF0ZUp1Z2dsKHBsdWdpbiwgdGFyZ2V0LCBub2RlcywgYXJncyk7XHJcbn1cclxuIiwgbnVsbCwgIjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbiAgaW1wb3J0IHsgTWFya2Rvd25SZW5kZXJlciB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG4gIGltcG9ydCB7IG9uTW91bnQgfSBmcm9tIFwic3ZlbHRlXCI7XHJcblxyXG4gIGV4cG9ydCBsZXQgcGF0aDogc3RyaW5nO1xyXG5cclxuICBhc3luYyBmdW5jdGlvbiBnZXRDb250ZW50KG5vdGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgZmlsZSA9IGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KG5vdGUsIFwiXCIpO1xyXG4gICAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5jYWNoZWRSZWFkKGZpbGUpO1xyXG4gIH1cclxuXHJcbiAgbGV0IGVsOiBIVE1MRWxlbWVudDtcclxuICBvbk1vdW50KGFzeW5jICgpID0+IHtcclxuICAgIE1hcmtkb3duUmVuZGVyZXIucmVuZGVyTWFya2Rvd24oYXdhaXQgZ2V0Q29udGVudChwYXRoKSwgZWwsIHBhdGgsIG51bGwpO1xyXG4gIH0pO1xyXG48L3NjcmlwdD5cclxuXHJcbjxkaXYgY2xhc3M9XCJCQy1ub3RlLWNvbnRlbnRcIiBiaW5kOnRoaXM9e2VsfSAvPlxyXG5cclxuPHN0eWxlPlxyXG4gIGRpdi5CQy1ub3RlLWNvbnRlbnQge1xyXG4gICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xyXG4gIH1cclxuPC9zdHlsZT5cclxuIiwgbnVsbCwgIjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbiAgaW1wb3J0IHtcclxuICAgIGlzSW5WYXVsdCxcclxuICAgIG9wZW5PclN3aXRjaCxcclxuICAgIGhvdmVyUHJldmlldyxcclxuICB9IGZyb20gXCJvYnNpZGlhbi1jb21tdW5pdHktbGliL2Rpc3QvdXRpbHNcIjtcclxuICBpbXBvcnQgeyBtZWV0c0NvbmRpdGlvbnMgfSBmcm9tIFwiLi4vQ29kZWJsb2Nrc1wiO1xyXG4gIGltcG9ydCB0eXBlIHsgUGFyc2VkQ29kZWJsb2NrIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuICBpbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG4gIGltcG9ydCB7IGRyb3BEZW5kcm9uIH0gZnJvbSBcIi4uL1V0aWxzL2dlbmVyYWxVdGlsc1wiO1xyXG4gIGltcG9ydCBSZW5kZXJNYXJrZG93biBmcm9tIFwiLi9SZW5kZXJNYXJrZG93bi5zdmVsdGVcIjtcclxuXHJcbiAgZXhwb3J0IGxldCBwbHVnaW46IEJDUGx1Z2luO1xyXG4gIGV4cG9ydCBsZXQgZWw6IEhUTUxFbGVtZW50O1xyXG4gIGV4cG9ydCBsZXQgbGluZXM6IFtzdHJpbmcsIHN0cmluZ11bXTtcclxuICBleHBvcnQgbGV0IGZyb21zOiBzdHJpbmdbXTtcclxuICBleHBvcnQgbGV0IG1pbjogbnVtYmVyO1xyXG4gIGV4cG9ydCBsZXQgbWF4OiBudW1iZXI7XHJcbiAgZXhwb3J0IGxldCBiYXNlbmFtZTogc3RyaW5nO1xyXG4gIGV4cG9ydCBsZXQgcGFyc2VkU291cmNlOiBQYXJzZWRDb2RlYmxvY2s7XHJcblxyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCB7IHRpdGxlLCBjb250ZW50LCBkaXIgfSA9IHBhcnNlZFNvdXJjZTtcclxuXHJcbiAgY29uc3QgYWN0aXZlTGVhZlZpZXcgPSBhcHAud29ya3NwYWNlLmFjdGl2ZUxlYWYudmlldztcclxuPC9zY3JpcHQ+XHJcblxyXG57I2lmIHRpdGxlICE9PSBmYWxzZX1cclxuICA8aDM+e2Rpcn0gb2Yge2Jhc2VuYW1lfTwvaDM+XHJcbnsvaWZ9XHJcbjxkaXYgY2xhc3M9XCJCQy10cmVlXCI+XHJcbiAgeyNlYWNoIGxpbmVzIGFzIFtpbmRlbnQsIGxpbmtdfVxyXG4gICAgeyNpZiBtZWV0c0NvbmRpdGlvbnMoaW5kZW50LCBsaW5rLCBmcm9tcywgbWluLCBtYXgpfVxyXG4gICAgICB7I2lmIGNvbnRlbnQgPT09IFwib3BlblwiIHx8IGNvbnRlbnQgPT09IFwiY2xvc2VkXCJ9XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxwcmUgY2xhc3M9XCJpbmRlbnRcIj57aW5kZW50fTwvcHJlPlxyXG4gICAgICAgICAgPGRldGFpbHMgb3Blbj17Y29udGVudCA9PT0gXCJvcGVuXCJ9PlxyXG4gICAgICAgICAgICA8c3VtbWFyeT5cclxuICAgICAgICAgICAgICA8IS0tIHN2ZWx0ZS1pZ25vcmUgYTExeS1tb3VzZS1ldmVudHMtaGF2ZS1rZXktZXZlbnRzIC0tPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImludGVybmFsLWxpbmtcIlxyXG4gICAgICAgICAgICAgICAgb246Y2xpY2s9e2FzeW5jIChlKSA9PiBhd2FpdCBvcGVuT3JTd2l0Y2gobGluaywgZSl9XHJcbiAgICAgICAgICAgICAgICBvbjptb3VzZW92ZXI9eyhlKSA9PiBob3ZlclByZXZpZXcoZSwgYWN0aXZlTGVhZlZpZXcsIGxpbmspfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwhLS0gc3ZlbHRlLWlnbm9yZSBhMTF5LW1pc3NpbmctYXR0cmlidXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnRlcm5hbC1saW5rIHtpc0luVmF1bHQobGluaykgPyAnJyA6ICdpcy11bnJlc29sdmVkJ31cIlxyXG4gICAgICAgICAgICAgICAgICA+e2Ryb3BEZW5kcm9uKGxpbmssIHNldHRpbmdzKX08L2FcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3VtbWFyeT5cclxuICAgICAgICAgICAgPFJlbmRlck1hcmtkb3duIHBhdGg9e2xpbmt9IC8+XHJcbiAgICAgICAgICA8L2RldGFpbHM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIHs6ZWxzZX1cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPHByZSBjbGFzcz1cImluZGVudFwiPntpbmRlbnQgKyBcIi1cIn08L3ByZT5cclxuICAgICAgICAgIDwhLS0gc3ZlbHRlLWlnbm9yZSBhMTF5LW1vdXNlLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgLS0+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBjbGFzcz1cImludGVybmFsLWxpbmtcIlxyXG4gICAgICAgICAgICBvbjpjbGljaz17YXN5bmMgKGUpID0+IGF3YWl0IG9wZW5PclN3aXRjaChsaW5rLCBlKX1cclxuICAgICAgICAgICAgb246bW91c2VvdmVyPXsoZSkgPT4gaG92ZXJQcmV2aWV3KGUsIGFjdGl2ZUxlYWZWaWV3LCBsaW5rKX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPCEtLSBzdmVsdGUtaWdub3JlIGExMXktbWlzc2luZy1hdHRyaWJ1dGUgLS0+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwiaW50ZXJuYWwtbGluayB7aXNJblZhdWx0KGxpbmspID8gJycgOiAnaXMtdW5yZXNvbHZlZCd9XCI+XHJcbiAgICAgICAgICAgICAge2Ryb3BEZW5kcm9uKGxpbmssIHNldHRpbmdzKX1cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB7L2lmfVxyXG4gICAgey9pZn1cclxuICB7L2VhY2h9XHJcbjwvZGl2PlxyXG5cclxuPHN0eWxlPlxyXG4gIC5CQy10cmVlIHtcclxuICAgIHBhZGRpbmctbGVmdDogNXB4O1xyXG4gIH1cclxuICAvKiAuQkMtdHJlZSA+IGRpdiB7XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gIH0gKi9cclxuICBwcmUuaW5kZW50IHtcclxuICAgIGRpc3BsYXk6IGlubGluZTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgcG9zaXRpb246IHRvcDtcclxuICB9XHJcbiAgZGV0YWlscyB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgfVxyXG5cclxuICAuaXMtdW5yZXNvbHZlZCB7XHJcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XHJcbiAgfVxyXG48L3N0eWxlPlxyXG4iLCAiaW1wb3J0IHsgTm90aWNlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB0eXBlIHsgRGlyZWN0aW9ucyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IGdldFJlYWxuSW1wbGllZCB9IGZyb20gXCIuLi9VdGlscy9ncmFwaFV0aWxzXCI7XHJcbmltcG9ydCB7Z2V0Q3VyckZpbGV9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24ganVtcFRvRmlyc3REaXIocGx1Z2luOiBCQ1BsdWdpbiwgZGlyOiBEaXJlY3Rpb25zKSB7XHJcbiAgY29uc3QgeyBsaW1pdEp1bXBUb0ZpcnN0RmllbGRzIH0gPSBwbHVnaW4uc2V0dGluZ3M7XHJcbiAgY29uc3QgZmlsZSA9IGdldEN1cnJGaWxlKCk7XHJcbiAgaWYgKCFmaWxlKSB7XHJcbiAgICBuZXcgTm90aWNlKFwiWW91IG5lZWQgdG8gYmUgZm9jdXNzZWQgb24gYSBNYXJrZG93biBmaWxlXCIpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBjb25zdCB7IGJhc2VuYW1lIH0gPSBmaWxlO1xyXG5cclxuICBjb25zdCByZWFsc05JbXBsaWVkcyA9IGdldFJlYWxuSW1wbGllZChwbHVnaW4sIGJhc2VuYW1lLCBkaXIpW2Rpcl07XHJcbiAgY29uc3QgYWxsQkNzID0gWy4uLnJlYWxzTkltcGxpZWRzLnJlYWxzLCAuLi5yZWFsc05JbXBsaWVkcy5pbXBsaWVkc107XHJcbiAgaWYgKGFsbEJDcy5sZW5ndGggPT09IDApIHtcclxuICAgIG5ldyBOb3RpY2UoYE5vICR7ZGlyfSBmb3VuZGApO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgdG9Ob2RlID0gYWxsQkNzLmZpbmQoKGJjKSA9PlxyXG4gICAgbGltaXRKdW1wVG9GaXJzdEZpZWxkcy5pbmNsdWRlcyhiYy5maWVsZClcclxuICApPy50bztcclxuXHJcbiAgaWYgKCF0b05vZGUpIHtcclxuICAgIG5ldyBOb3RpY2UoXHJcbiAgICAgIGBObyBub3RlIHdhcyBmb3VuZCBpbiAke2Rpcn0gZ2l2ZW4gdGhlIGxpbWl0ZWQgZmllbGRzIGFsbG93ZWQ6ICR7bGltaXRKdW1wVG9GaXJzdEZpZWxkcy5qb2luKFxyXG4gICAgICAgIFwiLCBcIlxyXG4gICAgICApfWBcclxuICAgICk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBjb25zdCB0b0ZpbGUgPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaXJzdExpbmtwYXRoRGVzdCh0b05vZGUsIFwiXCIpO1xyXG4gIGF3YWl0IGFwcC53b3Jrc3BhY2UuYWN0aXZlTGVhZi5vcGVuRmlsZSh0b0ZpbGUpO1xyXG59XHJcbiIsICJpbXBvcnQgeyBub3JtYWxpemVQYXRoLCBOb3RpY2UsIFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB0eXBlIHsgRGlyZWN0aW9ucyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IGdldEZpZWxkSW5mbywgZ2V0T3BwRmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVPclVwZGF0ZVlhbWwsIGdldEN1cnJGaWxlLCBzcGxpdEF0WWFtbCB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG5jb25zdCByZXNvbHZlVGhyZWFkaW5nTmFtZVRlbXBsYXRlID0gKFxyXG4gIHRlbXBsYXRlOiBzdHJpbmcsXHJcbiAgY3VyckZpbGU6IFRGaWxlLFxyXG4gIGZpZWxkOiBzdHJpbmcsXHJcbiAgZGlyOiBEaXJlY3Rpb25zLFxyXG4gIGRhdGVGb3JtYXQ6IHN0cmluZ1xyXG4pID0+XHJcbiAgdGVtcGxhdGVcclxuICAgID8gdGVtcGxhdGVcclxuICAgICAgLnJlcGxhY2UoXCJ7e2N1cnJlbnR9fVwiLCBjdXJyRmlsZS5iYXNlbmFtZSlcclxuICAgICAgLnJlcGxhY2UoXCJ7e2ZpZWxkfX1cIiwgZmllbGQpXHJcbiAgICAgIC5yZXBsYWNlKFwie3tkaXJ9fVwiLCBkaXIpXHJcbiAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAucmVwbGFjZShcInt7ZGF0ZX19XCIsIG1vbWVudCgpLmZvcm1hdChkYXRlRm9ybWF0KSlcclxuICAgIDogXCJVbnRpdGxlZFwiO1xyXG5cclxuZnVuY3Rpb24gbWFrZUZpbGVuYW1lVW5pcXVlKGZpbGVuYW1lOiBzdHJpbmcpIHtcclxuICBsZXQgaSA9IDEsXHJcbiAgICBuZXdOYW1lID0gZmlsZW5hbWU7XHJcbiAgd2hpbGUgKGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KG5ld05hbWUsIFwiXCIpKSB7XHJcbiAgICBpZiAoaSA9PT0gMSkgbmV3TmFtZSArPSBgICR7aX1gO1xyXG4gICAgZWxzZSBuZXdOYW1lID0gbmV3TmFtZS5zbGljZSgwLCAtMikgKyBgICR7aX1gO1xyXG4gICAgaSsrO1xyXG4gIH1cclxuICByZXR1cm4gbmV3TmFtZTtcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVRocmVhZGluZ0NvbnRlbnRUZW1wbGF0ZShcclxuICB3cml0ZUJDc0lubGluZTogYm9vbGVhbixcclxuICB0ZW1wbGF0ZVBhdGg6IHN0cmluZyxcclxuICBvcHBGaWVsZDogc3RyaW5nLFxyXG4gIGN1cnJGaWxlOiBURmlsZSxcclxuICBjcnVtYjogc3RyaW5nXHJcbikge1xyXG4gIGxldCBuZXdDb250ZW50ID0gY3J1bWI7XHJcblxyXG4gIGlmICh0ZW1wbGF0ZVBhdGgpIHtcclxuICAgIGNvbnN0IHRlbXBsYXRlRmlsZSA9IGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KFxyXG4gICAgICB0ZW1wbGF0ZVBhdGgsXHJcbiAgICAgIFwiXCJcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgdGVtcGxhdGUgPSBhd2FpdCBhcHAudmF1bHQuY2FjaGVkUmVhZCh0ZW1wbGF0ZUZpbGUpO1xyXG4gICAgbmV3Q29udGVudCA9IHRlbXBsYXRlLnJlcGxhY2UoXHJcbiAgICAgIC9cXHtcXHtCQy10aHJlYWQtY3J1bWJcXH1cXH0vaSxcclxuICAgICAgd3JpdGVCQ3NJbmxpbmVcclxuICAgICAgICA/IGAke29wcEZpZWxkfTo6IFtbJHtjdXJyRmlsZS5iYXNlbmFtZX1dXWBcclxuICAgICAgICA6IGAke29wcEZpZWxkfTogWycke2N1cnJGaWxlLmJhc2VuYW1lfSddYFxyXG4gICAgKTtcclxuICB9XHJcbiAgcmV0dXJuIG5ld0NvbnRlbnQ7XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0aHJlYWQocGx1Z2luOiBCQ1BsdWdpbiwgZmllbGQ6IHN0cmluZykge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCB7XHJcbiAgICB1c2VySGllcnMsXHJcbiAgICB0aHJlYWRpbmdUZW1wbGF0ZSxcclxuICAgIGRhdGVGb3JtYXQsXHJcbiAgICB0aHJlYWRJbnRvTmV3UGFuZSxcclxuICAgIHRocmVhZGluZ0RpclRlbXBsYXRlcyxcclxuICAgIHRocmVhZFVuZGVyQ3Vyc29yLFxyXG4gICAgd3JpdGVCQ3NJbmxpbmUsXHJcbiAgfSA9IHNldHRpbmdzO1xyXG5cclxuICBjb25zdCBjdXJyRmlsZSA9IGdldEN1cnJGaWxlKCk7XHJcbiAgaWYgKCFjdXJyRmlsZSkgcmV0dXJuO1xyXG5cclxuICBjb25zdCBuZXdGaWxlUGFyZW50ID0gYXBwLmZpbGVNYW5hZ2VyLmdldE5ld0ZpbGVQYXJlbnQoY3VyckZpbGUucGF0aCk7XHJcblxyXG4gIGNvbnN0IGRpciA9IGdldEZpZWxkSW5mbyh1c2VySGllcnMsIGZpZWxkKS5maWVsZERpcjtcclxuICBjb25zdCBvcHBGaWVsZCA9IGdldE9wcEZpZWxkcyh1c2VySGllcnMsIGZpZWxkLCBkaXIpWzBdO1xyXG5cclxuICBsZXQgbmV3QmFzZW5hbWUgPSByZXNvbHZlVGhyZWFkaW5nTmFtZVRlbXBsYXRlKFxyXG4gICAgdGhyZWFkaW5nVGVtcGxhdGUsXHJcbiAgICBjdXJyRmlsZSxcclxuICAgIGZpZWxkLFxyXG4gICAgZGlyLFxyXG4gICAgZGF0ZUZvcm1hdFxyXG4gICk7XHJcbiAgbmV3QmFzZW5hbWUgPSBtYWtlRmlsZW5hbWVVbmlxdWUobmV3QmFzZW5hbWUpO1xyXG5cclxuICBjb25zdCBvcHBDcnVtYiA9IHdyaXRlQkNzSW5saW5lXHJcbiAgICA/IGAke29wcEZpZWxkfTo6IFtbJHtjdXJyRmlsZS5iYXNlbmFtZX1dXWBcclxuICAgIDogYC0tLVxcbiR7b3BwRmllbGR9OiBbJyR7Y3VyckZpbGUuYmFzZW5hbWV9J11cXG4tLS1gO1xyXG5cclxuICBjb25zdCB0ZW1wbGF0ZVBhdGggPSB0aHJlYWRpbmdEaXJUZW1wbGF0ZXNbZGlyXTtcclxuICBjb25zdCBuZXdDb250ZW50ID0gYXdhaXQgcmVzb2x2ZVRocmVhZGluZ0NvbnRlbnRUZW1wbGF0ZShcclxuICAgIHdyaXRlQkNzSW5saW5lLFxyXG4gICAgdGVtcGxhdGVQYXRoLFxyXG4gICAgb3BwRmllbGQsXHJcbiAgICBjdXJyRmlsZSxcclxuICAgIG9wcENydW1iXHJcbiAgKTtcclxuXHJcbiAgY29uc3QgbmV3RmlsZSA9IGF3YWl0IGFwcC52YXVsdC5jcmVhdGUoXHJcbiAgICBub3JtYWxpemVQYXRoKGAke25ld0ZpbGVQYXJlbnQucGF0aH0vJHtuZXdCYXNlbmFtZX0ubWRgKSxcclxuICAgIG5ld0NvbnRlbnRcclxuICApO1xyXG5cclxuICBpZiAoIXdyaXRlQkNzSW5saW5lKSB7XHJcbiAgICBjb25zdCB7IGFwaSB9ID0gYXBwLnBsdWdpbnMucGx1Z2lucy5tZXRhZWRpdCA/PyB7fTtcclxuICAgIGlmICghYXBpKSB7XHJcbiAgICAgIG5ldyBOb3RpY2UoXHJcbiAgICAgICAgXCJNZXRhZWRpdCBtdXN0IGJlIGVuYWJsZWQgdG8gd3JpdGUgdG8geWFtbC4gQWx0ZXJuYXRpdmVseSwgdG9nZ2xlIHRoZSBzZXR0aW5nIGBXcml0ZSBCcmVhZGNydW1icyBJbmxpbmVgIHRvIHVzZSBEYXRhdmlldyBpbmxpbmUgZmllbGRzIGluc3RlYWQuXCJcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgY3JlYXRlT3JVcGRhdGVZYW1sKFxyXG4gICAgICBmaWVsZCxcclxuICAgICAgbmV3RmlsZS5iYXNlbmFtZSxcclxuICAgICAgY3VyckZpbGUsXHJcbiAgICAgIGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShjdXJyRmlsZSkuZnJvbnRtYXR0ZXIsXHJcbiAgICAgIGFwaVxyXG4gICAgKTtcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc3QgY3J1bWIgPSBgJHtmaWVsZH06OiBbWyR7bmV3RmlsZS5iYXNlbmFtZX1dXWA7XHJcbiAgICBjb25zdCB7IGVkaXRvciB9ID0gYXBwLndvcmtzcGFjZS5hY3RpdmVMZWFmLnZpZXc7XHJcbiAgICBpZiAodGhyZWFkVW5kZXJDdXJzb3IgfHwgIWVkaXRvcikge1xyXG4gICAgICBlZGl0b3IucmVwbGFjZVJhbmdlKGNydW1iLCBlZGl0b3IuZ2V0Q3Vyc29yKCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gVE9ETyBDaGVjayBpZiB0aGlzIG5vdGUgYWxyZWFkeSBoYXMgdGhpcyBmaWVsZFxyXG4gICAgICBsZXQgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5yZWFkKGN1cnJGaWxlKTtcclxuICAgICAgY29uc3Qgc3BsaXRzID0gc3BsaXRBdFlhbWwoY29udGVudCk7XHJcbiAgICAgIGNvbnRlbnQgPVxyXG4gICAgICAgIHNwbGl0c1swXSArXHJcbiAgICAgICAgKHNwbGl0c1swXS5sZW5ndGggPyBcIlxcblwiIDogXCJcIikgK1xyXG4gICAgICAgIGNydW1iICtcclxuICAgICAgICAoc3BsaXRzWzFdLmxlbmd0aCA/IFwiXFxuXCIgOiBcIlwiKSArXHJcbiAgICAgICAgc3BsaXRzWzFdO1xyXG5cclxuICAgICAgYXdhaXQgYXBwLnZhdWx0Lm1vZGlmeShjdXJyRmlsZSwgY29udGVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdCBsZWFmID0gdGhyZWFkSW50b05ld1BhbmVcclxuICAgID8gYXBwLndvcmtzcGFjZS5nZXRMZWFmKHRydWUpXHJcbiAgICA6IGFwcC53b3Jrc3BhY2UuYWN0aXZlTGVhZjtcclxuXHJcbiAgYXdhaXQgbGVhZi5vcGVuRmlsZShuZXdGaWxlLCB7IGFjdGl2ZTogdHJ1ZSwgbW9kZTogXCJzb3VyY2VcIiB9KTtcclxuXHJcbiAgaWYgKHRlbXBsYXRlUGF0aCkge1xyXG4gICAgaWYgKGFwcC5wbHVnaW5zLnBsdWdpbnNbXCJ0ZW1wbGF0ZXItb2JzaWRpYW5cIl0pIHtcclxuICAgICAgYXBwLmNvbW1hbmRzLmV4ZWN1dGVDb21tYW5kQnlJZChcclxuICAgICAgICBcInRlbXBsYXRlci1vYnNpZGlhbjpyZXBsYWNlLWluLWZpbGUtdGVtcGxhdGVyXCJcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5ldyBOb3RpY2UoXHJcbiAgICAgICAgXCJUaGUgVGVtcGxhdGVyIHBsdWdpbiBtdXN0IGJlIGVuYWJsZWQgdG8gcmVzb2x2ZSB0aGUgdGVtcGxhdGVzIGluIHRoZSBuZXcgbm90ZVwiXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpZiAodGhyZWFkaW5nVGVtcGxhdGUpIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGNvbnN0IGVkaXRvciA9IGxlYWYudmlldy5lZGl0b3IgYXMgRWRpdG9yO1xyXG4gICAgZWRpdG9yLnNldEN1cnNvcihlZGl0b3IuZ2V0VmFsdWUoKS5sZW5ndGgpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zdCBub3RlTmFtZUlucHV0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ2aWV3LWhlYWRlci10aXRsZVwiKTtcclxuXHJcbiAgICBjb25zdCBuZXdOb3RlSW5wdXRFbCA9IEFycmF5LmZyb20obm90ZU5hbWVJbnB1dHMpLmZpbmQoXHJcbiAgICAgIChpbnB1dDogSFRNTElucHV0RWxlbWVudCkgPT4gaW5wdXQuaW5uZXJUZXh0ID09PSBuZXdCYXNlbmFtZVxyXG4gICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgbmV3Tm90ZUlucHV0RWwuaW5uZXJUZXh0ID0gXCJcIjtcclxuICAgIG5ld05vdGVJbnB1dEVsLmZvY3VzKCk7XHJcbiAgfVxyXG59XHJcbiIsICJpbXBvcnQgeyB3YXJuIH0gZnJvbSBcImxvZ2xldmVsXCI7XHJcbmltcG9ydCB7IE5vdGljZSwgVEZpbGUgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHsgZ2V0T3BwRmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBjaGFuZ2VZYW1sLCBnZXRDdXJyRmlsZSwgc3BsaXRBdFlhbWwgfSBmcm9tIFwiLi4vVXRpbHMvT2JzaWRpYW5VdGlsc1wiO1xyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQkNUb0ZpbGUocGx1Z2luOiBCQ1BsdWdpbiwgY3VyckZpbGU/OiBURmlsZSkge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MsIG1haW5HIH0gPSBwbHVnaW47XHJcbiAgY29uc3QgZmlsZSA9IGN1cnJGaWxlID8/IGdldEN1cnJGaWxlKCk7XHJcblxyXG4gIGNvbnN0IHsgbGltaXRXcml0ZUJDQ2hlY2tib3hlcywgd3JpdGVCQ3NJbmxpbmUsIHVzZXJIaWVycyB9ID0gc2V0dGluZ3M7XHJcblxyXG4gIGNvbnN0IHN1Y2NJbmZvID0gbWFpbkcubWFwSW5FZGdlcyhmaWxlLmJhc2VuYW1lLCAoaywgYSwgcywgdCkgPT4ge1xyXG4gICAgY29uc3QgeyBmaWVsZCwgZGlyIH0gPSBhO1xyXG4gICAgY29uc3Qgb3BwRmllbGQgPSBnZXRPcHBGaWVsZHModXNlckhpZXJzLCBmaWVsZCwgZGlyKVswXTtcclxuICAgIHJldHVybiB7IHN1Y2M6IHMsIGZpZWxkOiBvcHBGaWVsZCB9O1xyXG4gIH0pO1xyXG5cclxuICBmb3IgKGNvbnN0IHsgc3VjYywgZmllbGQgfSBvZiBzdWNjSW5mbykge1xyXG4gICAgaWYgKCFsaW1pdFdyaXRlQkNDaGVja2JveGVzLmluY2x1ZGVzKGZpZWxkKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQucmVhZChmaWxlKTtcclxuICAgIGNvbnN0IFt5YW1sLCBhZnRlcllhbWxdID0gc3BsaXRBdFlhbWwoY29udGVudCk7XHJcblxyXG4gICAgaWYgKCF3cml0ZUJDc0lubGluZSkge1xyXG4gICAgICBjb25zdCBpbm5lciA9IHlhbWwgPT09IFwiXCIgPyB5YW1sIDogeWFtbC5zbGljZSg0LCAtNCk7XHJcbiAgICAgIGNvbnN0IG5ld1lhbWwgPSBjaGFuZ2VZYW1sKGlubmVyLCBmaWVsZCwgc3VjYyk7XHJcbiAgICAgIGNvbnN0IG5ld0NvbnRlbnQgPSBgLS0tXFxuJHtuZXdZYW1sfVxcbi0tLSR7YWZ0ZXJZYW1sfWA7XHJcbiAgICAgIGF3YWl0IGFwcC52YXVsdC5tb2RpZnkoZmlsZSwgbmV3Q29udGVudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBUT0RPIENoZWNrIGlmIHRoaXMgbm90ZSBhbHJlYWR5IGhhcyB0aGlzIGZpZWxkXHJcbiAgICAgIGNvbnN0IG5ld0NvbnRlbnQgPVxyXG4gICAgICAgIHlhbWwgK1xyXG4gICAgICAgICh5YW1sLmxlbmd0aCA/IFwiXFxuXCIgOiBcIlwiKSArXHJcbiAgICAgICAgYCR7ZmllbGR9OjogW1ske3N1Y2N9XV1gICtcclxuICAgICAgICAoYWZ0ZXJZYW1sLmxlbmd0aCA/IFwiXFxuXCIgOiBcIlwiKSArXHJcbiAgICAgICAgYWZ0ZXJZYW1sO1xyXG5cclxuICAgICAgYXdhaXQgYXBwLnZhdWx0Lm1vZGlmeShmaWxlLCBuZXdDb250ZW50KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZUJDc1RvQWxsRmlsZXMocGx1Z2luOiBCQ1BsdWdpbikge1xyXG4gIGlmICghcGx1Z2luLnNldHRpbmdzLnNob3dXcml0ZUFsbEJDc0NtZCkge1xyXG4gICAgbmV3IE5vdGljZShcclxuICAgICAgXCJZb3UgZmlyc3QgbmVlZCB0byBlbmFibGUgdGhpcyBjb21tYW5kIGluIEJyZWFkY3J1bWJzJyBzZXR0aW5ncy5cIlxyXG4gICAgKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgaWYgKFxyXG4gICAgd2luZG93LmNvbmZpcm0oXHJcbiAgICAgIFwiVGhpcyBhY3Rpb24gd2lsbCB3cml0ZSB0aGUgaW1wbGllZCBCcmVhZGNydW1icyBvZiBlYWNoIGZpbGUgdG8gdGhhdCBmaWxlLlxcbkl0IHVzZXMgdGhlIE1ldGFFZGl0IHBsdWdpbnMgQVBJIHRvIHVwZGF0ZSB0aGUgWUFNTCwgc28gaXQgc2hvdWxkIG9ubHkgYWZmZWN0IHRoYXQgZnJvbnRtYXR0ZXIgb2YgeW91ciBub3RlLlxcbkkgY2FuJ3QgcHJvbWlzZSB0aGF0IG5vdGhpbmcgYmFkIHdpbGwgaGFwcGVuLiAqKlRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSB1bmRvbmUqKi5cIlxyXG4gICAgKVxyXG4gICkge1xyXG4gICAgaWYgKFxyXG4gICAgICB3aW5kb3cuY29uZmlybShcclxuICAgICAgICBcIkFyZSB5b3Ugc3VyZT8gWW91IGhhdmUgYmVlbiB3YXJuZWQgdGhhdCB0aGlzIG9wZXJhdGlvbiB3aWxsIGF0dGVtcHQgdG8gdXBkYXRlIGFsbCBmaWxlcyB3aXRoIGltcGxpZWQgYnJlYWRjcnVtYnMuXCJcclxuICAgICAgKVxyXG4gICAgKSB7XHJcbiAgICAgIGlmICh3aW5kb3cuY29uZmlybShcIkZvciByZWFsLCBwbGVhc2UgbWFrZSBhIGJhY2sgdXAgYmVmb3JlLlwiKSkge1xyXG4gICAgICAgIGNvbnN0IG5vdGljZSA9IG5ldyBOb3RpY2UoXCJPcGVyYXRpb24gU3RhcnRlZFwiKTtcclxuICAgICAgICBjb25zdCBwcm9ibGVtRmlsZXMgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgYXBwLnZhdWx0LmdldE1hcmtkb3duRmlsZXMoKSkge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgd3JpdGVCQ1RvRmlsZShwbHVnaW4sIGZpbGUpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBwcm9ibGVtRmlsZXMucHVzaChmaWxlLnBhdGgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBub3RpY2Uuc2V0TWVzc2FnZShcIk9wZXJhdGlvbiBDb21wbGV0ZVwiKTtcclxuICAgICAgICBpZiAocHJvYmxlbUZpbGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgbmV3IE5vdGljZShcclxuICAgICAgICAgICAgXCJTb21lIGZpbGVzIHdlcmUgbm90IHVwZGF0ZWQgZHVlIHRvIGVycm9ycy4gQ2hlY2sgdGhlIGNvbnNvbGUgdG8gc2VlIHdoaWNoIG9uZXMuXCJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB3YXJuKHsgcHJvYmxlbUZpbGVzIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCAiaW1wb3J0IHtcclxuICBFZGl0b3IsXHJcbiAgRWRpdG9yUG9zaXRpb24sXHJcbiAgRWRpdG9yU3VnZ2VzdCxcclxuICBFZGl0b3JTdWdnZXN0Q29udGV4dCxcclxuICBFZGl0b3JTdWdnZXN0VHJpZ2dlckluZm8sXHJcbiAgVEZpbGUsXHJcbn0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IGlzSW5zaWRlWWFtbCB9IGZyb20gXCIuL1V0aWxzL09ic2lkaWFuVXRpbHNcIjtcclxuaW1wb3J0IHsgQkNfRklFTERTX0lORk8gfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4vbWFpblwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEZpZWxkU3VnZ2VzdG9yIGV4dGVuZHMgRWRpdG9yU3VnZ2VzdDxzdHJpbmc+IHtcclxuICBwbHVnaW46IEJDUGx1Z2luO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwbHVnaW46IEJDUGx1Z2luKSB7XHJcbiAgICBzdXBlcihhcHApO1xyXG4gICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XHJcbiAgfVxyXG5cclxuICBvblRyaWdnZXIoXHJcbiAgICBjdXJzb3I6IEVkaXRvclBvc2l0aW9uLFxyXG4gICAgZWRpdG9yOiBFZGl0b3IsXHJcbiAgICBfOiBURmlsZVxyXG4gICk6IEVkaXRvclN1Z2dlc3RUcmlnZ2VySW5mbyB8IG51bGwge1xyXG4gICAgY29uc3Qgc3ViID0gZWRpdG9yLmdldExpbmUoY3Vyc29yLmxpbmUpLnN1YnN0cmluZygwLCBjdXJzb3IuY2gpO1xyXG4gICAgY29uc3QgbWF0Y2ggPSBzdWIubWF0Y2goL15CQy0oLiopJC8pPy5bMV07XHJcbiAgICBpZiAobWF0Y2ggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGVuZDogY3Vyc29yLFxyXG4gICAgICAgIHN0YXJ0OiB7XHJcbiAgICAgICAgICBjaDogc3ViLmxhc3RJbmRleE9mKG1hdGNoKSxcclxuICAgICAgICAgIGxpbmU6IGN1cnNvci5saW5lLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcXVlcnk6IG1hdGNoLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3VnZ2VzdGlvbnMgPSAoY29udGV4dDogRWRpdG9yU3VnZ2VzdENvbnRleHQpID0+IHtcclxuICAgIGNvbnN0IHsgcXVlcnkgfSA9IGNvbnRleHQ7XHJcbiAgICByZXR1cm4gQkNfRklFTERTX0lORk8ubWFwKChzdWcpID0+IHN1Zy5maWVsZCkuZmlsdGVyKChzdWcpID0+XHJcbiAgICAgIHN1Zy5pbmNsdWRlcyhxdWVyeSlcclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgcmVuZGVyU3VnZ2VzdGlvbihzdWdnZXN0aW9uOiBzdHJpbmcsIGVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgZWwuY3JlYXRlRGl2KHtcclxuICAgICAgdGV4dDogc3VnZ2VzdGlvbi5yZXBsYWNlKFwiQkMtXCIsIFwiXCIpLFxyXG4gICAgICBjbHM6IFwiQkMtc3VnZ2VzdGVyLWNvbnRhaW5lclwiLFxyXG4gICAgICBhdHRyOiB7XHJcbiAgICAgICAgXCJhcmlhLWxhYmVsXCI6IEJDX0ZJRUxEU19JTkZPLmZpbmQoKGYpID0+IGYuZmllbGQgPT09IHN1Z2dlc3Rpb24pPy5kZXNjLFxyXG4gICAgICAgIFwiYXJpYS1sYWJlbC1wb3NpdGlvblwiOiBcInJpZ2h0XCIsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGNvbnRleHQsIHBsdWdpbiB9ID0gdGhpcztcclxuICAgIGlmICghY29udGV4dCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGZpZWxkID0gQkNfRklFTERTX0lORk8uZmluZCgoZikgPT4gZi5maWVsZCA9PT0gc3VnZ2VzdGlvbik7XHJcbiAgICBjb25zdCByZXBsYWNlbWVudCA9IGAke3N1Z2dlc3Rpb259JHtmaWVsZD8uW2lzSW5zaWRlWWFtbChhcHApID8gXCJhZnRlcllhbWxcIiA6IFwiYWZ0ZXJJbmxpbmVcIl1cclxuICAgICAgfWA7XHJcblxyXG4gICAgY29udGV4dC5lZGl0b3IucmVwbGFjZVJhbmdlKFxyXG4gICAgICByZXBsYWNlbWVudCxcclxuICAgICAgeyBjaDogMCwgbGluZTogY29udGV4dC5zdGFydC5saW5lIH0sXHJcbiAgICAgIGNvbnRleHQuZW5kXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iLCAiaW1wb3J0IHtcclxuICBFZGl0b3IsXHJcbiAgRWRpdG9yUG9zaXRpb24sXHJcbiAgRWRpdG9yU3VnZ2VzdCxcclxuICBFZGl0b3JTdWdnZXN0Q29udGV4dCxcclxuICBFZGl0b3JTdWdnZXN0VHJpZ2dlckluZm8sXHJcbiAgVEZpbGUsXHJcbn0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IGlzSW5zaWRlWWFtbCB9IGZyb20gXCIuL1V0aWxzL09ic2lkaWFuVXRpbHNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4vbWFpblwiO1xyXG5pbXBvcnQgeyBlc2NhcGVSZWdleCB9IGZyb20gXCIuL1V0aWxzL2dlbmVyYWxVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXRGaWVsZHMgfSBmcm9tIFwiLi9VdGlscy9IaWVyVXRpbHNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBSZWxhdGlvblN1Z2dlc3RvciBleHRlbmRzIEVkaXRvclN1Z2dlc3Q8c3RyaW5nPiB7XHJcbiAgcGx1Z2luOiBCQ1BsdWdpbjtcclxuXHJcbiAgY29uc3RydWN0b3IocGx1Z2luOiBCQ1BsdWdpbikge1xyXG4gICAgc3VwZXIoYXBwKTtcclxuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xyXG4gIH1cclxuXHJcbiAgb25UcmlnZ2VyKFxyXG4gICAgY3Vyc29yOiBFZGl0b3JQb3NpdGlvbixcclxuICAgIGVkaXRvcjogRWRpdG9yLFxyXG4gICAgXzogVEZpbGVcclxuICApOiBFZGl0b3JTdWdnZXN0VHJpZ2dlckluZm8gfCBudWxsIHtcclxuICAgIGNvbnN0IHRyaWcgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy5yZWxTdWdnZXN0b3JUcmlnZ2VyO1xyXG4gICAgY29uc3Qgc3ViID0gZWRpdG9yLmdldExpbmUoY3Vyc29yLmxpbmUpLnN1YnN0cmluZygwLCBjdXJzb3IuY2gpO1xyXG5cclxuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgLio/JHtlc2NhcGVSZWdleCh0cmlnKX0oLiopJGApO1xyXG4gICAgY29uc3QgbWF0Y2ggPSByZWdleC5leGVjKHN1Yik/LlsxXTtcclxuXHJcbiAgICBpZiAobWF0Y2ggPT09IHVuZGVmaW5lZCkgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzdGFydDoge1xyXG4gICAgICAgIGNoOiBzdWIubGFzdEluZGV4T2YodHJpZyksXHJcbiAgICAgICAgbGluZTogY3Vyc29yLmxpbmUsXHJcbiAgICAgIH0sXHJcbiAgICAgIGVuZDogY3Vyc29yLFxyXG4gICAgICBxdWVyeTogbWF0Y2gsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0U3VnZ2VzdGlvbnMgPSAoY29udGV4dDogRWRpdG9yU3VnZ2VzdENvbnRleHQpID0+IHtcclxuICAgIGNvbnN0IHsgcXVlcnkgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCB7IHVzZXJIaWVycyB9ID0gdGhpcy5wbHVnaW4uc2V0dGluZ3M7XHJcbiAgICByZXR1cm4gZ2V0RmllbGRzKHVzZXJIaWVycykuZmlsdGVyKChzdWcpID0+IHN1Zy5pbmNsdWRlcyhxdWVyeSkpO1xyXG4gIH07XHJcblxyXG4gIHJlbmRlclN1Z2dlc3Rpb24oc3VnZ2VzdGlvbjogc3RyaW5nLCBlbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcclxuICAgIGVsLmNyZWF0ZURpdih7XHJcbiAgICAgIHRleHQ6IHN1Z2dlc3Rpb24sXHJcbiAgICAgIGNsczogXCJjb2RlYmxvY2stc3VnZ2VzdGlvblwiLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RTdWdnZXN0aW9uKHN1Z2dlc3Rpb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgeyBjb250ZXh0LCBwbHVnaW4gfSA9IHRoaXM7XHJcbiAgICBpZiAoIWNvbnRleHQpIHJldHVyblxyXG5cclxuICAgIGNvbnN0IHRyaWcgPSBwbHVnaW4uc2V0dGluZ3MucmVsU3VnZ2VzdG9yVHJpZ2dlcjtcclxuICAgIGNvbnN0IHsgc3RhcnQsIGVuZCwgZWRpdG9yIH0gPSBjb250ZXh0O1xyXG5cclxuICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gc3VnZ2VzdGlvbiArIChpc0luc2lkZVlhbWwoYXBwKSA/IFwiOiBcIiA6IFwiOjogXCIpICsgJ1tbJztcclxuICAgIGVkaXRvci5yZXBsYWNlUmFuZ2UoXHJcbiAgICAgIHJlcGxhY2VtZW50LFxyXG4gICAgICB7IGNoOiBzdGFydC5jaCArIDEgLSB0cmlnLmxlbmd0aCwgbGluZTogc3RhcnQubGluZSB9LFxyXG4gICAgICBlbmRcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiIsICJpbXBvcnQgeyBQbHVnaW5TZXR0aW5nVGFiLCBTZXR0aW5nIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IGRyYXdUcmFpbCB9IGZyb20gXCJzcmMvVmlld3MvVHJhaWxWaWV3XCI7XHJcbmltcG9ydCBLb0ZpIGZyb20gXCIuLi9Db21wb25lbnRzL0tvRmkuc3ZlbHRlXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IGFkZENyZWF0ZUluZGV4U2V0dGluZ3MgfSBmcm9tIFwiLi9DcmVhdGVJbmRleFNldHRpbmdzXCI7XHJcbmltcG9ydCB7IGFkZENTVlNldHRpbmdzIH0gZnJvbSBcIi4vQ1NWU2V0dGluZ3NcIjtcclxuaW1wb3J0IHsgYWRkRGF0YXZpZXdTZXR0aW5ncyB9IGZyb20gXCIuL0RhdGF2aWV3Tm90ZVNldHRpbmdzXCI7XHJcbmltcG9ydCB7IGFkZERhdGVOb3RlU2V0dGluZ3MgfSBmcm9tIFwiLi9EYXRlTm90ZVNldHRpbmdzXCI7XHJcbmltcG9ydCB7IGFkZERlYnVnZ2luZ3NTZXR0aW5ncyB9IGZyb20gXCIuL0RlYnVnZ2luZ1NldHRpbmdzXCI7XHJcbmltcG9ydCB7IGFkZERlbmRyb25TZXR0aW5ncyB9IGZyb20gXCIuL0RlbmRyb25TZXR0aW5nc1wiO1xyXG5pbXBvcnQgeyBhZGRHZW5lcmFsU2V0dGluZ3MgfSBmcm9tIFwiLi9HZW5lcmFsU2V0dGluZ3NcIjtcclxuaW1wb3J0IHsgYWRkSGllcmFyY2h5Tm90ZVNldHRpbmdzIH0gZnJvbSBcIi4vSGllcmFyY2h5Tm90ZVNldHRpbmdzXCI7XHJcbmltcG9ydCB7IGFkZEhpZXJhcmNoeVNldHRpbmdzIH0gZnJvbSBcIi4vSGllcmFyY2h5U2V0dGluZ3NcIjtcclxuaW1wb3J0IHsgYWRkSnVtcFRvTmV4dFNldHRpbmdzIH0gZnJvbSBcIi4vSnVtcFRvTmV4dFNldHRpbmdzXCI7XHJcbmltcG9ydCB7IGFkZE1hdHJpeFZpZXdTZXR0aW5ncyB9IGZyb20gXCIuL01hdHJpeFZpZXdTZXR0aW5nc1wiO1xyXG5pbXBvcnQgeyBhZGROb1N5c3RlbVNldHRpbmdzIH0gZnJvbSBcIi4vTm9TeXN0ZW1TZXR0aW5nc1wiO1xyXG5pbXBvcnQgeyBhZGRSZWdleE5vdGVTZXR0aW5ncyB9IGZyb20gXCIuL1JlZ2V4Tm90ZVNldHRpbmdzXCI7XHJcbmltcG9ydCB7IGFkZFJlbGF0aW9uU2V0dGluZ3MgfSBmcm9tIFwiLi9SZWxhdGlvblNldHRpbmdzXCI7XHJcbmltcG9ydCB7IGFkZFRhZ05vdGVTZXR0aW5ncyB9IGZyb20gXCIuL1RhZ05vdGVTZXR0aW5nc1wiO1xyXG5pbXBvcnQgeyBhZGRUaHJlYWRpbmdTZXR0aW5ncyB9IGZyb20gXCIuL1RocmVhZGluZ1NldHRpbmdzXCI7XHJcbmltcG9ydCB7IGFkZFRyYWlsVmlld1NldHRpbmdzIH0gZnJvbSBcIi4vVHJhaWxTZXR0aW5nc1wiO1xyXG5pbXBvcnQgeyBhZGRWaXNNb2RhbFNldHRpbmdzIH0gZnJvbSBcIi4vVmlzTW9kYWxTZXR0aW5nc1wiO1xyXG5pbXBvcnQgeyBhZGRXcml0ZUJDc1NldHRpbmdzIH0gZnJvbSBcIi4vV3JpdGVCQ3NTZXR0aW5nc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGZyYWdXaXRoSFRNTCA9IChodG1sOiBzdHJpbmcpID0+XHJcbiAgY3JlYXRlRnJhZ21lbnQoKGZyYWcpID0+IChmcmFnLmNyZWF0ZURpdigpLmlubmVySFRNTCA9IGh0bWwpKTtcclxuXHJcbmV4cG9ydCBjb25zdCBkZXRhaWxzID0gKHRleHQ6IHN0cmluZywgcGFyZW50OiBIVE1MRWxlbWVudCkgPT5cclxuICBwYXJlbnQuY3JlYXRlRWwoXCJkZXRhaWxzXCIsIHt9LCAoZCkgPT4gZC5jcmVhdGVFbChcInN1bW1hcnlcIiwgeyB0ZXh0IH0pKTtcclxuXHJcbmV4cG9ydCBjb25zdCBzdWJEZXRhaWxzID0gKHRleHQ6IHN0cmluZywgcGFyZW50OiBIVE1MRGV0YWlsc0VsZW1lbnQpID0+XHJcbiAgcGFyZW50LmNyZWF0ZURpdih7XHJcbiAgICBhdHRyOiB7IHN0eWxlOiBcInBhZGRpbmctbGVmdDogMTBweDtcIiB9LFxyXG4gIH0pXHJcbiAgICAuY3JlYXRlRWwoXCJkZXRhaWxzXCIsIHt9LCAoZCkgPT4gZC5jcmVhdGVFbChcInN1bW1hcnlcIiwgeyB0ZXh0IH0pKTtcclxuXHJcbmV4cG9ydCBjbGFzcyBCQ1NldHRpbmdUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcclxuICBwbHVnaW46IEJDUGx1Z2luO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwbHVnaW46IEJDUGx1Z2luKSB7XHJcbiAgICBzdXBlcihhcHAsIHBsdWdpbik7XHJcbiAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRpc3BsYXkoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCB7IHBsdWdpbiwgY29udGFpbmVyRWwgfSA9IHRoaXM7XHJcbiAgICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW5cclxuXHJcbiAgICBjb250YWluZXJFbC5lbXB0eSgpO1xyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoXCJoMlwiLCB7IHRleHQ6IFwiQnJlYWRjcnVtYnMgU2V0dGluZ3NcIiB9KTtcclxuICAgIGNvbnRhaW5lckVsLmFkZENsYXNzKFwiQkMtc2V0dGluZ3MtdGFiXCIpO1xyXG5cclxuICAgIGFkZEhpZXJhcmNoeVNldHRpbmdzKHBsdWdpbiwgY29udGFpbmVyRWwpO1xyXG4gICAgYWRkUmVsYXRpb25TZXR0aW5ncyhwbHVnaW4sIGNvbnRhaW5lckVsKTtcclxuICAgIGFkZEdlbmVyYWxTZXR0aW5ncyhwbHVnaW4sIGNvbnRhaW5lckVsKTtcclxuXHJcbiAgICBjb25zdCB2aWV3RGV0YWlscyA9IGRldGFpbHMoXCJWaWV3c1wiLCBjb250YWluZXJFbCk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcodmlld0RldGFpbHMpXHJcbiAgICAgIC5zZXROYW1lKFwiT3BlbiBWaWV3cyBieSBEZWZhdWx0XCIpXHJcbiAgICAgIC5zZXREZXNjKGZyYWdXaXRoSFRNTChcIkNob29zZSB3aGljaCBvZiB0aGUgdmlld3MgdG8gb3BlbiBvbmxvYWQ8YnIvPk9yZGVyIGlzOiBUcmFpbC9HcmlkL0p1Z2dsLCBNYXRyaXgsIER1Y2tzLCBUcmVlXCIpKVxyXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAgICAgdG9nZ2xlXHJcbiAgICAgICAgICAuc2V0VG9vbHRpcChcIlRyYWlsL0dyaWQvSnVnZ2xcIilcclxuICAgICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5zaG93QkNzKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBzZXR0aW5ncy5zaG93QkNzID0gdmFsdWU7XHJcbiAgICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgICAgYXdhaXQgZHJhd1RyYWlsKHBsdWdpbik7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xyXG4gICAgICAgIHRvZ2dsZVxyXG4gICAgICAgICAgLnNldFRvb2x0aXAoXCJNYXRyaXggVmlld1wiKVxyXG4gICAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLm9wZW5NYXRyaXhPbkxvYWQpXHJcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHNldHRpbmdzLm9wZW5NYXRyaXhPbkxvYWQgPSB2YWx1ZTtcclxuICAgICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xyXG4gICAgICAgIHRvZ2dsZVxyXG4gICAgICAgICAgLnNldFRvb2x0aXAoXCJEdWNrcyBWaWV3XCIpXHJcbiAgICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3Mub3BlbkR1Y2tPbkxvYWQpXHJcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHNldHRpbmdzLm9wZW5EdWNrT25Mb2FkID0gdmFsdWU7XHJcbiAgICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KVxyXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcclxuICAgICAgICB0b2dnbGVcclxuICAgICAgICAgIC5zZXRUb29sdGlwKFwiVHJlZSBWaWV3XCIpXHJcbiAgICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3Mub3BlbkRvd25PbkxvYWQpXHJcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHNldHRpbmdzLm9wZW5Eb3duT25Mb2FkID0gdmFsdWU7XHJcbiAgICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB2aWV3RGV0YWlscy5jcmVhdGVFbCgnaHInKVxyXG5cclxuICAgIGFkZE1hdHJpeFZpZXdTZXR0aW5ncyhwbHVnaW4sIHZpZXdEZXRhaWxzKTtcclxuICAgIGFkZFRyYWlsVmlld1NldHRpbmdzKHBsdWdpbiwgdmlld0RldGFpbHMpO1xyXG4gICAgYWRkVmlzTW9kYWxTZXR0aW5ncyhwbHVnaW4sIHZpZXdEZXRhaWxzKTtcclxuICAgIC8vIGFkZFRyZWVWaWV3U2V0dGluZ3MocGx1Z2luLCB2aWV3RGV0YWlscyk7XHJcblxyXG4gICAgY29uc3QgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzID0gZGV0YWlscyhcclxuICAgICAgXCJBbHRlcm5hdGl2ZSBIaWVyYXJjaGllc1wiLFxyXG4gICAgICBjb250YWluZXJFbFxyXG4gICAgKTtcclxuXHJcbiAgICBhZGRUYWdOb3RlU2V0dGluZ3MocGx1Z2luLCBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHMpO1xyXG4gICAgYWRkUmVnZXhOb3RlU2V0dGluZ3MocGx1Z2luLCBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHMpO1xyXG4gICAgYWRkTm9TeXN0ZW1TZXR0aW5ncyhwbHVnaW4sIGFsdGVybmF0aXZlSGllcmFyY2h5RGV0YWlscyk7XHJcbiAgICBhZGRIaWVyYXJjaHlOb3RlU2V0dGluZ3MocGx1Z2luLCBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHMpO1xyXG4gICAgYWRkQ1NWU2V0dGluZ3MocGx1Z2luLCBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHMpO1xyXG4gICAgYWRkRGVuZHJvblNldHRpbmdzKHBsdWdpbiwgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzKTtcclxuICAgIGFkZERhdGF2aWV3U2V0dGluZ3MocGx1Z2luLCBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHMpO1xyXG4gICAgYWRkRGF0ZU5vdGVTZXR0aW5ncyhwbHVnaW4sIGFsdGVybmF0aXZlSGllcmFyY2h5RGV0YWlscyk7XHJcblxyXG4gICAgY29uc3QgY21kc0RldGFpbHMgPSBkZXRhaWxzKFwiQ29tbWFuZHNcIiwgY29udGFpbmVyRWwpO1xyXG4gICAgYWRkV3JpdGVCQ3NTZXR0aW5ncyhwbHVnaW4sIGNtZHNEZXRhaWxzKTtcclxuICAgIGFkZENyZWF0ZUluZGV4U2V0dGluZ3MocGx1Z2luLCBjbWRzRGV0YWlscyk7XHJcbiAgICBhZGRUaHJlYWRpbmdTZXR0aW5ncyhwbHVnaW4sIGNtZHNEZXRhaWxzKTtcclxuICAgIGFkZEp1bXBUb05leHRTZXR0aW5ncyhwbHVnaW4sIGNtZHNEZXRhaWxzKTtcclxuXHJcbiAgICBhZGREZWJ1Z2dpbmdzU2V0dGluZ3MocGx1Z2luLCBjb250YWluZXJFbCk7XHJcblxyXG4gICAgbmV3IEtvRmkoeyB0YXJnZXQ6IGNvbnRhaW5lckVsIH0pO1xyXG4gIH1cclxufVxyXG4iLCAiPCEtLSBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9IRW1pbGUvanVnZ2wvYmxvYi9tYWluL2p1Z2dsL3VpL0tvRmkuc3ZlbHRlIC0tPlxyXG48c2NyaXB0PlxyXG4gIGxldCBidXR0b247XHJcbiAgY29uc3QgaW5pdGlhbGl6ZUtvZmkgPSAoKSA9PiB7XHJcbiAgICBrb2Zpd2lkZ2V0Mi5pbml0KFxyXG4gICAgICBcIlN1cHBvcnQgQnJlYWRjcnVtYnMgZGV2ZWxvcG1lbnQhXCIsXHJcbiAgICAgIFwiIzI5YWJlMFwiLFxyXG4gICAgICBcIkcyRzQ1NFRaRlwiXHJcbiAgICApO1xyXG4gICAgYnV0dG9uLmlubmVySFRNTCA9IGtvZml3aWRnZXQyLmdldEhUTUwoKTtcclxuICB9O1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdmVsdGU6aGVhZD5cclxuICA8c2NyaXB0XHJcbiAgICB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCJcclxuICAgIHNyYz1cImh0dHBzOi8va28tZmkuY29tL3dpZGdldHMvd2lkZ2V0XzIuanNcIlxyXG4gICAgb246bG9hZD17aW5pdGlhbGl6ZUtvZml9PlxyXG4gIDwvc2NyaXB0PlxyXG48L3N2ZWx0ZTpoZWFkPlxyXG48ZGl2IGNsYXNzPVwiQkMtS29maS1idXR0b25cIiBiaW5kOnRoaXM9e2J1dHRvbn0gLz5cclxuXHJcbjxzdHlsZT5cclxuICAuQkMtS29maS1idXR0b24ge1xyXG4gICAgbWFyZ2luLXRvcDogMTBweDtcclxuICB9XHJcbjwvc3R5bGU+XHJcbiIsICJpbXBvcnQgeyBTZXR0aW5nIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IGZyYWdXaXRoSFRNTCwgc3ViRGV0YWlscyB9IGZyb20gXCIuL0JyZWFkY3J1bWJzU2V0dGluZ1RhYlwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZENyZWF0ZUluZGV4U2V0dGluZ3MoXHJcbiAgcGx1Z2luOiBCQ1BsdWdpbixcclxuICBjbWRzRGV0YWlsczogSFRNTERldGFpbHNFbGVtZW50XHJcbikge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCBjcmVhdGVJbmRleERldGFpbHMgPSBzdWJEZXRhaWxzKFwiQ3JlYXRlIEluZGV4XCIsIGNtZHNEZXRhaWxzKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoY3JlYXRlSW5kZXhEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJBZGQgd2lrbGluayBicmFja2V0c1wiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBcIldoZW4gY3JlYXRpbmcgYW4gaW5kZXgsIHNob3VsZCBpdCB3cmFwIHRoZSBub3RlIG5hbWUgaW4gd2lraWxpbmtzIDxjb2RlPltbXV08L2NvZGU+IG9yIG5vdC5cXG5cdTI3MDUgPSB5ZXMsIFx1Mjc0QyA9IG5vLlwiXHJcbiAgICAgIClcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgdG9nZ2xlLnNldFZhbHVlKHNldHRpbmdzLndpa2lsaW5rSW5kZXgpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHNldHRpbmdzLndpa2lsaW5rSW5kZXggPSB2YWx1ZTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICBuZXcgU2V0dGluZyhjcmVhdGVJbmRleERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkluZGVudCBDaGFyYWN0ZXJcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgJ1RoZSBjaGFyYWN0ZXIocykgdXNlZCB0byBpbmRlbnQgdGhlIGluZGV4LiBUaGVzZSBjYW4gYmUgYW55dGhpbmcgeW91IHdhbnQsIGJ1dCB3aWxsIHVzdWFsbHkgYmUgZWl0aGVyIHNwYWNlcyBvciB0YWJzLiBFbnRlciA8Y29kZT5cXFxcdDwvY29kZT4gdG8gdXNlIHRhYnMuJ1xyXG4gICAgICApKVxyXG4gICAgLmFkZFRleHQoKHRleHQpID0+IHtcclxuICAgICAgdGV4dFxyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5jcmVhdGVJbmRleEluZGVudClcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICBzZXR0aW5ncy5jcmVhdGVJbmRleEluZGVudCA9IHZhbHVlO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9KVxyXG5cclxuICBuZXcgU2V0dGluZyhjcmVhdGVJbmRleERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlNob3cgYWxpYXNlcyBvZiBub3RlcyBpbiBpbmRleFwiKVxyXG4gICAgLnNldERlc2MoXCJTaG93IHRoZSBhbGlhc2VzIG9mIGVhY2ggbm90ZSBpbiBicmFja2V0cy5cXG5cdTI3MDUgPSB5ZXMsIFx1Mjc0QyA9IG5vLlwiKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3MuYWxpYXNlc0luSW5kZXgpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHNldHRpbmdzLmFsaWFzZXNJbkluZGV4ID0gdmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxufVxyXG4iLCAiaW1wb3J0IHsgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG5pbXBvcnQgeyBzdWJEZXRhaWxzIH0gZnJvbSBcIi4vQnJlYWRjcnVtYnNTZXR0aW5nVGFiXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkQ1NWU2V0dGluZ3MoXHJcbiAgcGx1Z2luOiBCQ1BsdWdpbixcclxuICBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHM6IEhUTUxEZXRhaWxzRWxlbWVudFxyXG4pIHtcclxuICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW47XHJcbiAgY29uc3QgY3N2RGV0YWlscyA9IHN1YkRldGFpbHMoXCJDU1YgTm90ZXNcIiwgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoY3N2RGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiQ1NWIEJyZWFkY3J1bWIgUGF0aHNcIilcclxuICAgIC5zZXREZXNjKFwiVGhlIGZpbGUgcGF0aCBvZiBhIGNzdiBmaWxlcyB3aXRoIGJyZWFkY3J1bWJzIGluZm9ybWF0aW9uLlwiKVxyXG4gICAgLmFkZFRleHQoKHRleHQpID0+IHtcclxuICAgICAgdGV4dC5zZXRWYWx1ZShzZXR0aW5ncy5DU1ZQYXRocyk7XHJcbiAgICAgIHRleHQuaW5wdXRFbC5vbmJsdXIgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MuQ1NWUGF0aHMgPSB0ZXh0LmlucHV0RWwudmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50LCBTZXR0aW5nIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IHJlZnJlc2hJbmRleCB9IGZyb20gXCIuLi9yZWZyZXNoSW5kZXhcIjtcclxuaW1wb3J0IHsgZ2V0RmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBmcmFnV2l0aEhUTUwsIHN1YkRldGFpbHMgfSBmcm9tIFwiLi9CcmVhZGNydW1ic1NldHRpbmdUYWJcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGREYXRhdmlld1NldHRpbmdzKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzOiBIVE1MRGV0YWlsc0VsZW1lbnRcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgdXNlckhpZXJzIH0gPSBzZXR0aW5ncztcclxuICBjb25zdCBmaWVsZHMgPSBnZXRGaWVsZHModXNlckhpZXJzKTtcclxuICBjb25zdCBkdkRldGFpbHMgPSBzdWJEZXRhaWxzKFwiRGF0YXZpZXcgTm90ZXNcIiwgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoZHZEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJEZWZhdWx0IERhdGF2aWV3IE5vdGUgRmllbGRcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgXCJCeSBkZWZhdWx0LCBEYXRhdmlldyBub3RlcyB1c2UgdGhlIGZpcnN0IGZpZWxkIGluIHlvdXIgaGllcmFyY2hpZXMgKHVzdWFsbHkgYW4gPGNvZGU+XHUyMTkxPC9jb2RlPiBmaWVsZCkuIENob29zZSBhIGRpZmZlcmVudCBvbmUgdG8gdXNlIGJ5IGRlZmF1bHQsIHdpdGhvdXQgaGF2aW5nIHRvIHNwZWNpZnkgPGNvZGU+QkMtZGF0YXZpZXctbm90ZS1maWVsZDoge2ZpZWxkfTwvY29kZT4uPC9icj5JZiB5b3UgZG9uJ3Qgd2FudCB0byBjaG9vc2UgYSBkZWZhdWx0LCBzZWxlY3QgdGhlIGJsYW5rIG9wdGlvbiBhdCB0aGUgYm90dG9tIG9mIHRoZSBsaXN0LlwiXHJcbiAgICAgIClcclxuICAgIClcclxuICAgIC5hZGREcm9wZG93bigoZGQ6IERyb3Bkb3duQ29tcG9uZW50KSA9PiB7XHJcbiAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4gZGQuYWRkT3B0aW9uKGZpZWxkLCBmaWVsZCkpO1xyXG4gICAgICBkZC5hZGRPcHRpb24oXCJcIiwgXCJcIilcclxuICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3MuZGF0YXZpZXdOb3RlRmllbGQpXHJcbiAgICAgICAgLm9uQ2hhbmdlKGFzeW5jIChmaWVsZCkgPT4ge1xyXG4gICAgICAgICAgc2V0dGluZ3MuZGF0YXZpZXdOb3RlRmllbGQgPSBmaWVsZDtcclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgIGF3YWl0IHJlZnJlc2hJbmRleChwbHVnaW4pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50LCBTZXR0aW5nIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IHJlZnJlc2hJbmRleCB9IGZyb20gXCIuLi9yZWZyZXNoSW5kZXhcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHsgZ2V0RmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBmcmFnV2l0aEhUTUwsIHN1YkRldGFpbHMgfSBmcm9tIFwiLi9CcmVhZGNydW1ic1NldHRpbmdUYWJcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGREYXRlTm90ZVNldHRpbmdzKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzOiBIVE1MRGV0YWlsc0VsZW1lbnRcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgdXNlckhpZXJzIH0gPSBzZXR0aW5ncztcclxuICBjb25zdCBmaWVsZHMgPSBnZXRGaWVsZHModXNlckhpZXJzKTtcclxuICBjb25zdCBmaWVsZE9wdGlvbnMgPSB7IFwiXCI6IFwiXCIgfTtcclxuICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IChmaWVsZE9wdGlvbnNbZmllbGRdID0gZmllbGQpKTtcclxuXHJcbiAgY29uc3QgZGF0ZU5vdGVEZXRhaWxzID0gc3ViRGV0YWlscyhcIkRhdGUgTm90ZXNcIiwgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoZGF0ZU5vdGVEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJBZGQgRGF0ZSBOb3RlcyB0byBHcmFwaFwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIFwiQnJlYWRjcnVtYnMgd2lsbCB0cnkgdG8gbGluayBlYWNoIGRhaWx5IG5vdGUgdG8gdGhlIG5leHQgb25lIHVzaW5nIHRoZSBkYXRlIGZvcm1hdCB5b3UgcHJvdmlkZSBpbiB0aGUgc2V0dGluZ3MgYmVsb3cuXCJcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xyXG4gICAgICB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3MuYWRkRGF0ZU5vdGVzKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy5hZGREYXRlTm90ZXMgPSB2YWx1ZTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgYXdhaXQgcmVmcmVzaEluZGV4KHBsdWdpbik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKGRhdGVOb3RlRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiRGFpbHkgTm90ZSBGb3JtYXRcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgYFRoZSBMdXhvbiBkYXRlIGZvcm1hdCBvZiB5b3VyIGRhaWx5IG5vdGVzLjwvYnI+PHN0cm9uZz5Ob3RlPC9zdHJvbmc+OiBMdXhvbiB1c2VzIGRpZmZlcmVudCBmb3JtYXRzIHRvIE1vbWVudCwgc28geW91ciBmb3JtYXQgZm9yIHRoZSBEYWlseSBOb3RlcyBwbHVnaW4gbWF5IG5vdCB3b3JrIGhlcmUuIEJlIHN1cmUgdG8gY2hlY2sgb3V0IDxhIGhyZWY9XCJodHRwczovL21vbWVudC5naXRodWIuaW8vbHV4b24vIy9mb3JtYXR0aW5nP2lkPXRhYmxlLW9mLXRva2Vuc1wiPnRoZSBkb2NzPC9hPiB0byBmaW5kIHRoZSByaWdodCBmb3JtYXQuPGJyPllvdSBjYW4gZXNjYXBlIGNoYXJhY3RlcnMgYnkgd3JhcHBpbmcgdGhlbSBpbiBzaW5nbGUgcXVvdGVzIChlLmcuIDxjb2RlPnl5eXktTU0tZGQgJ0RhaWx5IE5vdGUnPC9jb2RlPilgXHJcbiAgICAgIClcclxuICAgIClcclxuICAgIC5hZGRUZXh0KCh0ZXh0KSA9PiB7XHJcbiAgICAgIHRleHQuc2V0VmFsdWUoc2V0dGluZ3MuZGF0ZU5vdGVGb3JtYXQpO1xyXG4gICAgICB0ZXh0LmlucHV0RWwub25ibHVyID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIHNldHRpbmdzLmRhdGVOb3RlRm9ybWF0ID0gdGV4dC5nZXRWYWx1ZSgpO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICBhd2FpdCByZWZyZXNoSW5kZXgocGx1Z2luKTtcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICBuZXcgU2V0dGluZyhkYXRlTm90ZURldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkRhdGUgTm90ZSBGaWVsZFwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBcIlNlbGVjdCBhIGZpZWxkIHRvIHBvaW50IHRvIHRvbW9ycm93J3Mgbm90ZSBmcm9tIHRoZSBjdXJyZW50IG5vdGUuIFRoZSBvcHBvc2l0ZSBmaWVsZCB3aWxsIGJlIHVzZWQgdG8gcG9pbnQgdG8geWVzdGVyZGF5J3Mgbm90ZS5cIlxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuYWRkRHJvcGRvd24oKGRkOiBEcm9wZG93bkNvbXBvbmVudCkgPT4ge1xyXG4gICAgICBkZC5hZGRPcHRpb25zKGZpZWxkT3B0aW9ucylcclxuICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3MuZGF0ZU5vdGVGaWVsZClcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgICBzZXR0aW5ncy5kYXRlTm90ZUZpZWxkID0gZmllbGQ7XHJcbiAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICBhd2FpdCByZWZyZXNoSW5kZXgocGx1Z2luKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAvLyBuZXcgU2V0dGluZyhkYXRlTm90ZURldGFpbHMpXHJcbiAgLy8gICAuc2V0TmFtZShcIlBvaW50IHVwIHRvIE1vbnRoXCIpXHJcbiAgLy8gICAuc2V0RGVzYyhcclxuICAvLyAgICAgZnJhZ1dpdGhIVE1MKFxyXG4gIC8vICAgICAgIFwiU2VsZWN0IGEgZmllbGQgdG8gcG9pbnQgdXB3YXJkcyB0byB0aGUgY29ycmVzcG9uZGluZyBtb250aCAoVGhpcyB3aWxsIHN0aWxsIHdvcmsgaWYgYSBub3RlIGRvZXNuJ3QgZXhpc3QgZm9yIHRoYXQgbW9udGgpLjxicj5MZWF2ZSB0aGUgZHJvcGRvd24gYmxhbmsgdG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUuXCJcclxuICAvLyAgICAgKVxyXG4gIC8vICAgKVxyXG4gIC8vICAgLmFkZERyb3Bkb3duKChkZDogRHJvcGRvd25Db21wb25lbnQpID0+IHtcclxuICAvLyAgICAgZGQuYWRkT3B0aW9ucyhmaWVsZE9wdGlvbnMpO1xyXG4gIC8vICAgICBkZC5vbkNoYW5nZShhc3luYyAoZmllbGQpID0+IHtcclxuICAvLyAgICAgICBzZXR0aW5ncy5kYXRlTm90ZUFkZE1vbnRoID0gZmllbGQ7XHJcbiAgLy8gICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gIC8vICAgICAgIGF3YWl0IHJlZnJlc2hJbmRleChwbHVnaW4pO1xyXG4gIC8vICAgICB9KTtcclxuICAvLyAgIH0pO1xyXG4gIC8vIG5ldyBTZXR0aW5nKGRhdGVOb3RlRGV0YWlscylcclxuICAvLyAgIC5zZXROYW1lKFwiUG9pbnQgdXAgdG8gWWVhclwiKVxyXG4gIC8vICAgLnNldERlc2MoXHJcbiAgLy8gICAgIGZyYWdXaXRoSFRNTChcclxuICAvLyAgICAgICBcIlNlbGVjdCBhIGZpZWxkIHRvIHBvaW50IHVwd2FyZHMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgeWVhciAoVGhpcyB3aWxsIHN0aWxsIHdvcmsgaWYgYSBub3RlIGRvZXNuJ3QgZXhpc3QgZm9yIHRoYXQgeWVhcikuPGJyPkxlYXZlIHRoZSBkcm9wZG93biBibGFuayB0byBkaXNhYmxlIHRoaXMgZmVhdHVyZS5cIlxyXG4gIC8vICAgICApXHJcbiAgLy8gICApXHJcbiAgLy8gICAuYWRkRHJvcGRvd24oKGRkOiBEcm9wZG93bkNvbXBvbmVudCkgPT4ge1xyXG4gIC8vICAgICBkZC5hZGRPcHRpb25zKGZpZWxkT3B0aW9ucyk7XHJcbiAgLy8gICAgIGRkLm9uQ2hhbmdlKGFzeW5jIChmaWVsZCkgPT4ge1xyXG4gIC8vICAgICAgIHNldHRpbmdzLmRhdGVOb3RlQWRkWWVhciA9IGZpZWxkO1xyXG4gIC8vICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAvLyAgICAgICBhd2FpdCByZWZyZXNoSW5kZXgocGx1Z2luKTtcclxuICAvLyAgICAgfSk7XHJcbiAgLy8gICB9KTtcclxufVxyXG4iLCAiaW1wb3J0IGxvZyBmcm9tIFwibG9nbGV2ZWxcIjtcclxuaW1wb3J0IHsgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgdHlwZSB7IERlYnVnTGV2ZWwgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG5pbXBvcnQgeyBkZXRhaWxzLCBmcmFnV2l0aEhUTUwgfSBmcm9tIFwiLi9CcmVhZGNydW1ic1NldHRpbmdUYWJcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGREZWJ1Z2dpbmdzU2V0dGluZ3MoXHJcbiAgcGx1Z2luOiBCQ1BsdWdpbixcclxuICBjb250YWluZXJFbDogSFRNTEVsZW1lbnRcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IGRlYnVnRGV0YWlscyA9IGRldGFpbHMoXCJEZWJ1Z2dpbmdcIiwgY29udGFpbmVyRWwpO1xyXG5cclxuICBuZXcgU2V0dGluZyhkZWJ1Z0RldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkRlYnVnIE1vZGVcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgXCJTZXQgdGhlIG1pbmltdW0gbGV2ZWwgb2YgZGVidWcgbWVzc2FnZXMgdG8gY29uc29sZSBsb2cuIElmIHlvdSBjaG9vc2UgPGNvZGU+VFJBQ0U8L2NvZGU+LCB0aGVuIGV2ZXJ5dGhpbmcgd2lsbCBiZSBsb2dnZWQuIElmIHlvdSBjaG9vc2UgPGNvZGU+RVJST1I8L2NvZGU+LCB0aGVuIG9ubHkgdGhlIG1vc3QgbmVjZXNzYXJ5IGlzc3VlcyB3aWxsIGJlIGxvZ2dlZC4gPGNvZGU+U0lMRU5UPC9jb2RlPiB3aWxsIHR1cm4gb2ZmIGFsbCBsb2dzLlwiXHJcbiAgICAgIClcclxuICAgIClcclxuICAgIC5hZGREcm9wZG93bigoZGQpID0+IHtcclxuICAgICAgT2JqZWN0LmtleXMobG9nLmxldmVscykuZm9yRWFjaCgoa2V5KSA9PiBkZC5hZGRPcHRpb24oa2V5LCBrZXkpKTtcclxuICAgICAgZGQuc2V0VmFsdWUoc2V0dGluZ3MuZGVidWdNb2RlKS5vbkNoYW5nZShhc3luYyAodmFsdWU6IERlYnVnTGV2ZWwpID0+IHtcclxuICAgICAgICBsb2cuc2V0TGV2ZWwodmFsdWUpO1xyXG4gICAgICAgIHNldHRpbmdzLmRlYnVnTW9kZSA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgZGVidWdEZXRhaWxzLmNyZWF0ZUVsKFwiYnV0dG9uXCIsIHsgdGV4dDogXCJDb25zb2xlIGxvZyBzZXR0aW5nc1wiIH0sIChlbCkgPT4ge1xyXG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IGNvbnNvbGUubG9nKHNldHRpbmdzKSk7XHJcbiAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50LCBOb3RpY2UsIFNldHRpbmcgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHsgcmVmcmVzaEluZGV4IH0gZnJvbSBcIi4uL3JlZnJlc2hJbmRleFwiO1xyXG5pbXBvcnQgeyBERUZBVUxUX1NFVFRJTkdTLCBNQVRSSVhfVklFVyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHsgZ2V0RmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBmcmFnV2l0aEhUTUwsIHN1YkRldGFpbHMgfSBmcm9tIFwiLi9CcmVhZGNydW1ic1NldHRpbmdUYWJcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGREZW5kcm9uU2V0dGluZ3MoXHJcbiAgcGx1Z2luOiBCQ1BsdWdpbixcclxuICBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHM6IEhUTUxEZXRhaWxzRWxlbWVudFxyXG4pIHtcclxuICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW47XHJcbiAgY29uc3QgeyB1c2VySGllcnMgfSA9IHNldHRpbmdzO1xyXG4gIGNvbnN0IGZpZWxkcyA9IGdldEZpZWxkcyh1c2VySGllcnMpO1xyXG4gIGNvbnN0IGRlbmRyb25EZXRhaWxzID0gc3ViRGV0YWlscyhcclxuICAgIFwiRGVuZHJvbiBOb3Rlc1wiLFxyXG4gICAgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzXHJcbiAgKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoZGVuZHJvbkRldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkFkZCBEZW5kcm9uIG5vdGVzIHRvIGdyYXBoXCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgZnJhZ1dpdGhIVE1MKFxyXG4gICAgICAgIFwiRGVuZHJvbiBub3RlcyBjcmVhdGUgYSBoaWVyYXJjaHkgdXNpbmcgbm90ZSBuYW1lcy48L2JyPjxjb2RlPm5tYXRoLmFsZ2VicmE8L2NvZGU+IGlzIGEgbm90ZSBhYm91dCBhbGdlYnJhLCB3aG9zZSBwYXJlbnQgaXMgPGNvZGU+bWF0aDwvY29kZT4uPC9icj48Y29kZT5ubWF0aC5jYWxjdWx1cy5saW1pdHM8L2NvZGU+IGlzIGEgbm90ZSBhYm91dCBsaW1pdHMgd2hvc2UgcGFyZW50IGlzIHRoZSBub3RlIDxjb2RlPm1hdGguY2FsY3VsdXM8L2NvZGU+LCB0aGUgcGFyZW50IG9mIHdoaWNoIGlzIDxjb2RlPm1hdGg8L2NvZGU+LlwiXHJcbiAgICAgIClcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgdG9nZ2xlLnNldFZhbHVlKHNldHRpbmdzLmFkZERlbmRyb25Ob3Rlcykub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MuYWRkRGVuZHJvbk5vdGVzID0gdmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICBuZXcgU2V0dGluZyhkZW5kcm9uRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiRGVsaW1pdGVyXCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgZnJhZ1dpdGhIVE1MKFxyXG4gICAgICAgIFwiV2hpY2ggZGVsaW1pdGVyIHNob3VsZCBCcmVhZGNydW1icyBsb29rIGZvcj8gVGhlIGRlZmF1bHQgaXMgPGNvZGU+LjwvY29kZT4uXCJcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZFRleHQoKHRleHQpID0+IHtcclxuICAgICAgdGV4dFxyXG4gICAgICAgIC5zZXRQbGFjZWhvbGRlcihcIkRlbGltaXRlclwiKVxyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5kZW5kcm9uTm90ZURlbGltaXRlcik7XHJcblxyXG4gICAgICB0ZXh0LmlucHV0RWwub25ibHVyID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGV4dC5nZXRWYWx1ZSgpO1xyXG4gICAgICAgIGlmICh2YWx1ZSkgc2V0dGluZ3MuZGVuZHJvbk5vdGVEZWxpbWl0ZXIgPSB2YWx1ZTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIG5ldyBOb3RpY2UoYFRoZSBkZWxpbWl0ZXIgY2FuJ3QgYmUgYmxhbmtgKTtcclxuICAgICAgICAgIHNldHRpbmdzLmRlbmRyb25Ob3RlRGVsaW1pdGVyID0gREVGQVVMVF9TRVRUSU5HUy5kZW5kcm9uTm90ZURlbGltaXRlcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKGRlbmRyb25EZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJUcmltIERlbmRyb24gTm90ZSBOYW1lc1wiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBcIldoZW4gZGlzcGxheWluZyBhIGRlbmRyb24gbm90ZSBuYW1lLCBzaG91bGQgaXQgYmUgdHJpbW1lZCB0byBvbmx5IHNob3cgdGhlIGxhc3QgaXRlbSBpbiB0aGUgY2hhaW4/PC9icj5lLmcuIDxjb2RlPkEuQi5DPC9jb2RlPiBcdTIxOTIgPGNvZGU+QzwvY29kZT4uXCJcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3MudHJpbURlbmRyb25Ob3Rlcykub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MudHJpbURlbmRyb25Ob3RlcyA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uZ2V0QWN0aXZlVFlQRVZpZXcoTUFUUklYX1ZJRVcpLmRyYXcoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKGRlbmRyb25EZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJEZW5kcm9uIE5vdGUgRmllbGRcIilcclxuICAgIC5zZXREZXNjKFwiV2hpY2ggZmllbGQgc2hvdWxkIEJyZWFkY3J1bWJzIHVzZSBmb3IgRGVuZHJvbiBub3Rlcz9cIilcclxuICAgIC5hZGREcm9wZG93bigoZGQ6IERyb3Bkb3duQ29tcG9uZW50KSA9PiB7XHJcbiAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4gZGQuYWRkT3B0aW9uKGZpZWxkLCBmaWVsZCkpO1xyXG4gICAgICBkZC5zZXRWYWx1ZShzZXR0aW5ncy5kZW5kcm9uTm90ZUZpZWxkKTtcclxuXHJcbiAgICAgIGRkLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHNldHRpbmdzLmRlbmRyb25Ob3RlRmllbGQgPSB2YWx1ZTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgYXdhaXQgcmVmcmVzaEluZGV4KHBsdWdpbik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB7IE5vdGljZSwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG5pbXBvcnQgeyByZWZyZXNoSW5kZXggfSBmcm9tIFwiLi4vcmVmcmVzaEluZGV4XCI7XHJcbmltcG9ydCB7IHNwbGl0QW5kVHJpbSB9IGZyb20gXCIuLi9VdGlscy9nZW5lcmFsVXRpbHNcIjtcclxuaW1wb3J0IHsgZGV0YWlscywgZnJhZ1dpdGhIVE1MIH0gZnJvbSBcIi4vQnJlYWRjcnVtYnNTZXR0aW5nVGFiXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkR2VuZXJhbFNldHRpbmdzKHBsdWdpbjogQkNQbHVnaW4sIGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCkge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCBnZW5lcmFsRGV0YWlscyA9IGRldGFpbHMoXCJHZW5lcmFsIE9wdGlvbnNcIiwgY29udGFpbmVyRWwpO1xyXG5cclxuICBuZXcgU2V0dGluZyhnZW5lcmFsRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiUmVmcmVzaCBJbmRleCBvbiBOb3RlIENoYW5nZVwiKVxyXG4gICAgLnNldERlc2MoZnJhZ1dpdGhIVE1MKFxyXG4gICAgICBcIlJlZnJlc2ggdGhlIEJyZWFkY3J1bWJzIGluZGV4IGRhdGEgZXZlcnl0aW1lIHlvdSBjaGFuZ2Ugbm90ZXMuPC9icj48c3Ryb25nPk5vdGU8L3N0cm9uZz46IFRoaXMgY2FuIGJlIHZlcnkgc2xvdyBvbiBsYXJnZSB2YXVsdHMuXCIpXHJcbiAgICApXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAgIHRvZ2dsZS5zZXRWYWx1ZShzZXR0aW5ncy5yZWZyZXNoT25Ob3RlQ2hhbmdlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy5yZWZyZXNoT25Ob3RlQ2hhbmdlID0gdmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoZ2VuZXJhbERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlJlZnJlc2ggSW5kZXggT24gTm90ZSBTYXZlXCIpXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAgIHRvZ2dsZS5zZXRWYWx1ZShzZXR0aW5ncy5yZWZyZXNoT25Ob3RlU2F2ZSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MucmVmcmVzaE9uTm90ZVNhdmUgPSB2YWx1ZTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICBuZXcgU2V0dGluZyhnZW5lcmFsRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiU2hvdyBSZWZyZXNoIEluZGV4IE5vdGljZVwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIFwiV2hlbiBSZWZyZXNoaW5nIEluZGV4LCBzaG91bGQgaXQgc2hvdyBhIG5vdGljZSBvbmNlIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGU/XCJcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgdG9nZ2xlLnNldFZhbHVlKHNldHRpbmdzLnNob3dSZWZyZXNoTm90aWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy5zaG93UmVmcmVzaE5vdGljZSA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKGdlbmVyYWxEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJBbGlhcyBGaWVsZHNcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgXCJBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGZpZWxkcyB1c2VkIHRvIHNwZWNpZnkgYWxpYXNlcy4gVGhlc2UgZmllbGRzIHdpbGwgYmUgY2hlY2tlZCwgaW4gb3JkZXIsIHRvIGRpc3BsYXkgYW4gYWx0ZXJuYXRlIG5vdGUgdGl0bGUgaW4gZGlmZmVyZW50IHZpZXdzLjwvYnI+VGhpcyBmaWVsZCB3aWxsIHByb2JhYmx5IGJlIDxjb2RlPmFsaWFzPC9jb2RlPiBvciA8Y29kZT5hbGlhc2VzPC9jb2RlPiwgYnV0IGl0IGNhbiBiZSBhbnl0aGluZywgbGlrZSA8Y29kZT50aXRsZTwvY29kZT4uXCJcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZFRleHQoKHRleHQpID0+IHtcclxuICAgICAgdGV4dC5zZXRWYWx1ZShzZXR0aW5ncy5hbHRMaW5rRmllbGRzLmpvaW4oXCIsIFwiKSk7XHJcbiAgICAgIHRleHQuaW5wdXRFbC5vbmJsdXIgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MuYWx0TGlua0ZpZWxkcyA9IHNwbGl0QW5kVHJpbSh0ZXh0LmdldFZhbHVlKCkpO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICBuZXcgU2V0dGluZyhnZW5lcmFsRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiT25seSBzaG93IGZpcnN0IGFsaWFzXCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgXCJJZiBhIG5vdGUgaGFzIGFuIGFsaWFzICh1c2luZyB0aGUgZmllbGRzIGluIHRoZSBzZXR0aW5nIGFib3ZlKSwgc2hvdWxkIG9ubHkgdGhlIGZpcnN0IG9uZSBiZSBzaG93bj9cIlxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICB0b2dnbGUuc2V0VmFsdWUoIXNldHRpbmdzLnNob3dBbGxBbGlhc2VzKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy5zaG93QWxsQWxpYXNlcyA9ICF2YWx1ZTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgYXdhaXQgcmVmcmVzaEluZGV4KHBsdWdpbik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICBuZXcgU2V0dGluZyhnZW5lcmFsRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiVXNlIHlhbWwgb3IgaW5saW5lIGZpZWxkcyBmb3IgaGllcmFyY2h5IGRhdGFcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBcIklmIGVuYWJsZWQsIEJyZWFkY3J1bWJzIHdpbGwgbWFrZSBpdCdzIGhpZXJhcmNoeSB1c2luZyB5YW1sIGZpZWxkcywgYW5kIGlubGluZSBEYXRhdmlldyBmaWVsZHMuXFxuSWYgdGhpcyBpcyBkaXNhYmxlZCwgaXQgd2lsbCBvbmx5IHVzZSBKdWdnbCBsaW5rcyAoU2VlIGJlbG93KS5cIlxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3MudXNlQWxsTWV0YWRhdGEpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHNldHRpbmdzLnVzZUFsbE1ldGFkYXRhID0gdmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIGF3YWl0IHJlZnJlc2hJbmRleChwbHVnaW4pO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoZ2VuZXJhbERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlVzZSBKdWdnbCBsaW5rIHN5bnRheCB3aXRob3V0IGhhdmluZyBKdWdnbCBpbnN0YWxsZWQuXCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgZnJhZ1dpdGhIVE1MKFxyXG4gICAgICAgICdTaG91bGQgQnJlYWRjcnVtYnMgbG9vayBmb3IgPGEgaHJlZj1cImh0dHBzOi8vanVnZ2wuaW8vTGluaytUeXBlc1wiIGFyaWEtbGFiZWw9XCJodHRwczovL2p1Z2dsLmlvL0xpbmsrVHlwZXNcIj5KdWdnbCBsaW5rczwvYT4gZXZlbiBpZiB5b3UgZG9uXFwndCBoYXZlIEp1Z2dsIGluc3RhbGxlZD8gSWYgeW91IGRvIGhhdmUgSnVnZ2wgaW5zdGFsbGVkLCBpdCB3aWxsIGFsd2F5cyBsb29rIGZvciBKdWdnbCBsaW5rcy4nXHJcbiAgICAgIClcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgdG9nZ2xlXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLnBhcnNlSnVnZ2xMaW5rc1dpdGhvdXRKdWdnbClcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICBzZXR0aW5ncy5wYXJzZUp1Z2dsTGlua3NXaXRob3V0SnVnZ2wgPSB2YWx1ZTtcclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuXHJcblxyXG4gIG5ldyBTZXR0aW5nKGdlbmVyYWxEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJFbmFibGUgRmllbGQgU3VnZ2VzdG9yXCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgZnJhZ1dpdGhIVE1MKFxyXG4gICAgICAgICdBbG90IG9mIEJyZWFkY3J1bWJzIGZlYXR1cmVzIHJlcXVpcmUgYSBtZXRhZGF0YSAob3IgaW5saW5lIERhdGF2aWV3KSBmaWVsZCB0byB3b3JrLiBGb3IgZXhhbXBsZSwgYEJDLWZvbGRlci1ub3RlYC48L2JyPlRoZSBGaWVsZCBTdWdnZXN0b3Igd2lsbCBzaG93IGFuIGF1dG9jb21wbGV0ZSBtZW51IHdpdGggYWxsIGF2YWlsYWJsZSBCcmVhZGNydW1icyBmaWVsZCBvcHRpb25zIHdoZW4geW91IHR5cGUgPGNvZGU+QkMtPC9jb2RlPiBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lLidcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3MuZmllbGRTdWdnZXN0b3IpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHNldHRpbmdzLmZpZWxkU3VnZ2VzdG9yID0gdmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICBuZXcgU2V0dGluZyhnZW5lcmFsRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiRW5hYmxlIFJlbGF0aW9uIFN1Z2dlc3RvclwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBcIkVuYWJsZSBhbiBlZGl0b3Igc3VnZ2VzdG9yIHdoaWNoIGdldHMgdHJpZ2dlcmVkIGJ5IGEgY3VzdG9tIHN0cmluZyB0byBzaG93IGEgbGlzdCBvZiByZWxhdGlvbnMgZnJvbSB5b3VyIGhpZXJhcmNoaWVzIHRvIGluc2VydC5cIlxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAgIHRvZ2dsZVxyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5lbmFibGVSZWxhdGlvblN1Z2dlc3RvcilcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICBzZXR0aW5ncy5lbmFibGVSZWxhdGlvblN1Z2dlc3RvciA9IHZhbHVlO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG4gIG5ldyBTZXR0aW5nKGdlbmVyYWxEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJSZWxhdGlvbiBTdWdnZXN0b3IgVHJpZ2dlclwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBcIlRoZSBzdHJpbmcgdXNlZCB0byB0cmlnZ2VyIHRoZSByZWxhdGlvbiBzdWdnZXN0b3IuIERlZmF1bHQgaXMgPGNvZGU+XFxcXDwvY29kZT4uXCJcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZFRleHQoKHRleHQpID0+XHJcbiAgICAgIHRleHQuc2V0VmFsdWUoc2V0dGluZ3MucmVsU3VnZ2VzdG9yVHJpZ2dlcikub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MucmVsU3VnZ2VzdG9yVHJpZ2dlciA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gIGlmIChhcHAucGx1Z2lucy5wbHVnaW5zLmRhdGF2aWV3ICE9PSB1bmRlZmluZWQpIHtcclxuICAgIG5ldyBTZXR0aW5nKGdlbmVyYWxEZXRhaWxzKVxyXG4gICAgICAuc2V0TmFtZShcIkRhdGF2aWV3IFdhaXQgVGltZVwiKVxyXG4gICAgICAuc2V0RGVzYyhcclxuICAgICAgICAnRW50ZXIgYW4gaW50ZWdlciBudW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0IGZvciB0aGUgRGF0YXZpZXcgSW5kZXggdG8gbG9hZC4gVGhlIGxhcmdlciB5b3VyIHZhdWx0LCB0aGUgbG9uZ2VyIGl0IHdpbGwgdGFrZS4gVGhlIGRlZmF1bHQgaXMgNSBzZWNvbmRzLidcclxuICAgICAgKVxyXG4gICAgICAuYWRkVGV4dCgodGV4dCkgPT5cclxuICAgICAgICB0ZXh0XHJcbiAgICAgICAgICAuc2V0UGxhY2Vob2xkZXIoXCJTZWNvbmRzXCIpXHJcbiAgICAgICAgICAuc2V0VmFsdWUoKHNldHRpbmdzLmR2V2FpdFRpbWUgLyAxMDAwKS50b1N0cmluZygpKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBudW0gPSBOdW1iZXIodmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKG51bSA+IDApIHtcclxuICAgICAgICAgICAgICBzZXR0aW5ncy5kdldhaXRUaW1lID0gbnVtICogMTAwMDtcclxuICAgICAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbmV3IE5vdGljZShcIlRoZSBpbnRlcnZhbCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlclwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbn1cclxuIiwgImltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50LCBTZXR0aW5nIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IHJlZnJlc2hJbmRleCB9IGZyb20gXCIuLi9yZWZyZXNoSW5kZXhcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHsgc3BsaXRBbmRUcmltIH0gZnJvbSBcIi4uL1V0aWxzL2dlbmVyYWxVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXRGaWVsZHMgfSBmcm9tIFwiLi4vVXRpbHMvSGllclV0aWxzXCI7XHJcbmltcG9ydCB7IGZyYWdXaXRoSFRNTCwgc3ViRGV0YWlscyB9IGZyb20gXCIuL0JyZWFkY3J1bWJzU2V0dGluZ1RhYlwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZEhpZXJhcmNoeU5vdGVTZXR0aW5ncyhcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIGFsdGVybmF0aXZlSGllcmFyY2h5RGV0YWlsczogSFRNTERldGFpbHNFbGVtZW50XHJcbikge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCBoaWVyYXJjaHlOb3RlRGV0YWlscyA9IHN1YkRldGFpbHMoXHJcbiAgICBcIkhpZXJhcmNoeSBOb3Rlc1wiLFxyXG4gICAgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzXHJcbiAgKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoaGllcmFyY2h5Tm90ZURldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkhpZXJhcmNoeSBOb3RlKHMpXCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgZnJhZ1dpdGhIVE1MKFxyXG4gICAgICAgIFwiQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBub3RlcyB1c2VkIHRvIGNyZWF0ZSBleHRlcm5hbCBCcmVhZGNydW1iIHN0cnVjdHVyZXMuPGJyPllvdSBjYW4gYWxzbyBwb2ludCB0byBhIDxlbT5mb2xkZXI8L2VtPiBvZiBoaWVyYXJjaHkgbm90ZXMgYnkgZW50ZXJpbmcgPGNvZGU+Zm9sZGVyTmFtZS88L2NvZGU+IChlbmRpbmcgd2l0aCBhIDxjb2RlPi88L2NvZGU+KS48YnI+SGllcmFyY2h5IG5vdGUgbmFtZXMgYW5kIGZvbGRlcnMgb2YgaGllcmFyY2h5IG5vdGVzIGNhbiBib3RoIGJlIGVudGVyZWQgaW4gdGhlIHNhbWUgY29tbWEtc2VwYXJhdGVkIGxpc3QuXCJcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZFRleHQoKHRleHQpID0+IHtcclxuICAgICAgdGV4dFxyXG4gICAgICAgIC5zZXRQbGFjZWhvbGRlcihcIkhpZXJhcmNoeSBOb3RlKHMpXCIpXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLmhpZXJhcmNoeU5vdGVzLmpvaW4oXCIsIFwiKSk7XHJcblxyXG4gICAgICB0ZXh0LmlucHV0RWwub25ibHVyID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNwbGl0cyA9IHNwbGl0QW5kVHJpbSh0ZXh0LmdldFZhbHVlKCkpO1xyXG5cclxuICAgICAgICBzZXR0aW5ncy5oaWVyYXJjaHlOb3RlcyA9IHNwbGl0cztcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgbmV3IFNldHRpbmcoaGllcmFyY2h5Tm90ZURldGFpbHMpXHJcbiAgICAuc2V0TmFtZSgnSGllcmFyY2h5IG5vdGUgaXMgcGFyZW50IG9mIHRvcC1sZXZlbCBpdGVtcycpXHJcbiAgICAuc2V0RGVzYygnU2hvdWxkIHRoZSBhY3R1YWwgaGllcmFyY2h5IG5vdGUgYmUgdHJlYXRlZCBhcyB0aGUgcGFyZW50IG9mIGFsbCB0aGUgdG9wLWxldmVsIGl0ZW1zIGluIHRoZSBsaXN0PyBcdTI3MDUgPSBZZXMsIFx1Mjc0QyA9IE5vJylcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xyXG4gICAgICB0b2dnbGVcclxuICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3MuaGllcmFyY2h5Tm90ZUlzUGFyZW50KVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLmhpZXJhcmNoeU5vdGVJc1BhcmVudCA9IHZhbHVlXHJcbiAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICBhd2FpdCByZWZyZXNoSW5kZXgocGx1Z2luKTtcclxuICAgICAgICB9KVxyXG4gICAgfSlcclxuXHJcbiAgbmV3IFNldHRpbmcoaGllcmFyY2h5Tm90ZURldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkRlZmF1bHQgSGllcmFyY2h5IE5vdGUgRmllbGRcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgXCJCeSBkZWZhdWx0LCBoaWVyYXJjaHkgbm90ZXMgdXNlIHRoZSBmaXJzdCA8Y29kZT51cDwvY29kZT4gZmllbGQgaW4geW91ciBoaWVyYXJjaGllcy4gQ2hvb3NlIGEgZGlmZmVyZW50IG9uZSB0byB1c2UgYnkgZGVmYXVsdC4gSWYgeW91IGRvbid0IHdhbnQgdG8gY2hvb3NlIGEgZGVmYXVsdCwgc2VsZWN0IHRoZSBibGFuayBvcHRpb24gYXQgdGhlIGJvdHRvbSBvZiB0aGUgbGlzdC5cIlxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuYWRkRHJvcGRvd24oKGRkOiBEcm9wZG93bkNvbXBvbmVudCkgPT4ge1xyXG4gICAgICBjb25zdCB1cEZpZWxkcyA9IGdldEZpZWxkcyhzZXR0aW5ncy51c2VySGllcnMsIFwidXBcIik7XHJcblxyXG4gICAgICBjb25zdCBvcHRpb25zID0ge307XHJcbiAgICAgIHVwRmllbGRzLmZvckVhY2goXHJcbiAgICAgICAgKGZpZWxkKSA9PiAob3B0aW9uc1tmaWVsZF0gPSBmaWVsZClcclxuICAgICAgKTtcclxuICAgICAgZGQuYWRkT3B0aW9ucyhvcHRpb25zKVxyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5ITlVwRmllbGQgfHwgdXBGaWVsZHNbMF0pXHJcbiAgICAgICAgLm9uQ2hhbmdlKGFzeW5jIChmaWVsZCkgPT4ge1xyXG4gICAgICAgICAgc2V0dGluZ3MuSE5VcEZpZWxkID0gZmllbGQ7XHJcbiAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICBhd2FpdCByZWZyZXNoSW5kZXgocGx1Z2luKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG59XHJcbiIsIG51bGwsICI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG4gIGltcG9ydCB7IE5vdGljZSB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG4gIGltcG9ydCBGYUxpc3RVbCBmcm9tIFwic3ZlbHRlLWljb25zL2ZhL0ZhTGlzdFVsLnN2ZWx0ZVwiO1xyXG4gIGltcG9ydCBGYVBsdXMgZnJvbSBcInN2ZWx0ZS1pY29ucy9mYS9GYVBsdXMuc3ZlbHRlXCI7XHJcbiAgaW1wb3J0IEZhUmVnVHJhc2hBbHQgZnJvbSBcInN2ZWx0ZS1pY29ucy9mYS9GYVJlZ1RyYXNoQWx0LnN2ZWx0ZVwiO1xyXG4gIGltcG9ydCB7IEFSUk9XX0RJUkVDVElPTlMsIGJsYW5rVXNlckhpZXIsIERJUkVDVElPTlMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbiAgaW1wb3J0IHR5cGUgeyBVc2VySGllciB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbiAgaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuICBpbXBvcnQgeyBzcGxpdEFuZFRyaW0sIHN3YXBJdGVtcyB9IGZyb20gXCIuLi9VdGlscy9nZW5lcmFsVXRpbHNcIjtcclxuICBpbXBvcnQgeyBoaWVyVG9TdHIgfSBmcm9tIFwiLi4vVXRpbHMvSGllclV0aWxzXCI7XHJcblxyXG4gIGV4cG9ydCBsZXQgcGx1Z2luOiBCQ1BsdWdpbjtcclxuICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW47XHJcblxyXG4gIGxldCBjdXJySGllcnMgPSBbLi4ucGx1Z2luLnNldHRpbmdzLnVzZXJIaWVyc107XHJcbiAgYXN5bmMgZnVuY3Rpb24gdXBkYXRlKGN1cnJIaWVyczogVXNlckhpZXJbXSkge1xyXG4gICAgcGx1Z2luLnNldHRpbmdzLnVzZXJIaWVycyA9IGN1cnJIaWVycztcclxuICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICB9XHJcbjwvc2NyaXB0PlxyXG5cclxuPGRpdj5cclxuICA8ZGl2IGNsYXNzPVwiQkMtQnV0dG9uc1wiPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICBhcmlhLWxhYmVsPVwiQWRkIE5ldyBIaWVyYXJjaHlcIlxyXG4gICAgICBvbjpjbGljaz17YXN5bmMgKCkgPT4gKGN1cnJIaWVycyA9IFsuLi5jdXJySGllcnMsIGJsYW5rVXNlckhpZXIoKV0pfVxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPlxyXG4gICAgICAgIDxGYVBsdXMgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgYXJpYS1sYWJlbD1cIlJlc2V0IEFsbCBIaWVyYXJjaGllc1wiXHJcbiAgICAgIG9uOmNsaWNrPXthc3luYyAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHdpbmRvdy5jb25maXJtKFwiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlc2V0IGFsbCBoaWVyYXJjaGllcz9cIikpIHtcclxuICAgICAgICAgIGN1cnJIaWVycyA9IFtdO1xyXG4gICAgICAgICAgYXdhaXQgdXBkYXRlKGN1cnJIaWVycyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9fVxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPlxyXG4gICAgICAgIDxGYVJlZ1RyYXNoQWx0IC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIGFyaWEtbGFiZWw9XCJTaG93IEhpZXJhcmNoaWVzXCJcclxuICAgICAgb246Y2xpY2s9eygpID0+IG5ldyBOb3RpY2UoY3VyckhpZXJzLm1hcChoaWVyVG9TdHIpLmpvaW4oXCJcXG5cXG5cIikpfVxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPlxyXG4gICAgICAgIDxGYUxpc3RVbCAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICB7I2VhY2ggY3VyckhpZXJzIGFzIGhpZXIsIGl9XHJcbiAgICA8ZGV0YWlscyBjbGFzcz1cIkJDLUhpZXItRGV0YWlsc1wiPlxyXG4gICAgICA8c3VtbWFyeT5cclxuICAgICAgICB7RElSRUNUSU9OUy5tYXAoKGRpcikgPT4gaGllcltkaXJdPy5qb2luKFwiLCBcIikgPz8gXCJcIilcclxuICAgICAgICAgIC5tYXAoKGRpckZpZWxkcykgPT4gYCgke2RpckZpZWxkc30pYClcclxuICAgICAgICAgIC5qb2luKFwiIFwiKX1cclxuXHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJCQy1CdXR0b25zXCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTd2FwIHdpdGggSGllcmFyY2h5IEFib3ZlXCJcclxuICAgICAgICAgICAgb246Y2xpY2s9e2FzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICBjdXJySGllcnMgPSBzd2FwSXRlbXMoaSwgaSAtIDEsIGN1cnJIaWVycyk7XHJcbiAgICAgICAgICAgICAgYXdhaXQgdXBkYXRlKGN1cnJIaWVycyk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFx1MjE5MVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTd2FwIHdpdGggSGllcmFyY2h5IEJlbG93XCJcclxuICAgICAgICAgICAgb246Y2xpY2s9e2FzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICBjdXJySGllcnMgPSBzd2FwSXRlbXMoaSwgaSArIDEsIGN1cnJIaWVycyk7XHJcbiAgICAgICAgICAgICAgYXdhaXQgdXBkYXRlKGN1cnJIaWVycyk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFx1MjE5M1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJSZW1vdmUgSGllcmFyY2h5XCJcclxuICAgICAgICAgICAgb246Y2xpY2s9e2FzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBvbGRIaWVyID0gY3VyckhpZXJzLnNwbGljZShpLCAxKVswXTtcclxuICAgICAgICAgICAgICBvbGRIaWVyLnVwLmZvckVhY2goKHVwRmllbGQpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gc2V0dGluZ3MubGltaXRUcmFpbENoZWNrYm94ZXMuaW5kZXhPZih1cEZpZWxkKTtcclxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSBzZXR0aW5ncy5saW1pdFRyYWlsQ2hlY2tib3hlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICBESVJFQ1RJT05TLmZvckVhY2goKGRpcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgb2xkSGllcltkaXJdLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4SSA9IHNldHRpbmdzLmxpbWl0SnVtcFRvRmlyc3RGaWVsZHMuaW5kZXhPZihmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChpbmRleEkgPiAtMSlcclxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5saW1pdEp1bXBUb0ZpcnN0RmllbGRzLnNwbGljZShpbmRleEksIDEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXhKID0gc2V0dGluZ3MubGltaXRXcml0ZUJDQ2hlY2tib3hlcy5pbmRleE9mKGZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKGluZGV4SiA+IC0xKVxyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLmxpbWl0SnVtcFRvRmlyc3RGaWVsZHMuc3BsaWNlKGluZGV4SiwgMSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgY3VyckhpZXJzID0gY3VyckhpZXJzO1xyXG4gICAgICAgICAgICAgIGF3YWl0IHVwZGF0ZShjdXJySGllcnMpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBYXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvc3VtbWFyeT5cclxuICAgICAgeyNlYWNoIERJUkVDVElPTlMgYXMgZGlyfVxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJCQy1BcnJvdy1MYWJlbFwiIGZvcj17ZGlyfT5cclxuICAgICAgICAgICAge0FSUk9XX0RJUkVDVElPTlNbZGlyXX1cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBzaXplPVwiMjBcIlxyXG4gICAgICAgICAgICBuYW1lPXtkaXJ9XHJcbiAgICAgICAgICAgIHZhbHVlPXtoaWVyW2Rpcl0/LmpvaW4oXCIsIFwiKSA/PyBcIlwifVxyXG4gICAgICAgICAgICBvbjpjaGFuZ2U9e2FzeW5jIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgeyB2YWx1ZSB9ID0gZS50YXJnZXQ7XHJcbiAgICAgICAgICAgICAgY29uc3Qgc3BsaXRzID0gc3BsaXRBbmRUcmltKHZhbHVlKTtcclxuICAgICAgICAgICAgICBjdXJySGllcnNbaV1bZGlyXSA9IHNwbGl0cztcclxuICAgICAgICAgICAgICBhd2FpdCB1cGRhdGUoY3VyckhpZXJzKTtcclxuXHJcbiAgICAgICAgICAgICAgc3BsaXRzLmZvckVhY2goKHNwbGl0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgIGRpciA9PT0gXCJ1cFwiICYmXHJcbiAgICAgICAgICAgICAgICAgICFzZXR0aW5ncy5saW1pdFRyYWlsQ2hlY2tib3hlcy5pbmNsdWRlcyhzcGxpdClcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgc2V0dGluZ3MubGltaXRUcmFpbENoZWNrYm94ZXMucHVzaChzcGxpdCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXNldHRpbmdzLmxpbWl0SnVtcFRvRmlyc3RGaWVsZHMuaW5jbHVkZXMoc3BsaXQpKVxyXG4gICAgICAgICAgICAgICAgICBzZXR0aW5ncy5saW1pdEp1bXBUb0ZpcnN0RmllbGRzLnB1c2goc3BsaXQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFzZXR0aW5ncy5saW1pdFdyaXRlQkNDaGVja2JveGVzLmluY2x1ZGVzKHNwbGl0KSlcclxuICAgICAgICAgICAgICAgICAgc2V0dGluZ3MubGltaXRXcml0ZUJDQ2hlY2tib3hlcy5wdXNoKHNwbGl0KTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB7L2VhY2h9XHJcbiAgICA8L2RldGFpbHM+XHJcbiAgey9lYWNofVxyXG48L2Rpdj5cclxuXHJcbjxzdHlsZT5cclxuICBsYWJlbC5CQy1BcnJvdy1MYWJlbCB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB3aWR0aDogMjBweCAhaW1wb3J0YW50O1xyXG4gIH1cclxuICBkaXYuQkMtQnV0dG9ucyB7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogNXB4O1xyXG4gIH1cclxuXHJcbiAgZGV0YWlscy5CQy1IaWVyLURldGFpbHMge1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYmFja2dyb3VuZC1tb2RpZmllci1ib3JkZXIpO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICAgIHBhZGRpbmc6IDEwcHggNXB4IDEwcHggMTBweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XHJcbiAgfVxyXG4gIC5CQy1IaWVyLURldGFpbHMgc3VtbWFyeTo6bWFya2VyIHtcclxuICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICB9XHJcblxyXG4gIC5CQy1IaWVyLURldGFpbHMgc3VtbWFyeSBidXR0b24ge1xyXG4gICAgZmxvYXQ6IHJpZ2h0O1xyXG4gIH1cclxuICAuaWNvbiB7XHJcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1ub3JtYWwpO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgcGFkZGluZy10b3A6IDNweDtcclxuICAgIHdpZHRoOiAxN3B4O1xyXG4gICAgaGVpZ2h0OiAxN3B4O1xyXG4gIH1cclxuPC9zdHlsZT5cclxuIiwgIjxzY3JpcHQ+XG4gIGV4cG9ydCBsZXQgdGl0bGUgPSBudWxsO1xuICBleHBvcnQgbGV0IHZpZXdCb3g7XG48L3NjcmlwdD5cblxuPHN0eWxlPlxuICBzdmcge1xuICAgIHN0cm9rZTogY3VycmVudENvbG9yO1xuICAgIGZpbGw6IGN1cnJlbnRDb2xvcjtcbiAgICBzdHJva2Utd2lkdGg6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gIH0gIFxuPC9zdHlsZT5cblxuPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIge3ZpZXdCb3h9PlxuICB7I2lmIHRpdGxlfVxuICAgIDx0aXRsZT57dGl0bGV9PC90aXRsZT5cbiAgey9pZn1cbiAgPHNsb3QgLz5cbjwvc3ZnPlxuIiwgIjxzY3JpcHQ+XG4gICAgICAgIGltcG9ydCBJY29uQmFzZSBmcm9tICcuLi9jb21wb25lbnRzL0ljb25CYXNlLnN2ZWx0ZSc7XG4gICAgICAgIDwvc2NyaXB0PlxuICAgICAgICA8SWNvbkJhc2Ugdmlld0JveD1cIjAgMCA1MTIgNTEyXCIgey4uLiQkcHJvcHN9PlxuICAgICAgICAgIDxwYXRoIGQ9XCJNNDggNDhhNDggNDggMCAxIDAgNDggNDggNDggNDggMCAwIDAtNDgtNDh6bTAgMTYwYTQ4IDQ4IDAgMSAwIDQ4IDQ4IDQ4IDQ4IDAgMCAwLTQ4LTQ4em0wIDE2MGE0OCA0OCAwIDEgMCA0OCA0OCA0OCA0OCAwIDAgMC00OC00OHptNDQ4IDE2SDE3NmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMjBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTMyMEgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2VjgwYTE2IDE2IDAgMCAwLTE2LTE2em0wIDE2MEgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpcIiAvPlxuICAgICAgICA8L0ljb25CYXNlPlxuICAgICAgIiwgIjxzY3JpcHQ+XG4gICAgICAgIGltcG9ydCBJY29uQmFzZSBmcm9tICcuLi9jb21wb25lbnRzL0ljb25CYXNlLnN2ZWx0ZSc7XG4gICAgICAgIDwvc2NyaXB0PlxuICAgICAgICA8SWNvbkJhc2Ugdmlld0JveD1cIjAgMCA0NDggNTEyXCIgey4uLiQkcHJvcHN9PlxuICAgICAgICAgIDxwYXRoIGQ9XCJNNDE2IDIwOEgyNzJWNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTQ0SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTQ0djE0NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzA0aDE0NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiIC8+XG4gICAgICAgIDwvSWNvbkJhc2U+XG4gICAgICAiLCAiPHNjcmlwdD5cbiAgICAgICAgaW1wb3J0IEljb25CYXNlIGZyb20gJy4uL2NvbXBvbmVudHMvSWNvbkJhc2Uuc3ZlbHRlJztcbiAgICAgICAgPC9zY3JpcHQ+XG4gICAgICAgIDxJY29uQmFzZSB2aWV3Qm94PVwiMCAwIDQ0OCA1MTJcIiB7Li4uJCRwcm9wc30+XG4gICAgICAgICAgPHBhdGggZD1cIk0yNjggNDE2aDI0YTEyIDEyIDAgMCAwIDEyLTEyVjE4OGExMiAxMiAwIDAgMC0xMi0xMmgtMjRhMTIgMTIgMCAwIDAtMTIgMTJ2MjE2YTEyIDEyIDAgMCAwIDEyIDEyek00MzIgODBoLTgyLjQxbC0zNC01Ni43QTQ4IDQ4IDAgMCAwIDI3NC40MSAwSDE3My41OWE0OCA0OCAwIDAgMC00MS4xNiAyMy4zTDk4LjQxIDgwSDE2QTE2IDE2IDAgMCAwIDAgOTZ2MTZhMTYgMTYgMCAwIDAgMTYgMTZoMTZ2MzM2YTQ4IDQ4IDAgMCAwIDQ4IDQ4aDI4OGE0OCA0OCAwIDAgMCA0OC00OFYxMjhoMTZhMTYgMTYgMCAwIDAgMTYtMTZWOTZhMTYgMTYgMCAwIDAtMTYtMTZ6TTE3MS44NCA1MC45MUE2IDYgMCAwIDEgMTc3IDQ4aDk0YTYgNiAwIDAgMSA1LjE1IDIuOTFMMjkzLjYxIDgwSDE1NC4zOXpNMzY4IDQ2NEg4MFYxMjhoMjg4em0tMjEyLTQ4aDI0YTEyIDEyIDAgMCAwIDEyLTEyVjE4OGExMiAxMiAwIDAgMC0xMi0xMmgtMjRhMTIgMTIgMCAwIDAtMTIgMTJ2MjE2YTEyIDEyIDAgMCAwIDEyIDEyelwiIC8+XG4gICAgICAgIDwvSWNvbkJhc2U+XG4gICAgICAiLCAiaW1wb3J0IFVzZXJIaWVyYXJjaGllcyBmcm9tIFwiLi4vQ29tcG9uZW50cy9Vc2VySGllcmFyY2hpZXMuc3ZlbHRlXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IGRldGFpbHMgfSBmcm9tIFwiLi9CcmVhZGNydW1ic1NldHRpbmdUYWJcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRIaWVyYXJjaHlTZXR0aW5ncyhcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudFxyXG4pIHtcclxuICBjb25zdCBmaWVsZERldGFpbHMgPSBkZXRhaWxzKFwiSGllcmFyY2hpZXNcIiwgY29udGFpbmVyRWwpO1xyXG5cclxuICBmaWVsZERldGFpbHMuY3JlYXRlRWwoXCJwXCIsIHtcclxuICAgIHRleHQ6IFwiSGVyZSB5b3UgY2FuIHNldCB1cCBkaWZmZXJlbnQgaGllcmFyY2hpZXMgeW91IHVzZSBpbiB5b3VyIHZhdWx0LiBUbyBhZGQgYSBuZXcgaGllcmFyY2h5LCBjbGljayB0aGUgcGx1cyBidXR0b24uIFRoZW4sIGZpbGwgaW4gdGhlIGZpZWxkIG5hbWVzIG9mIHlvdXIgaGllcmFjaHkgaW50byB0aGUgNSBib3hlcyB0aGF0IGFwcGVhci5cIixcclxuICB9KTtcclxuICBmaWVsZERldGFpbHMuY3JlYXRlRWwoXCJwXCIsIHtcclxuICAgIHRleHQ6IFwiRm9yIGVhY2ggZGlyZWN0aW9uLCB5b3UgY2FuIGVudGVyIG11bHRpcGxlIGZpZWxkIG5hbWVzIGluIGEgY29tbWEtc2VwZXJhdGVkIGxpc3QuIEZvciBleGFtcGxlOiBgcGFyZW50LCBicm9hZGVyLCB1cHBlcmBcIixcclxuICB9KTtcclxuXHJcbiAgbmV3IFVzZXJIaWVyYXJjaGllcyh7XHJcbiAgICB0YXJnZXQ6IGZpZWxkRGV0YWlscyxcclxuICAgIHByb3BzOiB7IHBsdWdpbiB9LFxyXG4gIH0pO1xyXG59XHJcbiIsIG51bGwsICI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG4gIGltcG9ydCB7IHdhcm4gfSBmcm9tIFwibG9nbGV2ZWxcIjtcclxuICBpbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG4gIGltcG9ydCB7IHJlZnJlc2hJbmRleCB9IGZyb20gXCIuLi9yZWZyZXNoSW5kZXhcIjtcclxuXHJcbiAgZXhwb3J0IGxldCBwbHVnaW46IEJDUGx1Z2luO1xyXG4gIGV4cG9ydCBsZXQgc2V0dGluZ05hbWU6IHN0cmluZztcclxuICBleHBvcnQgbGV0IG9wdGlvbnM6IHN0cmluZ1tdO1xyXG5cclxuICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW47XHJcblxyXG4gIGxldCBzZWxlY3RlZCA9IHNldHRpbmdzW3NldHRpbmdOYW1lXTtcclxuXHJcbiAgJDogdG9Ob25lID0gc2VsZWN0ZWQubGVuZ3RoID09PSAwID8gZmFsc2UgOiB0cnVlO1xyXG5cclxuICBhc3luYyBmdW5jdGlvbiBzYXZlKCkge1xyXG4gICAgaWYgKHNldHRpbmdzW3NldHRpbmdOYW1lXSA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICByZXR1cm4gd2FybihzZXR0aW5nTmFtZSArIFwiIG5vdCBmb3VuZCBpbiBCQyBzZXR0aW5nc1wiKTtcclxuXHJcbiAgICBzZXR0aW5nc1tzZXR0aW5nTmFtZV0gPSBzZWxlY3RlZDtcclxuICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgIGF3YWl0IHJlZnJlc2hJbmRleChwbHVnaW4pO1xyXG4gIH1cclxuPC9zY3JpcHQ+XHJcblxyXG48ZGl2PlxyXG4gIDxidXR0b25cclxuICAgIG9uOmNsaWNrPXthc3luYyAoKSA9PiB7XHJcbiAgICAgIGlmICh0b05vbmUpIHNlbGVjdGVkID0gW107XHJcbiAgICAgIGVsc2Ugc2VsZWN0ZWQgPSBvcHRpb25zO1xyXG4gICAgICBhd2FpdCBzYXZlKCk7XHJcbiAgICB9fVxyXG4gID5cclxuICAgIFNlbGVjdCB7dG9Ob25lID8gXCJOb25lXCIgOiBcIkFsbFwifVxyXG4gIDwvYnV0dG9uPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgeyNlYWNoIG9wdGlvbnMgYXMgb3B0aW9ufVxyXG4gICAgPGRpdj5cclxuICAgICAgPGxhYmVsPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgIHZhbHVlPXtvcHRpb259XHJcbiAgICAgICAgICBiaW5kOmdyb3VwPXtzZWxlY3RlZH1cclxuICAgICAgICAgIG9uOmNoYW5nZT17YXN5bmMgKCkgPT4gYXdhaXQgc2F2ZSgpfVxyXG4gICAgICAgIC8+XHJcbiAgICAgICAge29wdGlvbn1cclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gIHsvZWFjaH1cclxuPC9kaXY+XHJcblxyXG48c3R5bGU+XHJcbiAgLmdyaWQge1xyXG4gICAgZGlzcGxheTogZ3JpZDtcclxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMTAwcHgsIDFmcikpO1xyXG4gIH1cclxuPC9zdHlsZT5cclxuIiwgImltcG9ydCBDaGVja2JveGVzIGZyb20gXCIuLi9Db21wb25lbnRzL0NoZWNrYm94ZXMuc3ZlbHRlXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IGdldEZpZWxkcyB9IGZyb20gXCIuLi9VdGlscy9IaWVyVXRpbHNcIjtcclxuaW1wb3J0IHsgc3ViRGV0YWlscyB9IGZyb20gXCIuL0JyZWFkY3J1bWJzU2V0dGluZ1RhYlwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZEp1bXBUb05leHRTZXR0aW5ncyhcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIHZpZXdEZXRhaWxzOiBIVE1MRGV0YWlsc0VsZW1lbnRcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IGp1bXBUb0RpckRldGFpbHMgPSBzdWJEZXRhaWxzKFwiSnVtcCB0byBOZXh0IERpcmVjdGlvblwiLCB2aWV3RGV0YWlscyk7XHJcblxyXG4gIGp1bXBUb0RpckRldGFpbHMuY3JlYXRlRGl2KHsgY2xzOiAnc2V0dGluZy1pdGVtLW5hbWUnLCB0ZXh0OiAnTGltaXQgd2hpY2ggZmllbGRzIHRvIGp1bXAgdG8nIH0pXHJcblxyXG4gIG5ldyBDaGVja2JveGVzKHtcclxuICAgIHRhcmdldDoganVtcFRvRGlyRGV0YWlscyxcclxuICAgIHByb3BzOiB7XHJcbiAgICAgIHBsdWdpbixcclxuICAgICAgc2V0dGluZ05hbWU6IFwibGltaXRKdW1wVG9GaXJzdEZpZWxkc1wiLFxyXG4gICAgICBvcHRpb25zOiBnZXRGaWVsZHMoc2V0dGluZ3MudXNlckhpZXJzKSxcclxuICAgIH0sXHJcbiAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB7IE5vdGljZSwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgeyBvcGVuVmlldyB9IGZyb20gXCJvYnNpZGlhbi1jb21tdW5pdHktbGliL2Rpc3QvdXRpbHNcIjtcclxuaW1wb3J0IHsgTUFUUklYX1ZJRVcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCBNYXRyaXhWaWV3IGZyb20gXCIuLi9WaWV3cy9NYXRyaXhWaWV3XCI7XHJcbmltcG9ydCB7IGZyYWdXaXRoSFRNTCwgc3ViRGV0YWlscyB9IGZyb20gXCIuL0JyZWFkY3J1bWJzU2V0dGluZ1RhYlwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZE1hdHJpeFZpZXdTZXR0aW5ncyhcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIHZpZXdEZXRhaWxzOiBIVE1MRGV0YWlsc0VsZW1lbnRcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IE1MVmlld0RldGFpbHMgPSBzdWJEZXRhaWxzKFwiTWF0cml4IFZpZXdcIiwgdmlld0RldGFpbHMpO1xyXG5cclxuICBuZXcgU2V0dGluZyhNTFZpZXdEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJTaG93IGFsbCBmaWVsZCBuYW1lcyBvciBqdXN0IHJlbGF0aW9uIHR5cGVzXCIpXHJcbiAgICAuc2V0RGVzYyhmcmFnV2l0aEhUTUwoXHJcbiAgICAgIFwiU2hvdyB0aGUgbGlzdCBvZiBtZXRhZGF0YSBmaWVsZHMgZm9yIGVhY2ggcmVsYXRpb24gdHlwZSAoZS5nLiA8Y29kZT5wYXJlbnQsIGJyb2FkZXIsIHVwcGVyPC9jb2RlPiksIG9yIGp1c3QgdGhlIG5hbWUgb2YgdGhlIHJlbGF0aW9uIHR5cGUsIGkuZS4gJzxjb2RlPlBhcmVudDwvY29kZT4nLCAnPGNvZGU+U2libGluZzwvY29kZT4nLCAnPGNvZGU+Q2hpbGQ8L2NvZGU+Jy48L2JyPlx1MjcwNSA9IHNob3cgdGhlIGZ1bGwgbGlzdC5cIilcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgdG9nZ2xlLnNldFZhbHVlKHNldHRpbmdzLnNob3dOYW1lT3JUeXBlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy5zaG93TmFtZU9yVHlwZSA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uZ2V0QWN0aXZlVFlQRVZpZXcoTUFUUklYX1ZJRVcpLmRyYXcoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKE1MVmlld0RldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlNob3cgUmVsYXRpb25zaGlwIFR5cGVcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgXCJTaG93IHdoZXRoZXIgYSBsaW5rIGlzIHJlYWwgb3IgaW1wbGllZC5cIlxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAgIHRvZ2dsZS5zZXRWYWx1ZShzZXR0aW5ncy5zaG93UmVsYXRpb25UeXBlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy5zaG93UmVsYXRpb25UeXBlID0gdmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5nZXRBY3RpdmVUWVBFVmlldyhNQVRSSVhfVklFVykuZHJhdygpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoTUxWaWV3RGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiRGlyZWN0aW9ucyBPcmRlclwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBgQ2hhbmdlIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgZGlyZWN0aW9ucyBhcHBlYXIgaW4gdGhlIE1hdHJpeCB2aWV3LjwvYnI+VGhlIGRlZmF1bHQgaXMgXCJ1cCwgc2FtZSwgZG93biwgbmV4dCwgcHJldlwiICg8Y29kZT4wMTIzNDwvY29kZT4pLlxyXG4gICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICA8bGk+MCBcdTIxOTIgdXA8L2xpPlxyXG4gICAgICAgICAgICA8bGk+MSBcdTIxOTIgc2FtZTwvbGk+XHJcbiAgICAgICAgICAgIDxsaT4yIFx1MjE5MiBkb3duPC9saT5cclxuICAgICAgICAgICAgPGxpPjMgXHUyMTkyIG5leHQ8L2xpPlxyXG4gICAgICAgICAgICA8bGk+NCBcdTIxOTIgcHJldjwvbGk+XHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPHN0cm9uZz5Ob3RlPC9zdHJvbmc+OiBZb3UgY2FuIHJlbW92ZSBudW1iZXJzIHRvIGhpZGUgdGhvc2UgZGlyZWN0aW9ucyBpbiB0aGUgTWF0cml4IFZpZXcuIEZvciBleGFtcGxlLCA8Y29kZT4wMjwvY29kZT4gd2lsbCBvbmx5IHNob3cgdXAgYW5kIGRvd24sIGluIHRoYXQgb3JkZXIuYFxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuYWRkVGV4dCgodGV4dCkgPT4ge1xyXG4gICAgICB0ZXh0LnNldFZhbHVlKHNldHRpbmdzLnNxdWFyZURpcmVjdGlvbnNPcmRlci5qb2luKFwiXCIpKTtcclxuICAgICAgdGV4dC5pbnB1dEVsLm9uYmx1ciA9IGFzeW5jICgpID0+IHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHRleHQuZ2V0VmFsdWUoKTtcclxuICAgICAgICBjb25zdCB2YWx1ZXMgPSB2YWx1ZS5zcGxpdChcIlwiKTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB2YWx1ZS5sZW5ndGggPD0gNSAmJlxyXG4gICAgICAgICAgdmFsdWVzLmV2ZXJ5KCh2YWx1ZSkgPT4gW1wiMFwiLCBcIjFcIiwgXCIyXCIsIFwiM1wiLCBcIjRcIl0uaW5jbHVkZXModmFsdWUpKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgc2V0dGluZ3Muc3F1YXJlRGlyZWN0aW9uc09yZGVyID0gdmFsdWVzLm1hcCgob3JkZXIpID0+XHJcbiAgICAgICAgICAgIE51bWJlci5wYXJzZUludChvcmRlcilcclxuICAgICAgICAgICkgYXMgKDAgfCAxIHwgMiB8IDMgfCA0KVtdO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLmdldEFjdGl2ZVRZUEVWaWV3KE1BVFJJWF9WSUVXKS5kcmF3KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG5ldyBOb3RpY2UoXHJcbiAgICAgICAgICAgICdUaGUgdmFsdWUgbXVzdCBiZSBhIDUgZGlnaXQgbnVtYmVyIHVzaW5nIG9ubHkgdGhlIGRpZ2l0cyBcIjBcIiwgXCIxXCIsIFwiMlwiLCBcIjNcIiwgXCI0XCInXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICBuZXcgU2V0dGluZyhNTFZpZXdEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJFbmFibGUgQWxwYWhlYnRpY2FsIFNvcnRpbmdcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBcIkJ5IGRlZmF1bHQsIGl0ZW1zIGluIHRoZSBNYXRyaXggdmlldyBhcmUgc29ydGVkIGJ5IHRoZSBvcmRlciB0aGV5IGFwcGVhciBpbiB5b3VyIG5vdGVzLiBUb2dnbGUgdGhpcyBvbiB0byBlbmFibGUgYWxwaGFiZXRpY2FsIHNvcnRpbmcuXCJcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgdG9nZ2xlLnNldFZhbHVlKHNldHRpbmdzLmVuYWJsZUFscGhhU29ydCkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MuZW5hYmxlQWxwaGFTb3J0ID0gdmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5nZXRBY3RpdmVUWVBFVmlldyhNQVRSSVhfVklFVykuZHJhdygpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgLy8gVE9ETyBoaWRlIHRoaXMgc2V0dGluZyBpZiAhZW5hYmxlQWxwaGFTb3J0XHJcbiAgbmV3IFNldHRpbmcoTUxWaWV3RGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiU29ydCBBbHBoYWJldGljYWxseSBBc2NlbmRpbmcvRGVzY2VuZGluZ1wiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIFwiU29ydCBzcXVhcmUgaXRlbXMgYWxwaGFiZXRpY2FsbHkgaW4gQXNjZW5kaW5nIChcdTI3MDUpIG9yIERlc2NlbmRpbmcgKFx1Mjc0Qykgb3JkZXIuXCJcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgdG9nZ2xlLnNldFZhbHVlKHNldHRpbmdzLmFscGhhU29ydEFzYykub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MuYWxwaGFTb3J0QXNjID0gdmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5nZXRBY3RpdmVUWVBFVmlldyhNQVRSSVhfVklFVykuZHJhdygpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoTUxWaWV3RGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiU29ydCBieSBub3RlIG5hbWUsIGJ1dCBzaG93IGFsaWFzXCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgXCJXaGVuIHRoaXMgaXMgdHVybmVkIG9mZiwgbm90ZXMgd2lsbCBmaXJzdCBiZSBzb3J0ZWQgYnkgdGhlaXIgYWxpYXMsIGFuZCB0aGVuIGJ5IHRoZWlyIG5hbWUgaWYgbm8gYWxpYXMgaXMgZm91bmQuIFR1cm4gdGhpcyBvbiB0byBzb3J0IGJ5IG5vdGUgbmFtZSBhbHdheXMsIGJ1dCBzdGlsbCBzaG93IHRoZSBhbGlhcyBpbiB0aGUgcmVzdWx0cy5cIlxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3Muc29ydEJ5TmFtZVNob3dBbGlhcykub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3Muc29ydEJ5TmFtZVNob3dBbGlhcyA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uZ2V0QWN0aXZlVFlQRVZpZXcoTUFUUklYX1ZJRVcpLmRyYXcoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKE1MVmlld0RldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlNob3cgSW1wbGllZCBSZWxhdGlvbnNcIilcclxuICAgIC5zZXREZXNjKFwiV2hldGhlciBvciBub3QgdG8gc2hvdyBpbXBsaWVkIHJlbGF0aW9ucyBhdCBhbGwuXCIpXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAgIHRvZ2dsZS5zZXRWYWx1ZShzZXR0aW5ncy5zaG93SW1wbGllZFJlbGF0aW9ucykub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3Muc2hvd0ltcGxpZWRSZWxhdGlvbnMgPSB2YWx1ZTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLmdldEFjdGl2ZVRZUEVWaWV3KE1BVFJJWF9WSUVXKS5kcmF3KCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAvLyBUT0RPIEkgZG9uJ3QgdGhpbmsgdGhpcyBzZXR0aW5nIHdvcmtzIGFueW1vcmUuIEkgcmVtb3ZlZCBpdCdzIGZ1bmN0aW9uYWxpdHkgd2hlbiBhZGRpbmcgbXVsdGlwbGUgaGllcmFyY2hpZXNcclxuICAvLyBuZXcgU2V0dGluZyhNTFZpZXdEZXRhaWxzKVxyXG4gIC8vICAgLnNldE5hbWUoXCJGaWx0ZXIgSW1wbGllZCBTaWJsaW5nc1wiKVxyXG4gIC8vICAgLnNldERlc2MoXHJcbiAgLy8gICAgIGZyYWdXaXRoSFRNTChcclxuICAvLyAgICAgICBgSW1wbGllZCBzaWJsaW5ncyBhcmU6XHJcbiAgLy8gICAgICAgICA8b2w+XHJcbiAgLy8gICAgICAgICAgIDxsaT5ub3RlcyB3aXRoIHRoZSBzYW1lIHBhcmVudCwgb3I8L2xpPlxyXG4gIC8vICAgICAgICAgICA8bGk+bm90ZXMgdGhhdCBhcmUgcmVhbCBzaWJsaW5ncy48L2xpPlxyXG4gIC8vICAgICAgICAgPC9vbD5cclxuICAvLyAgICAgICAgIFRoaXMgc2V0dGluZyBvbmx5IGFwcGxpZXMgdG8gdHlwZSAxIGltcGxpZWQgc2libGluZ3MuIElmIGVuYWJsZWQsIEJyZWFkY3J1bWJzIHdpbGwgZmlsdGVyIHR5cGUgMSBpbXBsaWVkIHNpYmxpbmdzIHNvIHRoYXQgdGhleSBub3Qgb25seSBzaGFyZSB0aGUgc2FtZSBwYXJlbnQsIGJ1dCB0aGUgcGFyZW50IHJlbGF0aW9uIGhhcyB0aGUgZXhhY3Qgc2FtZSB0eXBlLiBGb3IgZXhhbXBsZSwgdGhlIHR3byByZWFsIHJlbGF0aW9ucyA8Y29kZT5CIC1wYXJlbnQtPiBBPC9jb2RlPiwgYW5kIDxjb2RlPkMgLXBhcmVudC0+IEE8L2NvZGU+IGNyZWF0ZSBhbiBpbXBsaWVkIHNpYmxpbmcgYmV0d2VlbiBCIGFuZCBDICh0aGV5IGhhdmUgdGhlIHNhbWUgcGFyZW50LCBBKS4gVGhlIHR3byByZWFsIHJlbGF0aW9ucyA8Y29kZT5CIC1wYXJlbnQtPiBBPC9jb2RlPiwgYW5kIDxjb2RlPkMgLXVwLT4gQTwvY29kZT4gY3JlYXRlIGFuIGltcGxpZWQgc2libGluZyBiZXR3ZWVuIEIgYW5kIEMgKHRoZXkgYWxzbyBoYXZlIHRoZSBzYW1lIHBhcmVudCwgQSkuIEJ1dCBpZiB0aGlzIHNldHRpbmcgaXMgdHVybmVkIG9uLCB0aGUgc2Vjb25kIGltcGxpZWQgc2libGluZyB3b3VsZCBub3Qgc2hvdywgYmVjYXVzZSB0aGUgcGFyZW50IHR5cGVzIGFyZSBkaWZmZXJuZXQgKHBhcmVudCB2ZXJzdXMgdXApLmBcclxuICAvLyAgICAgKVxyXG4gIC8vICAgKVxyXG4gIC8vICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gIC8vICAgICB0b2dnbGVcclxuICAvLyAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3MuZmlsdGVySW1wbGllZFNpYmxpbmdzT2ZEaWZmZXJlbnRUeXBlcylcclxuICAvLyAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgLy8gICAgICAgICBzZXR0aW5ncy5maWx0ZXJJbXBsaWVkU2libGluZ3NPZkRpZmZlcmVudFR5cGVzID0gdmFsdWU7XHJcbiAgLy8gICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgLy8gICAgICAgICBhd2FpdCBwbHVnaW4uZ2V0QWN0aXZlVFlQRVZpZXcoTUFUUklYX1ZJRVcpLmRyYXcoKTtcclxuICAvLyAgICAgICB9KVxyXG4gIC8vICAgKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoTUxWaWV3RGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiT3BlbiBWaWV3IGluIFJpZ2h0IG9yIExlZnQgc2lkZVwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIFwiV2hlbiBsb2FkaW5nIHRoZSBtYXRyaXggdmlldywgc2hvdWxkIGl0IG9wZW4gb24gdGhlIGxlZnQgb3IgcmlnaHQgc2lkZSBsZWFmPyBcdTI3MDUgPSBSaWdodCwgXHUyNzRDID0gTGVmdC5cIlxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3MucmxMZWFmKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy5ybExlYWYgPSB2YWx1ZTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgYXBwLndvcmtzcGFjZS5kZXRhY2hMZWF2ZXNPZlR5cGUoTUFUUklYX1ZJRVcpO1xyXG4gICAgICAgIGF3YWl0IG9wZW5WaWV3KFxyXG4gICAgICAgICAgYXBwLFxyXG4gICAgICAgICAgTUFUUklYX1ZJRVcsXHJcbiAgICAgICAgICBNYXRyaXhWaWV3LFxyXG4gICAgICAgICAgdmFsdWUgPyBcInJpZ2h0XCIgOiBcImxlZnRcIlxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG59XHJcbiIsICJpbXBvcnQgeyBOb3RpY2UsIFNldHRpbmcgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHsgcmVmcmVzaEluZGV4IH0gZnJvbSBcIi4uL3JlZnJlc2hJbmRleFwiO1xyXG5pbXBvcnQgeyBzdHJUb1JlZ2V4IH0gZnJvbSBcIi4uL1V0aWxzL2dlbmVyYWxVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXRGaWVsZHMgfSBmcm9tIFwiLi4vVXRpbHMvSGllclV0aWxzXCI7XHJcbmltcG9ydCB7IGZyYWdXaXRoSFRNTCwgc3ViRGV0YWlscyB9IGZyb20gXCIuL0JyZWFkY3J1bWJzU2V0dGluZ1RhYlwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZE5vU3lzdGVtU2V0dGluZ3MoXHJcbiAgcGx1Z2luOiBCQ1BsdWdpbixcclxuICBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHM6IEhUTUxEZXRhaWxzRWxlbWVudFxyXG4pIHtcclxuICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW47XHJcbiAgY29uc3QgeyB1c2VySGllcnMgfSA9IHNldHRpbmdzO1xyXG4gIGNvbnN0IGZpZWxkcyA9IGdldEZpZWxkcyh1c2VySGllcnMpO1xyXG5cclxuICBjb25zdCBub1N5c3RlbURldGFpbHMgPSBzdWJEZXRhaWxzKFxyXG4gICAgXCJOYW1pbmcgU3lzdGVtXCIsXHJcbiAgICBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHNcclxuICApO1xyXG5cclxuICBuZXcgU2V0dGluZyhub1N5c3RlbURldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIk5hbWluZyBTeXN0ZW0gUmVnZXhcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgXCJJZiB5b3UgbmFtZSB5b3VyIG5vdGVzIHVzaW5nIHRoZSBKb2hubnkgRGVjaW1hbCBTeXN0ZW0gb3IgYSByZWxhdGVkIHN5c3RlbSwgZW50ZXIgYSByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hpbmcgdGhlIGxvbmdlc3QgcG9zc2libGUgbmFtaW5nIHN5c3RlbSB5b3UgdXNlLiBUaGUgcmVnZXggc2hvdWxkIG9ubHkgbWF0Y2ggdGhlIG5hbWluZyBzeXN0ZW0gcGFydCBvZiB0aGUgbmFtZSwgbm90IHRoZSBhY3R1YWwgbm90ZSB0aXRsZS48L2JyPiBGb3IgZXhhbXBsZSwgaWYgeW91IHVzZSB0aGUgSm9obm55IERlY2ltYWwgU3lzdGVtLCB5b3UgbWlnaHQgdXNlIDxjb2RlPi9eXFxcXGRcXFxcLlxcXFxkXFxcXC5cXFxcdy9nPC9jb2RlPiB0byBtYXRjaCB0aGUgbm90ZSBuYW1lZCA8Y29kZT4xLjIuYSBDYXJzPC9jb2RlPi48L2JyPklmIHlvdSBkb24ndCB3YW50IHRvIGNob29zZSBhIGRlZmF1bHQsIHNlbGVjdCB0aGUgYmxhbmsgb3B0aW9uIGF0IHRoZSBib3R0b20gb2YgdGhlIGxpc3QuXCJcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZFRleHQoKHRleHQpID0+IHtcclxuICAgICAgdGV4dC5zZXRWYWx1ZShzZXR0aW5ncy5uYW1pbmdTeXN0ZW1SZWdleCk7XHJcbiAgICAgIHRleHQuaW5wdXRFbC5vbmJsdXIgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0ZXh0LmdldFZhbHVlKCk7XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSBcIlwiIHx8IHN0clRvUmVnZXgodmFsdWUpKSB7XHJcbiAgICAgICAgICBzZXR0aW5ncy5uYW1pbmdTeXN0ZW1SZWdleCA9IHZhbHVlO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgYXdhaXQgcmVmcmVzaEluZGV4KHBsdWdpbik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG5ldyBOb3RpY2UoXCJJbnZhbGlkIFJlZ2V4XCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIG5ldyBTZXR0aW5nKG5vU3lzdGVtRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiTmFtaW5nIFN5c3RlbSBEZWxpbWl0ZXJcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgXCJXaGF0IGNoYXJhY3RlciBkbyB5b3UgdXNlIHRvIHNwbGl0IHVwIHlvdXIgbmFtaW5nIGNvbnZlbnRpb24/IEZvciBleGFtcGxlLCBpZiB5b3UgdXNlIDxjb2RlPjEuMi5hLmI8L2NvZGU+LCB0aGVuIHlvdXIgZGVsaW1pdGVyIGlzIGEgcGVyaW9kICg8Y29kZT4uPC9jb2RlPikuXCJcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZFRleHQoKHRleHQpID0+IHtcclxuICAgICAgdGV4dC5zZXRWYWx1ZShzZXR0aW5ncy5uYW1pbmdTeXN0ZW1TcGxpdCk7XHJcbiAgICAgIHRleHQuaW5wdXRFbC5vbmJsdXIgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0ZXh0LmdldFZhbHVlKCk7XHJcbiAgICAgICAgc2V0dGluZ3MubmFtaW5nU3lzdGVtU3BsaXQgPSB2YWx1ZTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgYXdhaXQgcmVmcmVzaEluZGV4KHBsdWdpbik7XHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgbmV3IFNldHRpbmcobm9TeXN0ZW1EZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJOYW1pbmcgU3lzdGVtIEZpZWxkXCIpXHJcbiAgICAuc2V0RGVzYyhcIldoaWNoIGZpZWxkIHNob3VsZCBCcmVhZGNydW1icyB1c2UgZm9yIE5hbWluZyBTeXN0ZW0gbm90ZXM/XCIpXHJcbiAgICAuYWRkRHJvcGRvd24oKGRkKSA9PiB7XHJcbiAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGRkLmFkZE9wdGlvbihmaWVsZCwgZmllbGQpO1xyXG4gICAgICB9KTtcclxuICAgICAgZGQuc2V0VmFsdWUoc2V0dGluZ3MubmFtaW5nU3lzdGVtRmllbGQpO1xyXG4gICAgICBkZC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy5uYW1pbmdTeXN0ZW1GaWVsZCA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICBhd2FpdCByZWZyZXNoSW5kZXgocGx1Z2luKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICBuZXcgU2V0dGluZyhub1N5c3RlbURldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIk5hbWluZyBTeXN0ZW0gRW5kcyB3aXRoIERlbGltaXRlclwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBcIkRvZXMgeW91ciBuYW1pbmcgY29udmVudGlvbiBlbmQgd2l0aCB0aGUgZGVsaW1pdGVyPyBGb3IgZXhhbXBsZSwgPGNvZGU+MS4yLiBOb3RlPC9jb2RlPiBkb2VzIGVuZCB3aXRoIHRoZSBkZWxpbWl0ZXIsIGJ1dCA8Y29kZT4xLjIgTm90ZTwvY29kZT4gZG9lcyBub3QuPC9icj5Gb3IgbWF0Y2hpbmcgcHVycG9zZXMsIGl0IGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBuYW1lIHlvdXIgbm90ZXMgd2l0aCB0aGUgZGVsaW1pdGVyIG9uIHRoZSBlbmQuIE9ubHkgdHVybiB0aGlzIHNldHRpbmcgb24gaWYgeW91IGRvIG5hbWUgeW91ciBub3RlcyB0aGlzIHdheSwgYnV0IGtub3cgdGhhdCB0aGUgcmVzdWx0cyBtYXkgbm90IGJlIGFzIGFjY3VyYXRlIGlmIHlvdSBkb24ndC5cIlxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2cpID0+XHJcbiAgICAgIHRvZ1xyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5uYW1pbmdTeXN0ZW1FbmRzV2l0aERlbGltaXRlcilcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICBzZXR0aW5ncy5uYW1pbmdTeXN0ZW1FbmRzV2l0aERlbGltaXRlciA9IHZhbHVlO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgYXdhaXQgcmVmcmVzaEluZGV4KHBsdWdpbik7XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcbn1cclxuIiwgImltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50LCBTZXR0aW5nIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IHJlZnJlc2hJbmRleCB9IGZyb20gXCIuLi9yZWZyZXNoSW5kZXhcIjtcclxuaW1wb3J0IHsgZ2V0RmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBmcmFnV2l0aEhUTUwsIHN1YkRldGFpbHMgfSBmcm9tIFwiLi9CcmVhZGNydW1ic1NldHRpbmdUYWJcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRSZWdleE5vdGVTZXR0aW5ncyhcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIGFsdGVybmF0aXZlSGllcmFyY2h5RGV0YWlsczogSFRNTERldGFpbHNFbGVtZW50XHJcbikge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCByZWdleE5vdGVEZXRhaWxzID0gc3ViRGV0YWlscyhcclxuICAgIFwiUmVnZXggTm90ZXNcIixcclxuICAgIGFsdGVybmF0aXZlSGllcmFyY2h5RGV0YWlsc1xyXG4gICk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKHJlZ2V4Tm90ZURldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkRlZmF1bHQgUmVnZXggTm90ZSBGaWVsZFwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBcIkJ5IGRlZmF1bHQsIHJlZ2V4IG5vdGVzIHVzZSB0aGUgZmlyc3QgZmllbGQgaW4geW91ciBoaWVyYXJjaGllcyAodXN1YWxseSBhbiA8Y29kZT5cdTIxOTE8L2NvZGU+IGZpZWxkKS4gQ2hvb3NlIGEgZGlmZmVyZW50IG9uZSB0byB1c2UgYnkgZGVmYXVsdCwgd2l0aG91dCBoYXZpbmcgdG8gc3BlY2lmeSA8Y29kZT5CQy1yZWdleC1ub3RlLWZpZWxkOiB7ZmllbGR9PC9jb2RlPi48L2JyPklmIHlvdSBkb24ndCB3YW50IHRvIGNob29zZSBhIGRlZmF1bHQsIHNlbGVjdCB0aGUgYmxhbmsgb3B0aW9uIGF0IHRoZSBib3R0b20gb2YgdGhlIGxpc3QuXCJcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZERyb3Bkb3duKChkZDogRHJvcGRvd25Db21wb25lbnQpID0+IHtcclxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHt9O1xyXG4gICAgICBnZXRGaWVsZHMoc2V0dGluZ3MudXNlckhpZXJzKS5mb3JFYWNoKFxyXG4gICAgICAgIChmaWVsZCkgPT4gKG9wdGlvbnNbZmllbGRdID0gZmllbGQpXHJcbiAgICAgICk7XHJcbiAgICAgIGRkLmFkZE9wdGlvbnMoT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7IFwiXCI6IFwiXCIgfSkpXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLnJlZ2V4Tm90ZUZpZWxkKVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAoZmllbGQpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLnJlZ2V4Tm90ZUZpZWxkID0gZmllbGQ7XHJcbiAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICBhd2FpdCByZWZyZXNoSW5kZXgocGx1Z2luKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG59XHJcbiIsICJpbXBvcnQgeyBkZXRhaWxzIH0gZnJvbSBcIi4vQnJlYWRjcnVtYnNTZXR0aW5nVGFiXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IE1hcmtkb3duUmVuZGVyZXIsIFNldHRpbmcgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHsgcmVmcmVzaEluZGV4IH0gZnJvbSBcIi4uL3JlZnJlc2hJbmRleFwiO1xyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRSZWxhdGlvblNldHRpbmdzKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgY29udGFpbmVyRWw6IEhUTUxFbGVtZW50XHJcbikge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCByZWxhdGlvbkRldGFpbHMgPSBkZXRhaWxzKFwiUmVsYXRpb25zaGlwc1wiLCBjb250YWluZXJFbCk7XHJcblxyXG4gIGZ1bmN0aW9uIG1lcm1haWREaWFncmFtKGRpYWdyYW1TdHI6IHN0cmluZykge1xyXG4gICAgTWFya2Rvd25SZW5kZXJlci5yZW5kZXJNYXJrZG93bihcclxuICAgICAgZGlhZ3JhbVN0cixcclxuICAgICAgcmVsYXRpb25EZXRhaWxzLmNyZWF0ZURpdigpLFxyXG4gICAgICBcIlwiLFxyXG4gICAgICBudWxsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlbGF0aW9uRGV0YWlscy5jcmVhdGVFbChcInBcIiwge1xyXG4gICAgdGV4dDogXCJIZXJlIHlvdSBjYW4gdG9nZ2xlIG9uL29mZiBkaWZmZXJlbnQgdHlwZXMgb2YgaW1wbGllZCByZWxhdGlvbnNoaXBzLiBBbGwgb2YgeW91ciBleHBsaWNpdCAocmVhbCkgcmVsYXRpb25zaGlwcyB3aWxsIHN0aWxsIHNob3csIGJ1dCB5b3UgY2FuIGNob29zZSB3aGljaCBpbXBsaWVkIG9uZXMgZ2V0IGZpbGxlZCBpbi5cXG5BbGwgaW1wbGllZCByZWxhdGlvbnNoaXBzIGFyZSBnaXZlbiBhIENTUyBjbGFzcyBvZiB0aGUgdHlwZSBvZiBpbXBsaWVkIHJlbGF0aW9uLCBzbyB5b3UgY2FuIHN0eWxlIHRoZW0gZGlmZmVyZW50bHkuIEZvciBleGFtcGxlIGAuQkMtQXVudGAuXCIsXHJcbiAgfSk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKHJlbGF0aW9uRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiU2FtZSBQYXJlbnQgaXMgU2libGluZ3NcIilcclxuICAgIC5zZXREZXNjKFwiSWYgb25lIG5vdGUgc2hhcmVzIGEgcGFyZW50IHdpdGggYW5vdGhlciwgdHJlYXQgdGhlbSBhcyBzaWJsaW5nc1wiKVxyXG4gICAgLmFkZFRvZ2dsZSgodGcpID0+XHJcbiAgICAgIHRnXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLmltcGxpZWRSZWxhdGlvbnMuc2FtZVBhcmVudElzU2libGluZylcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbCkgPT4ge1xyXG4gICAgICAgICAgc2V0dGluZ3MuaW1wbGllZFJlbGF0aW9ucy5zYW1lUGFyZW50SXNTaWJsaW5nID0gdmFsO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgYXdhaXQgcmVmcmVzaEluZGV4KHBsdWdpbik7XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gIG1lcm1haWREaWFncmFtKFwiYGBgbWVybWFpZFxcbmZsb3djaGFydCBMUlxcbk1lIC0tPnx1cHwgRGFkXFxuU2lzdGVyIC0tPnx1cHwgRGFkXFxuTWUgPC0uLT58c2FtZXwgU2lzdGVyXFxuYGBgXCIpXHJcblxyXG4gIG5ldyBTZXR0aW5nKHJlbGF0aW9uRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiU2libGluZ3MnIFNpYmxpbmdzXCIpXHJcbiAgICAuc2V0RGVzYyhcIlRyZWF0IHlvdXIgc2libGluZ3MnIHNpYmxpbmdzIGFzIHlvdXIgc2libGluZ3NcIilcclxuICAgIC5hZGRUb2dnbGUoKHRnKSA9PlxyXG4gICAgICB0Z1xyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5pbXBsaWVkUmVsYXRpb25zLnNpYmxpbmdzU2libGluZ0lzU2libGluZylcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbCkgPT4ge1xyXG4gICAgICAgICAgc2V0dGluZ3MuaW1wbGllZFJlbGF0aW9ucy5zaWJsaW5nc1NpYmxpbmdJc1NpYmxpbmcgPSB2YWw7XHJcbiAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICBhd2FpdCByZWZyZXNoSW5kZXgocGx1Z2luKTtcclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgbWVybWFpZERpYWdyYW0oXCJgYGBtZXJtYWlkXFxuZmxvd2NoYXJ0IExSXFxuTWUgLS0+fHNhbWV8IFNpc3Rlclxcbk1lIC0tPnxzYW1lfCBCcm90aGVyXFxuU2lzdGVyIDwtLi0+fHNhbWV8IEJyb3RoZXJcXG5gYGBcIilcclxuXHJcbiAgbmV3IFNldHRpbmcocmVsYXRpb25EZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJTaWJsaW5ncycgUGFyZW50IGlzIFBhcmVudFwiKVxyXG4gICAgLnNldERlc2MoXCJZb3VyIHNpYmxpbmdzJyBwYXJlbnRzIGFyZSB5b3VyIHBhcmVudHNcIilcclxuICAgIC5hZGRUb2dnbGUoKHRnKSA9PlxyXG4gICAgICB0Z1xyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5pbXBsaWVkUmVsYXRpb25zLnNpYmxpbmdzUGFyZW50SXNQYXJlbnQpXHJcbiAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWwpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLmltcGxpZWRSZWxhdGlvbnMuc2libGluZ3NQYXJlbnRJc1BhcmVudCA9IHZhbDtcclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgIGF3YWl0IHJlZnJlc2hJbmRleChwbHVnaW4pO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICBtZXJtYWlkRGlhZ3JhbShcImBgYG1lcm1haWRcXG5mbG93Y2hhcnQgTFJcXG5TaXN0ZXIgLS0+fHVwfCBEYWRcXG5TaXN0ZXIgPC0tPnxzYW1lfCBNZVxcbk1lIC0uLT58dXB8IERhZFxcbmBgYFwiKVxyXG5cclxuICBuZXcgU2V0dGluZyhyZWxhdGlvbkRldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkF1bnQvVW5jbGVcIilcclxuICAgIC5zZXREZXNjKFwiVHJlYXQgeW91ciBwYXJlbnQncyBzaWJsaW5ncyBhcyB5b3VyIHBhcmVudHMgKGF1bnRzL3VuY2xlcylcIilcclxuICAgIC5hZGRUb2dnbGUoKHRnKSA9PlxyXG4gICAgICB0Z1xyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5pbXBsaWVkUmVsYXRpb25zLnBhcmVudHNTaWJsaW5nc0lzUGFyZW50cylcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbCkgPT4ge1xyXG4gICAgICAgICAgc2V0dGluZ3MuaW1wbGllZFJlbGF0aW9ucy5wYXJlbnRzU2libGluZ3NJc1BhcmVudHMgPSB2YWw7XHJcbiAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICBhd2FpdCByZWZyZXNoSW5kZXgocGx1Z2luKTtcclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgbWVybWFpZERpYWdyYW0oXCJgYGBtZXJtYWlkXFxuZmxvd2NoYXJ0IExSXFxuTWUgLS0+fHVwfCBEYWRcXG5EYWQgLS0+fHNhbWV8IFVuY2xlXFxuTWUgLS4tPnx1cHwgVW5jbGVcXG5gYGBcIilcclxuXHJcbiAgbmV3IFNldHRpbmcocmVsYXRpb25EZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJDb3VzaW5zXCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgXCJUcmVhdCB0aGUgY291c2lucyBvZiBhIG5vdGUgYXMgc2libGluZ3MgKHBhcmVudHMnIHNpYmxpbmdzJyBjaGlsZHJlbiBhcmUgY291c2lucylcIlxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodGcpID0+XHJcbiAgICAgIHRnXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLmltcGxpZWRSZWxhdGlvbnMuY291c2luc0lzU2libGluZylcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbCkgPT4ge1xyXG4gICAgICAgICAgc2V0dGluZ3MuaW1wbGllZFJlbGF0aW9ucy5jb3VzaW5zSXNTaWJsaW5nID0gdmFsO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgYXdhaXQgcmVmcmVzaEluZGV4KHBsdWdpbik7XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gIG1lcm1haWREaWFncmFtKFwiYGBgbWVybWFpZFxcbmZsb3djaGFydCBMUlxcbk1lIC0tPnx1cHwgRGFkXFxuRGFkIC0tPnxzYW1lfCBVbmNsZVxcblVuY2xlIC0tPnxkb3dufCBDb3VzaW5cXG5NZSA8LS4tPnxzYW1lfCBDb3VzaW5cXG5gYGBcIilcclxuXHJcbiAgbmV3IFNldHRpbmcocmVsYXRpb25EZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJNYWtlIEN1cnJlbnQgTm90ZSBhbiBJbXBsaWVkIFNpYmxpbmdcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBcIlRlY2hpbmNhbGx5LCB0aGUgY3VycmVudCBub3RlIGlzIGFsd2F5cyBpdCdzIG93biBpbXBsaWVkIHNpYmxpbmcuIEJ5IGRlZmF1bHQsIGl0IGlzIG5vdCBzaG93IGFzIHN1Y2guIFRvZ2dsZSB0aGlzIG9uIHRvIG1ha2UgaXQgc2hvdy5cIlxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICB0b2dnbGVcclxuICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3MudHJlYXRDdXJyTm9kZUFzSW1wbGllZFNpYmxpbmcpXHJcbiAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgc2V0dGluZ3MudHJlYXRDdXJyTm9kZUFzSW1wbGllZFNpYmxpbmcgPSB2YWx1ZTtcclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgIGF3YWl0IHJlZnJlc2hJbmRleChwbHVnaW4pO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG59XHJcbiIsICJpbXBvcnQgeyBEcm9wZG93bkNvbXBvbmVudCwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG5pbXBvcnQgeyByZWZyZXNoSW5kZXggfSBmcm9tIFwiLi4vcmVmcmVzaEluZGV4XCI7XHJcbmltcG9ydCB7IGdldEZpZWxkcyB9IGZyb20gXCIuLi9VdGlscy9IaWVyVXRpbHNcIjtcclxuaW1wb3J0IHsgZnJhZ1dpdGhIVE1MLCBzdWJEZXRhaWxzIH0gZnJvbSBcIi4vQnJlYWRjcnVtYnNTZXR0aW5nVGFiXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkVGFnTm90ZVNldHRpbmdzKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzOiBIVE1MRGV0YWlsc0VsZW1lbnRcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHRhZ05vdGVEZXRhaWxzID0gc3ViRGV0YWlscyhcIlRhZyBOb3Rlc1wiLCBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHMpO1xyXG5cclxuICBuZXcgU2V0dGluZyh0YWdOb3RlRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiRGVmYXVsdCBUYWcgTm90ZSBGaWVsZFwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBcIkJ5IGRlZmF1bHQsIHRhZyBub3RlcyB1c2UgdGhlIGZpcnN0IGZpZWxkIGluIHlvdXIgaGllcmFyY2hpZXMgKHVzdWFsbHkgYW4gPGNvZGU+XHUyMTkxPC9jb2RlPiBmaWVsZCkuIENob29zZSBhIGRpZmZlcmVudCBvbmUgdG8gdXNlIGJ5IGRlZmF1bHQsIHdpdGhvdXQgaGF2aW5nIHRvIHNwZWNpZnkgPGNvZGU+QkMtdGFnLW5vdGUtZmllbGQ6IHtmaWVsZH08L2NvZGU+LjwvYnI+SWYgeW91IGRvbid0IHdhbnQgdG8gY2hvb3NlIGEgZGVmYXVsdCwgc2VsZWN0IHRoZSBibGFuayBvcHRpb24gYXQgdGhlIGJvdHRvbSBvZiB0aGUgbGlzdC5cIlxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuYWRkRHJvcGRvd24oKGRkOiBEcm9wZG93bkNvbXBvbmVudCkgPT4ge1xyXG5cclxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHt9O1xyXG4gICAgICBnZXRGaWVsZHMoc2V0dGluZ3MudXNlckhpZXJzKS5mb3JFYWNoKFxyXG4gICAgICAgIChmaWVsZCkgPT4gKG9wdGlvbnNbZmllbGRdID0gZmllbGQpXHJcbiAgICAgICk7XHJcbiAgICAgIGRkLmFkZE9wdGlvbnMoT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7IFwiXCI6IFwiXCIgfSkpXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLnRhZ05vdGVGaWVsZClcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgICBzZXR0aW5ncy50YWdOb3RlRmllbGQgPSBmaWVsZDtcclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgIGF3YWl0IHJlZnJlc2hJbmRleChwbHVnaW4pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB7IE5vdGljZSwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQge1xyXG4gIEFSUk9XX0RJUkVDVElPTlMsXHJcbiAgREVGQVVMVF9TRVRUSU5HUyxcclxuICBESVJFQ1RJT05TLFxyXG4gIElMTEVHQUxfRklMRU5BTUVfQ0hBUlMsXHJcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG5pbXBvcnQgeyBmcmFnV2l0aEhUTUwsIHN1YkRldGFpbHMgfSBmcm9tIFwiLi9CcmVhZGNydW1ic1NldHRpbmdUYWJcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRUaHJlYWRpbmdTZXR0aW5ncyhcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIGNtZHNEZXRhaWxzOiBIVE1MRGV0YWlsc0VsZW1lbnRcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHRocmVhZGluZ0RldGFpbHMgPSBzdWJEZXRhaWxzKFwiVGhyZWFkaW5nXCIsIGNtZHNEZXRhaWxzKTtcclxuXHJcbiAgdGhyZWFkaW5nRGV0YWlscy5jcmVhdGVEaXYoe1xyXG4gICAgdGV4dDogXCJTZXR0aW5ncyBmb3IgdGhlIGNvbW1hbmRzIGBDcmVhdGUgbmV3IDxmaWVsZD4gZnJvbSBjdXJyZW50IG5vdGVgXCIsXHJcbiAgfSk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKHRocmVhZGluZ0RldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIk9wZW4gbmV3IHRocmVhZHMgaW4gbmV3IHBhbmUgb3IgY3VycmVudCBwYW5lXCIpXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2cpID0+IHtcclxuICAgICAgdG9nLnNldFZhbHVlKHNldHRpbmdzLnRocmVhZEludG9OZXdQYW5lKTtcclxuICAgICAgdG9nLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHNldHRpbmdzLnRocmVhZEludG9OZXdQYW5lID0gdmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIG5ldyBTZXR0aW5nKHRocmVhZGluZ0RldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlRocmVhZCB1bmRlciBDdXJzb3JcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgXCJJZiB0aGUgc2V0dGluZyA8Y29kZT5Xcml0ZSBCcmVhZGNydW1icyBJbmxpbmU8L2NvZGU+IGlzIGVuYWJsZWQsIHdoZXJlIHNob3VsZCB0aGUgbmV3IEJyZWFkY3J1bWIgYmUgYWRkZWQgdG8gdGhlIGN1cnJlbnQgbm90ZT8gXHUyNzA1ID0gVW5kZXIgdGhlIGN1cnNvciwgXHUyNzRDID0gQXQgdGhlIHRvcCBvZiB0aGUgbm90ZSAodW5kZXIgdGhlIHlhbWwsIGlmIGFwcGxpY2FibGUpXCJcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nKSA9PiB7XHJcbiAgICAgIHRvZy5zZXRWYWx1ZShzZXR0aW5ncy50aHJlYWRVbmRlckN1cnNvcik7XHJcbiAgICAgIHRvZy5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy50aHJlYWRVbmRlckN1cnNvciA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgbmV3IFNldHRpbmcodGhyZWFkaW5nRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiTmV3IE5vdGUgTmFtZSBUZW1wbGF0ZVwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBgV2hlbiB0aHJlYWRpbmcgaW50byBhIG5ldyBub3RlLCBjaG9vc2UgdGhlIHRlbXBsYXRlIGZvciB0aGUgbmV3IG5vdGUgbmFtZS48L2JyPlxyXG4gICAgICAgIE9wdGlvbnMgaW5jbHVkZTo8L2JyPlxyXG4gICAgICAgIDx1bD5cclxuICAgICAgICAgIDxsaT48Y29kZT57e2ZpZWxkfX08L2NvZGU+OiB0aGUgZmllbGQgYmVpbmcgdGhyZWFkIGludG88L2xpPlxyXG4gICAgICAgICAgPGxpPjxjb2RlPnt7ZGlyfX08L2NvZGU+OiB0aGUgZGlyZWN0aW9uIGJlaW5nIHRocmVhZCBpbnRvPC9saT5cclxuICAgICAgICAgIDxsaT48Y29kZT57e2N1cnJlbnR9fTwvY29kZT46IHRoZSBjdXJyZW50IG5vdGUgbmFtZTwvbGk+XHJcbiAgICAgICAgICA8bGk+PGNvZGU+e3tkYXRlfX08L2NvZGU+OiB0aGUgY3VycmVudCBkYXRlIChTZXQgdGhlIGZvcm1hdCBpbiB0aGUgc2V0dGluZyBiZWxvdyk8L2xpPlxyXG4gICAgICAgIDwvdWw+YFxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuYWRkVGV4dCgodGV4dCkgPT4ge1xyXG4gICAgICB0ZXh0LnNldFZhbHVlKHNldHRpbmdzLnRocmVhZGluZ1RlbXBsYXRlKTtcclxuICAgICAgdGV4dC5pbnB1dEVsLm9uYmx1ciA9IGFzeW5jICgpID0+IHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHRleHQuZ2V0VmFsdWUoKTtcclxuICAgICAgICBpZiAoSUxMRUdBTF9GSUxFTkFNRV9DSEFSUy5zb21lKChjaGFyKSA9PiB2YWx1ZS5pbmNsdWRlcyhjaGFyKSkpIHtcclxuICAgICAgICAgIG5ldyBOb3RpY2UoXHJcbiAgICAgICAgICAgIGBGaWxlIG5hbWUgY2Fubm90IGNvbnRhaW4gYW55IG9mIHRoZXNlIGNoYXJhY3RlcnM6ICR7SUxMRUdBTF9GSUxFTkFNRV9DSEFSUy5qb2luKFxyXG4gICAgICAgICAgICAgIFwiIFwiXHJcbiAgICAgICAgICAgICl9YFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRleHQuc2V0VmFsdWUoc2V0dGluZ3MudGhyZWFkaW5nVGVtcGxhdGUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzZXR0aW5ncy50aHJlYWRpbmdUZW1wbGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIG5ldyBTZXR0aW5nKHRocmVhZGluZ0RldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkRhdGUgRm9ybWF0XCIpXHJcbiAgICAuc2V0RGVzYyhcIlRoZSBkYXRlIGZvcm1hdCB1c2VkIGluIHRoZSBUaHJlYWRpbmcgVGVtcGxhdGUgKHNldHRpbmcgYWJvdmUpXCIpXHJcbiAgICAuYWRkTW9tZW50Rm9ybWF0KChmb3JtYXQpID0+IHtcclxuICAgICAgZm9ybWF0XHJcbiAgICAgICAgLnNldERlZmF1bHRGb3JtYXQoREVGQVVMVF9TRVRUSU5HUy5kYXRlRm9ybWF0KVxyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5kYXRlRm9ybWF0KVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLmRhdGVGb3JtYXQgPSB2YWx1ZTtcclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICBjb25zdCB0aHJlYWREaXJUZW1wbGF0ZXNTZXR0aW5nID0gbmV3IFNldHRpbmcodGhyZWFkaW5nRGV0YWlscylcclxuICAgIC5zZXRDbGFzcyhcInRocmVhZC1kaXItdGVtcGxhdGVzXCIpXHJcbiAgICAuc2V0TmFtZShcIlRlbXBsYXRlciBUZW1wbGF0ZSBwZXIgRGlyZWN0aW9uXCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgZnJhZ1dpdGhIVE1MKFxyXG4gICAgICAgIGBGb3IgZWFjaCBkaXJlY3Rpb24gdG8gYmUgdGhyZWFkIGludG8sIGNob29zZSBhIFRlbXBsYXRlciB0ZW1wbGF0ZSB0byBpbnNlcnQgaW50byB0aGUgbmV3IG5vdGUuPC9icj5cclxuICAgICAgICAgIEdpdmUgdGhlIGJhc2VuYW1lLCBvciB0aGUgZnVsbCBmaWxlIHBhdGggKGUuZy4gPGNvZGU+VGVtcGxhdGVzL1BhcmVudCBUZW1wbGF0ZTwvY29kZT4pLmBcclxuICAgICAgKVxyXG4gICAgKTtcclxuXHJcbiAgRElSRUNUSU9OUy5mb3JFYWNoKChkaXIpID0+XHJcbiAgICB0aHJlYWREaXJUZW1wbGF0ZXNTZXR0aW5nLmFkZFRleHQoKHRleHQpID0+IHtcclxuICAgICAgdGV4dFxyXG4gICAgICAgIC5zZXRQbGFjZWhvbGRlcihBUlJPV19ESVJFQ1RJT05TW2Rpcl0pXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLnRocmVhZGluZ0RpclRlbXBsYXRlc1tkaXJdKTtcclxuICAgICAgdGV4dC5pbnB1dEVsLm9uYmx1ciA9IGFzeW5jICgpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy50aHJlYWRpbmdEaXJUZW1wbGF0ZXNbZGlyXSA9IHRleHQuZ2V0VmFsdWUoKTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgIH07XHJcbiAgICB9KVxyXG4gICk7XHJcblxyXG59XHJcbiIsICJpbXBvcnQgdHlwZSB7IEp1Z2dsTGF5b3V0cyB9IGZyb20gXCJqdWdnbC1hcGlcIjtcclxuaW1wb3J0IHsgRHJvcGRvd25Db21wb25lbnQsIE5vdGljZSwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgeyBpc0luVmF1bHQgfSBmcm9tIFwib2JzaWRpYW4tY29tbXVuaXR5LWxpYi9kaXN0L3V0aWxzXCI7XHJcbmltcG9ydCB7IFRSQUlMX0xFTkdUSFMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCBDaGVja2JveGVzIGZyb20gXCIuLi9Db21wb25lbnRzL0NoZWNrYm94ZXMuc3ZlbHRlXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IHNwbGl0QW5kVHJpbSB9IGZyb20gXCIuLi9VdGlscy9nZW5lcmFsVXRpbHNcIjtcclxuaW1wb3J0IHsgZ2V0RmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBkcmF3VHJhaWwgfSBmcm9tIFwiLi4vVmlld3MvVHJhaWxWaWV3XCI7XHJcbmltcG9ydCB7IGZyYWdXaXRoSFRNTCwgc3ViRGV0YWlscyB9IGZyb20gXCIuL0JyZWFkY3J1bWJzU2V0dGluZ1RhYlwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZFRyYWlsVmlld1NldHRpbmdzKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgdmlld0RldGFpbHM6IEhUTUxEZXRhaWxzRWxlbWVudFxyXG4pIHtcclxuICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW47XHJcbiAgY29uc3QgdHJhaWxEZXRhaWxzID0gc3ViRGV0YWlscyhcIlRyYWlsL0dyaWQvSnVnZ2xcIiwgdmlld0RldGFpbHMpO1xyXG5cclxuICBuZXcgU2V0dGluZyh0cmFpbERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlNob3cgQnJlYWRjcnVtYnMgaW4gRWRpdC9MaXZlLVByZXZpZXcgTW9kZVwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIFwiSXQgYWx3YXlzIHNob3dzIGluIHByZXZpZXcgbW9kZSwgYnV0IHNob3VsZCBpdCBhbHNvIHNob3cgaW4gdGhlIG90aGVyIHR3bz9cIlxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3Muc2hvd0JDc0luRWRpdExQTW9kZSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3Muc2hvd0JDc0luRWRpdExQTW9kZSA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICBhd2FpdCBkcmF3VHJhaWwocGx1Z2luKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gIHRyYWlsRGV0YWlscy5jcmVhdGVFbCgnaHInKVxyXG4gIHRyYWlsRGV0YWlscy5jcmVhdGVEaXYoe1xyXG4gICAgY2xzOiBcInNldHRpbmctaXRlbS1uYW1lXCIsXHJcbiAgICB0ZXh0OiBcIkxpbWl0IFRyYWlsIFZpZXcgdG8gb25seSBzaG93IGNlcnRhaW4gZmllbGRzXCIsXHJcbiAgfSk7XHJcblxyXG4gIG5ldyBDaGVja2JveGVzKHtcclxuICAgIHRhcmdldDogdHJhaWxEZXRhaWxzLFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgcGx1Z2luLFxyXG4gICAgICBzZXR0aW5nTmFtZTogXCJsaW1pdFRyYWlsQ2hlY2tib3hlc1wiLFxyXG4gICAgICBvcHRpb25zOiBnZXRGaWVsZHMoc2V0dGluZ3MudXNlckhpZXJzLCBcInVwXCIpLFxyXG4gICAgfSxcclxuICB9KTtcclxuXHJcbiAgY29uc3Qgdmlld3NUb1Nob3cgPSBuZXcgU2V0dGluZyh0cmFpbERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlZpZXdzIHRvIHNob3dcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBcIkNob29zZSB3aGljaCBvZiB0aGUgdmlld3MgdG8gc2hvdyBhdCB0aGUgdG9wIG9mIHRoZSBub3RlLiBKdWdnbCBWaWV3IHJlcXVpcmVzIHRoZSBKdWdnbCBwbHVnaW4uXCJcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xyXG4gICAgICB0b2dnbGVcclxuICAgICAgICAuc2V0VG9vbHRpcChcIlRyYWlsIHZpZXdcIilcclxuICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3Muc2hvd1RyYWlsKVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLnNob3dUcmFpbCA9IHZhbHVlO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgYXdhaXQgZHJhd1RyYWlsKHBsdWdpbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XHJcbiAgICAgIHRvZ2dsZVxyXG4gICAgICAgIC5zZXRUb29sdGlwKFwiR3JpZCB2aWV3XCIpXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLnNob3dHcmlkKVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLnNob3dHcmlkID0gdmFsdWU7XHJcbiAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICBhd2FpdCBkcmF3VHJhaWwocGx1Z2luKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcclxuICAgICAgdG9nZ2xlXHJcbiAgICAgICAgLnNldFRvb2x0aXAoXCJOZXh0L1ByZXZpb3VzIHZpZXdcIilcclxuICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3Muc2hvd1ByZXZOZXh0KVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLnNob3dQcmV2TmV4dCA9IHZhbHVlO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgYXdhaXQgZHJhd1RyYWlsKHBsdWdpbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KVxyXG5cclxuICBpZiAoYXBwLnBsdWdpbnMucGx1Z2lucy5qdWdnbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICB2aWV3c1RvU2hvdy5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xyXG4gICAgICB0b2dnbGVcclxuICAgICAgICAuc2V0VG9vbHRpcChcIkp1Z2dsIHZpZXdcIilcclxuICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3Muc2hvd0p1Z2dsKVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLnNob3dKdWdnbCA9IHZhbHVlO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgYXdhaXQgZHJhd1RyYWlsKHBsdWdpbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmV3IFNldHRpbmcodHJhaWxEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoJ0dyaWQgdmlldyBkZXB0aCcpXHJcbiAgICAuc2V0RGVzYygnTGltaXQgdGhlIGluaXRpYWwgZGVwdGggb2YgdGhlIGdyaWQgdmlldycpXHJcbiAgICAuYWRkU2xpZGVyKChzbGlkZXIpID0+IHtcclxuICAgICAgc2xpZGVyXHJcbiAgICAgICAgLnNldExpbWl0cygwLCAyNSwgMSlcclxuICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3MuZ3JpZERlZmF1bHREZXB0aClcclxuICAgICAgICAuc2V0RHluYW1pY1Rvb2x0aXAoKTtcclxuXHJcbiAgICAgIHNsaWRlci5zbGlkZXJFbC5vbmJsdXIgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MuZ3JpZERlZmF1bHREZXB0aCA9IHNsaWRlci5nZXRWYWx1ZSgpO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICBhd2FpdCBkcmF3VHJhaWwocGx1Z2luKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcblxyXG4gIG5ldyBTZXR0aW5nKHRyYWlsRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiSW5kZXggTm90ZShzKVwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBcIlRoZSBub3RlIHRoYXQgYWxsIG9mIHlvdXIgb3RoZXIgbm90ZXMgbGVhZCBiYWNrIHRvLiBUaGUgcGFyZW50IG9mIGFsbCB5b3VyIHBhcmVudCBub3Rlcy4gSnVzdCBlbnRlciB0aGUgYmFzZW5hbWUuPC9icj5Zb3UgY2FuIGFsc28gaGF2ZSBtdWx0aXBsZSBpbmRleCBub3RlcyAoY29tbWEtc2VwYXJhdGVkIGxpc3QpLjwvYnI+TGVhdmluZyB0aGlzIGZpZWxkIGVtcHR5IHdpbGwgbWFrZSB0aGUgdHJhaWwgc2hvdyBhbGwgcGF0aHMgZ29pbmcgYXMgZmFyIHVwIHRoZSBwYXJlbnQtdHJlZSBhcyBwb3NzaWJsZS5cIlxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuYWRkVGV4dCgodGV4dCkgPT4ge1xyXG4gICAgICB0ZXh0XHJcbiAgICAgICAgLnNldFBsYWNlaG9sZGVyKFwiSW5kZXggTm90ZVwiKVxyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5pbmRleE5vdGVzLmpvaW4oXCIsIFwiKSk7XHJcblxyXG4gICAgICB0ZXh0LmlucHV0RWwub25ibHVyID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNwbGl0cyA9IHNwbGl0QW5kVHJpbSh0ZXh0LmdldFZhbHVlKCkpO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHNwbGl0c1swXSA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgICBzcGxpdHMuZXZlcnkoKGluZGV4KSA9PiBpc0luVmF1bHQoaW5kZXgpKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgc2V0dGluZ3MuaW5kZXhOb3RlcyA9IHNwbGl0cztcclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICB9IGVsc2UgbmV3IE5vdGljZShcIkF0bGVhc3Qgb25lIG9mIHRoZSBub3RlcyBpcyBub3QgaW4geW91ciB2YXVsdFwiKTtcclxuXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgbmV3IFNldHRpbmcodHJhaWxEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJTaG93cyBhbGwgcGF0aHMgaWYgbm9uZSB0byBpbmRleCBub3RlIGFyZSBmb3VuZFwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIFwiSWYgeW91IGhhdmUgYW4gaW5kZXggbm90ZSBjaG9zZW4sIGJ1dCB0aGUgdHJhaWwgdmlldyBoYXMgbm8gcGF0aHMgZ29pbmcgdXAgdG8gdGhvc2UgaW5kZXggbm90ZXMsIHNob3VsZCBpdCBzaG93IGFsbCBwYXRocyBpbnN0ZWFkP1wiXHJcbiAgICApXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAgIHRvZ2dsZVxyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5zaG93QWxsUGF0aHNJZk5vbmVUb0luZGV4Tm90ZSlcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICBzZXR0aW5ncy5zaG93QWxsUGF0aHNJZk5vbmVUb0luZGV4Tm90ZSA9IHZhbHVlO1xyXG5cclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgIGF3YWl0IGRyYXdUcmFpbChwbHVnaW4pO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICBuZXcgU2V0dGluZyh0cmFpbERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkRlZmF1bHQ6IEFsbCwgTG9uZ2VzdCwgb3IgU2hvcnRlc3RcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBcIklmIG11bHRpcGxlIHBhdGhzIGFyZSBmb3VuZCBnb2luZyB1cCB0aGUgcGFyZW50IHRyZWUsIHdoaWNoIG9mIHRoZW0gc2hvdWxkIHNob3c/XCJcclxuICAgIClcclxuICAgIC5hZGREcm9wZG93bihkZCA9PiB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7fVxyXG4gICAgICBUUkFJTF9MRU5HVEhTLmZvckVhY2gobGVuZ3RoID0+IHtcclxuICAgICAgICBvcHRpb25zW2xlbmd0aF0gPSBsZW5ndGg7XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBkZC5hZGRPcHRpb25zKG9wdGlvbnMpO1xyXG4gICAgICBkZC5zZXRWYWx1ZShzZXR0aW5ncy5zaG93QWxsKTtcclxuICAgICAgZGQub25DaGFuZ2UoYXN5bmMgKHZhbCkgPT4ge1xyXG4gICAgICAgIHNldHRpbmdzLnNob3dBbGwgPSB2YWw7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIGF3YWl0IGRyYXdUcmFpbChwbHVnaW4pO1xyXG4gICAgICB9KVxyXG4gICAgfSlcclxuXHJcbiAgbmV3IFNldHRpbmcodHJhaWxEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJTZXBlcmF0b3JcIilcclxuICAgIC5zZXREZXNjKGZyYWdXaXRoSFRNTChcclxuICAgICAgXCJUaGUgY2hhcmFjdGVyIHRvIHNob3cgYmV0d2VlbiBjcnVtYnMgaW4gdGhlIGJyZWFkY3J1bWIgdHJhaWwuIFRoZSBkZWZhdWx0IGlzIDxjb2RlPlx1MjE5MjwvY29kZT5cIilcclxuICAgIClcclxuICAgIC5hZGRUZXh0KCh0ZXh0KSA9PlxyXG4gICAgICB0ZXh0XHJcbiAgICAgICAgLnNldFBsYWNlaG9sZGVyKFwiXHUyMTkyXCIpXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLnRyYWlsU2VwZXJhdG9yKVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLnRyYWlsU2VwZXJhdG9yID0gdmFsdWU7XHJcbiAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICBhd2FpdCBkcmF3VHJhaWwocGx1Z2luKTtcclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgbmV3IFNldHRpbmcodHJhaWxEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJObyBwYXRoIGZvdW5kIG1lc3NhZ2VcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBcIlRoZSB0ZXh0IHRvIGRpc3BsYXkgd2hlbiBubyBwYXRoIHRvIHRoZSBpbmRleCBub3RlIGlzIGZvdW5kLCBvciB0aGUgY3VycmVudCBub3RlIGhhcyBubyBwYXJlbnQuXCJcclxuICAgIClcclxuICAgIC5hZGRUZXh0KCh0ZXh0KSA9PlxyXG4gICAgICB0ZXh0XHJcbiAgICAgICAgLnNldFBsYWNlaG9sZGVyKFwiTm8gcGF0aCB0byBpbmRleCBub3RlIHdhcyBmb3VuZFwiKVxyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5ub1BhdGhNZXNzYWdlKVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLm5vUGF0aE1lc3NhZ2UgPSB2YWx1ZTtcclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgIGF3YWl0IGRyYXdUcmFpbChwbHVnaW4pO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICBuZXcgU2V0dGluZyh0cmFpbERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlJlc3BlY3QgUmVhZGFibGUgTGluZSBMZW5ndGhcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBcIlNob3VsZCB0aGUgYnJlYWRjcnVtYnMgdHJhaWwgYWRqdXN0IGl0cyB3aWR0aCB0byB0aGUgcmVhZGFibGUgbGluZSBsZW5ndGgsIG9yIHVzZSBhcyBtdWNoIHNwYWNlIGFzIHBvc3NpYmxlPyBcdTI3MDUgPSB1c2UgcmVhZGFibGUgbGluZSBsZW5ndGguXCJcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgdG9nZ2xlXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLnJlc3BlY3RSZWFkYWJsZUxpbmVMZW5ndGgpXHJcbiAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgc2V0dGluZ3MucmVzcGVjdFJlYWRhYmxlTGluZUxlbmd0aCA9IHZhbHVlO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgYXdhaXQgZHJhd1RyYWlsKHBsdWdpbik7XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcblxyXG5cclxuICBuZXcgU2V0dGluZyh0cmFpbERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlNob3cgdXAgZmllbGRzIGluIEp1Z2dsXCIpXHJcbiAgICAuc2V0RGVzYyhcIkp1Z2dsIHdpbGwgc2hvdyBib3RoIHVwIGFuZCBkb3duIGZpZWxkc1wiKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XHJcbiAgICAgIHRvZ2dsZVxyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5zaG93VXBJbkp1Z2dsKVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLnNob3dVcEluSnVnZ2wgPSB2YWx1ZTtcclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICBuZXcgU2V0dGluZyh0cmFpbERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkp1Z2dsIHZpZXcgbGF5b3V0XCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgZnJhZ1dpdGhIVE1MKFxyXG4gICAgICAgIFwiVGhlIGxheW91dCB0eXBlIHRvIHVzZSBmb3IgdGhlIEp1Z2dsIHZpZXcuPGJyPlRoZSBoaWVyYXJjaHkgbGF5b3V0IGlzIG1vc3QgbmF0dXJhbCBmb3IgQnJlYWRjcnVtYnMsIGJ1dCBmb3IgbGFyZ2UgZ3JhcGhzIEQzIEZvcmNlIGlzIHJlY29tbWVuZGVkLlwiXHJcbiAgICAgIClcclxuICAgIClcclxuICAgIC5hZGREcm9wZG93bigoZGM6IERyb3Bkb3duQ29tcG9uZW50KSA9PiB7XHJcbiAgICAgIGRjLmFkZE9wdGlvbihcImhpZXJhcmNoeVwiLCBcIkhpZXJhcmNoeVwiKTtcclxuICAgICAgZGMuYWRkT3B0aW9uKFwiZDMtZm9yY2VcIiwgXCJEMyBGb3JjZVwiKTtcclxuICAgICAgZGMuYWRkT3B0aW9uKFwiY29sYVwiLCBcIkNvbGEgRm9yY2VcIik7XHJcbiAgICAgIGRjLmFkZE9wdGlvbihcImdyaWRcIiwgXCJHcmlkXCIpO1xyXG4gICAgICBkYy5hZGRPcHRpb24oXCJjb25jZW50cmljXCIsIFwiQ29uY2VudHJpY1wiKTtcclxuXHJcbiAgICAgIGRjLnNldFZhbHVlKHNldHRpbmdzLmp1Z2dsTGF5b3V0KTtcclxuICAgICAgZGMub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MuanVnZ2xMYXlvdXQgPSB2YWx1ZSBhcyBKdWdnbExheW91dHM7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIGF3YWl0IGRyYXdUcmFpbChwbHVnaW4pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG59XHJcbiIsICJpbXBvcnQgeyBEcm9wZG93bkNvbXBvbmVudCwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgeyBBTExVTkxJTktFRCwgUkVBbENMT1NFRCwgUkVMQVRJT05TLCBWSVNUWVBFUyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHR5cGUgeyBSZWxhdGlvbnMsIFZpc1R5cGUgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG5pbXBvcnQgeyBzdWJEZXRhaWxzIH0gZnJvbSBcIi4vQnJlYWRjcnVtYnNTZXR0aW5nVGFiXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkVmlzTW9kYWxTZXR0aW5ncyhcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIHZpZXdEZXRhaWxzOiBIVE1MRGV0YWlsc0VsZW1lbnRcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHZpc01vZGFsRGV0YWlscyA9IHN1YkRldGFpbHMoXCJWaXN1YWxpc2F0aW9uIE1vZGFsXCIsIHZpZXdEZXRhaWxzKTtcclxuXHJcbiAgbmV3IFNldHRpbmcodmlzTW9kYWxEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJEZWZhdWx0IFZpc3VhbGlzYXRpb24gVHlwZVwiKVxyXG4gICAgLnNldERlc2MoXCJXaGljaCB2aXN1YWxpc2F0aW9uIHRvIHNob3cgYnkgZGVmYXVsdFwiKVxyXG4gICAgLmFkZERyb3Bkb3duKChjYjogRHJvcGRvd25Db21wb25lbnQpID0+IHtcclxuICAgICAgVklTVFlQRVMuZm9yRWFjaCgob3B0aW9uOiBWaXNUeXBlKSA9PiB7XHJcbiAgICAgICAgY2IuYWRkT3B0aW9uKG9wdGlvbiwgb3B0aW9uKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGNiLnNldFZhbHVlKHNldHRpbmdzLnZpc0dyYXBoKTtcclxuXHJcbiAgICAgIGNiLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZTogVmlzVHlwZSkgPT4ge1xyXG4gICAgICAgIHNldHRpbmdzLnZpc0dyYXBoID0gdmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIG5ldyBTZXR0aW5nKHZpc01vZGFsRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiRGVmYXVsdCBSZWxhdGlvblwiKVxyXG4gICAgLnNldERlc2MoXCJXaGljaCByZWxhdGlvbiB0eXBlIHRvIHNob3cgZmlyc3Qgd2hlbiBvcGVuaW5nIHRoZSBtb2RhbFwiKVxyXG4gICAgLmFkZERyb3Bkb3duKChkZCkgPT4ge1xyXG4gICAgICBSRUxBVElPTlMuZm9yRWFjaCgob3B0aW9uOiBSZWxhdGlvbnMpID0+IHtcclxuICAgICAgICBkZC5hZGRPcHRpb24ob3B0aW9uLCBvcHRpb24pO1xyXG4gICAgICB9KTtcclxuICAgICAgZGQuc2V0VmFsdWUoc2V0dGluZ3MudmlzUmVsYXRpb24pO1xyXG5cclxuICAgICAgZGQub25DaGFuZ2UoYXN5bmMgKHZhbHVlOiBSZWxhdGlvbnMpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy52aXNSZWxhdGlvbiA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICBuZXcgU2V0dGluZyh2aXNNb2RhbERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkRlZmF1bHQgUmVhbC9DbG9zZWRcIilcclxuICAgIC5zZXREZXNjKFwiU2hvdyB0aGUgcmVhbCBvciBjbG9zZWQgZ3JhcGggYnkgZGVmYXVsdFwiKVxyXG4gICAgLmFkZERyb3Bkb3duKChjYjogRHJvcGRvd25Db21wb25lbnQpID0+IHtcclxuICAgICAgUkVBbENMT1NFRC5mb3JFYWNoKChvcHRpb246IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGNiLmFkZE9wdGlvbihvcHRpb24sIG9wdGlvbik7XHJcbiAgICAgIH0pO1xyXG4gICAgICBjYi5zZXRWYWx1ZShzZXR0aW5ncy52aXNDbG9zZWQpO1xyXG5cclxuICAgICAgY2Iub25DaGFuZ2UoYXN5bmMgKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy52aXNDbG9zZWQgPSB2YWx1ZTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgbmV3IFNldHRpbmcodmlzTW9kYWxEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJEZWZhdWx0IFVubGlua2VkXCIpXHJcbiAgICAuc2V0RGVzYyhcIlNob3cgYWxsIG5vZGVzIG9yIG9ubHkgdGhvc2Ugd2hpY2ggaGF2ZSBsaW5rcyBieSBkZWZhdWx0XCIpXHJcbiAgICAuYWRkRHJvcGRvd24oKGNiOiBEcm9wZG93bkNvbXBvbmVudCkgPT4ge1xyXG4gICAgICBBTExVTkxJTktFRC5mb3JFYWNoKChvcHRpb246IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGNiLmFkZE9wdGlvbihvcHRpb24sIG9wdGlvbik7XHJcbiAgICAgIH0pO1xyXG4gICAgICBjYi5zZXRWYWx1ZShzZXR0aW5ncy52aXNBbGwpO1xyXG5cclxuICAgICAgY2Iub25DaGFuZ2UoYXN5bmMgKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy52aXNBbGwgPSB2YWx1ZTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB7IFNldHRpbmcgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IENoZWNrYm94ZXMgZnJvbSBcIi4uL0NvbXBvbmVudHMvQ2hlY2tib3hlcy5zdmVsdGVcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHsgZ2V0RmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBmcmFnV2l0aEhUTUwsIHN1YkRldGFpbHMgfSBmcm9tIFwiLi9CcmVhZGNydW1ic1NldHRpbmdUYWJcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRXcml0ZUJDc1NldHRpbmdzKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgY21kc0RldGFpbHM6IEhUTUxEZXRhaWxzRWxlbWVudFxyXG4pIHtcclxuICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW47XHJcbiAgY29uc3Qgd3JpdGVCQ3NUb0ZpbGVEZXRhaWxzID0gc3ViRGV0YWlscyhcclxuICAgIFwiV3JpdGUgQnJlYWRjcnVtYnMgdG8gRmlsZVwiLFxyXG4gICAgY21kc0RldGFpbHNcclxuICApO1xyXG5cclxuICB3cml0ZUJDc1RvRmlsZURldGFpbHMuY3JlYXRlRGl2KHtcclxuICAgIGNsczogXCJzZXR0aW5nLWl0ZW0tbmFtZVwiLFxyXG4gICAgdGV4dDogXCJMaW1pdCB0byBvbmx5IHdyaXRlIGNlcnRhaW4gZmllbGRzXCIsXHJcbiAgfSk7XHJcblxyXG4gIG5ldyBDaGVja2JveGVzKHtcclxuICAgIHRhcmdldDogd3JpdGVCQ3NUb0ZpbGVEZXRhaWxzLFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgcGx1Z2luLFxyXG4gICAgICBvcHRpb25zOiBnZXRGaWVsZHMoc2V0dGluZ3MudXNlckhpZXJzKSxcclxuICAgICAgc2V0dGluZ05hbWU6IFwibGltaXRXcml0ZUJDQ2hlY2tib3hlc1wiLFxyXG4gICAgfSxcclxuICB9KTtcclxuXHJcbiAgbmV3IFNldHRpbmcod3JpdGVCQ3NUb0ZpbGVEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJXcml0ZSBJbmxpbmVcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBcIldoZW4gd3JpdGluZyBCQ3MgdG8gZmlsZSwgc2hvdWxkIHRoZXkgYmUgd3JpdHRlbiBpbmxpbmUgKHVzaW5nIERhdGF2aWV3IHN5bnRheCksIG9yIGludG8gdGhlIFlBTUwgb2YgdGhlIG5vdGU/XCJcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgdG9nZ2xlLnNldFZhbHVlKHNldHRpbmdzLndyaXRlQkNzSW5saW5lKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy53cml0ZUJDc0lubGluZSA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKHdyaXRlQkNzVG9GaWxlRGV0YWlscylcclxuICAgIC5zZXROYW1lKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgXCJTaG93IHRoZSA8Y29kZT5Xcml0ZSBCcmVhZGNydW1icyB0byBBTEwgRmlsZXM8L2NvZGU+IGNvbW1hbmRcIlxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgXCJUaGlzIGNvbW1hbmQgYXR0ZW1wdHMgdG8gdXBkYXRlIEFMTCBmaWxlcyB3aXRoIGltcGxpZWQgYnJlYWRjcnVtYnMgcG9pbnRpbmcgdG8gdGhlbS4gU28sIGl0IGlzIG5vdCBzaG93biBieSBkZWZhdWx0IChldmVuIHRob3VnaCBpdCBoYXMgMyBjb25maXJtYXRpb24gYm94ZXMgdG8gZW5zdXJlIHlvdSB3YW50IHRvIHJ1biBpdFwiXHJcbiAgICApXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAgIHRvZ2dsZS5zZXRWYWx1ZShzZXR0aW5ncy5zaG93V3JpdGVBbGxCQ3NDbWQpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHNldHRpbmdzLnNob3dXcml0ZUFsbEJDc0NtZCA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbn1cclxuIiwgImltcG9ydCB7IEl0ZW1WaWV3LCBXb3Jrc3BhY2VMZWFmIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCBEdWNrcyBmcm9tIFwiLi4vQ29tcG9uZW50cy9EdWNrcy5zdmVsdGVcIjtcclxuaW1wb3J0IHsgRFVDS19JQ09OLCBEVUNLX1ZJRVcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEdWNrc1ZpZXcgZXh0ZW5kcyBJdGVtVmlldyB7XHJcbiAgcHJpdmF0ZSBwbHVnaW46IEJDUGx1Z2luO1xyXG4gIHByaXZhdGUgdmlldzogRHVja3M7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGxlYWY6IFdvcmtzcGFjZUxlYWYsIHBsdWdpbjogQkNQbHVnaW4pIHtcclxuICAgIHN1cGVyKGxlYWYpO1xyXG4gICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbmxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBzdXBlci5vbmxvYWQoKTtcclxuICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgYXBwLndvcmtzcGFjZS5vbkxheW91dFJlYWR5KGFzeW5jICgpID0+IHtcclxuICAgICAgYXdhaXQgdGhpcy5kcmF3KCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFZpZXdUeXBlKCkge1xyXG4gICAgcmV0dXJuIERVQ0tfVklFVztcclxuICB9XHJcbiAgZ2V0RGlzcGxheVRleHQoKSB7XHJcbiAgICByZXR1cm4gXCJCcmVhZGNydW1icyBEdWNrc1wiO1xyXG4gIH1cclxuXHJcbiAgLy8gVE9ETyBEdWNrIGljb25cclxuICBpY29uID0gRFVDS19JQ09OO1xyXG5cclxuICBhc3luYyBvbk9wZW4oKTogUHJvbWlzZTx2b2lkPiB7IH1cclxuXHJcbiAgb25DbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudmlldz8uJGRlc3Ryb3koKTtcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRyYXcoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmNvbnRlbnRFbC5lbXB0eSgpO1xyXG5cclxuICAgIHRoaXMudmlldyA9IG5ldyBEdWNrcyh7XHJcbiAgICAgIHRhcmdldDogdGhpcy5jb250ZW50RWwsXHJcbiAgICAgIHByb3BzOiB7IHBsdWdpbjogdGhpcy5wbHVnaW4sIGR1Y2tzVmlldzogdGhpcyB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsICI8c2NyaXB0PlxuICAgICAgICBpbXBvcnQgSWNvbkJhc2UgZnJvbSAnLi4vY29tcG9uZW50cy9JY29uQmFzZS5zdmVsdGUnO1xuICAgICAgICA8L3NjcmlwdD5cbiAgICAgICAgPEljb25CYXNlIHZpZXdCb3g9XCIwIDAgMTkyIDUxMlwiIHsuLi4kJHByb3BzfT5cbiAgICAgICAgICA8cGF0aCBkPVwiTTIwIDQyNC4yMjloMjBWMjc5Ljc3MUgyMGMtMTEuMDQ2IDAtMjAtOC45NTQtMjAtMjBWMjEyYzAtMTEuMDQ2IDguOTU0LTIwIDIwLTIwaDExMmMxMS4wNDYgMCAyMCA4Ljk1NCAyMCAyMHYyMTIuMjI5aDIwYzExLjA0NiAwIDIwIDguOTU0IDIwIDIwVjQ5MmMwIDExLjA0Ni04Ljk1NCAyMC0yMCAyMEgyMGMtMTEuMDQ2IDAtMjAtOC45NTQtMjAtMjB2LTQ3Ljc3MWMwLTExLjA0NiA4Ljk1NC0yMCAyMC0yMHpNOTYgMEM1Ni4yMzUgMCAyNCAzMi4yMzUgMjQgNzJzMzIuMjM1IDcyIDcyIDcyIDcyLTMyLjIzNSA3Mi03MlMxMzUuNzY0IDAgOTYgMHpcIiAvPlxuICAgICAgICA8L0ljb25CYXNlPlxuICAgICAgIiwgbnVsbCwgIjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbiAgaW1wb3J0IHsgaG92ZXJQcmV2aWV3LCBvcGVuT3JTd2l0Y2ggfSBmcm9tIFwib2JzaWRpYW4tY29tbXVuaXR5LWxpYlwiO1xyXG4gIGltcG9ydCBGYUluZm8gZnJvbSBcInN2ZWx0ZS1pY29ucy9mYS9GYUluZm8uc3ZlbHRlXCI7XHJcbiAgaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuICBpbXBvcnQgdHlwZSBEdWNrc1ZpZXcgZnJvbSBcIi4uL1ZpZXdzL0R1Y2tzVmlld1wiO1xyXG5cclxuICBleHBvcnQgbGV0IHBsdWdpbjogQkNQbHVnaW47XHJcbiAgZXhwb3J0IGxldCBkdWNrc1ZpZXc6IER1Y2tzVmlldztcclxuXHJcbiAgY29uc3QgeyBtYWluRyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IGZpbGVzID0gYXBwLnZhdWx0LmdldE1hcmtkb3duRmlsZXMoKTtcclxuXHJcbiAgbGV0IHF1ZXJ5OiBzdHJpbmcgPSBcIlwiO1xyXG4gIGxldCByZWdleCA9IG5ldyBSZWdFeHAocXVlcnksIFwiZ1wiKTtcclxuICBsZXQgaW5jbHVkZSA9IHRydWU7XHJcblxyXG4gICQ6IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IG5ld1JlZyA9IG5ldyBSZWdFeHAocXVlcnksIFwiZ1wiKTtcclxuICAgICAgcmVnZXggPSBuZXdSZWc7XHJcbiAgICB9IGNhdGNoIChlKSB7fVxyXG4gIH1cclxuXHJcbiAgY29uc3QgZ2V0RHVja3MgPSAocmVnZXg6IFJlZ0V4cCkgPT4ge1xyXG4gICAgaWYgKCFyZWdleCkgcmV0dXJuO1xyXG4gICAgcmV0dXJuIGZpbGVzXHJcbiAgICAgIC5tYXAoKGZpbGUpID0+IGZpbGUuYmFzZW5hbWUpXHJcbiAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgKG5hbWUpID0+ICFtYWluRy5uZWlnaGJvcnMobmFtZSkubGVuZ3RoICYmIGluY2x1ZGUgPT09IHJlZ2V4LnRlc3QobmFtZSlcclxuICAgICAgKTtcclxuICB9O1xyXG5cclxuICAkOiBkdWNrcyA9IGdldER1Y2tzKHJlZ2V4KTtcclxuPC9zY3JpcHQ+XHJcblxyXG48ZGl2IGNsYXNzPVwiQkMtRHVja3MgbWFya2Rvd24tcHJldmlldy12aWV3XCI+XHJcbiAgPGg2Pk5vdGVzIHdpdGhvdXQgQnJlYWRjcnVtYnM8L2g2PlxyXG4gIDxzcGFuXHJcbiAgICBjbGFzcz1cImljb25cIlxyXG4gICAgYXJpYS1sYWJlbD17YEEgUmVnZXggdXNlZCB0byBmaWx0ZXIgdGhlIHJlc3VsdHMuXFxuSWYgJ0luY2x1ZGUnIGlzIGNoZWNrZWQsIGl0IHdpbGwgb25seSBzaG93IG5vdGVzIHRoYXQgbWF0Y2ggdGhlIHJlZ2V4LlxcbklmICdJbmNsdWRlJyBpcyBub3QgY2hlY2tlZCwgdGhpcyByZWdleCB3aWxsIGZpbHRlciBvdXQgbm90ZXMgdGhhdCBtYXRjaCBpdC5gfVxyXG4gID5cclxuICAgIDxGYUluZm8gLz5cclxuICA8L3NwYW4+XHJcbiAgPGxhYmVsPlxyXG4gICAgRmlsdGVyOlxyXG4gICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJSZWdleFwiIGJpbmQ6dmFsdWU9e3F1ZXJ5fSAvPlxyXG4gIDwvbGFiZWw+XHJcbiAgPGlucHV0IGFyaWEtbGFiZWw9XCJJbmNsdWRlXCIgdHlwZT1cImNoZWNrYm94XCIgYmluZDpjaGVja2VkPXtpbmNsdWRlfSAvPlxyXG5cclxuICB7I2VhY2ggZHVja3MgYXMgZHVja31cclxuICAgIDxkaXZcclxuICAgICAgb246Y2xpY2s9e2FzeW5jIChlKSA9PiBhd2FpdCBvcGVuT3JTd2l0Y2goZHVjaywgZSl9XHJcbiAgICAgIG9uOm1vdXNlb3Zlcj17KGUpID0+IGhvdmVyUHJldmlldyhlLCBkdWNrc1ZpZXcsIGR1Y2spfVxyXG4gICAgPlxyXG4gICAgICA8IS0tIHN2ZWx0ZS1pZ25vcmUgYTExeS1taXNzaW5nLWF0dHJpYnV0ZSAtLT5cclxuICAgICAgPGEgY2xhc3M9XCJpbnRlcm5hbC1saW5rXCI+e2R1Y2t9PC9hPlxyXG4gICAgPC9kaXY+XHJcbiAgey9lYWNofVxyXG48L2Rpdj5cclxuXHJcbjxzdHlsZT5cclxuICAuaWNvbiB7XHJcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1ub3JtYWwpO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgcGFkZGluZy10b3A6IDVweCAhaW1wb3J0YW50O1xyXG4gICAgd2lkdGg6IDIwcHg7XHJcbiAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgfVxyXG48L3N0eWxlPlxyXG4iLCAiaW1wb3J0IHsgSXRlbVZpZXcsIFdvcmtzcGFjZUxlYWYgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHsgYWRkRmVhdGhlckljb24gfSBmcm9tIFwib2JzaWRpYW4tY29tbXVuaXR5LWxpYlwiO1xyXG5pbXBvcnQgU2lkZVRyZWUgZnJvbSBcIi4uL0NvbXBvbmVudHMvU2lkZVRyZWUuc3ZlbHRlXCI7XHJcbmltcG9ydCB7IFRSRUVfVklFVyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uLy4uL21haW5cIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRyZWVWaWV3IGV4dGVuZHMgSXRlbVZpZXcge1xyXG4gIHByaXZhdGUgcGx1Z2luOiBCQ1BsdWdpbjtcclxuICBwcml2YXRlIHZpZXc6IFNpZGVUcmVlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihsZWFmOiBXb3Jrc3BhY2VMZWFmLCBwbHVnaW46IEJDUGx1Z2luKSB7XHJcbiAgICBzdXBlcihsZWFmKTtcclxuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25sb2FkKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgc3VwZXIub25sb2FkKCk7XHJcbiAgICBhcHAud29ya3NwYWNlLm9uTGF5b3V0UmVhZHkoYXN5bmMgKCkgPT4ge1xyXG4gICAgICBhd2FpdCB0aGlzLmRyYXcoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Vmlld1R5cGUoKSB7XHJcbiAgICByZXR1cm4gVFJFRV9WSUVXO1xyXG4gIH1cclxuICBnZXREaXNwbGF5VGV4dCgpIHtcclxuICAgIHJldHVybiBcIkJyZWFkY3J1bWJzIERvd25cIjtcclxuICB9XHJcblxyXG4gIGljb24gPSBhZGRGZWF0aGVySWNvbihcImNvcm5lci1yaWdodC1kb3duXCIpIGFzIHN0cmluZztcclxuXHJcbiAgYXN5bmMgb25PcGVuKCk6IFByb21pc2U8dm9pZD4ge31cclxuXHJcbiAgb25DbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudmlldz8uJGRlc3Ryb3koKTtcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRyYXcoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmNvbnRlbnRFbC5lbXB0eSgpO1xyXG5cclxuICAgIHRoaXMudmlldyA9IG5ldyBTaWRlVHJlZSh7XHJcbiAgICAgIHRhcmdldDogdGhpcy5jb250ZW50RWwsXHJcbiAgICAgIHByb3BzOiB7IHBsdWdpbjogdGhpcy5wbHVnaW4sIHZpZXc6IHRoaXMgfSxcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCBudWxsLCAiPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuICBpbXBvcnQgeyBpbmZvIH0gZnJvbSBcImxvZ2xldmVsXCI7XHJcbiAgaW1wb3J0IHtcclxuICAgIGhvdmVyUHJldmlldyxcclxuICAgIGlzSW5WYXVsdCxcclxuICAgIG9wZW5PclN3aXRjaCxcclxuICB9IGZyb20gXCJvYnNpZGlhbi1jb21tdW5pdHktbGliXCI7XHJcbiAgaW1wb3J0IEZhRmlyZSBmcm9tIFwic3ZlbHRlLWljb25zL2ZhL0ZhRmlyZS5zdmVsdGVcIjtcclxuICBpbXBvcnQgRmFSZWdTbm93Zmxha2UgZnJvbSBcInN2ZWx0ZS1pY29ucy9mYS9GYVJlZ1Nub3dmbGFrZS5zdmVsdGVcIjtcclxuICBpbXBvcnQgeyBjcmVhdGVJbmRleCwgaW5kZXhUb0xpbmVQYWlycyB9IGZyb20gXCIuLi9Db21tYW5kcy9DcmVhdGVJbmRleFwiO1xyXG4gIGltcG9ydCB7IERJUkVDVElPTlMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbiAgaW1wb3J0IHR5cGUgeyBEaXJlY3Rpb25zIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuICBpbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG4gIGltcG9ydCB7IHJlZnJlc2hJbmRleCB9IGZyb20gXCIuLi9yZWZyZXNoSW5kZXhcIjtcclxuICBpbXBvcnQgeyBkcm9wRGVuZHJvbiB9IGZyb20gXCIuLi9VdGlscy9nZW5lcmFsVXRpbHNcIjtcclxuICBpbXBvcnQgeyBkZnNBbGxQYXRocywgZ2V0U3ViSW5EaXJzIH0gZnJvbSBcIi4uL1V0aWxzL2dyYXBoVXRpbHNcIjtcclxuICBpbXBvcnQgdHlwZSBUcmVlVmlldyBmcm9tIFwiLi4vVmlld3MvVHJlZVZpZXdcIjtcclxuICBpbXBvcnQgeyBnZXRDdXJyRmlsZSB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG4gIGV4cG9ydCBsZXQgcGx1Z2luOiBCQ1BsdWdpbjtcclxuICBleHBvcnQgbGV0IHZpZXc6IFRyZWVWaWV3O1xyXG5cclxuICBjb25zdCB7IHNldHRpbmdzLCBhcHAsIGNsb3NlZEcgfSA9IHBsdWdpbjtcclxuICBjb25zdCB7IGNyZWF0ZUluZGV4SW5kZW50IH0gPSBzZXR0aW5ncztcclxuXHJcbiAgbGV0IGRpcjogRGlyZWN0aW9ucyA9IFwiZG93blwiO1xyXG4gIGxldCBmcm96ZW4gPSBmYWxzZTtcclxuICBsZXQgeyBiYXNlbmFtZSB9ID0gZ2V0Q3VyckZpbGUoKTtcclxuXHJcbiAgcGx1Z2luLnJlZ2lzdGVyRXZlbnQoXHJcbiAgICBhcHAud29ya3NwYWNlLm9uKFwiYWN0aXZlLWxlYWYtY2hhbmdlXCIsICgpID0+IHtcclxuICAgICAgaWYgKGZyb3plbikgcmV0dXJuO1xyXG4gICAgICBiYXNlbmFtZSA9IGdldEN1cnJGaWxlKCk/LmJhc2VuYW1lO1xyXG4gICAgfSlcclxuICApO1xyXG5cclxuICBsZXQgbGluZXM6IFtzdHJpbmcsIHN0cmluZ11bXTtcclxuICAkOiB7XHJcbiAgICBjb25zdCBkb3duRyA9IGdldFN1YkluRGlycyhjbG9zZWRHLCBkaXIpO1xyXG4gICAgY29uc3QgYWxsUGF0aHMgPSBkZnNBbGxQYXRocyhkb3duRywgYmFzZW5hbWUpO1xyXG4gICAgY29uc3QgaW5kZXggPSBjcmVhdGVJbmRleChhbGxQYXRocywgZmFsc2UsIGNyZWF0ZUluZGV4SW5kZW50KTtcclxuICAgIGluZm8oeyBhbGxQYXRocywgaW5kZXggfSk7XHJcblxyXG4gICAgbGluZXMgPSBpbmRleFRvTGluZVBhaXJzKGluZGV4KTtcclxuICB9XHJcbjwvc2NyaXB0PlxyXG5cclxuPCEtLSBzdmVsdGUtaWdub3JlIGExMXktdW5rbm93bi1hcmlhLWF0dHJpYnV0ZSAtLT5cclxuPHNwYW5cclxuICBjbGFzcz1cImljb25cIlxyXG4gIGFyaWEtbGFiZWw9e2Zyb3plbiA/IGBGcm96ZW4gb246ICR7YmFzZW5hbWV9YCA6IFwiVW5mcm96ZW5cIn1cclxuICBhcmlhLWxhYmVsLXBvc2l0aW9uPVwibGVmdFwiXHJcbiAgb246Y2xpY2s9eygpID0+IHtcclxuICAgIGZyb3plbiA9ICFmcm96ZW47XHJcbiAgICBpZiAoIWZyb3plbikgYmFzZW5hbWUgPSBnZXRDdXJyRmlsZSgpPy5iYXNlbmFtZTtcclxuICB9fVxyXG4+XHJcbiAgeyNpZiBmcm96ZW59XHJcbiAgICA8RmFSZWdTbm93Zmxha2UgLz5cclxuICB7OmVsc2V9XHJcbiAgICA8RmFGaXJlIC8+XHJcbiAgey9pZn1cclxuPC9zcGFuPlxyXG5cclxuPGJ1dHRvblxyXG4gIGFyaWEtbGFiZWw9XCJSZWZyZXNoIFN0YXRzIFZpZXcgKGFsc28gcmVmcmVzaGVzIEJyZWFkY3J1bWJzIEluZGV4KVwiXHJcbiAgb246Y2xpY2s9e2FzeW5jICgpID0+IHtcclxuICAgIGF3YWl0IHJlZnJlc2hJbmRleChwbHVnaW4pO1xyXG4gICAgYXdhaXQgdmlldy5kcmF3KCk7XHJcbiAgfX1cclxuPlxyXG4gIFx1MjFCQlxyXG48L2J1dHRvbj5cclxuXHJcbjxzZWxlY3QgY2xhc3M9XCJkcm9wZG93blwiIGJpbmQ6dmFsdWU9e2Rpcn0+XHJcbiAgeyNlYWNoIERJUkVDVElPTlMgYXMgZGlyZWN0aW9ufVxyXG4gICAgPG9wdGlvbiB2YWx1ZT17ZGlyZWN0aW9ufT57ZGlyZWN0aW9ufTwvb3B0aW9uPlxyXG4gIHsvZWFjaH1cclxuPC9zZWxlY3Q+XHJcblxyXG48ZGl2IGNsYXNzPVwiQkMtZG93bnNcIj5cclxuICB7I2VhY2ggbGluZXMgYXMgbGluZX1cclxuICAgIHsjaWYgbGluZS5sZW5ndGggPiAxfVxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxwcmU+e2xpbmVbMF0gKyBcIi1cIn08L3ByZT5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJpbnRlcm5hbC1saW5rXCJcclxuICAgICAgICAgIG9uOmNsaWNrPXthc3luYyAoZSkgPT4gYXdhaXQgb3Blbk9yU3dpdGNoKGxpbmVbMV0sIGUpfVxyXG4gICAgICAgICAgb246bW91c2VvdmVyPXsoZSkgPT4gaG92ZXJQcmV2aWV3KGUsIHZpZXcsIGxpbmVbMV0pfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIDwhLS0gc3ZlbHRlLWlnbm9yZSBhMTF5LW1pc3NpbmctYXR0cmlidXRlIC0tPlxyXG4gICAgICAgICAgPGEgY2xhc3M9XCJpbnRlcm5hbC1saW5rIHtpc0luVmF1bHQobGluZVsxXSkgPyAnJyA6ICdpcy11bnJlc29sdmVkJ31cIlxyXG4gICAgICAgICAgICA+e2Ryb3BEZW5kcm9uKGxpbmVbMV0sIHNldHRpbmdzKX08L2FcclxuICAgICAgICAgID5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgey9pZn1cclxuICB7L2VhY2h9XHJcbjwvZGl2PlxyXG5cclxuPHN0eWxlPlxyXG4gIGJ1dHRvbiB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmU7XHJcbiAgICBwYWRkaW5nOiAxcHggNnB4IDJweCA2cHg7XHJcbiAgfVxyXG5cclxuICAuQkMtZG93bnMge1xyXG4gICAgcGFkZGluZy1sZWZ0OiA1cHg7XHJcbiAgfVxyXG4gIHByZSB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmU7XHJcbiAgfVxyXG5cclxuICAuaXMtdW5yZXNvbHZlZCB7XHJcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XHJcbiAgfVxyXG5cclxuICAuaWNvbiB7XHJcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1ub3JtYWwpO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgcGFkZGluZy10b3A6IDVweCAhaW1wb3J0YW50O1xyXG4gICAgd2lkdGg6IDIwcHg7XHJcbiAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgfVxyXG48L3N0eWxlPlxyXG4iLCAiPHNjcmlwdD5cbiAgICAgICAgaW1wb3J0IEljb25CYXNlIGZyb20gJy4uL2NvbXBvbmVudHMvSWNvbkJhc2Uuc3ZlbHRlJztcbiAgICAgICAgPC9zY3JpcHQ+XG4gICAgICAgIDxJY29uQmFzZSB2aWV3Qm94PVwiMCAwIDM4NCA1MTJcIiB7Li4uJCRwcm9wc30+XG4gICAgICAgICAgPHBhdGggZD1cIk0yMTYgMjMuODZjMC0yMy44LTMwLjY1LTMyLjc3LTQ0LjE1LTEzLjA0QzQ4IDE5MS44NSAyMjQgMjAwIDIyNCAyODhjMCAzNS42My0yOS4xMSA2NC40Ni02NC44NSA2My45OS0zNS4xNy0uNDUtNjMuMTUtMjkuNzctNjMuMTUtNjQuOTR2LTg1LjUxYzAtMjEuNy0yNi40Ny0zMi4yMy00MS40My0xNi41QzI3LjggMjEzLjE2IDAgMjYxLjMzIDAgMzIwYzAgMTA1Ljg3IDg2LjEzIDE5MiAxOTIgMTkyczE5Mi04Ni4xMyAxOTItMTkyYzAtMTcwLjI5LTE2OC0xOTMtMTY4LTI5Ni4xNHpcIiAvPlxuICAgICAgICA8L0ljb25CYXNlPlxuICAgICAgIiwgIjxzY3JpcHQ+XG4gICAgICAgIGltcG9ydCBJY29uQmFzZSBmcm9tICcuLi9jb21wb25lbnRzL0ljb25CYXNlLnN2ZWx0ZSc7XG4gICAgICAgIDwvc2NyaXB0PlxuICAgICAgICA8SWNvbkJhc2Ugdmlld0JveD1cIjAgMCA0NDggNTEyXCIgey4uLiQkcHJvcHN9PlxuICAgICAgICAgIDxwYXRoIGQ9XCJNNDQwLjEgMzU1LjJsLTM5LjItMjMgMzQuMS05LjNjOC40LTIuMyAxMy40LTExLjEgMTEuMS0xOS42bC00LjEtMTUuNWMtMi4yLTguNS0xMC45LTEzLjYtMTkuMy0xMS4zTDM0MyAyOTguMiAyNzEuMiAyNTZsNzEuOS00Mi4yIDc5LjcgMjEuN2M4LjQgMi4zIDE3LTIuOCAxOS4zLTExLjNsNC4xLTE1LjVjMi4yLTguNS0yLjctMTcuMy0xMS4xLTE5LjZsLTM0LjEtOS4zIDM5LjItMjNjNy41LTQuNCAxMC4xLTE0LjIgNS44LTIxLjlsLTcuOS0xMy45Yy00LjMtNy43LTE0LTEwLjMtMjEuNS01LjlsLTM5LjIgMjMgOS4xLTM0LjdjMi4yLTguNS0yLjctMTcuMy0xMS4xLTE5LjZsLTE1LjItNC4xYy04LjQtMi4zLTE3IDIuOC0xOS4zIDExLjNsLTIxLjMgODEtNzEuOSA0Mi4ydi04NC41TDMwNiA3MC40YzYuMS02LjIgNi4xLTE2LjQgMC0yMi42bC0xMS4xLTExLjNjLTYuMS02LjItMTYuMS02LjItMjIuMiAwbC0yNC45IDI1LjRWMTZjMC04LjgtNy0xNi0xNS43LTE2aC0xNS43Yy04LjcgMC0xNS43IDcuMi0xNS43IDE2djQ2LjFsLTI0LjktMjUuNGMtNi4xLTYuMi0xNi4xLTYuMi0yMi4yIDBMMTQyLjEgNDhjLTYuMSA2LjItNi4xIDE2LjQgMCAyMi42bDU4LjMgNTkuM3Y4NC41bC03MS45LTQyLjItMjEuMy04MWMtMi4yLTguNS0xMC45LTEzLjYtMTkuMy0xMS4zTDcyLjcgODRjLTguNCAyLjMtMTMuNCAxMS4xLTExLjEgMTkuNmw5LjEgMzQuNy0zOS4yLTIzYy03LjUtNC40LTE3LjEtMS44LTIxLjUgNS45bC03LjkgMTMuOWMtNC4zIDcuNy0xLjggMTcuNCA1LjggMjEuOWwzOS4yIDIzLTM0LjEgOS4xYy04LjQgMi4zLTEzLjQgMTEuMS0xMS4xIDE5LjZMNiAyMjQuMmMyLjIgOC41IDEwLjkgMTMuNiAxOS4zIDExLjNsNzkuNy0yMS43IDcxLjkgNDIuMi03MS45IDQyLjItNzkuNy0yMS43Yy04LjQtMi4zLTE3IDIuOC0xOS4zIDExLjNsLTQuMSAxNS41Yy0yLjIgOC41IDIuNyAxNy4zIDExLjEgMTkuNmwzNC4xIDkuMy0zOS4yIDIzYy03LjUgNC40LTEwLjEgMTQuMi01LjggMjEuOUwxMCAzOTFjNC4zIDcuNyAxNCAxMC4zIDIxLjUgNS45bDM5LjItMjMtOS4xIDM0LjdjLTIuMiA4LjUgMi43IDE3LjMgMTEuMSAxOS42bDE1LjIgNC4xYzguNCAyLjMgMTctMi44IDE5LjMtMTEuM2wyMS4zLTgxIDcxLjktNDIuMnY4NC41bC01OC4zIDU5LjNjLTYuMSA2LjItNi4xIDE2LjQgMCAyMi42bDExLjEgMTEuM2M2LjEgNi4yIDE2LjEgNi4yIDIyLjIgMGwyNC45LTI1LjRWNDk2YzAgOC44IDcgMTYgMTUuNyAxNmgxNS43YzguNyAwIDE1LjctNy4yIDE1LjctMTZ2LTQ2LjFsMjQuOSAyNS40YzYuMSA2LjIgMTYuMSA2LjIgMjIuMiAwbDExLjEtMTEuM2M2LjEtNi4yIDYuMS0xNi40IDAtMjIuNmwtNTguMy01OS4zdi04NC41bDcxLjkgNDIuMiAyMS4zIDgxYzIuMiA4LjUgMTAuOSAxMy42IDE5LjMgMTEuM0wzNzUgNDI4YzguNC0yLjMgMTMuNC0xMS4xIDExLjEtMTkuNmwtOS4xLTM0LjcgMzkuMiAyM2M3LjUgNC40IDE3LjEgMS44IDIxLjUtNS45bDcuOS0xMy45YzQuNi03LjUgMi4xLTE3LjMtNS41LTIxLjd6XCIgLz5cbiAgICAgICAgPC9JY29uQmFzZT5cbiAgICAgICIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHJldHVybiBhIDwgYiA/IC0xIDogYSA+IGIgPyAxIDogYSA+PSBiID8gMCA6IE5hTjtcbn1cbiIsICJpbXBvcnQgYXNjZW5kaW5nIGZyb20gXCIuL2FzY2VuZGluZy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihmKSB7XG4gIGxldCBkZWx0YSA9IGY7XG4gIGxldCBjb21wYXJlID0gZjtcblxuICBpZiAoZi5sZW5ndGggPT09IDEpIHtcbiAgICBkZWx0YSA9IChkLCB4KSA9PiBmKGQpIC0geDtcbiAgICBjb21wYXJlID0gYXNjZW5kaW5nQ29tcGFyYXRvcihmKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxlZnQoYSwgeCwgbG8sIGhpKSB7XG4gICAgaWYgKGxvID09IG51bGwpIGxvID0gMDtcbiAgICBpZiAoaGkgPT0gbnVsbCkgaGkgPSBhLmxlbmd0aDtcbiAgICB3aGlsZSAobG8gPCBoaSkge1xuICAgICAgY29uc3QgbWlkID0gKGxvICsgaGkpID4+PiAxO1xuICAgICAgaWYgKGNvbXBhcmUoYVttaWRdLCB4KSA8IDApIGxvID0gbWlkICsgMTtcbiAgICAgIGVsc2UgaGkgPSBtaWQ7XG4gICAgfVxuICAgIHJldHVybiBsbztcbiAgfVxuXG4gIGZ1bmN0aW9uIHJpZ2h0KGEsIHgsIGxvLCBoaSkge1xuICAgIGlmIChsbyA9PSBudWxsKSBsbyA9IDA7XG4gICAgaWYgKGhpID09IG51bGwpIGhpID0gYS5sZW5ndGg7XG4gICAgd2hpbGUgKGxvIDwgaGkpIHtcbiAgICAgIGNvbnN0IG1pZCA9IChsbyArIGhpKSA+Pj4gMTtcbiAgICAgIGlmIChjb21wYXJlKGFbbWlkXSwgeCkgPiAwKSBoaSA9IG1pZDtcbiAgICAgIGVsc2UgbG8gPSBtaWQgKyAxO1xuICAgIH1cbiAgICByZXR1cm4gbG87XG4gIH1cblxuICBmdW5jdGlvbiBjZW50ZXIoYSwgeCwgbG8sIGhpKSB7XG4gICAgaWYgKGxvID09IG51bGwpIGxvID0gMDtcbiAgICBpZiAoaGkgPT0gbnVsbCkgaGkgPSBhLmxlbmd0aDtcbiAgICBjb25zdCBpID0gbGVmdChhLCB4LCBsbywgaGkgLSAxKTtcbiAgICByZXR1cm4gaSA+IGxvICYmIGRlbHRhKGFbaSAtIDFdLCB4KSA+IC1kZWx0YShhW2ldLCB4KSA/IGkgLSAxIDogaTtcbiAgfVxuXG4gIHJldHVybiB7bGVmdCwgY2VudGVyLCByaWdodH07XG59XG5cbmZ1bmN0aW9uIGFzY2VuZGluZ0NvbXBhcmF0b3IoZikge1xuICByZXR1cm4gKGQsIHgpID0+IGFzY2VuZGluZyhmKGQpLCB4KTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiB4ID09PSBudWxsID8gTmFOIDogK3g7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogbnVtYmVycyh2YWx1ZXMsIHZhbHVlb2YpIHtcbiAgaWYgKHZhbHVlb2YgPT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgKHZhbHVlID0gK3ZhbHVlKSA+PSB2YWx1ZSkge1xuICAgICAgICB5aWVsZCB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGV0IGluZGV4ID0gLTE7XG4gICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBpZiAoKHZhbHVlID0gdmFsdWVvZih2YWx1ZSwgKytpbmRleCwgdmFsdWVzKSkgIT0gbnVsbCAmJiAodmFsdWUgPSArdmFsdWUpID49IHZhbHVlKSB7XG4gICAgICAgIHlpZWxkIHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwgImltcG9ydCBhc2NlbmRpbmcgZnJvbSBcIi4vYXNjZW5kaW5nLmpzXCI7XG5pbXBvcnQgYmlzZWN0b3IgZnJvbSBcIi4vYmlzZWN0b3IuanNcIjtcbmltcG9ydCBudW1iZXIgZnJvbSBcIi4vbnVtYmVyLmpzXCI7XG5cbmNvbnN0IGFzY2VuZGluZ0Jpc2VjdCA9IGJpc2VjdG9yKGFzY2VuZGluZyk7XG5leHBvcnQgY29uc3QgYmlzZWN0UmlnaHQgPSBhc2NlbmRpbmdCaXNlY3QucmlnaHQ7XG5leHBvcnQgY29uc3QgYmlzZWN0TGVmdCA9IGFzY2VuZGluZ0Jpc2VjdC5sZWZ0O1xuZXhwb3J0IGNvbnN0IGJpc2VjdENlbnRlciA9IGJpc2VjdG9yKG51bWJlcikuY2VudGVyO1xuZXhwb3J0IGRlZmF1bHQgYmlzZWN0UmlnaHQ7XG4iLCAidmFyIGUxMCA9IE1hdGguc3FydCg1MCksXG4gICAgZTUgPSBNYXRoLnNxcnQoMTApLFxuICAgIGUyID0gTWF0aC5zcXJ0KDIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzdGFydCwgc3RvcCwgY291bnQpIHtcbiAgdmFyIHJldmVyc2UsXG4gICAgICBpID0gLTEsXG4gICAgICBuLFxuICAgICAgdGlja3MsXG4gICAgICBzdGVwO1xuXG4gIHN0b3AgPSArc3RvcCwgc3RhcnQgPSArc3RhcnQsIGNvdW50ID0gK2NvdW50O1xuICBpZiAoc3RhcnQgPT09IHN0b3AgJiYgY291bnQgPiAwKSByZXR1cm4gW3N0YXJ0XTtcbiAgaWYgKHJldmVyc2UgPSBzdG9wIDwgc3RhcnQpIG4gPSBzdGFydCwgc3RhcnQgPSBzdG9wLCBzdG9wID0gbjtcbiAgaWYgKChzdGVwID0gdGlja0luY3JlbWVudChzdGFydCwgc3RvcCwgY291bnQpKSA9PT0gMCB8fCAhaXNGaW5pdGUoc3RlcCkpIHJldHVybiBbXTtcblxuICBpZiAoc3RlcCA+IDApIHtcbiAgICBsZXQgcjAgPSBNYXRoLnJvdW5kKHN0YXJ0IC8gc3RlcCksIHIxID0gTWF0aC5yb3VuZChzdG9wIC8gc3RlcCk7XG4gICAgaWYgKHIwICogc3RlcCA8IHN0YXJ0KSArK3IwO1xuICAgIGlmIChyMSAqIHN0ZXAgPiBzdG9wKSAtLXIxO1xuICAgIHRpY2tzID0gbmV3IEFycmF5KG4gPSByMSAtIHIwICsgMSk7XG4gICAgd2hpbGUgKCsraSA8IG4pIHRpY2tzW2ldID0gKHIwICsgaSkgKiBzdGVwO1xuICB9IGVsc2Uge1xuICAgIHN0ZXAgPSAtc3RlcDtcbiAgICBsZXQgcjAgPSBNYXRoLnJvdW5kKHN0YXJ0ICogc3RlcCksIHIxID0gTWF0aC5yb3VuZChzdG9wICogc3RlcCk7XG4gICAgaWYgKHIwIC8gc3RlcCA8IHN0YXJ0KSArK3IwO1xuICAgIGlmIChyMSAvIHN0ZXAgPiBzdG9wKSAtLXIxO1xuICAgIHRpY2tzID0gbmV3IEFycmF5KG4gPSByMSAtIHIwICsgMSk7XG4gICAgd2hpbGUgKCsraSA8IG4pIHRpY2tzW2ldID0gKHIwICsgaSkgLyBzdGVwO1xuICB9XG5cbiAgaWYgKHJldmVyc2UpIHRpY2tzLnJldmVyc2UoKTtcblxuICByZXR1cm4gdGlja3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aWNrSW5jcmVtZW50KHN0YXJ0LCBzdG9wLCBjb3VudCkge1xuICB2YXIgc3RlcCA9IChzdG9wIC0gc3RhcnQpIC8gTWF0aC5tYXgoMCwgY291bnQpLFxuICAgICAgcG93ZXIgPSBNYXRoLmZsb29yKE1hdGgubG9nKHN0ZXApIC8gTWF0aC5MTjEwKSxcbiAgICAgIGVycm9yID0gc3RlcCAvIE1hdGgucG93KDEwLCBwb3dlcik7XG4gIHJldHVybiBwb3dlciA+PSAwXG4gICAgICA/IChlcnJvciA+PSBlMTAgPyAxMCA6IGVycm9yID49IGU1ID8gNSA6IGVycm9yID49IGUyID8gMiA6IDEpICogTWF0aC5wb3coMTAsIHBvd2VyKVxuICAgICAgOiAtTWF0aC5wb3coMTAsIC1wb3dlcikgLyAoZXJyb3IgPj0gZTEwID8gMTAgOiBlcnJvciA+PSBlNSA/IDUgOiBlcnJvciA+PSBlMiA/IDIgOiAxKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRpY2tTdGVwKHN0YXJ0LCBzdG9wLCBjb3VudCkge1xuICB2YXIgc3RlcDAgPSBNYXRoLmFicyhzdG9wIC0gc3RhcnQpIC8gTWF0aC5tYXgoMCwgY291bnQpLFxuICAgICAgc3RlcDEgPSBNYXRoLnBvdygxMCwgTWF0aC5mbG9vcihNYXRoLmxvZyhzdGVwMCkgLyBNYXRoLkxOMTApKSxcbiAgICAgIGVycm9yID0gc3RlcDAgLyBzdGVwMTtcbiAgaWYgKGVycm9yID49IGUxMCkgc3RlcDEgKj0gMTA7XG4gIGVsc2UgaWYgKGVycm9yID49IGU1KSBzdGVwMSAqPSA1O1xuICBlbHNlIGlmIChlcnJvciA+PSBlMikgc3RlcDEgKj0gMjtcbiAgcmV0dXJuIHN0b3AgPCBzdGFydCA/IC1zdGVwMSA6IHN0ZXAxO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1heCh2YWx1ZXMsIHZhbHVlb2YpIHtcbiAgbGV0IG1heDtcbiAgaWYgKHZhbHVlb2YgPT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbFxuICAgICAgICAgICYmIChtYXggPCB2YWx1ZSB8fCAobWF4ID09PSB1bmRlZmluZWQgJiYgdmFsdWUgPj0gdmFsdWUpKSkge1xuICAgICAgICBtYXggPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGV0IGluZGV4ID0gLTE7XG4gICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBpZiAoKHZhbHVlID0gdmFsdWVvZih2YWx1ZSwgKytpbmRleCwgdmFsdWVzKSkgIT0gbnVsbFxuICAgICAgICAgICYmIChtYXggPCB2YWx1ZSB8fCAobWF4ID09PSB1bmRlZmluZWQgJiYgdmFsdWUgPj0gdmFsdWUpKSkge1xuICAgICAgICBtYXggPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1heDtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzdGFydCwgc3RvcCwgc3RlcCkge1xuICBzdGFydCA9ICtzdGFydCwgc3RvcCA9ICtzdG9wLCBzdGVwID0gKG4gPSBhcmd1bWVudHMubGVuZ3RoKSA8IDIgPyAoc3RvcCA9IHN0YXJ0LCBzdGFydCA9IDAsIDEpIDogbiA8IDMgPyAxIDogK3N0ZXA7XG5cbiAgdmFyIGkgPSAtMSxcbiAgICAgIG4gPSBNYXRoLm1heCgwLCBNYXRoLmNlaWwoKHN0b3AgLSBzdGFydCkgLyBzdGVwKSkgfCAwLFxuICAgICAgcmFuZ2UgPSBuZXcgQXJyYXkobik7XG5cbiAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICByYW5nZVtpXSA9IHN0YXJ0ICsgaSAqIHN0ZXA7XG4gIH1cblxuICByZXR1cm4gcmFuZ2U7XG59XG4iLCAidmFyIG5vb3AgPSB7dmFsdWU6ICgpID0+IHt9fTtcblxuZnVuY3Rpb24gZGlzcGF0Y2goKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gYXJndW1lbnRzLmxlbmd0aCwgXyA9IHt9LCB0OyBpIDwgbjsgKytpKSB7XG4gICAgaWYgKCEodCA9IGFyZ3VtZW50c1tpXSArIFwiXCIpIHx8ICh0IGluIF8pIHx8IC9bXFxzLl0vLnRlc3QodCkpIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgdHlwZTogXCIgKyB0KTtcbiAgICBfW3RdID0gW107XG4gIH1cbiAgcmV0dXJuIG5ldyBEaXNwYXRjaChfKTtcbn1cblxuZnVuY3Rpb24gRGlzcGF0Y2goXykge1xuICB0aGlzLl8gPSBfO1xufVxuXG5mdW5jdGlvbiBwYXJzZVR5cGVuYW1lcyh0eXBlbmFtZXMsIHR5cGVzKSB7XG4gIHJldHVybiB0eXBlbmFtZXMudHJpbSgpLnNwbGl0KC9efFxccysvKS5tYXAoZnVuY3Rpb24odCkge1xuICAgIHZhciBuYW1lID0gXCJcIiwgaSA9IHQuaW5kZXhPZihcIi5cIik7XG4gICAgaWYgKGkgPj0gMCkgbmFtZSA9IHQuc2xpY2UoaSArIDEpLCB0ID0gdC5zbGljZSgwLCBpKTtcbiAgICBpZiAodCAmJiAhdHlwZXMuaGFzT3duUHJvcGVydHkodCkpIHRocm93IG5ldyBFcnJvcihcInVua25vd24gdHlwZTogXCIgKyB0KTtcbiAgICByZXR1cm4ge3R5cGU6IHQsIG5hbWU6IG5hbWV9O1xuICB9KTtcbn1cblxuRGlzcGF0Y2gucHJvdG90eXBlID0gZGlzcGF0Y2gucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogRGlzcGF0Y2gsXG4gIG9uOiBmdW5jdGlvbih0eXBlbmFtZSwgY2FsbGJhY2spIHtcbiAgICB2YXIgXyA9IHRoaXMuXyxcbiAgICAgICAgVCA9IHBhcnNlVHlwZW5hbWVzKHR5cGVuYW1lICsgXCJcIiwgXyksXG4gICAgICAgIHQsXG4gICAgICAgIGkgPSAtMSxcbiAgICAgICAgbiA9IFQubGVuZ3RoO1xuXG4gICAgLy8gSWYgbm8gY2FsbGJhY2sgd2FzIHNwZWNpZmllZCwgcmV0dXJuIHRoZSBjYWxsYmFjayBvZiB0aGUgZ2l2ZW4gdHlwZSBhbmQgbmFtZS5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgIHdoaWxlICgrK2kgPCBuKSBpZiAoKHQgPSAodHlwZW5hbWUgPSBUW2ldKS50eXBlKSAmJiAodCA9IGdldChfW3RdLCB0eXBlbmFtZS5uYW1lKSkpIHJldHVybiB0O1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElmIGEgdHlwZSB3YXMgc3BlY2lmaWVkLCBzZXQgdGhlIGNhbGxiYWNrIGZvciB0aGUgZ2l2ZW4gdHlwZSBhbmQgbmFtZS5cbiAgICAvLyBPdGhlcndpc2UsIGlmIGEgbnVsbCBjYWxsYmFjayB3YXMgc3BlY2lmaWVkLCByZW1vdmUgY2FsbGJhY2tzIG9mIHRoZSBnaXZlbiBuYW1lLlxuICAgIGlmIChjYWxsYmFjayAhPSBudWxsICYmIHR5cGVvZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGNhbGxiYWNrOiBcIiArIGNhbGxiYWNrKTtcbiAgICB3aGlsZSAoKytpIDwgbikge1xuICAgICAgaWYgKHQgPSAodHlwZW5hbWUgPSBUW2ldKS50eXBlKSBfW3RdID0gc2V0KF9bdF0sIHR5cGVuYW1lLm5hbWUsIGNhbGxiYWNrKTtcbiAgICAgIGVsc2UgaWYgKGNhbGxiYWNrID09IG51bGwpIGZvciAodCBpbiBfKSBfW3RdID0gc2V0KF9bdF0sIHR5cGVuYW1lLm5hbWUsIG51bGwpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBjb3B5OiBmdW5jdGlvbigpIHtcbiAgICB2YXIgY29weSA9IHt9LCBfID0gdGhpcy5fO1xuICAgIGZvciAodmFyIHQgaW4gXykgY29weVt0XSA9IF9bdF0uc2xpY2UoKTtcbiAgICByZXR1cm4gbmV3IERpc3BhdGNoKGNvcHkpO1xuICB9LFxuICBjYWxsOiBmdW5jdGlvbih0eXBlLCB0aGF0KSB7XG4gICAgaWYgKChuID0gYXJndW1lbnRzLmxlbmd0aCAtIDIpID4gMCkgZm9yICh2YXIgYXJncyA9IG5ldyBBcnJheShuKSwgaSA9IDAsIG4sIHQ7IGkgPCBuOyArK2kpIGFyZ3NbaV0gPSBhcmd1bWVudHNbaSArIDJdO1xuICAgIGlmICghdGhpcy5fLmhhc093blByb3BlcnR5KHR5cGUpKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIHR5cGU6IFwiICsgdHlwZSk7XG4gICAgZm9yICh0ID0gdGhpcy5fW3R5cGVdLCBpID0gMCwgbiA9IHQubGVuZ3RoOyBpIDwgbjsgKytpKSB0W2ldLnZhbHVlLmFwcGx5KHRoYXQsIGFyZ3MpO1xuICB9LFxuICBhcHBseTogZnVuY3Rpb24odHlwZSwgdGhhdCwgYXJncykge1xuICAgIGlmICghdGhpcy5fLmhhc093blByb3BlcnR5KHR5cGUpKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIHR5cGU6IFwiICsgdHlwZSk7XG4gICAgZm9yICh2YXIgdCA9IHRoaXMuX1t0eXBlXSwgaSA9IDAsIG4gPSB0Lmxlbmd0aDsgaSA8IG47ICsraSkgdFtpXS52YWx1ZS5hcHBseSh0aGF0LCBhcmdzKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gZ2V0KHR5cGUsIG5hbWUpIHtcbiAgZm9yICh2YXIgaSA9IDAsIG4gPSB0eXBlLmxlbmd0aCwgYzsgaSA8IG47ICsraSkge1xuICAgIGlmICgoYyA9IHR5cGVbaV0pLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIHJldHVybiBjLnZhbHVlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzZXQodHlwZSwgbmFtZSwgY2FsbGJhY2spIHtcbiAgZm9yICh2YXIgaSA9IDAsIG4gPSB0eXBlLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgIGlmICh0eXBlW2ldLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIHR5cGVbaV0gPSBub29wLCB0eXBlID0gdHlwZS5zbGljZSgwLCBpKS5jb25jYXQodHlwZS5zbGljZShpICsgMSkpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChjYWxsYmFjayAhPSBudWxsKSB0eXBlLnB1c2goe25hbWU6IG5hbWUsIHZhbHVlOiBjYWxsYmFja30pO1xuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGlzcGF0Y2g7XG4iLCAiZXhwb3J0IHZhciB4aHRtbCA9IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHN2ZzogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICB4aHRtbDogeGh0bWwsXG4gIHhsaW5rOiBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcbiAgeG1sOiBcImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZVwiLFxuICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zL1wiXG59O1xuIiwgImltcG9ydCBuYW1lc3BhY2VzIGZyb20gXCIuL25hbWVzcGFjZXMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSkge1xuICB2YXIgcHJlZml4ID0gbmFtZSArPSBcIlwiLCBpID0gcHJlZml4LmluZGV4T2YoXCI6XCIpO1xuICBpZiAoaSA+PSAwICYmIChwcmVmaXggPSBuYW1lLnNsaWNlKDAsIGkpKSAhPT0gXCJ4bWxuc1wiKSBuYW1lID0gbmFtZS5zbGljZShpICsgMSk7XG4gIHJldHVybiBuYW1lc3BhY2VzLmhhc093blByb3BlcnR5KHByZWZpeCkgPyB7c3BhY2U6IG5hbWVzcGFjZXNbcHJlZml4XSwgbG9jYWw6IG5hbWV9IDogbmFtZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbn1cbiIsICJpbXBvcnQgbmFtZXNwYWNlIGZyb20gXCIuL25hbWVzcGFjZS5qc1wiO1xuaW1wb3J0IHt4aHRtbH0gZnJvbSBcIi4vbmFtZXNwYWNlcy5qc1wiO1xuXG5mdW5jdGlvbiBjcmVhdG9ySW5oZXJpdChuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgZG9jdW1lbnQgPSB0aGlzLm93bmVyRG9jdW1lbnQsXG4gICAgICAgIHVyaSA9IHRoaXMubmFtZXNwYWNlVVJJO1xuICAgIHJldHVybiB1cmkgPT09IHhodG1sICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkkgPT09IHhodG1sXG4gICAgICAgID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKVxuICAgICAgICA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh1cmksIG5hbWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdG9yRml4ZWQoZnVsbG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGZ1bGxuYW1lID0gbmFtZXNwYWNlKG5hbWUpO1xuICByZXR1cm4gKGZ1bGxuYW1lLmxvY2FsXG4gICAgICA/IGNyZWF0b3JGaXhlZFxuICAgICAgOiBjcmVhdG9ySW5oZXJpdCkoZnVsbG5hbWUpO1xufVxuIiwgImZ1bmN0aW9uIG5vbmUoKSB7fVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZWxlY3Rvcikge1xuICByZXR1cm4gc2VsZWN0b3IgPT0gbnVsbCA/IG5vbmUgOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTtcbiAgfTtcbn1cbiIsICJpbXBvcnQge1NlbGVjdGlvbn0gZnJvbSBcIi4vaW5kZXguanNcIjtcbmltcG9ydCBzZWxlY3RvciBmcm9tIFwiLi4vc2VsZWN0b3IuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0KSB7XG4gIGlmICh0eXBlb2Ygc2VsZWN0ICE9PSBcImZ1bmN0aW9uXCIpIHNlbGVjdCA9IHNlbGVjdG9yKHNlbGVjdCk7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBtID0gZ3JvdXBzLmxlbmd0aCwgc3ViZ3JvdXBzID0gbmV3IEFycmF5KG0pLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBzdWJncm91cCA9IHN1Ymdyb3Vwc1tqXSA9IG5ldyBBcnJheShuKSwgbm9kZSwgc3Vibm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmICgobm9kZSA9IGdyb3VwW2ldKSAmJiAoc3Vibm9kZSA9IHNlbGVjdC5jYWxsKG5vZGUsIG5vZGUuX19kYXRhX18sIGksIGdyb3VwKSkpIHtcbiAgICAgICAgaWYgKFwiX19kYXRhX19cIiBpbiBub2RlKSBzdWJub2RlLl9fZGF0YV9fID0gbm9kZS5fX2RhdGFfXztcbiAgICAgICAgc3ViZ3JvdXBbaV0gPSBzdWJub2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHN1Ymdyb3VwcywgdGhpcy5fcGFyZW50cyk7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gdHlwZW9mIHggPT09IFwib2JqZWN0XCIgJiYgXCJsZW5ndGhcIiBpbiB4XG4gICAgPyB4IC8vIEFycmF5LCBUeXBlZEFycmF5LCBOb2RlTGlzdCwgYXJyYXktbGlrZVxuICAgIDogQXJyYXkuZnJvbSh4KTsgLy8gTWFwLCBTZXQsIGl0ZXJhYmxlLCBzdHJpbmcsIG9yIGFueXRoaW5nIGVsc2Vcbn1cbiIsICJmdW5jdGlvbiBlbXB0eSgpIHtcbiAgcmV0dXJuIFtdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZWxlY3Rvcikge1xuICByZXR1cm4gc2VsZWN0b3IgPT0gbnVsbCA/IGVtcHR5IDogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XG4gIH07XG59XG4iLCAiaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4LmpzXCI7XG5pbXBvcnQgYXJyYXkgZnJvbSBcIi4uL2FycmF5LmpzXCI7XG5pbXBvcnQgc2VsZWN0b3JBbGwgZnJvbSBcIi4uL3NlbGVjdG9yQWxsLmpzXCI7XG5cbmZ1bmN0aW9uIGFycmF5QWxsKHNlbGVjdCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGdyb3VwID0gc2VsZWN0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgcmV0dXJuIGdyb3VwID09IG51bGwgPyBbXSA6IGFycmF5KGdyb3VwKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0KSB7XG4gIGlmICh0eXBlb2Ygc2VsZWN0ID09PSBcImZ1bmN0aW9uXCIpIHNlbGVjdCA9IGFycmF5QWxsKHNlbGVjdCk7XG4gIGVsc2Ugc2VsZWN0ID0gc2VsZWN0b3JBbGwoc2VsZWN0KTtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBzdWJncm91cHMgPSBbXSwgcGFyZW50cyA9IFtdLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgICBzdWJncm91cHMucHVzaChzZWxlY3QuY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCkpO1xuICAgICAgICBwYXJlbnRzLnB1c2gobm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24oc3ViZ3JvdXBzLCBwYXJlbnRzKTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZWxlY3Rvcikge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMubWF0Y2hlcyhzZWxlY3Rvcik7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGlsZE1hdGNoZXIoc2VsZWN0b3IpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5tYXRjaGVzKHNlbGVjdG9yKTtcbiAgfTtcbn1cblxuIiwgImltcG9ydCB7Y2hpbGRNYXRjaGVyfSBmcm9tIFwiLi4vbWF0Y2hlci5qc1wiO1xuXG52YXIgZmluZCA9IEFycmF5LnByb3RvdHlwZS5maW5kO1xuXG5mdW5jdGlvbiBjaGlsZEZpbmQobWF0Y2gpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBmaW5kLmNhbGwodGhpcy5jaGlsZHJlbiwgbWF0Y2gpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjaGlsZEZpcnN0KCkge1xuICByZXR1cm4gdGhpcy5maXJzdEVsZW1lbnRDaGlsZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obWF0Y2gpIHtcbiAgcmV0dXJuIHRoaXMuc2VsZWN0KG1hdGNoID09IG51bGwgPyBjaGlsZEZpcnN0XG4gICAgICA6IGNoaWxkRmluZCh0eXBlb2YgbWF0Y2ggPT09IFwiZnVuY3Rpb25cIiA/IG1hdGNoIDogY2hpbGRNYXRjaGVyKG1hdGNoKSkpO1xufVxuIiwgImltcG9ydCB7Y2hpbGRNYXRjaGVyfSBmcm9tIFwiLi4vbWF0Y2hlci5qc1wiO1xuXG52YXIgZmlsdGVyID0gQXJyYXkucHJvdG90eXBlLmZpbHRlcjtcblxuZnVuY3Rpb24gY2hpbGRyZW4oKSB7XG4gIHJldHVybiB0aGlzLmNoaWxkcmVuO1xufVxuXG5mdW5jdGlvbiBjaGlsZHJlbkZpbHRlcihtYXRjaCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGZpbHRlci5jYWxsKHRoaXMuY2hpbGRyZW4sIG1hdGNoKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obWF0Y2gpIHtcbiAgcmV0dXJuIHRoaXMuc2VsZWN0QWxsKG1hdGNoID09IG51bGwgPyBjaGlsZHJlblxuICAgICAgOiBjaGlsZHJlbkZpbHRlcih0eXBlb2YgbWF0Y2ggPT09IFwiZnVuY3Rpb25cIiA/IG1hdGNoIDogY2hpbGRNYXRjaGVyKG1hdGNoKSkpO1xufVxuIiwgImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuaW1wb3J0IG1hdGNoZXIgZnJvbSBcIi4uL21hdGNoZXIuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obWF0Y2gpIHtcbiAgaWYgKHR5cGVvZiBtYXRjaCAhPT0gXCJmdW5jdGlvblwiKSBtYXRjaCA9IG1hdGNoZXIobWF0Y2gpO1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIHN1Ymdyb3VwcyA9IG5ldyBBcnJheShtKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgc3ViZ3JvdXAgPSBzdWJncm91cHNbal0gPSBbXSwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmICgobm9kZSA9IGdyb3VwW2ldKSAmJiBtYXRjaC5jYWxsKG5vZGUsIG5vZGUuX19kYXRhX18sIGksIGdyb3VwKSkge1xuICAgICAgICBzdWJncm91cC5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHN1Ymdyb3VwcywgdGhpcy5fcGFyZW50cyk7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odXBkYXRlKSB7XG4gIHJldHVybiBuZXcgQXJyYXkodXBkYXRlLmxlbmd0aCk7XG59XG4iLCAiaW1wb3J0IHNwYXJzZSBmcm9tIFwiLi9zcGFyc2UuanNcIjtcbmltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24odGhpcy5fZW50ZXIgfHwgdGhpcy5fZ3JvdXBzLm1hcChzcGFyc2UpLCB0aGlzLl9wYXJlbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEVudGVyTm9kZShwYXJlbnQsIGRhdHVtKSB7XG4gIHRoaXMub3duZXJEb2N1bWVudCA9IHBhcmVudC5vd25lckRvY3VtZW50O1xuICB0aGlzLm5hbWVzcGFjZVVSSSA9IHBhcmVudC5uYW1lc3BhY2VVUkk7XG4gIHRoaXMuX25leHQgPSBudWxsO1xuICB0aGlzLl9wYXJlbnQgPSBwYXJlbnQ7XG4gIHRoaXMuX19kYXRhX18gPSBkYXR1bTtcbn1cblxuRW50ZXJOb2RlLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IEVudGVyTm9kZSxcbiAgYXBwZW5kQ2hpbGQ6IGZ1bmN0aW9uKGNoaWxkKSB7IHJldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKGNoaWxkLCB0aGlzLl9uZXh0KTsgfSxcbiAgaW5zZXJ0QmVmb3JlOiBmdW5jdGlvbihjaGlsZCwgbmV4dCkgeyByZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZShjaGlsZCwgbmV4dCk7IH0sXG4gIHF1ZXJ5U2VsZWN0b3I6IGZ1bmN0aW9uKHNlbGVjdG9yKSB7IHJldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7IH0sXG4gIHF1ZXJ5U2VsZWN0b3JBbGw6IGZ1bmN0aW9uKHNlbGVjdG9yKSB7IHJldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7IH1cbn07XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iLCAiaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4LmpzXCI7XG5pbXBvcnQge0VudGVyTm9kZX0gZnJvbSBcIi4vZW50ZXIuanNcIjtcbmltcG9ydCBhcnJheSBmcm9tIFwiLi4vYXJyYXkuanNcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi4vY29uc3RhbnQuanNcIjtcblxuZnVuY3Rpb24gYmluZEluZGV4KHBhcmVudCwgZ3JvdXAsIGVudGVyLCB1cGRhdGUsIGV4aXQsIGRhdGEpIHtcbiAgdmFyIGkgPSAwLFxuICAgICAgbm9kZSxcbiAgICAgIGdyb3VwTGVuZ3RoID0gZ3JvdXAubGVuZ3RoLFxuICAgICAgZGF0YUxlbmd0aCA9IGRhdGEubGVuZ3RoO1xuXG4gIC8vIFB1dCBhbnkgbm9uLW51bGwgbm9kZXMgdGhhdCBmaXQgaW50byB1cGRhdGUuXG4gIC8vIFB1dCBhbnkgbnVsbCBub2RlcyBpbnRvIGVudGVyLlxuICAvLyBQdXQgYW55IHJlbWFpbmluZyBkYXRhIGludG8gZW50ZXIuXG4gIGZvciAoOyBpIDwgZGF0YUxlbmd0aDsgKytpKSB7XG4gICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgbm9kZS5fX2RhdGFfXyA9IGRhdGFbaV07XG4gICAgICB1cGRhdGVbaV0gPSBub2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbnRlcltpXSA9IG5ldyBFbnRlck5vZGUocGFyZW50LCBkYXRhW2ldKTtcbiAgICB9XG4gIH1cblxuICAvLyBQdXQgYW55IG5vbi1udWxsIG5vZGVzIHRoYXQgZG9uXHUyMDE5dCBmaXQgaW50byBleGl0LlxuICBmb3IgKDsgaSA8IGdyb3VwTGVuZ3RoOyArK2kpIHtcbiAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB7XG4gICAgICBleGl0W2ldID0gbm9kZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYmluZEtleShwYXJlbnQsIGdyb3VwLCBlbnRlciwgdXBkYXRlLCBleGl0LCBkYXRhLCBrZXkpIHtcbiAgdmFyIGksXG4gICAgICBub2RlLFxuICAgICAgbm9kZUJ5S2V5VmFsdWUgPSBuZXcgTWFwLFxuICAgICAgZ3JvdXBMZW5ndGggPSBncm91cC5sZW5ndGgsXG4gICAgICBkYXRhTGVuZ3RoID0gZGF0YS5sZW5ndGgsXG4gICAgICBrZXlWYWx1ZXMgPSBuZXcgQXJyYXkoZ3JvdXBMZW5ndGgpLFxuICAgICAga2V5VmFsdWU7XG5cbiAgLy8gQ29tcHV0ZSB0aGUga2V5IGZvciBlYWNoIG5vZGUuXG4gIC8vIElmIG11bHRpcGxlIG5vZGVzIGhhdmUgdGhlIHNhbWUga2V5LCB0aGUgZHVwbGljYXRlcyBhcmUgYWRkZWQgdG8gZXhpdC5cbiAgZm9yIChpID0gMDsgaSA8IGdyb3VwTGVuZ3RoOyArK2kpIHtcbiAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB7XG4gICAgICBrZXlWYWx1ZXNbaV0gPSBrZXlWYWx1ZSA9IGtleS5jYWxsKG5vZGUsIG5vZGUuX19kYXRhX18sIGksIGdyb3VwKSArIFwiXCI7XG4gICAgICBpZiAobm9kZUJ5S2V5VmFsdWUuaGFzKGtleVZhbHVlKSkge1xuICAgICAgICBleGl0W2ldID0gbm9kZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVCeUtleVZhbHVlLnNldChrZXlWYWx1ZSwgbm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ29tcHV0ZSB0aGUga2V5IGZvciBlYWNoIGRhdHVtLlxuICAvLyBJZiB0aGVyZSBhIG5vZGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMga2V5LCBqb2luIGFuZCBhZGQgaXQgdG8gdXBkYXRlLlxuICAvLyBJZiB0aGVyZSBpcyBub3QgKG9yIHRoZSBrZXkgaXMgYSBkdXBsaWNhdGUpLCBhZGQgaXQgdG8gZW50ZXIuXG4gIGZvciAoaSA9IDA7IGkgPCBkYXRhTGVuZ3RoOyArK2kpIHtcbiAgICBrZXlWYWx1ZSA9IGtleS5jYWxsKHBhcmVudCwgZGF0YVtpXSwgaSwgZGF0YSkgKyBcIlwiO1xuICAgIGlmIChub2RlID0gbm9kZUJ5S2V5VmFsdWUuZ2V0KGtleVZhbHVlKSkge1xuICAgICAgdXBkYXRlW2ldID0gbm9kZTtcbiAgICAgIG5vZGUuX19kYXRhX18gPSBkYXRhW2ldO1xuICAgICAgbm9kZUJ5S2V5VmFsdWUuZGVsZXRlKGtleVZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW50ZXJbaV0gPSBuZXcgRW50ZXJOb2RlKHBhcmVudCwgZGF0YVtpXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIGFueSByZW1haW5pbmcgbm9kZXMgdGhhdCB3ZXJlIG5vdCBib3VuZCB0byBkYXRhIHRvIGV4aXQuXG4gIGZvciAoaSA9IDA7IGkgPCBncm91cExlbmd0aDsgKytpKSB7XG4gICAgaWYgKChub2RlID0gZ3JvdXBbaV0pICYmIChub2RlQnlLZXlWYWx1ZS5nZXQoa2V5VmFsdWVzW2ldKSA9PT0gbm9kZSkpIHtcbiAgICAgIGV4aXRbaV0gPSBub2RlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBkYXR1bShub2RlKSB7XG4gIHJldHVybiBub2RlLl9fZGF0YV9fO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIEFycmF5LmZyb20odGhpcywgZGF0dW0pO1xuXG4gIHZhciBiaW5kID0ga2V5ID8gYmluZEtleSA6IGJpbmRJbmRleCxcbiAgICAgIHBhcmVudHMgPSB0aGlzLl9wYXJlbnRzLFxuICAgICAgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzO1xuXG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdmFsdWUgPSBjb25zdGFudCh2YWx1ZSk7XG5cbiAgZm9yICh2YXIgbSA9IGdyb3Vwcy5sZW5ndGgsIHVwZGF0ZSA9IG5ldyBBcnJheShtKSwgZW50ZXIgPSBuZXcgQXJyYXkobSksIGV4aXQgPSBuZXcgQXJyYXkobSksIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgdmFyIHBhcmVudCA9IHBhcmVudHNbal0sXG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW2pdLFxuICAgICAgICBncm91cExlbmd0aCA9IGdyb3VwLmxlbmd0aCxcbiAgICAgICAgZGF0YSA9IGFycmF5KHZhbHVlLmNhbGwocGFyZW50LCBwYXJlbnQgJiYgcGFyZW50Ll9fZGF0YV9fLCBqLCBwYXJlbnRzKSksXG4gICAgICAgIGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aCxcbiAgICAgICAgZW50ZXJHcm91cCA9IGVudGVyW2pdID0gbmV3IEFycmF5KGRhdGFMZW5ndGgpLFxuICAgICAgICB1cGRhdGVHcm91cCA9IHVwZGF0ZVtqXSA9IG5ldyBBcnJheShkYXRhTGVuZ3RoKSxcbiAgICAgICAgZXhpdEdyb3VwID0gZXhpdFtqXSA9IG5ldyBBcnJheShncm91cExlbmd0aCk7XG5cbiAgICBiaW5kKHBhcmVudCwgZ3JvdXAsIGVudGVyR3JvdXAsIHVwZGF0ZUdyb3VwLCBleGl0R3JvdXAsIGRhdGEsIGtleSk7XG5cbiAgICAvLyBOb3cgY29ubmVjdCB0aGUgZW50ZXIgbm9kZXMgdG8gdGhlaXIgZm9sbG93aW5nIHVwZGF0ZSBub2RlLCBzdWNoIHRoYXRcbiAgICAvLyBhcHBlbmRDaGlsZCBjYW4gaW5zZXJ0IHRoZSBtYXRlcmlhbGl6ZWQgZW50ZXIgbm9kZSBiZWZvcmUgdGhpcyBub2RlLFxuICAgIC8vIHJhdGhlciB0aGFuIGF0IHRoZSBlbmQgb2YgdGhlIHBhcmVudCBub2RlLlxuICAgIGZvciAodmFyIGkwID0gMCwgaTEgPSAwLCBwcmV2aW91cywgbmV4dDsgaTAgPCBkYXRhTGVuZ3RoOyArK2kwKSB7XG4gICAgICBpZiAocHJldmlvdXMgPSBlbnRlckdyb3VwW2kwXSkge1xuICAgICAgICBpZiAoaTAgPj0gaTEpIGkxID0gaTAgKyAxO1xuICAgICAgICB3aGlsZSAoIShuZXh0ID0gdXBkYXRlR3JvdXBbaTFdKSAmJiArK2kxIDwgZGF0YUxlbmd0aCk7XG4gICAgICAgIHByZXZpb3VzLl9uZXh0ID0gbmV4dCB8fCBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZSA9IG5ldyBTZWxlY3Rpb24odXBkYXRlLCBwYXJlbnRzKTtcbiAgdXBkYXRlLl9lbnRlciA9IGVudGVyO1xuICB1cGRhdGUuX2V4aXQgPSBleGl0O1xuICByZXR1cm4gdXBkYXRlO1xufVxuIiwgImltcG9ydCBzcGFyc2UgZnJvbSBcIi4vc3BhcnNlLmpzXCI7XG5pbXBvcnQge1NlbGVjdGlvbn0gZnJvbSBcIi4vaW5kZXguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHRoaXMuX2V4aXQgfHwgdGhpcy5fZ3JvdXBzLm1hcChzcGFyc2UpLCB0aGlzLl9wYXJlbnRzKTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihvbmVudGVyLCBvbnVwZGF0ZSwgb25leGl0KSB7XG4gIHZhciBlbnRlciA9IHRoaXMuZW50ZXIoKSwgdXBkYXRlID0gdGhpcywgZXhpdCA9IHRoaXMuZXhpdCgpO1xuICBlbnRlciA9IHR5cGVvZiBvbmVudGVyID09PSBcImZ1bmN0aW9uXCIgPyBvbmVudGVyKGVudGVyKSA6IGVudGVyLmFwcGVuZChvbmVudGVyICsgXCJcIik7XG4gIGlmIChvbnVwZGF0ZSAhPSBudWxsKSB1cGRhdGUgPSBvbnVwZGF0ZSh1cGRhdGUpO1xuICBpZiAob25leGl0ID09IG51bGwpIGV4aXQucmVtb3ZlKCk7IGVsc2Ugb25leGl0KGV4aXQpO1xuICByZXR1cm4gZW50ZXIgJiYgdXBkYXRlID8gZW50ZXIubWVyZ2UodXBkYXRlKS5vcmRlcigpIDogdXBkYXRlO1xufVxuIiwgImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZWxlY3Rpb24pIHtcbiAgaWYgKCEoc2VsZWN0aW9uIGluc3RhbmNlb2YgU2VsZWN0aW9uKSkgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBtZXJnZVwiKTtcblxuICBmb3IgKHZhciBncm91cHMwID0gdGhpcy5fZ3JvdXBzLCBncm91cHMxID0gc2VsZWN0aW9uLl9ncm91cHMsIG0wID0gZ3JvdXBzMC5sZW5ndGgsIG0xID0gZ3JvdXBzMS5sZW5ndGgsIG0gPSBNYXRoLm1pbihtMCwgbTEpLCBtZXJnZXMgPSBuZXcgQXJyYXkobTApLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwMCA9IGdyb3VwczBbal0sIGdyb3VwMSA9IGdyb3VwczFbal0sIG4gPSBncm91cDAubGVuZ3RoLCBtZXJnZSA9IG1lcmdlc1tqXSA9IG5ldyBBcnJheShuKSwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXAwW2ldIHx8IGdyb3VwMVtpXSkge1xuICAgICAgICBtZXJnZVtpXSA9IG5vZGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yICg7IGogPCBtMDsgKytqKSB7XG4gICAgbWVyZ2VzW2pdID0gZ3JvdXBzMFtqXTtcbiAgfVxuXG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKG1lcmdlcywgdGhpcy5fcGFyZW50cyk7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBqID0gLTEsIG0gPSBncm91cHMubGVuZ3RoOyArK2ogPCBtOykge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBpID0gZ3JvdXAubGVuZ3RoIC0gMSwgbmV4dCA9IGdyb3VwW2ldLCBub2RlOyAtLWkgPj0gMDspIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgICAgaWYgKG5leHQgJiYgbm9kZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuZXh0KSBeIDQpIG5leHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgbmV4dCk7XG4gICAgICAgIG5leHQgPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuIiwgImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb21wYXJlKSB7XG4gIGlmICghY29tcGFyZSkgY29tcGFyZSA9IGFzY2VuZGluZztcblxuICBmdW5jdGlvbiBjb21wYXJlTm9kZShhLCBiKSB7XG4gICAgcmV0dXJuIGEgJiYgYiA/IGNvbXBhcmUoYS5fX2RhdGFfXywgYi5fX2RhdGFfXykgOiAhYSAtICFiO1xuICB9XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBtID0gZ3JvdXBzLmxlbmd0aCwgc29ydGdyb3VwcyA9IG5ldyBBcnJheShtKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgc29ydGdyb3VwID0gc29ydGdyb3Vwc1tqXSA9IG5ldyBBcnJheShuKSwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgICAgc29ydGdyb3VwW2ldID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gICAgc29ydGdyb3VwLnNvcnQoY29tcGFyZU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24oc29ydGdyb3VwcywgdGhpcy5fcGFyZW50cykub3JkZXIoKTtcbn1cblxuZnVuY3Rpb24gYXNjZW5kaW5nKGEsIGIpIHtcbiAgcmV0dXJuIGEgPCBiID8gLTEgOiBhID4gYiA/IDEgOiBhID49IGIgPyAwIDogTmFOO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgY2FsbGJhY2sgPSBhcmd1bWVudHNbMF07XG4gIGFyZ3VtZW50c1swXSA9IHRoaXM7XG4gIGNhbGxiYWNrLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gIHJldHVybiB0aGlzO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzKTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIGogPSAwLCBtID0gZ3JvdXBzLmxlbmd0aDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBpID0gMCwgbiA9IGdyb3VwLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgdmFyIG5vZGUgPSBncm91cFtpXTtcbiAgICAgIGlmIChub2RlKSByZXR1cm4gbm9kZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgbGV0IHNpemUgPSAwO1xuICBmb3IgKGNvbnN0IG5vZGUgb2YgdGhpcykgKytzaXplOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHJldHVybiBzaXplO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gIXRoaXMubm9kZSgpO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBqID0gMCwgbSA9IGdyb3Vwcy5sZW5ndGg7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgaSA9IDAsIG4gPSBncm91cC5sZW5ndGgsIG5vZGU7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIGNhbGxiYWNrLmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuIiwgImltcG9ydCBuYW1lc3BhY2UgZnJvbSBcIi4uL25hbWVzcGFjZS5qc1wiO1xuXG5mdW5jdGlvbiBhdHRyUmVtb3ZlKG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRyUmVtb3ZlTlMoZnVsbG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0ckNvbnN0YW50KG5hbWUsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJDb25zdGFudE5TKGZ1bGxuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwsIHZhbHVlKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0ckZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgaWYgKHYgPT0gbnVsbCkgdGhpcy5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgZWxzZSB0aGlzLnNldEF0dHJpYnV0ZShuYW1lLCB2KTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0ckZ1bmN0aW9uTlMoZnVsbG5hbWUsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgaWYgKHYgPT0gbnVsbCkgdGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwpO1xuICAgIGVsc2UgdGhpcy5zZXRBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwsIHYpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB2YXIgZnVsbG5hbWUgPSBuYW1lc3BhY2UobmFtZSk7XG5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdmFyIG5vZGUgPSB0aGlzLm5vZGUoKTtcbiAgICByZXR1cm4gZnVsbG5hbWUubG9jYWxcbiAgICAgICAgPyBub2RlLmdldEF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbClcbiAgICAgICAgOiBub2RlLmdldEF0dHJpYnV0ZShmdWxsbmFtZSk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5lYWNoKCh2YWx1ZSA9PSBudWxsXG4gICAgICA/IChmdWxsbmFtZS5sb2NhbCA/IGF0dHJSZW1vdmVOUyA6IGF0dHJSZW1vdmUpIDogKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICA/IChmdWxsbmFtZS5sb2NhbCA/IGF0dHJGdW5jdGlvbk5TIDogYXR0ckZ1bmN0aW9uKVxuICAgICAgOiAoZnVsbG5hbWUubG9jYWwgPyBhdHRyQ29uc3RhbnROUyA6IGF0dHJDb25zdGFudCkpKShmdWxsbmFtZSwgdmFsdWUpKTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihub2RlKSB7XG4gIHJldHVybiAobm9kZS5vd25lckRvY3VtZW50ICYmIG5vZGUub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgLy8gbm9kZSBpcyBhIE5vZGVcbiAgICAgIHx8IChub2RlLmRvY3VtZW50ICYmIG5vZGUpIC8vIG5vZGUgaXMgYSBXaW5kb3dcbiAgICAgIHx8IG5vZGUuZGVmYXVsdFZpZXc7IC8vIG5vZGUgaXMgYSBEb2N1bWVudFxufVxuIiwgImltcG9ydCBkZWZhdWx0VmlldyBmcm9tIFwiLi4vd2luZG93LmpzXCI7XG5cbmZ1bmN0aW9uIHN0eWxlUmVtb3ZlKG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobmFtZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHN0eWxlQ29uc3RhbnQobmFtZSwgdmFsdWUsIHByaW9yaXR5KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KG5hbWUsIHZhbHVlLCBwcmlvcml0eSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHN0eWxlRnVuY3Rpb24obmFtZSwgdmFsdWUsIHByaW9yaXR5KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgaWYgKHYgPT0gbnVsbCkgdGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuYW1lKTtcbiAgICBlbHNlIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkobmFtZSwgdiwgcHJpb3JpdHkpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSwgcHJpb3JpdHkpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAxXG4gICAgICA/IHRoaXMuZWFjaCgodmFsdWUgPT0gbnVsbFxuICAgICAgICAgICAgPyBzdHlsZVJlbW92ZSA6IHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICA/IHN0eWxlRnVuY3Rpb25cbiAgICAgICAgICAgIDogc3R5bGVDb25zdGFudCkobmFtZSwgdmFsdWUsIHByaW9yaXR5ID09IG51bGwgPyBcIlwiIDogcHJpb3JpdHkpKVxuICAgICAgOiBzdHlsZVZhbHVlKHRoaXMubm9kZSgpLCBuYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0eWxlVmFsdWUobm9kZSwgbmFtZSkge1xuICByZXR1cm4gbm9kZS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpXG4gICAgICB8fCBkZWZhdWx0Vmlldyhub2RlKS5nZXRDb21wdXRlZFN0eWxlKG5vZGUsIG51bGwpLmdldFByb3BlcnR5VmFsdWUobmFtZSk7XG59XG4iLCAiZnVuY3Rpb24gcHJvcGVydHlSZW1vdmUobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgZGVsZXRlIHRoaXNbbmFtZV07XG4gIH07XG59XG5cbmZ1bmN0aW9uIHByb3BlcnR5Q29uc3RhbnQobmFtZSwgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXNbbmFtZV0gPSB2YWx1ZTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gcHJvcGVydHlGdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh2ID09IG51bGwpIGRlbGV0ZSB0aGlzW25hbWVdO1xuICAgIGVsc2UgdGhpc1tuYW1lXSA9IHY7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMVxuICAgICAgPyB0aGlzLmVhY2goKHZhbHVlID09IG51bGxcbiAgICAgICAgICA/IHByb3BlcnR5UmVtb3ZlIDogdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICA/IHByb3BlcnR5RnVuY3Rpb25cbiAgICAgICAgICA6IHByb3BlcnR5Q29uc3RhbnQpKG5hbWUsIHZhbHVlKSlcbiAgICAgIDogdGhpcy5ub2RlKClbbmFtZV07XG59XG4iLCAiZnVuY3Rpb24gY2xhc3NBcnJheShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy50cmltKCkuc3BsaXQoL158XFxzKy8pO1xufVxuXG5mdW5jdGlvbiBjbGFzc0xpc3Qobm9kZSkge1xuICByZXR1cm4gbm9kZS5jbGFzc0xpc3QgfHwgbmV3IENsYXNzTGlzdChub2RlKTtcbn1cblxuZnVuY3Rpb24gQ2xhc3NMaXN0KG5vZGUpIHtcbiAgdGhpcy5fbm9kZSA9IG5vZGU7XG4gIHRoaXMuX25hbWVzID0gY2xhc3NBcnJheShub2RlLmdldEF0dHJpYnV0ZShcImNsYXNzXCIpIHx8IFwiXCIpO1xufVxuXG5DbGFzc0xpc3QucHJvdG90eXBlID0ge1xuICBhZGQ6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICB2YXIgaSA9IHRoaXMuX25hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgaWYgKGkgPCAwKSB7XG4gICAgICB0aGlzLl9uYW1lcy5wdXNoKG5hbWUpO1xuICAgICAgdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCB0aGlzLl9uYW1lcy5qb2luKFwiIFwiKSk7XG4gICAgfVxuICB9LFxuICByZW1vdmU6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICB2YXIgaSA9IHRoaXMuX25hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgaWYgKGkgPj0gMCkge1xuICAgICAgdGhpcy5fbmFtZXMuc3BsaWNlKGksIDEpO1xuICAgICAgdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCB0aGlzLl9uYW1lcy5qb2luKFwiIFwiKSk7XG4gICAgfVxuICB9LFxuICBjb250YWluczogZnVuY3Rpb24obmFtZSkge1xuICAgIHJldHVybiB0aGlzLl9uYW1lcy5pbmRleE9mKG5hbWUpID49IDA7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNsYXNzZWRBZGQobm9kZSwgbmFtZXMpIHtcbiAgdmFyIGxpc3QgPSBjbGFzc0xpc3Qobm9kZSksIGkgPSAtMSwgbiA9IG5hbWVzLmxlbmd0aDtcbiAgd2hpbGUgKCsraSA8IG4pIGxpc3QuYWRkKG5hbWVzW2ldKTtcbn1cblxuZnVuY3Rpb24gY2xhc3NlZFJlbW92ZShub2RlLCBuYW1lcykge1xuICB2YXIgbGlzdCA9IGNsYXNzTGlzdChub2RlKSwgaSA9IC0xLCBuID0gbmFtZXMubGVuZ3RoO1xuICB3aGlsZSAoKytpIDwgbikgbGlzdC5yZW1vdmUobmFtZXNbaV0pO1xufVxuXG5mdW5jdGlvbiBjbGFzc2VkVHJ1ZShuYW1lcykge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgY2xhc3NlZEFkZCh0aGlzLCBuYW1lcyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNsYXNzZWRGYWxzZShuYW1lcykge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgY2xhc3NlZFJlbW92ZSh0aGlzLCBuYW1lcyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNsYXNzZWRGdW5jdGlvbihuYW1lcywgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICh2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpID8gY2xhc3NlZEFkZCA6IGNsYXNzZWRSZW1vdmUpKHRoaXMsIG5hbWVzKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdmFyIG5hbWVzID0gY2xhc3NBcnJheShuYW1lICsgXCJcIik7XG5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdmFyIGxpc3QgPSBjbGFzc0xpc3QodGhpcy5ub2RlKCkpLCBpID0gLTEsIG4gPSBuYW1lcy5sZW5ndGg7XG4gICAgd2hpbGUgKCsraSA8IG4pIGlmICghbGlzdC5jb250YWlucyhuYW1lc1tpXSkpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmVhY2goKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICA/IGNsYXNzZWRGdW5jdGlvbiA6IHZhbHVlXG4gICAgICA/IGNsYXNzZWRUcnVlXG4gICAgICA6IGNsYXNzZWRGYWxzZSkobmFtZXMsIHZhbHVlKSk7XG59XG4iLCAiZnVuY3Rpb24gdGV4dFJlbW92ZSgpIHtcbiAgdGhpcy50ZXh0Q29udGVudCA9IFwiXCI7XG59XG5cbmZ1bmN0aW9uIHRleHRDb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy50ZXh0Q29udGVudCA9IHZhbHVlO1xuICB9O1xufVxuXG5mdW5jdGlvbiB0ZXh0RnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2ID0gdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB0aGlzLnRleHRDb250ZW50ID0gdiA9PSBudWxsID8gXCJcIiA6IHY7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoXG4gICAgICA/IHRoaXMuZWFjaCh2YWx1ZSA9PSBudWxsXG4gICAgICAgICAgPyB0ZXh0UmVtb3ZlIDogKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgPyB0ZXh0RnVuY3Rpb25cbiAgICAgICAgICA6IHRleHRDb25zdGFudCkodmFsdWUpKVxuICAgICAgOiB0aGlzLm5vZGUoKS50ZXh0Q29udGVudDtcbn1cbiIsICJmdW5jdGlvbiBodG1sUmVtb3ZlKCkge1xuICB0aGlzLmlubmVySFRNTCA9IFwiXCI7XG59XG5cbmZ1bmN0aW9uIGh0bWxDb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5pbm5lckhUTUwgPSB2YWx1ZTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gaHRtbEZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgdGhpcy5pbm5lckhUTUwgPSB2ID09IG51bGwgPyBcIlwiIDogdjtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgID8gdGhpcy5lYWNoKHZhbHVlID09IG51bGxcbiAgICAgICAgICA/IGh0bWxSZW1vdmUgOiAodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICA/IGh0bWxGdW5jdGlvblxuICAgICAgICAgIDogaHRtbENvbnN0YW50KSh2YWx1ZSkpXG4gICAgICA6IHRoaXMubm9kZSgpLmlubmVySFRNTDtcbn1cbiIsICJmdW5jdGlvbiByYWlzZSgpIHtcbiAgaWYgKHRoaXMubmV4dFNpYmxpbmcpIHRoaXMucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGlzKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmVhY2gocmFpc2UpO1xufVxuIiwgImZ1bmN0aW9uIGxvd2VyKCkge1xuICBpZiAodGhpcy5wcmV2aW91c1NpYmxpbmcpIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcywgdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaChsb3dlcik7XG59XG4iLCAiaW1wb3J0IGNyZWF0b3IgZnJvbSBcIi4uL2NyZWF0b3IuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSkge1xuICB2YXIgY3JlYXRlID0gdHlwZW9mIG5hbWUgPT09IFwiZnVuY3Rpb25cIiA/IG5hbWUgOiBjcmVhdG9yKG5hbWUpO1xuICByZXR1cm4gdGhpcy5zZWxlY3QoZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQoY3JlYXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICB9KTtcbn1cbiIsICJpbXBvcnQgY3JlYXRvciBmcm9tIFwiLi4vY3JlYXRvci5qc1wiO1xuaW1wb3J0IHNlbGVjdG9yIGZyb20gXCIuLi9zZWxlY3Rvci5qc1wiO1xuXG5mdW5jdGlvbiBjb25zdGFudE51bGwoKSB7XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCBiZWZvcmUpIHtcbiAgdmFyIGNyZWF0ZSA9IHR5cGVvZiBuYW1lID09PSBcImZ1bmN0aW9uXCIgPyBuYW1lIDogY3JlYXRvcihuYW1lKSxcbiAgICAgIHNlbGVjdCA9IGJlZm9yZSA9PSBudWxsID8gY29uc3RhbnROdWxsIDogdHlwZW9mIGJlZm9yZSA9PT0gXCJmdW5jdGlvblwiID8gYmVmb3JlIDogc2VsZWN0b3IoYmVmb3JlKTtcbiAgcmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmluc2VydEJlZm9yZShjcmVhdGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgc2VsZWN0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgbnVsbCk7XG4gIH0pO1xufVxuIiwgImZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgdmFyIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcbiAgaWYgKHBhcmVudCkgcGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaChyZW1vdmUpO1xufVxuIiwgImZ1bmN0aW9uIHNlbGVjdGlvbl9jbG9uZVNoYWxsb3coKSB7XG4gIHZhciBjbG9uZSA9IHRoaXMuY2xvbmVOb2RlKGZhbHNlKSwgcGFyZW50ID0gdGhpcy5wYXJlbnROb2RlO1xuICByZXR1cm4gcGFyZW50ID8gcGFyZW50Lmluc2VydEJlZm9yZShjbG9uZSwgdGhpcy5uZXh0U2libGluZykgOiBjbG9uZTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0aW9uX2Nsb25lRGVlcCgpIHtcbiAgdmFyIGNsb25lID0gdGhpcy5jbG9uZU5vZGUodHJ1ZSksIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcbiAgcmV0dXJuIHBhcmVudCA/IHBhcmVudC5pbnNlcnRCZWZvcmUoY2xvbmUsIHRoaXMubmV4dFNpYmxpbmcpIDogY2xvbmU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGRlZXApIHtcbiAgcmV0dXJuIHRoaXMuc2VsZWN0KGRlZXAgPyBzZWxlY3Rpb25fY2xvbmVEZWVwIDogc2VsZWN0aW9uX2Nsb25lU2hhbGxvdyk7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgID8gdGhpcy5wcm9wZXJ0eShcIl9fZGF0YV9fXCIsIHZhbHVlKVxuICAgICAgOiB0aGlzLm5vZGUoKS5fX2RhdGFfXztcbn1cbiIsICJmdW5jdGlvbiBjb250ZXh0TGlzdGVuZXIobGlzdGVuZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgbGlzdGVuZXIuY2FsbCh0aGlzLCBldmVudCwgdGhpcy5fX2RhdGFfXyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlVHlwZW5hbWVzKHR5cGVuYW1lcykge1xuICByZXR1cm4gdHlwZW5hbWVzLnRyaW0oKS5zcGxpdCgvXnxcXHMrLykubWFwKGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgbmFtZSA9IFwiXCIsIGkgPSB0LmluZGV4T2YoXCIuXCIpO1xuICAgIGlmIChpID49IDApIG5hbWUgPSB0LnNsaWNlKGkgKyAxKSwgdCA9IHQuc2xpY2UoMCwgaSk7XG4gICAgcmV0dXJuIHt0eXBlOiB0LCBuYW1lOiBuYW1lfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG9uUmVtb3ZlKHR5cGVuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgb24gPSB0aGlzLl9fb247XG4gICAgaWYgKCFvbikgcmV0dXJuO1xuICAgIGZvciAodmFyIGogPSAwLCBpID0gLTEsIG0gPSBvbi5sZW5ndGgsIG87IGogPCBtOyArK2opIHtcbiAgICAgIGlmIChvID0gb25bal0sICghdHlwZW5hbWUudHlwZSB8fCBvLnR5cGUgPT09IHR5cGVuYW1lLnR5cGUpICYmIG8ubmFtZSA9PT0gdHlwZW5hbWUubmFtZSkge1xuICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoby50eXBlLCBvLmxpc3RlbmVyLCBvLm9wdGlvbnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25bKytpXSA9IG87XG4gICAgICB9XG4gICAgfVxuICAgIGlmICgrK2kpIG9uLmxlbmd0aCA9IGk7XG4gICAgZWxzZSBkZWxldGUgdGhpcy5fX29uO1xuICB9O1xufVxuXG5mdW5jdGlvbiBvbkFkZCh0eXBlbmFtZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBvbiA9IHRoaXMuX19vbiwgbywgbGlzdGVuZXIgPSBjb250ZXh0TGlzdGVuZXIodmFsdWUpO1xuICAgIGlmIChvbikgZm9yICh2YXIgaiA9IDAsIG0gPSBvbi5sZW5ndGg7IGogPCBtOyArK2opIHtcbiAgICAgIGlmICgobyA9IG9uW2pdKS50eXBlID09PSB0eXBlbmFtZS50eXBlICYmIG8ubmFtZSA9PT0gdHlwZW5hbWUubmFtZSkge1xuICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoby50eXBlLCBvLmxpc3RlbmVyLCBvLm9wdGlvbnMpO1xuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoby50eXBlLCBvLmxpc3RlbmVyID0gbGlzdGVuZXIsIG8ub3B0aW9ucyA9IG9wdGlvbnMpO1xuICAgICAgICBvLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKHR5cGVuYW1lLnR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgICBvID0ge3R5cGU6IHR5cGVuYW1lLnR5cGUsIG5hbWU6IHR5cGVuYW1lLm5hbWUsIHZhbHVlOiB2YWx1ZSwgbGlzdGVuZXI6IGxpc3RlbmVyLCBvcHRpb25zOiBvcHRpb25zfTtcbiAgICBpZiAoIW9uKSB0aGlzLl9fb24gPSBbb107XG4gICAgZWxzZSBvbi5wdXNoKG8pO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih0eXBlbmFtZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgdmFyIHR5cGVuYW1lcyA9IHBhcnNlVHlwZW5hbWVzKHR5cGVuYW1lICsgXCJcIiksIGksIG4gPSB0eXBlbmFtZXMubGVuZ3RoLCB0O1xuXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHZhciBvbiA9IHRoaXMubm9kZSgpLl9fb247XG4gICAgaWYgKG9uKSBmb3IgKHZhciBqID0gMCwgbSA9IG9uLmxlbmd0aCwgbzsgaiA8IG07ICsraikge1xuICAgICAgZm9yIChpID0gMCwgbyA9IG9uW2pdOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIGlmICgodCA9IHR5cGVuYW1lc1tpXSkudHlwZSA9PT0gby50eXBlICYmIHQubmFtZSA9PT0gby5uYW1lKSB7XG4gICAgICAgICAgcmV0dXJuIG8udmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgb24gPSB2YWx1ZSA/IG9uQWRkIDogb25SZW1vdmU7XG4gIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHRoaXMuZWFjaChvbih0eXBlbmFtZXNbaV0sIHZhbHVlLCBvcHRpb25zKSk7XG4gIHJldHVybiB0aGlzO1xufVxuIiwgImltcG9ydCBkZWZhdWx0VmlldyBmcm9tIFwiLi4vd2luZG93LmpzXCI7XG5cbmZ1bmN0aW9uIGRpc3BhdGNoRXZlbnQobm9kZSwgdHlwZSwgcGFyYW1zKSB7XG4gIHZhciB3aW5kb3cgPSBkZWZhdWx0Vmlldyhub2RlKSxcbiAgICAgIGV2ZW50ID0gd2luZG93LkN1c3RvbUV2ZW50O1xuXG4gIGlmICh0eXBlb2YgZXZlbnQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGV2ZW50ID0gbmV3IGV2ZW50KHR5cGUsIHBhcmFtcyk7XG4gIH0gZWxzZSB7XG4gICAgZXZlbnQgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJFdmVudFwiKTtcbiAgICBpZiAocGFyYW1zKSBldmVudC5pbml0RXZlbnQodHlwZSwgcGFyYW1zLmJ1YmJsZXMsIHBhcmFtcy5jYW5jZWxhYmxlKSwgZXZlbnQuZGV0YWlsID0gcGFyYW1zLmRldGFpbDtcbiAgICBlbHNlIGV2ZW50LmluaXRFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UpO1xuICB9XG5cbiAgbm9kZS5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbn1cblxuZnVuY3Rpb24gZGlzcGF0Y2hDb25zdGFudCh0eXBlLCBwYXJhbXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBkaXNwYXRjaEV2ZW50KHRoaXMsIHR5cGUsIHBhcmFtcyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGRpc3BhdGNoRnVuY3Rpb24odHlwZSwgcGFyYW1zKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZGlzcGF0Y2hFdmVudCh0aGlzLCB0eXBlLCBwYXJhbXMuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHR5cGUsIHBhcmFtcykge1xuICByZXR1cm4gdGhpcy5lYWNoKCh0eXBlb2YgcGFyYW1zID09PSBcImZ1bmN0aW9uXCJcbiAgICAgID8gZGlzcGF0Y2hGdW5jdGlvblxuICAgICAgOiBkaXNwYXRjaENvbnN0YW50KSh0eXBlLCBwYXJhbXMpKTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiooKSB7XG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgaiA9IDAsIG0gPSBncm91cHMubGVuZ3RoOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIGkgPSAwLCBuID0gZ3JvdXAubGVuZ3RoLCBub2RlOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB5aWVsZCBub2RlO1xuICAgIH1cbiAgfVxufVxuIiwgImltcG9ydCBzZWxlY3Rpb25fc2VsZWN0IGZyb20gXCIuL3NlbGVjdC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9zZWxlY3RBbGwgZnJvbSBcIi4vc2VsZWN0QWxsLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3NlbGVjdENoaWxkIGZyb20gXCIuL3NlbGVjdENoaWxkLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3NlbGVjdENoaWxkcmVuIGZyb20gXCIuL3NlbGVjdENoaWxkcmVuLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2ZpbHRlciBmcm9tIFwiLi9maWx0ZXIuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fZGF0YSBmcm9tIFwiLi9kYXRhLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2VudGVyIGZyb20gXCIuL2VudGVyLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2V4aXQgZnJvbSBcIi4vZXhpdC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9qb2luIGZyb20gXCIuL2pvaW4uanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fbWVyZ2UgZnJvbSBcIi4vbWVyZ2UuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fb3JkZXIgZnJvbSBcIi4vb3JkZXIuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fc29ydCBmcm9tIFwiLi9zb3J0LmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2NhbGwgZnJvbSBcIi4vY2FsbC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9ub2RlcyBmcm9tIFwiLi9ub2Rlcy5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9ub2RlIGZyb20gXCIuL25vZGUuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fc2l6ZSBmcm9tIFwiLi9zaXplLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2VtcHR5IGZyb20gXCIuL2VtcHR5LmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2VhY2ggZnJvbSBcIi4vZWFjaC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9hdHRyIGZyb20gXCIuL2F0dHIuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fc3R5bGUgZnJvbSBcIi4vc3R5bGUuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fcHJvcGVydHkgZnJvbSBcIi4vcHJvcGVydHkuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fY2xhc3NlZCBmcm9tIFwiLi9jbGFzc2VkLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3RleHQgZnJvbSBcIi4vdGV4dC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9odG1sIGZyb20gXCIuL2h0bWwuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fcmFpc2UgZnJvbSBcIi4vcmFpc2UuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fbG93ZXIgZnJvbSBcIi4vbG93ZXIuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fYXBwZW5kIGZyb20gXCIuL2FwcGVuZC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9pbnNlcnQgZnJvbSBcIi4vaW5zZXJ0LmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3JlbW92ZSBmcm9tIFwiLi9yZW1vdmUuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fY2xvbmUgZnJvbSBcIi4vY2xvbmUuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fZGF0dW0gZnJvbSBcIi4vZGF0dW0uanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fb24gZnJvbSBcIi4vb24uanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fZGlzcGF0Y2ggZnJvbSBcIi4vZGlzcGF0Y2guanNcIjtcbmltcG9ydCBzZWxlY3Rpb25faXRlcmF0b3IgZnJvbSBcIi4vaXRlcmF0b3IuanNcIjtcblxuZXhwb3J0IHZhciByb290ID0gW251bGxdO1xuXG5leHBvcnQgZnVuY3Rpb24gU2VsZWN0aW9uKGdyb3VwcywgcGFyZW50cykge1xuICB0aGlzLl9ncm91cHMgPSBncm91cHM7XG4gIHRoaXMuX3BhcmVudHMgPSBwYXJlbnRzO1xufVxuXG5mdW5jdGlvbiBzZWxlY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKFtbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XV0sIHJvb3QpO1xufVxuXG5mdW5jdGlvbiBzZWxlY3Rpb25fc2VsZWN0aW9uKCkge1xuICByZXR1cm4gdGhpcztcbn1cblxuU2VsZWN0aW9uLnByb3RvdHlwZSA9IHNlbGVjdGlvbi5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBTZWxlY3Rpb24sXG4gIHNlbGVjdDogc2VsZWN0aW9uX3NlbGVjdCxcbiAgc2VsZWN0QWxsOiBzZWxlY3Rpb25fc2VsZWN0QWxsLFxuICBzZWxlY3RDaGlsZDogc2VsZWN0aW9uX3NlbGVjdENoaWxkLFxuICBzZWxlY3RDaGlsZHJlbjogc2VsZWN0aW9uX3NlbGVjdENoaWxkcmVuLFxuICBmaWx0ZXI6IHNlbGVjdGlvbl9maWx0ZXIsXG4gIGRhdGE6IHNlbGVjdGlvbl9kYXRhLFxuICBlbnRlcjogc2VsZWN0aW9uX2VudGVyLFxuICBleGl0OiBzZWxlY3Rpb25fZXhpdCxcbiAgam9pbjogc2VsZWN0aW9uX2pvaW4sXG4gIG1lcmdlOiBzZWxlY3Rpb25fbWVyZ2UsXG4gIHNlbGVjdGlvbjogc2VsZWN0aW9uX3NlbGVjdGlvbixcbiAgb3JkZXI6IHNlbGVjdGlvbl9vcmRlcixcbiAgc29ydDogc2VsZWN0aW9uX3NvcnQsXG4gIGNhbGw6IHNlbGVjdGlvbl9jYWxsLFxuICBub2Rlczogc2VsZWN0aW9uX25vZGVzLFxuICBub2RlOiBzZWxlY3Rpb25fbm9kZSxcbiAgc2l6ZTogc2VsZWN0aW9uX3NpemUsXG4gIGVtcHR5OiBzZWxlY3Rpb25fZW1wdHksXG4gIGVhY2g6IHNlbGVjdGlvbl9lYWNoLFxuICBhdHRyOiBzZWxlY3Rpb25fYXR0cixcbiAgc3R5bGU6IHNlbGVjdGlvbl9zdHlsZSxcbiAgcHJvcGVydHk6IHNlbGVjdGlvbl9wcm9wZXJ0eSxcbiAgY2xhc3NlZDogc2VsZWN0aW9uX2NsYXNzZWQsXG4gIHRleHQ6IHNlbGVjdGlvbl90ZXh0LFxuICBodG1sOiBzZWxlY3Rpb25faHRtbCxcbiAgcmFpc2U6IHNlbGVjdGlvbl9yYWlzZSxcbiAgbG93ZXI6IHNlbGVjdGlvbl9sb3dlcixcbiAgYXBwZW5kOiBzZWxlY3Rpb25fYXBwZW5kLFxuICBpbnNlcnQ6IHNlbGVjdGlvbl9pbnNlcnQsXG4gIHJlbW92ZTogc2VsZWN0aW9uX3JlbW92ZSxcbiAgY2xvbmU6IHNlbGVjdGlvbl9jbG9uZSxcbiAgZGF0dW06IHNlbGVjdGlvbl9kYXR1bSxcbiAgb246IHNlbGVjdGlvbl9vbixcbiAgZGlzcGF0Y2g6IHNlbGVjdGlvbl9kaXNwYXRjaCxcbiAgW1N5bWJvbC5pdGVyYXRvcl06IHNlbGVjdGlvbl9pdGVyYXRvclxufTtcblxuZXhwb3J0IGRlZmF1bHQgc2VsZWN0aW9uO1xuIiwgImltcG9ydCB7U2VsZWN0aW9uLCByb290fSBmcm9tIFwiLi9zZWxlY3Rpb24vaW5kZXguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBuZXcgU2VsZWN0aW9uKFtbZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcildXSwgW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pXG4gICAgICA6IG5ldyBTZWxlY3Rpb24oW1tzZWxlY3Rvcl1dLCByb290KTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihldmVudCkge1xuICBsZXQgc291cmNlRXZlbnQ7XG4gIHdoaWxlIChzb3VyY2VFdmVudCA9IGV2ZW50LnNvdXJjZUV2ZW50KSBldmVudCA9IHNvdXJjZUV2ZW50O1xuICByZXR1cm4gZXZlbnQ7XG59XG4iLCAiaW1wb3J0IHNvdXJjZUV2ZW50IGZyb20gXCIuL3NvdXJjZUV2ZW50LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGV2ZW50LCBub2RlKSB7XG4gIGV2ZW50ID0gc291cmNlRXZlbnQoZXZlbnQpO1xuICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSBub2RlID0gZXZlbnQuY3VycmVudFRhcmdldDtcbiAgaWYgKG5vZGUpIHtcbiAgICB2YXIgc3ZnID0gbm9kZS5vd25lclNWR0VsZW1lbnQgfHwgbm9kZTtcbiAgICBpZiAoc3ZnLmNyZWF0ZVNWR1BvaW50KSB7XG4gICAgICB2YXIgcG9pbnQgPSBzdmcuY3JlYXRlU1ZHUG9pbnQoKTtcbiAgICAgIHBvaW50LnggPSBldmVudC5jbGllbnRYLCBwb2ludC55ID0gZXZlbnQuY2xpZW50WTtcbiAgICAgIHBvaW50ID0gcG9pbnQubWF0cml4VHJhbnNmb3JtKG5vZGUuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKTtcbiAgICAgIHJldHVybiBbcG9pbnQueCwgcG9pbnQueV07XG4gICAgfVxuICAgIGlmIChub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCkge1xuICAgICAgdmFyIHJlY3QgPSBub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgcmV0dXJuIFtldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0IC0gbm9kZS5jbGllbnRMZWZ0LCBldmVudC5jbGllbnRZIC0gcmVjdC50b3AgLSBub2RlLmNsaWVudFRvcF07XG4gICAgfVxuICB9XG4gIHJldHVybiBbZXZlbnQucGFnZVgsIGV2ZW50LnBhZ2VZXTtcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gbm9wcm9wYWdhdGlvbihldmVudCkge1xuICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZXZlbnQpIHtcbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG59XG4iLCAiaW1wb3J0IHtzZWxlY3R9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCBub2V2ZW50IGZyb20gXCIuL25vZXZlbnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmlldykge1xuICB2YXIgcm9vdCA9IHZpZXcuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuICAgICAgc2VsZWN0aW9uID0gc2VsZWN0KHZpZXcpLm9uKFwiZHJhZ3N0YXJ0LmRyYWdcIiwgbm9ldmVudCwgdHJ1ZSk7XG4gIGlmIChcIm9uc2VsZWN0c3RhcnRcIiBpbiByb290KSB7XG4gICAgc2VsZWN0aW9uLm9uKFwic2VsZWN0c3RhcnQuZHJhZ1wiLCBub2V2ZW50LCB0cnVlKTtcbiAgfSBlbHNlIHtcbiAgICByb290Ll9fbm9zZWxlY3QgPSByb290LnN0eWxlLk1velVzZXJTZWxlY3Q7XG4gICAgcm9vdC5zdHlsZS5Nb3pVc2VyU2VsZWN0ID0gXCJub25lXCI7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHllc2RyYWcodmlldywgbm9jbGljaykge1xuICB2YXIgcm9vdCA9IHZpZXcuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuICAgICAgc2VsZWN0aW9uID0gc2VsZWN0KHZpZXcpLm9uKFwiZHJhZ3N0YXJ0LmRyYWdcIiwgbnVsbCk7XG4gIGlmIChub2NsaWNrKSB7XG4gICAgc2VsZWN0aW9uLm9uKFwiY2xpY2suZHJhZ1wiLCBub2V2ZW50LCB0cnVlKTtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzZWxlY3Rpb24ub24oXCJjbGljay5kcmFnXCIsIG51bGwpOyB9LCAwKTtcbiAgfVxuICBpZiAoXCJvbnNlbGVjdHN0YXJ0XCIgaW4gcm9vdCkge1xuICAgIHNlbGVjdGlvbi5vbihcInNlbGVjdHN0YXJ0LmRyYWdcIiwgbnVsbCk7XG4gIH0gZWxzZSB7XG4gICAgcm9vdC5zdHlsZS5Nb3pVc2VyU2VsZWN0ID0gcm9vdC5fX25vc2VsZWN0O1xuICAgIGRlbGV0ZSByb290Ll9fbm9zZWxlY3Q7XG4gIH1cbn1cbiIsICJleHBvcnQgZGVmYXVsdCB4ID0+ICgpID0+IHg7XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRHJhZ0V2ZW50KHR5cGUsIHtcbiAgc291cmNlRXZlbnQsXG4gIHN1YmplY3QsXG4gIHRhcmdldCxcbiAgaWRlbnRpZmllcixcbiAgYWN0aXZlLFxuICB4LCB5LCBkeCwgZHksXG4gIGRpc3BhdGNoXG59KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMsIHtcbiAgICB0eXBlOiB7dmFsdWU6IHR5cGUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0sXG4gICAgc291cmNlRXZlbnQ6IHt2YWx1ZTogc291cmNlRXZlbnQsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0sXG4gICAgc3ViamVjdDoge3ZhbHVlOiBzdWJqZWN0LCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWV9LFxuICAgIHRhcmdldDoge3ZhbHVlOiB0YXJnZXQsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0sXG4gICAgaWRlbnRpZmllcjoge3ZhbHVlOiBpZGVudGlmaWVyLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWV9LFxuICAgIGFjdGl2ZToge3ZhbHVlOiBhY3RpdmUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0sXG4gICAgeDoge3ZhbHVlOiB4LCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWV9LFxuICAgIHk6IHt2YWx1ZTogeSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlfSxcbiAgICBkeDoge3ZhbHVlOiBkeCwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlfSxcbiAgICBkeToge3ZhbHVlOiBkeSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlfSxcbiAgICBfOiB7dmFsdWU6IGRpc3BhdGNofVxuICB9KTtcbn1cblxuRHJhZ0V2ZW50LnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uKCkge1xuICB2YXIgdmFsdWUgPSB0aGlzLl8ub24uYXBwbHkodGhpcy5fLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdmFsdWUgPT09IHRoaXMuXyA/IHRoaXMgOiB2YWx1ZTtcbn07XG4iLCAiaW1wb3J0IHtkaXNwYXRjaH0gZnJvbSBcImQzLWRpc3BhdGNoXCI7XG5pbXBvcnQge3NlbGVjdCwgcG9pbnRlcn0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IG5vZHJhZywge3llc2RyYWd9IGZyb20gXCIuL25vZHJhZy5qc1wiO1xuaW1wb3J0IG5vZXZlbnQsIHtub3Byb3BhZ2F0aW9ufSBmcm9tIFwiLi9ub2V2ZW50LmpzXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBEcmFnRXZlbnQgZnJvbSBcIi4vZXZlbnQuanNcIjtcblxuLy8gSWdub3JlIHJpZ2h0LWNsaWNrLCBzaW5jZSB0aGF0IHNob3VsZCBvcGVuIHRoZSBjb250ZXh0IG1lbnUuXG5mdW5jdGlvbiBkZWZhdWx0RmlsdGVyKGV2ZW50KSB7XG4gIHJldHVybiAhZXZlbnQuY3RybEtleSAmJiAhZXZlbnQuYnV0dG9uO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0Q29udGFpbmVyKCkge1xuICByZXR1cm4gdGhpcy5wYXJlbnROb2RlO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0U3ViamVjdChldmVudCwgZCkge1xuICByZXR1cm4gZCA9PSBudWxsID8ge3g6IGV2ZW50LngsIHk6IGV2ZW50Lnl9IDogZDtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFRvdWNoYWJsZSgpIHtcbiAgcmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyB8fCAoXCJvbnRvdWNoc3RhcnRcIiBpbiB0aGlzKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBmaWx0ZXIgPSBkZWZhdWx0RmlsdGVyLFxuICAgICAgY29udGFpbmVyID0gZGVmYXVsdENvbnRhaW5lcixcbiAgICAgIHN1YmplY3QgPSBkZWZhdWx0U3ViamVjdCxcbiAgICAgIHRvdWNoYWJsZSA9IGRlZmF1bHRUb3VjaGFibGUsXG4gICAgICBnZXN0dXJlcyA9IHt9LFxuICAgICAgbGlzdGVuZXJzID0gZGlzcGF0Y2goXCJzdGFydFwiLCBcImRyYWdcIiwgXCJlbmRcIiksXG4gICAgICBhY3RpdmUgPSAwLFxuICAgICAgbW91c2Vkb3dueCxcbiAgICAgIG1vdXNlZG93bnksXG4gICAgICBtb3VzZW1vdmluZyxcbiAgICAgIHRvdWNoZW5kaW5nLFxuICAgICAgY2xpY2tEaXN0YW5jZTIgPSAwO1xuXG4gIGZ1bmN0aW9uIGRyYWcoc2VsZWN0aW9uKSB7XG4gICAgc2VsZWN0aW9uXG4gICAgICAgIC5vbihcIm1vdXNlZG93bi5kcmFnXCIsIG1vdXNlZG93bmVkKVxuICAgICAgLmZpbHRlcih0b3VjaGFibGUpXG4gICAgICAgIC5vbihcInRvdWNoc3RhcnQuZHJhZ1wiLCB0b3VjaHN0YXJ0ZWQpXG4gICAgICAgIC5vbihcInRvdWNobW92ZS5kcmFnXCIsIHRvdWNobW92ZWQpXG4gICAgICAgIC5vbihcInRvdWNoZW5kLmRyYWcgdG91Y2hjYW5jZWwuZHJhZ1wiLCB0b3VjaGVuZGVkKVxuICAgICAgICAuc3R5bGUoXCJ0b3VjaC1hY3Rpb25cIiwgXCJub25lXCIpXG4gICAgICAgIC5zdHlsZShcIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvclwiLCBcInJnYmEoMCwwLDAsMClcIik7XG4gIH1cblxuICBmdW5jdGlvbiBtb3VzZWRvd25lZChldmVudCwgZCkge1xuICAgIGlmICh0b3VjaGVuZGluZyB8fCAhZmlsdGVyLmNhbGwodGhpcywgZXZlbnQsIGQpKSByZXR1cm47XG4gICAgdmFyIGdlc3R1cmUgPSBiZWZvcmVzdGFydCh0aGlzLCBjb250YWluZXIuY2FsbCh0aGlzLCBldmVudCwgZCksIGV2ZW50LCBkLCBcIm1vdXNlXCIpO1xuICAgIGlmICghZ2VzdHVyZSkgcmV0dXJuO1xuICAgIHNlbGVjdChldmVudC52aWV3KS5vbihcIm1vdXNlbW92ZS5kcmFnXCIsIG1vdXNlbW92ZWQsIHRydWUpLm9uKFwibW91c2V1cC5kcmFnXCIsIG1vdXNldXBwZWQsIHRydWUpO1xuICAgIG5vZHJhZyhldmVudC52aWV3KTtcbiAgICBub3Byb3BhZ2F0aW9uKGV2ZW50KTtcbiAgICBtb3VzZW1vdmluZyA9IGZhbHNlO1xuICAgIG1vdXNlZG93bnggPSBldmVudC5jbGllbnRYO1xuICAgIG1vdXNlZG93bnkgPSBldmVudC5jbGllbnRZO1xuICAgIGdlc3R1cmUoXCJzdGFydFwiLCBldmVudCk7XG4gIH1cblxuICBmdW5jdGlvbiBtb3VzZW1vdmVkKGV2ZW50KSB7XG4gICAgbm9ldmVudChldmVudCk7XG4gICAgaWYgKCFtb3VzZW1vdmluZykge1xuICAgICAgdmFyIGR4ID0gZXZlbnQuY2xpZW50WCAtIG1vdXNlZG93bngsIGR5ID0gZXZlbnQuY2xpZW50WSAtIG1vdXNlZG93bnk7XG4gICAgICBtb3VzZW1vdmluZyA9IGR4ICogZHggKyBkeSAqIGR5ID4gY2xpY2tEaXN0YW5jZTI7XG4gICAgfVxuICAgIGdlc3R1cmVzLm1vdXNlKFwiZHJhZ1wiLCBldmVudCk7XG4gIH1cblxuICBmdW5jdGlvbiBtb3VzZXVwcGVkKGV2ZW50KSB7XG4gICAgc2VsZWN0KGV2ZW50LnZpZXcpLm9uKFwibW91c2Vtb3ZlLmRyYWcgbW91c2V1cC5kcmFnXCIsIG51bGwpO1xuICAgIHllc2RyYWcoZXZlbnQudmlldywgbW91c2Vtb3ZpbmcpO1xuICAgIG5vZXZlbnQoZXZlbnQpO1xuICAgIGdlc3R1cmVzLm1vdXNlKFwiZW5kXCIsIGV2ZW50KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvdWNoc3RhcnRlZChldmVudCwgZCkge1xuICAgIGlmICghZmlsdGVyLmNhbGwodGhpcywgZXZlbnQsIGQpKSByZXR1cm47XG4gICAgdmFyIHRvdWNoZXMgPSBldmVudC5jaGFuZ2VkVG91Y2hlcyxcbiAgICAgICAgYyA9IGNvbnRhaW5lci5jYWxsKHRoaXMsIGV2ZW50LCBkKSxcbiAgICAgICAgbiA9IHRvdWNoZXMubGVuZ3RoLCBpLCBnZXN0dXJlO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKGdlc3R1cmUgPSBiZWZvcmVzdGFydCh0aGlzLCBjLCBldmVudCwgZCwgdG91Y2hlc1tpXS5pZGVudGlmaWVyLCB0b3VjaGVzW2ldKSkge1xuICAgICAgICBub3Byb3BhZ2F0aW9uKGV2ZW50KTtcbiAgICAgICAgZ2VzdHVyZShcInN0YXJ0XCIsIGV2ZW50LCB0b3VjaGVzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB0b3VjaG1vdmVkKGV2ZW50KSB7XG4gICAgdmFyIHRvdWNoZXMgPSBldmVudC5jaGFuZ2VkVG91Y2hlcyxcbiAgICAgICAgbiA9IHRvdWNoZXMubGVuZ3RoLCBpLCBnZXN0dXJlO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKGdlc3R1cmUgPSBnZXN0dXJlc1t0b3VjaGVzW2ldLmlkZW50aWZpZXJdKSB7XG4gICAgICAgIG5vZXZlbnQoZXZlbnQpO1xuICAgICAgICBnZXN0dXJlKFwiZHJhZ1wiLCBldmVudCwgdG91Y2hlc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdG91Y2hlbmRlZChldmVudCkge1xuICAgIHZhciB0b3VjaGVzID0gZXZlbnQuY2hhbmdlZFRvdWNoZXMsXG4gICAgICAgIG4gPSB0b3VjaGVzLmxlbmd0aCwgaSwgZ2VzdHVyZTtcblxuICAgIGlmICh0b3VjaGVuZGluZykgY2xlYXJUaW1lb3V0KHRvdWNoZW5kaW5nKTtcbiAgICB0b3VjaGVuZGluZyA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHRvdWNoZW5kaW5nID0gbnVsbDsgfSwgNTAwKTsgLy8gR2hvc3QgY2xpY2tzIGFyZSBkZWxheWVkIVxuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChnZXN0dXJlID0gZ2VzdHVyZXNbdG91Y2hlc1tpXS5pZGVudGlmaWVyXSkge1xuICAgICAgICBub3Byb3BhZ2F0aW9uKGV2ZW50KTtcbiAgICAgICAgZ2VzdHVyZShcImVuZFwiLCBldmVudCwgdG91Y2hlc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gYmVmb3Jlc3RhcnQodGhhdCwgY29udGFpbmVyLCBldmVudCwgZCwgaWRlbnRpZmllciwgdG91Y2gpIHtcbiAgICB2YXIgZGlzcGF0Y2ggPSBsaXN0ZW5lcnMuY29weSgpLFxuICAgICAgICBwID0gcG9pbnRlcih0b3VjaCB8fCBldmVudCwgY29udGFpbmVyKSwgZHgsIGR5LFxuICAgICAgICBzO1xuXG4gICAgaWYgKChzID0gc3ViamVjdC5jYWxsKHRoYXQsIG5ldyBEcmFnRXZlbnQoXCJiZWZvcmVzdGFydFwiLCB7XG4gICAgICAgIHNvdXJjZUV2ZW50OiBldmVudCxcbiAgICAgICAgdGFyZ2V0OiBkcmFnLFxuICAgICAgICBpZGVudGlmaWVyLFxuICAgICAgICBhY3RpdmUsXG4gICAgICAgIHg6IHBbMF0sXG4gICAgICAgIHk6IHBbMV0sXG4gICAgICAgIGR4OiAwLFxuICAgICAgICBkeTogMCxcbiAgICAgICAgZGlzcGF0Y2hcbiAgICAgIH0pLCBkKSkgPT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgZHggPSBzLnggLSBwWzBdIHx8IDA7XG4gICAgZHkgPSBzLnkgLSBwWzFdIHx8IDA7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gZ2VzdHVyZSh0eXBlLCBldmVudCwgdG91Y2gpIHtcbiAgICAgIHZhciBwMCA9IHAsIG47XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBcInN0YXJ0XCI6IGdlc3R1cmVzW2lkZW50aWZpZXJdID0gZ2VzdHVyZSwgbiA9IGFjdGl2ZSsrOyBicmVhaztcbiAgICAgICAgY2FzZSBcImVuZFwiOiBkZWxldGUgZ2VzdHVyZXNbaWRlbnRpZmllcl0sIC0tYWN0aXZlOyAvLyBub2JyZWFrXG4gICAgICAgIGNhc2UgXCJkcmFnXCI6IHAgPSBwb2ludGVyKHRvdWNoIHx8IGV2ZW50LCBjb250YWluZXIpLCBuID0gYWN0aXZlOyBicmVhaztcbiAgICAgIH1cbiAgICAgIGRpc3BhdGNoLmNhbGwoXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHRoYXQsXG4gICAgICAgIG5ldyBEcmFnRXZlbnQodHlwZSwge1xuICAgICAgICAgIHNvdXJjZUV2ZW50OiBldmVudCxcbiAgICAgICAgICBzdWJqZWN0OiBzLFxuICAgICAgICAgIHRhcmdldDogZHJhZyxcbiAgICAgICAgICBpZGVudGlmaWVyLFxuICAgICAgICAgIGFjdGl2ZTogbixcbiAgICAgICAgICB4OiBwWzBdICsgZHgsXG4gICAgICAgICAgeTogcFsxXSArIGR5LFxuICAgICAgICAgIGR4OiBwWzBdIC0gcDBbMF0sXG4gICAgICAgICAgZHk6IHBbMV0gLSBwMFsxXSxcbiAgICAgICAgICBkaXNwYXRjaFxuICAgICAgICB9KSxcbiAgICAgICAgZFxuICAgICAgKTtcbiAgICB9O1xuICB9XG5cbiAgZHJhZy5maWx0ZXIgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZmlsdGVyID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCghIV8pLCBkcmFnKSA6IGZpbHRlcjtcbiAgfTtcblxuICBkcmFnLmNvbnRhaW5lciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjb250YWluZXIgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KF8pLCBkcmFnKSA6IGNvbnRhaW5lcjtcbiAgfTtcblxuICBkcmFnLnN1YmplY3QgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3ViamVjdCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoXyksIGRyYWcpIDogc3ViamVjdDtcbiAgfTtcblxuICBkcmFnLnRvdWNoYWJsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0b3VjaGFibGUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCEhXyksIGRyYWcpIDogdG91Y2hhYmxlO1xuICB9O1xuXG4gIGRyYWcub24gPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWUgPSBsaXN0ZW5lcnMub24uYXBwbHkobGlzdGVuZXJzLCBhcmd1bWVudHMpO1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbGlzdGVuZXJzID8gZHJhZyA6IHZhbHVlO1xuICB9O1xuXG4gIGRyYWcuY2xpY2tEaXN0YW5jZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjbGlja0Rpc3RhbmNlMiA9IChfID0gK18pICogXywgZHJhZykgOiBNYXRoLnNxcnQoY2xpY2tEaXN0YW5jZTIpO1xuICB9O1xuXG4gIHJldHVybiBkcmFnO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbnN0cnVjdG9yLCBmYWN0b3J5LCBwcm90b3R5cGUpIHtcbiAgY29uc3RydWN0b3IucHJvdG90eXBlID0gZmFjdG9yeS5wcm90b3R5cGUgPSBwcm90b3R5cGU7XG4gIHByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kKHBhcmVudCwgZGVmaW5pdGlvbikge1xuICB2YXIgcHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShwYXJlbnQucHJvdG90eXBlKTtcbiAgZm9yICh2YXIga2V5IGluIGRlZmluaXRpb24pIHByb3RvdHlwZVtrZXldID0gZGVmaW5pdGlvbltrZXldO1xuICByZXR1cm4gcHJvdG90eXBlO1xufVxuIiwgImltcG9ydCBkZWZpbmUsIHtleHRlbmR9IGZyb20gXCIuL2RlZmluZS5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gQ29sb3IoKSB7fVxuXG5leHBvcnQgdmFyIGRhcmtlciA9IDAuNztcbmV4cG9ydCB2YXIgYnJpZ2h0ZXIgPSAxIC8gZGFya2VyO1xuXG52YXIgcmVJID0gXCJcXFxccyooWystXT9cXFxcZCspXFxcXHMqXCIsXG4gICAgcmVOID0gXCJcXFxccyooWystXT9cXFxcZCpcXFxcLj9cXFxcZCsoPzpbZUVdWystXT9cXFxcZCspPylcXFxccypcIixcbiAgICByZVAgPSBcIlxcXFxzKihbKy1dP1xcXFxkKlxcXFwuP1xcXFxkKyg/OltlRV1bKy1dP1xcXFxkKyk/KSVcXFxccypcIixcbiAgICByZUhleCA9IC9eIyhbMC05YS1mXXszLDh9KSQvLFxuICAgIHJlUmdiSW50ZWdlciA9IG5ldyBSZWdFeHAoXCJecmdiXFxcXChcIiArIFtyZUksIHJlSSwgcmVJXSArIFwiXFxcXCkkXCIpLFxuICAgIHJlUmdiUGVyY2VudCA9IG5ldyBSZWdFeHAoXCJecmdiXFxcXChcIiArIFtyZVAsIHJlUCwgcmVQXSArIFwiXFxcXCkkXCIpLFxuICAgIHJlUmdiYUludGVnZXIgPSBuZXcgUmVnRXhwKFwiXnJnYmFcXFxcKFwiICsgW3JlSSwgcmVJLCByZUksIHJlTl0gKyBcIlxcXFwpJFwiKSxcbiAgICByZVJnYmFQZXJjZW50ID0gbmV3IFJlZ0V4cChcIl5yZ2JhXFxcXChcIiArIFtyZVAsIHJlUCwgcmVQLCByZU5dICsgXCJcXFxcKSRcIiksXG4gICAgcmVIc2xQZXJjZW50ID0gbmV3IFJlZ0V4cChcIl5oc2xcXFxcKFwiICsgW3JlTiwgcmVQLCByZVBdICsgXCJcXFxcKSRcIiksXG4gICAgcmVIc2xhUGVyY2VudCA9IG5ldyBSZWdFeHAoXCJeaHNsYVxcXFwoXCIgKyBbcmVOLCByZVAsIHJlUCwgcmVOXSArIFwiXFxcXCkkXCIpO1xuXG52YXIgbmFtZWQgPSB7XG4gIGFsaWNlYmx1ZTogMHhmMGY4ZmYsXG4gIGFudGlxdWV3aGl0ZTogMHhmYWViZDcsXG4gIGFxdWE6IDB4MDBmZmZmLFxuICBhcXVhbWFyaW5lOiAweDdmZmZkNCxcbiAgYXp1cmU6IDB4ZjBmZmZmLFxuICBiZWlnZTogMHhmNWY1ZGMsXG4gIGJpc3F1ZTogMHhmZmU0YzQsXG4gIGJsYWNrOiAweDAwMDAwMCxcbiAgYmxhbmNoZWRhbG1vbmQ6IDB4ZmZlYmNkLFxuICBibHVlOiAweDAwMDBmZixcbiAgYmx1ZXZpb2xldDogMHg4YTJiZTIsXG4gIGJyb3duOiAweGE1MmEyYSxcbiAgYnVybHl3b29kOiAweGRlYjg4NyxcbiAgY2FkZXRibHVlOiAweDVmOWVhMCxcbiAgY2hhcnRyZXVzZTogMHg3ZmZmMDAsXG4gIGNob2NvbGF0ZTogMHhkMjY5MWUsXG4gIGNvcmFsOiAweGZmN2Y1MCxcbiAgY29ybmZsb3dlcmJsdWU6IDB4NjQ5NWVkLFxuICBjb3Juc2lsazogMHhmZmY4ZGMsXG4gIGNyaW1zb246IDB4ZGMxNDNjLFxuICBjeWFuOiAweDAwZmZmZixcbiAgZGFya2JsdWU6IDB4MDAwMDhiLFxuICBkYXJrY3lhbjogMHgwMDhiOGIsXG4gIGRhcmtnb2xkZW5yb2Q6IDB4Yjg4NjBiLFxuICBkYXJrZ3JheTogMHhhOWE5YTksXG4gIGRhcmtncmVlbjogMHgwMDY0MDAsXG4gIGRhcmtncmV5OiAweGE5YTlhOSxcbiAgZGFya2toYWtpOiAweGJkYjc2YixcbiAgZGFya21hZ2VudGE6IDB4OGIwMDhiLFxuICBkYXJrb2xpdmVncmVlbjogMHg1NTZiMmYsXG4gIGRhcmtvcmFuZ2U6IDB4ZmY4YzAwLFxuICBkYXJrb3JjaGlkOiAweDk5MzJjYyxcbiAgZGFya3JlZDogMHg4YjAwMDAsXG4gIGRhcmtzYWxtb246IDB4ZTk5NjdhLFxuICBkYXJrc2VhZ3JlZW46IDB4OGZiYzhmLFxuICBkYXJrc2xhdGVibHVlOiAweDQ4M2Q4YixcbiAgZGFya3NsYXRlZ3JheTogMHgyZjRmNGYsXG4gIGRhcmtzbGF0ZWdyZXk6IDB4MmY0ZjRmLFxuICBkYXJrdHVycXVvaXNlOiAweDAwY2VkMSxcbiAgZGFya3Zpb2xldDogMHg5NDAwZDMsXG4gIGRlZXBwaW5rOiAweGZmMTQ5MyxcbiAgZGVlcHNreWJsdWU6IDB4MDBiZmZmLFxuICBkaW1ncmF5OiAweDY5Njk2OSxcbiAgZGltZ3JleTogMHg2OTY5NjksXG4gIGRvZGdlcmJsdWU6IDB4MWU5MGZmLFxuICBmaXJlYnJpY2s6IDB4YjIyMjIyLFxuICBmbG9yYWx3aGl0ZTogMHhmZmZhZjAsXG4gIGZvcmVzdGdyZWVuOiAweDIyOGIyMixcbiAgZnVjaHNpYTogMHhmZjAwZmYsXG4gIGdhaW5zYm9ybzogMHhkY2RjZGMsXG4gIGdob3N0d2hpdGU6IDB4ZjhmOGZmLFxuICBnb2xkOiAweGZmZDcwMCxcbiAgZ29sZGVucm9kOiAweGRhYTUyMCxcbiAgZ3JheTogMHg4MDgwODAsXG4gIGdyZWVuOiAweDAwODAwMCxcbiAgZ3JlZW55ZWxsb3c6IDB4YWRmZjJmLFxuICBncmV5OiAweDgwODA4MCxcbiAgaG9uZXlkZXc6IDB4ZjBmZmYwLFxuICBob3RwaW5rOiAweGZmNjliNCxcbiAgaW5kaWFucmVkOiAweGNkNWM1YyxcbiAgaW5kaWdvOiAweDRiMDA4MixcbiAgaXZvcnk6IDB4ZmZmZmYwLFxuICBraGFraTogMHhmMGU2OGMsXG4gIGxhdmVuZGVyOiAweGU2ZTZmYSxcbiAgbGF2ZW5kZXJibHVzaDogMHhmZmYwZjUsXG4gIGxhd25ncmVlbjogMHg3Y2ZjMDAsXG4gIGxlbW9uY2hpZmZvbjogMHhmZmZhY2QsXG4gIGxpZ2h0Ymx1ZTogMHhhZGQ4ZTYsXG4gIGxpZ2h0Y29yYWw6IDB4ZjA4MDgwLFxuICBsaWdodGN5YW46IDB4ZTBmZmZmLFxuICBsaWdodGdvbGRlbnJvZHllbGxvdzogMHhmYWZhZDIsXG4gIGxpZ2h0Z3JheTogMHhkM2QzZDMsXG4gIGxpZ2h0Z3JlZW46IDB4OTBlZTkwLFxuICBsaWdodGdyZXk6IDB4ZDNkM2QzLFxuICBsaWdodHBpbms6IDB4ZmZiNmMxLFxuICBsaWdodHNhbG1vbjogMHhmZmEwN2EsXG4gIGxpZ2h0c2VhZ3JlZW46IDB4MjBiMmFhLFxuICBsaWdodHNreWJsdWU6IDB4ODdjZWZhLFxuICBsaWdodHNsYXRlZ3JheTogMHg3Nzg4OTksXG4gIGxpZ2h0c2xhdGVncmV5OiAweDc3ODg5OSxcbiAgbGlnaHRzdGVlbGJsdWU6IDB4YjBjNGRlLFxuICBsaWdodHllbGxvdzogMHhmZmZmZTAsXG4gIGxpbWU6IDB4MDBmZjAwLFxuICBsaW1lZ3JlZW46IDB4MzJjZDMyLFxuICBsaW5lbjogMHhmYWYwZTYsXG4gIG1hZ2VudGE6IDB4ZmYwMGZmLFxuICBtYXJvb246IDB4ODAwMDAwLFxuICBtZWRpdW1hcXVhbWFyaW5lOiAweDY2Y2RhYSxcbiAgbWVkaXVtYmx1ZTogMHgwMDAwY2QsXG4gIG1lZGl1bW9yY2hpZDogMHhiYTU1ZDMsXG4gIG1lZGl1bXB1cnBsZTogMHg5MzcwZGIsXG4gIG1lZGl1bXNlYWdyZWVuOiAweDNjYjM3MSxcbiAgbWVkaXVtc2xhdGVibHVlOiAweDdiNjhlZSxcbiAgbWVkaXVtc3ByaW5nZ3JlZW46IDB4MDBmYTlhLFxuICBtZWRpdW10dXJxdW9pc2U6IDB4NDhkMWNjLFxuICBtZWRpdW12aW9sZXRyZWQ6IDB4YzcxNTg1LFxuICBtaWRuaWdodGJsdWU6IDB4MTkxOTcwLFxuICBtaW50Y3JlYW06IDB4ZjVmZmZhLFxuICBtaXN0eXJvc2U6IDB4ZmZlNGUxLFxuICBtb2NjYXNpbjogMHhmZmU0YjUsXG4gIG5hdmFqb3doaXRlOiAweGZmZGVhZCxcbiAgbmF2eTogMHgwMDAwODAsXG4gIG9sZGxhY2U6IDB4ZmRmNWU2LFxuICBvbGl2ZTogMHg4MDgwMDAsXG4gIG9saXZlZHJhYjogMHg2YjhlMjMsXG4gIG9yYW5nZTogMHhmZmE1MDAsXG4gIG9yYW5nZXJlZDogMHhmZjQ1MDAsXG4gIG9yY2hpZDogMHhkYTcwZDYsXG4gIHBhbGVnb2xkZW5yb2Q6IDB4ZWVlOGFhLFxuICBwYWxlZ3JlZW46IDB4OThmYjk4LFxuICBwYWxldHVycXVvaXNlOiAweGFmZWVlZSxcbiAgcGFsZXZpb2xldHJlZDogMHhkYjcwOTMsXG4gIHBhcGF5YXdoaXA6IDB4ZmZlZmQ1LFxuICBwZWFjaHB1ZmY6IDB4ZmZkYWI5LFxuICBwZXJ1OiAweGNkODUzZixcbiAgcGluazogMHhmZmMwY2IsXG4gIHBsdW06IDB4ZGRhMGRkLFxuICBwb3dkZXJibHVlOiAweGIwZTBlNixcbiAgcHVycGxlOiAweDgwMDA4MCxcbiAgcmViZWNjYXB1cnBsZTogMHg2NjMzOTksXG4gIHJlZDogMHhmZjAwMDAsXG4gIHJvc3licm93bjogMHhiYzhmOGYsXG4gIHJveWFsYmx1ZTogMHg0MTY5ZTEsXG4gIHNhZGRsZWJyb3duOiAweDhiNDUxMyxcbiAgc2FsbW9uOiAweGZhODA3MixcbiAgc2FuZHlicm93bjogMHhmNGE0NjAsXG4gIHNlYWdyZWVuOiAweDJlOGI1NyxcbiAgc2Vhc2hlbGw6IDB4ZmZmNWVlLFxuICBzaWVubmE6IDB4YTA1MjJkLFxuICBzaWx2ZXI6IDB4YzBjMGMwLFxuICBza3libHVlOiAweDg3Y2VlYixcbiAgc2xhdGVibHVlOiAweDZhNWFjZCxcbiAgc2xhdGVncmF5OiAweDcwODA5MCxcbiAgc2xhdGVncmV5OiAweDcwODA5MCxcbiAgc25vdzogMHhmZmZhZmEsXG4gIHNwcmluZ2dyZWVuOiAweDAwZmY3ZixcbiAgc3RlZWxibHVlOiAweDQ2ODJiNCxcbiAgdGFuOiAweGQyYjQ4YyxcbiAgdGVhbDogMHgwMDgwODAsXG4gIHRoaXN0bGU6IDB4ZDhiZmQ4LFxuICB0b21hdG86IDB4ZmY2MzQ3LFxuICB0dXJxdW9pc2U6IDB4NDBlMGQwLFxuICB2aW9sZXQ6IDB4ZWU4MmVlLFxuICB3aGVhdDogMHhmNWRlYjMsXG4gIHdoaXRlOiAweGZmZmZmZixcbiAgd2hpdGVzbW9rZTogMHhmNWY1ZjUsXG4gIHllbGxvdzogMHhmZmZmMDAsXG4gIHllbGxvd2dyZWVuOiAweDlhY2QzMlxufTtcblxuZGVmaW5lKENvbG9yLCBjb2xvciwge1xuICBjb3B5OiBmdW5jdGlvbihjaGFubmVscykge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLCB0aGlzLCBjaGFubmVscyk7XG4gIH0sXG4gIGRpc3BsYXlhYmxlOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpO1xuICB9LFxuICBoZXg6IGNvbG9yX2Zvcm1hdEhleCwgLy8gRGVwcmVjYXRlZCEgVXNlIGNvbG9yLmZvcm1hdEhleC5cbiAgZm9ybWF0SGV4OiBjb2xvcl9mb3JtYXRIZXgsXG4gIGZvcm1hdEhzbDogY29sb3JfZm9ybWF0SHNsLFxuICBmb3JtYXRSZ2I6IGNvbG9yX2Zvcm1hdFJnYixcbiAgdG9TdHJpbmc6IGNvbG9yX2Zvcm1hdFJnYlxufSk7XG5cbmZ1bmN0aW9uIGNvbG9yX2Zvcm1hdEhleCgpIHtcbiAgcmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4KCk7XG59XG5cbmZ1bmN0aW9uIGNvbG9yX2Zvcm1hdEhzbCgpIHtcbiAgcmV0dXJuIGhzbENvbnZlcnQodGhpcykuZm9ybWF0SHNsKCk7XG59XG5cbmZ1bmN0aW9uIGNvbG9yX2Zvcm1hdFJnYigpIHtcbiAgcmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbG9yKGZvcm1hdCkge1xuICB2YXIgbSwgbDtcbiAgZm9ybWF0ID0gKGZvcm1hdCArIFwiXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gKG0gPSByZUhleC5leGVjKGZvcm1hdCkpID8gKGwgPSBtWzFdLmxlbmd0aCwgbSA9IHBhcnNlSW50KG1bMV0sIDE2KSwgbCA9PT0gNiA/IHJnYm4obSkgLy8gI2ZmMDAwMFxuICAgICAgOiBsID09PSAzID8gbmV3IFJnYigobSA+PiA4ICYgMHhmKSB8IChtID4+IDQgJiAweGYwKSwgKG0gPj4gNCAmIDB4ZikgfCAobSAmIDB4ZjApLCAoKG0gJiAweGYpIDw8IDQpIHwgKG0gJiAweGYpLCAxKSAvLyAjZjAwXG4gICAgICA6IGwgPT09IDggPyByZ2JhKG0gPj4gMjQgJiAweGZmLCBtID4+IDE2ICYgMHhmZiwgbSA+PiA4ICYgMHhmZiwgKG0gJiAweGZmKSAvIDB4ZmYpIC8vICNmZjAwMDAwMFxuICAgICAgOiBsID09PSA0ID8gcmdiYSgobSA+PiAxMiAmIDB4ZikgfCAobSA+PiA4ICYgMHhmMCksIChtID4+IDggJiAweGYpIHwgKG0gPj4gNCAmIDB4ZjApLCAobSA+PiA0ICYgMHhmKSB8IChtICYgMHhmMCksICgoKG0gJiAweGYpIDw8IDQpIHwgKG0gJiAweGYpKSAvIDB4ZmYpIC8vICNmMDAwXG4gICAgICA6IG51bGwpIC8vIGludmFsaWQgaGV4XG4gICAgICA6IChtID0gcmVSZ2JJbnRlZ2VyLmV4ZWMoZm9ybWF0KSkgPyBuZXcgUmdiKG1bMV0sIG1bMl0sIG1bM10sIDEpIC8vIHJnYigyNTUsIDAsIDApXG4gICAgICA6IChtID0gcmVSZ2JQZXJjZW50LmV4ZWMoZm9ybWF0KSkgPyBuZXcgUmdiKG1bMV0gKiAyNTUgLyAxMDAsIG1bMl0gKiAyNTUgLyAxMDAsIG1bM10gKiAyNTUgLyAxMDAsIDEpIC8vIHJnYigxMDAlLCAwJSwgMCUpXG4gICAgICA6IChtID0gcmVSZ2JhSW50ZWdlci5leGVjKGZvcm1hdCkpID8gcmdiYShtWzFdLCBtWzJdLCBtWzNdLCBtWzRdKSAvLyByZ2JhKDI1NSwgMCwgMCwgMSlcbiAgICAgIDogKG0gPSByZVJnYmFQZXJjZW50LmV4ZWMoZm9ybWF0KSkgPyByZ2JhKG1bMV0gKiAyNTUgLyAxMDAsIG1bMl0gKiAyNTUgLyAxMDAsIG1bM10gKiAyNTUgLyAxMDAsIG1bNF0pIC8vIHJnYigxMDAlLCAwJSwgMCUsIDEpXG4gICAgICA6IChtID0gcmVIc2xQZXJjZW50LmV4ZWMoZm9ybWF0KSkgPyBoc2xhKG1bMV0sIG1bMl0gLyAxMDAsIG1bM10gLyAxMDAsIDEpIC8vIGhzbCgxMjAsIDUwJSwgNTAlKVxuICAgICAgOiAobSA9IHJlSHNsYVBlcmNlbnQuZXhlYyhmb3JtYXQpKSA/IGhzbGEobVsxXSwgbVsyXSAvIDEwMCwgbVszXSAvIDEwMCwgbVs0XSkgLy8gaHNsYSgxMjAsIDUwJSwgNTAlLCAxKVxuICAgICAgOiBuYW1lZC5oYXNPd25Qcm9wZXJ0eShmb3JtYXQpID8gcmdibihuYW1lZFtmb3JtYXRdKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgOiBmb3JtYXQgPT09IFwidHJhbnNwYXJlbnRcIiA/IG5ldyBSZ2IoTmFOLCBOYU4sIE5hTiwgMClcbiAgICAgIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gcmdibihuKSB7XG4gIHJldHVybiBuZXcgUmdiKG4gPj4gMTYgJiAweGZmLCBuID4+IDggJiAweGZmLCBuICYgMHhmZiwgMSk7XG59XG5cbmZ1bmN0aW9uIHJnYmEociwgZywgYiwgYSkge1xuICBpZiAoYSA8PSAwKSByID0gZyA9IGIgPSBOYU47XG4gIHJldHVybiBuZXcgUmdiKHIsIGcsIGIsIGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmdiQ29udmVydChvKSB7XG4gIGlmICghKG8gaW5zdGFuY2VvZiBDb2xvcikpIG8gPSBjb2xvcihvKTtcbiAgaWYgKCFvKSByZXR1cm4gbmV3IFJnYjtcbiAgbyA9IG8ucmdiKCk7XG4gIHJldHVybiBuZXcgUmdiKG8uciwgby5nLCBvLmIsIG8ub3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZ2IociwgZywgYiwgb3BhY2l0eSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IHJnYkNvbnZlcnQocikgOiBuZXcgUmdiKHIsIGcsIGIsIG9wYWNpdHkgPT0gbnVsbCA/IDEgOiBvcGFjaXR5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJnYihyLCBnLCBiLCBvcGFjaXR5KSB7XG4gIHRoaXMuciA9ICtyO1xuICB0aGlzLmcgPSArZztcbiAgdGhpcy5iID0gK2I7XG4gIHRoaXMub3BhY2l0eSA9ICtvcGFjaXR5O1xufVxuXG5kZWZpbmUoUmdiLCByZ2IsIGV4dGVuZChDb2xvciwge1xuICBicmlnaHRlcjogZnVuY3Rpb24oaykge1xuICAgIGsgPSBrID09IG51bGwgPyBicmlnaHRlciA6IE1hdGgucG93KGJyaWdodGVyLCBrKTtcbiAgICByZXR1cm4gbmV3IFJnYih0aGlzLnIgKiBrLCB0aGlzLmcgKiBrLCB0aGlzLmIgKiBrLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICBkYXJrZXI6IGZ1bmN0aW9uKGspIHtcbiAgICBrID0gayA9PSBudWxsID8gZGFya2VyIDogTWF0aC5wb3coZGFya2VyLCBrKTtcbiAgICByZXR1cm4gbmV3IFJnYih0aGlzLnIgKiBrLCB0aGlzLmcgKiBrLCB0aGlzLmIgKiBrLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICByZ2I6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBkaXNwbGF5YWJsZTogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICgtMC41IDw9IHRoaXMuciAmJiB0aGlzLnIgPCAyNTUuNSlcbiAgICAgICAgJiYgKC0wLjUgPD0gdGhpcy5nICYmIHRoaXMuZyA8IDI1NS41KVxuICAgICAgICAmJiAoLTAuNSA8PSB0aGlzLmIgJiYgdGhpcy5iIDwgMjU1LjUpXG4gICAgICAgICYmICgwIDw9IHRoaXMub3BhY2l0eSAmJiB0aGlzLm9wYWNpdHkgPD0gMSk7XG4gIH0sXG4gIGhleDogcmdiX2Zvcm1hdEhleCwgLy8gRGVwcmVjYXRlZCEgVXNlIGNvbG9yLmZvcm1hdEhleC5cbiAgZm9ybWF0SGV4OiByZ2JfZm9ybWF0SGV4LFxuICBmb3JtYXRSZ2I6IHJnYl9mb3JtYXRSZ2IsXG4gIHRvU3RyaW5nOiByZ2JfZm9ybWF0UmdiXG59KSk7XG5cbmZ1bmN0aW9uIHJnYl9mb3JtYXRIZXgoKSB7XG4gIHJldHVybiBcIiNcIiArIGhleCh0aGlzLnIpICsgaGV4KHRoaXMuZykgKyBoZXgodGhpcy5iKTtcbn1cblxuZnVuY3Rpb24gcmdiX2Zvcm1hdFJnYigpIHtcbiAgdmFyIGEgPSB0aGlzLm9wYWNpdHk7IGEgPSBpc05hTihhKSA/IDEgOiBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBhKSk7XG4gIHJldHVybiAoYSA9PT0gMSA/IFwicmdiKFwiIDogXCJyZ2JhKFwiKVxuICAgICAgKyBNYXRoLm1heCgwLCBNYXRoLm1pbigyNTUsIE1hdGgucm91bmQodGhpcy5yKSB8fCAwKSkgKyBcIiwgXCJcbiAgICAgICsgTWF0aC5tYXgoMCwgTWF0aC5taW4oMjU1LCBNYXRoLnJvdW5kKHRoaXMuZykgfHwgMCkpICsgXCIsIFwiXG4gICAgICArIE1hdGgubWF4KDAsIE1hdGgubWluKDI1NSwgTWF0aC5yb3VuZCh0aGlzLmIpIHx8IDApKVxuICAgICAgKyAoYSA9PT0gMSA/IFwiKVwiIDogXCIsIFwiICsgYSArIFwiKVwiKTtcbn1cblxuZnVuY3Rpb24gaGV4KHZhbHVlKSB7XG4gIHZhbHVlID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMjU1LCBNYXRoLnJvdW5kKHZhbHVlKSB8fCAwKSk7XG4gIHJldHVybiAodmFsdWUgPCAxNiA/IFwiMFwiIDogXCJcIikgKyB2YWx1ZS50b1N0cmluZygxNik7XG59XG5cbmZ1bmN0aW9uIGhzbGEoaCwgcywgbCwgYSkge1xuICBpZiAoYSA8PSAwKSBoID0gcyA9IGwgPSBOYU47XG4gIGVsc2UgaWYgKGwgPD0gMCB8fCBsID49IDEpIGggPSBzID0gTmFOO1xuICBlbHNlIGlmIChzIDw9IDApIGggPSBOYU47XG4gIHJldHVybiBuZXcgSHNsKGgsIHMsIGwsIGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHNsQ29udmVydChvKSB7XG4gIGlmIChvIGluc3RhbmNlb2YgSHNsKSByZXR1cm4gbmV3IEhzbChvLmgsIG8ucywgby5sLCBvLm9wYWNpdHkpO1xuICBpZiAoIShvIGluc3RhbmNlb2YgQ29sb3IpKSBvID0gY29sb3Iobyk7XG4gIGlmICghbykgcmV0dXJuIG5ldyBIc2w7XG4gIGlmIChvIGluc3RhbmNlb2YgSHNsKSByZXR1cm4gbztcbiAgbyA9IG8ucmdiKCk7XG4gIHZhciByID0gby5yIC8gMjU1LFxuICAgICAgZyA9IG8uZyAvIDI1NSxcbiAgICAgIGIgPSBvLmIgLyAyNTUsXG4gICAgICBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKSxcbiAgICAgIG1heCA9IE1hdGgubWF4KHIsIGcsIGIpLFxuICAgICAgaCA9IE5hTixcbiAgICAgIHMgPSBtYXggLSBtaW4sXG4gICAgICBsID0gKG1heCArIG1pbikgLyAyO1xuICBpZiAocykge1xuICAgIGlmIChyID09PSBtYXgpIGggPSAoZyAtIGIpIC8gcyArIChnIDwgYikgKiA2O1xuICAgIGVsc2UgaWYgKGcgPT09IG1heCkgaCA9IChiIC0gcikgLyBzICsgMjtcbiAgICBlbHNlIGggPSAociAtIGcpIC8gcyArIDQ7XG4gICAgcyAvPSBsIDwgMC41ID8gbWF4ICsgbWluIDogMiAtIG1heCAtIG1pbjtcbiAgICBoICo9IDYwO1xuICB9IGVsc2Uge1xuICAgIHMgPSBsID4gMCAmJiBsIDwgMSA/IDAgOiBoO1xuICB9XG4gIHJldHVybiBuZXcgSHNsKGgsIHMsIGwsIG8ub3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoc2woaCwgcywgbCwgb3BhY2l0eSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IGhzbENvbnZlcnQoaCkgOiBuZXcgSHNsKGgsIHMsIGwsIG9wYWNpdHkgPT0gbnVsbCA/IDEgOiBvcGFjaXR5KTtcbn1cblxuZnVuY3Rpb24gSHNsKGgsIHMsIGwsIG9wYWNpdHkpIHtcbiAgdGhpcy5oID0gK2g7XG4gIHRoaXMucyA9ICtzO1xuICB0aGlzLmwgPSArbDtcbiAgdGhpcy5vcGFjaXR5ID0gK29wYWNpdHk7XG59XG5cbmRlZmluZShIc2wsIGhzbCwgZXh0ZW5kKENvbG9yLCB7XG4gIGJyaWdodGVyOiBmdW5jdGlvbihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGJyaWdodGVyIDogTWF0aC5wb3coYnJpZ2h0ZXIsIGspO1xuICAgIHJldHVybiBuZXcgSHNsKHRoaXMuaCwgdGhpcy5zLCB0aGlzLmwgKiBrLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICBkYXJrZXI6IGZ1bmN0aW9uKGspIHtcbiAgICBrID0gayA9PSBudWxsID8gZGFya2VyIDogTWF0aC5wb3coZGFya2VyLCBrKTtcbiAgICByZXR1cm4gbmV3IEhzbCh0aGlzLmgsIHRoaXMucywgdGhpcy5sICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgcmdiOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgaCA9IHRoaXMuaCAlIDM2MCArICh0aGlzLmggPCAwKSAqIDM2MCxcbiAgICAgICAgcyA9IGlzTmFOKGgpIHx8IGlzTmFOKHRoaXMucykgPyAwIDogdGhpcy5zLFxuICAgICAgICBsID0gdGhpcy5sLFxuICAgICAgICBtMiA9IGwgKyAobCA8IDAuNSA/IGwgOiAxIC0gbCkgKiBzLFxuICAgICAgICBtMSA9IDIgKiBsIC0gbTI7XG4gICAgcmV0dXJuIG5ldyBSZ2IoXG4gICAgICBoc2wycmdiKGggPj0gMjQwID8gaCAtIDI0MCA6IGggKyAxMjAsIG0xLCBtMiksXG4gICAgICBoc2wycmdiKGgsIG0xLCBtMiksXG4gICAgICBoc2wycmdiKGggPCAxMjAgPyBoICsgMjQwIDogaCAtIDEyMCwgbTEsIG0yKSxcbiAgICAgIHRoaXMub3BhY2l0eVxuICAgICk7XG4gIH0sXG4gIGRpc3BsYXlhYmxlOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gKDAgPD0gdGhpcy5zICYmIHRoaXMucyA8PSAxIHx8IGlzTmFOKHRoaXMucykpXG4gICAgICAgICYmICgwIDw9IHRoaXMubCAmJiB0aGlzLmwgPD0gMSlcbiAgICAgICAgJiYgKDAgPD0gdGhpcy5vcGFjaXR5ICYmIHRoaXMub3BhY2l0eSA8PSAxKTtcbiAgfSxcbiAgZm9ybWF0SHNsOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgYSA9IHRoaXMub3BhY2l0eTsgYSA9IGlzTmFOKGEpID8gMSA6IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIGEpKTtcbiAgICByZXR1cm4gKGEgPT09IDEgPyBcImhzbChcIiA6IFwiaHNsYShcIilcbiAgICAgICAgKyAodGhpcy5oIHx8IDApICsgXCIsIFwiXG4gICAgICAgICsgKHRoaXMucyB8fCAwKSAqIDEwMCArIFwiJSwgXCJcbiAgICAgICAgKyAodGhpcy5sIHx8IDApICogMTAwICsgXCIlXCJcbiAgICAgICAgKyAoYSA9PT0gMSA/IFwiKVwiIDogXCIsIFwiICsgYSArIFwiKVwiKTtcbiAgfVxufSkpO1xuXG4vKiBGcm9tIEZ2RCAxMy4zNywgQ1NTIENvbG9yIE1vZHVsZSBMZXZlbCAzICovXG5mdW5jdGlvbiBoc2wycmdiKGgsIG0xLCBtMikge1xuICByZXR1cm4gKGggPCA2MCA/IG0xICsgKG0yIC0gbTEpICogaCAvIDYwXG4gICAgICA6IGggPCAxODAgPyBtMlxuICAgICAgOiBoIDwgMjQwID8gbTEgKyAobTIgLSBtMSkgKiAoMjQwIC0gaCkgLyA2MFxuICAgICAgOiBtMSkgKiAyNTU7XG59XG4iLCAiZXhwb3J0IGNvbnN0IHJhZGlhbnMgPSBNYXRoLlBJIC8gMTgwO1xuZXhwb3J0IGNvbnN0IGRlZ3JlZXMgPSAxODAgLyBNYXRoLlBJO1xuIiwgImltcG9ydCBkZWZpbmUsIHtleHRlbmR9IGZyb20gXCIuL2RlZmluZS5qc1wiO1xuaW1wb3J0IHtDb2xvciwgcmdiQ29udmVydCwgUmdiLCBkYXJrZXIsIGJyaWdodGVyfSBmcm9tIFwiLi9jb2xvci5qc1wiO1xuaW1wb3J0IHtkZWdyZWVzLCByYWRpYW5zfSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5cbnZhciBBID0gLTAuMTQ4NjEsXG4gICAgQiA9ICsxLjc4Mjc3LFxuICAgIEMgPSAtMC4yOTIyNyxcbiAgICBEID0gLTAuOTA2NDksXG4gICAgRSA9ICsxLjk3Mjk0LFxuICAgIEVEID0gRSAqIEQsXG4gICAgRUIgPSBFICogQixcbiAgICBCQ19EQSA9IEIgKiBDIC0gRCAqIEE7XG5cbmZ1bmN0aW9uIGN1YmVoZWxpeENvbnZlcnQobykge1xuICBpZiAobyBpbnN0YW5jZW9mIEN1YmVoZWxpeCkgcmV0dXJuIG5ldyBDdWJlaGVsaXgoby5oLCBvLnMsIG8ubCwgby5vcGFjaXR5KTtcbiAgaWYgKCEobyBpbnN0YW5jZW9mIFJnYikpIG8gPSByZ2JDb252ZXJ0KG8pO1xuICB2YXIgciA9IG8uciAvIDI1NSxcbiAgICAgIGcgPSBvLmcgLyAyNTUsXG4gICAgICBiID0gby5iIC8gMjU1LFxuICAgICAgbCA9IChCQ19EQSAqIGIgKyBFRCAqIHIgLSBFQiAqIGcpIC8gKEJDX0RBICsgRUQgLSBFQiksXG4gICAgICBibCA9IGIgLSBsLFxuICAgICAgayA9IChFICogKGcgLSBsKSAtIEMgKiBibCkgLyBELFxuICAgICAgcyA9IE1hdGguc3FydChrICogayArIGJsICogYmwpIC8gKEUgKiBsICogKDEgLSBsKSksIC8vIE5hTiBpZiBsPTAgb3IgbD0xXG4gICAgICBoID0gcyA/IE1hdGguYXRhbjIoaywgYmwpICogZGVncmVlcyAtIDEyMCA6IE5hTjtcbiAgcmV0dXJuIG5ldyBDdWJlaGVsaXgoaCA8IDAgPyBoICsgMzYwIDogaCwgcywgbCwgby5vcGFjaXR5KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3ViZWhlbGl4KGgsIHMsIGwsIG9wYWNpdHkpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBjdWJlaGVsaXhDb252ZXJ0KGgpIDogbmV3IEN1YmVoZWxpeChoLCBzLCBsLCBvcGFjaXR5ID09IG51bGwgPyAxIDogb3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDdWJlaGVsaXgoaCwgcywgbCwgb3BhY2l0eSkge1xuICB0aGlzLmggPSAraDtcbiAgdGhpcy5zID0gK3M7XG4gIHRoaXMubCA9ICtsO1xuICB0aGlzLm9wYWNpdHkgPSArb3BhY2l0eTtcbn1cblxuZGVmaW5lKEN1YmVoZWxpeCwgY3ViZWhlbGl4LCBleHRlbmQoQ29sb3IsIHtcbiAgYnJpZ2h0ZXI6IGZ1bmN0aW9uKGspIHtcbiAgICBrID0gayA9PSBudWxsID8gYnJpZ2h0ZXIgOiBNYXRoLnBvdyhicmlnaHRlciwgayk7XG4gICAgcmV0dXJuIG5ldyBDdWJlaGVsaXgodGhpcy5oLCB0aGlzLnMsIHRoaXMubCAqIGssIHRoaXMub3BhY2l0eSk7XG4gIH0sXG4gIGRhcmtlcjogZnVuY3Rpb24oaykge1xuICAgIGsgPSBrID09IG51bGwgPyBkYXJrZXIgOiBNYXRoLnBvdyhkYXJrZXIsIGspO1xuICAgIHJldHVybiBuZXcgQ3ViZWhlbGl4KHRoaXMuaCwgdGhpcy5zLCB0aGlzLmwgKiBrLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICByZ2I6IGZ1bmN0aW9uKCkge1xuICAgIHZhciBoID0gaXNOYU4odGhpcy5oKSA/IDAgOiAodGhpcy5oICsgMTIwKSAqIHJhZGlhbnMsXG4gICAgICAgIGwgPSArdGhpcy5sLFxuICAgICAgICBhID0gaXNOYU4odGhpcy5zKSA/IDAgOiB0aGlzLnMgKiBsICogKDEgLSBsKSxcbiAgICAgICAgY29zaCA9IE1hdGguY29zKGgpLFxuICAgICAgICBzaW5oID0gTWF0aC5zaW4oaCk7XG4gICAgcmV0dXJuIG5ldyBSZ2IoXG4gICAgICAyNTUgKiAobCArIGEgKiAoQSAqIGNvc2ggKyBCICogc2luaCkpLFxuICAgICAgMjU1ICogKGwgKyBhICogKEMgKiBjb3NoICsgRCAqIHNpbmgpKSxcbiAgICAgIDI1NSAqIChsICsgYSAqIChFICogY29zaCkpLFxuICAgICAgdGhpcy5vcGFjaXR5XG4gICAgKTtcbiAgfVxufSkpO1xuIiwgImV4cG9ydCBmdW5jdGlvbiBiYXNpcyh0MSwgdjAsIHYxLCB2MiwgdjMpIHtcbiAgdmFyIHQyID0gdDEgKiB0MSwgdDMgPSB0MiAqIHQxO1xuICByZXR1cm4gKCgxIC0gMyAqIHQxICsgMyAqIHQyIC0gdDMpICogdjBcbiAgICAgICsgKDQgLSA2ICogdDIgKyAzICogdDMpICogdjFcbiAgICAgICsgKDEgKyAzICogdDEgKyAzICogdDIgLSAzICogdDMpICogdjJcbiAgICAgICsgdDMgKiB2MykgLyA2O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZXMpIHtcbiAgdmFyIG4gPSB2YWx1ZXMubGVuZ3RoIC0gMTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgaSA9IHQgPD0gMCA/ICh0ID0gMCkgOiB0ID49IDEgPyAodCA9IDEsIG4gLSAxKSA6IE1hdGguZmxvb3IodCAqIG4pLFxuICAgICAgICB2MSA9IHZhbHVlc1tpXSxcbiAgICAgICAgdjIgPSB2YWx1ZXNbaSArIDFdLFxuICAgICAgICB2MCA9IGkgPiAwID8gdmFsdWVzW2kgLSAxXSA6IDIgKiB2MSAtIHYyLFxuICAgICAgICB2MyA9IGkgPCBuIC0gMSA/IHZhbHVlc1tpICsgMl0gOiAyICogdjIgLSB2MTtcbiAgICByZXR1cm4gYmFzaXMoKHQgLSBpIC8gbikgKiBuLCB2MCwgdjEsIHYyLCB2Myk7XG4gIH07XG59XG4iLCAiaW1wb3J0IHtiYXNpc30gZnJvbSBcIi4vYmFzaXMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWVzKSB7XG4gIHZhciBuID0gdmFsdWVzLmxlbmd0aDtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgaSA9IE1hdGguZmxvb3IoKCh0ICU9IDEpIDwgMCA/ICsrdCA6IHQpICogbiksXG4gICAgICAgIHYwID0gdmFsdWVzWyhpICsgbiAtIDEpICUgbl0sXG4gICAgICAgIHYxID0gdmFsdWVzW2kgJSBuXSxcbiAgICAgICAgdjIgPSB2YWx1ZXNbKGkgKyAxKSAlIG5dLFxuICAgICAgICB2MyA9IHZhbHVlc1soaSArIDIpICUgbl07XG4gICAgcmV0dXJuIGJhc2lzKCh0IC0gaSAvIG4pICogbiwgdjAsIHYxLCB2MiwgdjMpO1xuICB9O1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IHggPT4gKCkgPT4geDtcbiIsICJpbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcblxuZnVuY3Rpb24gbGluZWFyKGEsIGQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gYSArIHQgKiBkO1xuICB9O1xufVxuXG5mdW5jdGlvbiBleHBvbmVudGlhbChhLCBiLCB5KSB7XG4gIHJldHVybiBhID0gTWF0aC5wb3coYSwgeSksIGIgPSBNYXRoLnBvdyhiLCB5KSAtIGEsIHkgPSAxIC8geSwgZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBNYXRoLnBvdyhhICsgdCAqIGIsIHkpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHVlKGEsIGIpIHtcbiAgdmFyIGQgPSBiIC0gYTtcbiAgcmV0dXJuIGQgPyBsaW5lYXIoYSwgZCA+IDE4MCB8fCBkIDwgLTE4MCA/IGQgLSAzNjAgKiBNYXRoLnJvdW5kKGQgLyAzNjApIDogZCkgOiBjb25zdGFudChpc05hTihhKSA/IGIgOiBhKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdhbW1hKHkpIHtcbiAgcmV0dXJuICh5ID0gK3kpID09PSAxID8gbm9nYW1tYSA6IGZ1bmN0aW9uKGEsIGIpIHtcbiAgICByZXR1cm4gYiAtIGEgPyBleHBvbmVudGlhbChhLCBiLCB5KSA6IGNvbnN0YW50KGlzTmFOKGEpID8gYiA6IGEpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBub2dhbW1hKGEsIGIpIHtcbiAgdmFyIGQgPSBiIC0gYTtcbiAgcmV0dXJuIGQgPyBsaW5lYXIoYSwgZCkgOiBjb25zdGFudChpc05hTihhKSA/IGIgOiBhKTtcbn1cbiIsICJpbXBvcnQge3JnYiBhcyBjb2xvclJnYn0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgYmFzaXMgZnJvbSBcIi4vYmFzaXMuanNcIjtcbmltcG9ydCBiYXNpc0Nsb3NlZCBmcm9tIFwiLi9iYXNpc0Nsb3NlZC5qc1wiO1xuaW1wb3J0IG5vZ2FtbWEsIHtnYW1tYX0gZnJvbSBcIi4vY29sb3IuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIHJnYkdhbW1hKHkpIHtcbiAgdmFyIGNvbG9yID0gZ2FtbWEoeSk7XG5cbiAgZnVuY3Rpb24gcmdiKHN0YXJ0LCBlbmQpIHtcbiAgICB2YXIgciA9IGNvbG9yKChzdGFydCA9IGNvbG9yUmdiKHN0YXJ0KSkuciwgKGVuZCA9IGNvbG9yUmdiKGVuZCkpLnIpLFxuICAgICAgICBnID0gY29sb3Ioc3RhcnQuZywgZW5kLmcpLFxuICAgICAgICBiID0gY29sb3Ioc3RhcnQuYiwgZW5kLmIpLFxuICAgICAgICBvcGFjaXR5ID0gbm9nYW1tYShzdGFydC5vcGFjaXR5LCBlbmQub3BhY2l0eSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIHN0YXJ0LnIgPSByKHQpO1xuICAgICAgc3RhcnQuZyA9IGcodCk7XG4gICAgICBzdGFydC5iID0gYih0KTtcbiAgICAgIHN0YXJ0Lm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgICB9O1xuICB9XG5cbiAgcmdiLmdhbW1hID0gcmdiR2FtbWE7XG5cbiAgcmV0dXJuIHJnYjtcbn0pKDEpO1xuXG5mdW5jdGlvbiByZ2JTcGxpbmUoc3BsaW5lKSB7XG4gIHJldHVybiBmdW5jdGlvbihjb2xvcnMpIHtcbiAgICB2YXIgbiA9IGNvbG9ycy5sZW5ndGgsXG4gICAgICAgIHIgPSBuZXcgQXJyYXkobiksXG4gICAgICAgIGcgPSBuZXcgQXJyYXkobiksXG4gICAgICAgIGIgPSBuZXcgQXJyYXkobiksXG4gICAgICAgIGksIGNvbG9yO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGNvbG9yID0gY29sb3JSZ2IoY29sb3JzW2ldKTtcbiAgICAgIHJbaV0gPSBjb2xvci5yIHx8IDA7XG4gICAgICBnW2ldID0gY29sb3IuZyB8fCAwO1xuICAgICAgYltpXSA9IGNvbG9yLmIgfHwgMDtcbiAgICB9XG4gICAgciA9IHNwbGluZShyKTtcbiAgICBnID0gc3BsaW5lKGcpO1xuICAgIGIgPSBzcGxpbmUoYik7XG4gICAgY29sb3Iub3BhY2l0eSA9IDE7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIGNvbG9yLnIgPSByKHQpO1xuICAgICAgY29sb3IuZyA9IGcodCk7XG4gICAgICBjb2xvci5iID0gYih0KTtcbiAgICAgIHJldHVybiBjb2xvciArIFwiXCI7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IHZhciByZ2JCYXNpcyA9IHJnYlNwbGluZShiYXNpcyk7XG5leHBvcnQgdmFyIHJnYkJhc2lzQ2xvc2VkID0gcmdiU3BsaW5lKGJhc2lzQ2xvc2VkKTtcbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIGlmICghYikgYiA9IFtdO1xuICB2YXIgbiA9IGEgPyBNYXRoLm1pbihiLmxlbmd0aCwgYS5sZW5ndGgpIDogMCxcbiAgICAgIGMgPSBiLnNsaWNlKCksXG4gICAgICBpO1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIGNbaV0gPSBhW2ldICogKDEgLSB0KSArIGJbaV0gKiB0O1xuICAgIHJldHVybiBjO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXJBcnJheSh4KSB7XG4gIHJldHVybiBBcnJheUJ1ZmZlci5pc1ZpZXcoeCkgJiYgISh4IGluc3RhbmNlb2YgRGF0YVZpZXcpO1xufVxuIiwgImltcG9ydCB2YWx1ZSBmcm9tIFwiLi92YWx1ZS5qc1wiO1xuaW1wb3J0IG51bWJlckFycmF5LCB7aXNOdW1iZXJBcnJheX0gZnJvbSBcIi4vbnVtYmVyQXJyYXkuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gKGlzTnVtYmVyQXJyYXkoYikgPyBudW1iZXJBcnJheSA6IGdlbmVyaWNBcnJheSkoYSwgYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmljQXJyYXkoYSwgYikge1xuICB2YXIgbmIgPSBiID8gYi5sZW5ndGggOiAwLFxuICAgICAgbmEgPSBhID8gTWF0aC5taW4obmIsIGEubGVuZ3RoKSA6IDAsXG4gICAgICB4ID0gbmV3IEFycmF5KG5hKSxcbiAgICAgIGMgPSBuZXcgQXJyYXkobmIpLFxuICAgICAgaTtcblxuICBmb3IgKGkgPSAwOyBpIDwgbmE7ICsraSkgeFtpXSA9IHZhbHVlKGFbaV0sIGJbaV0pO1xuICBmb3IgKDsgaSA8IG5iOyArK2kpIGNbaV0gPSBiW2ldO1xuXG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgZm9yIChpID0gMDsgaSA8IG5hOyArK2kpIGNbaV0gPSB4W2ldKHQpO1xuICAgIHJldHVybiBjO1xuICB9O1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZTtcbiAgcmV0dXJuIGEgPSArYSwgYiA9ICtiLCBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIGQuc2V0VGltZShhICogKDEgLSB0KSArIGIgKiB0KSwgZDtcbiAgfTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHJldHVybiBhID0gK2EsIGIgPSArYiwgZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBhICogKDEgLSB0KSArIGIgKiB0O1xuICB9O1xufVxuIiwgImltcG9ydCB2YWx1ZSBmcm9tIFwiLi92YWx1ZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciBpID0ge30sXG4gICAgICBjID0ge30sXG4gICAgICBrO1xuXG4gIGlmIChhID09PSBudWxsIHx8IHR5cGVvZiBhICE9PSBcIm9iamVjdFwiKSBhID0ge307XG4gIGlmIChiID09PSBudWxsIHx8IHR5cGVvZiBiICE9PSBcIm9iamVjdFwiKSBiID0ge307XG5cbiAgZm9yIChrIGluIGIpIHtcbiAgICBpZiAoayBpbiBhKSB7XG4gICAgICBpW2tdID0gdmFsdWUoYVtrXSwgYltrXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNba10gPSBiW2tdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgZm9yIChrIGluIGkpIGNba10gPSBpW2tdKHQpO1xuICAgIHJldHVybiBjO1xuICB9O1xufVxuIiwgImltcG9ydCBudW1iZXIgZnJvbSBcIi4vbnVtYmVyLmpzXCI7XG5cbnZhciByZUEgPSAvWy0rXT8oPzpcXGQrXFwuP1xcZCp8XFwuP1xcZCspKD86W2VFXVstK10/XFxkKyk/L2csXG4gICAgcmVCID0gbmV3IFJlZ0V4cChyZUEuc291cmNlLCBcImdcIik7XG5cbmZ1bmN0aW9uIHplcm8oYikge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGI7XG4gIH07XG59XG5cbmZ1bmN0aW9uIG9uZShiKSB7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIGIodCkgKyBcIlwiO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciBiaSA9IHJlQS5sYXN0SW5kZXggPSByZUIubGFzdEluZGV4ID0gMCwgLy8gc2NhbiBpbmRleCBmb3IgbmV4dCBudW1iZXIgaW4gYlxuICAgICAgYW0sIC8vIGN1cnJlbnQgbWF0Y2ggaW4gYVxuICAgICAgYm0sIC8vIGN1cnJlbnQgbWF0Y2ggaW4gYlxuICAgICAgYnMsIC8vIHN0cmluZyBwcmVjZWRpbmcgY3VycmVudCBudW1iZXIgaW4gYiwgaWYgYW55XG4gICAgICBpID0gLTEsIC8vIGluZGV4IGluIHNcbiAgICAgIHMgPSBbXSwgLy8gc3RyaW5nIGNvbnN0YW50cyBhbmQgcGxhY2Vob2xkZXJzXG4gICAgICBxID0gW107IC8vIG51bWJlciBpbnRlcnBvbGF0b3JzXG5cbiAgLy8gQ29lcmNlIGlucHV0cyB0byBzdHJpbmdzLlxuICBhID0gYSArIFwiXCIsIGIgPSBiICsgXCJcIjtcblxuICAvLyBJbnRlcnBvbGF0ZSBwYWlycyBvZiBudW1iZXJzIGluIGEgJiBiLlxuICB3aGlsZSAoKGFtID0gcmVBLmV4ZWMoYSkpXG4gICAgICAmJiAoYm0gPSByZUIuZXhlYyhiKSkpIHtcbiAgICBpZiAoKGJzID0gYm0uaW5kZXgpID4gYmkpIHsgLy8gYSBzdHJpbmcgcHJlY2VkZXMgdGhlIG5leHQgbnVtYmVyIGluIGJcbiAgICAgIGJzID0gYi5zbGljZShiaSwgYnMpO1xuICAgICAgaWYgKHNbaV0pIHNbaV0gKz0gYnM7IC8vIGNvYWxlc2NlIHdpdGggcHJldmlvdXMgc3RyaW5nXG4gICAgICBlbHNlIHNbKytpXSA9IGJzO1xuICAgIH1cbiAgICBpZiAoKGFtID0gYW1bMF0pID09PSAoYm0gPSBibVswXSkpIHsgLy8gbnVtYmVycyBpbiBhICYgYiBtYXRjaFxuICAgICAgaWYgKHNbaV0pIHNbaV0gKz0gYm07IC8vIGNvYWxlc2NlIHdpdGggcHJldmlvdXMgc3RyaW5nXG4gICAgICBlbHNlIHNbKytpXSA9IGJtO1xuICAgIH0gZWxzZSB7IC8vIGludGVycG9sYXRlIG5vbi1tYXRjaGluZyBudW1iZXJzXG4gICAgICBzWysraV0gPSBudWxsO1xuICAgICAgcS5wdXNoKHtpOiBpLCB4OiBudW1iZXIoYW0sIGJtKX0pO1xuICAgIH1cbiAgICBiaSA9IHJlQi5sYXN0SW5kZXg7XG4gIH1cblxuICAvLyBBZGQgcmVtYWlucyBvZiBiLlxuICBpZiAoYmkgPCBiLmxlbmd0aCkge1xuICAgIGJzID0gYi5zbGljZShiaSk7XG4gICAgaWYgKHNbaV0pIHNbaV0gKz0gYnM7IC8vIGNvYWxlc2NlIHdpdGggcHJldmlvdXMgc3RyaW5nXG4gICAgZWxzZSBzWysraV0gPSBicztcbiAgfVxuXG4gIC8vIFNwZWNpYWwgb3B0aW1pemF0aW9uIGZvciBvbmx5IGEgc2luZ2xlIG1hdGNoLlxuICAvLyBPdGhlcndpc2UsIGludGVycG9sYXRlIGVhY2ggb2YgdGhlIG51bWJlcnMgYW5kIHJlam9pbiB0aGUgc3RyaW5nLlxuICByZXR1cm4gcy5sZW5ndGggPCAyID8gKHFbMF1cbiAgICAgID8gb25lKHFbMF0ueClcbiAgICAgIDogemVybyhiKSlcbiAgICAgIDogKGIgPSBxLmxlbmd0aCwgZnVuY3Rpb24odCkge1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBvOyBpIDwgYjsgKytpKSBzWyhvID0gcVtpXSkuaV0gPSBvLngodCk7XG4gICAgICAgICAgcmV0dXJuIHMuam9pbihcIlwiKTtcbiAgICAgICAgfSk7XG59XG4iLCAiaW1wb3J0IHtjb2xvcn0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgcmdiIGZyb20gXCIuL3JnYi5qc1wiO1xuaW1wb3J0IHtnZW5lcmljQXJyYXl9IGZyb20gXCIuL2FycmF5LmpzXCI7XG5pbXBvcnQgZGF0ZSBmcm9tIFwiLi9kYXRlLmpzXCI7XG5pbXBvcnQgbnVtYmVyIGZyb20gXCIuL251bWJlci5qc1wiO1xuaW1wb3J0IG9iamVjdCBmcm9tIFwiLi9vYmplY3QuanNcIjtcbmltcG9ydCBzdHJpbmcgZnJvbSBcIi4vc3RyaW5nLmpzXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBudW1iZXJBcnJheSwge2lzTnVtYmVyQXJyYXl9IGZyb20gXCIuL251bWJlckFycmF5LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIHQgPSB0eXBlb2YgYiwgYztcbiAgcmV0dXJuIGIgPT0gbnVsbCB8fCB0ID09PSBcImJvb2xlYW5cIiA/IGNvbnN0YW50KGIpXG4gICAgICA6ICh0ID09PSBcIm51bWJlclwiID8gbnVtYmVyXG4gICAgICA6IHQgPT09IFwic3RyaW5nXCIgPyAoKGMgPSBjb2xvcihiKSkgPyAoYiA9IGMsIHJnYikgOiBzdHJpbmcpXG4gICAgICA6IGIgaW5zdGFuY2VvZiBjb2xvciA/IHJnYlxuICAgICAgOiBiIGluc3RhbmNlb2YgRGF0ZSA/IGRhdGVcbiAgICAgIDogaXNOdW1iZXJBcnJheShiKSA/IG51bWJlckFycmF5XG4gICAgICA6IEFycmF5LmlzQXJyYXkoYikgPyBnZW5lcmljQXJyYXlcbiAgICAgIDogdHlwZW9mIGIudmFsdWVPZiAhPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBiLnRvU3RyaW5nICE9PSBcImZ1bmN0aW9uXCIgfHwgaXNOYU4oYikgPyBvYmplY3RcbiAgICAgIDogbnVtYmVyKShhLCBiKTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHJldHVybiBhID0gK2EsIGIgPSArYiwgZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKGEgKiAoMSAtIHQpICsgYiAqIHQpO1xuICB9O1xufVxuIiwgInZhciBkZWdyZWVzID0gMTgwIC8gTWF0aC5QSTtcblxuZXhwb3J0IHZhciBpZGVudGl0eSA9IHtcbiAgdHJhbnNsYXRlWDogMCxcbiAgdHJhbnNsYXRlWTogMCxcbiAgcm90YXRlOiAwLFxuICBza2V3WDogMCxcbiAgc2NhbGVYOiAxLFxuICBzY2FsZVk6IDFcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIsIGMsIGQsIGUsIGYpIHtcbiAgdmFyIHNjYWxlWCwgc2NhbGVZLCBza2V3WDtcbiAgaWYgKHNjYWxlWCA9IE1hdGguc3FydChhICogYSArIGIgKiBiKSkgYSAvPSBzY2FsZVgsIGIgLz0gc2NhbGVYO1xuICBpZiAoc2tld1ggPSBhICogYyArIGIgKiBkKSBjIC09IGEgKiBza2V3WCwgZCAtPSBiICogc2tld1g7XG4gIGlmIChzY2FsZVkgPSBNYXRoLnNxcnQoYyAqIGMgKyBkICogZCkpIGMgLz0gc2NhbGVZLCBkIC89IHNjYWxlWSwgc2tld1ggLz0gc2NhbGVZO1xuICBpZiAoYSAqIGQgPCBiICogYykgYSA9IC1hLCBiID0gLWIsIHNrZXdYID0gLXNrZXdYLCBzY2FsZVggPSAtc2NhbGVYO1xuICByZXR1cm4ge1xuICAgIHRyYW5zbGF0ZVg6IGUsXG4gICAgdHJhbnNsYXRlWTogZixcbiAgICByb3RhdGU6IE1hdGguYXRhbjIoYiwgYSkgKiBkZWdyZWVzLFxuICAgIHNrZXdYOiBNYXRoLmF0YW4oc2tld1gpICogZGVncmVlcyxcbiAgICBzY2FsZVg6IHNjYWxlWCxcbiAgICBzY2FsZVk6IHNjYWxlWVxuICB9O1xufVxuIiwgImltcG9ydCBkZWNvbXBvc2UsIHtpZGVudGl0eX0gZnJvbSBcIi4vZGVjb21wb3NlLmpzXCI7XG5cbnZhciBzdmdOb2RlO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ3NzKHZhbHVlKSB7XG4gIGNvbnN0IG0gPSBuZXcgKHR5cGVvZiBET01NYXRyaXggPT09IFwiZnVuY3Rpb25cIiA/IERPTU1hdHJpeCA6IFdlYktpdENTU01hdHJpeCkodmFsdWUgKyBcIlwiKTtcbiAgcmV0dXJuIG0uaXNJZGVudGl0eSA/IGlkZW50aXR5IDogZGVjb21wb3NlKG0uYSwgbS5iLCBtLmMsIG0uZCwgbS5lLCBtLmYpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTdmcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBpZGVudGl0eTtcbiAgaWYgKCFzdmdOb2RlKSBzdmdOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgXCJnXCIpO1xuICBzdmdOb2RlLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLCB2YWx1ZSk7XG4gIGlmICghKHZhbHVlID0gc3ZnTm9kZS50cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpKSkgcmV0dXJuIGlkZW50aXR5O1xuICB2YWx1ZSA9IHZhbHVlLm1hdHJpeDtcbiAgcmV0dXJuIGRlY29tcG9zZSh2YWx1ZS5hLCB2YWx1ZS5iLCB2YWx1ZS5jLCB2YWx1ZS5kLCB2YWx1ZS5lLCB2YWx1ZS5mKTtcbn1cbiIsICJpbXBvcnQgbnVtYmVyIGZyb20gXCIuLi9udW1iZXIuanNcIjtcbmltcG9ydCB7cGFyc2VDc3MsIHBhcnNlU3ZnfSBmcm9tIFwiLi9wYXJzZS5qc1wiO1xuXG5mdW5jdGlvbiBpbnRlcnBvbGF0ZVRyYW5zZm9ybShwYXJzZSwgcHhDb21tYSwgcHhQYXJlbiwgZGVnUGFyZW4pIHtcblxuICBmdW5jdGlvbiBwb3Aocykge1xuICAgIHJldHVybiBzLmxlbmd0aCA/IHMucG9wKCkgKyBcIiBcIiA6IFwiXCI7XG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2xhdGUoeGEsIHlhLCB4YiwgeWIsIHMsIHEpIHtcbiAgICBpZiAoeGEgIT09IHhiIHx8IHlhICE9PSB5Yikge1xuICAgICAgdmFyIGkgPSBzLnB1c2goXCJ0cmFuc2xhdGUoXCIsIG51bGwsIHB4Q29tbWEsIG51bGwsIHB4UGFyZW4pO1xuICAgICAgcS5wdXNoKHtpOiBpIC0gNCwgeDogbnVtYmVyKHhhLCB4Yil9LCB7aTogaSAtIDIsIHg6IG51bWJlcih5YSwgeWIpfSk7XG4gICAgfSBlbHNlIGlmICh4YiB8fCB5Yikge1xuICAgICAgcy5wdXNoKFwidHJhbnNsYXRlKFwiICsgeGIgKyBweENvbW1hICsgeWIgKyBweFBhcmVuKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByb3RhdGUoYSwgYiwgcywgcSkge1xuICAgIGlmIChhICE9PSBiKSB7XG4gICAgICBpZiAoYSAtIGIgPiAxODApIGIgKz0gMzYwOyBlbHNlIGlmIChiIC0gYSA+IDE4MCkgYSArPSAzNjA7IC8vIHNob3J0ZXN0IHBhdGhcbiAgICAgIHEucHVzaCh7aTogcy5wdXNoKHBvcChzKSArIFwicm90YXRlKFwiLCBudWxsLCBkZWdQYXJlbikgLSAyLCB4OiBudW1iZXIoYSwgYil9KTtcbiAgICB9IGVsc2UgaWYgKGIpIHtcbiAgICAgIHMucHVzaChwb3AocykgKyBcInJvdGF0ZShcIiArIGIgKyBkZWdQYXJlbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2tld1goYSwgYiwgcywgcSkge1xuICAgIGlmIChhICE9PSBiKSB7XG4gICAgICBxLnB1c2goe2k6IHMucHVzaChwb3AocykgKyBcInNrZXdYKFwiLCBudWxsLCBkZWdQYXJlbikgLSAyLCB4OiBudW1iZXIoYSwgYil9KTtcbiAgICB9IGVsc2UgaWYgKGIpIHtcbiAgICAgIHMucHVzaChwb3AocykgKyBcInNrZXdYKFwiICsgYiArIGRlZ1BhcmVuKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzY2FsZSh4YSwgeWEsIHhiLCB5YiwgcywgcSkge1xuICAgIGlmICh4YSAhPT0geGIgfHwgeWEgIT09IHliKSB7XG4gICAgICB2YXIgaSA9IHMucHVzaChwb3AocykgKyBcInNjYWxlKFwiLCBudWxsLCBcIixcIiwgbnVsbCwgXCIpXCIpO1xuICAgICAgcS5wdXNoKHtpOiBpIC0gNCwgeDogbnVtYmVyKHhhLCB4Yil9LCB7aTogaSAtIDIsIHg6IG51bWJlcih5YSwgeWIpfSk7XG4gICAgfSBlbHNlIGlmICh4YiAhPT0gMSB8fCB5YiAhPT0gMSkge1xuICAgICAgcy5wdXNoKHBvcChzKSArIFwic2NhbGUoXCIgKyB4YiArIFwiLFwiICsgeWIgKyBcIilcIik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKGEsIGIpIHtcbiAgICB2YXIgcyA9IFtdLCAvLyBzdHJpbmcgY29uc3RhbnRzIGFuZCBwbGFjZWhvbGRlcnNcbiAgICAgICAgcSA9IFtdOyAvLyBudW1iZXIgaW50ZXJwb2xhdG9yc1xuICAgIGEgPSBwYXJzZShhKSwgYiA9IHBhcnNlKGIpO1xuICAgIHRyYW5zbGF0ZShhLnRyYW5zbGF0ZVgsIGEudHJhbnNsYXRlWSwgYi50cmFuc2xhdGVYLCBiLnRyYW5zbGF0ZVksIHMsIHEpO1xuICAgIHJvdGF0ZShhLnJvdGF0ZSwgYi5yb3RhdGUsIHMsIHEpO1xuICAgIHNrZXdYKGEuc2tld1gsIGIuc2tld1gsIHMsIHEpO1xuICAgIHNjYWxlKGEuc2NhbGVYLCBhLnNjYWxlWSwgYi5zY2FsZVgsIGIuc2NhbGVZLCBzLCBxKTtcbiAgICBhID0gYiA9IG51bGw7IC8vIGdjXG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciBpID0gLTEsIG4gPSBxLmxlbmd0aCwgbztcbiAgICAgIHdoaWxlICgrK2kgPCBuKSBzWyhvID0gcVtpXSkuaV0gPSBvLngodCk7XG4gICAgICByZXR1cm4gcy5qb2luKFwiXCIpO1xuICAgIH07XG4gIH07XG59XG5cbmV4cG9ydCB2YXIgaW50ZXJwb2xhdGVUcmFuc2Zvcm1Dc3MgPSBpbnRlcnBvbGF0ZVRyYW5zZm9ybShwYXJzZUNzcywgXCJweCwgXCIsIFwicHgpXCIsIFwiZGVnKVwiKTtcbmV4cG9ydCB2YXIgaW50ZXJwb2xhdGVUcmFuc2Zvcm1TdmcgPSBpbnRlcnBvbGF0ZVRyYW5zZm9ybShwYXJzZVN2ZywgXCIsIFwiLCBcIilcIiwgXCIpXCIpO1xuIiwgInZhciBlcHNpbG9uMiA9IDFlLTEyO1xuXG5mdW5jdGlvbiBjb3NoKHgpIHtcbiAgcmV0dXJuICgoeCA9IE1hdGguZXhwKHgpKSArIDEgLyB4KSAvIDI7XG59XG5cbmZ1bmN0aW9uIHNpbmgoeCkge1xuICByZXR1cm4gKCh4ID0gTWF0aC5leHAoeCkpIC0gMSAvIHgpIC8gMjtcbn1cblxuZnVuY3Rpb24gdGFuaCh4KSB7XG4gIHJldHVybiAoKHggPSBNYXRoLmV4cCgyICogeCkpIC0gMSkgLyAoeCArIDEpO1xufVxuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gem9vbVJobyhyaG8sIHJobzIsIHJobzQpIHtcblxuICAvLyBwMCA9IFt1eDAsIHV5MCwgdzBdXG4gIC8vIHAxID0gW3V4MSwgdXkxLCB3MV1cbiAgZnVuY3Rpb24gem9vbShwMCwgcDEpIHtcbiAgICB2YXIgdXgwID0gcDBbMF0sIHV5MCA9IHAwWzFdLCB3MCA9IHAwWzJdLFxuICAgICAgICB1eDEgPSBwMVswXSwgdXkxID0gcDFbMV0sIHcxID0gcDFbMl0sXG4gICAgICAgIGR4ID0gdXgxIC0gdXgwLFxuICAgICAgICBkeSA9IHV5MSAtIHV5MCxcbiAgICAgICAgZDIgPSBkeCAqIGR4ICsgZHkgKiBkeSxcbiAgICAgICAgaSxcbiAgICAgICAgUztcblxuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgdTAgXHUyMjQ1IHUxLlxuICAgIGlmIChkMiA8IGVwc2lsb24yKSB7XG4gICAgICBTID0gTWF0aC5sb2codzEgLyB3MCkgLyByaG87XG4gICAgICBpID0gZnVuY3Rpb24odCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIHV4MCArIHQgKiBkeCxcbiAgICAgICAgICB1eTAgKyB0ICogZHksXG4gICAgICAgICAgdzAgKiBNYXRoLmV4cChyaG8gKiB0ICogUylcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHZW5lcmFsIGNhc2UuXG4gICAgZWxzZSB7XG4gICAgICB2YXIgZDEgPSBNYXRoLnNxcnQoZDIpLFxuICAgICAgICAgIGIwID0gKHcxICogdzEgLSB3MCAqIHcwICsgcmhvNCAqIGQyKSAvICgyICogdzAgKiByaG8yICogZDEpLFxuICAgICAgICAgIGIxID0gKHcxICogdzEgLSB3MCAqIHcwIC0gcmhvNCAqIGQyKSAvICgyICogdzEgKiByaG8yICogZDEpLFxuICAgICAgICAgIHIwID0gTWF0aC5sb2coTWF0aC5zcXJ0KGIwICogYjAgKyAxKSAtIGIwKSxcbiAgICAgICAgICByMSA9IE1hdGgubG9nKE1hdGguc3FydChiMSAqIGIxICsgMSkgLSBiMSk7XG4gICAgICBTID0gKHIxIC0gcjApIC8gcmhvO1xuICAgICAgaSA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgdmFyIHMgPSB0ICogUyxcbiAgICAgICAgICAgIGNvc2hyMCA9IGNvc2gocjApLFxuICAgICAgICAgICAgdSA9IHcwIC8gKHJobzIgKiBkMSkgKiAoY29zaHIwICogdGFuaChyaG8gKiBzICsgcjApIC0gc2luaChyMCkpO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIHV4MCArIHUgKiBkeCxcbiAgICAgICAgICB1eTAgKyB1ICogZHksXG4gICAgICAgICAgdzAgKiBjb3NocjAgLyBjb3NoKHJobyAqIHMgKyByMClcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpLmR1cmF0aW9uID0gUyAqIDEwMDAgKiByaG8gLyBNYXRoLlNRUlQyO1xuXG4gICAgcmV0dXJuIGk7XG4gIH1cblxuICB6b29tLnJobyA9IGZ1bmN0aW9uKF8pIHtcbiAgICB2YXIgXzEgPSBNYXRoLm1heCgxZS0zLCArXyksIF8yID0gXzEgKiBfMSwgXzQgPSBfMiAqIF8yO1xuICAgIHJldHVybiB6b29tUmhvKF8xLCBfMiwgXzQpO1xuICB9O1xuXG4gIHJldHVybiB6b29tO1xufSkoTWF0aC5TUVJUMiwgMiwgNCk7XG4iLCAiaW1wb3J0IHtjdWJlaGVsaXggYXMgY29sb3JDdWJlaGVsaXh9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGNvbG9yLCB7aHVlfSBmcm9tIFwiLi9jb2xvci5qc1wiO1xuXG5mdW5jdGlvbiBjdWJlaGVsaXgoaHVlKSB7XG4gIHJldHVybiAoZnVuY3Rpb24gY3ViZWhlbGl4R2FtbWEoeSkge1xuICAgIHkgPSAreTtcblxuICAgIGZ1bmN0aW9uIGN1YmVoZWxpeChzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgaCA9IGh1ZSgoc3RhcnQgPSBjb2xvckN1YmVoZWxpeChzdGFydCkpLmgsIChlbmQgPSBjb2xvckN1YmVoZWxpeChlbmQpKS5oKSxcbiAgICAgICAgICBzID0gY29sb3Ioc3RhcnQucywgZW5kLnMpLFxuICAgICAgICAgIGwgPSBjb2xvcihzdGFydC5sLCBlbmQubCksXG4gICAgICAgICAgb3BhY2l0eSA9IGNvbG9yKHN0YXJ0Lm9wYWNpdHksIGVuZC5vcGFjaXR5KTtcbiAgICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICAgIHN0YXJ0LmggPSBoKHQpO1xuICAgICAgICBzdGFydC5zID0gcyh0KTtcbiAgICAgICAgc3RhcnQubCA9IGwoTWF0aC5wb3codCwgeSkpO1xuICAgICAgICBzdGFydC5vcGFjaXR5ID0gb3BhY2l0eSh0KTtcbiAgICAgICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY3ViZWhlbGl4LmdhbW1hID0gY3ViZWhlbGl4R2FtbWE7XG5cbiAgICByZXR1cm4gY3ViZWhlbGl4O1xuICB9KSgxKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3ViZWhlbGl4KGh1ZSk7XG5leHBvcnQgdmFyIGN1YmVoZWxpeExvbmcgPSBjdWJlaGVsaXgoY29sb3IpO1xuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGludGVycG9sYXRvciwgbikge1xuICB2YXIgc2FtcGxlcyA9IG5ldyBBcnJheShuKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHNhbXBsZXNbaV0gPSBpbnRlcnBvbGF0b3IoaSAvIChuIC0gMSkpO1xuICByZXR1cm4gc2FtcGxlcztcbn1cbiIsICJ2YXIgZnJhbWUgPSAwLCAvLyBpcyBhbiBhbmltYXRpb24gZnJhbWUgcGVuZGluZz9cbiAgICB0aW1lb3V0ID0gMCwgLy8gaXMgYSB0aW1lb3V0IHBlbmRpbmc/XG4gICAgaW50ZXJ2YWwgPSAwLCAvLyBhcmUgYW55IHRpbWVycyBhY3RpdmU/XG4gICAgcG9rZURlbGF5ID0gMTAwMCwgLy8gaG93IGZyZXF1ZW50bHkgd2UgY2hlY2sgZm9yIGNsb2NrIHNrZXdcbiAgICB0YXNrSGVhZCxcbiAgICB0YXNrVGFpbCxcbiAgICBjbG9ja0xhc3QgPSAwLFxuICAgIGNsb2NrTm93ID0gMCxcbiAgICBjbG9ja1NrZXcgPSAwLFxuICAgIGNsb2NrID0gdHlwZW9mIHBlcmZvcm1hbmNlID09PSBcIm9iamVjdFwiICYmIHBlcmZvcm1hbmNlLm5vdyA/IHBlcmZvcm1hbmNlIDogRGF0ZSxcbiAgICBzZXRGcmFtZSA9IHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIgJiYgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSA/IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpIDogZnVuY3Rpb24oZikgeyBzZXRUaW1lb3V0KGYsIDE3KTsgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIG5vdygpIHtcbiAgcmV0dXJuIGNsb2NrTm93IHx8IChzZXRGcmFtZShjbGVhck5vdyksIGNsb2NrTm93ID0gY2xvY2subm93KCkgKyBjbG9ja1NrZXcpO1xufVxuXG5mdW5jdGlvbiBjbGVhck5vdygpIHtcbiAgY2xvY2tOb3cgPSAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVGltZXIoKSB7XG4gIHRoaXMuX2NhbGwgPVxuICB0aGlzLl90aW1lID1cbiAgdGhpcy5fbmV4dCA9IG51bGw7XG59XG5cblRpbWVyLnByb3RvdHlwZSA9IHRpbWVyLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IFRpbWVyLFxuICByZXN0YXJ0OiBmdW5jdGlvbihjYWxsYmFjaywgZGVsYXksIHRpbWUpIHtcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvblwiKTtcbiAgICB0aW1lID0gKHRpbWUgPT0gbnVsbCA/IG5vdygpIDogK3RpbWUpICsgKGRlbGF5ID09IG51bGwgPyAwIDogK2RlbGF5KTtcbiAgICBpZiAoIXRoaXMuX25leHQgJiYgdGFza1RhaWwgIT09IHRoaXMpIHtcbiAgICAgIGlmICh0YXNrVGFpbCkgdGFza1RhaWwuX25leHQgPSB0aGlzO1xuICAgICAgZWxzZSB0YXNrSGVhZCA9IHRoaXM7XG4gICAgICB0YXNrVGFpbCA9IHRoaXM7XG4gICAgfVxuICAgIHRoaXMuX2NhbGwgPSBjYWxsYmFjaztcbiAgICB0aGlzLl90aW1lID0gdGltZTtcbiAgICBzbGVlcCgpO1xuICB9LFxuICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fY2FsbCkge1xuICAgICAgdGhpcy5fY2FsbCA9IG51bGw7XG4gICAgICB0aGlzLl90aW1lID0gSW5maW5pdHk7XG4gICAgICBzbGVlcCgpO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRpbWVyKGNhbGxiYWNrLCBkZWxheSwgdGltZSkge1xuICB2YXIgdCA9IG5ldyBUaW1lcjtcbiAgdC5yZXN0YXJ0KGNhbGxiYWNrLCBkZWxheSwgdGltZSk7XG4gIHJldHVybiB0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGltZXJGbHVzaCgpIHtcbiAgbm93KCk7IC8vIEdldCB0aGUgY3VycmVudCB0aW1lLCBpZiBub3QgYWxyZWFkeSBzZXQuXG4gICsrZnJhbWU7IC8vIFByZXRlbmQgd2VcdTIwMTl2ZSBzZXQgYW4gYWxhcm0sIGlmIHdlIGhhdmVuXHUyMDE5dCBhbHJlYWR5LlxuICB2YXIgdCA9IHRhc2tIZWFkLCBlO1xuICB3aGlsZSAodCkge1xuICAgIGlmICgoZSA9IGNsb2NrTm93IC0gdC5fdGltZSkgPj0gMCkgdC5fY2FsbC5jYWxsKG51bGwsIGUpO1xuICAgIHQgPSB0Ll9uZXh0O1xuICB9XG4gIC0tZnJhbWU7XG59XG5cbmZ1bmN0aW9uIHdha2UoKSB7XG4gIGNsb2NrTm93ID0gKGNsb2NrTGFzdCA9IGNsb2NrLm5vdygpKSArIGNsb2NrU2tldztcbiAgZnJhbWUgPSB0aW1lb3V0ID0gMDtcbiAgdHJ5IHtcbiAgICB0aW1lckZsdXNoKCk7XG4gIH0gZmluYWxseSB7XG4gICAgZnJhbWUgPSAwO1xuICAgIG5hcCgpO1xuICAgIGNsb2NrTm93ID0gMDtcbiAgfVxufVxuXG5mdW5jdGlvbiBwb2tlKCkge1xuICB2YXIgbm93ID0gY2xvY2subm93KCksIGRlbGF5ID0gbm93IC0gY2xvY2tMYXN0O1xuICBpZiAoZGVsYXkgPiBwb2tlRGVsYXkpIGNsb2NrU2tldyAtPSBkZWxheSwgY2xvY2tMYXN0ID0gbm93O1xufVxuXG5mdW5jdGlvbiBuYXAoKSB7XG4gIHZhciB0MCwgdDEgPSB0YXNrSGVhZCwgdDIsIHRpbWUgPSBJbmZpbml0eTtcbiAgd2hpbGUgKHQxKSB7XG4gICAgaWYgKHQxLl9jYWxsKSB7XG4gICAgICBpZiAodGltZSA+IHQxLl90aW1lKSB0aW1lID0gdDEuX3RpbWU7XG4gICAgICB0MCA9IHQxLCB0MSA9IHQxLl9uZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0MiA9IHQxLl9uZXh0LCB0MS5fbmV4dCA9IG51bGw7XG4gICAgICB0MSA9IHQwID8gdDAuX25leHQgPSB0MiA6IHRhc2tIZWFkID0gdDI7XG4gICAgfVxuICB9XG4gIHRhc2tUYWlsID0gdDA7XG4gIHNsZWVwKHRpbWUpO1xufVxuXG5mdW5jdGlvbiBzbGVlcCh0aW1lKSB7XG4gIGlmIChmcmFtZSkgcmV0dXJuOyAvLyBTb29uZXN0IGFsYXJtIGFscmVhZHkgc2V0LCBvciB3aWxsIGJlLlxuICBpZiAodGltZW91dCkgdGltZW91dCA9IGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgdmFyIGRlbGF5ID0gdGltZSAtIGNsb2NrTm93OyAvLyBTdHJpY3RseSBsZXNzIHRoYW4gaWYgd2UgcmVjb21wdXRlZCBjbG9ja05vdy5cbiAgaWYgKGRlbGF5ID4gMjQpIHtcbiAgICBpZiAodGltZSA8IEluZmluaXR5KSB0aW1lb3V0ID0gc2V0VGltZW91dCh3YWtlLCB0aW1lIC0gY2xvY2subm93KCkgLSBjbG9ja1NrZXcpO1xuICAgIGlmIChpbnRlcnZhbCkgaW50ZXJ2YWwgPSBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIWludGVydmFsKSBjbG9ja0xhc3QgPSBjbG9jay5ub3coKSwgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChwb2tlLCBwb2tlRGVsYXkpO1xuICAgIGZyYW1lID0gMSwgc2V0RnJhbWUod2FrZSk7XG4gIH1cbn1cbiIsICJpbXBvcnQge1RpbWVyfSBmcm9tIFwiLi90aW1lci5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjYWxsYmFjaywgZGVsYXksIHRpbWUpIHtcbiAgdmFyIHQgPSBuZXcgVGltZXI7XG4gIGRlbGF5ID0gZGVsYXkgPT0gbnVsbCA/IDAgOiArZGVsYXk7XG4gIHQucmVzdGFydChlbGFwc2VkID0+IHtcbiAgICB0LnN0b3AoKTtcbiAgICBjYWxsYmFjayhlbGFwc2VkICsgZGVsYXkpO1xuICB9LCBkZWxheSwgdGltZSk7XG4gIHJldHVybiB0O1xufVxuIiwgImltcG9ydCB7ZGlzcGF0Y2h9IGZyb20gXCJkMy1kaXNwYXRjaFwiO1xuaW1wb3J0IHt0aW1lciwgdGltZW91dH0gZnJvbSBcImQzLXRpbWVyXCI7XG5cbnZhciBlbXB0eU9uID0gZGlzcGF0Y2goXCJzdGFydFwiLCBcImVuZFwiLCBcImNhbmNlbFwiLCBcImludGVycnVwdFwiKTtcbnZhciBlbXB0eVR3ZWVuID0gW107XG5cbmV4cG9ydCB2YXIgQ1JFQVRFRCA9IDA7XG5leHBvcnQgdmFyIFNDSEVEVUxFRCA9IDE7XG5leHBvcnQgdmFyIFNUQVJUSU5HID0gMjtcbmV4cG9ydCB2YXIgU1RBUlRFRCA9IDM7XG5leHBvcnQgdmFyIFJVTk5JTkcgPSA0O1xuZXhwb3J0IHZhciBFTkRJTkcgPSA1O1xuZXhwb3J0IHZhciBFTkRFRCA9IDY7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5vZGUsIG5hbWUsIGlkLCBpbmRleCwgZ3JvdXAsIHRpbWluZykge1xuICB2YXIgc2NoZWR1bGVzID0gbm9kZS5fX3RyYW5zaXRpb247XG4gIGlmICghc2NoZWR1bGVzKSBub2RlLl9fdHJhbnNpdGlvbiA9IHt9O1xuICBlbHNlIGlmIChpZCBpbiBzY2hlZHVsZXMpIHJldHVybjtcbiAgY3JlYXRlKG5vZGUsIGlkLCB7XG4gICAgbmFtZTogbmFtZSxcbiAgICBpbmRleDogaW5kZXgsIC8vIEZvciBjb250ZXh0IGR1cmluZyBjYWxsYmFjay5cbiAgICBncm91cDogZ3JvdXAsIC8vIEZvciBjb250ZXh0IGR1cmluZyBjYWxsYmFjay5cbiAgICBvbjogZW1wdHlPbixcbiAgICB0d2VlbjogZW1wdHlUd2VlbixcbiAgICB0aW1lOiB0aW1pbmcudGltZSxcbiAgICBkZWxheTogdGltaW5nLmRlbGF5LFxuICAgIGR1cmF0aW9uOiB0aW1pbmcuZHVyYXRpb24sXG4gICAgZWFzZTogdGltaW5nLmVhc2UsXG4gICAgdGltZXI6IG51bGwsXG4gICAgc3RhdGU6IENSRUFURURcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0KG5vZGUsIGlkKSB7XG4gIHZhciBzY2hlZHVsZSA9IGdldChub2RlLCBpZCk7XG4gIGlmIChzY2hlZHVsZS5zdGF0ZSA+IENSRUFURUQpIHRocm93IG5ldyBFcnJvcihcInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZFwiKTtcbiAgcmV0dXJuIHNjaGVkdWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0KG5vZGUsIGlkKSB7XG4gIHZhciBzY2hlZHVsZSA9IGdldChub2RlLCBpZCk7XG4gIGlmIChzY2hlZHVsZS5zdGF0ZSA+IFNUQVJURUQpIHRocm93IG5ldyBFcnJvcihcInRvbyBsYXRlOyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gIHJldHVybiBzY2hlZHVsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldChub2RlLCBpZCkge1xuICB2YXIgc2NoZWR1bGUgPSBub2RlLl9fdHJhbnNpdGlvbjtcbiAgaWYgKCFzY2hlZHVsZSB8fCAhKHNjaGVkdWxlID0gc2NoZWR1bGVbaWRdKSkgdGhyb3cgbmV3IEVycm9yKFwidHJhbnNpdGlvbiBub3QgZm91bmRcIik7XG4gIHJldHVybiBzY2hlZHVsZTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlKG5vZGUsIGlkLCBzZWxmKSB7XG4gIHZhciBzY2hlZHVsZXMgPSBub2RlLl9fdHJhbnNpdGlvbixcbiAgICAgIHR3ZWVuO1xuXG4gIC8vIEluaXRpYWxpemUgdGhlIHNlbGYgdGltZXIgd2hlbiB0aGUgdHJhbnNpdGlvbiBpcyBjcmVhdGVkLlxuICAvLyBOb3RlIHRoZSBhY3R1YWwgZGVsYXkgaXMgbm90IGtub3duIHVudGlsIHRoZSBmaXJzdCBjYWxsYmFjayFcbiAgc2NoZWR1bGVzW2lkXSA9IHNlbGY7XG4gIHNlbGYudGltZXIgPSB0aW1lcihzY2hlZHVsZSwgMCwgc2VsZi50aW1lKTtcblxuICBmdW5jdGlvbiBzY2hlZHVsZShlbGFwc2VkKSB7XG4gICAgc2VsZi5zdGF0ZSA9IFNDSEVEVUxFRDtcbiAgICBzZWxmLnRpbWVyLnJlc3RhcnQoc3RhcnQsIHNlbGYuZGVsYXksIHNlbGYudGltZSk7XG5cbiAgICAvLyBJZiB0aGUgZWxhcHNlZCBkZWxheSBpcyBsZXNzIHRoYW4gb3VyIGZpcnN0IHNsZWVwLCBzdGFydCBpbW1lZGlhdGVseS5cbiAgICBpZiAoc2VsZi5kZWxheSA8PSBlbGFwc2VkKSBzdGFydChlbGFwc2VkIC0gc2VsZi5kZWxheSk7XG4gIH1cblxuICBmdW5jdGlvbiBzdGFydChlbGFwc2VkKSB7XG4gICAgdmFyIGksIGosIG4sIG87XG5cbiAgICAvLyBJZiB0aGUgc3RhdGUgaXMgbm90IFNDSEVEVUxFRCwgdGhlbiB3ZSBwcmV2aW91c2x5IGVycm9yZWQgb24gc3RhcnQuXG4gICAgaWYgKHNlbGYuc3RhdGUgIT09IFNDSEVEVUxFRCkgcmV0dXJuIHN0b3AoKTtcblxuICAgIGZvciAoaSBpbiBzY2hlZHVsZXMpIHtcbiAgICAgIG8gPSBzY2hlZHVsZXNbaV07XG4gICAgICBpZiAoby5uYW1lICE9PSBzZWxmLm5hbWUpIGNvbnRpbnVlO1xuXG4gICAgICAvLyBXaGlsZSB0aGlzIGVsZW1lbnQgYWxyZWFkeSBoYXMgYSBzdGFydGluZyB0cmFuc2l0aW9uIGR1cmluZyB0aGlzIGZyYW1lLFxuICAgICAgLy8gZGVmZXIgc3RhcnRpbmcgYW4gaW50ZXJydXB0aW5nIHRyYW5zaXRpb24gdW50aWwgdGhhdCB0cmFuc2l0aW9uIGhhcyBhXG4gICAgICAvLyBjaGFuY2UgdG8gdGljayAoYW5kIHBvc3NpYmx5IGVuZCk7IHNlZSBkMy9kMy10cmFuc2l0aW9uIzU0IVxuICAgICAgaWYgKG8uc3RhdGUgPT09IFNUQVJURUQpIHJldHVybiB0aW1lb3V0KHN0YXJ0KTtcblxuICAgICAgLy8gSW50ZXJydXB0IHRoZSBhY3RpdmUgdHJhbnNpdGlvbiwgaWYgYW55LlxuICAgICAgaWYgKG8uc3RhdGUgPT09IFJVTk5JTkcpIHtcbiAgICAgICAgby5zdGF0ZSA9IEVOREVEO1xuICAgICAgICBvLnRpbWVyLnN0b3AoKTtcbiAgICAgICAgby5vbi5jYWxsKFwiaW50ZXJydXB0XCIsIG5vZGUsIG5vZGUuX19kYXRhX18sIG8uaW5kZXgsIG8uZ3JvdXApO1xuICAgICAgICBkZWxldGUgc2NoZWR1bGVzW2ldO1xuICAgICAgfVxuXG4gICAgICAvLyBDYW5jZWwgYW55IHByZS1lbXB0ZWQgdHJhbnNpdGlvbnMuXG4gICAgICBlbHNlIGlmICgraSA8IGlkKSB7XG4gICAgICAgIG8uc3RhdGUgPSBFTkRFRDtcbiAgICAgICAgby50aW1lci5zdG9wKCk7XG4gICAgICAgIG8ub24uY2FsbChcImNhbmNlbFwiLCBub2RlLCBub2RlLl9fZGF0YV9fLCBvLmluZGV4LCBvLmdyb3VwKTtcbiAgICAgICAgZGVsZXRlIHNjaGVkdWxlc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEZWZlciB0aGUgZmlyc3QgdGljayB0byBlbmQgb2YgdGhlIGN1cnJlbnQgZnJhbWU7IHNlZSBkMy9kMyMxNTc2LlxuICAgIC8vIE5vdGUgdGhlIHRyYW5zaXRpb24gbWF5IGJlIGNhbmNlbGVkIGFmdGVyIHN0YXJ0IGFuZCBiZWZvcmUgdGhlIGZpcnN0IHRpY2shXG4gICAgLy8gTm90ZSB0aGlzIG11c3QgYmUgc2NoZWR1bGVkIGJlZm9yZSB0aGUgc3RhcnQgZXZlbnQ7IHNlZSBkMy9kMy10cmFuc2l0aW9uIzE2IVxuICAgIC8vIEFzc3VtaW5nIHRoaXMgaXMgc3VjY2Vzc2Z1bCwgc3Vic2VxdWVudCBjYWxsYmFja3MgZ28gc3RyYWlnaHQgdG8gdGljay5cbiAgICB0aW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHNlbGYuc3RhdGUgPT09IFNUQVJURUQpIHtcbiAgICAgICAgc2VsZi5zdGF0ZSA9IFJVTk5JTkc7XG4gICAgICAgIHNlbGYudGltZXIucmVzdGFydCh0aWNrLCBzZWxmLmRlbGF5LCBzZWxmLnRpbWUpO1xuICAgICAgICB0aWNrKGVsYXBzZWQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gRGlzcGF0Y2ggdGhlIHN0YXJ0IGV2ZW50LlxuICAgIC8vIE5vdGUgdGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIHRoZSB0d2VlbiBhcmUgaW5pdGlhbGl6ZWQuXG4gICAgc2VsZi5zdGF0ZSA9IFNUQVJUSU5HO1xuICAgIHNlbGYub24uY2FsbChcInN0YXJ0XCIsIG5vZGUsIG5vZGUuX19kYXRhX18sIHNlbGYuaW5kZXgsIHNlbGYuZ3JvdXApO1xuICAgIGlmIChzZWxmLnN0YXRlICE9PSBTVEFSVElORykgcmV0dXJuOyAvLyBpbnRlcnJ1cHRlZFxuICAgIHNlbGYuc3RhdGUgPSBTVEFSVEVEO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgdHdlZW4sIGRlbGV0aW5nIG51bGwgdHdlZW4uXG4gICAgdHdlZW4gPSBuZXcgQXJyYXkobiA9IHNlbGYudHdlZW4ubGVuZ3RoKTtcbiAgICBmb3IgKGkgPSAwLCBqID0gLTE7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChvID0gc2VsZi50d2VlbltpXS52YWx1ZS5jYWxsKG5vZGUsIG5vZGUuX19kYXRhX18sIHNlbGYuaW5kZXgsIHNlbGYuZ3JvdXApKSB7XG4gICAgICAgIHR3ZWVuWysral0gPSBvO1xuICAgICAgfVxuICAgIH1cbiAgICB0d2Vlbi5sZW5ndGggPSBqICsgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRpY2soZWxhcHNlZCkge1xuICAgIHZhciB0ID0gZWxhcHNlZCA8IHNlbGYuZHVyYXRpb24gPyBzZWxmLmVhc2UuY2FsbChudWxsLCBlbGFwc2VkIC8gc2VsZi5kdXJhdGlvbikgOiAoc2VsZi50aW1lci5yZXN0YXJ0KHN0b3ApLCBzZWxmLnN0YXRlID0gRU5ESU5HLCAxKSxcbiAgICAgICAgaSA9IC0xLFxuICAgICAgICBuID0gdHdlZW4ubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICAgIHR3ZWVuW2ldLmNhbGwobm9kZSwgdCk7XG4gICAgfVxuXG4gICAgLy8gRGlzcGF0Y2ggdGhlIGVuZCBldmVudC5cbiAgICBpZiAoc2VsZi5zdGF0ZSA9PT0gRU5ESU5HKSB7XG4gICAgICBzZWxmLm9uLmNhbGwoXCJlbmRcIiwgbm9kZSwgbm9kZS5fX2RhdGFfXywgc2VsZi5pbmRleCwgc2VsZi5ncm91cCk7XG4gICAgICBzdG9wKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc3RvcCgpIHtcbiAgICBzZWxmLnN0YXRlID0gRU5ERUQ7XG4gICAgc2VsZi50aW1lci5zdG9wKCk7XG4gICAgZGVsZXRlIHNjaGVkdWxlc1tpZF07XG4gICAgZm9yICh2YXIgaSBpbiBzY2hlZHVsZXMpIHJldHVybjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIGRlbGV0ZSBub2RlLl9fdHJhbnNpdGlvbjtcbiAgfVxufVxuIiwgImltcG9ydCB7U1RBUlRJTkcsIEVORElORywgRU5ERUR9IGZyb20gXCIuL3RyYW5zaXRpb24vc2NoZWR1bGUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obm9kZSwgbmFtZSkge1xuICB2YXIgc2NoZWR1bGVzID0gbm9kZS5fX3RyYW5zaXRpb24sXG4gICAgICBzY2hlZHVsZSxcbiAgICAgIGFjdGl2ZSxcbiAgICAgIGVtcHR5ID0gdHJ1ZSxcbiAgICAgIGk7XG5cbiAgaWYgKCFzY2hlZHVsZXMpIHJldHVybjtcblxuICBuYW1lID0gbmFtZSA9PSBudWxsID8gbnVsbCA6IG5hbWUgKyBcIlwiO1xuXG4gIGZvciAoaSBpbiBzY2hlZHVsZXMpIHtcbiAgICBpZiAoKHNjaGVkdWxlID0gc2NoZWR1bGVzW2ldKS5uYW1lICE9PSBuYW1lKSB7IGVtcHR5ID0gZmFsc2U7IGNvbnRpbnVlOyB9XG4gICAgYWN0aXZlID0gc2NoZWR1bGUuc3RhdGUgPiBTVEFSVElORyAmJiBzY2hlZHVsZS5zdGF0ZSA8IEVORElORztcbiAgICBzY2hlZHVsZS5zdGF0ZSA9IEVOREVEO1xuICAgIHNjaGVkdWxlLnRpbWVyLnN0b3AoKTtcbiAgICBzY2hlZHVsZS5vbi5jYWxsKGFjdGl2ZSA/IFwiaW50ZXJydXB0XCIgOiBcImNhbmNlbFwiLCBub2RlLCBub2RlLl9fZGF0YV9fLCBzY2hlZHVsZS5pbmRleCwgc2NoZWR1bGUuZ3JvdXApO1xuICAgIGRlbGV0ZSBzY2hlZHVsZXNbaV07XG4gIH1cblxuICBpZiAoZW1wdHkpIGRlbGV0ZSBub2RlLl9fdHJhbnNpdGlvbjtcbn1cbiIsICJpbXBvcnQgaW50ZXJydXB0IGZyb20gXCIuLi9pbnRlcnJ1cHQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuICAgIGludGVycnVwdCh0aGlzLCBuYW1lKTtcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHtnZXQsIHNldH0gZnJvbSBcIi4vc2NoZWR1bGUuanNcIjtcblxuZnVuY3Rpb24gdHdlZW5SZW1vdmUoaWQsIG5hbWUpIHtcbiAgdmFyIHR3ZWVuMCwgdHdlZW4xO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHNjaGVkdWxlID0gc2V0KHRoaXMsIGlkKSxcbiAgICAgICAgdHdlZW4gPSBzY2hlZHVsZS50d2VlbjtcblxuICAgIC8vIElmIHRoaXMgbm9kZSBzaGFyZWQgdHdlZW4gd2l0aCB0aGUgcHJldmlvdXMgbm9kZSxcbiAgICAvLyBqdXN0IGFzc2lnbiB0aGUgdXBkYXRlZCBzaGFyZWQgdHdlZW4gYW5kIHdlXHUyMDE5cmUgZG9uZSFcbiAgICAvLyBPdGhlcndpc2UsIGNvcHktb24td3JpdGUuXG4gICAgaWYgKHR3ZWVuICE9PSB0d2VlbjApIHtcbiAgICAgIHR3ZWVuMSA9IHR3ZWVuMCA9IHR3ZWVuO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSB0d2VlbjEubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIGlmICh0d2VlbjFbaV0ubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICAgIHR3ZWVuMSA9IHR3ZWVuMS5zbGljZSgpO1xuICAgICAgICAgIHR3ZWVuMS5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBzY2hlZHVsZS50d2VlbiA9IHR3ZWVuMTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gdHdlZW5GdW5jdGlvbihpZCwgbmFtZSwgdmFsdWUpIHtcbiAgdmFyIHR3ZWVuMCwgdHdlZW4xO1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBFcnJvcjtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzY2hlZHVsZSA9IHNldCh0aGlzLCBpZCksXG4gICAgICAgIHR3ZWVuID0gc2NoZWR1bGUudHdlZW47XG5cbiAgICAvLyBJZiB0aGlzIG5vZGUgc2hhcmVkIHR3ZWVuIHdpdGggdGhlIHByZXZpb3VzIG5vZGUsXG4gICAgLy8ganVzdCBhc3NpZ24gdGhlIHVwZGF0ZWQgc2hhcmVkIHR3ZWVuIGFuZCB3ZVx1MjAxOXJlIGRvbmUhXG4gICAgLy8gT3RoZXJ3aXNlLCBjb3B5LW9uLXdyaXRlLlxuICAgIGlmICh0d2VlbiAhPT0gdHdlZW4wKSB7XG4gICAgICB0d2VlbjEgPSAodHdlZW4wID0gdHdlZW4pLnNsaWNlKCk7XG4gICAgICBmb3IgKHZhciB0ID0ge25hbWU6IG5hbWUsIHZhbHVlOiB2YWx1ZX0sIGkgPSAwLCBuID0gdHdlZW4xLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgICBpZiAodHdlZW4xW2ldLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgICB0d2VlbjFbaV0gPSB0O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaSA9PT0gbikgdHdlZW4xLnB1c2godCk7XG4gICAgfVxuXG4gICAgc2NoZWR1bGUudHdlZW4gPSB0d2VlbjE7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHZhciBpZCA9IHRoaXMuX2lkO1xuXG4gIG5hbWUgKz0gXCJcIjtcblxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB2YXIgdHdlZW4gPSBnZXQodGhpcy5ub2RlKCksIGlkKS50d2VlbjtcbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IHR3ZWVuLmxlbmd0aCwgdDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKCh0ID0gdHdlZW5baV0pLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHQudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuZWFjaCgodmFsdWUgPT0gbnVsbCA/IHR3ZWVuUmVtb3ZlIDogdHdlZW5GdW5jdGlvbikoaWQsIG5hbWUsIHZhbHVlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0d2VlblZhbHVlKHRyYW5zaXRpb24sIG5hbWUsIHZhbHVlKSB7XG4gIHZhciBpZCA9IHRyYW5zaXRpb24uX2lkO1xuXG4gIHRyYW5zaXRpb24uZWFjaChmdW5jdGlvbigpIHtcbiAgICB2YXIgc2NoZWR1bGUgPSBzZXQodGhpcywgaWQpO1xuICAgIChzY2hlZHVsZS52YWx1ZSB8fCAoc2NoZWR1bGUudmFsdWUgPSB7fSkpW25hbWVdID0gdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKG5vZGUpIHtcbiAgICByZXR1cm4gZ2V0KG5vZGUsIGlkKS52YWx1ZVtuYW1lXTtcbiAgfTtcbn1cbiIsICJpbXBvcnQge2NvbG9yfSBmcm9tIFwiZDMtY29sb3JcIjtcbmltcG9ydCB7aW50ZXJwb2xhdGVOdW1iZXIsIGludGVycG9sYXRlUmdiLCBpbnRlcnBvbGF0ZVN0cmluZ30gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIGM7XG4gIHJldHVybiAodHlwZW9mIGIgPT09IFwibnVtYmVyXCIgPyBpbnRlcnBvbGF0ZU51bWJlclxuICAgICAgOiBiIGluc3RhbmNlb2YgY29sb3IgPyBpbnRlcnBvbGF0ZVJnYlxuICAgICAgOiAoYyA9IGNvbG9yKGIpKSA/IChiID0gYywgaW50ZXJwb2xhdGVSZ2IpXG4gICAgICA6IGludGVycG9sYXRlU3RyaW5nKShhLCBiKTtcbn1cbiIsICJpbXBvcnQge2ludGVycG9sYXRlVHJhbnNmb3JtU3ZnIGFzIGludGVycG9sYXRlVHJhbnNmb3JtfSBmcm9tIFwiZDMtaW50ZXJwb2xhdGVcIjtcbmltcG9ydCB7bmFtZXNwYWNlfSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5pbXBvcnQge3R3ZWVuVmFsdWV9IGZyb20gXCIuL3R3ZWVuLmpzXCI7XG5pbXBvcnQgaW50ZXJwb2xhdGUgZnJvbSBcIi4vaW50ZXJwb2xhdGUuanNcIjtcblxuZnVuY3Rpb24gYXR0clJlbW92ZShuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0clJlbW92ZU5TKGZ1bGxuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJDb25zdGFudChuYW1lLCBpbnRlcnBvbGF0ZSwgdmFsdWUxKSB7XG4gIHZhciBzdHJpbmcwMCxcbiAgICAgIHN0cmluZzEgPSB2YWx1ZTEgKyBcIlwiLFxuICAgICAgaW50ZXJwb2xhdGUwO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHN0cmluZzAgPSB0aGlzLmdldEF0dHJpYnV0ZShuYW1lKTtcbiAgICByZXR1cm4gc3RyaW5nMCA9PT0gc3RyaW5nMSA/IG51bGxcbiAgICAgICAgOiBzdHJpbmcwID09PSBzdHJpbmcwMCA/IGludGVycG9sYXRlMFxuICAgICAgICA6IGludGVycG9sYXRlMCA9IGludGVycG9sYXRlKHN0cmluZzAwID0gc3RyaW5nMCwgdmFsdWUxKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0ckNvbnN0YW50TlMoZnVsbG5hbWUsIGludGVycG9sYXRlLCB2YWx1ZTEpIHtcbiAgdmFyIHN0cmluZzAwLFxuICAgICAgc3RyaW5nMSA9IHZhbHVlMSArIFwiXCIsXG4gICAgICBpbnRlcnBvbGF0ZTA7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc3RyaW5nMCA9IHRoaXMuZ2V0QXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsKTtcbiAgICByZXR1cm4gc3RyaW5nMCA9PT0gc3RyaW5nMSA/IG51bGxcbiAgICAgICAgOiBzdHJpbmcwID09PSBzdHJpbmcwMCA/IGludGVycG9sYXRlMFxuICAgICAgICA6IGludGVycG9sYXRlMCA9IGludGVycG9sYXRlKHN0cmluZzAwID0gc3RyaW5nMCwgdmFsdWUxKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0ckZ1bmN0aW9uKG5hbWUsIGludGVycG9sYXRlLCB2YWx1ZSkge1xuICB2YXIgc3RyaW5nMDAsXG4gICAgICBzdHJpbmcxMCxcbiAgICAgIGludGVycG9sYXRlMDtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzdHJpbmcwLCB2YWx1ZTEgPSB2YWx1ZSh0aGlzKSwgc3RyaW5nMTtcbiAgICBpZiAodmFsdWUxID09IG51bGwpIHJldHVybiB2b2lkIHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgIHN0cmluZzAgPSB0aGlzLmdldEF0dHJpYnV0ZShuYW1lKTtcbiAgICBzdHJpbmcxID0gdmFsdWUxICsgXCJcIjtcbiAgICByZXR1cm4gc3RyaW5nMCA9PT0gc3RyaW5nMSA/IG51bGxcbiAgICAgICAgOiBzdHJpbmcwID09PSBzdHJpbmcwMCAmJiBzdHJpbmcxID09PSBzdHJpbmcxMCA/IGludGVycG9sYXRlMFxuICAgICAgICA6IChzdHJpbmcxMCA9IHN0cmluZzEsIGludGVycG9sYXRlMCA9IGludGVycG9sYXRlKHN0cmluZzAwID0gc3RyaW5nMCwgdmFsdWUxKSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJGdW5jdGlvbk5TKGZ1bGxuYW1lLCBpbnRlcnBvbGF0ZSwgdmFsdWUpIHtcbiAgdmFyIHN0cmluZzAwLFxuICAgICAgc3RyaW5nMTAsXG4gICAgICBpbnRlcnBvbGF0ZTA7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc3RyaW5nMCwgdmFsdWUxID0gdmFsdWUodGhpcyksIHN0cmluZzE7XG4gICAgaWYgKHZhbHVlMSA9PSBudWxsKSByZXR1cm4gdm9pZCB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCk7XG4gICAgc3RyaW5nMCA9IHRoaXMuZ2V0QXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsKTtcbiAgICBzdHJpbmcxID0gdmFsdWUxICsgXCJcIjtcbiAgICByZXR1cm4gc3RyaW5nMCA9PT0gc3RyaW5nMSA/IG51bGxcbiAgICAgICAgOiBzdHJpbmcwID09PSBzdHJpbmcwMCAmJiBzdHJpbmcxID09PSBzdHJpbmcxMCA/IGludGVycG9sYXRlMFxuICAgICAgICA6IChzdHJpbmcxMCA9IHN0cmluZzEsIGludGVycG9sYXRlMCA9IGludGVycG9sYXRlKHN0cmluZzAwID0gc3RyaW5nMCwgdmFsdWUxKSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHZhciBmdWxsbmFtZSA9IG5hbWVzcGFjZShuYW1lKSwgaSA9IGZ1bGxuYW1lID09PSBcInRyYW5zZm9ybVwiID8gaW50ZXJwb2xhdGVUcmFuc2Zvcm0gOiBpbnRlcnBvbGF0ZTtcbiAgcmV0dXJuIHRoaXMuYXR0clR3ZWVuKG5hbWUsIHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICA/IChmdWxsbmFtZS5sb2NhbCA/IGF0dHJGdW5jdGlvbk5TIDogYXR0ckZ1bmN0aW9uKShmdWxsbmFtZSwgaSwgdHdlZW5WYWx1ZSh0aGlzLCBcImF0dHIuXCIgKyBuYW1lLCB2YWx1ZSkpXG4gICAgICA6IHZhbHVlID09IG51bGwgPyAoZnVsbG5hbWUubG9jYWwgPyBhdHRyUmVtb3ZlTlMgOiBhdHRyUmVtb3ZlKShmdWxsbmFtZSlcbiAgICAgIDogKGZ1bGxuYW1lLmxvY2FsID8gYXR0ckNvbnN0YW50TlMgOiBhdHRyQ29uc3RhbnQpKGZ1bGxuYW1lLCBpLCB2YWx1ZSkpO1xufVxuIiwgImltcG9ydCB7bmFtZXNwYWNlfSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5cbmZ1bmN0aW9uIGF0dHJJbnRlcnBvbGF0ZShuYW1lLCBpKSB7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUobmFtZSwgaS5jYWxsKHRoaXMsIHQpKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0ckludGVycG9sYXRlTlMoZnVsbG5hbWUsIGkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCwgaS5jYWxsKHRoaXMsIHQpKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0clR3ZWVuTlMoZnVsbG5hbWUsIHZhbHVlKSB7XG4gIHZhciB0MCwgaTA7XG4gIGZ1bmN0aW9uIHR3ZWVuKCkge1xuICAgIHZhciBpID0gdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBpZiAoaSAhPT0gaTApIHQwID0gKGkwID0gaSkgJiYgYXR0ckludGVycG9sYXRlTlMoZnVsbG5hbWUsIGkpO1xuICAgIHJldHVybiB0MDtcbiAgfVxuICB0d2Vlbi5fdmFsdWUgPSB2YWx1ZTtcbiAgcmV0dXJuIHR3ZWVuO1xufVxuXG5mdW5jdGlvbiBhdHRyVHdlZW4obmFtZSwgdmFsdWUpIHtcbiAgdmFyIHQwLCBpMDtcbiAgZnVuY3Rpb24gdHdlZW4oKSB7XG4gICAgdmFyIGkgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmIChpICE9PSBpMCkgdDAgPSAoaTAgPSBpKSAmJiBhdHRySW50ZXJwb2xhdGUobmFtZSwgaSk7XG4gICAgcmV0dXJuIHQwO1xuICB9XG4gIHR3ZWVuLl92YWx1ZSA9IHZhbHVlO1xuICByZXR1cm4gdHdlZW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHZhciBrZXkgPSBcImF0dHIuXCIgKyBuYW1lO1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHJldHVybiAoa2V5ID0gdGhpcy50d2VlbihrZXkpKSAmJiBrZXkuX3ZhbHVlO1xuICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIHRoaXMudHdlZW4oa2V5LCBudWxsKTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3I7XG4gIHZhciBmdWxsbmFtZSA9IG5hbWVzcGFjZShuYW1lKTtcbiAgcmV0dXJuIHRoaXMudHdlZW4oa2V5LCAoZnVsbG5hbWUubG9jYWwgPyBhdHRyVHdlZW5OUyA6IGF0dHJUd2VlbikoZnVsbG5hbWUsIHZhbHVlKSk7XG59XG4iLCAiaW1wb3J0IHtnZXQsIGluaXR9IGZyb20gXCIuL3NjaGVkdWxlLmpzXCI7XG5cbmZ1bmN0aW9uIGRlbGF5RnVuY3Rpb24oaWQsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBpbml0KHRoaXMsIGlkKS5kZWxheSA9ICt2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBkZWxheUNvbnN0YW50KGlkLCB2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPSArdmFsdWUsIGZ1bmN0aW9uKCkge1xuICAgIGluaXQodGhpcywgaWQpLmRlbGF5ID0gdmFsdWU7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHZhciBpZCA9IHRoaXMuX2lkO1xuXG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoXG4gICAgICA/IHRoaXMuZWFjaCgodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICA/IGRlbGF5RnVuY3Rpb25cbiAgICAgICAgICA6IGRlbGF5Q29uc3RhbnQpKGlkLCB2YWx1ZSkpXG4gICAgICA6IGdldCh0aGlzLm5vZGUoKSwgaWQpLmRlbGF5O1xufVxuIiwgImltcG9ydCB7Z2V0LCBzZXR9IGZyb20gXCIuL3NjaGVkdWxlLmpzXCI7XG5cbmZ1bmN0aW9uIGR1cmF0aW9uRnVuY3Rpb24oaWQsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBzZXQodGhpcywgaWQpLmR1cmF0aW9uID0gK3ZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGR1cmF0aW9uQ29uc3RhbnQoaWQsIHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9ICt2YWx1ZSwgZnVuY3Rpb24oKSB7XG4gICAgc2V0KHRoaXMsIGlkKS5kdXJhdGlvbiA9IHZhbHVlO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICB2YXIgaWQgPSB0aGlzLl9pZDtcblxuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLmVhY2goKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgPyBkdXJhdGlvbkZ1bmN0aW9uXG4gICAgICAgICAgOiBkdXJhdGlvbkNvbnN0YW50KShpZCwgdmFsdWUpKVxuICAgICAgOiBnZXQodGhpcy5ub2RlKCksIGlkKS5kdXJhdGlvbjtcbn1cbiIsICJpbXBvcnQge2dldCwgc2V0fSBmcm9tIFwiLi9zY2hlZHVsZS5qc1wiO1xuXG5mdW5jdGlvbiBlYXNlQ29uc3RhbnQoaWQsIHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgc2V0KHRoaXMsIGlkKS5lYXNlID0gdmFsdWU7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHZhciBpZCA9IHRoaXMuX2lkO1xuXG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoXG4gICAgICA/IHRoaXMuZWFjaChlYXNlQ29uc3RhbnQoaWQsIHZhbHVlKSlcbiAgICAgIDogZ2V0KHRoaXMubm9kZSgpLCBpZCkuZWFzZTtcbn1cbiIsICJpbXBvcnQge3NldH0gZnJvbSBcIi4vc2NoZWR1bGUuanNcIjtcblxuZnVuY3Rpb24gZWFzZVZhcnlpbmcoaWQsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgaWYgKHR5cGVvZiB2ICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBFcnJvcjtcbiAgICBzZXQodGhpcywgaWQpLmVhc2UgPSB2O1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBFcnJvcjtcbiAgcmV0dXJuIHRoaXMuZWFjaChlYXNlVmFyeWluZyh0aGlzLl9pZCwgdmFsdWUpKTtcbn1cbiIsICJpbXBvcnQge21hdGNoZXJ9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCB7VHJhbnNpdGlvbn0gZnJvbSBcIi4vaW5kZXguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obWF0Y2gpIHtcbiAgaWYgKHR5cGVvZiBtYXRjaCAhPT0gXCJmdW5jdGlvblwiKSBtYXRjaCA9IG1hdGNoZXIobWF0Y2gpO1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIHN1Ymdyb3VwcyA9IG5ldyBBcnJheShtKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgc3ViZ3JvdXAgPSBzdWJncm91cHNbal0gPSBbXSwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmICgobm9kZSA9IGdyb3VwW2ldKSAmJiBtYXRjaC5jYWxsKG5vZGUsIG5vZGUuX19kYXRhX18sIGksIGdyb3VwKSkge1xuICAgICAgICBzdWJncm91cC5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgVHJhbnNpdGlvbihzdWJncm91cHMsIHRoaXMuX3BhcmVudHMsIHRoaXMuX25hbWUsIHRoaXMuX2lkKTtcbn1cbiIsICJpbXBvcnQge1RyYW5zaXRpb259IGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHRyYW5zaXRpb24pIHtcbiAgaWYgKHRyYW5zaXRpb24uX2lkICE9PSB0aGlzLl9pZCkgdGhyb3cgbmV3IEVycm9yO1xuXG4gIGZvciAodmFyIGdyb3VwczAgPSB0aGlzLl9ncm91cHMsIGdyb3VwczEgPSB0cmFuc2l0aW9uLl9ncm91cHMsIG0wID0gZ3JvdXBzMC5sZW5ndGgsIG0xID0gZ3JvdXBzMS5sZW5ndGgsIG0gPSBNYXRoLm1pbihtMCwgbTEpLCBtZXJnZXMgPSBuZXcgQXJyYXkobTApLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwMCA9IGdyb3VwczBbal0sIGdyb3VwMSA9IGdyb3VwczFbal0sIG4gPSBncm91cDAubGVuZ3RoLCBtZXJnZSA9IG1lcmdlc1tqXSA9IG5ldyBBcnJheShuKSwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXAwW2ldIHx8IGdyb3VwMVtpXSkge1xuICAgICAgICBtZXJnZVtpXSA9IG5vZGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yICg7IGogPCBtMDsgKytqKSB7XG4gICAgbWVyZ2VzW2pdID0gZ3JvdXBzMFtqXTtcbiAgfVxuXG4gIHJldHVybiBuZXcgVHJhbnNpdGlvbihtZXJnZXMsIHRoaXMuX3BhcmVudHMsIHRoaXMuX25hbWUsIHRoaXMuX2lkKTtcbn1cbiIsICJpbXBvcnQge2dldCwgc2V0LCBpbml0fSBmcm9tIFwiLi9zY2hlZHVsZS5qc1wiO1xuXG5mdW5jdGlvbiBzdGFydChuYW1lKSB7XG4gIHJldHVybiAobmFtZSArIFwiXCIpLnRyaW0oKS5zcGxpdCgvXnxcXHMrLykuZXZlcnkoZnVuY3Rpb24odCkge1xuICAgIHZhciBpID0gdC5pbmRleE9mKFwiLlwiKTtcbiAgICBpZiAoaSA+PSAwKSB0ID0gdC5zbGljZSgwLCBpKTtcbiAgICByZXR1cm4gIXQgfHwgdCA9PT0gXCJzdGFydFwiO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gb25GdW5jdGlvbihpZCwgbmFtZSwgbGlzdGVuZXIpIHtcbiAgdmFyIG9uMCwgb24xLCBzaXQgPSBzdGFydChuYW1lKSA/IGluaXQgOiBzZXQ7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc2NoZWR1bGUgPSBzaXQodGhpcywgaWQpLFxuICAgICAgICBvbiA9IHNjaGVkdWxlLm9uO1xuXG4gICAgLy8gSWYgdGhpcyBub2RlIHNoYXJlZCBhIGRpc3BhdGNoIHdpdGggdGhlIHByZXZpb3VzIG5vZGUsXG4gICAgLy8ganVzdCBhc3NpZ24gdGhlIHVwZGF0ZWQgc2hhcmVkIGRpc3BhdGNoIGFuZCB3ZVx1MjAxOXJlIGRvbmUhXG4gICAgLy8gT3RoZXJ3aXNlLCBjb3B5LW9uLXdyaXRlLlxuICAgIGlmIChvbiAhPT0gb24wKSAob24xID0gKG9uMCA9IG9uKS5jb3B5KCkpLm9uKG5hbWUsIGxpc3RlbmVyKTtcblxuICAgIHNjaGVkdWxlLm9uID0gb24xO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCBsaXN0ZW5lcikge1xuICB2YXIgaWQgPSB0aGlzLl9pZDtcblxuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDJcbiAgICAgID8gZ2V0KHRoaXMubm9kZSgpLCBpZCkub24ub24obmFtZSlcbiAgICAgIDogdGhpcy5lYWNoKG9uRnVuY3Rpb24oaWQsIG5hbWUsIGxpc3RlbmVyKSk7XG59XG4iLCAiZnVuY3Rpb24gcmVtb3ZlRnVuY3Rpb24oaWQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XG4gICAgZm9yICh2YXIgaSBpbiB0aGlzLl9fdHJhbnNpdGlvbikgaWYgKCtpICE9PSBpZCkgcmV0dXJuO1xuICAgIGlmIChwYXJlbnQpIHBhcmVudC5yZW1vdmVDaGlsZCh0aGlzKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLm9uKFwiZW5kLnJlbW92ZVwiLCByZW1vdmVGdW5jdGlvbih0aGlzLl9pZCkpO1xufVxuIiwgImltcG9ydCB7c2VsZWN0b3J9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCB7VHJhbnNpdGlvbn0gZnJvbSBcIi4vaW5kZXguanNcIjtcbmltcG9ydCBzY2hlZHVsZSwge2dldH0gZnJvbSBcIi4vc2NoZWR1bGUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0KSB7XG4gIHZhciBuYW1lID0gdGhpcy5fbmFtZSxcbiAgICAgIGlkID0gdGhpcy5faWQ7XG5cbiAgaWYgKHR5cGVvZiBzZWxlY3QgIT09IFwiZnVuY3Rpb25cIikgc2VsZWN0ID0gc2VsZWN0b3Ioc2VsZWN0KTtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBzdWJncm91cHMgPSBuZXcgQXJyYXkobSksIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIG4gPSBncm91cC5sZW5ndGgsIHN1Ymdyb3VwID0gc3ViZ3JvdXBzW2pdID0gbmV3IEFycmF5KG4pLCBub2RlLCBzdWJub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKChub2RlID0gZ3JvdXBbaV0pICYmIChzdWJub2RlID0gc2VsZWN0LmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApKSkge1xuICAgICAgICBpZiAoXCJfX2RhdGFfX1wiIGluIG5vZGUpIHN1Ym5vZGUuX19kYXRhX18gPSBub2RlLl9fZGF0YV9fO1xuICAgICAgICBzdWJncm91cFtpXSA9IHN1Ym5vZGU7XG4gICAgICAgIHNjaGVkdWxlKHN1Ymdyb3VwW2ldLCBuYW1lLCBpZCwgaSwgc3ViZ3JvdXAsIGdldChub2RlLCBpZCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgVHJhbnNpdGlvbihzdWJncm91cHMsIHRoaXMuX3BhcmVudHMsIG5hbWUsIGlkKTtcbn1cbiIsICJpbXBvcnQge3NlbGVjdG9yQWxsfSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5pbXBvcnQge1RyYW5zaXRpb259IGZyb20gXCIuL2luZGV4LmpzXCI7XG5pbXBvcnQgc2NoZWR1bGUsIHtnZXR9IGZyb20gXCIuL3NjaGVkdWxlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdCkge1xuICB2YXIgbmFtZSA9IHRoaXMuX25hbWUsXG4gICAgICBpZCA9IHRoaXMuX2lkO1xuXG4gIGlmICh0eXBlb2Ygc2VsZWN0ICE9PSBcImZ1bmN0aW9uXCIpIHNlbGVjdCA9IHNlbGVjdG9yQWxsKHNlbGVjdCk7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBtID0gZ3JvdXBzLmxlbmd0aCwgc3ViZ3JvdXBzID0gW10sIHBhcmVudHMgPSBbXSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgICAgZm9yICh2YXIgY2hpbGRyZW4gPSBzZWxlY3QuY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCksIGNoaWxkLCBpbmhlcml0ID0gZ2V0KG5vZGUsIGlkKSwgayA9IDAsIGwgPSBjaGlsZHJlbi5sZW5ndGg7IGsgPCBsOyArK2spIHtcbiAgICAgICAgICBpZiAoY2hpbGQgPSBjaGlsZHJlbltrXSkge1xuICAgICAgICAgICAgc2NoZWR1bGUoY2hpbGQsIG5hbWUsIGlkLCBrLCBjaGlsZHJlbiwgaW5oZXJpdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN1Ymdyb3Vwcy5wdXNoKGNoaWxkcmVuKTtcbiAgICAgICAgcGFyZW50cy5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgVHJhbnNpdGlvbihzdWJncm91cHMsIHBhcmVudHMsIG5hbWUsIGlkKTtcbn1cbiIsICJpbXBvcnQge3NlbGVjdGlvbn0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuXG52YXIgU2VsZWN0aW9uID0gc2VsZWN0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHRoaXMuX2dyb3VwcywgdGhpcy5fcGFyZW50cyk7XG59XG4iLCAiaW1wb3J0IHtpbnRlcnBvbGF0ZVRyYW5zZm9ybUNzcyBhcyBpbnRlcnBvbGF0ZVRyYW5zZm9ybX0gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5pbXBvcnQge3N0eWxlfSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5pbXBvcnQge3NldH0gZnJvbSBcIi4vc2NoZWR1bGUuanNcIjtcbmltcG9ydCB7dHdlZW5WYWx1ZX0gZnJvbSBcIi4vdHdlZW4uanNcIjtcbmltcG9ydCBpbnRlcnBvbGF0ZSBmcm9tIFwiLi9pbnRlcnBvbGF0ZS5qc1wiO1xuXG5mdW5jdGlvbiBzdHlsZU51bGwobmFtZSwgaW50ZXJwb2xhdGUpIHtcbiAgdmFyIHN0cmluZzAwLFxuICAgICAgc3RyaW5nMTAsXG4gICAgICBpbnRlcnBvbGF0ZTA7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc3RyaW5nMCA9IHN0eWxlKHRoaXMsIG5hbWUpLFxuICAgICAgICBzdHJpbmcxID0gKHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobmFtZSksIHN0eWxlKHRoaXMsIG5hbWUpKTtcbiAgICByZXR1cm4gc3RyaW5nMCA9PT0gc3RyaW5nMSA/IG51bGxcbiAgICAgICAgOiBzdHJpbmcwID09PSBzdHJpbmcwMCAmJiBzdHJpbmcxID09PSBzdHJpbmcxMCA/IGludGVycG9sYXRlMFxuICAgICAgICA6IGludGVycG9sYXRlMCA9IGludGVycG9sYXRlKHN0cmluZzAwID0gc3RyaW5nMCwgc3RyaW5nMTAgPSBzdHJpbmcxKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc3R5bGVSZW1vdmUobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuYW1lKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc3R5bGVDb25zdGFudChuYW1lLCBpbnRlcnBvbGF0ZSwgdmFsdWUxKSB7XG4gIHZhciBzdHJpbmcwMCxcbiAgICAgIHN0cmluZzEgPSB2YWx1ZTEgKyBcIlwiLFxuICAgICAgaW50ZXJwb2xhdGUwO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHN0cmluZzAgPSBzdHlsZSh0aGlzLCBuYW1lKTtcbiAgICByZXR1cm4gc3RyaW5nMCA9PT0gc3RyaW5nMSA/IG51bGxcbiAgICAgICAgOiBzdHJpbmcwID09PSBzdHJpbmcwMCA/IGludGVycG9sYXRlMFxuICAgICAgICA6IGludGVycG9sYXRlMCA9IGludGVycG9sYXRlKHN0cmluZzAwID0gc3RyaW5nMCwgdmFsdWUxKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc3R5bGVGdW5jdGlvbihuYW1lLCBpbnRlcnBvbGF0ZSwgdmFsdWUpIHtcbiAgdmFyIHN0cmluZzAwLFxuICAgICAgc3RyaW5nMTAsXG4gICAgICBpbnRlcnBvbGF0ZTA7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc3RyaW5nMCA9IHN0eWxlKHRoaXMsIG5hbWUpLFxuICAgICAgICB2YWx1ZTEgPSB2YWx1ZSh0aGlzKSxcbiAgICAgICAgc3RyaW5nMSA9IHZhbHVlMSArIFwiXCI7XG4gICAgaWYgKHZhbHVlMSA9PSBudWxsKSBzdHJpbmcxID0gdmFsdWUxID0gKHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobmFtZSksIHN0eWxlKHRoaXMsIG5hbWUpKTtcbiAgICByZXR1cm4gc3RyaW5nMCA9PT0gc3RyaW5nMSA/IG51bGxcbiAgICAgICAgOiBzdHJpbmcwID09PSBzdHJpbmcwMCAmJiBzdHJpbmcxID09PSBzdHJpbmcxMCA/IGludGVycG9sYXRlMFxuICAgICAgICA6IChzdHJpbmcxMCA9IHN0cmluZzEsIGludGVycG9sYXRlMCA9IGludGVycG9sYXRlKHN0cmluZzAwID0gc3RyaW5nMCwgdmFsdWUxKSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHN0eWxlTWF5YmVSZW1vdmUoaWQsIG5hbWUpIHtcbiAgdmFyIG9uMCwgb24xLCBsaXN0ZW5lcjAsIGtleSA9IFwic3R5bGUuXCIgKyBuYW1lLCBldmVudCA9IFwiZW5kLlwiICsga2V5LCByZW1vdmU7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc2NoZWR1bGUgPSBzZXQodGhpcywgaWQpLFxuICAgICAgICBvbiA9IHNjaGVkdWxlLm9uLFxuICAgICAgICBsaXN0ZW5lciA9IHNjaGVkdWxlLnZhbHVlW2tleV0gPT0gbnVsbCA/IHJlbW92ZSB8fCAocmVtb3ZlID0gc3R5bGVSZW1vdmUobmFtZSkpIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gSWYgdGhpcyBub2RlIHNoYXJlZCBhIGRpc3BhdGNoIHdpdGggdGhlIHByZXZpb3VzIG5vZGUsXG4gICAgLy8ganVzdCBhc3NpZ24gdGhlIHVwZGF0ZWQgc2hhcmVkIGRpc3BhdGNoIGFuZCB3ZVx1MjAxOXJlIGRvbmUhXG4gICAgLy8gT3RoZXJ3aXNlLCBjb3B5LW9uLXdyaXRlLlxuICAgIGlmIChvbiAhPT0gb24wIHx8IGxpc3RlbmVyMCAhPT0gbGlzdGVuZXIpIChvbjEgPSAob24wID0gb24pLmNvcHkoKSkub24oZXZlbnQsIGxpc3RlbmVyMCA9IGxpc3RlbmVyKTtcblxuICAgIHNjaGVkdWxlLm9uID0gb24xO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSwgcHJpb3JpdHkpIHtcbiAgdmFyIGkgPSAobmFtZSArPSBcIlwiKSA9PT0gXCJ0cmFuc2Zvcm1cIiA/IGludGVycG9sYXRlVHJhbnNmb3JtIDogaW50ZXJwb2xhdGU7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gdGhpc1xuICAgICAgLnN0eWxlVHdlZW4obmFtZSwgc3R5bGVOdWxsKG5hbWUsIGkpKVxuICAgICAgLm9uKFwiZW5kLnN0eWxlLlwiICsgbmFtZSwgc3R5bGVSZW1vdmUobmFtZSkpXG4gICAgOiB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIiA/IHRoaXNcbiAgICAgIC5zdHlsZVR3ZWVuKG5hbWUsIHN0eWxlRnVuY3Rpb24obmFtZSwgaSwgdHdlZW5WYWx1ZSh0aGlzLCBcInN0eWxlLlwiICsgbmFtZSwgdmFsdWUpKSlcbiAgICAgIC5lYWNoKHN0eWxlTWF5YmVSZW1vdmUodGhpcy5faWQsIG5hbWUpKVxuICAgIDogdGhpc1xuICAgICAgLnN0eWxlVHdlZW4obmFtZSwgc3R5bGVDb25zdGFudChuYW1lLCBpLCB2YWx1ZSksIHByaW9yaXR5KVxuICAgICAgLm9uKFwiZW5kLnN0eWxlLlwiICsgbmFtZSwgbnVsbCk7XG59XG4iLCAiZnVuY3Rpb24gc3R5bGVJbnRlcnBvbGF0ZShuYW1lLCBpLCBwcmlvcml0eSkge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkobmFtZSwgaS5jYWxsKHRoaXMsIHQpLCBwcmlvcml0eSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHN0eWxlVHdlZW4obmFtZSwgdmFsdWUsIHByaW9yaXR5KSB7XG4gIHZhciB0LCBpMDtcbiAgZnVuY3Rpb24gdHdlZW4oKSB7XG4gICAgdmFyIGkgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmIChpICE9PSBpMCkgdCA9IChpMCA9IGkpICYmIHN0eWxlSW50ZXJwb2xhdGUobmFtZSwgaSwgcHJpb3JpdHkpO1xuICAgIHJldHVybiB0O1xuICB9XG4gIHR3ZWVuLl92YWx1ZSA9IHZhbHVlO1xuICByZXR1cm4gdHdlZW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUsIHZhbHVlLCBwcmlvcml0eSkge1xuICB2YXIga2V5ID0gXCJzdHlsZS5cIiArIChuYW1lICs9IFwiXCIpO1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHJldHVybiAoa2V5ID0gdGhpcy50d2VlbihrZXkpKSAmJiBrZXkuX3ZhbHVlO1xuICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIHRoaXMudHdlZW4oa2V5LCBudWxsKTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3I7XG4gIHJldHVybiB0aGlzLnR3ZWVuKGtleSwgc3R5bGVUd2VlbihuYW1lLCB2YWx1ZSwgcHJpb3JpdHkgPT0gbnVsbCA/IFwiXCIgOiBwcmlvcml0eSkpO1xufVxuIiwgImltcG9ydCB7dHdlZW5WYWx1ZX0gZnJvbSBcIi4vdHdlZW4uanNcIjtcblxuZnVuY3Rpb24gdGV4dENvbnN0YW50KHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnRleHRDb250ZW50ID0gdmFsdWU7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHRleHRGdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHZhbHVlMSA9IHZhbHVlKHRoaXMpO1xuICAgIHRoaXMudGV4dENvbnRlbnQgPSB2YWx1ZTEgPT0gbnVsbCA/IFwiXCIgOiB2YWx1ZTE7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLnR3ZWVuKFwidGV4dFwiLCB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyB0ZXh0RnVuY3Rpb24odHdlZW5WYWx1ZSh0aGlzLCBcInRleHRcIiwgdmFsdWUpKVxuICAgICAgOiB0ZXh0Q29uc3RhbnQodmFsdWUgPT0gbnVsbCA/IFwiXCIgOiB2YWx1ZSArIFwiXCIpKTtcbn1cbiIsICJmdW5jdGlvbiB0ZXh0SW50ZXJwb2xhdGUoaSkge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHRoaXMudGV4dENvbnRlbnQgPSBpLmNhbGwodGhpcywgdCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHRleHRUd2Vlbih2YWx1ZSkge1xuICB2YXIgdDAsIGkwO1xuICBmdW5jdGlvbiB0d2VlbigpIHtcbiAgICB2YXIgaSA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgaWYgKGkgIT09IGkwKSB0MCA9IChpMCA9IGkpICYmIHRleHRJbnRlcnBvbGF0ZShpKTtcbiAgICByZXR1cm4gdDA7XG4gIH1cbiAgdHdlZW4uX3ZhbHVlID0gdmFsdWU7XG4gIHJldHVybiB0d2Vlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUpIHtcbiAgdmFyIGtleSA9IFwidGV4dFwiO1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDEpIHJldHVybiAoa2V5ID0gdGhpcy50d2VlbihrZXkpKSAmJiBrZXkuX3ZhbHVlO1xuICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIHRoaXMudHdlZW4oa2V5LCBudWxsKTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3I7XG4gIHJldHVybiB0aGlzLnR3ZWVuKGtleSwgdGV4dFR3ZWVuKHZhbHVlKSk7XG59XG4iLCAiaW1wb3J0IHtUcmFuc2l0aW9uLCBuZXdJZH0gZnJvbSBcIi4vaW5kZXguanNcIjtcbmltcG9ydCBzY2hlZHVsZSwge2dldH0gZnJvbSBcIi4vc2NoZWR1bGUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBuYW1lID0gdGhpcy5fbmFtZSxcbiAgICAgIGlkMCA9IHRoaXMuX2lkLFxuICAgICAgaWQxID0gbmV3SWQoKTtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgICB2YXIgaW5oZXJpdCA9IGdldChub2RlLCBpZDApO1xuICAgICAgICBzY2hlZHVsZShub2RlLCBuYW1lLCBpZDEsIGksIGdyb3VwLCB7XG4gICAgICAgICAgdGltZTogaW5oZXJpdC50aW1lICsgaW5oZXJpdC5kZWxheSArIGluaGVyaXQuZHVyYXRpb24sXG4gICAgICAgICAgZGVsYXk6IDAsXG4gICAgICAgICAgZHVyYXRpb246IGluaGVyaXQuZHVyYXRpb24sXG4gICAgICAgICAgZWFzZTogaW5oZXJpdC5lYXNlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgVHJhbnNpdGlvbihncm91cHMsIHRoaXMuX3BhcmVudHMsIG5hbWUsIGlkMSk7XG59XG4iLCAiaW1wb3J0IHtzZXR9IGZyb20gXCIuL3NjaGVkdWxlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgb24wLCBvbjEsIHRoYXQgPSB0aGlzLCBpZCA9IHRoYXQuX2lkLCBzaXplID0gdGhhdC5zaXplKCk7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgY2FuY2VsID0ge3ZhbHVlOiByZWplY3R9LFxuICAgICAgICBlbmQgPSB7dmFsdWU6IGZ1bmN0aW9uKCkgeyBpZiAoLS1zaXplID09PSAwKSByZXNvbHZlKCk7IH19O1xuXG4gICAgdGhhdC5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHNjaGVkdWxlID0gc2V0KHRoaXMsIGlkKSxcbiAgICAgICAgICBvbiA9IHNjaGVkdWxlLm9uO1xuXG4gICAgICAvLyBJZiB0aGlzIG5vZGUgc2hhcmVkIGEgZGlzcGF0Y2ggd2l0aCB0aGUgcHJldmlvdXMgbm9kZSxcbiAgICAgIC8vIGp1c3QgYXNzaWduIHRoZSB1cGRhdGVkIHNoYXJlZCBkaXNwYXRjaCBhbmQgd2VcdTIwMTlyZSBkb25lIVxuICAgICAgLy8gT3RoZXJ3aXNlLCBjb3B5LW9uLXdyaXRlLlxuICAgICAgaWYgKG9uICE9PSBvbjApIHtcbiAgICAgICAgb24xID0gKG9uMCA9IG9uKS5jb3B5KCk7XG4gICAgICAgIG9uMS5fLmNhbmNlbC5wdXNoKGNhbmNlbCk7XG4gICAgICAgIG9uMS5fLmludGVycnVwdC5wdXNoKGNhbmNlbCk7XG4gICAgICAgIG9uMS5fLmVuZC5wdXNoKGVuZCk7XG4gICAgICB9XG5cbiAgICAgIHNjaGVkdWxlLm9uID0gb24xO1xuICAgIH0pO1xuXG4gICAgLy8gVGhlIHNlbGVjdGlvbiB3YXMgZW1wdHksIHJlc29sdmUgZW5kIGltbWVkaWF0ZWx5XG4gICAgaWYgKHNpemUgPT09IDApIHJlc29sdmUoKTtcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHtzZWxlY3Rpb259IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCB0cmFuc2l0aW9uX2F0dHIgZnJvbSBcIi4vYXR0ci5qc1wiO1xuaW1wb3J0IHRyYW5zaXRpb25fYXR0clR3ZWVuIGZyb20gXCIuL2F0dHJUd2Vlbi5qc1wiO1xuaW1wb3J0IHRyYW5zaXRpb25fZGVsYXkgZnJvbSBcIi4vZGVsYXkuanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX2R1cmF0aW9uIGZyb20gXCIuL2R1cmF0aW9uLmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9lYXNlIGZyb20gXCIuL2Vhc2UuanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX2Vhc2VWYXJ5aW5nIGZyb20gXCIuL2Vhc2VWYXJ5aW5nLmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9maWx0ZXIgZnJvbSBcIi4vZmlsdGVyLmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9tZXJnZSBmcm9tIFwiLi9tZXJnZS5qc1wiO1xuaW1wb3J0IHRyYW5zaXRpb25fb24gZnJvbSBcIi4vb24uanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX3JlbW92ZSBmcm9tIFwiLi9yZW1vdmUuanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX3NlbGVjdCBmcm9tIFwiLi9zZWxlY3QuanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX3NlbGVjdEFsbCBmcm9tIFwiLi9zZWxlY3RBbGwuanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX3NlbGVjdGlvbiBmcm9tIFwiLi9zZWxlY3Rpb24uanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX3N0eWxlIGZyb20gXCIuL3N0eWxlLmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zdHlsZVR3ZWVuIGZyb20gXCIuL3N0eWxlVHdlZW4uanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX3RleHQgZnJvbSBcIi4vdGV4dC5qc1wiO1xuaW1wb3J0IHRyYW5zaXRpb25fdGV4dFR3ZWVuIGZyb20gXCIuL3RleHRUd2Vlbi5qc1wiO1xuaW1wb3J0IHRyYW5zaXRpb25fdHJhbnNpdGlvbiBmcm9tIFwiLi90cmFuc2l0aW9uLmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl90d2VlbiBmcm9tIFwiLi90d2Vlbi5qc1wiO1xuaW1wb3J0IHRyYW5zaXRpb25fZW5kIGZyb20gXCIuL2VuZC5qc1wiO1xuXG52YXIgaWQgPSAwO1xuXG5leHBvcnQgZnVuY3Rpb24gVHJhbnNpdGlvbihncm91cHMsIHBhcmVudHMsIG5hbWUsIGlkKSB7XG4gIHRoaXMuX2dyb3VwcyA9IGdyb3VwcztcbiAgdGhpcy5fcGFyZW50cyA9IHBhcmVudHM7XG4gIHRoaXMuX25hbWUgPSBuYW1lO1xuICB0aGlzLl9pZCA9IGlkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0cmFuc2l0aW9uKG5hbWUpIHtcbiAgcmV0dXJuIHNlbGVjdGlvbigpLnRyYW5zaXRpb24obmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXdJZCgpIHtcbiAgcmV0dXJuICsraWQ7XG59XG5cbnZhciBzZWxlY3Rpb25fcHJvdG90eXBlID0gc2VsZWN0aW9uLnByb3RvdHlwZTtcblxuVHJhbnNpdGlvbi5wcm90b3R5cGUgPSB0cmFuc2l0aW9uLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IFRyYW5zaXRpb24sXG4gIHNlbGVjdDogdHJhbnNpdGlvbl9zZWxlY3QsXG4gIHNlbGVjdEFsbDogdHJhbnNpdGlvbl9zZWxlY3RBbGwsXG4gIGZpbHRlcjogdHJhbnNpdGlvbl9maWx0ZXIsXG4gIG1lcmdlOiB0cmFuc2l0aW9uX21lcmdlLFxuICBzZWxlY3Rpb246IHRyYW5zaXRpb25fc2VsZWN0aW9uLFxuICB0cmFuc2l0aW9uOiB0cmFuc2l0aW9uX3RyYW5zaXRpb24sXG4gIGNhbGw6IHNlbGVjdGlvbl9wcm90b3R5cGUuY2FsbCxcbiAgbm9kZXM6IHNlbGVjdGlvbl9wcm90b3R5cGUubm9kZXMsXG4gIG5vZGU6IHNlbGVjdGlvbl9wcm90b3R5cGUubm9kZSxcbiAgc2l6ZTogc2VsZWN0aW9uX3Byb3RvdHlwZS5zaXplLFxuICBlbXB0eTogc2VsZWN0aW9uX3Byb3RvdHlwZS5lbXB0eSxcbiAgZWFjaDogc2VsZWN0aW9uX3Byb3RvdHlwZS5lYWNoLFxuICBvbjogdHJhbnNpdGlvbl9vbixcbiAgYXR0cjogdHJhbnNpdGlvbl9hdHRyLFxuICBhdHRyVHdlZW46IHRyYW5zaXRpb25fYXR0clR3ZWVuLFxuICBzdHlsZTogdHJhbnNpdGlvbl9zdHlsZSxcbiAgc3R5bGVUd2VlbjogdHJhbnNpdGlvbl9zdHlsZVR3ZWVuLFxuICB0ZXh0OiB0cmFuc2l0aW9uX3RleHQsXG4gIHRleHRUd2VlbjogdHJhbnNpdGlvbl90ZXh0VHdlZW4sXG4gIHJlbW92ZTogdHJhbnNpdGlvbl9yZW1vdmUsXG4gIHR3ZWVuOiB0cmFuc2l0aW9uX3R3ZWVuLFxuICBkZWxheTogdHJhbnNpdGlvbl9kZWxheSxcbiAgZHVyYXRpb246IHRyYW5zaXRpb25fZHVyYXRpb24sXG4gIGVhc2U6IHRyYW5zaXRpb25fZWFzZSxcbiAgZWFzZVZhcnlpbmc6IHRyYW5zaXRpb25fZWFzZVZhcnlpbmcsXG4gIGVuZDogdHJhbnNpdGlvbl9lbmQsXG4gIFtTeW1ib2wuaXRlcmF0b3JdOiBzZWxlY3Rpb25fcHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl1cbn07XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIGN1YmljSW4odCkge1xuICByZXR1cm4gdCAqIHQgKiB0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3ViaWNPdXQodCkge1xuICByZXR1cm4gLS10ICogdCAqIHQgKyAxO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3ViaWNJbk91dCh0KSB7XG4gIHJldHVybiAoKHQgKj0gMikgPD0gMSA/IHQgKiB0ICogdCA6ICh0IC09IDIpICogdCAqIHQgKyAyKSAvIDI7XG59XG4iLCAiaW1wb3J0IHtUcmFuc2l0aW9uLCBuZXdJZH0gZnJvbSBcIi4uL3RyYW5zaXRpb24vaW5kZXguanNcIjtcbmltcG9ydCBzY2hlZHVsZSBmcm9tIFwiLi4vdHJhbnNpdGlvbi9zY2hlZHVsZS5qc1wiO1xuaW1wb3J0IHtlYXNlQ3ViaWNJbk91dH0gZnJvbSBcImQzLWVhc2VcIjtcbmltcG9ydCB7bm93fSBmcm9tIFwiZDMtdGltZXJcIjtcblxudmFyIGRlZmF1bHRUaW1pbmcgPSB7XG4gIHRpbWU6IG51bGwsIC8vIFNldCBvbiB1c2UuXG4gIGRlbGF5OiAwLFxuICBkdXJhdGlvbjogMjUwLFxuICBlYXNlOiBlYXNlQ3ViaWNJbk91dFxufTtcblxuZnVuY3Rpb24gaW5oZXJpdChub2RlLCBpZCkge1xuICB2YXIgdGltaW5nO1xuICB3aGlsZSAoISh0aW1pbmcgPSBub2RlLl9fdHJhbnNpdGlvbikgfHwgISh0aW1pbmcgPSB0aW1pbmdbaWRdKSkge1xuICAgIGlmICghKG5vZGUgPSBub2RlLnBhcmVudE5vZGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHRyYW5zaXRpb24gJHtpZH0gbm90IGZvdW5kYCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0aW1pbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGlkLFxuICAgICAgdGltaW5nO1xuXG4gIGlmIChuYW1lIGluc3RhbmNlb2YgVHJhbnNpdGlvbikge1xuICAgIGlkID0gbmFtZS5faWQsIG5hbWUgPSBuYW1lLl9uYW1lO1xuICB9IGVsc2Uge1xuICAgIGlkID0gbmV3SWQoKSwgKHRpbWluZyA9IGRlZmF1bHRUaW1pbmcpLnRpbWUgPSBub3coKSwgbmFtZSA9IG5hbWUgPT0gbnVsbCA/IG51bGwgOiBuYW1lICsgXCJcIjtcbiAgfVxuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIG4gPSBncm91cC5sZW5ndGgsIG5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB7XG4gICAgICAgIHNjaGVkdWxlKG5vZGUsIG5hbWUsIGlkLCBpLCBncm91cCwgdGltaW5nIHx8IGluaGVyaXQobm9kZSwgaWQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFRyYW5zaXRpb24oZ3JvdXBzLCB0aGlzLl9wYXJlbnRzLCBuYW1lLCBpZCk7XG59XG4iLCAiaW1wb3J0IHtzZWxlY3Rpb259IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCBzZWxlY3Rpb25faW50ZXJydXB0IGZyb20gXCIuL2ludGVycnVwdC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl90cmFuc2l0aW9uIGZyb20gXCIuL3RyYW5zaXRpb24uanNcIjtcblxuc2VsZWN0aW9uLnByb3RvdHlwZS5pbnRlcnJ1cHQgPSBzZWxlY3Rpb25faW50ZXJydXB0O1xuc2VsZWN0aW9uLnByb3RvdHlwZS50cmFuc2l0aW9uID0gc2VsZWN0aW9uX3RyYW5zaXRpb247XG4iLCAiaW1wb3J0IHtkaXNwYXRjaH0gZnJvbSBcImQzLWRpc3BhdGNoXCI7XG5pbXBvcnQge2RyYWdEaXNhYmxlLCBkcmFnRW5hYmxlfSBmcm9tIFwiZDMtZHJhZ1wiO1xuaW1wb3J0IHtpbnRlcnBvbGF0ZX0gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5pbXBvcnQge3BvaW50ZXIsIHNlbGVjdH0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHtpbnRlcnJ1cHR9IGZyb20gXCJkMy10cmFuc2l0aW9uXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBCcnVzaEV2ZW50IGZyb20gXCIuL2V2ZW50LmpzXCI7XG5pbXBvcnQgbm9ldmVudCwge25vcHJvcGFnYXRpb259IGZyb20gXCIuL25vZXZlbnQuanNcIjtcblxudmFyIE1PREVfRFJBRyA9IHtuYW1lOiBcImRyYWdcIn0sXG4gICAgTU9ERV9TUEFDRSA9IHtuYW1lOiBcInNwYWNlXCJ9LFxuICAgIE1PREVfSEFORExFID0ge25hbWU6IFwiaGFuZGxlXCJ9LFxuICAgIE1PREVfQ0VOVEVSID0ge25hbWU6IFwiY2VudGVyXCJ9O1xuXG5jb25zdCB7YWJzLCBtYXgsIG1pbn0gPSBNYXRoO1xuXG5mdW5jdGlvbiBudW1iZXIxKGUpIHtcbiAgcmV0dXJuIFsrZVswXSwgK2VbMV1dO1xufVxuXG5mdW5jdGlvbiBudW1iZXIyKGUpIHtcbiAgcmV0dXJuIFtudW1iZXIxKGVbMF0pLCBudW1iZXIxKGVbMV0pXTtcbn1cblxudmFyIFggPSB7XG4gIG5hbWU6IFwieFwiLFxuICBoYW5kbGVzOiBbXCJ3XCIsIFwiZVwiXS5tYXAodHlwZSksXG4gIGlucHV0OiBmdW5jdGlvbih4LCBlKSB7IHJldHVybiB4ID09IG51bGwgPyBudWxsIDogW1sreFswXSwgZVswXVsxXV0sIFsreFsxXSwgZVsxXVsxXV1dOyB9LFxuICBvdXRwdXQ6IGZ1bmN0aW9uKHh5KSB7IHJldHVybiB4eSAmJiBbeHlbMF1bMF0sIHh5WzFdWzBdXTsgfVxufTtcblxudmFyIFkgPSB7XG4gIG5hbWU6IFwieVwiLFxuICBoYW5kbGVzOiBbXCJuXCIsIFwic1wiXS5tYXAodHlwZSksXG4gIGlucHV0OiBmdW5jdGlvbih5LCBlKSB7IHJldHVybiB5ID09IG51bGwgPyBudWxsIDogW1tlWzBdWzBdLCAreVswXV0sIFtlWzFdWzBdLCAreVsxXV1dOyB9LFxuICBvdXRwdXQ6IGZ1bmN0aW9uKHh5KSB7IHJldHVybiB4eSAmJiBbeHlbMF1bMV0sIHh5WzFdWzFdXTsgfVxufTtcblxudmFyIFhZID0ge1xuICBuYW1lOiBcInh5XCIsXG4gIGhhbmRsZXM6IFtcIm5cIiwgXCJ3XCIsIFwiZVwiLCBcInNcIiwgXCJud1wiLCBcIm5lXCIsIFwic3dcIiwgXCJzZVwiXS5tYXAodHlwZSksXG4gIGlucHV0OiBmdW5jdGlvbih4eSkgeyByZXR1cm4geHkgPT0gbnVsbCA/IG51bGwgOiBudW1iZXIyKHh5KTsgfSxcbiAgb3V0cHV0OiBmdW5jdGlvbih4eSkgeyByZXR1cm4geHk7IH1cbn07XG5cbnZhciBjdXJzb3JzID0ge1xuICBvdmVybGF5OiBcImNyb3NzaGFpclwiLFxuICBzZWxlY3Rpb246IFwibW92ZVwiLFxuICBuOiBcIm5zLXJlc2l6ZVwiLFxuICBlOiBcImV3LXJlc2l6ZVwiLFxuICBzOiBcIm5zLXJlc2l6ZVwiLFxuICB3OiBcImV3LXJlc2l6ZVwiLFxuICBudzogXCJud3NlLXJlc2l6ZVwiLFxuICBuZTogXCJuZXN3LXJlc2l6ZVwiLFxuICBzZTogXCJud3NlLXJlc2l6ZVwiLFxuICBzdzogXCJuZXN3LXJlc2l6ZVwiXG59O1xuXG52YXIgZmxpcFggPSB7XG4gIGU6IFwid1wiLFxuICB3OiBcImVcIixcbiAgbnc6IFwibmVcIixcbiAgbmU6IFwibndcIixcbiAgc2U6IFwic3dcIixcbiAgc3c6IFwic2VcIlxufTtcblxudmFyIGZsaXBZID0ge1xuICBuOiBcInNcIixcbiAgczogXCJuXCIsXG4gIG53OiBcInN3XCIsXG4gIG5lOiBcInNlXCIsXG4gIHNlOiBcIm5lXCIsXG4gIHN3OiBcIm53XCJcbn07XG5cbnZhciBzaWduc1ggPSB7XG4gIG92ZXJsYXk6ICsxLFxuICBzZWxlY3Rpb246ICsxLFxuICBuOiBudWxsLFxuICBlOiArMSxcbiAgczogbnVsbCxcbiAgdzogLTEsXG4gIG53OiAtMSxcbiAgbmU6ICsxLFxuICBzZTogKzEsXG4gIHN3OiAtMVxufTtcblxudmFyIHNpZ25zWSA9IHtcbiAgb3ZlcmxheTogKzEsXG4gIHNlbGVjdGlvbjogKzEsXG4gIG46IC0xLFxuICBlOiBudWxsLFxuICBzOiArMSxcbiAgdzogbnVsbCxcbiAgbnc6IC0xLFxuICBuZTogLTEsXG4gIHNlOiArMSxcbiAgc3c6ICsxXG59O1xuXG5mdW5jdGlvbiB0eXBlKHQpIHtcbiAgcmV0dXJuIHt0eXBlOiB0fTtcbn1cblxuLy8gSWdub3JlIHJpZ2h0LWNsaWNrLCBzaW5jZSB0aGF0IHNob3VsZCBvcGVuIHRoZSBjb250ZXh0IG1lbnUuXG5mdW5jdGlvbiBkZWZhdWx0RmlsdGVyKGV2ZW50KSB7XG4gIHJldHVybiAhZXZlbnQuY3RybEtleSAmJiAhZXZlbnQuYnV0dG9uO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0RXh0ZW50KCkge1xuICB2YXIgc3ZnID0gdGhpcy5vd25lclNWR0VsZW1lbnQgfHwgdGhpcztcbiAgaWYgKHN2Zy5oYXNBdHRyaWJ1dGUoXCJ2aWV3Qm94XCIpKSB7XG4gICAgc3ZnID0gc3ZnLnZpZXdCb3guYmFzZVZhbDtcbiAgICByZXR1cm4gW1tzdmcueCwgc3ZnLnldLCBbc3ZnLnggKyBzdmcud2lkdGgsIHN2Zy55ICsgc3ZnLmhlaWdodF1dO1xuICB9XG4gIHJldHVybiBbWzAsIDBdLCBbc3ZnLndpZHRoLmJhc2VWYWwudmFsdWUsIHN2Zy5oZWlnaHQuYmFzZVZhbC52YWx1ZV1dO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0VG91Y2hhYmxlKCkge1xuICByZXR1cm4gbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzIHx8IChcIm9udG91Y2hzdGFydFwiIGluIHRoaXMpO1xufVxuXG4vLyBMaWtlIGQzLmxvY2FsLCBidXQgd2l0aCB0aGUgbmFtZSBcdTIwMUNfX2JydXNoXHUyMDFEIHJhdGhlciB0aGFuIGF1dG8tZ2VuZXJhdGVkLlxuZnVuY3Rpb24gbG9jYWwobm9kZSkge1xuICB3aGlsZSAoIW5vZGUuX19icnVzaCkgaWYgKCEobm9kZSA9IG5vZGUucGFyZW50Tm9kZSkpIHJldHVybjtcbiAgcmV0dXJuIG5vZGUuX19icnVzaDtcbn1cblxuZnVuY3Rpb24gZW1wdHkoZXh0ZW50KSB7XG4gIHJldHVybiBleHRlbnRbMF1bMF0gPT09IGV4dGVudFsxXVswXVxuICAgICAgfHwgZXh0ZW50WzBdWzFdID09PSBleHRlbnRbMV1bMV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBicnVzaFNlbGVjdGlvbihub2RlKSB7XG4gIHZhciBzdGF0ZSA9IG5vZGUuX19icnVzaDtcbiAgcmV0dXJuIHN0YXRlID8gc3RhdGUuZGltLm91dHB1dChzdGF0ZS5zZWxlY3Rpb24pIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJydXNoWCgpIHtcbiAgcmV0dXJuIGJydXNoKFgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnJ1c2hZKCkge1xuICByZXR1cm4gYnJ1c2goWSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gYnJ1c2goWFkpO1xufVxuXG5mdW5jdGlvbiBicnVzaChkaW0pIHtcbiAgdmFyIGV4dGVudCA9IGRlZmF1bHRFeHRlbnQsXG4gICAgICBmaWx0ZXIgPSBkZWZhdWx0RmlsdGVyLFxuICAgICAgdG91Y2hhYmxlID0gZGVmYXVsdFRvdWNoYWJsZSxcbiAgICAgIGtleXMgPSB0cnVlLFxuICAgICAgbGlzdGVuZXJzID0gZGlzcGF0Y2goXCJzdGFydFwiLCBcImJydXNoXCIsIFwiZW5kXCIpLFxuICAgICAgaGFuZGxlU2l6ZSA9IDYsXG4gICAgICB0b3VjaGVuZGluZztcblxuICBmdW5jdGlvbiBicnVzaChncm91cCkge1xuICAgIHZhciBvdmVybGF5ID0gZ3JvdXBcbiAgICAgICAgLnByb3BlcnR5KFwiX19icnVzaFwiLCBpbml0aWFsaXplKVxuICAgICAgLnNlbGVjdEFsbChcIi5vdmVybGF5XCIpXG4gICAgICAuZGF0YShbdHlwZShcIm92ZXJsYXlcIildKTtcblxuICAgIG92ZXJsYXkuZW50ZXIoKS5hcHBlbmQoXCJyZWN0XCIpXG4gICAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJvdmVybGF5XCIpXG4gICAgICAgIC5hdHRyKFwicG9pbnRlci1ldmVudHNcIiwgXCJhbGxcIilcbiAgICAgICAgLmF0dHIoXCJjdXJzb3JcIiwgY3Vyc29ycy5vdmVybGF5KVxuICAgICAgLm1lcmdlKG92ZXJsYXkpXG4gICAgICAgIC5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciBleHRlbnQgPSBsb2NhbCh0aGlzKS5leHRlbnQ7XG4gICAgICAgICAgc2VsZWN0KHRoaXMpXG4gICAgICAgICAgICAgIC5hdHRyKFwieFwiLCBleHRlbnRbMF1bMF0pXG4gICAgICAgICAgICAgIC5hdHRyKFwieVwiLCBleHRlbnRbMF1bMV0pXG4gICAgICAgICAgICAgIC5hdHRyKFwid2lkdGhcIiwgZXh0ZW50WzFdWzBdIC0gZXh0ZW50WzBdWzBdKVxuICAgICAgICAgICAgICAuYXR0cihcImhlaWdodFwiLCBleHRlbnRbMV1bMV0gLSBleHRlbnRbMF1bMV0pO1xuICAgICAgICB9KTtcblxuICAgIGdyb3VwLnNlbGVjdEFsbChcIi5zZWxlY3Rpb25cIilcbiAgICAgIC5kYXRhKFt0eXBlKFwic2VsZWN0aW9uXCIpXSlcbiAgICAgIC5lbnRlcigpLmFwcGVuZChcInJlY3RcIilcbiAgICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcInNlbGVjdGlvblwiKVxuICAgICAgICAuYXR0cihcImN1cnNvclwiLCBjdXJzb3JzLnNlbGVjdGlvbilcbiAgICAgICAgLmF0dHIoXCJmaWxsXCIsIFwiIzc3N1wiKVxuICAgICAgICAuYXR0cihcImZpbGwtb3BhY2l0eVwiLCAwLjMpXG4gICAgICAgIC5hdHRyKFwic3Ryb2tlXCIsIFwiI2ZmZlwiKVxuICAgICAgICAuYXR0cihcInNoYXBlLXJlbmRlcmluZ1wiLCBcImNyaXNwRWRnZXNcIik7XG5cbiAgICB2YXIgaGFuZGxlID0gZ3JvdXAuc2VsZWN0QWxsKFwiLmhhbmRsZVwiKVxuICAgICAgLmRhdGEoZGltLmhhbmRsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudHlwZTsgfSk7XG5cbiAgICBoYW5kbGUuZXhpdCgpLnJlbW92ZSgpO1xuXG4gICAgaGFuZGxlLmVudGVyKCkuYXBwZW5kKFwicmVjdFwiKVxuICAgICAgICAuYXR0cihcImNsYXNzXCIsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIFwiaGFuZGxlIGhhbmRsZS0tXCIgKyBkLnR5cGU7IH0pXG4gICAgICAgIC5hdHRyKFwiY3Vyc29yXCIsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGN1cnNvcnNbZC50eXBlXTsgfSk7XG5cbiAgICBncm91cFxuICAgICAgICAuZWFjaChyZWRyYXcpXG4gICAgICAgIC5hdHRyKFwiZmlsbFwiLCBcIm5vbmVcIilcbiAgICAgICAgLmF0dHIoXCJwb2ludGVyLWV2ZW50c1wiLCBcImFsbFwiKVxuICAgICAgICAub24oXCJtb3VzZWRvd24uYnJ1c2hcIiwgc3RhcnRlZClcbiAgICAgIC5maWx0ZXIodG91Y2hhYmxlKVxuICAgICAgICAub24oXCJ0b3VjaHN0YXJ0LmJydXNoXCIsIHN0YXJ0ZWQpXG4gICAgICAgIC5vbihcInRvdWNobW92ZS5icnVzaFwiLCB0b3VjaG1vdmVkKVxuICAgICAgICAub24oXCJ0b3VjaGVuZC5icnVzaCB0b3VjaGNhbmNlbC5icnVzaFwiLCB0b3VjaGVuZGVkKVxuICAgICAgICAuc3R5bGUoXCJ0b3VjaC1hY3Rpb25cIiwgXCJub25lXCIpXG4gICAgICAgIC5zdHlsZShcIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvclwiLCBcInJnYmEoMCwwLDAsMClcIik7XG4gIH1cblxuICBicnVzaC5tb3ZlID0gZnVuY3Rpb24oZ3JvdXAsIHNlbGVjdGlvbikge1xuICAgIGlmIChncm91cC50d2Vlbikge1xuICAgICAgZ3JvdXBcbiAgICAgICAgICAub24oXCJzdGFydC5icnVzaFwiLCBmdW5jdGlvbihldmVudCkgeyBlbWl0dGVyKHRoaXMsIGFyZ3VtZW50cykuYmVmb3Jlc3RhcnQoKS5zdGFydChldmVudCk7IH0pXG4gICAgICAgICAgLm9uKFwiaW50ZXJydXB0LmJydXNoIGVuZC5icnVzaFwiLCBmdW5jdGlvbihldmVudCkgeyBlbWl0dGVyKHRoaXMsIGFyZ3VtZW50cykuZW5kKGV2ZW50KTsgfSlcbiAgICAgICAgICAudHdlZW4oXCJicnVzaFwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcyxcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IHRoYXQuX19icnVzaCxcbiAgICAgICAgICAgICAgICBlbWl0ID0gZW1pdHRlcih0aGF0LCBhcmd1bWVudHMpLFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbjAgPSBzdGF0ZS5zZWxlY3Rpb24sXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uMSA9IGRpbS5pbnB1dCh0eXBlb2Ygc2VsZWN0aW9uID09PSBcImZ1bmN0aW9uXCIgPyBzZWxlY3Rpb24uYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IHNlbGVjdGlvbiwgc3RhdGUuZXh0ZW50KSxcbiAgICAgICAgICAgICAgICBpID0gaW50ZXJwb2xhdGUoc2VsZWN0aW9uMCwgc2VsZWN0aW9uMSk7XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIHR3ZWVuKHQpIHtcbiAgICAgICAgICAgICAgc3RhdGUuc2VsZWN0aW9uID0gdCA9PT0gMSAmJiBzZWxlY3Rpb24xID09PSBudWxsID8gbnVsbCA6IGkodCk7XG4gICAgICAgICAgICAgIHJlZHJhdy5jYWxsKHRoYXQpO1xuICAgICAgICAgICAgICBlbWl0LmJydXNoKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb24wICE9PSBudWxsICYmIHNlbGVjdGlvbjEgIT09IG51bGwgPyB0d2VlbiA6IHR3ZWVuKDEpO1xuICAgICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cFxuICAgICAgICAgIC5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLFxuICAgICAgICAgICAgICAgIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICAgICAgc3RhdGUgPSB0aGF0Ll9fYnJ1c2gsXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uMSA9IGRpbS5pbnB1dCh0eXBlb2Ygc2VsZWN0aW9uID09PSBcImZ1bmN0aW9uXCIgPyBzZWxlY3Rpb24uYXBwbHkodGhhdCwgYXJncykgOiBzZWxlY3Rpb24sIHN0YXRlLmV4dGVudCksXG4gICAgICAgICAgICAgICAgZW1pdCA9IGVtaXR0ZXIodGhhdCwgYXJncykuYmVmb3Jlc3RhcnQoKTtcblxuICAgICAgICAgICAgaW50ZXJydXB0KHRoYXQpO1xuICAgICAgICAgICAgc3RhdGUuc2VsZWN0aW9uID0gc2VsZWN0aW9uMSA9PT0gbnVsbCA/IG51bGwgOiBzZWxlY3Rpb24xO1xuICAgICAgICAgICAgcmVkcmF3LmNhbGwodGhhdCk7XG4gICAgICAgICAgICBlbWl0LnN0YXJ0KCkuYnJ1c2goKS5lbmQoKTtcbiAgICAgICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgYnJ1c2guY2xlYXIgPSBmdW5jdGlvbihncm91cCkge1xuICAgIGJydXNoLm1vdmUoZ3JvdXAsIG51bGwpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHJlZHJhdygpIHtcbiAgICB2YXIgZ3JvdXAgPSBzZWxlY3QodGhpcyksXG4gICAgICAgIHNlbGVjdGlvbiA9IGxvY2FsKHRoaXMpLnNlbGVjdGlvbjtcblxuICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgIGdyb3VwLnNlbGVjdEFsbChcIi5zZWxlY3Rpb25cIilcbiAgICAgICAgICAuc3R5bGUoXCJkaXNwbGF5XCIsIG51bGwpXG4gICAgICAgICAgLmF0dHIoXCJ4XCIsIHNlbGVjdGlvblswXVswXSlcbiAgICAgICAgICAuYXR0cihcInlcIiwgc2VsZWN0aW9uWzBdWzFdKVxuICAgICAgICAgIC5hdHRyKFwid2lkdGhcIiwgc2VsZWN0aW9uWzFdWzBdIC0gc2VsZWN0aW9uWzBdWzBdKVxuICAgICAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIHNlbGVjdGlvblsxXVsxXSAtIHNlbGVjdGlvblswXVsxXSk7XG5cbiAgICAgIGdyb3VwLnNlbGVjdEFsbChcIi5oYW5kbGVcIilcbiAgICAgICAgICAuc3R5bGUoXCJkaXNwbGF5XCIsIG51bGwpXG4gICAgICAgICAgLmF0dHIoXCJ4XCIsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudHlwZVtkLnR5cGUubGVuZ3RoIC0gMV0gPT09IFwiZVwiID8gc2VsZWN0aW9uWzFdWzBdIC0gaGFuZGxlU2l6ZSAvIDIgOiBzZWxlY3Rpb25bMF1bMF0gLSBoYW5kbGVTaXplIC8gMjsgfSlcbiAgICAgICAgICAuYXR0cihcInlcIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC50eXBlWzBdID09PSBcInNcIiA/IHNlbGVjdGlvblsxXVsxXSAtIGhhbmRsZVNpemUgLyAyIDogc2VsZWN0aW9uWzBdWzFdIC0gaGFuZGxlU2l6ZSAvIDI7IH0pXG4gICAgICAgICAgLmF0dHIoXCJ3aWR0aFwiLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnR5cGUgPT09IFwiblwiIHx8IGQudHlwZSA9PT0gXCJzXCIgPyBzZWxlY3Rpb25bMV1bMF0gLSBzZWxlY3Rpb25bMF1bMF0gKyBoYW5kbGVTaXplIDogaGFuZGxlU2l6ZTsgfSlcbiAgICAgICAgICAuYXR0cihcImhlaWdodFwiLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnR5cGUgPT09IFwiZVwiIHx8IGQudHlwZSA9PT0gXCJ3XCIgPyBzZWxlY3Rpb25bMV1bMV0gLSBzZWxlY3Rpb25bMF1bMV0gKyBoYW5kbGVTaXplIDogaGFuZGxlU2l6ZTsgfSk7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICBncm91cC5zZWxlY3RBbGwoXCIuc2VsZWN0aW9uLC5oYW5kbGVcIilcbiAgICAgICAgICAuc3R5bGUoXCJkaXNwbGF5XCIsIFwibm9uZVwiKVxuICAgICAgICAgIC5hdHRyKFwieFwiLCBudWxsKVxuICAgICAgICAgIC5hdHRyKFwieVwiLCBudWxsKVxuICAgICAgICAgIC5hdHRyKFwid2lkdGhcIiwgbnVsbClcbiAgICAgICAgICAuYXR0cihcImhlaWdodFwiLCBudWxsKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBlbWl0dGVyKHRoYXQsIGFyZ3MsIGNsZWFuKSB7XG4gICAgdmFyIGVtaXQgPSB0aGF0Ll9fYnJ1c2guZW1pdHRlcjtcbiAgICByZXR1cm4gZW1pdCAmJiAoIWNsZWFuIHx8ICFlbWl0LmNsZWFuKSA/IGVtaXQgOiBuZXcgRW1pdHRlcih0aGF0LCBhcmdzLCBjbGVhbik7XG4gIH1cblxuICBmdW5jdGlvbiBFbWl0dGVyKHRoYXQsIGFyZ3MsIGNsZWFuKSB7XG4gICAgdGhpcy50aGF0ID0gdGhhdDtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIHRoaXMuc3RhdGUgPSB0aGF0Ll9fYnJ1c2g7XG4gICAgdGhpcy5hY3RpdmUgPSAwO1xuICAgIHRoaXMuY2xlYW4gPSBjbGVhbjtcbiAgfVxuXG4gIEVtaXR0ZXIucHJvdG90eXBlID0ge1xuICAgIGJlZm9yZXN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICAgIGlmICgrK3RoaXMuYWN0aXZlID09PSAxKSB0aGlzLnN0YXRlLmVtaXR0ZXIgPSB0aGlzLCB0aGlzLnN0YXJ0aW5nID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgc3RhcnQ6IGZ1bmN0aW9uKGV2ZW50LCBtb2RlKSB7XG4gICAgICBpZiAodGhpcy5zdGFydGluZykgdGhpcy5zdGFydGluZyA9IGZhbHNlLCB0aGlzLmVtaXQoXCJzdGFydFwiLCBldmVudCwgbW9kZSk7XG4gICAgICBlbHNlIHRoaXMuZW1pdChcImJydXNoXCIsIGV2ZW50KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgYnJ1c2g6IGZ1bmN0aW9uKGV2ZW50LCBtb2RlKSB7XG4gICAgICB0aGlzLmVtaXQoXCJicnVzaFwiLCBldmVudCwgbW9kZSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIGVuZDogZnVuY3Rpb24oZXZlbnQsIG1vZGUpIHtcbiAgICAgIGlmICgtLXRoaXMuYWN0aXZlID09PSAwKSBkZWxldGUgdGhpcy5zdGF0ZS5lbWl0dGVyLCB0aGlzLmVtaXQoXCJlbmRcIiwgZXZlbnQsIG1vZGUpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBlbWl0OiBmdW5jdGlvbih0eXBlLCBldmVudCwgbW9kZSkge1xuICAgICAgdmFyIGQgPSBzZWxlY3QodGhpcy50aGF0KS5kYXR1bSgpO1xuICAgICAgbGlzdGVuZXJzLmNhbGwoXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHRoaXMudGhhdCxcbiAgICAgICAgbmV3IEJydXNoRXZlbnQodHlwZSwge1xuICAgICAgICAgIHNvdXJjZUV2ZW50OiBldmVudCxcbiAgICAgICAgICB0YXJnZXQ6IGJydXNoLFxuICAgICAgICAgIHNlbGVjdGlvbjogZGltLm91dHB1dCh0aGlzLnN0YXRlLnNlbGVjdGlvbiksXG4gICAgICAgICAgbW9kZSxcbiAgICAgICAgICBkaXNwYXRjaDogbGlzdGVuZXJzXG4gICAgICAgIH0pLFxuICAgICAgICBkXG4gICAgICApO1xuICAgIH1cbiAgfTtcblxuICBmdW5jdGlvbiBzdGFydGVkKGV2ZW50KSB7XG4gICAgaWYgKHRvdWNoZW5kaW5nICYmICFldmVudC50b3VjaGVzKSByZXR1cm47XG4gICAgaWYgKCFmaWx0ZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSkgcmV0dXJuO1xuXG4gICAgdmFyIHRoYXQgPSB0aGlzLFxuICAgICAgICB0eXBlID0gZXZlbnQudGFyZ2V0Ll9fZGF0YV9fLnR5cGUsXG4gICAgICAgIG1vZGUgPSAoa2V5cyAmJiBldmVudC5tZXRhS2V5ID8gdHlwZSA9IFwib3ZlcmxheVwiIDogdHlwZSkgPT09IFwic2VsZWN0aW9uXCIgPyBNT0RFX0RSQUcgOiAoa2V5cyAmJiBldmVudC5hbHRLZXkgPyBNT0RFX0NFTlRFUiA6IE1PREVfSEFORExFKSxcbiAgICAgICAgc2lnblggPSBkaW0gPT09IFkgPyBudWxsIDogc2lnbnNYW3R5cGVdLFxuICAgICAgICBzaWduWSA9IGRpbSA9PT0gWCA/IG51bGwgOiBzaWduc1lbdHlwZV0sXG4gICAgICAgIHN0YXRlID0gbG9jYWwodGhhdCksXG4gICAgICAgIGV4dGVudCA9IHN0YXRlLmV4dGVudCxcbiAgICAgICAgc2VsZWN0aW9uID0gc3RhdGUuc2VsZWN0aW9uLFxuICAgICAgICBXID0gZXh0ZW50WzBdWzBdLCB3MCwgdzEsXG4gICAgICAgIE4gPSBleHRlbnRbMF1bMV0sIG4wLCBuMSxcbiAgICAgICAgRSA9IGV4dGVudFsxXVswXSwgZTAsIGUxLFxuICAgICAgICBTID0gZXh0ZW50WzFdWzFdLCBzMCwgczEsXG4gICAgICAgIGR4ID0gMCxcbiAgICAgICAgZHkgPSAwLFxuICAgICAgICBtb3ZpbmcsXG4gICAgICAgIHNoaWZ0aW5nID0gc2lnblggJiYgc2lnblkgJiYga2V5cyAmJiBldmVudC5zaGlmdEtleSxcbiAgICAgICAgbG9ja1gsXG4gICAgICAgIGxvY2tZLFxuICAgICAgICBwb2ludHMgPSBBcnJheS5mcm9tKGV2ZW50LnRvdWNoZXMgfHwgW2V2ZW50XSwgdCA9PiB7XG4gICAgICAgICAgY29uc3QgaSA9IHQuaWRlbnRpZmllcjtcbiAgICAgICAgICB0ID0gcG9pbnRlcih0LCB0aGF0KTtcbiAgICAgICAgICB0LnBvaW50MCA9IHQuc2xpY2UoKTtcbiAgICAgICAgICB0LmlkZW50aWZpZXIgPSBpO1xuICAgICAgICAgIHJldHVybiB0O1xuICAgICAgICB9KTtcblxuICAgIGlmICh0eXBlID09PSBcIm92ZXJsYXlcIikge1xuICAgICAgaWYgKHNlbGVjdGlvbikgbW92aW5nID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHB0cyA9IFtwb2ludHNbMF0sIHBvaW50c1sxXSB8fCBwb2ludHNbMF1dO1xuICAgICAgc3RhdGUuc2VsZWN0aW9uID0gc2VsZWN0aW9uID0gW1tcbiAgICAgICAgICB3MCA9IGRpbSA9PT0gWSA/IFcgOiBtaW4ocHRzWzBdWzBdLCBwdHNbMV1bMF0pLFxuICAgICAgICAgIG4wID0gZGltID09PSBYID8gTiA6IG1pbihwdHNbMF1bMV0sIHB0c1sxXVsxXSlcbiAgICAgICAgXSwgW1xuICAgICAgICAgIGUwID0gZGltID09PSBZID8gRSA6IG1heChwdHNbMF1bMF0sIHB0c1sxXVswXSksXG4gICAgICAgICAgczAgPSBkaW0gPT09IFggPyBTIDogbWF4KHB0c1swXVsxXSwgcHRzWzFdWzFdKVxuICAgICAgICBdXTtcbiAgICAgIGlmIChwb2ludHMubGVuZ3RoID4gMSkgbW92ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3MCA9IHNlbGVjdGlvblswXVswXTtcbiAgICAgIG4wID0gc2VsZWN0aW9uWzBdWzFdO1xuICAgICAgZTAgPSBzZWxlY3Rpb25bMV1bMF07XG4gICAgICBzMCA9IHNlbGVjdGlvblsxXVsxXTtcbiAgICB9XG5cbiAgICB3MSA9IHcwO1xuICAgIG4xID0gbjA7XG4gICAgZTEgPSBlMDtcbiAgICBzMSA9IHMwO1xuXG4gICAgdmFyIGdyb3VwID0gc2VsZWN0KHRoYXQpXG4gICAgICAgIC5hdHRyKFwicG9pbnRlci1ldmVudHNcIiwgXCJub25lXCIpO1xuXG4gICAgdmFyIG92ZXJsYXkgPSBncm91cC5zZWxlY3RBbGwoXCIub3ZlcmxheVwiKVxuICAgICAgICAuYXR0cihcImN1cnNvclwiLCBjdXJzb3JzW3R5cGVdKTtcblxuICAgIGludGVycnVwdCh0aGF0KTtcbiAgICB2YXIgZW1pdCA9IGVtaXR0ZXIodGhhdCwgYXJndW1lbnRzLCB0cnVlKS5iZWZvcmVzdGFydCgpO1xuXG4gICAgaWYgKGV2ZW50LnRvdWNoZXMpIHtcbiAgICAgIGVtaXQubW92ZWQgPSBtb3ZlZDtcbiAgICAgIGVtaXQuZW5kZWQgPSBlbmRlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHZpZXcgPSBzZWxlY3QoZXZlbnQudmlldylcbiAgICAgICAgICAub24oXCJtb3VzZW1vdmUuYnJ1c2hcIiwgbW92ZWQsIHRydWUpXG4gICAgICAgICAgLm9uKFwibW91c2V1cC5icnVzaFwiLCBlbmRlZCwgdHJ1ZSk7XG4gICAgICBpZiAoa2V5cykgdmlld1xuICAgICAgICAgIC5vbihcImtleWRvd24uYnJ1c2hcIiwga2V5ZG93bmVkLCB0cnVlKVxuICAgICAgICAgIC5vbihcImtleXVwLmJydXNoXCIsIGtleXVwcGVkLCB0cnVlKVxuXG4gICAgICBkcmFnRGlzYWJsZShldmVudC52aWV3KTtcbiAgICB9XG5cbiAgICByZWRyYXcuY2FsbCh0aGF0KTtcbiAgICBlbWl0LnN0YXJ0KGV2ZW50LCBtb2RlLm5hbWUpO1xuXG4gICAgZnVuY3Rpb24gbW92ZWQoZXZlbnQpIHtcbiAgICAgIGZvciAoY29uc3QgcCBvZiBldmVudC5jaGFuZ2VkVG91Y2hlcyB8fCBbZXZlbnRdKSB7XG4gICAgICAgIGZvciAoY29uc3QgZCBvZiBwb2ludHMpXG4gICAgICAgICAgaWYgKGQuaWRlbnRpZmllciA9PT0gcC5pZGVudGlmaWVyKSBkLmN1ciA9IHBvaW50ZXIocCwgdGhhdCk7XG4gICAgICB9XG4gICAgICBpZiAoc2hpZnRpbmcgJiYgIWxvY2tYICYmICFsb2NrWSAmJiBwb2ludHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGNvbnN0IHBvaW50ID0gcG9pbnRzWzBdO1xuICAgICAgICBpZiAoYWJzKHBvaW50LmN1clswXSAtIHBvaW50WzBdKSA+IGFicyhwb2ludC5jdXJbMV0gLSBwb2ludFsxXSkpXG4gICAgICAgICAgbG9ja1kgPSB0cnVlO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9ja1ggPSB0cnVlO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBwb2ludCBvZiBwb2ludHMpXG4gICAgICAgIGlmIChwb2ludC5jdXIpIHBvaW50WzBdID0gcG9pbnQuY3VyWzBdLCBwb2ludFsxXSA9IHBvaW50LmN1clsxXTtcbiAgICAgIG1vdmluZyA9IHRydWU7XG4gICAgICBub2V2ZW50KGV2ZW50KTtcbiAgICAgIG1vdmUoZXZlbnQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vdmUoZXZlbnQpIHtcbiAgICAgIGNvbnN0IHBvaW50ID0gcG9pbnRzWzBdLCBwb2ludDAgPSBwb2ludC5wb2ludDA7XG4gICAgICB2YXIgdDtcblxuICAgICAgZHggPSBwb2ludFswXSAtIHBvaW50MFswXTtcbiAgICAgIGR5ID0gcG9pbnRbMV0gLSBwb2ludDBbMV07XG5cbiAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICBjYXNlIE1PREVfU1BBQ0U6XG4gICAgICAgIGNhc2UgTU9ERV9EUkFHOiB7XG4gICAgICAgICAgaWYgKHNpZ25YKSBkeCA9IG1heChXIC0gdzAsIG1pbihFIC0gZTAsIGR4KSksIHcxID0gdzAgKyBkeCwgZTEgPSBlMCArIGR4O1xuICAgICAgICAgIGlmIChzaWduWSkgZHkgPSBtYXgoTiAtIG4wLCBtaW4oUyAtIHMwLCBkeSkpLCBuMSA9IG4wICsgZHksIHMxID0gczAgKyBkeTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIE1PREVfSEFORExFOiB7XG4gICAgICAgICAgaWYgKHBvaW50c1sxXSkge1xuICAgICAgICAgICAgaWYgKHNpZ25YKSB3MSA9IG1heChXLCBtaW4oRSwgcG9pbnRzWzBdWzBdKSksIGUxID0gbWF4KFcsIG1pbihFLCBwb2ludHNbMV1bMF0pKSwgc2lnblggPSAxO1xuICAgICAgICAgICAgaWYgKHNpZ25ZKSBuMSA9IG1heChOLCBtaW4oUywgcG9pbnRzWzBdWzFdKSksIHMxID0gbWF4KE4sIG1pbihTLCBwb2ludHNbMV1bMV0pKSwgc2lnblkgPSAxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoc2lnblggPCAwKSBkeCA9IG1heChXIC0gdzAsIG1pbihFIC0gdzAsIGR4KSksIHcxID0gdzAgKyBkeCwgZTEgPSBlMDtcbiAgICAgICAgICAgIGVsc2UgaWYgKHNpZ25YID4gMCkgZHggPSBtYXgoVyAtIGUwLCBtaW4oRSAtIGUwLCBkeCkpLCB3MSA9IHcwLCBlMSA9IGUwICsgZHg7XG4gICAgICAgICAgICBpZiAoc2lnblkgPCAwKSBkeSA9IG1heChOIC0gbjAsIG1pbihTIC0gbjAsIGR5KSksIG4xID0gbjAgKyBkeSwgczEgPSBzMDtcbiAgICAgICAgICAgIGVsc2UgaWYgKHNpZ25ZID4gMCkgZHkgPSBtYXgoTiAtIHMwLCBtaW4oUyAtIHMwLCBkeSkpLCBuMSA9IG4wLCBzMSA9IHMwICsgZHk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgTU9ERV9DRU5URVI6IHtcbiAgICAgICAgICBpZiAoc2lnblgpIHcxID0gbWF4KFcsIG1pbihFLCB3MCAtIGR4ICogc2lnblgpKSwgZTEgPSBtYXgoVywgbWluKEUsIGUwICsgZHggKiBzaWduWCkpO1xuICAgICAgICAgIGlmIChzaWduWSkgbjEgPSBtYXgoTiwgbWluKFMsIG4wIC0gZHkgKiBzaWduWSkpLCBzMSA9IG1heChOLCBtaW4oUywgczAgKyBkeSAqIHNpZ25ZKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGUxIDwgdzEpIHtcbiAgICAgICAgc2lnblggKj0gLTE7XG4gICAgICAgIHQgPSB3MCwgdzAgPSBlMCwgZTAgPSB0O1xuICAgICAgICB0ID0gdzEsIHcxID0gZTEsIGUxID0gdDtcbiAgICAgICAgaWYgKHR5cGUgaW4gZmxpcFgpIG92ZXJsYXkuYXR0cihcImN1cnNvclwiLCBjdXJzb3JzW3R5cGUgPSBmbGlwWFt0eXBlXV0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoczEgPCBuMSkge1xuICAgICAgICBzaWduWSAqPSAtMTtcbiAgICAgICAgdCA9IG4wLCBuMCA9IHMwLCBzMCA9IHQ7XG4gICAgICAgIHQgPSBuMSwgbjEgPSBzMSwgczEgPSB0O1xuICAgICAgICBpZiAodHlwZSBpbiBmbGlwWSkgb3ZlcmxheS5hdHRyKFwiY3Vyc29yXCIsIGN1cnNvcnNbdHlwZSA9IGZsaXBZW3R5cGVdXSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZS5zZWxlY3Rpb24pIHNlbGVjdGlvbiA9IHN0YXRlLnNlbGVjdGlvbjsgLy8gTWF5IGJlIHNldCBieSBicnVzaC5tb3ZlIVxuICAgICAgaWYgKGxvY2tYKSB3MSA9IHNlbGVjdGlvblswXVswXSwgZTEgPSBzZWxlY3Rpb25bMV1bMF07XG4gICAgICBpZiAobG9ja1kpIG4xID0gc2VsZWN0aW9uWzBdWzFdLCBzMSA9IHNlbGVjdGlvblsxXVsxXTtcblxuICAgICAgaWYgKHNlbGVjdGlvblswXVswXSAhPT0gdzFcbiAgICAgICAgICB8fCBzZWxlY3Rpb25bMF1bMV0gIT09IG4xXG4gICAgICAgICAgfHwgc2VsZWN0aW9uWzFdWzBdICE9PSBlMVxuICAgICAgICAgIHx8IHNlbGVjdGlvblsxXVsxXSAhPT0gczEpIHtcbiAgICAgICAgc3RhdGUuc2VsZWN0aW9uID0gW1t3MSwgbjFdLCBbZTEsIHMxXV07XG4gICAgICAgIHJlZHJhdy5jYWxsKHRoYXQpO1xuICAgICAgICBlbWl0LmJydXNoKGV2ZW50LCBtb2RlLm5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVuZGVkKGV2ZW50KSB7XG4gICAgICBub3Byb3BhZ2F0aW9uKGV2ZW50KTtcbiAgICAgIGlmIChldmVudC50b3VjaGVzKSB7XG4gICAgICAgIGlmIChldmVudC50b3VjaGVzLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgICBpZiAodG91Y2hlbmRpbmcpIGNsZWFyVGltZW91dCh0b3VjaGVuZGluZyk7XG4gICAgICAgIHRvdWNoZW5kaW5nID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsgdG91Y2hlbmRpbmcgPSBudWxsOyB9LCA1MDApOyAvLyBHaG9zdCBjbGlja3MgYXJlIGRlbGF5ZWQhXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkcmFnRW5hYmxlKGV2ZW50LnZpZXcsIG1vdmluZyk7XG4gICAgICAgIHZpZXcub24oXCJrZXlkb3duLmJydXNoIGtleXVwLmJydXNoIG1vdXNlbW92ZS5icnVzaCBtb3VzZXVwLmJydXNoXCIsIG51bGwpO1xuICAgICAgfVxuICAgICAgZ3JvdXAuYXR0cihcInBvaW50ZXItZXZlbnRzXCIsIFwiYWxsXCIpO1xuICAgICAgb3ZlcmxheS5hdHRyKFwiY3Vyc29yXCIsIGN1cnNvcnMub3ZlcmxheSk7XG4gICAgICBpZiAoc3RhdGUuc2VsZWN0aW9uKSBzZWxlY3Rpb24gPSBzdGF0ZS5zZWxlY3Rpb247IC8vIE1heSBiZSBzZXQgYnkgYnJ1c2gubW92ZSAob24gc3RhcnQpIVxuICAgICAgaWYgKGVtcHR5KHNlbGVjdGlvbikpIHN0YXRlLnNlbGVjdGlvbiA9IG51bGwsIHJlZHJhdy5jYWxsKHRoYXQpO1xuICAgICAgZW1pdC5lbmQoZXZlbnQsIG1vZGUubmFtZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24ga2V5ZG93bmVkKGV2ZW50KSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcbiAgICAgICAgY2FzZSAxNjogeyAvLyBTSElGVFxuICAgICAgICAgIHNoaWZ0aW5nID0gc2lnblggJiYgc2lnblk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAxODogeyAvLyBBTFRcbiAgICAgICAgICBpZiAobW9kZSA9PT0gTU9ERV9IQU5ETEUpIHtcbiAgICAgICAgICAgIGlmIChzaWduWCkgZTAgPSBlMSAtIGR4ICogc2lnblgsIHcwID0gdzEgKyBkeCAqIHNpZ25YO1xuICAgICAgICAgICAgaWYgKHNpZ25ZKSBzMCA9IHMxIC0gZHkgKiBzaWduWSwgbjAgPSBuMSArIGR5ICogc2lnblk7XG4gICAgICAgICAgICBtb2RlID0gTU9ERV9DRU5URVI7XG4gICAgICAgICAgICBtb3ZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMzI6IHsgLy8gU1BBQ0U7IHRha2VzIHByaW9yaXR5IG92ZXIgQUxUXG4gICAgICAgICAgaWYgKG1vZGUgPT09IE1PREVfSEFORExFIHx8IG1vZGUgPT09IE1PREVfQ0VOVEVSKSB7XG4gICAgICAgICAgICBpZiAoc2lnblggPCAwKSBlMCA9IGUxIC0gZHg7IGVsc2UgaWYgKHNpZ25YID4gMCkgdzAgPSB3MSAtIGR4O1xuICAgICAgICAgICAgaWYgKHNpZ25ZIDwgMCkgczAgPSBzMSAtIGR5OyBlbHNlIGlmIChzaWduWSA+IDApIG4wID0gbjEgLSBkeTtcbiAgICAgICAgICAgIG1vZGUgPSBNT0RFX1NQQUNFO1xuICAgICAgICAgICAgb3ZlcmxheS5hdHRyKFwiY3Vyc29yXCIsIGN1cnNvcnMuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIG1vdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDogcmV0dXJuO1xuICAgICAgfVxuICAgICAgbm9ldmVudChldmVudCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24ga2V5dXBwZWQoZXZlbnQpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgICBjYXNlIDE2OiB7IC8vIFNISUZUXG4gICAgICAgICAgaWYgKHNoaWZ0aW5nKSB7XG4gICAgICAgICAgICBsb2NrWCA9IGxvY2tZID0gc2hpZnRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIG1vdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAxODogeyAvLyBBTFRcbiAgICAgICAgICBpZiAobW9kZSA9PT0gTU9ERV9DRU5URVIpIHtcbiAgICAgICAgICAgIGlmIChzaWduWCA8IDApIGUwID0gZTE7IGVsc2UgaWYgKHNpZ25YID4gMCkgdzAgPSB3MTtcbiAgICAgICAgICAgIGlmIChzaWduWSA8IDApIHMwID0gczE7IGVsc2UgaWYgKHNpZ25ZID4gMCkgbjAgPSBuMTtcbiAgICAgICAgICAgIG1vZGUgPSBNT0RFX0hBTkRMRTtcbiAgICAgICAgICAgIG1vdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAzMjogeyAvLyBTUEFDRVxuICAgICAgICAgIGlmIChtb2RlID09PSBNT0RFX1NQQUNFKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICAgIGlmIChzaWduWCkgZTAgPSBlMSAtIGR4ICogc2lnblgsIHcwID0gdzEgKyBkeCAqIHNpZ25YO1xuICAgICAgICAgICAgICBpZiAoc2lnblkpIHMwID0gczEgLSBkeSAqIHNpZ25ZLCBuMCA9IG4xICsgZHkgKiBzaWduWTtcbiAgICAgICAgICAgICAgbW9kZSA9IE1PREVfQ0VOVEVSO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKHNpZ25YIDwgMCkgZTAgPSBlMTsgZWxzZSBpZiAoc2lnblggPiAwKSB3MCA9IHcxO1xuICAgICAgICAgICAgICBpZiAoc2lnblkgPCAwKSBzMCA9IHMxOyBlbHNlIGlmIChzaWduWSA+IDApIG4wID0gbjE7XG4gICAgICAgICAgICAgIG1vZGUgPSBNT0RFX0hBTkRMRTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG92ZXJsYXkuYXR0cihcImN1cnNvclwiLCBjdXJzb3JzW3R5cGVdKTtcbiAgICAgICAgICAgIG1vdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDogcmV0dXJuO1xuICAgICAgfVxuICAgICAgbm9ldmVudChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdG91Y2htb3ZlZChldmVudCkge1xuICAgIGVtaXR0ZXIodGhpcywgYXJndW1lbnRzKS5tb3ZlZChldmVudCk7XG4gIH1cblxuICBmdW5jdGlvbiB0b3VjaGVuZGVkKGV2ZW50KSB7XG4gICAgZW1pdHRlcih0aGlzLCBhcmd1bWVudHMpLmVuZGVkKGV2ZW50KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgdmFyIHN0YXRlID0gdGhpcy5fX2JydXNoIHx8IHtzZWxlY3Rpb246IG51bGx9O1xuICAgIHN0YXRlLmV4dGVudCA9IG51bWJlcjIoZXh0ZW50LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICAgIHN0YXRlLmRpbSA9IGRpbTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBicnVzaC5leHRlbnQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZXh0ZW50ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChudW1iZXIyKF8pKSwgYnJ1c2gpIDogZXh0ZW50O1xuICB9O1xuXG4gIGJydXNoLmZpbHRlciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChmaWx0ZXIgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCEhXyksIGJydXNoKSA6IGZpbHRlcjtcbiAgfTtcblxuICBicnVzaC50b3VjaGFibGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodG91Y2hhYmxlID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCghIV8pLCBicnVzaCkgOiB0b3VjaGFibGU7XG4gIH07XG5cbiAgYnJ1c2guaGFuZGxlU2l6ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChoYW5kbGVTaXplID0gK18sIGJydXNoKSA6IGhhbmRsZVNpemU7XG4gIH07XG5cbiAgYnJ1c2gua2V5TW9kaWZpZXJzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGtleXMgPSAhIV8sIGJydXNoKSA6IGtleXM7XG4gIH07XG5cbiAgYnJ1c2gub24gPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWUgPSBsaXN0ZW5lcnMub24uYXBwbHkobGlzdGVuZXJzLCBhcmd1bWVudHMpO1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbGlzdGVuZXJzID8gYnJ1c2ggOiB2YWx1ZTtcbiAgfTtcblxuICByZXR1cm4gYnJ1c2g7XG59XG4iLCAiY29uc3QgcGkgPSBNYXRoLlBJLFxuICAgIHRhdSA9IDIgKiBwaSxcbiAgICBlcHNpbG9uID0gMWUtNixcbiAgICB0YXVFcHNpbG9uID0gdGF1IC0gZXBzaWxvbjtcblxuZnVuY3Rpb24gUGF0aCgpIHtcbiAgdGhpcy5feDAgPSB0aGlzLl95MCA9IC8vIHN0YXJ0IG9mIGN1cnJlbnQgc3VicGF0aFxuICB0aGlzLl94MSA9IHRoaXMuX3kxID0gbnVsbDsgLy8gZW5kIG9mIGN1cnJlbnQgc3VicGF0aFxuICB0aGlzLl8gPSBcIlwiO1xufVxuXG5mdW5jdGlvbiBwYXRoKCkge1xuICByZXR1cm4gbmV3IFBhdGg7XG59XG5cblBhdGgucHJvdG90eXBlID0gcGF0aC5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBQYXRoLFxuICBtb3ZlVG86IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB0aGlzLl8gKz0gXCJNXCIgKyAodGhpcy5feDAgPSB0aGlzLl94MSA9ICt4KSArIFwiLFwiICsgKHRoaXMuX3kwID0gdGhpcy5feTEgPSAreSk7XG4gIH0sXG4gIGNsb3NlUGF0aDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX3gxICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl94MSA9IHRoaXMuX3gwLCB0aGlzLl95MSA9IHRoaXMuX3kwO1xuICAgICAgdGhpcy5fICs9IFwiWlwiO1xuICAgIH1cbiAgfSxcbiAgbGluZVRvOiBmdW5jdGlvbih4LCB5KSB7XG4gICAgdGhpcy5fICs9IFwiTFwiICsgKHRoaXMuX3gxID0gK3gpICsgXCIsXCIgKyAodGhpcy5feTEgPSAreSk7XG4gIH0sXG4gIHF1YWRyYXRpY0N1cnZlVG86IGZ1bmN0aW9uKHgxLCB5MSwgeCwgeSkge1xuICAgIHRoaXMuXyArPSBcIlFcIiArICgreDEpICsgXCIsXCIgKyAoK3kxKSArIFwiLFwiICsgKHRoaXMuX3gxID0gK3gpICsgXCIsXCIgKyAodGhpcy5feTEgPSAreSk7XG4gIH0sXG4gIGJlemllckN1cnZlVG86IGZ1bmN0aW9uKHgxLCB5MSwgeDIsIHkyLCB4LCB5KSB7XG4gICAgdGhpcy5fICs9IFwiQ1wiICsgKCt4MSkgKyBcIixcIiArICgreTEpICsgXCIsXCIgKyAoK3gyKSArIFwiLFwiICsgKCt5MikgKyBcIixcIiArICh0aGlzLl94MSA9ICt4KSArIFwiLFwiICsgKHRoaXMuX3kxID0gK3kpO1xuICB9LFxuICBhcmNUbzogZnVuY3Rpb24oeDEsIHkxLCB4MiwgeTIsIHIpIHtcbiAgICB4MSA9ICt4MSwgeTEgPSAreTEsIHgyID0gK3gyLCB5MiA9ICt5MiwgciA9ICtyO1xuICAgIHZhciB4MCA9IHRoaXMuX3gxLFxuICAgICAgICB5MCA9IHRoaXMuX3kxLFxuICAgICAgICB4MjEgPSB4MiAtIHgxLFxuICAgICAgICB5MjEgPSB5MiAtIHkxLFxuICAgICAgICB4MDEgPSB4MCAtIHgxLFxuICAgICAgICB5MDEgPSB5MCAtIHkxLFxuICAgICAgICBsMDFfMiA9IHgwMSAqIHgwMSArIHkwMSAqIHkwMTtcblxuICAgIC8vIElzIHRoZSByYWRpdXMgbmVnYXRpdmU/IEVycm9yLlxuICAgIGlmIChyIDwgMCkgdGhyb3cgbmV3IEVycm9yKFwibmVnYXRpdmUgcmFkaXVzOiBcIiArIHIpO1xuXG4gICAgLy8gSXMgdGhpcyBwYXRoIGVtcHR5PyBNb3ZlIHRvICh4MSx5MSkuXG4gICAgaWYgKHRoaXMuX3gxID09PSBudWxsKSB7XG4gICAgICB0aGlzLl8gKz0gXCJNXCIgKyAodGhpcy5feDEgPSB4MSkgKyBcIixcIiArICh0aGlzLl95MSA9IHkxKTtcbiAgICB9XG5cbiAgICAvLyBPciwgaXMgKHgxLHkxKSBjb2luY2lkZW50IHdpdGggKHgwLHkwKT8gRG8gbm90aGluZy5cbiAgICBlbHNlIGlmICghKGwwMV8yID4gZXBzaWxvbikpO1xuXG4gICAgLy8gT3IsIGFyZSAoeDAseTApLCAoeDEseTEpIGFuZCAoeDIseTIpIGNvbGxpbmVhcj9cbiAgICAvLyBFcXVpdmFsZW50bHksIGlzICh4MSx5MSkgY29pbmNpZGVudCB3aXRoICh4Mix5Mik/XG4gICAgLy8gT3IsIGlzIHRoZSByYWRpdXMgemVybz8gTGluZSB0byAoeDEseTEpLlxuICAgIGVsc2UgaWYgKCEoTWF0aC5hYnMoeTAxICogeDIxIC0geTIxICogeDAxKSA+IGVwc2lsb24pIHx8ICFyKSB7XG4gICAgICB0aGlzLl8gKz0gXCJMXCIgKyAodGhpcy5feDEgPSB4MSkgKyBcIixcIiArICh0aGlzLl95MSA9IHkxKTtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIGRyYXcgYW4gYXJjIVxuICAgIGVsc2Uge1xuICAgICAgdmFyIHgyMCA9IHgyIC0geDAsXG4gICAgICAgICAgeTIwID0geTIgLSB5MCxcbiAgICAgICAgICBsMjFfMiA9IHgyMSAqIHgyMSArIHkyMSAqIHkyMSxcbiAgICAgICAgICBsMjBfMiA9IHgyMCAqIHgyMCArIHkyMCAqIHkyMCxcbiAgICAgICAgICBsMjEgPSBNYXRoLnNxcnQobDIxXzIpLFxuICAgICAgICAgIGwwMSA9IE1hdGguc3FydChsMDFfMiksXG4gICAgICAgICAgbCA9IHIgKiBNYXRoLnRhbigocGkgLSBNYXRoLmFjb3MoKGwyMV8yICsgbDAxXzIgLSBsMjBfMikgLyAoMiAqIGwyMSAqIGwwMSkpKSAvIDIpLFxuICAgICAgICAgIHQwMSA9IGwgLyBsMDEsXG4gICAgICAgICAgdDIxID0gbCAvIGwyMTtcblxuICAgICAgLy8gSWYgdGhlIHN0YXJ0IHRhbmdlbnQgaXMgbm90IGNvaW5jaWRlbnQgd2l0aCAoeDAseTApLCBsaW5lIHRvLlxuICAgICAgaWYgKE1hdGguYWJzKHQwMSAtIDEpID4gZXBzaWxvbikge1xuICAgICAgICB0aGlzLl8gKz0gXCJMXCIgKyAoeDEgKyB0MDEgKiB4MDEpICsgXCIsXCIgKyAoeTEgKyB0MDEgKiB5MDEpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl8gKz0gXCJBXCIgKyByICsgXCIsXCIgKyByICsgXCIsMCwwLFwiICsgKCsoeTAxICogeDIwID4geDAxICogeTIwKSkgKyBcIixcIiArICh0aGlzLl94MSA9IHgxICsgdDIxICogeDIxKSArIFwiLFwiICsgKHRoaXMuX3kxID0geTEgKyB0MjEgKiB5MjEpO1xuICAgIH1cbiAgfSxcbiAgYXJjOiBmdW5jdGlvbih4LCB5LCByLCBhMCwgYTEsIGNjdykge1xuICAgIHggPSAreCwgeSA9ICt5LCByID0gK3IsIGNjdyA9ICEhY2N3O1xuICAgIHZhciBkeCA9IHIgKiBNYXRoLmNvcyhhMCksXG4gICAgICAgIGR5ID0gciAqIE1hdGguc2luKGEwKSxcbiAgICAgICAgeDAgPSB4ICsgZHgsXG4gICAgICAgIHkwID0geSArIGR5LFxuICAgICAgICBjdyA9IDEgXiBjY3csXG4gICAgICAgIGRhID0gY2N3ID8gYTAgLSBhMSA6IGExIC0gYTA7XG5cbiAgICAvLyBJcyB0aGUgcmFkaXVzIG5lZ2F0aXZlPyBFcnJvci5cbiAgICBpZiAociA8IDApIHRocm93IG5ldyBFcnJvcihcIm5lZ2F0aXZlIHJhZGl1czogXCIgKyByKTtcblxuICAgIC8vIElzIHRoaXMgcGF0aCBlbXB0eT8gTW92ZSB0byAoeDAseTApLlxuICAgIGlmICh0aGlzLl94MSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fICs9IFwiTVwiICsgeDAgKyBcIixcIiArIHkwO1xuICAgIH1cblxuICAgIC8vIE9yLCBpcyAoeDAseTApIG5vdCBjb2luY2lkZW50IHdpdGggdGhlIHByZXZpb3VzIHBvaW50PyBMaW5lIHRvICh4MCx5MCkuXG4gICAgZWxzZSBpZiAoTWF0aC5hYnModGhpcy5feDEgLSB4MCkgPiBlcHNpbG9uIHx8IE1hdGguYWJzKHRoaXMuX3kxIC0geTApID4gZXBzaWxvbikge1xuICAgICAgdGhpcy5fICs9IFwiTFwiICsgeDAgKyBcIixcIiArIHkwO1xuICAgIH1cblxuICAgIC8vIElzIHRoaXMgYXJjIGVtcHR5PyBXZVx1MjAxOXJlIGRvbmUuXG4gICAgaWYgKCFyKSByZXR1cm47XG5cbiAgICAvLyBEb2VzIHRoZSBhbmdsZSBnbyB0aGUgd3Jvbmcgd2F5PyBGbGlwIHRoZSBkaXJlY3Rpb24uXG4gICAgaWYgKGRhIDwgMCkgZGEgPSBkYSAlIHRhdSArIHRhdTtcblxuICAgIC8vIElzIHRoaXMgYSBjb21wbGV0ZSBjaXJjbGU/IERyYXcgdHdvIGFyY3MgdG8gY29tcGxldGUgdGhlIGNpcmNsZS5cbiAgICBpZiAoZGEgPiB0YXVFcHNpbG9uKSB7XG4gICAgICB0aGlzLl8gKz0gXCJBXCIgKyByICsgXCIsXCIgKyByICsgXCIsMCwxLFwiICsgY3cgKyBcIixcIiArICh4IC0gZHgpICsgXCIsXCIgKyAoeSAtIGR5KSArIFwiQVwiICsgciArIFwiLFwiICsgciArIFwiLDAsMSxcIiArIGN3ICsgXCIsXCIgKyAodGhpcy5feDEgPSB4MCkgKyBcIixcIiArICh0aGlzLl95MSA9IHkwKTtcbiAgICB9XG5cbiAgICAvLyBJcyB0aGlzIGFyYyBub24tZW1wdHk/IERyYXcgYW4gYXJjIVxuICAgIGVsc2UgaWYgKGRhID4gZXBzaWxvbikge1xuICAgICAgdGhpcy5fICs9IFwiQVwiICsgciArIFwiLFwiICsgciArIFwiLDAsXCIgKyAoKyhkYSA+PSBwaSkpICsgXCIsXCIgKyBjdyArIFwiLFwiICsgKHRoaXMuX3gxID0geCArIHIgKiBNYXRoLmNvcyhhMSkpICsgXCIsXCIgKyAodGhpcy5feTEgPSB5ICsgciAqIE1hdGguc2luKGExKSk7XG4gICAgfVxuICB9LFxuICByZWN0OiBmdW5jdGlvbih4LCB5LCB3LCBoKSB7XG4gICAgdGhpcy5fICs9IFwiTVwiICsgKHRoaXMuX3gwID0gdGhpcy5feDEgPSAreCkgKyBcIixcIiArICh0aGlzLl95MCA9IHRoaXMuX3kxID0gK3kpICsgXCJoXCIgKyAoK3cpICsgXCJ2XCIgKyAoK2gpICsgXCJoXCIgKyAoLXcpICsgXCJaXCI7XG4gIH0sXG4gIHRvU3RyaW5nOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBwYXRoO1xuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgsIHkpIHtcbiAgdmFyIG5vZGVzLCBzdHJlbmd0aCA9IDE7XG5cbiAgaWYgKHggPT0gbnVsbCkgeCA9IDA7XG4gIGlmICh5ID09IG51bGwpIHkgPSAwO1xuXG4gIGZ1bmN0aW9uIGZvcmNlKCkge1xuICAgIHZhciBpLFxuICAgICAgICBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICBub2RlLFxuICAgICAgICBzeCA9IDAsXG4gICAgICAgIHN5ID0gMDtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIG5vZGUgPSBub2Rlc1tpXSwgc3ggKz0gbm9kZS54LCBzeSArPSBub2RlLnk7XG4gICAgfVxuXG4gICAgZm9yIChzeCA9IChzeCAvIG4gLSB4KSAqIHN0cmVuZ3RoLCBzeSA9IChzeSAvIG4gLSB5KSAqIHN0cmVuZ3RoLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgbm9kZSA9IG5vZGVzW2ldLCBub2RlLnggLT0gc3gsIG5vZGUueSAtPSBzeTtcbiAgICB9XG4gIH1cblxuICBmb3JjZS5pbml0aWFsaXplID0gZnVuY3Rpb24oXykge1xuICAgIG5vZGVzID0gXztcbiAgfTtcblxuICBmb3JjZS54ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHggPSArXywgZm9yY2UpIDogeDtcbiAgfTtcblxuICBmb3JjZS55ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHkgPSArXywgZm9yY2UpIDogeTtcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9ICtfLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICByZXR1cm4gZm9yY2U7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZCkge1xuICBjb25zdCB4ID0gK3RoaXMuX3guY2FsbChudWxsLCBkKSxcbiAgICAgIHkgPSArdGhpcy5feS5jYWxsKG51bGwsIGQpO1xuICByZXR1cm4gYWRkKHRoaXMuY292ZXIoeCwgeSksIHgsIHksIGQpO1xufVxuXG5mdW5jdGlvbiBhZGQodHJlZSwgeCwgeSwgZCkge1xuICBpZiAoaXNOYU4oeCkgfHwgaXNOYU4oeSkpIHJldHVybiB0cmVlOyAvLyBpZ25vcmUgaW52YWxpZCBwb2ludHNcblxuICB2YXIgcGFyZW50LFxuICAgICAgbm9kZSA9IHRyZWUuX3Jvb3QsXG4gICAgICBsZWFmID0ge2RhdGE6IGR9LFxuICAgICAgeDAgPSB0cmVlLl94MCxcbiAgICAgIHkwID0gdHJlZS5feTAsXG4gICAgICB4MSA9IHRyZWUuX3gxLFxuICAgICAgeTEgPSB0cmVlLl95MSxcbiAgICAgIHhtLFxuICAgICAgeW0sXG4gICAgICB4cCxcbiAgICAgIHlwLFxuICAgICAgcmlnaHQsXG4gICAgICBib3R0b20sXG4gICAgICBpLFxuICAgICAgajtcblxuICAvLyBJZiB0aGUgdHJlZSBpcyBlbXB0eSwgaW5pdGlhbGl6ZSB0aGUgcm9vdCBhcyBhIGxlYWYuXG4gIGlmICghbm9kZSkgcmV0dXJuIHRyZWUuX3Jvb3QgPSBsZWFmLCB0cmVlO1xuXG4gIC8vIEZpbmQgdGhlIGV4aXN0aW5nIGxlYWYgZm9yIHRoZSBuZXcgcG9pbnQsIG9yIGFkZCBpdC5cbiAgd2hpbGUgKG5vZGUubGVuZ3RoKSB7XG4gICAgaWYgKHJpZ2h0ID0geCA+PSAoeG0gPSAoeDAgKyB4MSkgLyAyKSkgeDAgPSB4bTsgZWxzZSB4MSA9IHhtO1xuICAgIGlmIChib3R0b20gPSB5ID49ICh5bSA9ICh5MCArIHkxKSAvIDIpKSB5MCA9IHltOyBlbHNlIHkxID0geW07XG4gICAgaWYgKHBhcmVudCA9IG5vZGUsICEobm9kZSA9IG5vZGVbaSA9IGJvdHRvbSA8PCAxIHwgcmlnaHRdKSkgcmV0dXJuIHBhcmVudFtpXSA9IGxlYWYsIHRyZWU7XG4gIH1cblxuICAvLyBJcyB0aGUgbmV3IHBvaW50IGlzIGV4YWN0bHkgY29pbmNpZGVudCB3aXRoIHRoZSBleGlzdGluZyBwb2ludD9cbiAgeHAgPSArdHJlZS5feC5jYWxsKG51bGwsIG5vZGUuZGF0YSk7XG4gIHlwID0gK3RyZWUuX3kuY2FsbChudWxsLCBub2RlLmRhdGEpO1xuICBpZiAoeCA9PT0geHAgJiYgeSA9PT0geXApIHJldHVybiBsZWFmLm5leHQgPSBub2RlLCBwYXJlbnQgPyBwYXJlbnRbaV0gPSBsZWFmIDogdHJlZS5fcm9vdCA9IGxlYWYsIHRyZWU7XG5cbiAgLy8gT3RoZXJ3aXNlLCBzcGxpdCB0aGUgbGVhZiBub2RlIHVudGlsIHRoZSBvbGQgYW5kIG5ldyBwb2ludCBhcmUgc2VwYXJhdGVkLlxuICBkbyB7XG4gICAgcGFyZW50ID0gcGFyZW50ID8gcGFyZW50W2ldID0gbmV3IEFycmF5KDQpIDogdHJlZS5fcm9vdCA9IG5ldyBBcnJheSg0KTtcbiAgICBpZiAocmlnaHQgPSB4ID49ICh4bSA9ICh4MCArIHgxKSAvIDIpKSB4MCA9IHhtOyBlbHNlIHgxID0geG07XG4gICAgaWYgKGJvdHRvbSA9IHkgPj0gKHltID0gKHkwICsgeTEpIC8gMikpIHkwID0geW07IGVsc2UgeTEgPSB5bTtcbiAgfSB3aGlsZSAoKGkgPSBib3R0b20gPDwgMSB8IHJpZ2h0KSA9PT0gKGogPSAoeXAgPj0geW0pIDw8IDEgfCAoeHAgPj0geG0pKSk7XG4gIHJldHVybiBwYXJlbnRbal0gPSBub2RlLCBwYXJlbnRbaV0gPSBsZWFmLCB0cmVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkQWxsKGRhdGEpIHtcbiAgdmFyIGQsIGksIG4gPSBkYXRhLmxlbmd0aCxcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgeHogPSBuZXcgQXJyYXkobiksXG4gICAgICB5eiA9IG5ldyBBcnJheShuKSxcbiAgICAgIHgwID0gSW5maW5pdHksXG4gICAgICB5MCA9IEluZmluaXR5LFxuICAgICAgeDEgPSAtSW5maW5pdHksXG4gICAgICB5MSA9IC1JbmZpbml0eTtcblxuICAvLyBDb21wdXRlIHRoZSBwb2ludHMgYW5kIHRoZWlyIGV4dGVudC5cbiAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgIGlmIChpc05hTih4ID0gK3RoaXMuX3guY2FsbChudWxsLCBkID0gZGF0YVtpXSkpIHx8IGlzTmFOKHkgPSArdGhpcy5feS5jYWxsKG51bGwsIGQpKSkgY29udGludWU7XG4gICAgeHpbaV0gPSB4O1xuICAgIHl6W2ldID0geTtcbiAgICBpZiAoeCA8IHgwKSB4MCA9IHg7XG4gICAgaWYgKHggPiB4MSkgeDEgPSB4O1xuICAgIGlmICh5IDwgeTApIHkwID0geTtcbiAgICBpZiAoeSA+IHkxKSB5MSA9IHk7XG4gIH1cblxuICAvLyBJZiB0aGVyZSB3ZXJlIG5vICh2YWxpZCkgcG9pbnRzLCBhYm9ydC5cbiAgaWYgKHgwID4geDEgfHwgeTAgPiB5MSkgcmV0dXJuIHRoaXM7XG5cbiAgLy8gRXhwYW5kIHRoZSB0cmVlIHRvIGNvdmVyIHRoZSBuZXcgcG9pbnRzLlxuICB0aGlzLmNvdmVyKHgwLCB5MCkuY292ZXIoeDEsIHkxKTtcblxuICAvLyBBZGQgdGhlIG5ldyBwb2ludHMuXG4gIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICBhZGQodGhpcywgeHpbaV0sIHl6W2ldLCBkYXRhW2ldKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgsIHkpIHtcbiAgaWYgKGlzTmFOKHggPSAreCkgfHwgaXNOYU4oeSA9ICt5KSkgcmV0dXJuIHRoaXM7IC8vIGlnbm9yZSBpbnZhbGlkIHBvaW50c1xuXG4gIHZhciB4MCA9IHRoaXMuX3gwLFxuICAgICAgeTAgPSB0aGlzLl95MCxcbiAgICAgIHgxID0gdGhpcy5feDEsXG4gICAgICB5MSA9IHRoaXMuX3kxO1xuXG4gIC8vIElmIHRoZSBxdWFkdHJlZSBoYXMgbm8gZXh0ZW50LCBpbml0aWFsaXplIHRoZW0uXG4gIC8vIEludGVnZXIgZXh0ZW50IGFyZSBuZWNlc3Nhcnkgc28gdGhhdCBpZiB3ZSBsYXRlciBkb3VibGUgdGhlIGV4dGVudCxcbiAgLy8gdGhlIGV4aXN0aW5nIHF1YWRyYW50IGJvdW5kYXJpZXMgZG9uXHUyMDE5dCBjaGFuZ2UgZHVlIHRvIGZsb2F0aW5nIHBvaW50IGVycm9yIVxuICBpZiAoaXNOYU4oeDApKSB7XG4gICAgeDEgPSAoeDAgPSBNYXRoLmZsb29yKHgpKSArIDE7XG4gICAgeTEgPSAoeTAgPSBNYXRoLmZsb29yKHkpKSArIDE7XG4gIH1cblxuICAvLyBPdGhlcndpc2UsIGRvdWJsZSByZXBlYXRlZGx5IHRvIGNvdmVyLlxuICBlbHNlIHtcbiAgICB2YXIgeiA9IHgxIC0geDAgfHwgMSxcbiAgICAgICAgbm9kZSA9IHRoaXMuX3Jvb3QsXG4gICAgICAgIHBhcmVudCxcbiAgICAgICAgaTtcblxuICAgIHdoaWxlICh4MCA+IHggfHwgeCA+PSB4MSB8fCB5MCA+IHkgfHwgeSA+PSB5MSkge1xuICAgICAgaSA9ICh5IDwgeTApIDw8IDEgfCAoeCA8IHgwKTtcbiAgICAgIHBhcmVudCA9IG5ldyBBcnJheSg0KSwgcGFyZW50W2ldID0gbm9kZSwgbm9kZSA9IHBhcmVudCwgeiAqPSAyO1xuICAgICAgc3dpdGNoIChpKSB7XG4gICAgICAgIGNhc2UgMDogeDEgPSB4MCArIHosIHkxID0geTAgKyB6OyBicmVhaztcbiAgICAgICAgY2FzZSAxOiB4MCA9IHgxIC0geiwgeTEgPSB5MCArIHo7IGJyZWFrO1xuICAgICAgICBjYXNlIDI6IHgxID0geDAgKyB6LCB5MCA9IHkxIC0gejsgYnJlYWs7XG4gICAgICAgIGNhc2UgMzogeDAgPSB4MSAtIHosIHkwID0geTEgLSB6OyBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcm9vdCAmJiB0aGlzLl9yb290Lmxlbmd0aCkgdGhpcy5fcm9vdCA9IG5vZGU7XG4gIH1cblxuICB0aGlzLl94MCA9IHgwO1xuICB0aGlzLl95MCA9IHkwO1xuICB0aGlzLl94MSA9IHgxO1xuICB0aGlzLl95MSA9IHkxO1xuICByZXR1cm4gdGhpcztcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGRhdGEgPSBbXTtcbiAgdGhpcy52aXNpdChmdW5jdGlvbihub2RlKSB7XG4gICAgaWYgKCFub2RlLmxlbmd0aCkgZG8gZGF0YS5wdXNoKG5vZGUuZGF0YSk7IHdoaWxlIChub2RlID0gbm9kZS5uZXh0KVxuICB9KTtcbiAgcmV0dXJuIGRhdGE7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oXykge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLmNvdmVyKCtfWzBdWzBdLCArX1swXVsxXSkuY292ZXIoK19bMV1bMF0sICtfWzFdWzFdKVxuICAgICAgOiBpc05hTih0aGlzLl94MCkgPyB1bmRlZmluZWQgOiBbW3RoaXMuX3gwLCB0aGlzLl95MF0sIFt0aGlzLl94MSwgdGhpcy5feTFdXTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihub2RlLCB4MCwgeTAsIHgxLCB5MSkge1xuICB0aGlzLm5vZGUgPSBub2RlO1xuICB0aGlzLngwID0geDA7XG4gIHRoaXMueTAgPSB5MDtcbiAgdGhpcy54MSA9IHgxO1xuICB0aGlzLnkxID0geTE7XG59XG4iLCAiaW1wb3J0IFF1YWQgZnJvbSBcIi4vcXVhZC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4LCB5LCByYWRpdXMpIHtcbiAgdmFyIGRhdGEsXG4gICAgICB4MCA9IHRoaXMuX3gwLFxuICAgICAgeTAgPSB0aGlzLl95MCxcbiAgICAgIHgxLFxuICAgICAgeTEsXG4gICAgICB4MixcbiAgICAgIHkyLFxuICAgICAgeDMgPSB0aGlzLl94MSxcbiAgICAgIHkzID0gdGhpcy5feTEsXG4gICAgICBxdWFkcyA9IFtdLFxuICAgICAgbm9kZSA9IHRoaXMuX3Jvb3QsXG4gICAgICBxLFxuICAgICAgaTtcblxuICBpZiAobm9kZSkgcXVhZHMucHVzaChuZXcgUXVhZChub2RlLCB4MCwgeTAsIHgzLCB5MykpO1xuICBpZiAocmFkaXVzID09IG51bGwpIHJhZGl1cyA9IEluZmluaXR5O1xuICBlbHNlIHtcbiAgICB4MCA9IHggLSByYWRpdXMsIHkwID0geSAtIHJhZGl1cztcbiAgICB4MyA9IHggKyByYWRpdXMsIHkzID0geSArIHJhZGl1cztcbiAgICByYWRpdXMgKj0gcmFkaXVzO1xuICB9XG5cbiAgd2hpbGUgKHEgPSBxdWFkcy5wb3AoKSkge1xuXG4gICAgLy8gU3RvcCBzZWFyY2hpbmcgaWYgdGhpcyBxdWFkcmFudCBjYW5cdTIwMTl0IGNvbnRhaW4gYSBjbG9zZXIgbm9kZS5cbiAgICBpZiAoIShub2RlID0gcS5ub2RlKVxuICAgICAgICB8fCAoeDEgPSBxLngwKSA+IHgzXG4gICAgICAgIHx8ICh5MSA9IHEueTApID4geTNcbiAgICAgICAgfHwgKHgyID0gcS54MSkgPCB4MFxuICAgICAgICB8fCAoeTIgPSBxLnkxKSA8IHkwKSBjb250aW51ZTtcblxuICAgIC8vIEJpc2VjdCB0aGUgY3VycmVudCBxdWFkcmFudC5cbiAgICBpZiAobm9kZS5sZW5ndGgpIHtcbiAgICAgIHZhciB4bSA9ICh4MSArIHgyKSAvIDIsXG4gICAgICAgICAgeW0gPSAoeTEgKyB5MikgLyAyO1xuXG4gICAgICBxdWFkcy5wdXNoKFxuICAgICAgICBuZXcgUXVhZChub2RlWzNdLCB4bSwgeW0sIHgyLCB5MiksXG4gICAgICAgIG5ldyBRdWFkKG5vZGVbMl0sIHgxLCB5bSwgeG0sIHkyKSxcbiAgICAgICAgbmV3IFF1YWQobm9kZVsxXSwgeG0sIHkxLCB4MiwgeW0pLFxuICAgICAgICBuZXcgUXVhZChub2RlWzBdLCB4MSwgeTEsIHhtLCB5bSlcbiAgICAgICk7XG5cbiAgICAgIC8vIFZpc2l0IHRoZSBjbG9zZXN0IHF1YWRyYW50IGZpcnN0LlxuICAgICAgaWYgKGkgPSAoeSA+PSB5bSkgPDwgMSB8ICh4ID49IHhtKSkge1xuICAgICAgICBxID0gcXVhZHNbcXVhZHMubGVuZ3RoIC0gMV07XG4gICAgICAgIHF1YWRzW3F1YWRzLmxlbmd0aCAtIDFdID0gcXVhZHNbcXVhZHMubGVuZ3RoIC0gMSAtIGldO1xuICAgICAgICBxdWFkc1txdWFkcy5sZW5ndGggLSAxIC0gaV0gPSBxO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZpc2l0IHRoaXMgcG9pbnQuIChWaXNpdGluZyBjb2luY2lkZW50IHBvaW50cyBpc25cdTIwMTl0IG5lY2Vzc2FyeSEpXG4gICAgZWxzZSB7XG4gICAgICB2YXIgZHggPSB4IC0gK3RoaXMuX3guY2FsbChudWxsLCBub2RlLmRhdGEpLFxuICAgICAgICAgIGR5ID0geSAtICt0aGlzLl95LmNhbGwobnVsbCwgbm9kZS5kYXRhKSxcbiAgICAgICAgICBkMiA9IGR4ICogZHggKyBkeSAqIGR5O1xuICAgICAgaWYgKGQyIDwgcmFkaXVzKSB7XG4gICAgICAgIHZhciBkID0gTWF0aC5zcXJ0KHJhZGl1cyA9IGQyKTtcbiAgICAgICAgeDAgPSB4IC0gZCwgeTAgPSB5IC0gZDtcbiAgICAgICAgeDMgPSB4ICsgZCwgeTMgPSB5ICsgZDtcbiAgICAgICAgZGF0YSA9IG5vZGUuZGF0YTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGF0YTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihkKSB7XG4gIGlmIChpc05hTih4ID0gK3RoaXMuX3guY2FsbChudWxsLCBkKSkgfHwgaXNOYU4oeSA9ICt0aGlzLl95LmNhbGwobnVsbCwgZCkpKSByZXR1cm4gdGhpczsgLy8gaWdub3JlIGludmFsaWQgcG9pbnRzXG5cbiAgdmFyIHBhcmVudCxcbiAgICAgIG5vZGUgPSB0aGlzLl9yb290LFxuICAgICAgcmV0YWluZXIsXG4gICAgICBwcmV2aW91cyxcbiAgICAgIG5leHQsXG4gICAgICB4MCA9IHRoaXMuX3gwLFxuICAgICAgeTAgPSB0aGlzLl95MCxcbiAgICAgIHgxID0gdGhpcy5feDEsXG4gICAgICB5MSA9IHRoaXMuX3kxLFxuICAgICAgeCxcbiAgICAgIHksXG4gICAgICB4bSxcbiAgICAgIHltLFxuICAgICAgcmlnaHQsXG4gICAgICBib3R0b20sXG4gICAgICBpLFxuICAgICAgajtcblxuICAvLyBJZiB0aGUgdHJlZSBpcyBlbXB0eSwgaW5pdGlhbGl6ZSB0aGUgcm9vdCBhcyBhIGxlYWYuXG4gIGlmICghbm9kZSkgcmV0dXJuIHRoaXM7XG5cbiAgLy8gRmluZCB0aGUgbGVhZiBub2RlIGZvciB0aGUgcG9pbnQuXG4gIC8vIFdoaWxlIGRlc2NlbmRpbmcsIGFsc28gcmV0YWluIHRoZSBkZWVwZXN0IHBhcmVudCB3aXRoIGEgbm9uLXJlbW92ZWQgc2libGluZy5cbiAgaWYgKG5vZGUubGVuZ3RoKSB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChyaWdodCA9IHggPj0gKHhtID0gKHgwICsgeDEpIC8gMikpIHgwID0geG07IGVsc2UgeDEgPSB4bTtcbiAgICBpZiAoYm90dG9tID0geSA+PSAoeW0gPSAoeTAgKyB5MSkgLyAyKSkgeTAgPSB5bTsgZWxzZSB5MSA9IHltO1xuICAgIGlmICghKHBhcmVudCA9IG5vZGUsIG5vZGUgPSBub2RlW2kgPSBib3R0b20gPDwgMSB8IHJpZ2h0XSkpIHJldHVybiB0aGlzO1xuICAgIGlmICghbm9kZS5sZW5ndGgpIGJyZWFrO1xuICAgIGlmIChwYXJlbnRbKGkgKyAxKSAmIDNdIHx8IHBhcmVudFsoaSArIDIpICYgM10gfHwgcGFyZW50WyhpICsgMykgJiAzXSkgcmV0YWluZXIgPSBwYXJlbnQsIGogPSBpO1xuICB9XG5cbiAgLy8gRmluZCB0aGUgcG9pbnQgdG8gcmVtb3ZlLlxuICB3aGlsZSAobm9kZS5kYXRhICE9PSBkKSBpZiAoIShwcmV2aW91cyA9IG5vZGUsIG5vZGUgPSBub2RlLm5leHQpKSByZXR1cm4gdGhpcztcbiAgaWYgKG5leHQgPSBub2RlLm5leHQpIGRlbGV0ZSBub2RlLm5leHQ7XG5cbiAgLy8gSWYgdGhlcmUgYXJlIG11bHRpcGxlIGNvaW5jaWRlbnQgcG9pbnRzLCByZW1vdmUganVzdCB0aGUgcG9pbnQuXG4gIGlmIChwcmV2aW91cykgcmV0dXJuIChuZXh0ID8gcHJldmlvdXMubmV4dCA9IG5leHQgOiBkZWxldGUgcHJldmlvdXMubmV4dCksIHRoaXM7XG5cbiAgLy8gSWYgdGhpcyBpcyB0aGUgcm9vdCBwb2ludCwgcmVtb3ZlIGl0LlxuICBpZiAoIXBhcmVudCkgcmV0dXJuIHRoaXMuX3Jvb3QgPSBuZXh0LCB0aGlzO1xuXG4gIC8vIFJlbW92ZSB0aGlzIGxlYWYuXG4gIG5leHQgPyBwYXJlbnRbaV0gPSBuZXh0IDogZGVsZXRlIHBhcmVudFtpXTtcblxuICAvLyBJZiB0aGUgcGFyZW50IG5vdyBjb250YWlucyBleGFjdGx5IG9uZSBsZWFmLCBjb2xsYXBzZSBzdXBlcmZsdW91cyBwYXJlbnRzLlxuICBpZiAoKG5vZGUgPSBwYXJlbnRbMF0gfHwgcGFyZW50WzFdIHx8IHBhcmVudFsyXSB8fCBwYXJlbnRbM10pXG4gICAgICAmJiBub2RlID09PSAocGFyZW50WzNdIHx8IHBhcmVudFsyXSB8fCBwYXJlbnRbMV0gfHwgcGFyZW50WzBdKVxuICAgICAgJiYgIW5vZGUubGVuZ3RoKSB7XG4gICAgaWYgKHJldGFpbmVyKSByZXRhaW5lcltqXSA9IG5vZGU7XG4gICAgZWxzZSB0aGlzLl9yb290ID0gbm9kZTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQWxsKGRhdGEpIHtcbiAgZm9yICh2YXIgaSA9IDAsIG4gPSBkYXRhLmxlbmd0aDsgaSA8IG47ICsraSkgdGhpcy5yZW1vdmUoZGF0YVtpXSk7XG4gIHJldHVybiB0aGlzO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fcm9vdDtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIHNpemUgPSAwO1xuICB0aGlzLnZpc2l0KGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBpZiAoIW5vZGUubGVuZ3RoKSBkbyArK3NpemU7IHdoaWxlIChub2RlID0gbm9kZS5uZXh0KVxuICB9KTtcbiAgcmV0dXJuIHNpemU7XG59XG4iLCAiaW1wb3J0IFF1YWQgZnJvbSBcIi4vcXVhZC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjYWxsYmFjaykge1xuICB2YXIgcXVhZHMgPSBbXSwgcSwgbm9kZSA9IHRoaXMuX3Jvb3QsIGNoaWxkLCB4MCwgeTAsIHgxLCB5MTtcbiAgaWYgKG5vZGUpIHF1YWRzLnB1c2gobmV3IFF1YWQobm9kZSwgdGhpcy5feDAsIHRoaXMuX3kwLCB0aGlzLl94MSwgdGhpcy5feTEpKTtcbiAgd2hpbGUgKHEgPSBxdWFkcy5wb3AoKSkge1xuICAgIGlmICghY2FsbGJhY2sobm9kZSA9IHEubm9kZSwgeDAgPSBxLngwLCB5MCA9IHEueTAsIHgxID0gcS54MSwgeTEgPSBxLnkxKSAmJiBub2RlLmxlbmd0aCkge1xuICAgICAgdmFyIHhtID0gKHgwICsgeDEpIC8gMiwgeW0gPSAoeTAgKyB5MSkgLyAyO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVszXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeG0sIHltLCB4MSwgeTEpKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMl0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHgwLCB5bSwgeG0sIHkxKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzFdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4bSwgeTAsIHgxLCB5bSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVswXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeDAsIHkwLCB4bSwgeW0pKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG4iLCAiaW1wb3J0IFF1YWQgZnJvbSBcIi4vcXVhZC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjYWxsYmFjaykge1xuICB2YXIgcXVhZHMgPSBbXSwgbmV4dCA9IFtdLCBxO1xuICBpZiAodGhpcy5fcm9vdCkgcXVhZHMucHVzaChuZXcgUXVhZCh0aGlzLl9yb290LCB0aGlzLl94MCwgdGhpcy5feTAsIHRoaXMuX3gxLCB0aGlzLl95MSkpO1xuICB3aGlsZSAocSA9IHF1YWRzLnBvcCgpKSB7XG4gICAgdmFyIG5vZGUgPSBxLm5vZGU7XG4gICAgaWYgKG5vZGUubGVuZ3RoKSB7XG4gICAgICB2YXIgY2hpbGQsIHgwID0gcS54MCwgeTAgPSBxLnkwLCB4MSA9IHEueDEsIHkxID0gcS55MSwgeG0gPSAoeDAgKyB4MSkgLyAyLCB5bSA9ICh5MCArIHkxKSAvIDI7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzBdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4MCwgeTAsIHhtLCB5bSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVsxXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeG0sIHkwLCB4MSwgeW0pKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMl0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHgwLCB5bSwgeG0sIHkxKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzNdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4bSwgeW0sIHgxLCB5MSkpO1xuICAgIH1cbiAgICBuZXh0LnB1c2gocSk7XG4gIH1cbiAgd2hpbGUgKHEgPSBuZXh0LnBvcCgpKSB7XG4gICAgY2FsbGJhY2socS5ub2RlLCBxLngwLCBxLnkwLCBxLngxLCBxLnkxKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gZGVmYXVsdFgoZCkge1xuICByZXR1cm4gZFswXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oXykge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl94ID0gXywgdGhpcykgOiB0aGlzLl94O1xufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0WShkKSB7XG4gIHJldHVybiBkWzFdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihfKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX3kgPSBfLCB0aGlzKSA6IHRoaXMuX3k7XG59XG4iLCAiaW1wb3J0IHRyZWVfYWRkLCB7YWRkQWxsIGFzIHRyZWVfYWRkQWxsfSBmcm9tIFwiLi9hZGQuanNcIjtcbmltcG9ydCB0cmVlX2NvdmVyIGZyb20gXCIuL2NvdmVyLmpzXCI7XG5pbXBvcnQgdHJlZV9kYXRhIGZyb20gXCIuL2RhdGEuanNcIjtcbmltcG9ydCB0cmVlX2V4dGVudCBmcm9tIFwiLi9leHRlbnQuanNcIjtcbmltcG9ydCB0cmVlX2ZpbmQgZnJvbSBcIi4vZmluZC5qc1wiO1xuaW1wb3J0IHRyZWVfcmVtb3ZlLCB7cmVtb3ZlQWxsIGFzIHRyZWVfcmVtb3ZlQWxsfSBmcm9tIFwiLi9yZW1vdmUuanNcIjtcbmltcG9ydCB0cmVlX3Jvb3QgZnJvbSBcIi4vcm9vdC5qc1wiO1xuaW1wb3J0IHRyZWVfc2l6ZSBmcm9tIFwiLi9zaXplLmpzXCI7XG5pbXBvcnQgdHJlZV92aXNpdCBmcm9tIFwiLi92aXNpdC5qc1wiO1xuaW1wb3J0IHRyZWVfdmlzaXRBZnRlciBmcm9tIFwiLi92aXNpdEFmdGVyLmpzXCI7XG5pbXBvcnQgdHJlZV94LCB7ZGVmYXVsdFh9IGZyb20gXCIuL3guanNcIjtcbmltcG9ydCB0cmVlX3ksIHtkZWZhdWx0WX0gZnJvbSBcIi4veS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBxdWFkdHJlZShub2RlcywgeCwgeSkge1xuICB2YXIgdHJlZSA9IG5ldyBRdWFkdHJlZSh4ID09IG51bGwgPyBkZWZhdWx0WCA6IHgsIHkgPT0gbnVsbCA/IGRlZmF1bHRZIDogeSwgTmFOLCBOYU4sIE5hTiwgTmFOKTtcbiAgcmV0dXJuIG5vZGVzID09IG51bGwgPyB0cmVlIDogdHJlZS5hZGRBbGwobm9kZXMpO1xufVxuXG5mdW5jdGlvbiBRdWFkdHJlZSh4LCB5LCB4MCwgeTAsIHgxLCB5MSkge1xuICB0aGlzLl94ID0geDtcbiAgdGhpcy5feSA9IHk7XG4gIHRoaXMuX3gwID0geDA7XG4gIHRoaXMuX3kwID0geTA7XG4gIHRoaXMuX3gxID0geDE7XG4gIHRoaXMuX3kxID0geTE7XG4gIHRoaXMuX3Jvb3QgPSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGxlYWZfY29weShsZWFmKSB7XG4gIHZhciBjb3B5ID0ge2RhdGE6IGxlYWYuZGF0YX0sIG5leHQgPSBjb3B5O1xuICB3aGlsZSAobGVhZiA9IGxlYWYubmV4dCkgbmV4dCA9IG5leHQubmV4dCA9IHtkYXRhOiBsZWFmLmRhdGF9O1xuICByZXR1cm4gY29weTtcbn1cblxudmFyIHRyZWVQcm90byA9IHF1YWR0cmVlLnByb3RvdHlwZSA9IFF1YWR0cmVlLnByb3RvdHlwZTtcblxudHJlZVByb3RvLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGNvcHkgPSBuZXcgUXVhZHRyZWUodGhpcy5feCwgdGhpcy5feSwgdGhpcy5feDAsIHRoaXMuX3kwLCB0aGlzLl94MSwgdGhpcy5feTEpLFxuICAgICAgbm9kZSA9IHRoaXMuX3Jvb3QsXG4gICAgICBub2RlcyxcbiAgICAgIGNoaWxkO1xuXG4gIGlmICghbm9kZSkgcmV0dXJuIGNvcHk7XG5cbiAgaWYgKCFub2RlLmxlbmd0aCkgcmV0dXJuIGNvcHkuX3Jvb3QgPSBsZWFmX2NvcHkobm9kZSksIGNvcHk7XG5cbiAgbm9kZXMgPSBbe3NvdXJjZTogbm9kZSwgdGFyZ2V0OiBjb3B5Ll9yb290ID0gbmV3IEFycmF5KDQpfV07XG4gIHdoaWxlIChub2RlID0gbm9kZXMucG9wKCkpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7ICsraSkge1xuICAgICAgaWYgKGNoaWxkID0gbm9kZS5zb3VyY2VbaV0pIHtcbiAgICAgICAgaWYgKGNoaWxkLmxlbmd0aCkgbm9kZXMucHVzaCh7c291cmNlOiBjaGlsZCwgdGFyZ2V0OiBub2RlLnRhcmdldFtpXSA9IG5ldyBBcnJheSg0KX0pO1xuICAgICAgICBlbHNlIG5vZGUudGFyZ2V0W2ldID0gbGVhZl9jb3B5KGNoaWxkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29weTtcbn07XG5cbnRyZWVQcm90by5hZGQgPSB0cmVlX2FkZDtcbnRyZWVQcm90by5hZGRBbGwgPSB0cmVlX2FkZEFsbDtcbnRyZWVQcm90by5jb3ZlciA9IHRyZWVfY292ZXI7XG50cmVlUHJvdG8uZGF0YSA9IHRyZWVfZGF0YTtcbnRyZWVQcm90by5leHRlbnQgPSB0cmVlX2V4dGVudDtcbnRyZWVQcm90by5maW5kID0gdHJlZV9maW5kO1xudHJlZVByb3RvLnJlbW92ZSA9IHRyZWVfcmVtb3ZlO1xudHJlZVByb3RvLnJlbW92ZUFsbCA9IHRyZWVfcmVtb3ZlQWxsO1xudHJlZVByb3RvLnJvb3QgPSB0cmVlX3Jvb3Q7XG50cmVlUHJvdG8uc2l6ZSA9IHRyZWVfc2l6ZTtcbnRyZWVQcm90by52aXNpdCA9IHRyZWVfdmlzaXQ7XG50cmVlUHJvdG8udmlzaXRBZnRlciA9IHRyZWVfdmlzaXRBZnRlcjtcbnRyZWVQcm90by54ID0gdHJlZV94O1xudHJlZVByb3RvLnkgPSB0cmVlX3k7XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocmFuZG9tKSB7XG4gIHJldHVybiAocmFuZG9tKCkgLSAwLjUpICogMWUtNjtcbn1cbiIsICJpbXBvcnQge3F1YWR0cmVlfSBmcm9tIFwiZDMtcXVhZHRyZWVcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuaW1wb3J0IGppZ2dsZSBmcm9tIFwiLi9qaWdnbGUuanNcIjtcblxuZnVuY3Rpb24geChkKSB7XG4gIHJldHVybiBkLnggKyBkLnZ4O1xufVxuXG5mdW5jdGlvbiB5KGQpIHtcbiAgcmV0dXJuIGQueSArIGQudnk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHJhZGl1cykge1xuICB2YXIgbm9kZXMsXG4gICAgICByYWRpaSxcbiAgICAgIHJhbmRvbSxcbiAgICAgIHN0cmVuZ3RoID0gMSxcbiAgICAgIGl0ZXJhdGlvbnMgPSAxO1xuXG4gIGlmICh0eXBlb2YgcmFkaXVzICE9PSBcImZ1bmN0aW9uXCIpIHJhZGl1cyA9IGNvbnN0YW50KHJhZGl1cyA9PSBudWxsID8gMSA6ICtyYWRpdXMpO1xuXG4gIGZ1bmN0aW9uIGZvcmNlKCkge1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICB0cmVlLFxuICAgICAgICBub2RlLFxuICAgICAgICB4aSxcbiAgICAgICAgeWksXG4gICAgICAgIHJpLFxuICAgICAgICByaTI7XG5cbiAgICBmb3IgKHZhciBrID0gMDsgayA8IGl0ZXJhdGlvbnM7ICsraykge1xuICAgICAgdHJlZSA9IHF1YWR0cmVlKG5vZGVzLCB4LCB5KS52aXNpdEFmdGVyKHByZXBhcmUpO1xuICAgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgICBub2RlID0gbm9kZXNbaV07XG4gICAgICAgIHJpID0gcmFkaWlbbm9kZS5pbmRleF0sIHJpMiA9IHJpICogcmk7XG4gICAgICAgIHhpID0gbm9kZS54ICsgbm9kZS52eDtcbiAgICAgICAgeWkgPSBub2RlLnkgKyBub2RlLnZ5O1xuICAgICAgICB0cmVlLnZpc2l0KGFwcGx5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcHBseShxdWFkLCB4MCwgeTAsIHgxLCB5MSkge1xuICAgICAgdmFyIGRhdGEgPSBxdWFkLmRhdGEsIHJqID0gcXVhZC5yLCByID0gcmkgKyByajtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGlmIChkYXRhLmluZGV4ID4gbm9kZS5pbmRleCkge1xuICAgICAgICAgIHZhciB4ID0geGkgLSBkYXRhLnggLSBkYXRhLnZ4LFxuICAgICAgICAgICAgICB5ID0geWkgLSBkYXRhLnkgLSBkYXRhLnZ5LFxuICAgICAgICAgICAgICBsID0geCAqIHggKyB5ICogeTtcbiAgICAgICAgICBpZiAobCA8IHIgKiByKSB7XG4gICAgICAgICAgICBpZiAoeCA9PT0gMCkgeCA9IGppZ2dsZShyYW5kb20pLCBsICs9IHggKiB4O1xuICAgICAgICAgICAgaWYgKHkgPT09IDApIHkgPSBqaWdnbGUocmFuZG9tKSwgbCArPSB5ICogeTtcbiAgICAgICAgICAgIGwgPSAociAtIChsID0gTWF0aC5zcXJ0KGwpKSkgLyBsICogc3RyZW5ndGg7XG4gICAgICAgICAgICBub2RlLnZ4ICs9ICh4ICo9IGwpICogKHIgPSAocmogKj0gcmopIC8gKHJpMiArIHJqKSk7XG4gICAgICAgICAgICBub2RlLnZ5ICs9ICh5ICo9IGwpICogcjtcbiAgICAgICAgICAgIGRhdGEudnggLT0geCAqIChyID0gMSAtIHIpO1xuICAgICAgICAgICAgZGF0YS52eSAtPSB5ICogcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHgwID4geGkgKyByIHx8IHgxIDwgeGkgLSByIHx8IHkwID4geWkgKyByIHx8IHkxIDwgeWkgLSByO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHByZXBhcmUocXVhZCkge1xuICAgIGlmIChxdWFkLmRhdGEpIHJldHVybiBxdWFkLnIgPSByYWRpaVtxdWFkLmRhdGEuaW5kZXhdO1xuICAgIGZvciAodmFyIGkgPSBxdWFkLnIgPSAwOyBpIDwgNDsgKytpKSB7XG4gICAgICBpZiAocXVhZFtpXSAmJiBxdWFkW2ldLnIgPiBxdWFkLnIpIHtcbiAgICAgICAgcXVhZC5yID0gcXVhZFtpXS5yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoLCBub2RlO1xuICAgIHJhZGlpID0gbmV3IEFycmF5KG4pO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIG5vZGUgPSBub2Rlc1tpXSwgcmFkaWlbbm9kZS5pbmRleF0gPSArcmFkaXVzKG5vZGUsIGksIG5vZGVzKTtcbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfbm9kZXMsIF9yYW5kb20pIHtcbiAgICBub2RlcyA9IF9ub2RlcztcbiAgICByYW5kb20gPSBfcmFuZG9tO1xuICAgIGluaXRpYWxpemUoKTtcbiAgfTtcblxuICBmb3JjZS5pdGVyYXRpb25zID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGl0ZXJhdGlvbnMgPSArXywgZm9yY2UpIDogaXRlcmF0aW9ucztcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9ICtfLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICBmb3JjZS5yYWRpdXMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocmFkaXVzID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemUoKSwgZm9yY2UpIDogcmFkaXVzO1xuICB9O1xuXG4gIHJldHVybiBmb3JjZTtcbn1cbiIsICJpbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBqaWdnbGUgZnJvbSBcIi4vamlnZ2xlLmpzXCI7XG5cbmZ1bmN0aW9uIGluZGV4KGQpIHtcbiAgcmV0dXJuIGQuaW5kZXg7XG59XG5cbmZ1bmN0aW9uIGZpbmQobm9kZUJ5SWQsIG5vZGVJZCkge1xuICB2YXIgbm9kZSA9IG5vZGVCeUlkLmdldChub2RlSWQpO1xuICBpZiAoIW5vZGUpIHRocm93IG5ldyBFcnJvcihcIm5vZGUgbm90IGZvdW5kOiBcIiArIG5vZGVJZCk7XG4gIHJldHVybiBub2RlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihsaW5rcykge1xuICB2YXIgaWQgPSBpbmRleCxcbiAgICAgIHN0cmVuZ3RoID0gZGVmYXVsdFN0cmVuZ3RoLFxuICAgICAgc3RyZW5ndGhzLFxuICAgICAgZGlzdGFuY2UgPSBjb25zdGFudCgzMCksXG4gICAgICBkaXN0YW5jZXMsXG4gICAgICBub2RlcyxcbiAgICAgIGNvdW50LFxuICAgICAgYmlhcyxcbiAgICAgIHJhbmRvbSxcbiAgICAgIGl0ZXJhdGlvbnMgPSAxO1xuXG4gIGlmIChsaW5rcyA9PSBudWxsKSBsaW5rcyA9IFtdO1xuXG4gIGZ1bmN0aW9uIGRlZmF1bHRTdHJlbmd0aChsaW5rKSB7XG4gICAgcmV0dXJuIDEgLyBNYXRoLm1pbihjb3VudFtsaW5rLnNvdXJjZS5pbmRleF0sIGNvdW50W2xpbmsudGFyZ2V0LmluZGV4XSk7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JjZShhbHBoYSkge1xuICAgIGZvciAodmFyIGsgPSAwLCBuID0gbGlua3MubGVuZ3RoOyBrIDwgaXRlcmF0aW9uczsgKytrKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbGluaywgc291cmNlLCB0YXJnZXQsIHgsIHksIGwsIGI7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgbGluayA9IGxpbmtzW2ldLCBzb3VyY2UgPSBsaW5rLnNvdXJjZSwgdGFyZ2V0ID0gbGluay50YXJnZXQ7XG4gICAgICAgIHggPSB0YXJnZXQueCArIHRhcmdldC52eCAtIHNvdXJjZS54IC0gc291cmNlLnZ4IHx8IGppZ2dsZShyYW5kb20pO1xuICAgICAgICB5ID0gdGFyZ2V0LnkgKyB0YXJnZXQudnkgLSBzb3VyY2UueSAtIHNvdXJjZS52eSB8fCBqaWdnbGUocmFuZG9tKTtcbiAgICAgICAgbCA9IE1hdGguc3FydCh4ICogeCArIHkgKiB5KTtcbiAgICAgICAgbCA9IChsIC0gZGlzdGFuY2VzW2ldKSAvIGwgKiBhbHBoYSAqIHN0cmVuZ3Roc1tpXTtcbiAgICAgICAgeCAqPSBsLCB5ICo9IGw7XG4gICAgICAgIHRhcmdldC52eCAtPSB4ICogKGIgPSBiaWFzW2ldKTtcbiAgICAgICAgdGFyZ2V0LnZ5IC09IHkgKiBiO1xuICAgICAgICBzb3VyY2UudnggKz0geCAqIChiID0gMSAtIGIpO1xuICAgICAgICBzb3VyY2UudnkgKz0geSAqIGI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm47XG5cbiAgICB2YXIgaSxcbiAgICAgICAgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgICAgbSA9IGxpbmtzLmxlbmd0aCxcbiAgICAgICAgbm9kZUJ5SWQgPSBuZXcgTWFwKG5vZGVzLm1hcCgoZCwgaSkgPT4gW2lkKGQsIGksIG5vZGVzKSwgZF0pKSxcbiAgICAgICAgbGluaztcblxuICAgIGZvciAoaSA9IDAsIGNvdW50ID0gbmV3IEFycmF5KG4pOyBpIDwgbTsgKytpKSB7XG4gICAgICBsaW5rID0gbGlua3NbaV0sIGxpbmsuaW5kZXggPSBpO1xuICAgICAgaWYgKHR5cGVvZiBsaW5rLnNvdXJjZSAhPT0gXCJvYmplY3RcIikgbGluay5zb3VyY2UgPSBmaW5kKG5vZGVCeUlkLCBsaW5rLnNvdXJjZSk7XG4gICAgICBpZiAodHlwZW9mIGxpbmsudGFyZ2V0ICE9PSBcIm9iamVjdFwiKSBsaW5rLnRhcmdldCA9IGZpbmQobm9kZUJ5SWQsIGxpbmsudGFyZ2V0KTtcbiAgICAgIGNvdW50W2xpbmsuc291cmNlLmluZGV4XSA9IChjb3VudFtsaW5rLnNvdXJjZS5pbmRleF0gfHwgMCkgKyAxO1xuICAgICAgY291bnRbbGluay50YXJnZXQuaW5kZXhdID0gKGNvdW50W2xpbmsudGFyZ2V0LmluZGV4XSB8fCAwKSArIDE7XG4gICAgfVxuXG4gICAgZm9yIChpID0gMCwgYmlhcyA9IG5ldyBBcnJheShtKTsgaSA8IG07ICsraSkge1xuICAgICAgbGluayA9IGxpbmtzW2ldLCBiaWFzW2ldID0gY291bnRbbGluay5zb3VyY2UuaW5kZXhdIC8gKGNvdW50W2xpbmsuc291cmNlLmluZGV4XSArIGNvdW50W2xpbmsudGFyZ2V0LmluZGV4XSk7XG4gICAgfVxuXG4gICAgc3RyZW5ndGhzID0gbmV3IEFycmF5KG0pLCBpbml0aWFsaXplU3RyZW5ndGgoKTtcbiAgICBkaXN0YW5jZXMgPSBuZXcgQXJyYXkobSksIGluaXRpYWxpemVEaXN0YW5jZSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZVN0cmVuZ3RoKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwLCBuID0gbGlua3MubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICBzdHJlbmd0aHNbaV0gPSArc3RyZW5ndGgobGlua3NbaV0sIGksIGxpbmtzKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplRGlzdGFuY2UoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDAsIG4gPSBsaW5rcy5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIGRpc3RhbmNlc1tpXSA9ICtkaXN0YW5jZShsaW5rc1tpXSwgaSwgbGlua3MpO1xuICAgIH1cbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfbm9kZXMsIF9yYW5kb20pIHtcbiAgICBub2RlcyA9IF9ub2RlcztcbiAgICByYW5kb20gPSBfcmFuZG9tO1xuICAgIGluaXRpYWxpemUoKTtcbiAgfTtcblxuICBmb3JjZS5saW5rcyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChsaW5rcyA9IF8sIGluaXRpYWxpemUoKSwgZm9yY2UpIDogbGlua3M7XG4gIH07XG5cbiAgZm9yY2UuaWQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaWQgPSBfLCBmb3JjZSkgOiBpZDtcbiAgfTtcblxuICBmb3JjZS5pdGVyYXRpb25zID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGl0ZXJhdGlvbnMgPSArXywgZm9yY2UpIDogaXRlcmF0aW9ucztcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplU3RyZW5ndGgoKSwgZm9yY2UpIDogc3RyZW5ndGg7XG4gIH07XG5cbiAgZm9yY2UuZGlzdGFuY2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZGlzdGFuY2UgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZURpc3RhbmNlKCksIGZvcmNlKSA6IGRpc3RhbmNlO1xuICB9O1xuXG4gIHJldHVybiBmb3JjZTtcbn1cbiIsICIvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaW5lYXJfY29uZ3J1ZW50aWFsX2dlbmVyYXRvciNQYXJhbWV0ZXJzX2luX2NvbW1vbl91c2VcbmNvbnN0IGEgPSAxNjY0NTI1O1xuY29uc3QgYyA9IDEwMTM5MDQyMjM7XG5jb25zdCBtID0gNDI5NDk2NzI5NjsgLy8gMl4zMlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgbGV0IHMgPSAxO1xuICByZXR1cm4gKCkgPT4gKHMgPSAoYSAqIHMgKyBjKSAlIG0pIC8gbTtcbn1cbiIsICJpbXBvcnQge2Rpc3BhdGNofSBmcm9tIFwiZDMtZGlzcGF0Y2hcIjtcbmltcG9ydCB7dGltZXJ9IGZyb20gXCJkMy10aW1lclwiO1xuaW1wb3J0IGxjZyBmcm9tIFwiLi9sY2cuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHgoZCkge1xuICByZXR1cm4gZC54O1xufVxuXG5leHBvcnQgZnVuY3Rpb24geShkKSB7XG4gIHJldHVybiBkLnk7XG59XG5cbnZhciBpbml0aWFsUmFkaXVzID0gMTAsXG4gICAgaW5pdGlhbEFuZ2xlID0gTWF0aC5QSSAqICgzIC0gTWF0aC5zcXJ0KDUpKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obm9kZXMpIHtcbiAgdmFyIHNpbXVsYXRpb24sXG4gICAgICBhbHBoYSA9IDEsXG4gICAgICBhbHBoYU1pbiA9IDAuMDAxLFxuICAgICAgYWxwaGFEZWNheSA9IDEgLSBNYXRoLnBvdyhhbHBoYU1pbiwgMSAvIDMwMCksXG4gICAgICBhbHBoYVRhcmdldCA9IDAsXG4gICAgICB2ZWxvY2l0eURlY2F5ID0gMC42LFxuICAgICAgZm9yY2VzID0gbmV3IE1hcCgpLFxuICAgICAgc3RlcHBlciA9IHRpbWVyKHN0ZXApLFxuICAgICAgZXZlbnQgPSBkaXNwYXRjaChcInRpY2tcIiwgXCJlbmRcIiksXG4gICAgICByYW5kb20gPSBsY2coKTtcblxuICBpZiAobm9kZXMgPT0gbnVsbCkgbm9kZXMgPSBbXTtcblxuICBmdW5jdGlvbiBzdGVwKCkge1xuICAgIHRpY2soKTtcbiAgICBldmVudC5jYWxsKFwidGlja1wiLCBzaW11bGF0aW9uKTtcbiAgICBpZiAoYWxwaGEgPCBhbHBoYU1pbikge1xuICAgICAgc3RlcHBlci5zdG9wKCk7XG4gICAgICBldmVudC5jYWxsKFwiZW5kXCIsIHNpbXVsYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHRpY2soaXRlcmF0aW9ucykge1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoLCBub2RlO1xuXG4gICAgaWYgKGl0ZXJhdGlvbnMgPT09IHVuZGVmaW5lZCkgaXRlcmF0aW9ucyA9IDE7XG5cbiAgICBmb3IgKHZhciBrID0gMDsgayA8IGl0ZXJhdGlvbnM7ICsraykge1xuICAgICAgYWxwaGEgKz0gKGFscGhhVGFyZ2V0IC0gYWxwaGEpICogYWxwaGFEZWNheTtcblxuICAgICAgZm9yY2VzLmZvckVhY2goZnVuY3Rpb24oZm9yY2UpIHtcbiAgICAgICAgZm9yY2UoYWxwaGEpO1xuICAgICAgfSk7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICBpZiAobm9kZS5meCA9PSBudWxsKSBub2RlLnggKz0gbm9kZS52eCAqPSB2ZWxvY2l0eURlY2F5O1xuICAgICAgICBlbHNlIG5vZGUueCA9IG5vZGUuZngsIG5vZGUudnggPSAwO1xuICAgICAgICBpZiAobm9kZS5meSA9PSBudWxsKSBub2RlLnkgKz0gbm9kZS52eSAqPSB2ZWxvY2l0eURlY2F5O1xuICAgICAgICBlbHNlIG5vZGUueSA9IG5vZGUuZnksIG5vZGUudnkgPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzaW11bGF0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZU5vZGVzKCkge1xuICAgIGZvciAodmFyIGkgPSAwLCBuID0gbm9kZXMubGVuZ3RoLCBub2RlOyBpIDwgbjsgKytpKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV0sIG5vZGUuaW5kZXggPSBpO1xuICAgICAgaWYgKG5vZGUuZnggIT0gbnVsbCkgbm9kZS54ID0gbm9kZS5meDtcbiAgICAgIGlmIChub2RlLmZ5ICE9IG51bGwpIG5vZGUueSA9IG5vZGUuZnk7XG4gICAgICBpZiAoaXNOYU4obm9kZS54KSB8fCBpc05hTihub2RlLnkpKSB7XG4gICAgICAgIHZhciByYWRpdXMgPSBpbml0aWFsUmFkaXVzICogTWF0aC5zcXJ0KDAuNSArIGkpLCBhbmdsZSA9IGkgKiBpbml0aWFsQW5nbGU7XG4gICAgICAgIG5vZGUueCA9IHJhZGl1cyAqIE1hdGguY29zKGFuZ2xlKTtcbiAgICAgICAgbm9kZS55ID0gcmFkaXVzICogTWF0aC5zaW4oYW5nbGUpO1xuICAgICAgfVxuICAgICAgaWYgKGlzTmFOKG5vZGUudngpIHx8IGlzTmFOKG5vZGUudnkpKSB7XG4gICAgICAgIG5vZGUudnggPSBub2RlLnZ5ID0gMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplRm9yY2UoZm9yY2UpIHtcbiAgICBpZiAoZm9yY2UuaW5pdGlhbGl6ZSkgZm9yY2UuaW5pdGlhbGl6ZShub2RlcywgcmFuZG9tKTtcbiAgICByZXR1cm4gZm9yY2U7XG4gIH1cblxuICBpbml0aWFsaXplTm9kZXMoKTtcblxuICByZXR1cm4gc2ltdWxhdGlvbiA9IHtcbiAgICB0aWNrOiB0aWNrLFxuXG4gICAgcmVzdGFydDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gc3RlcHBlci5yZXN0YXJ0KHN0ZXApLCBzaW11bGF0aW9uO1xuICAgIH0sXG5cbiAgICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBzdGVwcGVyLnN0b3AoKSwgc2ltdWxhdGlvbjtcbiAgICB9LFxuXG4gICAgbm9kZXM6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG5vZGVzID0gXywgaW5pdGlhbGl6ZU5vZGVzKCksIGZvcmNlcy5mb3JFYWNoKGluaXRpYWxpemVGb3JjZSksIHNpbXVsYXRpb24pIDogbm9kZXM7XG4gICAgfSxcblxuICAgIGFscGhhOiBmdW5jdGlvbihfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChhbHBoYSA9ICtfLCBzaW11bGF0aW9uKSA6IGFscGhhO1xuICAgIH0sXG5cbiAgICBhbHBoYU1pbjogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoYWxwaGFNaW4gPSArXywgc2ltdWxhdGlvbikgOiBhbHBoYU1pbjtcbiAgICB9LFxuXG4gICAgYWxwaGFEZWNheTogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoYWxwaGFEZWNheSA9ICtfLCBzaW11bGF0aW9uKSA6ICthbHBoYURlY2F5O1xuICAgIH0sXG5cbiAgICBhbHBoYVRhcmdldDogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoYWxwaGFUYXJnZXQgPSArXywgc2ltdWxhdGlvbikgOiBhbHBoYVRhcmdldDtcbiAgICB9LFxuXG4gICAgdmVsb2NpdHlEZWNheTogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodmVsb2NpdHlEZWNheSA9IDEgLSBfLCBzaW11bGF0aW9uKSA6IDEgLSB2ZWxvY2l0eURlY2F5O1xuICAgIH0sXG5cbiAgICByYW5kb21Tb3VyY2U6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJhbmRvbSA9IF8sIGZvcmNlcy5mb3JFYWNoKGluaXRpYWxpemVGb3JjZSksIHNpbXVsYXRpb24pIDogcmFuZG9tO1xuICAgIH0sXG5cbiAgICBmb3JjZTogZnVuY3Rpb24obmFtZSwgXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gKChfID09IG51bGwgPyBmb3JjZXMuZGVsZXRlKG5hbWUpIDogZm9yY2VzLnNldChuYW1lLCBpbml0aWFsaXplRm9yY2UoXykpKSwgc2ltdWxhdGlvbikgOiBmb3JjZXMuZ2V0KG5hbWUpO1xuICAgIH0sXG5cbiAgICBmaW5kOiBmdW5jdGlvbih4LCB5LCByYWRpdXMpIHtcbiAgICAgIHZhciBpID0gMCxcbiAgICAgICAgICBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICAgIGR4LFxuICAgICAgICAgIGR5LFxuICAgICAgICAgIGQyLFxuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgY2xvc2VzdDtcblxuICAgICAgaWYgKHJhZGl1cyA9PSBudWxsKSByYWRpdXMgPSBJbmZpbml0eTtcbiAgICAgIGVsc2UgcmFkaXVzICo9IHJhZGl1cztcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgICBub2RlID0gbm9kZXNbaV07XG4gICAgICAgIGR4ID0geCAtIG5vZGUueDtcbiAgICAgICAgZHkgPSB5IC0gbm9kZS55O1xuICAgICAgICBkMiA9IGR4ICogZHggKyBkeSAqIGR5O1xuICAgICAgICBpZiAoZDIgPCByYWRpdXMpIGNsb3Nlc3QgPSBub2RlLCByYWRpdXMgPSBkMjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNsb3Nlc3Q7XG4gICAgfSxcblxuICAgIG9uOiBmdW5jdGlvbihuYW1lLCBfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyAoZXZlbnQub24obmFtZSwgXyksIHNpbXVsYXRpb24pIDogZXZlbnQub24obmFtZSk7XG4gICAgfVxuICB9O1xufVxuIiwgImltcG9ydCB7cXVhZHRyZWV9IGZyb20gXCJkMy1xdWFkdHJlZVwiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5pbXBvcnQgamlnZ2xlIGZyb20gXCIuL2ppZ2dsZS5qc1wiO1xuaW1wb3J0IHt4LCB5fSBmcm9tIFwiLi9zaW11bGF0aW9uLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgbm9kZXMsXG4gICAgICBub2RlLFxuICAgICAgcmFuZG9tLFxuICAgICAgYWxwaGEsXG4gICAgICBzdHJlbmd0aCA9IGNvbnN0YW50KC0zMCksXG4gICAgICBzdHJlbmd0aHMsXG4gICAgICBkaXN0YW5jZU1pbjIgPSAxLFxuICAgICAgZGlzdGFuY2VNYXgyID0gSW5maW5pdHksXG4gICAgICB0aGV0YTIgPSAwLjgxO1xuXG4gIGZ1bmN0aW9uIGZvcmNlKF8pIHtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aCwgdHJlZSA9IHF1YWR0cmVlKG5vZGVzLCB4LCB5KS52aXNpdEFmdGVyKGFjY3VtdWxhdGUpO1xuICAgIGZvciAoYWxwaGEgPSBfLCBpID0gMDsgaSA8IG47ICsraSkgbm9kZSA9IG5vZGVzW2ldLCB0cmVlLnZpc2l0KGFwcGx5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoLCBub2RlO1xuICAgIHN0cmVuZ3RocyA9IG5ldyBBcnJheShuKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSBub2RlID0gbm9kZXNbaV0sIHN0cmVuZ3Roc1tub2RlLmluZGV4XSA9ICtzdHJlbmd0aChub2RlLCBpLCBub2Rlcyk7XG4gIH1cblxuICBmdW5jdGlvbiBhY2N1bXVsYXRlKHF1YWQpIHtcbiAgICB2YXIgc3RyZW5ndGggPSAwLCBxLCBjLCB3ZWlnaHQgPSAwLCB4LCB5LCBpO1xuXG4gICAgLy8gRm9yIGludGVybmFsIG5vZGVzLCBhY2N1bXVsYXRlIGZvcmNlcyBmcm9tIGNoaWxkIHF1YWRyYW50cy5cbiAgICBpZiAocXVhZC5sZW5ndGgpIHtcbiAgICAgIGZvciAoeCA9IHkgPSBpID0gMDsgaSA8IDQ7ICsraSkge1xuICAgICAgICBpZiAoKHEgPSBxdWFkW2ldKSAmJiAoYyA9IE1hdGguYWJzKHEudmFsdWUpKSkge1xuICAgICAgICAgIHN0cmVuZ3RoICs9IHEudmFsdWUsIHdlaWdodCArPSBjLCB4ICs9IGMgKiBxLngsIHkgKz0gYyAqIHEueTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcXVhZC54ID0geCAvIHdlaWdodDtcbiAgICAgIHF1YWQueSA9IHkgLyB3ZWlnaHQ7XG4gICAgfVxuXG4gICAgLy8gRm9yIGxlYWYgbm9kZXMsIGFjY3VtdWxhdGUgZm9yY2VzIGZyb20gY29pbmNpZGVudCBxdWFkcmFudHMuXG4gICAgZWxzZSB7XG4gICAgICBxID0gcXVhZDtcbiAgICAgIHEueCA9IHEuZGF0YS54O1xuICAgICAgcS55ID0gcS5kYXRhLnk7XG4gICAgICBkbyBzdHJlbmd0aCArPSBzdHJlbmd0aHNbcS5kYXRhLmluZGV4XTtcbiAgICAgIHdoaWxlIChxID0gcS5uZXh0KTtcbiAgICB9XG5cbiAgICBxdWFkLnZhbHVlID0gc3RyZW5ndGg7XG4gIH1cblxuICBmdW5jdGlvbiBhcHBseShxdWFkLCB4MSwgXywgeDIpIHtcbiAgICBpZiAoIXF1YWQudmFsdWUpIHJldHVybiB0cnVlO1xuXG4gICAgdmFyIHggPSBxdWFkLnggLSBub2RlLngsXG4gICAgICAgIHkgPSBxdWFkLnkgLSBub2RlLnksXG4gICAgICAgIHcgPSB4MiAtIHgxLFxuICAgICAgICBsID0geCAqIHggKyB5ICogeTtcblxuICAgIC8vIEFwcGx5IHRoZSBCYXJuZXMtSHV0IGFwcHJveGltYXRpb24gaWYgcG9zc2libGUuXG4gICAgLy8gTGltaXQgZm9yY2VzIGZvciB2ZXJ5IGNsb3NlIG5vZGVzOyByYW5kb21pemUgZGlyZWN0aW9uIGlmIGNvaW5jaWRlbnQuXG4gICAgaWYgKHcgKiB3IC8gdGhldGEyIDwgbCkge1xuICAgICAgaWYgKGwgPCBkaXN0YW5jZU1heDIpIHtcbiAgICAgICAgaWYgKHggPT09IDApIHggPSBqaWdnbGUocmFuZG9tKSwgbCArPSB4ICogeDtcbiAgICAgICAgaWYgKHkgPT09IDApIHkgPSBqaWdnbGUocmFuZG9tKSwgbCArPSB5ICogeTtcbiAgICAgICAgaWYgKGwgPCBkaXN0YW5jZU1pbjIpIGwgPSBNYXRoLnNxcnQoZGlzdGFuY2VNaW4yICogbCk7XG4gICAgICAgIG5vZGUudnggKz0geCAqIHF1YWQudmFsdWUgKiBhbHBoYSAvIGw7XG4gICAgICAgIG5vZGUudnkgKz0geSAqIHF1YWQudmFsdWUgKiBhbHBoYSAvIGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIHByb2Nlc3MgcG9pbnRzIGRpcmVjdGx5LlxuICAgIGVsc2UgaWYgKHF1YWQubGVuZ3RoIHx8IGwgPj0gZGlzdGFuY2VNYXgyKSByZXR1cm47XG5cbiAgICAvLyBMaW1pdCBmb3JjZXMgZm9yIHZlcnkgY2xvc2Ugbm9kZXM7IHJhbmRvbWl6ZSBkaXJlY3Rpb24gaWYgY29pbmNpZGVudC5cbiAgICBpZiAocXVhZC5kYXRhICE9PSBub2RlIHx8IHF1YWQubmV4dCkge1xuICAgICAgaWYgKHggPT09IDApIHggPSBqaWdnbGUocmFuZG9tKSwgbCArPSB4ICogeDtcbiAgICAgIGlmICh5ID09PSAwKSB5ID0gamlnZ2xlKHJhbmRvbSksIGwgKz0geSAqIHk7XG4gICAgICBpZiAobCA8IGRpc3RhbmNlTWluMikgbCA9IE1hdGguc3FydChkaXN0YW5jZU1pbjIgKiBsKTtcbiAgICB9XG5cbiAgICBkbyBpZiAocXVhZC5kYXRhICE9PSBub2RlKSB7XG4gICAgICB3ID0gc3RyZW5ndGhzW3F1YWQuZGF0YS5pbmRleF0gKiBhbHBoYSAvIGw7XG4gICAgICBub2RlLnZ4ICs9IHggKiB3O1xuICAgICAgbm9kZS52eSArPSB5ICogdztcbiAgICB9IHdoaWxlIChxdWFkID0gcXVhZC5uZXh0KTtcbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfbm9kZXMsIF9yYW5kb20pIHtcbiAgICBub2RlcyA9IF9ub2RlcztcbiAgICByYW5kb20gPSBfcmFuZG9tO1xuICAgIGluaXRpYWxpemUoKTtcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHN0cmVuZ3RoO1xuICB9O1xuXG4gIGZvcmNlLmRpc3RhbmNlTWluID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGRpc3RhbmNlTWluMiA9IF8gKiBfLCBmb3JjZSkgOiBNYXRoLnNxcnQoZGlzdGFuY2VNaW4yKTtcbiAgfTtcblxuICBmb3JjZS5kaXN0YW5jZU1heCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkaXN0YW5jZU1heDIgPSBfICogXywgZm9yY2UpIDogTWF0aC5zcXJ0KGRpc3RhbmNlTWF4Mik7XG4gIH07XG5cbiAgZm9yY2UudGhldGEgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGhldGEyID0gXyAqIF8sIGZvcmNlKSA6IE1hdGguc3FydCh0aGV0YTIpO1xuICB9O1xuXG4gIHJldHVybiBmb3JjZTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiBNYXRoLmFicyh4ID0gTWF0aC5yb3VuZCh4KSkgPj0gMWUyMVxuICAgICAgPyB4LnRvTG9jYWxlU3RyaW5nKFwiZW5cIikucmVwbGFjZSgvLC9nLCBcIlwiKVxuICAgICAgOiB4LnRvU3RyaW5nKDEwKTtcbn1cblxuLy8gQ29tcHV0ZXMgdGhlIGRlY2ltYWwgY29lZmZpY2llbnQgYW5kIGV4cG9uZW50IG9mIHRoZSBzcGVjaWZpZWQgbnVtYmVyIHggd2l0aFxuLy8gc2lnbmlmaWNhbnQgZGlnaXRzIHAsIHdoZXJlIHggaXMgcG9zaXRpdmUgYW5kIHAgaXMgaW4gWzEsIDIxXSBvciB1bmRlZmluZWQuXG4vLyBGb3IgZXhhbXBsZSwgZm9ybWF0RGVjaW1hbFBhcnRzKDEuMjMpIHJldHVybnMgW1wiMTIzXCIsIDBdLlxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERlY2ltYWxQYXJ0cyh4LCBwKSB7XG4gIGlmICgoaSA9ICh4ID0gcCA/IHgudG9FeHBvbmVudGlhbChwIC0gMSkgOiB4LnRvRXhwb25lbnRpYWwoKSkuaW5kZXhPZihcImVcIikpIDwgMCkgcmV0dXJuIG51bGw7IC8vIE5hTiwgXHUwMEIxSW5maW5pdHlcbiAgdmFyIGksIGNvZWZmaWNpZW50ID0geC5zbGljZSgwLCBpKTtcblxuICAvLyBUaGUgc3RyaW5nIHJldHVybmVkIGJ5IHRvRXhwb25lbnRpYWwgZWl0aGVyIGhhcyB0aGUgZm9ybSBcXGRcXC5cXGQrZVstK11cXGQrXG4gIC8vIChlLmcuLCAxLjJlKzMpIG9yIHRoZSBmb3JtIFxcZGVbLStdXFxkKyAoZS5nLiwgMWUrMykuXG4gIHJldHVybiBbXG4gICAgY29lZmZpY2llbnQubGVuZ3RoID4gMSA/IGNvZWZmaWNpZW50WzBdICsgY29lZmZpY2llbnQuc2xpY2UoMikgOiBjb2VmZmljaWVudCxcbiAgICAreC5zbGljZShpICsgMSlcbiAgXTtcbn1cbiIsICJpbXBvcnQge2Zvcm1hdERlY2ltYWxQYXJ0c30gZnJvbSBcIi4vZm9ybWF0RGVjaW1hbC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiB4ID0gZm9ybWF0RGVjaW1hbFBhcnRzKE1hdGguYWJzKHgpKSwgeCA/IHhbMV0gOiBOYU47XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZ3JvdXBpbmcsIHRob3VzYW5kcykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIHdpZHRoKSB7XG4gICAgdmFyIGkgPSB2YWx1ZS5sZW5ndGgsXG4gICAgICAgIHQgPSBbXSxcbiAgICAgICAgaiA9IDAsXG4gICAgICAgIGcgPSBncm91cGluZ1swXSxcbiAgICAgICAgbGVuZ3RoID0gMDtcblxuICAgIHdoaWxlIChpID4gMCAmJiBnID4gMCkge1xuICAgICAgaWYgKGxlbmd0aCArIGcgKyAxID4gd2lkdGgpIGcgPSBNYXRoLm1heCgxLCB3aWR0aCAtIGxlbmd0aCk7XG4gICAgICB0LnB1c2godmFsdWUuc3Vic3RyaW5nKGkgLT0gZywgaSArIGcpKTtcbiAgICAgIGlmICgobGVuZ3RoICs9IGcgKyAxKSA+IHdpZHRoKSBicmVhaztcbiAgICAgIGcgPSBncm91cGluZ1tqID0gKGogKyAxKSAlIGdyb3VwaW5nLmxlbmd0aF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHQucmV2ZXJzZSgpLmpvaW4odGhvdXNhbmRzKTtcbiAgfTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihudW1lcmFscykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvWzAtOV0vZywgZnVuY3Rpb24oaSkge1xuICAgICAgcmV0dXJuIG51bWVyYWxzWytpXTtcbiAgICB9KTtcbiAgfTtcbn1cbiIsICIvLyBbW2ZpbGxdYWxpZ25dW3NpZ25dW3N5bWJvbF1bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW35dW3R5cGVdXG52YXIgcmUgPSAvXig/OiguKT8oWzw+PV5dKSk/KFsrXFwtKCBdKT8oWyQjXSk/KDApPyhcXGQrKT8oLCk/KFxcLlxcZCspPyh+KT8oW2EteiVdKT8kL2k7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdFNwZWNpZmllcihzcGVjaWZpZXIpIHtcbiAgaWYgKCEobWF0Y2ggPSByZS5leGVjKHNwZWNpZmllcikpKSB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGZvcm1hdDogXCIgKyBzcGVjaWZpZXIpO1xuICB2YXIgbWF0Y2g7XG4gIHJldHVybiBuZXcgRm9ybWF0U3BlY2lmaWVyKHtcbiAgICBmaWxsOiBtYXRjaFsxXSxcbiAgICBhbGlnbjogbWF0Y2hbMl0sXG4gICAgc2lnbjogbWF0Y2hbM10sXG4gICAgc3ltYm9sOiBtYXRjaFs0XSxcbiAgICB6ZXJvOiBtYXRjaFs1XSxcbiAgICB3aWR0aDogbWF0Y2hbNl0sXG4gICAgY29tbWE6IG1hdGNoWzddLFxuICAgIHByZWNpc2lvbjogbWF0Y2hbOF0gJiYgbWF0Y2hbOF0uc2xpY2UoMSksXG4gICAgdHJpbTogbWF0Y2hbOV0sXG4gICAgdHlwZTogbWF0Y2hbMTBdXG4gIH0pO1xufVxuXG5mb3JtYXRTcGVjaWZpZXIucHJvdG90eXBlID0gRm9ybWF0U3BlY2lmaWVyLnByb3RvdHlwZTsgLy8gaW5zdGFuY2VvZlxuXG5leHBvcnQgZnVuY3Rpb24gRm9ybWF0U3BlY2lmaWVyKHNwZWNpZmllcikge1xuICB0aGlzLmZpbGwgPSBzcGVjaWZpZXIuZmlsbCA9PT0gdW5kZWZpbmVkID8gXCIgXCIgOiBzcGVjaWZpZXIuZmlsbCArIFwiXCI7XG4gIHRoaXMuYWxpZ24gPSBzcGVjaWZpZXIuYWxpZ24gPT09IHVuZGVmaW5lZCA/IFwiPlwiIDogc3BlY2lmaWVyLmFsaWduICsgXCJcIjtcbiAgdGhpcy5zaWduID0gc3BlY2lmaWVyLnNpZ24gPT09IHVuZGVmaW5lZCA/IFwiLVwiIDogc3BlY2lmaWVyLnNpZ24gKyBcIlwiO1xuICB0aGlzLnN5bWJvbCA9IHNwZWNpZmllci5zeW1ib2wgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBzcGVjaWZpZXIuc3ltYm9sICsgXCJcIjtcbiAgdGhpcy56ZXJvID0gISFzcGVjaWZpZXIuemVybztcbiAgdGhpcy53aWR0aCA9IHNwZWNpZmllci53aWR0aCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogK3NwZWNpZmllci53aWR0aDtcbiAgdGhpcy5jb21tYSA9ICEhc3BlY2lmaWVyLmNvbW1hO1xuICB0aGlzLnByZWNpc2lvbiA9IHNwZWNpZmllci5wcmVjaXNpb24gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6ICtzcGVjaWZpZXIucHJlY2lzaW9uO1xuICB0aGlzLnRyaW0gPSAhIXNwZWNpZmllci50cmltO1xuICB0aGlzLnR5cGUgPSBzcGVjaWZpZXIudHlwZSA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IHNwZWNpZmllci50eXBlICsgXCJcIjtcbn1cblxuRm9ybWF0U3BlY2lmaWVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5maWxsXG4gICAgICArIHRoaXMuYWxpZ25cbiAgICAgICsgdGhpcy5zaWduXG4gICAgICArIHRoaXMuc3ltYm9sXG4gICAgICArICh0aGlzLnplcm8gPyBcIjBcIiA6IFwiXCIpXG4gICAgICArICh0aGlzLndpZHRoID09PSB1bmRlZmluZWQgPyBcIlwiIDogTWF0aC5tYXgoMSwgdGhpcy53aWR0aCB8IDApKVxuICAgICAgKyAodGhpcy5jb21tYSA/IFwiLFwiIDogXCJcIilcbiAgICAgICsgKHRoaXMucHJlY2lzaW9uID09PSB1bmRlZmluZWQgPyBcIlwiIDogXCIuXCIgKyBNYXRoLm1heCgwLCB0aGlzLnByZWNpc2lvbiB8IDApKVxuICAgICAgKyAodGhpcy50cmltID8gXCJ+XCIgOiBcIlwiKVxuICAgICAgKyB0aGlzLnR5cGU7XG59O1xuIiwgIi8vIFRyaW1zIGluc2lnbmlmaWNhbnQgemVyb3MsIGUuZy4sIHJlcGxhY2VzIDEuMjAwMGsgd2l0aCAxLjJrLlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocykge1xuICBvdXQ6IGZvciAodmFyIG4gPSBzLmxlbmd0aCwgaSA9IDEsIGkwID0gLTEsIGkxOyBpIDwgbjsgKytpKSB7XG4gICAgc3dpdGNoIChzW2ldKSB7XG4gICAgICBjYXNlIFwiLlwiOiBpMCA9IGkxID0gaTsgYnJlYWs7XG4gICAgICBjYXNlIFwiMFwiOiBpZiAoaTAgPT09IDApIGkwID0gaTsgaTEgPSBpOyBicmVhaztcbiAgICAgIGRlZmF1bHQ6IGlmICghK3NbaV0pIGJyZWFrIG91dDsgaWYgKGkwID4gMCkgaTAgPSAwOyBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGkwID4gMCA/IHMuc2xpY2UoMCwgaTApICsgcy5zbGljZShpMSArIDEpIDogcztcbn1cbiIsICJpbXBvcnQge2Zvcm1hdERlY2ltYWxQYXJ0c30gZnJvbSBcIi4vZm9ybWF0RGVjaW1hbC5qc1wiO1xuXG5leHBvcnQgdmFyIHByZWZpeEV4cG9uZW50O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4LCBwKSB7XG4gIHZhciBkID0gZm9ybWF0RGVjaW1hbFBhcnRzKHgsIHApO1xuICBpZiAoIWQpIHJldHVybiB4ICsgXCJcIjtcbiAgdmFyIGNvZWZmaWNpZW50ID0gZFswXSxcbiAgICAgIGV4cG9uZW50ID0gZFsxXSxcbiAgICAgIGkgPSBleHBvbmVudCAtIChwcmVmaXhFeHBvbmVudCA9IE1hdGgubWF4KC04LCBNYXRoLm1pbig4LCBNYXRoLmZsb29yKGV4cG9uZW50IC8gMykpKSAqIDMpICsgMSxcbiAgICAgIG4gPSBjb2VmZmljaWVudC5sZW5ndGg7XG4gIHJldHVybiBpID09PSBuID8gY29lZmZpY2llbnRcbiAgICAgIDogaSA+IG4gPyBjb2VmZmljaWVudCArIG5ldyBBcnJheShpIC0gbiArIDEpLmpvaW4oXCIwXCIpXG4gICAgICA6IGkgPiAwID8gY29lZmZpY2llbnQuc2xpY2UoMCwgaSkgKyBcIi5cIiArIGNvZWZmaWNpZW50LnNsaWNlKGkpXG4gICAgICA6IFwiMC5cIiArIG5ldyBBcnJheSgxIC0gaSkuam9pbihcIjBcIikgKyBmb3JtYXREZWNpbWFsUGFydHMoeCwgTWF0aC5tYXgoMCwgcCArIGkgLSAxKSlbMF07IC8vIGxlc3MgdGhhbiAxeSFcbn1cbiIsICJpbXBvcnQge2Zvcm1hdERlY2ltYWxQYXJ0c30gZnJvbSBcIi4vZm9ybWF0RGVjaW1hbC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4LCBwKSB7XG4gIHZhciBkID0gZm9ybWF0RGVjaW1hbFBhcnRzKHgsIHApO1xuICBpZiAoIWQpIHJldHVybiB4ICsgXCJcIjtcbiAgdmFyIGNvZWZmaWNpZW50ID0gZFswXSxcbiAgICAgIGV4cG9uZW50ID0gZFsxXTtcbiAgcmV0dXJuIGV4cG9uZW50IDwgMCA/IFwiMC5cIiArIG5ldyBBcnJheSgtZXhwb25lbnQpLmpvaW4oXCIwXCIpICsgY29lZmZpY2llbnRcbiAgICAgIDogY29lZmZpY2llbnQubGVuZ3RoID4gZXhwb25lbnQgKyAxID8gY29lZmZpY2llbnQuc2xpY2UoMCwgZXhwb25lbnQgKyAxKSArIFwiLlwiICsgY29lZmZpY2llbnQuc2xpY2UoZXhwb25lbnQgKyAxKVxuICAgICAgOiBjb2VmZmljaWVudCArIG5ldyBBcnJheShleHBvbmVudCAtIGNvZWZmaWNpZW50Lmxlbmd0aCArIDIpLmpvaW4oXCIwXCIpO1xufVxuIiwgImltcG9ydCBmb3JtYXREZWNpbWFsIGZyb20gXCIuL2Zvcm1hdERlY2ltYWwuanNcIjtcbmltcG9ydCBmb3JtYXRQcmVmaXhBdXRvIGZyb20gXCIuL2Zvcm1hdFByZWZpeEF1dG8uanNcIjtcbmltcG9ydCBmb3JtYXRSb3VuZGVkIGZyb20gXCIuL2Zvcm1hdFJvdW5kZWQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBcIiVcIjogKHgsIHApID0+ICh4ICogMTAwKS50b0ZpeGVkKHApLFxuICBcImJcIjogKHgpID0+IE1hdGgucm91bmQoeCkudG9TdHJpbmcoMiksXG4gIFwiY1wiOiAoeCkgPT4geCArIFwiXCIsXG4gIFwiZFwiOiBmb3JtYXREZWNpbWFsLFxuICBcImVcIjogKHgsIHApID0+IHgudG9FeHBvbmVudGlhbChwKSxcbiAgXCJmXCI6ICh4LCBwKSA9PiB4LnRvRml4ZWQocCksXG4gIFwiZ1wiOiAoeCwgcCkgPT4geC50b1ByZWNpc2lvbihwKSxcbiAgXCJvXCI6ICh4KSA9PiBNYXRoLnJvdW5kKHgpLnRvU3RyaW5nKDgpLFxuICBcInBcIjogKHgsIHApID0+IGZvcm1hdFJvdW5kZWQoeCAqIDEwMCwgcCksXG4gIFwiclwiOiBmb3JtYXRSb3VuZGVkLFxuICBcInNcIjogZm9ybWF0UHJlZml4QXV0byxcbiAgXCJYXCI6ICh4KSA9PiBNYXRoLnJvdW5kKHgpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpLFxuICBcInhcIjogKHgpID0+IE1hdGgucm91bmQoeCkudG9TdHJpbmcoMTYpXG59O1xuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIHg7XG59XG4iLCAiaW1wb3J0IGV4cG9uZW50IGZyb20gXCIuL2V4cG9uZW50LmpzXCI7XG5pbXBvcnQgZm9ybWF0R3JvdXAgZnJvbSBcIi4vZm9ybWF0R3JvdXAuanNcIjtcbmltcG9ydCBmb3JtYXROdW1lcmFscyBmcm9tIFwiLi9mb3JtYXROdW1lcmFscy5qc1wiO1xuaW1wb3J0IGZvcm1hdFNwZWNpZmllciBmcm9tIFwiLi9mb3JtYXRTcGVjaWZpZXIuanNcIjtcbmltcG9ydCBmb3JtYXRUcmltIGZyb20gXCIuL2Zvcm1hdFRyaW0uanNcIjtcbmltcG9ydCBmb3JtYXRUeXBlcyBmcm9tIFwiLi9mb3JtYXRUeXBlcy5qc1wiO1xuaW1wb3J0IHtwcmVmaXhFeHBvbmVudH0gZnJvbSBcIi4vZm9ybWF0UHJlZml4QXV0by5qc1wiO1xuaW1wb3J0IGlkZW50aXR5IGZyb20gXCIuL2lkZW50aXR5LmpzXCI7XG5cbnZhciBtYXAgPSBBcnJheS5wcm90b3R5cGUubWFwLFxuICAgIHByZWZpeGVzID0gW1wieVwiLFwielwiLFwiYVwiLFwiZlwiLFwicFwiLFwiblwiLFwiXHUwMEI1XCIsXCJtXCIsXCJcIixcImtcIixcIk1cIixcIkdcIixcIlRcIixcIlBcIixcIkVcIixcIlpcIixcIllcIl07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGxvY2FsZSkge1xuICB2YXIgZ3JvdXAgPSBsb2NhbGUuZ3JvdXBpbmcgPT09IHVuZGVmaW5lZCB8fCBsb2NhbGUudGhvdXNhbmRzID09PSB1bmRlZmluZWQgPyBpZGVudGl0eSA6IGZvcm1hdEdyb3VwKG1hcC5jYWxsKGxvY2FsZS5ncm91cGluZywgTnVtYmVyKSwgbG9jYWxlLnRob3VzYW5kcyArIFwiXCIpLFxuICAgICAgY3VycmVuY3lQcmVmaXggPSBsb2NhbGUuY3VycmVuY3kgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBsb2NhbGUuY3VycmVuY3lbMF0gKyBcIlwiLFxuICAgICAgY3VycmVuY3lTdWZmaXggPSBsb2NhbGUuY3VycmVuY3kgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBsb2NhbGUuY3VycmVuY3lbMV0gKyBcIlwiLFxuICAgICAgZGVjaW1hbCA9IGxvY2FsZS5kZWNpbWFsID09PSB1bmRlZmluZWQgPyBcIi5cIiA6IGxvY2FsZS5kZWNpbWFsICsgXCJcIixcbiAgICAgIG51bWVyYWxzID0gbG9jYWxlLm51bWVyYWxzID09PSB1bmRlZmluZWQgPyBpZGVudGl0eSA6IGZvcm1hdE51bWVyYWxzKG1hcC5jYWxsKGxvY2FsZS5udW1lcmFscywgU3RyaW5nKSksXG4gICAgICBwZXJjZW50ID0gbG9jYWxlLnBlcmNlbnQgPT09IHVuZGVmaW5lZCA/IFwiJVwiIDogbG9jYWxlLnBlcmNlbnQgKyBcIlwiLFxuICAgICAgbWludXMgPSBsb2NhbGUubWludXMgPT09IHVuZGVmaW5lZCA/IFwiXHUyMjEyXCIgOiBsb2NhbGUubWludXMgKyBcIlwiLFxuICAgICAgbmFuID0gbG9jYWxlLm5hbiA9PT0gdW5kZWZpbmVkID8gXCJOYU5cIiA6IGxvY2FsZS5uYW4gKyBcIlwiO1xuXG4gIGZ1bmN0aW9uIG5ld0Zvcm1hdChzcGVjaWZpZXIpIHtcbiAgICBzcGVjaWZpZXIgPSBmb3JtYXRTcGVjaWZpZXIoc3BlY2lmaWVyKTtcblxuICAgIHZhciBmaWxsID0gc3BlY2lmaWVyLmZpbGwsXG4gICAgICAgIGFsaWduID0gc3BlY2lmaWVyLmFsaWduLFxuICAgICAgICBzaWduID0gc3BlY2lmaWVyLnNpZ24sXG4gICAgICAgIHN5bWJvbCA9IHNwZWNpZmllci5zeW1ib2wsXG4gICAgICAgIHplcm8gPSBzcGVjaWZpZXIuemVybyxcbiAgICAgICAgd2lkdGggPSBzcGVjaWZpZXIud2lkdGgsXG4gICAgICAgIGNvbW1hID0gc3BlY2lmaWVyLmNvbW1hLFxuICAgICAgICBwcmVjaXNpb24gPSBzcGVjaWZpZXIucHJlY2lzaW9uLFxuICAgICAgICB0cmltID0gc3BlY2lmaWVyLnRyaW0sXG4gICAgICAgIHR5cGUgPSBzcGVjaWZpZXIudHlwZTtcblxuICAgIC8vIFRoZSBcIm5cIiB0eXBlIGlzIGFuIGFsaWFzIGZvciBcIixnXCIuXG4gICAgaWYgKHR5cGUgPT09IFwiblwiKSBjb21tYSA9IHRydWUsIHR5cGUgPSBcImdcIjtcblxuICAgIC8vIFRoZSBcIlwiIHR5cGUsIGFuZCBhbnkgaW52YWxpZCB0eXBlLCBpcyBhbiBhbGlhcyBmb3IgXCIuMTJ+Z1wiLlxuICAgIGVsc2UgaWYgKCFmb3JtYXRUeXBlc1t0eXBlXSkgcHJlY2lzaW9uID09PSB1bmRlZmluZWQgJiYgKHByZWNpc2lvbiA9IDEyKSwgdHJpbSA9IHRydWUsIHR5cGUgPSBcImdcIjtcblxuICAgIC8vIElmIHplcm8gZmlsbCBpcyBzcGVjaWZpZWQsIHBhZGRpbmcgZ29lcyBhZnRlciBzaWduIGFuZCBiZWZvcmUgZGlnaXRzLlxuICAgIGlmICh6ZXJvIHx8IChmaWxsID09PSBcIjBcIiAmJiBhbGlnbiA9PT0gXCI9XCIpKSB6ZXJvID0gdHJ1ZSwgZmlsbCA9IFwiMFwiLCBhbGlnbiA9IFwiPVwiO1xuXG4gICAgLy8gQ29tcHV0ZSB0aGUgcHJlZml4IGFuZCBzdWZmaXguXG4gICAgLy8gRm9yIFNJLXByZWZpeCwgdGhlIHN1ZmZpeCBpcyBsYXppbHkgY29tcHV0ZWQuXG4gICAgdmFyIHByZWZpeCA9IHN5bWJvbCA9PT0gXCIkXCIgPyBjdXJyZW5jeVByZWZpeCA6IHN5bWJvbCA9PT0gXCIjXCIgJiYgL1tib3hYXS8udGVzdCh0eXBlKSA/IFwiMFwiICsgdHlwZS50b0xvd2VyQ2FzZSgpIDogXCJcIixcbiAgICAgICAgc3VmZml4ID0gc3ltYm9sID09PSBcIiRcIiA/IGN1cnJlbmN5U3VmZml4IDogL1slcF0vLnRlc3QodHlwZSkgPyBwZXJjZW50IDogXCJcIjtcblxuICAgIC8vIFdoYXQgZm9ybWF0IGZ1bmN0aW9uIHNob3VsZCB3ZSB1c2U/XG4gICAgLy8gSXMgdGhpcyBhbiBpbnRlZ2VyIHR5cGU/XG4gICAgLy8gQ2FuIHRoaXMgdHlwZSBnZW5lcmF0ZSBleHBvbmVudGlhbCBub3RhdGlvbj9cbiAgICB2YXIgZm9ybWF0VHlwZSA9IGZvcm1hdFR5cGVzW3R5cGVdLFxuICAgICAgICBtYXliZVN1ZmZpeCA9IC9bZGVmZ3BycyVdLy50ZXN0KHR5cGUpO1xuXG4gICAgLy8gU2V0IHRoZSBkZWZhdWx0IHByZWNpc2lvbiBpZiBub3Qgc3BlY2lmaWVkLFxuICAgIC8vIG9yIGNsYW1wIHRoZSBzcGVjaWZpZWQgcHJlY2lzaW9uIHRvIHRoZSBzdXBwb3J0ZWQgcmFuZ2UuXG4gICAgLy8gRm9yIHNpZ25pZmljYW50IHByZWNpc2lvbiwgaXQgbXVzdCBiZSBpbiBbMSwgMjFdLlxuICAgIC8vIEZvciBmaXhlZCBwcmVjaXNpb24sIGl0IG11c3QgYmUgaW4gWzAsIDIwXS5cbiAgICBwcmVjaXNpb24gPSBwcmVjaXNpb24gPT09IHVuZGVmaW5lZCA/IDZcbiAgICAgICAgOiAvW2dwcnNdLy50ZXN0KHR5cGUpID8gTWF0aC5tYXgoMSwgTWF0aC5taW4oMjEsIHByZWNpc2lvbikpXG4gICAgICAgIDogTWF0aC5tYXgoMCwgTWF0aC5taW4oMjAsIHByZWNpc2lvbikpO1xuXG4gICAgZnVuY3Rpb24gZm9ybWF0KHZhbHVlKSB7XG4gICAgICB2YXIgdmFsdWVQcmVmaXggPSBwcmVmaXgsXG4gICAgICAgICAgdmFsdWVTdWZmaXggPSBzdWZmaXgsXG4gICAgICAgICAgaSwgbiwgYztcblxuICAgICAgaWYgKHR5cGUgPT09IFwiY1wiKSB7XG4gICAgICAgIHZhbHVlU3VmZml4ID0gZm9ybWF0VHlwZSh2YWx1ZSkgKyB2YWx1ZVN1ZmZpeDtcbiAgICAgICAgdmFsdWUgPSBcIlwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUgPSArdmFsdWU7XG5cbiAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBzaWduLiAtMCBpcyBub3QgbGVzcyB0aGFuIDAsIGJ1dCAxIC8gLTAgaXMhXG4gICAgICAgIHZhciB2YWx1ZU5lZ2F0aXZlID0gdmFsdWUgPCAwIHx8IDEgLyB2YWx1ZSA8IDA7XG5cbiAgICAgICAgLy8gUGVyZm9ybSB0aGUgaW5pdGlhbCBmb3JtYXR0aW5nLlxuICAgICAgICB2YWx1ZSA9IGlzTmFOKHZhbHVlKSA/IG5hbiA6IGZvcm1hdFR5cGUoTWF0aC5hYnModmFsdWUpLCBwcmVjaXNpb24pO1xuXG4gICAgICAgIC8vIFRyaW0gaW5zaWduaWZpY2FudCB6ZXJvcy5cbiAgICAgICAgaWYgKHRyaW0pIHZhbHVlID0gZm9ybWF0VHJpbSh2YWx1ZSk7XG5cbiAgICAgICAgLy8gSWYgYSBuZWdhdGl2ZSB2YWx1ZSByb3VuZHMgdG8gemVybyBhZnRlciBmb3JtYXR0aW5nLCBhbmQgbm8gZXhwbGljaXQgcG9zaXRpdmUgc2lnbiBpcyByZXF1ZXN0ZWQsIGhpZGUgdGhlIHNpZ24uXG4gICAgICAgIGlmICh2YWx1ZU5lZ2F0aXZlICYmICt2YWx1ZSA9PT0gMCAmJiBzaWduICE9PSBcIitcIikgdmFsdWVOZWdhdGl2ZSA9IGZhbHNlO1xuXG4gICAgICAgIC8vIENvbXB1dGUgdGhlIHByZWZpeCBhbmQgc3VmZml4LlxuICAgICAgICB2YWx1ZVByZWZpeCA9ICh2YWx1ZU5lZ2F0aXZlID8gKHNpZ24gPT09IFwiKFwiID8gc2lnbiA6IG1pbnVzKSA6IHNpZ24gPT09IFwiLVwiIHx8IHNpZ24gPT09IFwiKFwiID8gXCJcIiA6IHNpZ24pICsgdmFsdWVQcmVmaXg7XG4gICAgICAgIHZhbHVlU3VmZml4ID0gKHR5cGUgPT09IFwic1wiID8gcHJlZml4ZXNbOCArIHByZWZpeEV4cG9uZW50IC8gM10gOiBcIlwiKSArIHZhbHVlU3VmZml4ICsgKHZhbHVlTmVnYXRpdmUgJiYgc2lnbiA9PT0gXCIoXCIgPyBcIilcIiA6IFwiXCIpO1xuXG4gICAgICAgIC8vIEJyZWFrIHRoZSBmb3JtYXR0ZWQgdmFsdWUgaW50byB0aGUgaW50ZWdlciBcdTIwMUN2YWx1ZVx1MjAxRCBwYXJ0IHRoYXQgY2FuIGJlXG4gICAgICAgIC8vIGdyb3VwZWQsIGFuZCBmcmFjdGlvbmFsIG9yIGV4cG9uZW50aWFsIFx1MjAxQ3N1ZmZpeFx1MjAxRCBwYXJ0IHRoYXQgaXMgbm90LlxuICAgICAgICBpZiAobWF5YmVTdWZmaXgpIHtcbiAgICAgICAgICBpID0gLTEsIG4gPSB2YWx1ZS5sZW5ndGg7XG4gICAgICAgICAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICAgICAgICAgIGlmIChjID0gdmFsdWUuY2hhckNvZGVBdChpKSwgNDggPiBjIHx8IGMgPiA1Nykge1xuICAgICAgICAgICAgICB2YWx1ZVN1ZmZpeCA9IChjID09PSA0NiA/IGRlY2ltYWwgKyB2YWx1ZS5zbGljZShpICsgMSkgOiB2YWx1ZS5zbGljZShpKSkgKyB2YWx1ZVN1ZmZpeDtcbiAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgwLCBpKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBmaWxsIGNoYXJhY3RlciBpcyBub3QgXCIwXCIsIGdyb3VwaW5nIGlzIGFwcGxpZWQgYmVmb3JlIHBhZGRpbmcuXG4gICAgICBpZiAoY29tbWEgJiYgIXplcm8pIHZhbHVlID0gZ3JvdXAodmFsdWUsIEluZmluaXR5KTtcblxuICAgICAgLy8gQ29tcHV0ZSB0aGUgcGFkZGluZy5cbiAgICAgIHZhciBsZW5ndGggPSB2YWx1ZVByZWZpeC5sZW5ndGggKyB2YWx1ZS5sZW5ndGggKyB2YWx1ZVN1ZmZpeC5sZW5ndGgsXG4gICAgICAgICAgcGFkZGluZyA9IGxlbmd0aCA8IHdpZHRoID8gbmV3IEFycmF5KHdpZHRoIC0gbGVuZ3RoICsgMSkuam9pbihmaWxsKSA6IFwiXCI7XG5cbiAgICAgIC8vIElmIHRoZSBmaWxsIGNoYXJhY3RlciBpcyBcIjBcIiwgZ3JvdXBpbmcgaXMgYXBwbGllZCBhZnRlciBwYWRkaW5nLlxuICAgICAgaWYgKGNvbW1hICYmIHplcm8pIHZhbHVlID0gZ3JvdXAocGFkZGluZyArIHZhbHVlLCBwYWRkaW5nLmxlbmd0aCA/IHdpZHRoIC0gdmFsdWVTdWZmaXgubGVuZ3RoIDogSW5maW5pdHkpLCBwYWRkaW5nID0gXCJcIjtcblxuICAgICAgLy8gUmVjb25zdHJ1Y3QgdGhlIGZpbmFsIG91dHB1dCBiYXNlZCBvbiB0aGUgZGVzaXJlZCBhbGlnbm1lbnQuXG4gICAgICBzd2l0Y2ggKGFsaWduKSB7XG4gICAgICAgIGNhc2UgXCI8XCI6IHZhbHVlID0gdmFsdWVQcmVmaXggKyB2YWx1ZSArIHZhbHVlU3VmZml4ICsgcGFkZGluZzsgYnJlYWs7XG4gICAgICAgIGNhc2UgXCI9XCI6IHZhbHVlID0gdmFsdWVQcmVmaXggKyBwYWRkaW5nICsgdmFsdWUgKyB2YWx1ZVN1ZmZpeDsgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJeXCI6IHZhbHVlID0gcGFkZGluZy5zbGljZSgwLCBsZW5ndGggPSBwYWRkaW5nLmxlbmd0aCA+PiAxKSArIHZhbHVlUHJlZml4ICsgdmFsdWUgKyB2YWx1ZVN1ZmZpeCArIHBhZGRpbmcuc2xpY2UobGVuZ3RoKTsgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6IHZhbHVlID0gcGFkZGluZyArIHZhbHVlUHJlZml4ICsgdmFsdWUgKyB2YWx1ZVN1ZmZpeDsgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudW1lcmFscyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZm9ybWF0LnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gc3BlY2lmaWVyICsgXCJcIjtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGZvcm1hdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZvcm1hdFByZWZpeChzcGVjaWZpZXIsIHZhbHVlKSB7XG4gICAgdmFyIGYgPSBuZXdGb3JtYXQoKHNwZWNpZmllciA9IGZvcm1hdFNwZWNpZmllcihzcGVjaWZpZXIpLCBzcGVjaWZpZXIudHlwZSA9IFwiZlwiLCBzcGVjaWZpZXIpKSxcbiAgICAgICAgZSA9IE1hdGgubWF4KC04LCBNYXRoLm1pbig4LCBNYXRoLmZsb29yKGV4cG9uZW50KHZhbHVlKSAvIDMpKSkgKiAzLFxuICAgICAgICBrID0gTWF0aC5wb3coMTAsIC1lKSxcbiAgICAgICAgcHJlZml4ID0gcHJlZml4ZXNbOCArIGUgLyAzXTtcbiAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiBmKGsgKiB2YWx1ZSkgKyBwcmVmaXg7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZm9ybWF0OiBuZXdGb3JtYXQsXG4gICAgZm9ybWF0UHJlZml4OiBmb3JtYXRQcmVmaXhcbiAgfTtcbn1cbiIsICJpbXBvcnQgZm9ybWF0TG9jYWxlIGZyb20gXCIuL2xvY2FsZS5qc1wiO1xuXG52YXIgbG9jYWxlO1xuZXhwb3J0IHZhciBmb3JtYXQ7XG5leHBvcnQgdmFyIGZvcm1hdFByZWZpeDtcblxuZGVmYXVsdExvY2FsZSh7XG4gIHRob3VzYW5kczogXCIsXCIsXG4gIGdyb3VwaW5nOiBbM10sXG4gIGN1cnJlbmN5OiBbXCIkXCIsIFwiXCJdXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVmYXVsdExvY2FsZShkZWZpbml0aW9uKSB7XG4gIGxvY2FsZSA9IGZvcm1hdExvY2FsZShkZWZpbml0aW9uKTtcbiAgZm9ybWF0ID0gbG9jYWxlLmZvcm1hdDtcbiAgZm9ybWF0UHJlZml4ID0gbG9jYWxlLmZvcm1hdFByZWZpeDtcbiAgcmV0dXJuIGxvY2FsZTtcbn1cbiIsICJpbXBvcnQgZXhwb25lbnQgZnJvbSBcIi4vZXhwb25lbnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc3RlcCkge1xuICByZXR1cm4gTWF0aC5tYXgoMCwgLWV4cG9uZW50KE1hdGguYWJzKHN0ZXApKSk7XG59XG4iLCAiaW1wb3J0IGV4cG9uZW50IGZyb20gXCIuL2V4cG9uZW50LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0ZXAsIHZhbHVlKSB7XG4gIHJldHVybiBNYXRoLm1heCgwLCBNYXRoLm1heCgtOCwgTWF0aC5taW4oOCwgTWF0aC5mbG9vcihleHBvbmVudCh2YWx1ZSkgLyAzKSkpICogMyAtIGV4cG9uZW50KE1hdGguYWJzKHN0ZXApKSk7XG59XG4iLCAiaW1wb3J0IGV4cG9uZW50IGZyb20gXCIuL2V4cG9uZW50LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0ZXAsIG1heCkge1xuICBzdGVwID0gTWF0aC5hYnMoc3RlcCksIG1heCA9IE1hdGguYWJzKG1heCkgLSBzdGVwO1xuICByZXR1cm4gTWF0aC5tYXgoMCwgZXhwb25lbnQobWF4KSAtIGV4cG9uZW50KHN0ZXApKSArIDE7XG59XG4iLCAiZnVuY3Rpb24gZGVmYXVsdFNlcGFyYXRpb24oYSwgYikge1xuICByZXR1cm4gYS5wYXJlbnQgPT09IGIucGFyZW50ID8gMSA6IDI7XG59XG5cbmZ1bmN0aW9uIG1lYW5YKGNoaWxkcmVuKSB7XG4gIHJldHVybiBjaGlsZHJlbi5yZWR1Y2UobWVhblhSZWR1Y2UsIDApIC8gY2hpbGRyZW4ubGVuZ3RoO1xufVxuXG5mdW5jdGlvbiBtZWFuWFJlZHVjZSh4LCBjKSB7XG4gIHJldHVybiB4ICsgYy54O1xufVxuXG5mdW5jdGlvbiBtYXhZKGNoaWxkcmVuKSB7XG4gIHJldHVybiAxICsgY2hpbGRyZW4ucmVkdWNlKG1heFlSZWR1Y2UsIDApO1xufVxuXG5mdW5jdGlvbiBtYXhZUmVkdWNlKHksIGMpIHtcbiAgcmV0dXJuIE1hdGgubWF4KHksIGMueSk7XG59XG5cbmZ1bmN0aW9uIGxlYWZMZWZ0KG5vZGUpIHtcbiAgdmFyIGNoaWxkcmVuO1xuICB3aGlsZSAoY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuKSBub2RlID0gY2hpbGRyZW5bMF07XG4gIHJldHVybiBub2RlO1xufVxuXG5mdW5jdGlvbiBsZWFmUmlnaHQobm9kZSkge1xuICB2YXIgY2hpbGRyZW47XG4gIHdoaWxlIChjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4pIG5vZGUgPSBjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgcmV0dXJuIG5vZGU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgc2VwYXJhdGlvbiA9IGRlZmF1bHRTZXBhcmF0aW9uLFxuICAgICAgZHggPSAxLFxuICAgICAgZHkgPSAxLFxuICAgICAgbm9kZVNpemUgPSBmYWxzZTtcblxuICBmdW5jdGlvbiBjbHVzdGVyKHJvb3QpIHtcbiAgICB2YXIgcHJldmlvdXNOb2RlLFxuICAgICAgICB4ID0gMDtcblxuICAgIC8vIEZpcnN0IHdhbGssIGNvbXB1dGluZyB0aGUgaW5pdGlhbCB4ICYgeSB2YWx1ZXMuXG4gICAgcm9vdC5lYWNoQWZ0ZXIoZnVuY3Rpb24obm9kZSkge1xuICAgICAgdmFyIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcbiAgICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgICBub2RlLnggPSBtZWFuWChjaGlsZHJlbik7XG4gICAgICAgIG5vZGUueSA9IG1heFkoY2hpbGRyZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZS54ID0gcHJldmlvdXNOb2RlID8geCArPSBzZXBhcmF0aW9uKG5vZGUsIHByZXZpb3VzTm9kZSkgOiAwO1xuICAgICAgICBub2RlLnkgPSAwO1xuICAgICAgICBwcmV2aW91c05vZGUgPSBub2RlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdmFyIGxlZnQgPSBsZWFmTGVmdChyb290KSxcbiAgICAgICAgcmlnaHQgPSBsZWFmUmlnaHQocm9vdCksXG4gICAgICAgIHgwID0gbGVmdC54IC0gc2VwYXJhdGlvbihsZWZ0LCByaWdodCkgLyAyLFxuICAgICAgICB4MSA9IHJpZ2h0LnggKyBzZXBhcmF0aW9uKHJpZ2h0LCBsZWZ0KSAvIDI7XG5cbiAgICAvLyBTZWNvbmQgd2Fsaywgbm9ybWFsaXppbmcgeCAmIHkgdG8gdGhlIGRlc2lyZWQgc2l6ZS5cbiAgICByZXR1cm4gcm9vdC5lYWNoQWZ0ZXIobm9kZVNpemUgPyBmdW5jdGlvbihub2RlKSB7XG4gICAgICBub2RlLnggPSAobm9kZS54IC0gcm9vdC54KSAqIGR4O1xuICAgICAgbm9kZS55ID0gKHJvb3QueSAtIG5vZGUueSkgKiBkeTtcbiAgICB9IDogZnVuY3Rpb24obm9kZSkge1xuICAgICAgbm9kZS54ID0gKG5vZGUueCAtIHgwKSAvICh4MSAtIHgwKSAqIGR4O1xuICAgICAgbm9kZS55ID0gKDEgLSAocm9vdC55ID8gbm9kZS55IC8gcm9vdC55IDogMSkpICogZHk7XG4gICAgfSk7XG4gIH1cblxuICBjbHVzdGVyLnNlcGFyYXRpb24gPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc2VwYXJhdGlvbiA9IHgsIGNsdXN0ZXIpIDogc2VwYXJhdGlvbjtcbiAgfTtcblxuICBjbHVzdGVyLnNpemUgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAobm9kZVNpemUgPSBmYWxzZSwgZHggPSAreFswXSwgZHkgPSAreFsxXSwgY2x1c3RlcikgOiAobm9kZVNpemUgPyBudWxsIDogW2R4LCBkeV0pO1xuICB9O1xuXG4gIGNsdXN0ZXIubm9kZVNpemUgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAobm9kZVNpemUgPSB0cnVlLCBkeCA9ICt4WzBdLCBkeSA9ICt4WzFdLCBjbHVzdGVyKSA6IChub2RlU2l6ZSA/IFtkeCwgZHldIDogbnVsbCk7XG4gIH07XG5cbiAgcmV0dXJuIGNsdXN0ZXI7XG59XG4iLCAiZnVuY3Rpb24gY291bnQobm9kZSkge1xuICB2YXIgc3VtID0gMCxcbiAgICAgIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbixcbiAgICAgIGkgPSBjaGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGg7XG4gIGlmICghaSkgc3VtID0gMTtcbiAgZWxzZSB3aGlsZSAoLS1pID49IDApIHN1bSArPSBjaGlsZHJlbltpXS52YWx1ZTtcbiAgbm9kZS52YWx1ZSA9IHN1bTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmVhY2hBZnRlcihjb3VudCk7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2ssIHRoYXQpIHtcbiAgbGV0IGluZGV4ID0gLTE7XG4gIGZvciAoY29uc3Qgbm9kZSBvZiB0aGlzKSB7XG4gICAgY2FsbGJhY2suY2FsbCh0aGF0LCBub2RlLCArK2luZGV4LCB0aGlzKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjYWxsYmFjaywgdGhhdCkge1xuICB2YXIgbm9kZSA9IHRoaXMsIG5vZGVzID0gW25vZGVdLCBjaGlsZHJlbiwgaSwgaW5kZXggPSAtMTtcbiAgd2hpbGUgKG5vZGUgPSBub2Rlcy5wb3AoKSkge1xuICAgIGNhbGxiYWNrLmNhbGwodGhhdCwgbm9kZSwgKytpbmRleCwgdGhpcyk7XG4gICAgaWYgKGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yIChpID0gY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgbm9kZXMucHVzaChjaGlsZHJlbltpXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB0aGlzO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNhbGxiYWNrLCB0aGF0KSB7XG4gIHZhciBub2RlID0gdGhpcywgbm9kZXMgPSBbbm9kZV0sIG5leHQgPSBbXSwgY2hpbGRyZW4sIGksIG4sIGluZGV4ID0gLTE7XG4gIHdoaWxlIChub2RlID0gbm9kZXMucG9wKCkpIHtcbiAgICBuZXh0LnB1c2gobm9kZSk7XG4gICAgaWYgKGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yIChpID0gMCwgbiA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgICBub2Rlcy5wdXNoKGNoaWxkcmVuW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgd2hpbGUgKG5vZGUgPSBuZXh0LnBvcCgpKSB7XG4gICAgY2FsbGJhY2suY2FsbCh0aGF0LCBub2RlLCArK2luZGV4LCB0aGlzKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjYWxsYmFjaywgdGhhdCkge1xuICBsZXQgaW5kZXggPSAtMTtcbiAgZm9yIChjb25zdCBub2RlIG9mIHRoaXMpIHtcbiAgICBpZiAoY2FsbGJhY2suY2FsbCh0aGF0LCBub2RlLCArK2luZGV4LCB0aGlzKSkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICB9XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaEFmdGVyKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICB2YXIgc3VtID0gK3ZhbHVlKG5vZGUuZGF0YSkgfHwgMCxcbiAgICAgICAgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuLFxuICAgICAgICBpID0gY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoO1xuICAgIHdoaWxlICgtLWkgPj0gMCkgc3VtICs9IGNoaWxkcmVuW2ldLnZhbHVlO1xuICAgIG5vZGUudmFsdWUgPSBzdW07XG4gIH0pO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbXBhcmUpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaEJlZm9yZShmdW5jdGlvbihub2RlKSB7XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4uc29ydChjb21wYXJlKTtcbiAgICB9XG4gIH0pO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGVuZCkge1xuICB2YXIgc3RhcnQgPSB0aGlzLFxuICAgICAgYW5jZXN0b3IgPSBsZWFzdENvbW1vbkFuY2VzdG9yKHN0YXJ0LCBlbmQpLFxuICAgICAgbm9kZXMgPSBbc3RhcnRdO1xuICB3aGlsZSAoc3RhcnQgIT09IGFuY2VzdG9yKSB7XG4gICAgc3RhcnQgPSBzdGFydC5wYXJlbnQ7XG4gICAgbm9kZXMucHVzaChzdGFydCk7XG4gIH1cbiAgdmFyIGsgPSBub2Rlcy5sZW5ndGg7XG4gIHdoaWxlIChlbmQgIT09IGFuY2VzdG9yKSB7XG4gICAgbm9kZXMuc3BsaWNlKGssIDAsIGVuZCk7XG4gICAgZW5kID0gZW5kLnBhcmVudDtcbiAgfVxuICByZXR1cm4gbm9kZXM7XG59XG5cbmZ1bmN0aW9uIGxlYXN0Q29tbW9uQW5jZXN0b3IoYSwgYikge1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIGE7XG4gIHZhciBhTm9kZXMgPSBhLmFuY2VzdG9ycygpLFxuICAgICAgYk5vZGVzID0gYi5hbmNlc3RvcnMoKSxcbiAgICAgIGMgPSBudWxsO1xuICBhID0gYU5vZGVzLnBvcCgpO1xuICBiID0gYk5vZGVzLnBvcCgpO1xuICB3aGlsZSAoYSA9PT0gYikge1xuICAgIGMgPSBhO1xuICAgIGEgPSBhTm9kZXMucG9wKCk7XG4gICAgYiA9IGJOb2Rlcy5wb3AoKTtcbiAgfVxuICByZXR1cm4gYztcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIG5vZGUgPSB0aGlzLCBub2RlcyA9IFtub2RlXTtcbiAgd2hpbGUgKG5vZGUgPSBub2RlLnBhcmVudCkge1xuICAgIG5vZGVzLnB1c2gobm9kZSk7XG4gIH1cbiAgcmV0dXJuIG5vZGVzO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzKTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGxlYXZlcyA9IFtdO1xuICB0aGlzLmVhY2hCZWZvcmUoZnVuY3Rpb24obm9kZSkge1xuICAgIGlmICghbm9kZS5jaGlsZHJlbikge1xuICAgICAgbGVhdmVzLnB1c2gobm9kZSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGxlYXZlcztcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIHJvb3QgPSB0aGlzLCBsaW5rcyA9IFtdO1xuICByb290LmVhY2goZnVuY3Rpb24obm9kZSkge1xuICAgIGlmIChub2RlICE9PSByb290KSB7IC8vIERvblx1MjAxOXQgaW5jbHVkZSB0aGUgcm9vdFx1MjAxOXMgcGFyZW50LCBpZiBhbnkuXG4gICAgICBsaW5rcy5wdXNoKHtzb3VyY2U6IG5vZGUucGFyZW50LCB0YXJnZXQ6IG5vZGV9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbGlua3M7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24qKCkge1xuICB2YXIgbm9kZSA9IHRoaXMsIGN1cnJlbnQsIG5leHQgPSBbbm9kZV0sIGNoaWxkcmVuLCBpLCBuO1xuICBkbyB7XG4gICAgY3VycmVudCA9IG5leHQucmV2ZXJzZSgpLCBuZXh0ID0gW107XG4gICAgd2hpbGUgKG5vZGUgPSBjdXJyZW50LnBvcCgpKSB7XG4gICAgICB5aWVsZCBub2RlO1xuICAgICAgaWYgKGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbikge1xuICAgICAgICBmb3IgKGkgPSAwLCBuID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICAgICAgbmV4dC5wdXNoKGNoaWxkcmVuW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSB3aGlsZSAobmV4dC5sZW5ndGgpO1xufVxuIiwgImltcG9ydCBub2RlX2NvdW50IGZyb20gXCIuL2NvdW50LmpzXCI7XG5pbXBvcnQgbm9kZV9lYWNoIGZyb20gXCIuL2VhY2guanNcIjtcbmltcG9ydCBub2RlX2VhY2hCZWZvcmUgZnJvbSBcIi4vZWFjaEJlZm9yZS5qc1wiO1xuaW1wb3J0IG5vZGVfZWFjaEFmdGVyIGZyb20gXCIuL2VhY2hBZnRlci5qc1wiO1xuaW1wb3J0IG5vZGVfZmluZCBmcm9tIFwiLi9maW5kLmpzXCI7XG5pbXBvcnQgbm9kZV9zdW0gZnJvbSBcIi4vc3VtLmpzXCI7XG5pbXBvcnQgbm9kZV9zb3J0IGZyb20gXCIuL3NvcnQuanNcIjtcbmltcG9ydCBub2RlX3BhdGggZnJvbSBcIi4vcGF0aC5qc1wiO1xuaW1wb3J0IG5vZGVfYW5jZXN0b3JzIGZyb20gXCIuL2FuY2VzdG9ycy5qc1wiO1xuaW1wb3J0IG5vZGVfZGVzY2VuZGFudHMgZnJvbSBcIi4vZGVzY2VuZGFudHMuanNcIjtcbmltcG9ydCBub2RlX2xlYXZlcyBmcm9tIFwiLi9sZWF2ZXMuanNcIjtcbmltcG9ydCBub2RlX2xpbmtzIGZyb20gXCIuL2xpbmtzLmpzXCI7XG5pbXBvcnQgbm9kZV9pdGVyYXRvciBmcm9tIFwiLi9pdGVyYXRvci5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoaWVyYXJjaHkoZGF0YSwgY2hpbGRyZW4pIHtcbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBNYXApIHtcbiAgICBkYXRhID0gW3VuZGVmaW5lZCwgZGF0YV07XG4gICAgaWYgKGNoaWxkcmVuID09PSB1bmRlZmluZWQpIGNoaWxkcmVuID0gbWFwQ2hpbGRyZW47XG4gIH0gZWxzZSBpZiAoY2hpbGRyZW4gPT09IHVuZGVmaW5lZCkge1xuICAgIGNoaWxkcmVuID0gb2JqZWN0Q2hpbGRyZW47XG4gIH1cblxuICB2YXIgcm9vdCA9IG5ldyBOb2RlKGRhdGEpLFxuICAgICAgbm9kZSxcbiAgICAgIG5vZGVzID0gW3Jvb3RdLFxuICAgICAgY2hpbGQsXG4gICAgICBjaGlsZHMsXG4gICAgICBpLFxuICAgICAgbjtcblxuICB3aGlsZSAobm9kZSA9IG5vZGVzLnBvcCgpKSB7XG4gICAgaWYgKChjaGlsZHMgPSBjaGlsZHJlbihub2RlLmRhdGEpKSAmJiAobiA9IChjaGlsZHMgPSBBcnJheS5mcm9tKGNoaWxkcykpLmxlbmd0aCkpIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4gPSBjaGlsZHM7XG4gICAgICBmb3IgKGkgPSBuIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgbm9kZXMucHVzaChjaGlsZCA9IGNoaWxkc1tpXSA9IG5ldyBOb2RlKGNoaWxkc1tpXSkpO1xuICAgICAgICBjaGlsZC5wYXJlbnQgPSBub2RlO1xuICAgICAgICBjaGlsZC5kZXB0aCA9IG5vZGUuZGVwdGggKyAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByb290LmVhY2hCZWZvcmUoY29tcHV0ZUhlaWdodCk7XG59XG5cbmZ1bmN0aW9uIG5vZGVfY29weSgpIHtcbiAgcmV0dXJuIGhpZXJhcmNoeSh0aGlzKS5lYWNoQmVmb3JlKGNvcHlEYXRhKTtcbn1cblxuZnVuY3Rpb24gb2JqZWN0Q2hpbGRyZW4oZCkge1xuICByZXR1cm4gZC5jaGlsZHJlbjtcbn1cblxuZnVuY3Rpb24gbWFwQ2hpbGRyZW4oZCkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShkKSA/IGRbMV0gOiBudWxsO1xufVxuXG5mdW5jdGlvbiBjb3B5RGF0YShub2RlKSB7XG4gIGlmIChub2RlLmRhdGEudmFsdWUgIT09IHVuZGVmaW5lZCkgbm9kZS52YWx1ZSA9IG5vZGUuZGF0YS52YWx1ZTtcbiAgbm9kZS5kYXRhID0gbm9kZS5kYXRhLmRhdGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlSGVpZ2h0KG5vZGUpIHtcbiAgdmFyIGhlaWdodCA9IDA7XG4gIGRvIG5vZGUuaGVpZ2h0ID0gaGVpZ2h0O1xuICB3aGlsZSAoKG5vZGUgPSBub2RlLnBhcmVudCkgJiYgKG5vZGUuaGVpZ2h0IDwgKytoZWlnaHQpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE5vZGUoZGF0YSkge1xuICB0aGlzLmRhdGEgPSBkYXRhO1xuICB0aGlzLmRlcHRoID1cbiAgdGhpcy5oZWlnaHQgPSAwO1xuICB0aGlzLnBhcmVudCA9IG51bGw7XG59XG5cbk5vZGUucHJvdG90eXBlID0gaGllcmFyY2h5LnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IE5vZGUsXG4gIGNvdW50OiBub2RlX2NvdW50LFxuICBlYWNoOiBub2RlX2VhY2gsXG4gIGVhY2hBZnRlcjogbm9kZV9lYWNoQWZ0ZXIsXG4gIGVhY2hCZWZvcmU6IG5vZGVfZWFjaEJlZm9yZSxcbiAgZmluZDogbm9kZV9maW5kLFxuICBzdW06IG5vZGVfc3VtLFxuICBzb3J0OiBub2RlX3NvcnQsXG4gIHBhdGg6IG5vZGVfcGF0aCxcbiAgYW5jZXN0b3JzOiBub2RlX2FuY2VzdG9ycyxcbiAgZGVzY2VuZGFudHM6IG5vZGVfZGVzY2VuZGFudHMsXG4gIGxlYXZlczogbm9kZV9sZWF2ZXMsXG4gIGxpbmtzOiBub2RlX2xpbmtzLFxuICBjb3B5OiBub2RlX2NvcHksXG4gIFtTeW1ib2wuaXRlcmF0b3JdOiBub2RlX2l0ZXJhdG9yXG59O1xuIiwgImV4cG9ydCBmdW5jdGlvbiBvcHRpb25hbChmKSB7XG4gIHJldHVybiBmID09IG51bGwgPyBudWxsIDogcmVxdWlyZWQoZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlZChmKSB7XG4gIGlmICh0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3I7XG4gIHJldHVybiBmO1xufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBjb25zdGFudFplcm8oKSB7XG4gIHJldHVybiAwO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4geDtcbiAgfTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihub2RlKSB7XG4gIG5vZGUueDAgPSBNYXRoLnJvdW5kKG5vZGUueDApO1xuICBub2RlLnkwID0gTWF0aC5yb3VuZChub2RlLnkwKTtcbiAgbm9kZS54MSA9IE1hdGgucm91bmQobm9kZS54MSk7XG4gIG5vZGUueTEgPSBNYXRoLnJvdW5kKG5vZGUueTEpO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHBhcmVudCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgdmFyIG5vZGVzID0gcGFyZW50LmNoaWxkcmVuLFxuICAgICAgbm9kZSxcbiAgICAgIGkgPSAtMSxcbiAgICAgIG4gPSBub2Rlcy5sZW5ndGgsXG4gICAgICBrID0gcGFyZW50LnZhbHVlICYmICh4MSAtIHgwKSAvIHBhcmVudC52YWx1ZTtcblxuICB3aGlsZSAoKytpIDwgbikge1xuICAgIG5vZGUgPSBub2Rlc1tpXSwgbm9kZS55MCA9IHkwLCBub2RlLnkxID0geTE7XG4gICAgbm9kZS54MCA9IHgwLCBub2RlLngxID0geDAgKz0gbm9kZS52YWx1ZSAqIGs7XG4gIH1cbn1cbiIsICJpbXBvcnQgcm91bmROb2RlIGZyb20gXCIuL3RyZWVtYXAvcm91bmQuanNcIjtcbmltcG9ydCB0cmVlbWFwRGljZSBmcm9tIFwiLi90cmVlbWFwL2RpY2UuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBkeCA9IDEsXG4gICAgICBkeSA9IDEsXG4gICAgICBwYWRkaW5nID0gMCxcbiAgICAgIHJvdW5kID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gcGFydGl0aW9uKHJvb3QpIHtcbiAgICB2YXIgbiA9IHJvb3QuaGVpZ2h0ICsgMTtcbiAgICByb290LngwID1cbiAgICByb290LnkwID0gcGFkZGluZztcbiAgICByb290LngxID0gZHg7XG4gICAgcm9vdC55MSA9IGR5IC8gbjtcbiAgICByb290LmVhY2hCZWZvcmUocG9zaXRpb25Ob2RlKGR5LCBuKSk7XG4gICAgaWYgKHJvdW5kKSByb290LmVhY2hCZWZvcmUocm91bmROb2RlKTtcbiAgICByZXR1cm4gcm9vdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBvc2l0aW9uTm9kZShkeSwgbikge1xuICAgIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICB0cmVlbWFwRGljZShub2RlLCBub2RlLngwLCBkeSAqIChub2RlLmRlcHRoICsgMSkgLyBuLCBub2RlLngxLCBkeSAqIChub2RlLmRlcHRoICsgMikgLyBuKTtcbiAgICAgIH1cbiAgICAgIHZhciB4MCA9IG5vZGUueDAsXG4gICAgICAgICAgeTAgPSBub2RlLnkwLFxuICAgICAgICAgIHgxID0gbm9kZS54MSAtIHBhZGRpbmcsXG4gICAgICAgICAgeTEgPSBub2RlLnkxIC0gcGFkZGluZztcbiAgICAgIGlmICh4MSA8IHgwKSB4MCA9IHgxID0gKHgwICsgeDEpIC8gMjtcbiAgICAgIGlmICh5MSA8IHkwKSB5MCA9IHkxID0gKHkwICsgeTEpIC8gMjtcbiAgICAgIG5vZGUueDAgPSB4MDtcbiAgICAgIG5vZGUueTAgPSB5MDtcbiAgICAgIG5vZGUueDEgPSB4MTtcbiAgICAgIG5vZGUueTEgPSB5MTtcbiAgICB9O1xuICB9XG5cbiAgcGFydGl0aW9uLnJvdW5kID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJvdW5kID0gISF4LCBwYXJ0aXRpb24pIDogcm91bmQ7XG4gIH07XG5cbiAgcGFydGl0aW9uLnNpemUgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZHggPSAreFswXSwgZHkgPSAreFsxXSwgcGFydGl0aW9uKSA6IFtkeCwgZHldO1xuICB9O1xuXG4gIHBhcnRpdGlvbi5wYWRkaW5nID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhZGRpbmcgPSAreCwgcGFydGl0aW9uKSA6IHBhZGRpbmc7XG4gIH07XG5cbiAgcmV0dXJuIHBhcnRpdGlvbjtcbn1cbiIsICJpbXBvcnQge3JlcXVpcmVkfSBmcm9tIFwiLi9hY2Nlc3NvcnMuanNcIjtcbmltcG9ydCB7Tm9kZSwgY29tcHV0ZUhlaWdodH0gZnJvbSBcIi4vaGllcmFyY2h5L2luZGV4LmpzXCI7XG5cbnZhciBwcmVyb290ID0ge2RlcHRoOiAtMX0sXG4gICAgYW1iaWd1b3VzID0ge307XG5cbmZ1bmN0aW9uIGRlZmF1bHRJZChkKSB7XG4gIHJldHVybiBkLmlkO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0UGFyZW50SWQoZCkge1xuICByZXR1cm4gZC5wYXJlbnRJZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBpZCA9IGRlZmF1bHRJZCxcbiAgICAgIHBhcmVudElkID0gZGVmYXVsdFBhcmVudElkO1xuXG4gIGZ1bmN0aW9uIHN0cmF0aWZ5KGRhdGEpIHtcbiAgICB2YXIgbm9kZXMgPSBBcnJheS5mcm9tKGRhdGEpLFxuICAgICAgICBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICBkLFxuICAgICAgICBpLFxuICAgICAgICByb290LFxuICAgICAgICBwYXJlbnQsXG4gICAgICAgIG5vZGUsXG4gICAgICAgIG5vZGVJZCxcbiAgICAgICAgbm9kZUtleSxcbiAgICAgICAgbm9kZUJ5S2V5ID0gbmV3IE1hcDtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGQgPSBub2Rlc1tpXSwgbm9kZSA9IG5vZGVzW2ldID0gbmV3IE5vZGUoZCk7XG4gICAgICBpZiAoKG5vZGVJZCA9IGlkKGQsIGksIGRhdGEpKSAhPSBudWxsICYmIChub2RlSWQgKz0gXCJcIikpIHtcbiAgICAgICAgbm9kZUtleSA9IG5vZGUuaWQgPSBub2RlSWQ7XG4gICAgICAgIG5vZGVCeUtleS5zZXQobm9kZUtleSwgbm9kZUJ5S2V5Lmhhcyhub2RlS2V5KSA/IGFtYmlndW91cyA6IG5vZGUpO1xuICAgICAgfVxuICAgICAgaWYgKChub2RlSWQgPSBwYXJlbnRJZChkLCBpLCBkYXRhKSkgIT0gbnVsbCAmJiAobm9kZUlkICs9IFwiXCIpKSB7XG4gICAgICAgIG5vZGUucGFyZW50ID0gbm9kZUlkO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgIGlmIChub2RlSWQgPSBub2RlLnBhcmVudCkge1xuICAgICAgICBwYXJlbnQgPSBub2RlQnlLZXkuZ2V0KG5vZGVJZCk7XG4gICAgICAgIGlmICghcGFyZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJtaXNzaW5nOiBcIiArIG5vZGVJZCk7XG4gICAgICAgIGlmIChwYXJlbnQgPT09IGFtYmlndW91cykgdGhyb3cgbmV3IEVycm9yKFwiYW1iaWd1b3VzOiBcIiArIG5vZGVJZCk7XG4gICAgICAgIGlmIChwYXJlbnQuY2hpbGRyZW4pIHBhcmVudC5jaGlsZHJlbi5wdXNoKG5vZGUpO1xuICAgICAgICBlbHNlIHBhcmVudC5jaGlsZHJlbiA9IFtub2RlXTtcbiAgICAgICAgbm9kZS5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocm9vdCkgdGhyb3cgbmV3IEVycm9yKFwibXVsdGlwbGUgcm9vdHNcIik7XG4gICAgICAgIHJvb3QgPSBub2RlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcm9vdCkgdGhyb3cgbmV3IEVycm9yKFwibm8gcm9vdFwiKTtcbiAgICByb290LnBhcmVudCA9IHByZXJvb3Q7XG4gICAgcm9vdC5lYWNoQmVmb3JlKGZ1bmN0aW9uKG5vZGUpIHsgbm9kZS5kZXB0aCA9IG5vZGUucGFyZW50LmRlcHRoICsgMTsgLS1uOyB9KS5lYWNoQmVmb3JlKGNvbXB1dGVIZWlnaHQpO1xuICAgIHJvb3QucGFyZW50ID0gbnVsbDtcbiAgICBpZiAobiA+IDApIHRocm93IG5ldyBFcnJvcihcImN5Y2xlXCIpO1xuXG4gICAgcmV0dXJuIHJvb3Q7XG4gIH1cblxuICBzdHJhdGlmeS5pZCA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChpZCA9IHJlcXVpcmVkKHgpLCBzdHJhdGlmeSkgOiBpZDtcbiAgfTtcblxuICBzdHJhdGlmeS5wYXJlbnRJZCA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwYXJlbnRJZCA9IHJlcXVpcmVkKHgpLCBzdHJhdGlmeSkgOiBwYXJlbnRJZDtcbiAgfTtcblxuICByZXR1cm4gc3RyYXRpZnk7XG59XG4iLCAiaW1wb3J0IHtOb2RlfSBmcm9tIFwiLi9oaWVyYXJjaHkvaW5kZXguanNcIjtcblxuZnVuY3Rpb24gZGVmYXVsdFNlcGFyYXRpb24oYSwgYikge1xuICByZXR1cm4gYS5wYXJlbnQgPT09IGIucGFyZW50ID8gMSA6IDI7XG59XG5cbi8vIGZ1bmN0aW9uIHJhZGlhbFNlcGFyYXRpb24oYSwgYikge1xuLy8gICByZXR1cm4gKGEucGFyZW50ID09PSBiLnBhcmVudCA/IDEgOiAyKSAvIGEuZGVwdGg7XG4vLyB9XG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byB0cmF2ZXJzZSB0aGUgbGVmdCBjb250b3VyIG9mIGEgc3VidHJlZSAob3Jcbi8vIHN1YmZvcmVzdCkuIEl0IHJldHVybnMgdGhlIHN1Y2Nlc3NvciBvZiB2IG9uIHRoaXMgY29udG91ci4gVGhpcyBzdWNjZXNzb3IgaXNcbi8vIGVpdGhlciBnaXZlbiBieSB0aGUgbGVmdG1vc3QgY2hpbGQgb2YgdiBvciBieSB0aGUgdGhyZWFkIG9mIHYuIFRoZSBmdW5jdGlvblxuLy8gcmV0dXJucyBudWxsIGlmIGFuZCBvbmx5IGlmIHYgaXMgb24gdGhlIGhpZ2hlc3QgbGV2ZWwgb2YgaXRzIHN1YnRyZWUuXG5mdW5jdGlvbiBuZXh0TGVmdCh2KSB7XG4gIHZhciBjaGlsZHJlbiA9IHYuY2hpbGRyZW47XG4gIHJldHVybiBjaGlsZHJlbiA/IGNoaWxkcmVuWzBdIDogdi50O1xufVxuXG4vLyBUaGlzIGZ1bmN0aW9uIHdvcmtzIGFuYWxvZ291c2x5IHRvIG5leHRMZWZ0LlxuZnVuY3Rpb24gbmV4dFJpZ2h0KHYpIHtcbiAgdmFyIGNoaWxkcmVuID0gdi5jaGlsZHJlbjtcbiAgcmV0dXJuIGNoaWxkcmVuID8gY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV0gOiB2LnQ7XG59XG5cbi8vIFNoaWZ0cyB0aGUgY3VycmVudCBzdWJ0cmVlIHJvb3RlZCBhdCB3Ky4gVGhpcyBpcyBkb25lIGJ5IGluY3JlYXNpbmdcbi8vIHByZWxpbSh3KykgYW5kIG1vZCh3KykgYnkgc2hpZnQuXG5mdW5jdGlvbiBtb3ZlU3VidHJlZSh3bSwgd3AsIHNoaWZ0KSB7XG4gIHZhciBjaGFuZ2UgPSBzaGlmdCAvICh3cC5pIC0gd20uaSk7XG4gIHdwLmMgLT0gY2hhbmdlO1xuICB3cC5zICs9IHNoaWZ0O1xuICB3bS5jICs9IGNoYW5nZTtcbiAgd3AueiArPSBzaGlmdDtcbiAgd3AubSArPSBzaGlmdDtcbn1cblxuLy8gQWxsIG90aGVyIHNoaWZ0cywgYXBwbGllZCB0byB0aGUgc21hbGxlciBzdWJ0cmVlcyBiZXR3ZWVuIHctIGFuZCB3KywgYXJlXG4vLyBwZXJmb3JtZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gcHJlcGFyZSB0aGUgc2hpZnRzLCB3ZSBoYXZlIHRvIGFkanVzdFxuLy8gY2hhbmdlKHcrKSwgc2hpZnQodyspLCBhbmQgY2hhbmdlKHctKS5cbmZ1bmN0aW9uIGV4ZWN1dGVTaGlmdHModikge1xuICB2YXIgc2hpZnQgPSAwLFxuICAgICAgY2hhbmdlID0gMCxcbiAgICAgIGNoaWxkcmVuID0gdi5jaGlsZHJlbixcbiAgICAgIGkgPSBjaGlsZHJlbi5sZW5ndGgsXG4gICAgICB3O1xuICB3aGlsZSAoLS1pID49IDApIHtcbiAgICB3ID0gY2hpbGRyZW5baV07XG4gICAgdy56ICs9IHNoaWZ0O1xuICAgIHcubSArPSBzaGlmdDtcbiAgICBzaGlmdCArPSB3LnMgKyAoY2hhbmdlICs9IHcuYyk7XG4gIH1cbn1cblxuLy8gSWYgdmktXHUyMDE5cyBhbmNlc3RvciBpcyBhIHNpYmxpbmcgb2YgdiwgcmV0dXJucyB2aS1cdTIwMTlzIGFuY2VzdG9yLiBPdGhlcndpc2UsXG4vLyByZXR1cm5zIHRoZSBzcGVjaWZpZWQgKGRlZmF1bHQpIGFuY2VzdG9yLlxuZnVuY3Rpb24gbmV4dEFuY2VzdG9yKHZpbSwgdiwgYW5jZXN0b3IpIHtcbiAgcmV0dXJuIHZpbS5hLnBhcmVudCA9PT0gdi5wYXJlbnQgPyB2aW0uYSA6IGFuY2VzdG9yO1xufVxuXG5mdW5jdGlvbiBUcmVlTm9kZShub2RlLCBpKSB7XG4gIHRoaXMuXyA9IG5vZGU7XG4gIHRoaXMucGFyZW50ID0gbnVsbDtcbiAgdGhpcy5jaGlsZHJlbiA9IG51bGw7XG4gIHRoaXMuQSA9IG51bGw7IC8vIGRlZmF1bHQgYW5jZXN0b3JcbiAgdGhpcy5hID0gdGhpczsgLy8gYW5jZXN0b3JcbiAgdGhpcy56ID0gMDsgLy8gcHJlbGltXG4gIHRoaXMubSA9IDA7IC8vIG1vZFxuICB0aGlzLmMgPSAwOyAvLyBjaGFuZ2VcbiAgdGhpcy5zID0gMDsgLy8gc2hpZnRcbiAgdGhpcy50ID0gbnVsbDsgLy8gdGhyZWFkXG4gIHRoaXMuaSA9IGk7IC8vIG51bWJlclxufVxuXG5UcmVlTm9kZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKE5vZGUucHJvdG90eXBlKTtcblxuZnVuY3Rpb24gdHJlZVJvb3Qocm9vdCkge1xuICB2YXIgdHJlZSA9IG5ldyBUcmVlTm9kZShyb290LCAwKSxcbiAgICAgIG5vZGUsXG4gICAgICBub2RlcyA9IFt0cmVlXSxcbiAgICAgIGNoaWxkLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBpLFxuICAgICAgbjtcblxuICB3aGlsZSAobm9kZSA9IG5vZGVzLnBvcCgpKSB7XG4gICAgaWYgKGNoaWxkcmVuID0gbm9kZS5fLmNoaWxkcmVuKSB7XG4gICAgICBub2RlLmNoaWxkcmVuID0gbmV3IEFycmF5KG4gPSBjaGlsZHJlbi5sZW5ndGgpO1xuICAgICAgZm9yIChpID0gbiAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIG5vZGVzLnB1c2goY2hpbGQgPSBub2RlLmNoaWxkcmVuW2ldID0gbmV3IFRyZWVOb2RlKGNoaWxkcmVuW2ldLCBpKSk7XG4gICAgICAgIGNoaWxkLnBhcmVudCA9IG5vZGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgKHRyZWUucGFyZW50ID0gbmV3IFRyZWVOb2RlKG51bGwsIDApKS5jaGlsZHJlbiA9IFt0cmVlXTtcbiAgcmV0dXJuIHRyZWU7XG59XG5cbi8vIE5vZGUtbGluayB0cmVlIGRpYWdyYW0gdXNpbmcgdGhlIFJlaW5nb2xkLVRpbGZvcmQgXCJ0aWR5XCIgYWxnb3JpdGhtXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIHNlcGFyYXRpb24gPSBkZWZhdWx0U2VwYXJhdGlvbixcbiAgICAgIGR4ID0gMSxcbiAgICAgIGR5ID0gMSxcbiAgICAgIG5vZGVTaXplID0gbnVsbDtcblxuICBmdW5jdGlvbiB0cmVlKHJvb3QpIHtcbiAgICB2YXIgdCA9IHRyZWVSb290KHJvb3QpO1xuXG4gICAgLy8gQ29tcHV0ZSB0aGUgbGF5b3V0IHVzaW5nIEJ1Y2hoZWltIGV0IGFsLlx1MjAxOXMgYWxnb3JpdGhtLlxuICAgIHQuZWFjaEFmdGVyKGZpcnN0V2FsayksIHQucGFyZW50Lm0gPSAtdC56O1xuICAgIHQuZWFjaEJlZm9yZShzZWNvbmRXYWxrKTtcblxuICAgIC8vIElmIGEgZml4ZWQgbm9kZSBzaXplIGlzIHNwZWNpZmllZCwgc2NhbGUgeCBhbmQgeS5cbiAgICBpZiAobm9kZVNpemUpIHJvb3QuZWFjaEJlZm9yZShzaXplTm9kZSk7XG5cbiAgICAvLyBJZiBhIGZpeGVkIHRyZWUgc2l6ZSBpcyBzcGVjaWZpZWQsIHNjYWxlIHggYW5kIHkgYmFzZWQgb24gdGhlIGV4dGVudC5cbiAgICAvLyBDb21wdXRlIHRoZSBsZWZ0LW1vc3QsIHJpZ2h0LW1vc3QsIGFuZCBkZXB0aC1tb3N0IG5vZGVzIGZvciBleHRlbnRzLlxuICAgIGVsc2Uge1xuICAgICAgdmFyIGxlZnQgPSByb290LFxuICAgICAgICAgIHJpZ2h0ID0gcm9vdCxcbiAgICAgICAgICBib3R0b20gPSByb290O1xuICAgICAgcm9vdC5lYWNoQmVmb3JlKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUueCA8IGxlZnQueCkgbGVmdCA9IG5vZGU7XG4gICAgICAgIGlmIChub2RlLnggPiByaWdodC54KSByaWdodCA9IG5vZGU7XG4gICAgICAgIGlmIChub2RlLmRlcHRoID4gYm90dG9tLmRlcHRoKSBib3R0b20gPSBub2RlO1xuICAgICAgfSk7XG4gICAgICB2YXIgcyA9IGxlZnQgPT09IHJpZ2h0ID8gMSA6IHNlcGFyYXRpb24obGVmdCwgcmlnaHQpIC8gMixcbiAgICAgICAgICB0eCA9IHMgLSBsZWZ0LngsXG4gICAgICAgICAga3ggPSBkeCAvIChyaWdodC54ICsgcyArIHR4KSxcbiAgICAgICAgICBreSA9IGR5IC8gKGJvdHRvbS5kZXB0aCB8fCAxKTtcbiAgICAgIHJvb3QuZWFjaEJlZm9yZShmdW5jdGlvbihub2RlKSB7XG4gICAgICAgIG5vZGUueCA9IChub2RlLnggKyB0eCkgKiBreDtcbiAgICAgICAgbm9kZS55ID0gbm9kZS5kZXB0aCAqIGt5O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvb3Q7XG4gIH1cblxuICAvLyBDb21wdXRlcyBhIHByZWxpbWluYXJ5IHgtY29vcmRpbmF0ZSBmb3Igdi4gQmVmb3JlIHRoYXQsIEZJUlNUIFdBTEsgaXNcbiAgLy8gYXBwbGllZCByZWN1cnNpdmVseSB0byB0aGUgY2hpbGRyZW4gb2YgdiwgYXMgd2VsbCBhcyB0aGUgZnVuY3Rpb25cbiAgLy8gQVBQT1JUSU9OLiBBZnRlciBzcGFjaW5nIG91dCB0aGUgY2hpbGRyZW4gYnkgY2FsbGluZyBFWEVDVVRFIFNISUZUUywgdGhlXG4gIC8vIG5vZGUgdiBpcyBwbGFjZWQgdG8gdGhlIG1pZHBvaW50IG9mIGl0cyBvdXRlcm1vc3QgY2hpbGRyZW4uXG4gIGZ1bmN0aW9uIGZpcnN0V2Fsayh2KSB7XG4gICAgdmFyIGNoaWxkcmVuID0gdi5jaGlsZHJlbixcbiAgICAgICAgc2libGluZ3MgPSB2LnBhcmVudC5jaGlsZHJlbixcbiAgICAgICAgdyA9IHYuaSA/IHNpYmxpbmdzW3YuaSAtIDFdIDogbnVsbDtcbiAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgIGV4ZWN1dGVTaGlmdHModik7XG4gICAgICB2YXIgbWlkcG9pbnQgPSAoY2hpbGRyZW5bMF0ueiArIGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdLnopIC8gMjtcbiAgICAgIGlmICh3KSB7XG4gICAgICAgIHYueiA9IHcueiArIHNlcGFyYXRpb24odi5fLCB3Ll8pO1xuICAgICAgICB2Lm0gPSB2LnogLSBtaWRwb2ludDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHYueiA9IG1pZHBvaW50O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodykge1xuICAgICAgdi56ID0gdy56ICsgc2VwYXJhdGlvbih2Ll8sIHcuXyk7XG4gICAgfVxuICAgIHYucGFyZW50LkEgPSBhcHBvcnRpb24odiwgdywgdi5wYXJlbnQuQSB8fCBzaWJsaW5nc1swXSk7XG4gIH1cblxuICAvLyBDb21wdXRlcyBhbGwgcmVhbCB4LWNvb3JkaW5hdGVzIGJ5IHN1bW1pbmcgdXAgdGhlIG1vZGlmaWVycyByZWN1cnNpdmVseS5cbiAgZnVuY3Rpb24gc2Vjb25kV2Fsayh2KSB7XG4gICAgdi5fLnggPSB2LnogKyB2LnBhcmVudC5tO1xuICAgIHYubSArPSB2LnBhcmVudC5tO1xuICB9XG5cbiAgLy8gVGhlIGNvcmUgb2YgdGhlIGFsZ29yaXRobS4gSGVyZSwgYSBuZXcgc3VidHJlZSBpcyBjb21iaW5lZCB3aXRoIHRoZVxuICAvLyBwcmV2aW91cyBzdWJ0cmVlcy4gVGhyZWFkcyBhcmUgdXNlZCB0byB0cmF2ZXJzZSB0aGUgaW5zaWRlIGFuZCBvdXRzaWRlXG4gIC8vIGNvbnRvdXJzIG9mIHRoZSBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlIHVwIHRvIHRoZSBoaWdoZXN0IGNvbW1vbiBsZXZlbC4gVGhlXG4gIC8vIHZlcnRpY2VzIHVzZWQgZm9yIHRoZSB0cmF2ZXJzYWxzIGFyZSB2aSssIHZpLSwgdm8tLCBhbmQgdm8rLCB3aGVyZSB0aGVcbiAgLy8gc3VwZXJzY3JpcHQgbyBtZWFucyBvdXRzaWRlIGFuZCBpIG1lYW5zIGluc2lkZSwgdGhlIHN1YnNjcmlwdCAtIG1lYW5zIGxlZnRcbiAgLy8gc3VidHJlZSBhbmQgKyBtZWFucyByaWdodCBzdWJ0cmVlLiBGb3Igc3VtbWluZyB1cCB0aGUgbW9kaWZpZXJzIGFsb25nIHRoZVxuICAvLyBjb250b3VyLCB3ZSB1c2UgcmVzcGVjdGl2ZSB2YXJpYWJsZXMgc2krLCBzaS0sIHNvLSwgYW5kIHNvKy4gV2hlbmV2ZXIgdHdvXG4gIC8vIG5vZGVzIG9mIHRoZSBpbnNpZGUgY29udG91cnMgY29uZmxpY3QsIHdlIGNvbXB1dGUgdGhlIGxlZnQgb25lIG9mIHRoZVxuICAvLyBncmVhdGVzdCB1bmNvbW1vbiBhbmNlc3RvcnMgdXNpbmcgdGhlIGZ1bmN0aW9uIEFOQ0VTVE9SIGFuZCBjYWxsIE1PVkVcbiAgLy8gU1VCVFJFRSB0byBzaGlmdCB0aGUgc3VidHJlZSBhbmQgcHJlcGFyZSB0aGUgc2hpZnRzIG9mIHNtYWxsZXIgc3VidHJlZXMuXG4gIC8vIEZpbmFsbHksIHdlIGFkZCBhIG5ldyB0aHJlYWQgKGlmIG5lY2Vzc2FyeSkuXG4gIGZ1bmN0aW9uIGFwcG9ydGlvbih2LCB3LCBhbmNlc3Rvcikge1xuICAgIGlmICh3KSB7XG4gICAgICB2YXIgdmlwID0gdixcbiAgICAgICAgICB2b3AgPSB2LFxuICAgICAgICAgIHZpbSA9IHcsXG4gICAgICAgICAgdm9tID0gdmlwLnBhcmVudC5jaGlsZHJlblswXSxcbiAgICAgICAgICBzaXAgPSB2aXAubSxcbiAgICAgICAgICBzb3AgPSB2b3AubSxcbiAgICAgICAgICBzaW0gPSB2aW0ubSxcbiAgICAgICAgICBzb20gPSB2b20ubSxcbiAgICAgICAgICBzaGlmdDtcbiAgICAgIHdoaWxlICh2aW0gPSBuZXh0UmlnaHQodmltKSwgdmlwID0gbmV4dExlZnQodmlwKSwgdmltICYmIHZpcCkge1xuICAgICAgICB2b20gPSBuZXh0TGVmdCh2b20pO1xuICAgICAgICB2b3AgPSBuZXh0UmlnaHQodm9wKTtcbiAgICAgICAgdm9wLmEgPSB2O1xuICAgICAgICBzaGlmdCA9IHZpbS56ICsgc2ltIC0gdmlwLnogLSBzaXAgKyBzZXBhcmF0aW9uKHZpbS5fLCB2aXAuXyk7XG4gICAgICAgIGlmIChzaGlmdCA+IDApIHtcbiAgICAgICAgICBtb3ZlU3VidHJlZShuZXh0QW5jZXN0b3IodmltLCB2LCBhbmNlc3RvciksIHYsIHNoaWZ0KTtcbiAgICAgICAgICBzaXAgKz0gc2hpZnQ7XG4gICAgICAgICAgc29wICs9IHNoaWZ0O1xuICAgICAgICB9XG4gICAgICAgIHNpbSArPSB2aW0ubTtcbiAgICAgICAgc2lwICs9IHZpcC5tO1xuICAgICAgICBzb20gKz0gdm9tLm07XG4gICAgICAgIHNvcCArPSB2b3AubTtcbiAgICAgIH1cbiAgICAgIGlmICh2aW0gJiYgIW5leHRSaWdodCh2b3ApKSB7XG4gICAgICAgIHZvcC50ID0gdmltO1xuICAgICAgICB2b3AubSArPSBzaW0gLSBzb3A7XG4gICAgICB9XG4gICAgICBpZiAodmlwICYmICFuZXh0TGVmdCh2b20pKSB7XG4gICAgICAgIHZvbS50ID0gdmlwO1xuICAgICAgICB2b20ubSArPSBzaXAgLSBzb207XG4gICAgICAgIGFuY2VzdG9yID0gdjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFuY2VzdG9yO1xuICB9XG5cbiAgZnVuY3Rpb24gc2l6ZU5vZGUobm9kZSkge1xuICAgIG5vZGUueCAqPSBkeDtcbiAgICBub2RlLnkgPSBub2RlLmRlcHRoICogZHk7XG4gIH1cblxuICB0cmVlLnNlcGFyYXRpb24gPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc2VwYXJhdGlvbiA9IHgsIHRyZWUpIDogc2VwYXJhdGlvbjtcbiAgfTtcblxuICB0cmVlLnNpemUgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAobm9kZVNpemUgPSBmYWxzZSwgZHggPSAreFswXSwgZHkgPSAreFsxXSwgdHJlZSkgOiAobm9kZVNpemUgPyBudWxsIDogW2R4LCBkeV0pO1xuICB9O1xuXG4gIHRyZWUubm9kZVNpemUgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAobm9kZVNpemUgPSB0cnVlLCBkeCA9ICt4WzBdLCBkeSA9ICt4WzFdLCB0cmVlKSA6IChub2RlU2l6ZSA/IFtkeCwgZHldIDogbnVsbCk7XG4gIH07XG5cbiAgcmV0dXJuIHRyZWU7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocGFyZW50LCB4MCwgeTAsIHgxLCB5MSkge1xuICB2YXIgbm9kZXMgPSBwYXJlbnQuY2hpbGRyZW4sXG4gICAgICBub2RlLFxuICAgICAgaSA9IC0xLFxuICAgICAgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgIGsgPSBwYXJlbnQudmFsdWUgJiYgKHkxIC0geTApIC8gcGFyZW50LnZhbHVlO1xuXG4gIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgbm9kZSA9IG5vZGVzW2ldLCBub2RlLngwID0geDAsIG5vZGUueDEgPSB4MTtcbiAgICBub2RlLnkwID0geTAsIG5vZGUueTEgPSB5MCArPSBub2RlLnZhbHVlICogaztcbiAgfVxufVxuIiwgImltcG9ydCB0cmVlbWFwRGljZSBmcm9tIFwiLi9kaWNlLmpzXCI7XG5pbXBvcnQgdHJlZW1hcFNsaWNlIGZyb20gXCIuL3NsaWNlLmpzXCI7XG5cbmV4cG9ydCB2YXIgcGhpID0gKDEgKyBNYXRoLnNxcnQoNSkpIC8gMjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNxdWFyaWZ5UmF0aW8ocmF0aW8sIHBhcmVudCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgdmFyIHJvd3MgPSBbXSxcbiAgICAgIG5vZGVzID0gcGFyZW50LmNoaWxkcmVuLFxuICAgICAgcm93LFxuICAgICAgbm9kZVZhbHVlLFxuICAgICAgaTAgPSAwLFxuICAgICAgaTEgPSAwLFxuICAgICAgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgIGR4LCBkeSxcbiAgICAgIHZhbHVlID0gcGFyZW50LnZhbHVlLFxuICAgICAgc3VtVmFsdWUsXG4gICAgICBtaW5WYWx1ZSxcbiAgICAgIG1heFZhbHVlLFxuICAgICAgbmV3UmF0aW8sXG4gICAgICBtaW5SYXRpbyxcbiAgICAgIGFscGhhLFxuICAgICAgYmV0YTtcblxuICB3aGlsZSAoaTAgPCBuKSB7XG4gICAgZHggPSB4MSAtIHgwLCBkeSA9IHkxIC0geTA7XG5cbiAgICAvLyBGaW5kIHRoZSBuZXh0IG5vbi1lbXB0eSBub2RlLlxuICAgIGRvIHN1bVZhbHVlID0gbm9kZXNbaTErK10udmFsdWU7IHdoaWxlICghc3VtVmFsdWUgJiYgaTEgPCBuKTtcbiAgICBtaW5WYWx1ZSA9IG1heFZhbHVlID0gc3VtVmFsdWU7XG4gICAgYWxwaGEgPSBNYXRoLm1heChkeSAvIGR4LCBkeCAvIGR5KSAvICh2YWx1ZSAqIHJhdGlvKTtcbiAgICBiZXRhID0gc3VtVmFsdWUgKiBzdW1WYWx1ZSAqIGFscGhhO1xuICAgIG1pblJhdGlvID0gTWF0aC5tYXgobWF4VmFsdWUgLyBiZXRhLCBiZXRhIC8gbWluVmFsdWUpO1xuXG4gICAgLy8gS2VlcCBhZGRpbmcgbm9kZXMgd2hpbGUgdGhlIGFzcGVjdCByYXRpbyBtYWludGFpbnMgb3IgaW1wcm92ZXMuXG4gICAgZm9yICg7IGkxIDwgbjsgKytpMSkge1xuICAgICAgc3VtVmFsdWUgKz0gbm9kZVZhbHVlID0gbm9kZXNbaTFdLnZhbHVlO1xuICAgICAgaWYgKG5vZGVWYWx1ZSA8IG1pblZhbHVlKSBtaW5WYWx1ZSA9IG5vZGVWYWx1ZTtcbiAgICAgIGlmIChub2RlVmFsdWUgPiBtYXhWYWx1ZSkgbWF4VmFsdWUgPSBub2RlVmFsdWU7XG4gICAgICBiZXRhID0gc3VtVmFsdWUgKiBzdW1WYWx1ZSAqIGFscGhhO1xuICAgICAgbmV3UmF0aW8gPSBNYXRoLm1heChtYXhWYWx1ZSAvIGJldGEsIGJldGEgLyBtaW5WYWx1ZSk7XG4gICAgICBpZiAobmV3UmF0aW8gPiBtaW5SYXRpbykgeyBzdW1WYWx1ZSAtPSBub2RlVmFsdWU7IGJyZWFrOyB9XG4gICAgICBtaW5SYXRpbyA9IG5ld1JhdGlvO1xuICAgIH1cblxuICAgIC8vIFBvc2l0aW9uIGFuZCByZWNvcmQgdGhlIHJvdyBvcmllbnRhdGlvbi5cbiAgICByb3dzLnB1c2gocm93ID0ge3ZhbHVlOiBzdW1WYWx1ZSwgZGljZTogZHggPCBkeSwgY2hpbGRyZW46IG5vZGVzLnNsaWNlKGkwLCBpMSl9KTtcbiAgICBpZiAocm93LmRpY2UpIHRyZWVtYXBEaWNlKHJvdywgeDAsIHkwLCB4MSwgdmFsdWUgPyB5MCArPSBkeSAqIHN1bVZhbHVlIC8gdmFsdWUgOiB5MSk7XG4gICAgZWxzZSB0cmVlbWFwU2xpY2Uocm93LCB4MCwgeTAsIHZhbHVlID8geDAgKz0gZHggKiBzdW1WYWx1ZSAvIHZhbHVlIDogeDEsIHkxKTtcbiAgICB2YWx1ZSAtPSBzdW1WYWx1ZSwgaTAgPSBpMTtcbiAgfVxuXG4gIHJldHVybiByb3dzO1xufVxuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gY3VzdG9tKHJhdGlvKSB7XG5cbiAgZnVuY3Rpb24gc3F1YXJpZnkocGFyZW50LCB4MCwgeTAsIHgxLCB5MSkge1xuICAgIHNxdWFyaWZ5UmF0aW8ocmF0aW8sIHBhcmVudCwgeDAsIHkwLCB4MSwgeTEpO1xuICB9XG5cbiAgc3F1YXJpZnkucmF0aW8gPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGN1c3RvbSgoeCA9ICt4KSA+IDEgPyB4IDogMSk7XG4gIH07XG5cbiAgcmV0dXJuIHNxdWFyaWZ5O1xufSkocGhpKTtcbiIsICJpbXBvcnQgcm91bmROb2RlIGZyb20gXCIuL3JvdW5kLmpzXCI7XG5pbXBvcnQgc3F1YXJpZnkgZnJvbSBcIi4vc3F1YXJpZnkuanNcIjtcbmltcG9ydCB7cmVxdWlyZWR9IGZyb20gXCIuLi9hY2Nlc3NvcnMuanNcIjtcbmltcG9ydCBjb25zdGFudCwge2NvbnN0YW50WmVyb30gZnJvbSBcIi4uL2NvbnN0YW50LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgdGlsZSA9IHNxdWFyaWZ5LFxuICAgICAgcm91bmQgPSBmYWxzZSxcbiAgICAgIGR4ID0gMSxcbiAgICAgIGR5ID0gMSxcbiAgICAgIHBhZGRpbmdTdGFjayA9IFswXSxcbiAgICAgIHBhZGRpbmdJbm5lciA9IGNvbnN0YW50WmVybyxcbiAgICAgIHBhZGRpbmdUb3AgPSBjb25zdGFudFplcm8sXG4gICAgICBwYWRkaW5nUmlnaHQgPSBjb25zdGFudFplcm8sXG4gICAgICBwYWRkaW5nQm90dG9tID0gY29uc3RhbnRaZXJvLFxuICAgICAgcGFkZGluZ0xlZnQgPSBjb25zdGFudFplcm87XG5cbiAgZnVuY3Rpb24gdHJlZW1hcChyb290KSB7XG4gICAgcm9vdC54MCA9XG4gICAgcm9vdC55MCA9IDA7XG4gICAgcm9vdC54MSA9IGR4O1xuICAgIHJvb3QueTEgPSBkeTtcbiAgICByb290LmVhY2hCZWZvcmUocG9zaXRpb25Ob2RlKTtcbiAgICBwYWRkaW5nU3RhY2sgPSBbMF07XG4gICAgaWYgKHJvdW5kKSByb290LmVhY2hCZWZvcmUocm91bmROb2RlKTtcbiAgICByZXR1cm4gcm9vdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBvc2l0aW9uTm9kZShub2RlKSB7XG4gICAgdmFyIHAgPSBwYWRkaW5nU3RhY2tbbm9kZS5kZXB0aF0sXG4gICAgICAgIHgwID0gbm9kZS54MCArIHAsXG4gICAgICAgIHkwID0gbm9kZS55MCArIHAsXG4gICAgICAgIHgxID0gbm9kZS54MSAtIHAsXG4gICAgICAgIHkxID0gbm9kZS55MSAtIHA7XG4gICAgaWYgKHgxIDwgeDApIHgwID0geDEgPSAoeDAgKyB4MSkgLyAyO1xuICAgIGlmICh5MSA8IHkwKSB5MCA9IHkxID0gKHkwICsgeTEpIC8gMjtcbiAgICBub2RlLngwID0geDA7XG4gICAgbm9kZS55MCA9IHkwO1xuICAgIG5vZGUueDEgPSB4MTtcbiAgICBub2RlLnkxID0geTE7XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIHAgPSBwYWRkaW5nU3RhY2tbbm9kZS5kZXB0aCArIDFdID0gcGFkZGluZ0lubmVyKG5vZGUpIC8gMjtcbiAgICAgIHgwICs9IHBhZGRpbmdMZWZ0KG5vZGUpIC0gcDtcbiAgICAgIHkwICs9IHBhZGRpbmdUb3Aobm9kZSkgLSBwO1xuICAgICAgeDEgLT0gcGFkZGluZ1JpZ2h0KG5vZGUpIC0gcDtcbiAgICAgIHkxIC09IHBhZGRpbmdCb3R0b20obm9kZSkgLSBwO1xuICAgICAgaWYgKHgxIDwgeDApIHgwID0geDEgPSAoeDAgKyB4MSkgLyAyO1xuICAgICAgaWYgKHkxIDwgeTApIHkwID0geTEgPSAoeTAgKyB5MSkgLyAyO1xuICAgICAgdGlsZShub2RlLCB4MCwgeTAsIHgxLCB5MSk7XG4gICAgfVxuICB9XG5cbiAgdHJlZW1hcC5yb3VuZCA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyb3VuZCA9ICEheCwgdHJlZW1hcCkgOiByb3VuZDtcbiAgfTtcblxuICB0cmVlbWFwLnNpemUgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZHggPSAreFswXSwgZHkgPSAreFsxXSwgdHJlZW1hcCkgOiBbZHgsIGR5XTtcbiAgfTtcblxuICB0cmVlbWFwLnRpbGUgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGlsZSA9IHJlcXVpcmVkKHgpLCB0cmVlbWFwKSA6IHRpbGU7XG4gIH07XG5cbiAgdHJlZW1hcC5wYWRkaW5nID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gdHJlZW1hcC5wYWRkaW5nSW5uZXIoeCkucGFkZGluZ091dGVyKHgpIDogdHJlZW1hcC5wYWRkaW5nSW5uZXIoKTtcbiAgfTtcblxuICB0cmVlbWFwLnBhZGRpbmdJbm5lciA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwYWRkaW5nSW5uZXIgPSB0eXBlb2YgeCA9PT0gXCJmdW5jdGlvblwiID8geCA6IGNvbnN0YW50KCt4KSwgdHJlZW1hcCkgOiBwYWRkaW5nSW5uZXI7XG4gIH07XG5cbiAgdHJlZW1hcC5wYWRkaW5nT3V0ZXIgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyB0cmVlbWFwLnBhZGRpbmdUb3AoeCkucGFkZGluZ1JpZ2h0KHgpLnBhZGRpbmdCb3R0b20oeCkucGFkZGluZ0xlZnQoeCkgOiB0cmVlbWFwLnBhZGRpbmdUb3AoKTtcbiAgfTtcblxuICB0cmVlbWFwLnBhZGRpbmdUb3AgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFkZGluZ1RvcCA9IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyB4IDogY29uc3RhbnQoK3gpLCB0cmVlbWFwKSA6IHBhZGRpbmdUb3A7XG4gIH07XG5cbiAgdHJlZW1hcC5wYWRkaW5nUmlnaHQgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFkZGluZ1JpZ2h0ID0gdHlwZW9mIHggPT09IFwiZnVuY3Rpb25cIiA/IHggOiBjb25zdGFudCgreCksIHRyZWVtYXApIDogcGFkZGluZ1JpZ2h0O1xuICB9O1xuXG4gIHRyZWVtYXAucGFkZGluZ0JvdHRvbSA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwYWRkaW5nQm90dG9tID0gdHlwZW9mIHggPT09IFwiZnVuY3Rpb25cIiA/IHggOiBjb25zdGFudCgreCksIHRyZWVtYXApIDogcGFkZGluZ0JvdHRvbTtcbiAgfTtcblxuICB0cmVlbWFwLnBhZGRpbmdMZWZ0ID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhZGRpbmdMZWZ0ID0gdHlwZW9mIHggPT09IFwiZnVuY3Rpb25cIiA/IHggOiBjb25zdGFudCgreCksIHRyZWVtYXApIDogcGFkZGluZ0xlZnQ7XG4gIH07XG5cbiAgcmV0dXJuIHRyZWVtYXA7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocGFyZW50LCB4MCwgeTAsIHgxLCB5MSkge1xuICB2YXIgbm9kZXMgPSBwYXJlbnQuY2hpbGRyZW4sXG4gICAgICBpLCBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgc3VtLCBzdW1zID0gbmV3IEFycmF5KG4gKyAxKTtcblxuICBmb3IgKHN1bXNbMF0gPSBzdW0gPSBpID0gMDsgaSA8IG47ICsraSkge1xuICAgIHN1bXNbaSArIDFdID0gc3VtICs9IG5vZGVzW2ldLnZhbHVlO1xuICB9XG5cbiAgcGFydGl0aW9uKDAsIG4sIHBhcmVudC52YWx1ZSwgeDAsIHkwLCB4MSwgeTEpO1xuXG4gIGZ1bmN0aW9uIHBhcnRpdGlvbihpLCBqLCB2YWx1ZSwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgICBpZiAoaSA+PSBqIC0gMSkge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgIG5vZGUueDAgPSB4MCwgbm9kZS55MCA9IHkwO1xuICAgICAgbm9kZS54MSA9IHgxLCBub2RlLnkxID0geTE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlT2Zmc2V0ID0gc3Vtc1tpXSxcbiAgICAgICAgdmFsdWVUYXJnZXQgPSAodmFsdWUgLyAyKSArIHZhbHVlT2Zmc2V0LFxuICAgICAgICBrID0gaSArIDEsXG4gICAgICAgIGhpID0gaiAtIDE7XG5cbiAgICB3aGlsZSAoayA8IGhpKSB7XG4gICAgICB2YXIgbWlkID0gayArIGhpID4+PiAxO1xuICAgICAgaWYgKHN1bXNbbWlkXSA8IHZhbHVlVGFyZ2V0KSBrID0gbWlkICsgMTtcbiAgICAgIGVsc2UgaGkgPSBtaWQ7XG4gICAgfVxuXG4gICAgaWYgKCh2YWx1ZVRhcmdldCAtIHN1bXNbayAtIDFdKSA8IChzdW1zW2tdIC0gdmFsdWVUYXJnZXQpICYmIGkgKyAxIDwgaykgLS1rO1xuXG4gICAgdmFyIHZhbHVlTGVmdCA9IHN1bXNba10gLSB2YWx1ZU9mZnNldCxcbiAgICAgICAgdmFsdWVSaWdodCA9IHZhbHVlIC0gdmFsdWVMZWZ0O1xuXG4gICAgaWYgKCh4MSAtIHgwKSA+ICh5MSAtIHkwKSkge1xuICAgICAgdmFyIHhrID0gdmFsdWUgPyAoeDAgKiB2YWx1ZVJpZ2h0ICsgeDEgKiB2YWx1ZUxlZnQpIC8gdmFsdWUgOiB4MTtcbiAgICAgIHBhcnRpdGlvbihpLCBrLCB2YWx1ZUxlZnQsIHgwLCB5MCwgeGssIHkxKTtcbiAgICAgIHBhcnRpdGlvbihrLCBqLCB2YWx1ZVJpZ2h0LCB4aywgeTAsIHgxLCB5MSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB5ayA9IHZhbHVlID8gKHkwICogdmFsdWVSaWdodCArIHkxICogdmFsdWVMZWZ0KSAvIHZhbHVlIDogeTE7XG4gICAgICBwYXJ0aXRpb24oaSwgaywgdmFsdWVMZWZ0LCB4MCwgeTAsIHgxLCB5ayk7XG4gICAgICBwYXJ0aXRpb24oaywgaiwgdmFsdWVSaWdodCwgeDAsIHlrLCB4MSwgeTEpO1xuICAgIH1cbiAgfVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBpbml0UmFuZ2UoZG9tYWluLCByYW5nZSkge1xuICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IGJyZWFrO1xuICAgIGNhc2UgMTogdGhpcy5yYW5nZShkb21haW4pOyBicmVhaztcbiAgICBkZWZhdWx0OiB0aGlzLnJhbmdlKHJhbmdlKS5kb21haW4oZG9tYWluKTsgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0SW50ZXJwb2xhdG9yKGRvbWFpbiwgaW50ZXJwb2xhdG9yKSB7XG4gIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgIGNhc2UgMDogYnJlYWs7XG4gICAgY2FzZSAxOiB7XG4gICAgICBpZiAodHlwZW9mIGRvbWFpbiA9PT0gXCJmdW5jdGlvblwiKSB0aGlzLmludGVycG9sYXRvcihkb21haW4pO1xuICAgICAgZWxzZSB0aGlzLnJhbmdlKGRvbWFpbik7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdGhpcy5kb21haW4oZG9tYWluKTtcbiAgICAgIGlmICh0eXBlb2YgaW50ZXJwb2xhdG9yID09PSBcImZ1bmN0aW9uXCIpIHRoaXMuaW50ZXJwb2xhdG9yKGludGVycG9sYXRvcik7XG4gICAgICBlbHNlIHRoaXMucmFuZ2UoaW50ZXJwb2xhdG9yKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiIsICJpbXBvcnQge2luaXRSYW5nZX0gZnJvbSBcIi4vaW5pdC5qc1wiO1xuXG5leHBvcnQgY29uc3QgaW1wbGljaXQgPSBTeW1ib2woXCJpbXBsaWNpdFwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3JkaW5hbCgpIHtcbiAgdmFyIGluZGV4ID0gbmV3IE1hcCgpLFxuICAgICAgZG9tYWluID0gW10sXG4gICAgICByYW5nZSA9IFtdLFxuICAgICAgdW5rbm93biA9IGltcGxpY2l0O1xuXG4gIGZ1bmN0aW9uIHNjYWxlKGQpIHtcbiAgICB2YXIga2V5ID0gZCArIFwiXCIsIGkgPSBpbmRleC5nZXQoa2V5KTtcbiAgICBpZiAoIWkpIHtcbiAgICAgIGlmICh1bmtub3duICE9PSBpbXBsaWNpdCkgcmV0dXJuIHVua25vd247XG4gICAgICBpbmRleC5zZXQoa2V5LCBpID0gZG9tYWluLnB1c2goZCkpO1xuICAgIH1cbiAgICByZXR1cm4gcmFuZ2VbKGkgLSAxKSAlIHJhbmdlLmxlbmd0aF07XG4gIH1cblxuICBzY2FsZS5kb21haW4gPSBmdW5jdGlvbihfKSB7XG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gZG9tYWluLnNsaWNlKCk7XG4gICAgZG9tYWluID0gW10sIGluZGV4ID0gbmV3IE1hcCgpO1xuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgXykge1xuICAgICAgY29uc3Qga2V5ID0gdmFsdWUgKyBcIlwiO1xuICAgICAgaWYgKGluZGV4LmhhcyhrZXkpKSBjb250aW51ZTtcbiAgICAgIGluZGV4LnNldChrZXksIGRvbWFpbi5wdXNoKHZhbHVlKSk7XG4gICAgfVxuICAgIHJldHVybiBzY2FsZTtcbiAgfTtcblxuICBzY2FsZS5yYW5nZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYW5nZSA9IEFycmF5LmZyb20oXyksIHNjYWxlKSA6IHJhbmdlLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUudW5rbm93biA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh1bmtub3duID0gXywgc2NhbGUpIDogdW5rbm93bjtcbiAgfTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIG9yZGluYWwoZG9tYWluLCByYW5nZSkudW5rbm93bih1bmtub3duKTtcbiAgfTtcblxuICBpbml0UmFuZ2UuYXBwbHkoc2NhbGUsIGFyZ3VtZW50cyk7XG5cbiAgcmV0dXJuIHNjYWxlO1xufVxuIiwgImltcG9ydCB7cmFuZ2UgYXMgc2VxdWVuY2V9IGZyb20gXCJkMy1hcnJheVwiO1xuaW1wb3J0IHtpbml0UmFuZ2V9IGZyb20gXCIuL2luaXQuanNcIjtcbmltcG9ydCBvcmRpbmFsIGZyb20gXCIuL29yZGluYWwuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYmFuZCgpIHtcbiAgdmFyIHNjYWxlID0gb3JkaW5hbCgpLnVua25vd24odW5kZWZpbmVkKSxcbiAgICAgIGRvbWFpbiA9IHNjYWxlLmRvbWFpbixcbiAgICAgIG9yZGluYWxSYW5nZSA9IHNjYWxlLnJhbmdlLFxuICAgICAgcjAgPSAwLFxuICAgICAgcjEgPSAxLFxuICAgICAgc3RlcCxcbiAgICAgIGJhbmR3aWR0aCxcbiAgICAgIHJvdW5kID0gZmFsc2UsXG4gICAgICBwYWRkaW5nSW5uZXIgPSAwLFxuICAgICAgcGFkZGluZ091dGVyID0gMCxcbiAgICAgIGFsaWduID0gMC41O1xuXG4gIGRlbGV0ZSBzY2FsZS51bmtub3duO1xuXG4gIGZ1bmN0aW9uIHJlc2NhbGUoKSB7XG4gICAgdmFyIG4gPSBkb21haW4oKS5sZW5ndGgsXG4gICAgICAgIHJldmVyc2UgPSByMSA8IHIwLFxuICAgICAgICBzdGFydCA9IHJldmVyc2UgPyByMSA6IHIwLFxuICAgICAgICBzdG9wID0gcmV2ZXJzZSA/IHIwIDogcjE7XG4gICAgc3RlcCA9IChzdG9wIC0gc3RhcnQpIC8gTWF0aC5tYXgoMSwgbiAtIHBhZGRpbmdJbm5lciArIHBhZGRpbmdPdXRlciAqIDIpO1xuICAgIGlmIChyb3VuZCkgc3RlcCA9IE1hdGguZmxvb3Ioc3RlcCk7XG4gICAgc3RhcnQgKz0gKHN0b3AgLSBzdGFydCAtIHN0ZXAgKiAobiAtIHBhZGRpbmdJbm5lcikpICogYWxpZ247XG4gICAgYmFuZHdpZHRoID0gc3RlcCAqICgxIC0gcGFkZGluZ0lubmVyKTtcbiAgICBpZiAocm91bmQpIHN0YXJ0ID0gTWF0aC5yb3VuZChzdGFydCksIGJhbmR3aWR0aCA9IE1hdGgucm91bmQoYmFuZHdpZHRoKTtcbiAgICB2YXIgdmFsdWVzID0gc2VxdWVuY2UobikubWFwKGZ1bmN0aW9uKGkpIHsgcmV0dXJuIHN0YXJ0ICsgc3RlcCAqIGk7IH0pO1xuICAgIHJldHVybiBvcmRpbmFsUmFuZ2UocmV2ZXJzZSA/IHZhbHVlcy5yZXZlcnNlKCkgOiB2YWx1ZXMpO1xuICB9XG5cbiAgc2NhbGUuZG9tYWluID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGRvbWFpbihfKSwgcmVzY2FsZSgpKSA6IGRvbWFpbigpO1xuICB9O1xuXG4gIHNjYWxlLnJhbmdlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKFtyMCwgcjFdID0gXywgcjAgPSArcjAsIHIxID0gK3IxLCByZXNjYWxlKCkpIDogW3IwLCByMV07XG4gIH07XG5cbiAgc2NhbGUucmFuZ2VSb3VuZCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gW3IwLCByMV0gPSBfLCByMCA9ICtyMCwgcjEgPSArcjEsIHJvdW5kID0gdHJ1ZSwgcmVzY2FsZSgpO1xuICB9O1xuXG4gIHNjYWxlLmJhbmR3aWR0aCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBiYW5kd2lkdGg7XG4gIH07XG5cbiAgc2NhbGUuc3RlcCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBzdGVwO1xuICB9O1xuXG4gIHNjYWxlLnJvdW5kID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJvdW5kID0gISFfLCByZXNjYWxlKCkpIDogcm91bmQ7XG4gIH07XG5cbiAgc2NhbGUucGFkZGluZyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwYWRkaW5nSW5uZXIgPSBNYXRoLm1pbigxLCBwYWRkaW5nT3V0ZXIgPSArXyksIHJlc2NhbGUoKSkgOiBwYWRkaW5nSW5uZXI7XG4gIH07XG5cbiAgc2NhbGUucGFkZGluZ0lubmVyID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhZGRpbmdJbm5lciA9IE1hdGgubWluKDEsIF8pLCByZXNjYWxlKCkpIDogcGFkZGluZ0lubmVyO1xuICB9O1xuXG4gIHNjYWxlLnBhZGRpbmdPdXRlciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwYWRkaW5nT3V0ZXIgPSArXywgcmVzY2FsZSgpKSA6IHBhZGRpbmdPdXRlcjtcbiAgfTtcblxuICBzY2FsZS5hbGlnbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChhbGlnbiA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIF8pKSwgcmVzY2FsZSgpKSA6IGFsaWduO1xuICB9O1xuXG4gIHNjYWxlLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYmFuZChkb21haW4oKSwgW3IwLCByMV0pXG4gICAgICAgIC5yb3VuZChyb3VuZClcbiAgICAgICAgLnBhZGRpbmdJbm5lcihwYWRkaW5nSW5uZXIpXG4gICAgICAgIC5wYWRkaW5nT3V0ZXIocGFkZGluZ091dGVyKVxuICAgICAgICAuYWxpZ24oYWxpZ24pO1xuICB9O1xuXG4gIHJldHVybiBpbml0UmFuZ2UuYXBwbHkocmVzY2FsZSgpLCBhcmd1bWVudHMpO1xufVxuXG5mdW5jdGlvbiBwb2ludGlzaChzY2FsZSkge1xuICB2YXIgY29weSA9IHNjYWxlLmNvcHk7XG5cbiAgc2NhbGUucGFkZGluZyA9IHNjYWxlLnBhZGRpbmdPdXRlcjtcbiAgZGVsZXRlIHNjYWxlLnBhZGRpbmdJbm5lcjtcbiAgZGVsZXRlIHNjYWxlLnBhZGRpbmdPdXRlcjtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHBvaW50aXNoKGNvcHkoKSk7XG4gIH07XG5cbiAgcmV0dXJuIHNjYWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9pbnQoKSB7XG4gIHJldHVybiBwb2ludGlzaChiYW5kLmFwcGx5KG51bGwsIGFyZ3VtZW50cykucGFkZGluZ0lubmVyKDEpKTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb25zdGFudHMoeCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbnVtYmVyKHgpIHtcbiAgcmV0dXJuICt4O1xufVxuIiwgImltcG9ydCB7YmlzZWN0fSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7aW50ZXJwb2xhdGUgYXMgaW50ZXJwb2xhdGVWYWx1ZSwgaW50ZXJwb2xhdGVOdW1iZXIsIGludGVycG9sYXRlUm91bmR9IGZyb20gXCJkMy1pbnRlcnBvbGF0ZVwiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5pbXBvcnQgbnVtYmVyIGZyb20gXCIuL251bWJlci5qc1wiO1xuXG52YXIgdW5pdCA9IFswLCAxXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlkZW50aXR5KHgpIHtcbiAgcmV0dXJuIHg7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZShhLCBiKSB7XG4gIHJldHVybiAoYiAtPSAoYSA9ICthKSlcbiAgICAgID8gZnVuY3Rpb24oeCkgeyByZXR1cm4gKHggLSBhKSAvIGI7IH1cbiAgICAgIDogY29uc3RhbnQoaXNOYU4oYikgPyBOYU4gOiAwLjUpO1xufVxuXG5mdW5jdGlvbiBjbGFtcGVyKGEsIGIpIHtcbiAgdmFyIHQ7XG4gIGlmIChhID4gYikgdCA9IGEsIGEgPSBiLCBiID0gdDtcbiAgcmV0dXJuIGZ1bmN0aW9uKHgpIHsgcmV0dXJuIE1hdGgubWF4KGEsIE1hdGgubWluKGIsIHgpKTsgfTtcbn1cblxuLy8gbm9ybWFsaXplKGEsIGIpKHgpIHRha2VzIGEgZG9tYWluIHZhbHVlIHggaW4gW2EsYl0gYW5kIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVyIHQgaW4gWzAsMV0uXG4vLyBpbnRlcnBvbGF0ZShhLCBiKSh0KSB0YWtlcyBhIHBhcmFtZXRlciB0IGluIFswLDFdIGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHJhbmdlIHZhbHVlIHggaW4gW2EsYl0uXG5mdW5jdGlvbiBiaW1hcChkb21haW4sIHJhbmdlLCBpbnRlcnBvbGF0ZSkge1xuICB2YXIgZDAgPSBkb21haW5bMF0sIGQxID0gZG9tYWluWzFdLCByMCA9IHJhbmdlWzBdLCByMSA9IHJhbmdlWzFdO1xuICBpZiAoZDEgPCBkMCkgZDAgPSBub3JtYWxpemUoZDEsIGQwKSwgcjAgPSBpbnRlcnBvbGF0ZShyMSwgcjApO1xuICBlbHNlIGQwID0gbm9ybWFsaXplKGQwLCBkMSksIHIwID0gaW50ZXJwb2xhdGUocjAsIHIxKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHIwKGQwKHgpKTsgfTtcbn1cblxuZnVuY3Rpb24gcG9seW1hcChkb21haW4sIHJhbmdlLCBpbnRlcnBvbGF0ZSkge1xuICB2YXIgaiA9IE1hdGgubWluKGRvbWFpbi5sZW5ndGgsIHJhbmdlLmxlbmd0aCkgLSAxLFxuICAgICAgZCA9IG5ldyBBcnJheShqKSxcbiAgICAgIHIgPSBuZXcgQXJyYXkoaiksXG4gICAgICBpID0gLTE7XG5cbiAgLy8gUmV2ZXJzZSBkZXNjZW5kaW5nIGRvbWFpbnMuXG4gIGlmIChkb21haW5bal0gPCBkb21haW5bMF0pIHtcbiAgICBkb21haW4gPSBkb21haW4uc2xpY2UoKS5yZXZlcnNlKCk7XG4gICAgcmFuZ2UgPSByYW5nZS5zbGljZSgpLnJldmVyc2UoKTtcbiAgfVxuXG4gIHdoaWxlICgrK2kgPCBqKSB7XG4gICAgZFtpXSA9IG5vcm1hbGl6ZShkb21haW5baV0sIGRvbWFpbltpICsgMV0pO1xuICAgIHJbaV0gPSBpbnRlcnBvbGF0ZShyYW5nZVtpXSwgcmFuZ2VbaSArIDFdKTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbih4KSB7XG4gICAgdmFyIGkgPSBiaXNlY3QoZG9tYWluLCB4LCAxLCBqKSAtIDE7XG4gICAgcmV0dXJuIHJbaV0oZFtpXSh4KSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5KHNvdXJjZSwgdGFyZ2V0KSB7XG4gIHJldHVybiB0YXJnZXRcbiAgICAgIC5kb21haW4oc291cmNlLmRvbWFpbigpKVxuICAgICAgLnJhbmdlKHNvdXJjZS5yYW5nZSgpKVxuICAgICAgLmludGVycG9sYXRlKHNvdXJjZS5pbnRlcnBvbGF0ZSgpKVxuICAgICAgLmNsYW1wKHNvdXJjZS5jbGFtcCgpKVxuICAgICAgLnVua25vd24oc291cmNlLnVua25vd24oKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1lcigpIHtcbiAgdmFyIGRvbWFpbiA9IHVuaXQsXG4gICAgICByYW5nZSA9IHVuaXQsXG4gICAgICBpbnRlcnBvbGF0ZSA9IGludGVycG9sYXRlVmFsdWUsXG4gICAgICB0cmFuc2Zvcm0sXG4gICAgICB1bnRyYW5zZm9ybSxcbiAgICAgIHVua25vd24sXG4gICAgICBjbGFtcCA9IGlkZW50aXR5LFxuICAgICAgcGllY2V3aXNlLFxuICAgICAgb3V0cHV0LFxuICAgICAgaW5wdXQ7XG5cbiAgZnVuY3Rpb24gcmVzY2FsZSgpIHtcbiAgICB2YXIgbiA9IE1hdGgubWluKGRvbWFpbi5sZW5ndGgsIHJhbmdlLmxlbmd0aCk7XG4gICAgaWYgKGNsYW1wICE9PSBpZGVudGl0eSkgY2xhbXAgPSBjbGFtcGVyKGRvbWFpblswXSwgZG9tYWluW24gLSAxXSk7XG4gICAgcGllY2V3aXNlID0gbiA+IDIgPyBwb2x5bWFwIDogYmltYXA7XG4gICAgb3V0cHV0ID0gaW5wdXQgPSBudWxsO1xuICAgIHJldHVybiBzY2FsZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNjYWxlKHgpIHtcbiAgICByZXR1cm4geCA9PSBudWxsIHx8IGlzTmFOKHggPSAreCkgPyB1bmtub3duIDogKG91dHB1dCB8fCAob3V0cHV0ID0gcGllY2V3aXNlKGRvbWFpbi5tYXAodHJhbnNmb3JtKSwgcmFuZ2UsIGludGVycG9sYXRlKSkpKHRyYW5zZm9ybShjbGFtcCh4KSkpO1xuICB9XG5cbiAgc2NhbGUuaW52ZXJ0ID0gZnVuY3Rpb24oeSkge1xuICAgIHJldHVybiBjbGFtcCh1bnRyYW5zZm9ybSgoaW5wdXQgfHwgKGlucHV0ID0gcGllY2V3aXNlKHJhbmdlLCBkb21haW4ubWFwKHRyYW5zZm9ybSksIGludGVycG9sYXRlTnVtYmVyKSkpKHkpKSk7XG4gIH07XG5cbiAgc2NhbGUuZG9tYWluID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGRvbWFpbiA9IEFycmF5LmZyb20oXywgbnVtYmVyKSwgcmVzY2FsZSgpKSA6IGRvbWFpbi5zbGljZSgpO1xuICB9O1xuXG4gIHNjYWxlLnJhbmdlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJhbmdlID0gQXJyYXkuZnJvbShfKSwgcmVzY2FsZSgpKSA6IHJhbmdlLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUucmFuZ2VSb3VuZCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gcmFuZ2UgPSBBcnJheS5mcm9tKF8pLCBpbnRlcnBvbGF0ZSA9IGludGVycG9sYXRlUm91bmQsIHJlc2NhbGUoKTtcbiAgfTtcblxuICBzY2FsZS5jbGFtcCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjbGFtcCA9IF8gPyB0cnVlIDogaWRlbnRpdHksIHJlc2NhbGUoKSkgOiBjbGFtcCAhPT0gaWRlbnRpdHk7XG4gIH07XG5cbiAgc2NhbGUuaW50ZXJwb2xhdGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaW50ZXJwb2xhdGUgPSBfLCByZXNjYWxlKCkpIDogaW50ZXJwb2xhdGU7XG4gIH07XG5cbiAgc2NhbGUudW5rbm93biA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh1bmtub3duID0gXywgc2NhbGUpIDogdW5rbm93bjtcbiAgfTtcblxuICByZXR1cm4gZnVuY3Rpb24odCwgdSkge1xuICAgIHRyYW5zZm9ybSA9IHQsIHVudHJhbnNmb3JtID0gdTtcbiAgICByZXR1cm4gcmVzY2FsZSgpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb250aW51b3VzKCkge1xuICByZXR1cm4gdHJhbnNmb3JtZXIoKShpZGVudGl0eSwgaWRlbnRpdHkpO1xufVxuIiwgImltcG9ydCB7dGlja1N0ZXB9IGZyb20gXCJkMy1hcnJheVwiO1xuaW1wb3J0IHtmb3JtYXQsIGZvcm1hdFByZWZpeCwgZm9ybWF0U3BlY2lmaWVyLCBwcmVjaXNpb25GaXhlZCwgcHJlY2lzaW9uUHJlZml4LCBwcmVjaXNpb25Sb3VuZH0gZnJvbSBcImQzLWZvcm1hdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0aWNrRm9ybWF0KHN0YXJ0LCBzdG9wLCBjb3VudCwgc3BlY2lmaWVyKSB7XG4gIHZhciBzdGVwID0gdGlja1N0ZXAoc3RhcnQsIHN0b3AsIGNvdW50KSxcbiAgICAgIHByZWNpc2lvbjtcbiAgc3BlY2lmaWVyID0gZm9ybWF0U3BlY2lmaWVyKHNwZWNpZmllciA9PSBudWxsID8gXCIsZlwiIDogc3BlY2lmaWVyKTtcbiAgc3dpdGNoIChzcGVjaWZpZXIudHlwZSkge1xuICAgIGNhc2UgXCJzXCI6IHtcbiAgICAgIHZhciB2YWx1ZSA9IE1hdGgubWF4KE1hdGguYWJzKHN0YXJ0KSwgTWF0aC5hYnMoc3RvcCkpO1xuICAgICAgaWYgKHNwZWNpZmllci5wcmVjaXNpb24gPT0gbnVsbCAmJiAhaXNOYU4ocHJlY2lzaW9uID0gcHJlY2lzaW9uUHJlZml4KHN0ZXAsIHZhbHVlKSkpIHNwZWNpZmllci5wcmVjaXNpb24gPSBwcmVjaXNpb247XG4gICAgICByZXR1cm4gZm9ybWF0UHJlZml4KHNwZWNpZmllciwgdmFsdWUpO1xuICAgIH1cbiAgICBjYXNlIFwiXCI6XG4gICAgY2FzZSBcImVcIjpcbiAgICBjYXNlIFwiZ1wiOlxuICAgIGNhc2UgXCJwXCI6XG4gICAgY2FzZSBcInJcIjoge1xuICAgICAgaWYgKHNwZWNpZmllci5wcmVjaXNpb24gPT0gbnVsbCAmJiAhaXNOYU4ocHJlY2lzaW9uID0gcHJlY2lzaW9uUm91bmQoc3RlcCwgTWF0aC5tYXgoTWF0aC5hYnMoc3RhcnQpLCBNYXRoLmFicyhzdG9wKSkpKSkgc3BlY2lmaWVyLnByZWNpc2lvbiA9IHByZWNpc2lvbiAtIChzcGVjaWZpZXIudHlwZSA9PT0gXCJlXCIpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgXCJmXCI6XG4gICAgY2FzZSBcIiVcIjoge1xuICAgICAgaWYgKHNwZWNpZmllci5wcmVjaXNpb24gPT0gbnVsbCAmJiAhaXNOYU4ocHJlY2lzaW9uID0gcHJlY2lzaW9uRml4ZWQoc3RlcCkpKSBzcGVjaWZpZXIucHJlY2lzaW9uID0gcHJlY2lzaW9uIC0gKHNwZWNpZmllci50eXBlID09PSBcIiVcIikgKiAyO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBmb3JtYXQoc3BlY2lmaWVyKTtcbn1cbiIsICJpbXBvcnQge3RpY2tzLCB0aWNrSW5jcmVtZW50fSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCBjb250aW51b3VzLCB7Y29weX0gZnJvbSBcIi4vY29udGludW91cy5qc1wiO1xuaW1wb3J0IHtpbml0UmFuZ2V9IGZyb20gXCIuL2luaXQuanNcIjtcbmltcG9ydCB0aWNrRm9ybWF0IGZyb20gXCIuL3RpY2tGb3JtYXQuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmVhcmlzaChzY2FsZSkge1xuICB2YXIgZG9tYWluID0gc2NhbGUuZG9tYWluO1xuXG4gIHNjYWxlLnRpY2tzID0gZnVuY3Rpb24oY291bnQpIHtcbiAgICB2YXIgZCA9IGRvbWFpbigpO1xuICAgIHJldHVybiB0aWNrcyhkWzBdLCBkW2QubGVuZ3RoIC0gMV0sIGNvdW50ID09IG51bGwgPyAxMCA6IGNvdW50KTtcbiAgfTtcblxuICBzY2FsZS50aWNrRm9ybWF0ID0gZnVuY3Rpb24oY291bnQsIHNwZWNpZmllcikge1xuICAgIHZhciBkID0gZG9tYWluKCk7XG4gICAgcmV0dXJuIHRpY2tGb3JtYXQoZFswXSwgZFtkLmxlbmd0aCAtIDFdLCBjb3VudCA9PSBudWxsID8gMTAgOiBjb3VudCwgc3BlY2lmaWVyKTtcbiAgfTtcblxuICBzY2FsZS5uaWNlID0gZnVuY3Rpb24oY291bnQpIHtcbiAgICBpZiAoY291bnQgPT0gbnVsbCkgY291bnQgPSAxMDtcblxuICAgIHZhciBkID0gZG9tYWluKCk7XG4gICAgdmFyIGkwID0gMDtcbiAgICB2YXIgaTEgPSBkLmxlbmd0aCAtIDE7XG4gICAgdmFyIHN0YXJ0ID0gZFtpMF07XG4gICAgdmFyIHN0b3AgPSBkW2kxXTtcbiAgICB2YXIgcHJlc3RlcDtcbiAgICB2YXIgc3RlcDtcbiAgICB2YXIgbWF4SXRlciA9IDEwO1xuXG4gICAgaWYgKHN0b3AgPCBzdGFydCkge1xuICAgICAgc3RlcCA9IHN0YXJ0LCBzdGFydCA9IHN0b3AsIHN0b3AgPSBzdGVwO1xuICAgICAgc3RlcCA9IGkwLCBpMCA9IGkxLCBpMSA9IHN0ZXA7XG4gICAgfVxuICAgIFxuICAgIHdoaWxlIChtYXhJdGVyLS0gPiAwKSB7XG4gICAgICBzdGVwID0gdGlja0luY3JlbWVudChzdGFydCwgc3RvcCwgY291bnQpO1xuICAgICAgaWYgKHN0ZXAgPT09IHByZXN0ZXApIHtcbiAgICAgICAgZFtpMF0gPSBzdGFydFxuICAgICAgICBkW2kxXSA9IHN0b3BcbiAgICAgICAgcmV0dXJuIGRvbWFpbihkKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RlcCA+IDApIHtcbiAgICAgICAgc3RhcnQgPSBNYXRoLmZsb29yKHN0YXJ0IC8gc3RlcCkgKiBzdGVwO1xuICAgICAgICBzdG9wID0gTWF0aC5jZWlsKHN0b3AgLyBzdGVwKSAqIHN0ZXA7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAgPCAwKSB7XG4gICAgICAgIHN0YXJ0ID0gTWF0aC5jZWlsKHN0YXJ0ICogc3RlcCkgLyBzdGVwO1xuICAgICAgICBzdG9wID0gTWF0aC5mbG9vcihzdG9wICogc3RlcCkgLyBzdGVwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBwcmVzdGVwID0gc3RlcDtcbiAgICB9XG5cbiAgICByZXR1cm4gc2NhbGU7XG4gIH07XG5cbiAgcmV0dXJuIHNjYWxlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsaW5lYXIoKSB7XG4gIHZhciBzY2FsZSA9IGNvbnRpbnVvdXMoKTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGNvcHkoc2NhbGUsIGxpbmVhcigpKTtcbiAgfTtcblxuICBpbml0UmFuZ2UuYXBwbHkoc2NhbGUsIGFyZ3VtZW50cyk7XG5cbiAgcmV0dXJuIGxpbmVhcmlzaChzY2FsZSk7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc3BlY2lmaWVyKSB7XG4gIHZhciBuID0gc3BlY2lmaWVyLmxlbmd0aCAvIDYgfCAwLCBjb2xvcnMgPSBuZXcgQXJyYXkobiksIGkgPSAwO1xuICB3aGlsZSAoaSA8IG4pIGNvbG9yc1tpXSA9IFwiI1wiICsgc3BlY2lmaWVyLnNsaWNlKGkgKiA2LCArK2kgKiA2KTtcbiAgcmV0dXJuIGNvbG9ycztcbn1cbiIsICJpbXBvcnQgY29sb3JzIGZyb20gXCIuLi9jb2xvcnMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY29sb3JzKFwiMWY3N2I0ZmY3ZjBlMmNhMDJjZDYyNzI4OTQ2N2JkOGM1NjRiZTM3N2MyN2Y3ZjdmYmNiZDIyMTdiZWNmXCIpO1xuIiwgImltcG9ydCB7Y3ViZWhlbGl4fSBmcm9tIFwiZDMtY29sb3JcIjtcbmltcG9ydCB7aW50ZXJwb2xhdGVDdWJlaGVsaXhMb25nfSBmcm9tIFwiZDMtaW50ZXJwb2xhdGVcIjtcblxuZXhwb3J0IHZhciB3YXJtID0gaW50ZXJwb2xhdGVDdWJlaGVsaXhMb25nKGN1YmVoZWxpeCgtMTAwLCAwLjc1LCAwLjM1KSwgY3ViZWhlbGl4KDgwLCAxLjUwLCAwLjgpKTtcblxuZXhwb3J0IHZhciBjb29sID0gaW50ZXJwb2xhdGVDdWJlaGVsaXhMb25nKGN1YmVoZWxpeCgyNjAsIDAuNzUsIDAuMzUpLCBjdWJlaGVsaXgoODAsIDEuNTAsIDAuOCkpO1xuXG52YXIgYyA9IGN1YmVoZWxpeCgpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih0KSB7XG4gIGlmICh0IDwgMCB8fCB0ID4gMSkgdCAtPSBNYXRoLmZsb29yKHQpO1xuICB2YXIgdHMgPSBNYXRoLmFicyh0IC0gMC41KTtcbiAgYy5oID0gMzYwICogdCAtIDEwMDtcbiAgYy5zID0gMS41IC0gMS41ICogdHM7XG4gIGMubCA9IDAuOCAtIDAuOSAqIHRzO1xuICByZXR1cm4gYyArIFwiXCI7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gZnVuY3Rpb24gY29uc3RhbnQoKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iLCAiZXhwb3J0IHZhciBhYnMgPSBNYXRoLmFicztcbmV4cG9ydCB2YXIgYXRhbjIgPSBNYXRoLmF0YW4yO1xuZXhwb3J0IHZhciBjb3MgPSBNYXRoLmNvcztcbmV4cG9ydCB2YXIgbWF4ID0gTWF0aC5tYXg7XG5leHBvcnQgdmFyIG1pbiA9IE1hdGgubWluO1xuZXhwb3J0IHZhciBzaW4gPSBNYXRoLnNpbjtcbmV4cG9ydCB2YXIgc3FydCA9IE1hdGguc3FydDtcblxuZXhwb3J0IHZhciBlcHNpbG9uID0gMWUtMTI7XG5leHBvcnQgdmFyIHBpID0gTWF0aC5QSTtcbmV4cG9ydCB2YXIgaGFsZlBpID0gcGkgLyAyO1xuZXhwb3J0IHZhciB0YXUgPSAyICogcGk7XG5cbmV4cG9ydCBmdW5jdGlvbiBhY29zKHgpIHtcbiAgcmV0dXJuIHggPiAxID8gMCA6IHggPCAtMSA/IHBpIDogTWF0aC5hY29zKHgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNpbih4KSB7XG4gIHJldHVybiB4ID49IDEgPyBoYWxmUGkgOiB4IDw9IC0xID8gLWhhbGZQaSA6IE1hdGguYXNpbih4KTtcbn1cbiIsICJpbXBvcnQge3BhdGh9IGZyb20gXCJkMy1wYXRoXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCB7YWJzLCBhY29zLCBhc2luLCBhdGFuMiwgY29zLCBlcHNpbG9uLCBoYWxmUGksIG1heCwgbWluLCBwaSwgc2luLCBzcXJ0LCB0YXV9IGZyb20gXCIuL21hdGguanNcIjtcblxuZnVuY3Rpb24gYXJjSW5uZXJSYWRpdXMoZCkge1xuICByZXR1cm4gZC5pbm5lclJhZGl1cztcbn1cblxuZnVuY3Rpb24gYXJjT3V0ZXJSYWRpdXMoZCkge1xuICByZXR1cm4gZC5vdXRlclJhZGl1cztcbn1cblxuZnVuY3Rpb24gYXJjU3RhcnRBbmdsZShkKSB7XG4gIHJldHVybiBkLnN0YXJ0QW5nbGU7XG59XG5cbmZ1bmN0aW9uIGFyY0VuZEFuZ2xlKGQpIHtcbiAgcmV0dXJuIGQuZW5kQW5nbGU7XG59XG5cbmZ1bmN0aW9uIGFyY1BhZEFuZ2xlKGQpIHtcbiAgcmV0dXJuIGQgJiYgZC5wYWRBbmdsZTsgLy8gTm90ZTogb3B0aW9uYWwhXG59XG5cbmZ1bmN0aW9uIGludGVyc2VjdCh4MCwgeTAsIHgxLCB5MSwgeDIsIHkyLCB4MywgeTMpIHtcbiAgdmFyIHgxMCA9IHgxIC0geDAsIHkxMCA9IHkxIC0geTAsXG4gICAgICB4MzIgPSB4MyAtIHgyLCB5MzIgPSB5MyAtIHkyLFxuICAgICAgdCA9IHkzMiAqIHgxMCAtIHgzMiAqIHkxMDtcbiAgaWYgKHQgKiB0IDwgZXBzaWxvbikgcmV0dXJuO1xuICB0ID0gKHgzMiAqICh5MCAtIHkyKSAtIHkzMiAqICh4MCAtIHgyKSkgLyB0O1xuICByZXR1cm4gW3gwICsgdCAqIHgxMCwgeTAgKyB0ICogeTEwXTtcbn1cblxuLy8gQ29tcHV0ZSBwZXJwZW5kaWN1bGFyIG9mZnNldCBsaW5lIG9mIGxlbmd0aCByYy5cbi8vIGh0dHA6Ly9tYXRod29ybGQud29sZnJhbS5jb20vQ2lyY2xlLUxpbmVJbnRlcnNlY3Rpb24uaHRtbFxuZnVuY3Rpb24gY29ybmVyVGFuZ2VudHMoeDAsIHkwLCB4MSwgeTEsIHIxLCByYywgY3cpIHtcbiAgdmFyIHgwMSA9IHgwIC0geDEsXG4gICAgICB5MDEgPSB5MCAtIHkxLFxuICAgICAgbG8gPSAoY3cgPyByYyA6IC1yYykgLyBzcXJ0KHgwMSAqIHgwMSArIHkwMSAqIHkwMSksXG4gICAgICBveCA9IGxvICogeTAxLFxuICAgICAgb3kgPSAtbG8gKiB4MDEsXG4gICAgICB4MTEgPSB4MCArIG94LFxuICAgICAgeTExID0geTAgKyBveSxcbiAgICAgIHgxMCA9IHgxICsgb3gsXG4gICAgICB5MTAgPSB5MSArIG95LFxuICAgICAgeDAwID0gKHgxMSArIHgxMCkgLyAyLFxuICAgICAgeTAwID0gKHkxMSArIHkxMCkgLyAyLFxuICAgICAgZHggPSB4MTAgLSB4MTEsXG4gICAgICBkeSA9IHkxMCAtIHkxMSxcbiAgICAgIGQyID0gZHggKiBkeCArIGR5ICogZHksXG4gICAgICByID0gcjEgLSByYyxcbiAgICAgIEQgPSB4MTEgKiB5MTAgLSB4MTAgKiB5MTEsXG4gICAgICBkID0gKGR5IDwgMCA/IC0xIDogMSkgKiBzcXJ0KG1heCgwLCByICogciAqIGQyIC0gRCAqIEQpKSxcbiAgICAgIGN4MCA9IChEICogZHkgLSBkeCAqIGQpIC8gZDIsXG4gICAgICBjeTAgPSAoLUQgKiBkeCAtIGR5ICogZCkgLyBkMixcbiAgICAgIGN4MSA9IChEICogZHkgKyBkeCAqIGQpIC8gZDIsXG4gICAgICBjeTEgPSAoLUQgKiBkeCArIGR5ICogZCkgLyBkMixcbiAgICAgIGR4MCA9IGN4MCAtIHgwMCxcbiAgICAgIGR5MCA9IGN5MCAtIHkwMCxcbiAgICAgIGR4MSA9IGN4MSAtIHgwMCxcbiAgICAgIGR5MSA9IGN5MSAtIHkwMDtcblxuICAvLyBQaWNrIHRoZSBjbG9zZXIgb2YgdGhlIHR3byBpbnRlcnNlY3Rpb24gcG9pbnRzLlxuICAvLyBUT0RPIElzIHRoZXJlIGEgZmFzdGVyIHdheSB0byBkZXRlcm1pbmUgd2hpY2ggaW50ZXJzZWN0aW9uIHRvIHVzZT9cbiAgaWYgKGR4MCAqIGR4MCArIGR5MCAqIGR5MCA+IGR4MSAqIGR4MSArIGR5MSAqIGR5MSkgY3gwID0gY3gxLCBjeTAgPSBjeTE7XG5cbiAgcmV0dXJuIHtcbiAgICBjeDogY3gwLFxuICAgIGN5OiBjeTAsXG4gICAgeDAxOiAtb3gsXG4gICAgeTAxOiAtb3ksXG4gICAgeDExOiBjeDAgKiAocjEgLyByIC0gMSksXG4gICAgeTExOiBjeTAgKiAocjEgLyByIC0gMSlcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBpbm5lclJhZGl1cyA9IGFyY0lubmVyUmFkaXVzLFxuICAgICAgb3V0ZXJSYWRpdXMgPSBhcmNPdXRlclJhZGl1cyxcbiAgICAgIGNvcm5lclJhZGl1cyA9IGNvbnN0YW50KDApLFxuICAgICAgcGFkUmFkaXVzID0gbnVsbCxcbiAgICAgIHN0YXJ0QW5nbGUgPSBhcmNTdGFydEFuZ2xlLFxuICAgICAgZW5kQW5nbGUgPSBhcmNFbmRBbmdsZSxcbiAgICAgIHBhZEFuZ2xlID0gYXJjUGFkQW5nbGUsXG4gICAgICBjb250ZXh0ID0gbnVsbDtcblxuICBmdW5jdGlvbiBhcmMoKSB7XG4gICAgdmFyIGJ1ZmZlcixcbiAgICAgICAgcixcbiAgICAgICAgcjAgPSAraW5uZXJSYWRpdXMuYXBwbHkodGhpcywgYXJndW1lbnRzKSxcbiAgICAgICAgcjEgPSArb3V0ZXJSYWRpdXMuYXBwbHkodGhpcywgYXJndW1lbnRzKSxcbiAgICAgICAgYTAgPSBzdGFydEFuZ2xlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgLSBoYWxmUGksXG4gICAgICAgIGExID0gZW5kQW5nbGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSAtIGhhbGZQaSxcbiAgICAgICAgZGEgPSBhYnMoYTEgLSBhMCksXG4gICAgICAgIGN3ID0gYTEgPiBhMDtcblxuICAgIGlmICghY29udGV4dCkgY29udGV4dCA9IGJ1ZmZlciA9IHBhdGgoKTtcblxuICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBvdXRlciByYWRpdXMgaXMgYWx3YXlzIGxhcmdlciB0aGFuIHRoZSBpbm5lciByYWRpdXMuXG4gICAgaWYgKHIxIDwgcjApIHIgPSByMSwgcjEgPSByMCwgcjAgPSByO1xuXG4gICAgLy8gSXMgaXQgYSBwb2ludD9cbiAgICBpZiAoIShyMSA+IGVwc2lsb24pKSBjb250ZXh0Lm1vdmVUbygwLCAwKTtcblxuICAgIC8vIE9yIGlzIGl0IGEgY2lyY2xlIG9yIGFubnVsdXM/XG4gICAgZWxzZSBpZiAoZGEgPiB0YXUgLSBlcHNpbG9uKSB7XG4gICAgICBjb250ZXh0Lm1vdmVUbyhyMSAqIGNvcyhhMCksIHIxICogc2luKGEwKSk7XG4gICAgICBjb250ZXh0LmFyYygwLCAwLCByMSwgYTAsIGExLCAhY3cpO1xuICAgICAgaWYgKHIwID4gZXBzaWxvbikge1xuICAgICAgICBjb250ZXh0Lm1vdmVUbyhyMCAqIGNvcyhhMSksIHIwICogc2luKGExKSk7XG4gICAgICAgIGNvbnRleHQuYXJjKDAsIDAsIHIwLCBhMSwgYTAsIGN3KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPciBpcyBpdCBhIGNpcmN1bGFyIG9yIGFubnVsYXIgc2VjdG9yP1xuICAgIGVsc2Uge1xuICAgICAgdmFyIGEwMSA9IGEwLFxuICAgICAgICAgIGExMSA9IGExLFxuICAgICAgICAgIGEwMCA9IGEwLFxuICAgICAgICAgIGExMCA9IGExLFxuICAgICAgICAgIGRhMCA9IGRhLFxuICAgICAgICAgIGRhMSA9IGRhLFxuICAgICAgICAgIGFwID0gcGFkQW5nbGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSAvIDIsXG4gICAgICAgICAgcnAgPSAoYXAgPiBlcHNpbG9uKSAmJiAocGFkUmFkaXVzID8gK3BhZFJhZGl1cy5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogc3FydChyMCAqIHIwICsgcjEgKiByMSkpLFxuICAgICAgICAgIHJjID0gbWluKGFicyhyMSAtIHIwKSAvIDIsICtjb3JuZXJSYWRpdXMuYXBwbHkodGhpcywgYXJndW1lbnRzKSksXG4gICAgICAgICAgcmMwID0gcmMsXG4gICAgICAgICAgcmMxID0gcmMsXG4gICAgICAgICAgdDAsXG4gICAgICAgICAgdDE7XG5cbiAgICAgIC8vIEFwcGx5IHBhZGRpbmc/IE5vdGUgdGhhdCBzaW5jZSByMSBcdTIyNjUgcjAsIGRhMSBcdTIyNjUgZGEwLlxuICAgICAgaWYgKHJwID4gZXBzaWxvbikge1xuICAgICAgICB2YXIgcDAgPSBhc2luKHJwIC8gcjAgKiBzaW4oYXApKSxcbiAgICAgICAgICAgIHAxID0gYXNpbihycCAvIHIxICogc2luKGFwKSk7XG4gICAgICAgIGlmICgoZGEwIC09IHAwICogMikgPiBlcHNpbG9uKSBwMCAqPSAoY3cgPyAxIDogLTEpLCBhMDAgKz0gcDAsIGExMCAtPSBwMDtcbiAgICAgICAgZWxzZSBkYTAgPSAwLCBhMDAgPSBhMTAgPSAoYTAgKyBhMSkgLyAyO1xuICAgICAgICBpZiAoKGRhMSAtPSBwMSAqIDIpID4gZXBzaWxvbikgcDEgKj0gKGN3ID8gMSA6IC0xKSwgYTAxICs9IHAxLCBhMTEgLT0gcDE7XG4gICAgICAgIGVsc2UgZGExID0gMCwgYTAxID0gYTExID0gKGEwICsgYTEpIC8gMjtcbiAgICAgIH1cblxuICAgICAgdmFyIHgwMSA9IHIxICogY29zKGEwMSksXG4gICAgICAgICAgeTAxID0gcjEgKiBzaW4oYTAxKSxcbiAgICAgICAgICB4MTAgPSByMCAqIGNvcyhhMTApLFxuICAgICAgICAgIHkxMCA9IHIwICogc2luKGExMCk7XG5cbiAgICAgIC8vIEFwcGx5IHJvdW5kZWQgY29ybmVycz9cbiAgICAgIGlmIChyYyA+IGVwc2lsb24pIHtcbiAgICAgICAgdmFyIHgxMSA9IHIxICogY29zKGExMSksXG4gICAgICAgICAgICB5MTEgPSByMSAqIHNpbihhMTEpLFxuICAgICAgICAgICAgeDAwID0gcjAgKiBjb3MoYTAwKSxcbiAgICAgICAgICAgIHkwMCA9IHIwICogc2luKGEwMCksXG4gICAgICAgICAgICBvYztcblxuICAgICAgICAvLyBSZXN0cmljdCB0aGUgY29ybmVyIHJhZGl1cyBhY2NvcmRpbmcgdG8gdGhlIHNlY3RvciBhbmdsZS5cbiAgICAgICAgaWYgKGRhIDwgcGkgJiYgKG9jID0gaW50ZXJzZWN0KHgwMSwgeTAxLCB4MDAsIHkwMCwgeDExLCB5MTEsIHgxMCwgeTEwKSkpIHtcbiAgICAgICAgICB2YXIgYXggPSB4MDEgLSBvY1swXSxcbiAgICAgICAgICAgICAgYXkgPSB5MDEgLSBvY1sxXSxcbiAgICAgICAgICAgICAgYnggPSB4MTEgLSBvY1swXSxcbiAgICAgICAgICAgICAgYnkgPSB5MTEgLSBvY1sxXSxcbiAgICAgICAgICAgICAga2MgPSAxIC8gc2luKGFjb3MoKGF4ICogYnggKyBheSAqIGJ5KSAvIChzcXJ0KGF4ICogYXggKyBheSAqIGF5KSAqIHNxcnQoYnggKiBieCArIGJ5ICogYnkpKSkgLyAyKSxcbiAgICAgICAgICAgICAgbGMgPSBzcXJ0KG9jWzBdICogb2NbMF0gKyBvY1sxXSAqIG9jWzFdKTtcbiAgICAgICAgICByYzAgPSBtaW4ocmMsIChyMCAtIGxjKSAvIChrYyAtIDEpKTtcbiAgICAgICAgICByYzEgPSBtaW4ocmMsIChyMSAtIGxjKSAvIChrYyArIDEpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJcyB0aGUgc2VjdG9yIGNvbGxhcHNlZCB0byBhIGxpbmU/XG4gICAgICBpZiAoIShkYTEgPiBlcHNpbG9uKSkgY29udGV4dC5tb3ZlVG8oeDAxLCB5MDEpO1xuXG4gICAgICAvLyBEb2VzIHRoZSBzZWN0b3JcdTIwMTlzIG91dGVyIHJpbmcgaGF2ZSByb3VuZGVkIGNvcm5lcnM/XG4gICAgICBlbHNlIGlmIChyYzEgPiBlcHNpbG9uKSB7XG4gICAgICAgIHQwID0gY29ybmVyVGFuZ2VudHMoeDAwLCB5MDAsIHgwMSwgeTAxLCByMSwgcmMxLCBjdyk7XG4gICAgICAgIHQxID0gY29ybmVyVGFuZ2VudHMoeDExLCB5MTEsIHgxMCwgeTEwLCByMSwgcmMxLCBjdyk7XG5cbiAgICAgICAgY29udGV4dC5tb3ZlVG8odDAuY3ggKyB0MC54MDEsIHQwLmN5ICsgdDAueTAxKTtcblxuICAgICAgICAvLyBIYXZlIHRoZSBjb3JuZXJzIG1lcmdlZD9cbiAgICAgICAgaWYgKHJjMSA8IHJjKSBjb250ZXh0LmFyYyh0MC5jeCwgdDAuY3ksIHJjMSwgYXRhbjIodDAueTAxLCB0MC54MDEpLCBhdGFuMih0MS55MDEsIHQxLngwMSksICFjdyk7XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlLCBkcmF3IHRoZSB0d28gY29ybmVycyBhbmQgdGhlIHJpbmcuXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNvbnRleHQuYXJjKHQwLmN4LCB0MC5jeSwgcmMxLCBhdGFuMih0MC55MDEsIHQwLngwMSksIGF0YW4yKHQwLnkxMSwgdDAueDExKSwgIWN3KTtcbiAgICAgICAgICBjb250ZXh0LmFyYygwLCAwLCByMSwgYXRhbjIodDAuY3kgKyB0MC55MTEsIHQwLmN4ICsgdDAueDExKSwgYXRhbjIodDEuY3kgKyB0MS55MTEsIHQxLmN4ICsgdDEueDExKSwgIWN3KTtcbiAgICAgICAgICBjb250ZXh0LmFyYyh0MS5jeCwgdDEuY3ksIHJjMSwgYXRhbjIodDEueTExLCB0MS54MTEpLCBhdGFuMih0MS55MDEsIHQxLngwMSksICFjdyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gT3IgaXMgdGhlIG91dGVyIHJpbmcganVzdCBhIGNpcmN1bGFyIGFyYz9cbiAgICAgIGVsc2UgY29udGV4dC5tb3ZlVG8oeDAxLCB5MDEpLCBjb250ZXh0LmFyYygwLCAwLCByMSwgYTAxLCBhMTEsICFjdyk7XG5cbiAgICAgIC8vIElzIHRoZXJlIG5vIGlubmVyIHJpbmcsIGFuZCBpdFx1MjAxOXMgYSBjaXJjdWxhciBzZWN0b3I/XG4gICAgICAvLyBPciBwZXJoYXBzIGl0XHUyMDE5cyBhbiBhbm51bGFyIHNlY3RvciBjb2xsYXBzZWQgZHVlIHRvIHBhZGRpbmc/XG4gICAgICBpZiAoIShyMCA+IGVwc2lsb24pIHx8ICEoZGEwID4gZXBzaWxvbikpIGNvbnRleHQubGluZVRvKHgxMCwgeTEwKTtcblxuICAgICAgLy8gRG9lcyB0aGUgc2VjdG9yXHUyMDE5cyBpbm5lciByaW5nIChvciBwb2ludCkgaGF2ZSByb3VuZGVkIGNvcm5lcnM/XG4gICAgICBlbHNlIGlmIChyYzAgPiBlcHNpbG9uKSB7XG4gICAgICAgIHQwID0gY29ybmVyVGFuZ2VudHMoeDEwLCB5MTAsIHgxMSwgeTExLCByMCwgLXJjMCwgY3cpO1xuICAgICAgICB0MSA9IGNvcm5lclRhbmdlbnRzKHgwMSwgeTAxLCB4MDAsIHkwMCwgcjAsIC1yYzAsIGN3KTtcblxuICAgICAgICBjb250ZXh0LmxpbmVUbyh0MC5jeCArIHQwLngwMSwgdDAuY3kgKyB0MC55MDEpO1xuXG4gICAgICAgIC8vIEhhdmUgdGhlIGNvcm5lcnMgbWVyZ2VkP1xuICAgICAgICBpZiAocmMwIDwgcmMpIGNvbnRleHQuYXJjKHQwLmN4LCB0MC5jeSwgcmMwLCBhdGFuMih0MC55MDEsIHQwLngwMSksIGF0YW4yKHQxLnkwMSwgdDEueDAxKSwgIWN3KTtcblxuICAgICAgICAvLyBPdGhlcndpc2UsIGRyYXcgdGhlIHR3byBjb3JuZXJzIGFuZCB0aGUgcmluZy5cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY29udGV4dC5hcmModDAuY3gsIHQwLmN5LCByYzAsIGF0YW4yKHQwLnkwMSwgdDAueDAxKSwgYXRhbjIodDAueTExLCB0MC54MTEpLCAhY3cpO1xuICAgICAgICAgIGNvbnRleHQuYXJjKDAsIDAsIHIwLCBhdGFuMih0MC5jeSArIHQwLnkxMSwgdDAuY3ggKyB0MC54MTEpLCBhdGFuMih0MS5jeSArIHQxLnkxMSwgdDEuY3ggKyB0MS54MTEpLCBjdyk7XG4gICAgICAgICAgY29udGV4dC5hcmModDEuY3gsIHQxLmN5LCByYzAsIGF0YW4yKHQxLnkxMSwgdDEueDExKSwgYXRhbjIodDEueTAxLCB0MS54MDEpLCAhY3cpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE9yIGlzIHRoZSBpbm5lciByaW5nIGp1c3QgYSBjaXJjdWxhciBhcmM/XG4gICAgICBlbHNlIGNvbnRleHQuYXJjKDAsIDAsIHIwLCBhMTAsIGEwMCwgY3cpO1xuICAgIH1cblxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG5cbiAgICBpZiAoYnVmZmVyKSByZXR1cm4gY29udGV4dCA9IG51bGwsIGJ1ZmZlciArIFwiXCIgfHwgbnVsbDtcbiAgfVxuXG4gIGFyYy5jZW50cm9pZCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByID0gKCtpbm5lclJhZGl1cy5hcHBseSh0aGlzLCBhcmd1bWVudHMpICsgK291dGVyUmFkaXVzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIC8gMixcbiAgICAgICAgYSA9ICgrc3RhcnRBbmdsZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpICsgK2VuZEFuZ2xlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIC8gMiAtIHBpIC8gMjtcbiAgICByZXR1cm4gW2NvcyhhKSAqIHIsIHNpbihhKSAqIHJdO1xuICB9O1xuXG4gIGFyYy5pbm5lclJhZGl1cyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChpbm5lclJhZGl1cyA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBhcmMpIDogaW5uZXJSYWRpdXM7XG4gIH07XG5cbiAgYXJjLm91dGVyUmFkaXVzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG91dGVyUmFkaXVzID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGFyYykgOiBvdXRlclJhZGl1cztcbiAgfTtcblxuICBhcmMuY29ybmVyUmFkaXVzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGNvcm5lclJhZGl1cyA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBhcmMpIDogY29ybmVyUmFkaXVzO1xuICB9O1xuXG4gIGFyYy5wYWRSYWRpdXMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFkUmFkaXVzID0gXyA9PSBudWxsID8gbnVsbCA6IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBhcmMpIDogcGFkUmFkaXVzO1xuICB9O1xuXG4gIGFyYy5zdGFydEFuZ2xlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0YXJ0QW5nbGUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgYXJjKSA6IHN0YXJ0QW5nbGU7XG4gIH07XG5cbiAgYXJjLmVuZEFuZ2xlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGVuZEFuZ2xlID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGFyYykgOiBlbmRBbmdsZTtcbiAgfTtcblxuICBhcmMucGFkQW5nbGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFkQW5nbGUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgYXJjKSA6IHBhZEFuZ2xlO1xuICB9O1xuXG4gIGFyYy5jb250ZXh0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKChjb250ZXh0ID0gXyA9PSBudWxsID8gbnVsbCA6IF8pLCBhcmMpIDogY29udGV4dDtcbiAgfTtcblxuICByZXR1cm4gYXJjO1xufVxuIiwgImV4cG9ydCB2YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSBcIm9iamVjdFwiICYmIFwibGVuZ3RoXCIgaW4geFxuICAgID8geCAvLyBBcnJheSwgVHlwZWRBcnJheSwgTm9kZUxpc3QsIGFycmF5LWxpa2VcbiAgICA6IEFycmF5LmZyb20oeCk7IC8vIE1hcCwgU2V0LCBpdGVyYWJsZSwgc3RyaW5nLCBvciBhbnl0aGluZyBlbHNlXG59XG4iLCAiZnVuY3Rpb24gTGluZWFyKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cbkxpbmVhci5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IDA7XG4gIH0sXG4gIGFyZWFFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiB0aGlzLl9wb2ludCA9PT0gMSkpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgLy8gcHJvY2VlZFxuICAgICAgZGVmYXVsdDogdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSk7IGJyZWFrO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29udGV4dCkge1xuICByZXR1cm4gbmV3IExpbmVhcihjb250ZXh0KTtcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24geChwKSB7XG4gIHJldHVybiBwWzBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24geShwKSB7XG4gIHJldHVybiBwWzFdO1xufVxuIiwgImltcG9ydCB7cGF0aH0gZnJvbSBcImQzLXBhdGhcIjtcbmltcG9ydCBhcnJheSBmcm9tIFwiLi9hcnJheS5qc1wiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5pbXBvcnQgY3VydmVMaW5lYXIgZnJvbSBcIi4vY3VydmUvbGluZWFyLmpzXCI7XG5pbXBvcnQge3ggYXMgcG9pbnRYLCB5IGFzIHBvaW50WX0gZnJvbSBcIi4vcG9pbnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCwgeSkge1xuICB2YXIgZGVmaW5lZCA9IGNvbnN0YW50KHRydWUpLFxuICAgICAgY29udGV4dCA9IG51bGwsXG4gICAgICBjdXJ2ZSA9IGN1cnZlTGluZWFyLFxuICAgICAgb3V0cHV0ID0gbnVsbDtcblxuICB4ID0gdHlwZW9mIHggPT09IFwiZnVuY3Rpb25cIiA/IHggOiAoeCA9PT0gdW5kZWZpbmVkKSA/IHBvaW50WCA6IGNvbnN0YW50KHgpO1xuICB5ID0gdHlwZW9mIHkgPT09IFwiZnVuY3Rpb25cIiA/IHkgOiAoeSA9PT0gdW5kZWZpbmVkKSA/IHBvaW50WSA6IGNvbnN0YW50KHkpO1xuXG4gIGZ1bmN0aW9uIGxpbmUoZGF0YSkge1xuICAgIHZhciBpLFxuICAgICAgICBuID0gKGRhdGEgPSBhcnJheShkYXRhKSkubGVuZ3RoLFxuICAgICAgICBkLFxuICAgICAgICBkZWZpbmVkMCA9IGZhbHNlLFxuICAgICAgICBidWZmZXI7XG5cbiAgICBpZiAoY29udGV4dCA9PSBudWxsKSBvdXRwdXQgPSBjdXJ2ZShidWZmZXIgPSBwYXRoKCkpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8PSBuOyArK2kpIHtcbiAgICAgIGlmICghKGkgPCBuICYmIGRlZmluZWQoZCA9IGRhdGFbaV0sIGksIGRhdGEpKSA9PT0gZGVmaW5lZDApIHtcbiAgICAgICAgaWYgKGRlZmluZWQwID0gIWRlZmluZWQwKSBvdXRwdXQubGluZVN0YXJ0KCk7XG4gICAgICAgIGVsc2Ugb3V0cHV0LmxpbmVFbmQoKTtcbiAgICAgIH1cbiAgICAgIGlmIChkZWZpbmVkMCkgb3V0cHV0LnBvaW50KCt4KGQsIGksIGRhdGEpLCAreShkLCBpLCBkYXRhKSk7XG4gICAgfVxuXG4gICAgaWYgKGJ1ZmZlcikgcmV0dXJuIG91dHB1dCA9IG51bGwsIGJ1ZmZlciArIFwiXCIgfHwgbnVsbDtcbiAgfVxuXG4gIGxpbmUueCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh4ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGxpbmUpIDogeDtcbiAgfTtcblxuICBsaW5lLnkgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBsaW5lKSA6IHk7XG4gIH07XG5cbiAgbGluZS5kZWZpbmVkID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGRlZmluZWQgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCEhXyksIGxpbmUpIDogZGVmaW5lZDtcbiAgfTtcblxuICBsaW5lLmN1cnZlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGN1cnZlID0gXywgY29udGV4dCAhPSBudWxsICYmIChvdXRwdXQgPSBjdXJ2ZShjb250ZXh0KSksIGxpbmUpIDogY3VydmU7XG4gIH07XG5cbiAgbGluZS5jb250ZXh0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKF8gPT0gbnVsbCA/IGNvbnRleHQgPSBvdXRwdXQgPSBudWxsIDogb3V0cHV0ID0gY3VydmUoY29udGV4dCA9IF8pLCBsaW5lKSA6IGNvbnRleHQ7XG4gIH07XG5cbiAgcmV0dXJuIGxpbmU7XG59XG4iLCAiaW1wb3J0IGN1cnZlTGluZWFyIGZyb20gXCIuL2xpbmVhci5qc1wiO1xuXG5leHBvcnQgdmFyIGN1cnZlUmFkaWFsTGluZWFyID0gY3VydmVSYWRpYWwoY3VydmVMaW5lYXIpO1xuXG5mdW5jdGlvbiBSYWRpYWwoY3VydmUpIHtcbiAgdGhpcy5fY3VydmUgPSBjdXJ2ZTtcbn1cblxuUmFkaWFsLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9jdXJ2ZS5hcmVhU3RhcnQoKTtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fY3VydmUuYXJlYUVuZCgpO1xuICB9LFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2N1cnZlLmxpbmVTdGFydCgpO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9jdXJ2ZS5saW5lRW5kKCk7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbihhLCByKSB7XG4gICAgdGhpcy5fY3VydmUucG9pbnQociAqIE1hdGguc2luKGEpLCByICogLU1hdGguY29zKGEpKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3VydmVSYWRpYWwoY3VydmUpIHtcblxuICBmdW5jdGlvbiByYWRpYWwoY29udGV4dCkge1xuICAgIHJldHVybiBuZXcgUmFkaWFsKGN1cnZlKGNvbnRleHQpKTtcbiAgfVxuXG4gIHJhZGlhbC5fY3VydmUgPSBjdXJ2ZTtcblxuICByZXR1cm4gcmFkaWFsO1xufVxuIiwgImltcG9ydCBjdXJ2ZVJhZGlhbCwge2N1cnZlUmFkaWFsTGluZWFyfSBmcm9tIFwiLi9jdXJ2ZS9yYWRpYWwuanNcIjtcbmltcG9ydCBsaW5lIGZyb20gXCIuL2xpbmUuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmVSYWRpYWwobCkge1xuICB2YXIgYyA9IGwuY3VydmU7XG5cbiAgbC5hbmdsZSA9IGwueCwgZGVsZXRlIGwueDtcbiAgbC5yYWRpdXMgPSBsLnksIGRlbGV0ZSBsLnk7XG5cbiAgbC5jdXJ2ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IGMoY3VydmVSYWRpYWwoXykpIDogYygpLl9jdXJ2ZTtcbiAgfTtcblxuICByZXR1cm4gbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBsaW5lUmFkaWFsKGxpbmUoKS5jdXJ2ZShjdXJ2ZVJhZGlhbExpbmVhcikpO1xufVxuIiwgImltcG9ydCB7cGF0aH0gZnJvbSBcImQzLXBhdGhcIjtcbmltcG9ydCB7c2xpY2V9IGZyb20gXCIuLi9hcnJheS5qc1wiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuLi9jb25zdGFudC5qc1wiO1xuaW1wb3J0IHt4IGFzIHBvaW50WCwgeSBhcyBwb2ludFl9IGZyb20gXCIuLi9wb2ludC5qc1wiO1xuaW1wb3J0IHBvaW50UmFkaWFsIGZyb20gXCIuLi9wb2ludFJhZGlhbC5qc1wiO1xuXG5mdW5jdGlvbiBsaW5rU291cmNlKGQpIHtcbiAgcmV0dXJuIGQuc291cmNlO1xufVxuXG5mdW5jdGlvbiBsaW5rVGFyZ2V0KGQpIHtcbiAgcmV0dXJuIGQudGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBsaW5rKGN1cnZlKSB7XG4gIHZhciBzb3VyY2UgPSBsaW5rU291cmNlLFxuICAgICAgdGFyZ2V0ID0gbGlua1RhcmdldCxcbiAgICAgIHggPSBwb2ludFgsXG4gICAgICB5ID0gcG9pbnRZLFxuICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgZnVuY3Rpb24gbGluaygpIHtcbiAgICB2YXIgYnVmZmVyLCBhcmd2ID0gc2xpY2UuY2FsbChhcmd1bWVudHMpLCBzID0gc291cmNlLmFwcGx5KHRoaXMsIGFyZ3YpLCB0ID0gdGFyZ2V0LmFwcGx5KHRoaXMsIGFyZ3YpO1xuICAgIGlmICghY29udGV4dCkgY29udGV4dCA9IGJ1ZmZlciA9IHBhdGgoKTtcbiAgICBjdXJ2ZShjb250ZXh0LCAreC5hcHBseSh0aGlzLCAoYXJndlswXSA9IHMsIGFyZ3YpKSwgK3kuYXBwbHkodGhpcywgYXJndiksICt4LmFwcGx5KHRoaXMsIChhcmd2WzBdID0gdCwgYXJndikpLCAreS5hcHBseSh0aGlzLCBhcmd2KSk7XG4gICAgaWYgKGJ1ZmZlcikgcmV0dXJuIGNvbnRleHQgPSBudWxsLCBidWZmZXIgKyBcIlwiIHx8IG51bGw7XG4gIH1cblxuICBsaW5rLnNvdXJjZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzb3VyY2UgPSBfLCBsaW5rKSA6IHNvdXJjZTtcbiAgfTtcblxuICBsaW5rLnRhcmdldCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0YXJnZXQgPSBfLCBsaW5rKSA6IHRhcmdldDtcbiAgfTtcblxuICBsaW5rLnggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBsaW5rKSA6IHg7XG4gIH07XG5cbiAgbGluay55ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHkgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgbGluaykgOiB5O1xuICB9O1xuXG4gIGxpbmsuY29udGV4dCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICgoY29udGV4dCA9IF8gPT0gbnVsbCA/IG51bGwgOiBfKSwgbGluaykgOiBjb250ZXh0O1xuICB9O1xuXG4gIHJldHVybiBsaW5rO1xufVxuXG5mdW5jdGlvbiBjdXJ2ZUhvcml6b250YWwoY29udGV4dCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgY29udGV4dC5tb3ZlVG8oeDAsIHkwKTtcbiAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKHgwID0gKHgwICsgeDEpIC8gMiwgeTAsIHgwLCB5MSwgeDEsIHkxKTtcbn1cblxuZnVuY3Rpb24gY3VydmVWZXJ0aWNhbChjb250ZXh0LCB4MCwgeTAsIHgxLCB5MSkge1xuICBjb250ZXh0Lm1vdmVUbyh4MCwgeTApO1xuICBjb250ZXh0LmJlemllckN1cnZlVG8oeDAsIHkwID0gKHkwICsgeTEpIC8gMiwgeDEsIHkwLCB4MSwgeTEpO1xufVxuXG5mdW5jdGlvbiBjdXJ2ZVJhZGlhbChjb250ZXh0LCB4MCwgeTAsIHgxLCB5MSkge1xuICB2YXIgcDAgPSBwb2ludFJhZGlhbCh4MCwgeTApLFxuICAgICAgcDEgPSBwb2ludFJhZGlhbCh4MCwgeTAgPSAoeTAgKyB5MSkgLyAyKSxcbiAgICAgIHAyID0gcG9pbnRSYWRpYWwoeDEsIHkwKSxcbiAgICAgIHAzID0gcG9pbnRSYWRpYWwoeDEsIHkxKTtcbiAgY29udGV4dC5tb3ZlVG8ocDBbMF0sIHAwWzFdKTtcbiAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKHAxWzBdLCBwMVsxXSwgcDJbMF0sIHAyWzFdLCBwM1swXSwgcDNbMV0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlua0hvcml6b250YWwoKSB7XG4gIHJldHVybiBsaW5rKGN1cnZlSG9yaXpvbnRhbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5rVmVydGljYWwoKSB7XG4gIHJldHVybiBsaW5rKGN1cnZlVmVydGljYWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlua1JhZGlhbCgpIHtcbiAgdmFyIGwgPSBsaW5rKGN1cnZlUmFkaWFsKTtcbiAgbC5hbmdsZSA9IGwueCwgZGVsZXRlIGwueDtcbiAgbC5yYWRpdXMgPSBsLnksIGRlbGV0ZSBsLnk7XG4gIHJldHVybiBsO1xufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBwb2ludCh0aGF0LCB4LCB5KSB7XG4gIHRoYXQuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhcbiAgICAoMiAqIHRoYXQuX3gwICsgdGhhdC5feDEpIC8gMyxcbiAgICAoMiAqIHRoYXQuX3kwICsgdGhhdC5feTEpIC8gMyxcbiAgICAodGhhdC5feDAgKyAyICogdGhhdC5feDEpIC8gMyxcbiAgICAodGhhdC5feTAgKyAyICogdGhhdC5feTEpIC8gMyxcbiAgICAodGhhdC5feDAgKyA0ICogdGhhdC5feDEgKyB4KSAvIDYsXG4gICAgKHRoYXQuX3kwICsgNCAqIHRoYXQuX3kxICsgeSkgLyA2XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCYXNpcyhjb250ZXh0KSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xufVxuXG5CYXNpcy5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IDA7XG4gIH0sXG4gIGFyZWFFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSA9XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMzogcG9pbnQodGhpcywgdGhpcy5feDEsIHRoaXMuX3kxKTsgLy8gcHJvY2VlZFxuICAgICAgY2FzZSAyOiB0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MSwgdGhpcy5feTEpOyBicmVhaztcbiAgICB9XG4gICAgaWYgKHRoaXMuX2xpbmUgfHwgKHRoaXMuX2xpbmUgIT09IDAgJiYgdGhpcy5fcG9pbnQgPT09IDEpKSB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIHRoaXMuX2xpbmUgPSAxIC0gdGhpcy5fbGluZTtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB4ID0gK3gsIHkgPSAreTtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgdGhpcy5fbGluZSA/IHRoaXMuX2NvbnRleHQubGluZVRvKHgsIHkpIDogdGhpcy5fY29udGV4dC5tb3ZlVG8oeCwgeSk7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IHRoaXMuX2NvbnRleHQubGluZVRvKCg1ICogdGhpcy5feDAgKyB0aGlzLl94MSkgLyA2LCAoNSAqIHRoaXMuX3kwICsgdGhpcy5feTEpIC8gNik7IC8vIHByb2NlZWRcbiAgICAgIGRlZmF1bHQ6IHBvaW50KHRoaXMsIHgsIHkpOyBicmVhaztcbiAgICB9XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29udGV4dCkge1xuICByZXR1cm4gbmV3IEJhc2lzKGNvbnRleHQpO1xufVxuIiwgImltcG9ydCB7QmFzaXN9IGZyb20gXCIuL2Jhc2lzLmpzXCI7XG5cbmZ1bmN0aW9uIEJ1bmRsZShjb250ZXh0LCBiZXRhKSB7XG4gIHRoaXMuX2Jhc2lzID0gbmV3IEJhc2lzKGNvbnRleHQpO1xuICB0aGlzLl9iZXRhID0gYmV0YTtcbn1cblxuQnVuZGxlLnByb3RvdHlwZSA9IHtcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94ID0gW107XG4gICAgdGhpcy5feSA9IFtdO1xuICAgIHRoaXMuX2Jhc2lzLmxpbmVTdGFydCgpO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgeCA9IHRoaXMuX3gsXG4gICAgICAgIHkgPSB0aGlzLl95LFxuICAgICAgICBqID0geC5sZW5ndGggLSAxO1xuXG4gICAgaWYgKGogPiAwKSB7XG4gICAgICB2YXIgeDAgPSB4WzBdLFxuICAgICAgICAgIHkwID0geVswXSxcbiAgICAgICAgICBkeCA9IHhbal0gLSB4MCxcbiAgICAgICAgICBkeSA9IHlbal0gLSB5MCxcbiAgICAgICAgICBpID0gLTEsXG4gICAgICAgICAgdDtcblxuICAgICAgd2hpbGUgKCsraSA8PSBqKSB7XG4gICAgICAgIHQgPSBpIC8gajtcbiAgICAgICAgdGhpcy5fYmFzaXMucG9pbnQoXG4gICAgICAgICAgdGhpcy5fYmV0YSAqIHhbaV0gKyAoMSAtIHRoaXMuX2JldGEpICogKHgwICsgdCAqIGR4KSxcbiAgICAgICAgICB0aGlzLl9iZXRhICogeVtpXSArICgxIC0gdGhpcy5fYmV0YSkgKiAoeTAgKyB0ICogZHkpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5feCA9IHRoaXMuX3kgPSBudWxsO1xuICAgIHRoaXMuX2Jhc2lzLmxpbmVFbmQoKTtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB0aGlzLl94LnB1c2goK3gpO1xuICAgIHRoaXMuX3kucHVzaCgreSk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiBjdXN0b20oYmV0YSkge1xuXG4gIGZ1bmN0aW9uIGJ1bmRsZShjb250ZXh0KSB7XG4gICAgcmV0dXJuIGJldGEgPT09IDEgPyBuZXcgQmFzaXMoY29udGV4dCkgOiBuZXcgQnVuZGxlKGNvbnRleHQsIGJldGEpO1xuICB9XG5cbiAgYnVuZGxlLmJldGEgPSBmdW5jdGlvbihiZXRhKSB7XG4gICAgcmV0dXJuIGN1c3RvbSgrYmV0YSk7XG4gIH07XG5cbiAgcmV0dXJuIGJ1bmRsZTtcbn0pKDAuODUpO1xuIiwgImV4cG9ydCBkZWZhdWx0IHggPT4gKCkgPT4geDtcbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBab29tRXZlbnQodHlwZSwge1xuICBzb3VyY2VFdmVudCxcbiAgdGFyZ2V0LFxuICB0cmFuc2Zvcm0sXG4gIGRpc3BhdGNoXG59KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMsIHtcbiAgICB0eXBlOiB7dmFsdWU6IHR5cGUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0sXG4gICAgc291cmNlRXZlbnQ6IHt2YWx1ZTogc291cmNlRXZlbnQsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0sXG4gICAgdGFyZ2V0OiB7dmFsdWU6IHRhcmdldCwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlfSxcbiAgICB0cmFuc2Zvcm06IHt2YWx1ZTogdHJhbnNmb3JtLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWV9LFxuICAgIF86IHt2YWx1ZTogZGlzcGF0Y2h9XG4gIH0pO1xufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBUcmFuc2Zvcm0oaywgeCwgeSkge1xuICB0aGlzLmsgPSBrO1xuICB0aGlzLnggPSB4O1xuICB0aGlzLnkgPSB5O1xufVxuXG5UcmFuc2Zvcm0ucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogVHJhbnNmb3JtLFxuICBzY2FsZTogZnVuY3Rpb24oaykge1xuICAgIHJldHVybiBrID09PSAxID8gdGhpcyA6IG5ldyBUcmFuc2Zvcm0odGhpcy5rICogaywgdGhpcy54LCB0aGlzLnkpO1xuICB9LFxuICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICByZXR1cm4geCA9PT0gMCAmIHkgPT09IDAgPyB0aGlzIDogbmV3IFRyYW5zZm9ybSh0aGlzLmssIHRoaXMueCArIHRoaXMuayAqIHgsIHRoaXMueSArIHRoaXMuayAqIHkpO1xuICB9LFxuICBhcHBseTogZnVuY3Rpb24ocG9pbnQpIHtcbiAgICByZXR1cm4gW3BvaW50WzBdICogdGhpcy5rICsgdGhpcy54LCBwb2ludFsxXSAqIHRoaXMuayArIHRoaXMueV07XG4gIH0sXG4gIGFwcGx5WDogZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiB4ICogdGhpcy5rICsgdGhpcy54O1xuICB9LFxuICBhcHBseVk6IGZ1bmN0aW9uKHkpIHtcbiAgICByZXR1cm4geSAqIHRoaXMuayArIHRoaXMueTtcbiAgfSxcbiAgaW52ZXJ0OiBmdW5jdGlvbihsb2NhdGlvbikge1xuICAgIHJldHVybiBbKGxvY2F0aW9uWzBdIC0gdGhpcy54KSAvIHRoaXMuaywgKGxvY2F0aW9uWzFdIC0gdGhpcy55KSAvIHRoaXMua107XG4gIH0sXG4gIGludmVydFg6IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gKHggLSB0aGlzLngpIC8gdGhpcy5rO1xuICB9LFxuICBpbnZlcnRZOiBmdW5jdGlvbih5KSB7XG4gICAgcmV0dXJuICh5IC0gdGhpcy55KSAvIHRoaXMuaztcbiAgfSxcbiAgcmVzY2FsZVg6IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4geC5jb3B5KCkuZG9tYWluKHgucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRYLCB0aGlzKS5tYXAoeC5pbnZlcnQsIHgpKTtcbiAgfSxcbiAgcmVzY2FsZVk6IGZ1bmN0aW9uKHkpIHtcbiAgICByZXR1cm4geS5jb3B5KCkuZG9tYWluKHkucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRZLCB0aGlzKS5tYXAoeS5pbnZlcnQsIHkpKTtcbiAgfSxcbiAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBcInRyYW5zbGF0ZShcIiArIHRoaXMueCArIFwiLFwiICsgdGhpcy55ICsgXCIpIHNjYWxlKFwiICsgdGhpcy5rICsgXCIpXCI7XG4gIH1cbn07XG5cbmV4cG9ydCB2YXIgaWRlbnRpdHkgPSBuZXcgVHJhbnNmb3JtKDEsIDAsIDApO1xuXG50cmFuc2Zvcm0ucHJvdG90eXBlID0gVHJhbnNmb3JtLnByb3RvdHlwZTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhbnNmb3JtKG5vZGUpIHtcbiAgd2hpbGUgKCFub2RlLl9fem9vbSkgaWYgKCEobm9kZSA9IG5vZGUucGFyZW50Tm9kZSkpIHJldHVybiBpZGVudGl0eTtcbiAgcmV0dXJuIG5vZGUuX196b29tO1xufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBub3Byb3BhZ2F0aW9uKGV2ZW50KSB7XG4gIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihldmVudCkge1xuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbn1cbiIsICJpbXBvcnQge2Rpc3BhdGNofSBmcm9tIFwiZDMtZGlzcGF0Y2hcIjtcbmltcG9ydCB7ZHJhZ0Rpc2FibGUsIGRyYWdFbmFibGV9IGZyb20gXCJkMy1kcmFnXCI7XG5pbXBvcnQge2ludGVycG9sYXRlWm9vbX0gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5pbXBvcnQge3NlbGVjdCwgcG9pbnRlcn0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHtpbnRlcnJ1cHR9IGZyb20gXCJkMy10cmFuc2l0aW9uXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBab29tRXZlbnQgZnJvbSBcIi4vZXZlbnQuanNcIjtcbmltcG9ydCB7VHJhbnNmb3JtLCBpZGVudGl0eX0gZnJvbSBcIi4vdHJhbnNmb3JtLmpzXCI7XG5pbXBvcnQgbm9ldmVudCwge25vcHJvcGFnYXRpb259IGZyb20gXCIuL25vZXZlbnQuanNcIjtcblxuLy8gSWdub3JlIHJpZ2h0LWNsaWNrLCBzaW5jZSB0aGF0IHNob3VsZCBvcGVuIHRoZSBjb250ZXh0IG1lbnUuXG4vLyBleGNlcHQgZm9yIHBpbmNoLXRvLXpvb20sIHdoaWNoIGlzIHNlbnQgYXMgYSB3aGVlbCtjdHJsS2V5IGV2ZW50XG5mdW5jdGlvbiBkZWZhdWx0RmlsdGVyKGV2ZW50KSB7XG4gIHJldHVybiAoIWV2ZW50LmN0cmxLZXkgfHwgZXZlbnQudHlwZSA9PT0gJ3doZWVsJykgJiYgIWV2ZW50LmJ1dHRvbjtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdEV4dGVudCgpIHtcbiAgdmFyIGUgPSB0aGlzO1xuICBpZiAoZSBpbnN0YW5jZW9mIFNWR0VsZW1lbnQpIHtcbiAgICBlID0gZS5vd25lclNWR0VsZW1lbnQgfHwgZTtcbiAgICBpZiAoZS5oYXNBdHRyaWJ1dGUoXCJ2aWV3Qm94XCIpKSB7XG4gICAgICBlID0gZS52aWV3Qm94LmJhc2VWYWw7XG4gICAgICByZXR1cm4gW1tlLngsIGUueV0sIFtlLnggKyBlLndpZHRoLCBlLnkgKyBlLmhlaWdodF1dO1xuICAgIH1cbiAgICByZXR1cm4gW1swLCAwXSwgW2Uud2lkdGguYmFzZVZhbC52YWx1ZSwgZS5oZWlnaHQuYmFzZVZhbC52YWx1ZV1dO1xuICB9XG4gIHJldHVybiBbWzAsIDBdLCBbZS5jbGllbnRXaWR0aCwgZS5jbGllbnRIZWlnaHRdXTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFRyYW5zZm9ybSgpIHtcbiAgcmV0dXJuIHRoaXMuX196b29tIHx8IGlkZW50aXR5O1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0V2hlZWxEZWx0YShldmVudCkge1xuICByZXR1cm4gLWV2ZW50LmRlbHRhWSAqIChldmVudC5kZWx0YU1vZGUgPT09IDEgPyAwLjA1IDogZXZlbnQuZGVsdGFNb2RlID8gMSA6IDAuMDAyKSAqIChldmVudC5jdHJsS2V5ID8gMTAgOiAxKTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFRvdWNoYWJsZSgpIHtcbiAgcmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyB8fCAoXCJvbnRvdWNoc3RhcnRcIiBpbiB0aGlzKTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdENvbnN0cmFpbih0cmFuc2Zvcm0sIGV4dGVudCwgdHJhbnNsYXRlRXh0ZW50KSB7XG4gIHZhciBkeDAgPSB0cmFuc2Zvcm0uaW52ZXJ0WChleHRlbnRbMF1bMF0pIC0gdHJhbnNsYXRlRXh0ZW50WzBdWzBdLFxuICAgICAgZHgxID0gdHJhbnNmb3JtLmludmVydFgoZXh0ZW50WzFdWzBdKSAtIHRyYW5zbGF0ZUV4dGVudFsxXVswXSxcbiAgICAgIGR5MCA9IHRyYW5zZm9ybS5pbnZlcnRZKGV4dGVudFswXVsxXSkgLSB0cmFuc2xhdGVFeHRlbnRbMF1bMV0sXG4gICAgICBkeTEgPSB0cmFuc2Zvcm0uaW52ZXJ0WShleHRlbnRbMV1bMV0pIC0gdHJhbnNsYXRlRXh0ZW50WzFdWzFdO1xuICByZXR1cm4gdHJhbnNmb3JtLnRyYW5zbGF0ZShcbiAgICBkeDEgPiBkeDAgPyAoZHgwICsgZHgxKSAvIDIgOiBNYXRoLm1pbigwLCBkeDApIHx8IE1hdGgubWF4KDAsIGR4MSksXG4gICAgZHkxID4gZHkwID8gKGR5MCArIGR5MSkgLyAyIDogTWF0aC5taW4oMCwgZHkwKSB8fCBNYXRoLm1heCgwLCBkeTEpXG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgZmlsdGVyID0gZGVmYXVsdEZpbHRlcixcbiAgICAgIGV4dGVudCA9IGRlZmF1bHRFeHRlbnQsXG4gICAgICBjb25zdHJhaW4gPSBkZWZhdWx0Q29uc3RyYWluLFxuICAgICAgd2hlZWxEZWx0YSA9IGRlZmF1bHRXaGVlbERlbHRhLFxuICAgICAgdG91Y2hhYmxlID0gZGVmYXVsdFRvdWNoYWJsZSxcbiAgICAgIHNjYWxlRXh0ZW50ID0gWzAsIEluZmluaXR5XSxcbiAgICAgIHRyYW5zbGF0ZUV4dGVudCA9IFtbLUluZmluaXR5LCAtSW5maW5pdHldLCBbSW5maW5pdHksIEluZmluaXR5XV0sXG4gICAgICBkdXJhdGlvbiA9IDI1MCxcbiAgICAgIGludGVycG9sYXRlID0gaW50ZXJwb2xhdGVab29tLFxuICAgICAgbGlzdGVuZXJzID0gZGlzcGF0Y2goXCJzdGFydFwiLCBcInpvb21cIiwgXCJlbmRcIiksXG4gICAgICB0b3VjaHN0YXJ0aW5nLFxuICAgICAgdG91Y2hmaXJzdCxcbiAgICAgIHRvdWNoZW5kaW5nLFxuICAgICAgdG91Y2hEZWxheSA9IDUwMCxcbiAgICAgIHdoZWVsRGVsYXkgPSAxNTAsXG4gICAgICBjbGlja0Rpc3RhbmNlMiA9IDAsXG4gICAgICB0YXBEaXN0YW5jZSA9IDEwO1xuXG4gIGZ1bmN0aW9uIHpvb20oc2VsZWN0aW9uKSB7XG4gICAgc2VsZWN0aW9uXG4gICAgICAgIC5wcm9wZXJ0eShcIl9fem9vbVwiLCBkZWZhdWx0VHJhbnNmb3JtKVxuICAgICAgICAub24oXCJ3aGVlbC56b29tXCIsIHdoZWVsZWQpXG4gICAgICAgIC5vbihcIm1vdXNlZG93bi56b29tXCIsIG1vdXNlZG93bmVkKVxuICAgICAgICAub24oXCJkYmxjbGljay56b29tXCIsIGRibGNsaWNrZWQpXG4gICAgICAuZmlsdGVyKHRvdWNoYWJsZSlcbiAgICAgICAgLm9uKFwidG91Y2hzdGFydC56b29tXCIsIHRvdWNoc3RhcnRlZClcbiAgICAgICAgLm9uKFwidG91Y2htb3ZlLnpvb21cIiwgdG91Y2htb3ZlZClcbiAgICAgICAgLm9uKFwidG91Y2hlbmQuem9vbSB0b3VjaGNhbmNlbC56b29tXCIsIHRvdWNoZW5kZWQpXG4gICAgICAgIC5zdHlsZShcIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvclwiLCBcInJnYmEoMCwwLDAsMClcIik7XG4gIH1cblxuICB6b29tLnRyYW5zZm9ybSA9IGZ1bmN0aW9uKGNvbGxlY3Rpb24sIHRyYW5zZm9ybSwgcG9pbnQsIGV2ZW50KSB7XG4gICAgdmFyIHNlbGVjdGlvbiA9IGNvbGxlY3Rpb24uc2VsZWN0aW9uID8gY29sbGVjdGlvbi5zZWxlY3Rpb24oKSA6IGNvbGxlY3Rpb247XG4gICAgc2VsZWN0aW9uLnByb3BlcnR5KFwiX196b29tXCIsIGRlZmF1bHRUcmFuc2Zvcm0pO1xuICAgIGlmIChjb2xsZWN0aW9uICE9PSBzZWxlY3Rpb24pIHtcbiAgICAgIHNjaGVkdWxlKGNvbGxlY3Rpb24sIHRyYW5zZm9ybSwgcG9pbnQsIGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZWN0aW9uLmludGVycnVwdCgpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgIGdlc3R1cmUodGhpcywgYXJndW1lbnRzKVxuICAgICAgICAgIC5ldmVudChldmVudClcbiAgICAgICAgICAuc3RhcnQoKVxuICAgICAgICAgIC56b29tKG51bGwsIHR5cGVvZiB0cmFuc2Zvcm0gPT09IFwiZnVuY3Rpb25cIiA/IHRyYW5zZm9ybS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogdHJhbnNmb3JtKVxuICAgICAgICAgIC5lbmQoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICB6b29tLnNjYWxlQnkgPSBmdW5jdGlvbihzZWxlY3Rpb24sIGssIHAsIGV2ZW50KSB7XG4gICAgem9vbS5zY2FsZVRvKHNlbGVjdGlvbiwgZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgazAgPSB0aGlzLl9fem9vbS5rLFxuICAgICAgICAgIGsxID0gdHlwZW9mIGsgPT09IFwiZnVuY3Rpb25cIiA/IGsuYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IGs7XG4gICAgICByZXR1cm4gazAgKiBrMTtcbiAgICB9LCBwLCBldmVudCk7XG4gIH07XG5cbiAgem9vbS5zY2FsZVRvID0gZnVuY3Rpb24oc2VsZWN0aW9uLCBrLCBwLCBldmVudCkge1xuICAgIHpvb20udHJhbnNmb3JtKHNlbGVjdGlvbiwgZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZSA9IGV4dGVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpLFxuICAgICAgICAgIHQwID0gdGhpcy5fX3pvb20sXG4gICAgICAgICAgcDAgPSBwID09IG51bGwgPyBjZW50cm9pZChlKSA6IHR5cGVvZiBwID09PSBcImZ1bmN0aW9uXCIgPyBwLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiBwLFxuICAgICAgICAgIHAxID0gdDAuaW52ZXJ0KHAwKSxcbiAgICAgICAgICBrMSA9IHR5cGVvZiBrID09PSBcImZ1bmN0aW9uXCIgPyBrLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiBrO1xuICAgICAgcmV0dXJuIGNvbnN0cmFpbih0cmFuc2xhdGUoc2NhbGUodDAsIGsxKSwgcDAsIHAxKSwgZSwgdHJhbnNsYXRlRXh0ZW50KTtcbiAgICB9LCBwLCBldmVudCk7XG4gIH07XG5cbiAgem9vbS50cmFuc2xhdGVCeSA9IGZ1bmN0aW9uKHNlbGVjdGlvbiwgeCwgeSwgZXZlbnQpIHtcbiAgICB6b29tLnRyYW5zZm9ybShzZWxlY3Rpb24sIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGNvbnN0cmFpbih0aGlzLl9fem9vbS50cmFuc2xhdGUoXG4gICAgICAgIHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyB4LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiB4LFxuICAgICAgICB0eXBlb2YgeSA9PT0gXCJmdW5jdGlvblwiID8geS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogeVxuICAgICAgKSwgZXh0ZW50LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHRyYW5zbGF0ZUV4dGVudCk7XG4gICAgfSwgbnVsbCwgZXZlbnQpO1xuICB9O1xuXG4gIHpvb20udHJhbnNsYXRlVG8gPSBmdW5jdGlvbihzZWxlY3Rpb24sIHgsIHksIHAsIGV2ZW50KSB7XG4gICAgem9vbS50cmFuc2Zvcm0oc2VsZWN0aW9uLCBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBlID0gZXh0ZW50LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksXG4gICAgICAgICAgdCA9IHRoaXMuX196b29tLFxuICAgICAgICAgIHAwID0gcCA9PSBudWxsID8gY2VudHJvaWQoZSkgOiB0eXBlb2YgcCA9PT0gXCJmdW5jdGlvblwiID8gcC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogcDtcbiAgICAgIHJldHVybiBjb25zdHJhaW4oaWRlbnRpdHkudHJhbnNsYXRlKHAwWzBdLCBwMFsxXSkuc2NhbGUodC5rKS50cmFuc2xhdGUoXG4gICAgICAgIHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyAteC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogLXgsXG4gICAgICAgIHR5cGVvZiB5ID09PSBcImZ1bmN0aW9uXCIgPyAteS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogLXlcbiAgICAgICksIGUsIHRyYW5zbGF0ZUV4dGVudCk7XG4gICAgfSwgcCwgZXZlbnQpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHNjYWxlKHRyYW5zZm9ybSwgaykge1xuICAgIGsgPSBNYXRoLm1heChzY2FsZUV4dGVudFswXSwgTWF0aC5taW4oc2NhbGVFeHRlbnRbMV0sIGspKTtcbiAgICByZXR1cm4gayA9PT0gdHJhbnNmb3JtLmsgPyB0cmFuc2Zvcm0gOiBuZXcgVHJhbnNmb3JtKGssIHRyYW5zZm9ybS54LCB0cmFuc2Zvcm0ueSk7XG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2xhdGUodHJhbnNmb3JtLCBwMCwgcDEpIHtcbiAgICB2YXIgeCA9IHAwWzBdIC0gcDFbMF0gKiB0cmFuc2Zvcm0uaywgeSA9IHAwWzFdIC0gcDFbMV0gKiB0cmFuc2Zvcm0uaztcbiAgICByZXR1cm4geCA9PT0gdHJhbnNmb3JtLnggJiYgeSA9PT0gdHJhbnNmb3JtLnkgPyB0cmFuc2Zvcm0gOiBuZXcgVHJhbnNmb3JtKHRyYW5zZm9ybS5rLCB4LCB5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNlbnRyb2lkKGV4dGVudCkge1xuICAgIHJldHVybiBbKCtleHRlbnRbMF1bMF0gKyArZXh0ZW50WzFdWzBdKSAvIDIsICgrZXh0ZW50WzBdWzFdICsgK2V4dGVudFsxXVsxXSkgLyAyXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNjaGVkdWxlKHRyYW5zaXRpb24sIHRyYW5zZm9ybSwgcG9pbnQsIGV2ZW50KSB7XG4gICAgdHJhbnNpdGlvblxuICAgICAgICAub24oXCJzdGFydC56b29tXCIsIGZ1bmN0aW9uKCkgeyBnZXN0dXJlKHRoaXMsIGFyZ3VtZW50cykuZXZlbnQoZXZlbnQpLnN0YXJ0KCk7IH0pXG4gICAgICAgIC5vbihcImludGVycnVwdC56b29tIGVuZC56b29tXCIsIGZ1bmN0aW9uKCkgeyBnZXN0dXJlKHRoaXMsIGFyZ3VtZW50cykuZXZlbnQoZXZlbnQpLmVuZCgpOyB9KVxuICAgICAgICAudHdlZW4oXCJ6b29tXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciB0aGF0ID0gdGhpcyxcbiAgICAgICAgICAgICAgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgICAgICAgZyA9IGdlc3R1cmUodGhhdCwgYXJncykuZXZlbnQoZXZlbnQpLFxuICAgICAgICAgICAgICBlID0gZXh0ZW50LmFwcGx5KHRoYXQsIGFyZ3MpLFxuICAgICAgICAgICAgICBwID0gcG9pbnQgPT0gbnVsbCA/IGNlbnRyb2lkKGUpIDogdHlwZW9mIHBvaW50ID09PSBcImZ1bmN0aW9uXCIgPyBwb2ludC5hcHBseSh0aGF0LCBhcmdzKSA6IHBvaW50LFxuICAgICAgICAgICAgICB3ID0gTWF0aC5tYXgoZVsxXVswXSAtIGVbMF1bMF0sIGVbMV1bMV0gLSBlWzBdWzFdKSxcbiAgICAgICAgICAgICAgYSA9IHRoYXQuX196b29tLFxuICAgICAgICAgICAgICBiID0gdHlwZW9mIHRyYW5zZm9ybSA9PT0gXCJmdW5jdGlvblwiID8gdHJhbnNmb3JtLmFwcGx5KHRoYXQsIGFyZ3MpIDogdHJhbnNmb3JtLFxuICAgICAgICAgICAgICBpID0gaW50ZXJwb2xhdGUoYS5pbnZlcnQocCkuY29uY2F0KHcgLyBhLmspLCBiLmludmVydChwKS5jb25jYXQodyAvIGIuaykpO1xuICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICAgICAgICBpZiAodCA9PT0gMSkgdCA9IGI7IC8vIEF2b2lkIHJvdW5kaW5nIGVycm9yIG9uIGVuZC5cbiAgICAgICAgICAgIGVsc2UgeyB2YXIgbCA9IGkodCksIGsgPSB3IC8gbFsyXTsgdCA9IG5ldyBUcmFuc2Zvcm0oaywgcFswXSAtIGxbMF0gKiBrLCBwWzFdIC0gbFsxXSAqIGspOyB9XG4gICAgICAgICAgICBnLnpvb20obnVsbCwgdCk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXN0dXJlKHRoYXQsIGFyZ3MsIGNsZWFuKSB7XG4gICAgcmV0dXJuICghY2xlYW4gJiYgdGhhdC5fX3pvb21pbmcpIHx8IG5ldyBHZXN0dXJlKHRoYXQsIGFyZ3MpO1xuICB9XG5cbiAgZnVuY3Rpb24gR2VzdHVyZSh0aGF0LCBhcmdzKSB7XG4gICAgdGhpcy50aGF0ID0gdGhhdDtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIHRoaXMuYWN0aXZlID0gMDtcbiAgICB0aGlzLnNvdXJjZUV2ZW50ID0gbnVsbDtcbiAgICB0aGlzLmV4dGVudCA9IGV4dGVudC5hcHBseSh0aGF0LCBhcmdzKTtcbiAgICB0aGlzLnRhcHMgPSAwO1xuICB9XG5cbiAgR2VzdHVyZS5wcm90b3R5cGUgPSB7XG4gICAgZXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQpIHRoaXMuc291cmNlRXZlbnQgPSBldmVudDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgc3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCsrdGhpcy5hY3RpdmUgPT09IDEpIHtcbiAgICAgICAgdGhpcy50aGF0Ll9fem9vbWluZyA9IHRoaXM7XG4gICAgICAgIHRoaXMuZW1pdChcInN0YXJ0XCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICB6b29tOiBmdW5jdGlvbihrZXksIHRyYW5zZm9ybSkge1xuICAgICAgaWYgKHRoaXMubW91c2UgJiYga2V5ICE9PSBcIm1vdXNlXCIpIHRoaXMubW91c2VbMV0gPSB0cmFuc2Zvcm0uaW52ZXJ0KHRoaXMubW91c2VbMF0pO1xuICAgICAgaWYgKHRoaXMudG91Y2gwICYmIGtleSAhPT0gXCJ0b3VjaFwiKSB0aGlzLnRvdWNoMFsxXSA9IHRyYW5zZm9ybS5pbnZlcnQodGhpcy50b3VjaDBbMF0pO1xuICAgICAgaWYgKHRoaXMudG91Y2gxICYmIGtleSAhPT0gXCJ0b3VjaFwiKSB0aGlzLnRvdWNoMVsxXSA9IHRyYW5zZm9ybS5pbnZlcnQodGhpcy50b3VjaDFbMF0pO1xuICAgICAgdGhpcy50aGF0Ll9fem9vbSA9IHRyYW5zZm9ybTtcbiAgICAgIHRoaXMuZW1pdChcInpvb21cIik7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIGVuZDogZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoLS10aGlzLmFjdGl2ZSA9PT0gMCkge1xuICAgICAgICBkZWxldGUgdGhpcy50aGF0Ll9fem9vbWluZztcbiAgICAgICAgdGhpcy5lbWl0KFwiZW5kXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBlbWl0OiBmdW5jdGlvbih0eXBlKSB7XG4gICAgICB2YXIgZCA9IHNlbGVjdCh0aGlzLnRoYXQpLmRhdHVtKCk7XG4gICAgICBsaXN0ZW5lcnMuY2FsbChcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdGhpcy50aGF0LFxuICAgICAgICBuZXcgWm9vbUV2ZW50KHR5cGUsIHtcbiAgICAgICAgICBzb3VyY2VFdmVudDogdGhpcy5zb3VyY2VFdmVudCxcbiAgICAgICAgICB0YXJnZXQ6IHpvb20sXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICB0cmFuc2Zvcm06IHRoaXMudGhhdC5fX3pvb20sXG4gICAgICAgICAgZGlzcGF0Y2g6IGxpc3RlbmVyc1xuICAgICAgICB9KSxcbiAgICAgICAgZFxuICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gd2hlZWxlZChldmVudCwgLi4uYXJncykge1xuICAgIGlmICghZmlsdGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIHJldHVybjtcbiAgICB2YXIgZyA9IGdlc3R1cmUodGhpcywgYXJncykuZXZlbnQoZXZlbnQpLFxuICAgICAgICB0ID0gdGhpcy5fX3pvb20sXG4gICAgICAgIGsgPSBNYXRoLm1heChzY2FsZUV4dGVudFswXSwgTWF0aC5taW4oc2NhbGVFeHRlbnRbMV0sIHQuayAqIE1hdGgucG93KDIsIHdoZWVsRGVsdGEuYXBwbHkodGhpcywgYXJndW1lbnRzKSkpKSxcbiAgICAgICAgcCA9IHBvaW50ZXIoZXZlbnQpO1xuXG4gICAgLy8gSWYgdGhlIG1vdXNlIGlzIGluIHRoZSBzYW1lIGxvY2F0aW9uIGFzIGJlZm9yZSwgcmV1c2UgaXQuXG4gICAgLy8gSWYgdGhlcmUgd2VyZSByZWNlbnQgd2hlZWwgZXZlbnRzLCByZXNldCB0aGUgd2hlZWwgaWRsZSB0aW1lb3V0LlxuICAgIGlmIChnLndoZWVsKSB7XG4gICAgICBpZiAoZy5tb3VzZVswXVswXSAhPT0gcFswXSB8fCBnLm1vdXNlWzBdWzFdICE9PSBwWzFdKSB7XG4gICAgICAgIGcubW91c2VbMV0gPSB0LmludmVydChnLm1vdXNlWzBdID0gcCk7XG4gICAgICB9XG4gICAgICBjbGVhclRpbWVvdXQoZy53aGVlbCk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhpcyB3aGVlbCBldmVudCB3b25cdTIwMTl0IHRyaWdnZXIgYSB0cmFuc2Zvcm0gY2hhbmdlLCBpZ25vcmUgaXQuXG4gICAgZWxzZSBpZiAodC5rID09PSBrKSByZXR1cm47XG5cbiAgICAvLyBPdGhlcndpc2UsIGNhcHR1cmUgdGhlIG1vdXNlIHBvaW50IGFuZCBsb2NhdGlvbiBhdCB0aGUgc3RhcnQuXG4gICAgZWxzZSB7XG4gICAgICBnLm1vdXNlID0gW3AsIHQuaW52ZXJ0KHApXTtcbiAgICAgIGludGVycnVwdCh0aGlzKTtcbiAgICAgIGcuc3RhcnQoKTtcbiAgICB9XG5cbiAgICBub2V2ZW50KGV2ZW50KTtcbiAgICBnLndoZWVsID0gc2V0VGltZW91dCh3aGVlbGlkbGVkLCB3aGVlbERlbGF5KTtcbiAgICBnLnpvb20oXCJtb3VzZVwiLCBjb25zdHJhaW4odHJhbnNsYXRlKHNjYWxlKHQsIGspLCBnLm1vdXNlWzBdLCBnLm1vdXNlWzFdKSwgZy5leHRlbnQsIHRyYW5zbGF0ZUV4dGVudCkpO1xuXG4gICAgZnVuY3Rpb24gd2hlZWxpZGxlZCgpIHtcbiAgICAgIGcud2hlZWwgPSBudWxsO1xuICAgICAgZy5lbmQoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBtb3VzZWRvd25lZChldmVudCwgLi4uYXJncykge1xuICAgIGlmICh0b3VjaGVuZGluZyB8fCAhZmlsdGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIHJldHVybjtcbiAgICB2YXIgZyA9IGdlc3R1cmUodGhpcywgYXJncywgdHJ1ZSkuZXZlbnQoZXZlbnQpLFxuICAgICAgICB2ID0gc2VsZWN0KGV2ZW50LnZpZXcpLm9uKFwibW91c2Vtb3ZlLnpvb21cIiwgbW91c2Vtb3ZlZCwgdHJ1ZSkub24oXCJtb3VzZXVwLnpvb21cIiwgbW91c2V1cHBlZCwgdHJ1ZSksXG4gICAgICAgIHAgPSBwb2ludGVyKGV2ZW50LCBjdXJyZW50VGFyZ2V0KSxcbiAgICAgICAgY3VycmVudFRhcmdldCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQsXG4gICAgICAgIHgwID0gZXZlbnQuY2xpZW50WCxcbiAgICAgICAgeTAgPSBldmVudC5jbGllbnRZO1xuXG4gICAgZHJhZ0Rpc2FibGUoZXZlbnQudmlldyk7XG4gICAgbm9wcm9wYWdhdGlvbihldmVudCk7XG4gICAgZy5tb3VzZSA9IFtwLCB0aGlzLl9fem9vbS5pbnZlcnQocCldO1xuICAgIGludGVycnVwdCh0aGlzKTtcbiAgICBnLnN0YXJ0KCk7XG5cbiAgICBmdW5jdGlvbiBtb3VzZW1vdmVkKGV2ZW50KSB7XG4gICAgICBub2V2ZW50KGV2ZW50KTtcbiAgICAgIGlmICghZy5tb3ZlZCkge1xuICAgICAgICB2YXIgZHggPSBldmVudC5jbGllbnRYIC0geDAsIGR5ID0gZXZlbnQuY2xpZW50WSAtIHkwO1xuICAgICAgICBnLm1vdmVkID0gZHggKiBkeCArIGR5ICogZHkgPiBjbGlja0Rpc3RhbmNlMjtcbiAgICAgIH1cbiAgICAgIGcuZXZlbnQoZXZlbnQpXG4gICAgICAgLnpvb20oXCJtb3VzZVwiLCBjb25zdHJhaW4odHJhbnNsYXRlKGcudGhhdC5fX3pvb20sIGcubW91c2VbMF0gPSBwb2ludGVyKGV2ZW50LCBjdXJyZW50VGFyZ2V0KSwgZy5tb3VzZVsxXSksIGcuZXh0ZW50LCB0cmFuc2xhdGVFeHRlbnQpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb3VzZXVwcGVkKGV2ZW50KSB7XG4gICAgICB2Lm9uKFwibW91c2Vtb3ZlLnpvb20gbW91c2V1cC56b29tXCIsIG51bGwpO1xuICAgICAgZHJhZ0VuYWJsZShldmVudC52aWV3LCBnLm1vdmVkKTtcbiAgICAgIG5vZXZlbnQoZXZlbnQpO1xuICAgICAgZy5ldmVudChldmVudCkuZW5kKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGJsY2xpY2tlZChldmVudCwgLi4uYXJncykge1xuICAgIGlmICghZmlsdGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIHJldHVybjtcbiAgICB2YXIgdDAgPSB0aGlzLl9fem9vbSxcbiAgICAgICAgcDAgPSBwb2ludGVyKGV2ZW50LmNoYW5nZWRUb3VjaGVzID8gZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0gOiBldmVudCwgdGhpcyksXG4gICAgICAgIHAxID0gdDAuaW52ZXJ0KHAwKSxcbiAgICAgICAgazEgPSB0MC5rICogKGV2ZW50LnNoaWZ0S2V5ID8gMC41IDogMiksXG4gICAgICAgIHQxID0gY29uc3RyYWluKHRyYW5zbGF0ZShzY2FsZSh0MCwgazEpLCBwMCwgcDEpLCBleHRlbnQuYXBwbHkodGhpcywgYXJncyksIHRyYW5zbGF0ZUV4dGVudCk7XG5cbiAgICBub2V2ZW50KGV2ZW50KTtcbiAgICBpZiAoZHVyYXRpb24gPiAwKSBzZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKGR1cmF0aW9uKS5jYWxsKHNjaGVkdWxlLCB0MSwgcDAsIGV2ZW50KTtcbiAgICBlbHNlIHNlbGVjdCh0aGlzKS5jYWxsKHpvb20udHJhbnNmb3JtLCB0MSwgcDAsIGV2ZW50KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvdWNoc3RhcnRlZChldmVudCwgLi4uYXJncykge1xuICAgIGlmICghZmlsdGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIHJldHVybjtcbiAgICB2YXIgdG91Y2hlcyA9IGV2ZW50LnRvdWNoZXMsXG4gICAgICAgIG4gPSB0b3VjaGVzLmxlbmd0aCxcbiAgICAgICAgZyA9IGdlc3R1cmUodGhpcywgYXJncywgZXZlbnQuY2hhbmdlZFRvdWNoZXMubGVuZ3RoID09PSBuKS5ldmVudChldmVudCksXG4gICAgICAgIHN0YXJ0ZWQsIGksIHQsIHA7XG5cbiAgICBub3Byb3BhZ2F0aW9uKGV2ZW50KTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICB0ID0gdG91Y2hlc1tpXSwgcCA9IHBvaW50ZXIodCwgdGhpcyk7XG4gICAgICBwID0gW3AsIHRoaXMuX196b29tLmludmVydChwKSwgdC5pZGVudGlmaWVyXTtcbiAgICAgIGlmICghZy50b3VjaDApIGcudG91Y2gwID0gcCwgc3RhcnRlZCA9IHRydWUsIGcudGFwcyA9IDEgKyAhIXRvdWNoc3RhcnRpbmc7XG4gICAgICBlbHNlIGlmICghZy50b3VjaDEgJiYgZy50b3VjaDBbMl0gIT09IHBbMl0pIGcudG91Y2gxID0gcCwgZy50YXBzID0gMDtcbiAgICB9XG5cbiAgICBpZiAodG91Y2hzdGFydGluZykgdG91Y2hzdGFydGluZyA9IGNsZWFyVGltZW91dCh0b3VjaHN0YXJ0aW5nKTtcblxuICAgIGlmIChzdGFydGVkKSB7XG4gICAgICBpZiAoZy50YXBzIDwgMikgdG91Y2hmaXJzdCA9IHBbMF0sIHRvdWNoc3RhcnRpbmcgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB0b3VjaHN0YXJ0aW5nID0gbnVsbDsgfSwgdG91Y2hEZWxheSk7XG4gICAgICBpbnRlcnJ1cHQodGhpcyk7XG4gICAgICBnLnN0YXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdG91Y2htb3ZlZChldmVudCwgLi4uYXJncykge1xuICAgIGlmICghdGhpcy5fX3pvb21pbmcpIHJldHVybjtcbiAgICB2YXIgZyA9IGdlc3R1cmUodGhpcywgYXJncykuZXZlbnQoZXZlbnQpLFxuICAgICAgICB0b3VjaGVzID0gZXZlbnQuY2hhbmdlZFRvdWNoZXMsXG4gICAgICAgIG4gPSB0b3VjaGVzLmxlbmd0aCwgaSwgdCwgcCwgbDtcblxuICAgIG5vZXZlbnQoZXZlbnQpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIHQgPSB0b3VjaGVzW2ldLCBwID0gcG9pbnRlcih0LCB0aGlzKTtcbiAgICAgIGlmIChnLnRvdWNoMCAmJiBnLnRvdWNoMFsyXSA9PT0gdC5pZGVudGlmaWVyKSBnLnRvdWNoMFswXSA9IHA7XG4gICAgICBlbHNlIGlmIChnLnRvdWNoMSAmJiBnLnRvdWNoMVsyXSA9PT0gdC5pZGVudGlmaWVyKSBnLnRvdWNoMVswXSA9IHA7XG4gICAgfVxuICAgIHQgPSBnLnRoYXQuX196b29tO1xuICAgIGlmIChnLnRvdWNoMSkge1xuICAgICAgdmFyIHAwID0gZy50b3VjaDBbMF0sIGwwID0gZy50b3VjaDBbMV0sXG4gICAgICAgICAgcDEgPSBnLnRvdWNoMVswXSwgbDEgPSBnLnRvdWNoMVsxXSxcbiAgICAgICAgICBkcCA9IChkcCA9IHAxWzBdIC0gcDBbMF0pICogZHAgKyAoZHAgPSBwMVsxXSAtIHAwWzFdKSAqIGRwLFxuICAgICAgICAgIGRsID0gKGRsID0gbDFbMF0gLSBsMFswXSkgKiBkbCArIChkbCA9IGwxWzFdIC0gbDBbMV0pICogZGw7XG4gICAgICB0ID0gc2NhbGUodCwgTWF0aC5zcXJ0KGRwIC8gZGwpKTtcbiAgICAgIHAgPSBbKHAwWzBdICsgcDFbMF0pIC8gMiwgKHAwWzFdICsgcDFbMV0pIC8gMl07XG4gICAgICBsID0gWyhsMFswXSArIGwxWzBdKSAvIDIsIChsMFsxXSArIGwxWzFdKSAvIDJdO1xuICAgIH1cbiAgICBlbHNlIGlmIChnLnRvdWNoMCkgcCA9IGcudG91Y2gwWzBdLCBsID0gZy50b3VjaDBbMV07XG4gICAgZWxzZSByZXR1cm47XG5cbiAgICBnLnpvb20oXCJ0b3VjaFwiLCBjb25zdHJhaW4odHJhbnNsYXRlKHQsIHAsIGwpLCBnLmV4dGVudCwgdHJhbnNsYXRlRXh0ZW50KSk7XG4gIH1cblxuICBmdW5jdGlvbiB0b3VjaGVuZGVkKGV2ZW50LCAuLi5hcmdzKSB7XG4gICAgaWYgKCF0aGlzLl9fem9vbWluZykgcmV0dXJuO1xuICAgIHZhciBnID0gZ2VzdHVyZSh0aGlzLCBhcmdzKS5ldmVudChldmVudCksXG4gICAgICAgIHRvdWNoZXMgPSBldmVudC5jaGFuZ2VkVG91Y2hlcyxcbiAgICAgICAgbiA9IHRvdWNoZXMubGVuZ3RoLCBpLCB0O1xuXG4gICAgbm9wcm9wYWdhdGlvbihldmVudCk7XG4gICAgaWYgKHRvdWNoZW5kaW5nKSBjbGVhclRpbWVvdXQodG91Y2hlbmRpbmcpO1xuICAgIHRvdWNoZW5kaW5nID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsgdG91Y2hlbmRpbmcgPSBudWxsOyB9LCB0b3VjaERlbGF5KTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICB0ID0gdG91Y2hlc1tpXTtcbiAgICAgIGlmIChnLnRvdWNoMCAmJiBnLnRvdWNoMFsyXSA9PT0gdC5pZGVudGlmaWVyKSBkZWxldGUgZy50b3VjaDA7XG4gICAgICBlbHNlIGlmIChnLnRvdWNoMSAmJiBnLnRvdWNoMVsyXSA9PT0gdC5pZGVudGlmaWVyKSBkZWxldGUgZy50b3VjaDE7XG4gICAgfVxuICAgIGlmIChnLnRvdWNoMSAmJiAhZy50b3VjaDApIGcudG91Y2gwID0gZy50b3VjaDEsIGRlbGV0ZSBnLnRvdWNoMTtcbiAgICBpZiAoZy50b3VjaDApIGcudG91Y2gwWzFdID0gdGhpcy5fX3pvb20uaW52ZXJ0KGcudG91Y2gwWzBdKTtcbiAgICBlbHNlIHtcbiAgICAgIGcuZW5kKCk7XG4gICAgICAvLyBJZiB0aGlzIHdhcyBhIGRibHRhcCwgcmVyb3V0ZSB0byB0aGUgKG9wdGlvbmFsKSBkYmxjbGljay56b29tIGhhbmRsZXIuXG4gICAgICBpZiAoZy50YXBzID09PSAyKSB7XG4gICAgICAgIHQgPSBwb2ludGVyKHQsIHRoaXMpO1xuICAgICAgICBpZiAoTWF0aC5oeXBvdCh0b3VjaGZpcnN0WzBdIC0gdFswXSwgdG91Y2hmaXJzdFsxXSAtIHRbMV0pIDwgdGFwRGlzdGFuY2UpIHtcbiAgICAgICAgICB2YXIgcCA9IHNlbGVjdCh0aGlzKS5vbihcImRibGNsaWNrLnpvb21cIik7XG4gICAgICAgICAgaWYgKHApIHAuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHpvb20ud2hlZWxEZWx0YSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh3aGVlbERlbHRhID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIHpvb20pIDogd2hlZWxEZWx0YTtcbiAgfTtcblxuICB6b29tLmZpbHRlciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChmaWx0ZXIgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCEhXyksIHpvb20pIDogZmlsdGVyO1xuICB9O1xuXG4gIHpvb20udG91Y2hhYmxlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRvdWNoYWJsZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoISFfKSwgem9vbSkgOiB0b3VjaGFibGU7XG4gIH07XG5cbiAgem9vbS5leHRlbnQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZXh0ZW50ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChbWytfWzBdWzBdLCArX1swXVsxXV0sIFsrX1sxXVswXSwgK19bMV1bMV1dXSksIHpvb20pIDogZXh0ZW50O1xuICB9O1xuXG4gIHpvb20uc2NhbGVFeHRlbnQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc2NhbGVFeHRlbnRbMF0gPSArX1swXSwgc2NhbGVFeHRlbnRbMV0gPSArX1sxXSwgem9vbSkgOiBbc2NhbGVFeHRlbnRbMF0sIHNjYWxlRXh0ZW50WzFdXTtcbiAgfTtcblxuICB6b29tLnRyYW5zbGF0ZUV4dGVudCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0cmFuc2xhdGVFeHRlbnRbMF1bMF0gPSArX1swXVswXSwgdHJhbnNsYXRlRXh0ZW50WzFdWzBdID0gK19bMV1bMF0sIHRyYW5zbGF0ZUV4dGVudFswXVsxXSA9ICtfWzBdWzFdLCB0cmFuc2xhdGVFeHRlbnRbMV1bMV0gPSArX1sxXVsxXSwgem9vbSkgOiBbW3RyYW5zbGF0ZUV4dGVudFswXVswXSwgdHJhbnNsYXRlRXh0ZW50WzBdWzFdXSwgW3RyYW5zbGF0ZUV4dGVudFsxXVswXSwgdHJhbnNsYXRlRXh0ZW50WzFdWzFdXV07XG4gIH07XG5cbiAgem9vbS5jb25zdHJhaW4gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoY29uc3RyYWluID0gXywgem9vbSkgOiBjb25zdHJhaW47XG4gIH07XG5cbiAgem9vbS5kdXJhdGlvbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkdXJhdGlvbiA9ICtfLCB6b29tKSA6IGR1cmF0aW9uO1xuICB9O1xuXG4gIHpvb20uaW50ZXJwb2xhdGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaW50ZXJwb2xhdGUgPSBfLCB6b29tKSA6IGludGVycG9sYXRlO1xuICB9O1xuXG4gIHpvb20ub24gPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWUgPSBsaXN0ZW5lcnMub24uYXBwbHkobGlzdGVuZXJzLCBhcmd1bWVudHMpO1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbGlzdGVuZXJzID8gem9vbSA6IHZhbHVlO1xuICB9O1xuXG4gIHpvb20uY2xpY2tEaXN0YW5jZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjbGlja0Rpc3RhbmNlMiA9IChfID0gK18pICogXywgem9vbSkgOiBNYXRoLnNxcnQoY2xpY2tEaXN0YW5jZTIpO1xuICB9O1xuXG4gIHpvb20udGFwRGlzdGFuY2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGFwRGlzdGFuY2UgPSArXywgem9vbSkgOiB0YXBEaXN0YW5jZTtcbiAgfTtcblxuICByZXR1cm4gem9vbTtcbn1cbiIsICJpbXBvcnQgKiBhcyBkMyBmcm9tIFwiZDNcIjtcclxuaW1wb3J0IHR5cGUgR3JhcGggZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHsgTW9kYWwsIE5vdGljZSB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgVmlzQ29tcCBmcm9tIFwiLi4vQ29tcG9uZW50cy9WaXNDb21wLnN2ZWx0ZVwiO1xyXG5pbXBvcnQgdHlwZSB7IEFkakxpc3RJdGVtLCBkM0dyYXBoIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHtcclxuICBnZXRJbk5laWdoYm91cnMsXHJcbiAgZ2V0T3V0TmVpZ2hib3VycyxcclxuICBnZXRTaW5rcyxcclxufSBmcm9tIFwiLi4vVXRpbHMvZ3JhcGhVdGlsc1wiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdyYXBobGliVG9EMyhnOiBHcmFwaCk6IGQzR3JhcGgge1xyXG4gIGNvbnN0IGQzR3JhcGg6IGQzR3JhcGggPSB7IG5vZGVzOiBbXSwgbGlua3M6IFtdIH07XHJcbiAgY29uc3Qgbm9kZUlEcyA9IHt9O1xyXG5cclxuICBnLm5vZGVzKCkuZm9yRWFjaCgobm9kZSwgaSkgPT4ge1xyXG4gICAgZDNHcmFwaC5ub2Rlcy5wdXNoKHsgaWQ6IGksIG5hbWU6IG5vZGUgfSk7XHJcbiAgICBub2RlSURzW25vZGVdID0gaTtcclxuICB9KTtcclxuICBnLmZvckVhY2hFZGdlKChrLCBhLCBzLCB0KSA9PiB7XHJcbiAgICBkM0dyYXBoLmxpbmtzLnB1c2goe1xyXG4gICAgICBzb3VyY2U6IG5vZGVJRHNbc10sXHJcbiAgICAgIHRhcmdldDogbm9kZUlEc1t0XSxcclxuICAgIH0pO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gZDNHcmFwaDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGJmc0Zyb21BbGxTaW5rcyhnOiBHcmFwaCkge1xyXG4gIGNvbnN0IHF1ZXVlOiBzdHJpbmdbXSA9IGdldFNpbmtzKGcpO1xyXG4gIGNvbnN0IGFkakxpc3Q6IEFkakxpc3RJdGVtW10gPSBbXTtcclxuXHJcbiAgbGV0IGkgPSAwO1xyXG4gIHdoaWxlIChxdWV1ZS5sZW5ndGggJiYgaSA8IDEwMDApIHtcclxuICAgIGkrKztcclxuXHJcbiAgICBjb25zdCBjdXJyTm9kZSA9IHF1ZXVlLnNoaWZ0KCk7XHJcbiAgICBjb25zdCBuZXdOb2RlcyA9IGdldEluTmVpZ2hib3VycyhnLCBjdXJyTm9kZSk7XHJcblxyXG4gICAgaWYgKG5ld05vZGVzLmxlbmd0aCkge1xyXG4gICAgICBuZXdOb2Rlcy5mb3JFYWNoKChwcmUpID0+IHtcclxuICAgICAgICBjb25zdCBuZXh0OiBBZGpMaXN0SXRlbSA9IHtcclxuICAgICAgICAgIG5hbWU6IGN1cnJOb2RlLFxyXG4gICAgICAgICAgcGFyZW50SWQ6IHByZSxcclxuICAgICAgICAgIGRlcHRoOiBpLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcXVldWUucHVzaChwcmUpO1xyXG4gICAgICAgIGFkakxpc3QucHVzaChuZXh0KTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhZGpMaXN0LnB1c2goe1xyXG4gICAgICAgIG5hbWU6IGN1cnJOb2RlLFxyXG4gICAgICAgIHBhcmVudElkOiB1bmRlZmluZWQsXHJcbiAgICAgICAgZGVwdGg6IGksXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3QgbWF4RGVwdGggPSBhZGpMaXN0LnNvcnQoKGEsIGIpID0+IGEuZGVwdGggLSBiLmRlcHRoKS5sYXN0KCkuZGVwdGg7XHJcbiAgYWRqTGlzdC5mb3JFYWNoKChpdGVtKSA9PiAoaXRlbS5oZWlnaHQgPSBtYXhEZXB0aCAtIGl0ZW0uZGVwdGgpKTtcclxuICByZXR1cm4gYWRqTGlzdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRmc0Fkakxpc3QoZzogR3JhcGgsIHN0YXJ0Tm9kZTogc3RyaW5nKTogQWRqTGlzdEl0ZW1bXSB7XHJcbiAgY29uc3QgcXVldWU6IHN0cmluZ1tdID0gW3N0YXJ0Tm9kZV07XHJcbiAgY29uc3QgYWRqTGlzdDogQWRqTGlzdEl0ZW1bXSA9IFtdO1xyXG5cclxuICBsZXQgaSA9IDA7XHJcbiAgd2hpbGUgKHF1ZXVlLmxlbmd0aCAmJiBpIDwgMTAwMCkge1xyXG4gICAgaSsrO1xyXG5cclxuICAgIGNvbnN0IGN1cnJOb2RlID0gcXVldWUuc2hpZnQoKTtcclxuICAgIGNvbnN0IG5ld05vZGVzID0gZ2V0T3V0TmVpZ2hib3VycyhnLCBjdXJyTm9kZSk7XHJcblxyXG4gICAgaWYgKG5ld05vZGVzLmxlbmd0aCkge1xyXG4gICAgICBuZXdOb2Rlcy5mb3JFYWNoKChzdWNjKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV4dDogQWRqTGlzdEl0ZW0gPSB7XHJcbiAgICAgICAgICBuYW1lOiBjdXJyTm9kZSxcclxuICAgICAgICAgIHBhcmVudElkOiBzdWNjLFxyXG4gICAgICAgICAgZGVwdGg6IGksXHJcbiAgICAgICAgfTtcclxuICAgICAgICBxdWV1ZS5wdXNoKHN1Y2MpO1xyXG4gICAgICAgIGFkakxpc3QucHVzaChuZXh0KTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhZGpMaXN0LnB1c2goe1xyXG4gICAgICAgIG5hbWU6IGN1cnJOb2RlLFxyXG4gICAgICAgIHBhcmVudElkOiB1bmRlZmluZWQsXHJcbiAgICAgICAgZGVwdGg6IGksXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb25zdCBtYXhEZXB0aCA9IGFkakxpc3Quc29ydCgoYSwgYikgPT4gYS5kZXB0aCAtIGIuZGVwdGgpLmxhc3QoKS5kZXB0aDtcclxuICBhZGpMaXN0LmZvckVhY2goKGl0ZW0pID0+IChpdGVtLmhlaWdodCA9IG1heERlcHRoIC0gaXRlbS5kZXB0aCkpO1xyXG5cclxuICByZXR1cm4gYWRqTGlzdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGJmc0Fkakxpc3QoZzogR3JhcGgsIHN0YXJ0Tm9kZTogc3RyaW5nKTogQWRqTGlzdEl0ZW1bXSB7XHJcbiAgY29uc3QgcXVldWU6IHN0cmluZ1tdID0gW3N0YXJ0Tm9kZV07XHJcbiAgY29uc3QgYWRqTGlzdDogQWRqTGlzdEl0ZW1bXSA9IFtdO1xyXG5cclxuICBsZXQgaSA9IDA7XHJcbiAgd2hpbGUgKHF1ZXVlLmxlbmd0aCAmJiBpIDwgMTAwMCkge1xyXG4gICAgaSsrO1xyXG5cclxuICAgIGNvbnN0IGN1cnJOb2RlID0gcXVldWUuc2hpZnQoKTtcclxuICAgIGNvbnN0IG5laWdoYm91cnMgPSB7XHJcbiAgICAgIHN1Y2NzOiBnZXRPdXROZWlnaGJvdXJzKGcsIGN1cnJOb2RlKSxcclxuICAgICAgcHJlczogZ2V0SW5OZWlnaGJvdXJzKGcsIGN1cnJOb2RlKSxcclxuICAgIH07XHJcbiAgICBjb25zb2xlLmxvZyh7IGN1cnJOb2RlLCBuZWlnaGJvdXJzIH0pO1xyXG5cclxuICAgIGNvbnN0IG5leHQ6IEFkakxpc3RJdGVtID0ge1xyXG4gICAgICBuYW1lOiBjdXJyTm9kZSxcclxuICAgICAgcHJlczogdW5kZWZpbmVkLFxyXG4gICAgICBzdWNjczogdW5kZWZpbmVkLFxyXG4gICAgICBwYXJlbnRJZDogaSxcclxuICAgICAgZGVwdGg6IGksXHJcbiAgICB9O1xyXG4gICAgaWYgKG5laWdoYm91cnMuc3VjY3MubGVuZ3RoKSB7XHJcbiAgICAgIG5leHQuc3VjY3MgPSBuZWlnaGJvdXJzLnN1Y2NzO1xyXG4gICAgICBxdWV1ZS5wdXNoKC4uLm5laWdoYm91cnMuc3VjY3MpO1xyXG4gICAgfVxyXG4gICAgaWYgKG5laWdoYm91cnMucHJlcy5sZW5ndGgpIHtcclxuICAgICAgbmV4dC5wcmVzID0gbmVpZ2hib3Vycy5wcmVzO1xyXG4gICAgfVxyXG4gICAgYWRqTGlzdC5wdXNoKG5leHQpO1xyXG4gIH1cclxuICBjb25zdCBtYXhEZXB0aCA9IGFkakxpc3Quc29ydCgoYSwgYikgPT4gYS5kZXB0aCAtIGIuZGVwdGgpLmxhc3QoKS5kZXB0aDtcclxuICBhZGpMaXN0LmZvckVhY2goKGl0ZW0pID0+IChpdGVtLmhlaWdodCA9IG1heERlcHRoIC0gaXRlbS5kZXB0aCkpO1xyXG5cclxuICByZXR1cm4gYWRqTGlzdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRmc0ZsYXRBZGpMaXN0KGc6IEdyYXBoLCBzdGFydE5vZGU6IHN0cmluZykge1xyXG4gIGNvbnN0IG5vZGVzID0gZy5ub2RlcygpO1xyXG4gIGNvbnN0IG5vZGVDb3VudCA9IG5vZGVzLmxlbmd0aDtcclxuICBjb25zdCB2aXNpdHMgPSB7fTtcclxuICBub2Rlcy5mb3JFYWNoKChub2RlLCBpKSA9PiB7XHJcbiAgICB2aXNpdHNbbm9kZV0gPSBub2RlQ291bnQgKiBpO1xyXG4gIH0pO1xyXG5cclxuICBjb25zdCBxdWV1ZTogc3RyaW5nW10gPSBbc3RhcnROb2RlXTtcclxuICBjb25zdCBhZGpMaXN0OiBBZGpMaXN0SXRlbVtdID0gW107XHJcblxyXG4gIGxldCBkZXB0aCA9IDE7XHJcbiAgbGV0IGkgPSAwO1xyXG4gIHdoaWxlIChxdWV1ZS5sZW5ndGggJiYgaSA8IDEwMDApIHtcclxuICAgIGkrKztcclxuXHJcbiAgICBjb25zdCBjdXJyTm9kZSA9IHF1ZXVlLnNoaWZ0KCk7XHJcbiAgICBjb25zdCBuZXh0ID0gZ2V0T3V0TmVpZ2hib3VycyhnLCBjdXJyTm9kZSk7XHJcblxyXG4gICAgaWYgKG5leHQubGVuZ3RoKSB7XHJcbiAgICAgIHF1ZXVlLnVuc2hpZnQoLi4ubmV4dCk7XHJcbiAgICAgIG5leHQuZm9yRWFjaCgoc3VjYykgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBhcmVudElkID0gbm9kZUNvdW50ICogbm9kZXMuaW5kZXhPZihzdWNjKTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAhYWRqTGlzdC5zb21lKFxyXG4gICAgICAgICAgICAoYWRqSXRlbSkgPT5cclxuICAgICAgICAgICAgICBhZGpJdGVtLm5hbWUgPT09IGN1cnJOb2RlICYmIGFkakl0ZW0ucGFyZW50SWQgPT09IHBhcmVudElkXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBhZGpMaXN0LnB1c2goe1xyXG4gICAgICAgICAgICBpZDogdmlzaXRzW2N1cnJOb2RlXSBhcyBudW1iZXIsXHJcbiAgICAgICAgICAgIG5hbWU6IGN1cnJOb2RlLFxyXG4gICAgICAgICAgICBwYXJlbnRJZCxcclxuICAgICAgICAgICAgZGVwdGgsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHZpc2l0c1tjdXJyTm9kZV0rKztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBkZXB0aCsrO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYWRqTGlzdC5wdXNoKHtcclxuICAgICAgICBpZDogdmlzaXRzW2N1cnJOb2RlXSBhcyBudW1iZXIsXHJcbiAgICAgICAgbmFtZTogY3Vyck5vZGUsXHJcbiAgICAgICAgcGFyZW50SWQ6IDk5OTk5OTk5OSxcclxuICAgICAgICBkZXB0aCxcclxuICAgICAgfSk7XHJcbiAgICAgIGRlcHRoID0gMTtcclxuICAgICAgdmlzaXRzW2N1cnJOb2RlXSsrO1xyXG4gICAgfVxyXG4gIH1cclxuICBhZGpMaXN0LnB1c2goe1xyXG4gICAgaWQ6IDk5OTk5OTk5OSxcclxuICAgIG5hbWU6IFwiQ09OVEFJTkVSXCIsXHJcbiAgICBwYXJlbnRJZDogdW5kZWZpbmVkLFxyXG4gICAgZGVwdGg6IDAsXHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0IG1heERlcHRoID0gYWRqTGlzdC5zb3J0KChhLCBiKSA9PiBhLmRlcHRoIC0gYi5kZXB0aCkubGFzdCgpLmRlcHRoO1xyXG4gIGFkakxpc3QuZm9yRWFjaCgoaXRlbSkgPT4gKGl0ZW0uaGVpZ2h0ID0gbWF4RGVwdGggLSBpdGVtLmRlcHRoKSk7XHJcblxyXG4gIGNvbnNvbGUubG9nKHsgdmlzaXRzIH0pO1xyXG4gIHJldHVybiBhZGpMaXN0O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3Qgc3RyYXRpZnkgPSBkM1xyXG4gIC5zdHJhdGlmeSgpXHJcbiAgLmlkKGZ1bmN0aW9uIChkOiBBZGpMaXN0SXRlbSkge1xyXG4gICAgY29uc29sZS5sb2coeyBkIH0pO1xyXG4gICAgcmV0dXJuIGQubmFtZTtcclxuICB9KVxyXG4gIC5wYXJlbnRJZChmdW5jdGlvbiAoZDogQWRqTGlzdEl0ZW0pIHtcclxuICAgIHJldHVybiBkLnBhcmVudElkO1xyXG4gIH0pO1xyXG5leHBvcnQgY2xhc3MgVmlzTW9kYWwgZXh0ZW5kcyBNb2RhbCB7XHJcbiAgcGx1Z2luOiBCQ1BsdWdpbjtcclxuICBtb2RhbDogVmlzTW9kYWw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHBsdWdpbjogQkNQbHVnaW4pIHtcclxuICAgIHN1cGVyKGFwcCk7XHJcbiAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcclxuICAgIHRoaXMubW9kYWwgPSB0aGlzO1xyXG4gIH1cclxuXHJcbiAgb25PcGVuKCkge1xyXG4gICAgbmV3IE5vdGljZShcclxuICAgICAgXCJBbG90IG9mIHRoZXNlIGZlYXR1cmVzIG1heSBub3Qgd29yaywgaXQgaXMgc3RpbGwgdmVyeSBleHBlcmltZW50YWwuXCJcclxuICAgICk7XHJcbiAgICBjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcclxuICAgIGNvbnRlbnRFbC5lbXB0eSgpO1xyXG5cclxuICAgIG5ldyBWaXNDb21wKHtcclxuICAgICAgdGFyZ2V0OiBjb250ZW50RWwsXHJcbiAgICAgIHByb3BzOiB7XHJcbiAgICAgICAgbW9kYWw6IHRoaXMsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2xvc2UoKSB7XHJcbiAgICB0aGlzLmNvbnRlbnRFbC5lbXB0eSgpO1xyXG4gIH1cclxufVxyXG4iLCBudWxsLCAiPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuICBpbXBvcnQgeyB3YXJuIH0gZnJvbSBcImxvZ2xldmVsXCI7XHJcbiAgaW1wb3J0IHsgQUxMVU5MSU5LRUQsIFJFQWxDTE9TRUQsIFJFTEFUSU9OUywgVklTVFlQRVMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbiAgaW1wb3J0IHR5cGUgeyBWaXNHcmFwaHMsIFZpc1R5cGUgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG4gIGltcG9ydCB7XHJcbiAgICBjbG9zZUltcGxpZWRMaW5rcyxcclxuICAgIGdldFN1YkluRGlycyxcclxuICAgIHJlbW92ZVVubGlua2VkTm9kZXMsXHJcbiAgfSBmcm9tIFwiLi4vVXRpbHMvZ3JhcGhVdGlsc1wiO1xyXG4gIGltcG9ydCB7IGFyY0RpYWdyYW0gfSBmcm9tIFwiLi4vVmlzdWFsaXNhdGlvbnMvQXJjRGlhZ3JhbVwiO1xyXG4gIGltcG9ydCB7IGNpcmNsZVBhY2tpbmcgfSBmcm9tIFwiLi4vVmlzdWFsaXNhdGlvbnMvQ2lyY2xlUGFja2luZ1wiO1xyXG4gIGltcG9ydCB7IGVkZ2VCdW5kbGluZyB9IGZyb20gXCIuLi9WaXN1YWxpc2F0aW9ucy9FZGdlQnVuZGxpbmdcIjtcclxuICBpbXBvcnQgeyBmb3JjZURpcmVjdGVkRyB9IGZyb20gXCIuLi9WaXN1YWxpc2F0aW9ucy9Gb3JjZURpcmVjdGVkR1wiO1xyXG4gIGltcG9ydCB7IGljaWNsZSB9IGZyb20gXCIuLi9WaXN1YWxpc2F0aW9ucy9JY2ljbGVcIjtcclxuICBpbXBvcnQgeyByYWRpYWxUcmVlIH0gZnJvbSBcIi4uL1Zpc3VhbGlzYXRpb25zL1JhZGlhbFRyZWVcIjtcclxuICBpbXBvcnQgeyBzdW5idXJzdCB9IGZyb20gXCIuLi9WaXN1YWxpc2F0aW9ucy9TdW5idXJzdFwiO1xyXG4gIGltcG9ydCB7IHRpZHlUcmVlIH0gZnJvbSBcIi4uL1Zpc3VhbGlzYXRpb25zL1RpZHlUcmVlXCI7XHJcbiAgaW1wb3J0IHsgdHJlZU1hcCB9IGZyb20gXCIuLi9WaXN1YWxpc2F0aW9ucy9UcmVlTWFwXCI7XHJcbiAgaW1wb3J0IHR5cGUgeyBWaXNNb2RhbCB9IGZyb20gXCIuLi9WaXN1YWxpc2F0aW9ucy9WaXNNb2RhbFwiO1xyXG4gIGltcG9ydCB7IGdldEN1cnJGaWxlIH0gZnJvbSBcIi4uL1V0aWxzL09ic2lkaWFuVXRpbHNcIjtcclxuXHJcbiAgZXhwb3J0IGxldCBtb2RhbDogVmlzTW9kYWw7XHJcblxyXG4gIGNvbnN0IHsgcGx1Z2luIH0gPSBtb2RhbDtcclxuICBjb25zdCB7IG1haW5HLCBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgdmlzR3JhcGgsIHZpc1JlbGF0aW9uLCB2aXNDbG9zZWQsIHZpc0FsbCB9ID0gc2V0dGluZ3M7XHJcblxyXG4gIGNvbnN0IGN1cnJGaWxlID0gZ2V0Q3VyckZpbGUoKTtcclxuXHJcbiAgY29uc3Qgc2VsZWN0b3JzID0gW1xyXG4gICAge1xyXG4gICAgICB0ZXh0OiBcIlR5cGVcIixcclxuICAgICAgb3B0aW9uczogVklTVFlQRVMsXHJcbiAgICAgIHZhbDogdmlzR3JhcGgsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICB0ZXh0OiBcIlJlbGF0aW9uXCIsXHJcbiAgICAgIG9wdGlvbnM6IFJFTEFUSU9OUyxcclxuICAgICAgdmFsOiB2aXNSZWxhdGlvbixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHRleHQ6IFwiQ2xvc2UgSW1wbGllZFwiLFxyXG4gICAgICBvcHRpb25zOiBSRUFsQ0xPU0VELFxyXG4gICAgICB2YWw6IHZpc0Nsb3NlZCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHRleHQ6IFwiTm8gVW5saW5rZWRcIixcclxuICAgICAgb3B0aW9uczogQUxMVU5MSU5LRUQsXHJcbiAgICAgIHZhbDogdmlzQWxsLFxyXG4gICAgfSxcclxuICBdO1xyXG5cclxuICBjb25zdCBbd2lkdGgsIGhlaWdodF0gPSBbXHJcbiAgICBNYXRoLnJvdW5kKHdpbmRvdy5pbm5lcldpZHRoIC8gMS4zKSxcclxuICAgIE1hdGgucm91bmQod2luZG93LmlubmVySGVpZ2h0IC8gMS4zKSxcclxuICBdO1xyXG5cclxuICBjb25zdCBbdXAsIHNhbWUsIGRvd25dID0gW1xyXG4gICAgZ2V0U3ViSW5EaXJzKG1haW5HLCBcInVwXCIpLFxyXG4gICAgZ2V0U3ViSW5EaXJzKG1haW5HLCBcInNhbWVcIiksXHJcbiAgICBnZXRTdWJJbkRpcnMobWFpbkcsIFwiZG93blwiKSxcclxuICBdO1xyXG5cclxuICBjb25zdCBbY2xvc2VkUGFyZW50Tm9TaW5nbGUsIGNsb3NlZFNpYmxpbmdOb1NpbmdsZSwgY2xvc2VkQ2hpbGROb1NpbmdsZV0gPSBbXHJcbiAgICBjbG9zZUltcGxpZWRMaW5rcyh1cCwgZG93biksXHJcbiAgICBjbG9zZUltcGxpZWRMaW5rcyhzYW1lLCBzYW1lKSxcclxuICAgIGNsb3NlSW1wbGllZExpbmtzKGRvd24sIHVwKSxcclxuICBdO1xyXG5cclxuICBjb25zdCBncmFwaHM6IFZpc0dyYXBocyA9IHtcclxuICAgIFBhcmVudDoge1xyXG4gICAgICBSZWFsOiB7XHJcbiAgICAgICAgQWxsOiB1cCxcclxuICAgICAgICBcIk5vIFVubGlua2VkXCI6IHJlbW92ZVVubGlua2VkTm9kZXModXApLFxyXG4gICAgICB9LFxyXG4gICAgICBDbG9zZWQ6IHtcclxuICAgICAgICBBbGw6IGNsb3NlZFBhcmVudE5vU2luZ2xlLFxyXG4gICAgICAgIFwiTm8gVW5saW5rZWRcIjogcmVtb3ZlVW5saW5rZWROb2RlcyhjbG9zZWRQYXJlbnROb1NpbmdsZSksXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgU2libGluZzoge1xyXG4gICAgICBSZWFsOiB7XHJcbiAgICAgICAgQWxsOiBzYW1lLFxyXG4gICAgICAgIFwiTm8gVW5saW5rZWRcIjogcmVtb3ZlVW5saW5rZWROb2RlcyhzYW1lKSxcclxuICAgICAgfSxcclxuICAgICAgQ2xvc2VkOiB7XHJcbiAgICAgICAgQWxsOiBjbG9zZWRTaWJsaW5nTm9TaW5nbGUsXHJcbiAgICAgICAgXCJObyBVbmxpbmtlZFwiOiByZW1vdmVVbmxpbmtlZE5vZGVzKGNsb3NlZFNpYmxpbmdOb1NpbmdsZSksXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgQ2hpbGQ6IHtcclxuICAgICAgUmVhbDoge1xyXG4gICAgICAgIEFsbDogZG93bixcclxuICAgICAgICBcIk5vIFVubGlua2VkXCI6IHJlbW92ZVVubGlua2VkTm9kZXMoZG93biksXHJcbiAgICAgIH0sXHJcbiAgICAgIENsb3NlZDoge1xyXG4gICAgICAgIEFsbDogY2xvc2VkQ2hpbGROb1NpbmdsZSxcclxuICAgICAgICBcIk5vIFVubGlua2VkXCI6IHJlbW92ZVVubGlua2VkTm9kZXMoY2xvc2VkQ2hpbGROb1NpbmdsZSksXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gICQ6IGFyZ0FyciA9IFtcclxuICAgIGdyYXBoc1tzZWxlY3RvcnNbMV0udmFsXVtzZWxlY3RvcnNbMl0udmFsXVtzZWxlY3RvcnNbM10udmFsXSxcclxuICAgIGFwcCxcclxuICAgIGN1cnJGaWxlLFxyXG4gICAgbW9kYWwsXHJcbiAgICB3aWR0aCxcclxuICAgIGhlaWdodCxcclxuICBdO1xyXG5cclxuICBjb25zdCB0eXBlczoge1xyXG4gICAgW3ZpcyBpbiBWaXNUeXBlXTogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkO1xyXG4gIH0gPSB7XHJcbiAgICBcIkZvcmNlIERpcmVjdGVkIEdyYXBoXCI6IGZvcmNlRGlyZWN0ZWRHLFxyXG4gICAgXCJUaWR5IFRyZWVcIjogdGlkeVRyZWUsXHJcbiAgICBcIkNpcmNsZSBQYWNraW5nXCI6IGNpcmNsZVBhY2tpbmcsXHJcbiAgICBcIkVkZ2UgQnVuZGxpbmdcIjogZWRnZUJ1bmRsaW5nLFxyXG4gICAgXCJBcmMgRGlhZ3JhbVwiOiBhcmNEaWFncmFtLFxyXG4gICAgU3VuYnVyc3Q6IHN1bmJ1cnN0LFxyXG4gICAgXCJUcmVlIE1hcFwiOiB0cmVlTWFwLFxyXG4gICAgSWNpY2xlOiBpY2ljbGUsXHJcbiAgICBcIlJhZGlhbCBUcmVlXCI6IHJhZGlhbFRyZWUsXHJcbiAgfTtcclxuXHJcbiAgZnVuY3Rpb24gZHJhdyh0eXBlOiBWaXNUeXBlKSB7XHJcbiAgICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZDMtZ3JhcGhcIikpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5kMy1ncmFwaFwiKT8uZW1wdHkoKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgdHlwZXNbdHlwZV0oLi4uYXJnQXJyKTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgd2FybihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAxMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmQzLWdyYXBoXCIpLmVtcHR5KCk7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdHlwZXNbdHlwZV0oLi4uYXJnQXJyKTtcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICB3YXJuKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJDogZHJhdyhzZWxlY3RvcnNbMF0udmFsIGFzIFZpc1R5cGUpO1xyXG48L3NjcmlwdD5cclxuXHJcbjxkaXY+XHJcbiAgeyNlYWNoIHNlbGVjdG9ycyBhcyB7IHRleHQsIG9wdGlvbnMsIHZhbCB9fVxyXG4gICAgPHNwYW4+XHJcbiAgICAgIHt0ZXh0fTpcclxuICAgICAgPHNlbGVjdCBiaW5kOnZhbHVlPXt2YWx9PlxyXG4gICAgICAgIHsjZWFjaCBvcHRpb25zIGFzIG9wfVxyXG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT17b3B9PntvcH08L29wdGlvbj5cclxuICAgICAgICB7L2VhY2h9XHJcbiAgICAgIDwvc2VsZWN0PlxyXG4gICAgPC9zcGFuPlxyXG4gIHsvZWFjaH1cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwiZDMtZ3JhcGhcIiAvPlxyXG4iLCAiaW1wb3J0ICogYXMgZDMgZnJvbSBcImQzXCI7XHJcbmltcG9ydCB0eXBlIEdyYXBoIGZyb20gXCJncmFwaG9sb2d5XCI7XHJcbmltcG9ydCB0eXBlIHsgVEZpbGUgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHR5cGUgeyBkM05vZGUgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBncmFwaGxpYlRvRDMsIFZpc01vZGFsIH0gZnJvbSBcIi4vVmlzTW9kYWxcIjtcclxuaW1wb3J0IHsgb3Blbk9yU3dpdGNoIH0gZnJvbSBcIm9ic2lkaWFuLWNvbW11bml0eS1saWJcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBhcmNEaWFncmFtID0gKFxyXG4gIGdyYXBoOiBHcmFwaCxcclxuICBjdXJyRmlsZTogVEZpbGUsXHJcbiAgbW9kYWw6IFZpc01vZGFsLFxyXG4gIHdpZHRoOiBudW1iZXIsXHJcbiAgaGVpZ2h0OiBudW1iZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgZGF0YSA9IGdyYXBobGliVG9EMyhncmFwaCk7XHJcblxyXG4gIGNvbnN0IG1hcmdpbiA9IHsgdG9wOiAyMCwgcmlnaHQ6IDIwLCBib3R0b206IDIwLCBsZWZ0OiAxNTAgfTtcclxuICBjb25zdCBzdmcgPSBkM1xyXG4gICAgLnNlbGVjdChcIi5kMy1ncmFwaFwiKVxyXG4gICAgLmFwcGVuZChcInN2Z1wiKVxyXG4gICAgLmF0dHIoXCJoZWlnaHRcIiwgaGVpZ2h0KVxyXG4gICAgLmF0dHIoXCJ3aWR0aFwiLCB3aWR0aCk7XHJcblxyXG4gIGNvbnN0IG5vZGVzID0gZGF0YS5ub2Rlcy5tYXAoKHsgaWQsIG5hbWUgfSkgPT4gKHtcclxuICAgIGlkLFxyXG4gICAgbmFtZSxcclxuICAgIHNvdXJjZUxpbmtzOiBbXSxcclxuICAgIHRhcmdldExpbmtzOiBbXSxcclxuICB9KSk7XHJcblxyXG4gIGNvbnN0IG5vZGVCeUlkID0gbmV3IE1hcChub2Rlcy5tYXAoKGQpID0+IFtkLmlkLCBkXSkpO1xyXG5cclxuICBjb25zdCBsaW5rcyA9IGRhdGEubGlua3MubWFwKCh7IHNvdXJjZSwgdGFyZ2V0IH0pID0+ICh7XHJcbiAgICBzb3VyY2U6IG5vZGVCeUlkLmdldChzb3VyY2UgYXMgbnVtYmVyKSxcclxuICAgIHRhcmdldDogbm9kZUJ5SWQuZ2V0KHRhcmdldCBhcyBudW1iZXIpLFxyXG4gIH0pKTtcclxuXHJcbiAgZm9yIChjb25zdCBsaW5rIG9mIGxpbmtzKSB7XHJcbiAgICBjb25zdCB7IHNvdXJjZSwgdGFyZ2V0IH0gPSBsaW5rO1xyXG4gICAgc291cmNlLnNvdXJjZUxpbmtzLnB1c2gobGluayk7XHJcbiAgICB0YXJnZXQudGFyZ2V0TGlua3MucHVzaChsaW5rKTtcclxuICB9XHJcblxyXG4gIHN2Zy5hcHBlbmQoXCJzdHlsZVwiKS50ZXh0KGBcclxuXHJcbnBhdGgge1xyXG4gIHN0cm9rZTogIzgwODA4MDtcclxuICBvcGFjaXR5OiAwLjg7XHJcbn1cclxuXHJcbnRleHQge1xyXG4gIHN0cm9rZTogdmFyKC0tdGV4dC1hKTtcclxuICBvcGFjaXR5OiAwLjg7XHJcbn1cclxuXHJcblxyXG4uaG92ZXIgZy5wcmltYXJ5IHRleHQge1xyXG4gIGZpbGw6IGJsYWNrO1xyXG59XHJcblxyXG4uaG92ZXIgZy5zZWNvbmRhcnkgdGV4dCB7XHJcbiAgZmlsbDogIzMzMztcclxufVxyXG5cclxuLmhvdmVyIC5zZWNvbmRhcnkge1xyXG4gICAgY29sb3I6IHJlZDtcclxufVxyXG5cclxuLmhvdmVyIHBhdGgucHJpbWFyeSB7XHJcbiAgc3Ryb2tlOiAjMzMzO1xyXG4gIHN0cm9rZS1vcGFjaXR5OiAxO1xyXG59XHJcblxyXG4uaG92ZXIgcmVjdCB7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG5gKTtcclxuXHJcbiAgY29uc3QgeSA9IGQzLnNjYWxlUG9pbnQobm9kZXMubWFwKChkKSA9PiBkLm5hbWUpLnNvcnQoZDMuYXNjZW5kaW5nKSwgW1xyXG4gICAgbWFyZ2luLnRvcCxcclxuICAgIGhlaWdodCAtIG1hcmdpbi5ib3R0b20sXHJcbiAgXSk7XHJcblxyXG4gIGNvbnN0IGxhYmVsID0gc3ZnXHJcbiAgICAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgLmF0dHIoXCJmb250LWZhbWlseVwiLCBcInNhbnMtc2VyaWZcIilcclxuICAgIC5hdHRyKFwiZm9udC1zaXplXCIsIDEwKVxyXG4gICAgLmF0dHIoXCJ0ZXh0LWFuY2hvclwiLCBcImVuZFwiKVxyXG4gICAgLnNlbGVjdEFsbChcImdcIilcclxuICAgIC5kYXRhKG5vZGVzKVxyXG4gICAgLmpvaW4oXCJnXCIpXHJcbiAgICAuYXR0cihcInRyYW5zZm9ybVwiLCAoZCkgPT4gYHRyYW5zbGF0ZSgke21hcmdpbi5sZWZ0fSwkeyhkLnkgPSB5KGQubmFtZSkpfSlgKVxyXG4gICAgLmNhbGwoKGcpID0+XHJcbiAgICAgIGdcclxuICAgICAgICAuYXBwZW5kKFwidGV4dFwiKVxyXG4gICAgICAgIC5hdHRyKFwieFwiLCAtNilcclxuICAgICAgICAuYXR0cihcImR5XCIsIFwiMC4zNWVtXCIpXHJcbiAgICAgICAgLy8gLmF0dHIoXCJmaWxsXCIsIChkKSA9PiBkMy5sYWIoY29sb3IoZC5ncm91cCkpLmRhcmtlcigyKSlcclxuICAgICAgICAudGV4dCgoZCkgPT4gZC5uYW1lKVxyXG4gICAgKVxyXG4gICAgLmNhbGwoXHJcbiAgICAgIChnKSA9PiBnLmFwcGVuZChcImNpcmNsZVwiKS5hdHRyKFwiclwiLCAzKVxyXG4gICAgICAvLyAuYXR0cihcImZpbGxcIiwgKGQpID0+IGNvbG9yKGQuZ3JvdXApKVxyXG4gICAgKTtcclxuXHJcbiAgY29uc3QgcGF0aCA9IHN2Z1xyXG4gICAgLmluc2VydChcImdcIiwgXCIqXCIpXHJcbiAgICAuYXR0cihcImZpbGxcIiwgXCJub25lXCIpXHJcbiAgICAuYXR0cihcInN0cm9rZS1vcGFjaXR5XCIsIDAuNilcclxuICAgIC5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIDEuNSlcclxuICAgIC5zZWxlY3RBbGwoXCJwYXRoXCIpXHJcbiAgICAuZGF0YShsaW5rcylcclxuICAgIC5qb2luKFwicGF0aFwiKVxyXG4gICAgLy8gLmF0dHIoXCJzdHJva2VcIiwgKGQpID0+XHJcbiAgICAvLyAgIGQuc291cmNlLmdyb3VwID09PSBkLnRhcmdldC5ncm91cCA/IGNvbG9yKGQuc291cmNlLmdyb3VwKSA6IFwiI2FhYVwiXHJcbiAgICAvLyApXHJcbiAgICAuYXR0cihcImRcIiwgYXJjKTtcclxuXHJcbiAgY29uc3Qgc3RlcCA9IDEwNDtcclxuXHJcbiAgY29uc3Qgbm9kZUNsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50LCBkZXN0OiBzdHJpbmcpID0+IHtcclxuICAgIG9wZW5PclN3aXRjaChkZXN0LCBldmVudCk7XHJcbiAgICBtb2RhbC5jbG9zZSgpO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IG92ZXJsYXkgPSBzdmdcclxuICAgIC5hcHBlbmQoXCJnXCIpXHJcbiAgICAuYXR0cihcImZpbGxcIiwgXCJub25lXCIpXHJcbiAgICAuYXR0cihcInBvaW50ZXItZXZlbnRzXCIsIFwiYWxsXCIpXHJcbiAgICAuc2VsZWN0QWxsKFwicmVjdFwiKVxyXG4gICAgLmRhdGEobm9kZXMpXHJcbiAgICAuam9pbihcInJlY3RcIilcclxuICAgIC5hdHRyKFwid2lkdGhcIiwgbWFyZ2luLmxlZnQgKyA0MClcclxuICAgIC5hdHRyKFwiaGVpZ2h0XCIsIHN0ZXApXHJcbiAgICAuYXR0cihcInlcIiwgKGQpID0+IHkoZC5uYW1lKSAtIHN0ZXAgLyAyKVxyXG4gICAgLm9uKFwibW91c2VvdmVyXCIsIChkKSA9PiB7XHJcbiAgICAgIHN2Zy5jbGFzc2VkKFwiaG92ZXJcIiwgdHJ1ZSk7XHJcbiAgICAgIGxhYmVsLmNsYXNzZWQoXCJwcmltYXJ5XCIsIChuKSA9PiBuID09PSBkKTtcclxuICAgICAgbGFiZWwuY2xhc3NlZChcclxuICAgICAgICBcInNlY29uZGFyeVwiLFxyXG4gICAgICAgIChuKSA9PlxyXG4gICAgICAgICAgbi5zb3VyY2VMaW5rcy5zb21lKChsKSA9PiBsLnRhcmdldCA9PT0gZCkgfHxcclxuICAgICAgICAgIG4udGFyZ2V0TGlua3Muc29tZSgobCkgPT4gbC5zb3VyY2UgPT09IGQpXHJcbiAgICAgICk7XHJcbiAgICAgIHBhdGhcclxuICAgICAgICAuY2xhc3NlZChcInByaW1hcnlcIiwgKGwpID0+IGwuc291cmNlID09PSBkIHx8IGwudGFyZ2V0ID09PSBkKVxyXG4gICAgICAgIC5maWx0ZXIoXCIucHJpbWFyeVwiKVxyXG4gICAgICAgIC5yYWlzZSgpO1xyXG4gICAgfSlcclxuICAgIC5vbihcIm1vdXNlb3V0XCIsIChkKSA9PiB7XHJcbiAgICAgIHN2Zy5jbGFzc2VkKFwiaG92ZXJcIiwgZmFsc2UpO1xyXG4gICAgICBsYWJlbC5jbGFzc2VkKFwicHJpbWFyeVwiLCBmYWxzZSk7XHJcbiAgICAgIGxhYmVsLmNsYXNzZWQoXCJzZWNvbmRhcnlcIiwgZmFsc2UpO1xyXG4gICAgICBwYXRoLmNsYXNzZWQoXCJwcmltYXJ5XCIsIGZhbHNlKS5vcmRlcigpO1xyXG4gICAgfSlcclxuICAgIC5vbihcImNsaWNrXCIsIChldmVudDogTW91c2VFdmVudCwgZDogZDNOb2RlKSA9PiB7XHJcbiAgICAgIG5vZGVDbGljayhldmVudCwgZC5uYW1lKTtcclxuICAgIH0pO1xyXG5cclxuICAvLyAgIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcclxuICAvLyAgICAgeS5kb21haW4obm9kZXMuc29ydCh2aWV3b2Ygb3JkZXIudmFsdWUpLm1hcChkID0+IGQuaWQpKTtcclxuXHJcbiAgLy8gICAgIGNvbnN0IHQgPSBzdmcudHJhbnNpdGlvbigpXHJcbiAgLy8gICAgICAgICAuZHVyYXRpb24oNzUwKTtcclxuXHJcbiAgLy8gICAgIGxhYmVsLnRyYW5zaXRpb24odClcclxuICAvLyAgICAgICAgIC5kZWxheSgoZCwgaSkgPT4gaSAqIDIwKVxyXG4gIC8vICAgICAgICAgLmF0dHJUd2VlbihcInRyYW5zZm9ybVwiLCBkID0+IHtcclxuICAvLyAgICAgICAgICAgY29uc3QgaSA9IGQzLmludGVycG9sYXRlTnVtYmVyKGQueSwgeShkLmlkKSk7XHJcbiAgLy8gICAgICAgICAgIHJldHVybiB0ID0+IGB0cmFuc2xhdGUoJHttYXJnaW4ubGVmdH0sJHtkLnkgPSBpKHQpfSlgO1xyXG4gIC8vICAgICAgICAgfSk7XHJcblxyXG4gIC8vICAgICBwYXRoLnRyYW5zaXRpb24odClcclxuICAvLyAgICAgICAgIC5kdXJhdGlvbig3NTAgKyBub2Rlcy5sZW5ndGggKiAyMClcclxuICAvLyAgICAgICAgIC5hdHRyVHdlZW4oXCJkXCIsIGQgPT4gKCkgPT4gYXJjKGQpKTtcclxuXHJcbiAgLy8gICAgIG92ZXJsYXkudHJhbnNpdGlvbih0KVxyXG4gIC8vICAgICAgICAgLmRlbGF5KChkLCBpKSA9PiBpICogMjApXHJcbiAgLy8gICAgICAgICAuYXR0cihcInlcIiwgZCA9PiB5KGQuaWQpIC0gc3RlcCAvIDIpO1xyXG4gIC8vICAgfVxyXG5cclxuICAvLyAgIHZpZXdvZiBvcmRlci5hZGRFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgdXBkYXRlKTtcclxuICAvLyAgIGludmFsaWRhdGlvbi50aGVuKCgpID0+IHZpZXdvZiBvcmRlci5yZW1vdmVFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgdXBkYXRlKSk7XHJcblxyXG4gIGZ1bmN0aW9uIGFyYyhkOiB7IHNvdXJjZTogeyB5OiBudW1iZXIgfTsgdGFyZ2V0OiB7IHk6IG51bWJlciB9IH0pIHtcclxuICAgIGNvbnN0IHkxID0gZC5zb3VyY2UueTtcclxuICAgIGNvbnN0IHkyID0gZC50YXJnZXQueTtcclxuICAgIGNvbnN0IHIgPSBNYXRoLmFicyh5MiAtIHkxKSAvIDI7XHJcbiAgICByZXR1cm4gYE0ke21hcmdpbi5sZWZ0fSwke3kxfUEke3J9LCR7cn0gMCwwLCR7eTEgPCB5MiA/IDEgOiAwfSAke21hcmdpbi5sZWZ0XHJcbiAgICAgIH0sJHt5Mn1gO1xyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gem9vbWVkKHsgdHJhbnNmb3JtIH0pIHtcclxuICAgIHN2Zy5hdHRyKFwidHJhbnNmb3JtXCIsIHRyYW5zZm9ybSk7XHJcbiAgfVxyXG4gIHN2Zy5jYWxsKFxyXG4gICAgZDNcclxuICAgICAgLnpvb20oKVxyXG4gICAgICAuZXh0ZW50KFtcclxuICAgICAgICBbMCwgMF0sXHJcbiAgICAgICAgW3dpZHRoLCBoZWlnaHRdLFxyXG4gICAgICBdKVxyXG4gICAgICAuc2NhbGVFeHRlbnQoWzAuNSwgOF0pXHJcbiAgICAgIC5vbihcInpvb21cIiwgem9vbWVkKVxyXG4gICk7XHJcbn07XHJcbiIsICJpbXBvcnQgKiBhcyBkMyBmcm9tIFwiZDNcIjtcclxuaW1wb3J0IHR5cGUgR3JhcGggZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHR5cGUgeyBURmlsZSB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgdHlwZSB7IEFkakxpc3RJdGVtLCBkM0xpbmssIGQzTm9kZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7IGJmc0Fkakxpc3QsIGRmc0ZsYXRBZGpMaXN0LCBWaXNNb2RhbCB9IGZyb20gXCIuL1Zpc01vZGFsXCI7XHJcbmltcG9ydCB7IG9wZW5PclN3aXRjaCB9IGZyb20gXCJvYnNpZGlhbi1jb21tdW5pdHktbGliXCI7XHJcbmltcG9ydCB7IGdldEN1cnJGaWxlIH0gZnJvbSBcIi4uL1V0aWxzL09ic2lkaWFuVXRpbHNcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjaXJjbGVQYWNraW5nID0gKFxyXG4gIGdyYXBoOiBHcmFwaCxcclxuICBjdXJyRmlsZTogVEZpbGUsXHJcbiAgbW9kYWw6IFZpc01vZGFsLFxyXG4gIHdpZHRoOiBudW1iZXIsXHJcbiAgaGVpZ2h0OiBudW1iZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgZmxhdEFkaiA9IGRmc0ZsYXRBZGpMaXN0KGdyYXBoLCBjdXJyRmlsZS5iYXNlbmFtZSk7XHJcbiAgY29uc29sZS5sb2coeyBmbGF0QWRqIH0pO1xyXG5cclxuICBjb25zdCBoaWVyYXJjaHkgPSBkMy5zdHJhdGlmeSgpKGZsYXRBZGopO1xyXG4gIGNvbnNvbGUubG9nKHsgaGllcmFyY2h5IH0pO1xyXG5cclxuICBjb25zdCBhZGpMaXN0OiBBZGpMaXN0SXRlbVtdID0gYmZzQWRqTGlzdChncmFwaCwgY3VyckZpbGUuYmFzZW5hbWUpO1xyXG4gIGNvbnNvbGUubG9nKHsgYWRqTGlzdCB9KTtcclxuXHJcbiAgY29uc3Qgbm9Eb3VibGVzID0gWy4uLmFkakxpc3RdO1xyXG4gIG5vRG91Ymxlcy5mb3JFYWNoKChhLCBpKSA9PiB7XHJcbiAgICBpZiAobm9Eb3VibGVzLnNvbWUoKGIsIGopID0+IGkgIT09IGogJiYgYS5uYW1lID09PSBiLm5hbWUpKSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gbm9Eb3VibGVzLmZpbmRJbmRleCgoYiwgaikgPT4gaSAhPT0gaiAmJiBhLm5hbWUgPT09IGIubmFtZSk7XHJcbiAgICAgIG5vRG91Ymxlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICAvLyBjb25zdCBub0RvdWJsZXMgPSBhZGpMaXN0LmZpbHRlcigoYSkgPT4ge1xyXG4gIC8vICAgIWFkakxpc3Quc29tZSgoYikgPT4ge1xyXG4gIC8vICAgICBjb25zb2xlLmxvZyh7IGEsIGIgfSk7XHJcbiAgLy8gICAgIHJldHVybiBhLm5hbWUgIT09IGIubmFtZSAmJiBhLnBhcmVudElkID09PSBiLnBhcmVudElkO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gfSk7XHJcbiAgY29uc29sZS5sb2coeyBub0RvdWJsZXMgfSk7XHJcblxyXG4gIC8vIGNvbnN0IHJvb3QgPSBzdHJhdGlmeShub0RvdWJsZXMpO1xyXG4gIC8vIGNvbnNvbGUubG9nKHJvb3QpO1xyXG5cclxuICAvLyBjb25zdCBoaWVyYXJjaHk6IGQzVHJlZSA9IGNyZWF0ZVRyZWVIaWVyYXJjaHkobm9Eb3VibGVzLCB7XHJcbiAgLy8gICBpZDogXCJuYW1lXCIsXHJcbiAgLy8gICBleGNsdWRlUGFyZW50OiB0cnVlLFxyXG4gIC8vIH0pO1xyXG5cclxuICAvLyBjb25zb2xlLmxvZyh7IGhpZXJhcmNoeSB9KTtcclxuXHJcbiAgY29uc3QgbGlua0FycjogZDNMaW5rW10gPSBub0RvdWJsZXMubWFwKChkKSA9PiB7XHJcbiAgICByZXR1cm4geyBzb3VyY2U6IGQubmFtZSwgdGFyZ2V0OiBkLnBhcmVudElkIH07XHJcbiAgfSk7XHJcbiAgY29uc3QgbGlua3MgPSBsaW5rQXJyLm1hcCgoZCkgPT4gT2JqZWN0LmNyZWF0ZShkKSk7XHJcblxyXG4gIGNvbnN0IHN2ZyA9IGQzXHJcbiAgICAuc2VsZWN0KFwiLmQzLWdyYXBoXCIpXHJcbiAgICAuYXBwZW5kKFwic3ZnXCIpXHJcbiAgICAuYXR0cihcImhlaWdodFwiLCBoZWlnaHQpXHJcbiAgICAuYXR0cihcIndpZHRoXCIsIHdpZHRoKTtcclxuXHJcbiAgY29uc3Qgbm9kZUNvbG91ciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZShcclxuICAgIFwiLS10ZXh0LWFjY2VudFwiXHJcbiAgKTtcclxuXHJcbiAgLy8gSW5pdGlhbGl6ZSB0aGUgY2lyY2xlOiBhbGwgbG9jYXRlZCBhdCB0aGUgY2VudGVyIG9mIHRoZSBzdmcgYXJlYVxyXG4gIGNvbnN0IG5vZGUgPSBzdmdcclxuICAgIC5hcHBlbmQoXCJnXCIpXHJcbiAgICAuc2VsZWN0QWxsKFwiY2lyY2xlXCIpXHJcbiAgICAuZGF0YShub0RvdWJsZXMpXHJcbiAgICAuam9pbihcImNpcmNsZVwiKVxyXG4gICAgLmF0dHIoXCJyXCIsIChkKSA9PiBNYXRoLnJvdW5kKGQuaGVpZ2h0IC8gMTApICsgMTApXHJcbiAgICAuYXR0cihcImN4XCIsIHdpZHRoIC8gMilcclxuICAgIC5hdHRyKFwiY3lcIiwgaGVpZ2h0IC8gMilcclxuICAgIC5zdHlsZShcImZpbGxcIiwgbm9kZUNvbG91cilcclxuICAgIC5zdHlsZShcImZpbGwtb3BhY2l0eVwiLCAwLjYpXHJcbiAgICAuYXR0cihcInN0cm9rZVwiLCBub2RlQ29sb3VyKVxyXG4gICAgLnN0eWxlKFwic3Ryb2tlLXdpZHRoXCIsIDQpO1xyXG5cclxuICBub2RlLmF0dHIoXCJhcmlhLWxhYmVsXCIsIChkOiBBZGpMaXN0SXRlbSkgPT4gZC5uYW1lKTtcclxuXHJcbiAgY29uc3Qgbm9kZUNsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50LCBkZXN0OiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IGN1cnJGaWxlID0gZ2V0Q3VyckZpbGUoKTtcclxuICAgIG9wZW5PclN3aXRjaChkZXN0LCBldmVudCk7XHJcbiAgICBtb2RhbC5jbG9zZSgpO1xyXG4gIH07XHJcbiAgbm9kZS5vbihcImNsaWNrXCIsIChldmVudDogTW91c2VFdmVudCwgZDogZDNOb2RlKSA9PiB7XHJcbiAgICBub2RlQ2xpY2soZXZlbnQsIGQubmFtZSk7XHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0IGxpbmsgPSBzdmdcclxuICAgIC5hcHBlbmQoXCJnXCIpXHJcbiAgICAuYXR0cihcInN0cm9rZVwiLCBcIiM4NjgyODJcIilcclxuICAgIC5hdHRyKFwic3Ryb2tlLW9wYWNpdHlcIiwgMC42KVxyXG4gICAgLnNlbGVjdEFsbChcImxpbmVcIilcclxuICAgIC5kYXRhKGxpbmtzKVxyXG4gICAgLmpvaW4oXCJsaW5lXCIpXHJcbiAgICAuYXR0cihcInN0cm9rZS13aWR0aFwiLCAwLjgpO1xyXG5cclxuICAvLyBGZWF0dXJlcyBvZiB0aGUgZm9yY2VzIGFwcGxpZWQgdG8gdGhlIG5vZGVzOlxyXG4gIGNvbnN0IHNpbXVsYXRpb24gPSBkM1xyXG4gICAgLmZvcmNlU2ltdWxhdGlvbigpXHJcbiAgICAuZm9yY2UoXHJcbiAgICAgIFwiY2VudGVyXCIsXHJcbiAgICAgIGQzXHJcbiAgICAgICAgLmZvcmNlQ2VudGVyKClcclxuICAgICAgICAueCh3aWR0aCAvIDIpXHJcbiAgICAgICAgLnkoaGVpZ2h0IC8gMilcclxuICAgICkgLy8gQXR0cmFjdGlvbiB0byB0aGUgY2VudGVyIG9mIHRoZSBzdmcgYXJlYVxyXG4gICAgLmZvcmNlKFwiY2hhcmdlXCIsIGQzLmZvcmNlTWFueUJvZHkoKS5zdHJlbmd0aCgwLjUpKSAvLyBOb2RlcyBhcmUgYXR0cmFjdGVkIG9uZSBlYWNoIG90aGVyIG9mIHZhbHVlIGlzID4gMFxyXG4gICAgLmZvcmNlKFxyXG4gICAgICBcImNvbGxpZGVcIixcclxuICAgICAgZDMuZm9yY2VDb2xsaWRlKCkuc3RyZW5ndGgoMC4wMjUpLnJhZGl1cygzMCkuaXRlcmF0aW9ucygxKVxyXG4gICAgKTsgLy8gRm9yY2UgdGhhdCBhdm9pZHMgY2lyY2xlIG92ZXJsYXBwaW5nXHJcblxyXG4gIC8vIEFwcGx5IHRoZXNlIGZvcmNlcyB0byB0aGUgbm9kZXMgYW5kIHVwZGF0ZSB0aGVpciBwb3NpdGlvbnMuXHJcbiAgLy8gT25jZSB0aGUgZm9yY2UgYWxnb3JpdGhtIGlzIGhhcHB5IHdpdGggcG9zaXRpb25zICgnYWxwaGEnIHZhbHVlIGlzIGxvdyBlbm91Z2gpLCBzaW11bGF0aW9ucyB3aWxsIHN0b3AuXHJcbiAgc2ltdWxhdGlvbi5ub2Rlcyhub0RvdWJsZXMpLm9uKFwidGlja1wiLCBmdW5jdGlvbiAoZCkge1xyXG4gICAgbm9kZS5hdHRyKFwiY3hcIiwgKGQpID0+IGQueCkuYXR0cihcImN5XCIsIChkKSA9PiBkLnkpO1xyXG4gIH0pO1xyXG5cclxuICBmdW5jdGlvbiB6b29tZWQoeyB0cmFuc2Zvcm0gfSkge1xyXG4gICAgbm9kZS5hdHRyKFwidHJhbnNmb3JtXCIsIHRyYW5zZm9ybSk7XHJcbiAgfVxyXG4gIHN2Zy5jYWxsKFxyXG4gICAgZDNcclxuICAgICAgLnpvb20oKVxyXG4gICAgICAuZXh0ZW50KFtcclxuICAgICAgICBbMCwgMF0sXHJcbiAgICAgICAgW3dpZHRoLCBoZWlnaHRdLFxyXG4gICAgICBdKVxyXG4gICAgICAuc2NhbGVFeHRlbnQoWzAuNSwgOF0pXHJcbiAgICAgIC5vbihcInpvb21cIiwgem9vbWVkKVxyXG4gICk7XHJcblxyXG4gIGNvbnN0IGRyYWcgPSAoXHJcbiAgICBzaW11bGF0aW9uOiBkMy5TaW11bGF0aW9uPGQzLlNpbXVsYXRpb25Ob2RlRGF0dW0sIHVuZGVmaW5lZD5cclxuICApID0+IHtcclxuICAgIGZ1bmN0aW9uIGRyYWdzdGFydGVkKGV2ZW50LCBkKSB7XHJcbiAgICAgIGlmICghZXZlbnQuYWN0aXZlKSBzaW11bGF0aW9uLmFscGhhVGFyZ2V0KDAuMykucmVzdGFydCgpO1xyXG4gICAgICBkLmZ4ID0gZC54O1xyXG4gICAgICBkLmZ5ID0gZC55O1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGRyYWdnZWQoZXZlbnQsIGQpIHtcclxuICAgICAgZC5meCA9IGV2ZW50Lng7XHJcbiAgICAgIGQuZnkgPSBldmVudC55O1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGRyYWdlbmRlZChldmVudCwgZCkge1xyXG4gICAgICBpZiAoIWV2ZW50LmFjdGl2ZSkgc2ltdWxhdGlvbi5hbHBoYVRhcmdldCgwKTtcclxuICAgICAgZC5meCA9IG51bGw7XHJcbiAgICAgIGQuZnkgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkM1xyXG4gICAgICAuZHJhZygpXHJcbiAgICAgIC5vbihcInN0YXJ0XCIsIGRyYWdzdGFydGVkKVxyXG4gICAgICAub24oXCJkcmFnXCIsIGRyYWdnZWQpXHJcbiAgICAgIC5vbihcImVuZFwiLCBkcmFnZW5kZWQpO1xyXG4gIH07XHJcblxyXG4gIG5vZGUuY2FsbChkcmFnKHNpbXVsYXRpb24pKTtcclxuXHJcbiAgLy8gICBjb25zdCBwYWNrID0gKGRhdGEpID0+XHJcbiAgLy8gICAgIGQzLnBhY2soKS5zaXplKFt3aWR0aCwgaGVpZ2h0XSkucGFkZGluZygzKShcclxuICAvLyAgICAgICBkM1xyXG4gIC8vICAgICAgICAgLmhpZXJhcmNoeShkYXRhKVxyXG4gIC8vICAgICAgICAgLnN1bSgoZCkgPT4gZC52YWx1ZSlcclxuICAvLyAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLnZhbHVlIC0gYS52YWx1ZSlcclxuICAvLyAgICAgKTtcclxuXHJcbiAgLy8gICBjb25zdCByb290ID0gcGFjayhoaWVyYXJjaHkpO1xyXG5cclxuICAvLyAgIGNvbnN0IHN2ZyA9IGQzXHJcbiAgLy8gICAgIC5zZWxlY3QoXCIuZDMtZ3JhcGhcIilcclxuICAvLyAgICAgLmFwcGVuZChcInN2Z1wiKVxyXG4gIC8vICAgICAuYXR0cihcImhlaWdodFwiLCBoZWlnaHQpXHJcbiAgLy8gICAgIC5hdHRyKFwid2lkdGhcIiwgd2lkdGgpXHJcbiAgLy8gICAgIC5zdHlsZShcImZvbnRcIiwgXCIxMHB4IHNhbnMtc2VyaWZcIilcclxuICAvLyAgICAgLnN0eWxlKFwib3ZlcmZsb3dcIiwgXCJ2aXNpYmxlXCIpXHJcbiAgLy8gICAgIC5hdHRyKFwidGV4dC1hbmNob3JcIiwgXCJtaWRkbGVcIik7XHJcblxyXG4gIC8vICAgY29uc3Qgbm9kZSA9IHN2Z1xyXG4gIC8vICAgICAuYXBwZW5kKFwiZ1wiKVxyXG4gIC8vICAgICAuYXR0cihcInBvaW50ZXItZXZlbnRzXCIsIFwiYWxsXCIpXHJcbiAgLy8gICAgIC5zZWxlY3RBbGwoXCJnXCIpXHJcbiAgLy8gICAgIC5kYXRhKHJvb3QuZGVzY2VuZGFudHMoKSlcclxuICAvLyAgICAgLmpvaW4oXCJnXCIpXHJcbiAgLy8gICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIChkKSA9PiBgdHJhbnNsYXRlKCR7ZC54fSwke2QueX0pYCk7XHJcblxyXG4gIC8vICAgbm9kZVxyXG4gIC8vICAgICAuYXBwZW5kKFwiY2lyY2xlXCIpXHJcbiAgLy8gICAgIC5hdHRyKFwiclwiLCAoZCkgPT4gZC5yKVxyXG4gIC8vICAgICAuYXR0cihcInN0cm9rZVwiLCAoZCkgPT4gKGQuY2hpbGRyZW4gPyBcIiNiYmJcIiA6IFwibm9uZVwiKSlcclxuICAvLyAgICAgLmF0dHIoXCJmaWxsXCIsIChkKSA9PiAoZC5jaGlsZHJlbiA/IFwibm9uZVwiIDogXCIjZGRkXCIpKTtcclxuXHJcbiAgLy8gICBjb25zdCBsZWFmID0gbm9kZS5maWx0ZXIoKGQpID0+ICFkLmNoaWxkcmVuKTtcclxuXHJcbiAgLy8gICBsZWFmLnNlbGVjdChcImNpcmNsZVwiKTtcclxuXHJcbiAgLy8gICAvLyBsZWFmXHJcbiAgLy8gICAvLyAgIC5hcHBlbmQoXCJjbGlwUGF0aFwiKVxyXG4gIC8vICAgLy8gICAuYXR0cihcImlkXCIsIChkKSA9PiAoZC5jbGlwVWlkID0gRE9NLnVpZChcImNsaXBcIikpLmlkKVxyXG4gIC8vICAgLy8gICAuYXBwZW5kKFwidXNlXCIpXHJcbiAgLy8gICAvLyAgIC5hdHRyKFwieGxpbms6aHJlZlwiLCAoZCkgPT4gZC5sZWFmVWlkLmhyZWYpO1xyXG5cclxuICAvLyAgIC8vIGxlYWZcclxuICAvLyAgIC8vICAgLmFwcGVuZChcInRleHRcIilcclxuICAvLyAgIC8vICAgLmF0dHIoXCJjbGlwLXBhdGhcIiwgKGQpID0+IGQuY2xpcFVpZClcclxuICAvLyAgIC8vICAgLnNlbGVjdEFsbChcInRzcGFuXCIpXHJcbiAgLy8gICAvLyAgIC5kYXRhKChkKSA9PiBkLmRhdGEubmFtZS5zcGxpdCgvKD89W0EtWl1bXkEtWl0pL2cpKVxyXG4gIC8vICAgLy8gICAuam9pbihcInRzcGFuXCIpXHJcbiAgLy8gICAvLyAgIC5hdHRyKFwieFwiLCAwKVxyXG4gIC8vICAgLy8gICAuYXR0cihcInlcIiwgKGQsIGksIG5vZGVzKSA9PiBgJHtpIC0gbm9kZXMubGVuZ3RoIC8gMiArIDAuOH1lbWApXHJcbiAgLy8gICAvLyAgIC50ZXh0KChkKSA9PiBkKTtcclxuXHJcbiAgLy8gICBub2RlLmFwcGVuZChcInRpdGxlXCIpLnRleHQoXHJcbiAgLy8gICAgIChkKSA9PiBgJHtkXHJcbiAgLy8gICAgICAgLmFuY2VzdG9ycygpXHJcbiAgLy8gICAgICAgLm1hcCgoZCkgPT4gZC5kYXRhLmRhdGEubmFtZSlcclxuICAvLyAgICAgICAucmV2ZXJzZSgpXHJcbiAgLy8gICAgICAgLmpvaW4oXCIvXCIpfVxyXG4gIC8vICR7ZC52YWx1ZS50b0xvY2FsZVN0cmluZygpfWBcclxuICAvLyAgICk7XHJcbn07XHJcbiIsICJpbXBvcnQgKiBhcyBkMyBmcm9tIFwiZDNcIjtcclxuaW1wb3J0IHR5cGUgR3JhcGggZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHR5cGUgeyBURmlsZSB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgeyBkZnNGbGF0QWRqTGlzdCwgVmlzTW9kYWwgfSBmcm9tIFwiLi9WaXNNb2RhbFwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGVkZ2VCdW5kbGluZyA9IChcclxuICBncmFwaDogR3JhcGgsXHJcbiAgY3VyckZpbGU6IFRGaWxlLFxyXG4gIG1vZGFsOiBWaXNNb2RhbCxcclxuICB3aWR0aDogbnVtYmVyLFxyXG4gIGhlaWdodDogbnVtYmVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGZsYXRBZGogPSBkZnNGbGF0QWRqTGlzdChncmFwaCwgY3VyckZpbGUuYmFzZW5hbWUpO1xyXG4gIGNvbnNvbGUubG9nKHsgZmxhdEFkaiB9KTtcclxuXHJcbiAgY29uc3QgaGllciA9IGQzLnN0cmF0aWZ5KCkoZmxhdEFkaik7XHJcbiAgY29uc29sZS5sb2coeyBoaWVyIH0pO1xyXG5cclxuICBjb25zdCBQQURESU5HX0JVQkJMRSA9IDE1OyAvLyBkaXN0YW5jZSBiZXR3ZWVuIGVkZ2UgZW5kIGFuZCBidWJibGVcclxuICBjb25zdCBQQURESU5HX0xBQkVMID0gMzA7IC8vIGRpc3RhbmNlIGJldHdlZW4gZWRnZSBlbmQgYW5kIGVuZ2luZWVyIG5hbWVcclxuICBjb25zdCBCVUJCTEVfU0laRV9NSU4gPSA0O1xyXG4gIGNvbnN0IEJVQkJMRV9TSVpFX01BWCA9IDIwO1xyXG5cclxuICB2YXIgZGlhbWV0ZXIgPSA1NjAsXHJcbiAgICByYWRpdXMgPSBkaWFtZXRlciAvIDIsXHJcbiAgICBpbm5lclJhZGl1cyA9IHJhZGl1cyAtIDE3MDsgLy8gYmV0d2VlbiBjZW50ZXIgYW5kIGVkZ2UgZW5kXHJcblxyXG4gIC8vIFRoZSAnY2x1c3RlcicgZnVuY3Rpb24gdGFrZXMgMSBhcmd1bWVudCBhcyBpbnB1dC4gSXQgYWxzbyBoYXMgbWV0aG9kcyAoPz8pIGxpa2UgY2x1c3Rlci5zZXBhcmF0aW9uKCksIGNsdXN0ZXIuc2l6ZSgpIGFuZCBjbHVzdGVyLm5vZGVTaXplKClcclxuICB2YXIgY2x1c3RlciA9IGQzLmNsdXN0ZXIoKS5zaXplKFszNjAsIGlubmVyUmFkaXVzXSk7XHJcblxyXG4gIHZhciBsaW5lID0gZDNcclxuICAgIC5saW5lUmFkaWFsKClcclxuICAgIC5jdXJ2ZShkMy5jdXJ2ZUJ1bmRsZS5iZXRhKDAuODUpKVxyXG4gICAgLnJhZGl1cyhmdW5jdGlvbiAoZCkge1xyXG4gICAgICByZXR1cm4gZFsxXTtcclxuICAgIH0pXHJcbiAgICAuYW5nbGUoZnVuY3Rpb24gKGQpIHtcclxuICAgICAgcmV0dXJuIChkWzBdIC8gMTgwKSAqIE1hdGguUEk7XHJcbiAgICB9KTtcclxuXHJcbiAgY29uc3Qgc3ZnID0gZDNcclxuICAgIC5zZWxlY3QoXCIuZDMtZ3JhcGhcIilcclxuICAgIC5hcHBlbmQoXCJzdmdcIilcclxuICAgIC5hdHRyKFwiaGVpZ2h0XCIsIGhlaWdodClcclxuICAgIC5hdHRyKFwid2lkdGhcIiwgd2lkdGgpXHJcbiAgICAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyByYWRpdXMgKyBcIixcIiArIHJhZGl1cyArIFwiKVwiKTtcclxuXHJcbiAgdmFyIGxpbmsgPSBzdmcuYXBwZW5kKFwiZ1wiKS5zZWxlY3RBbGwoXCIubGlua1wiKSxcclxuICAgIGxhYmVsID0gc3ZnLmFwcGVuZChcImdcIikuc2VsZWN0QWxsKFwiLmxhYmVsXCIpLFxyXG4gICAgYnViYmxlID0gc3ZnLmFwcGVuZChcImdcIikuc2VsZWN0QWxsKFwiLmJ1YmJsZVwiKTtcclxuXHJcbiAgLy8gQWRkIGEgc2NhbGUgZm9yIGJ1YmJsZSBzaXplXHJcbiAgdmFyIGJ1YmJsZVNpemVTY2FsZSA9IGQzXHJcbiAgICAuc2NhbGVMaW5lYXIoKVxyXG4gICAgLmRvbWFpbihbMCwgMTAwXSlcclxuICAgIC5yYW5nZShbQlVCQkxFX1NJWkVfTUlOLCBCVUJCTEVfU0laRV9NQVhdKTtcclxuXHJcbiAgLy8gU2NhbGUgZm9yIHRoZSBidWJibGUgc2l6ZVxyXG5cclxuICAvLyBJZiB3YW5uYSBzZWUgeW91ciBkYXRhXHJcbiAgLy8gY29uc29sZS5sb2coaGllcmFyY2hpY2FsRGF0YSlcclxuXHJcbiAgLy8gUmVmb3JtYXQgdGhlIGRhdGFcclxuICB2YXIgcm9vdCA9IHBhY2thZ2VIaWVyYXJjaHkoaGllcilcclxuICAgIC8vZGVidWdnZXI7XHJcbiAgICAuc3VtKGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGQpO1xyXG4gICAgICByZXR1cm4gZC5oZWlnaHQ7XHJcbiAgICB9KTtcclxuXHJcbiAgLy8gY29uc29sZS5sb2cocm9vdClcclxuXHJcbiAgLy8gQnVpbGQgYW4gb2JqZWN0IHRoYXQgZ2l2ZXMgZmVhdHVyZSBvZiBlYWNoIGxlYXZlc1xyXG4gIGNsdXN0ZXIocm9vdCk7XHJcbiAgY29uc3QgbGVhdmVzID0gcm9vdC5sZWF2ZXMoKTtcclxuXHJcbiAgLy8gTGVhdmVzIGlzIGFuIGFycmF5IG9mIE9iamVjdHMuIDEgaXRlbSA9IG9uZSBsZWFmLiBQcm92aWRlcyB4IGFuZCB5IGZvciBsZWFmIHBvc2l0aW9uIGluIHRoZSBzdmcuIEFsc28gZ2l2ZXMgZGV0YWlscyBhYm91dCBpdHMgcGFyZW50LlxyXG4gIGNvbnN0IF9saW5rID0gbGlua1xyXG4gICAgLmRhdGEocGFja2FnZUltcG9ydHMobGVhdmVzKSlcclxuICAgIC5lbnRlcigpXHJcbiAgICAuYXBwZW5kKFwicGF0aFwiKVxyXG4gICAgLmVhY2goZnVuY3Rpb24gKGQpIHtcclxuICAgICAgKGQuc291cmNlID0gZFswXSksIChkLnRhcmdldCA9IGRbZC5sZW5ndGggLSAxXSk7XHJcbiAgICB9KVxyXG4gICAgLmF0dHIoXCJjbGFzc1wiLCBcImxpbmtcIilcclxuICAgIC5hdHRyKFwiZFwiLCBsaW5lKVxyXG4gICAgLmF0dHIoXCJmaWxsXCIsIFwibm9uZVwiKVxyXG4gICAgLmF0dHIoXCJzdHJva2VcIiwgXCJibGFja1wiKTtcclxuXHJcbiAgY29uc3QgX2xhYmVsID0gbGFiZWxcclxuICAgIC5kYXRhKGxlYXZlcylcclxuICAgIC5lbnRlcigpXHJcbiAgICAuYXBwZW5kKFwidGV4dFwiKVxyXG4gICAgLmF0dHIoXCJjbGFzc1wiLCBcImxhYmVsXCIpXHJcbiAgICAuYXR0cihcImR5XCIsIFwiMC4zMWVtXCIpXHJcbiAgICAuYXR0cihcInRyYW5zZm9ybVwiLCBmdW5jdGlvbiAoZCkge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIFwicm90YXRlKFwiICtcclxuICAgICAgICAoZC54IC0gOTApICtcclxuICAgICAgICBcIil0cmFuc2xhdGUoXCIgK1xyXG4gICAgICAgIChkLnkgKyBQQURESU5HX0xBQkVMKSArXHJcbiAgICAgICAgXCIsMClcIiArXHJcbiAgICAgICAgKGQueCA8IDE4MCA/IFwiXCIgOiBcInJvdGF0ZSgxODApXCIpXHJcbiAgICAgICk7XHJcbiAgICB9KVxyXG4gICAgLmF0dHIoXCJ0ZXh0LWFuY2hvclwiLCBmdW5jdGlvbiAoZCkge1xyXG4gICAgICByZXR1cm4gZC54IDwgMTgwID8gXCJzdGFydFwiIDogXCJlbmRcIjtcclxuICAgIH0pXHJcbiAgICAudGV4dChmdW5jdGlvbiAoZCkge1xyXG4gICAgICByZXR1cm4gZC5kYXRhLmtleTtcclxuICAgIH0pO1xyXG5cclxuICBjb25zdCBfYnViYmxlID0gYnViYmxlXHJcbiAgICAuZGF0YShsZWF2ZXMpXHJcbiAgICAuZW50ZXIoKVxyXG4gICAgLmFwcGVuZChcImNpcmNsZVwiKVxyXG4gICAgLmF0dHIoXCJjbGFzc1wiLCBcImJ1YmJsZVwiKVxyXG4gICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgZnVuY3Rpb24gKGQpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICBcInJvdGF0ZShcIiArIChkLnggLSA5MCkgKyBcIil0cmFuc2xhdGUoXCIgKyAoZC55ICsgUEFERElOR19CVUJCTEUpICsgXCIsMClcIlxyXG4gICAgICApO1xyXG4gICAgfSlcclxuICAgIC5hdHRyKFwiclwiLCAoZCkgPT4gYnViYmxlU2l6ZVNjYWxlKGQudmFsdWUpKVxyXG4gICAgLmF0dHIoXCJzdHJva2VcIiwgXCJibGFja1wiKVxyXG4gICAgLmF0dHIoXCJmaWxsXCIsIFwiIzY5YTNiMlwiKVxyXG4gICAgLnN0eWxlKFwib3BhY2l0eVwiLCAwLjIpO1xyXG5cclxuICAvLyBMYXppbHkgY29uc3RydWN0IHRoZSBwYWNrYWdlIGhpZXJhcmNoeSBmcm9tIGNsYXNzIG5hbWVzLlxyXG4gIGZ1bmN0aW9uIHBhY2thZ2VIaWVyYXJjaHkoY2xhc3Nlcykge1xyXG4gICAgdmFyIG1hcCA9IHt9O1xyXG5cclxuICAgIGZ1bmN0aW9uIGZpbmQobmFtZSwgZGF0YSkge1xyXG4gICAgICB2YXIgbm9kZSA9IG1hcFtuYW1lXSxcclxuICAgICAgICBpO1xyXG4gICAgICBpZiAoIW5vZGUpIHtcclxuICAgICAgICBub2RlID0gbWFwW25hbWVdID0gZGF0YSB8fCB7IG5hbWU6IG5hbWUsIGNoaWxkcmVuOiBbXSB9O1xyXG4gICAgICAgIGlmIChuYW1lLmxlbmd0aCkge1xyXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgbm9kZS5wYXJlbnQgPSBmaW5kKG5hbWUuc3Vic3RyaW5nKDAsIChpID0gbmFtZS5sYXN0SW5kZXhPZihcIi5cIikpKSk7XHJcbiAgICAgICAgICBub2RlLnBhcmVudC5jaGlsZHJlbi5wdXNoKG5vZGUpO1xyXG4gICAgICAgICAgbm9kZS5rZXkgPSBuYW1lLnN1YnN0cmluZyhpICsgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfVxyXG5cclxuICAgIGNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbiAoZCkge1xyXG4gICAgICBmaW5kKGQubmFtZSwgZCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZDMuaGllcmFyY2h5KG1hcFtcIlwiXSk7XHJcbiAgfVxyXG5cclxuICAvLyBSZXR1cm4gYSBsaXN0IG9mIGltcG9ydHMgZm9yIHRoZSBnaXZlbiBhcnJheSBvZiBub2Rlcy5cclxuICBmdW5jdGlvbiBwYWNrYWdlSW1wb3J0cyhub2Rlcykge1xyXG4gICAgdmFyIG1hcCA9IHt9LFxyXG4gICAgICBpbXBvcnRzID0gW107XHJcblxyXG4gICAgLy8gQ29tcHV0ZSBhIG1hcCBmcm9tIG5hbWUgdG8gbm9kZS5cclxuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKGQpIHtcclxuICAgICAgbWFwW2QuZGF0YS5uYW1lXSA9IGQ7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBGb3IgZWFjaCBpbXBvcnQsIGNvbnN0cnVjdCBhIGxpbmsgZnJvbSB0aGUgc291cmNlIHRvIHRhcmdldCBub2RlLlxyXG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAoZCkge1xyXG4gICAgICBpZiAoZC5kYXRhLmltcG9ydHMpXHJcbiAgICAgICAgZC5kYXRhLmltcG9ydHMuZm9yRWFjaChmdW5jdGlvbiAoaSkge1xyXG4gICAgICAgICAgaW1wb3J0cy5wdXNoKG1hcFtkLmRhdGEubmFtZV0ucGF0aChtYXBbaV0pKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBpbXBvcnRzO1xyXG4gIH1cclxufTtcclxuIiwgImltcG9ydCAqIGFzIGQzIGZyb20gXCJkM1wiO1xyXG5pbXBvcnQgdHlwZSBHcmFwaCBmcm9tIFwiZ3JhcGhvbG9neVwiO1xyXG5pbXBvcnQgeyBvcGVuT3JTd2l0Y2ggfSBmcm9tIFwib2JzaWRpYW4tY29tbXVuaXR5LWxpYlwiO1xyXG5pbXBvcnQgdHlwZSB7IGQzTm9kZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7IGdyYXBobGliVG9EMywgVmlzTW9kYWwgfSBmcm9tIFwiLi9WaXNNb2RhbFwiO1xyXG5pbXBvcnQgdHlwZSB7IFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcblxyXG5leHBvcnQgY29uc3QgZm9yY2VEaXJlY3RlZEcgPSAoXHJcbiAgZ3JhcGg6IEdyYXBoLFxyXG4gIGN1cnJGaWxlOiBURmlsZSxcclxuICBtb2RhbDogVmlzTW9kYWwsXHJcbiAgd2lkdGg6IG51bWJlcixcclxuICBoZWlnaHQ6IG51bWJlclxyXG4pID0+IHtcclxuICBjb25zdCB7IHNldHRpbmdzIH0gPSBtb2RhbC5wbHVnaW47XHJcbiAgbGV0IG5vZGVUb0dldFRvID0gY3VyckZpbGUuYmFzZW5hbWU7XHJcbiAgY29uc29sZS5sb2coeyBub2RlVG9HZXRUbyB9KTtcclxuXHJcbiAgY29uc29sZS50aW1lKFwiRmluZCBhbGwgcGF0aHNcIik7XHJcbiAgLy8gbGV0IHBhdGhzRnJvbU5vZGVUb0dldFRvID0gZ3JhcGhsaWIuYWxnLmRpamtzdHJhKGdyYXBoLCBub2RlVG9HZXRUbyk7XHJcbiAgY29uc29sZS50aW1lRW5kKFwiRmluZCBhbGwgcGF0aHNcIik7XHJcblxyXG4gIGNvbnN0IGRlZmF1bHROb2RlQ29sb3VyID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKFxyXG4gICAgXCItLXRleHQtYWNjZW50XCJcclxuICApO1xyXG4gIGxldCBjdXJyTm9kZUNvbG91ciA9IGRlZmF1bHROb2RlQ29sb3VyO1xyXG5cclxuICBjb25zdCBjb2xvdXJDaGFuZ2VJbnB1dCA9IGQzXHJcbiAgICAuc2VsZWN0KFwiLmQzLWdyYXBoXCIpXHJcbiAgICAuYXBwZW5kKFwiaW5wdXRcIilcclxuICAgIC5hdHRyKFwidHlwZVwiLCBcImNvbG9yXCIpO1xyXG5cclxuICBjb2xvdXJDaGFuZ2VJbnB1dC5vbihcImNoYW5nZVwiLCBmdW5jdGlvbiBjaGFuZ2VDb2xvcihlbCkge1xyXG4gICAgY3Vyck5vZGVDb2xvdXIgPSBlbC50YXJnZXQudmFsdWU7XHJcbiAgICBub2RlXHJcbiAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgLmR1cmF0aW9uKDMwMClcclxuICAgICAgLnN0eWxlKFwiZmlsbFwiLCAoZCkgPT4ge1xyXG4gICAgICAgIGlmIChkLmluZGV4ID09PSBjdXJyTm9kZUluZGV4KSByZXR1cm47XHJcbiAgICAgICAgcmV0dXJuIGN1cnJOb2RlQ29sb3VyO1xyXG4gICAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgLy8gY29uc3Qgc2F2ZUxheW91dEJ1dHRvbiA9IG1vZGFsLmNvbnRlbnRFbC5jcmVhdGVFbCgnYnV0dG9uJywgeyB0ZXh0OiAnU2F2ZSBMYXlvdXQnIH0pXHJcbiAgLy8gICAuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBzYXZlR3JhcGgpXHJcblxyXG4gIGNvbnN0IGRhdGEgPSBncmFwaGxpYlRvRDMoZ3JhcGgpO1xyXG5cclxuICBjb25zdCBsaW5rczoge1xyXG4gICAgaW5kZXg6IG51bWJlcjtcclxuICAgIHNvdXJjZTogeyBpbmRleDogbnVtYmVyOyB4OiBudW1iZXI7IHk6IG51bWJlciB9O1xyXG4gICAgdGFyZ2V0OiB7IGluZGV4OiBudW1iZXI7IHg6IG51bWJlcjsgeTogbnVtYmVyIH07XHJcbiAgfVtdID0gZGF0YS5saW5rcy5tYXAoKGQpID0+IE9iamVjdC5jcmVhdGUoZCkpO1xyXG5cclxuICBjb25zdCBjdXJyTm9kZSA9IGRhdGEubm9kZXMuZmluZCgobm9kZSkgPT4gbm9kZS5uYW1lID09PSBjdXJyRmlsZS5iYXNlbmFtZSk7XHJcbiAgbGV0IGN1cnJOb2RlSW5kZXg6IG51bWJlcjtcclxuICBpZiAoIWN1cnJOb2RlKSB7XHJcbiAgICBjb25zdCBpZCA9IGRhdGEubm9kZXMubGVuZ3RoO1xyXG4gICAgZGF0YS5ub2Rlcy5wdXNoKHsgaWQsIG5hbWU6IGN1cnJGaWxlLmJhc2VuYW1lIH0pO1xyXG4gICAgY3Vyck5vZGVJbmRleCA9IGlkO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjdXJyTm9kZUluZGV4ID0gY3Vyck5vZGUuaWQ7XHJcbiAgfVxyXG5cclxuICBjb25zdCBub2RlcyA9IGRhdGEubm9kZXMubWFwKChkKSA9PiBPYmplY3QuY3JlYXRlKGQpKTtcclxuXHJcbiAgY29uc3Qgc2ltdWxhdGlvbiA9IGQzXHJcbiAgICAuZm9yY2VTaW11bGF0aW9uKG5vZGVzKVxyXG4gICAgLmZvcmNlKFxyXG4gICAgICBcImxpbmtcIixcclxuICAgICAgZDMuZm9yY2VMaW5rKGxpbmtzKS5pZCgoZCkgPT4gZC5pZClcclxuICAgIClcclxuICAgIC5mb3JjZShcImNoYXJnZVwiLCBkMy5mb3JjZU1hbnlCb2R5KCkuc3RyZW5ndGgoLTgpKVxyXG4gICAgLmZvcmNlKFwiY2VudGVyXCIsIGQzLmZvcmNlQ2VudGVyKHdpZHRoIC8gMiwgaGVpZ2h0IC8gMikuc3RyZW5ndGgoMC41KSk7XHJcblxyXG4gIGNvbnN0IGRyYWcgPSAoc2ltdWxhdGlvbjogZDMuU2ltdWxhdGlvbjxhbnksIHVuZGVmaW5lZD4pID0+IHtcclxuICAgIGZ1bmN0aW9uIGRyYWdzdGFydGVkKGV2ZW50LCBkKSB7XHJcbiAgICAgIGlmICghZXZlbnQuYWN0aXZlKSBzaW11bGF0aW9uLmFscGhhVGFyZ2V0KDAuMykucmVzdGFydCgpO1xyXG4gICAgICBkLmZ4ID0gZC54O1xyXG4gICAgICBkLmZ5ID0gZC55O1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGRyYWdnZWQoZXZlbnQsIGQpIHtcclxuICAgICAgZC5meCA9IGV2ZW50Lng7XHJcbiAgICAgIGQuZnkgPSBldmVudC55O1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGRyYWdlbmRlZChldmVudCwgZCkge1xyXG4gICAgICBpZiAoIWV2ZW50LmFjdGl2ZSkgc2ltdWxhdGlvbi5hbHBoYVRhcmdldCgwKTtcclxuICAgICAgZC5meCA9IG51bGw7XHJcbiAgICAgIGQuZnkgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkM1xyXG4gICAgICAuZHJhZygpXHJcbiAgICAgIC5vbihcInN0YXJ0XCIsIGRyYWdzdGFydGVkKVxyXG4gICAgICAub24oXCJkcmFnXCIsIGRyYWdnZWQpXHJcbiAgICAgIC5vbihcImVuZFwiLCBkcmFnZW5kZWQpO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IHN2ZyA9IGQzXHJcbiAgICAuc2VsZWN0KFwiLmQzLWdyYXBoXCIpXHJcbiAgICAuYXBwZW5kKFwic3ZnXCIpXHJcbiAgICAuYXR0cihcImhlaWdodFwiLCBoZWlnaHQpXHJcbiAgICAuYXR0cihcIndpZHRoXCIsIHdpZHRoKVxyXG4gICAgLmF0dHIoXCJjbGFzc1wiLCBcImZvcmNlRGlyZWN0ZWRHXCIpO1xyXG5cclxuICBjb25zdCBsaW5rID0gc3ZnXHJcbiAgICAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgLmF0dHIoXCJzdHJva2VcIiwgXCIjODY4MjgyXCIpXHJcbiAgICAuYXR0cihcInN0cm9rZS1vcGFjaXR5XCIsIDAuNilcclxuICAgIC5zZWxlY3RBbGwoXCJsaW5lXCIpXHJcbiAgICAuZGF0YShsaW5rcylcclxuICAgIC5qb2luKFwibGluZVwiKVxyXG4gICAgLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgMC44KVxyXG4gICAgLmF0dHIoXCJtYXJrZXItZW5kXCIsIFwidXJsKCNlbmQpXCIpO1xyXG5cclxuICB2YXIgcGF0aCA9IHN2Z1xyXG4gICAgLmFwcGVuZChcInN2ZzpnXCIpXHJcbiAgICAuc2VsZWN0QWxsKFwicGF0aFwiKVxyXG4gICAgLmRhdGEobGlua3MpXHJcbiAgICAuZW50ZXIoKVxyXG4gICAgLmFwcGVuZChcInN2ZzpwYXRoXCIpXHJcbiAgICAvLyAgICAuYXR0cihcImNsYXNzXCIsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIFwibGluayBcIiArIGQudHlwZTsgfSlcclxuICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJsaW5rXCIpXHJcbiAgICAuYXR0cihcIm1hcmtlci1lbmRcIiwgXCJ1cmwoI2VuZClcIik7XHJcblxyXG4gIGNvbnN0IGFycm93SGVhZCA9IHN2Z1xyXG4gICAgLmFwcGVuZChcInN2ZzpkZWZzXCIpXHJcbiAgICAuc2VsZWN0QWxsKFwibWFya2VyXCIpXHJcbiAgICAuZGF0YShbXCJlbmRcIl0pIC8vIERpZmZlcmVudCBsaW5rL3BhdGggdHlwZXMgY2FuIGJlIGRlZmluZWQgaGVyZVxyXG4gICAgLmVudGVyKClcclxuICAgIC5hcHBlbmQoXCJzdmc6bWFya2VyXCIpIC8vIFRoaXMgc2VjdGlvbiBhZGRzIGluIHRoZSBhcnJvd3NcclxuICAgIC5hdHRyKFwiaWRcIiwgU3RyaW5nKVxyXG4gICAgLmF0dHIoXCJ2aWV3Qm94XCIsIFwiMCAtNSAxMCAxMFwiKVxyXG4gICAgLmF0dHIoXCJyZWZYXCIsIDIwKVxyXG4gICAgLmF0dHIoXCJyZWZZXCIsIDAuMSlcclxuICAgIC5hdHRyKFwibWFya2VyV2lkdGhcIiwgNilcclxuICAgIC5hdHRyKFwibWFya2VySGVpZ2h0XCIsIDYpXHJcbiAgICAuYXR0cihcIm9yaWVudFwiLCBcImF1dG9cIilcclxuICAgIC8vIC5hdHRyKFwic3Ryb2tlXCIsIFwiIzg2ODI4MlwiKVxyXG4gICAgLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgMTApXHJcbiAgICAuYXBwZW5kKFwic3ZnOnBhdGhcIilcclxuICAgIC5hdHRyKFwiZFwiLCBcIk0wLC01TDEwLDBMMCw1XCIpO1xyXG5cclxuICBjb25zdCBuYW1lRnJvbUluZGV4ID0gKGQ6IHsgaW5kZXg6IG51bWJlciB9KSA9PlxyXG4gICAgZGF0YS5ub2Rlcy5maW5kKChub2RlKSA9PiBub2RlLmlkID09PSBkLmluZGV4KS5uYW1lO1xyXG5cclxuICBjb25zdCBpbmRleEZyb21OYW1lID0gKG5hbWU6IHN0cmluZyk6IG51bWJlciA9PlxyXG4gICAgZGF0YS5ub2Rlcy5maW5kKChub2RlKSA9PiBub2RlLm5hbWUgPT09IG5hbWUpLmlkO1xyXG5cclxuICBjb25zdCBub2RlOiBkMy5TZWxlY3Rpb248XHJcbiAgICBkMy5CYXNlVHlwZSB8IFNWR0NpcmNsZUVsZW1lbnQsXHJcbiAgICBhbnksXHJcbiAgICBTVkdHRWxlbWVudCxcclxuICAgIHVua25vd25cclxuICA+ID0gc3ZnXHJcbiAgICAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgLnNlbGVjdEFsbChcImNpcmNsZVwiKVxyXG4gICAgLmRhdGEobm9kZXMpXHJcbiAgICAuam9pbihcImNpcmNsZVwiKVxyXG5cclxuICAgIC5hdHRyKFwiclwiLCA1KVxyXG4gICAgLmF0dHIoXCJmaWxsXCIsIChkKSA9PiB7XHJcbiAgICAgIGlmIChuYW1lRnJvbUluZGV4KGQpID09PSBjdXJyRmlsZS5iYXNlbmFtZSkge1xyXG4gICAgICAgIHJldHVybiBcIiNmZmZmZmZcIjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gY3Vyck5vZGVDb2xvdXI7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICAuY2FsbChkcmFnKHNpbXVsYXRpb24pKTtcclxuXHJcbiAgbm9kZS5hdHRyKFwiYXJpYS1sYWJlbFwiLCAoZDogZDNOb2RlKSA9PiBkLm5hbWUpO1xyXG5cclxuICBjb25zdCBub2RlQ2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQsIGRlc3Q6IHN0cmluZykgPT4ge1xyXG4gICAgb3Blbk9yU3dpdGNoKGRlc3QsIGV2ZW50KTtcclxuICAgIG1vZGFsLmNsb3NlKCk7XHJcbiAgfTtcclxuICBub2RlLm9uKFwiY2xpY2tcIiwgKGV2ZW50OiBNb3VzZUV2ZW50LCBkOiBkM05vZGUpID0+IHtcclxuICAgIG5vZGVDbGljayhldmVudCwgZC5uYW1lKTtcclxuICB9KTtcclxuXHJcbiAgbm9kZS5vbihcIm1vdXNlZG93blwiLCAoZXZlbnQ6IE1vdXNlRXZlbnQsIGQpID0+IHtcclxuICAgIGlmIChldmVudC5idXR0b24gPT09IDIpIHtcclxuICAgICAgbm9kZVRvR2V0VG8gPSBkLm5hbWU7XHJcblxyXG4gICAgICBub2RlLnN0eWxlKFwiZmlsbFwiLCAobikgPT4ge1xyXG4gICAgICAgIGlmIChuLm5hbWUgPT09IG5vZGVUb0dldFRvKSB7XHJcbiAgICAgICAgICByZXR1cm4gXCIjZmYwMDAwXCI7XHJcbiAgICAgICAgfSBlbHNlIHJldHVybiBjdXJyTm9kZUNvbG91cjtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyBwYXRoc0Zyb21Ob2RlVG9HZXRUbyA9IGdyYXBobGliLmFsZy5kaWprc3RyYShncmFwaCwgbm9kZVRvR2V0VG8pO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBmdW5jdGlvbiBsaW5rZWQoYTogbnVtYmVyLCBiOiBudW1iZXIpIHtcclxuICAgIGlmIChhID09PSBiKSByZXR1cm4gdHJ1ZTtcclxuICAgIGNvbnN0IGxpbmtlZEFyciA9IGxpbmtzLmZpbmQoXHJcbiAgICAgIChsaW5rKSA9PlxyXG4gICAgICAgIChsaW5rLnNvdXJjZS5pbmRleCA9PT0gYSAmJiBsaW5rLnRhcmdldC5pbmRleCA9PT0gYikgfHxcclxuICAgICAgICAobGluay50YXJnZXQuaW5kZXggPT09IGEgJiYgbGluay5zb3VyY2UuaW5kZXggPT09IGIpXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAhIWxpbmtlZEFycjtcclxuICB9XHJcblxyXG4gIC8vIGZ1bmN0aW9uIHdhbGtEaWprc3RyYVBhdGhzKFxyXG4gIC8vICAgcGF0aHM6IHsgW25vZGU6IHN0cmluZ106IGdyYXBobGliLlBhdGggfSxcclxuICAvLyAgIHN0YXJ0Tm9kZTogc3RyaW5nXHJcbiAgLy8gKSB7XHJcbiAgLy8gICBpZiAoc3RhcnROb2RlID09PSBub2RlVG9HZXRUbyB8fCBwYXRoc1tzdGFydE5vZGVdLmRpc3RhbmNlID09PSBJbmZpbml0eSlcclxuICAvLyAgICAgcmV0dXJuIFtdO1xyXG4gIC8vICAgbGV0IHN0ZXAgPSBzdGFydE5vZGU7XHJcblxyXG4gIC8vICAgY29uc3QgcGF0aDogc3RyaW5nW10gPSBbc3RhcnROb2RlXTtcclxuICAvLyAgIGxldCBpID0gMDtcclxuICAvLyAgIGNvbnN0IE1BWCA9IDMwMDtcclxuICAvLyAgIHdoaWxlIChwYXRoc1tzdGVwXS5wcmVkZWNlc3NvciAhPT0gbm9kZVRvR2V0VG8gJiYgaSA8IE1BWCkge1xyXG4gIC8vICAgICBpKys7XHJcbiAgLy8gICAgIHN0ZXAgPSBwYXRoc1tzdGVwXS5wcmVkZWNlc3NvcjtcclxuICAvLyAgICAgcGF0aC5wdXNoKHN0ZXApO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgaWYgKGkgPj0gTUFYKSByZXR1cm4gW107XHJcbiAgLy8gICBwYXRoLnB1c2gobm9kZVRvR2V0VG8pO1xyXG4gIC8vICAgcmV0dXJuIHBhdGg7XHJcbiAgLy8gfVxyXG5cclxuICBub2RlXHJcbiAgICAub24oXCJtb3VzZW92ZXJcIiwgKGV2ZW50OiBNb3VzZUV2ZW50LCBkOiB7IGluZGV4OiBudW1iZXIgfSkgPT4ge1xyXG4gICAgICBub2RlXHJcbiAgICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAgIC5kdXJhdGlvbigxNTApXHJcbiAgICAgICAgLnN0eWxlKFwib3BhY2l0eVwiLCAobykgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGxpbmtlZChkLmluZGV4LCBvLmluZGV4KSA/IDEgOiAwLjI7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIGxpbmtcclxuICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgLmR1cmF0aW9uKDE1MClcclxuICAgICAgICAuc3R5bGUoXCJvcGFjaXR5XCIsIGZ1bmN0aW9uIChvKSB7XHJcbiAgICAgICAgICByZXR1cm4gby5zb3VyY2UuaW5kZXggPT09IGQuaW5kZXggfHwgby50YXJnZXQuaW5kZXggPT09IGQuaW5kZXhcclxuICAgICAgICAgICAgPyAxXHJcbiAgICAgICAgICAgIDogMC4yO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gSGlnaGxpZ2h0IHBhdGggZnJvbSBob3ZlcmVkIG5vZGUgdG8gY3Vyck5vZGVcclxuICAgICAgY29uc3QgaG92ZXJlZE5vZGUgPSBuYW1lRnJvbUluZGV4KGQpO1xyXG4gICAgICAvLyBjb25zdCBwYXRoID0gd2Fsa0RpamtzdHJhUGF0aHMocGF0aHNGcm9tTm9kZVRvR2V0VG8sIGhvdmVyZWROb2RlKTtcclxuICAgICAgLy8gaWYgKHBhdGgubGVuZ3RoKSB7XHJcbiAgICAgIC8vICAgbGlua1xyXG4gICAgICAvLyAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAvLyAgICAgLmR1cmF0aW9uKDE1MClcclxuICAgICAgLy8gICAgIC5zdHlsZShcInN0cm9rZVwiLCBmdW5jdGlvbiAobGluaykge1xyXG4gICAgICAvLyAgICAgICBpZiAoXHJcbiAgICAgIC8vICAgICAgICAgcGF0aC5pbmNsdWRlcyhuYW1lRnJvbUluZGV4KGxpbmsuc291cmNlKSkgJiZcclxuICAgICAgLy8gICAgICAgICBwYXRoLmluY2x1ZGVzKG5hbWVGcm9tSW5kZXgobGluay50YXJnZXQpKVxyXG4gICAgICAvLyAgICAgICApXHJcbiAgICAgIC8vICAgICAgICAgcmV0dXJuIGN1cnJOb2RlQ29sb3VyO1xyXG4gICAgICAvLyAgICAgfSlcclxuICAgICAgLy8gICAgIC5zdHlsZShcIm9wYWNpdHlcIiwgZnVuY3Rpb24gKGxpbmspIHtcclxuICAgICAgLy8gICAgICAgaWYgKFxyXG4gICAgICAvLyAgICAgICAgIHBhdGguaW5jbHVkZXMobmFtZUZyb21JbmRleChsaW5rLnNvdXJjZSkpICYmXHJcbiAgICAgIC8vICAgICAgICAgcGF0aC5pbmNsdWRlcyhuYW1lRnJvbUluZGV4KGxpbmsudGFyZ2V0KSlcclxuICAgICAgLy8gICAgICAgKVxyXG4gICAgICAvLyAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAvLyAgICAgfSk7XHJcbiAgICAgIC8vIH1cclxuICAgIH0pXHJcbiAgICAub24oXCJtb3VzZW91dFwiLCB1bmZvY3VzKTtcclxuXHJcbiAgZnVuY3Rpb24gZm9jdXNOZWlnaGJvdXJzKGQsIGV2ZW50OiBNb3VzZUV2ZW50KSB7IH1cclxuXHJcbiAgZnVuY3Rpb24gdW5mb2N1cygpIHtcclxuICAgIC8vIGxhYmVsTm9kZS5hdHRyKFwiZGlzcGxheVwiLCBcImJsb2NrXCIpO1xyXG4gICAgbm9kZS5zdHlsZShcIm9wYWNpdHlcIiwgMSk7XHJcbiAgICBsaW5rLnN0eWxlKFwib3BhY2l0eVwiLCAxKS5zdHlsZShcInN0cm9rZVwiLCBcIiM4NjgyODJcIik7XHJcbiAgfVxyXG5cclxuICBzaW11bGF0aW9uLm9uKFwidGlja1wiLCAoKSA9PiB7XHJcbiAgICBsaW5rXHJcbiAgICAgIC5hdHRyKFwieDFcIiwgKGQpID0+IGQuc291cmNlLngpXHJcbiAgICAgIC5hdHRyKFwieTFcIiwgKGQpID0+IGQuc291cmNlLnkpXHJcbiAgICAgIC5hdHRyKFwieDJcIiwgKGQpID0+IGQudGFyZ2V0LngpXHJcbiAgICAgIC5hdHRyKFwieTJcIiwgKGQpID0+IGQudGFyZ2V0LnkpO1xyXG5cclxuICAgIG5vZGUuYXR0cihcImN4XCIsIChkKSA9PiBkLngpLmF0dHIoXCJjeVwiLCAoZCkgPT4gZC55KTtcclxuICB9KTtcclxuXHJcbiAgZnVuY3Rpb24gem9vbWVkKHsgdHJhbnNmb3JtIH0pIHtcclxuICAgIG5vZGUuYXR0cihcInRyYW5zZm9ybVwiLCB0cmFuc2Zvcm0pO1xyXG4gICAgbGluay5hdHRyKFwidHJhbnNmb3JtXCIsIHRyYW5zZm9ybSk7XHJcbiAgfVxyXG4gIHN2Zy5jYWxsKFxyXG4gICAgZDNcclxuICAgICAgLnpvb20oKVxyXG4gICAgICAuZXh0ZW50KFtcclxuICAgICAgICBbMCwgMF0sXHJcbiAgICAgICAgW3dpZHRoLCBoZWlnaHRdLFxyXG4gICAgICBdKVxyXG4gICAgICAuc2NhbGVFeHRlbnQoWzAuNSwgMTBdKVxyXG4gICAgICAub24oXCJ6b29tXCIsIHpvb21lZClcclxuICApO1xyXG5cclxuICBmdW5jdGlvbiBzYXZlR3JhcGgoKSB7XHJcbiAgICBjb25zdCBjbG9uZSA9IHN2Zy5jbG9uZSh0cnVlKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiRkRHXCIsIEpTT04uc3RyaW5naWZ5KGNsb25lKSk7XHJcbiAgfVxyXG59O1xyXG4iLCAiaW1wb3J0ICogYXMgZDMgZnJvbSBcImQzXCI7XHJcbmltcG9ydCB0eXBlIEdyYXBoIGZyb20gXCJncmFwaG9sb2d5XCI7XHJcbmltcG9ydCB0eXBlIHsgVEZpbGUgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHsgZGZzRmxhdEFkakxpc3QsIFZpc01vZGFsIH0gZnJvbSBcIi4vVmlzTW9kYWxcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBpY2ljbGUgPSAoXHJcbiAgZ3JhcGg6IEdyYXBoLFxyXG4gIGN1cnJGaWxlOiBURmlsZSxcclxuICBtb2RhbDogVmlzTW9kYWwsXHJcbiAgd2lkdGg6IG51bWJlcixcclxuICB2aWV3SGVpZ2h0OiBudW1iZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgZmxhdEFkaiA9IGRmc0ZsYXRBZGpMaXN0KGdyYXBoLCBjdXJyRmlsZS5iYXNlbmFtZSk7XHJcbiAgY29uc29sZS5sb2coeyBmbGF0QWRqIH0pO1xyXG5cclxuICBjb25zdCBoaWVyID0gZDMuc3RyYXRpZnkoKShmbGF0QWRqKTtcclxuICBjb25zb2xlLmxvZyh7IGhpZXIgfSk7XHJcblxyXG4gIGNvbnN0IGZvcm1hdCA9IGQzLmZvcm1hdChcIixkXCIpO1xyXG5cclxuICBjb25zdCBjb2xvciA9IGQzLnNjYWxlT3JkaW5hbChcclxuICAgIGQzLnF1YW50aXplKGQzLmludGVycG9sYXRlUmFpbmJvdywgaGllci5jaGlsZHJlbi5sZW5ndGggKyAxKVxyXG4gICk7XHJcblxyXG4gIGNvbnN0IHBhcnRpdGlvbiA9IChkYXRhKSA9PiB7XHJcbiAgICBjb25zdCByb290ID0gZDNcclxuICAgICAgLmhpZXJhcmNoeShkYXRhKVxyXG4gICAgICAuc3VtKChkKSA9PiBkLnZhbHVlKVxyXG4gICAgICAuc29ydCgoYSwgYikgPT4gYi5oZWlnaHQgLSBhLmhlaWdodCB8fCBiLnZhbHVlIC0gYS52YWx1ZSk7XHJcbiAgICByZXR1cm4gZDMucGFydGl0aW9uKCkuc2l6ZShbdmlld0hlaWdodCwgKChyb290LmhlaWdodCArIDEpICogd2lkdGgpIC8gM10pKFxyXG4gICAgICByb290XHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IHJvb3QgPSBwYXJ0aXRpb24oaGllcik7XHJcbiAgbGV0IGZvY3VzID0gcm9vdDtcclxuXHJcbiAgY29uc3Qgc3ZnID0gZDNcclxuICAgIC5zZWxlY3QoXCIuZDMtZ3JhcGhcIilcclxuICAgIC5hcHBlbmQoXCJzdmdcIilcclxuICAgIC5hdHRyKFwiaGVpZ2h0XCIsIHZpZXdIZWlnaHQpXHJcbiAgICAuYXR0cihcIndpZHRoXCIsIHdpZHRoKVxyXG4gICAgLnN0eWxlKFwiZm9udFwiLCBcIjEwcHggc2Fucy1zZXJpZlwiKTtcclxuXHJcbiAgY29uc3QgY2VsbCA9IHN2Z1xyXG4gICAgLnNlbGVjdEFsbChcImdcIilcclxuICAgIC5kYXRhKHJvb3QuZGVzY2VuZGFudHMoKSlcclxuICAgIC5qb2luKFwiZ1wiKVxyXG4gICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgKGQpID0+IGB0cmFuc2xhdGUoJHtkLnkwfSwke2QueDB9KWApO1xyXG5cclxuICBjb25zdCByZWN0ID0gY2VsbFxyXG4gICAgLmFwcGVuZChcInJlY3RcIilcclxuICAgIC5hdHRyKFwid2lkdGhcIiwgKGQpID0+IGQueTEgLSBkLnkwIC0gMSlcclxuICAgIC5hdHRyKFwiaGVpZ2h0XCIsIChkKSA9PiByZWN0SGVpZ2h0KGQpKVxyXG4gICAgLmF0dHIoXCJmaWxsLW9wYWNpdHlcIiwgMC42KVxyXG4gICAgLmF0dHIoXCJmaWxsXCIsIChkKSA9PiB7XHJcbiAgICAgIGlmICghZC5kZXB0aCkgcmV0dXJuIFwiI2NjY1wiO1xyXG4gICAgICB3aGlsZSAoZC5kZXB0aCA+IDEpIGQgPSBkLnBhcmVudDtcclxuICAgICAgcmV0dXJuIGNvbG9yKGQuZGF0YS5kYXRhLm5hbWUpO1xyXG4gICAgfSlcclxuICAgIC5zdHlsZShcImN1cnNvclwiLCBcInBvaW50ZXJcIilcclxuICAgIC5vbihcImNsaWNrXCIsIGNsaWNrZWQpO1xyXG5cclxuICBjb25zdCB0ZXh0ID0gY2VsbFxyXG4gICAgLmFwcGVuZChcInRleHRcIilcclxuICAgIC5zdHlsZShcInVzZXItc2VsZWN0XCIsIFwibm9uZVwiKVxyXG4gICAgLmF0dHIoXCJwb2ludGVyLWV2ZW50c1wiLCBcIm5vbmVcIilcclxuICAgIC5hdHRyKFwieFwiLCA0KVxyXG4gICAgLmF0dHIoXCJ5XCIsIDEzKTtcclxuICAvLyAuYXR0cihcImZpbGwtb3BhY2l0eVwiLCAoZCkgPT4gK2xhYmVsVmlzaWJsZShkKSk7XHJcblxyXG4gIHRleHQuYXBwZW5kKFwidHNwYW5cIikudGV4dCgoZCkgPT4gZC5kYXRhLmRhdGEubmFtZSk7XHJcblxyXG4gIGNvbnN0IHRzcGFuID0gdGV4dFxyXG4gICAgLmFwcGVuZChcInRzcGFuXCIpXHJcbiAgICAuYXR0cihcImZpbGwtb3BhY2l0eVwiLCAoZCkgPT4gKGxhYmVsVmlzaWJsZShkKSA/IDEgOiAwKSAqIDAuNylcclxuICAgIC50ZXh0KChkKSA9PiBgICR7Zm9ybWF0KGQudmFsdWUpfWApO1xyXG5cclxuICBjZWxsLmFwcGVuZChcInRpdGxlXCIpLnRleHQoXHJcbiAgICAoZCkgPT5cclxuICAgICAgYCR7ZC5hbmNlc3RvcnMoKS5tYXAoKGQpID0+IGQuZGF0YS5kYXRhLm5hbWUpXHJcbiAgICAgIC8vIC5yZXZlcnNlKClcclxuICAgICAgLy8gLmpvaW4oXCIvXCIpfVxcbiR7Zm9ybWF0KGQudmFsdWUpXHJcbiAgICAgIH1gXHJcbiAgKTtcclxuXHJcbiAgZnVuY3Rpb24gY2xpY2tlZChldmVudCwgcCkge1xyXG4gICAgY29uc29sZS5sb2coeyBwIH0pO1xyXG4gICAgZm9jdXMgPSBmb2N1cyA9PT0gcCA/IChwID0gcC5wYXJlbnQpIDogcDtcclxuXHJcbiAgICByb290LmVhY2goKGQpID0+IHtcclxuICAgICAgZC50YXJnZXQgPSB7XHJcbiAgICAgICAgeDA6ICgoZC54MCAtIHAueDApIC8gKHAueDEgLSBwLngwKSkgKiB2aWV3SGVpZ2h0LFxyXG4gICAgICAgIHgxOiAoKGQueDEgLSBwLngwKSAvIChwLngxIC0gcC54MCkpICogdmlld0hlaWdodCxcclxuICAgICAgICB5MDogZC55MCAtIHAueTAsXHJcbiAgICAgICAgeTE6IGQueTEgLSBwLnkwLFxyXG4gICAgICB9O1xyXG4gICAgICBjb25zb2xlLmxvZyhkLnRhcmdldC54MCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCB0ID0gY2VsbFxyXG4gICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgIC5kdXJhdGlvbig3NTApXHJcbiAgICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIChkKSA9PiBgdHJhbnNsYXRlKCR7ZC50YXJnZXQueTB9LCR7ZC50YXJnZXQueDB9KWApO1xyXG5cclxuICAgIHJlY3QudHJhbnNpdGlvbih0KS5hdHRyKFwiaGVpZ2h0XCIsIChkKSA9PiByZWN0SGVpZ2h0KGQudGFyZ2V0KSk7XHJcbiAgICB0ZXh0LnRyYW5zaXRpb24odCkuYXR0cihcImZpbGwtb3BhY2l0eVwiLCAoZCkgPT4gK2xhYmVsVmlzaWJsZShkLnRhcmdldCkpO1xyXG4gICAgdHNwYW5cclxuICAgICAgLnRyYW5zaXRpb24odClcclxuICAgICAgLmF0dHIoXCJmaWxsLW9wYWNpdHlcIiwgKGQpID0+IChsYWJlbFZpc2libGUoZCkgPyAxIDogMCkgKiAwLjcpO1xyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gcmVjdEhlaWdodChkKSB7XHJcbiAgICBjb25zb2xlLmxvZyh7IGQgfSk7XHJcbiAgICByZXR1cm4gZC54MSAtIGQueDAgLSBNYXRoLm1pbigxLCAoZC54MSAtIGQueDApIC8gMik7XHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiBsYWJlbFZpc2libGUoZCkge1xyXG4gICAgcmV0dXJuIGQueTEgPD0gd2lkdGggJiYgZC55MCA+PSAwICYmIGQueDEgLSBkLngwID4gMTY7XHJcbiAgfVxyXG59O1xyXG4iLCAiaW1wb3J0ICogYXMgZDMgZnJvbSBcImQzXCI7XHJcbmltcG9ydCB0eXBlIEdyYXBoIGZyb20gXCJncmFwaG9sb2d5XCI7XHJcbmltcG9ydCB0eXBlIHsgVEZpbGUgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHsgZGZzRmxhdEFkakxpc3QsIFZpc01vZGFsIH0gZnJvbSBcIi4vVmlzTW9kYWxcIjtcclxuXHJcbmV4cG9ydCBjb25zdCByYWRpYWxUcmVlID0gKFxyXG4gIGdyYXBoOiBHcmFwaCxcclxuICBjdXJyRmlsZTogVEZpbGUsXHJcbiAgbW9kYWw6IFZpc01vZGFsLFxyXG4gIHdpZHRoOiBudW1iZXIsXHJcbiAgaGVpZ2h0OiBudW1iZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgZmxhdEFkaiA9IGRmc0ZsYXRBZGpMaXN0KGdyYXBoLCBjdXJyRmlsZS5iYXNlbmFtZSk7XHJcbiAgY29uc29sZS5sb2coeyBmbGF0QWRqIH0pO1xyXG5cclxuICBjb25zdCBoaWVyYXJjaHkgPSBkMy5zdHJhdGlmeSgpKGZsYXRBZGopO1xyXG4gIGNvbnNvbGUubG9nKHsgaGllcmFyY2h5IH0pO1xyXG5cclxuICBjb25zdCBzdmcgPSBkM1xyXG4gICAgLnNlbGVjdChcIi5kMy1ncmFwaFwiKVxyXG4gICAgLmFwcGVuZChcInN2Z1wiKVxyXG4gICAgLmF0dHIoXCJoZWlnaHRcIiwgaGVpZ2h0KVxyXG4gICAgLmF0dHIoXCJ3aWR0aFwiLCB3aWR0aCk7XHJcblxyXG4gIGNvbnN0IHJvb3QgPSBkM1xyXG4gICAgLmhpZXJhcmNoeShoaWVyYXJjaHksIChkKSA9PiBkLmNoaWxkcmVuKVxyXG4gICAgLnN1bSgoZCkgPT4gKGQuY2hpbGRyZW4gPyAwIDogMSkpXHJcbiAgICAuc29ydCgoYSwgYikgPT4gYS5kZXB0aCAtIGIuZGVwdGgpO1xyXG5cclxuICBjb25zdCBvdXRlclJhZGl1cyA9IHdpZHRoIC8gMjtcclxuICBjb25zdCBpbm5lclJhZGl1cyA9IG91dGVyUmFkaXVzIC0gMTcwO1xyXG5cclxuICBjb25zdCBjbHVzdGVyID0gZDNcclxuICAgIC5jbHVzdGVyKClcclxuICAgIC5zaXplKFszNjAsIGlubmVyUmFkaXVzXSlcclxuICAgIC5zZXBhcmF0aW9uKChhLCBiKSA9PiAxKTtcclxuXHJcbiAgY29uc3QgY29sb3IgPSBkM1xyXG4gICAgLnNjYWxlT3JkaW5hbCgpXHJcbiAgICAuZG9tYWluKGdyYXBoLm5vZGVzKCkpXHJcbiAgICAucmFuZ2UoZDMuc2NoZW1lQ2F0ZWdvcnkxMCk7XHJcblxyXG4gIGZ1bmN0aW9uIG1heExlbmd0aChkOiBkMy5IaWVyYXJjaHlOb2RlPHVua25vd24+KSB7XHJcbiAgICByZXR1cm4gZC5kYXRhLmRhdGEuZGVwdGggKyAoZC5jaGlsZHJlbiA/IGQzLm1heChkLmNoaWxkcmVuLCBtYXhMZW5ndGgpIDogMCk7XHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiBzZXRSYWRpdXMoZDogZDMuSGllcmFyY2h5Tm9kZTx1bmtub3duPiwgeTA6IG51bWJlciwgazogbnVtYmVyKSB7XHJcbiAgICBkLnJhZGl1cyA9ICh5MCArPSBkLmRhdGEuZGF0YS5kZXB0aCkgKiBrO1xyXG4gICAgaWYgKGQuY2hpbGRyZW4pIGQuY2hpbGRyZW4uZm9yRWFjaCgoZCkgPT4gc2V0UmFkaXVzKGQsIHkwLCBrKSk7XHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiBzZXRDb2xvcihkOiBkMy5IaWVyYXJjaHlOb2RlPHVua25vd24+KSB7XHJcbiAgICB2YXIgbmFtZSA9IGQuZGF0YS5kYXRhLm5hbWU7XHJcbiAgICBkLmNvbG9yID1cclxuICAgICAgY29sb3IuZG9tYWluKCkuaW5kZXhPZihuYW1lKSA+PSAwXHJcbiAgICAgICAgPyBjb2xvcihuYW1lKVxyXG4gICAgICAgIDogZC5wYXJlbnRcclxuICAgICAgICAgID8gZC5wYXJlbnQuY29sb3JcclxuICAgICAgICAgIDogbnVsbDtcclxuICAgIGlmIChkLmNoaWxkcmVuKSBkLmNoaWxkcmVuLmZvckVhY2goc2V0Q29sb3IpO1xyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gbGlua1ZhcmlhYmxlKGQpIHtcclxuICAgIHJldHVybiBsaW5rU3RlcChkLnNvdXJjZS54LCBkLnNvdXJjZS5yYWRpdXMsIGQudGFyZ2V0LngsIGQudGFyZ2V0LnJhZGl1cyk7XHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiBsaW5rQ29uc3RhbnQoZCkge1xyXG4gICAgcmV0dXJuIGxpbmtTdGVwKGQuc291cmNlLngsIGQuc291cmNlLnksIGQudGFyZ2V0LngsIGQudGFyZ2V0LnkpO1xyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gbGlua0V4dGVuc2lvblZhcmlhYmxlKGQpIHtcclxuICAgIHJldHVybiBsaW5rU3RlcChkLnRhcmdldC54LCBkLnRhcmdldC5yYWRpdXMsIGQudGFyZ2V0LngsIGlubmVyUmFkaXVzKTtcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uIGxpbmtFeHRlbnNpb25Db25zdGFudChkKSB7XHJcbiAgICByZXR1cm4gbGlua1N0ZXAoZC50YXJnZXQueCwgZC50YXJnZXQueSwgZC50YXJnZXQueCwgaW5uZXJSYWRpdXMpO1xyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gbGlua1N0ZXAoXHJcbiAgICBzdGFydEFuZ2xlOiBudW1iZXIsXHJcbiAgICBzdGFydFJhZGl1czogbnVtYmVyLFxyXG4gICAgZW5kQW5nbGU6IG51bWJlcixcclxuICAgIGVuZFJhZGl1czogbnVtYmVyXHJcbiAgKSB7XHJcbiAgICBjb25zdCBjMCA9IE1hdGguY29zKChzdGFydEFuZ2xlID0gKChzdGFydEFuZ2xlIC0gOTApIC8gMTgwKSAqIE1hdGguUEkpKTtcclxuICAgIGNvbnN0IHMwID0gTWF0aC5zaW4oc3RhcnRBbmdsZSk7XHJcbiAgICBjb25zdCBjMSA9IE1hdGguY29zKChlbmRBbmdsZSA9ICgoZW5kQW5nbGUgLSA5MCkgLyAxODApICogTWF0aC5QSSkpO1xyXG4gICAgY29uc3QgczEgPSBNYXRoLnNpbihlbmRBbmdsZSk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBcIk1cIiArXHJcbiAgICAgIHN0YXJ0UmFkaXVzICogYzAgK1xyXG4gICAgICBcIixcIiArXHJcbiAgICAgIHN0YXJ0UmFkaXVzICogczAgK1xyXG4gICAgICAoZW5kQW5nbGUgPT09IHN0YXJ0QW5nbGVcclxuICAgICAgICA/IFwiXCJcclxuICAgICAgICA6IFwiQVwiICtcclxuICAgICAgICBzdGFydFJhZGl1cyArXHJcbiAgICAgICAgXCIsXCIgK1xyXG4gICAgICAgIHN0YXJ0UmFkaXVzICtcclxuICAgICAgICBcIiAwIDAgXCIgK1xyXG4gICAgICAgIChlbmRBbmdsZSA+IHN0YXJ0QW5nbGUgPyAxIDogMCkgK1xyXG4gICAgICAgIFwiIFwiICtcclxuICAgICAgICBzdGFydFJhZGl1cyAqIGMxICtcclxuICAgICAgICBcIixcIiArXHJcbiAgICAgICAgc3RhcnRSYWRpdXMgKiBzMSkgK1xyXG4gICAgICBcIkxcIiArXHJcbiAgICAgIGVuZFJhZGl1cyAqIGMxICtcclxuICAgICAgXCIsXCIgK1xyXG4gICAgICBlbmRSYWRpdXMgKiBzMVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGxlZ2VuZCA9IChzdmcpID0+IHtcclxuICAgIGNvbnN0IGcgPSBzdmdcclxuICAgICAgLnNlbGVjdEFsbChcImdcIilcclxuICAgICAgLmRhdGEoY29sb3IuZG9tYWluKCkpXHJcbiAgICAgIC5qb2luKFwiZ1wiKVxyXG4gICAgICAuYXR0cihcclxuICAgICAgICBcInRyYW5zZm9ybVwiLFxyXG4gICAgICAgIChkLCBpKSA9PiBgdHJhbnNsYXRlKCR7LW91dGVyUmFkaXVzfSwkey1vdXRlclJhZGl1cyArIGkgKiAyMH0pYFxyXG4gICAgICApO1xyXG5cclxuICAgIGcuYXBwZW5kKFwicmVjdFwiKS5hdHRyKFwid2lkdGhcIiwgMTgpLmF0dHIoXCJoZWlnaHRcIiwgMTgpLmF0dHIoXCJmaWxsXCIsIGNvbG9yKTtcclxuXHJcbiAgICBnLmFwcGVuZChcInRleHRcIilcclxuICAgICAgLmF0dHIoXCJ4XCIsIDI0KVxyXG4gICAgICAuYXR0cihcInlcIiwgOSlcclxuICAgICAgLmF0dHIoXCJkeVwiLCBcIjAuMzVlbVwiKVxyXG4gICAgICAudGV4dCgoZCkgPT4gZCk7XHJcbiAgfTtcclxuXHJcbiAgY2x1c3Rlcihyb290KTtcclxuICBzZXRSYWRpdXMocm9vdCwgKHJvb3QuZGF0YS5kYXRhLmRlcHRoID0gMCksIGlubmVyUmFkaXVzIC8gbWF4TGVuZ3RoKHJvb3QpKTtcclxuICBzZXRDb2xvcihyb290KTtcclxuXHJcbiAgc3ZnLmFwcGVuZChcImdcIikuY2FsbChsZWdlbmQpO1xyXG5cclxuICBzdmcuYXBwZW5kKFwic3R5bGVcIikudGV4dChgXHJcblxyXG4ubGluay0tYWN0aXZlIHtcclxuc3Ryb2tlOiAjMDAwICFpbXBvcnRhbnQ7XHJcbnN0cm9rZS13aWR0aDogMS41cHg7XHJcbn1cclxuXHJcbi5saW5rLWV4dGVuc2lvbi0tYWN0aXZlIHtcclxuc3Ryb2tlLW9wYWNpdHk6IC42O1xyXG59XHJcblxyXG4ubGFiZWwtLWFjdGl2ZSB7XHJcbmZvbnQtd2VpZ2h0OiBib2xkO1xyXG59XHJcblxyXG5gKTtcclxuXHJcbiAgY29uc3QgbGlua0V4dGVuc2lvbiA9IHN2Z1xyXG4gICAgLmFwcGVuZChcImdcIilcclxuICAgIC5hdHRyKFwiZmlsbFwiLCBcIm5vbmVcIilcclxuICAgIC5hdHRyKFwic3Ryb2tlXCIsIFwiIzAwMFwiKVxyXG4gICAgLmF0dHIoXCJzdHJva2Utb3BhY2l0eVwiLCAwLjI1KVxyXG4gICAgLnNlbGVjdEFsbChcInBhdGhcIilcclxuICAgIC5kYXRhKHJvb3QubGlua3MoKS5maWx0ZXIoKGQpID0+ICFkLnRhcmdldC5jaGlsZHJlbikpXHJcbiAgICAuam9pbihcInBhdGhcIilcclxuICAgIC5lYWNoKGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgIGQudGFyZ2V0LmxpbmtFeHRlbnNpb25Ob2RlID0gdGhpcztcclxuICAgIH0pXHJcbiAgICAuYXR0cihcImRcIiwgbGlua0V4dGVuc2lvbkNvbnN0YW50KTtcclxuXHJcbiAgY29uc3QgbGluayA9IHN2Z1xyXG4gICAgLmFwcGVuZChcImdcIilcclxuICAgIC5hdHRyKFwiZmlsbFwiLCBcIm5vbmVcIilcclxuICAgIC5hdHRyKFwic3Ryb2tlXCIsIFwiIzAwMFwiKVxyXG4gICAgLnNlbGVjdEFsbChcInBhdGhcIilcclxuICAgIC5kYXRhKHJvb3QubGlua3MoKSlcclxuICAgIC5qb2luKFwicGF0aFwiKVxyXG4gICAgLmVhY2goZnVuY3Rpb24gKGQpIHtcclxuICAgICAgZC50YXJnZXQubGlua05vZGUgPSB0aGlzO1xyXG4gICAgfSlcclxuICAgIC5hdHRyKFwiZFwiLCBsaW5rQ29uc3RhbnQpXHJcbiAgICAuYXR0cihcInN0cm9rZVwiLCAoZCkgPT4gZC50YXJnZXQuY29sb3IpO1xyXG5cclxuICBjb25zdCBsYWJlbCA9IHN2Z1xyXG4gICAgLmFwcGVuZChcImdcIilcclxuICAgIC5zZWxlY3RBbGwoXCJ0ZXh0XCIpXHJcbiAgICAuZGF0YShyb290LmxlYXZlcygpKVxyXG4gICAgLmpvaW4oXCJ0ZXh0XCIpXHJcbiAgICAuYXR0cihcImR5XCIsIFwiLjMxZW1cIilcclxuICAgIC5hdHRyKFxyXG4gICAgICBcInRyYW5zZm9ybVwiLFxyXG4gICAgICAoZCkgPT5cclxuICAgICAgICBgcm90YXRlKCR7ZC54IC0gOTB9KSB0cmFuc2xhdGUoJHtpbm5lclJhZGl1cyArIDR9LDApJHtkLnggPCAxODAgPyBcIlwiIDogXCIgcm90YXRlKDE4MClcIlxyXG4gICAgICAgIH1gXHJcbiAgICApXHJcbiAgICAuYXR0cihcInRleHQtYW5jaG9yXCIsIChkKSA9PiAoZC54IDwgMTgwID8gXCJzdGFydFwiIDogXCJlbmRcIikpXHJcbiAgICAudGV4dCgoZCkgPT4gZC5kYXRhLmRhdGEubmFtZSlcclxuICAgIC5vbihcIm1vdXNlb3ZlclwiLCBtb3VzZW92ZXJlZCh0cnVlKSlcclxuICAgIC5vbihcIm1vdXNlb3V0XCIsIG1vdXNlb3ZlcmVkKGZhbHNlKSk7XHJcblxyXG4gIC8vICAgZnVuY3Rpb24gdXBkYXRlKGNoZWNrZWQpIHtcclxuICAvLyAgICAgY29uc3QgdCA9IGQzLnRyYW5zaXRpb24oKS5kdXJhdGlvbig3NTApO1xyXG4gIC8vICAgICBsaW5rRXh0ZW5zaW9uXHJcbiAgLy8gICAgICAgLnRyYW5zaXRpb24odClcclxuICAvLyAgICAgICAuYXR0cihcImRcIiwgY2hlY2tlZCA/IGxpbmtFeHRlbnNpb25WYXJpYWJsZSA6IGxpbmtFeHRlbnNpb25Db25zdGFudCk7XHJcbiAgLy8gICAgIGxpbmsudHJhbnNpdGlvbih0KS5hdHRyKFwiZFwiLCBjaGVja2VkID8gbGlua1ZhcmlhYmxlIDogbGlua0NvbnN0YW50KTtcclxuICAvLyAgIH1cclxuXHJcbiAgZnVuY3Rpb24gbW91c2VvdmVyZWQoYWN0aXZlKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKGV2ZW50LCBkKSB7XHJcbiAgICAgIGQzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKFwibGFiZWwtLWFjdGl2ZVwiLCBhY3RpdmUpO1xyXG4gICAgICBkMy5zZWxlY3QoZC5saW5rRXh0ZW5zaW9uTm9kZSlcclxuICAgICAgICAuY2xhc3NlZChcImxpbmstZXh0ZW5zaW9uLS1hY3RpdmVcIiwgYWN0aXZlKVxyXG4gICAgICAgIC5yYWlzZSgpO1xyXG4gICAgICBkbyBkMy5zZWxlY3QoZC5saW5rTm9kZSkuY2xhc3NlZChcImxpbmstLWFjdGl2ZVwiLCBhY3RpdmUpLnJhaXNlKCk7XHJcbiAgICAgIHdoaWxlICgoZCA9IGQucGFyZW50KSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gem9vbWVkKHsgdHJhbnNmb3JtIH0pIHtcclxuICAgIGxpbmtFeHRlbnNpb24uYXR0cihcInRyYW5zZm9ybVwiLCB0cmFuc2Zvcm0pO1xyXG4gICAgbGluay5hdHRyKFwidHJhbnNmb3JtXCIsIHRyYW5zZm9ybSk7XHJcbiAgICBsYWJlbC5hdHRyKFwidHJhbnNmb3JtXCIsIHRyYW5zZm9ybSk7XHJcbiAgfVxyXG4gIHN2Zy5jYWxsKFxyXG4gICAgZDNcclxuICAgICAgLnpvb20oKVxyXG4gICAgICAuZXh0ZW50KFtcclxuICAgICAgICBbMCwgMF0sXHJcbiAgICAgICAgW3dpZHRoLCBoZWlnaHRdLFxyXG4gICAgICBdKVxyXG4gICAgICAuc2NhbGVFeHRlbnQoWzAuNSwgOF0pXHJcbiAgICAgIC5vbihcInpvb21cIiwgem9vbWVkKVxyXG4gICk7XHJcbn07XHJcbiIsICJpbXBvcnQgKiBhcyBkMyBmcm9tIFwiZDNcIjtcclxuaW1wb3J0IHR5cGUgR3JhcGggZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHR5cGUgeyBURmlsZSB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgdHlwZSB7IFZpc01vZGFsIH0gZnJvbSBcIi4vVmlzTW9kYWxcIjtcclxuaW1wb3J0IHsgZGZzRmxhdEFkakxpc3QgfSBmcm9tIFwiLi9WaXNNb2RhbFwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IHN1bmJ1cnN0ID0gKFxyXG4gIGdyYXBoOiBHcmFwaCxcclxuICBjdXJyRmlsZTogVEZpbGUsXHJcbiAgbW9kYWw6IFZpc01vZGFsLFxyXG4gIHdpZHRoOiBudW1iZXIsXHJcbiAgaGVpZ2h0OiBudW1iZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgZmxhdEFkaiA9IGRmc0ZsYXRBZGpMaXN0KGdyYXBoLCBjdXJyRmlsZS5iYXNlbmFtZSk7XHJcbiAgY29uc29sZS5sb2coeyBmbGF0QWRqIH0pO1xyXG5cclxuICBjb25zdCBoaWVyYXJjaHkgPSBkMy5zdHJhdGlmeSgpKGZsYXRBZGopO1xyXG4gIGNvbnNvbGUubG9nKHsgaGllcmFyY2h5IH0pO1xyXG5cclxuICB2YXIgcmFkaXVzID0gTWF0aC5taW4od2lkdGgsIGhlaWdodCkgLyAyOyAvLyA8IC0tIDJcclxuICB2YXIgY29sb3IgPSBkMy5zY2FsZU9yZGluYWwoZDMuc2NoZW1lQ2F0ZWdvcnkxMCk7XHJcblxyXG4gIHZhciBnID0gZDNcclxuICAgIC5zZWxlY3QoXCJzdmdcIikgLy8gPC0tIDFcclxuICAgIC5hdHRyKFwid2lkdGhcIiwgd2lkdGgpIC8vIDwtLSAyXHJcbiAgICAuYXR0cihcImhlaWdodFwiLCBoZWlnaHQpXHJcbiAgICAuYXBwZW5kKFwiZ1wiKSAvLyA8LS0gM1xyXG4gICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyB3aWR0aCAvIDIgKyBcIixcIiArIGhlaWdodCAvIDIgKyBcIilcIik7IC8vIDwtLSA0XHJcblxyXG4gIHZhciBnID0gZDNcclxuICAgIC5zZWxlY3QoXCJzdmdcIikgLy8gcmV0dXJucyBhIGhhbmRsZSB0byB0aGUgPHN2Zz4gZWxlbWVudFxyXG4gICAgLmF0dHIoXCJ3aWR0aFwiLCB3aWR0aCkgLy8gc2V0cyB0aGUgd2lkdGggb2YgPHN2Zz4gYW5kIHRoZW4gcmV0dXJucyB0aGUgPHN2Zz4gZWxlbWVudCBhZ2FpblxyXG4gICAgLmF0dHIoXCJoZWlnaHRcIiwgaGVpZ2h0KSAvLyAoc2FtZSBhcyB3aWR0aClcclxuICAgIC5hcHBlbmQoXCJnXCIpIC8vIGFkZHMgYSA8Zz4gZWxlbWVudCB0byB0aGUgPHN2Zz4gZWxlbWVudC4gSXQgcmV0dXJucyB0aGUgPGc+IGVsZW1lbnRcclxuICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgd2lkdGggLyAyICsgXCIsXCIgKyBoZWlnaHQgLyAyICsgXCIpXCIpOyAvLyB0YWtlcyB0aGUgPGc+IGVsZW1lbnQgYW5kIG1vdmVzIHRoZSBbMCwwXSBjZW50ZXIgb3ZlciBhbmQgZG93blxyXG5cclxuICB2YXIgZyA9IGQzXHJcbiAgICAuc2VsZWN0KFwic3ZnXCIpIC8vIC0tPiA8c3ZnPjwvc3ZnPlxyXG4gICAgLmF0dHIoXCJ3aWR0aFwiLCB3aWR0aCkgLy8gLS0+IDxzdmcgd2lkdGg9XCI1MDBcIj48L3N2Zz5cclxuICAgIC5hdHRyKFwiaGVpZ2h0XCIsIGhlaWdodCkgLy8gLS0+IDxzdmcgd2lkdGg9XCI1MDBcIiBoZWlnaHQ9XCI1MDBcIj48L3N2Zz5cclxuICAgIC5hcHBlbmQoXCJnXCIpIC8vIC0tPiA8c3ZnIHdpZHRoPVwiNTAwXCIgaGVpZ2h0PVwiNTAwXCI+PGc+PC9nPjwvc3ZnPlxyXG4gICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyB3aWR0aCAvIDIgKyBcIixcIiArIGhlaWdodCAvIDIgKyBcIilcIik7IC8vIC0tPiA8c3ZnIHdpZHRoPVwiNTAwXCIgaGVpZ2h0PVwiNTAwXCI+PGcgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDI1MCwyNTApXCI+PC9nPjwvc3ZnPlxyXG5cclxuICB2YXIgcGFydGl0aW9uID0gZDNcclxuICAgIC5wYXJ0aXRpb24oKSAvLyA8LS0gMVxyXG4gICAgLnNpemUoWzIgKiBNYXRoLlBJLCByYWRpdXNdKTsgLy8gPC0tIDJcclxuXHJcbiAgdmFyIHJvb3QgPSBkM1xyXG4gICAgLmhpZXJhcmNoeShoaWVyYXJjaHkpIC8vIDwtLSAxXHJcbiAgICAuc3VtKGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgIHJldHVybiBkLmhlaWdodDtcclxuICAgIH0pOyAvLyA8LS0gMlxyXG5cclxuICBwYXJ0aXRpb24ocm9vdCk7IC8vIDwtLSAxXHJcbiAgdmFyIGFyYyA9IGQzXHJcbiAgICAuYXJjKCkgLy8gPC0tIDJcclxuICAgIC5zdGFydEFuZ2xlKGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgIHJldHVybiBkLngwO1xyXG4gICAgfSlcclxuICAgIC5lbmRBbmdsZShmdW5jdGlvbiAoZCkge1xyXG4gICAgICByZXR1cm4gZC54MTtcclxuICAgIH0pXHJcbiAgICAuaW5uZXJSYWRpdXMoZnVuY3Rpb24gKGQpIHtcclxuICAgICAgcmV0dXJuIGQueTA7XHJcbiAgICB9KVxyXG4gICAgLm91dGVyUmFkaXVzKGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgIHJldHVybiBkLnkxO1xyXG4gICAgfSk7XHJcblxyXG4gIGcuc2VsZWN0QWxsKFwicGF0aFwiKSAvLyA8LS0gMVxyXG4gICAgLmRhdGEocm9vdC5kZXNjZW5kYW50cygpKSAvLyA8LS0gMlxyXG4gICAgLmVudGVyKCkgLy8gPC0tIDNcclxuICAgIC5hcHBlbmQoXCJwYXRoXCIpIC8vIDwtLSA0XHJcbiAgICAuYXR0cihcImRpc3BsYXlcIiwgZnVuY3Rpb24gKGQpIHtcclxuICAgICAgcmV0dXJuIGQuZGVwdGggPyBudWxsIDogXCJub25lXCI7XHJcbiAgICB9KSAvLyA8LS0gNVxyXG4gICAgLmF0dHIoXCJkXCIsIGFyYykgLy8gPC0tIDZcclxuICAgIC5zdHlsZShcInN0cm9rZVwiLCBcIiNmZmZcIikgLy8gPC0tIDdcclxuICAgIC5zdHlsZShcImZpbGxcIiwgZnVuY3Rpb24gKGQpIHtcclxuICAgICAgcmV0dXJuIGNvbG9yKChkLmNoaWxkcmVuID8gZCA6IGQucGFyZW50KS5kYXRhLm5hbWUpO1xyXG4gICAgfSk7IC8vIDwtLSA4XHJcbn07XHJcbiIsICJpbXBvcnQgKiBhcyBkMyBmcm9tIFwiZDNcIjtcclxuaW1wb3J0IHR5cGUgR3JhcGggZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHR5cGUgeyBURmlsZSB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgeyBvcGVuT3JTd2l0Y2ggfSBmcm9tIFwib2JzaWRpYW4tY29tbXVuaXR5LWxpYlwiO1xyXG5pbXBvcnQgeyBkZnNGbGF0QWRqTGlzdCwgVmlzTW9kYWwgfSBmcm9tIFwiLi9WaXNNb2RhbFwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IHRpZHlUcmVlID0gKFxyXG4gIGdyYXBoOiBHcmFwaCxcclxuICBjdXJyRmlsZTogVEZpbGUsXHJcbiAgbW9kYWw6IFZpc01vZGFsLFxyXG4gIHdpZHRoOiBudW1iZXIsXHJcbiAgaGVpZ2h0OiBudW1iZXJcclxuKSA9PiB7XHJcbiAgLy8gY29uc3QgYWRqTGlzdDogQWRqTGlzdEl0ZW1bXSA9IGJmc0Fkakxpc3QoZ3JhcGgsIGN1cnJGaWxlLmJhc2VuYW1lKTtcclxuICAvLyBjb25zb2xlLmxvZyh7IGFkakxpc3QgfSk7XHJcblxyXG4gIC8vIGNvbnN0IG5vRG91YmxlcyA9IFsuLi5hZGpMaXN0XTtcclxuICAvLyBub0RvdWJsZXMuZm9yRWFjaCgoYSwgaSwgbGlzdCkgPT4ge1xyXG4gIC8vICAgaWYgKGxpc3Quc29tZSgoYiwgaikgPT4gaSAhPT0gaiAmJiBhLnBhcmVudElkID09PSBiLnBhcmVudElkKSkge1xyXG4gIC8vICAgICBub0RvdWJsZXMuc3BsaWNlKGksIDEpO1xyXG4gIC8vICAgfVxyXG4gIC8vIH0pO1xyXG4gIC8vIGNvbnNvbGUubG9nKHsgbm9Eb3VibGVzIH0pO1xyXG5cclxuICBjb25zdCB0cmVlID0gKGRhdGEpID0+IHtcclxuICAgIGNvbnN0IHJvb3QgPSBkMy5oaWVyYXJjaHkoZGF0YSk7XHJcbiAgICByb290LmR4ID0gMTA7XHJcbiAgICByb290LmR5ID0gd2lkdGggLyAocm9vdC5oZWlnaHQgKyAxKTtcclxuICAgIHJldHVybiBkMy50cmVlKCkubm9kZVNpemUoW3Jvb3QuZHgsIHJvb3QuZHldKShyb290KTtcclxuICB9O1xyXG5cclxuICBjb25zdCBmbGF0QWRqID0gZGZzRmxhdEFkakxpc3QoZ3JhcGgsIGN1cnJGaWxlLmJhc2VuYW1lKTtcclxuICBjb25zb2xlLmxvZyh7IGZsYXRBZGogfSk7XHJcblxyXG4gIGNvbnN0IGhpZXJhcmNoeSA9IGQzLnN0cmF0aWZ5KCkoZmxhdEFkaik7XHJcbiAgY29uc29sZS5sb2coeyBoaWVyYXJjaHkgfSk7XHJcblxyXG4gIGNvbnN0IHJvb3QgPSB0cmVlKGhpZXJhcmNoeSk7XHJcbiAgY29uc29sZS5sb2cocm9vdCk7XHJcblxyXG4gIGxldCB4MCA9IEluZmluaXR5O1xyXG4gIGxldCB4MSA9IC14MDtcclxuICByb290LmVhY2goKGQpID0+IHtcclxuICAgIGlmIChkLnggPiB4MSkgeDEgPSBkLng7XHJcbiAgICBpZiAoZC54IDwgeDApIHgwID0gZC54O1xyXG4gIH0pO1xyXG5cclxuICBjb25zdCBzdmcgPSBkM1xyXG4gICAgLnNlbGVjdChcIi5kMy1ncmFwaFwiKVxyXG4gICAgLmFwcGVuZChcInN2Z1wiKVxyXG4gICAgLmF0dHIoXCJoZWlnaHRcIiwgaGVpZ2h0KVxyXG4gICAgLmF0dHIoXCJ3aWR0aFwiLCB3aWR0aCk7XHJcblxyXG4gIGNvbnN0IGcgPSBzdmdcclxuICAgIC5hcHBlbmQoXCJnXCIpXHJcbiAgICAuYXR0cihcImZvbnQtZmFtaWx5XCIsIFwic2Fucy1zZXJpZlwiKVxyXG4gICAgLmF0dHIoXCJmb250LXNpemVcIiwgMTApXHJcbiAgICAuYXR0cihcInRyYW5zZm9ybVwiLCBgdHJhbnNsYXRlKCR7cm9vdC5keSAvIDN9LCR7cm9vdC5keCAtIHgwfSlgKTtcclxuXHJcbiAgY29uc3QgbGluayA9IGdcclxuICAgIC5hcHBlbmQoXCJnXCIpXHJcbiAgICAuYXR0cihcImZpbGxcIiwgXCJub25lXCIpXHJcbiAgICAuYXR0cihcInN0cm9rZVwiLCBcIiM1NTVcIilcclxuICAgIC5hdHRyKFwic3Ryb2tlLW9wYWNpdHlcIiwgMC40KVxyXG4gICAgLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgMS41KVxyXG4gICAgLnNlbGVjdEFsbChcInBhdGhcIilcclxuICAgIC5kYXRhKHJvb3QubGlua3MoKSlcclxuICAgIC5qb2luKFwicGF0aFwiKVxyXG4gICAgLmF0dHIoXHJcbiAgICAgIFwiZFwiLFxyXG4gICAgICBkM1xyXG4gICAgICAgIC5saW5rSG9yaXpvbnRhbCgpXHJcbiAgICAgICAgLngoKGQpID0+IGQueSlcclxuICAgICAgICAueSgoZCkgPT4gZC54KVxyXG4gICAgKTtcclxuXHJcbiAgY29uc3Qgbm9kZSA9IGdcclxuICAgIC5hcHBlbmQoXCJnXCIpXHJcbiAgICAuYXR0cihcInN0cm9rZS1saW5lam9pblwiLCBcInJvdW5kXCIpXHJcbiAgICAuYXR0cihcInN0cm9rZS13aWR0aFwiLCAxMClcclxuICAgIC5zZWxlY3RBbGwoXCJnXCIpXHJcbiAgICAuZGF0YShyb290LmRlc2NlbmRhbnRzKCkpXHJcbiAgICAuam9pbihcImdcIilcclxuICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIChkKSA9PiBgdHJhbnNsYXRlKCR7ZC55fSwke2QueH0pYCk7XHJcblxyXG4gIG5vZGVcclxuICAgIC5hcHBlbmQoXCJjaXJjbGVcIilcclxuICAgIC5hdHRyKFwiZmlsbFwiLCAoZCkgPT4gKGQuY2hpbGRyZW4gPyBcIiM1NTVcIiA6IFwiIzk5OVwiKSlcclxuICAgIC5hdHRyKFwiclwiLCAxMCk7XHJcblxyXG4gIG5vZGUuYXR0cihcImFyaWEtbGFiZWxcIiwgKGQpID0+IHtcclxuICAgIGNvbnNvbGUubG9nKGQpO1xyXG4gICAgcmV0dXJuIGQuZGF0YS5kYXRhLm5hbWU7XHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0IG5vZGVDbGljayA9IChldmVudDogTW91c2VFdmVudCwgZGVzdDogc3RyaW5nKSA9PiB7XHJcbiAgICBvcGVuT3JTd2l0Y2goZGVzdCwgZXZlbnQpO1xyXG4gICAgbW9kYWwuY2xvc2UoKTtcclxuICB9O1xyXG4gIG5vZGUub24oXCJjbGlja1wiLCAoZXZlbnQ6IE1vdXNlRXZlbnQsIGQpID0+IHtcclxuICAgIGNvbnNvbGUubG9nKHsgZCB9KTtcclxuICAgIG5vZGVDbGljayhldmVudCwgZC5kYXRhLmRhdGEubmFtZSk7XHJcbiAgfSk7XHJcblxyXG4gIG5vZGVcclxuICAgIC5hcHBlbmQoXCJ0ZXh0XCIpXHJcbiAgICAuYXR0cihcImR5XCIsIFwiMC4zMWVtXCIpXHJcbiAgICAuYXR0cihcInhcIiwgKGQpID0+IChkLmNoaWxkcmVuID8gLTYgOiA2KSlcclxuICAgIC5hdHRyKFwidGV4dC1hbmNob3JcIiwgKGQpID0+IChkLmNoaWxkcmVuID8gXCJlbmRcIiA6IFwic3RhcnRcIikpXHJcbiAgICAudGV4dCgoZCkgPT4gZC5kYXRhLmRhdGEubmFtZSlcclxuICAgIC5jbG9uZSh0cnVlKVxyXG4gICAgLmxvd2VyKClcclxuICAgIC5hdHRyKFwic3Ryb2tlXCIsIFwid2hpdGVcIik7XHJcblxyXG4gIGZ1bmN0aW9uIHpvb21lZCh7IHRyYW5zZm9ybSB9KSB7XHJcbiAgICBzdmcuYXR0cihcInRyYW5zZm9ybVwiLCB0cmFuc2Zvcm0pO1xyXG4gIH1cclxuICBzdmcuY2FsbChcclxuICAgIGQzXHJcbiAgICAgIC56b29tKClcclxuICAgICAgLmV4dGVudChbXHJcbiAgICAgICAgWzAsIDBdLFxyXG4gICAgICAgIFt3aWR0aCwgaGVpZ2h0XSxcclxuICAgICAgXSlcclxuICAgICAgLnNjYWxlRXh0ZW50KFswLjUsIDhdKVxyXG4gICAgICAub24oXCJ6b29tXCIsIHpvb21lZClcclxuICApO1xyXG59O1xyXG4iLCAiaW1wb3J0ICogYXMgZDMgZnJvbSBcImQzXCI7XHJcbmltcG9ydCB0eXBlIEdyYXBoIGZyb20gXCJncmFwaG9sb2d5XCI7XHJcbmltcG9ydCB0eXBlIHsgVEZpbGUgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHsgb3Blbk9yU3dpdGNoIH0gZnJvbSBcIm9ic2lkaWFuLWNvbW11bml0eS1saWJcIjtcclxuaW1wb3J0IHR5cGUgeyBWaXNNb2RhbCB9IGZyb20gXCIuL1Zpc01vZGFsXCI7XHJcbmltcG9ydCB7IGRmc0ZsYXRBZGpMaXN0IH0gZnJvbSBcIi4vVmlzTW9kYWxcIjtcclxuXHJcbmV4cG9ydCBjb25zdCB0cmVlTWFwID0gKFxyXG4gIGdyYXBoOiBHcmFwaCxcclxuICBjdXJyRmlsZTogVEZpbGUsXHJcbiAgbW9kYWw6IFZpc01vZGFsLFxyXG4gIHdpZHRoOiBudW1iZXIsXHJcbiAgaGVpZ2h0OiBudW1iZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgZmxhdEFkaiA9IGRmc0ZsYXRBZGpMaXN0KGdyYXBoLCBjdXJyRmlsZS5iYXNlbmFtZSk7XHJcbiAgY29uc29sZS5sb2coeyBmbGF0QWRqIH0pO1xyXG5cclxuICBjb25zdCBoaWVyYXJjaHkgPSBkMy5zdHJhdGlmeSgpKGZsYXRBZGopO1xyXG4gIGNvbnNvbGUubG9nKHsgaGllcmFyY2h5IH0pO1xyXG5cclxuICBjb25zdCByb290ID0gZDNcclxuICAgIC50cmVlbWFwKClcclxuICAgIC50aWxlKGQzLnRyZWVtYXBCaW5hcnkpXHJcbiAgICAuc2l6ZShbd2lkdGgsIGhlaWdodF0pXHJcbiAgICAucGFkZGluZygxKVxyXG4gICAgLnJvdW5kKHRydWUpKFxyXG4gICAgICBoaWVyYXJjaHkuc3VtKChkKSA9PiBkLmhlaWdodCkuc29ydCgoYSwgYikgPT4gYi5oZWlnaHQgLSBhLmhlaWdodClcclxuICAgICk7XHJcblxyXG4gIC8vICAgY29uc3Qgcm9vdCA9IHRyZWVtYXAoZGF0YSk7XHJcblxyXG4gIGNvbnN0IHN2ZyA9IGQzXHJcbiAgICAuc2VsZWN0KFwiLmQzLWdyYXBoXCIpXHJcbiAgICAuYXBwZW5kKFwic3ZnXCIpXHJcbiAgICAuYXR0cihcImhlaWdodFwiLCBoZWlnaHQpXHJcbiAgICAuYXR0cihcIndpZHRoXCIsIHdpZHRoKVxyXG4gICAgLnN0eWxlKFwiZm9udFwiLCBcIjEwcHggc2Fucy1zZXJpZlwiKTtcclxuXHJcbiAgY29uc3QgbGVhZiA9IHN2Z1xyXG4gICAgLnNlbGVjdEFsbChcImdcIilcclxuICAgIC5kYXRhKHJvb3QubGVhdmVzKCkpXHJcbiAgICAuam9pbihcImdcIilcclxuICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIChkKSA9PiBgdHJhbnNsYXRlKCR7ZC54MH0sJHtkLnkwfSlgKTtcclxuXHJcbiAgbGVhZi5hdHRyKFwiYXJpYS1sYWJlbFwiLCAoZCkgPT4gZC5kYXRhLm5hbWUpO1xyXG5cclxuICAvLyAgIGxlYWYuYXBwZW5kKFwidGl0bGVcIikudGV4dChcclxuICAvLyAgICAgKGQpID0+XHJcbiAgLy8gICAgICAgYCR7ZFxyXG4gIC8vICAgICAgICAgLmFuY2VzdG9ycygpXHJcbiAgLy8gICAgICAgICAucmV2ZXJzZSgpXHJcbiAgLy8gICAgICAgICAubWFwKChkKSA9PiBkLmRhdGEuaWQpXHJcbiAgLy8gICAgICAgICAuam9pbihcIi9cIil9XFxuJHtmb3JtYXQoZC5oZWlnaHQpfWBcclxuICAvLyAgICk7XHJcblxyXG4gIGNvbnN0IGNvbG9yID0gZDMuc2NhbGVPcmRpbmFsKGQzLnNjaGVtZUNhdGVnb3J5MTApO1xyXG5cclxuICBsZWFmXHJcbiAgICAuYXBwZW5kKFwicmVjdFwiKVxyXG4gICAgLy8gLmF0dHIoXCJpZFwiLCAoZCkgPT4gKGQubGVhZlVpZCA9IERPTS51aWQoXCJsZWFmXCIpKS5pZClcclxuICAgIC5hdHRyKFwiZmlsbFwiLCAoZCkgPT4ge1xyXG4gICAgICB3aGlsZSAoZC5kZXB0aCA+IDEpIGQgPSBkLnBhcmVudDtcclxuICAgICAgcmV0dXJuIGNvbG9yKGQuZGF0YS5pZCk7XHJcbiAgICB9KVxyXG4gICAgLmF0dHIoXCJmaWxsLW9wYWNpdHlcIiwgMC42KVxyXG4gICAgLmF0dHIoXCJ3aWR0aFwiLCAoZCkgPT4gZC54MSAtIGQueDApXHJcbiAgICAuYXR0cihcImhlaWdodFwiLCAoZCkgPT4gZC55MSAtIGQueTApO1xyXG5cclxuICBsZWFmXHJcbiAgICAuYXBwZW5kKFwiY2xpcFBhdGhcIilcclxuICAgIC8vIC5hdHRyKFwiaWRcIiwgKGQpID0+IChkLmNsaXBVaWQgPSBET00udWlkKFwiY2xpcFwiKSkuaWQpXHJcbiAgICAuYXBwZW5kKFwidXNlXCIpO1xyXG4gIC8vIC5hdHRyKFwieGxpbms6aHJlZlwiLCAoZCkgPT4gZC5sZWFmVWlkLmhyZWYpO1xyXG5cclxuICAvLyAgIGxlYWZcclxuICAvLyAgICAgLmFwcGVuZChcInRleHRcIilcclxuICAvLyAgICAgLmF0dHIoXCJjbGlwLXBhdGhcIiwgKGQpID0+IGQuY2xpcFVpZClcclxuICAvLyAgICAgLnNlbGVjdEFsbChcInRzcGFuXCIpXHJcbiAgLy8gICAgIC5kYXRhKChkKSA9PiB7XHJcbiAgLy8gICAgICAgY29uc29sZS5sb2coeyBkIH0pO1xyXG4gIC8vICAgICAgIHJldHVybiBkLmRhdGEubmFtZS5zcGxpdCgvKD89W0EtWl1bXkEtWl0pL2cpLmNvbmNhdChmb3JtYXQoZC5oZWlnaHQpKTtcclxuICAvLyAgICAgfSlcclxuICAvLyAgICAgLmpvaW4oXCJ0c3BhblwiKVxyXG4gIC8vICAgICAuYXR0cihcInhcIiwgMylcclxuICAvLyAgICAgLmF0dHIoXHJcbiAgLy8gICAgICAgXCJ5XCIsXHJcbiAgLy8gICAgICAgKGQsIGksIG5vZGVzKSA9PiBgJHsoaSA9PT0gbm9kZXMubGVuZ3RoIC0gMSkgKiAwLjMgKyAxLjEgKyBpICogMC45fWVtYFxyXG4gIC8vICAgICApXHJcbiAgLy8gICAgIC5hdHRyKFwiZmlsbC1vcGFjaXR5XCIsIChkLCBpLCBub2RlcykgPT5cclxuICAvLyAgICAgICBpID09PSBub2Rlcy5sZW5ndGggLSAxID8gMC43IDogbnVsbFxyXG4gIC8vICAgICApO1xyXG4gIC8vICAgLy8gLnRleHQoKGQpID0+IGQpO1xyXG5cclxuICBjb25zdCBub2RlQ2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQsIGRlc3Q6IHN0cmluZykgPT4ge1xyXG4gICAgb3Blbk9yU3dpdGNoKGRlc3QsIGV2ZW50KTtcclxuICAgIG1vZGFsLmNsb3NlKCk7XHJcbiAgfTtcclxuICBsZWFmLm9uKFwiY2xpY2tcIiwgKGV2ZW50OiBNb3VzZUV2ZW50LCBkKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyh7IGQgfSk7XHJcbiAgICBub2RlQ2xpY2soZXZlbnQsIGQuZGF0YS5uYW1lKTtcclxuICB9KTtcclxuXHJcbiAgZnVuY3Rpb24gem9vbWVkKHsgdHJhbnNmb3JtIH0pIHtcclxuICAgIHN2Zy5hdHRyKFwidHJhbnNmb3JtXCIsIHRyYW5zZm9ybSk7XHJcbiAgfVxyXG4gIHN2Zy5jYWxsKFxyXG4gICAgZDNcclxuICAgICAgLnpvb20oKVxyXG4gICAgICAuZXh0ZW50KFtcclxuICAgICAgICBbMCwgMF0sXHJcbiAgICAgICAgW3dpZHRoLCBoZWlnaHRdLFxyXG4gICAgICBdKVxyXG4gICAgICAuc2NhbGVFeHRlbnQoWzAuNSwgOF0pXHJcbiAgICAgIC5vbihcInpvb21cIiwgem9vbWVkKVxyXG4gICk7XHJcbn07XHJcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUFLLFFBQVE7QUFBQSxRQUNoRCxRQUFRO0FBQUEsUUFBTSxRQUFRO0FBQUEsUUFBSyxRQUFRO0FBQUEsUUFBSyxRQUFRO0FBQUEsUUFDaEQsUUFBUTtBQUFBLFFBQU0sUUFBUTtBQUFBLFFBQ3RCLFFBQVE7QUFBQSxRQUFNLFFBQVE7QUFBQSxRQUFLLFFBQVE7QUFBQSxRQUFLLFFBQVE7QUFBQSxRQUFLLFFBQVE7QUFBQSxRQUFLLFFBQVE7QUFBQSxRQUMxRSxRQUFRO0FBQUEsUUFBTSxRQUFRO0FBQUEsUUFBSyxRQUFRO0FBQUEsUUFBSyxRQUFRO0FBQUEsUUFBSyxRQUFRO0FBQUEsUUFBSyxRQUFRO0FBQUEsUUFDMUUsUUFBUTtBQUFBLFFBQU0sUUFBUTtBQUFBLFFBQUssUUFBUTtBQUFBLFFBQUssUUFBUTtBQUFBLFFBQ2hELFFBQVE7QUFBQSxRQUFNLFFBQVE7QUFBQSxRQUFLLFFBQVE7QUFBQSxRQUFLLFFBQVE7QUFBQSxRQUNoRCxRQUFRO0FBQUEsUUFBTSxRQUFRO0FBQUEsUUFBSyxRQUFRO0FBQUEsUUFDbkMsUUFBUTtBQUFBLFFBQU0sUUFBUTtBQUFBLFFBQ3RCLFFBQVE7QUFBQSxRQUFNLFFBQVE7QUFBQSxRQUN0QixRQUFRO0FBQUEsUUFFUixVQUFVO0FBQUEsUUFBTSxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFDekMsVUFBVTtBQUFBLFFBQU0sVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQ3pDLFVBQVU7QUFBQSxRQUFNLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUN4RCxVQUFVO0FBQUEsUUFBTSxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFDeEQsVUFBVTtBQUFBLFFBQU0sVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQ3hELFVBQVU7QUFBQSxRQUFNLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUN2RSxVQUFVO0FBQUEsUUFBTSxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFDdkUsVUFBVTtBQUFBLFFBQU0sVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQ3hELFVBQVU7QUFBQSxRQUFNLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUN4RCxVQUFVO0FBQUEsUUFBTSxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFDeEQsVUFBVTtBQUFBLFFBQU0sVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQ3ZFLFVBQVU7QUFBQSxRQUFNLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUN2RSxVQUFVO0FBQUEsUUFBTSxVQUFVO0FBQUEsUUFDMUIsVUFBVTtBQUFBLFFBQU0sVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQ3pDLFVBQVU7QUFBQSxRQUFNLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUN2RSxVQUFVO0FBQUEsUUFBTSxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFDdkUsVUFBVTtBQUFBLFFBQU0sVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQ3hELFVBQVU7QUFBQSxRQUFNLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUN4RCxVQUFVO0FBQUEsUUFBTSxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFDekMsVUFBVTtBQUFBLFFBQU0sVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQ3pDLFVBQVU7QUFBQSxRQUFNLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUN6QyxVQUFVO0FBQUEs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QzVCO0FBQUEsSUFDRSxPQUFPO0FBQUEsSUFDUCxNQUFNO0FBQUEsSUFDTixXQUFXO0FBQUEsSUFDWCxhQUFhO0FBQUEsSUFDYixLQUFLO0FBQUEsRUFDUDtBQUFBLEVBQ0E7QUFBQSxJQUNFLE9BQU87QUFBQSxJQUNQLE1BQU07QUFBQSxJQUNOLFdBQVc7QUFBQSxJQUNYLGFBQWE7QUFBQSxJQUNiLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQTtBQUFBLElBQ0UsT0FBTztBQUFBLElBQ1AsTUFBTTtBQUFBLElBQ04sV0FBVztBQUFBLElBQ1gsYUFBYTtBQUFBLElBQ2IsS0FBSztBQUFBLEVBQ1A7QUFBQSxFQUNBO0FBQUEsSUFDRSxPQUFPO0FBQUEsSUFDUCxNQUFNO0FBQUEsSUFDTixXQUFXO0FBQUEsSUFDWCxhQUFhO0FBQUEsSUFDYixLQUFLO0FBQUEsRUFDUDtBQUFBLEVBQ0E7QUFBQSxJQUNFLE9BQU87QUFBQSxJQUNQLE1BQU07QUFBQSxJQUNOLFdBQVc7QUFBQSxJQUNYLGFBQWE7QUFBQSxJQUNiLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQTtBQUFBLElBQ0UsT0FBTztBQUFBLElBQ1AsTUFBTTtBQUFBLElBQ04sV0FBVztBQUFBLElBQ1gsYUFBYTtBQUFBLElBQ2IsS0FBSztBQUFBLEVBQ1A7QUFBQSxFQUNBO0FBQUEsSUFDRSxPQUFPO0FBQUEsSUFDUCxNQUFNO0FBQUEsSUFDTixXQUFXO0FBQUEsSUFDWCxhQUFhO0FBQUEsSUFDYixLQUFLO0FBQUEsRUFDUDtBQUFBLEVBQ0E7QUFBQSxJQUNFLE9BQU87QUFBQSxJQUNQLE1BQU07QUFBQSxJQUNOLFdBQVc7QUFBQSxJQUNYLGFBQWE7QUFBQSxJQUNiLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQTtBQUFBLElBQ0UsT0FBTztBQUFBLElBQ1AsTUFBTTtBQUFBLElBQ04sV0FBVztBQUFBLElBQ1gsYUFBYTtBQUFBLElBQ2IsS0FBSztBQUFBLEVBQ1A7QUFBQSxFQUNBO0FBQUEsSUFDRSxPQUFPO0FBQUEsSUFDUCxNQUFNO0FBQUEsSUFDTixXQUFXO0FBQUEsSUFDWCxhQUFhO0FBQUEsSUFDYixLQUFLO0FBQUEsRUFDUDtBQUFBLEVBQ0E7QUFBQSxJQUNFLE9BQU87QUFBQSxJQUNQLE1BQU07QUFBQSxJQUNOLFdBQVc7QUFBQSxJQUNYLGFBQWE7QUFBQSxJQUNiLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQTtBQUFBLElBQ0UsT0FBTztBQUFBLElBQ1AsTUFBTTtBQUFBLElBQ04sV0FBVztBQUFBLElBQ1gsYUFBYTtBQUFBLElBQ2IsS0FBSztBQUFBLEVBQ1A7QUFBQSxFQUNBO0FBQUEsSUFDRSxPQUFPO0FBQUEsSUFDUCxNQUFNO0FBQUEsSUFDTixXQUFXO0FBQUEsSUFDWCxhQUFhO0FBQUEsSUFDYixLQUFLO0FBQUEsRUFDUDtBQUFBLEVBQ0E7QUFBQSxJQUNFLE9BQU87QUFBQSxJQUNQLE1BQU07QUFBQSxJQUNOLFdBQVc7QUFBQSxJQUNYLGFBQWE7QUFBQSxJQUNiLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQTtBQUFBLElBQ0UsT0FBTztBQUFBLElBQ1AsTUFBTTtBQUFBLElBQ04sV0FBVztBQUFBLElBQ1gsYUFBYTtBQUFBLElBQ2IsS0FBSztBQUFBLEVBQ1A7QUFBQSxFQUNBO0FBQUEsSUFDRSxPQUFPO0FBQUEsSUFDUCxNQUFNO0FBQUEsSUFDTixXQUFXO0FBQUEsSUFDWCxhQUFhO0FBQUEsSUFDYixLQUFLO0FBQUEsRUFDUDtBQUNGO0FBRU8sSUFBTSxVQUFVLGVBQWUsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLO0FBRXRFLElBQU0seUJBQXlCO0FBQUEsRUFDcEM7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGO0FBRU8sSUFBTSxtQkFDWDtBQUVLLElBQU0sV0FBVztBQUVqQixJQUFNLG1CQUErQjtBQUFBLEVBQzFDLGlCQUFpQjtBQUFBLEVBQ2pCLGNBQWM7QUFBQSxFQUNkLGdCQUFnQjtBQUFBLEVBQ2hCLGNBQWM7QUFBQSxFQUNkLGVBQWUsQ0FBQztBQUFBLEVBQ2hCLFVBQVU7QUFBQSxFQUNWLG1CQUFtQjtBQUFBLEVBQ25CLFlBQVk7QUFBQSxFQUNaLGdCQUFnQjtBQUFBLEVBQ2hCLGVBQWU7QUFBQSxFQUNmLG1CQUFtQjtBQUFBLEVBQ25CLGtCQUFrQjtBQUFBLEVBQ2xCLGlCQUFpQjtBQUFBLEVBQ2pCLFdBQVc7QUFBQSxFQUNYLHNCQUFzQjtBQUFBLEVBQ3RCLGtCQUFrQjtBQUFBLEVBQ2xCLFlBQVk7QUFBQSxFQUNaLGlCQUFpQjtBQUFBLEVBQ2pCLHlCQUF5QjtBQUFBLEVBQ3pCLGdCQUFnQjtBQUFBLEVBQ2hCLHVDQUF1QztBQUFBLEVBQ3ZDLGFBQWE7QUFBQSxFQUNiLHdCQUF3QixDQUFDO0FBQUEsRUFDekIsNkJBQTZCO0FBQUEsRUFDN0Isa0JBQWtCO0FBQUEsRUFDbEIsZ0JBQWdCLENBQUMsRUFBRTtBQUFBLEVBQ25CLHVCQUF1QjtBQUFBLEVBQ3ZCLFdBQVc7QUFBQSxFQUNYLFlBQVksQ0FBQyxFQUFFO0FBQUEsRUFDZixtQkFBbUI7QUFBQSxFQUNuQixtQkFBbUI7QUFBQSxFQUNuQixtQkFBbUI7QUFBQSxFQUNuQiwrQkFBK0I7QUFBQSxFQUMvQixxQkFBcUI7QUFBQSxFQUNyQixnQkFBZ0I7QUFBQSxFQUNoQixrQkFBa0I7QUFBQSxFQUNsQixnQkFBZ0I7QUFBQSxFQUNoQixnQkFBZ0I7QUFBQSxFQUNoQiw2QkFBNkI7QUFBQSxFQUM3QixnQkFBZ0I7QUFBQSxFQUNoQixrQkFBa0I7QUFBQSxFQUNsQixnQkFBZ0I7QUFBQSxFQUNoQixxQkFBcUI7QUFBQSxFQUNyQixRQUFRO0FBQUEsRUFDUiwrQkFBK0I7QUFBQSxFQUMvQixnQkFBZ0I7QUFBQSxFQUNoQixTQUFTO0FBQUEsRUFDVCxxQkFBcUI7QUFBQSxFQUNyQixtQkFBbUI7QUFBQSxFQUNuQixzQkFBc0I7QUFBQSxFQUN0QixXQUFXO0FBQUEsRUFDWCxVQUFVO0FBQUEsRUFDVixXQUFXO0FBQUEsRUFDWCxjQUFjO0FBQUEsRUFDZCxxQkFBcUI7QUFBQSxFQUNyQix1QkFBdUIsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFBQSxFQUNyQyxzQkFBc0IsQ0FBQztBQUFBLEVBQ3ZCLHdCQUF3QixDQUFDO0FBQUEsRUFDekIsU0FBUztBQUFBLEVBQ1QsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsdUJBQXVCLEVBQUUsSUFBSSxJQUFJLE1BQU0sSUFBSSxNQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sR0FBRztBQUFBLEVBQ3hFLG1CQUFtQjtBQUFBLEVBQ25CLGdCQUFnQjtBQUFBLEVBQ2hCLCtCQUErQjtBQUFBLEVBQy9CLGtCQUFrQjtBQUFBLEVBQ2xCLDJCQUEyQjtBQUFBLEVBQzNCLFdBQVc7QUFBQSxJQUNUO0FBQUEsTUFDRSxJQUFJLENBQUMsSUFBSTtBQUFBLE1BQ1QsTUFBTSxDQUFDLE1BQU07QUFBQSxNQUNiLE1BQU0sQ0FBQyxNQUFNO0FBQUEsTUFDYixNQUFNLENBQUMsTUFBTTtBQUFBLE1BQ2IsTUFBTSxDQUFDLE1BQU07QUFBQSxJQUNmO0FBQUEsRUFDRjtBQUFBLEVBQ0EsZ0JBQWdCO0FBQUEsRUFDaEIsb0JBQW9CO0FBQUEsRUFDcEIsVUFBVTtBQUFBLEVBQ1YsYUFBYTtBQUFBLEVBQ2IsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsZUFBZTtBQUFBLEVBQ2Ysa0JBQWtCO0FBQUEsSUFDaEIsaUJBQWlCO0FBQUEsSUFDakIscUJBQXFCO0FBQUEsSUFDckIsMEJBQTBCO0FBQUEsSUFDMUIsd0JBQXdCO0FBQUEsSUFDeEIsMEJBQTBCO0FBQUEsSUFDMUIsd0JBQXdCO0FBQUEsSUFDeEIsa0JBQWtCO0FBQUEsRUFDcEI7QUFBQSxFQUNBLG1CQUFtQjtBQUFBLEVBQ25CLGVBQWU7QUFDakI7OztBQ3JhQSx3QkFBNEI7QUFDNUIsd0JBQStDOzs7QUNEL0Msc0JBQW9DO0FBRzdCLElBQU0sV0FBTixNQUFlO0FBQUEsRUFFcEIsWUFBWSxRQUFrQjtBQUk5Qix5QkFBZ0IsQ0FBQyxVQUNmLHVCQUFPLEtBQUssT0FBTyxTQUFTLGFBQWE7QUFKekMsU0FBSyxTQUFTO0FBQUEsRUFDaEI7QUFBQSxFQUtBLFFBQVEsT0FBZTtBQUNyQixRQUFJLEtBQUssY0FBYyxDQUFDO0FBQUcsY0FBUSxlQUFlLEtBQUs7QUFBQSxFQUN6RDtBQUFBLEVBQ0EsU0FBUyxNQUFhO0FBQ3BCLFFBQUksS0FBSyxjQUFjLENBQUMsR0FBRztBQUN6QixVQUFJLEtBQUs7QUFBUSxrQ0FBSyxHQUFHLElBQUk7QUFDN0IsY0FBUSxTQUFTO0FBQUEsSUFDbkI7QUFBQSxFQUNGO0FBQUEsRUFDQSxRQUFRLE9BQWU7QUFDckIsUUFBSSxLQUFLLGNBQWMsQ0FBQztBQUFHLGNBQVEsZUFBZSxLQUFLO0FBQUEsRUFDekQ7QUFBQSxFQUNBLFNBQVMsTUFBYTtBQUNwQixRQUFJLEtBQUssY0FBYyxDQUFDLEdBQUc7QUFDekIsVUFBSSxLQUFLO0FBQVEsbUNBQU0sR0FBRyxJQUFJO0FBQzlCLGNBQVEsU0FBUztBQUFBLElBQ25CO0FBQUEsRUFDRjtBQUFBLEVBRUEsV0FBVyxRQUFrQjtBQUMzQixTQUFLLFFBQVEsT0FBTyxFQUFFO0FBQ3RCLFFBQUksT0FBTztBQUFJLFdBQUssUUFBUSxPQUFPLEVBQUU7QUFBQSxFQUN2QztBQUFBLEVBT0EsTUFBTSxXQUFpQixNQUFhO0FBQ2xDLFFBQUksV0FBVTtBQUFHLFdBQUssTUFBTSxHQUFHLElBQUk7QUFBQSxTQUM5QjtBQUNILFdBQUssTUFBTTtBQUNYLFdBQUssTUFBTSxHQUFHLElBQUk7QUFBQSxJQUNwQjtBQUFBLEVBQ0Y7QUFDRjs7O0FDaERBLGdCQUFnQjtBQUFFO0FBRWxCLGdCQUFnQixLQUFLLEtBQUs7QUFFdEIsYUFBVyxLQUFLO0FBQ1osUUFBSSxLQUFLLElBQUk7QUFDakIsU0FBTztBQUNYO0FBU0EsYUFBYSxJQUFJO0FBQ2IsU0FBTyxHQUFHO0FBQ2Q7QUFDQSx3QkFBd0I7QUFDcEIsU0FBTyx1QkFBTyxPQUFPLElBQUk7QUFDN0I7QUFDQSxpQkFBaUIsS0FBSztBQUNsQixNQUFJLFFBQVEsR0FBRztBQUNuQjtBQUNBLHFCQUFxQixPQUFPO0FBQ3hCLFNBQU8sT0FBTyxVQUFVO0FBQzVCO0FBQ0Esd0JBQXdCLElBQUcsR0FBRztBQUMxQixTQUFPLE1BQUssS0FBSSxLQUFLLElBQUksT0FBTSxLQUFPLE9BQUssT0FBTyxPQUFNLFlBQWEsT0FBTyxPQUFNO0FBQ3RGO0FBQ0EsSUFBSTtBQUNKLHVCQUF1QixhQUFhLEtBQUs7QUFDckMsTUFBSSxDQUFDLHNCQUFzQjtBQUN2QiwyQkFBdUIsU0FBUyxjQUFjLEdBQUc7QUFBQSxFQUNyRDtBQUNBLHVCQUFxQixPQUFPO0FBQzVCLFNBQU8sZ0JBQWdCLHFCQUFxQjtBQUNoRDtBQUlBLGtCQUFrQixLQUFLO0FBQ25CLFNBQU8sT0FBTyxLQUFLLEdBQUcsRUFBRSxXQUFXO0FBQ3ZDO0FBcUJBLHFCQUFxQixZQUFZLEtBQUssU0FBUyxJQUFJO0FBQy9DLE1BQUksWUFBWTtBQUNaLFVBQU0sV0FBVyxpQkFBaUIsWUFBWSxLQUFLLFNBQVMsRUFBRTtBQUM5RCxXQUFPLFdBQVcsR0FBRyxRQUFRO0FBQUEsRUFDakM7QUFDSjtBQUNBLDBCQUEwQixZQUFZLEtBQUssU0FBUyxJQUFJO0FBQ3BELFNBQU8sV0FBVyxNQUFNLEtBQ2xCLE9BQU8sUUFBUSxJQUFJLE1BQU0sR0FBRyxXQUFXLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUNsRCxRQUFRO0FBQ2xCO0FBQ0EsMEJBQTBCLFlBQVksU0FBUyxPQUFPLElBQUk7QUFDdEQsTUFBSSxXQUFXLE1BQU0sSUFBSTtBQUNyQixVQUFNLE9BQU8sV0FBVyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQ3BDLFFBQUksUUFBUSxVQUFVLFFBQVc7QUFDN0IsYUFBTztBQUFBLElBQ1g7QUFDQSxRQUFJLE9BQU8sU0FBUyxVQUFVO0FBQzFCLFlBQU0sU0FBUyxDQUFDO0FBQ2hCLFlBQU0sTUFBTSxLQUFLLElBQUksUUFBUSxNQUFNLFFBQVEsS0FBSyxNQUFNO0FBQ3RELGVBQVMsSUFBSSxHQUFHLElBQUksS0FBSyxLQUFLLEdBQUc7QUFDN0IsZUFBTyxLQUFLLFFBQVEsTUFBTSxLQUFLLEtBQUs7QUFBQSxNQUN4QztBQUNBLGFBQU87QUFBQSxJQUNYO0FBQ0EsV0FBTyxRQUFRLFFBQVE7QUFBQSxFQUMzQjtBQUNBLFNBQU8sUUFBUTtBQUNuQjtBQUNBLDBCQUEwQixNQUFNLGlCQUFpQixLQUFLLFNBQVMsY0FBYyxxQkFBcUI7QUFDOUYsTUFBSSxjQUFjO0FBQ2QsVUFBTSxlQUFlLGlCQUFpQixpQkFBaUIsS0FBSyxTQUFTLG1CQUFtQjtBQUN4RixTQUFLLEVBQUUsY0FBYyxZQUFZO0FBQUEsRUFDckM7QUFDSjtBQUtBLGtDQUFrQyxTQUFTO0FBQ3ZDLE1BQUksUUFBUSxJQUFJLFNBQVMsSUFBSTtBQUN6QixVQUFNLFFBQVEsQ0FBQztBQUNmLFVBQU0sU0FBUyxRQUFRLElBQUksU0FBUztBQUNwQyxhQUFTLElBQUksR0FBRyxJQUFJLFFBQVEsS0FBSztBQUM3QixZQUFNLEtBQUs7QUFBQSxJQUNmO0FBQ0EsV0FBTztBQUFBLEVBQ1g7QUFDQSxTQUFPO0FBQ1g7QUFDQSxnQ0FBZ0MsT0FBTztBQUNuQyxRQUFNLFNBQVMsQ0FBQztBQUNoQixhQUFXLEtBQUs7QUFDWixRQUFJLEVBQUUsT0FBTztBQUNULGFBQU8sS0FBSyxNQUFNO0FBQzFCLFNBQU87QUFDWDtBQXlCQSx1QkFBdUIsT0FBTztBQUMxQixTQUFPLFNBQVMsT0FBTyxLQUFLO0FBQ2hDO0FBNERBLElBQUksZUFBZTtBQUNuQiwyQkFBMkI7QUFDdkIsaUJBQWU7QUFDbkI7QUFDQSx5QkFBeUI7QUFDckIsaUJBQWU7QUFDbkI7QUE2RkEsZ0JBQWdCLFFBQVEsTUFBTTtBQUMxQixTQUFPLFlBQVksSUFBSTtBQUMzQjtBQW1EQSxnQkFBZ0IsUUFBUSxNQUFNLFFBQVE7QUFDbEMsU0FBTyxhQUFhLE1BQU0sVUFBVSxJQUFJO0FBQzVDO0FBU0EsZ0JBQWdCLE1BQU07QUFDbEIsT0FBSyxXQUFXLFlBQVksSUFBSTtBQUNwQztBQUNBLHNCQUFzQixZQUFZLFdBQVc7QUFDekMsV0FBUyxJQUFJLEdBQUcsSUFBSSxXQUFXLFFBQVEsS0FBSyxHQUFHO0FBQzNDLFFBQUksV0FBVztBQUNYLGlCQUFXLEdBQUcsRUFBRSxTQUFTO0FBQUEsRUFDakM7QUFDSjtBQUNBLGlCQUFpQixNQUFNO0FBQ25CLFNBQU8sU0FBUyxjQUFjLElBQUk7QUFDdEM7QUFnQkEscUJBQXFCLE1BQU07QUFDdkIsU0FBTyxTQUFTLGdCQUFnQiw4QkFBOEIsSUFBSTtBQUN0RTtBQUNBLGNBQWMsTUFBTTtBQUNoQixTQUFPLFNBQVMsZUFBZSxJQUFJO0FBQ3ZDO0FBQ0EsaUJBQWlCO0FBQ2IsU0FBTyxLQUFLLEdBQUc7QUFDbkI7QUFDQSxpQkFBaUI7QUFDYixTQUFPLEtBQUssRUFBRTtBQUNsQjtBQUNBLGdCQUFnQixNQUFNLE9BQU8sU0FBUyxTQUFTO0FBQzNDLE9BQUssaUJBQWlCLE9BQU8sU0FBUyxPQUFPO0FBQzdDLFNBQU8sTUFBTSxLQUFLLG9CQUFvQixPQUFPLFNBQVMsT0FBTztBQUNqRTtBQTZCQSxjQUFjLE1BQU0sV0FBVyxPQUFPO0FBQ2xDLE1BQUksU0FBUztBQUNULFNBQUssZ0JBQWdCLFNBQVM7QUFBQSxXQUN6QixLQUFLLGFBQWEsU0FBUyxNQUFNO0FBQ3RDLFNBQUssYUFBYSxXQUFXLEtBQUs7QUFDMUM7QUFzQ0EsaUNBQWlDLE9BQU8sU0FBUyxTQUFTO0FBQ3RELFFBQU0sUUFBUSxvQkFBSSxJQUFJO0FBQ3RCLFdBQVMsSUFBSSxHQUFHLElBQUksTUFBTSxRQUFRLEtBQUssR0FBRztBQUN0QyxRQUFJLE1BQU0sR0FBRztBQUNULFlBQU0sSUFBSSxNQUFNLEdBQUcsT0FBTztBQUFBLEVBQ2xDO0FBQ0EsTUFBSSxDQUFDLFNBQVM7QUFDVixVQUFNLE9BQU8sT0FBTztBQUFBLEVBQ3hCO0FBQ0EsU0FBTyxNQUFNLEtBQUssS0FBSztBQUMzQjtBQVdBLGtCQUFrQixVQUFTO0FBQ3ZCLFNBQU8sTUFBTSxLQUFLLFNBQVEsVUFBVTtBQUN4QztBQXVIQSxrQkFBa0IsT0FBTSxNQUFNO0FBQzFCLFNBQU8sS0FBSztBQUNaLE1BQUksTUFBSyxjQUFjO0FBQ25CLFVBQUssT0FBTztBQUNwQjtBQUNBLHlCQUF5QixPQUFPLE9BQU87QUFDbkMsUUFBTSxRQUFRLFNBQVMsT0FBTyxLQUFLO0FBQ3ZDO0FBU0EsbUJBQW1CLE1BQU0sS0FBSyxPQUFPLFdBQVc7QUFDNUMsT0FBSyxNQUFNLFlBQVksS0FBSyxPQUFPLFlBQVksY0FBYyxFQUFFO0FBQ25FO0FBQ0EsdUJBQXVCLFFBQVEsT0FBTztBQUNsQyxXQUFTLElBQUksR0FBRyxJQUFJLE9BQU8sUUFBUSxRQUFRLEtBQUssR0FBRztBQUMvQyxVQUFNLFNBQVMsT0FBTyxRQUFRO0FBQzlCLFFBQUksT0FBTyxZQUFZLE9BQU87QUFDMUIsYUFBTyxXQUFXO0FBQ2xCO0FBQUEsSUFDSjtBQUFBLEVBQ0o7QUFDQSxTQUFPLGdCQUFnQjtBQUMzQjtBQU9BLHNCQUFzQixRQUFRO0FBQzFCLFFBQU0sa0JBQWtCLE9BQU8sY0FBYyxVQUFVLEtBQUssT0FBTyxRQUFRO0FBQzNFLFNBQU8sbUJBQW1CLGdCQUFnQjtBQUM5QztBQTBRQSxJQUFJO0FBQ0osK0JBQStCLFdBQVc7QUFDdEMsc0JBQW9CO0FBQ3hCO0FBQ0EsaUNBQWlDO0FBQzdCLE1BQUksQ0FBQztBQUNELFVBQU0sSUFBSSxNQUFNLGtEQUFrRDtBQUN0RSxTQUFPO0FBQ1g7QUFJQSxpQkFBaUIsSUFBSTtBQUNqQix3QkFBc0IsRUFBRSxHQUFHLFNBQVMsS0FBSyxFQUFFO0FBQy9DO0FBNENBLElBQU0sbUJBQW1CLENBQUM7QUFFMUIsSUFBTSxvQkFBb0IsQ0FBQztBQUMzQixJQUFNLG1CQUFtQixDQUFDO0FBQzFCLElBQU0sa0JBQWtCLENBQUM7QUFDekIsSUFBTSxtQkFBbUIsUUFBUSxRQUFRO0FBQ3pDLElBQUksbUJBQW1CO0FBQ3ZCLDJCQUEyQjtBQUN2QixNQUFJLENBQUMsa0JBQWtCO0FBQ25CLHVCQUFtQjtBQUNuQixxQkFBaUIsS0FBSyxLQUFLO0FBQUEsRUFDL0I7QUFDSjtBQUtBLDZCQUE2QixJQUFJO0FBQzdCLG1CQUFpQixLQUFLLEVBQUU7QUFDNUI7QUFJQSxJQUFJLFdBQVc7QUFDZixJQUFNLGlCQUFpQixvQkFBSSxJQUFJO0FBQy9CLGlCQUFpQjtBQUNiLE1BQUk7QUFDQTtBQUNKLGFBQVc7QUFDWCxLQUFHO0FBR0MsYUFBUyxJQUFJLEdBQUcsSUFBSSxpQkFBaUIsUUFBUSxLQUFLLEdBQUc7QUFDakQsWUFBTSxZQUFZLGlCQUFpQjtBQUNuQyw0QkFBc0IsU0FBUztBQUMvQixhQUFPLFVBQVUsRUFBRTtBQUFBLElBQ3ZCO0FBQ0EsMEJBQXNCLElBQUk7QUFDMUIscUJBQWlCLFNBQVM7QUFDMUIsV0FBTyxrQkFBa0I7QUFDckIsd0JBQWtCLElBQUksRUFBRTtBQUk1QixhQUFTLElBQUksR0FBRyxJQUFJLGlCQUFpQixRQUFRLEtBQUssR0FBRztBQUNqRCxZQUFNLFdBQVcsaUJBQWlCO0FBQ2xDLFVBQUksQ0FBQyxlQUFlLElBQUksUUFBUSxHQUFHO0FBRS9CLHVCQUFlLElBQUksUUFBUTtBQUMzQixpQkFBUztBQUFBLE1BQ2I7QUFBQSxJQUNKO0FBQ0EscUJBQWlCLFNBQVM7QUFBQSxFQUM5QixTQUFTLGlCQUFpQjtBQUMxQixTQUFPLGdCQUFnQixRQUFRO0FBQzNCLG9CQUFnQixJQUFJLEVBQUU7QUFBQSxFQUMxQjtBQUNBLHFCQUFtQjtBQUNuQixhQUFXO0FBQ1gsaUJBQWUsTUFBTTtBQUN6QjtBQUNBLGdCQUFnQixJQUFJO0FBQ2hCLE1BQUksR0FBRyxhQUFhLE1BQU07QUFDdEIsT0FBRyxPQUFPO0FBQ1YsWUFBUSxHQUFHLGFBQWE7QUFDeEIsVUFBTSxRQUFRLEdBQUc7QUFDakIsT0FBRyxRQUFRLENBQUMsRUFBRTtBQUNkLE9BQUcsWUFBWSxHQUFHLFNBQVMsRUFBRSxHQUFHLEtBQUssS0FBSztBQUMxQyxPQUFHLGFBQWEsUUFBUSxtQkFBbUI7QUFBQSxFQUMvQztBQUNKO0FBZUEsSUFBTSxXQUFXLG9CQUFJLElBQUk7QUFDekIsSUFBSTtBQUNKLHdCQUF3QjtBQUNwQixXQUFTO0FBQUEsSUFDTCxHQUFHO0FBQUEsSUFDSCxHQUFHLENBQUM7QUFBQSxJQUNKLEdBQUc7QUFBQSxFQUNQO0FBQ0o7QUFDQSx3QkFBd0I7QUFDcEIsTUFBSSxDQUFDLE9BQU8sR0FBRztBQUNYLFlBQVEsT0FBTyxDQUFDO0FBQUEsRUFDcEI7QUFDQSxXQUFTLE9BQU87QUFDcEI7QUFDQSx1QkFBdUIsT0FBTyxPQUFPO0FBQ2pDLE1BQUksU0FBUyxNQUFNLEdBQUc7QUFDbEIsYUFBUyxPQUFPLEtBQUs7QUFDckIsVUFBTSxFQUFFLEtBQUs7QUFBQSxFQUNqQjtBQUNKO0FBQ0Esd0JBQXdCLE9BQU8sT0FBTyxTQUFRLFVBQVU7QUFDcEQsTUFBSSxTQUFTLE1BQU0sR0FBRztBQUNsQixRQUFJLFNBQVMsSUFBSSxLQUFLO0FBQ2xCO0FBQ0osYUFBUyxJQUFJLEtBQUs7QUFDbEIsV0FBTyxFQUFFLEtBQUssTUFBTTtBQUNoQixlQUFTLE9BQU8sS0FBSztBQUNyQixVQUFJLFVBQVU7QUFDVixZQUFJO0FBQ0EsZ0JBQU0sRUFBRSxDQUFDO0FBQ2IsaUJBQVM7QUFBQSxNQUNiO0FBQUEsSUFDSixDQUFDO0FBQ0QsVUFBTSxFQUFFLEtBQUs7QUFBQSxFQUNqQjtBQUNKO0FBcVRBLElBQU0sVUFBVyxPQUFPLFdBQVcsY0FDN0IsU0FDQSxPQUFPLGVBQWUsY0FDbEIsYUFDQTtBQXlHViwyQkFBMkIsU0FBUSxTQUFTO0FBQ3hDLFFBQU0sVUFBUyxDQUFDO0FBQ2hCLFFBQU0sY0FBYyxDQUFDO0FBQ3JCLFFBQU0sZ0JBQWdCLEVBQUUsU0FBUyxFQUFFO0FBQ25DLE1BQUksSUFBSSxRQUFPO0FBQ2YsU0FBTyxLQUFLO0FBQ1IsVUFBTSxJQUFJLFFBQU87QUFDakIsVUFBTSxJQUFJLFFBQVE7QUFDbEIsUUFBSSxHQUFHO0FBQ0gsaUJBQVcsT0FBTyxHQUFHO0FBQ2pCLFlBQUksQ0FBRSxRQUFPO0FBQ1Qsc0JBQVksT0FBTztBQUFBLE1BQzNCO0FBQ0EsaUJBQVcsT0FBTyxHQUFHO0FBQ2pCLFlBQUksQ0FBQyxjQUFjLE1BQU07QUFDckIsa0JBQU8sT0FBTyxFQUFFO0FBQ2hCLHdCQUFjLE9BQU87QUFBQSxRQUN6QjtBQUFBLE1BQ0o7QUFDQSxjQUFPLEtBQUs7QUFBQSxJQUNoQixPQUNLO0FBQ0QsaUJBQVcsT0FBTyxHQUFHO0FBQ2pCLHNCQUFjLE9BQU87QUFBQSxNQUN6QjtBQUFBLElBQ0o7QUFBQSxFQUNKO0FBQ0EsYUFBVyxPQUFPLGFBQWE7QUFDM0IsUUFBSSxDQUFFLFFBQU87QUFDVCxjQUFPLE9BQU87QUFBQSxFQUN0QjtBQUNBLFNBQU87QUFDWDtBQUNBLDJCQUEyQixjQUFjO0FBQ3JDLFNBQU8sT0FBTyxpQkFBaUIsWUFBWSxpQkFBaUIsT0FBTyxlQUFlLENBQUM7QUFDdkY7QUEySkEsMEJBQTBCLE9BQU87QUFDN0IsV0FBUyxNQUFNLEVBQUU7QUFDckI7QUFJQSx5QkFBeUIsV0FBVyxRQUFRLFFBQVEsZUFBZTtBQUMvRCxRQUFNLEVBQUUsVUFBVSxVQUFVLFlBQVksaUJBQWlCLFVBQVU7QUFDbkUsY0FBWSxTQUFTLEVBQUUsUUFBUSxNQUFNO0FBQ3JDLE1BQUksQ0FBQyxlQUFlO0FBRWhCLHdCQUFvQixNQUFNO0FBQ3RCLFlBQU0saUJBQWlCLFNBQVMsSUFBSSxHQUFHLEVBQUUsT0FBTyxXQUFXO0FBQzNELFVBQUksWUFBWTtBQUNaLG1CQUFXLEtBQUssR0FBRyxjQUFjO0FBQUEsTUFDckMsT0FDSztBQUdELGdCQUFRLGNBQWM7QUFBQSxNQUMxQjtBQUNBLGdCQUFVLEdBQUcsV0FBVyxDQUFDO0FBQUEsSUFDN0IsQ0FBQztBQUFBLEVBQ0w7QUFDQSxlQUFhLFFBQVEsbUJBQW1CO0FBQzVDO0FBQ0EsMkJBQTJCLFdBQVcsV0FBVztBQUM3QyxRQUFNLEtBQUssVUFBVTtBQUNyQixNQUFJLEdBQUcsYUFBYSxNQUFNO0FBQ3RCLFlBQVEsR0FBRyxVQUFVO0FBQ3JCLE9BQUcsWUFBWSxHQUFHLFNBQVMsRUFBRSxTQUFTO0FBR3RDLE9BQUcsYUFBYSxHQUFHLFdBQVc7QUFDOUIsT0FBRyxNQUFNLENBQUM7QUFBQSxFQUNkO0FBQ0o7QUFDQSxvQkFBb0IsV0FBVyxHQUFHO0FBQzlCLE1BQUksVUFBVSxHQUFHLE1BQU0sT0FBTyxJQUFJO0FBQzlCLHFCQUFpQixLQUFLLFNBQVM7QUFDL0Isb0JBQWdCO0FBQ2hCLGNBQVUsR0FBRyxNQUFNLEtBQUssQ0FBQztBQUFBLEVBQzdCO0FBQ0EsWUFBVSxHQUFHLE1BQU8sSUFBSSxLQUFNLE1BQU8sS0FBTSxJQUFJO0FBQ25EO0FBQ0EsY0FBYyxXQUFXLFNBQVMsWUFBVSxtQkFBaUIsV0FBVyxPQUFPLGVBQWUsUUFBUSxDQUFDLEVBQUUsR0FBRztBQUN4RyxRQUFNLG1CQUFtQjtBQUN6Qix3QkFBc0IsU0FBUztBQUMvQixRQUFNLEtBQUssVUFBVSxLQUFLO0FBQUEsSUFDdEIsVUFBVTtBQUFBLElBQ1YsS0FBSztBQUFBLElBRUw7QUFBQSxJQUNBLFFBQVE7QUFBQSxJQUNSO0FBQUEsSUFDQSxPQUFPLGFBQWE7QUFBQSxJQUVwQixVQUFVLENBQUM7QUFBQSxJQUNYLFlBQVksQ0FBQztBQUFBLElBQ2IsZUFBZSxDQUFDO0FBQUEsSUFDaEIsZUFBZSxDQUFDO0FBQUEsSUFDaEIsY0FBYyxDQUFDO0FBQUEsSUFDZixTQUFTLElBQUksSUFBSSxRQUFRLFdBQVksb0JBQW1CLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQUEsSUFFekYsV0FBVyxhQUFhO0FBQUEsSUFDeEI7QUFBQSxJQUNBLFlBQVk7QUFBQSxJQUNaLE1BQU0sUUFBUSxVQUFVLGlCQUFpQixHQUFHO0FBQUEsRUFDaEQ7QUFDQSxtQkFBaUIsY0FBYyxHQUFHLElBQUk7QUFDdEMsTUFBSSxRQUFRO0FBQ1osS0FBRyxNQUFNLGFBQ0gsV0FBUyxXQUFXLFFBQVEsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsU0FBUztBQUM1RCxVQUFNLFFBQVEsS0FBSyxTQUFTLEtBQUssS0FBSztBQUN0QyxRQUFJLEdBQUcsT0FBTyxVQUFVLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxLQUFLLEtBQUssR0FBRztBQUNuRCxVQUFJLENBQUMsR0FBRyxjQUFjLEdBQUcsTUFBTTtBQUMzQixXQUFHLE1BQU0sR0FBRyxLQUFLO0FBQ3JCLFVBQUk7QUFDQSxtQkFBVyxXQUFXLENBQUM7QUFBQSxJQUMvQjtBQUNBLFdBQU87QUFBQSxFQUNYLENBQUMsSUFDQyxDQUFDO0FBQ1AsS0FBRyxPQUFPO0FBQ1YsVUFBUTtBQUNSLFVBQVEsR0FBRyxhQUFhO0FBRXhCLEtBQUcsV0FBVyxvQkFBa0Isa0JBQWdCLEdBQUcsR0FBRyxJQUFJO0FBQzFELE1BQUksUUFBUSxRQUFRO0FBQ2hCLFFBQUksUUFBUSxTQUFTO0FBQ2pCLHNCQUFnQjtBQUNoQixZQUFNLFFBQVEsU0FBUyxRQUFRLE1BQU07QUFFckMsU0FBRyxZQUFZLEdBQUcsU0FBUyxFQUFFLEtBQUs7QUFDbEMsWUFBTSxRQUFRLE1BQU07QUFBQSxJQUN4QixPQUNLO0FBRUQsU0FBRyxZQUFZLEdBQUcsU0FBUyxFQUFFO0FBQUEsSUFDakM7QUFDQSxRQUFJLFFBQVE7QUFDUixvQkFBYyxVQUFVLEdBQUcsUUFBUTtBQUN2QyxvQkFBZ0IsV0FBVyxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsYUFBYTtBQUNoRixrQkFBYztBQUNkLFVBQU07QUFBQSxFQUNWO0FBQ0Esd0JBQXNCLGdCQUFnQjtBQUMxQztBQUNBLElBQUk7QUFDSixJQUFJLE9BQU8sZ0JBQWdCLFlBQVk7QUFDbkMsa0JBQWdCLGNBQWMsWUFBWTtBQUFBLElBQ3RDLGNBQWM7QUFDVixZQUFNO0FBQ04sV0FBSyxhQUFhLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFBQSxJQUN0QztBQUFBLElBQ0Esb0JBQW9CO0FBQ2hCLFlBQU0sRUFBRSxhQUFhLEtBQUs7QUFDMUIsV0FBSyxHQUFHLGdCQUFnQixTQUFTLElBQUksR0FBRyxFQUFFLE9BQU8sV0FBVztBQUU1RCxpQkFBVyxPQUFPLEtBQUssR0FBRyxTQUFTO0FBRS9CLGFBQUssWUFBWSxLQUFLLEdBQUcsUUFBUSxJQUFJO0FBQUEsTUFDekM7QUFBQSxJQUNKO0FBQUEsSUFDQSx5QkFBeUIsT0FBTSxXQUFXLFVBQVU7QUFDaEQsV0FBSyxTQUFRO0FBQUEsSUFDakI7QUFBQSxJQUNBLHVCQUF1QjtBQUNuQixjQUFRLEtBQUssR0FBRyxhQUFhO0FBQUEsSUFDakM7QUFBQSxJQUNBLFdBQVc7QUFDUCx3QkFBa0IsTUFBTSxDQUFDO0FBQ3pCLFdBQUssV0FBVztBQUFBLElBQ3BCO0FBQUEsSUFDQSxJQUFJLE9BQU0sVUFBVTtBQUVoQixZQUFNLFlBQWEsS0FBSyxHQUFHLFVBQVUsVUFBVSxNQUFLLEdBQUcsVUFBVSxTQUFRLENBQUM7QUFDMUUsZ0JBQVUsS0FBSyxRQUFRO0FBQ3ZCLGFBQU8sTUFBTTtBQUNULGNBQU0sU0FBUSxVQUFVLFFBQVEsUUFBUTtBQUN4QyxZQUFJLFdBQVU7QUFDVixvQkFBVSxPQUFPLFFBQU8sQ0FBQztBQUFBLE1BQ2pDO0FBQUEsSUFDSjtBQUFBLElBQ0EsS0FBSyxTQUFTO0FBQ1YsVUFBSSxLQUFLLFNBQVMsQ0FBQyxTQUFTLE9BQU8sR0FBRztBQUNsQyxhQUFLLEdBQUcsYUFBYTtBQUNyQixhQUFLLE1BQU0sT0FBTztBQUNsQixhQUFLLEdBQUcsYUFBYTtBQUFBLE1BQ3pCO0FBQUEsSUFDSjtBQUFBLEVBQ0o7QUFDSjtBQUlBLElBQU0sa0JBQU4sTUFBc0I7QUFBQSxFQUNsQixXQUFXO0FBQ1Asc0JBQWtCLE1BQU0sQ0FBQztBQUN6QixTQUFLLFdBQVc7QUFBQSxFQUNwQjtBQUFBLEVBQ0EsSUFBSSxPQUFNLFVBQVU7QUFDaEIsVUFBTSxZQUFhLEtBQUssR0FBRyxVQUFVLFVBQVUsTUFBSyxHQUFHLFVBQVUsU0FBUSxDQUFDO0FBQzFFLGNBQVUsS0FBSyxRQUFRO0FBQ3ZCLFdBQU8sTUFBTTtBQUNULFlBQU0sU0FBUSxVQUFVLFFBQVEsUUFBUTtBQUN4QyxVQUFJLFdBQVU7QUFDVixrQkFBVSxPQUFPLFFBQU8sQ0FBQztBQUFBLElBQ2pDO0FBQUEsRUFDSjtBQUFBLEVBQ0EsS0FBSyxTQUFTO0FBQ1YsUUFBSSxLQUFLLFNBQVMsQ0FBQyxTQUFTLE9BQU8sR0FBRztBQUNsQyxXQUFLLEdBQUcsYUFBYTtBQUNyQixXQUFLLE1BQU0sT0FBTztBQUNsQixXQUFLLEdBQUcsYUFBYTtBQUFBLElBQ3pCO0FBQUEsRUFDSjtBQUNKOzs7QUN2MkRBLHlCQUEyQjtBQUMzQix3QkFBNkI7QUFDN0IsdUJBQTJEOzs7QUNGM0Qsd0JBQWtDO0FBQ2xDLGtDQUE0QjtBQUU1Qix1QkFBcUI7OztBQ01kLG1CQUNMLFdBQ0EsTUFBMEIsT0FDMUI7QUFDQSxRQUFNLFNBQW1CLENBQUM7QUFDMUIsWUFBVSxRQUFRLENBQUMsU0FBUztBQUMxQixRQUFJLFFBQVEsT0FBTztBQUNqQixpQkFBVyxRQUFRLENBQUMsWUFBWTtBQUM5QixlQUFPLEtBQUssR0FBRyxLQUFLLFFBQVE7QUFBQSxNQUM5QixDQUFDO0FBQUEsSUFDSCxPQUFPO0FBQ0wsYUFBTyxLQUFLLEdBQUcsS0FBSyxJQUFJO0FBQUEsSUFDMUI7QUFBQSxFQUNGLENBQUM7QUFDRCxTQUFPO0FBQ1Q7QUFFTyxJQUFNLFlBQVksQ0FBQyxRQUFnQztBQUN4RCxVQUFRO0FBQUEsU0FDRDtBQUNILGFBQU87QUFBQSxTQUNKO0FBQ0gsYUFBTztBQUFBLFNBQ0o7QUFDSCxhQUFPO0FBQUEsU0FDSjtBQUNILGFBQU87QUFBQSxTQUNKO0FBQ0gsYUFBTztBQUFBO0FBRWI7QUFLTyxzQkFBc0IsV0FBdUIsT0FBZTtBQUNqRSxNQUFJO0FBQ0osTUFBSTtBQUVKLGFBQVcsUUFBUSxDQUFDLFFBQW9CO0FBQ3RDLGNBQVUsUUFBUSxDQUFDLFNBQVM7QUFDMUIsVUFBSSxLQUFLLEtBQUssU0FBUyxLQUFLLEdBQUc7QUFDN0IsbUJBQVc7QUFDWCxvQkFBWTtBQUNaO0FBQUEsTUFDRjtBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUNELFNBQU8sRUFBRSxXQUFXLFNBQVM7QUFDL0I7QUFFTyxzQkFDTCxXQUNBLE9BQ0EsS0FDQTtBQUVBLE1BQUksTUFBTSxTQUFTLEdBQUc7QUFBRyxXQUFPLENBQUMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBRW5ELFFBQU0sWUFBWSxDQUFDLGlCQUFpQixPQUFPLEdBQUcsQ0FBQztBQUMvQyxRQUFNLEVBQUUsV0FBVyxhQUFhLGFBQWEsV0FBVyxLQUFLO0FBQzdELE1BQUksQ0FBQyxhQUFhLENBQUM7QUFBVSxXQUFPO0FBRXBDLFFBQU0sU0FBUyxVQUFVLFFBQVE7QUFDakMsWUFBVSxRQUFRLEdBQUcsVUFBVSxPQUFPO0FBQ3RDLFNBQU87QUFDVDtBQUVPLElBQU0sWUFBWSxDQUFDLFNBQ3hCLFdBQVcsSUFDVCxDQUFDLFFBQVEsR0FBRyxpQkFBaUIsU0FBUyxLQUFLLEtBQUssS0FBSyxJQUFJLEdBQzNELEVBQUUsS0FBSyxJQUFJO0FBRU4sSUFBTSxnQkFBZ0IsQ0FBQyxPQUFlLFFBQzNDLEdBQUcsVUFBVSxpQkFBaUI7QUFDekIsSUFBTSxtQkFBbUIsQ0FBQyxPQUFlLFFBQzlDLEdBQUcsVUFBVSxpQkFBaUIsVUFBVSxHQUFHO0FBRXRDLHNCQUNMLFdBQ0EsSUFDQTtBQUNBLFlBQVUsUUFBUSxDQUFDLFNBQVM7QUFDMUIsZUFBVyxRQUFRLENBQUMsUUFBUTtBQUMxQixXQUFLLEtBQUssUUFBUSxDQUFDLFVBQVU7QUFDM0IsV0FBRyxNQUFNLEtBQUssS0FBSztBQUFBLE1BQ3JCLENBQUM7QUFBQSxJQUNILENBQUM7QUFBQSxFQUNILENBQUM7QUFDSDs7O0FDbEdBLHVCQUFxQjtBQUNyQix1QkFLTzs7O0FDTlAsdUJBQXFCO0FBd0JkLElBQU0sV0FBVyxDQUFDLFVBQWlCLE1BQUssUUFBUSxTQUFTLEVBQUU7QUFDM0QsSUFBTSxjQUFjLENBQUMsT0FBYyxhQUN4QyxTQUFTLG1CQUNMLE1BQUssTUFBTSxTQUFTLG9CQUFvQixFQUFFLEtBQUssSUFDL0M7QUFFQyxJQUFNLG1CQUFtQixDQUFDLE9BQWMsYUFDN0MsWUFBWSxTQUFTLEtBQUksR0FBRyxRQUFRO0FBRS9CLElBQU0sYUFBYSxDQUFDLFVBQ3pCLE1BQUssTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsS0FBSyxHQUFHO0FBRWxELElBQU0sZUFBZSxDQUFDLFdBQTZCO0FBQ3hELE1BQUksQ0FBQyxVQUFVLFdBQVc7QUFBSSxXQUFPLENBQUM7QUFBQTtBQUNqQyxXQUFPLE9BQU8sTUFBTSxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7QUFDdkQ7QUFTTyxrQkFDTCxLQUNBLGFBQ0EsU0FBaUIsSUFDRDtBQUNoQixRQUFNLFFBQXVCLENBQUMsR0FBRyxHQUFHO0FBQ3BDLFFBQU0sYUFBYSxNQUFLO0FBQ3hCLE1BQUksYUFBYTtBQUNmLFVBQU0sSUFBSSxNQUFNLDZDQUE2QztBQUFBLFdBQ3RELGVBQWU7QUFBYSxXQUFPO0FBQUEsT0FDdkM7QUFDSCxhQUFTLElBQUksWUFBWSxJQUFJLGFBQWE7QUFBSyxZQUFLLEtBQUssTUFBTTtBQUMvRCxXQUFPO0FBQUEsRUFDVDtBQUNGO0FBT08sbUJBQXNCLElBQWlCO0FBQzVDLFFBQU0sT0FBTyxHQUFFLEdBQUc7QUFDbEIsUUFBTSxLQUFZLENBQUM7QUFFbkIsV0FBUyxJQUFJLEdBQUcsSUFBSSxNQUFNO0FBQUssT0FBRyxLQUFLLEdBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7QUFFN0QsU0FBTztBQUNUO0FBY08sY0FDTCxLQUNrRDtBQUNsRCxRQUFNLFFBQXlELENBQUM7QUFDaEUsTUFBSSxJQUFJO0FBQ1IsU0FBTyxJQUFJLElBQUksUUFBUTtBQUNyQixVQUFNLFlBQVksSUFBSTtBQUN0QixVQUFLLEtBQUssRUFBRSxPQUFPLFdBQVcsT0FBTyxHQUFHLE1BQU0sT0FBVSxDQUFDO0FBQ3pELFdBQU8sY0FBYyxJQUFJLElBQUk7QUFDM0I7QUFBQSxJQUNGO0FBQ0EsVUFBSyxLQUFLLEVBQUUsT0FBTyxJQUFJO0FBQUEsRUFDekI7QUFDQSxTQUFPO0FBQ1Q7QUE2Q08sbUJBQXNCLEdBQVcsR0FBVyxLQUFVO0FBQzNELFFBQU0sT0FBTSxJQUFJLFNBQVM7QUFDekIsTUFBSSxJQUFJLEtBQUssSUFBSSxRQUFPLElBQUksS0FBSyxJQUFJO0FBQUssV0FBTztBQUNqRCxRQUFNLE1BQU0sSUFBSTtBQUNoQixNQUFJLEtBQUssSUFBSTtBQUNiLE1BQUksS0FBSztBQUNULFNBQU87QUFDVDtBQVNPLG9CQUFvQixPQUFlO0FBQ3hDLFFBQU0sUUFBUSxNQUFNLE1BQU0sU0FBUztBQUNuQyxNQUFJLENBQUM7QUFBTyxXQUFPO0FBQ25CLFFBQU0sQ0FBQyxFQUFFLFlBQVksU0FBUztBQUM5QixNQUFJO0FBQ0YsVUFBTSxRQUFRLElBQUksT0FBTyxZQUFZLEtBQUs7QUFDMUMsV0FBTztBQUFBLEVBQ1QsU0FBUyxHQUFQO0FBQ0EsK0JBQUssQ0FBQztBQUNOLFdBQU87QUFBQSxFQUNUO0FBQ0Y7QUFHTyxxQkFBcUIsUUFBUTtBQUNsQyxTQUFPLE9BQU8sUUFBUSwwQkFBMEIsTUFBTTtBQUN4RDs7O0FEcktPLElBQU0sY0FBYyxNQUFNLElBQUksUUFBUSxRQUFRLFlBQVk7QUFFMUQsSUFBTSxjQUFjLE1BQW9CLElBQUksVUFBVSxjQUFjO0FBTXBFLElBQU0sb0JBQW9CLENBQUMsVUFBaUI7QUFDakQsUUFBTSxhQUFhLE1BQUssTUFBTSxHQUFHLEVBQUUsS0FBSztBQUN4QyxNQUFJLFdBQVcsU0FBUyxLQUFLLEdBQUc7QUFDOUIsV0FBTyxXQUFXLE1BQU0sS0FBSyxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsS0FBSyxHQUFHO0FBQUEsRUFDdEQ7QUFBTyxXQUFPO0FBQ2hCO0FBRU8sSUFBTSxnQkFBZ0IsQ0FBQyxTQUFnQixLQUFLLFlBQVksS0FBSztBQUM3RCxJQUFNLGdCQUFnQixDQUFDLFNBQXFCO0FBaENuRDtBQWtDRSw2Q0FBTSxXQUFOLG1CQUFjLFNBQVEsS0FBSztBQUFBO0FBRXRCLGtCQUFrQixLQUFhLFFBQVEsTUFBTTtBQUNsRCxNQUFJLFFBQU8sSUFBSSxNQUFNO0FBQ3JCLE1BQUksT0FBTztBQUNULFlBQU8sT0FBTztBQUNkLGFBQVE7QUFBQSxFQUNWO0FBQ0EsU0FBTztBQUNUO0FBRU8sdUJBQXVCLEtBQWE7QUFDekMsTUFBSSxRQUFPLElBQUksTUFBTTtBQUNyQixNQUFJLE1BQUssV0FBVyxJQUFJLEtBQUssTUFBSyxTQUFTLElBQUk7QUFBRyxZQUFPLE1BQUssTUFBTSxHQUFHLEVBQUU7QUFDekUsU0FBTztBQUNUO0FBVU8sSUFBTSxxQkFBcUIsT0FDaEMsS0FDQSxPQUNBLE1BQ0EsYUFDQSxRQUNHO0FBQ0gsUUFBTSxXQUFXLE1BQU0sU0FBUztBQUVoQyxNQUFJLENBQUMsZUFBZSxZQUFZLFNBQVMsUUFBVztBQUNsRCwrQkFBSyxhQUFhLFFBQVEsVUFBVTtBQUNwQyxVQUFNLElBQUksbUJBQW1CLEtBQUssS0FBSyxjQUFjLElBQUk7QUFBQSxFQUMzRCxXQUFXLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLFFBQVEsT0FBTyxRQUFRLEdBQUc7QUFDekUsK0JBQUssaUJBQWlCO0FBQ3RCO0FBQUEsRUFDRixPQUFPO0FBQ0wsVUFBTSxlQUF5QixDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQztBQUM3RCxVQUFNLFdBQVcsQ0FBQyxHQUFHLGNBQWMsSUFBSSxXQUFXO0FBQ2xELCtCQUFLLGFBQWEsUUFBUSxVQUFVO0FBQ3BDLFVBQU0sSUFBSSxPQUFPLEtBQUssSUFBSSxTQUFTLEtBQUssSUFBSSxNQUFNLElBQUk7QUFBQSxFQUN4RDtBQUNGO0FBRU8sb0JBQW9CLE1BQWMsS0FBYSxRQUF3QjtBQUM1RSxNQUFJLFNBQVMsSUFBSTtBQUNmLFdBQU8sR0FBRyxVQUFVO0FBQUEsRUFDdEIsT0FBTztBQUNMLFVBQU0sU0FBaUMsZ0NBQVUsSUFBSTtBQUNyRCxVQUFNLFFBQVEsT0FBTztBQUNyQixRQUFJLFVBQVUsUUFBVztBQUN2QixhQUFPLE9BQU87QUFBQSxJQUNoQixXQUFXLE9BQU8sVUFBVSxZQUFZLFVBQVUsUUFBUTtBQUN4RCxhQUFPLE9BQU8sQ0FBQyxPQUFPLE1BQU07QUFBQSxJQUM5QixXQUNFLE9BQU8sZ0NBQVEsUUFBTyxZQUN0QixNQUFNLFlBQ04sQ0FBQyxNQUFNLFNBQVMsTUFBTSxHQUN0QjtBQUNBLGFBQU8sT0FBTyxDQUFDLEdBQUcsT0FBTyxNQUFNO0FBQUEsSUFDakM7QUFFQSxXQUFPLG9DQUFjLE1BQU07QUFBQSxFQUM3QjtBQUNGO0FBRU8sc0JBQXFCLFNBQW1DO0FBQzdELE1BQUksQ0FBQyxRQUFRLFdBQVcsT0FBTztBQUFHLFdBQU8sQ0FBQyxJQUFJLE9BQU87QUFBQSxPQUNoRDtBQUNILFVBQU0sU0FBUyxRQUFRLE1BQU0sS0FBSztBQUNsQyxXQUFPO0FBQUEsTUFDTCxPQUFPLE1BQU0sR0FBRyxDQUFDLEVBQUUsS0FBSyxLQUFLLElBQUk7QUFBQSxNQUNqQyxPQUFPLE1BQU0sQ0FBQyxFQUFFLEtBQUssS0FBSztBQUFBLElBQzVCO0FBQUEsRUFDRjtBQUNGO0FBRU8sSUFBTSxXQUFXLENBQUMsUUFDdkIsSUFBSSxXQUFXLEdBQUcsSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJO0FBRWhDLElBQU0sVUFBVSxDQUFDLFFBQWlCLElBQUksV0FBVyxHQUFHLElBQUksTUFBTSxJQUFJO0FBRWxFLGdCQUFnQixNQUFjLFFBQWlDO0FBeEh0RTtBQXlIRSxRQUFNLEVBQUUsZUFBZSxtQkFBbUIsT0FBTztBQUNqRCxNQUFJLGNBQWMsUUFBUTtBQUN4QixVQUFNLE9BQU8sSUFBSSxjQUFjLHFCQUFxQixNQUFNLEVBQUU7QUFDNUQsUUFBSSxNQUFNO0FBQ1IsWUFBTSxXQUFXLElBQUksY0FBYyxhQUFhLElBQUk7QUFDcEQsaUJBQVcsWUFBWSxlQUFlO0FBQ3BDLGNBQU0sUUFBUSwyQ0FBVSxnQkFBVixtQkFBd0I7QUFFdEMsY0FBTSxNQUNKLE9BQU8sVUFBVSxXQUFXLGFBQWEsS0FBSyxJQUFJO0FBQ3BELFlBQUk7QUFBTyxpQkFBTyxpQkFBaUIsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJO0FBQUEsTUFDMUQ7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFPLFdBQU87QUFDaEI7QUFFQSw0QkFBbUMsUUFBa0I7QUF6SXJEO0FBMElFLE1BQUksSUFBSSxRQUFRLGVBQWUsSUFBSSxVQUFVLEdBQUc7QUFDOUMsUUFBSTtBQUNKLFdBQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxRQUFRLFFBQVEsU0FBUyxJQUFJLEtBQUssUUFBUSxHQUFHO0FBQ3BFLFlBQU0sS0FBSyxHQUFHO0FBQ2QsaUJBQVcsa0JBQVksTUFBWixtQkFBZTtBQUFBLElBQzVCO0FBQUEsRUFDRixPQUFPO0FBQ0wsVUFBTSxxQkFBcUIsR0FBRztBQUFBLEVBQ2hDO0FBQ0Y7QUFFTyxJQUFNLFlBQVksQ0FBQyxJQUFZLFFBQVEsU0FDNUMseUJBQXlCLFVBQVUsRUFBRSxJQUFJLEtBQUssbUJBQW1CLFFBQVEsS0FBSztBQUd6RSxJQUFNLFdBQVcsQ0FBQyxXQUFrQjtBQXpKM0M7QUEwSkUsbUJBQUksUUFBUSxRQUFRLGFBQXBCLG1CQUE4QjtBQUFBO0FBRXpCLHdCQUF3QztBQUM3QyxRQUFNLEVBQUUsV0FBVyxrQkFBa0I7QUFDckMsUUFBTSxFQUFFLGVBQWU7QUFDdkIsUUFBTTtBQUFBLElBQ0osT0FBTyxFQUFFO0FBQUEsTUFDUCxXQUFXLGFBQWE7QUFFNUIsTUFBSSxTQUFTO0FBQVUsV0FBTztBQUU5QixRQUFNLEVBQUUsV0FBVyxXQUFXO0FBRTlCLFFBQU0sT0FBTyxZQUFZO0FBQ3pCLE1BQUksQ0FBQztBQUFNLFdBQU87QUFFbEIsUUFBTSxFQUFFLGdCQUFnQixjQUFjLGFBQWEsSUFBSTtBQUN2RCxNQUFJLENBQUM7QUFBYSxXQUFPO0FBRXpCLFFBQU0sRUFBRSxlQUFPLFFBQVEsWUFBWTtBQUNuQyxRQUFNLFVBQVUsT0FBTyxZQUFZLE9BQU8sVUFBVSxDQUFDO0FBQ3JELE1BQUksV0FBVyxPQUFNLFVBQVUsV0FBVyxJQUFJO0FBQVEsV0FBTztBQUFBO0FBQ3hELFdBQU87QUFDZDs7O0FGdEpPLDJCQUNMLE1BQ0EsU0FDWTtBQUNaLFFBQU0sVUFBVSxLQUFLLEtBQUs7QUFDMUIsVUFBUSxZQUFZLENBQUMsS0FBSyxJQUFHLEdBQUcsTUFBTTtBQUNwQyxZQUFRLFVBQVUsR0FBRyxHQUFHLEVBQUM7QUFBQSxFQUMzQixDQUFDO0FBQ0QsU0FBTztBQUNUO0FBQ08sNkJBQTZCLEdBQWU7QUFDakQsUUFBTSxRQUFPLEVBQUUsS0FBSztBQUNwQixRQUFLLFlBQVksQ0FBQyxTQUFTO0FBQ3pCLFFBQUksQ0FBQyxNQUFLLE9BQU8sSUFBSTtBQUFHLFlBQUssU0FBUyxJQUFJO0FBQUEsRUFDNUMsQ0FBQztBQUNELFNBQU87QUFDVDtBQVNPLHNCQUFzQixNQUFrQixNQUFvQjtBQUNqRSxRQUFNLE1BQU0sSUFBSSw2QkFBVztBQUMzQix5QkFBRyxZQUFZLENBQUMsR0FBRyxJQUFHLEdBQUcsTUFBTTtBQUM3QixRQUFJLEtBQUssU0FBUyxHQUFFLEdBQUcsR0FBRztBQUV4QixvQkFBYyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLEdBQUUsTUFBTSxDQUFDO0FBQzdDLFVBQUksUUFBUSxHQUFHLEdBQUcsRUFBQztBQUFBLElBQ3JCO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDtBQVNPLHlCQUF5QixHQUFlLFFBQWtCO0FBQy9ELFFBQU0sTUFBTSxJQUFJLDZCQUFXO0FBQzNCLElBQUUsWUFBWSxDQUFDLEdBQUcsSUFBRyxHQUFHLE1BQU07QUFDNUIsUUFBSSxPQUFPLFNBQVMsR0FBRSxLQUFLLEdBQUc7QUFFNUIsb0JBQWMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxHQUFFLE1BQU0sQ0FBQztBQUM3QyxVQUFJLFFBQVEsR0FBRyxHQUFHLEVBQUM7QUFBQSxJQUNyQjtBQUFBLEVBQ0YsQ0FBQztBQUNELFNBQU87QUFDVDtBQVVPLDZCQUNMLEdBQ0EsV0FDWTtBQUNaLFFBQU0sUUFBTyxFQUFFLEtBQUs7QUFDcEIsUUFBSyxZQUFZLENBQUMsR0FBRyxJQUFHLEdBQUcsTUFBTTtBQUMvQixVQUFNLEVBQUUsS0FBSyxVQUFVO0FBQ3ZCLFFBQUksVUFBVTtBQUFXO0FBQ3pCLFVBQU0sU0FBUyxVQUFVLEdBQUc7QUFDNUIsVUFBTSxXQUNKLFFBQVEsU0FBUyxRQUFRLGFBQWEsV0FBVyxPQUFPLEdBQUcsRUFBRTtBQUUvRCxrQkFBYyxPQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLEtBQUssQ0FBQztBQUMzQyxpQkFBYSxPQUFNLEdBQUcsR0FBRztBQUFBLE1BQ3ZCLEtBQUs7QUFBQSxNQUNMLE9BQU87QUFBQSxNQUNQLFNBQVM7QUFBQSxJQUNYLENBQUM7QUFBQSxFQUNILENBQUM7QUFDRCxTQUFPO0FBQ1Q7QUFFTyx1QkFDTCxHQUNBLE9BQ0EsUUFBTyxFQUFFLE9BQU8sS0FBSyxHQUNyQjtBQUNBLGFBQVcsUUFBUSxPQUFPO0FBQ3hCLE1BQUUsV0FBVyxNQUFNLENBQUMsaUJBQTZCO0FBQy9DLFlBQU0sY0FBa0MsYUFBYTtBQUNyRCxhQUFPO0FBQUEsUUFDTCxHQUFHO0FBQUEsUUFDSCxPQUFPLGVBQWUsY0FBYyxPQUFPLGNBQWMsTUFBSztBQUFBLE1BQ2hFO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUNGO0FBRU8sc0JBQ0wsR0FDQSxRQUNBLFFBQ0EsT0FDQTtBQUNBLE1BQUksQ0FBQyxFQUFFLFFBQVEsUUFBUSxNQUFNO0FBQUcsTUFBRSxRQUFRLFFBQVEsUUFBUSxLQUFJO0FBQ2hFO0FBRU8sSUFBTSxXQUFXLENBQUMsTUFDdkIsRUFBRSxZQUFZLENBQUMsU0FBUyxFQUFFLFFBQVEsSUFBSSxLQUFLLENBQUMsRUFBRSxVQUFVLElBQUksQ0FBQztBQUt4RCxJQUFNLG1CQUFtQixDQUFDLEdBQWUsU0FDOUMsRUFBRSxRQUFRLElBQUksSUFBSSxFQUFFLGFBQWEsSUFBSSxJQUFJLENBQUM7QUFDckMsSUFBTSxrQkFBa0IsQ0FBQyxHQUFlLFNBQzdDLEVBQUUsUUFBUSxJQUFJLElBQUksRUFBRSxZQUFZLElBQUksSUFBSSxDQUFDO0FBVXBDLHFCQUFxQixHQUFlLFFBQTJCO0FBQ3BFLFFBQU0sUUFBb0IsQ0FBQyxFQUFFLE1BQU0sUUFBTyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQ3BELFFBQU0sVUFBc0MsQ0FBQztBQUM3QyxRQUFNLFdBQXVCLENBQUM7QUFFOUIsTUFBSSxJQUFJO0FBQ1IsU0FBTyxNQUFNLFNBQVMsS0FBSyxJQUFJLEtBQU07QUFDbkM7QUFDQSxVQUFNLEVBQUUsTUFBTSxnQkFBUyxNQUFNLE1BQU07QUFFbkMsVUFBTSxVQUFVLENBQUMsTUFBTSxHQUFHLEtBQUk7QUFDOUIsVUFBTSxrQkFBa0IsRUFBRSxRQUFRLElBQUksSUFDbEMsRUFBRSxtQkFDRixNQUNBLENBQUMsU0FBUyxDQUFDLFFBQVEsU0FBUyxRQUFRLFFBQVEsQ0FDOUMsSUFDRSxDQUFDO0FBQ0wsVUFBTSxXQUFXLGdCQUFnQixJQUFJLENBQUMsU0FBUztBQUM3QyxjQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxJQUFJO0FBQ3BELGFBQU8sRUFBRSxNQUFNLE1BQU0sTUFBTSxRQUFRO0FBQUEsSUFDckMsQ0FBQztBQUVELFVBQU0sUUFBUSxHQUFHLFFBQVE7QUFFekIsUUFBSSxDQUFDLEVBQUUsUUFBUSxJQUFJLEtBQUssQ0FBQyxFQUFFLFVBQVUsSUFBSTtBQUFHLGVBQVMsS0FBSyxPQUFPO0FBQUEsRUFDbkU7QUFDQSxTQUFPO0FBQ1Q7QUFFTyxxQkFBcUIsR0FBZSxRQUEyQjtBQUNwRSxRQUFNLFdBQXVCLENBQUM7QUFDOUIsUUFBTSxRQUFvQixDQUFDLEVBQUUsTUFBTSxRQUFPLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFFcEQsTUFBSSxJQUFJO0FBQ1IsU0FBTyxNQUFNLFdBQVcsS0FBSyxJQUFJLEtBQU07QUFDckM7QUFDQSxVQUFNLEVBQUUsTUFBTSxnQkFBUyxNQUFNLE1BQU07QUFDbkMsVUFBTSxVQUFVLENBQUMsTUFBTSxHQUFHLEtBQUk7QUFFOUIsVUFBTSxRQUFRLEVBQUUsUUFBUSxJQUFJLElBQ3hCLEVBQUUsbUJBQW1CLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBSyxTQUFTLENBQUMsQ0FBQyxJQUNuRCxDQUFDO0FBQ0wsZUFBVyxTQUFRLE9BQU87QUFDeEIsWUFBTSxLQUFLLEVBQUUsYUFBTSxNQUFNLFFBQVEsQ0FBQztBQUFBLElBQ3BDO0FBR0EsUUFBSSxDQUFDLEVBQUUsUUFBUSxJQUFJLEtBQUssTUFBTSxXQUFXLEdBQUc7QUFDMUMsZUFBUyxLQUFLLE9BQU87QUFBQSxJQUN2QjtBQUFBLEVBQ0Y7QUFFQSxXQUFTLFFBQVEsQ0FBQyxVQUFTO0FBQ3pCLFFBQUksTUFBSztBQUFRLFlBQUssT0FBTyxNQUFLLFNBQVMsR0FBRyxDQUFDO0FBQUEsRUFDakQsQ0FBQztBQUNELDZCQUFLLEVBQUUsU0FBUyxDQUFDO0FBQ2pCLFNBQU87QUFDVDtBQUVPLHNCQUFzQixHQUFVLFdBQW1CO0FBQ3hELFFBQU0sUUFBTyxFQUFFLEtBQUs7QUFDcEIsTUFBSSxXQUFXO0FBQ2YsK0NBQVksT0FBTSxXQUFXLENBQUMsTUFBTTtBQUNsQyxVQUFLLG1CQUFtQixHQUFHLENBQUMsTUFBTTtBQUNoQyxVQUFJLE1BQU0sWUFBWSxNQUFLLFFBQVEsR0FBRyxRQUFRLEdBQUc7QUFDL0MsWUFBSTtBQUFFLGdCQUFLLFNBQVMsR0FBRyxRQUFRO0FBQUEsUUFBRSxTQUMxQixRQUFQO0FBQWdCLGtCQUFRLE1BQU0sR0FBRyxVQUFVLE1BQUs7QUFBQSxRQUFFO0FBQUEsTUFDcEQ7QUFBQSxJQUNGLENBQUM7QUFFRCxlQUFXO0FBQUEsRUFDYixDQUFDO0FBQ0QsU0FBTztBQUNUO0FBYU8seUJBQXFDO0FBQzFDLFFBQU0sT0FBTyxJQUFJLDZCQUFXO0FBQzVCLFFBQU0sRUFBRSxlQUFlLG9CQUFvQixJQUFJO0FBRS9DLGFBQVcsVUFBVSxlQUFlO0FBQ2xDLFFBQUksQ0FBQyxPQUFPLFNBQVMsS0FBSztBQUFHO0FBQzdCLFVBQU0sYUFBYSxrQkFBa0IsTUFBTTtBQUMzQyxrQkFBYyxNQUFNLENBQUMsVUFBVSxDQUFDO0FBRWhDLGVBQVcsUUFBUSxjQUFjLFNBQVM7QUFDeEMsVUFBSSxDQUFDLEtBQUssU0FBUyxLQUFLO0FBQUc7QUFDM0IsWUFBTSxXQUFXLGtCQUFrQixJQUFJO0FBQ3ZDLG9CQUFjLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDOUIsV0FBSyxRQUFRLFlBQVksVUFBVSxFQUFFLFVBQVUsS0FBSyxDQUFDO0FBQUEsSUFDdkQ7QUFBQSxFQUNGO0FBRUEsYUFBVyxVQUFVLGlCQUFpQjtBQUNwQyxVQUFNLGFBQWEsa0JBQWtCLE1BQU07QUFDM0Msa0JBQWMsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUVoQyxlQUFXLFFBQVEsZ0JBQWdCLFNBQVM7QUFDMUMsWUFBTSxXQUFXLGtCQUFrQixJQUFJO0FBQ3ZDLG9CQUFjLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDOUIsVUFBSSxlQUFlO0FBQVU7QUFDN0IsV0FBSyxRQUFRLFlBQVksVUFBVSxFQUFFLFVBQVUsTUFBTSxDQUFDO0FBQUEsSUFDeEQ7QUFBQSxFQUNGO0FBRUEsNkJBQUssRUFBRSxLQUFLLENBQUM7QUFDYixTQUFPO0FBQ1Q7QUFFTyxzQkFDTCxVQUNBLE9BQ0EsUUFDQSxPQUNBLFFBQ0EsYUFDQSxhQUNBLFVBQVUsT0FDSjtBQUNOLFFBQU0sRUFBRSxjQUFjO0FBQ3RCLFFBQU0sTUFBTSxhQUFhLFdBQVcsS0FBSyxFQUFFO0FBRTNDLGdCQUFjLE9BQU8sQ0FBQyxNQUFNLEdBQUc7QUFBQSxJQUM3QixPQUFPO0FBQUEsRUFDVCxDQUFDO0FBRUQsZ0JBQWMsT0FBTyxDQUFDLE1BQU0sR0FBRztBQUFBLElBQzdCLE9BQU87QUFBQSxFQUNULENBQUM7QUFFRCxlQUFhLE9BQU8sUUFBUSxRQUFRO0FBQUEsSUFDbEM7QUFBQSxJQUNBO0FBQUEsRUFDRixDQUFDO0FBQ0QsTUFBSSxTQUFTO0FBQ1gsaUJBQWEsT0FBTyxRQUFRLFFBQVE7QUFBQSxNQUNsQyxLQUFLLFVBQVUsR0FBRztBQUFBLE1BQ2xCLE9BQU8sYUFBYSxXQUFXLE9BQU8sR0FBRyxFQUFFO0FBQUEsSUFDN0MsQ0FBQztBQUFBLEVBQ0g7QUFDRjtBQUVPLElBQU0saUJBQWlCLENBQUMsU0FBK0IsV0FBZ0I7QUFyVDlFO0FBc1RFLGtCQUNHLG9CQUFRLEtBQUssQ0FBQyxPQUFJO0FBdlR2QjtBQXVUMEIsNENBQUksU0FBSixvQkFBVSxjQUFhO0FBQUEsR0FBTSxNQUFsRCxtQkFDQyxjQURELFlBRWUsTUFDbEI7QUFBQTtBQUVLLElBQU0saUJBQWlCLENBQUMsV0FBNEI7QUE1VDNEO0FBNlRFLGtCQUFVLGFBQU8sY0FBUCxZQUErQixNQUFNO0FBQUE7QUFHMUMseUJBQ0wsUUFDQSxVQUNBLE1BQWtCLE1BQ0o7QUFDZCxRQUFNLGlCQUErQixrQkFBa0I7QUFDdkQsUUFBTSxFQUFFLFVBQVUsWUFBWTtBQUM5QixRQUFNLEVBQUUsY0FBYztBQUV0QixNQUFJLENBQUMsUUFBUSxRQUFRLFFBQVE7QUFBRyxXQUFPO0FBQ3ZDLFVBQVEsWUFBWSxVQUFVLENBQUMsR0FBRyxJQUFHLEdBQUcsTUFBTTtBQUM1QyxVQUFNLEVBQUUsT0FBTyxLQUFLLFNBQVMsWUFBWTtBQUN6QyxVQUFNLFdBQVcsYUFBYSxXQUFXLE9BQU8sT0FBTyxFQUFFO0FBRXpELElBQUMsT0FBTSxDQUFDLEtBQUssVUFBVSxHQUFHLENBQUMsSUFBSSxZQUFZLFFBQ3pDLENBQUMsWUFBd0I7QUFDdkIsWUFBTSxTQUFTLFVBQVUsT0FBTztBQUVoQyxVQUFJLE1BQU0sWUFBYSxhQUFZLFdBQVcsWUFBWSxTQUFTO0FBQ2pFLGNBQU0sTUFBTSxlQUFlLFNBQVM7QUFDcEMsWUFBSSxJQUFJLFVBQVUsQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLE1BQU0sSUFBSTtBQUNqRCxjQUFJLEtBQUssRUFBRSxJQUFJLEdBQUcsT0FBTyxRQUFRLENBQUM7QUFBQSxRQUNwQztBQUFBLE1BQ0YsV0FHUyxZQUFZLFdBQVcsWUFBWSxRQUFRO0FBQ2xELGNBQU0sTUFBTSxlQUFlLFVBQVUsT0FBTyxHQUFHO0FBQy9DLFlBQUksSUFBSSxVQUFVLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyxNQUFNLElBQUk7QUFDakQsY0FBSSxLQUFLO0FBQUEsWUFDUCxJQUFJO0FBQUEsWUFDSixPQUFPO0FBQUEsWUFDUDtBQUFBLFVBQ0YsQ0FBQztBQUFBLFFBQ0g7QUFBQSxNQUNGO0FBQUEsSUFDRixDQUNGO0FBQUEsRUFDRixDQUFDO0FBQ0QsU0FBTztBQUNUOzs7QUlsV08sbUNBQW1DLEdBQWUsVUFBc0I7QUFDM0UsUUFBTSxFQUFFLFdBQVcsa0NBQWtDO0FBQ3JELElBQUUsWUFBWSxDQUFDLE9BQU8sT0FBTTtBQUV4QixNQUFFLGVBQWUsT0FBTyxDQUFDLEdBQUcsV0FBVyxHQUFHLGVBQWU7QUFWakU7QUFXWSxVQUFJLFVBQVUsUUFBUTtBQUFNO0FBRTVCLFlBQU0sRUFBRSxVQUFVLGNBQWMsYUFBYSxXQUFXLFVBQVUsS0FBSztBQUN2RSxZQUFNLFFBQ0YsZ0JBQVUsS0FBSyxPQUFmLFlBQXFCLGNBQWMsVUFBVSxPQUFPLFFBQVE7QUFHaEUsUUFBRSxlQUFlLFlBQVksQ0FBQyxJQUFHLElBQUcsSUFBRyxtQkFBbUI7QUFFdEQsWUFDSSxHQUFFLFFBQVEsVUFDVCxDQUFDLGlDQUFpQyxtQkFBbUI7QUFFdEQ7QUFFSixxQkFBYSxHQUFHLE9BQU8sZ0JBQWdCO0FBQUEsVUFDbkMsS0FBSztBQUFBLFVBQ0w7QUFBQSxVQUNBLFNBQVM7QUFBQSxRQUNiLENBQUM7QUFBQSxNQUNMLENBQUM7QUFBQSxJQUNMLENBQUM7QUFBQSxFQUNMLENBQUM7QUFDTDtBQUVPLG1DQUFtQyxHQUFlO0FBQ3JELElBQUUsWUFBWSxDQUFDLE9BQU8sT0FBTTtBQUV4QixNQUFFLGVBQWUsT0FBTyxDQUFDLEdBQUcsV0FBVyxHQUFHLFlBQVk7QUFDbEQsVUFBSSxVQUFVLFFBQVE7QUFBUTtBQUU5QixRQUFFLGVBQWUsU0FBUyxDQUFDLElBQUcsSUFBRyxJQUFHLFdBQVc7QUFDM0MsY0FBTSxFQUFFLEtBQUssVUFBVTtBQUN2QixZQUFJLFFBQVE7QUFBTTtBQUVsQixxQkFBYSxHQUFHLE9BQU8sUUFBUTtBQUFBLFVBQzNCLEtBQUs7QUFBQSxVQUNMO0FBQUEsVUFDQSxTQUFTO0FBQUEsUUFDYixDQUFDO0FBQUEsTUFDTCxDQUFDO0FBQUEsSUFDTCxDQUFDO0FBQUEsRUFDTCxDQUFDO0FBQ0w7QUFLTyx3QkFBd0IsR0FBZTtBQUMxQyxJQUFFLFlBQVksQ0FBQyxPQUFPLE9BQU07QUFFeEIsTUFBRSxlQUFlLE9BQU8sQ0FBQyxHQUFHLFdBQVcsR0FBRyxlQUFlO0FBQ3JELFVBQUksVUFBVSxRQUFRO0FBQU07QUFFNUIsUUFBRSxlQUFlLFlBQVksQ0FBQyxJQUFHLElBQUcsSUFBRyxVQUFVO0FBQzdDLFlBQUksR0FBRSxRQUFRO0FBQVE7QUFFdEIscUJBQWEsR0FBRyxPQUFPLE9BQU87QUFBQSxVQUMxQixLQUFLO0FBQUEsVUFFTCxPQUFPLFVBQVU7QUFBQSxVQUNqQixTQUFTO0FBQUEsUUFDYixDQUFDO0FBQUEsTUFDTCxDQUFDO0FBQUEsSUFDTCxDQUFDO0FBQUEsRUFDTCxDQUFDO0FBQ0w7QUFDTyxvQkFBb0IsR0FBZTtBQUN0QyxJQUFFLFlBQVksQ0FBQyxPQUFPLE9BQU07QUFFeEIsTUFBRSxlQUFlLE9BQU8sQ0FBQyxHQUFHLFdBQVcsR0FBRyxlQUFlO0FBQ3JELFVBQUksVUFBVSxRQUFRO0FBQU07QUFFNUIsUUFBRSxlQUFlLFlBQVksQ0FBQyxJQUFHLG1CQUFtQixJQUFHLFVBQVU7QUFDN0QsWUFBSSxrQkFBa0IsUUFBUTtBQUFRO0FBRXRDLFVBQUUsZUFBZSxPQUFPLENBQUMsSUFBRyxJQUFHLElBQUcsV0FBVztBQUN6QyxjQUFJLEdBQUUsUUFBUSxVQUFVLFVBQVU7QUFBUTtBQUUxQyx1QkFBYSxHQUFHLE9BQU8sUUFBUTtBQUFBLFlBQzNCLEtBQUs7QUFBQSxZQUNMLE9BQU8sa0JBQWtCO0FBQUEsWUFDekIsU0FBUztBQUFBLFVBQ2IsQ0FBQztBQUFBLFFBQ0wsQ0FBQztBQUFBLE1BQ0wsQ0FBQztBQUFBLElBQ0wsQ0FBQztBQUFBLEVBQ0wsQ0FBQztBQUNMO0FBSU8sMENBQTBDLEdBQWU7QUFDNUQsSUFBRSxZQUFZLENBQUMsT0FBTyxPQUFNO0FBQ3hCLE1BQUUsY0FBYyxPQUFPLENBQUMsR0FBRyxNQUFNLEtBQUssTUFBTTtBQUN4QyxVQUFJLEtBQUssUUFBUTtBQUFRO0FBQ3pCLFFBQUUsY0FBYyxPQUFPLENBQUMsSUFBRyxNQUFNLEtBQUssT0FBTTtBQUN4QyxZQUFJLEtBQUssUUFBUSxVQUFVLFFBQVE7QUFBSztBQUN4QyxZQUFJLEtBQUssVUFBVSxLQUFLLE9BQU87QUFDM0IsdUJBQWEsR0FBRyxLQUFLLEtBQUs7QUFBQSxZQUN0QixLQUFLO0FBQUEsWUFDTCxPQUFPLEtBQUs7QUFBQSxZQUNaLFNBQVM7QUFBQSxVQUNiLENBQUM7QUFBQSxRQUNMO0FBQUEsTUFDSixDQUFDO0FBQUEsSUFDTCxDQUFDO0FBQUEsRUFDTCxDQUFDO0FBQ0w7OztBQ3RIQSx1QkFBc0I7QUFDdEIsdUJBQThCO0FBTTlCLDBCQUFpQyxRQUFrQjtBQUNqRCxRQUFNLEVBQUUsYUFBYSxPQUFPO0FBQzVCLFFBQU0sVUFBdUMsQ0FBQztBQUM5QyxNQUFJLGFBQWE7QUFBSSxXQUFPO0FBRTVCLFFBQU0sV0FBVyxvQ0FBYyxRQUFRO0FBRXZDLFFBQU0sVUFBVSxNQUFNLElBQUksTUFBTSxRQUFRLEtBQUssUUFBUTtBQUNyRCxRQUFNLFFBQVEsUUFBUSxNQUFNLElBQUk7QUFFaEMsUUFBTSxVQUFVLE1BQU0sR0FBRyxNQUFNLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQztBQUM3RCxRQUFNLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxRQUFRO0FBQzlCLFVBQU0sU0FBUyxDQUFDO0FBQ2hCLFFBQ0csTUFBTSxHQUFHLEVBQ1QsSUFBSSxDQUFDLFNBQVMsY0FBYyxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQ3hDLFFBQVEsQ0FBQyxNQUFNLE1BQU07QUFDcEIsYUFBTyxRQUFRLE1BQU07QUFBQSxJQUN2QixDQUFDO0FBQ0gsZ0NBQU0sRUFBRSxPQUFPLENBQUM7QUFDaEIsWUFBUSxLQUFLLE1BQU07QUFBQSxFQUNyQixDQUFDO0FBQ0QsU0FBTztBQUNUO0FBRU8sc0JBQ0wsR0FDQSxTQUNBLEtBQ0EsT0FDQTtBQUNBLFVBQVEsUUFBUSxDQUFDLFFBQVE7QUFDdkIsa0JBQWMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDO0FBQzNCLFFBQUksVUFBVSxNQUFNLENBQUMsSUFBSTtBQUFRO0FBRWpDLGtCQUFjLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQztBQUM3QixpQkFBYSxHQUFHLElBQUksTUFBTSxJQUFJLFFBQVEsRUFBRSxLQUFLLE1BQU0sQ0FBQztBQUFBLEVBQ3RELENBQUM7QUFDSDs7O0FDN0NBLHVCQUFxQjtBQUNyQix1QkFBdUI7QUFZaEIsaUNBQ0wsUUFDQSxjQUNBLFNBQ0EsT0FDQTtBQUNBLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU0sRUFBRSxXQUFXLHNCQUFzQjtBQUN6QyxRQUFNLEtBQUssU0FBUyxNQUFNO0FBQzFCLE1BQUksQ0FBQyxNQUFNLGFBQWEsUUFBUTtBQUM5QixRQUFJLHdCQUFPLGdCQUFnQjtBQUMzQjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLFNBQVMsVUFBVSxTQUFTO0FBRWxDLGVBQWEsUUFBUSxDQUFDLFlBQVk7QUE5QnBDO0FBK0JJLFVBQU0sV0FBVyxjQUFjLFFBQVEsSUFBSTtBQUUzQyxRQUFJLFFBQVEsUUFBUTtBQUNwQixRQUFJLE1BQU0sZUFBZSxNQUFNLEdBQUc7QUFFaEMsY0FBUSxLQUFLLE1BQU07QUFBQSxJQUNyQjtBQUdBLFFBQUksUUFDRCxjQUFRLHNCQUFSLFlBQXlDLHFCQUFxQixPQUFPO0FBRXhFLFFBQUksVUFBZ0MsQ0FBQztBQUNyQyxRQUFJO0FBQ0YsZ0JBQVUsR0FBRyxNQUFjLEtBQUssRUFBRTtBQUFBLElBQ3BDLFNBQVMsSUFBUDtBQUNBLFVBQUksd0JBQU8sR0FBRywwQ0FBMEM7QUFDeEQsaUNBQUssRUFBRTtBQUFBLElBQ1Q7QUFFQSxlQUFXLFVBQVUsU0FBUztBQUM1QixVQUFJLE9BQU87QUFBWTtBQUN2QixZQUFNLFdBQVcsY0FBYyxPQUFPLElBQUk7QUFDMUMsWUFBTSxjQUFjLGVBQWUsT0FBTztBQUMxQyxZQUFNLGNBQWMsZUFBZSxTQUFTLFFBQVE7QUFFcEQsbUJBQ0UsVUFDQSxPQUNBLFVBQ0EsT0FDQSxVQUNBLGFBQ0EsYUFDQSxJQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQztBQUNIOzs7QUNoRUEsWUFBdUI7QUFFaEIsNkJBQ0wsUUFDQSxTQUNBLE9BQ0E7QUFDQSxRQUFNLEVBQUUsYUFBYTtBQUNyQixRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxNQUNFO0FBQ0osTUFBSSxDQUFDO0FBQWM7QUFFbkIsUUFBTSxFQUFFLFVBQVUsQUFBTSxlQUFTLGtCQUFrQixJQUFJLGNBQWM7QUFDckUsVUFBUSxRQUFRLENBQUMsU0FBUztBQUN4QixVQUFNLEVBQUUsU0FBUztBQUNqQixVQUFNLEVBQUUsUUFBUTtBQUNoQixRQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxjQUFjLElBQUksQ0FBQztBQUFHO0FBRTlDLFVBQU0sUUFBUSxjQUFjLElBQUk7QUFDaEMsVUFBTSxXQUFXLElBQUksS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ3JDLFVBQU0sU0FBUyxTQUFTLFNBQVMsY0FBYztBQUUvQyxpQkFDRSxVQUNBLE9BQ0EsT0FDQSxlQUNBLFFBQ0EsTUFDQSxNQUNBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDSDs7O0FDaENBLElBQU0sbUJBQW1CLENBQUMsU0FBaUIsYUFDekMsUUFBUSxNQUFNLFFBQVEsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLEtBQUssUUFBUTtBQUU3QyxnQ0FDTCxRQUNBLFNBQ0EsT0FDQTtBQUNBLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU0sRUFBRSxpQkFBaUIsc0JBQXNCLHFCQUFxQjtBQUNwRSxNQUFJLENBQUM7QUFBaUI7QUFFdEIsYUFBVyxVQUFVLFNBQVM7QUFDNUIsUUFBSSxPQUFPLHNCQUFzQixPQUFPO0FBQVk7QUFFcEQsUUFBSSxPQUFPLGNBQWMsT0FBTyxJQUFJO0FBQ3BDLFFBQUksU0FBUyxpQkFBaUIsTUFBTSxvQkFBb0I7QUFFeEQsV0FBTyxXQUFXLElBQUk7QUFDcEIsWUFBTSxhQUFhLFFBQVEsS0FDekIsQ0FBQyxPQUFPLGNBQWMsR0FBRyxJQUFJLE1BQU0sTUFDckM7QUFJQSxVQUFJLENBQUMsY0FBYyxXQUFXLHVCQUF1QixNQUFNO0FBQ3pELHFCQUNFLFVBQ0EsT0FDQSxNQUNBLGtCQUNBLFFBQ0EsTUFDQSxNQUNBLElBQ0Y7QUFBQSxNQUNGO0FBQ0EsYUFBTztBQUNQLGVBQVMsaUJBQWlCLFFBQVEsb0JBQW9CO0FBQUEsSUFDeEQ7QUFBQSxFQUNGO0FBQ0Y7OztBQ25EQSx1QkFBK0I7QUFpQi9CLElBQU0sb0JBQW9CLENBQUMsV0FBb0I7QUFDN0MsUUFBTSxhQUFzQixDQUFDLEdBQzNCLGFBQXdCLENBQUM7QUFDM0IsU0FBTyxTQUFTLFFBQVEsQ0FBQyxjQUFjO0FBQ3JDLFFBQUkscUJBQXFCO0FBQU8saUJBQVcsS0FBSyxTQUFTO0FBQUE7QUFDcEQsaUJBQVcsS0FBSyxTQUFvQjtBQUFBLEVBQzNDLENBQUM7QUFDRCxTQUFPLEVBQUUsWUFBWSxXQUFXO0FBQ2xDO0FBRU8sK0JBQ0wsUUFDQSxhQUNBLFNBQ0EsT0FDQTtBQUNBLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU0sRUFBRSxjQUFjO0FBQ3RCLFFBQU0sU0FBUyxVQUFVLFNBQVM7QUFFbEMsY0FBWSxRQUFRLENBQUMsWUFBWTtBQUMvQixVQUFNLEVBQUUsU0FBUztBQUNqQixVQUFNLFdBQVcsY0FBYyxJQUFJO0FBQ25DLFVBQU0sZ0JBQWdCLGNBQWMsSUFBSTtBQUN4QyxVQUFNLFlBQVksSUFBSSxNQUFNLHNCQUFzQixhQUFhO0FBRS9ELFVBQU0sVUFBVSxRQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUNuQixPQUNDLENBQUMsVUFDQyxjQUFjLEtBQUssTUFBTSxpQkFBaUIsTUFBTSxTQUFTLEtBQUssUUFBUSxDQUFDLE1BQU0sVUFDakYsRUFDQyxJQUFJLGFBQWE7QUFFcEIsVUFBTSxRQUFRLFFBQVE7QUFDdEIsUUFBSSxPQUFPLFVBQVUsWUFBWSxDQUFDLE9BQU8sU0FBUyxLQUFLO0FBQUc7QUFFMUQsWUFBUSxRQUFRLENBQUMsV0FBVztBQUUxQixZQUFNLGNBQWMsZUFBZSxPQUFPO0FBQzFDLFlBQU0sY0FBYyxlQUFlLFNBQVMsUUFBUTtBQUNwRCxtQkFDRSxVQUNBLE9BQ0EsVUFDQSxPQUNBLFFBQ0EsYUFDQSxhQUNBLElBQ0Y7QUFBQSxJQUNGLENBQUM7QUFFRCxRQUFJLFFBQVEsNEJBQTRCO0FBQ3RDLFlBQU0saUJBQWlCLFFBQVE7QUFDL0IsVUFDRSxPQUFPLG1CQUFtQixZQUMxQixDQUFDLE9BQU8sU0FBUyxjQUFjO0FBRS9CO0FBRUYsWUFBTSxFQUFFLGVBQWUsa0JBQWtCLFNBQVM7QUFFbEQsaUJBQVcsUUFBUSxDQUFDLGNBQWM7QUFDaEMsa0JBQVUsU0FBUyxRQUFRLENBQUMsVUFBVTtBQUNwQyxjQUFJLGlCQUFpQix3QkFBTztBQUMxQixrQkFBTSxnQkFBZ0IsY0FBYyxLQUFLO0FBRXpDLHlCQUNFLFVBQ0EsT0FDQSxVQUNBLGdCQUNBLGVBQ0EsTUFDQSxNQUNBLElBQ0Y7QUFBQSxVQUNGO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSCxDQUFDO0FBQUEsSUFDSDtBQUVBLFFBQUksUUFBUSwyQkFBMkI7QUFDckMsWUFBTSxFQUFFLGVBQWUsa0JBQWtCLFNBQVM7QUFDbEQsWUFBTSxjQUF5QixDQUFDLEdBQUcsVUFBVTtBQUU3QyxVQUFJLGFBQWEsWUFBWSxNQUFNO0FBQ25DLGFBQU8sZUFBZSxRQUFXO0FBQy9CLGNBQU0sRUFBRSxZQUFZLDRCQUFlLGtCQUFrQixVQUFVO0FBRS9ELGNBQU0sYUFBYSxXQUFXO0FBQzlCLGNBQU0sV0FBVSxXQUFXLElBQUksYUFBYTtBQUk1QyxjQUFNLGNBQWM7QUFDcEIsY0FBTSxjQUFjO0FBRXBCLGNBQU0sbUJBQW1CLFdBQVcsT0FBTztBQUUzQyxxQkFDRSxVQUNBLE9BQ0Esa0JBQ0EsT0FDQSxZQUNBLGFBQ0EsYUFDQSxJQUNGO0FBRUEsaUJBQVEsUUFBUSxDQUFDLFdBQVc7QUFDMUIsY0FBSSxXQUFXO0FBQVk7QUFDM0IsZ0JBQU0sZUFBYztBQUNwQixnQkFBTSxlQUFjO0FBRXBCLHVCQUNFLFVBQ0EsT0FDQSxZQUNBLE9BQ0EsUUFDQSxjQUNBLGNBQ0EsSUFDRjtBQUFBLFFBQ0YsQ0FBQztBQUVELG9CQUFZLEtBQUssR0FBRyxXQUFVO0FBQzlCLHFCQUFhLFlBQVksTUFBTTtBQUFBLE1BQ2pDO0FBQUEsSUFDRjtBQUFBLEVBS0YsQ0FBQztBQUNIOzs7QUNySkEscUNBQTRDLE1BQWE7QUFDdkQsUUFBTSxFQUFFLGNBQWMsSUFBSSxjQUFjLGFBQWEsSUFBSTtBQUN6RCxNQUFJLENBQUM7QUFBVyxXQUFPLENBQUM7QUFFeEIsUUFBTSxXQUFXLGNBQWMsSUFBSTtBQUNuQyxRQUFNLEVBQUUsMEJBQTBCLFlBQVk7QUFFOUMsUUFBTSxRQUFTLE9BQU0sSUFBSSxNQUFNLFdBQVcsSUFBSSxHQUFHLE1BQU0sSUFBSTtBQUUzRCxRQUFNLHFCQUEwQyxDQUFDO0FBRWpELFFBQU0saUJBQWlCLElBQUksT0FBTyxpQkFBaUI7QUFDbkQsUUFBTSxtQkFBbUIsSUFBSSxPQUFPLGVBQWU7QUFDbkQsUUFBTSxXQUFXLElBQUksT0FBTyxrQkFBa0I7QUFFOUMsYUFBVyxRQUFRLFdBQVc7QUFDNUIsVUFBTSxPQUFPLE1BQU0sS0FBSyxTQUFTLE1BQU07QUFFdkMsVUFBTSxrQkFBa0IsZUFBZSxLQUFLLElBQUksRUFBRTtBQUNsRCxVQUFNLE9BQU8saUJBQWlCLEtBQUssZUFBZSxFQUFFO0FBQ3BELFFBQUksUUFBUSxTQUFTLEtBQUssZUFBZSxFQUFFLEdBQUcsS0FBSyxLQUFLO0FBRXhELFVBQU0sRUFBRSxXQUFXO0FBQ25CLFFBQUksVUFBVSxHQUFHO0FBQ2YsWUFBTSxhQUFhLE1BQU07QUFDekIsWUFBTSxvQkFBb0IsZUFBZSxLQUFLLFVBQVUsRUFBRTtBQUMxRCxZQUFNLGlCQUFpQixpQkFBaUIsS0FBSyxpQkFBaUIsRUFBRTtBQUVoRSx5QkFBbUIsS0FBSztBQUFBLFFBQ3RCO0FBQUEsUUFDQSxRQUFRO0FBQUEsUUFDUjtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0gsT0FBTztBQUNMLHlCQUFtQixLQUFLO0FBQUEsUUFDdEI7QUFBQSxRQUNBLFFBQVEsd0JBQXdCLFdBQVc7QUFBQSxRQUMzQztBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGO0FBQ0EsU0FBTztBQUNUO0FBRU8sdUJBQ0wsVUFDQSxPQUNBLE9BQ0E7QUFDQSxRQUFNLEVBQUUsV0FBVyxjQUFjO0FBQ2pDLFFBQU0sV0FBVyxVQUFVLFdBQVcsSUFBSTtBQUUxQyxRQUFNLFFBQVEsQ0FBQyxRQUFRLE1BQU07QUEzRC9CO0FBNERJLFVBQU0sRUFBRSxNQUFNLE9BQU8sV0FBVztBQUVoQyxVQUFNLGNBQWMsd0JBQVUsYUFBYSxTQUFTO0FBQ3BELFVBQU0sTUFBTSxtQkFBYSxXQUFXLFdBQVcsTUFBbkMsbUJBQXNDO0FBQ2xELFVBQU0sU0FBUyxVQUFVLEdBQUc7QUFDNUIsVUFBTSxXQUFXLGFBQWEsV0FBVyxhQUFhLEdBQUcsRUFBRTtBQUUzRCxRQUFJLFdBQVcsTUFBTTtBQUNuQixZQUFNLElBQUk7QUFDVixZQUFNLElBQUksWUFBTSxJQUFJLE9BQVYsbUJBQWM7QUFFeEIsb0JBQWMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLG1CQUFhLE9BQU8sR0FBRyxHQUFHLEVBQUUsS0FBSyxRQUFRLE9BQU8sU0FBUyxDQUFDO0FBQUEsSUFDNUQsT0FBTztBQUNMLG9CQUFjLE9BQU8sQ0FBQyxNQUFNLE1BQU0sQ0FBQztBQUNuQyxVQUFJLFNBQVMsZUFBZTtBQUMxQixxQkFBYSxPQUFPLE1BQU0sUUFBUTtBQUFBLFVBQ2hDO0FBQUEsVUFDQSxPQUFPO0FBQUEsUUFDVCxDQUFDO0FBQUEsTUFDSDtBQUVBLG1CQUFhLE9BQU8sUUFBUSxNQUFNO0FBQUEsUUFDaEMsS0FBSztBQUFBLFFBQ0wsT0FBTztBQUFBLE1BQ1QsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGLENBQUM7QUFDSDs7O0FDN0VBLDZCQUNFLFFBQ0EsT0FDc0I7QUFDdEIsUUFBTSxFQUFFLFVBQVUsT0FBTztBQUN6QixLQUFHLFFBQVEsZUFBZTtBQUUxQixRQUFNLEVBQUUsY0FBYztBQUd0QixRQUFNLGdCQUE2QixNQUFNLFFBQVEsSUFDL0MsTUFBTSxJQUFJLE9BQU8sU0FBUztBQXRCOUI7QUF1Qk0sVUFBTSxZQUF1QixFQUFFLE1BQU0sT0FBTyxDQUFDLEVBQUU7QUFHL0MsVUFBTSxRQUFRLGdCQUFJLGNBQWMsYUFBYSxJQUFJLE1BQW5DLG1CQUFzQyxVQUF0QyxZQUErQyxDQUFDO0FBRTlELFVBQU0sVUFBVSxNQUFNLFNBQVMsTUFBTSxJQUFJLE1BQU0sV0FBVyxJQUFJLElBQUk7QUFDbEUsVUFBTSxRQUFRLFFBQVEsTUFBTSxJQUFJO0FBRWhDLFVBQU0sUUFBUSxDQUFDLFVBQVM7QUEvQjlCO0FBZ0NRLFlBQU0sU0FBUyxNQUFLLFNBQVMsTUFBTTtBQUNuQyxZQUFNLE9BQU8sTUFBTTtBQUduQixZQUFNLGNBQ0oseUJBQ0csTUFBTSxlQUFlLE1BRHhCLG9CQUVJLElBQUksQ0FBQyxVQUFTLE1BQUssTUFBTSxHQUFHLE1BQUssU0FBUyxDQUFDLE9BRi9DLG9CQUdJLElBQUksQ0FBQyxjQUFjLFVBQVUsTUFBTSxHQUFHLEVBQUUsUUFINUMsWUFHbUQsQ0FBQztBQUV0RCxZQUFNLGtCQUNKLGdCQUFJLFFBQVEsUUFBUSxVQUFwQixtQkFBMkIsU0FBUyxvQkFBcEMsWUFBdUQ7QUFFekQsWUFBTSxjQUFjLGVBQWUsT0FBTSxNQUFNLGVBQWU7QUFFOUQsWUFBTSxRQUFRLHVEQUFhLGVBQWIsbUJBQXlCLFNBQXpCLFlBQWlDO0FBQy9DLFVBQUksVUFBVTtBQUFJO0FBQ2xCLFlBQU0sRUFBRSxhQUFhLGFBQWEsV0FBVyxLQUFLLEtBQUssQ0FBQztBQUN4RCxVQUFJLENBQUM7QUFBVTtBQUVmLGdCQUFVLE1BQU0sS0FBSztBQUFBLFFBQ25CLEtBQUs7QUFBQSxRQUNMO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0gsQ0FBQztBQUNELFdBQU87QUFBQSxFQUNULENBQUMsQ0FDSDtBQUVBLFFBQU0sWUFBWSxVQUFVLFNBQVM7QUFFckMsUUFBTSxnQkFBZ0IsY0FBYyxJQUFJLENBQUMsY0FBYztBQUVyRCxjQUFVLFFBQVEsVUFBVSxNQUFNLE9BQU8sQ0FBQyxVQUN4QyxVQUFVLFNBQVMsTUFBSyxLQUFLLENBQy9CO0FBQ0EsV0FBTztBQUFBLEVBQ1QsQ0FBQztBQUNELEtBQUcsTUFBTSxFQUFFLGNBQWMsQ0FBQztBQUMxQixTQUFPO0FBQ1Q7QUFFTyw4QkFDTCxVQUNBLFlBQ0EsU0FDQSxPQUNBO0FBQ0EsYUFBVyxRQUFRLENBQUMsY0FBYztBQUNoQyxVQUFNLEVBQUUsYUFBYSxVQUFVO0FBQy9CLGNBQVUsTUFBTSxRQUFRLENBQUMsVUFBUztBQUNoQyxZQUFNLEVBQUUsS0FBSyxPQUFPLGdCQUFnQjtBQUNwQyxVQUFJLFFBQVE7QUFBSTtBQUNoQixZQUFNLGNBQWMsZUFBZSxTQUFTLFFBQVE7QUFDcEQsa0JBQVksUUFBUSxDQUFDLGVBQWU7QUFFbEMsY0FBTSxlQUFlLGVBQWUsU0FBUyxVQUFVO0FBRXZELHFCQUNFLFVBQ0EsT0FDQSxVQUNBLE9BQ0EsWUFDQSxhQUNBLFlBQ0Y7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNILENBQUM7QUFBQSxFQUNILENBQUM7QUFDSDs7O0FDM0ZPLDZCQUNMLFFBQ0EsY0FDQSxTQUNBLE9BQ0E7QUFDQSxRQUFNLEVBQUUsYUFBYTtBQUNyQixRQUFNLEVBQUUsY0FBYztBQUN0QixRQUFNLFNBQVMsVUFBVSxTQUFTO0FBQ2xDLGVBQWEsUUFBUSxDQUFDLFlBQVk7QUFyQnBDO0FBc0JJLFVBQU0sZUFBZSxRQUFRO0FBQzdCLFVBQU0sbUJBQW1CLGNBQWMsWUFBWTtBQUVuRCxRQUFJLFFBQVEsUUFBUTtBQUNwQixRQUFJLE9BQU8sVUFBVSxZQUFZLENBQUMsT0FBTyxTQUFTLEtBQUs7QUFBRztBQUUxRCxVQUFNLFFBQVEsZ0JBQUksY0FDZixhQUFhLFlBQVksTUFEZCxtQkFFVixVQUZVLG1CQUVILElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxNQUFNLFFBQVEsRUFBRTtBQUU3QyxVQUFNLFNBQVMsZ0JBQUksY0FDaEIsYUFBYSxZQUFZLE1BRGIsbUJBRVgsV0FGVyxtQkFFSCxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssTUFBTSxRQUFRLEVBQUU7QUFFOUMsVUFBTSxVQUFVLENBQUMsR0FBSSx3QkFBUyxDQUFDLEdBQUksR0FBSSwwQkFBVSxDQUFDLENBQUU7QUFFcEQsZUFBVyxVQUFVLFNBQVM7QUFDNUIsWUFBTSxjQUFjLGVBQWUsT0FBTztBQUMxQyxZQUFNLGNBQWMsZUFBZSxTQUFTLGdCQUFnQjtBQUM1RCxtQkFDRSxVQUNBLE9BQ0Esa0JBQ0EsT0FDQSxRQUNBLGFBQ0EsYUFDQSxJQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQztBQUNIOzs7QUNwREEsdUJBQXFCO0FBYWQsOEJBQ0wsUUFDQSxjQUNBLFNBQ0EsT0FDQTtBQUNBLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU0sRUFBRSxXQUFXLG1CQUFtQjtBQUN0QyxRQUFNLFNBQVMsVUFBVSxTQUFTO0FBRWxDLGVBQWEsUUFBUSxDQUFDLFlBQVk7QUFDaEMsVUFBTSxnQkFBZ0IsUUFBUTtBQUM5QixVQUFNLG9CQUFvQixjQUFjLGFBQWE7QUFFckQsVUFBTSxRQUFRLFdBQVcsUUFBUSxjQUF3QjtBQUN6RCwrQkFBSyxFQUFFLE1BQU0sQ0FBQztBQUVkLFFBQUksUUFBUSxRQUFRO0FBQ3BCLFFBQUksT0FBTyxVQUFVLFlBQVksQ0FBQyxPQUFPLFNBQVMsS0FBSztBQUNyRCxjQUFRLGtCQUFrQixPQUFPO0FBRW5DLFVBQU0sVUFBVSxDQUFDO0FBQ2pCLFlBQVEsUUFBUSxDQUFDLFNBQVM7QUFDeEIsVUFBSSxLQUFLO0FBQVk7QUFDckIsWUFBTSxXQUFXLGNBQWMsS0FBSyxJQUFJO0FBQ3hDLFVBQUksYUFBYSxxQkFBcUIsTUFBTSxLQUFLLFFBQVE7QUFDdkQsZ0JBQVEsS0FBSyxRQUFRO0FBQUEsSUFDekIsQ0FBQztBQUVELGVBQVcsVUFBVSxTQUFTO0FBQzVCLFlBQU0sY0FBYyxlQUFlLE9BQU87QUFDMUMsWUFBTSxjQUFjLGVBQWUsU0FBUyxpQkFBaUI7QUFDN0QsbUJBQ0UsVUFDQSxPQUNBLG1CQUNBLE9BQ0EsUUFDQSxhQUNBLGFBQ0EsSUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDSDs7O0FDekRBLHVCQUFxQjtBQW1CckIsSUFBTSxhQUFhLENBQUMsTUFBYSxXQUFXLFNBQW1CO0FBcEIvRDtBQXFCRSxRQUFNLEVBQUUsTUFBTSxnQkFBZ0IsSUFBSSxjQUFjLGFBQWEsSUFBSTtBQUNqRSxRQUFNLFVBQW9CLENBQUM7QUFFM0IsK0JBQU0sUUFBUSxDQUFDLE1BQU0sUUFBUSxLQUFLLFNBQVMsRUFBRSxHQUFHLENBQUM7QUFFakQsR0FBQyxpREFBYSxTQUFiLFlBQXFCLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsTUFBYztBQUN0RCxpQkFBYSxDQUFDLEVBQUUsUUFBUSxDQUFDLFdBQVcsUUFBUSxLQUFLLFNBQVMsTUFBTSxDQUFDLENBQUM7QUFBQSxFQUNwRSxDQUFDO0FBQ0QsR0FBQyxpREFBYSxRQUFiLFlBQW9CLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsTUFBYztBQUNyRCxpQkFBYSxDQUFDLEVBQUUsUUFBUSxDQUFDLFdBQVcsUUFBUSxLQUFLLFNBQVMsTUFBTSxDQUFDLENBQUM7QUFBQSxFQUNwRSxDQUFDO0FBRUQsU0FBTyxRQUFRLElBQUksQ0FBQyxNQUFPLFlBQVcsTUFBTSxNQUFNLEVBQUUsWUFBWSxDQUFDO0FBQ25FO0FBRU8sNEJBQ0wsUUFDQSxjQUNBLFNBQ0EsT0FDQTtBQUNBLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU0sRUFBRSxXQUFXLGlCQUFpQjtBQUNwQyxRQUFNLFNBQVMsVUFBVSxTQUFTO0FBQ2xDLGVBQWEsUUFBUSxDQUFDLFlBQVk7QUE3Q3BDO0FBOENJLFVBQU0sY0FBYyxRQUFRO0FBRTVCLFVBQU0sa0JBQWtCLGNBQWMsV0FBVztBQUNqRCxVQUFNLE1BQU0sUUFBUyxRQUFRLGFBQXdCLEtBQUssRUFBRSxZQUFZLENBQUM7QUFDekUsK0JBQUssRUFBRSxJQUFJLENBQUM7QUFFWixVQUFNLGFBQWEsQ0FBQyxTQUFnQjtBQUNsQyxZQUFNLFVBQVUsV0FBVyxJQUFJO0FBQy9CLGFBQU8sUUFBUSx1QkFBdUIsU0FDbEMsUUFBUSxTQUFTLEdBQUcsSUFDcEIsUUFBUSxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsR0FBRyxDQUFDO0FBQUEsSUFDekM7QUFFQSxVQUFNLFVBQVUsUUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksRUFDbkIsT0FBTyxDQUFDLFNBQVMsS0FBSyxTQUFTLFlBQVksUUFBUSxXQUFXLElBQUksS0FBSyxDQUFDLEtBQUssVUFBVSxFQUN2RixJQUFJLGFBQWE7QUFDcEIsK0JBQUssRUFBRSxRQUFRLENBQUM7QUFFaEIsUUFBSSxRQUNELGNBQVEsdUJBQVIsWUFBMEMsZ0JBQWdCLE9BQU87QUFFcEUsWUFBUSxRQUFRLENBQUMsV0FBVztBQUMxQixZQUFNLGNBQWMsZUFBZSxPQUFPO0FBQzFDLFlBQU0sY0FBYyxlQUFlLFNBQVMsZUFBZTtBQUMzRCxtQkFDRSxVQUNBLE9BQ0EsaUJBQ0EsT0FDQSxRQUNBLGFBQ0EsYUFDQSxJQUNGO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0g7OztBQ2xGQSx1QkFBcUI7QUFRZCxpQ0FDTCxRQUNBLGVBQ0EsT0FDQSxNQUNBO0FBQ0EsUUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBTSxFQUFFLGNBQWM7QUFDdEIsUUFBTSxTQUFTLFVBQVUsU0FBUztBQUVsQyxnQkFBYyxRQUFRLENBQUMsWUFBWTtBQUNqQyxVQUFNLEVBQUUsU0FBUztBQUNqQixVQUFNLFdBQVcsY0FBYyxJQUFJO0FBQ25DLFVBQU0sV0FBVyxhQUFhLE1BQU0sUUFBUTtBQUU1QyxRQUFJLFFBQVEsUUFBUTtBQUNwQixRQUFJLE9BQU8sVUFBVSxZQUFZLENBQUMsT0FBTyxTQUFTLEtBQUs7QUFBRztBQUUxRCxVQUFNLFdBQVcsWUFBWSxVQUFVLFFBQVE7QUFDL0MsK0JBQUssUUFBUTtBQUNiLFVBQU0sV0FBVyxDQUFDLEdBQUcsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFTLE1BQUssUUFBUSxDQUFDO0FBQzNELGFBQVMsUUFBUSxDQUFDLFVBQVM7QUFDekIsWUFBSyxRQUFRLENBQUMsTUFBTSxNQUFNO0FBQ3hCLGNBQU0sT0FBTyxNQUFLLElBQUk7QUFDdEIsWUFBSSxTQUFTO0FBQVc7QUFDeEIscUJBQ0UsVUFDQSxPQUNBLE1BQ0EsT0FDQSxNQUNBLE1BQ0EsTUFDQSxJQUNGO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSCxDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0g7OztBQzlDQSx3QkFBNEI7QUFDNUIsdUJBQW9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkVvQmpCLElBQUssS0FBQTs7O2lCQUNiLElBQUUsTUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkNBTEssVUFBVSxJQUFFLEtBQUUsSUFBSSxFQUFBLElBQUEseUJBQUE7OztBQUQ1QixhQU9NLFFBQUEsS0FBQSxNQUFBO0FBRkosYUFBd0IsS0FBQSxNQUFBOzs7Ozs7Ozs7Ozs7Ozs7Z0RBQWYsSUFBSyxLQUFBO0FBQUEsaUJBQUEsSUFBQSxRQUFBO2dEQUNiLElBQUUsTUFBQTtBQUFBLGlCQUFBLElBQUEsUUFBQTs4REFMSyxVQUFVLElBQUUsS0FBRSxJQUFJLEVBQUEsSUFBQSw0QkFBQTs7Ozs7Ozs7Ozs7Ozs7aUJBa0J6QixJQUFFLE1BQUE7Ozs7aUJBQVcsSUFBSyxLQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQ0FKWCxVQUFVLElBQUUsS0FBRSxJQUFJLEVBQUEsSUFBQSx5QkFBQTs7O0FBRDVCLGFBTU0sUUFBQSxLQUFBLE1BQUE7OztBQURDLGFBQXdCLEtBQUEsTUFBQTs7Ozs7Ozs7Ozs7OztnREFBNUIsSUFBRSxNQUFBO0FBQUEsaUJBQUEsSUFBQSxRQUFBO2dEQUFXLElBQUssS0FBQTtBQUFBLGlCQUFBLElBQUEsUUFBQTs4REFKWCxVQUFVLElBQUUsS0FBRSxJQUFJLEVBQUEsSUFBQSw0QkFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQkFoQnZCLElBQUk7O21DQUFULFFBQUksS0FBQSxHQUFBOzs7bUJBY0MsSUFBSTs7aUNBQVQsUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFqQlosYUE0Qk0sUUFBQSxNQUFBLE1BQUE7QUEzQkosYUFhTSxNQUFBLElBQUE7QUFaSixhQVdPLE1BQUEsS0FBQTs7Ozs7QUFFVCxhQVlNLE1BQUEsSUFBQTtBQVhKLGFBVU8sTUFBQSxLQUFBOzs7Ozs7O3VCQXZCRSxLQUFJOztxQ0FBVCxRQUFJLEtBQUEsR0FBQTs7Ozs7Ozs7Ozs7Ozs0Q0FBSjs7O3FCQWNLLEtBQUk7O21DQUFULFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7O3dDQUFKOzs7Ozs7Ozs7Ozs7OztRRHhCSyxXQUFnQjtRQUNoQixTQUFrQjtRQUNsQixTQUFrQjtRQUV2QixpQkFBaUIsSUFBSSxVQUFVLFdBQVc7bUNDU3ZCLE1BQUMsTUFBVyxhQUFhLElBQUksQ0FBQztpQ0FDaEMsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLEVBQUU7cUNBYXRDLE1BQUMsTUFBVyxhQUFhLElBQUksQ0FBQzttQ0FDaEMsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJFMEJwRCxjQUFPLElBQUssS0FBRSxJQUFNLEVBQUEsTUFBcEIsWUFBeUIsWUFBWSxJQUFLLEtBQUUsSUFBUSxFQUFBLEtBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkRBRDNDLFVBQVUsSUFBSyxHQUFBLENBQUEsSUFBQSxnQkFBQTtxRUFQQSxLQUFLLFFBQUssS0FBSyxjQUFjLE1BQUUsZ0JBQUE7bUNBRTFDLElBQUssTUFBRyxJQUFDLFFBQUssS0FBQyxNQUFHLEtBQUMsUUFDMUIsS0FBSSxNQUFHLEtBQUMsUUFBSyxLQUFDLE1BQUcsRUFBQzs7O0FBSjdCLGFBV00sUUFBQSxNQUFBLE1BQUE7QUFISixhQUVNLE1BQUEsSUFBQTs7Ozs7Ozs7Ozs7Ozs7aURBREgsZUFBTyxJQUFLLEtBQUUsSUFBTSxFQUFBLE1BQXBCLGFBQXlCLFlBQVksSUFBSyxLQUFFLElBQVEsRUFBQSxLQUFBO0FBQUEsaUJBQUEsSUFBQSxRQUFBOytFQUQzQyxVQUFVLElBQUssR0FBQSxDQUFBLElBQUEsbUJBQUE7Ozt5RkFQQSxLQUFLLFFBQUssS0FBSyxjQUFjLE1BQUUsbUJBQUE7Ozs7cUNBRTFDLElBQUssTUFBRyxJQUFDLFFBQUssS0FBQyxNQUFHLEtBQUMsUUFDMUIsS0FBSSxNQUFHLEtBQUMsUUFBSyxLQUFDLE1BQUcsRUFBQzs7Ozs7Ozs7Ozs7OztxQkFOeEIsSUFBTyxHQUFDLElBQUM7O21DQUFkLFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7dUJBQUMsS0FBTyxHQUFDLEtBQUM7O3FDQUFkLFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7OzBDQUFKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CQURHLElBQWdCOztpQ0FBckIsUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkEyQjhCLEdBQUM7OztnQkFFRixJQUFLLEVBQUE7OztnQkFJSixHQUFDOzsrQ0FwQ1gsT0FBTyxPQUFPLElBQWdCLEdBQUMsTUFBTSxDQUFBOzRDQUN4QyxPQUFPLE9BQU8sSUFBWSxHQUFDLE1BQU0sQ0FBQTs7O2tEQTRCeEMsSUFBSyxPQUFLOzs7a0RBTVYsSUFBSyxPQUFLLElBQVM7Ozs7OztBQXZDdkMsYUE2Q00sUUFBQSxNQUFBLE1BQUE7QUE1Q0osYUF1Qk0sTUFBQSxJQUFBOzs7OztBQUVOLGFBa0JNLE1BQUEsSUFBQTtBQWpCSixhQWdCTyxNQUFBLEtBQUE7QUFmTCxhQUE0QyxPQUFBLEtBQUE7O0FBRTVDLGFBWU8sT0FBQSxLQUFBO0FBWEwsYUFJQyxPQUFBLE9BQUE7OztBQUNELGFBQTRDLE9BQUEsS0FBQTs7O0FBQzVDLGFBSUMsT0FBQSxPQUFBOzs7Ozs7Ozs7Ozs7cUJBbENFLEtBQWdCOzttQ0FBckIsUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7d0NBQUo7OztpREFId0IsT0FBTyxPQUFPLEtBQWdCLEdBQUMsTUFBTSxDQUFBOzs7OENBQ3hDLE9BQU8sT0FBTyxLQUFZLEdBQUMsTUFBTSxDQUFBOzs0RUE0QnhDLEtBQUssT0FBSyxJQUFDOzs7O3FCQUdRLEtBQUssRUFBQTs0RUFHeEIsS0FBSyxPQUFLLEtBQVMsS0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRRGxFMUIsaUJBQXdCO1FBQ3hCLFdBQWdCO1VBRW5CLGFBQWE7VUFDYixxQkFBcUI7UUFFdkIsaUJBQWlCLElBQUksVUFBVSxXQUFXO1FBQzFDLFlBQVksYUFBYSxLQUFJLEVBQUc7TUFHbEMsUUFBUSxLQUFLLElBQUksV0FBVyxnQkFBZ0I7TUFFNUMsZUFBZTtzQ0M4Qk0sTUFBQyxNQUFXLGFBQWEsT0FBTyxDQUFDO29DQUNuQyxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsS0FBSztnREFrQnpDLFNBQVMsQ0FBQztnREFNVixTQUFTLENBQUM7Ozs7Ozs7OztBRHREbkMsU0FBQzt3QkFDQyxlQUFZLENBQUEsQ0FBQTtBQUNaLHFCQUFhLFFBQVMsV0FBSztnQkFDbkIsU0FBUSxNQUFNLE1BQU0sWUFBWSxLQUFLO2NBQ3ZDLE9BQU07QUFBUSx5QkFBYSxLQUFLLE1BQUs7Ozs7O0FBSTdDO0FBQUMscUJBQUEsR0FBRSxlQUFlLGFBQWEsSUFBSyxXQUFVLFNBQVMsT0FBTyxLQUFLLENBQUEsQ0FBQTs7O0FBRW5FO0FBQUMscUJBQUEsR0FBRSxtQkFBbUIsVUFBVSxZQUFZLENBQUE7OztBQUM1QztBQUFDLHFCQUFBLEdBQUUsVUFBVSxpQkFBaUIsSUFBSSxJQUFJLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQkdKdkIsSUFBSzs7bUNBQVYsUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QkFBQyxLQUFLOztxQ0FBVixRQUFJLEtBQUEsR0FBQTs7Ozs7Ozs7Ozs7OzswQ0FBSjs7Ozs7Ozs7Ozs7Ozs7OzRCQUY0QixJQUFhOzs7O0FBQTNDLGFBQW1ELFFBQUEsTUFBQSxNQUFBOzs7Ozs7Ozs7Ozs7Ozs0QkFXbkIsTUFBTSxJQUFjLEtBQUc7Ozs7QUFBbkQsYUFBOEQsUUFBQSxNQUFBLE1BQUE7Ozs7Ozs7Ozs7OztpQkFIN0QsY0FBTyxJQUFLLEtBQUUsSUFBTSxFQUFBLE1BQXBCLFlBQXlCLFlBQVksSUFBSyxLQUFFLElBQVEsRUFBQSxLQUFBOzs7Ozs7Ozs7Ozs7aUJBRWxELElBQUMsTUFBRyxJQUFLLElBQUMsU0FBUyxLQUFDLGtCQUFBLEdBQUE7Ozs7Ozs7Ozs7OztBQVB6QixhQU1PLFFBQUEsTUFBQSxNQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztpREFESixlQUFPLElBQUssS0FBRSxJQUFNLEVBQUEsTUFBcEIsYUFBeUIsWUFBWSxJQUFLLEtBQUUsSUFBUSxFQUFBLEtBQUE7QUFBQSxpQkFBQSxJQUFBLFFBQUE7VUFFbEQsSUFBQyxNQUFHLElBQUssSUFBQyxTQUFTLEdBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FYdkIsS0FBSyxJQUFDO0FBQU0sYUFBQTs7Ozs7Ozs7Ozs7O0FBRHBCLGFBaUJNLFFBQUEsS0FBQSxNQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZUFjSCxJQUFZLEVBQUE7Ozs7QUFUakIsYUFXTSxRQUFBLEtBQUEsTUFBQTtBQVZKLGFBU1MsS0FBQSxNQUFBOzs7Ozs7Ozs7Ozs7b0JBRE4sS0FBWSxFQUFBOzs7Ozs7Ozs7Ozs7OzttQkFoQ1YsSUFBWTs7aUNBQWpCLFFBQUksS0FBQSxHQUFBOzs7aUJBc0JILElBQVksR0FBQyxTQUFTLEtBQUMsZ0JBQUEsR0FBQTs7Ozs7Ozs7Ozs7Ozs7O0FBeEI5QixhQXNDTyxRQUFBLE1BQUEsTUFBQTtBQXJDTCxhQXFCTSxNQUFBLEdBQUE7Ozs7Ozs7Ozs7cUJBcEJHLEtBQVk7O21DQUFqQixRQUFJLEtBQUEsR0FBQTs7Ozs7Ozs7Ozs7Ozt3Q0FBSjs7VUFzQkMsS0FBWSxHQUFDLFNBQVMsR0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUR6Q2pCLGlCQUF3QjtRQUN4QixXQUFnQjtVQUVuQixhQUFhO1VBQ2IsU0FBUyxJQUFJLFVBQVU7UUFDekIsU0FBUyxlQUFlLG1CQUFtQjtNQUU3QyxlQUFlO3NDQ29CVSxNQUFDLE1BQVcsYUFBYSxPQUFPLENBQUM7b0NBQ25DLE1BQU0sYUFBYSxHQUFHLE1BQU0sS0FBSztnREFpQnJDLGVBQWUsZUFBZSxZQUFZLENBQUE7OEJBQzFDLE9BQUM7QUFDaEIsTUFBRSxlQUFjO29CQUNoQixlQUFlLGVBQWUsY0FBWSxFQUFJLENBQUE7Ozs7Ozs7Ozs7QUR2Q3REO0FBQUMscUJBQUEsR0FBRSxlQUNELGdCQUFnQixRQUNaLGVBQ0EsZ0JBQWdCLGNBQ2YsYUFBYSxFQUFDLEtBQ2QsYUFBYSxLQUFJLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FFWDFCLHdCQUEyQjtBQUMzQix1QkFBd0Q7OztBQ2R4RCxvQkFBMEI7QUFDMUIsd0JBQXFCO0FBVWQsMkJBQTJCLFFBQWtCLFFBQWU7QUFYbkU7QUFZRSxRQUFNLEVBQUUsbUJBQW1CLE9BQU87QUFFbEMsUUFBTSxRQUFRLE9BQU0sTUFBTSxFQUFFLE1BQU0sSUFBSTtBQUV0QyxNQUFJLGdCQUFnQjtBQUNsQixhQUFTLFFBQVEsT0FBTztBQUN0QixZQUFNLENBQUMsV0FBVyxXQUFXLEtBQUssTUFBTSxJQUFJO0FBQzVDLFlBQU0sT0FBTyxRQUFRLEtBQUssSUFBSTtBQUM5QixVQUFJLENBQUM7QUFBTTtBQUVYLFlBQU0sV0FBVyxJQUFJLGNBQWMscUJBQXFCLE1BQU0sRUFBRTtBQUVoRSxVQUFJLGFBQWEsTUFBTTtBQUNyQixjQUFNLFFBQVEsSUFBSSxjQUFjLGFBQWEsUUFBUTtBQUVyRCxjQUFNLFFBQWtCLDJDQUFPLGdCQUFQLG1CQUFvQixVQUFwQixZQUE2QixDQUFDO0FBQ3RELGNBQU0sVUFBb0IsMkNBQU8sZ0JBQVAsbUJBQW9CLFlBQXBCLFlBQStCLENBQUM7QUFFMUQsY0FBTSxhQUF1QixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0RSxZQUFJLFdBQVcsUUFBUTtBQUNyQixrQkFBUSxLQUFLLFdBQVcsS0FBSyxJQUFJO0FBQUEsUUFDbkM7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxTQUFPLE1BQU0sS0FBSyxJQUFJO0FBQ3hCO0FBUU8scUJBQ0wsVUFDQSxhQUNBLFNBQVMsTUFDRDtBQUNSLE1BQUksU0FBUTtBQUNaLFFBQU0sUUFBTyw2QkFBVSxRQUFRO0FBQy9CLFFBQU0sV0FBVyxNQUFLLElBQUksQ0FBQyxVQUFTLE1BQUssUUFBUSxDQUFDO0FBQ2xELFdBQVMsUUFBUSxDQUFDLFVBQVMsTUFBSyxNQUFNLENBQUM7QUFFdkMsUUFBTSxhQUFhLFdBQVcsUUFBUSxNQUFPO0FBRTdDLFFBQU0sVUFFRixDQUFDO0FBRUwsV0FBUyxRQUFRLENBQUMsVUFBUztBQUN6QixhQUFTLFFBQVEsR0FBRyxRQUFRLE1BQUssUUFBUSxTQUFTO0FBQ2hELFlBQU0sV0FBVyxNQUFLO0FBR3RCLFVBQ0UsUUFBUSxlQUFlLFFBQVEsS0FDL0IsUUFBUSxVQUFVLFNBQVMsS0FBSztBQUNoQztBQUFBLFdBQ0c7QUFDSCxrQkFBUyxHQUFHLFdBQVcsT0FBTyxLQUFLLE1BQU0sY0FBYyxTQUFTLFFBQVEsSUFBSTtBQUFBO0FBRzVFLFlBQUksQ0FBQyxRQUFRLGVBQWUsUUFBUTtBQUFHLGtCQUFRLFlBQVksQ0FBQztBQUM1RCxnQkFBUSxVQUFVLEtBQUssS0FBSztBQUFBLE1BQzlCO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQztBQUNELFNBQU87QUFDVDtBQUVBLDhCQUFxQyxRQUFrQjtBQUNyRCxRQUFNLEVBQUUsVUFBVSxZQUFZO0FBQzlCLFFBQU0sRUFBRSxlQUFlLHNCQUFzQjtBQUM3QyxRQUFNLEVBQUUsYUFBYSxZQUFZO0FBRWpDLFFBQU0sWUFBWSxhQUFhLFNBQVMsTUFBTTtBQUM5QyxRQUFNLFdBQVcsWUFBWSxXQUFXLFFBQVE7QUFDaEQsUUFBTSxTQUFRLGtCQUFrQixRQUFRLFlBQVksVUFBVSxlQUFlLGlCQUFpQixDQUFDO0FBRS9GLDhCQUFLLEVBQUUsY0FBTSxDQUFDO0FBQ2QsUUFBTSxLQUFLLE1BQUs7QUFDbEI7QUFFQSwrQkFBc0MsUUFBa0I7QUFDdEQsUUFBTSxFQUFFLFVBQVUsWUFBWTtBQUM5QixRQUFNLEVBQUUsZUFBZSxzQkFBc0I7QUFFN0MsUUFBTSxZQUFZLGFBQWEsU0FBUyxNQUFNO0FBQzlDLFFBQU0sVUFBVSxhQUFhLFNBQVMsSUFBSTtBQUUxQyxRQUFNLFFBQVEsU0FBUyxPQUFPO0FBRTlCLE1BQUksY0FBYztBQUNsQixRQUFNLFFBQVEsQ0FBQyxhQUFhO0FBQzFCLG1CQUFlLFdBQVc7QUFDMUIsVUFBTSxXQUFXLFlBQVksV0FBVyxRQUFRO0FBQ2hELG1CQUNFLGtCQUFrQixRQUFRLFlBQVksVUFBVSxlQUFlLGlCQUFpQixDQUFDLElBQUk7QUFBQSxFQUN6RixDQUFDO0FBRUQsOEJBQUssRUFBRSxZQUFZLENBQUM7QUFDcEIsUUFBTSxLQUFLLFdBQVc7QUFDeEI7QUFFTyxJQUFNLG1CQUFtQixDQUM5QixRQUNBLE9BQU8sVUFFUCxPQUNHLE1BQU0sSUFBSSxFQUNWLElBQUksQ0FBQyxTQUFTO0FBQ2IsUUFBTSxDQUFDLFdBQVcsV0FBVyxLQUFLLE1BQU0sSUFBSTtBQUM1QyxTQUFPLENBQUMsT0FBTyxLQUFLLFFBQVEsUUFBUSxLQUFLLElBQUksQ0FBQztBQUloRCxDQUFDLEVBQ0EsT0FBTyxDQUFDLFNBQVMsS0FBSyxPQUFPLEVBQUU7Ozs7Ozs7Ozs7O2VDbEhqQyxJQUFZLEVBQUE7OztpQ0FIRCxJQUFLLEVBQUE7Ozs7QUFKbkIsYUFRUyxRQUFBLFFBQUEsTUFBQTs7OzswQkFMRyxJQUFPLEVBQUE7QUFBUCxnQkFBTyxHQUFBLE1BQUEsTUFBQSxTQUFBOzs7Ozs7OztvQkFJaEIsSUFBWSxFQUFBOzttQ0FIRCxJQUFLLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQ1pOLFNBQUk7UUFDSixZQUFtQjtRQUNuQixXQUFXLFVBQUs7UUFDaEIsUUFBUSxPQUFFOzs7Ozs7Ozs7Ozs7O0FBRXJCO0FBQUMscUJBQUEsR0FBRSxlQUFlLElBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkVRUixJQUFLLE1BQUk7Ozs7OztZQU9GLElBQUs7Z0JBQVk7ZUFBZTs7Ozs7O2dCQUl2QyxJQUFLLE1BQUksSUFBUTs7Ozs7Ozs7Ozs7Ozs7O0FBZC9CLGFBb0JNLFFBQUEsS0FBQSxNQUFBOzs7Ozs7Ozs7Ozt3Q0FqQlEsS0FBSyxNQUFJOzs7Ozs7b0NBT0YsS0FBSzs7Ozt3Q0FJWixLQUFLLE1BQUksS0FBUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkFmNUIsSUFBTyxNQUFBLGlCQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7O1VBQVAsS0FBTyxJQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UURQQyxVQUFVLFNBQUk7UUFDZCxhQUFnQjtRQUNoQixrQkFBc0M7TUFFN0MsUUFBUTs7b0JDU04sU0FBUyxDQUFDO0FBQ1Ysa0JBQWMsS0FBSzs7O29CQVVuQixTQUFTLENBQUM7QUFDVixrQkFBYyxLQUFLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FMSDNCLElBQU0sV0FBVztBQUVqQixJQUFNLGdCQUFOLGNBQTRCLHdCQUFrQztBQUFFO0FBRXpELElBQU0sVUFBTixjQUFzQiwyQkFBb0M7QUFBQSxFQUkvRCxZQUNFLE9BQ0EsVUFDQSxVQUNBO0FBQ0EsVUFBTTtBQUNOLFNBQUssUUFBUTtBQUNiLFNBQUssUUFBUTtBQUNiLFNBQUssV0FBVztBQUFBLEVBQ2xCO0FBQUEsRUFFQSxTQUFTLE1BQTRCO0FBQ25DLFVBQU0sTUFBSyxNQUFNLFNBQVMsSUFBSTtBQUM5QixXQUFPLElBQUcsR0FBRyxNQUFNLEdBQUcsRUFBRTtBQUFBLEVBQzFCO0FBQUEsRUFFQSxRQUFRLFFBQXNCO0FBQzVCLFdBQU8sS0FBSyxNQUFNLHFCQUFxQixPQUFPLElBQUksRUFBRTtBQUFBLEVBQ3REO0FBQUEsRUFFQSxNQUFNLGFBQ0osVUFDQSxVQUNBLE9BQ3FDO0FBQ3JDLFVBQU0sUUFBMEIsQ0FBQztBQUNqQyxVQUFNLGFBQWEsSUFBSSxJQUNyQixTQUFTLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQzdEO0FBQ0EsYUFBUyxRQUFRLENBQUMsU0FBUztBQUN6QixZQUFNLE9BQU8sS0FBSyxTQUFTLElBQUk7QUFDL0IsVUFBSSxDQUFDLEtBQUssTUFBTSxRQUFRLElBQUksR0FBRztBQUM3QjtBQUFBLE1BQ0Y7QUFDQSxXQUFLLE1BQU0sZUFDVCxLQUFLLFNBQVMsSUFBSSxHQUNsQixDQUFDLEtBQUssT0FBTSxRQUFRLFdBQVc7QUFDN0IsWUFBSSxXQUFXLElBQUksTUFBTSxHQUFHO0FBQzFCLGdCQUFNLEtBQUs7QUFBQSxZQUNULE1BQU07QUFBQSxjQUNKLElBQUksTUFBTSxXQUFXO0FBQUEsY0FDckIsUUFBUSxNQUFNLEtBQUssUUFBUSxRQUFRLElBQUk7QUFBQSxjQUN2QyxRQUFRLE1BQU0sS0FBSyxRQUFRLFFBQVEsSUFBSTtBQUFBLGNBQ3ZDLE1BQU0sTUFBSztBQUFBLGNBQ1gsS0FBSyxNQUFLO0FBQUEsWUFDWjtBQUFBLFlBQ0EsU0FBUyxRQUFRLE1BQUssYUFBYSxNQUFLO0FBQUEsVUFDMUMsQ0FBQztBQUFBLFFBQ0g7QUFBQSxNQUNGLENBQ0Y7QUFBQSxJQUNGLENBQUM7QUFDRCxXQUFPLFFBQVEsUUFBUSxLQUFLO0FBQUEsRUFDOUI7QUFBQSxFQUVBLFVBQVUsTUFBK0I7QUFDdkMsV0FBTyxJQUFJLGNBQWM7QUFBQSxFQUMzQjtBQUFBLEVBRUEsTUFBTSxpQkFDSixTQUNBLE1BQ3FDO0FBQ3JDLFVBQU0sWUFBWSxDQUFDO0FBQ25CLGVBQVcsVUFBVSxTQUFTO0FBQzVCLFlBQU0sT0FBTyxPQUFPLEdBQUcsTUFBTSxHQUFHLEVBQUU7QUFDbEMsVUFBSSxDQUFDLEtBQUssTUFBTSxRQUFRLElBQUksR0FBRztBQUM3QjtBQUFBLE1BQ0Y7QUFDQSxpQkFBVyxZQUFZLEtBQUssTUFBTSxVQUFVLElBQUksR0FBRztBQUNqRCxrQkFBVSxLQUNSLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxXQUFXLE9BQU8sUUFBUSxHQUFHLElBQUksQ0FDNUQ7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUNBLFdBQU87QUFBQSxFQUNUO0FBQUEsRUFFQSxZQUFZLEtBQVcsTUFBb0M7QUFDekQ7QUFBQSxFQUNGO0FBQUEsRUFFQSxVQUFrQjtBQUNoQixXQUFPO0FBQUEsRUFDVDtBQUFBLEVBRUEsSUFBSSxRQUFlLE1BQWlEO0FBQ2xFLFVBQU0sT0FBTyxLQUFLLFFBQVEsTUFBTTtBQUNoQyxRQUFJLFFBQVE7QUFDWixRQUFJLEtBQUssWUFBWSxPQUFPLE1BQU0sS0FBSyxVQUFVO0FBQy9DLGNBQVEsS0FBSyxTQUFTLE9BQU87QUFBQSxJQUMvQjtBQUNBLFFBQUksU0FBUyxNQUFNO0FBQ2pCLFlBQU0sV0FBVyxhQUFhLE9BQU8sRUFBRTtBQUN2QyxlQUFTLEtBQUssUUFBUTtBQUN0QixhQUFPLFFBQVEsUUFBUSxRQUFRO0FBQUEsSUFDakM7QUFDQSxVQUFNLFFBQVEsS0FBSyxNQUFNLGFBQWEsSUFBSTtBQUMxQyxRQUFJLFVBQVUsTUFBTTtBQUNsQixrQ0FBSyx5QkFBeUIsTUFBTTtBQUNwQyxhQUFPLFFBQVEsUUFBUSxhQUFhLE9BQU8sRUFBRSxDQUFDO0FBQUEsSUFDaEQ7QUFFQSxXQUFPLGFBQWEsTUFBTSxLQUFLLFFBQVEsS0FBSyxVQUFVLE9BQU8sS0FBSyxDQUFDLEVBQUUsS0FDbkUsQ0FBQyxTQUFTO0FBQ1IsV0FBSyxLQUFLLFFBQVE7QUFDbEIsYUFBTztBQUFBLElBQ1QsQ0FDRjtBQUFBLEVBQ0Y7QUFDRjtBQUVPLHFCQUNMLFFBQ0EsUUFDQSxjQUNBLE1BQ0EsV0FBd0MsTUFDaEM7QUFDUixNQUFJO0FBQ0YsVUFBTSxjQUFjLFVBQVUsR0FBRztBQUNqQyxRQUFJLENBQUMsYUFBYTtBQUVoQjtBQUFBLElBQ0Y7QUFDQSxhQUFTLE9BQU8sbUJBQW1CO0FBQ2pDLFVBQUksT0FBTyxRQUFRLEtBQUssU0FBUztBQUMvQixhQUFLLE9BQU8sa0JBQWtCO0FBQUEsSUFDbEM7QUFFQSxVQUFNLFVBQVUsSUFBSSxRQUNsQixPQUFPLE9BQ1AsSUFBSSxlQUNKLFFBQ0Y7QUFDQSxVQUFNLFNBQXVCO0FBQUEsTUFDM0IsV0FBVztBQUFBLE1BQ1gsWUFBWSxDQUFDLE9BQU87QUFBQSxJQUN0QjtBQUVBLFVBQU0sUUFBUSxZQUFZLFlBQVksUUFBUSxNQUFNLFFBQVEsWUFBWTtBQUN4RSxXQUFPLFNBQVMsS0FBSztBQUNyQixnQ0FBSyxFQUFFLE1BQU0sQ0FBQztBQUNkLFdBQU87QUFBQSxFQUNULFNBQVMsUUFBUDtBQUNBLGdDQUFLLEVBQUUsY0FBTSxDQUFDO0FBQ2QsV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQUVBLHNCQUFzQixPQUFlLFFBQWdCO0FBQ25ELE1BQUksQ0FBQyxPQUFPO0FBQ1Y7QUFBQSxFQUNGO0FBQ0EsUUFBTSxHQUFHLFlBQVksQ0FBQyxRQUFRO0FBRTVCLFFBQUksSUFBSSxjQUFjLENBQUMsTUFBTTtBQUMzQixZQUFNLE9BQU0sRUFBRTtBQUNkLFlBQU0sT0FBTyxLQUFJLElBQUksTUFBTSxLQUFLLFNBQVMsT0FBTyxRQUFRLENBQUM7QUFDekQsV0FBSSxRQUFRO0FBQUEsUUFDVixRQUFRO0FBQUEsVUFDTixNQUFNO0FBQUEsUUFDUjtBQUFBLFFBQ0EsVUFBVTtBQUFBLFFBQ1YsT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLE1BQ1IsQ0FBQztBQUFBLElBQ0gsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUNIO0FBRUEscUJBQXFCLE9BQWU7QUFDbEMsUUFBTSxHQUFHLFlBQVksQ0FBQyxRQUFRO0FBQzVCLFFBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQztBQUFBLEVBQ3JCLENBQUM7QUFDSDtBQUVBLHdCQUNFLE9BQ0EsUUFDQSxTQUFTLEdBQ21CO0FBRTVCLE1BQUksV0FBd0MsQ0FBQztBQUM3QyxXQUFTLFNBQVMsU0FBUztBQUMzQixRQUFNLFFBQVEsQ0FBQyxVQUFTO0FBQ3RCLGFBQVMsSUFBSSxHQUFHLElBQUksTUFBSyxRQUFRLEtBQUs7QUFDcEMsWUFBTSxPQUFPLE1BQUssS0FBSztBQUN2QixZQUFNLFFBQVEsTUFBSyxTQUFTLElBQUksSUFBSTtBQUNwQyxVQUFJLFFBQVEsVUFBVTtBQUNwQixpQkFBUyxRQUFRLEtBQUssSUFBSSxTQUFTLE9BQU8sS0FBSztBQUFBLE1BQ2pELE9BQU87QUFDTCxpQkFBUyxRQUFRO0FBQUEsTUFDbkI7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBQ0QsU0FBTztBQUNUO0FBRUEscUJBQXFCLE9BQWUsT0FBZTtBQUNqRCxRQUFNLElBQUksRUFBRSxVQUFVLFFBQVEsRUFBRSxTQUFTLFVBQVU7QUFDbkQsUUFBTSxJQUFJLEVBQUUsV0FBVyxRQUFRLEVBQUUsWUFBWSxVQUFVO0FBQ3pEO0FBRU8sMEJBQ0wsUUFDQSxRQUNBLE9BQ0EsUUFDQSxNQUNBO0FBQ0EsUUFBTSxhQUFhLFNBQVMsY0FBYyxLQUFLO0FBQy9DLGFBQVcsU0FBUyxZQUFZO0FBQ2hDLFNBQU8sWUFBWSxVQUFVO0FBRTdCLFFBQU0sVUFBVSxTQUFTLGNBQWMsS0FBSztBQUM1QyxVQUFRLFNBQVMsb0JBQW9CO0FBQ3JDLGFBQVcsWUFBWSxPQUFPO0FBRTlCLFFBQU0sY0FBYyxPQUFPLFNBQVM7QUFFcEMsTUFBSSxVQUFrQjtBQUN0QixNQUFJLFlBQW9CO0FBRXhCLE1BQUksb0JBQVk7QUFBQSxJQUNkLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLFNBQVMsTUFBTTtBQUNiLFlBQUksU0FBUztBQUNYLGlCQUFPLFNBQVMsYUFBYSxVQUFVLE9BQU8sWUFBWTtBQUMxRCxrQkFBUSxLQUFLLEVBQUUsU0FBUyxLQUFLLENBQUM7QUFBQSxRQUNoQztBQUNBLFlBQUksV0FBVztBQUNiLGlCQUFPLFNBQVMsY0FBYyxHQUFHLFVBQVUsSUFBSSxZQUFZO0FBQzNELG9CQUFVLEtBQUssRUFBRSxTQUFTLE1BQU0sQ0FBQztBQUFBLFFBQ25DO0FBQUEsTUFDRjtBQUFBLE1BQ0EsVUFBVTtBQUFBLE1BQ1YsT0FBTztBQUFBLElBQ1Q7QUFBQSxFQUNGLENBQUM7QUFFRCxNQUFJLG9CQUFZO0FBQUEsSUFDZCxRQUFRO0FBQUEsSUFDUixPQUFPO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixTQUFTLE1BQU07QUFDYixZQUFJLFdBQVc7QUFDYixpQkFBTyxTQUFTLGNBQWMsR0FBRyxVQUFVLE9BQU8sWUFBWTtBQUM5RCxrQkFBUSxLQUFLLEVBQUUsU0FBUyxNQUFNLENBQUM7QUFDL0IsY0FBSSxTQUFTO0FBQ1gsbUJBQU8sU0FBUyxhQUFhLFVBQVUsSUFBSSxZQUFZO0FBQ3ZELHNCQUFVLEtBQUssRUFBRSxTQUFTLEtBQUssQ0FBQztBQUFBLFVBQ2xDO0FBQ0E7QUFBQSxRQUNGO0FBQ0EsY0FBTSxNQUFNLGFBQWEsT0FBTyxPQUFPLFFBQVEsSUFBSTtBQUNuRCxjQUFNLFNBQVMsb0JBQW9CLEtBQUssT0FBTyxTQUFTLFNBQVM7QUFDakUsY0FBTSxZQUFZLGFBQWEsUUFBUSxNQUFNO0FBRzdDLGNBQU0sRUFBRSxzQkFBc0IsT0FBTztBQUNyQyxjQUFNLFdBQVcsWUFBWSxXQUFXLE1BQU07QUFDOUMsY0FBTSxTQUFRLFlBQVksVUFBVSxPQUFPLGlCQUFpQjtBQUM1RCxjQUFNLFFBQVEsT0FDWCxNQUFNLElBQUksRUFDVixJQUFJLENBQUMsU0FBUztBQUNiLGdCQUFNLENBQUMsV0FBVyxXQUFXLEtBQUssTUFBTSxJQUFJO0FBQzVDLGlCQUFPLFFBQVEsS0FBSyxJQUFJO0FBQUEsUUFDMUIsQ0FBQyxFQUNBLE9BQU8sQ0FBQyxTQUFTLElBQUk7QUFDeEIsWUFBSSxlQUFlLGVBQWUsVUFBVSxNQUFNO0FBQ2xELGNBQU0sZUFBZSxLQUFLLElBQUksR0FBRyxPQUFPLE9BQU8sWUFBWSxDQUFDO0FBRTVELG9CQUFZLElBQUksbUJBQVc7QUFBQSxVQUN6QixRQUFRO0FBQUEsVUFDUixPQUFPO0FBQUEsWUFDTCxVQUFVO0FBQUEsWUFDVixlQUFlLENBQUMsTUFBTTtBQUNwQiwwQkFBWSxXQUFXLENBQUM7QUFBQSxZQUMxQjtBQUFBLFVBQ0Y7QUFBQSxRQUNGLENBQUM7QUFDRCxZQUFJLFNBQVMsSUFBSSxJQUFJLEtBQUs7QUFDMUIsZUFBTyxJQUFJLE1BQU07QUFDakIsY0FBTSxTQUFRLE1BQU0sS0FBSyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLO0FBRXJELGNBQU0sV0FBVyxPQUFPLE9BQU8sQ0FBQyxHQUFHLElBQUk7QUFDdkMsY0FBTSxVQUFTLE9BQU8sU0FBUztBQUMvQixZQUFJLFlBQVcsYUFBYTtBQUMxQixtQkFBUyxTQUFTO0FBQUEsWUFFaEIsTUFBTTtBQUFBLFlBQ04sU0FBUztBQUFBLFlBQ1QsUUFBUSxDQUFDLFVBQVU7QUFDakIscUJBQU8sS0FBSyxNQUFNLE1BQU0sRUFBRSxRQUFRLENBQUMsUUFBTztBQUN4QyxzQkFBTSxPQUFPLE1BQU0sT0FBTyxHQUFFLEVBQUU7QUFDOUIsb0JBQUksUUFBUSxjQUFjO0FBQ3hCLHdCQUFNLE9BQU8sS0FBSSxPQUFPLGFBQWEsUUFBUTtBQUFBLGdCQUMvQyxPQUFPO0FBQ0wsd0JBQU0sT0FBTyxLQUFJLE9BQU87QUFBQSxnQkFDMUI7QUFBQSxjQUNGLENBQUM7QUFBQSxZQUNIO0FBQUEsVUFDRjtBQUFBLFFBQ0YsT0FBTztBQUNMLG1CQUFTLFNBQVM7QUFBQSxRQUNwQjtBQUNBLGNBQU0sVUFBUyxZQUFXLFVBQVUsWUFBVztBQUMvQyxZQUFJLFNBQVE7QUFFVixtQkFBUyxhQUFhO0FBQ3RCLG1CQUFTLFNBQVM7QUFBQSxRQUNwQixPQUFPO0FBQ0wsbUJBQVMsV0FBVztBQUNwQixtQkFBUyxnQkFBZ0I7QUFBQSxRQUMzQjtBQUVBLG9CQUFZLFlBQVksUUFBUSxRQUFRLFFBQU8sVUFBVSxZQUFZO0FBRXJFLFlBQUksU0FBUTtBQUNWLHVCQUFhLFdBQVcsTUFBTTtBQUFBLFFBQ2hDLE9BQU87QUFDTCxzQkFBWSxTQUFTO0FBQUEsUUFDdkI7QUFFQSxZQUFJLFNBQVM7QUFDWCxpQkFBTyxTQUFTLGFBQWEsU0FBUyxZQUFZO0FBQ2xELGtCQUFRLEtBQUssRUFBRSxTQUFTLE1BQU0sQ0FBQztBQUFBLFFBQ2pDO0FBQUEsTUFDRjtBQUFBLE1BQ0EsVUFBVTtBQUFBLE1BQ1YsT0FBTztBQUFBLElBQ1Q7QUFBQSxFQUNGLENBQUM7QUFDRCxRQUFNLGFBQWEsZUFBZSxPQUFPLFFBQVEsQ0FBQztBQUNsRCxRQUFNLGFBQWEsS0FBSyxJQUFJLEdBQUcsT0FBTyxPQUFPLFVBQVUsQ0FBQztBQUV4RCxNQUFJO0FBQ0osUUFBTSxVQUFVLElBQUksbUJBQVc7QUFBQSxJQUM3QixRQUFRO0FBQUEsSUFDUixPQUFPO0FBQUEsTUFDTCxVQUFVO0FBQUEsTUFDVixlQUFlLENBQUMsTUFBTTtBQUNwQixvQkFBWSxTQUFTLENBQUM7QUFBQSxNQUN4QjtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFlRCxNQUFJLFFBQVEsTUFBTSxLQUNoQixJQUFJLElBQUksTUFBTSxPQUFPLENBQUMsTUFBTSxTQUFTLEtBQUssT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDN0Q7QUFFQSxRQUFNLEtBQUssTUFBTTtBQUNqQixVQUFRLE1BQU0sSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLO0FBRWxDLFFBQU0sU0FBeUIsT0FBTyxPQUFPLENBQUMsR0FBRyxJQUFJO0FBRXJELFFBQU0sU0FBUyxPQUFPLFNBQVM7QUFDL0IsTUFBSSxXQUFXLGFBQWE7QUFDMUIsV0FBTyxTQUFTO0FBQUEsTUFFZCxNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxRQUFRLENBQUMsVUFBVTtBQUNqQixlQUFPLEtBQUssTUFBTSxNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQU87QUFDeEMsZ0JBQU0sT0FBTyxNQUFNLE9BQU8sR0FBRSxFQUFFO0FBQzlCLGNBQUksUUFBUSxZQUFZO0FBQ3RCLGtCQUFNLE9BQU8sS0FBSSxPQUFPLGFBQWEsV0FBVyxRQUFRO0FBQUEsVUFDMUQsT0FBTztBQUNMLGtCQUFNLE9BQU8sS0FBSSxPQUFPLGFBQWE7QUFBQSxVQUN2QztBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGO0FBQUEsRUFDRixPQUFPO0FBQ0wsV0FBTyxTQUFTO0FBQUEsRUFDbEI7QUFDQSxRQUFNLFNBQVMsV0FBVyxVQUFVLFdBQVc7QUFDL0MsTUFBSSxRQUFRO0FBRVYsV0FBTyxhQUFhO0FBQ3BCLFdBQU8sU0FBUztBQUFBLEVBQ2xCLE9BQU87QUFDTCxXQUFPLFdBQVc7QUFFbEIsV0FBTyxnQkFBZ0I7QUFBQSxFQUN6QjtBQUNBLFlBQVUsWUFBWSxRQUFRLFFBQVEsT0FBTyxRQUFRLFVBQVU7QUFDL0QsTUFBSSxRQUFRO0FBQ1YsaUJBQWEsU0FBUyxNQUFNO0FBQUEsRUFDOUIsT0FBTztBQUNMLGdCQUFZLE9BQU87QUFBQSxFQUNyQjtBQUNGOzs7QVBsYUEsNEJBQTRCLFFBQWtCO0FBQzVDLFFBQU0sRUFBRSxVQUFVLE9BQU8sWUFBWTtBQUNyQyxRQUFNLEVBQUUsc0JBQXNCLGNBQWM7QUFFNUMsTUFDRSxVQUFVLFNBQVMsRUFBRSxNQUFNLENBQUMsVUFBVSxxQkFBcUIsU0FBUyxLQUFLLENBQUMsR0FDMUU7QUFDQSxXQUFPLGFBQWEsU0FBUyxJQUFJO0FBQUEsRUFDbkMsT0FBTztBQUNMLFVBQU0sWUFBWSxxQkFDZixJQUFJLENBQUMsVUFBTztBQWpDbkI7QUFpQ3NCLGdDQUFhLFdBQVcsT0FBTyxJQUFJLE1BQW5DLG1CQUF1QztBQUFBLEtBQUUsRUFDeEQsT0FBTyxDQUFDLFVBQVUsVUFBVSxNQUFTO0FBQ3hDLFVBQU0sV0FBVyxnQkFBZ0IsT0FBTztBQUFBLE1BQ3RDLEdBQUc7QUFBQSxNQUNILEdBQUc7QUFBQSxJQUNMLENBQUM7QUFDRCxVQUFNLFNBQVMsb0JBQW9CLFVBQVUsU0FBUztBQUN0RCxXQUFPLGFBQWEsUUFBUSxJQUFJO0FBQUEsRUFDbEM7QUFDRjtBQUVBLHdCQUNFLFVBQ0EsR0FDQSxVQUNtQjtBQUNuQixRQUFNLEVBQUUsVUFBVSxjQUFjO0FBQ2hDLE1BQUksY0FBYztBQUFNLFdBQU87QUFFL0IsUUFBTSxZQUFZLFlBQVksR0FBRyxRQUFRO0FBQ3pDLE1BQUksaUJBQWlCLENBQUMsR0FBRyxTQUFTO0FBRWxDLFFBQU0sRUFBRSxZQUFZLGtDQUFrQztBQUV0RCxNQUVFLFdBQVcsTUFDWCxlQUFlLFFBQ2Y7QUFDQSxxQkFBaUIsZUFBZSxPQUFPLENBQUMsVUFDdEMsV0FBVyxTQUFTLE1BQU0sRUFBRSxDQUM5QjtBQUNBLFFBQUksZUFBZSxXQUFXLEtBQUs7QUFDakMsdUJBQWlCLENBQUMsR0FBRyxTQUFTO0FBQUEsRUFDbEM7QUFFQSxRQUFNLGVBQWUsZUFDbEIsT0FBTyxDQUFDLFVBQVUsTUFBTSxTQUFTLENBQUMsRUFDbEMsS0FBSyxDQUFDLElBQUcsTUFBTSxHQUFFLFNBQVMsRUFBRSxNQUFNO0FBRXJDLFNBQU87QUFDVDtBQUVBLHNCQUFzQixRQUFrQixVQUFrQjtBQUN4RCxRQUFNLEVBQUUsVUFBVTtBQUNsQixRQUFNLEVBQUUsY0FBYyxPQUFPO0FBQzdCLE1BQUksQ0FBQztBQUFPLFdBQU87QUFDbkIsUUFBTSxZQUEwQixrQkFBa0I7QUFFbEQsUUFBTSxZQUFZLFVBQVUsQ0FBQyxHQUFHLElBQUcsR0FBRyxNQUFNO0FBQzFDLFVBQU0sRUFBRSxLQUFLLE9BQU8sWUFBWTtBQUNoQyxRQUFJLFFBQVEsVUFBVSxRQUFRO0FBQVE7QUFDdEMsUUFBSSxNQUFNLFVBQVU7QUFDbEIsZ0JBQVUsS0FBSyxNQUFNLEtBQUssRUFBRSxPQUFPLElBQUksR0FBRyxRQUFRLENBQUM7QUFBQSxJQUNyRCxPQUFPO0FBQ0wsWUFBTSxXQUFXLGFBQWEsV0FBVyxPQUFPLEdBQUcsRUFBRTtBQUNyRCxnQkFBVSxVQUFVLEdBQUcsR0FBRyxTQUFTLEtBQUs7QUFBQSxRQUN0QyxPQUFPO0FBQUEsUUFDUCxJQUFJO0FBQUEsUUFDSjtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGLENBQUM7QUFDRCxTQUFPO0FBQ1Q7QUFFTyx3QkFBd0IsTUFBYyxTQUFpQixHQUFHO0FBQy9ELFFBQU0sU0FDSCxlQUFjLFFBQVEsSUFBSSxJQUFJLFVBQVUsY0FBYztBQUN6RCxTQUFPLGNBQWMsU0FBUSxJQUFJLGNBQWMsU0FBUyxTQUFRO0FBQ2xFO0FBRUEseUJBQWdDLFFBQWlDO0FBekdqRTtBQTBHRSxNQUFJO0FBQ0YsVUFBTSxFQUFFLFVBQVUsSUFBSSxVQUFVO0FBQ2hDLFVBQU07QUFBQSxNQUNKO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLFFBQ0U7QUFFSixPQUFHLFFBQVEsV0FBVztBQUV0QixVQUFNLGVBQWUsSUFBSSxVQUFVLG9CQUFvQiw2QkFBWTtBQUNuRSxVQUFNLE9BQU8sNkNBQWM7QUFFM0IsUUFDRSxDQUFDLFdBQ0QsQ0FBQyxnQkFDQSxTQUFTLGFBQWEsQ0FBQyxxQkFDeEI7QUFDQSx5REFBYyxZQUFZLGNBQWMsaUJBQXhDLG1CQUFzRDtBQUN0RCxhQUFPLEdBQUcsTUFBTTtBQUFBLElBQ2xCO0FBRUEsVUFBTSxFQUFFLFNBQVM7QUFDakIsVUFBTSxFQUFFLGdCQUFnQixVQUFJLGNBQWMsYUFBYSxJQUFJLE1BQW5DLFlBQXdDLENBQUM7QUFHakUsUUFBSSw0Q0FBYyxtQkFBa0IsNENBQWM7QUFBa0IsYUFBTyxHQUFHLE1BQU07QUFFcEYsVUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBSSxDQUFDLE1BQU0sUUFBUSxRQUFRO0FBQUcsYUFBTyxHQUFHLE1BQU07QUFFOUMsVUFBTSxPQUNKLFNBQVMsWUFDTCxhQUFhLFlBQVksWUFBWSxjQUNyQywyQkFDRixJQUNFLGFBQWEsVUFBVSxjQUFjLDBCQUEwQjtBQUVyRSx1QkFBYSxZQUNWLGlCQUFpQixXQUFXLE1BRC9CLG1CQUVJLFFBQVEsQ0FBQyxVQUFVLE1BQU0sT0FBTztBQUVwQyxVQUFNLFdBQVcsbUJBQW1CLE1BQU07QUFDMUMsVUFBTSxlQUFlLGVBQWUsVUFBVSxVQUFVLElBQUk7QUFDNUQsZ0NBQUssRUFBRSxhQUFhLENBQUM7QUFFckIsVUFBTTtBQUFBLE1BQ0osTUFBTSxFQUFFLE9BQU8sT0FBTyxVQUFVO0FBQUEsTUFDaEMsTUFBTSxFQUFFLE9BQU8sT0FBTyxVQUFVO0FBQUEsUUFDOUIsYUFBYSxRQUFRLFFBQVE7QUFHakMsVUFBTSxPQUFPLENBQUMsR0FBRyxLQUFLO0FBQ3RCLFVBQU0sUUFBUSxDQUFDLE1BQU07QUFDbkIsVUFBSSxLQUFLLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTTtBQUMzQyxhQUFLLEtBQUssQ0FBQztBQUFBLElBQ2YsQ0FBQztBQUNELFVBQU0sT0FBTyxDQUFDLEdBQUcsS0FBSztBQUN0QixVQUFNLFFBQVEsQ0FBQyxNQUFNO0FBQ25CLFVBQUksS0FBSyxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU07QUFDM0MsYUFBSyxLQUFLLENBQUM7QUFBQSxJQUNmLENBQUM7QUFFRCxVQUFNLFVBQVUsQ0FBQyxhQUFhLFVBQVUsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxLQUFLO0FBRTlELFFBQUksV0FBVyxrQkFBa0I7QUFBSSxhQUFPLEdBQUcsTUFBTTtBQUVyRCxVQUFNLHNCQUNKLFNBQVMsWUFDTCwwRUFDQTtBQUVOLFVBQU0sZ0JBQ0osd0JBQXdCLEtBQ3BCLFNBQVMsY0FBYyxtQkFBbUIsSUFDMUM7QUFDTixVQUFNLFlBQVksZ0JBQ2QsaUJBQWlCLGFBQWEsRUFBRSxpQkFBaUIsV0FBVyxJQUM1RDtBQUVKLFVBQU0sV0FBVyxVQUFVO0FBQUEsTUFDekIsS0FBSyxZQUFZLDRCQUNiLDJFQUNBO0FBQUEsTUFFSixNQUFNO0FBQUEsUUFDSixPQUNHLFVBQVMsWUFBWSxjQUFjLGVBQWUsTUFDbkQ7QUFBQSxNQUNKO0FBQUEsSUFDRixDQUFDO0FBRUQsV0FBTyxRQUFRLEtBQUssQ0FBQyxLQUFLLE1BQU0sUUFBUSxDQUFDO0FBRXpDLFFBQUksU0FBUyxXQUFXO0FBQ3RCLFdBQUssY0FBYyw0QkFBNEIsRUFBRSxPQUFPLFFBQVE7QUFBQSxJQVdsRSxPQUFPO0FBQ0wsWUFBTSxXQUFXLEtBQUssY0FBYyxnQkFBZ0I7QUFDcEQsVUFBSSxVQUFVO0FBQ1osOEJBQXNCLE1BQU07QUFDMUIsZ0JBQU0sZUFBZSxTQUFTLHNCQUFzQixFQUFFO0FBRXRELG1CQUFTLE1BQU0sYUFBYSxHQUFHLGVBQWU7QUFBQSxRQUNoRCxDQUFDO0FBQUEsTUFDSDtBQWFBLGlCQUFLLGNBQWMseUJBQXlCLE1BQTVDLG1CQUErQyxPQUFPO0FBQUEsSUFFeEQ7QUFHQSxhQUFTLE1BQU07QUFDZixRQUFJLFNBQVMsV0FBVyxTQUFTLFFBQVEsR0FBRztBQUMxQyxlQUFTLFlBQVk7QUFDckIsYUFBTyxHQUFHLE1BQU07QUFBQSxJQUNsQjtBQUVBLFFBQUksU0FBUztBQUNYLGVBQVMsWUFBWTtBQUNyQixhQUFPLEdBQUcsTUFBTTtBQUFBLElBQ2xCO0FBRUEsVUFBTSxjQUFjO0FBQUEsTUFDbEIsUUFBUTtBQUFBLE1BQ1IsT0FBTyxFQUFFLGNBQWMsT0FBTztBQUFBLElBQ2hDO0FBRUEsUUFBSSxhQUFhLGFBQWE7QUFBUSxVQUFJLGtCQUFVLFdBQVc7QUFDL0QsUUFBSSxZQUFZLGFBQWE7QUFBUSxVQUFJLGtCQUFVLFdBQVc7QUFDOUQsUUFBSSxnQkFBaUIsTUFBSyxVQUFVLEtBQUssU0FBUztBQUNoRCxVQUFJLGlCQUFTO0FBQUEsUUFDWCxRQUFRO0FBQUEsUUFDUixPQUFPLEVBQUUsUUFBUSxNQUFNLEtBQUs7QUFBQSxNQUM5QixDQUFDO0FBQUEsSUFDSDtBQUNBLFFBQUksYUFBYSxhQUFhLFFBQVE7QUFDcEMsdUJBQ0UsUUFDQSxVQUNBLGNBQ0EsVUFDQSxvQkFDRjtBQUFBLElBQ0Y7QUFDQSxPQUFHLE1BQU07QUFBQSxFQUNYLFNBQVMsS0FBUDtBQUNBLGlDQUFNLEdBQUc7QUFDVCxXQUFPLEdBQUcsTUFBTTtBQUFBLEVBQ2xCO0FBQ0Y7OztBakIzTkEsNEJBQTRCLFFBQWtCLE9BQWdCO0FBQzVELFFBQU0sRUFBRSxPQUFPO0FBQ2YsUUFBTSxNQUFNLFNBQVMsTUFBTTtBQUMzQixLQUFHLFFBQVEsb0JBQW9CO0FBRS9CLFFBQU0sVUFBVSxNQUFNLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQztBQUV2RCxLQUFHLE1BQU0sRUFBRSxRQUFRLENBQUM7QUFDcEIsU0FBTztBQUNUO0FBRUEsNkJBQTZCLFFBQWtCLE9BQWdCO0FBQzdELFFBQU0sRUFBRSxPQUFPO0FBQ2YsS0FBRyxRQUFRLHFCQUFxQjtBQUVoQyxRQUFNLFVBQWdDLE1BQU0sSUFBSSxDQUFDLFNBQVM7QUFDeEQsVUFBTSxFQUFFLGdCQUFnQixJQUFJLGNBQWMsYUFBYSxJQUFJO0FBQzNELFdBQU8sY0FBYyxFQUFFLE1BQU0sR0FBRyxZQUFZLElBQUksRUFBRSxLQUFLO0FBQUEsRUFDekQsQ0FBQztBQUVELEtBQUcsTUFBTSxFQUFFLFFBQVEsQ0FBQztBQUNwQixTQUFPO0FBQ1Q7QUFFQSxJQUFNLFlBQVksQ0FBQyxTQUFtQixPQUFPLEtBQUssc0JBQXNCO0FBTXhFLGlCQUFpQixNQUFnQjtBQUMvQixRQUFNLFlBQVksQ0FBQztBQUNuQixRQUFNLFFBQVEsQ0FBQyxJQUFJO0FBRW5CLFNBQU8sTUFBTSxRQUFRO0FBQ25CLFVBQU0sV0FBVyxNQUFNLE1BQU07QUFFN0IsUUFBSSxVQUFVLFFBQVE7QUFBRyxZQUFNLEtBQUssR0FBRyxTQUFTLE1BQU07QUFBQTtBQUNqRCxnQkFBVSxLQUFLLFFBQVE7QUFBQSxFQUM5QjtBQUNBLFNBQU87QUFDVDtBQU9BLHlCQUNFLE9BQ0E7QUFDQSxNQUFJLENBQUM7QUFBTyxXQUFPLENBQUM7QUFFcEIsUUFBTSxTQUFtQixDQUFDO0FBQzFCLE1BQUk7QUFFRixRQUFJLE9BQU8sVUFBVSxVQUFVO0FBQzdCLFlBQU0sU0FBUyxNQUFNLE1BQU0sZUFBZTtBQUUxQyxVQUFJLFdBQVcsTUFBTTtBQUNuQixjQUFNLFlBQVksT0FBTyxJQUFJLENBQUMsVUFDNUIsa0JBQWtCLE1BQUssTUFBTSxpQkFBaUIsRUFBRSxFQUFFLENBQ3BEO0FBQ0EsZUFBTyxLQUFLLEdBQUcsU0FBUztBQUFBLE1BQzFCO0FBQUEsSUFDRixPQUFPO0FBQ0wsWUFBTSxZQUF3QixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7QUFDNUMsbUNBQU0sR0FBRyxTQUFTO0FBRWxCLGdCQUFVLFFBQVEsQ0FBQyxZQUFZO0FBQzdCLFlBQUksQ0FBQztBQUFTO0FBRWQsY0FBTSxZQUFZLFFBQVEsT0FBTztBQUNqQyxrQkFBVSxRQUFRLENBQUMsV0FBVTtBQUMzQixjQUFJLE9BQU8sV0FBVSxZQUFZLE9BQU8sV0FBVSxVQUFVO0FBQzFELGtCQUFNLGNBQWMsT0FBTSxTQUFTO0FBQ25DLGtCQUFNLFNBQVMsWUFBWSxNQUFNLGVBQWU7QUFDaEQsZ0JBQUksV0FBVyxNQUFNO0FBQ25CLG9CQUFNLE9BQU8sT0FBTyxJQUFJLENBQUMsVUFDdkIsa0JBQWtCLE1BQUssTUFBTSxpQkFBaUIsRUFBRSxFQUFFLENBQ3BEO0FBQ0EscUJBQU8sS0FBSyxHQUFHLElBQUk7QUFBQSxZQUNyQixPQUFPO0FBQ0wsb0JBQU0sV0FBVyxrQkFBa0IsV0FBVztBQUM5QyxxQkFBTyxLQUFLLFNBQVMsTUFBTSxHQUFHLEVBQUUsR0FBRyxNQUFNLEdBQUcsRUFBRSxFQUFFO0FBQUEsWUFDbEQ7QUFBQSxVQUNGLFdBQVcsT0FBTSxTQUFTLFFBQVc7QUFDbkMsa0JBQU0sV0FBVyxrQkFBa0IsT0FBTSxJQUFJO0FBQzdDLGdCQUFJLGFBQWE7QUFBVyxxQkFBTyxLQUFLLFFBQVE7QUFBQSxVQUNsRDtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0gsQ0FBQztBQUFBLElBQ0g7QUFDQSxXQUFPO0FBQUEsRUFDVCxTQUFTLEtBQVA7QUFDQSxpQ0FBTSxHQUFHO0FBQ1QsV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQUVBLDBCQUFpQyxRQUF1QztBQUN0RSxRQUFNLFFBQVEsSUFBSSw4QkFBVztBQUM3QixNQUFJO0FBQ0YsVUFBTSxFQUFFLFVBQVUsT0FBTztBQUN6QixVQUFNLEVBQUUsV0FBVyxVQUFVLDZCQUE2QixtQkFDeEQ7QUFDRixPQUFHLFFBQVEsWUFBWTtBQUV2QixRQUFJLFVBQVUsV0FBVyxHQUFHO0FBQzFCLFNBQUcsTUFBTTtBQUNULFVBQUksd0JBQU8scURBQXFEO0FBQ2hFLGFBQU87QUFBQSxJQUNUO0FBRUEsVUFBTSxRQUFRLElBQUksTUFBTSxpQkFBaUI7QUFDekMsVUFBTSxNQUFNLElBQUksUUFBUSxlQUFlLElBQUksVUFBVTtBQUVyRCxRQUFJLFVBQWdDLE1BQ2hDLG1CQUFtQixRQUFRLEtBQUssSUFDaEMsb0JBQW9CLFFBQVEsS0FBSztBQUVyQyxRQUFJLFFBQVEsS0FBSyxDQUFDLFdBQVcsV0FBVyxNQUFTLEdBQUc7QUFDbEQsWUFBTSxLQUFLLEdBQUk7QUFDZixnQkFBVSxNQUNOLG1CQUFtQixRQUFRLEtBQUssSUFDaEMsb0JBQW9CLFFBQVEsS0FBSztBQUFBLElBQ3ZDO0FBRUEsVUFBTSxVQUFVLGFBQWEsS0FBSyxNQUFNLFdBQVcsTUFBTSxJQUFJLENBQUM7QUFFOUQsVUFBTSxlQUE2RCxDQUFDO0FBQ3BFLFlBQVEsUUFBUSxDQUFDLFFBQVMsYUFBYSxPQUFPLENBQUMsQ0FBRTtBQUVqRCxPQUFHLFFBQVEsdUJBQXVCO0FBQ2xDLFlBQVEsUUFBUSxDQUFDLFNBQVM7QUFDeEIsY0FBUSxRQUFRLENBQUMsUUFBUTtBQUN2QixZQUFJLEtBQUssU0FBUyxVQUFhLEtBQUssU0FBUztBQUMzQyx1QkFBYSxLQUFLLEtBQUssSUFBSTtBQUFBLE1BQy9CLENBQUM7QUFFRCxZQUFNLFdBQVcsY0FBYyxLQUFLLElBQUk7QUFDeEMsWUFBTSxjQUFjLGVBQWUsSUFBSTtBQUV2QyxtQkFBYSxXQUFXLENBQUMsTUFBTSxLQUFLLFVBQVU7QUFDNUMsY0FBTSxTQUFTLGdCQUFnQixLQUFLLE1BQU07QUFFMUMsZUFBTyxRQUFRLENBQUMsV0FBVztBQUN6QixjQUFJLE9BQU8sV0FBVyxJQUFJLEtBQUssT0FBTyxXQUFXLElBQUk7QUFBRztBQUN4RCxnQkFBTSxjQUFjLGVBQWUsU0FBUyxNQUFNO0FBRWxELHVCQUNFLFVBQ0EsT0FDQSxVQUNBLE9BQ0EsUUFDQSxhQUNBLFdBQ0Y7QUFBQSxRQUNGLENBQUM7QUFDRCxZQUFJLFFBQVE7QUFBUSx1QkFBYSxPQUFPLFNBQVMsS0FBSyxLQUFLO0FBQUEsTUFDN0QsQ0FBQztBQUFBLElBQ0gsQ0FBQztBQUVELE9BQUcsTUFBTTtBQUdULFVBQU0sYUFDSixJQUFJLFFBQVEsUUFBUSxTQUFTLDhCQUN6QixNQUFNLGNBQWMsUUFBUSxLQUFLLElBQ2pDLENBQUM7QUFFUCxRQUFJLFdBQVc7QUFDYiwyQkFBcUIsVUFBVSxZQUFZLFNBQVMsS0FBSztBQUkzRCxPQUFHLFFBQVEseUJBQXlCO0FBRXBDLE9BQUcsUUFBUSxpQkFBaUI7QUFFNUIsUUFBSSxlQUFlLFFBQVE7QUFDekIsaUJBQVcsZ0JBQWdCLGdCQUFnQjtBQUN6QyxZQUFJLGFBQWEsU0FBUyxHQUFHLEdBQUc7QUFDOUIsZ0JBQU0sU0FBUyxJQUFJLE1BQU0sc0JBQ3ZCLG9DQUFjLFlBQVksQ0FDNUI7QUFFQSxjQUFJLENBQUUsbUJBQWtCO0FBQVU7QUFDbEMscUJBQVcsU0FBUyxPQUFPLFVBQVU7QUFDbkMsZ0JBQUksaUJBQWlCLHdCQUFPO0FBQzFCLDRCQUNFLFVBQ0EsTUFBTSxzQkFBc0IsS0FBSyxHQUNqQyxLQUNGO0FBQUEsWUFDRjtBQUFBLFVBQ0Y7QUFBQSxRQUNGLE9BQU87QUFDTCxnQkFBTSxPQUFPLElBQUksY0FBYyxxQkFBcUIsY0FBYyxFQUFFO0FBQ3BFLGNBQUk7QUFDRiwwQkFDRSxVQUNBLE1BQU0sc0JBQXNCLElBQUksR0FDaEMsS0FDRjtBQUFBLFFBQ0o7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUVBLE9BQUcsTUFBTTtBQUdULE9BQUcsUUFBUSxjQUFjO0FBQ3pCLDBCQUFzQixRQUFRLGFBQWEsaUJBQWlCLFNBQVMsS0FBSztBQUMxRSxPQUFHLE1BQU07QUFDVCxPQUFHLFFBQVEsV0FBVztBQUN0Qix1QkFBbUIsUUFBUSxhQUFhLGNBQWMsU0FBUyxLQUFLO0FBQ3BFLE9BQUcsTUFBTTtBQUNULE9BQUcsUUFBUSxZQUFZO0FBQ3ZCLHdCQUFvQixRQUFRLGFBQWEsZUFBZSxTQUFTLEtBQUs7QUFDdEUsT0FBRyxNQUFNO0FBQ1QsT0FBRyxRQUFRLGFBQWE7QUFDeEIseUJBQXFCLFFBQVEsYUFBYSxnQkFBZ0IsU0FBUyxLQUFLO0FBQ3hFLE9BQUcsTUFBTTtBQUVULE9BQUcsUUFBUSxnQkFBZ0I7QUFDM0IsNEJBQ0UsUUFDQSxhQUFhLG1CQUNiLE9BQ0EsY0FBYyxDQUNoQjtBQUNBLE9BQUcsTUFBTTtBQUNULE9BQUcsUUFBUSxlQUFlO0FBQzFCLDJCQUF1QixRQUFRLFNBQVMsS0FBSztBQUM3QyxPQUFHLE1BQU07QUFDVCxPQUFHLFFBQVEsZ0JBQWdCO0FBQzNCLDRCQUF3QixRQUFRLGFBQWEsYUFBYSxTQUFTLEtBQUs7QUFDeEUsT0FBRyxNQUFNO0FBQ1QsT0FBRyxRQUFRLFlBQVk7QUFDdkIsd0JBQW9CLFFBQVEsU0FBUyxLQUFLO0FBQzFDLE9BQUcsTUFBTTtBQUVULE9BQUcsTUFBTTtBQUVULFVBQU0sUUFBUSxDQUFDLFNBQVMsY0FBYyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQztBQUM3RCxPQUFHLE1BQU0saUJBQWlCLEVBQUUsTUFBTSxDQUFDO0FBQ25DLFdBQU87QUFBQSxFQUNULFNBQVMsS0FBUDtBQUNBLGlDQUFNLEdBQUc7QUFDVCxXQUFPLEdBQUcsTUFBTTtBQUNoQixXQUFPO0FBQUEsRUFDVDtBQUNGO0FBRU8sc0JBQXNCLFFBQWtCO0FBQzdDLFFBQU0sRUFBRSxPQUFPLGFBQWE7QUFDNUIsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBLGtCQUFrQjtBQUFBLE1BQ2hCO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBO0FBQUEsTUFFQTtBQUNKLE1BQUksVUFBVSxvQkFBb0IsT0FBTyxTQUFTO0FBRWxELE1BQUk7QUFBcUIsOEJBQTBCLFNBQVMsUUFBUTtBQUNwRSxNQUFJO0FBQXdCLDhCQUEwQixPQUFPO0FBQzdELE1BQUk7QUFBMEIsbUJBQWUsT0FBTztBQUNwRCxNQUFJO0FBQWtCLGVBQVcsT0FBTztBQUN4QyxNQUFJO0FBQTBCLHFDQUFpQyxPQUFPO0FBRXRFLFNBQU87QUFDVDtBQUVBLDRCQUFtQyxRQUFrQjtBQXJWckQ7QUFzVkUsTUFBSSxDQUFDLE9BQU87QUFBa0IsV0FBTyw4QkFBOEI7QUFDbkUsTUFBSSxDQUFDLE9BQU87QUFBYyxXQUFPLDBCQUEwQjtBQUUzRCxTQUFPLFFBQVEsTUFBTSxXQUFXLE1BQU07QUFDdEMsU0FBTyxVQUFVLGFBQWEsTUFBTTtBQUVwQyxhQUFXLEVBQUUsaUJBQVUsT0FBTztBQUM1QixVQUFNLGNBQU8sa0JBQWtCLEtBQUksTUFBN0IsbUJBQWdDO0FBRXhDLE1BQUksT0FBTyxTQUFTO0FBQVMsVUFBTSxVQUFVLE1BQU07QUFDbkQsTUFBSSxPQUFPLFNBQVM7QUFBbUIsUUFBSSx3QkFBTyxvQkFBb0I7QUFDeEU7Ozs7Ozs7Ozs7OEIrQnJVSyxJQUFZLEtBQUcsV0FBTTs7Ozs7QUFUeEIsYUFVUyxRQUFBLFFBQUEsTUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQVhOLElBQWUsTUFBQSxpQkFBQSxHQUFBOzs7Ozs7Ozs7Ozs7O0FBUnBCLGFBTVMsUUFBQSxRQUFBLE1BQUE7Ozs7Ozs7Ozs7O1VBRUosS0FBZTtBQUFBLGlCQUFBLEVBQUEsTUFBQSxLQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FEZFAsZUFBc0I7VUFFekIsV0FBVztVQUNYLGNBQWMsb0JBQW9CLE9BQU87MENDTXJCLGFBQWEsTUFBTTs7b0JBVTNDLE9BQU8sU0FBUyxlQUFZLENBQUksY0FBWSxNQUFBO1VBQ3RDLE9BQU8sYUFBWTtVQUNuQixXQUFXLEtBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkVhaUIsSUFBSyxNQUFBOzs7OztrQkFFOUIsSUFBZ0IsTUFBQSxrQkFBQSxHQUFBO2tCQU1sQixJQUFTLElBQUMsVUFBTSxrQkFBQSxHQUFBO2tCQXFCaEIsSUFBb0IsTUFBSSxJQUFZLElBQUMsVUFBTSxtQkFBQSxHQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEvQmxELGFBZ0VNLFFBQUEsTUFBQSxNQUFBO0FBL0RKLGFBUU0sTUFBQSxJQUFBO0FBUEosYUFBeUMsTUFBQSxFQUFBOzs7Ozs7Ozs7Ozs7O2dEQUFYLEtBQUssTUFBQTtBQUFBLGlCQUFBLElBQUEsUUFBQTtVQUU5QixLQUFnQjtBQUFBLGtCQUFBLEVBQUEsTUFBQSxLQUFBO1VBTWxCLEtBQVMsSUFBQyxRQUFNOzs7Ozs7Ozs7Ozs7VUFxQmhCLEtBQW9CLE1BQUksS0FBWSxJQUFDLFFBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkF6QnpDLElBQVMsSUFBQyxTQUFTLFNBQVM7Ozs7Ozs7OztBQUQvQixhQUVLLFFBQUEsSUFBQSxNQUFBOzs7OzhDQURGLEtBQVMsSUFBQyxTQUFTLFNBQVM7QUFBUyxpQkFBQSxHQUFBLE9BQUE7Ozs7Ozs7Ozs7cUJBTWpDLElBQVM7O21DQUFkLFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7QUFEUixhQWlCSyxRQUFBLElBQUEsTUFBQTs7Ozs7Ozt1QkFoQkksS0FBUzs7cUNBQWQsUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7MENBQUo7Ozs7Ozs7Ozs7Ozs7O2lCQVlLLFdBQUcsUUFBSCxZQUFPLGlCQUFpQixJQUFFLEtBQUUsSUFBUSxFQUFBLEtBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQ0FQN0IsSUFBRyxNQUFBLE1BQUcsWUFBTyxRQUFQLGFBQVcsTUFBRSxpQkFBQTtxREFJZixJQUFHLE1BQUcsSUFBRSxNQUFHLEVBQUU7dUVBQ0osSUFBTSxLQUFHLFNBQVMsT0FBTzs7OztBQVRsRCxhQWFLLFFBQUEsSUFBQSxNQUFBO0FBVkgsYUFTTSxJQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7O2dEQURILFlBQUcsUUFBSCxhQUFPLGlCQUFpQixJQUFFLEtBQUUsSUFBUSxFQUFBLEtBQUE7QUFBQSxpQkFBQSxJQUFBLFFBQUE7OERBUDdCLElBQUcsTUFBQSxNQUFHLFdBQU8sUUFBUCxZQUFXLE1BQUUsb0JBQUE7Ozt3RUFJZixJQUFHLE1BQUcsSUFBRSxNQUFHLEtBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBYTFCLElBQVksSUFBQyxVQUFNLG1CQUFBLEdBQUE7cUJBT2pCLElBQVk7O21DQUFqQixRQUFJLEtBQUEsR0FBQTs7Ozs7OzswQkFSd0I7Ozs7Ozs7Ozs7O3lDQU9yQixJQUFTLElBQUMsU0FBUyxDQUFDOzs7O0FBUi9CLGFBT00sUUFBQSxLQUFBLE1BQUE7QUFOSixhQUF1QyxLQUFBLEVBQUE7Ozs7O0FBT3pDLGFBc0JLLFFBQUEsSUFBQSxNQUFBOzs7Ozs7VUE1QkUsS0FBWSxJQUFDLFFBQU07Ozs7Ozs7Ozs7Ozs7dUJBT2pCLEtBQVk7O3FDQUFqQixRQUFJLEtBQUEsR0FBQTs7Ozs7Ozs7Ozs7OzswQ0FBSjs7NERBRE8sS0FBUyxJQUFDLFNBQVMsSUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkFMdEIsSUFBZ0IsTUFBSSxJQUFTLElBQUMsVUFBTSxrQkFBQSxHQUFBOzs7Ozs7Ozs7Ozs7O1VBQXBDLEtBQWdCLE1BQUksS0FBUyxJQUFDLFFBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ3ZDLGFBQXlDLFFBQUEsSUFBQSxNQUFBOzs7Ozs7Ozs7Ozs7Z0JBc0J0QyxXQUFHLFFBQUgsWUFBTyxpQkFBaUIsSUFBRSxLQUFFLElBQVEsRUFBQSxLQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQ0FQN0IsSUFBRyxNQUFBLE1BQUcsWUFBTyxRQUFQLGFBQVcsTUFBRSxpQkFBQTtxREFHZCxLQUFHLE1BQUEsR0FBTSxJQUFFO0lBQU8sTUFDNUIsS0FBTSxNQUFHLFlBQU8sSUFBTSxNQUFHLEdBQUU7dUVBQ1QsSUFBTSxLQUFHLFNBQVMsT0FBTzt5REFiN0IsS0FBNkIsTUFDaEQsSUFBRSxRQUFLLElBQVEsR0FBQyxXQUNaLG1CQUNBLE1BQUUsaUJBQUE7OztBQUpSLGFBa0JLLFFBQUEsSUFBQSxNQUFBO0FBVkgsYUFTTSxJQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7OENBREgsWUFBRyxRQUFILGFBQU8saUJBQWlCLElBQUUsS0FBRSxJQUFRLEVBQUEsS0FBQTtBQUFBLGlCQUFBLEdBQUEsT0FBQTs4REFQN0IsSUFBRyxNQUFBLE1BQUcsV0FBTyxRQUFQLFlBQVcsTUFBRSxvQkFBQTs7O3dFQUdkLEtBQUcsTUFBQSxHQUFNLElBQUU7SUFBTyxNQUM1QixLQUFNLE1BQUcsWUFBTyxJQUFNLE1BQUcsTUFBRTs7OzRFQVpiLEtBQTZCLE1BQ2hELElBQUUsUUFBSyxJQUFRLEdBQUMsV0FDWixtQkFDQSxNQUFFLG9CQUFBOzs7Ozs7Ozs7Ozs7OztpQkEvQ2IsS0FBUyxJQUFDLFVBQVcsSUFBb0IsTUFBSSxJQUFZLElBQUMsV0FBTSxpQkFBQSxHQUFBOzs7Ozs7Ozs7Ozs7O1VBQWhFLEtBQVMsSUFBQyxVQUFXLEtBQW9CLE1BQUksS0FBWSxJQUFDLFFBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQkFEaEUsSUFBTzs7bUNBQVosUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7QUFEUixhQXNFTSxRQUFBLEtBQUEsTUFBQTs7Ozs7Ozs7dUJBckVHLEtBQU87O3FDQUFaLFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7OzBDQUFKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQkFGQyxJQUFXOztpQ0FBaEIsUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7a0ZBSm1DLEtBQVcsR0FBQyxTQUNqRCxLQUNBLG1CQUFlLGlCQUFBOzs7QUFQckIsYUFFTSxRQUFBLE1BQUEsTUFBQTs7O0FBRU4sYUE4RU0sUUFBQSxNQUFBLE1BQUE7Ozs7Ozs7Ozs7OztxQkF6RUcsS0FBVzs7bUNBQWhCLFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7O3dDQUFKOztpSEFKdUMsTUFBVyxHQUFDLFNBQ2pELEtBQ0EsbUJBQWUsb0JBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRRHRCUixnQkFBNEI7UUFDNUIsYUFBZTtRQUNmLGVBQXNCO1VBRXpCLFdBQVc7VUFDWCxhQUFhO1VBR25CLHNCQUNBLFFBQ0EsK0JBQ0EscUJBQ0U7bUNDa0NpQyxNQUFDLE1BQVcsYUFBYSxJQUFJLENBQUM7aUNBQ2hDLFVBQ2IsYUFBYSxPQUFPLFlBQVksRUFBRTtxQ0FnQ25CLE1BQUMsTUFBVyxhQUFhLElBQUksQ0FBQzttQ0FDaEMsTUFBTSxhQUFhLEdBQUcsWUFBWSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FwQ2xFbEUsNkJBQTZCLFFBQWtCLFVBQWtCO0FBQ3RFLFFBQU0sRUFBRSxTQUFTLGFBQWE7QUFDOUIsUUFBTSxFQUFFLGNBQWM7QUFDdEIsUUFBTSxhQUFhLGtCQUFrQjtBQUNyQyxNQUFJLENBQUM7QUFBUyxXQUFPO0FBRXJCLFVBQVEsWUFBWSxVQUFVLENBQUMsR0FBRyxJQUFHLEdBQUcsTUFBTTtBQUM1QyxVQUFNLEVBQUUsT0FBTyxLQUFLLFlBQVk7QUFFaEMsUUFBSSxNQUFNLFVBQVU7QUFDbEIsaUJBQVcsS0FBSyxNQUFNLEtBQUssRUFBRSxJQUFJLEdBQUcsT0FBTyxRQUFRLENBQUM7QUFBQSxJQUN0RCxPQUFPO0FBQ0wsaUJBQVcsVUFBVSxHQUFHLEdBQUcsU0FBUyxLQUFLO0FBQUEsUUFDdkMsSUFBSTtBQUFBLFFBQ0osT0FBTyxhQUFhLFdBQVcsT0FBTyxHQUFHLEVBQUU7QUFBQSxRQUMzQztBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGLENBQUM7QUFFRCxTQUFPO0FBQ1Q7QUFDQSxJQUFxQixhQUFyQixjQUF3QywyQkFBUztBQUFBLEVBSy9DLFlBQVksTUFBcUIsUUFBa0I7QUFDakQsVUFBTSxJQUFJO0FBMkJaLGdCQUFPO0FBeUNQLDZCQUFvQixDQUNsQixJQUNBLFFBQVEsTUFDUixRQUNBLFlBQ29CO0FBQ3BCLGFBQU87QUFBQSxRQUNMO0FBQUEsUUFDQSxLQUFLLFVBQVUsSUFBSSxLQUFLO0FBQUEsUUFDeEIsS0FBSyxLQUFLLE9BQU8sRUFBRTtBQUFBLFFBQ25CLE9BQU8sS0FBSyxTQUFTLEVBQUU7QUFBQSxRQUN2QjtBQUFBLFFBQ0E7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQVlBLG9CQUFXLENBQUMsU0FDVixPQUFPLFNBQVMsS0FBSyxPQUFPLE1BQU0saUJBQWlCLE1BQU0sT0FBTyxDQUFDO0FBRW5FLDBCQUFpQixDQUFDLElBQW9CLE1BQXVCO0FBcEovRDtBQXFKSSxZQUFNLEVBQUUscUJBQXFCLGlCQUFpQixLQUFLLE9BQU87QUFDMUQsWUFBTSxVQUFXLHVCQUFzQixHQUFFLEtBQUssU0FBRSxRQUFGLFlBQVMsR0FBRSxJQUFJLFlBQVk7QUFDekUsWUFBTSxVQUFXLHVCQUFzQixFQUFFLEtBQUssUUFBRSxRQUFGLFlBQVMsRUFBRSxJQUFJLFlBQVk7QUFFekUsWUFBTSxPQUFPLGVBQWUsS0FBSztBQUNqQyxZQUFNLE9BQU8sZUFBZSxJQUFJO0FBRWhDLGFBQU8sVUFBVSxVQUFVLE9BQU87QUFBQSxJQUNwQztBQXpHRSxTQUFLLFNBQVM7QUFDZCxTQUFLLEtBQUssSUFBSSxTQUFTLE1BQU07QUFBQSxFQUMvQjtBQUFBLEVBRUEsTUFBTSxTQUF3QjtBQUM1QixVQUFNLE9BQU87QUFDYixVQUFNLEVBQUUsV0FBVztBQUVuQixRQUFJLFVBQVUsY0FBYyxNQUFNO0FBQ2hDLGlCQUNFLFlBQVksTUFBTSxLQUFLLEtBQUssR0FDNUIsSUFBSSxRQUFRLFFBQVEsV0FDaEIsSUFBSSxRQUFRLFFBQVEsU0FBUyxNQUMzQixJQUNBLE9BQU8sU0FBUyxhQUNsQixHQUNOO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUFBLEVBRUEsY0FBYztBQUNaLFdBQU87QUFBQSxFQUNUO0FBQUEsRUFDQSxpQkFBaUI7QUFDZixXQUFPO0FBQUEsRUFDVDtBQUFBLEVBR0EsTUFBTSxTQUF3QjtBQUFBLEVBQUU7QUFBQSxFQUVoQyxVQUF5QjtBQWxGM0I7QUFtRkksZUFBSyxTQUFMLG1CQUFXO0FBQ1gsV0FBTyxRQUFRLFFBQVE7QUFBQSxFQUN6QjtBQUFBLEVBRUEsT0FBTyxNQUE2QjtBQUNsQyxVQUFNLEVBQUUsV0FBVztBQUNuQixVQUFNLEVBQUUsZUFBZSxtQkFBbUIsT0FBTztBQUNqRCxRQUFJLENBQUMsY0FBYztBQUFRLGFBQU87QUFHbEMsVUFBTSxLQUFLLFNBQVMsTUFBTTtBQUMxQixRQUFJLElBQUk7QUFDTixZQUFNLE9BQU8sR0FBRyxLQUFLLElBQUk7QUFDekIsVUFBSSxDQUFDO0FBQU0sZUFBTztBQUNsQixpQkFBVyxPQUFPLGVBQWU7QUFDL0IsY0FBTSxRQUFRLEtBQUs7QUFFbkIsY0FBTSxNQUNKLE9BQU8sVUFBVSxXQUFXLGFBQWEsS0FBSyxJQUFJO0FBQ3BELFlBQUk7QUFBTyxpQkFBTyxpQkFBaUIsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJO0FBQUEsTUFDMUQ7QUFBQSxJQUNGLE9BQU87QUFDTCxZQUFNLE9BQU8sSUFBSSxjQUFjLHFCQUFxQixNQUFNLEVBQUU7QUFDNUQsVUFBSSxNQUFNO0FBQ1IsY0FBTSxFQUFFLGdCQUFnQixJQUFJLGNBQWMsYUFBYSxJQUFJO0FBQzNELG1CQUFXLFlBQVksZUFBZTtBQUNwQyxnQkFBTSxRQUFRLDJDQUFjO0FBRTVCLGdCQUFNLE1BQ0osT0FBTyxVQUFVLFdBQVcsYUFBYSxLQUFLLElBQUk7QUFDcEQsY0FBSTtBQUFPLG1CQUFPLGlCQUFpQixJQUFJLEtBQUssSUFBSSxJQUFJLElBQUk7QUFBQSxRQUMxRDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBb0JBLHVCQUNFLE9BQ0EsVUFDbUI7QUFDbkIsVUFBTSxVQUFVLE1BQU0sSUFBSSxDQUFDLFNBQVMsS0FBSyxFQUFFO0FBQzNDLFdBQU8sU0FBUyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsU0FBUyxRQUFRLEVBQUUsQ0FBQztBQUFBLEVBQ25FO0FBQUEsRUFnQkEsZUFBZSxXQUF1QixVQUFrQztBQUN0RSxVQUFNLEVBQUUsV0FBVztBQUNuQixVQUFNLEVBQUUsT0FBTyxhQUFhO0FBQzVCLFVBQU0sRUFBRSxpQkFBaUIsMEJBQTBCO0FBQ25ELFFBQUksQ0FBQztBQUFPLGFBQU8sQ0FBQztBQUVwQixVQUFNLEVBQUUsYUFBYTtBQUNyQixRQUFJLENBQUMsTUFBTSxRQUFRLFFBQVE7QUFBRyxhQUFPLENBQUM7QUFDdEMsVUFBTSxpQkFBaUIsb0JBQW9CLFFBQVEsUUFBUTtBQUUzRCxXQUFPLFVBQVUsSUFBSSxDQUFDLFNBQVM7QUFDN0IsWUFBTSx1QkFBdUIsa0JBQWtCO0FBTy9DLFlBQU0sZ0JBQWdCLENBQ3BCLE1BQ0EsS0FDQSxRQUNBLFVBRUEsS0FBSyxLQUFLLFNBQVMsS0FBSyxLQUFLLEtBQzVCLEtBQUssTUFBTSxTQUFTLElBQUksUUFBUSxLQUMvQixLQUFLLFFBQVEsU0FBUyxLQUFLLE1BQU0sTUFBTSxJQUFJLEVBQUUsRUFBRTtBQUVuRCxpQkFBVyxPQUFPLGdCQUFnQjtBQUNoQyxjQUFNLFNBQVMsVUFBVSxHQUFpQjtBQUMxQyxjQUFNLFFBQVEsaUJBQWlCO0FBQy9CLGNBQU0sRUFBRSxPQUFPLGFBQWEsZUFBZTtBQUUzQyw2QkFBcUIsS0FBSyxRQUFRLE1BQy9CLE9BQU8sQ0FBQyxTQUNQLGNBQWMsTUFBTSxLQUFtQixRQUFRLEtBQUssQ0FDdEQsRUFDQyxJQUFJLENBQUMsU0FDSixLQUFLLGtCQUFrQixLQUFLLElBQUksTUFBTSxNQUFNLEtBQUssT0FBTyxDQUMxRDtBQUVGLDZCQUFxQixLQUFLLFdBQVcsU0FDbEMsT0FBTyxDQUFDLFlBQ1AsY0FBYyxTQUFTLEtBQW1CLFFBQVEsS0FBSyxDQUN6RCxFQUNDLElBQUksQ0FBQyxTQUNKLEtBQUssa0JBQWtCLEtBQUssSUFBSSxPQUFPLE1BQU0sS0FBSyxPQUFPLENBQzNEO0FBQUEsTUFDSjtBQUVBLFVBQUk7QUFBQSxRQUNGLElBQUksRUFBRSxPQUFPLElBQUksVUFBVTtBQUFBLFFBQzNCLE1BQU0sRUFBRSxPQUFPLElBQUksVUFBVTtBQUFBLFFBQzdCLE1BQU0sRUFBRSxPQUFPLElBQUksVUFBVTtBQUFBLFFBQzdCLE1BQU0sRUFBRSxPQUFPLElBQUksVUFBVTtBQUFBLFFBQzdCLE1BQU0sRUFBRSxPQUFPLElBQUksVUFBVTtBQUFBLFVBQzNCO0FBSUosT0FBQyxJQUFJLElBQUksS0FBSSxJQUFJLEVBQUUsSUFBSTtBQUFBLFFBQ3JCLEtBQUssdUJBQXVCLElBQUksRUFBRTtBQUFBLFFBQ2xDLEtBQUssdUJBQXVCLElBQUksRUFBRTtBQUFBLFFBQ2xDLEtBQUssdUJBQXVCLElBQUksR0FBRTtBQUFBLFFBQ2xDLEtBQUssdUJBQXVCLElBQUksRUFBRTtBQUFBLFFBQ2xDLEtBQUssdUJBQXVCLElBQUksRUFBRTtBQUFBLE1BQ3BDO0FBRUEsWUFBTSxhQUFnQyxDQUFDO0FBQ3ZDLFNBQUcsUUFBUSxDQUFDLFdBQVc7QUFDckIsWUFBSSxXQUFXLE1BQU0sQ0FBQyxVQUFVLE1BQU0sT0FBTyxPQUFPLEVBQUUsR0FBRztBQUN2RCxxQkFBVyxLQUFLLE1BQU07QUFBQSxRQUN4QjtBQUFBLE1BQ0YsQ0FBQztBQUNELFdBQUs7QUFFTCxZQUFNLGlCQUFpQixDQUFDLFFBQ3RCLEtBQUssS0FBSyxLQUNOLEtBQUssS0FBSyxLQUFLLElBQUksSUFDbkIsR0FBRyxLQUFLLFVBQVUsR0FBRyxHQUFHLEtBQUssR0FBRyxJQUFJLGlCQUFpQjtBQUUzRCxZQUFNLFVBQVUsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUksSUFBSSxFQUFFO0FBRXZELFVBQUk7QUFDRixnQkFBUSxRQUFRLENBQUMsT0FBTyxHQUFHLEtBQUssS0FBSyxjQUFjLENBQUM7QUFFdEQsY0FBUSxRQUFRLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFHLE1BQU0sR0FBRSxRQUFRLEVBQUUsS0FBSyxDQUFDO0FBRTVELGtDQUFLO0FBQUEsUUFDSCxFQUFFLEdBQUc7QUFBQSxRQUNMLEVBQUUsR0FBRztBQUFBLFFBQ0wsRUFBRSxHQUFHO0FBQUEsUUFDTCxFQUFFLEdBQUc7QUFBQSxRQUNMLEVBQUUsR0FBRztBQUFBLFFBQ0wsRUFBRSxHQUFHO0FBQUEsUUFDTCxFQUFFLEdBQUc7QUFBQSxRQUNMLEVBQUUsUUFBRztBQUFBLFFBQ0wsRUFBRSxHQUFHO0FBQUEsUUFDTCxFQUFFLEdBQUc7QUFBQSxNQUNQLENBQUM7QUFFRCxZQUFNLFNBQVM7QUFBQSxRQUNiO0FBQUEsVUFDRSxXQUFXO0FBQUEsVUFDWCxjQUFjO0FBQUEsVUFDZCxPQUFPLGVBQWUsSUFBSTtBQUFBLFFBQzVCO0FBQUEsUUFFQTtBQUFBLFVBQ0UsV0FBVztBQUFBLFVBQ1gsY0FBYztBQUFBLFVBQ2QsT0FBTyxlQUFlLE1BQU07QUFBQSxRQUM5QjtBQUFBLFFBRUE7QUFBQSxVQUNFLFdBQVc7QUFBQSxVQUNYLGNBQWM7QUFBQSxVQUNkLE9BQU8sZUFBZSxNQUFNO0FBQUEsUUFDOUI7QUFBQSxRQUNBO0FBQUEsVUFDRSxXQUFXO0FBQUEsVUFDWCxjQUFjO0FBQUEsVUFDZCxPQUFPLGVBQWUsTUFBTTtBQUFBLFFBQzlCO0FBQUEsUUFDQTtBQUFBLFVBQ0UsV0FBVztBQUFBLFVBQ1gsY0FBYztBQUFBLFVBQ2QsT0FBTyxlQUFlLE1BQU07QUFBQSxRQUM5QjtBQUFBLE1BQ0Y7QUFFQSxhQUFPLHNCQUFzQixJQUFJLENBQUMsVUFBVSxPQUFPLE1BQU07QUFBQSxJQUMzRCxDQUFDO0FBQUEsRUFDSDtBQUFBLEVBRUEsTUFBTSxPQUFzQjtBQUMxQixRQUFJO0FBQ0YsWUFBTSxFQUFFLFdBQVcsSUFBSSxXQUFXO0FBQ2xDLFNBQUcsUUFBUSxrQkFBa0I7QUFDN0IsZ0JBQVUsTUFBTTtBQUVoQixZQUFNLEVBQUUsY0FBYyxPQUFPO0FBRTdCLFlBQU0sV0FBVyxZQUFZO0FBQzdCLFVBQUksQ0FBQztBQUFVO0FBRWYsWUFBTSxjQUFjLEtBQUssZUFBZSxXQUFXLFFBQVEsRUFBRSxPQUMzRCxDQUFDLGNBQ0MsVUFBVSxLQUNSLENBQUMsT0FBTyxHQUFHLFVBQVUsU0FBUyxHQUFHLGFBQWEsU0FBUyxDQUN6RCxDQUNKO0FBRUEsVUFBSSxlQUFPO0FBQUEsUUFDVCxRQUFRO0FBQUEsUUFDUixPQUFPLEVBQUUsYUFBYSxZQUFZLE1BQU0sU0FBUztBQUFBLE1BQ25ELENBQUM7QUFHRCxTQUFHLE1BQU07QUFBQSxJQUNYLFNBQVMsS0FBUDtBQUNBLG1DQUFNLEdBQUc7QUFDVCxXQUFLLEdBQUcsTUFBTTtBQUFBLElBQ2hCO0FBQUEsRUFDRjtBQUNGOzs7QXFDOVNPLElBQU0sUUFBTixNQUE4QjtBQUFBLEVBTW5DLEFBQU8sWUFBWSxRQUFrQjtBQU9yQyxTQUFPLGFBQWE7QUFDcEIsU0FBTyxtQkFBbUI7QUFFMUIsU0FBTyxnQkFBZ0I7QUFFdkIsU0FBTyxlQUFlLFlBQVksTUFBTSxhQUFhLEtBQUssTUFBTTtBQUVoRSxTQUFPLGVBQWUsQ0FBQyxNQUFvQixJQUFJLEtBQUssVUFDbEQsYUFBYSxHQUFHLEdBQUcsSUFBSTtBQUV6QixTQUFPLGtCQUFrQixDQUFDLFFBQWtCLElBQUksS0FBSyxVQUNuRCxnQkFBZ0IsR0FBRyxNQUFNO0FBRTNCLFNBQU8sY0FBYyxDQUNuQixXQUFXLDJCQUFZLE1BQVosbUJBQWUsYUFDMUIsSUFBSSxLQUFLLFVBQ04sWUFBWSxHQUFHLFFBQVE7QUFFNUIsU0FBTyxjQUFjLENBQUMsVUFBc0IsWUFBWSxPQUFPLFNBQVMsU0FDdEUsWUFBWSxVQUFVLFdBQVcsTUFBTTtBQUV6QyxTQUFPLHNCQUFzQixDQUMzQixXQUFXLDJCQUFZLE1BQVosbUJBQWUsZ0JBQ3ZCLG9CQUFvQixLQUFLLFFBQVEsUUFBUTtBQUU5QyxTQUFPLFlBQVksQ0FBQyxRQUFvQixVQUFVLEdBQUc7QUFFckQsU0FBTyxlQUFlLENBQUMsVUFBa0I7QUFDdkMsWUFBTSxFQUFFLGFBQWEsYUFBYSxLQUFLLE9BQU8sU0FBUyxXQUFXLEtBQUs7QUFDdkUsYUFBTyxhQUFhLEtBQUssT0FBTyxTQUFTLFdBQVcsT0FBTyxRQUFRO0FBQUEsSUFDckU7QUFFQSxTQUFPLGVBQWUsQ0FBQyxVQUNyQixhQUFhLEtBQUssT0FBTyxTQUFTLFdBQVcsS0FBSztBQUNwRCxTQUFPLFlBQVksQ0FBQyxRQUNsQixVQUFVLEtBQUssT0FBTyxTQUFTLFdBQVcsb0JBQU8sS0FBSztBQXhDdEQsU0FBSyxTQUFTO0FBQ2QsU0FBSyxRQUFRLEtBQUssT0FBTztBQUN6QixTQUFLLFVBQVUsS0FBSyxPQUFPO0FBQUEsRUFDN0I7QUFBQSxFQXVDQSxBQUFPLGFBQ0wsSUFDQTtBQUNBLGlCQUFhLEtBQUssT0FBTyxTQUFTLFdBQVcsRUFBRTtBQUFBLEVBQ2pEO0FBQ0Y7OztBQzdFQSx3QkFBc0Q7OztBQ0F0RCx3QkFBNEI7QUFDNUIsd0JBT087OztBQ1JQLHdCQUE2Qjs7O3FCQ0NMO3dCQUNROzs7O1FDcUN2QixLQUFNLEdBQUMsVUFBVTtBQUFDLGFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkFLaEIsSUFBWSxHQUFDLElBQU8sSUFBRSxJQUFNLEdBQUMsUUFBUSxHQUFHLElBQUksSUFBQTs7Ozs7Ozs7OztBQUZqRCxhQUlNLFFBQUEsS0FBQSxNQUFBO0FBSEosYUFFTSxLQUFBLEdBQUE7Ozs7K0NBREgsS0FBWSxHQUFDLEtBQU8sSUFBRSxLQUFNLEdBQUMsUUFBUSxHQUFHLElBQUksSUFBQTtBQUFBLGlCQUFBLEdBQUEsT0FBQTs7Ozs7Ozs7Ozs7Ozs7OztBQUpqRCxhQUF1RSxRQUFBLEtBQUEsTUFBQTs7Ozs7Ozs7Ozs7O2dCQXlCcEUsSUFBWSxHQUFDLElBQU8sSUFBRSxJQUFNLEdBQUMsUUFBUSxHQUFHLElBQUksSUFBQTs7Ozs7Ozs7OztBQUZqRCxhQUlNLFFBQUEsS0FBQSxNQUFBO0FBSEosYUFFSSxLQUFBLEdBQUE7Ozs7K0NBREQsS0FBWSxHQUFDLEtBQU8sSUFBRSxLQUFNLEdBQUMsUUFBUSxHQUFHLElBQUksSUFBQTtBQUFBLGlCQUFBLEdBQUEsT0FBQTs7Ozs7Ozs7Ozs7Z0JBTjVDLElBQVksR0FBQyxJQUFPLElBQUUsSUFBTSxHQUFDLE9BQU8sSUFBSSxJQUFBOzs7Ozs7Ozs7O0FBRjdDLGFBSU0sUUFBQSxLQUFBLE1BQUE7QUFISixhQUVJLEtBQUEsR0FBQTs7OzsrQ0FERCxLQUFZLEdBQUMsS0FBTyxJQUFFLEtBQU0sR0FBQyxPQUFPLElBQUksSUFBQTtBQUFBLGlCQUFBLEdBQUEsT0FBQTs7Ozs7Ozs7Ozs7aUJBdkJyQyxpQkFBaUIsSUFBRyxNQUFBOzs7aUJBQU8sY0FBYyxJQUFNLEdBQUMsSUFBSSxJQUFBOzs7Ozs7OztpQkFnQnRELElBQVksR0FBQyxjQUFjLElBQU0sR0FBQyxJQUFJLEdBQUcsSUFBTSxHQUFDLE9BQU8sSUFBSSxJQUFBOzs7Ozs7Ozs7Ozs7OztrQkFkOUQsSUFBRyxPQUFLLFFBQUksbUJBQUEsR0FBQTs7UUFrQlosS0FBRyxPQUFLO0FBQU0sYUFBQTtRQU1ULEtBQUcsT0FBSztBQUFNLGFBQUE7Ozs7Ozs7Z0JBMUJ0QixTQUFPOztnQkFBdUIsTUFBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VBbUNXLElBQUcsT0FBQTtBQUFBLDRCQUFBLE1BQUEsSUFBQSxHQUFBLEtBQUEsTUFBQSxDQUFBOzs7OztBQW5DcEQsYUFBdUUsUUFBQSxJQUFBLE1BQUE7Ozs7OztBQUN2RSxhQTZFTSxRQUFBLE1BQUEsTUFBQTs7OztBQWpFSixhQU1NLE1BQUEsSUFBQTtBQUxKLGFBSU0sTUFBQSxHQUFBO0FBSEYsYUFFRCxLQUFBLE1BQUE7Ozs7OztBQWtCTCxhQUlTLE1BQUEsTUFBQTtBQUhQLGFBQThCLFFBQUEsT0FBQTtBQUM5QixhQUFrQyxRQUFBLE9BQUE7QUFDbEMsYUFBa0MsUUFBQSxPQUFBOzRCQUhXLElBQUcsRUFBQTs7QUFNbEQsYUFLRSxNQUFBLEtBQUE7OzZCQURZLElBQU8sRUFBQTs7QUFHckIsYUE2QkMsTUFBQSxNQUFBOzs7Ozs7Ozs7OztnREE3RVMsaUJBQWlCLEtBQUcsTUFBQTtBQUFBLGlCQUFBLElBQUEsUUFBQTtnREFBTyxjQUFjLEtBQU0sR0FBQyxJQUFJLElBQUE7QUFBQSxpQkFBQSxJQUFBLFFBQUE7VUFFekQsS0FBRyxPQUFLLE1BQUk7Ozs7Ozs7Ozs7OztnREFjVCxLQUFZLEdBQUMsY0FBYyxLQUFNLEdBQUMsSUFBSSxHQUFHLEtBQU0sR0FBQyxPQUFPLElBQUksSUFBQTtBQUFBLGlCQUFBLElBQUEsUUFBQTs7Ozs7Ozs7Ozs7Ozs4QkFtQnBCLEtBQUcsRUFBQTs7d0NBVXBDLEtBQU8sSUFBQTsrQkFBUCxLQUFPLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRRHpFVixVQUEwQjtRQUMxQixhQUFvQjtRQUNwQixXQUFjO1FBQ2QsU0FBVztRQUNYLFFBQTJCO01BT2xDO01BR0EsVUFBVSxJQUFJLFVBQVUsV0FBVyxLQUFLLEtBQUs7UUFFM0MsZUFBWSxDQUNoQixVQUNBLFFBQVEsT0FBTyxPQUNmLFVBQVUsVUFBSyxHQUVaLElBQUksT0FBTyxLQUFLLE1BQU0sUUFBUyxXQUFVLElBQUksRUFBQyxDQUFBLE1BQy9DLFVBQVUsWUFBVyxZQUFZLFNBQVMsUUFBTzs7QUN5Q04sVUFBRyxhQUFBLElBQUE7Ozs7O0FBU3JDLGdCQUFPOzs7OztBQUNOLGNBQU8sS0FBQTs7OytCQUlGLE1BQUM7UUFDWixRQUFRLFFBQVEsT0FBTyxVQUFVLEdBQUM7VUFDaEMseUJBQ0YsOERBQThEOzs7O2NBS3hELFVBQU8sTUFBUyxJQUFJLE1BQU0sS0FBSyxJQUFJO2NBQ25DLFFBQVEsUUFBUSxNQUFNLElBQUk7Y0FDMUIsU0FBUyxRQUFRLE9BQU8sT0FBTyxTQUFTLE9BQU8sU0FBUztjQUV4RCxRQUNKLFFBQVEsT0FDSixPQUFPLFFBQVEsSUFDZixRQUFRLFNBQ1IsT0FBTyxRQUFRLElBQ2YsT0FBTztBQUViLGNBQU0sT0FBTyxRQUFRLEdBQUcsYUFBYSxTQUFTLEtBQUssQ0FBQTtjQUM3QyxJQUFJLE1BQU0sT0FBTyxNQUFNLE1BQU0sS0FBSyxJQUFJLENBQUE7QUFDNUMsY0FBTSxNQUFLO2VBQ0o7QUFDUCxrQ0FBTSxHQUFHO1lBQ0wseUJBQU8sNENBQTRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FGbkcxRCxJQUFNLHNCQUFOLGNBQWtDLHdCQUFNO0FBQUEsRUFRN0MsWUFDRSxRQUNBLFFBQ0EsTUFDQSxLQUNBO0FBQ0EsVUFBTSxHQUFHO0FBQ1QsU0FBSyxTQUFTO0FBQ2QsU0FBSyxRQUFRO0FBQ2IsU0FBSyxTQUFTO0FBQ2QsU0FBSyxPQUFPO0FBQ1osU0FBSyxNQUFNO0FBQUEsRUFDYjtBQUFBLEVBRUEsU0FBUztBQUNQLFVBQU0sRUFBRSxjQUFjO0FBQ3RCLGNBQVUsTUFBTTtBQUVoQixTQUFLLFFBQVEsSUFBSSx5QkFBaUI7QUFBQSxNQUNoQyxRQUFRO0FBQUEsTUFDUixPQUFPO0FBQUEsUUFDTCxPQUFPO0FBQUEsUUFDUCxVQUFVLEtBQUssT0FBTztBQUFBLFFBQ3RCLFFBQVEsS0FBSztBQUFBLFFBQ2IsTUFBTSxLQUFLO0FBQUEsUUFDWCxLQUFLLEtBQUs7QUFBQSxNQUNaO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUFBLEVBRUEsVUFBVTtBQUNSLFNBQUssTUFBTSxTQUFTO0FBQ3BCLFNBQUssVUFBVSxNQUFNO0FBQUEsRUFDdkI7QUFDRjs7O0FEaENPLElBQU0sMkJBQU4sY0FBdUMsb0NBQTBCO0FBQUEsRUFRdEUsWUFBWSxRQUFrQixjQUFzQjtBQUNsRCxVQUFNLEdBQUc7QUFDVCxTQUFLLFNBQVM7QUFDZCxTQUFLLFdBQVcsS0FBSyxPQUFPO0FBQzVCLFNBQUssZUFBZTtBQUVwQixVQUFNLGlCQUFpQixDQUFDLFFBQXVCO0FBRTdDLFdBQUssUUFBUSxnQkFBZ0IsR0FBRztBQUNoQyxhQUFPO0FBQUEsSUFDVDtBQUNBLFNBQUssTUFBTSxTQUFTLENBQUMsR0FBRyxVQUFVLGNBQWM7QUFDaEQsU0FBSyxNQUFNLFNBQVMsQ0FBQyxPQUFPLEdBQUcsV0FBVyxjQUFjO0FBQ3hELFNBQUssTUFBTSxTQUFTLENBQUMsT0FBTyxHQUFHLGNBQWMsY0FBYztBQUMzRCxTQUFLLE1BQU0sU0FBUyxDQUFDLE9BQU8sR0FBRyxhQUFhLGNBQWM7QUFBQSxFQUM1RDtBQUFBLEVBRUEsTUFBTSxTQUF3QjtBQUM1QixTQUFLLGVBQWUsZ0JBQWdCO0FBQ3BDLFNBQUssZ0JBQWdCO0FBQUEsTUFDbkIsRUFBRSxTQUFTLGlCQUFpQixTQUFTLGVBQWU7QUFBQSxNQUNwRCxFQUFFLFNBQVMsa0JBQWEsU0FBUyxhQUFhO0FBQUEsTUFDOUMsRUFBRSxTQUFTLGtCQUFhLFNBQVMsY0FBYztBQUFBLE1BQy9DLEVBQUUsU0FBUyxrQ0FBNkIsU0FBUyxZQUFZO0FBQUEsTUFDN0QsRUFBRSxTQUFTLFVBQVUsU0FBUyxjQUFjO0FBQUEsSUFDOUMsQ0FBQztBQUVELFNBQUssT0FBTyxJQUFJLGNBQWMscUJBQXFCLEtBQUssY0FBYyxFQUFFO0FBQ3hFLFFBQUksQ0FBQyxLQUFLO0FBQU0sV0FBSyxRQUFRLENBQUM7QUFFOUIsWUFBUSxJQUFJLElBQUk7QUFDaEIsVUFBTSxVQUFVLE1BQU0sSUFBSSxNQUFNLFdBQVcsS0FBSyxJQUFJO0FBQ3BELFNBQUssUUFBUSxRQUFRLE1BQU0sSUFBSTtBQUUvQixTQUFLLFlBQVksSUFBSSxjQUFjLGFBQWEsS0FBSyxJQUFJLEVBQUU7QUFFM0QsWUFBUSxJQUFJLElBQUk7QUFDaEIsVUFBTSxPQUFPO0FBQUEsRUFDZjtBQUFBLEVBRUEsV0FBcUI7QUFDbkIsVUFBTSxRQUFRLEtBQUssVUFDaEIsSUFBSSxDQUFDLFNBQVM7QUFDYixZQUFNLElBQUksS0FBSyxTQUFTLE1BQU07QUFDOUIsYUFBTyxFQUFFLEdBQUcsTUFBTSxLQUFLLE1BQU0sR0FBRztBQUFBLElBQ2xDLENBQUMsRUFDQSxJQUFJLENBQUMsU0FBUztBQUNiLFlBQU0sU0FBUyxLQUFLLEtBQUssTUFBTSxJQUFJO0FBQ25DLFlBQU0sUUFBUSxPQUFPLEdBQUc7QUFDeEIsWUFBTSxPQUFPLE9BQU8sTUFBTSxDQUFDLEVBQUUsS0FBSyxJQUFJO0FBRXRDLGFBQU8sRUFBRSxPQUFPLE1BQU0sUUFBUSxLQUFLLEVBQUU7QUFBQSxJQUN2QyxDQUFDO0FBRUgsZ0NBQUssS0FBSztBQUNWLFdBQU87QUFBQSxFQUNUO0FBQUEsRUFFQSxZQUFZLE1BQXNCO0FBQ2hDLFdBQU8sR0FBRyxJQUFJLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxLQUFLLElBQUk7QUFBQSxFQUM5RDtBQUFBLEVBRUEsaUJBQWlCLE1BQTBCLElBQWlCO0FBQzFELFVBQU0saUJBQWlCLE1BQU0sRUFBRTtBQUMvQixPQUFHLFlBQVksR0FBRyxJQUFJLE9BQU8sS0FBSyxLQUFLLEtBQUssTUFBTSxjQUNoRCxLQUFLLEtBQUssSUFDWjtBQUFBLEVBQ0Y7QUFBQSxFQUVBLE1BQU0sV0FBVyxNQUE2QjtBQUM1QyxRQUFJO0FBQ0YsV0FBSyxNQUFNLE9BQU8sS0FBSyxRQUFRLENBQUM7QUFDaEMsV0FBSyxVQUFVLE9BQU8sS0FBSyxRQUFRLENBQUM7QUFDcEMsWUFBTSxJQUFJLE1BQU0sT0FBTyxLQUFLLE1BQU0sS0FBSyxNQUFNLEtBQUssSUFBSSxDQUFDO0FBQ3ZELFVBQUkseUJBQU8sMEJBQTBCO0FBQUEsSUFDdkMsU0FBUyxLQUFQO0FBQ0EsbUNBQU0sR0FBRztBQUNULFVBQUkseUJBQU8sNENBQTRDO0FBQUEsSUFDekQ7QUFBQSxFQUNGO0FBQUEsRUFFQSxhQUFhLE1BQWMsS0FBdUM7QUFDaEUsUUFBSSxlQUFlLGlCQUFpQixJQUFJLFFBQVEsVUFBVTtBQUN4RCxXQUFLLFdBQVcsSUFBSTtBQUFBLElBQ3RCLFdBQ0UsZUFBZSxpQkFDZixJQUFJLE9BQU8sV0FDWCxJQUFJLFVBQ0o7QUFDQSxZQUFNLE9BQU8sSUFBSSxVQUFVLG9CQUFvQiw4QkFBWTtBQUMzRCxZQUFNLEVBQUUsV0FBVyxzQkFBUSxDQUFDO0FBQzVCLFVBQUksQ0FBQztBQUFRO0FBRWIsV0FBSyxLQUFLLFNBQVMsS0FBSyxNQUFNLEVBQUUsUUFBUSxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBQzlELGFBQU8sVUFBVSxFQUFFLE1BQU0sS0FBSyxRQUFRLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztBQUFBLElBQzVELFdBQVcsZUFBZSxpQkFBaUIsZUFBZSxZQUFZO0FBQ3BFLFVBQUk7QUFDSixVQUFJLGVBQWUsY0FBYyxJQUFJLFFBQVE7QUFBUyxjQUFNO0FBQzVELFVBQUksZUFBZTtBQUFlLFlBQUksSUFBSSxRQUFRO0FBQVMsZ0JBQU07QUFBQTtBQUNqRSxVQUFJLGVBQWUsaUJBQWlCLElBQUksVUFBVTtBQUNoRCxZQUFJLElBQUksUUFBUTtBQUFXLGdCQUFNO0FBQ2pDLFlBQUksSUFBSSxRQUFRO0FBQWEsZ0JBQU07QUFDbkMsWUFBSSxJQUFJLFFBQVE7QUFBYyxnQkFBTTtBQUFBLE1BQ3RDO0FBRUEsVUFBSSxvQkFDRixLQUFLLFFBQ0wsTUFDQSxLQUFLLE1BQ0wsR0FDRixFQUFFLEtBQUs7QUFDUCxXQUFLLE1BQU07QUFBQSxJQUNiO0FBQUEsRUFDRjtBQUNGOzs7QUR6SU8sSUFBTSw2QkFBTixjQUF5QyxvQ0FBMEI7QUFBQSxFQUl4RSxZQUFZLFFBQWtCO0FBQzVCLFVBQU0sR0FBRztBQUNULFNBQUssU0FBUztBQUNkLFNBQUssV0FBVyxLQUFLLE9BQU87QUFBQSxFQUM5QjtBQUFBLEVBRUEsU0FBZTtBQUNiLFNBQUssZUFBZSxZQUFZO0FBQ2hDLFVBQU0sRUFBRSxtQkFBbUIsS0FBSztBQUNoQyxRQUFJLGVBQWUsV0FBVyxHQUFHO0FBQy9CLFdBQUssTUFBTTtBQUNYLFVBQUkseUJBQU8sMEJBQTBCO0FBQUEsSUFDdkMsV0FDRSxlQUFlLFdBQVcsS0FDMUIsQ0FBQyxlQUFlLEdBQUcsU0FBUyxHQUFHLEdBQy9CO0FBQ0EsV0FBSyxNQUFNO0FBQ1gsVUFBSSx5QkFDRixLQUFLLFFBQ0wsZUFBZSxFQUNqQixFQUFFLEtBQUs7QUFBQSxJQUNULE9BQU87QUFDTCxZQUFNLE9BQU87QUFBQSxJQUNmO0FBQUEsRUFDRjtBQUFBLEVBRUEsV0FBcUI7QUFDbkIsVUFBTSxFQUFFLG1CQUFtQixLQUFLO0FBQ2hDLFFBQUksZUFBZSxVQUFVLEtBQUssZUFBZSxHQUFHLFNBQVMsR0FBRyxHQUFHO0FBRWpFLFVBQUksU0FBUyxlQUFlLEdBQUcsTUFBTSxHQUFHLEVBQUU7QUFDMUMsVUFBSSxJQUFJLFFBQVEsUUFBUSxZQUFZLFFBQVc7QUFDN0MsWUFBSSxRQUFRLElBQUksUUFBUSxRQUFRLFNBQVMsSUFBSSxNQUMzQyxJQUFJLFNBQ047QUFDQSxlQUFPLE1BQU0sT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssSUFBSTtBQUFBLE1BQ2xELE9BQU87QUFDTCxZQUFJLHlCQUFPLHFDQUFxQztBQUFBLE1BQ2xEO0FBQUEsSUFDRjtBQUFPLGFBQU87QUFBQSxFQUNoQjtBQUFBLEVBRUEsWUFBWSxNQUFzQjtBQUNoQyxXQUFPLEdBQUc7QUFBQSxFQUNaO0FBQUEsRUFFQSxpQkFBaUIsTUFBMEIsSUFBaUI7QUFDMUQsVUFBTSxpQkFBaUIsTUFBTSxFQUFFO0FBQUEsRUFDakM7QUFBQSxFQUVBLGFBQWEsTUFBYyxLQUF1QztBQUNoRSxRQUFJLHlCQUF5QixLQUFLLFFBQVEsSUFBSSxFQUFFLEtBQUs7QUFDckQsU0FBSyxNQUFNO0FBQUEsRUFDYjtBQUNGOzs7QUsvREEsd0JBQXFCO0FBQ3JCLHdCQUFxRDs7O3dCQ0FsQjs7Ozs7Ozs7O0FDZ0JuQyxhQUE4QyxRQUFBLEtBQUEsTUFBQTs7Ozs7Ozs7Ozs7Ozs7TUFqQjdCLFlBQUEsUUFBQSxLQUFBLGFBQUEsU0FBQSxTQUFBLFlBQUEsR0FBQSxXQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UURJSixnQkFBWTtzQkFFRyxNQUFZOztZQUM5QixPQUFPLElBQUksY0FBYyxxQkFBcUIsTUFBTSxFQUFFO21CQUMvQyxJQUFJLE1BQU0sV0FBVyxJQUFJOzs7TUFHcEM7QUFDSixVQUFPLE1BQVksVUFBQSxRQUFBLFFBQUEsUUFBQSxhQUFBO0FBQ2pCLHVDQUFpQixlQUFjLE1BQU8sV0FBVyxLQUFJLEdBQUcsSUFBSSxPQUFNLElBQUk7Ozs7QUNJbEMsV0FBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCRVduQyxJQUFHLEVBQUE7Z0JBQUMsTUFBSTtnQkFBQyxJQUFRLEVBQUE7OztBQUF0QixhQUE0QixRQUFBLElBQUEsTUFBQTs7Ozs7OztxQkFBZCxLQUFRLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7UUFLYixLQUFPLE9BQUssVUFBVSxLQUFPLE9BQUs7QUFBUSxhQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkF1QnRCLElBQU0sTUFBRzs7Ozs7aUJBU3pCLFlBQVksSUFBSSxLQUFFLElBQVEsRUFBQSxJQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyREFESixXQUFVLElBQUksR0FBQSxJQUFJLEtBQUssbUJBQWUsaUJBQUE7Ozs7QUFUbkUsYUFhTSxRQUFBLEtBQUEsTUFBQTtBQVpKLGFBQXdDLEtBQUEsR0FBQTs7O0FBRXhDLGFBU08sS0FBQSxJQUFBO0FBSEwsYUFFSSxNQUFBLEVBQUE7Ozs7Ozs7Ozs7Ozs7Z0RBVmUsSUFBTSxNQUFHO0FBQUcsaUJBQUEsSUFBQSxRQUFBO2dEQVM1QixZQUFZLElBQUksS0FBRSxJQUFRLEVBQUEsSUFBQTtBQUFBLGlCQUFBLElBQUEsUUFBQTs2RUFESixXQUFVLElBQUksR0FBQSxJQUFJLEtBQUssbUJBQWUsb0JBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQTdCNUMsSUFBTSxNQUFBOzs7Ozs7O2lCQVlqQixZQUFZLElBQUksS0FBRSxJQUFRLEVBQUEsSUFBQTs7Ozs7Ozs7Ozs7Ozs7OzsrREFJWixJQUFJLElBQUEsRUFBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7OzJEQUxFLFdBQVUsSUFBSSxHQUFBLElBQUksS0FBSyxtQkFBZSxpQkFBQTs7MkNBVnJELElBQU8sT0FBSzs7OztBQUY3QixhQW1CTSxRQUFBLEtBQUEsTUFBQTtBQWxCSixhQUFrQyxLQUFBLEdBQUE7OztBQUNsQyxhQWdCVSxLQUFBLFFBQUE7QUFmUixhQWFVLFVBQUEsT0FBQTtBQVhSLGFBVU8sU0FBQSxJQUFBO0FBSkwsYUFHQyxNQUFBLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OERBYmMsSUFBTSxNQUFBO0FBQUEsaUJBQUEsSUFBQSxRQUFBOzhEQVlqQixZQUFZLElBQUksS0FBRSxJQUFRLEVBQUEsSUFBQTtBQUFBLGlCQUFBLElBQUEsUUFBQTt5RkFETixXQUFVLElBQUksR0FBQSxJQUFJLEtBQUssbUJBQWUsb0JBQUE7Ozs7O3NDQUs1QyxJQUFJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkFuQjdCLGdCQUFnQixJQUFNLEtBQUUsSUFBSSxLQUFFLElBQUssSUFBRSxJQUFHLElBQUUsSUFBRyxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7a0JBQTdDLGdCQUFnQixLQUFNLEtBQUUsS0FBSSxLQUFFLEtBQUssSUFBRSxLQUFHLElBQUUsS0FBRyxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQUxqRCxJQUFLLE9BQUssU0FBSyxtQkFBQSxHQUFBO21CQUlYLElBQUs7O2lDQUFWLFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFEUixhQTBDTSxRQUFBLEtBQUEsTUFBQTs7Ozs7OztVQTdDRCxLQUFLLE9BQUs7QUFBSyxpQkFBQSxFQUFBLE1BQUEsS0FBQTs7cUJBSVgsS0FBSzs7bUNBQVYsUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7NEJBQUosUUFBSSxJQUFBLFlBQUEsUUFBQSxLQUFBLEdBQUE7Ozs7Ozs7OztxQ0FBSixRQUFJLEtBQUEsR0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FEbkJLLFdBQWdCO1FBQ2hCLE9BQWU7UUFDZixVQUF5QjtRQUN6QixVQUFlO1FBQ2YsY0FBVztRQUNYLGNBQVc7UUFDWCxhQUFnQjtRQUNoQixpQkFBNkI7VUFFaEMsYUFBYTtVQUNiLE9BQU8sU0FBUyxRQUFRO1FBRTFCLGlCQUFpQixJQUFJLFVBQVUsV0FBVztzQ0NpQmpCLE1BQUMsTUFBVyxhQUFhLE9BQU0sQ0FBQztvQ0FDbEMsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLEtBQUk7d0NBa0I1QyxNQUFDLE1BQVcsYUFBYSxPQUFNLENBQUM7c0NBQ2xDLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixLQUFJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUozQzlELHdCQUF3QixRQUFrQjtBQUMvQyxRQUFNLEVBQUUsVUFBVSxPQUFPO0FBQ3pCLFFBQU0sRUFBRSxXQUFXLHNCQUFzQjtBQUV6QyxTQUFPLENBQ0wsUUFDQSxJQUNBLFFBQ0c7QUExQlA7QUEyQkksT0FBRyxRQUFRLFdBQVc7QUFDdEIsVUFBTSxlQUFlLHFCQUFxQixNQUFNO0FBQ2hELFVBQU0sTUFBTSxlQUFlLFFBQVEsWUFBWTtBQUUvQyxRQUFJLFFBQVEsSUFBSTtBQUNkLFNBQUcsWUFBWTtBQUNmLFNBQUcsTUFBTTtBQUNUO0FBQUEsSUFDRjtBQUVBLFFBQUksT0FBTSxHQUNSLE9BQU07QUFDUixRQUFJLEVBQUUsT0FBTyxLQUFLLFFBQVEsTUFBTSxTQUFTLFNBQVM7QUFDbEQsUUFBSSxVQUFVLFFBQVc7QUFDdkIsWUFBTSxTQUFTLFNBQVMsTUFBTSxFQUFFO0FBQ2hDLFVBQUksQ0FBQyxNQUFNLE1BQU07QUFBRyxlQUFNO0FBQzFCLFlBQU0sU0FBUyxTQUFTLE1BQU0sRUFBRTtBQUNoQyxVQUFJLENBQUMsTUFBTSxNQUFNO0FBQUcsZUFBTTtBQUFBLElBQzVCO0FBR0EsVUFBTSxXQUFXLElBQUksY0FBYyxxQkFDakMsSUFBSSxZQUNKLEVBQ0Y7QUFDQSxVQUFNLEVBQUUsYUFBYTtBQUVyQixRQUFJLFFBQVE7QUFDWixRQUFJLFNBQVMsUUFBVztBQUN0QixVQUFJO0FBQ0YsY0FBTSxNQUFNLFNBQVMsTUFBTTtBQUMzQixZQUFJLEtBQUs7QUFDUCxnQkFBTSxRQUFRLFVBQUksVUFBVSxJQUFJLE1BQWxCLG1CQUFxQjtBQUNuQyxrQkFBUSxNQUFNLElBQUksVUFBVTtBQUFBLFFBQzlCO0FBQU8sY0FBSSx5QkFBTyw4Q0FBOEM7QUFBQSxNQUNsRSxTQUFTLEdBQVA7QUFDQSxZQUFJLHlCQUFPLGNBQWMsZUFBZTtBQUFBLE1BQzFDO0FBQUEsSUFDRjtBQUVBLFVBQU0sU0FBUyxVQUFVLEdBQUc7QUFDNUIsVUFBTSxNQUNKLFlBQVksUUFDUixhQUFhLE9BQU8sT0FBTyxHQUFHLElBQzlCLGFBQWEsT0FBTyxPQUFPLEtBQUssTUFBTTtBQUM1QyxVQUFNLFNBQVMsb0JBQW9CLEtBQUssU0FBUztBQUVqRCxVQUFNLFlBQVksMEJBQVUsVUFBVSxTQUFTO0FBQy9DLFVBQU0sWUFBWSxnQkFBZ0IsYUFBYSxRQUFRLEdBQUcsR0FBRyxTQUFTO0FBR3RFLFVBQU0sV0FBVyxZQUFZLFdBQVcsUUFBUTtBQUNoRCxVQUFNLFNBQVEsWUFBWSxVQUFVLE9BQU8saUJBQWlCO0FBQzVELGdDQUFLLEVBQUUsVUFBVSxjQUFNLENBQUM7QUFFeEIsVUFBTSxRQUFRLGlCQUFpQixRQUFPLElBQUk7QUFFMUMsWUFBUSxhQUFhO0FBQUEsV0FDZDtBQUNILFlBQUksZUFBTztBQUFBLFVBQ1QsUUFBUTtBQUFBLFVBQ1IsT0FBTztBQUFBLFlBQ0w7QUFBQSxZQUNBO0FBQUEsWUFDQTtBQUFBLFlBQ0E7QUFBQSxZQUNBO0FBQUEsWUFDQTtBQUFBLFlBQ0E7QUFBQSxZQUNBO0FBQUEsVUFDRjtBQUFBLFFBQ0YsQ0FBQztBQUNEO0FBQUEsV0FDRztBQUNILHVCQUNFLFFBQ0EsSUFDQSxjQUNBLE9BQ0EsT0FDQSxVQUNBLE1BQ0EsSUFDRjtBQUNBO0FBQUE7QUFHSixPQUFHLE1BQU07QUFBQSxFQUNYO0FBQ0Y7QUFPQSxJQUFNLGNBQWMsQ0FBQyxVQUNuQixVQUFVLFNBQVMsT0FBTyxVQUFVLFVBQVUsUUFBUTtBQUV4RCw4QkFBOEIsUUFBaUM7QUFDN0QsUUFBTSxRQUFRLE9BQU8sTUFBTSxJQUFJO0FBQy9CLFFBQU0sV0FBVyxDQUFDLFVBQWM7QUFoSWxDO0FBaUlJLG1DQUNHLEtBQUssQ0FBQyxNQUFNLEVBQUUsV0FBVyxHQUFHLFFBQU8sQ0FBQyxNQUR2QyxtQkFFSSxNQUFNLFNBRlYsbUJBRWlCLE9BRmpCLG1CQUdJO0FBQUE7QUFFTixRQUFNLFVBQ0osQ0FBQztBQUVILG1CQUFpQixRQUFRLENBQUMsVUFBVTtBQUNsQyxVQUFNLFFBQVEsU0FBUyxLQUFLO0FBQzVCLFlBQVEsU0FBUyxZQUFZLEtBQUs7QUFBQSxFQUNwQyxDQUFDO0FBRUQsVUFBUSxTQUFTLFFBQVEsU0FDckIsYUFBYSxRQUFRLE1BQWdCLElBQ3JDO0FBRUosTUFBSSxRQUFRLE9BQU87QUFDakIsVUFBTSxRQUFTLFFBQVEsTUFBaUIsTUFBTSxjQUFjO0FBQzVELFlBQVEsUUFBUSxDQUFDLE1BQU0sSUFBSSxNQUFNLEVBQUU7QUFBQSxFQUNyQztBQUVBLFNBQU87QUFDVDtBQUVBLHdCQUF3QixRQUFrQixjQUErQjtBQTFKekU7QUEySkUsUUFBTSxFQUFFLEtBQUssUUFBUSxhQUFNLE9BQU8sT0FBTyxNQUFNLFNBQVMsTUFBTSxZQUM1RDtBQUNGLFFBQU0sRUFBRSxjQUFjLE9BQU87QUFDN0IsTUFBSSxNQUFNO0FBRVYsTUFBSSxDQUFDLGdCQUFnQixTQUFTLEtBQUk7QUFDaEMsV0FBTyxlQUFlLHdEQUF1RCxnQkFBZ0IsSUFDM0YsQ0FBQyxVQUFTLFNBQVMsY0FDckIsRUFBRSxLQUFLLElBQUk7QUFFYixRQUFNLFdBQVcsV0FBVyxTQUFTLEdBQUc7QUFDeEMsTUFBSSxDQUFDO0FBQ0gsV0FBTyxjQUFjO0FBRXZCLFFBQU0sWUFBWSxVQUFVLFNBQVM7QUFDckMsU0FBQyxNQUFNLEVBQUUsS0FBSyxNQUFkLG1CQUFpQixRQUFRLENBQUMsTUFBTTtBQUM5QixRQUFJLE1BQU0sVUFBYSxDQUFDLFVBQVUsU0FBUyxDQUFDO0FBQzFDLGFBQU8saUJBQWlCO0FBQUEsRUFDNUI7QUFFQSxNQUFJLFVBQVUsVUFBYSxVQUFVO0FBQ25DLFdBQU8sZ0JBQWdCO0FBRXpCLE1BQUksVUFBVSxVQUFhLE1BQU0sTUFBTSxDQUFDLFFBQVEsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBQ2xFLFdBQU8sZ0JBQWdCO0FBRXpCLE1BQUksU0FBUyxVQUFhLFNBQVM7QUFDakMsV0FBTyxlQUFlO0FBRXhCLE1BQUksWUFBWSxVQUFhLFlBQVksVUFBVSxZQUFZO0FBQzdELFdBQU8sa0JBQWtCO0FBRTNCLE1BQ0UsU0FBUyxVQUNULENBQUMsSUFBSSxRQUFRLGVBQWUsSUFBSSxVQUFVLEdBQzFDO0FBQ0EsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLFlBQVksVUFBYSxZQUFZO0FBQ3ZDLFdBQU8sa0JBQWtCO0FBRTNCLFNBQU8sUUFBUSxLQUNYLEtBQ0EsR0FBRztBQUFBO0FBQUE7QUFBQTtBQUFBLGFBSUksV0FBVyxNQUFNO0FBQUEsZ0JBQ2QsVUFDVCxJQUFJLENBQUMsTUFBTTtBQUNWLFdBQU8sRUFBRSxHQUFHLEtBQUssYUFBYSxXQUFXLENBQUMsRUFBRSxTQUFTO0FBQUEsRUFDdkQsQ0FBQyxFQUNBLE9BQU8sQ0FBQyxXQUFTLE9BQUssUUFBUSxHQUFHLEVBQ2pDLElBQUksQ0FBQyxXQUFTLE9BQUssQ0FBQyxFQUNwQixLQUFLLElBQUksS0FBSztBQUFBO0FBQUE7QUFJckI7QUFFQSxJQUFNLGdCQUFnQixDQUFDLFdBQW1CLE9BQU8sU0FBUyxJQUFJO0FBRXZELHlCQUNMLFFBQ0EsTUFDQSxPQUNBLE1BQ0EsTUFDQTtBQUNBLFFBQU0sUUFBUSxjQUFjLE1BQU07QUFDbEMsU0FDRSxTQUFTLFFBQ1QsU0FBUyxRQUNSLFdBQVUsVUFBYSxNQUFNLFNBQVMsSUFBSTtBQUUvQztBQUVPLHdCQUNMLFFBQ0EsUUFDQSxNQUNBLE9BQ0EsT0FDQSxRQUNBLE1BQ0EsTUFDQTtBQUNBLFFBQU0sUUFBUSxNQUNYLE9BQU8sQ0FBQyxDQUFDLFFBQVEsVUFBVSxnQkFBZ0IsUUFBUSxNQUFNLE9BQU8sTUFBSyxJQUFHLENBQUMsRUFDekUsSUFBSSxDQUFDLENBQUMsR0FBRyxVQUFVLE9BQU8sS0FBSztBQUNsQyxNQUFJLFFBQU87QUFBRyxVQUFNLEtBQUssU0FBUyxLQUFLO0FBRXZDLGNBQVksUUFBUSxRQUFRLE9BQU8sSUFBSTtBQUN6Qzs7O0FLelBBLHdCQUF1QjtBQU12Qiw4QkFBcUMsUUFBa0IsS0FBaUI7QUFOeEU7QUFPRSxRQUFNLEVBQUUsMkJBQTJCLE9BQU87QUFDMUMsUUFBTSxPQUFPLFlBQVk7QUFDekIsTUFBSSxDQUFDLE1BQU07QUFDVCxRQUFJLHlCQUFPLDRDQUE0QztBQUN2RDtBQUFBLEVBQ0Y7QUFDQSxRQUFNLEVBQUUsYUFBYTtBQUVyQixRQUFNLGlCQUFpQixnQkFBZ0IsUUFBUSxVQUFVLEdBQUcsRUFBRTtBQUM5RCxRQUFNLFNBQVMsQ0FBQyxHQUFHLGVBQWUsT0FBTyxHQUFHLGVBQWUsUUFBUTtBQUNuRSxNQUFJLE9BQU8sV0FBVyxHQUFHO0FBQ3ZCLFFBQUkseUJBQU8sTUFBTSxXQUFXO0FBQzVCO0FBQUEsRUFDRjtBQUVBLFFBQU0sU0FBUyxhQUFPLEtBQUssQ0FBQyxPQUMxQix1QkFBdUIsU0FBUyxHQUFHLEtBQUssQ0FDMUMsTUFGZSxtQkFFWjtBQUVILE1BQUksQ0FBQyxRQUFRO0FBQ1gsUUFBSSx5QkFDRix3QkFBd0IseUNBQXlDLHVCQUF1QixLQUN0RixJQUNGLEdBQ0Y7QUFDQTtBQUFBLEVBQ0Y7QUFFQSxRQUFNLFNBQVMsSUFBSSxjQUFjLHFCQUFxQixRQUFRLEVBQUU7QUFDaEUsUUFBTSxJQUFJLFVBQVUsV0FBVyxTQUFTLE1BQU07QUFDaEQ7OztBQ3JDQSx3QkFBNkM7QUFNN0MsSUFBTSwrQkFBK0IsQ0FDbkMsVUFDQSxVQUNBLE9BQ0EsS0FDQSxlQUVBLFdBQ0ksU0FDQyxRQUFRLGVBQWUsU0FBUyxRQUFRLEVBQ3hDLFFBQVEsYUFBYSxLQUFLLEVBQzFCLFFBQVEsV0FBVyxHQUFHLEVBRXRCLFFBQVEsWUFBWSxPQUFPLEVBQUUsT0FBTyxVQUFVLENBQUMsSUFDaEQ7QUFFTiw0QkFBNEIsVUFBa0I7QUFDNUMsTUFBSSxJQUFJLEdBQ04sVUFBVTtBQUNaLFNBQU8sSUFBSSxjQUFjLHFCQUFxQixTQUFTLEVBQUUsR0FBRztBQUMxRCxRQUFJLE1BQU07QUFBRyxpQkFBVyxJQUFJO0FBQUE7QUFDdkIsZ0JBQVUsUUFBUSxNQUFNLEdBQUcsRUFBRSxJQUFJLElBQUk7QUFDMUM7QUFBQSxFQUNGO0FBQ0EsU0FBTztBQUNUO0FBRUEsK0NBQ0UsZ0JBQ0EsY0FDQSxVQUNBLFVBQ0EsT0FDQTtBQUNBLE1BQUksYUFBYTtBQUVqQixNQUFJLGNBQWM7QUFDaEIsVUFBTSxlQUFlLElBQUksY0FBYyxxQkFDckMsY0FDQSxFQUNGO0FBRUEsVUFBTSxXQUFXLE1BQU0sSUFBSSxNQUFNLFdBQVcsWUFBWTtBQUN4RCxpQkFBYSxTQUFTLFFBQ3BCLDRCQUNBLGlCQUNJLEdBQUcsZ0JBQWdCLFNBQVMsZUFDNUIsR0FBRyxlQUFlLFNBQVMsWUFDakM7QUFBQSxFQUNGO0FBQ0EsU0FBTztBQUNUO0FBRUEsc0JBQTZCLFFBQWtCLE9BQWU7QUEzRDlEO0FBNERFLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsTUFDRTtBQUVKLFFBQU0sV0FBVyxZQUFZO0FBQzdCLE1BQUksQ0FBQztBQUFVO0FBRWYsUUFBTSxnQkFBZ0IsSUFBSSxZQUFZLGlCQUFpQixTQUFTLElBQUk7QUFFcEUsUUFBTSxNQUFNLGFBQWEsV0FBVyxLQUFLLEVBQUU7QUFDM0MsUUFBTSxXQUFXLGFBQWEsV0FBVyxPQUFPLEdBQUcsRUFBRTtBQUVyRCxNQUFJLGNBQWMsNkJBQ2hCLG1CQUNBLFVBQ0EsT0FDQSxLQUNBLFVBQ0Y7QUFDQSxnQkFBYyxtQkFBbUIsV0FBVztBQUU1QyxRQUFNLFdBQVcsaUJBQ2IsR0FBRyxnQkFBZ0IsU0FBUyxlQUM1QjtBQUFBLEVBQVEsZUFBZSxTQUFTO0FBQUE7QUFFcEMsUUFBTSxlQUFlLHNCQUFzQjtBQUMzQyxRQUFNLGFBQWEsTUFBTSxnQ0FDdkIsZ0JBQ0EsY0FDQSxVQUNBLFVBQ0EsUUFDRjtBQUVBLFFBQU0sVUFBVSxNQUFNLElBQUksTUFBTSxPQUM5QixxQ0FBYyxHQUFHLGNBQWMsUUFBUSxnQkFBZ0IsR0FDdkQsVUFDRjtBQUVBLE1BQUksQ0FBQyxnQkFBZ0I7QUFDbkIsVUFBTSxFQUFFLFFBQVEsVUFBSSxRQUFRLFFBQVEsYUFBcEIsWUFBZ0MsQ0FBQztBQUNqRCxRQUFJLENBQUMsS0FBSztBQUNSLFVBQUkseUJBQ0YsZ0pBQ0Y7QUFDQTtBQUFBLElBQ0Y7QUFDQSxVQUFNLG1CQUNKLE9BQ0EsUUFBUSxVQUNSLFVBQ0EsSUFBSSxjQUFjLGFBQWEsUUFBUSxFQUFFLGFBQ3pDLEdBQ0Y7QUFBQSxFQUNGLE9BQU87QUFDTCxVQUFNLFFBQVEsR0FBRyxhQUFhLFFBQVE7QUFDdEMsVUFBTSxFQUFFLFdBQVcsSUFBSSxVQUFVLFdBQVc7QUFDNUMsUUFBSSxxQkFBcUIsQ0FBQyxRQUFRO0FBQ2hDLGFBQU8sYUFBYSxPQUFPLE9BQU8sVUFBVSxDQUFDO0FBQUEsSUFDL0MsT0FBTztBQUVMLFVBQUksVUFBVSxNQUFNLElBQUksTUFBTSxLQUFLLFFBQVE7QUFDM0MsWUFBTSxTQUFTLGFBQVksT0FBTztBQUNsQyxnQkFDRSxPQUFPLEtBQ04sUUFBTyxHQUFHLFNBQVMsT0FBTyxNQUMzQixRQUNDLFFBQU8sR0FBRyxTQUFTLE9BQU8sTUFDM0IsT0FBTztBQUVULFlBQU0sSUFBSSxNQUFNLE9BQU8sVUFBVSxPQUFPO0FBQUEsSUFDMUM7QUFBQSxFQUNGO0FBRUEsUUFBTSxPQUFPLG9CQUNULElBQUksVUFBVSxRQUFRLElBQUksSUFDMUIsSUFBSSxVQUFVO0FBRWxCLFFBQU0sS0FBSyxTQUFTLFNBQVMsRUFBRSxRQUFRLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFFN0QsTUFBSSxjQUFjO0FBQ2hCLFFBQUksSUFBSSxRQUFRLFFBQVEsdUJBQXVCO0FBQzdDLFVBQUksU0FBUyxtQkFDWCw4Q0FDRjtBQUFBLElBQ0YsT0FBTztBQUNMLFVBQUkseUJBQ0YsK0VBQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLE1BQUksbUJBQW1CO0FBRXJCLFVBQU0sU0FBUyxLQUFLLEtBQUs7QUFDekIsV0FBTyxVQUFVLE9BQU8sU0FBUyxFQUFFLE1BQU07QUFBQSxFQUMzQyxPQUFPO0FBQ0wsVUFBTSxpQkFBaUIsU0FBUyx1QkFBdUIsbUJBQW1CO0FBRTFFLFVBQU0saUJBQWlCLE1BQU0sS0FBSyxjQUFjLEVBQUUsS0FDaEQsQ0FBQyxVQUE0QixNQUFNLGNBQWMsV0FDbkQ7QUFDQSxtQkFBZSxZQUFZO0FBQzNCLG1CQUFlLE1BQU07QUFBQSxFQUN2QjtBQUNGOzs7QUM1S0Esd0JBQXFCO0FBQ3JCLHdCQUE4QjtBQUs5Qiw2QkFBb0MsUUFBa0IsVUFBa0I7QUFDdEUsUUFBTSxFQUFFLFVBQVUsVUFBVTtBQUM1QixRQUFNLE9BQU8sOEJBQVksWUFBWTtBQUVyQyxRQUFNLEVBQUUsd0JBQXdCLGdCQUFnQixjQUFjO0FBRTlELFFBQU0sV0FBVyxNQUFNLFdBQVcsS0FBSyxVQUFVLENBQUMsR0FBRyxJQUFHLEdBQUcsTUFBTTtBQUMvRCxVQUFNLEVBQUUsT0FBTyxRQUFRO0FBQ3ZCLFVBQU0sV0FBVyxhQUFhLFdBQVcsT0FBTyxHQUFHLEVBQUU7QUFDckQsV0FBTyxFQUFFLE1BQU0sR0FBRyxPQUFPLFNBQVM7QUFBQSxFQUNwQyxDQUFDO0FBRUQsYUFBVyxFQUFFLE1BQU0sV0FBVyxVQUFVO0FBQ3RDLFFBQUksQ0FBQyx1QkFBdUIsU0FBUyxLQUFLO0FBQUc7QUFFN0MsVUFBTSxVQUFVLE1BQU0sSUFBSSxNQUFNLEtBQUssSUFBSTtBQUN6QyxVQUFNLENBQUMsTUFBTSxhQUFhLGFBQVksT0FBTztBQUU3QyxRQUFJLENBQUMsZ0JBQWdCO0FBQ25CLFlBQU0sUUFBUSxTQUFTLEtBQUssT0FBTyxLQUFLLE1BQU0sR0FBRyxFQUFFO0FBQ25ELFlBQU0sVUFBVSxXQUFXLE9BQU8sT0FBTyxJQUFJO0FBQzdDLFlBQU0sYUFBYTtBQUFBLEVBQVE7QUFBQSxLQUFlO0FBQzFDLFlBQU0sSUFBSSxNQUFNLE9BQU8sTUFBTSxVQUFVO0FBQUEsSUFDekMsT0FBTztBQUVMLFlBQU0sYUFDSixPQUNDLE1BQUssU0FBUyxPQUFPLE1BQ3RCLEdBQUcsYUFBYSxXQUNmLFdBQVUsU0FBUyxPQUFPLE1BQzNCO0FBRUYsWUFBTSxJQUFJLE1BQU0sT0FBTyxNQUFNLFVBQVU7QUFBQSxJQUN6QztBQUFBLEVBQ0Y7QUFDRjtBQUVBLGtDQUF5QyxRQUFrQjtBQUN6RCxNQUFJLENBQUMsT0FBTyxTQUFTLG9CQUFvQjtBQUN2QyxRQUFJLHlCQUNGLGlFQUNGO0FBQ0E7QUFBQSxFQUNGO0FBQ0EsTUFDRSxPQUFPLFFBQ0wsNlFBQ0YsR0FDQTtBQUNBLFFBQ0UsT0FBTyxRQUNMLG1IQUNGLEdBQ0E7QUFDQSxVQUFJLE9BQU8sUUFBUSx5Q0FBeUMsR0FBRztBQUM3RCxjQUFNLFNBQVMsSUFBSSx5QkFBTyxtQkFBbUI7QUFDN0MsY0FBTSxlQUFlLENBQUM7QUFDdEIsbUJBQVcsUUFBUSxJQUFJLE1BQU0saUJBQWlCLEdBQUc7QUFDL0MsY0FBSTtBQUNGLGtCQUFNLGNBQWMsUUFBUSxJQUFJO0FBQUEsVUFDbEMsU0FBUyxHQUFQO0FBQ0EseUJBQWEsS0FBSyxLQUFLLElBQUk7QUFBQSxVQUM3QjtBQUFBLFFBQ0Y7QUFDQSxlQUFPLFdBQVcsb0JBQW9CO0FBQ3RDLFlBQUksYUFBYSxRQUFRO0FBQ3ZCLGNBQUkseUJBQ0YsaUZBQ0Y7QUFDQSxzQ0FBSyxFQUFFLGFBQWEsQ0FBQztBQUFBLFFBQ3ZCO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7OztBQ2hGQSx3QkFPTztBQUtBLElBQU0saUJBQU4sY0FBNkIsZ0NBQXNCO0FBQUEsRUFHeEQsWUFBWSxRQUFrQjtBQUM1QixVQUFNLEdBQUc7QUF5QlgsMEJBQWlCLENBQUMsWUFBa0M7QUFDbEQsWUFBTSxFQUFFLFVBQVU7QUFDbEIsYUFBTyxlQUFlLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUNwRCxJQUFJLFNBQVMsS0FBSyxDQUNwQjtBQUFBLElBQ0Y7QUE3QkUsU0FBSyxTQUFTO0FBQUEsRUFDaEI7QUFBQSxFQUVBLFVBQ0UsUUFDQSxRQUNBLEdBQ2lDO0FBeEJyQztBQXlCSSxVQUFNLE1BQU0sT0FBTyxRQUFRLE9BQU8sSUFBSSxFQUFFLFVBQVUsR0FBRyxPQUFPLEVBQUU7QUFDOUQsVUFBTSxRQUFRLFVBQUksTUFBTSxXQUFXLE1BQXJCLG1CQUF5QjtBQUN2QyxRQUFJLFVBQVUsUUFBVztBQUN2QixhQUFPO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxPQUFPO0FBQUEsVUFDTCxJQUFJLElBQUksWUFBWSxLQUFLO0FBQUEsVUFDekIsTUFBTSxPQUFPO0FBQUEsUUFDZjtBQUFBLFFBQ0EsT0FBTztBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBRUEsV0FBTztBQUFBLEVBQ1Q7QUFBQSxFQVNBLGlCQUFpQixZQUFvQixJQUF1QjtBQWhEOUQ7QUFpREksT0FBRyxVQUFVO0FBQUEsTUFDWCxNQUFNLFdBQVcsUUFBUSxPQUFPLEVBQUU7QUFBQSxNQUNsQyxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsUUFDSixjQUFjLHFCQUFlLEtBQUssQ0FBQyxNQUFNLEVBQUUsVUFBVSxVQUFVLE1BQWpELG1CQUFvRDtBQUFBLFFBQ2xFLHVCQUF1QjtBQUFBLE1BQ3pCO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUFBLEVBRUEsaUJBQWlCLFlBQTBCO0FBQ3pDLFVBQU0sRUFBRSxTQUFTLFdBQVc7QUFDNUIsUUFBSSxDQUFDO0FBQVM7QUFFZCxVQUFNLFFBQVEsZUFBZSxLQUFLLENBQUMsTUFBTSxFQUFFLFVBQVUsVUFBVTtBQUMvRCxVQUFNLGNBQWMsR0FBRyxhQUFhLCtCQUFRLGFBQWEsR0FBRyxJQUFJLGNBQWM7QUFHOUUsWUFBUSxPQUFPLGFBQ2IsYUFDQSxFQUFFLElBQUksR0FBRyxNQUFNLFFBQVEsTUFBTSxLQUFLLEdBQ2xDLFFBQVEsR0FDVjtBQUFBLEVBQ0Y7QUFDRjs7O0FDekVBLHdCQU9PO0FBTUEsSUFBTSxvQkFBTixjQUFnQyxnQ0FBc0I7QUFBQSxFQUczRCxZQUFZLFFBQWtCO0FBQzVCLFVBQU0sR0FBRztBQTBCWCwwQkFBaUIsQ0FBQyxZQUFrQztBQUNsRCxZQUFNLEVBQUUsVUFBVTtBQUNsQixZQUFNLEVBQUUsY0FBYyxLQUFLLE9BQU87QUFDbEMsYUFBTyxVQUFVLFNBQVMsRUFBRSxPQUFPLENBQUMsUUFBUSxJQUFJLFNBQVMsS0FBSyxDQUFDO0FBQUEsSUFDakU7QUE3QkUsU0FBSyxTQUFTO0FBQUEsRUFDaEI7QUFBQSxFQUVBLFVBQ0UsUUFDQSxRQUNBLEdBQ2lDO0FBekJyQztBQTBCSSxVQUFNLE9BQU8sS0FBSyxPQUFPLFNBQVM7QUFDbEMsVUFBTSxNQUFNLE9BQU8sUUFBUSxPQUFPLElBQUksRUFBRSxVQUFVLEdBQUcsT0FBTyxFQUFFO0FBRTlELFVBQU0sUUFBUSxJQUFJLE9BQU8sTUFBTSxZQUFZLElBQUksUUFBUTtBQUN2RCxVQUFNLFFBQVEsWUFBTSxLQUFLLEdBQUcsTUFBZCxtQkFBa0I7QUFFaEMsUUFBSSxVQUFVO0FBQVcsYUFBTztBQUNoQyxXQUFPO0FBQUEsTUFDTCxPQUFPO0FBQUEsUUFDTCxJQUFJLElBQUksWUFBWSxJQUFJO0FBQUEsUUFDeEIsTUFBTSxPQUFPO0FBQUEsTUFDZjtBQUFBLE1BQ0EsS0FBSztBQUFBLE1BQ0wsT0FBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBQUEsRUFRQSxpQkFBaUIsWUFBb0IsSUFBdUI7QUFDMUQsT0FBRyxVQUFVO0FBQUEsTUFDWCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsSUFDUCxDQUFDO0FBQUEsRUFDSDtBQUFBLEVBRUEsaUJBQWlCLFlBQTBCO0FBQ3pDLFVBQU0sRUFBRSxTQUFTLFdBQVc7QUFDNUIsUUFBSSxDQUFDO0FBQVM7QUFFZCxVQUFNLE9BQU8sT0FBTyxTQUFTO0FBQzdCLFVBQU0sRUFBRSxlQUFPLEtBQUssV0FBVztBQUUvQixVQUFNLGNBQWMsYUFBYyxjQUFhLEdBQUcsSUFBSSxPQUFPLFNBQVM7QUFDdEUsV0FBTyxhQUNMLGFBQ0EsRUFBRSxJQUFJLE9BQU0sS0FBSyxJQUFJLEtBQUssUUFBUSxNQUFNLE9BQU0sS0FBSyxHQUNuRCxHQUNGO0FBQUEsRUFDRjtBQUNGOzs7QUN0RUEsd0JBQTBDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNjeEMsYUFJUyxTQUFBLE1BQUEsTUFBQTs7QUFFWCxhQUFpRCxRQUFBLEtBQUEsTUFBQTs7O3lDQUhwQyxJQUFjLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BZnJCO1FBQ0UsaUJBQWMsTUFBQTtBQUNsQixnQkFBWSxLQUNWLG9DQUNBLFdBQ0EsV0FBVztvQkFFYixPQUFPLFlBQVksWUFBWSxRQUFPLEdBQUEsTUFBQTs7OztBQVdILGVBQU07Ozs7Ozs7Ozs7Ozs7OztBQ3BCN0Msd0JBQXdCO0FBSWpCLGdDQUNMLFFBQ0EsYUFDQTtBQUNBLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU0scUJBQXFCLFdBQVcsZ0JBQWdCLFdBQVc7QUFFakUsTUFBSSwwQkFBUSxrQkFBa0IsRUFDM0IsUUFBUSxzQkFBc0IsRUFDOUIsUUFDQyxhQUNFLHlIQUNGLENBQ0YsRUFDQyxVQUFVLENBQUMsV0FDVixPQUFPLFNBQVMsU0FBUyxhQUFhLEVBQUUsU0FBUyxPQUFPLFVBQVU7QUFDaEUsYUFBUyxnQkFBZ0I7QUFDekIsVUFBTSxPQUFPLGFBQWE7QUFBQSxFQUM1QixDQUFDLENBQ0g7QUFFRixNQUFJLDBCQUFRLGtCQUFrQixFQUMzQixRQUFRLGtCQUFrQixFQUMxQixRQUNDLGFBQ0UsMkpBQ0YsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxVQUFTO0FBQ2pCLFVBQ0csU0FBUyxTQUFTLGlCQUFpQixFQUNuQyxTQUFTLE9BQU8sVUFBVTtBQUN6QixlQUFTLG9CQUFvQjtBQUM3QixZQUFNLE9BQU8sYUFBYTtBQUFBLElBQzVCLENBQUM7QUFBQSxFQUNMLENBQUM7QUFFSCxNQUFJLDBCQUFRLGtCQUFrQixFQUMzQixRQUFRLGdDQUFnQyxFQUN4QyxRQUFRLHdFQUE4RCxFQUN0RSxVQUFVLENBQUMsV0FDVixPQUFPLFNBQVMsU0FBUyxjQUFjLEVBQUUsU0FBUyxPQUFPLFVBQVU7QUFDakUsYUFBUyxpQkFBaUI7QUFDMUIsVUFBTSxPQUFPLGFBQWE7QUFBQSxFQUM1QixDQUFDLENBQ0g7QUFDSjs7O0FDakRBLHdCQUF3QjtBQUlqQix3QkFDTCxRQUNBLDZCQUNBO0FBQ0EsUUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBTSxhQUFhLFdBQVcsYUFBYSwyQkFBMkI7QUFFdEUsTUFBSSwwQkFBUSxVQUFVLEVBQ25CLFFBQVEsc0JBQXNCLEVBQzlCLFFBQVEsNERBQTRELEVBQ3BFLFFBQVEsQ0FBQyxVQUFTO0FBQ2pCLFVBQUssU0FBUyxTQUFTLFFBQVE7QUFDL0IsVUFBSyxRQUFRLFNBQVMsWUFBWTtBQUNoQyxlQUFTLFdBQVcsTUFBSyxRQUFRO0FBQ2pDLFlBQU0sT0FBTyxhQUFhO0FBQUEsSUFDNUI7QUFBQSxFQUNGLENBQUM7QUFDTDs7O0FDckJBLHdCQUEyQztBQU1wQyw2QkFDTCxRQUNBLDZCQUNBO0FBQ0EsUUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBTSxFQUFFLGNBQWM7QUFDdEIsUUFBTSxTQUFTLFVBQVUsU0FBUztBQUNsQyxRQUFNLFlBQVksV0FBVyxrQkFBa0IsMkJBQTJCO0FBRTFFLE1BQUksMEJBQVEsU0FBUyxFQUNsQixRQUFRLDZCQUE2QixFQUNyQyxRQUNDLGFBQ0UsNFRBQ0YsQ0FDRixFQUNDLFlBQVksQ0FBQyxPQUEwQjtBQUN0QyxXQUFPLFFBQVEsQ0FBQyxVQUFVLEdBQUcsVUFBVSxPQUFPLEtBQUssQ0FBQztBQUNwRCxPQUFHLFVBQVUsSUFBSSxFQUFFLEVBQ2hCLFNBQVMsU0FBUyxpQkFBaUIsRUFDbkMsU0FBUyxPQUFPLFVBQVU7QUFDekIsZUFBUyxvQkFBb0I7QUFDN0IsWUFBTSxPQUFPLGFBQWE7QUFDMUIsWUFBTSxhQUFhLE1BQU07QUFBQSxJQUMzQixDQUFDO0FBQUEsRUFDTCxDQUFDO0FBQ0w7OztBQ2hDQSx3QkFBMkM7QUFNcEMsNkJBQ0wsUUFDQSw2QkFDQTtBQUNBLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU0sRUFBRSxjQUFjO0FBQ3RCLFFBQU0sU0FBUyxVQUFVLFNBQVM7QUFDbEMsUUFBTSxlQUFlLEVBQUUsSUFBSSxHQUFHO0FBQzlCLFNBQU8sUUFBUSxDQUFDLFVBQVcsYUFBYSxTQUFTLEtBQU07QUFFdkQsUUFBTSxrQkFBa0IsV0FBVyxjQUFjLDJCQUEyQjtBQUU1RSxNQUFJLDBCQUFRLGVBQWUsRUFDeEIsUUFBUSx5QkFBeUIsRUFDakMsUUFDQyx1SEFDRixFQUNDLFVBQVUsQ0FBQyxXQUFXO0FBQ3JCLFdBQU8sU0FBUyxTQUFTLFlBQVksRUFBRSxTQUFTLE9BQU8sVUFBVTtBQUMvRCxlQUFTLGVBQWU7QUFDeEIsWUFBTSxPQUFPLGFBQWE7QUFDMUIsWUFBTSxhQUFhLE1BQU07QUFBQSxJQUMzQixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBRUgsTUFBSSwwQkFBUSxlQUFlLEVBQ3hCLFFBQVEsbUJBQW1CLEVBQzNCLFFBQ0MsYUFDRSw0WkFDRixDQUNGLEVBQ0MsUUFBUSxDQUFDLFVBQVM7QUFDakIsVUFBSyxTQUFTLFNBQVMsY0FBYztBQUNyQyxVQUFLLFFBQVEsU0FBUyxZQUFZO0FBQ2hDLGVBQVMsaUJBQWlCLE1BQUssU0FBUztBQUN4QyxZQUFNLE9BQU8sYUFBYTtBQUMxQixZQUFNLGFBQWEsTUFBTTtBQUFBLElBQzNCO0FBQUEsRUFDRixDQUFDO0FBRUgsTUFBSSwwQkFBUSxlQUFlLEVBQ3hCLFFBQVEsaUJBQWlCLEVBQ3pCLFFBQ0MsYUFDRSxpSUFDRixDQUNGLEVBQ0MsWUFBWSxDQUFDLE9BQTBCO0FBQ3RDLE9BQUcsV0FBVyxZQUFZLEVBQ3ZCLFNBQVMsU0FBUyxhQUFhLEVBQy9CLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGVBQVMsZ0JBQWdCO0FBQ3pCLFlBQU0sT0FBTyxhQUFhO0FBQzFCLFlBQU0sYUFBYSxNQUFNO0FBQUEsSUFDM0IsQ0FBQztBQUFBLEVBQ0wsQ0FBQztBQWdDTDs7O0FDOUZBLHdCQUFnQjtBQUNoQix3QkFBd0I7QUFLakIsK0JBQ0wsUUFDQSxhQUNBO0FBQ0EsUUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBTSxlQUFlLFFBQVEsYUFBYSxXQUFXO0FBRXJELE1BQUksMEJBQVEsWUFBWSxFQUNyQixRQUFRLFlBQVksRUFDcEIsUUFDQyxhQUNFLDZQQUNGLENBQ0YsRUFDQyxZQUFZLENBQUMsT0FBTztBQUNuQixXQUFPLEtBQUssMEJBQUksTUFBTSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEdBQUcsVUFBVSxLQUFLLEdBQUcsQ0FBQztBQUMvRCxPQUFHLFNBQVMsU0FBUyxTQUFTLEVBQUUsU0FBUyxPQUFPLFVBQXNCO0FBQ3BFLGdDQUFJLFNBQVMsS0FBSztBQUNsQixlQUFTLFlBQVk7QUFDckIsWUFBTSxPQUFPLGFBQWE7QUFBQSxJQUM1QixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBRUgsZUFBYSxTQUFTLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixHQUFHLENBQUMsT0FBTztBQUN4RSxPQUFHLGlCQUFpQixTQUFTLE1BQU0sUUFBUSxJQUFJLFFBQVEsQ0FBQztBQUFBLEVBQzFELENBQUM7QUFDSDs7O0FDaENBLHdCQUFtRDtBQU81Qyw0QkFDTCxRQUNBLDZCQUNBO0FBQ0EsUUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBTSxFQUFFLGNBQWM7QUFDdEIsUUFBTSxTQUFTLFVBQVUsU0FBUztBQUNsQyxRQUFNLGlCQUFpQixXQUNyQixpQkFDQSwyQkFDRjtBQUVBLE1BQUksMEJBQVEsY0FBYyxFQUN2QixRQUFRLDRCQUE0QixFQUNwQyxRQUNDLGFBQ0UsNFNBQ0YsQ0FDRixFQUNDLFVBQVUsQ0FBQyxXQUNWLE9BQU8sU0FBUyxTQUFTLGVBQWUsRUFBRSxTQUFTLE9BQU8sVUFBVTtBQUNsRSxhQUFTLGtCQUFrQjtBQUMzQixVQUFNLE9BQU8sYUFBYTtBQUFBLEVBQzVCLENBQUMsQ0FDSDtBQUNGLE1BQUksMEJBQVEsY0FBYyxFQUN2QixRQUFRLFdBQVcsRUFDbkIsUUFDQyxhQUNFLDZFQUNGLENBQ0YsRUFDQyxRQUFRLENBQUMsVUFBUztBQUNqQixVQUNHLGVBQWUsV0FBVyxFQUMxQixTQUFTLFNBQVMsb0JBQW9CO0FBRXpDLFVBQUssUUFBUSxTQUFTLFlBQVk7QUFDaEMsWUFBTSxRQUFRLE1BQUssU0FBUztBQUM1QixVQUFJO0FBQU8saUJBQVMsdUJBQXVCO0FBQUEsV0FDdEM7QUFDSCxZQUFJLHlCQUFPLDhCQUE4QjtBQUN6QyxpQkFBUyx1QkFBdUIsaUJBQWlCO0FBQUEsTUFDbkQ7QUFDQSxZQUFNLE9BQU8sYUFBYTtBQUFBLElBQzVCO0FBQUEsRUFDRixDQUFDO0FBRUgsTUFBSSwwQkFBUSxjQUFjLEVBQ3ZCLFFBQVEseUJBQXlCLEVBQ2pDLFFBQ0MsYUFDRSx1SkFDRixDQUNGLEVBQ0MsVUFBVSxDQUFDLFdBQ1YsT0FBTyxTQUFTLFNBQVMsZ0JBQWdCLEVBQUUsU0FBUyxPQUFPLFVBQVU7QUFDbkUsYUFBUyxtQkFBbUI7QUFDNUIsVUFBTSxPQUFPLGFBQWE7QUFDMUIsVUFBTSxPQUFPLGtCQUFrQixXQUFXLEVBQUUsS0FBSztBQUFBLEVBQ25ELENBQUMsQ0FDSDtBQUVGLE1BQUksMEJBQVEsY0FBYyxFQUN2QixRQUFRLG9CQUFvQixFQUM1QixRQUFRLHVEQUF1RCxFQUMvRCxZQUFZLENBQUMsT0FBMEI7QUFDdEMsV0FBTyxRQUFRLENBQUMsVUFBVSxHQUFHLFVBQVUsT0FBTyxLQUFLLENBQUM7QUFDcEQsT0FBRyxTQUFTLFNBQVMsZ0JBQWdCO0FBRXJDLE9BQUcsU0FBUyxPQUFPLFVBQVU7QUFDM0IsZUFBUyxtQkFBbUI7QUFDNUIsWUFBTSxPQUFPLGFBQWE7QUFDMUIsWUFBTSxhQUFhLE1BQU07QUFBQSxJQUMzQixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0w7OztBQ25GQSx3QkFBZ0M7QUFNekIsNEJBQTRCLFFBQWtCLGFBQTBCO0FBQzdFLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU0saUJBQWlCLFFBQVEsbUJBQW1CLFdBQVc7QUFFN0QsTUFBSSwwQkFBUSxjQUFjLEVBQ3ZCLFFBQVEsOEJBQThCLEVBQ3RDLFFBQVEsYUFDUCxrSUFBa0ksQ0FDcEksRUFDQyxVQUFVLENBQUMsV0FDVixPQUFPLFNBQVMsU0FBUyxtQkFBbUIsRUFBRSxTQUFTLE9BQU8sVUFBVTtBQUN0RSxhQUFTLHNCQUFzQjtBQUMvQixVQUFNLE9BQU8sYUFBYTtBQUFBLEVBQzVCLENBQUMsQ0FDSDtBQUVGLE1BQUksMEJBQVEsY0FBYyxFQUN2QixRQUFRLDRCQUE0QixFQUNwQyxVQUFVLENBQUMsV0FDVixPQUFPLFNBQVMsU0FBUyxpQkFBaUIsRUFBRSxTQUFTLE9BQU8sVUFBVTtBQUNwRSxhQUFTLG9CQUFvQjtBQUM3QixVQUFNLE9BQU8sYUFBYTtBQUFBLEVBQzVCLENBQUMsQ0FDSDtBQUVGLE1BQUksMEJBQVEsY0FBYyxFQUN2QixRQUFRLDJCQUEyQixFQUNuQyxRQUNDLGdGQUNGLEVBQ0MsVUFBVSxDQUFDLFdBQ1YsT0FBTyxTQUFTLFNBQVMsaUJBQWlCLEVBQUUsU0FBUyxPQUFPLFVBQVU7QUFDcEUsYUFBUyxvQkFBb0I7QUFDN0IsVUFBTSxPQUFPLGFBQWE7QUFBQSxFQUM1QixDQUFDLENBQ0g7QUFFRixNQUFJLDBCQUFRLGNBQWMsRUFDdkIsUUFBUSxjQUFjLEVBQ3RCLFFBQ0MsYUFDRSx1UkFDRixDQUNGLEVBQ0MsUUFBUSxDQUFDLFVBQVM7QUFDakIsVUFBSyxTQUFTLFNBQVMsY0FBYyxLQUFLLElBQUksQ0FBQztBQUMvQyxVQUFLLFFBQVEsU0FBUyxZQUFZO0FBQ2hDLGVBQVMsZ0JBQWdCLGFBQWEsTUFBSyxTQUFTLENBQUM7QUFDckQsWUFBTSxPQUFPLGFBQWE7QUFBQSxJQUM1QjtBQUFBLEVBQ0YsQ0FBQztBQUVILE1BQUksMEJBQVEsY0FBYyxFQUN2QixRQUFRLHVCQUF1QixFQUMvQixRQUNDLHFHQUNGLEVBQ0MsVUFBVSxDQUFDLFdBQ1YsT0FBTyxTQUFTLENBQUMsU0FBUyxjQUFjLEVBQUUsU0FBUyxPQUFPLFVBQVU7QUFDbEUsYUFBUyxpQkFBaUIsQ0FBQztBQUMzQixVQUFNLE9BQU8sYUFBYTtBQUMxQixVQUFNLGFBQWEsTUFBTTtBQUFBLEVBQzNCLENBQUMsQ0FDSDtBQUVGLE1BQUksMEJBQVEsY0FBYyxFQUN2QixRQUFRLDhDQUE4QyxFQUN0RCxRQUNDLGlLQUNGLEVBQ0MsVUFBVSxDQUFDLFdBQ1YsT0FBTyxTQUFTLFNBQVMsY0FBYyxFQUFFLFNBQVMsT0FBTyxVQUFVO0FBQ2pFLGFBQVMsaUJBQWlCO0FBQzFCLFVBQU0sT0FBTyxhQUFhO0FBQzFCLFVBQU0sYUFBYSxNQUFNO0FBQUEsRUFDM0IsQ0FBQyxDQUNIO0FBRUYsTUFBSSwwQkFBUSxjQUFjLEVBQ3ZCLFFBQVEsdURBQXVELEVBQy9ELFFBQ0MsYUFDRSx5T0FDRixDQUNGLEVBQ0MsVUFBVSxDQUFDLFdBQ1YsT0FDRyxTQUFTLFNBQVMsMkJBQTJCLEVBQzdDLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGFBQVMsOEJBQThCO0FBQ3ZDLFVBQU0sT0FBTyxhQUFhO0FBQUEsRUFDNUIsQ0FBQyxDQUNMO0FBR0YsTUFBSSwwQkFBUSxjQUFjLEVBQ3ZCLFFBQVEsd0JBQXdCLEVBQ2hDLFFBQ0MsYUFDRSwrUUFDRixDQUNGLEVBQ0MsVUFBVSxDQUFDLFdBQ1YsT0FBTyxTQUFTLFNBQVMsY0FBYyxFQUFFLFNBQVMsT0FBTyxVQUFVO0FBQ2pFLGFBQVMsaUJBQWlCO0FBQzFCLFVBQU0sT0FBTyxhQUFhO0FBQUEsRUFDNUIsQ0FBQyxDQUNIO0FBQ0YsTUFBSSwwQkFBUSxjQUFjLEVBQ3ZCLFFBQVEsMkJBQTJCLEVBQ25DLFFBQ0MsYUFDRSxpSUFDRixDQUNGLEVBQ0MsVUFBVSxDQUFDLFdBQ1YsT0FDRyxTQUFTLFNBQVMsdUJBQXVCLEVBQ3pDLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGFBQVMsMEJBQTBCO0FBQ25DLFVBQU0sT0FBTyxhQUFhO0FBQUEsRUFDNUIsQ0FBQyxDQUNMO0FBQ0YsTUFBSSwwQkFBUSxjQUFjLEVBQ3ZCLFFBQVEsNEJBQTRCLEVBQ3BDLFFBQ0MsYUFDRSxnRkFDRixDQUNGLEVBQ0MsUUFBUSxDQUFDLFVBQ1IsTUFBSyxTQUFTLFNBQVMsbUJBQW1CLEVBQUUsU0FBUyxPQUFPLFVBQVU7QUFDcEUsYUFBUyxzQkFBc0I7QUFDL0IsVUFBTSxPQUFPLGFBQWE7QUFBQSxFQUM1QixDQUFDLENBQ0g7QUFFRixNQUFJLElBQUksUUFBUSxRQUFRLGFBQWEsUUFBVztBQUM5QyxRQUFJLDBCQUFRLGNBQWMsRUFDdkIsUUFBUSxvQkFBb0IsRUFDNUIsUUFDQyxzSkFDRixFQUNDLFFBQVEsQ0FBQyxVQUNSLE1BQ0csZUFBZSxTQUFTLEVBQ3hCLFNBQVUsVUFBUyxhQUFhLEtBQU0sU0FBUyxDQUFDLEVBQ2hELFNBQVMsT0FBTyxVQUFVO0FBQ3pCLFlBQU0sTUFBTSxPQUFPLEtBQUs7QUFFeEIsVUFBSSxNQUFNLEdBQUc7QUFDWCxpQkFBUyxhQUFhLE1BQU07QUFDNUIsY0FBTSxPQUFPLGFBQWE7QUFBQSxNQUM1QixPQUFPO0FBQ0wsWUFBSSx5QkFBTyw0Q0FBNEM7QUFBQSxNQUN6RDtBQUFBLElBQ0YsQ0FBQyxDQUNMO0FBQUEsRUFDSjtBQUNGOzs7QUNyS0Esd0JBQTJDO0FBT3BDLGtDQUNMLFFBQ0EsNkJBQ0E7QUFDQSxRQUFNLEVBQUUsYUFBYTtBQUNyQixRQUFNLHVCQUF1QixXQUMzQixtQkFDQSwyQkFDRjtBQUVBLE1BQUksMEJBQVEsb0JBQW9CLEVBQzdCLFFBQVEsbUJBQW1CLEVBQzNCLFFBQ0MsYUFDRSxnVUFDRixDQUNGLEVBQ0MsUUFBUSxDQUFDLFVBQVM7QUFDakIsVUFDRyxlQUFlLG1CQUFtQixFQUNsQyxTQUFTLFNBQVMsZUFBZSxLQUFLLElBQUksQ0FBQztBQUU5QyxVQUFLLFFBQVEsU0FBUyxZQUFZO0FBQ2hDLFlBQU0sU0FBUyxhQUFhLE1BQUssU0FBUyxDQUFDO0FBRTNDLGVBQVMsaUJBQWlCO0FBQzFCLFlBQU0sT0FBTyxhQUFhO0FBQUEsSUFDNUI7QUFBQSxFQUNGLENBQUM7QUFFSCxNQUFJLDBCQUFRLG9CQUFvQixFQUM3QixRQUFRLDZDQUE2QyxFQUNyRCxRQUFRLDZIQUFtSCxFQUMzSCxVQUFVLENBQUMsV0FBVztBQUNyQixXQUNHLFNBQVMsU0FBUyxxQkFBcUIsRUFDdkMsU0FBUyxPQUFPLFVBQVU7QUFDekIsZUFBUyx3QkFBd0I7QUFDakMsWUFBTSxPQUFPLGFBQWE7QUFDMUIsWUFBTSxhQUFhLE1BQU07QUFBQSxJQUMzQixDQUFDO0FBQUEsRUFDTCxDQUFDO0FBRUgsTUFBSSwwQkFBUSxvQkFBb0IsRUFDN0IsUUFBUSw4QkFBOEIsRUFDdEMsUUFDQyxhQUNFLDBOQUNGLENBQ0YsRUFDQyxZQUFZLENBQUMsT0FBMEI7QUFDdEMsVUFBTSxXQUFXLFVBQVUsU0FBUyxXQUFXLElBQUk7QUFFbkQsVUFBTSxVQUFVLENBQUM7QUFDakIsYUFBUyxRQUNQLENBQUMsVUFBVyxRQUFRLFNBQVMsS0FDL0I7QUFDQSxPQUFHLFdBQVcsT0FBTyxFQUNsQixTQUFTLFNBQVMsYUFBYSxTQUFTLEVBQUUsRUFDMUMsU0FBUyxPQUFPLFVBQVU7QUFDekIsZUFBUyxZQUFZO0FBQ3JCLFlBQU0sT0FBTyxhQUFhO0FBQzFCLFlBQU0sYUFBYSxNQUFNO0FBQUEsSUFDM0IsQ0FBQztBQUFBLEVBQ0wsQ0FBQztBQUNMOzs7d0JDdkV5Qjs7Ozs7Ozs7O2VFaUJiLElBQUssRUFBQTs7O0FBQWIsYUFBcUIsUUFBQSxTQUFBLE1BQUE7Ozs7O29CQUFiLEtBQUssRUFBQTs7Ozs7Ozs7Ozs7O2lCQURWLElBQUssTUFBQSxpQkFBQSxHQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FBRFosYUFLSyxRQUFBLEtBQUEsTUFBQTs7Ozs7Ozs7OztVQUpFLEtBQUssSUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQWhCQyxRQUFRLFNBQUk7UUFDWixZQUFPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDRVYsYUFBdWEsUUFBQSxPQUFBLE1BQUE7Ozs7Ozs7Ozs7OzhEQURyWSxJQUFPLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OzttSUFBUCxLQUFPLEVBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNDekMsYUFBMlAsUUFBQSxPQUFBLE1BQUE7Ozs7Ozs7Ozs7OzhEQUR6TixJQUFPLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OzttSUFBUCxLQUFPLEVBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNDekMsYUFBaWdCLFFBQUEsT0FBQSxNQUFBOzs7Ozs7Ozs7Ozs4REFEL2QsSUFBTyxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7bUlBQVAsS0FBTyxFQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCSjZHdEMsaUJBQWlCLElBQUcsT0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJDQURZLElBQUcsR0FBQTs7OzZDQU05QixJQUFHLEdBQUE7d0NBQ0YsZ0JBQUksSUFBQyxJQUFHLFNBQVIsbUJBQVcsS0FBSyxVQUFoQixZQUF5Qjs7O0FBUnBDLGFBNkJNLFFBQUEsS0FBQSxNQUFBO0FBNUJKLGFBRVEsS0FBQSxLQUFBOzs7QUFDUixhQXdCRSxLQUFBLEtBQUE7Ozs7Ozs7OztrRUFwQk8sZ0JBQUksSUFBQyxJQUFHLFNBQVIsbUJBQVcsS0FBSyxVQUFoQixZQUF5QixPQUFFLE1BQUEsVUFBQSxtQkFBQTs7Ozs7Ozs7Ozs7Ozs7O2lCQTdEckMsV0FBVyxJQUFHLElBQUEsRUFDWixJQUFHLE1BQUEsRUFDSCxLQUFLLEdBQUcsSUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQkFrRE47O21DQUFMLFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdERSLGFBc0ZVLFFBQUEsVUFBQSxNQUFBO0FBckZSLGFBb0RVLFVBQUEsT0FBQTs7O0FBL0NSLGFBOENPLFNBQUEsSUFBQTtBQTdDTCxhQVFTLE1BQUEsT0FBQTs7QUFDVCxhQVFTLE1BQUEsT0FBQTs7QUFDVCxhQTBCUyxNQUFBLE9BQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O2dEQWpEVixXQUFXLElBQUcsSUFBQSxFQUNaLElBQUcsTUFBQSxFQUNILEtBQUssR0FBRyxJQUFBO0FBQUEsaUJBQUEsSUFBQSxRQUFBOzt1QkFrRE47O3FDQUFMLFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7OzBDQUFKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUJBdkRDLElBQVM7O2lDQUFkLFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBakNSLGFBMEhNLFFBQUEsTUFBQSxNQUFBO0FBekhKLGFBOEJNLE1BQUEsSUFBQTtBQTdCSixhQU9TLE1BQUEsT0FBQTtBQUhQLGFBRU0sU0FBQSxJQUFBOzs7QUFFUixhQVlTLE1BQUEsT0FBQTtBQUhQLGFBRU0sU0FBQSxJQUFBOzs7QUFFUixhQU9TLE1BQUEsT0FBQTtBQUhQLGFBRU0sU0FBQSxJQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBSUgsS0FBUzs7bUNBQWQsUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7d0NBQUo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2FBSVksZUFBUyxJQUFTOztNQTFEakIsWUFBQSxRQUFBLEtBQUEsYUFBQSxTQUFBLFNBQUEsWUFBQSxHQUFBLFdBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRRFdKLFdBQWdCO1VBQ25CLGFBQWE7TUFFakIsWUFBUyxDQUFBLEdBQU8sT0FBTyxTQUFTLFNBQVM7bUJBQ3ZCLFlBQXFCOztzQkFDekMsT0FBTyxTQUFTLFlBQVksWUFBUyxNQUFBO1lBQy9CLE9BQU8sYUFBWTs7O29EQ1FBLFlBQVMsQ0FBQSxHQUFPLFdBQVcsY0FBYSxDQUFBLENBQUE7O1FBU3pELE9BQU8sUUFBUSxpREFBaUQsR0FBQTtzQkFDbEUsWUFBUyxDQUFBLENBQUE7WUFDSCxRQUFPLFNBQVM7OztvQ0FVTix5QkFBTyxVQUFVLElBQUksU0FBUyxFQUFFLEtBQUssTUFBTSxDQUFBO3NCQVc1QyxRQUFHOztBQUFLLDRCQUFLLFNBQUwsbUJBQVcsS0FBSyxVQUFoQixZQUF5Qjs7O29CQVE1QyxZQUFZLFVBQVUsR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFBO1VBQ25DLFFBQU8sU0FBUzs7O29CQVF0QixZQUFZLFVBQVUsR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFBO1VBQ25DLFFBQU8sU0FBUzs7O1VBUWhCLFVBQVUsVUFBVSxPQUFPLEdBQUcsQ0FBQyxFQUFFO0FBQ3ZDLFlBQVEsR0FBRyxRQUFTLGFBQU87WUFDbkIsU0FBUSxTQUFTLHFCQUFxQixRQUFRLE9BQU87VUFDdkQsU0FBSztBQUFPLGlCQUFTLHFCQUFxQixPQUFPLFFBQU8sQ0FBQzs7QUFHL0QsZUFBVyxRQUFTLFNBQUc7QUFDckIsY0FBUSxLQUFLLFFBQVMsV0FBSztjQUNuQixTQUFTLFNBQVMsdUJBQXVCLFFBQVEsS0FBSztZQUN4RCxTQUFNO0FBQ1IsbUJBQVMsdUJBQXVCLE9BQU8sUUFBUSxDQUFDO2NBRTVDLFNBQVMsU0FBUyx1QkFBdUIsUUFBUSxLQUFLO1lBQ3hELFNBQU07QUFDUixtQkFBUyx1QkFBdUIsT0FBTyxRQUFRLENBQUM7Ozs7VUFLaEQsUUFBTyxTQUFTOzt3Q0FpQk4sTUFBQztZQUNULFVBQVUsRUFBRTtVQUNkLFNBQVMsYUFBYSxLQUFLO29CQUNqQyxVQUFVLEdBQUcsT0FBTyxRQUFNLFNBQUE7VUFDcEIsUUFBTyxTQUFTO0FBRXRCLFdBQU8sUUFBUyxXQUFLO1VBRWpCLFFBQVEsUUFBSSxDQUNYLFNBQVMscUJBQXFCLFNBQVMsS0FBSztBQUU3QyxpQkFBUyxxQkFBcUIsS0FBSyxLQUFLO1dBQ3JDLFNBQVMsdUJBQXVCLFNBQVMsS0FBSztBQUNqRCxpQkFBUyx1QkFBdUIsS0FBSyxLQUFLO1dBQ3ZDLFNBQVMsdUJBQXVCLFNBQVMsS0FBSztBQUNqRCxpQkFBUyx1QkFBdUIsS0FBSyxLQUFLOztVQUV4QyxPQUFPLGFBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBS3BJaEMsOEJBQ0wsUUFDQSxhQUNBO0FBQ0EsUUFBTSxlQUFlLFFBQVEsZUFBZSxXQUFXO0FBRXZELGVBQWEsU0FBUyxLQUFLO0FBQUEsSUFDekIsTUFBTTtBQUFBLEVBQ1IsQ0FBQztBQUNELGVBQWEsU0FBUyxLQUFLO0FBQUEsSUFDekIsTUFBTTtBQUFBLEVBQ1IsQ0FBQztBQUVELE1BQUksd0JBQWdCO0FBQUEsSUFDbEIsUUFBUTtBQUFBLElBQ1IsT0FBTyxFQUFFLE9BQU87QUFBQSxFQUNsQixDQUFDO0FBQ0g7Ozt3QkNwQnVCOzs7Ozs7Ozs7Ozs7aUJDOENkLElBQU0sTUFBQTs7Ozs7Ozs7Ozs7Ozs7MENBSkUsSUFBTTs7Ozs7QUFKbkIsYUFVTSxRQUFBLEtBQUEsTUFBQTtBQVRKLGFBUVEsS0FBQSxLQUFBO0FBUE4sYUFLRSxPQUFBLEtBQUE7dUJBRlksSUFBUSxHQUFBLFFBQUEsTUFBQSxPQUFBOzs7Ozs7Ozs7Ozs7O2tFQURiLEtBQU0sTUFBQTs7Ozs7eUJBQ0QsS0FBUSxHQUFBLFFBQUEsTUFBQSxPQUFBOztnREFHckIsS0FBTSxNQUFBO0FBQUEsaUJBQUEsSUFBQSxRQUFBOzs7Ozs7Ozs7Ozs7Ozs7aUJBZEgsSUFBTSxLQUFHLFNBQVM7Ozs7OzttQkFLckIsSUFBTzs7aUNBQVosUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Z0JBTkwsU0FDUTs7Ozs7Ozs7OztBQVJYLGFBVU0sUUFBQSxNQUFBLE1BQUE7QUFUSixhQVFTLE1BQUEsTUFBQTs7OztBQUdYLGFBY00sUUFBQSxNQUFBLE1BQUE7Ozs7Ozs7Ozs7Z0RBbEJNLEtBQU0sS0FBRyxTQUFTO0FBQUssaUJBQUEsSUFBQSxRQUFBOztxQkFLMUIsS0FBTzs7bUNBQVosUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7d0NBQUo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BdENhLFlBQUEsUUFBQSxLQUFBLGFBQUEsU0FBQSxTQUFBLFlBQUEsR0FBQSxXQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UURLSixXQUFnQjtRQUNoQixnQkFBbUI7UUFDbkIsWUFBaUI7VUFFcEIsYUFBYTtNQUVqQixXQUFXLFNBQVM7a0JBSUw7O1VBQ2IsU0FBUyxpQkFBaUI7QUFBUyxlQUM5Qiw0QkFBSyxjQUFjLDJCQUEyQjtBQUV2RCxlQUFTLGVBQWU7WUFDbEIsT0FBTyxhQUFZO1lBQ25CLGFBQWEsTUFBTTs7Ozs7UUNPbkI7QUFBTSxtQkFBQSxHQUFFLFdBQVEsQ0FBQSxDQUFBOztBQUFBLG1CQUFBLEdBQ2YsV0FBVyxPQUFPO1VBQ2pCLEtBQUk7OztBQWNNLGVBQVEsd0JBQUEsaUJBQUEsSUFBQSxLQUFBLFNBQUEsS0FBQSxPQUFBOzs7MkNBQ1MsS0FBSTs7Ozs7Ozs7Ozs7QURoQ3pDO0FBQUMscUJBQUEsR0FBRSxTQUFTLFNBQVMsV0FBVyxJQUFJLFFBQVEsSUFBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBRVIzQywrQkFDTCxRQUNBLGFBQ0E7QUFDQSxRQUFNLEVBQUUsYUFBYTtBQUNyQixRQUFNLG1CQUFtQixXQUFXLDBCQUEwQixXQUFXO0FBRXpFLG1CQUFpQixVQUFVLEVBQUUsS0FBSyxxQkFBcUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU5RixNQUFJLG1CQUFXO0FBQUEsSUFDYixRQUFRO0FBQUEsSUFDUixPQUFPO0FBQUEsTUFDTDtBQUFBLE1BQ0EsYUFBYTtBQUFBLE1BQ2IsU0FBUyxVQUFVLFNBQVMsU0FBUztBQUFBLElBQ3ZDO0FBQUEsRUFDRixDQUFDO0FBQ0g7OztBQ3RCQSx3QkFBZ0M7QUFPekIsK0JBQ0wsUUFDQSxhQUNBO0FBQ0EsUUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBTSxnQkFBZ0IsV0FBVyxlQUFlLFdBQVc7QUFFM0QsTUFBSSwwQkFBUSxhQUFhLEVBQ3RCLFFBQVEsNkNBQTZDLEVBQ3JELFFBQVEsYUFDUCx1UEFBa1AsQ0FDcFAsRUFDQyxVQUFVLENBQUMsV0FDVixPQUFPLFNBQVMsU0FBUyxjQUFjLEVBQUUsU0FBUyxPQUFPLFVBQVU7QUFDakUsYUFBUyxpQkFBaUI7QUFDMUIsVUFBTSxPQUFPLGFBQWE7QUFDMUIsVUFBTSxPQUFPLGtCQUFrQixXQUFXLEVBQUUsS0FBSztBQUFBLEVBQ25ELENBQUMsQ0FDSDtBQUVGLE1BQUksMEJBQVEsYUFBYSxFQUN0QixRQUFRLHdCQUF3QixFQUNoQyxRQUNDLGFBQ0UseUNBQ0YsQ0FDRixFQUNDLFVBQVUsQ0FBQyxXQUNWLE9BQU8sU0FBUyxTQUFTLGdCQUFnQixFQUFFLFNBQVMsT0FBTyxVQUFVO0FBQ25FLGFBQVMsbUJBQW1CO0FBQzVCLFVBQU0sT0FBTyxhQUFhO0FBQzFCLFVBQU0sT0FBTyxrQkFBa0IsV0FBVyxFQUFFLEtBQUs7QUFBQSxFQUNuRCxDQUFDLENBQ0g7QUFFRixNQUFJLDBCQUFRLGFBQWEsRUFDdEIsUUFBUSxrQkFBa0IsRUFDMUIsUUFDQyxhQUNFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSw2S0FTRixDQUNGLEVBQ0MsUUFBUSxDQUFDLFVBQVM7QUFDakIsVUFBSyxTQUFTLFNBQVMsc0JBQXNCLEtBQUssRUFBRSxDQUFDO0FBQ3JELFVBQUssUUFBUSxTQUFTLFlBQVk7QUFDaEMsWUFBTSxRQUFRLE1BQUssU0FBUztBQUM1QixZQUFNLFNBQVMsTUFBTSxNQUFNLEVBQUU7QUFDN0IsVUFDRSxNQUFNLFVBQVUsS0FDaEIsT0FBTyxNQUFNLENBQUMsV0FBVSxDQUFDLEtBQUssS0FBSyxLQUFLLEtBQUssR0FBRyxFQUFFLFNBQVMsTUFBSyxDQUFDLEdBQ2pFO0FBQ0EsaUJBQVMsd0JBQXdCLE9BQU8sSUFBSSxDQUFDLFVBQzNDLE9BQU8sU0FBUyxLQUFLLENBQ3ZCO0FBQ0EsY0FBTSxPQUFPLGFBQWE7QUFDMUIsY0FBTSxPQUFPLGtCQUFrQixXQUFXLEVBQUUsS0FBSztBQUFBLE1BQ25ELE9BQU87QUFDTCxZQUFJLHlCQUNGLGtGQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFFSCxNQUFJLDBCQUFRLGFBQWEsRUFDdEIsUUFBUSw2QkFBNkIsRUFDckMsUUFDQyx3SUFDRixFQUNDLFVBQVUsQ0FBQyxXQUNWLE9BQU8sU0FBUyxTQUFTLGVBQWUsRUFBRSxTQUFTLE9BQU8sVUFBVTtBQUNsRSxhQUFTLGtCQUFrQjtBQUMzQixVQUFNLE9BQU8sYUFBYTtBQUMxQixVQUFNLE9BQU8sa0JBQWtCLFdBQVcsRUFBRSxLQUFLO0FBQUEsRUFDbkQsQ0FBQyxDQUNIO0FBR0YsTUFBSSwwQkFBUSxhQUFhLEVBQ3RCLFFBQVEsMENBQTBDLEVBQ2xELFFBQ0Msc0ZBQ0YsRUFDQyxVQUFVLENBQUMsV0FDVixPQUFPLFNBQVMsU0FBUyxZQUFZLEVBQUUsU0FBUyxPQUFPLFVBQVU7QUFDL0QsYUFBUyxlQUFlO0FBQ3hCLFVBQU0sT0FBTyxhQUFhO0FBQzFCLFVBQU0sT0FBTyxrQkFBa0IsV0FBVyxFQUFFLEtBQUs7QUFBQSxFQUNuRCxDQUFDLENBQ0g7QUFFRixNQUFJLDBCQUFRLGFBQWEsRUFDdEIsUUFBUSxtQ0FBbUMsRUFDM0MsUUFDQyxxTUFDRixFQUNDLFVBQVUsQ0FBQyxXQUNWLE9BQU8sU0FBUyxTQUFTLG1CQUFtQixFQUFFLFNBQVMsT0FBTyxVQUFVO0FBQ3RFLGFBQVMsc0JBQXNCO0FBQy9CLFVBQU0sT0FBTyxhQUFhO0FBQzFCLFVBQU0sT0FBTyxrQkFBa0IsV0FBVyxFQUFFLEtBQUs7QUFBQSxFQUNuRCxDQUFDLENBQ0g7QUFFRixNQUFJLDBCQUFRLGFBQWEsRUFDdEIsUUFBUSx3QkFBd0IsRUFDaEMsUUFBUSxrREFBa0QsRUFDMUQsVUFBVSxDQUFDLFdBQ1YsT0FBTyxTQUFTLFNBQVMsb0JBQW9CLEVBQUUsU0FBUyxPQUFPLFVBQVU7QUFDdkUsYUFBUyx1QkFBdUI7QUFDaEMsVUFBTSxPQUFPLGFBQWE7QUFDMUIsVUFBTSxPQUFPLGtCQUFrQixXQUFXLEVBQUUsS0FBSztBQUFBLEVBQ25ELENBQUMsQ0FDSDtBQXlCRixNQUFJLDBCQUFRLGFBQWEsRUFDdEIsUUFBUSxpQ0FBaUMsRUFDekMsUUFDQyw2R0FDRixFQUNDLFVBQVUsQ0FBQyxXQUNWLE9BQU8sU0FBUyxTQUFTLE1BQU0sRUFBRSxTQUFTLE9BQU8sVUFBVTtBQUN6RCxhQUFTLFNBQVM7QUFDbEIsVUFBTSxPQUFPLGFBQWE7QUFDMUIsUUFBSSxVQUFVLG1CQUFtQixXQUFXO0FBQzVDLFVBQU0sU0FDSixLQUNBLGFBQ0EsWUFDQSxRQUFRLFVBQVUsTUFDcEI7QUFBQSxFQUNGLENBQUMsQ0FDSDtBQUNKOzs7QUMzS0Esd0JBQWdDO0FBT3pCLDZCQUNMLFFBQ0EsNkJBQ0E7QUFDQSxRQUFNLEVBQUUsYUFBYTtBQUNyQixRQUFNLEVBQUUsY0FBYztBQUN0QixRQUFNLFNBQVMsVUFBVSxTQUFTO0FBRWxDLFFBQU0sa0JBQWtCLFdBQ3RCLGlCQUNBLDJCQUNGO0FBRUEsTUFBSSwwQkFBUSxlQUFlLEVBQ3hCLFFBQVEscUJBQXFCLEVBQzdCLFFBQ0MsYUFDRSw4ZUFDRixDQUNGLEVBQ0MsUUFBUSxDQUFDLFVBQVM7QUFDakIsVUFBSyxTQUFTLFNBQVMsaUJBQWlCO0FBQ3hDLFVBQUssUUFBUSxTQUFTLFlBQVk7QUFDaEMsWUFBTSxRQUFRLE1BQUssU0FBUztBQUM1QixVQUFJLFVBQVUsTUFBTSxXQUFXLEtBQUssR0FBRztBQUNyQyxpQkFBUyxvQkFBb0I7QUFDN0IsY0FBTSxPQUFPLGFBQWE7QUFDMUIsY0FBTSxhQUFhLE1BQU07QUFBQSxNQUMzQixPQUFPO0FBQ0wsWUFBSSx5QkFBTyxlQUFlO0FBQUEsTUFDNUI7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBQ0gsTUFBSSwwQkFBUSxlQUFlLEVBQ3hCLFFBQVEseUJBQXlCLEVBQ2pDLFFBQ0MsYUFDRSwrSkFDRixDQUNGLEVBQ0MsUUFBUSxDQUFDLFVBQVM7QUFDakIsVUFBSyxTQUFTLFNBQVMsaUJBQWlCO0FBQ3hDLFVBQUssUUFBUSxTQUFTLFlBQVk7QUFDaEMsWUFBTSxRQUFRLE1BQUssU0FBUztBQUM1QixlQUFTLG9CQUFvQjtBQUM3QixZQUFNLE9BQU8sYUFBYTtBQUMxQixZQUFNLGFBQWEsTUFBTTtBQUFBLElBQzNCO0FBQUEsRUFDRixDQUFDO0FBRUgsTUFBSSwwQkFBUSxlQUFlLEVBQ3hCLFFBQVEscUJBQXFCLEVBQzdCLFFBQVEsNkRBQTZELEVBQ3JFLFlBQVksQ0FBQyxPQUFPO0FBQ25CLFdBQU8sUUFBUSxDQUFDLFVBQVU7QUFDeEIsU0FBRyxVQUFVLE9BQU8sS0FBSztBQUFBLElBQzNCLENBQUM7QUFDRCxPQUFHLFNBQVMsU0FBUyxpQkFBaUI7QUFDdEMsT0FBRyxTQUFTLE9BQU8sVUFBVTtBQUMzQixlQUFTLG9CQUFvQjtBQUM3QixZQUFNLE9BQU8sYUFBYTtBQUMxQixZQUFNLGFBQWEsTUFBTTtBQUFBLElBQzNCLENBQUM7QUFBQSxFQUNILENBQUM7QUFDSCxNQUFJLDBCQUFRLGVBQWUsRUFDeEIsUUFBUSxtQ0FBbUMsRUFDM0MsUUFDQyxhQUNFLDZYQUNGLENBQ0YsRUFDQyxVQUFVLENBQUMsUUFDVixJQUNHLFNBQVMsU0FBUyw2QkFBNkIsRUFDL0MsU0FBUyxPQUFPLFVBQVU7QUFDekIsYUFBUyxnQ0FBZ0M7QUFDekMsVUFBTSxPQUFPLGFBQWE7QUFDMUIsVUFBTSxhQUFhLE1BQU07QUFBQSxFQUMzQixDQUFDLENBQ0w7QUFDSjs7O0FDdkZBLHdCQUEyQztBQU1wQyw4QkFDTCxRQUNBLDZCQUNBO0FBQ0EsUUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBTSxtQkFBbUIsV0FDdkIsZUFDQSwyQkFDRjtBQUVBLE1BQUksMEJBQVEsZ0JBQWdCLEVBQ3pCLFFBQVEsMEJBQTBCLEVBQ2xDLFFBQ0MsYUFDRSxzVEFDRixDQUNGLEVBQ0MsWUFBWSxDQUFDLE9BQTBCO0FBQ3RDLFVBQU0sVUFBVSxDQUFDO0FBQ2pCLGNBQVUsU0FBUyxTQUFTLEVBQUUsUUFDNUIsQ0FBQyxVQUFXLFFBQVEsU0FBUyxLQUMvQjtBQUNBLE9BQUcsV0FBVyxPQUFPLE9BQU8sU0FBUyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsRUFDN0MsU0FBUyxTQUFTLGNBQWMsRUFDaEMsU0FBUyxPQUFPLFVBQVU7QUFDekIsZUFBUyxpQkFBaUI7QUFDMUIsWUFBTSxPQUFPLGFBQWE7QUFDMUIsWUFBTSxhQUFhLE1BQU07QUFBQSxJQUMzQixDQUFDO0FBQUEsRUFDTCxDQUFDO0FBQ0w7OztBQ2xDQSx3QkFBMEM7QUFJbkMsNkJBQ0wsUUFDQSxhQUNBO0FBQ0EsUUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBTSxrQkFBa0IsUUFBUSxpQkFBaUIsV0FBVztBQUU1RCwwQkFBd0IsWUFBb0I7QUFDMUMsdUNBQWlCLGVBQ2YsWUFDQSxnQkFBZ0IsVUFBVSxHQUMxQixJQUNBLElBQ0Y7QUFBQSxFQUNGO0FBR0Esa0JBQWdCLFNBQVMsS0FBSztBQUFBLElBQzVCLE1BQU07QUFBQSxFQUNSLENBQUM7QUFFRCxNQUFJLDBCQUFRLGVBQWUsRUFDeEIsUUFBUSx5QkFBeUIsRUFDakMsUUFBUSxrRUFBa0UsRUFDMUUsVUFBVSxDQUFDLE9BQ1YsR0FDRyxTQUFTLFNBQVMsaUJBQWlCLG1CQUFtQixFQUN0RCxTQUFTLE9BQU8sUUFBUTtBQUN2QixhQUFTLGlCQUFpQixzQkFBc0I7QUFDaEQsVUFBTSxPQUFPLGFBQWE7QUFDMUIsVUFBTSxhQUFhLE1BQU07QUFBQSxFQUMzQixDQUFDLENBQ0w7QUFFRixpQkFBZSwwRkFBMEY7QUFFekcsTUFBSSwwQkFBUSxlQUFlLEVBQ3hCLFFBQVEsb0JBQW9CLEVBQzVCLFFBQVEsZ0RBQWdELEVBQ3hELFVBQVUsQ0FBQyxPQUNWLEdBQ0csU0FBUyxTQUFTLGlCQUFpQix3QkFBd0IsRUFDM0QsU0FBUyxPQUFPLFFBQVE7QUFDdkIsYUFBUyxpQkFBaUIsMkJBQTJCO0FBQ3JELFVBQU0sT0FBTyxhQUFhO0FBQzFCLFVBQU0sYUFBYSxNQUFNO0FBQUEsRUFDM0IsQ0FBQyxDQUNMO0FBRUYsaUJBQWUsc0dBQXNHO0FBRXJILE1BQUksMEJBQVEsZUFBZSxFQUN4QixRQUFRLDRCQUE0QixFQUNwQyxRQUFRLHlDQUF5QyxFQUNqRCxVQUFVLENBQUMsT0FDVixHQUNHLFNBQVMsU0FBUyxpQkFBaUIsc0JBQXNCLEVBQ3pELFNBQVMsT0FBTyxRQUFRO0FBQ3ZCLGFBQVMsaUJBQWlCLHlCQUF5QjtBQUNuRCxVQUFNLE9BQU8sYUFBYTtBQUMxQixVQUFNLGFBQWEsTUFBTTtBQUFBLEVBQzNCLENBQUMsQ0FDTDtBQUVGLGlCQUFlLDBGQUEwRjtBQUV6RyxNQUFJLDBCQUFRLGVBQWUsRUFDeEIsUUFBUSxZQUFZLEVBQ3BCLFFBQVEsNkRBQTZELEVBQ3JFLFVBQVUsQ0FBQyxPQUNWLEdBQ0csU0FBUyxTQUFTLGlCQUFpQix3QkFBd0IsRUFDM0QsU0FBUyxPQUFPLFFBQVE7QUFDdkIsYUFBUyxpQkFBaUIsMkJBQTJCO0FBQ3JELFVBQU0sT0FBTyxhQUFhO0FBQzFCLFVBQU0sYUFBYSxNQUFNO0FBQUEsRUFDM0IsQ0FBQyxDQUNMO0FBRUYsaUJBQWUsdUZBQXVGO0FBRXRHLE1BQUksMEJBQVEsZUFBZSxFQUN4QixRQUFRLFNBQVMsRUFDakIsUUFDQyxtRkFDRixFQUNDLFVBQVUsQ0FBQyxPQUNWLEdBQ0csU0FBUyxTQUFTLGlCQUFpQixnQkFBZ0IsRUFDbkQsU0FBUyxPQUFPLFFBQVE7QUFDdkIsYUFBUyxpQkFBaUIsbUJBQW1CO0FBQzdDLFVBQU0sT0FBTyxhQUFhO0FBQzFCLFVBQU0sYUFBYSxNQUFNO0FBQUEsRUFDM0IsQ0FBQyxDQUNMO0FBRUYsaUJBQWUsbUhBQW1IO0FBRWxJLE1BQUksMEJBQVEsZUFBZSxFQUN4QixRQUFRLHNDQUFzQyxFQUM5QyxRQUNDLHVJQUNGLEVBQ0MsVUFBVSxDQUFDLFdBQ1YsT0FDRyxTQUFTLFNBQVMsNkJBQTZCLEVBQy9DLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGFBQVMsZ0NBQWdDO0FBQ3pDLFVBQU0sT0FBTyxhQUFhO0FBQzFCLFVBQU0sYUFBYSxNQUFNO0FBQUEsRUFDM0IsQ0FBQyxDQUNMO0FBQ0o7OztBQ3RIQSx3QkFBMkM7QUFNcEMsNEJBQ0wsUUFDQSw2QkFDQTtBQUNBLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU0saUJBQWlCLFdBQVcsYUFBYSwyQkFBMkI7QUFFMUUsTUFBSSwwQkFBUSxjQUFjLEVBQ3ZCLFFBQVEsd0JBQXdCLEVBQ2hDLFFBQ0MsYUFDRSxrVEFDRixDQUNGLEVBQ0MsWUFBWSxDQUFDLE9BQTBCO0FBRXRDLFVBQU0sVUFBVSxDQUFDO0FBQ2pCLGNBQVUsU0FBUyxTQUFTLEVBQUUsUUFDNUIsQ0FBQyxVQUFXLFFBQVEsU0FBUyxLQUMvQjtBQUNBLE9BQUcsV0FBVyxPQUFPLE9BQU8sU0FBUyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsRUFDN0MsU0FBUyxTQUFTLFlBQVksRUFDOUIsU0FBUyxPQUFPLFVBQVU7QUFDekIsZUFBUyxlQUFlO0FBQ3hCLFlBQU0sT0FBTyxhQUFhO0FBQzFCLFlBQU0sYUFBYSxNQUFNO0FBQUEsSUFDM0IsQ0FBQztBQUFBLEVBQ0wsQ0FBQztBQUNMOzs7QUNsQ0Esd0JBQWdDO0FBVXpCLDhCQUNMLFFBQ0EsYUFDQTtBQUNBLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU0sbUJBQW1CLFdBQVcsYUFBYSxXQUFXO0FBRTVELG1CQUFpQixVQUFVO0FBQUEsSUFDekIsTUFBTTtBQUFBLEVBQ1IsQ0FBQztBQUVELE1BQUksMEJBQVEsZ0JBQWdCLEVBQ3pCLFFBQVEsOENBQThDLEVBQ3RELFVBQVUsQ0FBQyxRQUFRO0FBQ2xCLFFBQUksU0FBUyxTQUFTLGlCQUFpQjtBQUN2QyxRQUFJLFNBQVMsT0FBTyxVQUFVO0FBQzVCLGVBQVMsb0JBQW9CO0FBQzdCLFlBQU0sT0FBTyxhQUFhO0FBQUEsSUFDNUIsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUNILE1BQUksMEJBQVEsZ0JBQWdCLEVBQ3pCLFFBQVEscUJBQXFCLEVBQzdCLFFBQ0MsYUFDRSwyTkFDRixDQUNGLEVBQ0MsVUFBVSxDQUFDLFFBQVE7QUFDbEIsUUFBSSxTQUFTLFNBQVMsaUJBQWlCO0FBQ3ZDLFFBQUksU0FBUyxPQUFPLFVBQVU7QUFDNUIsZUFBUyxvQkFBb0I7QUFDN0IsWUFBTSxPQUFPLGFBQWE7QUFBQSxJQUM1QixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBRUgsTUFBSSwwQkFBUSxnQkFBZ0IsRUFDekIsUUFBUSx3QkFBd0IsRUFDaEMsUUFDQyxhQUNFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0FRRixDQUNGLEVBQ0MsUUFBUSxDQUFDLFVBQVM7QUFDakIsVUFBSyxTQUFTLFNBQVMsaUJBQWlCO0FBQ3hDLFVBQUssUUFBUSxTQUFTLFlBQVk7QUFDaEMsWUFBTSxRQUFRLE1BQUssU0FBUztBQUM1QixVQUFJLHVCQUF1QixLQUFLLENBQUMsU0FBUyxNQUFNLFNBQVMsSUFBSSxDQUFDLEdBQUc7QUFDL0QsWUFBSSx5QkFDRixxREFBcUQsdUJBQXVCLEtBQzFFLEdBQ0YsR0FDRjtBQUNBLGNBQUssU0FBUyxTQUFTLGlCQUFpQjtBQUFBLE1BQzFDLE9BQU87QUFDTCxpQkFBUyxvQkFBb0I7QUFDN0IsY0FBTSxPQUFPLGFBQWE7QUFBQSxNQUM1QjtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDSCxNQUFJLDBCQUFRLGdCQUFnQixFQUN6QixRQUFRLGFBQWEsRUFDckIsUUFBUSxnRUFBZ0UsRUFDeEUsZ0JBQWdCLENBQUMsWUFBVztBQUMzQixZQUNHLGlCQUFpQixpQkFBaUIsVUFBVSxFQUM1QyxTQUFTLFNBQVMsVUFBVSxFQUM1QixTQUFTLE9BQU8sVUFBVTtBQUN6QixlQUFTLGFBQWE7QUFDdEIsWUFBTSxPQUFPLGFBQWE7QUFBQSxJQUM1QixDQUFDO0FBQUEsRUFDTCxDQUFDO0FBRUgsUUFBTSw0QkFBNEIsSUFBSSwwQkFBUSxnQkFBZ0IsRUFDM0QsU0FBUyxzQkFBc0IsRUFDL0IsUUFBUSxrQ0FBa0MsRUFDMUMsUUFDQyxhQUNFO0FBQUEsa0dBRUYsQ0FDRjtBQUVGLGFBQVcsUUFBUSxDQUFDLFFBQ2xCLDBCQUEwQixRQUFRLENBQUMsVUFBUztBQUMxQyxVQUNHLGVBQWUsaUJBQWlCLElBQUksRUFDcEMsU0FBUyxTQUFTLHNCQUFzQixJQUFJO0FBQy9DLFVBQUssUUFBUSxTQUFTLFlBQVk7QUFDaEMsZUFBUyxzQkFBc0IsT0FBTyxNQUFLLFNBQVM7QUFDcEQsWUFBTSxPQUFPLGFBQWE7QUFBQSxJQUM1QjtBQUFBLEVBQ0YsQ0FBQyxDQUNIO0FBRUY7OztBQzlHQSx3QkFBbUQ7QUFVNUMsOEJBQ0wsUUFDQSxhQUNBO0FBQ0EsUUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBTSxlQUFlLFdBQVcsb0JBQW9CLFdBQVc7QUFFL0QsTUFBSSwwQkFBUSxZQUFZLEVBQ3JCLFFBQVEsNENBQTRDLEVBQ3BELFFBQ0MsNEVBQ0YsRUFDQyxVQUFVLENBQUMsV0FDVixPQUFPLFNBQVMsU0FBUyxtQkFBbUIsRUFBRSxTQUFTLE9BQU8sVUFBVTtBQUN0RSxhQUFTLHNCQUFzQjtBQUMvQixVQUFNLE9BQU8sYUFBYTtBQUMxQixVQUFNLFVBQVUsTUFBTTtBQUFBLEVBQ3hCLENBQUMsQ0FDSDtBQUVGLGVBQWEsU0FBUyxJQUFJO0FBQzFCLGVBQWEsVUFBVTtBQUFBLElBQ3JCLEtBQUs7QUFBQSxJQUNMLE1BQU07QUFBQSxFQUNSLENBQUM7QUFFRCxNQUFJLG1CQUFXO0FBQUEsSUFDYixRQUFRO0FBQUEsSUFDUixPQUFPO0FBQUEsTUFDTDtBQUFBLE1BQ0EsYUFBYTtBQUFBLE1BQ2IsU0FBUyxVQUFVLFNBQVMsV0FBVyxJQUFJO0FBQUEsSUFDN0M7QUFBQSxFQUNGLENBQUM7QUFFRCxRQUFNLGNBQWMsSUFBSSwwQkFBUSxZQUFZLEVBQ3pDLFFBQVEsZUFBZSxFQUN2QixRQUNDLGlHQUNGLEVBQ0MsVUFBVSxDQUFDLFdBQVc7QUFDckIsV0FDRyxXQUFXLFlBQVksRUFDdkIsU0FBUyxTQUFTLFNBQVMsRUFDM0IsU0FBUyxPQUFPLFVBQVU7QUFDekIsZUFBUyxZQUFZO0FBQ3JCLFlBQU0sT0FBTyxhQUFhO0FBQzFCLFlBQU0sVUFBVSxNQUFNO0FBQUEsSUFDeEIsQ0FBQztBQUFBLEVBQ0wsQ0FBQyxFQUNBLFVBQVUsQ0FBQyxXQUFXO0FBQ3JCLFdBQ0csV0FBVyxXQUFXLEVBQ3RCLFNBQVMsU0FBUyxRQUFRLEVBQzFCLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGVBQVMsV0FBVztBQUNwQixZQUFNLE9BQU8sYUFBYTtBQUMxQixZQUFNLFVBQVUsTUFBTTtBQUFBLElBQ3hCLENBQUM7QUFBQSxFQUNMLENBQUMsRUFDQSxVQUFVLENBQUMsV0FBVztBQUNyQixXQUNHLFdBQVcsb0JBQW9CLEVBQy9CLFNBQVMsU0FBUyxZQUFZLEVBQzlCLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGVBQVMsZUFBZTtBQUN4QixZQUFNLE9BQU8sYUFBYTtBQUMxQixZQUFNLFVBQVUsTUFBTTtBQUFBLElBQ3hCLENBQUM7QUFBQSxFQUNMLENBQUM7QUFFSCxNQUFJLElBQUksUUFBUSxRQUFRLFVBQVUsUUFBVztBQUMzQyxnQkFBWSxVQUFVLENBQUMsV0FBVztBQUNoQyxhQUNHLFdBQVcsWUFBWSxFQUN2QixTQUFTLFNBQVMsU0FBUyxFQUMzQixTQUFTLE9BQU8sVUFBVTtBQUN6QixpQkFBUyxZQUFZO0FBQ3JCLGNBQU0sT0FBTyxhQUFhO0FBQzFCLGNBQU0sVUFBVSxNQUFNO0FBQUEsTUFDeEIsQ0FBQztBQUFBLElBQ0wsQ0FBQztBQUFBLEVBQ0g7QUFFQSxNQUFJLDBCQUFRLFlBQVksRUFDckIsUUFBUSxpQkFBaUIsRUFDekIsUUFBUSwwQ0FBMEMsRUFDbEQsVUFBVSxDQUFDLFdBQVc7QUFDckIsV0FDRyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQ2xCLFNBQVMsU0FBUyxnQkFBZ0IsRUFDbEMsa0JBQWtCO0FBRXJCLFdBQU8sU0FBUyxTQUFTLFlBQVk7QUFDbkMsZUFBUyxtQkFBbUIsT0FBTyxTQUFTO0FBQzVDLFlBQU0sT0FBTyxhQUFhO0FBQzFCLFlBQU0sVUFBVSxNQUFNO0FBQUEsSUFDeEI7QUFBQSxFQUNGLENBQUM7QUFHSCxNQUFJLDBCQUFRLFlBQVksRUFDckIsUUFBUSxlQUFlLEVBQ3ZCLFFBQ0MsYUFDRSxtU0FDRixDQUNGLEVBQ0MsUUFBUSxDQUFDLFVBQVM7QUFDakIsVUFDRyxlQUFlLFlBQVksRUFDM0IsU0FBUyxTQUFTLFdBQVcsS0FBSyxJQUFJLENBQUM7QUFFMUMsVUFBSyxRQUFRLFNBQVMsWUFBWTtBQUNoQyxZQUFNLFNBQVMsYUFBYSxNQUFLLFNBQVMsQ0FBQztBQUMzQyxVQUNFLE9BQU8sT0FBTyxVQUNkLE9BQU8sTUFBTSxDQUFDLFdBQVUsVUFBVSxNQUFLLENBQUMsR0FDeEM7QUFDQSxpQkFBUyxhQUFhO0FBQ3RCLGNBQU0sT0FBTyxhQUFhO0FBQUEsTUFDNUI7QUFBTyxZQUFJLHlCQUFPLCtDQUErQztBQUFBLElBRW5FO0FBQUEsRUFDRixDQUFDO0FBRUgsTUFBSSwwQkFBUSxZQUFZLEVBQ3JCLFFBQVEsaURBQWlELEVBQ3pELFFBQ0Msb0lBQ0YsRUFDQyxVQUFVLENBQUMsV0FDVixPQUNHLFNBQVMsU0FBUyw2QkFBNkIsRUFDL0MsU0FBUyxPQUFPLFVBQVU7QUFDekIsYUFBUyxnQ0FBZ0M7QUFFekMsVUFBTSxPQUFPLGFBQWE7QUFDMUIsVUFBTSxVQUFVLE1BQU07QUFBQSxFQUN4QixDQUFDLENBQ0w7QUFFRixNQUFJLDBCQUFRLFlBQVksRUFDckIsUUFBUSxvQ0FBb0MsRUFDNUMsUUFDQyxrRkFDRixFQUNDLFlBQVksUUFBTTtBQUNqQixVQUFNLFVBQVUsQ0FBQztBQUNqQixrQkFBYyxRQUFRLFlBQVU7QUFDOUIsY0FBUSxVQUFVO0FBQUEsSUFDcEIsQ0FBQztBQUVELE9BQUcsV0FBVyxPQUFPO0FBQ3JCLE9BQUcsU0FBUyxTQUFTLE9BQU87QUFDNUIsT0FBRyxTQUFTLE9BQU8sUUFBUTtBQUN6QixlQUFTLFVBQVU7QUFDbkIsWUFBTSxPQUFPLGFBQWE7QUFDMUIsWUFBTSxVQUFVLE1BQU07QUFBQSxJQUN4QixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBRUgsTUFBSSwwQkFBUSxZQUFZLEVBQ3JCLFFBQVEsV0FBVyxFQUNuQixRQUFRLGFBQ1Asa0dBQTZGLENBQy9GLEVBQ0MsUUFBUSxDQUFDLFVBQ1IsTUFDRyxlQUFlLFFBQUcsRUFDbEIsU0FBUyxTQUFTLGNBQWMsRUFDaEMsU0FBUyxPQUFPLFVBQVU7QUFDekIsYUFBUyxpQkFBaUI7QUFDMUIsVUFBTSxPQUFPLGFBQWE7QUFDMUIsVUFBTSxVQUFVLE1BQU07QUFBQSxFQUN4QixDQUFDLENBQ0w7QUFFRixNQUFJLDBCQUFRLFlBQVksRUFDckIsUUFBUSx1QkFBdUIsRUFDL0IsUUFDQyxpR0FDRixFQUNDLFFBQVEsQ0FBQyxVQUNSLE1BQ0csZUFBZSxpQ0FBaUMsRUFDaEQsU0FBUyxTQUFTLGFBQWEsRUFDL0IsU0FBUyxPQUFPLFVBQVU7QUFDekIsYUFBUyxnQkFBZ0I7QUFDekIsVUFBTSxPQUFPLGFBQWE7QUFDMUIsVUFBTSxVQUFVLE1BQU07QUFBQSxFQUN4QixDQUFDLENBQ0w7QUFFRixNQUFJLDBCQUFRLFlBQVksRUFDckIsUUFBUSw4QkFBOEIsRUFDdEMsUUFDQyxpSkFDRixFQUNDLFVBQVUsQ0FBQyxXQUNWLE9BQ0csU0FBUyxTQUFTLHlCQUF5QixFQUMzQyxTQUFTLE9BQU8sVUFBVTtBQUN6QixhQUFTLDRCQUE0QjtBQUNyQyxVQUFNLE9BQU8sYUFBYTtBQUMxQixVQUFNLFVBQVUsTUFBTTtBQUFBLEVBQ3hCLENBQUMsQ0FDTDtBQUdGLE1BQUksMEJBQVEsWUFBWSxFQUNyQixRQUFRLHlCQUF5QixFQUNqQyxRQUFRLHlDQUF5QyxFQUNqRCxVQUFVLENBQUMsV0FBVztBQUNyQixXQUNHLFNBQVMsU0FBUyxhQUFhLEVBQy9CLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGVBQVMsZ0JBQWdCO0FBQ3pCLFlBQU0sT0FBTyxhQUFhO0FBQUEsSUFDNUIsQ0FBQztBQUFBLEVBQ0wsQ0FBQztBQUVILE1BQUksMEJBQVEsWUFBWSxFQUNyQixRQUFRLG1CQUFtQixFQUMzQixRQUNDLGFBQ0UsbUpBQ0YsQ0FDRixFQUNDLFlBQVksQ0FBQyxPQUEwQjtBQUN0QyxPQUFHLFVBQVUsYUFBYSxXQUFXO0FBQ3JDLE9BQUcsVUFBVSxZQUFZLFVBQVU7QUFDbkMsT0FBRyxVQUFVLFFBQVEsWUFBWTtBQUNqQyxPQUFHLFVBQVUsUUFBUSxNQUFNO0FBQzNCLE9BQUcsVUFBVSxjQUFjLFlBQVk7QUFFdkMsT0FBRyxTQUFTLFNBQVMsV0FBVztBQUNoQyxPQUFHLFNBQVMsT0FBTyxVQUFVO0FBQzNCLGVBQVMsY0FBYztBQUN2QixZQUFNLE9BQU8sYUFBYTtBQUMxQixZQUFNLFVBQVUsTUFBTTtBQUFBLElBQ3hCLENBQUM7QUFBQSxFQUNILENBQUM7QUFDTDs7O0FDOVBBLHdCQUEyQztBQU1wQyw2QkFDTCxRQUNBLGFBQ0E7QUFDQSxRQUFNLEVBQUUsYUFBYTtBQUNyQixRQUFNLGtCQUFrQixXQUFXLHVCQUF1QixXQUFXO0FBRXJFLE1BQUksMEJBQVEsZUFBZSxFQUN4QixRQUFRLDRCQUE0QixFQUNwQyxRQUFRLHdDQUF3QyxFQUNoRCxZQUFZLENBQUMsT0FBMEI7QUFDdEMsYUFBUyxRQUFRLENBQUMsV0FBb0I7QUFDcEMsU0FBRyxVQUFVLFFBQVEsTUFBTTtBQUFBLElBQzdCLENBQUM7QUFDRCxPQUFHLFNBQVMsU0FBUyxRQUFRO0FBRTdCLE9BQUcsU0FBUyxPQUFPLFVBQW1CO0FBQ3BDLGVBQVMsV0FBVztBQUNwQixZQUFNLE9BQU8sYUFBYTtBQUFBLElBQzVCLENBQUM7QUFBQSxFQUNILENBQUM7QUFDSCxNQUFJLDBCQUFRLGVBQWUsRUFDeEIsUUFBUSxrQkFBa0IsRUFDMUIsUUFBUSwwREFBMEQsRUFDbEUsWUFBWSxDQUFDLE9BQU87QUFDbkIsY0FBVSxRQUFRLENBQUMsV0FBc0I7QUFDdkMsU0FBRyxVQUFVLFFBQVEsTUFBTTtBQUFBLElBQzdCLENBQUM7QUFDRCxPQUFHLFNBQVMsU0FBUyxXQUFXO0FBRWhDLE9BQUcsU0FBUyxPQUFPLFVBQXFCO0FBQ3RDLGVBQVMsY0FBYztBQUN2QixZQUFNLE9BQU8sYUFBYTtBQUFBLElBQzVCLENBQUM7QUFBQSxFQUNILENBQUM7QUFDSCxNQUFJLDBCQUFRLGVBQWUsRUFDeEIsUUFBUSxxQkFBcUIsRUFDN0IsUUFBUSwwQ0FBMEMsRUFDbEQsWUFBWSxDQUFDLE9BQTBCO0FBQ3RDLGVBQVcsUUFBUSxDQUFDLFdBQW1CO0FBQ3JDLFNBQUcsVUFBVSxRQUFRLE1BQU07QUFBQSxJQUM3QixDQUFDO0FBQ0QsT0FBRyxTQUFTLFNBQVMsU0FBUztBQUU5QixPQUFHLFNBQVMsT0FBTyxVQUFrQjtBQUNuQyxlQUFTLFlBQVk7QUFDckIsWUFBTSxPQUFPLGFBQWE7QUFBQSxJQUM1QixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0gsTUFBSSwwQkFBUSxlQUFlLEVBQ3hCLFFBQVEsa0JBQWtCLEVBQzFCLFFBQVEsMERBQTBELEVBQ2xFLFlBQVksQ0FBQyxPQUEwQjtBQUN0QyxnQkFBWSxRQUFRLENBQUMsV0FBbUI7QUFDdEMsU0FBRyxVQUFVLFFBQVEsTUFBTTtBQUFBLElBQzdCLENBQUM7QUFDRCxPQUFHLFNBQVMsU0FBUyxNQUFNO0FBRTNCLE9BQUcsU0FBUyxPQUFPLFVBQWtCO0FBQ25DLGVBQVMsU0FBUztBQUNsQixZQUFNLE9BQU8sYUFBYTtBQUFBLElBQzVCLENBQUM7QUFBQSxFQUNILENBQUM7QUFDTDs7O0FDckVBLHdCQUF3QjtBQU1qQiw2QkFDTCxRQUNBLGFBQ0E7QUFDQSxRQUFNLEVBQUUsYUFBYTtBQUNyQixRQUFNLHdCQUF3QixXQUM1Qiw2QkFDQSxXQUNGO0FBRUEsd0JBQXNCLFVBQVU7QUFBQSxJQUM5QixLQUFLO0FBQUEsSUFDTCxNQUFNO0FBQUEsRUFDUixDQUFDO0FBRUQsTUFBSSxtQkFBVztBQUFBLElBQ2IsUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLE1BQ0w7QUFBQSxNQUNBLFNBQVMsVUFBVSxTQUFTLFNBQVM7QUFBQSxNQUNyQyxhQUFhO0FBQUEsSUFDZjtBQUFBLEVBQ0YsQ0FBQztBQUVELE1BQUksMEJBQVEscUJBQXFCLEVBQzlCLFFBQVEsY0FBYyxFQUN0QixRQUNDLGdIQUNGLEVBQ0MsVUFBVSxDQUFDLFdBQ1YsT0FBTyxTQUFTLFNBQVMsY0FBYyxFQUFFLFNBQVMsT0FBTyxVQUFVO0FBQ2pFLGFBQVMsaUJBQWlCO0FBQzFCLFVBQU0sT0FBTyxhQUFhO0FBQUEsRUFDNUIsQ0FBQyxDQUNIO0FBRUYsTUFBSSwwQkFBUSxxQkFBcUIsRUFDOUIsUUFDQyxhQUNFLDhEQUNGLENBQ0YsRUFDQyxRQUNDLDJMQUNGLEVBQ0MsVUFBVSxDQUFDLFdBQ1YsT0FBTyxTQUFTLFNBQVMsa0JBQWtCLEVBQUUsU0FBUyxPQUFPLFVBQVU7QUFDckUsYUFBUyxxQkFBcUI7QUFDOUIsVUFBTSxPQUFPLGFBQWE7QUFBQSxFQUM1QixDQUFDLENBQ0g7QUFDSjs7O0E1QmpDTyxJQUFNLGVBQWUsQ0FBQyxTQUMzQixlQUFlLENBQUMsU0FBVSxLQUFLLFVBQVUsRUFBRSxZQUFZLElBQUs7QUFFdkQsSUFBTSxVQUFVLENBQUMsT0FBYyxXQUNwQyxPQUFPLFNBQVMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsU0FBUyxXQUFXLEVBQUUsWUFBSyxDQUFDLENBQUM7QUFFaEUsSUFBTSxhQUFhLENBQUMsT0FBYyxXQUN2QyxPQUFPLFVBQVU7QUFBQSxFQUNmLE1BQU0sRUFBRSxPQUFPLHNCQUFzQjtBQUN2QyxDQUFDLEVBQ0UsU0FBUyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxTQUFTLFdBQVcsRUFBRSxZQUFLLENBQUMsQ0FBQztBQUU1RCxJQUFNLGVBQU4sY0FBMkIsbUNBQWlCO0FBQUEsRUFHakQsWUFBWSxRQUFrQjtBQUM1QixVQUFNLEtBQUssTUFBTTtBQUNqQixTQUFLLFNBQVM7QUFBQSxFQUNoQjtBQUFBLEVBRUEsTUFBTSxVQUF5QjtBQUM3QixVQUFNLEVBQUUsUUFBUSxnQkFBZ0I7QUFDaEMsVUFBTSxFQUFFLGFBQWE7QUFFckIsZ0JBQVksTUFBTTtBQUNsQixnQkFBWSxTQUFTLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELGdCQUFZLFNBQVMsaUJBQWlCO0FBRXRDLHlCQUFxQixRQUFRLFdBQVc7QUFDeEMsd0JBQW9CLFFBQVEsV0FBVztBQUN2Qyx1QkFBbUIsUUFBUSxXQUFXO0FBRXRDLFVBQU0sY0FBYyxRQUFRLFNBQVMsV0FBVztBQUVoRCxRQUFJLDBCQUFRLFdBQVcsRUFDcEIsUUFBUSx1QkFBdUIsRUFDL0IsUUFBUSxhQUFhLDhGQUE4RixDQUFDLEVBQ3BILFVBQVUsQ0FBQyxXQUNWLE9BQ0csV0FBVyxrQkFBa0IsRUFDN0IsU0FBUyxTQUFTLE9BQU8sRUFDekIsU0FBUyxPQUFPLFVBQVU7QUFDekIsZUFBUyxVQUFVO0FBQ25CLFlBQU0sT0FBTyxhQUFhO0FBQzFCLFlBQU0sVUFBVSxNQUFNO0FBQUEsSUFDeEIsQ0FBQyxDQUNMLEVBQ0MsVUFBVSxDQUFDLFdBQVc7QUFDckIsYUFDRyxXQUFXLGFBQWEsRUFDeEIsU0FBUyxTQUFTLGdCQUFnQixFQUNsQyxTQUFTLE9BQU8sVUFBVTtBQUN6QixpQkFBUyxtQkFBbUI7QUFDNUIsY0FBTSxPQUFPLGFBQWE7QUFBQSxNQUM1QixDQUFDO0FBQUEsSUFDTCxDQUFDLEVBQ0EsVUFBVSxDQUFDLFdBQVc7QUFDckIsYUFDRyxXQUFXLFlBQVksRUFDdkIsU0FBUyxTQUFTLGNBQWMsRUFDaEMsU0FBUyxPQUFPLFVBQVU7QUFDekIsaUJBQVMsaUJBQWlCO0FBQzFCLGNBQU0sT0FBTyxhQUFhO0FBQUEsTUFDNUIsQ0FBQztBQUFBLElBQ0wsQ0FBQyxFQUNBLFVBQVUsQ0FBQyxXQUFXO0FBQ3JCLGFBQ0csV0FBVyxXQUFXLEVBQ3RCLFNBQVMsU0FBUyxjQUFjLEVBQ2hDLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGlCQUFTLGlCQUFpQjtBQUMxQixjQUFNLE9BQU8sYUFBYTtBQUFBLE1BQzVCLENBQUM7QUFBQSxJQUNMLENBQUM7QUFFSCxnQkFBWSxTQUFTLElBQUk7QUFFekIsMEJBQXNCLFFBQVEsV0FBVztBQUN6Qyx5QkFBcUIsUUFBUSxXQUFXO0FBQ3hDLHdCQUFvQixRQUFRLFdBQVc7QUFHdkMsVUFBTSw4QkFBOEIsUUFDbEMsMkJBQ0EsV0FDRjtBQUVBLHVCQUFtQixRQUFRLDJCQUEyQjtBQUN0RCx5QkFBcUIsUUFBUSwyQkFBMkI7QUFDeEQsd0JBQW9CLFFBQVEsMkJBQTJCO0FBQ3ZELDZCQUF5QixRQUFRLDJCQUEyQjtBQUM1RCxtQkFBZSxRQUFRLDJCQUEyQjtBQUNsRCx1QkFBbUIsUUFBUSwyQkFBMkI7QUFDdEQsd0JBQW9CLFFBQVEsMkJBQTJCO0FBQ3ZELHdCQUFvQixRQUFRLDJCQUEyQjtBQUV2RCxVQUFNLGNBQWMsUUFBUSxZQUFZLFdBQVc7QUFDbkQsd0JBQW9CLFFBQVEsV0FBVztBQUN2QywyQkFBdUIsUUFBUSxXQUFXO0FBQzFDLHlCQUFxQixRQUFRLFdBQVc7QUFDeEMsMEJBQXNCLFFBQVEsV0FBVztBQUV6QywwQkFBc0IsUUFBUSxXQUFXO0FBRXpDLFFBQUksYUFBSyxFQUFFLFFBQVEsWUFBWSxDQUFDO0FBQUEsRUFDbEM7QUFDRjs7O0E2QmxJQSx3QkFBd0M7Ozs7Ozs7Ozs7O0FDSTlCLGFBQWdVLFFBQUEsT0FBQSxNQUFBOzs7Ozs7Ozs7Ozs4REFEOVIsSUFBTyxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7bUlBQVAsS0FBTyxFQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCRW9EbkIsSUFBSSxNQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUxoQyxhQU1NLFFBQUEsS0FBQSxNQUFBO0FBREosYUFBbUMsS0FBQSxFQUFBOzs7Ozs7Ozs7Ozs7O2dEQUFULElBQUksTUFBQTtBQUFBLGlCQUFBLElBQUEsUUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQkFOM0IsSUFBSzs7aUNBQVYsUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7Z0JBTkMsaUJBRUw7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFWSixhQXVCTSxRQUFBLEtBQUEsTUFBQTtBQXRCSixhQUFrQyxLQUFBLEVBQUE7O0FBQ2xDLGFBS08sS0FBQSxJQUFBOzs7QUFDUCxhQUdRLEtBQUEsS0FBQTs7QUFETixhQUE0RCxPQUFBLE1BQUE7OEJBQVQsSUFBSyxFQUFBOztBQUUxRCxhQUFxRSxLQUFBLE1BQUE7dUJBQVgsSUFBTzs7Ozs7Ozs7Ozs7Ozs7O3dDQUZaLEtBQUssSUFBQTtnQ0FBTCxLQUFLLEVBQUE7Ozt5QkFFQSxLQUFPOzs7cUJBRTFELEtBQUs7O21DQUFWLFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7O3dDQUFKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FEM0NTLFdBQWdCO1FBQ2hCLGNBQW9CO1VBRXZCLFVBQVU7UUFDWixRQUFRLElBQUksTUFBTSxpQkFBZ0I7TUFFcEMsUUFBZ0I7TUFDaEIsUUFBSyxJQUFPLE9BQU8sT0FBTyxHQUFHO01BQzdCLFVBQVU7UUFTUixXQUFZLFlBQWE7U0FDeEI7QUFBSztXQUNILE1BQ0osSUFBSyxVQUFTLEtBQUssUUFBUSxFQUMzQixPQUNFLFVBQUksQ0FBTSxNQUFNLFVBQVUsSUFBSSxFQUFFLFVBQVUsWUFBWSxPQUFNLEtBQUssSUFBSSxDQUFBOzs7QUNpQnZCLFlBQUssS0FBQTs7OztBQUVBLGNBQU8sS0FBQTs7O3FDQUk1QyxNQUFDLE1BQVcsYUFBYSxNQUFNLENBQUM7bUNBQ2xDLE1BQU0sYUFBYSxHQUFHLFdBQVcsSUFBSTs7Ozs7Ozs7O0FEcEN4RCxTQUFDOztnQkFFUyxTQUFNLElBQU8sT0FBTyxPQUFPLEdBQUc7MEJBQ3BDLFFBQVEsTUFBTTtpQkFDUDs7Ozs7QUFZWDtBQUFDLHFCQUFBLEdBQUUsUUFBUSxTQUFTLEtBQUssQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBRjNCM0IsSUFBcUIsWUFBckIsY0FBdUMsMkJBQVM7QUFBQSxFQUk5QyxZQUFZLE1BQXFCLFFBQWtCO0FBQ2pELFVBQU0sSUFBSTtBQW9CWixnQkFBTztBQW5CTCxTQUFLLFNBQVM7QUFBQSxFQUNoQjtBQUFBLEVBRUEsTUFBTSxTQUF3QjtBQUM1QixVQUFNLE9BQU87QUFDYixVQUFNLEtBQUssT0FBTyxhQUFhO0FBQy9CLFFBQUksVUFBVSxjQUFjLFlBQVk7QUFDdEMsWUFBTSxLQUFLLEtBQUs7QUFBQSxJQUNsQixDQUFDO0FBQUEsRUFDSDtBQUFBLEVBRUEsY0FBYztBQUNaLFdBQU87QUFBQSxFQUNUO0FBQUEsRUFDQSxpQkFBaUI7QUFDZixXQUFPO0FBQUEsRUFDVDtBQUFBLEVBS0EsTUFBTSxTQUF3QjtBQUFBLEVBQUU7QUFBQSxFQUVoQyxVQUF5QjtBQWxDM0I7QUFtQ0ksZUFBSyxTQUFMLG1CQUFXO0FBQ1gsV0FBTyxRQUFRLFFBQVE7QUFBQSxFQUN6QjtBQUFBLEVBRUEsTUFBTSxPQUFzQjtBQUMxQixTQUFLLFVBQVUsTUFBTTtBQUVyQixTQUFLLE9BQU8sSUFBSSxjQUFNO0FBQUEsTUFDcEIsUUFBUSxLQUFLO0FBQUEsTUFDYixPQUFPLEVBQUUsUUFBUSxLQUFLLFFBQVEsV0FBVyxLQUFLO0FBQUEsSUFDaEQsQ0FBQztBQUFBLEVBQ0g7QUFDRjs7O0FJL0NBLHdCQUF3Qzs7O3dCQ0NqQjs7Ozs7Ozs7Ozs7QUVHYixhQUEyUixRQUFBLE9BQUEsTUFBQTs7Ozs7Ozs7Ozs7OERBRHpQLElBQU8sRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O21JQUFQLEtBQU8sRUFBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0N6QyxhQUE4L0MsUUFBQSxPQUFBLE1BQUE7Ozs7Ozs7Ozs7OzhEQUQ1OUMsSUFBTyxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7bUlBQVAsS0FBTyxFQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkZ5RXBCLElBQVMsTUFBQTs7Ozs7Ozs0Q0FBckIsSUFBUzs7OztBQUF4QixhQUE4QyxRQUFBLFFBQUEsTUFBQTs7Ozs7Ozs7Ozs7OztpQkFRcEMsSUFBSSxJQUFDLEtBQUs7Ozs7O2lCQVFWLFlBQVksSUFBSSxJQUFDLElBQUksSUFBUSxFQUFBLElBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJEQURSLFdBQVUsSUFBSSxJQUFDLEVBQUMsSUFBSyxLQUFLLG1CQUFlLGdCQUFBOzs7O0FBUnRFLGFBWU0sUUFBQSxLQUFBLE1BQUE7QUFYSixhQUEwQixLQUFBLEdBQUE7OztBQUMxQixhQVNPLEtBQUEsSUFBQTtBQUhMLGFBRUMsTUFBQSxFQUFBOzs7Ozs7Ozs7Ozs7O2lEQVRHLElBQUksSUFBQyxLQUFLO0FBQUcsaUJBQUEsSUFBQSxRQUFBO2lEQVFiLFlBQVksSUFBSSxJQUFDLElBQUksSUFBUSxFQUFBLElBQUE7QUFBQSxpQkFBQSxJQUFBLFFBQUE7OEVBRFIsV0FBVSxJQUFJLElBQUMsRUFBQyxJQUFLLEtBQUssbUJBQWUsbUJBQUE7Ozs7Ozs7Ozs7Ozs7O2lCQVRuRSxJQUFJLElBQUMsU0FBUyxLQUFDLGlCQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7VUFBZixLQUFJLElBQUMsU0FBUyxHQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQXpCakIsS0FBTTtBQUFBLGFBQUE7Ozs7O3FCQWtCSjs7bUNBQUwsUUFBSSxLQUFBLEdBQUE7OzttQkFNQyxJQUFLOztpQ0FBVixRQUFJLEtBQUEsR0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VEQS9CTSxJQUFNLG1CQUFpQixJQUFRLE9BQUssVUFBVTs7Ozs7VUF3QnZCLElBQUcsT0FBQTtBQUFBLDRCQUFBLE1BQUEsSUFBQSxHQUFBLEtBQUEsTUFBQSxDQUFBOzs7O0FBMUJ4QyxhQWNPLFFBQUEsTUFBQSxNQUFBOzs7QUFFUCxhQVFTLFFBQUEsUUFBQSxNQUFBOztBQUVULGFBSVMsUUFBQSxRQUFBLE1BQUE7Ozs7NEJBSjRCLElBQUcsRUFBQTs7QUFNeEMsYUFrQk0sUUFBQSxLQUFBLE1BQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VGQWhEUSxLQUFNLG1CQUFpQixLQUFRLE9BQUssYUFBVTs7Ozt1QkF5Qm5EOztxQ0FBTCxRQUFJLEtBQUEsR0FBQTs7Ozs7Ozs7Ozs7Ozs0Q0FBSjs7OzhCQURpQyxLQUFHLEVBQUE7OztxQkFPL0IsS0FBSzs7bUNBQVYsUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7d0NBQUo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUQ5RFMsV0FBZ0I7UUFDaEIsU0FBYztVQUVqQixVQUFVLFdBQUssWUFBWTtVQUMzQixzQkFBc0I7TUFFMUIsTUFBa0I7TUFDbEIsU0FBUztRQUNQLGFBQWEsWUFBVztBQUU5QixTQUFPLGNBQ0wsS0FBSSxVQUFVLEdBQUcsc0JBQW9CLE1BQUE7O1FBQy9CO0FBQU07b0JBQ1YsV0FBVyxNQUFBLFlBQVcsT0FBRSxRQUFBLE9BQUEsa0JBQUEsR0FBRSxRQUFROztNQUlsQzs7O29CQ2lCRixTQUFNLENBQUksTUFBTTtTQUNYO0FBQU0sbUJBQUEsR0FBRSxXQUFXLGtCQUFXLE1BQVgsbUJBQWUsUUFBUTs7O1VBYXpDLGFBQWEsTUFBTTtVQUNuQixLQUFLLEtBQUk7OztBQU1rQixVQUFHLGFBQUEsSUFBQTs7O3VDQWFiLE1BQUMsTUFBVyxhQUFhLEtBQUssSUFBSSxDQUFDO21DQUNyQyxNQUFNLGFBQWEsR0FBRyxNQUFNLEtBQUssRUFBQzs7Ozs7Ozs7O0FEbkR6RCxTQUFDO2NBQ08sUUFBUSxhQUFhLFNBQVMsR0FBRztjQUNqQyxXQUFXLFlBQVksT0FBTyxRQUFRO2NBQ3RDLFNBQVEsWUFBWSxVQUFVLE9BQU8saUJBQWlCO0FBQzVELG9DQUFJLEVBQUcsVUFBVSxjQUFLLENBQUE7d0JBRXRCLFFBQVEsaUJBQWlCLE1BQUssQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBRHJDbEMsSUFBcUIsV0FBckIsY0FBc0MsMkJBQVM7QUFBQSxFQUk3QyxZQUFZLE1BQXFCLFFBQWtCO0FBQ2pELFVBQU0sSUFBSTtBQWtCWixnQkFBTyxlQUFlLG1CQUFtQjtBQWpCdkMsU0FBSyxTQUFTO0FBQUEsRUFDaEI7QUFBQSxFQUVBLE1BQU0sU0FBd0I7QUFDNUIsVUFBTSxPQUFPO0FBQ2IsUUFBSSxVQUFVLGNBQWMsWUFBWTtBQUN0QyxZQUFNLEtBQUssS0FBSztBQUFBLElBQ2xCLENBQUM7QUFBQSxFQUNIO0FBQUEsRUFFQSxjQUFjO0FBQ1osV0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUNBLGlCQUFpQjtBQUNmLFdBQU87QUFBQSxFQUNUO0FBQUEsRUFJQSxNQUFNLFNBQXdCO0FBQUEsRUFBQztBQUFBLEVBRS9CLFVBQXlCO0FBakMzQjtBQWtDSSxlQUFLLFNBQUwsbUJBQVc7QUFDWCxXQUFPLFFBQVEsUUFBUTtBQUFBLEVBQ3pCO0FBQUEsRUFFQSxNQUFNLE9BQXNCO0FBQzFCLFNBQUssVUFBVSxNQUFNO0FBRXJCLFNBQUssT0FBTyxJQUFJLGlCQUFTO0FBQUEsTUFDdkIsUUFBUSxLQUFLO0FBQUEsTUFDYixPQUFPLEVBQUUsUUFBUSxLQUFLLFFBQVEsTUFBTSxLQUFLO0FBQUEsSUFDM0MsQ0FBQztBQUFBLEVBQ0g7QUFDRjs7O0FLOUNlLDJCQUFTLElBQUcsR0FBRztBQUM1QixTQUFPLEtBQUksSUFBSSxLQUFLLEtBQUksSUFBSSxJQUFJLE1BQUssSUFBSSxJQUFJO0FBQy9DOzs7QUNBZSwwQkFBUyxHQUFHO0FBQ3pCLE1BQUksUUFBUTtBQUNaLE1BQUksVUFBVTtBQUVkLE1BQUksRUFBRSxXQUFXLEdBQUc7QUFDbEIsWUFBUSxDQUFDLEdBQUcsT0FBTSxFQUFFLENBQUMsSUFBSTtBQUN6QixjQUFVLG9CQUFvQixDQUFDO0FBQUEsRUFDakM7QUFFQSxnQkFBYyxJQUFHLElBQUcsSUFBSSxJQUFJO0FBQzFCLFFBQUksTUFBTTtBQUFNLFdBQUs7QUFDckIsUUFBSSxNQUFNO0FBQU0sV0FBSyxHQUFFO0FBQ3ZCLFdBQU8sS0FBSyxJQUFJO0FBQ2QsWUFBTSxNQUFPLEtBQUssT0FBUTtBQUMxQixVQUFJLFFBQVEsR0FBRSxNQUFNLEVBQUMsSUFBSTtBQUFHLGFBQUssTUFBTTtBQUFBO0FBQ2xDLGFBQUs7QUFBQSxJQUNaO0FBQ0EsV0FBTztBQUFBLEVBQ1Q7QUFFQSxpQkFBZSxJQUFHLElBQUcsSUFBSSxJQUFJO0FBQzNCLFFBQUksTUFBTTtBQUFNLFdBQUs7QUFDckIsUUFBSSxNQUFNO0FBQU0sV0FBSyxHQUFFO0FBQ3ZCLFdBQU8sS0FBSyxJQUFJO0FBQ2QsWUFBTSxNQUFPLEtBQUssT0FBUTtBQUMxQixVQUFJLFFBQVEsR0FBRSxNQUFNLEVBQUMsSUFBSTtBQUFHLGFBQUs7QUFBQTtBQUM1QixhQUFLLE1BQU07QUFBQSxJQUNsQjtBQUNBLFdBQU87QUFBQSxFQUNUO0FBRUEsa0JBQWdCLElBQUcsSUFBRyxJQUFJLElBQUk7QUFDNUIsUUFBSSxNQUFNO0FBQU0sV0FBSztBQUNyQixRQUFJLE1BQU07QUFBTSxXQUFLLEdBQUU7QUFDdkIsVUFBTSxJQUFJLEtBQUssSUFBRyxJQUFHLElBQUksS0FBSyxDQUFDO0FBQy9CLFdBQU8sSUFBSSxNQUFNLE1BQU0sR0FBRSxJQUFJLElBQUksRUFBQyxJQUFJLENBQUMsTUFBTSxHQUFFLElBQUksRUFBQyxJQUFJLElBQUksSUFBSTtBQUFBLEVBQ2xFO0FBRUEsU0FBTyxFQUFDLE1BQU0sUUFBUSxNQUFLO0FBQzdCO0FBRUEsNkJBQTZCLEdBQUc7QUFDOUIsU0FBTyxDQUFDLEdBQUcsT0FBTSxrQkFBVSxFQUFFLENBQUMsR0FBRyxFQUFDO0FBQ3BDOzs7QUM3Q2Usd0JBQVMsSUFBRztBQUN6QixTQUFPLE9BQU0sT0FBTyxNQUFNLENBQUM7QUFDN0I7OztBQ0VBLElBQU0sa0JBQWtCLGlCQUFTLGlCQUFTO0FBQ25DLElBQU0sY0FBYyxnQkFBZ0I7QUFDcEMsSUFBTSxhQUFhLGdCQUFnQjtBQUNuQyxJQUFNLGVBQWUsaUJBQVMsY0FBTSxFQUFFO0FBQzdDLElBQU8saUJBQVE7OztBQ1JmLElBQUksTUFBTSxLQUFLLEtBQUssRUFBRTtBQUF0QixJQUNJLEtBQUssS0FBSyxLQUFLLEVBQUU7QUFEckIsSUFFSSxLQUFLLEtBQUssS0FBSyxDQUFDO0FBRUwsdUJBQVMsUUFBTyxNQUFNLFFBQU87QUFDMUMsTUFBSSxTQUNBLElBQUksSUFDSixHQUNBLE9BQ0E7QUFFSixTQUFPLENBQUMsTUFBTSxTQUFRLENBQUMsUUFBTyxTQUFRLENBQUM7QUFDdkMsTUFBSSxXQUFVLFFBQVEsU0FBUTtBQUFHLFdBQU8sQ0FBQyxNQUFLO0FBQzlDLE1BQUksVUFBVSxPQUFPO0FBQU8sUUFBSSxRQUFPLFNBQVEsTUFBTSxPQUFPO0FBQzVELE1BQUssUUFBTyxjQUFjLFFBQU8sTUFBTSxNQUFLLE9BQU8sS0FBSyxDQUFDLFNBQVMsSUFBSTtBQUFHLFdBQU8sQ0FBQztBQUVqRixNQUFJLE9BQU8sR0FBRztBQUNaLFFBQUksS0FBSyxLQUFLLE1BQU0sU0FBUSxJQUFJLEdBQUcsS0FBSyxLQUFLLE1BQU0sT0FBTyxJQUFJO0FBQzlELFFBQUksS0FBSyxPQUFPO0FBQU8sUUFBRTtBQUN6QixRQUFJLEtBQUssT0FBTztBQUFNLFFBQUU7QUFDeEIsWUFBUSxJQUFJLE1BQU0sSUFBSSxLQUFLLEtBQUssQ0FBQztBQUNqQyxXQUFPLEVBQUUsSUFBSTtBQUFHLFlBQU0sS0FBTSxNQUFLLEtBQUs7QUFBQSxFQUN4QyxPQUFPO0FBQ0wsV0FBTyxDQUFDO0FBQ1IsUUFBSSxLQUFLLEtBQUssTUFBTSxTQUFRLElBQUksR0FBRyxLQUFLLEtBQUssTUFBTSxPQUFPLElBQUk7QUFDOUQsUUFBSSxLQUFLLE9BQU87QUFBTyxRQUFFO0FBQ3pCLFFBQUksS0FBSyxPQUFPO0FBQU0sUUFBRTtBQUN4QixZQUFRLElBQUksTUFBTSxJQUFJLEtBQUssS0FBSyxDQUFDO0FBQ2pDLFdBQU8sRUFBRSxJQUFJO0FBQUcsWUFBTSxLQUFNLE1BQUssS0FBSztBQUFBLEVBQ3hDO0FBRUEsTUFBSTtBQUFTLFVBQU0sUUFBUTtBQUUzQixTQUFPO0FBQ1Q7QUFFTyx1QkFBdUIsUUFBTyxNQUFNLFFBQU87QUFDaEQsTUFBSSxPQUFRLFFBQU8sVUFBUyxLQUFLLElBQUksR0FBRyxNQUFLLEdBQ3pDLFFBQVEsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLEdBQzdDLFNBQVEsT0FBTyxLQUFLLElBQUksSUFBSSxLQUFLO0FBQ3JDLFNBQU8sU0FBUyxJQUNULFdBQVMsTUFBTSxLQUFLLFVBQVMsS0FBSyxJQUFJLFVBQVMsS0FBSyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxJQUNoRixDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFLLFdBQVMsTUFBTSxLQUFLLFVBQVMsS0FBSyxJQUFJLFVBQVMsS0FBSyxJQUFJO0FBQ3pGO0FBRU8sa0JBQWtCLFFBQU8sTUFBTSxRQUFPO0FBQzNDLE1BQUksUUFBUSxLQUFLLElBQUksT0FBTyxNQUFLLElBQUksS0FBSyxJQUFJLEdBQUcsTUFBSyxHQUNsRCxRQUFRLEtBQUssSUFBSSxJQUFJLEtBQUssTUFBTSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQzVELFNBQVEsUUFBUTtBQUNwQixNQUFJLFVBQVM7QUFBSyxhQUFTO0FBQUEsV0FDbEIsVUFBUztBQUFJLGFBQVM7QUFBQSxXQUN0QixVQUFTO0FBQUksYUFBUztBQUMvQixTQUFPLE9BQU8sU0FBUSxDQUFDLFFBQVE7QUFDakM7OztBQ3JEZSxhQUFhLFFBQVEsU0FBUztBQUMzQyxNQUFJO0FBQ0osTUFBSSxZQUFZLFFBQVc7QUFDekIsZUFBVyxTQUFTLFFBQVE7QUFDMUIsVUFBSSxTQUFTLFFBQ0wsUUFBTSxTQUFVLFNBQVEsVUFBYSxTQUFTLFFBQVM7QUFDN0QsZUFBTTtBQUFBLE1BQ1I7QUFBQSxJQUNGO0FBQUEsRUFDRixPQUFPO0FBQ0wsUUFBSSxTQUFRO0FBQ1osYUFBUyxTQUFTLFFBQVE7QUFDeEIsVUFBSyxTQUFRLFFBQVEsT0FBTyxFQUFFLFFBQU8sTUFBTSxNQUFNLFFBQ3pDLFFBQU0sU0FBVSxTQUFRLFVBQWEsU0FBUyxRQUFTO0FBQzdELGVBQU07QUFBQSxNQUNSO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1Q7OztBQ25CZSx1QkFBUyxRQUFPLE1BQU0sTUFBTTtBQUN6QyxXQUFRLENBQUMsUUFBTyxPQUFPLENBQUMsTUFBTSxPQUFRLEtBQUksVUFBVSxVQUFVLElBQUssUUFBTyxRQUFPLFNBQVEsR0FBRyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUM7QUFFOUcsTUFBSSxJQUFJLElBQ0osSUFBSSxLQUFLLElBQUksR0FBRyxLQUFLLEtBQU0sUUFBTyxVQUFTLElBQUksQ0FBQyxJQUFJLEdBQ3BELFFBQVEsSUFBSSxNQUFNLENBQUM7QUFFdkIsU0FBTyxFQUFFLElBQUksR0FBRztBQUNkLFVBQU0sS0FBSyxTQUFRLElBQUk7QUFBQSxFQUN6QjtBQUVBLFNBQU87QUFDVDs7O0FDWkEsSUFBSSxRQUFPLEVBQUMsT0FBTyxNQUFNO0FBQUMsRUFBQztBQUUzQixvQkFBb0I7QUFDbEIsV0FBUyxJQUFJLEdBQUcsSUFBSSxVQUFVLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHO0FBQzNELFFBQUksQ0FBRSxLQUFJLFVBQVUsS0FBSyxPQUFRLEtBQUssS0FBTSxRQUFRLEtBQUssQ0FBQztBQUFHLFlBQU0sSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pHLE1BQUUsS0FBSyxDQUFDO0FBQUEsRUFDVjtBQUNBLFNBQU8sSUFBSSxTQUFTLENBQUM7QUFDdkI7QUFFQSxrQkFBa0IsR0FBRztBQUNuQixPQUFLLElBQUk7QUFDWDtBQUVBLHdCQUF3QixXQUFXLE9BQU87QUFDeEMsU0FBTyxVQUFVLEtBQUssRUFBRSxNQUFNLE9BQU8sRUFBRSxJQUFJLFNBQVMsR0FBRztBQUNyRCxRQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsUUFBUSxHQUFHO0FBQ2hDLFFBQUksS0FBSztBQUFHLGFBQU8sRUFBRSxNQUFNLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxNQUFNLEdBQUcsQ0FBQztBQUNuRCxRQUFJLEtBQUssQ0FBQyxNQUFNLGVBQWUsQ0FBQztBQUFHLFlBQU0sSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZFLFdBQU8sRUFBQyxNQUFNLEdBQUcsS0FBVTtBQUFBLEVBQzdCLENBQUM7QUFDSDtBQUVBLFNBQVMsWUFBWSxTQUFTLFlBQVk7QUFBQSxFQUN4QyxhQUFhO0FBQUEsRUFDYixJQUFJLFNBQVMsVUFBVSxVQUFVO0FBQy9CLFFBQUksSUFBSSxLQUFLLEdBQ1QsSUFBSSxlQUFlLFdBQVcsSUFBSSxDQUFDLEdBQ25DLEdBQ0EsSUFBSSxJQUNKLElBQUksRUFBRTtBQUdWLFFBQUksVUFBVSxTQUFTLEdBQUc7QUFDeEIsYUFBTyxFQUFFLElBQUk7QUFBRyxZQUFLLEtBQUssWUFBVyxFQUFFLElBQUksU0FBVSxLQUFJLElBQUksRUFBRSxJQUFJLFNBQVMsSUFBSTtBQUFJLGlCQUFPO0FBQzNGO0FBQUEsSUFDRjtBQUlBLFFBQUksWUFBWSxRQUFRLE9BQU8sYUFBYTtBQUFZLFlBQU0sSUFBSSxNQUFNLHVCQUF1QixRQUFRO0FBQ3ZHLFdBQU8sRUFBRSxJQUFJLEdBQUc7QUFDZCxVQUFJLElBQUssWUFBVyxFQUFFLElBQUk7QUFBTSxVQUFFLEtBQUssSUFBSSxFQUFFLElBQUksU0FBUyxNQUFNLFFBQVE7QUFBQSxlQUMvRCxZQUFZO0FBQU0sYUFBSyxLQUFLO0FBQUcsWUFBRSxLQUFLLElBQUksRUFBRSxJQUFJLFNBQVMsTUFBTSxJQUFJO0FBQUEsSUFDOUU7QUFFQSxXQUFPO0FBQUEsRUFDVDtBQUFBLEVBQ0EsTUFBTSxXQUFXO0FBQ2YsUUFBSSxRQUFPLENBQUMsR0FBRyxJQUFJLEtBQUs7QUFDeEIsYUFBUyxLQUFLO0FBQUcsWUFBSyxLQUFLLEVBQUUsR0FBRyxNQUFNO0FBQ3RDLFdBQU8sSUFBSSxTQUFTLEtBQUk7QUFBQSxFQUMxQjtBQUFBLEVBQ0EsTUFBTSxTQUFTLE9BQU0sTUFBTTtBQUN6QixRQUFLLEtBQUksVUFBVSxTQUFTLEtBQUs7QUFBRyxlQUFTLE9BQU8sSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFO0FBQUcsYUFBSyxLQUFLLFVBQVUsSUFBSTtBQUNuSCxRQUFJLENBQUMsS0FBSyxFQUFFLGVBQWUsS0FBSTtBQUFHLFlBQU0sSUFBSSxNQUFNLG1CQUFtQixLQUFJO0FBQ3pFLFNBQUssSUFBSSxLQUFLLEVBQUUsUUFBTyxJQUFJLEdBQUcsSUFBSSxFQUFFLFFBQVEsSUFBSSxHQUFHLEVBQUU7QUFBRyxRQUFFLEdBQUcsTUFBTSxNQUFNLE1BQU0sSUFBSTtBQUFBLEVBQ3JGO0FBQUEsRUFDQSxPQUFPLFNBQVMsT0FBTSxNQUFNLE1BQU07QUFDaEMsUUFBSSxDQUFDLEtBQUssRUFBRSxlQUFlLEtBQUk7QUFBRyxZQUFNLElBQUksTUFBTSxtQkFBbUIsS0FBSTtBQUN6RSxhQUFTLElBQUksS0FBSyxFQUFFLFFBQU8sSUFBSSxHQUFHLElBQUksRUFBRSxRQUFRLElBQUksR0FBRyxFQUFFO0FBQUcsUUFBRSxHQUFHLE1BQU0sTUFBTSxNQUFNLElBQUk7QUFBQSxFQUN6RjtBQUNGO0FBRUEsYUFBYSxPQUFNLE1BQU07QUFDdkIsV0FBUyxJQUFJLEdBQUcsSUFBSSxNQUFLLFFBQVEsSUFBRyxJQUFJLEdBQUcsRUFBRSxHQUFHO0FBQzlDLFFBQUssTUFBSSxNQUFLLElBQUksU0FBUyxNQUFNO0FBQy9CLGFBQU8sR0FBRTtBQUFBLElBQ1g7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxhQUFhLE9BQU0sTUFBTSxVQUFVO0FBQ2pDLFdBQVMsSUFBSSxHQUFHLElBQUksTUFBSyxRQUFRLElBQUksR0FBRyxFQUFFLEdBQUc7QUFDM0MsUUFBSSxNQUFLLEdBQUcsU0FBUyxNQUFNO0FBQ3pCLFlBQUssS0FBSyxPQUFNLFFBQU8sTUFBSyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE9BQU8sTUFBSyxNQUFNLElBQUksQ0FBQyxDQUFDO0FBQ2hFO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxNQUFJLFlBQVk7QUFBTSxVQUFLLEtBQUssRUFBQyxNQUFZLE9BQU8sU0FBUSxDQUFDO0FBQzdELFNBQU87QUFDVDtBQUVBLElBQU8sbUJBQVE7OztBQ25GUixJQUFJLFFBQVE7QUFFbkIsSUFBTyxxQkFBUTtBQUFBLEVBQ2IsS0FBSztBQUFBLEVBQ0w7QUFBQSxFQUNBLE9BQU87QUFBQSxFQUNQLEtBQUs7QUFBQSxFQUNMLE9BQU87QUFDVDs7O0FDTmUsMkJBQVMsTUFBTTtBQUM1QixNQUFJLFNBQVMsUUFBUSxJQUFJLElBQUksT0FBTyxRQUFRLEdBQUc7QUFDL0MsTUFBSSxLQUFLLEtBQU0sVUFBUyxLQUFLLE1BQU0sR0FBRyxDQUFDLE9BQU87QUFBUyxXQUFPLEtBQUssTUFBTSxJQUFJLENBQUM7QUFDOUUsU0FBTyxtQkFBVyxlQUFlLE1BQU0sSUFBSSxFQUFDLE9BQU8sbUJBQVcsU0FBUyxPQUFPLEtBQUksSUFBSTtBQUN4Rjs7O0FDSEEsd0JBQXdCLE1BQU07QUFDNUIsU0FBTyxXQUFXO0FBQ2hCLFFBQUksWUFBVyxLQUFLLGVBQ2hCLE1BQU0sS0FBSztBQUNmLFdBQU8sUUFBUSxTQUFTLFVBQVMsZ0JBQWdCLGlCQUFpQixRQUM1RCxVQUFTLGNBQWMsSUFBSSxJQUMzQixVQUFTLGdCQUFnQixLQUFLLElBQUk7QUFBQSxFQUMxQztBQUNGO0FBRUEsc0JBQXNCLFVBQVU7QUFDOUIsU0FBTyxXQUFXO0FBQ2hCLFdBQU8sS0FBSyxjQUFjLGdCQUFnQixTQUFTLE9BQU8sU0FBUyxLQUFLO0FBQUEsRUFDMUU7QUFDRjtBQUVlLHlCQUFTLE1BQU07QUFDNUIsTUFBSSxXQUFXLGtCQUFVLElBQUk7QUFDN0IsU0FBUSxVQUFTLFFBQ1gsZUFDQSxnQkFBZ0IsUUFBUTtBQUNoQzs7O0FDeEJBLGdCQUFnQjtBQUFDO0FBRUYsMEJBQVMsVUFBVTtBQUNoQyxTQUFPLFlBQVksT0FBTyxPQUFPLFdBQVc7QUFDMUMsV0FBTyxLQUFLLGNBQWMsUUFBUTtBQUFBLEVBQ3BDO0FBQ0Y7OztBQ0hlLHdCQUFTLFFBQVE7QUFDOUIsTUFBSSxPQUFPLFdBQVc7QUFBWSxhQUFTLGlCQUFTLE1BQU07QUFFMUQsV0FBUyxTQUFTLEtBQUssU0FBUyxLQUFJLE9BQU8sUUFBUSxZQUFZLElBQUksTUFBTSxFQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBRyxFQUFFLEdBQUc7QUFDOUYsYUFBUyxRQUFRLE9BQU8sSUFBSSxJQUFJLE1BQU0sUUFBUSxXQUFXLFVBQVUsS0FBSyxJQUFJLE1BQU0sQ0FBQyxHQUFHLE1BQU0sU0FBUyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRztBQUN0SCxVQUFLLFFBQU8sTUFBTSxPQUFRLFdBQVUsT0FBTyxLQUFLLE1BQU0sS0FBSyxVQUFVLEdBQUcsS0FBSyxJQUFJO0FBQy9FLFlBQUksY0FBYztBQUFNLGtCQUFRLFdBQVcsS0FBSztBQUNoRCxpQkFBUyxLQUFLO0FBQUEsTUFDaEI7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU8sSUFBSSxVQUFVLFdBQVcsS0FBSyxRQUFRO0FBQy9DOzs7QUNoQmUsdUJBQVMsSUFBRztBQUN6QixTQUFPLE9BQU8sT0FBTSxZQUFZLFlBQVksS0FDeEMsS0FDQSxNQUFNLEtBQUssRUFBQztBQUNsQjs7O0FDSkEsa0JBQWlCO0FBQ2YsU0FBTyxDQUFDO0FBQ1Y7QUFFZSw2QkFBUyxVQUFVO0FBQ2hDLFNBQU8sWUFBWSxPQUFPLFNBQVEsV0FBVztBQUMzQyxXQUFPLEtBQUssaUJBQWlCLFFBQVE7QUFBQSxFQUN2QztBQUNGOzs7QUNKQSxrQkFBa0IsUUFBUTtBQUN4QixTQUFPLFdBQVc7QUFDaEIsUUFBSSxRQUFRLE9BQU8sTUFBTSxNQUFNLFNBQVM7QUFDeEMsV0FBTyxTQUFTLE9BQU8sQ0FBQyxJQUFJLGNBQU0sS0FBSztBQUFBLEVBQ3pDO0FBQ0Y7QUFFZSwyQkFBUyxRQUFRO0FBQzlCLE1BQUksT0FBTyxXQUFXO0FBQVksYUFBUyxTQUFTLE1BQU07QUFBQTtBQUNyRCxhQUFTLG9CQUFZLE1BQU07QUFFaEMsV0FBUyxTQUFTLEtBQUssU0FBUyxLQUFJLE9BQU8sUUFBUSxZQUFZLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFHLEVBQUUsR0FBRztBQUNsRyxhQUFTLFFBQVEsT0FBTyxJQUFJLElBQUksTUFBTSxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUc7QUFDckUsVUFBSSxPQUFPLE1BQU0sSUFBSTtBQUNuQixrQkFBVSxLQUFLLE9BQU8sS0FBSyxNQUFNLEtBQUssVUFBVSxHQUFHLEtBQUssQ0FBQztBQUN6RCxnQkFBUSxLQUFLLElBQUk7QUFBQSxNQUNuQjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsU0FBTyxJQUFJLFVBQVUsV0FBVyxPQUFPO0FBQ3pDOzs7QUN6QmUseUJBQVMsVUFBVTtBQUNoQyxTQUFPLFdBQVc7QUFDaEIsV0FBTyxLQUFLLFFBQVEsUUFBUTtBQUFBLEVBQzlCO0FBQ0Y7QUFFTyxzQkFBc0IsVUFBVTtBQUNyQyxTQUFPLFNBQVMsTUFBTTtBQUNwQixXQUFPLEtBQUssUUFBUSxRQUFRO0FBQUEsRUFDOUI7QUFDRjs7O0FDUkEsSUFBSSxPQUFPLE1BQU0sVUFBVTtBQUUzQixtQkFBbUIsT0FBTztBQUN4QixTQUFPLFdBQVc7QUFDaEIsV0FBTyxLQUFLLEtBQUssS0FBSyxVQUFVLEtBQUs7QUFBQSxFQUN2QztBQUNGO0FBRUEsc0JBQXNCO0FBQ3BCLFNBQU8sS0FBSztBQUNkO0FBRWUsNkJBQVMsT0FBTztBQUM3QixTQUFPLEtBQUssT0FBTyxTQUFTLE9BQU8sYUFDN0IsVUFBVSxPQUFPLFVBQVUsYUFBYSxRQUFRLGFBQWEsS0FBSyxDQUFDLENBQUM7QUFDNUU7OztBQ2ZBLElBQUksU0FBUyxNQUFNLFVBQVU7QUFFN0IscUJBQW9CO0FBQ2xCLFNBQU8sS0FBSztBQUNkO0FBRUEsd0JBQXdCLE9BQU87QUFDN0IsU0FBTyxXQUFXO0FBQ2hCLFdBQU8sT0FBTyxLQUFLLEtBQUssVUFBVSxLQUFLO0FBQUEsRUFDekM7QUFDRjtBQUVlLGdDQUFTLE9BQU87QUFDN0IsU0FBTyxLQUFLLFVBQVUsU0FBUyxPQUFPLFlBQ2hDLGVBQWUsT0FBTyxVQUFVLGFBQWEsUUFBUSxhQUFhLEtBQUssQ0FBQyxDQUFDO0FBQ2pGOzs7QUNkZSx3QkFBUyxPQUFPO0FBQzdCLE1BQUksT0FBTyxVQUFVO0FBQVksWUFBUSxnQkFBUSxLQUFLO0FBRXRELFdBQVMsU0FBUyxLQUFLLFNBQVMsS0FBSSxPQUFPLFFBQVEsWUFBWSxJQUFJLE1BQU0sRUFBQyxHQUFHLElBQUksR0FBRyxJQUFJLElBQUcsRUFBRSxHQUFHO0FBQzlGLGFBQVMsUUFBUSxPQUFPLElBQUksSUFBSSxNQUFNLFFBQVEsV0FBVyxVQUFVLEtBQUssQ0FBQyxHQUFHLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUc7QUFDbkcsVUFBSyxRQUFPLE1BQU0sT0FBTyxNQUFNLEtBQUssTUFBTSxLQUFLLFVBQVUsR0FBRyxLQUFLLEdBQUc7QUFDbEUsaUJBQVMsS0FBSyxJQUFJO0FBQUEsTUFDcEI7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU8sSUFBSSxVQUFVLFdBQVcsS0FBSyxRQUFRO0FBQy9DOzs7QUNmZSx3QkFBUyxTQUFRO0FBQzlCLFNBQU8sSUFBSSxNQUFNLFFBQU8sTUFBTTtBQUNoQzs7O0FDQ2UseUJBQVc7QUFDeEIsU0FBTyxJQUFJLFVBQVUsS0FBSyxVQUFVLEtBQUssUUFBUSxJQUFJLGNBQU0sR0FBRyxLQUFLLFFBQVE7QUFDN0U7QUFFTyxtQkFBbUIsUUFBUSxRQUFPO0FBQ3ZDLE9BQUssZ0JBQWdCLE9BQU87QUFDNUIsT0FBSyxlQUFlLE9BQU87QUFDM0IsT0FBSyxRQUFRO0FBQ2IsT0FBSyxVQUFVO0FBQ2YsT0FBSyxXQUFXO0FBQ2xCO0FBRUEsVUFBVSxZQUFZO0FBQUEsRUFDcEIsYUFBYTtBQUFBLEVBQ2IsYUFBYSxTQUFTLE9BQU87QUFBRSxXQUFPLEtBQUssUUFBUSxhQUFhLE9BQU8sS0FBSyxLQUFLO0FBQUEsRUFBRztBQUFBLEVBQ3BGLGNBQWMsU0FBUyxPQUFPLE1BQU07QUFBRSxXQUFPLEtBQUssUUFBUSxhQUFhLE9BQU8sSUFBSTtBQUFBLEVBQUc7QUFBQSxFQUNyRixlQUFlLFNBQVMsVUFBVTtBQUFFLFdBQU8sS0FBSyxRQUFRLGNBQWMsUUFBUTtBQUFBLEVBQUc7QUFBQSxFQUNqRixrQkFBa0IsU0FBUyxVQUFVO0FBQUUsV0FBTyxLQUFLLFFBQVEsaUJBQWlCLFFBQVE7QUFBQSxFQUFHO0FBQ3pGOzs7QUNyQmUsMEJBQVMsSUFBRztBQUN6QixTQUFPLFdBQVc7QUFDaEIsV0FBTztBQUFBLEVBQ1Q7QUFDRjs7O0FDQ0EsbUJBQW1CLFFBQVEsT0FBTyxPQUFPLFNBQVEsTUFBTSxNQUFNO0FBQzNELE1BQUksSUFBSSxHQUNKLE1BQ0EsY0FBYyxNQUFNLFFBQ3BCLGFBQWEsS0FBSztBQUt0QixTQUFPLElBQUksWUFBWSxFQUFFLEdBQUc7QUFDMUIsUUFBSSxPQUFPLE1BQU0sSUFBSTtBQUNuQixXQUFLLFdBQVcsS0FBSztBQUNyQixjQUFPLEtBQUs7QUFBQSxJQUNkLE9BQU87QUFDTCxZQUFNLEtBQUssSUFBSSxVQUFVLFFBQVEsS0FBSyxFQUFFO0FBQUEsSUFDMUM7QUFBQSxFQUNGO0FBR0EsU0FBTyxJQUFJLGFBQWEsRUFBRSxHQUFHO0FBQzNCLFFBQUksT0FBTyxNQUFNLElBQUk7QUFDbkIsV0FBSyxLQUFLO0FBQUEsSUFDWjtBQUFBLEVBQ0Y7QUFDRjtBQUVBLGlCQUFpQixRQUFRLE9BQU8sT0FBTyxTQUFRLE1BQU0sTUFBTSxLQUFLO0FBQzlELE1BQUksR0FDQSxNQUNBLGlCQUFpQixvQkFBSSxPQUNyQixjQUFjLE1BQU0sUUFDcEIsYUFBYSxLQUFLLFFBQ2xCLFlBQVksSUFBSSxNQUFNLFdBQVcsR0FDakM7QUFJSixPQUFLLElBQUksR0FBRyxJQUFJLGFBQWEsRUFBRSxHQUFHO0FBQ2hDLFFBQUksT0FBTyxNQUFNLElBQUk7QUFDbkIsZ0JBQVUsS0FBSyxXQUFXLElBQUksS0FBSyxNQUFNLEtBQUssVUFBVSxHQUFHLEtBQUssSUFBSTtBQUNwRSxVQUFJLGVBQWUsSUFBSSxRQUFRLEdBQUc7QUFDaEMsYUFBSyxLQUFLO0FBQUEsTUFDWixPQUFPO0FBQ0wsdUJBQWUsSUFBSSxVQUFVLElBQUk7QUFBQSxNQUNuQztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBS0EsT0FBSyxJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQUUsR0FBRztBQUMvQixlQUFXLElBQUksS0FBSyxRQUFRLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSTtBQUNoRCxRQUFJLE9BQU8sZUFBZSxJQUFJLFFBQVEsR0FBRztBQUN2QyxjQUFPLEtBQUs7QUFDWixXQUFLLFdBQVcsS0FBSztBQUNyQixxQkFBZSxPQUFPLFFBQVE7QUFBQSxJQUNoQyxPQUFPO0FBQ0wsWUFBTSxLQUFLLElBQUksVUFBVSxRQUFRLEtBQUssRUFBRTtBQUFBLElBQzFDO0FBQUEsRUFDRjtBQUdBLE9BQUssSUFBSSxHQUFHLElBQUksYUFBYSxFQUFFLEdBQUc7QUFDaEMsUUFBSyxRQUFPLE1BQU0sT0FBUSxlQUFlLElBQUksVUFBVSxFQUFFLE1BQU0sTUFBTztBQUNwRSxXQUFLLEtBQUs7QUFBQSxJQUNaO0FBQUEsRUFDRjtBQUNGO0FBRUEsZUFBZSxNQUFNO0FBQ25CLFNBQU8sS0FBSztBQUNkO0FBRWUsc0JBQVMsT0FBTyxLQUFLO0FBQ2xDLE1BQUksQ0FBQyxVQUFVO0FBQVEsV0FBTyxNQUFNLEtBQUssTUFBTSxLQUFLO0FBRXBELE1BQUksT0FBTyxNQUFNLFVBQVUsV0FDdkIsVUFBVSxLQUFLLFVBQ2YsU0FBUyxLQUFLO0FBRWxCLE1BQUksT0FBTyxVQUFVO0FBQVksWUFBUSxpQkFBUyxLQUFLO0FBRXZELFdBQVMsS0FBSSxPQUFPLFFBQVEsVUFBUyxJQUFJLE1BQU0sRUFBQyxHQUFHLFFBQVEsSUFBSSxNQUFNLEVBQUMsR0FBRyxPQUFPLElBQUksTUFBTSxFQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBRyxFQUFFLEdBQUc7QUFDL0csUUFBSSxTQUFTLFFBQVEsSUFDakIsUUFBUSxPQUFPLElBQ2YsY0FBYyxNQUFNLFFBQ3BCLE9BQU8sY0FBTSxNQUFNLEtBQUssUUFBUSxVQUFVLE9BQU8sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUN0RSxhQUFhLEtBQUssUUFDbEIsYUFBYSxNQUFNLEtBQUssSUFBSSxNQUFNLFVBQVUsR0FDNUMsY0FBYyxRQUFPLEtBQUssSUFBSSxNQUFNLFVBQVUsR0FDOUMsWUFBWSxLQUFLLEtBQUssSUFBSSxNQUFNLFdBQVc7QUFFL0MsU0FBSyxRQUFRLE9BQU8sWUFBWSxhQUFhLFdBQVcsTUFBTSxHQUFHO0FBS2pFLGFBQVMsS0FBSyxHQUFHLEtBQUssR0FBRyxVQUFVLE1BQU0sS0FBSyxZQUFZLEVBQUUsSUFBSTtBQUM5RCxVQUFJLFdBQVcsV0FBVyxLQUFLO0FBQzdCLFlBQUksTUFBTTtBQUFJLGVBQUssS0FBSztBQUN4QixlQUFPLENBQUUsUUFBTyxZQUFZLFFBQVEsRUFBRSxLQUFLO0FBQVc7QUFDdEQsaUJBQVMsUUFBUSxRQUFRO0FBQUEsTUFDM0I7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFlBQVMsSUFBSSxVQUFVLFNBQVEsT0FBTztBQUN0QyxVQUFPLFNBQVM7QUFDaEIsVUFBTyxRQUFRO0FBQ2YsU0FBTztBQUNUOzs7QUNqSGUsd0JBQVc7QUFDeEIsU0FBTyxJQUFJLFVBQVUsS0FBSyxTQUFTLEtBQUssUUFBUSxJQUFJLGNBQU0sR0FBRyxLQUFLLFFBQVE7QUFDNUU7OztBQ0xlLHNCQUFTLFNBQVMsVUFBVSxRQUFRO0FBQ2pELE1BQUksUUFBUSxLQUFLLE1BQU0sR0FBRyxVQUFTLE1BQU0sT0FBTyxLQUFLLEtBQUs7QUFDMUQsVUFBUSxPQUFPLFlBQVksYUFBYSxRQUFRLEtBQUssSUFBSSxNQUFNLE9BQU8sVUFBVSxFQUFFO0FBQ2xGLE1BQUksWUFBWTtBQUFNLGNBQVMsU0FBUyxPQUFNO0FBQzlDLE1BQUksVUFBVTtBQUFNLFNBQUssT0FBTztBQUFBO0FBQVEsV0FBTyxJQUFJO0FBQ25ELFNBQU8sU0FBUyxVQUFTLE1BQU0sTUFBTSxPQUFNLEVBQUUsTUFBTSxJQUFJO0FBQ3pEOzs7QUNKZSx1QkFBUyxZQUFXO0FBQ2pDLE1BQUksQ0FBRSx1QkFBcUI7QUFBWSxVQUFNLElBQUksTUFBTSxlQUFlO0FBRXRFLFdBQVMsVUFBVSxLQUFLLFNBQVMsVUFBVSxXQUFVLFNBQVMsS0FBSyxRQUFRLFFBQVEsS0FBSyxRQUFRLFFBQVEsS0FBSSxLQUFLLElBQUksSUFBSSxFQUFFLEdBQUcsU0FBUyxJQUFJLE1BQU0sRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUcsRUFBRSxHQUFHO0FBQ3ZLLGFBQVMsU0FBUyxRQUFRLElBQUksU0FBUyxRQUFRLElBQUksSUFBSSxPQUFPLFFBQVEsUUFBUSxPQUFPLEtBQUssSUFBSSxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHO0FBQy9ILFVBQUksT0FBTyxPQUFPLE1BQU0sT0FBTyxJQUFJO0FBQ2pDLGNBQU0sS0FBSztBQUFBLE1BQ2I7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU8sSUFBSSxJQUFJLEVBQUUsR0FBRztBQUNsQixXQUFPLEtBQUssUUFBUTtBQUFBLEVBQ3RCO0FBRUEsU0FBTyxJQUFJLFVBQVUsUUFBUSxLQUFLLFFBQVE7QUFDNUM7OztBQ2xCZSx5QkFBVztBQUV4QixXQUFTLFNBQVMsS0FBSyxTQUFTLElBQUksSUFBSSxLQUFJLE9BQU8sUUFBUSxFQUFFLElBQUksTUFBSTtBQUNuRSxhQUFTLFFBQVEsT0FBTyxJQUFJLElBQUksTUFBTSxTQUFTLEdBQUcsT0FBTyxNQUFNLElBQUksTUFBTSxFQUFFLEtBQUssS0FBSTtBQUNsRixVQUFJLE9BQU8sTUFBTSxJQUFJO0FBQ25CLFlBQUksUUFBUSxLQUFLLHdCQUF3QixJQUFJLElBQUk7QUFBRyxlQUFLLFdBQVcsYUFBYSxNQUFNLElBQUk7QUFDM0YsZUFBTztBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDs7O0FDVmUsc0JBQVMsU0FBUztBQUMvQixNQUFJLENBQUM7QUFBUyxjQUFVO0FBRXhCLHVCQUFxQixJQUFHLEdBQUc7QUFDekIsV0FBTyxNQUFLLElBQUksUUFBUSxHQUFFLFVBQVUsRUFBRSxRQUFRLElBQUksQ0FBQyxLQUFJLENBQUM7QUFBQSxFQUMxRDtBQUVBLFdBQVMsU0FBUyxLQUFLLFNBQVMsS0FBSSxPQUFPLFFBQVEsYUFBYSxJQUFJLE1BQU0sRUFBQyxHQUFHLElBQUksR0FBRyxJQUFJLElBQUcsRUFBRSxHQUFHO0FBQy9GLGFBQVMsUUFBUSxPQUFPLElBQUksSUFBSSxNQUFNLFFBQVEsWUFBWSxXQUFXLEtBQUssSUFBSSxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHO0FBQy9HLFVBQUksT0FBTyxNQUFNLElBQUk7QUFDbkIsa0JBQVUsS0FBSztBQUFBLE1BQ2pCO0FBQUEsSUFDRjtBQUNBLGNBQVUsS0FBSyxXQUFXO0FBQUEsRUFDNUI7QUFFQSxTQUFPLElBQUksVUFBVSxZQUFZLEtBQUssUUFBUSxFQUFFLE1BQU07QUFDeEQ7QUFFQSxtQkFBbUIsSUFBRyxHQUFHO0FBQ3ZCLFNBQU8sS0FBSSxJQUFJLEtBQUssS0FBSSxJQUFJLElBQUksTUFBSyxJQUFJLElBQUk7QUFDL0M7OztBQ3ZCZSx3QkFBVztBQUN4QixNQUFJLFdBQVcsVUFBVTtBQUN6QixZQUFVLEtBQUs7QUFDZixXQUFTLE1BQU0sTUFBTSxTQUFTO0FBQzlCLFNBQU87QUFDVDs7O0FDTGUseUJBQVc7QUFDeEIsU0FBTyxNQUFNLEtBQUssSUFBSTtBQUN4Qjs7O0FDRmUsd0JBQVc7QUFFeEIsV0FBUyxTQUFTLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSSxPQUFPLFFBQVEsSUFBSSxJQUFHLEVBQUUsR0FBRztBQUNwRSxhQUFTLFFBQVEsT0FBTyxJQUFJLElBQUksR0FBRyxJQUFJLE1BQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxHQUFHO0FBQy9ELFVBQUksT0FBTyxNQUFNO0FBQ2pCLFVBQUk7QUFBTSxlQUFPO0FBQUEsSUFDbkI7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUOzs7QUNWZSx3QkFBVztBQUN4QixNQUFJLE9BQU87QUFDWCxhQUFXLFFBQVE7QUFBTSxNQUFFO0FBQzNCLFNBQU87QUFDVDs7O0FDSmUseUJBQVc7QUFDeEIsU0FBTyxDQUFDLEtBQUssS0FBSztBQUNwQjs7O0FDRmUsc0JBQVMsVUFBVTtBQUVoQyxXQUFTLFNBQVMsS0FBSyxTQUFTLElBQUksR0FBRyxLQUFJLE9BQU8sUUFBUSxJQUFJLElBQUcsRUFBRSxHQUFHO0FBQ3BFLGFBQVMsUUFBUSxPQUFPLElBQUksSUFBSSxHQUFHLElBQUksTUFBTSxRQUFRLE1BQU0sSUFBSSxHQUFHLEVBQUUsR0FBRztBQUNyRSxVQUFJLE9BQU8sTUFBTTtBQUFJLGlCQUFTLEtBQUssTUFBTSxLQUFLLFVBQVUsR0FBRyxLQUFLO0FBQUEsSUFDbEU7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUOzs7QUNQQSxvQkFBb0IsTUFBTTtBQUN4QixTQUFPLFdBQVc7QUFDaEIsU0FBSyxnQkFBZ0IsSUFBSTtBQUFBLEVBQzNCO0FBQ0Y7QUFFQSxzQkFBc0IsVUFBVTtBQUM5QixTQUFPLFdBQVc7QUFDaEIsU0FBSyxrQkFBa0IsU0FBUyxPQUFPLFNBQVMsS0FBSztBQUFBLEVBQ3ZEO0FBQ0Y7QUFFQSxzQkFBc0IsTUFBTSxPQUFPO0FBQ2pDLFNBQU8sV0FBVztBQUNoQixTQUFLLGFBQWEsTUFBTSxLQUFLO0FBQUEsRUFDL0I7QUFDRjtBQUVBLHdCQUF3QixVQUFVLE9BQU87QUFDdkMsU0FBTyxXQUFXO0FBQ2hCLFNBQUssZUFBZSxTQUFTLE9BQU8sU0FBUyxPQUFPLEtBQUs7QUFBQSxFQUMzRDtBQUNGO0FBRUEsc0JBQXNCLE1BQU0sT0FBTztBQUNqQyxTQUFPLFdBQVc7QUFDaEIsUUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLFNBQVM7QUFDbkMsUUFBSSxLQUFLO0FBQU0sV0FBSyxnQkFBZ0IsSUFBSTtBQUFBO0FBQ25DLFdBQUssYUFBYSxNQUFNLENBQUM7QUFBQSxFQUNoQztBQUNGO0FBRUEsd0JBQXdCLFVBQVUsT0FBTztBQUN2QyxTQUFPLFdBQVc7QUFDaEIsUUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLFNBQVM7QUFDbkMsUUFBSSxLQUFLO0FBQU0sV0FBSyxrQkFBa0IsU0FBUyxPQUFPLFNBQVMsS0FBSztBQUFBO0FBQy9ELFdBQUssZUFBZSxTQUFTLE9BQU8sU0FBUyxPQUFPLENBQUM7QUFBQSxFQUM1RDtBQUNGO0FBRWUsc0JBQVMsTUFBTSxPQUFPO0FBQ25DLE1BQUksV0FBVyxrQkFBVSxJQUFJO0FBRTdCLE1BQUksVUFBVSxTQUFTLEdBQUc7QUFDeEIsUUFBSSxPQUFPLEtBQUssS0FBSztBQUNyQixXQUFPLFNBQVMsUUFDVixLQUFLLGVBQWUsU0FBUyxPQUFPLFNBQVMsS0FBSyxJQUNsRCxLQUFLLGFBQWEsUUFBUTtBQUFBLEVBQ2xDO0FBRUEsU0FBTyxLQUFLLEtBQU0sVUFBUyxPQUNwQixTQUFTLFFBQVEsZUFBZSxhQUFlLE9BQU8sVUFBVSxhQUNoRSxTQUFTLFFBQVEsaUJBQWlCLGVBQ2xDLFNBQVMsUUFBUSxpQkFBaUIsY0FBZ0IsVUFBVSxLQUFLLENBQUM7QUFDM0U7OztBQ3hEZSx3QkFBUyxNQUFNO0FBQzVCLFNBQVEsS0FBSyxpQkFBaUIsS0FBSyxjQUFjLGVBQ3pDLEtBQUssWUFBWSxRQUNsQixLQUFLO0FBQ2Q7OztBQ0ZBLHFCQUFxQixNQUFNO0FBQ3pCLFNBQU8sV0FBVztBQUNoQixTQUFLLE1BQU0sZUFBZSxJQUFJO0FBQUEsRUFDaEM7QUFDRjtBQUVBLHVCQUF1QixNQUFNLE9BQU8sVUFBVTtBQUM1QyxTQUFPLFdBQVc7QUFDaEIsU0FBSyxNQUFNLFlBQVksTUFBTSxPQUFPLFFBQVE7QUFBQSxFQUM5QztBQUNGO0FBRUEsdUJBQXVCLE1BQU0sT0FBTyxVQUFVO0FBQzVDLFNBQU8sV0FBVztBQUNoQixRQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sU0FBUztBQUNuQyxRQUFJLEtBQUs7QUFBTSxXQUFLLE1BQU0sZUFBZSxJQUFJO0FBQUE7QUFDeEMsV0FBSyxNQUFNLFlBQVksTUFBTSxHQUFHLFFBQVE7QUFBQSxFQUMvQztBQUNGO0FBRWUsdUJBQVMsTUFBTSxPQUFPLFVBQVU7QUFDN0MsU0FBTyxVQUFVLFNBQVMsSUFDcEIsS0FBSyxLQUFNLFVBQVMsT0FDZCxjQUFjLE9BQU8sVUFBVSxhQUMvQixnQkFDQSxlQUFlLE1BQU0sT0FBTyxZQUFZLE9BQU8sS0FBSyxRQUFRLENBQUMsSUFDbkUsV0FBVyxLQUFLLEtBQUssR0FBRyxJQUFJO0FBQ3BDO0FBRU8sb0JBQW9CLE1BQU0sTUFBTTtBQUNyQyxTQUFPLEtBQUssTUFBTSxpQkFBaUIsSUFBSSxLQUNoQyxlQUFZLElBQUksRUFBRSxpQkFBaUIsTUFBTSxJQUFJLEVBQUUsaUJBQWlCLElBQUk7QUFDN0U7OztBQ2xDQSx3QkFBd0IsTUFBTTtBQUM1QixTQUFPLFdBQVc7QUFDaEIsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUNGO0FBRUEsMEJBQTBCLE1BQU0sT0FBTztBQUNyQyxTQUFPLFdBQVc7QUFDaEIsU0FBSyxRQUFRO0FBQUEsRUFDZjtBQUNGO0FBRUEsMEJBQTBCLE1BQU0sT0FBTztBQUNyQyxTQUFPLFdBQVc7QUFDaEIsUUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLFNBQVM7QUFDbkMsUUFBSSxLQUFLO0FBQU0sYUFBTyxLQUFLO0FBQUE7QUFDdEIsV0FBSyxRQUFRO0FBQUEsRUFDcEI7QUFDRjtBQUVlLDBCQUFTLE1BQU0sT0FBTztBQUNuQyxTQUFPLFVBQVUsU0FBUyxJQUNwQixLQUFLLEtBQU0sVUFBUyxPQUNoQixpQkFBaUIsT0FBTyxVQUFVLGFBQ2xDLG1CQUNBLGtCQUFrQixNQUFNLEtBQUssQ0FBQyxJQUNsQyxLQUFLLEtBQUssRUFBRTtBQUNwQjs7O0FDM0JBLG9CQUFvQixRQUFRO0FBQzFCLFNBQU8sT0FBTyxLQUFLLEVBQUUsTUFBTSxPQUFPO0FBQ3BDO0FBRUEsbUJBQW1CLE1BQU07QUFDdkIsU0FBTyxLQUFLLGFBQWEsSUFBSSxVQUFVLElBQUk7QUFDN0M7QUFFQSxtQkFBbUIsTUFBTTtBQUN2QixPQUFLLFFBQVE7QUFDYixPQUFLLFNBQVMsV0FBVyxLQUFLLGFBQWEsT0FBTyxLQUFLLEVBQUU7QUFDM0Q7QUFFQSxVQUFVLFlBQVk7QUFBQSxFQUNwQixLQUFLLFNBQVMsTUFBTTtBQUNsQixRQUFJLElBQUksS0FBSyxPQUFPLFFBQVEsSUFBSTtBQUNoQyxRQUFJLElBQUksR0FBRztBQUNULFdBQUssT0FBTyxLQUFLLElBQUk7QUFDckIsV0FBSyxNQUFNLGFBQWEsU0FBUyxLQUFLLE9BQU8sS0FBSyxHQUFHLENBQUM7QUFBQSxJQUN4RDtBQUFBLEVBQ0Y7QUFBQSxFQUNBLFFBQVEsU0FBUyxNQUFNO0FBQ3JCLFFBQUksSUFBSSxLQUFLLE9BQU8sUUFBUSxJQUFJO0FBQ2hDLFFBQUksS0FBSyxHQUFHO0FBQ1YsV0FBSyxPQUFPLE9BQU8sR0FBRyxDQUFDO0FBQ3ZCLFdBQUssTUFBTSxhQUFhLFNBQVMsS0FBSyxPQUFPLEtBQUssR0FBRyxDQUFDO0FBQUEsSUFDeEQ7QUFBQSxFQUNGO0FBQUEsRUFDQSxVQUFVLFNBQVMsTUFBTTtBQUN2QixXQUFPLEtBQUssT0FBTyxRQUFRLElBQUksS0FBSztBQUFBLEVBQ3RDO0FBQ0Y7QUFFQSxvQkFBb0IsTUFBTSxPQUFPO0FBQy9CLE1BQUksT0FBTyxVQUFVLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNO0FBQzlDLFNBQU8sRUFBRSxJQUFJO0FBQUcsU0FBSyxJQUFJLE1BQU0sRUFBRTtBQUNuQztBQUVBLHVCQUF1QixNQUFNLE9BQU87QUFDbEMsTUFBSSxPQUFPLFVBQVUsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU07QUFDOUMsU0FBTyxFQUFFLElBQUk7QUFBRyxTQUFLLE9BQU8sTUFBTSxFQUFFO0FBQ3RDO0FBRUEscUJBQXFCLE9BQU87QUFDMUIsU0FBTyxXQUFXO0FBQ2hCLGVBQVcsTUFBTSxLQUFLO0FBQUEsRUFDeEI7QUFDRjtBQUVBLHNCQUFzQixPQUFPO0FBQzNCLFNBQU8sV0FBVztBQUNoQixrQkFBYyxNQUFNLEtBQUs7QUFBQSxFQUMzQjtBQUNGO0FBRUEseUJBQXlCLE9BQU8sT0FBTztBQUNyQyxTQUFPLFdBQVc7QUFDaEIsSUFBQyxPQUFNLE1BQU0sTUFBTSxTQUFTLElBQUksYUFBYSxlQUFlLE1BQU0sS0FBSztBQUFBLEVBQ3pFO0FBQ0Y7QUFFZSx5QkFBUyxNQUFNLE9BQU87QUFDbkMsTUFBSSxRQUFRLFdBQVcsT0FBTyxFQUFFO0FBRWhDLE1BQUksVUFBVSxTQUFTLEdBQUc7QUFDeEIsUUFBSSxPQUFPLFVBQVUsS0FBSyxLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNO0FBQ3JELFdBQU8sRUFBRSxJQUFJO0FBQUcsVUFBSSxDQUFDLEtBQUssU0FBUyxNQUFNLEVBQUU7QUFBRyxlQUFPO0FBQ3JELFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxLQUFLLEtBQU0sUUFBTyxVQUFVLGFBQzdCLGtCQUFrQixRQUNsQixjQUNBLGNBQWMsT0FBTyxLQUFLLENBQUM7QUFDbkM7OztBQzFFQSxzQkFBc0I7QUFDcEIsT0FBSyxjQUFjO0FBQ3JCO0FBRUEsc0JBQXNCLE9BQU87QUFDM0IsU0FBTyxXQUFXO0FBQ2hCLFNBQUssY0FBYztBQUFBLEVBQ3JCO0FBQ0Y7QUFFQSxzQkFBc0IsT0FBTztBQUMzQixTQUFPLFdBQVc7QUFDaEIsUUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLFNBQVM7QUFDbkMsU0FBSyxjQUFjLEtBQUssT0FBTyxLQUFLO0FBQUEsRUFDdEM7QUFDRjtBQUVlLHNCQUFTLE9BQU87QUFDN0IsU0FBTyxVQUFVLFNBQ1gsS0FBSyxLQUFLLFNBQVMsT0FDZixhQUFjLFFBQU8sVUFBVSxhQUMvQixlQUNBLGNBQWMsS0FBSyxDQUFDLElBQ3hCLEtBQUssS0FBSyxFQUFFO0FBQ3BCOzs7QUN4QkEsc0JBQXNCO0FBQ3BCLE9BQUssWUFBWTtBQUNuQjtBQUVBLHNCQUFzQixPQUFPO0FBQzNCLFNBQU8sV0FBVztBQUNoQixTQUFLLFlBQVk7QUFBQSxFQUNuQjtBQUNGO0FBRUEsc0JBQXNCLE9BQU87QUFDM0IsU0FBTyxXQUFXO0FBQ2hCLFFBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxTQUFTO0FBQ25DLFNBQUssWUFBWSxLQUFLLE9BQU8sS0FBSztBQUFBLEVBQ3BDO0FBQ0Y7QUFFZSxzQkFBUyxPQUFPO0FBQzdCLFNBQU8sVUFBVSxTQUNYLEtBQUssS0FBSyxTQUFTLE9BQ2YsYUFBYyxRQUFPLFVBQVUsYUFDL0IsZUFDQSxjQUFjLEtBQUssQ0FBQyxJQUN4QixLQUFLLEtBQUssRUFBRTtBQUNwQjs7O0FDeEJBLGlCQUFpQjtBQUNmLE1BQUksS0FBSztBQUFhLFNBQUssV0FBVyxZQUFZLElBQUk7QUFDeEQ7QUFFZSx5QkFBVztBQUN4QixTQUFPLEtBQUssS0FBSyxLQUFLO0FBQ3hCOzs7QUNOQSxpQkFBaUI7QUFDZixNQUFJLEtBQUs7QUFBaUIsU0FBSyxXQUFXLGFBQWEsTUFBTSxLQUFLLFdBQVcsVUFBVTtBQUN6RjtBQUVlLHlCQUFXO0FBQ3hCLFNBQU8sS0FBSyxLQUFLLEtBQUs7QUFDeEI7OztBQ0plLHdCQUFTLE1BQU07QUFDNUIsTUFBSSxVQUFTLE9BQU8sU0FBUyxhQUFhLE9BQU8sZ0JBQVEsSUFBSTtBQUM3RCxTQUFPLEtBQUssT0FBTyxXQUFXO0FBQzVCLFdBQU8sS0FBSyxZQUFZLFFBQU8sTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUFBLEVBQ3ZELENBQUM7QUFDSDs7O0FDSkEsd0JBQXdCO0FBQ3RCLFNBQU87QUFDVDtBQUVlLHdCQUFTLE1BQU0sUUFBUTtBQUNwQyxNQUFJLFVBQVMsT0FBTyxTQUFTLGFBQWEsT0FBTyxnQkFBUSxJQUFJLEdBQ3pELFNBQVMsVUFBVSxPQUFPLGVBQWUsT0FBTyxXQUFXLGFBQWEsU0FBUyxpQkFBUyxNQUFNO0FBQ3BHLFNBQU8sS0FBSyxPQUFPLFdBQVc7QUFDNUIsV0FBTyxLQUFLLGFBQWEsUUFBTyxNQUFNLE1BQU0sU0FBUyxHQUFHLE9BQU8sTUFBTSxNQUFNLFNBQVMsS0FBSyxJQUFJO0FBQUEsRUFDL0YsQ0FBQztBQUNIOzs7QUNiQSxrQkFBa0I7QUFDaEIsTUFBSSxTQUFTLEtBQUs7QUFDbEIsTUFBSTtBQUFRLFdBQU8sWUFBWSxJQUFJO0FBQ3JDO0FBRWUsMEJBQVc7QUFDeEIsU0FBTyxLQUFLLEtBQUssTUFBTTtBQUN6Qjs7O0FDUEEsa0NBQWtDO0FBQ2hDLE1BQUksUUFBUSxLQUFLLFVBQVUsS0FBSyxHQUFHLFNBQVMsS0FBSztBQUNqRCxTQUFPLFNBQVMsT0FBTyxhQUFhLE9BQU8sS0FBSyxXQUFXLElBQUk7QUFDakU7QUFFQSwrQkFBK0I7QUFDN0IsTUFBSSxRQUFRLEtBQUssVUFBVSxJQUFJLEdBQUcsU0FBUyxLQUFLO0FBQ2hELFNBQU8sU0FBUyxPQUFPLGFBQWEsT0FBTyxLQUFLLFdBQVcsSUFBSTtBQUNqRTtBQUVlLHVCQUFTLE1BQU07QUFDNUIsU0FBTyxLQUFLLE9BQU8sT0FBTyxzQkFBc0Isc0JBQXNCO0FBQ3hFOzs7QUNaZSx1QkFBUyxPQUFPO0FBQzdCLFNBQU8sVUFBVSxTQUNYLEtBQUssU0FBUyxZQUFZLEtBQUssSUFDL0IsS0FBSyxLQUFLLEVBQUU7QUFDcEI7OztBQ0pBLHlCQUF5QixVQUFVO0FBQ2pDLFNBQU8sU0FBUyxPQUFPO0FBQ3JCLGFBQVMsS0FBSyxNQUFNLE9BQU8sS0FBSyxRQUFRO0FBQUEsRUFDMUM7QUFDRjtBQUVBLHlCQUF3QixXQUFXO0FBQ2pDLFNBQU8sVUFBVSxLQUFLLEVBQUUsTUFBTSxPQUFPLEVBQUUsSUFBSSxTQUFTLEdBQUc7QUFDckQsUUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLFFBQVEsR0FBRztBQUNoQyxRQUFJLEtBQUs7QUFBRyxhQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFDbkQsV0FBTyxFQUFDLE1BQU0sR0FBRyxLQUFVO0FBQUEsRUFDN0IsQ0FBQztBQUNIO0FBRUEsa0JBQWtCLFVBQVU7QUFDMUIsU0FBTyxXQUFXO0FBQ2hCLFFBQUksS0FBSyxLQUFLO0FBQ2QsUUFBSSxDQUFDO0FBQUk7QUFDVCxhQUFTLElBQUksR0FBRyxJQUFJLElBQUksS0FBSSxHQUFHLFFBQVEsR0FBRyxJQUFJLElBQUcsRUFBRSxHQUFHO0FBQ3BELFVBQUksSUFBSSxHQUFHLElBQUssRUFBQyxTQUFTLFFBQVEsRUFBRSxTQUFTLFNBQVMsU0FBUyxFQUFFLFNBQVMsU0FBUyxNQUFNO0FBQ3ZGLGFBQUssb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPO0FBQUEsTUFDeEQsT0FBTztBQUNMLFdBQUcsRUFBRSxLQUFLO0FBQUEsTUFDWjtBQUFBLElBQ0Y7QUFDQSxRQUFJLEVBQUU7QUFBRyxTQUFHLFNBQVM7QUFBQTtBQUNoQixhQUFPLEtBQUs7QUFBQSxFQUNuQjtBQUNGO0FBRUEsZUFBZSxVQUFVLE9BQU8sU0FBUztBQUN2QyxTQUFPLFdBQVc7QUFDaEIsUUFBSSxLQUFLLEtBQUssTUFBTSxHQUFHLFdBQVcsZ0JBQWdCLEtBQUs7QUFDdkQsUUFBSTtBQUFJLGVBQVMsSUFBSSxHQUFHLEtBQUksR0FBRyxRQUFRLElBQUksSUFBRyxFQUFFLEdBQUc7QUFDakQsWUFBSyxLQUFJLEdBQUcsSUFBSSxTQUFTLFNBQVMsUUFBUSxFQUFFLFNBQVMsU0FBUyxNQUFNO0FBQ2xFLGVBQUssb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPO0FBQ3RELGVBQUssaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFdBQVcsVUFBVSxFQUFFLFVBQVUsT0FBTztBQUN4RSxZQUFFLFFBQVE7QUFDVjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQ0EsU0FBSyxpQkFBaUIsU0FBUyxNQUFNLFVBQVUsT0FBTztBQUN0RCxRQUFJLEVBQUMsTUFBTSxTQUFTLE1BQU0sTUFBTSxTQUFTLE1BQU0sT0FBYyxVQUFvQixRQUFnQjtBQUNqRyxRQUFJLENBQUM7QUFBSSxXQUFLLE9BQU8sQ0FBQyxDQUFDO0FBQUE7QUFDbEIsU0FBRyxLQUFLLENBQUM7QUFBQSxFQUNoQjtBQUNGO0FBRWUsb0JBQVMsVUFBVSxPQUFPLFNBQVM7QUFDaEQsTUFBSSxZQUFZLGdCQUFlLFdBQVcsRUFBRSxHQUFHLEdBQUcsSUFBSSxVQUFVLFFBQVE7QUFFeEUsTUFBSSxVQUFVLFNBQVMsR0FBRztBQUN4QixRQUFJLEtBQUssS0FBSyxLQUFLLEVBQUU7QUFDckIsUUFBSTtBQUFJLGVBQVMsSUFBSSxHQUFHLEtBQUksR0FBRyxRQUFRLEdBQUcsSUFBSSxJQUFHLEVBQUUsR0FBRztBQUNwRCxhQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHO0FBQ2pDLGNBQUssS0FBSSxVQUFVLElBQUksU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTTtBQUMzRCxtQkFBTyxFQUFFO0FBQUEsVUFDWDtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQ0E7QUFBQSxFQUNGO0FBRUEsT0FBSyxRQUFRLFFBQVE7QUFDckIsT0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUU7QUFBRyxTQUFLLEtBQUssR0FBRyxVQUFVLElBQUksT0FBTyxPQUFPLENBQUM7QUFDbEUsU0FBTztBQUNUOzs7QUNoRUEsdUJBQXVCLE1BQU0sT0FBTSxRQUFRO0FBQ3pDLE1BQUksVUFBUyxlQUFZLElBQUksR0FDekIsUUFBUSxRQUFPO0FBRW5CLE1BQUksT0FBTyxVQUFVLFlBQVk7QUFDL0IsWUFBUSxJQUFJLE1BQU0sT0FBTSxNQUFNO0FBQUEsRUFDaEMsT0FBTztBQUNMLFlBQVEsUUFBTyxTQUFTLFlBQVksT0FBTztBQUMzQyxRQUFJO0FBQVEsWUFBTSxVQUFVLE9BQU0sT0FBTyxTQUFTLE9BQU8sVUFBVSxHQUFHLE1BQU0sU0FBUyxPQUFPO0FBQUE7QUFDdkYsWUFBTSxVQUFVLE9BQU0sT0FBTyxLQUFLO0FBQUEsRUFDekM7QUFFQSxPQUFLLGNBQWMsS0FBSztBQUMxQjtBQUVBLDBCQUEwQixPQUFNLFFBQVE7QUFDdEMsU0FBTyxXQUFXO0FBQ2hCLFdBQU8sY0FBYyxNQUFNLE9BQU0sTUFBTTtBQUFBLEVBQ3pDO0FBQ0Y7QUFFQSwwQkFBMEIsT0FBTSxRQUFRO0FBQ3RDLFNBQU8sV0FBVztBQUNoQixXQUFPLGNBQWMsTUFBTSxPQUFNLE9BQU8sTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUFBLEVBQ2hFO0FBQ0Y7QUFFZSwyQkFBUyxPQUFNLFFBQVE7QUFDcEMsU0FBTyxLQUFLLEtBQU0sUUFBTyxXQUFXLGFBQzlCLG1CQUNBLGtCQUFrQixPQUFNLE1BQU0sQ0FBQztBQUN2Qzs7O0FDakNlLDZCQUFZO0FBQ3pCLFdBQVMsU0FBUyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUksT0FBTyxRQUFRLElBQUksSUFBRyxFQUFFLEdBQUc7QUFDcEUsYUFBUyxRQUFRLE9BQU8sSUFBSSxJQUFJLEdBQUcsSUFBSSxNQUFNLFFBQVEsTUFBTSxJQUFJLEdBQUcsRUFBRSxHQUFHO0FBQ3JFLFVBQUksT0FBTyxNQUFNO0FBQUksY0FBTTtBQUFBLElBQzdCO0FBQUEsRUFDRjtBQUNGOzs7QUM2Qk8sSUFBSSxPQUFPLENBQUMsSUFBSTtBQUVoQixtQkFBbUIsUUFBUSxTQUFTO0FBQ3pDLE9BQUssVUFBVTtBQUNmLE9BQUssV0FBVztBQUNsQjtBQUVBLHFCQUFxQjtBQUNuQixTQUFPLElBQUksVUFBVSxDQUFDLENBQUMsU0FBUyxlQUFlLENBQUMsR0FBRyxJQUFJO0FBQ3pEO0FBRUEsK0JBQStCO0FBQzdCLFNBQU87QUFDVDtBQUVBLFVBQVUsWUFBWSxVQUFVLFlBQVk7QUFBQSxFQUMxQyxhQUFhO0FBQUEsRUFDYixRQUFRO0FBQUEsRUFDUixXQUFXO0FBQUEsRUFDWCxhQUFhO0FBQUEsRUFDYixnQkFBZ0I7QUFBQSxFQUNoQixRQUFRO0FBQUEsRUFDUixNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxXQUFXO0FBQUEsRUFDWCxPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxVQUFVO0FBQUEsRUFDVixTQUFTO0FBQUEsRUFDVCxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxJQUFJO0FBQUEsRUFDSixVQUFVO0FBQUEsRUFDVixDQUFDLE9BQU8sV0FBVztBQUNyQjtBQUVBLElBQU8sb0JBQVE7OztBQ3ZGQSx5QkFBUyxVQUFVO0FBQ2hDLFNBQU8sT0FBTyxhQUFhLFdBQ3JCLElBQUksVUFBVSxDQUFDLENBQUMsU0FBUyxjQUFjLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLGVBQWUsQ0FBQyxJQUM5RSxJQUFJLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUk7QUFDeEM7OztBQ05lLDZCQUFTLE9BQU87QUFDN0IsTUFBSTtBQUNKLFNBQU8sY0FBYyxNQUFNO0FBQWEsWUFBUTtBQUNoRCxTQUFPO0FBQ1Q7OztBQ0ZlLHlCQUFTLE9BQU8sTUFBTTtBQUNuQyxVQUFRLG9CQUFZLEtBQUs7QUFDekIsTUFBSSxTQUFTO0FBQVcsV0FBTyxNQUFNO0FBQ3JDLE1BQUksTUFBTTtBQUNSLFFBQUksTUFBTSxLQUFLLG1CQUFtQjtBQUNsQyxRQUFJLElBQUksZ0JBQWdCO0FBQ3RCLFVBQUksU0FBUSxJQUFJLGVBQWU7QUFDL0IsYUFBTSxJQUFJLE1BQU0sU0FBUyxPQUFNLElBQUksTUFBTTtBQUN6QyxlQUFRLE9BQU0sZ0JBQWdCLEtBQUssYUFBYSxFQUFFLFFBQVEsQ0FBQztBQUMzRCxhQUFPLENBQUMsT0FBTSxHQUFHLE9BQU0sQ0FBQztBQUFBLElBQzFCO0FBQ0EsUUFBSSxLQUFLLHVCQUF1QjtBQUM5QixVQUFJLE9BQU8sS0FBSyxzQkFBc0I7QUFDdEMsYUFBTyxDQUFDLE1BQU0sVUFBVSxLQUFLLE9BQU8sS0FBSyxZQUFZLE1BQU0sVUFBVSxLQUFLLE1BQU0sS0FBSyxTQUFTO0FBQUEsSUFDaEc7QUFBQSxFQUNGO0FBQ0EsU0FBTyxDQUFDLE1BQU0sT0FBTyxNQUFNLEtBQUs7QUFDbEM7OztBQ25CTyx1QkFBdUIsT0FBTztBQUNuQyxRQUFNLHlCQUF5QjtBQUNqQztBQUVlLHlCQUFTLE9BQU87QUFDN0IsUUFBTSxlQUFlO0FBQ3JCLFFBQU0seUJBQXlCO0FBQ2pDOzs7QUNKZSx3QkFBUyxNQUFNO0FBQzVCLE1BQUksUUFBTyxLQUFLLFNBQVMsaUJBQ3JCLGFBQVksZ0JBQU8sSUFBSSxFQUFFLEdBQUcsa0JBQWtCLGlCQUFTLElBQUk7QUFDL0QsTUFBSSxtQkFBbUIsT0FBTTtBQUMzQixlQUFVLEdBQUcsb0JBQW9CLGlCQUFTLElBQUk7QUFBQSxFQUNoRCxPQUFPO0FBQ0wsVUFBSyxhQUFhLE1BQUssTUFBTTtBQUM3QixVQUFLLE1BQU0sZ0JBQWdCO0FBQUEsRUFDN0I7QUFDRjtBQUVPLGlCQUFpQixNQUFNLFNBQVM7QUFDckMsTUFBSSxRQUFPLEtBQUssU0FBUyxpQkFDckIsYUFBWSxnQkFBTyxJQUFJLEVBQUUsR0FBRyxrQkFBa0IsSUFBSTtBQUN0RCxNQUFJLFNBQVM7QUFDWCxlQUFVLEdBQUcsY0FBYyxpQkFBUyxJQUFJO0FBQ3hDLGVBQVcsV0FBVztBQUFFLGlCQUFVLEdBQUcsY0FBYyxJQUFJO0FBQUEsSUFBRyxHQUFHLENBQUM7QUFBQSxFQUNoRTtBQUNBLE1BQUksbUJBQW1CLE9BQU07QUFDM0IsZUFBVSxHQUFHLG9CQUFvQixJQUFJO0FBQUEsRUFDdkMsT0FBTztBQUNMLFVBQUssTUFBTSxnQkFBZ0IsTUFBSztBQUNoQyxXQUFPLE1BQUs7QUFBQSxFQUNkO0FBQ0Y7OztBQzNCQSxJQUFPLG9CQUFRLFFBQUssTUFBTTs7O0FDQVgsbUJBQW1CLE9BQU07QUFBQSxFQUN0QztBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFBRztBQUFBLEVBQUc7QUFBQSxFQUFJO0FBQUEsRUFDVjtBQUFBLEdBQ0M7QUFDRCxTQUFPLGlCQUFpQixNQUFNO0FBQUEsSUFDNUIsTUFBTSxFQUFDLE9BQU8sT0FBTSxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDeEQsYUFBYSxFQUFDLE9BQU8sYUFBYSxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDdEUsU0FBUyxFQUFDLE9BQU8sU0FBUyxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDOUQsUUFBUSxFQUFDLE9BQU8sUUFBUSxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDNUQsWUFBWSxFQUFDLE9BQU8sWUFBWSxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDcEUsUUFBUSxFQUFDLE9BQU8sUUFBUSxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDNUQsR0FBRyxFQUFDLE9BQU8sSUFBRyxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDbEQsR0FBRyxFQUFDLE9BQU8sSUFBRyxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDbEQsSUFBSSxFQUFDLE9BQU8sSUFBSSxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDcEQsSUFBSSxFQUFDLE9BQU8sSUFBSSxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDcEQsR0FBRyxFQUFDLE9BQU8sVUFBUTtBQUFBLEVBQ3JCLENBQUM7QUFDSDtBQUVBLFVBQVUsVUFBVSxLQUFLLFdBQVc7QUFDbEMsTUFBSSxRQUFRLEtBQUssRUFBRSxHQUFHLE1BQU0sS0FBSyxHQUFHLFNBQVM7QUFDN0MsU0FBTyxVQUFVLEtBQUssSUFBSSxPQUFPO0FBQ25DOzs7QUNuQkEsdUJBQXVCLE9BQU87QUFDNUIsU0FBTyxDQUFDLE1BQU0sV0FBVyxDQUFDLE1BQU07QUFDbEM7QUFFQSw0QkFBNEI7QUFDMUIsU0FBTyxLQUFLO0FBQ2Q7QUFFQSx3QkFBd0IsT0FBTyxHQUFHO0FBQ2hDLFNBQU8sS0FBSyxPQUFPLEVBQUMsR0FBRyxNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUMsSUFBSTtBQUNoRDtBQUVBLDRCQUE0QjtBQUMxQixTQUFPLFVBQVUsa0JBQW1CLGtCQUFrQjtBQUN4RDtBQUVlLHdCQUFXO0FBQ3hCLE1BQUksVUFBUyxlQUNULFlBQVksa0JBQ1osVUFBVSxnQkFDVixZQUFZLGtCQUNaLFdBQVcsQ0FBQyxHQUNaLFlBQVksaUJBQVMsU0FBUyxRQUFRLEtBQUssR0FDM0MsU0FBUyxHQUNULFlBQ0EsWUFDQSxhQUNBLGFBQ0EsaUJBQWlCO0FBRXJCLGdCQUFjLFlBQVc7QUFDdkIsZUFDSyxHQUFHLGtCQUFrQixXQUFXLEVBQ2xDLE9BQU8sU0FBUyxFQUNkLEdBQUcsbUJBQW1CLFlBQVksRUFDbEMsR0FBRyxrQkFBa0IsVUFBVSxFQUMvQixHQUFHLGtDQUFrQyxVQUFVLEVBQy9DLE1BQU0sZ0JBQWdCLE1BQU0sRUFDNUIsTUFBTSwrQkFBK0IsZUFBZTtBQUFBLEVBQzNEO0FBRUEsdUJBQXFCLE9BQU8sR0FBRztBQUM3QixRQUFJLGVBQWUsQ0FBQyxRQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFBRztBQUNqRCxRQUFJLFVBQVUsWUFBWSxNQUFNLFVBQVUsS0FBSyxNQUFNLE9BQU8sQ0FBQyxHQUFHLE9BQU8sR0FBRyxPQUFPO0FBQ2pGLFFBQUksQ0FBQztBQUFTO0FBQ2Qsb0JBQU8sTUFBTSxJQUFJLEVBQUUsR0FBRyxrQkFBa0IsWUFBWSxJQUFJLEVBQUUsR0FBRyxnQkFBZ0IsWUFBWSxJQUFJO0FBQzdGLG1CQUFPLE1BQU0sSUFBSTtBQUNqQixrQkFBYyxLQUFLO0FBQ25CLGtCQUFjO0FBQ2QsaUJBQWEsTUFBTTtBQUNuQixpQkFBYSxNQUFNO0FBQ25CLFlBQVEsU0FBUyxLQUFLO0FBQUEsRUFDeEI7QUFFQSxzQkFBb0IsT0FBTztBQUN6QixvQkFBUSxLQUFLO0FBQ2IsUUFBSSxDQUFDLGFBQWE7QUFDaEIsVUFBSSxLQUFLLE1BQU0sVUFBVSxZQUFZLEtBQUssTUFBTSxVQUFVO0FBQzFELG9CQUFjLEtBQUssS0FBSyxLQUFLLEtBQUs7QUFBQSxJQUNwQztBQUNBLGFBQVMsTUFBTSxRQUFRLEtBQUs7QUFBQSxFQUM5QjtBQUVBLHNCQUFvQixPQUFPO0FBQ3pCLG9CQUFPLE1BQU0sSUFBSSxFQUFFLEdBQUcsK0JBQStCLElBQUk7QUFDekQsWUFBUSxNQUFNLE1BQU0sV0FBVztBQUMvQixvQkFBUSxLQUFLO0FBQ2IsYUFBUyxNQUFNLE9BQU8sS0FBSztBQUFBLEVBQzdCO0FBRUEsd0JBQXNCLE9BQU8sR0FBRztBQUM5QixRQUFJLENBQUMsUUFBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQUc7QUFDbEMsUUFBSSxVQUFVLE1BQU0sZ0JBQ2hCLEtBQUksVUFBVSxLQUFLLE1BQU0sT0FBTyxDQUFDLEdBQ2pDLElBQUksUUFBUSxRQUFRLEdBQUc7QUFFM0IsU0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRztBQUN0QixVQUFJLFVBQVUsWUFBWSxNQUFNLElBQUcsT0FBTyxHQUFHLFFBQVEsR0FBRyxZQUFZLFFBQVEsRUFBRSxHQUFHO0FBQy9FLHNCQUFjLEtBQUs7QUFDbkIsZ0JBQVEsU0FBUyxPQUFPLFFBQVEsRUFBRTtBQUFBLE1BQ3BDO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFFQSxzQkFBb0IsT0FBTztBQUN6QixRQUFJLFVBQVUsTUFBTSxnQkFDaEIsSUFBSSxRQUFRLFFBQVEsR0FBRztBQUUzQixTQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHO0FBQ3RCLFVBQUksVUFBVSxTQUFTLFFBQVEsR0FBRyxhQUFhO0FBQzdDLHdCQUFRLEtBQUs7QUFDYixnQkFBUSxRQUFRLE9BQU8sUUFBUSxFQUFFO0FBQUEsTUFDbkM7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLHNCQUFvQixPQUFPO0FBQ3pCLFFBQUksVUFBVSxNQUFNLGdCQUNoQixJQUFJLFFBQVEsUUFBUSxHQUFHO0FBRTNCLFFBQUk7QUFBYSxtQkFBYSxXQUFXO0FBQ3pDLGtCQUFjLFdBQVcsV0FBVztBQUFFLG9CQUFjO0FBQUEsSUFBTSxHQUFHLEdBQUc7QUFDaEUsU0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRztBQUN0QixVQUFJLFVBQVUsU0FBUyxRQUFRLEdBQUcsYUFBYTtBQUM3QyxzQkFBYyxLQUFLO0FBQ25CLGdCQUFRLE9BQU8sT0FBTyxRQUFRLEVBQUU7QUFBQSxNQUNsQztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsdUJBQXFCLE1BQU0sWUFBVyxPQUFPLEdBQUcsWUFBWSxPQUFPO0FBQ2pFLFFBQUksWUFBVyxVQUFVLEtBQUssR0FDMUIsSUFBSSxnQkFBUSxTQUFTLE9BQU8sVUFBUyxHQUFHLElBQUksSUFDNUM7QUFFSixRQUFLLEtBQUksUUFBUSxLQUFLLE1BQU0sSUFBSSxVQUFVLGVBQWU7QUFBQSxNQUNyRCxhQUFhO0FBQUEsTUFDYixRQUFRO0FBQUEsTUFDUjtBQUFBLE1BQ0E7QUFBQSxNQUNBLEdBQUcsRUFBRTtBQUFBLE1BQ0wsR0FBRyxFQUFFO0FBQUEsTUFDTCxJQUFJO0FBQUEsTUFDSixJQUFJO0FBQUEsTUFDSjtBQUFBLElBQ0YsQ0FBQyxHQUFHLENBQUMsTUFBTTtBQUFNO0FBRW5CLFNBQUssRUFBRSxJQUFJLEVBQUUsTUFBTTtBQUNuQixTQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU07QUFFbkIsV0FBTyxpQkFBaUIsT0FBTSxRQUFPLFFBQU87QUFDMUMsVUFBSSxLQUFLLEdBQUc7QUFDWixjQUFRO0FBQUEsYUFDRDtBQUFTLG1CQUFTLGNBQWMsU0FBUyxJQUFJO0FBQVU7QUFBQSxhQUN2RDtBQUFPLGlCQUFPLFNBQVMsYUFBYSxFQUFFO0FBQUEsYUFDdEM7QUFBUSxjQUFJLGdCQUFRLFVBQVMsUUFBTyxVQUFTLEdBQUcsSUFBSTtBQUFRO0FBQUE7QUFFbkUsZ0JBQVMsS0FDUCxPQUNBLE1BQ0EsSUFBSSxVQUFVLE9BQU07QUFBQSxRQUNsQixhQUFhO0FBQUEsUUFDYixTQUFTO0FBQUEsUUFDVCxRQUFRO0FBQUEsUUFDUjtBQUFBLFFBQ0EsUUFBUTtBQUFBLFFBQ1IsR0FBRyxFQUFFLEtBQUs7QUFBQSxRQUNWLEdBQUcsRUFBRSxLQUFLO0FBQUEsUUFDVixJQUFJLEVBQUUsS0FBSyxHQUFHO0FBQUEsUUFDZCxJQUFJLEVBQUUsS0FBSyxHQUFHO0FBQUEsUUFDZDtBQUFBLE1BQ0YsQ0FBQyxHQUNELENBQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLE9BQUssU0FBUyxTQUFTLEdBQUc7QUFDeEIsV0FBTyxVQUFVLFNBQVUsV0FBUyxPQUFPLE1BQU0sYUFBYSxJQUFJLGtCQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUTtBQUFBLEVBQzNGO0FBRUEsT0FBSyxZQUFZLFNBQVMsR0FBRztBQUMzQixXQUFPLFVBQVUsU0FBVSxhQUFZLE9BQU8sTUFBTSxhQUFhLElBQUksa0JBQVMsQ0FBQyxHQUFHLFFBQVE7QUFBQSxFQUM1RjtBQUVBLE9BQUssVUFBVSxTQUFTLEdBQUc7QUFDekIsV0FBTyxVQUFVLFNBQVUsV0FBVSxPQUFPLE1BQU0sYUFBYSxJQUFJLGtCQUFTLENBQUMsR0FBRyxRQUFRO0FBQUEsRUFDMUY7QUFFQSxPQUFLLFlBQVksU0FBUyxHQUFHO0FBQzNCLFdBQU8sVUFBVSxTQUFVLGFBQVksT0FBTyxNQUFNLGFBQWEsSUFBSSxrQkFBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVE7QUFBQSxFQUM5RjtBQUVBLE9BQUssS0FBSyxXQUFXO0FBQ25CLFFBQUksUUFBUSxVQUFVLEdBQUcsTUFBTSxXQUFXLFNBQVM7QUFDbkQsV0FBTyxVQUFVLFlBQVksT0FBTztBQUFBLEVBQ3RDO0FBRUEsT0FBSyxnQkFBZ0IsU0FBUyxHQUFHO0FBQy9CLFdBQU8sVUFBVSxTQUFVLGtCQUFrQixLQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsS0FBSyxLQUFLLGNBQWM7QUFBQSxFQUM1RjtBQUVBLFNBQU87QUFDVDs7O0FDL0xlLHdCQUFTLGFBQWEsU0FBUyxXQUFXO0FBQ3ZELGNBQVksWUFBWSxRQUFRLFlBQVk7QUFDNUMsWUFBVSxjQUFjO0FBQzFCO0FBRU8sZ0JBQWdCLFFBQVEsWUFBWTtBQUN6QyxNQUFJLFlBQVksT0FBTyxPQUFPLE9BQU8sU0FBUztBQUM5QyxXQUFTLE9BQU87QUFBWSxjQUFVLE9BQU8sV0FBVztBQUN4RCxTQUFPO0FBQ1Q7OztBQ1BPLGlCQUFpQjtBQUFDO0FBRWxCLElBQUksU0FBUztBQUNiLElBQUksV0FBVyxJQUFJO0FBRTFCLElBQUksTUFBTTtBQUFWLElBQ0ksTUFBTTtBQURWLElBRUksTUFBTTtBQUZWLElBR0ksUUFBUTtBQUhaLElBSUksZUFBZSxJQUFJLE9BQU8sWUFBWSxDQUFDLEtBQUssS0FBSyxHQUFHLElBQUksTUFBTTtBQUpsRSxJQUtJLGVBQWUsSUFBSSxPQUFPLFlBQVksQ0FBQyxLQUFLLEtBQUssR0FBRyxJQUFJLE1BQU07QUFMbEUsSUFNSSxnQkFBZ0IsSUFBSSxPQUFPLGFBQWEsQ0FBQyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksTUFBTTtBQU56RSxJQU9JLGdCQUFnQixJQUFJLE9BQU8sYUFBYSxDQUFDLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxNQUFNO0FBUHpFLElBUUksZUFBZSxJQUFJLE9BQU8sWUFBWSxDQUFDLEtBQUssS0FBSyxHQUFHLElBQUksTUFBTTtBQVJsRSxJQVNJLGdCQUFnQixJQUFJLE9BQU8sYUFBYSxDQUFDLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxNQUFNO0FBRXpFLElBQUksUUFBUTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsY0FBYztBQUFBLEVBQ2QsTUFBTTtBQUFBLEVBQ04sWUFBWTtBQUFBLEVBQ1osT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsZ0JBQWdCO0FBQUEsRUFDaEIsTUFBTTtBQUFBLEVBQ04sWUFBWTtBQUFBLEVBQ1osT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsT0FBTztBQUFBLEVBQ1AsZ0JBQWdCO0FBQUEsRUFDaEIsVUFBVTtBQUFBLEVBQ1YsU0FBUztBQUFBLEVBQ1QsTUFBTTtBQUFBLEVBQ04sVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsZUFBZTtBQUFBLEVBQ2YsVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsYUFBYTtBQUFBLEVBQ2IsZ0JBQWdCO0FBQUEsRUFDaEIsWUFBWTtBQUFBLEVBQ1osWUFBWTtBQUFBLEVBQ1osU0FBUztBQUFBLEVBQ1QsWUFBWTtBQUFBLEVBQ1osY0FBYztBQUFBLEVBQ2QsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsWUFBWTtBQUFBLEVBQ1osVUFBVTtBQUFBLEVBQ1YsYUFBYTtBQUFBLEVBQ2IsU0FBUztBQUFBLEVBQ1QsU0FBUztBQUFBLEVBQ1QsWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsU0FBUztBQUFBLEVBQ1QsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsTUFBTTtBQUFBLEVBQ04sT0FBTztBQUFBLEVBQ1AsYUFBYTtBQUFBLEVBQ2IsTUFBTTtBQUFBLEVBQ04sVUFBVTtBQUFBLEVBQ1YsU0FBUztBQUFBLEVBQ1QsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsZUFBZTtBQUFBLEVBQ2YsV0FBVztBQUFBLEVBQ1gsY0FBYztBQUFBLEVBQ2QsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsc0JBQXNCO0FBQUEsRUFDdEIsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsYUFBYTtBQUFBLEVBQ2IsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsYUFBYTtBQUFBLEVBQ2IsTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsT0FBTztBQUFBLEVBQ1AsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1Isa0JBQWtCO0FBQUEsRUFDbEIsWUFBWTtBQUFBLEVBQ1osY0FBYztBQUFBLEVBQ2QsY0FBYztBQUFBLEVBQ2QsZ0JBQWdCO0FBQUEsRUFDaEIsaUJBQWlCO0FBQUEsRUFDakIsbUJBQW1CO0FBQUEsRUFDbkIs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 +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvd2VicGFjay9ib290c3RyYXAiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL2RlZHVwZS5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvZXMvYXJyYXkvZnJvbS5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtZnVuY3Rpb24uanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1mcm9tLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9iaW5kLWNvbnRleHQuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jYWxsLXdpdGgtc2FmZS1pdGVyYXRpb24tY2xvc2luZy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbi5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YtcmF3LmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcnJlY3QtcHJvdG90eXBlLWdldHRlci5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1pdGVyYXRvci1jb25zdHJ1Y3Rvci5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWl0ZXJhdG9yLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VudW0tYnVnLWtleXMuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXRvLXN0cmluZy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRkZW4ta2V5cy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGUuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9odG1sLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmRleGVkLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtZm9yY2VkLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3JzLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbmF0aXZlLXN5bWJvbC5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcC5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1jcmVhdGUuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnRpZXMuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qta2V5cy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vd24ta2V5cy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BhdGguanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWRlZmluZS5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1nbG9iYWwuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC1rZXkuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctYXQuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXByaW1pdGl2ZS5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3ZhbGlkYXRlLXNldC1wcm90b3R5cGUtb2YtYXJndW1lbnRzLmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZnJvbS5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3IuanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvc3JjL2ljb24uanMiLCAibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC93ZWJwYWNrOi9mZWF0aGVyL3NyYy9pY29ucy5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvc3JjL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3Qvd2VicGFjazovZmVhdGhlci9zcmMvcmVwbGFjZS5qcyIsICJub2RlX21vZHVsZXMvZmVhdGhlci1pY29ucy9kaXN0L3dlYnBhY2s6L2ZlYXRoZXIvc3JjL3RvLXN2Zy5qcyIsICJub2RlX21vZHVsZXMvbG9nbGV2ZWwvbGliL2xvZ2xldmVsLmpzIiwgIm5vZGVfbW9kdWxlcy9ncmFwaG9sb2d5L3NyYy91dGlscy5qcyIsICJub2RlX21vZHVsZXMvZXZlbnRzL2V2ZW50cy5qcyIsICJub2RlX21vZHVsZXMvb2JsaXRlcmF0b3IvaXRlcmF0b3IuanMiLCAibm9kZV9tb2R1bGVzL29ibGl0ZXJhdG9yL3N1cHBvcnQuanMiLCAibm9kZV9tb2R1bGVzL29ibGl0ZXJhdG9yL2l0ZXIuanMiLCAibm9kZV9tb2R1bGVzL29ibGl0ZXJhdG9yL3Rha2UuanMiLCAibm9kZV9tb2R1bGVzL2dyYXBob2xvZ3kvc3JjL2Vycm9ycy5qcyIsICJub2RlX21vZHVsZXMvZ3JhcGhvbG9neS9zcmMvZGF0YS5qcyIsICJub2RlX21vZHVsZXMvZ3JhcGhvbG9neS9zcmMvaW5kaWNlcy5qcyIsICJub2RlX21vZHVsZXMvZ3JhcGhvbG9neS9zcmMvYXR0cmlidXRlcy9ub2Rlcy5qcyIsICJub2RlX21vZHVsZXMvZ3JhcGhvbG9neS9zcmMvYXR0cmlidXRlcy9lZGdlcy5qcyIsICJub2RlX21vZHVsZXMvb2JsaXRlcmF0b3IvY2hhaW4uanMiLCAibm9kZV9tb2R1bGVzL2dyYXBob2xvZ3kvc3JjL2l0ZXJhdGlvbi9lZGdlcy5qcyIsICJub2RlX21vZHVsZXMvZ3JhcGhvbG9neS9zcmMvaXRlcmF0aW9uL25laWdoYm9ycy5qcyIsICJub2RlX21vZHVsZXMvZ3JhcGhvbG9neS9zcmMvaXRlcmF0aW9uL2FkamFjZW5jeS5qcyIsICJub2RlX21vZHVsZXMvZ3JhcGhvbG9neS9zcmMvc2VyaWFsaXphdGlvbi5qcyIsICJub2RlX21vZHVsZXMvZ3JhcGhvbG9neS9zcmMvZ3JhcGguanMiLCAibm9kZV9tb2R1bGVzL2dyYXBob2xvZ3kvc3JjL2NsYXNzZXMuanMiLCAibm9kZV9tb2R1bGVzL2dyYXBob2xvZ3ktdXRpbHMvaXMtZ3JhcGguanMiLCAibm9kZV9tb2R1bGVzL29ibGl0ZXJhdG9yL3N1cHBvcnQuanMiLCAibm9kZV9tb2R1bGVzL29ibGl0ZXJhdG9yL2ZvcmVhY2guanMiLCAibm9kZV9tb2R1bGVzL21uZW1vbmlzdC91dGlscy90eXBlZC1hcnJheXMuanMiLCAibm9kZV9tb2R1bGVzL21uZW1vbmlzdC91dGlscy9pdGVyYWJsZXMuanMiLCAibm9kZV9tb2R1bGVzL29ibGl0ZXJhdG9yL2l0ZXJhdG9yLmpzIiwgIm5vZGVfbW9kdWxlcy9tbmVtb25pc3QvZml4ZWQtZGVxdWUuanMiLCAibm9kZV9tb2R1bGVzL2dyYXBob2xvZ3ktdHJhdmVyc2FsL3V0aWxzLmpzIiwgIm5vZGVfbW9kdWxlcy9ncmFwaG9sb2d5LXRyYXZlcnNhbC9iZnMuanMiLCAibm9kZV9tb2R1bGVzL2dyYXBob2xvZ3ktdHJhdmVyc2FsL2Rmcy5qcyIsICJub2RlX21vZHVsZXMvZ3JhcGhvbG9neS10cmF2ZXJzYWwvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9lcnJvcnMuanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2Zvcm1hdHMuanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL3V0aWwuanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2VuZ2xpc2guanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2Zvcm1hdHRlci5qcyIsICJub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvaW52YWxpZC5qcyIsICJub2RlX21vZHVsZXMvbHV4b24vc3JjL3pvbmUuanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy96b25lcy9zeXN0ZW1ab25lLmpzIiwgIm5vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvSUFOQVpvbmUuanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy96b25lcy9maXhlZE9mZnNldFpvbmUuanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy96b25lcy9pbnZhbGlkWm9uZS5qcyIsICJub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvem9uZVV0aWwuanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9zZXR0aW5ncy5qcyIsICJub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvbG9jYWxlLmpzIiwgIm5vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9yZWdleFBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvbHV4b24vc3JjL2R1cmF0aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW50ZXJ2YWwuanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbmZvLmpzIiwgIm5vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9kaWZmLmpzIiwgIm5vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9kaWdpdHMuanMiLCAibm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL3Rva2VuUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9jb252ZXJzaW9ucy5qcyIsICJub2RlX21vZHVsZXMvbHV4b24vc3JjL2RhdGV0aW1lLmpzIiwgIm5vZGVfbW9kdWxlcy9sdXhvbi9zcmMvbHV4b24uanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC9sb2Rhc2guanMiLCAic3JjL21haW4udHMiLCAibm9kZV9tb2R1bGVzL2p1Z2dsLWFwaS9kaXN0L2luZGV4Lm1qcyIsICJub2RlX21vZHVsZXMvb2JzaWRpYW4tY29tbXVuaXR5LWxpYi9kaXN0L3V0aWxzLmpzIiwgInNyYy9jb25zdGFudHMudHMiLCAic3JjL1ZpZXdzL01hdHJpeFZpZXcudHMiLCAic3JjL0RlYnVnZ2VyLnRzIiwgIm5vZGVfbW9kdWxlcy9zdmVsdGUvaW50ZXJuYWwvaW5kZXgubWpzIiwgInNyYy9yZWZyZXNoSW5kZXgudHMiLCAic3JjL0FsdGVybmF0aXZlSGllcmFyY2hpZXMvQ1NWQ3J1bWJzLnRzIiwgInNyYy9VdGlscy9PYnNpZGlhblV0aWxzLnRzIiwgInNyYy9VdGlscy9nZW5lcmFsVXRpbHMudHMiLCAic3JjL1V0aWxzL2dyYXBoVXRpbHMudHMiLCAic3JjL1V0aWxzL0hpZXJVdGlscy50cyIsICJzcmMvQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9EYXRhdmlld05vdGVzLnRzIiwgInNyYy9BbHRlcm5hdGl2ZUhpZXJhcmNoaWVzL0RhdGVOb3Rlcy50cyIsICJzcmMvQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9EZW5kcm9uTm90ZXMudHMiLCAic3JjL0FsdGVybmF0aXZlSGllcmFyY2hpZXMvRm9sZGVyTm90ZXMudHMiLCAic3JjL0FsdGVybmF0aXZlSGllcmFyY2hpZXMvSGllcmFyY2h5Tm90ZXMvSGllcmFyY2h5Tm90ZXMudHMiLCAic3JjL0FsdGVybmF0aXZlSGllcmFyY2hpZXMvSnVnZ2xMaW5rcy50cyIsICJzcmMvQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9MaW5rTm90ZXMudHMiLCAic3JjL0FsdGVybmF0aXZlSGllcmFyY2hpZXMvUmVnZXhOb3Rlcy50cyIsICJzcmMvQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9UYWdOb3Rlcy50cyIsICJzcmMvQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9UcmF2ZXJzZU5vdGVzLnRzIiwgInNyYy9SZWxhdGlvbnMudHMiLCAic3JjL1ZpZXdzL1RyYWlsVmlldy50cyIsICJzcmMvc3JjL0NvbXBvbmVudHMvTmV4dFByZXYuc3ZlbHRlIiwgInNyYy9Db21wb25lbnRzL05leHRQcmV2LnN2ZWx0ZSIsICJzcmMvc3JjL0NvbXBvbmVudHMvVHJhaWxHcmlkLnN2ZWx0ZSIsICJzcmMvQ29tcG9uZW50cy9UcmFpbEdyaWQuc3ZlbHRlIiwgInNyYy9zcmMvQ29tcG9uZW50cy9UcmFpbFBhdGguc3ZlbHRlIiwgInNyYy9Db21wb25lbnRzL1RyYWlsUGF0aC5zdmVsdGUiLCAic3JjL1Zpc3VhbGlzYXRpb25zL0p1Z2dsLnRzIiwgInNyYy9Db21tYW5kcy9DcmVhdGVJbmRleC50cyIsICJzcmMvQ29tcG9uZW50cy9KdWdnbEJ1dHRvbi5zdmVsdGUiLCAic3JjL3NyYy9Db21wb25lbnRzL0p1Z2dsQnV0dG9uLnN2ZWx0ZSIsICJzcmMvc3JjL0NvbXBvbmVudHMvSnVnZ2xEZXB0aC5zdmVsdGUiLCAic3JjL0NvbXBvbmVudHMvSnVnZ2xEZXB0aC5zdmVsdGUiLCAic3JjL3NyYy9Db21wb25lbnRzL01hdHJpeEJ1dHRvbnMuc3ZlbHRlIiwgInNyYy9Db21wb25lbnRzL01hdHJpeEJ1dHRvbnMuc3ZlbHRlIiwgInNyYy9zcmMvQ29tcG9uZW50cy9NYXRyaXguc3ZlbHRlIiwgInNyYy9Db21wb25lbnRzL01hdHJpeC5zdmVsdGUiLCAic3JjL0FQSS50cyIsICJzcmMvQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9IaWVyYXJjaHlOb3Rlcy9IaWVyTm90ZU1vZGFsLnRzIiwgInNyYy9BbHRlcm5hdGl2ZUhpZXJhcmNoaWVzL0hpZXJhcmNoeU5vdGVzL0hpZXJhcmNoeU5vdGVNYW5pcHVsYXRvci50cyIsICJzcmMvQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9IaWVyYXJjaHlOb3Rlcy9Nb2RpZnlIaWVySXRlbU1vZGFsLnRzIiwgInNyYy9zcmMvQ29tcG9uZW50cy9Nb2RpZnlITkl0ZW1Db21wLnN2ZWx0ZSIsICJzcmMvQ29tcG9uZW50cy9Nb2RpZnlITkl0ZW1Db21wLnN2ZWx0ZSIsICJzcmMvQ29kZWJsb2Nrcy50cyIsICJzcmMvc3JjL0NvbXBvbmVudHMvUmVuZGVyTWFya2Rvd24uc3ZlbHRlIiwgInNyYy9Db21wb25lbnRzL1JlbmRlck1hcmtkb3duLnN2ZWx0ZSIsICJzcmMvc3JjL0NvbXBvbmVudHMvQ0JUcmVlLnN2ZWx0ZSIsICJzcmMvQ29tcG9uZW50cy9DQlRyZWUuc3ZlbHRlIiwgInNyYy9Db21tYW5kcy9qdW1wVG9GaXJzdERpci50cyIsICJzcmMvQ29tbWFuZHMvdGhyZWFkaW5nLnRzIiwgInNyYy9Db21tYW5kcy9Xcml0ZUJDcy50cyIsICJzcmMvRmllbGRTdWdnZXN0b3IudHMiLCAic3JjL1JlbGF0aW9uU3VnZ2VzdG9yLnRzIiwgInNyYy9TZXR0aW5ncy9CcmVhZGNydW1ic1NldHRpbmdUYWIudHMiLCAic3JjL0NvbXBvbmVudHMvS29GaS5zdmVsdGUiLCAic3JjL1NldHRpbmdzL0NyZWF0ZUluZGV4U2V0dGluZ3MudHMiLCAic3JjL1NldHRpbmdzL0NTVlNldHRpbmdzLnRzIiwgInNyYy9TZXR0aW5ncy9EYXRhdmlld05vdGVTZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3MvRGF0ZU5vdGVTZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3MvRGVidWdnaW5nU2V0dGluZ3MudHMiLCAic3JjL1NldHRpbmdzL0RlbmRyb25TZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3MvR2VuZXJhbFNldHRpbmdzLnRzIiwgInNyYy9TZXR0aW5ncy9IaWVyYXJjaHlOb3RlU2V0dGluZ3MudHMiLCAic3JjL3NyYy9Db21wb25lbnRzL1VzZXJIaWVyYXJjaGllcy5zdmVsdGUiLCAic3JjL0NvbXBvbmVudHMvVXNlckhpZXJhcmNoaWVzLnN2ZWx0ZSIsICJub2RlX21vZHVsZXMvc3ZlbHRlLWljb25zL2NvbXBvbmVudHMvSWNvbkJhc2Uuc3ZlbHRlIiwgIm5vZGVfbW9kdWxlcy9zdmVsdGUtaWNvbnMvZmEvRmFMaXN0VWwuc3ZlbHRlIiwgIm5vZGVfbW9kdWxlcy9zdmVsdGUtaWNvbnMvZmEvRmFQbHVzLnN2ZWx0ZSIsICJub2RlX21vZHVsZXMvc3ZlbHRlLWljb25zL2ZhL0ZhUmVnVHJhc2hBbHQuc3ZlbHRlIiwgInNyYy9TZXR0aW5ncy9IaWVyYXJjaHlTZXR0aW5ncy50cyIsICJzcmMvc3JjL0NvbXBvbmVudHMvQ2hlY2tib3hlcy5zdmVsdGUiLCAic3JjL0NvbXBvbmVudHMvQ2hlY2tib3hlcy5zdmVsdGUiLCAic3JjL1NldHRpbmdzL0p1bXBUb05leHRTZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3MvTWF0cml4Vmlld1NldHRpbmdzLnRzIiwgInNyYy9TZXR0aW5ncy9Ob1N5c3RlbVNldHRpbmdzLnRzIiwgInNyYy9TZXR0aW5ncy9SZWdleE5vdGVTZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3MvUmVsYXRpb25TZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3MvVGFnTm90ZVNldHRpbmdzLnRzIiwgInNyYy9TZXR0aW5ncy9UaHJlYWRpbmdTZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3MvVHJhaWxTZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3MvVmlzTW9kYWxTZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3MvV3JpdGVCQ3NTZXR0aW5ncy50cyIsICJzcmMvVmlld3MvRHVja3NWaWV3LnRzIiwgIm5vZGVfbW9kdWxlcy9zdmVsdGUtaWNvbnMvZmEvRmFJbmZvLnN2ZWx0ZSIsICJzcmMvc3JjL0NvbXBvbmVudHMvRHVja3Muc3ZlbHRlIiwgInNyYy9Db21wb25lbnRzL0R1Y2tzLnN2ZWx0ZSIsICJzcmMvVmlld3MvVHJlZVZpZXcudHMiLCAic3JjL3NyYy9Db21wb25lbnRzL1NpZGVUcmVlLnN2ZWx0ZSIsICJzcmMvQ29tcG9uZW50cy9TaWRlVHJlZS5zdmVsdGUiLCAibm9kZV9tb2R1bGVzL3N2ZWx0ZS1pY29ucy9mYS9GYUZpcmUuc3ZlbHRlIiwgIm5vZGVfbW9kdWxlcy9zdmVsdGUtaWNvbnMvZmEvRmFSZWdTbm93Zmxha2Uuc3ZlbHRlIiwgIm5vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvYXNjZW5kaW5nLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvYmlzZWN0b3IuanMiLCAibm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9udW1iZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9iaXNlY3QuanMiLCAibm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy90aWNrcy5qcyIsICJub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL21heC5qcyIsICJub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL3JhbmdlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1kaXNwYXRjaC9zcmMvZGlzcGF0Y2guanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvbmFtZXNwYWNlcy5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9uYW1lc3BhY2UuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvY3JlYXRvci5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rvci5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vc2VsZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL2FycmF5LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdG9yQWxsLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9zZWxlY3RBbGwuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvbWF0Y2hlci5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vc2VsZWN0Q2hpbGQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NlbGVjdENoaWxkcmVuLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9maWx0ZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NwYXJzZS5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZW50ZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvY29uc3RhbnQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2RhdGEuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2V4aXQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2pvaW4uanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL21lcmdlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9vcmRlci5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vc29ydC5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vY2FsbC5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vbm9kZXMuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL25vZGUuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NpemUuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2VtcHR5LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9lYWNoLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9hdHRyLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3dpbmRvdy5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vc3R5bGUuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3Byb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9jbGFzc2VkLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi90ZXh0LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9odG1sLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9yYWlzZS5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vbG93ZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2FwcGVuZC5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vaW5zZXJ0LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9yZW1vdmUuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2Nsb25lLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9kYXR1bS5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vb24uanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2Rpc3BhdGNoLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9pdGVyYXRvci5qcyIsICJub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NvdXJjZUV2ZW50LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3BvaW50ZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLWRyYWcvc3JjL25vZXZlbnQuanMiLCAibm9kZV9tb2R1bGVzL2QzLWRyYWcvc3JjL25vZHJhZy5qcyIsICJub2RlX21vZHVsZXMvZDMtZHJhZy9zcmMvY29uc3RhbnQuanMiLCAibm9kZV9tb2R1bGVzL2QzLWRyYWcvc3JjL2V2ZW50LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1kcmFnL3NyYy9kcmFnLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1jb2xvci9zcmMvZGVmaW5lLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1jb2xvci9zcmMvY29sb3IuanMiLCAibm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9tYXRoLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1jb2xvci9zcmMvY3ViZWhlbGl4LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvYmFzaXMuanMiLCAibm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9iYXNpc0Nsb3NlZC5qcyIsICJub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2NvbnN0YW50LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvY29sb3IuanMiLCAibm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9yZ2IuanMiLCAibm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9udW1iZXJBcnJheS5qcyIsICJub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2FycmF5LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvZGF0ZS5qcyIsICJub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL251bWJlci5qcyIsICJub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL29iamVjdC5qcyIsICJub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3N0cmluZy5qcyIsICJub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3ZhbHVlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvcm91bmQuanMiLCAibm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vZGVjb21wb3NlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvdHJhbnNmb3JtL3BhcnNlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvdHJhbnNmb3JtL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvem9vbS5qcyIsICJub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2N1YmVoZWxpeC5qcyIsICJub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3F1YW50aXplLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy10aW1lci9zcmMvdGltZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLXRpbWVyL3NyYy90aW1lb3V0LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3NjaGVkdWxlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy9pbnRlcnJ1cHQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3NlbGVjdGlvbi9pbnRlcnJ1cHQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vdHdlZW4uanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vaW50ZXJwb2xhdGUuanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vYXR0ci5qcyIsICJub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9hdHRyVHdlZW4uanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vZGVsYXkuanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vZHVyYXRpb24uanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vZWFzZS5qcyIsICJub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9lYXNlVmFyeWluZy5qcyIsICJub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9maWx0ZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vbWVyZ2UuanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vb24uanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vcmVtb3ZlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3NlbGVjdC5qcyIsICJub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9zZWxlY3RBbGwuanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vc2VsZWN0aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3N0eWxlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3N0eWxlVHdlZW4uanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vdGV4dC5qcyIsICJub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi90ZXh0VHdlZW4uanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vdHJhbnNpdGlvbi5qcyIsICJub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9lbmQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL2N1YmljLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy9zZWxlY3Rpb24vdHJhbnNpdGlvbi5qcyIsICJub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvc2VsZWN0aW9uL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1icnVzaC9zcmMvYnJ1c2guanMiLCAibm9kZV9tb2R1bGVzL2QzLXBhdGgvc3JjL3BhdGguanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9jZW50ZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9hZGQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9jb3Zlci5qcyIsICJub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL2RhdGEuanMiLCAibm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9leHRlbnQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9xdWFkLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvZmluZC5qcyIsICJub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3JlbW92ZS5qcyIsICJub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3Jvb3QuanMiLCAibm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9zaXplLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvdmlzaXQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy92aXNpdEFmdGVyLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMveC5qcyIsICJub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3kuanMiLCAibm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9xdWFkdHJlZS5qcyIsICJub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2NvbnN0YW50LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1mb3JjZS9zcmMvamlnZ2xlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1mb3JjZS9zcmMvY29sbGlkZS5qcyIsICJub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2xpbmsuanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9sY2cuanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9zaW11bGF0aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1mb3JjZS9zcmMvbWFueUJvZHkuanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0RGVjaW1hbC5qcyIsICJub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9leHBvbmVudC5qcyIsICJub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRHcm91cC5qcyIsICJub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXROdW1lcmFscy5qcyIsICJub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRTcGVjaWZpZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0VHJpbS5qcyIsICJub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRQcmVmaXhBdXRvLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdFJvdW5kZWQuanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0VHlwZXMuanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvaWRlbnRpdHkuanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvbG9jYWxlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2RlZmF1bHRMb2NhbGUuanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uRml4ZWQuanMiLCAibm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uUHJlZml4LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL3ByZWNpc2lvblJvdW5kLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2NsdXN0ZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2NvdW50LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9lYWNoLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9lYWNoQmVmb3JlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9lYWNoQWZ0ZXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2ZpbmQuanMiLCAibm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L3N1bS5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvc29ydC5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvcGF0aC5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvYW5jZXN0b3JzLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9kZXNjZW5kYW50cy5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvbGVhdmVzLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9saW5rcy5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvaXRlcmF0b3IuanMiLCAibm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2FjY2Vzc29ycy5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9jb25zdGFudC5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL3JvdW5kLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL3RyZWVtYXAvZGljZS5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9wYXJ0aXRpb24uanMiLCAibm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvc3RyYXRpZnkuanMiLCAibm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZS5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL3NsaWNlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL3RyZWVtYXAvc3F1YXJpZnkuanMiLCAibm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZW1hcC9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL2JpbmFyeS5qcyIsICJub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2luaXQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9vcmRpbmFsLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvYmFuZC5qcyIsICJub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2NvbnN0YW50LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvbnVtYmVyLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvY29udGludW91cy5qcyIsICJub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3RpY2tGb3JtYXQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9saW5lYXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY29sb3JzLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL2NhdGVnb3JpY2FsL2NhdGVnb3J5MTAuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9yYWluYm93LmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY29uc3RhbnQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9tYXRoLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvYXJjLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvYXJyYXkuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9saW5lYXIuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9wb2ludC5qcyIsICJub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2xpbmUuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9yYWRpYWwuanMiLCAibm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9saW5lUmFkaWFsLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvbGluay9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2Jhc2lzLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvYnVuZGxlLmpzIiwgIm5vZGVfbW9kdWxlcy9kMy16b29tL3NyYy9jb25zdGFudC5qcyIsICJub2RlX21vZHVsZXMvZDMtem9vbS9zcmMvZXZlbnQuanMiLCAibm9kZV9tb2R1bGVzL2QzLXpvb20vc3JjL3RyYW5zZm9ybS5qcyIsICJub2RlX21vZHVsZXMvZDMtem9vbS9zcmMvbm9ldmVudC5qcyIsICJub2RlX21vZHVsZXMvZDMtem9vbS9zcmMvem9vbS5qcyIsICJzcmMvVmlzdWFsaXNhdGlvbnMvVmlzTW9kYWwudHMiLCAic3JjL3NyYy9Db21wb25lbnRzL1Zpc0NvbXAuc3ZlbHRlIiwgInNyYy9Db21wb25lbnRzL1Zpc0NvbXAuc3ZlbHRlIiwgInNyYy9WaXN1YWxpc2F0aW9ucy9BcmNEaWFncmFtLnRzIiwgInNyYy9WaXN1YWxpc2F0aW9ucy9DaXJjbGVQYWNraW5nLnRzIiwgInNyYy9WaXN1YWxpc2F0aW9ucy9FZGdlQnVuZGxpbmcudHMiLCAic3JjL1Zpc3VhbGlzYXRpb25zL0ZvcmNlRGlyZWN0ZWRHLnRzIiwgInNyYy9WaXN1YWxpc2F0aW9ucy9JY2ljbGUudHMiLCAic3JjL1Zpc3VhbGlzYXRpb25zL1JhZGlhbFRyZWUudHMiLCAic3JjL1Zpc3VhbGlzYXRpb25zL1N1bmJ1cnN0LnRzIiwgInNyYy9WaXN1YWxpc2F0aW9ucy9UaWR5VHJlZS50cyIsICJzcmMvVmlzdWFsaXNhdGlvbnMvVHJlZU1hcC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiZmVhdGhlclwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJmZWF0aGVyXCJdID0gZmFjdG9yeSgpO1xufSkodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuICIsICIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbiBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbiBcdFx0XHR9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDApO1xuIiwgIi8qIVxuICBDb3B5cmlnaHQgKGMpIDIwMTYgSmVkIFdhdHNvbi5cbiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcbiAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbi8qIGdsb2JhbCBkZWZpbmUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBjbGFzc05hbWVzID0gKGZ1bmN0aW9uICgpIHtcblx0XHQvLyBkb24ndCBpbmhlcml0IGZyb20gT2JqZWN0IHNvIHdlIGNhbiBza2lwIGhhc093blByb3BlcnR5IGNoZWNrIGxhdGVyXG5cdFx0Ly8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNTUxODMyOC9jcmVhdGluZy1qcy1vYmplY3Qtd2l0aC1vYmplY3QtY3JlYXRlbnVsbCNhbnN3ZXItMjEwNzkyMzJcblx0XHRmdW5jdGlvbiBTdG9yYWdlT2JqZWN0KCkge31cblx0XHRTdG9yYWdlT2JqZWN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cblx0XHRmdW5jdGlvbiBfcGFyc2VBcnJheSAocmVzdWx0U2V0LCBhcnJheSkge1xuXHRcdFx0dmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuXHRcdFx0XHRfcGFyc2UocmVzdWx0U2V0LCBhcnJheVtpXSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dmFyIGhhc093biA9IHt9Lmhhc093blByb3BlcnR5O1xuXG5cdFx0ZnVuY3Rpb24gX3BhcnNlTnVtYmVyIChyZXN1bHRTZXQsIG51bSkge1xuXHRcdFx0cmVzdWx0U2V0W251bV0gPSB0cnVlO1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIF9wYXJzZU9iamVjdCAocmVzdWx0U2V0LCBvYmplY3QpIHtcblx0XHRcdGZvciAodmFyIGsgaW4gb2JqZWN0KSB7XG5cdFx0XHRcdGlmIChoYXNPd24uY2FsbChvYmplY3QsIGspKSB7XG5cdFx0XHRcdFx0Ly8gc2V0IHZhbHVlIHRvIGZhbHNlIGluc3RlYWQgb2YgZGVsZXRpbmcgaXQgdG8gYXZvaWQgY2hhbmdpbmcgb2JqZWN0IHN0cnVjdHVyZVxuXHRcdFx0XHRcdC8vIGh0dHBzOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMTIvMTEvd3JpdGluZy1mYXN0LW1lbW9yeS1lZmZpY2llbnQtamF2YXNjcmlwdC8jZGUtcmVmZXJlbmNpbmctbWlzY29uY2VwdGlvbnNcblx0XHRcdFx0XHRyZXN1bHRTZXRba10gPSAhIW9iamVjdFtrXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHZhciBTUEFDRSA9IC9cXHMrLztcblx0XHRmdW5jdGlvbiBfcGFyc2VTdHJpbmcgKHJlc3VsdFNldCwgc3RyKSB7XG5cdFx0XHR2YXIgYXJyYXkgPSBzdHIuc3BsaXQoU1BBQ0UpO1xuXHRcdFx0dmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuXHRcdFx0XHRyZXN1bHRTZXRbYXJyYXlbaV1dID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmdW5jdGlvbiBfcGFyc2UgKHJlc3VsdFNldCwgYXJnKSB7XG5cdFx0XHRpZiAoIWFyZykgcmV0dXJuO1xuXHRcdFx0dmFyIGFyZ1R5cGUgPSB0eXBlb2YgYXJnO1xuXG5cdFx0XHQvLyAnZm9vIGJhcidcblx0XHRcdGlmIChhcmdUeXBlID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRfcGFyc2VTdHJpbmcocmVzdWx0U2V0LCBhcmcpO1xuXG5cdFx0XHQvLyBbJ2ZvbycsICdiYXInLCAuLi5dXG5cdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuXHRcdFx0XHRfcGFyc2VBcnJheShyZXN1bHRTZXQsIGFyZyk7XG5cblx0XHRcdC8vIHsgJ2Zvbyc6IHRydWUsIC4uLiB9XG5cdFx0XHR9IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdF9wYXJzZU9iamVjdChyZXN1bHRTZXQsIGFyZyk7XG5cblx0XHRcdC8vICcxMzAnXG5cdFx0XHR9IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdudW1iZXInKSB7XG5cdFx0XHRcdF9wYXJzZU51bWJlcihyZXN1bHRTZXQsIGFyZyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gX2NsYXNzTmFtZXMgKCkge1xuXHRcdFx0Ly8gZG9uJ3QgbGVhayBhcmd1bWVudHNcblx0XHRcdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wZXRrYWFudG9ub3YvYmx1ZWJpcmQvd2lraS9PcHRpbWl6YXRpb24ta2lsbGVycyMzMi1sZWFraW5nLWFyZ3VtZW50c1xuXHRcdFx0dmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG5cdFx0XHR2YXIgYXJncyA9IEFycmF5KGxlbik7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0XHRcdGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG5cdFx0XHR9XG5cblx0XHRcdHZhciBjbGFzc1NldCA9IG5ldyBTdG9yYWdlT2JqZWN0KCk7XG5cdFx0XHRfcGFyc2VBcnJheShjbGFzc1NldCwgYXJncyk7XG5cblx0XHRcdHZhciBsaXN0ID0gW107XG5cblx0XHRcdGZvciAodmFyIGsgaW4gY2xhc3NTZXQpIHtcblx0XHRcdFx0aWYgKGNsYXNzU2V0W2tdKSB7XG5cdFx0XHRcdFx0bGlzdC5wdXNoKGspXG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGxpc3Quam9pbignICcpO1xuXHRcdH1cblxuXHRcdHJldHVybiBfY2xhc3NOYW1lcztcblx0fSkoKTtcblxuXHRpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGNsYXNzTmFtZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuXHR9XG59KCkpO1xuIiwgInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLmFycmF5LmZyb20nKTtcbnZhciBwYXRoID0gcmVxdWlyZSgnLi4vLi4vaW50ZXJuYWxzL3BhdGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXRoLkFycmF5LmZyb207XG4iLCAibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFN0cmluZyhpdCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcbiIsICJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFN0cmluZyhpdCkgKyAnIGlzIG5vdCBhbiBvYmplY3QnKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2JpbmQtY29udGV4dCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGNhbGxXaXRoU2FmZUl0ZXJhdGlvbkNsb3NpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2FsbC13aXRoLXNhZmUtaXRlcmF0aW9uLWNsb3NpbmcnKTtcbnZhciBpc0FycmF5SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5Jyk7XG52YXIgZ2V0SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xuXG4vLyBgQXJyYXkuZnJvbWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5mcm9tXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZyb20oYXJyYXlMaWtlIC8qICwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQgKi8pIHtcbiAgdmFyIE8gPSB0b09iamVjdChhcnJheUxpa2UpO1xuICB2YXIgQyA9IHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgPyB0aGlzIDogQXJyYXk7XG4gIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgbWFwZm4gPSBhcmd1bWVudHNMZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICB2YXIgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWQ7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBpdGVyYXRvck1ldGhvZCA9IGdldEl0ZXJhdG9yTWV0aG9kKE8pO1xuICB2YXIgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICBpZiAobWFwcGluZykgbWFwZm4gPSBiaW5kKG1hcGZuLCBhcmd1bWVudHNMZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkLCAyKTtcbiAgLy8gaWYgdGhlIHRhcmdldCBpcyBub3QgaXRlcmFibGUgb3IgaXQncyBhbiBhcnJheSB3aXRoIHRoZSBkZWZhdWx0IGl0ZXJhdG9yIC0gdXNlIGEgc2ltcGxlIGNhc2VcbiAgaWYgKGl0ZXJhdG9yTWV0aG9kICE9IHVuZGVmaW5lZCAmJiAhKEMgPT0gQXJyYXkgJiYgaXNBcnJheUl0ZXJhdG9yTWV0aG9kKGl0ZXJhdG9yTWV0aG9kKSkpIHtcbiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yTWV0aG9kLmNhbGwoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEMoKTtcbiAgICBmb3IgKDshKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7IGluZGV4KyspIHtcbiAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmdcbiAgICAgICAgPyBjYWxsV2l0aFNhZmVJdGVyYXRpb25DbG9zaW5nKGl0ZXJhdG9yLCBtYXBmbiwgW3N0ZXAudmFsdWUsIGluZGV4XSwgdHJ1ZSlcbiAgICAgICAgOiBzdGVwLnZhbHVlXG4gICAgICApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgcmVzdWx0ID0gbmV3IEMobGVuZ3RoKTtcbiAgICBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XSk7XG4gICAgfVxuICB9XG4gIHJlc3VsdC5sZW5ndGggPSBpbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCAidmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgaW5kZXhPZiwgaW5jbHVkZXMgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxuLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluZGV4b2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuIiwgInZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1mdW5jdGlvbicpO1xuXG4vLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQpO1xuICAgIH07XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwgInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxuLy8gY2FsbCBzb21ldGhpbmcgb24gaXRlcmF0b3Igc3RlcCB3aXRoIHNhZmUgY2xvc2luZyBvbiBlcnJvclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgRU5UUklFUykge1xuICB0cnkge1xuICAgIHJldHVybiBFTlRSSUVTID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdmFyIHJldHVybk1ldGhvZCA9IGl0ZXJhdG9yWydyZXR1cm4nXTtcbiAgICBpZiAocmV0dXJuTWV0aG9kICE9PSB1bmRlZmluZWQpIGFuT2JqZWN0KHJldHVybk1ldGhvZC5jYWxsKGl0ZXJhdG9yKSk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG4iLCAidmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciBjYWxsZWQgPSAwO1xuICB2YXIgaXRlcmF0b3JXaXRoUmV0dXJuID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7IGRvbmU6ICEhY2FsbGVkKysgfTtcbiAgICB9LFxuICAgICdyZXR1cm4nOiBmdW5jdGlvbiAoKSB7XG4gICAgICBTQUZFX0NMT1NJTkcgPSB0cnVlO1xuICAgIH1cbiAgfTtcbiAgaXRlcmF0b3JXaXRoUmV0dXJuW0lURVJBVE9SXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgQXJyYXkuZnJvbShpdGVyYXRvcldpdGhSZXR1cm4sIGZ1bmN0aW9uICgpIHsgdGhyb3cgMjsgfSk7XG59IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIFNLSVBfQ0xPU0lORykge1xuICBpZiAoIVNLSVBfQ0xPU0lORyAmJiAhU0FGRV9DTE9TSU5HKSByZXR1cm4gZmFsc2U7XG4gIHZhciBJVEVSQVRJT05fU1VQUE9SVCA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBvYmplY3QgPSB7fTtcbiAgICBvYmplY3RbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB7IGRvbmU6IElURVJBVElPTl9TVVBQT1JUID0gdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gICAgZXhlYyhvYmplY3QpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBJVEVSQVRJT05fU1VQUE9SVDtcbn07XG4iLCAidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuIiwgInZhciBjbGFzc29mUmF3ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xuLy8gRVMzIHdyb25nIGhlcmVcbnZhciBDT1JSRUNUX0FSR1VNRU5UUyA9IGNsYXNzb2ZSYXcoZnVuY3Rpb24gKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbi8vIGdldHRpbmcgdGFnIGZyb20gRVM2KyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2Bcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCB0YWcsIHJlc3VsdDtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnXG4gICAgLy8gQEB0b1N0cmluZ1RhZyBjYXNlXG4gICAgOiB0eXBlb2YgKHRhZyA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVE9fU1RSSU5HX1RBRykpID09ICdzdHJpbmcnID8gdGFnXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBDT1JSRUNUX0FSR1VNRU5UUyA/IGNsYXNzb2ZSYXcoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAocmVzdWx0ID0gY2xhc3NvZlJhdyhPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IHJlc3VsdDtcbn07XG4iLCAidmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL293bi1rZXlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgc291cmNlKSB7XG4gIHZhciBrZXlzID0gb3duS2V5cyhzb3VyY2UpO1xuICB2YXIgZGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mO1xuICB2YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmY7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGlmICghaGFzKHRhcmdldCwga2V5KSkgZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpO1xuICB9XG59O1xuIiwgInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEYoKSB7IC8qIGVtcHR5ICovIH1cbiAgRi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBudWxsO1xuICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBGKCkpICE9PSBGLnByb3RvdHlwZTtcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMtY29yZScpLkl0ZXJhdG9yUHJvdG90eXBlO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSXRlcmF0b3JDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCkge1xuICB2YXIgVE9fU1RSSU5HX1RBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgSXRlcmF0b3JDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhJdGVyYXRvckNvbnN0cnVjdG9yLCBUT19TVFJJTkdfVEFHLCBmYWxzZSwgdHJ1ZSk7XG4gIEl0ZXJhdG9yc1tUT19TVFJJTkdfVEFHXSA9IHJldHVyblRoaXM7XG4gIHJldHVybiBJdGVyYXRvckNvbnN0cnVjdG9yO1xufTtcbiIsICJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICB2YXIgcHJvcGVydHlLZXkgPSB0b1ByaW1pdGl2ZShrZXkpO1xuICBpZiAocHJvcGVydHlLZXkgaW4gb2JqZWN0KSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwgcHJvcGVydHlLZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigwLCB2YWx1ZSkpO1xuICBlbHNlIG9iamVjdFtwcm9wZXJ0eUtleV0gPSB2YWx1ZTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaXRlcmF0b3ItY29uc3RydWN0b3InKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZicpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcbnZhciBJdGVyYXRvcnNDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlJyk7XG5cbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IEl0ZXJhdG9yc0NvcmUuSXRlcmF0b3JQcm90b3R5cGU7XG52YXIgQlVHR1lfU0FGQVJJX0lURVJBVE9SUyA9IEl0ZXJhdG9yc0NvcmUuQlVHR1lfU0FGQVJJX0lURVJBVE9SUztcbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBLRVlTID0gJ2tleXMnO1xudmFyIFZBTFVFUyA9ICd2YWx1ZXMnO1xudmFyIEVOVFJJRVMgPSAnZW50cmllcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSXRlcmFibGUsIE5BTUUsIEl0ZXJhdG9yQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gIGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IoSXRlcmF0b3JDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCk7XG5cbiAgdmFyIGdldEl0ZXJhdGlvbk1ldGhvZCA9IGZ1bmN0aW9uIChLSU5EKSB7XG4gICAgaWYgKEtJTkQgPT09IERFRkFVTFQgJiYgZGVmYXVsdEl0ZXJhdG9yKSByZXR1cm4gZGVmYXVsdEl0ZXJhdG9yO1xuICAgIGlmICghQlVHR1lfU0FGQVJJX0lURVJBVE9SUyAmJiBLSU5EIGluIEl0ZXJhYmxlUHJvdG90eXBlKSByZXR1cm4gSXRlcmFibGVQcm90b3R5cGVbS0lORF07XG4gICAgc3dpdGNoIChLSU5EKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcywgS0lORCk7IH07XG4gICAgICBjYXNlIFZBTFVFUzogcmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuIG5ldyBJdGVyYXRvckNvbnN0cnVjdG9yKHRoaXMsIEtJTkQpOyB9O1xuICAgICAgY2FzZSBFTlRSSUVTOiByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBJdGVyYXRvckNvbnN0cnVjdG9yKHRoaXMsIEtJTkQpOyB9O1xuICAgIH0gcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyBJdGVyYXRvckNvbnN0cnVjdG9yKHRoaXMpOyB9O1xuICB9O1xuXG4gIHZhciBUT19TVFJJTkdfVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICB2YXIgSU5DT1JSRUNUX1ZBTFVFU19OQU1FID0gZmFsc2U7XG4gIHZhciBJdGVyYWJsZVByb3RvdHlwZSA9IEl0ZXJhYmxlLnByb3RvdHlwZTtcbiAgdmFyIG5hdGl2ZUl0ZXJhdG9yID0gSXRlcmFibGVQcm90b3R5cGVbSVRFUkFUT1JdXG4gICAgfHwgSXRlcmFibGVQcm90b3R5cGVbJ0BAaXRlcmF0b3InXVxuICAgIHx8IERFRkFVTFQgJiYgSXRlcmFibGVQcm90b3R5cGVbREVGQVVMVF07XG4gIHZhciBkZWZhdWx0SXRlcmF0b3IgPSAhQlVHR1lfU0FGQVJJX0lURVJBVE9SUyAmJiBuYXRpdmVJdGVyYXRvciB8fCBnZXRJdGVyYXRpb25NZXRob2QoREVGQVVMVCk7XG4gIHZhciBhbnlOYXRpdmVJdGVyYXRvciA9IE5BTUUgPT0gJ0FycmF5JyA/IEl0ZXJhYmxlUHJvdG90eXBlLmVudHJpZXMgfHwgbmF0aXZlSXRlcmF0b3IgOiBuYXRpdmVJdGVyYXRvcjtcbiAgdmFyIEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgbWV0aG9kcywgS0VZO1xuXG4gIC8vIGZpeCBuYXRpdmVcbiAgaWYgKGFueU5hdGl2ZUl0ZXJhdG9yKSB7XG4gICAgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoYW55TmF0aXZlSXRlcmF0b3IuY2FsbChuZXcgSXRlcmFibGUoKSkpO1xuICAgIGlmIChJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJiBDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgaWYgKCFJU19QVVJFICYmIGdldFByb3RvdHlwZU9mKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSkgIT09IEl0ZXJhdG9yUHJvdG90eXBlKSB7XG4gICAgICAgIGlmIChzZXRQcm90b3R5cGVPZikge1xuICAgICAgICAgIHNldFByb3RvdHlwZU9mKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgSXRlcmF0b3JQcm90b3R5cGUpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBDdXJyZW50SXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBoaWRlKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG4gICAgICBzZXRUb1N0cmluZ1RhZyhDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIFRPX1NUUklOR19UQUcsIHRydWUsIHRydWUpO1xuICAgICAgaWYgKElTX1BVUkUpIEl0ZXJhdG9yc1tUT19TVFJJTkdfVEFHXSA9IHJldHVyblRoaXM7XG4gICAgfVxuICB9XG5cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGQVVMVCA9PSBWQUxVRVMgJiYgbmF0aXZlSXRlcmF0b3IgJiYgbmF0aXZlSXRlcmF0b3IubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgSU5DT1JSRUNUX1ZBTFVFU19OQU1FID0gdHJ1ZTtcbiAgICBkZWZhdWx0SXRlcmF0b3IgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuYXRpdmVJdGVyYXRvci5jYWxsKHRoaXMpOyB9O1xuICB9XG5cbiAgLy8gZGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUlTX1BVUkUgfHwgRk9SQ0VEKSAmJiBJdGVyYWJsZVByb3RvdHlwZVtJVEVSQVRPUl0gIT09IGRlZmF1bHRJdGVyYXRvcikge1xuICAgIGhpZGUoSXRlcmFibGVQcm90b3R5cGUsIElURVJBVE9SLCBkZWZhdWx0SXRlcmF0b3IpO1xuICB9XG4gIEl0ZXJhdG9yc1tOQU1FXSA9IGRlZmF1bHRJdGVyYXRvcjtcblxuICAvLyBleHBvcnQgYWRkaXRpb25hbCBtZXRob2RzXG4gIGlmIChERUZBVUxUKSB7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogZ2V0SXRlcmF0aW9uTWV0aG9kKFZBTFVFUyksXG4gICAgICBrZXlzOiBJU19TRVQgPyBkZWZhdWx0SXRlcmF0b3IgOiBnZXRJdGVyYXRpb25NZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiBnZXRJdGVyYXRpb25NZXRob2QoRU5UUklFUylcbiAgICB9O1xuICAgIGlmIChGT1JDRUQpIGZvciAoS0VZIGluIG1ldGhvZHMpIHtcbiAgICAgIGlmIChCVUdHWV9TQUZBUklfSVRFUkFUT1JTIHx8IElOQ09SUkVDVF9WQUxVRVNfTkFNRSB8fCAhKEtFWSBpbiBJdGVyYWJsZVByb3RvdHlwZSkpIHtcbiAgICAgICAgcmVkZWZpbmUoSXRlcmFibGVQcm90b3R5cGUsIEtFWSwgbWV0aG9kc1tLRVldKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgJCh7IHRhcmdldDogTkFNRSwgcHJvdG86IHRydWUsIGZvcmNlZDogQlVHR1lfU0FGQVJJX0lURVJBVE9SUyB8fCBJTkNPUlJFQ1RfVkFMVUVTX05BTUUgfSwgbWV0aG9kcyk7XG4gIH1cblxuICByZXR1cm4gbWV0aG9kcztcbn07XG4iLCAidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiIsICJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgZG9jdW1lbnQgPSBnbG9iYWwuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBleGlzdCA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGV4aXN0ID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCAiLy8gSUU4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2NvbnN0cnVjdG9yJyxcbiAgJ2hhc093blByb3BlcnR5JyxcbiAgJ2lzUHJvdG90eXBlT2YnLFxuICAncHJvcGVydHlJc0VudW1lcmFibGUnLFxuICAndG9Mb2NhbGVTdHJpbmcnLFxuICAndG9TdHJpbmcnLFxuICAndmFsdWVPZidcbl07XG4iLCAidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRlJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciBzZXRHbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWdsb2JhbCcpO1xudmFyIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzJyk7XG52YXIgaXNGb3JjZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtZm9yY2VkJyk7XG5cbi8qXG4gIG9wdGlvbnMudGFyZ2V0ICAgICAgLSBuYW1lIG9mIHRoZSB0YXJnZXQgb2JqZWN0XG4gIG9wdGlvbnMuZ2xvYmFsICAgICAgLSB0YXJnZXQgaXMgdGhlIGdsb2JhbCBvYmplY3RcbiAgb3B0aW9ucy5zdGF0ICAgICAgICAtIGV4cG9ydCBhcyBzdGF0aWMgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5wcm90byAgICAgICAtIGV4cG9ydCBhcyBwcm90b3R5cGUgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5yZWFsICAgICAgICAtIHJlYWwgcHJvdG90eXBlIG1ldGhvZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMuZm9yY2VkICAgICAgLSBleHBvcnQgZXZlbiBpZiB0aGUgbmF0aXZlIGZlYXR1cmUgaXMgYXZhaWxhYmxlXG4gIG9wdGlvbnMuYmluZCAgICAgICAgLSBiaW5kIG1ldGhvZHMgdG8gdGhlIHRhcmdldCwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLndyYXAgICAgICAgIC0gd3JhcCBjb25zdHJ1Y3RvcnMgdG8gcHJldmVudGluZyBnbG9iYWwgcG9sbHV0aW9uLCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMudW5zYWZlICAgICAgLSB1c2UgdGhlIHNpbXBsZSBhc3NpZ25tZW50IG9mIHByb3BlcnR5IGluc3RlYWQgb2YgZGVsZXRlICsgZGVmaW5lUHJvcGVydHlcbiAgb3B0aW9ucy5zaGFtICAgICAgICAtIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgb3B0aW9ucy5lbnVtZXJhYmxlICAtIGV4cG9ydCBhcyBlbnVtZXJhYmxlIHByb3BlcnR5XG4gIG9wdGlvbnMubm9UYXJnZXRHZXQgLSBwcmV2ZW50IGNhbGxpbmcgYSBnZXR0ZXIgb24gdGFyZ2V0XG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3B0aW9ucywgc291cmNlKSB7XG4gIHZhciBUQVJHRVQgPSBvcHRpb25zLnRhcmdldDtcbiAgdmFyIEdMT0JBTCA9IG9wdGlvbnMuZ2xvYmFsO1xuICB2YXIgU1RBVElDID0gb3B0aW9ucy5zdGF0O1xuICB2YXIgRk9SQ0VELCB0YXJnZXQsIGtleSwgdGFyZ2V0UHJvcGVydHksIHNvdXJjZVByb3BlcnR5LCBkZXNjcmlwdG9yO1xuICBpZiAoR0xPQkFMKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsO1xuICB9IGVsc2UgaWYgKFNUQVRJQykge1xuICAgIHRhcmdldCA9IGdsb2JhbFtUQVJHRVRdIHx8IHNldEdsb2JhbChUQVJHRVQsIHt9KTtcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXQgPSAoZ2xvYmFsW1RBUkdFVF0gfHwge30pLnByb3RvdHlwZTtcbiAgfVxuICBpZiAodGFyZ2V0KSBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICBzb3VyY2VQcm9wZXJ0eSA9IHNvdXJjZVtrZXldO1xuICAgIGlmIChvcHRpb25zLm5vVGFyZ2V0R2V0KSB7XG4gICAgICBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KTtcbiAgICAgIHRhcmdldFByb3BlcnR5ID0gZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIH0gZWxzZSB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFtrZXldO1xuICAgIEZPUkNFRCA9IGlzRm9yY2VkKEdMT0JBTCA/IGtleSA6IFRBUkdFVCArIChTVEFUSUMgPyAnLicgOiAnIycpICsga2V5LCBvcHRpb25zLmZvcmNlZCk7XG4gICAgLy8gY29udGFpbmVkIGluIHRhcmdldFxuICAgIGlmICghRk9SQ0VEICYmIHRhcmdldFByb3BlcnR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0eXBlb2Ygc291cmNlUHJvcGVydHkgPT09IHR5cGVvZiB0YXJnZXRQcm9wZXJ0eSkgY29udGludWU7XG4gICAgICBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzKHNvdXJjZVByb3BlcnR5LCB0YXJnZXRQcm9wZXJ0eSk7XG4gICAgfVxuICAgIC8vIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgICBpZiAob3B0aW9ucy5zaGFtIHx8ICh0YXJnZXRQcm9wZXJ0eSAmJiB0YXJnZXRQcm9wZXJ0eS5zaGFtKSkge1xuICAgICAgaGlkZShzb3VyY2VQcm9wZXJ0eSwgJ3NoYW0nLCB0cnVlKTtcbiAgICB9XG4gICAgLy8gZXh0ZW5kIGdsb2JhbFxuICAgIHJlZGVmaW5lKHRhcmdldCwga2V5LCBzb3VyY2VQcm9wZXJ0eSwgb3B0aW9ucyk7XG4gIH1cbn07XG4iLCAibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsICJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNoYXJlZCgnbmF0aXZlLWZ1bmN0aW9uLXRvLXN0cmluZycsIEZ1bmN0aW9uLnRvU3RyaW5nKTtcbiIsICJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG4iLCAidmFyIE8gPSAnb2JqZWN0JztcbnZhciBjaGVjayA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgJiYgaXQuTWF0aCA9PSBNYXRoICYmIGl0O1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbm1vZHVsZS5leHBvcnRzID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIGNoZWNrKHR5cGVvZiBnbG9iYWxUaGlzID09IE8gJiYgZ2xvYmFsVGhpcykgfHxcbiAgY2hlY2sodHlwZW9mIHdpbmRvdyA9PSBPICYmIHdpbmRvdykgfHxcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gTyAmJiBzZWxmKSB8fFxuICBjaGVjayh0eXBlb2YgZ2xvYmFsID09IE8gJiYgZ2xvYmFsKSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbiIsICJ2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07XG4iLCAibW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsICJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwga2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuIiwgInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbnZhciBkb2N1bWVudCA9IGdsb2JhbC5kb2N1bWVudDtcblxubW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4iLCAidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG5cbi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIURFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRlRWxlbWVudCgnZGl2JyksICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfVxuICB9KS5hICE9IDc7XG59KTtcbiIsICIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG52YXIgc3BsaXQgPSAnJy5zcGxpdDtcblxubW9kdWxlLmV4cG9ydHMgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIHRocm93cyBhbiBlcnJvciBpbiByaGlubywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3JoaW5vL2lzc3Vlcy8zNDZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICByZXR1cm4gIU9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApO1xufSkgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNsYXNzb2YoaXQpID09ICdTdHJpbmcnID8gc3BsaXQuY2FsbChpdCwgJycpIDogT2JqZWN0KGl0KTtcbn0gOiBPYmplY3Q7XG4iLCAidmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtd2Vhay1tYXAnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRlJyk7XG52YXIgb2JqZWN0SGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xudmFyIHNldCwgZ2V0LCBoYXM7XG5cbnZhciBlbmZvcmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBoYXMoaXQpID8gZ2V0KGl0KSA6IHNldChpdCwge30pO1xufTtcblxudmFyIGdldHRlckZvciA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgc3RhdGU7XG4gICAgaWYgKCFpc09iamVjdChpdCkgfHwgKHN0YXRlID0gZ2V0KGl0KSkudHlwZSAhPT0gVFlQRSkge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCcpO1xuICAgIH0gcmV0dXJuIHN0YXRlO1xuICB9O1xufTtcblxuaWYgKE5BVElWRV9XRUFLX01BUCkge1xuICB2YXIgc3RvcmUgPSBuZXcgV2Vha01hcCgpO1xuICB2YXIgd21nZXQgPSBzdG9yZS5nZXQ7XG4gIHZhciB3bWhhcyA9IHN0b3JlLmhhcztcbiAgdmFyIHdtc2V0ID0gc3RvcmUuc2V0O1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgd21zZXQuY2FsbChzdG9yZSwgaXQsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiB3bWdldC5jYWxsKHN0b3JlLCBpdCkgfHwge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiB3bWhhcy5jYWxsKHN0b3JlLCBpdCk7XG4gIH07XG59IGVsc2Uge1xuICB2YXIgU1RBVEUgPSBzaGFyZWRLZXkoJ3N0YXRlJyk7XG4gIGhpZGRlbktleXNbU1RBVEVdID0gdHJ1ZTtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGhpZGUoaXQsIFNUQVRFLCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gb2JqZWN0SGFzKGl0LCBTVEFURSkgPyBpdFtTVEFURV0gOiB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIG9iamVjdEhhcyhpdCwgU1RBVEUpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXQsXG4gIGdldDogZ2V0LFxuICBoYXM6IGhhcyxcbiAgZW5mb3JjZTogZW5mb3JjZSxcbiAgZ2V0dGVyRm9yOiBnZXR0ZXJGb3Jcbn07XG4iLCAidmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG4vLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvdHlwZVtJVEVSQVRPUl0gPT09IGl0KTtcbn07XG4iLCAidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciByZXBsYWNlbWVudCA9IC8jfFxcLnByb3RvdHlwZVxcLi87XG5cbnZhciBpc0ZvcmNlZCA9IGZ1bmN0aW9uIChmZWF0dXJlLCBkZXRlY3Rpb24pIHtcbiAgdmFyIHZhbHVlID0gZGF0YVtub3JtYWxpemUoZmVhdHVyZSldO1xuICByZXR1cm4gdmFsdWUgPT0gUE9MWUZJTEwgPyB0cnVlXG4gICAgOiB2YWx1ZSA9PSBOQVRJVkUgPyBmYWxzZVxuICAgIDogdHlwZW9mIGRldGVjdGlvbiA9PSAnZnVuY3Rpb24nID8gZmFpbHMoZGV0ZWN0aW9uKVxuICAgIDogISFkZXRlY3Rpb247XG59O1xuXG52YXIgbm9ybWFsaXplID0gaXNGb3JjZWQubm9ybWFsaXplID0gZnVuY3Rpb24gKHN0cmluZykge1xuICByZXR1cm4gU3RyaW5nKHN0cmluZykucmVwbGFjZShyZXBsYWNlbWVudCwgJy4nKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIGRhdGEgPSBpc0ZvcmNlZC5kYXRhID0ge307XG52YXIgTkFUSVZFID0gaXNGb3JjZWQuTkFUSVZFID0gJ04nO1xudmFyIFBPTFlGSUxMID0gaXNGb3JjZWQuUE9MWUZJTEwgPSAnUCc7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGb3JjZWQ7XG4iLCAibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iLCAibW9kdWxlLmV4cG9ydHMgPSBmYWxzZTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBCVUdHWV9TQUZBUklfSVRFUkFUT1JTID0gZmFsc2U7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxuLy8gYCVJdGVyYXRvclByb3RvdHlwZSVgIG9iamVjdFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtJWl0ZXJhdG9ycHJvdG90eXBlJS1vYmplY3RcbnZhciBJdGVyYXRvclByb3RvdHlwZSwgUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlLCBhcnJheUl0ZXJhdG9yO1xuXG5pZiAoW10ua2V5cykge1xuICBhcnJheUl0ZXJhdG9yID0gW10ua2V5cygpO1xuICAvLyBTYWZhcmkgOCBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGBcbiAgaWYgKCEoJ25leHQnIGluIGFycmF5SXRlcmF0b3IpKSBCVUdHWV9TQUZBUklfSVRFUkFUT1JTID0gdHJ1ZTtcbiAgZWxzZSB7XG4gICAgUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoZ2V0UHJvdG90eXBlT2YoYXJyYXlJdGVyYXRvcikpO1xuICAgIGlmIChQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUpIEl0ZXJhdG9yUHJvdG90eXBlID0gUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlO1xuICB9XG59XG5cbmlmIChJdGVyYXRvclByb3RvdHlwZSA9PSB1bmRlZmluZWQpIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG5cbi8vIDI1LjEuMi4xLjEgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpXG5pZiAoIUlTX1BVUkUgJiYgIWhhcyhJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IpKSBoaWRlKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUiwgcmV0dXJuVGhpcyk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBJdGVyYXRvclByb3RvdHlwZTogSXRlcmF0b3JQcm90b3R5cGUsXG4gIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlM6IEJVR0dZX1NBRkFSSV9JVEVSQVRPUlNcbn07XG4iLCAibW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsICJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gQ2hyb21lIDM4IFN5bWJvbCBoYXMgaW5jb3JyZWN0IHRvU3RyaW5nIGNvbnZlcnNpb25cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIHJldHVybiAhU3RyaW5nKFN5bWJvbCgpKTtcbn0pO1xuIiwgInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgbmF0aXZlRnVuY3Rpb25Ub1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi10by1zdHJpbmcnKTtcblxudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgV2Vha01hcCA9PT0gJ2Z1bmN0aW9uJyAmJiAvbmF0aXZlIGNvZGUvLnRlc3QobmF0aXZlRnVuY3Rpb25Ub1N0cmluZy5jYWxsKFdlYWtNYXApKTtcbiIsICJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZGVmaW5lUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnRpZXMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xudmFyIGh0bWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaHRtbCcpO1xudmFyIGRvY3VtZW50Q3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgSUVfUFJPVE8gPSBzaGFyZWRLZXkoJ0lFX1BST1RPJyk7XG5cbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSBkb2N1bWVudENyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICB2YXIgbGVuZ3RoID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB2YXIgbHQgPSAnPCc7XG4gIHZhciBzY3JpcHQgPSAnc2NyaXB0JztcbiAgdmFyIGd0ID0gJz4nO1xuICB2YXIganMgPSAnamF2YScgKyBzY3JpcHQgKyAnOic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGh0bWwuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lLnNyYyA9IFN0cmluZyhqcyk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUobHQgKyBzY3JpcHQgKyBndCArICdkb2N1bWVudC5GPU9iamVjdCcgKyBsdCArICcvJyArIHNjcmlwdCArIGd0KTtcbiAgaWZyYW1lRG9jdW1lbnQuY2xvc2UoKTtcbiAgY3JlYXRlRGljdCA9IGlmcmFtZURvY3VtZW50LkY7XG4gIHdoaWxlIChsZW5ndGgtLSkgZGVsZXRlIGNyZWF0ZURpY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tsZW5ndGhdXTtcbiAgcmV0dXJuIGNyZWF0ZURpY3QoKTtcbn07XG5cbi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eSgpO1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IGNyZWF0ZURpY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRlZmluZVByb3BlcnRpZXMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG5cbmhpZGRlbktleXNbSUVfUFJPVE9dID0gdHJ1ZTtcbiIsICJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgb2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBrZXlzID0gb2JqZWN0S2V5cyhQcm9wZXJ0aWVzKTtcbiAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICB2YXIgaSA9IDA7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKE8sIGtleSA9IGtleXNbaSsrXSwgUHJvcGVydGllc1trZXldKTtcbiAgcmV0dXJuIE87XG59O1xuIiwgInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG5cbnZhciBuYXRpdmVEZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyBuYXRpdmVEZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gbmF0aXZlRGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCcpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwgInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG5cbnZhciBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/IG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvciA6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKSB7XG4gIE8gPSB0b0luZGV4ZWRPYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKGhhcyhPLCBQKSkgcmV0dXJuIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcighcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG4iLCAiLy8gMTkuMS4yLjcgLyAxNS4yLjMuNCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxudmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxudmFyIGhpZGRlbktleXMgPSBlbnVtQnVnS2V5cy5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuIiwgImV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG4iLCAidmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIENPUlJFQ1RfUFJPVE9UWVBFX0dFVFRFUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3JyZWN0LXByb3RvdHlwZS1nZXR0ZXInKTtcblxudmFyIElFX1BST1RPID0gc2hhcmVkS2V5KCdJRV9QUk9UTycpO1xudmFyIE9iamVjdFByb3RvdHlwZSA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8vIDE5LjEuMi45IC8gMTUuMi4zLjIgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG5tb2R1bGUuZXhwb3J0cyA9IENPUlJFQ1RfUFJPVE9UWVBFX0dFVFRFUiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIChPKSB7XG4gIE8gPSB0b09iamVjdChPKTtcbiAgaWYgKGhhcyhPLCBJRV9QUk9UTykpIHJldHVybiBPW0lFX1BST1RPXTtcbiAgaWYgKHR5cGVvZiBPLmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgTyBpbnN0YW5jZW9mIE8uY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gTy5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIH0gcmV0dXJuIE8gaW5zdGFuY2VvZiBPYmplY3QgPyBPYmplY3RQcm90b3R5cGUgOiBudWxsO1xufTtcbiIsICJ2YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIGFycmF5SW5jbHVkZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBhcnJheUluZGV4T2YgPSBhcnJheUluY2x1ZGVzKGZhbHNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgIWhhcyhoaWRkZW5LZXlzLCBrZXkpICYmIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+YXJyYXlJbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwgInZhciBpbnRlcm5hbE9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG5cbi8vIDE5LjEuMi4xNCAvIDE1LjIuMy4xNCBPYmplY3Qua2V5cyhPKVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuIGludGVybmFsT2JqZWN0S2V5cyhPLCBlbnVtQnVnS2V5cyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIE5hc2hvcm4gfiBKREs4IGJ1Z1xudmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICFuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHsgMTogMiB9LCAxKTtcblxuZXhwb3J0cy5mID0gTkFTSE9STl9CVUcgPyBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIFYpO1xuICByZXR1cm4gISFkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZTtcbn0gOiBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiIsICJ2YXIgdmFsaWRhdGVTZXRQcm90b3R5cGVPZkFyZ3VtZW50cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92YWxpZGF0ZS1zZXQtcHJvdG90eXBlLW9mLWFyZ3VtZW50cycpO1xuXG4vLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyBmdW5jdGlvbiAoKSB7XG4gIHZhciBjb3JyZWN0U2V0dGVyID0gZmFsc2U7XG4gIHZhciB0ZXN0ID0ge307XG4gIHZhciBzZXR0ZXI7XG4gIHRyeSB7XG4gICAgc2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0O1xuICAgIHNldHRlci5jYWxsKHRlc3QsIFtdKTtcbiAgICBjb3JyZWN0U2V0dGVyID0gdGVzdCBpbnN0YW5jZW9mIEFycmF5O1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90bykge1xuICAgIHZhbGlkYXRlU2V0UHJvdG90eXBlT2ZBcmd1bWVudHMoTywgcHJvdG8pO1xuICAgIGlmIChjb3JyZWN0U2V0dGVyKSBzZXR0ZXIuY2FsbChPLCBwcm90byk7XG4gICAgZWxzZSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgIHJldHVybiBPO1xuICB9O1xufSgpIDogdW5kZWZpbmVkKTtcbiIsICJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG52YXIgUmVmbGVjdCA9IGdsb2JhbC5SZWZsZWN0O1xuXG4vLyBhbGwgb2JqZWN0IGtleXMsIGluY2x1ZGVzIG5vbi1lbnVtZXJhYmxlIGFuZCBzeW1ib2xzXG5tb2R1bGUuZXhwb3J0cyA9IFJlZmxlY3QgJiYgUmVmbGVjdC5vd25LZXlzIHx8IGZ1bmN0aW9uIG93bktleXMoaXQpIHtcbiAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlLmYoYW5PYmplY3QoaXQpKTtcbiAgdmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mO1xuICByZXR1cm4gZ2V0T3duUHJvcGVydHlTeW1ib2xzID8ga2V5cy5jb25jYXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcbiIsICJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbiIsICJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcbnZhciBuYXRpdmVGdW5jdGlvblRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXRvLXN0cmluZycpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcblxudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldDtcbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBURU1QTEFURSA9IFN0cmluZyhuYXRpdmVGdW5jdGlvblRvU3RyaW5nKS5zcGxpdCgndG9TdHJpbmcnKTtcblxuc2hhcmVkKCdpbnNwZWN0U291cmNlJywgZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBuYXRpdmVGdW5jdGlvblRvU3RyaW5nLmNhbGwoaXQpO1xufSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBrZXksIHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciB1bnNhZmUgPSBvcHRpb25zID8gISFvcHRpb25zLnVuc2FmZSA6IGZhbHNlO1xuICB2YXIgc2ltcGxlID0gb3B0aW9ucyA/ICEhb3B0aW9ucy5lbnVtZXJhYmxlIDogZmFsc2U7XG4gIHZhciBub1RhcmdldEdldCA9IG9wdGlvbnMgPyAhIW9wdGlvbnMubm9UYXJnZXRHZXQgOiBmYWxzZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgJiYgIWhhcyh2YWx1ZSwgJ25hbWUnKSkgaGlkZSh2YWx1ZSwgJ25hbWUnLCBrZXkpO1xuICAgIGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKS5zb3VyY2UgPSBURU1QTEFURS5qb2luKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyBrZXkgOiAnJyk7XG4gIH1cbiAgaWYgKE8gPT09IGdsb2JhbCkge1xuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2Ugc2V0R2xvYmFsKGtleSwgdmFsdWUpO1xuICAgIHJldHVybjtcbiAgfSBlbHNlIGlmICghdW5zYWZlKSB7XG4gICAgZGVsZXRlIE9ba2V5XTtcbiAgfSBlbHNlIGlmICghbm9UYXJnZXRHZXQgJiYgT1trZXldKSB7XG4gICAgc2ltcGxlID0gdHJ1ZTtcbiAgfVxuICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgZWxzZSBoaWRlKE8sIGtleSwgdmFsdWUpO1xuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG59KShGdW5jdGlvbi5wcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyAmJiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnNvdXJjZSB8fCBuYXRpdmVGdW5jdGlvblRvU3RyaW5nLmNhbGwodGhpcyk7XG59KTtcbiIsICIvLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZXF1aXJlb2JqZWN0Y29lcmNpYmxlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsICJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgaGlkZShnbG9iYWwsIGtleSwgdmFsdWUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbFtrZXldID0gdmFsdWU7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcbiIsICJ2YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFRBRywgU1RBVElDKSB7XG4gIGlmIChpdCAmJiAhaGFzKGl0ID0gU1RBVElDID8gaXQgOiBpdC5wcm90b3R5cGUsIFRPX1NUUklOR19UQUcpKSB7XG4gICAgZGVmaW5lUHJvcGVydHkoaXQsIFRPX1NUUklOR19UQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogVEFHIH0pO1xuICB9XG59O1xuIiwgInZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xuXG52YXIga2V5cyA9IHNoYXJlZCgna2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIGtleXNba2V5XSB8fCAoa2V5c1trZXldID0gdWlkKGtleSkpO1xufTtcbiIsICJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNldEdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtZ2xvYmFsJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG5cbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IHNldEdsb2JhbChTSEFSRUQsIHt9KTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246ICczLjEuMycsXG4gIG1vZGU6IElTX1BVUkUgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnXHUwMEE5IDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcbiIsICJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG4vLyBDT05WRVJUX1RPX1NUUklORzogdHJ1ZSAgLT4gU3RyaW5nI2F0XG4vLyBDT05WRVJUX1RPX1NUUklORzogZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0aGF0LCBwb3MsIENPTlZFUlRfVE9fU1RSSU5HKSB7XG4gIHZhciBTID0gU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhhdCkpO1xuICB2YXIgcG9zaXRpb24gPSB0b0ludGVnZXIocG9zKTtcbiAgdmFyIHNpemUgPSBTLmxlbmd0aDtcbiAgdmFyIGZpcnN0LCBzZWNvbmQ7XG4gIGlmIChwb3NpdGlvbiA8IDAgfHwgcG9zaXRpb24gPj0gc2l6ZSkgcmV0dXJuIENPTlZFUlRfVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gIGZpcnN0ID0gUy5jaGFyQ29kZUF0KHBvc2l0aW9uKTtcbiAgcmV0dXJuIGZpcnN0IDwgMHhEODAwIHx8IGZpcnN0ID4gMHhEQkZGIHx8IHBvc2l0aW9uICsgMSA9PT0gc2l6ZVxuICAgIHx8IChzZWNvbmQgPSBTLmNoYXJDb2RlQXQocG9zaXRpb24gKyAxKSkgPCAweERDMDAgfHwgc2Vjb25kID4gMHhERkZGXG4gICAgICA/IENPTlZFUlRfVE9fU1RSSU5HID8gUy5jaGFyQXQocG9zaXRpb24pIDogZmlyc3RcbiAgICAgIDogQ09OVkVSVF9UT19TVFJJTkcgPyBTLnNsaWNlKHBvc2l0aW9uLCBwb3NpdGlvbiArIDIpIDogKGZpcnN0IC0gMHhEODAwIDw8IDEwKSArIChzZWNvbmQgLSAweERDMDApICsgMHgxMDAwMDtcbn07XG4iLCAidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyJyk7XG5cbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gSGVscGVyIGZvciBhIHBvcHVsYXIgcmVwZWF0aW5nIGNhc2Ugb2YgdGhlIHNwZWM6XG4vLyBMZXQgaW50ZWdlciBiZSA/IFRvSW50ZWdlcihpbmRleCkuXG4vLyBJZiBpbnRlZ2VyIDwgMCwgbGV0IHJlc3VsdCBiZSBtYXgoKGxlbmd0aCArIGludGVnZXIpLCAwKTsgZWxzZSBsZXQgcmVzdWx0IGJlIG1pbihsZW5ndGgsIGxlbmd0aCkuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIHZhciBpbnRlZ2VyID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGludGVnZXIgPCAwID8gbWF4KGludGVnZXIgKyBsZW5ndGgsIDApIDogbWluKGludGVnZXIsIGxlbmd0aCk7XG59O1xuIiwgIi8vIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJbmRleGVkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoaXQpKTtcbn07XG4iLCAidmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgVG9JbnRlZ2VyYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvaW50ZWdlclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGlzTmFOKGFyZ3VtZW50ID0gK2FyZ3VtZW50KSA/IDAgOiAoYXJndW1lbnQgPiAwID8gZmxvb3IgOiBjZWlsKShhcmd1bWVudCk7XG59O1xuIiwgInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlcicpO1xuXG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIGBUb0xlbmd0aGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGFyZ3VtZW50ID4gMCA/IG1pbih0b0ludGVnZXIoYXJndW1lbnQpLCAweDFGRkZGRkZGRkZGRkZGKSA6IDA7IC8vIDIgKiogNTMgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iLCAidmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbi8vIGBUb09iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b29iamVjdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KSk7XG59O1xuIiwgInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxuLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcbiIsICJ2YXIgaWQgPSAwO1xudmFyIHBvc3RmaXggPSBNYXRoLnJhbmRvbSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJy5jb25jYXQoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSwgJylfJywgKCsraWQgKyBwb3N0Zml4KS50b1N0cmluZygzNikpO1xufTtcbiIsICJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIHByb3RvKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBpZiAoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCkge1xuICAgIHRocm93IFR5cGVFcnJvcihcIkNhbid0IHNldCBcIiArIFN0cmluZyhwcm90bykgKyAnIGFzIGEgcHJvdG90eXBlJyk7XG4gIH1cbn07XG4iLCAidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmF0aXZlLXN5bWJvbCcpO1xuXG52YXIgU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBzdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9IE5BVElWRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdXG4gICAgfHwgKE5BVElWRV9TWU1CT0wgPyBTeW1ib2wgOiB1aWQpKCdTeW1ib2wuJyArIG5hbWUpKTtcbn07XG4iLCAidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZnJvbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1mcm9tJyk7XG52YXIgY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbicpO1xuXG52YXIgSU5DT1JSRUNUX0lURVJBVElPTiA9ICFjaGVja0NvcnJlY3RuZXNzT2ZJdGVyYXRpb24oZnVuY3Rpb24gKGl0ZXJhYmxlKSB7XG4gIEFycmF5LmZyb20oaXRlcmFibGUpO1xufSk7XG5cbi8vIGBBcnJheS5mcm9tYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LmZyb21cbiQoeyB0YXJnZXQ6ICdBcnJheScsIHN0YXQ6IHRydWUsIGZvcmNlZDogSU5DT1JSRUNUX0lURVJBVElPTiB9LCB7XG4gIGZyb206IGZyb21cbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjb2RlUG9pbnRBdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctYXQnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgZGVmaW5lSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWl0ZXJhdG9yJyk7XG5cbnZhciBTVFJJTkdfSVRFUkFUT1IgPSAnU3RyaW5nIEl0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFNUUklOR19JVEVSQVRPUik7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUtQEBpdGVyYXRvclxuZGVmaW5lSXRlcmF0b3IoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIHR5cGU6IFNUUklOR19JVEVSQVRPUixcbiAgICBzdHJpbmc6IFN0cmluZyhpdGVyYXRlZCksXG4gICAgaW5kZXg6IDBcbiAgfSk7XG4vLyBgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLSVzdHJpbmdpdGVyYXRvcnByb3RvdHlwZSUubmV4dFxufSwgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgdmFyIHN0cmluZyA9IHN0YXRlLnN0cmluZztcbiAgdmFyIGluZGV4ID0gc3RhdGUuaW5kZXg7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IHN0cmluZy5sZW5ndGgpIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgcG9pbnQgPSBjb2RlUG9pbnRBdChzdHJpbmcsIGluZGV4LCB0cnVlKTtcbiAgc3RhdGUuaW5kZXggKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4geyB2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlIH07XG59KTtcbiIsICJ2YXIgZztcclxuXHJcbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXHJcbmcgPSAoZnVuY3Rpb24oKSB7XHJcblx0cmV0dXJuIHRoaXM7XHJcbn0pKCk7XHJcblxyXG50cnkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxyXG5cdGcgPSBnIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSB8fCAoMSwgZXZhbCkoXCJ0aGlzXCIpO1xyXG59IGNhdGNoIChlKSB7XHJcblx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcclxuXHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIikgZyA9IHdpbmRvdztcclxufVxyXG5cclxuLy8gZyBjYW4gc3RpbGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGluZyB0byBkbyBhYm91dCBpdC4uLlxyXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xyXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGc7XHJcbiIsICJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzL2RlZHVwZSc7XG5cbmltcG9ydCBERUZBVUxUX0FUVFJTIGZyb20gJy4vZGVmYXVsdC1hdHRycy5qc29uJztcblxuY2xhc3MgSWNvbiB7XG4gIGNvbnN0cnVjdG9yKG5hbWUsIGNvbnRlbnRzLCB0YWdzID0gW10pIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMuY29udGVudHMgPSBjb250ZW50cztcbiAgICB0aGlzLnRhZ3MgPSB0YWdzO1xuICAgIHRoaXMuYXR0cnMgPSB7XG4gICAgICAuLi5ERUZBVUxUX0FUVFJTLFxuICAgICAgLi4ueyBjbGFzczogYGZlYXRoZXIgZmVhdGhlci0ke25hbWV9YCB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIFNWRyBzdHJpbmcuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBhdHRyc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgdG9TdmcoYXR0cnMgPSB7fSkge1xuICAgIGNvbnN0IGNvbWJpbmVkQXR0cnMgPSB7XG4gICAgICAuLi50aGlzLmF0dHJzLFxuICAgICAgLi4uYXR0cnMsXG4gICAgICAuLi57IGNsYXNzOiBjbGFzc25hbWVzKHRoaXMuYXR0cnMuY2xhc3MsIGF0dHJzLmNsYXNzKSB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gYDxzdmcgJHthdHRyc1RvU3RyaW5nKGNvbWJpbmVkQXR0cnMpfT4ke3RoaXMuY29udGVudHN9PC9zdmc+YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIGBJY29uYC5cbiAgICpcbiAgICogQWRkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIElmIG9sZCBjb2RlIGV4cGVjdHMgYGZlYXRoZXIuaWNvbnMuPG5hbWU+YFxuICAgKiB0byBiZSBhIHN0cmluZywgYHRvU3RyaW5nKClgIHdpbGwgZ2V0IGltcGxpY2l0bHkgY2FsbGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudHM7XG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0IGF0dHJpYnV0ZXMgb2JqZWN0IHRvIHN0cmluZyBvZiBIVE1MIGF0dHJpYnV0ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gYXR0cnNcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGF0dHJzVG9TdHJpbmcoYXR0cnMpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGF0dHJzKVxuICAgIC5tYXAoa2V5ID0+IGAke2tleX09XCIke2F0dHJzW2tleV19XCJgKVxuICAgIC5qb2luKCcgJyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEljb247XG4iLCAiaW1wb3J0IEljb24gZnJvbSAnLi9pY29uJztcbmltcG9ydCBpY29ucyBmcm9tICcuLi9kaXN0L2ljb25zLmpzb24nO1xuaW1wb3J0IHRhZ3MgZnJvbSAnLi90YWdzLmpzb24nO1xuXG5leHBvcnQgZGVmYXVsdCBPYmplY3Qua2V5cyhpY29ucylcbiAgLm1hcChrZXkgPT4gbmV3IEljb24oa2V5LCBpY29uc1trZXldLCB0YWdzW2tleV0pKVxuICAucmVkdWNlKChvYmplY3QsIGljb24pID0+IHtcbiAgICBvYmplY3RbaWNvbi5uYW1lXSA9IGljb247XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfSwge30pO1xuIiwgImltcG9ydCBpY29ucyBmcm9tICcuL2ljb25zJztcbmltcG9ydCB0b1N2ZyBmcm9tICcuL3RvLXN2Zyc7XG5pbXBvcnQgcmVwbGFjZSBmcm9tICcuL3JlcGxhY2UnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHsgaWNvbnMsIHRvU3ZnLCByZXBsYWNlIH07XG4iLCAiLyogZXNsaW50LWVudiBicm93c2VyICovXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzL2RlZHVwZSc7XG5cbmltcG9ydCBpY29ucyBmcm9tICcuL2ljb25zJztcblxuLyoqXG4gKiBSZXBsYWNlIGFsbCBIVE1MIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIGBkYXRhLWZlYXRoZXJgIGF0dHJpYnV0ZSB3aXRoIFNWRyBtYXJrdXBcbiAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGVsZW1lbnQncyBgZGF0YS1mZWF0aGVyYCBhdHRyaWJ1dGUgdmFsdWUuXG4gKiBAcGFyYW0ge09iamVjdH0gYXR0cnNcbiAqL1xuZnVuY3Rpb24gcmVwbGFjZShhdHRycyA9IHt9KSB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdgZmVhdGhlci5yZXBsYWNlKClgIG9ubHkgd29ya3MgaW4gYSBicm93c2VyIGVudmlyb25tZW50LicpO1xuICB9XG5cbiAgY29uc3QgZWxlbWVudHNUb1JlcGxhY2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1mZWF0aGVyXScpO1xuXG4gIEFycmF5LmZyb20oZWxlbWVudHNUb1JlcGxhY2UpLmZvckVhY2goZWxlbWVudCA9PlxuICAgIHJlcGxhY2VFbGVtZW50KGVsZW1lbnQsIGF0dHJzKSxcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlIGEgc2luZ2xlIEhUTUwgZWxlbWVudCB3aXRoIFNWRyBtYXJrdXBcbiAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGVsZW1lbnQncyBgZGF0YS1mZWF0aGVyYCBhdHRyaWJ1dGUgdmFsdWUuXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50XG4gKiBAcGFyYW0ge09iamVjdH0gYXR0cnNcbiAqL1xuZnVuY3Rpb24gcmVwbGFjZUVsZW1lbnQoZWxlbWVudCwgYXR0cnMgPSB7fSkge1xuICBjb25zdCBlbGVtZW50QXR0cnMgPSBnZXRBdHRycyhlbGVtZW50KTtcbiAgY29uc3QgbmFtZSA9IGVsZW1lbnRBdHRyc1snZGF0YS1mZWF0aGVyJ107XG4gIGRlbGV0ZSBlbGVtZW50QXR0cnNbJ2RhdGEtZmVhdGhlciddO1xuXG4gIGNvbnN0IHN2Z1N0cmluZyA9IGljb25zW25hbWVdLnRvU3ZnKHtcbiAgICAuLi5hdHRycyxcbiAgICAuLi5lbGVtZW50QXR0cnMsXG4gICAgLi4ueyBjbGFzczogY2xhc3NuYW1lcyhhdHRycy5jbGFzcywgZWxlbWVudEF0dHJzLmNsYXNzKSB9LFxuICB9KTtcbiAgY29uc3Qgc3ZnRG9jdW1lbnQgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKFxuICAgIHN2Z1N0cmluZyxcbiAgICAnaW1hZ2Uvc3ZnK3htbCcsXG4gICk7XG4gIGNvbnN0IHN2Z0VsZW1lbnQgPSBzdmdEb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcblxuICBlbGVtZW50LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHN2Z0VsZW1lbnQsIGVsZW1lbnQpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgYXR0cmlidXRlcyBvZiBhbiBIVE1MIGVsZW1lbnQuXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50XG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXRBdHRycyhlbGVtZW50KSB7XG4gIHJldHVybiBBcnJheS5mcm9tKGVsZW1lbnQuYXR0cmlidXRlcykucmVkdWNlKChhdHRycywgYXR0cikgPT4ge1xuICAgIGF0dHJzW2F0dHIubmFtZV0gPSBhdHRyLnZhbHVlO1xuICAgIHJldHVybiBhdHRycztcbiAgfSwge30pO1xufVxuXG5leHBvcnQgZGVmYXVsdCByZXBsYWNlO1xuIiwgImltcG9ydCBpY29ucyBmcm9tICcuL2ljb25zJztcblxuLyoqXG4gKiBDcmVhdGUgYW4gU1ZHIHN0cmluZy5cbiAqIEBkZXByZWNhdGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtPYmplY3R9IGF0dHJzXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiB0b1N2ZyhuYW1lLCBhdHRycyA9IHt9KSB7XG4gIGNvbnNvbGUud2FybihcbiAgICAnZmVhdGhlci50b1N2ZygpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgZmVhdGhlci5pY29uc1tuYW1lXS50b1N2ZygpIGluc3RlYWQuJyxcbiAgKTtcblxuICBpZiAoIW5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSByZXF1aXJlZCBga2V5YCAoaWNvbiBuYW1lKSBwYXJhbWV0ZXIgaXMgbWlzc2luZy4nKTtcbiAgfVxuXG4gIGlmICghaWNvbnNbbmFtZV0pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgTm8gaWNvbiBtYXRjaGluZyAnJHtcbiAgICAgICAgbmFtZVxuICAgICAgfScuIFNlZSB0aGUgY29tcGxldGUgbGlzdCBvZiBpY29ucyBhdCBodHRwczovL2ZlYXRoZXJpY29ucy5jb21gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gaWNvbnNbbmFtZV0udG9TdmcoYXR0cnMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB0b1N2ZztcbiIsICIvKlxuKiBsb2dsZXZlbCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9waW10ZXJyeS9sb2dsZXZlbFxuKlxuKiBDb3B5cmlnaHQgKGMpIDIwMTMgVGltIFBlcnJ5XG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiovXG4oZnVuY3Rpb24gKHJvb3QsIGRlZmluaXRpb24pIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgICAgIGRlZmluZShkZWZpbml0aW9uKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gICAgICAgIG1vZHVsZS5leHBvcnRzID0gZGVmaW5pdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJvb3QubG9nID0gZGVmaW5pdGlvbigpO1xuICAgIH1cbn0odGhpcywgZnVuY3Rpb24gKCkge1xuICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgLy8gU2xpZ2h0bHkgZHViaW91cyB0cmlja3MgdG8gY3V0IGRvd24gbWluaW1pemVkIGZpbGUgc2l6ZVxuICAgIHZhciBub29wID0gZnVuY3Rpb24oKSB7fTtcbiAgICB2YXIgdW5kZWZpbmVkVHlwZSA9IFwidW5kZWZpbmVkXCI7XG4gICAgdmFyIGlzSUUgPSAodHlwZW9mIHdpbmRvdyAhPT0gdW5kZWZpbmVkVHlwZSkgJiYgKHR5cGVvZiB3aW5kb3cubmF2aWdhdG9yICE9PSB1bmRlZmluZWRUeXBlKSAmJiAoXG4gICAgICAgIC9UcmlkZW50XFwvfE1TSUUgLy50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KVxuICAgICk7XG5cbiAgICB2YXIgbG9nTWV0aG9kcyA9IFtcbiAgICAgICAgXCJ0cmFjZVwiLFxuICAgICAgICBcImRlYnVnXCIsXG4gICAgICAgIFwiaW5mb1wiLFxuICAgICAgICBcIndhcm5cIixcbiAgICAgICAgXCJlcnJvclwiXG4gICAgXTtcblxuICAgIC8vIENyb3NzLWJyb3dzZXIgYmluZCBlcXVpdmFsZW50IHRoYXQgd29ya3MgYXQgbGVhc3QgYmFjayB0byBJRTZcbiAgICBmdW5jdGlvbiBiaW5kTWV0aG9kKG9iaiwgbWV0aG9kTmFtZSkge1xuICAgICAgICB2YXIgbWV0aG9kID0gb2JqW21ldGhvZE5hbWVdO1xuICAgICAgICBpZiAodHlwZW9mIG1ldGhvZC5iaW5kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gbWV0aG9kLmJpbmQob2JqKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmNhbGwobWV0aG9kLCBvYmopO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIC8vIE1pc3NpbmcgYmluZCBzaGltIG9yIElFOCArIE1vZGVybml6ciwgZmFsbGJhY2sgdG8gd3JhcHBpbmdcbiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuYXBwbHkobWV0aG9kLCBbb2JqLCBhcmd1bWVudHNdKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVHJhY2UoKSBkb2Vzbid0IHByaW50IHRoZSBtZXNzYWdlIGluIElFLCBzbyBmb3IgdGhhdCBjYXNlIHdlIG5lZWQgdG8gd3JhcCBpdFxuICAgIGZ1bmN0aW9uIHRyYWNlRm9ySUUoKSB7XG4gICAgICAgIGlmIChjb25zb2xlLmxvZykge1xuICAgICAgICAgICAgaWYgKGNvbnNvbGUubG9nLmFwcGx5KSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gSW4gb2xkIElFLCBuYXRpdmUgY29uc29sZSBtZXRob2RzIHRoZW1zZWx2ZXMgZG9uJ3QgaGF2ZSBhcHBseSgpLlxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5hcHBseShjb25zb2xlLmxvZywgW2NvbnNvbGUsIGFyZ3VtZW50c10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjb25zb2xlLnRyYWNlKSBjb25zb2xlLnRyYWNlKCk7XG4gICAgfVxuXG4gICAgLy8gQnVpbGQgdGhlIGJlc3QgbG9nZ2luZyBtZXRob2QgcG9zc2libGUgZm9yIHRoaXMgZW52XG4gICAgLy8gV2hlcmV2ZXIgcG9zc2libGUgd2Ugd2FudCB0byBiaW5kLCBub3Qgd3JhcCwgdG8gcHJlc2VydmUgc3RhY2sgdHJhY2VzXG4gICAgZnVuY3Rpb24gcmVhbE1ldGhvZChtZXRob2ROYW1lKSB7XG4gICAgICAgIGlmIChtZXRob2ROYW1lID09PSAnZGVidWcnKSB7XG4gICAgICAgICAgICBtZXRob2ROYW1lID0gJ2xvZyc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgPT09IHVuZGVmaW5lZFR5cGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gTm8gbWV0aG9kIHBvc3NpYmxlLCBmb3Igbm93IC0gZml4ZWQgbGF0ZXIgYnkgZW5hYmxlTG9nZ2luZ1doZW5Db25zb2xlQXJyaXZlc1xuICAgICAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICd0cmFjZScgJiYgaXNJRSkge1xuICAgICAgICAgICAgcmV0dXJuIHRyYWNlRm9ySUU7XG4gICAgICAgIH0gZWxzZSBpZiAoY29uc29sZVttZXRob2ROYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gYmluZE1ldGhvZChjb25zb2xlLCBtZXRob2ROYW1lKTtcbiAgICAgICAgfSBlbHNlIGlmIChjb25zb2xlLmxvZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gYmluZE1ldGhvZChjb25zb2xlLCAnbG9nJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbm9vcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoZXNlIHByaXZhdGUgZnVuY3Rpb25zIGFsd2F5cyBuZWVkIGB0aGlzYCB0byBiZSBzZXQgcHJvcGVybHlcblxuICAgIGZ1bmN0aW9uIHJlcGxhY2VMb2dnaW5nTWV0aG9kcyhsZXZlbCwgbG9nZ2VyTmFtZSkge1xuICAgICAgICAvKmpzaGludCB2YWxpZHRoaXM6dHJ1ZSAqL1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxvZ01ldGhvZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBtZXRob2ROYW1lID0gbG9nTWV0aG9kc1tpXTtcbiAgICAgICAgICAgIHRoaXNbbWV0aG9kTmFtZV0gPSAoaSA8IGxldmVsKSA/XG4gICAgICAgICAgICAgICAgbm9vcCA6XG4gICAgICAgICAgICAgICAgdGhpcy5tZXRob2RGYWN0b3J5KG1ldGhvZE5hbWUsIGxldmVsLCBsb2dnZXJOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERlZmluZSBsb2cubG9nIGFzIGFuIGFsaWFzIGZvciBsb2cuZGVidWdcbiAgICAgICAgdGhpcy5sb2cgPSB0aGlzLmRlYnVnO1xuICAgIH1cblxuICAgIC8vIEluIG9sZCBJRSB2ZXJzaW9ucywgdGhlIGNvbnNvbGUgaXNuJ3QgcHJlc2VudCB1bnRpbCB5b3UgZmlyc3Qgb3BlbiBpdC5cbiAgICAvLyBXZSBidWlsZCByZWFsTWV0aG9kKCkgcmVwbGFjZW1lbnRzIGhlcmUgdGhhdCByZWdlbmVyYXRlIGxvZ2dpbmcgbWV0aG9kc1xuICAgIGZ1bmN0aW9uIGVuYWJsZUxvZ2dpbmdXaGVuQ29uc29sZUFycml2ZXMobWV0aG9kTmFtZSwgbGV2ZWwsIGxvZ2dlck5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gdW5kZWZpbmVkVHlwZSkge1xuICAgICAgICAgICAgICAgIHJlcGxhY2VMb2dnaW5nTWV0aG9kcy5jYWxsKHRoaXMsIGxldmVsLCBsb2dnZXJOYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzW21ldGhvZE5hbWVdLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQnkgZGVmYXVsdCwgd2UgdXNlIGNsb3NlbHkgYm91bmQgcmVhbCBtZXRob2RzIHdoZXJldmVyIHBvc3NpYmxlLCBhbmRcbiAgICAvLyBvdGhlcndpc2Ugd2Ugd2FpdCBmb3IgYSBjb25zb2xlIHRvIGFwcGVhciwgYW5kIHRoZW4gdHJ5IGFnYWluLlxuICAgIGZ1bmN0aW9uIGRlZmF1bHRNZXRob2RGYWN0b3J5KG1ldGhvZE5hbWUsIGxldmVsLCBsb2dnZXJOYW1lKSB7XG4gICAgICAgIC8qanNoaW50IHZhbGlkdGhpczp0cnVlICovXG4gICAgICAgIHJldHVybiByZWFsTWV0aG9kKG1ldGhvZE5hbWUpIHx8XG4gICAgICAgICAgICAgICBlbmFibGVMb2dnaW5nV2hlbkNvbnNvbGVBcnJpdmVzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gTG9nZ2VyKG5hbWUsIGRlZmF1bHRMZXZlbCwgZmFjdG9yeSkge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdmFyIGN1cnJlbnRMZXZlbDtcbiAgICAgIGRlZmF1bHRMZXZlbCA9IGRlZmF1bHRMZXZlbCA9PSBudWxsID8gXCJXQVJOXCIgOiBkZWZhdWx0TGV2ZWw7XG5cbiAgICAgIHZhciBzdG9yYWdlS2V5ID0gXCJsb2dsZXZlbFwiO1xuICAgICAgaWYgKHR5cGVvZiBuYW1lID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHN0b3JhZ2VLZXkgKz0gXCI6XCIgKyBuYW1lO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgbmFtZSA9PT0gXCJzeW1ib2xcIikge1xuICAgICAgICBzdG9yYWdlS2V5ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBwZXJzaXN0TGV2ZWxJZlBvc3NpYmxlKGxldmVsTnVtKSB7XG4gICAgICAgICAgdmFyIGxldmVsTmFtZSA9IChsb2dNZXRob2RzW2xldmVsTnVtXSB8fCAnc2lsZW50JykudG9VcHBlckNhc2UoKTtcblxuICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSB1bmRlZmluZWRUeXBlIHx8ICFzdG9yYWdlS2V5KSByZXR1cm47XG5cbiAgICAgICAgICAvLyBVc2UgbG9jYWxTdG9yYWdlIGlmIGF2YWlsYWJsZVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Vbc3RvcmFnZUtleV0gPSBsZXZlbE5hbWU7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9XG5cbiAgICAgICAgICAvLyBVc2Ugc2Vzc2lvbiBjb29raWUgYXMgZmFsbGJhY2tcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB3aW5kb3cuZG9jdW1lbnQuY29va2llID1cbiAgICAgICAgICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoc3RvcmFnZUtleSkgKyBcIj1cIiArIGxldmVsTmFtZSArIFwiO1wiO1xuICAgICAgICAgIH0gY2F0Y2ggKGlnbm9yZSkge31cbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZ2V0UGVyc2lzdGVkTGV2ZWwoKSB7XG4gICAgICAgICAgdmFyIHN0b3JlZExldmVsO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IHVuZGVmaW5lZFR5cGUgfHwgIXN0b3JhZ2VLZXkpIHJldHVybjtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHN0b3JlZExldmVsID0gd2luZG93LmxvY2FsU3RvcmFnZVtzdG9yYWdlS2V5XTtcbiAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9XG5cbiAgICAgICAgICAvLyBGYWxsYmFjayB0byBjb29raWVzIGlmIGxvY2FsIHN0b3JhZ2UgZ2l2ZXMgdXMgbm90aGluZ1xuICAgICAgICAgIGlmICh0eXBlb2Ygc3RvcmVkTGV2ZWwgPT09IHVuZGVmaW5lZFR5cGUpIHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIHZhciBjb29raWUgPSB3aW5kb3cuZG9jdW1lbnQuY29va2llO1xuICAgICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gY29va2llLmluZGV4T2YoXG4gICAgICAgICAgICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHN0b3JhZ2VLZXkpICsgXCI9XCIpO1xuICAgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgIHN0b3JlZExldmVsID0gL14oW147XSspLy5leGVjKGNvb2tpZS5zbGljZShsb2NhdGlvbikpWzFdO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gSWYgdGhlIHN0b3JlZCBsZXZlbCBpcyBub3QgdmFsaWQsIHRyZWF0IGl0IGFzIGlmIG5vdGhpbmcgd2FzIHN0b3JlZC5cbiAgICAgICAgICBpZiAoc2VsZi5sZXZlbHNbc3RvcmVkTGV2ZWxdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgc3RvcmVkTGV2ZWwgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHN0b3JlZExldmVsO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjbGVhclBlcnNpc3RlZExldmVsKCkge1xuICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSB1bmRlZmluZWRUeXBlIHx8ICFzdG9yYWdlS2V5KSByZXR1cm47XG5cbiAgICAgICAgICAvLyBVc2UgbG9jYWxTdG9yYWdlIGlmIGF2YWlsYWJsZVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShzdG9yYWdlS2V5KTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH0gY2F0Y2ggKGlnbm9yZSkge31cblxuICAgICAgICAgIC8vIFVzZSBzZXNzaW9uIGNvb2tpZSBhcyBmYWxsYmFja1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5kb2N1bWVudC5jb29raWUgPVxuICAgICAgICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChzdG9yYWdlS2V5KSArIFwiPTsgZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIFVUQ1wiO1xuICAgICAgICAgIH0gY2F0Y2ggKGlnbm9yZSkge31cbiAgICAgIH1cblxuICAgICAgLypcbiAgICAgICAqXG4gICAgICAgKiBQdWJsaWMgbG9nZ2VyIEFQSSAtIHNlZSBodHRwczovL2dpdGh1Yi5jb20vcGltdGVycnkvbG9nbGV2ZWwgZm9yIGRldGFpbHNcbiAgICAgICAqXG4gICAgICAgKi9cblxuICAgICAgc2VsZi5uYW1lID0gbmFtZTtcblxuICAgICAgc2VsZi5sZXZlbHMgPSB7IFwiVFJBQ0VcIjogMCwgXCJERUJVR1wiOiAxLCBcIklORk9cIjogMiwgXCJXQVJOXCI6IDMsXG4gICAgICAgICAgXCJFUlJPUlwiOiA0LCBcIlNJTEVOVFwiOiA1fTtcblxuICAgICAgc2VsZi5tZXRob2RGYWN0b3J5ID0gZmFjdG9yeSB8fCBkZWZhdWx0TWV0aG9kRmFjdG9yeTtcblxuICAgICAgc2VsZi5nZXRMZXZlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gY3VycmVudExldmVsO1xuICAgICAgfTtcblxuICAgICAgc2VsZi5zZXRMZXZlbCA9IGZ1bmN0aW9uIChsZXZlbCwgcGVyc2lzdCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09IFwic3RyaW5nXCIgJiYgc2VsZi5sZXZlbHNbbGV2ZWwudG9VcHBlckNhc2UoKV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsZXZlbCA9IHNlbGYubGV2ZWxzW2xldmVsLnRvVXBwZXJDYXNlKCldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIGxldmVsID09PSBcIm51bWJlclwiICYmIGxldmVsID49IDAgJiYgbGV2ZWwgPD0gc2VsZi5sZXZlbHMuU0lMRU5UKSB7XG4gICAgICAgICAgICAgIGN1cnJlbnRMZXZlbCA9IGxldmVsO1xuICAgICAgICAgICAgICBpZiAocGVyc2lzdCAhPT0gZmFsc2UpIHsgIC8vIGRlZmF1bHRzIHRvIHRydWVcbiAgICAgICAgICAgICAgICAgIHBlcnNpc3RMZXZlbElmUG9zc2libGUobGV2ZWwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlcGxhY2VMb2dnaW5nTWV0aG9kcy5jYWxsKHNlbGYsIGxldmVsLCBuYW1lKTtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSB1bmRlZmluZWRUeXBlICYmIGxldmVsIDwgc2VsZi5sZXZlbHMuU0lMRU5UKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gXCJObyBjb25zb2xlIGF2YWlsYWJsZSBmb3IgbG9nZ2luZ1wiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhyb3cgXCJsb2cuc2V0TGV2ZWwoKSBjYWxsZWQgd2l0aCBpbnZhbGlkIGxldmVsOiBcIiArIGxldmVsO1xuICAgICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHNlbGYuc2V0RGVmYXVsdExldmVsID0gZnVuY3Rpb24gKGxldmVsKSB7XG4gICAgICAgICAgZGVmYXVsdExldmVsID0gbGV2ZWw7XG4gICAgICAgICAgaWYgKCFnZXRQZXJzaXN0ZWRMZXZlbCgpKSB7XG4gICAgICAgICAgICAgIHNlbGYuc2V0TGV2ZWwobGV2ZWwsIGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBzZWxmLnJlc2V0TGV2ZWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgc2VsZi5zZXRMZXZlbChkZWZhdWx0TGV2ZWwsIGZhbHNlKTtcbiAgICAgICAgICBjbGVhclBlcnNpc3RlZExldmVsKCk7XG4gICAgICB9O1xuXG4gICAgICBzZWxmLmVuYWJsZUFsbCA9IGZ1bmN0aW9uKHBlcnNpc3QpIHtcbiAgICAgICAgICBzZWxmLnNldExldmVsKHNlbGYubGV2ZWxzLlRSQUNFLCBwZXJzaXN0KTtcbiAgICAgIH07XG5cbiAgICAgIHNlbGYuZGlzYWJsZUFsbCA9IGZ1bmN0aW9uKHBlcnNpc3QpIHtcbiAgICAgICAgICBzZWxmLnNldExldmVsKHNlbGYubGV2ZWxzLlNJTEVOVCwgcGVyc2lzdCk7XG4gICAgICB9O1xuXG4gICAgICAvLyBJbml0aWFsaXplIHdpdGggdGhlIHJpZ2h0IGxldmVsXG4gICAgICB2YXIgaW5pdGlhbExldmVsID0gZ2V0UGVyc2lzdGVkTGV2ZWwoKTtcbiAgICAgIGlmIChpbml0aWFsTGV2ZWwgPT0gbnVsbCkge1xuICAgICAgICAgIGluaXRpYWxMZXZlbCA9IGRlZmF1bHRMZXZlbDtcbiAgICAgIH1cbiAgICAgIHNlbGYuc2V0TGV2ZWwoaW5pdGlhbExldmVsLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKlxuICAgICAqIFRvcC1sZXZlbCBBUElcbiAgICAgKlxuICAgICAqL1xuXG4gICAgdmFyIGRlZmF1bHRMb2dnZXIgPSBuZXcgTG9nZ2VyKCk7XG5cbiAgICB2YXIgX2xvZ2dlcnNCeU5hbWUgPSB7fTtcbiAgICBkZWZhdWx0TG9nZ2VyLmdldExvZ2dlciA9IGZ1bmN0aW9uIGdldExvZ2dlcihuYW1lKSB7XG4gICAgICAgIGlmICgodHlwZW9mIG5hbWUgIT09IFwic3ltYm9sXCIgJiYgdHlwZW9mIG5hbWUgIT09IFwic3RyaW5nXCIpIHx8IG5hbWUgPT09IFwiXCIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiWW91IG11c3Qgc3VwcGx5IGEgbmFtZSB3aGVuIGNyZWF0aW5nIGEgbG9nZ2VyLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBsb2dnZXIgPSBfbG9nZ2Vyc0J5TmFtZVtuYW1lXTtcbiAgICAgICAgaWYgKCFsb2dnZXIpIHtcbiAgICAgICAgICBsb2dnZXIgPSBfbG9nZ2Vyc0J5TmFtZVtuYW1lXSA9IG5ldyBMb2dnZXIoXG4gICAgICAgICAgICBuYW1lLCBkZWZhdWx0TG9nZ2VyLmdldExldmVsKCksIGRlZmF1bHRMb2dnZXIubWV0aG9kRmFjdG9yeSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvZ2dlcjtcbiAgICB9O1xuXG4gICAgLy8gR3JhYiB0aGUgY3VycmVudCBnbG9iYWwgbG9nIHZhcmlhYmxlIGluIGNhc2Ugb2Ygb3ZlcndyaXRlXG4gICAgdmFyIF9sb2cgPSAodHlwZW9mIHdpbmRvdyAhPT0gdW5kZWZpbmVkVHlwZSkgPyB3aW5kb3cubG9nIDogdW5kZWZpbmVkO1xuICAgIGRlZmF1bHRMb2dnZXIubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gdW5kZWZpbmVkVHlwZSAmJlxuICAgICAgICAgICAgICAgd2luZG93LmxvZyA9PT0gZGVmYXVsdExvZ2dlcikge1xuICAgICAgICAgICAgd2luZG93LmxvZyA9IF9sb2c7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVmYXVsdExvZ2dlcjtcbiAgICB9O1xuXG4gICAgZGVmYXVsdExvZ2dlci5nZXRMb2dnZXJzID0gZnVuY3Rpb24gZ2V0TG9nZ2VycygpIHtcbiAgICAgICAgcmV0dXJuIF9sb2dnZXJzQnlOYW1lO1xuICAgIH07XG5cbiAgICAvLyBFUzYgZGVmYXVsdCBleHBvcnQsIGZvciBjb21wYXRpYmlsaXR5XG4gICAgZGVmYXVsdExvZ2dlclsnZGVmYXVsdCddID0gZGVmYXVsdExvZ2dlcjtcblxuICAgIHJldHVybiBkZWZhdWx0TG9nZ2VyO1xufSkpO1xuIiwgIi8qKlxuICogR3JhcGhvbG9neSBVdGlsaXRpZXNcbiAqID09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIENvbGxlY3Rpb24gb2YgaGVscGZ1bCBmdW5jdGlvbnMgdXNlZCBieSB0aGUgaW1wbGVtZW50YXRpb24uXG4gKi9cblxuLyoqXG4gKiBPYmplY3QuYXNzaWduLWxpa2UgcG9seWZpbGwuXG4gKlxuICogQHBhcmFtICB7b2JqZWN0fSB0YXJnZXQgICAgICAgLSBGaXJzdCBvYmplY3QuXG4gKiBAcGFyYW0gIHtvYmplY3R9IFsuLi5vYmplY3RzXSAtIE9iamVjdHMgdG8gbWVyZ2UuXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGFzc2lnblBvbHlmaWxsKCkge1xuICBjb25zdCB0YXJnZXQgPSBhcmd1bWVudHNbMF07XG5cbiAgZm9yIChsZXQgaSA9IDEsIGwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgaWYgKCFhcmd1bWVudHNbaV0pIGNvbnRpbnVlO1xuXG4gICAgZm9yIChjb25zdCBrIGluIGFyZ3VtZW50c1tpXSkgdGFyZ2V0W2tdID0gYXJndW1lbnRzW2ldW2tdO1xuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxubGV0IGFzc2lnbiA9IGFzc2lnblBvbHlmaWxsO1xuXG5pZiAodHlwZW9mIE9iamVjdC5hc3NpZ24gPT09ICdmdW5jdGlvbicpIGFzc2lnbiA9IE9iamVjdC5hc3NpZ247XG5cbmV4cG9ydCB7YXNzaWdufTtcblxuLyoqXG4gKiBGdW5jdGlvbiByZXR1cm5pbmcgdGhlIGZpcnN0IG1hdGNoaW5nIGVkZ2UgZm9yIGdpdmVuIHBhdGguXG4gKiBOb3RlOiB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSBleGlzdGVuY2Ugb2Ygc291cmNlICYgdGFyZ2V0LiBUaGlzXG4gKiBtdXN0IGJlIHBlcmZvcm1lZCBieSB0aGUgY2FsbGVyLlxuICpcbiAqIEBwYXJhbSAge0dyYXBofSAgZ3JhcGggIC0gVGFyZ2V0IGdyYXBoLlxuICogQHBhcmFtICB7YW55fSAgICBzb3VyY2UgLSBTb3VyY2Ugbm9kZS5cbiAqIEBwYXJhbSAge2FueX0gICAgdGFyZ2V0IC0gVGFyZ2V0IG5vZGUuXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHR5cGUgICAtIFR5cGUgb2YgdGhlIGVkZ2UgKG1peGVkLCBkaXJlY3RlZCBvciB1bmRpcmVjdGVkKS5cbiAqIEByZXR1cm4ge3N0cmluZ3xudWxsfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWF0Y2hpbmdFZGdlKGdyYXBoLCBzb3VyY2UsIHRhcmdldCwgdHlwZSkge1xuICBjb25zdCBzb3VyY2VEYXRhID0gZ3JhcGguX25vZGVzLmdldChzb3VyY2UpO1xuXG4gIGxldCBlZGdlID0gbnVsbDtcblxuICBpZiAoIXNvdXJjZURhdGEpIHJldHVybiBlZGdlO1xuXG4gIGlmICh0eXBlID09PSAnbWl4ZWQnKSB7XG4gICAgZWRnZSA9XG4gICAgICAoc291cmNlRGF0YS5vdXQgJiYgc291cmNlRGF0YS5vdXRbdGFyZ2V0XSkgfHxcbiAgICAgIChzb3VyY2VEYXRhLnVuZGlyZWN0ZWQgJiYgc291cmNlRGF0YS51bmRpcmVjdGVkW3RhcmdldF0pO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkaXJlY3RlZCcpIHtcbiAgICBlZGdlID0gc291cmNlRGF0YS5vdXQgJiYgc291cmNlRGF0YS5vdXRbdGFyZ2V0XTtcbiAgfSBlbHNlIHtcbiAgICBlZGdlID0gc291cmNlRGF0YS51bmRpcmVjdGVkICYmIHNvdXJjZURhdGEudW5kaXJlY3RlZFt0YXJnZXRdO1xuICB9XG5cbiAgcmV0dXJuIGVkZ2U7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIHZhbHVlIGlzIGEgR3JhcGggaW1wbGVtZW50YXRpb24gaW5zdGFuY2UuXG4gKlxuICogQHBhcmFtICB7bWl4ZWR9ICAgdmFsdWUgLSBUYXJnZXQgdmFsdWUuXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNHcmFwaCh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHR5cGVvZiB2YWx1ZS5hZGRVbmRpcmVjdGVkRWRnZVdpdGhLZXkgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgdmFsdWUuZHJvcE5vZGUgPT09ICdmdW5jdGlvbidcbiAgKTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBwbGFpbiBvYmplY3QuXG4gKlxuICogQHBhcmFtICB7bWl4ZWR9ICAgdmFsdWUgLSBUYXJnZXQgdmFsdWUuXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUuY29uc3RydWN0b3IgPT09IE9iamVjdFxuICApO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgZW1wdHkuXG4gKlxuICogQHBhcmFtICB7b2JqZWN0fSAgbyAtIFRhcmdldCBPYmplY3QuXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbXB0eShvKSB7XG4gIGxldCBrO1xuXG4gIGZvciAoayBpbiBvKSByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIFwicHJpdmF0ZVwiIHByb3BlcnR5IGZvciB0aGUgZ2l2ZW4gbWVtYmVyIG5hbWUgYnkgY29uY2VhbGluZyBpdFxuICogdXNpbmcgdGhlIGBlbnVtZXJhYmxlYCBvcHRpb24uXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHRhcmdldCAtIFRhcmdldCBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgIC0gTWVtYmVyIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcml2YXRlUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB2YWx1ZSkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICB2YWx1ZVxuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcmVhZC1vbmx5IHByb3BlcnR5IGZvciB0aGUgZ2l2ZW4gbWVtYmVyIG5hbWUgJiB0aGUgZ2l2ZW4gZ2V0dGVyLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSAgIHRhcmdldCAtIFRhcmdldCBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ30gICBuYW1lICAgLSBNZW1iZXIgbmFtZS5cbiAqIEBwYXJhbSB7bWl4ZWR9ICAgIHZhbHVlICAtIFRoZSBhdHRhY2hlZCBnZXR0ZXIgb3IgZml4ZWQgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkT25seVByb3BlcnR5KHRhcmdldCwgbmFtZSwgdmFsdWUpIHtcbiAgY29uc3QgZGVzY3JpcHRvciA9IHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9O1xuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBkZXNjcmlwdG9yLmdldCA9IHZhbHVlO1xuICB9IGVsc2Uge1xuICAgIGRlc2NyaXB0b3IudmFsdWUgPSB2YWx1ZTtcbiAgICBkZXNjcmlwdG9yLndyaXRhYmxlID0gZmFsc2U7XG4gIH1cblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCBkZXNjcmlwdG9yKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBjb25zdGl0dXRlIHZhbGlkIGhpbnRzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBoaW50cyAtIFRhcmdldCBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUhpbnRzKGhpbnRzKSB7XG4gIGlmICghaXNQbGFpbk9iamVjdChoaW50cykpIHJldHVybiBmYWxzZTtcblxuICBpZiAoaGludHMuYXR0cmlidXRlcyAmJiAhQXJyYXkuaXNBcnJheShoaW50cy5hdHRyaWJ1dGVzKSkgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBnZW5lcmF0aW5nIGluY3JlbWVudGFsIGlkcyBmb3IgZWRnZXMuXG4gKlxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmNyZW1lbnRhbElkU3RhcnRpbmdGcm9tUmFuZG9tQnl0ZSgpIHtcbiAgbGV0IGkgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyNTYpICYgMHhmZjtcblxuICByZXR1cm4gKCkgPT4ge1xuICAgIHJldHVybiBpKys7XG4gIH07XG59XG4iLCAiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFIgPSB0eXBlb2YgUmVmbGVjdCA9PT0gJ29iamVjdCcgPyBSZWZsZWN0IDogbnVsbFxudmFyIFJlZmxlY3RBcHBseSA9IFIgJiYgdHlwZW9mIFIuYXBwbHkgPT09ICdmdW5jdGlvbidcbiAgPyBSLmFwcGx5XG4gIDogZnVuY3Rpb24gUmVmbGVjdEFwcGx5KHRhcmdldCwgcmVjZWl2ZXIsIGFyZ3MpIHtcbiAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwodGFyZ2V0LCByZWNlaXZlciwgYXJncyk7XG4gIH1cblxudmFyIFJlZmxlY3RPd25LZXlzXG5pZiAoUiAmJiB0eXBlb2YgUi5vd25LZXlzID09PSAnZnVuY3Rpb24nKSB7XG4gIFJlZmxlY3RPd25LZXlzID0gUi5vd25LZXlzXG59IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgUmVmbGVjdE93bktleXMgPSBmdW5jdGlvbiBSZWZsZWN0T3duS2V5cyh0YXJnZXQpIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KVxuICAgICAgLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHRhcmdldCkpO1xuICB9O1xufSBlbHNlIHtcbiAgUmVmbGVjdE93bktleXMgPSBmdW5jdGlvbiBSZWZsZWN0T3duS2V5cyh0YXJnZXQpIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gUHJvY2Vzc0VtaXRXYXJuaW5nKHdhcm5pbmcpIHtcbiAgaWYgKGNvbnNvbGUgJiYgY29uc29sZS53YXJuKSBjb25zb2xlLndhcm4od2FybmluZyk7XG59XG5cbnZhciBOdW1iZXJJc05hTiA9IE51bWJlci5pc05hTiB8fCBmdW5jdGlvbiBOdW1iZXJJc05hTih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBFdmVudEVtaXR0ZXIoKSB7XG4gIEV2ZW50RW1pdHRlci5pbml0LmNhbGwodGhpcyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50RW1pdHRlcjtcbm1vZHVsZS5leHBvcnRzLm9uY2UgPSBvbmNlO1xuXG4vLyBCYWNrd2FyZHMtY29tcGF0IHdpdGggbm9kZSAwLjEwLnhcbkV2ZW50RW1pdHRlci5FdmVudEVtaXR0ZXIgPSBFdmVudEVtaXR0ZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX2V2ZW50cyA9IHVuZGVmaW5lZDtcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX2V2ZW50c0NvdW50ID0gMDtcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX21heExpc3RlbmVycyA9IHVuZGVmaW5lZDtcblxuLy8gQnkgZGVmYXVsdCBFdmVudEVtaXR0ZXJzIHdpbGwgcHJpbnQgYSB3YXJuaW5nIGlmIG1vcmUgdGhhbiAxMCBsaXN0ZW5lcnMgYXJlXG4vLyBhZGRlZCB0byBpdC4gVGhpcyBpcyBhIHVzZWZ1bCBkZWZhdWx0IHdoaWNoIGhlbHBzIGZpbmRpbmcgbWVtb3J5IGxlYWtzLlxudmFyIGRlZmF1bHRNYXhMaXN0ZW5lcnMgPSAxMDtcblxuZnVuY3Rpb24gY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcikge1xuICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwibGlzdGVuZXJcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyArIHR5cGVvZiBsaXN0ZW5lcik7XG4gIH1cbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEV2ZW50RW1pdHRlciwgJ2RlZmF1bHRNYXhMaXN0ZW5lcnMnLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRNYXhMaXN0ZW5lcnM7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24oYXJnKSB7XG4gICAgaWYgKHR5cGVvZiBhcmcgIT09ICdudW1iZXInIHx8IGFyZyA8IDAgfHwgTnVtYmVySXNOYU4oYXJnKSkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiBcImRlZmF1bHRNYXhMaXN0ZW5lcnNcIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnICsgYXJnICsgJy4nKTtcbiAgICB9XG4gICAgZGVmYXVsdE1heExpc3RlbmVycyA9IGFyZztcbiAgfVxufSk7XG5cbkV2ZW50RW1pdHRlci5pbml0ID0gZnVuY3Rpb24oKSB7XG5cbiAgaWYgKHRoaXMuX2V2ZW50cyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICB0aGlzLl9ldmVudHMgPT09IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5fZXZlbnRzKSB7XG4gICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB0aGlzLl9ldmVudHNDb3VudCA9IDA7XG4gIH1cblxuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSB0aGlzLl9tYXhMaXN0ZW5lcnMgfHwgdW5kZWZpbmVkO1xufTtcblxuLy8gT2J2aW91c2x5IG5vdCBhbGwgRW1pdHRlcnMgc2hvdWxkIGJlIGxpbWl0ZWQgdG8gMTAuIFRoaXMgZnVuY3Rpb24gYWxsb3dzXG4vLyB0aGF0IHRvIGJlIGluY3JlYXNlZC4gU2V0IHRvIHplcm8gZm9yIHVubGltaXRlZC5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzID0gZnVuY3Rpb24gc2V0TWF4TGlzdGVuZXJzKG4pIHtcbiAgaWYgKHR5cGVvZiBuICE9PSAnbnVtYmVyJyB8fCBuIDwgMCB8fCBOdW1iZXJJc05hTihuKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgXCJuXCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJyArIG4gKyAnLicpO1xuICB9XG4gIHRoaXMuX21heExpc3RlbmVycyA9IG47XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gX2dldE1heExpc3RlbmVycyh0aGF0KSB7XG4gIGlmICh0aGF0Ll9tYXhMaXN0ZW5lcnMgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gRXZlbnRFbWl0dGVyLmRlZmF1bHRNYXhMaXN0ZW5lcnM7XG4gIHJldHVybiB0aGF0Ll9tYXhMaXN0ZW5lcnM7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZ2V0TWF4TGlzdGVuZXJzID0gZnVuY3Rpb24gZ2V0TWF4TGlzdGVuZXJzKCkge1xuICByZXR1cm4gX2dldE1heExpc3RlbmVycyh0aGlzKTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZW1pdCA9IGZ1bmN0aW9uIGVtaXQodHlwZSkge1xuICB2YXIgYXJncyA9IFtdO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgYXJncy5wdXNoKGFyZ3VtZW50c1tpXSk7XG4gIHZhciBkb0Vycm9yID0gKHR5cGUgPT09ICdlcnJvcicpO1xuXG4gIHZhciBldmVudHMgPSB0aGlzLl9ldmVudHM7XG4gIGlmIChldmVudHMgIT09IHVuZGVmaW5lZClcbiAgICBkb0Vycm9yID0gKGRvRXJyb3IgJiYgZXZlbnRzLmVycm9yID09PSB1bmRlZmluZWQpO1xuICBlbHNlIGlmICghZG9FcnJvcilcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gSWYgdGhlcmUgaXMgbm8gJ2Vycm9yJyBldmVudCBsaXN0ZW5lciB0aGVuIHRocm93LlxuICBpZiAoZG9FcnJvcikge1xuICAgIHZhciBlcjtcbiAgICBpZiAoYXJncy5sZW5ndGggPiAwKVxuICAgICAgZXIgPSBhcmdzWzBdO1xuICAgIGlmIChlciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAvLyBOb3RlOiBUaGUgY29tbWVudHMgb24gdGhlIGB0aHJvd2AgbGluZXMgYXJlIGludGVudGlvbmFsLCB0aGV5IHNob3dcbiAgICAgIC8vIHVwIGluIE5vZGUncyBvdXRwdXQgaWYgdGhpcyByZXN1bHRzIGluIGFuIHVuaGFuZGxlZCBleGNlcHRpb24uXG4gICAgICB0aHJvdyBlcjsgLy8gVW5oYW5kbGVkICdlcnJvcicgZXZlbnRcbiAgICB9XG4gICAgLy8gQXQgbGVhc3QgZ2l2ZSBzb21lIGtpbmQgb2YgY29udGV4dCB0byB0aGUgdXNlclxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1VuaGFuZGxlZCBlcnJvci4nICsgKGVyID8gJyAoJyArIGVyLm1lc3NhZ2UgKyAnKScgOiAnJykpO1xuICAgIGVyci5jb250ZXh0ID0gZXI7XG4gICAgdGhyb3cgZXJyOyAvLyBVbmhhbmRsZWQgJ2Vycm9yJyBldmVudFxuICB9XG5cbiAgdmFyIGhhbmRsZXIgPSBldmVudHNbdHlwZV07XG5cbiAgaWYgKGhhbmRsZXIgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKHR5cGVvZiBoYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgUmVmbGVjdEFwcGx5KGhhbmRsZXIsIHRoaXMsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIHZhciBsZW4gPSBoYW5kbGVyLmxlbmd0aDtcbiAgICB2YXIgbGlzdGVuZXJzID0gYXJyYXlDbG9uZShoYW5kbGVyLCBsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpXG4gICAgICBSZWZsZWN0QXBwbHkobGlzdGVuZXJzW2ldLCB0aGlzLCBhcmdzKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZnVuY3Rpb24gX2FkZExpc3RlbmVyKHRhcmdldCwgdHlwZSwgbGlzdGVuZXIsIHByZXBlbmQpIHtcbiAgdmFyIG07XG4gIHZhciBldmVudHM7XG4gIHZhciBleGlzdGluZztcblxuICBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKTtcblxuICBldmVudHMgPSB0YXJnZXQuX2V2ZW50cztcbiAgaWYgKGV2ZW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHRhcmdldC5fZXZlbnRzQ291bnQgPSAwO1xuICB9IGVsc2Uge1xuICAgIC8vIFRvIGF2b2lkIHJlY3Vyc2lvbiBpbiB0aGUgY2FzZSB0aGF0IHR5cGUgPT09IFwibmV3TGlzdGVuZXJcIiEgQmVmb3JlXG4gICAgLy8gYWRkaW5nIGl0IHRvIHRoZSBsaXN0ZW5lcnMsIGZpcnN0IGVtaXQgXCJuZXdMaXN0ZW5lclwiLlxuICAgIGlmIChldmVudHMubmV3TGlzdGVuZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGFyZ2V0LmVtaXQoJ25ld0xpc3RlbmVyJywgdHlwZSxcbiAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLmxpc3RlbmVyID8gbGlzdGVuZXIubGlzdGVuZXIgOiBsaXN0ZW5lcik7XG5cbiAgICAgIC8vIFJlLWFzc2lnbiBgZXZlbnRzYCBiZWNhdXNlIGEgbmV3TGlzdGVuZXIgaGFuZGxlciBjb3VsZCBoYXZlIGNhdXNlZCB0aGVcbiAgICAgIC8vIHRoaXMuX2V2ZW50cyB0byBiZSBhc3NpZ25lZCB0byBhIG5ldyBvYmplY3RcbiAgICAgIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzO1xuICAgIH1cbiAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXTtcbiAgfVxuXG4gIGlmIChleGlzdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT3B0aW1pemUgdGhlIGNhc2Ugb2Ygb25lIGxpc3RlbmVyLiBEb24ndCBuZWVkIHRoZSBleHRyYSBhcnJheSBvYmplY3QuXG4gICAgZXhpc3RpbmcgPSBldmVudHNbdHlwZV0gPSBsaXN0ZW5lcjtcbiAgICArK3RhcmdldC5fZXZlbnRzQ291bnQ7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHR5cGVvZiBleGlzdGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gQWRkaW5nIHRoZSBzZWNvbmQgZWxlbWVudCwgbmVlZCB0byBjaGFuZ2UgdG8gYXJyYXkuXG4gICAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXSA9XG4gICAgICAgIHByZXBlbmQgPyBbbGlzdGVuZXIsIGV4aXN0aW5nXSA6IFtleGlzdGluZywgbGlzdGVuZXJdO1xuICAgICAgLy8gSWYgd2UndmUgYWxyZWFkeSBnb3QgYW4gYXJyYXksIGp1c3QgYXBwZW5kLlxuICAgIH0gZWxzZSBpZiAocHJlcGVuZCkge1xuICAgICAgZXhpc3RpbmcudW5zaGlmdChsaXN0ZW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4aXN0aW5nLnB1c2gobGlzdGVuZXIpO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBsaXN0ZW5lciBsZWFrXG4gICAgbSA9IF9nZXRNYXhMaXN0ZW5lcnModGFyZ2V0KTtcbiAgICBpZiAobSA+IDAgJiYgZXhpc3RpbmcubGVuZ3RoID4gbSAmJiAhZXhpc3Rpbmcud2FybmVkKSB7XG4gICAgICBleGlzdGluZy53YXJuZWQgPSB0cnVlO1xuICAgICAgLy8gTm8gZXJyb3IgY29kZSBmb3IgdGhpcyBzaW5jZSBpdCBpcyBhIFdhcm5pbmdcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICAgICAgdmFyIHcgPSBuZXcgRXJyb3IoJ1Bvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgbGVhayBkZXRlY3RlZC4gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nLmxlbmd0aCArICcgJyArIFN0cmluZyh0eXBlKSArICcgbGlzdGVuZXJzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5jcmVhc2UgbGltaXQnKTtcbiAgICAgIHcubmFtZSA9ICdNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmcnO1xuICAgICAgdy5lbWl0dGVyID0gdGFyZ2V0O1xuICAgICAgdy50eXBlID0gdHlwZTtcbiAgICAgIHcuY291bnQgPSBleGlzdGluZy5sZW5ndGg7XG4gICAgICBQcm9jZXNzRW1pdFdhcm5pbmcodyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IGZ1bmN0aW9uIGFkZExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gIHJldHVybiBfYWRkTGlzdGVuZXIodGhpcywgdHlwZSwgbGlzdGVuZXIsIGZhbHNlKTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnByZXBlbmRMaXN0ZW5lciA9XG4gICAgZnVuY3Rpb24gcHJlcGVuZExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgICByZXR1cm4gX2FkZExpc3RlbmVyKHRoaXMsIHR5cGUsIGxpc3RlbmVyLCB0cnVlKTtcbiAgICB9O1xuXG5mdW5jdGlvbiBvbmNlV3JhcHBlcigpIHtcbiAgaWYgKCF0aGlzLmZpcmVkKSB7XG4gICAgdGhpcy50YXJnZXQucmVtb3ZlTGlzdGVuZXIodGhpcy50eXBlLCB0aGlzLndyYXBGbik7XG4gICAgdGhpcy5maXJlZCA9IHRydWU7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gdGhpcy5saXN0ZW5lci5jYWxsKHRoaXMudGFyZ2V0KTtcbiAgICByZXR1cm4gdGhpcy5saXN0ZW5lci5hcHBseSh0aGlzLnRhcmdldCwgYXJndW1lbnRzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfb25jZVdyYXAodGFyZ2V0LCB0eXBlLCBsaXN0ZW5lcikge1xuICB2YXIgc3RhdGUgPSB7IGZpcmVkOiBmYWxzZSwgd3JhcEZuOiB1bmRlZmluZWQsIHRhcmdldDogdGFyZ2V0LCB0eXBlOiB0eXBlLCBsaXN0ZW5lcjogbGlzdGVuZXIgfTtcbiAgdmFyIHdyYXBwZWQgPSBvbmNlV3JhcHBlci5iaW5kKHN0YXRlKTtcbiAgd3JhcHBlZC5saXN0ZW5lciA9IGxpc3RlbmVyO1xuICBzdGF0ZS53cmFwRm4gPSB3cmFwcGVkO1xuICByZXR1cm4gd3JhcHBlZDtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbmNlID0gZnVuY3Rpb24gb25jZSh0eXBlLCBsaXN0ZW5lcikge1xuICBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKTtcbiAgdGhpcy5vbih0eXBlLCBfb25jZVdyYXAodGhpcywgdHlwZSwgbGlzdGVuZXIpKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnByZXBlbmRPbmNlTGlzdGVuZXIgPVxuICAgIGZ1bmN0aW9uIHByZXBlbmRPbmNlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpO1xuICAgICAgdGhpcy5wcmVwZW5kTGlzdGVuZXIodHlwZSwgX29uY2VXcmFwKHRoaXMsIHR5cGUsIGxpc3RlbmVyKSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG4vLyBFbWl0cyBhICdyZW1vdmVMaXN0ZW5lcicgZXZlbnQgaWYgYW5kIG9ubHkgaWYgdGhlIGxpc3RlbmVyIHdhcyByZW1vdmVkLlxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lciA9XG4gICAgZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIHZhciBsaXN0LCBldmVudHMsIHBvc2l0aW9uLCBpLCBvcmlnaW5hbExpc3RlbmVyO1xuXG4gICAgICBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKTtcblxuICAgICAgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuICAgICAgaWYgKGV2ZW50cyA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgbGlzdCA9IGV2ZW50c1t0eXBlXTtcbiAgICAgIGlmIChsaXN0ID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICBpZiAobGlzdCA9PT0gbGlzdGVuZXIgfHwgbGlzdC5saXN0ZW5lciA9PT0gbGlzdGVuZXIpIHtcbiAgICAgICAgaWYgKC0tdGhpcy5fZXZlbnRzQ291bnQgPT09IDApXG4gICAgICAgICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIGV2ZW50c1t0eXBlXTtcbiAgICAgICAgICBpZiAoZXZlbnRzLnJlbW92ZUxpc3RlbmVyKVxuICAgICAgICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIGxpc3QubGlzdGVuZXIgfHwgbGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBsaXN0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHBvc2l0aW9uID0gLTE7XG5cbiAgICAgICAgZm9yIChpID0gbGlzdC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIGlmIChsaXN0W2ldID09PSBsaXN0ZW5lciB8fCBsaXN0W2ldLmxpc3RlbmVyID09PSBsaXN0ZW5lcikge1xuICAgICAgICAgICAgb3JpZ2luYWxMaXN0ZW5lciA9IGxpc3RbaV0ubGlzdGVuZXI7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IGk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocG9zaXRpb24gPCAwKVxuICAgICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICAgIGlmIChwb3NpdGlvbiA9PT0gMClcbiAgICAgICAgICBsaXN0LnNoaWZ0KCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHNwbGljZU9uZShsaXN0LCBwb3NpdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGlzdC5sZW5ndGggPT09IDEpXG4gICAgICAgICAgZXZlbnRzW3R5cGVdID0gbGlzdFswXTtcblxuICAgICAgICBpZiAoZXZlbnRzLnJlbW92ZUxpc3RlbmVyICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIG9yaWdpbmFsTGlzdGVuZXIgfHwgbGlzdGVuZXIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9mZiA9IEV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzID1cbiAgICBmdW5jdGlvbiByZW1vdmVBbGxMaXN0ZW5lcnModHlwZSkge1xuICAgICAgdmFyIGxpc3RlbmVycywgZXZlbnRzLCBpO1xuXG4gICAgICBldmVudHMgPSB0aGlzLl9ldmVudHM7XG4gICAgICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICAvLyBub3QgbGlzdGVuaW5nIGZvciByZW1vdmVMaXN0ZW5lciwgbm8gbmVlZCB0byBlbWl0XG4gICAgICBpZiAoZXZlbnRzLnJlbW92ZUxpc3RlbmVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIHRoaXMuX2V2ZW50c0NvdW50ID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudHNbdHlwZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmICgtLXRoaXMuX2V2ZW50c0NvdW50ID09PSAwKVxuICAgICAgICAgICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBkZWxldGUgZXZlbnRzW3R5cGVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICAvLyBlbWl0IHJlbW92ZUxpc3RlbmVyIGZvciBhbGwgbGlzdGVuZXJzIG9uIGFsbCBldmVudHNcbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZXZlbnRzKTtcbiAgICAgICAgdmFyIGtleTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgICAgIGlmIChrZXkgPT09ICdyZW1vdmVMaXN0ZW5lcicpIGNvbnRpbnVlO1xuICAgICAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ3JlbW92ZUxpc3RlbmVyJyk7XG4gICAgICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIHRoaXMuX2V2ZW50c0NvdW50ID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIGxpc3RlbmVycyA9IGV2ZW50c1t0eXBlXTtcblxuICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnMpO1xuICAgICAgfSBlbHNlIGlmIChsaXN0ZW5lcnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBMSUZPIG9yZGVyXG4gICAgICAgIGZvciAoaSA9IGxpc3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG5mdW5jdGlvbiBfbGlzdGVuZXJzKHRhcmdldCwgdHlwZSwgdW53cmFwKSB7XG4gIHZhciBldmVudHMgPSB0YXJnZXQuX2V2ZW50cztcblxuICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIFtdO1xuXG4gIHZhciBldmxpc3RlbmVyID0gZXZlbnRzW3R5cGVdO1xuICBpZiAoZXZsaXN0ZW5lciA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBbXTtcblxuICBpZiAodHlwZW9mIGV2bGlzdGVuZXIgPT09ICdmdW5jdGlvbicpXG4gICAgcmV0dXJuIHVud3JhcCA/IFtldmxpc3RlbmVyLmxpc3RlbmVyIHx8IGV2bGlzdGVuZXJdIDogW2V2bGlzdGVuZXJdO1xuXG4gIHJldHVybiB1bndyYXAgP1xuICAgIHVud3JhcExpc3RlbmVycyhldmxpc3RlbmVyKSA6IGFycmF5Q2xvbmUoZXZsaXN0ZW5lciwgZXZsaXN0ZW5lci5sZW5ndGgpO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVycyA9IGZ1bmN0aW9uIGxpc3RlbmVycyh0eXBlKSB7XG4gIHJldHVybiBfbGlzdGVuZXJzKHRoaXMsIHR5cGUsIHRydWUpO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yYXdMaXN0ZW5lcnMgPSBmdW5jdGlvbiByYXdMaXN0ZW5lcnModHlwZSkge1xuICByZXR1cm4gX2xpc3RlbmVycyh0aGlzLCB0eXBlLCBmYWxzZSk7XG59O1xuXG5FdmVudEVtaXR0ZXIubGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uKGVtaXR0ZXIsIHR5cGUpIHtcbiAgaWYgKHR5cGVvZiBlbWl0dGVyLmxpc3RlbmVyQ291bnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZW1pdHRlci5saXN0ZW5lckNvdW50KHR5cGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsaXN0ZW5lckNvdW50LmNhbGwoZW1pdHRlciwgdHlwZSk7XG4gIH1cbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJDb3VudCA9IGxpc3RlbmVyQ291bnQ7XG5mdW5jdGlvbiBsaXN0ZW5lckNvdW50KHR5cGUpIHtcbiAgdmFyIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcblxuICBpZiAoZXZlbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YXIgZXZsaXN0ZW5lciA9IGV2ZW50c1t0eXBlXTtcblxuICAgIGlmICh0eXBlb2YgZXZsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIGlmIChldmxpc3RlbmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBldmxpc3RlbmVyLmxlbmd0aDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gMDtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5ldmVudE5hbWVzID0gZnVuY3Rpb24gZXZlbnROYW1lcygpIHtcbiAgcmV0dXJuIHRoaXMuX2V2ZW50c0NvdW50ID4gMCA/IFJlZmxlY3RPd25LZXlzKHRoaXMuX2V2ZW50cykgOiBbXTtcbn07XG5cbmZ1bmN0aW9uIGFycmF5Q2xvbmUoYXJyLCBuKSB7XG4gIHZhciBjb3B5ID0gbmV3IEFycmF5KG4pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSlcbiAgICBjb3B5W2ldID0gYXJyW2ldO1xuICByZXR1cm4gY29weTtcbn1cblxuZnVuY3Rpb24gc3BsaWNlT25lKGxpc3QsIGluZGV4KSB7XG4gIGZvciAoOyBpbmRleCArIDEgPCBsaXN0Lmxlbmd0aDsgaW5kZXgrKylcbiAgICBsaXN0W2luZGV4XSA9IGxpc3RbaW5kZXggKyAxXTtcbiAgbGlzdC5wb3AoKTtcbn1cblxuZnVuY3Rpb24gdW53cmFwTGlzdGVuZXJzKGFycikge1xuICB2YXIgcmV0ID0gbmV3IEFycmF5KGFyci5sZW5ndGgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHJldC5sZW5ndGg7ICsraSkge1xuICAgIHJldFtpXSA9IGFycltpXS5saXN0ZW5lciB8fCBhcnJbaV07XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gb25jZShlbWl0dGVyLCBuYW1lKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZnVuY3Rpb24gZXJyb3JMaXN0ZW5lcihlcnIpIHtcbiAgICAgIGVtaXR0ZXIucmVtb3ZlTGlzdGVuZXIobmFtZSwgcmVzb2x2ZXIpO1xuICAgICAgcmVqZWN0KGVycik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVzb2x2ZXIoKSB7XG4gICAgICBpZiAodHlwZW9mIGVtaXR0ZXIucmVtb3ZlTGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgZW1pdHRlci5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBlcnJvckxpc3RlbmVyKTtcbiAgICAgIH1cbiAgICAgIHJlc29sdmUoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKTtcbiAgICB9O1xuXG4gICAgZXZlbnRUYXJnZXRBZ25vc3RpY0FkZExpc3RlbmVyKGVtaXR0ZXIsIG5hbWUsIHJlc29sdmVyLCB7IG9uY2U6IHRydWUgfSk7XG4gICAgaWYgKG5hbWUgIT09ICdlcnJvcicpIHtcbiAgICAgIGFkZEVycm9ySGFuZGxlcklmRXZlbnRFbWl0dGVyKGVtaXR0ZXIsIGVycm9yTGlzdGVuZXIsIHsgb25jZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRFcnJvckhhbmRsZXJJZkV2ZW50RW1pdHRlcihlbWl0dGVyLCBoYW5kbGVyLCBmbGFncykge1xuICBpZiAodHlwZW9mIGVtaXR0ZXIub24gPT09ICdmdW5jdGlvbicpIHtcbiAgICBldmVudFRhcmdldEFnbm9zdGljQWRkTGlzdGVuZXIoZW1pdHRlciwgJ2Vycm9yJywgaGFuZGxlciwgZmxhZ3MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGV2ZW50VGFyZ2V0QWdub3N0aWNBZGRMaXN0ZW5lcihlbWl0dGVyLCBuYW1lLCBsaXN0ZW5lciwgZmxhZ3MpIHtcbiAgaWYgKHR5cGVvZiBlbWl0dGVyLm9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKGZsYWdzLm9uY2UpIHtcbiAgICAgIGVtaXR0ZXIub25jZShuYW1lLCBsaXN0ZW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVtaXR0ZXIub24obmFtZSwgbGlzdGVuZXIpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgZW1pdHRlci5hZGRFdmVudExpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gRXZlbnRUYXJnZXQgZG9lcyBub3QgaGF2ZSBgZXJyb3JgIGV2ZW50IHNlbWFudGljcyBsaWtlIE5vZGVcbiAgICAvLyBFdmVudEVtaXR0ZXJzLCB3ZSBkbyBub3QgbGlzdGVuIGZvciBgZXJyb3JgIGV2ZW50cyBoZXJlLlxuICAgIGVtaXR0ZXIuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBmdW5jdGlvbiB3cmFwTGlzdGVuZXIoYXJnKSB7XG4gICAgICAvLyBJRSBkb2VzIG5vdCBoYXZlIGJ1aWx0aW4gYHsgb25jZTogdHJ1ZSB9YCBzdXBwb3J0IHNvIHdlXG4gICAgICAvLyBoYXZlIHRvIGRvIGl0IG1hbnVhbGx5LlxuICAgICAgaWYgKGZsYWdzLm9uY2UpIHtcbiAgICAgICAgZW1pdHRlci5yZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIHdyYXBMaXN0ZW5lcik7XG4gICAgICB9XG4gICAgICBsaXN0ZW5lcihhcmcpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImVtaXR0ZXJcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRXZlbnRFbWl0dGVyLiBSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2YgZW1pdHRlcik7XG4gIH1cbn1cbiIsICIvKipcbiAqIE9ibGl0ZXJhdG9yIEl0ZXJhdG9yIENsYXNzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqXG4gKiBTaW1wbGUgY2xhc3MgcmVwcmVzZW50aW5nIHRoZSBsaWJyYXJ5J3MgaXRlcmF0b3JzLlxuICovXG5cbi8qKlxuICogSXRlcmF0b3IgY2xhc3MuXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBuZXh0IC0gTmV4dCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gSXRlcmF0b3IobmV4dCkge1xuICBpZiAodHlwZW9mIG5leHQgIT09ICdmdW5jdGlvbicpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdvYmxpdGVyYXRvci9pdGVyYXRvcjogZXhwZWN0aW5nIGEgZnVuY3Rpb24hJyk7XG5cbiAgdGhpcy5uZXh0ID0gbmV4dDtcbn1cblxuLyoqXG4gKiBJZiBzeW1ib2xzIGFyZSBzdXBwb3J0ZWQsIHdlIGFkZCBgbmV4dGAgdG8gYFN5bWJvbC5pdGVyYXRvcmAuXG4gKi9cbmlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJylcbiAgSXRlcmF0b3IucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbi8qKlxuICogUmV0dXJuaW5nIGFuIGl0ZXJhdG9yIG9mIHRoZSBnaXZlbiB2YWx1ZXMuXG4gKlxuICogQHBhcmFtICB7YW55Li4ufSB2YWx1ZXMgLSBWYWx1ZXMuXG4gKiBAcmV0dXJuIHtJdGVyYXRvcn1cbiAqL1xuSXRlcmF0b3Iub2YgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgIGwgPSBhcmdzLmxlbmd0aCxcbiAgICBpID0gMDtcblxuICByZXR1cm4gbmV3IEl0ZXJhdG9yKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoaSA+PSBsKSByZXR1cm4ge2RvbmU6IHRydWV9O1xuXG4gICAgcmV0dXJuIHtkb25lOiBmYWxzZSwgdmFsdWU6IGFyZ3NbaSsrXX07XG4gIH0pO1xufTtcblxuLyoqXG4gKiBSZXR1cm5pbmcgYW4gZW1wdHkgaXRlcmF0b3IuXG4gKlxuICogQHJldHVybiB7SXRlcmF0b3J9XG4gKi9cbkl0ZXJhdG9yLmVtcHR5ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaXRlcmF0b3IgPSBuZXcgSXRlcmF0b3IoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7ZG9uZTogdHJ1ZX07XG4gIH0pO1xuXG4gIHJldHVybiBpdGVyYXRvcjtcbn07XG5cbi8qKlxuICogUmV0dXJuaW5nIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGdpdmVuIGluZGV4ZWQgc2VxdWVuY2UuXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfEFycmF5fSBzZXF1ZW5jZSAtIFRhcmdldCBzZXF1ZW5jZS5cbiAqIEByZXR1cm4ge0l0ZXJhdG9yfVxuICovXG5JdGVyYXRvci5mcm9tU2VxdWVuY2UgPSBmdW5jdGlvbiAoc2VxdWVuY2UpIHtcbiAgdmFyIGkgPSAwLFxuICAgIGwgPSBzZXF1ZW5jZS5sZW5ndGg7XG5cbiAgcmV0dXJuIG5ldyBJdGVyYXRvcihmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGkgPj0gbCkgcmV0dXJuIHtkb25lOiB0cnVlfTtcblxuICAgIHJldHVybiB7ZG9uZTogZmFsc2UsIHZhbHVlOiBzZXF1ZW5jZVtpKytdfTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIFJldHVybmluZyB3aGV0aGVyIHRoZSBnaXZlbiB2YWx1ZSBpcyBhbiBpdGVyYXRvci5cbiAqXG4gKiBAcGFyYW0gIHthbnl9IHZhbHVlIC0gVmFsdWUuXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5JdGVyYXRvci5pcyA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBJdGVyYXRvcikgcmV0dXJuIHRydWU7XG5cbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICB0eXBlb2YgdmFsdWUubmV4dCA9PT0gJ2Z1bmN0aW9uJ1xuICApO1xufTtcblxuLyoqXG4gKiBFeHBvcnRpbmcuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gSXRlcmF0b3I7XG4iLCAiZXhwb3J0cy5BUlJBWV9CVUZGRVJfU1VQUE9SVCA9IHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCc7XG5leHBvcnRzLlNZTUJPTF9TVVBQT1JUID0gdHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCc7XG4iLCAiLyoqXG4gKiBPYmxpdGVyYXRvciBJdGVyIEZ1bmN0aW9uXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIEZ1bmN0aW9uIGNvZXJjaW5nIHZhbHVlcyB0byBhbiBpdGVyYXRvci4gSXQgY2FuIGJlIHF1aXRlIHVzZWZ1bCB3aGVuIG5lZWRpbmdcbiAqIHRvIGhhbmRsZSBpdGVyYWJsZXMgYW5kIGl0ZXJhdG9ycyB0aGUgc2FtZSB3YXkuXG4gKi9cbnZhciBJdGVyYXRvciA9IHJlcXVpcmUoJy4vaXRlcmF0b3IuanMnKTtcbnZhciBzdXBwb3J0ID0gcmVxdWlyZSgnLi9zdXBwb3J0LmpzJyk7XG5cbnZhciBBUlJBWV9CVUZGRVJfU1VQUE9SVCA9IHN1cHBvcnQuQVJSQVlfQlVGRkVSX1NVUFBPUlQ7XG52YXIgU1lNQk9MX1NVUFBPUlQgPSBzdXBwb3J0LlNZTUJPTF9TVVBQT1JUO1xuXG5mdW5jdGlvbiBpdGVyT3JOdWxsKHRhcmdldCkge1xuICAvLyBJbmRleGVkIHNlcXVlbmNlXG4gIGlmIChcbiAgICB0eXBlb2YgdGFyZ2V0ID09PSAnc3RyaW5nJyB8fFxuICAgIEFycmF5LmlzQXJyYXkodGFyZ2V0KSB8fFxuICAgIChBUlJBWV9CVUZGRVJfU1VQUE9SVCAmJiBBcnJheUJ1ZmZlci5pc1ZpZXcodGFyZ2V0KSlcbiAgKVxuICAgIHJldHVybiBJdGVyYXRvci5mcm9tU2VxdWVuY2UodGFyZ2V0KTtcblxuICAvLyBJbnZhbGlkIHZhbHVlXG4gIGlmICh0eXBlb2YgdGFyZ2V0ICE9PSAnb2JqZWN0JyB8fCB0YXJnZXQgPT09IG51bGwpIHJldHVybiBudWxsO1xuXG4gIC8vIEl0ZXJhYmxlXG4gIGlmIChTWU1CT0xfU1VQUE9SVCAmJiB0eXBlb2YgdGFyZ2V0W1N5bWJvbC5pdGVyYXRvcl0gPT09ICdmdW5jdGlvbicpXG4gICAgcmV0dXJuIHRhcmdldFtTeW1ib2wuaXRlcmF0b3JdKCk7XG5cbiAgLy8gSXRlcmF0b3IgZHVjay10eXBpbmdcbiAgaWYgKHR5cGVvZiB0YXJnZXQubmV4dCA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIHRhcmdldDtcblxuICAvLyBJbnZhbGlkIG9iamVjdFxuICByZXR1cm4gbnVsbDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpdGVyKHRhcmdldCkge1xuICB2YXIgaXRlcmF0b3IgPSBpdGVyT3JOdWxsKHRhcmdldCk7XG5cbiAgaWYgKCFpdGVyYXRvcilcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnb2JsaXRlcmF0b3I6IHRhcmdldCBpcyBub3QgaXRlcmFibGUgbm9yIGEgdmFsaWQgaXRlcmF0b3IuJ1xuICAgICk7XG5cbiAgcmV0dXJuIGl0ZXJhdG9yO1xufTtcbiIsICIvKiBlc2xpbnQgbm8tY29uc3RhbnQtY29uZGl0aW9uOiAwICovXG4vKipcbiAqIE9ibGl0ZXJhdG9yIFRha2UgRnVuY3Rpb25cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKlxuICogRnVuY3Rpb24gdGFraW5nIG4gb3IgZXZlcnkgdmFsdWUgb2YgdGhlIGdpdmVuIGl0ZXJhdG9yIGFuZCByZXR1cm5zIHRoZW1cbiAqIGludG8gYW4gYXJyYXkuXG4gKi9cbnZhciBpdGVyID0gcmVxdWlyZSgnLi9pdGVyLmpzJyk7XG5cbi8qKlxuICogVGFrZS5cbiAqXG4gKiBAcGFyYW0gIHtJdGVyYWJsZX0gaXRlcmFibGUgLSBUYXJnZXQgaXRlcmFibGUuXG4gKiBAcGFyYW0gIHtudW1iZXJ9ICAgW25dICAgICAgLSBPcHRpb25hbCBudW1iZXIgb2YgaXRlbXMgdG8gdGFrZS5cbiAqIEByZXR1cm4ge2FycmF5fVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRha2UoaXRlcmFibGUsIG4pIHtcbiAgdmFyIGwgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IG4gOiBJbmZpbml0eSxcbiAgICBhcnJheSA9IGwgIT09IEluZmluaXR5ID8gbmV3IEFycmF5KGwpIDogW10sXG4gICAgc3RlcCxcbiAgICBpID0gMDtcblxuICB2YXIgaXRlcmF0b3IgPSBpdGVyKGl0ZXJhYmxlKTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChpID09PSBsKSByZXR1cm4gYXJyYXk7XG5cbiAgICBzdGVwID0gaXRlcmF0b3IubmV4dCgpO1xuXG4gICAgaWYgKHN0ZXAuZG9uZSkge1xuICAgICAgaWYgKGkgIT09IG4pIGFycmF5Lmxlbmd0aCA9IGk7XG5cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICBhcnJheVtpKytdID0gc3RlcC52YWx1ZTtcbiAgfVxufTtcbiIsICIvKipcbiAqIEdyYXBob2xvZ3kgQ3VzdG9tIEVycm9yc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIERlZmluaW5nIGN1c3RvbSBlcnJvcnMgZm9yIGVhc2Ugb2YgdXNlICYgZWFzeSB1bml0IHRlc3RzIGFjcm9zc1xuICogaW1wbGVtZW50YXRpb25zIChub3JtYWxpemVkIHR5cG9sb2d5IHJhdGhlciB0aGFuIHJlbHlpbmcgb24gZXJyb3JcbiAqIG1lc3NhZ2VzIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGNvcnJlY3QgZXJyb3Igd2FzIGZvdW5kKS5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2UpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9ICdHcmFwaEVycm9yJztcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvciBleHRlbmRzIEdyYXBoRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ0ludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yJztcblxuICAgIC8vIFRoaXMgaXMgVjggc3BlY2lmaWMgdG8gZW5oYW5jZSBzdGFjayByZWFkYWJpbGl0eVxuICAgIGlmICh0eXBlb2YgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UgPT09ICdmdW5jdGlvbicpXG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yXG4gICAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RGb3VuZEdyYXBoRXJyb3IgZXh0ZW5kcyBHcmFwaEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdOb3RGb3VuZEdyYXBoRXJyb3InO1xuXG4gICAgLy8gVGhpcyBpcyBWOCBzcGVjaWZpYyB0byBlbmhhbmNlIHN0YWNrIHJlYWRhYmlsaXR5XG4gICAgaWYgKHR5cGVvZiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIE5vdEZvdW5kR3JhcGhFcnJvci5wcm90b3R5cGUuY29uc3RydWN0b3IpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVc2FnZUdyYXBoRXJyb3IgZXh0ZW5kcyBHcmFwaEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdVc2FnZUdyYXBoRXJyb3InO1xuXG4gICAgLy8gVGhpcyBpcyBWOCBzcGVjaWZpYyB0byBlbmhhbmNlIHN0YWNrIHJlYWRhYmlsaXR5XG4gICAgaWYgKHR5cGVvZiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIFVzYWdlR3JhcGhFcnJvci5wcm90b3R5cGUuY29uc3RydWN0b3IpO1xuICB9XG59XG4iLCAiLyoqXG4gKiBHcmFwaG9sb2d5IEludGVybmFsIERhdGEgQ2xhc3Nlc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKlxuICogSW50ZXJuYWwgY2xhc3NlcyBob3BlZnVsbHkgcmVkdWNlZCB0byBzdHJ1Y3RzIGJ5IGVuZ2luZXMgJiBzdG9yaW5nXG4gKiBuZWNlc3NhcnkgaW5mb3JtYXRpb24gZm9yIG5vZGVzICYgZWRnZXMuXG4gKlxuICogTm90ZSB0aGF0IHRob3NlIGNsYXNzZXMgZG9uJ3QgcmVseSBvbiB0aGUgYGNsYXNzYCBrZXl3b3JkIHRvIGF2b2lkIHNvbWVcbiAqIGNydWZ0IGludHJvZHVjZWQgYnkgbW9zdCBvZiBFUzIwMTUgdHJhbnNwaWxlcnMuXG4gKi9cblxuLyoqXG4gKiBNaXhlZE5vZGVEYXRhIGNsYXNzLlxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyAgICAgLSBUaGUgbm9kZSdzIGtleS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBhdHRyaWJ1dGVzIC0gTm9kZSdzIGF0dHJpYnV0ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBNaXhlZE5vZGVEYXRhKGtleSwgYXR0cmlidXRlcykge1xuICAvLyBBdHRyaWJ1dGVzXG4gIHRoaXMua2V5ID0ga2V5O1xuICB0aGlzLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuXG4gIHRoaXMuY2xlYXIoKTtcbn1cblxuTWl4ZWROb2RlRGF0YS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIERlZ3JlZXNcbiAgdGhpcy5pbkRlZ3JlZSA9IDA7XG4gIHRoaXMub3V0RGVncmVlID0gMDtcbiAgdGhpcy51bmRpcmVjdGVkRGVncmVlID0gMDtcbiAgdGhpcy5kaXJlY3RlZFNlbGZMb29wcyA9IDA7XG4gIHRoaXMudW5kaXJlY3RlZFNlbGZMb29wcyA9IDA7XG5cbiAgLy8gSW5kaWNlc1xuICB0aGlzLmluID0ge307XG4gIHRoaXMub3V0ID0ge307XG4gIHRoaXMudW5kaXJlY3RlZCA9IHt9O1xufTtcblxuLyoqXG4gKiBEaXJlY3RlZE5vZGVEYXRhIGNsYXNzLlxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyAgICAgLSBUaGUgbm9kZSdzIGtleS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBhdHRyaWJ1dGVzIC0gTm9kZSdzIGF0dHJpYnV0ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBEaXJlY3RlZE5vZGVEYXRhKGtleSwgYXR0cmlidXRlcykge1xuICAvLyBBdHRyaWJ1dGVzXG4gIHRoaXMua2V5ID0ga2V5O1xuICB0aGlzLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuXG4gIHRoaXMuY2xlYXIoKTtcbn1cblxuRGlyZWN0ZWROb2RlRGF0YS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIERlZ3JlZXNcbiAgdGhpcy5pbkRlZ3JlZSA9IDA7XG4gIHRoaXMub3V0RGVncmVlID0gMDtcbiAgdGhpcy5kaXJlY3RlZFNlbGZMb29wcyA9IDA7XG5cbiAgLy8gSW5kaWNlc1xuICB0aGlzLmluID0ge307XG4gIHRoaXMub3V0ID0ge307XG59O1xuXG5EaXJlY3RlZE5vZGVEYXRhLnByb3RvdHlwZS51cGdyYWRlVG9NaXhlZCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gRGVncmVlc1xuICB0aGlzLnVuZGlyZWN0ZWREZWdyZWUgPSAwO1xuICB0aGlzLnVuZGlyZWN0ZWRTZWxmTG9vcHMgPSAwO1xuXG4gIC8vIEluZGljZXNcbiAgdGhpcy51bmRpcmVjdGVkID0ge307XG59O1xuXG4vKipcbiAqIFVuZGlyZWN0ZWROb2RlRGF0YSBjbGFzcy5cbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgICAgIC0gVGhlIG5vZGUncyBrZXkuXG4gKiBAcGFyYW0ge29iamVjdH0gYXR0cmlidXRlcyAtIE5vZGUncyBhdHRyaWJ1dGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gVW5kaXJlY3RlZE5vZGVEYXRhKGtleSwgYXR0cmlidXRlcykge1xuICAvLyBBdHRyaWJ1dGVzXG4gIHRoaXMua2V5ID0ga2V5O1xuICB0aGlzLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuXG4gIHRoaXMuY2xlYXIoKTtcbn1cblxuVW5kaXJlY3RlZE5vZGVEYXRhLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gRGVncmVlc1xuICB0aGlzLnVuZGlyZWN0ZWREZWdyZWUgPSAwO1xuICB0aGlzLnVuZGlyZWN0ZWRTZWxmTG9vcHMgPSAwO1xuXG4gIC8vIEluZGljZXNcbiAgdGhpcy51bmRpcmVjdGVkID0ge307XG59O1xuXG5VbmRpcmVjdGVkTm9kZURhdGEucHJvdG90eXBlLnVwZ3JhZGVUb01peGVkID0gZnVuY3Rpb24gKCkge1xuICAvLyBEZWdyZWVzXG4gIHRoaXMuaW5EZWdyZWUgPSAwO1xuICB0aGlzLm91dERlZ3JlZSA9IDA7XG4gIHRoaXMuZGlyZWN0ZWRTZWxmTG9vcHMgPSAwO1xuXG4gIC8vIEluZGljZXNcbiAgdGhpcy5pbiA9IHt9O1xuICB0aGlzLm91dCA9IHt9O1xufTtcblxuLyoqXG4gKiBFZGdlRGF0YSBjbGFzcy5cbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gdW5kaXJlY3RlZCAgIC0gV2hldGhlciB0aGUgZWRnZSBpcyB1bmRpcmVjdGVkLlxuICogQHBhcmFtIHtzdHJpbmd9ICBzdHJpbmcgICAgICAgLSBUaGUgZWRnZSdzIGtleS5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgc291cmNlICAgICAgIC0gU291cmNlIG9mIHRoZSBlZGdlLlxuICogQHBhcmFtIHtzdHJpbmd9ICB0YXJnZXQgICAgICAgLSBUYXJnZXQgb2YgdGhlIGVkZ2UuXG4gKiBAcGFyYW0ge29iamVjdH0gIGF0dHJpYnV0ZXMgICAtIEVkZ2UncyBhdHRyaWJ1dGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRWRnZURhdGEodW5kaXJlY3RlZCwga2V5LCBzb3VyY2UsIHRhcmdldCwgYXR0cmlidXRlcykge1xuICAvLyBBdHRyaWJ1dGVzXG4gIHRoaXMua2V5ID0ga2V5O1xuICB0aGlzLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuICB0aGlzLnVuZGlyZWN0ZWQgPSB1bmRpcmVjdGVkO1xuXG4gIC8vIEV4dHJlbWl0aWVzXG4gIHRoaXMuc291cmNlID0gc291cmNlO1xuICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbn1cbiIsICIvKipcbiAqIEdyYXBob2xvZ3kgSW5kZXhlcyBGdW5jdGlvbnNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKlxuICogQnVuY2ggb2YgZnVuY3Rpb25zIHVzZWQgdG8gY29tcHV0ZSBvciBjbGVhciBpbmRleGVzLlxuICovXG5cbi8qKlxuICogRnVuY3Rpb24gdXBkYXRpbmcgdGhlICdzdHJ1Y3R1cmUnIGluZGV4IHdpdGggdGhlIGdpdmVuIGVkZ2UncyBkYXRhLlxuICogTm90ZSB0aGF0IGluIHRoZSBjYXNlIG9mIHRoZSBtdWx0aSBncmFwaCwgcmVsYXRlZCBlZGdlcyBhcmUgc3RvcmVkIGluIGFcbiAqIHNldCB0aGF0IGlzIHRoZSBzYW1lIGZvciBBIC0+IEIgJiBCIDwtIEEuXG4gKlxuICogQHBhcmFtIHtHcmFwaH0gICAgZ3JhcGggICAgICAtIFRhcmdldCBHcmFwaCBpbnN0YW5jZS5cbiAqIEBwYXJhbSB7RWRnZURhdGF9IGVkZ2VEYXRhICAgLSBBZGRlZCBlZGdlJ3MgZGF0YS5cbiAqIEBwYXJhbSB7Tm9kZURhdGF9IHNvdXJjZURhdGEgLSBTb3VyY2Ugbm9kZSdzIGRhdGEuXG4gKiBAcGFyYW0ge05vZGVEYXRhfSB0YXJnZXREYXRhIC0gVGFyZ2V0IG5vZGUncyBkYXRhLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3RydWN0dXJlSW5kZXgoXG4gIGdyYXBoLFxuICB1bmRpcmVjdGVkLFxuICBlZGdlRGF0YSxcbiAgc291cmNlLFxuICB0YXJnZXQsXG4gIHNvdXJjZURhdGEsXG4gIHRhcmdldERhdGFcbikge1xuICBjb25zdCBtdWx0aSA9IGdyYXBoLm11bHRpO1xuXG4gIGxldCBvdXRLZXkgPSAnb3V0JztcbiAgbGV0IGluS2V5ID0gJ2luJztcblxuICBpZiAodW5kaXJlY3RlZCkgb3V0S2V5ID0gaW5LZXkgPSAndW5kaXJlY3RlZCc7XG5cbiAgbGV0IGFkaiwgY29udGFpbmVyO1xuXG4gIGlmIChtdWx0aSkge1xuICAgIC8vIEhhbmRsaW5nIHNvdXJjZVxuICAgIGFkaiA9IHNvdXJjZURhdGFbb3V0S2V5XTtcbiAgICBjb250YWluZXIgPSBhZGpbdGFyZ2V0XTtcblxuICAgIGlmICh0eXBlb2YgY29udGFpbmVyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgY29udGFpbmVyID0gbmV3IFNldCgpO1xuICAgICAgYWRqW3RhcmdldF0gPSBjb250YWluZXI7XG4gICAgfVxuXG4gICAgY29udGFpbmVyLmFkZChlZGdlRGF0YSk7XG5cbiAgICAvLyBJZiBzZWxmTG9vcCwgd2UgYnJlYWsgaGVyZVxuICAgIGlmIChzb3VyY2UgPT09IHRhcmdldCAmJiB1bmRpcmVjdGVkKSByZXR1cm47XG5cbiAgICAvLyBIYW5kbGluZyB0YXJnZXQgKHdlIHdvbid0IGFkZCB0aGUgZWRnZSBiZWNhdXNlIGl0IHdhcyBhbHJlYWR5IHRha2VuXG4gICAgLy8gY2FyZSBvZiB3aXRoIHNvdXJjZSBhYm92ZSlcbiAgICBhZGogPSB0YXJnZXREYXRhW2luS2V5XTtcbiAgICBpZiAodHlwZW9mIGFkaltzb3VyY2VdID09PSAndW5kZWZpbmVkJykgYWRqW3NvdXJjZV0gPSBjb250YWluZXI7XG4gIH0gZWxzZSB7XG4gICAgLy8gSGFuZGxpbmcgc291cmNlXG4gICAgc291cmNlRGF0YVtvdXRLZXldW3RhcmdldF0gPSBlZGdlRGF0YTtcblxuICAgIC8vIElmIHNlbGZMb29wLCB3ZSBicmVhayBoZXJlXG4gICAgaWYgKHNvdXJjZSA9PT0gdGFyZ2V0ICYmIHVuZGlyZWN0ZWQpIHJldHVybjtcblxuICAgIC8vIEhhbmRsaW5nIHRhcmdldFxuICAgIHRhcmdldERhdGFbaW5LZXldW3NvdXJjZV0gPSBlZGdlRGF0YTtcbiAgfVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGNsZWFyaW5nIHRoZSAnc3RydWN0dXJlJyBpbmRleCBkYXRhIHJlbGF0ZWQgdG8gdGhlIGdpdmVuIGVkZ2UuXG4gKlxuICogQHBhcmFtIHtHcmFwaH0gICAgZ3JhcGggICAgLSBUYXJnZXQgR3JhcGggaW5zdGFuY2UuXG4gKiBAcGFyYW0ge0VkZ2VEYXRhfSBlZGdlRGF0YSAtIERyb3BwZWQgZWRnZSdzIGRhdGEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckVkZ2VGcm9tU3RydWN0dXJlSW5kZXgoZ3JhcGgsIHVuZGlyZWN0ZWQsIGVkZ2VEYXRhKSB7XG4gIGNvbnN0IG11bHRpID0gZ3JhcGgubXVsdGk7XG5cbiAgY29uc3Qge3NvdXJjZTogc291cmNlRGF0YSwgdGFyZ2V0OiB0YXJnZXREYXRhfSA9IGVkZ2VEYXRhO1xuXG4gIGNvbnN0IHNvdXJjZSA9IHNvdXJjZURhdGEua2V5LFxuICAgIHRhcmdldCA9IHRhcmdldERhdGEua2V5O1xuXG4gIC8vIE5PVEU6IHNpbmNlIHRoZSBlZGdlIHNldCBpcyB0aGUgc2FtZSBmb3Igc291cmNlICYgdGFyZ2V0LCB3ZSBjYW4gb25seVxuICAvLyBhZmZlY3Qgc291cmNlXG4gIGNvbnN0IG91dEtleSA9IHVuZGlyZWN0ZWQgPyAndW5kaXJlY3RlZCcgOiAnb3V0JyxcbiAgICBzb3VyY2VJbmRleCA9IHNvdXJjZURhdGFbb3V0S2V5XTtcblxuICBjb25zdCBpbktleSA9IHVuZGlyZWN0ZWQgPyAndW5kaXJlY3RlZCcgOiAnaW4nO1xuXG4gIGlmICh0YXJnZXQgaW4gc291cmNlSW5kZXgpIHtcbiAgICBpZiAobXVsdGkpIHtcbiAgICAgIGNvbnN0IHNldCA9IHNvdXJjZUluZGV4W3RhcmdldF07XG5cbiAgICAgIGlmIChzZXQuc2l6ZSA9PT0gMSkge1xuICAgICAgICBkZWxldGUgc291cmNlSW5kZXhbdGFyZ2V0XTtcbiAgICAgICAgZGVsZXRlIHRhcmdldERhdGFbaW5LZXldW3NvdXJjZV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXQuZGVsZXRlKGVkZ2VEYXRhKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgZGVsZXRlIHNvdXJjZUluZGV4W3RhcmdldF07XG4gIH1cblxuICBpZiAobXVsdGkpIHJldHVybjtcblxuICBjb25zdCB0YXJnZXRJbmRleCA9IHRhcmdldERhdGFbaW5LZXldO1xuXG4gIGRlbGV0ZSB0YXJnZXRJbmRleFtzb3VyY2VdO1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGNsZWFyaW5nIHRoZSB3aG9sZSAnc3RydWN0dXJlJyBpbmRleC5cbiAqXG4gKiBAcGFyYW0ge0dyYXBofSBncmFwaCAtIFRhcmdldCBHcmFwaCBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyU3RydWN0dXJlSW5kZXgoZ3JhcGgpIHtcbiAgY29uc3QgaXRlcmF0b3IgPSBncmFwaC5fbm9kZXMudmFsdWVzKCk7XG5cbiAgbGV0IHN0ZXA7XG5cbiAgd2hpbGUgKCgoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSksIHN0ZXAuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICBzdGVwLnZhbHVlLmNsZWFyKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBGdW5jdGlvbiB1c2VkIHRvIHVwZ3JhZGUgYSBzaW1wbGUgYHN0cnVjdHVyZWAgaW5kZXggdG8gYSBtdWx0aSBvbi5cbiAqXG4gKiBAcGFyYW0ge0dyYXBofSAgZ3JhcGggLSBUYXJnZXQgR3JhcGggaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGdyYWRlU3RydWN0dXJlSW5kZXhUb011bHRpKGdyYXBoKSB7XG4gIGdyYXBoLl9ub2Rlcy5mb3JFYWNoKChkYXRhLCBub2RlKSA9PiB7XG4gICAgLy8gRGlyZWN0ZWRcbiAgICBpZiAoZGF0YS5vdXQpIHtcbiAgICAgIGZvciAoY29uc3QgbmVpZ2hib3IgaW4gZGF0YS5vdXQpIHtcbiAgICAgICAgY29uc3QgZWRnZXMgPSBuZXcgU2V0KCk7XG4gICAgICAgIGVkZ2VzLmFkZChkYXRhLm91dFtuZWlnaGJvcl0pO1xuICAgICAgICBkYXRhLm91dFtuZWlnaGJvcl0gPSBlZGdlcztcbiAgICAgICAgZ3JhcGguX25vZGVzLmdldChuZWlnaGJvcikuaW5bbm9kZV0gPSBlZGdlcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVbmRpcmVjdGVkXG4gICAgaWYgKGRhdGEudW5kaXJlY3RlZCkge1xuICAgICAgZm9yIChjb25zdCBuZWlnaGJvciBpbiBkYXRhLnVuZGlyZWN0ZWQpIHtcbiAgICAgICAgaWYgKG5laWdoYm9yID4gbm9kZSkgY29udGludWU7XG5cbiAgICAgICAgY29uc3QgZWRnZXMgPSBuZXcgU2V0KCk7XG4gICAgICAgIGVkZ2VzLmFkZChkYXRhLnVuZGlyZWN0ZWRbbmVpZ2hib3JdKTtcbiAgICAgICAgZGF0YS51bmRpcmVjdGVkW25laWdoYm9yXSA9IGVkZ2VzO1xuICAgICAgICBncmFwaC5fbm9kZXMuZ2V0KG5laWdoYm9yKS51bmRpcmVjdGVkW25vZGVdID0gZWRnZXM7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cbiIsICIvKipcbiAqIEdyYXBob2xvZ3kgTm9kZSBBdHRyaWJ1dGVzIG1ldGhvZHNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKi9cbmltcG9ydCB7YXNzaWduLCBpc1BsYWluT2JqZWN0fSBmcm9tICcuLi91dGlscyc7XG5cbmltcG9ydCB7SW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IsIE5vdEZvdW5kR3JhcGhFcnJvcn0gZnJvbSAnLi4vZXJyb3JzJztcblxuY29uc3QgTk9ERSA9IDA7XG5jb25zdCBTT1VSQ0UgPSAxO1xuY29uc3QgVEFSR0VUID0gMjtcbmNvbnN0IE9QUE9TSVRFID0gMztcblxuZnVuY3Rpb24gZmluZFJlbGV2YW50Tm9kZURhdGEoXG4gIGdyYXBoLFxuICBtZXRob2QsXG4gIG1vZGUsXG4gIG5vZGVPckVkZ2UsXG4gIG5hbWVPckVkZ2UsXG4gIGFkZDEsXG4gIGFkZDJcbikge1xuICBsZXQgbm9kZURhdGEsIGVkZ2VEYXRhLCBhcmcxLCBhcmcyO1xuXG4gIG5vZGVPckVkZ2UgPSAnJyArIG5vZGVPckVkZ2U7XG5cbiAgaWYgKG1vZGUgPT09IE5PREUpIHtcbiAgICBub2RlRGF0YSA9IGdyYXBoLl9ub2Rlcy5nZXQobm9kZU9yRWRnZSk7XG5cbiAgICBpZiAoIW5vZGVEYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlT3JFZGdlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBhcmcxID0gbmFtZU9yRWRnZTtcbiAgICBhcmcyID0gYWRkMTtcbiAgfSBlbHNlIGlmIChtb2RlID09PSBPUFBPU0lURSkge1xuICAgIG5hbWVPckVkZ2UgPSAnJyArIG5hbWVPckVkZ2U7XG5cbiAgICBlZGdlRGF0YSA9IGdyYXBoLl9lZGdlcy5nZXQobmFtZU9yRWRnZSk7XG5cbiAgICBpZiAoIWVkZ2VEYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtuYW1lT3JFZGdlfVwiIGVkZ2UgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBjb25zdCBzb3VyY2UgPSBlZGdlRGF0YS5zb3VyY2Uua2V5O1xuICAgIGNvbnN0IHRhcmdldCA9IGVkZ2VEYXRhLnRhcmdldC5rZXk7XG5cbiAgICBpZiAobm9kZU9yRWRnZSA9PT0gc291cmNlKSB7XG4gICAgICBub2RlRGF0YSA9IGVkZ2VEYXRhLnRhcmdldDtcbiAgICB9IGVsc2UgaWYgKG5vZGVPckVkZ2UgPT09IHRhcmdldCkge1xuICAgICAgbm9kZURhdGEgPSBlZGdlRGF0YS5zb3VyY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IHRoZSBcIiR7bm9kZU9yRWRnZX1cIiBub2RlIGlzIG5vdCBhdHRhY2hlZCB0byB0aGUgXCIke25hbWVPckVkZ2V9XCIgZWRnZSAoJHtzb3VyY2V9LCAke3RhcmdldH0pLmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgYXJnMSA9IGFkZDE7XG4gICAgYXJnMiA9IGFkZDI7XG4gIH0gZWxzZSB7XG4gICAgZWRnZURhdGEgPSBncmFwaC5fZWRnZXMuZ2V0KG5vZGVPckVkZ2UpO1xuXG4gICAgaWYgKCFlZGdlRGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7bm9kZU9yRWRnZX1cIiBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgaWYgKG1vZGUgPT09IFNPVVJDRSkge1xuICAgICAgbm9kZURhdGEgPSBlZGdlRGF0YS5zb3VyY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGVEYXRhID0gZWRnZURhdGEudGFyZ2V0O1xuICAgIH1cblxuICAgIGFyZzEgPSBuYW1lT3JFZGdlO1xuICAgIGFyZzIgPSBhZGQxO1xuICB9XG5cbiAgcmV0dXJuIFtub2RlRGF0YSwgYXJnMSwgYXJnMl07XG59XG5cbmZ1bmN0aW9uIGF0dGFjaE5vZGVBdHRyaWJ1dGVHZXR0ZXIoQ2xhc3MsIG1ldGhvZCwgbW9kZSkge1xuICBDbGFzcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIChub2RlT3JFZGdlLCBuYW1lT3JFZGdlLCBhZGQxKSB7XG4gICAgY29uc3QgW2RhdGEsIG5hbWVdID0gZmluZFJlbGV2YW50Tm9kZURhdGEoXG4gICAgICB0aGlzLFxuICAgICAgbWV0aG9kLFxuICAgICAgbW9kZSxcbiAgICAgIG5vZGVPckVkZ2UsXG4gICAgICBuYW1lT3JFZGdlLFxuICAgICAgYWRkMVxuICAgICk7XG5cbiAgICByZXR1cm4gZGF0YS5hdHRyaWJ1dGVzW25hbWVdO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRhY2hOb2RlQXR0cmlidXRlc0dldHRlcihDbGFzcywgbWV0aG9kLCBtb2RlKSB7XG4gIENsYXNzLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24gKG5vZGVPckVkZ2UsIG5hbWVPckVkZ2UpIHtcbiAgICBjb25zdCBbZGF0YV0gPSBmaW5kUmVsZXZhbnROb2RlRGF0YShcbiAgICAgIHRoaXMsXG4gICAgICBtZXRob2QsXG4gICAgICBtb2RlLFxuICAgICAgbm9kZU9yRWRnZSxcbiAgICAgIG5hbWVPckVkZ2VcbiAgICApO1xuXG4gICAgcmV0dXJuIGRhdGEuYXR0cmlidXRlcztcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0YWNoTm9kZUF0dHJpYnV0ZUNoZWNrZXIoQ2xhc3MsIG1ldGhvZCwgbW9kZSkge1xuICBDbGFzcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIChub2RlT3JFZGdlLCBuYW1lT3JFZGdlLCBhZGQxKSB7XG4gICAgY29uc3QgW2RhdGEsIG5hbWVdID0gZmluZFJlbGV2YW50Tm9kZURhdGEoXG4gICAgICB0aGlzLFxuICAgICAgbWV0aG9kLFxuICAgICAgbW9kZSxcbiAgICAgIG5vZGVPckVkZ2UsXG4gICAgICBuYW1lT3JFZGdlLFxuICAgICAgYWRkMVxuICAgICk7XG5cbiAgICByZXR1cm4gZGF0YS5hdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KG5hbWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRhY2hOb2RlQXR0cmlidXRlU2V0dGVyKENsYXNzLCBtZXRob2QsIG1vZGUpIHtcbiAgQ2xhc3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiAobm9kZU9yRWRnZSwgbmFtZU9yRWRnZSwgYWRkMSwgYWRkMikge1xuICAgIGNvbnN0IFtkYXRhLCBuYW1lLCB2YWx1ZV0gPSBmaW5kUmVsZXZhbnROb2RlRGF0YShcbiAgICAgIHRoaXMsXG4gICAgICBtZXRob2QsXG4gICAgICBtb2RlLFxuICAgICAgbm9kZU9yRWRnZSxcbiAgICAgIG5hbWVPckVkZ2UsXG4gICAgICBhZGQxLFxuICAgICAgYWRkMlxuICAgICk7XG5cbiAgICBkYXRhLmF0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZTtcblxuICAgIC8vIEVtaXR0aW5nXG4gICAgdGhpcy5lbWl0KCdub2RlQXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICBrZXk6IGRhdGEua2V5LFxuICAgICAgdHlwZTogJ3NldCcsXG4gICAgICBhdHRyaWJ1dGVzOiBkYXRhLmF0dHJpYnV0ZXMsXG4gICAgICBuYW1lXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0YWNoTm9kZUF0dHJpYnV0ZVVwZGF0ZXIoQ2xhc3MsIG1ldGhvZCwgbW9kZSkge1xuICBDbGFzcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIChub2RlT3JFZGdlLCBuYW1lT3JFZGdlLCBhZGQxLCBhZGQyKSB7XG4gICAgY29uc3QgW2RhdGEsIG5hbWUsIHVwZGF0ZXJdID0gZmluZFJlbGV2YW50Tm9kZURhdGEoXG4gICAgICB0aGlzLFxuICAgICAgbWV0aG9kLFxuICAgICAgbW9kZSxcbiAgICAgIG5vZGVPckVkZ2UsXG4gICAgICBuYW1lT3JFZGdlLFxuICAgICAgYWRkMSxcbiAgICAgIGFkZDJcbiAgICApO1xuXG4gICAgaWYgKHR5cGVvZiB1cGRhdGVyICE9PSAnZnVuY3Rpb24nKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiB1cGRhdGVyIHNob3VsZCBiZSBhIGZ1bmN0aW9uLmBcbiAgICAgICk7XG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gZGF0YS5hdHRyaWJ1dGVzO1xuICAgIGNvbnN0IHZhbHVlID0gdXBkYXRlcihhdHRyaWJ1dGVzW25hbWVdKTtcblxuICAgIGF0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZTtcblxuICAgIC8vIEVtaXR0aW5nXG4gICAgdGhpcy5lbWl0KCdub2RlQXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICBrZXk6IGRhdGEua2V5LFxuICAgICAgdHlwZTogJ3NldCcsXG4gICAgICBhdHRyaWJ1dGVzOiBkYXRhLmF0dHJpYnV0ZXMsXG4gICAgICBuYW1lXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0YWNoTm9kZUF0dHJpYnV0ZVJlbW92ZXIoQ2xhc3MsIG1ldGhvZCwgbW9kZSkge1xuICBDbGFzcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIChub2RlT3JFZGdlLCBuYW1lT3JFZGdlLCBhZGQxKSB7XG4gICAgY29uc3QgW2RhdGEsIG5hbWVdID0gZmluZFJlbGV2YW50Tm9kZURhdGEoXG4gICAgICB0aGlzLFxuICAgICAgbWV0aG9kLFxuICAgICAgbW9kZSxcbiAgICAgIG5vZGVPckVkZ2UsXG4gICAgICBuYW1lT3JFZGdlLFxuICAgICAgYWRkMVxuICAgICk7XG5cbiAgICBkZWxldGUgZGF0YS5hdHRyaWJ1dGVzW25hbWVdO1xuXG4gICAgLy8gRW1pdHRpbmdcbiAgICB0aGlzLmVtaXQoJ25vZGVBdHRyaWJ1dGVzVXBkYXRlZCcsIHtcbiAgICAgIGtleTogZGF0YS5rZXksXG4gICAgICB0eXBlOiAncmVtb3ZlJyxcbiAgICAgIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlcyxcbiAgICAgIG5hbWVcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRhY2hOb2RlQXR0cmlidXRlc1JlcGxhY2VyKENsYXNzLCBtZXRob2QsIG1vZGUpIHtcbiAgQ2xhc3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiAobm9kZU9yRWRnZSwgbmFtZU9yRWRnZSwgYWRkMSkge1xuICAgIGNvbnN0IFtkYXRhLCBhdHRyaWJ1dGVzXSA9IGZpbmRSZWxldmFudE5vZGVEYXRhKFxuICAgICAgdGhpcyxcbiAgICAgIG1ldGhvZCxcbiAgICAgIG1vZGUsXG4gICAgICBub2RlT3JFZGdlLFxuICAgICAgbmFtZU9yRWRnZSxcbiAgICAgIGFkZDFcbiAgICApO1xuXG4gICAgaWYgKCFpc1BsYWluT2JqZWN0KGF0dHJpYnV0ZXMpKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBwcm92aWRlZCBhdHRyaWJ1dGVzIGFyZSBub3QgYSBwbGFpbiBvYmplY3QuYFxuICAgICAgKTtcblxuICAgIGRhdGEuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7XG5cbiAgICAvLyBFbWl0dGluZ1xuICAgIHRoaXMuZW1pdCgnbm9kZUF0dHJpYnV0ZXNVcGRhdGVkJywge1xuICAgICAga2V5OiBkYXRhLmtleSxcbiAgICAgIHR5cGU6ICdyZXBsYWNlJyxcbiAgICAgIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlc1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dGFjaE5vZGVBdHRyaWJ1dGVzTWVyZ2VyKENsYXNzLCBtZXRob2QsIG1vZGUpIHtcbiAgQ2xhc3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiAobm9kZU9yRWRnZSwgbmFtZU9yRWRnZSwgYWRkMSkge1xuICAgIGNvbnN0IFtkYXRhLCBhdHRyaWJ1dGVzXSA9IGZpbmRSZWxldmFudE5vZGVEYXRhKFxuICAgICAgdGhpcyxcbiAgICAgIG1ldGhvZCxcbiAgICAgIG1vZGUsXG4gICAgICBub2RlT3JFZGdlLFxuICAgICAgbmFtZU9yRWRnZSxcbiAgICAgIGFkZDFcbiAgICApO1xuXG4gICAgaWYgKCFpc1BsYWluT2JqZWN0KGF0dHJpYnV0ZXMpKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBwcm92aWRlZCBhdHRyaWJ1dGVzIGFyZSBub3QgYSBwbGFpbiBvYmplY3QuYFxuICAgICAgKTtcblxuICAgIGFzc2lnbihkYXRhLmF0dHJpYnV0ZXMsIGF0dHJpYnV0ZXMpO1xuXG4gICAgLy8gRW1pdHRpbmdcbiAgICB0aGlzLmVtaXQoJ25vZGVBdHRyaWJ1dGVzVXBkYXRlZCcsIHtcbiAgICAgIGtleTogZGF0YS5rZXksXG4gICAgICB0eXBlOiAnbWVyZ2UnLFxuICAgICAgYXR0cmlidXRlczogZGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgZGF0YTogYXR0cmlidXRlc1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dGFjaE5vZGVBdHRyaWJ1dGVzVXBkYXRlcihDbGFzcywgbWV0aG9kLCBtb2RlKSB7XG4gIENsYXNzLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24gKG5vZGVPckVkZ2UsIG5hbWVPckVkZ2UsIGFkZDEpIHtcbiAgICBjb25zdCBbZGF0YSwgdXBkYXRlcl0gPSBmaW5kUmVsZXZhbnROb2RlRGF0YShcbiAgICAgIHRoaXMsXG4gICAgICBtZXRob2QsXG4gICAgICBtb2RlLFxuICAgICAgbm9kZU9yRWRnZSxcbiAgICAgIG5hbWVPckVkZ2UsXG4gICAgICBhZGQxXG4gICAgKTtcblxuICAgIGlmICh0eXBlb2YgdXBkYXRlciAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogcHJvdmlkZWQgdXBkYXRlciBpcyBub3QgYSBmdW5jdGlvbi5gXG4gICAgICApO1xuXG4gICAgZGF0YS5hdHRyaWJ1dGVzID0gdXBkYXRlcihkYXRhLmF0dHJpYnV0ZXMpO1xuXG4gICAgLy8gRW1pdHRpbmdcbiAgICB0aGlzLmVtaXQoJ25vZGVBdHRyaWJ1dGVzVXBkYXRlZCcsIHtcbiAgICAgIGtleTogZGF0YS5rZXksXG4gICAgICB0eXBlOiAndXBkYXRlJyxcbiAgICAgIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlc1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59XG5cbi8qKlxuICogTGlzdCBvZiBtZXRob2RzIHRvIGF0dGFjaC5cbiAqL1xuY29uc3QgTk9ERV9BVFRSSUJVVEVTX01FVEhPRFMgPSBbXG4gIHtcbiAgICBuYW1lOiBlbGVtZW50ID0+IGBnZXQke2VsZW1lbnR9QXR0cmlidXRlYCxcbiAgICBhdHRhY2hlcjogYXR0YWNoTm9kZUF0dHJpYnV0ZUdldHRlclxuICB9LFxuICB7XG4gICAgbmFtZTogZWxlbWVudCA9PiBgZ2V0JHtlbGVtZW50fUF0dHJpYnV0ZXNgLFxuICAgIGF0dGFjaGVyOiBhdHRhY2hOb2RlQXR0cmlidXRlc0dldHRlclxuICB9LFxuICB7XG4gICAgbmFtZTogZWxlbWVudCA9PiBgaGFzJHtlbGVtZW50fUF0dHJpYnV0ZWAsXG4gICAgYXR0YWNoZXI6IGF0dGFjaE5vZGVBdHRyaWJ1dGVDaGVja2VyXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBlbGVtZW50ID0+IGBzZXQke2VsZW1lbnR9QXR0cmlidXRlYCxcbiAgICBhdHRhY2hlcjogYXR0YWNoTm9kZUF0dHJpYnV0ZVNldHRlclxuICB9LFxuICB7XG4gICAgbmFtZTogZWxlbWVudCA9PiBgdXBkYXRlJHtlbGVtZW50fUF0dHJpYnV0ZWAsXG4gICAgYXR0YWNoZXI6IGF0dGFjaE5vZGVBdHRyaWJ1dGVVcGRhdGVyXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBlbGVtZW50ID0+IGByZW1vdmUke2VsZW1lbnR9QXR0cmlidXRlYCxcbiAgICBhdHRhY2hlcjogYXR0YWNoTm9kZUF0dHJpYnV0ZVJlbW92ZXJcbiAgfSxcbiAge1xuICAgIG5hbWU6IGVsZW1lbnQgPT4gYHJlcGxhY2Uke2VsZW1lbnR9QXR0cmlidXRlc2AsXG4gICAgYXR0YWNoZXI6IGF0dGFjaE5vZGVBdHRyaWJ1dGVzUmVwbGFjZXJcbiAgfSxcbiAge1xuICAgIG5hbWU6IGVsZW1lbnQgPT4gYG1lcmdlJHtlbGVtZW50fUF0dHJpYnV0ZXNgLFxuICAgIGF0dGFjaGVyOiBhdHRhY2hOb2RlQXR0cmlidXRlc01lcmdlclxuICB9LFxuICB7XG4gICAgbmFtZTogZWxlbWVudCA9PiBgdXBkYXRlJHtlbGVtZW50fUF0dHJpYnV0ZXNgLFxuICAgIGF0dGFjaGVyOiBhdHRhY2hOb2RlQXR0cmlidXRlc1VwZGF0ZXJcbiAgfVxuXTtcblxuLyoqXG4gKiBBdHRhY2ggZXZlcnkgYXR0cmlidXRlcy1yZWxhdGVkIG1ldGhvZHMgdG8gYSBHcmFwaCBjbGFzcy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBHcmFwaCAtIFRhcmdldCBjbGFzcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXR0YWNoTm9kZUF0dHJpYnV0ZXNNZXRob2RzKEdyYXBoKSB7XG4gIE5PREVfQVRUUklCVVRFU19NRVRIT0RTLmZvckVhY2goZnVuY3Rpb24gKHtuYW1lLCBhdHRhY2hlcn0pIHtcbiAgICAvLyBGb3Igbm9kZXNcbiAgICBhdHRhY2hlcihHcmFwaCwgbmFtZSgnTm9kZScpLCBOT0RFKTtcblxuICAgIC8vIEZvciBzb3VyY2VzXG4gICAgYXR0YWNoZXIoR3JhcGgsIG5hbWUoJ1NvdXJjZScpLCBTT1VSQ0UpO1xuXG4gICAgLy8gRm9yIHRhcmdldHNcbiAgICBhdHRhY2hlcihHcmFwaCwgbmFtZSgnVGFyZ2V0JyksIFRBUkdFVCk7XG5cbiAgICAvLyBGb3Igb3Bwb3NpdGVzXG4gICAgYXR0YWNoZXIoR3JhcGgsIG5hbWUoJ09wcG9zaXRlJyksIE9QUE9TSVRFKTtcbiAgfSk7XG59XG4iLCAiLyoqXG4gKiBHcmFwaG9sb2d5IEVkZ2UgQXR0cmlidXRlcyBtZXRob2RzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICovXG5pbXBvcnQge2Fzc2lnbiwgaXNQbGFpbk9iamVjdCwgZ2V0TWF0Y2hpbmdFZGdlfSBmcm9tICcuLi91dGlscyc7XG5cbmltcG9ydCB7XG4gIEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yLFxuICBOb3RGb3VuZEdyYXBoRXJyb3IsXG4gIFVzYWdlR3JhcGhFcnJvclxufSBmcm9tICcuLi9lcnJvcnMnO1xuXG4vKipcbiAqIEF0dGFjaCBhbiBhdHRyaWJ1dGUgZ2V0dGVyIG1ldGhvZCBvbnRvIHRoZSBwcm92aWRlZCBjbGFzcy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzcyAgICAgICAgIC0gVGFyZ2V0IGNsYXNzLlxuICogQHBhcmFtIHtzdHJpbmd9ICAgbWV0aG9kICAgICAgICAtIE1ldGhvZCBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9ICAgdHlwZSAgICAgICAgICAtIFR5cGUgb2YgdGhlIGVkZ2UgdG8gZmluZC5cbiAqL1xuZnVuY3Rpb24gYXR0YWNoRWRnZUF0dHJpYnV0ZUdldHRlcihDbGFzcywgbWV0aG9kLCB0eXBlKSB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlc2lyZWQgYXR0cmlidXRlIGZvciB0aGUgZ2l2ZW4gZWxlbWVudCAobm9kZSBvciBlZGdlKS5cbiAgICpcbiAgICogQXJpdHkgMjpcbiAgICogQHBhcmFtICB7YW55fSAgICBlbGVtZW50IC0gVGFyZ2V0IGVsZW1lbnQuXG4gICAqIEBwYXJhbSAge3N0cmluZ30gbmFtZSAgICAtIEF0dHJpYnV0ZSdzIG5hbWUuXG4gICAqXG4gICAqIEFyaXR5IDMgKG9ubHkgZm9yIGVkZ2VzKTpcbiAgICogQHBhcmFtICB7YW55fSAgICAgc291cmNlIC0gU291cmNlIGVsZW1lbnQuXG4gICAqIEBwYXJhbSAge2FueX0gICAgIHRhcmdldCAtIFRhcmdldCBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHtzdHJpbmd9ICBuYW1lICAgLSBBdHRyaWJ1dGUncyBuYW1lLlxuICAgKlxuICAgKiBAcmV0dXJuIHttaXhlZH0gICAgICAgICAgLSBUaGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdG9vIG1hbnkgYXJndW1lbnRzIGFyZSBwcm92aWRlZC5cbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiBhbnkgb2YgdGhlIGVsZW1lbnRzIGlzIG5vdCBmb3VuZC5cbiAgICovXG4gIENsYXNzLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24gKGVsZW1lbnQsIG5hbWUpIHtcbiAgICBsZXQgZGF0YTtcblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICdtaXhlZCcgJiYgdHlwZSAhPT0gJ21peGVkJyAmJiB0eXBlICE9PSB0aGlzLnR5cGUpXG4gICAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjYW5ub3QgZmluZCB0aGlzIHR5cGUgb2YgZWRnZXMgaW4geW91ciAke3RoaXMudHlwZX0gZ3JhcGguYFxuICAgICAgKTtcblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikge1xuICAgICAgaWYgKHRoaXMubXVsdGkpXG4gICAgICAgIHRocm93IG5ldyBVc2FnZUdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY2Fubm90IHVzZSBhIHtzb3VyY2UsdGFyZ2V0fSBjb21ibyB3aGVuIGFza2luZyBhYm91dCBhbiBlZGdlJ3MgYXR0cmlidXRlcyBpbiBhIE11bHRpR3JhcGggc2luY2Ugd2UgY2Fubm90IGluZmVyIHRoZSBvbmUgeW91IHdhbnQgaW5mb3JtYXRpb24gYWJvdXQuYFxuICAgICAgICApO1xuXG4gICAgICBjb25zdCBzb3VyY2UgPSAnJyArIGVsZW1lbnQsXG4gICAgICAgIHRhcmdldCA9ICcnICsgbmFtZTtcblxuICAgICAgbmFtZSA9IGFyZ3VtZW50c1syXTtcblxuICAgICAgZGF0YSA9IGdldE1hdGNoaW5nRWRnZSh0aGlzLCBzb3VyY2UsIHRhcmdldCwgdHlwZSk7XG5cbiAgICAgIGlmICghZGF0YSlcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjb3VsZCBub3QgZmluZCBhbiBlZGdlIGZvciB0aGUgZ2l2ZW4gcGF0aCAoXCIke3NvdXJjZX1cIiAtIFwiJHt0YXJnZXR9XCIpLmBcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudCA9ICcnICsgZWxlbWVudDtcbiAgICAgIGRhdGEgPSB0aGlzLl9lZGdlcy5nZXQoZWxlbWVudCk7XG5cbiAgICAgIGlmICghZGF0YSlcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VsZW1lbnR9XCIgZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmICh0eXBlICE9PSAnbWl4ZWQnICYmIGRhdGEudW5kaXJlY3RlZCAhPT0gKHR5cGUgPT09ICd1bmRpcmVjdGVkJykpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VsZW1lbnR9XCIgJHt0eXBlfSBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgcmV0dXJuIGRhdGEuYXR0cmlidXRlc1tuYW1lXTtcbiAgfTtcbn1cblxuLyoqXG4gKiBBdHRhY2ggYW4gYXR0cmlidXRlcyBnZXR0ZXIgbWV0aG9kIG9udG8gdGhlIHByb3ZpZGVkIGNsYXNzLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IENsYXNzICAgICAgIC0gVGFyZ2V0IGNsYXNzLlxuICogQHBhcmFtIHtzdHJpbmd9ICAgbWV0aG9kICAgICAgLSBNZXRob2QgbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgIHR5cGUgICAgICAgIC0gVHlwZSBvZiB0aGUgZWRnZSB0byBmaW5kLlxuICovXG5mdW5jdGlvbiBhdHRhY2hFZGdlQXR0cmlidXRlc0dldHRlcihDbGFzcywgbWV0aG9kLCB0eXBlKSB7XG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYWxsIHRoZSB0YXJnZXQgZWxlbWVudCdzIGF0dHJpYnV0ZXMuXG4gICAqXG4gICAqIEFyaXR5IDI6XG4gICAqIEBwYXJhbSAge2FueX0gICAgZWxlbWVudCAtIFRhcmdldCBlbGVtZW50LlxuICAgKlxuICAgKiBBcml0eSAzIChvbmx5IGZvciBlZGdlcyk6XG4gICAqIEBwYXJhbSAge2FueX0gICAgIHNvdXJjZSAtIFNvdXJjZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICB0YXJnZXQgLSBUYXJnZXQgZWxlbWVudC5cbiAgICpcbiAgICogQHJldHVybiB7b2JqZWN0fSAgICAgICAgICAtIFRoZSBlbGVtZW50J3MgYXR0cmlidXRlcy5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0b28gbWFueSBhcmd1bWVudHMgYXJlIHByb3ZpZGVkLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIGFueSBvZiB0aGUgZWxlbWVudHMgaXMgbm90IGZvdW5kLlxuICAgKi9cbiAgQ2xhc3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIGxldCBkYXRhO1xuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ21peGVkJyAmJiB0eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09IHRoaXMudHlwZSlcbiAgICAgIHRocm93IG5ldyBVc2FnZUdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNhbm5vdCBmaW5kIHRoaXMgdHlwZSBvZiBlZGdlcyBpbiB5b3VyICR7dGhpcy50eXBlfSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aSlcbiAgICAgICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjYW5ub3QgdXNlIGEge3NvdXJjZSx0YXJnZXR9IGNvbWJvIHdoZW4gYXNraW5nIGFib3V0IGFuIGVkZ2UncyBhdHRyaWJ1dGVzIGluIGEgTXVsdGlHcmFwaCBzaW5jZSB3ZSBjYW5ub3QgaW5mZXIgdGhlIG9uZSB5b3Ugd2FudCBpbmZvcm1hdGlvbiBhYm91dC5gXG4gICAgICAgICk7XG5cbiAgICAgIGNvbnN0IHNvdXJjZSA9ICcnICsgZWxlbWVudCxcbiAgICAgICAgdGFyZ2V0ID0gJycgKyBhcmd1bWVudHNbMV07XG5cbiAgICAgIGRhdGEgPSBnZXRNYXRjaGluZ0VkZ2UodGhpcywgc291cmNlLCB0YXJnZXQsIHR5cGUpO1xuXG4gICAgICBpZiAoIWRhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgYW4gZWRnZSBmb3IgdGhlIGdpdmVuIHBhdGggKFwiJHtzb3VyY2V9XCIgLSBcIiR7dGFyZ2V0fVwiKS5gXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnQgPSAnJyArIGVsZW1lbnQ7XG4gICAgICBkYXRhID0gdGhpcy5fZWRnZXMuZ2V0KGVsZW1lbnQpO1xuXG4gICAgICBpZiAoIWRhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtlbGVtZW50fVwiIGVkZ2UgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZSAhPT0gJ21peGVkJyAmJiBkYXRhLnVuZGlyZWN0ZWQgIT09ICh0eXBlID09PSAndW5kaXJlY3RlZCcpKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtlbGVtZW50fVwiICR7dHlwZX0gZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIHJldHVybiBkYXRhLmF0dHJpYnV0ZXM7XG4gIH07XG59XG5cbi8qKlxuICogQXR0YWNoIGFuIGF0dHJpYnV0ZSBjaGVja2VyIG1ldGhvZCBvbnRvIHRoZSBwcm92aWRlZCBjbGFzcy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzcyAgICAgICAtIFRhcmdldCBjbGFzcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgIG1ldGhvZCAgICAgIC0gTWV0aG9kIG5hbWUuXG4gKiBAcGFyYW0ge3N0cmluZ30gICB0eXBlICAgICAgICAtIFR5cGUgb2YgdGhlIGVkZ2UgdG8gZmluZC5cbiAqL1xuZnVuY3Rpb24gYXR0YWNoRWRnZUF0dHJpYnV0ZUNoZWNrZXIoQ2xhc3MsIG1ldGhvZCwgdHlwZSkge1xuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGRlc2lyZWQgYXR0cmlidXRlIGlzIHNldCBmb3IgdGhlIGdpdmVuIGVsZW1lbnQgKG5vZGUgb3IgZWRnZSkuXG4gICAqXG4gICAqIEFyaXR5IDI6XG4gICAqIEBwYXJhbSAge2FueX0gICAgZWxlbWVudCAtIFRhcmdldCBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHtzdHJpbmd9IG5hbWUgICAgLSBBdHRyaWJ1dGUncyBuYW1lLlxuICAgKlxuICAgKiBBcml0eSAzIChvbmx5IGZvciBlZGdlcyk6XG4gICAqIEBwYXJhbSAge2FueX0gICAgIHNvdXJjZSAtIFNvdXJjZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICB0YXJnZXQgLSBUYXJnZXQgZWxlbWVudC5cbiAgICogQHBhcmFtICB7c3RyaW5nfSAgbmFtZSAgIC0gQXR0cmlidXRlJ3MgbmFtZS5cbiAgICpcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0b28gbWFueSBhcmd1bWVudHMgYXJlIHByb3ZpZGVkLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIGFueSBvZiB0aGUgZWxlbWVudHMgaXMgbm90IGZvdW5kLlxuICAgKi9cbiAgQ2xhc3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiAoZWxlbWVudCwgbmFtZSkge1xuICAgIGxldCBkYXRhO1xuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ21peGVkJyAmJiB0eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09IHRoaXMudHlwZSlcbiAgICAgIHRocm93IG5ldyBVc2FnZUdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNhbm5vdCBmaW5kIHRoaXMgdHlwZSBvZiBlZGdlcyBpbiB5b3VyICR7dGhpcy50eXBlfSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aSlcbiAgICAgICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjYW5ub3QgdXNlIGEge3NvdXJjZSx0YXJnZXR9IGNvbWJvIHdoZW4gYXNraW5nIGFib3V0IGFuIGVkZ2UncyBhdHRyaWJ1dGVzIGluIGEgTXVsdGlHcmFwaCBzaW5jZSB3ZSBjYW5ub3QgaW5mZXIgdGhlIG9uZSB5b3Ugd2FudCBpbmZvcm1hdGlvbiBhYm91dC5gXG4gICAgICAgICk7XG5cbiAgICAgIGNvbnN0IHNvdXJjZSA9ICcnICsgZWxlbWVudCxcbiAgICAgICAgdGFyZ2V0ID0gJycgKyBuYW1lO1xuXG4gICAgICBuYW1lID0gYXJndW1lbnRzWzJdO1xuXG4gICAgICBkYXRhID0gZ2V0TWF0Y2hpbmdFZGdlKHRoaXMsIHNvdXJjZSwgdGFyZ2V0LCB0eXBlKTtcblxuICAgICAgaWYgKCFkYXRhKVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIGFuIGVkZ2UgZm9yIHRoZSBnaXZlbiBwYXRoIChcIiR7c291cmNlfVwiIC0gXCIke3RhcmdldH1cIikuYFxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50ID0gJycgKyBlbGVtZW50O1xuICAgICAgZGF0YSA9IHRoaXMuX2VkZ2VzLmdldChlbGVtZW50KTtcblxuICAgICAgaWYgKCFkYXRhKVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7ZWxlbWVudH1cIiBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgIT09ICdtaXhlZCcgJiYgZGF0YS51bmRpcmVjdGVkICE9PSAodHlwZSA9PT0gJ3VuZGlyZWN0ZWQnKSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7ZWxlbWVudH1cIiAke3R5cGV9IGVkZ2UgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICByZXR1cm4gZGF0YS5hdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KG5hbWUpO1xuICB9O1xufVxuXG4vKipcbiAqIEF0dGFjaCBhbiBhdHRyaWJ1dGUgc2V0dGVyIG1ldGhvZCBvbnRvIHRoZSBwcm92aWRlZCBjbGFzcy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzcyAgICAgICAgIC0gVGFyZ2V0IGNsYXNzLlxuICogQHBhcmFtIHtzdHJpbmd9ICAgbWV0aG9kICAgICAgICAtIE1ldGhvZCBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9ICAgdHlwZSAgICAgICAgICAtIFR5cGUgb2YgdGhlIGVkZ2UgdG8gZmluZC5cbiAqL1xuZnVuY3Rpb24gYXR0YWNoRWRnZUF0dHJpYnV0ZVNldHRlcihDbGFzcywgbWV0aG9kLCB0eXBlKSB7XG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlc2lyZWQgYXR0cmlidXRlIGZvciB0aGUgZ2l2ZW4gZWxlbWVudCAobm9kZSBvciBlZGdlKS5cbiAgICpcbiAgICogQXJpdHkgMjpcbiAgICogQHBhcmFtICB7YW55fSAgICBlbGVtZW50IC0gVGFyZ2V0IGVsZW1lbnQuXG4gICAqIEBwYXJhbSAge3N0cmluZ30gbmFtZSAgICAtIEF0dHJpYnV0ZSdzIG5hbWUuXG4gICAqIEBwYXJhbSAge21peGVkfSAgdmFsdWUgICAtIE5ldyBhdHRyaWJ1dGUgdmFsdWUuXG4gICAqXG4gICAqIEFyaXR5IDMgKG9ubHkgZm9yIGVkZ2VzKTpcbiAgICogQHBhcmFtICB7YW55fSAgICAgc291cmNlIC0gU291cmNlIGVsZW1lbnQuXG4gICAqIEBwYXJhbSAge2FueX0gICAgIHRhcmdldCAtIFRhcmdldCBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHtzdHJpbmd9ICBuYW1lICAgLSBBdHRyaWJ1dGUncyBuYW1lLlxuICAgKiBAcGFyYW0gIHttaXhlZH0gIHZhbHVlICAgLSBOZXcgYXR0cmlidXRlIHZhbHVlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtHcmFwaH0gICAgICAgICAgLSBSZXR1cm5zIGl0c2VsZiBmb3IgY2hhaW5pbmcuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdG9vIG1hbnkgYXJndW1lbnRzIGFyZSBwcm92aWRlZC5cbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiBhbnkgb2YgdGhlIGVsZW1lbnRzIGlzIG5vdCBmb3VuZC5cbiAgICovXG4gIENsYXNzLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24gKGVsZW1lbnQsIG5hbWUsIHZhbHVlKSB7XG4gICAgbGV0IGRhdGE7XG5cbiAgICBpZiAodGhpcy50eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09ICdtaXhlZCcgJiYgdHlwZSAhPT0gdGhpcy50eXBlKVxuICAgICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY2Fubm90IGZpbmQgdGhpcyB0eXBlIG9mIGVkZ2VzIGluIHlvdXIgJHt0aGlzLnR5cGV9IGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDMpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpKVxuICAgICAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNhbm5vdCB1c2UgYSB7c291cmNlLHRhcmdldH0gY29tYm8gd2hlbiBhc2tpbmcgYWJvdXQgYW4gZWRnZSdzIGF0dHJpYnV0ZXMgaW4gYSBNdWx0aUdyYXBoIHNpbmNlIHdlIGNhbm5vdCBpbmZlciB0aGUgb25lIHlvdSB3YW50IGluZm9ybWF0aW9uIGFib3V0LmBcbiAgICAgICAgKTtcblxuICAgICAgY29uc3Qgc291cmNlID0gJycgKyBlbGVtZW50LFxuICAgICAgICB0YXJnZXQgPSAnJyArIG5hbWU7XG5cbiAgICAgIG5hbWUgPSBhcmd1bWVudHNbMl07XG4gICAgICB2YWx1ZSA9IGFyZ3VtZW50c1szXTtcblxuICAgICAgZGF0YSA9IGdldE1hdGNoaW5nRWRnZSh0aGlzLCBzb3VyY2UsIHRhcmdldCwgdHlwZSk7XG5cbiAgICAgIGlmICghZGF0YSlcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjb3VsZCBub3QgZmluZCBhbiBlZGdlIGZvciB0aGUgZ2l2ZW4gcGF0aCAoXCIke3NvdXJjZX1cIiAtIFwiJHt0YXJnZXR9XCIpLmBcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudCA9ICcnICsgZWxlbWVudDtcbiAgICAgIGRhdGEgPSB0aGlzLl9lZGdlcy5nZXQoZWxlbWVudCk7XG5cbiAgICAgIGlmICghZGF0YSlcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VsZW1lbnR9XCIgZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmICh0eXBlICE9PSAnbWl4ZWQnICYmIGRhdGEudW5kaXJlY3RlZCAhPT0gKHR5cGUgPT09ICd1bmRpcmVjdGVkJykpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VsZW1lbnR9XCIgJHt0eXBlfSBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgZGF0YS5hdHRyaWJ1dGVzW25hbWVdID0gdmFsdWU7XG5cbiAgICAvLyBFbWl0dGluZ1xuICAgIHRoaXMuZW1pdCgnZWRnZUF0dHJpYnV0ZXNVcGRhdGVkJywge1xuICAgICAga2V5OiBkYXRhLmtleSxcbiAgICAgIHR5cGU6ICdzZXQnLFxuICAgICAgYXR0cmlidXRlczogZGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgbmFtZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59XG5cbi8qKlxuICogQXR0YWNoIGFuIGF0dHJpYnV0ZSB1cGRhdGVyIG1ldGhvZCBvbnRvIHRoZSBwcm92aWRlZCBjbGFzcy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzcyAgICAgICAgIC0gVGFyZ2V0IGNsYXNzLlxuICogQHBhcmFtIHtzdHJpbmd9ICAgbWV0aG9kICAgICAgICAtIE1ldGhvZCBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9ICAgdHlwZSAgICAgICAgICAtIFR5cGUgb2YgdGhlIGVkZ2UgdG8gZmluZC5cbiAqL1xuZnVuY3Rpb24gYXR0YWNoRWRnZUF0dHJpYnV0ZVVwZGF0ZXIoQ2xhc3MsIG1ldGhvZCwgdHlwZSkge1xuICAvKipcbiAgICogVXBkYXRlIHRoZSBkZXNpcmVkIGF0dHJpYnV0ZSBmb3IgdGhlIGdpdmVuIGVsZW1lbnQgKG5vZGUgb3IgZWRnZSkgdXNpbmdcbiAgICogdGhlIHByb3ZpZGVkIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBBcml0eSAyOlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgZWxlbWVudCAtIFRhcmdldCBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHtzdHJpbmd9ICAgbmFtZSAgICAtIEF0dHJpYnV0ZSdzIG5hbWUuXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSB1cGRhdGVyIC0gVXBkYXRlciBmdW5jdGlvbi5cbiAgICpcbiAgICogQXJpdHkgMyAob25seSBmb3IgZWRnZXMpOlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgc291cmNlICAtIFNvdXJjZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgdGFyZ2V0ICAtIFRhcmdldCBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHtzdHJpbmd9ICAgbmFtZSAgICAtIEF0dHJpYnV0ZSdzIG5hbWUuXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSB1cGRhdGVyIC0gVXBkYXRlciBmdW5jdGlvbi5cbiAgICpcbiAgICogQHJldHVybiB7R3JhcGh9ICAgICAgICAgICAgLSBSZXR1cm5zIGl0c2VsZiBmb3IgY2hhaW5pbmcuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdG9vIG1hbnkgYXJndW1lbnRzIGFyZSBwcm92aWRlZC5cbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiBhbnkgb2YgdGhlIGVsZW1lbnRzIGlzIG5vdCBmb3VuZC5cbiAgICovXG4gIENsYXNzLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24gKGVsZW1lbnQsIG5hbWUsIHVwZGF0ZXIpIHtcbiAgICBsZXQgZGF0YTtcblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICdtaXhlZCcgJiYgdHlwZSAhPT0gJ21peGVkJyAmJiB0eXBlICE9PSB0aGlzLnR5cGUpXG4gICAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjYW5ub3QgZmluZCB0aGlzIHR5cGUgb2YgZWRnZXMgaW4geW91ciAke3RoaXMudHlwZX0gZ3JhcGguYFxuICAgICAgKTtcblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMykge1xuICAgICAgaWYgKHRoaXMubXVsdGkpXG4gICAgICAgIHRocm93IG5ldyBVc2FnZUdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY2Fubm90IHVzZSBhIHtzb3VyY2UsdGFyZ2V0fSBjb21ibyB3aGVuIGFza2luZyBhYm91dCBhbiBlZGdlJ3MgYXR0cmlidXRlcyBpbiBhIE11bHRpR3JhcGggc2luY2Ugd2UgY2Fubm90IGluZmVyIHRoZSBvbmUgeW91IHdhbnQgaW5mb3JtYXRpb24gYWJvdXQuYFxuICAgICAgICApO1xuXG4gICAgICBjb25zdCBzb3VyY2UgPSAnJyArIGVsZW1lbnQsXG4gICAgICAgIHRhcmdldCA9ICcnICsgbmFtZTtcblxuICAgICAgbmFtZSA9IGFyZ3VtZW50c1syXTtcbiAgICAgIHVwZGF0ZXIgPSBhcmd1bWVudHNbM107XG5cbiAgICAgIGRhdGEgPSBnZXRNYXRjaGluZ0VkZ2UodGhpcywgc291cmNlLCB0YXJnZXQsIHR5cGUpO1xuXG4gICAgICBpZiAoIWRhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgYW4gZWRnZSBmb3IgdGhlIGdpdmVuIHBhdGggKFwiJHtzb3VyY2V9XCIgLSBcIiR7dGFyZ2V0fVwiKS5gXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnQgPSAnJyArIGVsZW1lbnQ7XG4gICAgICBkYXRhID0gdGhpcy5fZWRnZXMuZ2V0KGVsZW1lbnQpO1xuXG4gICAgICBpZiAoIWRhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtlbGVtZW50fVwiIGVkZ2UgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHVwZGF0ZXIgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IHVwZGF0ZXIgc2hvdWxkIGJlIGEgZnVuY3Rpb24uYFxuICAgICAgKTtcblxuICAgIGlmICh0eXBlICE9PSAnbWl4ZWQnICYmIGRhdGEudW5kaXJlY3RlZCAhPT0gKHR5cGUgPT09ICd1bmRpcmVjdGVkJykpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VsZW1lbnR9XCIgJHt0eXBlfSBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgZGF0YS5hdHRyaWJ1dGVzW25hbWVdID0gdXBkYXRlcihkYXRhLmF0dHJpYnV0ZXNbbmFtZV0pO1xuXG4gICAgLy8gRW1pdHRpbmdcbiAgICB0aGlzLmVtaXQoJ2VkZ2VBdHRyaWJ1dGVzVXBkYXRlZCcsIHtcbiAgICAgIGtleTogZGF0YS5rZXksXG4gICAgICB0eXBlOiAnc2V0JyxcbiAgICAgIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlcyxcbiAgICAgIG5hbWVcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xufVxuXG4vKipcbiAqIEF0dGFjaCBhbiBhdHRyaWJ1dGUgcmVtb3ZlciBtZXRob2Qgb250byB0aGUgcHJvdmlkZWQgY2xhc3MuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3MgICAgICAgICAtIFRhcmdldCBjbGFzcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgIG1ldGhvZCAgICAgICAgLSBNZXRob2QgbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgIHR5cGUgICAgICAgICAgLSBUeXBlIG9mIHRoZSBlZGdlIHRvIGZpbmQuXG4gKi9cbmZ1bmN0aW9uIGF0dGFjaEVkZ2VBdHRyaWJ1dGVSZW1vdmVyKENsYXNzLCBtZXRob2QsIHR5cGUpIHtcbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgZGVzaXJlZCBhdHRyaWJ1dGUgZm9yIHRoZSBnaXZlbiBlbGVtZW50IChub2RlIG9yIGVkZ2UpLlxuICAgKlxuICAgKiBBcml0eSAyOlxuICAgKiBAcGFyYW0gIHthbnl9ICAgIGVsZW1lbnQgLSBUYXJnZXQgZWxlbWVudC5cbiAgICogQHBhcmFtICB7c3RyaW5nfSBuYW1lICAgIC0gQXR0cmlidXRlJ3MgbmFtZS5cbiAgICpcbiAgICogQXJpdHkgMyAob25seSBmb3IgZWRnZXMpOlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICBzb3VyY2UgLSBTb3VyY2UgZWxlbWVudC5cbiAgICogQHBhcmFtICB7YW55fSAgICAgdGFyZ2V0IC0gVGFyZ2V0IGVsZW1lbnQuXG4gICAqIEBwYXJhbSAge3N0cmluZ30gIG5hbWUgICAtIEF0dHJpYnV0ZSdzIG5hbWUuXG4gICAqXG4gICAqIEByZXR1cm4ge0dyYXBofSAgICAgICAgICAtIFJldHVybnMgaXRzZWxmIGZvciBjaGFpbmluZy5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0b28gbWFueSBhcmd1bWVudHMgYXJlIHByb3ZpZGVkLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIGFueSBvZiB0aGUgZWxlbWVudHMgaXMgbm90IGZvdW5kLlxuICAgKi9cbiAgQ2xhc3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiAoZWxlbWVudCwgbmFtZSkge1xuICAgIGxldCBkYXRhO1xuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ21peGVkJyAmJiB0eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09IHRoaXMudHlwZSlcbiAgICAgIHRocm93IG5ldyBVc2FnZUdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNhbm5vdCBmaW5kIHRoaXMgdHlwZSBvZiBlZGdlcyBpbiB5b3VyICR7dGhpcy50eXBlfSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aSlcbiAgICAgICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjYW5ub3QgdXNlIGEge3NvdXJjZSx0YXJnZXR9IGNvbWJvIHdoZW4gYXNraW5nIGFib3V0IGFuIGVkZ2UncyBhdHRyaWJ1dGVzIGluIGEgTXVsdGlHcmFwaCBzaW5jZSB3ZSBjYW5ub3QgaW5mZXIgdGhlIG9uZSB5b3Ugd2FudCBpbmZvcm1hdGlvbiBhYm91dC5gXG4gICAgICAgICk7XG5cbiAgICAgIGNvbnN0IHNvdXJjZSA9ICcnICsgZWxlbWVudCxcbiAgICAgICAgdGFyZ2V0ID0gJycgKyBuYW1lO1xuXG4gICAgICBuYW1lID0gYXJndW1lbnRzWzJdO1xuXG4gICAgICBkYXRhID0gZ2V0TWF0Y2hpbmdFZGdlKHRoaXMsIHNvdXJjZSwgdGFyZ2V0LCB0eXBlKTtcblxuICAgICAgaWYgKCFkYXRhKVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIGFuIGVkZ2UgZm9yIHRoZSBnaXZlbiBwYXRoIChcIiR7c291cmNlfVwiIC0gXCIke3RhcmdldH1cIikuYFxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50ID0gJycgKyBlbGVtZW50O1xuICAgICAgZGF0YSA9IHRoaXMuX2VkZ2VzLmdldChlbGVtZW50KTtcblxuICAgICAgaWYgKCFkYXRhKVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7ZWxlbWVudH1cIiBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgIT09ICdtaXhlZCcgJiYgZGF0YS51bmRpcmVjdGVkICE9PSAodHlwZSA9PT0gJ3VuZGlyZWN0ZWQnKSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7ZWxlbWVudH1cIiAke3R5cGV9IGVkZ2UgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBkZWxldGUgZGF0YS5hdHRyaWJ1dGVzW25hbWVdO1xuXG4gICAgLy8gRW1pdHRpbmdcbiAgICB0aGlzLmVtaXQoJ2VkZ2VBdHRyaWJ1dGVzVXBkYXRlZCcsIHtcbiAgICAgIGtleTogZGF0YS5rZXksXG4gICAgICB0eXBlOiAncmVtb3ZlJyxcbiAgICAgIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlcyxcbiAgICAgIG5hbWVcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xufVxuXG4vKipcbiAqIEF0dGFjaCBhbiBhdHRyaWJ1dGUgcmVwbGFjZXIgbWV0aG9kIG9udG8gdGhlIHByb3ZpZGVkIGNsYXNzLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IENsYXNzICAgICAgICAgLSBUYXJnZXQgY2xhc3MuXG4gKiBAcGFyYW0ge3N0cmluZ30gICBtZXRob2QgICAgICAgIC0gTWV0aG9kIG5hbWUuXG4gKiBAcGFyYW0ge3N0cmluZ30gICB0eXBlICAgICAgICAgIC0gVHlwZSBvZiB0aGUgZWRnZSB0byBmaW5kLlxuICovXG5mdW5jdGlvbiBhdHRhY2hFZGdlQXR0cmlidXRlc1JlcGxhY2VyKENsYXNzLCBtZXRob2QsIHR5cGUpIHtcbiAgLyoqXG4gICAqIFJlcGxhY2UgdGhlIGF0dHJpYnV0ZXMgZm9yIHRoZSBnaXZlbiBlbGVtZW50IChub2RlIG9yIGVkZ2UpLlxuICAgKlxuICAgKiBBcml0eSAyOlxuICAgKiBAcGFyYW0gIHthbnl9ICAgIGVsZW1lbnQgICAgLSBUYXJnZXQgZWxlbWVudC5cbiAgICogQHBhcmFtICB7b2JqZWN0fSBhdHRyaWJ1dGVzIC0gTmV3IGF0dHJpYnV0ZXMuXG4gICAqXG4gICAqIEFyaXR5IDMgKG9ubHkgZm9yIGVkZ2VzKTpcbiAgICogQHBhcmFtICB7YW55fSAgICAgc291cmNlICAgICAtIFNvdXJjZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICB0YXJnZXQgICAgIC0gVGFyZ2V0IGVsZW1lbnQuXG4gICAqIEBwYXJhbSAge29iamVjdH0gIGF0dHJpYnV0ZXMgLSBOZXcgYXR0cmlidXRlcy5cbiAgICpcbiAgICogQHJldHVybiB7R3JhcGh9ICAgICAgICAgICAgICAtIFJldHVybnMgaXRzZWxmIGZvciBjaGFpbmluZy5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0b28gbWFueSBhcmd1bWVudHMgYXJlIHByb3ZpZGVkLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIGFueSBvZiB0aGUgZWxlbWVudHMgaXMgbm90IGZvdW5kLlxuICAgKi9cbiAgQ2xhc3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiAoZWxlbWVudCwgYXR0cmlidXRlcykge1xuICAgIGxldCBkYXRhO1xuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ21peGVkJyAmJiB0eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09IHRoaXMudHlwZSlcbiAgICAgIHRocm93IG5ldyBVc2FnZUdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNhbm5vdCBmaW5kIHRoaXMgdHlwZSBvZiBlZGdlcyBpbiB5b3VyICR7dGhpcy50eXBlfSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aSlcbiAgICAgICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjYW5ub3QgdXNlIGEge3NvdXJjZSx0YXJnZXR9IGNvbWJvIHdoZW4gYXNraW5nIGFib3V0IGFuIGVkZ2UncyBhdHRyaWJ1dGVzIGluIGEgTXVsdGlHcmFwaCBzaW5jZSB3ZSBjYW5ub3QgaW5mZXIgdGhlIG9uZSB5b3Ugd2FudCBpbmZvcm1hdGlvbiBhYm91dC5gXG4gICAgICAgICk7XG5cbiAgICAgIGNvbnN0IHNvdXJjZSA9ICcnICsgZWxlbWVudCxcbiAgICAgICAgdGFyZ2V0ID0gJycgKyBhdHRyaWJ1dGVzO1xuXG4gICAgICBhdHRyaWJ1dGVzID0gYXJndW1lbnRzWzJdO1xuXG4gICAgICBkYXRhID0gZ2V0TWF0Y2hpbmdFZGdlKHRoaXMsIHNvdXJjZSwgdGFyZ2V0LCB0eXBlKTtcblxuICAgICAgaWYgKCFkYXRhKVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIGFuIGVkZ2UgZm9yIHRoZSBnaXZlbiBwYXRoIChcIiR7c291cmNlfVwiIC0gXCIke3RhcmdldH1cIikuYFxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50ID0gJycgKyBlbGVtZW50O1xuICAgICAgZGF0YSA9IHRoaXMuX2VkZ2VzLmdldChlbGVtZW50KTtcblxuICAgICAgaWYgKCFkYXRhKVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7ZWxlbWVudH1cIiBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFpc1BsYWluT2JqZWN0KGF0dHJpYnV0ZXMpKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBwcm92aWRlZCBhdHRyaWJ1dGVzIGFyZSBub3QgYSBwbGFpbiBvYmplY3QuYFxuICAgICAgKTtcblxuICAgIGlmICh0eXBlICE9PSAnbWl4ZWQnICYmIGRhdGEudW5kaXJlY3RlZCAhPT0gKHR5cGUgPT09ICd1bmRpcmVjdGVkJykpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VsZW1lbnR9XCIgJHt0eXBlfSBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgZGF0YS5hdHRyaWJ1dGVzID0gYXR0cmlidXRlcztcblxuICAgIC8vIEVtaXR0aW5nXG4gICAgdGhpcy5lbWl0KCdlZGdlQXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICBrZXk6IGRhdGEua2V5LFxuICAgICAgdHlwZTogJ3JlcGxhY2UnLFxuICAgICAgYXR0cmlidXRlczogZGF0YS5hdHRyaWJ1dGVzXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn1cblxuLyoqXG4gKiBBdHRhY2ggYW4gYXR0cmlidXRlIG1lcmdlciBtZXRob2Qgb250byB0aGUgcHJvdmlkZWQgY2xhc3MuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3MgICAgICAgICAtIFRhcmdldCBjbGFzcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgIG1ldGhvZCAgICAgICAgLSBNZXRob2QgbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgIHR5cGUgICAgICAgICAgLSBUeXBlIG9mIHRoZSBlZGdlIHRvIGZpbmQuXG4gKi9cbmZ1bmN0aW9uIGF0dGFjaEVkZ2VBdHRyaWJ1dGVzTWVyZ2VyKENsYXNzLCBtZXRob2QsIHR5cGUpIHtcbiAgLyoqXG4gICAqIE1lcmdlIHRoZSBhdHRyaWJ1dGVzIGZvciB0aGUgZ2l2ZW4gZWxlbWVudCAobm9kZSBvciBlZGdlKS5cbiAgICpcbiAgICogQXJpdHkgMjpcbiAgICogQHBhcmFtICB7YW55fSAgICBlbGVtZW50ICAgIC0gVGFyZ2V0IGVsZW1lbnQuXG4gICAqIEBwYXJhbSAge29iamVjdH0gYXR0cmlidXRlcyAtIEF0dHJpYnV0ZXMgdG8gbWVyZ2UuXG4gICAqXG4gICAqIEFyaXR5IDMgKG9ubHkgZm9yIGVkZ2VzKTpcbiAgICogQHBhcmFtICB7YW55fSAgICAgc291cmNlICAgICAtIFNvdXJjZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICB0YXJnZXQgICAgIC0gVGFyZ2V0IGVsZW1lbnQuXG4gICAqIEBwYXJhbSAge29iamVjdH0gIGF0dHJpYnV0ZXMgLSBBdHRyaWJ1dGVzIHRvIG1lcmdlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtHcmFwaH0gICAgICAgICAgICAgIC0gUmV0dXJucyBpdHNlbGYgZm9yIGNoYWluaW5nLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRvbyBtYW55IGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgYW55IG9mIHRoZSBlbGVtZW50cyBpcyBub3QgZm91bmQuXG4gICAqL1xuICBDbGFzcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIChlbGVtZW50LCBhdHRyaWJ1dGVzKSB7XG4gICAgbGV0IGRhdGE7XG5cbiAgICBpZiAodGhpcy50eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09ICdtaXhlZCcgJiYgdHlwZSAhPT0gdGhpcy50eXBlKVxuICAgICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY2Fubm90IGZpbmQgdGhpcyB0eXBlIG9mIGVkZ2VzIGluIHlvdXIgJHt0aGlzLnR5cGV9IGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpKVxuICAgICAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNhbm5vdCB1c2UgYSB7c291cmNlLHRhcmdldH0gY29tYm8gd2hlbiBhc2tpbmcgYWJvdXQgYW4gZWRnZSdzIGF0dHJpYnV0ZXMgaW4gYSBNdWx0aUdyYXBoIHNpbmNlIHdlIGNhbm5vdCBpbmZlciB0aGUgb25lIHlvdSB3YW50IGluZm9ybWF0aW9uIGFib3V0LmBcbiAgICAgICAgKTtcblxuICAgICAgY29uc3Qgc291cmNlID0gJycgKyBlbGVtZW50LFxuICAgICAgICB0YXJnZXQgPSAnJyArIGF0dHJpYnV0ZXM7XG5cbiAgICAgIGF0dHJpYnV0ZXMgPSBhcmd1bWVudHNbMl07XG5cbiAgICAgIGRhdGEgPSBnZXRNYXRjaGluZ0VkZ2UodGhpcywgc291cmNlLCB0YXJnZXQsIHR5cGUpO1xuXG4gICAgICBpZiAoIWRhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgYW4gZWRnZSBmb3IgdGhlIGdpdmVuIHBhdGggKFwiJHtzb3VyY2V9XCIgLSBcIiR7dGFyZ2V0fVwiKS5gXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnQgPSAnJyArIGVsZW1lbnQ7XG4gICAgICBkYXRhID0gdGhpcy5fZWRnZXMuZ2V0KGVsZW1lbnQpO1xuXG4gICAgICBpZiAoIWRhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtlbGVtZW50fVwiIGVkZ2UgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzUGxhaW5PYmplY3QoYXR0cmlidXRlcykpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IHByb3ZpZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBhIHBsYWluIG9iamVjdC5gXG4gICAgICApO1xuXG4gICAgaWYgKHR5cGUgIT09ICdtaXhlZCcgJiYgZGF0YS51bmRpcmVjdGVkICE9PSAodHlwZSA9PT0gJ3VuZGlyZWN0ZWQnKSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7ZWxlbWVudH1cIiAke3R5cGV9IGVkZ2UgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBhc3NpZ24oZGF0YS5hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzKTtcblxuICAgIC8vIEVtaXR0aW5nXG4gICAgdGhpcy5lbWl0KCdlZGdlQXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICBrZXk6IGRhdGEua2V5LFxuICAgICAgdHlwZTogJ21lcmdlJyxcbiAgICAgIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlcyxcbiAgICAgIGRhdGE6IGF0dHJpYnV0ZXNcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xufVxuXG4vKipcbiAqIEF0dGFjaCBhbiBhdHRyaWJ1dGUgdXBkYXRlciBtZXRob2Qgb250byB0aGUgcHJvdmlkZWQgY2xhc3MuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3MgICAgICAgICAtIFRhcmdldCBjbGFzcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgIG1ldGhvZCAgICAgICAgLSBNZXRob2QgbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgIHR5cGUgICAgICAgICAgLSBUeXBlIG9mIHRoZSBlZGdlIHRvIGZpbmQuXG4gKi9cbmZ1bmN0aW9uIGF0dGFjaEVkZ2VBdHRyaWJ1dGVzVXBkYXRlcihDbGFzcywgbWV0aG9kLCB0eXBlKSB7XG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGdpdmVuIGVsZW1lbnQgKG5vZGUgb3IgZWRnZSkuXG4gICAqXG4gICAqIEFyaXR5IDI6XG4gICAqIEBwYXJhbSAge2FueX0gICAgICBlbGVtZW50IC0gVGFyZ2V0IGVsZW1lbnQuXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSB1cGRhdGVyIC0gVXBkYXRlciBmdW5jdGlvbi5cbiAgICpcbiAgICogQXJpdHkgMyAob25seSBmb3IgZWRnZXMpOlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgc291cmNlICAtIFNvdXJjZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgdGFyZ2V0ICAtIFRhcmdldCBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gdXBkYXRlciAtIFVwZGF0ZXIgZnVuY3Rpb24uXG4gICAqXG4gICAqIEByZXR1cm4ge0dyYXBofSAgICAgICAgICAgIC0gUmV0dXJucyBpdHNlbGYgZm9yIGNoYWluaW5nLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRvbyBtYW55IGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgYW55IG9mIHRoZSBlbGVtZW50cyBpcyBub3QgZm91bmQuXG4gICAqL1xuICBDbGFzcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIChlbGVtZW50LCB1cGRhdGVyKSB7XG4gICAgbGV0IGRhdGE7XG5cbiAgICBpZiAodGhpcy50eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09ICdtaXhlZCcgJiYgdHlwZSAhPT0gdGhpcy50eXBlKVxuICAgICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY2Fubm90IGZpbmQgdGhpcyB0eXBlIG9mIGVkZ2VzIGluIHlvdXIgJHt0aGlzLnR5cGV9IGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpKVxuICAgICAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke21ldGhvZH06IGNhbm5vdCB1c2UgYSB7c291cmNlLHRhcmdldH0gY29tYm8gd2hlbiBhc2tpbmcgYWJvdXQgYW4gZWRnZSdzIGF0dHJpYnV0ZXMgaW4gYSBNdWx0aUdyYXBoIHNpbmNlIHdlIGNhbm5vdCBpbmZlciB0aGUgb25lIHlvdSB3YW50IGluZm9ybWF0aW9uIGFib3V0LmBcbiAgICAgICAgKTtcblxuICAgICAgY29uc3Qgc291cmNlID0gJycgKyBlbGVtZW50LFxuICAgICAgICB0YXJnZXQgPSAnJyArIHVwZGF0ZXI7XG5cbiAgICAgIHVwZGF0ZXIgPSBhcmd1bWVudHNbMl07XG5cbiAgICAgIGRhdGEgPSBnZXRNYXRjaGluZ0VkZ2UodGhpcywgc291cmNlLCB0YXJnZXQsIHR5cGUpO1xuXG4gICAgICBpZiAoIWRhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgYW4gZWRnZSBmb3IgdGhlIGdpdmVuIHBhdGggKFwiJHtzb3VyY2V9XCIgLSBcIiR7dGFyZ2V0fVwiKS5gXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnQgPSAnJyArIGVsZW1lbnQ7XG4gICAgICBkYXRhID0gdGhpcy5fZWRnZXMuZ2V0KGVsZW1lbnQpO1xuXG4gICAgICBpZiAoIWRhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bWV0aG9kfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtlbGVtZW50fVwiIGVkZ2UgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHVwZGF0ZXIgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke21ldGhvZH06IHByb3ZpZGVkIHVwZGF0ZXIgaXMgbm90IGEgZnVuY3Rpb24uYFxuICAgICAgKTtcblxuICAgIGlmICh0eXBlICE9PSAnbWl4ZWQnICYmIGRhdGEudW5kaXJlY3RlZCAhPT0gKHR5cGUgPT09ICd1bmRpcmVjdGVkJykpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHttZXRob2R9OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VsZW1lbnR9XCIgJHt0eXBlfSBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgZGF0YS5hdHRyaWJ1dGVzID0gdXBkYXRlcihkYXRhLmF0dHJpYnV0ZXMpO1xuXG4gICAgLy8gRW1pdHRpbmdcbiAgICB0aGlzLmVtaXQoJ2VkZ2VBdHRyaWJ1dGVzVXBkYXRlZCcsIHtcbiAgICAgIGtleTogZGF0YS5rZXksXG4gICAgICB0eXBlOiAndXBkYXRlJyxcbiAgICAgIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlc1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59XG5cbi8qKlxuICogTGlzdCBvZiBtZXRob2RzIHRvIGF0dGFjaC5cbiAqL1xuY29uc3QgRURHRV9BVFRSSUJVVEVTX01FVEhPRFMgPSBbXG4gIHtcbiAgICBuYW1lOiBlbGVtZW50ID0+IGBnZXQke2VsZW1lbnR9QXR0cmlidXRlYCxcbiAgICBhdHRhY2hlcjogYXR0YWNoRWRnZUF0dHJpYnV0ZUdldHRlclxuICB9LFxuICB7XG4gICAgbmFtZTogZWxlbWVudCA9PiBgZ2V0JHtlbGVtZW50fUF0dHJpYnV0ZXNgLFxuICAgIGF0dGFjaGVyOiBhdHRhY2hFZGdlQXR0cmlidXRlc0dldHRlclxuICB9LFxuICB7XG4gICAgbmFtZTogZWxlbWVudCA9PiBgaGFzJHtlbGVtZW50fUF0dHJpYnV0ZWAsXG4gICAgYXR0YWNoZXI6IGF0dGFjaEVkZ2VBdHRyaWJ1dGVDaGVja2VyXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBlbGVtZW50ID0+IGBzZXQke2VsZW1lbnR9QXR0cmlidXRlYCxcbiAgICBhdHRhY2hlcjogYXR0YWNoRWRnZUF0dHJpYnV0ZVNldHRlclxuICB9LFxuICB7XG4gICAgbmFtZTogZWxlbWVudCA9PiBgdXBkYXRlJHtlbGVtZW50fUF0dHJpYnV0ZWAsXG4gICAgYXR0YWNoZXI6IGF0dGFjaEVkZ2VBdHRyaWJ1dGVVcGRhdGVyXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBlbGVtZW50ID0+IGByZW1vdmUke2VsZW1lbnR9QXR0cmlidXRlYCxcbiAgICBhdHRhY2hlcjogYXR0YWNoRWRnZUF0dHJpYnV0ZVJlbW92ZXJcbiAgfSxcbiAge1xuICAgIG5hbWU6IGVsZW1lbnQgPT4gYHJlcGxhY2Uke2VsZW1lbnR9QXR0cmlidXRlc2AsXG4gICAgYXR0YWNoZXI6IGF0dGFjaEVkZ2VBdHRyaWJ1dGVzUmVwbGFjZXJcbiAgfSxcbiAge1xuICAgIG5hbWU6IGVsZW1lbnQgPT4gYG1lcmdlJHtlbGVtZW50fUF0dHJpYnV0ZXNgLFxuICAgIGF0dGFjaGVyOiBhdHRhY2hFZGdlQXR0cmlidXRlc01lcmdlclxuICB9LFxuICB7XG4gICAgbmFtZTogZWxlbWVudCA9PiBgdXBkYXRlJHtlbGVtZW50fUF0dHJpYnV0ZXNgLFxuICAgIGF0dGFjaGVyOiBhdHRhY2hFZGdlQXR0cmlidXRlc1VwZGF0ZXJcbiAgfVxuXTtcblxuLyoqXG4gKiBBdHRhY2ggZXZlcnkgYXR0cmlidXRlcy1yZWxhdGVkIG1ldGhvZHMgdG8gYSBHcmFwaCBjbGFzcy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBHcmFwaCAtIFRhcmdldCBjbGFzcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXR0YWNoRWRnZUF0dHJpYnV0ZXNNZXRob2RzKEdyYXBoKSB7XG4gIEVER0VfQVRUUklCVVRFU19NRVRIT0RTLmZvckVhY2goZnVuY3Rpb24gKHtuYW1lLCBhdHRhY2hlcn0pIHtcbiAgICAvLyBGb3IgZWRnZXNcbiAgICBhdHRhY2hlcihHcmFwaCwgbmFtZSgnRWRnZScpLCAnbWl4ZWQnKTtcblxuICAgIC8vIEZvciBkaXJlY3RlZCBlZGdlc1xuICAgIGF0dGFjaGVyKEdyYXBoLCBuYW1lKCdEaXJlY3RlZEVkZ2UnKSwgJ2RpcmVjdGVkJyk7XG5cbiAgICAvLyBGb3IgdW5kaXJlY3RlZCBlZGdlc1xuICAgIGF0dGFjaGVyKEdyYXBoLCBuYW1lKCdVbmRpcmVjdGVkRWRnZScpLCAndW5kaXJlY3RlZCcpO1xuICB9KTtcbn1cbiIsICIvKipcbiAqIE9ibGl0ZXJhdG9yIENoYWluIEZ1bmN0aW9uXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqXG4gKiBWYXJpYWRpYyBmdW5jdGlvbiBjb21iaW5pbmcgdGhlIGdpdmVuIGl0ZXJhYmxlcy5cbiAqL1xudmFyIEl0ZXJhdG9yID0gcmVxdWlyZSgnLi9pdGVyYXRvci5qcycpLFxuICBpdGVyID0gcmVxdWlyZSgnLi9pdGVyLmpzJyk7XG5cbi8qKlxuICogQ2hhaW4uXG4gKlxuICogQHBhcmFtICB7Li4uSXRlcmF0b3J9IGl0ZXJhYmxlcyAtIFRhcmdldCBpdGVyYWJsZXMuXG4gKiBAcmV0dXJuIHtJdGVyYXRvcn1cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjaGFpbigpIHtcbiAgdmFyIGl0ZXJhYmxlcyA9IGFyZ3VtZW50cyxcbiAgICBjdXJyZW50LFxuICAgIGkgPSAtMTtcblxuICByZXR1cm4gbmV3IEl0ZXJhdG9yKGZ1bmN0aW9uIGl0ZXJhdGUoKSB7XG4gICAgaWYgKCFjdXJyZW50KSB7XG4gICAgICBpKys7XG5cbiAgICAgIGlmIChpID49IGl0ZXJhYmxlcy5sZW5ndGgpIHJldHVybiB7ZG9uZTogdHJ1ZX07XG5cbiAgICAgIGN1cnJlbnQgPSBpdGVyKGl0ZXJhYmxlc1tpXSk7XG4gICAgfVxuXG4gICAgdmFyIHN0ZXAgPSBjdXJyZW50Lm5leHQoKTtcblxuICAgIGlmIChzdGVwLmRvbmUpIHtcbiAgICAgIGN1cnJlbnQgPSBudWxsO1xuICAgICAgcmV0dXJuIGl0ZXJhdGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RlcDtcbiAgfSk7XG59O1xuIiwgIi8qKlxuICogR3JhcGhvbG9neSBFZGdlIEl0ZXJhdGlvblxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqXG4gKiBBdHRhY2hpbmcgc29tZSBtZXRob2RzIHRvIHRoZSBHcmFwaCBjbGFzcyB0byBiZSBhYmxlIHRvIGl0ZXJhdGUgb3ZlciBhXG4gKiBncmFwaCdzIGVkZ2VzLlxuICovXG5pbXBvcnQgSXRlcmF0b3IgZnJvbSAnb2JsaXRlcmF0b3IvaXRlcmF0b3InO1xuaW1wb3J0IGNoYWluIGZyb20gJ29ibGl0ZXJhdG9yL2NoYWluJztcbmltcG9ydCB0YWtlIGZyb20gJ29ibGl0ZXJhdG9yL3Rha2UnO1xuXG5pbXBvcnQge0ludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yLCBOb3RGb3VuZEdyYXBoRXJyb3J9IGZyb20gJy4uL2Vycm9ycyc7XG5cbi8qKlxuICogRGVmaW5pdGlvbnMuXG4gKi9cbmNvbnN0IEVER0VTX0lURVJBVElPTiA9IFtcbiAge1xuICAgIG5hbWU6ICdlZGdlcycsXG4gICAgdHlwZTogJ21peGVkJ1xuICB9LFxuICB7XG4gICAgbmFtZTogJ2luRWRnZXMnLFxuICAgIHR5cGU6ICdkaXJlY3RlZCcsXG4gICAgZGlyZWN0aW9uOiAnaW4nXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnb3V0RWRnZXMnLFxuICAgIHR5cGU6ICdkaXJlY3RlZCcsXG4gICAgZGlyZWN0aW9uOiAnb3V0J1xuICB9LFxuICB7XG4gICAgbmFtZTogJ2luYm91bmRFZGdlcycsXG4gICAgdHlwZTogJ21peGVkJyxcbiAgICBkaXJlY3Rpb246ICdpbidcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdvdXRib3VuZEVkZ2VzJyxcbiAgICB0eXBlOiAnbWl4ZWQnLFxuICAgIGRpcmVjdGlvbjogJ291dCdcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdkaXJlY3RlZEVkZ2VzJyxcbiAgICB0eXBlOiAnZGlyZWN0ZWQnXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAndW5kaXJlY3RlZEVkZ2VzJyxcbiAgICB0eXBlOiAndW5kaXJlY3RlZCdcbiAgfVxuXTtcblxuLyoqXG4gKiBGdW5jdGlvbiBjb2xsZWN0aW5nIGVkZ2VzIGZyb20gdGhlIGdpdmVuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gIHthcnJheX0gIGVkZ2VzICAtIEVkZ2VzIGFycmF5IHRvIHBvcHVsYXRlLlxuICogQHBhcmFtICB7b2JqZWN0fSBvYmplY3QgLSBUYXJnZXQgb2JqZWN0LlxuICogQHJldHVybiB7YXJyYXl9ICAgICAgICAgLSBUaGUgZm91bmQgZWRnZXMuXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RTaW1wbGUoZWRnZXMsIG9iamVjdCkge1xuICBmb3IgKGNvbnN0IGsgaW4gb2JqZWN0KSBlZGdlcy5wdXNoKG9iamVjdFtrXS5rZXkpO1xufVxuXG5mdW5jdGlvbiBjb2xsZWN0TXVsdGkoZWRnZXMsIG9iamVjdCkge1xuICBmb3IgKGNvbnN0IGsgaW4gb2JqZWN0KVxuICAgIG9iamVjdFtrXS5mb3JFYWNoKGVkZ2VEYXRhID0+IGVkZ2VzLnB1c2goZWRnZURhdGEua2V5KSk7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gaXRlcmF0aW5nIG92ZXIgZWRnZXMgZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0IHVzaW5nIGEgY2FsbGJhY2suXG4gKlxuICogQHBhcmFtIHtvYmplY3R9ICAgb2JqZWN0ICAgLSBUYXJnZXQgb2JqZWN0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBGdW5jdGlvbiB0byBjYWxsLlxuICovXG5mdW5jdGlvbiBmb3JFYWNoU2ltcGxlKG9iamVjdCwgY2FsbGJhY2ssIGF2b2lkKSB7XG4gIGZvciAoY29uc3QgayBpbiBvYmplY3QpIHtcbiAgICBpZiAoayA9PT0gYXZvaWQpIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgZWRnZURhdGEgPSBvYmplY3Rba107XG5cbiAgICBjYWxsYmFjayhcbiAgICAgIGVkZ2VEYXRhLmtleSxcbiAgICAgIGVkZ2VEYXRhLmF0dHJpYnV0ZXMsXG4gICAgICBlZGdlRGF0YS5zb3VyY2Uua2V5LFxuICAgICAgZWRnZURhdGEudGFyZ2V0LmtleSxcbiAgICAgIGVkZ2VEYXRhLnNvdXJjZS5hdHRyaWJ1dGVzLFxuICAgICAgZWRnZURhdGEudGFyZ2V0LmF0dHJpYnV0ZXMsXG4gICAgICBlZGdlRGF0YS51bmRpcmVjdGVkXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JFYWNoTXVsdGkob2JqZWN0LCBjYWxsYmFjaywgYXZvaWQpIHtcbiAgZm9yIChjb25zdCBrIGluIG9iamVjdCkge1xuICAgIGlmIChrID09PSBhdm9pZCkgY29udGludWU7XG5cbiAgICBvYmplY3Rba10uZm9yRWFjaChlZGdlRGF0YSA9PlxuICAgICAgY2FsbGJhY2soXG4gICAgICAgIGVkZ2VEYXRhLmtleSxcbiAgICAgICAgZWRnZURhdGEuYXR0cmlidXRlcyxcbiAgICAgICAgZWRnZURhdGEuc291cmNlLmtleSxcbiAgICAgICAgZWRnZURhdGEudGFyZ2V0LmtleSxcbiAgICAgICAgZWRnZURhdGEuc291cmNlLmF0dHJpYnV0ZXMsXG4gICAgICAgIGVkZ2VEYXRhLnRhcmdldC5hdHRyaWJ1dGVzLFxuICAgICAgICBlZGdlRGF0YS51bmRpcmVjdGVkXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIGVkZ2VzIGZyb20gdGhlIGdpdmVuIG9iamVjdCB0byBtYXRjaCBvbmUgb2YgdGhlbS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gICBvYmplY3QgICAtIFRhcmdldCBvYmplY3QuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGNhbGwuXG4gKi9cbmZ1bmN0aW9uIGZpbmRTaW1wbGUob2JqZWN0LCBjYWxsYmFjaywgYXZvaWQpIHtcbiAgbGV0IHNob3VsZEJyZWFrID0gZmFsc2U7XG5cbiAgZm9yIChjb25zdCBrIGluIG9iamVjdCkge1xuICAgIGlmIChrID09PSBhdm9pZCkgY29udGludWU7XG5cbiAgICBjb25zdCBlZGdlRGF0YSA9IG9iamVjdFtrXTtcblxuICAgIHNob3VsZEJyZWFrID0gY2FsbGJhY2soXG4gICAgICBlZGdlRGF0YS5rZXksXG4gICAgICBlZGdlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgZWRnZURhdGEuc291cmNlLmtleSxcbiAgICAgIGVkZ2VEYXRhLnRhcmdldC5rZXksXG4gICAgICBlZGdlRGF0YS5zb3VyY2UuYXR0cmlidXRlcyxcbiAgICAgIGVkZ2VEYXRhLnRhcmdldC5hdHRyaWJ1dGVzLFxuICAgICAgZWRnZURhdGEudW5kaXJlY3RlZFxuICAgICk7XG5cbiAgICBpZiAoc2hvdWxkQnJlYWspIHJldHVybiBlZGdlRGF0YS5rZXk7XG4gIH1cblxuICByZXR1cm47XG59XG5cbmZ1bmN0aW9uIGZpbmRNdWx0aShvYmplY3QsIGNhbGxiYWNrLCBhdm9pZCkge1xuICBsZXQgaXRlcmF0b3IsIHN0ZXAsIGVkZ2VEYXRhLCBzb3VyY2UsIHRhcmdldDtcblxuICBsZXQgc2hvdWxkQnJlYWsgPSBmYWxzZTtcblxuICBmb3IgKGNvbnN0IGsgaW4gb2JqZWN0KSB7XG4gICAgaWYgKGsgPT09IGF2b2lkKSBjb250aW51ZTtcblxuICAgIGl0ZXJhdG9yID0gb2JqZWN0W2tdLnZhbHVlcygpO1xuXG4gICAgd2hpbGUgKCgoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSksIHN0ZXAuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICAgIGVkZ2VEYXRhID0gc3RlcC52YWx1ZTtcbiAgICAgIHNvdXJjZSA9IGVkZ2VEYXRhLnNvdXJjZTtcbiAgICAgIHRhcmdldCA9IGVkZ2VEYXRhLnRhcmdldDtcblxuICAgICAgc2hvdWxkQnJlYWsgPSBjYWxsYmFjayhcbiAgICAgICAgZWRnZURhdGEua2V5LFxuICAgICAgICBlZGdlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICBzb3VyY2Uua2V5LFxuICAgICAgICB0YXJnZXQua2V5LFxuICAgICAgICBzb3VyY2UuYXR0cmlidXRlcyxcbiAgICAgICAgdGFyZ2V0LmF0dHJpYnV0ZXMsXG4gICAgICAgIGVkZ2VEYXRhLnVuZGlyZWN0ZWRcbiAgICAgICk7XG5cbiAgICAgIGlmIChzaG91bGRCcmVhaykgcmV0dXJuIGVkZ2VEYXRhLmtleTtcbiAgICB9XG4gIH1cblxuICByZXR1cm47XG59XG5cbi8qKlxuICogRnVuY3Rpb24gcmV0dXJuaW5nIGFuIGl0ZXJhdG9yIG92ZXIgZWRnZXMgZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSAge29iamVjdH0gICBvYmplY3QgLSBUYXJnZXQgb2JqZWN0LlxuICogQHJldHVybiB7SXRlcmF0b3J9XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUl0ZXJhdG9yKG9iamVjdCwgYXZvaWQpIHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCksXG4gICAgbCA9IGtleXMubGVuZ3RoO1xuXG4gIGxldCBpbm5lciA9IG51bGwsXG4gICAgaSA9IDA7XG5cbiAgcmV0dXJuIG5ldyBJdGVyYXRvcihmdW5jdGlvbiBuZXh0KCkge1xuICAgIGxldCBlZGdlRGF0YTtcblxuICAgIGlmIChpbm5lcikge1xuICAgICAgY29uc3Qgc3RlcCA9IGlubmVyLm5leHQoKTtcblxuICAgICAgaWYgKHN0ZXAuZG9uZSkge1xuICAgICAgICBpbm5lciA9IG51bGw7XG4gICAgICAgIGkrKztcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cblxuICAgICAgZWRnZURhdGEgPSBzdGVwLnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaSA+PSBsKSByZXR1cm4ge2RvbmU6IHRydWV9O1xuXG4gICAgICBjb25zdCBrID0ga2V5c1tpXTtcblxuICAgICAgaWYgKGsgPT09IGF2b2lkKSB7XG4gICAgICAgIGkrKztcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cblxuICAgICAgZWRnZURhdGEgPSBvYmplY3Rba107XG5cbiAgICAgIGlmIChlZGdlRGF0YSBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICBpbm5lciA9IGVkZ2VEYXRhLnZhbHVlcygpO1xuICAgICAgICByZXR1cm4gbmV4dCgpO1xuICAgICAgfVxuXG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRvbmU6IGZhbHNlLFxuICAgICAgdmFsdWU6IHtcbiAgICAgICAgZWRnZTogZWRnZURhdGEua2V5LFxuICAgICAgICBhdHRyaWJ1dGVzOiBlZGdlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICBzb3VyY2U6IGVkZ2VEYXRhLnNvdXJjZS5rZXksXG4gICAgICAgIHRhcmdldDogZWRnZURhdGEudGFyZ2V0LmtleSxcbiAgICAgICAgc291cmNlQXR0cmlidXRlczogZWRnZURhdGEuc291cmNlLmF0dHJpYnV0ZXMsXG4gICAgICAgIHRhcmdldEF0dHJpYnV0ZXM6IGVkZ2VEYXRhLnRhcmdldC5hdHRyaWJ1dGVzLFxuICAgICAgICB1bmRpcmVjdGVkOiBlZGdlRGF0YS51bmRpcmVjdGVkXG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gY29sbGVjdGluZyBlZGdlcyBmcm9tIHRoZSBnaXZlbiBvYmplY3QgYXQgZ2l2ZW4ga2V5LlxuICpcbiAqIEBwYXJhbSAge2FycmF5fSAgZWRnZXMgIC0gRWRnZXMgYXJyYXkgdG8gcG9wdWxhdGUuXG4gKiBAcGFyYW0gIHtvYmplY3R9IG9iamVjdCAtIFRhcmdldCBvYmplY3QuXG4gKiBAcGFyYW0gIHttaXhlZH0gIGsgICAgICAtIE5laWdoYm9yIGtleS5cbiAqIEByZXR1cm4ge2FycmF5fSAgICAgICAgIC0gVGhlIGZvdW5kIGVkZ2VzLlxuICovXG5mdW5jdGlvbiBjb2xsZWN0Rm9yS2V5U2ltcGxlKGVkZ2VzLCBvYmplY3QsIGspIHtcbiAgY29uc3QgZWRnZURhdGEgPSBvYmplY3Rba107XG5cbiAgaWYgKCFlZGdlRGF0YSkgcmV0dXJuO1xuXG4gIGVkZ2VzLnB1c2goZWRnZURhdGEua2V5KTtcbn1cblxuZnVuY3Rpb24gY29sbGVjdEZvcktleU11bHRpKGVkZ2VzLCBvYmplY3QsIGspIHtcbiAgY29uc3QgZWRnZXNEYXRhID0gb2JqZWN0W2tdO1xuXG4gIGlmICghZWRnZXNEYXRhKSByZXR1cm47XG5cbiAgZWRnZXNEYXRhLmZvckVhY2goZWRnZURhdGEgPT4gZWRnZXMucHVzaChlZGdlRGF0YS5rZXkpKTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBpdGVyYXRpbmcgb3ZlciB0aGUgZWdkZXMgZnJvbSB0aGUgb2JqZWN0IGF0IGdpdmVuIGtleSB1c2luZ1xuICogYSBjYWxsYmFjay5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gICBvYmplY3QgICAtIFRhcmdldCBvYmplY3QuXG4gKiBAcGFyYW0ge21peGVkfSAgICBrICAgICAgICAtIE5laWdoYm9yIGtleS5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICovXG5mdW5jdGlvbiBmb3JFYWNoRm9yS2V5U2ltcGxlKG9iamVjdCwgaywgY2FsbGJhY2spIHtcbiAgY29uc3QgZWRnZURhdGEgPSBvYmplY3Rba107XG5cbiAgaWYgKCFlZGdlRGF0YSkgcmV0dXJuO1xuXG4gIGNvbnN0IHNvdXJjZURhdGEgPSBlZGdlRGF0YS5zb3VyY2U7XG4gIGNvbnN0IHRhcmdldERhdGEgPSBlZGdlRGF0YS50YXJnZXQ7XG5cbiAgY2FsbGJhY2soXG4gICAgZWRnZURhdGEua2V5LFxuICAgIGVkZ2VEYXRhLmF0dHJpYnV0ZXMsXG4gICAgc291cmNlRGF0YS5rZXksXG4gICAgdGFyZ2V0RGF0YS5rZXksXG4gICAgc291cmNlRGF0YS5hdHRyaWJ1dGVzLFxuICAgIHRhcmdldERhdGEuYXR0cmlidXRlcyxcbiAgICBlZGdlRGF0YS51bmRpcmVjdGVkXG4gICk7XG59XG5cbmZ1bmN0aW9uIGZvckVhY2hGb3JLZXlNdWx0aShvYmplY3QsIGssIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGVkZ2VzRGF0YSA9IG9iamVjdFtrXTtcblxuICBpZiAoIWVkZ2VzRGF0YSkgcmV0dXJuO1xuXG4gIGVkZ2VzRGF0YS5mb3JFYWNoKGVkZ2VEYXRhID0+XG4gICAgY2FsbGJhY2soXG4gICAgICBlZGdlRGF0YS5rZXksXG4gICAgICBlZGdlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgZWRnZURhdGEuc291cmNlLmtleSxcbiAgICAgIGVkZ2VEYXRhLnRhcmdldC5rZXksXG4gICAgICBlZGdlRGF0YS5zb3VyY2UuYXR0cmlidXRlcyxcbiAgICAgIGVkZ2VEYXRhLnRhcmdldC5hdHRyaWJ1dGVzLFxuICAgICAgZWRnZURhdGEudW5kaXJlY3RlZFxuICAgIClcbiAgKTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBpdGVyYXRpbmcgb3ZlciB0aGUgZWdkZXMgZnJvbSB0aGUgb2JqZWN0IGF0IGdpdmVuIGtleSB0byBtYXRjaFxuICogb25lIG9mIHRoZW0uXG4gKlxuICogQHBhcmFtIHtvYmplY3R9ICAgb2JqZWN0ICAgLSBUYXJnZXQgb2JqZWN0LlxuICogQHBhcmFtIHttaXhlZH0gICAgayAgICAgICAgLSBOZWlnaGJvciBrZXkuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIHVzZS5cbiAqL1xuZnVuY3Rpb24gZmluZEZvcktleVNpbXBsZShvYmplY3QsIGssIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGVkZ2VEYXRhID0gb2JqZWN0W2tdO1xuXG4gIGlmICghZWRnZURhdGEpIHJldHVybjtcblxuICBjb25zdCBzb3VyY2VEYXRhID0gZWRnZURhdGEuc291cmNlO1xuICBjb25zdCB0YXJnZXREYXRhID0gZWRnZURhdGEudGFyZ2V0O1xuXG4gIGlmIChcbiAgICBjYWxsYmFjayhcbiAgICAgIGVkZ2VEYXRhLmtleSxcbiAgICAgIGVkZ2VEYXRhLmF0dHJpYnV0ZXMsXG4gICAgICBzb3VyY2VEYXRhLmtleSxcbiAgICAgIHRhcmdldERhdGEua2V5LFxuICAgICAgc291cmNlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgdGFyZ2V0RGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgZWRnZURhdGEudW5kaXJlY3RlZFxuICAgIClcbiAgKVxuICAgIHJldHVybiBlZGdlRGF0YS5rZXk7XG59XG5cbmZ1bmN0aW9uIGZpbmRGb3JLZXlNdWx0aShvYmplY3QsIGssIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGVkZ2VzRGF0YSA9IG9iamVjdFtrXTtcblxuICBpZiAoIWVkZ2VzRGF0YSkgcmV0dXJuO1xuXG4gIGxldCBzaG91bGRCcmVhayA9IGZhbHNlO1xuXG4gIGNvbnN0IGl0ZXJhdG9yID0gZWRnZXNEYXRhLnZhbHVlcygpO1xuICBsZXQgc3RlcCwgZWRnZURhdGE7XG5cbiAgd2hpbGUgKCgoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSksIHN0ZXAuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICBlZGdlRGF0YSA9IHN0ZXAudmFsdWU7XG5cbiAgICBzaG91bGRCcmVhayA9IGNhbGxiYWNrKFxuICAgICAgZWRnZURhdGEua2V5LFxuICAgICAgZWRnZURhdGEuYXR0cmlidXRlcyxcbiAgICAgIGVkZ2VEYXRhLnNvdXJjZS5rZXksXG4gICAgICBlZGdlRGF0YS50YXJnZXQua2V5LFxuICAgICAgZWRnZURhdGEuc291cmNlLmF0dHJpYnV0ZXMsXG4gICAgICBlZGdlRGF0YS50YXJnZXQuYXR0cmlidXRlcyxcbiAgICAgIGVkZ2VEYXRhLnVuZGlyZWN0ZWRcbiAgICApO1xuXG4gICAgaWYgKHNob3VsZEJyZWFrKSByZXR1cm4gZWRnZURhdGEua2V5O1xuICB9XG5cbiAgcmV0dXJuO1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIHJldHVybmluZyBhbiBpdGVyYXRvciBvdmVyIHRoZSBlZ2RlcyBmcm9tIHRoZSBvYmplY3QgYXQgZ2l2ZW4ga2V5LlxuICpcbiAqIEBwYXJhbSAge29iamVjdH0gICBvYmplY3QgICAtIFRhcmdldCBvYmplY3QuXG4gKiBAcGFyYW0gIHttaXhlZH0gICAgayAgICAgICAgLSBOZWlnaGJvciBrZXkuXG4gKiBAcmV0dXJuIHtJdGVyYXRvcn1cbiAqL1xuZnVuY3Rpb24gY3JlYXRlSXRlcmF0b3JGb3JLZXkob2JqZWN0LCBrKSB7XG4gIGNvbnN0IHYgPSBvYmplY3Rba107XG5cbiAgaWYgKHYgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICBjb25zdCBpdGVyYXRvciA9IHYudmFsdWVzKCk7XG5cbiAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHN0ZXAgPSBpdGVyYXRvci5uZXh0KCk7XG5cbiAgICAgIGlmIChzdGVwLmRvbmUpIHJldHVybiBzdGVwO1xuXG4gICAgICBjb25zdCBlZGdlRGF0YSA9IHN0ZXAudmFsdWU7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRvbmU6IGZhbHNlLFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIGVkZ2U6IGVkZ2VEYXRhLmtleSxcbiAgICAgICAgICBhdHRyaWJ1dGVzOiBlZGdlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgIHNvdXJjZTogZWRnZURhdGEuc291cmNlLmtleSxcbiAgICAgICAgICB0YXJnZXQ6IGVkZ2VEYXRhLnRhcmdldC5rZXksXG4gICAgICAgICAgc291cmNlQXR0cmlidXRlczogZWRnZURhdGEuc291cmNlLmF0dHJpYnV0ZXMsXG4gICAgICAgICAgdGFyZ2V0QXR0cmlidXRlczogZWRnZURhdGEudGFyZ2V0LmF0dHJpYnV0ZXMsXG4gICAgICAgICAgdW5kaXJlY3RlZDogZWRnZURhdGEudW5kaXJlY3RlZFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIEl0ZXJhdG9yLm9mKFtcbiAgICB2LmtleSxcbiAgICB2LmF0dHJpYnV0ZXMsXG4gICAgdi5zb3VyY2Uua2V5LFxuICAgIHYudGFyZ2V0LmtleSxcbiAgICB2LnNvdXJjZS5hdHRyaWJ1dGVzLFxuICAgIHYudGFyZ2V0LmF0dHJpYnV0ZXNcbiAgXSk7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gY3JlYXRpbmcgYW4gYXJyYXkgb2YgZWRnZXMgZm9yIHRoZSBnaXZlbiB0eXBlLlxuICpcbiAqIEBwYXJhbSAge0dyYXBofSAgIGdyYXBoIC0gVGFyZ2V0IEdyYXBoIGluc3RhbmNlLlxuICogQHBhcmFtICB7c3RyaW5nfSAgdHlwZSAgLSBUeXBlIG9mIGVkZ2VzIHRvIHJldHJpZXZlLlxuICogQHJldHVybiB7YXJyYXl9ICAgICAgICAgLSBBcnJheSBvZiBlZGdlcy5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlRWRnZUFycmF5KGdyYXBoLCB0eXBlKSB7XG4gIGlmIChncmFwaC5zaXplID09PSAwKSByZXR1cm4gW107XG5cbiAgaWYgKHR5cGUgPT09ICdtaXhlZCcgfHwgdHlwZSA9PT0gZ3JhcGgudHlwZSkge1xuICAgIGlmICh0eXBlb2YgQXJyYXkuZnJvbSA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKGdyYXBoLl9lZGdlcy5rZXlzKCkpO1xuXG4gICAgcmV0dXJuIHRha2UoZ3JhcGguX2VkZ2VzLmtleXMoKSwgZ3JhcGguX2VkZ2VzLnNpemUpO1xuICB9XG5cbiAgY29uc3Qgc2l6ZSA9XG4gICAgdHlwZSA9PT0gJ3VuZGlyZWN0ZWQnID8gZ3JhcGgudW5kaXJlY3RlZFNpemUgOiBncmFwaC5kaXJlY3RlZFNpemU7XG5cbiAgY29uc3QgbGlzdCA9IG5ldyBBcnJheShzaXplKSxcbiAgICBtYXNrID0gdHlwZSA9PT0gJ3VuZGlyZWN0ZWQnO1xuXG4gIGNvbnN0IGl0ZXJhdG9yID0gZ3JhcGguX2VkZ2VzLnZhbHVlcygpO1xuXG4gIGxldCBpID0gMDtcbiAgbGV0IHN0ZXAsIGRhdGE7XG5cbiAgd2hpbGUgKCgoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSksIHN0ZXAuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICBkYXRhID0gc3RlcC52YWx1ZTtcblxuICAgIGlmIChkYXRhLnVuZGlyZWN0ZWQgPT09IG1hc2spIGxpc3RbaSsrXSA9IGRhdGEua2V5O1xuICB9XG5cbiAgcmV0dXJuIGxpc3Q7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gaXRlcmF0aW5nIG92ZXIgYSBncmFwaCdzIGVkZ2VzIHVzaW5nIGEgY2FsbGJhY2suXG4gKlxuICogQHBhcmFtICB7R3JhcGh9ICAgIGdyYXBoICAgIC0gVGFyZ2V0IEdyYXBoIGluc3RhbmNlLlxuICogQHBhcmFtICB7c3RyaW5nfSAgIHR5cGUgICAgIC0gVHlwZSBvZiBlZGdlcyB0byByZXRyaWV2ZS5cbiAqIEBwYXJhbSAge2Z1bmN0aW9ufSBjYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGNhbGwuXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2hFZGdlKGdyYXBoLCB0eXBlLCBjYWxsYmFjaykge1xuICBpZiAoZ3JhcGguc2l6ZSA9PT0gMCkgcmV0dXJuO1xuXG4gIGNvbnN0IHNob3VsZEZpbHRlciA9IHR5cGUgIT09ICdtaXhlZCcgJiYgdHlwZSAhPT0gZ3JhcGgudHlwZTtcbiAgY29uc3QgbWFzayA9IHR5cGUgPT09ICd1bmRpcmVjdGVkJztcblxuICBsZXQgc3RlcCwgZGF0YTtcbiAgY29uc3QgaXRlcmF0b3IgPSBncmFwaC5fZWRnZXMudmFsdWVzKCk7XG5cbiAgd2hpbGUgKCgoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSksIHN0ZXAuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICBkYXRhID0gc3RlcC52YWx1ZTtcblxuICAgIGlmIChzaG91bGRGaWx0ZXIgJiYgZGF0YS51bmRpcmVjdGVkICE9PSBtYXNrKSBjb250aW51ZTtcblxuICAgIGNvbnN0IHtrZXksIGF0dHJpYnV0ZXMsIHNvdXJjZSwgdGFyZ2V0fSA9IGRhdGE7XG5cbiAgICBjYWxsYmFjayhcbiAgICAgIGtleSxcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICBzb3VyY2Uua2V5LFxuICAgICAgdGFyZ2V0LmtleSxcbiAgICAgIHNvdXJjZS5hdHRyaWJ1dGVzLFxuICAgICAgdGFyZ2V0LmF0dHJpYnV0ZXMsXG4gICAgICBkYXRhLnVuZGlyZWN0ZWRcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogRnVuY3Rpb24gaXRlcmF0aW5nIG92ZXIgYSBncmFwaCdzIGVkZ2VzIHVzaW5nIGEgY2FsbGJhY2sgdG8gbWF0Y2ggb25lIG9mXG4gKiB0aGVtLlxuICpcbiAqIEBwYXJhbSAge0dyYXBofSAgICBncmFwaCAgICAtIFRhcmdldCBHcmFwaCBpbnN0YW5jZS5cbiAqIEBwYXJhbSAge3N0cmluZ30gICB0eXBlICAgICAtIFR5cGUgb2YgZWRnZXMgdG8gcmV0cmlldmUuXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBGdW5jdGlvbiB0byBjYWxsLlxuICovXG5mdW5jdGlvbiBmaW5kRWRnZShncmFwaCwgdHlwZSwgY2FsbGJhY2spIHtcbiAgaWYgKGdyYXBoLnNpemUgPT09IDApIHJldHVybjtcblxuICBjb25zdCBzaG91bGRGaWx0ZXIgPSB0eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09IGdyYXBoLnR5cGU7XG4gIGNvbnN0IG1hc2sgPSB0eXBlID09PSAndW5kaXJlY3RlZCc7XG5cbiAgbGV0IHN0ZXAsIGRhdGE7XG4gIGxldCBzaG91bGRCcmVhayA9IGZhbHNlO1xuICBjb25zdCBpdGVyYXRvciA9IGdyYXBoLl9lZGdlcy52YWx1ZXMoKTtcblxuICB3aGlsZSAoKChzdGVwID0gaXRlcmF0b3IubmV4dCgpKSwgc3RlcC5kb25lICE9PSB0cnVlKSkge1xuICAgIGRhdGEgPSBzdGVwLnZhbHVlO1xuXG4gICAgaWYgKHNob3VsZEZpbHRlciAmJiBkYXRhLnVuZGlyZWN0ZWQgIT09IG1hc2spIGNvbnRpbnVlO1xuXG4gICAgY29uc3Qge2tleSwgYXR0cmlidXRlcywgc291cmNlLCB0YXJnZXR9ID0gZGF0YTtcblxuICAgIHNob3VsZEJyZWFrID0gY2FsbGJhY2soXG4gICAgICBrZXksXG4gICAgICBhdHRyaWJ1dGVzLFxuICAgICAgc291cmNlLmtleSxcbiAgICAgIHRhcmdldC5rZXksXG4gICAgICBzb3VyY2UuYXR0cmlidXRlcyxcbiAgICAgIHRhcmdldC5hdHRyaWJ1dGVzLFxuICAgICAgZGF0YS51bmRpcmVjdGVkXG4gICAgKTtcblxuICAgIGlmIChzaG91bGRCcmVhaykgcmV0dXJuIGtleTtcbiAgfVxuXG4gIHJldHVybjtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBjcmVhdGluZyBhbiBpdGVyYXRvciBvZiBlZGdlcyBmb3IgdGhlIGdpdmVuIHR5cGUuXG4gKlxuICogQHBhcmFtICB7R3JhcGh9ICAgIGdyYXBoIC0gVGFyZ2V0IEdyYXBoIGluc3RhbmNlLlxuICogQHBhcmFtICB7c3RyaW5nfSAgIHR5cGUgIC0gVHlwZSBvZiBlZGdlcyB0byByZXRyaWV2ZS5cbiAqIEByZXR1cm4ge0l0ZXJhdG9yfVxuICovXG5mdW5jdGlvbiBjcmVhdGVFZGdlSXRlcmF0b3IoZ3JhcGgsIHR5cGUpIHtcbiAgaWYgKGdyYXBoLnNpemUgPT09IDApIHJldHVybiBJdGVyYXRvci5lbXB0eSgpO1xuXG4gIGNvbnN0IHNob3VsZEZpbHRlciA9IHR5cGUgIT09ICdtaXhlZCcgJiYgdHlwZSAhPT0gZ3JhcGgudHlwZTtcbiAgY29uc3QgbWFzayA9IHR5cGUgPT09ICd1bmRpcmVjdGVkJztcblxuICBjb25zdCBpdGVyYXRvciA9IGdyYXBoLl9lZGdlcy52YWx1ZXMoKTtcblxuICByZXR1cm4gbmV3IEl0ZXJhdG9yKGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgbGV0IHN0ZXAsIGRhdGE7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHN0ZXAgPSBpdGVyYXRvci5uZXh0KCk7XG5cbiAgICAgIGlmIChzdGVwLmRvbmUpIHJldHVybiBzdGVwO1xuXG4gICAgICBkYXRhID0gc3RlcC52YWx1ZTtcblxuICAgICAgaWYgKHNob3VsZEZpbHRlciAmJiBkYXRhLnVuZGlyZWN0ZWQgIT09IG1hc2spIGNvbnRpbnVlO1xuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHtcbiAgICAgIGVkZ2U6IGRhdGEua2V5LFxuICAgICAgYXR0cmlidXRlczogZGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgc291cmNlOiBkYXRhLnNvdXJjZS5rZXksXG4gICAgICB0YXJnZXQ6IGRhdGEudGFyZ2V0LmtleSxcbiAgICAgIHNvdXJjZUF0dHJpYnV0ZXM6IGRhdGEuc291cmNlLmF0dHJpYnV0ZXMsXG4gICAgICB0YXJnZXRBdHRyaWJ1dGVzOiBkYXRhLnRhcmdldC5hdHRyaWJ1dGVzLFxuICAgICAgdW5kaXJlY3RlZDogZGF0YS51bmRpcmVjdGVkXG4gICAgfTtcblxuICAgIHJldHVybiB7dmFsdWUsIGRvbmU6IGZhbHNlfTtcbiAgfSk7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gY3JlYXRpbmcgYW4gYXJyYXkgb2YgZWRnZXMgZm9yIHRoZSBnaXZlbiB0eXBlICYgdGhlIGdpdmVuIG5vZGUuXG4gKlxuICogQHBhcmFtICB7Ym9vbGVhbn0gbXVsdGkgICAgIC0gV2hldGhlciB0aGUgZ3JhcGggaXMgbXVsdGkgb3Igbm90LlxuICogQHBhcmFtICB7c3RyaW5nfSAgdHlwZSAgICAgIC0gVHlwZSBvZiBlZGdlcyB0byByZXRyaWV2ZS5cbiAqIEBwYXJhbSAge3N0cmluZ30gIGRpcmVjdGlvbiAtIEluIG9yIG91dD9cbiAqIEBwYXJhbSAge2FueX0gICAgIG5vZGVEYXRhICAtIFRhcmdldCBub2RlJ3MgZGF0YS5cbiAqIEByZXR1cm4ge2FycmF5fSAgICAgICAgICAgICAtIEFycmF5IG9mIGVkZ2VzLlxuICovXG5mdW5jdGlvbiBjcmVhdGVFZGdlQXJyYXlGb3JOb2RlKG11bHRpLCB0eXBlLCBkaXJlY3Rpb24sIG5vZGVEYXRhKSB7XG4gIGNvbnN0IGVkZ2VzID0gW107XG5cbiAgY29uc3QgZm4gPSBtdWx0aSA/IGNvbGxlY3RNdWx0aSA6IGNvbGxlY3RTaW1wbGU7XG5cbiAgaWYgKHR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgIGlmIChkaXJlY3Rpb24gIT09ICdvdXQnKSBmbihlZGdlcywgbm9kZURhdGEuaW4pO1xuICAgIGlmIChkaXJlY3Rpb24gIT09ICdpbicpIGZuKGVkZ2VzLCBub2RlRGF0YS5vdXQpO1xuXG4gICAgLy8gSGFuZGxpbmcgc2VsZiBsb29wIGVkZ2UgY2FzZVxuICAgIGlmICghZGlyZWN0aW9uICYmIG5vZGVEYXRhLmRpcmVjdGVkU2VsZkxvb3BzID4gMClcbiAgICAgIGVkZ2VzLnNwbGljZShlZGdlcy5sYXN0SW5kZXhPZihub2RlRGF0YS5rZXkpLCAxKTtcbiAgfVxuXG4gIGlmICh0eXBlICE9PSAnZGlyZWN0ZWQnKSB7XG4gICAgZm4oZWRnZXMsIG5vZGVEYXRhLnVuZGlyZWN0ZWQpO1xuICB9XG5cbiAgcmV0dXJuIGVkZ2VzO1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIGEgbm9kZSdzIGVkZ2VzIHVzaW5nIGEgY2FsbGJhY2suXG4gKlxuICogQHBhcmFtICB7Ym9vbGVhbn0gIG11bHRpICAgICAtIFdoZXRoZXIgdGhlIGdyYXBoIGlzIG11bHRpIG9yIG5vdC5cbiAqIEBwYXJhbSAge3N0cmluZ30gICB0eXBlICAgICAgLSBUeXBlIG9mIGVkZ2VzIHRvIHJldHJpZXZlLlxuICogQHBhcmFtICB7c3RyaW5nfSAgIGRpcmVjdGlvbiAtIEluIG9yIG91dD9cbiAqIEBwYXJhbSAge2FueX0gICAgICBub2RlRGF0YSAgLSBUYXJnZXQgbm9kZSdzIGRhdGEuXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgIC0gRnVuY3Rpb24gdG8gY2FsbC5cbiAqL1xuZnVuY3Rpb24gZm9yRWFjaEVkZ2VGb3JOb2RlKG11bHRpLCB0eXBlLCBkaXJlY3Rpb24sIG5vZGVEYXRhLCBjYWxsYmFjaykge1xuICBjb25zdCBmbiA9IG11bHRpID8gZm9yRWFjaE11bHRpIDogZm9yRWFjaFNpbXBsZTtcblxuICBpZiAodHlwZSAhPT0gJ3VuZGlyZWN0ZWQnKSB7XG4gICAgaWYgKGRpcmVjdGlvbiAhPT0gJ291dCcpIGZuKG5vZGVEYXRhLmluLCBjYWxsYmFjayk7XG4gICAgaWYgKGRpcmVjdGlvbiAhPT0gJ2luJylcbiAgICAgIGZuKG5vZGVEYXRhLm91dCwgY2FsbGJhY2ssICFkaXJlY3Rpb24gPyBub2RlRGF0YS5rZXkgOiBudWxsKTtcbiAgfVxuXG4gIGlmICh0eXBlICE9PSAnZGlyZWN0ZWQnKSB7XG4gICAgZm4obm9kZURhdGEudW5kaXJlY3RlZCwgY2FsbGJhY2spO1xuICB9XG59XG5cbi8qKlxuICogRnVuY3Rpb24gaXRlcmF0aW5nIG92ZXIgYSBub2RlJ3MgZWRnZXMgdXNpbmcgYSBjYWxsYmFjayB0byBtYXRjaCBvbmUgb2YgdGhlbS5cbiAqXG4gKiBAcGFyYW0gIHtib29sZWFufSAgbXVsdGkgICAgIC0gV2hldGhlciB0aGUgZ3JhcGggaXMgbXVsdGkgb3Igbm90LlxuICogQHBhcmFtICB7c3RyaW5nfSAgIHR5cGUgICAgICAtIFR5cGUgb2YgZWRnZXMgdG8gcmV0cmlldmUuXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgZGlyZWN0aW9uIC0gSW4gb3Igb3V0P1xuICogQHBhcmFtICB7YW55fSAgICAgIG5vZGVEYXRhICAtIFRhcmdldCBub2RlJ3MgZGF0YS5cbiAqIEBwYXJhbSAge2Z1bmN0aW9ufSBjYWxsYmFjayAgLSBGdW5jdGlvbiB0byBjYWxsLlxuICovXG5mdW5jdGlvbiBmaW5kRWRnZUZvck5vZGUobXVsdGksIHR5cGUsIGRpcmVjdGlvbiwgbm9kZURhdGEsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGZuID0gbXVsdGkgPyBmaW5kTXVsdGkgOiBmaW5kU2ltcGxlO1xuXG4gIGxldCBmb3VuZDtcblxuICBpZiAodHlwZSAhPT0gJ3VuZGlyZWN0ZWQnKSB7XG4gICAgaWYgKGRpcmVjdGlvbiAhPT0gJ291dCcpIHtcbiAgICAgIGZvdW5kID0gZm4obm9kZURhdGEuaW4sIGNhbGxiYWNrKTtcblxuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gIT09ICdpbicpIHtcbiAgICAgIGZvdW5kID0gZm4obm9kZURhdGEub3V0LCBjYWxsYmFjaywgIWRpcmVjdGlvbiA/IG5vZGVEYXRhLmtleSA6IG51bGwpO1xuXG4gICAgICBpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZSAhPT0gJ2RpcmVjdGVkJykge1xuICAgIGZvdW5kID0gZm4obm9kZURhdGEudW5kaXJlY3RlZCwgY2FsbGJhY2spO1xuXG4gICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG4gIH1cblxuICByZXR1cm47XG59XG5cbi8qKlxuICogRnVuY3Rpb24gaXRlcmF0aW5nIG92ZXIgYSBub2RlJ3MgZWRnZXMgdXNpbmcgYSBjYWxsYmFjay5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgdHlwZSAgICAgIC0gVHlwZSBvZiBlZGdlcyB0byByZXRyaWV2ZS5cbiAqIEBwYXJhbSAge3N0cmluZ30gICBkaXJlY3Rpb24gLSBJbiBvciBvdXQ/XG4gKiBAcGFyYW0gIHthbnl9ICAgICAgbm9kZURhdGEgIC0gVGFyZ2V0IG5vZGUncyBkYXRhLlxuICogQHJldHVybiB7SXRlcmF0b3J9XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUVkZ2VJdGVyYXRvckZvck5vZGUodHlwZSwgZGlyZWN0aW9uLCBub2RlRGF0YSkge1xuICBsZXQgaXRlcmF0b3IgPSBJdGVyYXRvci5lbXB0eSgpO1xuXG4gIGlmICh0eXBlICE9PSAndW5kaXJlY3RlZCcpIHtcbiAgICBpZiAoZGlyZWN0aW9uICE9PSAnb3V0JyAmJiB0eXBlb2Ygbm9kZURhdGEuaW4gIT09ICd1bmRlZmluZWQnKVxuICAgICAgaXRlcmF0b3IgPSBjaGFpbihpdGVyYXRvciwgY3JlYXRlSXRlcmF0b3Iobm9kZURhdGEuaW4pKTtcbiAgICBpZiAoZGlyZWN0aW9uICE9PSAnaW4nICYmIHR5cGVvZiBub2RlRGF0YS5vdXQgIT09ICd1bmRlZmluZWQnKVxuICAgICAgaXRlcmF0b3IgPSBjaGFpbihcbiAgICAgICAgaXRlcmF0b3IsXG4gICAgICAgIGNyZWF0ZUl0ZXJhdG9yKG5vZGVEYXRhLm91dCwgIWRpcmVjdGlvbiA/IG5vZGVEYXRhLmtleSA6IG51bGwpXG4gICAgICApO1xuICB9XG5cbiAgaWYgKHR5cGUgIT09ICdkaXJlY3RlZCcgJiYgdHlwZW9mIG5vZGVEYXRhLnVuZGlyZWN0ZWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgaXRlcmF0b3IgPSBjaGFpbihpdGVyYXRvciwgY3JlYXRlSXRlcmF0b3Iobm9kZURhdGEudW5kaXJlY3RlZCkpO1xuICB9XG5cbiAgcmV0dXJuIGl0ZXJhdG9yO1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGNyZWF0aW5nIGFuIGFycmF5IG9mIGVkZ2VzIGZvciB0aGUgZ2l2ZW4gcGF0aC5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgdHlwZSAgICAgICAtIFR5cGUgb2YgZWRnZXMgdG8gcmV0cmlldmUuXG4gKiBAcGFyYW0gIHtib29sZWFufSAgbXVsdGkgICAgICAtIFdoZXRoZXIgdGhlIGdyYXBoIGlzIG11bHRpLlxuICogQHBhcmFtICB7c3RyaW5nfSAgIGRpcmVjdGlvbiAgLSBJbiBvciBvdXQ/XG4gKiBAcGFyYW0gIHtOb2RlRGF0YX0gc291cmNlRGF0YSAtIFNvdXJjZSBub2RlJ3MgZGF0YS5cbiAqIEBwYXJhbSAge2FueX0gICAgICB0YXJnZXQgICAgIC0gVGFyZ2V0IG5vZGUuXG4gKiBAcmV0dXJuIHthcnJheX0gICAgICAgICAgICAgICAtIEFycmF5IG9mIGVkZ2VzLlxuICovXG5mdW5jdGlvbiBjcmVhdGVFZGdlQXJyYXlGb3JQYXRoKHR5cGUsIG11bHRpLCBkaXJlY3Rpb24sIHNvdXJjZURhdGEsIHRhcmdldCkge1xuICBjb25zdCBmbiA9IG11bHRpID8gY29sbGVjdEZvcktleU11bHRpIDogY29sbGVjdEZvcktleVNpbXBsZTtcblxuICBjb25zdCBlZGdlcyA9IFtdO1xuXG4gIGlmICh0eXBlICE9PSAndW5kaXJlY3RlZCcpIHtcbiAgICBpZiAodHlwZW9mIHNvdXJjZURhdGEuaW4gIT09ICd1bmRlZmluZWQnICYmIGRpcmVjdGlvbiAhPT0gJ291dCcpXG4gICAgICBmbihlZGdlcywgc291cmNlRGF0YS5pbiwgdGFyZ2V0KTtcblxuICAgIGlmICh0eXBlb2Ygc291cmNlRGF0YS5vdXQgIT09ICd1bmRlZmluZWQnICYmIGRpcmVjdGlvbiAhPT0gJ2luJylcbiAgICAgIGZuKGVkZ2VzLCBzb3VyY2VEYXRhLm91dCwgdGFyZ2V0KTtcblxuICAgIC8vIEhhbmRsaW5nIHNlbGYgbG9vcCBlZGdlIGNhc2VcbiAgICBpZiAoIWRpcmVjdGlvbiAmJiBzb3VyY2VEYXRhLmRpcmVjdGVkU2VsZkxvb3BzID4gMClcbiAgICAgIGVkZ2VzLnNwbGljZShlZGdlcy5sYXN0SW5kZXhPZihzb3VyY2VEYXRhLmtleSksIDEpO1xuICB9XG5cbiAgaWYgKHR5cGUgIT09ICdkaXJlY3RlZCcpIHtcbiAgICBpZiAodHlwZW9mIHNvdXJjZURhdGEudW5kaXJlY3RlZCAhPT0gJ3VuZGVmaW5lZCcpXG4gICAgICBmbihlZGdlcywgc291cmNlRGF0YS51bmRpcmVjdGVkLCB0YXJnZXQpO1xuICB9XG5cbiAgcmV0dXJuIGVkZ2VzO1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIGVkZ2VzIGZvciB0aGUgZ2l2ZW4gcGF0aCB1c2luZyBhIGNhbGxiYWNrLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gICB0eXBlICAgICAgIC0gVHlwZSBvZiBlZGdlcyB0byByZXRyaWV2ZS5cbiAqIEBwYXJhbSAge2Jvb2xlYW59ICBtdWx0aSAgICAgIC0gV2hldGhlciB0aGUgZ3JhcGggaXMgbXVsdGkuXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgZGlyZWN0aW9uICAtIEluIG9yIG91dD9cbiAqIEBwYXJhbSAge05vZGVEYXRhfSBzb3VyY2VEYXRhIC0gU291cmNlIG5vZGUncyBkYXRhLlxuICogQHBhcmFtICB7c3RyaW5nfSAgIHRhcmdldCAgICAgLSBUYXJnZXQgbm9kZS5cbiAqIEBwYXJhbSAge2Z1bmN0aW9ufSBjYWxsYmFjayAgIC0gRnVuY3Rpb24gdG8gY2FsbC5cbiAqL1xuZnVuY3Rpb24gZm9yRWFjaEVkZ2VGb3JQYXRoKFxuICB0eXBlLFxuICBtdWx0aSxcbiAgZGlyZWN0aW9uLFxuICBzb3VyY2VEYXRhLFxuICB0YXJnZXQsXG4gIGNhbGxiYWNrXG4pIHtcbiAgY29uc3QgZm4gPSBtdWx0aSA/IGZvckVhY2hGb3JLZXlNdWx0aSA6IGZvckVhY2hGb3JLZXlTaW1wbGU7XG5cbiAgaWYgKHR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgIGlmICh0eXBlb2Ygc291cmNlRGF0YS5pbiAhPT0gJ3VuZGVmaW5lZCcgJiYgZGlyZWN0aW9uICE9PSAnb3V0JylcbiAgICAgIGZuKHNvdXJjZURhdGEuaW4sIHRhcmdldCwgY2FsbGJhY2spO1xuXG4gICAgaWYgKHNvdXJjZURhdGEua2V5ICE9PSB0YXJnZXQpXG4gICAgICBpZiAodHlwZW9mIHNvdXJjZURhdGEub3V0ICE9PSAndW5kZWZpbmVkJyAmJiBkaXJlY3Rpb24gIT09ICdpbicpXG4gICAgICAgIGZuKHNvdXJjZURhdGEub3V0LCB0YXJnZXQsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIGlmICh0eXBlICE9PSAnZGlyZWN0ZWQnKSB7XG4gICAgaWYgKHR5cGVvZiBzb3VyY2VEYXRhLnVuZGlyZWN0ZWQgIT09ICd1bmRlZmluZWQnKVxuICAgICAgZm4oc291cmNlRGF0YS51bmRpcmVjdGVkLCB0YXJnZXQsIGNhbGxiYWNrKTtcbiAgfVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIGVkZ2VzIGZvciB0aGUgZ2l2ZW4gcGF0aCB1c2luZyBhIGNhbGxiYWNrIHRvIG1hdGNoXG4gKiBvbmUgb2YgdGhlbS5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgdHlwZSAgICAgICAtIFR5cGUgb2YgZWRnZXMgdG8gcmV0cmlldmUuXG4gKiBAcGFyYW0gIHtib29sZWFufSAgbXVsdGkgICAgICAtIFdoZXRoZXIgdGhlIGdyYXBoIGlzIG11bHRpLlxuICogQHBhcmFtICB7c3RyaW5nfSAgIGRpcmVjdGlvbiAgLSBJbiBvciBvdXQ/XG4gKiBAcGFyYW0gIHtOb2RlRGF0YX0gc291cmNlRGF0YSAtIFNvdXJjZSBub2RlJ3MgZGF0YS5cbiAqIEBwYXJhbSAge3N0cmluZ30gICB0YXJnZXQgICAgIC0gVGFyZ2V0IG5vZGUuXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgICAtIEZ1bmN0aW9uIHRvIGNhbGwuXG4gKi9cbmZ1bmN0aW9uIGZpbmRFZGdlRm9yUGF0aCh0eXBlLCBtdWx0aSwgZGlyZWN0aW9uLCBzb3VyY2VEYXRhLCB0YXJnZXQsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGZuID0gbXVsdGkgPyBmaW5kRm9yS2V5TXVsdGkgOiBmaW5kRm9yS2V5U2ltcGxlO1xuXG4gIGxldCBmb3VuZDtcblxuICBpZiAodHlwZSAhPT0gJ3VuZGlyZWN0ZWQnKSB7XG4gICAgaWYgKHR5cGVvZiBzb3VyY2VEYXRhLmluICE9PSAndW5kZWZpbmVkJyAmJiBkaXJlY3Rpb24gIT09ICdvdXQnKSB7XG4gICAgICBmb3VuZCA9IGZuKHNvdXJjZURhdGEuaW4sIHRhcmdldCwgY2FsbGJhY2spO1xuXG4gICAgICBpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlRGF0YS5rZXkgIT09IHRhcmdldClcbiAgICAgIGlmICh0eXBlb2Ygc291cmNlRGF0YS5vdXQgIT09ICd1bmRlZmluZWQnICYmIGRpcmVjdGlvbiAhPT0gJ2luJykge1xuICAgICAgICBmb3VuZCA9IGZuKFxuICAgICAgICAgIHNvdXJjZURhdGEub3V0LFxuICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgICAhZGlyZWN0aW9uID8gc291cmNlRGF0YS5rZXkgOiBudWxsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG4gICAgICB9XG4gIH1cblxuICBpZiAodHlwZSAhPT0gJ2RpcmVjdGVkJykge1xuICAgIGlmICh0eXBlb2Ygc291cmNlRGF0YS51bmRpcmVjdGVkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgZm91bmQgPSBmbihzb3VyY2VEYXRhLnVuZGlyZWN0ZWQsIHRhcmdldCwgY2FsbGJhY2spO1xuXG4gICAgICBpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcbiAgICB9XG4gIH1cblxuICByZXR1cm47XG59XG5cbi8qKlxuICogRnVuY3Rpb24gcmV0dXJuaW5nIGFuIGl0ZXJhdG9yIG92ZXIgZWRnZXMgZm9yIHRoZSBnaXZlbiBwYXRoLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gICB0eXBlICAgICAgIC0gVHlwZSBvZiBlZGdlcyB0byByZXRyaWV2ZS5cbiAqIEBwYXJhbSAge3N0cmluZ30gICBkaXJlY3Rpb24gIC0gSW4gb3Igb3V0P1xuICogQHBhcmFtICB7Tm9kZURhdGF9IHNvdXJjZURhdGEgLSBTb3VyY2Ugbm9kZSdzIGRhdGEuXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgdGFyZ2V0ICAgICAtIFRhcmdldCBub2RlLlxuICogQHBhcmFtICB7ZnVuY3Rpb259IGNhbGxiYWNrICAgLSBGdW5jdGlvbiB0byBjYWxsLlxuICovXG5mdW5jdGlvbiBjcmVhdGVFZGdlSXRlcmF0b3JGb3JQYXRoKHR5cGUsIGRpcmVjdGlvbiwgc291cmNlRGF0YSwgdGFyZ2V0KSB7XG4gIGxldCBpdGVyYXRvciA9IEl0ZXJhdG9yLmVtcHR5KCk7XG5cbiAgaWYgKHR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgIGlmIChcbiAgICAgIHR5cGVvZiBzb3VyY2VEYXRhLmluICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgZGlyZWN0aW9uICE9PSAnb3V0JyAmJlxuICAgICAgdGFyZ2V0IGluIHNvdXJjZURhdGEuaW5cbiAgICApXG4gICAgICBpdGVyYXRvciA9IGNoYWluKGl0ZXJhdG9yLCBjcmVhdGVJdGVyYXRvckZvcktleShzb3VyY2VEYXRhLmluLCB0YXJnZXQpKTtcblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBzb3VyY2VEYXRhLm91dCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgIGRpcmVjdGlvbiAhPT0gJ2luJyAmJlxuICAgICAgdGFyZ2V0IGluIHNvdXJjZURhdGEub3V0XG4gICAgKVxuICAgICAgaXRlcmF0b3IgPSBjaGFpbihpdGVyYXRvciwgY3JlYXRlSXRlcmF0b3JGb3JLZXkoc291cmNlRGF0YS5vdXQsIHRhcmdldCkpO1xuICB9XG5cbiAgaWYgKHR5cGUgIT09ICdkaXJlY3RlZCcpIHtcbiAgICBpZiAoXG4gICAgICB0eXBlb2Ygc291cmNlRGF0YS51bmRpcmVjdGVkICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgdGFyZ2V0IGluIHNvdXJjZURhdGEudW5kaXJlY3RlZFxuICAgIClcbiAgICAgIGl0ZXJhdG9yID0gY2hhaW4oXG4gICAgICAgIGl0ZXJhdG9yLFxuICAgICAgICBjcmVhdGVJdGVyYXRvckZvcktleShzb3VyY2VEYXRhLnVuZGlyZWN0ZWQsIHRhcmdldClcbiAgICAgICk7XG4gIH1cblxuICByZXR1cm4gaXRlcmF0b3I7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gYXR0YWNoaW5nIGFuIGVkZ2UgYXJyYXkgY3JlYXRvciBtZXRob2QgdG8gdGhlIEdyYXBoIHByb3RvdHlwZS5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzcyAgICAgICAtIFRhcmdldCBjbGFzcy5cbiAqIEBwYXJhbSB7b2JqZWN0fSAgIGRlc2NyaXB0aW9uIC0gTWV0aG9kIGRlc2NyaXB0aW9uLlxuICovXG5mdW5jdGlvbiBhdHRhY2hFZGdlQXJyYXlDcmVhdG9yKENsYXNzLCBkZXNjcmlwdGlvbikge1xuICBjb25zdCB7bmFtZSwgdHlwZSwgZGlyZWN0aW9ufSA9IGRlc2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiByZXR1cm5pbmcgYW4gYXJyYXkgb2YgY2VydGFpbiBlZGdlcy5cbiAgICpcbiAgICogQXJpdHkgMDogUmV0dXJuIGFsbCB0aGUgcmVsZXZhbnQgZWRnZXMuXG4gICAqXG4gICAqIEFyaXR5IDE6IFJldHVybiBhbGwgb2YgYSBub2RlJ3MgcmVsZXZhbnQgZWRnZXMuXG4gICAqIEBwYXJhbSAge2FueX0gICBub2RlICAgLSBUYXJnZXQgbm9kZS5cbiAgICpcbiAgICogQXJpdHkgMjogUmV0dXJuIHRoZSByZWxldmFudCBlZGdlcyBhY3Jvc3MgdGhlIGdpdmVuIHBhdGguXG4gICAqIEBwYXJhbSAge2FueX0gICBzb3VyY2UgLSBTb3VyY2Ugbm9kZS5cbiAgICogQHBhcmFtICB7YW55fSAgIHRhcmdldCAtIFRhcmdldCBub2RlLlxuICAgKlxuICAgKiBAcmV0dXJuIHthcnJheXxudW1iZXJ9IC0gVGhlIGVkZ2VzIG9yIHRoZSBudW1iZXIgb2YgZWRnZXMuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlcmUgYXJlIHRvbyBtYW55IGFyZ3VtZW50cy5cbiAgICovXG4gIENsYXNzLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uIChzb3VyY2UsIHRhcmdldCkge1xuICAgIC8vIEVhcmx5IHRlcm1pbmF0aW9uXG4gICAgaWYgKHR5cGUgIT09ICdtaXhlZCcgJiYgdGhpcy50eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09IHRoaXMudHlwZSlcbiAgICAgIHJldHVybiBbXTtcblxuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIGNyZWF0ZUVkZ2VBcnJheSh0aGlzLCB0eXBlKTtcblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICBzb3VyY2UgPSAnJyArIHNvdXJjZTtcblxuICAgICAgY29uc3Qgbm9kZURhdGEgPSB0aGlzLl9ub2Rlcy5nZXQoc291cmNlKTtcblxuICAgICAgaWYgKHR5cGVvZiBub2RlRGF0YSA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bmFtZX06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7c291cmNlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcblxuICAgICAgLy8gSXRlcmF0aW5nIG92ZXIgYSBub2RlJ3MgZWRnZXNcbiAgICAgIHJldHVybiBjcmVhdGVFZGdlQXJyYXlGb3JOb2RlKFxuICAgICAgICB0aGlzLm11bHRpLFxuICAgICAgICB0eXBlID09PSAnbWl4ZWQnID8gdGhpcy50eXBlIDogdHlwZSxcbiAgICAgICAgZGlyZWN0aW9uLFxuICAgICAgICBub2RlRGF0YVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgc291cmNlID0gJycgKyBzb3VyY2U7XG4gICAgICB0YXJnZXQgPSAnJyArIHRhcmdldDtcblxuICAgICAgY29uc3Qgc291cmNlRGF0YSA9IHRoaXMuX25vZGVzLmdldChzb3VyY2UpO1xuXG4gICAgICBpZiAoIXNvdXJjZURhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bmFtZX06ICBjb3VsZCBub3QgZmluZCB0aGUgXCIke3NvdXJjZX1cIiBzb3VyY2Ugbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgICApO1xuXG4gICAgICBpZiAoIXRoaXMuX25vZGVzLmhhcyh0YXJnZXQpKVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke25hbWV9OiAgY291bGQgbm90IGZpbmQgdGhlIFwiJHt0YXJnZXR9XCIgdGFyZ2V0IG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcblxuICAgICAgLy8gSXRlcmF0aW5nIG92ZXIgdGhlIGVkZ2VzIGJldHdlZW4gc291cmNlICYgdGFyZ2V0XG4gICAgICByZXR1cm4gY3JlYXRlRWRnZUFycmF5Rm9yUGF0aChcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdGhpcy5tdWx0aSxcbiAgICAgICAgZGlyZWN0aW9uLFxuICAgICAgICBzb3VyY2VEYXRhLFxuICAgICAgICB0YXJnZXRcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgYEdyYXBoLiR7bmFtZX06IHRvbyBtYW55IGFyZ3VtZW50cyAoZXhwZWN0aW5nIDAsIDEgb3IgMiBhbmQgZ290ICR7YXJndW1lbnRzLmxlbmd0aH0pLmBcbiAgICApO1xuICB9O1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGF0dGFjaGluZyBhIGVkZ2UgY2FsbGJhY2sgaXRlcmF0b3IgbWV0aG9kIHRvIHRoZSBHcmFwaCBwcm90b3R5cGUuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3MgICAgICAgLSBUYXJnZXQgY2xhc3MuXG4gKiBAcGFyYW0ge29iamVjdH0gICBkZXNjcmlwdGlvbiAtIE1ldGhvZCBkZXNjcmlwdGlvbi5cbiAqL1xuZnVuY3Rpb24gYXR0YWNoRm9yRWFjaEVkZ2UoQ2xhc3MsIGRlc2NyaXB0aW9uKSB7XG4gIGNvbnN0IHtuYW1lLCB0eXBlLCBkaXJlY3Rpb259ID0gZGVzY3JpcHRpb247XG5cbiAgY29uc3QgZm9yRWFjaE5hbWUgPSAnZm9yRWFjaCcgKyBuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEsIC0xKTtcblxuICAvKipcbiAgICogRnVuY3Rpb24gaXRlcmF0aW5nIG92ZXIgdGhlIGdyYXBoJ3MgcmVsZXZhbnQgZWRnZXMgYnkgYXBwbHlpbmcgdGhlIGdpdmVuXG4gICAqIGNhbGxiYWNrLlxuICAgKlxuICAgKiBBcml0eSAxOiBJdGVyYXRlIG92ZXIgYWxsIHRoZSByZWxldmFudCBlZGdlcy5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICAgKlxuICAgKiBBcml0eSAyOiBJdGVyYXRlIG92ZXIgYWxsIG9mIGEgbm9kZSdzIHJlbGV2YW50IGVkZ2VzLlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgbm9kZSAgICAgLSBUYXJnZXQgbm9kZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICAgKlxuICAgKiBBcml0eSAzOiBJdGVyYXRlIG92ZXIgdGhlIHJlbGV2YW50IGVkZ2VzIGFjcm9zcyB0aGUgZ2l2ZW4gcGF0aC5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIHNvdXJjZSAgIC0gU291cmNlIG5vZGUuXG4gICAqIEBwYXJhbSAge2FueX0gICAgICB0YXJnZXQgICAtIFRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byB1c2UuXG4gICAqXG4gICAqIEByZXR1cm4ge3VuZGVmaW5lZH1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgYXJndW1lbnRzLlxuICAgKi9cbiAgQ2xhc3MucHJvdG90eXBlW2ZvckVhY2hOYW1lXSA9IGZ1bmN0aW9uIChzb3VyY2UsIHRhcmdldCwgY2FsbGJhY2spIHtcbiAgICAvLyBFYXJseSB0ZXJtaW5hdGlvblxuICAgIGlmICh0eXBlICE9PSAnbWl4ZWQnICYmIHRoaXMudHlwZSAhPT0gJ21peGVkJyAmJiB0eXBlICE9PSB0aGlzLnR5cGUpIHJldHVybjtcblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICBjYWxsYmFjayA9IHNvdXJjZTtcbiAgICAgIHJldHVybiBmb3JFYWNoRWRnZSh0aGlzLCB0eXBlLCBjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHNvdXJjZSA9ICcnICsgc291cmNlO1xuICAgICAgY2FsbGJhY2sgPSB0YXJnZXQ7XG5cbiAgICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KHNvdXJjZSk7XG5cbiAgICAgIGlmICh0eXBlb2Ygbm9kZURhdGEgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke2ZvckVhY2hOYW1lfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtzb3VyY2V9XCIgbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgICApO1xuXG4gICAgICAvLyBJdGVyYXRpbmcgb3ZlciBhIG5vZGUncyBlZGdlc1xuICAgICAgLy8gVE9ETzogbWF5YmUgYXR0YWNoIHRoZSBzdWIgbWV0aG9kIHRvIHRoZSBpbnN0YW5jZSBkeW5hbWljYWxseT9cbiAgICAgIHJldHVybiBmb3JFYWNoRWRnZUZvck5vZGUoXG4gICAgICAgIHRoaXMubXVsdGksXG4gICAgICAgIHR5cGUgPT09ICdtaXhlZCcgPyB0aGlzLnR5cGUgOiB0eXBlLFxuICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgIG5vZGVEYXRhLFxuICAgICAgICBjYWxsYmFja1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMykge1xuICAgICAgc291cmNlID0gJycgKyBzb3VyY2U7XG4gICAgICB0YXJnZXQgPSAnJyArIHRhcmdldDtcblxuICAgICAgY29uc3Qgc291cmNlRGF0YSA9IHRoaXMuX25vZGVzLmdldChzb3VyY2UpO1xuXG4gICAgICBpZiAoIXNvdXJjZURhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7Zm9yRWFjaE5hbWV9OiAgY291bGQgbm90IGZpbmQgdGhlIFwiJHtzb3VyY2V9XCIgc291cmNlIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcblxuICAgICAgaWYgKCF0aGlzLl9ub2Rlcy5oYXModGFyZ2V0KSlcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHtmb3JFYWNoTmFtZX06ICBjb3VsZCBub3QgZmluZCB0aGUgXCIke3RhcmdldH1cIiB0YXJnZXQgbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgICApO1xuXG4gICAgICAvLyBJdGVyYXRpbmcgb3ZlciB0aGUgZWRnZXMgYmV0d2VlbiBzb3VyY2UgJiB0YXJnZXRcbiAgICAgIHJldHVybiBmb3JFYWNoRWRnZUZvclBhdGgoXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHRoaXMubXVsdGksXG4gICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgc291cmNlRGF0YSxcbiAgICAgICAgdGFyZ2V0LFxuICAgICAgICBjYWxsYmFja1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICBgR3JhcGguJHtmb3JFYWNoTmFtZX06IHRvbyBtYW55IGFyZ3VtZW50cyAoZXhwZWN0aW5nIDEsIDIgb3IgMyBhbmQgZ290ICR7YXJndW1lbnRzLmxlbmd0aH0pLmBcbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiBtYXBwaW5nIHRoZSBncmFwaCdzIHJlbGV2YW50IGVkZ2VzIGJ5IGFwcGx5aW5nIHRoZSBnaXZlblxuICAgKiBjYWxsYmFjay5cbiAgICpcbiAgICogQXJpdHkgMTogTWFwIGFsbCB0aGUgcmVsZXZhbnQgZWRnZXMuXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIHVzZS5cbiAgICpcbiAgICogQXJpdHkgMjogTWFwIGFsbCBvZiBhIG5vZGUncyByZWxldmFudCBlZGdlcy5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIG5vZGUgICAgIC0gVGFyZ2V0IG5vZGUuXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIHVzZS5cbiAgICpcbiAgICogQXJpdHkgMzogTWFwIHRoZSByZWxldmFudCBlZGdlcyBhY3Jvc3MgdGhlIGdpdmVuIHBhdGguXG4gICAqIEBwYXJhbSAge2FueX0gICAgICBzb3VyY2UgICAtIFNvdXJjZSBub2RlLlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgdGFyZ2V0ICAgLSBUYXJnZXQgbm9kZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICAgKlxuICAgKiBAcmV0dXJuIHt1bmRlZmluZWR9XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlcmUgYXJlIHRvbyBtYW55IGFyZ3VtZW50cy5cbiAgICovXG4gIGNvbnN0IG1hcE5hbWUgPSAnbWFwJyArIG5hbWVbMF0udG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSk7XG5cbiAgQ2xhc3MucHJvdG90eXBlW21hcE5hbWVdID0gZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgIGNvbnN0IGNhbGxiYWNrID0gYXJncy5wb3AoKTtcblxuICAgIGxldCByZXN1bHQ7XG5cbiAgICAvLyBXZSBrbm93IHRoZSByZXN1bHQgbGVuZ3RoIGJlZm9yZWhhbmRcbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIGxldCBsZW5ndGggPSAwO1xuXG4gICAgICBpZiAodHlwZSAhPT0gJ2RpcmVjdGVkJykgbGVuZ3RoICs9IHRoaXMudW5kaXJlY3RlZFNpemU7XG4gICAgICBpZiAodHlwZSAhPT0gJ3VuZGlyZWN0ZWQnKSBsZW5ndGggKz0gdGhpcy5kaXJlY3RlZFNpemU7XG5cbiAgICAgIHJlc3VsdCA9IG5ldyBBcnJheShsZW5ndGgpO1xuXG4gICAgICBsZXQgaSA9IDA7XG5cbiAgICAgIGFyZ3MucHVzaCgoZSwgZWEsIHMsIHQsIHNhLCB0YSwgdSkgPT4ge1xuICAgICAgICByZXN1bHRbaSsrXSA9IGNhbGxiYWNrKGUsIGVhLCBzLCB0LCBzYSwgdGEsIHUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gV2UgZG9uJ3Qga25vdyB0aGUgcmVzdWx0IGxlbmd0aCBiZWZvcmVoYW5kXG4gICAgLy8gVE9ETzogd2UgY2FuIGluIHNvbWUgaW5zdGFuY2VzIG9mIHNpbXBsZSBncmFwaHMsIGtub3dpbmcgZGVncmVlXG4gICAgZWxzZSB7XG4gICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgYXJncy5wdXNoKChlLCBlYSwgcywgdCwgc2EsIHRhLCB1KSA9PiB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGNhbGxiYWNrKGUsIGVhLCBzLCB0LCBzYSwgdGEsIHUpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXNbZm9yRWFjaE5hbWVdLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvKipcbiAgICogRnVuY3Rpb24gZmlsdGVyaW5nIHRoZSBncmFwaCdzIHJlbGV2YW50IGVkZ2VzIHVzaW5nIHRoZSBwcm92aWRlZCBwcmVkaWNhdGVcbiAgICogZnVuY3Rpb24uXG4gICAqXG4gICAqIEFyaXR5IDE6IEZpbHRlciBhbGwgdGhlIHJlbGV2YW50IGVkZ2VzLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gcHJlZGljYXRlIC0gUHJlZGljYXRlIHRvIHVzZS5cbiAgICpcbiAgICogQXJpdHkgMjogRmlsdGVyIGFsbCBvZiBhIG5vZGUncyByZWxldmFudCBlZGdlcy5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIG5vZGUgICAgICAtIFRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gcHJlZGljYXRlIC0gUHJlZGljYXRlIHRvIHVzZS5cbiAgICpcbiAgICogQXJpdHkgMzogRmlsdGVyIHRoZSByZWxldmFudCBlZGdlcyBhY3Jvc3MgdGhlIGdpdmVuIHBhdGguXG4gICAqIEBwYXJhbSAge2FueX0gICAgICBzb3VyY2UgICAgLSBTb3VyY2Ugbm9kZS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIHRhcmdldCAgICAtIFRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gcHJlZGljYXRlIC0gUHJlZGljYXRlIHRvIHVzZS5cbiAgICpcbiAgICogQHJldHVybiB7dW5kZWZpbmVkfVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZXJlIGFyZSB0b28gbWFueSBhcmd1bWVudHMuXG4gICAqL1xuICBjb25zdCBmaWx0ZXJOYW1lID0gJ2ZpbHRlcicgKyBuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpO1xuXG4gIENsYXNzLnByb3RvdHlwZVtmaWx0ZXJOYW1lXSA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICBjb25zdCBjYWxsYmFjayA9IGFyZ3MucG9wKCk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgIGFyZ3MucHVzaCgoZSwgZWEsIHMsIHQsIHNhLCB0YSwgdSkgPT4ge1xuICAgICAgaWYgKGNhbGxiYWNrKGUsIGVhLCBzLCB0LCBzYSwgdGEsIHUpKSByZXN1bHQucHVzaChlKTtcbiAgICB9KTtcblxuICAgIHRoaXNbZm9yRWFjaE5hbWVdLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvKipcbiAgICogRnVuY3Rpb24gcmVkdWNpbmcgdGhlIGdyYXBoJ3MgcmVsZXZhbnQgZWRnZXMgdXNpbmcgdGhlIHByb3ZpZGVkIGFjY3VtdWxhdG9yXG4gICAqIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBBcml0eSAxOiBSZWR1Y2UgYWxsIHRoZSByZWxldmFudCBlZGdlcy5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGFjY3VtdWxhdG9yICAtIEFjY3VtdWxhdG9yIHRvIHVzZS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIGluaXRpYWxWYWx1ZSAtIEluaXRpYWwgdmFsdWUuXG4gICAqXG4gICAqIEFyaXR5IDI6IFJlZHVjZSBhbGwgb2YgYSBub2RlJ3MgcmVsZXZhbnQgZWRnZXMuXG4gICAqIEBwYXJhbSAge2FueX0gICAgICBub2RlICAgICAgICAgLSBUYXJnZXQgbm9kZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGFjY3VtdWxhdG9yICAtIEFjY3VtdWxhdG9yIHRvIHVzZS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIGluaXRpYWxWYWx1ZSAtIEluaXRpYWwgdmFsdWUuXG4gICAqXG4gICAqIEFyaXR5IDM6IFJlZHVjZSB0aGUgcmVsZXZhbnQgZWRnZXMgYWNyb3NzIHRoZSBnaXZlbiBwYXRoLlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgc291cmNlICAgICAgIC0gU291cmNlIG5vZGUuXG4gICAqIEBwYXJhbSAge2FueX0gICAgICB0YXJnZXQgICAgICAgLSBUYXJnZXQgbm9kZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGFjY3VtdWxhdG9yICAtIEFjY3VtdWxhdG9yIHRvIHVzZS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIGluaXRpYWxWYWx1ZSAtIEluaXRpYWwgdmFsdWUuXG4gICAqXG4gICAqIEByZXR1cm4ge3VuZGVmaW5lZH1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgYXJndW1lbnRzLlxuICAgKi9cbiAgY29uc3QgcmVkdWNlTmFtZSA9ICdyZWR1Y2UnICsgbmFtZVswXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKTtcblxuICBDbGFzcy5wcm90b3R5cGVbcmVkdWNlTmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoIDwgMiB8fCBhcmdzLmxlbmd0aCA+IDQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7cmVkdWNlTmFtZX06IGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyAoZXhwZWN0aW5nIDIsIDMgb3IgNCBhbmQgZ290ICR7YXJncy5sZW5ndGh9KS5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPT09ICdmdW5jdGlvbicgJiZcbiAgICAgIHR5cGVvZiBhcmdzW2FyZ3MubGVuZ3RoIC0gMl0gIT09ICdmdW5jdGlvbidcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7cmVkdWNlTmFtZX06IG1pc3NpbmcgaW5pdGlhbCB2YWx1ZS4gWW91IG11c3QgcHJvdmlkZSBpdCBiZWNhdXNlIHRoZSBjYWxsYmFjayB0YWtlcyBtb3JlIHRoYW4gb25lIGFyZ3VtZW50IGFuZCB3ZSBjYW5ub3QgaW5mZXIgdGhlIGluaXRpYWwgdmFsdWUgZnJvbSB0aGUgZmlyc3QgaXRlcmF0aW9uLCBhcyB5b3UgY291bGQgd2l0aCBhIHNpbXBsZSBhcnJheS5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBjYWxsYmFjaztcbiAgICBsZXQgaW5pdGlhbFZhbHVlO1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICBjYWxsYmFjayA9IGFyZ3NbMF07XG4gICAgICBpbml0aWFsVmFsdWUgPSBhcmdzWzFdO1xuICAgICAgYXJncyA9IFtdO1xuICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDMpIHtcbiAgICAgIGNhbGxiYWNrID0gYXJnc1sxXTtcbiAgICAgIGluaXRpYWxWYWx1ZSA9IGFyZ3NbMl07XG4gICAgICBhcmdzID0gW2FyZ3NbMF1dO1xuICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDQpIHtcbiAgICAgIGNhbGxiYWNrID0gYXJnc1syXTtcbiAgICAgIGluaXRpYWxWYWx1ZSA9IGFyZ3NbM107XG4gICAgICBhcmdzID0gW2FyZ3NbMF0sIGFyZ3NbMV1dO1xuICAgIH1cblxuICAgIGxldCBhY2N1bXVsYXRvciA9IGluaXRpYWxWYWx1ZTtcblxuICAgIGFyZ3MucHVzaCgoZSwgZWEsIHMsIHQsIHNhLCB0YSwgdSkgPT4ge1xuICAgICAgYWNjdW11bGF0b3IgPSBjYWxsYmFjayhhY2N1bXVsYXRvciwgZSwgZWEsIHMsIHQsIHNhLCB0YSwgdSk7XG4gICAgfSk7XG5cbiAgICB0aGlzW2ZvckVhY2hOYW1lXS5hcHBseSh0aGlzLCBhcmdzKTtcblxuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBhdHRhY2hpbmcgYSBicmVha2FibGUgZWRnZSBjYWxsYmFjayBpdGVyYXRvciBtZXRob2QgdG8gdGhlIEdyYXBoXG4gKiBwcm90b3R5cGUuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3MgICAgICAgLSBUYXJnZXQgY2xhc3MuXG4gKiBAcGFyYW0ge29iamVjdH0gICBkZXNjcmlwdGlvbiAtIE1ldGhvZCBkZXNjcmlwdGlvbi5cbiAqL1xuZnVuY3Rpb24gYXR0YWNoRmluZEVkZ2UoQ2xhc3MsIGRlc2NyaXB0aW9uKSB7XG4gIGNvbnN0IHtuYW1lLCB0eXBlLCBkaXJlY3Rpb259ID0gZGVzY3JpcHRpb247XG5cbiAgY29uc3QgZmluZEVkZ2VOYW1lID0gJ2ZpbmQnICsgbmFtZVswXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxLCAtMSk7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIHRoZSBncmFwaCdzIHJlbGV2YW50IGVkZ2VzIGluIG9yZGVyIHRvIG1hdGNoXG4gICAqIG9uZSBvZiB0aGVtIHVzaW5nIHRoZSBwcm92aWRlZCBwcmVkaWNhdGUgZnVuY3Rpb24uXG4gICAqXG4gICAqIEFyaXR5IDE6IEl0ZXJhdGUgb3ZlciBhbGwgdGhlIHJlbGV2YW50IGVkZ2VzLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byB1c2UuXG4gICAqXG4gICAqIEFyaXR5IDI6IEl0ZXJhdGUgb3ZlciBhbGwgb2YgYSBub2RlJ3MgcmVsZXZhbnQgZWRnZXMuXG4gICAqIEBwYXJhbSAge2FueX0gICAgICBub2RlICAgICAtIFRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byB1c2UuXG4gICAqXG4gICAqIEFyaXR5IDM6IEl0ZXJhdGUgb3ZlciB0aGUgcmVsZXZhbnQgZWRnZXMgYWNyb3NzIHRoZSBnaXZlbiBwYXRoLlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgc291cmNlICAgLSBTb3VyY2Ugbm9kZS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIHRhcmdldCAgIC0gVGFyZ2V0IG5vZGUuXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIHVzZS5cbiAgICpcbiAgICogQHJldHVybiB7dW5kZWZpbmVkfVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZXJlIGFyZSB0b28gbWFueSBhcmd1bWVudHMuXG4gICAqL1xuICBDbGFzcy5wcm90b3R5cGVbZmluZEVkZ2VOYW1lXSA9IGZ1bmN0aW9uIChzb3VyY2UsIHRhcmdldCwgY2FsbGJhY2spIHtcbiAgICAvLyBFYXJseSB0ZXJtaW5hdGlvblxuICAgIGlmICh0eXBlICE9PSAnbWl4ZWQnICYmIHRoaXMudHlwZSAhPT0gJ21peGVkJyAmJiB0eXBlICE9PSB0aGlzLnR5cGUpXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgY2FsbGJhY2sgPSBzb3VyY2U7XG4gICAgICByZXR1cm4gZmluZEVkZ2UodGhpcywgdHlwZSwgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgICBzb3VyY2UgPSAnJyArIHNvdXJjZTtcbiAgICAgIGNhbGxiYWNrID0gdGFyZ2V0O1xuXG4gICAgICBjb25zdCBub2RlRGF0YSA9IHRoaXMuX25vZGVzLmdldChzb3VyY2UpO1xuXG4gICAgICBpZiAodHlwZW9mIG5vZGVEYXRhID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHtmaW5kRWRnZU5hbWV9OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke3NvdXJjZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICAgICk7XG5cbiAgICAgIC8vIEl0ZXJhdGluZyBvdmVyIGEgbm9kZSdzIGVkZ2VzXG4gICAgICAvLyBUT0RPOiBtYXliZSBhdHRhY2ggdGhlIHN1YiBtZXRob2QgdG8gdGhlIGluc3RhbmNlIGR5bmFtaWNhbGx5P1xuICAgICAgcmV0dXJuIGZpbmRFZGdlRm9yTm9kZShcbiAgICAgICAgdGhpcy5tdWx0aSxcbiAgICAgICAgdHlwZSA9PT0gJ21peGVkJyA/IHRoaXMudHlwZSA6IHR5cGUsXG4gICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgbm9kZURhdGEsXG4gICAgICAgIGNhbGxiYWNrXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgICBzb3VyY2UgPSAnJyArIHNvdXJjZTtcbiAgICAgIHRhcmdldCA9ICcnICsgdGFyZ2V0O1xuXG4gICAgICBjb25zdCBzb3VyY2VEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KHNvdXJjZSk7XG5cbiAgICAgIGlmICghc291cmNlRGF0YSlcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHtmaW5kRWRnZU5hbWV9OiAgY291bGQgbm90IGZpbmQgdGhlIFwiJHtzb3VyY2V9XCIgc291cmNlIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcblxuICAgICAgaWYgKCF0aGlzLl9ub2Rlcy5oYXModGFyZ2V0KSlcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHtmaW5kRWRnZU5hbWV9OiAgY291bGQgbm90IGZpbmQgdGhlIFwiJHt0YXJnZXR9XCIgdGFyZ2V0IG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcblxuICAgICAgLy8gSXRlcmF0aW5nIG92ZXIgdGhlIGVkZ2VzIGJldHdlZW4gc291cmNlICYgdGFyZ2V0XG4gICAgICByZXR1cm4gZmluZEVkZ2VGb3JQYXRoKFxuICAgICAgICB0eXBlLFxuICAgICAgICB0aGlzLm11bHRpLFxuICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgIHNvdXJjZURhdGEsXG4gICAgICAgIHRhcmdldCxcbiAgICAgICAgY2FsbGJhY2tcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgYEdyYXBoLiR7ZmluZEVkZ2VOYW1lfTogdG9vIG1hbnkgYXJndW1lbnRzIChleHBlY3RpbmcgMSwgMiBvciAzIGFuZCBnb3QgJHthcmd1bWVudHMubGVuZ3RofSkuYFxuICAgICk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIHRoZSBncmFwaCdzIHJlbGV2YW50IGVkZ2VzIGluIG9yZGVyIHRvIGFzc2VydFxuICAgKiB3aGV0aGVyIGFueSBvbmUgb2YgdGhlbSBtYXRjaGVzIHRoZSBwcm92aWRlZCBwcmVkaWNhdGUgZnVuY3Rpb24uXG4gICAqXG4gICAqIEFyaXR5IDE6IEl0ZXJhdGUgb3ZlciBhbGwgdGhlIHJlbGV2YW50IGVkZ2VzLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byB1c2UuXG4gICAqXG4gICAqIEFyaXR5IDI6IEl0ZXJhdGUgb3ZlciBhbGwgb2YgYSBub2RlJ3MgcmVsZXZhbnQgZWRnZXMuXG4gICAqIEBwYXJhbSAge2FueX0gICAgICBub2RlICAgICAtIFRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byB1c2UuXG4gICAqXG4gICAqIEFyaXR5IDM6IEl0ZXJhdGUgb3ZlciB0aGUgcmVsZXZhbnQgZWRnZXMgYWNyb3NzIHRoZSBnaXZlbiBwYXRoLlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgc291cmNlICAgLSBTb3VyY2Ugbm9kZS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIHRhcmdldCAgIC0gVGFyZ2V0IG5vZGUuXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIHVzZS5cbiAgICpcbiAgICogQHJldHVybiB7dW5kZWZpbmVkfVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZXJlIGFyZSB0b28gbWFueSBhcmd1bWVudHMuXG4gICAqL1xuICBjb25zdCBzb21lTmFtZSA9ICdzb21lJyArIG5hbWVbMF0udG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSwgLTEpO1xuXG4gIENsYXNzLnByb3RvdHlwZVtzb21lTmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgY29uc3QgY2FsbGJhY2sgPSBhcmdzLnBvcCgpO1xuXG4gICAgYXJncy5wdXNoKChlLCBlYSwgcywgdCwgc2EsIHRhLCB1KSA9PiB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soZSwgZWEsIHMsIHQsIHNhLCB0YSwgdSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBmb3VuZCA9IHRoaXNbZmluZEVkZ2VOYW1lXS5hcHBseSh0aGlzLCBhcmdzKTtcblxuICAgIGlmIChmb3VuZCkgcmV0dXJuIHRydWU7XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIHRoZSBncmFwaCdzIHJlbGV2YW50IGVkZ2VzIGluIG9yZGVyIHRvIGFzc2VydFxuICAgKiB3aGV0aGVyIGFsbCBvZiB0aGVtIG1hdGNoZSB0aGUgcHJvdmlkZWQgcHJlZGljYXRlIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBBcml0eSAxOiBJdGVyYXRlIG92ZXIgYWxsIHRoZSByZWxldmFudCBlZGdlcy5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICAgKlxuICAgKiBBcml0eSAyOiBJdGVyYXRlIG92ZXIgYWxsIG9mIGEgbm9kZSdzIHJlbGV2YW50IGVkZ2VzLlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgbm9kZSAgICAgLSBUYXJnZXQgbm9kZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICAgKlxuICAgKiBBcml0eSAzOiBJdGVyYXRlIG92ZXIgdGhlIHJlbGV2YW50IGVkZ2VzIGFjcm9zcyB0aGUgZ2l2ZW4gcGF0aC5cbiAgICogQHBhcmFtICB7YW55fSAgICAgIHNvdXJjZSAgIC0gU291cmNlIG5vZGUuXG4gICAqIEBwYXJhbSAge2FueX0gICAgICB0YXJnZXQgICAtIFRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byB1c2UuXG4gICAqXG4gICAqIEByZXR1cm4ge3VuZGVmaW5lZH1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgYXJndW1lbnRzLlxuICAgKi9cbiAgY29uc3QgZXZlcnlOYW1lID0gJ2V2ZXJ5JyArIG5hbWVbMF0udG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSwgLTEpO1xuXG4gIENsYXNzLnByb3RvdHlwZVtldmVyeU5hbWVdID0gZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgIGNvbnN0IGNhbGxiYWNrID0gYXJncy5wb3AoKTtcblxuICAgIGFyZ3MucHVzaCgoZSwgZWEsIHMsIHQsIHNhLCB0YSwgdSkgPT4ge1xuICAgICAgcmV0dXJuICFjYWxsYmFjayhlLCBlYSwgcywgdCwgc2EsIHRhLCB1KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZvdW5kID0gdGhpc1tmaW5kRWRnZU5hbWVdLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgaWYgKGZvdW5kKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBhdHRhY2hpbmcgYW4gZWRnZSBpdGVyYXRvciBtZXRob2QgdG8gdGhlIEdyYXBoIHByb3RvdHlwZS5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzcyAgICAgICAtIFRhcmdldCBjbGFzcy5cbiAqIEBwYXJhbSB7b2JqZWN0fSAgIGRlc2NyaXB0aW9uIC0gTWV0aG9kIGRlc2NyaXB0aW9uLlxuICovXG5mdW5jdGlvbiBhdHRhY2hFZGdlSXRlcmF0b3JDcmVhdG9yKENsYXNzLCBkZXNjcmlwdGlvbikge1xuICBjb25zdCB7bmFtZTogb3JpZ2luYWxOYW1lLCB0eXBlLCBkaXJlY3Rpb259ID0gZGVzY3JpcHRpb247XG5cbiAgY29uc3QgbmFtZSA9IG9yaWdpbmFsTmFtZS5zbGljZSgwLCAtMSkgKyAnRW50cmllcyc7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHJldHVybmluZyBhbiBpdGVyYXRvciBvdmVyIHRoZSBncmFwaCdzIGVkZ2VzLlxuICAgKlxuICAgKiBBcml0eSAwOiBJdGVyYXRlIG92ZXIgYWxsIHRoZSByZWxldmFudCBlZGdlcy5cbiAgICpcbiAgICogQXJpdHkgMTogSXRlcmF0ZSBvdmVyIGFsbCBvZiBhIG5vZGUncyByZWxldmFudCBlZGdlcy5cbiAgICogQHBhcmFtICB7YW55fSAgIG5vZGUgICAtIFRhcmdldCBub2RlLlxuICAgKlxuICAgKiBBcml0eSAyOiBJdGVyYXRlIG92ZXIgdGhlIHJlbGV2YW50IGVkZ2VzIGFjcm9zcyB0aGUgZ2l2ZW4gcGF0aC5cbiAgICogQHBhcmFtICB7YW55fSAgIHNvdXJjZSAtIFNvdXJjZSBub2RlLlxuICAgKiBAcGFyYW0gIHthbnl9ICAgdGFyZ2V0IC0gVGFyZ2V0IG5vZGUuXG4gICAqXG4gICAqIEByZXR1cm4ge2FycmF5fG51bWJlcn0gLSBUaGUgZWRnZXMgb3IgdGhlIG51bWJlciBvZiBlZGdlcy5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgYXJndW1lbnRzLlxuICAgKi9cbiAgQ2xhc3MucHJvdG90eXBlW25hbWVdID0gZnVuY3Rpb24gKHNvdXJjZSwgdGFyZ2V0KSB7XG4gICAgLy8gRWFybHkgdGVybWluYXRpb25cbiAgICBpZiAodHlwZSAhPT0gJ21peGVkJyAmJiB0aGlzLnR5cGUgIT09ICdtaXhlZCcgJiYgdHlwZSAhPT0gdGhpcy50eXBlKVxuICAgICAgcmV0dXJuIEl0ZXJhdG9yLmVtcHR5KCk7XG5cbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBjcmVhdGVFZGdlSXRlcmF0b3IodGhpcywgdHlwZSk7XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgc291cmNlID0gJycgKyBzb3VyY2U7XG5cbiAgICAgIGNvbnN0IHNvdXJjZURhdGEgPSB0aGlzLl9ub2Rlcy5nZXQoc291cmNlKTtcblxuICAgICAgaWYgKCFzb3VyY2VEYXRhKVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke25hbWV9OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke3NvdXJjZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICAgICk7XG5cbiAgICAgIC8vIEl0ZXJhdGluZyBvdmVyIGEgbm9kZSdzIGVkZ2VzXG4gICAgICByZXR1cm4gY3JlYXRlRWRnZUl0ZXJhdG9yRm9yTm9kZSh0eXBlLCBkaXJlY3Rpb24sIHNvdXJjZURhdGEpO1xuICAgIH1cblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgICBzb3VyY2UgPSAnJyArIHNvdXJjZTtcbiAgICAgIHRhcmdldCA9ICcnICsgdGFyZ2V0O1xuXG4gICAgICBjb25zdCBzb3VyY2VEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KHNvdXJjZSk7XG5cbiAgICAgIGlmICghc291cmNlRGF0YSlcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgICBgR3JhcGguJHtuYW1lfTogIGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7c291cmNlfVwiIHNvdXJjZSBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICAgICk7XG5cbiAgICAgIGlmICghdGhpcy5fbm9kZXMuaGFzKHRhcmdldCkpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bmFtZX06ICBjb3VsZCBub3QgZmluZCB0aGUgXCIke3RhcmdldH1cIiB0YXJnZXQgbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgICApO1xuXG4gICAgICAvLyBJdGVyYXRpbmcgb3ZlciB0aGUgZWRnZXMgYmV0d2VlbiBzb3VyY2UgJiB0YXJnZXRcbiAgICAgIHJldHVybiBjcmVhdGVFZGdlSXRlcmF0b3JGb3JQYXRoKHR5cGUsIGRpcmVjdGlvbiwgc291cmNlRGF0YSwgdGFyZ2V0KTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICBgR3JhcGguJHtuYW1lfTogdG9vIG1hbnkgYXJndW1lbnRzIChleHBlY3RpbmcgMCwgMSBvciAyIGFuZCBnb3QgJHthcmd1bWVudHMubGVuZ3RofSkuYFxuICAgICk7XG4gIH07XG59XG5cbi8qKlxuICogRnVuY3Rpb24gYXR0YWNoaW5nIGV2ZXJ5IGVkZ2UgaXRlcmF0aW9uIG1ldGhvZCB0byB0aGUgR3JhcGggY2xhc3MuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gR3JhcGggLSBHcmFwaCBjbGFzcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXR0YWNoRWRnZUl0ZXJhdGlvbk1ldGhvZHMoR3JhcGgpIHtcbiAgRURHRVNfSVRFUkFUSU9OLmZvckVhY2goZGVzY3JpcHRpb24gPT4ge1xuICAgIGF0dGFjaEVkZ2VBcnJheUNyZWF0b3IoR3JhcGgsIGRlc2NyaXB0aW9uKTtcbiAgICBhdHRhY2hGb3JFYWNoRWRnZShHcmFwaCwgZGVzY3JpcHRpb24pO1xuICAgIGF0dGFjaEZpbmRFZGdlKEdyYXBoLCBkZXNjcmlwdGlvbik7XG4gICAgYXR0YWNoRWRnZUl0ZXJhdG9yQ3JlYXRvcihHcmFwaCwgZGVzY3JpcHRpb24pO1xuICB9KTtcbn1cbiIsICIvKipcbiAqIEdyYXBob2xvZ3kgTmVpZ2hib3IgSXRlcmF0aW9uXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqXG4gKiBBdHRhY2hpbmcgc29tZSBtZXRob2RzIHRvIHRoZSBHcmFwaCBjbGFzcyB0byBiZSBhYmxlIHRvIGl0ZXJhdGUgb3ZlclxuICogbmVpZ2hib3JzLlxuICovXG5pbXBvcnQgSXRlcmF0b3IgZnJvbSAnb2JsaXRlcmF0b3IvaXRlcmF0b3InO1xuaW1wb3J0IGNoYWluIGZyb20gJ29ibGl0ZXJhdG9yL2NoYWluJztcbmltcG9ydCB0YWtlIGZyb20gJ29ibGl0ZXJhdG9yL3Rha2UnO1xuXG5pbXBvcnQge05vdEZvdW5kR3JhcGhFcnJvciwgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3J9IGZyb20gJy4uL2Vycm9ycyc7XG5cbi8qKlxuICogRGVmaW5pdGlvbnMuXG4gKi9cbmNvbnN0IE5FSUdIQk9SU19JVEVSQVRJT04gPSBbXG4gIHtcbiAgICBuYW1lOiAnbmVpZ2hib3JzJyxcbiAgICB0eXBlOiAnbWl4ZWQnXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnaW5OZWlnaGJvcnMnLFxuICAgIHR5cGU6ICdkaXJlY3RlZCcsXG4gICAgZGlyZWN0aW9uOiAnaW4nXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnb3V0TmVpZ2hib3JzJyxcbiAgICB0eXBlOiAnZGlyZWN0ZWQnLFxuICAgIGRpcmVjdGlvbjogJ291dCdcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdpbmJvdW5kTmVpZ2hib3JzJyxcbiAgICB0eXBlOiAnbWl4ZWQnLFxuICAgIGRpcmVjdGlvbjogJ2luJ1xuICB9LFxuICB7XG4gICAgbmFtZTogJ291dGJvdW5kTmVpZ2hib3JzJyxcbiAgICB0eXBlOiAnbWl4ZWQnLFxuICAgIGRpcmVjdGlvbjogJ291dCdcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdkaXJlY3RlZE5laWdoYm9ycycsXG4gICAgdHlwZTogJ2RpcmVjdGVkJ1xuICB9LFxuICB7XG4gICAgbmFtZTogJ3VuZGlyZWN0ZWROZWlnaGJvcnMnLFxuICAgIHR5cGU6ICd1bmRpcmVjdGVkJ1xuICB9XG5dO1xuXG4vKipcbiAqIEZ1bmN0aW9uIG1lcmdpbmcgbmVpZ2hib3JzIGludG8gdGhlIGdpdmVuIHNldCBpdGVyYXRpbmcgb3ZlciB0aGUgZ2l2ZW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7QmFzaWNTZXR9IG5laWdoYm9ycyAtIE5laWdoYm9ycyBzZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gICBvYmplY3QgICAgLSBUYXJnZXQgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBtZXJnZShuZWlnaGJvcnMsIG9iamVjdCkge1xuICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcblxuICBmb3IgKGNvbnN0IG5laWdoYm9yIGluIG9iamVjdCkgbmVpZ2hib3JzLmFkZChuZWlnaGJvcik7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gY3JlYXRpbmcgYW4gYXJyYXkgb2YgcmVsZXZhbnQgbmVpZ2hib3JzIGZvciB0aGUgZ2l2ZW4gbm9kZS5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgICAgIHR5cGUgICAgICAtIFR5cGUgb2YgbmVpZ2hib3JzLlxuICogQHBhcmFtICB7c3RyaW5nfSAgICAgICBkaXJlY3Rpb24gLSBEaXJlY3Rpb24uXG4gKiBAcGFyYW0gIHthbnl9ICAgICAgICAgIG5vZGVEYXRhICAtIFRhcmdldCBub2RlJ3MgZGF0YS5cbiAqIEByZXR1cm4ge0FycmF5fSAgICAgICAgICAgICAgICAgIC0gVGhlIGxpc3Qgb2YgbmVpZ2hib3JzLlxuICovXG5mdW5jdGlvbiBjcmVhdGVOZWlnaGJvckFycmF5Rm9yTm9kZSh0eXBlLCBkaXJlY3Rpb24sIG5vZGVEYXRhKSB7XG4gIC8vIElmIHdlIHdhbnQgb25seSB1bmRpcmVjdGVkIG9yIGluIG9yIG91dCwgd2UgY2FuIHJvbGwgc29tZSBvcHRpbWl6YXRpb25zXG4gIGlmICh0eXBlICE9PSAnbWl4ZWQnKSB7XG4gICAgaWYgKHR5cGUgPT09ICd1bmRpcmVjdGVkJykgcmV0dXJuIE9iamVjdC5rZXlzKG5vZGVEYXRhLnVuZGlyZWN0ZWQpO1xuXG4gICAgaWYgKHR5cGVvZiBkaXJlY3Rpb24gPT09ICdzdHJpbmcnKSByZXR1cm4gT2JqZWN0LmtleXMobm9kZURhdGFbZGlyZWN0aW9uXSk7XG4gIH1cblxuICAvLyBFbHNlIHdlIG5lZWQgdG8ga2VlcCBhIHNldCBvZiBuZWlnaGJvcnMgbm90IHRvIHJldHVybiBkdXBsaWNhdGVzXG4gIGNvbnN0IG5laWdoYm9ycyA9IG5ldyBTZXQoKTtcblxuICBpZiAodHlwZSAhPT0gJ3VuZGlyZWN0ZWQnKSB7XG4gICAgaWYgKGRpcmVjdGlvbiAhPT0gJ291dCcpIHtcbiAgICAgIG1lcmdlKG5laWdoYm9ycywgbm9kZURhdGEuaW4pO1xuICAgIH1cbiAgICBpZiAoZGlyZWN0aW9uICE9PSAnaW4nKSB7XG4gICAgICBtZXJnZShuZWlnaGJvcnMsIG5vZGVEYXRhLm91dCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGUgIT09ICdkaXJlY3RlZCcpIHtcbiAgICBtZXJnZShuZWlnaGJvcnMsIG5vZGVEYXRhLnVuZGlyZWN0ZWQpO1xuICB9XG5cbiAgcmV0dXJuIHRha2UobmVpZ2hib3JzLnZhbHVlcygpLCBuZWlnaGJvcnMuc2l6ZSk7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gaXRlcmF0aW5nIG92ZXIgdGhlIGdpdmVuIG5vZGUncyByZWxldmFudCBuZWlnaGJvcnMgdXNpbmcgYVxuICogY2FsbGJhY2suXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSAgIHR5cGUgICAgICAtIFR5cGUgb2YgbmVpZ2hib3JzLlxuICogQHBhcmFtICB7c3RyaW5nfSAgIGRpcmVjdGlvbiAtIERpcmVjdGlvbi5cbiAqIEBwYXJhbSAge2FueX0gICAgICBub2RlRGF0YSAgLSBUYXJnZXQgbm9kZSdzIGRhdGEuXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICovXG5mdW5jdGlvbiBmb3JFYWNoSW5PYmplY3Qobm9kZURhdGEsIG9iamVjdCwgY2FsbGJhY2spIHtcbiAgZm9yIChjb25zdCBrIGluIG9iamVjdCkge1xuICAgIGxldCBlZGdlRGF0YSA9IG9iamVjdFtrXTtcblxuICAgIGlmIChlZGdlRGF0YSBpbnN0YW5jZW9mIFNldCkgZWRnZURhdGEgPSBlZGdlRGF0YS52YWx1ZXMoKS5uZXh0KCkudmFsdWU7XG5cbiAgICBjb25zdCBzb3VyY2VEYXRhID0gZWRnZURhdGEuc291cmNlLFxuICAgICAgdGFyZ2V0RGF0YSA9IGVkZ2VEYXRhLnRhcmdldDtcblxuICAgIGNvbnN0IG5laWdoYm9yRGF0YSA9IHNvdXJjZURhdGEgPT09IG5vZGVEYXRhID8gdGFyZ2V0RGF0YSA6IHNvdXJjZURhdGE7XG5cbiAgICBjYWxsYmFjayhuZWlnaGJvckRhdGEua2V5LCBuZWlnaGJvckRhdGEuYXR0cmlidXRlcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9yRWFjaEluT2JqZWN0T25jZSh2aXNpdGVkLCBub2RlRGF0YSwgb2JqZWN0LCBjYWxsYmFjaykge1xuICBmb3IgKGNvbnN0IGsgaW4gb2JqZWN0KSB7XG4gICAgbGV0IGVkZ2VEYXRhID0gb2JqZWN0W2tdO1xuXG4gICAgaWYgKGVkZ2VEYXRhIGluc3RhbmNlb2YgU2V0KSBlZGdlRGF0YSA9IGVkZ2VEYXRhLnZhbHVlcygpLm5leHQoKS52YWx1ZTtcblxuICAgIGNvbnN0IHNvdXJjZURhdGEgPSBlZGdlRGF0YS5zb3VyY2UsXG4gICAgICB0YXJnZXREYXRhID0gZWRnZURhdGEudGFyZ2V0O1xuXG4gICAgY29uc3QgbmVpZ2hib3JEYXRhID0gc291cmNlRGF0YSA9PT0gbm9kZURhdGEgPyB0YXJnZXREYXRhIDogc291cmNlRGF0YTtcblxuICAgIGlmICh2aXNpdGVkLmhhcyhuZWlnaGJvckRhdGEua2V5KSkgY29udGludWU7XG5cbiAgICB2aXNpdGVkLmFkZChuZWlnaGJvckRhdGEua2V5KTtcblxuICAgIGNhbGxiYWNrKG5laWdoYm9yRGF0YS5rZXksIG5laWdoYm9yRGF0YS5hdHRyaWJ1dGVzKTtcbiAgfVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIHRoZSBnaXZlbiBub2RlJ3MgcmVsZXZhbnQgbmVpZ2hib3JzIHRvIG1hdGNoXG4gKiBvbmUgb2YgdGhlbSB1c2luZyBhIHByZWRpY2F0ZWQgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSAgIHR5cGUgICAgICAtIFR5cGUgb2YgbmVpZ2hib3JzLlxuICogQHBhcmFtICB7c3RyaW5nfSAgIGRpcmVjdGlvbiAtIERpcmVjdGlvbi5cbiAqIEBwYXJhbSAge2FueX0gICAgICBub2RlRGF0YSAgLSBUYXJnZXQgbm9kZSdzIGRhdGEuXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICovXG5mdW5jdGlvbiBmaW5kSW5PYmplY3Qobm9kZURhdGEsIG9iamVjdCwgY2FsbGJhY2spIHtcbiAgZm9yIChjb25zdCBrIGluIG9iamVjdCkge1xuICAgIGxldCBlZGdlRGF0YSA9IG9iamVjdFtrXTtcblxuICAgIGlmIChlZGdlRGF0YSBpbnN0YW5jZW9mIFNldCkgZWRnZURhdGEgPSBlZGdlRGF0YS52YWx1ZXMoKS5uZXh0KCkudmFsdWU7XG5cbiAgICBjb25zdCBzb3VyY2VEYXRhID0gZWRnZURhdGEuc291cmNlO1xuICAgIGNvbnN0IHRhcmdldERhdGEgPSBlZGdlRGF0YS50YXJnZXQ7XG5cbiAgICBjb25zdCBuZWlnaGJvckRhdGEgPSBzb3VyY2VEYXRhID09PSBub2RlRGF0YSA/IHRhcmdldERhdGEgOiBzb3VyY2VEYXRhO1xuXG4gICAgY29uc3Qgc2hvdWxkQnJlYWsgPSBjYWxsYmFjayhuZWlnaGJvckRhdGEua2V5LCBuZWlnaGJvckRhdGEuYXR0cmlidXRlcyk7XG5cbiAgICBpZiAoc2hvdWxkQnJlYWspIHJldHVybiBuZWlnaGJvckRhdGEua2V5O1xuICB9XG5cbiAgcmV0dXJuO1xufVxuXG5mdW5jdGlvbiBmaW5kSW5PYmplY3RPbmNlKHZpc2l0ZWQsIG5vZGVEYXRhLCBvYmplY3QsIGNhbGxiYWNrKSB7XG4gIGZvciAoY29uc3QgayBpbiBvYmplY3QpIHtcbiAgICBsZXQgZWRnZURhdGEgPSBvYmplY3Rba107XG5cbiAgICBpZiAoZWRnZURhdGEgaW5zdGFuY2VvZiBTZXQpIGVkZ2VEYXRhID0gZWRnZURhdGEudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuXG4gICAgY29uc3Qgc291cmNlRGF0YSA9IGVkZ2VEYXRhLnNvdXJjZTtcbiAgICBjb25zdCB0YXJnZXREYXRhID0gZWRnZURhdGEudGFyZ2V0O1xuXG4gICAgY29uc3QgbmVpZ2hib3JEYXRhID0gc291cmNlRGF0YSA9PT0gbm9kZURhdGEgPyB0YXJnZXREYXRhIDogc291cmNlRGF0YTtcblxuICAgIGlmICh2aXNpdGVkLmhhcyhuZWlnaGJvckRhdGEua2V5KSkgY29udGludWU7XG5cbiAgICB2aXNpdGVkLmFkZChuZWlnaGJvckRhdGEua2V5KTtcblxuICAgIGNvbnN0IHNob3VsZEJyZWFrID0gY2FsbGJhY2sobmVpZ2hib3JEYXRhLmtleSwgbmVpZ2hib3JEYXRhLmF0dHJpYnV0ZXMpO1xuXG4gICAgaWYgKHNob3VsZEJyZWFrKSByZXR1cm4gbmVpZ2hib3JEYXRhLmtleTtcbiAgfVxuXG4gIHJldHVybjtcbn1cblxuZnVuY3Rpb24gZm9yRWFjaE5laWdoYm9yRm9yTm9kZSh0eXBlLCBkaXJlY3Rpb24sIG5vZGVEYXRhLCBjYWxsYmFjaykge1xuICAvLyBJZiB3ZSB3YW50IG9ubHkgdW5kaXJlY3RlZCBvciBpbiBvciBvdXQsIHdlIGNhbiByb2xsIHNvbWUgb3B0aW1pemF0aW9uc1xuICBpZiAodHlwZSAhPT0gJ21peGVkJykge1xuICAgIGlmICh0eXBlID09PSAndW5kaXJlY3RlZCcpXG4gICAgICByZXR1cm4gZm9yRWFjaEluT2JqZWN0KG5vZGVEYXRhLCBub2RlRGF0YS51bmRpcmVjdGVkLCBjYWxsYmFjayk7XG5cbiAgICBpZiAodHlwZW9mIGRpcmVjdGlvbiA9PT0gJ3N0cmluZycpXG4gICAgICByZXR1cm4gZm9yRWFjaEluT2JqZWN0KG5vZGVEYXRhLCBub2RlRGF0YVtkaXJlY3Rpb25dLCBjYWxsYmFjayk7XG4gIH1cblxuICAvLyBFbHNlIHdlIG5lZWQgdG8ga2VlcCBhIHNldCBvZiBuZWlnaGJvcnMgbm90IHRvIHJldHVybiBkdXBsaWNhdGVzXG4gIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0KCk7XG5cbiAgaWYgKHR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgIGlmIChkaXJlY3Rpb24gIT09ICdvdXQnKSB7XG4gICAgICBmb3JFYWNoSW5PYmplY3RPbmNlKHZpc2l0ZWQsIG5vZGVEYXRhLCBub2RlRGF0YS5pbiwgY2FsbGJhY2spO1xuICAgIH1cbiAgICBpZiAoZGlyZWN0aW9uICE9PSAnaW4nKSB7XG4gICAgICBmb3JFYWNoSW5PYmplY3RPbmNlKHZpc2l0ZWQsIG5vZGVEYXRhLCBub2RlRGF0YS5vdXQsIGNhbGxiYWNrKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZSAhPT0gJ2RpcmVjdGVkJykge1xuICAgIGZvckVhY2hJbk9iamVjdE9uY2UodmlzaXRlZCwgbm9kZURhdGEsIG5vZGVEYXRhLnVuZGlyZWN0ZWQsIGNhbGxiYWNrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5kTmVpZ2hib3IodHlwZSwgZGlyZWN0aW9uLCBub2RlRGF0YSwgY2FsbGJhY2spIHtcbiAgLy8gSWYgd2Ugd2FudCBvbmx5IHVuZGlyZWN0ZWQgb3IgaW4gb3Igb3V0LCB3ZSBjYW4gcm9sbCBzb21lIG9wdGltaXphdGlvbnNcbiAgaWYgKHR5cGUgIT09ICdtaXhlZCcpIHtcbiAgICBpZiAodHlwZSA9PT0gJ3VuZGlyZWN0ZWQnKVxuICAgICAgcmV0dXJuIGZpbmRJbk9iamVjdChub2RlRGF0YSwgbm9kZURhdGEudW5kaXJlY3RlZCwgY2FsbGJhY2spO1xuXG4gICAgaWYgKHR5cGVvZiBkaXJlY3Rpb24gPT09ICdzdHJpbmcnKVxuICAgICAgcmV0dXJuIGZpbmRJbk9iamVjdChub2RlRGF0YSwgbm9kZURhdGFbZGlyZWN0aW9uXSwgY2FsbGJhY2spO1xuICB9XG5cbiAgLy8gRWxzZSB3ZSBuZWVkIHRvIGtlZXAgYSBzZXQgb2YgbmVpZ2hib3JzIG5vdCB0byByZXR1cm4gZHVwbGljYXRlc1xuICBjb25zdCB2aXNpdGVkID0gbmV3IFNldCgpO1xuXG4gIGxldCBmb3VuZDtcblxuICBpZiAodHlwZSAhPT0gJ3VuZGlyZWN0ZWQnKSB7XG4gICAgaWYgKGRpcmVjdGlvbiAhPT0gJ291dCcpIHtcbiAgICAgIGZvdW5kID0gZmluZEluT2JqZWN0T25jZSh2aXNpdGVkLCBub2RlRGF0YSwgbm9kZURhdGEuaW4sIGNhbGxiYWNrKTtcblxuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gIT09ICdpbicpIHtcbiAgICAgIGZvdW5kID0gZmluZEluT2JqZWN0T25jZSh2aXNpdGVkLCBub2RlRGF0YSwgbm9kZURhdGEub3V0LCBjYWxsYmFjayk7XG5cbiAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlICE9PSAnZGlyZWN0ZWQnKSB7XG4gICAgZm91bmQgPSBmaW5kSW5PYmplY3RPbmNlKHZpc2l0ZWQsIG5vZGVEYXRhLCBub2RlRGF0YS51bmRpcmVjdGVkLCBjYWxsYmFjayk7XG5cbiAgICBpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcbiAgfVxuXG4gIHJldHVybjtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiByZXR1cm5pbmcgYW4gaXRlcmF0b3Igb3ZlciB0aGUgZ2l2ZW4gbm9kZSdzIHJlbGV2YW50IG5laWdoYm9ycy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgdHlwZSAgICAgIC0gVHlwZSBvZiBuZWlnaGJvcnMuXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgZGlyZWN0aW9uIC0gRGlyZWN0aW9uLlxuICogQHBhcmFtICB7YW55fSAgICAgIG5vZGVEYXRhICAtIFRhcmdldCBub2RlJ3MgZGF0YS5cbiAqIEByZXR1cm4ge0l0ZXJhdG9yfVxuICovXG5mdW5jdGlvbiBjcmVhdGVPYmplY3RJdGVyYXRvcihub2RlRGF0YSwgb2JqZWN0KSB7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpLFxuICAgIGwgPSBrZXlzLmxlbmd0aDtcblxuICBsZXQgaSA9IDA7XG5cbiAgcmV0dXJuIG5ldyBJdGVyYXRvcihmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGkgPj0gbCkgcmV0dXJuIHtkb25lOiB0cnVlfTtcblxuICAgIGxldCBlZGdlRGF0YSA9IG9iamVjdFtrZXlzW2krK11dO1xuXG4gICAgaWYgKGVkZ2VEYXRhIGluc3RhbmNlb2YgU2V0KSBlZGdlRGF0YSA9IGVkZ2VEYXRhLnZhbHVlcygpLm5leHQoKS52YWx1ZTtcblxuICAgIGNvbnN0IHNvdXJjZURhdGEgPSBlZGdlRGF0YS5zb3VyY2UsXG4gICAgICB0YXJnZXREYXRhID0gZWRnZURhdGEudGFyZ2V0O1xuXG4gICAgY29uc3QgbmVpZ2hib3JEYXRhID0gc291cmNlRGF0YSA9PT0gbm9kZURhdGEgPyB0YXJnZXREYXRhIDogc291cmNlRGF0YTtcblxuICAgIHJldHVybiB7XG4gICAgICBkb25lOiBmYWxzZSxcbiAgICAgIHZhbHVlOiB7bmVpZ2hib3I6IG5laWdoYm9yRGF0YS5rZXksIGF0dHJpYnV0ZXM6IG5laWdoYm9yRGF0YS5hdHRyaWJ1dGVzfVxuICAgIH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEZWR1cGVkT2JqZWN0SXRlcmF0b3IodmlzaXRlZCwgbm9kZURhdGEsIG9iamVjdCkge1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KSxcbiAgICBsID0ga2V5cy5sZW5ndGg7XG5cbiAgbGV0IGkgPSAwO1xuXG4gIHJldHVybiBuZXcgSXRlcmF0b3IoZnVuY3Rpb24gbmV4dCgpIHtcbiAgICBpZiAoaSA+PSBsKSByZXR1cm4ge2RvbmU6IHRydWV9O1xuXG4gICAgbGV0IGVkZ2VEYXRhID0gb2JqZWN0W2tleXNbaSsrXV07XG5cbiAgICBpZiAoZWRnZURhdGEgaW5zdGFuY2VvZiBTZXQpIGVkZ2VEYXRhID0gZWRnZURhdGEudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuXG4gICAgY29uc3Qgc291cmNlRGF0YSA9IGVkZ2VEYXRhLnNvdXJjZSxcbiAgICAgIHRhcmdldERhdGEgPSBlZGdlRGF0YS50YXJnZXQ7XG5cbiAgICBjb25zdCBuZWlnaGJvckRhdGEgPSBzb3VyY2VEYXRhID09PSBub2RlRGF0YSA/IHRhcmdldERhdGEgOiBzb3VyY2VEYXRhO1xuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKG5laWdoYm9yRGF0YS5rZXkpKSByZXR1cm4gbmV4dCgpO1xuXG4gICAgdmlzaXRlZC5hZGQobmVpZ2hib3JEYXRhLmtleSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZG9uZTogZmFsc2UsXG4gICAgICB2YWx1ZToge25laWdoYm9yOiBuZWlnaGJvckRhdGEua2V5LCBhdHRyaWJ1dGVzOiBuZWlnaGJvckRhdGEuYXR0cmlidXRlc31cbiAgICB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlTmVpZ2hib3JJdGVyYXRvcih0eXBlLCBkaXJlY3Rpb24sIG5vZGVEYXRhKSB7XG4gIC8vIElmIHdlIHdhbnQgb25seSB1bmRpcmVjdGVkIG9yIGluIG9yIG91dCwgd2UgY2FuIHJvbGwgc29tZSBvcHRpbWl6YXRpb25zXG4gIGlmICh0eXBlICE9PSAnbWl4ZWQnKSB7XG4gICAgaWYgKHR5cGUgPT09ICd1bmRpcmVjdGVkJylcbiAgICAgIHJldHVybiBjcmVhdGVPYmplY3RJdGVyYXRvcihub2RlRGF0YSwgbm9kZURhdGEudW5kaXJlY3RlZCk7XG5cbiAgICBpZiAodHlwZW9mIGRpcmVjdGlvbiA9PT0gJ3N0cmluZycpXG4gICAgICByZXR1cm4gY3JlYXRlT2JqZWN0SXRlcmF0b3Iobm9kZURhdGEsIG5vZGVEYXRhW2RpcmVjdGlvbl0pO1xuICB9XG5cbiAgbGV0IGl0ZXJhdG9yID0gSXRlcmF0b3IuZW1wdHkoKTtcblxuICAvLyBFbHNlIHdlIG5lZWQgdG8ga2VlcCBhIHNldCBvZiBuZWlnaGJvcnMgbm90IHRvIHJldHVybiBkdXBsaWNhdGVzXG4gIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0KCk7XG5cbiAgaWYgKHR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgIGlmIChkaXJlY3Rpb24gIT09ICdvdXQnKSB7XG4gICAgICBpdGVyYXRvciA9IGNoYWluKFxuICAgICAgICBpdGVyYXRvcixcbiAgICAgICAgY3JlYXRlRGVkdXBlZE9iamVjdEl0ZXJhdG9yKHZpc2l0ZWQsIG5vZGVEYXRhLCBub2RlRGF0YS5pbilcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gIT09ICdpbicpIHtcbiAgICAgIGl0ZXJhdG9yID0gY2hhaW4oXG4gICAgICAgIGl0ZXJhdG9yLFxuICAgICAgICBjcmVhdGVEZWR1cGVkT2JqZWN0SXRlcmF0b3IodmlzaXRlZCwgbm9kZURhdGEsIG5vZGVEYXRhLm91dClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGUgIT09ICdkaXJlY3RlZCcpIHtcbiAgICBpdGVyYXRvciA9IGNoYWluKFxuICAgICAgaXRlcmF0b3IsXG4gICAgICBjcmVhdGVEZWR1cGVkT2JqZWN0SXRlcmF0b3IodmlzaXRlZCwgbm9kZURhdGEsIG5vZGVEYXRhLnVuZGlyZWN0ZWQpXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBpdGVyYXRvcjtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBhdHRhY2hpbmcgYSBuZWlnaGJvcnMgYXJyYXkgY3JlYXRvciBtZXRob2QgdG8gdGhlIEdyYXBoIHByb3RvdHlwZS5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzcyAgICAgICAtIFRhcmdldCBjbGFzcy5cbiAqIEBwYXJhbSB7b2JqZWN0fSAgIGRlc2NyaXB0aW9uIC0gTWV0aG9kIGRlc2NyaXB0aW9uLlxuICovXG5mdW5jdGlvbiBhdHRhY2hOZWlnaGJvckFycmF5Q3JlYXRvcihDbGFzcywgZGVzY3JpcHRpb24pIHtcbiAgY29uc3Qge25hbWUsIHR5cGUsIGRpcmVjdGlvbn0gPSBkZXNjcmlwdGlvbjtcblxuICAvKipcbiAgICogRnVuY3Rpb24gcmV0dXJuaW5nIGFuIGFycmF5IG9mIGNlcnRhaW4gbmVpZ2hib3JzLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgbm9kZSAgIC0gVGFyZ2V0IG5vZGUuXG4gICAqIEByZXR1cm4ge2FycmF5fSAtIFRoZSBuZWlnaGJvcnMgb2YgbmVpZ2hib3JzLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIG5vZGUgaXMgbm90IGZvdW5kIGluIHRoZSBncmFwaC5cbiAgICovXG4gIENsYXNzLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgLy8gRWFybHkgdGVybWluYXRpb25cbiAgICBpZiAodHlwZSAhPT0gJ21peGVkJyAmJiB0aGlzLnR5cGUgIT09ICdtaXhlZCcgJiYgdHlwZSAhPT0gdGhpcy50eXBlKVxuICAgICAgcmV0dXJuIFtdO1xuXG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKHR5cGVvZiBub2RlRGF0YSA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHtuYW1lfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICAvLyBIZXJlLCB3ZSB3YW50IHRvIGl0ZXJhdGUgb3ZlciBhIG5vZGUncyByZWxldmFudCBuZWlnaGJvcnNcbiAgICByZXR1cm4gY3JlYXRlTmVpZ2hib3JBcnJheUZvck5vZGUoXG4gICAgICB0eXBlID09PSAnbWl4ZWQnID8gdGhpcy50eXBlIDogdHlwZSxcbiAgICAgIGRpcmVjdGlvbixcbiAgICAgIG5vZGVEYXRhXG4gICAgKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBhdHRhY2hpbmcgYSBuZWlnaGJvcnMgY2FsbGJhY2sgaXRlcmF0b3IgbWV0aG9kIHRvIHRoZSBHcmFwaCBwcm90b3R5cGUuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3MgICAgICAgLSBUYXJnZXQgY2xhc3MuXG4gKiBAcGFyYW0ge29iamVjdH0gICBkZXNjcmlwdGlvbiAtIE1ldGhvZCBkZXNjcmlwdGlvbi5cbiAqL1xuZnVuY3Rpb24gYXR0YWNoRm9yRWFjaE5laWdoYm9yKENsYXNzLCBkZXNjcmlwdGlvbikge1xuICBjb25zdCB7bmFtZSwgdHlwZSwgZGlyZWN0aW9ufSA9IGRlc2NyaXB0aW9uO1xuXG4gIGNvbnN0IGZvckVhY2hOYW1lID0gJ2ZvckVhY2gnICsgbmFtZVswXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxLCAtMSk7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIGFsbCB0aGUgcmVsZXZhbnQgbmVpZ2hib3JzIHVzaW5nIGEgY2FsbGJhY2suXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgICBub2RlICAgICAtIFRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byB1c2UuXG4gICAqIEByZXR1cm4ge3VuZGVmaW5lZH1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgYXJndW1lbnRzLlxuICAgKi9cbiAgQ2xhc3MucHJvdG90eXBlW2ZvckVhY2hOYW1lXSA9IGZ1bmN0aW9uIChub2RlLCBjYWxsYmFjaykge1xuICAgIC8vIEVhcmx5IHRlcm1pbmF0aW9uXG4gICAgaWYgKHR5cGUgIT09ICdtaXhlZCcgJiYgdGhpcy50eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09IHRoaXMudHlwZSkgcmV0dXJuO1xuXG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKHR5cGVvZiBub2RlRGF0YSA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHtmb3JFYWNoTmFtZX06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7bm9kZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgLy8gSGVyZSwgd2Ugd2FudCB0byBpdGVyYXRlIG92ZXIgYSBub2RlJ3MgcmVsZXZhbnQgbmVpZ2hib3JzXG4gICAgZm9yRWFjaE5laWdoYm9yRm9yTm9kZShcbiAgICAgIHR5cGUgPT09ICdtaXhlZCcgPyB0aGlzLnR5cGUgOiB0eXBlLFxuICAgICAgZGlyZWN0aW9uLFxuICAgICAgbm9kZURhdGEsXG4gICAgICBjYWxsYmFja1xuICAgICk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIG1hcHBpbmcgdGhlIHJlbGV2YW50IG5laWdoYm9ycyB1c2luZyBhIGNhbGxiYWNrLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgbm9kZSAgICAgLSBUYXJnZXQgbm9kZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZXJlIGFyZSB0b28gbWFueSBhcmd1bWVudHMuXG4gICAqL1xuICBjb25zdCBtYXBOYW1lID0gJ21hcCcgKyBuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpO1xuXG4gIENsYXNzLnByb3RvdHlwZVttYXBOYW1lXSA9IGZ1bmN0aW9uIChub2RlLCBjYWxsYmFjaykge1xuICAgIC8vIFRPRE86IG9wdGltaXplIHdoZW4gc2l6ZSBpcyBrbm93biBiZWZvcmVoYW5kXG4gICAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgICB0aGlzW2ZvckVhY2hOYW1lXShub2RlLCAobiwgYSkgPT4ge1xuICAgICAgcmVzdWx0LnB1c2goY2FsbGJhY2sobiwgYSkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvKipcbiAgICogRnVuY3Rpb24gZmlsdGVyaW5nIHRoZSByZWxldmFudCBuZWlnaGJvcnMgdXNpbmcgYSBjYWxsYmFjay5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgIG5vZGUgICAgIC0gVGFyZ2V0IG5vZGUuXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIHVzZS5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgYXJndW1lbnRzLlxuICAgKi9cbiAgY29uc3QgZmlsdGVyTmFtZSA9ICdmaWx0ZXInICsgbmFtZVswXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKTtcblxuICBDbGFzcy5wcm90b3R5cGVbZmlsdGVyTmFtZV0gPSBmdW5jdGlvbiAobm9kZSwgY2FsbGJhY2spIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgIHRoaXNbZm9yRWFjaE5hbWVdKG5vZGUsIChuLCBhKSA9PiB7XG4gICAgICBpZiAoY2FsbGJhY2sobiwgYSkpIHJlc3VsdC5wdXNoKG4pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvKipcbiAgICogRnVuY3Rpb24gcmVkdWNpbmcgdGhlIHJlbGV2YW50IG5laWdoYm9ycyB1c2luZyBhIGNhbGxiYWNrLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgbm9kZSAgICAgLSBUYXJnZXQgbm9kZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZXJlIGFyZSB0b28gbWFueSBhcmd1bWVudHMuXG4gICAqL1xuICBjb25zdCByZWR1Y2VOYW1lID0gJ3JlZHVjZScgKyBuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpO1xuXG4gIENsYXNzLnByb3RvdHlwZVtyZWR1Y2VOYW1lXSA9IGZ1bmN0aW9uIChub2RlLCBjYWxsYmFjaywgaW5pdGlhbFZhbHVlKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAzKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHtyZWR1Y2VOYW1lfTogbWlzc2luZyBpbml0aWFsIHZhbHVlLiBZb3UgbXVzdCBwcm92aWRlIGl0IGJlY2F1c2UgdGhlIGNhbGxiYWNrIHRha2VzIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQgYW5kIHdlIGNhbm5vdCBpbmZlciB0aGUgaW5pdGlhbCB2YWx1ZSBmcm9tIHRoZSBmaXJzdCBpdGVyYXRpb24sIGFzIHlvdSBjb3VsZCB3aXRoIGEgc2ltcGxlIGFycmF5LmBcbiAgICAgICk7XG5cbiAgICBsZXQgYWNjdW11bGF0b3IgPSBpbml0aWFsVmFsdWU7XG5cbiAgICB0aGlzW2ZvckVhY2hOYW1lXShub2RlLCAobiwgYSkgPT4ge1xuICAgICAgYWNjdW11bGF0b3IgPSBjYWxsYmFjayhhY2N1bXVsYXRvciwgbiwgYSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH07XG59XG5cbi8qKlxuICogRnVuY3Rpb24gYXR0YWNoaW5nIGEgYnJlYWthYmxlIG5laWdoYm9ycyBjYWxsYmFjayBpdGVyYXRvciBtZXRob2QgdG8gdGhlXG4gKiBHcmFwaCBwcm90b3R5cGUuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3MgICAgICAgLSBUYXJnZXQgY2xhc3MuXG4gKiBAcGFyYW0ge29iamVjdH0gICBkZXNjcmlwdGlvbiAtIE1ldGhvZCBkZXNjcmlwdGlvbi5cbiAqL1xuZnVuY3Rpb24gYXR0YWNoRmluZE5laWdoYm9yKENsYXNzLCBkZXNjcmlwdGlvbikge1xuICBjb25zdCB7bmFtZSwgdHlwZSwgZGlyZWN0aW9ufSA9IGRlc2NyaXB0aW9uO1xuXG4gIGNvbnN0IGNhcGl0YWxpemVkU2luZ3VsYXIgPSBuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEsIC0xKTtcblxuICBjb25zdCBmaW5kTmFtZSA9ICdmaW5kJyArIGNhcGl0YWxpemVkU2luZ3VsYXI7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIGFsbCB0aGUgcmVsZXZhbnQgbmVpZ2hib3JzIHVzaW5nIGEgY2FsbGJhY2suXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgICBub2RlICAgICAtIFRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byB1c2UuXG4gICAqIEByZXR1cm4ge3VuZGVmaW5lZH1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgYXJndW1lbnRzLlxuICAgKi9cbiAgQ2xhc3MucHJvdG90eXBlW2ZpbmROYW1lXSA9IGZ1bmN0aW9uIChub2RlLCBjYWxsYmFjaykge1xuICAgIC8vIEVhcmx5IHRlcm1pbmF0aW9uXG4gICAgaWYgKHR5cGUgIT09ICdtaXhlZCcgJiYgdGhpcy50eXBlICE9PSAnbWl4ZWQnICYmIHR5cGUgIT09IHRoaXMudHlwZSkgcmV0dXJuO1xuXG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKHR5cGVvZiBub2RlRGF0YSA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguJHtmaW5kTmFtZX06IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7bm9kZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgLy8gSGVyZSwgd2Ugd2FudCB0byBpdGVyYXRlIG92ZXIgYSBub2RlJ3MgcmVsZXZhbnQgbmVpZ2hib3JzXG4gICAgcmV0dXJuIGZpbmROZWlnaGJvcihcbiAgICAgIHR5cGUgPT09ICdtaXhlZCcgPyB0aGlzLnR5cGUgOiB0eXBlLFxuICAgICAgZGlyZWN0aW9uLFxuICAgICAgbm9kZURhdGEsXG4gICAgICBjYWxsYmFja1xuICAgICk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIGFsbCB0aGUgcmVsZXZhbnQgbmVpZ2hib3JzIHRvIGZpbmQgaWYgYW55IG9mIHRoZW1cbiAgICogbWF0Y2hlcyB0aGUgZ2l2ZW4gcHJlZGljYXRlLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgbm9kZSAgICAgLSBUYXJnZXQgbm9kZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gdXNlLlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZXJlIGFyZSB0b28gbWFueSBhcmd1bWVudHMuXG4gICAqL1xuICBjb25zdCBzb21lTmFtZSA9ICdzb21lJyArIGNhcGl0YWxpemVkU2luZ3VsYXI7XG5cbiAgQ2xhc3MucHJvdG90eXBlW3NvbWVOYW1lXSA9IGZ1bmN0aW9uIChub2RlLCBjYWxsYmFjaykge1xuICAgIGNvbnN0IGZvdW5kID0gdGhpc1tmaW5kTmFtZV0obm9kZSwgY2FsbGJhY2spO1xuXG4gICAgaWYgKGZvdW5kKSByZXR1cm4gdHJ1ZTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICAvKipcbiAgICogRnVuY3Rpb24gaXRlcmF0aW5nIG92ZXIgYWxsIHRoZSByZWxldmFudCBuZWlnaGJvcnMgdG8gZmluZCBpZiBhbGwgb2YgdGhlbVxuICAgKiBtYXRjaGUgdGhlIGdpdmVuIHByZWRpY2F0ZS5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgIG5vZGUgICAgIC0gVGFyZ2V0IG5vZGUuXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIHVzZS5cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgYXJndW1lbnRzLlxuICAgKi9cbiAgY29uc3QgZXZlcnlOYW1lID0gJ2V2ZXJ5JyArIGNhcGl0YWxpemVkU2luZ3VsYXI7XG5cbiAgQ2xhc3MucHJvdG90eXBlW2V2ZXJ5TmFtZV0gPSBmdW5jdGlvbiAobm9kZSwgY2FsbGJhY2spIHtcbiAgICBjb25zdCBmb3VuZCA9IHRoaXNbZmluZE5hbWVdKG5vZGUsIChuLCBhKSA9PiB7XG4gICAgICByZXR1cm4gIWNhbGxiYWNrKG4sIGEpO1xuICAgIH0pO1xuXG4gICAgaWYgKGZvdW5kKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBhdHRhY2hpbmcgYSBuZWlnaGJvcnMgY2FsbGJhY2sgaXRlcmF0b3IgbWV0aG9kIHRvIHRoZSBHcmFwaCBwcm90b3R5cGUuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3MgICAgICAgLSBUYXJnZXQgY2xhc3MuXG4gKiBAcGFyYW0ge29iamVjdH0gICBkZXNjcmlwdGlvbiAtIE1ldGhvZCBkZXNjcmlwdGlvbi5cbiAqL1xuZnVuY3Rpb24gYXR0YWNoTmVpZ2hib3JJdGVyYXRvckNyZWF0b3IoQ2xhc3MsIGRlc2NyaXB0aW9uKSB7XG4gIGNvbnN0IHtuYW1lLCB0eXBlLCBkaXJlY3Rpb259ID0gZGVzY3JpcHRpb247XG5cbiAgY29uc3QgaXRlcmF0b3JOYW1lID0gbmFtZS5zbGljZSgwLCAtMSkgKyAnRW50cmllcyc7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHJldHVybmluZyBhbiBpdGVyYXRvciBvdmVyIGFsbCB0aGUgcmVsZXZhbnQgbmVpZ2hib3JzLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICAgbm9kZSAgICAgLSBUYXJnZXQgbm9kZS5cbiAgICogQHJldHVybiB7SXRlcmF0b3J9XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlcmUgYXJlIHRvbyBtYW55IGFyZ3VtZW50cy5cbiAgICovXG4gIENsYXNzLnByb3RvdHlwZVtpdGVyYXRvck5hbWVdID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAvLyBFYXJseSB0ZXJtaW5hdGlvblxuICAgIGlmICh0eXBlICE9PSAnbWl4ZWQnICYmIHRoaXMudHlwZSAhPT0gJ21peGVkJyAmJiB0eXBlICE9PSB0aGlzLnR5cGUpXG4gICAgICByZXR1cm4gSXRlcmF0b3IuZW1wdHkoKTtcblxuICAgIG5vZGUgPSAnJyArIG5vZGU7XG5cbiAgICBjb25zdCBub2RlRGF0YSA9IHRoaXMuX25vZGVzLmdldChub2RlKTtcblxuICAgIGlmICh0eXBlb2Ygbm9kZURhdGEgPT09ICd1bmRlZmluZWQnKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7aXRlcmF0b3JOYW1lfTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICAvLyBIZXJlLCB3ZSB3YW50IHRvIGl0ZXJhdGUgb3ZlciBhIG5vZGUncyByZWxldmFudCBuZWlnaGJvcnNcbiAgICByZXR1cm4gY3JlYXRlTmVpZ2hib3JJdGVyYXRvcihcbiAgICAgIHR5cGUgPT09ICdtaXhlZCcgPyB0aGlzLnR5cGUgOiB0eXBlLFxuICAgICAgZGlyZWN0aW9uLFxuICAgICAgbm9kZURhdGFcbiAgICApO1xuICB9O1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGF0dGFjaGluZyBldmVyeSBuZWlnaGJvciBpdGVyYXRpb24gbWV0aG9kIHRvIHRoZSBHcmFwaCBjbGFzcy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBHcmFwaCAtIEdyYXBoIGNsYXNzLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhdHRhY2hOZWlnaGJvckl0ZXJhdGlvbk1ldGhvZHMoR3JhcGgpIHtcbiAgTkVJR0hCT1JTX0lURVJBVElPTi5mb3JFYWNoKGRlc2NyaXB0aW9uID0+IHtcbiAgICBhdHRhY2hOZWlnaGJvckFycmF5Q3JlYXRvcihHcmFwaCwgZGVzY3JpcHRpb24pO1xuICAgIGF0dGFjaEZvckVhY2hOZWlnaGJvcihHcmFwaCwgZGVzY3JpcHRpb24pO1xuICAgIGF0dGFjaEZpbmROZWlnaGJvcihHcmFwaCwgZGVzY3JpcHRpb24pO1xuICAgIGF0dGFjaE5laWdoYm9ySXRlcmF0b3JDcmVhdG9yKEdyYXBoLCBkZXNjcmlwdGlvbik7XG4gIH0pO1xufVxuIiwgIi8qKlxuICogR3JhcGhvbG9neSBBZGphY2VuY3kgSXRlcmF0aW9uXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIEF0dGFjaGluZyBzb21lIG1ldGhvZHMgdG8gdGhlIEdyYXBoIGNsYXNzIHRvIGJlIGFibGUgdG8gaXRlcmF0ZSBvdmVyIGFcbiAqIGdyYXBoJ3MgYWRqYWNlbmN5LlxuICovXG5cbi8qKlxuICogRnVuY3Rpb24gaXRlcmF0aW5nIG92ZXIgYSBzaW1wbGUgZ3JhcGgncyBhZGphY2VuY3kgdXNpbmcgYSBjYWxsYmFjay5cbiAqXG4gKiBAcGFyYW0ge2Jvb2xlYW59ICBicmVha2FibGUgICAgICAgICAtIENhbiB3ZSBicmVhaz9cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gIGFzc3ltZXRyaWMgICAgICAgIC0gV2hldGhlciB0byBlbWl0IHVuZGlyZWN0ZWQgZWRnZXMgb25seSBvbmNlLlxuICogQHBhcmFtIHtib29sZWFufSAgZGlzY29ubmVjdGVkTm9kZXMgLSBXaGV0aGVyIHRvIGVtaXQgZGlzY29ubmVjdGVkIG5vZGVzLlxuICogQHBhcmFtIHtHcmFwaH0gICAgZ3JhcGggICAgICAgICAgICAgLSBUYXJnZXQgR3JhcGggaW5zdGFuY2UuXG4gKiBAcGFyYW0ge2NhbGxiYWNrfSBmdW5jdGlvbiAgICAgICAgICAtIEl0ZXJhdGlvbiBjYWxsYmFjay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvckVhY2hBZGphY2VuY3lTaW1wbGUoXG4gIGJyZWFrYWJsZSxcbiAgYXNzeW1ldHJpYyxcbiAgZGlzY29ubmVjdGVkTm9kZXMsXG4gIGdyYXBoLFxuICBjYWxsYmFja1xuKSB7XG4gIGNvbnN0IGl0ZXJhdG9yID0gZ3JhcGguX25vZGVzLnZhbHVlcygpO1xuXG4gIGNvbnN0IHR5cGUgPSBncmFwaC50eXBlO1xuXG4gIGxldCBzdGVwLCBzb3VyY2VEYXRhLCBuZWlnaGJvciwgYWRqLCBlZGdlRGF0YSwgdGFyZ2V0RGF0YSwgc2hvdWxkQnJlYWs7XG5cbiAgd2hpbGUgKCgoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSksIHN0ZXAuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICBsZXQgaGFzRWRnZXMgPSBmYWxzZTtcblxuICAgIHNvdXJjZURhdGEgPSBzdGVwLnZhbHVlO1xuXG4gICAgaWYgKHR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgICAgYWRqID0gc291cmNlRGF0YS5vdXQ7XG5cbiAgICAgIGZvciAobmVpZ2hib3IgaW4gYWRqKSB7XG4gICAgICAgIGVkZ2VEYXRhID0gYWRqW25laWdoYm9yXTtcbiAgICAgICAgdGFyZ2V0RGF0YSA9IGVkZ2VEYXRhLnRhcmdldDtcblxuICAgICAgICBoYXNFZGdlcyA9IHRydWU7XG4gICAgICAgIHNob3VsZEJyZWFrID0gY2FsbGJhY2soXG4gICAgICAgICAgc291cmNlRGF0YS5rZXksXG4gICAgICAgICAgdGFyZ2V0RGF0YS5rZXksXG4gICAgICAgICAgc291cmNlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgIHRhcmdldERhdGEuYXR0cmlidXRlcyxcbiAgICAgICAgICBlZGdlRGF0YS5rZXksXG4gICAgICAgICAgZWRnZURhdGEuYXR0cmlidXRlcyxcbiAgICAgICAgICBlZGdlRGF0YS51bmRpcmVjdGVkXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGJyZWFrYWJsZSAmJiBzaG91bGRCcmVhaykgcmV0dXJuIGVkZ2VEYXRhO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlICE9PSAnZGlyZWN0ZWQnKSB7XG4gICAgICBhZGogPSBzb3VyY2VEYXRhLnVuZGlyZWN0ZWQ7XG5cbiAgICAgIGZvciAobmVpZ2hib3IgaW4gYWRqKSB7XG4gICAgICAgIGlmIChhc3N5bWV0cmljICYmIHNvdXJjZURhdGEua2V5ID4gbmVpZ2hib3IpIGNvbnRpbnVlO1xuXG4gICAgICAgIGVkZ2VEYXRhID0gYWRqW25laWdoYm9yXTtcbiAgICAgICAgdGFyZ2V0RGF0YSA9IGVkZ2VEYXRhLnRhcmdldDtcblxuICAgICAgICBpZiAodGFyZ2V0RGF0YS5rZXkgIT09IG5laWdoYm9yKSB0YXJnZXREYXRhID0gZWRnZURhdGEuc291cmNlO1xuXG4gICAgICAgIGhhc0VkZ2VzID0gdHJ1ZTtcbiAgICAgICAgc2hvdWxkQnJlYWsgPSBjYWxsYmFjayhcbiAgICAgICAgICBzb3VyY2VEYXRhLmtleSxcbiAgICAgICAgICB0YXJnZXREYXRhLmtleSxcbiAgICAgICAgICBzb3VyY2VEYXRhLmF0dHJpYnV0ZXMsXG4gICAgICAgICAgdGFyZ2V0RGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgIGVkZ2VEYXRhLmtleSxcbiAgICAgICAgICBlZGdlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgIGVkZ2VEYXRhLnVuZGlyZWN0ZWRcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoYnJlYWthYmxlICYmIHNob3VsZEJyZWFrKSByZXR1cm4gZWRnZURhdGE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRpc2Nvbm5lY3RlZE5vZGVzICYmICFoYXNFZGdlcykge1xuICAgICAgc2hvdWxkQnJlYWsgPSBjYWxsYmFjayhcbiAgICAgICAgc291cmNlRGF0YS5rZXksXG4gICAgICAgIG51bGwsXG4gICAgICAgIHNvdXJjZURhdGEuYXR0cmlidXRlcyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbnVsbFxuICAgICAgKTtcblxuICAgICAgaWYgKGJyZWFrYWJsZSAmJiBzaG91bGRCcmVhaykgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuO1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIGl0ZXJhdGluZyBvdmVyIGEgbXVsdGkgZ3JhcGgncyBhZGphY2VuY3kgdXNpbmcgYSBjYWxsYmFjay5cbiAqXG4gKiBAcGFyYW0ge2Jvb2xlYW59ICBicmVha2FibGUgICAgICAgICAtIENhbiB3ZSBicmVhaz9cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gIGFzc3ltZXRyaWMgICAgICAgIC0gV2hldGhlciB0byBlbWl0IHVuZGlyZWN0ZWQgZWRnZXMgb25seSBvbmNlLlxuICogQHBhcmFtIHtib29sZWFufSAgZGlzY29ubmVjdGVkTm9kZXMgLSBXaGV0aGVyIHRvIGVtaXQgZGlzY29ubmVjdGVkIG5vZGVzLlxuICogQHBhcmFtIHtHcmFwaH0gICAgZ3JhcGggICAgICAgICAgICAgLSBUYXJnZXQgR3JhcGggaW5zdGFuY2UuXG4gKiBAcGFyYW0ge2NhbGxiYWNrfSBmdW5jdGlvbiAgICAgICAgICAtIEl0ZXJhdGlvbiBjYWxsYmFjay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvckVhY2hBZGphY2VuY3lNdWx0aShcbiAgYnJlYWthYmxlLFxuICBhc3N5bWV0cmljLFxuICBkaXNjb25uZWN0ZWROb2RlcyxcbiAgZ3JhcGgsXG4gIGNhbGxiYWNrXG4pIHtcbiAgY29uc3QgaXRlcmF0b3IgPSBncmFwaC5fbm9kZXMudmFsdWVzKCk7XG5cbiAgY29uc3QgdHlwZSA9IGdyYXBoLnR5cGU7XG5cbiAgbGV0IHN0ZXA7XG4gIGxldCBzb3VyY2VEYXRhO1xuICBsZXQgbmVpZ2hib3I7XG4gIGxldCBjb250YWluZXI7XG4gIGxldCBjb250YWluZXJTdGVwO1xuICBsZXQgYWRqO1xuICBsZXQgZWRnZURhdGE7XG4gIGxldCB0YXJnZXREYXRhO1xuICBsZXQgc2hvdWxkQnJlYWs7XG5cbiAgd2hpbGUgKCgoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSksIHN0ZXAuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICBsZXQgaGFzRWRnZXMgPSBmYWxzZTtcblxuICAgIHNvdXJjZURhdGEgPSBzdGVwLnZhbHVlO1xuXG4gICAgaWYgKHR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgICAgYWRqID0gc291cmNlRGF0YS5vdXQ7XG5cbiAgICAgIGZvciAobmVpZ2hib3IgaW4gYWRqKSB7XG4gICAgICAgIGNvbnRhaW5lciA9IGFkaltuZWlnaGJvcl0udmFsdWVzKCk7XG5cbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICgoY29udGFpbmVyU3RlcCA9IGNvbnRhaW5lci5uZXh0KCkpLCBjb250YWluZXJTdGVwLmRvbmUgIT09IHRydWUpXG4gICAgICAgICkge1xuICAgICAgICAgIGVkZ2VEYXRhID0gY29udGFpbmVyU3RlcC52YWx1ZTtcbiAgICAgICAgICB0YXJnZXREYXRhID0gZWRnZURhdGEudGFyZ2V0O1xuXG4gICAgICAgICAgaGFzRWRnZXMgPSB0cnVlO1xuICAgICAgICAgIHNob3VsZEJyZWFrID0gY2FsbGJhY2soXG4gICAgICAgICAgICBzb3VyY2VEYXRhLmtleSxcbiAgICAgICAgICAgIHRhcmdldERhdGEua2V5LFxuICAgICAgICAgICAgc291cmNlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgdGFyZ2V0RGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgZWRnZURhdGEua2V5LFxuICAgICAgICAgICAgZWRnZURhdGEuYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGVkZ2VEYXRhLnVuZGlyZWN0ZWRcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKGJyZWFrYWJsZSAmJiBzaG91bGRCcmVhaykgcmV0dXJuIGVkZ2VEYXRhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgIT09ICdkaXJlY3RlZCcpIHtcbiAgICAgIGFkaiA9IHNvdXJjZURhdGEudW5kaXJlY3RlZDtcblxuICAgICAgZm9yIChuZWlnaGJvciBpbiBhZGopIHtcbiAgICAgICAgaWYgKGFzc3ltZXRyaWMgJiYgc291cmNlRGF0YS5rZXkgPiBuZWlnaGJvcikgY29udGludWU7XG5cbiAgICAgICAgY29udGFpbmVyID0gYWRqW25laWdoYm9yXS52YWx1ZXMoKTtcblxuICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgKChjb250YWluZXJTdGVwID0gY29udGFpbmVyLm5leHQoKSksIGNvbnRhaW5lclN0ZXAuZG9uZSAhPT0gdHJ1ZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgZWRnZURhdGEgPSBjb250YWluZXJTdGVwLnZhbHVlO1xuICAgICAgICAgIHRhcmdldERhdGEgPSBlZGdlRGF0YS50YXJnZXQ7XG5cbiAgICAgICAgICBpZiAodGFyZ2V0RGF0YS5rZXkgIT09IG5laWdoYm9yKSB0YXJnZXREYXRhID0gZWRnZURhdGEuc291cmNlO1xuXG4gICAgICAgICAgaGFzRWRnZXMgPSB0cnVlO1xuICAgICAgICAgIHNob3VsZEJyZWFrID0gY2FsbGJhY2soXG4gICAgICAgICAgICBzb3VyY2VEYXRhLmtleSxcbiAgICAgICAgICAgIHRhcmdldERhdGEua2V5LFxuICAgICAgICAgICAgc291cmNlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgdGFyZ2V0RGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgZWRnZURhdGEua2V5LFxuICAgICAgICAgICAgZWRnZURhdGEuYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGVkZ2VEYXRhLnVuZGlyZWN0ZWRcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKGJyZWFrYWJsZSAmJiBzaG91bGRCcmVhaykgcmV0dXJuIGVkZ2VEYXRhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRpc2Nvbm5lY3RlZE5vZGVzICYmICFoYXNFZGdlcykge1xuICAgICAgc2hvdWxkQnJlYWsgPSBjYWxsYmFjayhcbiAgICAgICAgc291cmNlRGF0YS5rZXksXG4gICAgICAgIG51bGwsXG4gICAgICAgIHNvdXJjZURhdGEuYXR0cmlidXRlcyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbnVsbFxuICAgICAgKTtcblxuICAgICAgaWYgKGJyZWFrYWJsZSAmJiBzaG91bGRCcmVhaykgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuO1xufVxuXG4vLyBleHBvcnQgZnVuY3Rpb24gY3JlYXRlQWRqYWNlbmN5SXRlcmF0b3JTaW1wbGUoZ3JhcGgpIHtcbi8vICAgY29uc3QgaXRlcmF0b3IgPSBncmFwaC5fbm9kZXMudmFsdWVzKCk7XG5cbi8vICAgY29uc3QgdHlwZSA9IGdyYXBoLnR5cGU7XG5cbi8vICAgbGV0IHN0YXRlID0gJ291dGVyJyxcbi8vICAgICBzb3VyY2VEYXRhLFxuLy8gICAgIG5laWdoYm9ycyxcbi8vICAgICBhZGosXG4vLyAgICAgb2Zmc2V0O1xuXG4vLyAgIHJldHVybiBuZXcgSXRlcmF0b3IoZnVuY3Rpb24gbmV4dCgpIHtcbi8vICAgICBsZXQgc3RlcDtcblxuLy8gICAgIGlmIChzdGF0ZSA9PT0gJ291dGVyJykge1xuLy8gICAgICAgc3RlcCA9IGl0ZXJhdG9yLm5leHQoKTtcblxuLy8gICAgICAgaWYgKHN0ZXAuZG9uZSA9PT0gdHJ1ZSkgcmV0dXJuIHN0ZXA7XG5cbi8vICAgICAgIHNvdXJjZURhdGEgPSBzdGVwLnZhbHVlO1xuXG4vLyAgICAgICBzdGF0ZSA9ICdkaXJlY3RlZCc7XG4vLyAgICAgICByZXR1cm4gbmV4dCgpO1xuLy8gICAgIH1cblxuLy8gICAgIGlmIChzdGF0ZSA9PT0gJ2RpcmVjdGVkJykge1xuLy8gICAgICAgaWYgKHR5cGUgPT09ICd1bmRpcmVjdGVkJykge1xuLy8gICAgICAgICBzdGF0ZSA9ICd1bmRpcmVjdGVkJztcbi8vICAgICAgICAgcmV0dXJuIG5leHQoKTtcbi8vICAgICAgIH1cblxuLy8gICAgICAgYWRqID0gc291cmNlRGF0YS5vdXQ7XG4vLyAgICAgICBuZWlnaGJvcnMgPSBPYmplY3Qua2V5cyhzb3VyY2VEYXRhLm91dCk7XG4vLyAgICAgICBvZmZzZXQgPSAwO1xuLy8gICAgICAgc3RhdGUgPSAnaW5uZXItZGlyZWN0ZWQnO1xuXG4vLyAgICAgICByZXR1cm4gbmV4dCgpO1xuLy8gICAgIH1cblxuLy8gICAgIGlmIChzdGF0ZSA9PT0gJ3VuZGlyZWN0ZWQnKSB7XG4vLyAgICAgICBpZiAodHlwZSA9PT0gJ2RpcmVjdGVkJykge1xuLy8gICAgICAgICBzdGF0ZSA9ICdvdXRlcic7XG4vLyAgICAgICAgIHJldHVybiBuZXh0KCk7XG4vLyAgICAgICB9XG5cbi8vICAgICAgIGFkaiA9IHNvdXJjZURhdGEudW5kaXJlY3RlZDtcbi8vICAgICAgIG5laWdoYm9ycyA9IE9iamVjdC5rZXlzKHNvdXJjZURhdGEudW5kaXJlY3RlZCk7XG4vLyAgICAgICBvZmZzZXQgPSAwO1xuLy8gICAgICAgc3RhdGUgPSAnaW5uZXItdW5kaXJlY3RlZCc7XG4vLyAgICAgfVxuXG4vLyAgICAgLy8gSW5uZXJcbi8vICAgICBpZiAob2Zmc2V0ID49IG5laWdoYm9ycy5sZW5ndGgpIHtcbi8vICAgICAgIGlmIChzdGF0ZSA9PT0gJ2lubmVyLXVuZGlyZWN0ZWQnKSBzdGF0ZSA9ICdvdXRlcic7XG4vLyAgICAgICBlbHNlIHN0YXRlID0gJ3VuZGlyZWN0ZWQnO1xuXG4vLyAgICAgICByZXR1cm4gbmV4dCgpO1xuLy8gICAgIH1cblxuLy8gICAgIGNvbnN0IG5laWdoYm9yID0gbmVpZ2hib3JzW29mZnNldCsrXTtcbi8vICAgICBjb25zdCBlZGdlRGF0YSA9IGFkaltuZWlnaGJvcl07XG4vLyAgICAgbGV0IHRhcmdldERhdGEgPSBlZGdlRGF0YS50YXJnZXQ7XG5cbi8vICAgICBpZiAoc3RhdGUgPT09ICdpbm5lci11bmRpcmVjdGVkJyAmJiB0YXJnZXREYXRhLmtleSA9PT0gc291cmNlRGF0YS5rZXkpXG4vLyAgICAgICB0YXJnZXREYXRhID0gZWRnZURhdGEuc291cmNlO1xuXG4vLyAgICAgcmV0dXJuIHtcbi8vICAgICAgIGRvbmU6IGZhbHNlLFxuLy8gICAgICAgdmFsdWU6IHtcbi8vICAgICAgICAgc291cmNlOiBzb3VyY2VEYXRhLmtleSxcbi8vICAgICAgICAgdGFyZ2V0OiB0YXJnZXREYXRhLmtleSxcbi8vICAgICAgICAgc291cmNlQXR0cmlidXRlczogc291cmNlRGF0YS5hdHRyaWJ1dGVzLFxuLy8gICAgICAgICB0YXJnZXRBdHRyaWJ1dGVzOiB0YXJnZXREYXRhLmF0dHJpYnV0ZXMsXG4vLyAgICAgICAgIGVkZ2VLZXk6IGVkZ2VEYXRhLmtleSxcbi8vICAgICAgICAgZWRnZUF0dHJpYnV0ZXM6IGVkZ2VEYXRhLmF0dHJpYnV0ZXMsXG4vLyAgICAgICAgIHVuZGlyZWN0ZWQ6IGVkZ2VEYXRhLnVuZGlyZWN0ZWRcbi8vICAgICAgIH1cbi8vICAgICB9O1xuLy8gICB9KTtcbi8vIH1cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkamFjZW5jeUl0ZXJhdG9yTXVsdGkoZ3JhcGgpIHtcbi8vICAgY29uc3QgaXRlcmF0b3IgPSBncmFwaC5fbm9kZXMudmFsdWVzKCk7XG5cbi8vICAgY29uc3QgdHlwZSA9IGdyYXBoLnR5cGU7XG5cbi8vICAgbGV0IHN0YXRlID0gJ291dGVyJyxcbi8vICAgICBzb3VyY2VEYXRhLFxuLy8gICAgIG5laWdoYm9ycyxcbi8vICAgICBjb250YWluZXIgPSBudWxsLFxuLy8gICAgIGFkaixcbi8vICAgICBvZmZzZXQ7XG5cbi8vICAgcmV0dXJuIG5ldyBJdGVyYXRvcihmdW5jdGlvbiBuZXh0KCkge1xuLy8gICAgIGxldCBzdGVwO1xuXG4vLyAgICAgaWYgKHN0YXRlID09PSAnb3V0ZXInKSB7XG4vLyAgICAgICBzdGVwID0gaXRlcmF0b3IubmV4dCgpO1xuXG4vLyAgICAgICBpZiAoc3RlcC5kb25lID09PSB0cnVlKSByZXR1cm4gc3RlcDtcblxuLy8gICAgICAgc291cmNlRGF0YSA9IHN0ZXAudmFsdWU7XG5cbi8vICAgICAgIHN0YXRlID0gJ2RpcmVjdGVkJztcbi8vICAgICAgIHJldHVybiBuZXh0KCk7XG4vLyAgICAgfVxuXG4vLyAgICAgaWYgKHN0YXRlID09PSAnZGlyZWN0ZWQnKSB7XG4vLyAgICAgICBpZiAodHlwZSA9PT0gJ3VuZGlyZWN0ZWQnKSB7XG4vLyAgICAgICAgIHN0YXRlID0gJ3VuZGlyZWN0ZWQnO1xuLy8gICAgICAgICByZXR1cm4gbmV4dCgpO1xuLy8gICAgICAgfVxuXG4vLyAgICAgICBhZGogPSBzb3VyY2VEYXRhLm91dDtcbi8vICAgICAgIG5laWdoYm9ycyA9IE9iamVjdC5rZXlzKHNvdXJjZURhdGEub3V0KTtcbi8vICAgICAgIG9mZnNldCA9IDA7XG4vLyAgICAgICBzdGF0ZSA9ICdpbm5lci1kaXJlY3RlZCc7XG5cbi8vICAgICAgIHJldHVybiBuZXh0KCk7XG4vLyAgICAgfVxuXG4vLyAgICAgaWYgKHN0YXRlID09PSAndW5kaXJlY3RlZCcpIHtcbi8vICAgICAgIGlmICh0eXBlID09PSAnZGlyZWN0ZWQnKSB7XG4vLyAgICAgICAgIHN0YXRlID0gJ291dGVyJztcbi8vICAgICAgICAgcmV0dXJuIG5leHQoKTtcbi8vICAgICAgIH1cblxuLy8gICAgICAgYWRqID0gc291cmNlRGF0YS51bmRpcmVjdGVkO1xuLy8gICAgICAgbmVpZ2hib3JzID0gT2JqZWN0LmtleXMoc291cmNlRGF0YS51bmRpcmVjdGVkKTtcbi8vICAgICAgIG9mZnNldCA9IDA7XG4vLyAgICAgICBzdGF0ZSA9ICdpbm5lci11bmRpcmVjdGVkJztcbi8vICAgICB9XG5cbi8vICAgICAvLyBJbm5lclxuLy8gICAgIGlmICghY29udGFpbmVyICYmIG9mZnNldCA+PSBuZWlnaGJvcnMubGVuZ3RoKSB7XG4vLyAgICAgICBpZiAoc3RhdGUgPT09ICdpbm5lci11bmRpcmVjdGVkJykgc3RhdGUgPSAnb3V0ZXInO1xuLy8gICAgICAgZWxzZSBzdGF0ZSA9ICd1bmRpcmVjdGVkJztcblxuLy8gICAgICAgcmV0dXJuIG5leHQoKTtcbi8vICAgICB9XG5cbi8vICAgICBpZiAoIWNvbnRhaW5lcikge1xuLy8gICAgICAgY29uc3QgbmVpZ2hib3IgPSBuZWlnaGJvcnNbb2Zmc2V0KytdO1xuLy8gICAgICAgY29udGFpbmVyID0gYWRqW25laWdoYm9yXS52YWx1ZXMoKTtcbi8vICAgICAgIHJldHVybiBuZXh0KCk7XG4vLyAgICAgfVxuXG4vLyAgICAgc3RlcCA9IGNvbnRhaW5lci5uZXh0KCk7XG5cbi8vICAgICBpZiAoc3RlcC5kb25lKSB7XG4vLyAgICAgICBjb250YWluZXIgPSBudWxsO1xuLy8gICAgICAgcmV0dXJuIG5leHQoKTtcbi8vICAgICB9XG5cbi8vICAgICBjb25zdCBlZGdlRGF0YSA9IHN0ZXAudmFsdWU7XG4vLyAgICAgbGV0IHRhcmdldERhdGEgPSBlZGdlRGF0YS50YXJnZXQ7XG5cbi8vICAgICBpZiAoc3RhdGUgPT09ICdpbm5lci11bmRpcmVjdGVkJyAmJiB0YXJnZXREYXRhLmtleSA9PT0gc291cmNlRGF0YS5rZXkpXG4vLyAgICAgICB0YXJnZXREYXRhID0gZWRnZURhdGEuc291cmNlO1xuXG4vLyAgICAgcmV0dXJuIHtcbi8vICAgICAgIGRvbmU6IGZhbHNlLFxuLy8gICAgICAgdmFsdWU6IHtcbi8vICAgICAgICAgc291cmNlOiBzb3VyY2VEYXRhLmtleSxcbi8vICAgICAgICAgdGFyZ2V0OiB0YXJnZXREYXRhLmtleSxcbi8vICAgICAgICAgc291cmNlQXR0cmlidXRlczogc291cmNlRGF0YS5hdHRyaWJ1dGVzLFxuLy8gICAgICAgICB0YXJnZXRBdHRyaWJ1dGVzOiB0YXJnZXREYXRhLmF0dHJpYnV0ZXMsXG4vLyAgICAgICAgIGVkZ2U6IGVkZ2VEYXRhLmtleSxcbi8vICAgICAgICAgZWRnZUF0dHJpYnV0ZXM6IGVkZ2VEYXRhLmF0dHJpYnV0ZXMsXG4vLyAgICAgICAgIHVuZGlyZWN0ZWQ6IGVkZ2VEYXRhLnVuZGlyZWN0ZWRcbi8vICAgICAgIH1cbi8vICAgICB9O1xuLy8gICB9KTtcbi8vIH1cbiIsICIvKipcbiAqIEdyYXBob2xvZ3kgU2VyaWFsaXphdGlvbiBVdGlsaXRpZXNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKlxuICogQ29sbGVjdGlvbiBvZiBmdW5jdGlvbnMgdXNlZCB0byB2YWxpZGF0ZSBpbXBvcnQtZXhwb3J0IGZvcm1hdHMgJiB0byBvdXB1dFxuICogdGhlbSBmcm9tIGludGVybmFsIGdyYXBoIGRhdGEuXG4gKlxuICogU2VyaWFsaXplZCBOb2RlOlxuICoge2tleSwgP2F0dHJpYnV0ZXN9XG4gKlxuICogU2VyaWFsaXplZCBFZGdlOlxuICoge2tleT8sIHNvdXJjZSwgdGFyZ2V0LCBhdHRyaWJ1dGVzPywgdW5kaXJlY3RlZD99XG4gKlxuICogU2VyaWFsaXplZCBHcmFwaDpcbiAqIHtub2Rlc1tdLCBlZGdlcz9bXX1cbiAqL1xuaW1wb3J0IHthc3NpZ24sIGlzUGxhaW5PYmplY3QsIGlzRW1wdHl9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIEZvcm1hdHMgaW50ZXJuYWwgbm9kZSBkYXRhIGludG8gYSBzZXJpYWxpemVkIG5vZGUuXG4gKlxuICogQHBhcmFtICB7YW55fSAgICBrZXkgIC0gVGhlIG5vZGUncyBrZXkuXG4gKiBAcGFyYW0gIHtvYmplY3R9IGRhdGEgLSBJbnRlcm5hbCBub2RlJ3MgZGF0YS5cbiAqIEByZXR1cm4ge2FycmF5fSAgICAgICAtIFRoZSBzZXJpYWxpemVkIG5vZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVOb2RlKGtleSwgZGF0YSkge1xuICBjb25zdCBzZXJpYWxpemVkID0ge2tleX07XG5cbiAgaWYgKCFpc0VtcHR5KGRhdGEuYXR0cmlidXRlcykpXG4gICAgc2VyaWFsaXplZC5hdHRyaWJ1dGVzID0gYXNzaWduKHt9LCBkYXRhLmF0dHJpYnV0ZXMpO1xuXG4gIHJldHVybiBzZXJpYWxpemVkO1xufVxuXG4vKipcbiAqIEZvcm1hdHMgaW50ZXJuYWwgZWRnZSBkYXRhIGludG8gYSBzZXJpYWxpemVkIGVkZ2UuXG4gKlxuICogQHBhcmFtICB7YW55fSAgICBrZXkgIC0gVGhlIGVkZ2UncyBrZXkuXG4gKiBAcGFyYW0gIHtvYmplY3R9IGRhdGEgLSBJbnRlcm5hbCBlZGdlJ3MgZGF0YS5cbiAqIEByZXR1cm4ge2FycmF5fSAgICAgICAtIFRoZSBzZXJpYWxpemVkIGVkZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVFZGdlKGtleSwgZGF0YSkge1xuICBjb25zdCBzZXJpYWxpemVkID0ge1xuICAgIGtleSxcbiAgICBzb3VyY2U6IGRhdGEuc291cmNlLmtleSxcbiAgICB0YXJnZXQ6IGRhdGEudGFyZ2V0LmtleVxuICB9O1xuXG4gIGlmICghaXNFbXB0eShkYXRhLmF0dHJpYnV0ZXMpKVxuICAgIHNlcmlhbGl6ZWQuYXR0cmlidXRlcyA9IGFzc2lnbih7fSwgZGF0YS5hdHRyaWJ1dGVzKTtcblxuICBpZiAoZGF0YS51bmRpcmVjdGVkKSBzZXJpYWxpemVkLnVuZGlyZWN0ZWQgPSB0cnVlO1xuXG4gIHJldHVybiBzZXJpYWxpemVkO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIHNlcmlhbGl6ZWQgbm9kZS5cbiAqXG4gKiBAcGFyYW0gIHttaXhlZH0gdmFsdWUgLSBUYXJnZXQgdmFsdWUuXG4gKiBAcmV0dXJuIHtzdHJpbmd8bnVsbH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU2VyaWFsaXplZE5vZGUodmFsdWUpIHtcbiAgaWYgKCFpc1BsYWluT2JqZWN0KHZhbHVlKSkgcmV0dXJuICdub3Qtb2JqZWN0JztcblxuICBpZiAoISgna2V5JyBpbiB2YWx1ZSkpIHJldHVybiAnbm8ta2V5JztcblxuICBpZiAoXG4gICAgJ2F0dHJpYnV0ZXMnIGluIHZhbHVlICYmXG4gICAgKCFpc1BsYWluT2JqZWN0KHZhbHVlLmF0dHJpYnV0ZXMpIHx8IHZhbHVlLmF0dHJpYnV0ZXMgPT09IG51bGwpXG4gIClcbiAgICByZXR1cm4gJ2ludmFsaWQtYXR0cmlidXRlcyc7XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIHZhbHVlIGlzIGEgc2VyaWFsaXplZCBlZGdlLlxuICpcbiAqIEBwYXJhbSAge21peGVkfSB2YWx1ZSAtIFRhcmdldCB2YWx1ZS5cbiAqIEByZXR1cm4ge3N0cmluZ3xudWxsfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTZXJpYWxpemVkRWRnZSh2YWx1ZSkge1xuICBpZiAoIWlzUGxhaW5PYmplY3QodmFsdWUpKSByZXR1cm4gJ25vdC1vYmplY3QnO1xuXG4gIGlmICghKCdzb3VyY2UnIGluIHZhbHVlKSkgcmV0dXJuICduby1zb3VyY2UnO1xuXG4gIGlmICghKCd0YXJnZXQnIGluIHZhbHVlKSkgcmV0dXJuICduby10YXJnZXQnO1xuXG4gIGlmIChcbiAgICAnYXR0cmlidXRlcycgaW4gdmFsdWUgJiZcbiAgICAoIWlzUGxhaW5PYmplY3QodmFsdWUuYXR0cmlidXRlcykgfHwgdmFsdWUuYXR0cmlidXRlcyA9PT0gbnVsbClcbiAgKVxuICAgIHJldHVybiAnaW52YWxpZC1hdHRyaWJ1dGVzJztcblxuICBpZiAoJ3VuZGlyZWN0ZWQnIGluIHZhbHVlICYmIHR5cGVvZiB2YWx1ZS51bmRpcmVjdGVkICE9PSAnYm9vbGVhbicpXG4gICAgcmV0dXJuICdpbnZhbGlkLXVuZGlyZWN0ZWQnO1xuXG4gIHJldHVybiBudWxsO1xufVxuIiwgIi8qIGVzbGludCBuby1uZXN0ZWQtdGVybmFyeTogMCAqL1xuLyoqXG4gKiBHcmFwaG9sb2d5IFJlZmVyZW5jZSBJbXBsZW1lbnRhdGlvblxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKlxuICogUmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBncmFwaG9sb2d5IHNwZWNzLlxuICovXG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCBJdGVyYXRvciBmcm9tICdvYmxpdGVyYXRvci9pdGVyYXRvcic7XG5pbXBvcnQgdGFrZSBmcm9tICdvYmxpdGVyYXRvci90YWtlJztcblxuaW1wb3J0IHtcbiAgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IsXG4gIE5vdEZvdW5kR3JhcGhFcnJvcixcbiAgVXNhZ2VHcmFwaEVycm9yXG59IGZyb20gJy4vZXJyb3JzJztcblxuaW1wb3J0IHtcbiAgTWl4ZWROb2RlRGF0YSxcbiAgRGlyZWN0ZWROb2RlRGF0YSxcbiAgVW5kaXJlY3RlZE5vZGVEYXRhLFxuICBFZGdlRGF0YVxufSBmcm9tICcuL2RhdGEnO1xuXG5pbXBvcnQge1xuICB1cGRhdGVTdHJ1Y3R1cmVJbmRleCxcbiAgY2xlYXJFZGdlRnJvbVN0cnVjdHVyZUluZGV4LFxuICBjbGVhclN0cnVjdHVyZUluZGV4LFxuICB1cGdyYWRlU3RydWN0dXJlSW5kZXhUb011bHRpXG59IGZyb20gJy4vaW5kaWNlcyc7XG5cbmltcG9ydCBhdHRhY2hOb2RlQXR0cmlidXRlc01ldGhvZHMgZnJvbSAnLi9hdHRyaWJ1dGVzL25vZGVzJztcbmltcG9ydCBhdHRhY2hFZGdlQXR0cmlidXRlc01ldGhvZHMgZnJvbSAnLi9hdHRyaWJ1dGVzL2VkZ2VzJztcbmltcG9ydCBhdHRhY2hFZGdlSXRlcmF0aW9uTWV0aG9kcyBmcm9tICcuL2l0ZXJhdGlvbi9lZGdlcyc7XG5pbXBvcnQgYXR0YWNoTmVpZ2hib3JJdGVyYXRpb25NZXRob2RzIGZyb20gJy4vaXRlcmF0aW9uL25laWdoYm9ycyc7XG5pbXBvcnQge1xuICBmb3JFYWNoQWRqYWNlbmN5U2ltcGxlLFxuICBmb3JFYWNoQWRqYWNlbmN5TXVsdGlcbn0gZnJvbSAnLi9pdGVyYXRpb24vYWRqYWNlbmN5JztcblxuaW1wb3J0IHtcbiAgc2VyaWFsaXplTm9kZSxcbiAgc2VyaWFsaXplRWRnZSxcbiAgdmFsaWRhdGVTZXJpYWxpemVkTm9kZSxcbiAgdmFsaWRhdGVTZXJpYWxpemVkRWRnZVxufSBmcm9tICcuL3NlcmlhbGl6YXRpb24nO1xuXG5pbXBvcnQge1xuICBhc3NpZ24sXG4gIGdldE1hdGNoaW5nRWRnZSxcbiAgaXNHcmFwaCxcbiAgaXNQbGFpbk9iamVjdCxcbiAgcHJpdmF0ZVByb3BlcnR5LFxuICByZWFkT25seVByb3BlcnR5LFxuICBpbmNyZW1lbnRhbElkU3RhcnRpbmdGcm9tUmFuZG9tQnl0ZSxcbiAgdmFsaWRhdGVIaW50c1xufSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBDb25zdGFudHMuXG4gKi9cbmNvbnN0IElOU1RBTkNFX0lEID0gaW5jcmVtZW50YWxJZFN0YXJ0aW5nRnJvbVJhbmRvbUJ5dGUoKTtcblxuLyoqXG4gKiBFbnVtcy5cbiAqL1xuY29uc3QgVFlQRVMgPSBuZXcgU2V0KFsnZGlyZWN0ZWQnLCAndW5kaXJlY3RlZCcsICdtaXhlZCddKTtcblxuY29uc3QgRU1JVFRFUl9QUk9QUyA9IG5ldyBTZXQoW1xuICAnZG9tYWluJyxcbiAgJ19ldmVudHMnLFxuICAnX2V2ZW50c0NvdW50JyxcbiAgJ19tYXhMaXN0ZW5lcnMnXG5dKTtcblxuY29uc3QgRURHRV9BRERfTUVUSE9EUyA9IFtcbiAge1xuICAgIG5hbWU6IHZlcmIgPT4gYCR7dmVyYn1FZGdlYCxcbiAgICBnZW5lcmF0ZUtleTogdHJ1ZVxuICB9LFxuICB7XG4gICAgbmFtZTogdmVyYiA9PiBgJHt2ZXJifURpcmVjdGVkRWRnZWAsXG4gICAgZ2VuZXJhdGVLZXk6IHRydWUsXG4gICAgdHlwZTogJ2RpcmVjdGVkJ1xuICB9LFxuICB7XG4gICAgbmFtZTogdmVyYiA9PiBgJHt2ZXJifVVuZGlyZWN0ZWRFZGdlYCxcbiAgICBnZW5lcmF0ZUtleTogdHJ1ZSxcbiAgICB0eXBlOiAndW5kaXJlY3RlZCdcbiAgfSxcbiAge1xuICAgIG5hbWU6IHZlcmIgPT4gYCR7dmVyYn1FZGdlV2l0aEtleWBcbiAgfSxcbiAge1xuICAgIG5hbWU6IHZlcmIgPT4gYCR7dmVyYn1EaXJlY3RlZEVkZ2VXaXRoS2V5YCxcbiAgICB0eXBlOiAnZGlyZWN0ZWQnXG4gIH0sXG4gIHtcbiAgICBuYW1lOiB2ZXJiID0+IGAke3ZlcmJ9VW5kaXJlY3RlZEVkZ2VXaXRoS2V5YCxcbiAgICB0eXBlOiAndW5kaXJlY3RlZCdcbiAgfVxuXTtcblxuLyoqXG4gKiBEZWZhdWx0IG9wdGlvbnMuXG4gKi9cbmNvbnN0IERFRkFVTFRTID0ge1xuICBhbGxvd1NlbGZMb29wczogdHJ1ZSxcbiAgbXVsdGk6IGZhbHNlLFxuICB0eXBlOiAnbWl4ZWQnXG59O1xuXG4vKipcbiAqIEFic3RyYWN0IGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBHcmFwaCBjbGFzcyBmb3IgdmFyaW91cyBtZXRob2RzLlxuICovXG5cbi8qKlxuICogSW50ZXJuYWwgbWV0aG9kIHVzZWQgdG8gYWRkIGEgbm9kZSB0byB0aGUgZ2l2ZW4gZ3JhcGhcbiAqXG4gKiBAcGFyYW0gIHtHcmFwaH0gICBncmFwaCAgICAgICAgICAgLSBUYXJnZXQgZ3JhcGguXG4gKiBAcGFyYW0gIHthbnl9ICAgICBub2RlICAgICAgICAgICAgLSBUaGUgbm9kZSdzIGtleS5cbiAqIEBwYXJhbSAge29iamVjdH0gIFthdHRyaWJ1dGVzXSAgICAtIE9wdGlvbmFsIGF0dHJpYnV0ZXMuXG4gKiBAcmV0dXJuIHtOb2RlRGF0YX0gICAgICAgICAgICAgICAgLSBDcmVhdGVkIG5vZGUgZGF0YS5cbiAqL1xuZnVuY3Rpb24gYWRkTm9kZShncmFwaCwgbm9kZSwgYXR0cmlidXRlcykge1xuICBpZiAoYXR0cmlidXRlcyAmJiAhaXNQbGFpbk9iamVjdChhdHRyaWJ1dGVzKSlcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICBgR3JhcGguYWRkTm9kZTogaW52YWxpZCBhdHRyaWJ1dGVzLiBFeHBlY3RpbmcgYW4gb2JqZWN0IGJ1dCBnb3QgXCIke2F0dHJpYnV0ZXN9XCJgXG4gICAgKTtcblxuICAvLyBTdHJpbmcgY29lcmNpb25cbiAgbm9kZSA9ICcnICsgbm9kZTtcbiAgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMgfHwge307XG5cbiAgaWYgKGdyYXBoLl9ub2Rlcy5oYXMobm9kZSkpXG4gICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgIGBHcmFwaC5hZGROb2RlOiB0aGUgXCIke25vZGV9XCIgbm9kZSBhbHJlYWR5IGV4aXN0IGluIHRoZSBncmFwaC5gXG4gICAgKTtcblxuICBjb25zdCBkYXRhID0gbmV3IGdyYXBoLk5vZGVEYXRhQ2xhc3Mobm9kZSwgYXR0cmlidXRlcyk7XG5cbiAgLy8gQWRkaW5nIHRoZSBub2RlIHRvIGludGVybmFsIHJlZ2lzdGVyXG4gIGdyYXBoLl9ub2Rlcy5zZXQobm9kZSwgZGF0YSk7XG5cbiAgLy8gRW1pdHRpbmdcbiAgZ3JhcGguZW1pdCgnbm9kZUFkZGVkJywge1xuICAgIGtleTogbm9kZSxcbiAgICBhdHRyaWJ1dGVzXG4gIH0pO1xuXG4gIHJldHVybiBkYXRhO1xufVxuXG4vKipcbiAqIFNhbWUgYXMgdGhlIGFib3ZlIGJ1dCB3aXRob3V0IHNhbml0eSBjaGVja3MgYmVjYXVzZSB3ZSBjYWxsIHRoaXMgaW4gY29udGV4dHNcbiAqIHdoZXJlIG5lY2Vzc2FyeSBjaGVja3Mgd2VyZSBhbHJlYWR5IGRvbmUuXG4gKi9cbmZ1bmN0aW9uIHVuc2FmZUFkZE5vZGUoZ3JhcGgsIG5vZGUsIGF0dHJpYnV0ZXMpIHtcbiAgY29uc3QgZGF0YSA9IG5ldyBncmFwaC5Ob2RlRGF0YUNsYXNzKG5vZGUsIGF0dHJpYnV0ZXMpO1xuXG4gIGdyYXBoLl9ub2Rlcy5zZXQobm9kZSwgZGF0YSk7XG5cbiAgZ3JhcGguZW1pdCgnbm9kZUFkZGVkJywge1xuICAgIGtleTogbm9kZSxcbiAgICBhdHRyaWJ1dGVzXG4gIH0pO1xuXG4gIHJldHVybiBkYXRhO1xufVxuXG4vKipcbiAqIEludGVybmFsIG1ldGhvZCB1c2VkIHRvIGFkZCBhbiBhcmJpdHJhcnkgZWRnZSB0byB0aGUgZ2l2ZW4gZ3JhcGguXG4gKlxuICogQHBhcmFtICB7R3JhcGh9ICAgZ3JhcGggICAgICAgICAgIC0gVGFyZ2V0IGdyYXBoLlxuICogQHBhcmFtICB7c3RyaW5nfSAgbmFtZSAgICAgICAgICAgIC0gTmFtZSBvZiB0aGUgY2hpbGQgbWV0aG9kIGZvciBlcnJvcnMuXG4gKiBAcGFyYW0gIHtib29sZWFufSBtdXN0R2VuZXJhdGVLZXkgLSBTaG91bGQgdGhlIGdyYXBoIGdlbmVyYXRlIGFuIGlkP1xuICogQHBhcmFtICB7Ym9vbGVhbn0gdW5kaXJlY3RlZCAgICAgIC0gV2hldGhlciB0aGUgZWRnZSBpcyB1bmRpcmVjdGVkLlxuICogQHBhcmFtICB7YW55fSAgICAgZWRnZSAgICAgICAgICAgIC0gVGhlIGVkZ2UncyBrZXkuXG4gKiBAcGFyYW0gIHthbnl9ICAgICBzb3VyY2UgICAgICAgICAgLSBUaGUgc291cmNlIG5vZGUuXG4gKiBAcGFyYW0gIHthbnl9ICAgICB0YXJnZXQgICAgICAgICAgLSBUaGUgdGFyZ2V0IG5vZGUuXG4gKiBAcGFyYW0gIHtvYmplY3R9ICBbYXR0cmlidXRlc10gICAgLSBPcHRpb25hbCBhdHRyaWJ1dGVzLlxuICogQHJldHVybiB7YW55fSAgICAgICAgICAgICAgICAgICAgIC0gVGhlIGVkZ2UuXG4gKlxuICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgZ3JhcGggaXMgb2YgdGhlIHdyb25nIHR5cGUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBnaXZlbiBhdHRyaWJ1dGVzIGFyZSBub3QgYW4gb2JqZWN0LlxuICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiBzb3VyY2Ugb3IgdGFyZ2V0IGRvZXNuJ3QgZXhpc3QuXG4gKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBlZGdlIGFscmVhZHkgZXhpc3QuXG4gKi9cbmZ1bmN0aW9uIGFkZEVkZ2UoXG4gIGdyYXBoLFxuICBuYW1lLFxuICBtdXN0R2VuZXJhdGVLZXksXG4gIHVuZGlyZWN0ZWQsXG4gIGVkZ2UsXG4gIHNvdXJjZSxcbiAgdGFyZ2V0LFxuICBhdHRyaWJ1dGVzXG4pIHtcbiAgLy8gQ2hlY2tpbmcgdmFsaWRpdHkgb2Ygb3BlcmF0aW9uXG4gIGlmICghdW5kaXJlY3RlZCAmJiBncmFwaC50eXBlID09PSAndW5kaXJlY3RlZCcpXG4gICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgIGBHcmFwaC4ke25hbWV9OiB5b3UgY2Fubm90IGFkZCBhIGRpcmVjdGVkIGVkZ2UgdG8gYW4gdW5kaXJlY3RlZCBncmFwaC4gVXNlIHRoZSAjLmFkZEVkZ2Ugb3IgIy5hZGRVbmRpcmVjdGVkRWRnZSBpbnN0ZWFkLmBcbiAgICApO1xuXG4gIGlmICh1bmRpcmVjdGVkICYmIGdyYXBoLnR5cGUgPT09ICdkaXJlY3RlZCcpXG4gICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgIGBHcmFwaC4ke25hbWV9OiB5b3UgY2Fubm90IGFkZCBhbiB1bmRpcmVjdGVkIGVkZ2UgdG8gYSBkaXJlY3RlZCBncmFwaC4gVXNlIHRoZSAjLmFkZEVkZ2Ugb3IgIy5hZGREaXJlY3RlZEVkZ2UgaW5zdGVhZC5gXG4gICAgKTtcblxuICBpZiAoYXR0cmlidXRlcyAmJiAhaXNQbGFpbk9iamVjdChhdHRyaWJ1dGVzKSlcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICBgR3JhcGguJHtuYW1lfTogaW52YWxpZCBhdHRyaWJ1dGVzLiBFeHBlY3RpbmcgYW4gb2JqZWN0IGJ1dCBnb3QgXCIke2F0dHJpYnV0ZXN9XCJgXG4gICAgKTtcblxuICAvLyBDb2VyY2lvbiBvZiBzb3VyY2UgJiB0YXJnZXQ6XG4gIHNvdXJjZSA9ICcnICsgc291cmNlO1xuICB0YXJnZXQgPSAnJyArIHRhcmdldDtcbiAgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMgfHwge307XG5cbiAgaWYgKCFncmFwaC5hbGxvd1NlbGZMb29wcyAmJiBzb3VyY2UgPT09IHRhcmdldClcbiAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgYEdyYXBoLiR7bmFtZX06IHNvdXJjZSAmIHRhcmdldCBhcmUgdGhlIHNhbWUgKFwiJHtzb3VyY2V9XCIpLCB0aHVzIGNyZWF0aW5nIGEgbG9vcCBleHBsaWNpdGx5IGZvcmJpZGRlbiBieSB0aGlzIGdyYXBoICdhbGxvd1NlbGZMb29wcycgb3B0aW9uIHNldCB0byBmYWxzZS5gXG4gICAgKTtcblxuICBjb25zdCBzb3VyY2VEYXRhID0gZ3JhcGguX25vZGVzLmdldChzb3VyY2UpLFxuICAgIHRhcmdldERhdGEgPSBncmFwaC5fbm9kZXMuZ2V0KHRhcmdldCk7XG5cbiAgaWYgKCFzb3VyY2VEYXRhKVxuICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICBgR3JhcGguJHtuYW1lfTogc291cmNlIG5vZGUgXCIke3NvdXJjZX1cIiBub3QgZm91bmQuYFxuICAgICk7XG5cbiAgaWYgKCF0YXJnZXREYXRhKVxuICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICBgR3JhcGguJHtuYW1lfTogdGFyZ2V0IG5vZGUgXCIke3RhcmdldH1cIiBub3QgZm91bmQuYFxuICAgICk7XG5cbiAgLy8gTXVzdCB0aGUgZ3JhcGggZ2VuZXJhdGUgYW4gaWQgZm9yIHRoaXMgZWRnZT9cbiAgY29uc3QgZXZlbnREYXRhID0ge1xuICAgIGtleTogbnVsbCxcbiAgICB1bmRpcmVjdGVkLFxuICAgIHNvdXJjZSxcbiAgICB0YXJnZXQsXG4gICAgYXR0cmlidXRlc1xuICB9O1xuXG4gIGlmIChtdXN0R2VuZXJhdGVLZXkpIHtcbiAgICAvLyBOT1RFOiBpbiB0aGlzIGNhc2Ugd2UgY2FuIGd1YXJhbnRlZSB0aGF0IHRoZSBrZXkgZG9lcyBub3QgYWxyZWFkeVxuICAgIC8vIGV4aXN0IGFuZCBpcyBhbHJlYWR5IGNvcnJlY3RseSBjYXN0ZWQgYXMgYSBzdHJpbmdcbiAgICBlZGdlID0gZ3JhcGguX2VkZ2VLZXlHZW5lcmF0b3IoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBDb2VyY2lvbiBvZiBlZGdlIGtleVxuICAgIGVkZ2UgPSAnJyArIGVkZ2U7XG5cbiAgICAvLyBIZXJlLCB3ZSBoYXZlIGEga2V5IGNvbGxpc2lvblxuICAgIGlmIChncmFwaC5fZWRnZXMuaGFzKGVkZ2UpKVxuICAgICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLiR7bmFtZX06IHRoZSBcIiR7ZWRnZX1cIiBlZGdlIGFscmVhZHkgZXhpc3RzIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuICB9XG5cbiAgLy8gSGVyZSwgd2UgbWlnaHQgaGF2ZSBhIHNvdXJjZSAvIHRhcmdldCBjb2xsaXNpb25cbiAgaWYgKFxuICAgICFncmFwaC5tdWx0aSAmJlxuICAgICh1bmRpcmVjdGVkXG4gICAgICA/IHR5cGVvZiBzb3VyY2VEYXRhLnVuZGlyZWN0ZWRbdGFyZ2V0XSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgIDogdHlwZW9mIHNvdXJjZURhdGEub3V0W3RhcmdldF0gIT09ICd1bmRlZmluZWQnKVxuICApIHtcbiAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgYEdyYXBoLiR7bmFtZX06IGFuIGVkZ2UgbGlua2luZyBcIiR7c291cmNlfVwiIHRvIFwiJHt0YXJnZXR9XCIgYWxyZWFkeSBleGlzdHMuIElmIHlvdSByZWFsbHkgd2FudCB0byBhZGQgbXVsdGlwbGUgZWRnZXMgbGlua2luZyB0aG9zZSBub2RlcywgeW91IHNob3VsZCBjcmVhdGUgYSBtdWx0aSBncmFwaCBieSB1c2luZyB0aGUgJ211bHRpJyBvcHRpb24uYFxuICAgICk7XG4gIH1cblxuICAvLyBTdG9yaW5nIHNvbWUgZGF0YVxuICBjb25zdCBlZGdlRGF0YSA9IG5ldyBFZGdlRGF0YShcbiAgICB1bmRpcmVjdGVkLFxuICAgIGVkZ2UsXG4gICAgc291cmNlRGF0YSxcbiAgICB0YXJnZXREYXRhLFxuICAgIGF0dHJpYnV0ZXNcbiAgKTtcblxuICAvLyBBZGRpbmcgdGhlIGVkZ2UgdG8gdGhlIGludGVybmFsIHJlZ2lzdGVyXG4gIGdyYXBoLl9lZGdlcy5zZXQoZWRnZSwgZWRnZURhdGEpO1xuXG4gIC8vIEluY3JlbWVudGluZyBub2RlIGRlZ3JlZSBjb3VudGVyc1xuICBpZiAoc291cmNlID09PSB0YXJnZXQpIHtcbiAgICBpZiAodW5kaXJlY3RlZCkge1xuICAgICAgc291cmNlRGF0YS51bmRpcmVjdGVkU2VsZkxvb3BzKys7XG4gICAgICBncmFwaC5fdW5kaXJlY3RlZFNlbGZMb29wQ291bnQrKztcbiAgICB9IGVsc2Uge1xuICAgICAgc291cmNlRGF0YS5kaXJlY3RlZFNlbGZMb29wcysrO1xuICAgICAgZ3JhcGguX2RpcmVjdGVkU2VsZkxvb3BDb3VudCsrO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAodW5kaXJlY3RlZCkge1xuICAgICAgc291cmNlRGF0YS51bmRpcmVjdGVkRGVncmVlKys7XG4gICAgICB0YXJnZXREYXRhLnVuZGlyZWN0ZWREZWdyZWUrKztcbiAgICB9IGVsc2Uge1xuICAgICAgc291cmNlRGF0YS5vdXREZWdyZWUrKztcbiAgICAgIHRhcmdldERhdGEuaW5EZWdyZWUrKztcbiAgICB9XG4gIH1cblxuICAvLyBVcGRhdGluZyByZWxldmFudCBpbmRleFxuICB1cGRhdGVTdHJ1Y3R1cmVJbmRleChcbiAgICBncmFwaCxcbiAgICB1bmRpcmVjdGVkLFxuICAgIGVkZ2VEYXRhLFxuICAgIHNvdXJjZSxcbiAgICB0YXJnZXQsXG4gICAgc291cmNlRGF0YSxcbiAgICB0YXJnZXREYXRhXG4gICk7XG5cbiAgaWYgKHVuZGlyZWN0ZWQpIGdyYXBoLl91bmRpcmVjdGVkU2l6ZSsrO1xuICBlbHNlIGdyYXBoLl9kaXJlY3RlZFNpemUrKztcblxuICAvLyBFbWl0dGluZ1xuICBldmVudERhdGEua2V5ID0gZWRnZTtcblxuICBncmFwaC5lbWl0KCdlZGdlQWRkZWQnLCBldmVudERhdGEpO1xuXG4gIHJldHVybiBlZGdlO1xufVxuXG4vKipcbiAqIEludGVybmFsIG1ldGhvZCB1c2VkIHRvIGFkZCBhbiBhcmJpdHJhcnkgZWRnZSB0byB0aGUgZ2l2ZW4gZ3JhcGguXG4gKlxuICogQHBhcmFtICB7R3JhcGh9ICAgZ3JhcGggICAgICAgICAgIC0gVGFyZ2V0IGdyYXBoLlxuICogQHBhcmFtICB7c3RyaW5nfSAgbmFtZSAgICAgICAgICAgIC0gTmFtZSBvZiB0aGUgY2hpbGQgbWV0aG9kIGZvciBlcnJvcnMuXG4gKiBAcGFyYW0gIHtib29sZWFufSBtdXN0R2VuZXJhdGVLZXkgLSBTaG91bGQgdGhlIGdyYXBoIGdlbmVyYXRlIGFuIGlkP1xuICogQHBhcmFtICB7Ym9vbGVhbn0gdW5kaXJlY3RlZCAgICAgIC0gV2hldGhlciB0aGUgZWRnZSBpcyB1bmRpcmVjdGVkLlxuICogQHBhcmFtICB7YW55fSAgICAgZWRnZSAgICAgICAgICAgIC0gVGhlIGVkZ2UncyBrZXkuXG4gKiBAcGFyYW0gIHthbnl9ICAgICBzb3VyY2UgICAgICAgICAgLSBUaGUgc291cmNlIG5vZGUuXG4gKiBAcGFyYW0gIHthbnl9ICAgICB0YXJnZXQgICAgICAgICAgLSBUaGUgdGFyZ2V0IG5vZGUuXG4gKiBAcGFyYW0gIHtvYmplY3R9ICBbYXR0cmlidXRlc10gICAgLSBPcHRpb25hbCBhdHRyaWJ1dGVzLlxuICogQHBhcmFtICB7Ym9vbGVhbn0gW2FzVXBkYXRlcl0gICAgICAgLSBBcmUgd2UgdXBkYXRpbmcgb3IgbWVyZ2luZz9cbiAqIEByZXR1cm4ge2FueX0gICAgICAgICAgICAgICAgICAgICAtIFRoZSBlZGdlLlxuICpcbiAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIGdyYXBoIGlzIG9mIHRoZSB3cm9uZyB0eXBlLlxuICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgZ2l2ZW4gYXR0cmlidXRlcyBhcmUgbm90IGFuIG9iamVjdC5cbiAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgc291cmNlIG9yIHRhcmdldCBkb2Vzbid0IGV4aXN0LlxuICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgZWRnZSBhbHJlYWR5IGV4aXN0LlxuICovXG5mdW5jdGlvbiBtZXJnZUVkZ2UoXG4gIGdyYXBoLFxuICBuYW1lLFxuICBtdXN0R2VuZXJhdGVLZXksXG4gIHVuZGlyZWN0ZWQsXG4gIGVkZ2UsXG4gIHNvdXJjZSxcbiAgdGFyZ2V0LFxuICBhdHRyaWJ1dGVzLFxuICBhc1VwZGF0ZXJcbikge1xuICAvLyBDaGVja2luZyB2YWxpZGl0eSBvZiBvcGVyYXRpb25cbiAgaWYgKCF1bmRpcmVjdGVkICYmIGdyYXBoLnR5cGUgPT09ICd1bmRpcmVjdGVkJylcbiAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgYEdyYXBoLiR7bmFtZX06IHlvdSBjYW5ub3QgbWVyZ2UvdXBkYXRlIGEgZGlyZWN0ZWQgZWRnZSB0byBhbiB1bmRpcmVjdGVkIGdyYXBoLiBVc2UgdGhlICMubWVyZ2VFZGdlLyMudXBkYXRlRWRnZSBvciAjLmFkZFVuZGlyZWN0ZWRFZGdlIGluc3RlYWQuYFxuICAgICk7XG5cbiAgaWYgKHVuZGlyZWN0ZWQgJiYgZ3JhcGgudHlwZSA9PT0gJ2RpcmVjdGVkJylcbiAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgYEdyYXBoLiR7bmFtZX06IHlvdSBjYW5ub3QgbWVyZ2UvdXBkYXRlIGFuIHVuZGlyZWN0ZWQgZWRnZSB0byBhIGRpcmVjdGVkIGdyYXBoLiBVc2UgdGhlICMubWVyZ2VFZGdlLyMudXBkYXRlRWRnZSBvciAjLmFkZERpcmVjdGVkRWRnZSBpbnN0ZWFkLmBcbiAgICApO1xuXG4gIGlmIChhdHRyaWJ1dGVzKSB7XG4gICAgaWYgKGFzVXBkYXRlcikge1xuICAgICAgaWYgKHR5cGVvZiBhdHRyaWJ1dGVzICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bmFtZX06IGludmFsaWQgdXBkYXRlciBmdW5jdGlvbi4gRXhwZWN0aW5nIGEgZnVuY3Rpb24gYnV0IGdvdCBcIiR7YXR0cmlidXRlc31cImBcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFpc1BsYWluT2JqZWN0KGF0dHJpYnV0ZXMpKVxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLiR7bmFtZX06IGludmFsaWQgYXR0cmlidXRlcy4gRXhwZWN0aW5nIGFuIG9iamVjdCBidXQgZ290IFwiJHthdHRyaWJ1dGVzfVwiYFxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvZXJjaW9uIG9mIHNvdXJjZSAmIHRhcmdldDpcbiAgc291cmNlID0gJycgKyBzb3VyY2U7XG4gIHRhcmdldCA9ICcnICsgdGFyZ2V0O1xuXG4gIGxldCB1cGRhdGVyO1xuXG4gIGlmIChhc1VwZGF0ZXIpIHtcbiAgICB1cGRhdGVyID0gYXR0cmlidXRlcztcbiAgICBhdHRyaWJ1dGVzID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKCFncmFwaC5hbGxvd1NlbGZMb29wcyAmJiBzb3VyY2UgPT09IHRhcmdldClcbiAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgYEdyYXBoLiR7bmFtZX06IHNvdXJjZSAmIHRhcmdldCBhcmUgdGhlIHNhbWUgKFwiJHtzb3VyY2V9XCIpLCB0aHVzIGNyZWF0aW5nIGEgbG9vcCBleHBsaWNpdGx5IGZvcmJpZGRlbiBieSB0aGlzIGdyYXBoICdhbGxvd1NlbGZMb29wcycgb3B0aW9uIHNldCB0byBmYWxzZS5gXG4gICAgKTtcblxuICBsZXQgc291cmNlRGF0YSA9IGdyYXBoLl9ub2Rlcy5nZXQoc291cmNlKTtcbiAgbGV0IHRhcmdldERhdGEgPSBncmFwaC5fbm9kZXMuZ2V0KHRhcmdldCk7XG4gIGxldCBlZGdlRGF0YTtcblxuICAvLyBEbyB3ZSBuZWVkIHRvIGhhbmRsZSBkdXBsaWNhdGU/XG4gIGxldCBhbHJlYWR5RXhpc3RpbmdFZGdlRGF0YTtcblxuICBpZiAoIW11c3RHZW5lcmF0ZUtleSkge1xuICAgIGVkZ2VEYXRhID0gZ3JhcGguX2VkZ2VzLmdldChlZGdlKTtcblxuICAgIGlmIChlZGdlRGF0YSkge1xuICAgICAgLy8gSGVyZSwgd2UgbmVlZCB0byBlbnN1cmUsIGlmIHRoZSB1c2VyIGdhdmUgYSBrZXksIHRoYXQgc291cmNlICYgdGFyZ2V0XG4gICAgICAvLyBhcmUgY29oZXJlbnRcbiAgICAgIGlmIChcbiAgICAgICAgZWRnZURhdGEuc291cmNlLmtleSAhPT0gc291cmNlIHx8XG4gICAgICAgIGVkZ2VEYXRhLnRhcmdldC5rZXkgIT09IHRhcmdldCB8fFxuICAgICAgICAodW5kaXJlY3RlZCAmJlxuICAgICAgICAgIChlZGdlRGF0YS5zb3VyY2Uua2V5ICE9PSB0YXJnZXQgfHwgZWRnZURhdGEudGFyZ2V0LmtleSAhPT0gc291cmNlKSlcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgICAgIGBHcmFwaC4ke25hbWV9OiBpbmNvbnNpc3RlbmN5IGRldGVjdGVkIHdoZW4gYXR0ZW1wdGluZyB0byBtZXJnZSB0aGUgXCIke2VkZ2V9XCIgZWRnZSB3aXRoIFwiJHtzb3VyY2V9XCIgc291cmNlICYgXCIke3RhcmdldH1cIiB0YXJnZXQgdnMuIChcIiR7ZWRnZURhdGEuc291cmNlLmtleX1cIiwgXCIke2VkZ2VEYXRhLnRhcmdldC5rZXl9XCIpLmBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgYWxyZWFkeUV4aXN0aW5nRWRnZURhdGEgPSBlZGdlRGF0YTtcbiAgICB9XG4gIH1cblxuICAvLyBIZXJlLCB3ZSBtaWdodCBoYXZlIGEgc291cmNlIC8gdGFyZ2V0IGNvbGxpc2lvblxuICBpZiAoIWFscmVhZHlFeGlzdGluZ0VkZ2VEYXRhICYmICFncmFwaC5tdWx0aSAmJiBzb3VyY2VEYXRhKSB7XG4gICAgYWxyZWFkeUV4aXN0aW5nRWRnZURhdGEgPSB1bmRpcmVjdGVkXG4gICAgICA/IHNvdXJjZURhdGEudW5kaXJlY3RlZFt0YXJnZXRdXG4gICAgICA6IHNvdXJjZURhdGEub3V0W3RhcmdldF07XG4gIH1cblxuICAvLyBIYW5kbGluZyBkdXBsaWNhdGVzXG4gIGlmIChhbHJlYWR5RXhpc3RpbmdFZGdlRGF0YSkge1xuICAgIGNvbnN0IGluZm8gPSBbYWxyZWFkeUV4aXN0aW5nRWRnZURhdGEua2V5LCBmYWxzZSwgZmFsc2UsIGZhbHNlXTtcblxuICAgIC8vIFdlIGNhbiBza2lwIHRoZSBhdHRyaWJ1dGUgbWVyZ2luZyBwYXJ0IGlmIHRoZSB1c2VyIGRpZCBub3QgcHJvdmlkZSB0aGVtXG4gICAgaWYgKGFzVXBkYXRlciA/ICF1cGRhdGVyIDogIWF0dHJpYnV0ZXMpIHJldHVybiBpbmZvO1xuXG4gICAgLy8gVXBkYXRpbmcgdGhlIGF0dHJpYnV0ZXNcbiAgICBpZiAoYXNVcGRhdGVyKSB7XG4gICAgICBjb25zdCBvbGRBdHRyaWJ1dGVzID0gYWxyZWFkeUV4aXN0aW5nRWRnZURhdGEuYXR0cmlidXRlcztcbiAgICAgIGFscmVhZHlFeGlzdGluZ0VkZ2VEYXRhLmF0dHJpYnV0ZXMgPSB1cGRhdGVyKG9sZEF0dHJpYnV0ZXMpO1xuXG4gICAgICBncmFwaC5lbWl0KCdlZGdlQXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICAgIHR5cGU6ICdyZXBsYWNlJyxcbiAgICAgICAga2V5OiBhbHJlYWR5RXhpc3RpbmdFZGdlRGF0YS5rZXksXG4gICAgICAgIGF0dHJpYnV0ZXM6IGFscmVhZHlFeGlzdGluZ0VkZ2VEYXRhLmF0dHJpYnV0ZXNcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIE1lcmdpbmcgdGhlIGF0dHJpYnV0ZXNcbiAgICBlbHNlIHtcbiAgICAgIGFzc2lnbihhbHJlYWR5RXhpc3RpbmdFZGdlRGF0YS5hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzKTtcblxuICAgICAgZ3JhcGguZW1pdCgnZWRnZUF0dHJpYnV0ZXNVcGRhdGVkJywge1xuICAgICAgICB0eXBlOiAnbWVyZ2UnLFxuICAgICAgICBrZXk6IGFscmVhZHlFeGlzdGluZ0VkZ2VEYXRhLmtleSxcbiAgICAgICAgYXR0cmlidXRlczogYWxyZWFkeUV4aXN0aW5nRWRnZURhdGEuYXR0cmlidXRlcyxcbiAgICAgICAgZGF0YTogYXR0cmlidXRlc1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZm87XG4gIH1cblxuICBhdHRyaWJ1dGVzID0gYXR0cmlidXRlcyB8fCB7fTtcblxuICBpZiAoYXNVcGRhdGVyICYmIHVwZGF0ZXIpIGF0dHJpYnV0ZXMgPSB1cGRhdGVyKGF0dHJpYnV0ZXMpO1xuXG4gIC8vIE11c3QgdGhlIGdyYXBoIGdlbmVyYXRlIGFuIGlkIGZvciB0aGlzIGVkZ2U/XG4gIGNvbnN0IGV2ZW50RGF0YSA9IHtcbiAgICBrZXk6IG51bGwsXG4gICAgdW5kaXJlY3RlZCxcbiAgICBzb3VyY2UsXG4gICAgdGFyZ2V0LFxuICAgIGF0dHJpYnV0ZXNcbiAgfTtcblxuICBpZiAobXVzdEdlbmVyYXRlS2V5KSB7XG4gICAgLy8gTk9URTogaW4gdGhpcyBjYXNlIHdlIGNhbiBndWFyYW50ZWUgdGhhdCB0aGUga2V5IGRvZXMgbm90IGFscmVhZHlcbiAgICAvLyBleGlzdCBhbmQgaXMgYWxyZWFkeSBjb3JyZWN0bHkgY2FzdGVkIGFzIGEgc3RyaW5nXG4gICAgZWRnZSA9IGdyYXBoLl9lZGdlS2V5R2VuZXJhdG9yKCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gQ29lcmNpb24gb2YgZWRnZSBrZXlcbiAgICBlZGdlID0gJycgKyBlZGdlO1xuXG4gICAgLy8gSGVyZSwgd2UgaGF2ZSBhIGtleSBjb2xsaXNpb25cbiAgICBpZiAoZ3JhcGguX2VkZ2VzLmhhcyhlZGdlKSlcbiAgICAgIHRocm93IG5ldyBVc2FnZUdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC4ke25hbWV9OiB0aGUgXCIke2VkZ2V9XCIgZWRnZSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcbiAgfVxuXG4gIGxldCBzb3VyY2VXYXNBZGRlZCA9IGZhbHNlO1xuICBsZXQgdGFyZ2V0V2FzQWRkZWQgPSBmYWxzZTtcblxuICBpZiAoIXNvdXJjZURhdGEpIHtcbiAgICBzb3VyY2VEYXRhID0gdW5zYWZlQWRkTm9kZShncmFwaCwgc291cmNlLCB7fSk7XG4gICAgc291cmNlV2FzQWRkZWQgPSB0cnVlO1xuXG4gICAgaWYgKHNvdXJjZSA9PT0gdGFyZ2V0KSB7XG4gICAgICB0YXJnZXREYXRhID0gc291cmNlRGF0YTtcbiAgICAgIHRhcmdldFdhc0FkZGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgaWYgKCF0YXJnZXREYXRhKSB7XG4gICAgdGFyZ2V0RGF0YSA9IHVuc2FmZUFkZE5vZGUoZ3JhcGgsIHRhcmdldCwge30pO1xuICAgIHRhcmdldFdhc0FkZGVkID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIFN0b3Jpbmcgc29tZSBkYXRhXG4gIGVkZ2VEYXRhID0gbmV3IEVkZ2VEYXRhKHVuZGlyZWN0ZWQsIGVkZ2UsIHNvdXJjZURhdGEsIHRhcmdldERhdGEsIGF0dHJpYnV0ZXMpO1xuXG4gIC8vIEFkZGluZyB0aGUgZWRnZSB0byB0aGUgaW50ZXJuYWwgcmVnaXN0ZXJcbiAgZ3JhcGguX2VkZ2VzLnNldChlZGdlLCBlZGdlRGF0YSk7XG5cbiAgLy8gSW5jcmVtZW50aW5nIG5vZGUgZGVncmVlIGNvdW50ZXJzXG4gIGlmIChzb3VyY2UgPT09IHRhcmdldCkge1xuICAgIGlmICh1bmRpcmVjdGVkKSB7XG4gICAgICBzb3VyY2VEYXRhLnVuZGlyZWN0ZWRTZWxmTG9vcHMrKztcbiAgICAgIGdyYXBoLl91bmRpcmVjdGVkU2VsZkxvb3BDb3VudCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzb3VyY2VEYXRhLmRpcmVjdGVkU2VsZkxvb3BzKys7XG4gICAgICBncmFwaC5fZGlyZWN0ZWRTZWxmTG9vcENvdW50Kys7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh1bmRpcmVjdGVkKSB7XG4gICAgICBzb3VyY2VEYXRhLnVuZGlyZWN0ZWREZWdyZWUrKztcbiAgICAgIHRhcmdldERhdGEudW5kaXJlY3RlZERlZ3JlZSsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzb3VyY2VEYXRhLm91dERlZ3JlZSsrO1xuICAgICAgdGFyZ2V0RGF0YS5pbkRlZ3JlZSsrO1xuICAgIH1cbiAgfVxuXG4gIC8vIFVwZGF0aW5nIHJlbGV2YW50IGluZGV4XG4gIHVwZGF0ZVN0cnVjdHVyZUluZGV4KFxuICAgIGdyYXBoLFxuICAgIHVuZGlyZWN0ZWQsXG4gICAgZWRnZURhdGEsXG4gICAgc291cmNlLFxuICAgIHRhcmdldCxcbiAgICBzb3VyY2VEYXRhLFxuICAgIHRhcmdldERhdGFcbiAgKTtcblxuICBpZiAodW5kaXJlY3RlZCkgZ3JhcGguX3VuZGlyZWN0ZWRTaXplKys7XG4gIGVsc2UgZ3JhcGguX2RpcmVjdGVkU2l6ZSsrO1xuXG4gIC8vIEVtaXR0aW5nXG4gIGV2ZW50RGF0YS5rZXkgPSBlZGdlO1xuXG4gIGdyYXBoLmVtaXQoJ2VkZ2VBZGRlZCcsIGV2ZW50RGF0YSk7XG5cbiAgcmV0dXJuIFtlZGdlLCB0cnVlLCBzb3VyY2VXYXNBZGRlZCwgdGFyZ2V0V2FzQWRkZWRdO1xufVxuXG4vKipcbiAqIEdyYXBoIGNsYXNzXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0gIHtvYmplY3R9ICBbb3B0aW9uc10gLSBPcHRpb25zOlxuICogQHBhcmFtICB7Ym9vbGVhbn0gICBbYWxsb3dTZWxmTG9vcHNdIC0gQWxsb3cgc2VsZiBsb29wcz9cbiAqIEBwYXJhbSAge3N0cmluZ30gICAgW3R5cGVdICAgICAgICAgICAtIFR5cGUgb2YgdGhlIGdyYXBoLlxuICogQHBhcmFtICB7Ym9vbGVhbn0gICBbbWFwXSAgICAgICAgICAgIC0gQWxsb3cgcmVmZXJlbmNlcyBhcyBrZXlzP1xuICogQHBhcmFtICB7Ym9vbGVhbn0gICBbbXVsdGldICAgICAgICAgIC0gQWxsb3cgcGFyYWxsZWwgZWRnZXM/XG4gKlxuICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgYXJndW1lbnRzIGFyZSBub3QgdmFsaWQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdyYXBoIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLy0tIFNvbHZpbmcgb3B0aW9uc1xuICAgIG9wdGlvbnMgPSBhc3NpZ24oe30sIERFRkFVTFRTLCBvcHRpb25zKTtcblxuICAgIC8vIEVuZm9yY2luZyBvcHRpb25zIHZhbGlkaXR5XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLm11bHRpICE9PSAnYm9vbGVhbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5jb25zdHJ1Y3RvcjogaW52YWxpZCAnbXVsdGknIG9wdGlvbi4gRXhwZWN0aW5nIGEgYm9vbGVhbiBidXQgZ290IFwiJHtvcHRpb25zLm11bHRpfVwiLmBcbiAgICAgICk7XG5cbiAgICBpZiAoIVRZUEVTLmhhcyhvcHRpb25zLnR5cGUpKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguY29uc3RydWN0b3I6IGludmFsaWQgJ3R5cGUnIG9wdGlvbi4gU2hvdWxkIGJlIG9uZSBvZiBcIm1peGVkXCIsIFwiZGlyZWN0ZWRcIiBvciBcInVuZGlyZWN0ZWRcIiBidXQgZ290IFwiJHtvcHRpb25zLnR5cGV9XCIuYFxuICAgICAgKTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hbGxvd1NlbGZMb29wcyAhPT0gJ2Jvb2xlYW4nKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguY29uc3RydWN0b3I6IGludmFsaWQgJ2FsbG93U2VsZkxvb3BzJyBvcHRpb24uIEV4cGVjdGluZyBhIGJvb2xlYW4gYnV0IGdvdCBcIiR7b3B0aW9ucy5hbGxvd1NlbGZMb29wc31cIi5gXG4gICAgICApO1xuXG4gICAgLy8tLSBQcml2YXRlIHByb3BlcnRpZXNcblxuICAgIC8vIFV0aWxpdGllc1xuICAgIGNvbnN0IE5vZGVEYXRhQ2xhc3MgPVxuICAgICAgb3B0aW9ucy50eXBlID09PSAnbWl4ZWQnXG4gICAgICAgID8gTWl4ZWROb2RlRGF0YVxuICAgICAgICA6IG9wdGlvbnMudHlwZSA9PT0gJ2RpcmVjdGVkJ1xuICAgICAgICA/IERpcmVjdGVkTm9kZURhdGFcbiAgICAgICAgOiBVbmRpcmVjdGVkTm9kZURhdGE7XG5cbiAgICBwcml2YXRlUHJvcGVydHkodGhpcywgJ05vZGVEYXRhQ2xhc3MnLCBOb2RlRGF0YUNsYXNzKTtcblxuICAgIC8vIEludGVybmFsIGVkZ2Uga2V5IGdlbmVyYXRvclxuXG4gICAgLy8gTk9URTogdGhpcyBpbnRlcm5hbCBnZW5lcmF0b3IgcHJvZHVjZSBrZXlzIHRoYXQgYXJlIHN0cmluZ3NcbiAgICAvLyBjb21wb3NlZCBvZiBhIHdlaXJkIHByZWZpeCwgYW4gaW5jcmVtZW50YWwgaW5zdGFuY2UgaWQgc3RhcnRpbmcgZnJvbVxuICAgIC8vIGEgcmFuZG9tIGJ5dGUgYW5kIGZpbmFsbHkgYW4gaW50ZXJuYWwgaW5zdGFuY2UgaW5jcmVtZW50YWwgaWQuXG4gICAgLy8gQWxsIHRoaXMgdG8gYXZvaWQgaW50cmEtZnJhbWUgYW5kIGNyb3NzLWZyYW1lIGFkdmVyc2FyaWFsIGlucHV0c1xuICAgIC8vIHRoYXQgY2FuIGZvcmNlIGEgc2luZ2xlICMuYWRkRWRnZSBjYWxsIHRvIGRlZ2VuZXJhdGUgaW50byBhIE8obilcbiAgICAvLyBhdmFpbGFibGUga2V5IHNlYXJjaCBsb29wLlxuXG4gICAgLy8gSXQgYWxzbyBlbnN1cmVzIHRoYXQgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZWRnZSBrZXlzIGFyZSB1bmxpa2VseVxuICAgIC8vIHRvIHByb2R1Y2UgY29sbGlzaW9ucyB3aXRoIGFyYml0cmFyeSBrZXlzIGdpdmVuIGJ5IHVzZXJzLlxuICAgIGNvbnN0IGluc3RhbmNlSWQgPSBJTlNUQU5DRV9JRCgpO1xuICAgIGxldCBlZGdlSWQgPSAwO1xuXG4gICAgY29uc3QgZWRnZUtleUdlbmVyYXRvciA9ICgpID0+IHtcbiAgICAgIGxldCBhdmFpbGFibGVFZGdlS2V5O1xuXG4gICAgICBkbyB7XG4gICAgICAgIGF2YWlsYWJsZUVkZ2VLZXkgPSAnZ2VpZF8nICsgaW5zdGFuY2VJZCArICdfJyArIGVkZ2VJZCsrO1xuICAgICAgfSB3aGlsZSAodGhpcy5fZWRnZXMuaGFzKGF2YWlsYWJsZUVkZ2VLZXkpKTtcblxuICAgICAgcmV0dXJuIGF2YWlsYWJsZUVkZ2VLZXk7XG4gICAgfTtcblxuICAgIC8vIEluZGV4ZXNcbiAgICBwcml2YXRlUHJvcGVydHkodGhpcywgJ19hdHRyaWJ1dGVzJywge30pO1xuICAgIHByaXZhdGVQcm9wZXJ0eSh0aGlzLCAnX25vZGVzJywgbmV3IE1hcCgpKTtcbiAgICBwcml2YXRlUHJvcGVydHkodGhpcywgJ19lZGdlcycsIG5ldyBNYXAoKSk7XG4gICAgcHJpdmF0ZVByb3BlcnR5KHRoaXMsICdfZGlyZWN0ZWRTaXplJywgMCk7XG4gICAgcHJpdmF0ZVByb3BlcnR5KHRoaXMsICdfdW5kaXJlY3RlZFNpemUnLCAwKTtcbiAgICBwcml2YXRlUHJvcGVydHkodGhpcywgJ19kaXJlY3RlZFNlbGZMb29wQ291bnQnLCAwKTtcbiAgICBwcml2YXRlUHJvcGVydHkodGhpcywgJ191bmRpcmVjdGVkU2VsZkxvb3BDb3VudCcsIDApO1xuICAgIHByaXZhdGVQcm9wZXJ0eSh0aGlzLCAnX2VkZ2VLZXlHZW5lcmF0b3InLCBlZGdlS2V5R2VuZXJhdG9yKTtcblxuICAgIC8vIE9wdGlvbnNcbiAgICBwcml2YXRlUHJvcGVydHkodGhpcywgJ19vcHRpb25zJywgb3B0aW9ucyk7XG5cbiAgICAvLyBFbWl0dGVyIHByb3BlcnRpZXNcbiAgICBFTUlUVEVSX1BST1BTLmZvckVhY2gocHJvcCA9PiBwcml2YXRlUHJvcGVydHkodGhpcywgcHJvcCwgdGhpc1twcm9wXSkpO1xuXG4gICAgLy8tLSBQcm9wZXJ0aWVzIHJlYWRlcnNcbiAgICByZWFkT25seVByb3BlcnR5KHRoaXMsICdvcmRlcicsICgpID0+IHRoaXMuX25vZGVzLnNpemUpO1xuICAgIHJlYWRPbmx5UHJvcGVydHkodGhpcywgJ3NpemUnLCAoKSA9PiB0aGlzLl9lZGdlcy5zaXplKTtcbiAgICByZWFkT25seVByb3BlcnR5KHRoaXMsICdkaXJlY3RlZFNpemUnLCAoKSA9PiB0aGlzLl9kaXJlY3RlZFNpemUpO1xuICAgIHJlYWRPbmx5UHJvcGVydHkodGhpcywgJ3VuZGlyZWN0ZWRTaXplJywgKCkgPT4gdGhpcy5fdW5kaXJlY3RlZFNpemUpO1xuICAgIHJlYWRPbmx5UHJvcGVydHkoXG4gICAgICB0aGlzLFxuICAgICAgJ3NlbGZMb29wQ291bnQnLFxuICAgICAgKCkgPT4gdGhpcy5fZGlyZWN0ZWRTZWxmTG9vcENvdW50ICsgdGhpcy5fdW5kaXJlY3RlZFNlbGZMb29wQ291bnRcbiAgICApO1xuICAgIHJlYWRPbmx5UHJvcGVydHkoXG4gICAgICB0aGlzLFxuICAgICAgJ2RpcmVjdGVkU2VsZkxvb3BDb3VudCcsXG4gICAgICAoKSA9PiB0aGlzLl9kaXJlY3RlZFNlbGZMb29wQ291bnRcbiAgICApO1xuICAgIHJlYWRPbmx5UHJvcGVydHkoXG4gICAgICB0aGlzLFxuICAgICAgJ3VuZGlyZWN0ZWRTZWxmTG9vcENvdW50JyxcbiAgICAgICgpID0+IHRoaXMuX3VuZGlyZWN0ZWRTZWxmTG9vcENvdW50XG4gICAgKTtcbiAgICByZWFkT25seVByb3BlcnR5KHRoaXMsICdtdWx0aScsIHRoaXMuX29wdGlvbnMubXVsdGkpO1xuICAgIHJlYWRPbmx5UHJvcGVydHkodGhpcywgJ3R5cGUnLCB0aGlzLl9vcHRpb25zLnR5cGUpO1xuICAgIHJlYWRPbmx5UHJvcGVydHkodGhpcywgJ2FsbG93U2VsZkxvb3BzJywgdGhpcy5fb3B0aW9ucy5hbGxvd1NlbGZMb29wcyk7XG4gICAgcmVhZE9ubHlQcm9wZXJ0eSh0aGlzLCAnaW1wbGVtZW50YXRpb24nLCAoKSA9PiAnZ3JhcGhvbG9neScpO1xuICB9XG5cbiAgX3Jlc2V0SW5zdGFuY2VDb3VudGVycygpIHtcbiAgICB0aGlzLl9kaXJlY3RlZFNpemUgPSAwO1xuICAgIHRoaXMuX3VuZGlyZWN0ZWRTaXplID0gMDtcbiAgICB0aGlzLl9kaXJlY3RlZFNlbGZMb29wQ291bnQgPSAwO1xuICAgIHRoaXMuX3VuZGlyZWN0ZWRTZWxmTG9vcENvdW50ID0gMDtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBSZWFkXG4gICAqKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKi9cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB3aGV0aGVyIHRoZSBnaXZlbiBub2RlIGlzIGZvdW5kIGluIHRoZSBncmFwaC5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgbm9kZSAtIFRoZSBub2RlLlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaGFzTm9kZShub2RlKSB7XG4gICAgcmV0dXJuIHRoaXMuX25vZGVzLmhhcygnJyArIG5vZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgd2hldGhlciB0aGUgZ2l2ZW4gZGlyZWN0ZWQgZWRnZSBpcyBmb3VuZCBpbiB0aGUgZ3JhcGguXG4gICAqXG4gICAqIEFyaXR5IDE6XG4gICAqIEBwYXJhbSAge2FueX0gICAgIGVkZ2UgLSBUaGUgZWRnZSdzIGtleS5cbiAgICpcbiAgICogQXJpdHkgMjpcbiAgICogQHBhcmFtICB7YW55fSAgICAgc291cmNlIC0gVGhlIGVkZ2UncyBzb3VyY2UuXG4gICAqIEBwYXJhbSAge2FueX0gICAgIHRhcmdldCAtIFRoZSBlZGdlJ3MgdGFyZ2V0LlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBhcmd1bWVudHMgYXJlIGludmFsaWQuXG4gICAqL1xuICBoYXNEaXJlY3RlZEVkZ2Uoc291cmNlLCB0YXJnZXQpIHtcbiAgICAvLyBFYXJseSB0ZXJtaW5hdGlvblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICd1bmRpcmVjdGVkJykgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IGVkZ2UgPSAnJyArIHNvdXJjZTtcblxuICAgICAgY29uc3QgZWRnZURhdGEgPSB0aGlzLl9lZGdlcy5nZXQoZWRnZSk7XG5cbiAgICAgIHJldHVybiAhIWVkZ2VEYXRhICYmICFlZGdlRGF0YS51bmRpcmVjdGVkO1xuICAgIH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgc291cmNlID0gJycgKyBzb3VyY2U7XG4gICAgICB0YXJnZXQgPSAnJyArIHRhcmdldDtcblxuICAgICAgLy8gSWYgdGhlIG5vZGUgc291cmNlIG9yIHRoZSB0YXJnZXQgaXMgbm90IGluIHRoZSBncmFwaCB3ZSBicmVha1xuICAgICAgY29uc3Qgbm9kZURhdGEgPSB0aGlzLl9ub2Rlcy5nZXQoc291cmNlKTtcblxuICAgICAgaWYgKCFub2RlRGF0YSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAvLyBJcyB0aGVyZSBhIGRpcmVjdGVkIGVkZ2UgcG9pbnRpbmcgdG93YXJkIHRhcmdldD9cbiAgICAgIGNvbnN0IGVkZ2VzID0gbm9kZURhdGEub3V0W3RhcmdldF07XG5cbiAgICAgIGlmICghZWRnZXMpIHJldHVybiBmYWxzZTtcblxuICAgICAgcmV0dXJuIHRoaXMubXVsdGkgPyAhIWVkZ2VzLnNpemUgOiB0cnVlO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgIGBHcmFwaC5oYXNEaXJlY3RlZEVkZ2U6IGludmFsaWQgYXJpdHkgKCR7YXJndW1lbnRzLmxlbmd0aH0sIGluc3RlYWQgb2YgMSBvciAyKS4gWW91IGNhbiBlaXRoZXIgYXNrIGZvciBhbiBlZGdlIGlkIG9yIGZvciB0aGUgZXhpc3RlbmNlIG9mIGFuIGVkZ2UgYmV0d2VlbiBhIHNvdXJjZSAmIGEgdGFyZ2V0LmBcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgd2hldGhlciB0aGUgZ2l2ZW4gdW5kaXJlY3RlZCBlZGdlIGlzIGZvdW5kIGluIHRoZSBncmFwaC5cbiAgICpcbiAgICogQXJpdHkgMTpcbiAgICogQHBhcmFtICB7YW55fSAgICAgZWRnZSAtIFRoZSBlZGdlJ3Mga2V5LlxuICAgKlxuICAgKiBBcml0eSAyOlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICBzb3VyY2UgLSBUaGUgZWRnZSdzIHNvdXJjZS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgdGFyZ2V0IC0gVGhlIGVkZ2UncyB0YXJnZXQuXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIGFyZ3VtZW50cyBhcmUgaW52YWxpZC5cbiAgICovXG4gIGhhc1VuZGlyZWN0ZWRFZGdlKHNvdXJjZSwgdGFyZ2V0KSB7XG4gICAgLy8gRWFybHkgdGVybWluYXRpb25cbiAgICBpZiAodGhpcy50eXBlID09PSAnZGlyZWN0ZWQnKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgZWRnZSA9ICcnICsgc291cmNlO1xuXG4gICAgICBjb25zdCBlZGdlRGF0YSA9IHRoaXMuX2VkZ2VzLmdldChlZGdlKTtcblxuICAgICAgcmV0dXJuICEhZWRnZURhdGEgJiYgZWRnZURhdGEudW5kaXJlY3RlZDtcbiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHNvdXJjZSA9ICcnICsgc291cmNlO1xuICAgICAgdGFyZ2V0ID0gJycgKyB0YXJnZXQ7XG5cbiAgICAgIC8vIElmIHRoZSBub2RlIHNvdXJjZSBvciB0aGUgdGFyZ2V0IGlzIG5vdCBpbiB0aGUgZ3JhcGggd2UgYnJlYWtcbiAgICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KHNvdXJjZSk7XG5cbiAgICAgIGlmICghbm9kZURhdGEpIHJldHVybiBmYWxzZTtcblxuICAgICAgLy8gSXMgdGhlcmUgYSBkaXJlY3RlZCBlZGdlIHBvaW50aW5nIHRvd2FyZCB0YXJnZXQ/XG4gICAgICBjb25zdCBlZGdlcyA9IG5vZGVEYXRhLnVuZGlyZWN0ZWRbdGFyZ2V0XTtcblxuICAgICAgaWYgKCFlZGdlcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgICByZXR1cm4gdGhpcy5tdWx0aSA/ICEhZWRnZXMuc2l6ZSA6IHRydWU7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgYEdyYXBoLmhhc0RpcmVjdGVkRWRnZTogaW52YWxpZCBhcml0eSAoJHthcmd1bWVudHMubGVuZ3RofSwgaW5zdGVhZCBvZiAxIG9yIDIpLiBZb3UgY2FuIGVpdGhlciBhc2sgZm9yIGFuIGVkZ2UgaWQgb3IgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYW4gZWRnZSBiZXR3ZWVuIGEgc291cmNlICYgYSB0YXJnZXQuYFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB3aGV0aGVyIHRoZSBnaXZlbiBlZGdlIGlzIGZvdW5kIGluIHRoZSBncmFwaC5cbiAgICpcbiAgICogQXJpdHkgMTpcbiAgICogQHBhcmFtICB7YW55fSAgICAgZWRnZSAtIFRoZSBlZGdlJ3Mga2V5LlxuICAgKlxuICAgKiBBcml0eSAyOlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICBzb3VyY2UgLSBUaGUgZWRnZSdzIHNvdXJjZS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgdGFyZ2V0IC0gVGhlIGVkZ2UncyB0YXJnZXQuXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIGFyZ3VtZW50cyBhcmUgaW52YWxpZC5cbiAgICovXG4gIGhhc0VkZ2Uoc291cmNlLCB0YXJnZXQpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgZWRnZSA9ICcnICsgc291cmNlO1xuXG4gICAgICByZXR1cm4gdGhpcy5fZWRnZXMuaGFzKGVkZ2UpO1xuICAgIH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgc291cmNlID0gJycgKyBzb3VyY2U7XG4gICAgICB0YXJnZXQgPSAnJyArIHRhcmdldDtcblxuICAgICAgLy8gSWYgdGhlIG5vZGUgc291cmNlIG9yIHRoZSB0YXJnZXQgaXMgbm90IGluIHRoZSBncmFwaCB3ZSBicmVha1xuICAgICAgY29uc3Qgbm9kZURhdGEgPSB0aGlzLl9ub2Rlcy5nZXQoc291cmNlKTtcblxuICAgICAgaWYgKCFub2RlRGF0YSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAvLyBJcyB0aGVyZSBhIGRpcmVjdGVkIGVkZ2UgcG9pbnRpbmcgdG93YXJkIHRhcmdldD9cbiAgICAgIGxldCBlZGdlcyA9IHR5cGVvZiBub2RlRGF0YS5vdXQgIT09ICd1bmRlZmluZWQnICYmIG5vZGVEYXRhLm91dFt0YXJnZXRdO1xuXG4gICAgICBpZiAoIWVkZ2VzKVxuICAgICAgICBlZGdlcyA9XG4gICAgICAgICAgdHlwZW9mIG5vZGVEYXRhLnVuZGlyZWN0ZWQgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgbm9kZURhdGEudW5kaXJlY3RlZFt0YXJnZXRdO1xuXG4gICAgICBpZiAoIWVkZ2VzKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIHJldHVybiB0aGlzLm11bHRpID8gISFlZGdlcy5zaXplIDogdHJ1ZTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICBgR3JhcGguaGFzRWRnZTogaW52YWxpZCBhcml0eSAoJHthcmd1bWVudHMubGVuZ3RofSwgaW5zdGVhZCBvZiAxIG9yIDIpLiBZb3UgY2FuIGVpdGhlciBhc2sgZm9yIGFuIGVkZ2UgaWQgb3IgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYW4gZWRnZSBiZXR3ZWVuIGEgc291cmNlICYgYSB0YXJnZXQuYFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgZWRnZSBtYXRjaGluZyBzb3VyY2UgJiB0YXJnZXQgaW4gYSBkaXJlY3RlZCBmYXNoaW9uLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9IHNvdXJjZSAtIFRoZSBlZGdlJ3Mgc291cmNlLlxuICAgKiBAcGFyYW0gIHthbnl9IHRhcmdldCAtIFRoZSBlZGdlJ3MgdGFyZ2V0LlxuICAgKlxuICAgKiBAcmV0dXJuIHthbnl8dW5kZWZpbmVkfVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBncmFwaCBpcyBtdWx0aS5cbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiBzb3VyY2Ugb3IgdGFyZ2V0IGRvZXNuJ3QgZXhpc3QuXG4gICAqL1xuICBkaXJlY3RlZEVkZ2Uoc291cmNlLCB0YXJnZXQpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSAndW5kaXJlY3RlZCcpIHJldHVybjtcblxuICAgIHNvdXJjZSA9ICcnICsgc291cmNlO1xuICAgIHRhcmdldCA9ICcnICsgdGFyZ2V0O1xuXG4gICAgaWYgKHRoaXMubXVsdGkpXG4gICAgICB0aHJvdyBuZXcgVXNhZ2VHcmFwaEVycm9yKFxuICAgICAgICAnR3JhcGguZGlyZWN0ZWRFZGdlOiB0aGlzIG1ldGhvZCBpcyBpcnJlbGV2YW50IHdpdGggbXVsdGlncmFwaHMgc2luY2UgdGhlcmUgbWlnaHQgYmUgbXVsdGlwbGUgZWRnZXMgYmV0d2VlbiBzb3VyY2UgJiB0YXJnZXQuIFNlZSAjLmRpcmVjdGVkRWRnZXMgaW5zdGVhZC4nXG4gICAgICApO1xuXG4gICAgY29uc3Qgc291cmNlRGF0YSA9IHRoaXMuX25vZGVzLmdldChzb3VyY2UpO1xuXG4gICAgaWYgKCFzb3VyY2VEYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLmRpcmVjdGVkRWRnZTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtzb3VyY2V9XCIgc291cmNlIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAoIXRoaXMuX25vZGVzLmhhcyh0YXJnZXQpKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLmRpcmVjdGVkRWRnZTogY291bGQgbm90IGZpbmQgdGhlIFwiJHt0YXJnZXR9XCIgdGFyZ2V0IG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBjb25zdCBlZGdlRGF0YSA9IChzb3VyY2VEYXRhLm91dCAmJiBzb3VyY2VEYXRhLm91dFt0YXJnZXRdKSB8fCB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZWRnZURhdGEpIHJldHVybiBlZGdlRGF0YS5rZXk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgZWRnZSBtYXRjaGluZyBzb3VyY2UgJiB0YXJnZXQgaW4gYSB1bmRpcmVjdGVkIGZhc2hpb24uXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gc291cmNlIC0gVGhlIGVkZ2UncyBzb3VyY2UuXG4gICAqIEBwYXJhbSAge2FueX0gdGFyZ2V0IC0gVGhlIGVkZ2UncyB0YXJnZXQuXG4gICAqXG4gICAqIEByZXR1cm4ge2FueXx1bmRlZmluZWR9XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIGdyYXBoIGlzIG11bHRpLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHNvdXJjZSBvciB0YXJnZXQgZG9lc24ndCBleGlzdC5cbiAgICovXG4gIHVuZGlyZWN0ZWRFZGdlKHNvdXJjZSwgdGFyZ2V0KSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2RpcmVjdGVkJykgcmV0dXJuO1xuXG4gICAgc291cmNlID0gJycgKyBzb3VyY2U7XG4gICAgdGFyZ2V0ID0gJycgKyB0YXJnZXQ7XG5cbiAgICBpZiAodGhpcy5tdWx0aSlcbiAgICAgIHRocm93IG5ldyBVc2FnZUdyYXBoRXJyb3IoXG4gICAgICAgICdHcmFwaC51bmRpcmVjdGVkRWRnZTogdGhpcyBtZXRob2QgaXMgaXJyZWxldmFudCB3aXRoIG11bHRpZ3JhcGhzIHNpbmNlIHRoZXJlIG1pZ2h0IGJlIG11bHRpcGxlIGVkZ2VzIGJldHdlZW4gc291cmNlICYgdGFyZ2V0LiBTZWUgIy51bmRpcmVjdGVkRWRnZXMgaW5zdGVhZC4nXG4gICAgICApO1xuXG4gICAgY29uc3Qgc291cmNlRGF0YSA9IHRoaXMuX25vZGVzLmdldChzb3VyY2UpO1xuXG4gICAgaWYgKCFzb3VyY2VEYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLnVuZGlyZWN0ZWRFZGdlOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke3NvdXJjZX1cIiBzb3VyY2Ugbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIGlmICghdGhpcy5fbm9kZXMuaGFzKHRhcmdldCkpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGgudW5kaXJlY3RlZEVkZ2U6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7dGFyZ2V0fVwiIHRhcmdldCBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgY29uc3QgZWRnZURhdGEgPVxuICAgICAgKHNvdXJjZURhdGEudW5kaXJlY3RlZCAmJiBzb3VyY2VEYXRhLnVuZGlyZWN0ZWRbdGFyZ2V0XSkgfHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKGVkZ2VEYXRhKSByZXR1cm4gZWRnZURhdGEua2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgdGhlIGVkZ2UgbWF0Y2hpbmcgc291cmNlICYgdGFyZ2V0IGluIGEgbWl4ZWQgZmFzaGlvbi5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSBzb3VyY2UgLSBUaGUgZWRnZSdzIHNvdXJjZS5cbiAgICogQHBhcmFtICB7YW55fSB0YXJnZXQgLSBUaGUgZWRnZSdzIHRhcmdldC5cbiAgICpcbiAgICogQHJldHVybiB7YW55fHVuZGVmaW5lZH1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgZ3JhcGggaXMgbXVsdGkuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgc291cmNlIG9yIHRhcmdldCBkb2Vzbid0IGV4aXN0LlxuICAgKi9cbiAgZWRnZShzb3VyY2UsIHRhcmdldCkge1xuICAgIGlmICh0aGlzLm11bHRpKVxuICAgICAgdGhyb3cgbmV3IFVzYWdlR3JhcGhFcnJvcihcbiAgICAgICAgJ0dyYXBoLmVkZ2U6IHRoaXMgbWV0aG9kIGlzIGlycmVsZXZhbnQgd2l0aCBtdWx0aWdyYXBocyBzaW5jZSB0aGVyZSBtaWdodCBiZSBtdWx0aXBsZSBlZGdlcyBiZXR3ZWVuIHNvdXJjZSAmIHRhcmdldC4gU2VlICMuZWRnZXMgaW5zdGVhZC4nXG4gICAgICApO1xuXG4gICAgc291cmNlID0gJycgKyBzb3VyY2U7XG4gICAgdGFyZ2V0ID0gJycgKyB0YXJnZXQ7XG5cbiAgICBjb25zdCBzb3VyY2VEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KHNvdXJjZSk7XG5cbiAgICBpZiAoIXNvdXJjZURhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguZWRnZTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtzb3VyY2V9XCIgc291cmNlIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAoIXRoaXMuX25vZGVzLmhhcyh0YXJnZXQpKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLmVkZ2U6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7dGFyZ2V0fVwiIHRhcmdldCBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgY29uc3QgZWRnZURhdGEgPVxuICAgICAgKHNvdXJjZURhdGEub3V0ICYmIHNvdXJjZURhdGEub3V0W3RhcmdldF0pIHx8XG4gICAgICAoc291cmNlRGF0YS51bmRpcmVjdGVkICYmIHNvdXJjZURhdGEudW5kaXJlY3RlZFt0YXJnZXRdKSB8fFxuICAgICAgdW5kZWZpbmVkO1xuXG4gICAgaWYgKGVkZ2VEYXRhKSByZXR1cm4gZWRnZURhdGEua2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgd2hldGhlciB0d28gbm9kZXMgYXJlIGRpcmVjdGVkIG5laWdoYm9ycy5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgbm9kZSAgICAgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgbmVpZ2hib3IgLSBUaGUgbmVpZ2hib3IncyBrZXkuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIG5vZGUgaXNuJ3QgaW4gdGhlIGdyYXBoLlxuICAgKi9cbiAgYXJlRGlyZWN0ZWROZWlnaGJvcnMobm9kZSwgbmVpZ2hib3IpIHtcbiAgICBub2RlID0gJycgKyBub2RlO1xuICAgIG5laWdoYm9yID0gJycgKyBuZWlnaGJvcjtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFub2RlRGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5hcmVEaXJlY3RlZE5laWdoYm9yczogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAndW5kaXJlY3RlZCcpIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiBuZWlnaGJvciBpbiBub2RlRGF0YS5pbiB8fCBuZWlnaGJvciBpbiBub2RlRGF0YS5vdXQ7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB3aGV0aGVyIHR3byBub2RlcyBhcmUgb3V0IG5laWdoYm9ycy5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgbm9kZSAgICAgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgbmVpZ2hib3IgLSBUaGUgbmVpZ2hib3IncyBrZXkuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIG5vZGUgaXNuJ3QgaW4gdGhlIGdyYXBoLlxuICAgKi9cbiAgYXJlT3V0TmVpZ2hib3JzKG5vZGUsIG5laWdoYm9yKSB7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcbiAgICBuZWlnaGJvciA9ICcnICsgbmVpZ2hib3I7XG5cbiAgICBjb25zdCBub2RlRGF0YSA9IHRoaXMuX25vZGVzLmdldChub2RlKTtcblxuICAgIGlmICghbm9kZURhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguYXJlT3V0TmVpZ2hib3JzOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke25vZGV9XCIgbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICd1bmRpcmVjdGVkJykgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmV0dXJuIG5laWdoYm9yIGluIG5vZGVEYXRhLm91dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHdoZXRoZXIgdHdvIG5vZGVzIGFyZSBpbiBuZWlnaGJvcnMuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5vZGUgICAgIC0gVGhlIG5vZGUncyBrZXkuXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5laWdoYm9yIC0gVGhlIG5laWdoYm9yJ3Mga2V5LlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIGFyZUluTmVpZ2hib3JzKG5vZGUsIG5laWdoYm9yKSB7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcbiAgICBuZWlnaGJvciA9ICcnICsgbmVpZ2hib3I7XG5cbiAgICBjb25zdCBub2RlRGF0YSA9IHRoaXMuX25vZGVzLmdldChub2RlKTtcblxuICAgIGlmICghbm9kZURhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguYXJlSW5OZWlnaGJvcnM6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7bm9kZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3VuZGlyZWN0ZWQnKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gbmVpZ2hib3IgaW4gbm9kZURhdGEuaW47XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB3aGV0aGVyIHR3byBub2RlcyBhcmUgdW5kaXJlY3RlZCBuZWlnaGJvcnMuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5vZGUgICAgIC0gVGhlIG5vZGUncyBrZXkuXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5laWdoYm9yIC0gVGhlIG5laWdoYm9yJ3Mga2V5LlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIGFyZVVuZGlyZWN0ZWROZWlnaGJvcnMobm9kZSwgbmVpZ2hib3IpIHtcbiAgICBub2RlID0gJycgKyBub2RlO1xuICAgIG5laWdoYm9yID0gJycgKyBuZWlnaGJvcjtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFub2RlRGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5hcmVVbmRpcmVjdGVkTmVpZ2hib3JzOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke25vZGV9XCIgbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdkaXJlY3RlZCcpIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiBuZWlnaGJvciBpbiBub2RlRGF0YS51bmRpcmVjdGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgd2hldGhlciB0d28gbm9kZXMgYXJlIG5laWdoYm9ycy5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgbm9kZSAgICAgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgbmVpZ2hib3IgLSBUaGUgbmVpZ2hib3IncyBrZXkuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIG5vZGUgaXNuJ3QgaW4gdGhlIGdyYXBoLlxuICAgKi9cbiAgYXJlTmVpZ2hib3JzKG5vZGUsIG5laWdoYm9yKSB7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcbiAgICBuZWlnaGJvciA9ICcnICsgbmVpZ2hib3I7XG5cbiAgICBjb25zdCBub2RlRGF0YSA9IHRoaXMuX25vZGVzLmdldChub2RlKTtcblxuICAgIGlmICghbm9kZURhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguYXJlTmVpZ2hib3JzOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke25vZGV9XCIgbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgICAgaWYgKG5laWdoYm9yIGluIG5vZGVEYXRhLmluIHx8IG5laWdoYm9yIGluIG5vZGVEYXRhLm91dCkgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ2RpcmVjdGVkJykge1xuICAgICAgaWYgKG5laWdoYm9yIGluIG5vZGVEYXRhLnVuZGlyZWN0ZWQpIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHdoZXRoZXIgdHdvIG5vZGVzIGFyZSBpbmJvdW5kIG5laWdoYm9ycy5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgbm9kZSAgICAgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHBhcmFtICB7YW55fSAgICAgbmVpZ2hib3IgLSBUaGUgbmVpZ2hib3IncyBrZXkuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIG5vZGUgaXNuJ3QgaW4gdGhlIGdyYXBoLlxuICAgKi9cbiAgYXJlSW5ib3VuZE5laWdoYm9ycyhub2RlLCBuZWlnaGJvcikge1xuICAgIG5vZGUgPSAnJyArIG5vZGU7XG4gICAgbmVpZ2hib3IgPSAnJyArIG5laWdoYm9yO1xuXG4gICAgY29uc3Qgbm9kZURhdGEgPSB0aGlzLl9ub2Rlcy5nZXQobm9kZSk7XG5cbiAgICBpZiAoIW5vZGVEYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLmFyZUluYm91bmROZWlnaGJvcnM6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7bm9kZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ3VuZGlyZWN0ZWQnKSB7XG4gICAgICBpZiAobmVpZ2hib3IgaW4gbm9kZURhdGEuaW4pIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICdkaXJlY3RlZCcpIHtcbiAgICAgIGlmIChuZWlnaGJvciBpbiBub2RlRGF0YS51bmRpcmVjdGVkKSByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB3aGV0aGVyIHR3byBub2RlcyBhcmUgb3V0Ym91bmQgbmVpZ2hib3JzLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICBub2RlICAgICAtIFRoZSBub2RlJ3Mga2V5LlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICBuZWlnaGJvciAtIFRoZSBuZWlnaGJvcidzIGtleS5cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgbm9kZSBpc24ndCBpbiB0aGUgZ3JhcGguXG4gICAqL1xuICBhcmVPdXRib3VuZE5laWdoYm9ycyhub2RlLCBuZWlnaGJvcikge1xuICAgIG5vZGUgPSAnJyArIG5vZGU7XG4gICAgbmVpZ2hib3IgPSAnJyArIG5laWdoYm9yO1xuXG4gICAgY29uc3Qgbm9kZURhdGEgPSB0aGlzLl9ub2Rlcy5nZXQobm9kZSk7XG5cbiAgICBpZiAoIW5vZGVEYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLmFyZU91dGJvdW5kTmVpZ2hib3JzOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke25vZGV9XCIgbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgICAgaWYgKG5laWdoYm9yIGluIG5vZGVEYXRhLm91dCkgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ2RpcmVjdGVkJykge1xuICAgICAgaWYgKG5laWdoYm9yIGluIG5vZGVEYXRhLnVuZGlyZWN0ZWQpIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHRoZSBnaXZlbiBub2RlJ3MgaW4gZGVncmVlLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICBub2RlIC0gVGhlIG5vZGUncyBrZXkuXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgICAgLSBUaGUgbm9kZSdzIGluIGRlZ3JlZS5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgbm9kZSBpc24ndCBpbiB0aGUgZ3JhcGguXG4gICAqL1xuICBpbkRlZ3JlZShub2RlKSB7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFub2RlRGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5pbkRlZ3JlZTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAndW5kaXJlY3RlZCcpIHJldHVybiAwO1xuXG4gICAgcmV0dXJuIG5vZGVEYXRhLmluRGVncmVlICsgbm9kZURhdGEuZGlyZWN0ZWRTZWxmTG9vcHM7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgZ2l2ZW4gbm9kZSdzIG91dCBkZWdyZWUuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5vZGUgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAtIFRoZSBub2RlJ3MgaW4gZGVncmVlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIG91dERlZ3JlZShub2RlKSB7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFub2RlRGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5vdXREZWdyZWU6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7bm9kZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3VuZGlyZWN0ZWQnKSByZXR1cm4gMDtcblxuICAgIHJldHVybiBub2RlRGF0YS5vdXREZWdyZWUgKyBub2RlRGF0YS5kaXJlY3RlZFNlbGZMb29wcztcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHRoZSBnaXZlbiBub2RlJ3MgZGlyZWN0ZWQgZGVncmVlLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICBub2RlIC0gVGhlIG5vZGUncyBrZXkuXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgICAgLSBUaGUgbm9kZSdzIGluIGRlZ3JlZS5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgbm9kZSBpc24ndCBpbiB0aGUgZ3JhcGguXG4gICAqL1xuICBkaXJlY3RlZERlZ3JlZShub2RlKSB7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFub2RlRGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5kaXJlY3RlZERlZ3JlZTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAndW5kaXJlY3RlZCcpIHJldHVybiAwO1xuXG4gICAgY29uc3QgbG9vcHMgPSBub2RlRGF0YS5kaXJlY3RlZFNlbGZMb29wcztcblxuICAgIGNvbnN0IGluRGVncmVlID0gbm9kZURhdGEuaW5EZWdyZWUgKyBsb29wcztcbiAgICBjb25zdCBvdXREZWdyZWUgPSBub2RlRGF0YS5vdXREZWdyZWUgKyBsb29wcztcblxuICAgIHJldHVybiBpbkRlZ3JlZSArIG91dERlZ3JlZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHRoZSBnaXZlbiBub2RlJ3MgdW5kaXJlY3RlZCBkZWdyZWUuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5vZGUgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAtIFRoZSBub2RlJ3MgaW4gZGVncmVlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIHVuZGlyZWN0ZWREZWdyZWUobm9kZSkge1xuICAgIG5vZGUgPSAnJyArIG5vZGU7XG5cbiAgICBjb25zdCBub2RlRGF0YSA9IHRoaXMuX25vZGVzLmdldChub2RlKTtcblxuICAgIGlmICghbm9kZURhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGgudW5kaXJlY3RlZERlZ3JlZTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnZGlyZWN0ZWQnKSByZXR1cm4gMDtcblxuICAgIGNvbnN0IGxvb3BzID0gbm9kZURhdGEudW5kaXJlY3RlZFNlbGZMb29wcztcblxuICAgIHJldHVybiBub2RlRGF0YS51bmRpcmVjdGVkRGVncmVlICsgbG9vcHMgKiAyO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgdGhlIGdpdmVuIG5vZGUncyBkaXJlY3RlZCBkZWdyZWUuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5vZGUgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAtIFRoZSBub2RlJ3MgaW4gZGVncmVlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIGRlZ3JlZShub2RlKSB7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFub2RlRGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5kZWdyZWU6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7bm9kZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgbGV0IGRlZ3JlZSA9IDA7XG5cbiAgICBpZiAodGhpcy50eXBlICE9PSAnZGlyZWN0ZWQnKSB7XG4gICAgICBkZWdyZWUgKz0gbm9kZURhdGEudW5kaXJlY3RlZERlZ3JlZSArIG5vZGVEYXRhLnVuZGlyZWN0ZWRTZWxmTG9vcHMgKiAyO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgICAgZGVncmVlICs9XG4gICAgICAgIG5vZGVEYXRhLmluRGVncmVlICsgbm9kZURhdGEub3V0RGVncmVlICsgbm9kZURhdGEuZGlyZWN0ZWRTZWxmTG9vcHMgKiAyO1xuICAgIH1cblxuICAgIHJldHVybiBkZWdyZWU7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgZ2l2ZW4gbm9kZSdzIGluIGRlZ3JlZSB3aXRob3V0IGNvbnNpZGVyaW5nIHNlbGYgbG9vcHMuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5vZGUgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAtIFRoZSBub2RlJ3MgaW4gZGVncmVlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIGluRGVncmVlV2l0aG91dFNlbGZMb29wcyhub2RlKSB7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFub2RlRGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5pbkRlZ3JlZVdpdGhvdXRTZWxmTG9vcHM6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7bm9kZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3VuZGlyZWN0ZWQnKSByZXR1cm4gMDtcblxuICAgIHJldHVybiBub2RlRGF0YS5pbkRlZ3JlZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHRoZSBnaXZlbiBub2RlJ3Mgb3V0IGRlZ3JlZSB3aXRob3V0IGNvbnNpZGVyaW5nIHNlbGYgbG9vcHMuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5vZGUgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAtIFRoZSBub2RlJ3MgaW4gZGVncmVlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIG91dERlZ3JlZVdpdGhvdXRTZWxmTG9vcHMobm9kZSkge1xuICAgIG5vZGUgPSAnJyArIG5vZGU7XG5cbiAgICBjb25zdCBub2RlRGF0YSA9IHRoaXMuX25vZGVzLmdldChub2RlKTtcblxuICAgIGlmICghbm9kZURhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGgub3V0RGVncmVlV2l0aG91dFNlbGZMb29wczogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAndW5kaXJlY3RlZCcpIHJldHVybiAwO1xuXG4gICAgcmV0dXJuIG5vZGVEYXRhLm91dERlZ3JlZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHRoZSBnaXZlbiBub2RlJ3MgZGlyZWN0ZWQgZGVncmVlIHdpdGhvdXQgY29uc2lkZXJpbmcgc2VsZiBsb29wcy5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgbm9kZSAtIFRoZSBub2RlJ3Mga2V5LlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgICAgIC0gVGhlIG5vZGUncyBpbiBkZWdyZWUuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIG5vZGUgaXNuJ3QgaW4gdGhlIGdyYXBoLlxuICAgKi9cbiAgZGlyZWN0ZWREZWdyZWVXaXRob3V0U2VsZkxvb3BzKG5vZGUpIHtcbiAgICBub2RlID0gJycgKyBub2RlO1xuXG4gICAgY29uc3Qgbm9kZURhdGEgPSB0aGlzLl9ub2Rlcy5nZXQobm9kZSk7XG5cbiAgICBpZiAoIW5vZGVEYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLmRpcmVjdGVkRGVncmVlV2l0aG91dFNlbGZMb29wczogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAndW5kaXJlY3RlZCcpIHJldHVybiAwO1xuXG4gICAgcmV0dXJuIG5vZGVEYXRhLmluRGVncmVlICsgbm9kZURhdGEub3V0RGVncmVlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgdGhlIGdpdmVuIG5vZGUncyB1bmRpcmVjdGVkIGRlZ3JlZSB3aXRob3V0IGNvbnNpZGVyaW5nIHNlbGYgbG9vcHMuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5vZGUgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAtIFRoZSBub2RlJ3MgaW4gZGVncmVlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIHVuZGlyZWN0ZWREZWdyZWVXaXRob3V0U2VsZkxvb3BzKG5vZGUpIHtcbiAgICBub2RlID0gJycgKyBub2RlO1xuXG4gICAgY29uc3Qgbm9kZURhdGEgPSB0aGlzLl9ub2Rlcy5nZXQobm9kZSk7XG5cbiAgICBpZiAoIW5vZGVEYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLnVuZGlyZWN0ZWREZWdyZWVXaXRob3V0U2VsZkxvb3BzOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke25vZGV9XCIgbm9kZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdkaXJlY3RlZCcpIHJldHVybiAwO1xuXG4gICAgcmV0dXJuIG5vZGVEYXRhLnVuZGlyZWN0ZWREZWdyZWU7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgZ2l2ZW4gbm9kZSdzIGRpcmVjdGVkIGRlZ3JlZSB3aXRob3V0IGNvbnNpZGVyaW5nIHNlbGYgbG9vcHMuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIG5vZGUgLSBUaGUgbm9kZSdzIGtleS5cbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAtIFRoZSBub2RlJ3MgaW4gZGVncmVlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIGRlZ3JlZVdpdGhvdXRTZWxmTG9vcHMobm9kZSkge1xuICAgIG5vZGUgPSAnJyArIG5vZGU7XG5cbiAgICBjb25zdCBub2RlRGF0YSA9IHRoaXMuX25vZGVzLmdldChub2RlKTtcblxuICAgIGlmICghbm9kZURhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguZGVncmVlV2l0aG91dFNlbGZMb29wczogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICBsZXQgZGVncmVlID0gMDtcblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICdkaXJlY3RlZCcpIHtcbiAgICAgIGRlZ3JlZSArPSBub2RlRGF0YS51bmRpcmVjdGVkRGVncmVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICd1bmRpcmVjdGVkJykge1xuICAgICAgZGVncmVlICs9IG5vZGVEYXRhLmluRGVncmVlICsgbm9kZURhdGEub3V0RGVncmVlO1xuICAgIH1cblxuICAgIHJldHVybiBkZWdyZWU7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgZ2l2ZW4gZWRnZSdzIHNvdXJjZS5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSBlZGdlIC0gVGhlIGVkZ2UncyBrZXkuXG4gICAqIEByZXR1cm4ge2FueX0gICAgICAtIFRoZSBlZGdlJ3Mgc291cmNlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBlZGdlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIHNvdXJjZShlZGdlKSB7XG4gICAgZWRnZSA9ICcnICsgZWRnZTtcblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9lZGdlcy5nZXQoZWRnZSk7XG5cbiAgICBpZiAoIWRhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguc291cmNlOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VkZ2V9XCIgZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIHJldHVybiBkYXRhLnNvdXJjZS5rZXk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgZ2l2ZW4gZWRnZSdzIHRhcmdldC5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSBlZGdlIC0gVGhlIGVkZ2UncyBrZXkuXG4gICAqIEByZXR1cm4ge2FueX0gICAgICAtIFRoZSBlZGdlJ3MgdGFyZ2V0LlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBlZGdlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIHRhcmdldChlZGdlKSB7XG4gICAgZWRnZSA9ICcnICsgZWRnZTtcblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9lZGdlcy5nZXQoZWRnZSk7XG5cbiAgICBpZiAoIWRhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGgudGFyZ2V0OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VkZ2V9XCIgZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIHJldHVybiBkYXRhLnRhcmdldC5rZXk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgZ2l2ZW4gZWRnZSdzIGV4dHJlbWl0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgZWRnZSAtIFRoZSBlZGdlJ3Mga2V5LlxuICAgKiBAcmV0dXJuIHthcnJheX0gICAgICAtIFRoZSBlZGdlJ3MgZXh0cmVtaXRpZXMuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIGVkZ2UgaXNuJ3QgaW4gdGhlIGdyYXBoLlxuICAgKi9cbiAgZXh0cmVtaXRpZXMoZWRnZSkge1xuICAgIGVkZ2UgPSAnJyArIGVkZ2U7XG5cbiAgICBjb25zdCBlZGdlRGF0YSA9IHRoaXMuX2VkZ2VzLmdldChlZGdlKTtcblxuICAgIGlmICghZWRnZURhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguZXh0cmVtaXRpZXM6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7ZWRnZX1cIiBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgcmV0dXJuIFtlZGdlRGF0YS5zb3VyY2Uua2V5LCBlZGdlRGF0YS50YXJnZXQua2V5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhIG5vZGUgJiBhbiBlZGdlLCByZXR1cm5zIHRoZSBvdGhlciBleHRyZW1pdHkgb2YgdGhlIGVkZ2UuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICBub2RlIC0gVGhlIG5vZGUncyBrZXkuXG4gICAqIEBwYXJhbSAge2FueX0gICBlZGdlIC0gVGhlIGVkZ2UncyBrZXkuXG4gICAqIEByZXR1cm4ge2FueX0gICAgICAgIC0gVGhlIHJlbGF0ZWQgbm9kZS5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgZWRnZSBpc24ndCBpbiB0aGUgZ3JhcGggb3IgaWYgdGhlXG4gICAqICAgICAgICAgICAgICAgICAgIGVkZ2UgJiBub2RlIGFyZSBub3QgcmVsYXRlZC5cbiAgICovXG4gIG9wcG9zaXRlKG5vZGUsIGVkZ2UpIHtcbiAgICBub2RlID0gJycgKyBub2RlO1xuICAgIGVkZ2UgPSAnJyArIGVkZ2U7XG5cbiAgICBjb25zdCBkYXRhID0gdGhpcy5fZWRnZXMuZ2V0KGVkZ2UpO1xuXG4gICAgaWYgKCFkYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLm9wcG9zaXRlOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VkZ2V9XCIgZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIGNvbnN0IHNvdXJjZSA9IGRhdGEuc291cmNlLmtleTtcbiAgICBjb25zdCB0YXJnZXQgPSBkYXRhLnRhcmdldC5rZXk7XG5cbiAgICBpZiAobm9kZSA9PT0gc291cmNlKSByZXR1cm4gdGFyZ2V0O1xuICAgIGlmIChub2RlID09PSB0YXJnZXQpIHJldHVybiBzb3VyY2U7XG5cbiAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgYEdyYXBoLm9wcG9zaXRlOiB0aGUgXCIke25vZGV9XCIgbm9kZSBpcyBub3QgYXR0YWNoZWQgdG8gdGhlIFwiJHtlZGdlfVwiIGVkZ2UgKCR7c291cmNlfSwgJHt0YXJnZXR9KS5gXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIGVkZ2UgaGFzIHRoZSBnaXZlbiBub2RlIGFzIGV4dHJlbWl0eS5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgZWRnZSAtIFRoZSBlZGdlJ3Mga2V5LlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICBub2RlIC0gVGhlIG5vZGUncyBrZXkuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59ICAgICAgLSBUaGUgcmVsYXRlZCBub2RlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIGVpdGhlciB0aGUgbm9kZSBvciB0aGUgZWRnZSBpc24ndCBpbiB0aGUgZ3JhcGguXG4gICAqL1xuICBoYXNFeHRyZW1pdHkoZWRnZSwgbm9kZSkge1xuICAgIGVkZ2UgPSAnJyArIGVkZ2U7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9lZGdlcy5nZXQoZWRnZSk7XG5cbiAgICBpZiAoIWRhdGEpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGguaGFzRXh0cmVtaXR5OiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VkZ2V9XCIgZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIHJldHVybiBkYXRhLnNvdXJjZS5rZXkgPT09IG5vZGUgfHwgZGF0YS50YXJnZXQua2V5ID09PSBub2RlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgd2hldGhlciB0aGUgZ2l2ZW4gZWRnZSBpcyB1bmRpcmVjdGVkLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICBlZGdlIC0gVGhlIGVkZ2UncyBrZXkuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIGVkZ2UgaXNuJ3QgaW4gdGhlIGdyYXBoLlxuICAgKi9cbiAgaXNVbmRpcmVjdGVkKGVkZ2UpIHtcbiAgICBlZGdlID0gJycgKyBlZGdlO1xuXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuX2VkZ2VzLmdldChlZGdlKTtcblxuICAgIGlmICghZGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5pc1VuZGlyZWN0ZWQ6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7ZWRnZX1cIiBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgcmV0dXJuIGRhdGEudW5kaXJlY3RlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHdoZXRoZXIgdGhlIGdpdmVuIGVkZ2UgaXMgZGlyZWN0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgIGVkZ2UgLSBUaGUgZWRnZSdzIGtleS5cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgZWRnZSBpc24ndCBpbiB0aGUgZ3JhcGguXG4gICAqL1xuICBpc0RpcmVjdGVkKGVkZ2UpIHtcbiAgICBlZGdlID0gJycgKyBlZGdlO1xuXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuX2VkZ2VzLmdldChlZGdlKTtcblxuICAgIGlmICghZGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5pc0RpcmVjdGVkOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VkZ2V9XCIgZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIHJldHVybiAhZGF0YS51bmRpcmVjdGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgd2hldGhlciB0aGUgZ2l2ZW4gZWRnZSBpcyBhIHNlbGYgbG9vcC5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICAgZWRnZSAtIFRoZSBlZGdlJ3Mga2V5LlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBlZGdlIGlzbid0IGluIHRoZSBncmFwaC5cbiAgICovXG4gIGlzU2VsZkxvb3AoZWRnZSkge1xuICAgIGVkZ2UgPSAnJyArIGVkZ2U7XG5cbiAgICBjb25zdCBkYXRhID0gdGhpcy5fZWRnZXMuZ2V0KGVkZ2UpO1xuXG4gICAgaWYgKCFkYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLmlzU2VsZkxvb3A6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7ZWRnZX1cIiBlZGdlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgcmV0dXJuIGRhdGEuc291cmNlID09PSBkYXRhLnRhcmdldDtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBNdXRhdGlvblxuICAgKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICovXG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIHRvIGFkZCBhIG5vZGUgdG8gdGhlIGdyYXBoLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgIG5vZGUgICAgICAgICAtIFRoZSBub2RlLlxuICAgKiBAcGFyYW0gIHtvYmplY3R9IFthdHRyaWJ1dGVzXSAtIE9wdGlvbmFsIGF0dHJpYnV0ZXMuXG4gICAqIEByZXR1cm4ge2FueX0gICAgICAgICAgICAgICAgIC0gVGhlIG5vZGUuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIGdpdmVuIG5vZGUgYWxyZWFkeSBleGlzdC5cbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgZ2l2ZW4gYXR0cmlidXRlcyBhcmUgbm90IGFuIG9iamVjdC5cbiAgICovXG4gIGFkZE5vZGUobm9kZSwgYXR0cmlidXRlcykge1xuICAgIGNvbnN0IG5vZGVEYXRhID0gYWRkTm9kZSh0aGlzLCBub2RlLCBhdHRyaWJ1dGVzKTtcblxuICAgIHJldHVybiBub2RlRGF0YS5rZXk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgdG8gbWVyZ2UgYSBub2RlIGludG8gdGhlIGdyYXBoLlxuICAgKlxuICAgKiBAcGFyYW0gIHthbnl9ICAgIG5vZGUgICAgICAgICAtIFRoZSBub2RlLlxuICAgKiBAcGFyYW0gIHtvYmplY3R9IFthdHRyaWJ1dGVzXSAtIE9wdGlvbmFsIGF0dHJpYnV0ZXMuXG4gICAqIEByZXR1cm4ge2FueX0gICAgICAgICAgICAgICAgIC0gVGhlIG5vZGUuXG4gICAqL1xuICBtZXJnZU5vZGUobm9kZSwgYXR0cmlidXRlcykge1xuICAgIGlmIChhdHRyaWJ1dGVzICYmICFpc1BsYWluT2JqZWN0KGF0dHJpYnV0ZXMpKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGgubWVyZ2VOb2RlOiBpbnZhbGlkIGF0dHJpYnV0ZXMuIEV4cGVjdGluZyBhbiBvYmplY3QgYnV0IGdvdCBcIiR7YXR0cmlidXRlc31cImBcbiAgICAgICk7XG5cbiAgICAvLyBTdHJpbmcgY29lcmNpb25cbiAgICBub2RlID0gJycgKyBub2RlO1xuICAgIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzIHx8IHt9O1xuXG4gICAgLy8gSWYgdGhlIG5vZGUgYWxyZWFkeSBleGlzdHMsIHdlIG1lcmdlIHRoZSBhdHRyaWJ1dGVzXG4gICAgbGV0IGRhdGEgPSB0aGlzLl9ub2Rlcy5nZXQobm9kZSk7XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgYXNzaWduKGRhdGEuYXR0cmlidXRlcywgYXR0cmlidXRlcyk7XG5cbiAgICAgICAgdGhpcy5lbWl0KCdub2RlQXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICAgICAgdHlwZTogJ21lcmdlJyxcbiAgICAgICAgICBrZXk6IG5vZGUsXG4gICAgICAgICAgYXR0cmlidXRlczogZGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgIGRhdGE6IGF0dHJpYnV0ZXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gW25vZGUsIGZhbHNlXTtcbiAgICB9XG5cbiAgICBkYXRhID0gbmV3IHRoaXMuTm9kZURhdGFDbGFzcyhub2RlLCBhdHRyaWJ1dGVzKTtcblxuICAgIC8vIEFkZGluZyB0aGUgbm9kZSB0byBpbnRlcm5hbCByZWdpc3RlclxuICAgIHRoaXMuX25vZGVzLnNldChub2RlLCBkYXRhKTtcblxuICAgIC8vIEVtaXR0aW5nXG4gICAgdGhpcy5lbWl0KCdub2RlQWRkZWQnLCB7XG4gICAgICBrZXk6IG5vZGUsXG4gICAgICBhdHRyaWJ1dGVzXG4gICAgfSk7XG5cbiAgICByZXR1cm4gW25vZGUsIHRydWVdO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIHRvIGFkZCBhIG5vZGUgaWYgaXQgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGdyYXBoIG9yIGVsc2UgdG9cbiAgICogdXBkYXRlIGl0cyBhdHRyaWJ1dGVzIHVzaW5nIGEgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICAgICBub2RlICAgICAgLSBUaGUgbm9kZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IFt1cGRhdGVyXSAtIE9wdGlvbmFsIHVwZGF0ZXIgZnVuY3Rpb24uXG4gICAqIEByZXR1cm4ge2FueX0gICAgICAgICAgICAgICAgLSBUaGUgbm9kZS5cbiAgICovXG4gIHVwZGF0ZU5vZGUobm9kZSwgdXBkYXRlcikge1xuICAgIGlmICh1cGRhdGVyICYmIHR5cGVvZiB1cGRhdGVyICE9PSAnZnVuY3Rpb24nKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICBgR3JhcGgudXBkYXRlTm9kZTogaW52YWxpZCB1cGRhdGVyIGZ1bmN0aW9uLiBFeHBlY3RpbmcgYSBmdW5jdGlvbiBidXQgZ290IFwiJHt1cGRhdGVyfVwiYFxuICAgICAgKTtcblxuICAgIC8vIFN0cmluZyBjb2VyY2lvblxuICAgIG5vZGUgPSAnJyArIG5vZGU7XG5cbiAgICAvLyBJZiB0aGUgbm9kZSBhbHJlYWR5IGV4aXN0cywgd2UgdXBkYXRlIHRoZSBhdHRyaWJ1dGVzXG4gICAgbGV0IGRhdGEgPSB0aGlzLl9ub2Rlcy5nZXQobm9kZSk7XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKHVwZGF0ZXIpIHtcbiAgICAgICAgY29uc3Qgb2xkQXR0cmlidXRlcyA9IGRhdGEuYXR0cmlidXRlcztcbiAgICAgICAgZGF0YS5hdHRyaWJ1dGVzID0gdXBkYXRlcihvbGRBdHRyaWJ1dGVzKTtcblxuICAgICAgICB0aGlzLmVtaXQoJ25vZGVBdHRyaWJ1dGVzVXBkYXRlZCcsIHtcbiAgICAgICAgICB0eXBlOiAncmVwbGFjZScsXG4gICAgICAgICAga2V5OiBub2RlLFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlc1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbbm9kZSwgZmFsc2VdO1xuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB1cGRhdGVyID8gdXBkYXRlcih7fSkgOiB7fTtcblxuICAgIGRhdGEgPSBuZXcgdGhpcy5Ob2RlRGF0YUNsYXNzKG5vZGUsIGF0dHJpYnV0ZXMpO1xuXG4gICAgLy8gQWRkaW5nIHRoZSBub2RlIHRvIGludGVybmFsIHJlZ2lzdGVyXG4gICAgdGhpcy5fbm9kZXMuc2V0KG5vZGUsIGRhdGEpO1xuXG4gICAgLy8gRW1pdHRpbmdcbiAgICB0aGlzLmVtaXQoJ25vZGVBZGRlZCcsIHtcbiAgICAgIGtleTogbm9kZSxcbiAgICAgIGF0dHJpYnV0ZXNcbiAgICB9KTtcblxuICAgIHJldHVybiBbbm9kZSwgdHJ1ZV07XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgdG8gZHJvcCBhIHNpbmdsZSBub2RlICYgYWxsIGl0cyBhdHRhY2hlZCBlZGdlcyBmcm9tIHRoZSBncmFwaC5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgICBub2RlIC0gVGhlIG5vZGUuXG4gICAqIEByZXR1cm4ge0dyYXBofVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGRvZXNuJ3QgZXhpc3QuXG4gICAqL1xuICBkcm9wTm9kZShub2RlKSB7XG4gICAgbm9kZSA9ICcnICsgbm9kZTtcblxuICAgIGNvbnN0IG5vZGVEYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFub2RlRGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5kcm9wTm9kZTogY291bGQgbm90IGZpbmQgdGhlIFwiJHtub2RlfVwiIG5vZGUgaW4gdGhlIGdyYXBoLmBcbiAgICAgICk7XG5cbiAgICAvLyBSZW1vdmluZyBhdHRhY2hlZCBlZGdlc1xuICAgIC8vIFRPRE86IHdlIGNvdWxkIGRvIGZhc3RlclxuICAgIHRoaXMuZm9yRWFjaEVkZ2Uobm9kZSwgZWRnZSA9PiB7XG4gICAgICB0aGlzLmRyb3BFZGdlKGVkZ2UpO1xuICAgIH0pO1xuXG4gICAgLy8gRHJvcHBpbmcgdGhlIG5vZGUgZnJvbSB0aGUgcmVnaXN0ZXJcbiAgICB0aGlzLl9ub2Rlcy5kZWxldGUobm9kZSk7XG5cbiAgICAvLyBFbWl0dGluZ1xuICAgIHRoaXMuZW1pdCgnbm9kZURyb3BwZWQnLCB7XG4gICAgICBrZXk6IG5vZGUsXG4gICAgICBhdHRyaWJ1dGVzOiBub2RlRGF0YS5hdHRyaWJ1dGVzXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgdG8gZHJvcCBhIHNpbmdsZSBlZGdlIGZyb20gdGhlIGdyYXBoLlxuICAgKlxuICAgKiBBcml0eSAxOlxuICAgKiBAcGFyYW0gIHthbnl9ICAgIGVkZ2UgLSBUaGUgZWRnZS5cbiAgICpcbiAgICogQXJpdHkgMjpcbiAgICogQHBhcmFtICB7YW55fSAgICBzb3VyY2UgLSBTb3VyY2Ugbm9kZS5cbiAgICogQHBhcmFtICB7YW55fSAgICB0YXJnZXQgLSBUYXJnZXQgbm9kZS5cbiAgICpcbiAgICogQHJldHVybiB7R3JhcGh9XG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIFdpbGwgdGhyb3cgaWYgdGhlIGVkZ2UgZG9lc24ndCBleGlzdC5cbiAgICovXG4gIGRyb3BFZGdlKGVkZ2UpIHtcbiAgICBsZXQgZWRnZURhdGE7XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9ICcnICsgYXJndW1lbnRzWzBdLFxuICAgICAgICB0YXJnZXQgPSAnJyArIGFyZ3VtZW50c1sxXTtcblxuICAgICAgZWRnZURhdGEgPSBnZXRNYXRjaGluZ0VkZ2UodGhpcywgc291cmNlLCB0YXJnZXQsIHRoaXMudHlwZSk7XG5cbiAgICAgIGlmICghZWRnZURhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLmRyb3BFZGdlOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke3NvdXJjZX1cIiAtPiBcIiR7dGFyZ2V0fVwiIGVkZ2UgaW4gdGhlIGdyYXBoLmBcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWRnZSA9ICcnICsgZWRnZTtcblxuICAgICAgZWRnZURhdGEgPSB0aGlzLl9lZGdlcy5nZXQoZWRnZSk7XG5cbiAgICAgIGlmICghZWRnZURhdGEpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgICAgYEdyYXBoLmRyb3BFZGdlOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VkZ2V9XCIgZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIERyb3BwaW5nIHRoZSBlZGdlIGZyb20gdGhlIHJlZ2lzdGVyXG4gICAgdGhpcy5fZWRnZXMuZGVsZXRlKGVkZ2VEYXRhLmtleSk7XG5cbiAgICAvLyBVcGRhdGluZyByZWxhdGVkIGRlZ3JlZXNcbiAgICBjb25zdCB7c291cmNlOiBzb3VyY2VEYXRhLCB0YXJnZXQ6IHRhcmdldERhdGEsIGF0dHJpYnV0ZXN9ID0gZWRnZURhdGE7XG5cbiAgICBjb25zdCB1bmRpcmVjdGVkID0gZWRnZURhdGEudW5kaXJlY3RlZDtcblxuICAgIGlmIChzb3VyY2VEYXRhID09PSB0YXJnZXREYXRhKSB7XG4gICAgICBpZiAodW5kaXJlY3RlZCkge1xuICAgICAgICBzb3VyY2VEYXRhLnVuZGlyZWN0ZWRTZWxmTG9vcHMtLTtcbiAgICAgICAgdGhpcy5fdW5kaXJlY3RlZFNlbGZMb29wQ291bnQtLTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNvdXJjZURhdGEuZGlyZWN0ZWRTZWxmTG9vcHMtLTtcbiAgICAgICAgdGhpcy5fZGlyZWN0ZWRTZWxmTG9vcENvdW50LS07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh1bmRpcmVjdGVkKSB7XG4gICAgICAgIHNvdXJjZURhdGEudW5kaXJlY3RlZERlZ3JlZS0tO1xuICAgICAgICB0YXJnZXREYXRhLnVuZGlyZWN0ZWREZWdyZWUtLTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNvdXJjZURhdGEub3V0RGVncmVlLS07XG4gICAgICAgIHRhcmdldERhdGEuaW5EZWdyZWUtLTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDbGVhcmluZyBpbmRleFxuICAgIGNsZWFyRWRnZUZyb21TdHJ1Y3R1cmVJbmRleCh0aGlzLCB1bmRpcmVjdGVkLCBlZGdlRGF0YSk7XG5cbiAgICBpZiAodW5kaXJlY3RlZCkgdGhpcy5fdW5kaXJlY3RlZFNpemUtLTtcbiAgICBlbHNlIHRoaXMuX2RpcmVjdGVkU2l6ZS0tO1xuXG4gICAgLy8gRW1pdHRpbmdcbiAgICB0aGlzLmVtaXQoJ2VkZ2VEcm9wcGVkJywge1xuICAgICAga2V5OiBlZGdlLFxuICAgICAgYXR0cmlidXRlcyxcbiAgICAgIHNvdXJjZTogc291cmNlRGF0YS5rZXksXG4gICAgICB0YXJnZXQ6IHRhcmdldERhdGEua2V5LFxuICAgICAgdW5kaXJlY3RlZFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgdG8gcmVtb3ZlIGV2ZXJ5IGVkZ2UgJiBldmVyeSBub2RlIGZyb20gdGhlIGdyYXBoLlxuICAgKlxuICAgKiBAcmV0dXJuIHtHcmFwaH1cbiAgICovXG4gIGNsZWFyKCkge1xuICAgIC8vIENsZWFyaW5nIGVkZ2VzXG4gICAgdGhpcy5fZWRnZXMuY2xlYXIoKTtcblxuICAgIC8vIENsZWFyaW5nIG5vZGVzXG4gICAgdGhpcy5fbm9kZXMuY2xlYXIoKTtcblxuICAgIC8vIFJlc2V0IGNvdW50ZXJzXG4gICAgdGhpcy5fcmVzZXRJbnN0YW5jZUNvdW50ZXJzKCk7XG5cbiAgICAvLyBFbWl0dGluZ1xuICAgIHRoaXMuZW1pdCgnY2xlYXJlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIHRvIHJlbW92ZSBldmVyeSBlZGdlIGZyb20gdGhlIGdyYXBoLlxuICAgKlxuICAgKiBAcmV0dXJuIHtHcmFwaH1cbiAgICovXG4gIGNsZWFyRWRnZXMoKSB7XG4gICAgY2xlYXJTdHJ1Y3R1cmVJbmRleCh0aGlzKTtcblxuICAgIC8vIENsZWFyaW5nIGVkZ2VzXG4gICAgdGhpcy5fZWRnZXMuY2xlYXIoKTtcblxuICAgIC8vIFJlc2V0IGNvdW50ZXJzXG4gICAgdGhpcy5fcmVzZXRJbnN0YW5jZUNvdW50ZXJzKCk7XG5cbiAgICAvLyBFbWl0dGluZ1xuICAgIHRoaXMuZW1pdCgnZWRnZXNDbGVhcmVkJyk7XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQXR0cmlidXRlcy1yZWxhdGVkIG1ldGhvZHNcbiAgICoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqL1xuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHRoZSBkZXNpcmVkIGdyYXBoJ3MgYXR0cmlidXRlLlxuICAgKlxuICAgKiBAcGFyYW0gIHtzdHJpbmd9IG5hbWUgLSBOYW1lIG9mIHRoZSBhdHRyaWJ1dGUuXG4gICAqIEByZXR1cm4ge2FueX1cbiAgICovXG4gIGdldEF0dHJpYnV0ZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuX2F0dHJpYnV0ZXNbbmFtZV07XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgZ3JhcGgncyBhdHRyaWJ1dGVzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAqL1xuICBnZXRBdHRyaWJ1dGVzKCkge1xuICAgIHJldHVybiB0aGlzLl9hdHRyaWJ1dGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgd2hldGhlciB0aGUgZ3JhcGggaGFzIHRoZSBkZXNpcmVkIGF0dHJpYnV0ZS5cbiAgICpcbiAgICogQHBhcmFtICB7c3RyaW5nfSAgbmFtZSAtIE5hbWUgb2YgdGhlIGF0dHJpYnV0ZS5cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGhhc0F0dHJpYnV0ZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuX2F0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkobmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHNldHRpbmcgYSB2YWx1ZSBmb3IgdGhlIGRlc2lyZWQgZ3JhcGgncyBhdHRyaWJ1dGUuXG4gICAqXG4gICAqIEBwYXJhbSAge3N0cmluZ30gIG5hbWUgIC0gTmFtZSBvZiB0aGUgYXR0cmlidXRlLlxuICAgKiBAcGFyYW0gIHthbnl9ICAgICB2YWx1ZSAtIFZhbHVlIGZvciB0aGUgYXR0cmlidXRlLlxuICAgKiBAcmV0dXJuIHtHcmFwaH1cbiAgICovXG4gIHNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkge1xuICAgIHRoaXMuX2F0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZTtcblxuICAgIC8vIEVtaXR0aW5nXG4gICAgdGhpcy5lbWl0KCdhdHRyaWJ1dGVzVXBkYXRlZCcsIHtcbiAgICAgIHR5cGU6ICdzZXQnLFxuICAgICAgYXR0cmlidXRlczogdGhpcy5fYXR0cmlidXRlcyxcbiAgICAgIG5hbWVcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2luZyBhIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgZGVzaXJlZCBncmFwaCdzIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gIHtzdHJpbmd9ICAgbmFtZSAgICAtIE5hbWUgb2YgdGhlIGF0dHJpYnV0ZS5cbiAgICogQHBhcmFtICB7ZnVuY3Rpb259IHVwZGF0ZXIgLSBGdW5jdGlvbiB1c2UgdG8gdXBkYXRlIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZS5cbiAgICogQHJldHVybiB7R3JhcGh9XG4gICAqL1xuICB1cGRhdGVBdHRyaWJ1dGUobmFtZSwgdXBkYXRlcikge1xuICAgIGlmICh0eXBlb2YgdXBkYXRlciAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ0dyYXBoLnVwZGF0ZUF0dHJpYnV0ZTogdXBkYXRlciBzaG91bGQgYmUgYSBmdW5jdGlvbi4nXG4gICAgICApO1xuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVdO1xuXG4gICAgdGhpcy5fYXR0cmlidXRlc1tuYW1lXSA9IHVwZGF0ZXIodmFsdWUpO1xuXG4gICAgLy8gRW1pdHRpbmdcbiAgICB0aGlzLmVtaXQoJ2F0dHJpYnV0ZXNVcGRhdGVkJywge1xuICAgICAgdHlwZTogJ3NldCcsXG4gICAgICBhdHRyaWJ1dGVzOiB0aGlzLl9hdHRyaWJ1dGVzLFxuICAgICAgbmFtZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJlbW92aW5nIHRoZSBkZXNpcmVkIGdyYXBoJ3MgYXR0cmlidXRlLlxuICAgKlxuICAgKiBAcGFyYW0gIHtzdHJpbmd9IG5hbWUgIC0gTmFtZSBvZiB0aGUgYXR0cmlidXRlLlxuICAgKiBAcmV0dXJuIHtHcmFwaH1cbiAgICovXG4gIHJlbW92ZUF0dHJpYnV0ZShuYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMuX2F0dHJpYnV0ZXNbbmFtZV07XG5cbiAgICAvLyBFbWl0dGluZ1xuICAgIHRoaXMuZW1pdCgnYXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICB0eXBlOiAncmVtb3ZlJyxcbiAgICAgIGF0dHJpYnV0ZXM6IHRoaXMuX2F0dHJpYnV0ZXMsXG4gICAgICBuYW1lXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmVwbGFjaW5nIHRoZSBncmFwaCdzIGF0dHJpYnV0ZXMuXG4gICAqXG4gICAqIEBwYXJhbSAge29iamVjdH0gYXR0cmlidXRlcyAtIE5ldyBhdHRyaWJ1dGVzLlxuICAgKiBAcmV0dXJuIHtHcmFwaH1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiBnaXZlbiBhdHRyaWJ1dGVzIGFyZSBub3QgYSBwbGFpbiBvYmplY3QuXG4gICAqL1xuICByZXBsYWNlQXR0cmlidXRlcyhhdHRyaWJ1dGVzKSB7XG4gICAgaWYgKCFpc1BsYWluT2JqZWN0KGF0dHJpYnV0ZXMpKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAnR3JhcGgucmVwbGFjZUF0dHJpYnV0ZXM6IHByb3ZpZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBhIHBsYWluIG9iamVjdC4nXG4gICAgICApO1xuXG4gICAgdGhpcy5fYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7XG5cbiAgICAvLyBFbWl0dGluZ1xuICAgIHRoaXMuZW1pdCgnYXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICB0eXBlOiAncmVwbGFjZScsXG4gICAgICBhdHRyaWJ1dGVzOiB0aGlzLl9hdHRyaWJ1dGVzXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgbWVyZ2luZyB0aGUgZ3JhcGgncyBhdHRyaWJ1dGVzLlxuICAgKlxuICAgKiBAcGFyYW0gIHtvYmplY3R9IGF0dHJpYnV0ZXMgLSBBdHRyaWJ1dGVzIHRvIG1lcmdlLlxuICAgKiBAcmV0dXJuIHtHcmFwaH1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiBnaXZlbiBhdHRyaWJ1dGVzIGFyZSBub3QgYSBwbGFpbiBvYmplY3QuXG4gICAqL1xuICBtZXJnZUF0dHJpYnV0ZXMoYXR0cmlidXRlcykge1xuICAgIGlmICghaXNQbGFpbk9iamVjdChhdHRyaWJ1dGVzKSlcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ0dyYXBoLm1lcmdlQXR0cmlidXRlczogcHJvdmlkZWQgYXR0cmlidXRlcyBhcmUgbm90IGEgcGxhaW4gb2JqZWN0LidcbiAgICAgICk7XG5cbiAgICBhc3NpZ24odGhpcy5fYXR0cmlidXRlcywgYXR0cmlidXRlcyk7XG5cbiAgICAvLyBFbWl0dGluZ1xuICAgIHRoaXMuZW1pdCgnYXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICB0eXBlOiAnbWVyZ2UnLFxuICAgICAgYXR0cmlidXRlczogdGhpcy5fYXR0cmlidXRlcyxcbiAgICAgIGRhdGE6IGF0dHJpYnV0ZXNcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1cGRhdGluZyB0aGUgZ3JhcGgncyBhdHRyaWJ1dGVzLlxuICAgKlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gdXBkYXRlciAtIEZ1bmN0aW9uIHVzZWQgdG8gdXBkYXRlIHRoZSBhdHRyaWJ1dGVzLlxuICAgKiBAcmV0dXJuIHtHcmFwaH1cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiBnaXZlbiB1cGRhdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLlxuICAgKi9cbiAgdXBkYXRlQXR0cmlidXRlcyh1cGRhdGVyKSB7XG4gICAgaWYgKHR5cGVvZiB1cGRhdGVyICE9PSAnZnVuY3Rpb24nKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAnR3JhcGgudXBkYXRlQXR0cmlidXRlczogcHJvdmlkZWQgdXBkYXRlciBpcyBub3QgYSBmdW5jdGlvbi4nXG4gICAgICApO1xuXG4gICAgdGhpcy5fYXR0cmlidXRlcyA9IHVwZGF0ZXIodGhpcy5fYXR0cmlidXRlcyk7XG5cbiAgICAvLyBFbWl0dGluZ1xuICAgIHRoaXMuZW1pdCgnYXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICB0eXBlOiAndXBkYXRlJyxcbiAgICAgIGF0dHJpYnV0ZXM6IHRoaXMuX2F0dHJpYnV0ZXNcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIHRvIHVwZGF0ZSBlYWNoIG5vZGUncyBhdHRyaWJ1dGVzIHVzaW5nIHRoZSBnaXZlbiBmdW5jdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gIHVwZGF0ZXIgLSBVcGRhdGVyIGZ1bmN0aW9uIHRvIHVzZS5cbiAgICogQHBhcmFtIHtvYmplY3R9ICAgIFtoaW50c10gLSBPcHRpb25hbCBoaW50cy5cbiAgICovXG4gIHVwZGF0ZUVhY2hOb2RlQXR0cmlidXRlcyh1cGRhdGVyLCBoaW50cykge1xuICAgIGlmICh0eXBlb2YgdXBkYXRlciAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ0dyYXBoLnVwZGF0ZUVhY2hOb2RlQXR0cmlidXRlczogZXhwZWN0aW5nIGFuIHVwZGF0ZXIgZnVuY3Rpb24uJ1xuICAgICAgKTtcblxuICAgIGlmIChoaW50cyAmJiAhdmFsaWRhdGVIaW50cyhoaW50cykpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdHcmFwaC51cGRhdGVFYWNoTm9kZUF0dHJpYnV0ZXM6IGludmFsaWQgaGludHMuIEV4cGVjdGluZyBhbiBvYmplY3QgaGF2aW5nIHRoZSBmb2xsb3dpbmcgc2hhcGU6IHthdHRyaWJ1dGVzPzogW3N0cmluZ119J1xuICAgICAgKTtcblxuICAgIGNvbnN0IGl0ZXJhdG9yID0gdGhpcy5fbm9kZXMudmFsdWVzKCk7XG5cbiAgICBsZXQgc3RlcCwgbm9kZURhdGE7XG5cbiAgICB3aGlsZSAoKChzdGVwID0gaXRlcmF0b3IubmV4dCgpKSwgc3RlcC5kb25lICE9PSB0cnVlKSkge1xuICAgICAgbm9kZURhdGEgPSBzdGVwLnZhbHVlO1xuICAgICAgbm9kZURhdGEuYXR0cmlidXRlcyA9IHVwZGF0ZXIobm9kZURhdGEua2V5LCBub2RlRGF0YS5hdHRyaWJ1dGVzKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXQoJ2VhY2hOb2RlQXR0cmlidXRlc1VwZGF0ZWQnLCB7XG4gICAgICBoaW50czogaGludHMgPyBoaW50cyA6IG51bGxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdXNlZCB0byB1cGRhdGUgZWFjaCBlZGdlJ3MgYXR0cmlidXRlcyB1c2luZyB0aGUgZ2l2ZW4gZnVuY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259ICB1cGRhdGVyIC0gVXBkYXRlciBmdW5jdGlvbiB0byB1c2UuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSAgICBbaGludHNdIC0gT3B0aW9uYWwgaGludHMuXG4gICAqL1xuICB1cGRhdGVFYWNoRWRnZUF0dHJpYnV0ZXModXBkYXRlciwgaGludHMpIHtcbiAgICBpZiAodHlwZW9mIHVwZGF0ZXIgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdHcmFwaC51cGRhdGVFYWNoRWRnZUF0dHJpYnV0ZXM6IGV4cGVjdGluZyBhbiB1cGRhdGVyIGZ1bmN0aW9uLidcbiAgICAgICk7XG5cbiAgICBpZiAoaGludHMgJiYgIXZhbGlkYXRlSGludHMoaGludHMpKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAnR3JhcGgudXBkYXRlRWFjaEVkZ2VBdHRyaWJ1dGVzOiBpbnZhbGlkIGhpbnRzLiBFeHBlY3RpbmcgYW4gb2JqZWN0IGhhdmluZyB0aGUgZm9sbG93aW5nIHNoYXBlOiB7YXR0cmlidXRlcz86IFtzdHJpbmddfSdcbiAgICAgICk7XG5cbiAgICBjb25zdCBpdGVyYXRvciA9IHRoaXMuX2VkZ2VzLnZhbHVlcygpO1xuXG4gICAgbGV0IHN0ZXAsIGVkZ2VEYXRhLCBzb3VyY2VEYXRhLCB0YXJnZXREYXRhO1xuXG4gICAgd2hpbGUgKCgoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSksIHN0ZXAuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICAgIGVkZ2VEYXRhID0gc3RlcC52YWx1ZTtcbiAgICAgIHNvdXJjZURhdGEgPSBlZGdlRGF0YS5zb3VyY2U7XG4gICAgICB0YXJnZXREYXRhID0gZWRnZURhdGEudGFyZ2V0O1xuXG4gICAgICBlZGdlRGF0YS5hdHRyaWJ1dGVzID0gdXBkYXRlcihcbiAgICAgICAgZWRnZURhdGEua2V5LFxuICAgICAgICBlZGdlRGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICBzb3VyY2VEYXRhLmtleSxcbiAgICAgICAgdGFyZ2V0RGF0YS5rZXksXG4gICAgICAgIHNvdXJjZURhdGEuYXR0cmlidXRlcyxcbiAgICAgICAgdGFyZ2V0RGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICBlZGdlRGF0YS51bmRpcmVjdGVkXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdCgnZWFjaEVkZ2VBdHRyaWJ1dGVzVXBkYXRlZCcsIHtcbiAgICAgIGhpbnRzOiBoaW50cyA/IGhpbnRzIDogbnVsbFxuICAgIH0pO1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEl0ZXJhdGlvbi1yZWxhdGVkIG1ldGhvZHNcbiAgICoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqL1xuXG4gIC8qKlxuICAgKiBNZXRob2QgaXRlcmF0aW5nIG92ZXIgdGhlIGdyYXBoJ3MgYWRqYWNlbmN5IHVzaW5nIHRoZSBnaXZlbiBjYWxsYmFjay5cbiAgICpcbiAgICogQHBhcmFtICB7ZnVuY3Rpb259ICBjYWxsYmFjayAtIENhbGxiYWNrIHRvIHVzZS5cbiAgICovXG4gIGZvckVhY2hBZGphY2VuY3lFbnRyeShjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdHcmFwaC5mb3JFYWNoQWRqYWNlbmN5RW50cnk6IGV4cGVjdGluZyBhIGNhbGxiYWNrLidcbiAgICAgICk7XG5cbiAgICBpZiAodGhpcy5tdWx0aSkgZm9yRWFjaEFkamFjZW5jeU11bHRpKGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRoaXMsIGNhbGxiYWNrKTtcbiAgICBlbHNlIGZvckVhY2hBZGphY2VuY3lTaW1wbGUoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdGhpcywgY2FsbGJhY2spO1xuICB9XG4gIGZvckVhY2hBZGphY2VuY3lFbnRyeVdpdGhPcnBoYW5zKGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ0dyYXBoLmZvckVhY2hBZGphY2VuY3lFbnRyeVdpdGhPcnBoYW5zOiBleHBlY3RpbmcgYSBjYWxsYmFjay4nXG4gICAgICApO1xuXG4gICAgaWYgKHRoaXMubXVsdGkpIGZvckVhY2hBZGphY2VuY3lNdWx0aShmYWxzZSwgZmFsc2UsIHRydWUsIHRoaXMsIGNhbGxiYWNrKTtcbiAgICBlbHNlIGZvckVhY2hBZGphY2VuY3lTaW1wbGUoZmFsc2UsIGZhbHNlLCB0cnVlLCB0aGlzLCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGl0ZXJhdGluZyBvdmVyIHRoZSBncmFwaCdzIGFzc3ltZXRyaWMgYWRqYWNlbmN5IHVzaW5nIHRoZSBnaXZlbiBjYWxsYmFjay5cbiAgICpcbiAgICogQHBhcmFtICB7ZnVuY3Rpb259ICBjYWxsYmFjayAtIENhbGxiYWNrIHRvIHVzZS5cbiAgICovXG4gIGZvckVhY2hBc3N5bWV0cmljQWRqYWNlbmN5RW50cnkoY2FsbGJhY2spIHtcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAnR3JhcGguZm9yRWFjaEFzc3ltZXRyaWNBZGphY2VuY3lFbnRyeTogZXhwZWN0aW5nIGEgY2FsbGJhY2suJ1xuICAgICAgKTtcblxuICAgIGlmICh0aGlzLm11bHRpKSBmb3JFYWNoQWRqYWNlbmN5TXVsdGkoZmFsc2UsIHRydWUsIGZhbHNlLCB0aGlzLCBjYWxsYmFjayk7XG4gICAgZWxzZSBmb3JFYWNoQWRqYWNlbmN5U2ltcGxlKGZhbHNlLCB0cnVlLCBmYWxzZSwgdGhpcywgY2FsbGJhY2spO1xuICB9XG4gIGZvckVhY2hBc3N5bWV0cmljQWRqYWNlbmN5RW50cnlXaXRoT3JwaGFucyhjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdHcmFwaC5mb3JFYWNoQXNzeW1ldHJpY0FkamFjZW5jeUVudHJ5V2l0aE9ycGhhbnM6IGV4cGVjdGluZyBhIGNhbGxiYWNrLidcbiAgICAgICk7XG5cbiAgICBpZiAodGhpcy5tdWx0aSkgZm9yRWFjaEFkamFjZW5jeU11bHRpKGZhbHNlLCB0cnVlLCB0cnVlLCB0aGlzLCBjYWxsYmFjayk7XG4gICAgZWxzZSBmb3JFYWNoQWRqYWNlbmN5U2ltcGxlKGZhbHNlLCB0cnVlLCB0cnVlLCB0aGlzLCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyB0aGUgbGlzdCBvZiB0aGUgZ3JhcGgncyBub2Rlcy5cbiAgICpcbiAgICogQHJldHVybiB7YXJyYXl9IC0gVGhlIG5vZGVzLlxuICAgKi9cbiAgbm9kZXMoKSB7XG4gICAgaWYgKHR5cGVvZiBBcnJheS5mcm9tID09PSAnZnVuY3Rpb24nKSByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9ub2Rlcy5rZXlzKCkpO1xuXG4gICAgcmV0dXJuIHRha2UodGhpcy5fbm9kZXMua2V5cygpLCB0aGlzLl9ub2Rlcy5zaXplKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgaXRlcmF0aW5nIG92ZXIgdGhlIGdyYXBoJ3Mgbm9kZXMgdXNpbmcgdGhlIGdpdmVuIGNhbGxiYWNrLlxuICAgKlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gIGNhbGxiYWNrIC0gQ2FsbGJhY2sgKGtleSwgYXR0cmlidXRlcywgaW5kZXgpLlxuICAgKi9cbiAgZm9yRWFjaE5vZGUoY2FsbGJhY2spIHtcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAnR3JhcGguZm9yRWFjaE5vZGU6IGV4cGVjdGluZyBhIGNhbGxiYWNrLidcbiAgICAgICk7XG5cbiAgICBjb25zdCBpdGVyYXRvciA9IHRoaXMuX25vZGVzLnZhbHVlcygpO1xuXG4gICAgbGV0IHN0ZXAsIG5vZGVEYXRhO1xuXG4gICAgd2hpbGUgKCgoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSksIHN0ZXAuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICAgIG5vZGVEYXRhID0gc3RlcC52YWx1ZTtcbiAgICAgIGNhbGxiYWNrKG5vZGVEYXRhLmtleSwgbm9kZURhdGEuYXR0cmlidXRlcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBpdGVyYXRpbmcgYXR0ZW1wdGluZyB0byBmaW5kIGEgbm9kZSBtYXRjaGluZyB0aGUgZ2l2ZW4gcHJlZGljYXRlXG4gICAqIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gIGNhbGxiYWNrIC0gQ2FsbGJhY2sgKGtleSwgYXR0cmlidXRlcykuXG4gICAqL1xuICBmaW5kTm9kZShjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdHcmFwaC5maW5kTm9kZTogZXhwZWN0aW5nIGEgY2FsbGJhY2suJ1xuICAgICAgKTtcblxuICAgIGNvbnN0IGl0ZXJhdG9yID0gdGhpcy5fbm9kZXMudmFsdWVzKCk7XG5cbiAgICBsZXQgc3RlcCwgbm9kZURhdGE7XG5cbiAgICB3aGlsZSAoKChzdGVwID0gaXRlcmF0b3IubmV4dCgpKSwgc3RlcC5kb25lICE9PSB0cnVlKSkge1xuICAgICAgbm9kZURhdGEgPSBzdGVwLnZhbHVlO1xuXG4gICAgICBpZiAoY2FsbGJhY2sobm9kZURhdGEua2V5LCBub2RlRGF0YS5hdHRyaWJ1dGVzKSkgcmV0dXJuIG5vZGVEYXRhLmtleTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIG1hcHBpbmcgbm9kZXMuXG4gICAqXG4gICAqIEBwYXJhbSAge2Z1bmN0aW9ufSAgY2FsbGJhY2sgLSBDYWxsYmFjayAoa2V5LCBhdHRyaWJ1dGVzKS5cbiAgICovXG4gIG1hcE5vZGVzKGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ0dyYXBoLm1hcE5vZGU6IGV4cGVjdGluZyBhIGNhbGxiYWNrLidcbiAgICAgICk7XG5cbiAgICBjb25zdCBpdGVyYXRvciA9IHRoaXMuX25vZGVzLnZhbHVlcygpO1xuXG4gICAgbGV0IHN0ZXAsIG5vZGVEYXRhO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5KHRoaXMub3JkZXIpO1xuICAgIGxldCBpID0gMDtcblxuICAgIHdoaWxlICgoKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLCBzdGVwLmRvbmUgIT09IHRydWUpKSB7XG4gICAgICBub2RlRGF0YSA9IHN0ZXAudmFsdWU7XG4gICAgICByZXN1bHRbaSsrXSA9IGNhbGxiYWNrKG5vZGVEYXRhLmtleSwgbm9kZURhdGEuYXR0cmlidXRlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIHdoZXRoZXIgc29tZSBub2RlIHZlcmlmeSB0aGUgZ2l2ZW4gcHJlZGljYXRlLlxuICAgKlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gIGNhbGxiYWNrIC0gQ2FsbGJhY2sgKGtleSwgYXR0cmlidXRlcykuXG4gICAqL1xuICBzb21lTm9kZShjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdHcmFwaC5zb21lTm9kZTogZXhwZWN0aW5nIGEgY2FsbGJhY2suJ1xuICAgICAgKTtcblxuICAgIGNvbnN0IGl0ZXJhdG9yID0gdGhpcy5fbm9kZXMudmFsdWVzKCk7XG5cbiAgICBsZXQgc3RlcCwgbm9kZURhdGE7XG5cbiAgICB3aGlsZSAoKChzdGVwID0gaXRlcmF0b3IubmV4dCgpKSwgc3RlcC5kb25lICE9PSB0cnVlKSkge1xuICAgICAgbm9kZURhdGEgPSBzdGVwLnZhbHVlO1xuXG4gICAgICBpZiAoY2FsbGJhY2sobm9kZURhdGEua2V5LCBub2RlRGF0YS5hdHRyaWJ1dGVzKSkgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgd2hldGhlciBhbGwgbm9kZSB2ZXJpZnkgdGhlIGdpdmVuIHByZWRpY2F0ZS5cbiAgICpcbiAgICogQHBhcmFtICB7ZnVuY3Rpb259ICBjYWxsYmFjayAtIENhbGxiYWNrIChrZXksIGF0dHJpYnV0ZXMpLlxuICAgKi9cbiAgZXZlcnlOb2RlKGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ0dyYXBoLmV2ZXJ5Tm9kZTogZXhwZWN0aW5nIGEgY2FsbGJhY2suJ1xuICAgICAgKTtcblxuICAgIGNvbnN0IGl0ZXJhdG9yID0gdGhpcy5fbm9kZXMudmFsdWVzKCk7XG5cbiAgICBsZXQgc3RlcCwgbm9kZURhdGE7XG5cbiAgICB3aGlsZSAoKChzdGVwID0gaXRlcmF0b3IubmV4dCgpKSwgc3RlcC5kb25lICE9PSB0cnVlKSkge1xuICAgICAgbm9kZURhdGEgPSBzdGVwLnZhbHVlO1xuXG4gICAgICBpZiAoIWNhbGxiYWNrKG5vZGVEYXRhLmtleSwgbm9kZURhdGEuYXR0cmlidXRlcykpIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgZmlsdGVyaW5nIG5vZGVzLlxuICAgKlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gIGNhbGxiYWNrIC0gQ2FsbGJhY2sgKGtleSwgYXR0cmlidXRlcykuXG4gICAqL1xuICBmaWx0ZXJOb2RlcyhjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdHcmFwaC5maWx0ZXJOb2RlczogZXhwZWN0aW5nIGEgY2FsbGJhY2suJ1xuICAgICAgKTtcblxuICAgIGNvbnN0IGl0ZXJhdG9yID0gdGhpcy5fbm9kZXMudmFsdWVzKCk7XG5cbiAgICBsZXQgc3RlcCwgbm9kZURhdGE7XG5cbiAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgIHdoaWxlICgoKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLCBzdGVwLmRvbmUgIT09IHRydWUpKSB7XG4gICAgICBub2RlRGF0YSA9IHN0ZXAudmFsdWU7XG5cbiAgICAgIGlmIChjYWxsYmFjayhub2RlRGF0YS5rZXksIG5vZGVEYXRhLmF0dHJpYnV0ZXMpKVxuICAgICAgICByZXN1bHQucHVzaChub2RlRGF0YS5rZXkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJlZHVjaW5nIG5vZGVzLlxuICAgKlxuICAgKiBAcGFyYW0gIHtmdW5jdGlvbn0gIGNhbGxiYWNrIC0gQ2FsbGJhY2sgKGFjY3VtdWxhdG9yLCBrZXksIGF0dHJpYnV0ZXMpLlxuICAgKi9cbiAgcmVkdWNlTm9kZXMoY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSkge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdHcmFwaC5yZWR1Y2VOb2RlczogZXhwZWN0aW5nIGEgY2FsbGJhY2suJ1xuICAgICAgKTtcblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMilcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ0dyYXBoLnJlZHVjZU5vZGVzOiBtaXNzaW5nIGluaXRpYWwgdmFsdWUuIFlvdSBtdXN0IHByb3ZpZGUgaXQgYmVjYXVzZSB0aGUgY2FsbGJhY2sgdGFrZXMgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCBhbmQgd2UgY2Fubm90IGluZmVyIHRoZSBpbml0aWFsIHZhbHVlIGZyb20gdGhlIGZpcnN0IGl0ZXJhdGlvbiwgYXMgeW91IGNvdWxkIHdpdGggYSBzaW1wbGUgYXJyYXkuJ1xuICAgICAgKTtcblxuICAgIGxldCBhY2N1bXVsYXRvciA9IGluaXRpYWxWYWx1ZTtcblxuICAgIGNvbnN0IGl0ZXJhdG9yID0gdGhpcy5fbm9kZXMudmFsdWVzKCk7XG5cbiAgICBsZXQgc3RlcCwgbm9kZURhdGE7XG5cbiAgICB3aGlsZSAoKChzdGVwID0gaXRlcmF0b3IubmV4dCgpKSwgc3RlcC5kb25lICE9PSB0cnVlKSkge1xuICAgICAgbm9kZURhdGEgPSBzdGVwLnZhbHVlO1xuICAgICAgYWNjdW11bGF0b3IgPSBjYWxsYmFjayhhY2N1bXVsYXRvciwgbm9kZURhdGEua2V5LCBub2RlRGF0YS5hdHRyaWJ1dGVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyBhbiBpdGVyYXRvciBvdmVyIHRoZSBncmFwaCdzIG5vZGUgZW50cmllcy5cbiAgICpcbiAgICogQHJldHVybiB7SXRlcmF0b3J9XG4gICAqL1xuICBub2RlRW50cmllcygpIHtcbiAgICBjb25zdCBpdGVyYXRvciA9IHRoaXMuX25vZGVzLnZhbHVlcygpO1xuXG4gICAgcmV0dXJuIG5ldyBJdGVyYXRvcigoKSA9PiB7XG4gICAgICBjb25zdCBzdGVwID0gaXRlcmF0b3IubmV4dCgpO1xuXG4gICAgICBpZiAoc3RlcC5kb25lKSByZXR1cm4gc3RlcDtcblxuICAgICAgY29uc3QgZGF0YSA9IHN0ZXAudmFsdWU7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiB7bm9kZTogZGF0YS5rZXksIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlc30sXG4gICAgICAgIGRvbmU6IGZhbHNlXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIFNlcmlhbGl6YXRpb25cbiAgICoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqL1xuXG4gIC8qKlxuICAgKiBNZXRob2QgZXhwb3J0aW5nIHRoZSB0YXJnZXQgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtICB7YW55fSAgIG5vZGUgLSBUYXJnZXQgbm9kZS5cbiAgICogQHJldHVybiB7YXJyYXl9ICAgICAgLSBUaGUgc2VyaWFsaXplZCBub2RlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBXaWxsIHRocm93IGlmIHRoZSBub2RlIGlzIG5vdCBmb3VuZC5cbiAgICovXG4gIGV4cG9ydE5vZGUobm9kZSkge1xuICAgIG5vZGUgPSAnJyArIG5vZGU7XG5cbiAgICBjb25zdCBkYXRhID0gdGhpcy5fbm9kZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFkYXRhKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kR3JhcGhFcnJvcihcbiAgICAgICAgYEdyYXBoLmV4cG9ydE5vZGU6IGNvdWxkIG5vdCBmaW5kIHRoZSBcIiR7bm9kZX1cIiBub2RlIGluIHRoZSBncmFwaC5gXG4gICAgICApO1xuXG4gICAgcmV0dXJuIHNlcmlhbGl6ZU5vZGUobm9kZSwgZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGV4cG9ydGluZyB0aGUgdGFyZ2V0IGVkZ2UuXG4gICAqXG4gICAqIEBwYXJhbSAge2FueX0gICBlZGdlIC0gVGFyZ2V0IGVkZ2UuXG4gICAqIEByZXR1cm4ge2FycmF5fSAgICAgIC0gVGhlIHNlcmlhbGl6ZWQgZWRnZS5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IC0gV2lsbCB0aHJvdyBpZiB0aGUgZWRnZSBpcyBub3QgZm91bmQuXG4gICAqL1xuICBleHBvcnRFZGdlKGVkZ2UpIHtcbiAgICBlZGdlID0gJycgKyBlZGdlO1xuXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuX2VkZ2VzLmdldChlZGdlKTtcblxuICAgIGlmICghZGF0YSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEdyYXBoRXJyb3IoXG4gICAgICAgIGBHcmFwaC5leHBvcnRFZGdlOiBjb3VsZCBub3QgZmluZCB0aGUgXCIke2VkZ2V9XCIgZWRnZSBpbiB0aGUgZ3JhcGguYFxuICAgICAgKTtcblxuICAgIHJldHVybiBzZXJpYWxpemVFZGdlKGVkZ2UsIGRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIHRvIGV4cG9ydCB0aGUgd2hvbGUgZ3JhcGguXG4gICAqXG4gICAqIEByZXR1cm4ge29iamVjdH0gLSBUaGUgc2VyaWFsaXplZCBncmFwaC5cbiAgICovXG4gIGV4cG9ydCgpIHtcbiAgICBjb25zdCBub2RlcyA9IG5ldyBBcnJheSh0aGlzLl9ub2Rlcy5zaXplKTtcblxuICAgIGxldCBpID0gMDtcblxuICAgIHRoaXMuX25vZGVzLmZvckVhY2goKGRhdGEsIGtleSkgPT4ge1xuICAgICAgbm9kZXNbaSsrXSA9IHNlcmlhbGl6ZU5vZGUoa2V5LCBkYXRhKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGVkZ2VzID0gbmV3IEFycmF5KHRoaXMuX2VkZ2VzLnNpemUpO1xuXG4gICAgaSA9IDA7XG5cbiAgICB0aGlzLl9lZGdlcy5mb3JFYWNoKChkYXRhLCBrZXkpID0+IHtcbiAgICAgIGVkZ2VzW2krK10gPSBzZXJpYWxpemVFZGdlKGtleSwgZGF0YSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXR0cmlidXRlczogdGhpcy5nZXRBdHRyaWJ1dGVzKCksXG4gICAgICBub2RlcyxcbiAgICAgIGVkZ2VzLFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgIG11bHRpOiB0aGlzLm11bHRpLFxuICAgICAgICBhbGxvd1NlbGZMb29wczogdGhpcy5hbGxvd1NlbGZMb29wc1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgdG8gaW1wb3J0IGEgc2VyaWFsaXplZCBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0gIHtvYmplY3R9IGRhdGEgICAtIFRoZSBzZXJpYWxpemVkIG5vZGUuXG4gICAqIEBwYXJhbSAge2Jvb2xlYW59IG1lcmdlIC0gV2hldGhlciB0byBtZXJnZSB0aGUgZ2l2ZW4gbm9kZS5cbiAgICogQHJldHVybiB7R3JhcGh9ICAgICAgICAgLSBSZXR1cm5zIGl0c2VsZiBmb3IgY2hhaW5pbmcuXG4gICAqL1xuICBpbXBvcnROb2RlKGRhdGEsIG1lcmdlID0gZmFsc2UpIHtcbiAgICAvLyBWYWxpZGF0aW5nXG4gICAgY29uc3QgZXJyb3IgPSB2YWxpZGF0ZVNlcmlhbGl6ZWROb2RlKGRhdGEpO1xuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgPT09ICdub3Qtb2JqZWN0JylcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAgICdHcmFwaC5pbXBvcnROb2RlOiBpbnZhbGlkIHNlcmlhbGl6ZWQgbm9kZS4gQSBzZXJpYWxpemVkIG5vZGUgc2hvdWxkIGJlIGEgcGxhaW4gb2JqZWN0IHdpdGggYXQgbGVhc3QgYSBcImtleVwiIHByb3BlcnR5LidcbiAgICAgICAgKTtcbiAgICAgIGlmIChlcnJvciA9PT0gJ25vLWtleScpXG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgICAnR3JhcGguaW1wb3J0Tm9kZTogbm8ga2V5IHByb3ZpZGVkLidcbiAgICAgICAgKTtcbiAgICAgIGlmIChlcnJvciA9PT0gJ2ludmFsaWQtYXR0cmlidXRlcycpXG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgICAnR3JhcGguaW1wb3J0Tm9kZTogaW52YWxpZCBhdHRyaWJ1dGVzLiBBdHRyaWJ1dGVzIHNob3VsZCBiZSBhIHBsYWluIG9iamVjdCwgbnVsbCBvciBvbWl0dGVkLidcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBBZGRpbmcgdGhlIG5vZGVcbiAgICBjb25zdCB7a2V5LCBhdHRyaWJ1dGVzID0ge319ID0gZGF0YTtcblxuICAgIGlmIChtZXJnZSkgdGhpcy5tZXJnZU5vZGUoa2V5LCBhdHRyaWJ1dGVzKTtcbiAgICBlbHNlIHRoaXMuYWRkTm9kZShrZXksIGF0dHJpYnV0ZXMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgdG8gaW1wb3J0IGEgc2VyaWFsaXplZCBlZGdlLlxuICAgKlxuICAgKiBAcGFyYW0gIHtvYmplY3R9ICBkYXRhICAtIFRoZSBzZXJpYWxpemVkIGVkZ2UuXG4gICAqIEBwYXJhbSAge2Jvb2xlYW59IG1lcmdlIC0gV2hldGhlciB0byBtZXJnZSB0aGUgZ2l2ZW4gZWRnZS5cbiAgICogQHJldHVybiB7R3JhcGh9ICAgICAgICAgLSBSZXR1cm5zIGl0c2VsZiBmb3IgY2hhaW5pbmcuXG4gICAqL1xuICBpbXBvcnRFZGdlKGRhdGEsIG1lcmdlID0gZmFsc2UpIHtcbiAgICAvLyBWYWxpZGF0aW5nXG4gICAgY29uc3QgZXJyb3IgPSB2YWxpZGF0ZVNlcmlhbGl6ZWRFZGdlKGRhdGEpO1xuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgPT09ICdub3Qtb2JqZWN0JylcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAgICdHcmFwaC5pbXBvcnRFZGdlOiBpbnZhbGlkIHNlcmlhbGl6ZWQgZWRnZS4gQSBzZXJpYWxpemVkIGVkZ2Ugc2hvdWxkIGJlIGEgcGxhaW4gb2JqZWN0IHdpdGggYXQgbGVhc3QgYSBcInNvdXJjZVwiICYgXCJ0YXJnZXRcIiBwcm9wZXJ0eS4nXG4gICAgICAgICk7XG4gICAgICBpZiAoZXJyb3IgPT09ICduby1zb3VyY2UnKVxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICAgJ0dyYXBoLmltcG9ydEVkZ2U6IG1pc3Npbmcgc291Y2UuJ1xuICAgICAgICApO1xuICAgICAgaWYgKGVycm9yID09PSAnbm8tdGFyZ2V0JylcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAgICdHcmFwaC5pbXBvcnRFZGdlOiBtaXNzaW5nIHRhcmdldC4nXG4gICAgICAgICk7XG4gICAgICBpZiAoZXJyb3IgPT09ICdpbnZhbGlkLWF0dHJpYnV0ZXMnKVxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICAgJ0dyYXBoLmltcG9ydEVkZ2U6IGludmFsaWQgYXR0cmlidXRlcy4gQXR0cmlidXRlcyBzaG91bGQgYmUgYSBwbGFpbiBvYmplY3QsIG51bGwgb3Igb21pdHRlZC4nXG4gICAgICAgICk7XG4gICAgICBpZiAoZXJyb3IgPT09ICdpbnZhbGlkLXVuZGlyZWN0ZWQnKVxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICAgJ0dyYXBoLmltcG9ydEVkZ2U6IGludmFsaWQgdW5kaXJlY3RlZC4gVW5kaXJlY3RlZCBzaG91bGQgYmUgYm9vbGVhbiBvciBvbWl0dGVkLidcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBBZGRpbmcgdGhlIGVkZ2VcbiAgICBjb25zdCB7c291cmNlLCB0YXJnZXQsIGF0dHJpYnV0ZXMgPSB7fSwgdW5kaXJlY3RlZCA9IGZhbHNlfSA9IGRhdGE7XG5cbiAgICBsZXQgbWV0aG9kO1xuXG4gICAgaWYgKCdrZXknIGluIGRhdGEpIHtcbiAgICAgIG1ldGhvZCA9IG1lcmdlXG4gICAgICAgID8gdW5kaXJlY3RlZFxuICAgICAgICAgID8gdGhpcy5tZXJnZVVuZGlyZWN0ZWRFZGdlV2l0aEtleVxuICAgICAgICAgIDogdGhpcy5tZXJnZURpcmVjdGVkRWRnZVdpdGhLZXlcbiAgICAgICAgOiB1bmRpcmVjdGVkXG4gICAgICAgID8gdGhpcy5hZGRVbmRpcmVjdGVkRWRnZVdpdGhLZXlcbiAgICAgICAgOiB0aGlzLmFkZERpcmVjdGVkRWRnZVdpdGhLZXk7XG5cbiAgICAgIG1ldGhvZC5jYWxsKHRoaXMsIGRhdGEua2V5LCBzb3VyY2UsIHRhcmdldCwgYXR0cmlidXRlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1ldGhvZCA9IG1lcmdlXG4gICAgICAgID8gdW5kaXJlY3RlZFxuICAgICAgICAgID8gdGhpcy5tZXJnZVVuZGlyZWN0ZWRFZGdlXG4gICAgICAgICAgOiB0aGlzLm1lcmdlRGlyZWN0ZWRFZGdlXG4gICAgICAgIDogdW5kaXJlY3RlZFxuICAgICAgICA/IHRoaXMuYWRkVW5kaXJlY3RlZEVkZ2VcbiAgICAgICAgOiB0aGlzLmFkZERpcmVjdGVkRWRnZTtcblxuICAgICAgbWV0aG9kLmNhbGwodGhpcywgc291cmNlLCB0YXJnZXQsIGF0dHJpYnV0ZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIHRvIGltcG9ydCBhIHNlcmlhbGl6ZWQgZ3JhcGguXG4gICAqXG4gICAqIEBwYXJhbSAge29iamVjdHxHcmFwaH0gZGF0YSAgLSBUaGUgc2VyaWFsaXplZCBncmFwaC5cbiAgICogQHBhcmFtICB7Ym9vbGVhbn0gICAgICBtZXJnZSAtIFdoZXRoZXIgdG8gbWVyZ2UgZGF0YS5cbiAgICogQHJldHVybiB7R3JhcGh9ICAgICAgICAgICAgICAtIFJldHVybnMgaXRzZWxmIGZvciBjaGFpbmluZy5cbiAgICovXG4gIGltcG9ydChkYXRhLCBtZXJnZSA9IGZhbHNlKSB7XG4gICAgLy8gSW1wb3J0aW5nIGEgR3JhcGggaW5zdGFuY2VcbiAgICBpZiAoaXNHcmFwaChkYXRhKSkge1xuICAgICAgdGhpcy5pbXBvcnQoZGF0YS5leHBvcnQoKSwgbWVyZ2UpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gSW1wb3J0aW5nIGEgc2VyaWFsaXplZCBncmFwaFxuICAgIGlmICghaXNQbGFpbk9iamVjdChkYXRhKSlcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ0dyYXBoLmltcG9ydDogaW52YWxpZCBhcmd1bWVudC4gRXhwZWN0aW5nIGEgc2VyaWFsaXplZCBncmFwaCBvciwgYWx0ZXJuYXRpdmVseSwgYSBHcmFwaCBpbnN0YW5jZS4nXG4gICAgICApO1xuXG4gICAgaWYgKGRhdGEuYXR0cmlidXRlcykge1xuICAgICAgaWYgKCFpc1BsYWluT2JqZWN0KGRhdGEuYXR0cmlidXRlcykpXG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgICAnR3JhcGguaW1wb3J0OiBpbnZhbGlkIGF0dHJpYnV0ZXMuIEV4cGVjdGluZyBhIHBsYWluIG9iamVjdC4nXG4gICAgICAgICk7XG5cbiAgICAgIGlmIChtZXJnZSkgdGhpcy5tZXJnZUF0dHJpYnV0ZXMoZGF0YS5hdHRyaWJ1dGVzKTtcbiAgICAgIGVsc2UgdGhpcy5yZXBsYWNlQXR0cmlidXRlcyhkYXRhLmF0dHJpYnV0ZXMpO1xuICAgIH1cblxuICAgIGxldCBpLCBsLCBsaXN0O1xuXG4gICAgaWYgKGRhdGEubm9kZXMpIHtcbiAgICAgIGxpc3QgPSBkYXRhLm5vZGVzO1xuXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkobGlzdCkpXG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgICAnR3JhcGguaW1wb3J0OiBpbnZhbGlkIG5vZGVzLiBFeHBlY3RpbmcgYW4gYXJyYXkuJ1xuICAgICAgICApO1xuXG4gICAgICBmb3IgKGkgPSAwLCBsID0gbGlzdC5sZW5ndGg7IGkgPCBsOyBpKyspIHRoaXMuaW1wb3J0Tm9kZShsaXN0W2ldLCBtZXJnZSk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuZWRnZXMpIHtcbiAgICAgIGxpc3QgPSBkYXRhLmVkZ2VzO1xuXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkobGlzdCkpXG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgICAnR3JhcGguaW1wb3J0OiBpbnZhbGlkIGVkZ2VzLiBFeHBlY3RpbmcgYW4gYXJyYXkuJ1xuICAgICAgICApO1xuXG4gICAgICBmb3IgKGkgPSAwLCBsID0gbGlzdC5sZW5ndGg7IGkgPCBsOyBpKyspIHRoaXMuaW1wb3J0RWRnZShsaXN0W2ldLCBtZXJnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogVXRpbHNcbiAgICoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqL1xuXG4gIC8qKlxuICAgKiBNZXRob2QgcmV0dXJuaW5nIGEgbnVsbCBjb3B5IG9mIHRoZSBncmFwaCwgaS5lLiBhIGdyYXBoIHdpdGhvdXQgbm9kZXNcbiAgICogJiBlZGdlcyBidXQgd2l0aCB0aGUgZXhhY3Qgc2FtZSBvcHRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gIHtvYmplY3R9IG9wdGlvbnMgLSBPcHRpb25zIHRvIG1lcmdlIHdpdGggdGhlIGN1cnJlbnQgb25lcy5cbiAgICogQHJldHVybiB7R3JhcGh9ICAgICAgICAgIC0gVGhlIG51bGwgY29weS5cbiAgICovXG4gIG51bGxDb3B5KG9wdGlvbnMpIHtcbiAgICBjb25zdCBncmFwaCA9IG5ldyBHcmFwaChhc3NpZ24oe30sIHRoaXMuX29wdGlvbnMsIG9wdGlvbnMpKTtcbiAgICBncmFwaC5yZXBsYWNlQXR0cmlidXRlcyhhc3NpZ24oe30sIHRoaXMuZ2V0QXR0cmlidXRlcygpKSk7XG4gICAgcmV0dXJuIGdyYXBoO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCByZXR1cm5pbmcgYW4gZW1wdHkgY29weSBvZiB0aGUgZ3JhcGgsIGkuZS4gYSBncmFwaCB3aXRob3V0IGVkZ2VzIGJ1dFxuICAgKiB3aXRoIHRoZSBleGFjdCBzYW1lIG9wdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSAge29iamVjdH0gb3B0aW9ucyAtIE9wdGlvbnMgdG8gbWVyZ2Ugd2l0aCB0aGUgY3VycmVudCBvbmVzLlxuICAgKiBAcmV0dXJuIHtHcmFwaH0gICAgICAgICAgLSBUaGUgZW1wdHkgY29weS5cbiAgICovXG4gIGVtcHR5Q29weShvcHRpb25zKSB7XG4gICAgY29uc3QgZ3JhcGggPSB0aGlzLm51bGxDb3B5KG9wdGlvbnMpO1xuXG4gICAgdGhpcy5fbm9kZXMuZm9yRWFjaCgobm9kZURhdGEsIGtleSkgPT4ge1xuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IGFzc2lnbih7fSwgbm9kZURhdGEuYXR0cmlidXRlcyk7XG5cbiAgICAgIC8vIE5PVEU6IG5vIG5lZWQgdG8gZW1pdCBldmVudHMgc2luY2UgdXNlciBjYW5ub3QgYWNjZXNzIHRoZSBpbnN0YW5jZSB5ZXRcbiAgICAgIG5vZGVEYXRhID0gbmV3IGdyYXBoLk5vZGVEYXRhQ2xhc3Moa2V5LCBhdHRyaWJ1dGVzKTtcbiAgICAgIGdyYXBoLl9ub2Rlcy5zZXQoa2V5LCBub2RlRGF0YSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ3JhcGg7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyBhbiBleGFjdCBjb3B5IG9mIHRoZSBncmFwaC5cbiAgICpcbiAgICogQHJldHVybiB7R3JhcGh9IC0gVGhlIGNvcHkuXG4gICAqL1xuICBjb3B5KCkge1xuICAgIGNvbnN0IGdyYXBoID0gdGhpcy5lbXB0eUNvcHkoKTtcblxuICAgIGNvbnN0IGl0ZXJhdG9yID0gdGhpcy5fZWRnZXMudmFsdWVzKCk7XG5cbiAgICBsZXQgc3RlcCwgZWRnZURhdGE7XG5cbiAgICB3aGlsZSAoKChzdGVwID0gaXRlcmF0b3IubmV4dCgpKSwgc3RlcC5kb25lICE9PSB0cnVlKSkge1xuICAgICAgZWRnZURhdGEgPSBzdGVwLnZhbHVlO1xuXG4gICAgICAvLyBOT1RFOiBubyBuZWVkIHRvIGVtaXQgZXZlbnRzIHNpbmNlIHVzZXIgY2Fubm90IGFjY2VzcyB0aGUgaW5zdGFuY2UgeWV0XG4gICAgICBhZGRFZGdlKFxuICAgICAgICBncmFwaCxcbiAgICAgICAgJ2NvcHknLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgZWRnZURhdGEudW5kaXJlY3RlZCxcbiAgICAgICAgZWRnZURhdGEua2V5LFxuICAgICAgICBlZGdlRGF0YS5zb3VyY2Uua2V5LFxuICAgICAgICBlZGdlRGF0YS50YXJnZXQua2V5LFxuICAgICAgICBhc3NpZ24oe30sIGVkZ2VEYXRhLmF0dHJpYnV0ZXMpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBncmFwaDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdXBncmFkaW5nIHRoZSBncmFwaCB0byBhIG1peGVkIG9uZS5cbiAgICpcbiAgICogQHJldHVybiB7R3JhcGh9IC0gVGhlIGNvcHkuXG4gICAqL1xuICB1cGdyYWRlVG9NaXhlZCgpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSAnbWl4ZWQnKSByZXR1cm4gdGhpcztcblxuICAgIC8vIFVwZ3JhZGluZyBub2RlIGRhdGE6XG4gICAgLy8gTk9URTogbWF5YmUgdGhpcyBjb3VsZCBsZWFkIHRvIHNvbWUgZGUtb3B0aW1pemF0aW9uIGJ5IHVzdWFsXG4gICAgLy8gSmF2YVNjcmlwdCBlbmdpbmVzIGJ1dCBJIGNhbm5vdCBiZSBzdXJlIG9mIGl0LiBBbm90aGVyIHNvbHV0aW9uXG4gICAgLy8gd291bGQgYmUgdG8gcmVpbnN0YW50aWF0ZSB0aGUgY2xhc3NlcyBidXQgdGhpcyBzdXJlbHkgaGFzIGEgcGVyZm9ybWFuY2VcbiAgICAvLyBhbmQgbWVtb3J5IGltcGFjdC5cbiAgICB0aGlzLl9ub2Rlcy5mb3JFYWNoKGRhdGEgPT4gZGF0YS51cGdyYWRlVG9NaXhlZCgpKTtcblxuICAgIC8vIE11dGF0aW5nIHRoZSBvcHRpb25zICYgdGhlIGluc3RhbmNlXG4gICAgdGhpcy5fb3B0aW9ucy50eXBlID0gJ21peGVkJztcbiAgICByZWFkT25seVByb3BlcnR5KHRoaXMsICd0eXBlJywgdGhpcy5fb3B0aW9ucy50eXBlKTtcbiAgICBwcml2YXRlUHJvcGVydHkodGhpcywgJ05vZGVEYXRhQ2xhc3MnLCBNaXhlZE5vZGVEYXRhKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1cGdyYWRpbmcgdGhlIGdyYXBoIHRvIGEgbXVsdGkgb25lLlxuICAgKlxuICAgKiBAcmV0dXJuIHtHcmFwaH0gLSBUaGUgY29weS5cbiAgICovXG4gIHVwZ3JhZGVUb011bHRpKCkge1xuICAgIGlmICh0aGlzLm11bHRpKSByZXR1cm4gdGhpcztcblxuICAgIC8vIE11dGF0aW5nIHRoZSBvcHRpb25zICYgdGhlIGluc3RhbmNlXG4gICAgdGhpcy5fb3B0aW9ucy5tdWx0aSA9IHRydWU7XG4gICAgcmVhZE9ubHlQcm9wZXJ0eSh0aGlzLCAnbXVsdGknLCB0cnVlKTtcblxuICAgIC8vIFVwZ3JhZGluZyBpbmRpY2VzXG4gICAgdXBncmFkZVN0cnVjdHVyZUluZGV4VG9NdWx0aSh0aGlzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEtub3duIG1ldGhvZHNcbiAgICoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqL1xuXG4gIC8qKlxuICAgKiBNZXRob2QgdXNlZCBieSBKYXZhU2NyaXB0IHRvIHBlcmZvcm0gSlNPTiBzZXJpYWxpemF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IC0gVGhlIHNlcmlhbGl6ZWQgZ3JhcGguXG4gICAqL1xuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMuZXhwb3J0KCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHJldHVybmluZyBbb2JqZWN0IEdyYXBoXS5cbiAgICovXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiAnW29iamVjdCBHcmFwaF0nO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIGludGVybmFsbHkgYnkgbm9kZSdzIGNvbnNvbGUgdG8gZGlzcGxheSBhIGN1c3RvbSBvYmplY3QuXG4gICAqXG4gICAqIEByZXR1cm4ge29iamVjdH0gLSBGb3JtYXR0ZWQgb2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBncmFwaC5cbiAgICovXG4gIGluc3BlY3QoKSB7XG4gICAgY29uc3Qgbm9kZXMgPSB7fTtcbiAgICB0aGlzLl9ub2Rlcy5mb3JFYWNoKChkYXRhLCBrZXkpID0+IHtcbiAgICAgIG5vZGVzW2tleV0gPSBkYXRhLmF0dHJpYnV0ZXM7XG4gICAgfSk7XG5cbiAgICBjb25zdCBlZGdlcyA9IHt9LFxuICAgICAgbXVsdGlJbmRleCA9IHt9O1xuXG4gICAgdGhpcy5fZWRnZXMuZm9yRWFjaCgoZGF0YSwga2V5KSA9PiB7XG4gICAgICBjb25zdCBkaXJlY3Rpb24gPSBkYXRhLnVuZGlyZWN0ZWQgPyAnLS0nIDogJy0+JztcblxuICAgICAgbGV0IGxhYmVsID0gJyc7XG5cbiAgICAgIGxldCBzb3VyY2UgPSBkYXRhLnNvdXJjZS5rZXk7XG4gICAgICBsZXQgdGFyZ2V0ID0gZGF0YS50YXJnZXQua2V5O1xuICAgICAgbGV0IHRtcDtcblxuICAgICAgaWYgKGRhdGEudW5kaXJlY3RlZCAmJiBzb3VyY2UgPiB0YXJnZXQpIHtcbiAgICAgICAgdG1wID0gc291cmNlO1xuICAgICAgICBzb3VyY2UgPSB0YXJnZXQ7XG4gICAgICAgIHRhcmdldCA9IHRtcDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGVzYyA9IGAoJHtzb3VyY2V9KSR7ZGlyZWN0aW9ufSgke3RhcmdldH0pYDtcblxuICAgICAgaWYgKCFrZXkuc3RhcnRzV2l0aCgnZ2VpZF8nKSkge1xuICAgICAgICBsYWJlbCArPSBgWyR7a2V5fV06IGA7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBtdWx0aUluZGV4W2Rlc2NdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIG11bHRpSW5kZXhbZGVzY10gPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG11bHRpSW5kZXhbZGVzY10rKztcbiAgICAgICAgfVxuXG4gICAgICAgIGxhYmVsICs9IGAke211bHRpSW5kZXhbZGVzY119LiBgO1xuICAgICAgfVxuXG4gICAgICBsYWJlbCArPSBkZXNjO1xuXG4gICAgICBlZGdlc1tsYWJlbF0gPSBkYXRhLmF0dHJpYnV0ZXM7XG4gICAgfSk7XG5cbiAgICBjb25zdCBkdW1teSA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBrIGluIHRoaXMpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5oYXNPd25Qcm9wZXJ0eShrKSAmJlxuICAgICAgICAhRU1JVFRFUl9QUk9QUy5oYXMoaykgJiZcbiAgICAgICAgdHlwZW9mIHRoaXNba10gIT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgdHlwZW9mIGsgIT09ICdzeW1ib2wnXG4gICAgICApXG4gICAgICAgIGR1bW15W2tdID0gdGhpc1trXTtcbiAgICB9XG5cbiAgICBkdW1teS5hdHRyaWJ1dGVzID0gdGhpcy5fYXR0cmlidXRlcztcbiAgICBkdW1teS5ub2RlcyA9IG5vZGVzO1xuICAgIGR1bW15LmVkZ2VzID0gZWRnZXM7XG5cbiAgICBwcml2YXRlUHJvcGVydHkoZHVtbXksICdjb25zdHJ1Y3RvcicsIHRoaXMuY29uc3RydWN0b3IpO1xuXG4gICAgcmV0dXJuIGR1bW15O1xuICB9XG59XG5cbi8qKlxuICogQXR0YWNoaW5nIG1ldGhvZHMgdG8gdGhlIHByb3RvdHlwZS5cbiAqXG4gKiBIZXJlLCB3ZSBhcmUgYXR0YWNoaW5nIGEgd2lkZSB2YXJpZXR5IG9mIG1ldGhvZHMgdG8gdGhlIEdyYXBoIGNsYXNzJ1xuICogcHJvdG90eXBlIHdoZW4gdGhvc2UgYXJlIHZlcnkgbnVtZXJvdXMgYW5kIHdoZW4gdGhlaXIgY3JlYXRpb24gaXNcbiAqIGFic3RyYWN0ZWQuXG4gKi9cblxuLyoqXG4gKiBBdHRhY2hpbmcgY3VzdG9tIGluc3BlY3QgbWV0aG9kIGZvciBub2RlID49IDEwLlxuICovXG5pZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcpXG4gIEdyYXBoLnByb3RvdHlwZVtTeW1ib2wuZm9yKCdub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbScpXSA9XG4gICAgR3JhcGgucHJvdG90eXBlLmluc3BlY3Q7XG5cbi8qKlxuICogUmVsYXRlZCB0byBlZGdlIGFkZGl0aW9uLlxuICovXG5FREdFX0FERF9NRVRIT0RTLmZvckVhY2gobWV0aG9kID0+IHtcbiAgWydhZGQnLCAnbWVyZ2UnLCAndXBkYXRlJ10uZm9yRWFjaCh2ZXJiID0+IHtcbiAgICBjb25zdCBuYW1lID0gbWV0aG9kLm5hbWUodmVyYik7XG4gICAgY29uc3QgZm4gPSB2ZXJiID09PSAnYWRkJyA/IGFkZEVkZ2UgOiBtZXJnZUVkZ2U7XG5cbiAgICBpZiAobWV0aG9kLmdlbmVyYXRlS2V5KSB7XG4gICAgICBHcmFwaC5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoc291cmNlLCB0YXJnZXQsIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgcmV0dXJuIGZuKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICB0cnVlLFxuICAgICAgICAgIChtZXRob2QudHlwZSB8fCB0aGlzLnR5cGUpID09PSAndW5kaXJlY3RlZCcsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgdmVyYiA9PT0gJ3VwZGF0ZSdcbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIEdyYXBoLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uIChlZGdlLCBzb3VyY2UsIHRhcmdldCwgYXR0cmlidXRlcykge1xuICAgICAgICByZXR1cm4gZm4oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIChtZXRob2QudHlwZSB8fCB0aGlzLnR5cGUpID09PSAndW5kaXJlY3RlZCcsXG4gICAgICAgICAgZWRnZSxcbiAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgdmVyYiA9PT0gJ3VwZGF0ZSdcbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfVxuICB9KTtcbn0pO1xuXG4vKipcbiAqIEF0dHJpYnV0ZXMtcmVsYXRlZC5cbiAqL1xuYXR0YWNoTm9kZUF0dHJpYnV0ZXNNZXRob2RzKEdyYXBoKTtcbmF0dGFjaEVkZ2VBdHRyaWJ1dGVzTWV0aG9kcyhHcmFwaCk7XG5cbi8qKlxuICogRWRnZSBpdGVyYXRpb24tcmVsYXRlZC5cbiAqL1xuYXR0YWNoRWRnZUl0ZXJhdGlvbk1ldGhvZHMoR3JhcGgpO1xuXG4vKipcbiAqIE5laWdoYm9yIGl0ZXJhdGlvbi1yZWxhdGVkLlxuICovXG5hdHRhY2hOZWlnaGJvckl0ZXJhdGlvbk1ldGhvZHMoR3JhcGgpO1xuIiwgIi8qKlxuICogR3JhcGhvbG9neSBIZWxwZXIgQ2xhc3Nlc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqXG4gKiBCdWlsZGluZyBzb21lIGhpZ2hlci1vcmRlciBjbGFzc2VzIGluc3RhbnRpYXRpbmcgdGhlIGdyYXBoIHdpdGhcbiAqIHByZWRlZmluaXRlIG9wdGlvbnMuXG4gKi9cbmltcG9ydCB7YXNzaWdufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBHcmFwaCBmcm9tICcuL2dyYXBoJztcblxuaW1wb3J0IHtcbiAgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IsXG4gIE5vdEZvdW5kR3JhcGhFcnJvcixcbiAgVXNhZ2VHcmFwaEVycm9yXG59IGZyb20gJy4vZXJyb3JzJztcblxuLyoqXG4gKiBBbHRlcm5hdGl2ZSBjb25zdHJ1Y3RvcnMuXG4gKi9cbmNsYXNzIERpcmVjdGVkR3JhcGggZXh0ZW5kcyBHcmFwaCB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICBjb25zdCBmaW5hbE9wdGlvbnMgPSBhc3NpZ24oe3R5cGU6ICdkaXJlY3RlZCd9LCBvcHRpb25zKTtcblxuICAgIGlmICgnbXVsdGknIGluIGZpbmFsT3B0aW9ucyAmJiBmaW5hbE9wdGlvbnMubXVsdGkgIT09IGZhbHNlKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAnRGlyZWN0ZWRHcmFwaC5mcm9tOiBpbmNvbnNpc3RlbnQgaW5kaWNhdGlvbiB0aGF0IHRoZSBncmFwaCBzaG91bGQgYmUgbXVsdGkgaW4gZ2l2ZW4gb3B0aW9ucyEnXG4gICAgICApO1xuXG4gICAgaWYgKGZpbmFsT3B0aW9ucy50eXBlICE9PSAnZGlyZWN0ZWQnKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAnRGlyZWN0ZWRHcmFwaC5mcm9tOiBpbmNvbnNpc3RlbnQgXCInICtcbiAgICAgICAgICBmaW5hbE9wdGlvbnMudHlwZSArXG4gICAgICAgICAgJ1wiIHR5cGUgaW4gZ2l2ZW4gb3B0aW9ucyEnXG4gICAgICApO1xuXG4gICAgc3VwZXIoZmluYWxPcHRpb25zKTtcbiAgfVxufVxuY2xhc3MgVW5kaXJlY3RlZEdyYXBoIGV4dGVuZHMgR3JhcGgge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgY29uc3QgZmluYWxPcHRpb25zID0gYXNzaWduKHt0eXBlOiAndW5kaXJlY3RlZCd9LCBvcHRpb25zKTtcblxuICAgIGlmICgnbXVsdGknIGluIGZpbmFsT3B0aW9ucyAmJiBmaW5hbE9wdGlvbnMubXVsdGkgIT09IGZhbHNlKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAnVW5kaXJlY3RlZEdyYXBoLmZyb206IGluY29uc2lzdGVudCBpbmRpY2F0aW9uIHRoYXQgdGhlIGdyYXBoIHNob3VsZCBiZSBtdWx0aSBpbiBnaXZlbiBvcHRpb25zISdcbiAgICAgICk7XG5cbiAgICBpZiAoZmluYWxPcHRpb25zLnR5cGUgIT09ICd1bmRpcmVjdGVkJylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ1VuZGlyZWN0ZWRHcmFwaC5mcm9tOiBpbmNvbnNpc3RlbnQgXCInICtcbiAgICAgICAgICBmaW5hbE9wdGlvbnMudHlwZSArXG4gICAgICAgICAgJ1wiIHR5cGUgaW4gZ2l2ZW4gb3B0aW9ucyEnXG4gICAgICApO1xuXG4gICAgc3VwZXIoZmluYWxPcHRpb25zKTtcbiAgfVxufVxuY2xhc3MgTXVsdGlHcmFwaCBleHRlbmRzIEdyYXBoIHtcbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIGNvbnN0IGZpbmFsT3B0aW9ucyA9IGFzc2lnbih7bXVsdGk6IHRydWV9LCBvcHRpb25zKTtcblxuICAgIGlmICgnbXVsdGknIGluIGZpbmFsT3B0aW9ucyAmJiBmaW5hbE9wdGlvbnMubXVsdGkgIT09IHRydWUpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdNdWx0aUdyYXBoLmZyb206IGluY29uc2lzdGVudCBpbmRpY2F0aW9uIHRoYXQgdGhlIGdyYXBoIHNob3VsZCBiZSBzaW1wbGUgaW4gZ2l2ZW4gb3B0aW9ucyEnXG4gICAgICApO1xuXG4gICAgc3VwZXIoZmluYWxPcHRpb25zKTtcbiAgfVxufVxuY2xhc3MgTXVsdGlEaXJlY3RlZEdyYXBoIGV4dGVuZHMgR3JhcGgge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgY29uc3QgZmluYWxPcHRpb25zID0gYXNzaWduKHt0eXBlOiAnZGlyZWN0ZWQnLCBtdWx0aTogdHJ1ZX0sIG9wdGlvbnMpO1xuXG4gICAgaWYgKCdtdWx0aScgaW4gZmluYWxPcHRpb25zICYmIGZpbmFsT3B0aW9ucy5tdWx0aSAhPT0gdHJ1ZSlcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ011bHRpRGlyZWN0ZWRHcmFwaC5mcm9tOiBpbmNvbnNpc3RlbnQgaW5kaWNhdGlvbiB0aGF0IHRoZSBncmFwaCBzaG91bGQgYmUgc2ltcGxlIGluIGdpdmVuIG9wdGlvbnMhJ1xuICAgICAgKTtcblxuICAgIGlmIChmaW5hbE9wdGlvbnMudHlwZSAhPT0gJ2RpcmVjdGVkJylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvcihcbiAgICAgICAgJ011bHRpRGlyZWN0ZWRHcmFwaC5mcm9tOiBpbmNvbnNpc3RlbnQgXCInICtcbiAgICAgICAgICBmaW5hbE9wdGlvbnMudHlwZSArXG4gICAgICAgICAgJ1wiIHR5cGUgaW4gZ2l2ZW4gb3B0aW9ucyEnXG4gICAgICApO1xuXG4gICAgc3VwZXIoZmluYWxPcHRpb25zKTtcbiAgfVxufVxuY2xhc3MgTXVsdGlVbmRpcmVjdGVkR3JhcGggZXh0ZW5kcyBHcmFwaCB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICBjb25zdCBmaW5hbE9wdGlvbnMgPSBhc3NpZ24oe3R5cGU6ICd1bmRpcmVjdGVkJywgbXVsdGk6IHRydWV9LCBvcHRpb25zKTtcblxuICAgIGlmICgnbXVsdGknIGluIGZpbmFsT3B0aW9ucyAmJiBmaW5hbE9wdGlvbnMubXVsdGkgIT09IHRydWUpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50c0dyYXBoRXJyb3IoXG4gICAgICAgICdNdWx0aVVuZGlyZWN0ZWRHcmFwaC5mcm9tOiBpbmNvbnNpc3RlbnQgaW5kaWNhdGlvbiB0aGF0IHRoZSBncmFwaCBzaG91bGQgYmUgc2ltcGxlIGluIGdpdmVuIG9wdGlvbnMhJ1xuICAgICAgKTtcblxuICAgIGlmIChmaW5hbE9wdGlvbnMudHlwZSAhPT0gJ3VuZGlyZWN0ZWQnKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yKFxuICAgICAgICAnTXVsdGlVbmRpcmVjdGVkR3JhcGguZnJvbTogaW5jb25zaXN0ZW50IFwiJyArXG4gICAgICAgICAgZmluYWxPcHRpb25zLnR5cGUgK1xuICAgICAgICAgICdcIiB0eXBlIGluIGdpdmVuIG9wdGlvbnMhJ1xuICAgICAgKTtcblxuICAgIHN1cGVyKGZpbmFsT3B0aW9ucyk7XG4gIH1cbn1cblxuLyoqXG4gKiBBdHRhY2hpbmcgc3RhdGljICMuZnJvbSBtZXRob2QgdG8gZWFjaCBvZiB0aGUgY29uc3RydWN0b3JzLlxuICovXG5mdW5jdGlvbiBhdHRhY2hTdGF0aWNGcm9tTWV0aG9kKENsYXNzKSB7XG4gIC8qKlxuICAgKiBCdWlsZHMgYSBncmFwaCBmcm9tIHNlcmlhbGl6ZWQgZGF0YSBvciBhbm90aGVyIGdyYXBoJ3MgZGF0YS5cbiAgICpcbiAgICogQHBhcmFtICB7R3JhcGh8U2VyaWFsaXplZEdyYXBofSBkYXRhICAgICAgLSBIeWRyYXRhdGlvbiBkYXRhLlxuICAgKiBAcGFyYW0gIHtvYmplY3R9ICAgICAgICAgICAgICAgIFtvcHRpb25zXSAtIE9wdGlvbnMuXG4gICAqIEByZXR1cm4ge0NsYXNzfVxuICAgKi9cbiAgQ2xhc3MuZnJvbSA9IGZ1bmN0aW9uIChkYXRhLCBvcHRpb25zKSB7XG4gICAgLy8gTWVyZ2luZyBnaXZlbiBvcHRpb25zIHdpdGggc2VyaWFsaXplZCBvbmVzXG4gICAgY29uc3QgZmluYWxPcHRpb25zID0gYXNzaWduKHt9LCBkYXRhLm9wdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgQ2xhc3MoZmluYWxPcHRpb25zKTtcbiAgICBpbnN0YW5jZS5pbXBvcnQoZGF0YSk7XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG59XG5cbmF0dGFjaFN0YXRpY0Zyb21NZXRob2QoR3JhcGgpO1xuYXR0YWNoU3RhdGljRnJvbU1ldGhvZChEaXJlY3RlZEdyYXBoKTtcbmF0dGFjaFN0YXRpY0Zyb21NZXRob2QoVW5kaXJlY3RlZEdyYXBoKTtcbmF0dGFjaFN0YXRpY0Zyb21NZXRob2QoTXVsdGlHcmFwaCk7XG5hdHRhY2hTdGF0aWNGcm9tTWV0aG9kKE11bHRpRGlyZWN0ZWRHcmFwaCk7XG5hdHRhY2hTdGF0aWNGcm9tTWV0aG9kKE11bHRpVW5kaXJlY3RlZEdyYXBoKTtcblxuR3JhcGguR3JhcGggPSBHcmFwaDtcbkdyYXBoLkRpcmVjdGVkR3JhcGggPSBEaXJlY3RlZEdyYXBoO1xuR3JhcGguVW5kaXJlY3RlZEdyYXBoID0gVW5kaXJlY3RlZEdyYXBoO1xuR3JhcGguTXVsdGlHcmFwaCA9IE11bHRpR3JhcGg7XG5HcmFwaC5NdWx0aURpcmVjdGVkR3JhcGggPSBNdWx0aURpcmVjdGVkR3JhcGg7XG5HcmFwaC5NdWx0aVVuZGlyZWN0ZWRHcmFwaCA9IE11bHRpVW5kaXJlY3RlZEdyYXBoO1xuXG5HcmFwaC5JbnZhbGlkQXJndW1lbnRzR3JhcGhFcnJvciA9IEludmFsaWRBcmd1bWVudHNHcmFwaEVycm9yO1xuR3JhcGguTm90Rm91bmRHcmFwaEVycm9yID0gTm90Rm91bmRHcmFwaEVycm9yO1xuR3JhcGguVXNhZ2VHcmFwaEVycm9yID0gVXNhZ2VHcmFwaEVycm9yO1xuXG5leHBvcnQge1xuICBHcmFwaCxcbiAgRGlyZWN0ZWRHcmFwaCxcbiAgVW5kaXJlY3RlZEdyYXBoLFxuICBNdWx0aUdyYXBoLFxuICBNdWx0aURpcmVjdGVkR3JhcGgsXG4gIE11bHRpVW5kaXJlY3RlZEdyYXBoXG59O1xuIiwgIi8qKlxuICogR3JhcGhvbG9neSBpc0dyYXBoXG4gKiA9PT09PT09PT09PT09PT09PT09XG4gKlxuICogVmVyeSBzaW1wbGUgZnVuY3Rpb24gYWltaW5nIGF0IGVuc3VyaW5nIHRoZSBnaXZlbiB2YXJpYWJsZSBpcyBhXG4gKiBncmFwaG9sb2d5IGluc3RhbmNlLlxuICovXG5cbi8qKlxuICogQ2hlY2tpbmcgdGhlIHZhbHVlIGlzIGEgZ3JhcGhvbG9neSBpbnN0YW5jZS5cbiAqXG4gKiBAcGFyYW0gIHthbnl9ICAgICB2YWx1ZSAtIFRhcmdldCB2YWx1ZS5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNHcmFwaCh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHR5cGVvZiB2YWx1ZS5hZGRVbmRpcmVjdGVkRWRnZVdpdGhLZXkgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgdmFsdWUuZHJvcE5vZGUgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgdmFsdWUubXVsdGkgPT09ICdib29sZWFuJ1xuICApO1xufTtcbiIsICJleHBvcnRzLkFSUkFZX0JVRkZFUl9TVVBQT1JUID0gdHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJztcbmV4cG9ydHMuU1lNQk9MX1NVUFBPUlQgPSB0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJztcbiIsICIvKipcbiAqIE9ibGl0ZXJhdG9yIEZvckVhY2ggRnVuY3Rpb25cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKlxuICogSGVscGVyIGZ1bmN0aW9uIHVzZWQgdG8gZWFzaWx5IGl0ZXJhdGUgb3ZlciBtaXhlZCB2YWx1ZXMuXG4gKi9cbnZhciBzdXBwb3J0ID0gcmVxdWlyZSgnLi9zdXBwb3J0LmpzJyk7XG5cbnZhciBBUlJBWV9CVUZGRVJfU1VQUE9SVCA9IHN1cHBvcnQuQVJSQVlfQlVGRkVSX1NVUFBPUlQ7XG52YXIgU1lNQk9MX1NVUFBPUlQgPSBzdXBwb3J0LlNZTUJPTF9TVVBQT1JUO1xuXG4vKipcbiAqIEZ1bmN0aW9uIGFibGUgdG8gaXRlcmF0ZSBvdmVyIGFsbW9zdCBhbnkgaXRlcmFibGUgSlMgdmFsdWUuXG4gKlxuICogQHBhcmFtICB7YW55fSAgICAgIGl0ZXJhYmxlIC0gSXRlcmFibGUgdmFsdWUuXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBDYWxsYmFjayBmdW5jdGlvbi5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmb3JFYWNoKGl0ZXJhYmxlLCBjYWxsYmFjaykge1xuICB2YXIgaXRlcmF0b3IsIGssIGksIGwsIHM7XG5cbiAgaWYgKCFpdGVyYWJsZSkgdGhyb3cgbmV3IEVycm9yKCdvYmxpdGVyYXRvci9mb3JFYWNoOiBpbnZhbGlkIGl0ZXJhYmxlLicpO1xuXG4gIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdvYmxpdGVyYXRvci9mb3JFYWNoOiBleHBlY3RpbmcgYSBjYWxsYmFjay4nKTtcblxuICAvLyBUaGUgdGFyZ2V0IGlzIGFuIGFycmF5IG9yIGEgc3RyaW5nIG9yIGZ1bmN0aW9uIGFyZ3VtZW50c1xuICBpZiAoXG4gICAgQXJyYXkuaXNBcnJheShpdGVyYWJsZSkgfHxcbiAgICAoQVJSQVlfQlVGRkVSX1NVUFBPUlQgJiYgQXJyYXlCdWZmZXIuaXNWaWV3KGl0ZXJhYmxlKSkgfHxcbiAgICB0eXBlb2YgaXRlcmFibGUgPT09ICdzdHJpbmcnIHx8XG4gICAgaXRlcmFibGUudG9TdHJpbmcoKSA9PT0gJ1tvYmplY3QgQXJndW1lbnRzXSdcbiAgKSB7XG4gICAgZm9yIChpID0gMCwgbCA9IGl0ZXJhYmxlLmxlbmd0aDsgaSA8IGw7IGkrKykgY2FsbGJhY2soaXRlcmFibGVbaV0sIGkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIFRoZSB0YXJnZXQgaGFzIGEgIy5mb3JFYWNoIG1ldGhvZFxuICBpZiAodHlwZW9mIGl0ZXJhYmxlLmZvckVhY2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICBpdGVyYWJsZS5mb3JFYWNoKGNhbGxiYWNrKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBUaGUgdGFyZ2V0IGlzIGl0ZXJhYmxlXG4gIGlmIChcbiAgICBTWU1CT0xfU1VQUE9SVCAmJlxuICAgIFN5bWJvbC5pdGVyYXRvciBpbiBpdGVyYWJsZSAmJlxuICAgIHR5cGVvZiBpdGVyYWJsZS5uZXh0ICE9PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIGl0ZXJhYmxlID0gaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICB9XG5cbiAgLy8gVGhlIHRhcmdldCBpcyBhbiBpdGVyYXRvclxuICBpZiAodHlwZW9mIGl0ZXJhYmxlLm5leHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBpdGVyYXRvciA9IGl0ZXJhYmxlO1xuICAgIGkgPSAwO1xuXG4gICAgd2hpbGUgKCgocyA9IGl0ZXJhdG9yLm5leHQoKSksIHMuZG9uZSAhPT0gdHJ1ZSkpIHtcbiAgICAgIGNhbGxiYWNrKHMudmFsdWUsIGkpO1xuICAgICAgaSsrO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIFRoZSB0YXJnZXQgaXMgYSBwbGFpbiBvYmplY3RcbiAgZm9yIChrIGluIGl0ZXJhYmxlKSB7XG4gICAgaWYgKGl0ZXJhYmxlLmhhc093blByb3BlcnR5KGspKSB7XG4gICAgICBjYWxsYmFjayhpdGVyYWJsZVtrXSwgayk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuO1xufTtcbiIsICIvKipcbiAqIE1uZW1vbmlzdCBUeXBlZCBBcnJheSBIZWxwZXJzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqXG4gKiBNaXNjZWxsYW5lb3VzIGhlbHBlcnMgcmVsYXRlZCB0byB0eXBlZCBhcnJheXMuXG4gKi9cblxuLyoqXG4gKiBXaGVuIHVzaW5nIGFuIHVuc2lnbmVkIGludGVnZXIgYXJyYXkgdG8gc3RvcmUgcG9pbnRlcnMsIG9uZSBtaWdodCB3YW50IHRvXG4gKiBjaG9vc2UgdGhlIG9wdGltYWwgd29yZCBzaXplIGluIHJlZ2FyZHMgdG8gdGhlIGFjdHVhbCBudW1iZXJzIG9mIHBvaW50ZXJzXG4gKiB0byBzdG9yZS5cbiAqXG4gKiBUaGlzIGhlbHBlcnMgZG9lcyBqdXN0IHRoYXQuXG4gKlxuICogQHBhcmFtICB7bnVtYmVyfSBzaXplIC0gRXhwZWN0ZWQgc2l6ZSBvZiB0aGUgYXJyYXkgdG8gbWFwLlxuICogQHJldHVybiB7VHlwZWRBcnJheX1cbiAqL1xudmFyIE1BWF84QklUX0lOVEVHRVIgPSBNYXRoLnBvdygyLCA4KSAtIDEsXG4gICAgTUFYXzE2QklUX0lOVEVHRVIgPSBNYXRoLnBvdygyLCAxNikgLSAxLFxuICAgIE1BWF8zMkJJVF9JTlRFR0VSID0gTWF0aC5wb3coMiwgMzIpIC0gMTtcblxudmFyIE1BWF9TSUdORURfOEJJVF9JTlRFR0VSID0gTWF0aC5wb3coMiwgNykgLSAxLFxuICAgIE1BWF9TSUdORURfMTZCSVRfSU5URUdFUiA9IE1hdGgucG93KDIsIDE1KSAtIDEsXG4gICAgTUFYX1NJR05FRF8zMkJJVF9JTlRFR0VSID0gTWF0aC5wb3coMiwgMzEpIC0gMTtcblxuZXhwb3J0cy5nZXRQb2ludGVyQXJyYXkgPSBmdW5jdGlvbihzaXplKSB7XG4gIHZhciBtYXhJbmRleCA9IHNpemUgLSAxO1xuXG4gIGlmIChtYXhJbmRleCA8PSBNQVhfOEJJVF9JTlRFR0VSKVxuICAgIHJldHVybiBVaW50OEFycmF5O1xuXG4gIGlmIChtYXhJbmRleCA8PSBNQVhfMTZCSVRfSU5URUdFUilcbiAgICByZXR1cm4gVWludDE2QXJyYXk7XG5cbiAgaWYgKG1heEluZGV4IDw9IE1BWF8zMkJJVF9JTlRFR0VSKVxuICAgIHJldHVybiBVaW50MzJBcnJheTtcblxuICB0aHJvdyBuZXcgRXJyb3IoJ21uZW1vbmlzdDogUG9pbnRlciBBcnJheSBvZiBzaXplID4gNDI5NDk2NzI5NSBpcyBub3Qgc3VwcG9ydGVkLicpO1xufTtcblxuZXhwb3J0cy5nZXRTaWduZWRQb2ludGVyQXJyYXkgPSBmdW5jdGlvbihzaXplKSB7XG4gIHZhciBtYXhJbmRleCA9IHNpemUgLSAxO1xuXG4gIGlmIChtYXhJbmRleCA8PSBNQVhfU0lHTkVEXzhCSVRfSU5URUdFUilcbiAgICByZXR1cm4gSW50OEFycmF5O1xuXG4gIGlmIChtYXhJbmRleCA8PSBNQVhfU0lHTkVEXzE2QklUX0lOVEVHRVIpXG4gICAgcmV0dXJuIEludDE2QXJyYXk7XG5cbiAgaWYgKG1heEluZGV4IDw9IE1BWF9TSUdORURfMzJCSVRfSU5URUdFUilcbiAgICByZXR1cm4gSW50MzJBcnJheTtcblxuICByZXR1cm4gRmxvYXQ2NEFycmF5O1xufTtcblxuLyoqXG4gKiBGdW5jdGlvbiByZXR1cm5pbmcgdGhlIG1pbmltYWwgdHlwZSBhYmxlIHRvIHJlcHJlc2VudCB0aGUgZ2l2ZW4gbnVtYmVyLlxuICpcbiAqIEBwYXJhbSAge251bWJlcn0gdmFsdWUgLSBWYWx1ZSB0byB0ZXN0LlxuICogQHJldHVybiB7VHlwZWRBcnJheUNsYXNzfVxuICovXG5leHBvcnRzLmdldE51bWJlclR5cGUgPSBmdW5jdGlvbih2YWx1ZSkge1xuXG4gIC8vIDw9IDMyIGJpdHMgaXRudGVnZXI/XG4gIGlmICh2YWx1ZSA9PT0gKHZhbHVlIHwgMCkpIHtcblxuICAgIC8vIE5lZ2F0aXZlXG4gICAgaWYgKE1hdGguc2lnbih2YWx1ZSkgPT09IC0xKSB7XG4gICAgICBpZiAodmFsdWUgPD0gMTI3ICYmIHZhbHVlID49IC0xMjgpXG4gICAgICAgIHJldHVybiBJbnQ4QXJyYXk7XG5cbiAgICAgIGlmICh2YWx1ZSA8PSAzMjc2NyAmJiB2YWx1ZSA+PSAtMzI3NjgpXG4gICAgICAgIHJldHVybiBJbnQxNkFycmF5O1xuXG4gICAgICByZXR1cm4gSW50MzJBcnJheTtcbiAgICB9XG4gICAgZWxzZSB7XG5cbiAgICAgIGlmICh2YWx1ZSA8PSAyNTUpXG4gICAgICAgIHJldHVybiBVaW50OEFycmF5O1xuXG4gICAgICBpZiAodmFsdWUgPD0gNjU1MzUpXG4gICAgICAgIHJldHVybiBVaW50MTZBcnJheTtcblxuICAgICAgcmV0dXJuIFVpbnQzMkFycmF5O1xuICAgIH1cbiAgfVxuXG4gIC8vIDUzIGJpdHMgaW50ZWdlciAmIGZsb2F0c1xuICAvLyBOT1RFOiBpdCdzIGtpbmRhIGhhcmQgdG8gdGVsbCB3aGV0aGVyIHdlIGNvdWxkIHVzZSAzMmJpdHMgb3Igbm90Li4uXG4gIHJldHVybiBGbG9hdDY0QXJyYXk7XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHJldHVybmluZyB0aGUgbWluaW1hbCB0eXBlIGFibGUgdG8gcmVwcmVzZW50IHRoZSBnaXZlbiBhcnJheVxuICogb2YgSmF2YVNjcmlwdCBudW1iZXJzLlxuICpcbiAqIEBwYXJhbSAge2FycmF5fSAgICBhcnJheSAgLSBBcnJheSB0byByZXByZXNlbnQuXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gZ2V0dGVyIC0gT3B0aW9uYWwgZ2V0dGVyLlxuICogQHJldHVybiB7VHlwZWRBcnJheUNsYXNzfVxuICovXG52YXIgVFlQRV9QUklPUklUWSA9IHtcbiAgVWludDhBcnJheTogMSxcbiAgSW50OEFycmF5OiAyLFxuICBVaW50MTZBcnJheTogMyxcbiAgSW50MTZBcnJheTogNCxcbiAgVWludDMyQXJyYXk6IDUsXG4gIEludDMyQXJyYXk6IDYsXG4gIEZsb2F0MzJBcnJheTogNyxcbiAgRmxvYXQ2NEFycmF5OiA4XG59O1xuXG4vLyBUT0RPOiBtYWtlIHRoaXMgYSBvbmUtc2hvdCBmb3Igb25lIHZhbHVlXG5leHBvcnRzLmdldE1pbmltYWxSZXByZXNlbnRhdGlvbiA9IGZ1bmN0aW9uKGFycmF5LCBnZXR0ZXIpIHtcbiAgdmFyIG1heFR5cGUgPSBudWxsLFxuICAgICAgbWF4UHJpb3JpdHkgPSAwLFxuICAgICAgcCxcbiAgICAgIHQsXG4gICAgICB2LFxuICAgICAgaSxcbiAgICAgIGw7XG5cbiAgZm9yIChpID0gMCwgbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHYgPSBnZXR0ZXIgPyBnZXR0ZXIoYXJyYXlbaV0pIDogYXJyYXlbaV07XG4gICAgdCA9IGV4cG9ydHMuZ2V0TnVtYmVyVHlwZSh2KTtcbiAgICBwID0gVFlQRV9QUklPUklUWVt0Lm5hbWVdO1xuXG4gICAgaWYgKHAgPiBtYXhQcmlvcml0eSkge1xuICAgICAgbWF4UHJpb3JpdHkgPSBwO1xuICAgICAgbWF4VHlwZSA9IHQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1heFR5cGU7XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHJldHVybmluZyB3aGV0aGVyIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBwYXJhbSAge2FueX0gdmFsdWUgLSBWYWx1ZSB0byB0ZXN0LlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0cy5pc1R5cGVkQXJyYXkgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiBBcnJheUJ1ZmZlci5pc1ZpZXcodmFsdWUpO1xufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB1c2VkIHRvIGNvbmNhdCBieXRlIGFycmF5cy5cbiAqXG4gKiBAcGFyYW0gIHsuLi5CeXRlQXJyYXl9XG4gKiBAcmV0dXJuIHtCeXRlQXJyYXl9XG4gKi9cbmV4cG9ydHMuY29uY2F0ID0gZnVuY3Rpb24oKSB7XG4gIHZhciBsZW5ndGggPSAwLFxuICAgICAgaSxcbiAgICAgIG8sXG4gICAgICBsO1xuXG4gIGZvciAoaSA9IDAsIGwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKVxuICAgIGxlbmd0aCArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xuXG4gIHZhciBhcnJheSA9IG5ldyAoYXJndW1lbnRzWzBdLmNvbnN0cnVjdG9yKShsZW5ndGgpO1xuXG4gIGZvciAoaSA9IDAsIG8gPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgYXJyYXkuc2V0KGFyZ3VtZW50c1tpXSwgbyk7XG4gICAgbyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIGFycmF5O1xufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB1c2VkIHRvIGluaXRpYWxpemUgYSBieXRlIGFycmF5IG9mIGluZGljZXMuXG4gKlxuICogQHBhcmFtICB7bnVtYmVyfSAgICBsZW5ndGggLSBMZW5ndGggb2YgdGFyZ2V0LlxuICogQHJldHVybiB7Qnl0ZUFycmF5fVxuICovXG5leHBvcnRzLmluZGljZXMgPSBmdW5jdGlvbihsZW5ndGgpIHtcbiAgdmFyIFBvaW50ZXJBcnJheSA9IGV4cG9ydHMuZ2V0UG9pbnRlckFycmF5KGxlbmd0aCk7XG5cbiAgdmFyIGFycmF5ID0gbmV3IFBvaW50ZXJBcnJheShsZW5ndGgpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspXG4gICAgYXJyYXlbaV0gPSBpO1xuXG4gIHJldHVybiBhcnJheTtcbn07XG4iLCAiLyoqXG4gKiBNbmVtb25pc3QgSXRlcmFibGUgRnVuY3Rpb25cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqXG4gKiBIYXJtb25pemVkIGl0ZXJhdGlvbiBoZWxwZXJzIG92ZXIgbWl4ZWQgaXRlcmFibGUgdGFyZ2V0cy5cbiAqL1xudmFyIGZvckVhY2ggPSByZXF1aXJlKCdvYmxpdGVyYXRvci9mb3JlYWNoJyk7XG5cbnZhciB0eXBlZCA9IHJlcXVpcmUoJy4vdHlwZWQtYXJyYXlzLmpzJyk7XG5cbi8qKlxuICogRnVuY3Rpb24gdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IHN1cHBvcnRzIGFycmF5LWxpa2VcbiAqIHJhbmRvbSBhY2Nlc3MuXG4gKlxuICogQHBhcmFtICB7YW55fSB0YXJnZXQgLSBUYXJnZXQgb2JqZWN0LlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodGFyZ2V0KSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHRhcmdldCkgfHwgdHlwZWQuaXNUeXBlZEFycmF5KHRhcmdldCk7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gdXNlZCB0byBndWVzcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJ1Y3R1cmUgb3ZlciB3aGljaCB3ZSBhcmUgZ29pbmdcbiAqIHRvIGl0ZXJhdGUuXG4gKlxuICogQHBhcmFtICB7YW55fSB0YXJnZXQgLSBUYXJnZXQgb2JqZWN0LlxuICogQHJldHVybiB7bnVtYmVyfHVuZGVmaW5lZH1cbiAqL1xuZnVuY3Rpb24gZ3Vlc3NMZW5ndGgodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgdGFyZ2V0Lmxlbmd0aCA9PT0gJ251bWJlcicpXG4gICAgcmV0dXJuIHRhcmdldC5sZW5ndGg7XG5cbiAgaWYgKHR5cGVvZiB0YXJnZXQuc2l6ZSA9PT0gJ251bWJlcicpXG4gICAgcmV0dXJuIHRhcmdldC5zaXplO1xuXG4gIHJldHVybjtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiB1c2VkIHRvIGNvbnZlcnQgYW4gaXRlcmFibGUgdG8gYW4gYXJyYXkuXG4gKlxuICogQHBhcmFtICB7YW55fSAgIHRhcmdldCAtIEl0ZXJhdGlvbiB0YXJnZXQuXG4gKiBAcmV0dXJuIHthcnJheX1cbiAqL1xuZnVuY3Rpb24gdG9BcnJheSh0YXJnZXQpIHtcbiAgdmFyIGwgPSBndWVzc0xlbmd0aCh0YXJnZXQpO1xuXG4gIHZhciBhcnJheSA9IHR5cGVvZiBsID09PSAnbnVtYmVyJyA/IG5ldyBBcnJheShsKSA6IFtdO1xuXG4gIHZhciBpID0gMDtcblxuICAvLyBUT0RPOiB3ZSBjb3VsZCBvcHRpbWl6ZSB3aGVuIGdpdmVuIHRhcmdldCBpcyBhcnJheSBsaWtlXG4gIGZvckVhY2godGFyZ2V0LCBmdW5jdGlvbih2YWx1ZSkge1xuICAgIGFycmF5W2krK10gPSB2YWx1ZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGFycmF5O1xufVxuXG4vKipcbiAqIFNhbWUgYXMgYWJvdmUgYnV0IHJldHVybnMgYSBzdXBwbGVtZW50YXJ5IGluZGljZXMgYXJyYXkuXG4gKlxuICogQHBhcmFtICB7YW55fSAgIHRhcmdldCAtIEl0ZXJhdGlvbiB0YXJnZXQuXG4gKiBAcmV0dXJuIHthcnJheX1cbiAqL1xuZnVuY3Rpb24gdG9BcnJheVdpdGhJbmRpY2VzKHRhcmdldCkge1xuICB2YXIgbCA9IGd1ZXNzTGVuZ3RoKHRhcmdldCk7XG5cbiAgdmFyIEluZGV4QXJyYXkgPSB0eXBlb2YgbCA9PT0gJ251bWJlcicgP1xuICAgIHR5cGVkLmdldFBvaW50ZXJBcnJheShsKSA6XG4gICAgQXJyYXk7XG5cbiAgdmFyIGFycmF5ID0gdHlwZW9mIGwgPT09ICdudW1iZXInID8gbmV3IEFycmF5KGwpIDogW107XG4gIHZhciBpbmRpY2VzID0gdHlwZW9mIGwgPT09ICdudW1iZXInID8gbmV3IEluZGV4QXJyYXkobCkgOiBbXTtcblxuICB2YXIgaSA9IDA7XG5cbiAgLy8gVE9ETzogd2UgY291bGQgb3B0aW1pemUgd2hlbiBnaXZlbiB0YXJnZXQgaXMgYXJyYXkgbGlrZVxuICBmb3JFYWNoKHRhcmdldCwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICBhcnJheVtpXSA9IHZhbHVlO1xuICAgIGluZGljZXNbaV0gPSBpKys7XG4gIH0pO1xuXG4gIHJldHVybiBbYXJyYXksIGluZGljZXNdO1xufVxuXG4vKipcbiAqIEV4cG9ydGluZy5cbiAqL1xuZXhwb3J0cy5pc0FycmF5TGlrZSA9IGlzQXJyYXlMaWtlO1xuZXhwb3J0cy5ndWVzc0xlbmd0aCA9IGd1ZXNzTGVuZ3RoO1xuZXhwb3J0cy50b0FycmF5ID0gdG9BcnJheTtcbmV4cG9ydHMudG9BcnJheVdpdGhJbmRpY2VzID0gdG9BcnJheVdpdGhJbmRpY2VzO1xuIiwgIi8qKlxuICogT2JsaXRlcmF0b3IgSXRlcmF0b3IgQ2xhc3NcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIFNpbXBsZSBjbGFzcyByZXByZXNlbnRpbmcgdGhlIGxpYnJhcnkncyBpdGVyYXRvcnMuXG4gKi9cblxuLyoqXG4gKiBJdGVyYXRvciBjbGFzcy5cbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IG5leHQgLSBOZXh0IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBJdGVyYXRvcihuZXh0KSB7XG4gIGlmICh0eXBlb2YgbmV4dCAhPT0gJ2Z1bmN0aW9uJylcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ29ibGl0ZXJhdG9yL2l0ZXJhdG9yOiBleHBlY3RpbmcgYSBmdW5jdGlvbiEnKTtcblxuICB0aGlzLm5leHQgPSBuZXh0O1xufVxuXG4vKipcbiAqIElmIHN5bWJvbHMgYXJlIHN1cHBvcnRlZCwgd2UgYWRkIGBuZXh0YCB0byBgU3ltYm9sLml0ZXJhdG9yYC5cbiAqL1xuaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnKVxuICBJdGVyYXRvci5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5pbmcgYW4gaXRlcmF0b3Igb2YgdGhlIGdpdmVuIHZhbHVlcy5cbiAqXG4gKiBAcGFyYW0gIHthbnkuLi59IHZhbHVlcyAtIFZhbHVlcy5cbiAqIEByZXR1cm4ge0l0ZXJhdG9yfVxuICovXG5JdGVyYXRvci5vZiA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgbCA9IGFyZ3MubGVuZ3RoLFxuICAgIGkgPSAwO1xuXG4gIHJldHVybiBuZXcgSXRlcmF0b3IoZnVuY3Rpb24gKCkge1xuICAgIGlmIChpID49IGwpIHJldHVybiB7ZG9uZTogdHJ1ZX07XG5cbiAgICByZXR1cm4ge2RvbmU6IGZhbHNlLCB2YWx1ZTogYXJnc1tpKytdfTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIFJldHVybmluZyBhbiBlbXB0eSBpdGVyYXRvci5cbiAqXG4gKiBAcmV0dXJuIHtJdGVyYXRvcn1cbiAqL1xuSXRlcmF0b3IuZW1wdHkgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBpdGVyYXRvciA9IG5ldyBJdGVyYXRvcihmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtkb25lOiB0cnVlfTtcbiAgfSk7XG5cbiAgcmV0dXJuIGl0ZXJhdG9yO1xufTtcblxuLyoqXG4gKiBSZXR1cm5pbmcgYW4gaXRlcmF0b3Igb3ZlciB0aGUgZ2l2ZW4gaW5kZXhlZCBzZXF1ZW5jZS5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd8QXJyYXl9IHNlcXVlbmNlIC0gVGFyZ2V0IHNlcXVlbmNlLlxuICogQHJldHVybiB7SXRlcmF0b3J9XG4gKi9cbkl0ZXJhdG9yLmZyb21TZXF1ZW5jZSA9IGZ1bmN0aW9uIChzZXF1ZW5jZSkge1xuICB2YXIgaSA9IDAsXG4gICAgbCA9IHNlcXVlbmNlLmxlbmd0aDtcblxuICByZXR1cm4gbmV3IEl0ZXJhdG9yKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoaSA+PSBsKSByZXR1cm4ge2RvbmU6IHRydWV9O1xuXG4gICAgcmV0dXJuIHtkb25lOiBmYWxzZSwgdmFsdWU6IHNlcXVlbmNlW2krK119O1xuICB9KTtcbn07XG5cbi8qKlxuICogUmV0dXJuaW5nIHdoZXRoZXIgdGhlIGdpdmVuIHZhbHVlIGlzIGFuIGl0ZXJhdG9yLlxuICpcbiAqIEBwYXJhbSAge2FueX0gdmFsdWUgLSBWYWx1ZS5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbkl0ZXJhdG9yLmlzID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEl0ZXJhdG9yKSByZXR1cm4gdHJ1ZTtcblxuICByZXR1cm4gKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgIHR5cGVvZiB2YWx1ZS5uZXh0ID09PSAnZnVuY3Rpb24nXG4gICk7XG59O1xuXG4vKipcbiAqIEV4cG9ydGluZy5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBJdGVyYXRvcjtcbiIsICIvKipcbiAqIE1uZW1vbmlzdCBGaXhlZERlcXVlXG4gKiA9PT09PT09PT09PT09PT09PT09PT1cbiAqXG4gKiBGaXhlZCBjYXBhY2l0eSBkb3VibGUtZW5kZWQgcXVldWUgaW1wbGVtZW50ZWQgYXMgcmluZyBkZXF1ZS5cbiAqL1xudmFyIGl0ZXJhYmxlcyA9IHJlcXVpcmUoJy4vdXRpbHMvaXRlcmFibGVzLmpzJyksXG4gICAgSXRlcmF0b3IgPSByZXF1aXJlKCdvYmxpdGVyYXRvci9pdGVyYXRvcicpO1xuXG4vKipcbiAqIEZpeGVkRGVxdWUuXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmZ1bmN0aW9uIEZpeGVkRGVxdWUoQXJyYXlDbGFzcywgY2FwYWNpdHkpIHtcblxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdtbmVtb25pc3QvZml4ZWQtZGVxdWU6IGV4cGVjdGluZyBhbiBBcnJheSBjbGFzcyBhbmQgYSBjYXBhY2l0eS4nKTtcblxuICBpZiAodHlwZW9mIGNhcGFjaXR5ICE9PSAnbnVtYmVyJyB8fCBjYXBhY2l0eSA8PSAwKVxuICAgIHRocm93IG5ldyBFcnJvcignbW5lbW9uaXN0L2ZpeGVkLWRlcXVlOiBgY2FwYWNpdHlgIHNob3VsZCBiZSBhIHBvc2l0aXZlIG51bWJlci4nKTtcblxuICB0aGlzLkFycmF5Q2xhc3MgPSBBcnJheUNsYXNzO1xuICB0aGlzLmNhcGFjaXR5ID0gY2FwYWNpdHk7XG4gIHRoaXMuaXRlbXMgPSBuZXcgQXJyYXlDbGFzcyh0aGlzLmNhcGFjaXR5KTtcbiAgdGhpcy5jbGVhcigpO1xufVxuXG4vKipcbiAqIE1ldGhvZCB1c2VkIHRvIGNsZWFyIHRoZSBzdHJ1Y3R1cmUuXG4gKlxuICogQHJldHVybiB7dW5kZWZpbmVkfVxuICovXG5GaXhlZERlcXVlLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkge1xuXG4gIC8vIFByb3BlcnRpZXNcbiAgdGhpcy5zdGFydCA9IDA7XG4gIHRoaXMuc2l6ZSA9IDA7XG59O1xuXG4vKipcbiAqIE1ldGhvZCB1c2VkIHRvIGFwcGVuZCBhIHZhbHVlIHRvIHRoZSBkZXF1ZS5cbiAqXG4gKiBAcGFyYW0gIHthbnl9ICAgIGl0ZW0gLSBJdGVtIHRvIGFwcGVuZC5cbiAqIEByZXR1cm4ge251bWJlcn0gICAgICAtIFJldHVybnMgdGhlIG5ldyBzaXplIG9mIHRoZSBkZXF1ZS5cbiAqL1xuRml4ZWREZXF1ZS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uKGl0ZW0pIHtcbiAgaWYgKHRoaXMuc2l6ZSA9PT0gdGhpcy5jYXBhY2l0eSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21uZW1vbmlzdC9maXhlZC1kZXF1ZS5wdXNoOiBkZXF1ZSBjYXBhY2l0eSAoJyArIHRoaXMuY2FwYWNpdHkgKyAnKSBleGNlZWRlZCEnKTtcblxuICB2YXIgaW5kZXggPSAodGhpcy5zdGFydCArIHRoaXMuc2l6ZSkgJSB0aGlzLmNhcGFjaXR5O1xuXG4gIHRoaXMuaXRlbXNbaW5kZXhdID0gaXRlbTtcblxuICByZXR1cm4gKyt0aGlzLnNpemU7XG59O1xuXG4vKipcbiAqIE1ldGhvZCB1c2VkIHRvIHByZXBlbmQgYSB2YWx1ZSB0byB0aGUgZGVxdWUuXG4gKlxuICogQHBhcmFtICB7YW55fSAgICBpdGVtIC0gSXRlbSB0byBwcmVwZW5kLlxuICogQHJldHVybiB7bnVtYmVyfSAgICAgIC0gUmV0dXJucyB0aGUgbmV3IHNpemUgb2YgdGhlIGRlcXVlLlxuICovXG5GaXhlZERlcXVlLnByb3RvdHlwZS51bnNoaWZ0ID0gZnVuY3Rpb24oaXRlbSkge1xuICBpZiAodGhpcy5zaXplID09PSB0aGlzLmNhcGFjaXR5KVxuICAgIHRocm93IG5ldyBFcnJvcignbW5lbW9uaXN0L2ZpeGVkLWRlcXVlLnVuc2hpZnQ6IGRlcXVlIGNhcGFjaXR5ICgnICsgdGhpcy5jYXBhY2l0eSArICcpIGV4Y2VlZGVkIScpO1xuXG4gIHZhciBpbmRleCA9IHRoaXMuc3RhcnQgLSAxO1xuXG4gIGlmICh0aGlzLnN0YXJ0ID09PSAwKVxuICAgIGluZGV4ID0gdGhpcy5jYXBhY2l0eSAtIDE7XG5cbiAgdGhpcy5pdGVtc1tpbmRleF0gPSBpdGVtO1xuICB0aGlzLnN0YXJ0ID0gaW5kZXg7XG5cbiAgcmV0dXJuICsrdGhpcy5zaXplO1xufTtcblxuLyoqXG4gKiBNZXRob2QgdXNlZCB0byBwb3AgdGhlIGRlcXVlLlxuICpcbiAqIEByZXR1cm4ge2FueX0gLSBSZXR1cm5zIHRoZSBwb3BwZWQgaXRlbS5cbiAqL1xuRml4ZWREZXF1ZS5wcm90b3R5cGUucG9wID0gZnVuY3Rpb24oKSB7XG4gIGlmICh0aGlzLnNpemUgPT09IDApXG4gICAgcmV0dXJuO1xuXG4gIGNvbnN0IGluZGV4ID0gKHRoaXMuc3RhcnQgKyB0aGlzLnNpemUgLSAxKSAlIHRoaXMuY2FwYWNpdHk7XG5cbiAgdGhpcy5zaXplLS07XG5cbiAgcmV0dXJuIHRoaXMuaXRlbXNbaW5kZXhdO1xufTtcblxuLyoqXG4gKiBNZXRob2QgdXNlZCB0byBzaGlmdCB0aGUgZGVxdWUuXG4gKlxuICogQHJldHVybiB7YW55fSAtIFJldHVybnMgdGhlIHNoaWZ0ZWQgaXRlbS5cbiAqL1xuRml4ZWREZXF1ZS5wcm90b3R5cGUuc2hpZnQgPSBmdW5jdGlvbigpIHtcbiAgaWYgKHRoaXMuc2l6ZSA9PT0gMClcbiAgICByZXR1cm47XG5cbiAgdmFyIGluZGV4ID0gdGhpcy5zdGFydDtcblxuICB0aGlzLnNpemUtLTtcbiAgdGhpcy5zdGFydCsrO1xuXG4gIGlmICh0aGlzLnN0YXJ0ID09PSB0aGlzLmNhcGFjaXR5KVxuICAgIHRoaXMuc3RhcnQgPSAwO1xuXG4gIHJldHVybiB0aGlzLml0ZW1zW2luZGV4XTtcbn07XG5cbi8qKlxuICogTWV0aG9kIHVzZWQgdG8gcGVlayB0aGUgZmlyc3QgdmFsdWUgb2YgdGhlIGRlcXVlLlxuICpcbiAqIEByZXR1cm4ge2FueX1cbiAqL1xuRml4ZWREZXF1ZS5wcm90b3R5cGUucGVla0ZpcnN0ID0gZnVuY3Rpb24oKSB7XG4gIGlmICh0aGlzLnNpemUgPT09IDApXG4gICAgcmV0dXJuO1xuXG4gIHJldHVybiB0aGlzLml0ZW1zW3RoaXMuc3RhcnRdO1xufTtcblxuLyoqXG4gKiBNZXRob2QgdXNlZCB0byBwZWVrIHRoZSBsYXN0IHZhbHVlIG9mIHRoZSBkZXF1ZS5cbiAqXG4gKiBAcmV0dXJuIHthbnl9XG4gKi9cbkZpeGVkRGVxdWUucHJvdG90eXBlLnBlZWtMYXN0ID0gZnVuY3Rpb24oKSB7XG4gIGlmICh0aGlzLnNpemUgPT09IDApXG4gICAgcmV0dXJuO1xuXG4gIHZhciBpbmRleCA9IHRoaXMuc3RhcnQgKyB0aGlzLnNpemUgLSAxO1xuXG4gIGlmIChpbmRleCA+IHRoaXMuY2FwYWNpdHkpXG4gICAgaW5kZXggLT0gdGhpcy5jYXBhY2l0eTtcblxuICByZXR1cm4gdGhpcy5pdGVtc1tpbmRleF07XG59O1xuXG4vKipcbiAqIE1ldGhvZCB1c2VkIHRvIGdldCB0aGUgZGVzaXJlZCB2YWx1ZSBvZiB0aGUgZGVxdWUuXG4gKlxuICogQHBhcmFtICB7bnVtYmVyfSBpbmRleFxuICogQHJldHVybiB7YW55fVxuICovXG5GaXhlZERlcXVlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihpbmRleCkge1xuICBpZiAodGhpcy5zaXplID09PSAwKVxuICAgIHJldHVybjtcblxuICBpbmRleCA9IHRoaXMuc3RhcnQgKyBpbmRleDtcblxuICBpZiAoaW5kZXggPiB0aGlzLmNhcGFjaXR5KVxuICAgIGluZGV4IC09IHRoaXMuY2FwYWNpdHk7XG5cbiAgcmV0dXJuIHRoaXMuaXRlbXNbaW5kZXhdO1xufTtcblxuLyoqXG4gKiBNZXRob2QgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGRlcXVlLlxuICpcbiAqIEBwYXJhbSAge2Z1bmN0aW9ufSAgY2FsbGJhY2sgLSBGdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIGl0ZW0uXG4gKiBAcGFyYW0gIHtvYmplY3R9ICAgIHNjb3BlICAgIC0gT3B0aW9uYWwgc2NvcGUuXG4gKiBAcmV0dXJuIHt1bmRlZmluZWR9XG4gKi9cbkZpeGVkRGVxdWUucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihjYWxsYmFjaywgc2NvcGUpIHtcbiAgc2NvcGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHNjb3BlIDogdGhpcztcblxuICB2YXIgYyA9IHRoaXMuY2FwYWNpdHksXG4gICAgICBsID0gdGhpcy5zaXplLFxuICAgICAgaSA9IHRoaXMuc3RhcnQsXG4gICAgICBqID0gMDtcblxuICB3aGlsZSAoaiA8IGwpIHtcbiAgICBjYWxsYmFjay5jYWxsKHNjb3BlLCB0aGlzLml0ZW1zW2ldLCBqLCB0aGlzKTtcbiAgICBpKys7XG4gICAgaisrO1xuXG4gICAgaWYgKGkgPT09IGMpXG4gICAgICBpID0gMDtcbiAgfVxufTtcblxuLyoqXG4gKiBNZXRob2QgdXNlZCB0byBjb252ZXJ0IHRoZSBkZXF1ZSB0byBhIEphdmFTY3JpcHQgYXJyYXkuXG4gKlxuICogQHJldHVybiB7YXJyYXl9XG4gKi9cbi8vIFRPRE86IG9wdGlvbmFsIGFycmF5IGNsYXNzIGFzIGFyZ3VtZW50P1xuRml4ZWREZXF1ZS5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uKCkge1xuXG4gIC8vIE9wdGltaXphdGlvblxuICB2YXIgb2Zmc2V0ID0gdGhpcy5zdGFydCArIHRoaXMuc2l6ZTtcblxuICBpZiAob2Zmc2V0IDwgdGhpcy5jYXBhY2l0eSlcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5zbGljZSh0aGlzLnN0YXJ0LCBvZmZzZXQpO1xuXG4gIHZhciBhcnJheSA9IG5ldyB0aGlzLkFycmF5Q2xhc3ModGhpcy5zaXplKSxcbiAgICAgIGMgPSB0aGlzLmNhcGFjaXR5LFxuICAgICAgbCA9IHRoaXMuc2l6ZSxcbiAgICAgIGkgPSB0aGlzLnN0YXJ0LFxuICAgICAgaiA9IDA7XG5cbiAgd2hpbGUgKGogPCBsKSB7XG4gICAgYXJyYXlbal0gPSB0aGlzLml0ZW1zW2ldO1xuICAgIGkrKztcbiAgICBqKys7XG5cbiAgICBpZiAoaSA9PT0gYylcbiAgICAgIGkgPSAwO1xuICB9XG5cbiAgcmV0dXJuIGFycmF5O1xufTtcblxuLyoqXG4gKiBNZXRob2QgdXNlZCB0byBjcmVhdGUgYW4gaXRlcmF0b3Igb3ZlciB0aGUgZGVxdWUncyB2YWx1ZXMuXG4gKlxuICogQHJldHVybiB7SXRlcmF0b3J9XG4gKi9cbkZpeGVkRGVxdWUucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSB0aGlzLml0ZW1zLFxuICAgICAgYyA9IHRoaXMuY2FwYWNpdHksXG4gICAgICBsID0gdGhpcy5zaXplLFxuICAgICAgaSA9IHRoaXMuc3RhcnQsXG4gICAgICBqID0gMDtcblxuICByZXR1cm4gbmV3IEl0ZXJhdG9yKGZ1bmN0aW9uKCkge1xuICAgIGlmIChqID49IGwpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkb25lOiB0cnVlXG4gICAgICB9O1xuXG4gICAgdmFyIHZhbHVlID0gaXRlbXNbaV07XG5cbiAgICBpKys7XG4gICAgaisrO1xuXG4gICAgaWYgKGkgPT09IGMpXG4gICAgICBpID0gMDtcblxuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBkb25lOiBmYWxzZVxuICAgIH07XG4gIH0pO1xufTtcblxuLyoqXG4gKiBNZXRob2QgdXNlZCB0byBjcmVhdGUgYW4gaXRlcmF0b3Igb3ZlciB0aGUgZGVxdWUncyBlbnRyaWVzLlxuICpcbiAqIEByZXR1cm4ge0l0ZXJhdG9yfVxuICovXG5GaXhlZERlcXVlLnByb3RvdHlwZS5lbnRyaWVzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IHRoaXMuaXRlbXMsXG4gICAgICBjID0gdGhpcy5jYXBhY2l0eSxcbiAgICAgIGwgPSB0aGlzLnNpemUsXG4gICAgICBpID0gdGhpcy5zdGFydCxcbiAgICAgIGogPSAwO1xuXG4gIHJldHVybiBuZXcgSXRlcmF0b3IoZnVuY3Rpb24oKSB7XG4gICAgaWYgKGogPj0gbClcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRvbmU6IHRydWVcbiAgICAgIH07XG5cbiAgICB2YXIgdmFsdWUgPSBpdGVtc1tpXTtcblxuICAgIGkrKztcblxuICAgIGlmIChpID09PSBjKVxuICAgICAgaSA9IDA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IFtqKyssIHZhbHVlXSxcbiAgICAgIGRvbmU6IGZhbHNlXG4gICAgfTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIEF0dGFjaGluZyB0aGUgIy52YWx1ZXMgbWV0aG9kIHRvIFN5bWJvbC5pdGVyYXRvciBpZiBwb3NzaWJsZS5cbiAqL1xuaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnKVxuICBGaXhlZERlcXVlLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdID0gRml4ZWREZXF1ZS5wcm90b3R5cGUudmFsdWVzO1xuXG4vKipcbiAqIENvbnZlbmllbmNlIGtub3duIG1ldGhvZHMuXG4gKi9cbkZpeGVkRGVxdWUucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGFycmF5ID0gdGhpcy50b0FycmF5KCk7XG5cbiAgYXJyYXkudHlwZSA9IHRoaXMuQXJyYXlDbGFzcy5uYW1lO1xuICBhcnJheS5jYXBhY2l0eSA9IHRoaXMuY2FwYWNpdHk7XG5cbiAgLy8gVHJpY2sgc28gdGhhdCBub2RlIGRpc3BsYXlzIHRoZSBuYW1lIG9mIHRoZSBjb25zdHJ1Y3RvclxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXJyYXksICdjb25zdHJ1Y3RvcicsIHtcbiAgICB2YWx1ZTogRml4ZWREZXF1ZSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICB9KTtcblxuICByZXR1cm4gYXJyYXk7XG59O1xuXG5pZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcpXG4gIEZpeGVkRGVxdWUucHJvdG90eXBlW1N5bWJvbC5mb3IoJ25vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tJyldID0gRml4ZWREZXF1ZS5wcm90b3R5cGUuaW5zcGVjdDtcblxuLyoqXG4gKiBTdGF0aWMgQC5mcm9tIGZ1bmN0aW9uIHRha2luZyBhbiBhcmJpdHJhcnkgaXRlcmFibGUgJiBjb252ZXJ0aW5nIGl0IGludG9cbiAqIGEgZGVxdWUuXG4gKlxuICogQHBhcmFtICB7SXRlcmFibGV9IGl0ZXJhYmxlICAgLSBUYXJnZXQgaXRlcmFibGUuXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gQXJyYXlDbGFzcyAtIEFycmF5IGNsYXNzIHRvIHVzZS5cbiAqIEBwYXJhbSAge251bWJlcn0gICBjYXBhY2l0eSAgIC0gRGVzaXJlZCBjYXBhY2l0eS5cbiAqIEByZXR1cm4ge0Zpbml0ZVN0YWNrfVxuICovXG5GaXhlZERlcXVlLmZyb20gPSBmdW5jdGlvbihpdGVyYWJsZSwgQXJyYXlDbGFzcywgY2FwYWNpdHkpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAzKSB7XG4gICAgY2FwYWNpdHkgPSBpdGVyYWJsZXMuZ3Vlc3NMZW5ndGgoaXRlcmFibGUpO1xuXG4gICAgaWYgKHR5cGVvZiBjYXBhY2l0eSAhPT0gJ251bWJlcicpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21uZW1vbmlzdC9maXhlZC1kZXF1ZS5mcm9tOiBjb3VsZCBub3QgZ3Vlc3MgaXRlcmFibGUgbGVuZ3RoLiBQbGVhc2UgcHJvdmlkZSBkZXNpcmVkIGNhcGFjaXR5IGFzIGxhc3QgYXJndW1lbnQuJyk7XG4gIH1cblxuICB2YXIgZGVxdWUgPSBuZXcgRml4ZWREZXF1ZShBcnJheUNsYXNzLCBjYXBhY2l0eSk7XG5cbiAgaWYgKGl0ZXJhYmxlcy5pc0FycmF5TGlrZShpdGVyYWJsZSkpIHtcbiAgICB2YXIgaSwgbDtcblxuICAgIGZvciAoaSA9IDAsIGwgPSBpdGVyYWJsZS5sZW5ndGg7IGkgPCBsOyBpKyspXG4gICAgICBkZXF1ZS5pdGVtc1tpXSA9IGl0ZXJhYmxlW2ldO1xuXG4gICAgZGVxdWUuc2l6ZSA9IGw7XG5cbiAgICByZXR1cm4gZGVxdWU7XG4gIH1cblxuICBpdGVyYWJsZXMuZm9yRWFjaChpdGVyYWJsZSwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICBkZXF1ZS5wdXNoKHZhbHVlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlcXVlO1xufTtcblxuLyoqXG4gKiBFeHBvcnRpbmcuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gRml4ZWREZXF1ZTtcbiIsICIvKipcbiAqIEdyYXBob2xvZ3kgVHJhdmVyc2FsIFV0aWxzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqXG4gKiBNaXNjZWxsYW5lb3VzIHV0aWxzIHVzZWQgdGhyb3VnaG91dCB0aGUgbGlicmFyeS5cbiAqL1xuXG5mdW5jdGlvbiBUcmF2ZXJzYWxSZWNvcmQobm9kZSwgYXR0ciwgZGVwdGgpIHtcbiAgdGhpcy5ub2RlID0gbm9kZTtcbiAgdGhpcy5hdHRyaWJ1dGVzID0gYXR0cjtcbiAgdGhpcy5kZXB0aCA9IGRlcHRoO1xufVxuXG5leHBvcnRzLlRyYXZlcnNhbFJlY29yZCA9IFRyYXZlcnNhbFJlY29yZDtcbiIsICIvKipcbiAqIEdyYXBob2xvZ3kgVHJhdmVyc2FsIEJGU1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIEJyZWFkdGgtRmlyc3QgU2VhcmNoIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xudmFyIGlzR3JhcGggPSByZXF1aXJlKCdncmFwaG9sb2d5LXV0aWxzL2lzLWdyYXBoJyk7XG52YXIgRml4ZWREZXF1ZSA9IHJlcXVpcmUoJ21uZW1vbmlzdC9maXhlZC1kZXF1ZScpO1xudmFyIFRyYXZlcnNhbFJlY29yZCA9IHJlcXVpcmUoJy4vdXRpbHMnKS5UcmF2ZXJzYWxSZWNvcmQ7XG5cbi8qKlxuICogQkZTIHRyYXZlcnNhbCBpbiB0aGUgZ2l2ZW4gZ3JhcGggdXNpbmcgYSBjYWxsYmFjayBmdW5jdGlvblxuICpcbiAqIEBwYXJhbSB7R3JhcGh9ICAgIGdyYXBoICAgIC0gVGFyZ2V0IGdyYXBoLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBJdGVyYXRpb24gY2FsbGJhY2suXG4gKi9cbmZ1bmN0aW9uIGJmcyhncmFwaCwgY2FsbGJhY2spIHtcbiAgaWYgKCFpc0dyYXBoKGdyYXBoKSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2dyYXBob2xvZ3ktdHJhdmVyc2FsL2JmczogZXhwZWN0aW5nIGEgZ3JhcGhvbG9neSBpbnN0YW5jZS4nKTtcblxuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKVxuICAgIHRocm93IG5ldyBFcnJvcignZ3JhcGhvbG9neS10cmF2ZXJzYWwvYmZzOiBnaXZlbiBjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbi4nKTtcblxuICAvLyBFYXJseSB0ZXJtaW5hdGlvblxuICBpZiAoZ3JhcGgub3JkZXIgPT09IDApXG4gICAgcmV0dXJuO1xuXG4gIHZhciBzZWVuID0gbmV3IFNldCgpO1xuICB2YXIgcXVldWUgPSBuZXcgRml4ZWREZXF1ZShBcnJheSwgZ3JhcGgub3JkZXIpO1xuICB2YXIgcmVjb3JkLCBkZXB0aDtcblxuICBmdW5jdGlvbiBuZWlnaGJvckNhbGxiYWNrKG5laWdoYm9yLCBhdHRyKSB7XG4gICAgaWYgKHNlZW4uaGFzKG5laWdoYm9yKSlcbiAgICAgIHJldHVybjtcblxuICAgIHNlZW4uYWRkKG5laWdoYm9yKTtcbiAgICBxdWV1ZS5wdXNoKG5ldyBUcmF2ZXJzYWxSZWNvcmQobmVpZ2hib3IsIGF0dHIsIGRlcHRoICsgMSkpO1xuICB9XG5cbiAgZ3JhcGguZm9yRWFjaE5vZGUoZnVuY3Rpb24obm9kZSwgYXR0cikge1xuICAgIGlmIChzZWVuLmhhcyhub2RlKSlcbiAgICAgIHJldHVybjtcblxuICAgIHNlZW4uYWRkKG5vZGUpO1xuICAgIHF1ZXVlLnB1c2gobmV3IFRyYXZlcnNhbFJlY29yZChub2RlLCBhdHRyLCAwKSk7XG5cbiAgICB3aGlsZSAocXVldWUuc2l6ZSAhPT0gMCkge1xuICAgICAgcmVjb3JkID0gcXVldWUuc2hpZnQoKTtcbiAgICAgIGRlcHRoID0gcmVjb3JkLmRlcHRoO1xuXG4gICAgICBjYWxsYmFjayhyZWNvcmQubm9kZSwgcmVjb3JkLmF0dHJpYnV0ZXMsIGRlcHRoKTtcblxuICAgICAgZ3JhcGguZm9yRWFjaE91dGJvdW5kTmVpZ2hib3IocmVjb3JkLm5vZGUsIG5laWdoYm9yQ2FsbGJhY2spO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogQkZTIHRyYXZlcnNhbCBpbiB0aGUgZ2l2ZW4gZ3JhcGgsIHN0YXJ0aW5nIGZyb20gdGhlIGdpdmVuIG5vZGUsIHVzaW5nIGFcbiAqIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7R3JhcGh9ICAgIGdyYXBoICAgIC0gVGFyZ2V0IGdyYXBoLlxuICogQHBhcmFtIHtzdHJpbmd9ICAgbm9kZSAgICAgLSBTdGFydGluZyBub2RlLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBJdGVyYXRpb24gY2FsbGJhY2suXG4gKi9cbmZ1bmN0aW9uIGJmc0Zyb21Ob2RlKGdyYXBoLCBub2RlLCBjYWxsYmFjaykge1xuICBpZiAoIWlzR3JhcGgoZ3JhcGgpKVxuICAgIHRocm93IG5ldyBFcnJvcignZ3JhcGhvbG9neS10cmF2ZXJzYWwvZGZzOiBleHBlY3RpbmcgYSBncmFwaG9sb2d5IGluc3RhbmNlLicpO1xuXG4gIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdncmFwaG9sb2d5LXRyYXZlcnNhbC9kZnM6IGdpdmVuIGNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uLicpO1xuXG4gIC8vIEVhcmx5IHRlcm1pbmF0aW9uXG4gIGlmIChncmFwaC5vcmRlciA9PT0gMClcbiAgICByZXR1cm47XG5cbiAgbm9kZSA9ICcnICsgbm9kZTtcblxuICB2YXIgc2VlbiA9IG5ldyBTZXQoKTtcbiAgdmFyIHF1ZXVlID0gbmV3IEZpeGVkRGVxdWUoQXJyYXksIGdyYXBoLm9yZGVyKTtcbiAgdmFyIGRlcHRoLCByZWNvcmQ7XG5cbiAgZnVuY3Rpb24gbmVpZ2hib3JDYWxsYmFjayhuZWlnaGJvciwgYXR0cikge1xuICAgIGlmIChzZWVuLmhhcyhuZWlnaGJvcikpXG4gICAgICByZXR1cm47XG5cbiAgICBzZWVuLmFkZChuZWlnaGJvcik7XG4gICAgcXVldWUucHVzaChuZXcgVHJhdmVyc2FsUmVjb3JkKG5laWdoYm9yLCBhdHRyLCBkZXB0aCArIDEpKTtcbiAgfVxuXG4gIHNlZW4uYWRkKG5vZGUpO1xuICBxdWV1ZS5wdXNoKG5ldyBUcmF2ZXJzYWxSZWNvcmQobm9kZSwgZ3JhcGguZ2V0Tm9kZUF0dHJpYnV0ZXMobm9kZSksIDApKTtcblxuICB3aGlsZSAocXVldWUuc2l6ZSAhPT0gMCkge1xuICAgIHJlY29yZCA9IHF1ZXVlLnNoaWZ0KCk7XG4gICAgZGVwdGggPSByZWNvcmQuZGVwdGg7XG5cbiAgICBjYWxsYmFjayhyZWNvcmQubm9kZSwgcmVjb3JkLmF0dHJpYnV0ZXMsIGRlcHRoKTtcblxuICAgIGdyYXBoLmZvckVhY2hPdXRib3VuZE5laWdoYm9yKHJlY29yZC5ub2RlLCBuZWlnaGJvckNhbGxiYWNrKTtcbiAgfVxufVxuXG5leHBvcnRzLmJmcyA9IGJmcztcbmV4cG9ydHMuYmZzRnJvbU5vZGUgPSBiZnNGcm9tTm9kZTtcbiIsICIvKipcbiAqIEdyYXBob2xvZ3kgVHJhdmVyc2FsIERGU1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIERlcHRoLUZpcnN0IFNlYXJjaCB0cmF2ZXJzYWwgZnVuY3Rpb24uXG4gKi9cbnZhciBpc0dyYXBoID0gcmVxdWlyZSgnZ3JhcGhvbG9neS11dGlscy9pcy1ncmFwaCcpO1xudmFyIFRyYXZlcnNhbFJlY29yZCA9IHJlcXVpcmUoJy4vdXRpbHMnKS5UcmF2ZXJzYWxSZWNvcmQ7XG5cbi8qKlxuICogREZTIHRyYXZlcnNhbCBpbiB0aGUgZ2l2ZW4gZ3JhcGggdXNpbmcgYSBjYWxsYmFjayBmdW5jdGlvblxuICpcbiAqIEBwYXJhbSB7R3JhcGh9ICAgIGdyYXBoICAgIC0gVGFyZ2V0IGdyYXBoLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBJdGVyYXRpb24gY2FsbGJhY2suXG4gKi9cbmZ1bmN0aW9uIGRmcyhncmFwaCwgY2FsbGJhY2spIHtcbiAgaWYgKCFpc0dyYXBoKGdyYXBoKSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2dyYXBob2xvZ3ktdHJhdmVyc2FsL2RmczogZXhwZWN0aW5nIGEgZ3JhcGhvbG9neSBpbnN0YW5jZS4nKTtcblxuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKVxuICAgIHRocm93IG5ldyBFcnJvcignZ3JhcGhvbG9neS10cmF2ZXJzYWwvZGZzOiBnaXZlbiBjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbi4nKTtcblxuICAvLyBFYXJseSB0ZXJtaW5hdGlvblxuICBpZiAoZ3JhcGgub3JkZXIgPT09IDApXG4gICAgcmV0dXJuO1xuXG4gIHZhciBzZWVuID0gbmV3IFNldCgpO1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGRlcHRoLCByZWNvcmQ7XG5cbiAgZnVuY3Rpb24gbmVpZ2hib3JDYWxsYmFjayhuZWlnaGJvciwgYXR0cikge1xuICAgIGlmIChzZWVuLmhhcyhuZWlnaGJvcikpXG4gICAgICByZXR1cm47XG5cbiAgICBzZWVuLmFkZChuZWlnaGJvcik7XG4gICAgc3RhY2sucHVzaChuZXcgVHJhdmVyc2FsUmVjb3JkKG5laWdoYm9yLCBhdHRyLCBkZXB0aCArIDEpKTtcbiAgfVxuXG4gIGdyYXBoLmZvckVhY2hOb2RlKGZ1bmN0aW9uKG5vZGUsIGF0dHIpIHtcbiAgICBpZiAoc2Vlbi5oYXMobm9kZSkpXG4gICAgICByZXR1cm47XG5cbiAgICBzZWVuLmFkZChub2RlKTtcbiAgICBzdGFjay5wdXNoKG5ldyBUcmF2ZXJzYWxSZWNvcmQobm9kZSwgYXR0ciwgMCkpO1xuXG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCAhPT0gMCkge1xuICAgICAgcmVjb3JkID0gc3RhY2sucG9wKCk7XG4gICAgICBkZXB0aCA9IHJlY29yZC5kZXB0aDtcblxuICAgICAgY2FsbGJhY2socmVjb3JkLm5vZGUsIHJlY29yZC5hdHRyaWJ1dGVzLCBkZXB0aCk7XG5cbiAgICAgIGdyYXBoLmZvckVhY2hPdXRib3VuZE5laWdoYm9yKHJlY29yZC5ub2RlLCBuZWlnaGJvckNhbGxiYWNrKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIERGUyB0cmF2ZXJzYWwgaW4gdGhlIGdpdmVuIGdyYXBoLCBzdGFydGluZyBmcm9tIHRoZSBnaXZlbiBub2RlLCB1c2luZyBhXG4gKiBjYWxsYmFjayBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0dyYXBofSAgICBncmFwaCAgICAtIFRhcmdldCBncmFwaC5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgIG5vZGUgICAgIC0gU3RhcnRpbmcgbm9kZS5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gSXRlcmF0aW9uIGNhbGxiYWNrLlxuICovXG5mdW5jdGlvbiBkZnNGcm9tTm9kZShncmFwaCwgbm9kZSwgY2FsbGJhY2spIHtcbiAgaWYgKCFpc0dyYXBoKGdyYXBoKSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2dyYXBob2xvZ3ktdHJhdmVyc2FsL2RmczogZXhwZWN0aW5nIGEgZ3JhcGhvbG9neSBpbnN0YW5jZS4nKTtcblxuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKVxuICAgIHRocm93IG5ldyBFcnJvcignZ3JhcGhvbG9neS10cmF2ZXJzYWwvZGZzOiBnaXZlbiBjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbi4nKTtcblxuICAvLyBFYXJseSB0ZXJtaW5hdGlvblxuICBpZiAoZ3JhcGgub3JkZXIgPT09IDApXG4gICAgcmV0dXJuO1xuXG4gIG5vZGUgPSAnJyArIG5vZGU7XG5cbiAgdmFyIHNlZW4gPSBuZXcgU2V0KCk7XG4gIHZhciBzdGFjayA9IFtdO1xuICB2YXIgZGVwdGgsIHJlY29yZDtcblxuICBmdW5jdGlvbiBuZWlnaGJvckNhbGxiYWNrKG5laWdoYm9yLCBhdHRyKSB7XG4gICAgaWYgKHNlZW4uaGFzKG5laWdoYm9yKSlcbiAgICAgIHJldHVybjtcblxuICAgIHNlZW4uYWRkKG5laWdoYm9yKTtcbiAgICBzdGFjay5wdXNoKG5ldyBUcmF2ZXJzYWxSZWNvcmQobmVpZ2hib3IsIGF0dHIsIGRlcHRoICsgMSkpO1xuICB9XG5cbiAgc2Vlbi5hZGQobm9kZSk7XG4gIHN0YWNrLnB1c2gobmV3IFRyYXZlcnNhbFJlY29yZChub2RlLCBncmFwaC5nZXROb2RlQXR0cmlidXRlcyhub2RlKSwgMCkpO1xuXG4gIHdoaWxlIChzdGFjay5sZW5ndGggIT09IDApIHtcbiAgICByZWNvcmQgPSBzdGFjay5wb3AoKTtcbiAgICBkZXB0aCA9IHJlY29yZC5kZXB0aDtcblxuICAgIGNhbGxiYWNrKHJlY29yZC5ub2RlLCByZWNvcmQuYXR0cmlidXRlcywgZGVwdGgpO1xuXG4gICAgZ3JhcGguZm9yRWFjaE91dGJvdW5kTmVpZ2hib3IocmVjb3JkLm5vZGUsIG5laWdoYm9yQ2FsbGJhY2spO1xuICB9XG59XG5cbmV4cG9ydHMuZGZzID0gZGZzO1xuZXhwb3J0cy5kZnNGcm9tTm9kZSA9IGRmc0Zyb21Ob2RlO1xuIiwgInZhciBiZnNNb2R1bGUgPSByZXF1aXJlKCcuL2Jmcy5qcycpO1xudmFyIGRmc01vZHVsZSA9IHJlcXVpcmUoJy4vZGZzLmpzJyk7XG5cbnZhciBrO1xuXG5mb3IgKGsgaW4gYmZzTW9kdWxlKVxuICBleHBvcnRzW2tdID0gYmZzTW9kdWxlW2tdO1xuXG5mb3IgKGsgaW4gZGZzTW9kdWxlKVxuICBleHBvcnRzW2tdID0gZGZzTW9kdWxlW2tdO1xuIiwgIi8vIHRoZXNlIGFyZW4ndCByZWFsbHkgcHJpdmF0ZSwgYnV0IG5vciBhcmUgdGhleSByZWFsbHkgdXNlZnVsIHRvIGRvY3VtZW50XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgTHV4b25FcnJvciBleHRlbmRzIEVycm9yIHt9XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWREYXRlVGltZUVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKHJlYXNvbikge1xuICAgIHN1cGVyKGBJbnZhbGlkIERhdGVUaW1lOiAke3JlYXNvbi50b01lc3NhZ2UoKX1gKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkSW50ZXJ2YWxFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihyZWFzb24pIHtcbiAgICBzdXBlcihgSW52YWxpZCBJbnRlcnZhbDogJHtyZWFzb24udG9NZXNzYWdlKCl9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgSW52YWxpZER1cmF0aW9uRXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHtcbiAgY29uc3RydWN0b3IocmVhc29uKSB7XG4gICAgc3VwZXIoYEludmFsaWQgRHVyYXRpb246ICR7cmVhc29uLnRvTWVzc2FnZSgpfWApO1xuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGNsYXNzIENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7fVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkVW5pdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKHVuaXQpIHtcbiAgICBzdXBlcihgSW52YWxpZCB1bml0ICR7dW5pdH1gKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige31cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgWm9uZUlzQWJzdHJhY3RFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIlpvbmUgaXMgYW4gYWJzdHJhY3QgY2xhc3NcIik7XG4gIH1cbn1cbiIsICIvKipcbiAqIEBwcml2YXRlXG4gKi9cblxuY29uc3QgbiA9IFwibnVtZXJpY1wiLFxuICBzID0gXCJzaG9ydFwiLFxuICBsID0gXCJsb25nXCI7XG5cbmV4cG9ydCBjb25zdCBEQVRFX1NIT1JUID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbixcbiAgZGF5OiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVfTUVEID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogcyxcbiAgZGF5OiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVfTUVEX1dJVEhfV0VFS0RBWSA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IHMsXG4gIGRheTogbixcbiAgd2Vla2RheTogcyxcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFX0ZVTEwgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBsLFxuICBkYXk6IG4sXG59O1xuXG5leHBvcnQgY29uc3QgREFURV9IVUdFID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbCxcbiAgZGF5OiBuLFxuICB3ZWVrZGF5OiBsLFxufTtcblxuZXhwb3J0IGNvbnN0IFRJTUVfU0lNUExFID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG59O1xuXG5leHBvcnQgY29uc3QgVElNRV9XSVRIX1NFQ09ORFMgPSB7XG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQgPSB7XG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxuICB0aW1lWm9uZU5hbWU6IHMsXG59O1xuXG5leHBvcnQgY29uc3QgVElNRV9XSVRIX0xPTkdfT0ZGU0VUID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbiAgdGltZVpvbmVOYW1lOiBsLFxufTtcblxuZXhwb3J0IGNvbnN0IFRJTUVfMjRfU0lNUExFID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIGhvdXJDeWNsZTogXCJoMjNcIixcbn07XG5cbmV4cG9ydCBjb25zdCBUSU1FXzI0X1dJVEhfU0VDT05EUyA9IHtcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBzZWNvbmQ6IG4sXG4gIGhvdXJDeWNsZTogXCJoMjNcIixcbn07XG5cbmV4cG9ydCBjb25zdCBUSU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VUID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbiAgaG91ckN5Y2xlOiBcImgyM1wiLFxuICB0aW1lWm9uZU5hbWU6IHMsXG59O1xuXG5leHBvcnQgY29uc3QgVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbiAgaG91ckN5Y2xlOiBcImgyM1wiLFxuICB0aW1lWm9uZU5hbWU6IGwsXG59O1xuXG5leHBvcnQgY29uc3QgREFURVRJTUVfU0hPUlQgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBuLFxuICBkYXk6IG4sXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBuLFxuICBkYXk6IG4sXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVUSU1FX01FRCA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IHMsXG4gIGRheTogbixcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBzLFxuICBkYXk6IG4sXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBzLFxuICBkYXk6IG4sXG4gIHdlZWtkYXk6IHMsXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9GVUxMID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbCxcbiAgZGF5OiBuLFxuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHRpbWVab25lTmFtZTogcyxcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IGwsXG4gIGRheTogbixcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBzZWNvbmQ6IG4sXG4gIHRpbWVab25lTmFtZTogcyxcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9IVUdFID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbCxcbiAgZGF5OiBuLFxuICB3ZWVrZGF5OiBsLFxuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHRpbWVab25lTmFtZTogbCxcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUyA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IGwsXG4gIGRheTogbixcbiAgd2Vla2RheTogbCxcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBzZWNvbmQ6IG4sXG4gIHRpbWVab25lTmFtZTogbCxcbn07XG4iLCAiLypcbiAgVGhpcyBpcyBqdXN0IGEganVuayBkcmF3ZXIsIGNvbnRhaW5pbmcgYW55dGhpbmcgdXNlZCBhY3Jvc3MgbXVsdGlwbGUgY2xhc3Nlcy5cbiAgQmVjYXVzZSBMdXhvbiBpcyBzbWFsbChpc2gpLCB0aGlzIHNob3VsZCBzdGF5IHNtYWxsIGFuZCB3ZSB3b24ndCB3b3JyeSBhYm91dCBzcGxpdHRpbmdcbiAgaXQgdXAgaW50bywgc2F5LCBwYXJzaW5nVXRpbC5qcyBhbmQgYmFzaWNVdGlsLmpzIGFuZCBzbyBvbi4gQnV0IHRoZXkgYXJlIGRpdmlkZWQgdXAgYnkgZmVhdHVyZSBhcmVhLlxuKi9cblxuaW1wb3J0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzLmpzXCI7XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuXG4vLyBUWVBFU1xuXG5leHBvcnQgZnVuY3Rpb24gaXNVbmRlZmluZWQobykge1xuICByZXR1cm4gdHlwZW9mIG8gPT09IFwidW5kZWZpbmVkXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlcihvKSB7XG4gIHJldHVybiB0eXBlb2YgbyA9PT0gXCJudW1iZXJcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW50ZWdlcihvKSB7XG4gIHJldHVybiB0eXBlb2YgbyA9PT0gXCJudW1iZXJcIiAmJiBvICUgMSA9PT0gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nKG8pIHtcbiAgcmV0dXJuIHR5cGVvZiBvID09PSBcInN0cmluZ1wiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlKG8pIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKSA9PT0gXCJbb2JqZWN0IERhdGVdXCI7XG59XG5cbi8vIENBUEFCSUxJVElFU1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzUmVsYXRpdmUoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHR5cGVvZiBJbnRsICE9PSBcInVuZGVmaW5lZFwiICYmICEhSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQ7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8gT0JKRUNUUyBBTkQgQVJSQVlTXG5cbmV4cG9ydCBmdW5jdGlvbiBtYXliZUFycmF5KHRoaW5nKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHRoaW5nKSA/IHRoaW5nIDogW3RoaW5nXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJlc3RCeShhcnIsIGJ5LCBjb21wYXJlKSB7XG4gIGlmIChhcnIubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gYXJyLnJlZHVjZSgoYmVzdCwgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHBhaXIgPSBbYnkobmV4dCksIG5leHRdO1xuICAgIGlmICghYmVzdCkge1xuICAgICAgcmV0dXJuIHBhaXI7XG4gICAgfSBlbHNlIGlmIChjb21wYXJlKGJlc3RbMF0sIHBhaXJbMF0pID09PSBiZXN0WzBdKSB7XG4gICAgICByZXR1cm4gYmVzdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHBhaXI7XG4gICAgfVxuICB9LCBudWxsKVsxXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBpY2sob2JqLCBrZXlzKSB7XG4gIHJldHVybiBrZXlzLnJlZHVjZSgoYSwgaykgPT4ge1xuICAgIGFba10gPSBvYmpba107XG4gICAgcmV0dXJuIGE7XG4gIH0sIHt9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG59XG5cbi8vIE5VTUJFUlMgQU5EIFNUUklOR1NcblxuZXhwb3J0IGZ1bmN0aW9uIGludGVnZXJCZXR3ZWVuKHRoaW5nLCBib3R0b20sIHRvcCkge1xuICByZXR1cm4gaXNJbnRlZ2VyKHRoaW5nKSAmJiB0aGluZyA+PSBib3R0b20gJiYgdGhpbmcgPD0gdG9wO1xufVxuXG4vLyB4ICUgbiBidXQgdGFrZXMgdGhlIHNpZ24gb2YgbiBpbnN0ZWFkIG9mIHhcbmV4cG9ydCBmdW5jdGlvbiBmbG9vck1vZCh4LCBuKSB7XG4gIHJldHVybiB4IC0gbiAqIE1hdGguZmxvb3IoeCAvIG4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFkU3RhcnQoaW5wdXQsIG4gPSAyKSB7XG4gIGNvbnN0IGlzTmVnID0gaW5wdXQgPCAwO1xuICBsZXQgcGFkZGVkO1xuICBpZiAoaXNOZWcpIHtcbiAgICBwYWRkZWQgPSBcIi1cIiArIChcIlwiICsgLWlucHV0KS5wYWRTdGFydChuLCBcIjBcIik7XG4gIH0gZWxzZSB7XG4gICAgcGFkZGVkID0gKFwiXCIgKyBpbnB1dCkucGFkU3RhcnQobiwgXCIwXCIpO1xuICB9XG4gIHJldHVybiBwYWRkZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUludGVnZXIoc3RyaW5nKSB7XG4gIGlmIChpc1VuZGVmaW5lZChzdHJpbmcpIHx8IHN0cmluZyA9PT0gbnVsbCB8fCBzdHJpbmcgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBwYXJzZUludChzdHJpbmcsIDEwKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VGbG9hdGluZyhzdHJpbmcpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKHN0cmluZykgfHwgc3RyaW5nID09PSBudWxsIHx8IHN0cmluZyA9PT0gXCJcIikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoc3RyaW5nKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VNaWxsaXMoZnJhY3Rpb24pIHtcbiAgLy8gUmV0dXJuIHVuZGVmaW5lZCAoaW5zdGVhZCBvZiAwKSBpbiB0aGVzZSBjYXNlcywgd2hlcmUgZnJhY3Rpb24gaXMgbm90IHNldFxuICBpZiAoaXNVbmRlZmluZWQoZnJhY3Rpb24pIHx8IGZyYWN0aW9uID09PSBudWxsIHx8IGZyYWN0aW9uID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBmID0gcGFyc2VGbG9hdChcIjAuXCIgKyBmcmFjdGlvbikgKiAxMDAwO1xuICAgIHJldHVybiBNYXRoLmZsb29yKGYpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByb3VuZFRvKG51bWJlciwgZGlnaXRzLCB0b3dhcmRaZXJvID0gZmFsc2UpIHtcbiAgY29uc3QgZmFjdG9yID0gMTAgKiogZGlnaXRzLFxuICAgIHJvdW5kZXIgPSB0b3dhcmRaZXJvID8gTWF0aC50cnVuYyA6IE1hdGgucm91bmQ7XG4gIHJldHVybiByb3VuZGVyKG51bWJlciAqIGZhY3RvcikgLyBmYWN0b3I7XG59XG5cbi8vIERBVEUgQkFTSUNTXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlYXBZZWFyKHllYXIpIHtcbiAgcmV0dXJuIHllYXIgJSA0ID09PSAwICYmICh5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF5c0luWWVhcih5ZWFyKSB7XG4gIHJldHVybiBpc0xlYXBZZWFyKHllYXIpID8gMzY2IDogMzY1O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF5c0luTW9udGgoeWVhciwgbW9udGgpIHtcbiAgY29uc3QgbW9kTW9udGggPSBmbG9vck1vZChtb250aCAtIDEsIDEyKSArIDEsXG4gICAgbW9kWWVhciA9IHllYXIgKyAobW9udGggLSBtb2RNb250aCkgLyAxMjtcblxuICBpZiAobW9kTW9udGggPT09IDIpIHtcbiAgICByZXR1cm4gaXNMZWFwWWVhcihtb2RZZWFyKSA/IDI5IDogMjg7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFszMSwgbnVsbCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdW21vZE1vbnRoIC0gMV07XG4gIH1cbn1cblxuLy8gY292ZXJ0IGEgY2FsZW5kYXIgb2JqZWN0IHRvIGEgbG9jYWwgdGltZXN0YW1wIChlcG9jaCwgYnV0IHdpdGggdGhlIG9mZnNldCBiYWtlZCBpbilcbmV4cG9ydCBmdW5jdGlvbiBvYmpUb0xvY2FsVFMob2JqKSB7XG4gIGxldCBkID0gRGF0ZS5VVEMoXG4gICAgb2JqLnllYXIsXG4gICAgb2JqLm1vbnRoIC0gMSxcbiAgICBvYmouZGF5LFxuICAgIG9iai5ob3VyLFxuICAgIG9iai5taW51dGUsXG4gICAgb2JqLnNlY29uZCxcbiAgICBvYmoubWlsbGlzZWNvbmRcbiAgKTtcblxuICAvLyBmb3IgbGVnYWN5IHJlYXNvbnMsIHllYXJzIGJldHdlZW4gMCBhbmQgOTkgYXJlIGludGVycHJldGVkIGFzIDE5WFg7IHJldmVydCB0aGF0XG4gIGlmIChvYmoueWVhciA8IDEwMCAmJiBvYmoueWVhciA+PSAwKSB7XG4gICAgZCA9IG5ldyBEYXRlKGQpO1xuICAgIGQuc2V0VVRDRnVsbFllYXIoZC5nZXRVVENGdWxsWWVhcigpIC0gMTkwMCk7XG4gIH1cbiAgcmV0dXJuICtkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2Vla3NJbldlZWtZZWFyKHdlZWtZZWFyKSB7XG4gIGNvbnN0IHAxID1cbiAgICAgICh3ZWVrWWVhciArXG4gICAgICAgIE1hdGguZmxvb3Iod2Vla1llYXIgLyA0KSAtXG4gICAgICAgIE1hdGguZmxvb3Iod2Vla1llYXIgLyAxMDApICtcbiAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDQwMCkpICVcbiAgICAgIDcsXG4gICAgbGFzdCA9IHdlZWtZZWFyIC0gMSxcbiAgICBwMiA9IChsYXN0ICsgTWF0aC5mbG9vcihsYXN0IC8gNCkgLSBNYXRoLmZsb29yKGxhc3QgLyAxMDApICsgTWF0aC5mbG9vcihsYXN0IC8gNDAwKSkgJSA3O1xuICByZXR1cm4gcDEgPT09IDQgfHwgcDIgPT09IDMgPyA1MyA6IDUyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW50cnVuY2F0ZVllYXIoeWVhcikge1xuICBpZiAoeWVhciA+IDk5KSB7XG4gICAgcmV0dXJuIHllYXI7XG4gIH0gZWxzZSByZXR1cm4geWVhciA+IDYwID8gMTkwMCArIHllYXIgOiAyMDAwICsgeWVhcjtcbn1cblxuLy8gUEFSU0lOR1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2Vab25lSW5mbyh0cywgb2Zmc2V0Rm9ybWF0LCBsb2NhbGUsIHRpbWVab25lID0gbnVsbCkge1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpLFxuICAgIGludGxPcHRzID0ge1xuICAgICAgaG91ckN5Y2xlOiBcImgyM1wiLFxuICAgICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgICBtb250aDogXCIyLWRpZ2l0XCIsXG4gICAgICBkYXk6IFwiMi1kaWdpdFwiLFxuICAgICAgaG91cjogXCIyLWRpZ2l0XCIsXG4gICAgICBtaW51dGU6IFwiMi1kaWdpdFwiLFxuICAgIH07XG5cbiAgaWYgKHRpbWVab25lKSB7XG4gICAgaW50bE9wdHMudGltZVpvbmUgPSB0aW1lWm9uZTtcbiAgfVxuXG4gIGNvbnN0IG1vZGlmaWVkID0geyB0aW1lWm9uZU5hbWU6IG9mZnNldEZvcm1hdCwgLi4uaW50bE9wdHMgfTtcblxuICBjb25zdCBwYXJzZWQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIG1vZGlmaWVkKVxuICAgIC5mb3JtYXRUb1BhcnRzKGRhdGUpXG4gICAgLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSBcInRpbWV6b25lbmFtZVwiKTtcbiAgcmV0dXJuIHBhcnNlZCA/IHBhcnNlZC52YWx1ZSA6IG51bGw7XG59XG5cbi8vIHNpZ25lZE9mZnNldCgnLTUnLCAnMzAnKSAtPiAtMzMwXG5leHBvcnQgZnVuY3Rpb24gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cikge1xuICBsZXQgb2ZmSG91ciA9IHBhcnNlSW50KG9mZkhvdXJTdHIsIDEwKTtcblxuICAvLyBkb24ndCB8fCB0aGlzIGJlY2F1c2Ugd2Ugd2FudCB0byBwcmVzZXJ2ZSAtMFxuICBpZiAoTnVtYmVyLmlzTmFOKG9mZkhvdXIpKSB7XG4gICAgb2ZmSG91ciA9IDA7XG4gIH1cblxuICBjb25zdCBvZmZNaW4gPSBwYXJzZUludChvZmZNaW51dGVTdHIsIDEwKSB8fCAwLFxuICAgIG9mZk1pblNpZ25lZCA9IG9mZkhvdXIgPCAwIHx8IE9iamVjdC5pcyhvZmZIb3VyLCAtMCkgPyAtb2ZmTWluIDogb2ZmTWluO1xuICByZXR1cm4gb2ZmSG91ciAqIDYwICsgb2ZmTWluU2lnbmVkO1xufVxuXG4vLyBDT0VSQ0lPTlxuXG5leHBvcnQgZnVuY3Rpb24gYXNOdW1iZXIodmFsdWUpIHtcbiAgY29uc3QgbnVtZXJpY1ZhbHVlID0gTnVtYmVyKHZhbHVlKTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIgfHwgdmFsdWUgPT09IFwiXCIgfHwgTnVtYmVyLmlzTmFOKG51bWVyaWNWYWx1ZSkpXG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBJbnZhbGlkIHVuaXQgdmFsdWUgJHt2YWx1ZX1gKTtcbiAgcmV0dXJuIG51bWVyaWNWYWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZXIpIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IHt9O1xuICBmb3IgKGNvbnN0IHUgaW4gb2JqKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5KG9iaiwgdSkpIHtcbiAgICAgIGNvbnN0IHYgPSBvYmpbdV07XG4gICAgICBpZiAodiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGwpIGNvbnRpbnVlO1xuICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVyKHUpXSA9IGFzTnVtYmVyKHYpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbm9ybWFsaXplZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE9mZnNldChvZmZzZXQsIGZvcm1hdCkge1xuICBjb25zdCBob3VycyA9IE1hdGgudHJ1bmMoTWF0aC5hYnMob2Zmc2V0IC8gNjApKSxcbiAgICBtaW51dGVzID0gTWF0aC50cnVuYyhNYXRoLmFicyhvZmZzZXQgJSA2MCkpLFxuICAgIHNpZ24gPSBvZmZzZXQgPj0gMCA/IFwiK1wiIDogXCItXCI7XG5cbiAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICBjYXNlIFwic2hvcnRcIjpcbiAgICAgIHJldHVybiBgJHtzaWdufSR7cGFkU3RhcnQoaG91cnMsIDIpfToke3BhZFN0YXJ0KG1pbnV0ZXMsIDIpfWA7XG4gICAgY2FzZSBcIm5hcnJvd1wiOlxuICAgICAgcmV0dXJuIGAke3NpZ259JHtob3Vyc30ke21pbnV0ZXMgPiAwID8gYDoke21pbnV0ZXN9YCA6IFwiXCJ9YDtcbiAgICBjYXNlIFwidGVjaGllXCI6XG4gICAgICByZXR1cm4gYCR7c2lnbn0ke3BhZFN0YXJ0KGhvdXJzLCAyKX0ke3BhZFN0YXJ0KG1pbnV0ZXMsIDIpfWA7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBWYWx1ZSBmb3JtYXQgJHtmb3JtYXR9IGlzIG91dCBvZiByYW5nZSBmb3IgcHJvcGVydHkgZm9ybWF0YCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRpbWVPYmplY3Qob2JqKSB7XG4gIHJldHVybiBwaWNrKG9iaiwgW1wiaG91clwiLCBcIm1pbnV0ZVwiLCBcInNlY29uZFwiLCBcIm1pbGxpc2Vjb25kXCJdKTtcbn1cblxuZXhwb3J0IGNvbnN0IGlhbmFSZWdleCA9IC9bQS1aYS16XystXXsxLDI1Nn0oOj9cXC9bQS1aYS16MC05XystXXsxLDI1Nn0oXFwvW0EtWmEtejAtOV8rLV17MSwyNTZ9KT8pPy87XG4iLCAiaW1wb3J0ICogYXMgRm9ybWF0cyBmcm9tIFwiLi9mb3JtYXRzLmpzXCI7XG5pbXBvcnQgeyBwaWNrIH0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuXG5mdW5jdGlvbiBzdHJpbmdpZnkob2JqKSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmosIE9iamVjdC5rZXlzKG9iaikuc29ydCgpKTtcbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5cbmV4cG9ydCBjb25zdCBtb250aHNMb25nID0gW1xuICBcIkphbnVhcnlcIixcbiAgXCJGZWJydWFyeVwiLFxuICBcIk1hcmNoXCIsXG4gIFwiQXByaWxcIixcbiAgXCJNYXlcIixcbiAgXCJKdW5lXCIsXG4gIFwiSnVseVwiLFxuICBcIkF1Z3VzdFwiLFxuICBcIlNlcHRlbWJlclwiLFxuICBcIk9jdG9iZXJcIixcbiAgXCJOb3ZlbWJlclwiLFxuICBcIkRlY2VtYmVyXCIsXG5dO1xuXG5leHBvcnQgY29uc3QgbW9udGhzU2hvcnQgPSBbXG4gIFwiSmFuXCIsXG4gIFwiRmViXCIsXG4gIFwiTWFyXCIsXG4gIFwiQXByXCIsXG4gIFwiTWF5XCIsXG4gIFwiSnVuXCIsXG4gIFwiSnVsXCIsXG4gIFwiQXVnXCIsXG4gIFwiU2VwXCIsXG4gIFwiT2N0XCIsXG4gIFwiTm92XCIsXG4gIFwiRGVjXCIsXG5dO1xuXG5leHBvcnQgY29uc3QgbW9udGhzTmFycm93ID0gW1wiSlwiLCBcIkZcIiwgXCJNXCIsIFwiQVwiLCBcIk1cIiwgXCJKXCIsIFwiSlwiLCBcIkFcIiwgXCJTXCIsIFwiT1wiLCBcIk5cIiwgXCJEXCJdO1xuXG5leHBvcnQgZnVuY3Rpb24gbW9udGhzKGxlbmd0aCkge1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgXCJuYXJyb3dcIjpcbiAgICAgIHJldHVybiBbLi4ubW9udGhzTmFycm93XTtcbiAgICBjYXNlIFwic2hvcnRcIjpcbiAgICAgIHJldHVybiBbLi4ubW9udGhzU2hvcnRdO1xuICAgIGNhc2UgXCJsb25nXCI6XG4gICAgICByZXR1cm4gWy4uLm1vbnRoc0xvbmddO1xuICAgIGNhc2UgXCJudW1lcmljXCI6XG4gICAgICByZXR1cm4gW1wiMVwiLCBcIjJcIiwgXCIzXCIsIFwiNFwiLCBcIjVcIiwgXCI2XCIsIFwiN1wiLCBcIjhcIiwgXCI5XCIsIFwiMTBcIiwgXCIxMVwiLCBcIjEyXCJdO1xuICAgIGNhc2UgXCIyLWRpZ2l0XCI6XG4gICAgICByZXR1cm4gW1wiMDFcIiwgXCIwMlwiLCBcIjAzXCIsIFwiMDRcIiwgXCIwNVwiLCBcIjA2XCIsIFwiMDdcIiwgXCIwOFwiLCBcIjA5XCIsIFwiMTBcIiwgXCIxMVwiLCBcIjEyXCJdO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2Vla2RheXNMb25nID0gW1xuICBcIk1vbmRheVwiLFxuICBcIlR1ZXNkYXlcIixcbiAgXCJXZWRuZXNkYXlcIixcbiAgXCJUaHVyc2RheVwiLFxuICBcIkZyaWRheVwiLFxuICBcIlNhdHVyZGF5XCIsXG4gIFwiU3VuZGF5XCIsXG5dO1xuXG5leHBvcnQgY29uc3Qgd2Vla2RheXNTaG9ydCA9IFtcIk1vblwiLCBcIlR1ZVwiLCBcIldlZFwiLCBcIlRodVwiLCBcIkZyaVwiLCBcIlNhdFwiLCBcIlN1blwiXTtcblxuZXhwb3J0IGNvbnN0IHdlZWtkYXlzTmFycm93ID0gW1wiTVwiLCBcIlRcIiwgXCJXXCIsIFwiVFwiLCBcIkZcIiwgXCJTXCIsIFwiU1wiXTtcblxuZXhwb3J0IGZ1bmN0aW9uIHdlZWtkYXlzKGxlbmd0aCkge1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgXCJuYXJyb3dcIjpcbiAgICAgIHJldHVybiBbLi4ud2Vla2RheXNOYXJyb3ddO1xuICAgIGNhc2UgXCJzaG9ydFwiOlxuICAgICAgcmV0dXJuIFsuLi53ZWVrZGF5c1Nob3J0XTtcbiAgICBjYXNlIFwibG9uZ1wiOlxuICAgICAgcmV0dXJuIFsuLi53ZWVrZGF5c0xvbmddO1xuICAgIGNhc2UgXCJudW1lcmljXCI6XG4gICAgICByZXR1cm4gW1wiMVwiLCBcIjJcIiwgXCIzXCIsIFwiNFwiLCBcIjVcIiwgXCI2XCIsIFwiN1wiXTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IG1lcmlkaWVtcyA9IFtcIkFNXCIsIFwiUE1cIl07XG5cbmV4cG9ydCBjb25zdCBlcmFzTG9uZyA9IFtcIkJlZm9yZSBDaHJpc3RcIiwgXCJBbm5vIERvbWluaVwiXTtcblxuZXhwb3J0IGNvbnN0IGVyYXNTaG9ydCA9IFtcIkJDXCIsIFwiQURcIl07XG5cbmV4cG9ydCBjb25zdCBlcmFzTmFycm93ID0gW1wiQlwiLCBcIkFcIl07XG5cbmV4cG9ydCBmdW5jdGlvbiBlcmFzKGxlbmd0aCkge1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgXCJuYXJyb3dcIjpcbiAgICAgIHJldHVybiBbLi4uZXJhc05hcnJvd107XG4gICAgY2FzZSBcInNob3J0XCI6XG4gICAgICByZXR1cm4gWy4uLmVyYXNTaG9ydF07XG4gICAgY2FzZSBcImxvbmdcIjpcbiAgICAgIHJldHVybiBbLi4uZXJhc0xvbmddO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyaWRpZW1Gb3JEYXRlVGltZShkdCkge1xuICByZXR1cm4gbWVyaWRpZW1zW2R0LmhvdXIgPCAxMiA/IDAgOiAxXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlZWtkYXlGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSB7XG4gIHJldHVybiB3ZWVrZGF5cyhsZW5ndGgpW2R0LndlZWtkYXkgLSAxXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vbnRoRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkge1xuICByZXR1cm4gbW9udGhzKGxlbmd0aClbZHQubW9udGggLSAxXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVyYUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGVyYXMobGVuZ3RoKVtkdC55ZWFyIDwgMCA/IDAgOiAxXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFJlbGF0aXZlVGltZSh1bml0LCBjb3VudCwgbnVtZXJpYyA9IFwiYWx3YXlzXCIsIG5hcnJvdyA9IGZhbHNlKSB7XG4gIGNvbnN0IHVuaXRzID0ge1xuICAgIHllYXJzOiBbXCJ5ZWFyXCIsIFwieXIuXCJdLFxuICAgIHF1YXJ0ZXJzOiBbXCJxdWFydGVyXCIsIFwicXRyLlwiXSxcbiAgICBtb250aHM6IFtcIm1vbnRoXCIsIFwibW8uXCJdLFxuICAgIHdlZWtzOiBbXCJ3ZWVrXCIsIFwid2suXCJdLFxuICAgIGRheXM6IFtcImRheVwiLCBcImRheVwiLCBcImRheXNcIl0sXG4gICAgaG91cnM6IFtcImhvdXJcIiwgXCJoci5cIl0sXG4gICAgbWludXRlczogW1wibWludXRlXCIsIFwibWluLlwiXSxcbiAgICBzZWNvbmRzOiBbXCJzZWNvbmRcIiwgXCJzZWMuXCJdLFxuICB9O1xuXG4gIGNvbnN0IGxhc3RhYmxlID0gW1wiaG91cnNcIiwgXCJtaW51dGVzXCIsIFwic2Vjb25kc1wiXS5pbmRleE9mKHVuaXQpID09PSAtMTtcblxuICBpZiAobnVtZXJpYyA9PT0gXCJhdXRvXCIgJiYgbGFzdGFibGUpIHtcbiAgICBjb25zdCBpc0RheSA9IHVuaXQgPT09IFwiZGF5c1wiO1xuICAgIHN3aXRjaCAoY291bnQpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgcmV0dXJuIGlzRGF5ID8gXCJ0b21vcnJvd1wiIDogYG5leHQgJHt1bml0c1t1bml0XVswXX1gO1xuICAgICAgY2FzZSAtMTpcbiAgICAgICAgcmV0dXJuIGlzRGF5ID8gXCJ5ZXN0ZXJkYXlcIiA6IGBsYXN0ICR7dW5pdHNbdW5pdF1bMF19YDtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgcmV0dXJuIGlzRGF5ID8gXCJ0b2RheVwiIDogYHRoaXMgJHt1bml0c1t1bml0XVswXX1gO1xuICAgICAgZGVmYXVsdDogLy8gZmFsbCB0aHJvdWdoXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaXNJblBhc3QgPSBPYmplY3QuaXMoY291bnQsIC0wKSB8fCBjb3VudCA8IDAsXG4gICAgZm10VmFsdWUgPSBNYXRoLmFicyhjb3VudCksXG4gICAgc2luZ3VsYXIgPSBmbXRWYWx1ZSA9PT0gMSxcbiAgICBsaWxVbml0cyA9IHVuaXRzW3VuaXRdLFxuICAgIGZtdFVuaXQgPSBuYXJyb3dcbiAgICAgID8gc2luZ3VsYXJcbiAgICAgICAgPyBsaWxVbml0c1sxXVxuICAgICAgICA6IGxpbFVuaXRzWzJdIHx8IGxpbFVuaXRzWzFdXG4gICAgICA6IHNpbmd1bGFyXG4gICAgICA/IHVuaXRzW3VuaXRdWzBdXG4gICAgICA6IHVuaXQ7XG4gIHJldHVybiBpc0luUGFzdCA/IGAke2ZtdFZhbHVlfSAke2ZtdFVuaXR9IGFnb2AgOiBgaW4gJHtmbXRWYWx1ZX0gJHtmbXRVbml0fWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTdHJpbmcoa25vd25Gb3JtYXQpIHtcbiAgLy8gdGhlc2UgYWxsIGhhdmUgdGhlIG9mZnNldHMgcmVtb3ZlZCBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZW1cbiAgLy8gd2l0aG91dCBhbGwgdGhlIGludGwgc3R1ZmYgdGhpcyBpcyBiYWNrZmlsbGluZ1xuICBjb25zdCBmaWx0ZXJlZCA9IHBpY2soa25vd25Gb3JtYXQsIFtcbiAgICAgIFwid2Vla2RheVwiLFxuICAgICAgXCJlcmFcIixcbiAgICAgIFwieWVhclwiLFxuICAgICAgXCJtb250aFwiLFxuICAgICAgXCJkYXlcIixcbiAgICAgIFwiaG91clwiLFxuICAgICAgXCJtaW51dGVcIixcbiAgICAgIFwic2Vjb25kXCIsXG4gICAgICBcInRpbWVab25lTmFtZVwiLFxuICAgICAgXCJob3VyQ3ljbGVcIixcbiAgICBdKSxcbiAgICBrZXkgPSBzdHJpbmdpZnkoZmlsdGVyZWQpLFxuICAgIGRhdGVUaW1lSHVnZSA9IFwiRUVFRSwgTExMTCBkLCB5eXl5LCBoOm1tIGFcIjtcbiAgc3dpdGNoIChrZXkpIHtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVfU0hPUlQpOlxuICAgICAgcmV0dXJuIFwiTS9kL3l5eXlcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVfTUVEKTpcbiAgICAgIHJldHVybiBcIkxMTCBkLCB5eXl5XCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFX01FRF9XSVRIX1dFRUtEQVkpOlxuICAgICAgcmV0dXJuIFwiRUVFLCBMTEwgZCwgeXl5eVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURV9GVUxMKTpcbiAgICAgIHJldHVybiBcIkxMTEwgZCwgeXl5eVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURV9IVUdFKTpcbiAgICAgIHJldHVybiBcIkVFRUUsIExMTEwgZCwgeXl5eVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuVElNRV9TSU1QTEUpOlxuICAgICAgcmV0dXJuIFwiaDptbSBhXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5USU1FX1dJVEhfU0VDT05EUyk6XG4gICAgICByZXR1cm4gXCJoOm1tOnNzIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLlRJTUVfV0lUSF9TSE9SVF9PRkZTRVQpOlxuICAgICAgcmV0dXJuIFwiaDptbSBhXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5USU1FX1dJVEhfTE9OR19PRkZTRVQpOlxuICAgICAgcmV0dXJuIFwiaDptbSBhXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5USU1FXzI0X1NJTVBMRSk6XG4gICAgICByZXR1cm4gXCJISDptbVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuVElNRV8yNF9XSVRIX1NFQ09ORFMpOlxuICAgICAgcmV0dXJuIFwiSEg6bW06c3NcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLlRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQpOlxuICAgICAgcmV0dXJuIFwiSEg6bW1cIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLlRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCk6XG4gICAgICByZXR1cm4gXCJISDptbVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfU0hPUlQpOlxuICAgICAgcmV0dXJuIFwiTS9kL3l5eXksIGg6bW0gYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfTUVEKTpcbiAgICAgIHJldHVybiBcIkxMTCBkLCB5eXl5LCBoOm1tIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVUSU1FX0ZVTEwpOlxuICAgICAgcmV0dXJuIFwiTExMTCBkLCB5eXl5LCBoOm1tIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVUSU1FX0hVR0UpOlxuICAgICAgcmV0dXJuIGRhdGVUaW1lSHVnZTtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUyk6XG4gICAgICByZXR1cm4gXCJNL2QveXl5eSwgaDptbTpzcyBhXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTKTpcbiAgICAgIHJldHVybiBcIkxMTCBkLCB5eXl5LCBoOm1tOnNzIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkpOlxuICAgICAgcmV0dXJuIFwiRUVFLCBkIExMTCB5eXl5LCBoOm1tIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTKTpcbiAgICAgIHJldHVybiBcIkxMTEwgZCwgeXl5eSwgaDptbTpzcyBhXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUyk6XG4gICAgICByZXR1cm4gXCJFRUVFLCBMTExMIGQsIHl5eXksIGg6bW06c3MgYVwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZGF0ZVRpbWVIdWdlO1xuICB9XG59XG4iLCAiaW1wb3J0ICogYXMgRW5nbGlzaCBmcm9tIFwiLi9lbmdsaXNoLmpzXCI7XG5pbXBvcnQgKiBhcyBGb3JtYXRzIGZyb20gXCIuL2Zvcm1hdHMuanNcIjtcbmltcG9ydCB7IHBhZFN0YXJ0IH0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuXG5mdW5jdGlvbiBzdHJpbmdpZnlUb2tlbnMoc3BsaXRzLCB0b2tlblRvU3RyaW5nKSB7XG4gIGxldCBzID0gXCJcIjtcbiAgZm9yIChjb25zdCB0b2tlbiBvZiBzcGxpdHMpIHtcbiAgICBpZiAodG9rZW4ubGl0ZXJhbCkge1xuICAgICAgcyArPSB0b2tlbi52YWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMgKz0gdG9rZW5Ub1N0cmluZyh0b2tlbi52YWwpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcztcbn1cblxuY29uc3QgbWFjcm9Ub2tlblRvRm9ybWF0T3B0cyA9IHtcbiAgRDogRm9ybWF0cy5EQVRFX1NIT1JULFxuICBERDogRm9ybWF0cy5EQVRFX01FRCxcbiAgREREOiBGb3JtYXRzLkRBVEVfRlVMTCxcbiAgRERERDogRm9ybWF0cy5EQVRFX0hVR0UsXG4gIHQ6IEZvcm1hdHMuVElNRV9TSU1QTEUsXG4gIHR0OiBGb3JtYXRzLlRJTUVfV0lUSF9TRUNPTkRTLFxuICB0dHQ6IEZvcm1hdHMuVElNRV9XSVRIX1NIT1JUX09GRlNFVCxcbiAgdHR0dDogRm9ybWF0cy5USU1FX1dJVEhfTE9OR19PRkZTRVQsXG4gIFQ6IEZvcm1hdHMuVElNRV8yNF9TSU1QTEUsXG4gIFRUOiBGb3JtYXRzLlRJTUVfMjRfV0lUSF9TRUNPTkRTLFxuICBUVFQ6IEZvcm1hdHMuVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCxcbiAgVFRUVDogRm9ybWF0cy5USU1FXzI0X1dJVEhfTE9OR19PRkZTRVQsXG4gIGY6IEZvcm1hdHMuREFURVRJTUVfU0hPUlQsXG4gIGZmOiBGb3JtYXRzLkRBVEVUSU1FX01FRCxcbiAgZmZmOiBGb3JtYXRzLkRBVEVUSU1FX0ZVTEwsXG4gIGZmZmY6IEZvcm1hdHMuREFURVRJTUVfSFVHRSxcbiAgRjogRm9ybWF0cy5EQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMsXG4gIEZGOiBGb3JtYXRzLkRBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMsXG4gIEZGRjogRm9ybWF0cy5EQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyxcbiAgRkZGRjogRm9ybWF0cy5EQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUyxcbn07XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGb3JtYXR0ZXIge1xuICBzdGF0aWMgY3JlYXRlKGxvY2FsZSwgb3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIG5ldyBGb3JtYXR0ZXIobG9jYWxlLCBvcHRzKTtcbiAgfVxuXG4gIHN0YXRpYyBwYXJzZUZvcm1hdChmbXQpIHtcbiAgICBsZXQgY3VycmVudCA9IG51bGwsXG4gICAgICBjdXJyZW50RnVsbCA9IFwiXCIsXG4gICAgICBicmFja2V0ZWQgPSBmYWxzZTtcbiAgICBjb25zdCBzcGxpdHMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZtdC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgYyA9IGZtdC5jaGFyQXQoaSk7XG4gICAgICBpZiAoYyA9PT0gXCInXCIpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRGdWxsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBzcGxpdHMucHVzaCh7IGxpdGVyYWw6IGJyYWNrZXRlZCwgdmFsOiBjdXJyZW50RnVsbCB9KTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50ID0gbnVsbDtcbiAgICAgICAgY3VycmVudEZ1bGwgPSBcIlwiO1xuICAgICAgICBicmFja2V0ZWQgPSAhYnJhY2tldGVkO1xuICAgICAgfSBlbHNlIGlmIChicmFja2V0ZWQpIHtcbiAgICAgICAgY3VycmVudEZ1bGwgKz0gYztcbiAgICAgIH0gZWxzZSBpZiAoYyA9PT0gY3VycmVudCkge1xuICAgICAgICBjdXJyZW50RnVsbCArPSBjO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGN1cnJlbnRGdWxsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBzcGxpdHMucHVzaCh7IGxpdGVyYWw6IGZhbHNlLCB2YWw6IGN1cnJlbnRGdWxsIH0pO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRGdWxsID0gYztcbiAgICAgICAgY3VycmVudCA9IGM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRGdWxsLmxlbmd0aCA+IDApIHtcbiAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogYnJhY2tldGVkLCB2YWw6IGN1cnJlbnRGdWxsIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzcGxpdHM7XG4gIH1cblxuICBzdGF0aWMgbWFjcm9Ub2tlblRvRm9ybWF0T3B0cyh0b2tlbikge1xuICAgIHJldHVybiBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzW3Rva2VuXTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGxvY2FsZSwgZm9ybWF0T3B0cykge1xuICAgIHRoaXMub3B0cyA9IGZvcm1hdE9wdHM7XG4gICAgdGhpcy5sb2MgPSBsb2NhbGU7XG4gICAgdGhpcy5zeXN0ZW1Mb2MgPSBudWxsO1xuICB9XG5cbiAgZm9ybWF0V2l0aFN5c3RlbURlZmF1bHQoZHQsIG9wdHMpIHtcbiAgICBpZiAodGhpcy5zeXN0ZW1Mb2MgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuc3lzdGVtTG9jID0gdGhpcy5sb2MucmVkZWZhdWx0VG9TeXN0ZW0oKTtcbiAgICB9XG4gICAgY29uc3QgZGYgPSB0aGlzLnN5c3RlbUxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7XG4gICAgcmV0dXJuIGRmLmZvcm1hdCgpO1xuICB9XG5cbiAgZm9ybWF0RGF0ZVRpbWUoZHQsIG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IGRmID0gdGhpcy5sb2MuZHRGb3JtYXR0ZXIoZHQsIHsgLi4udGhpcy5vcHRzLCAuLi5vcHRzIH0pO1xuICAgIHJldHVybiBkZi5mb3JtYXQoKTtcbiAgfVxuXG4gIGZvcm1hdERhdGVUaW1lUGFydHMoZHQsIG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IGRmID0gdGhpcy5sb2MuZHRGb3JtYXR0ZXIoZHQsIHsgLi4udGhpcy5vcHRzLCAuLi5vcHRzIH0pO1xuICAgIHJldHVybiBkZi5mb3JtYXRUb1BhcnRzKCk7XG4gIH1cblxuICByZXNvbHZlZE9wdGlvbnMoZHQsIG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IGRmID0gdGhpcy5sb2MuZHRGb3JtYXR0ZXIoZHQsIHsgLi4udGhpcy5vcHRzLCAuLi5vcHRzIH0pO1xuICAgIHJldHVybiBkZi5yZXNvbHZlZE9wdGlvbnMoKTtcbiAgfVxuXG4gIG51bShuLCBwID0gMCkge1xuICAgIC8vIHdlIGdldCBzb21lIHBlcmYgb3V0IG9mIGRvaW5nIHRoaXMgaGVyZSwgYW5ub3lpbmdseVxuICAgIGlmICh0aGlzLm9wdHMuZm9yY2VTaW1wbGUpIHtcbiAgICAgIHJldHVybiBwYWRTdGFydChuLCBwKTtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRzID0geyAuLi50aGlzLm9wdHMgfTtcblxuICAgIGlmIChwID4gMCkge1xuICAgICAgb3B0cy5wYWRUbyA9IHA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubG9jLm51bWJlckZvcm1hdHRlcihvcHRzKS5mb3JtYXQobik7XG4gIH1cblxuICBmb3JtYXREYXRlVGltZUZyb21TdHJpbmcoZHQsIGZtdCkge1xuICAgIGNvbnN0IGtub3duRW5nbGlzaCA9IHRoaXMubG9jLmxpc3RpbmdNb2RlKCkgPT09IFwiZW5cIixcbiAgICAgIHVzZURhdGVUaW1lRm9ybWF0dGVyID0gdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgJiYgdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgIT09IFwiZ3JlZ29yeVwiLFxuICAgICAgc3RyaW5nID0gKG9wdHMsIGV4dHJhY3QpID0+IHRoaXMubG9jLmV4dHJhY3QoZHQsIG9wdHMsIGV4dHJhY3QpLFxuICAgICAgZm9ybWF0T2Zmc2V0ID0gKG9wdHMpID0+IHtcbiAgICAgICAgaWYgKGR0LmlzT2Zmc2V0Rml4ZWQgJiYgZHQub2Zmc2V0ID09PSAwICYmIG9wdHMuYWxsb3daKSB7XG4gICAgICAgICAgcmV0dXJuIFwiWlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGR0LmlzVmFsaWQgPyBkdC56b25lLmZvcm1hdE9mZnNldChkdC50cywgb3B0cy5mb3JtYXQpIDogXCJcIjtcbiAgICAgIH0sXG4gICAgICBtZXJpZGllbSA9ICgpID0+XG4gICAgICAgIGtub3duRW5nbGlzaFxuICAgICAgICAgID8gRW5nbGlzaC5tZXJpZGllbUZvckRhdGVUaW1lKGR0KVxuICAgICAgICAgIDogc3RyaW5nKHsgaG91cjogXCJudW1lcmljXCIsIGhvdXJDeWNsZTogXCJoMTJcIiB9LCBcImRheXBlcmlvZFwiKSxcbiAgICAgIG1vbnRoID0gKGxlbmd0aCwgc3RhbmRhbG9uZSkgPT5cbiAgICAgICAga25vd25FbmdsaXNoXG4gICAgICAgICAgPyBFbmdsaXNoLm1vbnRoRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aClcbiAgICAgICAgICA6IHN0cmluZyhzdGFuZGFsb25lID8geyBtb250aDogbGVuZ3RoIH0gOiB7IG1vbnRoOiBsZW5ndGgsIGRheTogXCJudW1lcmljXCIgfSwgXCJtb250aFwiKSxcbiAgICAgIHdlZWtkYXkgPSAobGVuZ3RoLCBzdGFuZGFsb25lKSA9PlxuICAgICAgICBrbm93bkVuZ2xpc2hcbiAgICAgICAgICA/IEVuZ2xpc2gud2Vla2RheUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpXG4gICAgICAgICAgOiBzdHJpbmcoXG4gICAgICAgICAgICAgIHN0YW5kYWxvbmUgPyB7IHdlZWtkYXk6IGxlbmd0aCB9IDogeyB3ZWVrZGF5OiBsZW5ndGgsIG1vbnRoOiBcImxvbmdcIiwgZGF5OiBcIm51bWVyaWNcIiB9LFxuICAgICAgICAgICAgICBcIndlZWtkYXlcIlxuICAgICAgICAgICAgKSxcbiAgICAgIG1heWJlTWFjcm8gPSAodG9rZW4pID0+IHtcbiAgICAgICAgY29uc3QgZm9ybWF0T3B0cyA9IEZvcm1hdHRlci5tYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuKTtcbiAgICAgICAgaWYgKGZvcm1hdE9wdHMpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRXaXRoU3lzdGVtRGVmYXVsdChkdCwgZm9ybWF0T3B0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJhID0gKGxlbmd0aCkgPT5cbiAgICAgICAga25vd25FbmdsaXNoID8gRW5nbGlzaC5lcmFGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSA6IHN0cmluZyh7IGVyYTogbGVuZ3RoIH0sIFwiZXJhXCIpLFxuICAgICAgdG9rZW5Ub1N0cmluZyA9ICh0b2tlbikgPT4ge1xuICAgICAgICAvLyBXaGVyZSBwb3NzaWJsZTogaHR0cDovL2NsZHIudW5pY29kZS5vcmcvdHJhbnNsYXRpb24vZGF0ZS10aW1lLTEvZGF0ZS10aW1lI1RPQy1TdGFuZGFsb25lLXZzLi1Gb3JtYXQtU3R5bGVzXG4gICAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgICAvLyBtc1xuICAgICAgICAgIGNhc2UgXCJTXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQubWlsbGlzZWNvbmQpO1xuICAgICAgICAgIGNhc2UgXCJ1XCI6XG4gICAgICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgICAgICAgIGNhc2UgXCJTU1NcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taWxsaXNlY29uZCwgMyk7XG4gICAgICAgICAgLy8gc2Vjb25kc1xuICAgICAgICAgIGNhc2UgXCJzXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuc2Vjb25kKTtcbiAgICAgICAgICBjYXNlIFwic3NcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5zZWNvbmQsIDIpO1xuICAgICAgICAgIC8vIGZyYWN0aW9uYWwgc2Vjb25kc1xuICAgICAgICAgIGNhc2UgXCJ1dVwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKE1hdGguZmxvb3IoZHQubWlsbGlzZWNvbmQgLyAxMCksIDIpO1xuICAgICAgICAgIGNhc2UgXCJ1dXVcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShNYXRoLmZsb29yKGR0Lm1pbGxpc2Vjb25kIC8gMTAwKSk7XG4gICAgICAgICAgLy8gbWludXRlc1xuICAgICAgICAgIGNhc2UgXCJtXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQubWludXRlKTtcbiAgICAgICAgICBjYXNlIFwibW1cIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taW51dGUsIDIpO1xuICAgICAgICAgIC8vIGhvdXJzXG4gICAgICAgICAgY2FzZSBcImhcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyICUgMTIgPT09IDAgPyAxMiA6IGR0LmhvdXIgJSAxMik7XG4gICAgICAgICAgY2FzZSBcImhoXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciAlIDEyID09PSAwID8gMTIgOiBkdC5ob3VyICUgMTIsIDIpO1xuICAgICAgICAgIGNhc2UgXCJIXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91cik7XG4gICAgICAgICAgY2FzZSBcIkhIXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciwgMik7XG4gICAgICAgICAgLy8gb2Zmc2V0XG4gICAgICAgICAgY2FzZSBcIlpcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgKzZcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRPZmZzZXQoeyBmb3JtYXQ6IFwibmFycm93XCIsIGFsbG93WjogdGhpcy5vcHRzLmFsbG93WiB9KTtcbiAgICAgICAgICBjYXNlIFwiWlpcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgKzA2OjAwXG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHsgZm9ybWF0OiBcInNob3J0XCIsIGFsbG93WjogdGhpcy5vcHRzLmFsbG93WiB9KTtcbiAgICAgICAgICBjYXNlIFwiWlpaXCI6XG4gICAgICAgICAgICAvLyBsaWtlICswNjAwXG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHsgZm9ybWF0OiBcInRlY2hpZVwiLCBhbGxvd1o6IHRoaXMub3B0cy5hbGxvd1ogfSk7XG4gICAgICAgICAgY2FzZSBcIlpaWlpcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgRVNUXG4gICAgICAgICAgICByZXR1cm4gZHQuem9uZS5vZmZzZXROYW1lKGR0LnRzLCB7IGZvcm1hdDogXCJzaG9ydFwiLCBsb2NhbGU6IHRoaXMubG9jLmxvY2FsZSB9KTtcbiAgICAgICAgICBjYXNlIFwiWlpaWlpcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgRWFzdGVybiBTdGFuZGFyZCBUaW1lXG4gICAgICAgICAgICByZXR1cm4gZHQuem9uZS5vZmZzZXROYW1lKGR0LnRzLCB7IGZvcm1hdDogXCJsb25nXCIsIGxvY2FsZTogdGhpcy5sb2MubG9jYWxlIH0pO1xuICAgICAgICAgIC8vIHpvbmVcbiAgICAgICAgICBjYXNlIFwielwiOlxuICAgICAgICAgICAgLy8gbGlrZSBBbWVyaWNhL05ld19Zb3JrXG4gICAgICAgICAgICByZXR1cm4gZHQuem9uZU5hbWU7XG4gICAgICAgICAgLy8gbWVyaWRpZW1zXG4gICAgICAgICAgY2FzZSBcImFcIjpcbiAgICAgICAgICAgIHJldHVybiBtZXJpZGllbSgpO1xuICAgICAgICAgIC8vIGRhdGVzXG4gICAgICAgICAgY2FzZSBcImRcIjpcbiAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7IGRheTogXCJudW1lcmljXCIgfSwgXCJkYXlcIikgOiB0aGlzLm51bShkdC5kYXkpO1xuICAgICAgICAgIGNhc2UgXCJkZFwiOlxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyID8gc3RyaW5nKHsgZGF5OiBcIjItZGlnaXRcIiB9LCBcImRheVwiKSA6IHRoaXMubnVtKGR0LmRheSwgMik7XG4gICAgICAgICAgLy8gd2Vla2RheXMgLSBzdGFuZGFsb25lXG4gICAgICAgICAgY2FzZSBcImNcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtkYXkpO1xuICAgICAgICAgIGNhc2UgXCJjY2NcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXMnXG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheShcInNob3J0XCIsIHRydWUpO1xuICAgICAgICAgIGNhc2UgXCJjY2NjXCI6XG4gICAgICAgICAgICAvLyBsaWtlICdUdWVzZGF5J1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoXCJsb25nXCIsIHRydWUpO1xuICAgICAgICAgIGNhc2UgXCJjY2NjY1wiOlxuICAgICAgICAgICAgLy8gbGlrZSAnVCdcbiAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KFwibmFycm93XCIsIHRydWUpO1xuICAgICAgICAgIC8vIHdlZWtkYXlzIC0gZm9ybWF0XG4gICAgICAgICAgY2FzZSBcIkVcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtkYXkpO1xuICAgICAgICAgIGNhc2UgXCJFRUVcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXMnXG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheShcInNob3J0XCIsIGZhbHNlKTtcbiAgICAgICAgICBjYXNlIFwiRUVFRVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAnVHVlc2RheSdcbiAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KFwibG9uZ1wiLCBmYWxzZSk7XG4gICAgICAgICAgY2FzZSBcIkVFRUVFXCI6XG4gICAgICAgICAgICAvLyBsaWtlICdUJ1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoXCJuYXJyb3dcIiwgZmFsc2UpO1xuICAgICAgICAgIC8vIG1vbnRocyAtIHN0YW5kYWxvbmVcbiAgICAgICAgICBjYXNlIFwiTFwiOlxuICAgICAgICAgICAgLy8gbGlrZSAxXG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXJcbiAgICAgICAgICAgICAgPyBzdHJpbmcoeyBtb250aDogXCJudW1lcmljXCIsIGRheTogXCJudW1lcmljXCIgfSwgXCJtb250aFwiKVxuICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoKTtcbiAgICAgICAgICBjYXNlIFwiTExcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMDEsIGRvZXNuJ3Qgc2VlbSB0byB3b3JrXG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXJcbiAgICAgICAgICAgICAgPyBzdHJpbmcoeyBtb250aDogXCIyLWRpZ2l0XCIsIGRheTogXCJudW1lcmljXCIgfSwgXCJtb250aFwiKVxuICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTtcbiAgICAgICAgICBjYXNlIFwiTExMXCI6XG4gICAgICAgICAgICAvLyBsaWtlIEphblxuICAgICAgICAgICAgcmV0dXJuIG1vbnRoKFwic2hvcnRcIiwgdHJ1ZSk7XG4gICAgICAgICAgY2FzZSBcIkxMTExcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgSmFudWFyeVxuICAgICAgICAgICAgcmV0dXJuIG1vbnRoKFwibG9uZ1wiLCB0cnVlKTtcbiAgICAgICAgICBjYXNlIFwiTExMTExcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgSlxuICAgICAgICAgICAgcmV0dXJuIG1vbnRoKFwibmFycm93XCIsIHRydWUpO1xuICAgICAgICAgIC8vIG1vbnRocyAtIGZvcm1hdFxuICAgICAgICAgIGNhc2UgXCJNXCI6XG4gICAgICAgICAgICAvLyBsaWtlIDFcbiAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlclxuICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiBcIm51bWVyaWNcIiB9LCBcIm1vbnRoXCIpXG4gICAgICAgICAgICAgIDogdGhpcy5udW0oZHQubW9udGgpO1xuICAgICAgICAgIGNhc2UgXCJNTVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAwMVxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyXG4gICAgICAgICAgICAgID8gc3RyaW5nKHsgbW9udGg6IFwiMi1kaWdpdFwiIH0sIFwibW9udGhcIilcbiAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC5tb250aCwgMik7XG4gICAgICAgICAgY2FzZSBcIk1NTVwiOlxuICAgICAgICAgICAgLy8gbGlrZSBKYW5cbiAgICAgICAgICAgIHJldHVybiBtb250aChcInNob3J0XCIsIGZhbHNlKTtcbiAgICAgICAgICBjYXNlIFwiTU1NTVwiOlxuICAgICAgICAgICAgLy8gbGlrZSBKYW51YXJ5XG4gICAgICAgICAgICByZXR1cm4gbW9udGgoXCJsb25nXCIsIGZhbHNlKTtcbiAgICAgICAgICBjYXNlIFwiTU1NTU1cIjpcbiAgICAgICAgICAgIC8vIGxpa2UgSlxuICAgICAgICAgICAgcmV0dXJuIG1vbnRoKFwibmFycm93XCIsIGZhbHNlKTtcbiAgICAgICAgICAvLyB5ZWFyc1xuICAgICAgICAgIGNhc2UgXCJ5XCI6XG4gICAgICAgICAgICAvLyBsaWtlIDIwMTRcbiAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7IHllYXI6IFwibnVtZXJpY1wiIH0sIFwieWVhclwiKSA6IHRoaXMubnVtKGR0LnllYXIpO1xuICAgICAgICAgIGNhc2UgXCJ5eVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAxNFxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyXG4gICAgICAgICAgICAgID8gc3RyaW5nKHsgeWVhcjogXCIyLWRpZ2l0XCIgfSwgXCJ5ZWFyXCIpXG4gICAgICAgICAgICAgIDogdGhpcy5udW0oZHQueWVhci50b1N0cmluZygpLnNsaWNlKC0yKSwgMik7XG4gICAgICAgICAgY2FzZSBcInl5eXlcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMDAxMlxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyXG4gICAgICAgICAgICAgID8gc3RyaW5nKHsgeWVhcjogXCJudW1lcmljXCIgfSwgXCJ5ZWFyXCIpXG4gICAgICAgICAgICAgIDogdGhpcy5udW0oZHQueWVhciwgNCk7XG4gICAgICAgICAgY2FzZSBcInl5eXl5eVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAwMDAwMTJcbiAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlclxuICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6IFwibnVtZXJpY1wiIH0sIFwieWVhclwiKVxuICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDYpO1xuICAgICAgICAgIC8vIGVyYXNcbiAgICAgICAgICBjYXNlIFwiR1wiOlxuICAgICAgICAgICAgLy8gbGlrZSBBRFxuICAgICAgICAgICAgcmV0dXJuIGVyYShcInNob3J0XCIpO1xuICAgICAgICAgIGNhc2UgXCJHR1wiOlxuICAgICAgICAgICAgLy8gbGlrZSBBbm5vIERvbWluaVxuICAgICAgICAgICAgcmV0dXJuIGVyYShcImxvbmdcIik7XG4gICAgICAgICAgY2FzZSBcIkdHR0dHXCI6XG4gICAgICAgICAgICByZXR1cm4gZXJhKFwibmFycm93XCIpO1xuICAgICAgICAgIGNhc2UgXCJra1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTtcbiAgICAgICAgICBjYXNlIFwia2tra1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLCA0KTtcbiAgICAgICAgICBjYXNlIFwiV1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIpO1xuICAgICAgICAgIGNhc2UgXCJXV1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIsIDIpO1xuICAgICAgICAgIGNhc2UgXCJvXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQub3JkaW5hbCk7XG4gICAgICAgICAgY2FzZSBcIm9vb1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm9yZGluYWwsIDMpO1xuICAgICAgICAgIGNhc2UgXCJxXCI6XG4gICAgICAgICAgICAvLyBsaWtlIDFcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5xdWFydGVyKTtcbiAgICAgICAgICBjYXNlIFwicXFcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMDFcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5xdWFydGVyLCAyKTtcbiAgICAgICAgICBjYXNlIFwiWFwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKE1hdGguZmxvb3IoZHQudHMgLyAxMDAwKSk7XG4gICAgICAgICAgY2FzZSBcInhcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC50cyk7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBtYXliZU1hY3JvKHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZtdCksIHRva2VuVG9TdHJpbmcpO1xuICB9XG5cbiAgZm9ybWF0RHVyYXRpb25Gcm9tU3RyaW5nKGR1ciwgZm10KSB7XG4gICAgY29uc3QgdG9rZW5Ub0ZpZWxkID0gKHRva2VuKSA9PiB7XG4gICAgICAgIHN3aXRjaCAodG9rZW5bMF0pIHtcbiAgICAgICAgICBjYXNlIFwiU1wiOlxuICAgICAgICAgICAgcmV0dXJuIFwibWlsbGlzZWNvbmRcIjtcbiAgICAgICAgICBjYXNlIFwic1wiOlxuICAgICAgICAgICAgcmV0dXJuIFwic2Vjb25kXCI7XG4gICAgICAgICAgY2FzZSBcIm1cIjpcbiAgICAgICAgICAgIHJldHVybiBcIm1pbnV0ZVwiO1xuICAgICAgICAgIGNhc2UgXCJoXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJob3VyXCI7XG4gICAgICAgICAgY2FzZSBcImRcIjpcbiAgICAgICAgICAgIHJldHVybiBcImRheVwiO1xuICAgICAgICAgIGNhc2UgXCJNXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJtb250aFwiO1xuICAgICAgICAgIGNhc2UgXCJ5XCI6XG4gICAgICAgICAgICByZXR1cm4gXCJ5ZWFyXCI7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdG9rZW5Ub1N0cmluZyA9IChsaWxkdXIpID0+ICh0b2tlbikgPT4ge1xuICAgICAgICBjb25zdCBtYXBwZWQgPSB0b2tlblRvRmllbGQodG9rZW4pO1xuICAgICAgICBpZiAobWFwcGVkKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGxpbGR1ci5nZXQobWFwcGVkKSwgdG9rZW4ubGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0b2tlbnMgPSBGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm10KSxcbiAgICAgIHJlYWxUb2tlbnMgPSB0b2tlbnMucmVkdWNlKFxuICAgICAgICAoZm91bmQsIHsgbGl0ZXJhbCwgdmFsIH0pID0+IChsaXRlcmFsID8gZm91bmQgOiBmb3VuZC5jb25jYXQodmFsKSksXG4gICAgICAgIFtdXG4gICAgICApLFxuICAgICAgY29sbGFwc2VkID0gZHVyLnNoaWZ0VG8oLi4ucmVhbFRva2Vucy5tYXAodG9rZW5Ub0ZpZWxkKS5maWx0ZXIoKHQpID0+IHQpKTtcbiAgICByZXR1cm4gc3RyaW5naWZ5VG9rZW5zKHRva2VucywgdG9rZW5Ub1N0cmluZyhjb2xsYXBzZWQpKTtcbiAgfVxufVxuIiwgImV4cG9ydCBkZWZhdWx0IGNsYXNzIEludmFsaWQge1xuICBjb25zdHJ1Y3RvcihyZWFzb24sIGV4cGxhbmF0aW9uKSB7XG4gICAgdGhpcy5yZWFzb24gPSByZWFzb247XG4gICAgdGhpcy5leHBsYW5hdGlvbiA9IGV4cGxhbmF0aW9uO1xuICB9XG5cbiAgdG9NZXNzYWdlKCkge1xuICAgIGlmICh0aGlzLmV4cGxhbmF0aW9uKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5yZWFzb259OiAke3RoaXMuZXhwbGFuYXRpb259YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVhc29uO1xuICAgIH1cbiAgfVxufVxuIiwgImltcG9ydCB7IFpvbmVJc0Fic3RyYWN0RXJyb3IgfSBmcm9tIFwiLi9lcnJvcnMuanNcIjtcblxuLyoqXG4gKiBAaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFpvbmUge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygem9uZVxuICAgKiBAYWJzdHJhY3RcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCB0eXBlKCkge1xuICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyB6b25lLlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBuYW1lKCkge1xuICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBvZmZzZXQgaXMga25vd24gdG8gYmUgZml4ZWQgZm9yIHRoZSB3aG9sZSB5ZWFyLlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNVbml2ZXJzYWwoKSB7XG4gICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyBjb21tb24gbmFtZSAoc3VjaCBhcyBFU1QpIGF0IHRoZSBzcGVjaWZpZWQgdGltZXN0YW1wXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcGFyYW0ge251bWJlcn0gdHMgLSBFcG9jaCBtaWxsaXNlY29uZHMgZm9yIHdoaWNoIHRvIGdldCB0aGUgbmFtZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gYWZmZWN0IHRoZSBmb3JtYXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMuZm9ybWF0IC0gV2hhdCBzdHlsZSBvZiBvZmZzZXQgdG8gcmV0dXJuLiBBY2NlcHRzICdsb25nJyBvciAnc2hvcnQnLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5sb2NhbGUgLSBXaGF0IGxvY2FsZSB0byByZXR1cm4gdGhlIG9mZnNldCBuYW1lIGluLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBvZmZzZXROYW1lKHRzLCBvcHRzKSB7XG4gICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyB2YWx1ZSBhcyBhIHN0cmluZ1xuICAgKiBAYWJzdHJhY3RcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRzIC0gRXBvY2ggbWlsbGlzZWNvbmRzIGZvciB3aGljaCB0byBnZXQgdGhlIG9mZnNldFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0IC0gV2hhdCBzdHlsZSBvZiBvZmZzZXQgdG8gcmV0dXJuLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0cyAnbmFycm93JywgJ3Nob3J0Jywgb3IgJ3RlY2hpZScuIFJldHVybmluZyAnKzYnLCAnKzA2OjAwJywgb3IgJyswNjAwJyByZXNwZWN0aXZlbHlcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHtcbiAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgb2Zmc2V0IGluIG1pbnV0ZXMgZm9yIHRoaXMgem9uZSBhdCB0aGUgc3BlY2lmaWVkIHRpbWVzdGFtcC5cbiAgICogQGFic3RyYWN0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gY29tcHV0ZSB0aGUgb2Zmc2V0XG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIG9mZnNldCh0cykge1xuICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBab25lIGlzIGVxdWFsIHRvIGFub3RoZXIgem9uZVxuICAgKiBAYWJzdHJhY3RcbiAgICogQHBhcmFtIHtab25lfSBvdGhlclpvbmUgLSB0aGUgem9uZSB0byBjb21wYXJlXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBlcXVhbHMob3RoZXJab25lKSB7XG4gICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIFpvbmUgaXMgdmFsaWQuXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBpc1ZhbGlkKCkge1xuICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7XG4gIH1cbn1cbiIsICJpbXBvcnQgeyBmb3JtYXRPZmZzZXQsIHBhcnNlWm9uZUluZm8gfSBmcm9tIFwiLi4vaW1wbC91dGlsLmpzXCI7XG5pbXBvcnQgWm9uZSBmcm9tIFwiLi4vem9uZS5qc1wiO1xuXG5sZXQgc2luZ2xldG9uID0gbnVsbDtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBsb2NhbCB6b25lIGZvciB0aGlzIEphdmFTY3JpcHQgZW52aXJvbm1lbnQuXG4gKiBAaW1wbGVtZW50cyB7Wm9uZX1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3lzdGVtWm9uZSBleHRlbmRzIFpvbmUge1xuICAvKipcbiAgICogR2V0IGEgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBsb2NhbCB6b25lXG4gICAqIEByZXR1cm4ge1N5c3RlbVpvbmV9XG4gICAqL1xuICBzdGF0aWMgZ2V0IGluc3RhbmNlKCkge1xuICAgIGlmIChzaW5nbGV0b24gPT09IG51bGwpIHtcbiAgICAgIHNpbmdsZXRvbiA9IG5ldyBTeXN0ZW1ab25lKCk7XG4gICAgfVxuICAgIHJldHVybiBzaW5nbGV0b247XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gXCJzeXN0ZW1cIjtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IGlzVW5pdmVyc2FsKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldE5hbWUodHMsIHsgZm9ybWF0LCBsb2NhbGUgfSkge1xuICAgIHJldHVybiBwYXJzZVpvbmVJbmZvKHRzLCBmb3JtYXQsIGxvY2FsZSk7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkge1xuICAgIHJldHVybiBmb3JtYXRPZmZzZXQodGhpcy5vZmZzZXQodHMpLCBmb3JtYXQpO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgb2Zmc2V0KHRzKSB7XG4gICAgcmV0dXJuIC1uZXcgRGF0ZSh0cykuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGVxdWFscyhvdGhlclpvbmUpIHtcbiAgICByZXR1cm4gb3RoZXJab25lLnR5cGUgPT09IFwic3lzdGVtXCI7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIiwgImltcG9ydCB7IGZvcm1hdE9mZnNldCwgcGFyc2Vab25lSW5mbywgaXNVbmRlZmluZWQsIGlhbmFSZWdleCwgb2JqVG9Mb2NhbFRTIH0gZnJvbSBcIi4uL2ltcGwvdXRpbC5qc1wiO1xuaW1wb3J0IFpvbmUgZnJvbSBcIi4uL3pvbmUuanNcIjtcblxuY29uc3QgbWF0Y2hpbmdSZWdleCA9IFJlZ0V4cChgXiR7aWFuYVJlZ2V4LnNvdXJjZX0kYCk7XG5cbmxldCBkdGZDYWNoZSA9IHt9O1xuZnVuY3Rpb24gbWFrZURURih6b25lKSB7XG4gIGlmICghZHRmQ2FjaGVbem9uZV0pIHtcbiAgICBkdGZDYWNoZVt6b25lXSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFwiZW4tVVNcIiwge1xuICAgICAgaG91cjEyOiBmYWxzZSxcbiAgICAgIHRpbWVab25lOiB6b25lLFxuICAgICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgICBtb250aDogXCIyLWRpZ2l0XCIsXG4gICAgICBkYXk6IFwiMi1kaWdpdFwiLFxuICAgICAgaG91cjogXCIyLWRpZ2l0XCIsXG4gICAgICBtaW51dGU6IFwiMi1kaWdpdFwiLFxuICAgICAgc2Vjb25kOiBcIjItZGlnaXRcIixcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZHRmQ2FjaGVbem9uZV07XG59XG5cbmNvbnN0IHR5cGVUb1BvcyA9IHtcbiAgeWVhcjogMCxcbiAgbW9udGg6IDEsXG4gIGRheTogMixcbiAgaG91cjogMyxcbiAgbWludXRlOiA0LFxuICBzZWNvbmQ6IDUsXG59O1xuXG5mdW5jdGlvbiBoYWNreU9mZnNldChkdGYsIGRhdGUpIHtcbiAgY29uc3QgZm9ybWF0dGVkID0gZHRmLmZvcm1hdChkYXRlKS5yZXBsYWNlKC9cXHUyMDBFL2csIFwiXCIpLFxuICAgIHBhcnNlZCA9IC8oXFxkKylcXC8oXFxkKylcXC8oXFxkKyksPyAoXFxkKyk6KFxcZCspOihcXGQrKS8uZXhlYyhmb3JtYXR0ZWQpLFxuICAgIFssIGZNb250aCwgZkRheSwgZlllYXIsIGZIb3VyLCBmTWludXRlLCBmU2Vjb25kXSA9IHBhcnNlZDtcbiAgcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF07XG59XG5cbmZ1bmN0aW9uIHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSkge1xuICBjb25zdCBmb3JtYXR0ZWQgPSBkdGYuZm9ybWF0VG9QYXJ0cyhkYXRlKSxcbiAgICBmaWxsZWQgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb3JtYXR0ZWQubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBmb3JtYXR0ZWRbaV0sXG4gICAgICBwb3MgPSB0eXBlVG9Qb3NbdHlwZV07XG5cbiAgICBpZiAoIWlzVW5kZWZpbmVkKHBvcykpIHtcbiAgICAgIGZpbGxlZFtwb3NdID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZpbGxlZDtcbn1cblxubGV0IGlhbmFab25lQ2FjaGUgPSB7fTtcbi8qKlxuICogQSB6b25lIGlkZW50aWZpZWQgYnkgYW4gSUFOQSBpZGVudGlmaWVyLCBsaWtlIEFtZXJpY2EvTmV3X1lvcmtcbiAqIEBpbXBsZW1lbnRzIHtab25lfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJQU5BWm9uZSBleHRlbmRzIFpvbmUge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBab25lIG5hbWVcbiAgICogQHJldHVybiB7SUFOQVpvbmV9XG4gICAqL1xuICBzdGF0aWMgY3JlYXRlKG5hbWUpIHtcbiAgICBpZiAoIWlhbmFab25lQ2FjaGVbbmFtZV0pIHtcbiAgICAgIGlhbmFab25lQ2FjaGVbbmFtZV0gPSBuZXcgSUFOQVpvbmUobmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBpYW5hWm9uZUNhY2hlW25hbWVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IGxvY2FsIGNhY2hlcy4gU2hvdWxkIG9ubHkgYmUgbmVjZXNzYXJ5IGluIHRlc3Rpbmcgc2NlbmFyaW9zLlxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgc3RhdGljIHJlc2V0Q2FjaGUoKSB7XG4gICAgaWFuYVpvbmVDYWNoZSA9IHt9O1xuICAgIGR0ZkNhY2hlID0ge307XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBwcm92aWRlZCBzdHJpbmcgaXMgYSB2YWxpZCBzcGVjaWZpZXIuIFRoaXMgb25seSBjaGVja3MgdGhlIHN0cmluZydzIGZvcm1hdCwgbm90IHRoYXQgdGhlIHNwZWNpZmllciBpZGVudGlmaWVzIGEga25vd24gem9uZTsgc2VlIGlzVmFsaWRab25lIGZvciB0aGF0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcyAtIFRoZSBzdHJpbmcgdG8gY2hlY2sgdmFsaWRpdHkgb25cbiAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcihcIkFtZXJpY2EvTmV3X1lvcmtcIikgLy89PiB0cnVlXG4gICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRTcGVjaWZpZXIoXCJGYW50YXNpYS9DYXN0bGVcIikgLy89PiB0cnVlXG4gICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRTcGVjaWZpZXIoXCJTcG9ydH5+YmxvcnBcIikgLy89PiBmYWxzZVxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgc3RhdGljIGlzVmFsaWRTcGVjaWZpZXIocykge1xuICAgIHJldHVybiAhIShzICYmIHMubWF0Y2gobWF0Y2hpbmdSZWdleCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB0aGUgcHJvdmlkZWQgc3RyaW5nIGlkZW50aWZpZXMgYSByZWFsIHpvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHpvbmUgLSBUaGUgc3RyaW5nIHRvIGNoZWNrXG4gICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRab25lKFwiQW1lcmljYS9OZXdfWW9ya1wiKSAvLz0+IHRydWVcbiAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoXCJGYW50YXNpYS9DYXN0bGVcIikgLy89PiBmYWxzZVxuICAgKiBAZXhhbXBsZSBJQU5BWm9uZS5pc1ZhbGlkWm9uZShcIlNwb3J0fn5ibG9ycFwiKSAvLz0+IGZhbHNlXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBzdGF0aWMgaXNWYWxpZFpvbmUoem9uZSkge1xuICAgIGlmICghem9uZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoXCJlbi1VU1wiLCB7IHRpbWVab25lOiB6b25lIH0pLmZvcm1hdCgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKG5hbWUpIHtcbiAgICBzdXBlcigpO1xuICAgIC8qKiBAcHJpdmF0ZSAqKi9cbiAgICB0aGlzLnpvbmVOYW1lID0gbmFtZTtcbiAgICAvKiogQHByaXZhdGUgKiovXG4gICAgdGhpcy52YWxpZCA9IElBTkFab25lLmlzVmFsaWRab25lKG5hbWUpO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIFwiaWFuYVwiO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuem9uZU5hbWU7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNVbml2ZXJzYWwoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgb2Zmc2V0TmFtZSh0cywgeyBmb3JtYXQsIGxvY2FsZSB9KSB7XG4gICAgcmV0dXJuIHBhcnNlWm9uZUluZm8odHMsIGZvcm1hdCwgbG9jYWxlLCB0aGlzLm5hbWUpO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHtcbiAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMub2Zmc2V0KHRzKSwgZm9ybWF0KTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldCh0cykge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0cyk7XG5cbiAgICBpZiAoaXNOYU4oZGF0ZSkpIHJldHVybiBOYU47XG5cbiAgICBjb25zdCBkdGYgPSBtYWtlRFRGKHRoaXMubmFtZSksXG4gICAgICBbeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmRdID0gZHRmLmZvcm1hdFRvUGFydHNcbiAgICAgICAgPyBwYXJ0c09mZnNldChkdGYsIGRhdGUpXG4gICAgICAgIDogaGFja3lPZmZzZXQoZHRmLCBkYXRlKTtcblxuICAgIC8vIGJlY2F1c2Ugd2UncmUgdXNpbmcgaG91cjEyIGFuZCBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMDI1NTY0JmNhbj0yJnE9JTIyMjQlM0EwMCUyMiUyMGRhdGV0aW1lZm9ybWF0XG4gICAgY29uc3QgYWRqdXN0ZWRIb3VyID0gaG91ciA9PT0gMjQgPyAwIDogaG91cjtcblxuICAgIGNvbnN0IGFzVVRDID0gb2JqVG9Mb2NhbFRTKHtcbiAgICAgIHllYXIsXG4gICAgICBtb250aCxcbiAgICAgIGRheSxcbiAgICAgIGhvdXI6IGFkanVzdGVkSG91cixcbiAgICAgIG1pbnV0ZSxcbiAgICAgIHNlY29uZCxcbiAgICAgIG1pbGxpc2Vjb25kOiAwLFxuICAgIH0pO1xuXG4gICAgbGV0IGFzVFMgPSArZGF0ZTtcbiAgICBjb25zdCBvdmVyID0gYXNUUyAlIDEwMDA7XG4gICAgYXNUUyAtPSBvdmVyID49IDAgPyBvdmVyIDogMTAwMCArIG92ZXI7XG4gICAgcmV0dXJuIChhc1VUQyAtIGFzVFMpIC8gKDYwICogMTAwMCk7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBlcXVhbHMob3RoZXJab25lKSB7XG4gICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSBcImlhbmFcIiAmJiBvdGhlclpvbmUubmFtZSA9PT0gdGhpcy5uYW1lO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IGlzVmFsaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWQ7XG4gIH1cbn1cbiIsICJpbXBvcnQgeyBmb3JtYXRPZmZzZXQsIHNpZ25lZE9mZnNldCB9IGZyb20gXCIuLi9pbXBsL3V0aWwuanNcIjtcbmltcG9ydCBab25lIGZyb20gXCIuLi96b25lLmpzXCI7XG5cbmxldCBzaW5nbGV0b24gPSBudWxsO1xuXG4vKipcbiAqIEEgem9uZSB3aXRoIGEgZml4ZWQgb2Zmc2V0IChtZWFuaW5nIG5vIERTVClcbiAqIEBpbXBsZW1lbnRzIHtab25lfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGaXhlZE9mZnNldFpvbmUgZXh0ZW5kcyBab25lIHtcbiAgLyoqXG4gICAqIEdldCBhIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiBVVENcbiAgICogQHJldHVybiB7Rml4ZWRPZmZzZXRab25lfVxuICAgKi9cbiAgc3RhdGljIGdldCB1dGNJbnN0YW5jZSgpIHtcbiAgICBpZiAoc2luZ2xldG9uID09PSBudWxsKSB7XG4gICAgICBzaW5nbGV0b24gPSBuZXcgRml4ZWRPZmZzZXRab25lKDApO1xuICAgIH1cbiAgICByZXR1cm4gc2luZ2xldG9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBpbnN0YW5jZSB3aXRoIGEgc3BlY2lmaWVkIG9mZnNldFxuICAgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0IC0gVGhlIG9mZnNldCBpbiBtaW51dGVzXG4gICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX1cbiAgICovXG4gIHN0YXRpYyBpbnN0YW5jZShvZmZzZXQpIHtcbiAgICByZXR1cm4gb2Zmc2V0ID09PSAwID8gRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlIDogbmV3IEZpeGVkT2Zmc2V0Wm9uZShvZmZzZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBpbnN0YW5jZSBvZiBGaXhlZE9mZnNldFpvbmUgZnJvbSBhIFVUQyBvZmZzZXQgc3RyaW5nLCBsaWtlIFwiVVRDKzZcIlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcyAtIFRoZSBvZmZzZXQgc3RyaW5nIHRvIHBhcnNlXG4gICAqIEBleGFtcGxlIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcihcIlVUQys2XCIpXG4gICAqIEBleGFtcGxlIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcihcIlVUQyswNlwiKVxuICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoXCJVVEMtNjowMFwiKVxuICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9XG4gICAqL1xuICBzdGF0aWMgcGFyc2VTcGVjaWZpZXIocykge1xuICAgIGlmIChzKSB7XG4gICAgICBjb25zdCByID0gcy5tYXRjaCgvXnV0Yyg/OihbKy1dXFxkezEsMn0pKD86OihcXGR7Mn0pKT8pPyQvaSk7XG4gICAgICBpZiAocikge1xuICAgICAgICByZXR1cm4gbmV3IEZpeGVkT2Zmc2V0Wm9uZShzaWduZWRPZmZzZXQoclsxXSwgclsyXSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKG9mZnNldCkge1xuICAgIHN1cGVyKCk7XG4gICAgLyoqIEBwcml2YXRlICoqL1xuICAgIHRoaXMuZml4ZWQgPSBvZmZzZXQ7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gXCJmaXhlZFwiO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZml4ZWQgPT09IDAgPyBcIlVUQ1wiIDogYFVUQyR7Zm9ybWF0T2Zmc2V0KHRoaXMuZml4ZWQsIFwibmFycm93XCIpfWA7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBvZmZzZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkge1xuICAgIHJldHVybiBmb3JtYXRPZmZzZXQodGhpcy5maXhlZCwgZm9ybWF0KTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBpc1VuaXZlcnNhbCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldCgpIHtcbiAgICByZXR1cm4gdGhpcy5maXhlZDtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGVxdWFscyhvdGhlclpvbmUpIHtcbiAgICByZXR1cm4gb3RoZXJab25lLnR5cGUgPT09IFwiZml4ZWRcIiAmJiBvdGhlclpvbmUuZml4ZWQgPT09IHRoaXMuZml4ZWQ7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIiwgImltcG9ydCBab25lIGZyb20gXCIuLi96b25lLmpzXCI7XG5cbi8qKlxuICogQSB6b25lIHRoYXQgZmFpbGVkIHRvIHBhcnNlLiBZb3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gaW5zdGFudGlhdGUgdGhpcy5cbiAqIEBpbXBsZW1lbnRzIHtab25lfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnZhbGlkWm9uZSBleHRlbmRzIFpvbmUge1xuICBjb25zdHJ1Y3Rvcih6b25lTmFtZSkge1xuICAgIHN1cGVyKCk7XG4gICAgLyoqICBAcHJpdmF0ZSAqL1xuICAgIHRoaXMuem9uZU5hbWUgPSB6b25lTmFtZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiBcImludmFsaWRcIjtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnpvbmVOYW1lO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IGlzVW5pdmVyc2FsKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldE5hbWUoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBmb3JtYXRPZmZzZXQoKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBvZmZzZXQoKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGVxdWFscygpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsICIvKipcbiAqIEBwcml2YXRlXG4gKi9cblxuaW1wb3J0IFpvbmUgZnJvbSBcIi4uL3pvbmUuanNcIjtcbmltcG9ydCBJQU5BWm9uZSBmcm9tIFwiLi4vem9uZXMvSUFOQVpvbmUuanNcIjtcbmltcG9ydCBGaXhlZE9mZnNldFpvbmUgZnJvbSBcIi4uL3pvbmVzL2ZpeGVkT2Zmc2V0Wm9uZS5qc1wiO1xuaW1wb3J0IEludmFsaWRab25lIGZyb20gXCIuLi96b25lcy9pbnZhbGlkWm9uZS5qc1wiO1xuXG5pbXBvcnQgeyBpc1VuZGVmaW5lZCwgaXNTdHJpbmcsIGlzTnVtYmVyIH0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplWm9uZShpbnB1dCwgZGVmYXVsdFpvbmUpIHtcbiAgbGV0IG9mZnNldDtcbiAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSB8fCBpbnB1dCA9PT0gbnVsbCkge1xuICAgIHJldHVybiBkZWZhdWx0Wm9uZTtcbiAgfSBlbHNlIGlmIChpbnB1dCBpbnN0YW5jZW9mIFpvbmUpIHtcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH0gZWxzZSBpZiAoaXNTdHJpbmcoaW5wdXQpKSB7XG4gICAgY29uc3QgbG93ZXJlZCA9IGlucHV0LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGxvd2VyZWQgPT09IFwibG9jYWxcIiB8fCBsb3dlcmVkID09PSBcInN5c3RlbVwiKSByZXR1cm4gZGVmYXVsdFpvbmU7XG4gICAgZWxzZSBpZiAobG93ZXJlZCA9PT0gXCJ1dGNcIiB8fCBsb3dlcmVkID09PSBcImdtdFwiKSByZXR1cm4gRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlO1xuICAgIGVsc2UgaWYgKElBTkFab25lLmlzVmFsaWRTcGVjaWZpZXIobG93ZXJlZCkpIHJldHVybiBJQU5BWm9uZS5jcmVhdGUoaW5wdXQpO1xuICAgIGVsc2UgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcihsb3dlcmVkKSB8fCBuZXcgSW52YWxpZFpvbmUoaW5wdXQpO1xuICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSkge1xuICAgIHJldHVybiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoaW5wdXQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJvYmplY3RcIiAmJiBpbnB1dC5vZmZzZXQgJiYgdHlwZW9mIGlucHV0Lm9mZnNldCA9PT0gXCJudW1iZXJcIikge1xuICAgIC8vIFRoaXMgaXMgZHVtYiwgYnV0IHRoZSBpbnN0YW5jZW9mIGNoZWNrIGFib3ZlIGRvZXNuJ3Qgc2VlbSB0byByZWFsbHkgd29ya1xuICAgIC8vIHNvIHdlJ3JlIGR1Y2sgY2hlY2tpbmcgaXRcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBJbnZhbGlkWm9uZShpbnB1dCk7XG4gIH1cbn1cbiIsICJpbXBvcnQgU3lzdGVtWm9uZSBmcm9tIFwiLi96b25lcy9zeXN0ZW1ab25lLmpzXCI7XG5pbXBvcnQgSUFOQVpvbmUgZnJvbSBcIi4vem9uZXMvSUFOQVpvbmUuanNcIjtcbmltcG9ydCBMb2NhbGUgZnJvbSBcIi4vaW1wbC9sb2NhbGUuanNcIjtcblxuaW1wb3J0IHsgbm9ybWFsaXplWm9uZSB9IGZyb20gXCIuL2ltcGwvem9uZVV0aWwuanNcIjtcblxubGV0IG5vdyA9ICgpID0+IERhdGUubm93KCksXG4gIGRlZmF1bHRab25lID0gXCJzeXN0ZW1cIixcbiAgZGVmYXVsdExvY2FsZSA9IG51bGwsXG4gIGRlZmF1bHROdW1iZXJpbmdTeXN0ZW0gPSBudWxsLFxuICBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIgPSBudWxsLFxuICB0aHJvd09uSW52YWxpZDtcblxuLyoqXG4gKiBTZXR0aW5ncyBjb250YWlucyBzdGF0aWMgZ2V0dGVycyBhbmQgc2V0dGVycyB0aGF0IGNvbnRyb2wgTHV4b24ncyBvdmVyYWxsIGJlaGF2aW9yLiBMdXhvbiBpcyBhIHNpbXBsZSBsaWJyYXJ5IHdpdGggZmV3IG9wdGlvbnMsIGJ1dCB0aGUgb25lcyBpdCBkb2VzIGhhdmUgbGl2ZSBoZXJlLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIGNhbGxiYWNrIGZvciByZXR1cm5pbmcgdGhlIGN1cnJlbnQgdGltZXN0YW1wLlxuICAgKiBAdHlwZSB7ZnVuY3Rpb259XG4gICAqL1xuICBzdGF0aWMgZ2V0IG5vdygpIHtcbiAgICByZXR1cm4gbm93O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgY2FsbGJhY2sgZm9yIHJldHVybmluZyB0aGUgY3VycmVudCB0aW1lc3RhbXAuXG4gICAqIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgbnVtYmVyLCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIEVwb2NoIG1pbGxpc2Vjb25kIGNvdW50XG4gICAqIEB0eXBlIHtmdW5jdGlvbn1cbiAgICogQGV4YW1wbGUgU2V0dGluZ3Mubm93ID0gKCkgPT4gRGF0ZS5ub3coKSArIDMwMDAgLy8gcHJldGVuZCBpdCBpcyAzIHNlY29uZHMgaW4gdGhlIGZ1dHVyZVxuICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiAwIC8vIGFsd2F5cyBwcmV0ZW5kIGl0J3MgSmFuIDEsIDE5NzAgYXQgbWlkbmlnaHQgaW4gVVRDIHRpbWVcbiAgICovXG4gIHN0YXRpYyBzZXQgbm93KG4pIHtcbiAgICBub3cgPSBuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgdG8gY3JlYXRlIERhdGVUaW1lcyBpbi4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogVXNlIHRoZSB2YWx1ZSBcInN5c3RlbVwiIHRvIHJlc2V0IHRoaXMgdmFsdWUgdG8gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBzZXQgZGVmYXVsdFpvbmUoem9uZSkge1xuICAgIGRlZmF1bHRab25lID0gem9uZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlZmF1bHQgdGltZSB6b25lIG9iamVjdCBjdXJyZW50bHkgdXNlZCB0byBjcmVhdGUgRGF0ZVRpbWVzLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB0aGUgc3lzdGVtJ3MgdGltZSB6b25lICh0aGUgb25lIHNldCBvbiB0aGUgbWFjaGluZSB0aGF0IHJ1bnMgdGhpcyBjb2RlKS5cbiAgICogQHR5cGUge1pvbmV9XG4gICAqL1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRab25lKCkge1xuICAgIHJldHVybiBub3JtYWxpemVab25lKGRlZmF1bHRab25lLCBTeXN0ZW1ab25lLmluc3RhbmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlZmF1bHQgbG9jYWxlIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBnZXQgZGVmYXVsdExvY2FsZSgpIHtcbiAgICByZXR1cm4gZGVmYXVsdExvY2FsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlZmF1bHQgbG9jYWxlIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBzZXQgZGVmYXVsdExvY2FsZShsb2NhbGUpIHtcbiAgICBkZWZhdWx0TG9jYWxlID0gbG9jYWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBnZXQgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSgpIHtcbiAgICByZXR1cm4gZGVmYXVsdE51bWJlcmluZ1N5c3RlbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlZmF1bHQgbnVtYmVyaW5nIHN5c3RlbSB0byBjcmVhdGUgRGF0ZVRpbWVzIHdpdGguIERvZXMgbm90IGFmZmVjdCBleGlzdGluZyBpbnN0YW5jZXMuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBzdGF0aWMgc2V0IGRlZmF1bHROdW1iZXJpbmdTeXN0ZW0obnVtYmVyaW5nU3lzdGVtKSB7XG4gICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bWJlcmluZ1N5c3RlbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlZmF1bHQgb3V0cHV0IGNhbGVuZGFyIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBnZXQgZGVmYXVsdE91dHB1dENhbGVuZGFyKCkge1xuICAgIHJldHVybiBkZWZhdWx0T3V0cHV0Q2FsZW5kYXI7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBkZWZhdWx0IG91dHB1dCBjYWxlbmRhciB0byBjcmVhdGUgRGF0ZVRpbWVzIHdpdGguIERvZXMgbm90IGFmZmVjdCBleGlzdGluZyBpbnN0YW5jZXMuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBzdGF0aWMgc2V0IGRlZmF1bHRPdXRwdXRDYWxlbmRhcihvdXRwdXRDYWxlbmRhcikge1xuICAgIGRlZmF1bHRPdXRwdXRDYWxlbmRhciA9IG91dHB1dENhbGVuZGFyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB3aGV0aGVyIEx1eG9uIHdpbGwgdGhyb3cgd2hlbiBpdCBlbmNvdW50ZXJzIGludmFsaWQgRGF0ZVRpbWVzLCBEdXJhdGlvbnMsIG9yIEludGVydmFsc1xuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBnZXQgdGhyb3dPbkludmFsaWQoKSB7XG4gICAgcmV0dXJuIHRocm93T25JbnZhbGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB3aGV0aGVyIEx1eG9uIHdpbGwgdGhyb3cgd2hlbiBpdCBlbmNvdW50ZXJzIGludmFsaWQgRGF0ZVRpbWVzLCBEdXJhdGlvbnMsIG9yIEludGVydmFsc1xuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBzZXQgdGhyb3dPbkludmFsaWQodCkge1xuICAgIHRocm93T25JbnZhbGlkID0gdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCBMdXhvbidzIGdsb2JhbCBjYWNoZXMuIFNob3VsZCBvbmx5IGJlIG5lY2Vzc2FyeSBpbiB0ZXN0aW5nIHNjZW5hcmlvcy5cbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHN0YXRpYyByZXNldENhY2hlcygpIHtcbiAgICBMb2NhbGUucmVzZXRDYWNoZSgpO1xuICAgIElBTkFab25lLnJlc2V0Q2FjaGUoKTtcbiAgfVxufVxuIiwgImltcG9ydCB7IHBhZFN0YXJ0LCByb3VuZFRvLCBoYXNSZWxhdGl2ZSB9IGZyb20gXCIuL3V0aWwuanNcIjtcbmltcG9ydCAqIGFzIEVuZ2xpc2ggZnJvbSBcIi4vZW5nbGlzaC5qc1wiO1xuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuLi9zZXR0aW5ncy5qc1wiO1xuaW1wb3J0IERhdGVUaW1lIGZyb20gXCIuLi9kYXRldGltZS5qc1wiO1xuaW1wb3J0IElBTkFab25lIGZyb20gXCIuLi96b25lcy9JQU5BWm9uZS5qc1wiO1xuXG4vLyB0b2RvIC0gcmVtYXAgY2FjaGluZ1xuXG5sZXQgaW50bExGQ2FjaGUgPSB7fTtcbmZ1bmN0aW9uIGdldENhY2hlZExGKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTtcbiAgbGV0IGR0ZiA9IGludGxMRkNhY2hlW2tleV07XG4gIGlmICghZHRmKSB7XG4gICAgZHRmID0gbmV3IEludGwuTGlzdEZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxMRkNhY2hlW2tleV0gPSBkdGY7XG4gIH1cbiAgcmV0dXJuIGR0Zjtcbn1cblxubGV0IGludGxEVENhY2hlID0ge307XG5mdW5jdGlvbiBnZXRDYWNoZWREVEYobG9jU3RyaW5nLCBvcHRzID0ge30pIHtcbiAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgb3B0c10pO1xuICBsZXQgZHRmID0gaW50bERUQ2FjaGVba2V5XTtcbiAgaWYgKCFkdGYpIHtcbiAgICBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxEVENhY2hlW2tleV0gPSBkdGY7XG4gIH1cbiAgcmV0dXJuIGR0Zjtcbn1cblxubGV0IGludGxOdW1DYWNoZSA9IHt9O1xuZnVuY3Rpb24gZ2V0Q2FjaGVkSU5GKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTtcbiAgbGV0IGluZiA9IGludGxOdW1DYWNoZVtrZXldO1xuICBpZiAoIWluZikge1xuICAgIGluZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxOdW1DYWNoZVtrZXldID0gaW5mO1xuICB9XG4gIHJldHVybiBpbmY7XG59XG5cbmxldCBpbnRsUmVsQ2FjaGUgPSB7fTtcbmZ1bmN0aW9uIGdldENhY2hlZFJURihsb2NTdHJpbmcsIG9wdHMgPSB7fSkge1xuICBjb25zdCB7IGJhc2UsIC4uLmNhY2hlS2V5T3B0cyB9ID0gb3B0czsgLy8gZXhjbHVkZSBgYmFzZWAgZnJvbSB0aGUgb3B0aW9uc1xuICBjb25zdCBrZXkgPSBKU09OLnN0cmluZ2lmeShbbG9jU3RyaW5nLCBjYWNoZUtleU9wdHNdKTtcbiAgbGV0IGluZiA9IGludGxSZWxDYWNoZVtrZXldO1xuICBpZiAoIWluZikge1xuICAgIGluZiA9IG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxSZWxDYWNoZVtrZXldID0gaW5mO1xuICB9XG4gIHJldHVybiBpbmY7XG59XG5cbmxldCBzeXNMb2NhbGVDYWNoZSA9IG51bGw7XG5mdW5jdGlvbiBzeXN0ZW1Mb2NhbGUoKSB7XG4gIGlmIChzeXNMb2NhbGVDYWNoZSkge1xuICAgIHJldHVybiBzeXNMb2NhbGVDYWNoZTtcbiAgfSBlbHNlIHtcbiAgICBzeXNMb2NhbGVDYWNoZSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlO1xuICAgIHJldHVybiBzeXNMb2NhbGVDYWNoZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGVTdHIpIHtcbiAgLy8gSSByZWFsbHkgd2FudCB0byBhdm9pZCB3cml0aW5nIGEgQkNQIDQ3IHBhcnNlclxuICAvLyBzZWUsIGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9iY3AtNDdcbiAgLy8gSW5zdGVhZCwgd2UnbGwgZG8gdGhpczpcblxuICAvLyBhKSBpZiB0aGUgc3RyaW5nIGhhcyBubyAtdSBleHRlbnNpb25zLCBqdXN0IGxlYXZlIGl0IGFsb25lXG4gIC8vIGIpIGlmIGl0IGRvZXMsIHVzZSBJbnRsIHRvIHJlc29sdmUgZXZlcnl0aGluZ1xuICAvLyBjKSBpZiBJbnRsIGZhaWxzLCB0cnkgYWdhaW4gd2l0aG91dCB0aGUgLXVcblxuICBjb25zdCB1SW5kZXggPSBsb2NhbGVTdHIuaW5kZXhPZihcIi11LVwiKTtcbiAgaWYgKHVJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gW2xvY2FsZVN0cl07XG4gIH0gZWxzZSB7XG4gICAgbGV0IG9wdGlvbnM7XG4gICAgY29uc3Qgc21hbGxlciA9IGxvY2FsZVN0ci5zdWJzdHJpbmcoMCwgdUluZGV4KTtcbiAgICB0cnkge1xuICAgICAgb3B0aW9ucyA9IGdldENhY2hlZERURihsb2NhbGVTdHIpLnJlc29sdmVkT3B0aW9ucygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIG9wdGlvbnMgPSBnZXRDYWNoZWREVEYoc21hbGxlcikucmVzb2x2ZWRPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBvcHRpb25zO1xuICAgIC8vIHJldHVybiB0aGUgc21hbGxlciBvbmUgc28gdGhhdCB3ZSBjYW4gYXBwZW5kIHRoZSBjYWxlbmRhciBhbmQgbnVtYmVyaW5nIG92ZXJyaWRlcyB0byBpdFxuICAgIHJldHVybiBbc21hbGxlciwgbnVtYmVyaW5nU3lzdGVtLCBjYWxlbmRhcl07XG4gIH1cbn1cblxuZnVuY3Rpb24gaW50bENvbmZpZ1N0cmluZyhsb2NhbGVTdHIsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpIHtcbiAgaWYgKG91dHB1dENhbGVuZGFyIHx8IG51bWJlcmluZ1N5c3RlbSkge1xuICAgIGxvY2FsZVN0ciArPSBcIi11XCI7XG5cbiAgICBpZiAob3V0cHV0Q2FsZW5kYXIpIHtcbiAgICAgIGxvY2FsZVN0ciArPSBgLWNhLSR7b3V0cHV0Q2FsZW5kYXJ9YDtcbiAgICB9XG5cbiAgICBpZiAobnVtYmVyaW5nU3lzdGVtKSB7XG4gICAgICBsb2NhbGVTdHIgKz0gYC1udS0ke251bWJlcmluZ1N5c3RlbX1gO1xuICAgIH1cbiAgICByZXR1cm4gbG9jYWxlU3RyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsb2NhbGVTdHI7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFwTW9udGhzKGYpIHtcbiAgY29uc3QgbXMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDE7IGkgPD0gMTI7IGkrKykge1xuICAgIGNvbnN0IGR0ID0gRGF0ZVRpbWUudXRjKDIwMTYsIGksIDEpO1xuICAgIG1zLnB1c2goZihkdCkpO1xuICB9XG4gIHJldHVybiBtcztcbn1cblxuZnVuY3Rpb24gbWFwV2Vla2RheXMoZikge1xuICBjb25zdCBtcyA9IFtdO1xuICBmb3IgKGxldCBpID0gMTsgaSA8PSA3OyBpKyspIHtcbiAgICBjb25zdCBkdCA9IERhdGVUaW1lLnV0YygyMDE2LCAxMSwgMTMgKyBpKTtcbiAgICBtcy5wdXNoKGYoZHQpKTtcbiAgfVxuICByZXR1cm4gbXM7XG59XG5cbmZ1bmN0aW9uIGxpc3RTdHVmZihsb2MsIGxlbmd0aCwgZGVmYXVsdE9LLCBlbmdsaXNoRm4sIGludGxGbikge1xuICBjb25zdCBtb2RlID0gbG9jLmxpc3RpbmdNb2RlKGRlZmF1bHRPSyk7XG5cbiAgaWYgKG1vZGUgPT09IFwiZXJyb3JcIikge1xuICAgIHJldHVybiBudWxsO1xuICB9IGVsc2UgaWYgKG1vZGUgPT09IFwiZW5cIikge1xuICAgIHJldHVybiBlbmdsaXNoRm4obGVuZ3RoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaW50bEZuKGxlbmd0aCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3VwcG9ydHNGYXN0TnVtYmVycyhsb2MpIHtcbiAgaWYgKGxvYy5udW1iZXJpbmdTeXN0ZW0gJiYgbG9jLm51bWJlcmluZ1N5c3RlbSAhPT0gXCJsYXRuXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGxvYy5udW1iZXJpbmdTeXN0ZW0gPT09IFwibGF0blwiIHx8XG4gICAgICAhbG9jLmxvY2FsZSB8fFxuICAgICAgbG9jLmxvY2FsZS5zdGFydHNXaXRoKFwiZW5cIikgfHxcbiAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvYy5pbnRsKS5yZXNvbHZlZE9wdGlvbnMoKS5udW1iZXJpbmdTeXN0ZW0gPT09IFwibGF0blwiXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cblxuY2xhc3MgUG9seU51bWJlckZvcm1hdHRlciB7XG4gIGNvbnN0cnVjdG9yKGludGwsIGZvcmNlU2ltcGxlLCBvcHRzKSB7XG4gICAgdGhpcy5wYWRUbyA9IG9wdHMucGFkVG8gfHwgMDtcbiAgICB0aGlzLmZsb29yID0gb3B0cy5mbG9vciB8fCBmYWxzZTtcblxuICAgIGNvbnN0IHsgcGFkVG8sIGZsb29yLCAuLi5vdGhlck9wdHMgfSA9IG9wdHM7XG5cbiAgICBpZiAoIWZvcmNlU2ltcGxlIHx8IE9iamVjdC5rZXlzKG90aGVyT3B0cykubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgaW50bE9wdHMgPSB7IHVzZUdyb3VwaW5nOiBmYWxzZSwgLi4ub3B0cyB9O1xuICAgICAgaWYgKG9wdHMucGFkVG8gPiAwKSBpbnRsT3B0cy5taW5pbXVtSW50ZWdlckRpZ2l0cyA9IG9wdHMucGFkVG87XG4gICAgICB0aGlzLmluZiA9IGdldENhY2hlZElORihpbnRsLCBpbnRsT3B0cyk7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0KGkpIHtcbiAgICBpZiAodGhpcy5pbmYpIHtcbiAgICAgIGNvbnN0IGZpeGVkID0gdGhpcy5mbG9vciA/IE1hdGguZmxvb3IoaSkgOiBpO1xuICAgICAgcmV0dXJuIHRoaXMuaW5mLmZvcm1hdChmaXhlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRvIG1hdGNoIHRoZSBicm93c2VyJ3MgbnVtYmVyZm9ybWF0dGVyIGRlZmF1bHRzXG4gICAgICBjb25zdCBmaXhlZCA9IHRoaXMuZmxvb3IgPyBNYXRoLmZsb29yKGkpIDogcm91bmRUbyhpLCAzKTtcbiAgICAgIHJldHVybiBwYWRTdGFydChmaXhlZCwgdGhpcy5wYWRUbyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuXG5jbGFzcyBQb2x5RGF0ZUZvcm1hdHRlciB7XG4gIGNvbnN0cnVjdG9yKGR0LCBpbnRsLCBvcHRzKSB7XG4gICAgdGhpcy5vcHRzID0gb3B0cztcblxuICAgIGxldCB6O1xuICAgIGlmIChkdC56b25lLmlzVW5pdmVyc2FsKSB7XG4gICAgICAvLyBVVEMtOCBvciBFdGMvVVRDLTggYXJlIG5vdCBwYXJ0IG9mIHR6ZGF0YSwgb25seSBFdGMvR01UKzggYW5kIHRoZSBsaWtlLlxuICAgICAgLy8gVGhhdCBpcyB3aHkgZml4ZWQtb2Zmc2V0IFRaIGlzIHNldCB0byB0aGF0IHVubGVzcyBpdCBpczpcbiAgICAgIC8vIDEuIFJlcHJlc2VudGluZyBvZmZzZXQgMCB3aGVuIFVUQyBpcyB1c2VkIHRvIG1haW50YWluIHByZXZpb3VzIGJlaGF2aW9yIGFuZCBkb2VzIG5vdCBiZWNvbWUgR01ULlxuICAgICAgLy8gMi4gVW5zdXBwb3J0ZWQgYnkgdGhlIGJyb3dzZXI6XG4gICAgICAvLyAgICAtIHNvbWUgZG8gbm90IHN1cHBvcnQgRXRjL1xuICAgICAgLy8gICAgLSA8IEV0Yy9HTVQtMTQsID4gRXRjL0dNVCsxMiwgYW5kIDMwLW1pbnV0ZSBvciA0NS1taW51dGUgb2Zmc2V0cyBhcmUgbm90IHBhcnQgb2YgdHpkYXRhXG4gICAgICBjb25zdCBnbXRPZmZzZXQgPSAtMSAqIChkdC5vZmZzZXQgLyA2MCk7XG4gICAgICBjb25zdCBvZmZzZXRaID0gZ210T2Zmc2V0ID49IDAgPyBgRXRjL0dNVCske2dtdE9mZnNldH1gIDogYEV0Yy9HTVQke2dtdE9mZnNldH1gO1xuICAgICAgaWYgKGR0Lm9mZnNldCAhPT0gMCAmJiBJQU5BWm9uZS5jcmVhdGUob2Zmc2V0WikudmFsaWQpIHtcbiAgICAgICAgeiA9IG9mZnNldFo7XG4gICAgICAgIHRoaXMuZHQgPSBkdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vdCBhbGwgZml4ZWQtb2Zmc2V0IHpvbmVzIGxpa2UgRXRjLys0OjMwIGFyZSBwcmVzZW50IGluIHR6ZGF0YS5cbiAgICAgICAgLy8gU28gd2UgaGF2ZSB0byBtYWtlIGRvLiBUd28gY2FzZXM6XG4gICAgICAgIC8vIDEuIFRoZSBmb3JtYXQgb3B0aW9ucyB0ZWxsIHVzIHRvIHNob3cgdGhlIHpvbmUuIFdlIGNhbid0IGRvIHRoYXQsIHNvIHRoZSBiZXN0XG4gICAgICAgIC8vIHdlIGNhbiBkbyBpcyBmb3JtYXQgdGhlIGRhdGUgaW4gVVRDLlxuICAgICAgICAvLyAyLiBUaGUgZm9ybWF0IG9wdGlvbnMgZG9uJ3QgdGVsbCB1cyB0byBzaG93IHRoZSB6b25lLiBUaGVuIHdlIGNhbiBhZGp1c3QgdGhlbVxuICAgICAgICAvLyB0aGUgdGltZSBhbmQgdGVsbCB0aGUgZm9ybWF0dGVyIHRvIHNob3cgaXQgdG8gdXMgaW4gVVRDLCBzbyB0aGF0IHRoZSB0aW1lIGlzIHJpZ2h0XG4gICAgICAgIC8vIGFuZCB0aGUgYmFkIHpvbmUgZG9lc24ndCBzaG93IHVwLlxuICAgICAgICB6ID0gXCJVVENcIjtcbiAgICAgICAgaWYgKG9wdHMudGltZVpvbmVOYW1lKSB7XG4gICAgICAgICAgdGhpcy5kdCA9IGR0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZHQgPSBkdC5vZmZzZXQgPT09IDAgPyBkdCA6IERhdGVUaW1lLmZyb21NaWxsaXMoZHQudHMgKyBkdC5vZmZzZXQgKiA2MCAqIDEwMDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkdC56b25lLnR5cGUgPT09IFwic3lzdGVtXCIpIHtcbiAgICAgIHRoaXMuZHQgPSBkdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kdCA9IGR0O1xuICAgICAgeiA9IGR0LnpvbmUubmFtZTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnRsT3B0cyA9IHsgLi4udGhpcy5vcHRzIH07XG4gICAgaWYgKHopIHtcbiAgICAgIGludGxPcHRzLnRpbWVab25lID0gejtcbiAgICB9XG4gICAgdGhpcy5kdGYgPSBnZXRDYWNoZWREVEYoaW50bCwgaW50bE9wdHMpO1xuICB9XG5cbiAgZm9ybWF0KCkge1xuICAgIHJldHVybiB0aGlzLmR0Zi5mb3JtYXQodGhpcy5kdC50b0pTRGF0ZSgpKTtcbiAgfVxuXG4gIGZvcm1hdFRvUGFydHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZHRmLmZvcm1hdFRvUGFydHModGhpcy5kdC50b0pTRGF0ZSgpKTtcbiAgfVxuXG4gIHJlc29sdmVkT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5kdGYucmVzb2x2ZWRPcHRpb25zKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jbGFzcyBQb2x5UmVsRm9ybWF0dGVyIHtcbiAgY29uc3RydWN0b3IoaW50bCwgaXNFbmdsaXNoLCBvcHRzKSB7XG4gICAgdGhpcy5vcHRzID0geyBzdHlsZTogXCJsb25nXCIsIC4uLm9wdHMgfTtcbiAgICBpZiAoIWlzRW5nbGlzaCAmJiBoYXNSZWxhdGl2ZSgpKSB7XG4gICAgICB0aGlzLnJ0ZiA9IGdldENhY2hlZFJURihpbnRsLCBvcHRzKTtcbiAgICB9XG4gIH1cblxuICBmb3JtYXQoY291bnQsIHVuaXQpIHtcbiAgICBpZiAodGhpcy5ydGYpIHtcbiAgICAgIHJldHVybiB0aGlzLnJ0Zi5mb3JtYXQoY291bnQsIHVuaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gRW5nbGlzaC5mb3JtYXRSZWxhdGl2ZVRpbWUodW5pdCwgY291bnQsIHRoaXMub3B0cy5udW1lcmljLCB0aGlzLm9wdHMuc3R5bGUgIT09IFwibG9uZ1wiKTtcbiAgICB9XG4gIH1cblxuICBmb3JtYXRUb1BhcnRzKGNvdW50LCB1bml0KSB7XG4gICAgaWYgKHRoaXMucnRmKSB7XG4gICAgICByZXR1cm4gdGhpcy5ydGYuZm9ybWF0VG9QYXJ0cyhjb3VudCwgdW5pdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvY2FsZSB7XG4gIHN0YXRpYyBmcm9tT3B0cyhvcHRzKSB7XG4gICAgcmV0dXJuIExvY2FsZS5jcmVhdGUob3B0cy5sb2NhbGUsIG9wdHMubnVtYmVyaW5nU3lzdGVtLCBvcHRzLm91dHB1dENhbGVuZGFyLCBvcHRzLmRlZmF1bHRUb0VOKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyLCBkZWZhdWx0VG9FTiA9IGZhbHNlKSB7XG4gICAgY29uc3Qgc3BlY2lmaWVkTG9jYWxlID0gbG9jYWxlIHx8IFNldHRpbmdzLmRlZmF1bHRMb2NhbGU7XG4gICAgLy8gdGhlIHN5c3RlbSBsb2NhbGUgaXMgdXNlZnVsIGZvciBodW1hbiByZWFkYWJsZSBzdHJpbmdzIGJ1dCBhbm5veWluZyBmb3IgcGFyc2luZy9mb3JtYXR0aW5nIGtub3duIGZvcm1hdHNcbiAgICBjb25zdCBsb2NhbGVSID0gc3BlY2lmaWVkTG9jYWxlIHx8IChkZWZhdWx0VG9FTiA/IFwiZW4tVVNcIiA6IHN5c3RlbUxvY2FsZSgpKTtcbiAgICBjb25zdCBudW1iZXJpbmdTeXN0ZW1SID0gbnVtYmVyaW5nU3lzdGVtIHx8IFNldHRpbmdzLmRlZmF1bHROdW1iZXJpbmdTeXN0ZW07XG4gICAgY29uc3Qgb3V0cHV0Q2FsZW5kYXJSID0gb3V0cHV0Q2FsZW5kYXIgfHwgU2V0dGluZ3MuZGVmYXVsdE91dHB1dENhbGVuZGFyO1xuICAgIHJldHVybiBuZXcgTG9jYWxlKGxvY2FsZVIsIG51bWJlcmluZ1N5c3RlbVIsIG91dHB1dENhbGVuZGFyUiwgc3BlY2lmaWVkTG9jYWxlKTtcbiAgfVxuXG4gIHN0YXRpYyByZXNldENhY2hlKCkge1xuICAgIHN5c0xvY2FsZUNhY2hlID0gbnVsbDtcbiAgICBpbnRsRFRDYWNoZSA9IHt9O1xuICAgIGludGxOdW1DYWNoZSA9IHt9O1xuICAgIGludGxSZWxDYWNoZSA9IHt9O1xuICB9XG5cbiAgc3RhdGljIGZyb21PYmplY3QoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7XG4gICAgcmV0dXJuIExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGxvY2FsZSwgbnVtYmVyaW5nLCBvdXRwdXRDYWxlbmRhciwgc3BlY2lmaWVkTG9jYWxlKSB7XG4gICAgY29uc3QgW3BhcnNlZExvY2FsZSwgcGFyc2VkTnVtYmVyaW5nU3lzdGVtLCBwYXJzZWRPdXRwdXRDYWxlbmRhcl0gPSBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGUpO1xuXG4gICAgdGhpcy5sb2NhbGUgPSBwYXJzZWRMb2NhbGU7XG4gICAgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPSBudW1iZXJpbmcgfHwgcGFyc2VkTnVtYmVyaW5nU3lzdGVtIHx8IG51bGw7XG4gICAgdGhpcy5vdXRwdXRDYWxlbmRhciA9IG91dHB1dENhbGVuZGFyIHx8IHBhcnNlZE91dHB1dENhbGVuZGFyIHx8IG51bGw7XG4gICAgdGhpcy5pbnRsID0gaW50bENvbmZpZ1N0cmluZyh0aGlzLmxvY2FsZSwgdGhpcy5udW1iZXJpbmdTeXN0ZW0sIHRoaXMub3V0cHV0Q2FsZW5kYXIpO1xuXG4gICAgdGhpcy53ZWVrZGF5c0NhY2hlID0geyBmb3JtYXQ6IHt9LCBzdGFuZGFsb25lOiB7fSB9O1xuICAgIHRoaXMubW9udGhzQ2FjaGUgPSB7IGZvcm1hdDoge30sIHN0YW5kYWxvbmU6IHt9IH07XG4gICAgdGhpcy5tZXJpZGllbUNhY2hlID0gbnVsbDtcbiAgICB0aGlzLmVyYUNhY2hlID0ge307XG5cbiAgICB0aGlzLnNwZWNpZmllZExvY2FsZSA9IHNwZWNpZmllZExvY2FsZTtcbiAgICB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID0gbnVsbDtcbiAgfVxuXG4gIGdldCBmYXN0TnVtYmVycygpIHtcbiAgICBpZiAodGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9PSBudWxsKSB7XG4gICAgICB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID0gc3VwcG9ydHNGYXN0TnVtYmVycyh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mYXN0TnVtYmVyc0NhY2hlZDtcbiAgfVxuXG4gIGxpc3RpbmdNb2RlKCkge1xuICAgIGNvbnN0IGlzQWN0dWFsbHlFbiA9IHRoaXMuaXNFbmdsaXNoKCk7XG4gICAgY29uc3QgaGFzTm9XZWlyZG5lc3MgPVxuICAgICAgKHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBudWxsIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBcImxhdG5cIikgJiZcbiAgICAgICh0aGlzLm91dHB1dENhbGVuZGFyID09PSBudWxsIHx8IHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IFwiZ3JlZ29yeVwiKTtcbiAgICByZXR1cm4gaXNBY3R1YWxseUVuICYmIGhhc05vV2VpcmRuZXNzID8gXCJlblwiIDogXCJpbnRsXCI7XG4gIH1cblxuICBjbG9uZShhbHRzKSB7XG4gICAgaWYgKCFhbHRzIHx8IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFsdHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKFxuICAgICAgICBhbHRzLmxvY2FsZSB8fCB0aGlzLnNwZWNpZmllZExvY2FsZSxcbiAgICAgICAgYWx0cy5udW1iZXJpbmdTeXN0ZW0gfHwgdGhpcy5udW1iZXJpbmdTeXN0ZW0sXG4gICAgICAgIGFsdHMub3V0cHV0Q2FsZW5kYXIgfHwgdGhpcy5vdXRwdXRDYWxlbmRhcixcbiAgICAgICAgYWx0cy5kZWZhdWx0VG9FTiB8fCBmYWxzZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZWRlZmF1bHRUb0VOKGFsdHMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKHsgLi4uYWx0cywgZGVmYXVsdFRvRU46IHRydWUgfSk7XG4gIH1cblxuICByZWRlZmF1bHRUb1N5c3RlbShhbHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSh7IC4uLmFsdHMsIGRlZmF1bHRUb0VOOiBmYWxzZSB9KTtcbiAgfVxuXG4gIG1vbnRocyhsZW5ndGgsIGZvcm1hdCA9IGZhbHNlLCBkZWZhdWx0T0sgPSB0cnVlKSB7XG4gICAgcmV0dXJuIGxpc3RTdHVmZih0aGlzLCBsZW5ndGgsIGRlZmF1bHRPSywgRW5nbGlzaC5tb250aHMsICgpID0+IHtcbiAgICAgIGNvbnN0IGludGwgPSBmb3JtYXQgPyB7IG1vbnRoOiBsZW5ndGgsIGRheTogXCJudW1lcmljXCIgfSA6IHsgbW9udGg6IGxlbmd0aCB9LFxuICAgICAgICBmb3JtYXRTdHIgPSBmb3JtYXQgPyBcImZvcm1hdFwiIDogXCJzdGFuZGFsb25lXCI7XG4gICAgICBpZiAoIXRoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdKSB7XG4gICAgICAgIHRoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdID0gbWFwTW9udGhzKChkdCkgPT4gdGhpcy5leHRyYWN0KGR0LCBpbnRsLCBcIm1vbnRoXCIpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm1vbnRoc0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXTtcbiAgICB9KTtcbiAgfVxuXG4gIHdlZWtkYXlzKGxlbmd0aCwgZm9ybWF0ID0gZmFsc2UsIGRlZmF1bHRPSyA9IHRydWUpIHtcbiAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIGxlbmd0aCwgZGVmYXVsdE9LLCBFbmdsaXNoLndlZWtkYXlzLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnRsID0gZm9ybWF0XG4gICAgICAgICAgPyB7IHdlZWtkYXk6IGxlbmd0aCwgeWVhcjogXCJudW1lcmljXCIsIG1vbnRoOiBcImxvbmdcIiwgZGF5OiBcIm51bWVyaWNcIiB9XG4gICAgICAgICAgOiB7IHdlZWtkYXk6IGxlbmd0aCB9LFxuICAgICAgICBmb3JtYXRTdHIgPSBmb3JtYXQgPyBcImZvcm1hdFwiIDogXCJzdGFuZGFsb25lXCI7XG4gICAgICBpZiAoIXRoaXMud2Vla2RheXNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0pIHtcbiAgICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSA9IG1hcFdlZWtkYXlzKChkdCkgPT5cbiAgICAgICAgICB0aGlzLmV4dHJhY3QoZHQsIGludGwsIFwid2Vla2RheVwiKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMud2Vla2RheXNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF07XG4gICAgfSk7XG4gIH1cblxuICBtZXJpZGllbXMoZGVmYXVsdE9LID0gdHJ1ZSkge1xuICAgIHJldHVybiBsaXN0U3R1ZmYoXG4gICAgICB0aGlzLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgZGVmYXVsdE9LLFxuICAgICAgKCkgPT4gRW5nbGlzaC5tZXJpZGllbXMsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIC8vIEluIHRoZW9yeSB0aGVyZSBjb3VsZCBiZSBhcmliaXRyYXJ5IGRheSBwZXJpb2RzLiBXZSdyZSBnb25uYSBhc3N1bWUgdGhlcmUgYXJlIGV4YWN0bHkgdHdvXG4gICAgICAgIC8vIGZvciBBTSBhbmQgUE0uIFRoaXMgaXMgcHJvYmFibHkgd3JvbmcsIGJ1dCBpdCdzIG1ha2VzIHBhcnNpbmcgd2F5IGVhc2llci5cbiAgICAgICAgaWYgKCF0aGlzLm1lcmlkaWVtQ2FjaGUpIHtcbiAgICAgICAgICBjb25zdCBpbnRsID0geyBob3VyOiBcIm51bWVyaWNcIiwgaG91ckN5Y2xlOiBcImgxMlwiIH07XG4gICAgICAgICAgdGhpcy5tZXJpZGllbUNhY2hlID0gW0RhdGVUaW1lLnV0YygyMDE2LCAxMSwgMTMsIDkpLCBEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzLCAxOSldLm1hcChcbiAgICAgICAgICAgIChkdCkgPT4gdGhpcy5leHRyYWN0KGR0LCBpbnRsLCBcImRheXBlcmlvZFwiKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5tZXJpZGllbUNhY2hlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBlcmFzKGxlbmd0aCwgZGVmYXVsdE9LID0gdHJ1ZSkge1xuICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCBkZWZhdWx0T0ssIEVuZ2xpc2guZXJhcywgKCkgPT4ge1xuICAgICAgY29uc3QgaW50bCA9IHsgZXJhOiBsZW5ndGggfTtcblxuICAgICAgLy8gVGhpcyBpcyBwcm9ibGVtYXRpYy4gRGlmZmVyZW50IGNhbGVuZGFycyBhcmUgZ29pbmcgdG8gZGVmaW5lIGVyYXMgdG90YWxseSBkaWZmZXJlbnRseS4gV2hhdCBJIG5lZWQgaXMgdGhlIG1pbmltdW0gc2V0IG9mIGRhdGVzXG4gICAgICAvLyB0byBkZWZpbml0ZWx5IGVudW1lcmF0ZSB0aGVtLlxuICAgICAgaWYgKCF0aGlzLmVyYUNhY2hlW2xlbmd0aF0pIHtcbiAgICAgICAgdGhpcy5lcmFDYWNoZVtsZW5ndGhdID0gW0RhdGVUaW1lLnV0YygtNDAsIDEsIDEpLCBEYXRlVGltZS51dGMoMjAxNywgMSwgMSldLm1hcCgoZHQpID0+XG4gICAgICAgICAgdGhpcy5leHRyYWN0KGR0LCBpbnRsLCBcImVyYVwiKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5lcmFDYWNoZVtsZW5ndGhdO1xuICAgIH0pO1xuICB9XG5cbiAgZXh0cmFjdChkdCwgaW50bE9wdHMsIGZpZWxkKSB7XG4gICAgY29uc3QgZGYgPSB0aGlzLmR0Rm9ybWF0dGVyKGR0LCBpbnRsT3B0cyksXG4gICAgICByZXN1bHRzID0gZGYuZm9ybWF0VG9QYXJ0cygpLFxuICAgICAgbWF0Y2hpbmcgPSByZXN1bHRzLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSBmaWVsZCk7XG4gICAgcmV0dXJuIG1hdGNoaW5nID8gbWF0Y2hpbmcudmFsdWUgOiBudWxsO1xuICB9XG5cbiAgbnVtYmVyRm9ybWF0dGVyKG9wdHMgPSB7fSkge1xuICAgIC8vIHRoaXMgZm9yY2VzaW1wbGUgb3B0aW9uIGlzIG5ldmVyIHVzZWQgKHRoZSBvbmx5IGNhbGxlciBzaG9ydC1jaXJjdWl0cyBvbiBpdCwgYnV0IGl0IHNlZW1zIHNhZmVyIHRvIGxlYXZlKVxuICAgIC8vIChpbiBjb250cmFzdCwgdGhlIHJlc3Qgb2YgdGhlIGNvbmRpdGlvbiBpcyB1c2VkIGhlYXZpbHkpXG4gICAgcmV0dXJuIG5ldyBQb2x5TnVtYmVyRm9ybWF0dGVyKHRoaXMuaW50bCwgb3B0cy5mb3JjZVNpbXBsZSB8fCB0aGlzLmZhc3ROdW1iZXJzLCBvcHRzKTtcbiAgfVxuXG4gIGR0Rm9ybWF0dGVyKGR0LCBpbnRsT3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIG5ldyBQb2x5RGF0ZUZvcm1hdHRlcihkdCwgdGhpcy5pbnRsLCBpbnRsT3B0cyk7XG4gIH1cblxuICByZWxGb3JtYXR0ZXIob3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIG5ldyBQb2x5UmVsRm9ybWF0dGVyKHRoaXMuaW50bCwgdGhpcy5pc0VuZ2xpc2goKSwgb3B0cyk7XG4gIH1cblxuICBsaXN0Rm9ybWF0dGVyKG9wdHMgPSB7fSkge1xuICAgIHJldHVybiBnZXRDYWNoZWRMRih0aGlzLmludGwsIG9wdHMpO1xuICB9XG5cbiAgaXNFbmdsaXNoKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmxvY2FsZSA9PT0gXCJlblwiIHx8XG4gICAgICB0aGlzLmxvY2FsZS50b0xvd2VyQ2FzZSgpID09PSBcImVuLXVzXCIgfHxcbiAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMuaW50bCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLnN0YXJ0c1dpdGgoXCJlbi11c1wiKVxuICAgICk7XG4gIH1cblxuICBlcXVhbHMob3RoZXIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5sb2NhbGUgPT09IG90aGVyLmxvY2FsZSAmJlxuICAgICAgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPT09IG90aGVyLm51bWJlcmluZ1N5c3RlbSAmJlxuICAgICAgdGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gb3RoZXIub3V0cHV0Q2FsZW5kYXJcbiAgICApO1xuICB9XG59XG4iLCAiaW1wb3J0IHtcbiAgdW50cnVuY2F0ZVllYXIsXG4gIHNpZ25lZE9mZnNldCxcbiAgcGFyc2VJbnRlZ2VyLFxuICBwYXJzZU1pbGxpcyxcbiAgaWFuYVJlZ2V4LFxuICBpc1VuZGVmaW5lZCxcbiAgcGFyc2VGbG9hdGluZyxcbn0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuaW1wb3J0ICogYXMgRW5nbGlzaCBmcm9tIFwiLi9lbmdsaXNoLmpzXCI7XG5pbXBvcnQgRml4ZWRPZmZzZXRab25lIGZyb20gXCIuLi96b25lcy9maXhlZE9mZnNldFpvbmUuanNcIjtcbmltcG9ydCBJQU5BWm9uZSBmcm9tIFwiLi4vem9uZXMvSUFOQVpvbmUuanNcIjtcblxuLypcbiAqIFRoaXMgZmlsZSBoYW5kbGVzIHBhcnNpbmcgZm9yIHdlbGwtc3BlY2lmaWVkIGZvcm1hdHMuIEhlcmUncyBob3cgaXQgd29ya3M6XG4gKiBUd28gdGhpbmdzIGdvIGludG8gcGFyc2luZzogYSByZWdleCB0byBtYXRjaCB3aXRoIGFuZCBhbiBleHRyYWN0b3IgdG8gdGFrZSBhcGFydCB0aGUgZ3JvdXBzIGluIHRoZSBtYXRjaC5cbiAqIEFuIGV4dHJhY3RvciBpcyBqdXN0IGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHJlZ2V4IG1hdGNoIGFycmF5IGFuZCByZXR1cm5zIGEgeyB5ZWFyOiAuLi4sIG1vbnRoOiAuLi4gfSBvYmplY3RcbiAqIHBhcnNlKCkgZG9lcyB0aGUgd29yayBvZiBleGVjdXRpbmcgdGhlIHJlZ2V4IGFuZCBhcHBseWluZyB0aGUgZXh0cmFjdG9yLiBJdCB0YWtlcyBtdWx0aXBsZSByZWdleC9leHRyYWN0b3IgcGFpcnMgdG8gdHJ5IGluIHNlcXVlbmNlLlxuICogRXh0cmFjdG9ycyBjYW4gdGFrZSBhIFwiY3Vyc29yXCIgcmVwcmVzZW50aW5nIHRoZSBvZmZzZXQgaW4gdGhlIG1hdGNoIHRvIGxvb2sgYXQuIFRoaXMgbWFrZXMgaXQgZWFzeSB0byBjb21iaW5lIGV4dHJhY3RvcnMuXG4gKiBjb21iaW5lRXh0cmFjdG9ycygpIGRvZXMgdGhlIHdvcmsgb2YgY29tYmluaW5nIHRoZW0sIGtlZXBpbmcgdHJhY2sgb2YgdGhlIGN1cnNvciB0aHJvdWdoIG11bHRpcGxlIGV4dHJhY3Rpb25zLlxuICogU29tZSBleHRyYWN0aW9ucyBhcmUgc3VwZXIgZHVtYiBhbmQgc2ltcGxlUGFyc2UgYW5kIGZyb21TdHJpbmdzIGhlbHAgRFJZIHRoZW0uXG4gKi9cblxuZnVuY3Rpb24gY29tYmluZVJlZ2V4ZXMoLi4ucmVnZXhlcykge1xuICBjb25zdCBmdWxsID0gcmVnZXhlcy5yZWR1Y2UoKGYsIHIpID0+IGYgKyByLnNvdXJjZSwgXCJcIik7XG4gIHJldHVybiBSZWdFeHAoYF4ke2Z1bGx9JGApO1xufVxuXG5mdW5jdGlvbiBjb21iaW5lRXh0cmFjdG9ycyguLi5leHRyYWN0b3JzKSB7XG4gIHJldHVybiAobSkgPT5cbiAgICBleHRyYWN0b3JzXG4gICAgICAucmVkdWNlKFxuICAgICAgICAoW21lcmdlZFZhbHMsIG1lcmdlZFpvbmUsIGN1cnNvcl0sIGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgW3ZhbCwgem9uZSwgbmV4dF0gPSBleChtLCBjdXJzb3IpO1xuICAgICAgICAgIHJldHVybiBbeyAuLi5tZXJnZWRWYWxzLCAuLi52YWwgfSwgbWVyZ2VkWm9uZSB8fCB6b25lLCBuZXh0XTtcbiAgICAgICAgfSxcbiAgICAgICAgW3t9LCBudWxsLCAxXVxuICAgICAgKVxuICAgICAgLnNsaWNlKDAsIDIpO1xufVxuXG5mdW5jdGlvbiBwYXJzZShzLCAuLi5wYXR0ZXJucykge1xuICBpZiAocyA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtudWxsLCBudWxsXTtcbiAgfVxuXG4gIGZvciAoY29uc3QgW3JlZ2V4LCBleHRyYWN0b3JdIG9mIHBhdHRlcm5zKSB7XG4gICAgY29uc3QgbSA9IHJlZ2V4LmV4ZWMocyk7XG4gICAgaWYgKG0pIHtcbiAgICAgIHJldHVybiBleHRyYWN0b3IobSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbbnVsbCwgbnVsbF07XG59XG5cbmZ1bmN0aW9uIHNpbXBsZVBhcnNlKC4uLmtleXMpIHtcbiAgcmV0dXJuIChtYXRjaCwgY3Vyc29yKSA9PiB7XG4gICAgY29uc3QgcmV0ID0ge307XG4gICAgbGV0IGk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgcmV0W2tleXNbaV1dID0gcGFyc2VJbnRlZ2VyKG1hdGNoW2N1cnNvciArIGldKTtcbiAgICB9XG4gICAgcmV0dXJuIFtyZXQsIG51bGwsIGN1cnNvciArIGldO1xuICB9O1xufVxuXG4vLyBJU08gYW5kIFNRTCBwYXJzaW5nXG5jb25zdCBvZmZzZXRSZWdleCA9IC8oPzooWil8KFsrLV1cXGRcXGQpKD86Oj8oXFxkXFxkKSk/KS8sXG4gIGlzb1RpbWVCYXNlUmVnZXggPSAvKFxcZFxcZCkoPzo6PyhcXGRcXGQpKD86Oj8oXFxkXFxkKSg/OlsuLF0oXFxkezEsMzB9KSk/KT8pPy8sXG4gIGlzb1RpbWVSZWdleCA9IFJlZ0V4cChgJHtpc29UaW1lQmFzZVJlZ2V4LnNvdXJjZX0ke29mZnNldFJlZ2V4LnNvdXJjZX0/YCksXG4gIGlzb1RpbWVFeHRlbnNpb25SZWdleCA9IFJlZ0V4cChgKD86VCR7aXNvVGltZVJlZ2V4LnNvdXJjZX0pP2ApLFxuICBpc29ZbWRSZWdleCA9IC8oWystXVxcZHs2fXxcXGR7NH0pKD86LT8oXFxkXFxkKSg/Oi0/KFxcZFxcZCkpPyk/LyxcbiAgaXNvV2Vla1JlZ2V4ID0gLyhcXGR7NH0pLT9XKFxcZFxcZCkoPzotPyhcXGQpKT8vLFxuICBpc29PcmRpbmFsUmVnZXggPSAvKFxcZHs0fSktPyhcXGR7M30pLyxcbiAgZXh0cmFjdElTT1dlZWtEYXRhID0gc2ltcGxlUGFyc2UoXCJ3ZWVrWWVhclwiLCBcIndlZWtOdW1iZXJcIiwgXCJ3ZWVrRGF5XCIpLFxuICBleHRyYWN0SVNPT3JkaW5hbERhdGEgPSBzaW1wbGVQYXJzZShcInllYXJcIiwgXCJvcmRpbmFsXCIpLFxuICBzcWxZbWRSZWdleCA9IC8oXFxkezR9KS0oXFxkXFxkKS0oXFxkXFxkKS8sIC8vIGR1bWJlZC1kb3duIHZlcnNpb24gb2YgdGhlIElTTyBvbmVcbiAgc3FsVGltZVJlZ2V4ID0gUmVnRXhwKFxuICAgIGAke2lzb1RpbWVCYXNlUmVnZXguc291cmNlfSA/KD86JHtvZmZzZXRSZWdleC5zb3VyY2V9fCgke2lhbmFSZWdleC5zb3VyY2V9KSk/YFxuICApLFxuICBzcWxUaW1lRXh0ZW5zaW9uUmVnZXggPSBSZWdFeHAoYCg/OiAke3NxbFRpbWVSZWdleC5zb3VyY2V9KT9gKTtcblxuZnVuY3Rpb24gaW50KG1hdGNoLCBwb3MsIGZhbGxiYWNrKSB7XG4gIGNvbnN0IG0gPSBtYXRjaFtwb3NdO1xuICByZXR1cm4gaXNVbmRlZmluZWQobSkgPyBmYWxsYmFjayA6IHBhcnNlSW50ZWdlcihtKTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdElTT1ltZChtYXRjaCwgY3Vyc29yKSB7XG4gIGNvbnN0IGl0ZW0gPSB7XG4gICAgeWVhcjogaW50KG1hdGNoLCBjdXJzb3IpLFxuICAgIG1vbnRoOiBpbnQobWF0Y2gsIGN1cnNvciArIDEsIDEpLFxuICAgIGRheTogaW50KG1hdGNoLCBjdXJzb3IgKyAyLCAxKSxcbiAgfTtcblxuICByZXR1cm4gW2l0ZW0sIG51bGwsIGN1cnNvciArIDNdO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0SVNPVGltZShtYXRjaCwgY3Vyc29yKSB7XG4gIGNvbnN0IGl0ZW0gPSB7XG4gICAgaG91cnM6IGludChtYXRjaCwgY3Vyc29yLCAwKSxcbiAgICBtaW51dGVzOiBpbnQobWF0Y2gsIGN1cnNvciArIDEsIDApLFxuICAgIHNlY29uZHM6IGludChtYXRjaCwgY3Vyc29yICsgMiwgMCksXG4gICAgbWlsbGlzZWNvbmRzOiBwYXJzZU1pbGxpcyhtYXRjaFtjdXJzb3IgKyAzXSksXG4gIH07XG5cbiAgcmV0dXJuIFtpdGVtLCBudWxsLCBjdXJzb3IgKyA0XTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdElTT09mZnNldChtYXRjaCwgY3Vyc29yKSB7XG4gIGNvbnN0IGxvY2FsID0gIW1hdGNoW2N1cnNvcl0gJiYgIW1hdGNoW2N1cnNvciArIDFdLFxuICAgIGZ1bGxPZmZzZXQgPSBzaWduZWRPZmZzZXQobWF0Y2hbY3Vyc29yICsgMV0sIG1hdGNoW2N1cnNvciArIDJdKSxcbiAgICB6b25lID0gbG9jYWwgPyBudWxsIDogRml4ZWRPZmZzZXRab25lLmluc3RhbmNlKGZ1bGxPZmZzZXQpO1xuICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAzXTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdElBTkFab25lKG1hdGNoLCBjdXJzb3IpIHtcbiAgY29uc3Qgem9uZSA9IG1hdGNoW2N1cnNvcl0gPyBJQU5BWm9uZS5jcmVhdGUobWF0Y2hbY3Vyc29yXSkgOiBudWxsO1xuICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAxXTtcbn1cblxuLy8gSVNPIHRpbWUgcGFyc2luZ1xuXG5jb25zdCBpc29UaW1lT25seSA9IFJlZ0V4cChgXlQ/JHtpc29UaW1lQmFzZVJlZ2V4LnNvdXJjZX0kYCk7XG5cbi8vIElTTyBkdXJhdGlvbiBwYXJzaW5nXG5cbmNvbnN0IGlzb0R1cmF0aW9uID1cbiAgL14tP1AoPzooPzooLT9cXGR7MSw5fSg/OlxcLlxcZHsxLDl9KT8pWSk/KD86KC0/XFxkezEsOX0oPzpcXC5cXGR7MSw5fSk/KU0pPyg/OigtP1xcZHsxLDl9KD86XFwuXFxkezEsOX0pPylXKT8oPzooLT9cXGR7MSw5fSg/OlxcLlxcZHsxLDl9KT8pRCk/KD86VCg/OigtP1xcZHsxLDl9KD86XFwuXFxkezEsOX0pPylIKT8oPzooLT9cXGR7MSw5fSg/OlxcLlxcZHsxLDl9KT8pTSk/KD86KC0/XFxkezEsMjB9KSg/OlsuLF0oLT9cXGR7MSw5fSkpP1MpPyk/KSQvO1xuXG5mdW5jdGlvbiBleHRyYWN0SVNPRHVyYXRpb24obWF0Y2gpIHtcbiAgY29uc3QgW3MsIHllYXJTdHIsIG1vbnRoU3RyLCB3ZWVrU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyLCBtaWxsaXNlY29uZHNTdHJdID1cbiAgICBtYXRjaDtcblxuICBjb25zdCBoYXNOZWdhdGl2ZVByZWZpeCA9IHNbMF0gPT09IFwiLVwiO1xuICBjb25zdCBuZWdhdGl2ZVNlY29uZHMgPSBzZWNvbmRTdHIgJiYgc2Vjb25kU3RyWzBdID09PSBcIi1cIjtcblxuICBjb25zdCBtYXliZU5lZ2F0ZSA9IChudW0sIGZvcmNlID0gZmFsc2UpID0+XG4gICAgbnVtICE9PSB1bmRlZmluZWQgJiYgKGZvcmNlIHx8IChudW0gJiYgaGFzTmVnYXRpdmVQcmVmaXgpKSA/IC1udW0gOiBudW07XG5cbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICB5ZWFyczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyh5ZWFyU3RyKSksXG4gICAgICBtb250aHM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcobW9udGhTdHIpKSxcbiAgICAgIHdlZWtzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKHdlZWtTdHIpKSxcbiAgICAgIGRheXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoZGF5U3RyKSksXG4gICAgICBob3VyczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyhob3VyU3RyKSksXG4gICAgICBtaW51dGVzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKG1pbnV0ZVN0cikpLFxuICAgICAgc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyhzZWNvbmRTdHIpLCBzZWNvbmRTdHIgPT09IFwiLTBcIiksXG4gICAgICBtaWxsaXNlY29uZHM6IG1heWJlTmVnYXRlKHBhcnNlTWlsbGlzKG1pbGxpc2Vjb25kc1N0ciksIG5lZ2F0aXZlU2Vjb25kcyksXG4gICAgfSxcbiAgXTtcbn1cblxuLy8gVGhlc2UgYXJlIGEgbGl0dGxlIGJyYWluZGVhZC4gRURUICpzaG91bGQqIHRlbGwgdXMgdGhhdCB3ZSdyZSBpbiwgc2F5LCBBbWVyaWNhL05ld19Zb3JrXG4vLyBhbmQgbm90IGp1c3QgdGhhdCB3ZSdyZSBpbiAtMjQwICpyaWdodCBub3cqLiBCdXQgc2luY2UgSSBkb24ndCB0aGluayB0aGVzZSBhcmUgdXNlZCB0aGF0IG9mdGVuXG4vLyBJJ20ganVzdCBnb2luZyB0byBpZ25vcmUgdGhhdFxuY29uc3Qgb2JzT2Zmc2V0cyA9IHtcbiAgR01UOiAwLFxuICBFRFQ6IC00ICogNjAsXG4gIEVTVDogLTUgKiA2MCxcbiAgQ0RUOiAtNSAqIDYwLFxuICBDU1Q6IC02ICogNjAsXG4gIE1EVDogLTYgKiA2MCxcbiAgTVNUOiAtNyAqIDYwLFxuICBQRFQ6IC03ICogNjAsXG4gIFBTVDogLTggKiA2MCxcbn07XG5cbmZ1bmN0aW9uIGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKSB7XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICB5ZWFyOiB5ZWFyU3RyLmxlbmd0aCA9PT0gMiA/IHVudHJ1bmNhdGVZZWFyKHBhcnNlSW50ZWdlcih5ZWFyU3RyKSkgOiBwYXJzZUludGVnZXIoeWVhclN0ciksXG4gICAgbW9udGg6IEVuZ2xpc2gubW9udGhzU2hvcnQuaW5kZXhPZihtb250aFN0cikgKyAxLFxuICAgIGRheTogcGFyc2VJbnRlZ2VyKGRheVN0ciksXG4gICAgaG91cjogcGFyc2VJbnRlZ2VyKGhvdXJTdHIpLFxuICAgIG1pbnV0ZTogcGFyc2VJbnRlZ2VyKG1pbnV0ZVN0ciksXG4gIH07XG5cbiAgaWYgKHNlY29uZFN0cikgcmVzdWx0LnNlY29uZCA9IHBhcnNlSW50ZWdlcihzZWNvbmRTdHIpO1xuICBpZiAod2Vla2RheVN0cikge1xuICAgIHJlc3VsdC53ZWVrZGF5ID1cbiAgICAgIHdlZWtkYXlTdHIubGVuZ3RoID4gM1xuICAgICAgICA/IEVuZ2xpc2gud2Vla2RheXNMb25nLmluZGV4T2Yod2Vla2RheVN0cikgKyAxXG4gICAgICAgIDogRW5nbGlzaC53ZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0cikgKyAxO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gUkZDIDI4MjIvNTMyMlxuY29uc3QgcmZjMjgyMiA9XG4gIC9eKD86KE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1biksXFxzKT8oXFxkezEsMn0pXFxzKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKVxccyhcXGR7Miw0fSlcXHMoXFxkXFxkKTooXFxkXFxkKSg/OjooXFxkXFxkKSk/XFxzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfCg/OihbKy1dXFxkXFxkKShcXGRcXGQpKSkkLztcblxuZnVuY3Rpb24gZXh0cmFjdFJGQzI4MjIobWF0Y2gpIHtcbiAgY29uc3QgW1xuICAgICAgLFxuICAgICAgd2Vla2RheVN0cixcbiAgICAgIGRheVN0cixcbiAgICAgIG1vbnRoU3RyLFxuICAgICAgeWVhclN0cixcbiAgICAgIGhvdXJTdHIsXG4gICAgICBtaW51dGVTdHIsXG4gICAgICBzZWNvbmRTdHIsXG4gICAgICBvYnNPZmZzZXQsXG4gICAgICBtaWxPZmZzZXQsXG4gICAgICBvZmZIb3VyU3RyLFxuICAgICAgb2ZmTWludXRlU3RyLFxuICAgIF0gPSBtYXRjaCxcbiAgICByZXN1bHQgPSBmcm9tU3RyaW5ncyh3ZWVrZGF5U3RyLCB5ZWFyU3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cik7XG5cbiAgbGV0IG9mZnNldDtcbiAgaWYgKG9ic09mZnNldCkge1xuICAgIG9mZnNldCA9IG9ic09mZnNldHNbb2JzT2Zmc2V0XTtcbiAgfSBlbHNlIGlmIChtaWxPZmZzZXQpIHtcbiAgICBvZmZzZXQgPSAwO1xuICB9IGVsc2Uge1xuICAgIG9mZnNldCA9IHNpZ25lZE9mZnNldChvZmZIb3VyU3RyLCBvZmZNaW51dGVTdHIpO1xuICB9XG5cbiAgcmV0dXJuIFtyZXN1bHQsIG5ldyBGaXhlZE9mZnNldFpvbmUob2Zmc2V0KV07XG59XG5cbmZ1bmN0aW9uIHByZXByb2Nlc3NSRkMyODIyKHMpIHtcbiAgLy8gUmVtb3ZlIGNvbW1lbnRzIGFuZCBmb2xkaW5nIHdoaXRlc3BhY2UgYW5kIHJlcGxhY2UgbXVsdGlwbGUtc3BhY2VzIHdpdGggYSBzaW5nbGUgc3BhY2VcbiAgcmV0dXJuIHNcbiAgICAucmVwbGFjZSgvXFwoW14pXSpcXCl8W1xcblxcdF0vZywgXCIgXCIpXG4gICAgLnJlcGxhY2UoLyhcXHNcXHMrKS9nLCBcIiBcIilcbiAgICAudHJpbSgpO1xufVxuXG4vLyBodHRwIGRhdGVcblxuY29uc3QgcmZjMTEyMyA9XG4gICAgL14oTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSwgKFxcZFxcZCkgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoXFxkezR9KSAoXFxkXFxkKTooXFxkXFxkKTooXFxkXFxkKSBHTVQkLyxcbiAgcmZjODUwID1cbiAgICAvXihNb25kYXl8VHVlc2RheXxXZWRzZGF5fFRodXJzZGF5fEZyaWRheXxTYXR1cmRheXxTdW5kYXkpLCAoXFxkXFxkKS0oSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpLShcXGRcXGQpIChcXGRcXGQpOihcXGRcXGQpOihcXGRcXGQpIEdNVCQvLFxuICBhc2NpaSA9XG4gICAgL14oTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSAoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpICggXFxkfFxcZFxcZCkgKFxcZFxcZCk6KFxcZFxcZCk6KFxcZFxcZCkgKFxcZHs0fSkkLztcblxuZnVuY3Rpb24gZXh0cmFjdFJGQzExMjNPcjg1MChtYXRjaCkge1xuICBjb25zdCBbLCB3ZWVrZGF5U3RyLCBkYXlTdHIsIG1vbnRoU3RyLCB5ZWFyU3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cl0gPSBtYXRjaCxcbiAgICByZXN1bHQgPSBmcm9tU3RyaW5ncyh3ZWVrZGF5U3RyLCB5ZWFyU3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cik7XG4gIHJldHVybiBbcmVzdWx0LCBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2VdO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0QVNDSUkobWF0Y2gpIHtcbiAgY29uc3QgWywgd2Vla2RheVN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIsIHllYXJTdHJdID0gbWF0Y2gsXG4gICAgcmVzdWx0ID0gZnJvbVN0cmluZ3Mod2Vla2RheVN0ciwgeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpO1xuICByZXR1cm4gW3Jlc3VsdCwgRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlXTtcbn1cblxuY29uc3QgaXNvWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKGlzb1ltZFJlZ2V4LCBpc29UaW1lRXh0ZW5zaW9uUmVnZXgpO1xuY29uc3QgaXNvV2Vla1dpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29XZWVrUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7XG5jb25zdCBpc29PcmRpbmFsV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKGlzb09yZGluYWxSZWdleCwgaXNvVGltZUV4dGVuc2lvblJlZ2V4KTtcbmNvbnN0IGlzb1RpbWVDb21iaW5lZFJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoaXNvVGltZVJlZ2V4KTtcblxuY29uc3QgZXh0cmFjdElTT1ltZFRpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycyhcbiAgZXh0cmFjdElTT1ltZCxcbiAgZXh0cmFjdElTT1RpbWUsXG4gIGV4dHJhY3RJU09PZmZzZXRcbik7XG5jb25zdCBleHRyYWN0SVNPV2Vla1RpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycyhcbiAgZXh0cmFjdElTT1dlZWtEYXRhLFxuICBleHRyYWN0SVNPVGltZSxcbiAgZXh0cmFjdElTT09mZnNldFxuKTtcbmNvbnN0IGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWUgPSBjb21iaW5lRXh0cmFjdG9ycyhcbiAgZXh0cmFjdElTT09yZGluYWxEYXRhLFxuICBleHRyYWN0SVNPVGltZSxcbiAgZXh0cmFjdElTT09mZnNldFxuKTtcbmNvbnN0IGV4dHJhY3RJU09UaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUsIGV4dHJhY3RJU09PZmZzZXQpO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSVNPRGF0ZShzKSB7XG4gIHJldHVybiBwYXJzZShcbiAgICBzLFxuICAgIFtpc29ZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPWW1kVGltZUFuZE9mZnNldF0sXG4gICAgW2lzb1dlZWtXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPV2Vla1RpbWVBbmRPZmZzZXRdLFxuICAgIFtpc29PcmRpbmFsV2l0aFRpbWVFeHRlbnNpb25SZWdleCwgZXh0cmFjdElTT09yZGluYWxEYXRlQW5kVGltZV0sXG4gICAgW2lzb1RpbWVDb21iaW5lZFJlZ2V4LCBleHRyYWN0SVNPVGltZUFuZE9mZnNldF1cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUkZDMjgyMkRhdGUocykge1xuICByZXR1cm4gcGFyc2UocHJlcHJvY2Vzc1JGQzI4MjIocyksIFtyZmMyODIyLCBleHRyYWN0UkZDMjgyMl0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VIVFRQRGF0ZShzKSB7XG4gIHJldHVybiBwYXJzZShcbiAgICBzLFxuICAgIFtyZmMxMTIzLCBleHRyYWN0UkZDMTEyM09yODUwXSxcbiAgICBbcmZjODUwLCBleHRyYWN0UkZDMTEyM09yODUwXSxcbiAgICBbYXNjaWksIGV4dHJhY3RBU0NJSV1cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSVNPRHVyYXRpb24ocykge1xuICByZXR1cm4gcGFyc2UocywgW2lzb0R1cmF0aW9uLCBleHRyYWN0SVNPRHVyYXRpb25dKTtcbn1cblxuY29uc3QgZXh0cmFjdElTT1RpbWVPbmx5ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUpO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJU09UaW1lT25seShzKSB7XG4gIHJldHVybiBwYXJzZShzLCBbaXNvVGltZU9ubHksIGV4dHJhY3RJU09UaW1lT25seV0pO1xufVxuXG5jb25zdCBzcWxZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoc3FsWW1kUmVnZXgsIHNxbFRpbWVFeHRlbnNpb25SZWdleCk7XG5jb25zdCBzcWxUaW1lQ29tYmluZWRSZWdleCA9IGNvbWJpbmVSZWdleGVzKHNxbFRpbWVSZWdleCk7XG5cbmNvbnN0IGV4dHJhY3RJU09ZbWRUaW1lT2Zmc2V0QW5kSUFOQVpvbmUgPSBjb21iaW5lRXh0cmFjdG9ycyhcbiAgZXh0cmFjdElTT1ltZCxcbiAgZXh0cmFjdElTT1RpbWUsXG4gIGV4dHJhY3RJU09PZmZzZXQsXG4gIGV4dHJhY3RJQU5BWm9uZVxuKTtcbmNvbnN0IGV4dHJhY3RJU09UaW1lT2Zmc2V0QW5kSUFOQVpvbmUgPSBjb21iaW5lRXh0cmFjdG9ycyhcbiAgZXh0cmFjdElTT1RpbWUsXG4gIGV4dHJhY3RJU09PZmZzZXQsXG4gIGV4dHJhY3RJQU5BWm9uZVxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU1FMKHMpIHtcbiAgcmV0dXJuIHBhcnNlKFxuICAgIHMsXG4gICAgW3NxbFltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09ZbWRUaW1lT2Zmc2V0QW5kSUFOQVpvbmVdLFxuICAgIFtzcWxUaW1lQ29tYmluZWRSZWdleCwgZXh0cmFjdElTT1RpbWVPZmZzZXRBbmRJQU5BWm9uZV1cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBJbnZhbGlkQXJndW1lbnRFcnJvciwgSW52YWxpZER1cmF0aW9uRXJyb3IsIEludmFsaWRVbml0RXJyb3IgfSBmcm9tIFwiLi9lcnJvcnMuanNcIjtcbmltcG9ydCBGb3JtYXR0ZXIgZnJvbSBcIi4vaW1wbC9mb3JtYXR0ZXIuanNcIjtcbmltcG9ydCBJbnZhbGlkIGZyb20gXCIuL2ltcGwvaW52YWxpZC5qc1wiO1xuaW1wb3J0IExvY2FsZSBmcm9tIFwiLi9pbXBsL2xvY2FsZS5qc1wiO1xuaW1wb3J0IHsgcGFyc2VJU09EdXJhdGlvbiwgcGFyc2VJU09UaW1lT25seSB9IGZyb20gXCIuL2ltcGwvcmVnZXhQYXJzZXIuanNcIjtcbmltcG9ydCB7XG4gIGFzTnVtYmVyLFxuICBoYXNPd25Qcm9wZXJ0eSxcbiAgaXNJbnRlZ2VyLFxuICBpc051bWJlcixcbiAgaXNVbmRlZmluZWQsXG4gIG5vcm1hbGl6ZU9iamVjdCxcbiAgcm91bmRUbyxcbn0gZnJvbSBcIi4vaW1wbC91dGlsLmpzXCI7XG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3MuanNcIjtcblxuY29uc3QgSU5WQUxJRCA9IFwiSW52YWxpZCBEdXJhdGlvblwiO1xuXG4vLyB1bml0IGNvbnZlcnNpb24gY29uc3RhbnRzXG5leHBvcnQgY29uc3QgbG93T3JkZXJNYXRyaXggPSB7XG4gICAgd2Vla3M6IHtcbiAgICAgIGRheXM6IDcsXG4gICAgICBob3VyczogNyAqIDI0LFxuICAgICAgbWludXRlczogNyAqIDI0ICogNjAsXG4gICAgICBzZWNvbmRzOiA3ICogMjQgKiA2MCAqIDYwLFxuICAgICAgbWlsbGlzZWNvbmRzOiA3ICogMjQgKiA2MCAqIDYwICogMTAwMCxcbiAgICB9LFxuICAgIGRheXM6IHtcbiAgICAgIGhvdXJzOiAyNCxcbiAgICAgIG1pbnV0ZXM6IDI0ICogNjAsXG4gICAgICBzZWNvbmRzOiAyNCAqIDYwICogNjAsXG4gICAgICBtaWxsaXNlY29uZHM6IDI0ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgfSxcbiAgICBob3VyczogeyBtaW51dGVzOiA2MCwgc2Vjb25kczogNjAgKiA2MCwgbWlsbGlzZWNvbmRzOiA2MCAqIDYwICogMTAwMCB9LFxuICAgIG1pbnV0ZXM6IHsgc2Vjb25kczogNjAsIG1pbGxpc2Vjb25kczogNjAgKiAxMDAwIH0sXG4gICAgc2Vjb25kczogeyBtaWxsaXNlY29uZHM6IDEwMDAgfSxcbiAgfSxcbiAgY2FzdWFsTWF0cml4ID0ge1xuICAgIHllYXJzOiB7XG4gICAgICBxdWFydGVyczogNCxcbiAgICAgIG1vbnRoczogMTIsXG4gICAgICB3ZWVrczogNTIsXG4gICAgICBkYXlzOiAzNjUsXG4gICAgICBob3VyczogMzY1ICogMjQsXG4gICAgICBtaW51dGVzOiAzNjUgKiAyNCAqIDYwLFxuICAgICAgc2Vjb25kczogMzY1ICogMjQgKiA2MCAqIDYwLFxuICAgICAgbWlsbGlzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAgKiAxMDAwLFxuICAgIH0sXG4gICAgcXVhcnRlcnM6IHtcbiAgICAgIG1vbnRoczogMyxcbiAgICAgIHdlZWtzOiAxMyxcbiAgICAgIGRheXM6IDkxLFxuICAgICAgaG91cnM6IDkxICogMjQsXG4gICAgICBtaW51dGVzOiA5MSAqIDI0ICogNjAsXG4gICAgICBzZWNvbmRzOiA5MSAqIDI0ICogNjAgKiA2MCxcbiAgICAgIG1pbGxpc2Vjb25kczogOTEgKiAyNCAqIDYwICogNjAgKiAxMDAwLFxuICAgIH0sXG4gICAgbW9udGhzOiB7XG4gICAgICB3ZWVrczogNCxcbiAgICAgIGRheXM6IDMwLFxuICAgICAgaG91cnM6IDMwICogMjQsXG4gICAgICBtaW51dGVzOiAzMCAqIDI0ICogNjAsXG4gICAgICBzZWNvbmRzOiAzMCAqIDI0ICogNjAgKiA2MCxcbiAgICAgIG1pbGxpc2Vjb25kczogMzAgKiAyNCAqIDYwICogNjAgKiAxMDAwLFxuICAgIH0sXG5cbiAgICAuLi5sb3dPcmRlck1hdHJpeCxcbiAgfSxcbiAgZGF5c0luWWVhckFjY3VyYXRlID0gMTQ2MDk3LjAgLyA0MDAsXG4gIGRheXNJbk1vbnRoQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQ4MDAsXG4gIGFjY3VyYXRlTWF0cml4ID0ge1xuICAgIHllYXJzOiB7XG4gICAgICBxdWFydGVyczogNCxcbiAgICAgIG1vbnRoczogMTIsXG4gICAgICB3ZWVrczogZGF5c0luWWVhckFjY3VyYXRlIC8gNyxcbiAgICAgIGRheXM6IGRheXNJblllYXJBY2N1cmF0ZSxcbiAgICAgIGhvdXJzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCxcbiAgICAgIG1pbnV0ZXM6IGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjAsXG4gICAgICBzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsXG4gICAgICBtaWxsaXNlY29uZHM6IGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgfSxcbiAgICBxdWFydGVyczoge1xuICAgICAgbW9udGhzOiAzLFxuICAgICAgd2Vla3M6IGRheXNJblllYXJBY2N1cmF0ZSAvIDI4LFxuICAgICAgZGF5czogZGF5c0luWWVhckFjY3VyYXRlIC8gNCxcbiAgICAgIGhvdXJzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQpIC8gNCxcbiAgICAgIG1pbnV0ZXM6IChkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwKSAvIDQsXG4gICAgICBzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwKSAvIDQsXG4gICAgICBtaWxsaXNlY29uZHM6IChkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAgKiAxMDAwKSAvIDQsXG4gICAgfSxcbiAgICBtb250aHM6IHtcbiAgICAgIHdlZWtzOiBkYXlzSW5Nb250aEFjY3VyYXRlIC8gNyxcbiAgICAgIGRheXM6IGRheXNJbk1vbnRoQWNjdXJhdGUsXG4gICAgICBob3VyczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0LFxuICAgICAgbWludXRlczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0ICogNjAsXG4gICAgICBzZWNvbmRzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCAqIDYwLFxuICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCxcbiAgICB9LFxuICAgIC4uLmxvd09yZGVyTWF0cml4LFxuICB9O1xuXG4vLyB1bml0cyBvcmRlcmVkIGJ5IHNpemVcbmNvbnN0IG9yZGVyZWRVbml0cyA9IFtcbiAgXCJ5ZWFyc1wiLFxuICBcInF1YXJ0ZXJzXCIsXG4gIFwibW9udGhzXCIsXG4gIFwid2Vla3NcIixcbiAgXCJkYXlzXCIsXG4gIFwiaG91cnNcIixcbiAgXCJtaW51dGVzXCIsXG4gIFwic2Vjb25kc1wiLFxuICBcIm1pbGxpc2Vjb25kc1wiLFxuXTtcblxuY29uc3QgcmV2ZXJzZVVuaXRzID0gb3JkZXJlZFVuaXRzLnNsaWNlKDApLnJldmVyc2UoKTtcblxuLy8gY2xvbmUgcmVhbGx5IG1lYW5zIFwiY3JlYXRlIGFub3RoZXIgaW5zdGFuY2UganVzdCBsaWtlIHRoaXMgb25lLCBidXQgd2l0aCB0aGVzZSBjaGFuZ2VzXCJcbmZ1bmN0aW9uIGNsb25lKGR1ciwgYWx0cywgY2xlYXIgPSBmYWxzZSkge1xuICAvLyBkZWVwIG1lcmdlIGZvciB2YWxzXG4gIGNvbnN0IGNvbmYgPSB7XG4gICAgdmFsdWVzOiBjbGVhciA/IGFsdHMudmFsdWVzIDogeyAuLi5kdXIudmFsdWVzLCAuLi4oYWx0cy52YWx1ZXMgfHwge30pIH0sXG4gICAgbG9jOiBkdXIubG9jLmNsb25lKGFsdHMubG9jKSxcbiAgICBjb252ZXJzaW9uQWNjdXJhY3k6IGFsdHMuY29udmVyc2lvbkFjY3VyYWN5IHx8IGR1ci5jb252ZXJzaW9uQWNjdXJhY3ksXG4gIH07XG4gIHJldHVybiBuZXcgRHVyYXRpb24oY29uZik7XG59XG5cbmZ1bmN0aW9uIGFudGlUcnVuYyhuKSB7XG4gIHJldHVybiBuIDwgMCA/IE1hdGguZmxvb3IobikgOiBNYXRoLmNlaWwobik7XG59XG5cbi8vIE5COiBtdXRhdGVzIHBhcmFtZXRlcnNcbmZ1bmN0aW9uIGNvbnZlcnQobWF0cml4LCBmcm9tTWFwLCBmcm9tVW5pdCwgdG9NYXAsIHRvVW5pdCkge1xuICBjb25zdCBjb252ID0gbWF0cml4W3RvVW5pdF1bZnJvbVVuaXRdLFxuICAgIHJhdyA9IGZyb21NYXBbZnJvbVVuaXRdIC8gY29udixcbiAgICBzYW1lU2lnbiA9IE1hdGguc2lnbihyYXcpID09PSBNYXRoLnNpZ24odG9NYXBbdG9Vbml0XSksXG4gICAgLy8gb2ssIHNvIHRoaXMgaXMgd2lsZCwgYnV0IHNlZSB0aGUgbWF0cml4IGluIHRoZSB0ZXN0c1xuICAgIGFkZGVkID1cbiAgICAgICFzYW1lU2lnbiAmJiB0b01hcFt0b1VuaXRdICE9PSAwICYmIE1hdGguYWJzKHJhdykgPD0gMSA/IGFudGlUcnVuYyhyYXcpIDogTWF0aC50cnVuYyhyYXcpO1xuICB0b01hcFt0b1VuaXRdICs9IGFkZGVkO1xuICBmcm9tTWFwW2Zyb21Vbml0XSAtPSBhZGRlZCAqIGNvbnY7XG59XG5cbi8vIE5COiBtdXRhdGVzIHBhcmFtZXRlcnNcbmZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlcyhtYXRyaXgsIHZhbHMpIHtcbiAgcmV2ZXJzZVVuaXRzLnJlZHVjZSgocHJldmlvdXMsIGN1cnJlbnQpID0+IHtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHNbY3VycmVudF0pKSB7XG4gICAgICBpZiAocHJldmlvdXMpIHtcbiAgICAgICAgY29udmVydChtYXRyaXgsIHZhbHMsIHByZXZpb3VzLCB2YWxzLCBjdXJyZW50KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjdXJyZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcHJldmlvdXM7XG4gICAgfVxuICB9LCBudWxsKTtcbn1cblxuLyoqXG4gKiBBIER1cmF0aW9uIG9iamVjdCByZXByZXNlbnRzIGEgcGVyaW9kIG9mIHRpbWUsIGxpa2UgXCIyIG1vbnRoc1wiIG9yIFwiMSBkYXksIDEgaG91clwiLiBDb25jZXB0dWFsbHksIGl0J3MganVzdCBhIG1hcCBvZiB1bml0cyB0byB0aGVpciBxdWFudGl0aWVzLCBhY2NvbXBhbmllZCBieSBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBhbmQgbWV0aG9kcyBmb3IgY3JlYXRpbmcsIHBhcnNpbmcsIGludGVycm9nYXRpbmcsIHRyYW5zZm9ybWluZywgYW5kIGZvcm1hdHRpbmcgdGhlbS4gVGhleSBjYW4gYmUgdXNlZCBvbiB0aGVpciBvd24gb3IgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBMdXhvbiB0eXBlczsgZm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIHtAbGluayBEYXRlVGltZSNwbHVzfSB0byBhZGQgYSBEdXJhdGlvbiBvYmplY3QgdG8gYSBEYXRlVGltZSwgcHJvZHVjaW5nIGFub3RoZXIgRGF0ZVRpbWUuXG4gKlxuICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIGNvbW1vbmx5IHVzZWQgbWV0aG9kcyBhbmQgZ2V0dGVycyBpbiBEdXJhdGlvbjpcbiAqXG4gKiAqICoqQ3JlYXRpb24qKiBUbyBjcmVhdGUgYSBEdXJhdGlvbiwgdXNlIHtAbGluayBEdXJhdGlvbiNmcm9tTWlsbGlzfSwge0BsaW5rIER1cmF0aW9uI2Zyb21PYmplY3R9LCBvciB7QGxpbmsgRHVyYXRpb24jZnJvbUlTT30uXG4gKiAqICoqVW5pdCB2YWx1ZXMqKiBTZWUgdGhlIHtAbGluayBEdXJhdGlvbiN5ZWFyc30sIHtAbGluayBEdXJhdGlvbi5tb250aHN9LCB7QGxpbmsgRHVyYXRpb24jd2Vla3N9LCB7QGxpbmsgRHVyYXRpb24jZGF5c30sIHtAbGluayBEdXJhdGlvbiNob3Vyc30sIHtAbGluayBEdXJhdGlvbiNtaW51dGVzfSwge0BsaW5rIER1cmF0aW9uI3NlY29uZHN9LCB7QGxpbmsgRHVyYXRpb24jbWlsbGlzZWNvbmRzfSBhY2Nlc3NvcnMuXG4gKiAqICoqQ29uZmlndXJhdGlvbioqIFNlZSAge0BsaW5rIER1cmF0aW9uI2xvY2FsZX0gYW5kIHtAbGluayBEdXJhdGlvbiNudW1iZXJpbmdTeXN0ZW19IGFjY2Vzc29ycy5cbiAqICogKipUcmFuc2Zvcm1hdGlvbioqIFRvIGNyZWF0ZSBuZXcgRHVyYXRpb25zIG91dCBvZiBvbGQgb25lcyB1c2Uge0BsaW5rIER1cmF0aW9uI3BsdXN9LCB7QGxpbmsgRHVyYXRpb24jbWludXN9LCB7QGxpbmsgRHVyYXRpb24jbm9ybWFsaXplfSwge0BsaW5rIER1cmF0aW9uI3NldH0sIHtAbGluayBEdXJhdGlvbiNyZWNvbmZpZ3VyZX0sIHtAbGluayBEdXJhdGlvbiNzaGlmdFRvfSwgYW5kIHtAbGluayBEdXJhdGlvbiNuZWdhdGV9LlxuICogKiAqKk91dHB1dCoqIFRvIGNvbnZlcnQgdGhlIER1cmF0aW9uIGludG8gb3RoZXIgcmVwcmVzZW50YXRpb25zLCBzZWUge0BsaW5rIER1cmF0aW9uI2FzfSwge0BsaW5rIER1cmF0aW9uI3RvSVNPfSwge0BsaW5rIER1cmF0aW9uI3RvRm9ybWF0fSwgYW5kIHtAbGluayBEdXJhdGlvbiN0b0pTT059XG4gKlxuICogVGhlcmUncyBhcmUgbW9yZSBtZXRob2RzIGRvY3VtZW50ZWQgYmVsb3cuIEluIGFkZGl0aW9uLCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzdWJ0bGVyIHRvcGljcyBsaWtlIGludGVybmF0aW9uYWxpemF0aW9uIGFuZCB2YWxpZGl0eSwgc2VlIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0aW9uLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEdXJhdGlvbiB7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgY29uc3QgYWNjdXJhdGUgPSBjb25maWcuY29udmVyc2lvbkFjY3VyYWN5ID09PSBcImxvbmd0ZXJtXCIgfHwgZmFsc2U7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy52YWx1ZXMgPSBjb25maWcudmFsdWVzO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5jb252ZXJzaW9uQWNjdXJhY3kgPSBhY2N1cmF0ZSA/IFwibG9uZ3Rlcm1cIiA6IFwiY2FzdWFsXCI7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5pbnZhbGlkID0gY29uZmlnLmludmFsaWQgfHwgbnVsbDtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLm1hdHJpeCA9IGFjY3VyYXRlID8gYWNjdXJhdGVNYXRyaXggOiBjYXN1YWxNYXRyaXg7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5pc0x1eG9uRHVyYXRpb24gPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBEdXJhdGlvbiBmcm9tIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvdW50IG9mIG1pbGxpc2Vjb25kc1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIHBhcnNpbmdcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2VcbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBzdGF0aWMgZnJvbU1pbGxpcyhjb3VudCwgb3B0cykge1xuICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWlsbGlzZWNvbmRzOiBjb3VudCB9LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy5cbiAgICogSWYgdGhpcyBvYmplY3QgaXMgZW1wdHkgdGhlbiBhIHplcm8gbWlsbGlzZWNvbmRzIGR1cmF0aW9uIGlzIHJldHVybmVkLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gdGhlIG9iamVjdCB0byBjcmVhdGUgdGhlIERhdGVUaW1lIGZyb21cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai55ZWFyc1xuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnF1YXJ0ZXJzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubW9udGhzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla3NcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5kYXlzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouaG91cnNcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taW51dGVzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouc2Vjb25kc1xuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbGxpc2Vjb25kc1xuICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9W11dIC0gb3B0aW9ucyBmb3IgY3JlYXRpbmcgdGhpcyBEdXJhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gdGhlIGxvY2FsZSB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHN0YXRpYyBmcm9tT2JqZWN0KG9iaiwgb3B0cyA9IHt9KSB7XG4gICAgaWYgKG9iaiA9PSBudWxsIHx8IHR5cGVvZiBvYmogIT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgYER1cmF0aW9uLmZyb21PYmplY3Q6IGFyZ3VtZW50IGV4cGVjdGVkIHRvIGJlIGFuIG9iamVjdCwgZ290ICR7XG4gICAgICAgICAgb2JqID09PSBudWxsID8gXCJudWxsXCIgOiB0eXBlb2Ygb2JqXG4gICAgICAgIH1gXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRHVyYXRpb24oe1xuICAgICAgdmFsdWVzOiBub3JtYWxpemVPYmplY3Qob2JqLCBEdXJhdGlvbi5ub3JtYWxpemVVbml0KSxcbiAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0cyksXG4gICAgICBjb252ZXJzaW9uQWNjdXJhY3k6IG9wdHMuY29udmVyc2lvbkFjY3VyYWN5LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gRHVyYXRpb25MaWtlLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdCB8IG51bWJlciB8IER1cmF0aW9ufSBkdXJhdGlvbkxpa2VcbiAgICogT25lIG9mOlxuICAgKiAtIG9iamVjdCB3aXRoIGtleXMgbGlrZSAneWVhcnMnIGFuZCAnaG91cnMnLlxuICAgKiAtIG51bWJlciByZXByZXNlbnRpbmcgbWlsbGlzZWNvbmRzXG4gICAqIC0gRHVyYXRpb24gaW5zdGFuY2VcbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBzdGF0aWMgZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbkxpa2UpIHtcbiAgICBpZiAoaXNOdW1iZXIoZHVyYXRpb25MaWtlKSkge1xuICAgICAgcmV0dXJuIER1cmF0aW9uLmZyb21NaWxsaXMoZHVyYXRpb25MaWtlKTtcbiAgICB9IGVsc2UgaWYgKER1cmF0aW9uLmlzRHVyYXRpb24oZHVyYXRpb25MaWtlKSkge1xuICAgICAgcmV0dXJuIGR1cmF0aW9uTGlrZTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkdXJhdGlvbkxpa2UgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KGR1cmF0aW9uTGlrZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgYFVua25vd24gZHVyYXRpb24gYXJndW1lbnQgJHtkdXJhdGlvbkxpa2V9IG9mIHR5cGUgJHt0eXBlb2YgZHVyYXRpb25MaWtlfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gYW4gSVNPIDg2MDEgZHVyYXRpb24gc3RyaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRleHQgdG8gcGFyc2VcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjRHVyYXRpb25zXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU08oJ1AzWTZNMVc0RFQxMkgzME01UycpLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiAzLCBtb250aHM6IDYsIHdlZWtzOiAxLCBkYXlzOiA0LCBob3VyczogMTIsIG1pbnV0ZXM6IDMwLCBzZWNvbmRzOiA1IH1cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUFQyM0gnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjMgfVxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPKCdQNVkzTScpLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiA1LCBtb250aHM6IDMgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMpIHtcbiAgICBjb25zdCBbcGFyc2VkXSA9IHBhcnNlSVNPRHVyYXRpb24odGV4dCk7XG4gICAgaWYgKHBhcnNlZCkge1xuICAgICAgcmV0dXJuIER1cmF0aW9uLmZyb21PYmplY3QocGFyc2VkLCBvcHRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoXCJ1bnBhcnNhYmxlXCIsIGB0aGUgaW5wdXQgXCIke3RleHR9XCIgY2FuJ3QgYmUgcGFyc2VkIGFzIElTTyA4NjAxYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gYW4gSVNPIDg2MDEgdGltZSBzdHJpbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGV4dCB0byBwYXJzZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIHBhcnNpbmdcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2VcbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lc1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTE6MjI6MzMuNDQ0JykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDExLCBtaW51dGVzOiAyMiwgc2Vjb25kczogMzMsIG1pbGxpc2Vjb25kczogNDQ0IH1cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJzExOjAwJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDExLCBtaW51dGVzOiAwLCBzZWNvbmRzOiAwIH1cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJ1QxMTowMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9XG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU09UaW1lKCcxMTAwJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDExLCBtaW51dGVzOiAwLCBzZWNvbmRzOiAwIH1cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJ1QxMTAwJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDExLCBtaW51dGVzOiAwLCBzZWNvbmRzOiAwIH1cbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBzdGF0aWMgZnJvbUlTT1RpbWUodGV4dCwgb3B0cykge1xuICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09UaW1lT25seSh0ZXh0KTtcbiAgICBpZiAocGFyc2VkKSB7XG4gICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdChwYXJzZWQsIG9wdHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gRHVyYXRpb24uaW52YWxpZChcInVucGFyc2FibGVcIiwgYHRoZSBpbnB1dCBcIiR7dGV4dH1cIiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGludmFsaWQgRHVyYXRpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb24gLSBzaW1wbGUgc3RyaW5nIG9mIHdoeSB0aGlzIGRhdGV0aW1lIGlzIGludmFsaWQuIFNob3VsZCBub3QgY29udGFpbiBwYXJhbWV0ZXJzIG9yIGFueXRoaW5nIGVsc2UgZGF0YS1kZXBlbmRlbnRcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtleHBsYW5hdGlvbj1udWxsXSAtIGxvbmdlciBleHBsYW5hdGlvbiwgbWF5IGluY2x1ZGUgcGFyYW1ldGVycyBhbmQgb3RoZXIgdXNlZnVsIGRlYnVnZ2luZyBpbmZvcm1hdGlvblxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHN0YXRpYyBpbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24gPSBudWxsKSB7XG4gICAgaWYgKCFyZWFzb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgRHVyYXRpb24gaXMgaW52YWxpZFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnZhbGlkID0gcmVhc29uIGluc3RhbmNlb2YgSW52YWxpZCA/IHJlYXNvbiA6IG5ldyBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pO1xuXG4gICAgaWYgKFNldHRpbmdzLnRocm93T25JbnZhbGlkKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZER1cmF0aW9uRXJyb3IoaW52YWxpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgRHVyYXRpb24oeyBpbnZhbGlkIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc3RhdGljIG5vcm1hbGl6ZVVuaXQodW5pdCkge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7XG4gICAgICB5ZWFyOiBcInllYXJzXCIsXG4gICAgICB5ZWFyczogXCJ5ZWFyc1wiLFxuICAgICAgcXVhcnRlcjogXCJxdWFydGVyc1wiLFxuICAgICAgcXVhcnRlcnM6IFwicXVhcnRlcnNcIixcbiAgICAgIG1vbnRoOiBcIm1vbnRoc1wiLFxuICAgICAgbW9udGhzOiBcIm1vbnRoc1wiLFxuICAgICAgd2VlazogXCJ3ZWVrc1wiLFxuICAgICAgd2Vla3M6IFwid2Vla3NcIixcbiAgICAgIGRheTogXCJkYXlzXCIsXG4gICAgICBkYXlzOiBcImRheXNcIixcbiAgICAgIGhvdXI6IFwiaG91cnNcIixcbiAgICAgIGhvdXJzOiBcImhvdXJzXCIsXG4gICAgICBtaW51dGU6IFwibWludXRlc1wiLFxuICAgICAgbWludXRlczogXCJtaW51dGVzXCIsXG4gICAgICBzZWNvbmQ6IFwic2Vjb25kc1wiLFxuICAgICAgc2Vjb25kczogXCJzZWNvbmRzXCIsXG4gICAgICBtaWxsaXNlY29uZDogXCJtaWxsaXNlY29uZHNcIixcbiAgICAgIG1pbGxpc2Vjb25kczogXCJtaWxsaXNlY29uZHNcIixcbiAgICB9W3VuaXQgPyB1bml0LnRvTG93ZXJDYXNlKCkgOiB1bml0XTtcblxuICAgIGlmICghbm9ybWFsaXplZCkgdGhyb3cgbmV3IEludmFsaWRVbml0RXJyb3IodW5pdCk7XG5cbiAgICByZXR1cm4gbm9ybWFsaXplZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYSBEdXJhdGlvbi4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllc1xuICAgKiBAcGFyYW0ge29iamVjdH0gb1xuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgc3RhdGljIGlzRHVyYXRpb24obykge1xuICAgIHJldHVybiAobyAmJiBvLmlzTHV4b25EdXJhdGlvbikgfHwgZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0ICB0aGUgbG9jYWxlIG9mIGEgRHVyYXRpb24sIHN1Y2ggJ2VuLUdCJ1xuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IGxvY2FsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubG9jYWxlIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG51bWJlcmluZyBzeXN0ZW0gb2YgYSBEdXJhdGlvbiwgc3VjaCAnYmVuZycuIFRoZSBudW1iZXJpbmcgc3lzdGVtIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEdXJhdGlvblxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IG51bWJlcmluZ1N5c3RlbSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHVyYXRpb24gZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcuIFlvdSBtYXkgdXNlIHRoZXNlIHRva2VuczpcbiAgICogKiBgU2AgZm9yIG1pbGxpc2Vjb25kc1xuICAgKiAqIGBzYCBmb3Igc2Vjb25kc1xuICAgKiAqIGBtYCBmb3IgbWludXRlc1xuICAgKiAqIGBoYCBmb3IgaG91cnNcbiAgICogKiBgZGAgZm9yIGRheXNcbiAgICogKiBgTWAgZm9yIG1vbnRoc1xuICAgKiAqIGB5YCBmb3IgeWVhcnNcbiAgICogTm90ZXM6XG4gICAqICogQWRkIHBhZGRpbmcgYnkgcmVwZWF0aW5nIHRoZSB0b2tlbiwgZS5nLiBcInl5XCIgcGFkcyB0aGUgeWVhcnMgdG8gdHdvIGRpZ2l0cywgXCJoaGhoXCIgcGFkcyB0aGUgaG91cnMgb3V0IHRvIGZvdXIgZGlnaXRzXG4gICAqICogVGhlIGR1cmF0aW9uIHdpbGwgYmUgY29udmVydGVkIHRvIHRoZSBzZXQgb2YgdW5pdHMgaW4gdGhlIGZvcm1hdCBzdHJpbmcgdXNpbmcge0BsaW5rIER1cmF0aW9uI3NoaWZ0VG99IGFuZCB0aGUgRHVyYXRpb25zJ3MgY29udmVyc2lvbiBhY2N1cmFjeSBzZXR0aW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCBzdHJpbmdcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuZmxvb3I9dHJ1ZV0gLSBmbG9vciBudW1lcmljYWwgdmFsdWVzXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSwgZGF5czogNiwgc2Vjb25kczogMiB9KS50b0Zvcm1hdChcInkgZCBzXCIpIC8vPT4gXCIxIDYgMlwiXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSwgZGF5czogNiwgc2Vjb25kczogMiB9KS50b0Zvcm1hdChcInl5IGRkIHNzc1wiKSAvLz0+IFwiMDEgMDYgMDAyXCJcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KFwiTSBTXCIpIC8vPT4gXCIxMiA1MTg0MDIwMDBcIlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0Zvcm1hdChmbXQsIG9wdHMgPSB7fSkge1xuICAgIC8vIHJldmVyc2UtY29tcGF0IHNpbmNlIDEuMjsgd2UgYWx3YXlzIHJvdW5kIGRvd24gbm93LCBuZXZlciB1cCwgYW5kIHdlIGRvIGl0IGJ5IGRlZmF1bHRcbiAgICBjb25zdCBmbXRPcHRzID0ge1xuICAgICAgLi4ub3B0cyxcbiAgICAgIGZsb29yOiBvcHRzLnJvdW5kICE9PSBmYWxzZSAmJiBvcHRzLmZsb29yICE9PSBmYWxzZSxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRcbiAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZSh0aGlzLmxvYywgZm10T3B0cykuZm9ybWF0RHVyYXRpb25Gcm9tU3RyaW5nKHRoaXMsIGZtdClcbiAgICAgIDogSU5WQUxJRDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgRHVyYXRpb24gd2l0aCBhbGwgdW5pdHMgaW5jbHVkZWRcbiAgICogVG8gbW9kaWZ5IGl0cyBiZWhhdmlvciB1c2UgdGhlIGBsaXN0U3R5bGVgIGFuZCBhbnkgSW50bC5OdW1iZXJGb3JtYXQgb3B0aW9uLCB0aG91Z2ggYHVuaXREaXNwbGF5YCBpcyBlc3BlY2lhbGx5IHJlbGV2YW50LiBTZWUge0BsaW5rIEludGwuTnVtYmVyRm9ybWF0fS5cbiAgICogQHBhcmFtIG9wdHMgLSBPbiBvcHRpb24gb2JqZWN0IHRvIG92ZXJyaWRlIHRoZSBmb3JtYXR0aW5nLiBBY2NlcHRzIHRoZSBzYW1lIGtleXMgYXMgdGhlIG9wdGlvbnMgcGFyYW1ldGVyIG9mIHRoZSBuYXRpdmUgYEludC5OdW1iZXJGb3JtYXRgIGNvbnN0cnVjdG9yLCBhcyB3ZWxsIGFzIGBsaXN0U3R5bGVgLlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBqc1xuICAgKiB2YXIgZHVyID0gRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEsIGhvdXJzOiA1LCBtaW51dGVzOiA2IH0pXG4gICAqIGR1ci50b0h1bWFuKCkgLy89PiAnMSBkYXksIDUgaG91cnMsIDYgbWludXRlcydcbiAgICogZHVyLnRvSHVtYW4oeyBsaXN0U3R5bGU6IFwibG9uZ1wiIH0pIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCBhbmQgNiBtaW51dGVzJ1xuICAgKiBkdXIudG9IdW1hbih7IHVuaXREaXNwbGF5OiBcInNob3J0XCIgfSkgLy89PiAnMSBkYXksIDUgaHIsIDYgbWluJ1xuICAgKiBgYGBcbiAgICovXG4gIHRvSHVtYW4ob3B0cyA9IHt9KSB7XG4gICAgY29uc3QgbCA9IG9yZGVyZWRVbml0c1xuICAgICAgLm1hcCgodW5pdCkgPT4ge1xuICAgICAgICBjb25zdCB2YWwgPSB0aGlzLnZhbHVlc1t1bml0XTtcbiAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHZhbCkpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5sb2NcbiAgICAgICAgICAubnVtYmVyRm9ybWF0dGVyKHsgc3R5bGU6IFwidW5pdFwiLCB1bml0RGlzcGxheTogXCJsb25nXCIsIC4uLm9wdHMsIHVuaXQ6IHVuaXQuc2xpY2UoMCwgLTEpIH0pXG4gICAgICAgICAgLmZvcm1hdCh2YWwpO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKG4pID0+IG4pO1xuXG4gICAgcmV0dXJuIHRoaXMubG9jXG4gICAgICAubGlzdEZvcm1hdHRlcih7IHR5cGU6IFwiY29uanVuY3Rpb25cIiwgc3R5bGU6IG9wdHMubGlzdFN0eWxlIHx8IFwibmFycm93XCIsIC4uLm9wdHMgfSlcbiAgICAgIC5mb3JtYXQobCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGggdGhpcyBEdXJhdGlvbidzIHZhbHVlcy5cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH1cbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgdG9PYmplY3QoKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTtcbiAgICByZXR1cm4geyAuLi50aGlzLnZhbHVlcyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLlxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI0R1cmF0aW9uc1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDMsIHNlY29uZHM6IDQ1IH0pLnRvSVNPKCkgLy89PiAnUDNZVDQ1UydcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNCwgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQNE1UNDVTJ1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiA1IH0pLnRvSVNPKCkgLy89PiAnUDVNJ1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogNSB9KS50b0lTTygpIC8vPT4gJ1BUNU0nXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDYgfSkudG9JU08oKSAvLz0+ICdQVDAuMDA2UydcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU08oKSB7XG4gICAgLy8gd2UgY291bGQgdXNlIHRoZSBmb3JtYXR0ZXIsIGJ1dCB0aGlzIGlzIGFuIGVhc2llciB3YXkgdG8gZ2V0IHRoZSBtaW5pbXVtIHN0cmluZ1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDtcblxuICAgIGxldCBzID0gXCJQXCI7XG4gICAgaWYgKHRoaXMueWVhcnMgIT09IDApIHMgKz0gdGhpcy55ZWFycyArIFwiWVwiO1xuICAgIGlmICh0aGlzLm1vbnRocyAhPT0gMCB8fCB0aGlzLnF1YXJ0ZXJzICE9PSAwKSBzICs9IHRoaXMubW9udGhzICsgdGhpcy5xdWFydGVycyAqIDMgKyBcIk1cIjtcbiAgICBpZiAodGhpcy53ZWVrcyAhPT0gMCkgcyArPSB0aGlzLndlZWtzICsgXCJXXCI7XG4gICAgaWYgKHRoaXMuZGF5cyAhPT0gMCkgcyArPSB0aGlzLmRheXMgKyBcIkRcIjtcbiAgICBpZiAodGhpcy5ob3VycyAhPT0gMCB8fCB0aGlzLm1pbnV0ZXMgIT09IDAgfHwgdGhpcy5zZWNvbmRzICE9PSAwIHx8IHRoaXMubWlsbGlzZWNvbmRzICE9PSAwKVxuICAgICAgcyArPSBcIlRcIjtcbiAgICBpZiAodGhpcy5ob3VycyAhPT0gMCkgcyArPSB0aGlzLmhvdXJzICsgXCJIXCI7XG4gICAgaWYgKHRoaXMubWludXRlcyAhPT0gMCkgcyArPSB0aGlzLm1pbnV0ZXMgKyBcIk1cIjtcbiAgICBpZiAodGhpcy5zZWNvbmRzICE9PSAwIHx8IHRoaXMubWlsbGlzZWNvbmRzICE9PSAwKVxuICAgICAgLy8gdGhpcyB3aWxsIGhhbmRsZSBcImZsb2F0aW5nIHBvaW50IG1hZG5lc3NcIiBieSByZW1vdmluZyBleHRyYSBkZWNpbWFsIHBsYWNlc1xuICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTg4MDA0L2lzLWZsb2F0aW5nLXBvaW50LW1hdGgtYnJva2VuXG4gICAgICBzICs9IHJvdW5kVG8odGhpcy5zZWNvbmRzICsgdGhpcy5taWxsaXNlY29uZHMgLyAxMDAwLCAzKSArIFwiU1wiO1xuICAgIGlmIChzID09PSBcIlBcIikgcyArPSBcIlQwU1wiO1xuICAgIHJldHVybiBzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLCBmb3JtYXR0ZWQgYXMgYSB0aW1lIG9mIGRheS5cbiAgICogTm90ZSB0aGF0IHRoaXMgd2lsbCByZXR1cm4gbnVsbCBpZiB0aGUgZHVyYXRpb24gaXMgaW52YWxpZCwgbmVnYXRpdmUsIG9yIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiAyNCBob3Vycy5cbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lc1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVByZWZpeD1mYWxzZV0gLSBpbmNsdWRlIHRoZSBgVGAgcHJlZml4XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBjaG9vc2UgYmV0d2VlbiB0aGUgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdFxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSgpIC8vPT4gJzExOjAwOjAwLjAwMCdcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc01pbGxpc2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcxMTowMDowMCdcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc1NlY29uZHM6IHRydWUgfSkgLy89PiAnMTE6MDAnXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgaW5jbHVkZVByZWZpeDogdHJ1ZSB9KSAvLz0+ICdUMTE6MDA6MDAuMDAwJ1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcxMTAwMDAuMDAwJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0lTT1RpbWUob3B0cyA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgbWlsbGlzID0gdGhpcy50b01pbGxpcygpO1xuICAgIGlmIChtaWxsaXMgPCAwIHx8IG1pbGxpcyA+PSA4NjQwMDAwMCkgcmV0dXJuIG51bGw7XG5cbiAgICBvcHRzID0ge1xuICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHM6IGZhbHNlLFxuICAgICAgc3VwcHJlc3NTZWNvbmRzOiBmYWxzZSxcbiAgICAgIGluY2x1ZGVQcmVmaXg6IGZhbHNlLFxuICAgICAgZm9ybWF0OiBcImV4dGVuZGVkXCIsXG4gICAgICAuLi5vcHRzLFxuICAgIH07XG5cbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuc2hpZnRUbyhcImhvdXJzXCIsIFwibWludXRlc1wiLCBcInNlY29uZHNcIiwgXCJtaWxsaXNlY29uZHNcIik7XG5cbiAgICBsZXQgZm10ID0gb3B0cy5mb3JtYXQgPT09IFwiYmFzaWNcIiA/IFwiaGhtbVwiIDogXCJoaDptbVwiO1xuXG4gICAgaWYgKCFvcHRzLnN1cHByZXNzU2Vjb25kcyB8fCB2YWx1ZS5zZWNvbmRzICE9PSAwIHx8IHZhbHVlLm1pbGxpc2Vjb25kcyAhPT0gMCkge1xuICAgICAgZm10ICs9IG9wdHMuZm9ybWF0ID09PSBcImJhc2ljXCIgPyBcInNzXCIgOiBcIjpzc1wiO1xuICAgICAgaWYgKCFvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzIHx8IHZhbHVlLm1pbGxpc2Vjb25kcyAhPT0gMCkge1xuICAgICAgICBmbXQgKz0gXCIuU1NTXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHN0ciA9IHZhbHVlLnRvRm9ybWF0KGZtdCk7XG5cbiAgICBpZiAob3B0cy5pbmNsdWRlUHJlZml4KSB7XG4gICAgICBzdHIgPSBcIlRcIiArIHN0cjtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIEpTT04uXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy50b0lTTygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIGRlYnVnZ2luZy5cbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9JU08oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG1pbGxpc2Vjb25kcyB2YWx1ZSBvZiB0aGlzIER1cmF0aW9uLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICB0b01pbGxpcygpIHtcbiAgICByZXR1cm4gdGhpcy5hcyhcIm1pbGxpc2Vjb25kc1wiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG1pbGxpc2Vjb25kcyB2YWx1ZSBvZiB0aGlzIER1cmF0aW9uLiBBbGlhcyBvZiB7QGxpbmsgdG9NaWxsaXN9XG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIHZhbHVlT2YoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIHRoaXMgRHVyYXRpb24gbG9uZ2VyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi5cbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gYWRkLiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHBsdXMoZHVyYXRpb24pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG5cbiAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKSxcbiAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5KGR1ci52YWx1ZXMsIGspIHx8IGhhc093blByb3BlcnR5KHRoaXMudmFsdWVzLCBrKSkge1xuICAgICAgICByZXN1bHRba10gPSBkdXIuZ2V0KGspICsgdGhpcy5nZXQoayk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdmFsdWVzOiByZXN1bHQgfSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSB0aGlzIER1cmF0aW9uIHNob3J0ZXIgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLlxuICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBzdWJ0cmFjdC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KClcbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBtaW51cyhkdXJhdGlvbikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcblxuICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pO1xuICAgIHJldHVybiB0aGlzLnBsdXMoZHVyLm5lZ2F0ZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTY2FsZSB0aGlzIER1cmF0aW9uIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCB1bml0LiBBcml0eSBpcyAxIG9yIDI6IHRoZSB2YWx1ZSBvZiB0aGUgdW5pdCBhbmQsIG9wdGlvbmFsbHksIHRoZSB1bml0IG5hbWUuIE11c3QgcmV0dXJuIGEgbnVtYmVyLlxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIG1pbnV0ZXM6IDMwIH0pLm1hcFVuaXRzKHggPT4geCAqIDIpIC8vPT4geyBob3VyczogMiwgbWludXRlczogNjAgfVxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIG1pbnV0ZXM6IDMwIH0pLm1hcFVuaXRzKCh4LCB1KSA9PiB1ID09PSBcImhvdXJcIiA/IHggKiAyIDogeCkgLy89PiB7IGhvdXJzOiAyLCBtaW51dGVzOiAzMCB9XG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgbWFwVW5pdHMoZm4pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgZm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKHRoaXMudmFsdWVzKSkge1xuICAgICAgcmVzdWx0W2tdID0gYXNOdW1iZXIoZm4odGhpcy52YWx1ZXNba10sIGspKTtcbiAgICB9XG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdmFsdWVzOiByZXN1bHQgfSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIGEgdW5pdCBzdWNoIGFzICdtaW51dGUnIG9yICdkYXknXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAyLCBkYXlzOiAzfSkuZ2V0KCd5ZWFycycpIC8vPT4gMlxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnbW9udGhzJykgLy89PiAwXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAyLCBkYXlzOiAzfSkuZ2V0KCdkYXlzJykgLy89PiAzXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIGdldCh1bml0KSB7XG4gICAgcmV0dXJuIHRoaXNbRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1bml0KV07XG4gIH1cblxuICAvKipcbiAgICogXCJTZXRcIiB0aGUgdmFsdWVzIG9mIHNwZWNpZmllZCB1bml0cy4gUmV0dXJuIGEgbmV3bHktY29uc3RydWN0ZWQgRHVyYXRpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSBhIG1hcHBpbmcgb2YgdW5pdHMgdG8gbnVtYmVyc1xuICAgKiBAZXhhbXBsZSBkdXIuc2V0KHsgeWVhcnM6IDIwMTcgfSlcbiAgICogQGV4YW1wbGUgZHVyLnNldCh7IGhvdXJzOiA4LCBtaW51dGVzOiAzMCB9KVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHNldCh2YWx1ZXMpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG5cbiAgICBjb25zdCBtaXhlZCA9IHsgLi4udGhpcy52YWx1ZXMsIC4uLm5vcm1hbGl6ZU9iamVjdCh2YWx1ZXMsIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpIH07XG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdmFsdWVzOiBtaXhlZCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoZSBsb2NhbGUgYW5kL29yIG51bWJlcmluZ1N5c3RlbS4gIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi5cbiAgICogQGV4YW1wbGUgZHVyLnJlY29uZmlndXJlKHsgbG9jYWxlOiAnZW4tR0InIH0pXG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgcmVjb25maWd1cmUoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgY29udmVyc2lvbkFjY3VyYWN5IH0gPSB7fSkge1xuICAgIGNvbnN0IGxvYyA9IHRoaXMubG9jLmNsb25lKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0gfSksXG4gICAgICBvcHRzID0geyBsb2MgfTtcblxuICAgIGlmIChjb252ZXJzaW9uQWNjdXJhY3kpIHtcbiAgICAgIG9wdHMuY29udmVyc2lvbkFjY3VyYWN5ID0gY29udmVyc2lvbkFjY3VyYWN5O1xuICAgIH1cblxuICAgIHJldHVybiBjbG9uZSh0aGlzLCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgZHVyYXRpb24gaW4gdGhlIHNwZWNpZmllZCB1bml0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIGEgdW5pdCBzdWNoIGFzICdtaW51dGVzJyBvciAnZGF5cydcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDF9KS5hcygnZGF5cycpIC8vPT4gMzY1XG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAxfSkuYXMoJ21vbnRocycpIC8vPT4gMTJcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7aG91cnM6IDYwfSkuYXMoJ2RheXMnKSAvLz0+IDIuNVxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBhcyh1bml0KSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuc2hpZnRUbyh1bml0KS5nZXQodW5pdCkgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogUmVkdWNlIHRoaXMgRHVyYXRpb24gdG8gaXRzIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBpbiBpdHMgY3VycmVudCB1bml0cy5cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAyLCBkYXlzOiA1MDAwIH0pLm5vcm1hbGl6ZSgpLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiAxNSwgZGF5czogMjU1IH1cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMiwgbWludXRlczogLTQ1IH0pLm5vcm1hbGl6ZSgpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMTUgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIG5vcm1hbGl6ZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgdmFscyA9IHRoaXMudG9PYmplY3QoKTtcbiAgICBub3JtYWxpemVWYWx1ZXModGhpcy5tYXRyaXgsIHZhbHMpO1xuICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoaXMgRHVyYXRpb24gaW50byBpdHMgcmVwcmVzZW50YXRpb24gaW4gYSBkaWZmZXJlbnQgc2V0IG9mIHVuaXRzLlxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIHNlY29uZHM6IDMwIH0pLnNoaWZ0VG8oJ21pbnV0ZXMnLCAnbWlsbGlzZWNvbmRzJykudG9PYmplY3QoKSAvLz0+IHsgbWludXRlczogNjAsIG1pbGxpc2Vjb25kczogMzAwMDAgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHNoaWZ0VG8oLi4udW5pdHMpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG5cbiAgICBpZiAodW5pdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB1bml0cyA9IHVuaXRzLm1hcCgodSkgPT4gRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1KSk7XG5cbiAgICBjb25zdCBidWlsdCA9IHt9LFxuICAgICAgYWNjdW11bGF0ZWQgPSB7fSxcbiAgICAgIHZhbHMgPSB0aGlzLnRvT2JqZWN0KCk7XG4gICAgbGV0IGxhc3RVbml0O1xuXG4gICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cykge1xuICAgICAgaWYgKHVuaXRzLmluZGV4T2YoaykgPj0gMCkge1xuICAgICAgICBsYXN0VW5pdCA9IGs7XG5cbiAgICAgICAgbGV0IG93biA9IDA7XG5cbiAgICAgICAgLy8gYW55dGhpbmcgd2UgaGF2ZW4ndCBib2lsZWQgZG93biB5ZXQgc2hvdWxkIGdldCBib2lsZWQgdG8gdGhpcyB1bml0XG4gICAgICAgIGZvciAoY29uc3QgYWsgaW4gYWNjdW11bGF0ZWQpIHtcbiAgICAgICAgICBvd24gKz0gdGhpcy5tYXRyaXhbYWtdW2tdICogYWNjdW11bGF0ZWRbYWtdO1xuICAgICAgICAgIGFjY3VtdWxhdGVkW2FrXSA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBwbHVzIGFueXRoaW5nIHRoYXQncyBhbHJlYWR5IGluIHRoaXMgdW5pdFxuICAgICAgICBpZiAoaXNOdW1iZXIodmFsc1trXSkpIHtcbiAgICAgICAgICBvd24gKz0gdmFsc1trXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGkgPSBNYXRoLnRydW5jKG93bik7XG4gICAgICAgIGJ1aWx0W2tdID0gaTtcbiAgICAgICAgYWNjdW11bGF0ZWRba10gPSAob3duICogMTAwMCAtIGkgKiAxMDAwKSAvIDEwMDA7XG5cbiAgICAgICAgLy8gcGx1cyBhbnl0aGluZyBmdXJ0aGVyIGRvd24gdGhlIGNoYWluIHRoYXQgc2hvdWxkIGJlIHJvbGxlZCB1cCBpbiB0byB0aGlzXG4gICAgICAgIGZvciAoY29uc3QgZG93biBpbiB2YWxzKSB7XG4gICAgICAgICAgaWYgKG9yZGVyZWRVbml0cy5pbmRleE9mKGRvd24pID4gb3JkZXJlZFVuaXRzLmluZGV4T2YoaykpIHtcbiAgICAgICAgICAgIGNvbnZlcnQodGhpcy5tYXRyaXgsIHZhbHMsIGRvd24sIGJ1aWx0LCBrKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gb3RoZXJ3aXNlLCBrZWVwIGl0IGluIHRoZSB3aW5ncyB0byBib2lsIGl0IGxhdGVyXG4gICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKHZhbHNba10pKSB7XG4gICAgICAgIGFjY3VtdWxhdGVkW2tdID0gdmFsc1trXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBhbnl0aGluZyBsZWZ0b3ZlciBiZWNvbWVzIHRoZSBkZWNpbWFsIGZvciB0aGUgbGFzdCB1bml0XG4gICAgLy8gbGFzdFVuaXQgbXVzdCBiZSBkZWZpbmVkIHNpbmNlIHVuaXRzIGlzIG5vdCBlbXB0eVxuICAgIGZvciAoY29uc3Qga2V5IGluIGFjY3VtdWxhdGVkKSB7XG4gICAgICBpZiAoYWNjdW11bGF0ZWRba2V5XSAhPT0gMCkge1xuICAgICAgICBidWlsdFtsYXN0VW5pdF0gKz1cbiAgICAgICAgICBrZXkgPT09IGxhc3RVbml0ID8gYWNjdW11bGF0ZWRba2V5XSA6IGFjY3VtdWxhdGVkW2tleV0gLyB0aGlzLm1hdHJpeFtsYXN0VW5pdF1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2xvbmUodGhpcywgeyB2YWx1ZXM6IGJ1aWx0IH0sIHRydWUpLm5vcm1hbGl6ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgbmVnYXRpdmUgb2YgdGhpcyBEdXJhdGlvbi5cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBzZWNvbmRzOiAzMCB9KS5uZWdhdGUoKS50b09iamVjdCgpIC8vPT4geyBob3VyczogLTEsIHNlY29uZHM6IC0zMCB9XG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgbmVnYXRlKCkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcbiAgICBjb25zdCBuZWdhdGVkID0ge307XG4gICAgZm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKHRoaXMudmFsdWVzKSkge1xuICAgICAgbmVnYXRlZFtrXSA9IC10aGlzLnZhbHVlc1trXTtcbiAgICB9XG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdmFsdWVzOiBuZWdhdGVkIH0sIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgeWVhcnMuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgeWVhcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLnllYXJzIHx8IDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBxdWFydGVycy5cbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBxdWFydGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMucXVhcnRlcnMgfHwgMCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG1vbnRocy5cbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBtb250aHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1vbnRocyB8fCAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgd2Vla3NcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCB3ZWVrcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMud2Vla3MgfHwgMCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRheXMuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgZGF5cygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMuZGF5cyB8fCAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaG91cnMuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgaG91cnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLmhvdXJzIHx8IDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBtaW51dGVzLlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IG1pbnV0ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1pbnV0ZXMgfHwgMCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHNlY29uZHMuXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIGdldCBzZWNvbmRzKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5zZWNvbmRzIHx8IDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBtaWxsaXNlY29uZHMuXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIGdldCBtaWxsaXNlY29uZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1pbGxpc2Vjb25kcyB8fCAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB0aGUgRHVyYXRpb24gaXMgaW52YWxpZC4gSW52YWxpZCBkdXJhdGlvbnMgYXJlIHJldHVybmVkIGJ5IGRpZmYgb3BlcmF0aW9uc1xuICAgKiBvbiBpbnZhbGlkIERhdGVUaW1lcyBvciBJbnRlcnZhbHMuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIER1cmF0aW9uIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEdXJhdGlvbiBpcyB2YWxpZFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgaW52YWxpZFJlYXNvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBEdXJhdGlvbiBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRHVyYXRpb24gaXMgdmFsaWRcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBpbnZhbGlkRXhwbGFuYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogRXF1YWxpdHkgY2hlY2tcbiAgICogVHdvIER1cmF0aW9ucyBhcmUgZXF1YWwgaWZmIHRoZXkgaGF2ZSB0aGUgc2FtZSB1bml0cyBhbmQgdGhlIHNhbWUgdmFsdWVzIGZvciBlYWNoIHVuaXQuXG4gICAqIEBwYXJhbSB7RHVyYXRpb259IG90aGVyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBlcXVhbHMob3RoZXIpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhb3RoZXIuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5sb2MuZXF1YWxzKG90aGVyLmxvYykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlcSh2MSwgdjIpIHtcbiAgICAgIC8vIENvbnNpZGVyIDAgYW5kIHVuZGVmaW5lZCBhcyBlcXVhbFxuICAgICAgaWYgKHYxID09PSB1bmRlZmluZWQgfHwgdjEgPT09IDApIHJldHVybiB2MiA9PT0gdW5kZWZpbmVkIHx8IHYyID09PSAwO1xuICAgICAgcmV0dXJuIHYxID09PSB2MjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHUgb2Ygb3JkZXJlZFVuaXRzKSB7XG4gICAgICBpZiAoIWVxKHRoaXMudmFsdWVzW3VdLCBvdGhlci52YWx1ZXNbdV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiIsICJpbXBvcnQgRGF0ZVRpbWUsIHsgZnJpZW5kbHlEYXRlVGltZSB9IGZyb20gXCIuL2RhdGV0aW1lLmpzXCI7XG5pbXBvcnQgRHVyYXRpb24gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5ncy5qc1wiO1xuaW1wb3J0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IsIEludmFsaWRJbnRlcnZhbEVycm9yIH0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5pbXBvcnQgSW52YWxpZCBmcm9tIFwiLi9pbXBsL2ludmFsaWQuanNcIjtcblxuY29uc3QgSU5WQUxJRCA9IFwiSW52YWxpZCBJbnRlcnZhbFwiO1xuXG4vLyBjaGVja3MgaWYgdGhlIHN0YXJ0IGlzIGVxdWFsIHRvIG9yIGJlZm9yZSB0aGUgZW5kXG5mdW5jdGlvbiB2YWxpZGF0ZVN0YXJ0RW5kKHN0YXJ0LCBlbmQpIHtcbiAgaWYgKCFzdGFydCB8fCAhc3RhcnQuaXNWYWxpZCkge1xuICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKFwibWlzc2luZyBvciBpbnZhbGlkIHN0YXJ0XCIpO1xuICB9IGVsc2UgaWYgKCFlbmQgfHwgIWVuZC5pc1ZhbGlkKSB7XG4gICAgcmV0dXJuIEludGVydmFsLmludmFsaWQoXCJtaXNzaW5nIG9yIGludmFsaWQgZW5kXCIpO1xuICB9IGVsc2UgaWYgKGVuZCA8IHN0YXJ0KSB7XG4gICAgcmV0dXJuIEludGVydmFsLmludmFsaWQoXG4gICAgICBcImVuZCBiZWZvcmUgc3RhcnRcIixcbiAgICAgIGBUaGUgZW5kIG9mIGFuIGludGVydmFsIG11c3QgYmUgYWZ0ZXIgaXRzIHN0YXJ0LCBidXQgeW91IGhhZCBzdGFydD0ke3N0YXJ0LnRvSVNPKCl9IGFuZCBlbmQ9JHtlbmQudG9JU08oKX1gXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIEFuIEludGVydmFsIG9iamVjdCByZXByZXNlbnRzIGEgaGFsZi1vcGVuIGludGVydmFsIG9mIHRpbWUsIHdoZXJlIGVhY2ggZW5kcG9pbnQgaXMgYSB7QGxpbmsgRGF0ZVRpbWV9LiBDb25jZXB0dWFsbHksIGl0J3MgYSBjb250YWluZXIgZm9yIHRob3NlIHR3byBlbmRwb2ludHMsIGFjY29tcGFuaWVkIGJ5IG1ldGhvZHMgZm9yIGNyZWF0aW5nLCBwYXJzaW5nLCBpbnRlcnJvZ2F0aW5nLCBjb21wYXJpbmcsIHRyYW5zZm9ybWluZywgYW5kIGZvcm1hdHRpbmcgdGhlbS5cbiAqXG4gKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIEludGVydmFsOlxuICpcbiAqICogKipDcmVhdGlvbioqIFRvIGNyZWF0ZSBhbiBJbnRlcnZhbCwgdXNlIHtAbGluayBJbnRlcnZhbCNmcm9tRGF0ZVRpbWVzfSwge0BsaW5rIEludGVydmFsI2FmdGVyfSwge0BsaW5rIEludGVydmFsI2JlZm9yZX0sIG9yIHtAbGluayBJbnRlcnZhbCNmcm9tSVNPfS5cbiAqICogKipBY2Nlc3NvcnMqKiBVc2Uge0BsaW5rIEludGVydmFsI3N0YXJ0fSBhbmQge0BsaW5rIEludGVydmFsI2VuZH0gdG8gZ2V0IHRoZSBzdGFydCBhbmQgZW5kLlxuICogKiAqKkludGVycm9nYXRpb24qKiBUbyBhbmFseXplIHRoZSBJbnRlcnZhbCwgdXNlIHtAbGluayBJbnRlcnZhbCNjb3VudH0sIHtAbGluayBJbnRlcnZhbCNsZW5ndGh9LCB7QGxpbmsgSW50ZXJ2YWwjaGFzU2FtZX0sIHtAbGluayBJbnRlcnZhbCNjb250YWluc30sIHtAbGluayBJbnRlcnZhbCNpc0FmdGVyfSwgb3Ige0BsaW5rIEludGVydmFsI2lzQmVmb3JlfS5cbiAqICogKipUcmFuc2Zvcm1hdGlvbioqIFRvIGNyZWF0ZSBvdGhlciBJbnRlcnZhbHMgb3V0IG9mIHRoaXMgb25lLCB1c2Uge0BsaW5rIEludGVydmFsI3NldH0sIHtAbGluayBJbnRlcnZhbCNzcGxpdEF0fSwge0BsaW5rIEludGVydmFsI3NwbGl0Qnl9LCB7QGxpbmsgSW50ZXJ2YWwjZGl2aWRlRXF1YWxseX0sIHtAbGluayBJbnRlcnZhbCNtZXJnZX0sIHtAbGluayBJbnRlcnZhbCN4b3J9LCB7QGxpbmsgSW50ZXJ2YWwjdW5pb259LCB7QGxpbmsgSW50ZXJ2YWwjaW50ZXJzZWN0aW9ufSwgb3Ige0BsaW5rIEludGVydmFsI2RpZmZlcmVuY2V9LlxuICogKiAqKkNvbXBhcmlzb24qKiBUbyBjb21wYXJlIHRoaXMgSW50ZXJ2YWwgdG8gYW5vdGhlciBvbmUsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjZXF1YWxzfSwge0BsaW5rIEludGVydmFsI292ZXJsYXBzfSwge0BsaW5rIEludGVydmFsI2FidXRzU3RhcnR9LCB7QGxpbmsgSW50ZXJ2YWwjYWJ1dHNFbmR9LCB7QGxpbmsgSW50ZXJ2YWwjZW5ndWxmc31cbiAqICogKipPdXRwdXQqKiBUbyBjb252ZXJ0IHRoZSBJbnRlcnZhbCBpbnRvIG90aGVyIHJlcHJlc2VudGF0aW9ucywgc2VlIHtAbGluayBJbnRlcnZhbCN0b1N0cmluZ30sIHtAbGluayBJbnRlcnZhbCN0b0lTT30sIHtAbGluayBJbnRlcnZhbCN0b0lTT0RhdGV9LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU09UaW1lfSwge0BsaW5rIEludGVydmFsI3RvRm9ybWF0fSwgYW5kIHtAbGluayBJbnRlcnZhbCN0b0R1cmF0aW9ufS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW50ZXJ2YWwge1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMucyA9IGNvbmZpZy5zdGFydDtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmUgPSBjb25maWcuZW5kO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuaW52YWxpZCA9IGNvbmZpZy5pbnZhbGlkIHx8IG51bGw7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5pc0x1eG9uSW50ZXJ2YWwgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBpbnZhbGlkIEludGVydmFsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBJbnRlcnZhbCBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwbGFuYXRpb249bnVsbF0gLSBsb25nZXIgZXhwbGFuYXRpb24sIG1heSBpbmNsdWRlIHBhcmFtZXRlcnMgYW5kIG90aGVyIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cbiAgICogQHJldHVybiB7SW50ZXJ2YWx9XG4gICAqL1xuICBzdGF0aWMgaW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uID0gbnVsbCkge1xuICAgIGlmICghcmVhc29uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJuZWVkIHRvIHNwZWNpZnkgYSByZWFzb24gdGhlIEludGVydmFsIGlzIGludmFsaWRcIik7XG4gICAgfVxuXG4gICAgY29uc3QgaW52YWxpZCA9IHJlYXNvbiBpbnN0YW5jZW9mIEludmFsaWQgPyByZWFzb24gOiBuZXcgSW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uKTtcblxuICAgIGlmIChTZXR0aW5ncy50aHJvd09uSW52YWxpZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRJbnRlcnZhbEVycm9yKGludmFsaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IEludGVydmFsKHsgaW52YWxpZCB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYSBzdGFydCBEYXRlVGltZSBhbmQgYW4gZW5kIERhdGVUaW1lLiBJbmNsdXNpdmUgb2YgdGhlIHN0YXJ0IGJ1dCBub3QgdGhlIGVuZC5cbiAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnRcbiAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gZW5kXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgc3RhdGljIGZyb21EYXRlVGltZXMoc3RhcnQsIGVuZCkge1xuICAgIGNvbnN0IGJ1aWx0U3RhcnQgPSBmcmllbmRseURhdGVUaW1lKHN0YXJ0KSxcbiAgICAgIGJ1aWx0RW5kID0gZnJpZW5kbHlEYXRlVGltZShlbmQpO1xuXG4gICAgY29uc3QgdmFsaWRhdGVFcnJvciA9IHZhbGlkYXRlU3RhcnRFbmQoYnVpbHRTdGFydCwgYnVpbHRFbmQpO1xuXG4gICAgaWYgKHZhbGlkYXRlRXJyb3IgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7XG4gICAgICAgIHN0YXJ0OiBidWlsdFN0YXJ0LFxuICAgICAgICBlbmQ6IGJ1aWx0RW5kLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWxpZGF0ZUVycm9yO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gSW50ZXJ2YWwgZnJvbSBhIHN0YXJ0IERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCB0by5cbiAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnRcbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIHRoZSBsZW5ndGggb2YgdGhlIEludGVydmFsLlxuICAgKiBAcmV0dXJuIHtJbnRlcnZhbH1cbiAgICovXG4gIHN0YXRpYyBhZnRlcihzdGFydCwgZHVyYXRpb24pIHtcbiAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKSxcbiAgICAgIGR0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCk7XG4gICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQsIGR0LnBsdXMoZHVyKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYW4gZW5kIERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCBiYWNrd2FyZHMgdG8uXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IGVuZFxuICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gdGhlIGxlbmd0aCBvZiB0aGUgSW50ZXJ2YWwuXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgc3RhdGljIGJlZm9yZShlbmQsIGR1cmF0aW9uKSB7XG4gICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbiksXG4gICAgICBkdCA9IGZyaWVuZGx5RGF0ZVRpbWUoZW5kKTtcbiAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdC5taW51cyhkdXIpLCBkdCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYW4gSVNPIDg2MDEgc3RyaW5nLlxuICAgKiBBY2NlcHRzIGA8c3RhcnQ+LzxlbmQ+YCwgYDxzdGFydD4vPGR1cmF0aW9uPmAsIGFuZCBgPGR1cmF0aW9uPi88ZW5kPmAgZm9ybWF0cy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZyB0byBwYXJzZVxuICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gb3B0aW9ucyB0byBwYXNzIHtAbGluayBEYXRlVGltZSNmcm9tSVNPfSBhbmQgb3B0aW9uYWxseSB7QGxpbmsgRHVyYXRpb24jZnJvbUlTT31cbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFsc1xuICAgKiBAcmV0dXJuIHtJbnRlcnZhbH1cbiAgICovXG4gIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMpIHtcbiAgICBjb25zdCBbcywgZV0gPSAodGV4dCB8fCBcIlwiKS5zcGxpdChcIi9cIiwgMik7XG4gICAgaWYgKHMgJiYgZSkge1xuICAgICAgbGV0IHN0YXJ0LCBzdGFydElzVmFsaWQ7XG4gICAgICB0cnkge1xuICAgICAgICBzdGFydCA9IERhdGVUaW1lLmZyb21JU08ocywgb3B0cyk7XG4gICAgICAgIHN0YXJ0SXNWYWxpZCA9IHN0YXJ0LmlzVmFsaWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHN0YXJ0SXNWYWxpZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBsZXQgZW5kLCBlbmRJc1ZhbGlkO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZW5kID0gRGF0ZVRpbWUuZnJvbUlTTyhlLCBvcHRzKTtcbiAgICAgICAgZW5kSXNWYWxpZCA9IGVuZC5pc1ZhbGlkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBlbmRJc1ZhbGlkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGFydElzVmFsaWQgJiYgZW5kSXNWYWxpZCkge1xuICAgICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzdGFydCwgZW5kKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXJ0SXNWYWxpZCkge1xuICAgICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tSVNPKGUsIG9wdHMpO1xuICAgICAgICBpZiAoZHVyLmlzVmFsaWQpIHtcbiAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYWZ0ZXIoc3RhcnQsIGR1cik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZW5kSXNWYWxpZCkge1xuICAgICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tSVNPKHMsIG9wdHMpO1xuICAgICAgICBpZiAoZHVyLmlzVmFsaWQpIHtcbiAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYmVmb3JlKGVuZCwgZHVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZChcInVucGFyc2FibGVcIiwgYHRoZSBpbnB1dCBcIiR7dGV4dH1cIiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYW4gSW50ZXJ2YWwuIFdvcmtzIGFjcm9zcyBjb250ZXh0IGJvdW5kYXJpZXNcbiAgICogQHBhcmFtIHtvYmplY3R9IG9cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBpc0ludGVydmFsKG8pIHtcbiAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uSW50ZXJ2YWwpIHx8IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHN0YXJ0IG9mIHRoZSBJbnRlcnZhbFxuICAgKiBAdHlwZSB7RGF0ZVRpbWV9XG4gICAqL1xuICBnZXQgc3RhcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMucyA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZW5kIG9mIHRoZSBJbnRlcnZhbFxuICAgKiBAdHlwZSB7RGF0ZVRpbWV9XG4gICAqL1xuICBnZXQgZW5kKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmUgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB0aGlzIEludGVydmFsJ3MgZW5kIGlzIGF0IGxlYXN0IGl0cyBzdGFydCwgbWVhbmluZyB0aGF0IHRoZSBJbnRlcnZhbCBpc24ndCAnYmFja3dhcmRzJy5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkUmVhc29uID09PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIEludGVydmFsIGlzIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIEludGVydmFsIGlzIHZhbGlkXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgaW52YWxpZFJlYXNvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBJbnRlcnZhbCBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgSW50ZXJ2YWwgaXMgdmFsaWRcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBpbnZhbGlkRXhwbGFuYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbCBpbiB0aGUgc3BlY2lmaWVkIHVuaXQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gdGhlIHVuaXQgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIHJldHVybiB0aGUgbGVuZ3RoIGluLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBsZW5ndGgodW5pdCA9IFwibWlsbGlzZWNvbmRzXCIpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy50b0R1cmF0aW9uKC4uLlt1bml0XSkuZ2V0KHVuaXQpIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNvdW50IG9mIG1pbnV0ZXMsIGhvdXJzLCBkYXlzLCBtb250aHMsIG9yIHllYXJzIGluY2x1ZGVkIGluIHRoZSBJbnRlcnZhbCwgZXZlbiBpbiBwYXJ0LlxuICAgKiBVbmxpa2Uge0BsaW5rIEludGVydmFsI2xlbmd0aH0gdGhpcyBjb3VudHMgc2VjdGlvbnMgb2YgdGhlIGNhbGVuZGFyLCBub3QgcGVyaW9kcyBvZiB0aW1lLCBlLmcuIHNwZWNpZnlpbmcgJ2RheSdcbiAgICogYXNrcyAnd2hhdCBkYXRlcyBhcmUgaW5jbHVkZWQgaW4gdGhpcyBpbnRlcnZhbD8nLCBub3QgJ2hvdyBtYW55IGRheXMgbG9uZyBpcyB0aGlzIGludGVydmFsPydcbiAgICogQHBhcmFtIHtzdHJpbmd9IFt1bml0PSdtaWxsaXNlY29uZHMnXSAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY291bnQuXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIGNvdW50KHVuaXQgPSBcIm1pbGxpc2Vjb25kc1wiKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBOYU47XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnN0YXJ0LnN0YXJ0T2YodW5pdCksXG4gICAgICBlbmQgPSB0aGlzLmVuZC5zdGFydE9mKHVuaXQpO1xuICAgIHJldHVybiBNYXRoLmZsb29yKGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCkpICsgMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGFuZCBlbmQgYXJlIGJvdGggaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gdGhlIHVuaXQgb2YgdGltZSB0byBjaGVjayBzYW1lbmVzcyBvblxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaGFzU2FtZSh1bml0KSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuaXNFbXB0eSgpIHx8IHRoaXMuZS5taW51cygxKS5oYXNTYW1lKHRoaXMucywgdW5pdCkgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsIGhhcyB0aGUgc2FtZSBzdGFydCBhbmQgZW5kIERhdGVUaW1lcy5cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMucy52YWx1ZU9mKCkgPT09IHRoaXMuZS52YWx1ZU9mKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGlzIGFmdGVyIHRoZSBzcGVjaWZpZWQgRGF0ZVRpbWUuXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBpc0FmdGVyKGRhdGVUaW1lKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5zID4gZGF0ZVRpbWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBiZWZvcmUgdGhlIHNwZWNpZmllZCBEYXRlVGltZS5cbiAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWVcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGlzQmVmb3JlKGRhdGVUaW1lKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5lIDw9IGRhdGVUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgY29udGFpbnMgdGhlIHNwZWNpZmllZCBEYXRlVGltZS5cbiAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWVcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGNvbnRhaW5zKGRhdGVUaW1lKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5zIDw9IGRhdGVUaW1lICYmIHRoaXMuZSA+IGRhdGVUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0c1wiIHRoZSBzdGFydCBhbmQvb3IgZW5kIGRhdGVzLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgSW50ZXJ2YWwuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSB0aGUgdmFsdWVzIHRvIHNldFxuICAgKiBAcGFyYW0ge0RhdGVUaW1lfSB2YWx1ZXMuc3RhcnQgLSB0aGUgc3RhcnRpbmcgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtEYXRlVGltZX0gdmFsdWVzLmVuZCAtIHRoZSBlbmRpbmcgRGF0ZVRpbWVcbiAgICogQHJldHVybiB7SW50ZXJ2YWx9XG4gICAqL1xuICBzZXQoeyBzdGFydCwgZW5kIH0gPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcbiAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzdGFydCB8fCB0aGlzLnMsIGVuZCB8fCB0aGlzLmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgYXQgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIERhdGVUaW1lc1xuICAgKiBAcGFyYW0gey4uLkRhdGVUaW1lfSBkYXRlVGltZXMgLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNvdW50LlxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHNwbGl0QXQoLi4uZGF0ZVRpbWVzKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBbXTtcbiAgICBjb25zdCBzb3J0ZWQgPSBkYXRlVGltZXNcbiAgICAgICAgLm1hcChmcmllbmRseURhdGVUaW1lKVxuICAgICAgICAuZmlsdGVyKChkKSA9PiB0aGlzLmNvbnRhaW5zKGQpKVxuICAgICAgICAuc29ydCgpLFxuICAgICAgcmVzdWx0cyA9IFtdO1xuICAgIGxldCB7IHMgfSA9IHRoaXMsXG4gICAgICBpID0gMDtcblxuICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7XG4gICAgICBjb25zdCBhZGRlZCA9IHNvcnRlZFtpXSB8fCB0aGlzLmUsXG4gICAgICAgIG5leHQgPSArYWRkZWQgPiArdGhpcy5lID8gdGhpcy5lIDogYWRkZWQ7XG4gICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7XG4gICAgICBzID0gbmV4dDtcbiAgICAgIGkgKz0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdCB0aGlzIEludGVydmFsIGludG8gc21hbGxlciBJbnRlcnZhbHMsIGVhY2ggb2YgdGhlIHNwZWNpZmllZCBsZW5ndGguXG4gICAqIExlZnQgb3ZlciB0aW1lIGlzIGdyb3VwZWQgaW50byBhIHNtYWxsZXIgaW50ZXJ2YWxcbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBsZW5ndGggb2YgZWFjaCByZXN1bHRpbmcgaW50ZXJ2YWwuXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3BsaXRCeShkdXJhdGlvbikge1xuICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pO1xuXG4gICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIWR1ci5pc1ZhbGlkIHx8IGR1ci5hcyhcIm1pbGxpc2Vjb25kc1wiKSA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGxldCB7IHMgfSA9IHRoaXMsXG4gICAgICBpZHggPSAxLFxuICAgICAgbmV4dDtcblxuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICB3aGlsZSAocyA8IHRoaXMuZSkge1xuICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLnN0YXJ0LnBsdXMoZHVyLm1hcFVuaXRzKCh4KSA9PiB4ICogaWR4KSk7XG4gICAgICBuZXh0ID0gK2FkZGVkID4gK3RoaXMuZSA/IHRoaXMuZSA6IGFkZGVkO1xuICAgICAgcmVzdWx0cy5wdXNoKEludGVydmFsLmZyb21EYXRlVGltZXMocywgbmV4dCkpO1xuICAgICAgcyA9IG5leHQ7XG4gICAgICBpZHggKz0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdCB0aGlzIEludGVydmFsIGludG8gdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygc21hbGxlciBpbnRlcnZhbHMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXJPZlBhcnRzIC0gVGhlIG51bWJlciBvZiBJbnRlcnZhbHMgdG8gZGl2aWRlIHRoZSBJbnRlcnZhbCBpbnRvLlxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIGRpdmlkZUVxdWFsbHkobnVtYmVyT2ZQYXJ0cykge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gW107XG4gICAgcmV0dXJuIHRoaXMuc3BsaXRCeSh0aGlzLmxlbmd0aCgpIC8gbnVtYmVyT2ZQYXJ0cykuc2xpY2UoMCwgbnVtYmVyT2ZQYXJ0cyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBvdmVybGFwcyB3aXRoIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWxcbiAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIG92ZXJsYXBzKG90aGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZSA+IG90aGVyLnMgJiYgdGhpcy5zIDwgb3RoZXIuZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3MgZW5kIGlzIGFkamFjZW50IHRvIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwncyBzdGFydC5cbiAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGFidXRzU3RhcnQob3RoZXIpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiArdGhpcy5lID09PSArb3RoZXIucztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3Mgc3RhcnQgaXMgYWRqYWNlbnQgdG8gdGhlIHNwZWNpZmllZCBJbnRlcnZhbCdzIGVuZC5cbiAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGFidXRzRW5kKG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gK290aGVyLmUgPT09ICt0aGlzLnM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBlbmd1bGZzIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwuXG4gICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBlbmd1bGZzKG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5zIDw9IG90aGVyLnMgJiYgdGhpcy5lID49IG90aGVyLmU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBoYXMgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBhcyB0aGUgc3BlY2lmaWVkIEludGVydmFsLlxuICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlclxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgZXF1YWxzKG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zLmVxdWFscyhvdGhlci5zKSAmJiB0aGlzLmUuZXF1YWxzKG90aGVyLmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBJbnRlcnZhbCByZXByZXNlbnRpbmcgdGhlIGludGVyc2VjdGlvbiBvZiB0aGlzIEludGVydmFsIGFuZCB0aGUgc3BlY2lmaWVkIEludGVydmFsLlxuICAgKiBTcGVjaWZpY2FsbHksIHRoZSByZXN1bHRpbmcgSW50ZXJ2YWwgaGFzIHRoZSBtYXhpbXVtIHN0YXJ0IHRpbWUgYW5kIHRoZSBtaW5pbXVtIGVuZCB0aW1lIG9mIHRoZSB0d28gSW50ZXJ2YWxzLlxuICAgKiBSZXR1cm5zIG51bGwgaWYgdGhlIGludGVyc2VjdGlvbiBpcyBlbXB0eSwgbWVhbmluZywgdGhlIGludGVydmFscyBkb24ndCBpbnRlcnNlY3QuXG4gICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgaW50ZXJzZWN0aW9uKG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuICAgIGNvbnN0IHMgPSB0aGlzLnMgPiBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucyxcbiAgICAgIGUgPSB0aGlzLmUgPCBvdGhlci5lID8gdGhpcy5lIDogb3RoZXIuZTtcblxuICAgIGlmIChzID49IGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIEludGVydmFsIHJlcHJlc2VudGluZyB0aGUgdW5pb24gb2YgdGhpcyBJbnRlcnZhbCBhbmQgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC5cbiAgICogU3BlY2lmaWNhbGx5LCB0aGUgcmVzdWx0aW5nIEludGVydmFsIGhhcyB0aGUgbWluaW11bSBzdGFydCB0aW1lIGFuZCB0aGUgbWF4aW11bSBlbmQgdGltZSBvZiB0aGUgdHdvIEludGVydmFscy5cbiAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXJcbiAgICogQHJldHVybiB7SW50ZXJ2YWx9XG4gICAqL1xuICB1bmlvbihvdGhlcikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcbiAgICBjb25zdCBzID0gdGhpcy5zIDwgb3RoZXIucyA/IHRoaXMucyA6IG90aGVyLnMsXG4gICAgICBlID0gdGhpcy5lID4gb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7XG4gICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMocywgZSk7XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIGludG8gYSBlcXVpdmFsZW50IG1pbmltYWwgc2V0IG9mIEludGVydmFscy5cbiAgICogQ29tYmluZXMgb3ZlcmxhcHBpbmcgYW5kIGFkamFjZW50IEludGVydmFscy5cbiAgICogQHBhcmFtIHtBcnJheX0gaW50ZXJ2YWxzXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIG1lcmdlKGludGVydmFscykge1xuICAgIGNvbnN0IFtmb3VuZCwgZmluYWxdID0gaW50ZXJ2YWxzXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5zIC0gYi5zKVxuICAgICAgLnJlZHVjZShcbiAgICAgICAgKFtzb2ZhciwgY3VycmVudF0sIGl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBbc29mYXIsIGl0ZW1dO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5vdmVybGFwcyhpdGVtKSB8fCBjdXJyZW50LmFidXRzU3RhcnQoaXRlbSkpIHtcbiAgICAgICAgICAgIHJldHVybiBbc29mYXIsIGN1cnJlbnQudW5pb24oaXRlbSldO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW3NvZmFyLmNvbmNhdChbY3VycmVudF0pLCBpdGVtXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtbXSwgbnVsbF1cbiAgICAgICk7XG4gICAgaWYgKGZpbmFsKSB7XG4gICAgICBmb3VuZC5wdXNoKGZpbmFsKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvdW5kO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhcnJheSBvZiBJbnRlcnZhbHMgcmVwcmVzZW50aW5nIHRoZSBzcGFucyBvZiB0aW1lIHRoYXQgb25seSBhcHBlYXIgaW4gb25lIG9mIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWxzLlxuICAgKiBAcGFyYW0ge0FycmF5fSBpbnRlcnZhbHNcbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBzdGF0aWMgeG9yKGludGVydmFscykge1xuICAgIGxldCBzdGFydCA9IG51bGwsXG4gICAgICBjdXJyZW50Q291bnQgPSAwO1xuICAgIGNvbnN0IHJlc3VsdHMgPSBbXSxcbiAgICAgIGVuZHMgPSBpbnRlcnZhbHMubWFwKChpKSA9PiBbXG4gICAgICAgIHsgdGltZTogaS5zLCB0eXBlOiBcInNcIiB9LFxuICAgICAgICB7IHRpbWU6IGkuZSwgdHlwZTogXCJlXCIgfSxcbiAgICAgIF0pLFxuICAgICAgZmxhdHRlbmVkID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi5lbmRzKSxcbiAgICAgIGFyciA9IGZsYXR0ZW5lZC5zb3J0KChhLCBiKSA9PiBhLnRpbWUgLSBiLnRpbWUpO1xuXG4gICAgZm9yIChjb25zdCBpIG9mIGFycikge1xuICAgICAgY3VycmVudENvdW50ICs9IGkudHlwZSA9PT0gXCJzXCIgPyAxIDogLTE7XG5cbiAgICAgIGlmIChjdXJyZW50Q291bnQgPT09IDEpIHtcbiAgICAgICAgc3RhcnQgPSBpLnRpbWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc3RhcnQgJiYgK3N0YXJ0ICE9PSAraS50aW1lKSB7XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQsIGkudGltZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBJbnRlcnZhbC5tZXJnZShyZXN1bHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBzcGFuIG9mIHRpbWUgaW4gdGhpcyBJbnRlcnZhbCB0aGF0IGRvZXNuJ3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy5cbiAgICogQHBhcmFtIHsuLi5JbnRlcnZhbH0gaW50ZXJ2YWxzXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgZGlmZmVyZW5jZSguLi5pbnRlcnZhbHMpIHtcbiAgICByZXR1cm4gSW50ZXJ2YWwueG9yKFt0aGlzXS5jb25jYXQoaW50ZXJ2YWxzKSlcbiAgICAgIC5tYXAoKGkpID0+IHRoaXMuaW50ZXJzZWN0aW9uKGkpKVxuICAgICAgLmZpbHRlcigoaSkgPT4gaSAmJiAhaS5pc0VtcHR5KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbCBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b1N0cmluZygpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQ7XG4gICAgcmV0dXJuIGBbJHt0aGlzLnMudG9JU08oKX0gXHUyMDEzICR7dGhpcy5lLnRvSVNPKCl9KWA7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgSW50ZXJ2YWwuXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZV9pbnRlcnZhbHNcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZSN0b0lTT31cbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU08ob3B0cykge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRDtcbiAgICByZXR1cm4gYCR7dGhpcy5zLnRvSVNPKG9wdHMpfS8ke3RoaXMuZS50b0lTTyhvcHRzKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBkYXRlIG9mIHRoaXMgSW50ZXJ2YWwuXG4gICAqIFRoZSB0aW1lIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZV9pbnRlcnZhbHNcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU09EYXRlKCkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRDtcbiAgICByZXR1cm4gYCR7dGhpcy5zLnRvSVNPRGF0ZSgpfS8ke3RoaXMuZS50b0lTT0RhdGUoKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aW1lIG9mIHRoaXMgSW50ZXJ2YWwuXG4gICAqIFRoZSBkYXRlIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZV9pbnRlcnZhbHNcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZSN0b0lTT31cbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU09UaW1lKG9wdHMpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQ7XG4gICAgcmV0dXJuIGAke3RoaXMucy50b0lTT1RpbWUob3B0cyl9LyR7dGhpcy5lLnRvSVNPVGltZShvcHRzKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbCBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGVGb3JtYXQgLSB0aGUgZm9ybWF0IHN0cmluZy4gVGhpcyBzdHJpbmcgZm9ybWF0cyB0aGUgc3RhcnQgYW5kIGVuZCB0aW1lLiBTZWUge0BsaW5rIERhdGVUaW1lI3RvRm9ybWF0fSBmb3IgZGV0YWlscy5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5zZXBhcmF0b3IgPSAgJyBcdTIwMTMgJ10gLSBhIHNlcGFyYXRvciB0byBwbGFjZSBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgZW5kIHJlcHJlc2VudGF0aW9uc1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0Zvcm1hdChkYXRlRm9ybWF0LCB7IHNlcGFyYXRvciA9IFwiIFx1MjAxMyBcIiB9ID0ge30pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQ7XG4gICAgcmV0dXJuIGAke3RoaXMucy50b0Zvcm1hdChkYXRlRm9ybWF0KX0ke3NlcGFyYXRvcn0ke3RoaXMuZS50b0Zvcm1hdChkYXRlRm9ybWF0KX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIER1cmF0aW9uIHJlcHJlc2VudGluZyB0aGUgdGltZSBzcGFubmVkIGJ5IHRoaXMgaW50ZXJ2YWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvbi5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlXG4gICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oKS50b09iamVjdCgpIC8vPT4geyBtaWxsaXNlY29uZHM6IDg4NDg5MjU3IH1cbiAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbignZGF5cycpLnRvT2JqZWN0KCkgLy89PiB7IGRheXM6IDEuMDI0MTgxMjE1Mjc3Nzc3OCB9XG4gICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oWydob3VycycsICdtaW51dGVzJ10pLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAyNCwgbWludXRlczogMzQuODIwOTUgfVxuICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKFsnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJ10pLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAyNCwgbWludXRlczogMzQsIHNlY29uZHM6IDQ5LjI1NyB9XG4gICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oJ3NlY29uZHMnKS50b09iamVjdCgpIC8vPT4geyBzZWNvbmRzOiA4ODQ4OS4yNTcgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHRvRHVyYXRpb24odW5pdCwgb3B0cykge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gRHVyYXRpb24uaW52YWxpZCh0aGlzLmludmFsaWRSZWFzb24pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5lLmRpZmYodGhpcy5zLCB1bml0LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gbWFwRm4gb24gdGhlIGludGVydmFsIHN0YXJ0IGFuZCBlbmQsIHJldHVybmluZyBhIG5ldyBJbnRlcnZhbCBmcm9tIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVzXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1hcEZuXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS5tYXBFbmRwb2ludHMoZW5kcG9pbnQgPT4gZW5kcG9pbnQudG9VVEMoKSlcbiAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikubWFwRW5kcG9pbnRzKGVuZHBvaW50ID0+IGVuZHBvaW50LnBsdXMoeyBob3VyczogMiB9KSlcbiAgICovXG4gIG1hcEVuZHBvaW50cyhtYXBGbikge1xuICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKG1hcEZuKHRoaXMucyksIG1hcEZuKHRoaXMuZSkpO1xuICB9XG59XG4iLCAiaW1wb3J0IERhdGVUaW1lIGZyb20gXCIuL2RhdGV0aW1lLmpzXCI7XG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3MuanNcIjtcbmltcG9ydCBMb2NhbGUgZnJvbSBcIi4vaW1wbC9sb2NhbGUuanNcIjtcbmltcG9ydCBJQU5BWm9uZSBmcm9tIFwiLi96b25lcy9JQU5BWm9uZS5qc1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplWm9uZSB9IGZyb20gXCIuL2ltcGwvem9uZVV0aWwuanNcIjtcblxuaW1wb3J0IHsgaGFzUmVsYXRpdmUgfSBmcm9tIFwiLi9pbXBsL3V0aWwuanNcIjtcblxuLyoqXG4gKiBUaGUgSW5mbyBjbGFzcyBjb250YWlucyBzdGF0aWMgbWV0aG9kcyBmb3IgcmV0cmlldmluZyBnZW5lcmFsIHRpbWUgYW5kIGRhdGUgcmVsYXRlZCBkYXRhLiBGb3IgZXhhbXBsZSwgaXQgaGFzIG1ldGhvZHMgZm9yIGZpbmRpbmcgb3V0IGlmIGEgdGltZSB6b25lIGhhcyBhIERTVCwgZm9yIGxpc3RpbmcgdGhlIG1vbnRocyBpbiBhbnkgc3VwcG9ydGVkIGxvY2FsZSwgYW5kIGZvciBkaXNjb3ZlcmluZyB3aGljaCBvZiBMdXhvbiBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IGVudmlyb25tZW50LlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbmZvIHtcbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBjb250YWlucyBhIERTVC5cbiAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW3pvbmU9J2xvY2FsJ10gLSBab25lIHRvIGNoZWNrLiBEZWZhdWx0cyB0byB0aGUgZW52aXJvbm1lbnQncyBsb2NhbCB6b25lLlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgc3RhdGljIGhhc0RTVCh6b25lID0gU2V0dGluZ3MuZGVmYXVsdFpvbmUpIHtcbiAgICBjb25zdCBwcm90byA9IERhdGVUaW1lLm5vdygpLnNldFpvbmUoem9uZSkuc2V0KHsgbW9udGg6IDEyIH0pO1xuXG4gICAgcmV0dXJuICF6b25lLmlzVW5pdmVyc2FsICYmIHByb3RvLm9mZnNldCAhPT0gcHJvdG8uc2V0KHsgbW9udGg6IDYgfSkub2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBpcyBhIHZhbGlkIElBTkEgc3BlY2lmaWVyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gem9uZSAtIFpvbmUgdG8gY2hlY2tcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBpc1ZhbGlkSUFOQVpvbmUoem9uZSkge1xuICAgIHJldHVybiBJQU5BWm9uZS5pc1ZhbGlkU3BlY2lmaWVyKHpvbmUpICYmIElBTkFab25lLmlzVmFsaWRab25lKHpvbmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBpbnB1dCBpbnRvIGEge0BsaW5rIFpvbmV9IGluc3RhbmNlLlxuICAgKlxuICAgKiAqIElmIGBpbnB1dGAgaXMgYWxyZWFkeSBhIFpvbmUgaW5zdGFuY2UsIGl0IGlzIHJldHVybmVkIHVuY2hhbmdlZC5cbiAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSB2YWxpZCB0aW1lIHpvbmUgbmFtZSwgYSBab25lIGluc3RhbmNlXG4gICAqICAgd2l0aCB0aGF0IG5hbWUgaXMgcmV0dXJuZWQuXG4gICAqICogSWYgYGlucHV0YCBpcyBhIHN0cmluZyB0aGF0IGRvZXNuJ3QgcmVmZXIgdG8gYSBrbm93biB0aW1lIHpvbmUsIGEgWm9uZVxuICAgKiAgIGluc3RhbmNlIHdpdGgge0BsaW5rIFpvbmUjaXNWYWxpZH0gPT0gZmFsc2UgaXMgcmV0dXJuZWQuXG4gICAqICogSWYgYGlucHV0IGlzIGEgbnVtYmVyLCBhIFpvbmUgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGZpeGVkIG9mZnNldFxuICAgKiAgIGluIG1pbnV0ZXMgaXMgcmV0dXJuZWQuXG4gICAqICogSWYgYGlucHV0YCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoZSBkZWZhdWx0IHpvbmUgaXMgcmV0dXJuZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV8bnVtYmVyfSBbaW5wdXRdIC0gdGhlIHZhbHVlIHRvIGJlIGNvbnZlcnRlZFxuICAgKiBAcmV0dXJuIHtab25lfVxuICAgKi9cbiAgc3RhdGljIG5vcm1hbGl6ZVpvbmUoaW5wdXQpIHtcbiAgICByZXR1cm4gbm9ybWFsaXplWm9uZShpbnB1dCwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhcnJheSBvZiBzdGFuZGFsb25lIG1vbnRoIG5hbWVzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyBcIm51bWVyaWNcIiwgXCIyLWRpZ2l0XCIsIFwibmFycm93XCIsIFwic2hvcnRcIiwgXCJsb25nXCJcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5udW1iZXJpbmdTeXN0ZW09bnVsbF0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm91dHB1dENhbGVuZGFyPSdncmVnb3J5J10gLSB0aGUgY2FsZW5kYXJcbiAgICogQGV4YW1wbGUgSW5mby5tb250aHMoKVswXSAvLz0+ICdKYW51YXJ5J1xuICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnKVswXSAvLz0+ICdKYW4nXG4gICAqIEBleGFtcGxlIEluZm8ubW9udGhzKCdudW1lcmljJylbMF0gLy89PiAnMSdcbiAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ3Nob3J0JywgeyBsb2NhbGU6ICdmci1DQScgfSApWzBdIC8vPT4gJ2phbnYuJ1xuICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycsIHsgbG9jYWxlOiAnYXInIH0pWzBdIC8vPT4gJ1x1MDY2MSdcbiAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ2xvbmcnLCB7IG91dHB1dENhbGVuZGFyOiAnaXNsYW1pYycgfSlbMF0gLy89PiAnUmFiaVx1MDJCQiBJJ1xuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHN0YXRpYyBtb250aHMoXG4gICAgbGVuZ3RoID0gXCJsb25nXCIsXG4gICAgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsLCBvdXRwdXRDYWxlbmRhciA9IFwiZ3JlZ29yeVwiIH0gPSB7fVxuICApIHtcbiAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcikpLm1vbnRocyhsZW5ndGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhcnJheSBvZiBmb3JtYXQgbW9udGggbmFtZXMuXG4gICAqIEZvcm1hdCBtb250aHMgZGlmZmVyIGZyb20gc3RhbmRhbG9uZSBtb250aHMgaW4gdGhhdCB0aGV5J3JlIG1lYW50IHRvIGFwcGVhciBuZXh0IHRvIHRoZSBkYXkgb2YgdGhlIG1vbnRoLiBJbiBzb21lIGxhbmd1YWdlcywgdGhhdFxuICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuXG4gICAqIFNlZSB7QGxpbmsgSW5mbyNtb250aHN9XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyBcIm51bWVyaWNcIiwgXCIyLWRpZ2l0XCIsIFwibmFycm93XCIsIFwic2hvcnRcIiwgXCJsb25nXCJcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5udW1iZXJpbmdTeXN0ZW09bnVsbF0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm91dHB1dENhbGVuZGFyPSdncmVnb3J5J10gLSB0aGUgY2FsZW5kYXJcbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBzdGF0aWMgbW9udGhzRm9ybWF0KFxuICAgIGxlbmd0aCA9IFwibG9uZ1wiLFxuICAgIHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCwgbG9jT2JqID0gbnVsbCwgb3V0cHV0Q2FsZW5kYXIgPSBcImdyZWdvcnlcIiB9ID0ge31cbiAgKSB7XG4gICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpKS5tb250aHMobGVuZ3RoLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gYXJyYXkgb2Ygc3RhbmRhbG9uZSB3ZWVrIG5hbWVzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSB3ZWVrZGF5IHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzIFwibmFycm93XCIsIFwic2hvcnRcIiwgXCJsb25nXCIuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtPW51bGxdIC0gdGhlIG51bWJlcmluZyBzeXN0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY09iaj1udWxsXSAtIGFuIGV4aXN0aW5nIGxvY2FsZSBvYmplY3QgdG8gdXNlXG4gICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoKVswXSAvLz0+ICdNb25kYXknXG4gICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JylbMF0gLy89PiAnTW9uJ1xuICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKCdzaG9ydCcsIHsgbG9jYWxlOiAnZnItQ0EnIH0pWzBdIC8vPT4gJ2x1bi4nXG4gICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdhcicgfSlbMF0gLy89PiAnXHUwNjI3XHUwNjQ0XHUwNjI3XHUwNjJCXHUwNjQ2XHUwNjRBXHUwNjQ2J1xuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHN0YXRpYyB3ZWVrZGF5cyhsZW5ndGggPSBcImxvbmdcIiwgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fSkge1xuICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG51bGwpKS53ZWVrZGF5cyhsZW5ndGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhcnJheSBvZiBmb3JtYXQgd2VlayBuYW1lcy5cbiAgICogRm9ybWF0IHdlZWtkYXlzIGRpZmZlciBmcm9tIHN0YW5kYWxvbmUgd2Vla2RheXMgaW4gdGhhdCB0aGV5J3JlIG1lYW50IHRvIGFwcGVhciBuZXh0IHRvIG1vcmUgZGF0ZSBpbmZvcm1hdGlvbi4gSW4gc29tZSBsYW5ndWFnZXMsIHRoYXRcbiAgICogY2hhbmdlcyB0aGUgc3RyaW5nLlxuICAgKiBTZWUge0BsaW5rIEluZm8jd2Vla2RheXN9XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyBcIm5hcnJvd1wiLCBcInNob3J0XCIsIFwibG9uZ1wiLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT1udWxsXSAtIHRoZSBsb2NhbGUgY29kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtPW51bGxdIC0gdGhlIG51bWJlcmluZyBzeXN0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY09iaj1udWxsXSAtIGFuIGV4aXN0aW5nIGxvY2FsZSBvYmplY3QgdG8gdXNlXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIHdlZWtkYXlzRm9ybWF0KFxuICAgIGxlbmd0aCA9IFwibG9uZ1wiLFxuICAgIHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCwgbG9jT2JqID0gbnVsbCB9ID0ge31cbiAgKSB7XG4gICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgbnVsbCkpLndlZWtkYXlzKGxlbmd0aCwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIGFycmF5IG9mIG1lcmlkaWVtcy5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlXG4gICAqIEBleGFtcGxlIEluZm8ubWVyaWRpZW1zKCkgLy89PiBbICdBTScsICdQTScgXVxuICAgKiBAZXhhbXBsZSBJbmZvLm1lcmlkaWVtcyh7IGxvY2FsZTogJ215JyB9KSAvLz0+IFsgJ1x1MTAxNFx1MTAzNlx1MTAxNFx1MTAwMFx1MTAzQScsICdcdTEwMEFcdTEwMTRcdTEwMzEnIF1cbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBzdGF0aWMgbWVyaWRpZW1zKHsgbG9jYWxlID0gbnVsbCB9ID0ge30pIHtcbiAgICByZXR1cm4gTG9jYWxlLmNyZWF0ZShsb2NhbGUpLm1lcmlkaWVtcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhcnJheSBvZiBlcmFzLCBzdWNoIGFzIFsnQkMnLCAnQUQnXS4gVGhlIGxvY2FsZSBjYW4gYmUgc3BlY2lmaWVkLCBidXQgdGhlIGNhbGVuZGFyIHN5c3RlbSBpcyBhbHdheXMgR3JlZ29yaWFuLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nc2hvcnQnXSAtIHRoZSBsZW5ndGggb2YgdGhlIGVyYSByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyBcInNob3J0XCIgb3IgXCJsb25nXCIuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZVxuICAgKiBAZXhhbXBsZSBJbmZvLmVyYXMoKSAvLz0+IFsgJ0JDJywgJ0FEJyBdXG4gICAqIEBleGFtcGxlIEluZm8uZXJhcygnbG9uZycpIC8vPT4gWyAnQmVmb3JlIENocmlzdCcsICdBbm5vIERvbWluaScgXVxuICAgKiBAZXhhbXBsZSBJbmZvLmVyYXMoJ2xvbmcnLCB7IGxvY2FsZTogJ2ZyJyB9KSAvLz0+IFsgJ2F2YW50IEpcdTAwRTlzdXMtQ2hyaXN0JywgJ2Fwclx1MDBFOHMgSlx1MDBFOXN1cy1DaHJpc3QnIF1cbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBzdGF0aWMgZXJhcyhsZW5ndGggPSBcInNob3J0XCIsIHsgbG9jYWxlID0gbnVsbCB9ID0ge30pIHtcbiAgICByZXR1cm4gTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bGwsIFwiZ3JlZ29yeVwiKS5lcmFzKGxlbmd0aCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBzZXQgb2YgYXZhaWxhYmxlIGZlYXR1cmVzIGluIHRoaXMgZW52aXJvbm1lbnQuXG4gICAqIFNvbWUgZmVhdHVyZXMgb2YgTHV4b24gYXJlIG5vdCBhdmFpbGFibGUgaW4gYWxsIGVudmlyb25tZW50cy4gRm9yIGV4YW1wbGUsIG9uIG9sZGVyIGJyb3dzZXJzLCByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcgc3VwcG9ydCBpcyBub3QgYXZhaWxhYmxlLiBVc2UgdGhpcyBmdW5jdGlvbiB0byBmaWd1cmUgb3V0IGlmIHRoYXQncyB0aGUgY2FzZS5cbiAgICogS2V5czpcbiAgICogKiBgcmVsYXRpdmVgOiB3aGV0aGVyIHRoaXMgZW52aXJvbm1lbnQgc3VwcG9ydHMgcmVsYXRpdmUgdGltZSBmb3JtYXR0aW5nXG4gICAqIEBleGFtcGxlIEluZm8uZmVhdHVyZXMoKSAvLz0+IHsgcmVsYXRpdmU6IGZhbHNlIH1cbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGZlYXR1cmVzKCkge1xuICAgIHJldHVybiB7IHJlbGF0aXZlOiBoYXNSZWxhdGl2ZSgpIH07XG4gIH1cbn1cbiIsICJpbXBvcnQgRHVyYXRpb24gZnJvbSBcIi4uL2R1cmF0aW9uLmpzXCI7XG5cbmZ1bmN0aW9uIGRheURpZmYoZWFybGllciwgbGF0ZXIpIHtcbiAgY29uc3QgdXRjRGF5U3RhcnQgPSAoZHQpID0+IGR0LnRvVVRDKDAsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KS5zdGFydE9mKFwiZGF5XCIpLnZhbHVlT2YoKSxcbiAgICBtcyA9IHV0Y0RheVN0YXJ0KGxhdGVyKSAtIHV0Y0RheVN0YXJ0KGVhcmxpZXIpO1xuICByZXR1cm4gTWF0aC5mbG9vcihEdXJhdGlvbi5mcm9tTWlsbGlzKG1zKS5hcyhcImRheXNcIikpO1xufVxuXG5mdW5jdGlvbiBoaWdoT3JkZXJEaWZmcyhjdXJzb3IsIGxhdGVyLCB1bml0cykge1xuICBjb25zdCBkaWZmZXJzID0gW1xuICAgIFtcInllYXJzXCIsIChhLCBiKSA9PiBiLnllYXIgLSBhLnllYXJdLFxuICAgIFtcInF1YXJ0ZXJzXCIsIChhLCBiKSA9PiBiLnF1YXJ0ZXIgLSBhLnF1YXJ0ZXJdLFxuICAgIFtcIm1vbnRoc1wiLCAoYSwgYikgPT4gYi5tb250aCAtIGEubW9udGggKyAoYi55ZWFyIC0gYS55ZWFyKSAqIDEyXSxcbiAgICBbXG4gICAgICBcIndlZWtzXCIsXG4gICAgICAoYSwgYikgPT4ge1xuICAgICAgICBjb25zdCBkYXlzID0gZGF5RGlmZihhLCBiKTtcbiAgICAgICAgcmV0dXJuIChkYXlzIC0gKGRheXMgJSA3KSkgLyA3O1xuICAgICAgfSxcbiAgICBdLFxuICAgIFtcImRheXNcIiwgZGF5RGlmZl0sXG4gIF07XG5cbiAgY29uc3QgcmVzdWx0cyA9IHt9O1xuICBsZXQgbG93ZXN0T3JkZXIsIGhpZ2hXYXRlcjtcblxuICBmb3IgKGNvbnN0IFt1bml0LCBkaWZmZXJdIG9mIGRpZmZlcnMpIHtcbiAgICBpZiAodW5pdHMuaW5kZXhPZih1bml0KSA+PSAwKSB7XG4gICAgICBsb3dlc3RPcmRlciA9IHVuaXQ7XG5cbiAgICAgIGxldCBkZWx0YSA9IGRpZmZlcihjdXJzb3IsIGxhdGVyKTtcbiAgICAgIGhpZ2hXYXRlciA9IGN1cnNvci5wbHVzKHsgW3VuaXRdOiBkZWx0YSB9KTtcblxuICAgICAgaWYgKGhpZ2hXYXRlciA+IGxhdGVyKSB7XG4gICAgICAgIGN1cnNvciA9IGN1cnNvci5wbHVzKHsgW3VuaXRdOiBkZWx0YSAtIDEgfSk7XG4gICAgICAgIGRlbHRhIC09IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXJzb3IgPSBoaWdoV2F0ZXI7XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdHNbdW5pdF0gPSBkZWx0YTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gW2N1cnNvciwgcmVzdWx0cywgaGlnaFdhdGVyLCBsb3dlc3RPcmRlcl07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChlYXJsaWVyLCBsYXRlciwgdW5pdHMsIG9wdHMpIHtcbiAgbGV0IFtjdXJzb3IsIHJlc3VsdHMsIGhpZ2hXYXRlciwgbG93ZXN0T3JkZXJdID0gaGlnaE9yZGVyRGlmZnMoZWFybGllciwgbGF0ZXIsIHVuaXRzKTtcblxuICBjb25zdCByZW1haW5pbmdNaWxsaXMgPSBsYXRlciAtIGN1cnNvcjtcblxuICBjb25zdCBsb3dlck9yZGVyVW5pdHMgPSB1bml0cy5maWx0ZXIoXG4gICAgKHUpID0+IFtcImhvdXJzXCIsIFwibWludXRlc1wiLCBcInNlY29uZHNcIiwgXCJtaWxsaXNlY29uZHNcIl0uaW5kZXhPZih1KSA+PSAwXG4gICk7XG5cbiAgaWYgKGxvd2VyT3JkZXJVbml0cy5sZW5ndGggPT09IDApIHtcbiAgICBpZiAoaGlnaFdhdGVyIDwgbGF0ZXIpIHtcbiAgICAgIGhpZ2hXYXRlciA9IGN1cnNvci5wbHVzKHsgW2xvd2VzdE9yZGVyXTogMSB9KTtcbiAgICB9XG5cbiAgICBpZiAoaGlnaFdhdGVyICE9PSBjdXJzb3IpIHtcbiAgICAgIHJlc3VsdHNbbG93ZXN0T3JkZXJdID0gKHJlc3VsdHNbbG93ZXN0T3JkZXJdIHx8IDApICsgcmVtYWluaW5nTWlsbGlzIC8gKGhpZ2hXYXRlciAtIGN1cnNvcik7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZHVyYXRpb24gPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHJlc3VsdHMsIG9wdHMpO1xuXG4gIGlmIChsb3dlck9yZGVyVW5pdHMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBEdXJhdGlvbi5mcm9tTWlsbGlzKHJlbWFpbmluZ01pbGxpcywgb3B0cylcbiAgICAgIC5zaGlmdFRvKC4uLmxvd2VyT3JkZXJVbml0cylcbiAgICAgIC5wbHVzKGR1cmF0aW9uKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZHVyYXRpb247XG4gIH1cbn1cbiIsICJjb25zdCBudW1iZXJpbmdTeXN0ZW1zID0ge1xuICBhcmFiOiBcIltcXHUwNjYwLVxcdTA2NjldXCIsXG4gIGFyYWJleHQ6IFwiW1xcdTA2RjAtXFx1MDZGOV1cIixcbiAgYmFsaTogXCJbXFx1MUI1MC1cXHUxQjU5XVwiLFxuICBiZW5nOiBcIltcXHUwOUU2LVxcdTA5RUZdXCIsXG4gIGRldmE6IFwiW1xcdTA5NjYtXFx1MDk2Rl1cIixcbiAgZnVsbHdpZGU6IFwiW1xcdUZGMTAtXFx1RkYxOV1cIixcbiAgZ3VqcjogXCJbXFx1MEFFNi1cXHUwQUVGXVwiLFxuICBoYW5pZGVjOiBcIltcdTMwMDd8XHU0RTAwfFx1NEU4Q3xcdTRFMDl8XHU1NkRCfFx1NEU5NHxcdTUxNkR8XHU0RTAzfFx1NTE2QnxcdTRFNURdXCIsXG4gIGtobXI6IFwiW1xcdTE3RTAtXFx1MTdFOV1cIixcbiAga25kYTogXCJbXFx1MENFNi1cXHUwQ0VGXVwiLFxuICBsYW9vOiBcIltcXHUwRUQwLVxcdTBFRDldXCIsXG4gIGxpbWI6IFwiW1xcdTE5NDYtXFx1MTk0Rl1cIixcbiAgbWx5bTogXCJbXFx1MEQ2Ni1cXHUwRDZGXVwiLFxuICBtb25nOiBcIltcXHUxODEwLVxcdTE4MTldXCIsXG4gIG15bXI6IFwiW1xcdTEwNDAtXFx1MTA0OV1cIixcbiAgb3J5YTogXCJbXFx1MEI2Ni1cXHUwQjZGXVwiLFxuICB0YW1sZGVjOiBcIltcXHUwQkU2LVxcdTBCRUZdXCIsXG4gIHRlbHU6IFwiW1xcdTBDNjYtXFx1MEM2Rl1cIixcbiAgdGhhaTogXCJbXFx1MEU1MC1cXHUwRTU5XVwiLFxuICB0aWJ0OiBcIltcXHUwRjIwLVxcdTBGMjldXCIsXG4gIGxhdG46IFwiXFxcXGRcIixcbn07XG5cbmNvbnN0IG51bWJlcmluZ1N5c3RlbXNVVEYxNiA9IHtcbiAgYXJhYjogWzE2MzIsIDE2NDFdLFxuICBhcmFiZXh0OiBbMTc3NiwgMTc4NV0sXG4gIGJhbGk6IFs2OTkyLCA3MDAxXSxcbiAgYmVuZzogWzI1MzQsIDI1NDNdLFxuICBkZXZhOiBbMjQwNiwgMjQxNV0sXG4gIGZ1bGx3aWRlOiBbNjUyOTYsIDY1MzAzXSxcbiAgZ3VqcjogWzI3OTAsIDI3OTldLFxuICBraG1yOiBbNjExMiwgNjEyMV0sXG4gIGtuZGE6IFszMzAyLCAzMzExXSxcbiAgbGFvbzogWzM3OTIsIDM4MDFdLFxuICBsaW1iOiBbNjQ3MCwgNjQ3OV0sXG4gIG1seW06IFszNDMwLCAzNDM5XSxcbiAgbW9uZzogWzYxNjAsIDYxNjldLFxuICBteW1yOiBbNDE2MCwgNDE2OV0sXG4gIG9yeWE6IFsyOTE4LCAyOTI3XSxcbiAgdGFtbGRlYzogWzMwNDYsIDMwNTVdLFxuICB0ZWx1OiBbMzE3NCwgMzE4M10sXG4gIHRoYWk6IFszNjY0LCAzNjczXSxcbiAgdGlidDogWzM4NzIsIDM4ODFdLFxufTtcblxuY29uc3QgaGFuaWRlY0NoYXJzID0gbnVtYmVyaW5nU3lzdGVtcy5oYW5pZGVjLnJlcGxhY2UoL1tcXFt8XFxdXS9nLCBcIlwiKS5zcGxpdChcIlwiKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRGlnaXRzKHN0cikge1xuICBsZXQgdmFsdWUgPSBwYXJzZUludChzdHIsIDEwKTtcbiAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgIHZhbHVlID0gXCJcIjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuXG4gICAgICBpZiAoc3RyW2ldLnNlYXJjaChudW1iZXJpbmdTeXN0ZW1zLmhhbmlkZWMpICE9PSAtMSkge1xuICAgICAgICB2YWx1ZSArPSBoYW5pZGVjQ2hhcnMuaW5kZXhPZihzdHJbaV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbnVtYmVyaW5nU3lzdGVtc1VURjE2KSB7XG4gICAgICAgICAgY29uc3QgW21pbiwgbWF4XSA9IG51bWJlcmluZ1N5c3RlbXNVVEYxNltrZXldO1xuICAgICAgICAgIGlmIChjb2RlID49IG1pbiAmJiBjb2RlIDw9IG1heCkge1xuICAgICAgICAgICAgdmFsdWUgKz0gY29kZSAtIG1pbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWdpdFJlZ2V4KHsgbnVtYmVyaW5nU3lzdGVtIH0sIGFwcGVuZCA9IFwiXCIpIHtcbiAgcmV0dXJuIG5ldyBSZWdFeHAoYCR7bnVtYmVyaW5nU3lzdGVtc1tudW1iZXJpbmdTeXN0ZW0gfHwgXCJsYXRuXCJdfSR7YXBwZW5kfWApO1xufVxuIiwgImltcG9ydCB7IHBhcnNlTWlsbGlzLCBpc1VuZGVmaW5lZCwgdW50cnVuY2F0ZVllYXIsIHNpZ25lZE9mZnNldCwgaGFzT3duUHJvcGVydHkgfSBmcm9tIFwiLi91dGlsLmpzXCI7XG5pbXBvcnQgRm9ybWF0dGVyIGZyb20gXCIuL2Zvcm1hdHRlci5qc1wiO1xuaW1wb3J0IEZpeGVkT2Zmc2V0Wm9uZSBmcm9tIFwiLi4vem9uZXMvZml4ZWRPZmZzZXRab25lLmpzXCI7XG5pbXBvcnQgSUFOQVpvbmUgZnJvbSBcIi4uL3pvbmVzL0lBTkFab25lLmpzXCI7XG5pbXBvcnQgRGF0ZVRpbWUgZnJvbSBcIi4uL2RhdGV0aW1lLmpzXCI7XG5pbXBvcnQgeyBkaWdpdFJlZ2V4LCBwYXJzZURpZ2l0cyB9IGZyb20gXCIuL2RpZ2l0cy5qc1wiO1xuaW1wb3J0IHsgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzLmpzXCI7XG5cbmNvbnN0IE1JU1NJTkdfRlRQID0gXCJtaXNzaW5nIEludGwuRGF0ZVRpbWVGb3JtYXQuZm9ybWF0VG9QYXJ0cyBzdXBwb3J0XCI7XG5cbmZ1bmN0aW9uIGludFVuaXQocmVnZXgsIHBvc3QgPSAoaSkgPT4gaSkge1xuICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHBvc3QocGFyc2VEaWdpdHMocykpIH07XG59XG5cbmNvbnN0IE5CU1AgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDE2MCk7XG5jb25zdCBzcGFjZU9yTkJTUCA9IGAoIHwke05CU1B9KWA7XG5jb25zdCBzcGFjZU9yTkJTUFJlZ0V4cCA9IG5ldyBSZWdFeHAoc3BhY2VPck5CU1AsIFwiZ1wiKTtcblxuZnVuY3Rpb24gZml4TGlzdFJlZ2V4KHMpIHtcbiAgLy8gbWFrZSBkb3RzIG9wdGlvbmFsIGFuZCBhbHNvIG1ha2UgdGhlbSBsaXRlcmFsXG4gIC8vIG1ha2Ugc3BhY2UgYW5kIG5vbiBicmVha2FibGUgc3BhY2UgY2hhcmFjdGVycyBpbnRlcmNoYW5nZWFibGVcbiAgcmV0dXJuIHMucmVwbGFjZSgvXFwuL2csIFwiXFxcXC4/XCIpLnJlcGxhY2Uoc3BhY2VPck5CU1BSZWdFeHAsIHNwYWNlT3JOQlNQKTtcbn1cblxuZnVuY3Rpb24gc3RyaXBJbnNlbnNpdGl2aXRpZXMocykge1xuICByZXR1cm4gc1xuICAgIC5yZXBsYWNlKC9cXC4vZywgXCJcIikgLy8gaWdub3JlIGRvdHMgdGhhdCB3ZXJlIG1hZGUgb3B0aW9uYWxcbiAgICAucmVwbGFjZShzcGFjZU9yTkJTUFJlZ0V4cCwgXCIgXCIpIC8vIGludGVyY2hhbmdlIHNwYWNlIGFuZCBuYnNwXG4gICAgLnRvTG93ZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIG9uZU9mKHN0cmluZ3MsIHN0YXJ0SW5kZXgpIHtcbiAgaWYgKHN0cmluZ3MgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVnZXg6IFJlZ0V4cChzdHJpbmdzLm1hcChmaXhMaXN0UmVnZXgpLmpvaW4oXCJ8XCIpKSxcbiAgICAgIGRlc2VyOiAoW3NdKSA9PlxuICAgICAgICBzdHJpbmdzLmZpbmRJbmRleCgoaSkgPT4gc3RyaXBJbnNlbnNpdGl2aXRpZXMocykgPT09IHN0cmlwSW5zZW5zaXRpdml0aWVzKGkpKSArIHN0YXJ0SW5kZXgsXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvZmZzZXQocmVnZXgsIGdyb3Vwcykge1xuICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbLCBoLCBtXSkgPT4gc2lnbmVkT2Zmc2V0KGgsIG0pLCBncm91cHMgfTtcbn1cblxuZnVuY3Rpb24gc2ltcGxlKHJlZ2V4KSB7XG4gIHJldHVybiB7IHJlZ2V4LCBkZXNlcjogKFtzXSkgPT4gcyB9O1xufVxuXG5mdW5jdGlvbiBlc2NhcGVUb2tlbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZSgvW1xcLVxcW1xcXXt9KCkqKz8uLFxcXFxcXF4kfCNcXHNdL2csIFwiXFxcXCQmXCIpO1xufVxuXG5mdW5jdGlvbiB1bml0Rm9yVG9rZW4odG9rZW4sIGxvYykge1xuICBjb25zdCBvbmUgPSBkaWdpdFJlZ2V4KGxvYyksXG4gICAgdHdvID0gZGlnaXRSZWdleChsb2MsIFwiezJ9XCIpLFxuICAgIHRocmVlID0gZGlnaXRSZWdleChsb2MsIFwiezN9XCIpLFxuICAgIGZvdXIgPSBkaWdpdFJlZ2V4KGxvYywgXCJ7NH1cIiksXG4gICAgc2l4ID0gZGlnaXRSZWdleChsb2MsIFwiezZ9XCIpLFxuICAgIG9uZU9yVHdvID0gZGlnaXRSZWdleChsb2MsIFwiezEsMn1cIiksXG4gICAgb25lVG9UaHJlZSA9IGRpZ2l0UmVnZXgobG9jLCBcInsxLDN9XCIpLFxuICAgIG9uZVRvU2l4ID0gZGlnaXRSZWdleChsb2MsIFwiezEsNn1cIiksXG4gICAgb25lVG9OaW5lID0gZGlnaXRSZWdleChsb2MsIFwiezEsOX1cIiksXG4gICAgdHdvVG9Gb3VyID0gZGlnaXRSZWdleChsb2MsIFwiezIsNH1cIiksXG4gICAgZm91clRvU2l4ID0gZGlnaXRSZWdleChsb2MsIFwiezQsNn1cIiksXG4gICAgbGl0ZXJhbCA9ICh0KSA9PiAoeyByZWdleDogUmVnRXhwKGVzY2FwZVRva2VuKHQudmFsKSksIGRlc2VyOiAoW3NdKSA9PiBzLCBsaXRlcmFsOiB0cnVlIH0pLFxuICAgIHVuaXRhdGUgPSAodCkgPT4ge1xuICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHtcbiAgICAgICAgcmV0dXJuIGxpdGVyYWwodCk7XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKHQudmFsKSB7XG4gICAgICAgIC8vIGVyYVxuICAgICAgICBjYXNlIFwiR1wiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MuZXJhcyhcInNob3J0XCIsIGZhbHNlKSwgMCk7XG4gICAgICAgIGNhc2UgXCJHR1wiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MuZXJhcyhcImxvbmdcIiwgZmFsc2UpLCAwKTtcbiAgICAgICAgLy8geWVhcnNcbiAgICAgICAgY2FzZSBcInlcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVUb1NpeCk7XG4gICAgICAgIGNhc2UgXCJ5eVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3b1RvRm91ciwgdW50cnVuY2F0ZVllYXIpO1xuICAgICAgICBjYXNlIFwieXl5eVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXIpO1xuICAgICAgICBjYXNlIFwieXl5eXlcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChmb3VyVG9TaXgpO1xuICAgICAgICBjYXNlIFwieXl5eXl5XCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQoc2l4KTtcbiAgICAgICAgLy8gbW9udGhzXG4gICAgICAgIGNhc2UgXCJNXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pO1xuICAgICAgICBjYXNlIFwiTU1cIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pO1xuICAgICAgICBjYXNlIFwiTU1NXCI6XG4gICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoXCJzaG9ydFwiLCB0cnVlLCBmYWxzZSksIDEpO1xuICAgICAgICBjYXNlIFwiTU1NTVwiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKFwibG9uZ1wiLCB0cnVlLCBmYWxzZSksIDEpO1xuICAgICAgICBjYXNlIFwiTFwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcIkxMXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgY2FzZSBcIkxMTFwiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKFwic2hvcnRcIiwgZmFsc2UsIGZhbHNlKSwgMSk7XG4gICAgICAgIGNhc2UgXCJMTExMXCI6XG4gICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoXCJsb25nXCIsIGZhbHNlLCBmYWxzZSksIDEpO1xuICAgICAgICAvLyBkYXRlc1xuICAgICAgICBjYXNlIFwiZFwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcImRkXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgLy8gb3JkaW5hbHNcbiAgICAgICAgY2FzZSBcIm9cIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVUb1RocmVlKTtcbiAgICAgICAgY2FzZSBcIm9vb1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHRocmVlKTtcbiAgICAgICAgLy8gdGltZVxuICAgICAgICBjYXNlIFwiSEhcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pO1xuICAgICAgICBjYXNlIFwiSFwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcImhoXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgY2FzZSBcImhcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJtbVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIGNhc2UgXCJtXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pO1xuICAgICAgICBjYXNlIFwicVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcInFxXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgY2FzZSBcInNcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJzc1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIGNhc2UgXCJTXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lVG9UaHJlZSk7XG4gICAgICAgIGNhc2UgXCJTU1NcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0aHJlZSk7XG4gICAgICAgIGNhc2UgXCJ1XCI6XG4gICAgICAgICAgcmV0dXJuIHNpbXBsZShvbmVUb05pbmUpO1xuICAgICAgICBjYXNlIFwidXVcIjpcbiAgICAgICAgICByZXR1cm4gc2ltcGxlKG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcInV1dVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZSk7XG4gICAgICAgIC8vIG1lcmlkaWVtXG4gICAgICAgIGNhc2UgXCJhXCI6XG4gICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tZXJpZGllbXMoKSwgMCk7XG4gICAgICAgIC8vIHdlZWtZZWFyIChrKVxuICAgICAgICBjYXNlIFwia2tra1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXIpO1xuICAgICAgICBjYXNlIFwia2tcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d29Ub0ZvdXIsIHVudHJ1bmNhdGVZZWFyKTtcbiAgICAgICAgLy8gd2Vla051bWJlciAoVylcbiAgICAgICAgY2FzZSBcIldcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJXV1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIC8vIHdlZWtkYXlzXG4gICAgICAgIGNhc2UgXCJFXCI6XG4gICAgICAgIGNhc2UgXCJjXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lKTtcbiAgICAgICAgY2FzZSBcIkVFRVwiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoXCJzaG9ydFwiLCBmYWxzZSwgZmFsc2UpLCAxKTtcbiAgICAgICAgY2FzZSBcIkVFRUVcIjpcbiAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKFwibG9uZ1wiLCBmYWxzZSwgZmFsc2UpLCAxKTtcbiAgICAgICAgY2FzZSBcImNjY1wiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoXCJzaG9ydFwiLCB0cnVlLCBmYWxzZSksIDEpO1xuICAgICAgICBjYXNlIFwiY2NjY1wiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoXCJsb25nXCIsIHRydWUsIGZhbHNlKSwgMSk7XG4gICAgICAgIC8vIG9mZnNldC96b25lXG4gICAgICAgIGNhc2UgXCJaXCI6XG4gICAgICAgIGNhc2UgXCJaWlwiOlxuICAgICAgICAgIHJldHVybiBvZmZzZXQobmV3IFJlZ0V4cChgKFsrLV0ke29uZU9yVHdvLnNvdXJjZX0pKD86Oigke3R3by5zb3VyY2V9KSk/YCksIDIpO1xuICAgICAgICBjYXNlIFwiWlpaXCI6XG4gICAgICAgICAgcmV0dXJuIG9mZnNldChuZXcgUmVnRXhwKGAoWystXSR7b25lT3JUd28uc291cmNlfSkoJHt0d28uc291cmNlfSk/YCksIDIpO1xuICAgICAgICAvLyB3ZSBkb24ndCBzdXBwb3J0IFpaWlogKFBTVCkgb3IgWlpaWlogKFBhY2lmaWMgU3RhbmRhcmQgVGltZSkgaW4gcGFyc2luZ1xuICAgICAgICAvLyBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYW55IHdheSB0byBmaWd1cmUgb3V0IHdoYXQgdGhleSBhcmVcbiAgICAgICAgY2FzZSBcInpcIjpcbiAgICAgICAgICByZXR1cm4gc2ltcGxlKC9bYS16XystL117MSwyNTZ9Py9pKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbGl0ZXJhbCh0KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gIGNvbnN0IHVuaXQgPSB1bml0YXRlKHRva2VuKSB8fCB7XG4gICAgaW52YWxpZFJlYXNvbjogTUlTU0lOR19GVFAsXG4gIH07XG5cbiAgdW5pdC50b2tlbiA9IHRva2VuO1xuXG4gIHJldHVybiB1bml0O1xufVxuXG5jb25zdCBwYXJ0VHlwZVN0eWxlVG9Ub2tlblZhbCA9IHtcbiAgeWVhcjoge1xuICAgIFwiMi1kaWdpdFwiOiBcInl5XCIsXG4gICAgbnVtZXJpYzogXCJ5eXl5eVwiLFxuICB9LFxuICBtb250aDoge1xuICAgIG51bWVyaWM6IFwiTVwiLFxuICAgIFwiMi1kaWdpdFwiOiBcIk1NXCIsXG4gICAgc2hvcnQ6IFwiTU1NXCIsXG4gICAgbG9uZzogXCJNTU1NXCIsXG4gIH0sXG4gIGRheToge1xuICAgIG51bWVyaWM6IFwiZFwiLFxuICAgIFwiMi1kaWdpdFwiOiBcImRkXCIsXG4gIH0sXG4gIHdlZWtkYXk6IHtcbiAgICBzaG9ydDogXCJFRUVcIixcbiAgICBsb25nOiBcIkVFRUVcIixcbiAgfSxcbiAgZGF5cGVyaW9kOiBcImFcIixcbiAgZGF5UGVyaW9kOiBcImFcIixcbiAgaG91cjoge1xuICAgIG51bWVyaWM6IFwiaFwiLFxuICAgIFwiMi1kaWdpdFwiOiBcImhoXCIsXG4gIH0sXG4gIG1pbnV0ZToge1xuICAgIG51bWVyaWM6IFwibVwiLFxuICAgIFwiMi1kaWdpdFwiOiBcIm1tXCIsXG4gIH0sXG4gIHNlY29uZDoge1xuICAgIG51bWVyaWM6IFwic1wiLFxuICAgIFwiMi1kaWdpdFwiOiBcInNzXCIsXG4gIH0sXG59O1xuXG5mdW5jdGlvbiB0b2tlbkZvclBhcnQocGFydCwgbG9jYWxlLCBmb3JtYXRPcHRzKSB7XG4gIGNvbnN0IHsgdHlwZSwgdmFsdWUgfSA9IHBhcnQ7XG5cbiAgaWYgKHR5cGUgPT09IFwibGl0ZXJhbFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpdGVyYWw6IHRydWUsXG4gICAgICB2YWw6IHZhbHVlLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBzdHlsZSA9IGZvcm1hdE9wdHNbdHlwZV07XG5cbiAgbGV0IHZhbCA9IHBhcnRUeXBlU3R5bGVUb1Rva2VuVmFsW3R5cGVdO1xuICBpZiAodHlwZW9mIHZhbCA9PT0gXCJvYmplY3RcIikge1xuICAgIHZhbCA9IHZhbFtzdHlsZV07XG4gIH1cblxuICBpZiAodmFsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpdGVyYWw6IGZhbHNlLFxuICAgICAgdmFsLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBidWlsZFJlZ2V4KHVuaXRzKSB7XG4gIGNvbnN0IHJlID0gdW5pdHMubWFwKCh1KSA9PiB1LnJlZ2V4KS5yZWR1Y2UoKGYsIHIpID0+IGAke2Z9KCR7ci5zb3VyY2V9KWAsIFwiXCIpO1xuICByZXR1cm4gW2BeJHtyZX0kYCwgdW5pdHNdO1xufVxuXG5mdW5jdGlvbiBtYXRjaChpbnB1dCwgcmVnZXgsIGhhbmRsZXJzKSB7XG4gIGNvbnN0IG1hdGNoZXMgPSBpbnB1dC5tYXRjaChyZWdleCk7XG5cbiAgaWYgKG1hdGNoZXMpIHtcbiAgICBjb25zdCBhbGwgPSB7fTtcbiAgICBsZXQgbWF0Y2hJbmRleCA9IDE7XG4gICAgZm9yIChjb25zdCBpIGluIGhhbmRsZXJzKSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkoaGFuZGxlcnMsIGkpKSB7XG4gICAgICAgIGNvbnN0IGggPSBoYW5kbGVyc1tpXSxcbiAgICAgICAgICBncm91cHMgPSBoLmdyb3VwcyA/IGguZ3JvdXBzICsgMSA6IDE7XG4gICAgICAgIGlmICghaC5saXRlcmFsICYmIGgudG9rZW4pIHtcbiAgICAgICAgICBhbGxbaC50b2tlbi52YWxbMF1dID0gaC5kZXNlcihtYXRjaGVzLnNsaWNlKG1hdGNoSW5kZXgsIG1hdGNoSW5kZXggKyBncm91cHMpKTtcbiAgICAgICAgfVxuICAgICAgICBtYXRjaEluZGV4ICs9IGdyb3VwcztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFttYXRjaGVzLCBhbGxdO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBbbWF0Y2hlcywge31dO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRhdGVUaW1lRnJvbU1hdGNoZXMobWF0Y2hlcykge1xuICBjb25zdCB0b0ZpZWxkID0gKHRva2VuKSA9PiB7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgY2FzZSBcIlNcIjpcbiAgICAgICAgcmV0dXJuIFwibWlsbGlzZWNvbmRcIjtcbiAgICAgIGNhc2UgXCJzXCI6XG4gICAgICAgIHJldHVybiBcInNlY29uZFwiO1xuICAgICAgY2FzZSBcIm1cIjpcbiAgICAgICAgcmV0dXJuIFwibWludXRlXCI7XG4gICAgICBjYXNlIFwiaFwiOlxuICAgICAgY2FzZSBcIkhcIjpcbiAgICAgICAgcmV0dXJuIFwiaG91clwiO1xuICAgICAgY2FzZSBcImRcIjpcbiAgICAgICAgcmV0dXJuIFwiZGF5XCI7XG4gICAgICBjYXNlIFwib1wiOlxuICAgICAgICByZXR1cm4gXCJvcmRpbmFsXCI7XG4gICAgICBjYXNlIFwiTFwiOlxuICAgICAgY2FzZSBcIk1cIjpcbiAgICAgICAgcmV0dXJuIFwibW9udGhcIjtcbiAgICAgIGNhc2UgXCJ5XCI6XG4gICAgICAgIHJldHVybiBcInllYXJcIjtcbiAgICAgIGNhc2UgXCJFXCI6XG4gICAgICBjYXNlIFwiY1wiOlxuICAgICAgICByZXR1cm4gXCJ3ZWVrZGF5XCI7XG4gICAgICBjYXNlIFwiV1wiOlxuICAgICAgICByZXR1cm4gXCJ3ZWVrTnVtYmVyXCI7XG4gICAgICBjYXNlIFwia1wiOlxuICAgICAgICByZXR1cm4gXCJ3ZWVrWWVhclwiO1xuICAgICAgY2FzZSBcInFcIjpcbiAgICAgICAgcmV0dXJuIFwicXVhcnRlclwiO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xuXG4gIGxldCB6b25lID0gbnVsbDtcbiAgbGV0IHNwZWNpZmljT2Zmc2V0O1xuICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMueikpIHtcbiAgICB6b25lID0gSUFOQVpvbmUuY3JlYXRlKG1hdGNoZXMueik7XG4gIH1cblxuICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMuWikpIHtcbiAgICBpZiAoIXpvbmUpIHtcbiAgICAgIHpvbmUgPSBuZXcgRml4ZWRPZmZzZXRab25lKG1hdGNoZXMuWik7XG4gICAgfVxuICAgIHNwZWNpZmljT2Zmc2V0ID0gbWF0Y2hlcy5aO1xuICB9XG5cbiAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnEpKSB7XG4gICAgbWF0Y2hlcy5NID0gKG1hdGNoZXMucSAtIDEpICogMyArIDE7XG4gIH1cblxuICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMuaCkpIHtcbiAgICBpZiAobWF0Y2hlcy5oIDwgMTIgJiYgbWF0Y2hlcy5hID09PSAxKSB7XG4gICAgICBtYXRjaGVzLmggKz0gMTI7XG4gICAgfSBlbHNlIGlmIChtYXRjaGVzLmggPT09IDEyICYmIG1hdGNoZXMuYSA9PT0gMCkge1xuICAgICAgbWF0Y2hlcy5oID0gMDtcbiAgICB9XG4gIH1cblxuICBpZiAobWF0Y2hlcy5HID09PSAwICYmIG1hdGNoZXMueSkge1xuICAgIG1hdGNoZXMueSA9IC1tYXRjaGVzLnk7XG4gIH1cblxuICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMudSkpIHtcbiAgICBtYXRjaGVzLlMgPSBwYXJzZU1pbGxpcyhtYXRjaGVzLnUpO1xuICB9XG5cbiAgY29uc3QgdmFscyA9IE9iamVjdC5rZXlzKG1hdGNoZXMpLnJlZHVjZSgociwgaykgPT4ge1xuICAgIGNvbnN0IGYgPSB0b0ZpZWxkKGspO1xuICAgIGlmIChmKSB7XG4gICAgICByW2ZdID0gbWF0Y2hlc1trXTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfSwge30pO1xuXG4gIHJldHVybiBbdmFscywgem9uZSwgc3BlY2lmaWNPZmZzZXRdO1xufVxuXG5sZXQgZHVtbXlEYXRlVGltZUNhY2hlID0gbnVsbDtcblxuZnVuY3Rpb24gZ2V0RHVtbXlEYXRlVGltZSgpIHtcbiAgaWYgKCFkdW1teURhdGVUaW1lQ2FjaGUpIHtcbiAgICBkdW1teURhdGVUaW1lQ2FjaGUgPSBEYXRlVGltZS5mcm9tTWlsbGlzKDE1NTU1NTU1NTU1NTUpO1xuICB9XG5cbiAgcmV0dXJuIGR1bW15RGF0ZVRpbWVDYWNoZTtcbn1cblxuZnVuY3Rpb24gbWF5YmVFeHBhbmRNYWNyb1Rva2VuKHRva2VuLCBsb2NhbGUpIHtcbiAgaWYgKHRva2VuLmxpdGVyYWwpIHtcbiAgICByZXR1cm4gdG9rZW47XG4gIH1cblxuICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4udmFsKTtcblxuICBpZiAoIWZvcm1hdE9wdHMpIHtcbiAgICByZXR1cm4gdG9rZW47XG4gIH1cblxuICBjb25zdCBmb3JtYXR0ZXIgPSBGb3JtYXR0ZXIuY3JlYXRlKGxvY2FsZSwgZm9ybWF0T3B0cyk7XG4gIGNvbnN0IHBhcnRzID0gZm9ybWF0dGVyLmZvcm1hdERhdGVUaW1lUGFydHMoZ2V0RHVtbXlEYXRlVGltZSgpKTtcblxuICBjb25zdCB0b2tlbnMgPSBwYXJ0cy5tYXAoKHApID0+IHRva2VuRm9yUGFydChwLCBsb2NhbGUsIGZvcm1hdE9wdHMpKTtcblxuICBpZiAodG9rZW5zLmluY2x1ZGVzKHVuZGVmaW5lZCkpIHtcbiAgICByZXR1cm4gdG9rZW47XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufVxuXG5mdW5jdGlvbiBleHBhbmRNYWNyb1Rva2Vucyh0b2tlbnMsIGxvY2FsZSkge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi50b2tlbnMubWFwKCh0KSA9PiBtYXliZUV4cGFuZE1hY3JvVG9rZW4odCwgbG9jYWxlKSkpO1xufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cGxhaW5Gcm9tVG9rZW5zKGxvY2FsZSwgaW5wdXQsIGZvcm1hdCkge1xuICBjb25zdCB0b2tlbnMgPSBleHBhbmRNYWNyb1Rva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm9ybWF0KSwgbG9jYWxlKSxcbiAgICB1bml0cyA9IHRva2Vucy5tYXAoKHQpID0+IHVuaXRGb3JUb2tlbih0LCBsb2NhbGUpKSxcbiAgICBkaXNxdWFsaWZ5aW5nVW5pdCA9IHVuaXRzLmZpbmQoKHQpID0+IHQuaW52YWxpZFJlYXNvbik7XG5cbiAgaWYgKGRpc3F1YWxpZnlpbmdVbml0KSB7XG4gICAgcmV0dXJuIHsgaW5wdXQsIHRva2VucywgaW52YWxpZFJlYXNvbjogZGlzcXVhbGlmeWluZ1VuaXQuaW52YWxpZFJlYXNvbiB9O1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IFtyZWdleFN0cmluZywgaGFuZGxlcnNdID0gYnVpbGRSZWdleCh1bml0cyksXG4gICAgICByZWdleCA9IFJlZ0V4cChyZWdleFN0cmluZywgXCJpXCIpLFxuICAgICAgW3Jhd01hdGNoZXMsIG1hdGNoZXNdID0gbWF0Y2goaW5wdXQsIHJlZ2V4LCBoYW5kbGVycyksXG4gICAgICBbcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldF0gPSBtYXRjaGVzXG4gICAgICAgID8gZGF0ZVRpbWVGcm9tTWF0Y2hlcyhtYXRjaGVzKVxuICAgICAgICA6IFtudWxsLCBudWxsLCB1bmRlZmluZWRdO1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eShtYXRjaGVzLCBcImFcIikgJiYgaGFzT3duUHJvcGVydHkobWF0Y2hlcywgXCJIXCIpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoXG4gICAgICAgIFwiQ2FuJ3QgaW5jbHVkZSBtZXJpZGllbSB3aGVuIHNwZWNpZnlpbmcgMjQtaG91ciBmb3JtYXRcIlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgaW5wdXQsIHRva2VucywgcmVnZXgsIHJhd01hdGNoZXMsIG1hdGNoZXMsIHJlc3VsdCwgem9uZSwgc3BlY2lmaWNPZmZzZXQgfTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VGcm9tVG9rZW5zKGxvY2FsZSwgaW5wdXQsIGZvcm1hdCkge1xuICBjb25zdCB7IHJlc3VsdCwgem9uZSwgc3BlY2lmaWNPZmZzZXQsIGludmFsaWRSZWFzb24gfSA9IGV4cGxhaW5Gcm9tVG9rZW5zKGxvY2FsZSwgaW5wdXQsIGZvcm1hdCk7XG4gIHJldHVybiBbcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZFJlYXNvbl07XG59XG4iLCAiaW1wb3J0IHtcbiAgaW50ZWdlckJldHdlZW4sXG4gIGlzTGVhcFllYXIsXG4gIHRpbWVPYmplY3QsXG4gIGRheXNJblllYXIsXG4gIGRheXNJbk1vbnRoLFxuICB3ZWVrc0luV2Vla1llYXIsXG4gIGlzSW50ZWdlcixcbn0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuaW1wb3J0IEludmFsaWQgZnJvbSBcIi4vaW52YWxpZC5qc1wiO1xuXG5jb25zdCBub25MZWFwTGFkZGVyID0gWzAsIDMxLCA1OSwgOTAsIDEyMCwgMTUxLCAxODEsIDIxMiwgMjQzLCAyNzMsIDMwNCwgMzM0XSxcbiAgbGVhcExhZGRlciA9IFswLCAzMSwgNjAsIDkxLCAxMjEsIDE1MiwgMTgyLCAyMTMsIDI0NCwgMjc0LCAzMDUsIDMzNV07XG5cbmZ1bmN0aW9uIHVuaXRPdXRPZlJhbmdlKHVuaXQsIHZhbHVlKSB7XG4gIHJldHVybiBuZXcgSW52YWxpZChcbiAgICBcInVuaXQgb3V0IG9mIHJhbmdlXCIsXG4gICAgYHlvdSBzcGVjaWZpZWQgJHt2YWx1ZX0gKG9mIHR5cGUgJHt0eXBlb2YgdmFsdWV9KSBhcyBhICR7dW5pdH0sIHdoaWNoIGlzIGludmFsaWRgXG4gICk7XG59XG5cbmZ1bmN0aW9uIGRheU9mV2Vlayh5ZWFyLCBtb250aCwgZGF5KSB7XG4gIGNvbnN0IGpzID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGggLSAxLCBkYXkpKS5nZXRVVENEYXkoKTtcbiAgcmV0dXJuIGpzID09PSAwID8gNyA6IGpzO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlT3JkaW5hbCh5ZWFyLCBtb250aCwgZGF5KSB7XG4gIHJldHVybiBkYXkgKyAoaXNMZWFwWWVhcih5ZWFyKSA/IGxlYXBMYWRkZXIgOiBub25MZWFwTGFkZGVyKVttb250aCAtIDFdO1xufVxuXG5mdW5jdGlvbiB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpIHtcbiAgY29uc3QgdGFibGUgPSBpc0xlYXBZZWFyKHllYXIpID8gbGVhcExhZGRlciA6IG5vbkxlYXBMYWRkZXIsXG4gICAgbW9udGgwID0gdGFibGUuZmluZEluZGV4KChpKSA9PiBpIDwgb3JkaW5hbCksXG4gICAgZGF5ID0gb3JkaW5hbCAtIHRhYmxlW21vbnRoMF07XG4gIHJldHVybiB7IG1vbnRoOiBtb250aDAgKyAxLCBkYXkgfTtcbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBncmVnb3JpYW5Ub1dlZWsoZ3JlZ09iaikge1xuICBjb25zdCB7IHllYXIsIG1vbnRoLCBkYXkgfSA9IGdyZWdPYmosXG4gICAgb3JkaW5hbCA9IGNvbXB1dGVPcmRpbmFsKHllYXIsIG1vbnRoLCBkYXkpLFxuICAgIHdlZWtkYXkgPSBkYXlPZldlZWsoeWVhciwgbW9udGgsIGRheSk7XG5cbiAgbGV0IHdlZWtOdW1iZXIgPSBNYXRoLmZsb29yKChvcmRpbmFsIC0gd2Vla2RheSArIDEwKSAvIDcpLFxuICAgIHdlZWtZZWFyO1xuXG4gIGlmICh3ZWVrTnVtYmVyIDwgMSkge1xuICAgIHdlZWtZZWFyID0geWVhciAtIDE7XG4gICAgd2Vla051bWJlciA9IHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcik7XG4gIH0gZWxzZSBpZiAod2Vla051bWJlciA+IHdlZWtzSW5XZWVrWWVhcih5ZWFyKSkge1xuICAgIHdlZWtZZWFyID0geWVhciArIDE7XG4gICAgd2Vla051bWJlciA9IDE7XG4gIH0gZWxzZSB7XG4gICAgd2Vla1llYXIgPSB5ZWFyO1xuICB9XG5cbiAgcmV0dXJuIHsgd2Vla1llYXIsIHdlZWtOdW1iZXIsIHdlZWtkYXksIC4uLnRpbWVPYmplY3QoZ3JlZ09iaikgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlZWtUb0dyZWdvcmlhbih3ZWVrRGF0YSkge1xuICBjb25zdCB7IHdlZWtZZWFyLCB3ZWVrTnVtYmVyLCB3ZWVrZGF5IH0gPSB3ZWVrRGF0YSxcbiAgICB3ZWVrZGF5T2ZKYW40ID0gZGF5T2ZXZWVrKHdlZWtZZWFyLCAxLCA0KSxcbiAgICB5ZWFySW5EYXlzID0gZGF5c0luWWVhcih3ZWVrWWVhcik7XG5cbiAgbGV0IG9yZGluYWwgPSB3ZWVrTnVtYmVyICogNyArIHdlZWtkYXkgLSB3ZWVrZGF5T2ZKYW40IC0gMyxcbiAgICB5ZWFyO1xuXG4gIGlmIChvcmRpbmFsIDwgMSkge1xuICAgIHllYXIgPSB3ZWVrWWVhciAtIDE7XG4gICAgb3JkaW5hbCArPSBkYXlzSW5ZZWFyKHllYXIpO1xuICB9IGVsc2UgaWYgKG9yZGluYWwgPiB5ZWFySW5EYXlzKSB7XG4gICAgeWVhciA9IHdlZWtZZWFyICsgMTtcbiAgICBvcmRpbmFsIC09IGRheXNJblllYXIod2Vla1llYXIpO1xuICB9IGVsc2Uge1xuICAgIHllYXIgPSB3ZWVrWWVhcjtcbiAgfVxuXG4gIGNvbnN0IHsgbW9udGgsIGRheSB9ID0gdW5jb21wdXRlT3JkaW5hbCh5ZWFyLCBvcmRpbmFsKTtcbiAgcmV0dXJuIHsgeWVhciwgbW9udGgsIGRheSwgLi4udGltZU9iamVjdCh3ZWVrRGF0YSkgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdyZWdvcmlhblRvT3JkaW5hbChncmVnRGF0YSkge1xuICBjb25zdCB7IHllYXIsIG1vbnRoLCBkYXkgfSA9IGdyZWdEYXRhO1xuICBjb25zdCBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSk7XG4gIHJldHVybiB7IHllYXIsIG9yZGluYWwsIC4uLnRpbWVPYmplY3QoZ3JlZ0RhdGEpIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcmRpbmFsVG9HcmVnb3JpYW4ob3JkaW5hbERhdGEpIHtcbiAgY29uc3QgeyB5ZWFyLCBvcmRpbmFsIH0gPSBvcmRpbmFsRGF0YTtcbiAgY29uc3QgeyBtb250aCwgZGF5IH0gPSB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpO1xuICByZXR1cm4geyB5ZWFyLCBtb250aCwgZGF5LCAuLi50aW1lT2JqZWN0KG9yZGluYWxEYXRhKSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzSW52YWxpZFdlZWtEYXRhKG9iaikge1xuICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLndlZWtZZWFyKSxcbiAgICB2YWxpZFdlZWsgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla051bWJlciwgMSwgd2Vla3NJbldlZWtZZWFyKG9iai53ZWVrWWVhcikpLFxuICAgIHZhbGlkV2Vla2RheSA9IGludGVnZXJCZXR3ZWVuKG9iai53ZWVrZGF5LCAxLCA3KTtcblxuICBpZiAoIXZhbGlkWWVhcikge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcIndlZWtZZWFyXCIsIG9iai53ZWVrWWVhcik7XG4gIH0gZWxzZSBpZiAoIXZhbGlkV2Vlaykge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcIndlZWtcIiwgb2JqLndlZWspO1xuICB9IGVsc2UgaWYgKCF2YWxpZFdlZWtkYXkpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJ3ZWVrZGF5XCIsIG9iai53ZWVrZGF5KTtcbiAgfSBlbHNlIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0ludmFsaWRPcmRpbmFsRGF0YShvYmopIHtcbiAgY29uc3QgdmFsaWRZZWFyID0gaXNJbnRlZ2VyKG9iai55ZWFyKSxcbiAgICB2YWxpZE9yZGluYWwgPSBpbnRlZ2VyQmV0d2VlbihvYmoub3JkaW5hbCwgMSwgZGF5c0luWWVhcihvYmoueWVhcikpO1xuXG4gIGlmICghdmFsaWRZZWFyKSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwieWVhclwiLCBvYmoueWVhcik7XG4gIH0gZWxzZSBpZiAoIXZhbGlkT3JkaW5hbCkge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcIm9yZGluYWxcIiwgb2JqLm9yZGluYWwpO1xuICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB7XG4gIGNvbnN0IHZhbGlkWWVhciA9IGlzSW50ZWdlcihvYmoueWVhciksXG4gICAgdmFsaWRNb250aCA9IGludGVnZXJCZXR3ZWVuKG9iai5tb250aCwgMSwgMTIpLFxuICAgIHZhbGlkRGF5ID0gaW50ZWdlckJldHdlZW4ob2JqLmRheSwgMSwgZGF5c0luTW9udGgob2JqLnllYXIsIG9iai5tb250aCkpO1xuXG4gIGlmICghdmFsaWRZZWFyKSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwieWVhclwiLCBvYmoueWVhcik7XG4gIH0gZWxzZSBpZiAoIXZhbGlkTW9udGgpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJtb250aFwiLCBvYmoubW9udGgpO1xuICB9IGVsc2UgaWYgKCF2YWxpZERheSkge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcImRheVwiLCBvYmouZGF5KTtcbiAgfSBlbHNlIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0ludmFsaWRUaW1lRGF0YShvYmopIHtcbiAgY29uc3QgeyBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQgfSA9IG9iajtcbiAgY29uc3QgdmFsaWRIb3VyID1cbiAgICAgIGludGVnZXJCZXR3ZWVuKGhvdXIsIDAsIDIzKSB8fFxuICAgICAgKGhvdXIgPT09IDI0ICYmIG1pbnV0ZSA9PT0gMCAmJiBzZWNvbmQgPT09IDAgJiYgbWlsbGlzZWNvbmQgPT09IDApLFxuICAgIHZhbGlkTWludXRlID0gaW50ZWdlckJldHdlZW4obWludXRlLCAwLCA1OSksXG4gICAgdmFsaWRTZWNvbmQgPSBpbnRlZ2VyQmV0d2VlbihzZWNvbmQsIDAsIDU5KSxcbiAgICB2YWxpZE1pbGxpc2Vjb25kID0gaW50ZWdlckJldHdlZW4obWlsbGlzZWNvbmQsIDAsIDk5OSk7XG5cbiAgaWYgKCF2YWxpZEhvdXIpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJob3VyXCIsIGhvdXIpO1xuICB9IGVsc2UgaWYgKCF2YWxpZE1pbnV0ZSkge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcIm1pbnV0ZVwiLCBtaW51dGUpO1xuICB9IGVsc2UgaWYgKCF2YWxpZFNlY29uZCkge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcInNlY29uZFwiLCBzZWNvbmQpO1xuICB9IGVsc2UgaWYgKCF2YWxpZE1pbGxpc2Vjb25kKSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwibWlsbGlzZWNvbmRcIiwgbWlsbGlzZWNvbmQpO1xuICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xufVxuIiwgImltcG9ydCBEdXJhdGlvbiBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuaW1wb3J0IEludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3MuanNcIjtcbmltcG9ydCBJbmZvIGZyb20gXCIuL2luZm8uanNcIjtcbmltcG9ydCBGb3JtYXR0ZXIgZnJvbSBcIi4vaW1wbC9mb3JtYXR0ZXIuanNcIjtcbmltcG9ydCBGaXhlZE9mZnNldFpvbmUgZnJvbSBcIi4vem9uZXMvZml4ZWRPZmZzZXRab25lLmpzXCI7XG5pbXBvcnQgTG9jYWxlIGZyb20gXCIuL2ltcGwvbG9jYWxlLmpzXCI7XG5pbXBvcnQge1xuICBpc1VuZGVmaW5lZCxcbiAgbWF5YmVBcnJheSxcbiAgaXNEYXRlLFxuICBpc051bWJlcixcbiAgYmVzdEJ5LFxuICBkYXlzSW5Nb250aCxcbiAgZGF5c0luWWVhcixcbiAgaXNMZWFwWWVhcixcbiAgd2Vla3NJbldlZWtZZWFyLFxuICBub3JtYWxpemVPYmplY3QsXG4gIHJvdW5kVG8sXG4gIG9ialRvTG9jYWxUUyxcbiAgcGFkU3RhcnQsXG59IGZyb20gXCIuL2ltcGwvdXRpbC5qc1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplWm9uZSB9IGZyb20gXCIuL2ltcGwvem9uZVV0aWwuanNcIjtcbmltcG9ydCBkaWZmIGZyb20gXCIuL2ltcGwvZGlmZi5qc1wiO1xuaW1wb3J0IHsgcGFyc2VSRkMyODIyRGF0ZSwgcGFyc2VJU09EYXRlLCBwYXJzZUhUVFBEYXRlLCBwYXJzZVNRTCB9IGZyb20gXCIuL2ltcGwvcmVnZXhQYXJzZXIuanNcIjtcbmltcG9ydCB7IHBhcnNlRnJvbVRva2VucywgZXhwbGFpbkZyb21Ub2tlbnMgfSBmcm9tIFwiLi9pbXBsL3Rva2VuUGFyc2VyLmpzXCI7XG5pbXBvcnQge1xuICBncmVnb3JpYW5Ub1dlZWssXG4gIHdlZWtUb0dyZWdvcmlhbixcbiAgZ3JlZ29yaWFuVG9PcmRpbmFsLFxuICBvcmRpbmFsVG9HcmVnb3JpYW4sXG4gIGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhLFxuICBoYXNJbnZhbGlkV2Vla0RhdGEsXG4gIGhhc0ludmFsaWRPcmRpbmFsRGF0YSxcbiAgaGFzSW52YWxpZFRpbWVEYXRhLFxufSBmcm9tIFwiLi9pbXBsL2NvbnZlcnNpb25zLmpzXCI7XG5pbXBvcnQgKiBhcyBGb3JtYXRzIGZyb20gXCIuL2ltcGwvZm9ybWF0cy5qc1wiO1xuaW1wb3J0IHtcbiAgSW52YWxpZEFyZ3VtZW50RXJyb3IsXG4gIENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yLFxuICBJbnZhbGlkVW5pdEVycm9yLFxuICBJbnZhbGlkRGF0ZVRpbWVFcnJvcixcbn0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5pbXBvcnQgSW52YWxpZCBmcm9tIFwiLi9pbXBsL2ludmFsaWQuanNcIjtcblxuY29uc3QgSU5WQUxJRCA9IFwiSW52YWxpZCBEYXRlVGltZVwiO1xuY29uc3QgTUFYX0RBVEUgPSA4LjY0ZTE1O1xuXG5mdW5jdGlvbiB1bnN1cHBvcnRlZFpvbmUoem9uZSkge1xuICByZXR1cm4gbmV3IEludmFsaWQoXCJ1bnN1cHBvcnRlZCB6b25lXCIsIGB0aGUgem9uZSBcIiR7em9uZS5uYW1lfVwiIGlzIG5vdCBzdXBwb3J0ZWRgKTtcbn1cblxuLy8gd2UgY2FjaGUgd2VlayBkYXRhIG9uIHRoZSBEVCBvYmplY3QgYW5kIHRoaXMgaW50ZXJtZWRpYXRlcyB0aGUgY2FjaGVcbmZ1bmN0aW9uIHBvc3NpYmx5Q2FjaGVkV2Vla0RhdGEoZHQpIHtcbiAgaWYgKGR0LndlZWtEYXRhID09PSBudWxsKSB7XG4gICAgZHQud2Vla0RhdGEgPSBncmVnb3JpYW5Ub1dlZWsoZHQuYyk7XG4gIH1cbiAgcmV0dXJuIGR0LndlZWtEYXRhO1xufVxuXG4vLyBjbG9uZSByZWFsbHkgbWVhbnMsIFwibWFrZSBhIG5ldyBvYmplY3Qgd2l0aCB0aGVzZSBtb2RpZmljYXRpb25zXCIuIGFsbCBcInNldHRlcnNcIiByZWFsbHkgdXNlIHRoaXNcbi8vIHRvIGNyZWF0ZSBhIG5ldyBvYmplY3Qgd2hpbGUgb25seSBjaGFuZ2luZyBzb21lIG9mIHRoZSBwcm9wZXJ0aWVzXG5mdW5jdGlvbiBjbG9uZShpbnN0LCBhbHRzKSB7XG4gIGNvbnN0IGN1cnJlbnQgPSB7XG4gICAgdHM6IGluc3QudHMsXG4gICAgem9uZTogaW5zdC56b25lLFxuICAgIGM6IGluc3QuYyxcbiAgICBvOiBpbnN0Lm8sXG4gICAgbG9jOiBpbnN0LmxvYyxcbiAgICBpbnZhbGlkOiBpbnN0LmludmFsaWQsXG4gIH07XG4gIHJldHVybiBuZXcgRGF0ZVRpbWUoeyAuLi5jdXJyZW50LCAuLi5hbHRzLCBvbGQ6IGN1cnJlbnQgfSk7XG59XG5cbi8vIGZpbmQgdGhlIHJpZ2h0IG9mZnNldCBhIGdpdmVuIGxvY2FsIHRpbWUuIFRoZSBvIGlucHV0IGlzIG91ciBndWVzcywgd2hpY2ggZGV0ZXJtaW5lcyB3aGljaFxuLy8gb2Zmc2V0IHdlJ2xsIHBpY2sgaW4gYW1iaWd1b3VzIGNhc2VzIChlLmcuIHRoZXJlIGFyZSB0d28gMyBBTXMgYi9jIEZhbGxiYWNrIERTVClcbmZ1bmN0aW9uIGZpeE9mZnNldChsb2NhbFRTLCBvLCB0eikge1xuICAvLyBPdXIgVVRDIHRpbWUgaXMganVzdCBhIGd1ZXNzIGJlY2F1c2Ugb3VyIG9mZnNldCBpcyBqdXN0IGEgZ3Vlc3NcbiAgbGV0IHV0Y0d1ZXNzID0gbG9jYWxUUyAtIG8gKiA2MCAqIDEwMDA7XG5cbiAgLy8gVGVzdCB3aGV0aGVyIHRoZSB6b25lIG1hdGNoZXMgdGhlIG9mZnNldCBmb3IgdGhpcyB0c1xuICBjb25zdCBvMiA9IHR6Lm9mZnNldCh1dGNHdWVzcyk7XG5cbiAgLy8gSWYgc28sIG9mZnNldCBkaWRuJ3QgY2hhbmdlIGFuZCB3ZSdyZSBkb25lXG4gIGlmIChvID09PSBvMikge1xuICAgIHJldHVybiBbdXRjR3Vlc3MsIG9dO1xuICB9XG5cbiAgLy8gSWYgbm90LCBjaGFuZ2UgdGhlIHRzIGJ5IHRoZSBkaWZmZXJlbmNlIGluIHRoZSBvZmZzZXRcbiAgdXRjR3Vlc3MgLT0gKG8yIC0gbykgKiA2MCAqIDEwMDA7XG5cbiAgLy8gSWYgdGhhdCBnaXZlcyB1cyB0aGUgbG9jYWwgdGltZSB3ZSB3YW50LCB3ZSdyZSBkb25lXG4gIGNvbnN0IG8zID0gdHoub2Zmc2V0KHV0Y0d1ZXNzKTtcbiAgaWYgKG8yID09PSBvMykge1xuICAgIHJldHVybiBbdXRjR3Vlc3MsIG8yXTtcbiAgfVxuXG4gIC8vIElmIGl0J3MgZGlmZmVyZW50LCB3ZSdyZSBpbiBhIGhvbGUgdGltZS4gVGhlIG9mZnNldCBoYXMgY2hhbmdlZCwgYnV0IHRoZSB3ZSBkb24ndCBhZGp1c3QgdGhlIHRpbWVcbiAgcmV0dXJuIFtsb2NhbFRTIC0gTWF0aC5taW4obzIsIG8zKSAqIDYwICogMTAwMCwgTWF0aC5tYXgobzIsIG8zKV07XG59XG5cbi8vIGNvbnZlcnQgYW4gZXBvY2ggdGltZXN0YW1wIGludG8gYSBjYWxlbmRhciBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gb2Zmc2V0XG5mdW5jdGlvbiB0c1RvT2JqKHRzLCBvZmZzZXQpIHtcbiAgdHMgKz0gb2Zmc2V0ICogNjAgKiAxMDAwO1xuXG4gIGNvbnN0IGQgPSBuZXcgRGF0ZSh0cyk7XG5cbiAgcmV0dXJuIHtcbiAgICB5ZWFyOiBkLmdldFVUQ0Z1bGxZZWFyKCksXG4gICAgbW9udGg6IGQuZ2V0VVRDTW9udGgoKSArIDEsXG4gICAgZGF5OiBkLmdldFVUQ0RhdGUoKSxcbiAgICBob3VyOiBkLmdldFVUQ0hvdXJzKCksXG4gICAgbWludXRlOiBkLmdldFVUQ01pbnV0ZXMoKSxcbiAgICBzZWNvbmQ6IGQuZ2V0VVRDU2Vjb25kcygpLFxuICAgIG1pbGxpc2Vjb25kOiBkLmdldFVUQ01pbGxpc2Vjb25kcygpLFxuICB9O1xufVxuXG4vLyBjb252ZXJ0IGEgY2FsZW5kYXIgb2JqZWN0IHRvIGEgZXBvY2ggdGltZXN0YW1wXG5mdW5jdGlvbiBvYmpUb1RTKG9iaiwgb2Zmc2V0LCB6b25lKSB7XG4gIHJldHVybiBmaXhPZmZzZXQob2JqVG9Mb2NhbFRTKG9iaiksIG9mZnNldCwgem9uZSk7XG59XG5cbi8vIGNyZWF0ZSBhIG5ldyBEVCBpbnN0YW5jZSBieSBhZGRpbmcgYSBkdXJhdGlvbiwgYWRqdXN0aW5nIGZvciBEU1RzXG5mdW5jdGlvbiBhZGp1c3RUaW1lKGluc3QsIGR1cikge1xuICBjb25zdCBvUHJlID0gaW5zdC5vLFxuICAgIHllYXIgPSBpbnN0LmMueWVhciArIE1hdGgudHJ1bmMoZHVyLnllYXJzKSxcbiAgICBtb250aCA9IGluc3QuYy5tb250aCArIE1hdGgudHJ1bmMoZHVyLm1vbnRocykgKyBNYXRoLnRydW5jKGR1ci5xdWFydGVycykgKiAzLFxuICAgIGMgPSB7XG4gICAgICAuLi5pbnN0LmMsXG4gICAgICB5ZWFyLFxuICAgICAgbW9udGgsXG4gICAgICBkYXk6XG4gICAgICAgIE1hdGgubWluKGluc3QuYy5kYXksIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSkgK1xuICAgICAgICBNYXRoLnRydW5jKGR1ci5kYXlzKSArXG4gICAgICAgIE1hdGgudHJ1bmMoZHVyLndlZWtzKSAqIDcsXG4gICAgfSxcbiAgICBtaWxsaXNUb0FkZCA9IER1cmF0aW9uLmZyb21PYmplY3Qoe1xuICAgICAgeWVhcnM6IGR1ci55ZWFycyAtIE1hdGgudHJ1bmMoZHVyLnllYXJzKSxcbiAgICAgIHF1YXJ0ZXJzOiBkdXIucXVhcnRlcnMgLSBNYXRoLnRydW5jKGR1ci5xdWFydGVycyksXG4gICAgICBtb250aHM6IGR1ci5tb250aHMgLSBNYXRoLnRydW5jKGR1ci5tb250aHMpLFxuICAgICAgd2Vla3M6IGR1ci53ZWVrcyAtIE1hdGgudHJ1bmMoZHVyLndlZWtzKSxcbiAgICAgIGRheXM6IGR1ci5kYXlzIC0gTWF0aC50cnVuYyhkdXIuZGF5cyksXG4gICAgICBob3VyczogZHVyLmhvdXJzLFxuICAgICAgbWludXRlczogZHVyLm1pbnV0ZXMsXG4gICAgICBzZWNvbmRzOiBkdXIuc2Vjb25kcyxcbiAgICAgIG1pbGxpc2Vjb25kczogZHVyLm1pbGxpc2Vjb25kcyxcbiAgICB9KS5hcyhcIm1pbGxpc2Vjb25kc1wiKSxcbiAgICBsb2NhbFRTID0gb2JqVG9Mb2NhbFRTKGMpO1xuXG4gIGxldCBbdHMsIG9dID0gZml4T2Zmc2V0KGxvY2FsVFMsIG9QcmUsIGluc3Quem9uZSk7XG5cbiAgaWYgKG1pbGxpc1RvQWRkICE9PSAwKSB7XG4gICAgdHMgKz0gbWlsbGlzVG9BZGQ7XG4gICAgLy8gdGhhdCBjb3VsZCBoYXZlIGNoYW5nZWQgdGhlIG9mZnNldCBieSBnb2luZyBvdmVyIGEgRFNULCBidXQgd2Ugd2FudCB0byBrZWVwIHRoZSB0cyB0aGUgc2FtZVxuICAgIG8gPSBpbnN0LnpvbmUub2Zmc2V0KHRzKTtcbiAgfVxuXG4gIHJldHVybiB7IHRzLCBvIH07XG59XG5cbi8vIGhlbHBlciB1c2VmdWwgaW4gdHVybmluZyB0aGUgcmVzdWx0cyBvZiBwYXJzaW5nIGludG8gcmVhbCBkYXRlc1xuLy8gYnkgaGFuZGxpbmcgdGhlIHpvbmUgb3B0aW9uc1xuZnVuY3Rpb24gcGFyc2VEYXRhVG9EYXRlVGltZShwYXJzZWQsIHBhcnNlZFpvbmUsIG9wdHMsIGZvcm1hdCwgdGV4dCwgc3BlY2lmaWNPZmZzZXQpIHtcbiAgY29uc3QgeyBzZXRab25lLCB6b25lIH0gPSBvcHRzO1xuICBpZiAocGFyc2VkICYmIE9iamVjdC5rZXlzKHBhcnNlZCkubGVuZ3RoICE9PSAwKSB7XG4gICAgY29uc3QgaW50ZXJwcmV0YXRpb25ab25lID0gcGFyc2VkWm9uZSB8fCB6b25lLFxuICAgICAgaW5zdCA9IERhdGVUaW1lLmZyb21PYmplY3QocGFyc2VkLCB7XG4gICAgICAgIC4uLm9wdHMsXG4gICAgICAgIHpvbmU6IGludGVycHJldGF0aW9uWm9uZSxcbiAgICAgICAgc3BlY2lmaWNPZmZzZXQsXG4gICAgICB9KTtcbiAgICByZXR1cm4gc2V0Wm9uZSA/IGluc3QgOiBpbnN0LnNldFpvbmUoem9uZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoXG4gICAgICBuZXcgSW52YWxpZChcInVucGFyc2FibGVcIiwgYHRoZSBpbnB1dCBcIiR7dGV4dH1cIiBjYW4ndCBiZSBwYXJzZWQgYXMgJHtmb3JtYXR9YClcbiAgICApO1xuICB9XG59XG5cbi8vIGlmIHlvdSB3YW50IHRvIG91dHB1dCBhIHRlY2huaWNhbCBmb3JtYXQgKGUuZy4gUkZDIDI4MjIpLCB0aGlzIGhlbHBlclxuLy8gaGVscHMgaGFuZGxlIHRoZSBkZXRhaWxzXG5mdW5jdGlvbiB0b1RlY2hGb3JtYXQoZHQsIGZvcm1hdCwgYWxsb3daID0gdHJ1ZSkge1xuICByZXR1cm4gZHQuaXNWYWxpZFxuICAgID8gRm9ybWF0dGVyLmNyZWF0ZShMb2NhbGUuY3JlYXRlKFwiZW4tVVNcIiksIHtcbiAgICAgICAgYWxsb3daLFxuICAgICAgICBmb3JjZVNpbXBsZTogdHJ1ZSxcbiAgICAgIH0pLmZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyhkdCwgZm9ybWF0KVxuICAgIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gdG9JU09EYXRlKG8sIGV4dGVuZGVkKSB7XG4gIGNvbnN0IGxvbmdGb3JtYXQgPSBvLmMueWVhciA+IDk5OTkgfHwgby5jLnllYXIgPCAwO1xuICBsZXQgYyA9IFwiXCI7XG4gIGlmIChsb25nRm9ybWF0ICYmIG8uYy55ZWFyID49IDApIGMgKz0gXCIrXCI7XG4gIGMgKz0gcGFkU3RhcnQoby5jLnllYXIsIGxvbmdGb3JtYXQgPyA2IDogNCk7XG5cbiAgaWYgKGV4dGVuZGVkKSB7XG4gICAgYyArPSBcIi1cIjtcbiAgICBjICs9IHBhZFN0YXJ0KG8uYy5tb250aCk7XG4gICAgYyArPSBcIi1cIjtcbiAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpO1xuICB9IGVsc2Uge1xuICAgIGMgKz0gcGFkU3RhcnQoby5jLm1vbnRoKTtcbiAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpO1xuICB9XG4gIHJldHVybiBjO1xufVxuXG5mdW5jdGlvbiB0b0lTT1RpbWUobywgZXh0ZW5kZWQsIHN1cHByZXNzU2Vjb25kcywgc3VwcHJlc3NNaWxsaXNlY29uZHMsIGluY2x1ZGVPZmZzZXQpIHtcbiAgbGV0IGMgPSBwYWRTdGFydChvLmMuaG91cik7XG4gIGlmIChleHRlbmRlZCkge1xuICAgIGMgKz0gXCI6XCI7XG4gICAgYyArPSBwYWRTdGFydChvLmMubWludXRlKTtcbiAgICBpZiAoby5jLnNlY29uZCAhPT0gMCB8fCAhc3VwcHJlc3NTZWNvbmRzKSB7XG4gICAgICBjICs9IFwiOlwiO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpO1xuICB9XG5cbiAgaWYgKG8uYy5zZWNvbmQgIT09IDAgfHwgIXN1cHByZXNzU2Vjb25kcykge1xuICAgIGMgKz0gcGFkU3RhcnQoby5jLnNlY29uZCk7XG5cbiAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8ICFzdXBwcmVzc01pbGxpc2Vjb25kcykge1xuICAgICAgYyArPSBcIi5cIjtcbiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1pbGxpc2Vjb25kLCAzKTtcbiAgICB9XG4gIH1cblxuICBpZiAoaW5jbHVkZU9mZnNldCkge1xuICAgIGlmIChvLmlzT2Zmc2V0Rml4ZWQgJiYgby5vZmZzZXQgPT09IDApIHtcbiAgICAgIGMgKz0gXCJaXCI7XG4gICAgfSBlbHNlIGlmIChvLm8gPCAwKSB7XG4gICAgICBjICs9IFwiLVwiO1xuICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKC1vLm8gLyA2MCkpO1xuICAgICAgYyArPSBcIjpcIjtcbiAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYygtby5vICUgNjApKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYyArPSBcIitcIjtcbiAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gLyA2MCkpO1xuICAgICAgYyArPSBcIjpcIjtcbiAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gJSA2MCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYztcbn1cblxuLy8gZGVmYXVsdHMgZm9yIHVuc3BlY2lmaWVkIHVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzXG5jb25zdCBkZWZhdWx0VW5pdFZhbHVlcyA9IHtcbiAgICBtb250aDogMSxcbiAgICBkYXk6IDEsXG4gICAgaG91cjogMCxcbiAgICBtaW51dGU6IDAsXG4gICAgc2Vjb25kOiAwLFxuICAgIG1pbGxpc2Vjb25kOiAwLFxuICB9LFxuICBkZWZhdWx0V2Vla1VuaXRWYWx1ZXMgPSB7XG4gICAgd2Vla051bWJlcjogMSxcbiAgICB3ZWVrZGF5OiAxLFxuICAgIGhvdXI6IDAsXG4gICAgbWludXRlOiAwLFxuICAgIHNlY29uZDogMCxcbiAgICBtaWxsaXNlY29uZDogMCxcbiAgfSxcbiAgZGVmYXVsdE9yZGluYWxVbml0VmFsdWVzID0ge1xuICAgIG9yZGluYWw6IDEsXG4gICAgaG91cjogMCxcbiAgICBtaW51dGU6IDAsXG4gICAgc2Vjb25kOiAwLFxuICAgIG1pbGxpc2Vjb25kOiAwLFxuICB9O1xuXG4vLyBVbml0cyBpbiB0aGUgc3VwcG9ydGVkIGNhbGVuZGFycywgc29ydGVkIGJ5IGJpZ25lc3NcbmNvbnN0IG9yZGVyZWRVbml0cyA9IFtcInllYXJcIiwgXCJtb250aFwiLCBcImRheVwiLCBcImhvdXJcIiwgXCJtaW51dGVcIiwgXCJzZWNvbmRcIiwgXCJtaWxsaXNlY29uZFwiXSxcbiAgb3JkZXJlZFdlZWtVbml0cyA9IFtcbiAgICBcIndlZWtZZWFyXCIsXG4gICAgXCJ3ZWVrTnVtYmVyXCIsXG4gICAgXCJ3ZWVrZGF5XCIsXG4gICAgXCJob3VyXCIsXG4gICAgXCJtaW51dGVcIixcbiAgICBcInNlY29uZFwiLFxuICAgIFwibWlsbGlzZWNvbmRcIixcbiAgXSxcbiAgb3JkZXJlZE9yZGluYWxVbml0cyA9IFtcInllYXJcIiwgXCJvcmRpbmFsXCIsIFwiaG91clwiLCBcIm1pbnV0ZVwiLCBcInNlY29uZFwiLCBcIm1pbGxpc2Vjb25kXCJdO1xuXG4vLyBzdGFuZGFyZGl6ZSBjYXNlIGFuZCBwbHVyYWxpdHkgaW4gdW5pdHNcbmZ1bmN0aW9uIG5vcm1hbGl6ZVVuaXQodW5pdCkge1xuICBjb25zdCBub3JtYWxpemVkID0ge1xuICAgIHllYXI6IFwieWVhclwiLFxuICAgIHllYXJzOiBcInllYXJcIixcbiAgICBtb250aDogXCJtb250aFwiLFxuICAgIG1vbnRoczogXCJtb250aFwiLFxuICAgIGRheTogXCJkYXlcIixcbiAgICBkYXlzOiBcImRheVwiLFxuICAgIGhvdXI6IFwiaG91clwiLFxuICAgIGhvdXJzOiBcImhvdXJcIixcbiAgICBtaW51dGU6IFwibWludXRlXCIsXG4gICAgbWludXRlczogXCJtaW51dGVcIixcbiAgICBxdWFydGVyOiBcInF1YXJ0ZXJcIixcbiAgICBxdWFydGVyczogXCJxdWFydGVyXCIsXG4gICAgc2Vjb25kOiBcInNlY29uZFwiLFxuICAgIHNlY29uZHM6IFwic2Vjb25kXCIsXG4gICAgbWlsbGlzZWNvbmQ6IFwibWlsbGlzZWNvbmRcIixcbiAgICBtaWxsaXNlY29uZHM6IFwibWlsbGlzZWNvbmRcIixcbiAgICB3ZWVrZGF5OiBcIndlZWtkYXlcIixcbiAgICB3ZWVrZGF5czogXCJ3ZWVrZGF5XCIsXG4gICAgd2Vla251bWJlcjogXCJ3ZWVrTnVtYmVyXCIsXG4gICAgd2Vla3NudW1iZXI6IFwid2Vla051bWJlclwiLFxuICAgIHdlZWtudW1iZXJzOiBcIndlZWtOdW1iZXJcIixcbiAgICB3ZWVreWVhcjogXCJ3ZWVrWWVhclwiLFxuICAgIHdlZWt5ZWFyczogXCJ3ZWVrWWVhclwiLFxuICAgIG9yZGluYWw6IFwib3JkaW5hbFwiLFxuICB9W3VuaXQudG9Mb3dlckNhc2UoKV07XG5cbiAgaWYgKCFub3JtYWxpemVkKSB0aHJvdyBuZXcgSW52YWxpZFVuaXRFcnJvcih1bml0KTtcblxuICByZXR1cm4gbm9ybWFsaXplZDtcbn1cblxuLy8gdGhpcyBpcyBhIGR1bWJlZCBkb3duIHZlcnNpb24gb2YgZnJvbU9iamVjdCgpIHRoYXQgcnVucyBhYm91dCA2MCUgZmFzdGVyXG4vLyBidXQgZG9lc24ndCBkbyBhbnkgdmFsaWRhdGlvbiwgbWFrZXMgYSBidW5jaCBvZiBhc3N1bXB0aW9ucyBhYm91dCB3aGF0IHVuaXRzXG4vLyBhcmUgcHJlc2VudCwgYW5kIHNvIG9uLlxuXG4vLyB0aGlzIGlzIGEgZHVtYmVkIGRvd24gdmVyc2lvbiBvZiBmcm9tT2JqZWN0KCkgdGhhdCBydW5zIGFib3V0IDYwJSBmYXN0ZXJcbi8vIGJ1dCBkb2Vzbid0IGRvIGFueSB2YWxpZGF0aW9uLCBtYWtlcyBhIGJ1bmNoIG9mIGFzc3VtcHRpb25zIGFib3V0IHdoYXQgdW5pdHNcbi8vIGFyZSBwcmVzZW50LCBhbmQgc28gb24uXG5mdW5jdGlvbiBxdWlja0RUKG9iaiwgb3B0cykge1xuICBjb25zdCB6b25lID0gbm9ybWFsaXplWm9uZShvcHRzLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSxcbiAgICBsb2MgPSBMb2NhbGUuZnJvbU9iamVjdChvcHRzKSxcbiAgICB0c05vdyA9IFNldHRpbmdzLm5vdygpO1xuXG4gIGxldCB0cywgbztcblxuICAvLyBhc3N1bWUgd2UgaGF2ZSB0aGUgaGlnaGVyLW9yZGVyIHVuaXRzXG4gIGlmICghaXNVbmRlZmluZWQob2JqLnllYXIpKSB7XG4gICAgZm9yIChjb25zdCB1IG9mIG9yZGVyZWRVbml0cykge1xuICAgICAgaWYgKGlzVW5kZWZpbmVkKG9ialt1XSkpIHtcbiAgICAgICAgb2JqW3VdID0gZGVmYXVsdFVuaXRWYWx1ZXNbdV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaW52YWxpZCA9IGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG9iaikgfHwgaGFzSW52YWxpZFRpbWVEYXRhKG9iaik7XG4gICAgaWYgKGludmFsaWQpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKGludmFsaWQpO1xuICAgIH1cblxuICAgIGNvbnN0IG9mZnNldFByb3ZpcyA9IHpvbmUub2Zmc2V0KHRzTm93KTtcbiAgICBbdHMsIG9dID0gb2JqVG9UUyhvYmosIG9mZnNldFByb3Zpcywgem9uZSk7XG4gIH0gZWxzZSB7XG4gICAgdHMgPSB0c05vdztcbiAgfVxuXG4gIHJldHVybiBuZXcgRGF0ZVRpbWUoeyB0cywgem9uZSwgbG9jLCBvIH0pO1xufVxuXG5mdW5jdGlvbiBkaWZmUmVsYXRpdmUoc3RhcnQsIGVuZCwgb3B0cykge1xuICBjb25zdCByb3VuZCA9IGlzVW5kZWZpbmVkKG9wdHMucm91bmQpID8gdHJ1ZSA6IG9wdHMucm91bmQsXG4gICAgZm9ybWF0ID0gKGMsIHVuaXQpID0+IHtcbiAgICAgIGMgPSByb3VuZFRvKGMsIHJvdW5kIHx8IG9wdHMuY2FsZW5kYXJ5ID8gMCA6IDIsIHRydWUpO1xuICAgICAgY29uc3QgZm9ybWF0dGVyID0gZW5kLmxvYy5jbG9uZShvcHRzKS5yZWxGb3JtYXR0ZXIob3B0cyk7XG4gICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdChjLCB1bml0KTtcbiAgICB9LFxuICAgIGRpZmZlciA9ICh1bml0KSA9PiB7XG4gICAgICBpZiAob3B0cy5jYWxlbmRhcnkpIHtcbiAgICAgICAgaWYgKCFlbmQuaGFzU2FtZShzdGFydCwgdW5pdCkpIHtcbiAgICAgICAgICByZXR1cm4gZW5kLnN0YXJ0T2YodW5pdCkuZGlmZihzdGFydC5zdGFydE9mKHVuaXQpLCB1bml0KS5nZXQodW5pdCk7XG4gICAgICAgIH0gZWxzZSByZXR1cm4gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBlbmQuZGlmZihzdGFydCwgdW5pdCkuZ2V0KHVuaXQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgaWYgKG9wdHMudW5pdCkge1xuICAgIHJldHVybiBmb3JtYXQoZGlmZmVyKG9wdHMudW5pdCksIG9wdHMudW5pdCk7XG4gIH1cblxuICBmb3IgKGNvbnN0IHVuaXQgb2Ygb3B0cy51bml0cykge1xuICAgIGNvbnN0IGNvdW50ID0gZGlmZmVyKHVuaXQpO1xuICAgIGlmIChNYXRoLmFicyhjb3VudCkgPj0gMSkge1xuICAgICAgcmV0dXJuIGZvcm1hdChjb3VudCwgdW5pdCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBmb3JtYXQoc3RhcnQgPiBlbmQgPyAtMCA6IDAsIG9wdHMudW5pdHNbb3B0cy51bml0cy5sZW5ndGggLSAxXSk7XG59XG5cbmZ1bmN0aW9uIGxhc3RPcHRzKGFyZ0xpc3QpIHtcbiAgbGV0IG9wdHMgPSB7fSxcbiAgICBhcmdzO1xuICBpZiAoYXJnTGlzdC5sZW5ndGggPiAwICYmIHR5cGVvZiBhcmdMaXN0W2FyZ0xpc3QubGVuZ3RoIC0gMV0gPT09IFwib2JqZWN0XCIpIHtcbiAgICBvcHRzID0gYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdO1xuICAgIGFyZ3MgPSBBcnJheS5mcm9tKGFyZ0xpc3QpLnNsaWNlKDAsIGFyZ0xpc3QubGVuZ3RoIC0gMSk7XG4gIH0gZWxzZSB7XG4gICAgYXJncyA9IEFycmF5LmZyb20oYXJnTGlzdCk7XG4gIH1cbiAgcmV0dXJuIFtvcHRzLCBhcmdzXTtcbn1cblxuLyoqXG4gKiBBIERhdGVUaW1lIGlzIGFuIGltbXV0YWJsZSBkYXRhIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgYSBzcGVjaWZpYyBkYXRlIGFuZCB0aW1lIGFuZCBhY2NvbXBhbnlpbmcgbWV0aG9kcy4gSXQgY29udGFpbnMgY2xhc3MgYW5kIGluc3RhbmNlIG1ldGhvZHMgZm9yIGNyZWF0aW5nLCBwYXJzaW5nLCBpbnRlcnJvZ2F0aW5nLCB0cmFuc2Zvcm1pbmcsIGFuZCBmb3JtYXR0aW5nIHRoZW0uXG4gKlxuICogQSBEYXRlVGltZSBjb21wcmlzZXMgb2Y6XG4gKiAqIEEgdGltZXN0YW1wLiBFYWNoIERhdGVUaW1lIGluc3RhbmNlIHJlZmVycyB0byBhIHNwZWNpZmljIG1pbGxpc2Vjb25kIG9mIHRoZSBVbml4IGVwb2NoLlxuICogKiBBIHRpbWUgem9uZS4gRWFjaCBpbnN0YW5jZSBpcyBjb25zaWRlcmVkIGluIHRoZSBjb250ZXh0IG9mIGEgc3BlY2lmaWMgem9uZSAoYnkgZGVmYXVsdCB0aGUgbG9jYWwgc3lzdGVtJ3Mgem9uZSkuXG4gKiAqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0aGF0IGVmZmVjdCBob3cgb3V0cHV0IHN0cmluZ3MgYXJlIGZvcm1hdHRlZCwgc3VjaCBhcyBgbG9jYWxlYCwgYG51bWJlcmluZ1N5c3RlbWAsIGFuZCBgb3V0cHV0Q2FsZW5kYXJgLlxuICpcbiAqIEhlcmUgaXMgYSBicmllZiBvdmVydmlldyBvZiB0aGUgbW9zdCBjb21tb25seSB1c2VkIGZ1bmN0aW9uYWxpdHkgaXQgcHJvdmlkZXM6XG4gKlxuICogKiAqKkNyZWF0aW9uKio6IFRvIGNyZWF0ZSBhIERhdGVUaW1lIGZyb20gaXRzIGNvbXBvbmVudHMsIHVzZSBvbmUgb2YgaXRzIGZhY3RvcnkgY2xhc3MgbWV0aG9kczoge0BsaW5rIERhdGVUaW1lI2xvY2FsfSwge0BsaW5rIERhdGVUaW1lI3V0Y30sIGFuZCAobW9zdCBmbGV4aWJseSkge0BsaW5rIERhdGVUaW1lI2Zyb21PYmplY3R9LiBUbyBjcmVhdGUgb25lIGZyb20gYSBzdGFuZGFyZCBzdHJpbmcgZm9ybWF0LCB1c2Uge0BsaW5rIERhdGVUaW1lI2Zyb21JU099LCB7QGxpbmsgRGF0ZVRpbWUjZnJvbUhUVFB9LCBhbmQge0BsaW5rIERhdGVUaW1lI2Zyb21SRkMyODIyfS4gVG8gY3JlYXRlIG9uZSBmcm9tIGEgY3VzdG9tIHN0cmluZyBmb3JtYXQsIHVzZSB7QGxpbmsgRGF0ZVRpbWUjZnJvbUZvcm1hdH0uIFRvIGNyZWF0ZSBvbmUgZnJvbSBhIG5hdGl2ZSBKUyBkYXRlLCB1c2Uge0BsaW5rIERhdGVUaW1lI2Zyb21KU0RhdGV9LlxuICogKiAqKkdyZWdvcmlhbiBjYWxlbmRhciBhbmQgdGltZSoqOiBUbyBleGFtaW5lIHRoZSBHcmVnb3JpYW4gcHJvcGVydGllcyBvZiBhIERhdGVUaW1lIGluZGl2aWR1YWxseSAoaS5lIGFzIG9wcG9zZWQgdG8gY29sbGVjdGl2ZWx5IHRocm91Z2gge0BsaW5rIERhdGVUaW1lI3RvT2JqZWN0fSksIHVzZSB0aGUge0BsaW5rIERhdGVUaW1lI3llYXJ9LCB7QGxpbmsgRGF0ZVRpbWUjbW9udGh9LFxuICoge0BsaW5rIERhdGVUaW1lI2RheX0sIHtAbGluayBEYXRlVGltZSNob3VyfSwge0BsaW5rIERhdGVUaW1lI21pbnV0ZX0sIHtAbGluayBEYXRlVGltZSNzZWNvbmR9LCB7QGxpbmsgRGF0ZVRpbWUjbWlsbGlzZWNvbmR9IGFjY2Vzc29ycy5cbiAqICogKipXZWVrIGNhbGVuZGFyKio6IEZvciBJU08gd2VlayBjYWxlbmRhciBhdHRyaWJ1dGVzLCBzZWUgdGhlIHtAbGluayBEYXRlVGltZSN3ZWVrWWVhcn0sIHtAbGluayBEYXRlVGltZSN3ZWVrTnVtYmVyfSwgYW5kIHtAbGluayBEYXRlVGltZSN3ZWVrZGF5fSBhY2Nlc3NvcnMuXG4gKiAqICoqQ29uZmlndXJhdGlvbioqIFNlZSB0aGUge0BsaW5rIERhdGVUaW1lI2xvY2FsZX0gYW5kIHtAbGluayBEYXRlVGltZSNudW1iZXJpbmdTeXN0ZW19IGFjY2Vzc29ycy5cbiAqICogKipUcmFuc2Zvcm1hdGlvbioqOiBUbyB0cmFuc2Zvcm0gdGhlIERhdGVUaW1lIGludG8gb3RoZXIgRGF0ZVRpbWVzLCB1c2Uge0BsaW5rIERhdGVUaW1lI3NldH0sIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0sIHtAbGluayBEYXRlVGltZSNzZXRab25lfSwge0BsaW5rIERhdGVUaW1lI3NldExvY2FsZX0sIHtAbGluayBEYXRlVGltZS5wbHVzfSwge0BsaW5rIERhdGVUaW1lI21pbnVzfSwge0BsaW5rIERhdGVUaW1lI2VuZE9mfSwge0BsaW5rIERhdGVUaW1lI3N0YXJ0T2Z9LCB7QGxpbmsgRGF0ZVRpbWUjdG9VVEN9LCBhbmQge0BsaW5rIERhdGVUaW1lI3RvTG9jYWx9LlxuICogKiAqKk91dHB1dCoqOiBUbyBjb252ZXJ0IHRoZSBEYXRlVGltZSB0byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHVzZSB0aGUge0BsaW5rIERhdGVUaW1lI3RvUmVsYXRpdmV9LCB7QGxpbmsgRGF0ZVRpbWUjdG9SZWxhdGl2ZUNhbGVuZGFyfSwge0BsaW5rIERhdGVUaW1lI3RvSlNPTn0sIHtAbGluayBEYXRlVGltZSN0b0lTT30sIHtAbGluayBEYXRlVGltZSN0b0hUVFB9LCB7QGxpbmsgRGF0ZVRpbWUjdG9PYmplY3R9LCB7QGxpbmsgRGF0ZVRpbWUjdG9SRkMyODIyfSwge0BsaW5rIERhdGVUaW1lI3RvU3RyaW5nfSwge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSwge0BsaW5rIERhdGVUaW1lI3RvRm9ybWF0fSwge0BsaW5rIERhdGVUaW1lI3RvTWlsbGlzfSBhbmQge0BsaW5rIERhdGVUaW1lI3RvSlNEYXRlfS5cbiAqXG4gKiBUaGVyZSdzIHBsZW50eSBvdGhlcnMgZG9jdW1lbnRlZCBiZWxvdy4gSW4gYWRkaXRpb24sIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN1YnRsZXIgdG9waWNzIGxpa2UgaW50ZXJuYXRpb25hbGl6YXRpb24sIHRpbWUgem9uZXMsIGFsdGVybmF0aXZlIGNhbGVuZGFycywgdmFsaWRpdHksIGFuZCBzbyBvbiwgc2VlIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0aW9uLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEYXRlVGltZSB7XG4gIC8qKlxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIGNvbnN0IHpvbmUgPSBjb25maWcuem9uZSB8fCBTZXR0aW5ncy5kZWZhdWx0Wm9uZTtcblxuICAgIGxldCBpbnZhbGlkID1cbiAgICAgIGNvbmZpZy5pbnZhbGlkIHx8XG4gICAgICAoTnVtYmVyLmlzTmFOKGNvbmZpZy50cykgPyBuZXcgSW52YWxpZChcImludmFsaWQgaW5wdXRcIikgOiBudWxsKSB8fFxuICAgICAgKCF6b25lLmlzVmFsaWQgPyB1bnN1cHBvcnRlZFpvbmUoem9uZSkgOiBudWxsKTtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLnRzID0gaXNVbmRlZmluZWQoY29uZmlnLnRzKSA/IFNldHRpbmdzLm5vdygpIDogY29uZmlnLnRzO1xuXG4gICAgbGV0IGMgPSBudWxsLFxuICAgICAgbyA9IG51bGw7XG4gICAgaWYgKCFpbnZhbGlkKSB7XG4gICAgICBjb25zdCB1bmNoYW5nZWQgPSBjb25maWcub2xkICYmIGNvbmZpZy5vbGQudHMgPT09IHRoaXMudHMgJiYgY29uZmlnLm9sZC56b25lLmVxdWFscyh6b25lKTtcblxuICAgICAgaWYgKHVuY2hhbmdlZCkge1xuICAgICAgICBbYywgb10gPSBbY29uZmlnLm9sZC5jLCBjb25maWcub2xkLm9dO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3QgPSB6b25lLm9mZnNldCh0aGlzLnRzKTtcbiAgICAgICAgYyA9IHRzVG9PYmoodGhpcy50cywgb3QpO1xuICAgICAgICBpbnZhbGlkID0gTnVtYmVyLmlzTmFOKGMueWVhcikgPyBuZXcgSW52YWxpZChcImludmFsaWQgaW5wdXRcIikgOiBudWxsO1xuICAgICAgICBjID0gaW52YWxpZCA/IG51bGwgOiBjO1xuICAgICAgICBvID0gaW52YWxpZCA/IG51bGwgOiBvdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLl96b25lID0gem9uZTtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmxvYyA9IGNvbmZpZy5sb2MgfHwgTG9jYWxlLmNyZWF0ZSgpO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuaW52YWxpZCA9IGludmFsaWQ7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy53ZWVrRGF0YSA9IG51bGw7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5jID0gYztcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLm8gPSBvO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuaXNMdXhvbkRhdGVUaW1lID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIENPTlNUUlVDVFxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmb3IgdGhlIGN1cnJlbnQgaW5zdGFudCwgaW4gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS5cbiAgICpcbiAgICogVXNlIFNldHRpbmdzIHRvIG92ZXJyaWRlIHRoZXNlIGRlZmF1bHQgdmFsdWVzIGlmIG5lZWRlZC5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oKSAvL34+IG5vdyBpbiB0aGUgSVNPIGZvcm1hdFxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBub3coKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7fSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbG9jYWwgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt5ZWFyXSAtIFRoZSBjYWxlbmRhciB5ZWFyLiBJZiBvbWl0dGVkIChhcyBpbiwgY2FsbCBgbG9jYWwoKWAgd2l0aCBubyBhcmd1bWVudHMpLCB0aGUgY3VycmVudCB0aW1lIHdpbGwgYmUgdXNlZFxuICAgKiBAcGFyYW0ge251bWJlcn0gW21vbnRoPTFdIC0gVGhlIG1vbnRoLCAxLWluZGV4ZWRcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtkYXk9MV0gLSBUaGUgZGF5IG9mIHRoZSBtb250aCwgMS1pbmRleGVkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbaG91cj0wXSAtIFRoZSBob3VyIG9mIHRoZSBkYXksIGluIDI0LWhvdXIgdGltZVxuICAgKiBAcGFyYW0ge251bWJlcn0gW21pbnV0ZT0wXSAtIFRoZSBtaW51dGUgb2YgdGhlIGhvdXIsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA1OVxuICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbWlsbGlzZWNvbmQ9MF0gLSBUaGUgbWlsbGlzZWNvbmQgb2YgdGhlIHNlY29uZCwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDk5OVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gbm93XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKHsgem9uZTogXCJBbWVyaWNhL05ld19Zb3JrXCIgfSkgICAgICAvL34+IG5vdywgaW4gVVMgZWFzdCBjb2FzdCB0aW1lXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAxLTAxVDAwOjAwOjAwXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCB7IGxvY2FsZTogXCJmclwiIH0pICAgICAvL34+IDIwMTctMDMtMTJUMDA6MDA6MDAsIHdpdGggYSBGcmVuY2ggbG9jYWxlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1LCB7IHpvbmU6IFwidXRjXCIgfSkgICAvL34+IDIwMTctMDMtMTJUMDU6MDA6MDAsIGluIFVUQ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUpICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUsIDEwKSAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NToxMFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUsIDEwLCA3NjUpICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NToxMC43NjVcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgbG9jYWwoKSB7XG4gICAgY29uc3QgW29wdHMsIGFyZ3NdID0gbGFzdE9wdHMoYXJndW1lbnRzKSxcbiAgICAgIFt5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdID0gYXJncztcbiAgICByZXR1cm4gcXVpY2tEVCh7IHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZCB9LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBpbiBVVENcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt5ZWFyXSAtIFRoZSBjYWxlbmRhciB5ZWFyLiBJZiBvbWl0dGVkIChhcyBpbiwgY2FsbCBgdXRjKClgIHdpdGggbm8gYXJndW1lbnRzKSwgdGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWRcbiAgICogQHBhcmFtIHtudW1iZXJ9IFttb250aD0xXSAtIFRoZSBtb250aCwgMS1pbmRleGVkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbZGF5PTFdIC0gVGhlIGRheSBvZiB0aGUgbW9udGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtob3VyPTBdIC0gVGhlIGhvdXIgb2YgdGhlIGRheSwgaW4gMjQtaG91ciB0aW1lXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbc2Vjb25kPTBdIC0gVGhlIHNlY29uZCBvZiB0aGUgbWludXRlLCBtZWFuaW5nIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgNTlcbiAgICogQHBhcmFtIHtudW1iZXJ9IFttaWxsaXNlY29uZD0wXSAtIFRoZSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kLCBtZWFuaW5nIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgOTk5XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMub3V0cHV0Q2FsZW5kYXJdIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gbm93XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMS0wMVQwMDowMDowMFpcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwWlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNywgMywgMTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDA6MDA6MDBaXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3LCAzLCAxMiwgNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTowMDowMFpcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNywgMywgMTIsIDUsIDQ1LCB7IGxvY2FsZTogXCJmclwiIH0pICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMFogd2l0aCBhIEZyZW5jaCBsb2NhbGVcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTApICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwWlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNywgMywgMTIsIDUsIDQ1LCAxMCwgNzY1LCB7IGxvY2FsZTogXCJmclwiIH0pIC8vfj4gMjAxNy0wMy0xMlQwNTo0NToxMC43NjVaIHdpdGggYSBGcmVuY2ggbG9jYWxlXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc3RhdGljIHV0YygpIHtcbiAgICBjb25zdCBbb3B0cywgYXJnc10gPSBsYXN0T3B0cyhhcmd1bWVudHMpLFxuICAgICAgW3llYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZF0gPSBhcmdzO1xuXG4gICAgb3B0cy56b25lID0gRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlO1xuICAgIHJldHVybiBxdWlja0RUKHsgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0sIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBKYXZhU2NyaXB0IERhdGUgb2JqZWN0LiBVc2VzIHRoZSBkZWZhdWx0IHpvbmUuXG4gICAqIEBwYXJhbSB7RGF0ZX0gZGF0ZSAtIGEgSmF2YVNjcmlwdCBEYXRlIG9iamVjdFxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50b1xuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tSlNEYXRlKGRhdGUsIG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHRzID0gaXNEYXRlKGRhdGUpID8gZGF0ZS52YWx1ZU9mKCkgOiBOYU47XG4gICAgaWYgKE51bWJlci5pc05hTih0cykpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKFwiaW52YWxpZCBpbnB1dFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCB6b25lVG9Vc2UgPSBub3JtYWxpemVab25lKG9wdGlvbnMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpO1xuICAgIGlmICghem9uZVRvVXNlLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKHVuc3VwcG9ydGVkWm9uZSh6b25lVG9Vc2UpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERhdGVUaW1lKHtcbiAgICAgIHRzOiB0cyxcbiAgICAgIHpvbmU6IHpvbmVUb1VzZSxcbiAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG1pbGxpc2Vjb25kcyAtIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSAxOTcwIFVUQ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50b1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubG9jYWxlXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tTWlsbGlzKG1pbGxpc2Vjb25kcywgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKCFpc051bWJlcihtaWxsaXNlY29uZHMpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAgIGBmcm9tTWlsbGlzIHJlcXVpcmVzIGEgbnVtZXJpY2FsIGlucHV0LCBidXQgcmVjZWl2ZWQgYSAke3R5cGVvZiBtaWxsaXNlY29uZHN9IHdpdGggdmFsdWUgJHttaWxsaXNlY29uZHN9YFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKG1pbGxpc2Vjb25kcyA8IC1NQVhfREFURSB8fCBtaWxsaXNlY29uZHMgPiBNQVhfREFURSkge1xuICAgICAgLy8gdGhpcyBpc24ndCBwZXJmZWN0IGJlY2F1c2UgYmVjYXVzZSB3ZSBjYW4gc3RpbGwgZW5kIHVwIG91dCBvZiByYW5nZSBiZWNhdXNlIG9mIGFkZGl0aW9uYWwgc2hpZnRpbmcsIGJ1dCBpdCdzIGEgc3RhcnRcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKFwiVGltZXN0YW1wIG91dCBvZiByYW5nZVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7XG4gICAgICAgIHRzOiBtaWxsaXNlY29uZHMsXG4gICAgICAgIHpvbmU6IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksXG4gICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaCAobWVhbmluZyBzaW5jZSAxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLiBVc2VzIHRoZSBkZWZhdWx0IHpvbmUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSAxOTcwIFVUQ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50b1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubG9jYWxlXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tU2Vjb25kcyhzZWNvbmRzLCBvcHRpb25zID0ge30pIHtcbiAgICBpZiAoIWlzTnVtYmVyKHNlY29uZHMpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJmcm9tU2Vjb25kcyByZXF1aXJlcyBhIG51bWVyaWNhbCBpbnB1dFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7XG4gICAgICAgIHRzOiBzZWNvbmRzICogMTAwMCxcbiAgICAgICAgem9uZTogbm9ybWFsaXplWm9uZShvcHRpb25zLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSxcbiAgICAgICAgbG9jOiBMb2NhbGUuZnJvbU9iamVjdChvcHRpb25zKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXInIGFuZCAnaG91cicgd2l0aCByZWFzb25hYmxlIGRlZmF1bHRzLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gdGhlIG9iamVjdCB0byBjcmVhdGUgdGhlIERhdGVUaW1lIGZyb21cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai55ZWFyIC0gYSB5ZWFyLCBzdWNoIGFzIDE5ODdcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5tb250aCAtIGEgbW9udGgsIDEtMTJcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5kYXkgLSBhIGRheSBvZiB0aGUgbW9udGgsIDEtMzEsIGRlcGVuZGluZyBvbiB0aGUgbW9udGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5vcmRpbmFsIC0gZGF5IG9mIHRoZSB5ZWFyLCAxLTM2NSBvciAzNjZcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrWWVhciAtIGFuIElTTyB3ZWVrIHllYXJcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrTnVtYmVyIC0gYW4gSVNPIHdlZWsgbnVtYmVyLCBiZXR3ZWVuIDEgYW5kIDUyIG9yIDUzLCBkZXBlbmRpbmcgb24gdGhlIHllYXJcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrZGF5IC0gYW4gSVNPIHdlZWtkYXksIDEtNywgd2hlcmUgMSBpcyBNb25kYXkgYW5kIDcgaXMgU3VuZGF5XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouaG91ciAtIGhvdXIgb2YgdGhlIGRheSwgMC0yM1xuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbnV0ZSAtIG1pbnV0ZSBvZiB0aGUgaG91ciwgMC01OVxuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnNlY29uZCAtIHNlY29uZCBvZiB0aGUgbWludXRlLCAwLTU5XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubWlsbGlzZWNvbmQgLSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kLCAwLTk5OVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoaXMgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGludGVycHJldCB0aGUgbnVtYmVycyBpbiB0aGUgY29udGV4dCBvZiBhIHBhcnRpY3VsYXIgem9uZS4gQ2FuIHRha2UgYW55IHZhbHVlIHRha2VuIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBzZXRab25lKClcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIsIG1vbnRoOiA1LCBkYXk6IDI1fSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wNS0yNSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIgfSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wMS0wMSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IGhvdXI6IDEwLCBtaW51dGU6IDI2LCBzZWNvbmQ6IDYgfSkgLy9+PiB0b2RheSBhdCAxMDoyNjowNlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICd1dGMnIH0pLFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICdsb2NhbCcgfSlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IGhvdXI6IDEwLCBtaW51dGU6IDI2LCBzZWNvbmQ6IDYgfSwgeyB6b25lOiAnQW1lcmljYS9OZXdfWW9yaycgfSlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHdlZWtZZWFyOiAyMDE2LCB3ZWVrTnVtYmVyOiAyLCB3ZWVrZGF5OiAzIH0pLnRvSVNPRGF0ZSgpIC8vPT4gJzIwMTYtMDEtMTMnXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc3RhdGljIGZyb21PYmplY3Qob2JqLCBvcHRzID0ge30pIHtcbiAgICBvYmogPSBvYmogfHwge307XG4gICAgY29uc3Qgem9uZVRvVXNlID0gbm9ybWFsaXplWm9uZShvcHRzLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKTtcbiAgICBpZiAoIXpvbmVUb1VzZS5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZVRvVXNlKSk7XG4gICAgfVxuXG4gICAgY29uc3QgdHNOb3cgPSBTZXR0aW5ncy5ub3coKSxcbiAgICAgIG9mZnNldFByb3ZpcyA9ICFpc1VuZGVmaW5lZChvcHRzLnNwZWNpZmljT2Zmc2V0KVxuICAgICAgICA/IG9wdHMuc3BlY2lmaWNPZmZzZXRcbiAgICAgICAgOiB6b25lVG9Vc2Uub2Zmc2V0KHRzTm93KSxcbiAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVPYmplY3Qob2JqLCBub3JtYWxpemVVbml0KSxcbiAgICAgIGNvbnRhaW5zT3JkaW5hbCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpLFxuICAgICAgY29udGFpbnNHcmVnb3JZZWFyID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQueWVhciksXG4gICAgICBjb250YWluc0dyZWdvck1EID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQubW9udGgpIHx8ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSksXG4gICAgICBjb250YWluc0dyZWdvciA9IGNvbnRhaW5zR3JlZ29yWWVhciB8fCBjb250YWluc0dyZWdvck1ELFxuICAgICAgZGVmaW5pdGVXZWVrRGVmID0gbm9ybWFsaXplZC53ZWVrWWVhciB8fCBub3JtYWxpemVkLndlZWtOdW1iZXIsXG4gICAgICBsb2MgPSBMb2NhbGUuZnJvbU9iamVjdChvcHRzKTtcblxuICAgIC8vIGNhc2VzOlxuICAgIC8vIGp1c3QgYSB3ZWVrZGF5IC0+IHRoaXMgd2VlaydzIGluc3RhbmNlIG9mIHRoYXQgd2Vla2RheSwgbm8gd29ycmllc1xuICAgIC8vIChncmVnb3JpYW4gZGF0YSBvciBvcmRpbmFsKSArICh3ZWVrWWVhciBvciB3ZWVrTnVtYmVyKSAtPiBlcnJvclxuICAgIC8vIChncmVnb3JpYW4gbW9udGggb3IgZGF5KSArIG9yZGluYWwgLT4gZXJyb3JcbiAgICAvLyBvdGhlcndpc2UganVzdCB1c2Ugd2Vla3Mgb3Igb3JkaW5hbHMgb3IgZ3JlZ29yaWFuLCBkZXBlbmRpbmcgb24gd2hhdCdzIHNwZWNpZmllZFxuXG4gICAgaWYgKChjb250YWluc0dyZWdvciB8fCBjb250YWluc09yZGluYWwpICYmIGRlZmluaXRlV2Vla0RlZikge1xuICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKFxuICAgICAgICBcIkNhbid0IG1peCB3ZWVrWWVhci93ZWVrTnVtYmVyIHVuaXRzIHdpdGggeWVhci9tb250aC9kYXkgb3Igb3JkaW5hbHNcIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGFpbnNHcmVnb3JNRCAmJiBjb250YWluc09yZGluYWwpIHtcbiAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcihcIkNhbid0IG1peCBvcmRpbmFsIGRhdGVzIHdpdGggbW9udGgvZGF5XCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZVdlZWtEYXRhID0gZGVmaW5pdGVXZWVrRGVmIHx8IChub3JtYWxpemVkLndlZWtkYXkgJiYgIWNvbnRhaW5zR3JlZ29yKTtcblxuICAgIC8vIGNvbmZpZ3VyZSBvdXJzZWx2ZXMgdG8gZGVhbCB3aXRoIGdyZWdvcmlhbiBkYXRlcyBvciB3ZWVrIHN0dWZmXG4gICAgbGV0IHVuaXRzLFxuICAgICAgZGVmYXVsdFZhbHVlcyxcbiAgICAgIG9iak5vdyA9IHRzVG9PYmoodHNOb3csIG9mZnNldFByb3Zpcyk7XG4gICAgaWYgKHVzZVdlZWtEYXRhKSB7XG4gICAgICB1bml0cyA9IG9yZGVyZWRXZWVrVW5pdHM7XG4gICAgICBkZWZhdWx0VmFsdWVzID0gZGVmYXVsdFdlZWtVbml0VmFsdWVzO1xuICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9XZWVrKG9iak5vdyk7XG4gICAgfSBlbHNlIGlmIChjb250YWluc09yZGluYWwpIHtcbiAgICAgIHVuaXRzID0gb3JkZXJlZE9yZGluYWxVbml0cztcbiAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXM7XG4gICAgICBvYmpOb3cgPSBncmVnb3JpYW5Ub09yZGluYWwob2JqTm93KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdW5pdHMgPSBvcmRlcmVkVW5pdHM7XG4gICAgICBkZWZhdWx0VmFsdWVzID0gZGVmYXVsdFVuaXRWYWx1ZXM7XG4gICAgfVxuXG4gICAgLy8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvciBtaXNzaW5nIHN0dWZmXG4gICAgbGV0IGZvdW5kRmlyc3QgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IHUgb2YgdW5pdHMpIHtcbiAgICAgIGNvbnN0IHYgPSBub3JtYWxpemVkW3VdO1xuICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2KSkge1xuICAgICAgICBmb3VuZEZpcnN0ID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoZm91bmRGaXJzdCkge1xuICAgICAgICBub3JtYWxpemVkW3VdID0gZGVmYXVsdFZhbHVlc1t1XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vcm1hbGl6ZWRbdV0gPSBvYmpOb3dbdV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gbWFrZSBzdXJlIHRoZSB2YWx1ZXMgd2UgaGF2ZSBhcmUgaW4gcmFuZ2VcbiAgICBjb25zdCBoaWdoZXJPcmRlckludmFsaWQgPSB1c2VXZWVrRGF0YVxuICAgICAgICA/IGhhc0ludmFsaWRXZWVrRGF0YShub3JtYWxpemVkKVxuICAgICAgICA6IGNvbnRhaW5zT3JkaW5hbFxuICAgICAgICA/IGhhc0ludmFsaWRPcmRpbmFsRGF0YShub3JtYWxpemVkKVxuICAgICAgICA6IGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG5vcm1hbGl6ZWQpLFxuICAgICAgaW52YWxpZCA9IGhpZ2hlck9yZGVySW52YWxpZCB8fCBoYXNJbnZhbGlkVGltZURhdGEobm9ybWFsaXplZCk7XG5cbiAgICBpZiAoaW52YWxpZCkge1xuICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoaW52YWxpZCk7XG4gICAgfVxuXG4gICAgLy8gY29tcHV0ZSB0aGUgYWN0dWFsIHRpbWVcbiAgICBjb25zdCBncmVnb3JpYW4gPSB1c2VXZWVrRGF0YVxuICAgICAgICA/IHdlZWtUb0dyZWdvcmlhbihub3JtYWxpemVkKVxuICAgICAgICA6IGNvbnRhaW5zT3JkaW5hbFxuICAgICAgICA/IG9yZGluYWxUb0dyZWdvcmlhbihub3JtYWxpemVkKVxuICAgICAgICA6IG5vcm1hbGl6ZWQsXG4gICAgICBbdHNGaW5hbCwgb2Zmc2V0RmluYWxdID0gb2JqVG9UUyhncmVnb3JpYW4sIG9mZnNldFByb3Zpcywgem9uZVRvVXNlKSxcbiAgICAgIGluc3QgPSBuZXcgRGF0ZVRpbWUoe1xuICAgICAgICB0czogdHNGaW5hbCxcbiAgICAgICAgem9uZTogem9uZVRvVXNlLFxuICAgICAgICBvOiBvZmZzZXRGaW5hbCxcbiAgICAgICAgbG9jLFxuICAgICAgfSk7XG5cbiAgICAvLyBncmVnb3JpYW4gZGF0YSArIHdlZWtkYXkgc2VydmVzIG9ubHkgdG8gdmFsaWRhdGVcbiAgICBpZiAobm9ybWFsaXplZC53ZWVrZGF5ICYmIGNvbnRhaW5zR3JlZ29yICYmIG9iai53ZWVrZGF5ICE9PSBpbnN0LndlZWtkYXkpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKFxuICAgICAgICBcIm1pc21hdGNoZWQgd2Vla2RheVwiLFxuICAgICAgICBgeW91IGNhbid0IHNwZWNpZnkgYm90aCBhIHdlZWtkYXkgb2YgJHtub3JtYWxpemVkLndlZWtkYXl9IGFuZCBhIGRhdGUgb2YgJHtpbnN0LnRvSVNPKCl9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIElTTyA4NjAxIHN0cmluZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBJU08gc3RyaW5nXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0byBhZmZlY3QgdGhlIGNyZWF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnNldFpvbmU9ZmFsc2VdIC0gb3ZlcnJpZGUgdGhlIHpvbmUgd2l0aCBhIGZpeGVkLW9mZnNldCB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgaWYgaXQgc3BlY2lmaWVzIG9uZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5udW1iZXJpbmdTeXN0ZW1dIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUlTTygnMjAxNi0wNS0yNVQwOTowODozNC4xMjMnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtMDUtMjVUMDk6MDg6MzQuMTIzKzA2OjAwJywge3NldFpvbmU6IHRydWV9KVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMycsIHt6b25lOiAndXRjJ30pXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtVzA1LTQnKVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IFt2YWxzLCBwYXJzZWRab25lXSA9IHBhcnNlSVNPRGF0ZSh0ZXh0KTtcbiAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCBcIklTTyA4NjAxXCIsIHRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYW4gUkZDIDI4MjIgc3RyaW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIFJGQyAyODIyIHN0cmluZ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0cy56b25lPSdsb2NhbCddIC0gY29udmVydCB0aGUgdGltZSB0byB0aGlzIHpvbmUuIFNpbmNlIHRoZSBvZmZzZXQgaXMgYWx3YXlzIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgdGhpcyBoYXMgbm8gZWZmZWN0IG9uIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBzdHJpbmcsIG1lcmVseSB0aGUgem9uZSB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGlzIGV4cHJlc3NlZCBpbi5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzOjEyIEdNVCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCdGcmksIDI1IE5vdiAyMDE2IDEzOjIzOjEyICswNjAwJylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzIFonKVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tUkZDMjgyMih0ZXh0LCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZVJGQzI4MjJEYXRlKHRleHQpO1xuICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsIFwiUkZDIDI4MjJcIiwgdGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBIVFRQIGhlYWRlciBkYXRlXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIEhUVFAgaGVhZGVyIGRhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGNvbnZlcnQgdGhlIHRpbWUgdG8gdGhpcyB6b25lLiBTaW5jZSBIVFRQIGRhdGVzIGFyZSBhbHdheXMgaW4gVVRDLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnNldFpvbmU9ZmFsc2VdIC0gb3ZlcnJpZGUgdGhlIHpvbmUgd2l0aCB0aGUgZml4ZWQtb2Zmc2V0IHpvbmUgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcuIEZvciBIVFRQIGRhdGVzLCB0aGlzIGlzIGFsd2F5cyBVVEMsIHNvIHRoaXMgb3B0aW9uIGlzIGVxdWl2YWxlbnQgdG8gc2V0dGluZyB0aGUgYHpvbmVgIG9wdGlvbiB0byAndXRjJywgYnV0IHRoaXMgb3B0aW9uIGlzIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHNpbWlsYXIgbWV0aG9kcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1biwgMDYgTm92IDE5OTQgMDg6NDk6MzcgR01UJylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1bmRheSwgMDYtTm92LTk0IDA4OjQ5OjM3IEdNVCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21IVFRQKCdTdW4gTm92ICA2IDA4OjQ5OjM3IDE5OTQnKVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tSFRUUCh0ZXh0LCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZUhUVFBEYXRlKHRleHQpO1xuICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsIFwiSFRUUFwiLCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIGlucHV0IHN0cmluZyBhbmQgZm9ybWF0IHN0cmluZy5cbiAgICogRGVmYXVsdHMgdG8gZW4tVVMgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZCwgcmVnYXJkbGVzcyBvZiB0aGUgc3lzdGVtJ3MgbG9jYWxlLiBGb3IgYSB0YWJsZSBvZiB0b2tlbnMgYW5kIHRoZWlyIGludGVycHJldGF0aW9ucywgc2VlIFtoZXJlXShodHRwczovL21vbWVudC5naXRodWIuaW8vbHV4b24vIy9wYXJzaW5nP2lkPXRhYmxlLW9mLXRva2VucykuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIHN0cmluZyB0byBwYXJzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCB0aGUgc3RyaW5nIGlzIGV4cGVjdGVkIHRvIGJlIGluIChzZWUgdGhlIGxpbmsgYmVsb3cgZm9yIHRoZSBmb3JtYXRzKVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0cy56b25lPSdsb2NhbCddIC0gdXNlIHRoaXMgem9uZSBpZiBubyBvZmZzZXQgaXMgc3BlY2lmaWVkIGluIHRoZSBpbnB1dCBzdHJpbmcgaXRzZWxmLiBXaWxsIGFsc28gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyB6b25lXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIGEgbG9jYWxlIHN0cmluZyB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSBEYXRlVGltZSB0byB0aGlzIGxvY2FsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgdG8gdGhpcyBudW1iZXJpbmcgc3lzdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tRm9ybWF0KHRleHQsIGZtdCwgb3B0cyA9IHt9KSB7XG4gICAgaWYgKGlzVW5kZWZpbmVkKHRleHQpIHx8IGlzVW5kZWZpbmVkKGZtdCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcImZyb21Gb3JtYXQgcmVxdWlyZXMgYW4gaW5wdXQgc3RyaW5nIGFuZCBhIGZvcm1hdFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwgfSA9IG9wdHMsXG4gICAgICBsb2NhbGVUb1VzZSA9IExvY2FsZS5mcm9tT3B0cyh7XG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgbnVtYmVyaW5nU3lzdGVtLFxuICAgICAgICBkZWZhdWx0VG9FTjogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICAgW3ZhbHMsIHBhcnNlZFpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkXSA9IHBhcnNlRnJvbVRva2Vucyhsb2NhbGVUb1VzZSwgdGV4dCwgZm10KTtcbiAgICBpZiAoaW52YWxpZCkge1xuICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoaW52YWxpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsIGBmb3JtYXQgJHtmbXR9YCwgdGV4dCwgc3BlY2lmaWNPZmZzZXQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgZnJvbUZvcm1hdCBpbnN0ZWFkXG4gICAqL1xuICBzdGF0aWMgZnJvbVN0cmluZyh0ZXh0LCBmbXQsIG9wdHMgPSB7fSkge1xuICAgIHJldHVybiBEYXRlVGltZS5mcm9tRm9ybWF0KHRleHQsIGZtdCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIFNRTCBkYXRlLCB0aW1lLCBvciBkYXRldGltZVxuICAgKiBEZWZhdWx0cyB0byBlbi1VUyBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkLCByZWdhcmRsZXNzIG9mIHRoZSBzeXN0ZW0ncyBsb2NhbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0byBhZmZlY3QgdGhlIGNyZWF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSBEYXRlVGltZSB0byB0aGlzIHpvbmVcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgaWYgaXQgc3BlY2lmaWVzIG9uZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gYSBsb2NhbGUgc3RyaW5nIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIERhdGVUaW1lIHRvIHRoaXMgbG9jYWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIHJlc3VsdGluZyBEYXRlVGltZSB0byB0aGlzIG51bWJlcmluZyBzeXN0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0JylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDInKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiswNjowMCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQuMzQyIEFtZXJpY2EvTG9zX0FuZ2VsZXMnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiBBbWVyaWNhL0xvc19BbmdlbGVzJywgeyBzZXRab25lOiB0cnVlIH0pXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQuMzQyJywgeyB6b25lOiAnQW1lcmljYS9Mb3NfQW5nZWxlcycgfSlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMDk6MTI6MzQuMzQyJylcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbVNRTCh0ZXh0LCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZVNRTCh0ZXh0KTtcbiAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCBcIlNRTFwiLCB0ZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gaW52YWxpZCBEYXRlVGltZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlYXNvbiAtIHNpbXBsZSBzdHJpbmcgb2Ygd2h5IHRoaXMgRGF0ZVRpbWUgaXMgaW52YWxpZC4gU2hvdWxkIG5vdCBjb250YWluIHBhcmFtZXRlcnMgb3IgYW55dGhpbmcgZWxzZSBkYXRhLWRlcGVuZGVudFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHtcbiAgICBpZiAoIXJlYXNvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFwibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBEYXRlVGltZSBpcyBpbnZhbGlkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7XG5cbiAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkRGF0ZVRpbWVFcnJvcihpbnZhbGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7IGludmFsaWQgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIG9iamVjdCBpcyBhIERhdGVUaW1lLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBzdGF0aWMgaXNEYXRlVGltZShvKSB7XG4gICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkRhdGVUaW1lKSB8fCBmYWxzZTtcbiAgfVxuXG4gIC8vIElORk9cblxuICAvKipcbiAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIGEgdW5pdCBzdWNoIGFzICdtaW51dGUnIG9yICdkYXknXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDcsIDQpLmdldCgnbW9udGgnKTsgLy89PiA3XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDcsIDQpLmdldCgnZGF5Jyk7IC8vPT4gNFxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBnZXQodW5pdCkge1xuICAgIHJldHVybiB0aGlzW3VuaXRdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQuIEludmFsaWQgRGF0ZVRpbWVzIG9jY3VyIHdoZW46XG4gICAqICogVGhlIERhdGVUaW1lIHdhcyBjcmVhdGVkIGZyb20gaW52YWxpZCBjYWxlbmRhciBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgMTN0aCBtb250aCBvciBGZWJydWFyeSAzMFxuICAgKiAqIFRoZSBEYXRlVGltZSB3YXMgY3JlYXRlZCBieSBhbiBvcGVyYXRpb24gb24gYW5vdGhlciBpbnZhbGlkIGRhdGVcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIERhdGVUaW1lIGlzIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIERhdGVUaW1lIGlzIHZhbGlkXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgaW52YWxpZFJlYXNvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBEYXRlVGltZSBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRGF0ZVRpbWUgaXMgdmFsaWRcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBpbnZhbGlkRXhwbGFuYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsb2NhbGUgb2YgYSBEYXRlVGltZSwgc3VjaCAnZW4tR0InLiBUaGUgbG9jYWxlIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZVxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IGxvY2FsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubG9jYWxlIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG51bWJlcmluZyBzeXN0ZW0gb2YgYSBEYXRlVGltZSwgc3VjaCAnYmVuZycuIFRoZSBudW1iZXJpbmcgc3lzdGVtIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZVxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IG51bWJlcmluZ1N5c3RlbSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG91dHB1dCBjYWxlbmRhciBvZiBhIERhdGVUaW1lLCBzdWNoICdpc2xhbWljJy4gVGhlIG91dHB1dCBjYWxlbmRhciBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRGF0ZVRpbWVcbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBvdXRwdXRDYWxlbmRhcigpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdGltZSB6b25lIGFzc29jaWF0ZWQgd2l0aCB0aGlzIERhdGVUaW1lLlxuICAgKiBAdHlwZSB7Wm9uZX1cbiAgICovXG4gIGdldCB6b25lKCkge1xuICAgIHJldHVybiB0aGlzLl96b25lO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbmFtZSBvZiB0aGUgdGltZSB6b25lLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IHpvbmVOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnpvbmUubmFtZSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB5ZWFyXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS55ZWFyIC8vPT4gMjAxN1xuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IHllYXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy55ZWFyIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcXVhcnRlclxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkucXVhcnRlciAvLz0+IDJcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBxdWFydGVyKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBNYXRoLmNlaWwodGhpcy5jLm1vbnRoIC8gMykgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBtb250aCAoMS0xMikuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5tb250aCAvLz0+IDVcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBtb250aCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1vbnRoIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGF5IG9mIHRoZSBtb250aCAoMS0zMGlzaCkuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5kYXkgLy89PiAyNVxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IGRheSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLmRheSA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGhvdXIgb2YgdGhlIGRheSAoMC0yMykuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1LCA5KS5ob3VyIC8vPT4gOVxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IGhvdXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5ob3VyIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbWludXRlIG9mIHRoZSBob3VyICgwLTU5KS5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwKS5taW51dGUgLy89PiAzMFxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IG1pbnV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1pbnV0ZSA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHNlY29uZCBvZiB0aGUgbWludXRlICgwLTU5KS5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwLCA1Mikuc2Vjb25kIC8vPT4gNTJcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBzZWNvbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5zZWNvbmQgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kICgwLTk5OSkuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1LCA5LCAzMCwgNTIsIDY1NCkubWlsbGlzZWNvbmQgLy89PiA2NTRcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBtaWxsaXNlY29uZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1pbGxpc2Vjb25kIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgd2VlayB5ZWFyXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAxMiwgMzEpLndlZWtZZWFyIC8vPT4gMjAxNVxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IHdlZWtZZWFyKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKHRoaXMpLndlZWtZZWFyIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgd2VlayBudW1iZXIgb2YgdGhlIHdlZWsgeWVhciAoMS01MmlzaCkuXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkud2Vla051bWJlciAvLz0+IDIxXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgd2Vla051bWJlcigpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrTnVtYmVyIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGF5IG9mIHRoZSB3ZWVrLlxuICAgKiAxIGlzIE1vbmRheSBhbmQgNyBpcyBTdW5kYXlcbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDExLCAzMSkud2Vla2RheSAvLz0+IDRcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCB3ZWVrZGF5KCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKHRoaXMpLndlZWtkYXkgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBvcmRpbmFsIChtZWFuaW5nIHRoZSBkYXkgb2YgdGhlIHllYXIpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5vcmRpbmFsIC8vPT4gMTQ1XG4gICAqIEB0eXBlIHtudW1iZXJ8RGF0ZVRpbWV9XG4gICAqL1xuICBnZXQgb3JkaW5hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gZ3JlZ29yaWFuVG9PcmRpbmFsKHRoaXMuYykub3JkaW5hbCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIHNob3J0IG1vbnRoIG5hbWUsIHN1Y2ggYXMgJ09jdCcuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAxMCwgMzApLm1vbnRoU2hvcnQgLy89PiBPY3RcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBtb250aFNob3J0KCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLm1vbnRocyhcInNob3J0XCIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLm1vbnRoIC0gMV0gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgbG9uZyBtb250aCBuYW1lLCBzdWNoIGFzICdPY3RvYmVyJy5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkubW9udGhMb25nIC8vPT4gT2N0b2JlclxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IG1vbnRoTG9uZygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby5tb250aHMoXCJsb25nXCIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLm1vbnRoIC0gMV0gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgc2hvcnQgd2Vla2RheSwgc3VjaCBhcyAnTW9uJy5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkud2Vla2RheVNob3J0IC8vPT4gTW9uXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgd2Vla2RheVNob3J0KCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLndlZWtkYXlzKFwic2hvcnRcIiwgeyBsb2NPYmo6IHRoaXMubG9jIH0pW3RoaXMud2Vla2RheSAtIDFdIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIGxvbmcgd2Vla2RheSwgc3VjaCBhcyAnTW9uZGF5Jy5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkud2Vla2RheUxvbmcgLy89PiBNb25kYXlcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCB3ZWVrZGF5TG9uZygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby53ZWVrZGF5cyhcImxvbmdcIiwgeyBsb2NPYmo6IHRoaXMubG9jIH0pW3RoaXMud2Vla2RheSAtIDFdIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFVUQyBvZmZzZXQgb2YgdGhpcyBEYXRlVGltZSBpbiBtaW51dGVzXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm9mZnNldCAvLz0+IC0yNDBcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkub2Zmc2V0IC8vPT4gMFxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IG9mZnNldCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gK3RoaXMubyA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHNob3J0IGh1bWFuIG5hbWUgZm9yIHRoZSB6b25lJ3MgY3VycmVudCBvZmZzZXQsIGZvciBleGFtcGxlIFwiRVNUXCIgb3IgXCJFRFRcIi5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgb2Zmc2V0TmFtZVNob3J0KCkge1xuICAgIGlmICh0aGlzLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnpvbmUub2Zmc2V0TmFtZSh0aGlzLnRzLCB7XG4gICAgICAgIGZvcm1hdDogXCJzaG9ydFwiLFxuICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxvbmcgaHVtYW4gbmFtZSBmb3IgdGhlIHpvbmUncyBjdXJyZW50IG9mZnNldCwgZm9yIGV4YW1wbGUgXCJFYXN0ZXJuIFN0YW5kYXJkIFRpbWVcIiBvciBcIkVhc3Rlcm4gRGF5bGlnaHQgVGltZVwiLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWRcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBvZmZzZXROYW1lTG9uZygpIHtcbiAgICBpZiAodGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywge1xuICAgICAgICBmb3JtYXQ6IFwibG9uZ1wiLFxuICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgd2hldGhlciB0aGlzIHpvbmUncyBvZmZzZXQgZXZlciBjaGFuZ2VzLCBhcyBpbiBhIERTVC5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNPZmZzZXRGaXhlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy56b25lLmlzVW5pdmVyc2FsIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgaW4gYSBEU1QuXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IGlzSW5EU1QoKSB7XG4gICAgaWYgKHRoaXMuaXNPZmZzZXRGaXhlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLm9mZnNldCA+IHRoaXMuc2V0KHsgbW9udGg6IDEgfSkub2Zmc2V0IHx8IHRoaXMub2Zmc2V0ID4gdGhpcy5zZXQoeyBtb250aDogNSB9KS5vZmZzZXRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIERhdGVUaW1lIGlzIGluIGEgbGVhcCB5ZWFyLCBmYWxzZSBvdGhlcndpc2VcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNikuaXNJbkxlYXBZZWFyIC8vPT4gdHJ1ZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS5pc0luTGVhcFllYXIgLy89PiBmYWxzZVxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBpc0luTGVhcFllYXIoKSB7XG4gICAgcmV0dXJuIGlzTGVhcFllYXIodGhpcy55ZWFyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGlzIERhdGVUaW1lJ3MgbW9udGhcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMikuZGF5c0luTW9udGggLy89PiAyOVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE2LCAzKS5kYXlzSW5Nb250aCAvLz0+IDMxXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgZGF5c0luTW9udGgoKSB7XG4gICAgcmV0dXJuIGRheXNJbk1vbnRoKHRoaXMueWVhciwgdGhpcy5tb250aCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRheXMgaW4gdGhpcyBEYXRlVGltZSdzIHllYXJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNikuZGF5c0luWWVhciAvLz0+IDM2NlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS5kYXlzSW5ZZWFyIC8vPT4gMzY1XG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgZGF5c0luWWVhcigpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gZGF5c0luWWVhcih0aGlzLnllYXIpIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG51bWJlciBvZiB3ZWVrcyBpbiB0aGlzIERhdGVUaW1lJ3MgeWVhclxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAwNCkud2Vla3NJbldlZWtZZWFyIC8vPT4gNTNcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxMykud2Vla3NJbldlZWtZZWFyIC8vPT4gNTJcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCB3ZWVrc0luV2Vla1llYXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHdlZWtzSW5XZWVrWWVhcih0aGlzLndlZWtZZWFyKSA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSByZXNvbHZlZCBJbnRsIG9wdGlvbnMgZm9yIHRoaXMgRGF0ZVRpbWUuXG4gICAqIFRoaXMgaXMgdXNlZnVsIGluIHVuZGVyc3RhbmRpbmcgdGhlIGJlaGF2aW9yIG9mIGZvcm1hdHRpbmcgbWV0aG9kc1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIHRoZSBzYW1lIG9wdGlvbnMgYXMgdG9Mb2NhbGVTdHJpbmdcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgcmVzb2x2ZWRMb2NhbGVPcHRpb25zKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBGb3JtYXR0ZXIuY3JlYXRlKFxuICAgICAgdGhpcy5sb2MuY2xvbmUob3B0cyksXG4gICAgICBvcHRzXG4gICAgKS5yZXNvbHZlZE9wdGlvbnModGhpcyk7XG4gICAgcmV0dXJuIHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyOiBjYWxlbmRhciB9O1xuICB9XG5cbiAgLy8gVFJBTlNGT1JNXG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byBVVEMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS5cbiAgICpcbiAgICogRXF1aXZhbGVudCB0byB7QGxpbmsgRGF0ZVRpbWUjc2V0Wm9uZX0oJ3V0YycpXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbb2Zmc2V0PTBdIC0gb3B0aW9uYWxseSwgYW4gb2Zmc2V0IGZyb20gVVRDIGluIG1pbnV0ZXNcbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzPXt9XSAtIG9wdGlvbnMgdG8gcGFzcyB0byBgc2V0Wm9uZSgpYFxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHRvVVRDKG9mZnNldCA9IDAsIG9wdHMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLnNldFpvbmUoRml4ZWRPZmZzZXRab25lLmluc3RhbmNlKG9mZnNldCksIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byB0aGUgaG9zdCdzIGxvY2FsIHpvbmUuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS5cbiAgICpcbiAgICogRXF1aXZhbGVudCB0byBgc2V0Wm9uZSgnbG9jYWwnKWBcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICB0b0xvY2FsKCkge1xuICAgIHJldHVybiB0aGlzLnNldFpvbmUoU2V0dGluZ3MuZGVmYXVsdFpvbmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byBzcGVjaWZpZWQgem9uZS4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgc2V0dGVyIGtlZXBzIHRoZSB1bmRlcmx5aW5nIHRpbWUgdGhlIHNhbWUgKGFzIGluLCB0aGUgc2FtZSB0aW1lc3RhbXApLCBidXQgdGhlIG5ldyBpbnN0YW5jZSB3aWxsIHJlcG9ydCBkaWZmZXJlbnQgbG9jYWwgdGltZXMgYW5kIGNvbnNpZGVyIERTVHMgd2hlbiBtYWtpbmcgY29tcHV0YXRpb25zLCBhcyB3aXRoIHtAbGluayBEYXRlVGltZSNwbHVzfS4gWW91IG1heSB3aXNoIHRvIHVzZSB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbH0gYW5kIHtAbGluayBEYXRlVGltZSN0b1VUQ30gd2hpY2ggcHJvdmlkZSBzaW1wbGUgY29udmVuaWVuY2Ugd3JhcHBlcnMgZm9yIGNvbW1vbmx5IHVzZWQgem9uZXMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gYSB6b25lIGlkZW50aWZpZXIuIEFzIGEgc3RyaW5nLCB0aGF0IGNhbiBiZSBhbnkgSUFOQSB6b25lIHN1cHBvcnRlZCBieSB0aGUgaG9zdCBlbnZpcm9ubWVudCwgb3IgYSBmaXhlZC1vZmZzZXQgbmFtZSBvZiB0aGUgZm9ybSAnVVRDKzMnLCBvciB0aGUgc3RyaW5ncyAnbG9jYWwnIG9yICd1dGMnLiBZb3UgbWF5IGFsc28gc3VwcGx5IGFuIGluc3RhbmNlIG9mIGEge0BsaW5rIERhdGVUaW1lI1pvbmV9IGNsYXNzLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5rZWVwTG9jYWxUaW1lPWZhbHNlXSAtIElmIHRydWUsIGFkanVzdCB0aGUgdW5kZXJseWluZyB0aW1lIHNvIHRoYXQgdGhlIGxvY2FsIHRpbWUgc3RheXMgdGhlIHNhbWUsIGJ1dCBpbiB0aGUgdGFyZ2V0IHpvbmUuIFlvdSBzaG91bGQgcmFyZWx5IG5lZWQgdGhpcy5cbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzZXRab25lKHpvbmUsIHsga2VlcExvY2FsVGltZSA9IGZhbHNlLCBrZWVwQ2FsZW5kYXJUaW1lID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgem9uZSA9IG5vcm1hbGl6ZVpvbmUoem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpO1xuICAgIGlmICh6b25lLmVxdWFscyh0aGlzLnpvbmUpKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2UgaWYgKCF6b25lLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKHVuc3VwcG9ydGVkWm9uZSh6b25lKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBuZXdUUyA9IHRoaXMudHM7XG4gICAgICBpZiAoa2VlcExvY2FsVGltZSB8fCBrZWVwQ2FsZW5kYXJUaW1lKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldEd1ZXNzID0gem9uZS5vZmZzZXQodGhpcy50cyk7XG4gICAgICAgIGNvbnN0IGFzT2JqID0gdGhpcy50b09iamVjdCgpO1xuICAgICAgICBbbmV3VFNdID0gb2JqVG9UUyhhc09iaiwgb2Zmc2V0R3Vlc3MsIHpvbmUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdHM6IG5ld1RTLCB6b25lIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoZSBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3Igb3V0cHV0Q2FsZW5kYXIuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS5cbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BlcnRpZXMgLSB0aGUgcHJvcGVydGllcyB0byBzZXRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnJlY29uZmlndXJlKHsgbG9jYWxlOiAnZW4tR0InIH0pXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgcmVjb25maWd1cmUoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7XG4gICAgY29uc3QgbG9jID0gdGhpcy5sb2MuY2xvbmUoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSk7XG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgbG9jIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhlIGxvY2FsZS4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLlxuICAgKiBKdXN0IGEgY29udmVuaWVudCBhbGlhcyBmb3IgcmVjb25maWd1cmUoeyBsb2NhbGUgfSlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnNldExvY2FsZSgnZW4tR0InKVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHNldExvY2FsZShsb2NhbGUpIHtcbiAgICByZXR1cm4gdGhpcy5yZWNvbmZpZ3VyZSh7IGxvY2FsZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoZSB2YWx1ZXMgb2Ygc3BlY2lmaWVkIHVuaXRzLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuXG4gICAqIFlvdSBjYW4gb25seSBzZXQgdW5pdHMgd2l0aCB0aGlzIG1ldGhvZDsgZm9yIFwic2V0dGluZ1wiIG1ldGFkYXRhLCBzZWUge0BsaW5rIERhdGVUaW1lI3JlY29uZmlndXJlfSBhbmQge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9LlxuICAgKiBAcGFyYW0ge09iamVjdH0gdmFsdWVzIC0gYSBtYXBwaW5nIG9mIHVuaXRzIHRvIG51bWJlcnNcbiAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAxNyB9KVxuICAgKiBAZXhhbXBsZSBkdC5zZXQoeyBob3VyOiA4LCBtaW51dGU6IDMwIH0pXG4gICAqIEBleGFtcGxlIGR0LnNldCh7IHdlZWtkYXk6IDUgfSlcbiAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAwNSwgb3JkaW5hbDogMjM0IH0pXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc2V0KHZhbHVlcykge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcblxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVPYmplY3QodmFsdWVzLCBub3JtYWxpemVVbml0KSxcbiAgICAgIHNldHRpbmdXZWVrU3R1ZmYgPVxuICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrWWVhcikgfHxcbiAgICAgICAgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQud2Vla051bWJlcikgfHxcbiAgICAgICAgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQud2Vla2RheSksXG4gICAgICBjb250YWluc09yZGluYWwgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5vcmRpbmFsKSxcbiAgICAgIGNvbnRhaW5zR3JlZ29yWWVhciA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLnllYXIpLFxuICAgICAgY29udGFpbnNHcmVnb3JNRCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm1vbnRoKSB8fCAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5kYXkpLFxuICAgICAgY29udGFpbnNHcmVnb3IgPSBjb250YWluc0dyZWdvclllYXIgfHwgY29udGFpbnNHcmVnb3JNRCxcbiAgICAgIGRlZmluaXRlV2Vla0RlZiA9IG5vcm1hbGl6ZWQud2Vla1llYXIgfHwgbm9ybWFsaXplZC53ZWVrTnVtYmVyO1xuXG4gICAgaWYgKChjb250YWluc0dyZWdvciB8fCBjb250YWluc09yZGluYWwpICYmIGRlZmluaXRlV2Vla0RlZikge1xuICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKFxuICAgICAgICBcIkNhbid0IG1peCB3ZWVrWWVhci93ZWVrTnVtYmVyIHVuaXRzIHdpdGggeWVhci9tb250aC9kYXkgb3Igb3JkaW5hbHNcIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGFpbnNHcmVnb3JNRCAmJiBjb250YWluc09yZGluYWwpIHtcbiAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcihcIkNhbid0IG1peCBvcmRpbmFsIGRhdGVzIHdpdGggbW9udGgvZGF5XCIpO1xuICAgIH1cblxuICAgIGxldCBtaXhlZDtcbiAgICBpZiAoc2V0dGluZ1dlZWtTdHVmZikge1xuICAgICAgbWl4ZWQgPSB3ZWVrVG9HcmVnb3JpYW4oeyAuLi5ncmVnb3JpYW5Ub1dlZWsodGhpcy5jKSwgLi4ubm9ybWFsaXplZCB9KTtcbiAgICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpKSB7XG4gICAgICBtaXhlZCA9IG9yZGluYWxUb0dyZWdvcmlhbih7IC4uLmdyZWdvcmlhblRvT3JkaW5hbCh0aGlzLmMpLCAuLi5ub3JtYWxpemVkIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBtaXhlZCA9IHsgLi4udGhpcy50b09iamVjdCgpLCAuLi5ub3JtYWxpemVkIH07XG5cbiAgICAgIC8vIGlmIHdlIGRpZG4ndCBzZXQgdGhlIGRheSBidXQgd2UgZW5kZWQgdXAgb24gYW4gb3ZlcmZsb3cgZGF0ZSxcbiAgICAgIC8vIHVzZSB0aGUgbGFzdCBkYXkgb2YgdGhlIHJpZ2h0IG1vbnRoXG4gICAgICBpZiAoaXNVbmRlZmluZWQobm9ybWFsaXplZC5kYXkpKSB7XG4gICAgICAgIG1peGVkLmRheSA9IE1hdGgubWluKGRheXNJbk1vbnRoKG1peGVkLnllYXIsIG1peGVkLm1vbnRoKSwgbWl4ZWQuZGF5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBbdHMsIG9dID0gb2JqVG9UUyhtaXhlZCwgdGhpcy5vLCB0aGlzLnpvbmUpO1xuICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHRzLCBvIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHBlcmlvZCBvZiB0aW1lIHRvIHRoaXMgRGF0ZVRpbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lXG4gICAqXG4gICAqIEFkZGluZyBob3VycywgbWludXRlcywgc2Vjb25kcywgb3IgbWlsbGlzZWNvbmRzIGluY3JlYXNlcyB0aGUgdGltZXN0YW1wIGJ5IHRoZSByaWdodCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLiBBZGRpbmcgZGF5cywgbW9udGhzLCBvciB5ZWFycyBzaGlmdHMgdGhlIGNhbGVuZGFyLCBhY2NvdW50aW5nIGZvciBEU1RzIGFuZCBsZWFwIHllYXJzIGFsb25nIHRoZSB3YXkuIFRodXMsIGBkdC5wbHVzKHsgaG91cnM6IDI0IH0pYCBtYXkgcmVzdWx0IGluIGEgZGlmZmVyZW50IHRpbWUgdGhhbiBgZHQucGx1cyh7IGRheXM6IDEgfSlgIGlmIHRoZXJlJ3MgYSBEU1Qgc2hpZnQgaW4gYmV0d2Vlbi5cbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gYWRkLiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKDEyMykgLy9+PiBpbiAxMjMgbWlsbGlzZWNvbmRzXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBtaW51dGVzOiAxNSB9KSAvL34+IGluIDE1IG1pbnV0ZXNcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkgLy9+PiB0aGlzIHRpbWUgdG9tb3Jyb3dcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IC0xIH0pIC8vfj4gdGhpcyB0aW1lIHllc3RlcmRheVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgaG91cnM6IDMsIG1pbnV0ZXM6IDEzIH0pIC8vfj4gaW4gMyBociwgMTMgbWluXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAzLCBtaW51dGVzOiAxMyB9KSkgLy9+PiBpbiAzIGhyLCAxMyBtaW5cbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBwbHVzKGR1cmF0aW9uKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pO1xuICAgIHJldHVybiBjbG9uZSh0aGlzLCBhZGp1c3RUaW1lKHRoaXMsIGR1cikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnRyYWN0IGEgcGVyaW9kIG9mIHRpbWUgdG8gdGhpcyBEYXRlVGltZSBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVcbiAgICogU2VlIHtAbGluayBEYXRlVGltZSNwbHVzfVxuICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBzdWJ0cmFjdC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KClcbiAgIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgbWludXMoZHVyYXRpb24pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbikubmVnYXRlKCk7XG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIGFkanVzdFRpbWUodGhpcywgZHVyKSk7XG4gIH1cblxuICAvKipcbiAgICogXCJTZXRcIiB0aGlzIERhdGVUaW1lIHRvIHRoZSBiZWdpbm5pbmcgb2YgYSB1bml0IG9mIHRpbWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gVGhlIHVuaXQgdG8gZ28gdG8gdGhlIGJlZ2lubmluZyBvZi4gQ2FuIGJlICd5ZWFyJywgJ3F1YXJ0ZXInLCAnbW9udGgnLCAnd2VlaycsICdkYXknLCAnaG91cicsICdtaW51dGUnLCAnc2Vjb25kJywgb3IgJ21pbGxpc2Vjb25kJy5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZignbW9udGgnKS50b0lTT0RhdGUoKTsgLy89PiAnMjAxNC0wMy0wMSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZigneWVhcicpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAxLTAxJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5zdGFydE9mKCd3ZWVrJykudG9JU09EYXRlKCk7IC8vPT4gJzIwMTQtMDMtMDMnLCB3ZWVrcyBhbHdheXMgc3RhcnQgb24gTW9uZGF5c1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuc3RhcnRPZignZGF5JykudG9JU09UaW1lKCk7IC8vPT4gJzAwOjAwLjAwMC0wNTowMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLnN0YXJ0T2YoJ2hvdXInKS50b0lTT1RpbWUoKTsgLy89PiAnMDU6MDA6MDAuMDAwLTA1OjAwJ1xuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXJ0T2YodW5pdCkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcbiAgICBjb25zdCBvID0ge30sXG4gICAgICBub3JtYWxpemVkVW5pdCA9IER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQodW5pdCk7XG4gICAgc3dpdGNoIChub3JtYWxpemVkVW5pdCkge1xuICAgICAgY2FzZSBcInllYXJzXCI6XG4gICAgICAgIG8ubW9udGggPSAxO1xuICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgICAgY2FzZSBcInF1YXJ0ZXJzXCI6XG4gICAgICBjYXNlIFwibW9udGhzXCI6XG4gICAgICAgIG8uZGF5ID0gMTtcbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICAgIGNhc2UgXCJ3ZWVrc1wiOlxuICAgICAgY2FzZSBcImRheXNcIjpcbiAgICAgICAgby5ob3VyID0gMDtcbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICAgIGNhc2UgXCJob3Vyc1wiOlxuICAgICAgICBvLm1pbnV0ZSA9IDA7XG4gICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgICBjYXNlIFwibWludXRlc1wiOlxuICAgICAgICBvLnNlY29uZCA9IDA7XG4gICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgICBjYXNlIFwic2Vjb25kc1wiOlxuICAgICAgICBvLm1pbGxpc2Vjb25kID0gMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwibWlsbGlzZWNvbmRzXCI6XG4gICAgICAgIGJyZWFrO1xuICAgICAgLy8gbm8gZGVmYXVsdCwgaW52YWxpZCB1bml0cyB0aHJvdyBpbiBub3JtYWxpemVVbml0KClcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09IFwid2Vla3NcIikge1xuICAgICAgby53ZWVrZGF5ID0gMTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09IFwicXVhcnRlcnNcIikge1xuICAgICAgY29uc3QgcSA9IE1hdGguY2VpbCh0aGlzLm1vbnRoIC8gMyk7XG4gICAgICBvLm1vbnRoID0gKHEgLSAxKSAqIDMgKyAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNldChvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoaXMgRGF0ZVRpbWUgdG8gdGhlIGVuZCAobWVhbmluZyB0aGUgbGFzdCBtaWxsaXNlY29uZCkgb2YgYSB1bml0IG9mIHRpbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBUaGUgdW5pdCB0byBnbyB0byB0aGUgZW5kIG9mLiBDYW4gYmUgJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLCBvciAnbWlsbGlzZWNvbmQnLlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignbW9udGgnKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTMxVDIzOjU5OjU5Ljk5OS0wNTowMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuZW5kT2YoJ3llYXInKS50b0lTTygpOyAvLz0+ICcyMDE0LTEyLTMxVDIzOjU5OjU5Ljk5OS0wNTowMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuZW5kT2YoJ3dlZWsnKS50b0lTTygpOyAvLyA9PiAnMjAxNC0wMy0wOVQyMzo1OTo1OS45OTktMDU6MDAnLCB3ZWVrcyBzdGFydCBvbiBNb25kYXlzXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5lbmRPZignZGF5JykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0wM1QyMzo1OTo1OS45OTktMDU6MDAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5lbmRPZignaG91cicpLnRvSVNPKCk7IC8vPT4gJzIwMTQtMDMtMDNUMDU6NTk6NTkuOTk5LTA1OjAwJ1xuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIGVuZE9mKHVuaXQpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkXG4gICAgICA/IHRoaXMucGx1cyh7IFt1bml0XTogMSB9KVxuICAgICAgICAgIC5zdGFydE9mKHVuaXQpXG4gICAgICAgICAgLm1pbnVzKDEpXG4gICAgICA6IHRoaXM7XG4gIH1cblxuICAvLyBPVVRQVVRcblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nLlxuICAgKiAqKllvdSBtYXkgbm90IHdhbnQgdGhpcy4qKiBTZWUge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3IgYSBtb3JlIGZsZXhpYmxlIGZvcm1hdHRpbmcgdG9vbC4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvZm9ybWF0dGluZz9pZD10YWJsZS1vZi10b2tlbnMpLlxuICAgKiBEZWZhdWx0cyB0byBlbi1VUyBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkLCByZWdhcmRsZXNzIG9mIHRoZSBzeXN0ZW0ncyBsb2NhbGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdHMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbiB0aGlzIERhdGVUaW1lXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvRm9ybWF0KCd5eXl5IExMTCBkZCcpIC8vPT4gJzIwMTcgQXByIDIyJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoJ2ZyJykudG9Gb3JtYXQoJ3l5eXkgTExMIGRkJykgLy89PiAnMjAxNyBhdnIuIDIyJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnLCB7IGxvY2FsZTogXCJmclwiIH0pIC8vPT4gJzIwMTcgYXZyLiAyMidcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Gb3JtYXQoXCJISCAnaG91cnMgYW5kJyBtbSAnbWludXRlcydcIikgLy89PiAnMjAgaG91cnMgYW5kIDU1IG1pbnV0ZXMnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvRm9ybWF0KGZtdCwgb3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZFxuICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLnJlZGVmYXVsdFRvRU4ob3B0cykpLmZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyh0aGlzLCBmbXQpXG4gICAgICA6IElOVkFMSUQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxvY2FsaXplZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoaXMgZGF0ZS4gQWNjZXB0cyB0aGUgc2FtZSBvcHRpb25zIGFzIHRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIGFuZCBhbnkgcHJlc2V0cyBkZWZpbmVkIGJ5IEx1eG9uLCBzdWNoIGFzIGBEYXRlVGltZS5EQVRFX0ZVTExgIG9yIGBEYXRlVGltZS5USU1FX1NJTVBMRWAuXG4gICAqIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZCBpcyBicm93c2VyLXNwZWNpZmljLCBidXQgaW4gZ2VuZXJhbCBpdCB3aWxsIHJldHVybiBhbiBhcHByb3ByaWF0ZSByZXByZXNlbnRhdGlvblxuICAgKiBvZiB0aGUgRGF0ZVRpbWUgaW4gdGhlIGFzc2lnbmVkIGxvY2FsZS5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXRcbiAgICogQHBhcmFtIGZvcm1hdE9wdHMge09iamVjdH0gLSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIG9wdGlvbnMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdHMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbiB0aGlzIERhdGVUaW1lXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKCk7IC8vPT4gNC8yMC8yMDE3XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgnZW4tZ2InKS50b0xvY2FsZVN0cmluZygpOyAvLz0+ICcyMC8wNC8yMDE3J1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IGxvY2FsZTogJ2VuLWdiJyB9KTsgLy89PiAnMjAvMDQvMjAxNydcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuREFURV9GVUxMKTsgLy89PiAnQXByaWwgMjAsIDIwMTcnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLlRJTUVfU0lNUExFKTsgLy89PiAnMTE6MzIgQU0nXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVUSU1FX1NIT1JUKTsgLy89PiAnNC8yMC8yMDE3LCAxMTozMiBBTSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoeyB3ZWVrZGF5OiAnbG9uZycsIG1vbnRoOiAnbG9uZycsIGRheTogJzItZGlnaXQnIH0pOyAvLz0+ICdUaHVyc2RheSwgQXByaWwgMjAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKHsgd2Vla2RheTogJ3Nob3J0JywgbW9udGg6ICdzaG9ydCcsIGRheTogJzItZGlnaXQnLCBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnIH0pOyAvLz0+ICdUaHUsIEFwciAyMCwgMTE6MjcgQU0nXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKHsgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JywgaG91ckN5Y2xlOiAnaDIzJyB9KTsgLy89PiAnMTE6MzInXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvTG9jYWxlU3RyaW5nKGZvcm1hdE9wdHMgPSBGb3JtYXRzLkRBVEVfU0hPUlQsIG9wdHMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRcbiAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZSh0aGlzLmxvYy5jbG9uZShvcHRzKSwgZm9ybWF0T3B0cykuZm9ybWF0RGF0ZVRpbWUodGhpcylcbiAgICAgIDogSU5WQUxJRDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGZvcm1hdCBcInBhcnRzXCIsIG1lYW5pbmcgaW5kaXZpZHVhbCB0b2tlbnMgYWxvbmcgd2l0aCBtZXRhZGF0YS4gVGhpcyBpcyBhbGxvd3MgY2FsbGVycyB0byBwb3N0LXByb2Nlc3MgaW5kaXZpZHVhbCBzZWN0aW9ucyBvZiB0aGUgZm9ybWF0dGVkIG91dHB1dC5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQvZm9ybWF0VG9QYXJ0c1xuICAgKiBAcGFyYW0gb3B0cyB7T2JqZWN0fSAtIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3Igb3B0aW9ucywgc2FtZSBhcyBgdG9Mb2NhbGVTdHJpbmdgLlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVBhcnRzKCk7IC8vPT4gW1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ2RheScsIHZhbHVlOiAnMjUnIH0sXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnbGl0ZXJhbCcsIHZhbHVlOiAnLycgfSxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdtb250aCcsIHZhbHVlOiAnMDUnIH0sXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnbGl0ZXJhbCcsIHZhbHVlOiAnLycgfSxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICd5ZWFyJywgdmFsdWU6ICcxOTgyJyB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+IF1cbiAgICovXG4gIHRvTG9jYWxlUGFydHMob3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZFxuICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLmNsb25lKG9wdHMpLCBvcHRzKS5mb3JtYXREYXRlVGltZVBhcnRzKHRoaXMpXG4gICAgICA6IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDBcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDBcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDE5ODMsIDUsIDI1KS50b0lTTygpIC8vPT4gJzE5ODItMDUtMjVUMDA6MDA6MDAuMDAwWidcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oKSAvLz0+ICcyMDE3LTA0LTIyVDIwOjQ3OjA1LjMzNS0wNDowMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE3LTA0LTIyVDIwOjQ3OjA1LjMzNSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oeyBmb3JtYXQ6ICdiYXNpYycgfSkgLy89PiAnMjAxNzA0MjJUMjA0NzA1LjMzNS0wNDAwJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0lTTyh7XG4gICAgZm9ybWF0ID0gXCJleHRlbmRlZFwiLFxuICAgIHN1cHByZXNzU2Vjb25kcyA9IGZhbHNlLFxuICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzID0gZmFsc2UsXG4gICAgaW5jbHVkZU9mZnNldCA9IHRydWUsXG4gIH0gPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBleHQgPSBmb3JtYXQgPT09IFwiZXh0ZW5kZWRcIjtcblxuICAgIGxldCBjID0gdG9JU09EYXRlKHRoaXMsIGV4dCk7XG4gICAgYyArPSBcIlRcIjtcbiAgICBjICs9IHRvSVNPVGltZSh0aGlzLCBleHQsIHN1cHByZXNzU2Vjb25kcywgc3VwcHJlc3NNaWxsaXNlY29uZHMsIGluY2x1ZGVPZmZzZXQpO1xuICAgIHJldHVybiBjO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lJ3MgZGF0ZSBjb21wb25lbnRcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBjaG9vc2UgYmV0d2VlbiB0aGUgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MiwgNSwgMjUpLnRvSVNPRGF0ZSgpIC8vPT4gJzE5ODItMDUtMjUnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09EYXRlKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzE5ODIwNTI1J1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0lTT0RhdGUoeyBmb3JtYXQgPSBcImV4dGVuZGVkXCIgfSA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0b0lTT0RhdGUodGhpcywgZm9ybWF0ID09PSBcImV4dGVuZGVkXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lJ3Mgd2VlayBkYXRlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09XZWVrRGF0ZSgpIC8vPT4gJzE5ODItVzIxLTInXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSVNPV2Vla0RhdGUoKSB7XG4gICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCBcImtra2stJ1cnV1ctY1wiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIHRpbWUgY29tcG9uZW50XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDBcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDBcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJ1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVQcmVmaXg9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgYFRgIHByZWZpeFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCB9KS50b0lTT1RpbWUoKSAvLz0+ICcwNzozNDoxOS4zNjFaJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0LCBzZWNvbmRzOiAwLCBtaWxsaXNlY29uZHM6IDAgfSkudG9JU09UaW1lKHsgc3VwcHJlc3NTZWNvbmRzOiB0cnVlIH0pIC8vPT4gJzA3OjM0WidcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCB9KS50b0lTT1RpbWUoeyBmb3JtYXQ6ICdiYXNpYycgfSkgLy89PiAnMDczNDE5LjM2MVonXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQgfSkudG9JU09UaW1lKHsgaW5jbHVkZVByZWZpeDogdHJ1ZSB9KSAvLz0+ICdUMDc6MzQ6MTkuMzYxWidcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU09UaW1lKHtcbiAgICBzdXBwcmVzc01pbGxpc2Vjb25kcyA9IGZhbHNlLFxuICAgIHN1cHByZXNzU2Vjb25kcyA9IGZhbHNlLFxuICAgIGluY2x1ZGVPZmZzZXQgPSB0cnVlLFxuICAgIGluY2x1ZGVQcmVmaXggPSBmYWxzZSxcbiAgICBmb3JtYXQgPSBcImV4dGVuZGVkXCIsXG4gIH0gPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgYyA9IGluY2x1ZGVQcmVmaXggPyBcIlRcIiA6IFwiXCI7XG4gICAgcmV0dXJuIChcbiAgICAgIGMgK1xuICAgICAgdG9JU09UaW1lKHRoaXMsIGZvcm1hdCA9PT0gXCJleHRlbmRlZFwiLCBzdXBwcmVzc1NlY29uZHMsIHN1cHByZXNzTWlsbGlzZWNvbmRzLCBpbmNsdWRlT2Zmc2V0KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBSRkMgMjgyMi1jb21wYXRpYmxlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9SRkMyODIyKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCArMDAwMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvUkZDMjgyMigpIC8vPT4gJ1N1biwgMTMgSnVsIDIwMTQgMDA6MDA6MDAgLTA0MDAnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvUkZDMjgyMigpIHtcbiAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMsIFwiRUVFLCBkZCBMTEwgeXl5eSBISDptbTpzcyBaWlpcIiwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIEhUVFAgaGVhZGVycy4gVGhlIG91dHB1dCBpcyBhbHdheXMgZXhwcmVzc2VkIGluIEdNVC5cbiAgICogU3BlY2lmaWNhbGx5LCB0aGUgc3RyaW5nIGNvbmZvcm1zIHRvIFJGQyAxMTIzLlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzMuaHRtbCNzZWMzLjMuMVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvSFRUUCgpIC8vPT4gJ1N1biwgMTMgSnVsIDIwMTQgMDA6MDA6MDAgR01UJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMsIDE5KS50b0hUVFAoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDE5OjAwOjAwIEdNVCdcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9IVFRQKCkge1xuICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcy50b1VUQygpLCBcIkVFRSwgZGQgTExMIHl5eXkgSEg6bW06c3MgJ0dNVCdcIik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIERhdGVcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b1NRTERhdGUoKSAvLz0+ICcyMDE0LTA3LTEzJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b1NRTERhdGUoKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdG9JU09EYXRlKHRoaXMsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIFNRTCBUaW1lXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVab25lPWZhbHNlXSAtIGluY2x1ZGUgdGhlIHpvbmUsIHN1Y2ggYXMgJ0FtZXJpY2EvTmV3X1lvcmsnLiBPdmVycmlkZXMgaW5jbHVkZU9mZnNldC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS50b1NRTCgpIC8vPT4gJzA1OjE1OjE2LjM0NSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9TUUwoKSAvLz0+ICcwNToxNToxNi4zNDUgLTA0OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b1NRTCh7IGluY2x1ZGVPZmZzZXQ6IGZhbHNlIH0pIC8vPT4gJzA1OjE1OjE2LjM0NSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9TUUwoeyBpbmNsdWRlWm9uZTogZmFsc2UgfSkgLy89PiAnMDU6MTU6MTYuMzQ1IEFtZXJpY2EvTmV3X1lvcmsnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvU1FMVGltZSh7IGluY2x1ZGVPZmZzZXQgPSB0cnVlLCBpbmNsdWRlWm9uZSA9IGZhbHNlIH0gPSB7fSkge1xuICAgIGxldCBmbXQgPSBcIkhIOm1tOnNzLlNTU1wiO1xuXG4gICAgaWYgKGluY2x1ZGVab25lIHx8IGluY2x1ZGVPZmZzZXQpIHtcbiAgICAgIGZtdCArPSBcIiBcIjtcbiAgICAgIGlmIChpbmNsdWRlWm9uZSkge1xuICAgICAgICBmbXQgKz0gXCJ6XCI7XG4gICAgICB9IGVsc2UgaWYgKGluY2x1ZGVPZmZzZXQpIHtcbiAgICAgICAgZm10ICs9IFwiWlpcIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMsIGZtdCwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVab25lPWZhbHNlXSAtIGluY2x1ZGUgdGhlIHpvbmUsIHN1Y2ggYXMgJ0FtZXJpY2EvTmV3X1lvcmsnLiBPdmVycmlkZXMgaW5jbHVkZU9mZnNldC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvU1FMKCkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAgWidcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvU1FMKCkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAgLTA0OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvU1FMKHsgaW5jbHVkZVpvbmU6IHRydWUgfSkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAgQW1lcmljYS9OZXdfWW9yaydcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9TUUwob3B0cyA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0aGlzLnRvU1FMRGF0ZSgpfSAke3RoaXMudG9TUUxUaW1lKG9wdHMpfWA7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciBkZWJ1Z2dpbmdcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudG9JU08oKSA6IElOVkFMSUQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZXBvY2ggbWlsbGlzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuIEFsaWFzIG9mIHtAbGluayBEYXRlVGltZSN0b01pbGxpc31cbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgdmFsdWVPZigpIHtcbiAgICByZXR1cm4gdGhpcy50b01pbGxpcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGVwb2NoIG1pbGxpc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICB0b01pbGxpcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy50cyA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIHRvU2Vjb25kcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy50cyAvIDEwMDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSlNPTi5cbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLnRvSVNPKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIEJTT04gc2VyaWFsaXphYmxlIGVxdWl2YWxlbnQgdG8gdGhpcyBEYXRlVGltZS5cbiAgICogQHJldHVybiB7RGF0ZX1cbiAgICovXG4gIHRvQlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy50b0pTRGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHRoaXMgRGF0ZVRpbWUncyB5ZWFyLCBtb250aCwgZGF5LCBhbmQgc28gb24uXG4gICAqIEBwYXJhbSBvcHRzIC0gb3B0aW9ucyBmb3IgZ2VuZXJhdGluZyB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZUNvbmZpZz1mYWxzZV0gLSBpbmNsdWRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidXRlcyBpbiB0aGUgb3V0cHV0XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvT2JqZWN0KCkgLy89PiB7IHllYXI6IDIwMTcsIG1vbnRoOiA0LCBkYXk6IDIyLCBob3VyOiAyMCwgbWludXRlOiA0OSwgc2Vjb25kOiA0MiwgbWlsbGlzZWNvbmQ6IDI2OCB9XG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIHRvT2JqZWN0KG9wdHMgPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4ge307XG5cbiAgICBjb25zdCBiYXNlID0geyAuLi50aGlzLmMgfTtcblxuICAgIGlmIChvcHRzLmluY2x1ZGVDb25maWcpIHtcbiAgICAgIGJhc2Uub3V0cHV0Q2FsZW5kYXIgPSB0aGlzLm91dHB1dENhbGVuZGFyO1xuICAgICAgYmFzZS5udW1iZXJpbmdTeXN0ZW0gPSB0aGlzLmxvYy5udW1iZXJpbmdTeXN0ZW07XG4gICAgICBiYXNlLmxvY2FsZSA9IHRoaXMubG9jLmxvY2FsZTtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgRGF0ZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuXG4gICAqIEByZXR1cm4ge0RhdGV9XG4gICAqL1xuICB0b0pTRGF0ZSgpIHtcbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy5pc1ZhbGlkID8gdGhpcy50cyA6IE5hTik7XG4gIH1cblxuICAvLyBDT01QQVJFXG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBEYXRlVGltZXMgYXMgYSBEdXJhdGlvbi5cbiAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXJEYXRlVGltZSAtIHRoZSBEYXRlVGltZSB0byBjb21wYXJlIHRoaXMgb25lIHRvXG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIGFycmF5IG9mIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvbi5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlXG4gICAqIEBleGFtcGxlXG4gICAqIHZhciBpMSA9IERhdGVUaW1lLmZyb21JU08oJzE5ODItMDUtMjVUMDk6NDUnKSxcbiAgICogICAgIGkyID0gRGF0ZVRpbWUuZnJvbUlTTygnMTk4My0xMC0xNFQxMDozMCcpO1xuICAgKiBpMi5kaWZmKGkxKS50b09iamVjdCgpIC8vPT4geyBtaWxsaXNlY29uZHM6IDQzODA3NTAwMDAwIH1cbiAgICogaTIuZGlmZihpMSwgJ2hvdXJzJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDEyMTY4Ljc1IH1cbiAgICogaTIuZGlmZihpMSwgWydtb250aHMnLCAnZGF5cyddKS50b09iamVjdCgpIC8vPT4geyBtb250aHM6IDE2LCBkYXlzOiAxOS4wMzEyNSB9XG4gICAqIGkyLmRpZmYoaTEsIFsnbW9udGhzJywgJ2RheXMnLCAnaG91cnMnXSkudG9PYmplY3QoKSAvLz0+IHsgbW9udGhzOiAxNiwgZGF5czogMTksIGhvdXJzOiAwLjc1IH1cbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBkaWZmKG90aGVyRGF0ZVRpbWUsIHVuaXQgPSBcIm1pbGxpc2Vjb25kc1wiLCBvcHRzID0ge30pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhb3RoZXJEYXRlVGltZS5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gRHVyYXRpb24uaW52YWxpZChcImNyZWF0ZWQgYnkgZGlmZmluZyBhbiBpbnZhbGlkIERhdGVUaW1lXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGR1ck9wdHMgPSB7IGxvY2FsZTogdGhpcy5sb2NhbGUsIG51bWJlcmluZ1N5c3RlbTogdGhpcy5udW1iZXJpbmdTeXN0ZW0sIC4uLm9wdHMgfTtcblxuICAgIGNvbnN0IHVuaXRzID0gbWF5YmVBcnJheSh1bml0KS5tYXAoRHVyYXRpb24ubm9ybWFsaXplVW5pdCksXG4gICAgICBvdGhlcklzTGF0ZXIgPSBvdGhlckRhdGVUaW1lLnZhbHVlT2YoKSA+IHRoaXMudmFsdWVPZigpLFxuICAgICAgZWFybGllciA9IG90aGVySXNMYXRlciA/IHRoaXMgOiBvdGhlckRhdGVUaW1lLFxuICAgICAgbGF0ZXIgPSBvdGhlcklzTGF0ZXIgPyBvdGhlckRhdGVUaW1lIDogdGhpcyxcbiAgICAgIGRpZmZlZCA9IGRpZmYoZWFybGllciwgbGF0ZXIsIHVuaXRzLCBkdXJPcHRzKTtcblxuICAgIHJldHVybiBvdGhlcklzTGF0ZXIgPyBkaWZmZWQubmVnYXRlKCkgOiBkaWZmZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBEYXRlVGltZSBhbmQgcmlnaHQgbm93LlxuICAgKiBTZWUge0BsaW5rIERhdGVUaW1lI2RpZmZ9XG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIHVuaXRzIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvblxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdGhhdCBhZmZlY3QgdGhlIGNyZWF0aW9uIG9mIHRoZSBEdXJhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2VcbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBkaWZmTm93KHVuaXQgPSBcIm1pbGxpc2Vjb25kc1wiLCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5kaWZmKERhdGVUaW1lLm5vdygpLCB1bml0LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgc3Bhbm5pbmcgYmV0d2VlbiB0aGlzIERhdGVUaW1lIGFuZCBhbm90aGVyIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyRGF0ZVRpbWUgLSB0aGUgb3RoZXIgZW5kIHBvaW50IG9mIHRoZSBJbnRlcnZhbFxuICAgKiBAcmV0dXJuIHtJbnRlcnZhbH1cbiAgICovXG4gIHVudGlsKG90aGVyRGF0ZVRpbWUpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyh0aGlzLCBvdGhlckRhdGVUaW1lKSA6IHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBEYXRlVGltZSBpcyBpbiB0aGUgc2FtZSB1bml0IG9mIHRpbWUgYXMgYW5vdGhlciBEYXRlVGltZS5cbiAgICogSGlnaGVyLW9yZGVyIHVuaXRzIG11c3QgYWxzbyBiZSBpZGVudGljYWwgZm9yIHRoaXMgZnVuY3Rpb24gdG8gcmV0dXJuIGB0cnVlYC5cbiAgICogTm90ZSB0aGF0IHRpbWUgem9uZXMgYXJlICoqaWdub3JlZCoqIGluIHRoaXMgY29tcGFyaXNvbiwgd2hpY2ggY29tcGFyZXMgdGhlICoqbG9jYWwqKiBjYWxlbmRhciB0aW1lLiBVc2Uge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9IHRvIGNvbnZlcnQgb25lIG9mIHRoZSBkYXRlcyBpZiBuZWVkZWQuXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyRGF0ZVRpbWUgLSB0aGUgb3RoZXIgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNoZWNrIHNhbWVuZXNzIG9uXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLmhhc1NhbWUob3RoZXJEVCwgJ2RheScpOyAvL34+IHRydWUgaWYgb3RoZXJEVCBpcyBpbiB0aGUgc2FtZSBjdXJyZW50IGNhbGVuZGFyIGRheVxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaGFzU2FtZShvdGhlckRhdGVUaW1lLCB1bml0KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IGlucHV0TXMgPSBvdGhlckRhdGVUaW1lLnZhbHVlT2YoKTtcbiAgICBjb25zdCBhZGp1c3RlZFRvWm9uZSA9IHRoaXMuc2V0Wm9uZShvdGhlckRhdGVUaW1lLnpvbmUsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KTtcbiAgICByZXR1cm4gYWRqdXN0ZWRUb1pvbmUuc3RhcnRPZih1bml0KSA8PSBpbnB1dE1zICYmIGlucHV0TXMgPD0gYWRqdXN0ZWRUb1pvbmUuZW5kT2YodW5pdCk7XG4gIH1cblxuICAvKipcbiAgICogRXF1YWxpdHkgY2hlY2tcbiAgICogVHdvIERhdGVUaW1lcyBhcmUgZXF1YWwgaWZmIHRoZXkgcmVwcmVzZW50IHRoZSBzYW1lIG1pbGxpc2Vjb25kLCBoYXZlIHRoZSBzYW1lIHpvbmUgYW5kIGxvY2F0aW9uLCBhbmQgYXJlIGJvdGggdmFsaWQuXG4gICAqIFRvIGNvbXBhcmUganVzdCB0aGUgbWlsbGlzZWNvbmQgdmFsdWVzLCB1c2UgYCtkdDEgPT09ICtkdDJgLlxuICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlciAtIHRoZSBvdGhlciBEYXRlVGltZVxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgZXF1YWxzKG90aGVyKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaXNWYWxpZCAmJlxuICAgICAgb3RoZXIuaXNWYWxpZCAmJlxuICAgICAgdGhpcy52YWx1ZU9mKCkgPT09IG90aGVyLnZhbHVlT2YoKSAmJlxuICAgICAgdGhpcy56b25lLmVxdWFscyhvdGhlci56b25lKSAmJlxuICAgICAgdGhpcy5sb2MuZXF1YWxzKG90aGVyLmxvYylcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSB0aGlzIHRpbWUgcmVsYXRpdmUgdG8gbm93LCBzdWNoIGFzIFwiaW4gdHdvIGRheXNcIi4gQ2FuIG9ubHkgaW50ZXJuYXRpb25hbGl6ZSBpZiB5b3VyXG4gICAqIHBsYXRmb3JtIHN1cHBvcnRzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LiBSb3VuZHMgZG93biBieSBkZWZhdWx0LlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIG9wdGlvbnMgdGhhdCBhZmZlY3QgdGhlIG91dHB1dFxuICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBbb3B0aW9ucy5iYXNlPURhdGVUaW1lLm5vdygpXSAtIHRoZSBEYXRlVGltZSB0byB1c2UgYXMgdGhlIGJhc2lzIHRvIHdoaWNoIHRoaXMgdGltZSBpcyBjb21wYXJlZC4gRGVmYXVsdHMgdG8gbm93LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuc3R5bGU9XCJsb25nXCJdIC0gdGhlIHN0eWxlIG9mIHVuaXRzLCBtdXN0IGJlIFwibG9uZ1wiLCBcInNob3J0XCIsIG9yIFwibmFycm93XCJcbiAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IG9wdGlvbnMudW5pdCAtIHVzZSBhIHNwZWNpZmljIHVuaXQgb3IgYXJyYXkgb2YgdW5pdHM7IGlmIG9taXR0ZWQsIG9yIGFuIGFycmF5LCB0aGUgbWV0aG9kIHdpbGwgcGljayB0aGUgYmVzdCB1bml0LiBVc2UgYW4gYXJyYXkgb3Igb25lIG9mIFwieWVhcnNcIiwgXCJxdWFydGVyc1wiLCBcIm1vbnRoc1wiLCBcIndlZWtzXCIsIFwiZGF5c1wiLCBcImhvdXJzXCIsIFwibWludXRlc1wiLCBvciBcInNlY29uZHNcIlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnJvdW5kPXRydWVdIC0gd2hldGhlciB0byByb3VuZCB0aGUgbnVtYmVycyBpbiB0aGUgb3V0cHV0LlxuICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMucGFkZGluZz0wXSAtIHBhZGRpbmcgaW4gbWlsbGlzZWNvbmRzLiBUaGlzIGFsbG93cyB5b3UgdG8gcm91bmQgdXAgdGhlIHJlc3VsdCBpZiBpdCBmaXRzIGluc2lkZSB0aGUgdGhyZXNob2xkLiBEb24ndCB1c2UgaW4gY29tYmluYXRpb24gd2l0aCB7cm91bmQ6IGZhbHNlfSBiZWNhdXNlIHRoZSBkZWNpbWFsIG91dHB1dCB3aWxsIGluY2x1ZGUgdGhlIHBhZGRpbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmxvY2FsZSAtIG92ZXJyaWRlIHRoZSBsb2NhbGUgb2YgdGhpcyBEYXRlVGltZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSBvdmVycmlkZSB0aGUgbnVtYmVyaW5nU3lzdGVtIG9mIHRoaXMgRGF0ZVRpbWUuIFRoZSBJbnRsIHN5c3RlbSBtYXkgY2hvb3NlIG5vdCB0byBob25vciB0aGlzXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmUoKSAvLz0+IFwiaW4gMSBkYXlcIlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoXCJlc1wiKS50b1JlbGF0aXZlKHsgZGF5czogMSB9KSAvLz0+IFwiZGVudHJvIGRlIDEgZFx1MDBFRGFcIlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlKHsgbG9jYWxlOiBcImZyXCIgfSkgLy89PiBcImRhbnMgMjMgaGV1cmVzXCJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkubWludXMoeyBkYXlzOiAyIH0pLnRvUmVsYXRpdmUoKSAvLz0+IFwiMiBkYXlzIGFnb1wiXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKHsgdW5pdDogXCJob3Vyc1wiIH0pIC8vPT4gXCI0OCBob3VycyBhZ29cIlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGhvdXJzOiAzNiB9KS50b1JlbGF0aXZlKHsgcm91bmQ6IGZhbHNlIH0pIC8vPT4gXCIxLjUgZGF5cyBhZ29cIlxuICAgKi9cbiAgdG9SZWxhdGl2ZShvcHRpb25zID0ge30pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgYmFzZSA9IG9wdGlvbnMuYmFzZSB8fCBEYXRlVGltZS5mcm9tT2JqZWN0KHt9LCB7IHpvbmU6IHRoaXMuem9uZSB9KSxcbiAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcgPyAodGhpcyA8IGJhc2UgPyAtb3B0aW9ucy5wYWRkaW5nIDogb3B0aW9ucy5wYWRkaW5nKSA6IDA7XG4gICAgbGV0IHVuaXRzID0gW1wieWVhcnNcIiwgXCJtb250aHNcIiwgXCJkYXlzXCIsIFwiaG91cnNcIiwgXCJtaW51dGVzXCIsIFwic2Vjb25kc1wiXTtcbiAgICBsZXQgdW5pdCA9IG9wdGlvbnMudW5pdDtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLnVuaXQpKSB7XG4gICAgICB1bml0cyA9IG9wdGlvbnMudW5pdDtcbiAgICAgIHVuaXQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBkaWZmUmVsYXRpdmUoYmFzZSwgdGhpcy5wbHVzKHBhZGRpbmcpLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbnVtZXJpYzogXCJhbHdheXNcIixcbiAgICAgIHVuaXRzLFxuICAgICAgdW5pdCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgZGF0ZSByZWxhdGl2ZSB0byB0b2RheSwgc3VjaCBhcyBcInllc3RlcmRheVwiIG9yIFwibmV4dCBtb250aFwiLlxuICAgKiBPbmx5IGludGVybmF0aW9uYWxpemVzIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnRzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIG9wdGlvbnMgdGhhdCBhZmZlY3QgdGhlIG91dHB1dFxuICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBbb3B0aW9ucy5iYXNlPURhdGVUaW1lLm5vdygpXSAtIHRoZSBEYXRlVGltZSB0byB1c2UgYXMgdGhlIGJhc2lzIHRvIHdoaWNoIHRoaXMgdGltZSBpcyBjb21wYXJlZC4gRGVmYXVsdHMgdG8gbm93LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5sb2NhbGUgLSBvdmVycmlkZSB0aGUgbG9jYWxlIG9mIHRoaXMgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMudW5pdCAtIHVzZSBhIHNwZWNpZmljIHVuaXQ7IGlmIG9taXR0ZWQsIHRoZSBtZXRob2Qgd2lsbCBwaWNrIHRoZSB1bml0LiBVc2Ugb25lIG9mIFwieWVhcnNcIiwgXCJxdWFydGVyc1wiLCBcIm1vbnRoc1wiLCBcIndlZWtzXCIsIG9yIFwiZGF5c1wiXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIG92ZXJyaWRlIHRoZSBudW1iZXJpbmdTeXN0ZW0gb2YgdGhpcyBEYXRlVGltZS4gVGhlIEludGwgc3lzdGVtIG1heSBjaG9vc2Ugbm90IHRvIGhvbm9yIHRoaXNcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZUNhbGVuZGFyKCkgLy89PiBcInRvbW9ycm93XCJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkuc2V0TG9jYWxlKFwiZXNcIikucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZSgpIC8vPT4gXCJcIm1hXHUwMEYxYW5hXCJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZUNhbGVuZGFyKHsgbG9jYWxlOiBcImZyXCIgfSkgLy89PiBcImRlbWFpblwiXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoKSAvLz0+IFwiMiBkYXlzIGFnb1wiXG4gICAqL1xuICB0b1JlbGF0aXZlQ2FsZW5kYXIob3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIGRpZmZSZWxhdGl2ZShvcHRpb25zLmJhc2UgfHwgRGF0ZVRpbWUuZnJvbU9iamVjdCh7fSwgeyB6b25lOiB0aGlzLnpvbmUgfSksIHRoaXMsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBudW1lcmljOiBcImF1dG9cIixcbiAgICAgIHVuaXRzOiBbXCJ5ZWFyc1wiLCBcIm1vbnRoc1wiLCBcImRheXNcIl0sXG4gICAgICBjYWxlbmRhcnk6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBtaW4gb2Ygc2V2ZXJhbCBkYXRlIHRpbWVzXG4gICAqIEBwYXJhbSB7Li4uRGF0ZVRpbWV9IGRhdGVUaW1lcyAtIHRoZSBEYXRlVGltZXMgZnJvbSB3aGljaCB0byBjaG9vc2UgdGhlIG1pbmltdW1cbiAgICogQHJldHVybiB7RGF0ZVRpbWV9IHRoZSBtaW4gRGF0ZVRpbWUsIG9yIHVuZGVmaW5lZCBpZiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudFxuICAgKi9cbiAgc3RhdGljIG1pbiguLi5kYXRlVGltZXMpIHtcbiAgICBpZiAoIWRhdGVUaW1lcy5ldmVyeShEYXRlVGltZS5pc0RhdGVUaW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFwibWluIHJlcXVpcmVzIGFsbCBhcmd1bWVudHMgYmUgRGF0ZVRpbWVzXCIpO1xuICAgIH1cbiAgICByZXR1cm4gYmVzdEJ5KGRhdGVUaW1lcywgKGkpID0+IGkudmFsdWVPZigpLCBNYXRoLm1pbik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBtYXggb2Ygc2V2ZXJhbCBkYXRlIHRpbWVzXG4gICAqIEBwYXJhbSB7Li4uRGF0ZVRpbWV9IGRhdGVUaW1lcyAtIHRoZSBEYXRlVGltZXMgZnJvbSB3aGljaCB0byBjaG9vc2UgdGhlIG1heGltdW1cbiAgICogQHJldHVybiB7RGF0ZVRpbWV9IHRoZSBtYXggRGF0ZVRpbWUsIG9yIHVuZGVmaW5lZCBpZiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudFxuICAgKi9cbiAgc3RhdGljIG1heCguLi5kYXRlVGltZXMpIHtcbiAgICBpZiAoIWRhdGVUaW1lcy5ldmVyeShEYXRlVGltZS5pc0RhdGVUaW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFwibWF4IHJlcXVpcmVzIGFsbCBhcmd1bWVudHMgYmUgRGF0ZVRpbWVzXCIpO1xuICAgIH1cbiAgICByZXR1cm4gYmVzdEJ5KGRhdGVUaW1lcywgKGkpID0+IGkudmFsdWVPZigpLCBNYXRoLm1heCk7XG4gIH1cblxuICAvLyBNSVNDXG5cbiAgLyoqXG4gICAqIEV4cGxhaW4gaG93IGEgc3RyaW5nIHdvdWxkIGJlIHBhcnNlZCBieSBmcm9tRm9ybWF0KClcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHRoZSBzdHJpbmcgaXMgZXhwZWN0ZWQgdG8gYmUgaW4gKHNlZSBkZXNjcmlwdGlvbilcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRha2VuIGJ5IGZyb21Gb3JtYXQoKVxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZnJvbUZvcm1hdEV4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwgfSA9IG9wdGlvbnMsXG4gICAgICBsb2NhbGVUb1VzZSA9IExvY2FsZS5mcm9tT3B0cyh7XG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgbnVtYmVyaW5nU3lzdGVtLFxuICAgICAgICBkZWZhdWx0VG9FTjogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIHJldHVybiBleHBsYWluRnJvbVRva2Vucyhsb2NhbGVUb1VzZSwgdGV4dCwgZm10KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgZnJvbUZvcm1hdEV4cGxhaW4gaW5zdGVhZFxuICAgKi9cbiAgc3RhdGljIGZyb21TdHJpbmdFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXRFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyk7XG4gIH1cblxuICAvLyBGT1JNQVQgUFJFU0VUU1xuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlIDEwLzE0LzE5ODNcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURV9TSE9SVCgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFX1NIT1JUO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MydcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURV9NRUQoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURV9NRUQ7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpLCBPY3QgMTQsIDE5ODMnXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVfTUVEX1dJVEhfV0VFS0RBWSgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFX01FRF9XSVRIX1dFRUtEQVk7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MydcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURV9GVUxMKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVfRlVMTDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdUdWVzZGF5LCBPY3RvYmVyIDE0LCAxOTgzJ1xuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFX0hVR0UoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURV9IVUdFO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IFRJTUVfU0lNUExFKCkge1xuICAgIHJldHVybiBGb3JtYXRzLlRJTUVfU0lNUExFO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IFRJTUVfV0lUSF9TRUNPTkRTKCkge1xuICAgIHJldHVybiBGb3JtYXRzLlRJTUVfV0lUSF9TRUNPTkRTO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBUSU1FX1dJVEhfU0hPUlRfT0ZGU0VUKCkge1xuICAgIHJldHVybiBGb3JtYXRzLlRJTUVfV0lUSF9TSE9SVF9PRkZTRVQ7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgQU0gRWFzdGVybiBEYXlsaWdodCBUaW1lJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IFRJTUVfV0lUSF9MT05HX09GRlNFVCgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5USU1FX1dJVEhfTE9OR19PRkZTRVQ7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzAnLCBhbHdheXMgMjQtaG91ci5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgVElNRV8yNF9TSU1QTEUoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuVElNRV8yNF9TSU1QTEU7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMnLCBhbHdheXMgMjQtaG91ci5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX1NFQ09ORFMoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuVElNRV8yNF9XSVRIX1NFQ09ORFM7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgRURUJywgYWx3YXlzIDI0LWhvdXIuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IFRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLCBhbHdheXMgMjQtaG91ci5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUKCkge1xuICAgIHJldHVybiBGb3JtYXRzLlRJTUVfMjRfV0lUSF9MT05HX09GRlNFVDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVUSU1FX1NIT1JUKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX1NIT1JUO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzEwLzE0LzE5ODMsIDk6MzA6MzMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUztcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMsIDk6MzAgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfTUVEKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX01FRDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMsIDk6MzA6MzMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUygpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaSwgMTQgT2N0IDE5ODMsIDk6MzAgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfTUVEX1dJVEhfV0VFS0RBWSgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFVElNRV9NRURfV0lUSF9XRUVLREFZO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdG9iZXIgMTQsIDE5ODMsIDk6MzAgQU0gRURUJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVUSU1FX0ZVTEwoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURVRJTUVfRlVMTDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzLCA5OjMwOjMzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUygpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUztcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmlkYXksIE9jdG9iZXIgMTQsIDE5ODMsIDk6MzAgQU0gRWFzdGVybiBEYXlsaWdodCBUaW1lJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVUSU1FX0hVR0UoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURVRJTUVfSFVHRTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmlkYXksIE9jdG9iZXIgMTQsIDE5ODMsIDk6MzA6MzMgQU0gRWFzdGVybiBEYXlsaWdodCBUaW1lJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTO1xuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZyaWVuZGx5RGF0ZVRpbWUoZGF0ZVRpbWVpc2gpIHtcbiAgaWYgKERhdGVUaW1lLmlzRGF0ZVRpbWUoZGF0ZVRpbWVpc2gpKSB7XG4gICAgcmV0dXJuIGRhdGVUaW1laXNoO1xuICB9IGVsc2UgaWYgKGRhdGVUaW1laXNoICYmIGRhdGVUaW1laXNoLnZhbHVlT2YgJiYgaXNOdW1iZXIoZGF0ZVRpbWVpc2gudmFsdWVPZigpKSkge1xuICAgIHJldHVybiBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGVUaW1laXNoKTtcbiAgfSBlbHNlIGlmIChkYXRlVGltZWlzaCAmJiB0eXBlb2YgZGF0ZVRpbWVpc2ggPT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdChkYXRlVGltZWlzaCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgYFVua25vd24gZGF0ZXRpbWUgYXJndW1lbnQ6ICR7ZGF0ZVRpbWVpc2h9LCBvZiB0eXBlICR7dHlwZW9mIGRhdGVUaW1laXNofWBcbiAgICApO1xuICB9XG59XG4iLCAiaW1wb3J0IERhdGVUaW1lIGZyb20gXCIuL2RhdGV0aW1lLmpzXCI7XG5pbXBvcnQgRHVyYXRpb24gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcbmltcG9ydCBJbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IEluZm8gZnJvbSBcIi4vaW5mby5qc1wiO1xuaW1wb3J0IFpvbmUgZnJvbSBcIi4vem9uZS5qc1wiO1xuaW1wb3J0IEZpeGVkT2Zmc2V0Wm9uZSBmcm9tIFwiLi96b25lcy9maXhlZE9mZnNldFpvbmUuanNcIjtcbmltcG9ydCBJQU5BWm9uZSBmcm9tIFwiLi96b25lcy9JQU5BWm9uZS5qc1wiO1xuaW1wb3J0IEludmFsaWRab25lIGZyb20gXCIuL3pvbmVzL2ludmFsaWRab25lLmpzXCI7XG5pbXBvcnQgU3lzdGVtWm9uZSBmcm9tIFwiLi96b25lcy9zeXN0ZW1ab25lLmpzXCI7XG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3MuanNcIjtcblxuY29uc3QgVkVSU0lPTiA9IFwiMi4zLjBcIjtcblxuZXhwb3J0IHtcbiAgVkVSU0lPTixcbiAgRGF0ZVRpbWUsXG4gIER1cmF0aW9uLFxuICBJbnRlcnZhbCxcbiAgSW5mbyxcbiAgWm9uZSxcbiAgRml4ZWRPZmZzZXRab25lLFxuICBJQU5BWm9uZSxcbiAgSW52YWxpZFpvbmUsXG4gIFN5c3RlbVpvbmUsXG4gIFNldHRpbmdzLFxufTtcbiIsICIvKipcbiAqIEBsaWNlbnNlXG4gKiBMb2Rhc2ggPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBDb3B5cmlnaHQgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9vcGVuanNmLm9yZy8+XG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKi9cbjsoZnVuY3Rpb24oKSB7XG5cbiAgLyoqIFVzZWQgYXMgYSBzYWZlIHJlZmVyZW5jZSBmb3IgYHVuZGVmaW5lZGAgaW4gcHJlLUVTNSBlbnZpcm9ubWVudHMuICovXG4gIHZhciB1bmRlZmluZWQ7XG5cbiAgLyoqIFVzZWQgYXMgdGhlIHNlbWFudGljIHZlcnNpb24gbnVtYmVyLiAqL1xuICB2YXIgVkVSU0lPTiA9ICc0LjE3LjIxJztcblxuICAvKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbiAgdmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbiAgLyoqIEVycm9yIG1lc3NhZ2UgY29uc3RhbnRzLiAqL1xuICB2YXIgQ09SRV9FUlJPUl9URVhUID0gJ1Vuc3VwcG9ydGVkIGNvcmUtanMgdXNlLiBUcnkgaHR0cHM6Ly9ucG1zLmlvL3NlYXJjaD9xPXBvbnlmaWxsLicsXG4gICAgICBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbicsXG4gICAgICBJTlZBTElEX1RFTVBMX1ZBUl9FUlJPUl9URVhUID0gJ0ludmFsaWQgYHZhcmlhYmxlYCBvcHRpb24gcGFzc2VkIGludG8gYF8udGVtcGxhdGVgJztcblxuICAvKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG4gIHZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuICAvKiogVXNlZCBhcyB0aGUgbWF4aW11bSBtZW1vaXplIGNhY2hlIHNpemUuICovXG4gIHZhciBNQVhfTUVNT0laRV9TSVpFID0gNTAwO1xuXG4gIC8qKiBVc2VkIGFzIHRoZSBpbnRlcm5hbCBhcmd1bWVudCBwbGFjZWhvbGRlci4gKi9cbiAgdmFyIFBMQUNFSE9MREVSID0gJ19fbG9kYXNoX3BsYWNlaG9sZGVyX18nO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG4gIHZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgICAgQ0xPTkVfRkxBVF9GTEFHID0gMixcbiAgICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbiAgLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG4gIHZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuICAvKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBmdW5jdGlvbiBtZXRhZGF0YS4gKi9cbiAgdmFyIFdSQVBfQklORF9GTEFHID0gMSxcbiAgICAgIFdSQVBfQklORF9LRVlfRkxBRyA9IDIsXG4gICAgICBXUkFQX0NVUlJZX0JPVU5EX0ZMQUcgPSA0LFxuICAgICAgV1JBUF9DVVJSWV9GTEFHID0gOCxcbiAgICAgIFdSQVBfQ1VSUllfUklHSFRfRkxBRyA9IDE2LFxuICAgICAgV1JBUF9QQVJUSUFMX0ZMQUcgPSAzMixcbiAgICAgIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHID0gNjQsXG4gICAgICBXUkFQX0FSWV9GTEFHID0gMTI4LFxuICAgICAgV1JBUF9SRUFSR19GTEFHID0gMjU2LFxuICAgICAgV1JBUF9GTElQX0ZMQUcgPSA1MTI7XG5cbiAgLyoqIFVzZWQgYXMgZGVmYXVsdCBvcHRpb25zIGZvciBgXy50cnVuY2F0ZWAuICovXG4gIHZhciBERUZBVUxUX1RSVU5DX0xFTkdUSCA9IDMwLFxuICAgICAgREVGQVVMVF9UUlVOQ19PTUlTU0lPTiA9ICcuLi4nO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBob3QgZnVuY3Rpb25zIGJ5IG51bWJlciBvZiBjYWxscyB3aXRoaW4gYSBzcGFuIG9mIG1pbGxpc2Vjb25kcy4gKi9cbiAgdmFyIEhPVF9DT1VOVCA9IDgwMCxcbiAgICAgIEhPVF9TUEFOID0gMTY7XG5cbiAgLyoqIFVzZWQgdG8gaW5kaWNhdGUgdGhlIHR5cGUgb2YgbGF6eSBpdGVyYXRlZXMuICovXG4gIHZhciBMQVpZX0ZJTFRFUl9GTEFHID0gMSxcbiAgICAgIExBWllfTUFQX0ZMQUcgPSAyLFxuICAgICAgTEFaWV9XSElMRV9GTEFHID0gMztcblxuICAvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbiAgdmFyIElORklOSVRZID0gMSAvIDAsXG4gICAgICBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MSxcbiAgICAgIE1BWF9JTlRFR0VSID0gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgsXG4gICAgICBOQU4gPSAwIC8gMDtcblxuICAvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB0aGUgbWF4aW11bSBsZW5ndGggYW5kIGluZGV4IG9mIGFuIGFycmF5LiAqL1xuICB2YXIgTUFYX0FSUkFZX0xFTkdUSCA9IDQyOTQ5NjcyOTUsXG4gICAgICBNQVhfQVJSQVlfSU5ERVggPSBNQVhfQVJSQVlfTEVOR1RIIC0gMSxcbiAgICAgIEhBTEZfTUFYX0FSUkFZX0xFTkdUSCA9IE1BWF9BUlJBWV9MRU5HVEggPj4+IDE7XG5cbiAgLyoqIFVzZWQgdG8gYXNzb2NpYXRlIHdyYXAgbWV0aG9kcyB3aXRoIHRoZWlyIGJpdCBmbGFncy4gKi9cbiAgdmFyIHdyYXBGbGFncyA9IFtcbiAgICBbJ2FyeScsIFdSQVBfQVJZX0ZMQUddLFxuICAgIFsnYmluZCcsIFdSQVBfQklORF9GTEFHXSxcbiAgICBbJ2JpbmRLZXknLCBXUkFQX0JJTkRfS0VZX0ZMQUddLFxuICAgIFsnY3VycnknLCBXUkFQX0NVUlJZX0ZMQUddLFxuICAgIFsnY3VycnlSaWdodCcsIFdSQVBfQ1VSUllfUklHSFRfRkxBR10sXG4gICAgWydmbGlwJywgV1JBUF9GTElQX0ZMQUddLFxuICAgIFsncGFydGlhbCcsIFdSQVBfUEFSVElBTF9GTEFHXSxcbiAgICBbJ3BhcnRpYWxSaWdodCcsIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHXSxcbiAgICBbJ3JlYXJnJywgV1JBUF9SRUFSR19GTEFHXVxuICBdO1xuXG4gIC8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbiAgdmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICAgIGFzeW5jVGFnID0gJ1tvYmplY3QgQXN5bmNGdW5jdGlvbl0nLFxuICAgICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgICBkb21FeGNUYWcgPSAnW29iamVjdCBET01FeGNlcHRpb25dJyxcbiAgICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgICBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nLFxuICAgICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgICBwcm9taXNlVGFnID0gJ1tvYmplY3QgUHJvbWlzZV0nLFxuICAgICAgcHJveHlUYWcgPSAnW29iamVjdCBQcm94eV0nLFxuICAgICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXScsXG4gICAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJyxcbiAgICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXScsXG4gICAgICB3ZWFrU2V0VGFnID0gJ1tvYmplY3QgV2Vha1NldF0nO1xuXG4gIHZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggZW1wdHkgc3RyaW5nIGxpdGVyYWxzIGluIGNvbXBpbGVkIHRlbXBsYXRlIHNvdXJjZS4gKi9cbiAgdmFyIHJlRW1wdHlTdHJpbmdMZWFkaW5nID0gL1xcYl9fcCBcXCs9ICcnOy9nLFxuICAgICAgcmVFbXB0eVN0cmluZ01pZGRsZSA9IC9cXGIoX19wIFxcKz0pICcnIFxcKy9nLFxuICAgICAgcmVFbXB0eVN0cmluZ1RyYWlsaW5nID0gLyhfX2VcXCguKj9cXCl8XFxiX190XFwpKSBcXCtcXG4nJzsvZztcblxuICAvKiogVXNlZCB0byBtYXRjaCBIVE1MIGVudGl0aWVzIGFuZCBIVE1MIGNoYXJhY3RlcnMuICovXG4gIHZhciByZUVzY2FwZWRIdG1sID0gLyYoPzphbXB8bHR8Z3R8cXVvdHwjMzkpOy9nLFxuICAgICAgcmVVbmVzY2FwZWRIdG1sID0gL1smPD5cIiddL2csXG4gICAgICByZUhhc0VzY2FwZWRIdG1sID0gUmVnRXhwKHJlRXNjYXBlZEh0bWwuc291cmNlKSxcbiAgICAgIHJlSGFzVW5lc2NhcGVkSHRtbCA9IFJlZ0V4cChyZVVuZXNjYXBlZEh0bWwuc291cmNlKTtcblxuICAvKiogVXNlZCB0byBtYXRjaCB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLiAqL1xuICB2YXIgcmVFc2NhcGUgPSAvPCUtKFtcXHNcXFNdKz8pJT4vZyxcbiAgICAgIHJlRXZhbHVhdGUgPSAvPCUoW1xcc1xcU10rPyklPi9nLFxuICAgICAgcmVJbnRlcnBvbGF0ZSA9IC88JT0oW1xcc1xcU10rPyklPi9nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbiAgdmFyIHJlSXNEZWVwUHJvcCA9IC9cXC58XFxbKD86W15bXFxdXSp8KFtcIiddKSg/Oig/IVxcMSlbXlxcXFxdfFxcXFwuKSo/XFwxKVxcXS8sXG4gICAgICByZUlzUGxhaW5Qcm9wID0gL15cXHcqJC8sXG4gICAgICByZVByb3BOYW1lID0gL1teLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCQpKS9nO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gICAqIFtzeW50YXggY2hhcmFjdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcGF0dGVybnMpLlxuICAgKi9cbiAgdmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZyxcbiAgICAgIHJlSGFzUmVnRXhwQ2hhciA9IFJlZ0V4cChyZVJlZ0V4cENoYXIuc291cmNlKTtcblxuICAvKiogVXNlZCB0byBtYXRjaCBsZWFkaW5nIHdoaXRlc3BhY2UuICovXG4gIHZhciByZVRyaW1TdGFydCA9IC9eXFxzKy87XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggYSBzaW5nbGUgd2hpdGVzcGFjZSBjaGFyYWN0ZXIuICovXG4gIHZhciByZVdoaXRlc3BhY2UgPSAvXFxzLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB3cmFwIGRldGFpbCBjb21tZW50cy4gKi9cbiAgdmFyIHJlV3JhcENvbW1lbnQgPSAvXFx7KD86XFxuXFwvXFwqIFxcW3dyYXBwZWQgd2l0aCAuK1xcXSBcXCpcXC8pP1xcbj8vLFxuICAgICAgcmVXcmFwRGV0YWlscyA9IC9cXHtcXG5cXC9cXCogXFxbd3JhcHBlZCB3aXRoICguKylcXF0gXFwqLyxcbiAgICAgIHJlU3BsaXREZXRhaWxzID0gLyw/ICYgLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB3b3JkcyBjb21wb3NlZCBvZiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4gKi9cbiAgdmFyIHJlQXNjaWlXb3JkID0gL1teXFx4MDAtXFx4MmZcXHgzYS1cXHg0MFxceDViLVxceDYwXFx4N2ItXFx4N2ZdKy9nO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHZhbGlkYXRlIHRoZSBgdmFsaWRhdGVgIG9wdGlvbiBpbiBgXy50ZW1wbGF0ZWAgdmFyaWFibGUuXG4gICAqXG4gICAqIEZvcmJpZHMgY2hhcmFjdGVycyB3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50IGRlZmluaXRpb246XG4gICAqIC0gXCIoKSxcIiAobW9kaWZpY2F0aW9uIG9mIGZ1bmN0aW9uIHBhcmFtZXRlcnMpXG4gICAqIC0gXCI9XCIgKGRlZmF1bHQgdmFsdWUpXG4gICAqIC0gXCJbXXt9XCIgKGRlc3RydWN0dXJpbmcgb2YgZnVuY3Rpb24gcGFyYW1ldGVycylcbiAgICogLSBcIi9cIiAoYmVnaW5uaW5nIG9mIGEgY29tbWVudClcbiAgICogLSB3aGl0ZXNwYWNlXG4gICAqL1xuICB2YXIgcmVGb3JiaWRkZW5JZGVudGlmaWVyQ2hhcnMgPSAvWygpPSx7fVxcW1xcXVxcL1xcc10vO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGJhY2tzbGFzaGVzIGluIHByb3BlcnR5IHBhdGhzLiAqL1xuICB2YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWF0Y2hcbiAgICogW0VTIHRlbXBsYXRlIGRlbGltaXRlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRlbXBsYXRlLWxpdGVyYWwtbGV4aWNhbC1jb21wb25lbnRzKS5cbiAgICovXG4gIHZhciByZUVzVGVtcGxhdGUgPSAvXFwkXFx7KFteXFxcXH1dKig/OlxcXFwuW15cXFxcfV0qKSopXFx9L2c7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG4gIHZhciByZUZsYWdzID0gL1xcdyokLztcblxuICAvKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xuICB2YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xuICB2YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuICAvKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL1xuICB2YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIExhdGluIFVuaWNvZGUgbGV0dGVycyAoZXhjbHVkaW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRvcnMpLiAqL1xuICB2YXIgcmVMYXRpbiA9IC9bXFx4YzAtXFx4ZDZcXHhkOC1cXHhmNlxceGY4LVxceGZmXFx1MDEwMC1cXHUwMTdmXS9nO1xuXG4gIC8qKiBVc2VkIHRvIGVuc3VyZSBjYXB0dXJpbmcgb3JkZXIgb2YgdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbiAgdmFyIHJlTm9NYXRjaCA9IC8oJF4pLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB1bmVzY2FwZWQgY2hhcmFjdGVycyBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG4gIHZhciByZVVuZXNjYXBlZFN0cmluZyA9IC9bJ1xcblxcclxcdTIwMjhcXHUyMDI5XFxcXF0vZztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG4gIHZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgICAgcnNDb21ib01hcmtzUmFuZ2UgPSAnXFxcXHUwMzAwLVxcXFx1MDM2ZicsXG4gICAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgICAgcnNDb21ib1JhbmdlID0gcnNDb21ib01hcmtzUmFuZ2UgKyByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgKyByc0NvbWJvU3ltYm9sc1JhbmdlLFxuICAgICAgcnNEaW5nYmF0UmFuZ2UgPSAnXFxcXHUyNzAwLVxcXFx1MjdiZicsXG4gICAgICByc0xvd2VyUmFuZ2UgPSAnYS16XFxcXHhkZi1cXFxceGY2XFxcXHhmOC1cXFxceGZmJyxcbiAgICAgIHJzTWF0aE9wUmFuZ2UgPSAnXFxcXHhhY1xcXFx4YjFcXFxceGQ3XFxcXHhmNycsXG4gICAgICByc05vbkNoYXJSYW5nZSA9ICdcXFxceDAwLVxcXFx4MmZcXFxceDNhLVxcXFx4NDBcXFxceDViLVxcXFx4NjBcXFxceDdiLVxcXFx4YmYnLFxuICAgICAgcnNQdW5jdHVhdGlvblJhbmdlID0gJ1xcXFx1MjAwMC1cXFxcdTIwNmYnLFxuICAgICAgcnNTcGFjZVJhbmdlID0gJyBcXFxcdFxcXFx4MGJcXFxcZlxcXFx4YTBcXFxcdWZlZmZcXFxcblxcXFxyXFxcXHUyMDI4XFxcXHUyMDI5XFxcXHUxNjgwXFxcXHUxODBlXFxcXHUyMDAwXFxcXHUyMDAxXFxcXHUyMDAyXFxcXHUyMDAzXFxcXHUyMDA0XFxcXHUyMDA1XFxcXHUyMDA2XFxcXHUyMDA3XFxcXHUyMDA4XFxcXHUyMDA5XFxcXHUyMDBhXFxcXHUyMDJmXFxcXHUyMDVmXFxcXHUzMDAwJyxcbiAgICAgIHJzVXBwZXJSYW5nZSA9ICdBLVpcXFxceGMwLVxcXFx4ZDZcXFxceGQ4LVxcXFx4ZGUnLFxuICAgICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnLFxuICAgICAgcnNCcmVha1JhbmdlID0gcnNNYXRoT3BSYW5nZSArIHJzTm9uQ2hhclJhbmdlICsgcnNQdW5jdHVhdGlvblJhbmdlICsgcnNTcGFjZVJhbmdlO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbiAgdmFyIHJzQXBvcyA9IFwiWydcXHUyMDE5XVwiLFxuICAgICAgcnNBc3RyYWwgPSAnWycgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgICAgcnNCcmVhayA9ICdbJyArIHJzQnJlYWtSYW5nZSArICddJyxcbiAgICAgIHJzQ29tYm8gPSAnWycgKyByc0NvbWJvUmFuZ2UgKyAnXScsXG4gICAgICByc0RpZ2l0cyA9ICdcXFxcZCsnLFxuICAgICAgcnNEaW5nYmF0ID0gJ1snICsgcnNEaW5nYmF0UmFuZ2UgKyAnXScsXG4gICAgICByc0xvd2VyID0gJ1snICsgcnNMb3dlclJhbmdlICsgJ10nLFxuICAgICAgcnNNaXNjID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyByc0JyZWFrUmFuZ2UgKyByc0RpZ2l0cyArIHJzRGluZ2JhdFJhbmdlICsgcnNMb3dlclJhbmdlICsgcnNVcHBlclJhbmdlICsgJ10nLFxuICAgICAgcnNGaXR6ID0gJ1xcXFx1ZDgzY1tcXFxcdWRmZmItXFxcXHVkZmZmXScsXG4gICAgICByc01vZGlmaWVyID0gJyg/OicgKyByc0NvbWJvICsgJ3wnICsgcnNGaXR6ICsgJyknLFxuICAgICAgcnNOb25Bc3RyYWwgPSAnW14nICsgcnNBc3RyYWxSYW5nZSArICddJyxcbiAgICAgIHJzUmVnaW9uYWwgPSAnKD86XFxcXHVkODNjW1xcXFx1ZGRlNi1cXFxcdWRkZmZdKXsyfScsXG4gICAgICByc1N1cnJQYWlyID0gJ1tcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXScsXG4gICAgICByc1VwcGVyID0gJ1snICsgcnNVcHBlclJhbmdlICsgJ10nLFxuICAgICAgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgcmVnZXhlcy4gKi9cbiAgdmFyIHJzTWlzY0xvd2VyID0gJyg/OicgKyByc0xvd2VyICsgJ3wnICsgcnNNaXNjICsgJyknLFxuICAgICAgcnNNaXNjVXBwZXIgPSAnKD86JyArIHJzVXBwZXIgKyAnfCcgKyByc01pc2MgKyAnKScsXG4gICAgICByc09wdENvbnRyTG93ZXIgPSAnKD86JyArIHJzQXBvcyArICcoPzpkfGxsfG18cmV8c3x0fHZlKSk/JyxcbiAgICAgIHJzT3B0Q29udHJVcHBlciA9ICcoPzonICsgcnNBcG9zICsgJyg/OkR8TEx8TXxSRXxTfFR8VkUpKT8nLFxuICAgICAgcmVPcHRNb2QgPSByc01vZGlmaWVyICsgJz8nLFxuICAgICAgcnNPcHRWYXIgPSAnWycgKyByc1ZhclJhbmdlICsgJ10/JyxcbiAgICAgIHJzT3B0Sm9pbiA9ICcoPzonICsgcnNaV0ogKyAnKD86JyArIFtyc05vbkFzdHJhbCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNPcHRWYXIgKyByZU9wdE1vZCArICcpKicsXG4gICAgICByc09yZExvd2VyID0gJ1xcXFxkKig/OjFzdHwybmR8M3JkfCg/IVsxMjNdKVxcXFxkdGgpKD89XFxcXGJ8W0EtWl9dKScsXG4gICAgICByc09yZFVwcGVyID0gJ1xcXFxkKig/OjFTVHwyTkR8M1JEfCg/IVsxMjNdKVxcXFxkVEgpKD89XFxcXGJ8W2Etel9dKScsXG4gICAgICByc1NlcSA9IHJzT3B0VmFyICsgcmVPcHRNb2QgKyByc09wdEpvaW4sXG4gICAgICByc0Vtb2ppID0gJyg/OicgKyBbcnNEaW5nYmF0LCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyXS5qb2luKCd8JykgKyAnKScgKyByc1NlcSxcbiAgICAgIHJzU3ltYm9sID0gJyg/OicgKyBbcnNOb25Bc3RyYWwgKyByc0NvbWJvICsgJz8nLCByc0NvbWJvLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyLCByc0FzdHJhbF0uam9pbignfCcpICsgJyknO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGFwb3N0cm9waGVzLiAqL1xuICB2YXIgcmVBcG9zID0gUmVnRXhwKHJzQXBvcywgJ2cnKTtcblxuICAvKipcbiAgICogVXNlZCB0byBtYXRjaCBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3MpIGFuZFxuICAgKiBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzIGZvciBzeW1ib2xzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3NfZm9yX1N5bWJvbHMpLlxuICAgKi9cbiAgdmFyIHJlQ29tYm9NYXJrID0gUmVnRXhwKHJzQ29tYm8sICdnJyk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggW3N0cmluZyBzeW1ib2xzXShodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC11bmljb2RlKS4gKi9cbiAgdmFyIHJlVW5pY29kZSA9IFJlZ0V4cChyc0ZpdHogKyAnKD89JyArIHJzRml0eiArICcpfCcgKyByc1N5bWJvbCArIHJzU2VxLCAnZycpO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGNvbXBsZXggb3IgY29tcG91bmQgd29yZHMuICovXG4gIHZhciByZVVuaWNvZGVXb3JkID0gUmVnRXhwKFtcbiAgICByc1VwcGVyICsgJz8nICsgcnNMb3dlciArICcrJyArIHJzT3B0Q29udHJMb3dlciArICcoPz0nICsgW3JzQnJlYWssIHJzVXBwZXIsICckJ10uam9pbignfCcpICsgJyknLFxuICAgIHJzTWlzY1VwcGVyICsgJysnICsgcnNPcHRDb250clVwcGVyICsgJyg/PScgKyBbcnNCcmVhaywgcnNVcHBlciArIHJzTWlzY0xvd2VyLCAnJCddLmpvaW4oJ3wnKSArICcpJyxcbiAgICByc1VwcGVyICsgJz8nICsgcnNNaXNjTG93ZXIgKyAnKycgKyByc09wdENvbnRyTG93ZXIsXG4gICAgcnNVcHBlciArICcrJyArIHJzT3B0Q29udHJVcHBlcixcbiAgICByc09yZFVwcGVyLFxuICAgIHJzT3JkTG93ZXIsXG4gICAgcnNEaWdpdHMsXG4gICAgcnNFbW9qaVxuICBdLmpvaW4oJ3wnKSwgJ2cnKTtcblxuICAvKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB3aXRoIFt6ZXJvLXdpZHRoIGpvaW5lcnMgb3IgY29kZSBwb2ludHMgZnJvbSB0aGUgYXN0cmFsIHBsYW5lc10oaHR0cDovL2Vldi5lZS9ibG9nLzIwMTUvMDkvMTIvZGFyay1jb3JuZXJzLW9mLXVuaWNvZGUvKS4gKi9cbiAgdmFyIHJlSGFzVW5pY29kZSA9IFJlZ0V4cCgnWycgKyByc1pXSiArIHJzQXN0cmFsUmFuZ2UgICsgcnNDb21ib1JhbmdlICsgcnNWYXJSYW5nZSArICddJyk7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHN0cmluZ3MgdGhhdCBuZWVkIGEgbW9yZSByb2J1c3QgcmVnZXhwIHRvIG1hdGNoIHdvcmRzLiAqL1xuICB2YXIgcmVIYXNVbmljb2RlV29yZCA9IC9bYS16XVtBLVpdfFtBLVpdezJ9W2Etel18WzAtOV1bYS16QS1aXXxbYS16QS1aXVswLTldfFteYS16QS1aMC05IF0vO1xuXG4gIC8qKiBVc2VkIHRvIGFzc2lnbiBkZWZhdWx0IGBjb250ZXh0YCBvYmplY3QgcHJvcGVydGllcy4gKi9cbiAgdmFyIGNvbnRleHRQcm9wcyA9IFtcbiAgICAnQXJyYXknLCAnQnVmZmVyJywgJ0RhdGFWaWV3JywgJ0RhdGUnLCAnRXJyb3InLCAnRmxvYXQzMkFycmF5JywgJ0Zsb2F0NjRBcnJheScsXG4gICAgJ0Z1bmN0aW9uJywgJ0ludDhBcnJheScsICdJbnQxNkFycmF5JywgJ0ludDMyQXJyYXknLCAnTWFwJywgJ01hdGgnLCAnT2JqZWN0JyxcbiAgICAnUHJvbWlzZScsICdSZWdFeHAnLCAnU2V0JywgJ1N0cmluZycsICdTeW1ib2wnLCAnVHlwZUVycm9yJywgJ1VpbnQ4QXJyYXknLFxuICAgICdVaW50OENsYW1wZWRBcnJheScsICdVaW50MTZBcnJheScsICdVaW50MzJBcnJheScsICdXZWFrTWFwJyxcbiAgICAnXycsICdjbGVhclRpbWVvdXQnLCAnaXNGaW5pdGUnLCAncGFyc2VJbnQnLCAnc2V0VGltZW91dCdcbiAgXTtcblxuICAvKiogVXNlZCB0byBtYWtlIHRlbXBsYXRlIHNvdXJjZVVSTHMgZWFzaWVyIHRvIGlkZW50aWZ5LiAqL1xuICB2YXIgdGVtcGxhdGVDb3VudGVyID0gLTE7XG5cbiAgLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xuICB2YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbiAgdHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbiAgdHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxuICB0eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbiAgdHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxuICB0eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4gIC8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIHN1cHBvcnRlZCBieSBgXy5jbG9uZWAuICovXG4gIHZhciBjbG9uZWFibGVUYWdzID0ge307XG4gIGNsb25lYWJsZVRhZ3NbYXJnc1RhZ10gPSBjbG9uZWFibGVUYWdzW2FycmF5VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRhVmlld1RhZ10gPVxuICBjbG9uZWFibGVUYWdzW2Jvb2xUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRlVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbZmxvYXQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW2Zsb2F0NjRUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbaW50MTZUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tpbnQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW21hcFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW251bWJlclRhZ10gPSBjbG9uZWFibGVUYWdzW29iamVjdFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3JlZ2V4cFRhZ10gPSBjbG9uZWFibGVUYWdzW3NldFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3N0cmluZ1RhZ10gPSBjbG9uZWFibGVUYWdzW3N5bWJvbFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3VpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbdWludDE2VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG4gIGNsb25lYWJsZVRhZ3NbZXJyb3JUYWddID0gY2xvbmVhYmxlVGFnc1tmdW5jVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuICAvKiogVXNlZCB0byBtYXAgTGF0aW4gVW5pY29kZSBsZXR0ZXJzIHRvIGJhc2ljIExhdGluIGxldHRlcnMuICovXG4gIHZhciBkZWJ1cnJlZExldHRlcnMgPSB7XG4gICAgLy8gTGF0aW4tMSBTdXBwbGVtZW50IGJsb2NrLlxuICAgICdcXHhjMCc6ICdBJywgICdcXHhjMSc6ICdBJywgJ1xceGMyJzogJ0EnLCAnXFx4YzMnOiAnQScsICdcXHhjNCc6ICdBJywgJ1xceGM1JzogJ0EnLFxuICAgICdcXHhlMCc6ICdhJywgICdcXHhlMSc6ICdhJywgJ1xceGUyJzogJ2EnLCAnXFx4ZTMnOiAnYScsICdcXHhlNCc6ICdhJywgJ1xceGU1JzogJ2EnLFxuICAgICdcXHhjNyc6ICdDJywgICdcXHhlNyc6ICdjJyxcbiAgICAnXFx4ZDAnOiAnRCcsICAnXFx4ZjAnOiAnZCcsXG4gICAgJ1xceGM4JzogJ0UnLCAgJ1xceGM5JzogJ0UnLCAnXFx4Y2EnOiAnRScsICdcXHhjYic6ICdFJyxcbiAgICAnXFx4ZTgnOiAnZScsICAnXFx4ZTknOiAnZScsICdcXHhlYSc6ICdlJywgJ1xceGViJzogJ2UnLFxuICAgICdcXHhjYyc6ICdJJywgICdcXHhjZCc6ICdJJywgJ1xceGNlJzogJ0knLCAnXFx4Y2YnOiAnSScsXG4gICAgJ1xceGVjJzogJ2knLCAgJ1xceGVkJzogJ2knLCAnXFx4ZWUnOiAnaScsICdcXHhlZic6ICdpJyxcbiAgICAnXFx4ZDEnOiAnTicsICAnXFx4ZjEnOiAnbicsXG4gICAgJ1xceGQyJzogJ08nLCAgJ1xceGQzJzogJ08nLCAnXFx4ZDQnOiAnTycsICdcXHhkNSc6ICdPJywgJ1xceGQ2JzogJ08nLCAnXFx4ZDgnOiAnTycsXG4gICAgJ1xceGYyJzogJ28nLCAgJ1xceGYzJzogJ28nLCAnXFx4ZjQnOiAnbycsICdcXHhmNSc6ICdvJywgJ1xceGY2JzogJ28nLCAnXFx4ZjgnOiAnbycsXG4gICAgJ1xceGQ5JzogJ1UnLCAgJ1xceGRhJzogJ1UnLCAnXFx4ZGInOiAnVScsICdcXHhkYyc6ICdVJyxcbiAgICAnXFx4ZjknOiAndScsICAnXFx4ZmEnOiAndScsICdcXHhmYic6ICd1JywgJ1xceGZjJzogJ3UnLFxuICAgICdcXHhkZCc6ICdZJywgICdcXHhmZCc6ICd5JywgJ1xceGZmJzogJ3knLFxuICAgICdcXHhjNic6ICdBZScsICdcXHhlNic6ICdhZScsXG4gICAgJ1xceGRlJzogJ1RoJywgJ1xceGZlJzogJ3RoJyxcbiAgICAnXFx4ZGYnOiAnc3MnLFxuICAgIC8vIExhdGluIEV4dGVuZGVkLUEgYmxvY2suXG4gICAgJ1xcdTAxMDAnOiAnQScsICAnXFx1MDEwMic6ICdBJywgJ1xcdTAxMDQnOiAnQScsXG4gICAgJ1xcdTAxMDEnOiAnYScsICAnXFx1MDEwMyc6ICdhJywgJ1xcdTAxMDUnOiAnYScsXG4gICAgJ1xcdTAxMDYnOiAnQycsICAnXFx1MDEwOCc6ICdDJywgJ1xcdTAxMGEnOiAnQycsICdcXHUwMTBjJzogJ0MnLFxuICAgICdcXHUwMTA3JzogJ2MnLCAgJ1xcdTAxMDknOiAnYycsICdcXHUwMTBiJzogJ2MnLCAnXFx1MDEwZCc6ICdjJyxcbiAgICAnXFx1MDEwZSc6ICdEJywgICdcXHUwMTEwJzogJ0QnLCAnXFx1MDEwZic6ICdkJywgJ1xcdTAxMTEnOiAnZCcsXG4gICAgJ1xcdTAxMTInOiAnRScsICAnXFx1MDExNCc6ICdFJywgJ1xcdTAxMTYnOiAnRScsICdcXHUwMTE4JzogJ0UnLCAnXFx1MDExYSc6ICdFJyxcbiAgICAnXFx1MDExMyc6ICdlJywgICdcXHUwMTE1JzogJ2UnLCAnXFx1MDExNyc6ICdlJywgJ1xcdTAxMTknOiAnZScsICdcXHUwMTFiJzogJ2UnLFxuICAgICdcXHUwMTFjJzogJ0cnLCAgJ1xcdTAxMWUnOiAnRycsICdcXHUwMTIwJzogJ0cnLCAnXFx1MDEyMic6ICdHJyxcbiAgICAnXFx1MDExZCc6ICdnJywgICdcXHUwMTFmJzogJ2cnLCAnXFx1MDEyMSc6ICdnJywgJ1xcdTAxMjMnOiAnZycsXG4gICAgJ1xcdTAxMjQnOiAnSCcsICAnXFx1MDEyNic6ICdIJywgJ1xcdTAxMjUnOiAnaCcsICdcXHUwMTI3JzogJ2gnLFxuICAgICdcXHUwMTI4JzogJ0knLCAgJ1xcdTAxMmEnOiAnSScsICdcXHUwMTJjJzogJ0knLCAnXFx1MDEyZSc6ICdJJywgJ1xcdTAxMzAnOiAnSScsXG4gICAgJ1xcdTAxMjknOiAnaScsICAnXFx1MDEyYic6ICdpJywgJ1xcdTAxMmQnOiAnaScsICdcXHUwMTJmJzogJ2knLCAnXFx1MDEzMSc6ICdpJyxcbiAgICAnXFx1MDEzNCc6ICdKJywgICdcXHUwMTM1JzogJ2onLFxuICAgICdcXHUwMTM2JzogJ0snLCAgJ1xcdTAxMzcnOiAnaycsICdcXHUwMTM4JzogJ2snLFxuICAgICdcXHUwMTM5JzogJ0wnLCAgJ1xcdTAxM2InOiAnTCcsICdcXHUwMTNkJzogJ0wnLCAnXFx1MDEzZic6ICdMJywgJ1xcdTAxNDEnOiAnTCcsXG4gICAgJ1xcdTAxM2EnOiAnbCcsICAnXFx1MDEzYyc6ICdsJywgJ1xcdTAxM2UnOiAnbCcsICdcXHUwMTQwJzogJ2wnLCAnXFx1MDE0Mic6ICdsJyxcbiAgICAnXFx1MDE0Myc6ICdOJywgICdcXHUwMTQ1JzogJ04nLCAnXFx1MDE0Nyc6ICdOJywgJ1xcdTAxNGEnOiAnTicsXG4gICAgJ1xcdTAxNDQnOiAnbicsICAnXFx1MDE0Nic6ICduJywgJ1xcdTAxNDgnOiAnbicsICdcXHUwMTRiJzogJ24nLFxuICAgICdcXHUwMTRjJzogJ08nLCAgJ1xcdTAxNGUnOiAnTycsICdcXHUwMTUwJzogJ08nLFxuICAgICdcXHUwMTRkJzogJ28nLCAgJ1xcdTAxNGYnOiAnbycsICdcXHUwMTUxJzogJ28nLFxuICAgICdcXHUwMTU0JzogJ1InLCAgJ1xcdTAxNTYnOiAnUicsICdcXHUwMTU4JzogJ1InLFxuICAgICdcXHUwMTU1JzogJ3InLCAgJ1xcdTAxNTcnOiAncicsICdcXHUwMTU5JzogJ3InLFxuICAgICdcXHUwMTVhJzogJ1MnLCAgJ1xcdTAxNWMnOiAnUycsICdcXHUwMTVlJzogJ1MnLCAnXFx1MDE2MCc6ICdTJyxcbiAgICAnXFx1MDE1Yic6ICdzJywgICdcXHUwMTVkJzogJ3MnLCAnXFx1MDE1Zic6ICdzJywgJ1xcdTAxNjEnOiAncycsXG4gICAgJ1xcdTAxNjInOiAnVCcsICAnXFx1MDE2NCc6ICdUJywgJ1xcdTAxNjYnOiAnVCcsXG4gICAgJ1xcdTAxNjMnOiAndCcsICAnXFx1MDE2NSc6ICd0JywgJ1xcdTAxNjcnOiAndCcsXG4gICAgJ1xcdTAxNjgnOiAnVScsICAnXFx1MDE2YSc6ICdVJywgJ1xcdTAxNmMnOiAnVScsICdcXHUwMTZlJzogJ1UnLCAnXFx1MDE3MCc6ICdVJywgJ1xcdTAxNzInOiAnVScsXG4gICAgJ1xcdTAxNjknOiAndScsICAnXFx1MDE2Yic6ICd1JywgJ1xcdTAxNmQnOiAndScsICdcXHUwMTZmJzogJ3UnLCAnXFx1MDE3MSc6ICd1JywgJ1xcdTAxNzMnOiAndScsXG4gICAgJ1xcdTAxNzQnOiAnVycsICAnXFx1MDE3NSc6ICd3JyxcbiAgICAnXFx1MDE3Nic6ICdZJywgICdcXHUwMTc3JzogJ3knLCAnXFx1MDE3OCc6ICdZJyxcbiAgICAnXFx1MDE3OSc6ICdaJywgICdcXHUwMTdiJzogJ1onLCAnXFx1MDE3ZCc6ICdaJyxcbiAgICAnXFx1MDE3YSc6ICd6JywgICdcXHUwMTdjJzogJ3onLCAnXFx1MDE3ZSc6ICd6JyxcbiAgICAnXFx1MDEzMic6ICdJSicsICdcXHUwMTMzJzogJ2lqJyxcbiAgICAnXFx1MDE1Mic6ICdPZScsICdcXHUwMTUzJzogJ29lJyxcbiAgICAnXFx1MDE0OSc6IFwiJ25cIiwgJ1xcdTAxN2YnOiAncydcbiAgfTtcblxuICAvKiogVXNlZCB0byBtYXAgY2hhcmFjdGVycyB0byBIVE1MIGVudGl0aWVzLiAqL1xuICB2YXIgaHRtbEVzY2FwZXMgPSB7XG4gICAgJyYnOiAnJmFtcDsnLFxuICAgICc8JzogJyZsdDsnLFxuICAgICc+JzogJyZndDsnLFxuICAgICdcIic6ICcmcXVvdDsnLFxuICAgIFwiJ1wiOiAnJiMzOTsnXG4gIH07XG5cbiAgLyoqIFVzZWQgdG8gbWFwIEhUTUwgZW50aXRpZXMgdG8gY2hhcmFjdGVycy4gKi9cbiAgdmFyIGh0bWxVbmVzY2FwZXMgPSB7XG4gICAgJyZhbXA7JzogJyYnLFxuICAgICcmbHQ7JzogJzwnLFxuICAgICcmZ3Q7JzogJz4nLFxuICAgICcmcXVvdDsnOiAnXCInLFxuICAgICcmIzM5Oyc6IFwiJ1wiXG4gIH07XG5cbiAgLyoqIFVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgZm9yIGluY2x1c2lvbiBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG4gIHZhciBzdHJpbmdFc2NhcGVzID0ge1xuICAgICdcXFxcJzogJ1xcXFwnLFxuICAgIFwiJ1wiOiBcIidcIixcbiAgICAnXFxuJzogJ24nLFxuICAgICdcXHInOiAncicsXG4gICAgJ1xcdTIwMjgnOiAndTIwMjgnLFxuICAgICdcXHUyMDI5JzogJ3UyMDI5J1xuICB9O1xuXG4gIC8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG4gIHZhciBmcmVlUGFyc2VGbG9hdCA9IHBhcnNlRmxvYXQsXG4gICAgICBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xuICB2YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbiAgdmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG5cbiAgLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG4gIHZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG4gIHZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG4gIHZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbiAgLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbiAgdmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG4gIHZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4gIC8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xuICB2YXIgbm9kZVV0aWwgPSAoZnVuY3Rpb24oKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFVzZSBgdXRpbC50eXBlc2AgZm9yIE5vZGUuanMgMTArLlxuICAgICAgdmFyIHR5cGVzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlKCd1dGlsJykudHlwZXM7XG5cbiAgICAgIGlmICh0eXBlcykge1xuICAgICAgICByZXR1cm4gdHlwZXM7XG4gICAgICB9XG5cbiAgICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfSgpKTtcblxuICAvKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xuICB2YXIgbm9kZUlzQXJyYXlCdWZmZXIgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc0FycmF5QnVmZmVyLFxuICAgICAgbm9kZUlzRGF0ZSA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzRGF0ZSxcbiAgICAgIG5vZGVJc01hcCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzTWFwLFxuICAgICAgbm9kZUlzUmVnRXhwID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNSZWdFeHAsXG4gICAgICBub2RlSXNTZXQgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1NldCxcbiAgICAgIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgLyoqXG4gICAqIEEgZmFzdGVyIGFsdGVybmF0aXZlIHRvIGBGdW5jdGlvbiNhcHBseWAsIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBgZnVuY2BcbiAgICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgIGFuZCB0aGUgYXJndW1lbnRzIG9mIGBhcmdzYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICAgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuXG4gICAqL1xuICBmdW5jdGlvbiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKSB7XG4gICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO1xuICAgICAgY2FzZSAxOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0pO1xuICAgICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgY2FzZSAzOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VBZ2dyZWdhdG9yYCBmb3IgYXJyYXlzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGBhY2N1bXVsYXRvcmAgdmFsdWVzLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCBhZ2dyZWdhdGVkIG9iamVjdC5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBhY2N1bXVsYXRvcmAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUFnZ3JlZ2F0b3IoYXJyYXksIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgIHNldHRlcihhY2N1bXVsYXRvciwgdmFsdWUsIGl0ZXJhdGVlKHZhbHVlKSwgYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoUmlnaHRgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlFYWNoUmlnaHQoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbbGVuZ3RoXSwgbGVuZ3RoLCBhcnJheSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmV2ZXJ5YCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFsbCBlbGVtZW50cyBwYXNzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAqICBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUV2ZXJ5KGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKCFwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZpbHRlcmAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlGaWx0ZXIoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmNsdWRlc2AgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIHNwZWNpZnlpbmcgYW4gaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5SW5jbHVkZXMoYXJyYXksIHZhbHVlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIHJldHVybiAhIWxlbmd0aCAmJiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIDApID4gLTE7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhcnJheUluY2x1ZGVzYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGEgY29tcGFyYXRvci5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUluY2x1ZGVzV2l0aChhcnJheSwgdmFsdWUsIGNvbXBhcmF0b3IpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGNvbXBhcmF0b3IodmFsdWUsIGFycmF5W2luZGV4XSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWFwYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICogc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheU1hcChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhcHBlbmQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlQdXNoKGFycmF5LCB2YWx1ZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgICAgb2Zmc2V0ID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2luaXRBY2N1bV0gU3BlY2lmeSB1c2luZyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgIGFzXG4gICAqICB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlSZWR1Y2UoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgaWYgKGluaXRBY2N1bSAmJiBsZW5ndGgpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gYXJyYXlbKytpbmRleF07XG4gICAgfVxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlUmlnaHRgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbaW5pdEFjY3VtXSBTcGVjaWZ5IHVzaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YCBhc1xuICAgKiAgdGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5UmVkdWNlUmlnaHQoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIGlmIChpbml0QWNjdW0gJiYgbGVuZ3RoKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGFycmF5Wy0tbGVuZ3RoXTtcbiAgICB9XG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtsZW5ndGhdLCBsZW5ndGgsIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zb21lYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICogc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzaXplIG9mIGFuIEFTQ0lJIGBzdHJpbmdgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgaW5zcGVjdC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gICAqL1xuICB2YXIgYXNjaWlTaXplID0gYmFzZVByb3BlcnR5KCdsZW5ndGgnKTtcblxuICAvKipcbiAgICogQ29udmVydHMgYW4gQVNDSUkgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIGFzY2lpVG9BcnJheShzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nLnNwbGl0KCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdHMgYW4gQVNDSUkgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd29yZHMgb2YgYHN0cmluZ2AuXG4gICAqL1xuICBmdW5jdGlvbiBhc2NpaVdvcmRzKHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVBc2NpaVdvcmQpIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5maW5kS2V5YCBhbmQgYF8uZmluZExhc3RLZXlgLFxuICAgKiB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMsIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYGNvbGxlY3Rpb25gXG4gICAqIHVzaW5nIGBlYWNoRnVuY2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGBjb2xsZWN0aW9uYC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZvdW5kIGVsZW1lbnQgb3IgaXRzIGtleSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VGaW5kS2V5KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZWFjaEZ1bmMpIHtcbiAgICB2YXIgcmVzdWx0O1xuICAgIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGtleSwgY29sbGVjdGlvbikpIHtcbiAgICAgICAgcmVzdWx0ID0ga2V5O1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maW5kSW5kZXhgIGFuZCBgXy5maW5kTGFzdEluZGV4YCB3aXRob3V0XG4gICAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgsIGZyb21SaWdodCkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIGluZGV4ID0gZnJvbUluZGV4ICsgKGZyb21SaWdodCA/IDEgOiAtMSk7XG5cbiAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW5kZXhPZmAgd2l0aG91dCBgZnJvbUluZGV4YCBib3VuZHMgY2hlY2tzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICAgID8gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleClcbiAgICAgIDogYmFzZUZpbmRJbmRleChhcnJheSwgYmFzZUlzTmFOLCBmcm9tSW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYmFzZUluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VJbmRleE9mV2l0aChhcnJheSwgdmFsdWUsIGZyb21JbmRleCwgY29tcGFyYXRvcikge1xuICAgIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoY29tcGFyYXRvcihhcnJheVtpbmRleF0sIHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hTmAgd2l0aG91dCBzdXBwb3J0IGZvciBudW1iZXIgb2JqZWN0cy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlSXNOYU4odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lYW5gIGFuZCBgXy5tZWFuQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VNZWFuKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICByZXR1cm4gbGVuZ3RoID8gKGJhc2VTdW0oYXJyYXksIGl0ZXJhdGVlKSAvIGxlbmd0aCkgOiBOQU47XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVByb3BlcnR5KGtleSkge1xuICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlPZmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVByb3BlcnR5T2Yob2JqZWN0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZWR1Y2VgIGFuZCBgXy5yZWR1Y2VSaWdodGAsIHdpdGhvdXQgc3VwcG9ydFxuICAgKiBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgY29sbGVjdGlvbmAgdXNpbmcgYGVhY2hGdW5jYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0geyp9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGluaXRBY2N1bSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBvciBsYXN0IGVsZW1lbnQgb2ZcbiAgICogIGBjb2xsZWN0aW9uYCBhcyB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZWFjaEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBgY29sbGVjdGlvbmAuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VSZWR1Y2UoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGVhY2hGdW5jKSB7XG4gICAgZWFjaEZ1bmMoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGluaXRBY2N1bVxuICAgICAgICA/IChpbml0QWNjdW0gPSBmYWxzZSwgdmFsdWUpXG4gICAgICAgIDogaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRCeWAgd2hpY2ggdXNlcyBgY29tcGFyZXJgIHRvIGRlZmluZSB0aGVcbiAgICogc29ydCBvcmRlciBvZiBgYXJyYXlgIGFuZCByZXBsYWNlcyBjcml0ZXJpYSBvYmplY3RzIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZ1xuICAgKiB2YWx1ZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzb3J0LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJlciBUaGUgZnVuY3Rpb24gdG8gZGVmaW5lIHNvcnQgb3JkZXIuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVNvcnRCeShhcnJheSwgY29tcGFyZXIpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgYXJyYXkuc29ydChjb21wYXJlcik7XG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBhcnJheVtsZW5ndGhdID0gYXJyYXlbbGVuZ3RoXS52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnN1bWAgYW5kIGBfLnN1bUJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN1bS5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VTdW0oYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIHJlc3VsdCxcbiAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciBjdXJyZW50ID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdKTtcbiAgICAgIGlmIChjdXJyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBjdXJyZW50IDogKHJlc3VsdCArIGN1cnJlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRpbWVzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHNcbiAgICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShuKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1BhaXJzYCBhbmQgYF8udG9QYWlyc0luYCB3aGljaCBjcmVhdGVzIGFuIGFycmF5XG4gICAqIG9mIGtleS12YWx1ZSBwYWlycyBmb3IgYG9iamVjdGAgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZXMgb2YgYHByb3BzYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgbmFtZXMgdG8gZ2V0IHZhbHVlcyBmb3IuXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VUb1BhaXJzKG9iamVjdCwgcHJvcHMpIHtcbiAgICByZXR1cm4gYXJyYXlNYXAocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIFtrZXksIG9iamVjdFtrZXldXTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50cmltYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVRyaW0oc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZ1xuICAgICAgPyBzdHJpbmcuc2xpY2UoMCwgdHJpbW1lZEVuZEluZGV4KHN0cmluZykgKyAxKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJylcbiAgICAgIDogc3RyaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAgICogYXJyYXkgb2YgYG9iamVjdGAgcHJvcGVydHkgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb3BlcnR5IG5hbWVzXG4gICAqIG9mIGBwcm9wc2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgICByZXR1cm4gYXJyYXlNYXAocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdFtrZXldO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIGBjYWNoZWAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IGNhY2hlIFRoZSBjYWNoZSB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgICByZXR1cm4gY2FjaGUuaGFzKGtleSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbVN0YXJ0YCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBzdHJpbmcgc3ltYm9sXG4gICAqIHRoYXQgaXMgbm90IGZvdW5kIGluIHRoZSBjaGFyYWN0ZXIgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gc3RyU3ltYm9scyBUaGUgc3RyaW5nIHN5bWJvbHMgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtBcnJheX0gY2hyU3ltYm9scyBUaGUgY2hhcmFjdGVyIHN5bWJvbHMgdG8gZmluZC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IHVubWF0Y2hlZCBzdHJpbmcgc3ltYm9sLlxuICAgKi9cbiAgZnVuY3Rpb24gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc3RyU3ltYm9scy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCAmJiBiYXNlSW5kZXhPZihjaHJTeW1ib2xzLCBzdHJTeW1ib2xzW2luZGV4XSwgMCkgPiAtMSkge31cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbUVuZGAgdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBzdHJpbmcgc3ltYm9sXG4gICAqIHRoYXQgaXMgbm90IGZvdW5kIGluIHRoZSBjaGFyYWN0ZXIgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gc3RyU3ltYm9scyBUaGUgc3RyaW5nIHN5bWJvbHMgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtBcnJheX0gY2hyU3ltYm9scyBUaGUgY2hhcmFjdGVyIHN5bWJvbHMgdG8gZmluZC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdW5tYXRjaGVkIHN0cmluZyBzeW1ib2wuXG4gICAqL1xuICBmdW5jdGlvbiBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpIHtcbiAgICB2YXIgaW5kZXggPSBzdHJTeW1ib2xzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpbmRleC0tICYmIGJhc2VJbmRleE9mKGNoclN5bWJvbHMsIHN0clN5bWJvbHNbaW5kZXhdLCAwKSA+IC0xKSB7fVxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgYHBsYWNlaG9sZGVyYCBvY2N1cnJlbmNlcyBpbiBgYXJyYXlgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSBwbGFjZWhvbGRlciBUaGUgcGxhY2Vob2xkZXIgdG8gc2VhcmNoIGZvci5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcGxhY2Vob2xkZXIgY291bnQuXG4gICAqL1xuICBmdW5jdGlvbiBjb3VudEhvbGRlcnMoYXJyYXksIHBsYWNlaG9sZGVyKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzdWx0ID0gMDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgaWYgKGFycmF5W2xlbmd0aF0gPT09IHBsYWNlaG9sZGVyKSB7XG4gICAgICAgICsrcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8uZGVidXJyYCB0byBjb252ZXJ0IExhdGluLTEgU3VwcGxlbWVudCBhbmQgTGF0aW4gRXh0ZW5kZWQtQVxuICAgKiBsZXR0ZXJzIHRvIGJhc2ljIExhdGluIGxldHRlcnMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsZXR0ZXIgVGhlIG1hdGNoZWQgbGV0dGVyIHRvIGRlYnVyci5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZGVidXJyZWQgbGV0dGVyLlxuICAgKi9cbiAgdmFyIGRlYnVyckxldHRlciA9IGJhc2VQcm9wZXJ0eU9mKGRlYnVycmVkTGV0dGVycyk7XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8uZXNjYXBlYCB0byBjb252ZXJ0IGNoYXJhY3RlcnMgdG8gSFRNTCBlbnRpdGllcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNociBUaGUgbWF0Y2hlZCBjaGFyYWN0ZXIgdG8gZXNjYXBlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIGNoYXJhY3Rlci5cbiAgICovXG4gIHZhciBlc2NhcGVIdG1sQ2hhciA9IGJhc2VQcm9wZXJ0eU9mKGh0bWxFc2NhcGVzKTtcblxuICAvKipcbiAgICogVXNlZCBieSBgXy50ZW1wbGF0ZWAgdG8gZXNjYXBlIGNoYXJhY3RlcnMgZm9yIGluY2x1c2lvbiBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIGVzY2FwZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAqL1xuICBmdW5jdGlvbiBlc2NhcGVTdHJpbmdDaGFyKGNocikge1xuICAgIHJldHVybiAnXFxcXCcgKyBzdHJpbmdFc2NhcGVzW2Nocl07XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0VmFsdWUob2JqZWN0LCBrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYHN0cmluZ2AgY29udGFpbnMgVW5pY29kZSBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgc3ltYm9sIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBoYXNVbmljb2RlKHN0cmluZykge1xuICAgIHJldHVybiByZUhhc1VuaWNvZGUudGVzdChzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBgc3RyaW5nYCBjb250YWlucyBhIHdvcmQgY29tcG9zZWQgb2YgVW5pY29kZSBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgd29yZCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gaGFzVW5pY29kZVdvcmQoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHJlSGFzVW5pY29kZVdvcmQudGVzdChzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBpdGVyYXRvcmAgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBpdGVyYXRvciBUaGUgaXRlcmF0b3IgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBpdGVyYXRvclRvQXJyYXkoaXRlcmF0b3IpIHtcbiAgICB2YXIgZGF0YSxcbiAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICB3aGlsZSAoIShkYXRhID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICByZXN1bHQucHVzaChkYXRhLnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgbWFwYCB0byBpdHMga2V5LXZhbHVlIHBhaXJzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAqL1xuICBmdW5jdGlvbiBtYXBUb0FycmF5KG1hcCkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShtYXAuc2l6ZSk7XG5cbiAgICBtYXAuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICByZXN1bHRbKytpbmRleF0gPSBba2V5LCB2YWx1ZV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gb3ZlckFyZyhmdW5jLCB0cmFuc2Zvcm0pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgYHBsYWNlaG9sZGVyYCBlbGVtZW50cyBpbiBgYXJyYXlgIHdpdGggYW4gaW50ZXJuYWwgcGxhY2Vob2xkZXJcbiAgICogYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlaXIgaW5kZXhlcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICogQHBhcmFtIHsqfSBwbGFjZWhvbGRlciBUaGUgcGxhY2Vob2xkZXIgdG8gcmVwbGFjZS5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICovXG4gIGZ1bmN0aW9uIHJlcGxhY2VIb2xkZXJzKGFycmF5LCBwbGFjZWhvbGRlcikge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgaWYgKHZhbHVlID09PSBwbGFjZWhvbGRlciB8fCB2YWx1ZSA9PT0gUExBQ0VIT0xERVIpIHtcbiAgICAgICAgYXJyYXlbaW5kZXhdID0gUExBQ0VIT0xERVI7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzZXRgIHRvIGFuIGFycmF5IG9mIGl0cyB2YWx1ZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAgICovXG4gIGZ1bmN0aW9uIHNldFRvQXJyYXkoc2V0KSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KHNldC5zaXplKTtcblxuICAgIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzZXRgIHRvIGl0cyB2YWx1ZS12YWx1ZSBwYWlycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgdmFsdWUtdmFsdWUgcGFpcnMuXG4gICAqL1xuICBmdW5jdGlvbiBzZXRUb1BhaXJzKHNldCkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgICBzZXQuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmVzdWx0WysraW5kZXhdID0gW3ZhbHVlLCB2YWx1ZV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5kZXhPZmAgd2hpY2ggcGVyZm9ybXMgc3RyaWN0IGVxdWFsaXR5XG4gICAqIGNvbXBhcmlzb25zIG9mIHZhbHVlcywgaS5lLiBgPT09YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubGFzdEluZGV4T2ZgIHdoaWNoIHBlcmZvcm1zIHN0cmljdCBlcXVhbGl0eVxuICAgKiBjb21wYXJpc29ucyBvZiB2YWx1ZXMsIGkuZS4gYD09PWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmljdExhc3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgdmFyIGluZGV4ID0gZnJvbUluZGV4ICsgMTtcbiAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgaWYgKGFycmF5W2luZGV4XSA9PT0gdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbnVtYmVyIG9mIHN5bWJvbHMgaW4gYHN0cmluZ2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmluZ1NpemUoc3RyaW5nKSB7XG4gICAgcmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgICAgPyB1bmljb2RlU2l6ZShzdHJpbmcpXG4gICAgICA6IGFzY2lpU2l6ZShzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBzdHJpbmdUb0FycmF5KHN0cmluZykge1xuICAgIHJldHVybiBoYXNVbmljb2RlKHN0cmluZylcbiAgICAgID8gdW5pY29kZVRvQXJyYXkoc3RyaW5nKVxuICAgICAgOiBhc2NpaVRvQXJyYXkoc3RyaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltRW5kYCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlXG4gICAqIGNoYXJhY3RlciBvZiBgc3RyaW5nYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlIGNoYXJhY3Rlci5cbiAgICovXG4gIGZ1bmN0aW9uIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpIHtcbiAgICB2YXIgaW5kZXggPSBzdHJpbmcubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGluZGV4LS0gJiYgcmVXaGl0ZXNwYWNlLnRlc3Qoc3RyaW5nLmNoYXJBdChpbmRleCkpKSB7fVxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnVuZXNjYXBlYCB0byBjb252ZXJ0IEhUTUwgZW50aXRpZXMgdG8gY2hhcmFjdGVycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNociBUaGUgbWF0Y2hlZCBjaGFyYWN0ZXIgdG8gdW5lc2NhcGUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAqL1xuICB2YXIgdW5lc2NhcGVIdG1sQ2hhciA9IGJhc2VQcm9wZXJ0eU9mKGh0bWxVbmVzY2FwZXMpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzaXplIG9mIGEgVW5pY29kZSBgc3RyaW5nYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN0cmluZyBzaXplLlxuICAgKi9cbiAgZnVuY3Rpb24gdW5pY29kZVNpemUoc3RyaW5nKSB7XG4gICAgdmFyIHJlc3VsdCA9IHJlVW5pY29kZS5sYXN0SW5kZXggPSAwO1xuICAgIHdoaWxlIChyZVVuaWNvZGUudGVzdChzdHJpbmcpKSB7XG4gICAgICArK3Jlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIFVuaWNvZGUgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIHVuaWNvZGVUb0FycmF5KHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlKSB8fCBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdHMgYSBVbmljb2RlIGBzdHJpbmdgIGludG8gYW4gYXJyYXkgb2YgaXRzIHdvcmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHdvcmRzIG9mIGBzdHJpbmdgLlxuICAgKi9cbiAgZnVuY3Rpb24gdW5pY29kZVdvcmRzKHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlV29yZCkgfHwgW107XG4gIH1cblxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHByaXN0aW5lIGBsb2Rhc2hgIGZ1bmN0aW9uIHVzaW5nIHRoZSBgY29udGV4dGAgb2JqZWN0LlxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqIEBtZW1iZXJPZiBfXG4gICAqIEBzaW5jZSAxLjEuMFxuICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgKiBAcGFyYW0ge09iamVjdH0gW2NvbnRleHQ9cm9vdF0gVGhlIGNvbnRleHQgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYSBuZXcgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIF8ubWl4aW4oeyAnZm9vJzogXy5jb25zdGFudCgnZm9vJykgfSk7XG4gICAqXG4gICAqIHZhciBsb2Rhc2ggPSBfLnJ1bkluQ29udGV4dCgpO1xuICAgKiBsb2Rhc2gubWl4aW4oeyAnYmFyJzogbG9kYXNoLmNvbnN0YW50KCdiYXInKSB9KTtcbiAgICpcbiAgICogXy5pc0Z1bmN0aW9uKF8uZm9vKTtcbiAgICogLy8gPT4gdHJ1ZVxuICAgKiBfLmlzRnVuY3Rpb24oXy5iYXIpO1xuICAgKiAvLyA9PiBmYWxzZVxuICAgKlxuICAgKiBsb2Rhc2guaXNGdW5jdGlvbihsb2Rhc2guZm9vKTtcbiAgICogLy8gPT4gZmFsc2VcbiAgICogbG9kYXNoLmlzRnVuY3Rpb24obG9kYXNoLmJhcik7XG4gICAqIC8vID0+IHRydWVcbiAgICpcbiAgICogLy8gQ3JlYXRlIGEgc3VwZWQtdXAgYGRlZmVyYCBpbiBOb2RlLmpzLlxuICAgKiB2YXIgZGVmZXIgPSBfLnJ1bkluQ29udGV4dCh7ICdzZXRUaW1lb3V0Jzogc2V0SW1tZWRpYXRlIH0pLmRlZmVyO1xuICAgKi9cbiAgdmFyIHJ1bkluQ29udGV4dCA9IChmdW5jdGlvbiBydW5JbkNvbnRleHQoY29udGV4dCkge1xuICAgIGNvbnRleHQgPSBjb250ZXh0ID09IG51bGwgPyByb290IDogXy5kZWZhdWx0cyhyb290Lk9iamVjdCgpLCBjb250ZXh0LCBfLnBpY2socm9vdCwgY29udGV4dFByb3BzKSk7XG5cbiAgICAvKiogQnVpbHQtaW4gY29uc3RydWN0b3IgcmVmZXJlbmNlcy4gKi9cbiAgICB2YXIgQXJyYXkgPSBjb250ZXh0LkFycmF5LFxuICAgICAgICBEYXRlID0gY29udGV4dC5EYXRlLFxuICAgICAgICBFcnJvciA9IGNvbnRleHQuRXJyb3IsXG4gICAgICAgIEZ1bmN0aW9uID0gY29udGV4dC5GdW5jdGlvbixcbiAgICAgICAgTWF0aCA9IGNvbnRleHQuTWF0aCxcbiAgICAgICAgT2JqZWN0ID0gY29udGV4dC5PYmplY3QsXG4gICAgICAgIFJlZ0V4cCA9IGNvbnRleHQuUmVnRXhwLFxuICAgICAgICBTdHJpbmcgPSBjb250ZXh0LlN0cmluZyxcbiAgICAgICAgVHlwZUVycm9yID0gY29udGV4dC5UeXBlRXJyb3I7XG5cbiAgICAvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG4gICAgdmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGUsXG4gICAgICAgIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICAgICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4gICAgLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xuICAgIHZhciBjb3JlSnNEYXRhID0gY29udGV4dFsnX19jb3JlLWpzX3NoYXJlZF9fJ107XG5cbiAgICAvKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG4gICAgdmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuICAgIC8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xuICAgIHZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4gICAgLyoqIFVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIElEcy4gKi9cbiAgICB2YXIgaWRDb3VudGVyID0gMDtcblxuICAgIC8qKiBVc2VkIHRvIGRldGVjdCBtZXRob2RzIG1hc3F1ZXJhZGluZyBhcyBuYXRpdmUuICovXG4gICAgdmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICAgICAgcmV0dXJuIHVpZCA/ICgnU3ltYm9sKHNyYylfMS4nICsgdWlkKSA6ICcnO1xuICAgIH0oKSk7XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gICAgICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gICAgICogb2YgdmFsdWVzLlxuICAgICAqL1xuICAgIHZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4gICAgLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xuICAgIHZhciBvYmplY3RDdG9yU3RyaW5nID0gZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0KTtcblxuICAgIC8qKiBVc2VkIHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGBfYCByZWZlcmVuY2UgaW4gYF8ubm9Db25mbGljdGAuICovXG4gICAgdmFyIG9sZERhc2ggPSByb290Ll87XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xuICAgIHZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gICAgICBmdW5jVG9TdHJpbmcuY2FsbChoYXNPd25Qcm9wZXJ0eSkucmVwbGFjZShyZVJlZ0V4cENoYXIsICdcXFxcJCYnKVxuICAgICAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4gICAgKTtcblxuICAgIC8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xuICAgIHZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gY29udGV4dC5CdWZmZXIgOiB1bmRlZmluZWQsXG4gICAgICAgIFN5bWJvbCA9IGNvbnRleHQuU3ltYm9sLFxuICAgICAgICBVaW50OEFycmF5ID0gY29udGV4dC5VaW50OEFycmF5LFxuICAgICAgICBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCksXG4gICAgICAgIG9iamVjdENyZWF0ZSA9IE9iamVjdC5jcmVhdGUsXG4gICAgICAgIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGUsXG4gICAgICAgIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlLFxuICAgICAgICBzcHJlYWRhYmxlU3ltYm9sID0gU3ltYm9sID8gU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgc3ltSXRlcmF0b3IgPSBTeW1ib2wgPyBTeW1ib2wuaXRlcmF0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIGRlZmluZVByb3BlcnR5ID0gKGZ1bmN0aW9uKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICAgICAgZnVuYyh7fSwgJycsIHt9KTtcbiAgICAgICAgcmV0dXJuIGZ1bmM7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH0oKSk7XG5cbiAgICAvKiogTW9ja2VkIGJ1aWx0LWlucy4gKi9cbiAgICB2YXIgY3R4Q2xlYXJUaW1lb3V0ID0gY29udGV4dC5jbGVhclRpbWVvdXQgIT09IHJvb3QuY2xlYXJUaW1lb3V0ICYmIGNvbnRleHQuY2xlYXJUaW1lb3V0LFxuICAgICAgICBjdHhOb3cgPSBEYXRlICYmIERhdGUubm93ICE9PSByb290LkRhdGUubm93ICYmIERhdGUubm93LFxuICAgICAgICBjdHhTZXRUaW1lb3V0ID0gY29udGV4dC5zZXRUaW1lb3V0ICE9PSByb290LnNldFRpbWVvdXQgJiYgY29udGV4dC5zZXRUaW1lb3V0O1xuXG4gICAgLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xuICAgIHZhciBuYXRpdmVDZWlsID0gTWF0aC5jZWlsLFxuICAgICAgICBuYXRpdmVGbG9vciA9IE1hdGguZmxvb3IsXG4gICAgICAgIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLFxuICAgICAgICBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICAgICAgbmF0aXZlSXNGaW5pdGUgPSBjb250ZXh0LmlzRmluaXRlLFxuICAgICAgICBuYXRpdmVKb2luID0gYXJyYXlQcm90by5qb2luLFxuICAgICAgICBuYXRpdmVLZXlzID0gb3ZlckFyZyhPYmplY3Qua2V5cywgT2JqZWN0KSxcbiAgICAgICAgbmF0aXZlTWF4ID0gTWF0aC5tYXgsXG4gICAgICAgIG5hdGl2ZU1pbiA9IE1hdGgubWluLFxuICAgICAgICBuYXRpdmVOb3cgPSBEYXRlLm5vdyxcbiAgICAgICAgbmF0aXZlUGFyc2VJbnQgPSBjb250ZXh0LnBhcnNlSW50LFxuICAgICAgICBuYXRpdmVSYW5kb20gPSBNYXRoLnJhbmRvbSxcbiAgICAgICAgbmF0aXZlUmV2ZXJzZSA9IGFycmF5UHJvdG8ucmV2ZXJzZTtcblxuICAgIC8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbiAgICB2YXIgRGF0YVZpZXcgPSBnZXROYXRpdmUoY29udGV4dCwgJ0RhdGFWaWV3JyksXG4gICAgICAgIE1hcCA9IGdldE5hdGl2ZShjb250ZXh0LCAnTWFwJyksXG4gICAgICAgIFByb21pc2UgPSBnZXROYXRpdmUoY29udGV4dCwgJ1Byb21pc2UnKSxcbiAgICAgICAgU2V0ID0gZ2V0TmF0aXZlKGNvbnRleHQsICdTZXQnKSxcbiAgICAgICAgV2Vha01hcCA9IGdldE5hdGl2ZShjb250ZXh0LCAnV2Vha01hcCcpLFxuICAgICAgICBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5cbiAgICAvKiogVXNlZCB0byBzdG9yZSBmdW5jdGlvbiBtZXRhZGF0YS4gKi9cbiAgICB2YXIgbWV0YU1hcCA9IFdlYWtNYXAgJiYgbmV3IFdlYWtNYXA7XG5cbiAgICAvKiogVXNlZCB0byBsb29rdXAgdW5taW5pZmllZCBmdW5jdGlvbiBuYW1lcy4gKi9cbiAgICB2YXIgcmVhbE5hbWVzID0ge307XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3QgbWFwcywgc2V0cywgYW5kIHdlYWttYXBzLiAqL1xuICAgIHZhciBkYXRhVmlld0N0b3JTdHJpbmcgPSB0b1NvdXJjZShEYXRhVmlldyksXG4gICAgICAgIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLFxuICAgICAgICBwcm9taXNlQ3RvclN0cmluZyA9IHRvU291cmNlKFByb21pc2UpLFxuICAgICAgICBzZXRDdG9yU3RyaW5nID0gdG9Tb3VyY2UoU2V0KSxcbiAgICAgICAgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcblxuICAgIC8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xuICAgIHZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgbG9kYXNoYCBvYmplY3Qgd2hpY2ggd3JhcHMgYHZhbHVlYCB0byBlbmFibGUgaW1wbGljaXQgbWV0aG9kXG4gICAgICogY2hhaW4gc2VxdWVuY2VzLiBNZXRob2RzIHRoYXQgb3BlcmF0ZSBvbiBhbmQgcmV0dXJuIGFycmF5cywgY29sbGVjdGlvbnMsXG4gICAgICogYW5kIGZ1bmN0aW9ucyBjYW4gYmUgY2hhaW5lZCB0b2dldGhlci4gTWV0aG9kcyB0aGF0IHJldHJpZXZlIGEgc2luZ2xlIHZhbHVlXG4gICAgICogb3IgbWF5IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZSB3aWxsIGF1dG9tYXRpY2FsbHkgZW5kIHRoZSBjaGFpbiBzZXF1ZW5jZVxuICAgICAqIGFuZCByZXR1cm4gdGhlIHVud3JhcHBlZCB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgdmFsdWUgbXVzdCBiZSB1bndyYXBwZWRcbiAgICAgKiB3aXRoIGBfI3ZhbHVlYC5cbiAgICAgKlxuICAgICAqIEV4cGxpY2l0IGNoYWluIHNlcXVlbmNlcywgd2hpY2ggbXVzdCBiZSB1bndyYXBwZWQgd2l0aCBgXyN2YWx1ZWAsIG1heSBiZVxuICAgICAqIGVuYWJsZWQgdXNpbmcgYF8uY2hhaW5gLlxuICAgICAqXG4gICAgICogVGhlIGV4ZWN1dGlvbiBvZiBjaGFpbmVkIG1ldGhvZHMgaXMgbGF6eSwgdGhhdCBpcywgaXQncyBkZWZlcnJlZCB1bnRpbFxuICAgICAqIGBfI3ZhbHVlYCBpcyBpbXBsaWNpdGx5IG9yIGV4cGxpY2l0bHkgY2FsbGVkLlxuICAgICAqXG4gICAgICogTGF6eSBldmFsdWF0aW9uIGFsbG93cyBzZXZlcmFsIG1ldGhvZHMgdG8gc3VwcG9ydCBzaG9ydGN1dCBmdXNpb24uXG4gICAgICogU2hvcnRjdXQgZnVzaW9uIGlzIGFuIG9wdGltaXphdGlvbiB0byBtZXJnZSBpdGVyYXRlZSBjYWxsczsgdGhpcyBhdm9pZHNcbiAgICAgKiB0aGUgY3JlYXRpb24gb2YgaW50ZXJtZWRpYXRlIGFycmF5cyBhbmQgY2FuIGdyZWF0bHkgcmVkdWNlIHRoZSBudW1iZXIgb2ZcbiAgICAgKiBpdGVyYXRlZSBleGVjdXRpb25zLiBTZWN0aW9ucyBvZiBhIGNoYWluIHNlcXVlbmNlIHF1YWxpZnkgZm9yIHNob3J0Y3V0XG4gICAgICogZnVzaW9uIGlmIHRoZSBzZWN0aW9uIGlzIGFwcGxpZWQgdG8gYW4gYXJyYXkgYW5kIGl0ZXJhdGVlcyBhY2NlcHQgb25seVxuICAgICAqIG9uZSBhcmd1bWVudC4gVGhlIGhldXJpc3RpYyBmb3Igd2hldGhlciBhIHNlY3Rpb24gcXVhbGlmaWVzIGZvciBzaG9ydGN1dFxuICAgICAqIGZ1c2lvbiBpcyBzdWJqZWN0IHRvIGNoYW5nZS5cbiAgICAgKlxuICAgICAqIENoYWluaW5nIGlzIHN1cHBvcnRlZCBpbiBjdXN0b20gYnVpbGRzIGFzIGxvbmcgYXMgdGhlIGBfI3ZhbHVlYCBtZXRob2QgaXNcbiAgICAgKiBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGluY2x1ZGVkIGluIHRoZSBidWlsZC5cbiAgICAgKlxuICAgICAqIEluIGFkZGl0aW9uIHRvIGxvZGFzaCBtZXRob2RzLCB3cmFwcGVycyBoYXZlIGBBcnJheWAgYW5kIGBTdHJpbmdgIG1ldGhvZHMuXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBgQXJyYXlgIG1ldGhvZHMgYXJlOlxuICAgICAqIGBjb25jYXRgLCBgam9pbmAsIGBwb3BgLCBgcHVzaGAsIGBzaGlmdGAsIGBzb3J0YCwgYHNwbGljZWAsIGFuZCBgdW5zaGlmdGBcbiAgICAgKlxuICAgICAqIFRoZSB3cmFwcGVyIGBTdHJpbmdgIG1ldGhvZHMgYXJlOlxuICAgICAqIGByZXBsYWNlYCBhbmQgYHNwbGl0YFxuICAgICAqXG4gICAgICogVGhlIHdyYXBwZXIgbWV0aG9kcyB0aGF0IHN1cHBvcnQgc2hvcnRjdXQgZnVzaW9uIGFyZTpcbiAgICAgKiBgYXRgLCBgY29tcGFjdGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsIGBkcm9wV2hpbGVgLCBgZmlsdGVyYCwgYGZpbmRgLFxuICAgICAqIGBmaW5kTGFzdGAsIGBoZWFkYCwgYGluaXRpYWxgLCBgbGFzdGAsIGBtYXBgLCBgcmVqZWN0YCwgYHJldmVyc2VgLCBgc2xpY2VgLFxuICAgICAqIGB0YWlsYCwgYHRha2VgLCBgdGFrZVJpZ2h0YCwgYHRha2VSaWdodFdoaWxlYCwgYHRha2VXaGlsZWAsIGFuZCBgdG9BcnJheWBcbiAgICAgKlxuICAgICAqIFRoZSBjaGFpbmFibGUgd3JhcHBlciBtZXRob2RzIGFyZTpcbiAgICAgKiBgYWZ0ZXJgLCBgYXJ5YCwgYGFzc2lnbmAsIGBhc3NpZ25JbmAsIGBhc3NpZ25JbldpdGhgLCBgYXNzaWduV2l0aGAsIGBhdGAsXG4gICAgICogYGJlZm9yZWAsIGBiaW5kYCwgYGJpbmRBbGxgLCBgYmluZEtleWAsIGBjYXN0QXJyYXlgLCBgY2hhaW5gLCBgY2h1bmtgLFxuICAgICAqIGBjb21taXRgLCBgY29tcGFjdGAsIGBjb25jYXRgLCBgY29uZm9ybXNgLCBgY29uc3RhbnRgLCBgY291bnRCeWAsIGBjcmVhdGVgLFxuICAgICAqIGBjdXJyeWAsIGBkZWJvdW5jZWAsIGBkZWZhdWx0c2AsIGBkZWZhdWx0c0RlZXBgLCBgZGVmZXJgLCBgZGVsYXlgLFxuICAgICAqIGBkaWZmZXJlbmNlYCwgYGRpZmZlcmVuY2VCeWAsIGBkaWZmZXJlbmNlV2l0aGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsXG4gICAgICogYGRyb3BSaWdodFdoaWxlYCwgYGRyb3BXaGlsZWAsIGBleHRlbmRgLCBgZXh0ZW5kV2l0aGAsIGBmaWxsYCwgYGZpbHRlcmAsXG4gICAgICogYGZsYXRNYXBgLCBgZmxhdE1hcERlZXBgLCBgZmxhdE1hcERlcHRoYCwgYGZsYXR0ZW5gLCBgZmxhdHRlbkRlZXBgLFxuICAgICAqIGBmbGF0dGVuRGVwdGhgLCBgZmxpcGAsIGBmbG93YCwgYGZsb3dSaWdodGAsIGBmcm9tUGFpcnNgLCBgZnVuY3Rpb25zYCxcbiAgICAgKiBgZnVuY3Rpb25zSW5gLCBgZ3JvdXBCeWAsIGBpbml0aWFsYCwgYGludGVyc2VjdGlvbmAsIGBpbnRlcnNlY3Rpb25CeWAsXG4gICAgICogYGludGVyc2VjdGlvbldpdGhgLCBgaW52ZXJ0YCwgYGludmVydEJ5YCwgYGludm9rZU1hcGAsIGBpdGVyYXRlZWAsIGBrZXlCeWAsXG4gICAgICogYGtleXNgLCBga2V5c0luYCwgYG1hcGAsIGBtYXBLZXlzYCwgYG1hcFZhbHVlc2AsIGBtYXRjaGVzYCwgYG1hdGNoZXNQcm9wZXJ0eWAsXG4gICAgICogYG1lbW9pemVgLCBgbWVyZ2VgLCBgbWVyZ2VXaXRoYCwgYG1ldGhvZGAsIGBtZXRob2RPZmAsIGBtaXhpbmAsIGBuZWdhdGVgLFxuICAgICAqIGBudGhBcmdgLCBgb21pdGAsIGBvbWl0QnlgLCBgb25jZWAsIGBvcmRlckJ5YCwgYG92ZXJgLCBgb3ZlckFyZ3NgLFxuICAgICAqIGBvdmVyRXZlcnlgLCBgb3ZlclNvbWVgLCBgcGFydGlhbGAsIGBwYXJ0aWFsUmlnaHRgLCBgcGFydGl0aW9uYCwgYHBpY2tgLFxuICAgICAqIGBwaWNrQnlgLCBgcGxhbnRgLCBgcHJvcGVydHlgLCBgcHJvcGVydHlPZmAsIGBwdWxsYCwgYHB1bGxBbGxgLCBgcHVsbEFsbEJ5YCxcbiAgICAgKiBgcHVsbEFsbFdpdGhgLCBgcHVsbEF0YCwgYHB1c2hgLCBgcmFuZ2VgLCBgcmFuZ2VSaWdodGAsIGByZWFyZ2AsIGByZWplY3RgLFxuICAgICAqIGByZW1vdmVgLCBgcmVzdGAsIGByZXZlcnNlYCwgYHNhbXBsZVNpemVgLCBgc2V0YCwgYHNldFdpdGhgLCBgc2h1ZmZsZWAsXG4gICAgICogYHNsaWNlYCwgYHNvcnRgLCBgc29ydEJ5YCwgYHNwbGljZWAsIGBzcHJlYWRgLCBgdGFpbGAsIGB0YWtlYCwgYHRha2VSaWdodGAsXG4gICAgICogYHRha2VSaWdodFdoaWxlYCwgYHRha2VXaGlsZWAsIGB0YXBgLCBgdGhyb3R0bGVgLCBgdGhydWAsIGB0b0FycmF5YCxcbiAgICAgKiBgdG9QYWlyc2AsIGB0b1BhaXJzSW5gLCBgdG9QYXRoYCwgYHRvUGxhaW5PYmplY3RgLCBgdHJhbnNmb3JtYCwgYHVuYXJ5YCxcbiAgICAgKiBgdW5pb25gLCBgdW5pb25CeWAsIGB1bmlvbldpdGhgLCBgdW5pcWAsIGB1bmlxQnlgLCBgdW5pcVdpdGhgLCBgdW5zZXRgLFxuICAgICAqIGB1bnNoaWZ0YCwgYHVuemlwYCwgYHVuemlwV2l0aGAsIGB1cGRhdGVgLCBgdXBkYXRlV2l0aGAsIGB2YWx1ZXNgLFxuICAgICAqIGB2YWx1ZXNJbmAsIGB3aXRob3V0YCwgYHdyYXBgLCBgeG9yYCwgYHhvckJ5YCwgYHhvcldpdGhgLCBgemlwYCxcbiAgICAgKiBgemlwT2JqZWN0YCwgYHppcE9iamVjdERlZXBgLCBhbmQgYHppcFdpdGhgXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBtZXRob2RzIHRoYXQgYXJlICoqbm90KiogY2hhaW5hYmxlIGJ5IGRlZmF1bHQgYXJlOlxuICAgICAqIGBhZGRgLCBgYXR0ZW1wdGAsIGBjYW1lbENhc2VgLCBgY2FwaXRhbGl6ZWAsIGBjZWlsYCwgYGNsYW1wYCwgYGNsb25lYCxcbiAgICAgKiBgY2xvbmVEZWVwYCwgYGNsb25lRGVlcFdpdGhgLCBgY2xvbmVXaXRoYCwgYGNvbmZvcm1zVG9gLCBgZGVidXJyYCxcbiAgICAgKiBgZGVmYXVsdFRvYCwgYGRpdmlkZWAsIGBlYWNoYCwgYGVhY2hSaWdodGAsIGBlbmRzV2l0aGAsIGBlcWAsIGBlc2NhcGVgLFxuICAgICAqIGBlc2NhcGVSZWdFeHBgLCBgZXZlcnlgLCBgZmluZGAsIGBmaW5kSW5kZXhgLCBgZmluZEtleWAsIGBmaW5kTGFzdGAsXG4gICAgICogYGZpbmRMYXN0SW5kZXhgLCBgZmluZExhc3RLZXlgLCBgZmlyc3RgLCBgZmxvb3JgLCBgZm9yRWFjaGAsIGBmb3JFYWNoUmlnaHRgLFxuICAgICAqIGBmb3JJbmAsIGBmb3JJblJpZ2h0YCwgYGZvck93bmAsIGBmb3JPd25SaWdodGAsIGBnZXRgLCBgZ3RgLCBgZ3RlYCwgYGhhc2AsXG4gICAgICogYGhhc0luYCwgYGhlYWRgLCBgaWRlbnRpdHlgLCBgaW5jbHVkZXNgLCBgaW5kZXhPZmAsIGBpblJhbmdlYCwgYGludm9rZWAsXG4gICAgICogYGlzQXJndW1lbnRzYCwgYGlzQXJyYXlgLCBgaXNBcnJheUJ1ZmZlcmAsIGBpc0FycmF5TGlrZWAsIGBpc0FycmF5TGlrZU9iamVjdGAsXG4gICAgICogYGlzQm9vbGVhbmAsIGBpc0J1ZmZlcmAsIGBpc0RhdGVgLCBgaXNFbGVtZW50YCwgYGlzRW1wdHlgLCBgaXNFcXVhbGAsXG4gICAgICogYGlzRXF1YWxXaXRoYCwgYGlzRXJyb3JgLCBgaXNGaW5pdGVgLCBgaXNGdW5jdGlvbmAsIGBpc0ludGVnZXJgLCBgaXNMZW5ndGhgLFxuICAgICAqIGBpc01hcGAsIGBpc01hdGNoYCwgYGlzTWF0Y2hXaXRoYCwgYGlzTmFOYCwgYGlzTmF0aXZlYCwgYGlzTmlsYCwgYGlzTnVsbGAsXG4gICAgICogYGlzTnVtYmVyYCwgYGlzT2JqZWN0YCwgYGlzT2JqZWN0TGlrZWAsIGBpc1BsYWluT2JqZWN0YCwgYGlzUmVnRXhwYCxcbiAgICAgKiBgaXNTYWZlSW50ZWdlcmAsIGBpc1NldGAsIGBpc1N0cmluZ2AsIGBpc1VuZGVmaW5lZGAsIGBpc1R5cGVkQXJyYXlgLFxuICAgICAqIGBpc1dlYWtNYXBgLCBgaXNXZWFrU2V0YCwgYGpvaW5gLCBga2ViYWJDYXNlYCwgYGxhc3RgLCBgbGFzdEluZGV4T2ZgLFxuICAgICAqIGBsb3dlckNhc2VgLCBgbG93ZXJGaXJzdGAsIGBsdGAsIGBsdGVgLCBgbWF4YCwgYG1heEJ5YCwgYG1lYW5gLCBgbWVhbkJ5YCxcbiAgICAgKiBgbWluYCwgYG1pbkJ5YCwgYG11bHRpcGx5YCwgYG5vQ29uZmxpY3RgLCBgbm9vcGAsIGBub3dgLCBgbnRoYCwgYHBhZGAsXG4gICAgICogYHBhZEVuZGAsIGBwYWRTdGFydGAsIGBwYXJzZUludGAsIGBwb3BgLCBgcmFuZG9tYCwgYHJlZHVjZWAsIGByZWR1Y2VSaWdodGAsXG4gICAgICogYHJlcGVhdGAsIGByZXN1bHRgLCBgcm91bmRgLCBgcnVuSW5Db250ZXh0YCwgYHNhbXBsZWAsIGBzaGlmdGAsIGBzaXplYCxcbiAgICAgKiBgc25ha2VDYXNlYCwgYHNvbWVgLCBgc29ydGVkSW5kZXhgLCBgc29ydGVkSW5kZXhCeWAsIGBzb3J0ZWRMYXN0SW5kZXhgLFxuICAgICAqIGBzb3J0ZWRMYXN0SW5kZXhCeWAsIGBzdGFydENhc2VgLCBgc3RhcnRzV2l0aGAsIGBzdHViQXJyYXlgLCBgc3R1YkZhbHNlYCxcbiAgICAgKiBgc3R1Yk9iamVjdGAsIGBzdHViU3RyaW5nYCwgYHN0dWJUcnVlYCwgYHN1YnRyYWN0YCwgYHN1bWAsIGBzdW1CeWAsXG4gICAgICogYHRlbXBsYXRlYCwgYHRpbWVzYCwgYHRvRmluaXRlYCwgYHRvSW50ZWdlcmAsIGB0b0pTT05gLCBgdG9MZW5ndGhgLFxuICAgICAqIGB0b0xvd2VyYCwgYHRvTnVtYmVyYCwgYHRvU2FmZUludGVnZXJgLCBgdG9TdHJpbmdgLCBgdG9VcHBlcmAsIGB0cmltYCxcbiAgICAgKiBgdHJpbUVuZGAsIGB0cmltU3RhcnRgLCBgdHJ1bmNhdGVgLCBgdW5lc2NhcGVgLCBgdW5pcXVlSWRgLCBgdXBwZXJDYXNlYCxcbiAgICAgKiBgdXBwZXJGaXJzdGAsIGB2YWx1ZWAsIGFuZCBgd29yZHNgXG4gICAgICpcbiAgICAgKiBAbmFtZSBfXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAgaW4gYSBgbG9kYXNoYCBpbnN0YW5jZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDIsIDNdKTtcbiAgICAgKlxuICAgICAqIC8vIFJldHVybnMgYW4gdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIHdyYXBwZWQucmVkdWNlKF8uYWRkKTtcbiAgICAgKiAvLyA9PiA2XG4gICAgICpcbiAgICAgKiAvLyBSZXR1cm5zIGEgd3JhcHBlZCB2YWx1ZS5cbiAgICAgKiB2YXIgc3F1YXJlcyA9IHdyYXBwZWQubWFwKHNxdWFyZSk7XG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoc3F1YXJlcyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShzcXVhcmVzLnZhbHVlKCkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsb2Rhc2godmFsdWUpIHtcbiAgICAgIGlmIChpc09iamVjdExpa2UodmFsdWUpICYmICFpc0FycmF5KHZhbHVlKSAmJiAhKHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpKSB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIExvZGFzaFdyYXBwZXIpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdfX3dyYXBwZWRfXycpKSB7XG4gICAgICAgICAgcmV0dXJuIHdyYXBwZXJDbG9uZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY3JlYXRlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGFzc2lnbmluZ1xuICAgICAqIHByb3BlcnRpZXMgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvdG8gVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUNyZWF0ZSA9IChmdW5jdGlvbigpIHtcbiAgICAgIGZ1bmN0aW9uIG9iamVjdCgpIHt9XG4gICAgICByZXR1cm4gZnVuY3Rpb24ocHJvdG8pIHtcbiAgICAgICAgaWYgKCFpc09iamVjdChwcm90bykpIHtcbiAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9iamVjdENyZWF0ZSkge1xuICAgICAgICAgIHJldHVybiBvYmplY3RDcmVhdGUocHJvdG8pO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdC5wcm90b3R5cGUgPSBwcm90bztcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBvYmplY3Q7XG4gICAgICAgIG9iamVjdC5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0oKSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZnVuY3Rpb24gd2hvc2UgcHJvdG90eXBlIGNoYWluIHNlcXVlbmNlIHdyYXBwZXJzIGluaGVyaXQgZnJvbS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUxvZGFzaCgpIHtcbiAgICAgIC8vIE5vIG9wZXJhdGlvbiBwZXJmb3JtZWQuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgY29uc3RydWN0b3IgZm9yIGNyZWF0aW5nIGBsb2Rhc2hgIHdyYXBwZXIgb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtjaGFpbkFsbF0gRW5hYmxlIGV4cGxpY2l0IG1ldGhvZCBjaGFpbiBzZXF1ZW5jZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gTG9kYXNoV3JhcHBlcih2YWx1ZSwgY2hhaW5BbGwpIHtcbiAgICAgIHRoaXMuX193cmFwcGVkX18gPSB2YWx1ZTtcbiAgICAgIHRoaXMuX19hY3Rpb25zX18gPSBbXTtcbiAgICAgIHRoaXMuX19jaGFpbl9fID0gISFjaGFpbkFsbDtcbiAgICAgIHRoaXMuX19pbmRleF9fID0gMDtcbiAgICAgIHRoaXMuX192YWx1ZXNfXyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCeSBkZWZhdWx0LCB0aGUgdGVtcGxhdGUgZGVsaW1pdGVycyB1c2VkIGJ5IGxvZGFzaCBhcmUgbGlrZSB0aG9zZSBpblxuICAgICAqIGVtYmVkZGVkIFJ1YnkgKEVSQikgYXMgd2VsbCBhcyBFUzIwMTUgdGVtcGxhdGUgc3RyaW5ncy4gQ2hhbmdlIHRoZVxuICAgICAqIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICovXG4gICAgbG9kYXNoLnRlbXBsYXRlU2V0dGluZ3MgPSB7XG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBiZSBIVE1MLWVzY2FwZWQuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgICAqL1xuICAgICAgJ2VzY2FwZSc6IHJlRXNjYXBlLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgdG8gZGV0ZWN0IGNvZGUgdG8gYmUgZXZhbHVhdGVkLlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtSZWdFeHB9XG4gICAgICAgKi9cbiAgICAgICdldmFsdWF0ZSc6IHJlRXZhbHVhdGUsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBpbmplY3QuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgICAqL1xuICAgICAgJ2ludGVycG9sYXRlJzogcmVJbnRlcnBvbGF0ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2VkIHRvIHJlZmVyZW5jZSB0aGUgZGF0YSBvYmplY3QgaW4gdGhlIHRlbXBsYXRlIHRleHQuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAqL1xuICAgICAgJ3ZhcmlhYmxlJzogJycsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBpbXBvcnQgdmFyaWFibGVzIGludG8gdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICAgKi9cbiAgICAgICdpbXBvcnRzJzoge1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3MuaW1wb3J0c1xuICAgICAgICAgKiBAdHlwZSB7RnVuY3Rpb259XG4gICAgICAgICAqL1xuICAgICAgICAnXyc6IGxvZGFzaFxuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBFbnN1cmUgd3JhcHBlcnMgYXJlIGluc3RhbmNlcyBvZiBgYmFzZUxvZGFzaGAuXG4gICAgbG9kYXNoLnByb3RvdHlwZSA9IGJhc2VMb2Rhc2gucHJvdG90eXBlO1xuICAgIGxvZGFzaC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBsb2Rhc2g7XG5cbiAgICBMb2Rhc2hXcmFwcGVyLnByb3RvdHlwZSA9IGJhc2VDcmVhdGUoYmFzZUxvZGFzaC5wcm90b3R5cGUpO1xuICAgIExvZGFzaFdyYXBwZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTG9kYXNoV3JhcHBlcjtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBsYXp5IHdyYXBwZXIgb2JqZWN0IHdoaWNoIHdyYXBzIGB2YWx1ZWAgdG8gZW5hYmxlIGxhenkgZXZhbHVhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBMYXp5V3JhcHBlcih2YWx1ZSkge1xuICAgICAgdGhpcy5fX3dyYXBwZWRfXyA9IHZhbHVlO1xuICAgICAgdGhpcy5fX2FjdGlvbnNfXyA9IFtdO1xuICAgICAgdGhpcy5fX2Rpcl9fID0gMTtcbiAgICAgIHRoaXMuX19maWx0ZXJlZF9fID0gZmFsc2U7XG4gICAgICB0aGlzLl9faXRlcmF0ZWVzX18gPSBbXTtcbiAgICAgIHRoaXMuX190YWtlQ291bnRfXyA9IE1BWF9BUlJBWV9MRU5HVEg7XG4gICAgICB0aGlzLl9fdmlld3NfXyA9IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgbGF6eSB3cmFwcGVyIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgY2xvbmVcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgYExhenlXcmFwcGVyYCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGF6eUNsb25lKCkge1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMYXp5V3JhcHBlcih0aGlzLl9fd3JhcHBlZF9fKTtcbiAgICAgIHJlc3VsdC5fX2FjdGlvbnNfXyA9IGNvcHlBcnJheSh0aGlzLl9fYWN0aW9uc19fKTtcbiAgICAgIHJlc3VsdC5fX2Rpcl9fID0gdGhpcy5fX2Rpcl9fO1xuICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHRoaXMuX19maWx0ZXJlZF9fO1xuICAgICAgcmVzdWx0Ll9faXRlcmF0ZWVzX18gPSBjb3B5QXJyYXkodGhpcy5fX2l0ZXJhdGVlc19fKTtcbiAgICAgIHJlc3VsdC5fX3Rha2VDb3VudF9fID0gdGhpcy5fX3Rha2VDb3VudF9fO1xuICAgICAgcmVzdWx0Ll9fdmlld3NfXyA9IGNvcHlBcnJheSh0aGlzLl9fdmlld3NfXyk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldmVyc2VzIHRoZSBkaXJlY3Rpb24gb2YgbGF6eSBpdGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHJldmVyc2VcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgcmV2ZXJzZWQgYExhenlXcmFwcGVyYCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGF6eVJldmVyc2UoKSB7XG4gICAgICBpZiAodGhpcy5fX2ZpbHRlcmVkX18pIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgICAgcmVzdWx0Ll9fZGlyX18gPSAtMTtcbiAgICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSB0aGlzLmNsb25lKCk7XG4gICAgICAgIHJlc3VsdC5fX2Rpcl9fICo9IC0xO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyB0aGUgdW53cmFwcGVkIHZhbHVlIGZyb20gaXRzIGxhenkgd3JhcHBlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgdmFsdWVcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhenlWYWx1ZSgpIHtcbiAgICAgIHZhciBhcnJheSA9IHRoaXMuX193cmFwcGVkX18udmFsdWUoKSxcbiAgICAgICAgICBkaXIgPSB0aGlzLl9fZGlyX18sXG4gICAgICAgICAgaXNBcnIgPSBpc0FycmF5KGFycmF5KSxcbiAgICAgICAgICBpc1JpZ2h0ID0gZGlyIDwgMCxcbiAgICAgICAgICBhcnJMZW5ndGggPSBpc0FyciA/IGFycmF5Lmxlbmd0aCA6IDAsXG4gICAgICAgICAgdmlldyA9IGdldFZpZXcoMCwgYXJyTGVuZ3RoLCB0aGlzLl9fdmlld3NfXyksXG4gICAgICAgICAgc3RhcnQgPSB2aWV3LnN0YXJ0LFxuICAgICAgICAgIGVuZCA9IHZpZXcuZW5kLFxuICAgICAgICAgIGxlbmd0aCA9IGVuZCAtIHN0YXJ0LFxuICAgICAgICAgIGluZGV4ID0gaXNSaWdodCA/IGVuZCA6IChzdGFydCAtIDEpLFxuICAgICAgICAgIGl0ZXJhdGVlcyA9IHRoaXMuX19pdGVyYXRlZXNfXyxcbiAgICAgICAgICBpdGVyTGVuZ3RoID0gaXRlcmF0ZWVzLmxlbmd0aCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgdGFrZUNvdW50ID0gbmF0aXZlTWluKGxlbmd0aCwgdGhpcy5fX3Rha2VDb3VudF9fKTtcblxuICAgICAgaWYgKCFpc0FyciB8fCAoIWlzUmlnaHQgJiYgYXJyTGVuZ3RoID09IGxlbmd0aCAmJiB0YWtlQ291bnQgPT0gbGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gYmFzZVdyYXBwZXJWYWx1ZShhcnJheSwgdGhpcy5fX2FjdGlvbnNfXyk7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG5cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKGxlbmd0aC0tICYmIHJlc0luZGV4IDwgdGFrZUNvdW50KSB7XG4gICAgICAgIGluZGV4ICs9IGRpcjtcblxuICAgICAgICB2YXIgaXRlckluZGV4ID0gLTEsXG4gICAgICAgICAgICB2YWx1ZSA9IGFycmF5W2luZGV4XTtcblxuICAgICAgICB3aGlsZSAoKytpdGVySW5kZXggPCBpdGVyTGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIGRhdGEgPSBpdGVyYXRlZXNbaXRlckluZGV4XSxcbiAgICAgICAgICAgICAgaXRlcmF0ZWUgPSBkYXRhLml0ZXJhdGVlLFxuICAgICAgICAgICAgICB0eXBlID0gZGF0YS50eXBlLFxuICAgICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgICAgICAgIGlmICh0eXBlID09IExBWllfTUFQX0ZMQUcpIHtcbiAgICAgICAgICAgIHZhbHVlID0gY29tcHV0ZWQ7XG4gICAgICAgICAgfSBlbHNlIGlmICghY29tcHV0ZWQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlID09IExBWllfRklMVEVSX0ZMQUcpIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBicmVhayBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSBgTGF6eVdyYXBwZXJgIGlzIGFuIGluc3RhbmNlIG9mIGBiYXNlTG9kYXNoYC5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUgPSBiYXNlQ3JlYXRlKGJhc2VMb2Rhc2gucHJvdG90eXBlKTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMYXp5V3JhcHBlcjtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBoYXNoIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gSGFzaChlbnRyaWVzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGhhc2guXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoQ2xlYXIoKSB7XG4gICAgICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBoYXNoLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzaERlbGV0ZShrZXkpIHtcbiAgICAgIHZhciByZXN1bHQgPSB0aGlzLmhhcyhrZXkpICYmIGRlbGV0ZSB0aGlzLl9fZGF0YV9fW2tleV07XG4gICAgICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoR2V0KGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gZGF0YVtrZXldO1xuICAgICAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkgPyBkYXRhW2tleV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoSGFzKGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgcmV0dXJuIG5hdGl2ZUNyZWF0ZSA/IChkYXRhW2tleV0gIT09IHVuZGVmaW5lZCkgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBoYXNoIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgdGhpcy5zaXplICs9IHRoaXMuaGFzKGtleSkgPyAwIDogMTtcbiAgICAgIGRhdGFba2V5XSA9IChuYXRpdmVDcmVhdGUgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYEhhc2hgLlxuICAgIEhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuICAgIEhhc2gucHJvdG90eXBlWydkZWxldGUnXSA9IGhhc2hEZWxldGU7XG4gICAgSGFzaC5wcm90b3R5cGUuZ2V0ID0gaGFzaEdldDtcbiAgICBIYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuICAgIEhhc2gucHJvdG90eXBlLnNldCA9IGhhc2hTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICAgICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgICAgIHRoaXMuX19kYXRhX18gPSBbXTtcbiAgICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlRGVsZXRlKGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIGxhc3RJbmRleCA9IGRhdGEubGVuZ3RoIC0gMTtcbiAgICAgIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICAgICAgZGF0YS5wb3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICAgIC0tdGhpcy5zaXplO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGdldFxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgICAgIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlSGFzKGtleSkge1xuICAgICAgcmV0dXJuIGFzc29jSW5kZXhPZih0aGlzLl9fZGF0YV9fLCBrZXkpID4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbGlzdCBjYWNoZSBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgICsrdGhpcy5zaXplO1xuICAgICAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTGlzdENhY2hlYC5cbiAgICBMaXN0Q2FjaGUucHJvdG90eXBlLmNsZWFyID0gbGlzdENhY2hlQ2xlYXI7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5nZXQgPSBsaXN0Q2FjaGVHZXQ7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5oYXMgPSBsaXN0Q2FjaGVIYXM7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIE1hcENhY2hlKGVudHJpZXMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbWFwLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlQ2xlYXIoKSB7XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgICAgdGhpcy5fX2RhdGFfXyA9IHtcbiAgICAgICAgJ2hhc2gnOiBuZXcgSGFzaCxcbiAgICAgICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgICAgICdzdHJpbmcnOiBuZXcgSGFzaFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbWFwLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gICAgICB2YXIgcmVzdWx0ID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpWydkZWxldGUnXShrZXkpO1xuICAgICAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBtYXAgdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gICAgICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmdldChrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhIG1hcCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gICAgICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmhhcyhrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbWFwIGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLFxuICAgICAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgICAgIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgdGhpcy5zaXplICs9IGRhdGEuc2l6ZSA9PSBzaXplID8gMCA6IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTWFwQ2FjaGVgLlxuICAgIE1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IG1hcENhY2hlRGVsZXRlO1xuICAgIE1hcENhY2hlLnByb3RvdHlwZS5nZXQgPSBtYXBDYWNoZUdldDtcbiAgICBNYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlLnNldCA9IG1hcENhY2hlU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IGNhY2hlIG9iamVjdCB0byBzdG9yZSB1bmlxdWUgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIFNldENhY2hlKHZhbHVlcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gdmFsdWVzID09IG51bGwgPyAwIDogdmFsdWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuYWRkKHZhbHVlc1tpbmRleF0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYHZhbHVlYCB0byB0aGUgYXJyYXkgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGFkZFxuICAgICAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICAgICAqIEBhbGlhcyBwdXNoXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2FjaGUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0Q2FjaGVBZGQodmFsdWUpIHtcbiAgICAgIHRoaXMuX19kYXRhX18uc2V0KHZhbHVlLCBIQVNIX1VOREVGSU5FRCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBpbiB0aGUgYXJyYXkgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBTZXRDYWNoZWAuXG4gICAgU2V0Q2FjaGUucHJvdG90eXBlLmFkZCA9IFNldENhY2hlLnByb3RvdHlwZS5wdXNoID0gc2V0Q2FjaGVBZGQ7XG4gICAgU2V0Q2FjaGUucHJvdG90eXBlLmhhcyA9IHNldENhY2hlSGFzO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIFN0YWNrKGVudHJpZXMpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGUoZW50cmllcyk7XG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgc3RhY2suXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhY2tDbGVhcigpIHtcbiAgICAgIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICAgICAgdGhpcy5zaXplID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgc3RhY2suXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICByZXN1bHQgPSBkYXRhWydkZWxldGUnXShrZXkpO1xuXG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZ2V0XG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrR2V0KGtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgc3RhY2sgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgaGFzXG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrSGFzKGtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgc3RhY2sgYGtleWAgdG8gYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgc2V0XG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHN0YWNrIGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICAgIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgICAgIHZhciBwYWlycyA9IGRhdGEuX19kYXRhX187XG4gICAgICAgIGlmICghTWFwIHx8IChwYWlycy5sZW5ndGggPCBMQVJHRV9BUlJBWV9TSVpFIC0gMSkpIHtcbiAgICAgICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICAgICAgdGhpcy5zaXplID0gKytkYXRhLnNpemU7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGUocGFpcnMpO1xuICAgICAgfVxuICAgICAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgU3RhY2tgLlxuICAgIFN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG4gICAgU3RhY2sucHJvdG90eXBlWydkZWxldGUnXSA9IHN0YWNrRGVsZXRlO1xuICAgIFN0YWNrLnByb3RvdHlwZS5nZXQgPSBzdGFja0dldDtcbiAgICBTdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG4gICAgU3RhY2sucHJvdG90eXBlLnNldCA9IHN0YWNrU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpLFxuICAgICAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgICAgICBpc1R5cGUgPSAhaXNBcnIgJiYgIWlzQXJnICYmICFpc0J1ZmYgJiYgaXNUeXBlZEFycmF5KHZhbHVlKSxcbiAgICAgICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICAgICAhKHNraXBJbmRleGVzICYmIChcbiAgICAgICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAgICAgLy8gTm9kZS5qcyAwLjEwIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIGJ1ZmZlcnMuXG4gICAgICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgICAgIChpc1R5cGUgJiYgKGtleSA9PSAnYnVmZmVyJyB8fCBrZXkgPT0gJ2J5dGVMZW5ndGgnIHx8IGtleSA9PSAnYnl0ZU9mZnNldCcpKSB8fFxuICAgICAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgICAgICkpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2FtcGxlYCBmb3IgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheVNhbXBsZShhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBhcnJheVtiYXNlUmFuZG9tKDAsIGxlbmd0aCAtIDEpXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2FtcGxlU2l6ZWAgZm9yIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNhbXBsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheVNhbXBsZVNpemUoYXJyYXksIG4pIHtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZihjb3B5QXJyYXkoYXJyYXkpLCBiYXNlQ2xhbXAobiwgMCwgYXJyYXkubGVuZ3RoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNodWZmbGVgIGZvciBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFycmF5U2h1ZmZsZShhcnJheSkge1xuICAgICAgcmV0dXJuIHNodWZmbGVTZWxmKGNvcHlBcnJheShhcnJheSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXNzaWduVmFsdWVgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYXNzaWduXG4gICAgICogYHVuZGVmaW5lZGAgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKCh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmICFlcShvYmplY3Rba2V5XSwgdmFsdWUpKSB8fFxuICAgICAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgICAgIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhc3NvY0luZGV4T2YoYXJyYXksIGtleSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICBpZiAoZXEoYXJyYXlbbGVuZ3RoXVswXSwga2V5KSkge1xuICAgICAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZ2dyZWdhdGVzIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBvbiBgYWNjdW11bGF0b3JgIHdpdGgga2V5cyB0cmFuc2Zvcm1lZFxuICAgICAqIGJ5IGBpdGVyYXRlZWAgYW5kIHZhbHVlcyBzZXQgYnkgYHNldHRlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBgYWNjdW11bGF0b3JgIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIGFnZ3JlZ2F0ZWQgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgYWNjdW11bGF0b3JgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBZ2dyZWdhdG9yKGNvbGxlY3Rpb24sIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHNldHRlcihhY2N1bXVsYXRvciwgdmFsdWUsIGl0ZXJhdGVlKHZhbHVlKSwgY29sbGVjdGlvbik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICAgICAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUFzc2lnbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbkluYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAgICAgKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBc3NpZ25JbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5c0luKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGFzc2lnblZhbHVlYCBhbmQgYGFzc2lnbk1lcmdlVmFsdWVgIHdpdGhvdXRcbiAgICAgKiB2YWx1ZSBjaGVja3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgICAgIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICAgICAnZW51bWVyYWJsZSc6IHRydWUsXG4gICAgICAgICAgJ3ZhbHVlJzogdmFsdWUsXG4gICAgICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHBpY2tlZCBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQXQob2JqZWN0LCBwYXRocykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCksXG4gICAgICAgICAgc2tpcCA9IG9iamVjdCA9PSBudWxsO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXN1bHRbaW5kZXhdID0gc2tpcCA/IHVuZGVmaW5lZCA6IGdldChvYmplY3QsIHBhdGhzW2luZGV4XSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNsYW1wYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjbGFtcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyXSBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjbGFtcGVkIG51bWJlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQ2xhbXAobnVtYmVyLCBsb3dlciwgdXBwZXIpIHtcbiAgICAgIGlmIChudW1iZXIgPT09IG51bWJlcikge1xuICAgICAgICBpZiAodXBwZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG51bWJlciA9IG51bWJlciA8PSB1cHBlciA/IG51bWJlciA6IHVwcGVyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb3dlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbnVtYmVyID0gbnVtYmVyID49IGxvd2VyID8gbnVtYmVyIDogbG93ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xvbmVgIGFuZCBgXy5jbG9uZURlZXBgIHdoaWNoIHRyYWNrc1xuICAgICAqIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gICAgICogIDEgLSBEZWVwIGNsb25lXG4gICAgICogIDIgLSBGbGF0dGVuIGluaGVyaXRlZCBwcm9wZXJ0aWVzXG4gICAgICogIDQgLSBDbG9uZSBzeW1ib2xzXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2tleV0gVGhlIGtleSBvZiBgdmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgcGFyZW50IG9iamVjdCBvZiBgdmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBhbmQgdGhlaXIgY2xvbmUgY291bnRlcnBhcnRzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUNsb25lKHZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIG9iamVjdCwgc3RhY2spIHtcbiAgICAgIHZhciByZXN1bHQsXG4gICAgICAgICAgaXNEZWVwID0gYml0bWFzayAmIENMT05FX0RFRVBfRkxBRyxcbiAgICAgICAgICBpc0ZsYXQgPSBiaXRtYXNrICYgQ0xPTkVfRkxBVF9GTEFHLFxuICAgICAgICAgIGlzRnVsbCA9IGJpdG1hc2sgJiBDTE9ORV9TWU1CT0xTX0ZMQUc7XG5cbiAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgIHJlc3VsdCA9IG9iamVjdCA/IGN1c3RvbWl6ZXIodmFsdWUsIGtleSwgb2JqZWN0LCBzdGFjaykgOiBjdXN0b21pemVyKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSk7XG4gICAgICBpZiAoaXNBcnIpIHtcbiAgICAgICAgcmVzdWx0ID0gaW5pdENsb25lQXJyYXkodmFsdWUpO1xuICAgICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICAgIHJldHVybiBjb3B5QXJyYXkodmFsdWUsIHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICAgICAgaXNGdW5jID0gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZztcblxuICAgICAgICBpZiAoaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGNsb25lQnVmZmVyKHZhbHVlLCBpc0RlZXApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWcgPT0gb2JqZWN0VGFnIHx8IHRhZyA9PSBhcmdzVGFnIHx8IChpc0Z1bmMgJiYgIW9iamVjdCkpIHtcbiAgICAgICAgICByZXN1bHQgPSAoaXNGbGF0IHx8IGlzRnVuYykgPyB7fSA6IGluaXRDbG9uZU9iamVjdCh2YWx1ZSk7XG4gICAgICAgICAgaWYgKCFpc0RlZXApIHtcbiAgICAgICAgICAgIHJldHVybiBpc0ZsYXRcbiAgICAgICAgICAgICAgPyBjb3B5U3ltYm9sc0luKHZhbHVlLCBiYXNlQXNzaWduSW4ocmVzdWx0LCB2YWx1ZSkpXG4gICAgICAgICAgICAgIDogY29weVN5bWJvbHModmFsdWUsIGJhc2VBc3NpZ24ocmVzdWx0LCB2YWx1ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIWNsb25lYWJsZVRhZ3NbdGFnXSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iamVjdCA/IHZhbHVlIDoge307XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdCA9IGluaXRDbG9uZUJ5VGFnKHZhbHVlLCB0YWcsIGlzRGVlcCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzIGFuZCByZXR1cm4gaXRzIGNvcnJlc3BvbmRpbmcgY2xvbmUuXG4gICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQodmFsdWUpO1xuICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIHN0YWNrZWQ7XG4gICAgICB9XG4gICAgICBzdGFjay5zZXQodmFsdWUsIHJlc3VsdCk7XG5cbiAgICAgIGlmIChpc1NldCh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSkge1xuICAgICAgICAgIHJlc3VsdC5hZGQoYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdWJWYWx1ZSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChpc01hcCh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgICAgICAgcmVzdWx0LnNldChrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBrZXlzRnVuYyA9IGlzRnVsbFxuICAgICAgICA/IChpc0ZsYXQgPyBnZXRBbGxLZXlzSW4gOiBnZXRBbGxLZXlzKVxuICAgICAgICA6IChpc0ZsYXQgPyBrZXlzSW4gOiBrZXlzKTtcblxuICAgICAgdmFyIHByb3BzID0gaXNBcnIgPyB1bmRlZmluZWQgOiBrZXlzRnVuYyh2YWx1ZSk7XG4gICAgICBhcnJheUVhY2gocHJvcHMgfHwgdmFsdWUsIGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgICAga2V5ID0gc3ViVmFsdWU7XG4gICAgICAgICAgc3ViVmFsdWUgPSB2YWx1ZVtrZXldO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IHBvcHVsYXRlIGNsb25lIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY29uZm9ybXNgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNvdXJjZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQ29uZm9ybXMoc291cmNlKSB7XG4gICAgICB2YXIgcHJvcHMgPSBrZXlzKHNvdXJjZSk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBiYXNlQ29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSwgcHJvcHMpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jb25mb3Jtc1RvYCB3aGljaCBhY2NlcHRzIGBwcm9wc2AgdG8gY2hlY2suXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGNvbmZvcm1zLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UsIHByb3BzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAhbGVuZ3RoO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGtleSA9IHByb3BzW2xlbmd0aF0sXG4gICAgICAgICAgICBwcmVkaWNhdGUgPSBzb3VyY2Vba2V5XSxcbiAgICAgICAgICAgIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICAgICAgaWYgKCh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpIHx8ICFwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5kZWxheWAgYW5kIGBfLmRlZmVyYCB3aGljaCBhY2NlcHRzIGBhcmdzYFxuICAgICAqIHRvIHByb3ZpZGUgdG8gYGZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gd2FpdCBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheSBpbnZvY2F0aW9uLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBwcm92aWRlIHRvIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfE9iamVjdH0gUmV0dXJucyB0aGUgdGltZXIgaWQgb3IgdGltZW91dCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZURlbGF5KGZ1bmMsIHdhaXQsIGFyZ3MpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBmdW5jLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7IH0sIHdhaXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5kaWZmZXJlbmNlYCB3aXRob3V0IHN1cHBvcnRcbiAgICAgKiBmb3IgZXhjbHVkaW5nIG11bHRpcGxlIGFycmF5cyBvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VEaWZmZXJlbmNlKGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXMsXG4gICAgICAgICAgaXNDb21tb24gPSB0cnVlLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBbXSxcbiAgICAgICAgICB2YWx1ZXNMZW5ndGggPSB2YWx1ZXMubGVuZ3RoO1xuXG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgIHZhbHVlcyA9IGFycmF5TWFwKHZhbHVlcywgYmFzZVVuYXJ5KGl0ZXJhdGVlKSk7XG4gICAgICB9XG4gICAgICBpZiAoY29tcGFyYXRvcikge1xuICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodmFsdWVzLmxlbmd0aCA+PSBMQVJHRV9BUlJBWV9TSVpFKSB7XG4gICAgICAgIGluY2x1ZGVzID0gY2FjaGVIYXM7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcyA9IG5ldyBTZXRDYWNoZSh2YWx1ZXMpO1xuICAgICAgfVxuICAgICAgb3V0ZXI6XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID09IG51bGwgPyB2YWx1ZSA6IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgICAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICAgICAgaWYgKGlzQ29tbW9uICYmIGNvbXB1dGVkID09PSBjb21wdXRlZCkge1xuICAgICAgICAgIHZhciB2YWx1ZXNJbmRleCA9IHZhbHVlc0xlbmd0aDtcbiAgICAgICAgICB3aGlsZSAodmFsdWVzSW5kZXgtLSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlc1t2YWx1ZXNJbmRleF0gPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIWluY2x1ZGVzKHZhbHVlcywgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvckVhY2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICovXG4gICAgdmFyIGJhc2VFYWNoID0gY3JlYXRlQmFzZUVhY2goYmFzZUZvck93bik7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JFYWNoUmlnaHRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICovXG4gICAgdmFyIGJhc2VFYWNoUmlnaHQgPSBjcmVhdGVCYXNlRWFjaChiYXNlRm9yT3duUmlnaHQsIHRydWUpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZXZlcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbGwgZWxlbWVudHMgcGFzcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRXZlcnkoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgICAgICByZXN1bHQgPSAhIXByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5tYXhgIGFuZCBgXy5taW5gIHdoaWNoIGFjY2VwdHMgYVxuICAgICAqIGBjb21wYXJhdG9yYCB0byBkZXRlcm1pbmUgdGhlIGV4dHJlbXVtIHZhbHVlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciB1c2VkIHRvIGNvbXBhcmUgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBleHRyZW11bSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRXh0cmVtdW0oYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGN1cnJlbnQgPSBpdGVyYXRlZSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnQgIT0gbnVsbCAmJiAoY29tcHV0ZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICA/IChjdXJyZW50ID09PSBjdXJyZW50ICYmICFpc1N5bWJvbChjdXJyZW50KSlcbiAgICAgICAgICAgICAgOiBjb21wYXJhdG9yKGN1cnJlbnQsIGNvbXB1dGVkKVxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgIHZhciBjb21wdXRlZCA9IGN1cnJlbnQsXG4gICAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbGxgIHdpdGhvdXQgYW4gaXRlcmF0ZWUgY2FsbCBndWFyZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZpbGwuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZmlsbCBgYXJyYXlgIHdpdGguXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGaWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgc3RhcnQgPSB0b0ludGVnZXIoc3RhcnQpO1xuICAgICAgaWYgKHN0YXJ0IDwgMCkge1xuICAgICAgICBzdGFydCA9IC1zdGFydCA+IGxlbmd0aCA/IDAgOiAobGVuZ3RoICsgc3RhcnQpO1xuICAgICAgfVxuICAgICAgZW5kID0gKGVuZCA9PT0gdW5kZWZpbmVkIHx8IGVuZCA+IGxlbmd0aCkgPyBsZW5ndGggOiB0b0ludGVnZXIoZW5kKTtcbiAgICAgIGlmIChlbmQgPCAwKSB7XG4gICAgICAgIGVuZCArPSBsZW5ndGg7XG4gICAgICB9XG4gICAgICBlbmQgPSBzdGFydCA+IGVuZCA/IDAgOiB0b0xlbmd0aChlbmQpO1xuICAgICAgd2hpbGUgKHN0YXJ0IDwgZW5kKSB7XG4gICAgICAgIGFycmF5W3N0YXJ0KytdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmlsdGVyYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRmlsdGVyKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZsYXR0ZW5gIHdpdGggc3VwcG9ydCBmb3IgcmVzdHJpY3RpbmcgZmxhdHRlbmluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtwcmVkaWNhdGU9aXNGbGF0dGVuYWJsZV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1N0cmljdF0gUmVzdHJpY3QgdG8gdmFsdWVzIHRoYXQgcGFzcyBgcHJlZGljYXRlYCBjaGVja3MuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3Jlc3VsdD1bXV0gVGhlIGluaXRpYWwgcmVzdWx0IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRmxhdHRlbihhcnJheSwgZGVwdGgsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBwcmVkaWNhdGUgfHwgKHByZWRpY2F0ZSA9IGlzRmxhdHRlbmFibGUpO1xuICAgICAgcmVzdWx0IHx8IChyZXN1bHQgPSBbXSk7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgICAgaWYgKGRlcHRoID4gMCAmJiBwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICAgICAgaWYgKGRlcHRoID4gMSkge1xuICAgICAgICAgICAgLy8gUmVjdXJzaXZlbHkgZmxhdHRlbiBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgICAgIGJhc2VGbGF0dGVuKHZhbHVlLCBkZXB0aCAtIDEsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFycmF5UHVzaChyZXN1bHQsIHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzU3RyaWN0KSB7XG4gICAgICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGJhc2VGb3JPd25gIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYG9iamVjdGBcbiAgICAgKiBwcm9wZXJ0aWVzIHJldHVybmVkIGJ5IGBrZXlzRnVuY2AgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAgICAgKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgdmFyIGJhc2VGb3IgPSBjcmVhdGVCYXNlRm9yKCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGJhc2VGb3JgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgcHJvcGVydGllc1xuICAgICAqIGluIHRoZSBvcHBvc2l0ZSBvcmRlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUZvclJpZ2h0ID0gY3JlYXRlQmFzZUZvcih0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvck93bmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRm9yT3duKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgYmFzZUZvcihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JPd25SaWdodGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRm9yT3duUmlnaHQob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yUmlnaHQob2JqZWN0LCBpdGVyYXRlZSwga2V5cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZnVuY3Rpb25zYCB3aGljaCBjcmVhdGVzIGFuIGFycmF5IG9mXG4gICAgICogYG9iamVjdGAgZnVuY3Rpb24gcHJvcGVydHkgbmFtZXMgZmlsdGVyZWQgZnJvbSBgcHJvcHNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgbmFtZXMgdG8gZmlsdGVyLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZ1bmN0aW9ucyhvYmplY3QsIHByb3BzKSB7XG4gICAgICByZXR1cm4gYXJyYXlGaWx0ZXIocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgICByZXR1cm4gaXNGdW5jdGlvbihvYmplY3Rba2V5XSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5nZXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVmYXVsdCB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR2V0KG9iamVjdCwgcGF0aCkge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IDAsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG5cbiAgICAgIHdoaWxlIChvYmplY3QgIT0gbnVsbCAmJiBpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBvYmplY3QgPSBvYmplY3RbdG9LZXkocGF0aFtpbmRleCsrXSldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChpbmRleCAmJiBpbmRleCA9PSBsZW5ndGgpID8gb2JqZWN0IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRBbGxLZXlzYCBhbmQgYGdldEFsbEtleXNJbmAgd2hpY2ggdXNlc1xuICAgICAqIGBrZXlzRnVuY2AgYW5kIGBzeW1ib2xzRnVuY2AgdG8gZ2V0IHRoZSBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICAgICAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHN5bWJvbHNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNGdW5jLCBzeW1ib2xzRnVuYykge1xuICAgICAgdmFyIHJlc3VsdCA9IGtleXNGdW5jKG9iamVjdCk7XG4gICAgICByZXR1cm4gaXNBcnJheShvYmplY3QpID8gcmVzdWx0IDogYXJyYXlQdXNoKHJlc3VsdCwgc3ltYm9sc0Z1bmMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gICAgICB9XG4gICAgICByZXR1cm4gKHN5bVRvU3RyaW5nVGFnICYmIHN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSkpXG4gICAgICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgICAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5ndGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR3QodmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPiBvdGhlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5oYXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSGFzKG9iamVjdCwga2V5KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSGFzSW4ob2JqZWN0LCBrZXkpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBrZXkgaW4gT2JqZWN0KG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW5SYW5nZWAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG51bWJlcmAgaXMgaW4gdGhlIHJhbmdlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUluUmFuZ2UobnVtYmVyLCBzdGFydCwgZW5kKSB7XG4gICAgICByZXR1cm4gbnVtYmVyID49IG5hdGl2ZU1pbihzdGFydCwgZW5kKSAmJiBudW1iZXIgPCBuYXRpdmVNYXgoc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmludGVyc2VjdGlvbmAsIHdpdGhvdXQgc3VwcG9ydFxuICAgICAqIGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB0aGF0IGFjY2VwdHMgYW4gYXJyYXkgb2YgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5cyBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBzaGFyZWQgdmFsdWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJbnRlcnNlY3Rpb24oYXJyYXlzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluY2x1ZGVzID0gY29tcGFyYXRvciA/IGFycmF5SW5jbHVkZXNXaXRoIDogYXJyYXlJbmNsdWRlcyxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheXNbMF0ubGVuZ3RoLFxuICAgICAgICAgIG90aExlbmd0aCA9IGFycmF5cy5sZW5ndGgsXG4gICAgICAgICAgb3RoSW5kZXggPSBvdGhMZW5ndGgsXG4gICAgICAgICAgY2FjaGVzID0gQXJyYXkob3RoTGVuZ3RoKSxcbiAgICAgICAgICBtYXhMZW5ndGggPSBJbmZpbml0eSxcbiAgICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgd2hpbGUgKG90aEluZGV4LS0pIHtcbiAgICAgICAgdmFyIGFycmF5ID0gYXJyYXlzW290aEluZGV4XTtcbiAgICAgICAgaWYgKG90aEluZGV4ICYmIGl0ZXJhdGVlKSB7XG4gICAgICAgICAgYXJyYXkgPSBhcnJheU1hcChhcnJheSwgYmFzZVVuYXJ5KGl0ZXJhdGVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgbWF4TGVuZ3RoID0gbmF0aXZlTWluKGFycmF5Lmxlbmd0aCwgbWF4TGVuZ3RoKTtcbiAgICAgICAgY2FjaGVzW290aEluZGV4XSA9ICFjb21wYXJhdG9yICYmIChpdGVyYXRlZSB8fCAobGVuZ3RoID49IDEyMCAmJiBhcnJheS5sZW5ndGggPj0gMTIwKSlcbiAgICAgICAgICA/IG5ldyBTZXRDYWNoZShvdGhJbmRleCAmJiBhcnJheSlcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGFycmF5ID0gYXJyYXlzWzBdO1xuXG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBzZWVuID0gY2FjaGVzWzBdO1xuXG4gICAgICBvdXRlcjpcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoICYmIHJlc3VsdC5sZW5ndGggPCBtYXhMZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgICAgICBpZiAoIShzZWVuXG4gICAgICAgICAgICAgID8gY2FjaGVIYXMoc2VlbiwgY29tcHV0ZWQpXG4gICAgICAgICAgICAgIDogaW5jbHVkZXMocmVzdWx0LCBjb21wdXRlZCwgY29tcGFyYXRvcilcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICBvdGhJbmRleCA9IG90aExlbmd0aDtcbiAgICAgICAgICB3aGlsZSAoLS1vdGhJbmRleCkge1xuICAgICAgICAgICAgdmFyIGNhY2hlID0gY2FjaGVzW290aEluZGV4XTtcbiAgICAgICAgICAgIGlmICghKGNhY2hlXG4gICAgICAgICAgICAgICAgICA/IGNhY2hlSGFzKGNhY2hlLCBjb21wdXRlZClcbiAgICAgICAgICAgICAgICAgIDogaW5jbHVkZXMoYXJyYXlzW290aEluZGV4XSwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNlZW4pIHtcbiAgICAgICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbnZlcnRgIGFuZCBgXy5pbnZlcnRCeWAgd2hpY2ggaW52ZXJ0c1xuICAgICAqIGBvYmplY3RgIHdpdGggdmFsdWVzIHRyYW5zZm9ybWVkIGJ5IGBpdGVyYXRlZWAgYW5kIHNldCBieSBgc2V0dGVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBgYWNjdW11bGF0b3JgIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgaW52ZXJ0ZWQgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgYWNjdW11bGF0b3JgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJbnZlcnRlcihvYmplY3QsIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICBiYXNlRm9yT3duKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICAgIHNldHRlcihhY2N1bXVsYXRvciwgaXRlcmF0ZWUodmFsdWUpLCBrZXksIG9iamVjdCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbnZva2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICAgICAqIG1ldGhvZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgbWV0aG9kIHRvIGludm9rZS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBpbnZva2VkIG1ldGhvZC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSW52b2tlKG9iamVjdCwgcGF0aCwgYXJncykge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gICAgICBvYmplY3QgPSBwYXJlbnQob2JqZWN0LCBwYXRoKTtcbiAgICAgIHZhciBmdW5jID0gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBvYmplY3RbdG9LZXkobGFzdChwYXRoKSldO1xuICAgICAgcmV0dXJuIGZ1bmMgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGFwcGx5KGZ1bmMsIG9iamVjdCwgYXJncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJyYXlCdWZmZXJgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNBcnJheUJ1ZmZlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJyYXlCdWZmZXJUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNEYXRlYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBkYXRlIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0RhdGUodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGRhdGVUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNFcXVhbGAgd2hpY2ggc3VwcG9ydHMgcGFydGlhbCBjb21wYXJpc29uc1xuICAgICAqIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gICAgICogIDEgLSBVbm9yZGVyZWQgY29tcGFyaXNvblxuICAgICAqICAyIC0gUGFydGlhbCBjb21wYXJpc29uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgdmFsdWVgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gICAgICBpZiAodmFsdWUgPT09IG90aGVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlID09IG51bGwgfHwgb3RoZXIgPT0gbnVsbCB8fCAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgIWlzT2JqZWN0TGlrZShvdGhlcikpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VJc0VxdWFsRGVlcCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGJhc2VJc0VxdWFsLCBzdGFjayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbGAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICAgICAqIGRlZXAgY29tcGFyaXNvbnMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAgICAgKiByZWZlcmVuY2VzIHRvIGJlIGNvbXBhcmVkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0VxdWFsRGVlcChvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICB2YXIgb2JqSXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICAgICAgb3RoSXNBcnIgPSBpc0FycmF5KG90aGVyKSxcbiAgICAgICAgICBvYmpUYWcgPSBvYmpJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG9iamVjdCksXG4gICAgICAgICAgb3RoVGFnID0gb3RoSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvdGhlcik7XG5cbiAgICAgIG9ialRhZyA9IG9ialRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb2JqVGFnO1xuICAgICAgb3RoVGFnID0gb3RoVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvdGhUYWc7XG5cbiAgICAgIHZhciBvYmpJc09iaiA9IG9ialRhZyA9PSBvYmplY3RUYWcsXG4gICAgICAgICAgb3RoSXNPYmogPSBvdGhUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgICAgIGlzU2FtZVRhZyA9IG9ialRhZyA9PSBvdGhUYWc7XG5cbiAgICAgIGlmIChpc1NhbWVUYWcgJiYgaXNCdWZmZXIob2JqZWN0KSkge1xuICAgICAgICBpZiAoIWlzQnVmZmVyKG90aGVyKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBvYmpJc0FyciA9IHRydWU7XG4gICAgICAgIG9iaklzT2JqID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoaXNTYW1lVGFnICYmICFvYmpJc09iaikge1xuICAgICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgICByZXR1cm4gKG9iaklzQXJyIHx8IGlzVHlwZWRBcnJheShvYmplY3QpKVxuICAgICAgICAgID8gZXF1YWxBcnJheXMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaylcbiAgICAgICAgICA6IGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgb2JqVGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICAgIH1cbiAgICAgIGlmICghKGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRykpIHtcbiAgICAgICAgdmFyIG9iaklzV3JhcHBlZCA9IG9iaklzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCAnX193cmFwcGVkX18nKSxcbiAgICAgICAgICAgIG90aElzV3JhcHBlZCA9IG90aElzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsICdfX3dyYXBwZWRfXycpO1xuXG4gICAgICAgIGlmIChvYmpJc1dyYXBwZWQgfHwgb3RoSXNXcmFwcGVkKSB7XG4gICAgICAgICAgdmFyIG9ialVud3JhcHBlZCA9IG9iaklzV3JhcHBlZCA/IG9iamVjdC52YWx1ZSgpIDogb2JqZWN0LFxuICAgICAgICAgICAgICBvdGhVbndyYXBwZWQgPSBvdGhJc1dyYXBwZWQgPyBvdGhlci52YWx1ZSgpIDogb3RoZXI7XG5cbiAgICAgICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgICAgIHJldHVybiBlcXVhbEZ1bmMob2JqVW53cmFwcGVkLCBvdGhVbndyYXBwZWQsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFpc1NhbWVUYWcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgIHJldHVybiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc01hcCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBtYXBUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXRjaGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IG1hdGNoRGF0YSBUaGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3MgdG8gbWF0Y2guXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgbWF0Y2hEYXRhLCBjdXN0b21pemVyKSB7XG4gICAgICB2YXIgaW5kZXggPSBtYXRjaERhdGEubGVuZ3RoLFxuICAgICAgICAgIGxlbmd0aCA9IGluZGV4LFxuICAgICAgICAgIG5vQ3VzdG9taXplciA9ICFjdXN0b21pemVyO1xuXG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICFsZW5ndGg7XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIHZhciBkYXRhID0gbWF0Y2hEYXRhW2luZGV4XTtcbiAgICAgICAgaWYgKChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSlcbiAgICAgICAgICAgICAgPyBkYXRhWzFdICE9PSBvYmplY3RbZGF0YVswXV1cbiAgICAgICAgICAgICAgOiAhKGRhdGFbMF0gaW4gb2JqZWN0KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBkYXRhID0gbWF0Y2hEYXRhW2luZGV4XTtcbiAgICAgICAgdmFyIGtleSA9IGRhdGFbMF0sXG4gICAgICAgICAgICBvYmpWYWx1ZSA9IG9iamVjdFtrZXldLFxuICAgICAgICAgICAgc3JjVmFsdWUgPSBkYXRhWzFdO1xuXG4gICAgICAgIGlmIChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSkge1xuICAgICAgICAgIGlmIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHN0YWNrID0gbmV3IFN0YWNrO1xuICAgICAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCEocmVzdWx0ID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgICAgICAgICA6IHJlc3VsdFxuICAgICAgICAgICAgICApKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hdGl2ZWAgd2l0aG91dCBiYWQgc2hpbSBjaGVja3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzTmF0aXZlKHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gICAgICByZXR1cm4gcGF0dGVybi50ZXN0KHRvU291cmNlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNSZWdFeHBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHJlZ2V4cCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc1JlZ0V4cCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gcmVnZXhwVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzU2V0YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNTZXQodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gc2V0VGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgICAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLml0ZXJhdGVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSBbdmFsdWU9Xy5pZGVudGl0eV0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYW4gaXRlcmF0ZWUuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBpdGVyYXRlZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXRlcmF0ZWUodmFsdWUpIHtcbiAgICAgIC8vIERvbid0IHN0b3JlIHRoZSBgdHlwZW9mYCByZXN1bHQgaW4gYSB2YXJpYWJsZSB0byBhdm9pZCBhIEpJVCBidWcgaW4gU2FmYXJpIDkuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjAzNCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBpZGVudGl0eTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpXG4gICAgICAgICAgPyBiYXNlTWF0Y2hlc1Byb3BlcnR5KHZhbHVlWzBdLCB2YWx1ZVsxXSlcbiAgICAgICAgICA6IGJhc2VNYXRjaGVzKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c2Agd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlS2V5cyhvYmplY3QpIHtcbiAgICAgIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gbmF0aXZlS2V5cyhvYmplY3QpO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBrZXkgIT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c0luYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VLZXlzSW4ob2JqZWN0KSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICAgICAgfVxuICAgICAgdmFyIGlzUHJvdG8gPSBpc1Byb3RvdHlwZShvYmplY3QpLFxuICAgICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgIGlmICghKGtleSA9PSAnY29uc3RydWN0b3InICYmIChpc1Byb3RvIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5sdGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTHQodmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPCBvdGhlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXBgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIHJlc3VsdCA9IGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pID8gQXJyYXkoY29sbGVjdGlvbi5sZW5ndGgpIDogW107XG5cbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmVzdWx0WysraW5kZXhdID0gaXRlcmF0ZWUodmFsdWUsIGtleSwgY29sbGVjdGlvbik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWF0Y2hlc2Agd2hpY2ggZG9lc24ndCBjbG9uZSBgc291cmNlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNYXRjaGVzKHNvdXJjZSkge1xuICAgICAgdmFyIG1hdGNoRGF0YSA9IGdldE1hdGNoRGF0YShzb3VyY2UpO1xuICAgICAgaWYgKG1hdGNoRGF0YS5sZW5ndGggPT0gMSAmJiBtYXRjaERhdGFbMF1bMl0pIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKG1hdGNoRGF0YVswXVswXSwgbWF0Y2hEYXRhWzBdWzFdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCA9PT0gc291cmNlIHx8IGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzUHJvcGVydHlgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNyY1ZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNYXRjaGVzUHJvcGVydHkocGF0aCwgc3JjVmFsdWUpIHtcbiAgICAgIGlmIChpc0tleShwYXRoKSAmJiBpc1N0cmljdENvbXBhcmFibGUoc3JjVmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSh0b0tleShwYXRoKSwgc3JjVmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICB2YXIgb2JqVmFsdWUgPSBnZXQob2JqZWN0LCBwYXRoKTtcbiAgICAgICAgcmV0dXJuIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIG9ialZhbHVlID09PSBzcmNWYWx1ZSlcbiAgICAgICAgICA/IGhhc0luKG9iamVjdCwgcGF0aClcbiAgICAgICAgICA6IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWVyZ2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHNyY0luZGV4IFRoZSBpbmRleCBvZiBgc291cmNlYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBtZXJnZWQgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gICAgICogIGNvdW50ZXJwYXJ0cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjaykge1xuICAgICAgaWYgKG9iamVjdCA9PT0gc291cmNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGJhc2VGb3Ioc291cmNlLCBmdW5jdGlvbihzcmNWYWx1ZSwga2V5KSB7XG4gICAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICAgIGlmIChpc09iamVjdChzcmNWYWx1ZSkpIHtcbiAgICAgICAgICBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBiYXNlTWVyZ2UsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgICAgICA/IGN1c3RvbWl6ZXIoc2FmZUdldChvYmplY3QsIGtleSksIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sIGtleXNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlTWVyZ2VgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAgICAgKiBkZWVwIG1lcmdlcyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICAgICAqIHJlZmVyZW5jZXMgdG8gYmUgbWVyZ2VkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIG1lcmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gbWVyZ2VGdW5jIFRoZSBmdW5jdGlvbiB0byBtZXJnZSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gICAgICogIGNvdW50ZXJwYXJ0cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBtZXJnZUZ1bmMsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gICAgICB2YXIgb2JqVmFsdWUgPSBzYWZlR2V0KG9iamVjdCwga2V5KSxcbiAgICAgICAgICBzcmNWYWx1ZSA9IHNhZmVHZXQoc291cmNlLCBrZXkpLFxuICAgICAgICAgIHN0YWNrZWQgPSBzdGFjay5nZXQoc3JjVmFsdWUpO1xuXG4gICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBzdGFja2VkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICB2YXIgaXNDb21tb24gPSBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoaXNDb21tb24pIHtcbiAgICAgICAgdmFyIGlzQXJyID0gaXNBcnJheShzcmNWYWx1ZSksXG4gICAgICAgICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgaXNCdWZmZXIoc3JjVmFsdWUpLFxuICAgICAgICAgICAgaXNUeXBlZCA9ICFpc0FyciAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheShzcmNWYWx1ZSk7XG5cbiAgICAgICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgICAgaWYgKGlzQXJyIHx8IGlzQnVmZiB8fCBpc1R5cGVkKSB7XG4gICAgICAgICAgaWYgKGlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5TGlrZU9iamVjdChvYmpWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gY29weUFycmF5KG9ialZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoaXNCdWZmKSB7XG4gICAgICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBjbG9uZUJ1ZmZlcihzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKGlzVHlwZWQpIHtcbiAgICAgICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGNsb25lVHlwZWRBcnJheShzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdChzcmNWYWx1ZSkgfHwgaXNBcmd1bWVudHMoc3JjVmFsdWUpKSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgICAgICBpZiAoaXNBcmd1bWVudHMob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRvUGxhaW5PYmplY3Qob2JqVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmICghaXNPYmplY3Qob2JqVmFsdWUpIHx8IGlzRnVuY3Rpb24ob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGluaXRDbG9uZU9iamVjdChzcmNWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpc0NvbW1vbikge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgICAgIG1lcmdlRnVuYyhuZXdWYWx1ZSwgc3JjVmFsdWUsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubnRoYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmV0dXJuLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBudGggZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VOdGgoYXJyYXksIG4pIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBuICs9IG4gPCAwID8gbGVuZ3RoIDogMDtcbiAgICAgIHJldHVybiBpc0luZGV4KG4sIGxlbmd0aCkgPyBhcnJheVtuXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5vcmRlckJ5YCB3aXRob3V0IHBhcmFtIGd1YXJkcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb25bXXxPYmplY3RbXXxzdHJpbmdbXX0gaXRlcmF0ZWVzIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBvcmRlcnMgVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycykge1xuICAgICAgaWYgKGl0ZXJhdGVlcy5sZW5ndGgpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgICAgIGlmIChpc0FycmF5KGl0ZXJhdGVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBiYXNlR2V0KHZhbHVlLCBpdGVyYXRlZS5sZW5ndGggPT09IDEgPyBpdGVyYXRlZVswXSA6IGl0ZXJhdGVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGl0ZXJhdGVlO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IFtpZGVudGl0eV07XG4gICAgICB9XG5cbiAgICAgIHZhciBpbmRleCA9IC0xO1xuICAgICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZU1hcChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHZhciBjcml0ZXJpYSA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgICByZXR1cm4gaXRlcmF0ZWUodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsgJ2NyaXRlcmlhJzogY3JpdGVyaWEsICdpbmRleCc6ICsraW5kZXgsICd2YWx1ZSc6IHZhbHVlIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGJhc2VTb3J0QnkocmVzdWx0LCBmdW5jdGlvbihvYmplY3QsIG90aGVyKSB7XG4gICAgICAgIHJldHVybiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnBpY2tgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICAgICAqIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVBpY2sob2JqZWN0LCBwYXRocykge1xuICAgICAgcmV0dXJuIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgZnVuY3Rpb24odmFsdWUsIHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIGhhc0luKG9iamVjdCwgcGF0aCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiAgYF8ucGlja0J5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0ge307XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBwYXRoID0gcGF0aHNbaW5kZXhdLFxuICAgICAgICAgICAgdmFsdWUgPSBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG5cbiAgICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgcGF0aCkpIHtcbiAgICAgICAgICBiYXNlU2V0KHJlc3VsdCwgY2FzdFBhdGgocGF0aCwgb2JqZWN0KSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVByb3BlcnR5YCB3aGljaCBzdXBwb3J0cyBkZWVwIHBhdGhzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQcm9wZXJ0eURlZXAocGF0aCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wdWxsQWxsQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICAgKiBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXhPZiA9IGNvbXBhcmF0b3IgPyBiYXNlSW5kZXhPZldpdGggOiBiYXNlSW5kZXhPZixcbiAgICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICAgICAgc2VlbiA9IGFycmF5O1xuXG4gICAgICBpZiAoYXJyYXkgPT09IHZhbHVlcykge1xuICAgICAgICB2YWx1ZXMgPSBjb3B5QXJyYXkodmFsdWVzKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICBzZWVuID0gYXJyYXlNYXAoYXJyYXksIGJhc2VVbmFyeShpdGVyYXRlZSkpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGZyb21JbmRleCA9IDAsXG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlc1tpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgd2hpbGUgKChmcm9tSW5kZXggPSBpbmRleE9mKHNlZW4sIGNvbXB1dGVkLCBmcm9tSW5kZXgsIGNvbXBhcmF0b3IpKSA+IC0xKSB7XG4gICAgICAgICAgaWYgKHNlZW4gIT09IGFycmF5KSB7XG4gICAgICAgICAgICBzcGxpY2UuY2FsbChzZWVuLCBmcm9tSW5kZXgsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzcGxpY2UuY2FsbChhcnJheSwgZnJvbUluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnB1bGxBdGAgd2l0aG91dCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsXG4gICAgICogaW5kZXhlcyBvciBjYXB0dXJpbmcgdGhlIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJbXX0gaW5kZXhlcyBUaGUgaW5kZXhlcyBvZiBlbGVtZW50cyB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVB1bGxBdChhcnJheSwgaW5kZXhlcykge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID8gaW5kZXhlcy5sZW5ndGggOiAwLFxuICAgICAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIgaW5kZXggPSBpbmRleGVzW2xlbmd0aF07XG4gICAgICAgIGlmIChsZW5ndGggPT0gbGFzdEluZGV4IHx8IGluZGV4ICE9PSBwcmV2aW91cykge1xuICAgICAgICAgIHZhciBwcmV2aW91cyA9IGluZGV4O1xuICAgICAgICAgIGlmIChpc0luZGV4KGluZGV4KSkge1xuICAgICAgICAgICAgc3BsaWNlLmNhbGwoYXJyYXksIGluZGV4LCAxKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzZVVuc2V0KGFycmF5LCBpbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmFuZG9tYCB3aXRob3V0IHN1cHBvcnQgZm9yIHJldHVybmluZ1xuICAgICAqIGZsb2F0aW5nLXBvaW50IG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsb3dlciBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByYW5kb20gbnVtYmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSYW5kb20obG93ZXIsIHVwcGVyKSB7XG4gICAgICByZXR1cm4gbG93ZXIgKyBuYXRpdmVGbG9vcihuYXRpdmVSYW5kb20oKSAqICh1cHBlciAtIGxvd2VyICsgMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJhbmdlYCBhbmQgYF8ucmFuZ2VSaWdodGAgd2hpY2ggZG9lc24ndFxuICAgICAqIGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0ZXAgVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSYW5nZShzdGFydCwgZW5kLCBzdGVwLCBmcm9tUmlnaHQpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChuYXRpdmVDZWlsKChlbmQgLSBzdGFydCkgLyAoc3RlcCB8fCAxKSksIDApLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICByZXN1bHRbZnJvbVJpZ2h0ID8gbGVuZ3RoIDogKytpbmRleF0gPSBzdGFydDtcbiAgICAgICAgc3RhcnQgKz0gc3RlcDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVwZWF0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byByZXBlYXQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIHN0cmluZy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByZXBlYXRlZCBzdHJpbmcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVJlcGVhdChzdHJpbmcsIG4pIHtcbiAgICAgIHZhciByZXN1bHQgPSAnJztcbiAgICAgIGlmICghc3RyaW5nIHx8IG4gPCAxIHx8IG4gPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICAvLyBMZXZlcmFnZSB0aGUgZXhwb25lbnRpYXRpb24gYnkgc3F1YXJpbmcgYWxnb3JpdGhtIGZvciBhIGZhc3RlciByZXBlYXQuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXhwb25lbnRpYXRpb25fYnlfc3F1YXJpbmcgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKG4gJSAyKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgICBuID0gbmF0aXZlRmxvb3IobiAvIDIpO1xuICAgICAgICBpZiAobikge1xuICAgICAgICAgIHN0cmluZyArPSBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIH0gd2hpbGUgKG4pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlc3RgIHdoaWNoIGRvZXNuJ3QgdmFsaWRhdGUgb3IgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgICAgIHJldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLCBzdGFydCwgaWRlbnRpdHkpLCBmdW5jICsgJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNhbXBsZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNhbXBsZShjb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gYXJyYXlTYW1wbGUodmFsdWVzKGNvbGxlY3Rpb24pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zYW1wbGVTaXplYCB3aXRob3V0IHBhcmFtIGd1YXJkcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTYW1wbGVTaXplKGNvbGxlY3Rpb24sIG4pIHtcbiAgICAgIHZhciBhcnJheSA9IHZhbHVlcyhjb2xsZWN0aW9uKTtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZihhcnJheSwgYmFzZUNsYW1wKG4sIDAsIGFycmF5Lmxlbmd0aCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNldGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgcGF0aCBjcmVhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICB9XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICAgICAgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMSxcbiAgICAgICAgICBuZXN0ZWQgPSBvYmplY3Q7XG5cbiAgICAgIHdoaWxlIChuZXN0ZWQgIT0gbnVsbCAmJiArK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSksXG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmIChrZXkgPT09ICdfX3Byb3RvX18nIHx8IGtleSA9PT0gJ2NvbnN0cnVjdG9yJyB8fCBrZXkgPT09ICdwcm90b3R5cGUnKSB7XG4gICAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmRleCAhPSBsYXN0SW5kZXgpIHtcbiAgICAgICAgICB2YXIgb2JqVmFsdWUgPSBuZXN0ZWRba2V5XTtcbiAgICAgICAgICBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKG9ialZhbHVlLCBrZXksIG5lc3RlZCkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gaXNPYmplY3Qob2JqVmFsdWUpXG4gICAgICAgICAgICAgID8gb2JqVmFsdWVcbiAgICAgICAgICAgICAgOiAoaXNJbmRleChwYXRoW2luZGV4ICsgMV0pID8gW10gOiB7fSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGFzc2lnblZhbHVlKG5lc3RlZCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIG5lc3RlZCA9IG5lc3RlZFtrZXldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0RGF0YWAgd2l0aG91dCBzdXBwb3J0IGZvciBob3QgbG9vcCBzaG9ydGluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXNzb2NpYXRlIG1ldGFkYXRhIHdpdGguXG4gICAgICogQHBhcmFtIHsqfSBkYXRhIFRoZSBtZXRhZGF0YS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBiYXNlU2V0RGF0YSA9ICFtZXRhTWFwID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBkYXRhKSB7XG4gICAgICBtZXRhTWFwLnNldChmdW5jLCBkYXRhKTtcbiAgICAgIHJldHVybiBmdW5jO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gICAgICovXG4gICAgdmFyIGJhc2VTZXRUb1N0cmluZyA9ICFkZWZpbmVQcm9wZXJ0eSA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgc3RyaW5nKSB7XG4gICAgICByZXR1cm4gZGVmaW5lUHJvcGVydHkoZnVuYywgJ3RvU3RyaW5nJywge1xuICAgICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICAgJ2VudW1lcmFibGUnOiBmYWxzZSxcbiAgICAgICAgJ3ZhbHVlJzogY29uc3RhbnQoc3RyaW5nKSxcbiAgICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNodWZmbGVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTaHVmZmxlKGNvbGxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZih2YWx1ZXMoY29sbGVjdGlvbikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNsaWNlYCB3aXRob3V0IGFuIGl0ZXJhdGVlIGNhbGwgZ3VhcmQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzbGljZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgICAgIHN0YXJ0ID0gLXN0YXJ0ID4gbGVuZ3RoID8gMCA6IChsZW5ndGggKyBzdGFydCk7XG4gICAgICB9XG4gICAgICBlbmQgPSBlbmQgPiBsZW5ndGggPyBsZW5ndGggOiBlbmQ7XG4gICAgICBpZiAoZW5kIDwgMCkge1xuICAgICAgICBlbmQgKz0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgbGVuZ3RoID0gc3RhcnQgPiBlbmQgPyAwIDogKChlbmQgLSBzdGFydCkgPj4+IDApO1xuICAgICAgc3RhcnQgPj4+PSAwO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtpbmRleF0gPSBhcnJheVtpbmRleCArIHN0YXJ0XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29tZWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvbWUoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0O1xuXG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgICAgIHJldHVybiAhcmVzdWx0O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gISFyZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkSW5kZXhgIGFuZCBgXy5zb3J0ZWRMYXN0SW5kZXhgIHdoaWNoXG4gICAgICogcGVyZm9ybXMgYSBiaW5hcnkgc2VhcmNoIG9mIGBhcnJheWAgdG8gZGV0ZXJtaW5lIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgXG4gICAgICogc2hvdWxkIGJlIGluc2VydGVkIGludG8gYGFycmF5YCBpbiBvcmRlciB0byBtYWludGFpbiBpdHMgc29ydCBvcmRlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JldEhpZ2hlc3RdIFNwZWNpZnkgcmV0dXJuaW5nIHRoZSBoaWdoZXN0IHF1YWxpZmllZCBpbmRleC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSwgcmV0SGlnaGVzdCkge1xuICAgICAgdmFyIGxvdyA9IDAsXG4gICAgICAgICAgaGlnaCA9IGFycmF5ID09IG51bGwgPyBsb3cgOiBhcnJheS5sZW5ndGg7XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgdmFsdWUgPT09IHZhbHVlICYmIGhpZ2ggPD0gSEFMRl9NQVhfQVJSQVlfTEVOR1RIKSB7XG4gICAgICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7XG4gICAgICAgICAgdmFyIG1pZCA9IChsb3cgKyBoaWdoKSA+Pj4gMSxcbiAgICAgICAgICAgICAgY29tcHV0ZWQgPSBhcnJheVttaWRdO1xuXG4gICAgICAgICAgaWYgKGNvbXB1dGVkICE9PSBudWxsICYmICFpc1N5bWJvbChjb21wdXRlZCkgJiZcbiAgICAgICAgICAgICAgKHJldEhpZ2hlc3QgPyAoY29tcHV0ZWQgPD0gdmFsdWUpIDogKGNvbXB1dGVkIDwgdmFsdWUpKSkge1xuICAgICAgICAgICAgbG93ID0gbWlkICsgMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaGlnaCA9IG1pZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhpZ2g7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBpZGVudGl0eSwgcmV0SGlnaGVzdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkSW5kZXhCeWAgYW5kIGBfLnNvcnRlZExhc3RJbmRleEJ5YFxuICAgICAqIHdoaWNoIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgYHZhbHVlYCBhbmQgZWFjaCBlbGVtZW50IG9mIGBhcnJheWAgdG8gY29tcHV0ZVxuICAgICAqIHRoZWlyIHNvcnQgcmFua2luZy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ7ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXRIaWdoZXN0XSBTcGVjaWZ5IHJldHVybmluZyB0aGUgaGlnaGVzdCBxdWFsaWZpZWQgaW5kZXguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaXRlcmF0ZWUsIHJldEhpZ2hlc3QpIHtcbiAgICAgIHZhciBsb3cgPSAwLFxuICAgICAgICAgIGhpZ2ggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmIChoaWdoID09PSAwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuXG4gICAgICB2YWx1ZSA9IGl0ZXJhdGVlKHZhbHVlKTtcbiAgICAgIHZhciB2YWxJc05hTiA9IHZhbHVlICE9PSB2YWx1ZSxcbiAgICAgICAgICB2YWxJc051bGwgPSB2YWx1ZSA9PT0gbnVsbCxcbiAgICAgICAgICB2YWxJc1N5bWJvbCA9IGlzU3ltYm9sKHZhbHVlKSxcbiAgICAgICAgICB2YWxJc1VuZGVmaW5lZCA9IHZhbHVlID09PSB1bmRlZmluZWQ7XG5cbiAgICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7XG4gICAgICAgIHZhciBtaWQgPSBuYXRpdmVGbG9vcigobG93ICsgaGlnaCkgLyAyKSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUoYXJyYXlbbWlkXSksXG4gICAgICAgICAgICBvdGhJc0RlZmluZWQgPSBjb21wdXRlZCAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgICAgb3RoSXNOdWxsID0gY29tcHV0ZWQgPT09IG51bGwsXG4gICAgICAgICAgICBvdGhJc1JlZmxleGl2ZSA9IGNvbXB1dGVkID09PSBjb21wdXRlZCxcbiAgICAgICAgICAgIG90aElzU3ltYm9sID0gaXNTeW1ib2woY29tcHV0ZWQpO1xuXG4gICAgICAgIGlmICh2YWxJc05hTikge1xuICAgICAgICAgIHZhciBzZXRMb3cgPSByZXRIaWdoZXN0IHx8IG90aElzUmVmbGV4aXZlO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbElzVW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2V0TG93ID0gb3RoSXNSZWZsZXhpdmUgJiYgKHJldEhpZ2hlc3QgfHwgb3RoSXNEZWZpbmVkKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWxJc051bGwpIHtcbiAgICAgICAgICBzZXRMb3cgPSBvdGhJc1JlZmxleGl2ZSAmJiBvdGhJc0RlZmluZWQgJiYgKHJldEhpZ2hlc3QgfHwgIW90aElzTnVsbCk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsSXNTeW1ib2wpIHtcbiAgICAgICAgICBzZXRMb3cgPSBvdGhJc1JlZmxleGl2ZSAmJiBvdGhJc0RlZmluZWQgJiYgIW90aElzTnVsbCAmJiAocmV0SGlnaGVzdCB8fCAhb3RoSXNTeW1ib2wpO1xuICAgICAgICB9IGVsc2UgaWYgKG90aElzTnVsbCB8fCBvdGhJc1N5bWJvbCkge1xuICAgICAgICAgIHNldExvdyA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldExvdyA9IHJldEhpZ2hlc3QgPyAoY29tcHV0ZWQgPD0gdmFsdWUpIDogKGNvbXB1dGVkIDwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXRMb3cpIHtcbiAgICAgICAgICBsb3cgPSBtaWQgKyAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGhpZ2ggPSBtaWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuYXRpdmVNaW4oaGlnaCwgTUFYX0FSUkFZX0lOREVYKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb3J0ZWRVbmlxYCBhbmQgYF8uc29ydGVkVW5pcUJ5YCB3aXRob3V0XG4gICAgICogc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU29ydGVkVW5pcShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgICAgICBpZiAoIWluZGV4IHx8ICFlcShjb21wdXRlZCwgc2VlbikpIHtcbiAgICAgICAgICB2YXIgc2VlbiA9IGNvbXB1dGVkO1xuICAgICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlID09PSAwID8gMCA6IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvTnVtYmVyYCB3aGljaCBkb2Vzbid0IGVuc3VyZSBjb3JyZWN0XG4gICAgICogY29udmVyc2lvbnMgb2YgYmluYXJ5LCBoZXhhZGVjaW1hbCwgb3Igb2N0YWwgc3RyaW5nIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVRvTnVtYmVyKHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5BTjtcbiAgICAgIH1cbiAgICAgIHJldHVybiArdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udG9TdHJpbmdgIHdoaWNoIGRvZXNuJ3QgY29udmVydCBudWxsaXNoXG4gICAgICogdmFsdWVzIHRvIGVtcHR5IHN0cmluZ3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VUb1N0cmluZyh2YWx1ZSkge1xuICAgICAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbnZlcnQgdmFsdWVzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICAgICAgfVxuICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgICAgIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmlxQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVW5pcShhcnJheSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlcyxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgaXNDb21tb24gPSB0cnVlLFxuICAgICAgICAgIHJlc3VsdCA9IFtdLFxuICAgICAgICAgIHNlZW4gPSByZXN1bHQ7XG5cbiAgICAgIGlmIChjb21wYXJhdG9yKSB7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChsZW5ndGggPj0gTEFSR0VfQVJSQVlfU0laRSkge1xuICAgICAgICB2YXIgc2V0ID0gaXRlcmF0ZWUgPyBudWxsIDogY3JlYXRlU2V0KGFycmF5KTtcbiAgICAgICAgaWYgKHNldCkge1xuICAgICAgICAgIHJldHVybiBzZXRUb0FycmF5KHNldCk7XG4gICAgICAgIH1cbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgaW5jbHVkZXMgPSBjYWNoZUhhcztcbiAgICAgICAgc2VlbiA9IG5ldyBTZXRDYWNoZTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBzZWVuID0gaXRlcmF0ZWUgPyBbXSA6IHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgICAgICBpZiAoaXNDb21tb24gJiYgY29tcHV0ZWQgPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgdmFyIHNlZW5JbmRleCA9IHNlZW4ubGVuZ3RoO1xuICAgICAgICAgIHdoaWxlIChzZWVuSW5kZXgtLSkge1xuICAgICAgICAgICAgaWYgKHNlZW5bc2VlbkluZGV4XSA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFpbmNsdWRlcyhzZWVuLCBjb21wdXRlZCwgY29tcGFyYXRvcikpIHtcbiAgICAgICAgICBpZiAoc2VlbiAhPT0gcmVzdWx0KSB7XG4gICAgICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5zZXRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwcm9wZXJ0eSBwYXRoIHRvIHVuc2V0LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgaXMgZGVsZXRlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VVbnNldChvYmplY3QsIHBhdGgpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICAgICAgb2JqZWN0ID0gcGFyZW50KG9iamVjdCwgcGF0aCk7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgfHwgZGVsZXRlIG9iamVjdFt0b0tleShsYXN0KHBhdGgpKV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udXBkYXRlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gdXBkYXRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHVwZGF0ZXIgVGhlIGZ1bmN0aW9uIHRvIHByb2R1Y2UgdGhlIHVwZGF0ZWQgdmFsdWUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgcGF0aCBjcmVhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VVcGRhdGUob2JqZWN0LCBwYXRoLCB1cGRhdGVyLCBjdXN0b21pemVyKSB7XG4gICAgICByZXR1cm4gYmFzZVNldChvYmplY3QsIHBhdGgsIHVwZGF0ZXIoYmFzZUdldChvYmplY3QsIHBhdGgpKSwgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmRyb3BXaGlsZWAgYW5kIGBfLnRha2VXaGlsZWBcbiAgICAgKiB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0Ryb3BdIFNwZWNpZnkgZHJvcHBpbmcgZWxlbWVudHMgaW5zdGVhZCBvZiB0YWtpbmcgdGhlbS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVdoaWxlKGFycmF5LCBwcmVkaWNhdGUsIGlzRHJvcCwgZnJvbVJpZ2h0KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGluZGV4ID0gZnJvbVJpZ2h0ID8gbGVuZ3RoIDogLTE7XG5cbiAgICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpICYmXG4gICAgICAgIHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHt9XG5cbiAgICAgIHJldHVybiBpc0Ryb3BcbiAgICAgICAgPyBiYXNlU2xpY2UoYXJyYXksIChmcm9tUmlnaHQgPyAwIDogaW5kZXgpLCAoZnJvbVJpZ2h0ID8gaW5kZXggKyAxIDogbGVuZ3RoKSlcbiAgICAgICAgOiBiYXNlU2xpY2UoYXJyYXksIChmcm9tUmlnaHQgPyBpbmRleCArIDEgOiAwKSwgKGZyb21SaWdodCA/IGxlbmd0aCA6IGluZGV4KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHdyYXBwZXJWYWx1ZWAgd2hpY2ggcmV0dXJucyB0aGUgcmVzdWx0IG9mXG4gICAgICogcGVyZm9ybWluZyBhIHNlcXVlbmNlIG9mIGFjdGlvbnMgb24gdGhlIHVud3JhcHBlZCBgdmFsdWVgLCB3aGVyZSBlYWNoXG4gICAgICogc3VjY2Vzc2l2ZSBhY3Rpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhY3Rpb25zIEFjdGlvbnMgdG8gcGVyZm9ybSB0byByZXNvbHZlIHRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VXcmFwcGVyVmFsdWUodmFsdWUsIGFjdGlvbnMpIHtcbiAgICAgIHZhciByZXN1bHQgPSB2YWx1ZTtcbiAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQudmFsdWUoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheVJlZHVjZShhY3Rpb25zLCBmdW5jdGlvbihyZXN1bHQsIGFjdGlvbikge1xuICAgICAgICByZXR1cm4gYWN0aW9uLmZ1bmMuYXBwbHkoYWN0aW9uLnRoaXNBcmcsIGFycmF5UHVzaChbcmVzdWx0XSwgYWN0aW9uLmFyZ3MpKTtcbiAgICAgIH0sIHJlc3VsdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLnhvcmAsIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLCB0aGF0IGFjY2VwdHMgYW4gYXJyYXkgb2YgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5cyBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiB2YWx1ZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVhvcihhcnJheXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXlzLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlVW5pcShhcnJheXNbMF0pIDogW107XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgYXJyYXkgPSBhcnJheXNbaW5kZXhdLFxuICAgICAgICAgICAgb3RoSW5kZXggPSAtMTtcblxuICAgICAgICB3aGlsZSAoKytvdGhJbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIGlmIChvdGhJbmRleCAhPSBpbmRleCkge1xuICAgICAgICAgICAgcmVzdWx0W2luZGV4XSA9IGJhc2VEaWZmZXJlbmNlKHJlc3VsdFtpbmRleF0gfHwgYXJyYXksIGFycmF5c1tvdGhJbmRleF0sIGl0ZXJhdGVlLCBjb21wYXJhdG9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihyZXN1bHQsIDEpLCBpdGVyYXRlZSwgY29tcGFyYXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnppcE9iamVjdGAgd2hpY2ggYXNzaWducyB2YWx1ZXMgdXNpbmcgYGFzc2lnbkZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduRnVuYyBUaGUgZnVuY3Rpb24gdG8gYXNzaWduIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VaaXBPYmplY3QocHJvcHMsIHZhbHVlcywgYXNzaWduRnVuYykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoLFxuICAgICAgICAgIHZhbHNMZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBpbmRleCA8IHZhbHNMZW5ndGggPyB2YWx1ZXNbaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgICAgICBhc3NpZ25GdW5jKHJlc3VsdCwgcHJvcHNbaW5kZXhdLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhc3RzIGB2YWx1ZWAgdG8gYW4gZW1wdHkgYXJyYXkgaWYgaXQncyBub3QgYW4gYXJyYXkgbGlrZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyB0aGUgY2FzdCBhcnJheS1saWtlIG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0QXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpID8gdmFsdWUgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgdmFsdWVgIHRvIGBpZGVudGl0eWAgaWYgaXQncyBub3QgYSBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgY2FzdCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0RnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlIDogaWRlbnRpdHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYHZhbHVlYCB0byBhIHBhdGggYXJyYXkgaWYgaXQncyBub3Qgb25lLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdFBhdGgodmFsdWUsIG9iamVjdCkge1xuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc0tleSh2YWx1ZSwgb2JqZWN0KSA/IFt2YWx1ZV0gOiBzdHJpbmdUb1BhdGgodG9TdHJpbmcodmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIGBiYXNlUmVzdGAgYWxpYXMgd2hpY2ggY2FuIGJlIHJlcGxhY2VkIHdpdGggYGlkZW50aXR5YCBieSBtb2R1bGVcbiAgICAgKiByZXBsYWNlbWVudCBwbHVnaW5zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAdHlwZSB7RnVuY3Rpb259XG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICB2YXIgY2FzdFJlc3QgPSBiYXNlUmVzdDtcblxuICAgIC8qKlxuICAgICAqIENhc3RzIGBhcnJheWAgdG8gYSBzbGljZSBpZiBpdCdzIG5lZWRlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHNsaWNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RTbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogZW5kO1xuICAgICAgcmV0dXJuICghc3RhcnQgJiYgZW5kID49IGxlbmd0aCkgPyBhcnJheSA6IGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzaW1wbGUgd3JhcHBlciBhcm91bmQgdGhlIGdsb2JhbCBbYGNsZWFyVGltZW91dGBdKGh0dHBzOi8vbWRuLmlvL2NsZWFyVGltZW91dCkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfE9iamVjdH0gaWQgVGhlIHRpbWVyIGlkIG9yIHRpbWVvdXQgb2JqZWN0IG9mIHRoZSB0aW1lciB0byBjbGVhci5cbiAgICAgKi9cbiAgICB2YXIgY2xlYXJUaW1lb3V0ID0gY3R4Q2xlYXJUaW1lb3V0IHx8IGZ1bmN0aW9uKGlkKSB7XG4gICAgICByZXR1cm4gcm9vdC5jbGVhclRpbWVvdXQoaWQpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgIGBidWZmZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIFRoZSBidWZmZXIgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYnVmZmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lQnVmZmVyKGJ1ZmZlciwgaXNEZWVwKSB7XG4gICAgICBpZiAoaXNEZWVwKSB7XG4gICAgICAgIHJldHVybiBidWZmZXIuc2xpY2UoKTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBidWZmZXIubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IGFsbG9jVW5zYWZlID8gYWxsb2NVbnNhZmUobGVuZ3RoKSA6IG5ldyBidWZmZXIuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICAgICAgYnVmZmVyLmNvcHkocmVzdWx0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGBhcnJheUJ1ZmZlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGFycmF5QnVmZmVyIFRoZSBhcnJheSBidWZmZXIgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge0FycmF5QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYXJyYXkgYnVmZmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpIHtcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgYXJyYXlCdWZmZXIuY29uc3RydWN0b3IoYXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICBuZXcgVWludDhBcnJheShyZXN1bHQpLnNldChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGRhdGFWaWV3YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGRhdGFWaWV3IFRoZSBkYXRhIHZpZXcgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgZGF0YSB2aWV3LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lRGF0YVZpZXcoZGF0YVZpZXcsIGlzRGVlcCkge1xuICAgICAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIoZGF0YVZpZXcuYnVmZmVyKSA6IGRhdGFWaWV3LmJ1ZmZlcjtcbiAgICAgIHJldHVybiBuZXcgZGF0YVZpZXcuY29uc3RydWN0b3IoYnVmZmVyLCBkYXRhVmlldy5ieXRlT2Zmc2V0LCBkYXRhVmlldy5ieXRlTGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHJlZ2V4cGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSByZWdleHAgVGhlIHJlZ2V4cCB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgcmVnZXhwLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lUmVnRXhwKHJlZ2V4cCkge1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyByZWdleHAuY29uc3RydWN0b3IocmVnZXhwLnNvdXJjZSwgcmVGbGFncy5leGVjKHJlZ2V4cCkpO1xuICAgICAgcmVzdWx0Lmxhc3RJbmRleCA9IHJlZ2V4cC5sYXN0SW5kZXg7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgYHN5bWJvbGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3ltYm9sIFRoZSBzeW1ib2wgb2JqZWN0IHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBzeW1ib2wgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lU3ltYm9sKHN5bWJvbCkge1xuICAgICAgcmV0dXJuIHN5bWJvbFZhbHVlT2YgPyBPYmplY3Qoc3ltYm9sVmFsdWVPZi5jYWxsKHN5bWJvbCkpIDoge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGB0eXBlZEFycmF5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHR5cGVkQXJyYXkgVGhlIHR5cGVkIGFycmF5IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHR5cGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lVHlwZWRBcnJheSh0eXBlZEFycmF5LCBpc0RlZXApIHtcbiAgICAgIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKHR5cGVkQXJyYXkuYnVmZmVyKSA6IHR5cGVkQXJyYXkuYnVmZmVyO1xuICAgICAgcmV0dXJuIG5ldyB0eXBlZEFycmF5LmNvbnN0cnVjdG9yKGJ1ZmZlciwgdHlwZWRBcnJheS5ieXRlT2Zmc2V0LCB0eXBlZEFycmF5Lmxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcGFyZXMgdmFsdWVzIHRvIHNvcnQgdGhlbSBpbiBhc2NlbmRpbmcgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzb3J0IG9yZGVyIGluZGljYXRvciBmb3IgYHZhbHVlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wYXJlQXNjZW5kaW5nKHZhbHVlLCBvdGhlcikge1xuICAgICAgaWYgKHZhbHVlICE9PSBvdGhlcikge1xuICAgICAgICB2YXIgdmFsSXNEZWZpbmVkID0gdmFsdWUgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHZhbElzTnVsbCA9IHZhbHVlID09PSBudWxsLFxuICAgICAgICAgICAgdmFsSXNSZWZsZXhpdmUgPSB2YWx1ZSA9PT0gdmFsdWUsXG4gICAgICAgICAgICB2YWxJc1N5bWJvbCA9IGlzU3ltYm9sKHZhbHVlKTtcblxuICAgICAgICB2YXIgb3RoSXNEZWZpbmVkID0gb3RoZXIgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG90aElzTnVsbCA9IG90aGVyID09PSBudWxsLFxuICAgICAgICAgICAgb3RoSXNSZWZsZXhpdmUgPSBvdGhlciA9PT0gb3RoZXIsXG4gICAgICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKG90aGVyKTtcblxuICAgICAgICBpZiAoKCFvdGhJc051bGwgJiYgIW90aElzU3ltYm9sICYmICF2YWxJc1N5bWJvbCAmJiB2YWx1ZSA+IG90aGVyKSB8fFxuICAgICAgICAgICAgKHZhbElzU3ltYm9sICYmIG90aElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSAmJiAhb3RoSXNOdWxsICYmICFvdGhJc1N5bWJvbCkgfHxcbiAgICAgICAgICAgICh2YWxJc051bGwgJiYgb3RoSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgKCF2YWxJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICAgICAhdmFsSXNSZWZsZXhpdmUpIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKCF2YWxJc051bGwgJiYgIXZhbElzU3ltYm9sICYmICFvdGhJc1N5bWJvbCAmJiB2YWx1ZSA8IG90aGVyKSB8fFxuICAgICAgICAgICAgKG90aElzU3ltYm9sICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSAmJiAhdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCkgfHxcbiAgICAgICAgICAgIChvdGhJc051bGwgJiYgdmFsSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgKCFvdGhJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICAgICAhb3RoSXNSZWZsZXhpdmUpIHtcbiAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8ub3JkZXJCeWAgdG8gY29tcGFyZSBtdWx0aXBsZSBwcm9wZXJ0aWVzIG9mIGEgdmFsdWUgdG8gYW5vdGhlclxuICAgICAqIGFuZCBzdGFibGUgc29ydCB0aGVtLlxuICAgICAqXG4gICAgICogSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXMgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuIE90aGVyd2lzZSxcbiAgICAgKiBzcGVjaWZ5IGFuIG9yZGVyIG9mIFwiZGVzY1wiIGZvciBkZXNjZW5kaW5nIG9yIFwiYXNjXCIgZm9yIGFzY2VuZGluZyBzb3J0IG9yZGVyXG4gICAgICogb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtib29sZWFuW118c3RyaW5nW119IG9yZGVycyBUaGUgb3JkZXIgdG8gc29ydCBieSBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzb3J0IG9yZGVyIGluZGljYXRvciBmb3IgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcGFyZU11bHRpcGxlKG9iamVjdCwgb3RoZXIsIG9yZGVycykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgb2JqQ3JpdGVyaWEgPSBvYmplY3QuY3JpdGVyaWEsXG4gICAgICAgICAgb3RoQ3JpdGVyaWEgPSBvdGhlci5jcml0ZXJpYSxcbiAgICAgICAgICBsZW5ndGggPSBvYmpDcml0ZXJpYS5sZW5ndGgsXG4gICAgICAgICAgb3JkZXJzTGVuZ3RoID0gb3JkZXJzLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGNvbXBhcmVBc2NlbmRpbmcob2JqQ3JpdGVyaWFbaW5kZXhdLCBvdGhDcml0ZXJpYVtpbmRleF0pO1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgaWYgKGluZGV4ID49IG9yZGVyc0xlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG9yZGVyID0gb3JkZXJzW2luZGV4XTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0ICogKG9yZGVyID09ICdkZXNjJyA/IC0xIDogMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIEZpeGVzIGFuIGBBcnJheSNzb3J0YCBidWcgaW4gdGhlIEpTIGVuZ2luZSBlbWJlZGRlZCBpbiBBZG9iZSBhcHBsaWNhdGlvbnNcbiAgICAgIC8vIHRoYXQgY2F1c2VzIGl0LCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIHRvIHByb3ZpZGUgdGhlIHNhbWUgdmFsdWUgZm9yXG4gICAgICAvLyBgb2JqZWN0YCBhbmQgYG90aGVyYC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qYXNoa2VuYXMvdW5kZXJzY29yZS9wdWxsLzEyNDdcbiAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAvL1xuICAgICAgLy8gVGhpcyBhbHNvIGVuc3VyZXMgYSBzdGFibGUgc29ydCBpbiBWOCBhbmQgb3RoZXIgZW5naW5lcy5cbiAgICAgIC8vIFNlZSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD05MCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgcmV0dXJuIG9iamVjdC5pbmRleCAtIG90aGVyLmluZGV4O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgdGhhdCBpcyB0aGUgY29tcG9zaXRpb24gb2YgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLFxuICAgICAqIHBsYWNlaG9sZGVycywgYW5kIHByb3ZpZGVkIGFyZ3VtZW50cyBpbnRvIGEgc2luZ2xlIGFycmF5IG9mIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBob2xkZXJzIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtcyB7Ym9vbGVhbn0gW2lzQ3VycmllZF0gU3BlY2lmeSBjb21wb3NpbmcgZm9yIGEgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21wb3NlZCBhcmd1bWVudHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcG9zZUFyZ3MoYXJncywgcGFydGlhbHMsIGhvbGRlcnMsIGlzQ3VycmllZCkge1xuICAgICAgdmFyIGFyZ3NJbmRleCA9IC0xLFxuICAgICAgICAgIGFyZ3NMZW5ndGggPSBhcmdzLmxlbmd0aCxcbiAgICAgICAgICBob2xkZXJzTGVuZ3RoID0gaG9sZGVycy5sZW5ndGgsXG4gICAgICAgICAgbGVmdEluZGV4ID0gLTEsXG4gICAgICAgICAgbGVmdExlbmd0aCA9IHBhcnRpYWxzLmxlbmd0aCxcbiAgICAgICAgICByYW5nZUxlbmd0aCA9IG5hdGl2ZU1heChhcmdzTGVuZ3RoIC0gaG9sZGVyc0xlbmd0aCwgMCksXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobGVmdExlbmd0aCArIHJhbmdlTGVuZ3RoKSxcbiAgICAgICAgICBpc1VuY3VycmllZCA9ICFpc0N1cnJpZWQ7XG5cbiAgICAgIHdoaWxlICgrK2xlZnRJbmRleCA8IGxlZnRMZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W2xlZnRJbmRleF0gPSBwYXJ0aWFsc1tsZWZ0SW5kZXhdO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsrYXJnc0luZGV4IDwgaG9sZGVyc0xlbmd0aCkge1xuICAgICAgICBpZiAoaXNVbmN1cnJpZWQgfHwgYXJnc0luZGV4IDwgYXJnc0xlbmd0aCkge1xuICAgICAgICAgIHJlc3VsdFtob2xkZXJzW2FyZ3NJbmRleF1dID0gYXJnc1thcmdzSW5kZXhdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB3aGlsZSAocmFuZ2VMZW5ndGgtLSkge1xuICAgICAgICByZXN1bHRbbGVmdEluZGV4KytdID0gYXJnc1thcmdzSW5kZXgrK107XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgY29tcG9zZUFyZ3NgIGV4Y2VwdCB0aGF0IHRoZSBhcmd1bWVudHMgY29tcG9zaXRpb25cbiAgICAgKiBpcyB0YWlsb3JlZCBmb3IgYF8ucGFydGlhbFJpZ2h0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gYXBwZW5kIHRvIHRob3NlIHByb3ZpZGVkLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGhvbGRlcnMgVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW1zIHtib29sZWFufSBbaXNDdXJyaWVkXSBTcGVjaWZ5IGNvbXBvc2luZyBmb3IgYSBjdXJyaWVkIGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbXBvc2VkIGFyZ3VtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wb3NlQXJnc1JpZ2h0KGFyZ3MsIHBhcnRpYWxzLCBob2xkZXJzLCBpc0N1cnJpZWQpIHtcbiAgICAgIHZhciBhcmdzSW5kZXggPSAtMSxcbiAgICAgICAgICBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGgsXG4gICAgICAgICAgaG9sZGVyc0luZGV4ID0gLTEsXG4gICAgICAgICAgaG9sZGVyc0xlbmd0aCA9IGhvbGRlcnMubGVuZ3RoLFxuICAgICAgICAgIHJpZ2h0SW5kZXggPSAtMSxcbiAgICAgICAgICByaWdodExlbmd0aCA9IHBhcnRpYWxzLmxlbmd0aCxcbiAgICAgICAgICByYW5nZUxlbmd0aCA9IG5hdGl2ZU1heChhcmdzTGVuZ3RoIC0gaG9sZGVyc0xlbmd0aCwgMCksXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkocmFuZ2VMZW5ndGggKyByaWdodExlbmd0aCksXG4gICAgICAgICAgaXNVbmN1cnJpZWQgPSAhaXNDdXJyaWVkO1xuXG4gICAgICB3aGlsZSAoKythcmdzSW5kZXggPCByYW5nZUxlbmd0aCkge1xuICAgICAgICByZXN1bHRbYXJnc0luZGV4XSA9IGFyZ3NbYXJnc0luZGV4XTtcbiAgICAgIH1cbiAgICAgIHZhciBvZmZzZXQgPSBhcmdzSW5kZXg7XG4gICAgICB3aGlsZSAoKytyaWdodEluZGV4IDwgcmlnaHRMZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W29mZnNldCArIHJpZ2h0SW5kZXhdID0gcGFydGlhbHNbcmlnaHRJbmRleF07XG4gICAgICB9XG4gICAgICB3aGlsZSAoKytob2xkZXJzSW5kZXggPCBob2xkZXJzTGVuZ3RoKSB7XG4gICAgICAgIGlmIChpc1VuY3VycmllZCB8fCBhcmdzSW5kZXggPCBhcmdzTGVuZ3RoKSB7XG4gICAgICAgICAgcmVzdWx0W29mZnNldCArIGhvbGRlcnNbaG9sZGVyc0luZGV4XV0gPSBhcmdzW2FyZ3NJbmRleCsrXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5PVtdXSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgdG8uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29weUFycmF5KHNvdXJjZSwgYXJyYXkpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgICAgIGFycmF5IHx8IChhcnJheSA9IEFycmF5KGxlbmd0aCkpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgcHJvcGVydGllcyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycyB0byBjb3B5LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0by5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb3BpZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29weU9iamVjdChzb3VyY2UsIHByb3BzLCBvYmplY3QsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBpc05ldyA9ICFvYmplY3Q7XG4gICAgICBvYmplY3QgfHwgKG9iamVjdCA9IHt9KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuXG4gICAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgICA/IGN1c3RvbWl6ZXIob2JqZWN0W2tleV0sIHNvdXJjZVtrZXldLCBrZXksIG9iamVjdCwgc291cmNlKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOZXcpIHtcbiAgICAgICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcGllcyBvd24gc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlTeW1ib2xzKHNvdXJjZSwgb2JqZWN0KSB7XG4gICAgICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHMoc291cmNlKSwgb2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgb3duIGFuZCBpbmhlcml0ZWQgc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlTeW1ib2xzSW4oc291cmNlLCBvYmplY3QpIHtcbiAgICAgIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9sc0luKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uZ3JvdXBCeWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGFjY3VtdWxhdG9yIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaW5pdGlhbGl6ZXJdIFRoZSBhY2N1bXVsYXRvciBvYmplY3QgaW5pdGlhbGl6ZXIuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWdncmVnYXRvciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVBZ2dyZWdhdG9yKHNldHRlciwgaW5pdGlhbGl6ZXIpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUFnZ3JlZ2F0b3IgOiBiYXNlQWdncmVnYXRvcixcbiAgICAgICAgICAgIGFjY3VtdWxhdG9yID0gaW5pdGlhbGl6ZXIgPyBpbml0aWFsaXplcigpIDoge307XG5cbiAgICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgc2V0dGVyLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGFjY3VtdWxhdG9yKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uYXNzaWduYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduZXIgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoYXNzaWduZXIpIHtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgICBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aCxcbiAgICAgICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPiAxID8gc291cmNlc1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY3VzdG9taXplciA9IChhc3NpZ25lci5sZW5ndGggPiAzICYmIHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicpXG4gICAgICAgICAgPyAobGVuZ3RoLS0sIGN1c3RvbWl6ZXIpXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPCAzID8gdW5kZWZpbmVkIDogY3VzdG9taXplcjtcbiAgICAgICAgICBsZW5ndGggPSAxO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgICAgICBhc3NpZ25lcihvYmplY3QsIHNvdXJjZSwgaW5kZXgsIGN1c3RvbWl6ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBiYXNlRWFjaGAgb3IgYGJhc2VFYWNoUmlnaHRgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGEgY29sbGVjdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUJhc2VFYWNoKGVhY2hGdW5jLCBmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgICAgIHJldHVybiBlYWNoRnVuYyhjb2xsZWN0aW9uLCBpdGVyYXRlZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuICAgICAgICAgICAgaW5kZXggPSBmcm9tUmlnaHQgPyBsZW5ndGggOiAtMSxcbiAgICAgICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KGNvbGxlY3Rpb24pO1xuXG4gICAgICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2luZGV4XSwgaW5kZXgsIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGJhc2UgZnVuY3Rpb24gZm9yIG1ldGhvZHMgbGlrZSBgXy5mb3JJbmAgYW5kIGBfLmZvck93bmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQmFzZUZvcihmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzRnVuYykge1xuICAgICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KG9iamVjdCksXG4gICAgICAgICAgICBwcm9wcyA9IGtleXNGdW5jKG9iamVjdCksXG4gICAgICAgICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgICAgdmFyIGtleSA9IHByb3BzW2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdO1xuICAgICAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gaW52b2tlIGl0IHdpdGggdGhlIG9wdGlvbmFsIGB0aGlzYFxuICAgICAqIGJpbmRpbmcgb2YgYHRoaXNBcmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUJpbmQoZnVuYywgYml0bWFzaywgdGhpc0FyZykge1xuICAgICAgdmFyIGlzQmluZCA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRyxcbiAgICAgICAgICBDdG9yID0gY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGZuID0gKHRoaXMgJiYgdGhpcyAhPT0gcm9vdCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikgPyBDdG9yIDogZnVuYztcbiAgICAgICAgcmV0dXJuIGZuLmFwcGx5KGlzQmluZCA/IHRoaXNBcmcgOiB0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8ubG93ZXJGaXJzdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lIFRoZSBuYW1lIG9mIHRoZSBgU3RyaW5nYCBjYXNlIG1ldGhvZCB0byB1c2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FzZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDYXNlRmlyc3QobWV0aG9kTmFtZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuXG4gICAgICAgIHZhciBzdHJTeW1ib2xzID0gaGFzVW5pY29kZShzdHJpbmcpXG4gICAgICAgICAgPyBzdHJpbmdUb0FycmF5KHN0cmluZylcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICB2YXIgY2hyID0gc3RyU3ltYm9sc1xuICAgICAgICAgID8gc3RyU3ltYm9sc1swXVxuICAgICAgICAgIDogc3RyaW5nLmNoYXJBdCgwKTtcblxuICAgICAgICB2YXIgdHJhaWxpbmcgPSBzdHJTeW1ib2xzXG4gICAgICAgICAgPyBjYXN0U2xpY2Uoc3RyU3ltYm9scywgMSkuam9pbignJylcbiAgICAgICAgICA6IHN0cmluZy5zbGljZSgxKTtcblxuICAgICAgICByZXR1cm4gY2hyW21ldGhvZE5hbWVdKCkgKyB0cmFpbGluZztcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uY2FtZWxDYXNlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRvIGNvbWJpbmUgZWFjaCB3b3JkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbXBvdW5kZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQ29tcG91bmRlcihjYWxsYmFjaykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgICByZXR1cm4gYXJyYXlSZWR1Y2Uod29yZHMoZGVidXJyKHN0cmluZykucmVwbGFjZShyZUFwb3MsICcnKSksIGNhbGxiYWNrLCAnJyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIGFuIGluc3RhbmNlIG9mIGBDdG9yYCByZWdhcmRsZXNzIG9mXG4gICAgICogd2hldGhlciBpdCB3YXMgaW52b2tlZCBhcyBwYXJ0IG9mIGEgYG5ld2AgZXhwcmVzc2lvbiBvciBieSBgY2FsbGAgb3IgYGFwcGx5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gQ3RvciBUaGUgY29uc3RydWN0b3IgdG8gd3JhcC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUN0b3IoQ3Rvcikge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBVc2UgYSBgc3dpdGNoYCBzdGF0ZW1lbnQgdG8gd29yayB3aXRoIGNsYXNzIGNvbnN0cnVjdG9ycy4gU2VlXG4gICAgICAgIC8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtZnVuY3Rpb24tb2JqZWN0cy1jYWxsLXRoaXNhcmd1bWVudC1hcmd1bWVudHNsaXN0XG4gICAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEN0b3I7XG4gICAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSk7XG4gICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgICAgY2FzZSAzOiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgICAgICAgY2FzZSA0OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gICAgICAgICAgY2FzZSA1OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSk7XG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSwgYXJnc1s1XSk7XG4gICAgICAgICAgY2FzZSA3OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSwgYXJnc1s1XSwgYXJnc1s2XSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRoaXNCaW5kaW5nID0gYmFzZUNyZWF0ZShDdG9yLnByb3RvdHlwZSksXG4gICAgICAgICAgICByZXN1bHQgPSBDdG9yLmFwcGx5KHRoaXNCaW5kaW5nLCBhcmdzKTtcblxuICAgICAgICAvLyBNaW1pYyB0aGUgY29uc3RydWN0b3IncyBgcmV0dXJuYCBiZWhhdmlvci5cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDEzLjIuMiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICByZXR1cm4gaXNPYmplY3QocmVzdWx0KSA/IHJlc3VsdCA6IHRoaXNCaW5kaW5nO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gZW5hYmxlIGN1cnJ5aW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGFyaXR5IFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDdXJyeShmdW5jLCBiaXRtYXNrLCBhcml0eSkge1xuICAgICAgdmFyIEN0b3IgPSBjcmVhdGVDdG9yKGZ1bmMpO1xuXG4gICAgICBmdW5jdGlvbiB3cmFwcGVyKCkge1xuICAgICAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheShsZW5ndGgpLFxuICAgICAgICAgICAgaW5kZXggPSBsZW5ndGgsXG4gICAgICAgICAgICBwbGFjZWhvbGRlciA9IGdldEhvbGRlcih3cmFwcGVyKTtcblxuICAgICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICAgIGFyZ3NbaW5kZXhdID0gYXJndW1lbnRzW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaG9sZGVycyA9IChsZW5ndGggPCAzICYmIGFyZ3NbMF0gIT09IHBsYWNlaG9sZGVyICYmIGFyZ3NbbGVuZ3RoIC0gMV0gIT09IHBsYWNlaG9sZGVyKVxuICAgICAgICAgID8gW11cbiAgICAgICAgICA6IHJlcGxhY2VIb2xkZXJzKGFyZ3MsIHBsYWNlaG9sZGVyKTtcblxuICAgICAgICBsZW5ndGggLT0gaG9sZGVycy5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPCBhcml0eSkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVSZWN1cnJ5KFxuICAgICAgICAgICAgZnVuYywgYml0bWFzaywgY3JlYXRlSHlicmlkLCB3cmFwcGVyLnBsYWNlaG9sZGVyLCB1bmRlZmluZWQsXG4gICAgICAgICAgICBhcmdzLCBob2xkZXJzLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgYXJpdHkgLSBsZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmbiA9ICh0aGlzICYmIHRoaXMgIT09IHJvb3QgJiYgdGhpcyBpbnN0YW5jZW9mIHdyYXBwZXIpID8gQ3RvciA6IGZ1bmM7XG4gICAgICAgIHJldHVybiBhcHBseShmbiwgdGhpcywgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8uZmluZGAgb3IgYF8uZmluZExhc3RgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmaW5kSW5kZXhGdW5jIFRoZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZpbmQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlRmluZChmaW5kSW5kZXhGdW5jKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICAgICAgdmFyIGl0ZXJhYmxlID0gT2JqZWN0KGNvbGxlY3Rpb24pO1xuICAgICAgICBpZiAoIWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICAgICAgdmFyIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKTtcbiAgICAgICAgICBjb2xsZWN0aW9uID0ga2V5cyhjb2xsZWN0aW9uKTtcbiAgICAgICAgICBwcmVkaWNhdGUgPSBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpOyB9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBpbmRleCA9IGZpbmRJbmRleEZ1bmMoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBmcm9tSW5kZXgpO1xuICAgICAgICByZXR1cm4gaW5kZXggPiAtMSA/IGl0ZXJhYmxlW2l0ZXJhdGVlID8gY29sbGVjdGlvbltpbmRleF0gOiBpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgXy5mbG93YCBvciBgXy5mbG93UmlnaHRgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmbG93IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUZsb3coZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZmxhdFJlc3QoZnVuY3Rpb24oZnVuY3MpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGZ1bmNzLmxlbmd0aCxcbiAgICAgICAgICAgIGluZGV4ID0gbGVuZ3RoLFxuICAgICAgICAgICAgcHJlcmVxID0gTG9kYXNoV3JhcHBlci5wcm90b3R5cGUudGhydTtcblxuICAgICAgICBpZiAoZnJvbVJpZ2h0KSB7XG4gICAgICAgICAgZnVuY3MucmV2ZXJzZSgpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgICAgdmFyIGZ1bmMgPSBmdW5jc1tpbmRleF07XG4gICAgICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHByZXJlcSAmJiAhd3JhcHBlciAmJiBnZXRGdW5jTmFtZShmdW5jKSA9PSAnd3JhcHBlcicpIHtcbiAgICAgICAgICAgIHZhciB3cmFwcGVyID0gbmV3IExvZGFzaFdyYXBwZXIoW10sIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbmRleCA9IHdyYXBwZXIgPyBpbmRleCA6IGxlbmd0aDtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBmdW5jID0gZnVuY3NbaW5kZXhdO1xuXG4gICAgICAgICAgdmFyIGZ1bmNOYW1lID0gZ2V0RnVuY05hbWUoZnVuYyksXG4gICAgICAgICAgICAgIGRhdGEgPSBmdW5jTmFtZSA9PSAnd3JhcHBlcicgPyBnZXREYXRhKGZ1bmMpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgaWYgKGRhdGEgJiYgaXNMYXppYWJsZShkYXRhWzBdKSAmJlxuICAgICAgICAgICAgICAgIGRhdGFbMV0gPT0gKFdSQVBfQVJZX0ZMQUcgfCBXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX1BBUlRJQUxfRkxBRyB8IFdSQVBfUkVBUkdfRkxBRykgJiZcbiAgICAgICAgICAgICAgICAhZGF0YVs0XS5sZW5ndGggJiYgZGF0YVs5XSA9PSAxXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgd3JhcHBlciA9IHdyYXBwZXJbZ2V0RnVuY05hbWUoZGF0YVswXSldLmFwcGx5KHdyYXBwZXIsIGRhdGFbM10pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3cmFwcGVyID0gKGZ1bmMubGVuZ3RoID09IDEgJiYgaXNMYXppYWJsZShmdW5jKSlcbiAgICAgICAgICAgICAgPyB3cmFwcGVyW2Z1bmNOYW1lXSgpXG4gICAgICAgICAgICAgIDogd3JhcHBlci50aHJ1KGZ1bmMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICAgIHZhbHVlID0gYXJnc1swXTtcblxuICAgICAgICAgIGlmICh3cmFwcGVyICYmIGFyZ3MubGVuZ3RoID09IDEgJiYgaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwcGVyLnBsYW50KHZhbHVlKS52YWx1ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgICAgICAgICByZXN1bHQgPSBsZW5ndGggPyBmdW5jc1tpbmRleF0uYXBwbHkodGhpcywgYXJncykgOiB2YWx1ZTtcblxuICAgICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBmdW5jc1tpbmRleF0uY2FsbCh0aGlzLCByZXN1bHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGludm9rZSBpdCB3aXRoIG9wdGlvbmFsIGB0aGlzYFxuICAgICAqIGJpbmRpbmcgb2YgYHRoaXNBcmdgLCBwYXJ0aWFsIGFwcGxpY2F0aW9uLCBhbmQgY3VycnlpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258c3RyaW5nfSBmdW5jIFRoZSBmdW5jdGlvbiBvciBtZXRob2QgbmFtZSB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZCB0b1xuICAgICAqICB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzXSBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc1JpZ2h0XSBUaGUgYXJndW1lbnRzIHRvIGFwcGVuZCB0byB0aG9zZSBwcm92aWRlZFxuICAgICAqICB0byB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzUmlnaHRdIFRoZSBgcGFydGlhbHNSaWdodGAgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVIeWJyaWQoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIHBhcnRpYWxzUmlnaHQsIGhvbGRlcnNSaWdodCwgYXJnUG9zLCBhcnksIGFyaXR5KSB7XG4gICAgICB2YXIgaXNBcnkgPSBiaXRtYXNrICYgV1JBUF9BUllfRkxBRyxcbiAgICAgICAgICBpc0JpbmQgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcsXG4gICAgICAgICAgaXNCaW5kS2V5ID0gYml0bWFzayAmIFdSQVBfQklORF9LRVlfRkxBRyxcbiAgICAgICAgICBpc0N1cnJpZWQgPSBiaXRtYXNrICYgKFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfQ1VSUllfUklHSFRfRkxBRyksXG4gICAgICAgICAgaXNGbGlwID0gYml0bWFzayAmIFdSQVBfRkxJUF9GTEFHLFxuICAgICAgICAgIEN0b3IgPSBpc0JpbmRLZXkgPyB1bmRlZmluZWQgOiBjcmVhdGVDdG9yKGZ1bmMpO1xuXG4gICAgICBmdW5jdGlvbiB3cmFwcGVyKCkge1xuICAgICAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheShsZW5ndGgpLFxuICAgICAgICAgICAgaW5kZXggPSBsZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgICBhcmdzW2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ3VycmllZCkge1xuICAgICAgICAgIHZhciBwbGFjZWhvbGRlciA9IGdldEhvbGRlcih3cmFwcGVyKSxcbiAgICAgICAgICAgICAgaG9sZGVyc0NvdW50ID0gY291bnRIb2xkZXJzKGFyZ3MsIHBsYWNlaG9sZGVyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFydGlhbHMpIHtcbiAgICAgICAgICBhcmdzID0gY29tcG9zZUFyZ3MoYXJncywgcGFydGlhbHMsIGhvbGRlcnMsIGlzQ3VycmllZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnRpYWxzUmlnaHQpIHtcbiAgICAgICAgICBhcmdzID0gY29tcG9zZUFyZ3NSaWdodChhcmdzLCBwYXJ0aWFsc1JpZ2h0LCBob2xkZXJzUmlnaHQsIGlzQ3VycmllZCk7XG4gICAgICAgIH1cbiAgICAgICAgbGVuZ3RoIC09IGhvbGRlcnNDb3VudDtcbiAgICAgICAgaWYgKGlzQ3VycmllZCAmJiBsZW5ndGggPCBhcml0eSkge1xuICAgICAgICAgIHZhciBuZXdIb2xkZXJzID0gcmVwbGFjZUhvbGRlcnMoYXJncywgcGxhY2Vob2xkZXIpO1xuICAgICAgICAgIHJldHVybiBjcmVhdGVSZWN1cnJ5KFxuICAgICAgICAgICAgZnVuYywgYml0bWFzaywgY3JlYXRlSHlicmlkLCB3cmFwcGVyLnBsYWNlaG9sZGVyLCB0aGlzQXJnLFxuICAgICAgICAgICAgYXJncywgbmV3SG9sZGVycywgYXJnUG9zLCBhcnksIGFyaXR5IC0gbGVuZ3RoXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGhpc0JpbmRpbmcgPSBpc0JpbmQgPyB0aGlzQXJnIDogdGhpcyxcbiAgICAgICAgICAgIGZuID0gaXNCaW5kS2V5ID8gdGhpc0JpbmRpbmdbZnVuY10gOiBmdW5jO1xuXG4gICAgICAgIGxlbmd0aCA9IGFyZ3MubGVuZ3RoO1xuICAgICAgICBpZiAoYXJnUG9zKSB7XG4gICAgICAgICAgYXJncyA9IHJlb3JkZXIoYXJncywgYXJnUG9zKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0ZsaXAgJiYgbGVuZ3RoID4gMSkge1xuICAgICAgICAgIGFyZ3MucmV2ZXJzZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0FyeSAmJiBhcnkgPCBsZW5ndGgpIHtcbiAgICAgICAgICBhcmdzLmxlbmd0aCA9IGFyeTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcyAmJiB0aGlzICE9PSByb290ICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSB7XG4gICAgICAgICAgZm4gPSBDdG9yIHx8IGNyZWF0ZUN0b3IoZm4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzQmluZGluZywgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5pbnZlcnRCeWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGFjY3VtdWxhdG9yIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB0b0l0ZXJhdGVlIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIGl0ZXJhdGVlcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBpbnZlcnRlciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVJbnZlcnRlcihzZXR0ZXIsIHRvSXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52ZXJ0ZXIob2JqZWN0LCBzZXR0ZXIsIHRvSXRlcmF0ZWUoaXRlcmF0ZWUpLCB7fSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbiBvbiB0d28gdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcGVyYXRvciBUaGUgZnVuY3Rpb24gdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZGVmYXVsdFZhbHVlXSBUaGUgdmFsdWUgdXNlZCBmb3IgYHVuZGVmaW5lZGAgYXJndW1lbnRzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlTWF0aE9wZXJhdGlvbihvcGVyYXRvciwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIG90aGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG90aGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBvdGhlcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb3RoZXIgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZhbHVlID0gYmFzZVRvU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIG90aGVyID0gYmFzZVRvU3RyaW5nKG90aGVyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgPSBiYXNlVG9OdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgb3RoZXIgPSBiYXNlVG9OdW1iZXIob3RoZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQgPSBvcGVyYXRvcih2YWx1ZSwgb3RoZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLm92ZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBhcnJheUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBpdGVyYXRlZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgb3ZlciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVPdmVyKGFycmF5RnVuYykge1xuICAgICAgcmV0dXJuIGZsYXRSZXN0KGZ1bmN0aW9uKGl0ZXJhdGVlcykge1xuICAgICAgICBpdGVyYXRlZXMgPSBhcnJheU1hcChpdGVyYXRlZXMsIGJhc2VVbmFyeShnZXRJdGVyYXRlZSgpKSk7XG4gICAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgICAgdmFyIHRoaXNBcmcgPSB0aGlzO1xuICAgICAgICAgIHJldHVybiBhcnJheUZ1bmMoaXRlcmF0ZWVzLCBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFwcGx5KGl0ZXJhdGVlLCB0aGlzQXJnLCBhcmdzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIHRoZSBwYWRkaW5nIGZvciBgc3RyaW5nYCBiYXNlZCBvbiBgbGVuZ3RoYC4gVGhlIGBjaGFyc2Agc3RyaW5nXG4gICAgICogaXMgdHJ1bmNhdGVkIGlmIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBleGNlZWRzIGBsZW5ndGhgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGluZyBmb3IgYHN0cmluZ2AuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUGFkZGluZyhsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBjaGFycyA9IGNoYXJzID09PSB1bmRlZmluZWQgPyAnICcgOiBiYXNlVG9TdHJpbmcoY2hhcnMpO1xuXG4gICAgICB2YXIgY2hhcnNMZW5ndGggPSBjaGFycy5sZW5ndGg7XG4gICAgICBpZiAoY2hhcnNMZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiBjaGFyc0xlbmd0aCA/IGJhc2VSZXBlYXQoY2hhcnMsIGxlbmd0aCkgOiBjaGFycztcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBiYXNlUmVwZWF0KGNoYXJzLCBuYXRpdmVDZWlsKGxlbmd0aCAvIHN0cmluZ1NpemUoY2hhcnMpKSk7XG4gICAgICByZXR1cm4gaGFzVW5pY29kZShjaGFycylcbiAgICAgICAgPyBjYXN0U2xpY2Uoc3RyaW5nVG9BcnJheShyZXN1bHQpLCAwLCBsZW5ndGgpLmpvaW4oJycpXG4gICAgICAgIDogcmVzdWx0LnNsaWNlKDAsIGxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGludm9rZSBpdCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZ1xuICAgICAqIG9mIGB0aGlzQXJnYCBhbmQgYHBhcnRpYWxzYCBwcmVwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZCB0b1xuICAgICAqICB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUGFydGlhbChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscykge1xuICAgICAgdmFyIGlzQmluZCA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRyxcbiAgICAgICAgICBDdG9yID0gY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGFyZ3NJbmRleCA9IC0xLFxuICAgICAgICAgICAgYXJnc0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgICBsZWZ0SW5kZXggPSAtMSxcbiAgICAgICAgICAgIGxlZnRMZW5ndGggPSBwYXJ0aWFscy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkobGVmdExlbmd0aCArIGFyZ3NMZW5ndGgpLFxuICAgICAgICAgICAgZm4gPSAodGhpcyAmJiB0aGlzICE9PSByb290ICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSA/IEN0b3IgOiBmdW5jO1xuXG4gICAgICAgIHdoaWxlICgrK2xlZnRJbmRleCA8IGxlZnRMZW5ndGgpIHtcbiAgICAgICAgICBhcmdzW2xlZnRJbmRleF0gPSBwYXJ0aWFsc1tsZWZ0SW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChhcmdzTGVuZ3RoLS0pIHtcbiAgICAgICAgICBhcmdzW2xlZnRJbmRleCsrXSA9IGFyZ3VtZW50c1srK2FyZ3NJbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFwcGx5KGZuLCBpc0JpbmQgPyB0aGlzQXJnIDogdGhpcywgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8ucmFuZ2VgIG9yIGBfLnJhbmdlUmlnaHRgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByYW5nZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSYW5nZShmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdGFydCwgZW5kLCBzdGVwKSB7XG4gICAgICAgIGlmIChzdGVwICYmIHR5cGVvZiBzdGVwICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKHN0YXJ0LCBlbmQsIHN0ZXApKSB7XG4gICAgICAgICAgZW5kID0gc3RlcCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBFbnN1cmUgdGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gICAgICAgIHN0YXJ0ID0gdG9GaW5pdGUoc3RhcnQpO1xuICAgICAgICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBlbmQgPSBzdGFydDtcbiAgICAgICAgICBzdGFydCA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5kID0gdG9GaW5pdGUoZW5kKTtcbiAgICAgICAgfVxuICAgICAgICBzdGVwID0gc3RlcCA9PT0gdW5kZWZpbmVkID8gKHN0YXJ0IDwgZW5kID8gMSA6IC0xKSA6IHRvRmluaXRlKHN0ZXApO1xuICAgICAgICByZXR1cm4gYmFzZVJhbmdlKHN0YXJ0LCBlbmQsIHN0ZXAsIGZyb21SaWdodCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgcmVsYXRpb25hbCBvcGVyYXRpb24gb24gdHdvIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3BlcmF0b3IgVGhlIGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZWxhdGlvbmFsIG9wZXJhdGlvbiBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKG9wZXJhdG9yKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICAgIGlmICghKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyAmJiB0eXBlb2Ygb3RoZXIgPT0gJ3N0cmluZycpKSB7XG4gICAgICAgICAgdmFsdWUgPSB0b051bWJlcih2YWx1ZSk7XG4gICAgICAgICAgb3RoZXIgPSB0b051bWJlcihvdGhlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wZXJhdG9yKHZhbHVlLCBvdGhlcik7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBjb250aW51ZSBjdXJyeWluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHdyYXBGdW5jIFRoZSBmdW5jdGlvbiB0byBjcmVhdGUgdGhlIGBmdW5jYCB3cmFwcGVyLlxuICAgICAqIEBwYXJhbSB7Kn0gcGxhY2Vob2xkZXIgVGhlIHBsYWNlaG9sZGVyIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG9cbiAgICAgKiAgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc10gVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSZWN1cnJ5KGZ1bmMsIGJpdG1hc2ssIHdyYXBGdW5jLCBwbGFjZWhvbGRlciwgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIGFyZ1BvcywgYXJ5LCBhcml0eSkge1xuICAgICAgdmFyIGlzQ3VycnkgPSBiaXRtYXNrICYgV1JBUF9DVVJSWV9GTEFHLFxuICAgICAgICAgIG5ld0hvbGRlcnMgPSBpc0N1cnJ5ID8gaG9sZGVycyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBuZXdIb2xkZXJzUmlnaHQgPSBpc0N1cnJ5ID8gdW5kZWZpbmVkIDogaG9sZGVycyxcbiAgICAgICAgICBuZXdQYXJ0aWFscyA9IGlzQ3VycnkgPyBwYXJ0aWFscyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBuZXdQYXJ0aWFsc1JpZ2h0ID0gaXNDdXJyeSA/IHVuZGVmaW5lZCA6IHBhcnRpYWxzO1xuXG4gICAgICBiaXRtYXNrIHw9IChpc0N1cnJ5ID8gV1JBUF9QQVJUSUFMX0ZMQUcgOiBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyk7XG4gICAgICBiaXRtYXNrICY9IH4oaXNDdXJyeSA/IFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHIDogV1JBUF9QQVJUSUFMX0ZMQUcpO1xuXG4gICAgICBpZiAoIShiaXRtYXNrICYgV1JBUF9DVVJSWV9CT1VORF9GTEFHKSkge1xuICAgICAgICBiaXRtYXNrICY9IH4oV1JBUF9CSU5EX0ZMQUcgfCBXUkFQX0JJTkRfS0VZX0ZMQUcpO1xuICAgICAgfVxuICAgICAgdmFyIG5ld0RhdGEgPSBbXG4gICAgICAgIGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIG5ld1BhcnRpYWxzLCBuZXdIb2xkZXJzLCBuZXdQYXJ0aWFsc1JpZ2h0LFxuICAgICAgICBuZXdIb2xkZXJzUmlnaHQsIGFyZ1BvcywgYXJ5LCBhcml0eVxuICAgICAgXTtcblxuICAgICAgdmFyIHJlc3VsdCA9IHdyYXBGdW5jLmFwcGx5KHVuZGVmaW5lZCwgbmV3RGF0YSk7XG4gICAgICBpZiAoaXNMYXppYWJsZShmdW5jKSkge1xuICAgICAgICBzZXREYXRhKHJlc3VsdCwgbmV3RGF0YSk7XG4gICAgICB9XG4gICAgICByZXN1bHQucGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjtcbiAgICAgIHJldHVybiBzZXRXcmFwVG9TdHJpbmcocmVzdWx0LCBmdW5jLCBiaXRtYXNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5yb3VuZGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lIFRoZSBuYW1lIG9mIHRoZSBgTWF0aGAgbWV0aG9kIHRvIHVzZSB3aGVuIHJvdW5kaW5nLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJvdW5kIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVJvdW5kKG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBmdW5jID0gTWF0aFttZXRob2ROYW1lXTtcbiAgICAgIHJldHVybiBmdW5jdGlvbihudW1iZXIsIHByZWNpc2lvbikge1xuICAgICAgICBudW1iZXIgPSB0b051bWJlcihudW1iZXIpO1xuICAgICAgICBwcmVjaXNpb24gPSBwcmVjaXNpb24gPT0gbnVsbCA/IDAgOiBuYXRpdmVNaW4odG9JbnRlZ2VyKHByZWNpc2lvbiksIDI5Mik7XG4gICAgICAgIGlmIChwcmVjaXNpb24gJiYgbmF0aXZlSXNGaW5pdGUobnVtYmVyKSkge1xuICAgICAgICAgIC8vIFNoaWZ0IHdpdGggZXhwb25lbnRpYWwgbm90YXRpb24gdG8gYXZvaWQgZmxvYXRpbmctcG9pbnQgaXNzdWVzLlxuICAgICAgICAgIC8vIFNlZSBbTUROXShodHRwczovL21kbi5pby9yb3VuZCNFeGFtcGxlcykgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgICB2YXIgcGFpciA9ICh0b1N0cmluZyhudW1iZXIpICsgJ2UnKS5zcGxpdCgnZScpLFxuICAgICAgICAgICAgICB2YWx1ZSA9IGZ1bmMocGFpclswXSArICdlJyArICgrcGFpclsxXSArIHByZWNpc2lvbikpO1xuXG4gICAgICAgICAgcGFpciA9ICh0b1N0cmluZyh2YWx1ZSkgKyAnZScpLnNwbGl0KCdlJyk7XG4gICAgICAgICAgcmV0dXJuICsocGFpclswXSArICdlJyArICgrcGFpclsxXSAtIHByZWNpc2lvbikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jKG51bWJlcik7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzZXQgb2JqZWN0IG9mIGB2YWx1ZXNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhZGQgdG8gdGhlIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgc2V0LlxuICAgICAqL1xuICAgIHZhciBjcmVhdGVTZXQgPSAhKFNldCAmJiAoMSAvIHNldFRvQXJyYXkobmV3IFNldChbLC0wXSkpWzFdKSA9PSBJTkZJTklUWSkgPyBub29wIDogZnVuY3Rpb24odmFsdWVzKSB7XG4gICAgICByZXR1cm4gbmV3IFNldCh2YWx1ZXMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8udG9QYWlyc2Agb3IgYF8udG9QYWlyc0luYCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBhIGdpdmVuIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYWlycyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVUb1BhaXJzKGtleXNGdW5jKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHZhciB0YWcgPSBnZXRUYWcob2JqZWN0KTtcbiAgICAgICAgaWYgKHRhZyA9PSBtYXBUYWcpIHtcbiAgICAgICAgICByZXR1cm4gbWFwVG9BcnJheShvYmplY3QpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWcgPT0gc2V0VGFnKSB7XG4gICAgICAgICAgcmV0dXJuIHNldFRvUGFpcnMob2JqZWN0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmFzZVRvUGFpcnMob2JqZWN0LCBrZXlzRnVuYyhvYmplY3QpKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZWl0aGVyIGN1cnJpZXMgb3IgaW52b2tlcyBgZnVuY2Agd2l0aCBvcHRpb25hbFxuICAgICAqIGB0aGlzYCBiaW5kaW5nIGFuZCBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258c3RyaW5nfSBmdW5jIFRoZSBmdW5jdGlvbiBvciBtZXRob2QgbmFtZSB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICAgICAqICAgIDEgLSBgXy5iaW5kYFxuICAgICAqICAgIDIgLSBgXy5iaW5kS2V5YFxuICAgICAqICAgIDQgLSBgXy5jdXJyeWAgb3IgYF8uY3VycnlSaWdodGAgb2YgYSBib3VuZCBmdW5jdGlvblxuICAgICAqICAgIDggLSBgXy5jdXJyeWBcbiAgICAgKiAgIDE2IC0gYF8uY3VycnlSaWdodGBcbiAgICAgKiAgIDMyIC0gYF8ucGFydGlhbGBcbiAgICAgKiAgIDY0IC0gYF8ucGFydGlhbFJpZ2h0YFxuICAgICAqICAxMjggLSBgXy5yZWFyZ2BcbiAgICAgKiAgMjU2IC0gYF8uYXJ5YFxuICAgICAqICA1MTIgLSBgXy5mbGlwYFxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzXSBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFthcmdQb3NdIFRoZSBhcmd1bWVudCBwb3NpdGlvbnMgb2YgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyeV0gVGhlIGFyaXR5IGNhcCBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eV0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVdyYXAoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIGFyZ1BvcywgYXJ5LCBhcml0eSkge1xuICAgICAgdmFyIGlzQmluZEtleSA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfS0VZX0ZMQUc7XG4gICAgICBpZiAoIWlzQmluZEtleSAmJiB0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBwYXJ0aWFscyA/IHBhcnRpYWxzLmxlbmd0aCA6IDA7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICBiaXRtYXNrICY9IH4oV1JBUF9QQVJUSUFMX0ZMQUcgfCBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyk7XG4gICAgICAgIHBhcnRpYWxzID0gaG9sZGVycyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGFyeSA9IGFyeSA9PT0gdW5kZWZpbmVkID8gYXJ5IDogbmF0aXZlTWF4KHRvSW50ZWdlcihhcnkpLCAwKTtcbiAgICAgIGFyaXR5ID0gYXJpdHkgPT09IHVuZGVmaW5lZCA/IGFyaXR5IDogdG9JbnRlZ2VyKGFyaXR5KTtcbiAgICAgIGxlbmd0aCAtPSBob2xkZXJzID8gaG9sZGVycy5sZW5ndGggOiAwO1xuXG4gICAgICBpZiAoYml0bWFzayAmIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHKSB7XG4gICAgICAgIHZhciBwYXJ0aWFsc1JpZ2h0ID0gcGFydGlhbHMsXG4gICAgICAgICAgICBob2xkZXJzUmlnaHQgPSBob2xkZXJzO1xuXG4gICAgICAgIHBhcnRpYWxzID0gaG9sZGVycyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHZhciBkYXRhID0gaXNCaW5kS2V5ID8gdW5kZWZpbmVkIDogZ2V0RGF0YShmdW5jKTtcblxuICAgICAgdmFyIG5ld0RhdGEgPSBbXG4gICAgICAgIGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBwYXJ0aWFsc1JpZ2h0LCBob2xkZXJzUmlnaHQsXG4gICAgICAgIGFyZ1BvcywgYXJ5LCBhcml0eVxuICAgICAgXTtcblxuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgbWVyZ2VEYXRhKG5ld0RhdGEsIGRhdGEpO1xuICAgICAgfVxuICAgICAgZnVuYyA9IG5ld0RhdGFbMF07XG4gICAgICBiaXRtYXNrID0gbmV3RGF0YVsxXTtcbiAgICAgIHRoaXNBcmcgPSBuZXdEYXRhWzJdO1xuICAgICAgcGFydGlhbHMgPSBuZXdEYXRhWzNdO1xuICAgICAgaG9sZGVycyA9IG5ld0RhdGFbNF07XG4gICAgICBhcml0eSA9IG5ld0RhdGFbOV0gPSBuZXdEYXRhWzldID09PSB1bmRlZmluZWRcbiAgICAgICAgPyAoaXNCaW5kS2V5ID8gMCA6IGZ1bmMubGVuZ3RoKVxuICAgICAgICA6IG5hdGl2ZU1heChuZXdEYXRhWzldIC0gbGVuZ3RoLCAwKTtcblxuICAgICAgaWYgKCFhcml0eSAmJiBiaXRtYXNrICYgKFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfQ1VSUllfUklHSFRfRkxBRykpIHtcbiAgICAgICAgYml0bWFzayAmPSB+KFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfQ1VSUllfUklHSFRfRkxBRyk7XG4gICAgICB9XG4gICAgICBpZiAoIWJpdG1hc2sgfHwgYml0bWFzayA9PSBXUkFQX0JJTkRfRkxBRykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gY3JlYXRlQmluZChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnKTtcbiAgICAgIH0gZWxzZSBpZiAoYml0bWFzayA9PSBXUkFQX0NVUlJZX0ZMQUcgfHwgYml0bWFzayA9PSBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpIHtcbiAgICAgICAgcmVzdWx0ID0gY3JlYXRlQ3VycnkoZnVuYywgYml0bWFzaywgYXJpdHkpO1xuICAgICAgfSBlbHNlIGlmICgoYml0bWFzayA9PSBXUkFQX1BBUlRJQUxfRkxBRyB8fCBiaXRtYXNrID09IChXUkFQX0JJTkRfRkxBRyB8IFdSQVBfUEFSVElBTF9GTEFHKSkgJiYgIWhvbGRlcnMubGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdCA9IGNyZWF0ZVBhcnRpYWwoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gY3JlYXRlSHlicmlkLmFwcGx5KHVuZGVmaW5lZCwgbmV3RGF0YSk7XG4gICAgICB9XG4gICAgICB2YXIgc2V0dGVyID0gZGF0YSA/IGJhc2VTZXREYXRhIDogc2V0RGF0YTtcbiAgICAgIHJldHVybiBzZXRXcmFwVG9TdHJpbmcoc2V0dGVyKHJlc3VsdCwgbmV3RGF0YSksIGZ1bmMsIGJpdG1hc2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8uZGVmYXVsdHNgIHRvIGN1c3RvbWl6ZSBpdHMgYF8uYXNzaWduSW5gIHVzZSB0byBhc3NpZ24gcHJvcGVydGllc1xuICAgICAqIG9mIHNvdXJjZSBvYmplY3RzIHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGFsbCBkZXN0aW5hdGlvbiBwcm9wZXJ0aWVzXG4gICAgICogdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IG9ialZhbHVlIFRoZSBkZXN0aW5hdGlvbiB2YWx1ZS5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSBzb3VyY2UgdmFsdWUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgcGFyZW50IG9iamVjdCBvZiBgb2JqVmFsdWVgLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VzdG9tRGVmYXVsdHNBc3NpZ25JbihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICBpZiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgIChlcShvYmpWYWx1ZSwgb2JqZWN0UHJvdG9ba2V5XSkgJiYgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICByZXR1cm4gc3JjVmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCBieSBgXy5kZWZhdWx0c0RlZXBgIHRvIGN1c3RvbWl6ZSBpdHMgYF8ubWVyZ2VgIHVzZSB0byBtZXJnZSBzb3VyY2VcbiAgICAgKiBvYmplY3RzIGludG8gZGVzdGluYXRpb24gb2JqZWN0cyB0aGF0IGFyZSBwYXNzZWQgdGhydS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSBvYmpWYWx1ZSBUaGUgZGVzdGluYXRpb24gdmFsdWUuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgc291cmNlIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gbWVyZ2UuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgcGFyZW50IG9iamVjdCBvZiBgb2JqVmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHBhcmVudCBvYmplY3Qgb2YgYHNyY1ZhbHVlYC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICAgICAqICBjb3VudGVycGFydHMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXN0b21EZWZhdWx0c01lcmdlKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spIHtcbiAgICAgIGlmIChpc09iamVjdChvYmpWYWx1ZSkgJiYgaXNPYmplY3Qoc3JjVmFsdWUpKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG9iamVjdHMgYW5kIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBzdGFjay5zZXQoc3JjVmFsdWUsIG9ialZhbHVlKTtcbiAgICAgICAgYmFzZU1lcmdlKG9ialZhbHVlLCBzcmNWYWx1ZSwgdW5kZWZpbmVkLCBjdXN0b21EZWZhdWx0c01lcmdlLCBzdGFjayk7XG4gICAgICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCBieSBgXy5vbWl0YCB0byBjdXN0b21pemUgaXRzIGBfLmNsb25lRGVlcGAgdXNlIHRvIG9ubHkgY2xvbmUgcGxhaW5cbiAgICAgKiBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdW5jbG9uZWQgdmFsdWUgb3IgYHVuZGVmaW5lZGAgdG8gZGVmZXIgY2xvbmluZyB0byBgXy5jbG9uZURlZXBgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1c3RvbU9taXRDbG9uZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzUGxhaW5PYmplY3QodmFsdWUpID8gdW5kZWZpbmVkIDogdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBhcnJheXMgd2l0aCBzdXBwb3J0IGZvclxuICAgICAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtBcnJheX0gb3RoZXIgVGhlIG90aGVyIGFycmF5IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgYXJyYXlgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcnJheXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlcXVhbEFycmF5cyhhcnJheSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICAgICAgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIG90aExlbmd0aCA9IG90aGVyLmxlbmd0aDtcblxuICAgICAgaWYgKGFyckxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIShpc1BhcnRpYWwgJiYgb3RoTGVuZ3RoID4gYXJyTGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIGFyclN0YWNrZWQgPSBzdGFjay5nZXQoYXJyYXkpO1xuICAgICAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICAgICAgaWYgKGFyclN0YWNrZWQgJiYgb3RoU3RhY2tlZCkge1xuICAgICAgICByZXR1cm4gYXJyU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IGFycmF5O1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgcmVzdWx0ID0gdHJ1ZSxcbiAgICAgICAgICBzZWVuID0gKGJpdG1hc2sgJiBDT01QQVJFX1VOT1JERVJFRF9GTEFHKSA/IG5ldyBTZXRDYWNoZSA6IHVuZGVmaW5lZDtcblxuICAgICAgc3RhY2suc2V0KGFycmF5LCBvdGhlcik7XG4gICAgICBzdGFjay5zZXQob3RoZXIsIGFycmF5KTtcblxuICAgICAgLy8gSWdub3JlIG5vbi1pbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgd2hpbGUgKCsraW5kZXggPCBhcnJMZW5ndGgpIHtcbiAgICAgICAgdmFyIGFyclZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltpbmRleF07XG5cbiAgICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgYXJyVmFsdWUsIGluZGV4LCBvdGhlciwgYXJyYXksIHN0YWNrKVxuICAgICAgICAgICAgOiBjdXN0b21pemVyKGFyclZhbHVlLCBvdGhWYWx1ZSwgaW5kZXgsIGFycmF5LCBvdGhlciwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wYXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKGNvbXBhcmVkKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgaWYgKHNlZW4pIHtcbiAgICAgICAgICBpZiAoIWFycmF5U29tZShvdGhlciwgZnVuY3Rpb24ob3RoVmFsdWUsIG90aEluZGV4KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjYWNoZUhhcyhzZWVuLCBvdGhJbmRleCkgJiZcbiAgICAgICAgICAgICAgICAgICAgKGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gc2Vlbi5wdXNoKG90aEluZGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghKFxuICAgICAgICAgICAgICBhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3RhY2tbJ2RlbGV0ZSddKGFycmF5KTtcbiAgICAgIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgY29tcGFyaW5nIG9iamVjdHMgb2ZcbiAgICAgKiB0aGUgc2FtZSBgdG9TdHJpbmdUYWdgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjb21wYXJpbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICAgICAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIG9yIGBTdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdHMgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCB0YWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgICAgICAob2JqZWN0LmJ5dGVPZmZzZXQgIT0gb3RoZXIuYnl0ZU9mZnNldCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb2JqZWN0ID0gb2JqZWN0LmJ1ZmZlcjtcbiAgICAgICAgICBvdGhlciA9IG90aGVyLmJ1ZmZlcjtcblxuICAgICAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAgICAgIWVxdWFsRnVuYyhuZXcgVWludDhBcnJheShvYmplY3QpLCBuZXcgVWludDhBcnJheShvdGhlcikpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICAgIGNhc2UgYm9vbFRhZzpcbiAgICAgICAgY2FzZSBkYXRlVGFnOlxuICAgICAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgICAgICAvLyBDb2VyY2UgYm9vbGVhbnMgdG8gYDFgIG9yIGAwYCBhbmQgZGF0ZXMgdG8gbWlsbGlzZWNvbmRzLlxuICAgICAgICAgIC8vIEludmFsaWQgZGF0ZXMgYXJlIGNvZXJjZWQgdG8gYE5hTmAuXG4gICAgICAgICAgcmV0dXJuIGVxKCtvYmplY3QsICtvdGhlcik7XG5cbiAgICAgICAgY2FzZSBlcnJvclRhZzpcbiAgICAgICAgICByZXR1cm4gb2JqZWN0Lm5hbWUgPT0gb3RoZXIubmFtZSAmJiBvYmplY3QubWVzc2FnZSA9PSBvdGhlci5tZXNzYWdlO1xuXG4gICAgICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgICAgICAvLyBDb2VyY2UgcmVnZXhlcyB0byBzdHJpbmdzIGFuZCB0cmVhdCBzdHJpbmdzLCBwcmltaXRpdmVzIGFuZCBvYmplY3RzLFxuICAgICAgICAgIC8vIGFzIGVxdWFsLiBTZWUgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbiAgICAgICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICAgIHJldHVybiBvYmplY3QgPT0gKG90aGVyICsgJycpO1xuXG4gICAgICAgIGNhc2UgbWFwVGFnOlxuICAgICAgICAgIHZhciBjb252ZXJ0ID0gbWFwVG9BcnJheTtcblxuICAgICAgICBjYXNlIHNldFRhZzpcbiAgICAgICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHO1xuICAgICAgICAgIGNvbnZlcnQgfHwgKGNvbnZlcnQgPSBzZXRUb0FycmF5KTtcblxuICAgICAgICAgIGlmIChvYmplY3Quc2l6ZSAhPSBvdGhlci5zaXplICYmICFpc1BhcnRpYWwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICAgICAgICAgIH1cbiAgICAgICAgICBiaXRtYXNrIHw9IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUc7XG5cbiAgICAgICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IGVxdWFsQXJyYXlzKGNvbnZlcnQob2JqZWN0KSwgY29udmVydChvdGhlciksIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgICAgICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG5cbiAgICAgICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICAgICAgaWYgKHN5bWJvbFZhbHVlT2YpIHtcbiAgICAgICAgICAgIHJldHVybiBzeW1ib2xWYWx1ZU9mLmNhbGwob2JqZWN0KSA9PSBzeW1ib2xWYWx1ZU9mLmNhbGwob3RoZXIpO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIG9iamVjdHMgd2l0aCBzdXBwb3J0IGZvclxuICAgICAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICAgICAgb2JqUHJvcHMgPSBnZXRBbGxLZXlzKG9iamVjdCksXG4gICAgICAgICAgb2JqTGVuZ3RoID0gb2JqUHJvcHMubGVuZ3RoLFxuICAgICAgICAgIG90aFByb3BzID0gZ2V0QWxsS2V5cyhvdGhlciksXG4gICAgICAgICAgb3RoTGVuZ3RoID0gb3RoUHJvcHMubGVuZ3RoO1xuXG4gICAgICBpZiAob2JqTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IG9iakxlbmd0aDtcbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIHZhciBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgICAgIGlmICghKGlzUGFydGlhbCA/IGtleSBpbiBvdGhlciA6IGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsIGtleSkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIG9ialN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgICAgIHZhciBvdGhTdGFja2VkID0gc3RhY2suZ2V0KG90aGVyKTtcbiAgICAgIGlmIChvYmpTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIG9ialN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBvYmplY3Q7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgICAgIHN0YWNrLnNldChvdGhlciwgb2JqZWN0KTtcblxuICAgICAgdmFyIHNraXBDdG9yID0gaXNQYXJ0aWFsO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBvYmpMZW5ndGgpIHtcbiAgICAgICAga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgICAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgICAgIG90aFZhbHVlID0gb3RoZXJba2V5XTtcblxuICAgICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBvYmpWYWx1ZSwga2V5LCBvdGhlciwgb2JqZWN0LCBzdGFjaylcbiAgICAgICAgICAgIDogY3VzdG9taXplcihvYmpWYWx1ZSwgb3RoVmFsdWUsIGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBpZiAoIShjb21wYXJlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gKG9ialZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMob2JqVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpXG4gICAgICAgICAgICAgIDogY29tcGFyZWRcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBza2lwQ3RvciB8fCAoc2tpcEN0b3IgPSBrZXkgPT0gJ2NvbnN0cnVjdG9yJyk7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0ICYmICFza2lwQ3Rvcikge1xuICAgICAgICB2YXIgb2JqQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgICAgICAgIG90aEN0b3IgPSBvdGhlci5jb25zdHJ1Y3RvcjtcblxuICAgICAgICAvLyBOb24gYE9iamVjdGAgb2JqZWN0IGluc3RhbmNlcyB3aXRoIGRpZmZlcmVudCBjb25zdHJ1Y3RvcnMgYXJlIG5vdCBlcXVhbC5cbiAgICAgICAgaWYgKG9iakN0b3IgIT0gb3RoQ3RvciAmJlxuICAgICAgICAgICAgKCdjb25zdHJ1Y3RvcicgaW4gb2JqZWN0ICYmICdjb25zdHJ1Y3RvcicgaW4gb3RoZXIpICYmXG4gICAgICAgICAgICAhKHR5cGVvZiBvYmpDdG9yID09ICdmdW5jdGlvbicgJiYgb2JqQ3RvciBpbnN0YW5jZW9mIG9iakN0b3IgJiZcbiAgICAgICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCBmbGF0dGVucyB0aGUgcmVzdCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0UmVzdChmdW5jKSB7XG4gICAgICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgdW5kZWZpbmVkLCBmbGF0dGVuKSwgZnVuYyArICcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRBbGxLZXlzKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5cywgZ2V0U3ltYm9scyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICAgICAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldEFsbEtleXNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNJbiwgZ2V0U3ltYm9sc0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIG1ldGFkYXRhIGZvciBgZnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtZXRhZGF0YSBmb3IgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBnZXREYXRhID0gIW1ldGFNYXAgPyBub29wIDogZnVuY3Rpb24oZnVuYykge1xuICAgICAgcmV0dXJuIG1ldGFNYXAuZ2V0KGZ1bmMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYW1lIG9mIGBmdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRGdW5jTmFtZShmdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gKGZ1bmMubmFtZSArICcnKSxcbiAgICAgICAgICBhcnJheSA9IHJlYWxOYW1lc1tyZXN1bHRdLFxuICAgICAgICAgIGxlbmd0aCA9IGhhc093blByb3BlcnR5LmNhbGwocmVhbE5hbWVzLCByZXN1bHQpID8gYXJyYXkubGVuZ3RoIDogMDtcblxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBkYXRhID0gYXJyYXlbbGVuZ3RoXSxcbiAgICAgICAgICAgIG90aGVyRnVuYyA9IGRhdGEuZnVuYztcbiAgICAgICAgaWYgKG90aGVyRnVuYyA9PSBudWxsIHx8IG90aGVyRnVuYyA9PSBmdW5jKSB7XG4gICAgICAgICAgcmV0dXJuIGRhdGEubmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBhcmd1bWVudCBwbGFjZWhvbGRlciB2YWx1ZSBmb3IgYGZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwbGFjZWhvbGRlciB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRIb2xkZXIoZnVuYykge1xuICAgICAgdmFyIG9iamVjdCA9IGhhc093blByb3BlcnR5LmNhbGwobG9kYXNoLCAncGxhY2Vob2xkZXInKSA/IGxvZGFzaCA6IGZ1bmM7XG4gICAgICByZXR1cm4gb2JqZWN0LnBsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGFwcHJvcHJpYXRlIFwiaXRlcmF0ZWVcIiBmdW5jdGlvbi4gSWYgYF8uaXRlcmF0ZWVgIGlzIGN1c3RvbWl6ZWQsXG4gICAgICogdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjdXN0b20gbWV0aG9kLCBvdGhlcndpc2UgaXQgcmV0dXJucyBgYmFzZUl0ZXJhdGVlYC5cbiAgICAgKiBJZiBhcmd1bWVudHMgYXJlIHByb3ZpZGVkLCB0aGUgY2hvc2VuIGZ1bmN0aW9uIGlzIGludm9rZWQgd2l0aCB0aGVtIGFuZFxuICAgICAqIGl0cyByZXN1bHQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gW3ZhbHVlXSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhbiBpdGVyYXRlZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgdGhlIGNyZWF0ZWQgaXRlcmF0ZWUuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjaG9zZW4gZnVuY3Rpb24gb3IgaXRzIHJlc3VsdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRJdGVyYXRlZSgpIHtcbiAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2guaXRlcmF0ZWUgfHwgaXRlcmF0ZWU7XG4gICAgICByZXN1bHQgPSByZXN1bHQgPT09IGl0ZXJhdGVlID8gYmFzZUl0ZXJhdGVlIDogcmVzdWx0O1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyByZXN1bHQoYXJndW1lbnRzWzBdLCBhcmd1bWVudHNbMV0pIDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWFwIGRhdGEuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICAgICAgdmFyIGRhdGEgPSBtYXAuX19kYXRhX187XG4gICAgICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICAgICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICAgICAgOiBkYXRhLm1hcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbWF0Y2ggZGF0YSBvZiBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRNYXRjaERhdGEob2JqZWN0KSB7XG4gICAgICB2YXIgcmVzdWx0ID0ga2V5cyhvYmplY3QpLFxuICAgICAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIga2V5ID0gcmVzdWx0W2xlbmd0aF0sXG4gICAgICAgICAgICB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgICAgIHJlc3VsdFtsZW5ndGhdID0gW2tleSwgdmFsdWUsIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYXRpdmUgZnVuY3Rpb24gYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICAgICAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICAgICAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5bWJvbC50b1N0cmluZ1RhZ2AgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpIHtcbiAgICAgIHZhciBpc093biA9IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIHN5bVRvU3RyaW5nVGFnKSxcbiAgICAgICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHt9XG5cbiAgICAgIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICAgIGlmICh1bm1hc2tlZCkge1xuICAgICAgICBpZiAoaXNPd24pIHtcbiAgICAgICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICAgICAqL1xuICAgIHZhciBnZXRTeW1ib2xzID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgIHJldHVybiBhcnJheUZpbHRlcihuYXRpdmVHZXRTeW1ib2xzKG9iamVjdCksIGZ1bmN0aW9uKHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmplY3QsIHN5bWJvbCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICAgICAqL1xuICAgIHZhciBnZXRTeW1ib2xzSW4gPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgd2hpbGUgKG9iamVjdCkge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCBnZXRTeW1ib2xzKG9iamVjdCkpO1xuICAgICAgICBvYmplY3QgPSBnZXRQcm90b3R5cGUob2JqZWN0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGB0b1N0cmluZ1RhZ2Agb2YgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAgICAgKi9cbiAgICB2YXIgZ2V0VGFnID0gYmFzZUdldFRhZztcblxuICAgIC8vIEZhbGxiYWNrIGZvciBkYXRhIHZpZXdzLCBtYXBzLCBzZXRzLCBhbmQgd2VhayBtYXBzIGluIElFIDExIGFuZCBwcm9taXNlcyBpbiBOb2RlLmpzIDwgNi5cbiAgICBpZiAoKERhdGFWaWV3ICYmIGdldFRhZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpKSkgIT0gZGF0YVZpZXdUYWcpIHx8XG4gICAgICAgIChNYXAgJiYgZ2V0VGFnKG5ldyBNYXApICE9IG1hcFRhZykgfHxcbiAgICAgICAgKFByb21pc2UgJiYgZ2V0VGFnKFByb21pc2UucmVzb2x2ZSgpKSAhPSBwcm9taXNlVGFnKSB8fFxuICAgICAgICAoU2V0ICYmIGdldFRhZyhuZXcgU2V0KSAhPSBzZXRUYWcpIHx8XG4gICAgICAgIChXZWFrTWFwICYmIGdldFRhZyhuZXcgV2Vha01hcCkgIT0gd2Vha01hcFRhZykpIHtcbiAgICAgIGdldFRhZyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBiYXNlR2V0VGFnKHZhbHVlKSxcbiAgICAgICAgICAgIEN0b3IgPSByZXN1bHQgPT0gb2JqZWN0VGFnID8gdmFsdWUuY29uc3RydWN0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjdG9yU3RyaW5nID0gQ3RvciA/IHRvU291cmNlKEN0b3IpIDogJyc7XG5cbiAgICAgICAgaWYgKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgICBzd2l0Y2ggKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgICAgIGNhc2UgZGF0YVZpZXdDdG9yU3RyaW5nOiByZXR1cm4gZGF0YVZpZXdUYWc7XG4gICAgICAgICAgICBjYXNlIG1hcEN0b3JTdHJpbmc6IHJldHVybiBtYXBUYWc7XG4gICAgICAgICAgICBjYXNlIHByb21pc2VDdG9yU3RyaW5nOiByZXR1cm4gcHJvbWlzZVRhZztcbiAgICAgICAgICAgIGNhc2Ugc2V0Q3RvclN0cmluZzogcmV0dXJuIHNldFRhZztcbiAgICAgICAgICAgIGNhc2Ugd2Vha01hcEN0b3JTdHJpbmc6IHJldHVybiB3ZWFrTWFwVGFnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2aWV3LCBhcHBseWluZyBhbnkgYHRyYW5zZm9ybXNgIHRvIHRoZSBgc3RhcnRgIGFuZCBgZW5kYCBwb3NpdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHZpZXcuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSB2aWV3LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHRyYW5zZm9ybXMgVGhlIHRyYW5zZm9ybWF0aW9ucyB0byBhcHBseSB0byB0aGUgdmlldy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBgc3RhcnRgIGFuZCBgZW5kYFxuICAgICAqICBwb3NpdGlvbnMgb2YgdGhlIHZpZXcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0VmlldyhzdGFydCwgZW5kLCB0cmFuc2Zvcm1zKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSB0cmFuc2Zvcm1zLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGRhdGEgPSB0cmFuc2Zvcm1zW2luZGV4XSxcbiAgICAgICAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHtcbiAgICAgICAgICBjYXNlICdkcm9wJzogICAgICBzdGFydCArPSBzaXplOyBicmVhaztcbiAgICAgICAgICBjYXNlICdkcm9wUmlnaHQnOiBlbmQgLT0gc2l6ZTsgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGFrZSc6ICAgICAgZW5kID0gbmF0aXZlTWluKGVuZCwgc3RhcnQgKyBzaXplKTsgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGFrZVJpZ2h0Jzogc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQsIGVuZCAtIHNpemUpOyBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgJ3N0YXJ0Jzogc3RhcnQsICdlbmQnOiBlbmQgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyB3cmFwcGVyIGRldGFpbHMgZnJvbSB0aGUgYHNvdXJjZWAgYm9keSBjb21tZW50LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlIFRoZSBzb3VyY2UgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHdyYXBwZXIgZGV0YWlscy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRXcmFwRGV0YWlscyhzb3VyY2UpIHtcbiAgICAgIHZhciBtYXRjaCA9IHNvdXJjZS5tYXRjaChyZVdyYXBEZXRhaWxzKTtcbiAgICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdLnNwbGl0KHJlU3BsaXREZXRhaWxzKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcGF0aGAgZXhpc3RzIG9uIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFzRnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgcHJvcGVydGllcy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBoYXNGdW5jKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSk7XG4gICAgICAgIGlmICghKHJlc3VsdCA9IG9iamVjdCAhPSBudWxsICYmIGhhc0Z1bmMob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IG9iamVjdFtrZXldO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCB8fCArK2luZGV4ICE9IGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgbGVuZ3RoID0gb2JqZWN0ID09IG51bGwgPyAwIDogb2JqZWN0Lmxlbmd0aDtcbiAgICAgIHJldHVybiAhIWxlbmd0aCAmJiBpc0xlbmd0aChsZW5ndGgpICYmIGlzSW5kZXgoa2V5LCBsZW5ndGgpICYmXG4gICAgICAgIChpc0FycmF5KG9iamVjdCkgfHwgaXNBcmd1bWVudHMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgYW4gYXJyYXkgY2xvbmUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluaXRDbG9uZUFycmF5KGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IG5ldyBhcnJheS5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gICAgICAvLyBBZGQgcHJvcGVydGllcyBhc3NpZ25lZCBieSBgUmVnRXhwI2V4ZWNgLlxuICAgICAgaWYgKGxlbmd0aCAmJiB0eXBlb2YgYXJyYXlbMF0gPT0gJ3N0cmluZycgJiYgaGFzT3duUHJvcGVydHkuY2FsbChhcnJheSwgJ2luZGV4JykpIHtcbiAgICAgICAgcmVzdWx0LmluZGV4ID0gYXJyYXkuaW5kZXg7XG4gICAgICAgIHJlc3VsdC5pbnB1dCA9IGFycmF5LmlucHV0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0Q2xvbmVPYmplY3Qob2JqZWN0KSB7XG4gICAgICByZXR1cm4gKHR5cGVvZiBvYmplY3QuY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNQcm90b3R5cGUob2JqZWN0KSlcbiAgICAgICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgICAgICA6IHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZSBiYXNlZCBvbiBpdHMgYHRvU3RyaW5nVGFnYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY2xvbmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gICAgICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBNYXBgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIGBTZXRgLCBvciBgU3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluaXRDbG9uZUJ5VGFnKG9iamVjdCwgdGFnLCBpc0RlZXApIHtcbiAgICAgIHZhciBDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yO1xuICAgICAgc3dpdGNoICh0YWcpIHtcbiAgICAgICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlcihvYmplY3QpO1xuXG4gICAgICAgIGNhc2UgYm9vbFRhZzpcbiAgICAgICAgY2FzZSBkYXRlVGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3Rvcigrb2JqZWN0KTtcblxuICAgICAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZURhdGFWaWV3KG9iamVjdCwgaXNEZWVwKTtcblxuICAgICAgICBjYXNlIGZsb2F0MzJUYWc6IGNhc2UgZmxvYXQ2NFRhZzpcbiAgICAgICAgY2FzZSBpbnQ4VGFnOiBjYXNlIGludDE2VGFnOiBjYXNlIGludDMyVGFnOlxuICAgICAgICBjYXNlIHVpbnQ4VGFnOiBjYXNlIHVpbnQ4Q2xhbXBlZFRhZzogY2FzZSB1aW50MTZUYWc6IGNhc2UgdWludDMyVGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZVR5cGVkQXJyYXkob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgICAgIGNhc2UgbWFwVGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgICAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBDdG9yKG9iamVjdCk7XG5cbiAgICAgICAgY2FzZSByZWdleHBUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lUmVnRXhwKG9iamVjdCk7XG5cbiAgICAgICAgY2FzZSBzZXRUYWc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZVN5bWJvbChvYmplY3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluc2VydHMgd3JhcHBlciBgZGV0YWlsc2AgaW4gYSBjb21tZW50IGF0IHRoZSB0b3Agb2YgdGhlIGBzb3VyY2VgIGJvZHkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2UgVGhlIHNvdXJjZSB0byBtb2RpZnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBkZXRhaWxzIFRoZSBkZXRhaWxzIHRvIGluc2VydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBtb2RpZmllZCBzb3VyY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5zZXJ0V3JhcERldGFpbHMoc291cmNlLCBkZXRhaWxzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gZGV0YWlscy5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgICAgfVxuICAgICAgdmFyIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG4gICAgICBkZXRhaWxzW2xhc3RJbmRleF0gPSAobGVuZ3RoID4gMSA/ICcmICcgOiAnJykgKyBkZXRhaWxzW2xhc3RJbmRleF07XG4gICAgICBkZXRhaWxzID0gZGV0YWlscy5qb2luKGxlbmd0aCA+IDIgPyAnLCAnIDogJyAnKTtcbiAgICAgIHJldHVybiBzb3VyY2UucmVwbGFjZShyZVdyYXBDb21tZW50LCAne1xcbi8qIFt3cmFwcGVkIHdpdGggJyArIGRldGFpbHMgKyAnXSAqL1xcbicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgZmxhdHRlbmFibGUgYGFyZ3VtZW50c2Agb2JqZWN0IG9yIGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmbGF0dGVuYWJsZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRmxhdHRlbmFibGUodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc0FycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkgfHxcbiAgICAgICAgISEoc3ByZWFkYWJsZVN5bWJvbCAmJiB2YWx1ZSAmJiB2YWx1ZVtzcHJlYWRhYmxlU3ltYm9sXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBpbmRleCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgICAgIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICAgICAodHlwZSA9PSAnbnVtYmVyJyB8fFxuICAgICAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgdmFsdWUgYXJndW1lbnQuXG4gICAgICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAgICAgKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIG9iamVjdCBhcmd1bWVudC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNJdGVyYXRlZUNhbGwodmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgICAgIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgdHlwZSA9IHR5cGVvZiBpbmRleDtcbiAgICAgIGlmICh0eXBlID09ICdudW1iZXInXG4gICAgICAgICAgICA/IChpc0FycmF5TGlrZShvYmplY3QpICYmIGlzSW5kZXgoaW5kZXgsIG9iamVjdC5sZW5ndGgpKVxuICAgICAgICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpXG4gICAgICAgICAgKSB7XG4gICAgICAgIHJldHVybiBlcShvYmplY3RbaW5kZXhdLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lIGFuZCBub3QgYSBwcm9wZXJ0eSBwYXRoLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzS2V5KHZhbHVlLCBvYmplY3QpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICAgIGlmICh0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicgfHxcbiAgICAgICAgICB2YWx1ZSA9PSBudWxsIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZUlzUGxhaW5Qcm9wLnRlc3QodmFsdWUpIHx8ICFyZUlzRGVlcFByb3AudGVzdCh2YWx1ZSkgfHxcbiAgICAgICAgKG9iamVjdCAhPSBudWxsICYmIHZhbHVlIGluIE9iamVjdChvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIHVuaXF1ZSBvYmplY3Qga2V5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzS2V5YWJsZSh2YWx1ZSkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgICAgICA/ICh2YWx1ZSAhPT0gJ19fcHJvdG9fXycpXG4gICAgICAgIDogKHZhbHVlID09PSBudWxsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBhIGxhenkgY291bnRlcnBhcnQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaGFzIGEgbGF6eSBjb3VudGVycGFydCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTGF6aWFibGUoZnVuYykge1xuICAgICAgdmFyIGZ1bmNOYW1lID0gZ2V0RnVuY05hbWUoZnVuYyksXG4gICAgICAgICAgb3RoZXIgPSBsb2Rhc2hbZnVuY05hbWVdO1xuXG4gICAgICBpZiAodHlwZW9mIG90aGVyICE9ICdmdW5jdGlvbicgfHwgIShmdW5jTmFtZSBpbiBMYXp5V3JhcHBlci5wcm90b3R5cGUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChmdW5jID09PSBvdGhlcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBkYXRhID0gZ2V0RGF0YShvdGhlcik7XG4gICAgICByZXR1cm4gISFkYXRhICYmIGZ1bmMgPT09IGRhdGFbMF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICAgICAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYGZ1bmNgIGlzIGNhcGFibGUgb2YgYmVpbmcgbWFza2VkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2thYmxlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgdmFyIGlzTWFza2FibGUgPSBjb3JlSnNEYXRhID8gaXNGdW5jdGlvbiA6IHN0dWJGYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvdG90eXBlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgICAgIHZhciBDdG9yID0gdmFsdWUgJiYgdmFsdWUuY29uc3RydWN0b3IsXG4gICAgICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaWYgc3VpdGFibGUgZm9yIHN0cmljdFxuICAgICAqICBlcXVhbGl0eSBjb21wYXJpc29ucywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSAmJiAhaXNPYmplY3QodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgbWF0Y2hlc1Byb3BlcnR5YCBmb3Igc291cmNlIHZhbHVlcyBzdWl0YWJsZVxuICAgICAqIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUoa2V5LCBzcmNWYWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iamVjdFtrZXldID09PSBzcmNWYWx1ZSAmJlxuICAgICAgICAgIChzcmNWYWx1ZSAhPT0gdW5kZWZpbmVkIHx8IChrZXkgaW4gT2JqZWN0KG9iamVjdCkpKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1lbW9pemVgIHdoaWNoIGNsZWFycyB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24nc1xuICAgICAqIGNhY2hlIHdoZW4gaXQgZXhjZWVkcyBgTUFYX01FTU9JWkVfU0laRWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtZW1vaXplQ2FwcGVkKGZ1bmMpIHtcbiAgICAgIHZhciByZXN1bHQgPSBtZW1vaXplKGZ1bmMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgICBpZiAoY2FjaGUuc2l6ZSA9PT0gTUFYX01FTU9JWkVfU0laRSkge1xuICAgICAgICAgIGNhY2hlLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgY2FjaGUgPSByZXN1bHQuY2FjaGU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlcyB0aGUgZnVuY3Rpb24gbWV0YWRhdGEgb2YgYHNvdXJjZWAgaW50byBgZGF0YWAuXG4gICAgICpcbiAgICAgKiBNZXJnaW5nIG1ldGFkYXRhIHJlZHVjZXMgdGhlIG51bWJlciBvZiB3cmFwcGVycyB1c2VkIHRvIGludm9rZSBhIGZ1bmN0aW9uLlxuICAgICAqIFRoaXMgaXMgcG9zc2libGUgYmVjYXVzZSBtZXRob2RzIGxpa2UgYF8uYmluZGAsIGBfLmN1cnJ5YCwgYW5kIGBfLnBhcnRpYWxgXG4gICAgICogbWF5IGJlIGFwcGxpZWQgcmVnYXJkbGVzcyBvZiBleGVjdXRpb24gb3JkZXIuIE1ldGhvZHMgbGlrZSBgXy5hcnlgIGFuZFxuICAgICAqIGBfLnJlYXJnYCBtb2RpZnkgZnVuY3Rpb24gYXJndW1lbnRzLCBtYWtpbmcgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlXG4gICAgICogZXhlY3V0ZWQgaW1wb3J0YW50LCBwcmV2ZW50aW5nIHRoZSBtZXJnaW5nIG9mIG1ldGFkYXRhLiBIb3dldmVyLCB3ZSBtYWtlXG4gICAgICogYW4gZXhjZXB0aW9uIGZvciBhIHNhZmUgY29tYmluZWQgY2FzZSB3aGVyZSBjdXJyaWVkIGZ1bmN0aW9ucyBoYXZlIGBfLmFyeWBcbiAgICAgKiBhbmQgb3IgYF8ucmVhcmdgIGFwcGxpZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGRhdGEgVGhlIGRlc3RpbmF0aW9uIG1ldGFkYXRhLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHNvdXJjZSBUaGUgc291cmNlIG1ldGFkYXRhLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgZGF0YWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVyZ2VEYXRhKGRhdGEsIHNvdXJjZSkge1xuICAgICAgdmFyIGJpdG1hc2sgPSBkYXRhWzFdLFxuICAgICAgICAgIHNyY0JpdG1hc2sgPSBzb3VyY2VbMV0sXG4gICAgICAgICAgbmV3Qml0bWFzayA9IGJpdG1hc2sgfCBzcmNCaXRtYXNrLFxuICAgICAgICAgIGlzQ29tbW9uID0gbmV3Qml0bWFzayA8IChXUkFQX0JJTkRfRkxBRyB8IFdSQVBfQklORF9LRVlfRkxBRyB8IFdSQVBfQVJZX0ZMQUcpO1xuXG4gICAgICB2YXIgaXNDb21ibyA9XG4gICAgICAgICgoc3JjQml0bWFzayA9PSBXUkFQX0FSWV9GTEFHKSAmJiAoYml0bWFzayA9PSBXUkFQX0NVUlJZX0ZMQUcpKSB8fFxuICAgICAgICAoKHNyY0JpdG1hc2sgPT0gV1JBUF9BUllfRkxBRykgJiYgKGJpdG1hc2sgPT0gV1JBUF9SRUFSR19GTEFHKSAmJiAoZGF0YVs3XS5sZW5ndGggPD0gc291cmNlWzhdKSkgfHxcbiAgICAgICAgKChzcmNCaXRtYXNrID09IChXUkFQX0FSWV9GTEFHIHwgV1JBUF9SRUFSR19GTEFHKSkgJiYgKHNvdXJjZVs3XS5sZW5ndGggPD0gc291cmNlWzhdKSAmJiAoYml0bWFzayA9PSBXUkFQX0NVUlJZX0ZMQUcpKTtcblxuICAgICAgLy8gRXhpdCBlYXJseSBpZiBtZXRhZGF0YSBjYW4ndCBiZSBtZXJnZWQuXG4gICAgICBpZiAoIShpc0NvbW1vbiB8fCBpc0NvbWJvKSkge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYHRoaXNBcmdgIGlmIGF2YWlsYWJsZS5cbiAgICAgIGlmIChzcmNCaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcpIHtcbiAgICAgICAgZGF0YVsyXSA9IHNvdXJjZVsyXTtcbiAgICAgICAgLy8gU2V0IHdoZW4gY3VycnlpbmcgYSBib3VuZCBmdW5jdGlvbi5cbiAgICAgICAgbmV3Qml0bWFzayB8PSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcgPyAwIDogV1JBUF9DVVJSWV9CT1VORF9GTEFHO1xuICAgICAgfVxuICAgICAgLy8gQ29tcG9zZSBwYXJ0aWFsIGFyZ3VtZW50cy5cbiAgICAgIHZhciB2YWx1ZSA9IHNvdXJjZVszXTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICB2YXIgcGFydGlhbHMgPSBkYXRhWzNdO1xuICAgICAgICBkYXRhWzNdID0gcGFydGlhbHMgPyBjb21wb3NlQXJncyhwYXJ0aWFscywgdmFsdWUsIHNvdXJjZVs0XSkgOiB2YWx1ZTtcbiAgICAgICAgZGF0YVs0XSA9IHBhcnRpYWxzID8gcmVwbGFjZUhvbGRlcnMoZGF0YVszXSwgUExBQ0VIT0xERVIpIDogc291cmNlWzRdO1xuICAgICAgfVxuICAgICAgLy8gQ29tcG9zZSBwYXJ0aWFsIHJpZ2h0IGFyZ3VtZW50cy5cbiAgICAgIHZhbHVlID0gc291cmNlWzVdO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHBhcnRpYWxzID0gZGF0YVs1XTtcbiAgICAgICAgZGF0YVs1XSA9IHBhcnRpYWxzID8gY29tcG9zZUFyZ3NSaWdodChwYXJ0aWFscywgdmFsdWUsIHNvdXJjZVs2XSkgOiB2YWx1ZTtcbiAgICAgICAgZGF0YVs2XSA9IHBhcnRpYWxzID8gcmVwbGFjZUhvbGRlcnMoZGF0YVs1XSwgUExBQ0VIT0xERVIpIDogc291cmNlWzZdO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgYXJnUG9zYCBpZiBhdmFpbGFibGUuXG4gICAgICB2YWx1ZSA9IHNvdXJjZVs3XTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBkYXRhWzddID0gdmFsdWU7XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGBhcnlgIGlmIGl0J3Mgc21hbGxlci5cbiAgICAgIGlmIChzcmNCaXRtYXNrICYgV1JBUF9BUllfRkxBRykge1xuICAgICAgICBkYXRhWzhdID0gZGF0YVs4XSA9PSBudWxsID8gc291cmNlWzhdIDogbmF0aXZlTWluKGRhdGFbOF0sIHNvdXJjZVs4XSk7XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGBhcml0eWAgaWYgb25lIGlzIG5vdCBwcm92aWRlZC5cbiAgICAgIGlmIChkYXRhWzldID09IG51bGwpIHtcbiAgICAgICAgZGF0YVs5XSA9IHNvdXJjZVs5XTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYGZ1bmNgIGFuZCBtZXJnZSBiaXRtYXNrcy5cbiAgICAgIGRhdGFbMF0gPSBzb3VyY2VbMF07XG4gICAgICBkYXRhWzFdID0gbmV3Qml0bWFzaztcblxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlXG4gICAgICogW2BPYmplY3Qua2V5c2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICAgICAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGlmIChvYmplY3QgIT0gbnVsbCkge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgICAgIHJldHVybiBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCB0cmFuc2Zvcm1zIHRoZSByZXN0IGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIHJlc3QgYXJyYXkgdHJhbnNmb3JtLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCB0cmFuc2Zvcm0pIHtcbiAgICAgIHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0ID09PSB1bmRlZmluZWQgPyAoZnVuYy5sZW5ndGggLSAxKSA6IHN0YXJ0LCAwKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KGFyZ3MubGVuZ3RoIC0gc3RhcnQsIDApLFxuICAgICAgICAgICAgYXJyYXkgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYXJyYXlbaW5kZXhdID0gYXJnc1tzdGFydCArIGluZGV4XTtcbiAgICAgICAgfVxuICAgICAgICBpbmRleCA9IC0xO1xuICAgICAgICB2YXIgb3RoZXJBcmdzID0gQXJyYXkoc3RhcnQgKyAxKTtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgICAgIG90aGVyQXJnc1tpbmRleF0gPSBhcmdzW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICBvdGhlckFyZ3Nbc3RhcnRdID0gdHJhbnNmb3JtKGFycmF5KTtcbiAgICAgICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHBhcmVudCB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXRoIFRoZSBwYXRoIHRvIGdldCB0aGUgcGFyZW50IHZhbHVlIG9mLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwYXJlbnQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFyZW50KG9iamVjdCwgcGF0aCkge1xuICAgICAgcmV0dXJuIHBhdGgubGVuZ3RoIDwgMiA/IG9iamVjdCA6IGJhc2VHZXQob2JqZWN0LCBiYXNlU2xpY2UocGF0aCwgMCwgLTEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW9yZGVyIGBhcnJheWAgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgaW5kZXhlcyB3aGVyZSB0aGUgZWxlbWVudCBhdFxuICAgICAqIHRoZSBmaXJzdCBpbmRleCBpcyBhc3NpZ25lZCBhcyB0aGUgZmlyc3QgZWxlbWVudCwgdGhlIGVsZW1lbnQgYXRcbiAgICAgKiB0aGUgc2Vjb25kIGluZGV4IGlzIGFzc2lnbmVkIGFzIHRoZSBzZWNvbmQgZWxlbWVudCwgYW5kIHNvIG9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcmVvcmRlci5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBpbmRleGVzIFRoZSBhcnJhbmdlZCBhcnJheSBpbmRleGVzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlb3JkZXIoYXJyYXksIGluZGV4ZXMpIHtcbiAgICAgIHZhciBhcnJMZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKGluZGV4ZXMubGVuZ3RoLCBhcnJMZW5ndGgpLFxuICAgICAgICAgIG9sZEFycmF5ID0gY29weUFycmF5KGFycmF5KTtcblxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGluZGV4ZXNbbGVuZ3RoXTtcbiAgICAgICAgYXJyYXlbbGVuZ3RoXSA9IGlzSW5kZXgoaW5kZXgsIGFyckxlbmd0aCkgPyBvbGRBcnJheVtpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAsIHVubGVzcyBga2V5YCBpcyBcIl9fcHJvdG9fX1wiIG9yIFwiY29uc3RydWN0b3JcIi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzYWZlR2V0KG9iamVjdCwga2V5KSB7XG4gICAgICBpZiAoa2V5ID09PSAnY29uc3RydWN0b3InICYmIHR5cGVvZiBvYmplY3Rba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChrZXkgPT0gJ19fcHJvdG9fXycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBtZXRhZGF0YSBmb3IgYGZ1bmNgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIElmIHRoaXMgZnVuY3Rpb24gYmVjb21lcyBob3QsIGkuZS4gaXMgaW52b2tlZCBhIGxvdCBpbiBhIHNob3J0XG4gICAgICogcGVyaW9kIG9mIHRpbWUsIGl0IHdpbGwgdHJpcCBpdHMgYnJlYWtlciBhbmQgdHJhbnNpdGlvbiB0byBhbiBpZGVudGl0eVxuICAgICAqIGZ1bmN0aW9uIHRvIGF2b2lkIGdhcmJhZ2UgY29sbGVjdGlvbiBwYXVzZXMgaW4gVjguIFNlZVxuICAgICAqIFtWOCBpc3N1ZSAyMDcwXShodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0yMDcwKVxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFzc29jaWF0ZSBtZXRhZGF0YSB3aXRoLlxuICAgICAqIEBwYXJhbSB7Kn0gZGF0YSBUaGUgbWV0YWRhdGEuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgc2V0RGF0YSA9IHNob3J0T3V0KGJhc2VTZXREYXRhKTtcblxuICAgIC8qKlxuICAgICAqIEEgc2ltcGxlIHdyYXBwZXIgYXJvdW5kIHRoZSBnbG9iYWwgW2BzZXRUaW1lb3V0YF0oaHR0cHM6Ly9tZG4uaW8vc2V0VGltZW91dCkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3YWl0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5IGludm9jYXRpb24uXG4gICAgICogQHJldHVybnMge251bWJlcnxPYmplY3R9IFJldHVybnMgdGhlIHRpbWVyIGlkIG9yIHRpbWVvdXQgb2JqZWN0LlxuICAgICAqL1xuICAgIHZhciBzZXRUaW1lb3V0ID0gY3R4U2V0VGltZW91dCB8fCBmdW5jdGlvbihmdW5jLCB3YWl0KSB7XG4gICAgICByZXR1cm4gcm9vdC5zZXRUaW1lb3V0KGZ1bmMsIHdhaXQpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgZnVuY2AgdG8gcmV0dXJuIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBzZXRUb1N0cmluZyA9IHNob3J0T3V0KGJhc2VTZXRUb1N0cmluZyk7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgd3JhcHBlcmAgdG8gbWltaWMgdGhlIHNvdXJjZSBvZiBgcmVmZXJlbmNlYFxuICAgICAqIHdpdGggd3JhcHBlciBkZXRhaWxzIGluIGEgY29tbWVudCBhdCB0aGUgdG9wIG9mIHRoZSBzb3VyY2UgYm9keS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gd3JhcHBlciBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHJlZmVyZW5jZSBUaGUgcmVmZXJlbmNlIGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGB3cmFwcGVyYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRXcmFwVG9TdHJpbmcod3JhcHBlciwgcmVmZXJlbmNlLCBiaXRtYXNrKSB7XG4gICAgICB2YXIgc291cmNlID0gKHJlZmVyZW5jZSArICcnKTtcbiAgICAgIHJldHVybiBzZXRUb1N0cmluZyh3cmFwcGVyLCBpbnNlcnRXcmFwRGV0YWlscyhzb3VyY2UsIHVwZGF0ZVdyYXBEZXRhaWxzKGdldFdyYXBEZXRhaWxzKHNvdXJjZSksIGJpdG1hc2spKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQnbGwgc2hvcnQgb3V0IGFuZCBpbnZva2UgYGlkZW50aXR5YCBpbnN0ZWFkXG4gICAgICogb2YgYGZ1bmNgIHdoZW4gaXQncyBjYWxsZWQgYEhPVF9DT1VOVGAgb3IgbW9yZSB0aW1lcyBpbiBgSE9UX1NQQU5gXG4gICAgICogbWlsbGlzZWNvbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzaG9ydGFibGUgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICAgICAgdmFyIGNvdW50ID0gMCxcbiAgICAgICAgICBsYXN0Q2FsbGVkID0gMDtcblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc3RhbXAgPSBuYXRpdmVOb3coKSxcbiAgICAgICAgICAgIHJlbWFpbmluZyA9IEhPVF9TUEFOIC0gKHN0YW1wIC0gbGFzdENhbGxlZCk7XG5cbiAgICAgICAgbGFzdENhbGxlZCA9IHN0YW1wO1xuICAgICAgICBpZiAocmVtYWluaW5nID4gMCkge1xuICAgICAgICAgIGlmICgrK2NvdW50ID49IEhPVF9DT1VOVCkge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY291bnQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNodWZmbGVgIHdoaWNoIG11dGF0ZXMgYW5kIHNldHMgdGhlIHNpemUgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNodWZmbGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzaXplPWFycmF5Lmxlbmd0aF0gVGhlIHNpemUgb2YgYGFycmF5YC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzaHVmZmxlU2VsZihhcnJheSwgc2l6ZSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgICAgIHNpemUgPSBzaXplID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiBzaXplO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBzaXplKSB7XG4gICAgICAgIHZhciByYW5kID0gYmFzZVJhbmRvbShpbmRleCwgbGFzdEluZGV4KSxcbiAgICAgICAgICAgIHZhbHVlID0gYXJyYXlbcmFuZF07XG5cbiAgICAgICAgYXJyYXlbcmFuZF0gPSBhcnJheVtpbmRleF07XG4gICAgICAgIGFycmF5W2luZGV4XSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgYXJyYXkubGVuZ3RoID0gc2l6ZTtcbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAgICAgKi9cbiAgICB2YXIgc3RyaW5nVG9QYXRoID0gbWVtb2l6ZUNhcHBlZChmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGlmIChzdHJpbmcuY2hhckNvZGVBdCgwKSA9PT0gNDYgLyogLiAqLykge1xuICAgICAgICByZXN1bHQucHVzaCgnJyk7XG4gICAgICB9XG4gICAgICBzdHJpbmcucmVwbGFjZShyZVByb3BOYW1lLCBmdW5jdGlvbihtYXRjaCwgbnVtYmVyLCBxdW90ZSwgc3ViU3RyaW5nKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHF1b3RlID8gc3ViU3RyaW5nLnJlcGxhY2UocmVFc2NhcGVDaGFyLCAnJDEnKSA6IChudW1iZXIgfHwgbWF0Y2gpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcga2V5IGlmIGl0J3Mgbm90IGEgc3RyaW5nIG9yIHN5bWJvbC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfHN5bWJvbH0gUmV0dXJucyB0aGUga2V5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvS2V5KHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICAgICAgcmV0dXJuIChyZXN1bHQgPT0gJzAnICYmICgxIC8gdmFsdWUpID09IC1JTkZJTklUWSkgPyAnLTAnIDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBmdW5jYCB0byBpdHMgc291cmNlIGNvZGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc291cmNlIGNvZGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9Tb3VyY2UoZnVuYykge1xuICAgICAgaWYgKGZ1bmMgIT0gbnVsbCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBmdW5jVG9TdHJpbmcuY2FsbChmdW5jKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gKGZ1bmMgKyAnJyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICB9XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB3cmFwcGVyIGBkZXRhaWxzYCBiYXNlZCBvbiBgYml0bWFza2AgZmxhZ3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gZGV0YWlscyBUaGUgZGV0YWlscyB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGRldGFpbHNgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVwZGF0ZVdyYXBEZXRhaWxzKGRldGFpbHMsIGJpdG1hc2spIHtcbiAgICAgIGFycmF5RWFjaCh3cmFwRmxhZ3MsIGZ1bmN0aW9uKHBhaXIpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gJ18uJyArIHBhaXJbMF07XG4gICAgICAgIGlmICgoYml0bWFzayAmIHBhaXJbMV0pICYmICFhcnJheUluY2x1ZGVzKGRldGFpbHMsIHZhbHVlKSkge1xuICAgICAgICAgIGRldGFpbHMucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGRldGFpbHMuc29ydCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgd3JhcHBlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSB3cmFwcGVyIFRoZSB3cmFwcGVyIHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB3cmFwcGVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJDbG9uZSh3cmFwcGVyKSB7XG4gICAgICBpZiAod3JhcHBlciBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSB7XG4gICAgICAgIHJldHVybiB3cmFwcGVyLmNsb25lKCk7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IExvZGFzaFdyYXBwZXIod3JhcHBlci5fX3dyYXBwZWRfXywgd3JhcHBlci5fX2NoYWluX18pO1xuICAgICAgcmVzdWx0Ll9fYWN0aW9uc19fID0gY29weUFycmF5KHdyYXBwZXIuX19hY3Rpb25zX18pO1xuICAgICAgcmVzdWx0Ll9faW5kZXhfXyAgPSB3cmFwcGVyLl9faW5kZXhfXztcbiAgICAgIHJlc3VsdC5fX3ZhbHVlc19fID0gd3JhcHBlci5fX3ZhbHVlc19fO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzIHNwbGl0IGludG8gZ3JvdXBzIHRoZSBsZW5ndGggb2YgYHNpemVgLlxuICAgICAqIElmIGBhcnJheWAgY2FuJ3QgYmUgc3BsaXQgZXZlbmx5LCB0aGUgZmluYWwgY2h1bmsgd2lsbCBiZSB0aGUgcmVtYWluaW5nXG4gICAgICogZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NpemU9MV0gVGhlIGxlbmd0aCBvZiBlYWNoIGNodW5rXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjaHVua3MuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2h1bmsoWydhJywgJ2InLCAnYycsICdkJ10sIDIpO1xuICAgICAqIC8vID0+IFtbJ2EnLCAnYiddLCBbJ2MnLCAnZCddXVxuICAgICAqXG4gICAgICogXy5jaHVuayhbJ2EnLCAnYicsICdjJywgJ2QnXSwgMyk7XG4gICAgICogLy8gPT4gW1snYScsICdiJywgJ2MnXSwgWydkJ11dXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2h1bmsoYXJyYXksIHNpemUsIGd1YXJkKSB7XG4gICAgICBpZiAoKGd1YXJkID8gaXNJdGVyYXRlZUNhbGwoYXJyYXksIHNpemUsIGd1YXJkKSA6IHNpemUgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgc2l6ZSA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaXplID0gbmF0aXZlTWF4KHRvSW50ZWdlcihzaXplKSwgMCk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCB8fCBzaXplIDwgMSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShuYXRpdmVDZWlsKGxlbmd0aCAvIHNpemUpKTtcblxuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IGJhc2VTbGljZShhcnJheSwgaW5kZXgsIChpbmRleCArPSBzaXplKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgd2l0aCBhbGwgZmFsc2V5IHZhbHVlcyByZW1vdmVkLiBUaGUgdmFsdWVzIGBmYWxzZWAsIGBudWxsYCxcbiAgICAgKiBgMGAsIGBcIlwiYCwgYHVuZGVmaW5lZGAsIGFuZCBgTmFOYCBhcmUgZmFsc2V5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbXBhY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNvbXBhY3QoWzAsIDEsIGZhbHNlLCAyLCAnJywgM10pO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBhY3QoYXJyYXkpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGFycmF5IGNvbmNhdGVuYXRpbmcgYGFycmF5YCB3aXRoIGFueSBhZGRpdGlvbmFsIGFycmF5c1xuICAgICAqIGFuZC9vciB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29uY2F0ZW5hdGUuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNvbmNhdGVuYXRlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGNvbmNhdGVuYXRlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzFdO1xuICAgICAqIHZhciBvdGhlciA9IF8uY29uY2F0KGFycmF5LCAyLCBbM10sIFtbNF1dKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG90aGVyKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgMywgWzRdXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmNhdCgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGFyZ3MgPSBBcnJheShsZW5ndGggLSAxKSxcbiAgICAgICAgICBhcnJheSA9IGFyZ3VtZW50c1swXSxcbiAgICAgICAgICBpbmRleCA9IGxlbmd0aDtcblxuICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgYXJnc1tpbmRleCAtIDFdID0gYXJndW1lbnRzW2luZGV4XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheVB1c2goaXNBcnJheShhcnJheSkgPyBjb3B5QXJyYXkoYXJyYXkpIDogW2FycmF5XSwgYmFzZUZsYXR0ZW4oYXJncywgMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgYGFycmF5YCB2YWx1ZXMgbm90IGluY2x1ZGVkIGluIHRoZSBvdGhlciBnaXZlbiBhcnJheXNcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxBbGxgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAc2VlIF8ud2l0aG91dCwgXy54b3JcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kaWZmZXJlbmNlKFsyLCAxXSwgWzIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKi9cbiAgICB2YXIgZGlmZmVyZW5jZSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICAgICAgPyBiYXNlRGlmZmVyZW5jZShhcnJheSwgYmFzZUZsYXR0ZW4odmFsdWVzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSkpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmRpZmZlcmVuY2VgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIGFuZCBgdmFsdWVzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uXG4gICAgICogYnkgd2hpY2ggdGhleSdyZSBjb21wYXJlZC4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OlxuICAgICAqICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxBbGxCeWAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kaWZmZXJlbmNlQnkoWzIuMSwgMS4yXSwgWzIuMywgMy40XSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzEuMl1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZGlmZmVyZW5jZUJ5KFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgW3sgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIHZhciBkaWZmZXJlbmNlQnkgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBsYXN0KHZhbHVlcyk7XG4gICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoaXRlcmF0ZWUpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgICAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCBiYXNlRmxhdHRlbih2YWx1ZXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kaWZmZXJlbmNlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgIHRvIGB2YWx1ZXNgLiBUaGUgb3JkZXIgYW5kXG4gICAgICogcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGNvbXBhcmF0b3JcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucHVsbEFsbFdpdGhgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dO1xuICAgICAqXG4gICAgICogXy5kaWZmZXJlbmNlV2l0aChvYmplY3RzLCBbeyAneCc6IDEsICd5JzogMiB9XSwgXy5pc0VxdWFsKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIsICd5JzogMSB9XVxuICAgICAqL1xuICAgIHZhciBkaWZmZXJlbmNlV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdCh2YWx1ZXMpO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGNvbXBhcmF0b3IpKSB7XG4gICAgICAgIGNvbXBhcmF0b3IgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QoYXJyYXkpXG4gICAgICAgID8gYmFzZURpZmZlcmVuY2UoYXJyYXksIGJhc2VGbGF0dGVuKHZhbHVlcywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyBkcm9wcGVkIGZyb20gdGhlIGJlZ2lubmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjUuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBkcm9wLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRyb3AoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKlxuICAgICAqIF8uZHJvcChbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFszXVxuICAgICAqXG4gICAgICogXy5kcm9wKFsxLCAyLCAzXSwgNSk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKlxuICAgICAqIF8uZHJvcChbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3AoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgbiA8IDAgPyAwIDogbiwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyBkcm9wcGVkIGZyb20gdGhlIGVuZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBkcm9wLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogXy5kcm9wUmlnaHQoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSwgNSk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZHJvcFJpZ2h0KGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIG4gPSBsZW5ndGggLSBuO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgMCwgbiA8IDAgPyAwIDogbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgZXhjbHVkaW5nIGVsZW1lbnRzIGRyb3BwZWQgZnJvbSB0aGUgZW5kLlxuICAgICAqIEVsZW1lbnRzIGFyZSBkcm9wcGVkIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BSaWdodFdoaWxlKHVzZXJzLCB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wUmlnaHRXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJywgJ3BlYmJsZXMnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3BSaWdodFdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgdHJ1ZSwgdHJ1ZSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCBleGNsdWRpbmcgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBiZWdpbm5pbmcuXG4gICAgICogRWxlbWVudHMgYXJlIGRyb3BwZWQgdW50aWwgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkuIFRoZSBwcmVkaWNhdGUgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BXaGlsZSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZHJvcFdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgdHJ1ZSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaWxscyBlbGVtZW50cyBvZiBgYXJyYXlgIHdpdGggYHZhbHVlYCBmcm9tIGBzdGFydGAgdXAgdG8sIGJ1dCBub3RcbiAgICAgKiBpbmNsdWRpbmcsIGBlbmRgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmaWxsLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGZpbGwgYGFycmF5YCB3aXRoLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqXG4gICAgICogXy5maWxsKGFycmF5LCAnYScpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYScsICdhJ11cbiAgICAgKlxuICAgICAqIF8uZmlsbChBcnJheSgzKSwgMik7XG4gICAgICogLy8gPT4gWzIsIDIsIDJdXG4gICAgICpcbiAgICAgKiBfLmZpbGwoWzQsIDYsIDgsIDEwXSwgJyonLCAxLCAzKTtcbiAgICAgKiAvLyA9PiBbNCwgJyonLCAnKicsIDEwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbGwoYXJyYXksIHZhbHVlLCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoc3RhcnQgJiYgdHlwZW9mIHN0YXJ0ICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQpKSB7XG4gICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgICAgZW5kID0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VGaWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RcbiAgICAgKiBlbGVtZW50IGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciBpbnN0ZWFkIG9mIHRoZSBlbGVtZW50IGl0c2VsZi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZvdW5kIGVsZW1lbnQsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maW5kSW5kZXgodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlciA9PSAnYmFybmV5JzsgfSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgeyAndXNlcic6ICdmcmVkJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEluZGV4KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IGZyb21JbmRleCA9PSBudWxsID8gMCA6IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICBpbmRleCA9IG5hdGl2ZU1heChsZW5ndGggKyBpbmRleCwgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUZpbmRJbmRleChhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgaW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZEluZGV4YCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzXG4gICAgICogb2YgYGNvbGxlY3Rpb25gIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD1hcnJheS5sZW5ndGgtMV0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmb3VuZCBlbGVtZW50LCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyID09ICdwZWJibGVzJzsgfSk7XG4gICAgICogLy8gPT4gMlxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kTGFzdEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gbGVuZ3RoIC0gMTtcbiAgICAgIGlmIChmcm9tSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpbmRleCA9IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICAgICAgICBpbmRleCA9IGZyb21JbmRleCA8IDBcbiAgICAgICAgICA/IG5hdGl2ZU1heChsZW5ndGggKyBpbmRleCwgMClcbiAgICAgICAgICA6IG5hdGl2ZU1pbihpbmRleCwgbGVuZ3RoIC0gMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUZpbmRJbmRleChhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgaW5kZXgsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZsYXR0ZW5zIGBhcnJheWAgYSBzaW5nbGUgbGV2ZWwgZGVlcC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mbGF0dGVuKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gICAgICogLy8gPT4gWzEsIDIsIFszLCBbNF1dLCA1XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXR0ZW4oYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlRmxhdHRlbihhcnJheSwgMSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWN1cnNpdmVseSBmbGF0dGVucyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZsYXR0ZW5EZWVwKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIDQsIDVdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdHRlbkRlZXAoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlRmxhdHRlbihhcnJheSwgSU5GSU5JVFkpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjdXJzaXZlbHkgZmxhdHRlbiBgYXJyYXlgIHVwIHRvIGBkZXB0aGAgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC40LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RlcHRoPTFdIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCBbMiwgWzMsIFs0XV0sIDVdXTtcbiAgICAgKlxuICAgICAqIF8uZmxhdHRlbkRlcHRoKGFycmF5LCAxKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgWzMsIFs0XV0sIDVdXG4gICAgICpcbiAgICAgKiBfLmZsYXR0ZW5EZXB0aChhcnJheSwgMik7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIFs0XSwgNV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0dGVuRGVwdGgoYXJyYXksIGRlcHRoKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBkZXB0aCA9IGRlcHRoID09PSB1bmRlZmluZWQgPyAxIDogdG9JbnRlZ2VyKGRlcHRoKTtcbiAgICAgIHJldHVybiBiYXNlRmxhdHRlbihhcnJheSwgZGVwdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBpbnZlcnNlIG9mIGBfLnRvUGFpcnNgOyB0aGlzIG1ldGhvZCByZXR1cm5zIGFuIG9iamVjdCBjb21wb3NlZFxuICAgICAqIGZyb20ga2V5LXZhbHVlIGBwYWlyc2AuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYWlycyBUaGUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZnJvbVBhaXJzKFtbJ2EnLCAxXSwgWydiJywgMl1dKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmcm9tUGFpcnMocGFpcnMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhaXJzID09IG51bGwgPyAwIDogcGFpcnMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgcGFpciA9IHBhaXJzW2luZGV4XTtcbiAgICAgICAgcmVzdWx0W3BhaXJbMF1dID0gcGFpclsxXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGFsaWFzIGZpcnN0XG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaGVhZChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIF8uaGVhZChbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGVhZChhcnJheSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYXJyYXlbMF0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYHZhbHVlYCBpcyBmb3VuZCBpbiBgYXJyYXlgXG4gICAgICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuIElmIGBmcm9tSW5kZXhgIGlzIG5lZ2F0aXZlLCBpdCdzIHVzZWQgYXMgdGhlXG4gICAgICogb2Zmc2V0IGZyb20gdGhlIGVuZCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbmRleE9mKFsxLCAyLCAxLCAyXSwgMik7XG4gICAgICogLy8gPT4gMVxuICAgICAqXG4gICAgICogLy8gU2VhcmNoIGZyb20gdGhlIGBmcm9tSW5kZXhgLlxuICAgICAqIF8uaW5kZXhPZihbMSwgMiwgMSwgMl0sIDIsIDIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgaW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgaW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIGJ1dCB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmluaXRpYWwoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0aWFsKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZVNsaWNlKGFycmF5LCAwLCAtMSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gYWxsIGdpdmVuIGFycmF5c1xuICAgICAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmVcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmludGVyc2VjdGlvbihbMiwgMV0sIFsyLCAzXSk7XG4gICAgICogLy8gPT4gWzJdXG4gICAgICovXG4gICAgdmFyIGludGVyc2VjdGlvbiA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG4gICAgICByZXR1cm4gKG1hcHBlZC5sZW5ndGggJiYgbWFwcGVkWzBdID09PSBhcnJheXNbMF0pXG4gICAgICAgID8gYmFzZUludGVyc2VjdGlvbihtYXBwZWQpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludGVyc2VjdGlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGVhY2ggYGFycmF5c2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvblxuICAgICAqIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZVxuICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmludGVyc2VjdGlvbkJ5KFsyLjEsIDEuMl0sIFsyLjMsIDMuNF0sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsyLjFdXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmludGVyc2VjdGlvbkJ5KFt7ICd4JzogMSB9XSwgW3sgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSB9XVxuICAgICAqL1xuICAgIHZhciBpbnRlcnNlY3Rpb25CeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGl0ZXJhdGVlID0gbGFzdChhcnJheXMpLFxuICAgICAgICAgIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG5cbiAgICAgIGlmIChpdGVyYXRlZSA9PT0gbGFzdChtYXBwZWQpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFwcGVkLnBvcCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChtYXBwZWQubGVuZ3RoICYmIG1hcHBlZFswXSA9PT0gYXJyYXlzWzBdKVxuICAgICAgICA/IGJhc2VJbnRlcnNlY3Rpb24obWFwcGVkLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludGVyc2VjdGlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5c2AuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlc1xuICAgICAqIG9mIHJlc3VsdCB2YWx1ZXMgYXJlIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgY29tcGFyYXRvciBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGludGVyc2VjdGluZyB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAgICAgKiB2YXIgb3RoZXJzID0gW3sgJ3gnOiAxLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8uaW50ZXJzZWN0aW9uV2l0aChvYmplY3RzLCBvdGhlcnMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgaW50ZXJzZWN0aW9uV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyksXG4gICAgICAgICAgbWFwcGVkID0gYXJyYXlNYXAoYXJyYXlzLCBjYXN0QXJyYXlMaWtlT2JqZWN0KTtcblxuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKGNvbXBhcmF0b3IpIHtcbiAgICAgICAgbWFwcGVkLnBvcCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChtYXBwZWQubGVuZ3RoICYmIG1hcHBlZFswXSA9PT0gYXJyYXlzWzBdKVxuICAgICAgICA/IGJhc2VJbnRlcnNlY3Rpb24obWFwcGVkLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBhbGwgZWxlbWVudHMgaW4gYGFycmF5YCBpbnRvIGEgc3RyaW5nIHNlcGFyYXRlZCBieSBgc2VwYXJhdG9yYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb252ZXJ0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc2VwYXJhdG9yPScsJ10gVGhlIGVsZW1lbnQgc2VwYXJhdG9yLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGpvaW5lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uam9pbihbJ2EnLCAnYicsICdjJ10sICd+Jyk7XG4gICAgICogLy8gPT4gJ2F+Yn5jJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGpvaW4oYXJyYXksIHNlcGFyYXRvcikge1xuICAgICAgcmV0dXJuIGFycmF5ID09IG51bGwgPyAnJyA6IG5hdGl2ZUpvaW4uY2FsbChhcnJheSwgc2VwYXJhdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubGFzdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXN0KGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYXJyYXlbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbmRleE9mYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYGFycmF5YCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PWFycmF5Lmxlbmd0aC0xXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sYXN0SW5kZXhPZihbMSwgMiwgMSwgMl0sIDIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIC8vIFNlYXJjaCBmcm9tIHRoZSBgZnJvbUluZGV4YC5cbiAgICAgKiBfLmxhc3RJbmRleE9mKFsxLCAyLCAxLCAyXSwgMiwgMik7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhc3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBsZW5ndGg7XG4gICAgICBpZiAoZnJvbUluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaW5kZXggPSB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgICAgaW5kZXggPSBpbmRleCA8IDAgPyBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApIDogbmF0aXZlTWluKGluZGV4LCBsZW5ndGggLSAxKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICAgICAgPyBzdHJpY3RMYXN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGluZGV4KVxuICAgICAgICA6IGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJc05hTiwgaW5kZXgsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGVsZW1lbnQgYXQgaW5kZXggYG5gIG9mIGBhcnJheWAuIElmIGBuYCBpcyBuZWdhdGl2ZSwgdGhlIG50aFxuICAgICAqIGVsZW1lbnQgZnJvbSB0aGUgZW5kIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MF0gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IHRvIHJldHVybi5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbnRoIGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdkJ107XG4gICAgICpcbiAgICAgKiBfLm50aChhcnJheSwgMSk7XG4gICAgICogLy8gPT4gJ2InXG4gICAgICpcbiAgICAgKiBfLm50aChhcnJheSwgLTIpO1xuICAgICAqIC8vID0+ICdjJztcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBudGgoYXJyYXksIG4pIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VOdGgoYXJyYXksIHRvSW50ZWdlcihuKSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwgZ2l2ZW4gdmFsdWVzIGZyb20gYGFycmF5YCB1c2luZ1xuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy53aXRob3V0YCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLiBVc2UgYF8ucmVtb3ZlYFxuICAgICAqIHRvIHJlbW92ZSBlbGVtZW50cyBmcm9tIGFuIGFycmF5IGJ5IHByZWRpY2F0ZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdhJywgJ2InLCAnYyddO1xuICAgICAqXG4gICAgICogXy5wdWxsKGFycmF5LCAnYScsICdjJyk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsnYicsICdiJ11cbiAgICAgKi9cbiAgICB2YXIgcHVsbCA9IGJhc2VSZXN0KHB1bGxBbGwpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wdWxsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGFuIGFycmF5IG9mIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmRpZmZlcmVuY2VgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdhJywgJ2InLCAnYyddO1xuICAgICAqXG4gICAgICogXy5wdWxsQWxsKGFycmF5LCBbJ2EnLCAnYyddKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWydiJywgJ2InXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHB1bGxBbGwoYXJyYXksIHZhbHVlcykge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGggJiYgdmFsdWVzICYmIHZhbHVlcy5sZW5ndGgpXG4gICAgICAgID8gYmFzZVB1bGxBbGwoYXJyYXksIHZhbHVlcylcbiAgICAgICAgOiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnB1bGxBbGxgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIGFuZCBgdmFsdWVzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uXG4gICAgICogYnkgd2hpY2ggdGhleSdyZSBjb21wYXJlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmRpZmZlcmVuY2VCeWAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW3sgJ3gnOiAxIH0sIHsgJ3gnOiAyIH0sIHsgJ3gnOiAzIH0sIHsgJ3gnOiAxIH1dO1xuICAgICAqXG4gICAgICogXy5wdWxsQWxsQnkoYXJyYXksIFt7ICd4JzogMSB9LCB7ICd4JzogMyB9XSwgJ3gnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyIH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gcHVsbEFsbEJ5KGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCAmJiB2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aClcbiAgICAgICAgPyBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgICAgIDogYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wdWxsQWxsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgIHRvIGB2YWx1ZXNgLiBUaGUgY29tcGFyYXRvciBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5kaWZmZXJlbmNlV2l0aGAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjYuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMywgJ3knOiA0IH0sIHsgJ3gnOiA1LCAneSc6IDYgfV07XG4gICAgICpcbiAgICAgKiBfLnB1bGxBbGxXaXRoKGFycmF5LCBbeyAneCc6IDMsICd5JzogNCB9XSwgXy5pc0VxdWFsKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDUsICd5JzogNiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHB1bGxBbGxXaXRoKGFycmF5LCB2YWx1ZXMsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoICYmIHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoKVxuICAgICAgICA/IGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMsIHVuZGVmaW5lZCwgY29tcGFyYXRvcilcbiAgICAgICAgOiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGVsZW1lbnRzIGZyb20gYGFycmF5YCBjb3JyZXNwb25kaW5nIHRvIGBpbmRleGVzYCBhbmQgcmV0dXJucyBhblxuICAgICAqIGFycmF5IG9mIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmF0YCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0gey4uLihudW1iZXJ8bnVtYmVyW10pfSBbaW5kZXhlc10gVGhlIGluZGV4ZXMgb2YgZWxlbWVudHMgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnZCddO1xuICAgICAqIHZhciBwdWxsZWQgPSBfLnB1bGxBdChhcnJheSwgWzEsIDNdKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYyddXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhwdWxsZWQpO1xuICAgICAqIC8vID0+IFsnYicsICdkJ11cbiAgICAgKi9cbiAgICB2YXIgcHVsbEF0ID0gZmxhdFJlc3QoZnVuY3Rpb24oYXJyYXksIGluZGV4ZXMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBiYXNlQXQoYXJyYXksIGluZGV4ZXMpO1xuXG4gICAgICBiYXNlUHVsbEF0KGFycmF5LCBhcnJheU1hcChpbmRleGVzLCBmdW5jdGlvbihpbmRleCkge1xuICAgICAgICByZXR1cm4gaXNJbmRleChpbmRleCwgbGVuZ3RoKSA/ICtpbmRleCA6IGluZGV4O1xuICAgICAgfSkuc29ydChjb21wYXJlQXNjZW5kaW5nKSk7XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIGBhcnJheWAgdGhhdCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3JcbiAgICAgKiBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiB0aGUgcmVtb3ZlZCBlbGVtZW50cy4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uZmlsdGVyYCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLiBVc2UgYF8ucHVsbGBcbiAgICAgKiB0byBwdWxsIGVsZW1lbnRzIGZyb20gYW4gYXJyYXkgYnkgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgMywgNF07XG4gICAgICogdmFyIGV2ZW5zID0gXy5yZW1vdmUoYXJyYXksIGZ1bmN0aW9uKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICUgMiA9PSAwO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAzXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coZXZlbnMpO1xuICAgICAqIC8vID0+IFsyLCA0XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlbW92ZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpbmRleGVzID0gW10sXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBwcmVkaWNhdGUgPSBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICAgIGluZGV4ZXMucHVzaChpbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJhc2VQdWxsQXQoYXJyYXksIGluZGV4ZXMpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnNlcyBgYXJyYXlgIHNvIHRoYXQgdGhlIGZpcnN0IGVsZW1lbnQgYmVjb21lcyB0aGUgbGFzdCwgdGhlIHNlY29uZFxuICAgICAqIGVsZW1lbnQgYmVjb21lcyB0aGUgc2Vjb25kIHRvIGxhc3QsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAgYW5kIGlzIGJhc2VkIG9uXG4gICAgICogW2BBcnJheSNyZXZlcnNlYF0oaHR0cHM6Ly9tZG4uaW8vQXJyYXkvcmV2ZXJzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgM107XG4gICAgICpcbiAgICAgKiBfLnJldmVyc2UoYXJyYXkpO1xuICAgICAqIC8vID0+IFszLCAyLCAxXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFszLCAyLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJldmVyc2UoYXJyYXkpIHtcbiAgICAgIHJldHVybiBhcnJheSA9PSBudWxsID8gYXJyYXkgOiBuYXRpdmVSZXZlcnNlLmNhbGwoYXJyYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIGZyb20gYHN0YXJ0YCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIHVzZWQgaW5zdGVhZCBvZlxuICAgICAqIFtgQXJyYXkjc2xpY2VgXShodHRwczovL21kbi5pby9BcnJheS9zbGljZSkgdG8gZW5zdXJlIGRlbnNlIGFycmF5cyBhcmVcbiAgICAgKiByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzbGljZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNsaWNlKGFycmF5LCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoZW5kICYmIHR5cGVvZiBlbmQgIT0gJ251bWJlcicgJiYgaXNJdGVyYXRlZUNhbGwoYXJyYXksIHN0YXJ0LCBlbmQpKSB7XG4gICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgICAgZW5kID0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHN0YXJ0ID0gc3RhcnQgPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoc3RhcnQpO1xuICAgICAgICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IHRvSW50ZWdlcihlbmQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlcyBhIGJpbmFyeSBzZWFyY2ggdG8gZGV0ZXJtaW5lIHRoZSBsb3dlc3QgaW5kZXggYXQgd2hpY2ggYHZhbHVlYFxuICAgICAqIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGBhcnJheWAgaW4gb3JkZXIgdG8gbWFpbnRhaW4gaXRzIHNvcnQgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZEluZGV4KFszMCwgNTBdLCA0MCk7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydGVkSW5kZXhgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgZm9yIGB2YWx1ZWAgYW5kIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIHRvIGNvbXB1dGUgdGhlaXJcbiAgICAgKiBzb3J0IHJhbmtpbmcuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiA0IH0sIHsgJ3gnOiA1IH1dO1xuICAgICAqXG4gICAgICogXy5zb3J0ZWRJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ueDsgfSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb3J0ZWRJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sICd4Jyk7XG4gICAgICogLy8gPT4gMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IHBlcmZvcm1zIGEgYmluYXJ5XG4gICAgICogc2VhcmNoIG9uIGEgc29ydGVkIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkSW5kZXhPZihbNCwgNSwgNSwgNSwgNl0sIDUpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRJbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCkge1xuICAgICAgICB2YXIgaW5kZXggPSBiYXNlU29ydGVkSW5kZXgoYXJyYXksIHZhbHVlKTtcbiAgICAgICAgaWYgKGluZGV4IDwgbGVuZ3RoICYmIGVxKGFycmF5W2luZGV4XSwgdmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zb3J0ZWRJbmRleGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgaGlnaGVzdFxuICAgICAqIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkIGludG8gYGFycmF5YCBpbiBvcmRlciB0b1xuICAgICAqIG1haW50YWluIGl0cyBzb3J0IG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRMYXN0SW5kZXgoWzQsIDUsIDUsIDUsIDZdLCA1KTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkTGFzdEluZGV4KGFycmF5LCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydGVkTGFzdEluZGV4YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIGZvciBgdmFsdWVgIGFuZCBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCB0byBjb21wdXRlIHRoZWlyXG4gICAgICogc29ydCByYW5raW5nLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogNCB9LCB7ICd4JzogNSB9XTtcbiAgICAgKlxuICAgICAqIF8uc29ydGVkTGFzdEluZGV4Qnkob2JqZWN0cywgeyAneCc6IDQgfSwgZnVuY3Rpb24obykgeyByZXR1cm4gby54OyB9KTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvcnRlZExhc3RJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sICd4Jyk7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZExhc3RJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXhCeShhcnJheSwgdmFsdWUsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5sYXN0SW5kZXhPZmAgZXhjZXB0IHRoYXQgaXQgcGVyZm9ybXMgYSBiaW5hcnlcbiAgICAgKiBzZWFyY2ggb24gYSBzb3J0ZWQgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRMYXN0SW5kZXhPZihbNCwgNSwgNSwgNSwgNl0sIDUpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRMYXN0SW5kZXhPZihhcnJheSwgdmFsdWUpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGgpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSwgdHJ1ZSkgLSAxO1xuICAgICAgICBpZiAoZXEoYXJyYXlbaW5kZXhdLCB2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFgIGV4Y2VwdCB0aGF0IGl0J3MgZGVzaWduZWQgYW5kIG9wdGltaXplZFxuICAgICAqIGZvciBzb3J0ZWQgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkVW5pcShbMSwgMSwgMl0pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZFVuaXEoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTb3J0ZWRVbmlxKGFycmF5KVxuICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcUJ5YCBleGNlcHQgdGhhdCBpdCdzIGRlc2lnbmVkIGFuZCBvcHRpbWl6ZWRcbiAgICAgKiBmb3Igc29ydGVkIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkVW5pcUJ5KFsxLjEsIDEuMiwgMi4zLCAyLjRdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiBbMS4xLCAyLjNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkVW5pcUJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVNvcnRlZFVuaXEoYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBidXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGFpbChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRhaWwoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlU2xpY2UoYXJyYXksIDEsIGxlbmd0aCkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyB0YWtlbiBmcm9tIHRoZSBiZWdpbm5pbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gdGFrZS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50YWtlKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICpcbiAgICAgKiBfLnRha2UoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIF8udGFrZShbMSwgMiwgM10sIDUpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogXy50YWtlKFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWtlKGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgMCwgbiA8IDAgPyAwIDogbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgZW5kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHRha2UuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzNdXG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFsyLCAzXVxuICAgICAqXG4gICAgICogXy50YWtlUmlnaHQoWzEsIDIsIDNdLCA1KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWtlUmlnaHQoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgbiA9IGxlbmd0aCAtIG47XG4gICAgICByZXR1cm4gYmFzZVNsaWNlKGFycmF5LCBuIDwgMCA/IDAgOiBuLCBsZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgZW5kLiBFbGVtZW50cyBhcmVcbiAgICAgKiB0YWtlbiB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGhcbiAgICAgKiB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodFdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlUmlnaHRXaGlsZSh1c2VycywgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlUmlnaHRXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRha2VSaWdodFdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgZmFsc2UsIHRydWUpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBlbGVtZW50cyB0YWtlbiBmcm9tIHRoZSBiZWdpbm5pbmcuIEVsZW1lbnRzXG4gICAgICogYXJlIHRha2VuIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aFxuICAgICAqIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8udGFrZVdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVdoaWxlKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFrZVdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMsIGluIG9yZGVyLCBmcm9tIGFsbCBnaXZlbiBhcnJheXMgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21iaW5lZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pb24oWzJdLCBbMSwgMl0pO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIHZhciB1bmlvbiA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBlYWNoIGBhcnJheXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnlcbiAgICAgKiB3aGljaCB1bmlxdWVuZXNzIGlzIGNvbXB1dGVkLiBSZXN1bHQgdmFsdWVzIGFyZSBjaG9zZW4gZnJvbSB0aGUgZmlyc3RcbiAgICAgKiBhcnJheSBpbiB3aGljaCB0aGUgdmFsdWUgb2NjdXJzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21iaW5lZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pb25CeShbMi4xXSwgWzEuMiwgMi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzIuMSwgMS4yXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy51bmlvbkJ5KFt7ICd4JzogMSB9XSwgW3sgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSB9LCB7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIHZhciB1bmlvbkJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBsYXN0KGFycmF5cyk7XG4gICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoaXRlcmF0ZWUpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5c2AuIFJlc3VsdCB2YWx1ZXMgYXJlIGNob3NlbiBmcm9tXG4gICAgICogdGhlIGZpcnN0IGFycmF5IGluIHdoaWNoIHRoZSB2YWx1ZSBvY2N1cnMuIFRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICogdmFyIG90aGVycyA9IFt7ICd4JzogMSwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLnVuaW9uV2l0aChvYmplY3RzLCBvdGhlcnMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAxIH1dXG4gICAgICovXG4gICAgdmFyIHVuaW9uV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyk7XG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZVVuaXEoYmFzZUZsYXR0ZW4oYXJyYXlzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSksIHVuZGVmaW5lZCwgY29tcGFyYXRvcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZHVwbGljYXRlLWZyZWUgdmVyc2lvbiBvZiBhbiBhcnJheSwgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucywgaW4gd2hpY2ggb25seSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBlYWNoIGVsZW1lbnRcbiAgICAgKiBpcyBrZXB0LiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyXG4gICAgICogaW4gdGhlIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pcShbMiwgMSwgMl0pO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXEoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VVbmlxKGFycmF5KSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IGluIGBhcnJheWAgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvbiBieSB3aGljaFxuICAgICAqIHVuaXF1ZW5lc3MgaXMgY29tcHV0ZWQuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlXG4gICAgICogb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OlxuICAgICAqICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pcUJ5KFsyLjEsIDEuMiwgMi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzIuMSwgMS4yXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy51bmlxQnkoW3sgJ3gnOiAxIH0sIHsgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSB9LCB7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXFCeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VVbmlxKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlxYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpc1xuICAgICAqIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5LlRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLnVuaXFXaXRoKG9iamVjdHMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXFXaXRoKGFycmF5LCBjb21wYXJhdG9yKSB7XG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uemlwYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGFuIGFycmF5IG9mIGdyb3VwZWRcbiAgICAgKiBlbGVtZW50cyBhbmQgY3JlYXRlcyBhbiBhcnJheSByZWdyb3VwaW5nIHRoZSBlbGVtZW50cyB0byB0aGVpciBwcmUtemlwXG4gICAgICogY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjIuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgemlwcGVkID0gXy56aXAoWydhJywgJ2InXSwgWzEsIDJdLCBbdHJ1ZSwgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMSwgdHJ1ZV0sIFsnYicsIDIsIGZhbHNlXV1cbiAgICAgKlxuICAgICAqIF8udW56aXAoemlwcGVkKTtcbiAgICAgKiAvLyA9PiBbWydhJywgJ2InXSwgWzEsIDJdLCBbdHJ1ZSwgZmFsc2VdXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuemlwKGFycmF5KSB7XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSAwO1xuICAgICAgYXJyYXkgPSBhcnJheUZpbHRlcihhcnJheSwgZnVuY3Rpb24oZ3JvdXApIHtcbiAgICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGdyb3VwKSkge1xuICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChncm91cC5sZW5ndGgsIGxlbmd0aCk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGJhc2VUaW1lcyhsZW5ndGgsIGZ1bmN0aW9uKGluZGV4KSB7XG4gICAgICAgIHJldHVybiBhcnJheU1hcChhcnJheSwgYmFzZVByb3BlcnR5KGluZGV4KSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuemlwYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgdG8gc3BlY2lmeVxuICAgICAqIGhvdyByZWdyb3VwZWQgdmFsdWVzIHNob3VsZCBiZSBjb21iaW5lZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aGVcbiAgICAgKiBlbGVtZW50cyBvZiBlYWNoIGdyb3VwOiAoLi4uZ3JvdXApLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIHRvIGNvbWJpbmVcbiAgICAgKiAgcmVncm91cGVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZWdyb3VwZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB6aXBwZWQgPSBfLnppcChbMSwgMl0sIFsxMCwgMjBdLCBbMTAwLCAyMDBdKTtcbiAgICAgKiAvLyA9PiBbWzEsIDEwLCAxMDBdLCBbMiwgMjAsIDIwMF1dXG4gICAgICpcbiAgICAgKiBfLnVuemlwV2l0aCh6aXBwZWQsIF8uYWRkKTtcbiAgICAgKiAvLyA9PiBbMywgMzAsIDMwMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bnppcFdpdGgoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSB1bnppcChhcnJheSk7XG4gICAgICBpZiAoaXRlcmF0ZWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5TWFwKHJlc3VsdCwgZnVuY3Rpb24oZ3JvdXApIHtcbiAgICAgICAgcmV0dXJuIGFwcGx5KGl0ZXJhdGVlLCB1bmRlZmluZWQsIGdyb3VwKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgZXhjbHVkaW5nIGFsbCBnaXZlbiB2YWx1ZXMgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucHVsbGAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0gey4uLip9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQHNlZSBfLmRpZmZlcmVuY2UsIF8ueG9yXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ud2l0aG91dChbMiwgMSwgMiwgM10sIDEsIDIpO1xuICAgICAqIC8vID0+IFszXVxuICAgICAqL1xuICAgIHZhciB3aXRob3V0ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXksIHZhbHVlcykge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgICAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCB2YWx1ZXMpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMgdGhhdCBpcyB0aGVcbiAgICAgKiBbc3ltbWV0cmljIGRpZmZlcmVuY2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N5bW1ldHJpY19kaWZmZXJlbmNlKVxuICAgICAqIG9mIHRoZSBnaXZlbiBhcnJheXMuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlIG9yZGVyXG4gICAgICogdGhleSBvY2N1ciBpbiB0aGUgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAc2VlIF8uZGlmZmVyZW5jZSwgXy53aXRob3V0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ueG9yKFsyLCAxXSwgWzIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgM11cbiAgICAgKi9cbiAgICB2YXIgeG9yID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICByZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsIGlzQXJyYXlMaWtlT2JqZWN0KSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnhvcmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGVhY2ggYGFycmF5c2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvbiBieVxuICAgICAqIHdoaWNoIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWRcbiAgICAgKiBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXlzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZVxuICAgICAqIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ueG9yQnkoWzIuMSwgMS4yXSwgWzIuMywgMy40XSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzEuMiwgMy40XVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy54b3JCeShbeyAneCc6IDEgfV0sIFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgeG9yQnkgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBpdGVyYXRlZSA9IGxhc3QoYXJyYXlzKTtcbiAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChpdGVyYXRlZSkpIHtcbiAgICAgICAgaXRlcmF0ZWUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsIGlzQXJyYXlMaWtlT2JqZWN0KSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ueG9yYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlzYC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXNcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIHRoZSBhcnJheXMuIFRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICogdmFyIG90aGVycyA9IFt7ICd4JzogMSwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLnhvcldpdGgob2JqZWN0cywgb3RoZXJzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDEgfV1cbiAgICAgKi9cbiAgICB2YXIgeG9yV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyk7XG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsIGlzQXJyYXlMaWtlT2JqZWN0KSwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cywgdGhlIGZpcnN0IG9mIHdoaWNoIGNvbnRhaW5zIHRoZVxuICAgICAqIGZpcnN0IGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBhcnJheXMsIHRoZSBzZWNvbmQgb2Ygd2hpY2ggY29udGFpbnMgdGhlXG4gICAgICogc2Vjb25kIGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBhcnJheXMsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcChbJ2EnLCAnYiddLCBbMSwgMl0sIFt0cnVlLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IFtbJ2EnLCAxLCB0cnVlXSwgWydiJywgMiwgZmFsc2VdXVxuICAgICAqL1xuICAgIHZhciB6aXAgPSBiYXNlUmVzdCh1bnppcCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZyb21QYWlyc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyB0d28gYXJyYXlzLFxuICAgICAqIG9uZSBvZiBwcm9wZXJ0eSBpZGVudGlmaWVycyBhbmQgb25lIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gW3Byb3BzPVtdXSBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlcz1bXV0gVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcE9iamVjdChbJ2EnLCAnYiddLCBbMSwgMl0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHppcE9iamVjdChwcm9wcywgdmFsdWVzKSB7XG4gICAgICByZXR1cm4gYmFzZVppcE9iamVjdChwcm9wcyB8fCBbXSwgdmFsdWVzIHx8IFtdLCBhc3NpZ25WYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy56aXBPYmplY3RgIGV4Y2VwdCB0aGF0IGl0IHN1cHBvcnRzIHByb3BlcnR5IHBhdGhzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gW3Byb3BzPVtdXSBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlcz1bXV0gVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcE9iamVjdERlZXAoWydhLmJbMF0uYycsICdhLmJbMV0uZCddLCBbMSwgMl0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiB7ICdiJzogW3sgJ2MnOiAxIH0sIHsgJ2QnOiAyIH1dIH0gfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHppcE9iamVjdERlZXAocHJvcHMsIHZhbHVlcykge1xuICAgICAgcmV0dXJuIGJhc2VaaXBPYmplY3QocHJvcHMgfHwgW10sIHZhbHVlcyB8fCBbXSwgYmFzZVNldCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy56aXBgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB0byBzcGVjaWZ5XG4gICAgICogaG93IGdyb3VwZWQgdmFsdWVzIHNob3VsZCBiZSBjb21iaW5lZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aGVcbiAgICAgKiBlbGVtZW50cyBvZiBlYWNoIGdyb3VwOiAoLi4uZ3JvdXApLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBwcm9jZXNzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gdG8gY29tYmluZVxuICAgICAqICBncm91cGVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcFdpdGgoWzEsIDJdLCBbMTAsIDIwXSwgWzEwMCwgMjAwXSwgZnVuY3Rpb24oYSwgYiwgYykge1xuICAgICAqICAgcmV0dXJuIGEgKyBiICsgYztcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBbMTExLCAyMjJdXG4gICAgICovXG4gICAgdmFyIHppcFdpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheXMubGVuZ3RoLFxuICAgICAgICAgIGl0ZXJhdGVlID0gbGVuZ3RoID4gMSA/IGFycmF5c1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcblxuICAgICAgaXRlcmF0ZWUgPSB0eXBlb2YgaXRlcmF0ZWUgPT0gJ2Z1bmN0aW9uJyA/IChhcnJheXMucG9wKCksIGl0ZXJhdGVlKSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB1bnppcFdpdGgoYXJyYXlzLCBpdGVyYXRlZSk7XG4gICAgfSk7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZSB0aGF0IHdyYXBzIGB2YWx1ZWAgd2l0aCBleHBsaWNpdCBtZXRob2RcbiAgICAgKiBjaGFpbiBzZXF1ZW5jZXMgZW5hYmxlZC4gVGhlIHJlc3VsdCBvZiBzdWNoIHNlcXVlbmNlcyBtdXN0IGJlIHVud3JhcHBlZFxuICAgICAqIHdpdGggYF8jdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMy4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIHZhciB5b3VuZ2VzdCA9IF9cbiAgICAgKiAgIC5jaGFpbih1c2VycylcbiAgICAgKiAgIC5zb3J0QnkoJ2FnZScpXG4gICAgICogICAubWFwKGZ1bmN0aW9uKG8pIHtcbiAgICAgKiAgICAgcmV0dXJuIG8udXNlciArICcgaXMgJyArIG8uYWdlO1xuICAgICAqICAgfSlcbiAgICAgKiAgIC5oZWFkKClcbiAgICAgKiAgIC52YWx1ZSgpO1xuICAgICAqIC8vID0+ICdwZWJibGVzIGlzIDEnXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2hhaW4odmFsdWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2godmFsdWUpO1xuICAgICAgcmVzdWx0Ll9fY2hhaW5fXyA9IHRydWU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGludm9rZXMgYGludGVyY2VwdG9yYCBhbmQgcmV0dXJucyBgdmFsdWVgLiBUaGUgaW50ZXJjZXB0b3JcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OyAodmFsdWUpLiBUaGUgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0b1xuICAgICAqIFwidGFwIGludG9cIiBhIG1ldGhvZCBjaGFpbiBzZXF1ZW5jZSBpbiBvcmRlciB0byBtb2RpZnkgaW50ZXJtZWRpYXRlIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvdmlkZSB0byBgaW50ZXJjZXB0b3JgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGludGVyY2VwdG9yIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgYHZhbHVlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXyhbMSwgMiwgM10pXG4gICAgICogIC50YXAoZnVuY3Rpb24oYXJyYXkpIHtcbiAgICAgKiAgICAvLyBNdXRhdGUgaW5wdXQgYXJyYXkuXG4gICAgICogICAgYXJyYXkucG9wKCk7XG4gICAgICogIH0pXG4gICAgICogIC5yZXZlcnNlKClcbiAgICAgKiAgLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFwKHZhbHVlLCBpbnRlcmNlcHRvcikge1xuICAgICAgaW50ZXJjZXB0b3IodmFsdWUpO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udGFwYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSByZXN1bHQgb2YgYGludGVyY2VwdG9yYC5cbiAgICAgKiBUaGUgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBcInBhc3MgdGhydVwiIHZhbHVlcyByZXBsYWNpbmcgaW50ZXJtZWRpYXRlXG4gICAgICogcmVzdWx0cyBpbiBhIG1ldGhvZCBjaGFpbiBzZXF1ZW5jZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm92aWRlIHRvIGBpbnRlcmNlcHRvcmAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaW50ZXJjZXB0b3IgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBpbnRlcmNlcHRvcmAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8oJyAgYWJjICAnKVxuICAgICAqICAuY2hhaW4oKVxuICAgICAqICAudHJpbSgpXG4gICAgICogIC50aHJ1KGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICAgcmV0dXJuIFt2YWx1ZV07XG4gICAgICogIH0pXG4gICAgICogIC52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsnYWJjJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0aHJ1KHZhbHVlLCBpbnRlcmNlcHRvcikge1xuICAgICAgcmV0dXJuIGludGVyY2VwdG9yKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0aGUgd3JhcHBlciB2ZXJzaW9uIG9mIGBfLmF0YC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGF0XG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfSwgNF0gfTtcbiAgICAgKlxuICAgICAqIF8ob2JqZWN0KS5hdChbJ2FbMF0uYi5jJywgJ2FbMV0nXSkudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbMywgNF1cbiAgICAgKi9cbiAgICB2YXIgd3JhcHBlckF0ID0gZmxhdFJlc3QoZnVuY3Rpb24ocGF0aHMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICAgICAgc3RhcnQgPSBsZW5ndGggPyBwYXRoc1swXSA6IDAsXG4gICAgICAgICAgdmFsdWUgPSB0aGlzLl9fd3JhcHBlZF9fLFxuICAgICAgICAgIGludGVyY2VwdG9yID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBiYXNlQXQob2JqZWN0LCBwYXRocyk7IH07XG5cbiAgICAgIGlmIChsZW5ndGggPiAxIHx8IHRoaXMuX19hY3Rpb25zX18ubGVuZ3RoIHx8XG4gICAgICAgICAgISh2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSB8fCAhaXNJbmRleChzdGFydCkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGhydShpbnRlcmNlcHRvcik7XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKHN0YXJ0LCArc3RhcnQgKyAobGVuZ3RoID8gMSA6IDApKTtcbiAgICAgIHZhbHVlLl9fYWN0aW9uc19fLnB1c2goe1xuICAgICAgICAnZnVuYyc6IHRocnUsXG4gICAgICAgICdhcmdzJzogW2ludGVyY2VwdG9yXSxcbiAgICAgICAgJ3RoaXNBcmcnOiB1bmRlZmluZWRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHZhbHVlLCB0aGlzLl9fY2hhaW5fXykudGhydShmdW5jdGlvbihhcnJheSkge1xuICAgICAgICBpZiAobGVuZ3RoICYmICFhcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICBhcnJheS5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycmF5O1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZSB3aXRoIGV4cGxpY2l0IG1ldGhvZCBjaGFpbiBzZXF1ZW5jZXMgZW5hYmxlZC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGNoYWluXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIEEgc2VxdWVuY2Ugd2l0aG91dCBleHBsaWNpdCBjaGFpbmluZy5cbiAgICAgKiBfKHVzZXJzKS5oZWFkKCk7XG4gICAgICogLy8gPT4geyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfVxuICAgICAqXG4gICAgICogLy8gQSBzZXF1ZW5jZSB3aXRoIGV4cGxpY2l0IGNoYWluaW5nLlxuICAgICAqIF8odXNlcnMpXG4gICAgICogICAuY2hhaW4oKVxuICAgICAqICAgLmhlYWQoKVxuICAgICAqICAgLnBpY2soJ3VzZXInKVxuICAgICAqICAgLnZhbHVlKCk7XG4gICAgICogLy8gPT4geyAndXNlcic6ICdiYXJuZXknIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyQ2hhaW4oKSB7XG4gICAgICByZXR1cm4gY2hhaW4odGhpcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhlY3V0ZXMgdGhlIGNoYWluIHNlcXVlbmNlIGFuZCByZXR1cm5zIHRoZSB3cmFwcGVkIHJlc3VsdC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGNvbW1pdFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMl07XG4gICAgICogdmFyIHdyYXBwZWQgPSBfKGFycmF5KS5wdXNoKDMpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogd3JhcHBlZCA9IHdyYXBwZWQuY29tbWl0KCk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogd3JhcHBlZC5sYXN0KCk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJDb21taXQoKSB7XG4gICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIodGhpcy52YWx1ZSgpLCB0aGlzLl9fY2hhaW5fXyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbmV4dCB2YWx1ZSBvbiBhIHdyYXBwZWQgb2JqZWN0IGZvbGxvd2luZyB0aGVcbiAgICAgKiBbaXRlcmF0b3IgcHJvdG9jb2xdKGh0dHBzOi8vbWRuLmlvL2l0ZXJhdGlvbl9wcm90b2NvbHMjaXRlcmF0b3IpLlxuICAgICAqXG4gICAgICogQG5hbWUgbmV4dFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5leHQgaXRlcmF0b3IgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMl0pO1xuICAgICAqXG4gICAgICogd3JhcHBlZC5uZXh0KCk7XG4gICAgICogLy8gPT4geyAnZG9uZSc6IGZhbHNlLCAndmFsdWUnOiAxIH1cbiAgICAgKlxuICAgICAqIHdyYXBwZWQubmV4dCgpO1xuICAgICAqIC8vID0+IHsgJ2RvbmUnOiBmYWxzZSwgJ3ZhbHVlJzogMiB9XG4gICAgICpcbiAgICAgKiB3cmFwcGVkLm5leHQoKTtcbiAgICAgKiAvLyA9PiB7ICdkb25lJzogdHJ1ZSwgJ3ZhbHVlJzogdW5kZWZpbmVkIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyTmV4dCgpIHtcbiAgICAgIGlmICh0aGlzLl9fdmFsdWVzX18gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9fdmFsdWVzX18gPSB0b0FycmF5KHRoaXMudmFsdWUoKSk7XG4gICAgICB9XG4gICAgICB2YXIgZG9uZSA9IHRoaXMuX19pbmRleF9fID49IHRoaXMuX192YWx1ZXNfXy5sZW5ndGgsXG4gICAgICAgICAgdmFsdWUgPSBkb25lID8gdW5kZWZpbmVkIDogdGhpcy5fX3ZhbHVlc19fW3RoaXMuX19pbmRleF9fKytdO1xuXG4gICAgICByZXR1cm4geyAnZG9uZSc6IGRvbmUsICd2YWx1ZSc6IHZhbHVlIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW5hYmxlcyB0aGUgd3JhcHBlciB0byBiZSBpdGVyYWJsZS5cbiAgICAgKlxuICAgICAqIEBuYW1lIFN5bWJvbC5pdGVyYXRvclxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHdyYXBwZXIgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDJdKTtcbiAgICAgKlxuICAgICAqIHdyYXBwZWRbU3ltYm9sLml0ZXJhdG9yXSgpID09PSB3cmFwcGVkO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIEFycmF5LmZyb20od3JhcHBlZCk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlclRvSXRlcmF0b3IoKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGNoYWluIHNlcXVlbmNlIHBsYW50aW5nIGB2YWx1ZWAgYXMgdGhlIHdyYXBwZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBwbGFudFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHBsYW50LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMl0pLm1hcChzcXVhcmUpO1xuICAgICAqIHZhciBvdGhlciA9IHdyYXBwZWQucGxhbnQoWzMsIDRdKTtcbiAgICAgKlxuICAgICAqIG90aGVyLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzksIDE2XVxuICAgICAqXG4gICAgICogd3JhcHBlZC52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsxLCA0XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJQbGFudCh2YWx1ZSkge1xuICAgICAgdmFyIHJlc3VsdCxcbiAgICAgICAgICBwYXJlbnQgPSB0aGlzO1xuXG4gICAgICB3aGlsZSAocGFyZW50IGluc3RhbmNlb2YgYmFzZUxvZGFzaCkge1xuICAgICAgICB2YXIgY2xvbmUgPSB3cmFwcGVyQ2xvbmUocGFyZW50KTtcbiAgICAgICAgY2xvbmUuX19pbmRleF9fID0gMDtcbiAgICAgICAgY2xvbmUuX192YWx1ZXNfXyA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHByZXZpb3VzLl9fd3JhcHBlZF9fID0gY2xvbmU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gY2xvbmU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHByZXZpb3VzID0gY2xvbmU7XG4gICAgICAgIHBhcmVudCA9IHBhcmVudC5fX3dyYXBwZWRfXztcbiAgICAgIH1cbiAgICAgIHByZXZpb3VzLl9fd3JhcHBlZF9fID0gdmFsdWU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHRoZSB3cmFwcGVyIHZlcnNpb24gb2YgYF8ucmV2ZXJzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyB0aGUgd3JhcHBlZCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBuYW1lIHJldmVyc2VcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqXG4gICAgICogXyhhcnJheSkucmV2ZXJzZSgpLnZhbHVlKClcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyUmV2ZXJzZSgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX193cmFwcGVkX187XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikge1xuICAgICAgICB2YXIgd3JhcHBlZCA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgpIHtcbiAgICAgICAgICB3cmFwcGVkID0gbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHdyYXBwZWQgPSB3cmFwcGVkLnJldmVyc2UoKTtcbiAgICAgICAgd3JhcHBlZC5fX2FjdGlvbnNfXy5wdXNoKHtcbiAgICAgICAgICAnZnVuYyc6IHRocnUsXG4gICAgICAgICAgJ2FyZ3MnOiBbcmV2ZXJzZV0sXG4gICAgICAgICAgJ3RoaXNBcmcnOiB1bmRlZmluZWRcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih3cmFwcGVkLCB0aGlzLl9fY2hhaW5fXyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy50aHJ1KHJldmVyc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIHRoZSBjaGFpbiBzZXF1ZW5jZSB0byByZXNvbHZlIHRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSB2YWx1ZVxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGFsaWFzIHRvSlNPTiwgdmFsdWVPZlxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfKFsxLCAyLCAzXSkudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyVmFsdWUoKSB7XG4gICAgICByZXR1cm4gYmFzZVdyYXBwZXJWYWx1ZSh0aGlzLl9fd3JhcHBlZF9fLCB0aGlzLl9fYWN0aW9uc19fKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiBrZXlzIGdlbmVyYXRlZCBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmdcbiAgICAgKiBlYWNoIGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYC4gVGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgb2ZcbiAgICAgKiBlYWNoIGtleSBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBrZXkgd2FzIHJldHVybmVkIGJ5IGBpdGVyYXRlZWAuIFRoZVxuICAgICAqIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC41LjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbXBvc2VkIGFnZ3JlZ2F0ZSBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY291bnRCeShbNi4xLCA0LjIsIDYuM10sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IHsgJzQnOiAxLCAnNic6IDIgfVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5jb3VudEJ5KFsnb25lJywgJ3R3bycsICd0aHJlZSddLCAnbGVuZ3RoJyk7XG4gICAgICogLy8gPT4geyAnMyc6IDIsICc1JzogMSB9XG4gICAgICovXG4gICAgdmFyIGNvdW50QnkgPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCBrZXkpKSB7XG4gICAgICAgICsrcmVzdWx0W2tleV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBrZXksIDEpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciAqKmFsbCoqIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBJdGVyYXRpb24gaXMgc3RvcHBlZCBvbmNlIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIHJldHVybnMgYHRydWVgIGZvclxuICAgICAqIFtlbXB0eSBjb2xsZWN0aW9uc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW1wdHlfc2V0KSBiZWNhdXNlXG4gICAgICogW2V2ZXJ5dGhpbmcgaXMgdHJ1ZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmFjdW91c190cnV0aCkgb2ZcbiAgICAgKiBlbGVtZW50cyBvZiBlbXB0eSBjb2xsZWN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbGwgZWxlbWVudHMgcGFzcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZXZlcnkoW3RydWUsIDEsIG51bGwsICd5ZXMnXSwgQm9vbGVhbik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZXZlcnkodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5ldmVyeSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZXZlcnkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGV2ZXJ5KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZ3VhcmQpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RXZlcnkgOiBiYXNlRXZlcnk7XG4gICAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBndWFyZCkpIHtcbiAgICAgICAgcHJlZGljYXRlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAsIHJldHVybmluZyBhbiBhcnJheSBvZiBhbGwgZWxlbWVudHNcbiAgICAgKiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnJlbW92ZWAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gICAgICogQHNlZSBfLnJlamVjdFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcih1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIENvbWJpbmluZyBzZXZlcmFsIHByZWRpY2F0ZXMgdXNpbmcgYF8ub3ZlckV2ZXJ5YCBvciBgXy5vdmVyU29tZWAuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIF8ub3ZlclNvbWUoW3sgJ2FnZSc6IDM2IH0sIFsnYWdlJywgNDBdXSkpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdiYXJuZXknXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbHRlcihjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gLCByZXR1cm5pbmcgdGhlIGZpcnN0IGVsZW1lbnRcbiAgICAgKiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF0Y2hlZCBlbGVtZW50LCBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEsICAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2UgPCA0MDsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0IGZvciAnYmFybmV5J1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmQodXNlcnMsIHsgJ2FnZSc6IDEsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ3BlYmJsZXMnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0IGZvciAnZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ2Jhcm5leSdcbiAgICAgKi9cbiAgICB2YXIgZmluZCA9IGNyZWF0ZUZpbmQoZmluZEluZGV4KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PWNvbGxlY3Rpb24ubGVuZ3RoLTFdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF0Y2hlZCBlbGVtZW50LCBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZpbmRMYXN0KFsxLCAyLCAzLCA0XSwgZnVuY3Rpb24obikge1xuICAgICAqICAgcmV0dXJuIG4gJSAyID09IDE7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIHZhciBmaW5kTGFzdCA9IGNyZWF0ZUZpbmQoZmluZExhc3RJbmRleCk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZmxhdHRlbmVkIGFycmF5IG9mIHZhbHVlcyBieSBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmBcbiAgICAgKiB0aHJ1IGBpdGVyYXRlZWAgYW5kIGZsYXR0ZW5pbmcgdGhlIG1hcHBlZCByZXN1bHRzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGR1cGxpY2F0ZShuKSB7XG4gICAgICogICByZXR1cm4gW24sIG5dO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8uZmxhdE1hcChbMSwgMl0sIGR1cGxpY2F0ZSk7XG4gICAgICogLy8gPT4gWzEsIDEsIDIsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdE1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSksIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmxhdE1hcGAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgZmxhdHRlbnMgdGhlXG4gICAgICogbWFwcGVkIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGR1cGxpY2F0ZShuKSB7XG4gICAgICogICByZXR1cm4gW1tbbiwgbl1dXTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZsYXRNYXBEZWVwKFsxLCAyXSwgZHVwbGljYXRlKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMiwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0TWFwRGVlcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSksIElORklOSVRZKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZsYXRNYXBgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGZsYXR0ZW5zIHRoZVxuICAgICAqIG1hcHBlZCByZXN1bHRzIHVwIHRvIGBkZXB0aGAgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RlcHRoPTFdIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGR1cGxpY2F0ZShuKSB7XG4gICAgICogICByZXR1cm4gW1tbbiwgbl1dXTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZsYXRNYXBEZXB0aChbMSwgMl0sIGR1cGxpY2F0ZSwgMik7XG4gICAgICogLy8gPT4gW1sxLCAxXSwgWzIsIDJdXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXRNYXBEZXB0aChjb2xsZWN0aW9uLCBpdGVyYXRlZSwgZGVwdGgpIHtcbiAgICAgIGRlcHRoID0gZGVwdGggPT09IHVuZGVmaW5lZCA/IDEgOiB0b0ludGVnZXIoZGVwdGgpO1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSksIGRlcHRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIGVsZW1lbnQuXG4gICAgICogVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogQXMgd2l0aCBvdGhlciBcIkNvbGxlY3Rpb25zXCIgbWV0aG9kcywgb2JqZWN0cyB3aXRoIGEgXCJsZW5ndGhcIlxuICAgICAqIHByb3BlcnR5IGFyZSBpdGVyYXRlZCBsaWtlIGFycmF5cy4gVG8gYXZvaWQgdGhpcyBiZWhhdmlvciB1c2UgYF8uZm9ySW5gXG4gICAgICogb3IgYF8uZm9yT3duYCBmb3Igb2JqZWN0IGl0ZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBhbGlhcyBlYWNoXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICogQHNlZSBfLmZvckVhY2hSaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZvckVhY2goWzEsIDJdLCBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAqICAgY29uc29sZS5sb2codmFsdWUpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgYDFgIHRoZW4gYDJgLlxuICAgICAqXG4gICAgICogXy5mb3JFYWNoKHsgJ2EnOiAxLCAnYic6IDIgfSwgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdhJyB0aGVuICdiJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JFYWNoKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUVhY2ggOiBiYXNlRWFjaDtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mb3JFYWNoYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYGNvbGxlY3Rpb25gIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBhbGlhcyBlYWNoUmlnaHRcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBAc2VlIF8uZm9yRWFjaFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZvckVhY2hSaWdodChbMSwgMl0sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyBgMmAgdGhlbiBgMWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9yRWFjaFJpZ2h0KGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUVhY2hSaWdodCA6IGJhc2VFYWNoUmlnaHQ7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIGtleXMgZ2VuZXJhdGVkIGZyb20gdGhlIHJlc3VsdHMgb2YgcnVubmluZ1xuICAgICAqIGVhY2ggZWxlbWVudCBvZiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgb3JkZXIgb2YgZ3JvdXBlZCB2YWx1ZXNcbiAgICAgKiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIGBjb2xsZWN0aW9uYC4gVGhlIGNvcnJlc3BvbmRpbmdcbiAgICAgKiB2YWx1ZSBvZiBlYWNoIGtleSBpcyBhbiBhcnJheSBvZiBlbGVtZW50cyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGVcbiAgICAgKiBrZXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb21wb3NlZCBhZ2dyZWdhdGUgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmdyb3VwQnkoWzYuMSwgNC4yLCA2LjNdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiB7ICc0JzogWzQuMl0sICc2JzogWzYuMSwgNi4zXSB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmdyb3VwQnkoWydvbmUnLCAndHdvJywgJ3RocmVlJ10sICdsZW5ndGgnKTtcbiAgICAgKiAvLyA9PiB7ICczJzogWydvbmUnLCAndHdvJ10sICc1JzogWyd0aHJlZSddIH1cbiAgICAgKi9cbiAgICB2YXIgZ3JvdXBCeSA9IGNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChyZXN1bHQsIGtleSkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0ucHVzaCh2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBrZXksIFt2YWx1ZV0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgaW4gYGNvbGxlY3Rpb25gLiBJZiBgY29sbGVjdGlvbmAgaXMgYSBzdHJpbmcsIGl0J3NcbiAgICAgKiBjaGVja2VkIGZvciBhIHN1YnN0cmluZyBvZiBgdmFsdWVgLCBvdGhlcndpc2VcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGlzIHVzZWQgZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBJZiBgZnJvbUluZGV4YCBpcyBuZWdhdGl2ZSwgaXQncyB1c2VkIGFzXG4gICAgICogdGhlIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdHxzdHJpbmd9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5yZWR1Y2VgLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW5jbHVkZXMoWzEsIDIsIDNdLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKFsxLCAyLCAzXSwgMSwgMik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5jbHVkZXMoeyAnYSc6IDEsICdiJzogMiB9LCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKCdhYmNkJywgJ2JjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluY2x1ZGVzKGNvbGxlY3Rpb24sIHZhbHVlLCBmcm9tSW5kZXgsIGd1YXJkKSB7XG4gICAgICBjb2xsZWN0aW9uID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBjb2xsZWN0aW9uIDogdmFsdWVzKGNvbGxlY3Rpb24pO1xuICAgICAgZnJvbUluZGV4ID0gKGZyb21JbmRleCAmJiAhZ3VhcmQpID8gdG9JbnRlZ2VyKGZyb21JbmRleCkgOiAwO1xuXG4gICAgICB2YXIgbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7XG4gICAgICBpZiAoZnJvbUluZGV4IDwgMCkge1xuICAgICAgICBmcm9tSW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgZnJvbUluZGV4LCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc1N0cmluZyhjb2xsZWN0aW9uKVxuICAgICAgICA/IChmcm9tSW5kZXggPD0gbGVuZ3RoICYmIGNvbGxlY3Rpb24uaW5kZXhPZih2YWx1ZSwgZnJvbUluZGV4KSA+IC0xKVxuICAgICAgICA6ICghIWxlbmd0aCAmJiBiYXNlSW5kZXhPZihjb2xsZWN0aW9uLCB2YWx1ZSwgZnJvbUluZGV4KSA+IC0xKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VzIHRoZSBtZXRob2QgYXQgYHBhdGhgIG9mIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAsIHJldHVybmluZ1xuICAgICAqIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mIGVhY2ggaW52b2tlZCBtZXRob2QuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgICAqIGFyZSBwcm92aWRlZCB0byBlYWNoIGludm9rZWQgbWV0aG9kLiBJZiBgcGF0aGAgaXMgYSBmdW5jdGlvbiwgaXQncyBpbnZva2VkXG4gICAgICogZm9yLCBhbmQgYHRoaXNgIGJvdW5kIHRvLCBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtBcnJheXxGdW5jdGlvbnxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIG1ldGhvZCB0byBpbnZva2Ugb3JcbiAgICAgKiAgdGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBlYWNoIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbnZva2VNYXAoW1s1LCAxLCA3XSwgWzMsIDIsIDFdXSwgJ3NvcnQnKTtcbiAgICAgKiAvLyA9PiBbWzEsIDUsIDddLCBbMSwgMiwgM11dXG4gICAgICpcbiAgICAgKiBfLmludm9rZU1hcChbMTIzLCA0NTZdLCBTdHJpbmcucHJvdG90eXBlLnNwbGl0LCAnJyk7XG4gICAgICogLy8gPT4gW1snMScsICcyJywgJzMnXSwgWyc0JywgJzUnLCAnNiddXVxuICAgICAqL1xuICAgIHZhciBpbnZva2VNYXAgPSBiYXNlUmVzdChmdW5jdGlvbihjb2xsZWN0aW9uLCBwYXRoLCBhcmdzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpc0Z1bmMgPSB0eXBlb2YgcGF0aCA9PSAnZnVuY3Rpb24nLFxuICAgICAgICAgIHJlc3VsdCA9IGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pID8gQXJyYXkoY29sbGVjdGlvbi5sZW5ndGgpIDogW107XG5cbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHJlc3VsdFsrK2luZGV4XSA9IGlzRnVuYyA/IGFwcGx5KHBhdGgsIHZhbHVlLCBhcmdzKSA6IGJhc2VJbnZva2UodmFsdWUsIHBhdGgsIGFyZ3MpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2Yga2V5cyBnZW5lcmF0ZWQgZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nXG4gICAgICogZWFjaCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIG9mXG4gICAgICogZWFjaCBrZXkgaXMgdGhlIGxhc3QgZWxlbWVudCByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGUga2V5LiBUaGVcbiAgICAgKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb21wb3NlZCBhZ2dyZWdhdGUgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbXG4gICAgICogICB7ICdkaXInOiAnbGVmdCcsICdjb2RlJzogOTcgfSxcbiAgICAgKiAgIHsgJ2Rpcic6ICdyaWdodCcsICdjb2RlJzogMTAwIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5rZXlCeShhcnJheSwgZnVuY3Rpb24obykge1xuICAgICAqICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoby5jb2RlKTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogeyAnZGlyJzogJ2xlZnQnLCAnY29kZSc6IDk3IH0sICdkJzogeyAnZGlyJzogJ3JpZ2h0JywgJ2NvZGUnOiAxMDAgfSB9XG4gICAgICpcbiAgICAgKiBfLmtleUJ5KGFycmF5LCAnZGlyJyk7XG4gICAgICogLy8gPT4geyAnbGVmdCc6IHsgJ2Rpcic6ICdsZWZ0JywgJ2NvZGUnOiA5NyB9LCAncmlnaHQnOiB7ICdkaXInOiAncmlnaHQnLCAnY29kZSc6IDEwMCB9IH1cbiAgICAgKi9cbiAgICB2YXIga2V5QnkgPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCB2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHZhbHVlcyBieSBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydVxuICAgICAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICAgICAqICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIE1hbnkgbG9kYXNoIG1ldGhvZHMgYXJlIGd1YXJkZWQgdG8gd29yayBhcyBpdGVyYXRlZXMgZm9yIG1ldGhvZHMgbGlrZVxuICAgICAqIGBfLmV2ZXJ5YCwgYF8uZmlsdGVyYCwgYF8ubWFwYCwgYF8ubWFwVmFsdWVzYCwgYF8ucmVqZWN0YCwgYW5kIGBfLnNvbWVgLlxuICAgICAqXG4gICAgICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gICAgICogYGFyeWAsIGBjaHVua2AsIGBjdXJyeWAsIGBjdXJyeVJpZ2h0YCwgYGRyb3BgLCBgZHJvcFJpZ2h0YCwgYGV2ZXJ5YCxcbiAgICAgKiBgZmlsbGAsIGBpbnZlcnRgLCBgcGFyc2VJbnRgLCBgcmFuZG9tYCwgYHJhbmdlYCwgYHJhbmdlUmlnaHRgLCBgcmVwZWF0YCxcbiAgICAgKiBgc2FtcGxlU2l6ZWAsIGBzbGljZWAsIGBzb21lYCwgYHNvcnRCeWAsIGBzcGxpdGAsIGB0YWtlYCwgYHRha2VSaWdodGAsXG4gICAgICogYHRlbXBsYXRlYCwgYHRyaW1gLCBgdHJpbUVuZGAsIGB0cmltU3RhcnRgLCBhbmQgYHdvcmRzYFxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8ubWFwKFs0LCA4XSwgc3F1YXJlKTtcbiAgICAgKiAvLyA9PiBbMTYsIDY0XVxuICAgICAqXG4gICAgICogXy5tYXAoeyAnYSc6IDQsICdiJzogOCB9LCBzcXVhcmUpO1xuICAgICAqIC8vID0+IFsxNiwgNjRdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1hcCh1c2VycywgJ3VzZXInKTtcbiAgICAgKiAvLyA9PiBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5TWFwIDogYmFzZU1hcDtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zb3J0QnlgIGV4Y2VwdCB0aGF0IGl0IGFsbG93cyBzcGVjaWZ5aW5nIHRoZSBzb3J0XG4gICAgICogb3JkZXJzIG9mIHRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS4gSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXNcbiAgICAgKiBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4gT3RoZXJ3aXNlLCBzcGVjaWZ5IGFuIG9yZGVyIG9mIFwiZGVzY1wiIGZvclxuICAgICAqIGRlc2NlbmRpbmcgb3IgXCJhc2NcIiBmb3IgYXNjZW5kaW5nIHNvcnQgb3JkZXIgb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0FycmF5W118RnVuY3Rpb25bXXxPYmplY3RbXXxzdHJpbmdbXX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbb3JkZXJzXSBUaGUgc29ydCBvcmRlcnMgb2YgYGl0ZXJhdGVlc2AuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ucmVkdWNlYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQ4IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNCB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gU29ydCBieSBgdXNlcmAgaW4gYXNjZW5kaW5nIG9yZGVyIGFuZCBieSBgYWdlYCBpbiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgICAqIF8ub3JkZXJCeSh1c2VycywgWyd1c2VyJywgJ2FnZSddLCBbJ2FzYycsICdkZXNjJ10pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM2XSwgWydiYXJuZXknLCAzNF0sIFsnZnJlZCcsIDQ4XSwgWydmcmVkJywgNDBdXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9yZGVyQnkoY29sbGVjdGlvbiwgaXRlcmF0ZWVzLCBvcmRlcnMsIGd1YXJkKSB7XG4gICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNBcnJheShpdGVyYXRlZXMpKSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IGl0ZXJhdGVlcyA9PSBudWxsID8gW10gOiBbaXRlcmF0ZWVzXTtcbiAgICAgIH1cbiAgICAgIG9yZGVycyA9IGd1YXJkID8gdW5kZWZpbmVkIDogb3JkZXJzO1xuICAgICAgaWYgKCFpc0FycmF5KG9yZGVycykpIHtcbiAgICAgICAgb3JkZXJzID0gb3JkZXJzID09IG51bGwgPyBbXSA6IFtvcmRlcnNdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGl0ZXJhdGVlcywgb3JkZXJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzIHNwbGl0IGludG8gdHdvIGdyb3VwcywgdGhlIGZpcnN0IG9mIHdoaWNoXG4gICAgICogY29udGFpbnMgZWxlbWVudHMgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLCB0aGUgc2Vjb25kIG9mIHdoaWNoXG4gICAgICogY29udGFpbnMgZWxlbWVudHMgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkgZm9yLiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSwgICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snZnJlZCddLCBbJ2Jhcm5leScsICdwZWJibGVzJ11dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCB7ICdhZ2UnOiAxLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1sncGViYmxlcyddLCBbJ2Jhcm5leScsICdmcmVkJ11dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5wYXJ0aXRpb24odXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAncGViYmxlcyddLCBbJ2ZyZWQnXV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snZnJlZCddLCBbJ2Jhcm5leScsICdwZWJibGVzJ11dXG4gICAgICovXG4gICAgdmFyIHBhcnRpdGlvbiA9IGNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICByZXN1bHRba2V5ID8gMCA6IDFdLnB1c2godmFsdWUpO1xuICAgIH0sIGZ1bmN0aW9uKCkgeyByZXR1cm4gW1tdLCBbXV07IH0pO1xuXG4gICAgLyoqXG4gICAgICogUmVkdWNlcyBgY29sbGVjdGlvbmAgdG8gYSB2YWx1ZSB3aGljaCBpcyB0aGUgYWNjdW11bGF0ZWQgcmVzdWx0IG9mIHJ1bm5pbmdcbiAgICAgKiBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYCwgd2hlcmUgZWFjaCBzdWNjZXNzaXZlXG4gICAgICogaW52b2NhdGlvbiBpcyBzdXBwbGllZCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcmV2aW91cy4gSWYgYGFjY3VtdWxhdG9yYFxuICAgICAqIGlzIG5vdCBnaXZlbiwgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIGlzIHVzZWQgYXMgdGhlIGluaXRpYWxcbiAgICAgKiB2YWx1ZS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBmb3VyIGFyZ3VtZW50czpcbiAgICAgKiAoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogTWFueSBsb2Rhc2ggbWV0aG9kcyBhcmUgZ3VhcmRlZCB0byB3b3JrIGFzIGl0ZXJhdGVlcyBmb3IgbWV0aG9kcyBsaWtlXG4gICAgICogYF8ucmVkdWNlYCwgYF8ucmVkdWNlUmlnaHRgLCBhbmQgYF8udHJhbnNmb3JtYC5cbiAgICAgKlxuICAgICAqIFRoZSBndWFyZGVkIG1ldGhvZHMgYXJlOlxuICAgICAqIGBhc3NpZ25gLCBgZGVmYXVsdHNgLCBgZGVmYXVsdHNEZWVwYCwgYGluY2x1ZGVzYCwgYG1lcmdlYCwgYG9yZGVyQnlgLFxuICAgICAqIGFuZCBgc29ydEJ5YFxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8ucmVkdWNlUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yZWR1Y2UoWzEsIDJdLCBmdW5jdGlvbihzdW0sIG4pIHtcbiAgICAgKiAgIHJldHVybiBzdW0gKyBuO1xuICAgICAqIH0sIDApO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8ucmVkdWNlKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gICAgICogICByZXR1cm4gcmVzdWx0O1xuICAgICAqIH0sIHt9KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlSZWR1Y2UgOiBiYXNlUmVkdWNlLFxuICAgICAgICAgIGluaXRBY2N1bSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzO1xuXG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgNCksIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGJhc2VFYWNoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnJlZHVjZWAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5yZWR1Y2VcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW1swLCAxXSwgWzIsIDNdLCBbNCwgNV1dO1xuICAgICAqXG4gICAgICogXy5yZWR1Y2VSaWdodChhcnJheSwgZnVuY3Rpb24oZmxhdHRlbmVkLCBvdGhlcikge1xuICAgICAqICAgcmV0dXJuIGZsYXR0ZW5lZC5jb25jYXQob3RoZXIpO1xuICAgICAqIH0sIFtdKTtcbiAgICAgKiAvLyA9PiBbNCwgNSwgMiwgMywgMCwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZWR1Y2VSaWdodChjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5UmVkdWNlUmlnaHQgOiBiYXNlUmVkdWNlLFxuICAgICAgICAgIGluaXRBY2N1bSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzO1xuXG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgNCksIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGJhc2VFYWNoUmlnaHQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5maWx0ZXJgOyB0aGlzIG1ldGhvZCByZXR1cm5zIHRoZSBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmBcbiAgICAgKiB0aGF0IGBwcmVkaWNhdGVgIGRvZXMgKipub3QqKiByZXR1cm4gdHJ1dGh5IGZvci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAgICAgKiBAc2VlIF8uZmlsdGVyXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCB7ICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlamVjdChjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIHJhbmRvbSBlbGVtZW50IGZyb20gYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzYW1wbGUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNhbXBsZShbMSwgMiwgMywgNF0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzYW1wbGUoY29sbGVjdGlvbikge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlTYW1wbGUgOiBiYXNlU2FtcGxlO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBgbmAgcmFuZG9tIGVsZW1lbnRzIGF0IHVuaXF1ZSBrZXlzIGZyb20gYGNvbGxlY3Rpb25gIHVwIHRvIHRoZVxuICAgICAqIHNpemUgb2YgYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzYW1wbGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc2FtcGxlU2l6ZShbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFszLCAxXVxuICAgICAqXG4gICAgICogXy5zYW1wbGVTaXplKFsxLCAyLCAzXSwgNCk7XG4gICAgICogLy8gPT4gWzIsIDMsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2FtcGxlU2l6ZShjb2xsZWN0aW9uLCBuLCBndWFyZCkge1xuICAgICAgaWYgKChndWFyZCA/IGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIG4sIGd1YXJkKSA6IG4gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgbiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgfVxuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlTYW1wbGVTaXplIDogYmFzZVNhbXBsZVNpemU7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHNodWZmbGVkIHZhbHVlcywgdXNpbmcgYSB2ZXJzaW9uIG9mIHRoZVxuICAgICAqIFtGaXNoZXItWWF0ZXMgc2h1ZmZsZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlzaGVyLVlhdGVzX3NodWZmbGUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNodWZmbGUoWzEsIDIsIDMsIDRdKTtcbiAgICAgKiAvLyA9PiBbNCwgMSwgMywgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzaHVmZmxlKGNvbGxlY3Rpb24pIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5U2h1ZmZsZSA6IGJhc2VTaHVmZmxlO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgc2l6ZSBvZiBgY29sbGVjdGlvbmAgYnkgcmV0dXJuaW5nIGl0cyBsZW5ndGggZm9yIGFycmF5LWxpa2VcbiAgICAgKiB2YWx1ZXMgb3IgdGhlIG51bWJlciBvZiBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBmb3Igb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R8c3RyaW5nfSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29sbGVjdGlvbiBzaXplLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNpemUoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnNpemUoeyAnYSc6IDEsICdiJzogMiB9KTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiBfLnNpemUoJ3BlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiA3XG4gICAgICovXG4gICAgZnVuY3Rpb24gc2l6ZShjb2xsZWN0aW9uKSB7XG4gICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICAgIHJldHVybiBpc1N0cmluZyhjb2xsZWN0aW9uKSA/IHN0cmluZ1NpemUoY29sbGVjdGlvbikgOiBjb2xsZWN0aW9uLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHZhciB0YWcgPSBnZXRUYWcoY29sbGVjdGlvbik7XG4gICAgICBpZiAodGFnID09IG1hcFRhZyB8fCB0YWcgPT0gc2V0VGFnKSB7XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uLnNpemU7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUtleXMoY29sbGVjdGlvbikubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgKiphbnkqKiBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBJdGVyYXRpb24gaXMgc3RvcHBlZCBvbmNlIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29tZShbbnVsbCwgMCwgJ3llcycsIGZhbHNlXSwgQm9vbGVhbik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc29tZSh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvbWUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvbWUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29tZShjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGd1YXJkKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVNvbWUgOiBiYXNlU29tZTtcbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGd1YXJkKSkge1xuICAgICAgICBwcmVkaWNhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzLCBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IHRoZSByZXN1bHRzIG9mXG4gICAgICogcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYSBjb2xsZWN0aW9uIHRocnUgZWFjaCBpdGVyYXRlZS4gVGhpcyBtZXRob2RcbiAgICAgKiBwZXJmb3JtcyBhIHN0YWJsZSBzb3J0LCB0aGF0IGlzLCBpdCBwcmVzZXJ2ZXMgdGhlIG9yaWdpbmFsIHNvcnQgb3JkZXIgb2ZcbiAgICAgKiBlcXVhbCBlbGVtZW50cy4gVGhlIGl0ZXJhdGVlcyBhcmUgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDggfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiAzMCB9LFxuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzQgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnNvcnRCeSh1c2VycywgW2Z1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlcjsgfV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM2XSwgWydiYXJuZXknLCAzNF0sIFsnZnJlZCcsIDQ4XSwgWydmcmVkJywgMzBdXVxuICAgICAqXG4gICAgICogXy5zb3J0QnkodXNlcnMsIFsndXNlcicsICdhZ2UnXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzRdLCBbJ2Jhcm5leScsIDM2XSwgWydmcmVkJywgMzBdLCBbJ2ZyZWQnLCA0OF1dXG4gICAgICovXG4gICAgdmFyIHNvcnRCeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGl0ZXJhdGVlcykge1xuICAgICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gaXRlcmF0ZWVzLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggPiAxICYmIGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIGl0ZXJhdGVlc1swXSwgaXRlcmF0ZWVzWzFdKSkge1xuICAgICAgICBpdGVyYXRlZXMgPSBbXTtcbiAgICAgIH0gZWxzZSBpZiAobGVuZ3RoID4gMiAmJiBpc0l0ZXJhdGVlQ2FsbChpdGVyYXRlZXNbMF0sIGl0ZXJhdGVlc1sxXSwgaXRlcmF0ZWVzWzJdKSkge1xuICAgICAgICBpdGVyYXRlZXMgPSBbaXRlcmF0ZWVzWzBdXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBiYXNlRmxhdHRlbihpdGVyYXRlZXMsIDEpLCBbXSk7XG4gICAgfSk7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB0aW1lc3RhbXAgb2YgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdGhhdCBoYXZlIGVsYXBzZWQgc2luY2VcbiAgICAgKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBEYXRlXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gICAgICogICBjb25zb2xlLmxvZyhfLm5vdygpIC0gc3RhbXApO1xuICAgICAqIH0sIF8ubm93KCkpO1xuICAgICAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gICAgICovXG4gICAgdmFyIG5vdyA9IGN0eE5vdyB8fCBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiByb290LkRhdGUubm93KCk7XG4gICAgfTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5iZWZvcmVgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzXG4gICAgICogYGZ1bmNgIG9uY2UgaXQncyBjYWxsZWQgYG5gIG9yIG1vcmUgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGNhbGxzIGJlZm9yZSBgZnVuY2AgaXMgaW52b2tlZC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZXN0cmljdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgc2F2ZXMgPSBbJ3Byb2ZpbGUnLCAnc2V0dGluZ3MnXTtcbiAgICAgKlxuICAgICAqIHZhciBkb25lID0gXy5hZnRlcihzYXZlcy5sZW5ndGgsIGZ1bmN0aW9uKCkge1xuICAgICAqICAgY29uc29sZS5sb2coJ2RvbmUgc2F2aW5nIScpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogXy5mb3JFYWNoKHNhdmVzLCBmdW5jdGlvbih0eXBlKSB7XG4gICAgICogICBhc3luY1NhdmUoeyAndHlwZSc6IHR5cGUsICdjb21wbGV0ZSc6IGRvbmUgfSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnZG9uZSBzYXZpbmchJyBhZnRlciB0aGUgdHdvIGFzeW5jIHNhdmVzIGhhdmUgY29tcGxldGVkLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFmdGVyKG4sIGZ1bmMpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICgtLW4gPCAxKSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCwgd2l0aCB1cCB0byBgbmAgYXJndW1lbnRzLFxuICAgICAqIGlnbm9yaW5nIGFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj1mdW5jLmxlbmd0aF0gVGhlIGFyaXR5IGNhcC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXAoWyc2JywgJzgnLCAnMTAnXSwgXy5hcnkocGFyc2VJbnQsIDEpKTtcbiAgICAgKiAvLyA9PiBbNiwgOCwgMTBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXJ5KGZ1bmMsIG4sIGd1YXJkKSB7XG4gICAgICBuID0gZ3VhcmQgPyB1bmRlZmluZWQgOiBuO1xuICAgICAgbiA9IChmdW5jICYmIG4gPT0gbnVsbCkgPyBmdW5jLmxlbmd0aCA6IG47XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX0FSWV9GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgLCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzXG4gICAgICogb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24sIHdoaWxlIGl0J3MgY2FsbGVkIGxlc3MgdGhhbiBgbmAgdGltZXMuIFN1YnNlcXVlbnRcbiAgICAgKiBjYWxscyB0byB0aGUgY3JlYXRlZCBmdW5jdGlvbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2AgaW52b2NhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgY2FsbHMgYXQgd2hpY2ggYGZ1bmNgIGlzIG5vIGxvbmdlciBpbnZva2VkLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJlc3RyaWN0ZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmJlZm9yZSg1LCBhZGRDb250YWN0VG9MaXN0KSk7XG4gICAgICogLy8gPT4gQWxsb3dzIGFkZGluZyB1cCB0byA0IGNvbnRhY3RzIHRvIHRoZSBsaXN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJlZm9yZShuLCBmdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0O1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKC0tbiA+IDApIHtcbiAgICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4gPD0gMSkge1xuICAgICAgICAgIGZ1bmMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgXG4gICAgICogYW5kIGBwYXJ0aWFsc2AgcHJlcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uYmluZC5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljIGJ1aWxkcyxcbiAgICAgKiBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIG5hdGl2ZSBgRnVuY3Rpb24jYmluZGAsIHRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiXG4gICAgICogcHJvcGVydHkgb2YgYm91bmQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYmluZC5cbiAgICAgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0gey4uLip9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBib3VuZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZ3JlZXQoZ3JlZXRpbmcsIHB1bmN0dWF0aW9uKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyB0aGlzLnVzZXIgKyBwdW5jdHVhdGlvbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAndXNlcic6ICdmcmVkJyB9O1xuICAgICAqXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kKGdyZWV0LCBvYmplY3QsICdoaScpO1xuICAgICAqIGJvdW5kKCchJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQhJ1xuICAgICAqXG4gICAgICogLy8gQm91bmQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kKGdyZWV0LCBvYmplY3QsIF8sICchJyk7XG4gICAgICogYm91bmQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQhJ1xuICAgICAqL1xuICAgIHZhciBiaW5kID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgdGhpc0FyZywgcGFydGlhbHMpIHtcbiAgICAgIHZhciBiaXRtYXNrID0gV1JBUF9CSU5EX0ZMQUc7XG4gICAgICBpZiAocGFydGlhbHMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBob2xkZXJzID0gcmVwbGFjZUhvbGRlcnMocGFydGlhbHMsIGdldEhvbGRlcihiaW5kKSk7XG4gICAgICAgIGJpdG1hc2sgfD0gV1JBUF9QQVJUSUFMX0ZMQUc7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscywgaG9sZGVycyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBtZXRob2QgYXQgYG9iamVjdFtrZXldYCB3aXRoIGBwYXJ0aWFsc2BcbiAgICAgKiBwcmVwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSBgXy5iaW5kYCBieSBhbGxvd2luZyBib3VuZCBmdW5jdGlvbnMgdG8gcmVmZXJlbmNlXG4gICAgICogbWV0aG9kcyB0aGF0IG1heSBiZSByZWRlZmluZWQgb3IgZG9uJ3QgeWV0IGV4aXN0LiBTZWVcbiAgICAgKiBbUGV0ZXIgTWljaGF1eCdzIGFydGljbGVdKGh0dHA6Ly9wZXRlci5taWNoYXV4LmNhL2FydGljbGVzL2xhenktZnVuY3Rpb24tZGVmaW5pdGlvbi1wYXR0ZXJuKVxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uYmluZEtleS5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljXG4gICAgICogYnVpbGRzLCBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGludm9rZSB0aGUgbWV0aG9kIG9uLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgbWV0aG9kLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJvdW5kIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge1xuICAgICAqICAgJ3VzZXInOiAnZnJlZCcsXG4gICAgICogICAnZ3JlZXQnOiBmdW5jdGlvbihncmVldGluZywgcHVuY3R1YXRpb24pIHtcbiAgICAgKiAgICAgcmV0dXJuIGdyZWV0aW5nICsgJyAnICsgdGhpcy51c2VyICsgcHVuY3R1YXRpb247XG4gICAgICogICB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBib3VuZCA9IF8uYmluZEtleShvYmplY3QsICdncmVldCcsICdoaScpO1xuICAgICAqIGJvdW5kKCchJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQhJ1xuICAgICAqXG4gICAgICogb2JqZWN0LmdyZWV0ID0gZnVuY3Rpb24oZ3JlZXRpbmcsIHB1bmN0dWF0aW9uKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAneWEgJyArIHRoaXMudXNlciArIHB1bmN0dWF0aW9uO1xuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBib3VuZCgnIScpO1xuICAgICAqIC8vID0+ICdoaXlhIGZyZWQhJ1xuICAgICAqXG4gICAgICogLy8gQm91bmQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kS2V5KG9iamVjdCwgJ2dyZWV0JywgXywgJyEnKTtcbiAgICAgKiBib3VuZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGl5YSBmcmVkISdcbiAgICAgKi9cbiAgICB2YXIgYmluZEtleSA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwga2V5LCBwYXJ0aWFscykge1xuICAgICAgdmFyIGJpdG1hc2sgPSBXUkFQX0JJTkRfRkxBRyB8IFdSQVBfQklORF9LRVlfRkxBRztcbiAgICAgIGlmIChwYXJ0aWFscy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGhvbGRlcnMgPSByZXBsYWNlSG9sZGVycyhwYXJ0aWFscywgZ2V0SG9sZGVyKGJpbmRLZXkpKTtcbiAgICAgICAgYml0bWFzayB8PSBXUkFQX1BBUlRJQUxfRkxBRztcbiAgICAgIH1cbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGtleSwgYml0bWFzaywgb2JqZWN0LCBwYXJ0aWFscywgaG9sZGVycyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGFyZ3VtZW50cyBvZiBgZnVuY2AgYW5kIGVpdGhlciBpbnZva2VzXG4gICAgICogYGZ1bmNgIHJldHVybmluZyBpdHMgcmVzdWx0LCBpZiBhdCBsZWFzdCBgYXJpdHlgIG51bWJlciBvZiBhcmd1bWVudHMgaGF2ZVxuICAgICAqIGJlZW4gcHJvdmlkZWQsIG9yIHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIHJlbWFpbmluZyBgZnVuY2BcbiAgICAgKiBhcmd1bWVudHMsIGFuZCBzbyBvbi4gVGhlIGFyaXR5IG9mIGBmdW5jYCBtYXkgYmUgc3BlY2lmaWVkIGlmIGBmdW5jLmxlbmd0aGBcbiAgICAgKiBpcyBub3Qgc3VmZmljaWVudC5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5jdXJyeS5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljIGJ1aWxkcyxcbiAgICAgKiBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCIgcHJvcGVydHkgb2YgY3VycmllZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjdXJyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5PWZ1bmMubGVuZ3RoXSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFiYyA9IGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBbYSwgYiwgY107XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBjdXJyaWVkID0gXy5jdXJyeShhYmMpO1xuICAgICAqXG4gICAgICogY3VycmllZCgxKSgyKSgzKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMSwgMikoMyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDEsIDIsIDMpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogLy8gQ3VycmllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiBjdXJyaWVkKDEpKF8sIDMpKDIpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1cnJ5KGZ1bmMsIGFyaXR5LCBndWFyZCkge1xuICAgICAgYXJpdHkgPSBndWFyZCA/IHVuZGVmaW5lZCA6IGFyaXR5O1xuICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9DVVJSWV9GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgYXJpdHkpO1xuICAgICAgcmVzdWx0LnBsYWNlaG9sZGVyID0gY3VycnkucGxhY2Vob2xkZXI7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY3VycnlgIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgYXBwbGllZCB0byBgZnVuY2BcbiAgICAgKiBpbiB0aGUgbWFubmVyIG9mIGBfLnBhcnRpYWxSaWdodGAgaW5zdGVhZCBvZiBgXy5wYXJ0aWFsYC5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5jdXJyeVJpZ2h0LnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBjdXJyaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGN1cnJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHk9ZnVuYy5sZW5ndGhdIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjdXJyaWVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYWJjID0gZnVuY3Rpb24oYSwgYiwgYykge1xuICAgICAqICAgcmV0dXJuIFthLCBiLCBjXTtcbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogdmFyIGN1cnJpZWQgPSBfLmN1cnJ5UmlnaHQoYWJjKTtcbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMykoMikoMSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDIsIDMpKDEpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogY3VycmllZCgxLCAyLCAzKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIC8vIEN1cnJpZWQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogY3VycmllZCgzKSgxLCBfKSgyKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXJyeVJpZ2h0KGZ1bmMsIGFyaXR5LCBndWFyZCkge1xuICAgICAgYXJpdHkgPSBndWFyZCA/IHVuZGVmaW5lZCA6IGFyaXR5O1xuICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9DVVJSWV9SSUdIVF9GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgYXJpdHkpO1xuICAgICAgcmVzdWx0LnBsYWNlaG9sZGVyID0gY3VycnlSaWdodC5wbGFjZWhvbGRlcjtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IGRlbGF5cyBpbnZva2luZyBgZnVuY2AgdW50aWwgYWZ0ZXIgYHdhaXRgXG4gICAgICogbWlsbGlzZWNvbmRzIGhhdmUgZWxhcHNlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gd2FzXG4gICAgICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICAgICAqIGRlbGF5ZWQgYGZ1bmNgIGludm9jYXRpb25zIGFuZCBhIGBmbHVzaGAgbWV0aG9kIHRvIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLlxuICAgICAqIFByb3ZpZGUgYG9wdGlvbnNgIHRvIGluZGljYXRlIHdoZXRoZXIgYGZ1bmNgIHNob3VsZCBiZSBpbnZva2VkIG9uIHRoZVxuICAgICAqIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YCB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRoZSBsYXN0IGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50XG4gICAgICogY2FsbHMgdG8gdGhlIGRlYm91bmNlZCBmdW5jdGlvbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2BcbiAgICAgKiBpbnZvY2F0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIElmIGBsZWFkaW5nYCBhbmQgYHRyYWlsaW5nYCBvcHRpb25zIGFyZSBgdHJ1ZWAsIGBmdW5jYCBpc1xuICAgICAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uXG4gICAgICogaXMgaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICAgICAqXG4gICAgICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gICAgICogdW50aWwgdG8gdGhlIG5leHQgdGljaywgc2ltaWxhciB0byBgc2V0VGltZW91dGAgd2l0aCBhIHRpbWVvdXQgb2YgYDBgLlxuICAgICAqXG4gICAgICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gICAgICogZm9yIGRldGFpbHMgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBgXy5kZWJvdW5jZWAgYW5kIGBfLnRocm90dGxlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlYm91bmNlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbd2FpdD0wXSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlYWRpbmc9ZmFsc2VdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4V2FpdF1cbiAgICAgKiAgVGhlIG1heGltdW0gdGltZSBgZnVuY2AgaXMgYWxsb3dlZCB0byBiZSBkZWxheWVkIGJlZm9yZSBpdCdzIGludm9rZWQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy50cmFpbGluZz10cnVlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGRlYm91bmNlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gQXZvaWQgY29zdGx5IGNhbGN1bGF0aW9ucyB3aGlsZSB0aGUgd2luZG93IHNpemUgaXMgaW4gZmx1eC5cbiAgICAgKiBqUXVlcnkod2luZG93KS5vbigncmVzaXplJywgXy5kZWJvdW5jZShjYWxjdWxhdGVMYXlvdXQsIDE1MCkpO1xuICAgICAqXG4gICAgICogLy8gSW52b2tlIGBzZW5kTWFpbGAgd2hlbiBjbGlja2VkLCBkZWJvdW5jaW5nIHN1YnNlcXVlbnQgY2FsbHMuXG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIF8uZGVib3VuY2Uoc2VuZE1haWwsIDMwMCwge1xuICAgICAqICAgJ2xlYWRpbmcnOiB0cnVlLFxuICAgICAqICAgJ3RyYWlsaW5nJzogZmFsc2VcbiAgICAgKiB9KSk7XG4gICAgICpcbiAgICAgKiAvLyBFbnN1cmUgYGJhdGNoTG9nYCBpcyBpbnZva2VkIG9uY2UgYWZ0ZXIgMSBzZWNvbmQgb2YgZGVib3VuY2VkIGNhbGxzLlxuICAgICAqIHZhciBkZWJvdW5jZWQgPSBfLmRlYm91bmNlKGJhdGNoTG9nLCAyNTAsIHsgJ21heFdhaXQnOiAxMDAwIH0pO1xuICAgICAqIHZhciBzb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2UoJy9zdHJlYW0nKTtcbiAgICAgKiBqUXVlcnkoc291cmNlKS5vbignbWVzc2FnZScsIGRlYm91bmNlZCk7XG4gICAgICpcbiAgICAgKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIGRlYm91bmNlZCBpbnZvY2F0aW9uLlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIGRlYm91bmNlZC5jYW5jZWwpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBsYXN0QXJncyxcbiAgICAgICAgICBsYXN0VGhpcyxcbiAgICAgICAgICBtYXhXYWl0LFxuICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICB0aW1lcklkLFxuICAgICAgICAgIGxhc3RDYWxsVGltZSxcbiAgICAgICAgICBsYXN0SW52b2tlVGltZSA9IDAsXG4gICAgICAgICAgbGVhZGluZyA9IGZhbHNlLFxuICAgICAgICAgIG1heGluZyA9IGZhbHNlLFxuICAgICAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgd2FpdCA9IHRvTnVtYmVyKHdhaXQpIHx8IDA7XG4gICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgbGVhZGluZyA9ICEhb3B0aW9ucy5sZWFkaW5nO1xuICAgICAgICBtYXhpbmcgPSAnbWF4V2FpdCcgaW4gb3B0aW9ucztcbiAgICAgICAgbWF4V2FpdCA9IG1heGluZyA/IG5hdGl2ZU1heCh0b051bWJlcihvcHRpb25zLm1heFdhaXQpIHx8IDAsIHdhaXQpIDogbWF4V2FpdDtcbiAgICAgICAgdHJhaWxpbmcgPSAndHJhaWxpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMudHJhaWxpbmcgOiB0cmFpbGluZztcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gaW52b2tlRnVuYyh0aW1lKSB7XG4gICAgICAgIHZhciBhcmdzID0gbGFzdEFyZ3MsXG4gICAgICAgICAgICB0aGlzQXJnID0gbGFzdFRoaXM7XG5cbiAgICAgICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBsZWFkaW5nRWRnZSh0aW1lKSB7XG4gICAgICAgIC8vIFJlc2V0IGFueSBgbWF4V2FpdGAgdGltZXIuXG4gICAgICAgIGxhc3RJbnZva2VUaW1lID0gdGltZTtcbiAgICAgICAgLy8gU3RhcnQgdGhlIHRpbWVyIGZvciB0aGUgdHJhaWxpbmcgZWRnZS5cbiAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgLy8gSW52b2tlIHRoZSBsZWFkaW5nIGVkZ2UuXG4gICAgICAgIHJldHVybiBsZWFkaW5nID8gaW52b2tlRnVuYyh0aW1lKSA6IHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gcmVtYWluaW5nV2FpdCh0aW1lKSB7XG4gICAgICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lLFxuICAgICAgICAgICAgdGltZVdhaXRpbmcgPSB3YWl0IC0gdGltZVNpbmNlTGFzdENhbGw7XG5cbiAgICAgICAgcmV0dXJuIG1heGluZ1xuICAgICAgICAgID8gbmF0aXZlTWluKHRpbWVXYWl0aW5nLCBtYXhXYWl0IC0gdGltZVNpbmNlTGFzdEludm9rZSlcbiAgICAgICAgICA6IHRpbWVXYWl0aW5nO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBzaG91bGRJbnZva2UodGltZSkge1xuICAgICAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICAgICAgdGltZVNpbmNlTGFzdEludm9rZSA9IHRpbWUgLSBsYXN0SW52b2tlVGltZTtcblxuICAgICAgICAvLyBFaXRoZXIgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCwgYWN0aXZpdHkgaGFzIHN0b3BwZWQgYW5kIHdlJ3JlIGF0IHRoZVxuICAgICAgICAvLyB0cmFpbGluZyBlZGdlLCB0aGUgc3lzdGVtIHRpbWUgaGFzIGdvbmUgYmFja3dhcmRzIGFuZCB3ZSdyZSB0cmVhdGluZ1xuICAgICAgICAvLyBpdCBhcyB0aGUgdHJhaWxpbmcgZWRnZSwgb3Igd2UndmUgaGl0IHRoZSBgbWF4V2FpdGAgbGltaXQuXG4gICAgICAgIHJldHVybiAobGFzdENhbGxUaW1lID09PSB1bmRlZmluZWQgfHwgKHRpbWVTaW5jZUxhc3RDYWxsID49IHdhaXQpIHx8XG4gICAgICAgICAgKHRpbWVTaW5jZUxhc3RDYWxsIDwgMCkgfHwgKG1heGluZyAmJiB0aW1lU2luY2VMYXN0SW52b2tlID49IG1heFdhaXQpKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gdGltZXJFeHBpcmVkKCkge1xuICAgICAgICB2YXIgdGltZSA9IG5vdygpO1xuICAgICAgICBpZiAoc2hvdWxkSW52b2tlKHRpbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHRyYWlsaW5nRWRnZSh0aW1lKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXN0YXJ0IHRoZSB0aW1lci5cbiAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCByZW1haW5pbmdXYWl0KHRpbWUpKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gdHJhaWxpbmdFZGdlKHRpbWUpIHtcbiAgICAgICAgdGltZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgICAgICAvLyBPbmx5IGludm9rZSBpZiB3ZSBoYXZlIGBsYXN0QXJnc2Agd2hpY2ggbWVhbnMgYGZ1bmNgIGhhcyBiZWVuXG4gICAgICAgIC8vIGRlYm91bmNlZCBhdCBsZWFzdCBvbmNlLlxuICAgICAgICBpZiAodHJhaWxpbmcgJiYgbGFzdEFyZ3MpIHtcbiAgICAgICAgICByZXR1cm4gaW52b2tlRnVuYyh0aW1lKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgICAgIGlmICh0aW1lcklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXJJZCk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdEludm9rZVRpbWUgPSAwO1xuICAgICAgICBsYXN0QXJncyA9IGxhc3RDYWxsVGltZSA9IGxhc3RUaGlzID0gdGltZXJJZCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgICAgIHJldHVybiB0aW1lcklkID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiB0cmFpbGluZ0VkZ2Uobm93KCkpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBkZWJvdW5jZWQoKSB7XG4gICAgICAgIHZhciB0aW1lID0gbm93KCksXG4gICAgICAgICAgICBpc0ludm9raW5nID0gc2hvdWxkSW52b2tlKHRpbWUpO1xuXG4gICAgICAgIGxhc3RBcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBsYXN0VGhpcyA9IHRoaXM7XG4gICAgICAgIGxhc3RDYWxsVGltZSA9IHRpbWU7XG5cbiAgICAgICAgaWYgKGlzSW52b2tpbmcpIHtcbiAgICAgICAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gbGVhZGluZ0VkZ2UobGFzdENhbGxUaW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1heGluZykge1xuICAgICAgICAgICAgLy8gSGFuZGxlIGludm9jYXRpb25zIGluIGEgdGlnaHQgbG9vcC5cbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICAgICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgICAgICByZXR1cm4gaW52b2tlRnVuYyhsYXN0Q2FsbFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgZGVib3VuY2VkLmNhbmNlbCA9IGNhbmNlbDtcbiAgICAgIGRlYm91bmNlZC5mbHVzaCA9IGZsdXNoO1xuICAgICAgcmV0dXJuIGRlYm91bmNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZlcnMgaW52b2tpbmcgdGhlIGBmdW5jYCB1bnRpbCB0aGUgY3VycmVudCBjYWxsIHN0YWNrIGhhcyBjbGVhcmVkLiBBbnlcbiAgICAgKiBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gYGZ1bmNgIHdoZW4gaXQncyBpbnZva2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVmZXIuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXIgaWQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmZXIoZnVuY3Rpb24odGV4dCkge1xuICAgICAqICAgY29uc29sZS5sb2codGV4dCk7XG4gICAgICogfSwgJ2RlZmVycmVkJyk7XG4gICAgICogLy8gPT4gTG9ncyAnZGVmZXJyZWQnIGFmdGVyIG9uZSBtaWxsaXNlY29uZC5cbiAgICAgKi9cbiAgICB2YXIgZGVmZXIgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBhcmdzKSB7XG4gICAgICByZXR1cm4gYmFzZURlbGF5KGZ1bmMsIDEsIGFyZ3MpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyBgZnVuY2AgYWZ0ZXIgYHdhaXRgIG1pbGxpc2Vjb25kcy4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZVxuICAgICAqIHByb3ZpZGVkIHRvIGBmdW5jYCB3aGVuIGl0J3MgaW52b2tlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3YWl0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5IGludm9jYXRpb24uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXIgaWQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVsYXkoZnVuY3Rpb24odGV4dCkge1xuICAgICAqICAgY29uc29sZS5sb2codGV4dCk7XG4gICAgICogfSwgMTAwMCwgJ2xhdGVyJyk7XG4gICAgICogLy8gPT4gTG9ncyAnbGF0ZXInIGFmdGVyIG9uZSBzZWNvbmQuXG4gICAgICovXG4gICAgdmFyIGRlbGF5ID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgd2FpdCwgYXJncykge1xuICAgICAgcmV0dXJuIGJhc2VEZWxheShmdW5jLCB0b051bWJlcih3YWl0KSB8fCAwLCBhcmdzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYXJndW1lbnRzIHJldmVyc2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZmxpcCBhcmd1bWVudHMgZm9yLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZsaXBwZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmbGlwcGVkID0gXy5mbGlwKGZ1bmN0aW9uKCkge1xuICAgICAqICAgcmV0dXJuIF8udG9BcnJheShhcmd1bWVudHMpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogZmxpcHBlZCgnYScsICdiJywgJ2MnLCAnZCcpO1xuICAgICAqIC8vID0+IFsnZCcsICdjJywgJ2InLCAnYSddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxpcChmdW5jKSB7XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX0ZMSVBfRkxBRyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbWVtb2l6ZXMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuIElmIGByZXNvbHZlcmAgaXNcbiAgICAgKiBwcm92aWRlZCwgaXQgZGV0ZXJtaW5lcyB0aGUgY2FjaGUga2V5IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlXG4gICAgICogYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbi4gQnkgZGVmYXVsdCwgdGhlIGZpcnN0IGFyZ3VtZW50XG4gICAgICogcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlIG1hcCBjYWNoZSBrZXkuIFRoZSBgZnVuY2BcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBtZW1vaXplZCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGUgY2FjaGUgaXMgZXhwb3NlZCBhcyB0aGUgYGNhY2hlYCBwcm9wZXJ0eSBvbiB0aGUgbWVtb2l6ZWRcbiAgICAgKiBmdW5jdGlvbi4gSXRzIGNyZWF0aW9uIG1heSBiZSBjdXN0b21pemVkIGJ5IHJlcGxhY2luZyB0aGUgYF8ubWVtb2l6ZS5DYWNoZWBcbiAgICAgKiBjb25zdHJ1Y3RvciB3aXRoIG9uZSB3aG9zZSBpbnN0YW5jZXMgaW1wbGVtZW50IHRoZVxuICAgICAqIFtgTWFwYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcHJvcGVydGllcy1vZi10aGUtbWFwLXByb3RvdHlwZS1vYmplY3QpXG4gICAgICogbWV0aG9kIGludGVyZmFjZSBvZiBgY2xlYXJgLCBgZGVsZXRlYCwgYGdldGAsIGBoYXNgLCBhbmQgYHNldGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3Jlc29sdmVyXSBUaGUgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgY2FjaGUga2V5LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICAgICAqIHZhciBvdGhlciA9IHsgJ2MnOiAzLCAnZCc6IDQgfTtcbiAgICAgKlxuICAgICAqIHZhciB2YWx1ZXMgPSBfLm1lbW9pemUoXy52YWx1ZXMpO1xuICAgICAqIHZhbHVlcyhvYmplY3QpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogdmFsdWVzKG90aGVyKTtcbiAgICAgKiAvLyA9PiBbMywgNF1cbiAgICAgKlxuICAgICAqIG9iamVjdC5hID0gMjtcbiAgICAgKiB2YWx1ZXMob2JqZWN0KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIC8vIE1vZGlmeSB0aGUgcmVzdWx0IGNhY2hlLlxuICAgICAqIHZhbHVlcy5jYWNoZS5zZXQob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAgICAgKiB2YWx1ZXMob2JqZWN0KTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddXG4gICAgICpcbiAgICAgKiAvLyBSZXBsYWNlIGBfLm1lbW9pemUuQ2FjaGVgLlxuICAgICAqIF8ubWVtb2l6ZS5DYWNoZSA9IFdlYWtNYXA7XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVtb2l6ZShmdW5jLCByZXNvbHZlcikge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicgfHwgKHJlc29sdmVyICE9IG51bGwgJiYgdHlwZW9mIHJlc29sdmVyICE9ICdmdW5jdGlvbicpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHZhciBtZW1vaXplZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgICAgIGtleSA9IHJlc29sdmVyID8gcmVzb2x2ZXIuYXBwbHkodGhpcywgYXJncykgOiBhcmdzWzBdLFxuICAgICAgICAgICAgY2FjaGUgPSBtZW1vaXplZC5jYWNoZTtcblxuICAgICAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIG1lbW9pemVkLmNhY2hlID0gY2FjaGUuc2V0KGtleSwgcmVzdWx0KSB8fCBjYWNoZTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgICBtZW1vaXplZC5jYWNoZSA9IG5ldyAobWVtb2l6ZS5DYWNoZSB8fCBNYXBDYWNoZSk7XG4gICAgICByZXR1cm4gbWVtb2l6ZWQ7XG4gICAgfVxuXG4gICAgLy8gRXhwb3NlIGBNYXBDYWNoZWAuXG4gICAgbWVtb2l6ZS5DYWNoZSA9IE1hcENhY2hlO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbmVnYXRlcyB0aGUgcmVzdWx0IG9mIHRoZSBwcmVkaWNhdGUgYGZ1bmNgLiBUaGVcbiAgICAgKiBgZnVuY2AgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgYW5kIGFyZ3VtZW50cyBvZiB0aGVcbiAgICAgKiBjcmVhdGVkIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBwcmVkaWNhdGUgdG8gbmVnYXRlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG5lZ2F0ZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGlzRXZlbihuKSB7XG4gICAgICogICByZXR1cm4gbiAlIDIgPT0gMDtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcihbMSwgMiwgMywgNCwgNSwgNl0sIF8ubmVnYXRlKGlzRXZlbikpO1xuICAgICAqIC8vID0+IFsxLCAzLCA1XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5lZ2F0ZShwcmVkaWNhdGUpIHtcbiAgICAgIGlmICh0eXBlb2YgcHJlZGljYXRlICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMDogcmV0dXJuICFwcmVkaWNhdGUuY2FsbCh0aGlzKTtcbiAgICAgICAgICBjYXNlIDE6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcywgYXJnc1swXSk7XG4gICAgICAgICAgY2FzZSAyOiByZXR1cm4gIXByZWRpY2F0ZS5jYWxsKHRoaXMsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuICFwcmVkaWNhdGUuY2FsbCh0aGlzLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIXByZWRpY2F0ZS5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaXMgcmVzdHJpY3RlZCB0byBpbnZva2luZyBgZnVuY2Agb25jZS4gUmVwZWF0IGNhbGxzXG4gICAgICogdG8gdGhlIGZ1bmN0aW9uIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGludm9jYXRpb24uIFRoZSBgZnVuY2AgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZXN0cmljdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgaW5pdGlhbGl6ZSA9IF8ub25jZShjcmVhdGVBcHBsaWNhdGlvbik7XG4gICAgICogaW5pdGlhbGl6ZSgpO1xuICAgICAqIGluaXRpYWxpemUoKTtcbiAgICAgKiAvLyA9PiBgY3JlYXRlQXBwbGljYXRpb25gIGlzIGludm9rZWQgb25jZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9uY2UoZnVuYykge1xuICAgICAgcmV0dXJuIGJlZm9yZSgyLCBmdW5jKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudHMgdHJhbnNmb3JtZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbdHJhbnNmb3Jtcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm1zLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBkb3VibGVkKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyQXJncyhmdW5jdGlvbih4LCB5KSB7XG4gICAgICogICByZXR1cm4gW3gsIHldO1xuICAgICAqIH0sIFtzcXVhcmUsIGRvdWJsZWRdKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoOSwgMyk7XG4gICAgICogLy8gPT4gWzgxLCA2XVxuICAgICAqXG4gICAgICogZnVuYygxMCwgNSk7XG4gICAgICogLy8gPT4gWzEwMCwgMTBdXG4gICAgICovXG4gICAgdmFyIG92ZXJBcmdzID0gY2FzdFJlc3QoZnVuY3Rpb24oZnVuYywgdHJhbnNmb3Jtcykge1xuICAgICAgdHJhbnNmb3JtcyA9ICh0cmFuc2Zvcm1zLmxlbmd0aCA9PSAxICYmIGlzQXJyYXkodHJhbnNmb3Jtc1swXSkpXG4gICAgICAgID8gYXJyYXlNYXAodHJhbnNmb3Jtc1swXSwgYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKVxuICAgICAgICA6IGFycmF5TWFwKGJhc2VGbGF0dGVuKHRyYW5zZm9ybXMsIDEpLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO1xuXG4gICAgICB2YXIgZnVuY3NMZW5ndGggPSB0cmFuc2Zvcm1zLmxlbmd0aDtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKGFyZ3MubGVuZ3RoLCBmdW5jc0xlbmd0aCk7XG5cbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBhcmdzW2luZGV4XSA9IHRyYW5zZm9ybXNbaW5kZXhdLmNhbGwodGhpcywgYXJnc1tpbmRleF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBhcmdzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBgcGFydGlhbHNgIHByZXBlbmRlZCB0byB0aGVcbiAgICAgKiBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYmluZGAgZXhjZXB0IGl0IGRvZXMgKipub3QqKlxuICAgICAqIGFsdGVyIHRoZSBgdGhpc2AgYmluZGluZy5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5wYXJ0aWFsLnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBwYXJ0aWFsbHlcbiAgICAgKiBhcHBsaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjIuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHBhcnRpYWxseSBhcHBseSBhcmd1bWVudHMgdG8uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFydGlhbGx5IGFwcGxpZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGdyZWV0KGdyZWV0aW5nLCBuYW1lKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyBuYW1lO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBzYXlIZWxsb1RvID0gXy5wYXJ0aWFsKGdyZWV0LCAnaGVsbG8nKTtcbiAgICAgKiBzYXlIZWxsb1RvKCdmcmVkJyk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBQYXJ0aWFsbHkgYXBwbGllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiB2YXIgZ3JlZXRGcmVkID0gXy5wYXJ0aWFsKGdyZWV0LCBfLCAnZnJlZCcpO1xuICAgICAqIGdyZWV0RnJlZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCdcbiAgICAgKi9cbiAgICB2YXIgcGFydGlhbCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgaG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLCBnZXRIb2xkZXIocGFydGlhbCkpO1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9QQVJUSUFMX0ZMQUcsIHVuZGVmaW5lZCwgcGFydGlhbHMsIGhvbGRlcnMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wYXJ0aWFsYCBleGNlcHQgdGhhdCBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHNcbiAgICAgKiBhcmUgYXBwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5wYXJ0aWFsUmlnaHQucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpY1xuICAgICAqIGJ1aWxkcywgbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIHBhcnRpYWxseVxuICAgICAqIGFwcGxpZWQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcGFydGlhbGx5IGFwcGx5IGFyZ3VtZW50cyB0by5cbiAgICAgKiBAcGFyYW0gey4uLip9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYXJ0aWFsbHkgYXBwbGllZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZ3JlZXQoZ3JlZXRpbmcsIG5hbWUpIHtcbiAgICAgKiAgIHJldHVybiBncmVldGluZyArICcgJyArIG5hbWU7XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGdyZWV0RnJlZCA9IF8ucGFydGlhbFJpZ2h0KGdyZWV0LCAnZnJlZCcpO1xuICAgICAqIGdyZWV0RnJlZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFBhcnRpYWxseSBhcHBsaWVkIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIHZhciBzYXlIZWxsb1RvID0gXy5wYXJ0aWFsUmlnaHQoZ3JlZXQsICdoZWxsbycsIF8pO1xuICAgICAqIHNheUhlbGxvVG8oJ2ZyZWQnKTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gZnJlZCdcbiAgICAgKi9cbiAgICB2YXIgcGFydGlhbFJpZ2h0ID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgcGFydGlhbHMpIHtcbiAgICAgIHZhciBob2xkZXJzID0gcmVwbGFjZUhvbGRlcnMocGFydGlhbHMsIGdldEhvbGRlcihwYXJ0aWFsUmlnaHQpKTtcbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHLCB1bmRlZmluZWQsIHBhcnRpYWxzLCBob2xkZXJzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYXJndW1lbnRzIGFycmFuZ2VkIGFjY29yZGluZ1xuICAgICAqIHRvIHRoZSBzcGVjaWZpZWQgYGluZGV4ZXNgIHdoZXJlIHRoZSBhcmd1bWVudCB2YWx1ZSBhdCB0aGUgZmlyc3QgaW5kZXggaXNcbiAgICAgKiBwcm92aWRlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQsIHRoZSBhcmd1bWVudCB2YWx1ZSBhdCB0aGUgc2Vjb25kIGluZGV4IGlzXG4gICAgICogcHJvdmlkZWQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCwgYW5kIHNvIG9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVhcnJhbmdlIGFyZ3VtZW50cyBmb3IuXG4gICAgICogQHBhcmFtIHsuLi4obnVtYmVyfG51bWJlcltdKX0gaW5kZXhlcyBUaGUgYXJyYW5nZWQgYXJndW1lbnQgaW5kZXhlcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHJlYXJnZWQgPSBfLnJlYXJnKGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBbYSwgYiwgY107XG4gICAgICogfSwgWzIsIDAsIDFdKTtcbiAgICAgKlxuICAgICAqIHJlYXJnZWQoJ2InLCAnYycsICdhJylcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAgICAgKi9cbiAgICB2YXIgcmVhcmcgPSBmbGF0UmVzdChmdW5jdGlvbihmdW5jLCBpbmRleGVzKSB7XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX1JFQVJHX0ZMQUcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGluZGV4ZXMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlXG4gICAgICogY3JlYXRlZCBmdW5jdGlvbiBhbmQgYXJndW1lbnRzIGZyb20gYHN0YXJ0YCBhbmQgYmV5b25kIHByb3ZpZGVkIGFzXG4gICAgICogYW4gYXJyYXkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb24gdGhlXG4gICAgICogW3Jlc3QgcGFyYW1ldGVyXShodHRwczovL21kbi5pby9yZXN0X3BhcmFtZXRlcnMpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBzYXkgPSBfLnJlc3QoZnVuY3Rpb24od2hhdCwgbmFtZXMpIHtcbiAgICAgKiAgIHJldHVybiB3aGF0ICsgJyAnICsgXy5pbml0aWFsKG5hbWVzKS5qb2luKCcsICcpICtcbiAgICAgKiAgICAgKF8uc2l6ZShuYW1lcykgPiAxID8gJywgJiAnIDogJycpICsgXy5sYXN0KG5hbWVzKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIHNheSgnaGVsbG8nLCAnZnJlZCcsICdiYXJuZXknLCAncGViYmxlcycpO1xuICAgICAqIC8vID0+ICdoZWxsbyBmcmVkLCBiYXJuZXksICYgcGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBzdGFydCA9IHN0YXJ0ID09PSB1bmRlZmluZWQgPyBzdGFydCA6IHRvSW50ZWdlcihzdGFydCk7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuYywgc3RhcnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZVxuICAgICAqIGNyZWF0ZSBmdW5jdGlvbiBhbmQgYW4gYXJyYXkgb2YgYXJndW1lbnRzIG11Y2ggbGlrZVxuICAgICAqIFtgRnVuY3Rpb24jYXBwbHlgXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGVcbiAgICAgKiBbc3ByZWFkIG9wZXJhdG9yXShodHRwczovL21kbi5pby9zcHJlYWRfb3BlcmF0b3IpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gc3ByZWFkIGFyZ3VtZW50cyBvdmVyLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSBzcHJlYWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBzYXkgPSBfLnNwcmVhZChmdW5jdGlvbih3aG8sIHdoYXQpIHtcbiAgICAgKiAgIHJldHVybiB3aG8gKyAnIHNheXMgJyArIHdoYXQ7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBzYXkoWydmcmVkJywgJ2hlbGxvJ10pO1xuICAgICAqIC8vID0+ICdmcmVkIHNheXMgaGVsbG8nXG4gICAgICpcbiAgICAgKiB2YXIgbnVtYmVycyA9IFByb21pc2UuYWxsKFtcbiAgICAgKiAgIFByb21pc2UucmVzb2x2ZSg0MCksXG4gICAgICogICBQcm9taXNlLnJlc29sdmUoMzYpXG4gICAgICogXSk7XG4gICAgICpcbiAgICAgKiBudW1iZXJzLnRoZW4oXy5zcHJlYWQoZnVuY3Rpb24oeCwgeSkge1xuICAgICAqICAgcmV0dXJuIHggKyB5O1xuICAgICAqIH0pKTtcbiAgICAgKiAvLyA9PiBhIFByb21pc2Ugb2YgNzZcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzcHJlYWQoZnVuYywgc3RhcnQpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gc3RhcnQgPT0gbnVsbCA/IDAgOiBuYXRpdmVNYXgodG9JbnRlZ2VyKHN0YXJ0KSwgMCk7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgICB2YXIgYXJyYXkgPSBhcmdzW3N0YXJ0XSxcbiAgICAgICAgICAgIG90aGVyQXJncyA9IGNhc3RTbGljZShhcmdzLCAwLCBzdGFydCk7XG5cbiAgICAgICAgaWYgKGFycmF5KSB7XG4gICAgICAgICAgYXJyYXlQdXNoKG90aGVyQXJncywgYXJyYXkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBvdGhlckFyZ3MpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHRocm90dGxlZCBmdW5jdGlvbiB0aGF0IG9ubHkgaW52b2tlcyBgZnVuY2AgYXQgbW9zdCBvbmNlIHBlclxuICAgICAqIGV2ZXJ5IGB3YWl0YCBtaWxsaXNlY29uZHMuIFRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gY29tZXMgd2l0aCBhIGBjYW5jZWxgXG4gICAgICogbWV0aG9kIHRvIGNhbmNlbCBkZWxheWVkIGBmdW5jYCBpbnZvY2F0aW9ucyBhbmQgYSBgZmx1c2hgIG1ldGhvZCB0b1xuICAgICAqIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYFxuICAgICAqIHNob3VsZCBiZSBpbnZva2VkIG9uIHRoZSBsZWFkaW5nIGFuZC9vciB0cmFpbGluZyBlZGdlIG9mIHRoZSBgd2FpdGBcbiAgICAgKiB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWQgd2l0aCB0aGUgbGFzdCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlXG4gICAgICogdGhyb3R0bGVkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50IGNhbGxzIHRvIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gcmV0dXJuIHRoZVxuICAgICAqIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2AgaW52b2NhdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAgICAgKiBpbnZva2VkIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0IG9ubHkgaWYgdGhlIHRocm90dGxlZCBmdW5jdGlvblxuICAgICAqIGlzIGludm9rZWQgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBgd2FpdGAgdGltZW91dC5cbiAgICAgKlxuICAgICAqIElmIGB3YWl0YCBpcyBgMGAgYW5kIGBsZWFkaW5nYCBpcyBgZmFsc2VgLCBgZnVuY2AgaW52b2NhdGlvbiBpcyBkZWZlcnJlZFxuICAgICAqIHVudGlsIHRvIHRoZSBuZXh0IHRpY2ssIHNpbWlsYXIgdG8gYHNldFRpbWVvdXRgIHdpdGggYSB0aW1lb3V0IG9mIGAwYC5cbiAgICAgKlxuICAgICAqIFNlZSBbRGF2aWQgQ29yYmFjaG8ncyBhcnRpY2xlXShodHRwczovL2Nzcy10cmlja3MuY29tL2RlYm91bmNpbmctdGhyb3R0bGluZy1leHBsYWluZWQtZXhhbXBsZXMvKVxuICAgICAqIGZvciBkZXRhaWxzIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYF8udGhyb3R0bGVgIGFuZCBgXy5kZWJvdW5jZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB0aHJvdHRsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhyb3R0bGUgaW52b2NhdGlvbnMgdG8uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sZWFkaW5nPXRydWVdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnRyYWlsaW5nPXRydWVdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgdGhyb3R0bGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBBdm9pZCBleGNlc3NpdmVseSB1cGRhdGluZyB0aGUgcG9zaXRpb24gd2hpbGUgc2Nyb2xsaW5nLlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdzY3JvbGwnLCBfLnRocm90dGxlKHVwZGF0ZVBvc2l0aW9uLCAxMDApKTtcbiAgICAgKlxuICAgICAqIC8vIEludm9rZSBgcmVuZXdUb2tlbmAgd2hlbiB0aGUgY2xpY2sgZXZlbnQgaXMgZmlyZWQsIGJ1dCBub3QgbW9yZSB0aGFuIG9uY2UgZXZlcnkgNSBtaW51dGVzLlxuICAgICAqIHZhciB0aHJvdHRsZWQgPSBfLnRocm90dGxlKHJlbmV3VG9rZW4sIDMwMDAwMCwgeyAndHJhaWxpbmcnOiBmYWxzZSB9KTtcbiAgICAgKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgdGhyb3R0bGVkKTtcbiAgICAgKlxuICAgICAqIC8vIENhbmNlbCB0aGUgdHJhaWxpbmcgdGhyb3R0bGVkIGludm9jYXRpb24uXG4gICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgdGhyb3R0bGVkLmNhbmNlbCk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gdGhyb3R0bGUoZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICAgICAgdmFyIGxlYWRpbmcgPSB0cnVlLFxuICAgICAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIGxlYWRpbmcgPSAnbGVhZGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy5sZWFkaW5nIDogbGVhZGluZztcbiAgICAgICAgdHJhaWxpbmcgPSAndHJhaWxpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMudHJhaWxpbmcgOiB0cmFpbGluZztcbiAgICAgIH1cbiAgICAgIHJldHVybiBkZWJvdW5jZShmdW5jLCB3YWl0LCB7XG4gICAgICAgICdsZWFkaW5nJzogbGVhZGluZyxcbiAgICAgICAgJ21heFdhaXQnOiB3YWl0LFxuICAgICAgICAndHJhaWxpbmcnOiB0cmFpbGluZ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB1cCB0byBvbmUgYXJndW1lbnQsIGlnbm9yaW5nIGFueVxuICAgICAqIGFkZGl0aW9uYWwgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1hcChbJzYnLCAnOCcsICcxMCddLCBfLnVuYXJ5KHBhcnNlSW50KSk7XG4gICAgICogLy8gPT4gWzYsIDgsIDEwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuYXJ5KGZ1bmMpIHtcbiAgICAgIHJldHVybiBhcnkoZnVuYywgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgYHZhbHVlYCB0byBgd3JhcHBlcmAgYXMgaXRzIGZpcnN0XG4gICAgICogYXJndW1lbnQuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgZnVuY3Rpb24gYXJlIGFwcGVuZGVkXG4gICAgICogdG8gdGhvc2UgcHJvdmlkZWQgdG8gdGhlIGB3cmFwcGVyYC4gVGhlIHdyYXBwZXIgaXMgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2BcbiAgICAgKiBiaW5kaW5nIG9mIHRoZSBjcmVhdGVkIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbd3JhcHBlcj1pZGVudGl0eV0gVGhlIHdyYXBwZXIgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBwID0gXy53cmFwKF8uZXNjYXBlLCBmdW5jdGlvbihmdW5jLCB0ZXh0KSB7XG4gICAgICogICByZXR1cm4gJzxwPicgKyBmdW5jKHRleHQpICsgJzwvcD4nO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogcCgnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnPHA+ZnJlZCwgYmFybmV5LCAmYW1wOyBwZWJibGVzPC9wPidcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwKHZhbHVlLCB3cmFwcGVyKSB7XG4gICAgICByZXR1cm4gcGFydGlhbChjYXN0RnVuY3Rpb24od3JhcHBlciksIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgdmFsdWVgIGFzIGFuIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjQuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KDEpO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkoeyAnYSc6IDEgfSk7XG4gICAgICogLy8gPT4gW3sgJ2EnOiAxIH1dXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSgnYWJjJyk7XG4gICAgICogLy8gPT4gWydhYmMnXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkobnVsbCk7XG4gICAgICogLy8gPT4gW251bGxdXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSh1bmRlZmluZWQpO1xuICAgICAqIC8vID0+IFt1bmRlZmluZWRdXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSgpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgM107XG4gICAgICogY29uc29sZS5sb2coXy5jYXN0QXJyYXkoYXJyYXkpID09PSBhcnJheSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RBcnJheSgpIHtcbiAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgdmFsdWUgPSBhcmd1bWVudHNbMF07XG4gICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNoYWxsb3cgY2xvbmUgb2YgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uIHRoZVxuICAgICAqIFtzdHJ1Y3R1cmVkIGNsb25lIGFsZ29yaXRobV0oaHR0cHM6Ly9tZG4uaW8vU3RydWN0dXJlZF9jbG9uZV9hbGdvcml0aG0pXG4gICAgICogYW5kIHN1cHBvcnRzIGNsb25pbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucywgZGF0ZSBvYmplY3RzLCBtYXBzLFxuICAgICAqIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZFxuICAgICAqIGFycmF5cy4gVGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgYGFyZ3VtZW50c2Agb2JqZWN0cyBhcmUgY2xvbmVkXG4gICAgICogYXMgcGxhaW4gb2JqZWN0cy4gQW4gZW1wdHkgb2JqZWN0IGlzIHJldHVybmVkIGZvciB1bmNsb25lYWJsZSB2YWx1ZXMgc3VjaFxuICAgICAqIGFzIGVycm9yIG9iamVjdHMsIGZ1bmN0aW9ucywgRE9NIG5vZGVzLCBhbmQgV2Vha01hcHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLmNsb25lRGVlcFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAgICAgKlxuICAgICAqIHZhciBzaGFsbG93ID0gXy5jbG9uZShvYmplY3RzKTtcbiAgICAgKiBjb25zb2xlLmxvZyhzaGFsbG93WzBdID09PSBvYmplY3RzWzBdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmUodmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX1NZTUJPTFNfRkxBRyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIGNsb25lZCB2YWx1ZS4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsXG4gICAgICogY2xvbmluZyBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGhcbiAgICAgKiB1cCB0byBmb3VyIGFyZ3VtZW50czsgKHZhbHVlIFssIGluZGV4fGtleSwgb2JqZWN0LCBzdGFja10pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLmNsb25lRGVlcFdpdGhcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcih2YWx1ZSkge1xuICAgICAqICAgaWYgKF8uaXNFbGVtZW50KHZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdmFsdWUuY2xvbmVOb2RlKGZhbHNlKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZWwgPSBfLmNsb25lV2l0aChkb2N1bWVudC5ib2R5LCBjdXN0b21pemVyKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGVsID09PSBkb2N1bWVudC5ib2R5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqIGNvbnNvbGUubG9nKGVsLm5vZGVOYW1lKTtcbiAgICAgKiAvLyA9PiAnQk9EWSdcbiAgICAgKiBjb25zb2xlLmxvZyhlbC5jaGlsZE5vZGVzLmxlbmd0aCk7XG4gICAgICogLy8gPT4gMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lV2l0aCh2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmNsb25lYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBjbG9uZXMgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVjdXJzaXZlbHkgY2xvbmUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5jbG9uZVxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAgICAgKlxuICAgICAqIHZhciBkZWVwID0gXy5jbG9uZURlZXAob2JqZWN0cyk7XG4gICAgICogY29uc29sZS5sb2coZGVlcFswXSA9PT0gb2JqZWN0c1swXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZURlZXAodmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZVdpdGhgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGNsb25lcyBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZWN1cnNpdmVseSBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBkZWVwIGNsb25lZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8uY2xvbmVXaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIodmFsdWUpIHtcbiAgICAgKiAgIGlmIChfLmlzRWxlbWVudCh2YWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHZhbHVlLmNsb25lTm9kZSh0cnVlKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZWwgPSBfLmNsb25lRGVlcFdpdGgoZG9jdW1lbnQuYm9keSwgY3VzdG9taXplcik7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhlbCA9PT0gZG9jdW1lbnQuYm9keSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKiBjb25zb2xlLmxvZyhlbC5ub2RlTmFtZSk7XG4gICAgICogLy8gPT4gJ0JPRFknXG4gICAgICogY29uc29sZS5sb2coZWwuY2hpbGROb2Rlcy5sZW5ndGgpO1xuICAgICAqIC8vID0+IDIwXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVEZWVwV2l0aCh2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYG9iamVjdGAgY29uZm9ybXMgdG8gYHNvdXJjZWAgYnkgaW52b2tpbmcgdGhlIHByZWRpY2F0ZVxuICAgICAqIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0byBgXy5jb25mb3Jtc2Agd2hlbiBgc291cmNlYCBpc1xuICAgICAqIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTQuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgY29uZm9ybXMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAgICAgKlxuICAgICAqIF8uY29uZm9ybXNUbyhvYmplY3QsIHsgJ2InOiBmdW5jdGlvbihuKSB7IHJldHVybiBuID4gMTsgfSB9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmNvbmZvcm1zVG8ob2JqZWN0LCB7ICdiJzogZnVuY3Rpb24obikgeyByZXR1cm4gbiA+IDI7IH0gfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25mb3Jtc1RvKG9iamVjdCwgc291cmNlKSB7XG4gICAgICByZXR1cm4gc291cmNlID09IG51bGwgfHwgYmFzZUNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UsIGtleXMoc291cmNlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYVxuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICAgICAqXG4gICAgICogXy5lcShvYmplY3QsIG9iamVjdCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5lcShvYmplY3QsIG90aGVyKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5lcSgnYScsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5lcSgnYScsIE9iamVjdCgnYScpKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5lcShOYU4sIE5hTik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVxKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gYG90aGVyYCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5sdFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmd0KDMsIDEpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZ3QoMywgMyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uZ3QoMSwgMyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgZ3QgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGJhc2VHdCk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYG90aGVyYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjkuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0b1xuICAgICAqICBgb3RoZXJgLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLmx0ZVxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmd0ZSgzLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmd0ZSgzLCAzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmd0ZSgxLCAzKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBndGUgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlID49IG90aGVyO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQXJndW1lbnRzID0gYmFzZUlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID8gYmFzZUlzQXJndW1lbnRzIDogZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheSgnYWJjJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShfLm5vb3ApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlCdWZmZXJgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXkgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUJ1ZmZlcihuZXcgQXJyYXlCdWZmZXIoMikpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUJ1ZmZlcihuZXcgQXJyYXkoMikpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQXJyYXlCdWZmZXIgPSBub2RlSXNBcnJheUJ1ZmZlciA/IGJhc2VVbmFyeShub2RlSXNBcnJheUJ1ZmZlcikgOiBiYXNlSXNBcnJheUJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAgICAgKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gICAgICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0FycmF5TGlrZWAgZXhjZXB0IHRoYXQgaXQgYWxzbyBjaGVja3MgaWYgYHZhbHVlYFxuICAgICAqIGlzIGFuIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXktbGlrZSBvYmplY3QsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZU9iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZU9iamVjdCgnYWJjJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoXy5ub29wKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0FycmF5TGlrZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGJvb2xlYW4gcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBib29sZWFuLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNCb29sZWFuKGZhbHNlKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQm9vbGVhbihudWxsKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZSB8fFxuICAgICAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBib29sVGFnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRGF0ZWAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGRhdGUgb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNEYXRlKG5ldyBEYXRlKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRGF0ZSgnTW9uIEFwcmlsIDIzIDIwMTInKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0RhdGUgPSBub2RlSXNEYXRlID8gYmFzZVVuYXJ5KG5vZGVJc0RhdGUpIDogYmFzZUlzRGF0ZTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIERPTSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIERPTSBlbGVtZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNFbGVtZW50KGRvY3VtZW50LmJvZHkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFbGVtZW50KCc8Ym9keT4nKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgdmFsdWUubm9kZVR5cGUgPT09IDEgJiYgIWlzUGxhaW5PYmplY3QodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGVtcHR5IG9iamVjdCwgY29sbGVjdGlvbiwgbWFwLCBvciBzZXQuXG4gICAgICpcbiAgICAgKiBPYmplY3RzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBubyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWRcbiAgICAgKiBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQXJyYXktbGlrZSB2YWx1ZXMgc3VjaCBhcyBgYXJndW1lbnRzYCBvYmplY3RzLCBhcnJheXMsIGJ1ZmZlcnMsIHN0cmluZ3MsIG9yXG4gICAgICogalF1ZXJ5LWxpa2UgY29sbGVjdGlvbnMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYGxlbmd0aGAgb2YgYDBgLlxuICAgICAqIFNpbWlsYXJseSwgbWFwcyBhbmQgc2V0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgc2l6ZWAgb2YgYDBgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBlbXB0eSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KHRydWUpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eSgxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KHsgJ2EnOiAxIH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNBcnJheUxpa2UodmFsdWUpICYmXG4gICAgICAgICAgKGlzQXJyYXkodmFsdWUpIHx8IHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUuc3BsaWNlID09ICdmdW5jdGlvbicgfHxcbiAgICAgICAgICAgIGlzQnVmZmVyKHZhbHVlKSB8fCBpc1R5cGVkQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSkpIHtcbiAgICAgICAgcmV0dXJuICF2YWx1ZS5sZW5ndGg7XG4gICAgICB9XG4gICAgICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKTtcbiAgICAgIGlmICh0YWcgPT0gbWFwVGFnIHx8IHRhZyA9PSBzZXRUYWcpIHtcbiAgICAgICAgcmV0dXJuICF2YWx1ZS5zaXplO1xuICAgICAgfVxuICAgICAgaWYgKGlzUHJvdG90eXBlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gIWJhc2VLZXlzKHZhbHVlKS5sZW5ndGg7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGEgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmVcbiAgICAgKiBlcXVpdmFsZW50LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIHN1cHBvcnRzIGNvbXBhcmluZyBhcnJheXMsIGFycmF5IGJ1ZmZlcnMsIGJvb2xlYW5zLFxuICAgICAqIGRhdGUgb2JqZWN0cywgZXJyb3Igb2JqZWN0cywgbWFwcywgbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcyxcbiAgICAgKiBzZXRzLCBzdHJpbmdzLCBzeW1ib2xzLCBhbmQgdHlwZWQgYXJyYXlzLiBgT2JqZWN0YCBvYmplY3RzIGFyZSBjb21wYXJlZFxuICAgICAqIGJ5IHRoZWlyIG93biwgbm90IGluaGVyaXRlZCwgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLiBGdW5jdGlvbnMgYW5kIERPTVxuICAgICAqIG5vZGVzIGFyZSBjb21wYXJlZCBieSBzdHJpY3QgZXF1YWxpdHksIGkuZS4gYD09PWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICAgICAqXG4gICAgICogXy5pc0VxdWFsKG9iamVjdCwgb3RoZXIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIG9iamVjdCA9PT0gb3RoZXI7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0VxdWFsKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0VxdWFsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLCBjb21wYXJpc29uc1xuICAgICAqIGFyZSBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggdXAgdG9cbiAgICAgKiBzaXggYXJndW1lbnRzOiAob2JqVmFsdWUsIG90aFZhbHVlIFssIGluZGV4fGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2tdKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiAvXmgoPzppfGVsbG8pJC8udGVzdCh2YWx1ZSk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgb3RoVmFsdWUpIHtcbiAgICAgKiAgIGlmIChpc0dyZWV0aW5nKG9ialZhbHVlKSAmJiBpc0dyZWV0aW5nKG90aFZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbJ2hlbGxvJywgJ2dvb2RieWUnXTtcbiAgICAgKiB2YXIgb3RoZXIgPSBbJ2hpJywgJ2dvb2RieWUnXTtcbiAgICAgKlxuICAgICAqIF8uaXNFcXVhbFdpdGgoYXJyYXksIG90aGVyLCBjdXN0b21pemVyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFcXVhbFdpdGgodmFsdWUsIG90aGVyLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICB2YXIgcmVzdWx0ID0gY3VzdG9taXplciA/IGN1c3RvbWl6ZXIodmFsdWUsIG90aGVyKSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlciwgdW5kZWZpbmVkLCBjdXN0b21pemVyKSA6ICEhcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGBFcnJvcmAsIGBFdmFsRXJyb3JgLCBgUmFuZ2VFcnJvcmAsIGBSZWZlcmVuY2VFcnJvcmAsXG4gICAgICogYFN5bnRheEVycm9yYCwgYFR5cGVFcnJvcmAsIG9yIGBVUklFcnJvcmAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBlcnJvciBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0Vycm9yKG5ldyBFcnJvcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Vycm9yKEVycm9yKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRXJyb3IodmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gICAgICByZXR1cm4gdGFnID09IGVycm9yVGFnIHx8IHRhZyA9PSBkb21FeGNUYWcgfHxcbiAgICAgICAgKHR5cGVvZiB2YWx1ZS5tZXNzYWdlID09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZS5uYW1lID09ICdzdHJpbmcnICYmICFpc1BsYWluT2JqZWN0KHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBmaW5pdGUgcHJpbWl0aXZlIG51bWJlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgTnVtYmVyLmlzRmluaXRlYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzRmluaXRlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmaW5pdGUgbnVtYmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNGaW5pdGUoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRmluaXRlKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0Zpbml0ZSgnMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNGaW5pdGUodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgbmF0aXZlSXNGaW5pdGUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRnVuY3Rpb24oXyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAgICAgLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gICAgICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gICAgICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGludGVnZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYE51bWJlci5pc0ludGVnZXJgXShodHRwczovL21kbi5pby9OdW1iZXIvaXNJbnRlZ2VyKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gaW50ZWdlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcigzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcignMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNJbnRlZ2VyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIHZhbHVlID09IHRvSW50ZWdlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aCgzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aCgnMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICAgICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICAgICAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAgICAgKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0KHt9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdChfLm5vb3ApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3QobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICAgICAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2Uoe30pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYE1hcGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTWFwKG5ldyBNYXApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNNYXAobmV3IFdlYWtNYXApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzTWFwID0gbm9kZUlzTWFwID8gYmFzZVVuYXJ5KG5vZGVJc01hcCkgOiBiYXNlSXNNYXA7XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIHBhcnRpYWwgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gYG9iamVjdGAgYW5kIGBzb3VyY2VgIHRvXG4gICAgICogZGV0ZXJtaW5lIGlmIGBvYmplY3RgIGNvbnRhaW5zIGVxdWl2YWxlbnQgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8gYF8ubWF0Y2hlc2Agd2hlbiBgc291cmNlYCBpc1xuICAgICAqIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqXG4gICAgICogUGFydGlhbCBjb21wYXJpc29ucyB3aWxsIG1hdGNoIGVtcHR5IGFycmF5IGFuZCBlbXB0eSBvYmplY3QgYHNvdXJjZWBcbiAgICAgKiB2YWx1ZXMgYWdhaW5zdCBhbnkgYXJyYXkgb3Igb2JqZWN0IHZhbHVlLCByZXNwZWN0aXZlbHkuIFNlZSBgXy5pc0VxdWFsYFxuICAgICAqIGZvciBhIGxpc3Qgb2Ygc3VwcG9ydGVkIHZhbHVlIGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gICAgICpcbiAgICAgKiBfLmlzTWF0Y2gob2JqZWN0LCB7ICdiJzogMiB9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTWF0Y2gob2JqZWN0LCB7ICdiJzogMSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTWF0Y2gob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT09IHNvdXJjZSB8fCBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgZ2V0TWF0Y2hEYXRhKHNvdXJjZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNNYXRjaGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgY29tcGFyaXNvbnNcbiAgICAgKiBhcmUgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIGZpdmVcbiAgICAgKiBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGluZGV4fGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiAvXmgoPzppfGVsbG8pJC8udGVzdCh2YWx1ZSk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAgICAgKiAgIGlmIChpc0dyZWV0aW5nKG9ialZhbHVlKSAmJiBpc0dyZWV0aW5nKHNyY1ZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnZ3JlZXRpbmcnOiAnaGVsbG8nIH07XG4gICAgICogdmFyIHNvdXJjZSA9IHsgJ2dyZWV0aW5nJzogJ2hpJyB9O1xuICAgICAqXG4gICAgICogXy5pc01hdGNoV2l0aChvYmplY3QsIHNvdXJjZSwgY3VzdG9taXplcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTWF0Y2hXaXRoKG9iamVjdCwgc291cmNlLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIGdldE1hdGNoRGF0YShzb3VyY2UpLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgTmFOYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgTnVtYmVyLmlzTmFOYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzTmFOKSBhbmQgaXMgbm90IHRoZSBzYW1lIGFzXG4gICAgICogZ2xvYmFsIFtgaXNOYU5gXShodHRwczovL21kbi5pby9pc05hTikgd2hpY2ggcmV0dXJucyBgdHJ1ZWAgZm9yXG4gICAgICogYHVuZGVmaW5lZGAgYW5kIG90aGVyIG5vbi1udW1iZXIgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgTmFOYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTmFOKE5hTik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05hTihuZXcgTnVtYmVyKE5hTikpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGlzTmFOKHVuZGVmaW5lZCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05hTih1bmRlZmluZWQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOYU4odmFsdWUpIHtcbiAgICAgIC8vIEFuIGBOYU5gIHByaW1pdGl2ZSBpcyB0aGUgb25seSB2YWx1ZSB0aGF0IGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuXG4gICAgICAvLyBQZXJmb3JtIHRoZSBgdG9TdHJpbmdUYWdgIGNoZWNrIGZpcnN0IHRvIGF2b2lkIGVycm9ycyB3aXRoIHNvbWVcbiAgICAgIC8vIEFjdGl2ZVggb2JqZWN0cyBpbiBJRS5cbiAgICAgIHJldHVybiBpc051bWJlcih2YWx1ZSkgJiYgdmFsdWUgIT0gK3ZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcHJpc3RpbmUgbmF0aXZlIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGNhbid0IHJlbGlhYmx5IGRldGVjdCBuYXRpdmUgZnVuY3Rpb25zIGluIHRoZSBwcmVzZW5jZVxuICAgICAqIG9mIHRoZSBjb3JlLWpzIHBhY2thZ2UgYmVjYXVzZSBjb3JlLWpzIGNpcmN1bXZlbnRzIHRoaXMga2luZCBvZiBkZXRlY3Rpb24uXG4gICAgICogRGVzcGl0ZSBtdWx0aXBsZSByZXF1ZXN0cywgdGhlIGNvcmUtanMgbWFpbnRhaW5lciBoYXMgbWFkZSBpdCBjbGVhcjogYW55XG4gICAgICogYXR0ZW1wdCB0byBmaXggdGhlIGRldGVjdGlvbiB3aWxsIGJlIG9ic3RydWN0ZWQuIEFzIGEgcmVzdWx0LCB3ZSdyZSBsZWZ0XG4gICAgICogd2l0aCBsaXR0bGUgY2hvaWNlIGJ1dCB0byB0aHJvdyBhbiBlcnJvci4gVW5mb3J0dW5hdGVseSwgdGhpcyBhbHNvIGFmZmVjdHNcbiAgICAgKiBwYWNrYWdlcywgbGlrZSBbYmFiZWwtcG9seWZpbGxdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2JhYmVsLXBvbHlmaWxsKSxcbiAgICAgKiB3aGljaCByZWx5IG9uIGNvcmUtanMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOYXRpdmUoQXJyYXkucHJvdG90eXBlLnB1c2gpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOYXRpdmUoXyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc05hdGl2ZSh2YWx1ZSkge1xuICAgICAgaWYgKGlzTWFza2FibGUodmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihDT1JFX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYG51bGxgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgbnVsbGAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc051bGwobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc051bGwodm9pZCAwKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTnVsbCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbnVsbGlzaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTmlsKG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOaWwodm9pZCAwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmlsKE5hTik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc05pbCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBOdW1iZXJgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVG8gZXhjbHVkZSBgSW5maW5pdHlgLCBgLUluZmluaXR5YCwgYW5kIGBOYU5gLCB3aGljaCBhcmVcbiAgICAgKiBjbGFzc2lmaWVkIGFzIG51bWJlcnMsIHVzZSB0aGUgYF8uaXNGaW5pdGVgIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBudW1iZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc051bWJlcigzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOdW1iZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOdW1iZXIoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInIHx8XG4gICAgICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IG51bWJlclRhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICAgICAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjguMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgICAgIGlmIChwcm90byA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBDdG9yID0gaGFzT3duUHJvcGVydHkuY2FsbChwcm90bywgJ2NvbnN0cnVjdG9yJykgJiYgcHJvdG8uY29uc3RydWN0b3I7XG4gICAgICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJlxuICAgICAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgUmVnRXhwYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcmVnZXhwLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNSZWdFeHAoL2FiYy8pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNSZWdFeHAoJy9hYmMvJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNSZWdFeHAgPSBub2RlSXNSZWdFeHAgPyBiYXNlVW5hcnkobm9kZUlzUmVnRXhwKSA6IGJhc2VJc1JlZ0V4cDtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgc2FmZSBpbnRlZ2VyLiBBbiBpbnRlZ2VyIGlzIHNhZmUgaWYgaXQncyBhbiBJRUVFLTc1NFxuICAgICAqIGRvdWJsZSBwcmVjaXNpb24gbnVtYmVyIHdoaWNoIGlzbid0IHRoZSByZXN1bHQgb2YgYSByb3VuZGVkIHVuc2FmZSBpbnRlZ2VyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BOdW1iZXIuaXNTYWZlSW50ZWdlcmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc1NhZmVJbnRlZ2VyKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzYWZlIGludGVnZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKCczJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1NhZmVJbnRlZ2VyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNJbnRlZ2VyKHZhbHVlKSAmJiB2YWx1ZSA+PSAtTUFYX1NBRkVfSU5URUdFUiAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU2V0YCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNTZXQobmV3IFNldCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1NldChuZXcgV2Vha1NldCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNTZXQgPSBub2RlSXNTZXQgPyBiYXNlVW5hcnkobm9kZUlzU2V0KSA6IGJhc2VJc1NldDtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3RyaW5nYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN0cmluZywgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzU3RyaW5nKDEpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHxcbiAgICAgICAgKCFpc0FycmF5KHZhbHVlKSAmJiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN0cmluZ1RhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1VuZGVmaW5lZCh2b2lkIDApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNVbmRlZmluZWQobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBXZWFrTWFwYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgd2VhayBtYXAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1dlYWtNYXAobmV3IFdlYWtNYXApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrTWFwKG5ldyBNYXApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNXZWFrTWFwKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IHdlYWtNYXBUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBXZWFrU2V0YCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgd2VhayBzZXQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1dlYWtTZXQobmV3IFdlYWtTZXQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrU2V0KG5ldyBTZXQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNXZWFrU2V0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSB3ZWFrU2V0VGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8uZ3RcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sdCgxLCAzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmx0KDMsIDMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmx0KDMsIDEpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGx0ID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihiYXNlTHQpO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBvdGhlcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG9cbiAgICAgKiAgYG90aGVyYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5ndGVcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sdGUoMSwgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5sdGUoMywgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5sdGUoMywgMSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgbHRlID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA8PSBvdGhlcjtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9BcnJheSh7ICdhJzogMSwgJ2InOiAyIH0pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogXy50b0FycmF5KCdhYmMnKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAgICAgKlxuICAgICAqIF8udG9BcnJheSgxKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqXG4gICAgICogXy50b0FycmF5KG51bGwpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9BcnJheSh2YWx1ZSkge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoaXNBcnJheUxpa2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBpc1N0cmluZyh2YWx1ZSkgPyBzdHJpbmdUb0FycmF5KHZhbHVlKSA6IGNvcHlBcnJheSh2YWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3ltSXRlcmF0b3IgJiYgdmFsdWVbc3ltSXRlcmF0b3JdKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRvclRvQXJyYXkodmFsdWVbc3ltSXRlcmF0b3JdKCkpO1xuICAgICAgfVxuICAgICAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSksXG4gICAgICAgICAgZnVuYyA9IHRhZyA9PSBtYXBUYWcgPyBtYXBUb0FycmF5IDogKHRhZyA9PSBzZXRUYWcgPyBzZXRUb0FycmF5IDogdmFsdWVzKTtcblxuICAgICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBmaW5pdGUgbnVtYmVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTIuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvRmluaXRlKDMuMik7XG4gICAgICogLy8gPT4gMy4yXG4gICAgICpcbiAgICAgKiBfLnRvRmluaXRlKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDVlLTMyNFxuICAgICAqXG4gICAgICogXy50b0Zpbml0ZShJbmZpbml0eSk7XG4gICAgICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAgICAgKlxuICAgICAqIF8udG9GaW5pdGUoJzMuMicpO1xuICAgICAqIC8vID0+IDMuMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvRmluaXRlKHZhbHVlKSB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMDtcbiAgICAgIH1cbiAgICAgIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICAgICAgaWYgKHZhbHVlID09PSBJTkZJTklUWSB8fCB2YWx1ZSA9PT0gLUlORklOSVRZKSB7XG4gICAgICAgIHZhciBzaWduID0gKHZhbHVlIDwgMCA/IC0xIDogMSk7XG4gICAgICAgIHJldHVybiBzaWduICogTUFYX0lOVEVHRVI7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlID8gdmFsdWUgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gaW50ZWdlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICogW2BUb0ludGVnZXJgXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9pbnRlZ2VyKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0ludGVnZXIoMy4yKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiBfLnRvSW50ZWdlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAgICAgKlxuICAgICAqIF8udG9JbnRlZ2VyKCczLjInKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdG9GaW5pdGUodmFsdWUpLFxuICAgICAgICAgIHJlbWFpbmRlciA9IHJlc3VsdCAlIDE7XG5cbiAgICAgIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIgc3VpdGFibGUgZm9yIHVzZSBhcyB0aGUgbGVuZ3RoIG9mIGFuXG4gICAgICogYXJyYXktbGlrZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKDMuMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy50b0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiA0Mjk0OTY3Mjk1XG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKCczLjInKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9MZW5ndGgodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA/IGJhc2VDbGFtcCh0b0ludGVnZXIodmFsdWUpLCAwLCBNQVhfQVJSQVlfTEVOR1RIKSA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9OdW1iZXIoMy4yKTtcbiAgICAgKiAvLyA9PiAzLjJcbiAgICAgKlxuICAgICAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gNWUtMzI0XG4gICAgICpcbiAgICAgKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBJbmZpbml0eVxuICAgICAqXG4gICAgICogXy50b051bWJlcignMy4yJyk7XG4gICAgICogLy8gPT4gMy4yXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gTkFOO1xuICAgICAgfVxuICAgICAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICB2YXIgb3RoZXIgPSB0eXBlb2YgdmFsdWUudmFsdWVPZiA9PSAnZnVuY3Rpb24nID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICAgICAgfVxuICAgICAgdmFsdWUgPSBiYXNlVHJpbSh2YWx1ZSk7XG4gICAgICB2YXIgaXNCaW5hcnkgPSByZUlzQmluYXJ5LnRlc3QodmFsdWUpO1xuICAgICAgcmV0dXJuIChpc0JpbmFyeSB8fCByZUlzT2N0YWwudGVzdCh2YWx1ZSkpXG4gICAgICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgICAgICA6IChyZUlzQmFkSGV4LnRlc3QodmFsdWUpID8gTkFOIDogK3ZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgcGxhaW4gb2JqZWN0IGZsYXR0ZW5pbmcgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nXG4gICAgICoga2V5ZWQgcHJvcGVydGllcyBvZiBgdmFsdWVgIHRvIG93biBwcm9wZXJ0aWVzIG9mIHRoZSBwbGFpbiBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29udmVydGVkIHBsYWluIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgbmV3IEZvbyk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICpcbiAgICAgKiBfLmFzc2lnbih7ICdhJzogMSB9LCBfLnRvUGxhaW5PYmplY3QobmV3IEZvbykpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9QbGFpbk9iamVjdCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGNvcHlPYmplY3QodmFsdWUsIGtleXNJbih2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzYWZlIGludGVnZXIuIEEgc2FmZSBpbnRlZ2VyIGNhbiBiZSBjb21wYXJlZCBhbmRcbiAgICAgKiByZXByZXNlbnRlZCBjb3JyZWN0bHkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcigzLjIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiBfLnRvU2FmZUludGVnZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IDkwMDcxOTkyNTQ3NDA5OTFcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcignMy4yJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvU2FmZUludGVnZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICA/IGJhc2VDbGFtcCh0b0ludGVnZXIodmFsdWUpLCAtTUFYX1NBRkVfSU5URUdFUiwgTUFYX1NBRkVfSU5URUdFUilcbiAgICAgICAgOiAodmFsdWUgPT09IDAgPyB2YWx1ZSA6IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBmb3IgYG51bGxgXG4gICAgICogYW5kIGB1bmRlZmluZWRgIHZhbHVlcy4gVGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1N0cmluZyhudWxsKTtcbiAgICAgKiAvLyA9PiAnJ1xuICAgICAqXG4gICAgICogXy50b1N0cmluZygtMCk7XG4gICAgICogLy8gPT4gJy0wJ1xuICAgICAqXG4gICAgICogXy50b1N0cmluZyhbMSwgMiwgM10pO1xuICAgICAqIC8vID0+ICcxLDIsMydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1N0cmluZyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQXNzaWducyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2Ugb2JqZWN0cyB0byB0aGVcbiAgICAgKiBkZXN0aW5hdGlvbiBvYmplY3QuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC5cbiAgICAgKiBTdWJzZXF1ZW50IHNvdXJjZXMgb3ZlcndyaXRlIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHNvdXJjZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YCBhbmQgaXMgbG9vc2VseSBiYXNlZCBvblxuICAgICAqIFtgT2JqZWN0LmFzc2lnbmBdKGh0dHBzOi8vbWRuLmlvL09iamVjdC9hc3NpZ24pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uYXNzaWduSW5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBCYXIoKSB7XG4gICAgICogICB0aGlzLmMgPSAzO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYiA9IDI7XG4gICAgICogQmFyLnByb3RvdHlwZS5kID0gNDtcbiAgICAgKlxuICAgICAqIF8uYXNzaWduKHsgJ2EnOiAwIH0sIG5ldyBGb28sIG5ldyBCYXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICAgICAqL1xuICAgIHZhciBhc3NpZ24gPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgaWYgKGlzUHJvdG90eXBlKHNvdXJjZSkgfHwgaXNBcnJheUxpa2Uoc291cmNlKSkge1xuICAgICAgICBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBzb3VyY2Vba2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIG93biBhbmRcbiAgICAgKiBpbmhlcml0ZWQgc291cmNlIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBhbGlhcyBleHRlbmRcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmFzc2lnblxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEJhcigpIHtcbiAgICAgKiAgIHRoaXMuYyA9IDM7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5iID0gMjtcbiAgICAgKiBCYXIucHJvdG90eXBlLmQgPSA0O1xuICAgICAqXG4gICAgICogXy5hc3NpZ25Jbih7ICdhJzogMCB9LCBuZXcgRm9vLCBuZXcgQmFyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMsICdkJzogNCB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbkluID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduSW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBhc3NpZ25lZCB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zXG4gICAgICogYHVuZGVmaW5lZGAsIGFzc2lnbm1lbnQgaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmBcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggZml2ZSBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAYWxpYXMgZXh0ZW5kV2l0aFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5hc3NpZ25XaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICByZXR1cm4gXy5pc1VuZGVmaW5lZChvYmpWYWx1ZSkgPyBzcmNWYWx1ZSA6IG9ialZhbHVlO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBkZWZhdWx0cyA9IF8ucGFydGlhbFJpZ2h0KF8uYXNzaWduSW5XaXRoLCBjdXN0b21pemVyKTtcbiAgICAgKlxuICAgICAqIGRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIHZhciBhc3NpZ25JbldpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0LCBjdXN0b21pemVyKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgYXNzaWduZWQgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJuc1xuICAgICAqIGB1bmRlZmluZWRgLCBhc3NpZ25tZW50IGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgXG4gICAgICogaXMgaW52b2tlZCB3aXRoIGZpdmUgYXJndW1lbnRzOiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gc291cmNlcyBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmFzc2lnbkluV2l0aFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSkge1xuICAgICAqICAgcmV0dXJuIF8uaXNVbmRlZmluZWQob2JqVmFsdWUpID8gc3JjVmFsdWUgOiBvYmpWYWx1ZTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZGVmYXVsdHMgPSBfLnBhcnRpYWxSaWdodChfLmFzc2lnbldpdGgsIGN1c3RvbWl6ZXIpO1xuICAgICAqXG4gICAgICogZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbldpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCwgY3VzdG9taXplcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGBwYXRoc2Agb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcGlja2VkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfSwgNF0gfTtcbiAgICAgKlxuICAgICAqIF8uYXQob2JqZWN0LCBbJ2FbMF0uYi5jJywgJ2FbMV0nXSk7XG4gICAgICogLy8gPT4gWzMsIDRdXG4gICAgICovXG4gICAgdmFyIGF0ID0gZmxhdFJlc3QoYmFzZUF0KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IHRoYXQgaW5oZXJpdHMgZnJvbSB0aGUgYHByb3RvdHlwZWAgb2JqZWN0LiBJZiBhXG4gICAgICogYHByb3BlcnRpZXNgIG9iamVjdCBpcyBnaXZlbiwgaXRzIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzXG4gICAgICogYXJlIGFzc2lnbmVkIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvdG90eXBlIFRoZSBvYmplY3QgdG8gaW5oZXJpdCBmcm9tLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbcHJvcGVydGllc10gVGhlIHByb3BlcnRpZXMgdG8gYXNzaWduIHRvIHRoZSBvYmplY3QuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gU2hhcGUoKSB7XG4gICAgICogICB0aGlzLnggPSAwO1xuICAgICAqICAgdGhpcy55ID0gMDtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBDaXJjbGUoKSB7XG4gICAgICogICBTaGFwZS5jYWxsKHRoaXMpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIENpcmNsZS5wcm90b3R5cGUgPSBfLmNyZWF0ZShTaGFwZS5wcm90b3R5cGUsIHtcbiAgICAgKiAgICdjb25zdHJ1Y3Rvcic6IENpcmNsZVxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogdmFyIGNpcmNsZSA9IG5ldyBDaXJjbGU7XG4gICAgICogY2lyY2xlIGluc3RhbmNlb2YgQ2lyY2xlO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGNpcmNsZSBpbnN0YW5jZW9mIFNoYXBlO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGUocHJvdG90eXBlLCBwcm9wZXJ0aWVzKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZUNyZWF0ZShwcm90b3R5cGUpO1xuICAgICAgcmV0dXJuIHByb3BlcnRpZXMgPT0gbnVsbCA/IHJlc3VsdCA6IGJhc2VBc3NpZ24ocmVzdWx0LCBwcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBc3NpZ25zIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlXG4gICAgICogb2JqZWN0cyB0byB0aGUgZGVzdGluYXRpb24gb2JqZWN0IGZvciBhbGwgZGVzdGluYXRpb24gcHJvcGVydGllcyB0aGF0XG4gICAgICogcmVzb2x2ZSB0byBgdW5kZWZpbmVkYC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICAgICAqIE9uY2UgYSBwcm9wZXJ0eSBpcyBzZXQsIGFkZGl0aW9uYWwgdmFsdWVzIG9mIHRoZSBzYW1lIHByb3BlcnR5IGFyZSBpZ25vcmVkLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmRlZmF1bHRzRGVlcFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIHZhciBkZWZhdWx0cyA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xO1xuICAgICAgdmFyIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoO1xuICAgICAgdmFyIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgICAgbGVuZ3RoID0gMTtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgICAgICB2YXIgcHJvcHMgPSBrZXlzSW4oc291cmNlKTtcbiAgICAgICAgdmFyIHByb3BzSW5kZXggPSAtMTtcbiAgICAgICAgdmFyIHByb3BzTGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgICAgIHdoaWxlICgrK3Byb3BzSW5kZXggPCBwcm9wc0xlbmd0aCkge1xuICAgICAgICAgIHZhciBrZXkgPSBwcm9wc1twcm9wc0luZGV4XTtcbiAgICAgICAgICB2YXIgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgIChlcSh2YWx1ZSwgb2JqZWN0UHJvdG9ba2V5XSkgJiYgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICAgICAgb2JqZWN0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZGVmYXVsdHNgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGFzc2lnbnNcbiAgICAgKiBkZWZhdWx0IHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmRlZmF1bHRzXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdHNEZWVwKHsgJ2EnOiB7ICdiJzogMiB9IH0sIHsgJ2EnOiB7ICdiJzogMSwgJ2MnOiAzIH0gfSk7XG4gICAgICogLy8gPT4geyAnYSc6IHsgJ2InOiAyLCAnYyc6IDMgfSB9XG4gICAgICovXG4gICAgdmFyIGRlZmF1bHRzRGVlcCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgIGFyZ3MucHVzaCh1bmRlZmluZWQsIGN1c3RvbURlZmF1bHRzTWVyZ2UpO1xuICAgICAgcmV0dXJuIGFwcGx5KG1lcmdlV2l0aCwgdW5kZWZpbmVkLCBhcmdzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUga2V5IG9mIHRoZSBmaXJzdFxuICAgICAqIGVsZW1lbnQgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yIGluc3RlYWQgb2YgdGhlIGVsZW1lbnQgaXRzZWxmLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMS4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH0gUmV0dXJucyB0aGUga2V5IG9mIHRoZSBtYXRjaGVkIGVsZW1lbnQsXG4gICAgICogIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IHtcbiAgICAgKiAgICdiYXJuZXknOiAgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICAnZnJlZCc6ICAgIHsgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgICdwZWJibGVzJzogeyAnYWdlJzogMSwgICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5maW5kS2V5KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZSA8IDQwOyB9KTtcbiAgICAgKiAvLyA9PiAnYmFybmV5JyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRLZXkodXNlcnMsIHsgJ2FnZSc6IDEsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+ICdwZWJibGVzJ1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEtleSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+ICdmcmVkJ1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kS2V5KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gJ2Jhcm5leSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kS2V5KG9iamVjdCwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gYmFzZUZpbmRLZXkob2JqZWN0LCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCBiYXNlRm9yT3duKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRLZXlgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2ZcbiAgICAgKiBhIGNvbGxlY3Rpb24gaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH0gUmV0dXJucyB0aGUga2V5IG9mIHRoZSBtYXRjaGVkIGVsZW1lbnQsXG4gICAgICogIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IHtcbiAgICAgKiAgICdiYXJuZXknOiAgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICAnZnJlZCc6ICAgIHsgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgICdwZWJibGVzJzogeyAnYWdlJzogMSwgICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5maW5kTGFzdEtleSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2UgPCA0MDsgfSk7XG4gICAgICogLy8gPT4gcmV0dXJucyAncGViYmxlcycgYXNzdW1pbmcgYF8uZmluZEtleWAgcmV0dXJucyAnYmFybmV5J1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gJ2Jhcm5leSdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gJ3BlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmluZExhc3RLZXkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiBiYXNlRmluZEtleShvYmplY3QsIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGJhc2VGb3JPd25SaWdodCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGFuXG4gICAgICogb2JqZWN0IGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXRcbiAgICAgKiBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmZvckluUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uZm9ySW4obmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdhJywgJ2InLCB0aGVuICdjJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JJbihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGxcbiAgICAgICAgPyBvYmplY3RcbiAgICAgICAgOiBiYXNlRm9yKG9iamVjdCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpLCBrZXlzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZm9ySW5gIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgcHJvcGVydGllcyBvZlxuICAgICAqIGBvYmplY3RgIGluIHRoZSBvcHBvc2l0ZSBvcmRlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmZvckluXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmZvckluUmlnaHQobmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdjJywgJ2InLCB0aGVuICdhJyBhc3N1bWluZyBgXy5mb3JJbmAgbG9ncyAnYScsICdiJywgdGhlbiAnYycuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9ySW5SaWdodChvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGxcbiAgICAgICAgPyBvYmplY3RcbiAgICAgICAgOiBiYXNlRm9yUmlnaHQob2JqZWN0LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyksIGtleXNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBhbiBvYmplY3QgYW5kXG4gICAgICogaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGtleSwgb2JqZWN0KS4gSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvblxuICAgICAqIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5mb3JPd25SaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5mb3JPd24obmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdhJyB0aGVuICdiJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JPd24ob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yT3duKG9iamVjdCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZvck93bmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBwcm9wZXJ0aWVzIG9mXG4gICAgICogYG9iamVjdGAgaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZm9yT3duXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmZvck93blJpZ2h0KG5ldyBGb28sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnYicgdGhlbiAnYScgYXNzdW1pbmcgYF8uZm9yT3duYCBsb2dzICdhJyB0aGVuICdiJy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JPd25SaWdodChvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3JPd25SaWdodChvYmplY3QsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBmdW5jdGlvbiBwcm9wZXJ0eSBuYW1lcyBmcm9tIG93biBlbnVtZXJhYmxlIHByb3BlcnRpZXNcbiAgICAgKiBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGZ1bmN0aW9uIG5hbWVzLlxuICAgICAqIEBzZWUgXy5mdW5jdGlvbnNJblxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSBfLmNvbnN0YW50KCdhJyk7XG4gICAgICogICB0aGlzLmIgPSBfLmNvbnN0YW50KCdiJyk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gXy5jb25zdGFudCgnYycpO1xuICAgICAqXG4gICAgICogXy5mdW5jdGlvbnMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZ1bmN0aW9ucyhvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZUZ1bmN0aW9ucyhvYmplY3QsIGtleXMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBmdW5jdGlvbiBwcm9wZXJ0eSBuYW1lcyBmcm9tIG93biBhbmQgaW5oZXJpdGVkXG4gICAgICogZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZXMuXG4gICAgICogQHNlZSBfLmZ1bmN0aW9uc1xuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSBfLmNvbnN0YW50KCdhJyk7XG4gICAgICogICB0aGlzLmIgPSBfLmNvbnN0YW50KCdiJyk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gXy5jb25zdGFudCgnYycpO1xuICAgICAqXG4gICAgICogXy5mdW5jdGlvbnNJbihuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmdW5jdGlvbnNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZUZ1bmN0aW9ucyhvYmplY3QsIGtleXNJbihvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIHRoZSByZXNvbHZlZCB2YWx1ZSBpc1xuICAgICAqIGB1bmRlZmluZWRgLCB0aGUgYGRlZmF1bHRWYWx1ZWAgaXMgcmV0dXJuZWQgaW4gaXRzIHBsYWNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHJldHVybmVkIGZvciBgdW5kZWZpbmVkYCByZXNvbHZlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICAgICAqXG4gICAgICogXy5nZXQob2JqZWN0LCAnYVswXS5iLmMnKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLmdldChvYmplY3QsIFsnYScsICcwJywgJ2InLCAnYyddKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLmdldChvYmplY3QsICdhLmIuYycsICdkZWZhdWx0Jyk7XG4gICAgICogLy8gPT4gJ2RlZmF1bHQnXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0KG9iamVjdCwgcGF0aCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gICAgICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBkZWZhdWx0VmFsdWUgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBwcm9wZXJ0eSBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiB7ICdiJzogMiB9IH07XG4gICAgICogdmFyIG90aGVyID0gXy5jcmVhdGUoeyAnYSc6IF8uY3JlYXRlKHsgJ2InOiAyIH0pIH0pO1xuICAgICAqXG4gICAgICogXy5oYXMob2JqZWN0LCAnYScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzKG9iamVjdCwgJ2EuYicpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzKG9iamVjdCwgWydhJywgJ2InXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXMob3RoZXIsICdhJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXMob2JqZWN0LCBwYXRoKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcGF0aGAgaXMgYSBkaXJlY3Qgb3IgaW5oZXJpdGVkIHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0gXy5jcmVhdGUoeyAnYSc6IF8uY3JlYXRlKHsgJ2InOiAyIH0pIH0pO1xuICAgICAqXG4gICAgICogXy5oYXNJbihvYmplY3QsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXNJbihvYmplY3QsICdhLmInKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgWydhJywgJ2InXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXNJbihvYmplY3QsICdiJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNJbihvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhc0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGUgaW52ZXJ0ZWQga2V5cyBhbmQgdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqIElmIGBvYmplY3RgIGNvbnRhaW5zIGR1cGxpY2F0ZSB2YWx1ZXMsIHN1YnNlcXVlbnQgdmFsdWVzIG92ZXJ3cml0ZVxuICAgICAqIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjcuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW52ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBpbnZlcnRlZCBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uaW52ZXJ0KG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnMSc6ICdjJywgJzInOiAnYicgfVxuICAgICAqL1xuICAgIHZhciBpbnZlcnQgPSBjcmVhdGVJbnZlcnRlcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmXG4gICAgICAgICAgdHlwZW9mIHZhbHVlLnRvU3RyaW5nICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFsdWUgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0W3ZhbHVlXSA9IGtleTtcbiAgICB9LCBjb25zdGFudChpZGVudGl0eSkpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbnZlcnRgIGV4Y2VwdCB0aGF0IHRoZSBpbnZlcnRlZCBvYmplY3QgaXMgZ2VuZXJhdGVkXG4gICAgICogZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nIGVhY2ggZWxlbWVudCBvZiBgb2JqZWN0YCB0aHJ1IGBpdGVyYXRlZWAuIFRoZVxuICAgICAqIGNvcnJlc3BvbmRpbmcgaW52ZXJ0ZWQgdmFsdWUgb2YgZWFjaCBpbnZlcnRlZCBrZXkgaXMgYW4gYXJyYXkgb2Yga2V5c1xuICAgICAqIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoZSBpbnZlcnRlZCB2YWx1ZS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW52ZXJ0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgaW52ZXJ0ZWQgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH07XG4gICAgICpcbiAgICAgKiBfLmludmVydEJ5KG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnMSc6IFsnYScsICdjJ10sICcyJzogWydiJ10gfVxuICAgICAqXG4gICAgICogXy5pbnZlcnRCeShvYmplY3QsIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICByZXR1cm4gJ2dyb3VwJyArIHZhbHVlO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IHsgJ2dyb3VwMSc6IFsnYScsICdjJ10sICdncm91cDInOiBbJ2InXSB9XG4gICAgICovXG4gICAgdmFyIGludmVydEJ5ID0gY3JlYXRlSW52ZXJ0ZXIoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJlxuICAgICAgICAgIHR5cGVvZiB2YWx1ZS50b1N0cmluZyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhbHVlID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwgdmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdFt2YWx1ZV0ucHVzaChrZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0W3ZhbHVlXSA9IFtrZXldO1xuICAgICAgfVxuICAgIH0sIGdldEl0ZXJhdGVlKTtcblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgdGhlIG1ldGhvZCBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBpbnZva2VkIG1ldGhvZC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiBbMSwgMiwgMywgNF0gfSB9XSB9O1xuICAgICAqXG4gICAgICogXy5pbnZva2Uob2JqZWN0LCAnYVswXS5iLmMuc2xpY2UnLCAxLCAzKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKi9cbiAgICB2YXIgaW52b2tlID0gYmFzZVJlc3QoYmFzZUludm9rZSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLiBTZWUgdGhlXG4gICAgICogW0VTIHNwZWNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmtleXMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogXy5rZXlzKCdoaScpO1xuICAgICAqIC8vID0+IFsnMCcsICcxJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBrZXlzKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8ua2V5c0luKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGtleXNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QsIHRydWUpIDogYmFzZUtleXNJbihvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5tYXBWYWx1ZXNgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCB3aXRoIHRoZVxuICAgICAqIHNhbWUgdmFsdWVzIGFzIGBvYmplY3RgIGFuZCBrZXlzIGdlbmVyYXRlZCBieSBydW5uaW5nIGVhY2ggb3duIGVudW1lcmFibGVcbiAgICAgKiBzdHJpbmcga2V5ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGtleSwgb2JqZWN0KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjguMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgb2JqZWN0LlxuICAgICAqIEBzZWUgXy5tYXBWYWx1ZXNcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXBLZXlzKHsgJ2EnOiAxLCAnYic6IDIgfSwgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgcmV0dXJuIGtleSArIHZhbHVlO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IHsgJ2ExJzogMSwgJ2IyJzogMiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwS2V5cyhvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKTtcblxuICAgICAgYmFzZUZvck93bihvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBpdGVyYXRlZSh2YWx1ZSwga2V5LCBvYmplY3QpLCB2YWx1ZSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBrZXlzIGFzIGBvYmplY3RgIGFuZCB2YWx1ZXMgZ2VuZXJhdGVkXG4gICAgICogYnkgcnVubmluZyBlYWNoIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YCB0aHJ1XG4gICAgICogYGl0ZXJhdGVlYC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6XG4gICAgICogKHZhbHVlLCBrZXksIG9iamVjdCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi40LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIG9iamVjdC5cbiAgICAgKiBAc2VlIF8ubWFwS2V5c1xuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSB7XG4gICAgICogICAnZnJlZCc6ICAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCB9LFxuICAgICAqICAgJ3BlYmJsZXMnOiB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8ubWFwVmFsdWVzKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZTsgfSk7XG4gICAgICogLy8gPT4geyAnZnJlZCc6IDQwLCAncGViYmxlcyc6IDEgfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5tYXBWYWx1ZXModXNlcnMsICdhZ2UnKTtcbiAgICAgKiAvLyA9PiB7ICdmcmVkJzogNDAsICdwZWJibGVzJzogMSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwVmFsdWVzKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpO1xuXG4gICAgICBiYXNlRm9yT3duKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgaXRlcmF0ZWUodmFsdWUsIGtleSwgb2JqZWN0KSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IG1lcmdlcyBvd24gYW5kXG4gICAgICogaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgaW50byB0aGVcbiAgICAgKiBkZXN0aW5hdGlvbiBvYmplY3QuIFNvdXJjZSBwcm9wZXJ0aWVzIHRoYXQgcmVzb2x2ZSB0byBgdW5kZWZpbmVkYCBhcmVcbiAgICAgKiBza2lwcGVkIGlmIGEgZGVzdGluYXRpb24gdmFsdWUgZXhpc3RzLiBBcnJheSBhbmQgcGxhaW4gb2JqZWN0IHByb3BlcnRpZXNcbiAgICAgKiBhcmUgbWVyZ2VkIHJlY3Vyc2l2ZWx5LiBPdGhlciBvYmplY3RzIGFuZCB2YWx1ZSB0eXBlcyBhcmUgb3ZlcnJpZGRlbiBieVxuICAgICAqIGFzc2lnbm1lbnQuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC4gU3Vic2VxdWVudFxuICAgICAqIHNvdXJjZXMgb3ZlcndyaXRlIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHNvdXJjZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjUuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHtcbiAgICAgKiAgICdhJzogW3sgJ2InOiAyIH0sIHsgJ2QnOiA0IH1dXG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBvdGhlciA9IHtcbiAgICAgKiAgICdhJzogW3sgJ2MnOiAzIH0sIHsgJ2UnOiA1IH1dXG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8ubWVyZ2Uob2JqZWN0LCBvdGhlcik7XG4gICAgICogLy8gPT4geyAnYSc6IFt7ICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2QnOiA0LCAnZSc6IDUgfV0gfVxuICAgICAqL1xuICAgIHZhciBtZXJnZSA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCkge1xuICAgICAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1lcmdlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgbWVyZ2VkIHZhbHVlcyBvZiB0aGUgZGVzdGluYXRpb24gYW5kIHNvdXJjZVxuICAgICAqIHByb3BlcnRpZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLCBtZXJnaW5nIGlzIGhhbmRsZWQgYnkgdGhlXG4gICAgICogbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIHNpeCBhcmd1bWVudHM6XG4gICAgICogKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICBpZiAoXy5pc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gb2JqVmFsdWUuY29uY2F0KHNyY1ZhbHVlKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFsxXSwgJ2InOiBbMl0gfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdhJzogWzNdLCAnYic6IFs0XSB9O1xuICAgICAqXG4gICAgICogXy5tZXJnZVdpdGgob2JqZWN0LCBvdGhlciwgY3VzdG9taXplcik7XG4gICAgICogLy8gPT4geyAnYSc6IFsxLCAzXSwgJ2InOiBbMiwgNF0gfVxuICAgICAqL1xuICAgIHZhciBtZXJnZVdpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLnBpY2tgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGVcbiAgICAgKiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IHBhdGhzIG9mIGBvYmplY3RgIHRoYXQgYXJlIG5vdCBvbWl0dGVkLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGNvbnNpZGVyYWJseSBzbG93ZXIgdGhhbiBgXy5waWNrYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIG9taXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLm9taXQob2JqZWN0LCBbJ2EnLCAnYyddKTtcbiAgICAgKiAvLyA9PiB7ICdiJzogJzInIH1cbiAgICAgKi9cbiAgICB2YXIgb21pdCA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgcGF0aHMpIHtcbiAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgdmFyIGlzRGVlcCA9IGZhbHNlO1xuICAgICAgcGF0aHMgPSBhcnJheU1hcChwYXRocywgZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcbiAgICAgICAgaXNEZWVwIHx8IChpc0RlZXAgPSBwYXRoLmxlbmd0aCA+IDEpO1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgIH0pO1xuICAgICAgY29weU9iamVjdChvYmplY3QsIGdldEFsbEtleXNJbihvYmplY3QpLCByZXN1bHQpO1xuICAgICAgaWYgKGlzRGVlcCkge1xuICAgICAgICByZXN1bHQgPSBiYXNlQ2xvbmUocmVzdWx0LCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9GTEFUX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcsIGN1c3RvbU9taXRDbG9uZSk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gcGF0aHMubGVuZ3RoO1xuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIGJhc2VVbnNldChyZXN1bHQsIHBhdGhzW2xlbmd0aF0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5waWNrQnlgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZlxuICAgICAqIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGBvYmplY3RgIHRoYXRcbiAgICAgKiBgcHJlZGljYXRlYCBkb2Vzbid0IHJldHVybiB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0d29cbiAgICAgKiBhcmd1bWVudHM6ICh2YWx1ZSwga2V5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIHByb3BlcnR5LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICAgICAqXG4gICAgICogXy5vbWl0Qnkob2JqZWN0LCBfLmlzTnVtYmVyKTtcbiAgICAgKiAvLyA9PiB7ICdiJzogJzInIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbWl0Qnkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiBwaWNrQnkob2JqZWN0LCBuZWdhdGUoZ2V0SXRlcmF0ZWUocHJlZGljYXRlKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBwaWNrZWQgYG9iamVjdGAgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLnBpY2sob2JqZWN0LCBbJ2EnLCAnYyddKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAgICAgKi9cbiAgICB2YXIgcGljayA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgcGF0aHMpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHt9IDogYmFzZVBpY2sob2JqZWN0LCBwYXRocyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGUgYG9iamVjdGAgcHJvcGVydGllcyBgcHJlZGljYXRlYCByZXR1cm5zXG4gICAgICogdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKHZhbHVlLCBrZXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLnBpY2tCeShvYmplY3QsIF8uaXNOdW1iZXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBpY2tCeShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHZhciBwcm9wcyA9IGFycmF5TWFwKGdldEFsbEtleXNJbihvYmplY3QpLCBmdW5jdGlvbihwcm9wKSB7XG4gICAgICAgIHJldHVybiBbcHJvcF07XG4gICAgICB9KTtcbiAgICAgIHByZWRpY2F0ZSA9IGdldEl0ZXJhdGVlKHByZWRpY2F0ZSk7XG4gICAgICByZXR1cm4gYmFzZVBpY2tCeShvYmplY3QsIHByb3BzLCBmdW5jdGlvbih2YWx1ZSwgcGF0aCkge1xuICAgICAgICByZXR1cm4gcHJlZGljYXRlKHZhbHVlLCBwYXRoWzBdKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZ2V0YCBleGNlcHQgdGhhdCBpZiB0aGUgcmVzb2x2ZWQgdmFsdWUgaXMgYVxuICAgICAqIGZ1bmN0aW9uIGl0J3MgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBpdHMgcGFyZW50IG9iamVjdCBhbmRcbiAgICAgKiBpdHMgcmVzdWx0IGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gcmVzb2x2ZS5cbiAgICAgKiBAcGFyYW0geyp9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgYHVuZGVmaW5lZGAgcmVzb2x2ZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MxJzogMywgJ2MyJzogXy5jb25zdGFudCg0KSB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzEnKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzInKTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzMnLCAnZGVmYXVsdCcpO1xuICAgICAqIC8vID0+ICdkZWZhdWx0J1xuICAgICAqXG4gICAgICogXy5yZXN1bHQob2JqZWN0LCAnYVswXS5iLmMzJywgXy5jb25zdGFudCgnZGVmYXVsdCcpKTtcbiAgICAgKiAvLyA9PiAnZGVmYXVsdCdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXN1bHQob2JqZWN0LCBwYXRoLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aDtcblxuICAgICAgLy8gRW5zdXJlIHRoZSBsb29wIGlzIGVudGVyZWQgd2hlbiBwYXRoIGlzIGVtcHR5LlxuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgbGVuZ3RoID0gMTtcbiAgICAgICAgb2JqZWN0ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3RbdG9LZXkocGF0aFtpbmRleF0pXTtcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpbmRleCA9IGxlbmd0aDtcbiAgICAgICAgICB2YWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3QgPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHZhbHVlLmNhbGwob2JqZWN0KSA6IHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIGEgcG9ydGlvbiBvZiBgcGF0aGAgZG9lc24ndCBleGlzdCxcbiAgICAgKiBpdCdzIGNyZWF0ZWQuIEFycmF5cyBhcmUgY3JlYXRlZCBmb3IgbWlzc2luZyBpbmRleCBwcm9wZXJ0aWVzIHdoaWxlIG9iamVjdHNcbiAgICAgKiBhcmUgY3JlYXRlZCBmb3IgYWxsIG90aGVyIG1pc3NpbmcgcHJvcGVydGllcy4gVXNlIGBfLnNldFdpdGhgIHRvIGN1c3RvbWl6ZVxuICAgICAqIGBwYXRoYCBjcmVhdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8uc2V0KG9iamVjdCwgJ2FbMF0uYi5jJywgNCk7XG4gICAgICogY29uc29sZS5sb2cob2JqZWN0LmFbMF0uYi5jKTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLnNldChvYmplY3QsIFsneCcsICcwJywgJ3knLCAneiddLCA1KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QueFswXS55LnopO1xuICAgICAqIC8vID0+IDVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNldGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIG9iamVjdHMgb2YgYHBhdGhgLiAgSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGBcbiAgICAgKiBwYXRoIGNyZWF0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKG5zVmFsdWUsIGtleSwgbnNPYmplY3QpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHt9O1xuICAgICAqXG4gICAgICogXy5zZXRXaXRoKG9iamVjdCwgJ1swXVsxXScsICdhJywgT2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICcwJzogeyAnMSc6ICdhJyB9IH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRXaXRoKG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQtdmFsdWUgcGFpcnMgZm9yIGBvYmplY3RgXG4gICAgICogd2hpY2ggY2FuIGJlIGNvbnN1bWVkIGJ5IGBfLmZyb21QYWlyc2AuIElmIGBvYmplY3RgIGlzIGEgbWFwIG9yIHNldCwgaXRzXG4gICAgICogZW50cmllcyBhcmUgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAYWxpYXMgZW50cmllc1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLnRvUGFpcnMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gW1snYScsIDFdLCBbJ2InLCAyXV0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICB2YXIgdG9QYWlycyA9IGNyZWF0ZVRvUGFpcnMoa2V5cyk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkLXZhbHVlIHBhaXJzXG4gICAgICogZm9yIGBvYmplY3RgIHdoaWNoIGNhbiBiZSBjb25zdW1lZCBieSBgXy5mcm9tUGFpcnNgLiBJZiBgb2JqZWN0YCBpcyBhIG1hcFxuICAgICAqIG9yIHNldCwgaXRzIGVudHJpZXMgYXJlIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGFsaWFzIGVudHJpZXNJblxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLnRvUGFpcnNJbihuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMV0sIFsnYicsIDJdLCBbJ2MnLCAzXV0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICB2YXIgdG9QYWlyc0luID0gY3JlYXRlVG9QYWlycyhrZXlzSW4pO1xuXG4gICAgLyoqXG4gICAgICogQW4gYWx0ZXJuYXRpdmUgdG8gYF8ucmVkdWNlYDsgdGhpcyBtZXRob2QgdHJhbnNmb3JtcyBgb2JqZWN0YCB0byBhIG5ld1xuICAgICAqIGBhY2N1bXVsYXRvcmAgb2JqZWN0IHdoaWNoIGlzIHRoZSByZXN1bHQgb2YgcnVubmluZyBlYWNoIG9mIGl0cyBvd25cbiAgICAgKiBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIHRocnUgYGl0ZXJhdGVlYCwgd2l0aCBlYWNoIGludm9jYXRpb25cbiAgICAgKiBwb3RlbnRpYWxseSBtdXRhdGluZyB0aGUgYGFjY3VtdWxhdG9yYCBvYmplY3QuIElmIGBhY2N1bXVsYXRvcmAgaXMgbm90XG4gICAgICogcHJvdmlkZWQsIGEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIGBbW1Byb3RvdHlwZV1dYCB3aWxsIGJlIHVzZWQuIFRoZVxuICAgICAqIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBmb3VyIGFyZ3VtZW50czogKGFjY3VtdWxhdG9yLCB2YWx1ZSwga2V5LCBvYmplY3QpLlxuICAgICAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgY3VzdG9tIGFjY3VtdWxhdG9yIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50cmFuc2Zvcm0oWzIsIDMsIDRdLCBmdW5jdGlvbihyZXN1bHQsIG4pIHtcbiAgICAgKiAgIHJlc3VsdC5wdXNoKG4gKj0gbik7XG4gICAgICogICByZXR1cm4gbiAlIDIgPT0gMDtcbiAgICAgKiB9LCBbXSk7XG4gICAgICogLy8gPT4gWzQsIDldXG4gICAgICpcbiAgICAgKiBfLnRyYW5zZm9ybSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICogICAocmVzdWx0W3ZhbHVlXSB8fCAocmVzdWx0W3ZhbHVlXSA9IFtdKSkucHVzaChrZXkpO1xuICAgICAqIH0sIHt9KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJhbnNmb3JtKG9iamVjdCwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICB2YXIgaXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICAgICAgaXNBcnJMaWtlID0gaXNBcnIgfHwgaXNCdWZmZXIob2JqZWN0KSB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KTtcblxuICAgICAgaXRlcmF0ZWUgPSBnZXRJdGVyYXRlZShpdGVyYXRlZSwgNCk7XG4gICAgICBpZiAoYWNjdW11bGF0b3IgPT0gbnVsbCkge1xuICAgICAgICB2YXIgQ3RvciA9IG9iamVjdCAmJiBvYmplY3QuY29uc3RydWN0b3I7XG4gICAgICAgIGlmIChpc0Fyckxpa2UpIHtcbiAgICAgICAgICBhY2N1bXVsYXRvciA9IGlzQXJyID8gbmV3IEN0b3IgOiBbXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgICAgYWNjdW11bGF0b3IgPSBpc0Z1bmN0aW9uKEN0b3IpID8gYmFzZUNyZWF0ZShnZXRQcm90b3R5cGUob2JqZWN0KSkgOiB7fTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBhY2N1bXVsYXRvciA9IHt9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAoaXNBcnJMaWtlID8gYXJyYXlFYWNoIDogYmFzZUZvck93bikob2JqZWN0LCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIG9iamVjdCkge1xuICAgICAgICByZXR1cm4gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgb2JqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdGhlIHByb3BlcnR5IGF0IGBwYXRoYCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHVuc2V0LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgaXMgZGVsZXRlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDcgfSB9XSB9O1xuICAgICAqIF8udW5zZXQob2JqZWN0LCAnYVswXS5iLmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QpO1xuICAgICAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IHt9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLnVuc2V0KG9iamVjdCwgWydhJywgJzAnLCAnYicsICdjJ10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnYSc6IFt7ICdiJzoge30gfV0gfTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bnNldChvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHRydWUgOiBiYXNlVW5zZXQob2JqZWN0LCBwYXRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNldGAgZXhjZXB0IHRoYXQgYWNjZXB0cyBgdXBkYXRlcmAgdG8gcHJvZHVjZSB0aGVcbiAgICAgKiB2YWx1ZSB0byBzZXQuIFVzZSBgXy51cGRhdGVXaXRoYCB0byBjdXN0b21pemUgYHBhdGhgIGNyZWF0aW9uLiBUaGUgYHVwZGF0ZXJgXG4gICAgICogaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNi4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB1cGRhdGVyIFRoZSBmdW5jdGlvbiB0byBwcm9kdWNlIHRoZSB1cGRhdGVkIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLnVwZGF0ZShvYmplY3QsICdhWzBdLmIuYycsIGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gKiBuOyB9KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QuYVswXS5iLmMpO1xuICAgICAqIC8vID0+IDlcbiAgICAgKlxuICAgICAqIF8udXBkYXRlKG9iamVjdCwgJ3hbMF0ueS56JywgZnVuY3Rpb24obikgeyByZXR1cm4gbiA/IG4gKyAxIDogMDsgfSk7XG4gICAgICogY29uc29sZS5sb2cob2JqZWN0LnhbMF0ueS56KTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICovXG4gICAgZnVuY3Rpb24gdXBkYXRlKG9iamVjdCwgcGF0aCwgdXBkYXRlcikge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVVwZGF0ZShvYmplY3QsIHBhdGgsIGNhc3RGdW5jdGlvbih1cGRhdGVyKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51cGRhdGVgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCB0byBwcm9kdWNlIHRoZSBvYmplY3RzIG9mIGBwYXRoYC4gIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgXG4gICAgICogcGF0aCBjcmVhdGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6IChuc1ZhbHVlLCBrZXksIG5zT2JqZWN0KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNi4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB1cGRhdGVyIFRoZSBmdW5jdGlvbiB0byBwcm9kdWNlIHRoZSB1cGRhdGVkIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge307XG4gICAgICpcbiAgICAgKiBfLnVwZGF0ZVdpdGgob2JqZWN0LCAnWzBdWzFdJywgXy5jb25zdGFudCgnYScpLCBPYmplY3QpO1xuICAgICAqIC8vID0+IHsgJzAnOiB7ICcxJzogJ2EnIH0gfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVwZGF0ZVdpdGgob2JqZWN0LCBwYXRoLCB1cGRhdGVyLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlVXBkYXRlKG9iamVjdCwgcGF0aCwgY2FzdEZ1bmN0aW9uKHVwZGF0ZXIpLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHkgdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy52YWx1ZXMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gWzEsIDJdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiBfLnZhbHVlcygnaGknKTtcbiAgICAgKiAvLyA9PiBbJ2gnLCAnaSddXG4gICAgICovXG4gICAgZnVuY3Rpb24gdmFsdWVzKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlVmFsdWVzKG9iamVjdCwga2V5cyhvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eVxuICAgICAqIHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8udmFsdWVzSW4obmV3IEZvbyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gdmFsdWVzSW4ob2JqZWN0KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VWYWx1ZXMob2JqZWN0LCBrZXlzSW4ob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ2xhbXBzIGBudW1iZXJgIHdpdGhpbiB0aGUgaW5jbHVzaXZlIGBsb3dlcmAgYW5kIGB1cHBlcmAgYm91bmRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE51bWJlclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjbGFtcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyXSBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjbGFtcGVkIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jbGFtcCgtMTAsIC01LCA1KTtcbiAgICAgKiAvLyA9PiAtNVxuICAgICAqXG4gICAgICogXy5jbGFtcCgxMCwgLTUsIDUpO1xuICAgICAqIC8vID0+IDVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbGFtcChudW1iZXIsIGxvd2VyLCB1cHBlcikge1xuICAgICAgaWYgKHVwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdXBwZXIgPSBsb3dlcjtcbiAgICAgICAgbG93ZXIgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAodXBwZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cHBlciA9IHRvTnVtYmVyKHVwcGVyKTtcbiAgICAgICAgdXBwZXIgPSB1cHBlciA9PT0gdXBwZXIgPyB1cHBlciA6IDA7XG4gICAgICB9XG4gICAgICBpZiAobG93ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsb3dlciA9IHRvTnVtYmVyKGxvd2VyKTtcbiAgICAgICAgbG93ZXIgPSBsb3dlciA9PT0gbG93ZXIgPyBsb3dlciA6IDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUNsYW1wKHRvTnVtYmVyKG51bWJlciksIGxvd2VyLCB1cHBlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBuYCBpcyBiZXR3ZWVuIGBzdGFydGAgYW5kIHVwIHRvLCBidXQgbm90IGluY2x1ZGluZywgYGVuZGAuIElmXG4gICAgICogYGVuZGAgaXMgbm90IHNwZWNpZmllZCwgaXQncyBzZXQgdG8gYHN0YXJ0YCB3aXRoIGBzdGFydGAgdGhlbiBzZXQgdG8gYDBgLlxuICAgICAqIElmIGBzdGFydGAgaXMgZ3JlYXRlciB0aGFuIGBlbmRgIHRoZSBwYXJhbXMgYXJlIHN3YXBwZWQgdG8gc3VwcG9ydFxuICAgICAqIG5lZ2F0aXZlIHJhbmdlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjMuMFxuICAgICAqIEBjYXRlZ29yeSBOdW1iZXJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBudW1iZXJgIGlzIGluIHRoZSByYW5nZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5yYW5nZSwgXy5yYW5nZVJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgzLCAyLCA0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoNCwgOCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDQsIDIpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoMiwgMik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgxLjIsIDIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSg1LjIsIDQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoLTMsIC0yLCAtNik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluUmFuZ2UobnVtYmVyLCBzdGFydCwgZW5kKSB7XG4gICAgICBzdGFydCA9IHRvRmluaXRlKHN0YXJ0KTtcbiAgICAgIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBlbmQgPSBzdGFydDtcbiAgICAgICAgc3RhcnQgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW5kID0gdG9GaW5pdGUoZW5kKTtcbiAgICAgIH1cbiAgICAgIG51bWJlciA9IHRvTnVtYmVyKG51bWJlcik7XG4gICAgICByZXR1cm4gYmFzZUluUmFuZ2UobnVtYmVyLCBzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9kdWNlcyBhIHJhbmRvbSBudW1iZXIgYmV0d2VlbiB0aGUgaW5jbHVzaXZlIGBsb3dlcmAgYW5kIGB1cHBlcmAgYm91bmRzLlxuICAgICAqIElmIG9ubHkgb25lIGFyZ3VtZW50IGlzIHByb3ZpZGVkIGEgbnVtYmVyIGJldHdlZW4gYDBgIGFuZCB0aGUgZ2l2ZW4gbnVtYmVyXG4gICAgICogaXMgcmV0dXJuZWQuIElmIGBmbG9hdGluZ2AgaXMgYHRydWVgLCBvciBlaXRoZXIgYGxvd2VyYCBvciBgdXBwZXJgIGFyZVxuICAgICAqIGZsb2F0cywgYSBmbG9hdGluZy1wb2ludCBudW1iZXIgaXMgcmV0dXJuZWQgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEphdmFTY3JpcHQgZm9sbG93cyB0aGUgSUVFRS03NTQgc3RhbmRhcmQgZm9yIHJlc29sdmluZ1xuICAgICAqIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGljaCBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgTnVtYmVyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsb3dlcj0wXSBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFt1cHBlcj0xXSBUaGUgdXBwZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZmxvYXRpbmddIFNwZWNpZnkgcmV0dXJuaW5nIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJhbmRvbSBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDAsIDUpO1xuICAgICAqIC8vID0+IGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCA1XG4gICAgICpcbiAgICAgKiBfLnJhbmRvbSg1KTtcbiAgICAgKiAvLyA9PiBhbHNvIGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCA1XG4gICAgICpcbiAgICAgKiBfLnJhbmRvbSg1LCB0cnVlKTtcbiAgICAgKiAvLyA9PiBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBiZXR3ZWVuIDAgYW5kIDVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDEuMiwgNS4yKTtcbiAgICAgKiAvLyA9PiBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBiZXR3ZWVuIDEuMiBhbmQgNS4yXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmFuZG9tKGxvd2VyLCB1cHBlciwgZmxvYXRpbmcpIHtcbiAgICAgIGlmIChmbG9hdGluZyAmJiB0eXBlb2YgZmxvYXRpbmcgIT0gJ2Jvb2xlYW4nICYmIGlzSXRlcmF0ZWVDYWxsKGxvd2VyLCB1cHBlciwgZmxvYXRpbmcpKSB7XG4gICAgICAgIHVwcGVyID0gZmxvYXRpbmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAoZmxvYXRpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIHVwcGVyID09ICdib29sZWFuJykge1xuICAgICAgICAgIGZsb2F0aW5nID0gdXBwZXI7XG4gICAgICAgICAgdXBwZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGxvd2VyID09ICdib29sZWFuJykge1xuICAgICAgICAgIGZsb2F0aW5nID0gbG93ZXI7XG4gICAgICAgICAgbG93ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChsb3dlciA9PT0gdW5kZWZpbmVkICYmIHVwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbG93ZXIgPSAwO1xuICAgICAgICB1cHBlciA9IDE7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgbG93ZXIgPSB0b0Zpbml0ZShsb3dlcik7XG4gICAgICAgIGlmICh1cHBlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdXBwZXIgPSBsb3dlcjtcbiAgICAgICAgICBsb3dlciA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXBwZXIgPSB0b0Zpbml0ZSh1cHBlcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChsb3dlciA+IHVwcGVyKSB7XG4gICAgICAgIHZhciB0ZW1wID0gbG93ZXI7XG4gICAgICAgIGxvd2VyID0gdXBwZXI7XG4gICAgICAgIHVwcGVyID0gdGVtcDtcbiAgICAgIH1cbiAgICAgIGlmIChmbG9hdGluZyB8fCBsb3dlciAlIDEgfHwgdXBwZXIgJSAxKSB7XG4gICAgICAgIHZhciByYW5kID0gbmF0aXZlUmFuZG9tKCk7XG4gICAgICAgIHJldHVybiBuYXRpdmVNaW4obG93ZXIgKyAocmFuZCAqICh1cHBlciAtIGxvd2VyICsgZnJlZVBhcnNlRmxvYXQoJzFlLScgKyAoKHJhbmQgKyAnJykubGVuZ3RoIC0gMSkpKSksIHVwcGVyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlUmFuZG9tKGxvd2VyLCB1cHBlcik7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gW2NhbWVsIGNhc2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhbWVsQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjYW1lbCBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2FtZWxDYXNlKCdGb28gQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvb0JhcidcbiAgICAgKlxuICAgICAqIF8uY2FtZWxDYXNlKCctLWZvby1iYXItLScpO1xuICAgICAqIC8vID0+ICdmb29CYXInXG4gICAgICpcbiAgICAgKiBfLmNhbWVsQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnZm9vQmFyJ1xuICAgICAqL1xuICAgIHZhciBjYW1lbENhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHdvcmQgPSB3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gY2FwaXRhbGl6ZSh3b3JkKSA6IHdvcmQpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byB1cHBlciBjYXNlIGFuZCB0aGUgcmVtYWluaW5nXG4gICAgICogdG8gbG93ZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjYXBpdGFsaXplLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNhcGl0YWxpemVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jYXBpdGFsaXplKCdGUkVEJyk7XG4gICAgICogLy8gPT4gJ0ZyZWQnXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FwaXRhbGl6ZShzdHJpbmcpIHtcbiAgICAgIHJldHVybiB1cHBlckZpcnN0KHRvU3RyaW5nKHN0cmluZykudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVidXJycyBgc3RyaW5nYCBieSBjb252ZXJ0aW5nXG4gICAgICogW0xhdGluLTEgU3VwcGxlbWVudF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGF0aW4tMV9TdXBwbGVtZW50XyhVbmljb2RlX2Jsb2NrKSNDaGFyYWN0ZXJfdGFibGUpXG4gICAgICogYW5kIFtMYXRpbiBFeHRlbmRlZC1BXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXRpbl9FeHRlbmRlZC1BKVxuICAgICAqIGxldHRlcnMgdG8gYmFzaWMgTGF0aW4gbGV0dGVycyBhbmQgcmVtb3ZpbmdcbiAgICAgKiBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3MpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGRlYnVyci5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBkZWJ1cnJlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVidXJyKCdkXHUwMEU5alx1MDBFMCB2dScpO1xuICAgICAqIC8vID0+ICdkZWphIHZ1J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlYnVycihzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICByZXR1cm4gc3RyaW5nICYmIHN0cmluZy5yZXBsYWNlKHJlTGF0aW4sIGRlYnVyckxldHRlcikucmVwbGFjZShyZUNvbWJvTWFyaywgJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgc3RyaW5nYCBlbmRzIHdpdGggdGhlIGdpdmVuIHRhcmdldCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3RhcmdldF0gVGhlIHN0cmluZyB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcG9zaXRpb249c3RyaW5nLmxlbmd0aF0gVGhlIHBvc2l0aW9uIHRvIHNlYXJjaCB1cCB0by5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHN0cmluZ2AgZW5kcyB3aXRoIGB0YXJnZXRgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZW5kc1dpdGgoJ2FiYycsICdjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5lbmRzV2l0aCgnYWJjJywgJ2InKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5lbmRzV2l0aCgnYWJjJywgJ2InLCAyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gZW5kc1dpdGgoc3RyaW5nLCB0YXJnZXQsIHBvc2l0aW9uKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgdGFyZ2V0ID0gYmFzZVRvU3RyaW5nKHRhcmdldCk7XG5cbiAgICAgIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbiA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gbGVuZ3RoXG4gICAgICAgIDogYmFzZUNsYW1wKHRvSW50ZWdlcihwb3NpdGlvbiksIDAsIGxlbmd0aCk7XG5cbiAgICAgIHZhciBlbmQgPSBwb3NpdGlvbjtcbiAgICAgIHBvc2l0aW9uIC09IHRhcmdldC5sZW5ndGg7XG4gICAgICByZXR1cm4gcG9zaXRpb24gPj0gMCAmJiBzdHJpbmcuc2xpY2UocG9zaXRpb24sIGVuZCkgPT0gdGFyZ2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBjaGFyYWN0ZXJzIFwiJlwiLCBcIjxcIiwgXCI+XCIsICdcIicsIGFuZCBcIidcIiBpbiBgc3RyaW5nYCB0byB0aGVpclxuICAgICAqIGNvcnJlc3BvbmRpbmcgSFRNTCBlbnRpdGllcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBObyBvdGhlciBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkLiBUbyBlc2NhcGUgYWRkaXRpb25hbFxuICAgICAqIGNoYXJhY3RlcnMgdXNlIGEgdGhpcmQtcGFydHkgbGlicmFyeSBsaWtlIFtfaGVfXShodHRwczovL210aHMuYmUvaGUpLlxuICAgICAqXG4gICAgICogVGhvdWdoIHRoZSBcIj5cIiBjaGFyYWN0ZXIgaXMgZXNjYXBlZCBmb3Igc3ltbWV0cnksIGNoYXJhY3RlcnMgbGlrZVxuICAgICAqIFwiPlwiIGFuZCBcIi9cIiBkb24ndCBuZWVkIGVzY2FwaW5nIGluIEhUTUwgYW5kIGhhdmUgbm8gc3BlY2lhbCBtZWFuaW5nXG4gICAgICogdW5sZXNzIHRoZXkncmUgcGFydCBvZiBhIHRhZyBvciB1bnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUuIFNlZVxuICAgICAqIFtNYXRoaWFzIEJ5bmVucydzIGFydGljbGVdKGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9hbWJpZ3VvdXMtYW1wZXJzYW5kcylcbiAgICAgKiAodW5kZXIgXCJzZW1pLXJlbGF0ZWQgZnVuIGZhY3RcIikgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKlxuICAgICAqIFdoZW4gd29ya2luZyB3aXRoIEhUTUwgeW91IHNob3VsZCBhbHdheXNcbiAgICAgKiBbcXVvdGUgYXR0cmlidXRlIHZhbHVlc10oaHR0cDovL3dvbmtvLmNvbS9wb3N0L2h0bWwtZXNjYXBpbmcpIHRvIHJlZHVjZVxuICAgICAqIFhTUyB2ZWN0b3JzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGVzY2FwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5lc2NhcGUoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICogLy8gPT4gJ2ZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlc2NhcGUoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNVbmVzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSlcbiAgICAgICAgPyBzdHJpbmcucmVwbGFjZShyZVVuZXNjYXBlZEh0bWwsIGVzY2FwZUh0bWxDaGFyKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFc2NhcGVzIHRoZSBgUmVnRXhwYCBzcGVjaWFsIGNoYXJhY3RlcnMgXCJeXCIsIFwiJFwiLCBcIlxcXCIsIFwiLlwiLCBcIipcIiwgXCIrXCIsXG4gICAgICogXCI/XCIsIFwiKFwiLCBcIilcIiwgXCJbXCIsIFwiXVwiLCBcIntcIiwgXCJ9XCIsIGFuZCBcInxcIiBpbiBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZXNjYXBlUmVnRXhwKCdbbG9kYXNoXShodHRwczovL2xvZGFzaC5jb20vKScpO1xuICAgICAqIC8vID0+ICdcXFtsb2Rhc2hcXF1cXChodHRwczovL2xvZGFzaFxcLmNvbS9cXCknXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHN0cmluZykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHJldHVybiAoc3RyaW5nICYmIHJlSGFzUmVnRXhwQ2hhci50ZXN0KHN0cmluZykpXG4gICAgICAgID8gc3RyaW5nLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG9cbiAgICAgKiBba2ViYWIgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGV0dGVyX2Nhc2UjU3BlY2lhbF9jYXNlX3N0eWxlcykuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBrZWJhYiBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ua2ViYWJDYXNlKCdGb28gQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvby1iYXInXG4gICAgICpcbiAgICAgKiBfLmtlYmFiQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvby1iYXInXG4gICAgICpcbiAgICAgKiBfLmtlYmFiQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnZm9vLWJhcidcbiAgICAgKi9cbiAgICB2YXIga2ViYWJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJy0nIDogJycpICsgd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIHNwYWNlIHNlcGFyYXRlZCB3b3JkcywgdG8gbG93ZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGxvd2VyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sb3dlckNhc2UoJy0tRm9vLUJhci0tJyk7XG4gICAgICogLy8gPT4gJ2ZvbyBiYXInXG4gICAgICpcbiAgICAgKiBfLmxvd2VyQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2ZvbyBiYXInXG4gICAgICpcbiAgICAgKiBfLmxvd2VyQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnZm9vIGJhcidcbiAgICAgKi9cbiAgICB2YXIgbG93ZXJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byBsb3dlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sb3dlckZpcnN0KCdGcmVkJyk7XG4gICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICpcbiAgICAgKiBfLmxvd2VyRmlyc3QoJ0ZSRUQnKTtcbiAgICAgKiAvLyA9PiAnZlJFRCdcbiAgICAgKi9cbiAgICB2YXIgbG93ZXJGaXJzdCA9IGNyZWF0ZUNhc2VGaXJzdCgndG9Mb3dlckNhc2UnKTtcblxuICAgIC8qKlxuICAgICAqIFBhZHMgYHN0cmluZ2Agb24gdGhlIGxlZnQgYW5kIHJpZ2h0IHNpZGVzIGlmIGl0J3Mgc2hvcnRlciB0aGFuIGBsZW5ndGhgLlxuICAgICAqIFBhZGRpbmcgY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgY2FuJ3QgYmUgZXZlbmx5IGRpdmlkZWQgYnkgYGxlbmd0aGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcGFkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPTBdIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYWQoJ2FiYycsIDgpO1xuICAgICAqIC8vID0+ICcgIGFiYyAgICdcbiAgICAgKlxuICAgICAqIF8ucGFkKCdhYmMnLCA4LCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnXy1hYmNfLV8nXG4gICAgICpcbiAgICAgKiBfLnBhZCgnYWJjJywgMyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYWQoc3RyaW5nLCBsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgbGVuZ3RoID0gdG9JbnRlZ2VyKGxlbmd0aCk7XG5cbiAgICAgIHZhciBzdHJMZW5ndGggPSBsZW5ndGggPyBzdHJpbmdTaXplKHN0cmluZykgOiAwO1xuICAgICAgaWYgKCFsZW5ndGggfHwgc3RyTGVuZ3RoID49IGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIG1pZCA9IChsZW5ndGggLSBzdHJMZW5ndGgpIC8gMjtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGNyZWF0ZVBhZGRpbmcobmF0aXZlRmxvb3IobWlkKSwgY2hhcnMpICtcbiAgICAgICAgc3RyaW5nICtcbiAgICAgICAgY3JlYXRlUGFkZGluZyhuYXRpdmVDZWlsKG1pZCksIGNoYXJzKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYWRzIGBzdHJpbmdgIG9uIHRoZSByaWdodCBzaWRlIGlmIGl0J3Mgc2hvcnRlciB0aGFuIGBsZW5ndGhgLiBQYWRkaW5nXG4gICAgICogY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgZXhjZWVkIGBsZW5ndGhgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHBhZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD0wXSBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz0nICddIFRoZSBzdHJpbmcgdXNlZCBhcyBwYWRkaW5nLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucGFkRW5kKCdhYmMnLCA2KTtcbiAgICAgKiAvLyA9PiAnYWJjICAgJ1xuICAgICAqXG4gICAgICogXy5wYWRFbmQoJ2FiYycsIDYsICdfLScpO1xuICAgICAqIC8vID0+ICdhYmNfLV8nXG4gICAgICpcbiAgICAgKiBfLnBhZEVuZCgnYWJjJywgMyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYWRFbmQoc3RyaW5nLCBsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgbGVuZ3RoID0gdG9JbnRlZ2VyKGxlbmd0aCk7XG5cbiAgICAgIHZhciBzdHJMZW5ndGggPSBsZW5ndGggPyBzdHJpbmdTaXplKHN0cmluZykgOiAwO1xuICAgICAgcmV0dXJuIChsZW5ndGggJiYgc3RyTGVuZ3RoIDwgbGVuZ3RoKVxuICAgICAgICA/IChzdHJpbmcgKyBjcmVhdGVQYWRkaW5nKGxlbmd0aCAtIHN0ckxlbmd0aCwgY2hhcnMpKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYWRzIGBzdHJpbmdgIG9uIHRoZSBsZWZ0IHNpZGUgaWYgaXQncyBzaG9ydGVyIHRoYW4gYGxlbmd0aGAuIFBhZGRpbmdcbiAgICAgKiBjaGFyYWN0ZXJzIGFyZSB0cnVuY2F0ZWQgaWYgdGhleSBleGNlZWQgYGxlbmd0aGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcGFkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPTBdIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYWRTdGFydCgnYWJjJywgNik7XG4gICAgICogLy8gPT4gJyAgIGFiYydcbiAgICAgKlxuICAgICAqIF8ucGFkU3RhcnQoJ2FiYycsIDYsICdfLScpO1xuICAgICAqIC8vID0+ICdfLV9hYmMnXG4gICAgICpcbiAgICAgKiBfLnBhZFN0YXJ0KCdhYmMnLCAzKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhZFN0YXJ0KHN0cmluZywgbGVuZ3RoLCBjaGFycykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGxlbmd0aCA9IHRvSW50ZWdlcihsZW5ndGgpO1xuXG4gICAgICB2YXIgc3RyTGVuZ3RoID0gbGVuZ3RoID8gc3RyaW5nU2l6ZShzdHJpbmcpIDogMDtcbiAgICAgIHJldHVybiAobGVuZ3RoICYmIHN0ckxlbmd0aCA8IGxlbmd0aClcbiAgICAgICAgPyAoY3JlYXRlUGFkZGluZyhsZW5ndGggLSBzdHJMZW5ndGgsIGNoYXJzKSArIHN0cmluZylcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gYW4gaW50ZWdlciBvZiB0aGUgc3BlY2lmaWVkIHJhZGl4LiBJZiBgcmFkaXhgIGlzXG4gICAgICogYHVuZGVmaW5lZGAgb3IgYDBgLCBhIGByYWRpeGAgb2YgYDEwYCBpcyB1c2VkIHVubGVzcyBgdmFsdWVgIGlzIGFcbiAgICAgKiBoZXhhZGVjaW1hbCwgaW4gd2hpY2ggY2FzZSBhIGByYWRpeGAgb2YgYDE2YCBpcyB1c2VkLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGFsaWducyB3aXRoIHRoZVxuICAgICAqIFtFUzUgaW1wbGVtZW50YXRpb25dKGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDE1LjEuMi4yKSBvZiBgcGFyc2VJbnRgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMS4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcmFkaXg9MTBdIFRoZSByYWRpeCB0byBpbnRlcnByZXQgYHZhbHVlYCBieS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnBhcnNlSW50KCcwOCcpO1xuICAgICAqIC8vID0+IDhcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnNicsICcwOCcsICcxMCddLCBfLnBhcnNlSW50KTtcbiAgICAgKiAvLyA9PiBbNiwgOCwgMTBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFyc2VJbnQoc3RyaW5nLCByYWRpeCwgZ3VhcmQpIHtcbiAgICAgIGlmIChndWFyZCB8fCByYWRpeCA9PSBudWxsKSB7XG4gICAgICAgIHJhZGl4ID0gMDtcbiAgICAgIH0gZWxzZSBpZiAocmFkaXgpIHtcbiAgICAgICAgcmFkaXggPSArcmFkaXg7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmF0aXZlUGFyc2VJbnQodG9TdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJyksIHJhZGl4IHx8IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcGVhdHMgdGhlIGdpdmVuIHN0cmluZyBgbmAgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcmVwZWF0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJlcGVhdCB0aGUgc3RyaW5nLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmVwZWF0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJlcGVhdCgnKicsIDMpO1xuICAgICAqIC8vID0+ICcqKionXG4gICAgICpcbiAgICAgKiBfLnJlcGVhdCgnYWJjJywgMik7XG4gICAgICogLy8gPT4gJ2FiY2FiYydcbiAgICAgKlxuICAgICAqIF8ucmVwZWF0KCdhYmMnLCAwKTtcbiAgICAgKiAvLyA9PiAnJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlcGVhdChzdHJpbmcsIG4sIGd1YXJkKSB7XG4gICAgICBpZiAoKGd1YXJkID8gaXNJdGVyYXRlZUNhbGwoc3RyaW5nLCBuLCBndWFyZCkgOiBuID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIG4gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlUmVwZWF0KHRvU3RyaW5nKHN0cmluZyksIG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcGxhY2VzIG1hdGNoZXMgZm9yIGBwYXR0ZXJuYCBpbiBgc3RyaW5nYCB3aXRoIGByZXBsYWNlbWVudGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFN0cmluZyNyZXBsYWNlYF0oaHR0cHM6Ly9tZG4uaW8vU3RyaW5nL3JlcGxhY2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IHBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gcmVwbGFjZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufHN0cmluZ30gcmVwbGFjZW1lbnQgVGhlIG1hdGNoIHJlcGxhY2VtZW50LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIG1vZGlmaWVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yZXBsYWNlKCdIaSBGcmVkJywgJ0ZyZWQnLCAnQmFybmV5Jyk7XG4gICAgICogLy8gPT4gJ0hpIEJhcm5leSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXBsYWNlKCkge1xuICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgc3RyaW5nID0gdG9TdHJpbmcoYXJnc1swXSk7XG5cbiAgICAgIHJldHVybiBhcmdzLmxlbmd0aCA8IDMgPyBzdHJpbmcgOiBzdHJpbmcucmVwbGFjZShhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0b1xuICAgICAqIFtzbmFrZSBjYXNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TbmFrZV9jYXNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNuYWtlIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zbmFrZUNhc2UoJ0ZvbyBCYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vX2JhcidcbiAgICAgKlxuICAgICAqIF8uc25ha2VDYXNlKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vX2JhcidcbiAgICAgKlxuICAgICAqIF8uc25ha2VDYXNlKCctLUZPTy1CQVItLScpO1xuICAgICAqIC8vID0+ICdmb29fYmFyJ1xuICAgICAqL1xuICAgIHZhciBzbmFrZUNhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyAnXycgOiAnJykgKyB3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBTcGxpdHMgYHN0cmluZ2AgYnkgYHNlcGFyYXRvcmAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFN0cmluZyNzcGxpdGBdKGh0dHBzOi8vbWRuLmlvL1N0cmluZy9zcGxpdCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gc3BsaXQuXG4gICAgICogQHBhcmFtIHtSZWdFeHB8c3RyaW5nfSBzZXBhcmF0b3IgVGhlIHNlcGFyYXRvciBwYXR0ZXJuIHRvIHNwbGl0IGJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGltaXRdIFRoZSBsZW5ndGggdG8gdHJ1bmNhdGUgcmVzdWx0cyB0by5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHN0cmluZyBzZWdtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zcGxpdCgnYS1iLWMnLCAnLScsIDIpO1xuICAgICAqIC8vID0+IFsnYScsICdiJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzcGxpdChzdHJpbmcsIHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAgIGlmIChsaW1pdCAmJiB0eXBlb2YgbGltaXQgIT0gJ251bWJlcicgJiYgaXNJdGVyYXRlZUNhbGwoc3RyaW5nLCBzZXBhcmF0b3IsIGxpbWl0KSkge1xuICAgICAgICBzZXBhcmF0b3IgPSBsaW1pdCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGxpbWl0ID0gbGltaXQgPT09IHVuZGVmaW5lZCA/IE1BWF9BUlJBWV9MRU5HVEggOiBsaW1pdCA+Pj4gMDtcbiAgICAgIGlmICghbGltaXQpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKFxuICAgICAgICAgICAgdHlwZW9mIHNlcGFyYXRvciA9PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgKHNlcGFyYXRvciAhPSBudWxsICYmICFpc1JlZ0V4cChzZXBhcmF0b3IpKVxuICAgICAgICAgICkpIHtcbiAgICAgICAgc2VwYXJhdG9yID0gYmFzZVRvU3RyaW5nKHNlcGFyYXRvcik7XG4gICAgICAgIGlmICghc2VwYXJhdG9yICYmIGhhc1VuaWNvZGUoc3RyaW5nKSkge1xuICAgICAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyaW5nVG9BcnJheShzdHJpbmcpLCAwLCBsaW1pdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHJpbmcuc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG9cbiAgICAgKiBbc3RhcnQgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGV0dGVyX2Nhc2UjU3R5bGlzdGljX29yX3NwZWNpYWxpc2VkX3VzYWdlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0YXJ0IGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zdGFydENhc2UoJy0tZm9vLWJhci0tJyk7XG4gICAgICogLy8gPT4gJ0ZvbyBCYXInXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0Q2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ0ZvbyBCYXInXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0Q2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnRk9PIEJBUidcbiAgICAgKi9cbiAgICB2YXIgc3RhcnRDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgdXBwZXJGaXJzdCh3b3JkKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgc3RyaW5nYCBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gdGFyZ2V0IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdGFyZ2V0XSBUaGUgc3RyaW5nIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwb3NpdGlvbj0wXSBUaGUgcG9zaXRpb24gdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBzdHJpbmdgIHN0YXJ0cyB3aXRoIGB0YXJnZXRgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3RhcnRzV2l0aCgnYWJjJywgJ2EnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0c1dpdGgoJ2FiYycsICdiJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uc3RhcnRzV2l0aCgnYWJjJywgJ2InLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhcnRzV2l0aChzdHJpbmcsIHRhcmdldCwgcG9zaXRpb24pIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uID09IG51bGxcbiAgICAgICAgPyAwXG4gICAgICAgIDogYmFzZUNsYW1wKHRvSW50ZWdlcihwb3NpdGlvbiksIDAsIHN0cmluZy5sZW5ndGgpO1xuXG4gICAgICB0YXJnZXQgPSBiYXNlVG9TdHJpbmcodGFyZ2V0KTtcbiAgICAgIHJldHVybiBzdHJpbmcuc2xpY2UocG9zaXRpb24sIHBvc2l0aW9uICsgdGFyZ2V0Lmxlbmd0aCkgPT0gdGFyZ2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjb21waWxlZCB0ZW1wbGF0ZSBmdW5jdGlvbiB0aGF0IGNhbiBpbnRlcnBvbGF0ZSBkYXRhIHByb3BlcnRpZXNcbiAgICAgKiBpbiBcImludGVycG9sYXRlXCIgZGVsaW1pdGVycywgSFRNTC1lc2NhcGUgaW50ZXJwb2xhdGVkIGRhdGEgcHJvcGVydGllcyBpblxuICAgICAqIFwiZXNjYXBlXCIgZGVsaW1pdGVycywgYW5kIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBcImV2YWx1YXRlXCIgZGVsaW1pdGVycy4gRGF0YVxuICAgICAqIHByb3BlcnRpZXMgbWF5IGJlIGFjY2Vzc2VkIGFzIGZyZWUgdmFyaWFibGVzIGluIHRoZSB0ZW1wbGF0ZS4gSWYgYSBzZXR0aW5nXG4gICAgICogb2JqZWN0IGlzIGdpdmVuLCBpdCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYF8udGVtcGxhdGVTZXR0aW5nc2AgdmFsdWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEluIHRoZSBkZXZlbG9wbWVudCBidWlsZCBgXy50ZW1wbGF0ZWAgdXRpbGl6ZXNcbiAgICAgKiBbc291cmNlVVJMc10oaHR0cDovL3d3dy5odG1sNXJvY2tzLmNvbS9lbi90dXRvcmlhbHMvZGV2ZWxvcGVydG9vbHMvc291cmNlbWFwcy8jdG9jLXNvdXJjZXVybClcbiAgICAgKiBmb3IgZWFzaWVyIGRlYnVnZ2luZy5cbiAgICAgKlxuICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHByZWNvbXBpbGluZyB0ZW1wbGF0ZXMgc2VlXG4gICAgICogW2xvZGFzaCdzIGN1c3RvbSBidWlsZHMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9sb2Rhc2guY29tL2N1c3RvbS1idWlsZHMpLlxuICAgICAqXG4gICAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQ2hyb21lIGV4dGVuc2lvbiBzYW5kYm94ZXMgc2VlXG4gICAgICogW0Nocm9tZSdzIGV4dGVuc2lvbnMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3NhbmRib3hpbmdFdmFsKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHRlbXBsYXRlIHN0cmluZy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuZXNjYXBlPV8udGVtcGxhdGVTZXR0aW5ncy5lc2NhcGVdXG4gICAgICogIFRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5ldmFsdWF0ZT1fLnRlbXBsYXRlU2V0dGluZ3MuZXZhbHVhdGVdXG4gICAgICogIFRoZSBcImV2YWx1YXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucy5pbXBvcnRzPV8udGVtcGxhdGVTZXR0aW5ncy5pbXBvcnRzXVxuICAgICAqICBBbiBvYmplY3QgdG8gaW1wb3J0IGludG8gdGhlIHRlbXBsYXRlIGFzIGZyZWUgdmFyaWFibGVzLlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5pbnRlcnBvbGF0ZT1fLnRlbXBsYXRlU2V0dGluZ3MuaW50ZXJwb2xhdGVdXG4gICAgICogIFRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zb3VyY2VVUkw9J2xvZGFzaC50ZW1wbGF0ZVNvdXJjZXNbbl0nXVxuICAgICAqICBUaGUgc291cmNlVVJMIG9mIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudmFyaWFibGU9J29iaiddXG4gICAgICogIFRoZSBkYXRhIG9iamVjdCB2YXJpYWJsZSBuYW1lLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjb21waWxlZCB0ZW1wbGF0ZSBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyIHRvIGNyZWF0ZSBhIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvIDwlPSB1c2VyICU+IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnZnJlZCcgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQhJ1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyIHRvIGVzY2FwZSBkYXRhIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8Yj48JS0gdmFsdWUgJT48L2I+Jyk7XG4gICAgICogY29tcGlsZWQoeyAndmFsdWUnOiAnPHNjcmlwdD4nIH0pO1xuICAgICAqIC8vID0+ICc8Yj4mbHQ7c2NyaXB0Jmd0OzwvYj4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXIgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGFuZCBnZW5lcmF0ZSBIVE1MLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlIF8uZm9yRWFjaCh1c2VycywgZnVuY3Rpb24odXNlcikgeyAlPjxsaT48JS0gdXNlciAlPjwvbGk+PCUgfSk7ICU+Jyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcnMnOiBbJ2ZyZWQnLCAnYmFybmV5J10gfSk7XG4gICAgICogLy8gPT4gJzxsaT5mcmVkPC9saT48bGk+YmFybmV5PC9saT4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGludGVybmFsIGBwcmludGAgZnVuY3Rpb24gaW4gXCJldmFsdWF0ZVwiIGRlbGltaXRlcnMuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCUgcHJpbnQoXCJoZWxsbyBcIiArIHVzZXIpOyAlPiEnKTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2VyJzogJ2Jhcm5leScgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGJhcm5leSEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIEVTIHRlbXBsYXRlIGxpdGVyYWwgZGVsaW1pdGVyIGFzIGFuIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gICAgICogLy8gRGlzYWJsZSBzdXBwb3J0IGJ5IHJlcGxhY2luZyB0aGUgXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlci5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyAkeyB1c2VyIH0hJyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcic6ICdwZWJibGVzJyB9KTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gcGViYmxlcyEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgYmFja3NsYXNoZXMgdG8gdHJlYXQgZGVsaW1pdGVycyBhcyBwbGFpbiB0ZXh0LlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlPSBcIlxcXFw8JS0gdmFsdWUgJVxcXFw+XCIgJT4nKTtcbiAgICAgKiBjb21waWxlZCh7ICd2YWx1ZSc6ICdpZ25vcmVkJyB9KTtcbiAgICAgKiAvLyA9PiAnPCUtIHZhbHVlICU+J1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBgaW1wb3J0c2Agb3B0aW9uIHRvIGltcG9ydCBgalF1ZXJ5YCBhcyBganFgLlxuICAgICAqIHZhciB0ZXh0ID0gJzwlIGpxLmVhY2godXNlcnMsIGZ1bmN0aW9uKHVzZXIpIHsgJT48bGk+PCUtIHVzZXIgJT48L2xpPjwlIH0pOyAlPic7XG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSh0ZXh0LCB7ICdpbXBvcnRzJzogeyAnanEnOiBqUXVlcnkgfSB9KTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2Vycyc6IFsnZnJlZCcsICdiYXJuZXknXSB9KTtcbiAgICAgKiAvLyA9PiAnPGxpPmZyZWQ8L2xpPjxsaT5iYXJuZXk8L2xpPidcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgYHNvdXJjZVVSTGAgb3B0aW9uIHRvIHNwZWNpZnkgYSBjdXN0b20gc291cmNlVVJMIGZvciB0aGUgdGVtcGxhdGUuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gPCU9IHVzZXIgJT4hJywgeyAnc291cmNlVVJMJzogJy9iYXNpYy9ncmVldGluZy5qc3QnIH0pO1xuICAgICAqIGNvbXBpbGVkKGRhdGEpO1xuICAgICAqIC8vID0+IEZpbmQgdGhlIHNvdXJjZSBvZiBcImdyZWV0aW5nLmpzdFwiIHVuZGVyIHRoZSBTb3VyY2VzIHRhYiBvciBSZXNvdXJjZXMgcGFuZWwgb2YgdGhlIHdlYiBpbnNwZWN0b3IuXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGB2YXJpYWJsZWAgb3B0aW9uIHRvIGVuc3VyZSBhIHdpdGgtc3RhdGVtZW50IGlzbid0IHVzZWQgaW4gdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hpIDwlPSBkYXRhLnVzZXIgJT4hJywgeyAndmFyaWFibGUnOiAnZGF0YScgfSk7XG4gICAgICogY29tcGlsZWQuc291cmNlO1xuICAgICAqIC8vID0+IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgKiAvLyAgIHZhciBfX3QsIF9fcCA9ICcnO1xuICAgICAqIC8vICAgX19wICs9ICdoaSAnICsgKChfX3QgPSAoIGRhdGEudXNlciApKSA9PSBudWxsID8gJycgOiBfX3QpICsgJyEnO1xuICAgICAqIC8vICAgcmV0dXJuIF9fcDtcbiAgICAgKiAvLyB9XG4gICAgICpcbiAgICAgKiAvLyBVc2UgY3VzdG9tIHRlbXBsYXRlIGRlbGltaXRlcnMuXG4gICAgICogXy50ZW1wbGF0ZVNldHRpbmdzLmludGVycG9sYXRlID0gL3t7KFtcXHNcXFNdKz8pfX0vZztcbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyB7eyB1c2VyIH19IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnbXVzdGFjaGUnIH0pO1xuICAgICAqIC8vID0+ICdoZWxsbyBtdXN0YWNoZSEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGBzb3VyY2VgIHByb3BlcnR5IHRvIGlubGluZSBjb21waWxlZCB0ZW1wbGF0ZXMgZm9yIG1lYW5pbmdmdWxcbiAgICAgKiAvLyBsaW5lIG51bWJlcnMgaW4gZXJyb3IgbWVzc2FnZXMgYW5kIHN0YWNrIHRyYWNlcy5cbiAgICAgKiBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnanN0LmpzJyksICdcXFxuICAgICAqICAgdmFyIEpTVCA9IHtcXFxuICAgICAqICAgICBcIm1haW5cIjogJyArIF8udGVtcGxhdGUobWFpblRleHQpLnNvdXJjZSArICdcXFxuICAgICAqICAgfTtcXFxuICAgICAqICcpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRlbXBsYXRlKHN0cmluZywgb3B0aW9ucywgZ3VhcmQpIHtcbiAgICAgIC8vIEJhc2VkIG9uIEpvaG4gUmVzaWcncyBgdG1wbGAgaW1wbGVtZW50YXRpb25cbiAgICAgIC8vIChodHRwOi8vZWpvaG4ub3JnL2Jsb2cvamF2YXNjcmlwdC1taWNyby10ZW1wbGF0aW5nLylcbiAgICAgIC8vIGFuZCBMYXVyYSBEb2t0b3JvdmEncyBkb1QuanMgKGh0dHBzOi8vZ2l0aHViLmNvbS9vbGFkby9kb1QpLlxuICAgICAgdmFyIHNldHRpbmdzID0gbG9kYXNoLnRlbXBsYXRlU2V0dGluZ3M7XG5cbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzdHJpbmcsIG9wdGlvbnMsIGd1YXJkKSkge1xuICAgICAgICBvcHRpb25zID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIG9wdGlvbnMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMsIHNldHRpbmdzLCBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKTtcblxuICAgICAgdmFyIGltcG9ydHMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMuaW1wb3J0cywgc2V0dGluZ3MuaW1wb3J0cywgY3VzdG9tRGVmYXVsdHNBc3NpZ25JbiksXG4gICAgICAgICAgaW1wb3J0c0tleXMgPSBrZXlzKGltcG9ydHMpLFxuICAgICAgICAgIGltcG9ydHNWYWx1ZXMgPSBiYXNlVmFsdWVzKGltcG9ydHMsIGltcG9ydHNLZXlzKTtcblxuICAgICAgdmFyIGlzRXNjYXBpbmcsXG4gICAgICAgICAgaXNFdmFsdWF0aW5nLFxuICAgICAgICAgIGluZGV4ID0gMCxcbiAgICAgICAgICBpbnRlcnBvbGF0ZSA9IG9wdGlvbnMuaW50ZXJwb2xhdGUgfHwgcmVOb01hdGNoLFxuICAgICAgICAgIHNvdXJjZSA9IFwiX19wICs9ICdcIjtcblxuICAgICAgLy8gQ29tcGlsZSB0aGUgcmVnZXhwIHRvIG1hdGNoIGVhY2ggZGVsaW1pdGVyLlxuICAgICAgdmFyIHJlRGVsaW1pdGVycyA9IFJlZ0V4cChcbiAgICAgICAgKG9wdGlvbnMuZXNjYXBlIHx8IHJlTm9NYXRjaCkuc291cmNlICsgJ3wnICtcbiAgICAgICAgaW50ZXJwb2xhdGUuc291cmNlICsgJ3wnICtcbiAgICAgICAgKGludGVycG9sYXRlID09PSByZUludGVycG9sYXRlID8gcmVFc1RlbXBsYXRlIDogcmVOb01hdGNoKS5zb3VyY2UgKyAnfCcgK1xuICAgICAgICAob3B0aW9ucy5ldmFsdWF0ZSB8fCByZU5vTWF0Y2gpLnNvdXJjZSArICd8JCdcbiAgICAgICwgJ2cnKTtcblxuICAgICAgLy8gVXNlIGEgc291cmNlVVJMIGZvciBlYXNpZXIgZGVidWdnaW5nLlxuICAgICAgLy8gVGhlIHNvdXJjZVVSTCBnZXRzIGluamVjdGVkIGludG8gdGhlIHNvdXJjZSB0aGF0J3MgZXZhbC1lZCwgc28gYmUgY2FyZWZ1bFxuICAgICAgLy8gdG8gbm9ybWFsaXplIGFsbCBraW5kcyBvZiB3aGl0ZXNwYWNlLCBzbyBlLmcuIG5ld2xpbmVzIChhbmQgdW5pY29kZSB2ZXJzaW9ucyBvZiBpdCkgY2FuJ3Qgc25lYWsgaW5cbiAgICAgIC8vIGFuZCBlc2NhcGUgdGhlIGNvbW1lbnQsIHRodXMgaW5qZWN0aW5nIGNvZGUgdGhhdCBnZXRzIGV2YWxlZC5cbiAgICAgIHZhciBzb3VyY2VVUkwgPSAnLy8jIHNvdXJjZVVSTD0nICtcbiAgICAgICAgKGhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3NvdXJjZVVSTCcpXG4gICAgICAgICAgPyAob3B0aW9ucy5zb3VyY2VVUkwgKyAnJykucmVwbGFjZSgvXFxzL2csICcgJylcbiAgICAgICAgICA6ICgnbG9kYXNoLnRlbXBsYXRlU291cmNlc1snICsgKCsrdGVtcGxhdGVDb3VudGVyKSArICddJylcbiAgICAgICAgKSArICdcXG4nO1xuXG4gICAgICBzdHJpbmcucmVwbGFjZShyZURlbGltaXRlcnMsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGVWYWx1ZSwgaW50ZXJwb2xhdGVWYWx1ZSwgZXNUZW1wbGF0ZVZhbHVlLCBldmFsdWF0ZVZhbHVlLCBvZmZzZXQpIHtcbiAgICAgICAgaW50ZXJwb2xhdGVWYWx1ZSB8fCAoaW50ZXJwb2xhdGVWYWx1ZSA9IGVzVGVtcGxhdGVWYWx1ZSk7XG5cbiAgICAgICAgLy8gRXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBjYW4ndCBiZSBpbmNsdWRlZCBpbiBzdHJpbmcgbGl0ZXJhbHMuXG4gICAgICAgIHNvdXJjZSArPSBzdHJpbmcuc2xpY2UoaW5kZXgsIG9mZnNldCkucmVwbGFjZShyZVVuZXNjYXBlZFN0cmluZywgZXNjYXBlU3RyaW5nQ2hhcik7XG5cbiAgICAgICAgLy8gUmVwbGFjZSBkZWxpbWl0ZXJzIHdpdGggc25pcHBldHMuXG4gICAgICAgIGlmIChlc2NhcGVWYWx1ZSkge1xuICAgICAgICAgIGlzRXNjYXBpbmcgPSB0cnVlO1xuICAgICAgICAgIHNvdXJjZSArPSBcIicgK1xcbl9fZShcIiArIGVzY2FwZVZhbHVlICsgXCIpICtcXG4nXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2YWx1YXRlVmFsdWUpIHtcbiAgICAgICAgICBpc0V2YWx1YXRpbmcgPSB0cnVlO1xuICAgICAgICAgIHNvdXJjZSArPSBcIic7XFxuXCIgKyBldmFsdWF0ZVZhbHVlICsgXCI7XFxuX19wICs9ICdcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW50ZXJwb2xhdGVWYWx1ZSkge1xuICAgICAgICAgIHNvdXJjZSArPSBcIicgK1xcbigoX190ID0gKFwiICsgaW50ZXJwb2xhdGVWYWx1ZSArIFwiKSkgPT0gbnVsbCA/ICcnIDogX190KSArXFxuJ1wiO1xuICAgICAgICB9XG4gICAgICAgIGluZGV4ID0gb2Zmc2V0ICsgbWF0Y2gubGVuZ3RoO1xuXG4gICAgICAgIC8vIFRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgcHJvZHVjdHMgbmVlZHMgYG1hdGNoYCByZXR1cm5lZCBpblxuICAgICAgICAvLyBvcmRlciB0byBwcm9kdWNlIHRoZSBjb3JyZWN0IGBvZmZzZXRgIHZhbHVlLlxuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICB9KTtcblxuICAgICAgc291cmNlICs9IFwiJztcXG5cIjtcblxuICAgICAgLy8gSWYgYHZhcmlhYmxlYCBpcyBub3Qgc3BlY2lmaWVkIHdyYXAgYSB3aXRoLXN0YXRlbWVudCBhcm91bmQgdGhlIGdlbmVyYXRlZFxuICAgICAgLy8gY29kZSB0byBhZGQgdGhlIGRhdGEgb2JqZWN0IHRvIHRoZSB0b3Agb2YgdGhlIHNjb3BlIGNoYWluLlxuICAgICAgdmFyIHZhcmlhYmxlID0gaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLCAndmFyaWFibGUnKSAmJiBvcHRpb25zLnZhcmlhYmxlO1xuICAgICAgaWYgKCF2YXJpYWJsZSkge1xuICAgICAgICBzb3VyY2UgPSAnd2l0aCAob2JqKSB7XFxuJyArIHNvdXJjZSArICdcXG59XFxuJztcbiAgICAgIH1cbiAgICAgIC8vIFRocm93IGFuIGVycm9yIGlmIGEgZm9yYmlkZGVuIGNoYXJhY3RlciB3YXMgZm91bmQgaW4gYHZhcmlhYmxlYCwgdG8gcHJldmVudFxuICAgICAgLy8gcG90ZW50aWFsIGNvbW1hbmQgaW5qZWN0aW9uIGF0dGFja3MuXG4gICAgICBlbHNlIGlmIChyZUZvcmJpZGRlbklkZW50aWZpZXJDaGFycy50ZXN0KHZhcmlhYmxlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5WQUxJRF9URU1QTF9WQVJfRVJST1JfVEVYVCk7XG4gICAgICB9XG5cbiAgICAgIC8vIENsZWFudXAgY29kZSBieSBzdHJpcHBpbmcgZW1wdHkgc3RyaW5ncy5cbiAgICAgIHNvdXJjZSA9IChpc0V2YWx1YXRpbmcgPyBzb3VyY2UucmVwbGFjZShyZUVtcHR5U3RyaW5nTGVhZGluZywgJycpIDogc291cmNlKVxuICAgICAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nTWlkZGxlLCAnJDEnKVxuICAgICAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nVHJhaWxpbmcsICckMTsnKTtcblxuICAgICAgLy8gRnJhbWUgY29kZSBhcyB0aGUgZnVuY3Rpb24gYm9keS5cbiAgICAgIHNvdXJjZSA9ICdmdW5jdGlvbignICsgKHZhcmlhYmxlIHx8ICdvYmonKSArICcpIHtcXG4nICtcbiAgICAgICAgKHZhcmlhYmxlXG4gICAgICAgICAgPyAnJ1xuICAgICAgICAgIDogJ29iaiB8fCAob2JqID0ge30pO1xcbidcbiAgICAgICAgKSArXG4gICAgICAgIFwidmFyIF9fdCwgX19wID0gJydcIiArXG4gICAgICAgIChpc0VzY2FwaW5nXG4gICAgICAgICAgID8gJywgX19lID0gXy5lc2NhcGUnXG4gICAgICAgICAgIDogJydcbiAgICAgICAgKSArXG4gICAgICAgIChpc0V2YWx1YXRpbmdcbiAgICAgICAgICA/ICcsIF9faiA9IEFycmF5LnByb3RvdHlwZS5qb2luO1xcbicgK1xuICAgICAgICAgICAgXCJmdW5jdGlvbiBwcmludCgpIHsgX19wICs9IF9fai5jYWxsKGFyZ3VtZW50cywgJycpIH1cXG5cIlxuICAgICAgICAgIDogJztcXG4nXG4gICAgICAgICkgK1xuICAgICAgICBzb3VyY2UgK1xuICAgICAgICAncmV0dXJuIF9fcFxcbn0nO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYXR0ZW1wdChmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEZ1bmN0aW9uKGltcG9ydHNLZXlzLCBzb3VyY2VVUkwgKyAncmV0dXJuICcgKyBzb3VyY2UpXG4gICAgICAgICAgLmFwcGx5KHVuZGVmaW5lZCwgaW1wb3J0c1ZhbHVlcyk7XG4gICAgICB9KTtcblxuICAgICAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24ncyBzb3VyY2UgYnkgaXRzIGB0b1N0cmluZ2AgbWV0aG9kIG9yXG4gICAgICAvLyB0aGUgYHNvdXJjZWAgcHJvcGVydHkgYXMgYSBjb252ZW5pZW5jZSBmb3IgaW5saW5pbmcgY29tcGlsZWQgdGVtcGxhdGVzLlxuICAgICAgcmVzdWx0LnNvdXJjZSA9IHNvdXJjZTtcbiAgICAgIGlmIChpc0Vycm9yKHJlc3VsdCkpIHtcbiAgICAgICAgdGhyb3cgcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgYSB3aG9sZSwgdG8gbG93ZXIgY2FzZSBqdXN0IGxpa2VcbiAgICAgKiBbU3RyaW5nI3RvTG93ZXJDYXNlXShodHRwczovL21kbi5pby90b0xvd2VyQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBsb3dlciBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9Mb3dlcignLS1Gb28tQmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnLS1mb28tYmFyLS0nXG4gICAgICpcbiAgICAgKiBfLnRvTG93ZXIoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdmb29iYXInXG4gICAgICpcbiAgICAgKiBfLnRvTG93ZXIoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ19fZm9vX2Jhcl9fJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvTG93ZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0b1N0cmluZyh2YWx1ZSkudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgYSB3aG9sZSwgdG8gdXBwZXIgY2FzZSBqdXN0IGxpa2VcbiAgICAgKiBbU3RyaW5nI3RvVXBwZXJDYXNlXShodHRwczovL21kbi5pby90b1VwcGVyQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1cHBlciBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9VcHBlcignLS1mb28tYmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnLS1GT08tQkFSLS0nXG4gICAgICpcbiAgICAgKiBfLnRvVXBwZXIoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdGT09CQVInXG4gICAgICpcbiAgICAgKiBfLnRvVXBwZXIoJ19fZm9vX2Jhcl9fJyk7XG4gICAgICogLy8gPT4gJ19fRk9PX0JBUl9fJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvVXBwZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0b1N0cmluZyh2YWx1ZSkudG9VcHBlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW0oJyAgYWJjICAnKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqXG4gICAgICogXy50cmltKCctXy1hYmMtXy0nLCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqXG4gICAgICogXy5tYXAoWycgIGZvbyAgJywgJyAgYmFyICAnXSwgXy50cmltKTtcbiAgICAgKiAvLyA9PiBbJ2ZvbycsICdiYXInXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyaW0oc3RyaW5nLCBjaGFycywgZ3VhcmQpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBpZiAoc3RyaW5nICYmIChndWFyZCB8fCBjaGFycyA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICByZXR1cm4gYmFzZVRyaW0oc3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIGlmICghc3RyaW5nIHx8ICEoY2hhcnMgPSBiYXNlVG9TdHJpbmcoY2hhcnMpKSkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyksXG4gICAgICAgICAgY2hyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoY2hhcnMpLFxuICAgICAgICAgIHN0YXJ0ID0gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpLFxuICAgICAgICAgIGVuZCA9IGNoYXJzRW5kSW5kZXgoc3RyU3ltYm9scywgY2hyU3ltYm9scykgKyAxO1xuXG4gICAgICByZXR1cm4gY2FzdFNsaWNlKHN0clN5bWJvbHMsIHN0YXJ0LCBlbmQpLmpvaW4oJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdHJhaWxpbmcgd2hpdGVzcGFjZSBvciBzcGVjaWZpZWQgY2hhcmFjdGVycyBmcm9tIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz13aGl0ZXNwYWNlXSBUaGUgY2hhcmFjdGVycyB0byB0cmltLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJpbUVuZCgnICBhYmMgICcpO1xuICAgICAqIC8vID0+ICcgIGFiYydcbiAgICAgKlxuICAgICAqIF8udHJpbUVuZCgnLV8tYWJjLV8tJywgJ18tJyk7XG4gICAgICogLy8gPT4gJy1fLWFiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0cmltRW5kKHN0cmluZywgY2hhcnMsIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgaWYgKHN0cmluZyAmJiAoZ3VhcmQgfHwgY2hhcnMgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZy5zbGljZSgwLCB0cmltbWVkRW5kSW5kZXgoc3RyaW5nKSArIDEpO1xuICAgICAgfVxuICAgICAgaWYgKCFzdHJpbmcgfHwgIShjaGFycyA9IGJhc2VUb1N0cmluZyhjaGFycykpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgc3RyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoc3RyaW5nKSxcbiAgICAgICAgICBlbmQgPSBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIHN0cmluZ1RvQXJyYXkoY2hhcnMpKSArIDE7XG5cbiAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyU3ltYm9scywgMCwgZW5kKS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGxlYWRpbmcgd2hpdGVzcGFjZSBvciBzcGVjaWZpZWQgY2hhcmFjdGVycyBmcm9tIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz13aGl0ZXNwYWNlXSBUaGUgY2hhcmFjdGVycyB0byB0cmltLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJpbVN0YXJ0KCcgIGFiYyAgJyk7XG4gICAgICogLy8gPT4gJ2FiYyAgJ1xuICAgICAqXG4gICAgICogXy50cmltU3RhcnQoJy1fLWFiYy1fLScsICdfLScpO1xuICAgICAqIC8vID0+ICdhYmMtXy0nXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJpbVN0YXJ0KHN0cmluZywgY2hhcnMsIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgaWYgKHN0cmluZyAmJiAoZ3VhcmQgfHwgY2hhcnMgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAoIXN0cmluZyB8fCAhKGNoYXJzID0gYmFzZVRvU3RyaW5nKGNoYXJzKSkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpLFxuICAgICAgICAgIHN0YXJ0ID0gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIHN0cmluZ1RvQXJyYXkoY2hhcnMpKTtcblxuICAgICAgcmV0dXJuIGNhc3RTbGljZShzdHJTeW1ib2xzLCBzdGFydCkuam9pbignJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJ1bmNhdGVzIGBzdHJpbmdgIGlmIGl0J3MgbG9uZ2VyIHRoYW4gdGhlIGdpdmVuIG1heGltdW0gc3RyaW5nIGxlbmd0aC5cbiAgICAgKiBUaGUgbGFzdCBjaGFyYWN0ZXJzIG9mIHRoZSB0cnVuY2F0ZWQgc3RyaW5nIGFyZSByZXBsYWNlZCB3aXRoIHRoZSBvbWlzc2lvblxuICAgICAqIHN0cmluZyB3aGljaCBkZWZhdWx0cyB0byBcIi4uLlwiLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRydW5jYXRlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5sZW5ndGg9MzBdIFRoZSBtYXhpbXVtIHN0cmluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLm9taXNzaW9uPScuLi4nXSBUaGUgc3RyaW5nIHRvIGluZGljYXRlIHRleHQgaXMgb21pdHRlZC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IFtvcHRpb25zLnNlcGFyYXRvcl0gVGhlIHNlcGFyYXRvciBwYXR0ZXJuIHRvIHRydW5jYXRlIHRvLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRydW5jYXRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nKTtcbiAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnaGJvLi4uJ1xuICAgICAqXG4gICAgICogXy50cnVuY2F0ZSgnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnaGJvcmlubycsIHtcbiAgICAgKiAgICdsZW5ndGgnOiAyNCxcbiAgICAgKiAgICdzZXBhcmF0b3InOiAnICdcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLC4uLidcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICogICAnbGVuZ3RoJzogMjQsXG4gICAgICogICAnc2VwYXJhdG9yJzogLyw/ICsvXG4gICAgICogfSk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZS4uLidcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICogICAnb21pc3Npb24nOiAnIFsuLi5dJ1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+ICdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWcgWy4uLl0nXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJ1bmNhdGUoc3RyaW5nLCBvcHRpb25zKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gREVGQVVMVF9UUlVOQ19MRU5HVEgsXG4gICAgICAgICAgb21pc3Npb24gPSBERUZBVUxUX1RSVU5DX09NSVNTSU9OO1xuXG4gICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgdmFyIHNlcGFyYXRvciA9ICdzZXBhcmF0b3InIGluIG9wdGlvbnMgPyBvcHRpb25zLnNlcGFyYXRvciA6IHNlcGFyYXRvcjtcbiAgICAgICAgbGVuZ3RoID0gJ2xlbmd0aCcgaW4gb3B0aW9ucyA/IHRvSW50ZWdlcihvcHRpb25zLmxlbmd0aCkgOiBsZW5ndGg7XG4gICAgICAgIG9taXNzaW9uID0gJ29taXNzaW9uJyBpbiBvcHRpb25zID8gYmFzZVRvU3RyaW5nKG9wdGlvbnMub21pc3Npb24pIDogb21pc3Npb247XG4gICAgICB9XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuXG4gICAgICB2YXIgc3RyTGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcbiAgICAgIGlmIChoYXNVbmljb2RlKHN0cmluZykpIHtcbiAgICAgICAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyk7XG4gICAgICAgIHN0ckxlbmd0aCA9IHN0clN5bWJvbHMubGVuZ3RoO1xuICAgICAgfVxuICAgICAgaWYgKGxlbmd0aCA+PSBzdHJMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBlbmQgPSBsZW5ndGggLSBzdHJpbmdTaXplKG9taXNzaW9uKTtcbiAgICAgIGlmIChlbmQgPCAxKSB7XG4gICAgICAgIHJldHVybiBvbWlzc2lvbjtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBzdHJTeW1ib2xzXG4gICAgICAgID8gY2FzdFNsaWNlKHN0clN5bWJvbHMsIDAsIGVuZCkuam9pbignJylcbiAgICAgICAgOiBzdHJpbmcuc2xpY2UoMCwgZW5kKTtcblxuICAgICAgaWYgKHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQgKyBvbWlzc2lvbjtcbiAgICAgIH1cbiAgICAgIGlmIChzdHJTeW1ib2xzKSB7XG4gICAgICAgIGVuZCArPSAocmVzdWx0Lmxlbmd0aCAtIGVuZCk7XG4gICAgICB9XG4gICAgICBpZiAoaXNSZWdFeHAoc2VwYXJhdG9yKSkge1xuICAgICAgICBpZiAoc3RyaW5nLnNsaWNlKGVuZCkuc2VhcmNoKHNlcGFyYXRvcikpIHtcbiAgICAgICAgICB2YXIgbWF0Y2gsXG4gICAgICAgICAgICAgIHN1YnN0cmluZyA9IHJlc3VsdDtcblxuICAgICAgICAgIGlmICghc2VwYXJhdG9yLmdsb2JhbCkge1xuICAgICAgICAgICAgc2VwYXJhdG9yID0gUmVnRXhwKHNlcGFyYXRvci5zb3VyY2UsIHRvU3RyaW5nKHJlRmxhZ3MuZXhlYyhzZXBhcmF0b3IpKSArICdnJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNlcGFyYXRvci5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgIHdoaWxlICgobWF0Y2ggPSBzZXBhcmF0b3IuZXhlYyhzdWJzdHJpbmcpKSkge1xuICAgICAgICAgICAgdmFyIG5ld0VuZCA9IG1hdGNoLmluZGV4O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMCwgbmV3RW5kID09PSB1bmRlZmluZWQgPyBlbmQgOiBuZXdFbmQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHN0cmluZy5pbmRleE9mKGJhc2VUb1N0cmluZyhzZXBhcmF0b3IpLCBlbmQpICE9IGVuZCkge1xuICAgICAgICB2YXIgaW5kZXggPSByZXN1bHQubGFzdEluZGV4T2Yoc2VwYXJhdG9yKTtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMCwgaW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0ICsgb21pc3Npb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGludmVyc2Ugb2YgYF8uZXNjYXBlYDsgdGhpcyBtZXRob2QgY29udmVydHMgdGhlIEhUTUwgZW50aXRpZXNcbiAgICAgKiBgJmFtcDtgLCBgJmx0O2AsIGAmZ3Q7YCwgYCZxdW90O2AsIGFuZCBgJiMzOTtgIGluIGBzdHJpbmdgIHRvXG4gICAgICogdGhlaXIgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vIG90aGVyIEhUTUwgZW50aXRpZXMgYXJlIHVuZXNjYXBlZC4gVG8gdW5lc2NhcGUgYWRkaXRpb25hbFxuICAgICAqIEhUTUwgZW50aXRpZXMgdXNlIGEgdGhpcmQtcGFydHkgbGlicmFyeSBsaWtlIFtfaGVfXShodHRwczovL210aHMuYmUvaGUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNi4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHVuZXNjYXBlLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuZXNjYXBlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5lc2NhcGUoJ2ZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlcycpO1xuICAgICAqIC8vID0+ICdmcmVkLCBiYXJuZXksICYgcGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmVzY2FwZShzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICByZXR1cm4gKHN0cmluZyAmJiByZUhhc0VzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSlcbiAgICAgICAgPyBzdHJpbmcucmVwbGFjZShyZUVzY2FwZWRIdG1sLCB1bmVzY2FwZUh0bWxDaGFyKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgc3BhY2Ugc2VwYXJhdGVkIHdvcmRzLCB0byB1cHBlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdXBwZXIgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVwcGVyQ2FzZSgnLS1mb28tYmFyJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICpcbiAgICAgKiBfLnVwcGVyQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICpcbiAgICAgKiBfLnVwcGVyQ2FzZSgnX19mb29fYmFyX18nKTtcbiAgICAgKiAvLyA9PiAnRk9PIEJBUidcbiAgICAgKi9cbiAgICB2YXIgdXBwZXJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgd29yZC50b1VwcGVyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byB1cHBlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51cHBlckZpcnN0KCdmcmVkJyk7XG4gICAgICogLy8gPT4gJ0ZyZWQnXG4gICAgICpcbiAgICAgKiBfLnVwcGVyRmlyc3QoJ0ZSRUQnKTtcbiAgICAgKiAvLyA9PiAnRlJFRCdcbiAgICAgKi9cbiAgICB2YXIgdXBwZXJGaXJzdCA9IGNyZWF0ZUNhc2VGaXJzdCgndG9VcHBlckNhc2UnKTtcblxuICAgIC8qKlxuICAgICAqIFNwbGl0cyBgc3RyaW5nYCBpbnRvIGFuIGFycmF5IG9mIGl0cyB3b3Jkcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfHN0cmluZ30gW3BhdHRlcm5dIFRoZSBwYXR0ZXJuIHRvIG1hdGNoIHdvcmRzLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3b3JkcyBvZiBgc3RyaW5nYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy53b3JkcygnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiBbJ2ZyZWQnLCAnYmFybmV5JywgJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogXy53b3JkcygnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnLCAvW14sIF0rL2cpO1xuICAgICAqIC8vID0+IFsnZnJlZCcsICdiYXJuZXknLCAnJicsICdwZWJibGVzJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3b3JkcyhzdHJpbmcsIHBhdHRlcm4sIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcGF0dGVybiA9IGd1YXJkID8gdW5kZWZpbmVkIDogcGF0dGVybjtcblxuICAgICAgaWYgKHBhdHRlcm4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gaGFzVW5pY29kZVdvcmQoc3RyaW5nKSA/IHVuaWNvZGVXb3JkcyhzdHJpbmcpIDogYXNjaWlXb3JkcyhzdHJpbmcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN0cmluZy5tYXRjaChwYXR0ZXJuKSB8fCBbXTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBBdHRlbXB0cyB0byBpbnZva2UgYGZ1bmNgLCByZXR1cm5pbmcgZWl0aGVyIHRoZSByZXN1bHQgb3IgdGhlIGNhdWdodCBlcnJvclxuICAgICAqIG9iamVjdC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZSBwcm92aWRlZCB0byBgZnVuY2Agd2hlbiBpdCdzIGludm9rZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGF0dGVtcHQuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGBmdW5jYCByZXN1bHQgb3IgZXJyb3Igb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBBdm9pZCB0aHJvd2luZyBlcnJvcnMgZm9yIGludmFsaWQgc2VsZWN0b3JzLlxuICAgICAqIHZhciBlbGVtZW50cyA9IF8uYXR0ZW1wdChmdW5jdGlvbihzZWxlY3Rvcikge1xuICAgICAqICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuICAgICAqIH0sICc+Xz4nKTtcbiAgICAgKlxuICAgICAqIGlmIChfLmlzRXJyb3IoZWxlbWVudHMpKSB7XG4gICAgICogICBlbGVtZW50cyA9IFtdO1xuICAgICAqIH1cbiAgICAgKi9cbiAgICB2YXIgYXR0ZW1wdCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIGFyZ3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB1bmRlZmluZWQsIGFyZ3MpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gaXNFcnJvcihlKSA/IGUgOiBuZXcgRXJyb3IoZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBCaW5kcyBtZXRob2RzIG9mIGFuIG9iamVjdCB0byB0aGUgb2JqZWN0IGl0c2VsZiwgb3ZlcndyaXRpbmcgdGhlIGV4aXN0aW5nXG4gICAgICogbWV0aG9kLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIGJvdW5kIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGJpbmQgYW5kIGFzc2lnbiB0aGUgYm91bmQgbWV0aG9kcyB0by5cbiAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBtZXRob2ROYW1lcyBUaGUgb2JqZWN0IG1ldGhvZCBuYW1lcyB0byBiaW5kLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB2aWV3ID0ge1xuICAgICAqICAgJ2xhYmVsJzogJ2RvY3MnLFxuICAgICAqICAgJ2NsaWNrJzogZnVuY3Rpb24oKSB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdjbGlja2VkICcgKyB0aGlzLmxhYmVsKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5iaW5kQWxsKHZpZXcsIFsnY2xpY2snXSk7XG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIHZpZXcuY2xpY2spO1xuICAgICAqIC8vID0+IExvZ3MgJ2NsaWNrZWQgZG9jcycgd2hlbiBjbGlja2VkLlxuICAgICAqL1xuICAgIHZhciBiaW5kQWxsID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBtZXRob2ROYW1lcykge1xuICAgICAgYXJyYXlFYWNoKG1ldGhvZE5hbWVzLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgICAga2V5ID0gdG9LZXkoa2V5KTtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBiaW5kKG9iamVjdFtrZXldLCBvYmplY3QpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGl0ZXJhdGVzIG92ZXIgYHBhaXJzYCBhbmQgaW52b2tlcyB0aGUgY29ycmVzcG9uZGluZ1xuICAgICAqIGZ1bmN0aW9uIG9mIHRoZSBmaXJzdCBwcmVkaWNhdGUgdG8gcmV0dXJuIHRydXRoeS4gVGhlIHByZWRpY2F0ZS1mdW5jdGlvblxuICAgICAqIHBhaXJzIGFyZSBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWRcbiAgICAgKiBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheX0gcGFpcnMgVGhlIHByZWRpY2F0ZS1mdW5jdGlvbiBwYWlycy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb21wb3NpdGUgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5jb25kKFtcbiAgICAgKiAgIFtfLm1hdGNoZXMoeyAnYSc6IDEgfSksICAgICAgICAgICBfLmNvbnN0YW50KCdtYXRjaGVzIEEnKV0sXG4gICAgICogICBbXy5jb25mb3Jtcyh7ICdiJzogXy5pc051bWJlciB9KSwgXy5jb25zdGFudCgnbWF0Y2hlcyBCJyldLFxuICAgICAqICAgW18uc3R1YlRydWUsICAgICAgICAgICAgICAgICAgICAgIF8uY29uc3RhbnQoJ25vIG1hdGNoJyldXG4gICAgICogXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gICAgICogLy8gPT4gJ21hdGNoZXMgQSdcbiAgICAgKlxuICAgICAqIGZ1bmMoeyAnYSc6IDAsICdiJzogMSB9KTtcbiAgICAgKiAvLyA9PiAnbWF0Y2hlcyBCJ1xuICAgICAqXG4gICAgICogZnVuYyh7ICdhJzogJzEnLCAnYic6ICcyJyB9KTtcbiAgICAgKiAvLyA9PiAnbm8gbWF0Y2gnXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29uZChwYWlycykge1xuICAgICAgdmFyIGxlbmd0aCA9IHBhaXJzID09IG51bGwgPyAwIDogcGFpcnMubGVuZ3RoLFxuICAgICAgICAgIHRvSXRlcmF0ZWUgPSBnZXRJdGVyYXRlZSgpO1xuXG4gICAgICBwYWlycyA9ICFsZW5ndGggPyBbXSA6IGFycmF5TWFwKHBhaXJzLCBmdW5jdGlvbihwYWlyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcGFpclsxXSAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbdG9JdGVyYXRlZShwYWlyWzBdKSwgcGFpclsxXV07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTE7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIHBhaXIgPSBwYWlyc1tpbmRleF07XG4gICAgICAgICAgaWYgKGFwcGx5KHBhaXJbMF0sIHRoaXMsIGFyZ3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwbHkocGFpclsxXSwgdGhpcywgYXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBwcmVkaWNhdGUgcHJvcGVydGllcyBvZiBgc291cmNlYCB3aXRoXG4gICAgICogdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgdmFsdWVzIG9mIGEgZ2l2ZW4gb2JqZWN0LCByZXR1cm5pbmcgYHRydWVgIGlmXG4gICAgICogYWxsIHByZWRpY2F0ZXMgcmV0dXJuIHRydXRoeSwgZWxzZSBgZmFsc2VgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoZSBjcmVhdGVkIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gYF8uY29uZm9ybXNUb2Agd2l0aFxuICAgICAqIGBzb3VyY2VgIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgcHJlZGljYXRlcyB0byBjb25mb3JtIHRvLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW1xuICAgICAqICAgeyAnYSc6IDIsICdiJzogMSB9LFxuICAgICAqICAgeyAnYSc6IDEsICdiJzogMiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmlsdGVyKG9iamVjdHMsIF8uY29uZm9ybXMoeyAnYic6IGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPiAxOyB9IH0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEsICdiJzogMiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmZvcm1zKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIGJhc2VDb25mb3JtcyhiYXNlQ2xvbmUoc291cmNlLCBDTE9ORV9ERUVQX0ZMQUcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi40LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBmcm9tIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29uc3RhbnQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLmNvbnN0YW50KHsgJ2EnOiAxIH0pKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHMpO1xuICAgICAqIC8vID0+IFt7ICdhJzogMSB9LCB7ICdhJzogMSB9XVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbnN0YW50KHZhbHVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGB2YWx1ZWAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBkZWZhdWx0IHZhbHVlIHNob3VsZCBiZSByZXR1cm5lZCBpblxuICAgICAqIGl0cyBwbGFjZS4gVGhlIGBkZWZhdWx0VmFsdWVgIGlzIHJldHVybmVkIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGBudWxsYCxcbiAgICAgKiBvciBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjE0LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7Kn0gZGVmYXVsdFZhbHVlIFRoZSBkZWZhdWx0IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZhdWx0VG8oMSwgMTApO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdFRvKHVuZGVmaW5lZCwgMTApO1xuICAgICAqIC8vID0+IDEwXG4gICAgICovXG4gICAgZnVuY3Rpb24gZGVmYXVsdFRvKHZhbHVlLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHJldHVybiAodmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSAhPT0gdmFsdWUpID8gZGVmYXVsdFZhbHVlIDogdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIGludm9raW5nIHRoZSBnaXZlbiBmdW5jdGlvbnNcbiAgICAgKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGUgY3JlYXRlZCBmdW5jdGlvbiwgd2hlcmUgZWFjaCBzdWNjZXNzaXZlXG4gICAgICogaW52b2NhdGlvbiBpcyBzdXBwbGllZCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcmV2aW91cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtmdW5jc10gVGhlIGZ1bmN0aW9ucyB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBzZWUgXy5mbG93UmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgYWRkU3F1YXJlID0gXy5mbG93KFtfLmFkZCwgc3F1YXJlXSk7XG4gICAgICogYWRkU3F1YXJlKDEsIDIpO1xuICAgICAqIC8vID0+IDlcbiAgICAgKi9cbiAgICB2YXIgZmxvdyA9IGNyZWF0ZUZsb3coKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmxvd2AgZXhjZXB0IHRoYXQgaXQgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXRcbiAgICAgKiBpbnZva2VzIHRoZSBnaXZlbiBmdW5jdGlvbnMgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2Z1bmNzXSBUaGUgZnVuY3Rpb25zIHRvIGludm9rZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb21wb3NpdGUgZnVuY3Rpb24uXG4gICAgICogQHNlZSBfLmZsb3dcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgYWRkU3F1YXJlID0gXy5mbG93UmlnaHQoW3NxdWFyZSwgXy5hZGRdKTtcbiAgICAgKiBhZGRTcXVhcmUoMSwgMik7XG4gICAgICogLy8gPT4gOVxuICAgICAqL1xuICAgIHZhciBmbG93UmlnaHQgPSBjcmVhdGVGbG93KHRydWUpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgQW55IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coXy5pZGVudGl0eShvYmplY3QpID09PSBvYmplY3QpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGFyZ3VtZW50cyBvZiB0aGUgY3JlYXRlZFxuICAgICAqIGZ1bmN0aW9uLiBJZiBgZnVuY2AgaXMgYSBwcm9wZXJ0eSBuYW1lLCB0aGUgY3JlYXRlZCBmdW5jdGlvbiByZXR1cm5zIHRoZVxuICAgICAqIHByb3BlcnR5IHZhbHVlIGZvciBhIGdpdmVuIGVsZW1lbnQuIElmIGBmdW5jYCBpcyBhbiBhcnJheSBvciBvYmplY3QsIHRoZVxuICAgICAqIGNyZWF0ZWQgZnVuY3Rpb24gcmV0dXJucyBgdHJ1ZWAgZm9yIGVsZW1lbnRzIHRoYXQgY29udGFpbiB0aGUgZXF1aXZhbGVudFxuICAgICAqIHNvdXJjZSBwcm9wZXJ0aWVzLCBvdGhlcndpc2UgaXQgcmV0dXJucyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IFtmdW5jPV8uaWRlbnRpdHldIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIGEgY2FsbGJhY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjYWxsYmFjay5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgXy5pdGVyYXRlZSh7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiB0cnVlIH0pKTtcbiAgICAgKiAvLyA9PiBbeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH1dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIF8uaXRlcmF0ZWUoWyd1c2VyJywgJ2ZyZWQnXSkpO1xuICAgICAqIC8vID0+IFt7ICd1c2VyJzogJ2ZyZWQnLCAnYWdlJzogNDAgfV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWFwKHVzZXJzLCBfLml0ZXJhdGVlKCd1c2VyJykpO1xuICAgICAqIC8vID0+IFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gQ3JlYXRlIGN1c3RvbSBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqIF8uaXRlcmF0ZWUgPSBfLndyYXAoXy5pdGVyYXRlZSwgZnVuY3Rpb24oaXRlcmF0ZWUsIGZ1bmMpIHtcbiAgICAgKiAgIHJldHVybiAhXy5pc1JlZ0V4cChmdW5jKSA/IGl0ZXJhdGVlKGZ1bmMpIDogZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICogICAgIHJldHVybiBmdW5jLnRlc3Qoc3RyaW5nKTtcbiAgICAgKiAgIH07XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcihbJ2FiYycsICdkZWYnXSwgL2VmLyk7XG4gICAgICogLy8gPT4gWydkZWYnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGl0ZXJhdGVlKGZ1bmMpIHtcbiAgICAgIHJldHVybiBiYXNlSXRlcmF0ZWUodHlwZW9mIGZ1bmMgPT0gJ2Z1bmN0aW9uJyA/IGZ1bmMgOiBiYXNlQ2xvbmUoZnVuYywgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIGEgZ2l2ZW5cbiAgICAgKiBvYmplY3QgYW5kIGBzb3VyY2VgLCByZXR1cm5pbmcgYHRydWVgIGlmIHRoZSBnaXZlbiBvYmplY3QgaGFzIGVxdWl2YWxlbnRcbiAgICAgKiBwcm9wZXJ0eSB2YWx1ZXMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGUgY3JlYXRlZCBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGBfLmlzTWF0Y2hgIHdpdGggYHNvdXJjZWBcbiAgICAgKiBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIFBhcnRpYWwgY29tcGFyaXNvbnMgd2lsbCBtYXRjaCBlbXB0eSBhcnJheSBhbmQgZW1wdHkgb2JqZWN0IGBzb3VyY2VgXG4gICAgICogdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWUgYF8uaXNFcXVhbGBcbiAgICAgKiBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCB2YWx1ZSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBNdWx0aXBsZSB2YWx1ZXMgY2FuIGJlIGNoZWNrZWQgYnkgY29tYmluaW5nIHNldmVyYWwgbWF0Y2hlcnNcbiAgICAgKiB1c2luZyBgXy5vdmVyU29tZWBcbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9LFxuICAgICAqICAgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maWx0ZXIob2JqZWN0cywgXy5tYXRjaGVzKHsgJ2EnOiA0LCAnYyc6IDYgfSkpO1xuICAgICAqIC8vID0+IFt7ICdhJzogNCwgJ2InOiA1LCAnYyc6IDYgfV1cbiAgICAgKlxuICAgICAqIC8vIENoZWNraW5nIGZvciBzZXZlcmFsIHBvc3NpYmxlIHZhbHVlc1xuICAgICAqIF8uZmlsdGVyKG9iamVjdHMsIF8ub3ZlclNvbWUoW18ubWF0Y2hlcyh7ICdhJzogMSB9KSwgXy5tYXRjaGVzKHsgJ2EnOiA0IH0pXSkpO1xuICAgICAqIC8vID0+IFt7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSwgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF0Y2hlcyhzb3VyY2UpIHtcbiAgICAgIHJldHVybiBiYXNlTWF0Y2hlcyhiYXNlQ2xvbmUoc291cmNlLCBDTE9ORV9ERUVQX0ZMQUcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIHBhcnRpYWwgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gdGhlXG4gICAgICogdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0IHRvIGBzcmNWYWx1ZWAsIHJldHVybmluZyBgdHJ1ZWAgaWYgdGhlXG4gICAgICogb2JqZWN0IHZhbHVlIGlzIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBQYXJ0aWFsIGNvbXBhcmlzb25zIHdpbGwgbWF0Y2ggZW1wdHkgYXJyYXkgYW5kIGVtcHR5IG9iamVjdFxuICAgICAqIGBzcmNWYWx1ZWAgdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWVcbiAgICAgKiBgXy5pc0VxdWFsYCBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCB2YWx1ZSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBNdWx0aXBsZSB2YWx1ZXMgY2FuIGJlIGNoZWNrZWQgYnkgY29tYmluaW5nIHNldmVyYWwgbWF0Y2hlcnNcbiAgICAgKiB1c2luZyBgXy5vdmVyU29tZWBcbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9LFxuICAgICAqICAgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maW5kKG9iamVjdHMsIF8ubWF0Y2hlc1Byb3BlcnR5KCdhJywgNCkpO1xuICAgICAqIC8vID0+IHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XG4gICAgICpcbiAgICAgKiAvLyBDaGVja2luZyBmb3Igc2V2ZXJhbCBwb3NzaWJsZSB2YWx1ZXNcbiAgICAgKiBfLmZpbHRlcihvYmplY3RzLCBfLm92ZXJTb21lKFtfLm1hdGNoZXNQcm9wZXJ0eSgnYScsIDEpLCBfLm1hdGNoZXNQcm9wZXJ0eSgnYScsIDQpXSkpO1xuICAgICAqIC8vID0+IFt7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSwgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF0Y2hlc1Byb3BlcnR5KHBhdGgsIHNyY1ZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLCBiYXNlQ2xvbmUoc3JjVmFsdWUsIENMT05FX0RFRVBfRkxBRykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIG1ldGhvZCBhdCBgcGF0aGAgb2YgYSBnaXZlbiBvYmplY3QuXG4gICAgICogQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZSBwcm92aWRlZCB0byB0aGUgaW52b2tlZCBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy43LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBpbnZva2VyIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiB7ICdiJzogXy5jb25zdGFudCgyKSB9IH0sXG4gICAgICogICB7ICdhJzogeyAnYic6IF8uY29uc3RhbnQoMSkgfSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ubWFwKG9iamVjdHMsIF8ubWV0aG9kKCdhLmInKSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICpcbiAgICAgKiBfLm1hcChvYmplY3RzLCBfLm1ldGhvZChbJ2EnLCAnYiddKSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICovXG4gICAgdmFyIG1ldGhvZCA9IGJhc2VSZXN0KGZ1bmN0aW9uKHBhdGgsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VJbnZva2Uob2JqZWN0LCBwYXRoLCBhcmdzKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ubWV0aG9kYDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlc1xuICAgICAqIHRoZSBtZXRob2QgYXQgYSBnaXZlbiBwYXRoIG9mIGBvYmplY3RgLiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgYXJlXG4gICAgICogcHJvdmlkZWQgdG8gdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgdGhlIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGludm9rZXIgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IF8udGltZXMoMywgXy5jb25zdGFudCksXG4gICAgICogICAgIG9iamVjdCA9IHsgJ2EnOiBhcnJheSwgJ2InOiBhcnJheSwgJ2MnOiBhcnJheSB9O1xuICAgICAqXG4gICAgICogXy5tYXAoWydhWzJdJywgJ2NbMF0nXSwgXy5tZXRob2RPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKlxuICAgICAqIF8ubWFwKFtbJ2EnLCAnMiddLCBbJ2MnLCAnMCddXSwgXy5tZXRob2RPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKi9cbiAgICB2YXIgbWV0aG9kT2YgPSBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52b2tlKG9iamVjdCwgcGF0aCwgYXJncyk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQWRkcyBhbGwgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIGZ1bmN0aW9uIHByb3BlcnRpZXMgb2YgYSBzb3VyY2VcbiAgICAgKiBvYmplY3QgdG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdC4gSWYgYG9iamVjdGAgaXMgYSBmdW5jdGlvbiwgdGhlbiBtZXRob2RzXG4gICAgICogYXJlIGFkZGVkIHRvIGl0cyBwcm90b3R5cGUgYXMgd2VsbC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVc2UgYF8ucnVuSW5Db250ZXh0YCB0byBjcmVhdGUgYSBwcmlzdGluZSBgbG9kYXNoYCBmdW5jdGlvbiB0b1xuICAgICAqIGF2b2lkIGNvbmZsaWN0cyBjYXVzZWQgYnkgbW9kaWZ5aW5nIHRoZSBvcmlnaW5hbC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbnxPYmplY3R9IFtvYmplY3Q9bG9kYXNoXSBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBmdW5jdGlvbnMgdG8gYWRkLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuY2hhaW49dHJ1ZV0gU3BlY2lmeSB3aGV0aGVyIG1peGlucyBhcmUgY2hhaW5hYmxlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbnxPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHZvd2VscyhzdHJpbmcpIHtcbiAgICAgKiAgIHJldHVybiBfLmZpbHRlcihzdHJpbmcsIGZ1bmN0aW9uKHYpIHtcbiAgICAgKiAgICAgcmV0dXJuIC9bYWVpb3VdL2kudGVzdCh2KTtcbiAgICAgKiAgIH0pO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8ubWl4aW4oeyAndm93ZWxzJzogdm93ZWxzIH0pO1xuICAgICAqIF8udm93ZWxzKCdmcmVkJyk7XG4gICAgICogLy8gPT4gWydlJ11cbiAgICAgKlxuICAgICAqIF8oJ2ZyZWQnKS52b3dlbHMoKS52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsnZSddXG4gICAgICpcbiAgICAgKiBfLm1peGluKHsgJ3Zvd2Vscyc6IHZvd2VscyB9LCB7ICdjaGFpbic6IGZhbHNlIH0pO1xuICAgICAqIF8oJ2ZyZWQnKS52b3dlbHMoKTtcbiAgICAgKiAvLyA9PiBbJ2UnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1peGluKG9iamVjdCwgc291cmNlLCBvcHRpb25zKSB7XG4gICAgICB2YXIgcHJvcHMgPSBrZXlzKHNvdXJjZSksXG4gICAgICAgICAgbWV0aG9kTmFtZXMgPSBiYXNlRnVuY3Rpb25zKHNvdXJjZSwgcHJvcHMpO1xuXG4gICAgICBpZiAob3B0aW9ucyA9PSBudWxsICYmXG4gICAgICAgICAgIShpc09iamVjdChzb3VyY2UpICYmIChtZXRob2ROYW1lcy5sZW5ndGggfHwgIXByb3BzLmxlbmd0aCkpKSB7XG4gICAgICAgIG9wdGlvbnMgPSBzb3VyY2U7XG4gICAgICAgIHNvdXJjZSA9IG9iamVjdDtcbiAgICAgICAgb2JqZWN0ID0gdGhpcztcbiAgICAgICAgbWV0aG9kTmFtZXMgPSBiYXNlRnVuY3Rpb25zKHNvdXJjZSwga2V5cyhzb3VyY2UpKTtcbiAgICAgIH1cbiAgICAgIHZhciBjaGFpbiA9ICEoaXNPYmplY3Qob3B0aW9ucykgJiYgJ2NoYWluJyBpbiBvcHRpb25zKSB8fCAhIW9wdGlvbnMuY2hhaW4sXG4gICAgICAgICAgaXNGdW5jID0gaXNGdW5jdGlvbihvYmplY3QpO1xuXG4gICAgICBhcnJheUVhY2gobWV0aG9kTmFtZXMsIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBzb3VyY2VbbWV0aG9kTmFtZV07XG4gICAgICAgIG9iamVjdFttZXRob2ROYW1lXSA9IGZ1bmM7XG4gICAgICAgIGlmIChpc0Z1bmMpIHtcbiAgICAgICAgICBvYmplY3QucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgY2hhaW5BbGwgPSB0aGlzLl9fY2hhaW5fXztcbiAgICAgICAgICAgIGlmIChjaGFpbiB8fCBjaGFpbkFsbCkge1xuICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gb2JqZWN0KHRoaXMuX193cmFwcGVkX18pLFxuICAgICAgICAgICAgICAgICAgYWN0aW9ucyA9IHJlc3VsdC5fX2FjdGlvbnNfXyA9IGNvcHlBcnJheSh0aGlzLl9fYWN0aW9uc19fKTtcblxuICAgICAgICAgICAgICBhY3Rpb25zLnB1c2goeyAnZnVuYyc6IGZ1bmMsICdhcmdzJzogYXJndW1lbnRzLCAndGhpc0FyZyc6IG9iamVjdCB9KTtcbiAgICAgICAgICAgICAgcmVzdWx0Ll9fY2hhaW5fXyA9IGNoYWluQWxsO1xuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkob2JqZWN0LCBhcnJheVB1c2goW3RoaXMudmFsdWUoKV0sIGFyZ3VtZW50cykpO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldmVydHMgdGhlIGBfYCB2YXJpYWJsZSB0byBpdHMgcHJldmlvdXMgdmFsdWUgYW5kIHJldHVybnMgYSByZWZlcmVuY2UgdG9cbiAgICAgKiB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBsb2Rhc2ggPSBfLm5vQ29uZmxpY3QoKTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBub0NvbmZsaWN0KCkge1xuICAgICAgaWYgKHJvb3QuXyA9PT0gdGhpcykge1xuICAgICAgICByb290Ll8gPSBvbGREYXNoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGltZXMoMiwgXy5ub29wKTtcbiAgICAgKiAvLyA9PiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdXG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9vcCgpIHtcbiAgICAgIC8vIE5vIG9wZXJhdGlvbiBwZXJmb3JtZWQuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZ2V0cyB0aGUgYXJndW1lbnQgYXQgaW5kZXggYG5gLiBJZiBgbmAgaXMgbmVnYXRpdmUsXG4gICAgICogdGhlIG50aCBhcmd1bWVudCBmcm9tIHRoZSBlbmQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0wXSBUaGUgaW5kZXggb2YgdGhlIGFyZ3VtZW50IHRvIHJldHVybi5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYXNzLXRocnUgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5udGhBcmcoMSk7XG4gICAgICogZnVuYygnYScsICdiJywgJ2MnLCAnZCcpO1xuICAgICAqIC8vID0+ICdiJ1xuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm50aEFyZygtMik7XG4gICAgICogZnVuYygnYScsICdiJywgJ2MnLCAnZCcpO1xuICAgICAqIC8vID0+ICdjJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIG50aEFyZyhuKSB7XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VOdGgoYXJncywgbik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBpdGVyYXRlZXNgIHdpdGggdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlc1xuICAgICAqIGFuZCByZXR1cm5zIHRoZWlyIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIGl0ZXJhdGVlcyB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyKFtNYXRoLm1heCwgTWF0aC5taW5dKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoMSwgMiwgMywgNCk7XG4gICAgICogLy8gPT4gWzQsIDFdXG4gICAgICovXG4gICAgdmFyIG92ZXIgPSBjcmVhdGVPdmVyKGFycmF5TWFwKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiAqKmFsbCoqIG9mIHRoZSBgcHJlZGljYXRlc2AgcmV0dXJuXG4gICAgICogdHJ1dGh5IHdoZW4gaW52b2tlZCB3aXRoIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBGb2xsb3dpbmcgc2hvcnRoYW5kcyBhcmUgcG9zc2libGUgZm9yIHByb3ZpZGluZyBwcmVkaWNhdGVzLlxuICAgICAqIFBhc3MgYW4gYE9iamVjdGAgYW5kIGl0IHdpbGwgYmUgdXNlZCBhcyBhbiBwYXJhbWV0ZXIgZm9yIGBfLm1hdGNoZXNgIHRvIGNyZWF0ZSB0aGUgcHJlZGljYXRlLlxuICAgICAqIFBhc3MgYW4gYEFycmF5YCBvZiBwYXJhbWV0ZXJzIGZvciBgXy5tYXRjaGVzUHJvcGVydHlgIGFuZCB0aGUgcHJlZGljYXRlIHdpbGwgYmUgY3JlYXRlZCB1c2luZyB0aGVtLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW3ByZWRpY2F0ZXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgcHJlZGljYXRlcyB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm92ZXJFdmVyeShbQm9vbGVhbiwgaXNGaW5pdGVdKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoJzEnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBmdW5jKG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBmdW5jKE5hTik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgb3ZlckV2ZXJ5ID0gY3JlYXRlT3ZlcihhcnJheUV2ZXJ5KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiAqKmFueSoqIG9mIHRoZSBgcHJlZGljYXRlc2AgcmV0dXJuXG4gICAgICogdHJ1dGh5IHdoZW4gaW52b2tlZCB3aXRoIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBGb2xsb3dpbmcgc2hvcnRoYW5kcyBhcmUgcG9zc2libGUgZm9yIHByb3ZpZGluZyBwcmVkaWNhdGVzLlxuICAgICAqIFBhc3MgYW4gYE9iamVjdGAgYW5kIGl0IHdpbGwgYmUgdXNlZCBhcyBhbiBwYXJhbWV0ZXIgZm9yIGBfLm1hdGNoZXNgIHRvIGNyZWF0ZSB0aGUgcHJlZGljYXRlLlxuICAgICAqIFBhc3MgYW4gYEFycmF5YCBvZiBwYXJhbWV0ZXJzIGZvciBgXy5tYXRjaGVzUHJvcGVydHlgIGFuZCB0aGUgcHJlZGljYXRlIHdpbGwgYmUgY3JlYXRlZCB1c2luZyB0aGVtLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW3ByZWRpY2F0ZXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgcHJlZGljYXRlcyB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm92ZXJTb21lKFtCb29sZWFuLCBpc0Zpbml0ZV0pO1xuICAgICAqXG4gICAgICogZnVuYygnMScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGZ1bmMobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogZnVuYyhOYU4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiB2YXIgbWF0Y2hlc0Z1bmMgPSBfLm92ZXJTb21lKFt7ICdhJzogMSB9LCB7ICdhJzogMiB9XSlcbiAgICAgKiB2YXIgbWF0Y2hlc1Byb3BlcnR5RnVuYyA9IF8ub3ZlclNvbWUoW1snYScsIDFdLCBbJ2EnLCAyXV0pXG4gICAgICovXG4gICAgdmFyIG92ZXJTb21lID0gY3JlYXRlT3ZlcihhcnJheVNvbWUpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiB7ICdiJzogMiB9IH0sXG4gICAgICogICB7ICdhJzogeyAnYic6IDEgfSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ubWFwKG9iamVjdHMsIF8ucHJvcGVydHkoJ2EuYicpKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKlxuICAgICAqIF8ubWFwKF8uc29ydEJ5KG9iamVjdHMsIF8ucHJvcGVydHkoWydhJywgJ2InXSkpLCAnYS5iJyk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcHJvcGVydHkocGF0aCkge1xuICAgICAgcmV0dXJuIGlzS2V5KHBhdGgpID8gYmFzZVByb3BlcnR5KHRvS2V5KHBhdGgpKSA6IGJhc2VQcm9wZXJ0eURlZXAocGF0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLnByb3BlcnR5YDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJuc1xuICAgICAqIHRoZSB2YWx1ZSBhdCBhIGdpdmVuIHBhdGggb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzAsIDEsIDJdLFxuICAgICAqICAgICBvYmplY3QgPSB7ICdhJzogYXJyYXksICdiJzogYXJyYXksICdjJzogYXJyYXkgfTtcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnYVsyXScsICdjWzBdJ10sIF8ucHJvcGVydHlPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKlxuICAgICAqIF8ubWFwKFtbJ2EnLCAnMiddLCBbJ2MnLCAnMCddXSwgXy5wcm9wZXJ0eU9mKG9iamVjdCkpO1xuICAgICAqIC8vID0+IFsyLCAwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHByb3BlcnR5T2Yob2JqZWN0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgbnVtYmVycyAocG9zaXRpdmUgYW5kL29yIG5lZ2F0aXZlKSBwcm9ncmVzc2luZyBmcm9tXG4gICAgICogYHN0YXJ0YCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLiBBIHN0ZXAgb2YgYC0xYCBpcyB1c2VkIGlmIGEgbmVnYXRpdmVcbiAgICAgKiBgc3RhcnRgIGlzIHNwZWNpZmllZCB3aXRob3V0IGFuIGBlbmRgIG9yIGBzdGVwYC4gSWYgYGVuZGAgaXMgbm90IHNwZWNpZmllZCxcbiAgICAgKiBpdCdzIHNldCB0byBgc3RhcnRgIHdpdGggYHN0YXJ0YCB0aGVuIHNldCB0byBgMGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSmF2YVNjcmlwdCBmb2xsb3dzIHRoZSBJRUVFLTc1NCBzdGFuZGFyZCBmb3IgcmVzb2x2aW5nXG4gICAgICogZmxvYXRpbmctcG9pbnQgdmFsdWVzIHdoaWNoIGNhbiBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGVwPTFdIFRoZSB2YWx1ZSB0byBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgbnVtYmVycy5cbiAgICAgKiBAc2VlIF8uaW5SYW5nZSwgXy5yYW5nZVJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoNCk7XG4gICAgICogLy8gPT4gWzAsIDEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKC00KTtcbiAgICAgKiAvLyA9PiBbMCwgLTEsIC0yLCAtM11cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMSwgNSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIDRdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDAsIDIwLCA1KTtcbiAgICAgKiAvLyA9PiBbMCwgNSwgMTAsIDE1XVxuICAgICAqXG4gICAgICogXy5yYW5nZSgwLCAtNCwgLTEpO1xuICAgICAqIC8vID0+IFswLCAtMSwgLTIsIC0zXVxuICAgICAqXG4gICAgICogXy5yYW5nZSgxLCA0LCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICB2YXIgcmFuZ2UgPSBjcmVhdGVSYW5nZSgpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5yYW5nZWAgZXhjZXB0IHRoYXQgaXQgcG9wdWxhdGVzIHZhbHVlcyBpblxuICAgICAqIGRlc2NlbmRpbmcgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RlcD0xXSBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gICAgICogQHNlZSBfLmluUmFuZ2UsIF8ucmFuZ2VcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KDQpO1xuICAgICAqIC8vID0+IFszLCAyLCAxLCAwXVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KC00KTtcbiAgICAgKiAvLyA9PiBbLTMsIC0yLCAtMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgxLCA1KTtcbiAgICAgKiAvLyA9PiBbNCwgMywgMiwgMV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgwLCAyMCwgNSk7XG4gICAgICogLy8gPT4gWzE1LCAxMCwgNSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgwLCAtNCwgLTEpO1xuICAgICAqIC8vID0+IFstMywgLTIsIC0xLCAwXVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KDEsIDQsIDApO1xuICAgICAqIC8vID0+IFsxLCAxLCAxXVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgdmFyIHJhbmdlUmlnaHQgPSBjcmVhdGVSYW5nZSh0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xMy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5cyA9IF8udGltZXMoMiwgXy5zdHViQXJyYXkpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXlzKTtcbiAgICAgKiAvLyA9PiBbW10sIFtdXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXlzWzBdID09PSBhcnJheXNbMV0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1YkFycmF5KCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICAgICAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGVtcHR5IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBfLnRpbWVzKDIsIF8uc3R1Yk9iamVjdCk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAgICAgKiAvLyA9PiBbe30sIHt9XVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdHViT2JqZWN0KCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8uc3R1YlN0cmluZyk7XG4gICAgICogLy8gPT4gWycnLCAnJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdHViU3RyaW5nKCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYHRydWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8uc3R1YlRydWUpO1xuICAgICAqIC8vID0+IFt0cnVlLCB0cnVlXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJUcnVlKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyB0aGUgaXRlcmF0ZWUgYG5gIHRpbWVzLCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgdGhlIHJlc3VsdHMgb2ZcbiAgICAgKiBlYWNoIGludm9jYXRpb24uIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OyAoaW5kZXgpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIGludm9rZSBgaXRlcmF0ZWVgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygzLCBTdHJpbmcpO1xuICAgICAqIC8vID0+IFsnMCcsICcxJywgJzInXVxuICAgICAqXG4gICAgICogIF8udGltZXMoNCwgXy5jb25zdGFudCgwKSk7XG4gICAgICogLy8gPT4gWzAsIDAsIDAsIDBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICBpZiAobiA8IDEgfHwgbiA+IE1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gTUFYX0FSUkFZX0xFTkdUSCxcbiAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNaW4obiwgTUFYX0FSUkFZX0xFTkdUSCk7XG5cbiAgICAgIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUpO1xuICAgICAgbiAtPSBNQVhfQVJSQVlfTEVOR1RIO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZVRpbWVzKGxlbmd0aCwgaXRlcmF0ZWUpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgICAgIGl0ZXJhdGVlKGluZGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1BhdGgoJ2EuYi5jJyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gICAgICpcbiAgICAgKiBfLnRvUGF0aCgnYVswXS5iLmMnKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnMCcsICdiJywgJ2MnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvUGF0aCh2YWx1ZSkge1xuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgdG9LZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzU3ltYm9sKHZhbHVlKSA/IFt2YWx1ZV0gOiBjb3B5QXJyYXkoc3RyaW5nVG9QYXRoKHRvU3RyaW5nKHZhbHVlKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIHVuaXF1ZSBJRC4gSWYgYHByZWZpeGAgaXMgZ2l2ZW4sIHRoZSBJRCBpcyBhcHBlbmRlZCB0byBpdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtwcmVmaXg9JyddIFRoZSB2YWx1ZSB0byBwcmVmaXggdGhlIElEIHdpdGguXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdW5pcXVlIElELlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaXF1ZUlkKCdjb250YWN0XycpO1xuICAgICAqIC8vID0+ICdjb250YWN0XzEwNCdcbiAgICAgKlxuICAgICAqIF8udW5pcXVlSWQoKTtcbiAgICAgKiAvLyA9PiAnMTA1J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXF1ZUlkKHByZWZpeCkge1xuICAgICAgdmFyIGlkID0gKytpZENvdW50ZXI7XG4gICAgICByZXR1cm4gdG9TdHJpbmcocHJlZml4KSArIGlkO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIEFkZHMgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy40LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhdWdlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhbiBhZGRpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYWRkZW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGFuIGFkZGl0aW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRvdGFsLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmFkZCg2LCA0KTtcbiAgICAgKiAvLyA9PiAxMFxuICAgICAqL1xuICAgIHZhciBhZGQgPSBjcmVhdGVNYXRoT3BlcmF0aW9uKGZ1bmN0aW9uKGF1Z2VuZCwgYWRkZW5kKSB7XG4gICAgICByZXR1cm4gYXVnZW5kICsgYWRkZW5kO1xuICAgIH0sIDApO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYG51bWJlcmAgcm91bmRlZCB1cCB0byBgcHJlY2lzaW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZCB1cC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3ByZWNpc2lvbj0wXSBUaGUgcHJlY2lzaW9uIHRvIHJvdW5kIHVwIHRvLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJvdW5kZWQgdXAgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNlaWwoNC4wMDYpO1xuICAgICAqIC8vID0+IDVcbiAgICAgKlxuICAgICAqIF8uY2VpbCg2LjAwNCwgMik7XG4gICAgICogLy8gPT4gNi4wMVxuICAgICAqXG4gICAgICogXy5jZWlsKDYwNDAsIC0yKTtcbiAgICAgKiAvLyA9PiA2MTAwXG4gICAgICovXG4gICAgdmFyIGNlaWwgPSBjcmVhdGVSb3VuZCgnY2VpbCcpO1xuXG4gICAgLyoqXG4gICAgICogRGl2aWRlIHR3byBudW1iZXJzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGl2aWRlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhIGRpdmlzaW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkaXZpc29yIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgZGl2aXNpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcXVvdGllbnQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGl2aWRlKDYsIDQpO1xuICAgICAqIC8vID0+IDEuNVxuICAgICAqL1xuICAgIHZhciBkaXZpZGUgPSBjcmVhdGVNYXRoT3BlcmF0aW9uKGZ1bmN0aW9uKGRpdmlkZW5kLCBkaXZpc29yKSB7XG4gICAgICByZXR1cm4gZGl2aWRlbmQgLyBkaXZpc29yO1xuICAgIH0sIDEpO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYG51bWJlcmAgcm91bmRlZCBkb3duIHRvIGBwcmVjaXNpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIHJvdW5kIGRvd24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCBkb3duIHRvLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJvdW5kZWQgZG93biBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZmxvb3IoNC4wMDYpO1xuICAgICAqIC8vID0+IDRcbiAgICAgKlxuICAgICAqIF8uZmxvb3IoMC4wNDYsIDIpO1xuICAgICAqIC8vID0+IDAuMDRcbiAgICAgKlxuICAgICAqIF8uZmxvb3IoNDA2MCwgLTIpO1xuICAgICAqIC8vID0+IDQwMDBcbiAgICAgKi9cbiAgICB2YXIgZmxvb3IgPSBjcmVhdGVSb3VuZCgnZmxvb3InKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIHRoZSBtYXhpbXVtIHZhbHVlIG9mIGBhcnJheWAuIElmIGBhcnJheWAgaXMgZW1wdHkgb3IgZmFsc2V5LFxuICAgICAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1heChbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDhcbiAgICAgKlxuICAgICAqIF8ubWF4KFtdKTtcbiAgICAgKiAvLyA9PiB1bmRlZmluZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXgoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VHdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5tYXhgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAgICAgKiB0aGUgdmFsdWUgaXMgcmFua2VkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiAxIH0sIHsgJ24nOiAyIH1dO1xuICAgICAqXG4gICAgICogXy5tYXhCeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IHsgJ24nOiAyIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWF4Qnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiB7ICduJzogMiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF4QnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYmFzZUd0KVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWVhbiBvZiB0aGUgdmFsdWVzIGluIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tZWFuKFs0LCAyLCA4LCA2XSk7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lYW4oYXJyYXkpIHtcbiAgICAgIHJldHVybiBiYXNlTWVhbihhcnJheSwgaWRlbnRpdHkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWVhbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IGluIGBhcnJheWAgdG8gZ2VuZXJhdGUgdGhlIHZhbHVlIHRvIGJlIGF2ZXJhZ2VkLlxuICAgICAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBtZWFuLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogNCB9LCB7ICduJzogMiB9LCB7ICduJzogOCB9LCB7ICduJzogNiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWVhbkJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gICAgICogLy8gPT4gNVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5tZWFuQnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiA1XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVhbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VNZWFuKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIHRoZSBtaW5pbXVtIHZhbHVlIG9mIGBhcnJheWAuIElmIGBhcnJheWAgaXMgZW1wdHkgb3IgZmFsc2V5LFxuICAgICAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1pbihbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIF8ubWluKFtdKTtcbiAgICAgKiAvLyA9PiB1bmRlZmluZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtaW4oYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VMdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5taW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAgICAgKiB0aGUgdmFsdWUgaXMgcmFua2VkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1pbmltdW0gdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiAxIH0sIHsgJ24nOiAyIH1dO1xuICAgICAqXG4gICAgICogXy5taW5CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IHsgJ24nOiAxIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWluQnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiB7ICduJzogMSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWluQnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYmFzZUx0KVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNdWx0aXBseSB0d28gbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG11bHRpcGxpZXIgVGhlIGZpcnN0IG51bWJlciBpbiBhIG11bHRpcGxpY2F0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtdWx0aXBsaWNhbmQgVGhlIHNlY29uZCBudW1iZXIgaW4gYSBtdWx0aXBsaWNhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBwcm9kdWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm11bHRpcGx5KDYsIDQpO1xuICAgICAqIC8vID0+IDI0XG4gICAgICovXG4gICAgdmFyIG11bHRpcGx5ID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihtdWx0aXBsaWVyLCBtdWx0aXBsaWNhbmQpIHtcbiAgICAgIHJldHVybiBtdWx0aXBsaWVyICogbXVsdGlwbGljYW5kO1xuICAgIH0sIDEpO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYG51bWJlcmAgcm91bmRlZCB0byBgcHJlY2lzaW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3ByZWNpc2lvbj0wXSBUaGUgcHJlY2lzaW9uIHRvIHJvdW5kIHRvLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJvdW5kZWQgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJvdW5kKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLnJvdW5kKDQuMDA2LCAyKTtcbiAgICAgKiAvLyA9PiA0LjAxXG4gICAgICpcbiAgICAgKiBfLnJvdW5kKDQwNjAsIC0yKTtcbiAgICAgKiAvLyA9PiA0MTAwXG4gICAgICovXG4gICAgdmFyIHJvdW5kID0gY3JlYXRlUm91bmQoJ3JvdW5kJyk7XG5cbiAgICAvKipcbiAgICAgKiBTdWJ0cmFjdCB0d28gbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG1pbnVlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhIHN1YnRyYWN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdWJ0cmFoZW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgc3VidHJhY3Rpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgZGlmZmVyZW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zdWJ0cmFjdCg2LCA0KTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICovXG4gICAgdmFyIHN1YnRyYWN0ID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihtaW51ZW5kLCBzdWJ0cmFoZW5kKSB7XG4gICAgICByZXR1cm4gbWludWVuZCAtIHN1YnRyYWhlbmQ7XG4gICAgfSwgMCk7XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgc3VtIG9mIHRoZSB2YWx1ZXMgaW4gYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjQuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdW0uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3VtKFs0LCAyLCA4LCA2XSk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdW0oYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTdW0oYXJyYXksIGlkZW50aXR5KVxuICAgICAgICA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zdW1gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSB2YWx1ZSB0byBiZSBzdW1tZWQuXG4gICAgICogVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN1bS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDQgfSwgeyAnbic6IDIgfSwgeyAnbic6IDggfSwgeyAnbic6IDYgfV07XG4gICAgICpcbiAgICAgKiBfLnN1bUJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc3VtQnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiAyMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN1bUJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVN1bShhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IDA7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLy8gQWRkIG1ldGhvZHMgdGhhdCByZXR1cm4gd3JhcHBlZCB2YWx1ZXMgaW4gY2hhaW4gc2VxdWVuY2VzLlxuICAgIGxvZGFzaC5hZnRlciA9IGFmdGVyO1xuICAgIGxvZGFzaC5hcnkgPSBhcnk7XG4gICAgbG9kYXNoLmFzc2lnbiA9IGFzc2lnbjtcbiAgICBsb2Rhc2guYXNzaWduSW4gPSBhc3NpZ25JbjtcbiAgICBsb2Rhc2guYXNzaWduSW5XaXRoID0gYXNzaWduSW5XaXRoO1xuICAgIGxvZGFzaC5hc3NpZ25XaXRoID0gYXNzaWduV2l0aDtcbiAgICBsb2Rhc2guYXQgPSBhdDtcbiAgICBsb2Rhc2guYmVmb3JlID0gYmVmb3JlO1xuICAgIGxvZGFzaC5iaW5kID0gYmluZDtcbiAgICBsb2Rhc2guYmluZEFsbCA9IGJpbmRBbGw7XG4gICAgbG9kYXNoLmJpbmRLZXkgPSBiaW5kS2V5O1xuICAgIGxvZGFzaC5jYXN0QXJyYXkgPSBjYXN0QXJyYXk7XG4gICAgbG9kYXNoLmNoYWluID0gY2hhaW47XG4gICAgbG9kYXNoLmNodW5rID0gY2h1bms7XG4gICAgbG9kYXNoLmNvbXBhY3QgPSBjb21wYWN0O1xuICAgIGxvZGFzaC5jb25jYXQgPSBjb25jYXQ7XG4gICAgbG9kYXNoLmNvbmQgPSBjb25kO1xuICAgIGxvZGFzaC5jb25mb3JtcyA9IGNvbmZvcm1zO1xuICAgIGxvZGFzaC5jb25zdGFudCA9IGNvbnN0YW50O1xuICAgIGxvZGFzaC5jb3VudEJ5ID0gY291bnRCeTtcbiAgICBsb2Rhc2guY3JlYXRlID0gY3JlYXRlO1xuICAgIGxvZGFzaC5jdXJyeSA9IGN1cnJ5O1xuICAgIGxvZGFzaC5jdXJyeVJpZ2h0ID0gY3VycnlSaWdodDtcbiAgICBsb2Rhc2guZGVib3VuY2UgPSBkZWJvdW5jZTtcbiAgICBsb2Rhc2guZGVmYXVsdHMgPSBkZWZhdWx0cztcbiAgICBsb2Rhc2guZGVmYXVsdHNEZWVwID0gZGVmYXVsdHNEZWVwO1xuICAgIGxvZGFzaC5kZWZlciA9IGRlZmVyO1xuICAgIGxvZGFzaC5kZWxheSA9IGRlbGF5O1xuICAgIGxvZGFzaC5kaWZmZXJlbmNlID0gZGlmZmVyZW5jZTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZUJ5ID0gZGlmZmVyZW5jZUJ5O1xuICAgIGxvZGFzaC5kaWZmZXJlbmNlV2l0aCA9IGRpZmZlcmVuY2VXaXRoO1xuICAgIGxvZGFzaC5kcm9wID0gZHJvcDtcbiAgICBsb2Rhc2guZHJvcFJpZ2h0ID0gZHJvcFJpZ2h0O1xuICAgIGxvZGFzaC5kcm9wUmlnaHRXaGlsZSA9IGRyb3BSaWdodFdoaWxlO1xuICAgIGxvZGFzaC5kcm9wV2hpbGUgPSBkcm9wV2hpbGU7XG4gICAgbG9kYXNoLmZpbGwgPSBmaWxsO1xuICAgIGxvZGFzaC5maWx0ZXIgPSBmaWx0ZXI7XG4gICAgbG9kYXNoLmZsYXRNYXAgPSBmbGF0TWFwO1xuICAgIGxvZGFzaC5mbGF0TWFwRGVlcCA9IGZsYXRNYXBEZWVwO1xuICAgIGxvZGFzaC5mbGF0TWFwRGVwdGggPSBmbGF0TWFwRGVwdGg7XG4gICAgbG9kYXNoLmZsYXR0ZW4gPSBmbGF0dGVuO1xuICAgIGxvZGFzaC5mbGF0dGVuRGVlcCA9IGZsYXR0ZW5EZWVwO1xuICAgIGxvZGFzaC5mbGF0dGVuRGVwdGggPSBmbGF0dGVuRGVwdGg7XG4gICAgbG9kYXNoLmZsaXAgPSBmbGlwO1xuICAgIGxvZGFzaC5mbG93ID0gZmxvdztcbiAgICBsb2Rhc2guZmxvd1JpZ2h0ID0gZmxvd1JpZ2h0O1xuICAgIGxvZGFzaC5mcm9tUGFpcnMgPSBmcm9tUGFpcnM7XG4gICAgbG9kYXNoLmZ1bmN0aW9ucyA9IGZ1bmN0aW9ucztcbiAgICBsb2Rhc2guZnVuY3Rpb25zSW4gPSBmdW5jdGlvbnNJbjtcbiAgICBsb2Rhc2guZ3JvdXBCeSA9IGdyb3VwQnk7XG4gICAgbG9kYXNoLmluaXRpYWwgPSBpbml0aWFsO1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb24gPSBpbnRlcnNlY3Rpb247XG4gICAgbG9kYXNoLmludGVyc2VjdGlvbkJ5ID0gaW50ZXJzZWN0aW9uQnk7XG4gICAgbG9kYXNoLmludGVyc2VjdGlvbldpdGggPSBpbnRlcnNlY3Rpb25XaXRoO1xuICAgIGxvZGFzaC5pbnZlcnQgPSBpbnZlcnQ7XG4gICAgbG9kYXNoLmludmVydEJ5ID0gaW52ZXJ0Qnk7XG4gICAgbG9kYXNoLmludm9rZU1hcCA9IGludm9rZU1hcDtcbiAgICBsb2Rhc2guaXRlcmF0ZWUgPSBpdGVyYXRlZTtcbiAgICBsb2Rhc2gua2V5QnkgPSBrZXlCeTtcbiAgICBsb2Rhc2gua2V5cyA9IGtleXM7XG4gICAgbG9kYXNoLmtleXNJbiA9IGtleXNJbjtcbiAgICBsb2Rhc2gubWFwID0gbWFwO1xuICAgIGxvZGFzaC5tYXBLZXlzID0gbWFwS2V5cztcbiAgICBsb2Rhc2gubWFwVmFsdWVzID0gbWFwVmFsdWVzO1xuICAgIGxvZGFzaC5tYXRjaGVzID0gbWF0Y2hlcztcbiAgICBsb2Rhc2gubWF0Y2hlc1Byb3BlcnR5ID0gbWF0Y2hlc1Byb3BlcnR5O1xuICAgIGxvZGFzaC5tZW1vaXplID0gbWVtb2l6ZTtcbiAgICBsb2Rhc2gubWVyZ2UgPSBtZXJnZTtcbiAgICBsb2Rhc2gubWVyZ2VXaXRoID0gbWVyZ2VXaXRoO1xuICAgIGxvZGFzaC5tZXRob2QgPSBtZXRob2Q7XG4gICAgbG9kYXNoLm1ldGhvZE9mID0gbWV0aG9kT2Y7XG4gICAgbG9kYXNoLm1peGluID0gbWl4aW47XG4gICAgbG9kYXNoLm5lZ2F0ZSA9IG5lZ2F0ZTtcbiAgICBsb2Rhc2gubnRoQXJnID0gbnRoQXJnO1xuICAgIGxvZGFzaC5vbWl0ID0gb21pdDtcbiAgICBsb2Rhc2gub21pdEJ5ID0gb21pdEJ5O1xuICAgIGxvZGFzaC5vbmNlID0gb25jZTtcbiAgICBsb2Rhc2gub3JkZXJCeSA9IG9yZGVyQnk7XG4gICAgbG9kYXNoLm92ZXIgPSBvdmVyO1xuICAgIGxvZGFzaC5vdmVyQXJncyA9IG92ZXJBcmdzO1xuICAgIGxvZGFzaC5vdmVyRXZlcnkgPSBvdmVyRXZlcnk7XG4gICAgbG9kYXNoLm92ZXJTb21lID0gb3ZlclNvbWU7XG4gICAgbG9kYXNoLnBhcnRpYWwgPSBwYXJ0aWFsO1xuICAgIGxvZGFzaC5wYXJ0aWFsUmlnaHQgPSBwYXJ0aWFsUmlnaHQ7XG4gICAgbG9kYXNoLnBhcnRpdGlvbiA9IHBhcnRpdGlvbjtcbiAgICBsb2Rhc2gucGljayA9IHBpY2s7XG4gICAgbG9kYXNoLnBpY2tCeSA9IHBpY2tCeTtcbiAgICBsb2Rhc2gucHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICBsb2Rhc2gucHJvcGVydHlPZiA9IHByb3BlcnR5T2Y7XG4gICAgbG9kYXNoLnB1bGwgPSBwdWxsO1xuICAgIGxvZGFzaC5wdWxsQWxsID0gcHVsbEFsbDtcbiAgICBsb2Rhc2gucHVsbEFsbEJ5ID0gcHVsbEFsbEJ5O1xuICAgIGxvZGFzaC5wdWxsQWxsV2l0aCA9IHB1bGxBbGxXaXRoO1xuICAgIGxvZGFzaC5wdWxsQXQgPSBwdWxsQXQ7XG4gICAgbG9kYXNoLnJhbmdlID0gcmFuZ2U7XG4gICAgbG9kYXNoLnJhbmdlUmlnaHQgPSByYW5nZVJpZ2h0O1xuICAgIGxvZGFzaC5yZWFyZyA9IHJlYXJnO1xuICAgIGxvZGFzaC5yZWplY3QgPSByZWplY3Q7XG4gICAgbG9kYXNoLnJlbW92ZSA9IHJlbW92ZTtcbiAgICBsb2Rhc2gucmVzdCA9IHJlc3Q7XG4gICAgbG9kYXNoLnJldmVyc2UgPSByZXZlcnNlO1xuICAgIGxvZGFzaC5zYW1wbGVTaXplID0gc2FtcGxlU2l6ZTtcbiAgICBsb2Rhc2guc2V0ID0gc2V0O1xuICAgIGxvZGFzaC5zZXRXaXRoID0gc2V0V2l0aDtcbiAgICBsb2Rhc2guc2h1ZmZsZSA9IHNodWZmbGU7XG4gICAgbG9kYXNoLnNsaWNlID0gc2xpY2U7XG4gICAgbG9kYXNoLnNvcnRCeSA9IHNvcnRCeTtcbiAgICBsb2Rhc2guc29ydGVkVW5pcSA9IHNvcnRlZFVuaXE7XG4gICAgbG9kYXNoLnNvcnRlZFVuaXFCeSA9IHNvcnRlZFVuaXFCeTtcbiAgICBsb2Rhc2guc3BsaXQgPSBzcGxpdDtcbiAgICBsb2Rhc2guc3ByZWFkID0gc3ByZWFkO1xuICAgIGxvZGFzaC50YWlsID0gdGFpbDtcbiAgICBsb2Rhc2gudGFrZSA9IHRha2U7XG4gICAgbG9kYXNoLnRha2VSaWdodCA9IHRha2VSaWdodDtcbiAgICBsb2Rhc2gudGFrZVJpZ2h0V2hpbGUgPSB0YWtlUmlnaHRXaGlsZTtcbiAgICBsb2Rhc2gudGFrZVdoaWxlID0gdGFrZVdoaWxlO1xuICAgIGxvZGFzaC50YXAgPSB0YXA7XG4gICAgbG9kYXNoLnRocm90dGxlID0gdGhyb3R0bGU7XG4gICAgbG9kYXNoLnRocnUgPSB0aHJ1O1xuICAgIGxvZGFzaC50b0FycmF5ID0gdG9BcnJheTtcbiAgICBsb2Rhc2gudG9QYWlycyA9IHRvUGFpcnM7XG4gICAgbG9kYXNoLnRvUGFpcnNJbiA9IHRvUGFpcnNJbjtcbiAgICBsb2Rhc2gudG9QYXRoID0gdG9QYXRoO1xuICAgIGxvZGFzaC50b1BsYWluT2JqZWN0ID0gdG9QbGFpbk9iamVjdDtcbiAgICBsb2Rhc2gudHJhbnNmb3JtID0gdHJhbnNmb3JtO1xuICAgIGxvZGFzaC51bmFyeSA9IHVuYXJ5O1xuICAgIGxvZGFzaC51bmlvbiA9IHVuaW9uO1xuICAgIGxvZGFzaC51bmlvbkJ5ID0gdW5pb25CeTtcbiAgICBsb2Rhc2gudW5pb25XaXRoID0gdW5pb25XaXRoO1xuICAgIGxvZGFzaC51bmlxID0gdW5pcTtcbiAgICBsb2Rhc2gudW5pcUJ5ID0gdW5pcUJ5O1xuICAgIGxvZGFzaC51bmlxV2l0aCA9IHVuaXFXaXRoO1xuICAgIGxvZGFzaC51bnNldCA9IHVuc2V0O1xuICAgIGxvZGFzaC51bnppcCA9IHVuemlwO1xuICAgIGxvZGFzaC51bnppcFdpdGggPSB1bnppcFdpdGg7XG4gICAgbG9kYXNoLnVwZGF0ZSA9IHVwZGF0ZTtcbiAgICBsb2Rhc2gudXBkYXRlV2l0aCA9IHVwZGF0ZVdpdGg7XG4gICAgbG9kYXNoLnZhbHVlcyA9IHZhbHVlcztcbiAgICBsb2Rhc2gudmFsdWVzSW4gPSB2YWx1ZXNJbjtcbiAgICBsb2Rhc2gud2l0aG91dCA9IHdpdGhvdXQ7XG4gICAgbG9kYXNoLndvcmRzID0gd29yZHM7XG4gICAgbG9kYXNoLndyYXAgPSB3cmFwO1xuICAgIGxvZGFzaC54b3IgPSB4b3I7XG4gICAgbG9kYXNoLnhvckJ5ID0geG9yQnk7XG4gICAgbG9kYXNoLnhvcldpdGggPSB4b3JXaXRoO1xuICAgIGxvZGFzaC56aXAgPSB6aXA7XG4gICAgbG9kYXNoLnppcE9iamVjdCA9IHppcE9iamVjdDtcbiAgICBsb2Rhc2guemlwT2JqZWN0RGVlcCA9IHppcE9iamVjdERlZXA7XG4gICAgbG9kYXNoLnppcFdpdGggPSB6aXBXaXRoO1xuXG4gICAgLy8gQWRkIGFsaWFzZXMuXG4gICAgbG9kYXNoLmVudHJpZXMgPSB0b1BhaXJzO1xuICAgIGxvZGFzaC5lbnRyaWVzSW4gPSB0b1BhaXJzSW47XG4gICAgbG9kYXNoLmV4dGVuZCA9IGFzc2lnbkluO1xuICAgIGxvZGFzaC5leHRlbmRXaXRoID0gYXNzaWduSW5XaXRoO1xuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYGxvZGFzaC5wcm90b3R5cGVgLlxuICAgIG1peGluKGxvZGFzaCwgbG9kYXNoKTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8vIEFkZCBtZXRob2RzIHRoYXQgcmV0dXJuIHVud3JhcHBlZCB2YWx1ZXMgaW4gY2hhaW4gc2VxdWVuY2VzLlxuICAgIGxvZGFzaC5hZGQgPSBhZGQ7XG4gICAgbG9kYXNoLmF0dGVtcHQgPSBhdHRlbXB0O1xuICAgIGxvZGFzaC5jYW1lbENhc2UgPSBjYW1lbENhc2U7XG4gICAgbG9kYXNoLmNhcGl0YWxpemUgPSBjYXBpdGFsaXplO1xuICAgIGxvZGFzaC5jZWlsID0gY2VpbDtcbiAgICBsb2Rhc2guY2xhbXAgPSBjbGFtcDtcbiAgICBsb2Rhc2guY2xvbmUgPSBjbG9uZTtcbiAgICBsb2Rhc2guY2xvbmVEZWVwID0gY2xvbmVEZWVwO1xuICAgIGxvZGFzaC5jbG9uZURlZXBXaXRoID0gY2xvbmVEZWVwV2l0aDtcbiAgICBsb2Rhc2guY2xvbmVXaXRoID0gY2xvbmVXaXRoO1xuICAgIGxvZGFzaC5jb25mb3Jtc1RvID0gY29uZm9ybXNUbztcbiAgICBsb2Rhc2guZGVidXJyID0gZGVidXJyO1xuICAgIGxvZGFzaC5kZWZhdWx0VG8gPSBkZWZhdWx0VG87XG4gICAgbG9kYXNoLmRpdmlkZSA9IGRpdmlkZTtcbiAgICBsb2Rhc2guZW5kc1dpdGggPSBlbmRzV2l0aDtcbiAgICBsb2Rhc2guZXEgPSBlcTtcbiAgICBsb2Rhc2guZXNjYXBlID0gZXNjYXBlO1xuICAgIGxvZGFzaC5lc2NhcGVSZWdFeHAgPSBlc2NhcGVSZWdFeHA7XG4gICAgbG9kYXNoLmV2ZXJ5ID0gZXZlcnk7XG4gICAgbG9kYXNoLmZpbmQgPSBmaW5kO1xuICAgIGxvZGFzaC5maW5kSW5kZXggPSBmaW5kSW5kZXg7XG4gICAgbG9kYXNoLmZpbmRLZXkgPSBmaW5kS2V5O1xuICAgIGxvZGFzaC5maW5kTGFzdCA9IGZpbmRMYXN0O1xuICAgIGxvZGFzaC5maW5kTGFzdEluZGV4ID0gZmluZExhc3RJbmRleDtcbiAgICBsb2Rhc2guZmluZExhc3RLZXkgPSBmaW5kTGFzdEtleTtcbiAgICBsb2Rhc2guZmxvb3IgPSBmbG9vcjtcbiAgICBsb2Rhc2guZm9yRWFjaCA9IGZvckVhY2g7XG4gICAgbG9kYXNoLmZvckVhY2hSaWdodCA9IGZvckVhY2hSaWdodDtcbiAgICBsb2Rhc2guZm9ySW4gPSBmb3JJbjtcbiAgICBsb2Rhc2guZm9ySW5SaWdodCA9IGZvckluUmlnaHQ7XG4gICAgbG9kYXNoLmZvck93biA9IGZvck93bjtcbiAgICBsb2Rhc2guZm9yT3duUmlnaHQgPSBmb3JPd25SaWdodDtcbiAgICBsb2Rhc2guZ2V0ID0gZ2V0O1xuICAgIGxvZGFzaC5ndCA9IGd0O1xuICAgIGxvZGFzaC5ndGUgPSBndGU7XG4gICAgbG9kYXNoLmhhcyA9IGhhcztcbiAgICBsb2Rhc2guaGFzSW4gPSBoYXNJbjtcbiAgICBsb2Rhc2guaGVhZCA9IGhlYWQ7XG4gICAgbG9kYXNoLmlkZW50aXR5ID0gaWRlbnRpdHk7XG4gICAgbG9kYXNoLmluY2x1ZGVzID0gaW5jbHVkZXM7XG4gICAgbG9kYXNoLmluZGV4T2YgPSBpbmRleE9mO1xuICAgIGxvZGFzaC5pblJhbmdlID0gaW5SYW5nZTtcbiAgICBsb2Rhc2guaW52b2tlID0gaW52b2tlO1xuICAgIGxvZGFzaC5pc0FyZ3VtZW50cyA9IGlzQXJndW1lbnRzO1xuICAgIGxvZGFzaC5pc0FycmF5ID0gaXNBcnJheTtcbiAgICBsb2Rhc2guaXNBcnJheUJ1ZmZlciA9IGlzQXJyYXlCdWZmZXI7XG4gICAgbG9kYXNoLmlzQXJyYXlMaWtlID0gaXNBcnJheUxpa2U7XG4gICAgbG9kYXNoLmlzQXJyYXlMaWtlT2JqZWN0ID0gaXNBcnJheUxpa2VPYmplY3Q7XG4gICAgbG9kYXNoLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjtcbiAgICBsb2Rhc2guaXNCdWZmZXIgPSBpc0J1ZmZlcjtcbiAgICBsb2Rhc2guaXNEYXRlID0gaXNEYXRlO1xuICAgIGxvZGFzaC5pc0VsZW1lbnQgPSBpc0VsZW1lbnQ7XG4gICAgbG9kYXNoLmlzRW1wdHkgPSBpc0VtcHR5O1xuICAgIGxvZGFzaC5pc0VxdWFsID0gaXNFcXVhbDtcbiAgICBsb2Rhc2guaXNFcXVhbFdpdGggPSBpc0VxdWFsV2l0aDtcbiAgICBsb2Rhc2guaXNFcnJvciA9IGlzRXJyb3I7XG4gICAgbG9kYXNoLmlzRmluaXRlID0gaXNGaW5pdGU7XG4gICAgbG9kYXNoLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xuICAgIGxvZGFzaC5pc0ludGVnZXIgPSBpc0ludGVnZXI7XG4gICAgbG9kYXNoLmlzTGVuZ3RoID0gaXNMZW5ndGg7XG4gICAgbG9kYXNoLmlzTWFwID0gaXNNYXA7XG4gICAgbG9kYXNoLmlzTWF0Y2ggPSBpc01hdGNoO1xuICAgIGxvZGFzaC5pc01hdGNoV2l0aCA9IGlzTWF0Y2hXaXRoO1xuICAgIGxvZGFzaC5pc05hTiA9IGlzTmFOO1xuICAgIGxvZGFzaC5pc05hdGl2ZSA9IGlzTmF0aXZlO1xuICAgIGxvZGFzaC5pc05pbCA9IGlzTmlsO1xuICAgIGxvZGFzaC5pc051bGwgPSBpc051bGw7XG4gICAgbG9kYXNoLmlzTnVtYmVyID0gaXNOdW1iZXI7XG4gICAgbG9kYXNoLmlzT2JqZWN0ID0gaXNPYmplY3Q7XG4gICAgbG9kYXNoLmlzT2JqZWN0TGlrZSA9IGlzT2JqZWN0TGlrZTtcbiAgICBsb2Rhc2guaXNQbGFpbk9iamVjdCA9IGlzUGxhaW5PYmplY3Q7XG4gICAgbG9kYXNoLmlzUmVnRXhwID0gaXNSZWdFeHA7XG4gICAgbG9kYXNoLmlzU2FmZUludGVnZXIgPSBpc1NhZmVJbnRlZ2VyO1xuICAgIGxvZGFzaC5pc1NldCA9IGlzU2V0O1xuICAgIGxvZGFzaC5pc1N0cmluZyA9IGlzU3RyaW5nO1xuICAgIGxvZGFzaC5pc1N5bWJvbCA9IGlzU3ltYm9sO1xuICAgIGxvZGFzaC5pc1R5cGVkQXJyYXkgPSBpc1R5cGVkQXJyYXk7XG4gICAgbG9kYXNoLmlzVW5kZWZpbmVkID0gaXNVbmRlZmluZWQ7XG4gICAgbG9kYXNoLmlzV2Vha01hcCA9IGlzV2Vha01hcDtcbiAgICBsb2Rhc2guaXNXZWFrU2V0ID0gaXNXZWFrU2V0O1xuICAgIGxvZGFzaC5qb2luID0gam9pbjtcbiAgICBsb2Rhc2gua2ViYWJDYXNlID0ga2ViYWJDYXNlO1xuICAgIGxvZGFzaC5sYXN0ID0gbGFzdDtcbiAgICBsb2Rhc2gubGFzdEluZGV4T2YgPSBsYXN0SW5kZXhPZjtcbiAgICBsb2Rhc2gubG93ZXJDYXNlID0gbG93ZXJDYXNlO1xuICAgIGxvZGFzaC5sb3dlckZpcnN0ID0gbG93ZXJGaXJzdDtcbiAgICBsb2Rhc2gubHQgPSBsdDtcbiAgICBsb2Rhc2gubHRlID0gbHRlO1xuICAgIGxvZGFzaC5tYXggPSBtYXg7XG4gICAgbG9kYXNoLm1heEJ5ID0gbWF4Qnk7XG4gICAgbG9kYXNoLm1lYW4gPSBtZWFuO1xuICAgIGxvZGFzaC5tZWFuQnkgPSBtZWFuQnk7XG4gICAgbG9kYXNoLm1pbiA9IG1pbjtcbiAgICBsb2Rhc2gubWluQnkgPSBtaW5CeTtcbiAgICBsb2Rhc2guc3R1YkFycmF5ID0gc3R1YkFycmF5O1xuICAgIGxvZGFzaC5zdHViRmFsc2UgPSBzdHViRmFsc2U7XG4gICAgbG9kYXNoLnN0dWJPYmplY3QgPSBzdHViT2JqZWN0O1xuICAgIGxvZGFzaC5zdHViU3RyaW5nID0gc3R1YlN0cmluZztcbiAgICBsb2Rhc2guc3R1YlRydWUgPSBzdHViVHJ1ZTtcbiAgICBsb2Rhc2gubXVsdGlwbHkgPSBtdWx0aXBseTtcbiAgICBsb2Rhc2gubnRoID0gbnRoO1xuICAgIGxvZGFzaC5ub0NvbmZsaWN0ID0gbm9Db25mbGljdDtcbiAgICBsb2Rhc2gubm9vcCA9IG5vb3A7XG4gICAgbG9kYXNoLm5vdyA9IG5vdztcbiAgICBsb2Rhc2gucGFkID0gcGFkO1xuICAgIGxvZGFzaC5wYWRFbmQgPSBwYWRFbmQ7XG4gICAgbG9kYXNoLnBhZFN0YXJ0ID0gcGFkU3RhcnQ7XG4gICAgbG9kYXNoLnBhcnNlSW50ID0gcGFyc2VJbnQ7XG4gICAgbG9kYXNoLnJhbmRvbSA9IHJhbmRvbTtcbiAgICBsb2Rhc2gucmVkdWNlID0gcmVkdWNlO1xuICAgIGxvZGFzaC5yZWR1Y2VSaWdodCA9IHJlZHVjZVJpZ2h0O1xuICAgIGxvZGFzaC5yZXBlYXQgPSByZXBlYXQ7XG4gICAgbG9kYXNoLnJlcGxhY2UgPSByZXBsYWNlO1xuICAgIGxvZGFzaC5yZXN1bHQgPSByZXN1bHQ7XG4gICAgbG9kYXNoLnJvdW5kID0gcm91bmQ7XG4gICAgbG9kYXNoLnJ1bkluQ29udGV4dCA9IHJ1bkluQ29udGV4dDtcbiAgICBsb2Rhc2guc2FtcGxlID0gc2FtcGxlO1xuICAgIGxvZGFzaC5zaXplID0gc2l6ZTtcbiAgICBsb2Rhc2guc25ha2VDYXNlID0gc25ha2VDYXNlO1xuICAgIGxvZGFzaC5zb21lID0gc29tZTtcbiAgICBsb2Rhc2guc29ydGVkSW5kZXggPSBzb3J0ZWRJbmRleDtcbiAgICBsb2Rhc2guc29ydGVkSW5kZXhCeSA9IHNvcnRlZEluZGV4Qnk7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4T2YgPSBzb3J0ZWRJbmRleE9mO1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXggPSBzb3J0ZWRMYXN0SW5kZXg7XG4gICAgbG9kYXNoLnNvcnRlZExhc3RJbmRleEJ5ID0gc29ydGVkTGFzdEluZGV4Qnk7XG4gICAgbG9kYXNoLnNvcnRlZExhc3RJbmRleE9mID0gc29ydGVkTGFzdEluZGV4T2Y7XG4gICAgbG9kYXNoLnN0YXJ0Q2FzZSA9IHN0YXJ0Q2FzZTtcbiAgICBsb2Rhc2guc3RhcnRzV2l0aCA9IHN0YXJ0c1dpdGg7XG4gICAgbG9kYXNoLnN1YnRyYWN0ID0gc3VidHJhY3Q7XG4gICAgbG9kYXNoLnN1bSA9IHN1bTtcbiAgICBsb2Rhc2guc3VtQnkgPSBzdW1CeTtcbiAgICBsb2Rhc2gudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICBsb2Rhc2gudGltZXMgPSB0aW1lcztcbiAgICBsb2Rhc2gudG9GaW5pdGUgPSB0b0Zpbml0ZTtcbiAgICBsb2Rhc2gudG9JbnRlZ2VyID0gdG9JbnRlZ2VyO1xuICAgIGxvZGFzaC50b0xlbmd0aCA9IHRvTGVuZ3RoO1xuICAgIGxvZGFzaC50b0xvd2VyID0gdG9Mb3dlcjtcbiAgICBsb2Rhc2gudG9OdW1iZXIgPSB0b051bWJlcjtcbiAgICBsb2Rhc2gudG9TYWZlSW50ZWdlciA9IHRvU2FmZUludGVnZXI7XG4gICAgbG9kYXNoLnRvU3RyaW5nID0gdG9TdHJpbmc7XG4gICAgbG9kYXNoLnRvVXBwZXIgPSB0b1VwcGVyO1xuICAgIGxvZGFzaC50cmltID0gdHJpbTtcbiAgICBsb2Rhc2gudHJpbUVuZCA9IHRyaW1FbmQ7XG4gICAgbG9kYXNoLnRyaW1TdGFydCA9IHRyaW1TdGFydDtcbiAgICBsb2Rhc2gudHJ1bmNhdGUgPSB0cnVuY2F0ZTtcbiAgICBsb2Rhc2gudW5lc2NhcGUgPSB1bmVzY2FwZTtcbiAgICBsb2Rhc2gudW5pcXVlSWQgPSB1bmlxdWVJZDtcbiAgICBsb2Rhc2gudXBwZXJDYXNlID0gdXBwZXJDYXNlO1xuICAgIGxvZGFzaC51cHBlckZpcnN0ID0gdXBwZXJGaXJzdDtcblxuICAgIC8vIEFkZCBhbGlhc2VzLlxuICAgIGxvZGFzaC5lYWNoID0gZm9yRWFjaDtcbiAgICBsb2Rhc2guZWFjaFJpZ2h0ID0gZm9yRWFjaFJpZ2h0O1xuICAgIGxvZGFzaC5maXJzdCA9IGhlYWQ7XG5cbiAgICBtaXhpbihsb2Rhc2gsIChmdW5jdGlvbigpIHtcbiAgICAgIHZhciBzb3VyY2UgPSB7fTtcbiAgICAgIGJhc2VGb3JPd24obG9kYXNoLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbChsb2Rhc2gucHJvdG90eXBlLCBtZXRob2ROYW1lKSkge1xuICAgICAgICAgIHNvdXJjZVttZXRob2ROYW1lXSA9IGZ1bmM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9KCkpLCB7ICdjaGFpbic6IGZhbHNlIH0pO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNlbWFudGljIHZlcnNpb24gbnVtYmVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICBsb2Rhc2guVkVSU0lPTiA9IFZFUlNJT047XG5cbiAgICAvLyBBc3NpZ24gZGVmYXVsdCBwbGFjZWhvbGRlcnMuXG4gICAgYXJyYXlFYWNoKFsnYmluZCcsICdiaW5kS2V5JywgJ2N1cnJ5JywgJ2N1cnJ5UmlnaHQnLCAncGFydGlhbCcsICdwYXJ0aWFsUmlnaHQnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSkge1xuICAgICAgbG9kYXNoW21ldGhvZE5hbWVdLnBsYWNlaG9sZGVyID0gbG9kYXNoO1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uZHJvcGAgYW5kIGBfLnRha2VgIHZhcmlhbnRzLlxuICAgIGFycmF5RWFjaChbJ2Ryb3AnLCAndGFrZSddLCBmdW5jdGlvbihtZXRob2ROYW1lLCBpbmRleCkge1xuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24obikge1xuICAgICAgICBuID0gbiA9PT0gdW5kZWZpbmVkID8gMSA6IG5hdGl2ZU1heCh0b0ludGVnZXIobiksIDApO1xuXG4gICAgICAgIHZhciByZXN1bHQgPSAodGhpcy5fX2ZpbHRlcmVkX18gJiYgIWluZGV4KVxuICAgICAgICAgID8gbmV3IExhenlXcmFwcGVyKHRoaXMpXG4gICAgICAgICAgOiB0aGlzLmNsb25lKCk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5fX2ZpbHRlcmVkX18pIHtcbiAgICAgICAgICByZXN1bHQuX190YWtlQ291bnRfXyA9IG5hdGl2ZU1pbihuLCByZXN1bHQuX190YWtlQ291bnRfXyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0Ll9fdmlld3NfXy5wdXNoKHtcbiAgICAgICAgICAgICdzaXplJzogbmF0aXZlTWluKG4sIE1BWF9BUlJBWV9MRU5HVEgpLFxuICAgICAgICAgICAgJ3R5cGUnOiBtZXRob2ROYW1lICsgKHJlc3VsdC5fX2Rpcl9fIDwgMCA/ICdSaWdodCcgOiAnJylcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWUgKyAnUmlnaHQnXSA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZSgpW21ldGhvZE5hbWVdKG4pLnJldmVyc2UoKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYExhenlXcmFwcGVyYCBtZXRob2RzIHRoYXQgYWNjZXB0IGFuIGBpdGVyYXRlZWAgdmFsdWUuXG4gICAgYXJyYXlFYWNoKFsnZmlsdGVyJywgJ21hcCcsICd0YWtlV2hpbGUnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIHZhciB0eXBlID0gaW5kZXggKyAxLFxuICAgICAgICAgIGlzRmlsdGVyID0gdHlwZSA9PSBMQVpZX0ZJTFRFUl9GTEFHIHx8IHR5cGUgPT0gTEFaWV9XSElMRV9GTEFHO1xuXG4gICAgICBMYXp5V3JhcHBlci5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5jbG9uZSgpO1xuICAgICAgICByZXN1bHQuX19pdGVyYXRlZXNfXy5wdXNoKHtcbiAgICAgICAgICAnaXRlcmF0ZWUnOiBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyksXG4gICAgICAgICAgJ3R5cGUnOiB0eXBlXG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHQuX19maWx0ZXJlZF9fID0gcmVzdWx0Ll9fZmlsdGVyZWRfXyB8fCBpc0ZpbHRlcjtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYExhenlXcmFwcGVyYCBtZXRob2RzIGZvciBgXy5oZWFkYCBhbmQgYF8ubGFzdGAuXG4gICAgYXJyYXlFYWNoKFsnaGVhZCcsICdsYXN0J10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUsIGluZGV4KSB7XG4gICAgICB2YXIgdGFrZU5hbWUgPSAndGFrZScgKyAoaW5kZXggPyAnUmlnaHQnIDogJycpO1xuXG4gICAgICBMYXp5V3JhcHBlci5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbdGFrZU5hbWVdKDEpLnZhbHVlKClbMF07XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uaW5pdGlhbGAgYW5kIGBfLnRhaWxgLlxuICAgIGFycmF5RWFjaChbJ2luaXRpYWwnLCAndGFpbCddLCBmdW5jdGlvbihtZXRob2ROYW1lLCBpbmRleCkge1xuICAgICAgdmFyIGRyb3BOYW1lID0gJ2Ryb3AnICsgKGluZGV4ID8gJycgOiAnUmlnaHQnKTtcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9fZmlsdGVyZWRfXyA/IG5ldyBMYXp5V3JhcHBlcih0aGlzKSA6IHRoaXNbZHJvcE5hbWVdKDEpO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5jb21wYWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXIoaWRlbnRpdHkpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKHByZWRpY2F0ZSkuaGVhZCgpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuZmluZExhc3QgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJldmVyc2UoKS5maW5kKHByZWRpY2F0ZSk7XG4gICAgfTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5pbnZva2VNYXAgPSBiYXNlUmVzdChmdW5jdGlvbihwYXRoLCBhcmdzKSB7XG4gICAgICBpZiAodHlwZW9mIHBhdGggPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52b2tlKHZhbHVlLCBwYXRoLCBhcmdzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnJlamVjdCA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUpKSk7XG4gICAgfTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgICAgIHN0YXJ0ID0gdG9JbnRlZ2VyKHN0YXJ0KTtcblxuICAgICAgdmFyIHJlc3VsdCA9IHRoaXM7XG4gICAgICBpZiAocmVzdWx0Ll9fZmlsdGVyZWRfXyAmJiAoc3RhcnQgPiAwIHx8IGVuZCA8IDApKSB7XG4gICAgICAgIHJldHVybiBuZXcgTGF6eVdyYXBwZXIocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnRha2VSaWdodCgtc3RhcnQpO1xuICAgICAgfSBlbHNlIGlmIChzdGFydCkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQuZHJvcChzdGFydCk7XG4gICAgICB9XG4gICAgICBpZiAoZW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZW5kID0gdG9JbnRlZ2VyKGVuZCk7XG4gICAgICAgIHJlc3VsdCA9IGVuZCA8IDAgPyByZXN1bHQuZHJvcFJpZ2h0KC1lbmQpIDogcmVzdWx0LnRha2UoZW5kIC0gc3RhcnQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnRha2VSaWdodFdoaWxlID0gZnVuY3Rpb24ocHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXZlcnNlKCkudGFrZVdoaWxlKHByZWRpY2F0ZSkucmV2ZXJzZSgpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMudGFrZShNQVhfQVJSQVlfTEVOR1RIKTtcbiAgICB9O1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyB0byBgbG9kYXNoLnByb3RvdHlwZWAuXG4gICAgYmFzZUZvck93bihMYXp5V3JhcHBlci5wcm90b3R5cGUsIGZ1bmN0aW9uKGZ1bmMsIG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBjaGVja0l0ZXJhdGVlID0gL14oPzpmaWx0ZXJ8ZmluZHxtYXB8cmVqZWN0KXxXaGlsZSQvLnRlc3QobWV0aG9kTmFtZSksXG4gICAgICAgICAgaXNUYWtlciA9IC9eKD86aGVhZHxsYXN0KSQvLnRlc3QobWV0aG9kTmFtZSksXG4gICAgICAgICAgbG9kYXNoRnVuYyA9IGxvZGFzaFtpc1Rha2VyID8gKCd0YWtlJyArIChtZXRob2ROYW1lID09ICdsYXN0JyA/ICdSaWdodCcgOiAnJykpIDogbWV0aG9kTmFtZV0sXG4gICAgICAgICAgcmV0VW53cmFwcGVkID0gaXNUYWtlciB8fCAvXmZpbmQvLnRlc3QobWV0aG9kTmFtZSk7XG5cbiAgICAgIGlmICghbG9kYXNoRnVuYykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsb2Rhc2gucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX193cmFwcGVkX18sXG4gICAgICAgICAgICBhcmdzID0gaXNUYWtlciA/IFsxXSA6IGFyZ3VtZW50cyxcbiAgICAgICAgICAgIGlzTGF6eSA9IHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIsXG4gICAgICAgICAgICBpdGVyYXRlZSA9IGFyZ3NbMF0sXG4gICAgICAgICAgICB1c2VMYXp5ID0gaXNMYXp5IHx8IGlzQXJyYXkodmFsdWUpO1xuXG4gICAgICAgIHZhciBpbnRlcmNlcHRvciA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IGxvZGFzaEZ1bmMuYXBwbHkobG9kYXNoLCBhcnJheVB1c2goW3ZhbHVlXSwgYXJncykpO1xuICAgICAgICAgIHJldHVybiAoaXNUYWtlciAmJiBjaGFpbkFsbCkgPyByZXN1bHRbMF0gOiByZXN1bHQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHVzZUxhenkgJiYgY2hlY2tJdGVyYXRlZSAmJiB0eXBlb2YgaXRlcmF0ZWUgPT0gJ2Z1bmN0aW9uJyAmJiBpdGVyYXRlZS5sZW5ndGggIT0gMSkge1xuICAgICAgICAgIC8vIEF2b2lkIGxhenkgdXNlIGlmIHRoZSBpdGVyYXRlZSBoYXMgYSBcImxlbmd0aFwiIHZhbHVlIG90aGVyIHRoYW4gYDFgLlxuICAgICAgICAgIGlzTGF6eSA9IHVzZUxhenkgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY2hhaW5BbGwgPSB0aGlzLl9fY2hhaW5fXyxcbiAgICAgICAgICAgIGlzSHlicmlkID0gISF0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCxcbiAgICAgICAgICAgIGlzVW53cmFwcGVkID0gcmV0VW53cmFwcGVkICYmICFjaGFpbkFsbCxcbiAgICAgICAgICAgIG9ubHlMYXp5ID0gaXNMYXp5ICYmICFpc0h5YnJpZDtcblxuICAgICAgICBpZiAoIXJldFVud3JhcHBlZCAmJiB1c2VMYXp5KSB7XG4gICAgICAgICAgdmFsdWUgPSBvbmx5TGF6eSA/IHZhbHVlIDogbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHZhbHVlLCBhcmdzKTtcbiAgICAgICAgICByZXN1bHQuX19hY3Rpb25zX18ucHVzaCh7ICdmdW5jJzogdGhydSwgJ2FyZ3MnOiBbaW50ZXJjZXB0b3JdLCAndGhpc0FyZyc6IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIocmVzdWx0LCBjaGFpbkFsbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVW53cmFwcGVkICYmIG9ubHlMYXp5KSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gdGhpcy50aHJ1KGludGVyY2VwdG9yKTtcbiAgICAgICAgcmV0dXJuIGlzVW53cmFwcGVkID8gKGlzVGFrZXIgPyByZXN1bHQudmFsdWUoKVswXSA6IHJlc3VsdC52YWx1ZSgpKSA6IHJlc3VsdDtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYEFycmF5YCBtZXRob2RzIHRvIGBsb2Rhc2gucHJvdG90eXBlYC5cbiAgICBhcnJheUVhY2goWydwb3AnLCAncHVzaCcsICdzaGlmdCcsICdzb3J0JywgJ3NwbGljZScsICd1bnNoaWZ0J10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBmdW5jID0gYXJyYXlQcm90b1ttZXRob2ROYW1lXSxcbiAgICAgICAgICBjaGFpbk5hbWUgPSAvXig/OnB1c2h8c29ydHx1bnNoaWZ0KSQvLnRlc3QobWV0aG9kTmFtZSkgPyAndGFwJyA6ICd0aHJ1JyxcbiAgICAgICAgICByZXRVbndyYXBwZWQgPSAvXig/OnBvcHxzaGlmdCkkLy50ZXN0KG1ldGhvZE5hbWUpO1xuXG4gICAgICBsb2Rhc2gucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBpZiAocmV0VW53cmFwcGVkICYmICF0aGlzLl9fY2hhaW5fXykge1xuICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWUoKTtcbiAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseShpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW10sIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzW2NoYWluTmFtZV0oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseShpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW10sIGFyZ3MpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBNYXAgbWluaWZpZWQgbWV0aG9kIG5hbWVzIHRvIHRoZWlyIHJlYWwgbmFtZXMuXG4gICAgYmFzZUZvck93bihMYXp5V3JhcHBlci5wcm90b3R5cGUsIGZ1bmN0aW9uKGZ1bmMsIG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBsb2Rhc2hGdW5jID0gbG9kYXNoW21ldGhvZE5hbWVdO1xuICAgICAgaWYgKGxvZGFzaEZ1bmMpIHtcbiAgICAgICAgdmFyIGtleSA9IGxvZGFzaEZ1bmMubmFtZSArICcnO1xuICAgICAgICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwocmVhbE5hbWVzLCBrZXkpKSB7XG4gICAgICAgICAgcmVhbE5hbWVzW2tleV0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICByZWFsTmFtZXNba2V5XS5wdXNoKHsgJ25hbWUnOiBtZXRob2ROYW1lLCAnZnVuYyc6IGxvZGFzaEZ1bmMgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZWFsTmFtZXNbY3JlYXRlSHlicmlkKHVuZGVmaW5lZCwgV1JBUF9CSU5EX0tFWV9GTEFHKS5uYW1lXSA9IFt7XG4gICAgICAnbmFtZSc6ICd3cmFwcGVyJyxcbiAgICAgICdmdW5jJzogdW5kZWZpbmVkXG4gICAgfV07XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTGF6eVdyYXBwZXJgLlxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5jbG9uZSA9IGxhenlDbG9uZTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUucmV2ZXJzZSA9IGxhenlSZXZlcnNlO1xuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS52YWx1ZSA9IGxhenlWYWx1ZTtcblxuICAgIC8vIEFkZCBjaGFpbiBzZXF1ZW5jZSBtZXRob2RzIHRvIHRoZSBgbG9kYXNoYCB3cmFwcGVyLlxuICAgIGxvZGFzaC5wcm90b3R5cGUuYXQgPSB3cmFwcGVyQXQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5jaGFpbiA9IHdyYXBwZXJDaGFpbjtcbiAgICBsb2Rhc2gucHJvdG90eXBlLmNvbW1pdCA9IHdyYXBwZXJDb21taXQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5uZXh0ID0gd3JhcHBlck5leHQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5wbGFudCA9IHdyYXBwZXJQbGFudDtcbiAgICBsb2Rhc2gucHJvdG90eXBlLnJldmVyc2UgPSB3cmFwcGVyUmV2ZXJzZTtcbiAgICBsb2Rhc2gucHJvdG90eXBlLnRvSlNPTiA9IGxvZGFzaC5wcm90b3R5cGUudmFsdWVPZiA9IGxvZGFzaC5wcm90b3R5cGUudmFsdWUgPSB3cmFwcGVyVmFsdWU7XG5cbiAgICAvLyBBZGQgbGF6eSBhbGlhc2VzLlxuICAgIGxvZGFzaC5wcm90b3R5cGUuZmlyc3QgPSBsb2Rhc2gucHJvdG90eXBlLmhlYWQ7XG5cbiAgICBpZiAoc3ltSXRlcmF0b3IpIHtcbiAgICAgIGxvZGFzaC5wcm90b3R5cGVbc3ltSXRlcmF0b3JdID0gd3JhcHBlclRvSXRlcmF0b3I7XG4gICAgfVxuICAgIHJldHVybiBsb2Rhc2g7XG4gIH0pO1xuXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gIC8vIEV4cG9ydCBsb2Rhc2guXG4gIHZhciBfID0gcnVuSW5Db250ZXh0KCk7XG5cbiAgLy8gU29tZSBBTUQgYnVpbGQgb3B0aW1pemVycywgbGlrZSByLmpzLCBjaGVjayBmb3IgY29uZGl0aW9uIHBhdHRlcm5zIGxpa2U6XG4gIGlmICh0eXBlb2YgZGVmaW5lID09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRlZmluZS5hbWQgPT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuICAgIC8vIEV4cG9zZSBMb2Rhc2ggb24gdGhlIGdsb2JhbCBvYmplY3QgdG8gcHJldmVudCBlcnJvcnMgd2hlbiBMb2Rhc2ggaXNcbiAgICAvLyBsb2FkZWQgYnkgYSBzY3JpcHQgdGFnIGluIHRoZSBwcmVzZW5jZSBvZiBhbiBBTUQgbG9hZGVyLlxuICAgIC8vIFNlZSBodHRwOi8vcmVxdWlyZWpzLm9yZy9kb2NzL2Vycm9ycy5odG1sI21pc21hdGNoIGZvciBtb3JlIGRldGFpbHMuXG4gICAgLy8gVXNlIGBfLm5vQ29uZmxpY3RgIHRvIHJlbW92ZSBMb2Rhc2ggZnJvbSB0aGUgZ2xvYmFsIG9iamVjdC5cbiAgICByb290Ll8gPSBfO1xuXG4gICAgLy8gRGVmaW5lIGFzIGFuIGFub255bW91cyBtb2R1bGUgc28sIHRocm91Z2ggcGF0aCBtYXBwaW5nLCBpdCBjYW4gYmVcbiAgICAvLyByZWZlcmVuY2VkIGFzIHRoZSBcInVuZGVyc2NvcmVcIiBtb2R1bGUuXG4gICAgZGVmaW5lKGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIF87XG4gICAgfSk7XG4gIH1cbiAgLy8gQ2hlY2sgZm9yIGBleHBvcnRzYCBhZnRlciBgZGVmaW5lYCBpbiBjYXNlIGEgYnVpbGQgb3B0aW1pemVyIGFkZHMgaXQuXG4gIGVsc2UgaWYgKGZyZWVNb2R1bGUpIHtcbiAgICAvLyBFeHBvcnQgZm9yIE5vZGUuanMuXG4gICAgKGZyZWVNb2R1bGUuZXhwb3J0cyA9IF8pLl8gPSBfO1xuICAgIC8vIEV4cG9ydCBmb3IgQ29tbW9uSlMgc3VwcG9ydC5cbiAgICBmcmVlRXhwb3J0cy5fID0gXztcbiAgfVxuICBlbHNlIHtcbiAgICAvLyBFeHBvcnQgdG8gdGhlIGdsb2JhbCBvYmplY3QuXG4gICAgcm9vdC5fID0gXztcbiAgfVxufS5jYWxsKHRoaXMpKTtcbiIsICJpbXBvcnQgdHlwZSB7IE11bHRpR3JhcGggfSBmcm9tIFwiZ3JhcGhvbG9neVwiO1xyXG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwianVnZ2wtYXBpXCI7XHJcbmltcG9ydCB7IGFkZEljb24sIEV2ZW50UmVmLCBNYXJrZG93blZpZXcsIFBsdWdpbiB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQge1xyXG4gIGFkZEZlYXRoZXJJY29uLFxyXG4gIG9wZW5WaWV3LFxyXG4gIHdhaXQsXHJcbn0gZnJvbSBcIm9ic2lkaWFuLWNvbW11bml0eS1saWIvZGlzdC91dGlsc1wiO1xyXG5pbXBvcnQgeyBCQ0FQSSB9IGZyb20gXCIuL0FQSVwiO1xyXG5pbXBvcnQgeyBEZWJ1Z2dlciB9IGZyb20gXCJzcmMvRGVidWdnZXJcIjtcclxuaW1wb3J0IHsgSGllcmFyY2h5Tm90ZVNlbGVjdG9yTW9kYWwgfSBmcm9tIFwiLi9BbHRlcm5hdGl2ZUhpZXJhcmNoaWVzL0hpZXJhcmNoeU5vdGVzL0hpZXJOb3RlTW9kYWxcIjtcclxuaW1wb3J0IHsgZ2V0Q29kZWJsb2NrQ0IgfSBmcm9tIFwiLi9Db2RlYmxvY2tzXCI7XHJcbmltcG9ydCB7IGNvcHlHbG9iYWxJbmRleCwgY29weUxvY2FsSW5kZXggfSBmcm9tIFwiLi9Db21tYW5kcy9DcmVhdGVJbmRleFwiO1xyXG5pbXBvcnQgeyBqdW1wVG9GaXJzdERpciB9IGZyb20gXCIuL0NvbW1hbmRzL2p1bXBUb0ZpcnN0RGlyXCI7XHJcbmltcG9ydCB7IHRocmVhZCB9IGZyb20gXCIuL0NvbW1hbmRzL3RocmVhZGluZ1wiO1xyXG5pbXBvcnQgeyB3cml0ZUJDc1RvQWxsRmlsZXMsIHdyaXRlQkNUb0ZpbGUgfSBmcm9tIFwiLi9Db21tYW5kcy9Xcml0ZUJDc1wiO1xyXG5pbXBvcnQge1xyXG4gIERFRkFVTFRfU0VUVElOR1MsXHJcbiAgRFVDS19JQ09OLFxyXG4gIERVQ0tfSUNPTl9TVkcsXHJcbiAgRFVDS19WSUVXLFxyXG4gIE1BVFJJWF9WSUVXLFxyXG4gIFRSQUlMX0lDT04sXHJcbiAgVFJBSUxfSUNPTl9TVkcsXHJcbiAgVFJFRV9WSUVXLFxyXG4gIEFQSV9OQU1FLFxyXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBGaWVsZFN1Z2dlc3RvciB9IGZyb20gXCIuL0ZpZWxkU3VnZ2VzdG9yXCI7XHJcbmltcG9ydCB0eXBlIHtcclxuICBCQ0FQSUksXHJcbiAgQkNTZXR0aW5ncyxcclxuICBEaXJlY3Rpb25zLFxyXG4gIE15VmlldyxcclxuICBWaWV3SW5mbyxcclxufSBmcm9tIFwiLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7IGJ1aWxkQ2xvc2VkRywgYnVpbGRNYWluRywgcmVmcmVzaEluZGV4IH0gZnJvbSBcIi4vcmVmcmVzaEluZGV4XCI7XHJcbmltcG9ydCB7IFJlbGF0aW9uU3VnZ2VzdG9yIH0gZnJvbSBcIi4vUmVsYXRpb25TdWdnZXN0b3JcIjtcclxuaW1wb3J0IHsgQkNTZXR0aW5nVGFiIH0gZnJvbSBcIi4vU2V0dGluZ3MvQnJlYWRjcnVtYnNTZXR0aW5nVGFiXCI7XHJcbmltcG9ydCB7IGdldEZpZWxkcyB9IGZyb20gXCIuL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyB3YWl0Rm9yQ2FjaGUgfSBmcm9tIFwiLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcbmltcG9ydCBEdWNrc1ZpZXcgZnJvbSBcIi4vVmlld3MvRHVja3NWaWV3XCI7XHJcbmltcG9ydCBNYXRyaXhWaWV3IGZyb20gXCIuL1ZpZXdzL01hdHJpeFZpZXdcIjtcclxuaW1wb3J0IHsgZHJhd1RyYWlsIH0gZnJvbSBcIi4vVmlld3MvVHJhaWxWaWV3XCI7XHJcbmltcG9ydCBUcmVlVmlldyBmcm9tIFwiLi9WaWV3cy9UcmVlVmlld1wiO1xyXG5pbXBvcnQgeyBCQ1N0b3JlIH0gZnJvbSBcIi4vVmlzdWFsaXNhdGlvbnMvSnVnZ2xcIjtcclxuaW1wb3J0IHsgVmlzTW9kYWwgfSBmcm9tIFwiLi9WaXN1YWxpc2F0aW9ucy9WaXNNb2RhbFwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQkNQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xyXG4gIHNldHRpbmdzOiBCQ1NldHRpbmdzO1xyXG5cclxuICB2aXNpdGVkOiBbc3RyaW5nLCBIVE1MRGl2RWxlbWVudF1bXSA9IFtdO1xyXG5cclxuICBtYWluRzogTXVsdGlHcmFwaDtcclxuICBjbG9zZWRHOiBNdWx0aUdyYXBoO1xyXG5cclxuICBhY3RpdmVMZWFmQ2hhbmdlOiBFdmVudFJlZiA9IHVuZGVmaW5lZDtcclxuICBsYXlvdXRDaGFuZ2U6IEV2ZW50UmVmID0gdW5kZWZpbmVkO1xyXG5cclxuICBkYjogRGVidWdnZXI7XHJcblxyXG4gIFZJRVdTOiBWaWV3SW5mb1tdO1xyXG5cclxuICBhcGk6IEJDQVBJSTtcclxuICBwcml2YXRlIGJjU3RvcmU6IEJDU3RvcmU7XHJcblxyXG4gIHJlZ2lzdGVyQWN0aXZlTGVhZkNoYW5nZUV2ZW50KCkge1xyXG4gICAgdGhpcy5hY3RpdmVMZWFmQ2hhbmdlID0gYXBwLndvcmtzcGFjZS5vbihcclxuICAgICAgXCJmaWxlLW9wZW5cIixcclxuICAgICAgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLnJlZnJlc2hPbk5vdGVDaGFuZ2UpIGF3YWl0IHJlZnJlc2hJbmRleCh0aGlzKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGFjdGl2ZVZpZXcgPSB0aGlzLmdldEFjdGl2ZVRZUEVWaWV3KE1BVFJJWF9WSUVXKTtcclxuICAgICAgICAgIGlmIChhY3RpdmVWaWV3KSBhd2FpdCBhY3RpdmVWaWV3LmRyYXcoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLnJlZ2lzdGVyRXZlbnQodGhpcy5hY3RpdmVMZWFmQ2hhbmdlKTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyTGF5b3V0Q2hhbmdlRXZlbnQoKSB7XHJcbiAgICB0aGlzLmxheW91dENoYW5nZSA9IGFwcC53b3Jrc3BhY2Uub24oXCJsYXlvdXQtY2hhbmdlXCIsIGFzeW5jICgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuc2V0dGluZ3Muc2hvd0JDcykgYXdhaXQgZHJhd1RyYWlsKHRoaXMpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlZ2lzdGVyRXZlbnQodGhpcy5sYXlvdXRDaGFuZ2UpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25sb2FkKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc29sZS5sb2coXCJsb2FkaW5nIGJyZWFkY3J1bWJzIHBsdWdpblwiKTtcclxuXHJcbiAgICBhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xyXG4gICAgdGhpcy5hZGRTZXR0aW5nVGFiKG5ldyBCQ1NldHRpbmdUYWIodGhpcykpO1xyXG5cclxuICAgIHRoaXMuZGIgPSBuZXcgRGVidWdnZXIodGhpcyk7XHJcblxyXG4gICAgY29uc3QgeyBzZXR0aW5ncyB9ID0gdGhpcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgZmllbGRTdWdnZXN0b3IsXHJcbiAgICAgIGVuYWJsZVJlbGF0aW9uU3VnZ2VzdG9yLFxyXG4gICAgICBvcGVuTWF0cml4T25Mb2FkLFxyXG4gICAgICBvcGVuRHVja09uTG9hZCxcclxuICAgICAgb3BlbkRvd25PbkxvYWQsXHJcbiAgICAgIHNob3dCQ3MsXHJcbiAgICAgIHVzZXJIaWVycyxcclxuICAgIH0gPSBzZXR0aW5ncztcclxuXHJcbiAgICBpZiAoZmllbGRTdWdnZXN0b3IpIHRoaXMucmVnaXN0ZXJFZGl0b3JTdWdnZXN0KG5ldyBGaWVsZFN1Z2dlc3Rvcih0aGlzKSk7XHJcbiAgICBpZiAoZW5hYmxlUmVsYXRpb25TdWdnZXN0b3IpXHJcbiAgICAgIHRoaXMucmVnaXN0ZXJFZGl0b3JTdWdnZXN0KG5ldyBSZWxhdGlvblN1Z2dlc3Rvcih0aGlzKSk7XHJcblxyXG5cclxuICAgIC8vIE92ZXJyaWRlIG9sZGVyIHZlcnNpb25zIG9mIHRoZXNlIHNldHRpbmdzXHJcbiAgICBpZiAoc2V0dGluZ3MubGltaXRUcmFpbENoZWNrYm94ZXMubGVuZ3RoID09PSAwKSBzZXR0aW5ncy5saW1pdFRyYWlsQ2hlY2tib3hlcyA9IGdldEZpZWxkcyhzZXR0aW5ncy51c2VySGllcnMpXHJcbiAgICBpZiAodHlwZW9mIHNldHRpbmdzLnNob3dBbGwgPT09ICdib29sZWFuJykgc2V0dGluZ3Muc2hvd0FsbCA9IHNldHRpbmdzLnNob3dBbGwgPyAnQWxsJyA6ICdTaG9ydGVzdCdcclxuXHJcbiAgICB0aGlzLlZJRVdTID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgcGxhaW46IFwiTWF0cml4XCIsXHJcbiAgICAgICAgdHlwZTogTUFUUklYX1ZJRVcsXHJcbiAgICAgICAgY29uc3RydWN0b3I6IE1hdHJpeFZpZXcsXHJcbiAgICAgICAgb3Blbk9uTG9hZDogb3Blbk1hdHJpeE9uTG9hZCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHBsYWluOiBcIkR1Y2tcIixcclxuICAgICAgICB0eXBlOiBEVUNLX1ZJRVcsXHJcbiAgICAgICAgY29uc3RydWN0b3I6IER1Y2tzVmlldyxcclxuICAgICAgICBvcGVuT25Mb2FkOiBvcGVuRHVja09uTG9hZCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHBsYWluOiBcIkRvd25cIixcclxuICAgICAgICB0eXBlOiBUUkVFX1ZJRVcsXHJcbiAgICAgICAgY29uc3RydWN0b3I6IFRyZWVWaWV3LFxyXG4gICAgICAgIG9wZW5PbkxvYWQ6IG9wZW5Eb3duT25Mb2FkLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IHsgY29uc3RydWN0b3IsIHR5cGUgfSBvZiB0aGlzLlZJRVdTKSB7XHJcbiAgICAgIHRoaXMucmVnaXN0ZXJWaWV3KHR5cGUsIChsZWFmKSA9PiBuZXcgY29uc3RydWN0b3IobGVhZiwgdGhpcykpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEljb24oRFVDS19JQ09OLCBEVUNLX0lDT05fU1ZHKTtcclxuICAgIGFkZEljb24oVFJBSUxfSUNPTiwgVFJBSUxfSUNPTl9TVkcpO1xyXG5cclxuICAgIGF3YWl0IHdhaXRGb3JDYWNoZSh0aGlzKTtcclxuICAgIHRoaXMubWFpbkcgPSBhd2FpdCBidWlsZE1haW5HKHRoaXMpO1xyXG4gICAgdGhpcy5jbG9zZWRHID0gYnVpbGRDbG9zZWRHKHRoaXMpO1xyXG5cclxuICAgIGFwcC53b3Jrc3BhY2Uub25MYXlvdXRSZWFkeShhc3luYyAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG5vRmlsZXMgPSBhcHAudmF1bHQuZ2V0TWFya2Rvd25GaWxlcygpLmxlbmd0aDtcclxuICAgICAgaWYgKHRoaXMubWFpbkc/Lm5vZGVzKCkubGVuZ3RoIDwgbm9GaWxlcykge1xyXG4gICAgICAgIGF3YWl0IHdhaXQoMzAwMCk7XHJcbiAgICAgICAgdGhpcy5tYWluRyA9IGF3YWl0IGJ1aWxkTWFpbkcodGhpcyk7XHJcbiAgICAgICAgdGhpcy5jbG9zZWRHID0gYnVpbGRDbG9zZWRHKHRoaXMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IHsgb3Blbk9uTG9hZCwgdHlwZSwgY29uc3RydWN0b3IgfSBvZiB0aGlzLlZJRVdTKVxyXG4gICAgICAgIGlmIChvcGVuT25Mb2FkKSBhd2FpdCBvcGVuVmlldyh0eXBlLCBjb25zdHJ1Y3Rvcik7XHJcblxyXG4gICAgICBpZiAoc2hvd0JDcykgYXdhaXQgZHJhd1RyYWlsKHRoaXMpO1xyXG4gICAgICB0aGlzLnJlZ2lzdGVyQWN0aXZlTGVhZkNoYW5nZUV2ZW50KCk7XHJcbiAgICAgIHRoaXMucmVnaXN0ZXJMYXlvdXRDaGFuZ2VFdmVudCgpO1xyXG5cclxuICAgICAgLy8gU291cmNlIGZvciBzYXZlIHNldHRpbmdcclxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2hpcHN0ZXJzbW9vdGhpZS9vYnNpZGlhbi1wbHVnaW4tcHJldHRpZXIvYmxvYi9tYWluL3NyYy9tYWluLnRzXHJcbiAgICAgIGNvbnN0IHNhdmVDb21tYW5kRGVmaW5pdGlvbiA9XHJcbiAgICAgICAgYXBwLmNvbW1hbmRzLmNvbW1hbmRzW1wiZWRpdG9yOnNhdmUtZmlsZVwiXTtcclxuICAgICAgY29uc3Qgc2F2ZSA9IHNhdmVDb21tYW5kRGVmaW5pdGlvbj8uY2FsbGJhY2s7XHJcblxyXG4gICAgICBpZiAodHlwZW9mIHNhdmUgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgIHNhdmVDb21tYW5kRGVmaW5pdGlvbi5jYWxsYmFjayA9IGFzeW5jICgpID0+IHtcclxuICAgICAgICAgIGF3YWl0IHNhdmUoKTtcclxuICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzLnJlZnJlc2hPbk5vdGVTYXZlKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHJlZnJlc2hJbmRleCh0aGlzKTtcclxuICAgICAgICAgICAgY29uc3QgYWN0aXZlVmlldyA9IHRoaXMuZ2V0QWN0aXZlVFlQRVZpZXcoTUFUUklYX1ZJRVcpO1xyXG4gICAgICAgICAgICBpZiAoYWN0aXZlVmlldykgYXdhaXQgYWN0aXZlVmlldy5kcmF3KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgYXBwLndvcmtzcGFjZS5pdGVyYXRlQWxsTGVhdmVzKChsZWFmKSA9PiB7XHJcbiAgICAgICAgaWYgKGxlYWYgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcpXHJcbiAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgIGxlYWYudmlldy5wcmV2aWV3TW9kZS5yZXJlbmRlcih0cnVlKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IHsgdHlwZSwgcGxhaW4sIGNvbnN0cnVjdG9yIH0gb2YgdGhpcy5WSUVXUykge1xyXG4gICAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICAgIGlkOiBgc2hvdy0ke3R5cGV9LXZpZXdgLFxyXG4gICAgICAgIG5hbWU6IGBPcGVuICR7cGxhaW59IFZpZXdgLFxyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIGNoZWNrQ2FsbGJhY2s6IGFzeW5jIChjaGVja2luZzogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoZWNraW5nKSByZXR1cm4gYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUodHlwZSkubGVuZ3RoID09PSAwO1xyXG4gICAgICAgICAgYXdhaXQgb3BlblZpZXcodHlwZSwgY29uc3RydWN0b3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiBcIm9wZW4tdmlzLW1vZGFsXCIsXHJcbiAgICAgIG5hbWU6IFwiT3BlbiBWaXN1YWxpc2F0aW9uIE1vZGFsXCIsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiBuZXcgVmlzTW9kYWwodGhpcykub3BlbigpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6IFwibWFuaXB1bGF0ZS1oaWVyYXJjaHktbm90ZXNcIixcclxuICAgICAgbmFtZTogXCJBZGp1c3QgSGllcmFyY2h5IE5vdGVzXCIsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiBuZXcgSGllcmFyY2h5Tm90ZVNlbGVjdG9yTW9kYWwodGhpcykub3BlbigpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6IFwiUmVmcmVzaC1CcmVhZGNydW1icy1JbmRleFwiLFxyXG4gICAgICBuYW1lOiBcIlJlZnJlc2ggQnJlYWRjcnVtYnMgSW5kZXhcIixcclxuICAgICAgY2FsbGJhY2s6IGFzeW5jICgpID0+IGF3YWl0IHJlZnJlc2hJbmRleCh0aGlzKSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiBcIlRvZ2dsZS10cmFpbC1pbi1FZGl0JkxQXCIsXHJcbiAgICAgIG5hbWU6IFwiVG9nZ2xlOiBTaG93IFRyYWlsL0dyaWQgaW4gRWRpdCAmIExQIG1vZGVcIixcclxuICAgICAgY2FsbGJhY2s6IGFzeW5jICgpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy5zaG93QkNzSW5FZGl0TFBNb2RlID0gIXNldHRpbmdzLnNob3dCQ3NJbkVkaXRMUE1vZGU7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICBhd2FpdCBkcmF3VHJhaWwodGhpcyk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogXCJXcml0ZS1CcmVhZGNydW1icy10by1DdXJyZW50LUZpbGVcIixcclxuICAgICAgbmFtZTogXCJXcml0ZSBCcmVhZGNydW1icyB0byBDdXJyZW50IEZpbGVcIixcclxuICAgICAgY2FsbGJhY2s6IGFzeW5jICgpID0+IGF3YWl0IHdyaXRlQkNUb0ZpbGUodGhpcyksXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogXCJXcml0ZS1CcmVhZGNydW1icy10by1BbGwtRmlsZXNcIixcclxuICAgICAgbmFtZTogXCJXcml0ZSBCcmVhZGNydW1icyB0byAqKkFMTCoqIEZpbGVzXCIsXHJcbiAgICAgIGNhbGxiYWNrOiBhc3luYyAoKSA9PiBhd2FpdCB3cml0ZUJDc1RvQWxsRmlsZXModGhpcyksXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogXCJsb2NhbC1pbmRleFwiLFxyXG4gICAgICBuYW1lOiBcIkNvcHkgYSBMb2NhbCBJbmRleCB0byB0aGUgY2xpcGJvYXJkXCIsXHJcbiAgICAgIGNhbGxiYWNrOiBhc3luYyAoKSA9PiBhd2FpdCBjb3B5TG9jYWxJbmRleCh0aGlzKSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiBcImdsb2JhbC1pbmRleFwiLFxyXG4gICAgICBuYW1lOiBcIkNvcHkgYSBHbG9iYWwgSW5kZXggdG8gdGhlIGNsaXBib2FyZFwiLFxyXG4gICAgICBjYWxsYmFjazogYXN5bmMgKCkgPT4gYXdhaXQgY29weUdsb2JhbEluZGV4KHRoaXMpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgW1widXBcIiwgXCJkb3duXCIsIFwibmV4dFwiLCBcInByZXZcIl0uZm9yRWFjaCgoZGlyOiBEaXJlY3Rpb25zKSA9PiB7XHJcbiAgICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgICAgaWQ6IGBqdW1wLXRvLWZpcnN0LSR7ZGlyfWAsXHJcbiAgICAgICAgbmFtZTogYEp1bXAgdG8gZmlyc3QgJyR7ZGlyfSdgLFxyXG4gICAgICAgIGNhbGxiYWNrOiBhc3luYyAoKSA9PiBhd2FpdCBqdW1wVG9GaXJzdERpcih0aGlzLCBkaXIpLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGdldEZpZWxkcyh1c2VySGllcnMpLmZvckVhY2goKGZpZWxkOiBzdHJpbmcpID0+IHtcclxuICAgICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgICBpZDogYG5ldy1maWxlLXdpdGgtY3Vyci1hcy0ke2ZpZWxkfWAsXHJcbiAgICAgICAgbmFtZTogYENyZWF0ZSBhIG5ldyAnJHtmaWVsZH0nIGZyb20gdGhlIGN1cnJlbnQgbm90ZWAsXHJcbiAgICAgICAgY2FsbGJhY2s6IGFzeW5jICgpID0+IGF3YWl0IHRocmVhZCh0aGlzLCBmaWVsZCksXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRSaWJib25JY29uKFxyXG4gICAgICBhZGRGZWF0aGVySWNvbihcInR2XCIpIGFzIHN0cmluZyxcclxuICAgICAgXCJCcmVhZGNydW1icyBWaXN1YWxpc2F0aW9uXCIsXHJcbiAgICAgICgpID0+IG5ldyBWaXNNb2RhbCh0aGlzKS5vcGVuKClcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5yZWdpc3Rlck1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yKFxyXG4gICAgICBcImJyZWFkY3J1bWJzXCIsXHJcbiAgICAgIGdldENvZGVibG9ja0NCKHRoaXMpXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGp1Z2dsUGx1Z2luID0gZ2V0UGx1Z2luKGFwcCk7XHJcbiAgICBpZiAoanVnZ2xQbHVnaW4pIHtcclxuICAgICAgdGhpcy5iY1N0b3JlID0gbmV3IEJDU3RvcmUodGhpcy5tYWluRywgYXBwLm1ldGFkYXRhQ2FjaGUpO1xyXG4gICAgICBqdWdnbFBsdWdpbi5yZWdpc3RlclN0b3JlKHRoaXMuYmNTdG9yZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hcGkgPSBuZXcgQkNBUEkodGhpcyk7XHJcbiAgICAvLyBSZWdpc3RlciBBUEkgdG8gZ2xvYmFsIHdpbmRvdyBvYmplY3QuXHJcbiAgICAod2luZG93W0FQSV9OQU1FXSA9IHRoaXMuYXBpKSAmJlxyXG4gICAgICB0aGlzLnJlZ2lzdGVyKCgpID0+IGRlbGV0ZSB3aW5kb3dbQVBJX05BTUVdKTtcclxuICB9XHJcblxyXG4gIGdldEFjdGl2ZVRZUEVWaWV3KHR5cGU6IHN0cmluZyk6IE15VmlldyB8IG51bGwge1xyXG4gICAgY29uc3QgeyBjb25zdHJ1Y3RvciB9ID0gdGhpcy5WSUVXUy5maW5kKCh2aWV3KSA9PiB2aWV3LnR5cGUgPT09IHR5cGUpO1xyXG4gICAgY29uc3QgbGVhdmVzID0gYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUodHlwZSk7XHJcbiAgICBpZiAobGVhdmVzICYmIGxlYXZlcy5sZW5ndGggPj0gMSkge1xyXG4gICAgICBjb25zdCB7IHZpZXcgfSA9IGxlYXZlc1swXTtcclxuICAgICAgaWYgKHZpZXcgaW5zdGFuY2VvZiBjb25zdHJ1Y3RvcikgcmV0dXJuIHZpZXc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGxvYWRTZXR0aW5ncyA9IGFzeW5jICgpID0+XHJcbiAgKHRoaXMuc2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKFxyXG4gICAge30sXHJcbiAgICBERUZBVUxUX1NFVFRJTkdTLFxyXG4gICAgYXdhaXQgdGhpcy5sb2FkRGF0YSgpXHJcbiAgKSk7XHJcblxyXG4gIHNhdmVTZXR0aW5ncyA9IGFzeW5jICgpID0+IGF3YWl0IHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcblxyXG4gIG9udW5sb2FkKCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJ1bmxvYWRpbmdcIik7XHJcbiAgICB0aGlzLlZJRVdTLmZvckVhY2goYXN5bmMgKHZpZXcpID0+IHtcclxuICAgICAgYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUodmlldy50eXBlKS5mb3JFYWNoKChsZWFmKSA9PiB7XHJcbiAgICAgICAgbGVhZi5kZXRhY2goKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnZpc2l0ZWQuZm9yRWFjaCgodmlzaXQpID0+IHZpc2l0WzFdLnJlbW92ZSgpKTtcclxuICAgIGlmICh0aGlzLmJjU3RvcmUpIHtcclxuICAgICAgY29uc3QganVnZ2xQbHVnaW4gPSBnZXRQbHVnaW4oYXBwKTtcclxuICAgICAgaWYgKGp1Z2dsUGx1Z2luKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGp1Z2dsUGx1Z2luLnJlbW92ZVN0b3JlKHRoaXMuYmNTdG9yZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwgImltcG9ydCB7IHBhcnNlRnJvbnRNYXR0ZXJUYWdzLCBwYXJzZUZyb250TWF0dGVyU3RyaW5nQXJyYXkgfSBmcm9tICdvYnNpZGlhbic7XG5cbmNvbnN0IENBVF9EQU5HTElORyA9ICdkYW5nbGluZyc7XG5jb25zdCBDT1JFX1NUT1JFX0lEID0gJ2NvcmUnO1xuY2xhc3MgVml6SWQge1xuICAgIGNvbnN0cnVjdG9yKGlkLCBzdG9yZUlkKSB7XG4gICAgICAgIHRoaXMuaWQgPSBpZDtcbiAgICAgICAgdGhpcy5zdG9yZUlkID0gc3RvcmVJZDtcbiAgICB9XG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnN0b3JlSWR9OiR7dGhpcy5pZH1gO1xuICAgIH1cbiAgICB0b0lkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50b1N0cmluZygpO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbUlkKGlkKSB7XG4gICAgICAgIGNvbnN0IHNwbGl0ID0gaWQuc3BsaXQoJzonKTtcbiAgICAgICAgY29uc3Qgc3RvcmVJZCA9IHNwbGl0WzBdO1xuICAgICAgICBjb25zdCBfaWQgPSBzcGxpdC5zbGljZSgxKS5qb2luKCc6Jyk7XG4gICAgICAgIHJldHVybiBuZXcgVml6SWQoX2lkLCBzdG9yZUlkKTtcbiAgICB9XG4gICAgc3RhdGljIGZyb21Ob2RlKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIFZpeklkLmZyb21JZChub2RlLmlkKCkpO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbU5vZGVzKG5vZGVzKSB7XG4gICAgICAgIHJldHVybiBub2Rlcy5tYXAoKG4pID0+IFZpeklkLmZyb21Ob2RlKG4pKTtcbiAgICB9XG4gICAgc3RhdGljIGZyb21GaWxlKGZpbGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBWaXpJZChmaWxlLm5hbWUsICdjb3JlJyk7XG4gICAgfVxuICAgIHN0YXRpYyB0b0lkKGlkLCBzdG9yZUlkKSB7XG4gICAgICAgIHJldHVybiBuZXcgVml6SWQoaWQsIHN0b3JlSWQpLnRvSWQoKTtcbiAgICB9XG59XG5jb25zdCBfcGFyc2VUYWdzID0gZnVuY3Rpb24gKHRhZ3MpIHtcbiAgICByZXR1cm4gW10uY29uY2F0KC4uLnRhZ3NcbiAgICAgICAgLm1hcCgodGFnKSA9PiB7XG4gICAgICAgIHRhZyA9IHRhZy5zbGljZSgxKTtcbiAgICAgICAgY29uc3QgaFNwbGl0ID0gdGFnLnNwbGl0KCcvJyk7XG4gICAgICAgIGNvbnN0IHRhZ3MgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpIGluIGhTcGxpdCkge1xuICAgICAgICAgICAgY29uc3QgaFRhZyA9IGhTcGxpdC5zbGljZSgwLCBwYXJzZUludChpKSArIDEpLmpvaW4oJy0nKTtcbiAgICAgICAgICAgIHRhZ3MucHVzaChgdGFnLSR7aFRhZ31gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFncztcbiAgICB9KSk7XG59O1xuY29uc3QgZ2V0Q2xhc3NlcyA9IGZ1bmN0aW9uIChmaWxlLCBtZXRhZGF0YUNhY2hlKSB7XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgICAgY29uc3QgY2xhc3NlcyA9IFtdO1xuICAgICAgICBpZiAoWydwbmcnLCAnanBnJywgJ2pwZWcnLCAnZ2lmJywgJ2JtcCcsICdzdmcnLCAndGlmZiddLmNvbnRhaW5zKGZpbGUuZXh0ZW5zaW9uKSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdpbWFnZScpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKFsnbXAzJywgJ3dlYm0nLCAnd2F2JywgJ200YScsICdvZ2cnLCAnM2dwJywgJ2ZsYWMnXS5jb250YWlucyhmaWxlLmV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnYXVkaW8nKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChbJ21wNCcsICd3ZWJtJywgJ29ndiddLmNvbnRhaW5zKGZpbGUuZXh0ZW5zaW9uKSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCd2aWRlbycpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGZpbGUuZXh0ZW5zaW9uID09PSAncGRmJykge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdwZGYnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGlzIGlzIHJlcGxhY2VkIGJ5IHRoZSAncGF0aCcgZGF0YSBhdHRyaWJ1dGUuXG4gICAgICAgIC8vIGlmICghKGZpbGUucGFyZW50Lm5hbWUgPT09ICcvJyB8fCBmaWxlLnBhcmVudC5uYW1lID09PSAnJykpIHtcbiAgICAgICAgLy8gICBjbGFzc2VzLnB1c2goYGZvbGRlci0ke2ZpbGUucGFyZW50Lm5hbWVcbiAgICAgICAgLy8gICAgICAgLnJlcGxhY2UoJyAnLCAnXycpfWApO1xuICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAvLyAgIGNsYXNzZXMucHVzaCgncm9vdCcpO1xuICAgICAgICAvLyB9XG4gICAgICAgIGlmIChmaWxlLmV4dGVuc2lvbiA9PT0gJ21kJykge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdub3RlJyk7XG4gICAgICAgICAgICBjb25zdCBjYWNoZSA9IG1ldGFkYXRhQ2FjaGUuZ2V0RmlsZUNhY2hlKGZpbGUpO1xuICAgICAgICAgICAgaWYgKGNhY2hlPy5mcm9udG1hdHRlcikge1xuICAgICAgICAgICAgICAgIGlmICgnaW1hZ2UnIGluIGNhY2hlLmZyb250bWF0dGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnaW1hZ2UnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCd0YWdzJyBpbiBjYWNoZS5mcm9udG1hdHRlcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YWdzID0gcGFyc2VGcm9udE1hdHRlclRhZ3MoY2FjaGUuZnJvbnRtYXR0ZXIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFncykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKC4uLl9wYXJzZVRhZ3ModGFncykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICgnY3NzY2xhc3MnIGluIGNhY2hlLmZyb250bWF0dGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsYXp6ZXMgPSBwYXJzZUZyb250TWF0dGVyU3RyaW5nQXJyYXkoY2FjaGUuZnJvbnRtYXR0ZXIsICdjc3NjbGFzcycpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2xhenplcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKC4uLmNsYXp6ZXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNhY2hlPy50YWdzKSB7XG4gICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKC4uLl9wYXJzZVRhZ3MoY2FjaGUudGFncy5tYXAoKHQpID0+IHQudGFnKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdmaWxlJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNsYXNzZXM7XG4gICAgfVxuICAgIHJldHVybiBbQ0FUX0RBTkdMSU5HXTtcbn07XG5jb25zdCBub2RlRnJvbUZpbGUgPSBhc3luYyBmdW5jdGlvbiAoZmlsZSwgcGx1Z2luLCBzZXR0aW5ncywgaWQpIHtcbiAgICBpZiAoIWlkKSB7XG4gICAgICAgIGlkID0gVml6SWQudG9JZChmaWxlLm5hbWUsIENPUkVfU1RPUkVfSUQpO1xuICAgIH1cbiAgICBjb25zdCBjYWNoZSA9IHBsdWdpbi5hcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XG4gICAgY29uc3QgbmFtZSA9IGZpbGUuZXh0ZW5zaW9uID09PSAnbWQnID8gZmlsZS5iYXNlbmFtZSA6IGZpbGUubmFtZTtcbiAgICBjb25zdCBjbGFzc2VzID0gZ2V0Q2xhc3NlcyhmaWxlLCBwbHVnaW4uYXBwLm1ldGFkYXRhQ2FjaGUpLmpvaW4oJyAnKTtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICBpZCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgcGF0aDogZmlsZS5wYXRoLFxuICAgIH07XG4gICAgaWYgKFsncG5nJywgJ2pwZycsICdqcGVnJywgJ2dpZicsICdibXAnLCAnc3ZnJywgJ3RpZmYnXS5jb250YWlucyhmaWxlLmV4dGVuc2lvbikpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGRhdGFbJ3Jlc291cmNlX3VybCddID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtwbHVnaW4uc2V0dGluZ3MuaW1nU2VydmVyUG9ydH0vJHtlbmNvZGVVUkkoZmlsZS5wYXRoKX1gO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIHsgfVxuICAgIH1cbiAgICBpZiAoc2V0dGluZ3MucmVhZENvbnRlbnQgJiYgZmlsZS5leHRlbnNpb24gPT0gJ21kJykge1xuICAgICAgICBkYXRhWydjb250ZW50J10gPSBhd2FpdCBwbHVnaW4uYXBwLnZhdWx0LmNhY2hlZFJlYWQoZmlsZSk7XG4gICAgfVxuICAgIGNvbnN0IGZyb250bWF0dGVyID0gY2FjaGU/LmZyb250bWF0dGVyO1xuICAgIGlmIChmcm9udG1hdHRlcikge1xuICAgICAgICBPYmplY3Qua2V5cyhmcm9udG1hdHRlcikuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgaWYgKCEoayA9PT0gJ3Bvc2l0aW9uJykpIHtcbiAgICAgICAgICAgICAgICBpZiAoayA9PT0gJ2ltYWdlJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbWFnZUZpZWxkID0gZnJvbnRtYXR0ZXJba107XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB1cmwuIHRocm93cyBlcnJvciBvdGhlcndpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBVUkwoaW1hZ2VGaWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2tdID0gaW1hZ2VGaWVsZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2tdID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtwbHVnaW4uc2V0dGluZ3MuaW1nU2VydmVyUG9ydH0vJHtlbmNvZGVVUkkoaW1hZ2VGaWVsZCl9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIHsgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkYXRhW2tdID0gZnJvbnRtYXR0ZXJba107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ3JvdXA6ICdub2RlcycsXG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGNsYXNzZXM6IGNsYXNzZXMsXG4gICAgfTtcbn07XG5jb25zdCBub2RlRGFuZ2xpbmcgPSBmdW5jdGlvbiAocGF0aCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGdyb3VwOiAnbm9kZXMnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpZDogVml6SWQudG9JZChwYXRoLCBDT1JFX1NUT1JFX0lEKSxcbiAgICAgICAgICAgIG5hbWU6IHBhdGgsXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzZXM6ICdkYW5nbGluZycsXG4gICAgfTtcbn07XG5jb25zdCB3aWtpbGlua1JlZ2V4ID0gJ1xcXFxbXFxcXFsoW15cXFxcXVxcXFxyXFxcXG5dKz8pXFxcXF1cXFxcXSc7XG5jb25zdCBuYW1lUmVnZXggPSAnW15cXFxcV1xcXFxkXVxcXFx3Kic7XG5jb25zdCByZWdleEVzY2FwZSA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1stXFwvXFxcXF4kKis/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpO1xufTtcbmNvbnN0IHBhcnNlVHlwZWRMaW5rID0gZnVuY3Rpb24gKGxpbmssIGxpbmUsIHR5cGVkTGlua1ByZWZpeCkge1xuICAgIC8vIFRPRE86IFRoaXMgaXMgc29tZXRoaW5nIHNwZWNpZmljIEkgdXNlLCBidXQgc2hvdWxkbid0IGtlZXAgYmVpbmcgaW4gdGhpcyByZXBvLlxuICAgIGNvbnN0IHJlZ2V4UHVibGlzaGVkSW4gPSBuZXcgUmVnRXhwKGBeJHtyZWdleEVzY2FwZSh0eXBlZExpbmtQcmVmaXgpfSAocHVibGlzaGVkSW4pIChcXFxcZFxcXFxkXFxcXGRcXFxcZCkgKCR7d2lraWxpbmtSZWdleH0sPyAqKSskYCk7XG4gICAgY29uc3QgbWF0Y2hQSSA9IHJlZ2V4UHVibGlzaGVkSW4uZXhlYyhsaW5lKTtcbiAgICBpZiAoIShtYXRjaFBJID09PSBudWxsKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2xhc3M6ICd0eXBlLXB1Ymxpc2hlZEluJyxcbiAgICAgICAgICAgIGlzSW5saW5lOiBmYWxzZSxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICB5ZWFyOiBtYXRjaFBJWzJdLFxuICAgICAgICAgICAgICAgIGNvbnRleHQ6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdwdWJsaXNoZWRJbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvLyBJbnR1aXRpb246IFN0YXJ0IHdpdGggdGhlIHR5cGVkIGxpbmsgcHJlZml4LiBUaGVuIGEgbmVvNGogbmFtZSAobmFtZVJlZ2V4KS5cbiAgICAvLyBUaGVuIG9uZSBvciBtb3JlIG9mIHRoZSB3aWtpbGluayBncm91cDogd2lraWxpbmsgcmVnZXggc2VwYXJhdGVkIGJ5IG9wdGlvbmFsIGNvbW1hIGFuZCBtdWx0aXBsZSBzcGFjZXNcbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYF4ke3JlZ2V4RXNjYXBlKHR5cGVkTGlua1ByZWZpeCl9ICgke25hbWVSZWdleH0pICgke3dpa2lsaW5rUmVnZXh9LD8gKikrJGApO1xuICAgIGNvbnN0IG1hdGNoID0gcmVnZXguZXhlYyhsaW5lKTtcbiAgICBjb25zdCBzcGxpdExpbmsgPSBsaW5rLm9yaWdpbmFsLnNwbGl0KCd8Jyk7XG4gICAgbGV0IGFsaWFzID0gbnVsbDtcbiAgICBpZiAoc3BsaXRMaW5rLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgYWxpYXMgPSBzcGxpdExpbmsuc2xpY2UoMSkuam9pbigpLnNsaWNlKDAsIC0yKTtcbiAgICB9XG4gICAgaWYgKCEobWF0Y2ggPT09IG51bGwpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjbGFzczogYHR5cGUtJHttYXRjaFsxXX1gLFxuICAgICAgICAgICAgaXNJbmxpbmU6IGZhbHNlLFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIGFsaWFzOiBhbGlhcyxcbiAgICAgICAgICAgICAgICBjb250ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiBtYXRjaFsxXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcbmNvbnN0IHBhcnNlUmVmQ2FjaGUgPSBmdW5jdGlvbiAocmVmLCBjb250ZW50LCBpZCwgc291cmNlLCB0YXJnZXQsIHR5cGVkTGlua1ByZWZpeCkge1xuICAgIGNvbnN0IGxpbmUgPSBjb250ZW50W3JlZi5wb3NpdGlvbi5zdGFydC5saW5lXTtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgaWQ6IGlkLFxuICAgICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgICAgdGFyZ2V0OiB0YXJnZXQsXG4gICAgICAgIGNvbnRleHQ6IGxpbmUsXG4gICAgICAgIGVkZ2VDb3VudDogMSxcbiAgICB9O1xuICAgIGNvbnN0IHNwbGl0TGluayA9IHJlZi5vcmlnaW5hbC5zcGxpdCgnfCcpO1xuICAgIGlmIChzcGxpdExpbmsubGVuZ3RoID4gMSkge1xuICAgICAgICBkYXRhWydhbGlhcyddID0gc3BsaXRMaW5rLnNsaWNlKDEpLmpvaW4oKS5zbGljZSgwLCAtMik7XG4gICAgfVxuICAgIGxldCBjbGFzc2VzID0gJyc7XG4gICAgY29uc3QgdHlwZWRMaW5rID0gcGFyc2VUeXBlZExpbmsocmVmLCBsaW5lLCB0eXBlZExpbmtQcmVmaXgpO1xuICAgIGlmICh0eXBlZExpbmsgPT09IG51bGwpIHtcbiAgICAgICAgY2xhc3NlcyA9IGAke2NsYXNzZXN9IGlubGluZWA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBkYXRhID0geyAuLi50eXBlZExpbmsucHJvcGVydGllcywgLi4uZGF0YSB9O1xuICAgICAgICBjbGFzc2VzID0gYCR7Y2xhc3Nlc30gJHt0eXBlZExpbmsuY2xhc3N9YDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ3JvdXA6ICdlZGdlcycsXG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGNsYXNzZXM6IGNsYXNzZXMsXG4gICAgfTtcbn07XG5cbmNvbnN0IGdldFBsdWdpbiA9IGZ1bmN0aW9uIChhcHApIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKCdqdWdnbCcgaW4gYXBwLnBsdWdpbnMucGx1Z2lucykge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBhcHAucGx1Z2lucy5wbHVnaW5zWydqdWdnbCddO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCB7IFZpeklkLCBnZXRDbGFzc2VzLCBnZXRQbHVnaW4sIG5vZGVEYW5nbGluZywgbm9kZUZyb21GaWxlLCBwYXJzZVJlZkNhY2hlLCBwYXJzZVR5cGVkTGluayB9O1xuIiwgIi8qKlxyXG4gKiBUaGlzIG1vZHVsZSBjb250YWlucyB2YXJpb3VzIHV0aWxpdHkgZnVuY3Rpb25zIGNvbW1vbmx5IHVzZWQgaW4gT2JzaWRpYW4gcGx1Z2lucy5cclxuICogQG1vZHVsZSBvYnNpZGlhbi1jb21tdW5pdHktbGliXHJcbiAqL1xyXG5pbXBvcnQgKiBhcyBmZWF0aGVyIGZyb20gXCJmZWF0aGVyLWljb25zXCI7XHJcbmltcG9ydCB7IGFkZEljb24sIE1hcmtkb3duUmVuZGVyZXIsIE1hcmtkb3duVmlldywgTW9kYWwsIG5vcm1hbGl6ZVBhdGgsIE5vdGljZSwgcmVxdWVzdCwgVEZpbGUsIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbi8qKlxyXG4gKiBZb3UgY2FuIGF3YWl0IHRoaXMgRnVuY3Rpb24gdG8gZGVsYXkgZXhlY3V0aW9uXHJcbiAqXHJcbiAqIEBwYXJhbSBkZWxheSBUaGUgZGVsYXkgaW4gbXNcclxuICovXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0KGRlbGF5KSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgZGVsYXkpKTtcclxufVxyXG4vKipcclxuICogQWRkcyBhbGwgb2ZmaWNpYWwgRmVhdGhlciBJY29ucyB0byBPYnNpZGlhbi5cclxuICogaHR0cHM6Ly9mZWF0aGVyaWNvbnMuY29tL1xyXG4gKlxyXG4gKiBAcGFyYW0gYXR0ciBTVkcgQXR0cmlidXRlcyBmb3IgdGhlIEljb24uIFRoZSBkZWZhdWx0IHNob3VsZCB3b3JrIGZvciBtb3N0IHVzZWNhc2VzLlxyXG4gKlxyXG4gKiBAZGVwcmVjYXRlZCBBcyBvZiBPYnNpZGlhbiAwLjEzLjI3IHRoaXMgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgYmVjYXVzZSBPYnNpZGlhbiBzaGlwcyB3aXRoIGBsdWNpZGVgLCBhIG1haW50YWluZWQgZm9yayBvZiBmZWF0aGVyLiAoaHR0cHM6Ly9sdWNpZGUuZGV2LylcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRBbGxGZWF0aGVySWNvbnMoYXR0ciA9IHsgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IFwiMTAwXCIsIGhlaWdodDogXCIxMDBcIiB9KSB7XHJcbiAgICBPYmplY3QudmFsdWVzKGZlYXRoZXIuaWNvbnMpLmZvckVhY2goKGkpID0+IHtcclxuICAgICAgICBjb25zdCBzdmcgPSBpLnRvU3ZnKGF0dHIpO1xyXG4gICAgICAgIGFkZEljb24oYGZlYXRoZXItJHtpLm5hbWV9YCwgc3ZnKTtcclxuICAgIH0pO1xyXG59XHJcbi8qKlxyXG4gKiBBZGRzIGEgc3BlY2lmaWMgRmVhdGhlciBJY29uIHRvIE9ic2lkaWFuLlxyXG4gKlxyXG4gKiBAcGFyYW0gbmFtZSBvZmZpY2lhbCBOYW1lIG9mIHRoZSBJY29uIChodHRwczovL2ZlYXRoZXJpY29ucy5jb20vKVxyXG4gKiBAcGFyYW0gYXR0ciBTVkcgQXR0cmlidXRlcyBmb3IgdGhlIEljb24uIFRoZSBkZWZhdWx0IHNob3VsZCB3b3JrIGZvciBtb3N0IHVzZWNhc2VzLlxyXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBJY29uIG5hbWVcclxuICpcclxuICogQGRlcHJlY2F0ZWQgQXMgb2YgT2JzaWRpYW4gMC4xMy4yNyB0aGlzIGlzIG5vIGxvbmdlciBuZWVkZWQsIGJlY2F1c2UgT2JzaWRpYW4gc2hpcHMgd2l0aCBgbHVjaWRlYCwgYSBtYWludGFpbmVkIGZvcmsgb2YgZmVhdGhlci4gKGh0dHBzOi8vbHVjaWRlLmRldi8pXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYWRkRmVhdGhlckljb24obmFtZSwgYXR0ciA9IHsgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IFwiMTAwXCIsIGhlaWdodDogXCIxMDBcIiB9KSB7XHJcbiAgICBpZiAoZmVhdGhlci5pY29uc1tuYW1lXSkge1xyXG4gICAgICAgIGNvbnN0IGljb25OYW1lID0gYGZlYXRoZXItJHtuYW1lfWA7XHJcbiAgICAgICAgYWRkSWNvbihpY29uTmFtZSwgZmVhdGhlci5pY29uc1tuYW1lXS50b1N2ZyhhdHRyKSk7XHJcbiAgICAgICAgcmV0dXJuIGljb25OYW1lO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdGhyb3cgRXJyb3IoYFRoaXMgSWNvbiAoJHtuYW1lfSkgZG9lc24ndCBleGlzdCBpbiB0aGUgRmVhdGhlciBMaWJyYXJ5LmApO1xyXG4gICAgfVxyXG59XHJcbi8qKlxyXG4gKiBDb252ZXJ0IGEgYmFzZTY0IFN0cmluZyB0byBhbiBBcnJheUJ1ZmZlci5cclxuICogWW91IGNhbiB0aGVuIHVzZSB0aGUgQXJyYXlCdWZmZXIgdG8gc2F2ZSB0aGUgYXNzZXQgdG8gZGlzay5cclxuICpcclxuICogQHBhcmFtIGJhc2U2NCBiYXNlNjQgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZC5cclxuICogQHJldHVybnMgQXJyYXlCdWZmZXJcclxuICogQGRlcHJlY2F0ZWQgT2JzaWRpYW4gb2ZmZXJzIGl0J3Mgb3duIG1ldGhvZCBhcyBvZiAwLjE0LjVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBiYXNlNjRUb0FycmF5QnVmZmVyKGJhc2U2NCkge1xyXG4gICAgY29uc3QgYmluYXJ5X3N0cmluZyA9IHdpbmRvdy5hdG9iKGJhc2U2NCk7XHJcbiAgICBjb25zdCBsZW4gPSBiaW5hcnlfc3RyaW5nLmxlbmd0aDtcclxuICAgIGxldCBieXRlcyA9IG5ldyBVaW50OEFycmF5KGxlbik7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgYnl0ZXNbaV0gPSBiaW5hcnlfc3RyaW5nLmNoYXJDb2RlQXQoaSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYnl0ZXMuYnVmZmVyO1xyXG59XHJcbi8qKlxyXG4gKiBUaGlzIGlzIGEgaGVscGVyIG1ldGhvZCBmb3IgYW4gdW5kb2N1bWVudGVkIEFQSSBvZiBPYnNpZGlhbi5cclxuICpcclxuICogQHBhcmFtIGZpbGVOYW1lIFRoZSBGaWxlbmFtZSBmb3IgeW91ciBBdHRhY2htZW50XHJcbiAqIEBwYXJhbSBmb3JtYXQgVGhlIEZpbGVmb3JtYXQgb2YgeW91ciBBdHRhY2htZW50XHJcbiAqIEBwYXJhbSBzb3VyY2VGaWxlIFRoZSBTb3VyY2VmaWxlIGZyb20gd2hlcmUgdGhlIEF0dGFjaG1lbnQgZ2V0cyBhZGRlZCwgdGhpcyBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgQXR0YWNobWVudCBGb2xkZXIgbWlnaHQgYmUgZGlmZmVyZW50IGJhc2VkIG9uIHdoZXJlIGl0IGdldHMgaW5zZXJ0ZWQuXHJcbiAqIEByZXR1cm5zIFRoZSBBdHRhY2htZW50IFBhdGhcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMoZmlsZU5hbWUsIGZvcm1hdCwgc291cmNlRmlsZSkge1xyXG4gICAgLy9AdHMtZXhwZWN0LWVycm9yXHJcbiAgICByZXR1cm4gYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyhmaWxlTmFtZSwgZm9ybWF0LCBzb3VyY2VGaWxlKTtcclxufVxyXG4vKipcclxuICogQ29weSBgY29udGVudGAgdG8gdGhlIHVzZXJzIGNsaXBib2FyZC5cclxuICpcclxuICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgVGhlIGNvbnRlbnQgdG8gYmUgY29waWVkIHRvIGNsaXBib2FyZC5cclxuICogQHBhcmFtIHsoKSA9PiBhbnl9IHN1Y2Nlc3MgVGhlIGNhbGxiYWNrIHRvIHJ1biB3aGVuIHRleHQgaXMgc3VjY2Vzc2Z1bGx5IGNvcGllZC4gRGVmYXVsdCB0aHJvd3MgYSBuZXcgYE5vdGljZWBcclxuICogQHBhcmFtIHsocmVhc29uPykgPT4gYW55fSBmYWlsdXJlIFRoZSBjYWxsYmFjayB0byBydW4gd2hlbiB0ZXh0IHdhcyBub3QgYWJsZSB0byBiZSBjb3BpZWQuIERlZmF1bHQgdGhyb3dzIGEgbmV3IGBOb3RpY2VgLCBhbmQgY29uc29sZSBsb2dzIHRoZSBlcnJvci5gXHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29weShjb250ZW50LCBzdWNjZXNzID0gKCkgPT4gbmV3IE5vdGljZShcIkNvcGllZCB0byBjbGlwYm9hcmRcIiksIGZhaWx1cmUgPSAocmVhc29uKSA9PiB7XHJcbiAgICBuZXcgTm90aWNlKFwiQ291bGQgbm90IGNvcHkgdG8gY2xpcGJvYXJkXCIpO1xyXG4gICAgY29uc29sZS5sb2coeyByZWFzb24gfSk7XHJcbn0pIHtcclxuICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvbnRlbnQpLnRoZW4oc3VjY2VzcywgZmFpbHVyZSk7XHJcbn1cclxuLyoqXHJcbiAqIEdpdmVuIGFuIGVkaXRvciwgY2hlY2sgaWYgc29tZXRoaW5nIGlzIHNlbGVjdGVkIGFuZCByZXR1cm4gdGhhdCBzZWxlY3Rpb24sIG90aGVyd2lzZSByZXR1cm4gdGhlIGVudGlyZSBjb250ZW50IG9mIHRoZSBlZGl0b3JcclxuICogQHBhcmFtICB7RWRpdG9yfSBlZGl0b3JcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3Rpb25Gcm9tRWRpdG9yKGVkaXRvcikge1xyXG4gICAgaWYgKGVkaXRvci5zb21ldGhpbmdTZWxlY3RlZCgpKVxyXG4gICAgICAgIHJldHVybiBlZGl0b3IuZ2V0U2VsZWN0aW9uKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIGVkaXRvci5nZXRWYWx1ZSgpO1xyXG59XHJcbi8qKlxyXG4gKiBDaGVjayBpZiBzb21ldGhpbmcgaXMgc2VsZWN0ZWQgaW4gdGhlIGN1cnJlbnQgZmlsZSBhbmQgcmV0dXJuIHRoYXQgc2VsZWN0aW9uLCBvdGhlcndpc2UgcmV0dXJuIHRoZSBlbnRpcmUgY29udGVudCBvZiB0aGUgY3VycmVudCBmaWxlLlxyXG4gKiBAcGFyYW0gIHtib29sZWFufSBbY2FjaGVkPXRydWVdIFVzZSBgY2FjaGVkUmVhZGAgb3IgYHJlYWRgLiBgY2FjaGVkUmVhZGAgYnkgZGVmYXVsdC5cclxuICogQHJldHVybnMge3N0cmluZyB8IG51bGx9IGBudWxsYCBpZiBub3QgZm9jdXNzZWQgb24gYSBtYXJrZG93biBmaWxlXHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U2VsZWN0aW9uRnJvbUN1cnJGaWxlKGNhY2hlZCA9IHRydWUpIHtcclxuICAgIHZhciBfYTtcclxuICAgIGNvbnN0IHRleHQgPSAoX2EgPSB3aW5kb3cgPT09IG51bGwgfHwgd2luZG93ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1N0cmluZygpO1xyXG4gICAgaWYgKHRleHQpXHJcbiAgICAgICAgcmV0dXJuIHRleHQ7XHJcbiAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGdldEFjdGl2ZUZpbGVDb250ZW50KGNhY2hlZCk7XHJcbn1cclxuLyoqXHJcbiAqIENoZWNrIGlmIGBub3RlTmFtZWAgaXMgdGhlIG5hbWUgb2YgYSBub3RlIHRoYXQgZXhpc3RzIGluIHRoZSB2YXVsdC5cclxuICogQHBhcmFtICB7c3RyaW5nfSBub3RlTmFtZSBCYXNlbmFtZSBvZiB0aGUgbm90ZSB0byBzZWFyY2ggZm9yLlxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IFtzb3VyY2VQYXRoPVwiXCJdIE9wdGlvbmFsIGZpbGUgcGF0aCB0byBzdGFydCBzZWFyY2hpbmcgZnJvbS4gRGVmYXVsdCBpcyB0aGUgY3VycmVudCBmaWxlLlxyXG4gKiBAcmV0dXJucyBib29sZWFuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgaXNJblZhdWx0ID0gKG5vdGVOYW1lLCBzb3VyY2VQYXRoID0gXCJcIikgPT4gISFhcHAubWV0YWRhdGFDYWNoZS5nZXRGaXJzdExpbmtwYXRoRGVzdChub3RlTmFtZSwgc291cmNlUGF0aCk7XHJcbi8qKlxyXG4gKiBXaGVuIGhvdmVyaW5nIGEgbGluayBnb2luZyB0byBgdG9gLCBzaG93IHRoZSBPYnNpZGlhbiBob3Zlci1wcmV2aWV3IG9mIHRoYXQgbm90ZS5cclxuICpcclxuICogWW91IHByb2JhYmx5IGhhdmUgdG8gaG9sZCBkb3duIGBDdHJsYCB3aGVuIGhvdmVyaW5nIHRoZSBsaW5rIGZvciB0aGUgcHJldmlldyB0byBhcHBlYXIhXHJcbiAqIEBwYXJhbSAge01vdXNlRXZlbnR9IGV2ZW50XHJcbiAqIEBwYXJhbSAge1lvdXJWaWV3fSB2aWV3IFRoZSB2aWV3IHdpdGggdGhlIGxpbmsgYmVpbmcgaG92ZXJlZFxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHRvIFRoZSBiYXNlbmFtZSBvZiB0aGUgbm90ZSB0byBwcmV2aWV3LlxyXG4gKiBAdGVtcGxhdGUgWW91clZpZXcgVGhlIFZpZXdUeXBlIG9mIHlvdXIgdmlld1xyXG4gKiBAcmV0dXJucyB2b2lkXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaG92ZXJQcmV2aWV3KGV2ZW50LCB2aWV3LCB0bykge1xyXG4gICAgY29uc3QgdGFyZ2V0RWwgPSBldmVudC50YXJnZXQ7XHJcbiAgICBhcHAud29ya3NwYWNlLnRyaWdnZXIoXCJob3Zlci1saW5rXCIsIHtcclxuICAgICAgICBldmVudCxcclxuICAgICAgICBzb3VyY2U6IHZpZXcuZ2V0Vmlld1R5cGUoKSxcclxuICAgICAgICBob3ZlclBhcmVudDogdmlldyxcclxuICAgICAgICB0YXJnZXRFbCxcclxuICAgICAgICBsaW5rdGV4dDogdG8sXHJcbiAgICB9KTtcclxufVxyXG4vKipcclxuICogQ3JlYXRlIGEgbmV3IG1hcmtkb3duIG5vdGUgbmFtZWQgYG5ld05hbWVgIGluIHRoZSB1c2VyJ3MgcHJlZmZlcmVkIG5ldy1ub3RlLWZvbGRlci5cclxuICogQHBhcmFtICB7c3RyaW5nfSBuZXdOYW1lIE5hbWUgb2YgbmV3IG5vdGUgKHdpdGggb3Igd2l0aG91dCAnLm1kJylcclxuICogQHBhcmFtICB7c3RyaW5nfSBbY3VyckZpbGVQYXRoPVwiXCJdIEZpbGUgcGF0aCBvZiB0aGUgY3VycmVudCBub3RlLiBVc2UgYW4gZW1wdHkgc3RyaW5nIGlmIHRoZXJlIGlzIG5vIGFjdGl2ZSBmaWxlLlxyXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxURmlsZT59IG5ldyBURmlsZVxyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU5ld01ETm90ZShuZXdOYW1lLCBjdXJyRmlsZVBhdGggPSBcIlwiKSB7XHJcbiAgICBjb25zdCBuZXdGaWxlRm9sZGVyID0gYXBwLmZpbGVNYW5hZ2VyLmdldE5ld0ZpbGVQYXJlbnQoY3VyckZpbGVQYXRoKS5wYXRoO1xyXG4gICAgY29uc3QgbmV3RmlsZVBhdGggPSBub3JtYWxpemVQYXRoKGAke25ld0ZpbGVGb2xkZXJ9JHtuZXdGaWxlRm9sZGVyID09PSBcIi9cIiA/IFwiXCIgOiBcIi9cIn0ke2FkZE1EKG5ld05hbWUpfWApO1xyXG4gICAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5jcmVhdGUobmV3RmlsZVBhdGgsIFwiXCIpO1xyXG59XHJcbi8qKlxyXG4gKiBBZGQgJy5tZCcgdG8gYG5vdGVOYW1lYCBpZiBpdCBpc24ndCBhbHJlYWR5IHRoZXJlLlxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IG5vdGVOYW1lIHdpdGggb3Igd2l0aG91dCAnLm1kJyBvbiB0aGUgZW5kLlxyXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBub3RlTmFtZSB3aXRoICcubWQnIG9uIHRoZSBlbmQuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgYWRkTUQgPSAobm90ZU5hbWUpID0+IHtcclxuICAgIHJldHVybiBub3RlTmFtZS5tYXRjaCgvXFwuTUQkfFxcLm1kJC9tKSA/IG5vdGVOYW1lIDogbm90ZU5hbWUgKyBcIi5tZFwiO1xyXG59O1xyXG4vKipcclxuICogU3RyaXAgJy5tZCcgb2ZmIHRoZSBlbmQgb2YgYSBub3RlIG5hbWUgdG8gZ2V0IGl0cyBiYXNlbmFtZS5cclxuICpcclxuICogV29ya3Mgd2l0aCB0aGUgZWRnZWNhc2Ugd2hlcmUgYSBub3RlIGhhcyAnLm1kJyBpbiBpdHMgYmFzZW5hbWU6IGBPYnNpZGlhbi5tZC5tZGAsIGZvciBleGFtcGxlLlxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IG5vdGVOYW1lIHdpdGggb3Igd2l0aG91dCAnLm1kJyBvbiB0aGUgZW5kLlxyXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBub3RlTmFtZSB3aXRob3V0ICcubWQnXHJcbiAqL1xyXG5leHBvcnQgY29uc3Qgc3RyaXBNRCA9IChub3RlTmFtZSkgPT4ge1xyXG4gICAgaWYgKG5vdGVOYW1lLm1hdGNoKC9cXC5NRCR8XFwubWQkL20pKSB7XHJcbiAgICAgICAgcmV0dXJuIG5vdGVOYW1lLnNwbGl0KC9cXC5NRCR8XFwubWQkL20pLnNsaWNlKDAsIC0xKS5qb2luKFwiLm1kXCIpO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICAgIHJldHVybiBub3RlTmFtZTtcclxufTtcclxuLyoqXHJcbiAqIFdoZW4gY2xpY2tpbmcgYSBsaW5rLCBjaGVjayBpZiB0aGF0IG5vdGUgaXMgYWxyZWFkeSBvcGVuIGluIGFub3RoZXIgbGVhZiwgYW5kIHN3aXRjaCB0byB0aGF0IGxlYWYsIGlmIHNvLiBPdGhlcndpc2UsIG9wZW4gdGhlIG5vdGUgaW4gYSBuZXcgcGFuZS5cclxuICogQHBhcmFtICB7c3RyaW5nfSBkZXN0IE5hbWUgb2Ygbm90ZSB0byBvcGVuLiBJZiB5b3Ugd2FudCB0byBvcGVuIGEgbm9uLW1kIG5vdGUsIGJlIHN1cmUgdG8gYWRkIHRoZSBmaWxlIGV4dGVuc2lvbi5cclxuICogQHBhcmFtICB7TW91c2VFdmVudH0gZXZlbnRcclxuICogQHBhcmFtICB7e2NyZWF0ZU5ld0ZpbGU6Ym9vbGVhbn19IFtvcHRpb25zPXtjcmVhdGVOZXdGaWxlOnRydWV9XSBXaGV0aGVyIG9yIG5vdCB0byBjcmVhdGUgYGRlc3RgIGZpbGUgaWYgaXQgZG9lc24ndCBleGlzdC4gSWYgYGZhbHNlYCwgc2ltcGx5IHJldHVybiBmcm9tIHRoZSBmdW5jdGlvbi5cclxuICogQHJldHVybnMgUHJvbWlzZVxyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5PclN3aXRjaChkZXN0LCBldmVudCwgb3B0aW9ucyA9IHsgY3JlYXRlTmV3RmlsZTogdHJ1ZSB9KSB7XHJcbiAgICBjb25zdCB7IHdvcmtzcGFjZSB9ID0gYXBwO1xyXG4gICAgbGV0IGRlc3RGaWxlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Rmlyc3RMaW5rcGF0aERlc3QoZGVzdCwgXCJcIik7XHJcbiAgICAvLyBJZiBkZXN0IGRvZXNuJ3QgZXhpc3QsIG1ha2UgaXRcclxuICAgIGlmICghZGVzdEZpbGUgJiYgb3B0aW9ucy5jcmVhdGVOZXdGaWxlKSB7XHJcbiAgICAgICAgZGVzdEZpbGUgPSBhd2FpdCBjcmVhdGVOZXdNRE5vdGUoZGVzdCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICghZGVzdEZpbGUgJiYgIW9wdGlvbnMuY3JlYXRlTmV3RmlsZSlcclxuICAgICAgICByZXR1cm47XHJcbiAgICAvLyBDaGVjayBpZiBpdCdzIGFscmVhZHkgb3BlblxyXG4gICAgY29uc3QgbGVhdmVzV2l0aERlc3RBbHJlYWR5T3BlbiA9IFtdO1xyXG4gICAgLy8gRm9yIGFsbCBvcGVuIGxlYXZlcywgaWYgdGhlIGxlYXZlJ3MgYmFzZW5hbWUgaXMgZXF1YWwgdG8gdGhlIGxpbmsgZGVzdGluYXRpb24sIHJhdGhlciBhY3RpdmF0ZSB0aGF0IGxlYWYgaW5zdGVhZCBvZiBvcGVuaW5nIGl0IGluIHR3byBwYW5lc1xyXG4gICAgd29ya3NwYWNlLml0ZXJhdGVBbGxMZWF2ZXMoKGxlYWYpID0+IHtcclxuICAgICAgICB2YXIgX2E7XHJcbiAgICAgICAgaWYgKGxlYWYudmlldyBpbnN0YW5jZW9mIE1hcmtkb3duVmlldykge1xyXG4gICAgICAgICAgICBjb25zdCBmaWxlID0gKF9hID0gbGVhZi52aWV3KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZmlsZTtcclxuICAgICAgICAgICAgaWYgKGZpbGUgJiYgZmlsZS5iYXNlbmFtZSArIFwiLlwiICsgZmlsZS5leHRlbnNpb24gPT09IGRlc3QpIHtcclxuICAgICAgICAgICAgICAgIGxlYXZlc1dpdGhEZXN0QWxyZWFkeU9wZW4ucHVzaChsZWFmKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gUmF0aGVyIHN3aXRjaCB0byBpdCBpZiBpdCBpcyBvcGVuXHJcbiAgICBpZiAobGVhdmVzV2l0aERlc3RBbHJlYWR5T3Blbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgd29ya3NwYWNlLnNldEFjdGl2ZUxlYWYobGVhdmVzV2l0aERlc3RBbHJlYWR5T3BlblswXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgY29uc3QgbW9kZSA9IGFwcC52YXVsdC5nZXRDb25maWcoXCJkZWZhdWx0Vmlld01vZGVcIik7XHJcbiAgICAgICAgY29uc3QgbGVhZiA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZShcIk1ldGFcIilcclxuICAgICAgICAgICAgPyB3b3Jrc3BhY2Uuc3BsaXRBY3RpdmVMZWFmKClcclxuICAgICAgICAgICAgOiB3b3Jrc3BhY2UuZ2V0VW5waW5uZWRMZWFmKCk7XHJcbiAgICAgICAgLy9AdHMtZXhwZWN0LWVycm9yXHJcbiAgICAgICAgYXdhaXQgbGVhZi5vcGVuRmlsZShkZXN0RmlsZSwgeyBhY3RpdmU6IHRydWUsIG1vZGUgfSk7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIEdpdmVuIGEgbGlzdCBvZiByZXNvbHZlZCBsaW5rcyBmcm9tIGFwcC5tZXRhZGF0YUNhY2hlLCBjaGVjayBpZiBgZnJvbWAgaGFzIGEgbGluayB0byBgdG9gXHJcbiAqIEBwYXJhbSAge1Jlc29sdmVkTGlua3N9IHJlc29sdmVkTGlua3NcclxuICogQHBhcmFtICB7c3RyaW5nfSBmcm9tIE5vdGUgbmFtZSB3aXRoIGxpbmsgbGVhdmluZyAoV2l0aCBvciB3aXRob3V0ICcubWQnKVxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHRvIE5vdGUgbmFtZSB3aXRoIGxpbmsgYXJyaXZpbmcgKFdpdGggb3Igd2l0aG91dCAnLm1kJylcclxuICogQHBhcmFtIHtib29sZWFufSBbZGlyZWN0ZWQ9dHJ1ZV0gT25seSBjaGVjayBpZiBgZnJvbWAgaGFzIGEgbGluayB0byBgdG9gLiBJZiBub3QgZGlyZWN0ZWQsIGNoZWNrIGluIGJvdGggZGlyZWN0aW9uc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzTGlua2VkKHJlc29sdmVkTGlua3MsIGZyb20sIHRvLCBkaXJlY3RlZCA9IHRydWUpIHtcclxuICAgIHZhciBfYSwgX2I7XHJcbiAgICBmcm9tID0gYWRkTUQoZnJvbSk7XHJcbiAgICB0byA9IGFkZE1EKHRvKTtcclxuICAgIGNvbnN0IGZyb21UbyA9IChfYSA9IHJlc29sdmVkTGlua3NbZnJvbV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5oYXNPd25Qcm9wZXJ0eSh0byk7XHJcbiAgICBpZiAoIWZyb21UbyAmJiAhZGlyZWN0ZWQpIHtcclxuICAgICAgICBjb25zdCB0b0Zyb20gPSAoX2IgPSByZXNvbHZlZExpbmtzW3RvXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmhhc093blByb3BlcnR5KGZyb20pO1xyXG4gICAgICAgIHJldHVybiB0b0Zyb207XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIGZyb21UbztcclxufVxyXG4vKipcclxuICogQ2hlY2sgaWYgdGhlIGxpbmsgYGZyb21gIFx1MjE5MiBgdG9gIGlzIHJlc29sdmVkIG9yIG5vdC5cclxuICogQHBhcmFtICB7c3RyaW5nfSB0b1xyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGZyb21cclxuICogQHJldHVybnMgYm9vbGVhblxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVzb2x2ZWQodG8sIGZyb20pIHtcclxuICAgIHZhciBfYTtcclxuICAgIGNvbnN0IHsgcmVzb2x2ZWRMaW5rcyB9ID0gYXBwLm1ldGFkYXRhQ2FjaGU7XHJcbiAgICByZXR1cm4gKChfYSA9IHJlc29sdmVkTGlua3MgPT09IG51bGwgfHwgcmVzb2x2ZWRMaW5rcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzb2x2ZWRMaW5rc1thZGRNRChmcm9tKV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVthZGRNRCh0byldKSA+IDA7XHJcbn1cclxuLyoqXHJcbiAqIE9wZW4geW91ciB2aWV3IG9uIHRoZSBjaG9zZW4gYHNpZGVgIGlmIGl0IGlzbid0IGFscmVhZHkgb3BlblxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHZpZXdUeXBlXHJcbiAqIEBwYXJhbSAge0NvbnN0cnVjdG9yPFlvdXJWaWV3Pn0gdmlld0NsYXNzIFRoZSBjbGFzcyBjb25zdHJ1Y3RvciBvZiB5b3VyIHZpZXdcclxuICogQHBhcmFtICB7XCJsZWZ0XCJ8XCJyaWdodFwifSBbc2lkZT1cInJpZ2h0XCJdXHJcbiAqIEByZXR1cm5zIHtQcm9taXNlPFlvdXJWaWV3Pn0gVGhlIG9wZW5lZCB2aWV3XHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlblZpZXcodmlld1R5cGUsIHZpZXdDbGFzcywgc2lkZSA9IFwicmlnaHRcIikge1xyXG4gICAgbGV0IGxlYWYgPSBudWxsO1xyXG4gICAgZm9yIChsZWFmIG9mIGFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKHZpZXdUeXBlKSkge1xyXG4gICAgICAgIGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiB2aWV3Q2xhc3MpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGxlYWYudmlldztcclxuICAgICAgICB9XHJcbiAgICAgICAgYXdhaXQgbGVhZi5zZXRWaWV3U3RhdGUoeyB0eXBlOiBcImVtcHR5XCIgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBsZWFmID1cclxuICAgICAgICAobGVhZiAhPT0gbnVsbCAmJiBsZWFmICE9PSB2b2lkIDAgPyBsZWFmIDogc2lkZSA9PT0gXCJyaWdodFwiKVxyXG4gICAgICAgICAgICA/IGFwcC53b3Jrc3BhY2UuZ2V0UmlnaHRMZWFmKGZhbHNlKVxyXG4gICAgICAgICAgICA6IGFwcC53b3Jrc3BhY2UuZ2V0TGVmdExlYWYoZmFsc2UpO1xyXG4gICAgYXdhaXQgbGVhZi5zZXRWaWV3U3RhdGUoe1xyXG4gICAgICAgIHR5cGU6IHZpZXdUeXBlLFxyXG4gICAgICAgIGFjdGl2ZTogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGxlYWYudmlldztcclxufVxyXG4vKipcclxuICogQ2hlY2sgd2hpY2ggc2lkZSBvZiB0aGUgd29ya3NwYWNlIHlvdXIgYHZpZXdUeXBlYCBpcyBvbiwgYW5kIHNhdmUgaXQgaW50byBgcGx1Z2luLnNldHRpbmdzW3NldHRpbmdOYW1lXWAuXHJcbiAqXHJcbiAqICoqVGlwKio6IFJ1biB0aGlzIGZ1bmN0aW9uIG9uIGBwbHVnaW4udW5sb2FkYCB0byBzYXZlIHRoZSBsYXN0IHNpZGUgeW91ciB2aWV3IHdhcyBvbiB3aGVuIGNsb3NpbmcsIHRoZW4ge0BsaW5rIG9wZW5WaWV3fSBvbiB0aGUgc2FtZSBzaWRlIGl0IHdhcyBsYXN0LlxyXG4gKiBAcGFyYW0gIHtZb3VyUGx1Z2lufSBwbHVnaW5cclxuICogQHBhcmFtICB7c3RyaW5nfSB2aWV3VHlwZVxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHNldHRpbmdOYW1lXHJcbiAqIEByZXR1cm5zIHtcImxlZnRcIiB8IFwicmlnaHRcIn0gYHNpZGVgXHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2F2ZVZpZXdTaWRlKHBsdWdpbiwgdmlld1R5cGUsIHNldHRpbmdOYW1lKSB7XHJcbiAgICBjb25zdCBsZWFmID0gYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUodmlld1R5cGUpWzBdO1xyXG4gICAgaWYgKCFsZWFmKSB7XHJcbiAgICAgICAgY29uc29sZS5pbmZvKGBPYnNpZGlhbi1Db21tdW5pdHktTGliOiBObyBpbnN0YW5jZSBvZiAnJHt2aWV3VHlwZX0nIG9wZW4sIGNhbm5vdCBzYXZlIHNpZGVgKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIGNvbnN0IHNpZGUgPSBsZWFmLmdldFJvb3QoKS5zaWRlO1xyXG4gICAgLy9AdHMtaWdub3JlXHJcbiAgICBwbHVnaW4uc2V0dGluZ3Nbc2V0dGluZ05hbWVdID0gc2lkZTtcclxuICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgcmV0dXJuIHNpZGU7XHJcbn1cclxuLyoqXHJcbiAqIEEgTW9kYWwgdXNlZCBpbiB7QGxpbmsgYWRkUmVuZGVyZWRNYXJrZG93bkJ1dHRvbn0gdG8gZGlzcGxheSByZW5kZXJlZCBtYXJrZG93biBmcm9tIGEgcmF3IHN0cmluZywgb3IgZmV0Y2hlZCBmcm9tIGEgcHJvdmlkZWQgdXJsLlxyXG4gKlxyXG4gKiAhW10oaHR0cHM6Ly9pLmltZ3VyLmNvbS9OTXdNNTBFLnBuZylcclxuICogQHBhcmFtICB7WW91clBsdWdpbn0gcGx1Z2luXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gc291cmNlIFJhdyBtYXJrZG93biBjb250ZW50IG9yIHVybCB0byBmaW5kIHJhdyBtYXJrZG93bi5cclxuICogQHBhcmFtICB7Ym9vbGVhbn0gZmV0Y2ggVHJ1ZSBcdTIxOTIgZmV0Y2ggbWFya2Rvd24gZnJvbSBgc291cmNlYCBhcyB1cmwuIEZhbHNlIFx1MjE5MiBgc291cmNlYCBpcyBhbHJlYWR5IGEgbWFya2Rvd24gc3RyaW5nLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFJlbmRlcmVkTWFya2Rvd25Nb2RhbCBleHRlbmRzIE1vZGFsIHtcclxuICAgIGNvbnN0cnVjdG9yKHBsdWdpbiwgc291cmNlLCBmZXRjaCkge1xyXG4gICAgICAgIHN1cGVyKGFwcCk7XHJcbiAgICAgICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XHJcbiAgICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XHJcbiAgICAgICAgdGhpcy5mZXRjaCA9IGZldGNoO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgb25PcGVuKCkge1xyXG4gICAgICAgIGxldCB7IGNvbnRlbnRFbCwgc291cmNlLCBwbHVnaW4sIGZldGNoIH0gPSB0aGlzO1xyXG4gICAgICAgIGxldCBjb250ZW50ID0gc291cmNlO1xyXG4gICAgICAgIGlmIChmZXRjaCkge1xyXG4gICAgICAgICAgICBjb250ZW50RWwuY3JlYXRlRGl2KHsgdGV4dDogYFdhaXRpbmcgZm9yIGNvbnRlbnQgZnJvbTogJyR7c291cmNlfSdgIH0pO1xyXG4gICAgICAgICAgICBjb250ZW50ID0gYXdhaXQgcmVxdWVzdCh7IHVybDogc291cmNlIH0pO1xyXG4gICAgICAgICAgICBjb250ZW50RWwuZW1wdHkoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbG9nRGl2ID0gY29udGVudEVsLmNyZWF0ZURpdih7IGNsczogXCJPQ0wtUmVuZGVyZWRNYXJrZG93bk1vZGFsXCIgfSk7XHJcbiAgICAgICAgTWFya2Rvd25SZW5kZXJlci5yZW5kZXJNYXJrZG93bihjb250ZW50LCBsb2dEaXYsIFwiXCIsIHBsdWdpbik7XHJcbiAgICB9XHJcbiAgICBvbkNsb3NlKCkge1xyXG4gICAgICAgIHRoaXMuY29udGVudEVsLmVtcHR5KCk7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIEFkZCBhIGJ1dHRvbiB0byBhbiBIVE1MRUxlbWVudCwgd2hpY2gsIHdoZW4gY2xpY2tlZCwgcG9wcyB1cCBhIHtAbGluayBSZW5kZXJlZE1hcmtkb3duTW9kYWx9IHNob3dpbmcgcmVuZGVyZWQgbWFya2Rvd24uXHJcbiAqXHJcbiAqIFVzZSBgZmV0Y2hgIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIG1hcmtkb3duIHN0cmluZyBuZWVkcyB0byBiZSBmZXRjaGVkLCBvciBpZiBpdCBoYXMgYmVlbiBwcm92aWRlZCBhcyBhIHN0cmluZyBhbHJlYWR5LlxyXG4gKlxyXG4gKiAhW10oaHR0cHM6Ly9pLmltZ3VyLmNvbS9IaTRneXl2LnBuZylcclxuICogQHBhcmFtICB7WW91clBsdWdpbn0gcGx1Z2luXHJcbiAqIEBwYXJhbSAge0hUTUxFbGVtZW50fSBjb250YWluZXJFbCBIVE1MRWxlbWVudCB0byBhZGQgdGhlIGJ1dHRvbiB0b1xyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHNvdXJjZSBSYXcgbWFya2Rvd24gY29udGVudCBvciB1cmwgdG8gZmluZCByYXcgbWFya2Rvd24uXHJcbiAqIEBwYXJhbSAge2Jvb2xlYW59IGZldGNoIFRydWUgXHUyMTkyIGZldGNoIG1hcmtkb3duIGZyb20gYHNvdXJjZWAgYXMgdXJsLiBGYWxzZSBcdTIxOTIgYHNvdXJjZWAgaXMgYWxyZWFkeSBhIG1hcmtkb3duIHN0cmluZy5cclxuICogQHBhcmFtICB7c3RyaW5nfSBkaXNwbGF5VGV4dCBUZXh0IHRvIGRpc3BsYXkgaW4gdGhlIGJ1dHRvbi5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRSZW5kZXJlZE1hcmtkb3duQnV0dG9uKHBsdWdpbiwgY29udGFpbmVyRWwsIHNvdXJjZSwgZmV0Y2gsIGRpc3BsYXlUZXh0KSB7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbChcImJ1dHRvblwiLCB7IHRleHQ6IGRpc3BsYXlUZXh0IH0sIChidXQpID0+IGJ1dC5vbkNsaWNrRXZlbnQoKCkgPT4ge1xyXG4gICAgICAgIG5ldyBSZW5kZXJlZE1hcmtkb3duTW9kYWwocGx1Z2luLCBzb3VyY2UsIGZldGNoKS5vcGVuKCk7XHJcbiAgICB9KSk7XHJcbn1cclxuLyoqXHJcbiAqIENoZWNrIGlmIGBhcHAubWV0YWRhdGFDYWNoZS5SZXNvbHZlZExpbmtzYCBoYXZlIGZ1bGx5IGluaXRhbGlzZWQuXHJcbiAqXHJcbiAqIFVzZWQgd2l0aCB7QGxpbmsgd2FpdEZvclJlc29sdmVkTGlua3N9LlxyXG4gKiBAcGFyYW0gIHtudW1iZXJ9IG5vRmlsZXMgTnVtYmVyIG9mIGZpbGVzIGluIHlvdXIgdmF1bHQuXHJcbiAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVkTGlua3NDb21wbGV0ZShub0ZpbGVzKSB7XHJcbiAgICBjb25zdCB7IHJlc29sdmVkTGlua3MgfSA9IGFwcC5tZXRhZGF0YUNhY2hlO1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHJlc29sdmVkTGlua3MpLmxlbmd0aCA9PT0gbm9GaWxlcztcclxufVxyXG4vKipcclxuICogV2FpdCBmb3IgYGFwcC5tZXRhZGF0YUNhY2hlLlJlc29sdmVkTGlua3NgIHRvIGhhdmUgZnVsbHkgaW5pdGlhbGlzZWQuXHJcbiAqIEBwYXJhbSAge251bWJlcn0gW2RlbGF5PTEwMDBdIE51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZXR3ZWVuIGVhY2ggY2hlY2suXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBbbWF4PTUwXSBNYXhpbXVtIG51bWJlciBvZiBpdGVyYXRpb25zIHRvIGNoZWNrIGJlZm9yZSB0aHJvd2luZyBhbiBlcnJvciBhbmQgYnJlYWtpbmcgb3V0IG9mIHRoZSBsb29wLlxyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JSZXNvbHZlZExpbmtzKGRlbGF5ID0gMTAwMCwgbWF4ID0gNTApIHtcclxuICAgIGNvbnN0IG5vRmlsZXMgPSBhcHAudmF1bHQuZ2V0TWFya2Rvd25GaWxlcygpLmxlbmd0aDtcclxuICAgIGxldCBpID0gMDtcclxuICAgIHdoaWxlICghcmVzb2x2ZWRMaW5rc0NvbXBsZXRlKG5vRmlsZXMpICYmIGkgPCBtYXgpIHtcclxuICAgICAgICBhd2FpdCB3YWl0KGRlbGF5KTtcclxuICAgICAgICBpKys7XHJcbiAgICB9XHJcbiAgICBpZiAoaSA9PT0gbWF4KSB7XHJcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJPYnNpZGlhbi1Db21tdW5pdHktTGliOiBSZXNvbHZlZExpbmtzIGRpZCBub3QgZmluaXNoIGluaXRpYWxpc2luZy4gYG1heGAgaXRlcmF0aW9ucyB3YXMgcmVhY2hlZCBmaXJzdC5cIik7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIENoZWNrIGlmIHRoZSBjb250ZW50IG9mIGEgbm90ZSBoYXMgWUFNTC4gSWYgc28sIHJldHVybiBhbiBhcnJheSBvZiB0aGUgWUFNTCBhbmQgdGhlIHJlc3Qgb2YgdGhlIG5vdGUuIElmIG5vdCwgcmV0dXJuIGBbJycsIGNvbnRlbnRdYFxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGNvbnRlbnRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBzcGxpdEF0WWFtbChjb250ZW50KSB7XHJcbiAgICBpZiAoIS9eLS0tXFxuLy50ZXN0KGNvbnRlbnQpKVxyXG4gICAgICAgIHJldHVybiBbXCJcIiwgY29udGVudF07XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBzcGxpdHMgPSBjb250ZW50LnNwbGl0KFwiLS0tXCIpO1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIHNwbGl0cy5zbGljZSgwLCAyKS5qb2luKFwiLS0tXCIpICsgXCItLS1cIixcclxuICAgICAgICAgICAgc3BsaXRzLnNsaWNlKDIpLmpvaW4oXCItLS1cIiksXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICpcclxuICogQHBhcmFtIHtib29sZWFufSBjYWNoZWQgUmV0dXJuIGNhY2hlZCBmaWxlIGNvbnRlbnQgKipvcioqIHJldHVybiB3aGF0J3Mgb24gZGlzay5cclxuICogQHJldHVybnNcclxuICovXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBY3RpdmVGaWxlQ29udGVudChjYWNoZWQgPSB0cnVlKSB7XHJcbiAgICBjb25zdCBjdXJyRmlsZSA9IGFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpO1xyXG4gICAgaWYgKCEoY3VyckZpbGUgaW5zdGFuY2VvZiBURmlsZSkpXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICBpZiAoY2FjaGVkKVxyXG4gICAgICAgIHJldHVybiBhd2FpdCBhcHAudmF1bHQuY2FjaGVkUmVhZChjdXJyRmlsZSk7XHJcbiAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5yZWFkKGN1cnJGaWxlKTtcclxufVxyXG4iLCAiaW1wb3J0IHR5cGUge1xyXG4gIEJDU2V0dGluZ3MsXHJcbiAgRGlyZWN0aW9ucyxcclxuICBSZWFsTkltcGxpZWQsXHJcbiAgVXNlckhpZXIsXHJcbn0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgdHlwZSB7IElKdWdnbFNldHRpbmdzIH0gZnJvbSBcImp1Z2dsLWFwaVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IE1BVFJJWF9WSUVXID0gXCJCQy1tYXRyaXhcIjtcclxuLy8gZXhwb3J0IGNvbnN0IFNUQVRTX1ZJRVcgPSBcIkJDLXN0YXRzXCI7XHJcbmV4cG9ydCBjb25zdCBEVUNLX1ZJRVcgPSBcIkJDLWR1Y2tzXCI7XHJcbmV4cG9ydCBjb25zdCBUUkVFX1ZJRVcgPSBcIkJDLXRyZWVcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBUUkFJTF9JQ09OID0gXCJCQy10cmFpbC1pY29uXCI7XHJcbmV4cG9ydCBjb25zdCBUUkFJTF9JQ09OX1NWRyA9XHJcbiAgJzxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTQ4LjgsNGMtNiwwLTEzLjUsMC41LTE5LjcsMy4zUzE3LjksMTUuOSwxNy45LDI1YzAsNSwyLjYsOS43LDYuMSwxMy45czguMSw4LjMsMTIuNiwxMi4zczksNy44LDEyLjIsMTEuNSBjMy4yLDMuNyw1LjEsNy4xLDUuMSwxMC4yYzAsMTQuNC0xMy40LDE5LjMtMTMuNCwxOS4zYy0wLjcsMC4yLTEuMiwwLjgtMS4zLDEuNXMwLjEsMS40LDAuNywxLjljMC42LDAuNSwxLjMsMC42LDIsMC4zIGMwLDAsMTYuMS02LjEsMTYuMS0yM2MwLTQuNi0yLjYtOC44LTYuMS0xMi44Yy0zLjUtNC04LjEtNy45LTEyLjYtMTEuOGMtNC41LTMuOS04LjktNy45LTEyLjItMTEuOGMtMy4yLTMuOS01LjItNy43LTUuMi0xMS40IGMwLTcuOCwzLjYtMTEuNiw4LjgtMTRTNDMsOCw0OC44LDhjNC42LDAsOS4zLDAsMTEsMGMwLjcsMCwxLjQtMC40LDEuNy0xYzAuMy0wLjYsMC4zLTEuNCwwLTJzLTEtMS0xLjctMUM1OC4zLDQsNTMuNCw0LDQ4LjgsNCBMNDguOCw0eiBNNzguMSw0Yy0wLjYsMC0xLjIsMC4yLTEuNiwwLjdsLTguOSw5LjljLTAuNSwwLjYtMC43LDEuNC0wLjMsMi4yYzAuMywwLjcsMSwxLjIsMS44LDEuMmgwLjFsLTIuOCwyLjYgYy0wLjYsMC42LTAuOCwxLjQtMC41LDIuMmMwLjMsMC44LDEsMS4zLDEuOSwxLjNoMS4zbC00LjUsNC42Yy0wLjYsMC42LTAuNywxLjQtMC40LDIuMmMwLjMsMC43LDEsMS4yLDEuOCwxLjJoMTB2NCBjMCwwLjcsMC40LDEuNCwxLDEuOGMwLjYsMC40LDEuNCwwLjQsMiwwYzAuNi0wLjQsMS0xLDEtMS44di00aDEwYzAuOCwwLDEuNS0wLjUsMS44LTEuMmMwLjMtMC43LDAuMS0xLjYtMC40LTIuMkw4Ni45LDI0aDEuMyBjMC44LDAsMS42LTAuNSwxLjktMS4zYzAuMy0wLjgsMC4xLTEuNi0wLjUtMi4ybC0yLjgtMi42aDAuMWMwLjgsMCwxLjUtMC41LDEuOC0xLjJjMC4zLTAuNywwLjItMS42LTAuMy0yLjJsLTguOS05LjkgQzc5LjEsNC4zLDc4LjYsNCw3OC4xLDRMNzguMSw0eiBNNzgsOWw0LjQsNC45aC0wLjdjLTAuOCwwLTEuNiwwLjUtMS45LDEuM2MtMC4zLDAuOC0wLjEsMS42LDAuNSwyLjJsMi44LDIuNmgtMS4xIGMtMC44LDAtMS41LDAuNS0xLjgsMS4yYy0wLjMsMC43LTAuMSwxLjYsMC40LDIuMmw0LjUsNC42SDcwLjhsNC41LTQuNmMwLjYtMC42LDAuNy0xLjQsMC40LTIuMmMtMC4zLTAuNy0xLTEuMi0xLjgtMS4yaC0xLjEgbDIuOC0yLjZjMC42LTAuNiwwLjgtMS40LDAuNS0yLjJjLTAuMy0wLjgtMS0xLjMtMS45LTEuM2gtMC43TDc4LDl6IE01Mi40LDEyYy00LjEsMC03LjEsMC41LTkuNCwxLjVjLTIuMywxLTMuOCwyLjUtNC41LDQuMyBjLTAuNywxLjgtMC41LDMuNiwwLjEsNS4yYzAuNiwxLjUsMS41LDIuOSwyLjUsMy45YzUuNCw1LjQsMTguMSwxMi42LDI5LjYsMjFjNS44LDQuMiwxMS4yLDguNiwxNS4xLDEzYzMuOSw0LjQsNi4yLDguNyw2LjIsMTIuNCBjMCwxNC41LTEyLjksMTguNy0xMi45LDE4LjdjLTAuNywwLjItMS4yLDAuOC0xLjQsMS41czAuMSwxLjUsMC43LDEuOWMwLjYsMC41LDEuMywwLjYsMiwwLjNjMCwwLDE1LjYtNS42LDE1LjYtMjIuNSBjMC01LjMtMi45LTEwLjMtNy4yLTE1LjFDODQuNiw1My42LDc5LDQ5LDczLjEsNDQuN2MtMTEuOC04LjYtMjQuOC0xNi4zLTI5LjItMjAuNmMtMC42LTAuNi0xLjItMS41LTEuNi0yLjQgYy0wLjMtMC45LTAuNC0xLjctMC4xLTIuNGMwLjMtMC43LDAuOC0xLjQsMi4zLTJjMS41LTAuNyw0LjEtMS4yLDcuOC0xLjJjNC45LDAsOS40LDAuMSw5LjQsMC4xYzAuNywwLDEuNC0wLjMsMS44LTEgYzAuNC0wLjYsMC40LTEuNCwwLTIuMWMtMC40LTAuNi0xLjEtMS0xLjgtMUM2MS45LDEyLjEsNTcuMywxMiw1Mi40LDEyTDUyLjQsMTJ6IE0yNCw0NmMtMC41LDAtMS4xLDAuMi0xLjQsMC42TDkuMiw2MC41IGMtMC42LDAuNi0wLjcsMS40LTAuNCwyLjJjMC4zLDAuNywxLDEuMiwxLjgsMS4yaDNsLTYuNSw2LjhjLTAuNiwwLjYtMC43LDEuNC0wLjQsMi4yczEsMS4yLDEuOCwxLjJIMTNsLTguNSw4LjYgQzQsODMuMiwzLjgsODQsNC4yLDg0LjhDNC41LDg1LjUsNS4yLDg2LDYsODZoMTZ2NS40YzAsMC43LDAuNCwxLjQsMSwxLjhjMC42LDAuNCwxLjQsMC40LDIsMGMwLjYtMC40LDEtMSwxLTEuOFY4NmgxNiBjMC44LDAsMS41LTAuNSwxLjgtMS4yYzAuMy0wLjcsMC4xLTEuNi0wLjQtMi4yTDM1LDc0aDQuNGMwLjgsMCwxLjUtMC41LDEuOC0xLjJzMC4yLTEuNi0wLjQtMi4ybC02LjUtNi44aDMgYzAuOCwwLDEuNS0wLjUsMS44LTEuMmMwLjMtMC43LDAuMi0xLjYtMC40LTIuMkwyNS40LDQ2LjZDMjUuMSw0Ni4yLDI0LjUsNDYsMjQsNDZMMjQsNDZ6IE0yNCw1MC45bDguNyw5aC0zIGMtMC44LDAtMS41LDAuNS0xLjgsMS4ycy0wLjIsMS42LDAuNCwyLjJsNi41LDYuOGgtNC41Yy0wLjgsMC0xLjUsMC41LTEuOCwxLjJjLTAuMywwLjctMC4xLDEuNiwwLjQsMi4ybDguNSw4LjZIMTAuOGw4LjUtOC42IGMwLjYtMC42LDAuNy0xLjQsMC40LTIuMmMtMC4zLTAuNy0xLTEuMi0xLjgtMS4yaC00LjVsNi41LTYuOGMwLjYtMC42LDAuNy0xLjQsMC40LTIuMmMtMC4zLTAuNy0xLTEuMi0xLjgtMS4yaC0zTDI0LDUwLjl6XCIvPic7XHJcblxyXG5leHBvcnQgY29uc3QgRFVDS19JQ09OID0gXCJCQy1kdWNrLWljb25cIjtcclxuZXhwb3J0IGNvbnN0IERVQ0tfSUNPTl9TVkcgPVxyXG4gICc8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgZD1cIk03MiwzMWMwLTEuNS0xLjItMi44LTIuOC0yLjhjLTEuNSwwLTIuOCwxLjItMi44LDIuOHMxLjIsMi44LDIuOCwyLjhDNzAuOCwzMy44LDcyLDMyLjYsNzIsMzF6IE04MC40LDQ3LjdjMTAuNywwLDE5LjQtOC43LDE5LjQtMTkuNEg4OC40Yy0wLjEtMC42LTAuMS0xLjEtMC4yLTEuN2MtMS42LTcuMS03LjMtMTIuOC0xNC4zLTE0NGMtMS42LTAuNC0zLjEtMC41LTQuNi0wLjVjLTEwLjcsMC0xOS40LDguNy0xOS40LDE5LjR2MTMuOWgtOS40Yy02LjgsMC0xMy42LTIuNC0xOC4yLTcuM2MtMC43LTAuNy0xLjYtMS4xLTIuNC0xMWMtMS43LDAtMy4zLDEuMy0zLjMsMy4zYzAsMTYuNCwxMi41LDMxLDI4LjYsMzIuNmMxLjYsMC4yLDMuMS0xLjEsMy4xLTIuOHYtMi44YzAtMS40LTEtMi42LTIuNC0yLjdjLTcuOS0wOS0xNC44LTYuMi0xOC40LTEzLjVjNC4xLDEuNiw4LjUsMi41LDEzLjEsMi41bDE3LjcsMC4xVjMxYzAtNi4xLDUtMTEuMSwxMS4xLTExLjFjMC45LDAsMS44LDAuMSwyLjcsMC4zYzMuOSwwLjksNy4yLDQuMiw4LjEsOC4xQzgxNCwzNC40LDc4LDM5LjEsNzQsNDFsLTQuNywyLjN2MTIuNGwyLjEsMi40YzEuNSwxLjgsMy40LDQuNywzLjUsOC44YzAuMSwzLjQtMS4zLDYuNy0zLjksOS40Yy0zLDMtNyw0LjgtMTEuMiw0LjhINDMuOWMtMSwwLTIuMS0wMS0zLjItMC4yQzI1LjIsNzkuNSwxMi4zLDY4LjEsOC43LDUzLjJoNS4xYy0xLjItMi43LTItNS41LTIuNS04LjNINS40Yy0zLjMsMC02LDMtNS41LDYuM2MyLjksMjAuMywxOS40LDM2LjEsNDAsMzhjMS4zLDAuMSwyLjYsMDIsNCwwLjJoMTUuOGMxMi41LDAsMjMuNy0xMC4yLDIzLjQtMjIuN2MtMC4xLTUuNC0yLjItMTAuMy01LjYtMTQuMXYtNC45SDgwLjRMODAuNCw0Ny43elwiLz4nO1xyXG5cclxuZXhwb3J0IGNvbnN0IHNwbGl0TGlua3NSZWdleCA9IG5ldyBSZWdFeHAoL1xcW1xcWyguKz8pXFxdXFxdL2cpO1xyXG5leHBvcnQgY29uc3QgZHJvcEhlYWRlck9yQWxpYXMgPSBuZXcgUmVnRXhwKC9cXFtcXFsoW14jfF0rKVxcXVxcXS8pO1xyXG5cclxuLyoqIEEgbWV0YS1yZWdleCB0aGF0IHRha2VzIGluIGEgc3RyaW5nIG9mIHRoZSBmb3JtIGAvcmVnZXgvZmxhZ3NgLCBhbmQgcmV0dXJucyAyIGdyb3VwcywgdGhlIGlubmVyIGByZWdleGAsIGFuZCB0aGUgYGZsYWdzYC4gKi9cclxuZXhwb3J0IGNvbnN0IHJlZ05GbGFncyA9IG5ldyBSZWdFeHAoL14uKC4qPylcXFcoXFx3KikkLyk7XHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IFRSQUlMX0xFTkdUSFMgPSBbXHJcbiAgJ1Nob3J0ZXN0JyxcclxuICAnTG9uZ2VzdCcsXHJcbiAgJ0FsbCdcclxuXVxyXG5cclxuZXhwb3J0IGNvbnN0IFZJU1RZUEVTID0gW1xyXG4gIFwiRm9yY2UgRGlyZWN0ZWQgR3JhcGhcIixcclxuICBcIlRpZHkgVHJlZVwiLFxyXG4gIFwiQ2lyY2xlIFBhY2tpbmdcIixcclxuICBcIkVkZ2UgQnVuZGxpbmdcIixcclxuICBcIkFyYyBEaWFncmFtXCIsXHJcbiAgXCJTdW5idXJzdFwiLFxyXG4gIFwiVHJlZSBNYXBcIixcclxuICBcIkljaWNsZVwiLFxyXG4gIFwiUmFkaWFsIFRyZWVcIixcclxuXSBhcyBjb25zdDtcclxuXHJcbi8qIEFsbCA1IHBvc3NpYmxlIGRpcmVjdGlvbnMuICovXHJcbmV4cG9ydCBjb25zdCBESVJFQ1RJT05TID0gW1widXBcIiwgXCJzYW1lXCIsIFwiZG93blwiLCBcIm5leHRcIiwgXCJwcmV2XCJdIGFzIGNvbnN0O1xyXG5cclxuLyoqXHJcbiAqIEFuIGFycm93IGZvciBlYWNoIHtAbGluayBESVJFQ1RJT05TfSB2YWx1ZS5cclxuICovXHJcbmV4cG9ydCBjb25zdCBBUlJPV19ESVJFQ1RJT05TOiB7IFtkaXIgaW4gRGlyZWN0aW9uc106IHN0cmluZyB9ID0ge1xyXG4gIHVwOiBcIlx1MjE5MVwiLFxyXG4gIHNhbWU6IFwiXHUyMTk0XCIsXHJcbiAgZG93bjogXCJcdTIxOTNcIixcclxuICBuZXh0OiBcIlx1MjE5MlwiLFxyXG4gIHByZXY6IFwiXHUyMTkwXCIsXHJcbn07XHJcbmV4cG9ydCBjb25zdCBSRUxBVElPTlMgPSBbXCJQYXJlbnRcIiwgXCJTaWJsaW5nXCIsIFwiQ2hpbGRcIl0gYXMgY29uc3Q7XHJcbmV4cG9ydCBjb25zdCBSRUFsQ0xPU0VEID0gW1wiUmVhbFwiLCBcIkNsb3NlZFwiXTtcclxuZXhwb3J0IGNvbnN0IEFMTFVOTElOS0VEID0gW1wiQWxsXCIsIFwiTm8gVW5saW5rZWRcIl07XHJcbmV4cG9ydCBjb25zdCBDT0RFQkxPQ0tfVFlQRVMgPSBbXCJ0cmVlXCIsIFwianVnZ2xcIl07XHJcbmV4cG9ydCBjb25zdCBDT0RFQkxPQ0tfRklFTERTID0gW1xyXG4gIFwidHlwZVwiLFxyXG4gIFwiZGlyXCIsXHJcbiAgXCJmaWVsZHNcIixcclxuICBcImRlcHRoXCIsXHJcbiAgXCJ0aXRsZVwiLFxyXG4gIFwiZmxhdFwiLFxyXG4gIFwiY29udGVudFwiLFxyXG4gIFwiZnJvbVwiLFxyXG4gIFwiaW1wbGllZFwiLFxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IEpVR0dMX0NCX0RFRkFVTFRTOiBJSnVnZ2xTZXR0aW5ncyA9IHtcclxuICAvLyBAdHMtaWdub3JlXHJcbiAgYW5pbWF0ZUxheW91dDogdHJ1ZSxcclxuICBhdXRvQWRkTm9kZXM6IGZhbHNlLFxyXG4gIGF1dG9FeHBhbmQ6IGZhbHNlLFxyXG4gIGF1dG9ab29tOiBmYWxzZSxcclxuICBjb3JlU3RvcmU6IFwiY29yZVwiLFxyXG4gIGV4cGFuZEluaXRpYWw6IGZhbHNlLFxyXG4gIGZkZ2RMYXlvdXQ6IFwiZDMtZm9yY2VcIixcclxuICBmaWx0ZXI6IFwiXCIsXHJcbiAgaGVpZ2h0OiBcIjc1MHB4XCIsXHJcbiAgaG92ZXJFZGdlczogZmFsc2UsXHJcbiAgbGF5b3V0OiBcImZvcmNlLWRpcmVjdGVkXCIsXHJcbiAgbGltaXQ6IDI1MCxcclxuICBtZXJnZUVkZ2VzOiB0cnVlLFxyXG4gIG1ldGFLZXlIb3ZlcjogdHJ1ZSxcclxuICBtb2RlOiBcIndvcmtzcGFjZVwiLFxyXG4gIG5hdmlnYXRvcjogdHJ1ZSxcclxuICBvcGVuV2l0aFNoaWZ0OiBmYWxzZSxcclxuICByZWFkQ29udGVudDogdHJ1ZSxcclxuICBzdHlsZUdyb3VwczogW10sXHJcbiAgdG9vbGJhcjogdHJ1ZSxcclxuICB3aWR0aDogXCIxMDAlXCIsXHJcbiAgem9vbVNwZWVkOiAxLFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IEpVR0dMX1RSQUlMX0RFRkFVTFRTOiBJSnVnZ2xTZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oXHJcbiAgSlVHR0xfQ0JfREVGQVVMVFMsXHJcbiAge1xyXG4gICAgYW5pbWF0ZUxheW91dDogdHJ1ZSxcclxuICAgIGF1dG9ab29tOiBmYWxzZSxcclxuICAgIGZkZ2RMYXlvdXQ6IFwiZDMtZm9yY2VcIixcclxuICAgIGhlaWdodDogXCIzMDBweFwiLFxyXG4gICAgcmVhZENvbnRlbnQ6IGZhbHNlLFxyXG4gICAgdG9vbGJhcjogZmFsc2UsXHJcbiAgICBuYXZpZ2F0b3I6IGZhbHNlLFxyXG4gIH1cclxuKTtcclxuQ09ERUJMT0NLX0ZJRUxEUy5wdXNoKC4uLk9iamVjdC5rZXlzKEpVR0dMX0NCX0RFRkFVTFRTKSk7XHJcblxyXG5leHBvcnQgY29uc3QgYmxhbmtVc2VySGllciA9ICgpOiBVc2VySGllciA9PiB7XHJcbiAgcmV0dXJuIHsgdXA6IFtdLCBzYW1lOiBbXSwgZG93bjogW10sIG5leHQ6IFtdLCBwcmV2OiBbXSB9O1xyXG59O1xyXG5leHBvcnQgY29uc3QgYmxhbmtEaXJPYmpzID0gKCk6IHsgW2RpciBpbiBEaXJlY3Rpb25zXToge30gfSA9PiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIHVwOiB7fSxcclxuICAgIHNhbWU6IHt9LFxyXG4gICAgZG93bjoge30sXHJcbiAgICBuZXh0OiB7fSxcclxuICAgIHByZXY6IHt9LFxyXG4gIH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYmxhbmtSZWFsTkltcGxpZWQgPSAoKTogUmVhbE5JbXBsaWVkID0+IHtcclxuICByZXR1cm4ge1xyXG4gICAgdXA6IHsgcmVhbHM6IFtdLCBpbXBsaWVkczogW10gfSxcclxuICAgIGRvd246IHsgcmVhbHM6IFtdLCBpbXBsaWVkczogW10gfSxcclxuICAgIHNhbWU6IHsgcmVhbHM6IFtdLCBpbXBsaWVkczogW10gfSxcclxuICAgIG5leHQ6IHsgcmVhbHM6IFtdLCBpbXBsaWVkczogW10gfSxcclxuICAgIHByZXY6IHsgcmVhbHM6IFtdLCBpbXBsaWVkczogW10gfSxcclxuICB9O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IFtcclxuICBCQ19JX0FVTlQsXHJcbiAgQkNfSV9DT1VTSU4sXHJcbiAgQkNfSV9TSUJMSU5HXzEsXHJcbiAgQkNfSV9TSUJMSU5HXzIsXHJcbiAgQkNfSV9SRUZMRVhJVkUsXHJcbiAgQkNfSV9QQVJFTlQsXHJcbl0gPSBbXHJcbiAgICBcIkJDLUF1bnRcIixcclxuICAgIFwiQkMtQ291c2luXCIsXHJcbiAgICBcIkJDLVNpYmxpbmctMVwiLFxyXG4gICAgXCJCQy1TaWJsaW5nLTJcIixcclxuICAgIFwiQkMtUmVmbGV4aXZlXCIsXHJcbiAgICBcIkJDLVBhcmVudFwiLFxyXG4gIF07XHJcblxyXG5leHBvcnQgY29uc3QgW1xyXG4gIEJDX0ZPTERFUl9OT1RFLFxyXG4gIEJDX0ZPTERFUl9OT1RFX1NVQkZPTERFUlMsXHJcbiAgQkNfRk9MREVSX05PVEVfUkVDVVJTSVZFLFxyXG4gIEJDX1RBR19OT1RFLFxyXG4gIEJDX1RBR19OT1RFX0ZJRUxELFxyXG4gIEJDX1RBR19OT1RFX0VYQUNULFxyXG4gIEJDX0xJTktfTk9URSxcclxuICBCQ19UUkFWRVJTRV9OT1RFLFxyXG4gIEJDX1JFR0VYX05PVEUsXHJcbiAgQkNfUkVHRVhfTk9URV9GSUVMRCxcclxuICBCQ19EVl9OT1RFLFxyXG4gIEJDX0RWX05PVEVfRklFTEQsXHJcbiAgQkNfSUdOT1JFLFxyXG4gIEJDX0lHTk9SRV9ERU5EUk9OLFxyXG4gIEJDX0hJREVfVFJBSUwsXHJcbiAgQkNfT1JERVIsXHJcbl0gPSBbXHJcbiAgICBcIkJDLWZvbGRlci1ub3RlXCIsXHJcbiAgICBcIkJDLWZvbGRlci1ub3RlLXN1YmZvbGRlcnNcIixcclxuICAgIFwiQkMtZm9sZGVyLW5vdGUtcmVjdXJzaXZlXCIsXHJcbiAgICBcIkJDLXRhZy1ub3RlXCIsXHJcbiAgICBcIkJDLXRhZy1ub3RlLWZpZWxkXCIsXHJcbiAgICBcIkJDLXRhZy1ub3RlLWV4YWN0XCIsXHJcbiAgICBcIkJDLWxpbmstbm90ZVwiLFxyXG4gICAgXCJCQy10cmF2ZXJzZS1ub3RlXCIsXHJcbiAgICBcIkJDLXJlZ2V4LW5vdGVcIixcclxuICAgIFwiQkMtcmVnZXgtbm90ZS1maWVsZFwiLFxyXG4gICAgXCJCQy1kYXRhdmlldy1ub3RlXCIsXHJcbiAgICBcIkJDLWRhdGF2aWV3LW5vdGUtZmllbGRcIixcclxuICAgIFwiQkMtaWdub3JlXCIsXHJcbiAgICBcIkJDLWlnbm9yZS1kZW5kcm9uXCIsXHJcbiAgICBcIkJDLWhpZGUtdHJhaWxcIixcclxuICAgIFwiQkMtb3JkZXJcIixcclxuICBdO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJDX0ZJRUxEU19JTkZPID0gW1xyXG4gIHtcclxuICAgIGZpZWxkOiBCQ19GT0xERVJfTk9URSxcclxuICAgIGRlc2M6IFwiU2V0IHRoaXMgbm90ZSBhcyBhIEJyZWFkY3J1bWJzIGZvbGRlci1ub3RlLiBBbGwgb3RoZXIgbm90ZXMgaW4gdGhpcyBmb2xkZXIgd2lsbCBiZSBhZGRlZCB0byB0aGUgZ3JhcGggd2l0aCB0aGUgZmllbGQgbmFtZSBzcGVjaWZpZWQgaW4gdGhpcyBrZXkncyB2YWx1ZVwiLFxyXG4gICAgYWZ0ZXJZYW1sOiBcIjogXCIsXHJcbiAgICBhZnRlcklubGluZTogXCI6OiBcIixcclxuICAgIGFsdDogdHJ1ZSxcclxuICB9LFxyXG4gIHtcclxuICAgIGZpZWxkOiBCQ19GT0xERVJfTk9URV9TVUJGT0xERVJTLFxyXG4gICAgZGVzYzogXCJMaW5rIHRvIG5vdGVzIGluIHN1YmZvbGRlcnMgd2l0aCB0aGUgZ2l2ZW4gZmllbGQuXCIsXHJcbiAgICBhZnRlcllhbWw6IFwiOiBcIixcclxuICAgIGFmdGVySW5saW5lOiBcIjo6IFwiLFxyXG4gICAgYWx0OiBmYWxzZSxcclxuICB9LFxyXG4gIHtcclxuICAgIGZpZWxkOiBCQ19GT0xERVJfTk9URV9SRUNVUlNJVkUsXHJcbiAgICBkZXNjOiBcIlJlY3Vyc2l2ZWx5IGFkZCBub3RlcyBpbiBzdWJmb2xkZXJzIHRvIHRoZSBmb2xkZXJub3RlIG9mIF90aGF0XyBzdWJmb2xkZXIuXCIsXHJcbiAgICBhZnRlcllhbWw6IFwiOiB0cnVlXCIsXHJcbiAgICBhZnRlcklubGluZTogXCI6OiB0cnVlXCIsXHJcbiAgICBhbHQ6IGZhbHNlLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgZmllbGQ6IEJDX1RBR19OT1RFLFxyXG4gICAgZGVzYzogXCJTZXQgdGhpcyBub3RlIGFzIGEgQnJlYWRjcnVtYnMgdGFnLW5vdGUuIEFsbCBvdGhlciBub3RlcyB3aXRoIHRoaXMgdGFnIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGdyYXBoIHVzaW5nIHRoZSBkZWZhdWx0IGZpZWxkTmFtZSBzcGVjaWZpZWQgaW4gYFNldHRpbmdzID4gQWx0ZXJuYXRpdmUgSGllcmFyY2hpZXMgPiBUYWcgTm90ZXMgPiBEZWZhdWx0IEZpZWxkYCwgb3IgdXNpbmcgdGhlIGZpZWxkTmFtZSB5b3Ugc3BlY2lmeSB3aXRoIGBCQy10YWctbm90ZS1maWVsZDogZmllbGROYW1lYFwiLFxyXG4gICAgYWZ0ZXJZYW1sOiBcIjogJyNcIixcclxuICAgIGFmdGVySW5saW5lOiBcIjo6ICNcIixcclxuICAgIGFsdDogdHJ1ZSxcclxuICB9LFxyXG4gIHtcclxuICAgIGZpZWxkOiBCQ19UQUdfTk9URV9GSUVMRCxcclxuICAgIGRlc2M6IFwiTWFudWFsbHkgY2hvb3NlIHRoZSBmaWVsZCBmb3IgdGhpcyB0YWctbm90ZSB0byB1c2VcIixcclxuICAgIGFmdGVyWWFtbDogXCI6IFwiLFxyXG4gICAgYWZ0ZXJJbmxpbmU6IFwiOjogXCIsXHJcbiAgICBhbHQ6IGZhbHNlLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgZmllbGQ6IEJDX1RBR19OT1RFX0VYQUNULFxyXG4gICAgZGVzYzogXCJPbmx5IGxvb2sgZm9yIG5vdGVzIHdpdGggdGhlIGV4YWN0IHRhZy4gaS5lLiBgI0FgIHdvbid0IG1hdGNoIGAjQS9CYFwiLFxyXG4gICAgYWZ0ZXJZYW1sOiBcIjogdHJ1ZVwiLFxyXG4gICAgYWZ0ZXJJbmxpbmU6IFwiOjogdHJ1ZVwiLFxyXG4gICAgYWx0OiBmYWxzZSxcclxuICB9LFxyXG4gIHtcclxuICAgIGZpZWxkOiBCQ19MSU5LX05PVEUsXHJcbiAgICBkZXNjOiBcIlNldCB0aGlzIG5vdGUgYXMgYSBCcmVhZGNydW1icyBsaW5rLW5vdGUuIEFsbCBsaW5rcyBsZWF2aW5nIHRoaXMgbm90ZSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBncmFwaCB3aXRoIHRoZSBmaWVsZCBuYW1lIHNwZWNpZmllZCBpbiB0aGlzIGtleSdzIHZhbHVlLlwiLFxyXG4gICAgYWZ0ZXJZYW1sOiBcIjogXCIsXHJcbiAgICBhZnRlcklubGluZTogXCI6OiBcIixcclxuICAgIGFsdDogdHJ1ZSxcclxuICB9LFxyXG4gIHtcclxuICAgIGZpZWxkOiBCQ19UUkFWRVJTRV9OT1RFLFxyXG4gICAgZGVzYzogXCJTZXQgdGhpcyBub3RlIGFzIGEgQnJlYWRjcnVtYnMgdHJhdmVyc2Utbm90ZS4gU3RhcnRpbmcgZnJvbSB0aGlzIG5vdGUsIHRoZSBPYnNpZGlhbiBncmFwaCB3aWxsIGJlIHRyYXZlcnNlZCBpbiBkZXB0aC1maXJzdCBvcmRlciwgYW5kIGFsbCBub3RlcyBhbG9uZyB0aGUgd2F5IHdpbGwgYmUgYWRkZWQgdG8gdGhlIEJDIGdyYXBoIHVzaW5nIHRoZSBmaWVsZE5hbWUgeW91IHNwZWNpZnlcIixcclxuICAgIGFmdGVyWWFtbDogXCI6IFwiLFxyXG4gICAgYWZ0ZXJJbmxpbmU6IFwiOjogXCIsXHJcbiAgICBhbHQ6IHRydWUsXHJcbiAgfSxcclxuICB7XHJcbiAgICBmaWVsZDogQkNfUkVHRVhfTk9URSxcclxuICAgIGRlc2M6IFwiU2V0IHRoaXMgbm90ZSBhcyBhIEJyZWFkY3J1bWJzIHJlZ2V4LW5vdGUuIFRoZSB2YWx1ZSBvZiB0aGlzIGZpZWxkIGlzIGEgcmVndWxhciBleHByZXNzaW9uIChvZiB0aGUgZm9ybSAnL3JlZ2V4L2ZsYWdzJykuIEFsbCBub3RlIG5hbWVzIHRoYXQgbWF0Y2ggdGhlIHJlZ2V4IHdpbGwgYmUgYWRkZWQgdG8gdGhlIEJDIGdyYXBoIHVzaW5nIHRoZSBkZWZhdWx0IGZpZWxkTmFtZSBzcGVjaWZpZWQgaW4gYFNldHRpbmdzID4gQWx0ZXJuYXRpdmUgSGllcmFyY2hpZXMgPiBSZWdleCBOb3RlcyA+IERlZmF1bHQgRmllbGRgLCBvciB1c2luZyB0aGUgZmllbGROYW1lIHlvdSBzcGVjaWZ5IGluICdCQy1yZWdleC1ub3RlLWZpZWxkJy5cIixcclxuICAgIGFmdGVyWWFtbDogXCI6ICcvXCIsXHJcbiAgICBhZnRlcklubGluZTogXCI6OiAvXCIsXHJcbiAgICBhbHQ6IHRydWUsXHJcbiAgfSxcclxuICB7XHJcbiAgICBmaWVsZDogQkNfUkVHRVhfTk9URV9GSUVMRCxcclxuICAgIGRlc2M6IFwiTWFudWFsbHkgY2hvb3NlIHRoZSBmaWVsZCBmb3IgdGhpcyByZWdleC1ub3RlIHRvIHVzZVwiLFxyXG4gICAgYWZ0ZXJZYW1sOiBcIjogXCIsXHJcbiAgICBhZnRlcklubGluZTogXCI6OiBcIixcclxuICAgIGFsdDogZmFsc2UsXHJcbiAgfSxcclxuICB7XHJcbiAgICBmaWVsZDogQkNfRFZfTk9URSxcclxuICAgIGRlc2M6IFwiU2V0IHRoaXMgbm90ZSBhcyBhIEJyZWFkY3J1bWJzIERhdGF2aWV3LW5vdGUuIFRoZSB2YWx1ZSBvZiB0aGlzIGZpZWxkIGlzIGEgRGF0YXZpZXcgYGZyb21gIHF1ZXJ5LiBBbGwgbm90ZXMgdGhhdCBtYXRjaCB0aGUgcXVlcnkgd2lsbCBiZSBhZGRlZCB0byB0aGUgQkMgZ3JhcGggdXNpbmcgdGhlIGRlZmF1bHQgZmllbGROYW1lIHNwZWNpZmllZCBpbiBgU2V0dGluZ3MgPiBBbHRlcm5hdGl2ZSBIaWVyYXJjaGllcyA+IERhdGF2aWV3IE5vdGVzID4gRGVmYXVsdCBGaWVsZGAsIG9yIHVzaW5nIHRoZSBmaWVsZE5hbWUgeW91IHNwZWNpZnkgaW4gJ0JDLWRhdGF2aWV3LW5vdGUtZmllbGQnLlwiLFxyXG4gICAgYWZ0ZXJZYW1sOiBcIjogJ1wiLFxyXG4gICAgYWZ0ZXJJbmxpbmU6IFwiOjogXCIsXHJcbiAgICBhbHQ6IHRydWUsXHJcbiAgfSxcclxuICB7XHJcbiAgICBmaWVsZDogQkNfRFZfTk9URV9GSUVMRCxcclxuICAgIGRlc2M6IFwiTWFudWFsbHkgY2hvb3NlIHRoZSBmaWVsZCBmb3IgdGhpcyBEYXRhdmlldy1ub3RlIHRvIHVzZVwiLFxyXG4gICAgYWZ0ZXJZYW1sOiBcIjogXCIsXHJcbiAgICBhZnRlcklubGluZTogXCI6OiBcIixcclxuICAgIGFsdDogZmFsc2UsXHJcbiAgfSxcclxuICB7XHJcbiAgICBmaWVsZDogQkNfSUdOT1JFLFxyXG4gICAgZGVzYzogXCJUZWxscyBCcmVhZGNydW1icyB0byBpZ25vcmUgYSBub3RlIGZyb20gaXRzIGluZGV4IGVudGlyZWx5LiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byB1c2UgQnJlYWRjcnVtYnMgdG8gaW5kZXggbm90ZXMsIGJ1dCB5b3UgZG9uJ3Qgd2FudCB0byBzaG93IHRoZW0gaW4gdGhlIGdyYXBoLlwiLFxyXG4gICAgYWZ0ZXJZYW1sOiBcIjogdHJ1ZVwiLFxyXG4gICAgYWZ0ZXJJbmxpbmU6IFwiOjogdHJ1ZVwiLFxyXG4gICAgYWx0OiBmYWxzZSxcclxuICB9LFxyXG4gIHtcclxuICAgIGZpZWxkOiBCQ19JR05PUkVfREVORFJPTixcclxuICAgIGRlc2M6IFwiVGVsbHMgQnJlYWRjcnVtYnMgdG8gbm90IHRyZWF0IHRoaXMgbm90ZSBhcyBhIGRlbmRyb24gbm90ZSAob25seSB1c2VmdWwgaWYgdGhlIG5vdGUgbmFtZSBoYXMgeW91IGRlbmRyb24gc3BsaXR0ZXIgaW4gaXQsIHVzdWFsbHkgYSBwZXJpb2QgYC5gKS5cIixcclxuICAgIGFmdGVyWWFtbDogXCI6IHRydWVcIixcclxuICAgIGFmdGVySW5saW5lOiBcIjo6IHRydWVcIixcclxuICAgIGFsdDogZmFsc2UsXHJcbiAgfSxcclxuICB7XHJcbiAgICBmaWVsZDogQkNfSElERV9UUkFJTCxcclxuICAgIGRlc2M6IFwiRG9uJ3Qgc2hvdyB0aGUgdHJhaWwgaW4gdGhpcyBub3RlXCIsXHJcbiAgICBhZnRlcllhbWw6IFwiOiB0cnVlXCIsXHJcbiAgICBhZnRlcklubGluZTogXCI6OiB0cnVlXCIsXHJcbiAgICBhbHQ6IGZhbHNlLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgZmllbGQ6IEJDX09SREVSLFxyXG4gICAgZGVzYzogXCJTZXQgdGhlIG9yZGVyIG9mIHRoaXMgbm90ZSBpbiB0aGUgTWF0cml4IHZpZXcuIEEgbG93ZXIgdmFsdWUgcGxhY2VzIHRoaXMgbm90ZSBoaWdoZXIgaW4gdGhlIG9yZGVyLlwiLFxyXG4gICAgYWZ0ZXJZYW1sOiBcIjogXCIsXHJcbiAgICBhZnRlcklubGluZTogXCI6OiBcIixcclxuICAgIGFsdDogZmFsc2UsXHJcbiAgfSxcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBCQ19BTFRTID0gQkNfRklFTERTX0lORk8uZmlsdGVyKChmKSA9PiBmLmFsdCkubWFwKChmKSA9PiBmLmZpZWxkKTtcclxuXHJcbmV4cG9ydCBjb25zdCBJTExFR0FMX0ZJTEVOQU1FX0NIQVJTID0gW1xyXG4gIFwiXFxcXFwiLFxyXG4gIFwiL1wiLFxyXG4gIFwiOlwiLFxyXG4gIFwiKlwiLFxyXG4gIFwiP1wiLFxyXG4gICdcIicsXHJcbiAgXCI8XCIsXHJcbiAgXCI+XCIsXHJcbiAgXCJ8XCIsXHJcbl07XHJcblxyXG5leHBvcnQgY29uc3QgREFUQVZJRVdfTUlTU0lORyA9XHJcbiAgXCJUaGUgRGF0YXZpZXcgcGx1Z2luIG11c3QgYmUgaW5zdGFsbGVkIGZvciB0aGlzIHRvIHdvcmtcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBBUElfTkFNRSA9IFwiQkNBUElcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFVFRJTkdTOiBCQ1NldHRpbmdzID0ge1xyXG4gIGFkZERlbmRyb25Ob3RlczogZmFsc2UsXHJcbiAgYWRkRGF0ZU5vdGVzOiBmYWxzZSxcclxuICBhbGlhc2VzSW5JbmRleDogZmFsc2UsXHJcbiAgYWxwaGFTb3J0QXNjOiB0cnVlLFxyXG4gIGFsdExpbmtGaWVsZHM6IFtdLFxyXG4gIENTVlBhdGhzOiBcIlwiLFxyXG4gIGNyZWF0ZUluZGV4SW5kZW50OiAnICAnLFxyXG4gIGRhdGVGb3JtYXQ6IFwiWVlZWS1NTS1ERFwiLFxyXG4gIGRhdGVOb3RlRm9ybWF0OiBcInl5eXktTU0tZGRcIixcclxuICBkYXRlTm90ZUZpZWxkOiBcIm5leHRcIixcclxuICBkYXRhdmlld05vdGVGaWVsZDogXCJ1cFwiLFxyXG4gIGRhdGVOb3RlQWRkTW9udGg6IFwiXCIsXHJcbiAgZGF0ZU5vdGVBZGRZZWFyOiBcIlwiLFxyXG4gIGRlYnVnTW9kZTogXCJXQVJOXCIsXHJcbiAgZGVuZHJvbk5vdGVEZWxpbWl0ZXI6IFwiLlwiLFxyXG4gIGRlbmRyb25Ob3RlRmllbGQ6IFwidXBcIixcclxuICBkdldhaXRUaW1lOiA1MDAwLFxyXG4gIGVuYWJsZUFscGhhU29ydDogdHJ1ZSxcclxuICBlbmFibGVSZWxhdGlvblN1Z2dlc3RvcjogZmFsc2UsXHJcbiAgZmllbGRTdWdnZXN0b3I6IHRydWUsXHJcbiAgZmlsdGVySW1wbGllZFNpYmxpbmdzT2ZEaWZmZXJlbnRUeXBlczogZmFsc2UsXHJcbiAganVnZ2xMYXlvdXQ6IFwiaGllcmFyY2h5XCIsXHJcbiAgbGltaXRXcml0ZUJDQ2hlY2tib3hlczogW10sXHJcbiAgQ0hFQ0tCT1hfU1RBVEVTX09WRVJXUklUVEVOOiBmYWxzZSxcclxuICBncmlkRGVmYXVsdERlcHRoOiAyNSxcclxuICBoaWVyYXJjaHlOb3RlczogW1wiXCJdLFxyXG4gIGhpZXJhcmNoeU5vdGVJc1BhcmVudDogZmFsc2UsXHJcbiAgSE5VcEZpZWxkOiBcIlwiLFxyXG4gIGluZGV4Tm90ZXM6IFtcIlwiXSxcclxuICBuYW1pbmdTeXN0ZW1GaWVsZDogXCJcIixcclxuICBuYW1pbmdTeXN0ZW1SZWdleDogXCJcIixcclxuICBuYW1pbmdTeXN0ZW1TcGxpdDogXCIuXCIsXHJcbiAgbmFtaW5nU3lzdGVtRW5kc1dpdGhEZWxpbWl0ZXI6IGZhbHNlLFxyXG4gIHJlZnJlc2hPbk5vdGVDaGFuZ2U6IGZhbHNlLFxyXG4gIHVzZUFsbE1ldGFkYXRhOiB0cnVlLFxyXG4gIG9wZW5NYXRyaXhPbkxvYWQ6IHRydWUsXHJcbiAgb3BlbkR1Y2tPbkxvYWQ6IGZhbHNlLFxyXG4gIG9wZW5Eb3duT25Mb2FkOiB0cnVlLFxyXG4gIHBhcnNlSnVnZ2xMaW5rc1dpdGhvdXRKdWdnbDogZmFsc2UsXHJcbiAgc2hvd05hbWVPclR5cGU6IHRydWUsXHJcbiAgc2hvd1JlbGF0aW9uVHlwZTogdHJ1ZSxcclxuICByZWdleE5vdGVGaWVsZDogXCJcIixcclxuICByZWxTdWdnZXN0b3JUcmlnZ2VyOiBcIlxcXFxcIixcclxuICBybExlYWY6IHRydWUsXHJcbiAgc2hvd0FsbFBhdGhzSWZOb25lVG9JbmRleE5vdGU6IGZhbHNlLFxyXG4gIHNob3dBbGxBbGlhc2VzOiB0cnVlLFxyXG4gIHNob3dCQ3M6IHRydWUsXHJcbiAgc2hvd0JDc0luRWRpdExQTW9kZTogZmFsc2UsXHJcbiAgc2hvd1JlZnJlc2hOb3RpY2U6IHRydWUsXHJcbiAgc2hvd0ltcGxpZWRSZWxhdGlvbnM6IHRydWUsXHJcbiAgc2hvd1RyYWlsOiB0cnVlLFxyXG4gIHNob3dHcmlkOiB0cnVlLFxyXG4gIHNob3dKdWdnbDogZmFsc2UsXHJcbiAgc2hvd1ByZXZOZXh0OiB0cnVlLFxyXG4gIHNvcnRCeU5hbWVTaG93QWxpYXM6IGZhbHNlLFxyXG4gIHNxdWFyZURpcmVjdGlvbnNPcmRlcjogWzAsIDEsIDIsIDMsIDRdLFxyXG4gIGxpbWl0VHJhaWxDaGVja2JveGVzOiBbXSxcclxuICBsaW1pdEp1bXBUb0ZpcnN0RmllbGRzOiBbXSxcclxuICBzaG93QWxsOiAnQWxsJyxcclxuICBub1BhdGhNZXNzYWdlOiBgVGhpcyBub3RlIGhhcyBubyByZWFsIG9yIGltcGxpZWQgcGFyZW50c2AsXHJcbiAgdGFnTm90ZUZpZWxkOiBcIlwiLFxyXG4gIHRocmVhZEludG9OZXdQYW5lOiBmYWxzZSxcclxuICB0aHJlYWRpbmdUZW1wbGF0ZTogXCJ7e2ZpZWxkfX0gb2Yge3tjdXJyZW50fX1cIixcclxuICB0aHJlYWRpbmdEaXJUZW1wbGF0ZXM6IHsgdXA6IFwiXCIsIHNhbWU6IFwiXCIsIGRvd246IFwiXCIsIG5leHQ6IFwiXCIsIHByZXY6IFwiXCIgfSxcclxuICB0aHJlYWRVbmRlckN1cnNvcjogZmFsc2UsXHJcbiAgdHJhaWxTZXBlcmF0b3I6IFwiXHUyMTkyXCIsXHJcbiAgdHJlYXRDdXJyTm9kZUFzSW1wbGllZFNpYmxpbmc6IGZhbHNlLFxyXG4gIHRyaW1EZW5kcm9uTm90ZXM6IGZhbHNlLFxyXG4gIHJlc3BlY3RSZWFkYWJsZUxpbmVMZW5ndGg6IHRydWUsXHJcbiAgdXNlckhpZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHVwOiBbXCJ1cFwiXSxcclxuICAgICAgc2FtZTogW1wic2FtZVwiXSxcclxuICAgICAgZG93bjogW1wiZG93blwiXSxcclxuICAgICAgbmV4dDogW1wibmV4dFwiXSxcclxuICAgICAgcHJldjogW1wicHJldlwiXSxcclxuICAgIH0sXHJcbiAgXSxcclxuICB3cml0ZUJDc0lubGluZTogZmFsc2UsXHJcbiAgc2hvd1dyaXRlQWxsQkNzQ21kOiBmYWxzZSxcclxuICB2aXNHcmFwaDogXCJGb3JjZSBEaXJlY3RlZCBHcmFwaFwiLFxyXG4gIHZpc1JlbGF0aW9uOiBcIlBhcmVudFwiLFxyXG4gIHZpc0Nsb3NlZDogXCJSZWFsXCIsXHJcbiAgdmlzQWxsOiBcIkFsbFwiLFxyXG4gIHdpa2lsaW5rSW5kZXg6IHRydWUsXHJcbiAgaW1wbGllZFJlbGF0aW9uczoge1xyXG4gICAgc2libGluZ0lkZW50aXR5OiBmYWxzZSxcclxuICAgIHNhbWVQYXJlbnRJc1NpYmxpbmc6IHRydWUsXHJcbiAgICBzaWJsaW5nc1NpYmxpbmdJc1NpYmxpbmc6IGZhbHNlLFxyXG4gICAgc2libGluZ3NQYXJlbnRJc1BhcmVudDogZmFsc2UsXHJcbiAgICBwYXJlbnRzU2libGluZ3NJc1BhcmVudHM6IGZhbHNlLFxyXG4gICAgcGFyZW50c1BhcmVudHNJc1BhcmVudDogZmFsc2UsXHJcbiAgICBjb3VzaW5zSXNTaWJsaW5nOiBmYWxzZSxcclxuICB9LFxyXG4gIHJlZnJlc2hPbk5vdGVTYXZlOiBmYWxzZSxcclxuICBzaG93VXBJbkp1Z2dsOiBmYWxzZVxyXG59O1xyXG4iLCAiaW1wb3J0IHsgZXJyb3IsIGluZm8gfSBmcm9tIFwibG9nbGV2ZWxcIjtcclxuaW1wb3J0IHsgSXRlbVZpZXcsIFRGaWxlLCBXb3Jrc3BhY2VMZWFmIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IERlYnVnZ2VyIH0gZnJvbSBcInNyYy9EZWJ1Z2dlclwiO1xyXG5pbXBvcnQgTWF0cml4IGZyb20gXCIuLi9Db21wb25lbnRzL01hdHJpeC5zdmVsdGVcIjtcclxuaW1wb3J0IHtcclxuICBBUlJPV19ESVJFQ1RJT05TLFxyXG4gIGJsYW5rUmVhbE5JbXBsaWVkLFxyXG4gIE1BVFJJWF9WSUVXLFxyXG4gIFRSQUlMX0lDT04sXHJcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgdHlwZSB7XHJcbiAgRGlyZWN0aW9ucyxcclxuICBFZGdlQXR0cixcclxuICBpbnRlcm5hbExpbmtPYmosXHJcbiAgU3F1YXJlSXRlbSxcclxuICBTcXVhcmVQcm9wcyxcclxuICBVc2VySGllcixcclxufSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG5pbXBvcnQgeyBzcGxpdEFuZFRyaW0gfSBmcm9tIFwiLi4vVXRpbHMvZ2VuZXJhbFV0aWxzXCI7XHJcbmltcG9ydCB7IGdldE9wcERpciwgZ2V0T3BwRmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXREVkFwaSwgZ2V0Q3VyckZpbGUsIGxpbmtDbGFzcyB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWF0cml4TmVpZ2hib3VycyhwbHVnaW46IEJDUGx1Z2luLCBjdXJyTm9kZTogc3RyaW5nKSB7XHJcbiAgY29uc3QgeyBjbG9zZWRHLCBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgdXNlckhpZXJzIH0gPSBzZXR0aW5ncztcclxuICBjb25zdCBuZWlnaGJvdXJzID0gYmxhbmtSZWFsTkltcGxpZWQoKTtcclxuICBpZiAoIWNsb3NlZEcpIHJldHVybiBuZWlnaGJvdXJzO1xyXG5cclxuICBjbG9zZWRHLmZvckVhY2hFZGdlKGN1cnJOb2RlLCAoaywgYSwgcywgdCkgPT4ge1xyXG4gICAgY29uc3QgeyBmaWVsZCwgZGlyLCBpbXBsaWVkIH0gPSBhIGFzIEVkZ2VBdHRyO1xyXG5cclxuICAgIGlmIChzID09PSBjdXJyTm9kZSkge1xyXG4gICAgICBuZWlnaGJvdXJzW2Rpcl0ucmVhbHMucHVzaCh7IHRvOiB0LCBmaWVsZCwgaW1wbGllZCB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5laWdoYm91cnNbZ2V0T3BwRGlyKGRpcildLmltcGxpZWRzLnB1c2goe1xyXG4gICAgICAgIHRvOiBzLFxyXG4gICAgICAgIGZpZWxkOiBnZXRPcHBGaWVsZHModXNlckhpZXJzLCBmaWVsZCwgZGlyKVswXSxcclxuICAgICAgICBpbXBsaWVkLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIG5laWdoYm91cnM7XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWF0cml4VmlldyBleHRlbmRzIEl0ZW1WaWV3IHtcclxuICBwbHVnaW46IEJDUGx1Z2luO1xyXG4gIHByaXZhdGUgdmlldzogTWF0cml4O1xyXG4gIGRiOiBEZWJ1Z2dlcjtcclxuXHJcbiAgY29uc3RydWN0b3IobGVhZjogV29ya3NwYWNlTGVhZiwgcGx1Z2luOiBCQ1BsdWdpbikge1xyXG4gICAgc3VwZXIobGVhZik7XHJcbiAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcclxuICAgIHRoaXMuZGIgPSBuZXcgRGVidWdnZXIocGx1Z2luKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9ubG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHN1cGVyLm9ubG9hZCgpO1xyXG4gICAgY29uc3QgeyBwbHVnaW4gfSA9IHRoaXM7XHJcblxyXG4gICAgYXBwLndvcmtzcGFjZS5vbkxheW91dFJlYWR5KCgpID0+IHtcclxuICAgICAgc2V0VGltZW91dChcclxuICAgICAgICBhc3luYyAoKSA9PiBhd2FpdCB0aGlzLmRyYXcoKSxcclxuICAgICAgICBhcHAucGx1Z2lucy5wbHVnaW5zLmRhdGF2aWV3XHJcbiAgICAgICAgICA/IGFwcC5wbHVnaW5zLnBsdWdpbnMuZGF0YXZpZXcuYXBpXHJcbiAgICAgICAgICAgID8gMVxyXG4gICAgICAgICAgICA6IHBsdWdpbi5zZXR0aW5ncy5kdldhaXRUaW1lXHJcbiAgICAgICAgICA6IDMwMDBcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Vmlld1R5cGUoKSB7XHJcbiAgICByZXR1cm4gTUFUUklYX1ZJRVc7XHJcbiAgfVxyXG4gIGdldERpc3BsYXlUZXh0KCkge1xyXG4gICAgcmV0dXJuIFwiQnJlYWRjcnVtYnMgTWF0cml4XCI7XHJcbiAgfVxyXG4gIGljb24gPSBUUkFJTF9JQ09OO1xyXG5cclxuICBhc3luYyBvbk9wZW4oKTogUHJvbWlzZTx2b2lkPiB7IH1cclxuXHJcbiAgb25DbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudmlldz8uJGRlc3Ryb3koKTtcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICB9XHJcblxyXG4gIGdldEFsdChub2RlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGNvbnN0IHsgcGx1Z2luIH0gPSB0aGlzO1xyXG4gICAgY29uc3QgeyBhbHRMaW5rRmllbGRzLCBzaG93QWxsQWxpYXNlcyB9ID0gcGx1Z2luLnNldHRpbmdzO1xyXG4gICAgaWYgKCFhbHRMaW5rRmllbGRzLmxlbmd0aCkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgLy8gZHYgRmlyc3RcclxuICAgIGNvbnN0IGR2ID0gZ2V0RFZBcGkocGx1Z2luKTtcclxuICAgIGlmIChkdikge1xyXG4gICAgICBjb25zdCBwYWdlID0gZHYucGFnZShub2RlKTtcclxuICAgICAgaWYgKCFwYWdlKSByZXR1cm4gbnVsbDtcclxuICAgICAgZm9yIChjb25zdCBhbHQgb2YgYWx0TGlua0ZpZWxkcykge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gcGFnZVthbHRdIGFzIHN0cmluZztcclxuXHJcbiAgICAgICAgY29uc3QgYXJyOiBzdHJpbmdbXSA9XHJcbiAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyBzcGxpdEFuZFRyaW0odmFsdWUpIDogdmFsdWU7XHJcbiAgICAgICAgaWYgKHZhbHVlKSByZXR1cm4gc2hvd0FsbEFsaWFzZXMgPyBhcnIuam9pbihcIiwgXCIpIDogYXJyWzBdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBmaWxlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Rmlyc3RMaW5rcGF0aERlc3Qobm9kZSwgXCJcIik7XHJcbiAgICAgIGlmIChmaWxlKSB7XHJcbiAgICAgICAgY29uc3QgeyBmcm9udG1hdHRlciB9ID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0RmlsZUNhY2hlKGZpbGUpO1xyXG4gICAgICAgIGZvciAoY29uc3QgYWx0RmllbGQgb2YgYWx0TGlua0ZpZWxkcykge1xyXG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBmcm9udG1hdHRlcj8uW2FsdEZpZWxkXTtcclxuXHJcbiAgICAgICAgICBjb25zdCBhcnI6IHN0cmluZ1tdID1cclxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gc3BsaXRBbmRUcmltKHZhbHVlKSA6IHZhbHVlO1xyXG4gICAgICAgICAgaWYgKHZhbHVlKSByZXR1cm4gc2hvd0FsbEFsaWFzZXMgPyBhcnIuam9pbihcIiwgXCIpIDogYXJyWzBdO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9JbnRlcm5hbExpbmtPYmogPSAoXHJcbiAgICB0bzogc3RyaW5nLFxyXG4gICAgcmVhbFEgPSB0cnVlLFxyXG4gICAgcGFyZW50OiBzdHJpbmcgfCBudWxsLFxyXG4gICAgaW1wbGllZD86IHN0cmluZ1xyXG4gICk6IGludGVybmFsTGlua09iaiA9PiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0byxcclxuICAgICAgY2xzOiBsaW5rQ2xhc3ModG8sIHJlYWxRKSxcclxuICAgICAgYWx0OiB0aGlzLmdldEFsdCh0byksXHJcbiAgICAgIG9yZGVyOiB0aGlzLmdldE9yZGVyKHRvKSxcclxuICAgICAgcGFyZW50LFxyXG4gICAgICBpbXBsaWVkLFxyXG4gICAgfTtcclxuICB9O1xyXG5cclxuICAvLyBBTkNIT1IgUmVtb3ZlIGR1cGxpY2F0ZSBpbXBsaWVkIGxpbmtzXHJcblxyXG4gIHJlbW92ZUR1cGxpY2F0ZUltcGxpZWQoXHJcbiAgICByZWFsczogaW50ZXJuYWxMaW5rT2JqW10sXHJcbiAgICBpbXBsaWVkczogaW50ZXJuYWxMaW5rT2JqW11cclxuICApOiBpbnRlcm5hbExpbmtPYmpbXSB7XHJcbiAgICBjb25zdCByZWFsVG9zID0gcmVhbHMubWFwKChyZWFsKSA9PiByZWFsLnRvKTtcclxuICAgIHJldHVybiBpbXBsaWVkcy5maWx0ZXIoKGltcGxpZWQpID0+ICFyZWFsVG9zLmluY2x1ZGVzKGltcGxpZWQudG8pKTtcclxuICB9XHJcblxyXG4gIGdldE9yZGVyID0gKG5vZGU6IHN0cmluZykgPT5cclxuICAgIE51bWJlci5wYXJzZUludCh0aGlzLnBsdWdpbi5tYWluRy5nZXROb2RlQXR0cmlidXRlKG5vZGUsIFwib3JkZXJcIikpO1xyXG5cclxuICBzb3J0SXRlbXNBbHBoYSA9IChhOiBpbnRlcm5hbExpbmtPYmosIGI6IGludGVybmFsTGlua09iaikgPT4ge1xyXG4gICAgY29uc3QgeyBzb3J0QnlOYW1lU2hvd0FsaWFzLCBhbHBoYVNvcnRBc2MgfSA9IHRoaXMucGx1Z2luLnNldHRpbmdzO1xyXG4gICAgY29uc3QgYVRvU29ydCA9IChzb3J0QnlOYW1lU2hvd0FsaWFzID8gYS50byA6IGEuYWx0ID8/IGEudG8pLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zdCBiVG9Tb3J0ID0gKHNvcnRCeU5hbWVTaG93QWxpYXMgPyBiLnRvIDogYi5hbHQgPz8gYi50bykudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICBjb25zdCBsZXNzID0gYWxwaGFTb3J0QXNjID8gLTEgOiAxO1xyXG4gICAgY29uc3QgbW9yZSA9IGFscGhhU29ydEFzYyA/IDEgOiAtMTtcclxuXHJcbiAgICByZXR1cm4gYVRvU29ydCA8IGJUb1NvcnQgPyBsZXNzIDogbW9yZTtcclxuICB9O1xyXG5cclxuICBnZXRIaWVyU3F1YXJlcyh1c2VySGllcnM6IFVzZXJIaWVyW10sIGN1cnJGaWxlOiBURmlsZSk6IFNxdWFyZVByb3BzW11bXSB7XHJcbiAgICBjb25zdCB7IHBsdWdpbiB9ID0gdGhpcztcclxuICAgIGNvbnN0IHsgbWFpbkcsIHNldHRpbmdzIH0gPSBwbHVnaW47XHJcbiAgICBjb25zdCB7IGVuYWJsZUFscGhhU29ydCwgc3F1YXJlRGlyZWN0aW9uc09yZGVyIH0gPSBzZXR0aW5ncztcclxuICAgIGlmICghbWFpbkcpIHJldHVybiBbXTtcclxuXHJcbiAgICBjb25zdCB7IGJhc2VuYW1lIH0gPSBjdXJyRmlsZTtcclxuICAgIGlmICghbWFpbkcuaGFzTm9kZShiYXNlbmFtZSkpIHJldHVybiBbXTtcclxuICAgIGNvbnN0IHJlYWxzbkltcGxpZWRzID0gZ2V0TWF0cml4TmVpZ2hib3VycyhwbHVnaW4sIGJhc2VuYW1lKTtcclxuXHJcbiAgICByZXR1cm4gdXNlckhpZXJzLm1hcCgoaGllcikgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZFJlYWxOSW1wbGllZCA9IGJsYW5rUmVhbE5JbXBsaWVkKCkgYXMgdW5rbm93biBhcyB7XHJcbiAgICAgICAgW2RpciBpbiBEaXJlY3Rpb25zXToge1xyXG4gICAgICAgICAgcmVhbHM6IGludGVybmFsTGlua09ialtdO1xyXG4gICAgICAgICAgaW1wbGllZHM6IGludGVybmFsTGlua09ialtdO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zdCByZXN1bHRzRmlsdGVyID0gKFxyXG4gICAgICAgIGl0ZW06IFNxdWFyZUl0ZW0sXHJcbiAgICAgICAgZGlyOiBEaXJlY3Rpb25zLFxyXG4gICAgICAgIG9wcERpcjogRGlyZWN0aW9ucyxcclxuICAgICAgICBhcnJvdzogc3RyaW5nXHJcbiAgICAgICkgPT5cclxuICAgICAgICBoaWVyW2Rpcl0uaW5jbHVkZXMoaXRlbS5maWVsZCkgfHxcclxuICAgICAgICAoaXRlbS5maWVsZC5pbmNsdWRlcyhgPCR7YXJyb3d9PmApICYmXHJcbiAgICAgICAgICBoaWVyW29wcERpcl0uaW5jbHVkZXMoaXRlbS5maWVsZC5zcGxpdChcIiA8XCIpWzBdKSk7XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IGRpciBpbiByZWFsc25JbXBsaWVkcykge1xyXG4gICAgICAgIGNvbnN0IG9wcERpciA9IGdldE9wcERpcihkaXIgYXMgRGlyZWN0aW9ucyk7XHJcbiAgICAgICAgY29uc3QgYXJyb3cgPSBBUlJPV19ESVJFQ1RJT05TW2Rpcl07XHJcbiAgICAgICAgY29uc3QgeyByZWFscywgaW1wbGllZHMgfSA9IHJlYWxzbkltcGxpZWRzW2Rpcl07XHJcblxyXG4gICAgICAgIGZpbHRlcmVkUmVhbE5JbXBsaWVkW2Rpcl0ucmVhbHMgPSByZWFsc1xyXG4gICAgICAgICAgLmZpbHRlcigocmVhbCkgPT5cclxuICAgICAgICAgICAgcmVzdWx0c0ZpbHRlcihyZWFsLCBkaXIgYXMgRGlyZWN0aW9ucywgb3BwRGlyLCBhcnJvdylcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5tYXAoKGl0ZW0pID0+XHJcbiAgICAgICAgICAgIHRoaXMudG9JbnRlcm5hbExpbmtPYmooaXRlbS50bywgdHJ1ZSwgbnVsbCwgaXRlbS5pbXBsaWVkKVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgZmlsdGVyZWRSZWFsTkltcGxpZWRbZGlyXS5pbXBsaWVkcyA9IGltcGxpZWRzXHJcbiAgICAgICAgICAuZmlsdGVyKChpbXBsaWVkKSA9PlxyXG4gICAgICAgICAgICByZXN1bHRzRmlsdGVyKGltcGxpZWQsIGRpciBhcyBEaXJlY3Rpb25zLCBvcHBEaXIsIGFycm93KVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLm1hcCgoaXRlbSkgPT5cclxuICAgICAgICAgICAgdGhpcy50b0ludGVybmFsTGlua09iaihpdGVtLnRvLCBmYWxzZSwgbnVsbCwgaXRlbS5pbXBsaWVkKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IHtcclxuICAgICAgICB1cDogeyByZWFsczogcnUsIGltcGxpZWRzOiBpdSB9LFxyXG4gICAgICAgIHNhbWU6IHsgcmVhbHM6IHJzLCBpbXBsaWVkczogaXMgfSxcclxuICAgICAgICBkb3duOiB7IHJlYWxzOiByZCwgaW1wbGllZHM6IGlkIH0sXHJcbiAgICAgICAgbmV4dDogeyByZWFsczogcm4sIGltcGxpZWRzOiBpTiB9LFxyXG4gICAgICAgIHByZXY6IHsgcmVhbHM6IHJwLCBpbXBsaWVkczogaXAgfSxcclxuICAgICAgfSA9IGZpbHRlcmVkUmVhbE5JbXBsaWVkO1xyXG5cclxuICAgICAgLy8gIVNFQ1RJT05cclxuXHJcbiAgICAgIFtpdSwgaXMsIGlkLCBpTiwgaXBdID0gW1xyXG4gICAgICAgIHRoaXMucmVtb3ZlRHVwbGljYXRlSW1wbGllZChydSwgaXUpLFxyXG4gICAgICAgIHRoaXMucmVtb3ZlRHVwbGljYXRlSW1wbGllZChycywgaXMpLFxyXG4gICAgICAgIHRoaXMucmVtb3ZlRHVwbGljYXRlSW1wbGllZChyZCwgaWQpLFxyXG4gICAgICAgIHRoaXMucmVtb3ZlRHVwbGljYXRlSW1wbGllZChybiwgaU4pLFxyXG4gICAgICAgIHRoaXMucmVtb3ZlRHVwbGljYXRlSW1wbGllZChycCwgaXApLFxyXG4gICAgICBdO1xyXG5cclxuICAgICAgY29uc3QgaVNhbWVOb0R1cDogaW50ZXJuYWxMaW5rT2JqW10gPSBbXTtcclxuICAgICAgaXMuZm9yRWFjaCgoaW1wU2liKSA9PiB7XHJcbiAgICAgICAgaWYgKGlTYW1lTm9EdXAuZXZlcnkoKG5vRHVwKSA9PiBub0R1cC50byAhPT0gaW1wU2liLnRvKSkge1xyXG4gICAgICAgICAgaVNhbWVOb0R1cC5wdXNoKGltcFNpYik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaXMgPSBpU2FtZU5vRHVwO1xyXG5cclxuICAgICAgY29uc3QgZ2V0RmllbGRJbkhpZXIgPSAoZGlyOiBEaXJlY3Rpb25zKSA9PlxyXG4gICAgICAgIGhpZXJbZGlyXVswXVxyXG4gICAgICAgICAgPyBoaWVyW2Rpcl0uam9pbihcIiwgXCIpXHJcbiAgICAgICAgICA6IGAke2hpZXJbZ2V0T3BwRGlyKGRpcildLmpvaW4oXCIsXCIpfSR7QVJST1dfRElSRUNUSU9OU1tkaXJdfWA7XHJcblxyXG4gICAgICBjb25zdCBzcXVhcmVzID0gW3J1LCBycywgcmQsIHJuLCBycCwgaXUsIGlzLCBpZCwgaU4sIGlwXTtcclxuXHJcbiAgICAgIGlmIChlbmFibGVBbHBoYVNvcnQpXHJcbiAgICAgICAgc3F1YXJlcy5mb3JFYWNoKChzcSkgPT4gc3Euc29ydCh0aGlzLnNvcnRJdGVtc0FscGhhKSk7XHJcblxyXG4gICAgICBzcXVhcmVzLmZvckVhY2goKHNxKSA9PiBzcS5zb3J0KChhLCBiKSA9PiBhLm9yZGVyIC0gYi5vcmRlcikpO1xyXG5cclxuICAgICAgaW5mbyhbXHJcbiAgICAgICAgeyBydSB9LFxyXG4gICAgICAgIHsgcnMgfSxcclxuICAgICAgICB7IHJkIH0sXHJcbiAgICAgICAgeyBybiB9LFxyXG4gICAgICAgIHsgcnAgfSxcclxuICAgICAgICB7IGl1IH0sXHJcbiAgICAgICAgeyBpcyB9LFxyXG4gICAgICAgIHsgaWQgfSxcclxuICAgICAgICB7IGlOIH0sXHJcbiAgICAgICAgeyBpcCB9LFxyXG4gICAgICBdKTtcclxuXHJcbiAgICAgIGNvbnN0IHNxdWFyZSA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICByZWFsSXRlbXM6IHJ1LFxyXG4gICAgICAgICAgaW1wbGllZEl0ZW1zOiBpdSxcclxuICAgICAgICAgIGZpZWxkOiBnZXRGaWVsZEluSGllcihcInVwXCIpLFxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHJlYWxJdGVtczogcnMsXHJcbiAgICAgICAgICBpbXBsaWVkSXRlbXM6IGlzLFxyXG4gICAgICAgICAgZmllbGQ6IGdldEZpZWxkSW5IaWVyKFwic2FtZVwiKSxcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB7XHJcbiAgICAgICAgICByZWFsSXRlbXM6IHJkLFxyXG4gICAgICAgICAgaW1wbGllZEl0ZW1zOiBpZCxcclxuICAgICAgICAgIGZpZWxkOiBnZXRGaWVsZEluSGllcihcImRvd25cIiksXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICByZWFsSXRlbXM6IHJuLFxyXG4gICAgICAgICAgaW1wbGllZEl0ZW1zOiBpTixcclxuICAgICAgICAgIGZpZWxkOiBnZXRGaWVsZEluSGllcihcIm5leHRcIiksXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICByZWFsSXRlbXM6IHJwLFxyXG4gICAgICAgICAgaW1wbGllZEl0ZW1zOiBpcCxcclxuICAgICAgICAgIGZpZWxkOiBnZXRGaWVsZEluSGllcihcInByZXZcIiksXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuXHJcbiAgICAgIHJldHVybiBzcXVhcmVEaXJlY3Rpb25zT3JkZXIubWFwKChvcmRlcikgPT4gc3F1YXJlW29yZGVyXSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRyYXcoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB7IGNvbnRlbnRFbCwgZGIsIHBsdWdpbiB9ID0gdGhpcztcclxuICAgICAgZGIuc3RhcnQyRyhcIkRyYXcgTWF0cml4IFZpZXdcIik7XHJcbiAgICAgIGNvbnRlbnRFbC5lbXB0eSgpO1xyXG5cclxuICAgICAgY29uc3QgeyB1c2VySGllcnMgfSA9IHBsdWdpbi5zZXR0aW5ncztcclxuXHJcbiAgICAgIGNvbnN0IGN1cnJGaWxlID0gZ2V0Q3VyckZpbGUoKTtcclxuICAgICAgaWYgKCFjdXJyRmlsZSkgcmV0dXJuO1xyXG5cclxuICAgICAgY29uc3QgaGllclNxdWFyZXMgPSB0aGlzLmdldEhpZXJTcXVhcmVzKHVzZXJIaWVycywgY3VyckZpbGUpLmZpbHRlcihcclxuICAgICAgICAoc3F1YXJlQXJyKSA9PlxyXG4gICAgICAgICAgc3F1YXJlQXJyLnNvbWUoXHJcbiAgICAgICAgICAgIChzcSkgPT4gc3EucmVhbEl0ZW1zLmxlbmd0aCArIHNxLmltcGxpZWRJdGVtcy5sZW5ndGggPiAwXHJcbiAgICAgICAgICApXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBuZXcgTWF0cml4KHtcclxuICAgICAgICB0YXJnZXQ6IGNvbnRlbnRFbCxcclxuICAgICAgICBwcm9wczogeyBoaWVyU3F1YXJlcywgbWF0cml4VmlldzogdGhpcywgY3VyckZpbGUgfSxcclxuICAgICAgfSlcclxuXHJcblxyXG4gICAgICBkYi5lbmQyRygpO1xyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGVycm9yKGVycik7XHJcbiAgICAgIHRoaXMuZGIuZW5kMkcoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwgImltcG9ydCB7IGRlYnVnLCBpbmZvLCBsZXZlbHMgfSBmcm9tIFwibG9nbGV2ZWxcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcInNyYy9tYWluXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgRGVidWdnZXIge1xyXG4gIHBsdWdpbjogQkNQbHVnaW47XHJcbiAgY29uc3RydWN0b3IocGx1Z2luOiBCQ1BsdWdpbikge1xyXG4gICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XHJcbiAgfVxyXG5cclxuICBkZWJ1Z0xlc3NUaGFuID0gKGxldmVsOiBudW1iZXIpID0+XHJcbiAgICBsZXZlbHNbdGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVidWdNb2RlXSA8IGxldmVsO1xyXG5cclxuICBzdGFydDJHKGdyb3VwOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmRlYnVnTGVzc1RoYW4oMykpIGNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQoZ3JvdXApO1xyXG4gIH1cclxuICBlbmQyRyguLi5tc2dzOiBhbnlbXSkge1xyXG4gICAgaWYgKHRoaXMuZGVidWdMZXNzVGhhbigzKSkge1xyXG4gICAgICBpZiAobXNncy5sZW5ndGgpIGluZm8oLi4ubXNncyk7XHJcbiAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgc3RhcnQxRyhncm91cDogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5kZWJ1Z0xlc3NUaGFuKDIpKSBjb25zb2xlLmdyb3VwQ29sbGFwc2VkKGdyb3VwKTtcclxuICB9XHJcbiAgZW5kMUcoLi4ubXNnczogYW55W10pIHtcclxuICAgIGlmICh0aGlzLmRlYnVnTGVzc1RoYW4oMikpIHtcclxuICAgICAgaWYgKG1zZ3MubGVuZ3RoKSBkZWJ1ZyguLi5tc2dzKTtcclxuICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhcnRHcyguLi5ncm91cHM6IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLnN0YXJ0MkcoZ3JvdXBzWzBdKTtcclxuICAgIGlmIChncm91cHNbMV0pIHRoaXMuc3RhcnQxRyhncm91cHNbMV0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW5kIGEgZGVidWcgYW5kIGluZm8gZ3JvdXAsIGxvZ2dpbmcgYG1zZ3NgIGluIGBlbmREZWJ1Z0dyb3VwYFxyXG4gICAqIEBwYXJhbSAgezF8Mn0gY291bnQgVGhlIG51bWJlciBvZiBncm91cHMgdG8gZW5kLiBgMWAgZW5kcyBUcmFjZSwgMiBlbmRzIGJvdGhcclxuICAgKiBAcGFyYW0gIHthbnlbXX0gLi4ubXNnc1xyXG4gICAqL1xyXG4gIGVuZEdzKGNvdW50OiAxIHwgMiwgLi4ubXNnczogYW55W10pIHtcclxuICAgIGlmIChjb3VudCA9PT0gMSkgdGhpcy5lbmQyRyguLi5tc2dzKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmVuZDFHKCk7XHJcbiAgICAgIHRoaXMuZW5kMkcoLi4ubXNncyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsICJmdW5jdGlvbiBub29wKCkgeyB9XG5jb25zdCBpZGVudGl0eSA9IHggPT4geDtcbmZ1bmN0aW9uIGFzc2lnbih0YXIsIHNyYykge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBmb3IgKGNvbnN0IGsgaW4gc3JjKVxuICAgICAgICB0YXJba10gPSBzcmNba107XG4gICAgcmV0dXJuIHRhcjtcbn1cbmZ1bmN0aW9uIGlzX3Byb21pc2UodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0aW9uJztcbn1cbmZ1bmN0aW9uIGFkZF9sb2NhdGlvbihlbGVtZW50LCBmaWxlLCBsaW5lLCBjb2x1bW4sIGNoYXIpIHtcbiAgICBlbGVtZW50Ll9fc3ZlbHRlX21ldGEgPSB7XG4gICAgICAgIGxvYzogeyBmaWxlLCBsaW5lLCBjb2x1bW4sIGNoYXIgfVxuICAgIH07XG59XG5mdW5jdGlvbiBydW4oZm4pIHtcbiAgICByZXR1cm4gZm4oKTtcbn1cbmZ1bmN0aW9uIGJsYW5rX29iamVjdCgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsKTtcbn1cbmZ1bmN0aW9uIHJ1bl9hbGwoZm5zKSB7XG4gICAgZm5zLmZvckVhY2gocnVuKTtcbn1cbmZ1bmN0aW9uIGlzX2Z1bmN0aW9uKHRoaW5nKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGluZyA9PT0gJ2Z1bmN0aW9uJztcbn1cbmZ1bmN0aW9uIHNhZmVfbm90X2VxdWFsKGEsIGIpIHtcbiAgICByZXR1cm4gYSAhPSBhID8gYiA9PSBiIDogYSAhPT0gYiB8fCAoKGEgJiYgdHlwZW9mIGEgPT09ICdvYmplY3QnKSB8fCB0eXBlb2YgYSA9PT0gJ2Z1bmN0aW9uJyk7XG59XG5sZXQgc3JjX3VybF9lcXVhbF9hbmNob3I7XG5mdW5jdGlvbiBzcmNfdXJsX2VxdWFsKGVsZW1lbnRfc3JjLCB1cmwpIHtcbiAgICBpZiAoIXNyY191cmxfZXF1YWxfYW5jaG9yKSB7XG4gICAgICAgIHNyY191cmxfZXF1YWxfYW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIH1cbiAgICBzcmNfdXJsX2VxdWFsX2FuY2hvci5ocmVmID0gdXJsO1xuICAgIHJldHVybiBlbGVtZW50X3NyYyA9PT0gc3JjX3VybF9lcXVhbF9hbmNob3IuaHJlZjtcbn1cbmZ1bmN0aW9uIG5vdF9lcXVhbChhLCBiKSB7XG4gICAgcmV0dXJuIGEgIT0gYSA/IGIgPT0gYiA6IGEgIT09IGI7XG59XG5mdW5jdGlvbiBpc19lbXB0eShvYmopIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT09IDA7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZV9zdG9yZShzdG9yZSwgbmFtZSkge1xuICAgIGlmIChzdG9yZSAhPSBudWxsICYmIHR5cGVvZiBzdG9yZS5zdWJzY3JpYmUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtuYW1lfScgaXMgbm90IGEgc3RvcmUgd2l0aCBhICdzdWJzY3JpYmUnIG1ldGhvZGApO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHN1YnNjcmliZShzdG9yZSwgLi4uY2FsbGJhY2tzKSB7XG4gICAgaWYgKHN0b3JlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG5vb3A7XG4gICAgfVxuICAgIGNvbnN0IHVuc3ViID0gc3RvcmUuc3Vic2NyaWJlKC4uLmNhbGxiYWNrcyk7XG4gICAgcmV0dXJuIHVuc3ViLnVuc3Vic2NyaWJlID8gKCkgPT4gdW5zdWIudW5zdWJzY3JpYmUoKSA6IHVuc3ViO1xufVxuZnVuY3Rpb24gZ2V0X3N0b3JlX3ZhbHVlKHN0b3JlKSB7XG4gICAgbGV0IHZhbHVlO1xuICAgIHN1YnNjcmliZShzdG9yZSwgXyA9PiB2YWx1ZSA9IF8pKCk7XG4gICAgcmV0dXJuIHZhbHVlO1xufVxuZnVuY3Rpb24gY29tcG9uZW50X3N1YnNjcmliZShjb21wb25lbnQsIHN0b3JlLCBjYWxsYmFjaykge1xuICAgIGNvbXBvbmVudC4kJC5vbl9kZXN0cm95LnB1c2goc3Vic2NyaWJlKHN0b3JlLCBjYWxsYmFjaykpO1xufVxuZnVuY3Rpb24gY3JlYXRlX3Nsb3QoZGVmaW5pdGlvbiwgY3R4LCAkJHNjb3BlLCBmbikge1xuICAgIGlmIChkZWZpbml0aW9uKSB7XG4gICAgICAgIGNvbnN0IHNsb3RfY3R4ID0gZ2V0X3Nsb3RfY29udGV4dChkZWZpbml0aW9uLCBjdHgsICQkc2NvcGUsIGZuKTtcbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb25bMF0oc2xvdF9jdHgpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGdldF9zbG90X2NvbnRleHQoZGVmaW5pdGlvbiwgY3R4LCAkJHNjb3BlLCBmbikge1xuICAgIHJldHVybiBkZWZpbml0aW9uWzFdICYmIGZuXG4gICAgICAgID8gYXNzaWduKCQkc2NvcGUuY3R4LnNsaWNlKCksIGRlZmluaXRpb25bMV0oZm4oY3R4KSkpXG4gICAgICAgIDogJCRzY29wZS5jdHg7XG59XG5mdW5jdGlvbiBnZXRfc2xvdF9jaGFuZ2VzKGRlZmluaXRpb24sICQkc2NvcGUsIGRpcnR5LCBmbikge1xuICAgIGlmIChkZWZpbml0aW9uWzJdICYmIGZuKSB7XG4gICAgICAgIGNvbnN0IGxldHMgPSBkZWZpbml0aW9uWzJdKGZuKGRpcnR5KSk7XG4gICAgICAgIGlmICgkJHNjb3BlLmRpcnR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBsZXRzO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgbGV0cyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZCA9IFtdO1xuICAgICAgICAgICAgY29uc3QgbGVuID0gTWF0aC5tYXgoJCRzY29wZS5kaXJ0eS5sZW5ndGgsIGxldHMubGVuZ3RoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgICBtZXJnZWRbaV0gPSAkJHNjb3BlLmRpcnR5W2ldIHwgbGV0c1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBtZXJnZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICQkc2NvcGUuZGlydHkgfCBsZXRzO1xuICAgIH1cbiAgICByZXR1cm4gJCRzY29wZS5kaXJ0eTtcbn1cbmZ1bmN0aW9uIHVwZGF0ZV9zbG90X2Jhc2Uoc2xvdCwgc2xvdF9kZWZpbml0aW9uLCBjdHgsICQkc2NvcGUsIHNsb3RfY2hhbmdlcywgZ2V0X3Nsb3RfY29udGV4dF9mbikge1xuICAgIGlmIChzbG90X2NoYW5nZXMpIHtcbiAgICAgICAgY29uc3Qgc2xvdF9jb250ZXh0ID0gZ2V0X3Nsb3RfY29udGV4dChzbG90X2RlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgZ2V0X3Nsb3RfY29udGV4dF9mbik7XG4gICAgICAgIHNsb3QucChzbG90X2NvbnRleHQsIHNsb3RfY2hhbmdlcyk7XG4gICAgfVxufVxuZnVuY3Rpb24gdXBkYXRlX3Nsb3Qoc2xvdCwgc2xvdF9kZWZpbml0aW9uLCBjdHgsICQkc2NvcGUsIGRpcnR5LCBnZXRfc2xvdF9jaGFuZ2VzX2ZuLCBnZXRfc2xvdF9jb250ZXh0X2ZuKSB7XG4gICAgY29uc3Qgc2xvdF9jaGFuZ2VzID0gZ2V0X3Nsb3RfY2hhbmdlcyhzbG90X2RlZmluaXRpb24sICQkc2NvcGUsIGRpcnR5LCBnZXRfc2xvdF9jaGFuZ2VzX2ZuKTtcbiAgICB1cGRhdGVfc2xvdF9iYXNlKHNsb3QsIHNsb3RfZGVmaW5pdGlvbiwgY3R4LCAkJHNjb3BlLCBzbG90X2NoYW5nZXMsIGdldF9zbG90X2NvbnRleHRfZm4pO1xufVxuZnVuY3Rpb24gZ2V0X2FsbF9kaXJ0eV9mcm9tX3Njb3BlKCQkc2NvcGUpIHtcbiAgICBpZiAoJCRzY29wZS5jdHgubGVuZ3RoID4gMzIpIHtcbiAgICAgICAgY29uc3QgZGlydHkgPSBbXTtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gJCRzY29wZS5jdHgubGVuZ3RoIC8gMzI7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGRpcnR5W2ldID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpcnR5O1xuICAgIH1cbiAgICByZXR1cm4gLTE7XG59XG5mdW5jdGlvbiBleGNsdWRlX2ludGVybmFsX3Byb3BzKHByb3BzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgZm9yIChjb25zdCBrIGluIHByb3BzKVxuICAgICAgICBpZiAoa1swXSAhPT0gJyQnKVxuICAgICAgICAgICAgcmVzdWx0W2tdID0gcHJvcHNba107XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGNvbXB1dGVfcmVzdF9wcm9wcyhwcm9wcywga2V5cykge1xuICAgIGNvbnN0IHJlc3QgPSB7fTtcbiAgICBrZXlzID0gbmV3IFNldChrZXlzKTtcbiAgICBmb3IgKGNvbnN0IGsgaW4gcHJvcHMpXG4gICAgICAgIGlmICgha2V5cy5oYXMoaykgJiYga1swXSAhPT0gJyQnKVxuICAgICAgICAgICAgcmVzdFtrXSA9IHByb3BzW2tdO1xuICAgIHJldHVybiByZXN0O1xufVxuZnVuY3Rpb24gY29tcHV0ZV9zbG90cyhzbG90cykge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IGluIHNsb3RzKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG9uY2UoZm4pIHtcbiAgICBsZXQgcmFuID0gZmFsc2U7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgIGlmIChyYW4pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHJhbiA9IHRydWU7XG4gICAgICAgIGZuLmNhbGwodGhpcywgLi4uYXJncyk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIG51bGxfdG9fZW1wdHkodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWU7XG59XG5mdW5jdGlvbiBzZXRfc3RvcmVfdmFsdWUoc3RvcmUsIHJldCwgdmFsdWUpIHtcbiAgICBzdG9yZS5zZXQodmFsdWUpO1xuICAgIHJldHVybiByZXQ7XG59XG5jb25zdCBoYXNfcHJvcCA9IChvYmosIHByb3ApID0+IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xuZnVuY3Rpb24gYWN0aW9uX2Rlc3Ryb3llcihhY3Rpb25fcmVzdWx0KSB7XG4gICAgcmV0dXJuIGFjdGlvbl9yZXN1bHQgJiYgaXNfZnVuY3Rpb24oYWN0aW9uX3Jlc3VsdC5kZXN0cm95KSA/IGFjdGlvbl9yZXN1bHQuZGVzdHJveSA6IG5vb3A7XG59XG5cbmNvbnN0IGlzX2NsaWVudCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xubGV0IG5vdyA9IGlzX2NsaWVudFxuICAgID8gKCkgPT4gd2luZG93LnBlcmZvcm1hbmNlLm5vdygpXG4gICAgOiAoKSA9PiBEYXRlLm5vdygpO1xubGV0IHJhZiA9IGlzX2NsaWVudCA/IGNiID0+IHJlcXVlc3RBbmltYXRpb25GcmFtZShjYikgOiBub29wO1xuLy8gdXNlZCBpbnRlcm5hbGx5IGZvciB0ZXN0aW5nXG5mdW5jdGlvbiBzZXRfbm93KGZuKSB7XG4gICAgbm93ID0gZm47XG59XG5mdW5jdGlvbiBzZXRfcmFmKGZuKSB7XG4gICAgcmFmID0gZm47XG59XG5cbmNvbnN0IHRhc2tzID0gbmV3IFNldCgpO1xuZnVuY3Rpb24gcnVuX3Rhc2tzKG5vdykge1xuICAgIHRhc2tzLmZvckVhY2godGFzayA9PiB7XG4gICAgICAgIGlmICghdGFzay5jKG5vdykpIHtcbiAgICAgICAgICAgIHRhc2tzLmRlbGV0ZSh0YXNrKTtcbiAgICAgICAgICAgIHRhc2suZigpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHRhc2tzLnNpemUgIT09IDApXG4gICAgICAgIHJhZihydW5fdGFza3MpO1xufVxuLyoqXG4gKiBGb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5IVxuICovXG5mdW5jdGlvbiBjbGVhcl9sb29wcygpIHtcbiAgICB0YXNrcy5jbGVhcigpO1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHRhc2sgdGhhdCBydW5zIG9uIGVhY2ggcmFmIGZyYW1lXG4gKiB1bnRpbCBpdCByZXR1cm5zIGEgZmFsc3kgdmFsdWUgb3IgaXMgYWJvcnRlZFxuICovXG5mdW5jdGlvbiBsb29wKGNhbGxiYWNrKSB7XG4gICAgbGV0IHRhc2s7XG4gICAgaWYgKHRhc2tzLnNpemUgPT09IDApXG4gICAgICAgIHJhZihydW5fdGFza3MpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHByb21pc2U6IG5ldyBQcm9taXNlKGZ1bGZpbGwgPT4ge1xuICAgICAgICAgICAgdGFza3MuYWRkKHRhc2sgPSB7IGM6IGNhbGxiYWNrLCBmOiBmdWxmaWxsIH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgYWJvcnQoKSB7XG4gICAgICAgICAgICB0YXNrcy5kZWxldGUodGFzayk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG4vLyBUcmFjayB3aGljaCBub2RlcyBhcmUgY2xhaW1lZCBkdXJpbmcgaHlkcmF0aW9uLiBVbmNsYWltZWQgbm9kZXMgY2FuIHRoZW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBET01cbi8vIGF0IHRoZSBlbmQgb2YgaHlkcmF0aW9uIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHJlbWFpbmluZyBub2Rlcy5cbmxldCBpc19oeWRyYXRpbmcgPSBmYWxzZTtcbmZ1bmN0aW9uIHN0YXJ0X2h5ZHJhdGluZygpIHtcbiAgICBpc19oeWRyYXRpbmcgPSB0cnVlO1xufVxuZnVuY3Rpb24gZW5kX2h5ZHJhdGluZygpIHtcbiAgICBpc19oeWRyYXRpbmcgPSBmYWxzZTtcbn1cbmZ1bmN0aW9uIHVwcGVyX2JvdW5kKGxvdywgaGlnaCwga2V5LCB2YWx1ZSkge1xuICAgIC8vIFJldHVybiBmaXJzdCBpbmRleCBvZiB2YWx1ZSBsYXJnZXIgdGhhbiBpbnB1dCB2YWx1ZSBpbiB0aGUgcmFuZ2UgW2xvdywgaGlnaClcbiAgICB3aGlsZSAobG93IDwgaGlnaCkge1xuICAgICAgICBjb25zdCBtaWQgPSBsb3cgKyAoKGhpZ2ggLSBsb3cpID4+IDEpO1xuICAgICAgICBpZiAoa2V5KG1pZCkgPD0gdmFsdWUpIHtcbiAgICAgICAgICAgIGxvdyA9IG1pZCArIDE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBoaWdoID0gbWlkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBsb3c7XG59XG5mdW5jdGlvbiBpbml0X2h5ZHJhdGUodGFyZ2V0KSB7XG4gICAgaWYgKHRhcmdldC5oeWRyYXRlX2luaXQpXG4gICAgICAgIHJldHVybjtcbiAgICB0YXJnZXQuaHlkcmF0ZV9pbml0ID0gdHJ1ZTtcbiAgICAvLyBXZSBrbm93IHRoYXQgYWxsIGNoaWxkcmVuIGhhdmUgY2xhaW1fb3JkZXIgdmFsdWVzIHNpbmNlIHRoZSB1bmNsYWltZWQgaGF2ZSBiZWVuIGRldGFjaGVkIGlmIHRhcmdldCBpcyBub3QgPGhlYWQ+XG4gICAgbGV0IGNoaWxkcmVuID0gdGFyZ2V0LmNoaWxkTm9kZXM7XG4gICAgLy8gSWYgdGFyZ2V0IGlzIDxoZWFkPiwgdGhlcmUgbWF5IGJlIGNoaWxkcmVuIHdpdGhvdXQgY2xhaW1fb3JkZXJcbiAgICBpZiAodGFyZ2V0Lm5vZGVOYW1lID09PSAnSEVBRCcpIHtcbiAgICAgICAgY29uc3QgbXlDaGlsZHJlbiA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gY2hpbGRyZW5baV07XG4gICAgICAgICAgICBpZiAobm9kZS5jbGFpbV9vcmRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgbXlDaGlsZHJlbi5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNoaWxkcmVuID0gbXlDaGlsZHJlbjtcbiAgICB9XG4gICAgLypcbiAgICAqIFJlb3JkZXIgY2xhaW1lZCBjaGlsZHJlbiBvcHRpbWFsbHkuXG4gICAgKiBXZSBjYW4gcmVvcmRlciBjbGFpbWVkIGNoaWxkcmVuIG9wdGltYWxseSBieSBmaW5kaW5nIHRoZSBsb25nZXN0IHN1YnNlcXVlbmNlIG9mXG4gICAgKiBub2RlcyB0aGF0IGFyZSBhbHJlYWR5IGNsYWltZWQgaW4gb3JkZXIgYW5kIG9ubHkgbW92aW5nIHRoZSByZXN0LiBUaGUgbG9uZ2VzdFxuICAgICogc3Vic2VxdWVuY2Ugc3Vic2VxdWVuY2Ugb2Ygbm9kZXMgdGhhdCBhcmUgY2xhaW1lZCBpbiBvcmRlciBjYW4gYmUgZm91bmQgYnlcbiAgICAqIGNvbXB1dGluZyB0aGUgbG9uZ2VzdCBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlIG9mIC5jbGFpbV9vcmRlciB2YWx1ZXMuXG4gICAgKlxuICAgICogVGhpcyBhbGdvcml0aG0gaXMgb3B0aW1hbCBpbiBnZW5lcmF0aW5nIHRoZSBsZWFzdCBhbW91bnQgb2YgcmVvcmRlciBvcGVyYXRpb25zXG4gICAgKiBwb3NzaWJsZS5cbiAgICAqXG4gICAgKiBQcm9vZjpcbiAgICAqIFdlIGtub3cgdGhhdCwgZ2l2ZW4gYSBzZXQgb2YgcmVvcmRlcmluZyBvcGVyYXRpb25zLCB0aGUgbm9kZXMgdGhhdCBkbyBub3QgbW92ZVxuICAgICogYWx3YXlzIGZvcm0gYW4gaW5jcmVhc2luZyBzdWJzZXF1ZW5jZSwgc2luY2UgdGhleSBkbyBub3QgbW92ZSBhbW9uZyBlYWNoIG90aGVyXG4gICAgKiBtZWFuaW5nIHRoYXQgdGhleSBtdXN0IGJlIGFscmVhZHkgb3JkZXJlZCBhbW9uZyBlYWNoIG90aGVyLiBUaHVzLCB0aGUgbWF4aW1hbFxuICAgICogc2V0IG9mIG5vZGVzIHRoYXQgZG8gbm90IG1vdmUgZm9ybSBhIGxvbmdlc3QgaW5jcmVhc2luZyBzdWJzZXF1ZW5jZS5cbiAgICAqL1xuICAgIC8vIENvbXB1dGUgbG9uZ2VzdCBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlXG4gICAgLy8gbTogc3Vic2VxdWVuY2UgbGVuZ3RoIGogPT4gaW5kZXggayBvZiBzbWFsbGVzdCB2YWx1ZSB0aGF0IGVuZHMgYW4gaW5jcmVhc2luZyBzdWJzZXF1ZW5jZSBvZiBsZW5ndGggalxuICAgIGNvbnN0IG0gPSBuZXcgSW50MzJBcnJheShjaGlsZHJlbi5sZW5ndGggKyAxKTtcbiAgICAvLyBQcmVkZWNlc3NvciBpbmRpY2VzICsgMVxuICAgIGNvbnN0IHAgPSBuZXcgSW50MzJBcnJheShjaGlsZHJlbi5sZW5ndGgpO1xuICAgIG1bMF0gPSAtMTtcbiAgICBsZXQgbG9uZ2VzdCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gY2hpbGRyZW5baV0uY2xhaW1fb3JkZXI7XG4gICAgICAgIC8vIEZpbmQgdGhlIGxhcmdlc3Qgc3Vic2VxdWVuY2UgbGVuZ3RoIHN1Y2ggdGhhdCBpdCBlbmRzIGluIGEgdmFsdWUgbGVzcyB0aGFuIG91ciBjdXJyZW50IHZhbHVlXG4gICAgICAgIC8vIHVwcGVyX2JvdW5kIHJldHVybnMgZmlyc3QgZ3JlYXRlciB2YWx1ZSwgc28gd2Ugc3VidHJhY3Qgb25lXG4gICAgICAgIC8vIHdpdGggZmFzdCBwYXRoIGZvciB3aGVuIHdlIGFyZSBvbiB0aGUgY3VycmVudCBsb25nZXN0IHN1YnNlcXVlbmNlXG4gICAgICAgIGNvbnN0IHNlcUxlbiA9ICgobG9uZ2VzdCA+IDAgJiYgY2hpbGRyZW5bbVtsb25nZXN0XV0uY2xhaW1fb3JkZXIgPD0gY3VycmVudCkgPyBsb25nZXN0ICsgMSA6IHVwcGVyX2JvdW5kKDEsIGxvbmdlc3QsIGlkeCA9PiBjaGlsZHJlblttW2lkeF1dLmNsYWltX29yZGVyLCBjdXJyZW50KSkgLSAxO1xuICAgICAgICBwW2ldID0gbVtzZXFMZW5dICsgMTtcbiAgICAgICAgY29uc3QgbmV3TGVuID0gc2VxTGVuICsgMTtcbiAgICAgICAgLy8gV2UgY2FuIGd1YXJhbnRlZSB0aGF0IGN1cnJlbnQgaXMgdGhlIHNtYWxsZXN0IHZhbHVlLiBPdGhlcndpc2UsIHdlIHdvdWxkIGhhdmUgZ2VuZXJhdGVkIGEgbG9uZ2VyIHNlcXVlbmNlLlxuICAgICAgICBtW25ld0xlbl0gPSBpO1xuICAgICAgICBsb25nZXN0ID0gTWF0aC5tYXgobmV3TGVuLCBsb25nZXN0KTtcbiAgICB9XG4gICAgLy8gVGhlIGxvbmdlc3QgaW5jcmVhc2luZyBzdWJzZXF1ZW5jZSBvZiBub2RlcyAoaW5pdGlhbGx5IHJldmVyc2VkKVxuICAgIGNvbnN0IGxpcyA9IFtdO1xuICAgIC8vIFRoZSByZXN0IG9mIHRoZSBub2Rlcywgbm9kZXMgdGhhdCB3aWxsIGJlIG1vdmVkXG4gICAgY29uc3QgdG9Nb3ZlID0gW107XG4gICAgbGV0IGxhc3QgPSBjaGlsZHJlbi5sZW5ndGggLSAxO1xuICAgIGZvciAobGV0IGN1ciA9IG1bbG9uZ2VzdF0gKyAxOyBjdXIgIT0gMDsgY3VyID0gcFtjdXIgLSAxXSkge1xuICAgICAgICBsaXMucHVzaChjaGlsZHJlbltjdXIgLSAxXSk7XG4gICAgICAgIGZvciAoOyBsYXN0ID49IGN1cjsgbGFzdC0tKSB7XG4gICAgICAgICAgICB0b01vdmUucHVzaChjaGlsZHJlbltsYXN0XSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdC0tO1xuICAgIH1cbiAgICBmb3IgKDsgbGFzdCA+PSAwOyBsYXN0LS0pIHtcbiAgICAgICAgdG9Nb3ZlLnB1c2goY2hpbGRyZW5bbGFzdF0pO1xuICAgIH1cbiAgICBsaXMucmV2ZXJzZSgpO1xuICAgIC8vIFdlIHNvcnQgdGhlIG5vZGVzIGJlaW5nIG1vdmVkIHRvIGd1YXJhbnRlZSB0aGF0IHRoZWlyIGluc2VydGlvbiBvcmRlciBtYXRjaGVzIHRoZSBjbGFpbSBvcmRlclxuICAgIHRvTW92ZS5zb3J0KChhLCBiKSA9PiBhLmNsYWltX29yZGVyIC0gYi5jbGFpbV9vcmRlcik7XG4gICAgLy8gRmluYWxseSwgd2UgbW92ZSB0aGUgbm9kZXNcbiAgICBmb3IgKGxldCBpID0gMCwgaiA9IDA7IGkgPCB0b01vdmUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgd2hpbGUgKGogPCBsaXMubGVuZ3RoICYmIHRvTW92ZVtpXS5jbGFpbV9vcmRlciA+PSBsaXNbal0uY2xhaW1fb3JkZXIpIHtcbiAgICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbmNob3IgPSBqIDwgbGlzLmxlbmd0aCA/IGxpc1tqXSA6IG51bGw7XG4gICAgICAgIHRhcmdldC5pbnNlcnRCZWZvcmUodG9Nb3ZlW2ldLCBhbmNob3IpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFwcGVuZCh0YXJnZXQsIG5vZGUpIHtcbiAgICB0YXJnZXQuYXBwZW5kQ2hpbGQobm9kZSk7XG59XG5mdW5jdGlvbiBhcHBlbmRfc3R5bGVzKHRhcmdldCwgc3R5bGVfc2hlZXRfaWQsIHN0eWxlcykge1xuICAgIGNvbnN0IGFwcGVuZF9zdHlsZXNfdG8gPSBnZXRfcm9vdF9mb3Jfc3R5bGUodGFyZ2V0KTtcbiAgICBpZiAoIWFwcGVuZF9zdHlsZXNfdG8uZ2V0RWxlbWVudEJ5SWQoc3R5bGVfc2hlZXRfaWQpKSB7XG4gICAgICAgIGNvbnN0IHN0eWxlID0gZWxlbWVudCgnc3R5bGUnKTtcbiAgICAgICAgc3R5bGUuaWQgPSBzdHlsZV9zaGVldF9pZDtcbiAgICAgICAgc3R5bGUudGV4dENvbnRlbnQgPSBzdHlsZXM7XG4gICAgICAgIGFwcGVuZF9zdHlsZXNoZWV0KGFwcGVuZF9zdHlsZXNfdG8sIHN0eWxlKTtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRfcm9vdF9mb3Jfc3R5bGUobm9kZSkge1xuICAgIGlmICghbm9kZSlcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgIGNvbnN0IHJvb3QgPSBub2RlLmdldFJvb3ROb2RlID8gbm9kZS5nZXRSb290Tm9kZSgpIDogbm9kZS5vd25lckRvY3VtZW50O1xuICAgIGlmIChyb290ICYmIHJvb3QuaG9zdCkge1xuICAgICAgICByZXR1cm4gcm9vdDtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGUub3duZXJEb2N1bWVudDtcbn1cbmZ1bmN0aW9uIGFwcGVuZF9lbXB0eV9zdHlsZXNoZWV0KG5vZGUpIHtcbiAgICBjb25zdCBzdHlsZV9lbGVtZW50ID0gZWxlbWVudCgnc3R5bGUnKTtcbiAgICBhcHBlbmRfc3R5bGVzaGVldChnZXRfcm9vdF9mb3Jfc3R5bGUobm9kZSksIHN0eWxlX2VsZW1lbnQpO1xuICAgIHJldHVybiBzdHlsZV9lbGVtZW50O1xufVxuZnVuY3Rpb24gYXBwZW5kX3N0eWxlc2hlZXQobm9kZSwgc3R5bGUpIHtcbiAgICBhcHBlbmQobm9kZS5oZWFkIHx8IG5vZGUsIHN0eWxlKTtcbn1cbmZ1bmN0aW9uIGFwcGVuZF9oeWRyYXRpb24odGFyZ2V0LCBub2RlKSB7XG4gICAgaWYgKGlzX2h5ZHJhdGluZykge1xuICAgICAgICBpbml0X2h5ZHJhdGUodGFyZ2V0KTtcbiAgICAgICAgaWYgKCh0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZCA9PT0gdW5kZWZpbmVkKSB8fCAoKHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkICE9PSBudWxsKSAmJiAodGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQucGFyZW50RWxlbWVudCAhPT0gdGFyZ2V0KSkpIHtcbiAgICAgICAgICAgIHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkID0gdGFyZ2V0LmZpcnN0Q2hpbGQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2tpcCBub2RlcyBvZiB1bmRlZmluZWQgb3JkZXJpbmdcbiAgICAgICAgd2hpbGUgKCh0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZCAhPT0gbnVsbCkgJiYgKHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkLmNsYWltX29yZGVyID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICB0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZCA9IHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkLm5leHRTaWJsaW5nO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlICE9PSB0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZCkge1xuICAgICAgICAgICAgLy8gV2Ugb25seSBpbnNlcnQgaWYgdGhlIG9yZGVyaW5nIG9mIHRoaXMgbm9kZSBzaG91bGQgYmUgbW9kaWZpZWQgb3IgdGhlIHBhcmVudCBub2RlIGlzIG5vdCB0YXJnZXRcbiAgICAgICAgICAgIGlmIChub2RlLmNsYWltX29yZGVyICE9PSB1bmRlZmluZWQgfHwgbm9kZS5wYXJlbnROb2RlICE9PSB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQuaW5zZXJ0QmVmb3JlKG5vZGUsIHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkID0gbm9kZS5uZXh0U2libGluZztcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChub2RlLnBhcmVudE5vZGUgIT09IHRhcmdldCB8fCBub2RlLm5leHRTaWJsaW5nICE9PSBudWxsKSB7XG4gICAgICAgIHRhcmdldC5hcHBlbmRDaGlsZChub2RlKTtcbiAgICB9XG59XG5mdW5jdGlvbiBpbnNlcnQodGFyZ2V0LCBub2RlLCBhbmNob3IpIHtcbiAgICB0YXJnZXQuaW5zZXJ0QmVmb3JlKG5vZGUsIGFuY2hvciB8fCBudWxsKTtcbn1cbmZ1bmN0aW9uIGluc2VydF9oeWRyYXRpb24odGFyZ2V0LCBub2RlLCBhbmNob3IpIHtcbiAgICBpZiAoaXNfaHlkcmF0aW5nICYmICFhbmNob3IpIHtcbiAgICAgICAgYXBwZW5kX2h5ZHJhdGlvbih0YXJnZXQsIG5vZGUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChub2RlLnBhcmVudE5vZGUgIT09IHRhcmdldCB8fCBub2RlLm5leHRTaWJsaW5nICE9IGFuY2hvcikge1xuICAgICAgICB0YXJnZXQuaW5zZXJ0QmVmb3JlKG5vZGUsIGFuY2hvciB8fCBudWxsKTtcbiAgICB9XG59XG5mdW5jdGlvbiBkZXRhY2gobm9kZSkge1xuICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbn1cbmZ1bmN0aW9uIGRlc3Ryb3lfZWFjaChpdGVyYXRpb25zLCBkZXRhY2hpbmcpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZXJhdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKGl0ZXJhdGlvbnNbaV0pXG4gICAgICAgICAgICBpdGVyYXRpb25zW2ldLmQoZGV0YWNoaW5nKTtcbiAgICB9XG59XG5mdW5jdGlvbiBlbGVtZW50KG5hbWUpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKTtcbn1cbmZ1bmN0aW9uIGVsZW1lbnRfaXMobmFtZSwgaXMpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lLCB7IGlzIH0pO1xufVxuZnVuY3Rpb24gb2JqZWN0X3dpdGhvdXRfcHJvcGVydGllcyhvYmosIGV4Y2x1ZGUpIHtcbiAgICBjb25zdCB0YXJnZXQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGsgaW4gb2JqKSB7XG4gICAgICAgIGlmIChoYXNfcHJvcChvYmosIGspXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAmJiBleGNsdWRlLmluZGV4T2YoaykgPT09IC0xKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICB0YXJnZXRba10gPSBvYmpba107XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cbmZ1bmN0aW9uIHN2Z19lbGVtZW50KG5hbWUpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsIG5hbWUpO1xufVxuZnVuY3Rpb24gdGV4dChkYXRhKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGRhdGEpO1xufVxuZnVuY3Rpb24gc3BhY2UoKSB7XG4gICAgcmV0dXJuIHRleHQoJyAnKTtcbn1cbmZ1bmN0aW9uIGVtcHR5KCkge1xuICAgIHJldHVybiB0ZXh0KCcnKTtcbn1cbmZ1bmN0aW9uIGxpc3Rlbihub2RlLCBldmVudCwgaGFuZGxlciwgb3B0aW9ucykge1xuICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgb3B0aW9ucyk7XG4gICAgcmV0dXJuICgpID0+IG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgb3B0aW9ucyk7XG59XG5mdW5jdGlvbiBwcmV2ZW50X2RlZmF1bHQoZm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIGZuLmNhbGwodGhpcywgZXZlbnQpO1xuICAgIH07XG59XG5mdW5jdGlvbiBzdG9wX3Byb3BhZ2F0aW9uKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gZm4uY2FsbCh0aGlzLCBldmVudCk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHNlbGYoZm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gdGhpcylcbiAgICAgICAgICAgIGZuLmNhbGwodGhpcywgZXZlbnQpO1xuICAgIH07XG59XG5mdW5jdGlvbiB0cnVzdGVkKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmIChldmVudC5pc1RydXN0ZWQpXG4gICAgICAgICAgICBmbi5jYWxsKHRoaXMsIGV2ZW50KTtcbiAgICB9O1xufVxuZnVuY3Rpb24gYXR0cihub2RlLCBhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpXG4gICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgZWxzZSBpZiAobm9kZS5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKSAhPT0gdmFsdWUpXG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgdmFsdWUpO1xufVxuZnVuY3Rpb24gc2V0X2F0dHJpYnV0ZXMobm9kZSwgYXR0cmlidXRlcykge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBkZXNjcmlwdG9ycyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG5vZGUuX19wcm90b19fKTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgIGlmIChhdHRyaWJ1dGVzW2tleV0gPT0gbnVsbCkge1xuICAgICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdzdHlsZScpIHtcbiAgICAgICAgICAgIG5vZGUuc3R5bGUuY3NzVGV4dCA9IGF0dHJpYnV0ZXNba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdfX3ZhbHVlJykge1xuICAgICAgICAgICAgbm9kZS52YWx1ZSA9IG5vZGVba2V5XSA9IGF0dHJpYnV0ZXNba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkZXNjcmlwdG9yc1trZXldICYmIGRlc2NyaXB0b3JzW2tleV0uc2V0KSB7XG4gICAgICAgICAgICBub2RlW2tleV0gPSBhdHRyaWJ1dGVzW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhdHRyKG5vZGUsIGtleSwgYXR0cmlidXRlc1trZXldKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHNldF9zdmdfYXR0cmlidXRlcyhub2RlLCBhdHRyaWJ1dGVzKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gYXR0cmlidXRlcykge1xuICAgICAgICBhdHRyKG5vZGUsIGtleSwgYXR0cmlidXRlc1trZXldKTtcbiAgICB9XG59XG5mdW5jdGlvbiBzZXRfY3VzdG9tX2VsZW1lbnRfZGF0YShub2RlLCBwcm9wLCB2YWx1ZSkge1xuICAgIGlmIChwcm9wIGluIG5vZGUpIHtcbiAgICAgICAgbm9kZVtwcm9wXSA9IHR5cGVvZiBub2RlW3Byb3BdID09PSAnYm9vbGVhbicgJiYgdmFsdWUgPT09ICcnID8gdHJ1ZSA6IHZhbHVlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgYXR0cihub2RlLCBwcm9wLCB2YWx1ZSk7XG4gICAgfVxufVxuZnVuY3Rpb24geGxpbmtfYXR0cihub2RlLCBhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGVOUygnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycsIGF0dHJpYnV0ZSwgdmFsdWUpO1xufVxuZnVuY3Rpb24gZ2V0X2JpbmRpbmdfZ3JvdXBfdmFsdWUoZ3JvdXAsIF9fdmFsdWUsIGNoZWNrZWQpIHtcbiAgICBjb25zdCB2YWx1ZSA9IG5ldyBTZXQoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdyb3VwLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGlmIChncm91cFtpXS5jaGVja2VkKVxuICAgICAgICAgICAgdmFsdWUuYWRkKGdyb3VwW2ldLl9fdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoIWNoZWNrZWQpIHtcbiAgICAgICAgdmFsdWUuZGVsZXRlKF9fdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gQXJyYXkuZnJvbSh2YWx1ZSk7XG59XG5mdW5jdGlvbiB0b19udW1iZXIodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09ICcnID8gbnVsbCA6ICt2YWx1ZTtcbn1cbmZ1bmN0aW9uIHRpbWVfcmFuZ2VzX3RvX2FycmF5KHJhbmdlcykge1xuICAgIGNvbnN0IGFycmF5ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgYXJyYXkucHVzaCh7IHN0YXJ0OiByYW5nZXMuc3RhcnQoaSksIGVuZDogcmFuZ2VzLmVuZChpKSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xufVxuZnVuY3Rpb24gY2hpbGRyZW4oZWxlbWVudCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKGVsZW1lbnQuY2hpbGROb2Rlcyk7XG59XG5mdW5jdGlvbiBpbml0X2NsYWltX2luZm8obm9kZXMpIHtcbiAgICBpZiAobm9kZXMuY2xhaW1faW5mbyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5vZGVzLmNsYWltX2luZm8gPSB7IGxhc3RfaW5kZXg6IDAsIHRvdGFsX2NsYWltZWQ6IDAgfTtcbiAgICB9XG59XG5mdW5jdGlvbiBjbGFpbV9ub2RlKG5vZGVzLCBwcmVkaWNhdGUsIHByb2Nlc3NOb2RlLCBjcmVhdGVOb2RlLCBkb250VXBkYXRlTGFzdEluZGV4ID0gZmFsc2UpIHtcbiAgICAvLyBUcnkgdG8gZmluZCBub2RlcyBpbiBhbiBvcmRlciBzdWNoIHRoYXQgd2UgbGVuZ3RoZW4gdGhlIGxvbmdlc3QgaW5jcmVhc2luZyBzdWJzZXF1ZW5jZVxuICAgIGluaXRfY2xhaW1faW5mbyhub2Rlcyk7XG4gICAgY29uc3QgcmVzdWx0Tm9kZSA9ICgoKSA9PiB7XG4gICAgICAgIC8vIFdlIGZpcnN0IHRyeSB0byBmaW5kIGFuIGVsZW1lbnQgYWZ0ZXIgdGhlIHByZXZpb3VzIG9uZVxuICAgICAgICBmb3IgKGxldCBpID0gbm9kZXMuY2xhaW1faW5mby5sYXN0X2luZGV4OyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgICAgIGlmIChwcmVkaWNhdGUobm9kZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXBsYWNlbWVudCA9IHByb2Nlc3NOb2RlKG5vZGUpO1xuICAgICAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzW2ldID0gcmVwbGFjZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghZG9udFVwZGF0ZUxhc3RJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBub2Rlcy5jbGFpbV9pbmZvLmxhc3RfaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBPdGhlcndpc2UsIHdlIHRyeSB0byBmaW5kIG9uZSBiZWZvcmVcbiAgICAgICAgLy8gV2UgaXRlcmF0ZSBpbiByZXZlcnNlIHNvIHRoYXQgd2UgZG9uJ3QgZ28gdG9vIGZhciBiYWNrXG4gICAgICAgIGZvciAobGV0IGkgPSBub2Rlcy5jbGFpbV9pbmZvLmxhc3RfaW5kZXggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICAgICAgaWYgKHByZWRpY2F0ZShub2RlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gcHJvY2Vzc05vZGUobm9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXNbaV0gPSByZXBsYWNlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFkb250VXBkYXRlTGFzdEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzLmNsYWltX2luZm8ubGFzdF9pbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlcGxhY2VtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2luY2Ugd2Ugc3BsaWNlZCBiZWZvcmUgdGhlIGxhc3RfaW5kZXgsIHdlIGRlY3JlYXNlIGl0XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzLmNsYWltX2luZm8ubGFzdF9pbmRleC0tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB3ZSBjYW4ndCBmaW5kIGFueSBtYXRjaGluZyBub2RlLCB3ZSBjcmVhdGUgYSBuZXcgb25lXG4gICAgICAgIHJldHVybiBjcmVhdGVOb2RlKCk7XG4gICAgfSkoKTtcbiAgICByZXN1bHROb2RlLmNsYWltX29yZGVyID0gbm9kZXMuY2xhaW1faW5mby50b3RhbF9jbGFpbWVkO1xuICAgIG5vZGVzLmNsYWltX2luZm8udG90YWxfY2xhaW1lZCArPSAxO1xuICAgIHJldHVybiByZXN1bHROb2RlO1xufVxuZnVuY3Rpb24gY2xhaW1fZWxlbWVudF9iYXNlKG5vZGVzLCBuYW1lLCBhdHRyaWJ1dGVzLCBjcmVhdGVfZWxlbWVudCkge1xuICAgIHJldHVybiBjbGFpbV9ub2RlKG5vZGVzLCAobm9kZSkgPT4gbm9kZS5ub2RlTmFtZSA9PT0gbmFtZSwgKG5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgcmVtb3ZlID0gW107XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbm9kZS5hdHRyaWJ1dGVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGUgPSBub2RlLmF0dHJpYnV0ZXNbal07XG4gICAgICAgICAgICBpZiAoIWF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlLnB1c2goYXR0cmlidXRlLm5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlbW92ZS5mb3JFYWNoKHYgPT4gbm9kZS5yZW1vdmVBdHRyaWJ1dGUodikpO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0sICgpID0+IGNyZWF0ZV9lbGVtZW50KG5hbWUpKTtcbn1cbmZ1bmN0aW9uIGNsYWltX2VsZW1lbnQobm9kZXMsIG5hbWUsIGF0dHJpYnV0ZXMpIHtcbiAgICByZXR1cm4gY2xhaW1fZWxlbWVudF9iYXNlKG5vZGVzLCBuYW1lLCBhdHRyaWJ1dGVzLCBlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGNsYWltX3N2Z19lbGVtZW50KG5vZGVzLCBuYW1lLCBhdHRyaWJ1dGVzKSB7XG4gICAgcmV0dXJuIGNsYWltX2VsZW1lbnRfYmFzZShub2RlcywgbmFtZSwgYXR0cmlidXRlcywgc3ZnX2VsZW1lbnQpO1xufVxuZnVuY3Rpb24gY2xhaW1fdGV4dChub2RlcywgZGF0YSkge1xuICAgIHJldHVybiBjbGFpbV9ub2RlKG5vZGVzLCAobm9kZSkgPT4gbm9kZS5ub2RlVHlwZSA9PT0gMywgKG5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YVN0ciA9ICcnICsgZGF0YTtcbiAgICAgICAgaWYgKG5vZGUuZGF0YS5zdGFydHNXaXRoKGRhdGFTdHIpKSB7XG4gICAgICAgICAgICBpZiAobm9kZS5kYXRhLmxlbmd0aCAhPT0gZGF0YVN0ci5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5zcGxpdFRleHQoZGF0YVN0ci5sZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbm9kZS5kYXRhID0gZGF0YVN0cjtcbiAgICAgICAgfVxuICAgIH0sICgpID0+IHRleHQoZGF0YSksIHRydWUgLy8gVGV4dCBub2RlcyBzaG91bGQgbm90IHVwZGF0ZSBsYXN0IGluZGV4IHNpbmNlIGl0IGlzIGxpa2VseSBub3Qgd29ydGggaXQgdG8gZWxpbWluYXRlIGFuIGluY3JlYXNpbmcgc3Vic2VxdWVuY2Ugb2YgYWN0dWFsIGVsZW1lbnRzXG4gICAgKTtcbn1cbmZ1bmN0aW9uIGNsYWltX3NwYWNlKG5vZGVzKSB7XG4gICAgcmV0dXJuIGNsYWltX3RleHQobm9kZXMsICcgJyk7XG59XG5mdW5jdGlvbiBmaW5kX2NvbW1lbnQobm9kZXMsIHRleHQsIHN0YXJ0KSB7XG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgbm9kZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gOCAvKiBjb21tZW50IG5vZGUgKi8gJiYgbm9kZS50ZXh0Q29udGVudC50cmltKCkgPT09IHRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBub2Rlcy5sZW5ndGg7XG59XG5mdW5jdGlvbiBjbGFpbV9odG1sX3RhZyhub2Rlcykge1xuICAgIC8vIGZpbmQgaHRtbCBvcGVuaW5nIHRhZ1xuICAgIGNvbnN0IHN0YXJ0X2luZGV4ID0gZmluZF9jb21tZW50KG5vZGVzLCAnSFRNTF9UQUdfU1RBUlQnLCAwKTtcbiAgICBjb25zdCBlbmRfaW5kZXggPSBmaW5kX2NvbW1lbnQobm9kZXMsICdIVE1MX1RBR19FTkQnLCBzdGFydF9pbmRleCk7XG4gICAgaWYgKHN0YXJ0X2luZGV4ID09PSBlbmRfaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBIdG1sVGFnSHlkcmF0aW9uKCk7XG4gICAgfVxuICAgIGluaXRfY2xhaW1faW5mbyhub2Rlcyk7XG4gICAgY29uc3QgaHRtbF90YWdfbm9kZXMgPSBub2Rlcy5zcGxpY2Uoc3RhcnRfaW5kZXgsIGVuZF9pbmRleCArIDEpO1xuICAgIGRldGFjaChodG1sX3RhZ19ub2Rlc1swXSk7XG4gICAgZGV0YWNoKGh0bWxfdGFnX25vZGVzW2h0bWxfdGFnX25vZGVzLmxlbmd0aCAtIDFdKTtcbiAgICBjb25zdCBjbGFpbWVkX25vZGVzID0gaHRtbF90YWdfbm9kZXMuc2xpY2UoMSwgaHRtbF90YWdfbm9kZXMubGVuZ3RoIC0gMSk7XG4gICAgZm9yIChjb25zdCBuIG9mIGNsYWltZWRfbm9kZXMpIHtcbiAgICAgICAgbi5jbGFpbV9vcmRlciA9IG5vZGVzLmNsYWltX2luZm8udG90YWxfY2xhaW1lZDtcbiAgICAgICAgbm9kZXMuY2xhaW1faW5mby50b3RhbF9jbGFpbWVkICs9IDE7XG4gICAgfVxuICAgIHJldHVybiBuZXcgSHRtbFRhZ0h5ZHJhdGlvbihjbGFpbWVkX25vZGVzKTtcbn1cbmZ1bmN0aW9uIHNldF9kYXRhKHRleHQsIGRhdGEpIHtcbiAgICBkYXRhID0gJycgKyBkYXRhO1xuICAgIGlmICh0ZXh0Lndob2xlVGV4dCAhPT0gZGF0YSlcbiAgICAgICAgdGV4dC5kYXRhID0gZGF0YTtcbn1cbmZ1bmN0aW9uIHNldF9pbnB1dF92YWx1ZShpbnB1dCwgdmFsdWUpIHtcbiAgICBpbnB1dC52YWx1ZSA9IHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xufVxuZnVuY3Rpb24gc2V0X2lucHV0X3R5cGUoaW5wdXQsIHR5cGUpIHtcbiAgICB0cnkge1xuICAgICAgICBpbnB1dC50eXBlID0gdHlwZTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbn1cbmZ1bmN0aW9uIHNldF9zdHlsZShub2RlLCBrZXksIHZhbHVlLCBpbXBvcnRhbnQpIHtcbiAgICBub2RlLnN0eWxlLnNldFByb3BlcnR5KGtleSwgdmFsdWUsIGltcG9ydGFudCA/ICdpbXBvcnRhbnQnIDogJycpO1xufVxuZnVuY3Rpb24gc2VsZWN0X29wdGlvbihzZWxlY3QsIHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3Qub3B0aW9ucy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBjb25zdCBvcHRpb24gPSBzZWxlY3Qub3B0aW9uc1tpXTtcbiAgICAgICAgaWYgKG9wdGlvbi5fX3ZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzZWxlY3Quc2VsZWN0ZWRJbmRleCA9IC0xOyAvLyBubyBvcHRpb24gc2hvdWxkIGJlIHNlbGVjdGVkXG59XG5mdW5jdGlvbiBzZWxlY3Rfb3B0aW9ucyhzZWxlY3QsIHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3Qub3B0aW9ucy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBjb25zdCBvcHRpb24gPSBzZWxlY3Qub3B0aW9uc1tpXTtcbiAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gfnZhbHVlLmluZGV4T2Yob3B0aW9uLl9fdmFsdWUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHNlbGVjdF92YWx1ZShzZWxlY3QpIHtcbiAgICBjb25zdCBzZWxlY3RlZF9vcHRpb24gPSBzZWxlY3QucXVlcnlTZWxlY3RvcignOmNoZWNrZWQnKSB8fCBzZWxlY3Qub3B0aW9uc1swXTtcbiAgICByZXR1cm4gc2VsZWN0ZWRfb3B0aW9uICYmIHNlbGVjdGVkX29wdGlvbi5fX3ZhbHVlO1xufVxuZnVuY3Rpb24gc2VsZWN0X211bHRpcGxlX3ZhbHVlKHNlbGVjdCkge1xuICAgIHJldHVybiBbXS5tYXAuY2FsbChzZWxlY3QucXVlcnlTZWxlY3RvckFsbCgnOmNoZWNrZWQnKSwgb3B0aW9uID0+IG9wdGlvbi5fX3ZhbHVlKTtcbn1cbi8vIHVuZm9ydHVuYXRlbHkgdGhpcyBjYW4ndCBiZSBhIGNvbnN0YW50IGFzIHRoYXQgd291bGRuJ3QgYmUgdHJlZS1zaGFrZWFibGVcbi8vIHNvIHdlIGNhY2hlIHRoZSByZXN1bHQgaW5zdGVhZFxubGV0IGNyb3Nzb3JpZ2luO1xuZnVuY3Rpb24gaXNfY3Jvc3NvcmlnaW4oKSB7XG4gICAgaWYgKGNyb3Nzb3JpZ2luID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY3Jvc3NvcmlnaW4gPSBmYWxzZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cucGFyZW50KSB7XG4gICAgICAgICAgICAgICAgdm9pZCB3aW5kb3cucGFyZW50LmRvY3VtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY3Jvc3NvcmlnaW4gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjcm9zc29yaWdpbjtcbn1cbmZ1bmN0aW9uIGFkZF9yZXNpemVfbGlzdGVuZXIobm9kZSwgZm4pIHtcbiAgICBjb25zdCBjb21wdXRlZF9zdHlsZSA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gICAgaWYgKGNvbXB1dGVkX3N0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgICAgICBub2RlLnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICB9XG4gICAgY29uc3QgaWZyYW1lID0gZWxlbWVudCgnaWZyYW1lJyk7XG4gICAgaWZyYW1lLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZGlzcGxheTogYmxvY2s7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyAnICtcbiAgICAgICAgJ292ZXJmbG93OiBoaWRkZW47IGJvcmRlcjogMDsgb3BhY2l0eTogMDsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHotaW5kZXg6IC0xOycpO1xuICAgIGlmcmFtZS5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICBpZnJhbWUudGFiSW5kZXggPSAtMTtcbiAgICBjb25zdCBjcm9zc29yaWdpbiA9IGlzX2Nyb3Nzb3JpZ2luKCk7XG4gICAgbGV0IHVuc3Vic2NyaWJlO1xuICAgIGlmIChjcm9zc29yaWdpbikge1xuICAgICAgICBpZnJhbWUuc3JjID0gXCJkYXRhOnRleHQvaHRtbCw8c2NyaXB0Pm9ucmVzaXplPWZ1bmN0aW9uKCl7cGFyZW50LnBvc3RNZXNzYWdlKDAsJyonKX08L3NjcmlwdD5cIjtcbiAgICAgICAgdW5zdWJzY3JpYmUgPSBsaXN0ZW4od2luZG93LCAnbWVzc2FnZScsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGV2ZW50LnNvdXJjZSA9PT0gaWZyYW1lLmNvbnRlbnRXaW5kb3cpXG4gICAgICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpZnJhbWUuc3JjID0gJ2Fib3V0OmJsYW5rJztcbiAgICAgICAgaWZyYW1lLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgIHVuc3Vic2NyaWJlID0gbGlzdGVuKGlmcmFtZS5jb250ZW50V2luZG93LCAncmVzaXplJywgZm4pO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBhcHBlbmQobm9kZSwgaWZyYW1lKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBpZiAoY3Jvc3NvcmlnaW4pIHtcbiAgICAgICAgICAgIHVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodW5zdWJzY3JpYmUgJiYgaWZyYW1lLmNvbnRlbnRXaW5kb3cpIHtcbiAgICAgICAgICAgIHVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZGV0YWNoKGlmcmFtZSk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHRvZ2dsZV9jbGFzcyhlbGVtZW50LCBuYW1lLCB0b2dnbGUpIHtcbiAgICBlbGVtZW50LmNsYXNzTGlzdFt0b2dnbGUgPyAnYWRkJyA6ICdyZW1vdmUnXShuYW1lKTtcbn1cbmZ1bmN0aW9uIGN1c3RvbV9ldmVudCh0eXBlLCBkZXRhaWwsIGJ1YmJsZXMgPSBmYWxzZSkge1xuICAgIGNvbnN0IGUgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTtcbiAgICBlLmluaXRDdXN0b21FdmVudCh0eXBlLCBidWJibGVzLCBmYWxzZSwgZGV0YWlsKTtcbiAgICByZXR1cm4gZTtcbn1cbmZ1bmN0aW9uIHF1ZXJ5X3NlbGVjdG9yX2FsbChzZWxlY3RvciwgcGFyZW50ID0gZG9jdW1lbnQuYm9keSkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHBhcmVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7XG59XG5jbGFzcyBIdG1sVGFnIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5lID0gdGhpcy5uID0gbnVsbDtcbiAgICB9XG4gICAgYyhodG1sKSB7XG4gICAgICAgIHRoaXMuaChodG1sKTtcbiAgICB9XG4gICAgbShodG1sLCB0YXJnZXQsIGFuY2hvciA9IG51bGwpIHtcbiAgICAgICAgaWYgKCF0aGlzLmUpIHtcbiAgICAgICAgICAgIHRoaXMuZSA9IGVsZW1lbnQodGFyZ2V0Lm5vZGVOYW1lKTtcbiAgICAgICAgICAgIHRoaXMudCA9IHRhcmdldDtcbiAgICAgICAgICAgIHRoaXMuYyhodG1sKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmkoYW5jaG9yKTtcbiAgICB9XG4gICAgaChodG1sKSB7XG4gICAgICAgIHRoaXMuZS5pbm5lckhUTUwgPSBodG1sO1xuICAgICAgICB0aGlzLm4gPSBBcnJheS5mcm9tKHRoaXMuZS5jaGlsZE5vZGVzKTtcbiAgICB9XG4gICAgaShhbmNob3IpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm4ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGluc2VydCh0aGlzLnQsIHRoaXMubltpXSwgYW5jaG9yKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwKGh0bWwpIHtcbiAgICAgICAgdGhpcy5kKCk7XG4gICAgICAgIHRoaXMuaChodG1sKTtcbiAgICAgICAgdGhpcy5pKHRoaXMuYSk7XG4gICAgfVxuICAgIGQoKSB7XG4gICAgICAgIHRoaXMubi5mb3JFYWNoKGRldGFjaCk7XG4gICAgfVxufVxuY2xhc3MgSHRtbFRhZ0h5ZHJhdGlvbiBleHRlbmRzIEh0bWxUYWcge1xuICAgIGNvbnN0cnVjdG9yKGNsYWltZWRfbm9kZXMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5lID0gdGhpcy5uID0gbnVsbDtcbiAgICAgICAgdGhpcy5sID0gY2xhaW1lZF9ub2RlcztcbiAgICB9XG4gICAgYyhodG1sKSB7XG4gICAgICAgIGlmICh0aGlzLmwpIHtcbiAgICAgICAgICAgIHRoaXMubiA9IHRoaXMubDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLmMoaHRtbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaShhbmNob3IpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm4ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGluc2VydF9oeWRyYXRpb24odGhpcy50LCB0aGlzLm5baV0sIGFuY2hvcik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBhdHRyaWJ1dGVfdG9fb2JqZWN0KGF0dHJpYnV0ZXMpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgIHJlc3VsdFthdHRyaWJ1dGUubmFtZV0gPSBhdHRyaWJ1dGUudmFsdWU7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBnZXRfY3VzdG9tX2VsZW1lbnRzX3Nsb3RzKGVsZW1lbnQpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBlbGVtZW50LmNoaWxkTm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICByZXN1bHRbbm9kZS5zbG90IHx8ICdkZWZhdWx0J10gPSB0cnVlO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmNvbnN0IGFjdGl2ZV9kb2NzID0gbmV3IFNldCgpO1xubGV0IGFjdGl2ZSA9IDA7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vZGFya3NreWFwcC9zdHJpbmctaGFzaC9ibG9iL21hc3Rlci9pbmRleC5qc1xuZnVuY3Rpb24gaGFzaChzdHIpIHtcbiAgICBsZXQgaGFzaCA9IDUzODE7XG4gICAgbGV0IGkgPSBzdHIubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pXG4gICAgICAgIGhhc2ggPSAoKGhhc2ggPDwgNSkgLSBoYXNoKSBeIHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgIHJldHVybiBoYXNoID4+PiAwO1xufVxuZnVuY3Rpb24gY3JlYXRlX3J1bGUobm9kZSwgYSwgYiwgZHVyYXRpb24sIGRlbGF5LCBlYXNlLCBmbiwgdWlkID0gMCkge1xuICAgIGNvbnN0IHN0ZXAgPSAxNi42NjYgLyBkdXJhdGlvbjtcbiAgICBsZXQga2V5ZnJhbWVzID0gJ3tcXG4nO1xuICAgIGZvciAobGV0IHAgPSAwOyBwIDw9IDE7IHAgKz0gc3RlcCkge1xuICAgICAgICBjb25zdCB0ID0gYSArIChiIC0gYSkgKiBlYXNlKHApO1xuICAgICAgICBrZXlmcmFtZXMgKz0gcCAqIDEwMCArIGAleyR7Zm4odCwgMSAtIHQpfX1cXG5gO1xuICAgIH1cbiAgICBjb25zdCBydWxlID0ga2V5ZnJhbWVzICsgYDEwMCUgeyR7Zm4oYiwgMSAtIGIpfX1cXG59YDtcbiAgICBjb25zdCBuYW1lID0gYF9fc3ZlbHRlXyR7aGFzaChydWxlKX1fJHt1aWR9YDtcbiAgICBjb25zdCBkb2MgPSBnZXRfcm9vdF9mb3Jfc3R5bGUobm9kZSk7XG4gICAgYWN0aXZlX2RvY3MuYWRkKGRvYyk7XG4gICAgY29uc3Qgc3R5bGVzaGVldCA9IGRvYy5fX3N2ZWx0ZV9zdHlsZXNoZWV0IHx8IChkb2MuX19zdmVsdGVfc3R5bGVzaGVldCA9IGFwcGVuZF9lbXB0eV9zdHlsZXNoZWV0KG5vZGUpLnNoZWV0KTtcbiAgICBjb25zdCBjdXJyZW50X3J1bGVzID0gZG9jLl9fc3ZlbHRlX3J1bGVzIHx8IChkb2MuX19zdmVsdGVfcnVsZXMgPSB7fSk7XG4gICAgaWYgKCFjdXJyZW50X3J1bGVzW25hbWVdKSB7XG4gICAgICAgIGN1cnJlbnRfcnVsZXNbbmFtZV0gPSB0cnVlO1xuICAgICAgICBzdHlsZXNoZWV0Lmluc2VydFJ1bGUoYEBrZXlmcmFtZXMgJHtuYW1lfSAke3J1bGV9YCwgc3R5bGVzaGVldC5jc3NSdWxlcy5sZW5ndGgpO1xuICAgIH1cbiAgICBjb25zdCBhbmltYXRpb24gPSBub2RlLnN0eWxlLmFuaW1hdGlvbiB8fCAnJztcbiAgICBub2RlLnN0eWxlLmFuaW1hdGlvbiA9IGAke2FuaW1hdGlvbiA/IGAke2FuaW1hdGlvbn0sIGAgOiAnJ30ke25hbWV9ICR7ZHVyYXRpb259bXMgbGluZWFyICR7ZGVsYXl9bXMgMSBib3RoYDtcbiAgICBhY3RpdmUgKz0gMTtcbiAgICByZXR1cm4gbmFtZTtcbn1cbmZ1bmN0aW9uIGRlbGV0ZV9ydWxlKG5vZGUsIG5hbWUpIHtcbiAgICBjb25zdCBwcmV2aW91cyA9IChub2RlLnN0eWxlLmFuaW1hdGlvbiB8fCAnJykuc3BsaXQoJywgJyk7XG4gICAgY29uc3QgbmV4dCA9IHByZXZpb3VzLmZpbHRlcihuYW1lXG4gICAgICAgID8gYW5pbSA9PiBhbmltLmluZGV4T2YobmFtZSkgPCAwIC8vIHJlbW92ZSBzcGVjaWZpYyBhbmltYXRpb25cbiAgICAgICAgOiBhbmltID0+IGFuaW0uaW5kZXhPZignX19zdmVsdGUnKSA9PT0gLTEgLy8gcmVtb3ZlIGFsbCBTdmVsdGUgYW5pbWF0aW9uc1xuICAgICk7XG4gICAgY29uc3QgZGVsZXRlZCA9IHByZXZpb3VzLmxlbmd0aCAtIG5leHQubGVuZ3RoO1xuICAgIGlmIChkZWxldGVkKSB7XG4gICAgICAgIG5vZGUuc3R5bGUuYW5pbWF0aW9uID0gbmV4dC5qb2luKCcsICcpO1xuICAgICAgICBhY3RpdmUgLT0gZGVsZXRlZDtcbiAgICAgICAgaWYgKCFhY3RpdmUpXG4gICAgICAgICAgICBjbGVhcl9ydWxlcygpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNsZWFyX3J1bGVzKCkge1xuICAgIHJhZigoKSA9PiB7XG4gICAgICAgIGlmIChhY3RpdmUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGFjdGl2ZV9kb2NzLmZvckVhY2goZG9jID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlc2hlZXQgPSBkb2MuX19zdmVsdGVfc3R5bGVzaGVldDtcbiAgICAgICAgICAgIGxldCBpID0gc3R5bGVzaGVldC5jc3NSdWxlcy5sZW5ndGg7XG4gICAgICAgICAgICB3aGlsZSAoaS0tKVxuICAgICAgICAgICAgICAgIHN0eWxlc2hlZXQuZGVsZXRlUnVsZShpKTtcbiAgICAgICAgICAgIGRvYy5fX3N2ZWx0ZV9ydWxlcyA9IHt9O1xuICAgICAgICB9KTtcbiAgICAgICAgYWN0aXZlX2RvY3MuY2xlYXIoKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlX2FuaW1hdGlvbihub2RlLCBmcm9tLCBmbiwgcGFyYW1zKSB7XG4gICAgaWYgKCFmcm9tKVxuICAgICAgICByZXR1cm4gbm9vcDtcbiAgICBjb25zdCB0byA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgaWYgKGZyb20ubGVmdCA9PT0gdG8ubGVmdCAmJiBmcm9tLnJpZ2h0ID09PSB0by5yaWdodCAmJiBmcm9tLnRvcCA9PT0gdG8udG9wICYmIGZyb20uYm90dG9tID09PSB0by5ib3R0b20pXG4gICAgICAgIHJldHVybiBub29wO1xuICAgIGNvbnN0IHsgZGVsYXkgPSAwLCBkdXJhdGlvbiA9IDMwMCwgZWFzaW5nID0gaWRlbnRpdHksIFxuICAgIC8vIEB0cy1pZ25vcmUgdG9kbzogc2hvdWxkIHRoaXMgYmUgc2VwYXJhdGVkIGZyb20gZGVzdHJ1Y3R1cmluZz8gT3Igc3RhcnQvZW5kIGFkZGVkIHRvIHB1YmxpYyBhcGkgYW5kIGRvY3VtZW50YXRpb24/XG4gICAgc3RhcnQ6IHN0YXJ0X3RpbWUgPSBub3coKSArIGRlbGF5LCBcbiAgICAvLyBAdHMtaWdub3JlIHRvZG86XG4gICAgZW5kID0gc3RhcnRfdGltZSArIGR1cmF0aW9uLCB0aWNrID0gbm9vcCwgY3NzIH0gPSBmbihub2RlLCB7IGZyb20sIHRvIH0sIHBhcmFtcyk7XG4gICAgbGV0IHJ1bm5pbmcgPSB0cnVlO1xuICAgIGxldCBzdGFydGVkID0gZmFsc2U7XG4gICAgbGV0IG5hbWU7XG4gICAgZnVuY3Rpb24gc3RhcnQoKSB7XG4gICAgICAgIGlmIChjc3MpIHtcbiAgICAgICAgICAgIG5hbWUgPSBjcmVhdGVfcnVsZShub2RlLCAwLCAxLCBkdXJhdGlvbiwgZGVsYXksIGVhc2luZywgY3NzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWRlbGF5KSB7XG4gICAgICAgICAgICBzdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBzdG9wKCkge1xuICAgICAgICBpZiAoY3NzKVxuICAgICAgICAgICAgZGVsZXRlX3J1bGUobm9kZSwgbmFtZSk7XG4gICAgICAgIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICB9XG4gICAgbG9vcChub3cgPT4ge1xuICAgICAgICBpZiAoIXN0YXJ0ZWQgJiYgbm93ID49IHN0YXJ0X3RpbWUpIHtcbiAgICAgICAgICAgIHN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydGVkICYmIG5vdyA+PSBlbmQpIHtcbiAgICAgICAgICAgIHRpY2soMSwgMCk7XG4gICAgICAgICAgICBzdG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFydW5uaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHAgPSBub3cgLSBzdGFydF90aW1lO1xuICAgICAgICAgICAgY29uc3QgdCA9IDAgKyAxICogZWFzaW5nKHAgLyBkdXJhdGlvbik7XG4gICAgICAgICAgICB0aWNrKHQsIDEgLSB0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgICBzdGFydCgpO1xuICAgIHRpY2soMCwgMSk7XG4gICAgcmV0dXJuIHN0b3A7XG59XG5mdW5jdGlvbiBmaXhfcG9zaXRpb24obm9kZSkge1xuICAgIGNvbnN0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTtcbiAgICBpZiAoc3R5bGUucG9zaXRpb24gIT09ICdhYnNvbHV0ZScgJiYgc3R5bGUucG9zaXRpb24gIT09ICdmaXhlZCcpIHtcbiAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBzdHlsZTtcbiAgICAgICAgY29uc3QgYSA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIG5vZGUuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgICBub2RlLnN0eWxlLndpZHRoID0gd2lkdGg7XG4gICAgICAgIG5vZGUuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICBhZGRfdHJhbnNmb3JtKG5vZGUsIGEpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFkZF90cmFuc2Zvcm0obm9kZSwgYSkge1xuICAgIGNvbnN0IGIgPSBub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGlmIChhLmxlZnQgIT09IGIubGVmdCB8fCBhLnRvcCAhPT0gYi50b3ApIHtcbiAgICAgICAgY29uc3Qgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKG5vZGUpO1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm0gPSBzdHlsZS50cmFuc2Zvcm0gPT09ICdub25lJyA/ICcnIDogc3R5bGUudHJhbnNmb3JtO1xuICAgICAgICBub2RlLnN0eWxlLnRyYW5zZm9ybSA9IGAke3RyYW5zZm9ybX0gdHJhbnNsYXRlKCR7YS5sZWZ0IC0gYi5sZWZ0fXB4LCAke2EudG9wIC0gYi50b3B9cHgpYDtcbiAgICB9XG59XG5cbmxldCBjdXJyZW50X2NvbXBvbmVudDtcbmZ1bmN0aW9uIHNldF9jdXJyZW50X2NvbXBvbmVudChjb21wb25lbnQpIHtcbiAgICBjdXJyZW50X2NvbXBvbmVudCA9IGNvbXBvbmVudDtcbn1cbmZ1bmN0aW9uIGdldF9jdXJyZW50X2NvbXBvbmVudCgpIHtcbiAgICBpZiAoIWN1cnJlbnRfY29tcG9uZW50KVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Z1bmN0aW9uIGNhbGxlZCBvdXRzaWRlIGNvbXBvbmVudCBpbml0aWFsaXphdGlvbicpO1xuICAgIHJldHVybiBjdXJyZW50X2NvbXBvbmVudDtcbn1cbmZ1bmN0aW9uIGJlZm9yZVVwZGF0ZShmbikge1xuICAgIGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLmJlZm9yZV91cGRhdGUucHVzaChmbik7XG59XG5mdW5jdGlvbiBvbk1vdW50KGZuKSB7XG4gICAgZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQub25fbW91bnQucHVzaChmbik7XG59XG5mdW5jdGlvbiBhZnRlclVwZGF0ZShmbikge1xuICAgIGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLmFmdGVyX3VwZGF0ZS5wdXNoKGZuKTtcbn1cbmZ1bmN0aW9uIG9uRGVzdHJveShmbikge1xuICAgIGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLm9uX2Rlc3Ryb3kucHVzaChmbik7XG59XG5mdW5jdGlvbiBjcmVhdGVFdmVudERpc3BhdGNoZXIoKSB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gZ2V0X2N1cnJlbnRfY29tcG9uZW50KCk7XG4gICAgcmV0dXJuICh0eXBlLCBkZXRhaWwpID0+IHtcbiAgICAgICAgY29uc3QgY2FsbGJhY2tzID0gY29tcG9uZW50LiQkLmNhbGxiYWNrc1t0eXBlXTtcbiAgICAgICAgaWYgKGNhbGxiYWNrcykge1xuICAgICAgICAgICAgLy8gVE9ETyBhcmUgdGhlcmUgc2l0dWF0aW9ucyB3aGVyZSBldmVudHMgY291bGQgYmUgZGlzcGF0Y2hlZFxuICAgICAgICAgICAgLy8gaW4gYSBzZXJ2ZXIgKG5vbi1ET00pIGVudmlyb25tZW50P1xuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBjdXN0b21fZXZlbnQodHlwZSwgZGV0YWlsKTtcbiAgICAgICAgICAgIGNhbGxiYWNrcy5zbGljZSgpLmZvckVhY2goZm4gPT4ge1xuICAgICAgICAgICAgICAgIGZuLmNhbGwoY29tcG9uZW50LCBldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG59XG5mdW5jdGlvbiBzZXRDb250ZXh0KGtleSwgY29udGV4dCkge1xuICAgIGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLmNvbnRleHQuc2V0KGtleSwgY29udGV4dCk7XG59XG5mdW5jdGlvbiBnZXRDb250ZXh0KGtleSkge1xuICAgIHJldHVybiBnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5jb250ZXh0LmdldChrZXkpO1xufVxuZnVuY3Rpb24gZ2V0QWxsQ29udGV4dHMoKSB7XG4gICAgcmV0dXJuIGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLmNvbnRleHQ7XG59XG5mdW5jdGlvbiBoYXNDb250ZXh0KGtleSkge1xuICAgIHJldHVybiBnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5jb250ZXh0LmhhcyhrZXkpO1xufVxuLy8gVE9ETyBmaWd1cmUgb3V0IGlmIHdlIHN0aWxsIHdhbnQgdG8gc3VwcG9ydFxuLy8gc2hvcnRoYW5kIGV2ZW50cywgb3IgaWYgd2Ugd2FudCB0byBpbXBsZW1lbnRcbi8vIGEgcmVhbCBidWJibGluZyBtZWNoYW5pc21cbmZ1bmN0aW9uIGJ1YmJsZShjb21wb25lbnQsIGV2ZW50KSB7XG4gICAgY29uc3QgY2FsbGJhY2tzID0gY29tcG9uZW50LiQkLmNhbGxiYWNrc1tldmVudC50eXBlXTtcbiAgICBpZiAoY2FsbGJhY2tzKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY2FsbGJhY2tzLnNsaWNlKCkuZm9yRWFjaChmbiA9PiBmbi5jYWxsKHRoaXMsIGV2ZW50KSk7XG4gICAgfVxufVxuXG5jb25zdCBkaXJ0eV9jb21wb25lbnRzID0gW107XG5jb25zdCBpbnRyb3MgPSB7IGVuYWJsZWQ6IGZhbHNlIH07XG5jb25zdCBiaW5kaW5nX2NhbGxiYWNrcyA9IFtdO1xuY29uc3QgcmVuZGVyX2NhbGxiYWNrcyA9IFtdO1xuY29uc3QgZmx1c2hfY2FsbGJhY2tzID0gW107XG5jb25zdCByZXNvbHZlZF9wcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5sZXQgdXBkYXRlX3NjaGVkdWxlZCA9IGZhbHNlO1xuZnVuY3Rpb24gc2NoZWR1bGVfdXBkYXRlKCkge1xuICAgIGlmICghdXBkYXRlX3NjaGVkdWxlZCkge1xuICAgICAgICB1cGRhdGVfc2NoZWR1bGVkID0gdHJ1ZTtcbiAgICAgICAgcmVzb2x2ZWRfcHJvbWlzZS50aGVuKGZsdXNoKTtcbiAgICB9XG59XG5mdW5jdGlvbiB0aWNrKCkge1xuICAgIHNjaGVkdWxlX3VwZGF0ZSgpO1xuICAgIHJldHVybiByZXNvbHZlZF9wcm9taXNlO1xufVxuZnVuY3Rpb24gYWRkX3JlbmRlcl9jYWxsYmFjayhmbikge1xuICAgIHJlbmRlcl9jYWxsYmFja3MucHVzaChmbik7XG59XG5mdW5jdGlvbiBhZGRfZmx1c2hfY2FsbGJhY2soZm4pIHtcbiAgICBmbHVzaF9jYWxsYmFja3MucHVzaChmbik7XG59XG5sZXQgZmx1c2hpbmcgPSBmYWxzZTtcbmNvbnN0IHNlZW5fY2FsbGJhY2tzID0gbmV3IFNldCgpO1xuZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgaWYgKGZsdXNoaW5nKVxuICAgICAgICByZXR1cm47XG4gICAgZmx1c2hpbmcgPSB0cnVlO1xuICAgIGRvIHtcbiAgICAgICAgLy8gZmlyc3QsIGNhbGwgYmVmb3JlVXBkYXRlIGZ1bmN0aW9uc1xuICAgICAgICAvLyBhbmQgdXBkYXRlIGNvbXBvbmVudHNcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXJ0eV9jb21wb25lbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnQgPSBkaXJ0eV9jb21wb25lbnRzW2ldO1xuICAgICAgICAgICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgICAgICAgICB1cGRhdGUoY29tcG9uZW50LiQkKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRfY3VycmVudF9jb21wb25lbnQobnVsbCk7XG4gICAgICAgIGRpcnR5X2NvbXBvbmVudHMubGVuZ3RoID0gMDtcbiAgICAgICAgd2hpbGUgKGJpbmRpbmdfY2FsbGJhY2tzLmxlbmd0aClcbiAgICAgICAgICAgIGJpbmRpbmdfY2FsbGJhY2tzLnBvcCgpKCk7XG4gICAgICAgIC8vIHRoZW4sIG9uY2UgY29tcG9uZW50cyBhcmUgdXBkYXRlZCwgY2FsbFxuICAgICAgICAvLyBhZnRlclVwZGF0ZSBmdW5jdGlvbnMuIFRoaXMgbWF5IGNhdXNlXG4gICAgICAgIC8vIHN1YnNlcXVlbnQgdXBkYXRlcy4uLlxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlbmRlcl9jYWxsYmFja3MubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gcmVuZGVyX2NhbGxiYWNrc1tpXTtcbiAgICAgICAgICAgIGlmICghc2Vlbl9jYWxsYmFja3MuaGFzKGNhbGxiYWNrKSkge1xuICAgICAgICAgICAgICAgIC8vIC4uLnNvIGd1YXJkIGFnYWluc3QgaW5maW5pdGUgbG9vcHNcbiAgICAgICAgICAgICAgICBzZWVuX2NhbGxiYWNrcy5hZGQoY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyX2NhbGxiYWNrcy5sZW5ndGggPSAwO1xuICAgIH0gd2hpbGUgKGRpcnR5X2NvbXBvbmVudHMubGVuZ3RoKTtcbiAgICB3aGlsZSAoZmx1c2hfY2FsbGJhY2tzLmxlbmd0aCkge1xuICAgICAgICBmbHVzaF9jYWxsYmFja3MucG9wKCkoKTtcbiAgICB9XG4gICAgdXBkYXRlX3NjaGVkdWxlZCA9IGZhbHNlO1xuICAgIGZsdXNoaW5nID0gZmFsc2U7XG4gICAgc2Vlbl9jYWxsYmFja3MuY2xlYXIoKTtcbn1cbmZ1bmN0aW9uIHVwZGF0ZSgkJCkge1xuICAgIGlmICgkJC5mcmFnbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAkJC51cGRhdGUoKTtcbiAgICAgICAgcnVuX2FsbCgkJC5iZWZvcmVfdXBkYXRlKTtcbiAgICAgICAgY29uc3QgZGlydHkgPSAkJC5kaXJ0eTtcbiAgICAgICAgJCQuZGlydHkgPSBbLTFdO1xuICAgICAgICAkJC5mcmFnbWVudCAmJiAkJC5mcmFnbWVudC5wKCQkLmN0eCwgZGlydHkpO1xuICAgICAgICAkJC5hZnRlcl91cGRhdGUuZm9yRWFjaChhZGRfcmVuZGVyX2NhbGxiYWNrKTtcbiAgICB9XG59XG5cbmxldCBwcm9taXNlO1xuZnVuY3Rpb24gd2FpdCgpIHtcbiAgICBpZiAoIXByb21pc2UpIHtcbiAgICAgICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICBwcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcHJvbWlzZSA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cbmZ1bmN0aW9uIGRpc3BhdGNoKG5vZGUsIGRpcmVjdGlvbiwga2luZCkge1xuICAgIG5vZGUuZGlzcGF0Y2hFdmVudChjdXN0b21fZXZlbnQoYCR7ZGlyZWN0aW9uID8gJ2ludHJvJyA6ICdvdXRybyd9JHtraW5kfWApKTtcbn1cbmNvbnN0IG91dHJvaW5nID0gbmV3IFNldCgpO1xubGV0IG91dHJvcztcbmZ1bmN0aW9uIGdyb3VwX291dHJvcygpIHtcbiAgICBvdXRyb3MgPSB7XG4gICAgICAgIHI6IDAsXG4gICAgICAgIGM6IFtdLFxuICAgICAgICBwOiBvdXRyb3MgLy8gcGFyZW50IGdyb3VwXG4gICAgfTtcbn1cbmZ1bmN0aW9uIGNoZWNrX291dHJvcygpIHtcbiAgICBpZiAoIW91dHJvcy5yKSB7XG4gICAgICAgIHJ1bl9hbGwob3V0cm9zLmMpO1xuICAgIH1cbiAgICBvdXRyb3MgPSBvdXRyb3MucDtcbn1cbmZ1bmN0aW9uIHRyYW5zaXRpb25faW4oYmxvY2ssIGxvY2FsKSB7XG4gICAgaWYgKGJsb2NrICYmIGJsb2NrLmkpIHtcbiAgICAgICAgb3V0cm9pbmcuZGVsZXRlKGJsb2NrKTtcbiAgICAgICAgYmxvY2suaShsb2NhbCk7XG4gICAgfVxufVxuZnVuY3Rpb24gdHJhbnNpdGlvbl9vdXQoYmxvY2ssIGxvY2FsLCBkZXRhY2gsIGNhbGxiYWNrKSB7XG4gICAgaWYgKGJsb2NrICYmIGJsb2NrLm8pIHtcbiAgICAgICAgaWYgKG91dHJvaW5nLmhhcyhibG9jaykpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIG91dHJvaW5nLmFkZChibG9jayk7XG4gICAgICAgIG91dHJvcy5jLnB1c2goKCkgPT4ge1xuICAgICAgICAgICAgb3V0cm9pbmcuZGVsZXRlKGJsb2NrKTtcbiAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGlmIChkZXRhY2gpXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrLmQoMSk7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGJsb2NrLm8obG9jYWwpO1xuICAgIH1cbn1cbmNvbnN0IG51bGxfdHJhbnNpdGlvbiA9IHsgZHVyYXRpb246IDAgfTtcbmZ1bmN0aW9uIGNyZWF0ZV9pbl90cmFuc2l0aW9uKG5vZGUsIGZuLCBwYXJhbXMpIHtcbiAgICBsZXQgY29uZmlnID0gZm4obm9kZSwgcGFyYW1zKTtcbiAgICBsZXQgcnVubmluZyA9IGZhbHNlO1xuICAgIGxldCBhbmltYXRpb25fbmFtZTtcbiAgICBsZXQgdGFzaztcbiAgICBsZXQgdWlkID0gMDtcbiAgICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgICBpZiAoYW5pbWF0aW9uX25hbWUpXG4gICAgICAgICAgICBkZWxldGVfcnVsZShub2RlLCBhbmltYXRpb25fbmFtZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdvKCkge1xuICAgICAgICBjb25zdCB7IGRlbGF5ID0gMCwgZHVyYXRpb24gPSAzMDAsIGVhc2luZyA9IGlkZW50aXR5LCB0aWNrID0gbm9vcCwgY3NzIH0gPSBjb25maWcgfHwgbnVsbF90cmFuc2l0aW9uO1xuICAgICAgICBpZiAoY3NzKVxuICAgICAgICAgICAgYW5pbWF0aW9uX25hbWUgPSBjcmVhdGVfcnVsZShub2RlLCAwLCAxLCBkdXJhdGlvbiwgZGVsYXksIGVhc2luZywgY3NzLCB1aWQrKyk7XG4gICAgICAgIHRpY2soMCwgMSk7XG4gICAgICAgIGNvbnN0IHN0YXJ0X3RpbWUgPSBub3coKSArIGRlbGF5O1xuICAgICAgICBjb25zdCBlbmRfdGltZSA9IHN0YXJ0X3RpbWUgKyBkdXJhdGlvbjtcbiAgICAgICAgaWYgKHRhc2spXG4gICAgICAgICAgICB0YXNrLmFib3J0KCk7XG4gICAgICAgIHJ1bm5pbmcgPSB0cnVlO1xuICAgICAgICBhZGRfcmVuZGVyX2NhbGxiYWNrKCgpID0+IGRpc3BhdGNoKG5vZGUsIHRydWUsICdzdGFydCcpKTtcbiAgICAgICAgdGFzayA9IGxvb3Aobm93ID0+IHtcbiAgICAgICAgICAgIGlmIChydW5uaW5nKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vdyA+PSBlbmRfdGltZSkge1xuICAgICAgICAgICAgICAgICAgICB0aWNrKDEsIDApO1xuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaChub2RlLCB0cnVlLCAnZW5kJyk7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5vdyA+PSBzdGFydF90aW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlYXNpbmcoKG5vdyAtIHN0YXJ0X3RpbWUpIC8gZHVyYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB0aWNrKHQsIDEgLSB0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcnVubmluZztcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGxldCBzdGFydGVkID0gZmFsc2U7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnQoKSB7XG4gICAgICAgICAgICBpZiAoc3RhcnRlZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBzdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGRlbGV0ZV9ydWxlKG5vZGUpO1xuICAgICAgICAgICAgaWYgKGlzX2Z1bmN0aW9uKGNvbmZpZykpIHtcbiAgICAgICAgICAgICAgICBjb25maWcgPSBjb25maWcoKTtcbiAgICAgICAgICAgICAgICB3YWl0KCkudGhlbihnbyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBnbygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbnZhbGlkYXRlKCkge1xuICAgICAgICAgICAgc3RhcnRlZCA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBlbmQoKSB7XG4gICAgICAgICAgICBpZiAocnVubmluZykge1xuICAgICAgICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICAgICAgICBydW5uaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlX291dF90cmFuc2l0aW9uKG5vZGUsIGZuLCBwYXJhbXMpIHtcbiAgICBsZXQgY29uZmlnID0gZm4obm9kZSwgcGFyYW1zKTtcbiAgICBsZXQgcnVubmluZyA9IHRydWU7XG4gICAgbGV0IGFuaW1hdGlvbl9uYW1lO1xuICAgIGNvbnN0IGdyb3VwID0gb3V0cm9zO1xuICAgIGdyb3VwLnIgKz0gMTtcbiAgICBmdW5jdGlvbiBnbygpIHtcbiAgICAgICAgY29uc3QgeyBkZWxheSA9IDAsIGR1cmF0aW9uID0gMzAwLCBlYXNpbmcgPSBpZGVudGl0eSwgdGljayA9IG5vb3AsIGNzcyB9ID0gY29uZmlnIHx8IG51bGxfdHJhbnNpdGlvbjtcbiAgICAgICAgaWYgKGNzcylcbiAgICAgICAgICAgIGFuaW1hdGlvbl9uYW1lID0gY3JlYXRlX3J1bGUobm9kZSwgMSwgMCwgZHVyYXRpb24sIGRlbGF5LCBlYXNpbmcsIGNzcyk7XG4gICAgICAgIGNvbnN0IHN0YXJ0X3RpbWUgPSBub3coKSArIGRlbGF5O1xuICAgICAgICBjb25zdCBlbmRfdGltZSA9IHN0YXJ0X3RpbWUgKyBkdXJhdGlvbjtcbiAgICAgICAgYWRkX3JlbmRlcl9jYWxsYmFjaygoKSA9PiBkaXNwYXRjaChub2RlLCBmYWxzZSwgJ3N0YXJ0JykpO1xuICAgICAgICBsb29wKG5vdyA9PiB7XG4gICAgICAgICAgICBpZiAocnVubmluZykge1xuICAgICAgICAgICAgICAgIGlmIChub3cgPj0gZW5kX3RpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGljaygwLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gobm9kZSwgZmFsc2UsICdlbmQnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEtLWdyb3VwLnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgd2lsbCByZXN1bHQgaW4gYGVuZCgpYCBiZWluZyBjYWxsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzbyB3ZSBkb24ndCBuZWVkIHRvIGNsZWFuIHVwIGhlcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9hbGwoZ3JvdXAuYyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobm93ID49IHN0YXJ0X3RpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGVhc2luZygobm93IC0gc3RhcnRfdGltZSkgLyBkdXJhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIHRpY2soMSAtIHQsIHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBydW5uaW5nO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGlzX2Z1bmN0aW9uKGNvbmZpZykpIHtcbiAgICAgICAgd2FpdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgY29uZmlnID0gY29uZmlnKCk7XG4gICAgICAgICAgICBnbygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGdvKCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGVuZChyZXNldCkge1xuICAgICAgICAgICAgaWYgKHJlc2V0ICYmIGNvbmZpZy50aWNrKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLnRpY2soMSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocnVubmluZykge1xuICAgICAgICAgICAgICAgIGlmIChhbmltYXRpb25fbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlX3J1bGUobm9kZSwgYW5pbWF0aW9uX25hbWUpO1xuICAgICAgICAgICAgICAgIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG59XG5mdW5jdGlvbiBjcmVhdGVfYmlkaXJlY3Rpb25hbF90cmFuc2l0aW9uKG5vZGUsIGZuLCBwYXJhbXMsIGludHJvKSB7XG4gICAgbGV0IGNvbmZpZyA9IGZuKG5vZGUsIHBhcmFtcyk7XG4gICAgbGV0IHQgPSBpbnRybyA/IDAgOiAxO1xuICAgIGxldCBydW5uaW5nX3Byb2dyYW0gPSBudWxsO1xuICAgIGxldCBwZW5kaW5nX3Byb2dyYW0gPSBudWxsO1xuICAgIGxldCBhbmltYXRpb25fbmFtZSA9IG51bGw7XG4gICAgZnVuY3Rpb24gY2xlYXJfYW5pbWF0aW9uKCkge1xuICAgICAgICBpZiAoYW5pbWF0aW9uX25hbWUpXG4gICAgICAgICAgICBkZWxldGVfcnVsZShub2RlLCBhbmltYXRpb25fbmFtZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluaXQocHJvZ3JhbSwgZHVyYXRpb24pIHtcbiAgICAgICAgY29uc3QgZCA9IChwcm9ncmFtLmIgLSB0KTtcbiAgICAgICAgZHVyYXRpb24gKj0gTWF0aC5hYnMoZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhOiB0LFxuICAgICAgICAgICAgYjogcHJvZ3JhbS5iLFxuICAgICAgICAgICAgZCxcbiAgICAgICAgICAgIGR1cmF0aW9uLFxuICAgICAgICAgICAgc3RhcnQ6IHByb2dyYW0uc3RhcnQsXG4gICAgICAgICAgICBlbmQ6IHByb2dyYW0uc3RhcnQgKyBkdXJhdGlvbixcbiAgICAgICAgICAgIGdyb3VwOiBwcm9ncmFtLmdyb3VwXG4gICAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdvKGIpIHtcbiAgICAgICAgY29uc3QgeyBkZWxheSA9IDAsIGR1cmF0aW9uID0gMzAwLCBlYXNpbmcgPSBpZGVudGl0eSwgdGljayA9IG5vb3AsIGNzcyB9ID0gY29uZmlnIHx8IG51bGxfdHJhbnNpdGlvbjtcbiAgICAgICAgY29uc3QgcHJvZ3JhbSA9IHtcbiAgICAgICAgICAgIHN0YXJ0OiBub3coKSArIGRlbGF5LFxuICAgICAgICAgICAgYlxuICAgICAgICB9O1xuICAgICAgICBpZiAoIWIpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgdG9kbzogaW1wcm92ZSB0eXBpbmdzXG4gICAgICAgICAgICBwcm9ncmFtLmdyb3VwID0gb3V0cm9zO1xuICAgICAgICAgICAgb3V0cm9zLnIgKz0gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocnVubmluZ19wcm9ncmFtIHx8IHBlbmRpbmdfcHJvZ3JhbSkge1xuICAgICAgICAgICAgcGVuZGluZ19wcm9ncmFtID0gcHJvZ3JhbTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgYW4gaW50cm8sIGFuZCB0aGVyZSdzIGEgZGVsYXksIHdlIG5lZWQgdG8gZG9cbiAgICAgICAgICAgIC8vIGFuIGluaXRpYWwgdGljayBhbmQvb3IgYXBwbHkgQ1NTIGFuaW1hdGlvbiBpbW1lZGlhdGVseVxuICAgICAgICAgICAgaWYgKGNzcykge1xuICAgICAgICAgICAgICAgIGNsZWFyX2FuaW1hdGlvbigpO1xuICAgICAgICAgICAgICAgIGFuaW1hdGlvbl9uYW1lID0gY3JlYXRlX3J1bGUobm9kZSwgdCwgYiwgZHVyYXRpb24sIGRlbGF5LCBlYXNpbmcsIGNzcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYilcbiAgICAgICAgICAgICAgICB0aWNrKDAsIDEpO1xuICAgICAgICAgICAgcnVubmluZ19wcm9ncmFtID0gaW5pdChwcm9ncmFtLCBkdXJhdGlvbik7XG4gICAgICAgICAgICBhZGRfcmVuZGVyX2NhbGxiYWNrKCgpID0+IGRpc3BhdGNoKG5vZGUsIGIsICdzdGFydCcpKTtcbiAgICAgICAgICAgIGxvb3Aobm93ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGVuZGluZ19wcm9ncmFtICYmIG5vdyA+IHBlbmRpbmdfcHJvZ3JhbS5zdGFydCkge1xuICAgICAgICAgICAgICAgICAgICBydW5uaW5nX3Byb2dyYW0gPSBpbml0KHBlbmRpbmdfcHJvZ3JhbSwgZHVyYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nX3Byb2dyYW0gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaChub2RlLCBydW5uaW5nX3Byb2dyYW0uYiwgJ3N0YXJ0Jyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyX2FuaW1hdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uX25hbWUgPSBjcmVhdGVfcnVsZShub2RlLCB0LCBydW5uaW5nX3Byb2dyYW0uYiwgcnVubmluZ19wcm9ncmFtLmR1cmF0aW9uLCAwLCBlYXNpbmcsIGNvbmZpZy5jc3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChydW5uaW5nX3Byb2dyYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vdyA+PSBydW5uaW5nX3Byb2dyYW0uZW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aWNrKHQgPSBydW5uaW5nX3Byb2dyYW0uYiwgMSAtIHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gobm9kZSwgcnVubmluZ19wcm9ncmFtLmIsICdlbmQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGVuZGluZ19wcm9ncmFtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UncmUgZG9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChydW5uaW5nX3Byb2dyYW0uYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRybyBcdTIwMTQgd2UgY2FuIHRpZHkgdXAgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJfYW5pbWF0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRybyBcdTIwMTQgbmVlZHMgdG8gYmUgY29vcmRpbmF0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEtLXJ1bm5pbmdfcHJvZ3JhbS5ncm91cC5yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuX2FsbChydW5uaW5nX3Byb2dyYW0uZ3JvdXAuYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcnVubmluZ19wcm9ncmFtID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChub3cgPj0gcnVubmluZ19wcm9ncmFtLnN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gbm93IC0gcnVubmluZ19wcm9ncmFtLnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHJ1bm5pbmdfcHJvZ3JhbS5hICsgcnVubmluZ19wcm9ncmFtLmQgKiBlYXNpbmcocCAvIHJ1bm5pbmdfcHJvZ3JhbS5kdXJhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aWNrKHQsIDEgLSB0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gISEocnVubmluZ19wcm9ncmFtIHx8IHBlbmRpbmdfcHJvZ3JhbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBydW4oYikge1xuICAgICAgICAgICAgaWYgKGlzX2Z1bmN0aW9uKGNvbmZpZykpIHtcbiAgICAgICAgICAgICAgICB3YWl0KCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnID0gY29uZmlnKCk7XG4gICAgICAgICAgICAgICAgICAgIGdvKGIpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZ28oYik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVuZCgpIHtcbiAgICAgICAgICAgIGNsZWFyX2FuaW1hdGlvbigpO1xuICAgICAgICAgICAgcnVubmluZ19wcm9ncmFtID0gcGVuZGluZ19wcm9ncmFtID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbmZ1bmN0aW9uIGhhbmRsZV9wcm9taXNlKHByb21pc2UsIGluZm8pIHtcbiAgICBjb25zdCB0b2tlbiA9IGluZm8udG9rZW4gPSB7fTtcbiAgICBmdW5jdGlvbiB1cGRhdGUodHlwZSwgaW5kZXgsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGluZm8udG9rZW4gIT09IHRva2VuKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpbmZvLnJlc29sdmVkID0gdmFsdWU7XG4gICAgICAgIGxldCBjaGlsZF9jdHggPSBpbmZvLmN0eDtcbiAgICAgICAgaWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjaGlsZF9jdHggPSBjaGlsZF9jdHguc2xpY2UoKTtcbiAgICAgICAgICAgIGNoaWxkX2N0eFtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYmxvY2sgPSB0eXBlICYmIChpbmZvLmN1cnJlbnQgPSB0eXBlKShjaGlsZF9jdHgpO1xuICAgICAgICBsZXQgbmVlZHNfZmx1c2ggPSBmYWxzZTtcbiAgICAgICAgaWYgKGluZm8uYmxvY2spIHtcbiAgICAgICAgICAgIGlmIChpbmZvLmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIGluZm8uYmxvY2tzLmZvckVhY2goKGJsb2NrLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpICE9PSBpbmRleCAmJiBibG9jaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBfb3V0cm9zKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uX291dChibG9jaywgMSwgMSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmZvLmJsb2Nrc1tpXSA9PT0gYmxvY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5ibG9ja3NbaV0gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfb3V0cm9zKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGluZm8uYmxvY2suZCgxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJsb2NrLmMoKTtcbiAgICAgICAgICAgIHRyYW5zaXRpb25faW4oYmxvY2ssIDEpO1xuICAgICAgICAgICAgYmxvY2subShpbmZvLm1vdW50KCksIGluZm8uYW5jaG9yKTtcbiAgICAgICAgICAgIG5lZWRzX2ZsdXNoID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpbmZvLmJsb2NrID0gYmxvY2s7XG4gICAgICAgIGlmIChpbmZvLmJsb2NrcylcbiAgICAgICAgICAgIGluZm8uYmxvY2tzW2luZGV4XSA9IGJsb2NrO1xuICAgICAgICBpZiAobmVlZHNfZmx1c2gpIHtcbiAgICAgICAgICAgIGZsdXNoKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzX3Byb21pc2UocHJvbWlzZSkpIHtcbiAgICAgICAgY29uc3QgY3VycmVudF9jb21wb25lbnQgPSBnZXRfY3VycmVudF9jb21wb25lbnQoKTtcbiAgICAgICAgcHJvbWlzZS50aGVuKHZhbHVlID0+IHtcbiAgICAgICAgICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChjdXJyZW50X2NvbXBvbmVudCk7XG4gICAgICAgICAgICB1cGRhdGUoaW5mby50aGVuLCAxLCBpbmZvLnZhbHVlLCB2YWx1ZSk7XG4gICAgICAgICAgICBzZXRfY3VycmVudF9jb21wb25lbnQobnVsbCk7XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChjdXJyZW50X2NvbXBvbmVudCk7XG4gICAgICAgICAgICB1cGRhdGUoaW5mby5jYXRjaCwgMiwgaW5mby5lcnJvciwgZXJyb3IpO1xuICAgICAgICAgICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KG51bGwpO1xuICAgICAgICAgICAgaWYgKCFpbmZvLmhhc0NhdGNoKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBpZiB3ZSBwcmV2aW91c2x5IGhhZCBhIHRoZW4vY2F0Y2ggYmxvY2ssIGRlc3Ryb3kgaXRcbiAgICAgICAgaWYgKGluZm8uY3VycmVudCAhPT0gaW5mby5wZW5kaW5nKSB7XG4gICAgICAgICAgICB1cGRhdGUoaW5mby5wZW5kaW5nLCAwKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpZiAoaW5mby5jdXJyZW50ICE9PSBpbmZvLnRoZW4pIHtcbiAgICAgICAgICAgIHVwZGF0ZShpbmZvLnRoZW4sIDEsIGluZm8udmFsdWUsIHByb21pc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaW5mby5yZXNvbHZlZCA9IHByb21pc2U7XG4gICAgfVxufVxuZnVuY3Rpb24gdXBkYXRlX2F3YWl0X2Jsb2NrX2JyYW5jaChpbmZvLCBjdHgsIGRpcnR5KSB7XG4gICAgY29uc3QgY2hpbGRfY3R4ID0gY3R4LnNsaWNlKCk7XG4gICAgY29uc3QgeyByZXNvbHZlZCB9ID0gaW5mbztcbiAgICBpZiAoaW5mby5jdXJyZW50ID09PSBpbmZvLnRoZW4pIHtcbiAgICAgICAgY2hpbGRfY3R4W2luZm8udmFsdWVdID0gcmVzb2x2ZWQ7XG4gICAgfVxuICAgIGlmIChpbmZvLmN1cnJlbnQgPT09IGluZm8uY2F0Y2gpIHtcbiAgICAgICAgY2hpbGRfY3R4W2luZm8uZXJyb3JdID0gcmVzb2x2ZWQ7XG4gICAgfVxuICAgIGluZm8uYmxvY2sucChjaGlsZF9jdHgsIGRpcnR5KTtcbn1cblxuY29uc3QgZ2xvYmFscyA9ICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJ1xuICAgID8gd2luZG93XG4gICAgOiB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgPyBnbG9iYWxUaGlzXG4gICAgICAgIDogZ2xvYmFsKTtcblxuZnVuY3Rpb24gZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKSB7XG4gICAgYmxvY2suZCgxKTtcbiAgICBsb29rdXAuZGVsZXRlKGJsb2NrLmtleSk7XG59XG5mdW5jdGlvbiBvdXRyb19hbmRfZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKSB7XG4gICAgdHJhbnNpdGlvbl9vdXQoYmxvY2ssIDEsIDEsICgpID0+IHtcbiAgICAgICAgbG9va3VwLmRlbGV0ZShibG9jay5rZXkpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZml4X2FuZF9kZXN0cm95X2Jsb2NrKGJsb2NrLCBsb29rdXApIHtcbiAgICBibG9jay5mKCk7XG4gICAgZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKTtcbn1cbmZ1bmN0aW9uIGZpeF9hbmRfb3V0cm9fYW5kX2Rlc3Ryb3lfYmxvY2soYmxvY2ssIGxvb2t1cCkge1xuICAgIGJsb2NrLmYoKTtcbiAgICBvdXRyb19hbmRfZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKTtcbn1cbmZ1bmN0aW9uIHVwZGF0ZV9rZXllZF9lYWNoKG9sZF9ibG9ja3MsIGRpcnR5LCBnZXRfa2V5LCBkeW5hbWljLCBjdHgsIGxpc3QsIGxvb2t1cCwgbm9kZSwgZGVzdHJveSwgY3JlYXRlX2VhY2hfYmxvY2ssIG5leHQsIGdldF9jb250ZXh0KSB7XG4gICAgbGV0IG8gPSBvbGRfYmxvY2tzLmxlbmd0aDtcbiAgICBsZXQgbiA9IGxpc3QubGVuZ3RoO1xuICAgIGxldCBpID0gbztcbiAgICBjb25zdCBvbGRfaW5kZXhlcyA9IHt9O1xuICAgIHdoaWxlIChpLS0pXG4gICAgICAgIG9sZF9pbmRleGVzW29sZF9ibG9ja3NbaV0ua2V5XSA9IGk7XG4gICAgY29uc3QgbmV3X2Jsb2NrcyA9IFtdO1xuICAgIGNvbnN0IG5ld19sb29rdXAgPSBuZXcgTWFwKCk7XG4gICAgY29uc3QgZGVsdGFzID0gbmV3IE1hcCgpO1xuICAgIGkgPSBuO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgY29uc3QgY2hpbGRfY3R4ID0gZ2V0X2NvbnRleHQoY3R4LCBsaXN0LCBpKTtcbiAgICAgICAgY29uc3Qga2V5ID0gZ2V0X2tleShjaGlsZF9jdHgpO1xuICAgICAgICBsZXQgYmxvY2sgPSBsb29rdXAuZ2V0KGtleSk7XG4gICAgICAgIGlmICghYmxvY2spIHtcbiAgICAgICAgICAgIGJsb2NrID0gY3JlYXRlX2VhY2hfYmxvY2soa2V5LCBjaGlsZF9jdHgpO1xuICAgICAgICAgICAgYmxvY2suYygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGR5bmFtaWMpIHtcbiAgICAgICAgICAgIGJsb2NrLnAoY2hpbGRfY3R4LCBkaXJ0eSk7XG4gICAgICAgIH1cbiAgICAgICAgbmV3X2xvb2t1cC5zZXQoa2V5LCBuZXdfYmxvY2tzW2ldID0gYmxvY2spO1xuICAgICAgICBpZiAoa2V5IGluIG9sZF9pbmRleGVzKVxuICAgICAgICAgICAgZGVsdGFzLnNldChrZXksIE1hdGguYWJzKGkgLSBvbGRfaW5kZXhlc1trZXldKSk7XG4gICAgfVxuICAgIGNvbnN0IHdpbGxfbW92ZSA9IG5ldyBTZXQoKTtcbiAgICBjb25zdCBkaWRfbW92ZSA9IG5ldyBTZXQoKTtcbiAgICBmdW5jdGlvbiBpbnNlcnQoYmxvY2spIHtcbiAgICAgICAgdHJhbnNpdGlvbl9pbihibG9jaywgMSk7XG4gICAgICAgIGJsb2NrLm0obm9kZSwgbmV4dCk7XG4gICAgICAgIGxvb2t1cC5zZXQoYmxvY2sua2V5LCBibG9jayk7XG4gICAgICAgIG5leHQgPSBibG9jay5maXJzdDtcbiAgICAgICAgbi0tO1xuICAgIH1cbiAgICB3aGlsZSAobyAmJiBuKSB7XG4gICAgICAgIGNvbnN0IG5ld19ibG9jayA9IG5ld19ibG9ja3NbbiAtIDFdO1xuICAgICAgICBjb25zdCBvbGRfYmxvY2sgPSBvbGRfYmxvY2tzW28gLSAxXTtcbiAgICAgICAgY29uc3QgbmV3X2tleSA9IG5ld19ibG9jay5rZXk7XG4gICAgICAgIGNvbnN0IG9sZF9rZXkgPSBvbGRfYmxvY2sua2V5O1xuICAgICAgICBpZiAobmV3X2Jsb2NrID09PSBvbGRfYmxvY2spIHtcbiAgICAgICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICAgICAgICAgIG5leHQgPSBuZXdfYmxvY2suZmlyc3Q7XG4gICAgICAgICAgICBvLS07XG4gICAgICAgICAgICBuLS07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIW5ld19sb29rdXAuaGFzKG9sZF9rZXkpKSB7XG4gICAgICAgICAgICAvLyByZW1vdmUgb2xkIGJsb2NrXG4gICAgICAgICAgICBkZXN0cm95KG9sZF9ibG9jaywgbG9va3VwKTtcbiAgICAgICAgICAgIG8tLTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghbG9va3VwLmhhcyhuZXdfa2V5KSB8fCB3aWxsX21vdmUuaGFzKG5ld19rZXkpKSB7XG4gICAgICAgICAgICBpbnNlcnQobmV3X2Jsb2NrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkaWRfbW92ZS5oYXMob2xkX2tleSkpIHtcbiAgICAgICAgICAgIG8tLTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkZWx0YXMuZ2V0KG5ld19rZXkpID4gZGVsdGFzLmdldChvbGRfa2V5KSkge1xuICAgICAgICAgICAgZGlkX21vdmUuYWRkKG5ld19rZXkpO1xuICAgICAgICAgICAgaW5zZXJ0KG5ld19ibG9jayk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB3aWxsX21vdmUuYWRkKG9sZF9rZXkpO1xuICAgICAgICAgICAgby0tO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdoaWxlIChvLS0pIHtcbiAgICAgICAgY29uc3Qgb2xkX2Jsb2NrID0gb2xkX2Jsb2Nrc1tvXTtcbiAgICAgICAgaWYgKCFuZXdfbG9va3VwLmhhcyhvbGRfYmxvY2sua2V5KSlcbiAgICAgICAgICAgIGRlc3Ryb3kob2xkX2Jsb2NrLCBsb29rdXApO1xuICAgIH1cbiAgICB3aGlsZSAobilcbiAgICAgICAgaW5zZXJ0KG5ld19ibG9ja3NbbiAtIDFdKTtcbiAgICByZXR1cm4gbmV3X2Jsb2Nrcztcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlX2VhY2hfa2V5cyhjdHgsIGxpc3QsIGdldF9jb250ZXh0LCBnZXRfa2V5KSB7XG4gICAgY29uc3Qga2V5cyA9IG5ldyBTZXQoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qga2V5ID0gZ2V0X2tleShnZXRfY29udGV4dChjdHgsIGxpc3QsIGkpKTtcbiAgICAgICAgaWYgKGtleXMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGhhdmUgZHVwbGljYXRlIGtleXMgaW4gYSBrZXllZCBlYWNoJyk7XG4gICAgICAgIH1cbiAgICAgICAga2V5cy5hZGQoa2V5KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldF9zcHJlYWRfdXBkYXRlKGxldmVscywgdXBkYXRlcykge1xuICAgIGNvbnN0IHVwZGF0ZSA9IHt9O1xuICAgIGNvbnN0IHRvX251bGxfb3V0ID0ge307XG4gICAgY29uc3QgYWNjb3VudGVkX2ZvciA9IHsgJCRzY29wZTogMSB9O1xuICAgIGxldCBpID0gbGV2ZWxzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgIGNvbnN0IG8gPSBsZXZlbHNbaV07XG4gICAgICAgIGNvbnN0IG4gPSB1cGRhdGVzW2ldO1xuICAgICAgICBpZiAobikge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbykge1xuICAgICAgICAgICAgICAgIGlmICghKGtleSBpbiBuKSlcbiAgICAgICAgICAgICAgICAgICAgdG9fbnVsbF9vdXRba2V5XSA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBuKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFhY2NvdW50ZWRfZm9yW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlW2tleV0gPSBuW2tleV07XG4gICAgICAgICAgICAgICAgICAgIGFjY291bnRlZF9mb3Jba2V5XSA9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV2ZWxzW2ldID0gbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG8pIHtcbiAgICAgICAgICAgICAgICBhY2NvdW50ZWRfZm9yW2tleV0gPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IGluIHRvX251bGxfb3V0KSB7XG4gICAgICAgIGlmICghKGtleSBpbiB1cGRhdGUpKVxuICAgICAgICAgICAgdXBkYXRlW2tleV0gPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB1cGRhdGU7XG59XG5mdW5jdGlvbiBnZXRfc3ByZWFkX29iamVjdChzcHJlYWRfcHJvcHMpIHtcbiAgICByZXR1cm4gdHlwZW9mIHNwcmVhZF9wcm9wcyA9PT0gJ29iamVjdCcgJiYgc3ByZWFkX3Byb3BzICE9PSBudWxsID8gc3ByZWFkX3Byb3BzIDoge307XG59XG5cbi8vIHNvdXJjZTogaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5kaWNlcy5odG1sXG5jb25zdCBib29sZWFuX2F0dHJpYnV0ZXMgPSBuZXcgU2V0KFtcbiAgICAnYWxsb3dmdWxsc2NyZWVuJyxcbiAgICAnYWxsb3dwYXltZW50cmVxdWVzdCcsXG4gICAgJ2FzeW5jJyxcbiAgICAnYXV0b2ZvY3VzJyxcbiAgICAnYXV0b3BsYXknLFxuICAgICdjaGVja2VkJyxcbiAgICAnY29udHJvbHMnLFxuICAgICdkZWZhdWx0JyxcbiAgICAnZGVmZXInLFxuICAgICdkaXNhYmxlZCcsXG4gICAgJ2Zvcm1ub3ZhbGlkYXRlJyxcbiAgICAnaGlkZGVuJyxcbiAgICAnaXNtYXAnLFxuICAgICdsb29wJyxcbiAgICAnbXVsdGlwbGUnLFxuICAgICdtdXRlZCcsXG4gICAgJ25vbW9kdWxlJyxcbiAgICAnbm92YWxpZGF0ZScsXG4gICAgJ29wZW4nLFxuICAgICdwbGF5c2lubGluZScsXG4gICAgJ3JlYWRvbmx5JyxcbiAgICAncmVxdWlyZWQnLFxuICAgICdyZXZlcnNlZCcsXG4gICAgJ3NlbGVjdGVkJ1xuXSk7XG5cbmNvbnN0IGludmFsaWRfYXR0cmlidXRlX25hbWVfY2hhcmFjdGVyID0gL1tcXHMnXCI+Lz1cXHV7RkREMH0tXFx1e0ZERUZ9XFx1e0ZGRkV9XFx1e0ZGRkZ9XFx1ezFGRkZFfVxcdXsxRkZGRn1cXHV7MkZGRkV9XFx1ezJGRkZGfVxcdXszRkZGRX1cXHV7M0ZGRkZ9XFx1ezRGRkZFfVxcdXs0RkZGRn1cXHV7NUZGRkV9XFx1ezVGRkZGfVxcdXs2RkZGRX1cXHV7NkZGRkZ9XFx1ezdGRkZFfVxcdXs3RkZGRn1cXHV7OEZGRkV9XFx1ezhGRkZGfVxcdXs5RkZGRX1cXHV7OUZGRkZ9XFx1e0FGRkZFfVxcdXtBRkZGRn1cXHV7QkZGRkV9XFx1e0JGRkZGfVxcdXtDRkZGRX1cXHV7Q0ZGRkZ9XFx1e0RGRkZFfVxcdXtERkZGRn1cXHV7RUZGRkV9XFx1e0VGRkZGfVxcdXtGRkZGRX1cXHV7RkZGRkZ9XFx1ezEwRkZGRX1cXHV7MTBGRkZGfV0vdTtcbi8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2F0dHJpYnV0ZXMtMlxuLy8gaHR0cHM6Ly9pbmZyYS5zcGVjLndoYXR3Zy5vcmcvI25vbmNoYXJhY3RlclxuZnVuY3Rpb24gc3ByZWFkKGFyZ3MsIGNsYXNzZXNfdG9fYWRkKSB7XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IE9iamVjdC5hc3NpZ24oe30sIC4uLmFyZ3MpO1xuICAgIGlmIChjbGFzc2VzX3RvX2FkZCkge1xuICAgICAgICBpZiAoYXR0cmlidXRlcy5jbGFzcyA9PSBudWxsKSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzLmNsYXNzID0gY2xhc3Nlc190b19hZGQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzLmNsYXNzICs9ICcgJyArIGNsYXNzZXNfdG9fYWRkO1xuICAgICAgICB9XG4gICAgfVxuICAgIGxldCBzdHIgPSAnJztcbiAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgICBpZiAoaW52YWxpZF9hdHRyaWJ1dGVfbmFtZV9jaGFyYWN0ZXIudGVzdChuYW1lKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBhdHRyaWJ1dGVzW25hbWVdO1xuICAgICAgICBpZiAodmFsdWUgPT09IHRydWUpXG4gICAgICAgICAgICBzdHIgKz0gJyAnICsgbmFtZTtcbiAgICAgICAgZWxzZSBpZiAoYm9vbGVhbl9hdHRyaWJ1dGVzLmhhcyhuYW1lLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpXG4gICAgICAgICAgICAgICAgc3RyICs9ICcgJyArIG5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgc3RyICs9IGAgJHtuYW1lfT1cIiR7dmFsdWV9XCJgO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHN0cjtcbn1cbmNvbnN0IGVzY2FwZWQgPSB7XG4gICAgJ1wiJzogJyZxdW90OycsXG4gICAgXCInXCI6ICcmIzM5OycsXG4gICAgJyYnOiAnJmFtcDsnLFxuICAgICc8JzogJyZsdDsnLFxuICAgICc+JzogJyZndDsnXG59O1xuZnVuY3Rpb24gZXNjYXBlKGh0bWwpIHtcbiAgICByZXR1cm4gU3RyaW5nKGh0bWwpLnJlcGxhY2UoL1tcIicmPD5dL2csIG1hdGNoID0+IGVzY2FwZWRbbWF0Y2hdKTtcbn1cbmZ1bmN0aW9uIGVzY2FwZV9hdHRyaWJ1dGVfdmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IGVzY2FwZSh2YWx1ZSkgOiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGVzY2FwZV9vYmplY3Qob2JqKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gZXNjYXBlX2F0dHJpYnV0ZV92YWx1ZShvYmpba2V5XSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBlYWNoKGl0ZW1zLCBmbikge1xuICAgIGxldCBzdHIgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHN0ciArPSBmbihpdGVtc1tpXSwgaSk7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG59XG5jb25zdCBtaXNzaW5nX2NvbXBvbmVudCA9IHtcbiAgICAkJHJlbmRlcjogKCkgPT4gJydcbn07XG5mdW5jdGlvbiB2YWxpZGF0ZV9jb21wb25lbnQoY29tcG9uZW50LCBuYW1lKSB7XG4gICAgaWYgKCFjb21wb25lbnQgfHwgIWNvbXBvbmVudC4kJHJlbmRlcikge1xuICAgICAgICBpZiAobmFtZSA9PT0gJ3N2ZWx0ZTpjb21wb25lbnQnKVxuICAgICAgICAgICAgbmFtZSArPSAnIHRoaXM9ey4uLn0nO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYDwke25hbWV9PiBpcyBub3QgYSB2YWxpZCBTU1IgY29tcG9uZW50LiBZb3UgbWF5IG5lZWQgdG8gcmV2aWV3IHlvdXIgYnVpbGQgY29uZmlnIHRvIGVuc3VyZSB0aGF0IGRlcGVuZGVuY2llcyBhcmUgY29tcGlsZWQsIHJhdGhlciB0aGFuIGltcG9ydGVkIGFzIHByZS1jb21waWxlZCBtb2R1bGVzYCk7XG4gICAgfVxuICAgIHJldHVybiBjb21wb25lbnQ7XG59XG5mdW5jdGlvbiBkZWJ1ZyhmaWxlLCBsaW5lLCBjb2x1bW4sIHZhbHVlcykge1xuICAgIGNvbnNvbGUubG9nKGB7QGRlYnVnfSAke2ZpbGUgPyBmaWxlICsgJyAnIDogJyd9KCR7bGluZX06JHtjb2x1bW59KWApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmxvZyh2YWx1ZXMpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgICByZXR1cm4gJyc7XG59XG5sZXQgb25fZGVzdHJveTtcbmZ1bmN0aW9uIGNyZWF0ZV9zc3JfY29tcG9uZW50KGZuKSB7XG4gICAgZnVuY3Rpb24gJCRyZW5kZXIocmVzdWx0LCBwcm9wcywgYmluZGluZ3MsIHNsb3RzLCBjb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IHBhcmVudF9jb21wb25lbnQgPSBjdXJyZW50X2NvbXBvbmVudDtcbiAgICAgICAgY29uc3QgJCQgPSB7XG4gICAgICAgICAgICBvbl9kZXN0cm95LFxuICAgICAgICAgICAgY29udGV4dDogbmV3IE1hcChjb250ZXh0IHx8IChwYXJlbnRfY29tcG9uZW50ID8gcGFyZW50X2NvbXBvbmVudC4kJC5jb250ZXh0IDogW10pKSxcbiAgICAgICAgICAgIC8vIHRoZXNlIHdpbGwgYmUgaW1tZWRpYXRlbHkgZGlzY2FyZGVkXG4gICAgICAgICAgICBvbl9tb3VudDogW10sXG4gICAgICAgICAgICBiZWZvcmVfdXBkYXRlOiBbXSxcbiAgICAgICAgICAgIGFmdGVyX3VwZGF0ZTogW10sXG4gICAgICAgICAgICBjYWxsYmFja3M6IGJsYW5rX29iamVjdCgpXG4gICAgICAgIH07XG4gICAgICAgIHNldF9jdXJyZW50X2NvbXBvbmVudCh7ICQkIH0pO1xuICAgICAgICBjb25zdCBodG1sID0gZm4ocmVzdWx0LCBwcm9wcywgYmluZGluZ3MsIHNsb3RzKTtcbiAgICAgICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KHBhcmVudF9jb21wb25lbnQpO1xuICAgICAgICByZXR1cm4gaHRtbDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcmVuZGVyOiAocHJvcHMgPSB7fSwgeyAkJHNsb3RzID0ge30sIGNvbnRleHQgPSBuZXcgTWFwKCkgfSA9IHt9KSA9PiB7XG4gICAgICAgICAgICBvbl9kZXN0cm95ID0gW107XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB7IHRpdGxlOiAnJywgaGVhZDogJycsIGNzczogbmV3IFNldCgpIH07XG4gICAgICAgICAgICBjb25zdCBodG1sID0gJCRyZW5kZXIocmVzdWx0LCBwcm9wcywge30sICQkc2xvdHMsIGNvbnRleHQpO1xuICAgICAgICAgICAgcnVuX2FsbChvbl9kZXN0cm95KTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaHRtbCxcbiAgICAgICAgICAgICAgICBjc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogQXJyYXkuZnJvbShyZXN1bHQuY3NzKS5tYXAoY3NzID0+IGNzcy5jb2RlKS5qb2luKCdcXG4nKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwOiBudWxsIC8vIFRPRE9cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGhlYWQ6IHJlc3VsdC50aXRsZSArIHJlc3VsdC5oZWFkXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICAkJHJlbmRlclxuICAgIH07XG59XG5mdW5jdGlvbiBhZGRfYXR0cmlidXRlKG5hbWUsIHZhbHVlLCBib29sZWFuKSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwgfHwgKGJvb2xlYW4gJiYgIXZhbHVlKSlcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIHJldHVybiBgICR7bmFtZX0ke3ZhbHVlID09PSB0cnVlID8gJycgOiBgPSR7dHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IEpTT04uc3RyaW5naWZ5KGVzY2FwZSh2YWx1ZSkpIDogYFwiJHt2YWx1ZX1cImB9YH1gO1xufVxuZnVuY3Rpb24gYWRkX2NsYXNzZXMoY2xhc3Nlcykge1xuICAgIHJldHVybiBjbGFzc2VzID8gYCBjbGFzcz1cIiR7Y2xhc3Nlc31cImAgOiAnJztcbn1cblxuZnVuY3Rpb24gYmluZChjb21wb25lbnQsIG5hbWUsIGNhbGxiYWNrKSB7XG4gICAgY29uc3QgaW5kZXggPSBjb21wb25lbnQuJCQucHJvcHNbbmFtZV07XG4gICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29tcG9uZW50LiQkLmJvdW5kW2luZGV4XSA9IGNhbGxiYWNrO1xuICAgICAgICBjYWxsYmFjayhjb21wb25lbnQuJCQuY3R4W2luZGV4XSk7XG4gICAgfVxufVxuZnVuY3Rpb24gY3JlYXRlX2NvbXBvbmVudChibG9jaykge1xuICAgIGJsb2NrICYmIGJsb2NrLmMoKTtcbn1cbmZ1bmN0aW9uIGNsYWltX2NvbXBvbmVudChibG9jaywgcGFyZW50X25vZGVzKSB7XG4gICAgYmxvY2sgJiYgYmxvY2subChwYXJlbnRfbm9kZXMpO1xufVxuZnVuY3Rpb24gbW91bnRfY29tcG9uZW50KGNvbXBvbmVudCwgdGFyZ2V0LCBhbmNob3IsIGN1c3RvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB7IGZyYWdtZW50LCBvbl9tb3VudCwgb25fZGVzdHJveSwgYWZ0ZXJfdXBkYXRlIH0gPSBjb21wb25lbnQuJCQ7XG4gICAgZnJhZ21lbnQgJiYgZnJhZ21lbnQubSh0YXJnZXQsIGFuY2hvcik7XG4gICAgaWYgKCFjdXN0b21FbGVtZW50KSB7XG4gICAgICAgIC8vIG9uTW91bnQgaGFwcGVucyBiZWZvcmUgdGhlIGluaXRpYWwgYWZ0ZXJVcGRhdGVcbiAgICAgICAgYWRkX3JlbmRlcl9jYWxsYmFjaygoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdfb25fZGVzdHJveSA9IG9uX21vdW50Lm1hcChydW4pLmZpbHRlcihpc19mdW5jdGlvbik7XG4gICAgICAgICAgICBpZiAob25fZGVzdHJveSkge1xuICAgICAgICAgICAgICAgIG9uX2Rlc3Ryb3kucHVzaCguLi5uZXdfb25fZGVzdHJveSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBFZGdlIGNhc2UgLSBjb21wb25lbnQgd2FzIGRlc3Ryb3llZCBpbW1lZGlhdGVseSxcbiAgICAgICAgICAgICAgICAvLyBtb3N0IGxpa2VseSBhcyBhIHJlc3VsdCBvZiBhIGJpbmRpbmcgaW5pdGlhbGlzaW5nXG4gICAgICAgICAgICAgICAgcnVuX2FsbChuZXdfb25fZGVzdHJveSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21wb25lbnQuJCQub25fbW91bnQgPSBbXTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFmdGVyX3VwZGF0ZS5mb3JFYWNoKGFkZF9yZW5kZXJfY2FsbGJhY2spO1xufVxuZnVuY3Rpb24gZGVzdHJveV9jb21wb25lbnQoY29tcG9uZW50LCBkZXRhY2hpbmcpIHtcbiAgICBjb25zdCAkJCA9IGNvbXBvbmVudC4kJDtcbiAgICBpZiAoJCQuZnJhZ21lbnQgIT09IG51bGwpIHtcbiAgICAgICAgcnVuX2FsbCgkJC5vbl9kZXN0cm95KTtcbiAgICAgICAgJCQuZnJhZ21lbnQgJiYgJCQuZnJhZ21lbnQuZChkZXRhY2hpbmcpO1xuICAgICAgICAvLyBUT0RPIG51bGwgb3V0IG90aGVyIHJlZnMsIGluY2x1ZGluZyBjb21wb25lbnQuJCQgKGJ1dCBuZWVkIHRvXG4gICAgICAgIC8vIHByZXNlcnZlIGZpbmFsIHN0YXRlPylcbiAgICAgICAgJCQub25fZGVzdHJveSA9ICQkLmZyYWdtZW50ID0gbnVsbDtcbiAgICAgICAgJCQuY3R4ID0gW107XG4gICAgfVxufVxuZnVuY3Rpb24gbWFrZV9kaXJ0eShjb21wb25lbnQsIGkpIHtcbiAgICBpZiAoY29tcG9uZW50LiQkLmRpcnR5WzBdID09PSAtMSkge1xuICAgICAgICBkaXJ0eV9jb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgICAgICAgc2NoZWR1bGVfdXBkYXRlKCk7XG4gICAgICAgIGNvbXBvbmVudC4kJC5kaXJ0eS5maWxsKDApO1xuICAgIH1cbiAgICBjb21wb25lbnQuJCQuZGlydHlbKGkgLyAzMSkgfCAwXSB8PSAoMSA8PCAoaSAlIDMxKSk7XG59XG5mdW5jdGlvbiBpbml0KGNvbXBvbmVudCwgb3B0aW9ucywgaW5zdGFuY2UsIGNyZWF0ZV9mcmFnbWVudCwgbm90X2VxdWFsLCBwcm9wcywgYXBwZW5kX3N0eWxlcywgZGlydHkgPSBbLTFdKSB7XG4gICAgY29uc3QgcGFyZW50X2NvbXBvbmVudCA9IGN1cnJlbnRfY29tcG9uZW50O1xuICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChjb21wb25lbnQpO1xuICAgIGNvbnN0ICQkID0gY29tcG9uZW50LiQkID0ge1xuICAgICAgICBmcmFnbWVudDogbnVsbCxcbiAgICAgICAgY3R4OiBudWxsLFxuICAgICAgICAvLyBzdGF0ZVxuICAgICAgICBwcm9wcyxcbiAgICAgICAgdXBkYXRlOiBub29wLFxuICAgICAgICBub3RfZXF1YWwsXG4gICAgICAgIGJvdW5kOiBibGFua19vYmplY3QoKSxcbiAgICAgICAgLy8gbGlmZWN5Y2xlXG4gICAgICAgIG9uX21vdW50OiBbXSxcbiAgICAgICAgb25fZGVzdHJveTogW10sXG4gICAgICAgIG9uX2Rpc2Nvbm5lY3Q6IFtdLFxuICAgICAgICBiZWZvcmVfdXBkYXRlOiBbXSxcbiAgICAgICAgYWZ0ZXJfdXBkYXRlOiBbXSxcbiAgICAgICAgY29udGV4dDogbmV3IE1hcChvcHRpb25zLmNvbnRleHQgfHwgKHBhcmVudF9jb21wb25lbnQgPyBwYXJlbnRfY29tcG9uZW50LiQkLmNvbnRleHQgOiBbXSkpLFxuICAgICAgICAvLyBldmVyeXRoaW5nIGVsc2VcbiAgICAgICAgY2FsbGJhY2tzOiBibGFua19vYmplY3QoKSxcbiAgICAgICAgZGlydHksXG4gICAgICAgIHNraXBfYm91bmQ6IGZhbHNlLFxuICAgICAgICByb290OiBvcHRpb25zLnRhcmdldCB8fCBwYXJlbnRfY29tcG9uZW50LiQkLnJvb3RcbiAgICB9O1xuICAgIGFwcGVuZF9zdHlsZXMgJiYgYXBwZW5kX3N0eWxlcygkJC5yb290KTtcbiAgICBsZXQgcmVhZHkgPSBmYWxzZTtcbiAgICAkJC5jdHggPSBpbnN0YW5jZVxuICAgICAgICA/IGluc3RhbmNlKGNvbXBvbmVudCwgb3B0aW9ucy5wcm9wcyB8fCB7fSwgKGksIHJldCwgLi4ucmVzdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSByZXN0Lmxlbmd0aCA/IHJlc3RbMF0gOiByZXQ7XG4gICAgICAgICAgICBpZiAoJCQuY3R4ICYmIG5vdF9lcXVhbCgkJC5jdHhbaV0sICQkLmN0eFtpXSA9IHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGlmICghJCQuc2tpcF9ib3VuZCAmJiAkJC5ib3VuZFtpXSlcbiAgICAgICAgICAgICAgICAgICAgJCQuYm91bmRbaV0odmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmIChyZWFkeSlcbiAgICAgICAgICAgICAgICAgICAgbWFrZV9kaXJ0eShjb21wb25lbnQsIGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgfSlcbiAgICAgICAgOiBbXTtcbiAgICAkJC51cGRhdGUoKTtcbiAgICByZWFkeSA9IHRydWU7XG4gICAgcnVuX2FsbCgkJC5iZWZvcmVfdXBkYXRlKTtcbiAgICAvLyBgZmFsc2VgIGFzIGEgc3BlY2lhbCBjYXNlIG9mIG5vIERPTSBjb21wb25lbnRcbiAgICAkJC5mcmFnbWVudCA9IGNyZWF0ZV9mcmFnbWVudCA/IGNyZWF0ZV9mcmFnbWVudCgkJC5jdHgpIDogZmFsc2U7XG4gICAgaWYgKG9wdGlvbnMudGFyZ2V0KSB7XG4gICAgICAgIGlmIChvcHRpb25zLmh5ZHJhdGUpIHtcbiAgICAgICAgICAgIHN0YXJ0X2h5ZHJhdGluZygpO1xuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBjaGlsZHJlbihvcHRpb25zLnRhcmdldCk7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgICAgJCQuZnJhZ21lbnQgJiYgJCQuZnJhZ21lbnQubChub2Rlcyk7XG4gICAgICAgICAgICBub2Rlcy5mb3JFYWNoKGRldGFjaCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgICAgJCQuZnJhZ21lbnQgJiYgJCQuZnJhZ21lbnQuYygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmludHJvKVxuICAgICAgICAgICAgdHJhbnNpdGlvbl9pbihjb21wb25lbnQuJCQuZnJhZ21lbnQpO1xuICAgICAgICBtb3VudF9jb21wb25lbnQoY29tcG9uZW50LCBvcHRpb25zLnRhcmdldCwgb3B0aW9ucy5hbmNob3IsIG9wdGlvbnMuY3VzdG9tRWxlbWVudCk7XG4gICAgICAgIGVuZF9oeWRyYXRpbmcoKTtcbiAgICAgICAgZmx1c2goKTtcbiAgICB9XG4gICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KHBhcmVudF9jb21wb25lbnQpO1xufVxubGV0IFN2ZWx0ZUVsZW1lbnQ7XG5pZiAodHlwZW9mIEhUTUxFbGVtZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgU3ZlbHRlRWxlbWVudCA9IGNsYXNzIGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICAgIHN1cGVyKCk7XG4gICAgICAgICAgICB0aGlzLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25uZWN0ZWRDYWxsYmFjaygpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgb25fbW91bnQgfSA9IHRoaXMuJCQ7XG4gICAgICAgICAgICB0aGlzLiQkLm9uX2Rpc2Nvbm5lY3QgPSBvbl9tb3VudC5tYXAocnVuKS5maWx0ZXIoaXNfZnVuY3Rpb24pO1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSB0b2RvOiBpbXByb3ZlIHR5cGluZ3NcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuJCQuc2xvdHRlZCkge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgdG9kbzogaW1wcm92ZSB0eXBpbmdzXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZCh0aGlzLiQkLnNsb3R0ZWRba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKGF0dHIsIF9vbGRWYWx1ZSwgbmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXNbYXR0cl0gPSBuZXdWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBkaXNjb25uZWN0ZWRDYWxsYmFjaygpIHtcbiAgICAgICAgICAgIHJ1bl9hbGwodGhpcy4kJC5vbl9kaXNjb25uZWN0KTtcbiAgICAgICAgfVxuICAgICAgICAkZGVzdHJveSgpIHtcbiAgICAgICAgICAgIGRlc3Ryb3lfY29tcG9uZW50KHRoaXMsIDEpO1xuICAgICAgICAgICAgdGhpcy4kZGVzdHJveSA9IG5vb3A7XG4gICAgICAgIH1cbiAgICAgICAgJG9uKHR5cGUsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAvLyBUT0RPIHNob3VsZCB0aGlzIGRlbGVnYXRlIHRvIGFkZEV2ZW50TGlzdGVuZXI/XG4gICAgICAgICAgICBjb25zdCBjYWxsYmFja3MgPSAodGhpcy4kJC5jYWxsYmFja3NbdHlwZV0gfHwgKHRoaXMuJCQuY2FsbGJhY2tzW3R5cGVdID0gW10pKTtcbiAgICAgICAgICAgIGNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBjYWxsYmFja3MuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgICRzZXQoJCRwcm9wcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuJCRzZXQgJiYgIWlzX2VtcHR5KCQkcHJvcHMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kJC5za2lwX2JvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLiQkc2V0KCQkcHJvcHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuJCQuc2tpcF9ib3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbn1cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgU3ZlbHRlIGNvbXBvbmVudHMuIFVzZWQgd2hlbiBkZXY9ZmFsc2UuXG4gKi9cbmNsYXNzIFN2ZWx0ZUNvbXBvbmVudCB7XG4gICAgJGRlc3Ryb3koKSB7XG4gICAgICAgIGRlc3Ryb3lfY29tcG9uZW50KHRoaXMsIDEpO1xuICAgICAgICB0aGlzLiRkZXN0cm95ID0gbm9vcDtcbiAgICB9XG4gICAgJG9uKHR5cGUsIGNhbGxiYWNrKSB7XG4gICAgICAgIGNvbnN0IGNhbGxiYWNrcyA9ICh0aGlzLiQkLmNhbGxiYWNrc1t0eXBlXSB8fCAodGhpcy4kJC5jYWxsYmFja3NbdHlwZV0gPSBbXSkpO1xuICAgICAgICBjYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IGNhbGxiYWNrcy5pbmRleE9mKGNhbGxiYWNrKTtcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpXG4gICAgICAgICAgICAgICAgY2FsbGJhY2tzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH07XG4gICAgfVxuICAgICRzZXQoJCRwcm9wcykge1xuICAgICAgICBpZiAodGhpcy4kJHNldCAmJiAhaXNfZW1wdHkoJCRwcm9wcykpIHtcbiAgICAgICAgICAgIHRoaXMuJCQuc2tpcF9ib3VuZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLiQkc2V0KCQkcHJvcHMpO1xuICAgICAgICAgICAgdGhpcy4kJC5za2lwX2JvdW5kID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRpc3BhdGNoX2Rldih0eXBlLCBkZXRhaWwpIHtcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbV9ldmVudCh0eXBlLCBPYmplY3QuYXNzaWduKHsgdmVyc2lvbjogJzMuNDMuMCcgfSwgZGV0YWlsKSwgdHJ1ZSkpO1xufVxuZnVuY3Rpb24gYXBwZW5kX2Rldih0YXJnZXQsIG5vZGUpIHtcbiAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTUluc2VydCcsIHsgdGFyZ2V0LCBub2RlIH0pO1xuICAgIGFwcGVuZCh0YXJnZXQsIG5vZGUpO1xufVxuZnVuY3Rpb24gYXBwZW5kX2h5ZHJhdGlvbl9kZXYodGFyZ2V0LCBub2RlKSB7XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01JbnNlcnQnLCB7IHRhcmdldCwgbm9kZSB9KTtcbiAgICBhcHBlbmRfaHlkcmF0aW9uKHRhcmdldCwgbm9kZSk7XG59XG5mdW5jdGlvbiBpbnNlcnRfZGV2KHRhcmdldCwgbm9kZSwgYW5jaG9yKSB7XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01JbnNlcnQnLCB7IHRhcmdldCwgbm9kZSwgYW5jaG9yIH0pO1xuICAgIGluc2VydCh0YXJnZXQsIG5vZGUsIGFuY2hvcik7XG59XG5mdW5jdGlvbiBpbnNlcnRfaHlkcmF0aW9uX2Rldih0YXJnZXQsIG5vZGUsIGFuY2hvcikge1xuICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NSW5zZXJ0JywgeyB0YXJnZXQsIG5vZGUsIGFuY2hvciB9KTtcbiAgICBpbnNlcnRfaHlkcmF0aW9uKHRhcmdldCwgbm9kZSwgYW5jaG9yKTtcbn1cbmZ1bmN0aW9uIGRldGFjaF9kZXYobm9kZSkge1xuICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NUmVtb3ZlJywgeyBub2RlIH0pO1xuICAgIGRldGFjaChub2RlKTtcbn1cbmZ1bmN0aW9uIGRldGFjaF9iZXR3ZWVuX2RldihiZWZvcmUsIGFmdGVyKSB7XG4gICAgd2hpbGUgKGJlZm9yZS5uZXh0U2libGluZyAmJiBiZWZvcmUubmV4dFNpYmxpbmcgIT09IGFmdGVyKSB7XG4gICAgICAgIGRldGFjaF9kZXYoYmVmb3JlLm5leHRTaWJsaW5nKTtcbiAgICB9XG59XG5mdW5jdGlvbiBkZXRhY2hfYmVmb3JlX2RldihhZnRlcikge1xuICAgIHdoaWxlIChhZnRlci5wcmV2aW91c1NpYmxpbmcpIHtcbiAgICAgICAgZGV0YWNoX2RldihhZnRlci5wcmV2aW91c1NpYmxpbmcpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGRldGFjaF9hZnRlcl9kZXYoYmVmb3JlKSB7XG4gICAgd2hpbGUgKGJlZm9yZS5uZXh0U2libGluZykge1xuICAgICAgICBkZXRhY2hfZGV2KGJlZm9yZS5uZXh0U2libGluZyk7XG4gICAgfVxufVxuZnVuY3Rpb24gbGlzdGVuX2Rldihub2RlLCBldmVudCwgaGFuZGxlciwgb3B0aW9ucywgaGFzX3ByZXZlbnRfZGVmYXVsdCwgaGFzX3N0b3BfcHJvcGFnYXRpb24pIHtcbiAgICBjb25zdCBtb2RpZmllcnMgPSBvcHRpb25zID09PSB0cnVlID8gWydjYXB0dXJlJ10gOiBvcHRpb25zID8gQXJyYXkuZnJvbShPYmplY3Qua2V5cyhvcHRpb25zKSkgOiBbXTtcbiAgICBpZiAoaGFzX3ByZXZlbnRfZGVmYXVsdClcbiAgICAgICAgbW9kaWZpZXJzLnB1c2goJ3ByZXZlbnREZWZhdWx0Jyk7XG4gICAgaWYgKGhhc19zdG9wX3Byb3BhZ2F0aW9uKVxuICAgICAgICBtb2RpZmllcnMucHVzaCgnc3RvcFByb3BhZ2F0aW9uJyk7XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01BZGRFdmVudExpc3RlbmVyJywgeyBub2RlLCBldmVudCwgaGFuZGxlciwgbW9kaWZpZXJzIH0pO1xuICAgIGNvbnN0IGRpc3Bvc2UgPSBsaXN0ZW4obm9kZSwgZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NUmVtb3ZlRXZlbnRMaXN0ZW5lcicsIHsgbm9kZSwgZXZlbnQsIGhhbmRsZXIsIG1vZGlmaWVycyB9KTtcbiAgICAgICAgZGlzcG9zZSgpO1xuICAgIH07XG59XG5mdW5jdGlvbiBhdHRyX2Rldihub2RlLCBhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gICAgYXR0cihub2RlLCBhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgICBpZiAodmFsdWUgPT0gbnVsbClcbiAgICAgICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01SZW1vdmVBdHRyaWJ1dGUnLCB7IG5vZGUsIGF0dHJpYnV0ZSB9KTtcbiAgICBlbHNlXG4gICAgICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NU2V0QXR0cmlidXRlJywgeyBub2RlLCBhdHRyaWJ1dGUsIHZhbHVlIH0pO1xufVxuZnVuY3Rpb24gcHJvcF9kZXYobm9kZSwgcHJvcGVydHksIHZhbHVlKSB7XG4gICAgbm9kZVtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTVNldFByb3BlcnR5JywgeyBub2RlLCBwcm9wZXJ0eSwgdmFsdWUgfSk7XG59XG5mdW5jdGlvbiBkYXRhc2V0X2Rldihub2RlLCBwcm9wZXJ0eSwgdmFsdWUpIHtcbiAgICBub2RlLmRhdGFzZXRbcHJvcGVydHldID0gdmFsdWU7XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01TZXREYXRhc2V0JywgeyBub2RlLCBwcm9wZXJ0eSwgdmFsdWUgfSk7XG59XG5mdW5jdGlvbiBzZXRfZGF0YV9kZXYodGV4dCwgZGF0YSkge1xuICAgIGRhdGEgPSAnJyArIGRhdGE7XG4gICAgaWYgKHRleHQud2hvbGVUZXh0ID09PSBkYXRhKVxuICAgICAgICByZXR1cm47XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01TZXREYXRhJywgeyBub2RlOiB0ZXh0LCBkYXRhIH0pO1xuICAgIHRleHQuZGF0YSA9IGRhdGE7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZV9lYWNoX2FyZ3VtZW50KGFyZykge1xuICAgIGlmICh0eXBlb2YgYXJnICE9PSAnc3RyaW5nJyAmJiAhKGFyZyAmJiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiAnbGVuZ3RoJyBpbiBhcmcpKSB7XG4gICAgICAgIGxldCBtc2cgPSAneyNlYWNofSBvbmx5IGl0ZXJhdGVzIG92ZXIgYXJyYXktbGlrZSBvYmplY3RzLic7XG4gICAgICAgIGlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIGFyZyAmJiBTeW1ib2wuaXRlcmF0b3IgaW4gYXJnKSB7XG4gICAgICAgICAgICBtc2cgKz0gJyBZb3UgY2FuIHVzZSBhIHNwcmVhZCB0byBjb252ZXJ0IHRoaXMgaXRlcmFibGUgaW50byBhbiBhcnJheS4nO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHZhbGlkYXRlX3Nsb3RzKG5hbWUsIHNsb3QsIGtleXMpIHtcbiAgICBmb3IgKGNvbnN0IHNsb3Rfa2V5IG9mIE9iamVjdC5rZXlzKHNsb3QpKSB7XG4gICAgICAgIGlmICghfmtleXMuaW5kZXhPZihzbG90X2tleSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgPCR7bmFtZX0+IHJlY2VpdmVkIGFuIHVuZXhwZWN0ZWQgc2xvdCBcIiR7c2xvdF9rZXl9XCIuYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIFN2ZWx0ZSBjb21wb25lbnRzIHdpdGggc29tZSBtaW5vciBkZXYtZW5oYW5jZW1lbnRzLiBVc2VkIHdoZW4gZGV2PXRydWUuXG4gKi9cbmNsYXNzIFN2ZWx0ZUNvbXBvbmVudERldiBleHRlbmRzIFN2ZWx0ZUNvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBpZiAoIW9wdGlvbnMgfHwgKCFvcHRpb25zLnRhcmdldCAmJiAhb3B0aW9ucy4kJGlubGluZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIid0YXJnZXQnIGlzIGEgcmVxdWlyZWQgb3B0aW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuICAgICRkZXN0cm95KCkge1xuICAgICAgICBzdXBlci4kZGVzdHJveSgpO1xuICAgICAgICB0aGlzLiRkZXN0cm95ID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdDb21wb25lbnQgd2FzIGFscmVhZHkgZGVzdHJveWVkJyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgICAgICB9O1xuICAgIH1cbiAgICAkY2FwdHVyZV9zdGF0ZSgpIHsgfVxuICAgICRpbmplY3Rfc3RhdGUoKSB7IH1cbn1cbi8qKlxuICogQmFzZSBjbGFzcyB0byBjcmVhdGUgc3Ryb25nbHkgdHlwZWQgU3ZlbHRlIGNvbXBvbmVudHMuXG4gKiBUaGlzIG9ubHkgZXhpc3RzIGZvciB0eXBpbmcgcHVycG9zZXMgYW5kIHNob3VsZCBiZSB1c2VkIGluIGAuZC50c2AgZmlsZXMuXG4gKlxuICogIyMjIEV4YW1wbGU6XG4gKlxuICogWW91IGhhdmUgY29tcG9uZW50IGxpYnJhcnkgb24gbnBtIGNhbGxlZCBgY29tcG9uZW50LWxpYnJhcnlgLCBmcm9tIHdoaWNoXG4gKiB5b3UgZXhwb3J0IGEgY29tcG9uZW50IGNhbGxlZCBgTXlDb21wb25lbnRgLiBGb3IgU3ZlbHRlK1R5cGVTY3JpcHQgdXNlcnMsXG4gKiB5b3Ugd2FudCB0byBwcm92aWRlIHR5cGluZ3MuIFRoZXJlZm9yZSB5b3UgY3JlYXRlIGEgYGluZGV4LmQudHNgOlxuICogYGBgdHNcbiAqIGltcG9ydCB7IFN2ZWx0ZUNvbXBvbmVudFR5cGVkIH0gZnJvbSBcInN2ZWx0ZVwiO1xuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IGV4dGVuZHMgU3ZlbHRlQ29tcG9uZW50VHlwZWQ8e2Zvbzogc3RyaW5nfT4ge31cbiAqIGBgYFxuICogVHlwaW5nIHRoaXMgbWFrZXMgaXQgcG9zc2libGUgZm9yIElERXMgbGlrZSBWUyBDb2RlIHdpdGggdGhlIFN2ZWx0ZSBleHRlbnNpb25cbiAqIHRvIHByb3ZpZGUgaW50ZWxsaXNlbnNlIGFuZCB0byB1c2UgdGhlIGNvbXBvbmVudCBsaWtlIHRoaXMgaW4gYSBTdmVsdGUgZmlsZVxuICogd2l0aCBUeXBlU2NyaXB0OlxuICogYGBgc3ZlbHRlXG4gKiA8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICogXHRpbXBvcnQgeyBNeUNvbXBvbmVudCB9IGZyb20gXCJjb21wb25lbnQtbGlicmFyeVwiO1xuICogPC9zY3JpcHQ+XG4gKiA8TXlDb21wb25lbnQgZm9vPXsnYmFyJ30gLz5cbiAqIGBgYFxuICpcbiAqICMjIyMgV2h5IG5vdCBtYWtlIHRoaXMgcGFydCBvZiBgU3ZlbHRlQ29tcG9uZW50KERldilgP1xuICogQmVjYXVzZVxuICogYGBgdHNcbiAqIGNsYXNzIEFTdWJjbGFzc09mU3ZlbHRlQ29tcG9uZW50IGV4dGVuZHMgU3ZlbHRlQ29tcG9uZW50PHtmb286IHN0cmluZ30+IHt9XG4gKiBjb25zdCBjb21wb25lbnQ6IHR5cGVvZiBTdmVsdGVDb21wb25lbnQgPSBBU3ViY2xhc3NPZlN2ZWx0ZUNvbXBvbmVudDtcbiAqIGBgYFxuICogd2lsbCB0aHJvdyBhIHR5cGUgZXJyb3IsIHNvIHdlIG5lZWQgdG8gc2VwYXJhdGUgdGhlIG1vcmUgc3RyaWN0bHkgdHlwZWQgY2xhc3MuXG4gKi9cbmNsYXNzIFN2ZWx0ZUNvbXBvbmVudFR5cGVkIGV4dGVuZHMgU3ZlbHRlQ29tcG9uZW50RGV2IHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGxvb3BfZ3VhcmQodGltZW91dCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBpZiAoRGF0ZS5ub3coKSAtIHN0YXJ0ID4gdGltZW91dCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbmZpbml0ZSBsb29wIGRldGVjdGVkJyk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5leHBvcnQgeyBIdG1sVGFnLCBIdG1sVGFnSHlkcmF0aW9uLCBTdmVsdGVDb21wb25lbnQsIFN2ZWx0ZUNvbXBvbmVudERldiwgU3ZlbHRlQ29tcG9uZW50VHlwZWQsIFN2ZWx0ZUVsZW1lbnQsIGFjdGlvbl9kZXN0cm95ZXIsIGFkZF9hdHRyaWJ1dGUsIGFkZF9jbGFzc2VzLCBhZGRfZmx1c2hfY2FsbGJhY2ssIGFkZF9sb2NhdGlvbiwgYWRkX3JlbmRlcl9jYWxsYmFjaywgYWRkX3Jlc2l6ZV9saXN0ZW5lciwgYWRkX3RyYW5zZm9ybSwgYWZ0ZXJVcGRhdGUsIGFwcGVuZCwgYXBwZW5kX2RldiwgYXBwZW5kX2VtcHR5X3N0eWxlc2hlZXQsIGFwcGVuZF9oeWRyYXRpb24sIGFwcGVuZF9oeWRyYXRpb25fZGV2LCBhcHBlbmRfc3R5bGVzLCBhc3NpZ24sIGF0dHIsIGF0dHJfZGV2LCBhdHRyaWJ1dGVfdG9fb2JqZWN0LCBiZWZvcmVVcGRhdGUsIGJpbmQsIGJpbmRpbmdfY2FsbGJhY2tzLCBibGFua19vYmplY3QsIGJ1YmJsZSwgY2hlY2tfb3V0cm9zLCBjaGlsZHJlbiwgY2xhaW1fY29tcG9uZW50LCBjbGFpbV9lbGVtZW50LCBjbGFpbV9odG1sX3RhZywgY2xhaW1fc3BhY2UsIGNsYWltX3N2Z19lbGVtZW50LCBjbGFpbV90ZXh0LCBjbGVhcl9sb29wcywgY29tcG9uZW50X3N1YnNjcmliZSwgY29tcHV0ZV9yZXN0X3Byb3BzLCBjb21wdXRlX3Nsb3RzLCBjcmVhdGVFdmVudERpc3BhdGNoZXIsIGNyZWF0ZV9hbmltYXRpb24sIGNyZWF0ZV9iaWRpcmVjdGlvbmFsX3RyYW5zaXRpb24sIGNyZWF0ZV9jb21wb25lbnQsIGNyZWF0ZV9pbl90cmFuc2l0aW9uLCBjcmVhdGVfb3V0X3RyYW5zaXRpb24sIGNyZWF0ZV9zbG90LCBjcmVhdGVfc3NyX2NvbXBvbmVudCwgY3VycmVudF9jb21wb25lbnQsIGN1c3RvbV9ldmVudCwgZGF0YXNldF9kZXYsIGRlYnVnLCBkZXN0cm95X2Jsb2NrLCBkZXN0cm95X2NvbXBvbmVudCwgZGVzdHJveV9lYWNoLCBkZXRhY2gsIGRldGFjaF9hZnRlcl9kZXYsIGRldGFjaF9iZWZvcmVfZGV2LCBkZXRhY2hfYmV0d2Vlbl9kZXYsIGRldGFjaF9kZXYsIGRpcnR5X2NvbXBvbmVudHMsIGRpc3BhdGNoX2RldiwgZWFjaCwgZWxlbWVudCwgZWxlbWVudF9pcywgZW1wdHksIGVuZF9oeWRyYXRpbmcsIGVzY2FwZSwgZXNjYXBlX2F0dHJpYnV0ZV92YWx1ZSwgZXNjYXBlX29iamVjdCwgZXNjYXBlZCwgZXhjbHVkZV9pbnRlcm5hbF9wcm9wcywgZml4X2FuZF9kZXN0cm95X2Jsb2NrLCBmaXhfYW5kX291dHJvX2FuZF9kZXN0cm95X2Jsb2NrLCBmaXhfcG9zaXRpb24sIGZsdXNoLCBnZXRBbGxDb250ZXh0cywgZ2V0Q29udGV4dCwgZ2V0X2FsbF9kaXJ0eV9mcm9tX3Njb3BlLCBnZXRfYmluZGluZ19ncm91cF92YWx1ZSwgZ2V0X2N1cnJlbnRfY29tcG9uZW50LCBnZXRfY3VzdG9tX2VsZW1lbnRzX3Nsb3RzLCBnZXRfcm9vdF9mb3Jfc3R5bGUsIGdldF9zbG90X2NoYW5nZXMsIGdldF9zcHJlYWRfb2JqZWN0LCBnZXRfc3ByZWFkX3VwZGF0ZSwgZ2V0X3N0b3JlX3ZhbHVlLCBnbG9iYWxzLCBncm91cF9vdXRyb3MsIGhhbmRsZV9wcm9taXNlLCBoYXNDb250ZXh0LCBoYXNfcHJvcCwgaWRlbnRpdHksIGluaXQsIGluc2VydCwgaW5zZXJ0X2RldiwgaW5zZXJ0X2h5ZHJhdGlvbiwgaW5zZXJ0X2h5ZHJhdGlvbl9kZXYsIGludHJvcywgaW52YWxpZF9hdHRyaWJ1dGVfbmFtZV9jaGFyYWN0ZXIsIGlzX2NsaWVudCwgaXNfY3Jvc3NvcmlnaW4sIGlzX2VtcHR5LCBpc19mdW5jdGlvbiwgaXNfcHJvbWlzZSwgbGlzdGVuLCBsaXN0ZW5fZGV2LCBsb29wLCBsb29wX2d1YXJkLCBtaXNzaW5nX2NvbXBvbmVudCwgbW91bnRfY29tcG9uZW50LCBub29wLCBub3RfZXF1YWwsIG5vdywgbnVsbF90b19lbXB0eSwgb2JqZWN0X3dpdGhvdXRfcHJvcGVydGllcywgb25EZXN0cm95LCBvbk1vdW50LCBvbmNlLCBvdXRyb19hbmRfZGVzdHJveV9ibG9jaywgcHJldmVudF9kZWZhdWx0LCBwcm9wX2RldiwgcXVlcnlfc2VsZWN0b3JfYWxsLCByYWYsIHJ1biwgcnVuX2FsbCwgc2FmZV9ub3RfZXF1YWwsIHNjaGVkdWxlX3VwZGF0ZSwgc2VsZWN0X211bHRpcGxlX3ZhbHVlLCBzZWxlY3Rfb3B0aW9uLCBzZWxlY3Rfb3B0aW9ucywgc2VsZWN0X3ZhbHVlLCBzZWxmLCBzZXRDb250ZXh0LCBzZXRfYXR0cmlidXRlcywgc2V0X2N1cnJlbnRfY29tcG9uZW50LCBzZXRfY3VzdG9tX2VsZW1lbnRfZGF0YSwgc2V0X2RhdGEsIHNldF9kYXRhX2Rldiwgc2V0X2lucHV0X3R5cGUsIHNldF9pbnB1dF92YWx1ZSwgc2V0X25vdywgc2V0X3JhZiwgc2V0X3N0b3JlX3ZhbHVlLCBzZXRfc3R5bGUsIHNldF9zdmdfYXR0cmlidXRlcywgc3BhY2UsIHNwcmVhZCwgc3JjX3VybF9lcXVhbCwgc3RhcnRfaHlkcmF0aW5nLCBzdG9wX3Byb3BhZ2F0aW9uLCBzdWJzY3JpYmUsIHN2Z19lbGVtZW50LCB0ZXh0LCB0aWNrLCB0aW1lX3Jhbmdlc190b19hcnJheSwgdG9fbnVtYmVyLCB0b2dnbGVfY2xhc3MsIHRyYW5zaXRpb25faW4sIHRyYW5zaXRpb25fb3V0LCB0cnVzdGVkLCB1cGRhdGVfYXdhaXRfYmxvY2tfYnJhbmNoLCB1cGRhdGVfa2V5ZWRfZWFjaCwgdXBkYXRlX3Nsb3QsIHVwZGF0ZV9zbG90X2Jhc2UsIHZhbGlkYXRlX2NvbXBvbmVudCwgdmFsaWRhdGVfZWFjaF9hcmd1bWVudCwgdmFsaWRhdGVfZWFjaF9rZXlzLCB2YWxpZGF0ZV9zbG90cywgdmFsaWRhdGVfc3RvcmUsIHhsaW5rX2F0dHIgfTtcbiIsICJpbXBvcnQgeyBNdWx0aUdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHsgZGVidWcsIGVycm9yIH0gZnJvbSBcImxvZ2xldmVsXCI7XHJcbmltcG9ydCB7IG5vcm1hbGl6ZVBhdGgsIE5vdGljZSwgUG9zLCBURmlsZSwgVEZvbGRlciB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgeyBhZGRDU1ZDcnVtYnMsIGdldENTVlJvd3MgfSBmcm9tIFwiLi9BbHRlcm5hdGl2ZUhpZXJhcmNoaWVzL0NTVkNydW1ic1wiO1xyXG5pbXBvcnQgeyBhZGREYXRhdmlld05vdGVzVG9HcmFwaCB9IGZyb20gXCIuL0FsdGVybmF0aXZlSGllcmFyY2hpZXMvRGF0YXZpZXdOb3Rlc1wiO1xyXG5pbXBvcnQgeyBhZGREYXRlTm90ZXNUb0dyYXBoIH0gZnJvbSBcIi4vQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9EYXRlTm90ZXNcIjtcclxuaW1wb3J0IHsgYWRkRGVuZHJvbk5vdGVzVG9HcmFwaCB9IGZyb20gXCIuL0FsdGVybmF0aXZlSGllcmFyY2hpZXMvRGVuZHJvbk5vdGVzXCI7XHJcbmltcG9ydCB7IGFkZEZvbGRlck5vdGVzVG9HcmFwaCB9IGZyb20gXCIuL0FsdGVybmF0aXZlSGllcmFyY2hpZXMvRm9sZGVyTm90ZXNcIjtcclxuaW1wb3J0IHtcclxuICBhZGRITnNUb0dyYXBoLFxyXG4gIGdldEhpZXJhcmNoeU5vdGVJdGVtc1xyXG59IGZyb20gXCIuL0FsdGVybmF0aXZlSGllcmFyY2hpZXMvSGllcmFyY2h5Tm90ZXMvSGllcmFyY2h5Tm90ZXNcIjtcclxuaW1wb3J0IHtcclxuICBhZGRKdWdnbExpbmtzVG9HcmFwaCxcclxuICBnZXRKdWdnbExpbmtzXHJcbn0gZnJvbSBcIi4vQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9KdWdnbExpbmtzXCI7XHJcbmltcG9ydCB7IGFkZExpbmtOb3Rlc1RvR3JhcGggfSBmcm9tIFwiLi9BbHRlcm5hdGl2ZUhpZXJhcmNoaWVzL0xpbmtOb3Rlc1wiO1xyXG5pbXBvcnQgeyBhZGRSZWdleE5vdGVzVG9HcmFwaCB9IGZyb20gXCIuL0FsdGVybmF0aXZlSGllcmFyY2hpZXMvUmVnZXhOb3Rlc1wiO1xyXG5pbXBvcnQgeyBhZGRUYWdOb3Rlc1RvR3JhcGggfSBmcm9tIFwiLi9BbHRlcm5hdGl2ZUhpZXJhcmNoaWVzL1RhZ05vdGVzXCI7XHJcbmltcG9ydCB7IGFkZFRyYXZlcnNlTm90ZXNUb0dyYXBoIH0gZnJvbSBcIi4vQWx0ZXJuYXRpdmVIaWVyYXJjaGllcy9UcmF2ZXJzZU5vdGVzXCI7XHJcbmltcG9ydCB7XHJcbiAgQkNfQUxUUyxcclxuICBCQ19EVl9OT1RFLFxyXG4gIEJDX0ZPTERFUl9OT1RFLCBCQ19MSU5LX05PVEUsXHJcbiAgQkNfUkVHRVhfTk9URSxcclxuICBCQ19UQUdfTk9URSxcclxuICBCQ19UUkFWRVJTRV9OT1RFLFxyXG4gIGRyb3BIZWFkZXJPckFsaWFzLFxyXG4gIHNwbGl0TGlua3NSZWdleFxyXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgdHlwZSB7XHJcbiAgZHZGcm9udG1hdHRlckNhY2hlLFxyXG4gIGR2TGluayxcclxuICBSYXdWYWx1ZVxyXG59IGZyb20gXCIuL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4vbWFpblwiO1xyXG5pbXBvcnQgeyBhZGRBdW50c1VuY2xlcywgYWRkQ291c2lucywgYWRkU2libGluZ3NGcm9tU2FtZVBhcmVudCwgYWRkU2libGluZ3NQYXJlbnRJc1BhcmVudCwgYWRkU3RydWN0dXJhbEVxdWl2YWxlbmNlU2libGluZ3MgfSBmcm9tIFwiLi9SZWxhdGlvbnNcIjtcclxuaW1wb3J0IHtcclxuICBhZGROb2Rlc0lmTm90LFxyXG4gIGJ1aWxkT2JzR3JhcGgsXHJcbiAgZ2V0UmVmbGV4aXZlQ2xvc3VyZSxcclxuICBnZXRTb3VyY2VPcmRlcixcclxuICBnZXRUYXJnZXRPcmRlcixcclxuICBwb3B1bGF0ZU1haW5cclxufSBmcm9tIFwiLi9VdGlscy9ncmFwaFV0aWxzXCI7XHJcbmltcG9ydCB7IGl0ZXJhdGVIaWVycyB9IGZyb20gXCIuL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIGdldEJhc2VGcm9tTURQYXRoLFxyXG4gIGdldERWQXBpLFxyXG4gIGdldERWQmFzZW5hbWVcclxufSBmcm9tIFwiLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcbmltcG9ydCB7IGRyYXdUcmFpbCB9IGZyb20gXCIuL1ZpZXdzL1RyYWlsVmlld1wiO1xyXG5cclxuZnVuY3Rpb24gZ2V0RFZNZXRhZGF0YUNhY2hlKHBsdWdpbjogQkNQbHVnaW4pIHtcclxuICBjb25zdCB7IGRiIH0gPSBwbHVnaW47XHJcbiAgY29uc3QgYXBpID0gZ2V0RFZBcGkocGx1Z2luKTtcclxuXHJcbiAgZGIuc3RhcnQxRyhcImdldERWTWV0YWRhdGFDYWNoZVwiKTtcclxuICBjb25zdCBmcm9udG1zID0gYXBpLnBhZ2VzKCkudmFsdWVzXHJcbiAgZGIuZW5kMUcoeyBmcm9udG1zIH0pO1xyXG5cclxuICByZXR1cm4gZnJvbnRtcztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0T2JzTWV0YWRhdGFDYWNoZShwbHVnaW46IEJDUGx1Z2luLCBmaWxlczogVEZpbGVbXSkge1xyXG4gIGNvbnN0IHsgZGIgfSA9IHBsdWdpbjtcclxuICBkYi5zdGFydDFHKFwiZ2V0T2JzTWV0YWRhdGFDYWNoZVwiKTtcclxuXHJcbiAgY29uc3QgZnJvbnRtczogZHZGcm9udG1hdHRlckNhY2hlW10gPSBmaWxlcy5tYXAoKGZpbGUpID0+IHtcclxuICAgIGNvbnN0IHsgZnJvbnRtYXR0ZXIgfSA9IGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKTtcclxuICAgIHJldHVybiBmcm9udG1hdHRlciA/IHsgZmlsZSwgLi4uZnJvbnRtYXR0ZXIgfSA6IHsgZmlsZSB9O1xyXG4gIH0pO1xyXG5cclxuICBkYi5lbmQxRyh7IGZyb250bXMgfSk7XHJcbiAgcmV0dXJuIGZyb250bXM7XHJcbn1cclxuXHJcbmNvbnN0IGlzRFZQcm94eSA9IChpdGVtOiBSYXdWYWx1ZSkgPT4gdHlwZW9mIGl0ZW0uZGVmYXVsdENvbXBhcmF0b3IgPT09IFwiZnVuY3Rpb25cIlxyXG5cclxuLyoqXHJcbiAqIEtlZXAgdW53cmFwcGluZyBhIHByb3hpZWQgaXRlbSB1bnRpbCBpdCBpc24ndCBvbmUgYW55bW9yZVxyXG4gKiBAcGFyYW0gIHtSYXdWYWx1ZX0gaXRlbVxyXG4gKi9cclxuZnVuY3Rpb24gdW5wcm94eShpdGVtOiBSYXdWYWx1ZSkge1xyXG4gIGNvbnN0IHVucHJveGllZCA9IFtdO1xyXG4gIGNvbnN0IHF1ZXVlID0gW2l0ZW1dO1xyXG5cclxuICB3aGlsZSAocXVldWUubGVuZ3RoKSB7XHJcbiAgICBjb25zdCBjdXJySXRlbSA9IHF1ZXVlLnNoaWZ0KCk7XHJcblxyXG4gICAgaWYgKGlzRFZQcm94eShjdXJySXRlbSkpIHF1ZXVlLnB1c2goLi4uY3Vyckl0ZW0udmFsdWVzKTtcclxuICAgIGVsc2UgdW5wcm94aWVkLnB1c2goY3Vyckl0ZW0pO1xyXG4gIH1cclxuICByZXR1cm4gdW5wcm94aWVkO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEdpdmVuIGEgYGR2Q2FjaGVbZmllbGRdYCB2YWx1ZSwgcGFyc2UgdGhlIGxpbmsocykgb3V0IG9mIGl0XHJcbiAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW10gfCBzdHJpbmdbXVtdIHwgZHZMaW5rIHwgZHZMaW5rW10gfCBQb3MgfCBURmlsZX0gdmFsdWVcclxuICovXHJcbmZ1bmN0aW9uIHBhcnNlRmllbGRWYWx1ZShcclxuICB2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10gfCBzdHJpbmdbXVtdIHwgZHZMaW5rIHwgZHZMaW5rW10gfCBQb3MgfCBURmlsZVxyXG4pIHtcclxuICBpZiAoIXZhbHVlKSByZXR1cm4gW107XHJcblxyXG5cclxuICBjb25zdCBwYXJzZWQ6IHN0cmluZ1tdID0gW107XHJcbiAgdHJ5IHtcclxuXHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgIGNvbnN0IHNwbGl0cyA9IHZhbHVlLm1hdGNoKHNwbGl0TGlua3NSZWdleCk7XHJcblxyXG4gICAgICBpZiAoc3BsaXRzICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgbGlua05hbWVzID0gc3BsaXRzLm1hcCgobGluaykgPT4gZ2V0QmFzZUZyb21NRFBhdGgobGluay5tYXRjaChkcm9wSGVhZGVyT3JBbGlhcylbMV0pKTtcclxuICAgICAgICBwYXJzZWQucHVzaCguLi5saW5rTmFtZXMpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCByYXdWYWx1ZXM6IFJhd1ZhbHVlW10gPSBbdmFsdWVdLmZsYXQoNCk7XHJcbiAgICAgIGRlYnVnKC4uLnJhd1ZhbHVlcyk7XHJcblxyXG4gICAgICByYXdWYWx1ZXMuZm9yRWFjaCgocmF3SXRlbSkgPT4ge1xyXG4gICAgICAgIGlmICghcmF3SXRlbSkgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCB1blByb3hpZWQgPSB1bnByb3h5KHJhd0l0ZW0pO1xyXG4gICAgICAgIHVuUHJveGllZC5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgICAgICAgY29uc3QgcmF3QXNTdHJpbmcgPSB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICBjb25zdCBzcGxpdHMgPSByYXdBc1N0cmluZy5tYXRjaChzcGxpdExpbmtzUmVnZXgpO1xyXG4gICAgICAgICAgICBpZiAoc3BsaXRzICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgY29uc3Qgc3RycyA9IHNwbGl0cy5tYXAoKGxpbmspID0+XHJcbiAgICAgICAgICAgICAgICBnZXRCYXNlRnJvbU1EUGF0aChsaW5rLm1hdGNoKGRyb3BIZWFkZXJPckFsaWFzKVsxXSlcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIHBhcnNlZC5wdXNoKC4uLnN0cnMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGJhc2VuYW1lID0gZ2V0QmFzZUZyb21NRFBhdGgocmF3QXNTdHJpbmcpO1xyXG4gICAgICAgICAgICAgIHBhcnNlZC5wdXNoKGJhc2VuYW1lLnNwbGl0KFwiI1wiKVswXS5zcGxpdChcInxcIilbMF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLnBhdGggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBjb25zdCBiYXNlbmFtZSA9IGdldEJhc2VGcm9tTURQYXRoKHZhbHVlLnBhdGgpO1xyXG4gICAgICAgICAgICBpZiAoYmFzZW5hbWUgIT09IHVuZGVmaW5lZCkgcGFyc2VkLnB1c2goYmFzZW5hbWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJzZWQ7XHJcbiAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICBlcnJvcihlcnIpO1xyXG4gICAgcmV0dXJuIHBhcnNlZDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZE1haW5HKHBsdWdpbjogQkNQbHVnaW4pOiBQcm9taXNlPE11bHRpR3JhcGg+IHtcclxuICBjb25zdCBtYWluRyA9IG5ldyBNdWx0aUdyYXBoKCk7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHsgc2V0dGluZ3MsIGRiIH0gPSBwbHVnaW47XHJcbiAgICBjb25zdCB7IHVzZXJIaWVycywgQ1NWUGF0aHMsIHBhcnNlSnVnZ2xMaW5rc1dpdGhvdXRKdWdnbCwgaGllcmFyY2h5Tm90ZXMgfSA9XHJcbiAgICAgIHNldHRpbmdzO1xyXG4gICAgZGIuc3RhcnQyRyhcImluaXRHcmFwaHNcIik7XHJcblxyXG4gICAgaWYgKHVzZXJIaWVycy5sZW5ndGggPT09IDApIHtcclxuICAgICAgZGIuZW5kMkcoKTtcclxuICAgICAgbmV3IE5vdGljZShcIllvdSBkbyBub3QgaGF2ZSBhbnkgQnJlYWRjcnVtYnMgaGllcmFyY2hpZXMgc2V0IHVwLlwiKTtcclxuICAgICAgcmV0dXJuIG1haW5HO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbGVzID0gYXBwLnZhdWx0LmdldE1hcmtkb3duRmlsZXMoKTtcclxuICAgIGNvbnN0IGR2USA9IGFwcC5wbHVnaW5zLmVuYWJsZWRQbHVnaW5zLmhhcyhcImRhdGF2aWV3XCIpO1xyXG5cclxuICAgIGxldCBmcm9udG1zOiBkdkZyb250bWF0dGVyQ2FjaGVbXSA9IGR2UVxyXG4gICAgICA/IGdldERWTWV0YWRhdGFDYWNoZShwbHVnaW4pXHJcbiAgICAgIDogZ2V0T2JzTWV0YWRhdGFDYWNoZShwbHVnaW4sIGZpbGVzKTtcclxuXHJcbiAgICAvLyBpZiAoZnJvbnRtcy5zb21lKChmcm9udG0pID0+IGZyb250bSA9PT0gdW5kZWZpbmVkKSkge1xyXG4gICAgLy8gICBhd2FpdCB3YWl0KDIwMDApO1xyXG4gICAgLy8gICBmcm9udG1zID0gZHZRXHJcbiAgICAvLyAgICAgPyBnZXREVk1ldGFkYXRhQ2FjaGUocGx1Z2luKVxyXG4gICAgLy8gICAgIDogZ2V0T2JzTWV0YWRhdGFDYWNoZShwbHVnaW4sIGZpbGVzKTtcclxuICAgIC8vIH1cclxuXHJcbiAgICBjb25zdCBDU1ZSb3dzID0gQ1NWUGF0aHMgIT09IFwiXCIgPyBhd2FpdCBnZXRDU1ZSb3dzKHBsdWdpbikgOiBbXTtcclxuXHJcbiAgICBjb25zdCBlbGlnYWJsZUFsdHM6IHsgW2FsdEZpZWxkOiBzdHJpbmddOiBkdkZyb250bWF0dGVyQ2FjaGVbXSB9ID0ge307XHJcbiAgICBCQ19BTFRTLmZvckVhY2goKGFsdCkgPT4gKGVsaWdhYmxlQWx0c1thbHRdID0gW10pKTtcclxuXHJcbiAgICBkYi5zdGFydDJHKFwiYWRkRnJvbnRtYXR0ZXJUb0dyYXBoXCIpO1xyXG4gICAgZnJvbnRtcy5mb3JFYWNoKChwYWdlKSA9PiB7XHJcbiAgICAgIEJDX0FMVFMuZm9yRWFjaCgoYWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHBhZ2VbYWx0XSAhPT0gdW5kZWZpbmVkICYmIHBhZ2VbYWx0XSAhPT0gbnVsbClcclxuICAgICAgICAgIGVsaWdhYmxlQWx0c1thbHRdLnB1c2gocGFnZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgY29uc3QgYmFzZW5hbWUgPSBnZXREVkJhc2VuYW1lKHBhZ2UuZmlsZSk7XHJcbiAgICAgIGNvbnN0IHNvdXJjZU9yZGVyID0gZ2V0U291cmNlT3JkZXIocGFnZSk7XHJcblxyXG4gICAgICBpdGVyYXRlSGllcnModXNlckhpZXJzLCAoaGllciwgZGlyLCBmaWVsZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHBhcnNlRmllbGRWYWx1ZShwYWdlW2ZpZWxkXSk7XHJcblxyXG4gICAgICAgIHZhbHVlcy5mb3JFYWNoKCh0YXJnZXQpID0+IHtcclxuICAgICAgICAgIGlmICh0YXJnZXQuc3RhcnRzV2l0aChcIjwlXCIpIHx8IHRhcmdldC5zdGFydHNXaXRoKFwie3tcIikpIHJldHVybjtcclxuICAgICAgICAgIGNvbnN0IHRhcmdldE9yZGVyID0gZ2V0VGFyZ2V0T3JkZXIoZnJvbnRtcywgdGFyZ2V0KTtcclxuXHJcbiAgICAgICAgICBwb3B1bGF0ZU1haW4oXHJcbiAgICAgICAgICAgIHNldHRpbmdzLFxyXG4gICAgICAgICAgICBtYWluRyxcclxuICAgICAgICAgICAgYmFzZW5hbWUsXHJcbiAgICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAgICB0YXJnZXQsXHJcbiAgICAgICAgICAgIHNvdXJjZU9yZGVyLFxyXG4gICAgICAgICAgICB0YXJnZXRPcmRlclxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoQ1NWUm93cy5sZW5ndGgpIGFkZENTVkNydW1icyhtYWluRywgQ1NWUm93cywgZGlyLCBmaWVsZCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZGIuZW5kMkcoKTtcclxuXHJcbiAgICAvLyBTRUNUSU9OICBKdWdnbCBMaW5rc1xyXG4gICAgY29uc3QganVnZ2xMaW5rcyA9XHJcbiAgICAgIGFwcC5wbHVnaW5zLnBsdWdpbnMuanVnZ2wgfHwgcGFyc2VKdWdnbExpbmtzV2l0aG91dEp1Z2dsXHJcbiAgICAgICAgPyBhd2FpdCBnZXRKdWdnbExpbmtzKHBsdWdpbiwgZmlsZXMpXHJcbiAgICAgICAgOiBbXTtcclxuXHJcbiAgICBpZiAoanVnZ2xMaW5rcy5sZW5ndGgpXHJcbiAgICAgIGFkZEp1Z2dsTGlua3NUb0dyYXBoKHNldHRpbmdzLCBqdWdnbExpbmtzLCBmcm9udG1zLCBtYWluRyk7XHJcblxyXG4gICAgLy8gIVNFQ1RJT04gIEp1Z2dsIExpbmtzXHJcblxyXG4gICAgZGIuc3RhcnQyRyhcIkFsdGVybmF0aXZlIEhpZXJhcmNoaWVzXCIpO1xyXG4gICAgLy8gU0VDVElPTiAgSGllcmFyY2h5IE5vdGVzXHJcbiAgICBkYi5zdGFydDJHKFwiSGllcmFyY2h5IE5vdGVzXCIpO1xyXG5cclxuICAgIGlmIChoaWVyYXJjaHlOb3Rlcy5sZW5ndGgpIHtcclxuICAgICAgZm9yIChjb25zdCBub3RlT3JGb2xkZXIgb2YgaGllcmFyY2h5Tm90ZXMpIHtcclxuICAgICAgICBpZiAobm90ZU9yRm9sZGVyLmVuZHNXaXRoKFwiL1wiKSkge1xyXG4gICAgICAgICAgY29uc3QgZm9sZGVyID0gYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChcclxuICAgICAgICAgICAgbm9ybWFsaXplUGF0aChub3RlT3JGb2xkZXIpXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIGlmICghKGZvbGRlciBpbnN0YW5jZW9mIFRGb2xkZXIpKSBjb250aW51ZTtcclxuICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgZm9sZGVyLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIFRGaWxlKSB7XHJcbiAgICAgICAgICAgICAgYWRkSE5zVG9HcmFwaChcclxuICAgICAgICAgICAgICAgIHNldHRpbmdzLFxyXG4gICAgICAgICAgICAgICAgYXdhaXQgZ2V0SGllcmFyY2h5Tm90ZUl0ZW1zKGNoaWxkKSxcclxuICAgICAgICAgICAgICAgIG1haW5HXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBmaWxlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Rmlyc3RMaW5rcGF0aERlc3Qobm90ZU9yRm9sZGVyLCBcIlwiKTtcclxuICAgICAgICAgIGlmIChmaWxlKVxyXG4gICAgICAgICAgICBhZGRITnNUb0dyYXBoKFxyXG4gICAgICAgICAgICAgIHNldHRpbmdzLFxyXG4gICAgICAgICAgICAgIGF3YWl0IGdldEhpZXJhcmNoeU5vdGVJdGVtcyhmaWxlKSxcclxuICAgICAgICAgICAgICBtYWluR1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRiLmVuZDJHKCk7XHJcbiAgICAvLyAhU0VDVElPTiAgSGllcmFyY2h5IE5vdGVzXHJcblxyXG4gICAgZGIuc3RhcnQyRyhcIkZvbGRlciBOb3Rlc1wiKTtcclxuICAgIGFkZEZvbGRlck5vdGVzVG9HcmFwaChwbHVnaW4sIGVsaWdhYmxlQWx0c1tCQ19GT0xERVJfTk9URV0sIGZyb250bXMsIG1haW5HKTtcclxuICAgIGRiLmVuZDJHKCk7XHJcbiAgICBkYi5zdGFydDJHKFwiVGFnIE5vdGVzXCIpO1xyXG4gICAgYWRkVGFnTm90ZXNUb0dyYXBoKHBsdWdpbiwgZWxpZ2FibGVBbHRzW0JDX1RBR19OT1RFXSwgZnJvbnRtcywgbWFpbkcpO1xyXG4gICAgZGIuZW5kMkcoKTtcclxuICAgIGRiLnN0YXJ0MkcoXCJMaW5rIE5vdGVzXCIpO1xyXG4gICAgYWRkTGlua05vdGVzVG9HcmFwaChwbHVnaW4sIGVsaWdhYmxlQWx0c1tCQ19MSU5LX05PVEVdLCBmcm9udG1zLCBtYWluRyk7XHJcbiAgICBkYi5lbmQyRygpO1xyXG4gICAgZGIuc3RhcnQyRyhcIlJlZ2V4IE5vdGVzXCIpO1xyXG4gICAgYWRkUmVnZXhOb3Rlc1RvR3JhcGgocGx1Z2luLCBlbGlnYWJsZUFsdHNbQkNfUkVHRVhfTk9URV0sIGZyb250bXMsIG1haW5HKTtcclxuICAgIGRiLmVuZDJHKCk7XHJcbiAgICAvLyBwbHVnaW4uYWRkTmFtaW5nU3lzdGVtTm90ZXNUb0dyYXBoKGZyb250bXMsIG1haW5HKTtcclxuICAgIGRiLnN0YXJ0MkcoXCJUcmF2ZXJzZSBOb3Rlc1wiKTtcclxuICAgIGFkZFRyYXZlcnNlTm90ZXNUb0dyYXBoKFxyXG4gICAgICBwbHVnaW4sXHJcbiAgICAgIGVsaWdhYmxlQWx0c1tCQ19UUkFWRVJTRV9OT1RFXSxcclxuICAgICAgbWFpbkcsXHJcbiAgICAgIGJ1aWxkT2JzR3JhcGgoKVxyXG4gICAgKTtcclxuICAgIGRiLmVuZDJHKCk7XHJcbiAgICBkYi5zdGFydDJHKFwiRGVuZHJvbiBOb3Rlc1wiKTtcclxuICAgIGFkZERlbmRyb25Ob3Rlc1RvR3JhcGgocGx1Z2luLCBmcm9udG1zLCBtYWluRyk7XHJcbiAgICBkYi5lbmQyRygpO1xyXG4gICAgZGIuc3RhcnQyRyhcIkRhdGF2aWV3IE5vdGVzXCIpO1xyXG4gICAgYWRkRGF0YXZpZXdOb3Rlc1RvR3JhcGgocGx1Z2luLCBlbGlnYWJsZUFsdHNbQkNfRFZfTk9URV0sIGZyb250bXMsIG1haW5HKTtcclxuICAgIGRiLmVuZDJHKCk7XHJcbiAgICBkYi5zdGFydDJHKFwiRGF0ZSBOb3Rlc1wiKTtcclxuICAgIGFkZERhdGVOb3Rlc1RvR3JhcGgocGx1Z2luLCBmcm9udG1zLCBtYWluRyk7XHJcbiAgICBkYi5lbmQyRygpO1xyXG5cclxuICAgIGRiLmVuZDJHKCk7XHJcblxyXG4gICAgZmlsZXMuZm9yRWFjaCgoZmlsZSkgPT4gYWRkTm9kZXNJZk5vdChtYWluRywgW2ZpbGUuYmFzZW5hbWVdKSk7XHJcbiAgICBkYi5lbmQyRyhcImdyYXBocyBpbml0ZWRcIiwgeyBtYWluRyB9KTtcclxuICAgIHJldHVybiBtYWluRztcclxuICB9IGNhdGNoIChlcnIpIHtcclxuICAgIGVycm9yKGVycik7XHJcbiAgICBwbHVnaW4uZGIuZW5kMkcoKTtcclxuICAgIHJldHVybiBtYWluRztcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBidWlsZENsb3NlZEcocGx1Z2luOiBCQ1BsdWdpbikge1xyXG4gIGNvbnN0IHsgbWFpbkcsIHNldHRpbmdzIH0gPSBwbHVnaW47XHJcbiAgY29uc3Qge1xyXG4gICAgdXNlckhpZXJzLFxyXG4gICAgaW1wbGllZFJlbGF0aW9uczoge1xyXG4gICAgICBzYW1lUGFyZW50SXNTaWJsaW5nLFxyXG4gICAgICBwYXJlbnRzU2libGluZ3NJc1BhcmVudHMsXHJcbiAgICAgIGNvdXNpbnNJc1NpYmxpbmcsXHJcbiAgICAgIHNpYmxpbmdzU2libGluZ0lzU2libGluZyxcclxuICAgICAgc2libGluZ3NQYXJlbnRJc1BhcmVudCxcclxuICAgIH0sXHJcbiAgfSA9IHNldHRpbmdzO1xyXG4gIGxldCBjbG9zZWRHID0gZ2V0UmVmbGV4aXZlQ2xvc3VyZShtYWluRywgdXNlckhpZXJzKTtcclxuXHJcbiAgaWYgKHNhbWVQYXJlbnRJc1NpYmxpbmcpIGFkZFNpYmxpbmdzRnJvbVNhbWVQYXJlbnQoY2xvc2VkRywgc2V0dGluZ3MpO1xyXG4gIGlmIChzaWJsaW5nc1BhcmVudElzUGFyZW50KSBhZGRTaWJsaW5nc1BhcmVudElzUGFyZW50KGNsb3NlZEcpO1xyXG4gIGlmIChwYXJlbnRzU2libGluZ3NJc1BhcmVudHMpIGFkZEF1bnRzVW5jbGVzKGNsb3NlZEcpO1xyXG4gIGlmIChjb3VzaW5zSXNTaWJsaW5nKSBhZGRDb3VzaW5zKGNsb3NlZEcpO1xyXG4gIGlmIChzaWJsaW5nc1NpYmxpbmdJc1NpYmxpbmcpIGFkZFN0cnVjdHVyYWxFcXVpdmFsZW5jZVNpYmxpbmdzKGNsb3NlZEcpO1xyXG5cclxuICByZXR1cm4gY2xvc2VkRztcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hJbmRleChwbHVnaW46IEJDUGx1Z2luKSB7XHJcbiAgaWYgKCFwbHVnaW4uYWN0aXZlTGVhZkNoYW5nZSkgcGx1Z2luLnJlZ2lzdGVyQWN0aXZlTGVhZkNoYW5nZUV2ZW50KCk7XHJcbiAgaWYgKCFwbHVnaW4ubGF5b3V0Q2hhbmdlKSBwbHVnaW4ucmVnaXN0ZXJMYXlvdXRDaGFuZ2VFdmVudCgpO1xyXG5cclxuICBwbHVnaW4ubWFpbkcgPSBhd2FpdCBidWlsZE1haW5HKHBsdWdpbik7XHJcbiAgcGx1Z2luLmNsb3NlZEcgPSBidWlsZENsb3NlZEcocGx1Z2luKTtcclxuXHJcbiAgZm9yIChjb25zdCB7IHR5cGUgfSBvZiBwbHVnaW4uVklFV1MpXHJcbiAgICBhd2FpdCBwbHVnaW4uZ2V0QWN0aXZlVFlQRVZpZXcodHlwZSk/LmRyYXcoKTtcclxuXHJcbiAgaWYgKHBsdWdpbi5zZXR0aW5ncy5zaG93QkNzKSBhd2FpdCBkcmF3VHJhaWwocGx1Z2luKTtcclxuICBpZiAocGx1Z2luLnNldHRpbmdzLnNob3dSZWZyZXNoTm90aWNlKSBuZXcgTm90aWNlKFwiQkMgSW5kZXggcmVmcmVzaGVkXCIpO1xyXG59XHJcbiIsICJpbXBvcnQgdHlwZSB7IE11bHRpR3JhcGggfSBmcm9tIFwiZ3JhcGhvbG9neVwiO1xyXG5pbXBvcnQgeyBkZWJ1ZyB9IGZyb20gXCJsb2dsZXZlbFwiO1xyXG5pbXBvcnQgeyBub3JtYWxpemVQYXRoIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IGRyb3BXaWtpbGlua3MgfSBmcm9tIFwiLi4vVXRpbHMvT2JzaWRpYW5VdGlsc1wiO1xyXG5pbXBvcnQgdHlwZSB7IERpcmVjdGlvbnMgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG5pbXBvcnQgeyBhZGRFZGdlSWZOb3QsIGFkZE5vZGVzSWZOb3QgfSBmcm9tIFwiLi4vVXRpbHMvZ3JhcGhVdGlsc1wiO1xyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENTVlJvd3MocGx1Z2luOiBCQ1BsdWdpbikge1xyXG4gIGNvbnN0IHsgQ1NWUGF0aHMgfSA9IHBsdWdpbi5zZXR0aW5ncztcclxuICBjb25zdCBDU1ZSb3dzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9W10gPSBbXTtcclxuICBpZiAoQ1NWUGF0aHMgPT09IFwiXCIpIHJldHVybiBDU1ZSb3dzO1xyXG5cclxuICBjb25zdCBmdWxsUGF0aCA9IG5vcm1hbGl6ZVBhdGgoQ1NWUGF0aHMpO1xyXG5cclxuICBjb25zdCBjb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIucmVhZChmdWxsUGF0aCk7XHJcbiAgY29uc3QgbGluZXMgPSBjb250ZW50LnNwbGl0KFwiXFxuXCIpO1xyXG5cclxuICBjb25zdCBoZWFkZXJzID0gbGluZXNbMF0uc3BsaXQoXCIsXCIpLm1hcCgoaGVhZCkgPT4gaGVhZC50cmltKCkpO1xyXG4gIGxpbmVzLnNsaWNlKDEpLmZvckVhY2goKHJvdykgPT4ge1xyXG4gICAgY29uc3Qgcm93T2JqID0ge307XHJcbiAgICByb3dcclxuICAgICAgLnNwbGl0KFwiLFwiKVxyXG4gICAgICAubWFwKChoZWFkKSA9PiBkcm9wV2lraWxpbmtzKGhlYWQudHJpbSgpKSlcclxuICAgICAgLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICByb3dPYmpbaGVhZGVyc1tpXV0gPSBpdGVtO1xyXG4gICAgICB9KTtcclxuICAgIGRlYnVnKHsgcm93T2JqIH0pO1xyXG4gICAgQ1NWUm93cy5wdXNoKHJvd09iaik7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIENTVlJvd3M7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRDU1ZDcnVtYnMoXHJcbiAgZzogTXVsdGlHcmFwaCxcclxuICBDU1ZSb3dzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9W10sXHJcbiAgZGlyOiBEaXJlY3Rpb25zLFxyXG4gIGZpZWxkOiBzdHJpbmdcclxuKSB7XHJcbiAgQ1NWUm93cy5mb3JFYWNoKChyb3cpID0+IHtcclxuICAgIGFkZE5vZGVzSWZOb3QoZywgW3Jvdy5maWxlXSk7XHJcbiAgICBpZiAoZmllbGQgPT09IFwiXCIgfHwgIXJvd1tmaWVsZF0pIHJldHVybjtcclxuXHJcbiAgICBhZGROb2Rlc0lmTm90KGcsIFtyb3dbZmllbGRdXSk7XHJcbiAgICBhZGRFZGdlSWZOb3QoZywgcm93LmZpbGUsIHJvd1tmaWVsZF0sIHsgZGlyLCBmaWVsZCB9KTtcclxuICB9KTtcclxufVxyXG4iLCAiaW1wb3J0IHsgaW5mbyB9IGZyb20gXCJsb2dsZXZlbFwiO1xyXG5pbXBvcnQge1xyXG4gIEZyb250TWF0dGVyQ2FjaGUsXHJcbiAgcGFyc2VZYW1sLFxyXG4gIHN0cmluZ2lmeVlhbWwsXHJcbiAgVEZpbGUsXHJcbn0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7XHJcbiAgaXNJblZhdWx0LFxyXG4gIHdhaXQsXHJcbiAgd2FpdEZvclJlc29sdmVkTGlua3MsXHJcbn0gZnJvbSBcIm9ic2lkaWFuLWNvbW11bml0eS1saWIvZGlzdC91dGlsc1wiO1xyXG5pbXBvcnQgdHlwZSB7IE1ldGFlZGl0QXBpIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHsgc3BsaXRBbmRUcmltIH0gZnJvbSBcIi4vZ2VuZXJhbFV0aWxzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0U2V0dGluZ3MgPSAoKSA9PiBhcHAucGx1Z2lucy5wbHVnaW5zLmJyZWFkY3J1bWJzLnNldHRpbmdzXHJcblxyXG5leHBvcnQgY29uc3QgZ2V0Q3VyckZpbGUgPSAoKTogVEZpbGUgfCBudWxsID0+IGFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpXHJcblxyXG4vKipcclxuICogR2V0IGJhc2VuYW1lIGZyb20gYSAqKk1hcmtkb3duKiogYHBhdGhgXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gcGF0aFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGdldEJhc2VGcm9tTURQYXRoID0gKHBhdGg6IHN0cmluZykgPT4ge1xyXG4gIGNvbnN0IHNwbGl0U2xhc2ggPSBwYXRoLnNwbGl0KFwiL1wiKS5sYXN0KCk7XHJcbiAgaWYgKHNwbGl0U2xhc2guZW5kc1dpdGgoXCIubWRcIikpIHtcclxuICAgIHJldHVybiBzcGxpdFNsYXNoLnNwbGl0KFwiLm1kXCIpLnNsaWNlKDAsIC0xKS5qb2luKFwiLlwiKTtcclxuICB9IGVsc2UgcmV0dXJuIHNwbGl0U2xhc2g7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0RFZCYXNlbmFtZSA9IChmaWxlOiBURmlsZSkgPT4gZmlsZS5iYXNlbmFtZSB8fCBmaWxlLm5hbWU7XHJcbmV4cG9ydCBjb25zdCBnZXRGb2xkZXJOYW1lID0gKGZpbGU6IFRGaWxlKTogc3RyaW5nID0+XHJcbiAgLy9AdHMtaWdub3JlXHJcbiAgZmlsZT8ucGFyZW50Py5uYW1lIHx8IGZpbGUuZm9sZGVyO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VXaWtpKHN0cjogc3RyaW5nLCB3aWtpUSA9IHRydWUpIHtcclxuICBsZXQgY29weSA9IHN0ci5zbGljZSgpO1xyXG4gIGlmICh3aWtpUSkge1xyXG4gICAgY29weSA9IFwiW1tcIiArIGNvcHk7XHJcbiAgICBjb3B5ICs9IFwiXV1cIjtcclxuICB9XHJcbiAgcmV0dXJuIGNvcHk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkcm9wV2lraWxpbmtzKHN0cjogc3RyaW5nKSB7XHJcbiAgbGV0IGNvcHkgPSBzdHIuc2xpY2UoKTtcclxuICBpZiAoY29weS5zdGFydHNXaXRoKFwiW1tcIikgJiYgY29weS5lbmRzV2l0aChcIl1dXCIpKSBjb3B5ID0gY29weS5zbGljZSgyLCAtMik7XHJcbiAgcmV0dXJuIGNvcHk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBZGRzIG9yIHVwZGF0ZXMgdGhlIGdpdmVuIHlhbWwgYGtleWAgdG8gYHZhbHVlYCBpbiB0aGUgZ2l2ZW4gVEZpbGVcclxuICogQHBhcmFtICB7c3RyaW5nfSBrZXlcclxuICogQHBhcmFtICB7c3RyaW5nfSB2YWx1ZVxyXG4gKiBAcGFyYW0gIHtURmlsZX0gZmlsZVxyXG4gKiBAcGFyYW0gIHtGcm9udE1hdHRlckNhY2hlfHVuZGVmaW5lZH0gZnJvbnRtYXR0ZXJcclxuICogQHBhcmFtICB7TWV0YWVkaXRBcGl9IGFwaVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZU9yVXBkYXRlWWFtbCA9IGFzeW5jIChcclxuICBrZXk6IHN0cmluZyxcclxuICB2YWx1ZTogc3RyaW5nLFxyXG4gIGZpbGU6IFRGaWxlLFxyXG4gIGZyb250bWF0dGVyOiBGcm9udE1hdHRlckNhY2hlIHwgdW5kZWZpbmVkLFxyXG4gIGFwaTogTWV0YWVkaXRBcGlcclxuKSA9PiB7XHJcbiAgY29uc3QgdmFsdWVTdHIgPSB2YWx1ZS50b1N0cmluZygpO1xyXG5cclxuICBpZiAoIWZyb250bWF0dGVyIHx8IGZyb250bWF0dGVyW2tleV0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgaW5mbyhgQ3JlYXRpbmc6ICR7a2V5fTogJHt2YWx1ZVN0cn1gKTtcclxuICAgIGF3YWl0IGFwaS5jcmVhdGVZYW1sUHJvcGVydHkoa2V5LCBgWycke3ZhbHVlU3RyfSddYCwgZmlsZSk7XHJcbiAgfSBlbHNlIGlmIChbLi4uW2Zyb250bWF0dGVyW2tleV1dXS5mbGF0KDMpLnNvbWUoKHZhbCkgPT4gdmFsID09IHZhbHVlU3RyKSkge1xyXG4gICAgaW5mbyhcIkFscmVhZHkgRXhpc3RzIVwiKTtcclxuICAgIHJldHVybjtcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc3Qgb2xkVmFsdWVGbGF0OiBzdHJpbmdbXSA9IFsuLi5bZnJvbnRtYXR0ZXJba2V5XV1dLmZsYXQoNCk7XHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9IFsuLi5vbGRWYWx1ZUZsYXQsIGAnJHt2YWx1ZVN0cn0nYF07XHJcbiAgICBpbmZvKGBVcGRhdGluZzogJHtrZXl9OiAke25ld1ZhbHVlfWApO1xyXG4gICAgYXdhaXQgYXBpLnVwZGF0ZShrZXksIGBbJHtuZXdWYWx1ZS5qb2luKFwiLCBcIil9XWAsIGZpbGUpO1xyXG4gIH1cclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjaGFuZ2VZYW1sKHlhbWw6IHN0cmluZywga2V5OiBzdHJpbmcsIG5ld1ZhbDogc3RyaW5nKTogc3RyaW5nIHtcclxuICBpZiAoeWFtbCA9PT0gXCJcIikge1xyXG4gICAgcmV0dXJuIGAke2tleX06IFsnJHtuZXdWYWx9J11gO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zdCBwYXJzZWQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSBwYXJzZVlhbWwoeWFtbCk7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHBhcnNlZFtrZXldO1xyXG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcGFyc2VkW2tleV0gPSBuZXdWYWw7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZSAhPT0gbmV3VmFsKSB7XHJcbiAgICAgIHBhcnNlZFtrZXldID0gW3ZhbHVlLCBuZXdWYWxdO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdHlwZW9mIHZhbHVlPy5bMF0gPT09IFwic3RyaW5nXCIgJiZcclxuICAgICAgdmFsdWUuaW5jbHVkZXMgJiZcclxuICAgICAgIXZhbHVlLmluY2x1ZGVzKG5ld1ZhbClcclxuICAgICkge1xyXG4gICAgICBwYXJzZWRba2V5XSA9IFsuLi52YWx1ZSwgbmV3VmFsXTtcclxuICAgIH1cclxuICAgIC8vIGVsc2UgaWYgKG90aGVyIHR5cGVzIG9mIHZhbHVlcy4uLilcclxuICAgIHJldHVybiBzdHJpbmdpZnlZYW1sKHBhcnNlZCk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRBdFlhbWwoY29udGVudDogc3RyaW5nKTogW3N0cmluZywgc3RyaW5nXSB7XHJcbiAgaWYgKCFjb250ZW50LnN0YXJ0c1dpdGgoXCItLS1cXG5cIikpIHJldHVybiBbXCJcIiwgY29udGVudF07XHJcbiAgZWxzZSB7XHJcbiAgICBjb25zdCBzcGxpdHMgPSBjb250ZW50LnNwbGl0KFwiLS0tXCIpO1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgc3BsaXRzLnNsaWNlKDAsIDIpLmpvaW4oXCItLS1cIikgKyBcIi0tLVwiLFxyXG4gICAgICBzcGxpdHMuc2xpY2UoMikuam9pbihcIi0tLVwiKSxcclxuICAgIF07XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZHJvcEhhc2ggPSAodGFnOiBzdHJpbmcpID0+XHJcbiAgdGFnLnN0YXJ0c1dpdGgoXCIjXCIpID8gdGFnLnNsaWNlKDEpIDogdGFnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGFkZEhhc2ggPSAodGFnOiBzdHJpbmcpID0+ICh0YWcuc3RhcnRzV2l0aChcIiNcIikgPyB0YWcgOiBgIyR7dGFnfWApO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEFsdChub2RlOiBzdHJpbmcsIHBsdWdpbjogQkNQbHVnaW4pOiBzdHJpbmcgfCBudWxsIHtcclxuICBjb25zdCB7IGFsdExpbmtGaWVsZHMsIHNob3dBbGxBbGlhc2VzIH0gPSBwbHVnaW4uc2V0dGluZ3M7XHJcbiAgaWYgKGFsdExpbmtGaWVsZHMubGVuZ3RoKSB7XHJcbiAgICBjb25zdCBmaWxlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Rmlyc3RMaW5rcGF0aERlc3Qobm9kZSwgXCJcIik7XHJcbiAgICBpZiAoZmlsZSkge1xyXG4gICAgICBjb25zdCBtZXRhZGF0YSA9IGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKTtcclxuICAgICAgZm9yIChjb25zdCBhbHRGaWVsZCBvZiBhbHRMaW5rRmllbGRzKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBtZXRhZGF0YT8uZnJvbnRtYXR0ZXI/LlthbHRGaWVsZF07XHJcblxyXG4gICAgICAgIGNvbnN0IGFycjogc3RyaW5nW10gPVxyXG4gICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gc3BsaXRBbmRUcmltKHZhbHVlKSA6IHZhbHVlO1xyXG4gICAgICAgIGlmICh2YWx1ZSkgcmV0dXJuIHNob3dBbGxBbGlhc2VzID8gYXJyLmpvaW4oXCIsIFwiKSA6IGFyclswXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0gZWxzZSByZXR1cm4gbnVsbDtcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JDYWNoZShwbHVnaW46IEJDUGx1Z2luKSB7XHJcbiAgaWYgKGFwcC5wbHVnaW5zLmVuYWJsZWRQbHVnaW5zLmhhcyhcImRhdGF2aWV3XCIpKSB7XHJcbiAgICBsZXQgYmFzZW5hbWU6IHN0cmluZztcclxuICAgIHdoaWxlICghYmFzZW5hbWUgfHwgIWFwcC5wbHVnaW5zLnBsdWdpbnMuZGF0YXZpZXcuYXBpLnBhZ2UoYmFzZW5hbWUpKSB7XHJcbiAgICAgIGF3YWl0IHdhaXQoMTAwKTtcclxuICAgICAgYmFzZW5hbWUgPSBnZXRDdXJyRmlsZSgpPy5iYXNlbmFtZTtcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgYXdhaXQgd2FpdEZvclJlc29sdmVkTGlua3MoYXBwKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBsaW5rQ2xhc3MgPSAodG86IHN0cmluZywgcmVhbFEgPSB0cnVlKSA9PlxyXG4gIGBpbnRlcm5hbC1saW5rIEJDLUxpbmsgJHtpc0luVmF1bHQodG8pID8gXCJcIiA6IFwiaXMtdW5yZXNvbHZlZFwifSAke3JlYWxRID8gXCJcIiA6IFwiQkMtSW1wbGllZFwiXHJcbiAgfWA7XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0RFZBcGkgPSAocGx1Z2luOiBCQ1BsdWdpbikgPT5cclxuICBhcHAucGx1Z2lucy5wbHVnaW5zLmRhdGF2aWV3Py5hcGk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNJbnNpZGVZYW1sKCk6IGJvb2xlYW4gfCBudWxsIHtcclxuICBjb25zdCB7IHdvcmtzcGFjZSwgbWV0YWRhdGFDYWNoZSB9ID0gYXBwO1xyXG4gIGNvbnN0IHsgYWN0aXZlTGVhZiB9ID0gd29ya3NwYWNlO1xyXG4gIGNvbnN0IHtcclxuICAgIHN0YXRlOiB7IG1vZGUgfSxcclxuICB9ID0gYWN0aXZlTGVhZi5nZXRWaWV3U3RhdGUoKTtcclxuXHJcbiAgaWYgKG1vZGUgIT09IFwic291cmNlXCIpIHJldHVybiBudWxsO1xyXG5cclxuICBjb25zdCB7IGVkaXRvciB9ID0gYWN0aXZlTGVhZi52aWV3O1xyXG5cclxuICBjb25zdCBmaWxlID0gZ2V0Q3VyckZpbGUoKTtcclxuICBpZiAoIWZpbGUpIHJldHVybiBudWxsO1xyXG5cclxuICBjb25zdCB7IGZyb250bWF0dGVyIH0gPSBtZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKTtcclxuICBpZiAoIWZyb250bWF0dGVyKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gZnJvbnRtYXR0ZXIucG9zaXRpb247XHJcbiAgY29uc3QgY3Vyck9mZiA9IGVkaXRvci5wb3NUb09mZnNldChlZGl0b3IuZ2V0Q3Vyc29yKCkpO1xyXG4gIGlmIChjdXJyT2ZmID49IHN0YXJ0Lm9mZnNldCAmJiBjdXJyT2ZmIDw9IGVuZC5vZmZzZXQpIHJldHVybiB0cnVlO1xyXG4gIGVsc2UgcmV0dXJuIGZhbHNlO1xyXG59XHJcbiIsICJpbXBvcnQgeyB3YXJuIH0gZnJvbSBcImxvZ2xldmVsXCI7XHJcbmltcG9ydCB7IGRyb3BIZWFkZXJPckFsaWFzLCByZWdORmxhZ3MsIHNwbGl0TGlua3NSZWdleCB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHR5cGUgeyBCQ1NldHRpbmdzIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzdW0oYXJyOiBudW1iZXJbXSk6IG51bWJlciB7XHJcbiAgcmV0dXJuIGFyci5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGlzZShhcnI6IG51bWJlcltdKTogbnVtYmVyW10ge1xyXG4gIGNvbnN0IG1heCA9IE1hdGgubWF4KC4uLmFycik7XHJcbiAgcmV0dXJuIGFyci5tYXAoKGl0ZW0pID0+IGl0ZW0gLyBtYXgpO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgaXNTdWJzZXQgPSA8VD4oYXJyMTogVFtdLCBhcnIyOiBUW10pOiBib29sZWFuID0+XHJcbiAgYXJyMS5ldmVyeSgodmFsdWUpID0+IGFycjIuaW5jbHVkZXModmFsdWUpKTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzcGxpdEFuZERyb3Aoc3RyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcbiAgcmV0dXJuIChcclxuICAgIHN0clxyXG4gICAgICA/Lm1hdGNoKHNwbGl0TGlua3NSZWdleClcclxuICAgICAgPy5tYXAoKGxpbmspID0+IGxpbmsubWF0Y2goZHJvcEhlYWRlck9yQWxpYXMpPy5bMV0pID8/IFtdXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGRyb3BQYXRoID0gKHBhdGg6IHN0cmluZykgPT4gcGF0aC5yZXBsYWNlKC9eLipcXC8vLCBcIlwiKTtcclxuZXhwb3J0IGNvbnN0IGRyb3BEZW5kcm9uID0gKHBhdGg6IHN0cmluZywgc2V0dGluZ3M6IEJDU2V0dGluZ3MpID0+XHJcbiAgc2V0dGluZ3MudHJpbURlbmRyb25Ob3Rlc1xyXG4gICAgPyBwYXRoLnNwbGl0KHNldHRpbmdzLmRlbmRyb25Ob3RlRGVsaW1pdGVyKS5sYXN0KClcclxuICAgIDogcGF0aDtcclxuXHJcbmV4cG9ydCBjb25zdCBkcm9wUGF0aE5EZW5kcm9uID0gKHBhdGg6IHN0cmluZywgc2V0dGluZ3M6IEJDU2V0dGluZ3MpID0+XHJcbiAgZHJvcERlbmRyb24oZHJvcFBhdGgocGF0aCksIHNldHRpbmdzKTtcclxuXHJcbmV4cG9ydCBjb25zdCBkcm9wRm9sZGVyID0gKHBhdGg6IHN0cmluZykgPT5cclxuICBwYXRoLnNwbGl0KFwiL1wiKS5sYXN0KCkuc3BsaXQoXCIuXCIpLnNsaWNlKDAsIC0xKS5qb2luKFwiLlwiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBzcGxpdEFuZFRyaW0gPSAoZmllbGRzOiBzdHJpbmcpOiBzdHJpbmdbXSA9PiB7XHJcbiAgaWYgKCFmaWVsZHMgfHwgZmllbGRzID09PSBcIlwiKSByZXR1cm4gW107XHJcbiAgZWxzZSByZXR1cm4gZmllbGRzLnNwbGl0KFwiLFwiKS5tYXAoKHN0cikgPT4gc3RyLnRyaW0oKSk7XHJcbn07XHJcblxyXG4vKipcclxuICogUGFkIGFuIGFycmF5IHdpdGggYSBmaWxsZXIgdmFsdWUgdG8gYSBzcGVjaWZpZWQgbGVuZ3RoLlxyXG4gKiBAcGFyYW0ge1RbXX0gYXJyIC0gVGhlIGFycmF5IHRvIHBhZC5cclxuICogQHBhcmFtIHtudW1iZXJ9IGZpbmFsTGVuZ3RoIC0gVGhlIGZpbmFsIGxlbmd0aCBvZiB0aGUgYXJyYXlcclxuICogQHBhcmFtIHtzdHJpbmd9IFtmaWxsZXI9XCJcIl0gLSBUaGUgZmlsbGVyIHRvIHVzZSBpZiB0aGUgYXJyYXkgaXMgdG9vIHNob3J0LlxyXG4gKiBAcmV0dXJucyB7KFQgfCBzdHJpbmcpW119IFRoZSBhcnJheSB3aXRoIHRoZSBuZXcgdmFsdWVzLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHBhZEFycmF5PFQ+KFxyXG4gIGFycjogVFtdLFxyXG4gIGZpbmFsTGVuZ3RoOiBudW1iZXIsXHJcbiAgZmlsbGVyOiBzdHJpbmcgPSBcIlwiXHJcbik6IChUIHwgc3RyaW5nKVtdIHtcclxuICBjb25zdCBjb3B5OiAoVCB8IHN0cmluZylbXSA9IFsuLi5hcnJdO1xyXG4gIGNvbnN0IGN1cnJMZW5ndGggPSBjb3B5Lmxlbmd0aDtcclxuICBpZiAoY3Vyckxlbmd0aCA+IGZpbmFsTGVuZ3RoKVxyXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ3VycmVudCBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIGZpbmFsIGxlbmd0aFwiKTtcclxuICBlbHNlIGlmIChjdXJyTGVuZ3RoID09PSBmaW5hbExlbmd0aCkgcmV0dXJuIGNvcHk7XHJcbiAgZWxzZSB7XHJcbiAgICBmb3IgKGxldCBpID0gY3Vyckxlbmd0aDsgaSA8IGZpbmFsTGVuZ3RoOyBpKyspIGNvcHkucHVzaChmaWxsZXIpO1xyXG4gICAgcmV0dXJuIGNvcHk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogdHJhbnNwb3NlKEEpIHJldHVybnMgdGhlIHRyYW5zcG9zZSBvZiBBLlxyXG4gKiBAcGFyYW0ge1RbXVtdfSBBIC0gVGhlIG1hdHJpeCB0byB0cmFuc3Bvc2UuXHJcbiAqIEByZXR1cm5zIHtUW11bXX0gQSAyRCBhcnJheSBvZiB0aGUgdHJhbnNwb3NlZCBtYXRyaXguXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNwb3NlPFQ+KEE6IFRbXVtdKTogVFtdW10ge1xyXG4gIGNvbnN0IGNvbHMgPSBBWzBdLmxlbmd0aDtcclxuICBjb25zdCBBVDogVFtdW10gPSBbXTtcclxuXHJcbiAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2xzOyBqKyspIEFULnB1c2goQS5tYXAoKHJvdykgPT4gcm93W2pdKSk7XHJcblxyXG4gIHJldHVybiBBVDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdpdmVuIGFuIGFycmF5IG9mIHN0cmluZ3MsIHJldHVybiBhbiBhcnJheSBvZiBvYmplY3RzIHRoYXQgcmVwcmVzZW50IHRoZSBydW5zIG9mIGNvbnNlY3V0aXZlIHN0cmluZ3NcclxuICogaW4gdGhlIGFycmF5LlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gYXJyXHJcbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XHJcbiAqXHJcbiAqICAgYHZhbHVlYDogdGhlIHZhbHVlIG9mIHRoZSBydW5cclxuICpcclxuICogICBgZmlyc3RgOiB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIHJ1blxyXG4gKlxyXG4gKiAgIGBsYXN0YDogdGhlIGluZGV4IG9mIHRoZSBsYXN0IGVsZW1lbnQgaW4gdGhlIHJ1blxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJ1bnMoXHJcbiAgYXJyOiBzdHJpbmdbXVxyXG4pOiB7IHZhbHVlOiBzdHJpbmc7IGZpcnN0OiBudW1iZXI7IGxhc3Q6IG51bWJlciB9W10ge1xyXG4gIGNvbnN0IHJ1bnM6IHsgdmFsdWU6IHN0cmluZzsgZmlyc3Q6IG51bWJlcjsgbGFzdDogbnVtYmVyIH1bXSA9IFtdO1xyXG4gIGxldCBpID0gMDtcclxuICB3aGlsZSAoaSA8IGFyci5sZW5ndGgpIHtcclxuICAgIGNvbnN0IGN1cnJWYWx1ZSA9IGFycltpXTtcclxuICAgIHJ1bnMucHVzaCh7IHZhbHVlOiBjdXJyVmFsdWUsIGZpcnN0OiBpLCBsYXN0OiB1bmRlZmluZWQgfSk7XHJcbiAgICB3aGlsZSAoY3VyclZhbHVlID09PSBhcnJbaV0pIHtcclxuICAgICAgaSsrO1xyXG4gICAgfVxyXG4gICAgcnVucy5sYXN0KCkubGFzdCA9IGkgLSAxO1xyXG4gIH1cclxuICByZXR1cm4gcnVucztcclxufVxyXG5cclxuLy8gU09VUkNFIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzk5NjA5MDgvcGVybXV0YXRpb25zLWluLWphdmFzY3JpcHRcclxuLyoqXHJcbiAqIEdpdmVuIGEgcGVybXV0YXRpb24sIHJldHVybiBhbGwgcG9zc2libGUgcGVybXV0YXRpb25zIG9mIHRoYXQgcGVybXV0YXRpb24uXHJcbiAqIEBwYXJhbSBwZXJtdXRhdGlvbiAtIHRoZSBhcnJheSB0byBiZSBwZXJtdXRlZFxyXG4gKiBAcmV0dXJucyBgWyBbIDEsIDIsIDMgXSwgWyAxLCAzLCAyIF0sIFsgMiwgMSwgMyBdLCBbIDIsIDMsIDEgXSwgWyAzLCAxLCAyIF0sIFsgMywgMiwgMSBdIF1gXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcGVybXV0ZShwZXJtdXRhdGlvbjogYW55W10pOiBhbnlbXVtdIHtcclxuICBjb25zdCBsZW5ndGggPSBwZXJtdXRhdGlvbi5sZW5ndGgsXHJcbiAgICByZXN1bHQgPSBbcGVybXV0YXRpb24uc2xpY2UoKV0sXHJcbiAgICBjID0gbmV3IEFycmF5KGxlbmd0aCkuZmlsbCgwKTtcclxuXHJcbiAgbGV0IGkgPSAxLFxyXG4gICAgazogbnVtYmVyLFxyXG4gICAgcDogbnVtYmVyO1xyXG5cclxuICB3aGlsZSAoaSA8IGxlbmd0aCkge1xyXG4gICAgaWYgKGNbaV0gPCBpKSB7XHJcbiAgICAgIGsgPSBpICUgMiAmJiBjW2ldO1xyXG4gICAgICBwID0gcGVybXV0YXRpb25baV07XHJcbiAgICAgIHBlcm11dGF0aW9uW2ldID0gcGVybXV0YXRpb25ba107XHJcbiAgICAgIHBlcm11dGF0aW9uW2tdID0gcDtcclxuICAgICAgKytjW2ldO1xyXG4gICAgICBpID0gMTtcclxuICAgICAgcmVzdWx0LnB1c2gocGVybXV0YXRpb24uc2xpY2UoKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjW2ldID0gMDtcclxuICAgICAgKytpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgcmFuZ2UgPSAobjogbnVtYmVyKSA9PiBbLi4uQXJyYXkobikua2V5cygpXTtcclxuXHJcbi8qKlxyXG4gKiBcIkdpdmVuIHR3byBhcnJheXMsIHJldHVybiB0aGUgZWxlbWVudHMgaW4gdGhlIGZpcnN0IGFycmF5IHRoYXQgYXJlIG5vdCBpbiB0aGUgc2Vjb25kIGFycmF5LlwiXHJcbiAqIEBwYXJhbSB7VFtdfSBBIC0gdGhlIGFycmF5IG9mIGl0ZW1zIHRvIGJlIGZpbHRlcmVkXHJcbiAqIEBwYXJhbSB7VFtdfSBCIC0gdGhlIGFycmF5IG9mIGl0ZW1zIHRoYXQgYXJlIG5vdCBpbiBBXHJcbiAqIEByZXR1cm5zIHtUW119IE5vbmVcclxuICovXHJcbmV4cG9ydCBjb25zdCBjb21wbGVtZW50ID0gPFQ+KEE6IFRbXSwgQjogVFtdKSA9PlxyXG4gIEEuZmlsdGVyKChhKSA9PiAhQi5pbmNsdWRlcyhhKSk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc3dhcEl0ZW1zPFQ+KGk6IG51bWJlciwgajogbnVtYmVyLCBhcnI6IFRbXSkge1xyXG4gIGNvbnN0IG1heCA9IGFyci5sZW5ndGggLSAxO1xyXG4gIGlmIChpIDwgMCB8fCBpID4gbWF4IHx8IGogPCAwIHx8IGogPiBtYXgpIHJldHVybiBhcnI7XHJcbiAgY29uc3QgdG1wID0gYXJyW2ldO1xyXG4gIGFycltpXSA9IGFycltqXTtcclxuICBhcnJbal0gPSB0bXA7XHJcbiAgcmV0dXJuIGFycjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlbW92ZSBkdXBsaWNhdGVzIGZyb20gYW4gYXJyYXkuXHJcbiAqIEBwYXJhbSB7VFtdfSBhcnIgLSBUaGUgYXJyYXkgdG8gYmUgZmlsdGVyZWQuXHJcbiAqIEByZXR1cm5zIHtUW119IFRoZSBhcnJheSB3aXRoIGR1cGxpY2F0ZXMgcmVtb3ZlZC5cclxuICovXHJcbmV4cG9ydCBjb25zdCByZW1vdmVEdXBsaWNhdGVzID0gPFQ+KGFycjogVFtdKSA9PiBbLi4ubmV3IFNldChhcnIpXTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzdHJUb1JlZ2V4KGlucHV0OiBzdHJpbmcpIHtcclxuICBjb25zdCBtYXRjaCA9IGlucHV0Lm1hdGNoKHJlZ05GbGFncyk7XHJcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIG51bGw7XHJcbiAgY29uc3QgWywgaW5uZXJSZWdleCwgZmxhZ3NdID0gbWF0Y2g7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChpbm5lclJlZ2V4LCBmbGFncyk7XHJcbiAgICByZXR1cm4gcmVnZXg7XHJcbiAgfSBjYXRjaCAoZSkge1xyXG4gICAgd2FybihlKTtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG5cclxuLy8gU291cmNlOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNTYxNDkzL2lzLXRoZXJlLWEtcmVnZXhwLWVzY2FwZS1mdW5jdGlvbi1pbi1qYXZhc2NyaXB0XHJcbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVSZWdleChzdHJpbmcpIHtcclxuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1stXFwvXFxcXF4kKis/LigpfFtcXF17fV0vZywgXCJcXFxcJCZcIik7XHJcbn1cclxuIiwgImltcG9ydCBHcmFwaCwgeyBNdWx0aUdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHsgZGZzRnJvbU5vZGUgfSBmcm9tIFwiZ3JhcGhvbG9neS10cmF2ZXJzYWxcIjtcclxuaW1wb3J0IHR5cGUgeyBBdHRyaWJ1dGVzIH0gZnJvbSBcImdyYXBob2xvZ3ktdHlwZXNcIjtcclxuaW1wb3J0IHsgaW5mbyB9IGZyb20gXCJsb2dsZXZlbFwiO1xyXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vLi4vbWFpblwiO1xyXG5pbXBvcnQge1xyXG4gIEJDX0lfUkVGTEVYSVZFLFxyXG4gIEJDX09SREVSLFxyXG4gIGJsYW5rUmVhbE5JbXBsaWVkLFxyXG4gIERJUkVDVElPTlMsXHJcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgdHlwZSB7XHJcbiAgQkNTZXR0aW5ncyxcclxuICBEaXJlY3Rpb25zLFxyXG4gIGR2RnJvbnRtYXR0ZXJDYWNoZSxcclxuICBFZGdlQXR0cixcclxuICBOb2RlUGF0aCxcclxuICBSZWFsTkltcGxpZWQsXHJcbiAgVXNlckhpZXIsXHJcbn0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHsgZ2V0RmllbGRJbmZvLCBnZXRPcHBEaXIsIGdldE9wcEZpZWxkcyB9IGZyb20gXCIuL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXRCYXNlRnJvbU1EUGF0aCB9IGZyb20gXCIuL09ic2lkaWFuVXRpbHNcIjtcclxuXHJcbi8vIFRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIHJlYWwgJiBpbXBsaWVkIGdyYXBocyBmb3IgYSBnaXZlbiByZWxhdGlvbiwgYW5kIHJldHVybnMgYSBuZXcgZ3JhcGhzIHdpdGggYm90aC5cclxuLy8gSXQgbWFrZXMgaW1wbGllZCByZWxhdGlvbnMgcmVhbFxyXG4vLyBUT0RPIHVzZSByZWZsZXhpdmVDbG9zdXJlIGluc3RlYWRcclxuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlSW1wbGllZExpbmtzKFxyXG4gIHJlYWw6IE11bHRpR3JhcGgsXHJcbiAgaW1wbGllZDogTXVsdGlHcmFwaFxyXG4pOiBNdWx0aUdyYXBoIHtcclxuICBjb25zdCBjbG9zZWRHID0gcmVhbC5jb3B5KCk7XHJcbiAgaW1wbGllZC5mb3JFYWNoRWRnZSgoa2V5LCBhLCBzLCB0KSA9PiB7XHJcbiAgICBjbG9zZWRHLm1lcmdlRWRnZSh0LCBzLCBhKTtcclxuICB9KTtcclxuICByZXR1cm4gY2xvc2VkRztcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVW5saW5rZWROb2RlcyhnOiBNdWx0aUdyYXBoKSB7XHJcbiAgY29uc3QgY29weSA9IGcuY29weSgpO1xyXG4gIGNvcHkuZm9yRWFjaE5vZGUoKG5vZGUpID0+IHtcclxuICAgIGlmICghY29weS5kZWdyZWUobm9kZSkpIGNvcHkuZHJvcE5vZGUobm9kZSk7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGNvcHk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gYSBzdWJncmFwaCBvZiBhbGwgbm9kZXMgJiBlZGdlcyB3aXRoIGBkaXJzLmluY2x1ZGVzKGEuZGlyKWBcclxuICpcclxuICogRmlsdGVyIHRoZSBnaXZlbiBncmFwaCB0byBvbmx5IGluY2x1ZGUgZWRnZXMgaW4gdGhlIGdpdmVuIGRpcmVjdGlvbnMuXHJcbiAqIEBwYXJhbSAge011bHRpR3JhcGh9IGdcclxuICogQHBhcmFtICB7RGlyZWN0aW9uc30gZGlyXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3ViSW5EaXJzKGc6IE11bHRpR3JhcGgsIC4uLmRpcnM6IERpcmVjdGlvbnNbXSkge1xyXG4gIGNvbnN0IHN1YiA9IG5ldyBNdWx0aUdyYXBoKCk7XHJcbiAgZz8uZm9yRWFjaEVkZ2UoKGssIGEsIHMsIHQpID0+IHtcclxuICAgIGlmIChkaXJzLmluY2x1ZGVzKGEuZGlyKSkge1xyXG4gICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgYWRkTm9kZXNJZk5vdChzdWIsIFtzLCB0XSwgeyBvcmRlcjogYS5vcmRlciB9KTtcclxuICAgICAgc3ViLmFkZEVkZ2UocywgdCwgYSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHN1YjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiBhIHN1YmdyYXBoIG9mIGFsbCBub2RlcyAmIGVkZ2VzIHdpdGggYGZpZWxkcy5pbmNsdWRlcyhhLmZpZWxkKWAuXHJcbiAqXHJcbiAqIEZpbHRlciB0aGUgZ2l2ZW4gZ3JhcGggdG8gb25seSBpbmNsdWRlIGVkZ2VzIHdpdGggdGhlIGdpdmVuIGZpZWxkcy5cclxuICogQHBhcmFtICB7TXVsdGlHcmFwaH0gZ1xyXG4gKiBAcGFyYW0gIHtzdHJpbmdbXX0gZmllbGRzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3ViRm9yRmllbGRzKGc6IE11bHRpR3JhcGgsIGZpZWxkczogc3RyaW5nW10pIHtcclxuICBjb25zdCBzdWIgPSBuZXcgTXVsdGlHcmFwaCgpO1xyXG4gIGcuZm9yRWFjaEVkZ2UoKGssIGEsIHMsIHQpID0+IHtcclxuICAgIGlmIChmaWVsZHMuaW5jbHVkZXMoYS5maWVsZCkpIHtcclxuICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgIGFkZE5vZGVzSWZOb3Qoc3ViLCBbcywgdF0sIHsgb3JkZXI6IGEub3JkZXIgfSk7XHJcbiAgICAgIHN1Yi5hZGRFZGdlKHMsIHQsIGEpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBzdWI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGb3IgZXZlcnkgZWRnZSBpbiBgZ2AsIGFkZCB0aGUgcmV2ZXJzZSBvZiB0aGUgZWRnZSB0byBhIGNvcHkgb2YgYGdgLlxyXG4gKlxyXG4gKiBJdCBhbHNvIHNldHMgdGhlIGF0dHJzIG9mIHRoZSByZXZlcnNlIGVkZ2VzIHRvIGBvcHBEaXJgIGFuZCBgb3BwRmllbGRzWzBdYFxyXG4gKiBAcGFyYW0gIHtNdWx0aUdyYXBofSBnXHJcbiAqIEBwYXJhbSAge1VzZXJIaWVyW119IHVzZXJIaWVyc1xyXG4gKiBAcGFyYW0gIHtib29sZWFufSBjbG9zZUFzT3Bwb3NpdGVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWZsZXhpdmVDbG9zdXJlKFxyXG4gIGc6IE11bHRpR3JhcGgsXHJcbiAgdXNlckhpZXJzOiBVc2VySGllcltdXHJcbik6IE11bHRpR3JhcGgge1xyXG4gIGNvbnN0IGNvcHkgPSBnLmNvcHkoKTtcclxuICBjb3B5LmZvckVhY2hFZGdlKChrLCBhLCBzLCB0KSA9PiB7XHJcbiAgICBjb25zdCB7IGRpciwgZmllbGQgfSA9IGE7XHJcbiAgICBpZiAoZmllbGQgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgY29uc3Qgb3BwRGlyID0gZ2V0T3BwRGlyKGRpcik7XHJcbiAgICBjb25zdCBvcHBGaWVsZCA9XHJcbiAgICAgIGRpciA9PT0gXCJzYW1lXCIgPyBmaWVsZCA6IGdldE9wcEZpZWxkcyh1c2VySGllcnMsIGZpZWxkLCBkaXIpWzBdO1xyXG5cclxuICAgIGFkZE5vZGVzSWZOb3QoY29weSwgW3MsIHRdLCB7IG9yZGVyOiA5OTk5IH0pO1xyXG4gICAgYWRkRWRnZUlmTm90KGNvcHksIHQsIHMsIHtcclxuICAgICAgZGlyOiBvcHBEaXIsXHJcbiAgICAgIGZpZWxkOiBvcHBGaWVsZCxcclxuICAgICAgaW1wbGllZDogQkNfSV9SRUZMRVhJVkUsXHJcbiAgICB9KTtcclxuICB9KTtcclxuICByZXR1cm4gY29weTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZE5vZGVzSWZOb3QoXHJcbiAgZzogTXVsdGlHcmFwaCxcclxuICBub2Rlczogc3RyaW5nW10sXHJcbiAgYXR0ciA9IHsgb3JkZXI6IDk5OTkgfVxyXG4pIHtcclxuICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcclxuICAgIGcudXBkYXRlTm9kZShub2RlLCAoZXhzdGFudEF0dHJzOiBBdHRyaWJ1dGVzKSA9PiB7XHJcbiAgICAgIGNvbnN0IGV4dGFudE9yZGVyOiBudW1iZXIgfCB1bmRlZmluZWQgPSBleHN0YW50QXR0cnMub3JkZXI7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uZXhzdGFudEF0dHJzLFxyXG4gICAgICAgIG9yZGVyOiBleHRhbnRPcmRlciAmJiBleHRhbnRPcmRlciA8IDk5OTkgPyBleHRhbnRPcmRlciA6IGF0dHIub3JkZXIsXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRFZGdlSWZOb3QoXHJcbiAgZzogTXVsdGlHcmFwaCxcclxuICBzb3VyY2U6IHN0cmluZyxcclxuICB0YXJnZXQ6IHN0cmluZyxcclxuICBhdHRyPzogQXR0cmlidXRlc1xyXG4pIHtcclxuICBpZiAoIWcuaGFzRWRnZShzb3VyY2UsIHRhcmdldCkpIGcuYWRkRWRnZShzb3VyY2UsIHRhcmdldCwgYXR0cik7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTaW5rcyA9IChnOiBNdWx0aUdyYXBoKSA9PlxyXG4gIGcuZmlsdGVyTm9kZXMoKG5vZGUpID0+IGcuaGFzTm9kZShub2RlKSAmJiAhZy5vdXREZWdyZWUobm9kZSkpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFNvdXJjZXMgPSAoZzogTXVsdGlHcmFwaCkgPT5cclxuICBnLmZpbHRlck5vZGVzKChub2RlKSA9PiBnLmhhc05vZGUobm9kZSkgJiYgIWcuaW5EZWdyZWUobm9kZSkpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldE91dE5laWdoYm91cnMgPSAoZzogTXVsdGlHcmFwaCwgbm9kZTogc3RyaW5nKSA9PlxyXG4gIGcuaGFzTm9kZShub2RlKSA/IGcub3V0TmVpZ2hib3JzKG5vZGUpIDogW107XHJcbmV4cG9ydCBjb25zdCBnZXRJbk5laWdoYm91cnMgPSAoZzogTXVsdGlHcmFwaCwgbm9kZTogc3RyaW5nKSA9PlxyXG4gIGcuaGFzTm9kZShub2RlKSA/IGcuaW5OZWlnaGJvcnMobm9kZSkgOiBbXTtcclxuXHJcbi8qKlxyXG4gKiBGaW5kcyBhbGwgcGF0aHMgZnJvbSBhIHN0YXJ0aW5nIG5vZGUgdG8gYWxsIG90aGVyIHNpbmtzIGluIGEgZ3JhcGguXHJcbiAqXHJcbiAqXHJcbiAqIEBwYXJhbSB7TXVsdGlHcmFwaH0gZyAtIFRoZSBncmFwaCB0byBzZWFyY2hcclxuICogQHBhcmFtIHtzdHJpbmd9IHN0YXJ0IC0gVGhlIHN0YXJ0aW5nIG5vZGVcclxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgYXJyYXlzLiBFYWNoIGFycmF5IGlzIGEgcGF0aC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBkZnNBbGxQYXRocyhnOiBNdWx0aUdyYXBoLCBzdGFydDogc3RyaW5nKTogc3RyaW5nW11bXSB7XHJcbiAgY29uc3QgcXVldWU6IE5vZGVQYXRoW10gPSBbeyBub2RlOiBzdGFydCwgcGF0aDogW10gfV07XHJcbiAgY29uc3QgdmlzaXRlZDogeyBbbm90ZTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcclxuICBjb25zdCBhbGxQYXRoczogc3RyaW5nW11bXSA9IFtdO1xyXG5cclxuICBsZXQgaSA9IDA7XHJcbiAgd2hpbGUgKHF1ZXVlLmxlbmd0aCA+IDAgJiYgaSA8IDEwMDApIHtcclxuICAgIGkrKztcclxuICAgIGNvbnN0IHsgbm9kZSwgcGF0aCB9ID0gcXVldWUuc2hpZnQoKTtcclxuXHJcbiAgICBjb25zdCBleHRQYXRoID0gW25vZGUsIC4uLnBhdGhdO1xyXG4gICAgY29uc3Qgc3VjY3NOb3RWaXNpdGVkID0gZy5oYXNOb2RlKG5vZGUpXHJcbiAgICAgID8gZy5maWx0ZXJPdXROZWlnaGJvcnMoXHJcbiAgICAgICAgbm9kZSxcclxuICAgICAgICAoc3VjYykgPT4gIXZpc2l0ZWRbc3VjY10gfHwgdmlzaXRlZFtzdWNjXSA8IDVcclxuICAgICAgKVxyXG4gICAgICA6IFtdO1xyXG4gICAgY29uc3QgbmV3SXRlbXMgPSBzdWNjc05vdFZpc2l0ZWQubWFwKChzdWNjKSA9PiB7XHJcbiAgICAgIHZpc2l0ZWRbc3VjY10gPSB2aXNpdGVkW3N1Y2NdID8gdmlzaXRlZFtzdWNjXSArIDEgOiAxO1xyXG4gICAgICByZXR1cm4geyBub2RlOiBzdWNjLCBwYXRoOiBleHRQYXRoIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICBxdWV1ZS51bnNoaWZ0KC4uLm5ld0l0ZW1zKTtcclxuXHJcbiAgICBpZiAoIWcuaGFzTm9kZShub2RlKSB8fCAhZy5vdXREZWdyZWUobm9kZSkpIGFsbFBhdGhzLnB1c2goZXh0UGF0aCk7XHJcbiAgfVxyXG4gIHJldHVybiBhbGxQYXRocztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGJmc0FsbFBhdGhzKGc6IE11bHRpR3JhcGgsIHN0YXJ0OiBzdHJpbmcpOiBzdHJpbmdbXVtdIHtcclxuICBjb25zdCBwYXRoc0Fycjogc3RyaW5nW11bXSA9IFtdO1xyXG4gIGNvbnN0IHF1ZXVlOiBOb2RlUGF0aFtdID0gW3sgbm9kZTogc3RhcnQsIHBhdGg6IFtdIH1dO1xyXG5cclxuICBsZXQgaSA9IDA7XHJcbiAgd2hpbGUgKHF1ZXVlLmxlbmd0aCAhPT0gMCAmJiBpIDwgMTAwMCkge1xyXG4gICAgaSsrO1xyXG4gICAgY29uc3QgeyBub2RlLCBwYXRoIH0gPSBxdWV1ZS5zaGlmdCgpO1xyXG4gICAgY29uc3QgZXh0UGF0aCA9IFtub2RlLCAuLi5wYXRoXTtcclxuXHJcbiAgICBjb25zdCBzdWNjcyA9IGcuaGFzTm9kZShub2RlKVxyXG4gICAgICA/IGcuZmlsdGVyT3V0TmVpZ2hib3JzKG5vZGUsIChuKSA9PiAhcGF0aC5pbmNsdWRlcyhuKSlcclxuICAgICAgOiBbXTtcclxuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBzdWNjcykge1xyXG4gICAgICBxdWV1ZS5wdXNoKHsgbm9kZSwgcGF0aDogZXh0UGF0aCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0ZXJtaW5hbCBub2RlXHJcbiAgICBpZiAoIWcuaGFzTm9kZShub2RlKSB8fCBzdWNjcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcGF0aHNBcnIucHVzaChleHRQYXRoKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gU3BsaWNlIG9mZiB0aGUgY3VycmVudCBub3RlIGZyb20gdGhlIHBhdGhcclxuICBwYXRoc0Fyci5mb3JFYWNoKChwYXRoKSA9PiB7XHJcbiAgICBpZiAocGF0aC5sZW5ndGgpIHBhdGguc3BsaWNlKHBhdGgubGVuZ3RoIC0gMSwgMSk7XHJcbiAgfSk7XHJcbiAgaW5mbyh7IHBhdGhzQXJyIH0pO1xyXG4gIHJldHVybiBwYXRoc0FycjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUN5Y2xlcyhnOiBHcmFwaCwgc3RhcnROb2RlOiBzdHJpbmcpIHtcclxuICBjb25zdCBjb3B5ID0gZy5jb3B5KCk7XHJcbiAgbGV0IHByZXZOb2RlID0gbnVsbDtcclxuICBkZnNGcm9tTm9kZShjb3B5LCBzdGFydE5vZGUsIChuKSA9PiB7XHJcbiAgICBjb3B5LmZvckVhY2hPdXROZWlnaGJvcihuLCAodCkgPT4ge1xyXG4gICAgICBpZiAodCA9PT0gcHJldk5vZGUgJiYgY29weS5oYXNFZGdlKHQsIHByZXZOb2RlKSkge1xyXG4gICAgICAgIHRyeSB7IGNvcHkuZHJvcEVkZ2UodCwgcHJldk5vZGUpIH1cclxuICAgICAgICBjYXRjaCAoZXJyb3IpIHsgY29uc29sZS5lcnJvcih0LCBwcmV2Tm9kZSwgZXJyb3IpIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcHJldk5vZGUgPSBuO1xyXG4gIH0pO1xyXG4gIHJldHVybiBjb3B5O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3ViQ2xvc2VTdWIoXHJcbiAgZzogTXVsdGlHcmFwaCxcclxuICB1c2VySGllcnM6IFVzZXJIaWVyW10sXHJcbiAgLi4uZGlyczogRGlyZWN0aW9uc1tdXHJcbikge1xyXG4gIGNvbnN0IHN1YiA9IGdldFN1YkluRGlycyhnLCAuLi5kaXJzKTtcclxuICBjb25zdCBjbG9zZWQgPSBnZXRSZWZsZXhpdmVDbG9zdXJlKHN1YiwgdXNlckhpZXJzKTtcclxuICBjb25zdCBjbG9zZWRTdWIgPSBnZXRTdWJJbkRpcnMoY2xvc2VkLCBkaXJzWzBdKTtcclxuICByZXR1cm4gY2xvc2VkU3ViO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRPYnNHcmFwaCgpOiBNdWx0aUdyYXBoIHtcclxuICBjb25zdCBPYnNHID0gbmV3IE11bHRpR3JhcGgoKTtcclxuICBjb25zdCB7IHJlc29sdmVkTGlua3MsIHVucmVzb2x2ZWRMaW5rcyB9ID0gYXBwLm1ldGFkYXRhQ2FjaGU7XHJcblxyXG4gIGZvciAoY29uc3Qgc291cmNlIGluIHJlc29sdmVkTGlua3MpIHtcclxuICAgIGlmICghc291cmNlLmVuZHNXaXRoKFwiLm1kXCIpKSBjb250aW51ZTtcclxuICAgIGNvbnN0IHNvdXJjZUJhc2UgPSBnZXRCYXNlRnJvbU1EUGF0aChzb3VyY2UpO1xyXG4gICAgYWRkTm9kZXNJZk5vdChPYnNHLCBbc291cmNlQmFzZV0pO1xyXG5cclxuICAgIGZvciAoY29uc3QgZGVzdCBpbiByZXNvbHZlZExpbmtzW3NvdXJjZV0pIHtcclxuICAgICAgaWYgKCFkZXN0LmVuZHNXaXRoKFwiLm1kXCIpKSBjb250aW51ZTtcclxuICAgICAgY29uc3QgZGVzdEJhc2UgPSBnZXRCYXNlRnJvbU1EUGF0aChkZXN0KTtcclxuICAgICAgYWRkTm9kZXNJZk5vdChPYnNHLCBbZGVzdEJhc2VdKTtcclxuICAgICAgT2JzRy5hZGRFZGdlKHNvdXJjZUJhc2UsIGRlc3RCYXNlLCB7IHJlc29sdmVkOiB0cnVlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9yIChjb25zdCBzb3VyY2UgaW4gdW5yZXNvbHZlZExpbmtzKSB7XHJcbiAgICBjb25zdCBzb3VyY2VCYXNlID0gZ2V0QmFzZUZyb21NRFBhdGgoc291cmNlKTtcclxuICAgIGFkZE5vZGVzSWZOb3QoT2JzRywgW3NvdXJjZUJhc2VdKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGRlc3QgaW4gdW5yZXNvbHZlZExpbmtzW3NvdXJjZV0pIHtcclxuICAgICAgY29uc3QgZGVzdEJhc2UgPSBnZXRCYXNlRnJvbU1EUGF0aChkZXN0KTtcclxuICAgICAgYWRkTm9kZXNJZk5vdChPYnNHLCBbZGVzdEJhc2VdKTtcclxuICAgICAgaWYgKHNvdXJjZUJhc2UgPT09IGRlc3RCYXNlKSBjb250aW51ZTtcclxuICAgICAgT2JzRy5hZGRFZGdlKHNvdXJjZUJhc2UsIGRlc3RCYXNlLCB7IHJlc29sdmVkOiBmYWxzZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluZm8oeyBPYnNHIH0pO1xyXG4gIHJldHVybiBPYnNHO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcG9wdWxhdGVNYWluKFxyXG4gIHNldHRpbmdzOiBCQ1NldHRpbmdzLFxyXG4gIG1haW5HOiBNdWx0aUdyYXBoLFxyXG4gIHNvdXJjZTogc3RyaW5nLFxyXG4gIGZpZWxkOiBzdHJpbmcsXHJcbiAgdGFyZ2V0OiBzdHJpbmcsXHJcbiAgc291cmNlT3JkZXI6IG51bWJlcixcclxuICB0YXJnZXRPcmRlcjogbnVtYmVyLFxyXG4gIGZpbGxPcHAgPSBmYWxzZVxyXG4pOiB2b2lkIHtcclxuICBjb25zdCB7IHVzZXJIaWVycyB9ID0gc2V0dGluZ3M7XHJcbiAgY29uc3QgZGlyID0gZ2V0RmllbGRJbmZvKHVzZXJIaWVycywgZmllbGQpLmZpZWxkRGlyO1xyXG5cclxuICBhZGROb2Rlc0lmTm90KG1haW5HLCBbc291cmNlXSwge1xyXG4gICAgb3JkZXI6IHNvdXJjZU9yZGVyLFxyXG4gIH0pO1xyXG5cclxuICBhZGROb2Rlc0lmTm90KG1haW5HLCBbdGFyZ2V0XSwge1xyXG4gICAgb3JkZXI6IHRhcmdldE9yZGVyLFxyXG4gIH0pO1xyXG5cclxuICBhZGRFZGdlSWZOb3QobWFpbkcsIHNvdXJjZSwgdGFyZ2V0LCB7XHJcbiAgICBkaXIsXHJcbiAgICBmaWVsZCxcclxuICB9KTtcclxuICBpZiAoZmlsbE9wcCkge1xyXG4gICAgYWRkRWRnZUlmTm90KG1haW5HLCB0YXJnZXQsIHNvdXJjZSwge1xyXG4gICAgICBkaXI6IGdldE9wcERpcihkaXIpLFxyXG4gICAgICBmaWVsZDogZ2V0T3BwRmllbGRzKHVzZXJIaWVycywgZmllbGQsIGRpcilbMF0sXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBnZXRUYXJnZXRPcmRlciA9IChmcm9udG1zOiBkdkZyb250bWF0dGVyQ2FjaGVbXSwgdGFyZ2V0OiBzdHJpbmcpID0+XHJcbiAgcGFyc2VJbnQoXHJcbiAgICAoZnJvbnRtcy5maW5kKChmZikgPT4gZmY/LmZpbGU/LmJhc2VuYW1lID09PSB0YXJnZXQpPy5bXHJcbiAgICAgIEJDX09SREVSXHJcbiAgICBdIGFzIHN0cmluZykgPz8gXCI5OTk5XCJcclxuICApO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFNvdXJjZU9yZGVyID0gKGZyb250bTogZHZGcm9udG1hdHRlckNhY2hlKSA9PlxyXG4gIHBhcnNlSW50KChmcm9udG1bQkNfT1JERVJdIGFzIHN0cmluZykgPz8gXCI5OTk5XCIpO1xyXG5cclxuLyoqIFJlbWVtYmVyIHRvIGZpbHRlciBieSBoaWVyYXJjaHkgaW4gTWF0cml4VmlldyEgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlYWxuSW1wbGllZChcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIGN1cnJOb2RlOiBzdHJpbmcsXHJcbiAgZGlyOiBEaXJlY3Rpb25zID0gbnVsbFxyXG4pOiBSZWFsTkltcGxpZWQge1xyXG4gIGNvbnN0IHJlYWxzbkltcGxpZWRzOiBSZWFsTkltcGxpZWQgPSBibGFua1JlYWxOSW1wbGllZCgpO1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MsIGNsb3NlZEcgfSA9IHBsdWdpbjtcclxuICBjb25zdCB7IHVzZXJIaWVycyB9ID0gc2V0dGluZ3M7XHJcblxyXG4gIGlmICghY2xvc2VkRy5oYXNOb2RlKGN1cnJOb2RlKSkgcmV0dXJuIHJlYWxzbkltcGxpZWRzO1xyXG4gIGNsb3NlZEcuZm9yRWFjaEVkZ2UoY3Vyck5vZGUsIChrLCBhLCBzLCB0KSA9PiB7XHJcbiAgICBjb25zdCB7IGZpZWxkLCBkaXI6IGVkZ2VEaXIsIGltcGxpZWQgfSA9IGEgYXMgRWRnZUF0dHI7XHJcbiAgICBjb25zdCBvcHBGaWVsZCA9IGdldE9wcEZpZWxkcyh1c2VySGllcnMsIGZpZWxkLCBlZGdlRGlyKVswXTtcclxuXHJcbiAgICAoZGlyID8gW2RpciwgZ2V0T3BwRGlyKGRpcildIDogRElSRUNUSU9OUykuZm9yRWFjaChcclxuICAgICAgKGN1cnJEaXI6IERpcmVjdGlvbnMpID0+IHtcclxuICAgICAgICBjb25zdCBvcHBEaXIgPSBnZXRPcHBEaXIoY3VyckRpcik7XHJcbiAgICAgICAgLy8gUmVhbHNcclxuICAgICAgICBpZiAocyA9PT0gY3Vyck5vZGUgJiYgKGVkZ2VEaXIgPT09IGN1cnJEaXIgfHwgZWRnZURpciA9PT0gb3BwRGlyKSkge1xyXG4gICAgICAgICAgY29uc3QgYXJyID0gcmVhbHNuSW1wbGllZHNbZWRnZURpcl0ucmVhbHM7XHJcbiAgICAgICAgICBpZiAoYXJyLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS50byA9PT0gdCkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIGFyci5wdXNoKHsgdG86IHQsIGZpZWxkLCBpbXBsaWVkIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJbXBsaWVkc1xyXG4gICAgICAgIC8vIElmIGBzICE9PSBjdXJyTm9kZWAgdGhlbiBgdGAgbXVzdCBiZVxyXG4gICAgICAgIGVsc2UgaWYgKGVkZ2VEaXIgPT09IGN1cnJEaXIgfHwgZWRnZURpciA9PT0gb3BwRGlyKSB7XHJcbiAgICAgICAgICBjb25zdCBhcnIgPSByZWFsc25JbXBsaWVkc1tnZXRPcHBEaXIoZWRnZURpcildLmltcGxpZWRzO1xyXG4gICAgICAgICAgaWYgKGFyci5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0udG8gPT09IHMpID09PSAtMSkge1xyXG4gICAgICAgICAgICBhcnIucHVzaCh7XHJcbiAgICAgICAgICAgICAgdG86IHMsXHJcbiAgICAgICAgICAgICAgZmllbGQ6IG9wcEZpZWxkLFxyXG4gICAgICAgICAgICAgIGltcGxpZWQsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9KTtcclxuICByZXR1cm4gcmVhbHNuSW1wbGllZHM7XHJcbn1cclxuIiwgImltcG9ydCB7IEFSUk9XX0RJUkVDVElPTlMsIERJUkVDVElPTlMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB0eXBlIHsgRGlyZWN0aW9ucywgVXNlckhpZXIgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5cclxuLyoqXHJcbiAqIEdldCBhbGwgdGhlIGZpZWxkcyBpbiBgZGlyYC5cclxuICogUmV0dXJucyBhbGwgZmllbGRzIGlmIGBkaXIgPT09ICdhbGwnYFxyXG4gKiBAcGFyYW0gIHtVc2VySGllcltdfSB1c2VySGllcnNcclxuICogQHBhcmFtICB7RGlyZWN0aW9uc3xcImFsbFwifSBkaXJcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWVsZHMoXHJcbiAgdXNlckhpZXJzOiBVc2VySGllcltdLFxyXG4gIGRpcjogRGlyZWN0aW9ucyB8IFwiYWxsXCIgPSBcImFsbFwiXHJcbikge1xyXG4gIGNvbnN0IGZpZWxkczogc3RyaW5nW10gPSBbXTtcclxuICB1c2VySGllcnMuZm9yRWFjaCgoaGllcikgPT4ge1xyXG4gICAgaWYgKGRpciA9PT0gXCJhbGxcIikge1xyXG4gICAgICBESVJFQ1RJT05TLmZvckVhY2goKGVhY2hEaXIpID0+IHtcclxuICAgICAgICBmaWVsZHMucHVzaCguLi5oaWVyW2VhY2hEaXJdKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmaWVsZHMucHVzaCguLi5oaWVyW2Rpcl0pO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBmaWVsZHM7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBnZXRPcHBEaXIgPSAoZGlyOiBEaXJlY3Rpb25zKTogRGlyZWN0aW9ucyA9PiB7XHJcbiAgc3dpdGNoIChkaXIpIHtcclxuICAgIGNhc2UgXCJ1cFwiOlxyXG4gICAgICByZXR1cm4gXCJkb3duXCI7XHJcbiAgICBjYXNlIFwiZG93blwiOlxyXG4gICAgICByZXR1cm4gXCJ1cFwiO1xyXG4gICAgY2FzZSBcInNhbWVcIjpcclxuICAgICAgcmV0dXJuIFwic2FtZVwiO1xyXG4gICAgY2FzZSBcIm5leHRcIjpcclxuICAgICAgcmV0dXJuIFwicHJldlwiO1xyXG4gICAgY2FzZSBcInByZXZcIjpcclxuICAgICAgcmV0dXJuIFwibmV4dFwiO1xyXG4gIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiAgR2V0IHRoZSBoaWVyYXJjaHkgYW5kIGRpcmVjdGlvbiB0aGF0IGBmaWVsZGAgaXMgaW5cclxuICogKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpZWxkSW5mbyh1c2VySGllcnM6IFVzZXJIaWVyW10sIGZpZWxkOiBzdHJpbmcpIHtcclxuICBsZXQgZmllbGREaXI6IERpcmVjdGlvbnM7XHJcbiAgbGV0IGZpZWxkSGllcjogVXNlckhpZXI7XHJcblxyXG4gIERJUkVDVElPTlMuZm9yRWFjaCgoZGlyOiBEaXJlY3Rpb25zKSA9PiB7XHJcbiAgICB1c2VySGllcnMuZm9yRWFjaCgoaGllcikgPT4ge1xyXG4gICAgICBpZiAoaGllcltkaXJdLmluY2x1ZGVzKGZpZWxkKSkge1xyXG4gICAgICAgIGZpZWxkRGlyID0gZGlyO1xyXG4gICAgICAgIGZpZWxkSGllciA9IGhpZXI7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9KTtcclxuICByZXR1cm4geyBmaWVsZEhpZXIsIGZpZWxkRGlyIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRPcHBGaWVsZHMoXHJcbiAgdXNlckhpZXJzOiBVc2VySGllcltdLFxyXG4gIGZpZWxkOiBzdHJpbmcsXHJcbiAgZGlyOiBEaXJlY3Rpb25zXHJcbikge1xyXG4gIC8vIElmIHRoZSBmaWVsZCBlbmRzIHdpdGggYD5gLCBpdCBpcyBhbHJlYWR5IHRoZSBvcHBvc2l0ZSBmaWVsZCB3ZSBuZWVkIChjb21pbmcgZnJvbSBgZ2V0T3BwRmFsbGJhY2tgKVxyXG4gIGlmIChmaWVsZC5lbmRzV2l0aChcIj5cIikpIHJldHVybiBbZmllbGQuc2xpY2UoMCwgLTQpXTtcclxuXHJcbiAgY29uc3Qgb3BwRmllbGRzID0gW2ZhbGxiYWNrT3BwRmllbGQoZmllbGQsIGRpcildO1xyXG4gIGNvbnN0IHsgZmllbGRIaWVyLCBmaWVsZERpciB9ID0gZ2V0RmllbGRJbmZvKHVzZXJIaWVycywgZmllbGQpO1xyXG4gIGlmICghZmllbGRIaWVyIHx8ICFmaWVsZERpcikgcmV0dXJuIG9wcEZpZWxkcztcclxuXHJcbiAgY29uc3Qgb3BwRGlyID0gZ2V0T3BwRGlyKGZpZWxkRGlyKTtcclxuICBvcHBGaWVsZHMudW5zaGlmdCguLi5maWVsZEhpZXJbb3BwRGlyXSk7XHJcbiAgcmV0dXJuIG9wcEZpZWxkcztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGhpZXJUb1N0ciA9IChoaWVyOiBVc2VySGllcikgPT5cclxuICBESVJFQ1RJT05TLm1hcChcclxuICAgIChkaXIpID0+IGAke0FSUk9XX0RJUkVDVElPTlNbZGlyXX06ICR7aGllcltkaXJdLmpvaW4oXCIsIFwiKX1gXHJcbiAgKS5qb2luKFwiXFxuXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGZhbGxiYWNrRmllbGQgPSAoZmllbGQ6IHN0cmluZywgZGlyOiBEaXJlY3Rpb25zKSA9PlxyXG4gIGAke2ZpZWxkfSA8JHtBUlJPV19ESVJFQ1RJT05TW2Rpcl19PmA7XHJcbmV4cG9ydCBjb25zdCBmYWxsYmFja09wcEZpZWxkID0gKGZpZWxkOiBzdHJpbmcsIGRpcjogRGlyZWN0aW9ucykgPT5cclxuICBgJHtmaWVsZH0gPCR7QVJST1dfRElSRUNUSU9OU1tnZXRPcHBEaXIoZGlyKV19PmA7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXRlcmF0ZUhpZXJzKFxyXG4gIHVzZXJIaWVyczogVXNlckhpZXJbXSxcclxuICBmbjogKGhpZXI6IFVzZXJIaWVyLCBkaXI6IERpcmVjdGlvbnMsIGZpZWxkOiBzdHJpbmcpID0+IHZvaWRcclxuKSB7XHJcbiAgdXNlckhpZXJzLmZvckVhY2goKGhpZXIpID0+IHtcclxuICAgIERJUkVDVElPTlMuZm9yRWFjaCgoZGlyKSA9PiB7XHJcbiAgICAgIGhpZXJbZGlyXS5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGZuKGhpZXIsIGRpciwgZmllbGQpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG59XHJcbiIsICJpbXBvcnQgdHlwZSB7IE11bHRpR3JhcGggfSBmcm9tIFwiZ3JhcGhvbG9neVwiO1xyXG5pbXBvcnQgeyB3YXJuIH0gZnJvbSBcImxvZ2xldmVsXCI7XHJcbmltcG9ydCB7IE5vdGljZSB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgeyBCQ19EVl9OT1RFLCBCQ19EVl9OT1RFX0ZJRUxELCBCQ19JR05PUkUsIERBVEFWSUVXX01JU1NJTkcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB0eXBlIHsgZHZGcm9udG1hdHRlckNhY2hlIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHtcclxuICBnZXRTb3VyY2VPcmRlcixcclxuICBnZXRUYXJnZXRPcmRlcixcclxuICBwb3B1bGF0ZU1haW4sXHJcbn0gZnJvbSBcIi4uL1V0aWxzL2dyYXBoVXRpbHNcIjtcclxuaW1wb3J0IHsgZ2V0RmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXREVkFwaSwgZ2V0RFZCYXNlbmFtZSB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkRGF0YXZpZXdOb3Rlc1RvR3JhcGgoXHJcbiAgcGx1Z2luOiBCQ1BsdWdpbixcclxuICBlbGlnYWJsZUFsdHM6IGR2RnJvbnRtYXR0ZXJDYWNoZVtdLFxyXG4gIGZyb250bXM6IGR2RnJvbnRtYXR0ZXJDYWNoZVtdLFxyXG4gIG1haW5HOiBNdWx0aUdyYXBoXHJcbikge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCB7IHVzZXJIaWVycywgZGF0YXZpZXdOb3RlRmllbGQgfSA9IHNldHRpbmdzO1xyXG4gIGNvbnN0IGR2ID0gZ2V0RFZBcGkocGx1Z2luKTtcclxuICBpZiAoIWR2ICYmIGVsaWdhYmxlQWx0cy5sZW5ndGgpIHtcclxuICAgIG5ldyBOb3RpY2UoREFUQVZJRVdfTUlTU0lORyk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBjb25zdCBmaWVsZHMgPSBnZXRGaWVsZHModXNlckhpZXJzKTtcclxuXHJcbiAgZWxpZ2FibGVBbHRzLmZvckVhY2goKGFsdEZpbGUpID0+IHtcclxuICAgIGNvbnN0IGJhc2VuYW1lID0gZ2V0RFZCYXNlbmFtZShhbHRGaWxlLmZpbGUpO1xyXG5cclxuICAgIGxldCBxdWVyeSA9IGFsdEZpbGVbQkNfRFZfTk9URV0gYXMgKHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pO1xyXG4gICAgaWYgKHF1ZXJ5Lmhhc093blByb3BlcnR5KCdwYXRoJykpIHtcclxuICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgIHF1ZXJ5ID0gYFtbJHtxdWVyeS5wYXRofV1dYDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgbGV0IGZpZWxkID1cclxuICAgICAgKGFsdEZpbGVbQkNfRFZfTk9URV9GSUVMRF0gYXMgc3RyaW5nKSA/PyAoZGF0YXZpZXdOb3RlRmllbGQgfHwgZmllbGRzWzBdKTtcclxuXHJcbiAgICBsZXQgdGFyZ2V0czogZHZGcm9udG1hdHRlckNhY2hlW10gPSBbXTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRhcmdldHMgPSBkdi5wYWdlcyg8c3RyaW5nPnF1ZXJ5KS52YWx1ZXM7XHJcbiAgICB9IGNhdGNoIChlcikge1xyXG4gICAgICBuZXcgTm90aWNlKGAke3F1ZXJ5fSBpcyBub3QgYSB2YWxpZCBEYXRhdmlldyBmcm9tLXF1ZXJ5YCk7XHJcbiAgICAgIHdhcm4oZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIHRhcmdldHMpIHtcclxuICAgICAgaWYgKHRhcmdldFtCQ19JR05PUkVdKSBjb250aW51ZTtcclxuICAgICAgY29uc3QgdGFyZ2V0Qk4gPSBnZXREVkJhc2VuYW1lKHRhcmdldC5maWxlKTtcclxuICAgICAgY29uc3Qgc291cmNlT3JkZXIgPSBnZXRTb3VyY2VPcmRlcihhbHRGaWxlKTtcclxuICAgICAgY29uc3QgdGFyZ2V0T3JkZXIgPSBnZXRUYXJnZXRPcmRlcihmcm9udG1zLCB0YXJnZXRCTik7XHJcblxyXG4gICAgICBwb3B1bGF0ZU1haW4oXHJcbiAgICAgICAgc2V0dGluZ3MsXHJcbiAgICAgICAgbWFpbkcsXHJcbiAgICAgICAgYmFzZW5hbWUsXHJcbiAgICAgICAgZmllbGQsXHJcbiAgICAgICAgdGFyZ2V0Qk4sXHJcbiAgICAgICAgc291cmNlT3JkZXIsXHJcbiAgICAgICAgdGFyZ2V0T3JkZXIsXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcbiIsICJpbXBvcnQgdHlwZSB7IE11bHRpR3JhcGggfSBmcm9tIFwiZ3JhcGhvbG9neVwiO1xyXG5pbXBvcnQgdHlwZSB7IGR2RnJvbnRtYXR0ZXJDYWNoZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IHBvcHVsYXRlTWFpbiB9IGZyb20gXCIuLi9VdGlscy9ncmFwaFV0aWxzXCI7XHJcbmltcG9ydCB7IGdldERWQmFzZW5hbWUgfSBmcm9tIFwiLi4vVXRpbHMvT2JzaWRpYW5VdGlsc1wiO1xyXG5pbXBvcnQgKiBhcyBsdXhvbiBmcm9tIFwibHV4b25cIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGREYXRlTm90ZXNUb0dyYXBoKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgZnJvbnRtczogZHZGcm9udG1hdHRlckNhY2hlW10sXHJcbiAgbWFpbkc6IE11bHRpR3JhcGhcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHtcclxuICAgIGFkZERhdGVOb3RlcyxcclxuICAgIGRhdGVOb3RlQWRkTW9udGgsXHJcbiAgICBkYXRlTm90ZUFkZFllYXIsXHJcbiAgICBkYXRlTm90ZUZvcm1hdCxcclxuICAgIGRhdGVOb3RlRmllbGQsXHJcbiAgfSA9IHNldHRpbmdzO1xyXG4gIGlmICghYWRkRGF0ZU5vdGVzKSByZXR1cm47XHJcblxyXG4gIGNvbnN0IHsgcmVnZXggfSA9IGx1eG9uLkRhdGVUaW1lLmZyb21Gb3JtYXRFeHBsYWluKFwiXCIsIGRhdGVOb3RlRm9ybWF0KTtcclxuICBmcm9udG1zLmZvckVhY2goKHBhZ2UpID0+IHtcclxuICAgIGNvbnN0IHsgZmlsZSB9ID0gcGFnZTtcclxuICAgIGNvbnN0IHsgZGF5IH0gPSBmaWxlO1xyXG4gICAgaWYgKCFkYXkgfHwgIXJlZ2V4LnRlc3QoZ2V0RFZCYXNlbmFtZShmaWxlKSkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB0b2RheSA9IGdldERWQmFzZW5hbWUoZmlsZSk7XHJcbiAgICBjb25zdCB0b21vcnJvdyA9IGRheS5wbHVzKHsgZGF5czogMSB9KTtcclxuICAgIGNvbnN0IHRvbVN0ciA9IHRvbW9ycm93LnRvRm9ybWF0KGRhdGVOb3RlRm9ybWF0KTtcclxuXHJcbiAgICBwb3B1bGF0ZU1haW4oXHJcbiAgICAgIHNldHRpbmdzLFxyXG4gICAgICBtYWluRyxcclxuICAgICAgdG9kYXksXHJcbiAgICAgIGRhdGVOb3RlRmllbGQsXHJcbiAgICAgIHRvbVN0cixcclxuICAgICAgOTk5OSxcclxuICAgICAgOTk5OSxcclxuICAgICAgdHJ1ZVxyXG4gICAgKTtcclxuICB9KTtcclxufVxyXG4iLCAiaW1wb3J0IHR5cGUgeyBNdWx0aUdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHsgQkNfSUdOT1JFLCBCQ19JR05PUkVfREVORFJPTiB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHR5cGUgeyBkdkZyb250bWF0dGVyQ2FjaGUgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG5pbXBvcnQge1xyXG4gIGdldFNvdXJjZU9yZGVyLFxyXG4gIGdldFRhcmdldE9yZGVyLFxyXG4gIHBvcHVsYXRlTWFpbixcclxufSBmcm9tIFwiLi4vVXRpbHMvZ3JhcGhVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXREVkJhc2VuYW1lIH0gZnJvbSBcIi4uL1V0aWxzL09ic2lkaWFuVXRpbHNcIjtcclxuXHJcbmNvbnN0IGdldERlbmRyb25QYXJlbnQgPSAoZGVuZHJvbjogc3RyaW5nLCBzcGxpdHRlcjogc3RyaW5nKSA9PlxyXG4gIGRlbmRyb24uc3BsaXQoc3BsaXR0ZXIpLnNsaWNlKDAsIC0xKS5qb2luKHNwbGl0dGVyKTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGREZW5kcm9uTm90ZXNUb0dyYXBoKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgZnJvbnRtczogZHZGcm9udG1hdHRlckNhY2hlW10sXHJcbiAgbWFpbkc6IE11bHRpR3JhcGhcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgYWRkRGVuZHJvbk5vdGVzLCBkZW5kcm9uTm90ZURlbGltaXRlciwgZGVuZHJvbk5vdGVGaWVsZCB9ID0gc2V0dGluZ3M7XHJcbiAgaWYgKCFhZGREZW5kcm9uTm90ZXMpIHJldHVybjtcclxuXHJcbiAgZm9yIChjb25zdCBmcm9udG0gb2YgZnJvbnRtcykge1xyXG4gICAgaWYgKGZyb250bVtCQ19JR05PUkVfREVORFJPTl0gfHwgZnJvbnRtW0JDX0lHTk9SRV0pIGNvbnRpbnVlO1xyXG5cclxuICAgIGxldCBjdXJyID0gZ2V0RFZCYXNlbmFtZShmcm9udG0uZmlsZSk7XHJcbiAgICBsZXQgcGFyZW50ID0gZ2V0RGVuZHJvblBhcmVudChjdXJyLCBkZW5kcm9uTm90ZURlbGltaXRlcik7XHJcblxyXG4gICAgd2hpbGUgKHBhcmVudCAhPT0gXCJcIikge1xyXG4gICAgICBjb25zdCBwYXJlbnRGaWxlID0gZnJvbnRtcy5maW5kKFxyXG4gICAgICAgIChmbSkgPT4gZ2V0RFZCYXNlbmFtZShmbS5maWxlKSA9PT0gcGFyZW50XHJcbiAgICAgICk7XHJcblxyXG4gICAgICAvLyAhcGFyZW50RmlsZSBpbXBsaWVzIGEgXCJzdHViXCJcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBpZiAoIXBhcmVudEZpbGUgfHwgcGFyZW50RmlsZVtCQ19JR05PUkVfREVORFJPTl0gIT09IHRydWUpIHtcclxuICAgICAgICBwb3B1bGF0ZU1haW4oXHJcbiAgICAgICAgICBzZXR0aW5ncyxcclxuICAgICAgICAgIG1haW5HLFxyXG4gICAgICAgICAgY3VycixcclxuICAgICAgICAgIGRlbmRyb25Ob3RlRmllbGQsXHJcbiAgICAgICAgICBwYXJlbnQsXHJcbiAgICAgICAgICA5OTk5LFxyXG4gICAgICAgICAgOTk5OSxcclxuICAgICAgICAgIHRydWVcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGN1cnIgPSBwYXJlbnQ7XHJcbiAgICAgIHBhcmVudCA9IGdldERlbmRyb25QYXJlbnQocGFyZW50LCBkZW5kcm9uTm90ZURlbGltaXRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyBleHBvcnQgZnVuY3Rpb24gYWRkRGVuZHJvbk5vdGVzVG9HcmFwaChcclxuLy8gICBwbHVnaW46IEJDUGx1Z2luLFxyXG4vLyAgIGZyb250bXM6IGR2RnJvbnRtYXR0ZXJDYWNoZVtdLFxyXG4vLyAgIG1haW5HOiBNdWx0aUdyYXBoXHJcbi8vICkge1xyXG4vLyAgIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuLy8gICBjb25zdCB7IGFkZERlbmRyb25Ob3RlcywgZGVuZHJvbk5vdGVEZWxpbWl0ZXIsIGRlbmRyb25Ob3RlRmllbGQgfSA9IHNldHRpbmdzO1xyXG4vLyAgIGlmICghYWRkRGVuZHJvbk5vdGVzKSByZXR1cm47XHJcblxyXG4vLyAgIGZvciAoY29uc3QgZnJvbnRtIG9mIGZyb250bXMpIHtcclxuLy8gICAgIGlmIChmcm9udG1bQkNfSUdOT1JFX0RFTkRST05dKSBjb250aW51ZTtcclxuXHJcbi8vICAgICBjb25zdCBiYXNlbmFtZSA9IGdldERWQmFzZW5hbWUoZnJvbnRtLmZpbGUpO1xyXG5cclxuLy8gICAgIGNvbnN0IHNwbGl0cyA9IGJhc2VuYW1lLnNwbGl0KGRlbmRyb25Ob3RlRGVsaW1pdGVyKTtcclxuLy8gICAgIGlmIChzcGxpdHMubGVuZ3RoIDw9IDEpIGNvbnRpbnVlO1xyXG5cclxuLy8gICAgIGNvbnN0IG5leHRTbGljZSA9IHNwbGl0cy5zbGljZSgwLCAtMSkuam9pbihkZW5kcm9uTm90ZURlbGltaXRlcik7XHJcbi8vICAgICBpZiAoIW5leHRTbGljZSkgY29udGludWU7XHJcbi8vICAgICBjb25zdCBuZXh0U2xpY2VGaWxlID0gZnJvbnRtcy5maW5kKFxyXG4vLyAgICAgICAoZm0pID0+IGdldERWQmFzZW5hbWUoZm0uZmlsZSkgPT09IG5leHRTbGljZVxyXG4vLyAgICAgKTtcclxuXHJcbi8vICAgICBpZiAoIW5leHRTbGljZUZpbGUgfHwgbmV4dFNsaWNlRmlsZVtCQ19JR05PUkVfREVORFJPTl0pIGNvbnRpbnVlO1xyXG5cclxuLy8gICAgIGNvbnN0IHNvdXJjZU9yZGVyID0gZ2V0U291cmNlT3JkZXIoZnJvbnRtKTtcclxuLy8gICAgIGNvbnN0IHRhcmdldE9yZGVyID0gZ2V0VGFyZ2V0T3JkZXIoZnJvbnRtcywgbmV4dFNsaWNlKTtcclxuXHJcbi8vICAgICBwb3B1bGF0ZU1haW4oXHJcbi8vICAgICAgIHNldHRpbmdzLFxyXG4vLyAgICAgICBtYWluRyxcclxuLy8gICAgICAgYmFzZW5hbWUsXHJcbi8vICAgICAgIGRlbmRyb25Ob3RlRmllbGQsXHJcbi8vICAgICAgIG5leHRTbGljZSxcclxuLy8gICAgICAgc291cmNlT3JkZXIsXHJcbi8vICAgICAgIHRhcmdldE9yZGVyLFxyXG4vLyAgICAgICB0cnVlXHJcbi8vICAgICApO1xyXG4vLyAgIH1cclxuLy8gfVxyXG4iLCAiaW1wb3J0IHR5cGUgeyBNdWx0aUdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHsgVEZpbGUsIFRGb2xkZXIgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHtcclxuICBCQ19GT0xERVJfTk9URSxcclxuICBCQ19GT0xERVJfTk9URV9SRUNVUlNJVkUsXHJcbiAgQkNfRk9MREVSX05PVEVfU1VCRk9MREVSUyxcclxuICBCQ19JR05PUkUsXHJcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgdHlwZSB7IGR2RnJvbnRtYXR0ZXJDYWNoZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7XHJcbiAgZ2V0U291cmNlT3JkZXIsXHJcbiAgZ2V0VGFyZ2V0T3JkZXIsXHJcbiAgcG9wdWxhdGVNYWluLFxyXG59IGZyb20gXCIuLi9VdGlscy9ncmFwaFV0aWxzXCI7XHJcbmltcG9ydCB7IGdldEZpZWxkcyB9IGZyb20gXCIuLi9VdGlscy9IaWVyVXRpbHNcIjtcclxuaW1wb3J0IHsgZ2V0RFZCYXNlbmFtZSwgZ2V0Rm9sZGVyTmFtZSB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG5jb25zdCBnZXRTdWJzRnJvbUZvbGRlciA9IChmb2xkZXI6IFRGb2xkZXIpID0+IHtcclxuICBjb25zdCBvdGhlck5vdGVzOiBURmlsZVtdID0gW10sXHJcbiAgICBzdWJGb2xkZXJzOiBURm9sZGVyW10gPSBbXTtcclxuICBmb2xkZXIuY2hpbGRyZW4uZm9yRWFjaCgodEFic3RyYWN0KSA9PiB7XHJcbiAgICBpZiAodEFic3RyYWN0IGluc3RhbmNlb2YgVEZpbGUpIG90aGVyTm90ZXMucHVzaCh0QWJzdHJhY3QpO1xyXG4gICAgZWxzZSBzdWJGb2xkZXJzLnB1c2godEFic3RyYWN0IGFzIFRGb2xkZXIpO1xyXG4gIH0pO1xyXG4gIHJldHVybiB7IG90aGVyTm90ZXMsIHN1YkZvbGRlcnMgfTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRGb2xkZXJOb3Rlc1RvR3JhcGgoXHJcbiAgcGx1Z2luOiBCQ1BsdWdpbixcclxuICBmb2xkZXJOb3RlczogZHZGcm9udG1hdHRlckNhY2hlW10sXHJcbiAgZnJvbnRtczogZHZGcm9udG1hdHRlckNhY2hlW10sXHJcbiAgbWFpbkc6IE11bHRpR3JhcGhcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgdXNlckhpZXJzIH0gPSBzZXR0aW5ncztcclxuICBjb25zdCBmaWVsZHMgPSBnZXRGaWVsZHModXNlckhpZXJzKTtcclxuXHJcbiAgZm9sZGVyTm90ZXMuZm9yRWFjaCgoYWx0RmlsZSkgPT4ge1xyXG4gICAgY29uc3QgeyBmaWxlIH0gPSBhbHRGaWxlO1xyXG4gICAgY29uc3QgYmFzZW5hbWUgPSBnZXREVkJhc2VuYW1lKGZpbGUpO1xyXG4gICAgY29uc3QgdG9wRm9sZGVyTmFtZSA9IGdldEZvbGRlck5hbWUoZmlsZSk7XHJcbiAgICBjb25zdCB0b3BGb2xkZXIgPSBhcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKHRvcEZvbGRlck5hbWUpIGFzIFRGb2xkZXI7XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0cyA9IGZyb250bXNcclxuICAgICAgLm1hcCgoZmYpID0+IGZmLmZpbGUpXHJcbiAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgKG90aGVyKSA9PlxyXG4gICAgICAgICAgZ2V0Rm9sZGVyTmFtZShvdGhlcikgPT09IHRvcEZvbGRlck5hbWUgJiYgb3RoZXIucGF0aCAhPT0gZmlsZS5wYXRoICYmICFvdGhlcltCQ19JR05PUkVdXHJcbiAgICAgIClcclxuICAgICAgLm1hcChnZXREVkJhc2VuYW1lKTtcclxuXHJcbiAgICBjb25zdCBmaWVsZCA9IGFsdEZpbGVbQkNfRk9MREVSX05PVEVdIGFzIHN0cmluZztcclxuICAgIGlmICh0eXBlb2YgZmllbGQgIT09IFwic3RyaW5nXCIgfHwgIWZpZWxkcy5pbmNsdWRlcyhmaWVsZCkpIHJldHVybjtcclxuXHJcbiAgICB0YXJnZXRzLmZvckVhY2goKHRhcmdldCkgPT4ge1xyXG4gICAgICAvLyBUaGlzIGlzIGdldHRpbmcgdGhlIG9yZGVyIG9mIHRoZSBmb2xkZXIgbm90ZSwgbm90IHRoZSBzb3VyY2UgcG9pbnRpbmcgdXAgdG8gaXRcclxuICAgICAgY29uc3Qgc291cmNlT3JkZXIgPSBnZXRTb3VyY2VPcmRlcihhbHRGaWxlKTtcclxuICAgICAgY29uc3QgdGFyZ2V0T3JkZXIgPSBnZXRUYXJnZXRPcmRlcihmcm9udG1zLCBiYXNlbmFtZSk7XHJcbiAgICAgIHBvcHVsYXRlTWFpbihcclxuICAgICAgICBzZXR0aW5ncyxcclxuICAgICAgICBtYWluRyxcclxuICAgICAgICBiYXNlbmFtZSxcclxuICAgICAgICBmaWVsZCxcclxuICAgICAgICB0YXJnZXQsXHJcbiAgICAgICAgc291cmNlT3JkZXIsXHJcbiAgICAgICAgdGFyZ2V0T3JkZXIsXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGFsdEZpbGVbQkNfRk9MREVSX05PVEVfU1VCRk9MREVSU10pIHtcclxuICAgICAgY29uc3Qgc3ViZm9sZGVyRmllbGQgPSBhbHRGaWxlW0JDX0ZPTERFUl9OT1RFX1NVQkZPTERFUlNdIGFzIHN0cmluZztcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHR5cGVvZiBzdWJmb2xkZXJGaWVsZCAhPT0gXCJzdHJpbmdcIiB8fFxyXG4gICAgICAgICFmaWVsZHMuaW5jbHVkZXMoc3ViZm9sZGVyRmllbGQpXHJcbiAgICAgIClcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCB7IHN1YkZvbGRlcnMgfSA9IGdldFN1YnNGcm9tRm9sZGVyKHRvcEZvbGRlcik7XHJcblxyXG4gICAgICBzdWJGb2xkZXJzLmZvckVhY2goKHN1YkZvbGRlcikgPT4ge1xyXG4gICAgICAgIHN1YkZvbGRlci5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgVEZpbGUpIHtcclxuICAgICAgICAgICAgY29uc3QgY2hpbGRCYXNlbmFtZSA9IGdldERWQmFzZW5hbWUoY2hpbGQpO1xyXG5cclxuICAgICAgICAgICAgcG9wdWxhdGVNYWluKFxyXG4gICAgICAgICAgICAgIHNldHRpbmdzLFxyXG4gICAgICAgICAgICAgIG1haW5HLFxyXG4gICAgICAgICAgICAgIGJhc2VuYW1lLFxyXG4gICAgICAgICAgICAgIHN1YmZvbGRlckZpZWxkLFxyXG4gICAgICAgICAgICAgIGNoaWxkQmFzZW5hbWUsXHJcbiAgICAgICAgICAgICAgOTk5OSxcclxuICAgICAgICAgICAgICA5OTk5LFxyXG4gICAgICAgICAgICAgIHRydWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGFsdEZpbGVbQkNfRk9MREVSX05PVEVfUkVDVVJTSVZFXSkge1xyXG4gICAgICBjb25zdCB7IHN1YkZvbGRlcnMgfSA9IGdldFN1YnNGcm9tRm9sZGVyKHRvcEZvbGRlcik7XHJcbiAgICAgIGNvbnN0IGZvbGRlclF1ZXVlOiBURm9sZGVyW10gPSBbLi4uc3ViRm9sZGVyc107XHJcblxyXG4gICAgICBsZXQgY3VyckZvbGRlciA9IGZvbGRlclF1ZXVlLnNoaWZ0KCk7XHJcbiAgICAgIHdoaWxlIChjdXJyRm9sZGVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBjb25zdCB7IG90aGVyTm90ZXMsIHN1YkZvbGRlcnMgfSA9IGdldFN1YnNGcm9tRm9sZGVyKGN1cnJGb2xkZXIpO1xyXG5cclxuICAgICAgICBjb25zdCBmb2xkZXJOb3RlID0gY3VyckZvbGRlci5uYW1lO1xyXG4gICAgICAgIGNvbnN0IHRhcmdldHMgPSBvdGhlck5vdGVzLm1hcChnZXREVkJhc2VuYW1lKTtcclxuXHJcbiAgICAgICAgLy8gaWYgKCFpc0luVmF1bHQoIGZvbGRlck5vdGUsIGZvbGRlck5vdGUpKSBjb250aW51ZTtcclxuXHJcbiAgICAgICAgY29uc3Qgc291cmNlT3JkZXIgPSA5OTk5OyAvLyBnZXRTb3VyY2VPcmRlcihhbHRGaWxlKTtcclxuICAgICAgICBjb25zdCB0YXJnZXRPcmRlciA9IDk5OTk7IC8vICBnZXRUYXJnZXRPcmRlcihmcm9udG1zLCBiYXNlbmFtZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHBhcmVudEZvbGRlck5vdGUgPSBjdXJyRm9sZGVyLnBhcmVudC5uYW1lO1xyXG5cclxuICAgICAgICBwb3B1bGF0ZU1haW4oXHJcbiAgICAgICAgICBzZXR0aW5ncyxcclxuICAgICAgICAgIG1haW5HLFxyXG4gICAgICAgICAgcGFyZW50Rm9sZGVyTm90ZSxcclxuICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAgZm9sZGVyTm90ZSxcclxuICAgICAgICAgIHNvdXJjZU9yZGVyLFxyXG4gICAgICAgICAgdGFyZ2V0T3JkZXIsXHJcbiAgICAgICAgICB0cnVlXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGFyZ2V0cy5mb3JFYWNoKCh0YXJnZXQpID0+IHtcclxuICAgICAgICAgIGlmICh0YXJnZXQgPT09IGZvbGRlck5vdGUpIHJldHVybjtcclxuICAgICAgICAgIGNvbnN0IHNvdXJjZU9yZGVyID0gOTk5OTsgLy8gZ2V0U291cmNlT3JkZXIoYWx0RmlsZSk7XHJcbiAgICAgICAgICBjb25zdCB0YXJnZXRPcmRlciA9IDk5OTk7IC8vICBnZXRUYXJnZXRPcmRlcihmcm9udG1zLCBiYXNlbmFtZSk7XHJcblxyXG4gICAgICAgICAgcG9wdWxhdGVNYWluKFxyXG4gICAgICAgICAgICBzZXR0aW5ncyxcclxuICAgICAgICAgICAgbWFpbkcsXHJcbiAgICAgICAgICAgIGZvbGRlck5vdGUsXHJcbiAgICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAgICB0YXJnZXQsXHJcbiAgICAgICAgICAgIHNvdXJjZU9yZGVyLFxyXG4gICAgICAgICAgICB0YXJnZXRPcmRlcixcclxuICAgICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgZm9sZGVyUXVldWUucHVzaCguLi5zdWJGb2xkZXJzKTtcclxuICAgICAgICBjdXJyRm9sZGVyID0gZm9sZGVyUXVldWUuc2hpZnQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEZpcnN0IGFkZCBvdGhlck5vdGVzIHRvIGdyYXBoXHJcblxyXG4gICAgLy8gVGhlbiBpdGVyYXRlIHN1YkZvbGRlcnMgZG9pbmcgdGhlIHNhbWVcclxuICB9KTtcclxufVxyXG4iLCAiaW1wb3J0IHR5cGUgeyBNdWx0aUdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHR5cGUgeyBURmlsZSB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgeyBnZXREVkJhc2VuYW1lLCBnZXRTZXR0aW5ncyB9IGZyb20gXCIuLi8uLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcbmltcG9ydCB0eXBlIHsgQkNTZXR0aW5ncywgSGllcmFyY2h5Tm90ZUl0ZW0gfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBhZGRFZGdlSWZOb3QsIGFkZE5vZGVzSWZOb3QgfSBmcm9tIFwiLi4vLi4vVXRpbHMvZ3JhcGhVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXRGaWVsZEluZm8sIGdldEZpZWxkcywgZ2V0T3BwRGlyLCBnZXRPcHBGaWVsZHMgfSBmcm9tIFwiLi4vLi4vVXRpbHMvSGllclV0aWxzXCI7XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0SGllcmFyY2h5Tm90ZUl0ZW1zKGZpbGU6IFRGaWxlKSB7XHJcbiAgY29uc3QgeyBsaXN0SXRlbXMgfSA9IGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKTtcclxuICBpZiAoIWxpc3RJdGVtcykgcmV0dXJuIFtdO1xyXG5cclxuICBjb25zdCBiYXNlbmFtZSA9IGdldERWQmFzZW5hbWUoZmlsZSlcclxuICBjb25zdCB7IGhpZXJhcmNoeU5vdGVJc1BhcmVudCB9ID0gZ2V0U2V0dGluZ3MoKTtcclxuXHJcbiAgY29uc3QgbGluZXMgPSAoYXdhaXQgYXBwLnZhdWx0LmNhY2hlZFJlYWQoZmlsZSkpLnNwbGl0KFwiXFxuXCIpO1xyXG5cclxuICBjb25zdCBoaWVyYXJjaHlOb3RlSXRlbXM6IEhpZXJhcmNoeU5vdGVJdGVtW10gPSBbXTtcclxuXHJcbiAgY29uc3QgYWZ0ZXJCdWxsZXRSZWcgPSBuZXcgUmVnRXhwKC9cXHMqWysqLV1cXHMoLiokKS8pO1xyXG4gIGNvbnN0IGRyb3BXaWtpTGlua3NSZWcgPSBuZXcgUmVnRXhwKC9cXFtcXFsoLio/KVxcXVxcXS8pO1xyXG4gIGNvbnN0IGZpZWxkUmVnID0gbmV3IFJlZ0V4cCgvKC4qPylcXFtcXFsuKj9cXF1cXF0vKTtcclxuXHJcbiAgZm9yIChjb25zdCBpdGVtIG9mIGxpc3RJdGVtcykge1xyXG4gICAgY29uc3QgbGluZSA9IGxpbmVzW2l0ZW0ucG9zaXRpb24uc3RhcnQubGluZV07XHJcblxyXG4gICAgY29uc3QgYWZ0ZXJCdWxsZXRDdXJyID0gYWZ0ZXJCdWxsZXRSZWcuZXhlYyhsaW5lKVsxXTtcclxuICAgIGNvbnN0IG5vdGUgPSBkcm9wV2lraUxpbmtzUmVnLmV4ZWMoYWZ0ZXJCdWxsZXRDdXJyKVsxXTtcclxuICAgIGxldCBmaWVsZCA9IGZpZWxkUmVnLmV4ZWMoYWZ0ZXJCdWxsZXRDdXJyKVsxXS50cmltKCkgfHwgbnVsbDtcclxuXHJcbiAgICBjb25zdCB7IHBhcmVudCB9ID0gaXRlbTtcclxuICAgIGlmIChwYXJlbnQgPj0gMCkge1xyXG4gICAgICBjb25zdCBwYXJlbnROb3RlID0gbGluZXNbcGFyZW50XTtcclxuICAgICAgY29uc3QgYWZ0ZXJCdWxsZXRQYXJlbnQgPSBhZnRlckJ1bGxldFJlZy5leGVjKHBhcmVudE5vdGUpWzFdO1xyXG4gICAgICBjb25zdCBkcm9wV2lraVBhcmVudCA9IGRyb3BXaWtpTGlua3NSZWcuZXhlYyhhZnRlckJ1bGxldFBhcmVudClbMV07XHJcblxyXG4gICAgICBoaWVyYXJjaHlOb3RlSXRlbXMucHVzaCh7XHJcbiAgICAgICAgbm90ZSxcclxuICAgICAgICBwYXJlbnQ6IGRyb3BXaWtpUGFyZW50LFxyXG4gICAgICAgIGZpZWxkLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGhpZXJhcmNoeU5vdGVJdGVtcy5wdXNoKHtcclxuICAgICAgICBub3RlLFxyXG4gICAgICAgIHBhcmVudDogaGllcmFyY2h5Tm90ZUlzUGFyZW50ID8gYmFzZW5hbWUgOiBudWxsLFxyXG4gICAgICAgIGZpZWxkLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGhpZXJhcmNoeU5vdGVJdGVtcztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZEhOc1RvR3JhcGgoXHJcbiAgc2V0dGluZ3M6IEJDU2V0dGluZ3MsXHJcbiAgaG5BcnI6IEhpZXJhcmNoeU5vdGVJdGVtW10sXHJcbiAgbWFpbkc6IE11bHRpR3JhcGhcclxuKSB7XHJcbiAgY29uc3QgeyBITlVwRmllbGQsIHVzZXJIaWVycyB9ID0gc2V0dGluZ3M7XHJcbiAgY29uc3QgdXBGaWVsZHMgPSBnZXRGaWVsZHModXNlckhpZXJzLCBcInVwXCIpO1xyXG5cclxuICBobkFyci5mb3JFYWNoKChobkl0ZW0sIGkpID0+IHtcclxuICAgIGNvbnN0IHsgbm90ZSwgZmllbGQsIHBhcmVudCB9ID0gaG5JdGVtO1xyXG5cclxuICAgIGNvbnN0IHRhcmdldEZpZWxkID0gZmllbGQgPz8gKEhOVXBGaWVsZCB8fCB1cEZpZWxkc1swXSk7XHJcbiAgICBjb25zdCBkaXIgPSBnZXRGaWVsZEluZm8odXNlckhpZXJzLCB0YXJnZXRGaWVsZCk/LmZpZWxkRGlyO1xyXG4gICAgY29uc3Qgb3BwRGlyID0gZ2V0T3BwRGlyKGRpcik7XHJcbiAgICBjb25zdCBvcHBGaWVsZCA9IGdldE9wcEZpZWxkcyh1c2VySGllcnMsIHRhcmdldEZpZWxkLCBkaXIpWzBdO1xyXG5cclxuICAgIGlmIChwYXJlbnQgPT09IG51bGwpIHtcclxuICAgICAgY29uc3QgcyA9IG5vdGU7XHJcbiAgICAgIGNvbnN0IHQgPSBobkFycltpICsgMV0/Lm5vdGU7XHJcblxyXG4gICAgICBhZGROb2Rlc0lmTm90KG1haW5HLCBbcywgdF0pO1xyXG4gICAgICBhZGRFZGdlSWZOb3QobWFpbkcsIHMsIHQsIHsgZGlyOiBvcHBEaXIsIGZpZWxkOiBvcHBGaWVsZCB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFkZE5vZGVzSWZOb3QobWFpbkcsIFtub3RlLCBwYXJlbnRdKTtcclxuICAgICAgaWYgKHNldHRpbmdzLnNob3dVcEluSnVnZ2wpIHtcclxuICAgICAgICBhZGRFZGdlSWZOb3QobWFpbkcsIG5vdGUsIHBhcmVudCwge1xyXG4gICAgICAgICAgZGlyLFxyXG4gICAgICAgICAgZmllbGQ6IHRhcmdldEZpZWxkLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBhZGRFZGdlSWZOb3QobWFpbkcsIHBhcmVudCwgbm90ZSwge1xyXG4gICAgICAgIGRpcjogb3BwRGlyLFxyXG4gICAgICAgIGZpZWxkOiBvcHBGaWVsZCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB0eXBlIHsgTXVsdGlHcmFwaCB9IGZyb20gXCJncmFwaG9sb2d5XCI7XHJcbmltcG9ydCB7IHBhcnNlVHlwZWRMaW5rIH0gZnJvbSBcImp1Z2dsLWFwaVwiO1xyXG5pbXBvcnQgdHlwZSB7IFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IHNwbGl0TGlua3NSZWdleCB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHR5cGUgeyBCQ1NldHRpbmdzLCBkdkZyb250bWF0dGVyQ2FjaGUsIEp1Z2dsTGluayB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IGdldFRhcmdldE9yZGVyLCBwb3B1bGF0ZU1haW4gfSBmcm9tIFwiLi4vVXRpbHMvZ3JhcGhVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXRGaWVsZEluZm8sIGdldEZpZWxkcyB9IGZyb20gXCIuLi9VdGlscy9IaWVyVXRpbHNcIjtcclxuXHJcbi8vIFRPRE8gSSB0aGluayBpdCdkIGJlIGJldHRlciB0byBkbyB0aGlzIHdob2xlIHRoaW5nIGFzIGFuIG9iaiBpbnN0ZWFkIG9mIEp1Z2dsTGlua1tdXHJcbi8vID0+IHtbbm90ZTogc3RyaW5nXToge3R5cGU6IHN0cmluZywgbGlua3NJbkxpbmU6IHN0cmluZ1tdfVtdfVxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0SnVnZ2xMaW5rcyhcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIGZpbGVzOiBURmlsZVtdXHJcbik6IFByb21pc2U8SnVnZ2xMaW5rW10+IHtcclxuICBjb25zdCB7IHNldHRpbmdzLCBkYiB9ID0gcGx1Z2luO1xyXG4gIGRiLnN0YXJ0MkcoXCJnZXRKdWdnbExpbmtzXCIpO1xyXG5cclxuICBjb25zdCB7IHVzZXJIaWVycyB9ID0gc2V0dGluZ3M7XHJcblxyXG4gIC8vIEFkZCBKdWdnbCBsaW5rc1xyXG4gIGNvbnN0IHR5cGVkTGlua3NBcnI6IEp1Z2dsTGlua1tdID0gYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICBmaWxlcy5tYXAoYXN5bmMgKGZpbGUpID0+IHtcclxuICAgICAgY29uc3QganVnZ2xMaW5rOiBKdWdnbExpbmsgPSB7IGZpbGUsIGxpbmtzOiBbXSB9O1xyXG5cclxuICAgICAgLy8gVXNlIE9icyBtZXRhZGF0YWNhY2hlIHRvIGdldCB0aGUgbGlua3MgaW4gdGhlIGN1cnJlbnQgZmlsZVxyXG4gICAgICBjb25zdCBsaW5rcyA9IGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKT8ubGlua3MgPz8gW107XHJcblxyXG4gICAgICBjb25zdCBjb250ZW50ID0gbGlua3MubGVuZ3RoID8gYXdhaXQgYXBwLnZhdWx0LmNhY2hlZFJlYWQoZmlsZSkgOiBcIlwiO1xyXG4gICAgICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoXCJcXG5cIik7XHJcblxyXG4gICAgICBsaW5rcy5mb3JFYWNoKChsaW5rKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbGluZU5vID0gbGluay5wb3NpdGlvbi5zdGFydC5saW5lO1xyXG4gICAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1tsaW5lTm9dO1xyXG5cclxuICAgICAgICAvLyBDaGVjayB0aGUgbGluZSBmb3Igd2lraWxpbmtzLCBhbmQgcmV0dXJuIGFuIGFycmF5IG9mIGxpbmsuaW5uZXJUZXh0XHJcbiAgICAgICAgY29uc3QgbGlua3NJbkxpbmUgPVxyXG4gICAgICAgICAgbGluZVxyXG4gICAgICAgICAgICAubWF0Y2goc3BsaXRMaW5rc1JlZ2V4KVxyXG4gICAgICAgICAgICA/Lm1hcCgobGluaykgPT4gbGluay5zbGljZSgyLCBsaW5rLmxlbmd0aCAtIDIpKVxyXG4gICAgICAgICAgICA/Lm1hcCgoaW5uZXJUZXh0KSA9PiBpbm5lclRleHQuc3BsaXQoXCJ8XCIpWzBdKSA/PyBbXTtcclxuXHJcbiAgICAgICAgY29uc3QgdHlwZWRMaW5rUHJlZml4ID1cclxuICAgICAgICAgIGFwcC5wbHVnaW5zLnBsdWdpbnMuanVnZ2w/LnNldHRpbmdzLnR5cGVkTGlua1ByZWZpeCA/PyBcIi1cIjtcclxuXHJcbiAgICAgICAgY29uc3QgcGFyc2VkTGlua3MgPSBwYXJzZVR5cGVkTGluayhsaW5rLCBsaW5lLCB0eXBlZExpbmtQcmVmaXgpO1xyXG5cclxuICAgICAgICBjb25zdCBmaWVsZCA9IHBhcnNlZExpbmtzPy5wcm9wZXJ0aWVzPy50eXBlID8/IFwiXCI7XHJcbiAgICAgICAgaWYgKGZpZWxkID09PSBcIlwiKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgeyBmaWVsZERpciB9ID0gZ2V0RmllbGRJbmZvKHVzZXJIaWVycywgZmllbGQpIHx8IHt9O1xyXG4gICAgICAgIGlmICghZmllbGREaXIpIHJldHVybjtcclxuXHJcbiAgICAgICAganVnZ2xMaW5rLmxpbmtzLnB1c2goe1xyXG4gICAgICAgICAgZGlyOiBmaWVsZERpcixcclxuICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAgbGlua3NJbkxpbmUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4ganVnZ2xMaW5rO1xyXG4gICAgfSlcclxuICApO1xyXG5cclxuICBjb25zdCBhbGxGaWVsZHMgPSBnZXRGaWVsZHModXNlckhpZXJzKTtcclxuXHJcbiAgY29uc3QgZmlsdGVyZWRMaW5rcyA9IHR5cGVkTGlua3NBcnIubWFwKChqdWdnbExpbmspID0+IHtcclxuICAgIC8vIEZpbHRlciBvdXQgbGlua3Mgd2hvc2UgdHlwZSBpcyBub3QgaW4gYWxsRmllbGRzXHJcbiAgICBqdWdnbExpbmsubGlua3MgPSBqdWdnbExpbmsubGlua3MuZmlsdGVyKChsaW5rKSA9PlxyXG4gICAgICBhbGxGaWVsZHMuaW5jbHVkZXMobGluay5maWVsZClcclxuICAgICk7XHJcbiAgICByZXR1cm4ganVnZ2xMaW5rO1xyXG4gIH0pO1xyXG4gIGRiLmVuZDJHKHsgZmlsdGVyZWRMaW5rcyB9KTtcclxuICByZXR1cm4gZmlsdGVyZWRMaW5rcztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZEp1Z2dsTGlua3NUb0dyYXBoKFxyXG4gIHNldHRpbmdzOiBCQ1NldHRpbmdzLFxyXG4gIGp1Z2dsTGlua3M6IEp1Z2dsTGlua1tdLFxyXG4gIGZyb250bXM6IGR2RnJvbnRtYXR0ZXJDYWNoZVtdLFxyXG4gIG1haW5HOiBNdWx0aUdyYXBoXHJcbikge1xyXG4gIGp1Z2dsTGlua3MuZm9yRWFjaCgoanVnZ2xMaW5rKSA9PiB7XHJcbiAgICBjb25zdCB7IGJhc2VuYW1lIH0gPSBqdWdnbExpbmsuZmlsZTtcclxuICAgIGp1Z2dsTGluay5saW5rcy5mb3JFYWNoKChsaW5rKSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgZGlyLCBmaWVsZCwgbGlua3NJbkxpbmUgfSA9IGxpbms7XHJcbiAgICAgIGlmIChkaXIgPT09IFwiXCIpIHJldHVybjtcclxuICAgICAgY29uc3Qgc291cmNlT3JkZXIgPSBnZXRUYXJnZXRPcmRlcihmcm9udG1zLCBiYXNlbmFtZSk7XHJcbiAgICAgIGxpbmtzSW5MaW5lLmZvckVhY2goKGxpbmtJbkxpbmUpID0+IHtcclxuICAgICAgICAvLyBJcyB0aGlzIGEgYnVnPyBXaHkgbm90IGBnZXRTb3VyY2VPcmRlcmA/XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0c09yZGVyID0gZ2V0VGFyZ2V0T3JkZXIoZnJvbnRtcywgbGlua0luTGluZSk7XHJcblxyXG4gICAgICAgIHBvcHVsYXRlTWFpbihcclxuICAgICAgICAgIHNldHRpbmdzLFxyXG4gICAgICAgICAgbWFpbkcsXHJcbiAgICAgICAgICBiYXNlbmFtZSxcclxuICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAgbGlua0luTGluZSxcclxuICAgICAgICAgIHNvdXJjZU9yZGVyLFxyXG4gICAgICAgICAgdGFyZ2V0c09yZGVyXHJcbiAgICAgICAgKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9KTtcclxufVxyXG4iLCAiaW1wb3J0IHR5cGUgeyBNdWx0aUdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHsgQkNfTElOS19OT1RFIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgdHlwZSB7IGR2RnJvbnRtYXR0ZXJDYWNoZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7XHJcbiAgZ2V0U291cmNlT3JkZXIsXHJcbiAgZ2V0VGFyZ2V0T3JkZXIsXHJcbiAgcG9wdWxhdGVNYWluLFxyXG59IGZyb20gXCIuLi9VdGlscy9ncmFwaFV0aWxzXCI7XHJcbmltcG9ydCB7IGdldEZpZWxkcyB9IGZyb20gXCIuLi9VdGlscy9IaWVyVXRpbHNcIjtcclxuaW1wb3J0IHsgZ2V0RFZCYXNlbmFtZSB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkTGlua05vdGVzVG9HcmFwaChcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIGVsaWdhYmxlQWx0czogZHZGcm9udG1hdHRlckNhY2hlW10sXHJcbiAgZnJvbnRtczogZHZGcm9udG1hdHRlckNhY2hlW10sXHJcbiAgbWFpbkc6IE11bHRpR3JhcGhcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgdXNlckhpZXJzIH0gPSBzZXR0aW5ncztcclxuICBjb25zdCBmaWVsZHMgPSBnZXRGaWVsZHModXNlckhpZXJzKTtcclxuICBlbGlnYWJsZUFsdHMuZm9yRWFjaCgoYWx0RmlsZSkgPT4ge1xyXG4gICAgY29uc3QgbGlua05vdGVGaWxlID0gYWx0RmlsZS5maWxlO1xyXG4gICAgY29uc3QgbGlua05vdGVCYXNlbmFtZSA9IGdldERWQmFzZW5hbWUobGlua05vdGVGaWxlKTtcclxuXHJcbiAgICBsZXQgZmllbGQgPSBhbHRGaWxlW0JDX0xJTktfTk9URV0gYXMgc3RyaW5nO1xyXG4gICAgaWYgKHR5cGVvZiBmaWVsZCAhPT0gXCJzdHJpbmdcIiB8fCAhZmllbGRzLmluY2x1ZGVzKGZpZWxkKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGxpbmtzID0gYXBwLm1ldGFkYXRhQ2FjaGVcclxuICAgICAgLmdldEZpbGVDYWNoZShsaW5rTm90ZUZpbGUpXHJcbiAgICAgID8ubGlua3M/Lm1hcCgobCkgPT4gbC5saW5rLm1hdGNoKC9bXiN8XSsvKVswXSk7XHJcblxyXG4gICAgY29uc3QgZW1iZWRzID0gYXBwLm1ldGFkYXRhQ2FjaGVcclxuICAgICAgLmdldEZpbGVDYWNoZShsaW5rTm90ZUZpbGUpXHJcbiAgICAgID8uZW1iZWRzPy5tYXAoKGwpID0+IGwubGluay5tYXRjaCgvW14jfF0rLylbMF0pO1xyXG5cclxuICAgIGNvbnN0IHRhcmdldHMgPSBbLi4uKGxpbmtzID8/IFtdKSwgLi4uKGVtYmVkcyA/PyBbXSldO1xyXG5cclxuICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIHRhcmdldHMpIHtcclxuICAgICAgY29uc3Qgc291cmNlT3JkZXIgPSBnZXRTb3VyY2VPcmRlcihhbHRGaWxlKTtcclxuICAgICAgY29uc3QgdGFyZ2V0T3JkZXIgPSBnZXRUYXJnZXRPcmRlcihmcm9udG1zLCBsaW5rTm90ZUJhc2VuYW1lKTtcclxuICAgICAgcG9wdWxhdGVNYWluKFxyXG4gICAgICAgIHNldHRpbmdzLFxyXG4gICAgICAgIG1haW5HLFxyXG4gICAgICAgIGxpbmtOb3RlQmFzZW5hbWUsXHJcbiAgICAgICAgZmllbGQsXHJcbiAgICAgICAgdGFyZ2V0LFxyXG4gICAgICAgIHNvdXJjZU9yZGVyLFxyXG4gICAgICAgIHRhcmdldE9yZGVyLFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG4iLCAiaW1wb3J0IHR5cGUgeyBNdWx0aUdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHsgaW5mbyB9IGZyb20gXCJsb2dsZXZlbFwiO1xyXG5pbXBvcnQgeyBCQ19JR05PUkUsIEJDX1JFR0VYX05PVEUsIEJDX1JFR0VYX05PVEVfRklFTEQgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB0eXBlIHsgZHZGcm9udG1hdHRlckNhY2hlIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHsgc3RyVG9SZWdleCB9IGZyb20gXCIuLi9VdGlscy9nZW5lcmFsVXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBnZXRTb3VyY2VPcmRlcixcclxuICBnZXRUYXJnZXRPcmRlcixcclxuICBwb3B1bGF0ZU1haW4sXHJcbn0gZnJvbSBcIi4uL1V0aWxzL2dyYXBoVXRpbHNcIjtcclxuaW1wb3J0IHsgZ2V0RmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXREVkJhc2VuYW1lIH0gZnJvbSBcIi4uL1V0aWxzL09ic2lkaWFuVXRpbHNcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRSZWdleE5vdGVzVG9HcmFwaChcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIGVsaWdhYmxlQWx0czogZHZGcm9udG1hdHRlckNhY2hlW10sXHJcbiAgZnJvbnRtczogZHZGcm9udG1hdHRlckNhY2hlW10sXHJcbiAgbWFpbkc6IE11bHRpR3JhcGhcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgdXNlckhpZXJzLCByZWdleE5vdGVGaWVsZCB9ID0gc2V0dGluZ3M7XHJcbiAgY29uc3QgZmllbGRzID0gZ2V0RmllbGRzKHVzZXJIaWVycyk7XHJcblxyXG4gIGVsaWdhYmxlQWx0cy5mb3JFYWNoKChhbHRGaWxlKSA9PiB7XHJcbiAgICBjb25zdCByZWdleE5vdGVGaWxlID0gYWx0RmlsZS5maWxlO1xyXG4gICAgY29uc3QgcmVnZXhOb3RlQmFzZW5hbWUgPSBnZXREVkJhc2VuYW1lKHJlZ2V4Tm90ZUZpbGUpO1xyXG5cclxuICAgIGNvbnN0IHJlZ2V4ID0gc3RyVG9SZWdleChhbHRGaWxlW0JDX1JFR0VYX05PVEVdIGFzIHN0cmluZyk7XHJcbiAgICBpbmZvKHsgcmVnZXggfSk7XHJcblxyXG4gICAgbGV0IGZpZWxkID0gYWx0RmlsZVtCQ19SRUdFWF9OT1RFX0ZJRUxEXSBhcyBzdHJpbmc7XHJcbiAgICBpZiAodHlwZW9mIGZpZWxkICE9PSBcInN0cmluZ1wiIHx8ICFmaWVsZHMuaW5jbHVkZXMoZmllbGQpKVxyXG4gICAgICBmaWVsZCA9IHJlZ2V4Tm90ZUZpZWxkIHx8IGZpZWxkc1swXTtcclxuXHJcbiAgICBjb25zdCB0YXJnZXRzID0gW107XHJcbiAgICBmcm9udG1zLmZvckVhY2goKHBhZ2UpID0+IHtcclxuICAgICAgaWYgKHBhZ2VbQkNfSUdOT1JFXSkgcmV0dXJuO1xyXG4gICAgICBjb25zdCBiYXNlbmFtZSA9IGdldERWQmFzZW5hbWUocGFnZS5maWxlKTtcclxuICAgICAgaWYgKGJhc2VuYW1lICE9PSByZWdleE5vdGVCYXNlbmFtZSAmJiByZWdleC50ZXN0KGJhc2VuYW1lKSlcclxuICAgICAgICB0YXJnZXRzLnB1c2goYmFzZW5hbWUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZm9yIChjb25zdCB0YXJnZXQgb2YgdGFyZ2V0cykge1xyXG4gICAgICBjb25zdCBzb3VyY2VPcmRlciA9IGdldFNvdXJjZU9yZGVyKGFsdEZpbGUpO1xyXG4gICAgICBjb25zdCB0YXJnZXRPcmRlciA9IGdldFRhcmdldE9yZGVyKGZyb250bXMsIHJlZ2V4Tm90ZUJhc2VuYW1lKTtcclxuICAgICAgcG9wdWxhdGVNYWluKFxyXG4gICAgICAgIHNldHRpbmdzLFxyXG4gICAgICAgIG1haW5HLFxyXG4gICAgICAgIHJlZ2V4Tm90ZUJhc2VuYW1lLFxyXG4gICAgICAgIGZpZWxkLFxyXG4gICAgICAgIHRhcmdldCxcclxuICAgICAgICBzb3VyY2VPcmRlcixcclxuICAgICAgICB0YXJnZXRPcmRlcixcclxuICAgICAgICB0cnVlXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB0eXBlIHsgTXVsdGlHcmFwaCB9IGZyb20gXCJncmFwaG9sb2d5XCI7XHJcbmltcG9ydCB7IGluZm8gfSBmcm9tIFwibG9nbGV2ZWxcIjtcclxuaW1wb3J0IHR5cGUgeyBURmlsZSB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQge1xyXG4gIEJDX0lHTk9SRSxcclxuICBCQ19UQUdfTk9URSxcclxuICBCQ19UQUdfTk9URV9FWEFDVCxcclxuICBCQ19UQUdfTk9URV9GSUVMRCxcclxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB0eXBlIHsgZHZGcm9udG1hdHRlckNhY2hlIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHsgc3BsaXRBbmRUcmltIH0gZnJvbSBcIi4uL1V0aWxzL2dlbmVyYWxVdGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIGdldFNvdXJjZU9yZGVyLFxyXG4gIGdldFRhcmdldE9yZGVyLFxyXG4gIHBvcHVsYXRlTWFpbixcclxufSBmcm9tIFwiLi4vVXRpbHMvZ3JhcGhVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXRGaWVsZHMgfSBmcm9tIFwiLi4vVXRpbHMvSGllclV0aWxzXCI7XHJcbmltcG9ydCB7IGFkZEhhc2gsIGRyb3BIYXNoLCBnZXREVkJhc2VuYW1lIH0gZnJvbSBcIi4uL1V0aWxzL09ic2lkaWFuVXRpbHNcIjtcclxuXHJcbmNvbnN0IGdldEFsbFRhZ3MgPSAoZmlsZTogVEZpbGUsIHdpdGhIYXNoID0gdHJ1ZSk6IHN0cmluZ1tdID0+IHtcclxuICBjb25zdCB7IHRhZ3MsIGZyb250bWF0dGVyIH0gPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XHJcbiAgY29uc3QgYWxsVGFnczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgdGFncz8uZm9yRWFjaCgodCkgPT4gYWxsVGFncy5wdXNoKGRyb3BIYXNoKHQudGFnKSkpO1xyXG5cclxuICBbZnJvbnRtYXR0ZXI/LnRhZ3MgPz8gW11dLmZsYXQoKS5mb3JFYWNoKCh0OiBzdHJpbmcpID0+IHtcclxuICAgIHNwbGl0QW5kVHJpbSh0KS5mb3JFYWNoKChpbm5lclQpID0+IGFsbFRhZ3MucHVzaChkcm9wSGFzaChpbm5lclQpKSk7XHJcbiAgfSk7XHJcbiAgW2Zyb250bWF0dGVyPy50YWcgPz8gW11dLmZsYXQoKS5mb3JFYWNoKCh0OiBzdHJpbmcpID0+IHtcclxuICAgIHNwbGl0QW5kVHJpbSh0KS5mb3JFYWNoKChpbm5lclQpID0+IGFsbFRhZ3MucHVzaChkcm9wSGFzaChpbm5lclQpKSk7XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBhbGxUYWdzLm1hcCgodCkgPT4gKHdpdGhIYXNoID8gXCIjXCIgOiBcIlwiKSArIHQudG9Mb3dlckNhc2UoKSk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkVGFnTm90ZXNUb0dyYXBoKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgZWxpZ2FibGVBbHRzOiBkdkZyb250bWF0dGVyQ2FjaGVbXSxcclxuICBmcm9udG1zOiBkdkZyb250bWF0dGVyQ2FjaGVbXSxcclxuICBtYWluRzogTXVsdGlHcmFwaFxyXG4pIHtcclxuICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW47XHJcbiAgY29uc3QgeyB1c2VySGllcnMsIHRhZ05vdGVGaWVsZCB9ID0gc2V0dGluZ3M7XHJcbiAgY29uc3QgZmllbGRzID0gZ2V0RmllbGRzKHVzZXJIaWVycyk7XHJcbiAgZWxpZ2FibGVBbHRzLmZvckVhY2goKGFsdEZpbGUpID0+IHtcclxuICAgIGNvbnN0IHRhZ05vdGVGaWxlID0gYWx0RmlsZS5maWxlO1xyXG5cclxuICAgIGNvbnN0IHRhZ05vdGVCYXNlbmFtZSA9IGdldERWQmFzZW5hbWUodGFnTm90ZUZpbGUpO1xyXG4gICAgY29uc3QgdGFnID0gYWRkSGFzaCgoYWx0RmlsZVtCQ19UQUdfTk9URV0gYXMgc3RyaW5nKS50cmltKCkudG9Mb3dlckNhc2UoKSk7XHJcbiAgICBpbmZvKHsgdGFnIH0pO1xyXG5cclxuICAgIGNvbnN0IGhhc1RoaXNUYWcgPSAoZmlsZTogVEZpbGUpID0+IHtcclxuICAgICAgY29uc3QgYWxsVGFncyA9IGdldEFsbFRhZ3MoZmlsZSk7XHJcbiAgICAgIHJldHVybiBhbHRGaWxlW0JDX1RBR19OT1RFX0VYQUNUXSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgPyBhbGxUYWdzLmluY2x1ZGVzKHRhZylcclxuICAgICAgICA6IGFsbFRhZ3Muc29tZSgodCkgPT4gdC5pbmNsdWRlcyh0YWcpKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0cyA9IGZyb250bXNcclxuICAgICAgLm1hcCgoZmYpID0+IGZmLmZpbGUpXHJcbiAgICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGUucGF0aCAhPT0gdGFnTm90ZUZpbGUucGF0aCAmJiBoYXNUaGlzVGFnKGZpbGUpICYmICFmaWxlW0JDX0lHTk9SRV0pXHJcbiAgICAgIC5tYXAoZ2V0RFZCYXNlbmFtZSk7XHJcbiAgICBpbmZvKHsgdGFyZ2V0cyB9KTtcclxuXHJcbiAgICBsZXQgZmllbGQgPVxyXG4gICAgICAoYWx0RmlsZVtCQ19UQUdfTk9URV9GSUVMRF0gYXMgc3RyaW5nKSA/PyAodGFnTm90ZUZpZWxkIHx8IGZpZWxkc1swXSk7XHJcblxyXG4gICAgdGFyZ2V0cy5mb3JFYWNoKCh0YXJnZXQpID0+IHtcclxuICAgICAgY29uc3Qgc291cmNlT3JkZXIgPSBnZXRTb3VyY2VPcmRlcihhbHRGaWxlKTtcclxuICAgICAgY29uc3QgdGFyZ2V0T3JkZXIgPSBnZXRUYXJnZXRPcmRlcihmcm9udG1zLCB0YWdOb3RlQmFzZW5hbWUpO1xyXG4gICAgICBwb3B1bGF0ZU1haW4oXHJcbiAgICAgICAgc2V0dGluZ3MsXHJcbiAgICAgICAgbWFpbkcsXHJcbiAgICAgICAgdGFnTm90ZUJhc2VuYW1lLFxyXG4gICAgICAgIGZpZWxkLFxyXG4gICAgICAgIHRhcmdldCxcclxuICAgICAgICBzb3VyY2VPcmRlcixcclxuICAgICAgICB0YXJnZXRPcmRlcixcclxuICAgICAgICB0cnVlXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9KTtcclxufVxyXG4iLCAiaW1wb3J0IHR5cGUgeyBNdWx0aUdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHsgaW5mbyB9IGZyb20gXCJsb2dsZXZlbFwiO1xyXG5pbXBvcnQgeyBCQ19UUkFWRVJTRV9OT1RFIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgdHlwZSB7IGR2RnJvbnRtYXR0ZXJDYWNoZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IGRmc0FsbFBhdGhzLCBwb3B1bGF0ZU1haW4sIHJlbW92ZUN5Y2xlcyB9IGZyb20gXCIuLi9VdGlscy9ncmFwaFV0aWxzXCI7XHJcbmltcG9ydCB7IGdldEZpZWxkcyB9IGZyb20gXCIuLi9VdGlscy9IaWVyVXRpbHNcIjtcclxuaW1wb3J0IHsgZ2V0RFZCYXNlbmFtZSB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkVHJhdmVyc2VOb3Rlc1RvR3JhcGgoXHJcbiAgcGx1Z2luOiBCQ1BsdWdpbixcclxuICB0cmF2ZXJzZU5vdGVzOiBkdkZyb250bWF0dGVyQ2FjaGVbXSxcclxuICBtYWluRzogTXVsdGlHcmFwaCxcclxuICBvYnNHOiBNdWx0aUdyYXBoXHJcbikge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCB7IHVzZXJIaWVycyB9ID0gc2V0dGluZ3M7XHJcbiAgY29uc3QgZmllbGRzID0gZ2V0RmllbGRzKHVzZXJIaWVycyk7XHJcblxyXG4gIHRyYXZlcnNlTm90ZXMuZm9yRWFjaCgoYWx0RmlsZSkgPT4ge1xyXG4gICAgY29uc3QgeyBmaWxlIH0gPSBhbHRGaWxlO1xyXG4gICAgY29uc3QgYmFzZW5hbWUgPSBnZXREVkJhc2VuYW1lKGZpbGUpO1xyXG4gICAgY29uc3Qgbm9DeWNsZXMgPSByZW1vdmVDeWNsZXMob2JzRywgYmFzZW5hbWUpO1xyXG5cclxuICAgIGxldCBmaWVsZCA9IGFsdEZpbGVbQkNfVFJBVkVSU0VfTk9URV0gYXMgc3RyaW5nO1xyXG4gICAgaWYgKHR5cGVvZiBmaWVsZCAhPT0gXCJzdHJpbmdcIiB8fCAhZmllbGRzLmluY2x1ZGVzKGZpZWxkKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGFsbFBhdGhzID0gZGZzQWxsUGF0aHMobm9DeWNsZXMsIGJhc2VuYW1lKTtcclxuICAgIGluZm8oYWxsUGF0aHMpO1xyXG4gICAgY29uc3QgcmV2ZXJzZWQgPSBbLi4uYWxsUGF0aHNdLm1hcCgocGF0aCkgPT4gcGF0aC5yZXZlcnNlKCkpO1xyXG4gICAgcmV2ZXJzZWQuZm9yRWFjaCgocGF0aCkgPT4ge1xyXG4gICAgICBwYXRoLmZvckVhY2goKG5vZGUsIGkpID0+IHtcclxuICAgICAgICBjb25zdCBuZXh0ID0gcGF0aFtpICsgMV07XHJcbiAgICAgICAgaWYgKG5leHQgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgICAgIHBvcHVsYXRlTWFpbihcclxuICAgICAgICAgIHNldHRpbmdzLFxyXG4gICAgICAgICAgbWFpbkcsXHJcbiAgICAgICAgICBub2RlLFxyXG4gICAgICAgICAgZmllbGQgYXMgc3RyaW5nLFxyXG4gICAgICAgICAgbmV4dCxcclxuICAgICAgICAgIDk5OTksXHJcbiAgICAgICAgICA5OTk5LFxyXG4gICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB0eXBlIHsgTXVsdGlHcmFwaCB9IGZyb20gXCJncmFwaG9sb2d5XCI7XHJcbmltcG9ydCB7IGFkZEVkZ2VJZk5vdCB9IGZyb20gXCIuL1V0aWxzL2dyYXBoVXRpbHNcIjtcclxuaW1wb3J0IHsgQkNfSV9BVU5ULCBCQ19JX0NPVVNJTiwgQkNfSV9QQVJFTlQsIEJDX0lfU0lCTElOR18xLCBCQ19JX1NJQkxJTkdfMiB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgdHlwZSB7IEJDU2V0dGluZ3MgfSBmcm9tIFwiLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7IGZhbGxiYWNrRmllbGQsIGdldEZpZWxkSW5mbyB9IGZyb20gXCIuL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZFNpYmxpbmdzRnJvbVNhbWVQYXJlbnQoZzogTXVsdGlHcmFwaCwgc2V0dGluZ3M6IEJDU2V0dGluZ3MpIHtcclxuICAgIGNvbnN0IHsgdXNlckhpZXJzLCB0cmVhdEN1cnJOb2RlQXNJbXBsaWVkU2libGluZyB9ID0gc2V0dGluZ3M7XHJcbiAgICBnLmZvckVhY2hOb2RlKChjdXJyTiwgYSkgPT4ge1xyXG4gICAgICAgIC8vIEZpbmQgcGFyZW50cyBvZiBjdXJyZW50IG5vZGVcclxuICAgICAgICBnLmZvckVhY2hPdXRFZGdlKGN1cnJOLCAoaywgY3Vyck5BdHRyLCBzLCBwYXJlbnROb2RlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjdXJyTkF0dHIuZGlyICE9PSBcInVwXCIpIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHsgZmllbGREaXIsIGZpZWxkSGllciB9ID0gZ2V0RmllbGRJbmZvKHVzZXJIaWVycywgY3Vyck5BdHRyLmZpZWxkKTtcclxuICAgICAgICAgICAgY29uc3QgZmllbGQgPVxyXG4gICAgICAgICAgICAgICAgZmllbGRIaWVyLnNhbWVbMF0gPz8gZmFsbGJhY2tGaWVsZChjdXJyTkF0dHIuZmllbGQsIGZpZWxkRGlyKTtcclxuXHJcbiAgICAgICAgICAgIC8vIEZpbmQgdGhlIGNoaWxkcmVuIG9mIHRob3NlIHBhcmVudHNcclxuICAgICAgICAgICAgZy5mb3JFYWNoT3V0RWRnZShwYXJlbnROb2RlLCAoaywgYSwgcywgaW1wbGllZFNpYmxpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIFNraXAgdGhlIGN1cnJlbnQgbm9kZSBpZiB0aGUgc2V0dGluZ3Mgc2F5IHRvXHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgYS5kaXIgIT09IFwiZG93blwiIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKCF0cmVhdEN1cnJOb2RlQXNJbXBsaWVkU2libGluZyAmJiBpbXBsaWVkU2libGluZyA9PT0gY3Vyck4pXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgICAgIGFkZEVkZ2VJZk5vdChnLCBjdXJyTiwgaW1wbGllZFNpYmxpbmcsIHtcclxuICAgICAgICAgICAgICAgICAgICBkaXI6IFwic2FtZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgIGltcGxpZWQ6IEJDX0lfU0lCTElOR18xLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRTaWJsaW5nc1BhcmVudElzUGFyZW50KGc6IE11bHRpR3JhcGgpIHtcclxuICAgIGcuZm9yRWFjaE5vZGUoKGN1cnJOLCBhKSA9PiB7XHJcbiAgICAgICAgLy8gRmluZCBzaWJsaW5ncyBvZiBjdXJyZW50IG5vZGVcclxuICAgICAgICBnLmZvckVhY2hPdXRFZGdlKGN1cnJOLCAoaywgY3Vyck5BdHRyLCBzLCBzaWJsaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjdXJyTkF0dHIuZGlyICE9PSBcInNhbWVcIikgcmV0dXJuO1xyXG4gICAgICAgICAgICAvLyBGaW5kIHRoZSBwYXJlbnRzIG9mIHRob3NlIHNpYmxpbmdzXHJcbiAgICAgICAgICAgIGcuZm9yRWFjaE91dEVkZ2Uoc2libGluZywgKGssIGEsIHMsIHBhcmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBkaXIsIGZpZWxkIH0gPSBhO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRpciAhPT0gXCJ1cFwiKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgICAgICAgYWRkRWRnZUlmTm90KGcsIGN1cnJOLCBwYXJlbnQsIHtcclxuICAgICAgICAgICAgICAgICAgICBkaXI6IFwidXBcIixcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZCxcclxuICAgICAgICAgICAgICAgICAgICBpbXBsaWVkOiBCQ19JX1BBUkVOVCxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG59XHJcblxyXG4vLyBUcmFuc2l0aXZlIGNsb3N1cmUgb2Ygc2libGluZ3NcclxuZXhwb3J0IGZ1bmN0aW9uIGFkZFNpYmxpbmdzRnJvbVNpYmxpbmdzKGc6IE11bHRpR3JhcGgpIHsgfVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZEF1bnRzVW5jbGVzKGc6IE11bHRpR3JhcGgpIHtcclxuICAgIGcuZm9yRWFjaE5vZGUoKGN1cnJOLCBhKSA9PiB7XHJcbiAgICAgICAgLy8gRmluZCBwYXJlbnRzIG9mIGN1cnJlbnQgbm9kZVxyXG4gICAgICAgIGcuZm9yRWFjaE91dEVkZ2UoY3Vyck4sIChrLCBjdXJyRUF0dHIsIHMsIHBhcmVudE5vZGUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGN1cnJFQXR0ci5kaXIgIT09IFwidXBcIikgcmV0dXJuO1xyXG4gICAgICAgICAgICAvLyBGaW5kIHRoZSBzaWJsaW5ncyBvZiB0aG9zZSBwYXJlbnRzXHJcbiAgICAgICAgICAgIGcuZm9yRWFjaE91dEVkZ2UocGFyZW50Tm9kZSwgKGssIGEsIHMsIHVuY2xlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYS5kaXIgIT09IFwic2FtZVwiKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgICAgICAgYWRkRWRnZUlmTm90KGcsIGN1cnJOLCB1bmNsZSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpcjogXCJ1cFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgc3RhcnRpbmcgbm9kZSdzIHBhcmVudCBmaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiBjdXJyRUF0dHIuZmllbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgaW1wbGllZDogQkNfSV9BVU5ULFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZENvdXNpbnMoZzogTXVsdGlHcmFwaCkge1xyXG4gICAgZy5mb3JFYWNoTm9kZSgoY3Vyck4sIGEpID0+IHtcclxuICAgICAgICAvLyBGaW5kIHBhcmVudHMgb2YgY3VycmVudCBub2RlXHJcbiAgICAgICAgZy5mb3JFYWNoT3V0RWRnZShjdXJyTiwgKGssIGN1cnJFQXR0ciwgcywgcGFyZW50Tm9kZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY3VyckVBdHRyLmRpciAhPT0gXCJ1cFwiKSByZXR1cm47XHJcbiAgICAgICAgICAgIC8vIEZpbmQgdGhlIHNpYmxpbmdzIG9mIHRob3NlIHBhcmVudHNcclxuICAgICAgICAgICAgZy5mb3JFYWNoT3V0RWRnZShwYXJlbnROb2RlLCAoaywgcGFyZW50U2libGluZ0F0dHIsIHMsIHVuY2xlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50U2libGluZ0F0dHIuZGlyICE9PSBcInNhbWVcIikgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgICAgIGcuZm9yRWFjaE91dEVkZ2UodW5jbGUsIChrLCBhLCBzLCBjb3VzaW4pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYS5kaXIgIT09IFwiZG93blwiIHx8IGN1cnJOID09PSBjb3VzaW4pIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYWRkRWRnZUlmTm90KGcsIGN1cnJOLCBjb3VzaW4sIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlyOiBcInNhbWVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IHBhcmVudFNpYmxpbmdBdHRyLmZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbXBsaWVkOiBCQ19JX0NPVVNJTixcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG59XHJcblxyXG4vLyBTaXMgLS0+IE1lIDwtLSBCcm9cclxuLy8gSW1wbGllczogU2lzIDwtLT4gQnJvXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRTdHJ1Y3R1cmFsRXF1aXZhbGVuY2VTaWJsaW5ncyhnOiBNdWx0aUdyYXBoKSB7XHJcbiAgICBnLmZvckVhY2hOb2RlKChjdXJyTiwgYSkgPT4ge1xyXG4gICAgICAgIGcuZm9yRWFjaEluRWRnZShjdXJyTiwgKGssIGFTaXMsIHNpcywgXykgPT4ge1xyXG4gICAgICAgICAgICBpZiAoYVNpcy5kaXIgIT09IFwic2FtZVwiKSByZXR1cm47XHJcbiAgICAgICAgICAgIGcuZm9yRWFjaEluRWRnZShjdXJyTiwgKGssIGFCcm8sIGJybywgXykgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFCcm8uZGlyICE9PSBcInNhbWVcIiB8fCBzaXMgPT09IGJybykgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFCcm8uZmllbGQgPT09IGFTaXMuZmllbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICBhZGRFZGdlSWZOb3QoZywgc2lzLCBicm8sIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlyOiBcInNhbWVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGFCcm8uZmllbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltcGxpZWQ6IEJDX0lfU0lCTElOR18yLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG59XHJcbiIsICJpbXBvcnQgdHlwZSB7IE11bHRpR3JhcGggfSBmcm9tIFwiZ3JhcGhvbG9neVwiO1xyXG5pbXBvcnQgeyBlcnJvciwgaW5mbyB9IGZyb20gXCJsb2dsZXZlbFwiO1xyXG5pbXBvcnQgeyBNYXJrZG93blZpZXcsIFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCBOZXh0UHJldiBmcm9tIFwiLi4vQ29tcG9uZW50cy9OZXh0UHJldi5zdmVsdGVcIjtcclxuaW1wb3J0IFRyYWlsR3JpZCBmcm9tIFwiLi4vQ29tcG9uZW50cy9UcmFpbEdyaWQuc3ZlbHRlXCI7XHJcbmltcG9ydCBUcmFpbFBhdGggZnJvbSBcIi4uL0NvbXBvbmVudHMvVHJhaWxQYXRoLnN2ZWx0ZVwiO1xyXG5pbXBvcnQge1xyXG4gIEJDX0hJREVfVFJBSUwsXHJcbiAgYmxhbmtSZWFsTkltcGxpZWQsXHJcbiAgSlVHR0xfVFJBSUxfREVGQVVMVFMsXHJcbiAgVFJBSUxfTEVOR1RIUyxcclxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB0eXBlIHsgQkNTZXR0aW5ncywgRWRnZUF0dHIsIFJlYWxOSW1wbGllZCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7XHJcbiAgYmZzQWxsUGF0aHMsXHJcbiAgZ2V0UmVmbGV4aXZlQ2xvc3VyZSxcclxuICBnZXRTdWJGb3JGaWVsZHMsXHJcbiAgZ2V0U3ViSW5EaXJzLFxyXG59IGZyb20gXCIuLi9VdGlscy9ncmFwaFV0aWxzXCI7XHJcbmltcG9ydCB7IGdldEZpZWxkcywgZ2V0T3BwRGlyLCBnZXRPcHBGaWVsZHMgfSBmcm9tIFwiLi4vVXRpbHMvSGllclV0aWxzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUp1Z2dsVHJhaWwgfSBmcm9tIFwiLi4vVmlzdWFsaXNhdGlvbnMvSnVnZ2xcIjtcclxuXHJcbmZ1bmN0aW9uIGdldExpbWl0ZWRUcmFpbFN1YihwbHVnaW46IEJDUGx1Z2luKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncywgbWFpbkcsIGNsb3NlZEcgfSA9IHBsdWdpbjtcclxuICBjb25zdCB7IGxpbWl0VHJhaWxDaGVja2JveGVzLCB1c2VySGllcnMgfSA9IHNldHRpbmdzO1xyXG5cclxuICBpZiAoXHJcbiAgICBnZXRGaWVsZHModXNlckhpZXJzKS5ldmVyeSgoZmllbGQpID0+IGxpbWl0VHJhaWxDaGVja2JveGVzLmluY2x1ZGVzKGZpZWxkKSlcclxuICApIHtcclxuICAgIHJldHVybiBnZXRTdWJJbkRpcnMoY2xvc2VkRywgXCJ1cFwiKTtcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc3Qgb3BwRmllbGRzID0gbGltaXRUcmFpbENoZWNrYm94ZXNcclxuICAgICAgLm1hcCgoZmllbGQpID0+IGdldE9wcEZpZWxkcyh1c2VySGllcnMsIGZpZWxkLCBcInVwXCIpPy5bMF0pXHJcbiAgICAgIC5maWx0ZXIoKGZpZWxkKSA9PiBmaWVsZCAhPT0gdW5kZWZpbmVkKTtcclxuICAgIGNvbnN0IHN1YkdyYXBoID0gZ2V0U3ViRm9yRmllbGRzKG1haW5HLCBbXHJcbiAgICAgIC4uLmxpbWl0VHJhaWxDaGVja2JveGVzLFxyXG4gICAgICAuLi5vcHBGaWVsZHMsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IGNsb3NlZCA9IGdldFJlZmxleGl2ZUNsb3N1cmUoc3ViR3JhcGgsIHVzZXJIaWVycyk7XHJcbiAgICByZXR1cm4gZ2V0U3ViSW5EaXJzKGNsb3NlZCwgXCJ1cFwiKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEJyZWFkY3J1bWJzKFxyXG4gIHNldHRpbmdzOiBCQ1NldHRpbmdzLFxyXG4gIGc6IE11bHRpR3JhcGgsXHJcbiAgY3VyckZpbGU6IFRGaWxlXHJcbik6IHN0cmluZ1tdW10gfCBudWxsIHtcclxuICBjb25zdCB7IGJhc2VuYW1lLCBleHRlbnNpb24gfSA9IGN1cnJGaWxlO1xyXG4gIGlmIChleHRlbnNpb24gIT09IFwibWRcIikgcmV0dXJuIG51bGw7XHJcblxyXG4gIGNvbnN0IGFsbFRyYWlscyA9IGJmc0FsbFBhdGhzKGcsIGJhc2VuYW1lKTtcclxuICBsZXQgZmlsdGVyZWRUcmFpbHMgPSBbLi4uYWxsVHJhaWxzXTtcclxuXHJcbiAgY29uc3QgeyBpbmRleE5vdGVzLCBzaG93QWxsUGF0aHNJZk5vbmVUb0luZGV4Tm90ZSB9ID0gc2V0dGluZ3M7XHJcbiAgLy8gRmlsdGVyIGZvciBpbmRleCBub3Rlc1xyXG4gIGlmIChcclxuICAgIC8vIFdvcmtzIGZvciBgdW5kZWZpbmVkYCBhbmQgYFwiXCJgXHJcbiAgICBpbmRleE5vdGVzWzBdICYmXHJcbiAgICBmaWx0ZXJlZFRyYWlscy5sZW5ndGhcclxuICApIHtcclxuICAgIGZpbHRlcmVkVHJhaWxzID0gZmlsdGVyZWRUcmFpbHMuZmlsdGVyKCh0cmFpbCkgPT5cclxuICAgICAgaW5kZXhOb3Rlcy5pbmNsdWRlcyh0cmFpbFswXSlcclxuICAgICk7XHJcbiAgICBpZiAoZmlsdGVyZWRUcmFpbHMubGVuZ3RoID09PSAwICYmIHNob3dBbGxQYXRoc0lmTm9uZVRvSW5kZXhOb3RlKVxyXG4gICAgICBmaWx0ZXJlZFRyYWlscyA9IFsuLi5hbGxUcmFpbHNdO1xyXG4gIH1cclxuXHJcbiAgY29uc3Qgc29ydGVkVHJhaWxzID0gZmlsdGVyZWRUcmFpbHNcclxuICAgIC5maWx0ZXIoKHRyYWlsKSA9PiB0cmFpbC5sZW5ndGggPiAwKVxyXG4gICAgLnNvcnQoKGEsIGIpID0+IGEubGVuZ3RoIC0gYi5sZW5ndGgpO1xyXG5cclxuICByZXR1cm4gc29ydGVkVHJhaWxzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXROZXh0TlByZXYocGx1Z2luOiBCQ1BsdWdpbiwgY3Vyck5vZGU6IHN0cmluZykge1xyXG4gIGNvbnN0IHsgbWFpbkcgfSA9IHBsdWdpbjtcclxuICBjb25zdCB7IHVzZXJIaWVycyB9ID0gcGx1Z2luLnNldHRpbmdzO1xyXG4gIGlmICghbWFpbkcpIHJldHVybiBudWxsO1xyXG4gIGNvbnN0IG5leHROUHJldjogUmVhbE5JbXBsaWVkID0gYmxhbmtSZWFsTkltcGxpZWQoKTtcclxuXHJcbiAgbWFpbkcuZm9yRWFjaEVkZ2UoY3Vyck5vZGUsIChrLCBhLCBzLCB0KSA9PiB7XHJcbiAgICBjb25zdCB7IGRpciwgZmllbGQsIGltcGxpZWQgfSA9IGEgYXMgRWRnZUF0dHI7XHJcbiAgICBpZiAoZGlyICE9PSBcIm5leHRcIiAmJiBkaXIgIT09IFwicHJldlwiKSByZXR1cm47XHJcbiAgICBpZiAocyA9PT0gY3Vyck5vZGUpIHtcclxuICAgICAgbmV4dE5QcmV2W2Rpcl0ucmVhbHMucHVzaCh7IGZpZWxkLCB0bzogdCwgaW1wbGllZCB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IG9wcEZpZWxkID0gZ2V0T3BwRmllbGRzKHVzZXJIaWVycywgZmllbGQsIGRpcilbMF07XHJcbiAgICAgIG5leHROUHJldltnZXRPcHBEaXIoZGlyKV0uaW1wbGllZHMucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6IG9wcEZpZWxkLFxyXG4gICAgICAgIHRvOiBzLFxyXG4gICAgICAgIGltcGxpZWQsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBuZXh0TlByZXY7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFpbExlbmd0aChjdXJyOiBzdHJpbmcsIG9mZnNldDogbnVtYmVyID0gMSkge1xyXG4gIGNvbnN0IGluZGV4ID1cclxuICAgIChUUkFJTF9MRU5HVEhTLmluZGV4T2YoY3VycikgKyBvZmZzZXQpICUgVFJBSUxfTEVOR1RIUy5sZW5ndGg7XHJcbiAgcmV0dXJuIFRSQUlMX0xFTkdUSFNbaW5kZXggPCAwID8gVFJBSUxfTEVOR1RIUy5sZW5ndGggKyBpbmRleCA6IGluZGV4XTtcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRyYXdUcmFpbChwbHVnaW46IEJDUGx1Z2luKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHsgc2V0dGluZ3MsIGRiLCBtYWluRyB9ID0gcGx1Z2luO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzaG93QkNzLFxyXG4gICAgICBub1BhdGhNZXNzYWdlLFxyXG4gICAgICByZXNwZWN0UmVhZGFibGVMaW5lTGVuZ3RoLFxyXG4gICAgICBzaG93VHJhaWwsXHJcbiAgICAgIHNob3dHcmlkLFxyXG4gICAgICBzaG93SnVnZ2wsXHJcbiAgICAgIHNob3dQcmV2TmV4dCxcclxuICAgICAgc2hvd0JDc0luRWRpdExQTW9kZSxcclxuICAgIH0gPSBzZXR0aW5ncztcclxuXHJcbiAgICBkYi5zdGFydDJHKFwiZHJhd1RyYWlsXCIpO1xyXG5cclxuICAgIGNvbnN0IGFjdGl2ZU1EVmlldyA9IGFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlVmlld09mVHlwZShNYXJrZG93blZpZXcpO1xyXG4gICAgY29uc3QgbW9kZSA9IGFjdGl2ZU1EVmlldz8uZ2V0TW9kZSgpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgIXNob3dCQ3MgfHxcclxuICAgICAgIWFjdGl2ZU1EVmlldyB8fFxyXG4gICAgICAobW9kZSAhPT0gXCJwcmV2aWV3XCIgJiYgIXNob3dCQ3NJbkVkaXRMUE1vZGUpXHJcbiAgICApIHtcclxuICAgICAgYWN0aXZlTURWaWV3Py5jb250YWluZXJFbC5xdWVyeVNlbGVjdG9yKFwiLkJDLXRyYWlsXCIpPy5yZW1vdmUoKTtcclxuICAgICAgcmV0dXJuIGRiLmVuZDJHKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgeyBmaWxlIH0gPSBhY3RpdmVNRFZpZXc7XHJcbiAgICBjb25zdCB7IGZyb250bWF0dGVyIH0gPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSkgPz8ge307XHJcblxyXG5cclxuICAgIGlmIChmcm9udG1hdHRlcj8uW0JDX0hJREVfVFJBSUxdIHx8IGZyb250bWF0dGVyPy5bXCJrYW5iYW4tcGx1Z2luXCJdKSByZXR1cm4gZGIuZW5kMkcoKTtcclxuXHJcbiAgICBjb25zdCB7IGJhc2VuYW1lIH0gPSBmaWxlO1xyXG4gICAgaWYgKCFtYWluRy5oYXNOb2RlKGJhc2VuYW1lKSkgcmV0dXJuIGRiLmVuZDJHKCk7XHJcblxyXG4gICAgY29uc3QgdmlldyA9XHJcbiAgICAgIG1vZGUgPT09IFwicHJldmlld1wiXHJcbiAgICAgICAgPyBhY3RpdmVNRFZpZXcucHJldmlld01vZGUuY29udGFpbmVyRWwucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAgIFwiZGl2Lm1hcmtkb3duLXByZXZpZXctdmlld1wiXHJcbiAgICAgICAgKVxyXG4gICAgICAgIDogYWN0aXZlTURWaWV3LmNvbnRlbnRFbC5xdWVyeVNlbGVjdG9yKFwiZGl2Lm1hcmtkb3duLXNvdXJjZS12aWV3XCIpO1xyXG5cclxuICAgIGFjdGl2ZU1EVmlldy5jb250YWluZXJFbFxyXG4gICAgICAucXVlcnlTZWxlY3RvckFsbChcIi5CQy10cmFpbFwiKVxyXG4gICAgICA/LmZvckVhY2goKHRyYWlsKSA9PiB0cmFpbC5yZW1vdmUoKSk7XHJcblxyXG4gICAgY29uc3QgY2xvc2VkVXAgPSBnZXRMaW1pdGVkVHJhaWxTdWIocGx1Z2luKTtcclxuICAgIGNvbnN0IHNvcnRlZFRyYWlscyA9IGdldEJyZWFkY3J1bWJzKHNldHRpbmdzLCBjbG9zZWRVcCwgZmlsZSk7XHJcbiAgICBpbmZvKHsgc29ydGVkVHJhaWxzIH0pO1xyXG5cclxuICAgIGNvbnN0IHtcclxuICAgICAgbmV4dDogeyByZWFsczogck5leHQsIGltcGxpZWRzOiBpTmV4dCB9LFxyXG4gICAgICBwcmV2OiB7IHJlYWxzOiByUHJldiwgaW1wbGllZHM6IGlQcmV2IH0sXHJcbiAgICB9ID0gZ2V0TmV4dE5QcmV2KHBsdWdpbiwgYmFzZW5hbWUpO1xyXG5cclxuICAgIC8vIFJlbW92ZSBkdXBsaWNhdGUgaW1wbGllZFxyXG4gICAgY29uc3QgbmV4dCA9IFsuLi5yTmV4dF07XHJcbiAgICBpTmV4dC5mb3JFYWNoKChpKSA9PiB7XHJcbiAgICAgIGlmIChuZXh0LmZpbmRJbmRleCgobikgPT4gbi50byA9PT0gaS50bykgPT09IC0xKVxyXG4gICAgICAgIG5leHQucHVzaChpKVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBwcmV2ID0gWy4uLnJQcmV2XTtcclxuICAgIGlQcmV2LmZvckVhY2goKGkpID0+IHtcclxuICAgICAgaWYgKHByZXYuZmluZEluZGV4KChuKSA9PiBuLnRvID09PSBpLnRvKSA9PT0gLTEpXHJcbiAgICAgICAgcHJldi5wdXNoKGkpXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBub0l0ZW1zID0gIXNvcnRlZFRyYWlscy5sZW5ndGggJiYgIW5leHQubGVuZ3RoICYmICFwcmV2Lmxlbmd0aDtcclxuXHJcbiAgICBpZiAobm9JdGVtcyAmJiBub1BhdGhNZXNzYWdlID09PSBcIlwiKSByZXR1cm4gZGIuZW5kMkcoKTtcclxuXHJcbiAgICBjb25zdCBzZWxlY3RvckZvck1heFdpZHRoID1cclxuICAgICAgbW9kZSA9PT0gXCJwcmV2aWV3XCJcclxuICAgICAgICA/IFwiLm1hcmtkb3duLXByZXZpZXctdmlldy5pcy1yZWFkYWJsZS1saW5lLXdpZHRoIC5tYXJrZG93bi1wcmV2aWV3LXNpemVyXCJcclxuICAgICAgICA6IFwiXCI7XHJcblxyXG4gICAgY29uc3QgZWxGb3JNYXhXaWR0aCA9XHJcbiAgICAgIHNlbGVjdG9yRm9yTWF4V2lkdGggIT09IFwiXCJcclxuICAgICAgICA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3JGb3JNYXhXaWR0aClcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBtYXhfd2lkdGggPSBlbEZvck1heFdpZHRoXHJcbiAgICAgID8gZ2V0Q29tcHV0ZWRTdHlsZShlbEZvck1heFdpZHRoKS5nZXRQcm9wZXJ0eVZhbHVlKFwibWF4LXdpZHRoXCIpXHJcbiAgICAgIDogXCIxMDAlXCI7XHJcblxyXG4gICAgY29uc3QgdHJhaWxEaXYgPSBjcmVhdGVEaXYoe1xyXG4gICAgICBjbHM6IGBCQy10cmFpbCAke3Jlc3BlY3RSZWFkYWJsZUxpbmVMZW5ndGhcclxuICAgICAgICA/IFwiaXMtcmVhZGFibGUtbGluZS13aWR0aCBtYXJrZG93bi1wcmV2aWV3LXNpemVyIG1hcmtkb3duLXByZXZpZXctc2VjdGlvblwiXHJcbiAgICAgICAgOiBcIlwiXHJcbiAgICAgICAgfWAsXHJcbiAgICAgIGF0dHI6IHtcclxuICAgICAgICBzdHlsZTpcclxuICAgICAgICAgIChtb2RlICE9PSBcInByZXZpZXdcIiA/IGBtYXgtd2lkdGg6ICR7bWF4X3dpZHRofTtgIDogXCJcIikgK1xyXG4gICAgICAgICAgXCJtYXJnaW46IDAgYXV0bztcIiArXHJcbiAgICAgICAgICBgJHtyZXNwZWN0UmVhZGFibGVMaW5lTGVuZ3RoXHJcbiAgICAgICAgICAgID8gJ3dpZHRoOiB2YXIoLS1maWxlLWxpbmUtd2lkdGgpOydcclxuICAgICAgICAgICAgOiAnd2lkdGg6IDEwMCUnfWAsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICBwbHVnaW4udmlzaXRlZC5wdXNoKFtmaWxlLnBhdGgsIHRyYWlsRGl2XSk7XHJcblxyXG4gICAgaWYgKG1vZGUgPT09IFwicHJldmlld1wiKSB7XHJcbiAgICAgIHZpZXcucXVlcnlTZWxlY3RvcihcImRpdi5tYXJrZG93bi1wcmV2aWV3LXNpemVyXCIpLmJlZm9yZSh0cmFpbERpdik7XHJcblxyXG4gICAgICAvLyBjb25zdCBiYW5uZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcub2JzaWRpYW4tYmFubmVyLXdyYXBwZXInKVxyXG4gICAgICAvLyBpZiAoYmFubmVyKSB7XHJcbiAgICAgIC8vICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgLy8gICAgIGNvbnN0IGJhbm5lck1hcmdpbiA9IGdldENvbXB1dGVkU3R5bGUoYmFubmVyKS5tYXJnaW5Ub3BcclxuICAgICAgLy8gICAgIGNvbnNvbGUubG9nKGJhbm5lck1hcmdpbilcclxuICAgICAgLy8gICAgIHRyYWlsRGl2LnN0eWxlLm1hcmdpblRvcCA9IGJhbm5lck1hcmdpbjtcclxuICAgICAgLy8gICAgIGJhbm5lci5zdHlsZS5tYXJnaW5Ub3AgPSAnMHB4J1xyXG4gICAgICAvLyAgIH0pXHJcbiAgICAgIC8vIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGNtR3V0dGVyID0gdmlldy5xdWVyeVNlbGVjdG9yKFwiZGl2LmNtLWd1dHRlcnNcIik7XHJcbiAgICAgIGlmIChjbUd1dHRlcikge1xyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBndXR0ZXJIZWlnaHQgPSB0cmFpbERpdi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XHJcbiAgICAgICAgICAvLyBzZXQgcGFkZGluZyB0b3Agb2YgZ3V0dGVyIHRvIG1hdGNoIGhlaWdodCBvZiB0cmFpbERpdlxyXG4gICAgICAgICAgY21HdXR0ZXIuc3R5bGUucGFkZGluZ1RvcCA9IGAke2d1dHRlckhlaWdodCArIDR9cHhgO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBjb25zdCBiYW5uZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcub2JzaWRpYW4tYmFubmVyLXNwYWNlcicpXHJcbiAgICAgIC8vIGlmIChiYW5uZXIpIHtcclxuICAgICAgLy8gICBjb25zb2xlLmxvZyh7IGJhbm5lciB9KVxyXG4gICAgICAvLyAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgIC8vICAgICBjb25zdCBiYW5uZXJNYXJnaW4gPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGJhbm5lcikuaGVpZ2h0KVxyXG4gICAgICAvLyAgICAgY29uc29sZS5sb2coYmFubmVyTWFyZ2luKVxyXG4gICAgICAvLyAgICAgdHJhaWxEaXYuc3R5bGUubWFyZ2luVG9wID0gYCR7YmFubmVyTWFyZ2luICsgMTB9cHhgO1xyXG4gICAgICAvLyAgICAgYmFubmVyLnN0eWxlLmhlaWdodCA9ICcwcHgnXHJcbiAgICAgIC8vICAgfSlcclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgdmlldy5xdWVyeVNlbGVjdG9yKFwiZGl2LmNtLWNvbnRlbnRDb250YWluZXJcIik/LmJlZm9yZSh0cmFpbERpdilcclxuXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRyYWlsRGl2LmVtcHR5KCk7XHJcbiAgICBpZiAoc2V0dGluZ3MuaW5kZXhOb3Rlcy5pbmNsdWRlcyhiYXNlbmFtZSkpIHtcclxuICAgICAgdHJhaWxEaXYuaW5uZXJUZXh0ID0gXCJJbmRleCBOb3RlXCI7XHJcbiAgICAgIHJldHVybiBkYi5lbmQyRygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChub0l0ZW1zKSB7XHJcbiAgICAgIHRyYWlsRGl2LmlubmVyVGV4dCA9IG5vUGF0aE1lc3NhZ2U7XHJcbiAgICAgIHJldHVybiBkYi5lbmQyRygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRhcmdldFByb3BzID0ge1xyXG4gICAgICB0YXJnZXQ6IHRyYWlsRGl2LFxyXG4gICAgICBwcm9wczogeyBzb3J0ZWRUcmFpbHMsIHBsdWdpbiB9LFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoc2hvd1RyYWlsICYmIHNvcnRlZFRyYWlscy5sZW5ndGgpIG5ldyBUcmFpbFBhdGgodGFyZ2V0UHJvcHMpO1xyXG4gICAgaWYgKHNob3dHcmlkICYmIHNvcnRlZFRyYWlscy5sZW5ndGgpIG5ldyBUcmFpbEdyaWQodGFyZ2V0UHJvcHMpO1xyXG4gICAgaWYgKHNob3dQcmV2TmV4dCAmJiAobmV4dC5sZW5ndGggfHwgcHJldi5sZW5ndGgpKSB7XHJcbiAgICAgIG5ldyBOZXh0UHJldih7XHJcbiAgICAgICAgdGFyZ2V0OiB0cmFpbERpdixcclxuICAgICAgICBwcm9wczogeyBwbHVnaW4sIG5leHQsIHByZXYgfSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoc2hvd0p1Z2dsICYmIHNvcnRlZFRyYWlscy5sZW5ndGgpIHtcclxuICAgICAgY3JlYXRlSnVnZ2xUcmFpbChcclxuICAgICAgICBwbHVnaW4sXHJcbiAgICAgICAgdHJhaWxEaXYsXHJcbiAgICAgICAgc29ydGVkVHJhaWxzLFxyXG4gICAgICAgIGJhc2VuYW1lLFxyXG4gICAgICAgIEpVR0dMX1RSQUlMX0RFRkFVTFRTXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBkYi5lbmQyRygpO1xyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgZXJyb3IoZXJyKTtcclxuICAgIHBsdWdpbi5kYi5lbmQyRygpO1xyXG4gIH1cclxufVxyXG4iLCBudWxsLCAiPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuICBpbXBvcnQgeyBvcGVuT3JTd2l0Y2gsIGhvdmVyUHJldmlldyB9IGZyb20gXCJvYnNpZGlhbi1jb21tdW5pdHktbGliXCI7XHJcbiAgaW1wb3J0IHR5cGUgeyBTcXVhcmVJdGVtIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuICBpbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG4gIGltcG9ydCB7IGxpbmtDbGFzcyB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG4gIGV4cG9ydCBsZXQgcGx1Z2luOiBCQ1BsdWdpbjtcclxuICBleHBvcnQgbGV0IG5leHQ6IFNxdWFyZUl0ZW1bXTtcclxuICBleHBvcnQgbGV0IHByZXY6IFNxdWFyZUl0ZW1bXTtcclxuXHJcbiAgY29uc3QgYWN0aXZlTGVhZlZpZXcgPSBhcHAud29ya3NwYWNlLmFjdGl2ZUxlYWYudmlldztcclxuPC9zY3JpcHQ+XHJcblxyXG48ZGl2IGNsYXNzPVwiQkMtTmV4dFByZXYtQ29udGFpbmVyXCI+XHJcbiAgPGRpdiBjbGFzcz1cIkJDLXByZXZzXCI+XHJcbiAgICA8c3Bhbj5cclxuICAgICAgeyNlYWNoIHByZXYgYXMgeyBmaWVsZCwgcmVhbCwgdG8gfX1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cIntsaW5rQ2xhc3ModG8sIHJlYWwpfSBCQy1wcmV2XCJcclxuICAgICAgICAgIG9uOmNsaWNrPXthc3luYyAoZSkgPT4gYXdhaXQgb3Blbk9yU3dpdGNoKHRvLCBlKX1cclxuICAgICAgICAgIG9uOm1vdXNlb3Zlcj17KGUpID0+IGhvdmVyUHJldmlldyhlLCBhY3RpdmVMZWFmVmlldywgdG8pfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPlxyXG4gICAgICAgICAge3RvfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB7L2VhY2h9XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIkJDLW5leHRzXCI+XHJcbiAgICA8c3Bhbj5cclxuICAgICAgeyNlYWNoIG5leHQgYXMgeyBmaWVsZCwgcmVhbCwgdG8gfX1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cIntsaW5rQ2xhc3ModG8sIHJlYWwpfSBCQy1uZXh0XCJcclxuICAgICAgICAgIG9uOmNsaWNrPXthc3luYyAoZSkgPT4gYXdhaXQgb3Blbk9yU3dpdGNoKHRvLCBlKX1cclxuICAgICAgICAgIG9uOm1vdXNlb3Zlcj17KGUpID0+IGhvdmVyUHJldmlldyhlLCBhY3RpdmVMZWFmVmlldywgdG8pfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt0b30gPHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIHsvZWFjaH1cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48c3R5bGU+XHJcbiAgLkJDLW5leHRzIGRpdiB7XHJcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICB9XHJcblxyXG4gIC5CQy1uZXh0cyB7XHJcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWJhY2tncm91bmQtbW9kaWZpZXItYm9yZGVyKTtcclxuICB9XHJcbiAgLkJDLXByZXZzIHtcclxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWJhY2tncm91bmQtbW9kaWZpZXItYm9yZGVyKTtcclxuICB9XHJcblxyXG4gIC5CQy1OZXh0UHJldi1Db250YWluZXIge1xyXG4gICAgZGlzcGxheTogZ3JpZDtcclxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcclxuICB9XHJcbjwvc3R5bGU+XHJcbiIsIG51bGwsICI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG4gIGltcG9ydCB7XHJcbiAgICBob3ZlclByZXZpZXcsXHJcbiAgICBvcGVuT3JTd2l0Y2gsXHJcbiAgfSBmcm9tIFwib2JzaWRpYW4tY29tbXVuaXR5LWxpYi9kaXN0L3V0aWxzXCI7XHJcbiAgaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuICBpbXBvcnQge1xyXG4gICAgZHJvcERlbmRyb24sXHJcbiAgICBwYWRBcnJheSxcclxuICAgIHJ1bnMsXHJcbiAgICB0cmFuc3Bvc2UsXHJcbiAgfSBmcm9tIFwiLi4vVXRpbHMvZ2VuZXJhbFV0aWxzXCI7XHJcbiAgaW1wb3J0IHsgZ2V0QWx0LCBsaW5rQ2xhc3MgfSBmcm9tIFwiLi4vVXRpbHMvT2JzaWRpYW5VdGlsc1wiO1xyXG5cclxuICBleHBvcnQgbGV0IHNvcnRlZFRyYWlsczogc3RyaW5nW11bXTtcclxuICBleHBvcnQgbGV0IHBsdWdpbjogQkNQbHVnaW47XHJcblxyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCB7IGdyaWREZWZhdWx0RGVwdGggfSA9IHNldHRpbmdzO1xyXG5cclxuICBjb25zdCBhY3RpdmVMZWFmVmlldyA9IGFwcC53b3Jrc3BhY2UuYWN0aXZlTGVhZi52aWV3O1xyXG4gIGNvbnN0IG1heExlbmd0aCA9IHNvcnRlZFRyYWlscy5sYXN0KCkubGVuZ3RoO1xyXG5cclxuICAvLyBVc2UgdGhlIHVzZXIgc2V0dGluZyB0byBsaW1pdCB0aGUgaW5pdGlhbCBkZXB0aFxyXG4gIGxldCBkZXB0aCA9IE1hdGgubWluKG1heExlbmd0aCwgZ3JpZERlZmF1bHREZXB0aCk7XHJcblxyXG4gIGxldCBzbGljZWRUcmFpbHMgPSBzb3J0ZWRUcmFpbHM7XHJcbiAgJDoge1xyXG4gICAgc2xpY2VkVHJhaWxzID0gW107XHJcbiAgICBzb3J0ZWRUcmFpbHMuZm9yRWFjaCgodHJhaWwpID0+IHtcclxuICAgICAgY29uc3Qgc2xpY2UgPSB0cmFpbC5zbGljZShtYXhMZW5ndGggLSBkZXB0aCk7XHJcbiAgICAgIGlmIChzbGljZS5sZW5ndGgpIHNsaWNlZFRyYWlscy5wdXNoKHNsaWNlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgJDogcGFkZGVkVHJhaWxzID0gc2xpY2VkVHJhaWxzLm1hcCgodHJhaWwpID0+IHBhZEFycmF5KHRyYWlsLCBkZXB0aCkpO1xyXG5cclxuICAkOiB0cmFuc3Bvc2VkVHJhaWxzID0gdHJhbnNwb3NlKHBhZGRlZFRyYWlscyk7XHJcbiAgJDogYWxsUnVucyA9IHRyYW5zcG9zZWRUcmFpbHMubWFwKHJ1bnMpO1xyXG48L3NjcmlwdD5cclxuXHJcbjxkaXYgY2xhc3M9XCJCQy1ncmlkLXdyYXBwZXJcIj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cIkJDLXRyYWlsLWdyaWRcIlxyXG4gICAgc3R5bGU9XCJcclxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB7JzFmciAnLnJlcGVhdCh0cmFuc3Bvc2VkVHJhaWxzLmxlbmd0aCl9O1xyXG4gICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IHsnMWZyICcucmVwZWF0KHNsaWNlZFRyYWlscy5sZW5ndGgpfTtcIlxyXG4gID5cclxuICAgIHsjZWFjaCB0cmFuc3Bvc2VkVHJhaWxzIGFzIGNvbCwgaX1cclxuICAgICAgeyNlYWNoIGFsbFJ1bnNbaV0gYXMgeyB2YWx1ZSwgZmlyc3QsIGxhc3QgfX1cclxuICAgICAgICA8IS0tIHN2ZWx0ZS1pZ25vcmUgYTExeS1tb3VzZS1ldmVudHMtaGF2ZS1rZXktZXZlbnRzIC0tPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiQkMtdHJhaWwtZ3JpZC1pdGVtIHt2YWx1ZSA9PT0gJycgPyAnQkMtZmlsbGVyJyA6ICcnfVwiXHJcbiAgICAgICAgICBzdHlsZT1cIlxyXG4gICAgICAgICAgICAgIGdyaWQtYXJlYToge2ZpcnN0ICsgMX0gLyB7aSArIDF9IC9cclxuICAgICAgICAgICAgICAgICAge2xhc3QgKyAyfSAvIHtpICsgMn07XCJcclxuICAgICAgICAgIG9uOmNsaWNrPXthc3luYyAoZSkgPT4gYXdhaXQgb3Blbk9yU3dpdGNoKHZhbHVlLCBlKX1cclxuICAgICAgICAgIG9uOm1vdXNlb3Zlcj17KGUpID0+IGhvdmVyUHJldmlldyhlLCBhY3RpdmVMZWFmVmlldywgdmFsdWUpfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9e2xpbmtDbGFzcyh2YWx1ZSl9PlxyXG4gICAgICAgICAgICB7Z2V0QWx0KHZhbHVlLCBwbHVnaW4pID8/IGRyb3BEZW5kcm9uKHZhbHVlLCBzZXR0aW5ncyl9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgey9lYWNofVxyXG4gICAgey9lYWNofVxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiQkMtZ3JpZC1vcHRpb25zXCI+XHJcbiAgICA8c3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJCQy1ncmlkLW9wdGlvbnMtaWNvblwiPlx1MjY5OVx1RkUwRjwvc3Bhbj5cclxuXHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiQkMtZ3JpZC1vcHRpb25zLW9wdGlvbnNcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cIkJDLWRlcHRoLWJ1dHRvblwiXHJcbiAgICAgICAgICBkaXNhYmxlZD17ZGVwdGggPT09IDF9XHJcbiAgICAgICAgICBvbjpjbGljaz17KCkgPT4gKGRlcHRoIC09IDEpfT4tPC9idXR0b25cclxuICAgICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0cmVlLWl0ZW0tZmxhaXJcIj57ZGVwdGh9PC9zcGFuPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIGNsYXNzPVwiQkMtZGVwdGgtYnV0dG9uXCJcclxuICAgICAgICAgIGRpc2FibGVkPXtkZXB0aCA9PT0gbWF4TGVuZ3RofVxyXG4gICAgICAgICAgb246Y2xpY2s9eygpID0+IChkZXB0aCArPSAxKX0+KzwvYnV0dG9uXHJcbiAgICAgICAgPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPHN0eWxlPlxyXG4gIGRpdi5CQy1ncmlkLXdyYXBwZXIge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIH1cclxuXHJcbiAgZGl2LkJDLXRyYWlsLWdyaWQge1xyXG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tYmFja2dyb3VuZC1tb2RpZmllci1ib3JkZXIpO1xyXG4gICAgZGlzcGxheTogZ3JpZDtcclxuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xyXG4gICAgd2lkdGg6IGF1dG87XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgfVxyXG5cclxuICAuQkMtZ3JpZC1vcHRpb25zIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMHB4O1xyXG4gICAgcmlnaHQ6IDBweDtcclxuICAgIGhlaWdodDogMzVweDtcclxuICAgIHdpZHRoOiAzMnB4O1xyXG5cclxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJhY2tncm91bmQtbW9kaWZpZXItYm9yZGVyKTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XHJcblxyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG5cclxuICAgIHRyYW5zaXRpb246IHdpZHRoIDAuM3M7XHJcbiAgICBvdmVyZmxvdy13cmFwOiBub3JtYWw7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuICBkaXYuQkMtZ3JpZC1vcHRpb25zOmhvdmVyIHtcclxuICAgIHBhZGRpbmc6IDVweDtcclxuICAgIHdpZHRoOiBmaXQtY29udGVudDtcclxuICB9XHJcbiAgZGl2LkJDLWdyaWQtb3B0aW9uczpob3ZlciAuQkMtZ3JpZC1vcHRpb25zLWljb24ge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcblxyXG4gIC5CQy1ncmlkLW9wdGlvbnMtb3B0aW9ucyB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxuICBkaXYuQkMtZ3JpZC1vcHRpb25zOmhvdmVyIC5CQy1ncmlkLW9wdGlvbnMtb3B0aW9ucyB7XHJcbiAgICBkaXNwbGF5OiB1bnNldDtcclxuICB9XHJcblxyXG4gIC5CQy1kZXB0aC1idXR0b24ge1xyXG4gICAgcGFkZGluZzogM3B4IDVweDtcclxuICB9XHJcblxyXG4gIGRpdi5CQy10cmFpbC1ncmlkLWl0ZW0ge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1iYWNrZ3JvdW5kLW1vZGlmaWVyLWJvcmRlcik7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBwYWRkaW5nOiAycHg7XHJcbiAgICBmb250LXNpemU6IHNtYWxsZXI7XHJcbiAgfVxyXG5cclxuICBkaXYuQkMtdHJhaWwtZ3JpZC1pdGVtLkJDLWZpbGxlciB7XHJcbiAgICBvcGFjaXR5OiAwLjc7XHJcbiAgfVxyXG48L3N0eWxlPlxyXG4iLCBudWxsLCAiPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuICBpbXBvcnQge1xyXG4gICAgaG92ZXJQcmV2aWV3LFxyXG4gICAgb3Blbk9yU3dpdGNoLFxyXG4gIH0gZnJvbSBcIm9ic2lkaWFuLWNvbW11bml0eS1saWIvZGlzdC91dGlsc1wiO1xyXG4gIGltcG9ydCB7IGdldFRyYWlsTGVuZ3RoIH0gZnJvbSBcIi4uL1ZpZXdzL1RyYWlsVmlld1wiO1xyXG4gIGltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbiAgaW1wb3J0IHsgZHJvcERlbmRyb24gfSBmcm9tIFwiLi4vVXRpbHMvZ2VuZXJhbFV0aWxzXCI7XHJcbiAgaW1wb3J0IHsgZ2V0QWx0IH0gZnJvbSBcIi4uL1V0aWxzL09ic2lkaWFuVXRpbHNcIjtcclxuXHJcbiAgZXhwb3J0IGxldCBzb3J0ZWRUcmFpbHM6IHN0cmluZ1tdW107XHJcbiAgZXhwb3J0IGxldCBwbHVnaW46IEJDUGx1Z2luO1xyXG5cclxuICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW47XHJcbiAgY29uc3QgeyB2aWV3IH0gPSBhcHAud29ya3NwYWNlLmFjdGl2ZUxlYWY7XHJcbiAgbGV0IHsgc2hvd0FsbCwgbm9QYXRoTWVzc2FnZSwgdHJhaWxTZXBlcmF0b3IgfSA9IHNldHRpbmdzO1xyXG5cclxuICBsZXQgdHJhaWxfbGVuZ3RoID0gc2hvd0FsbDtcclxuXHJcbiAgJDogdHJhaWxzVG9TaG93ID1cclxuICAgIHRyYWlsX2xlbmd0aCA9PSBcIkFsbFwiXHJcbiAgICAgID8gc29ydGVkVHJhaWxzXHJcbiAgICAgIDogdHJhaWxfbGVuZ3RoID09IFwiU2hvcnRlc3RcIlxyXG4gICAgICA/IFtzb3J0ZWRUcmFpbHNbMF1dXHJcbiAgICAgIDogW3NvcnRlZFRyYWlscy5sYXN0KCldO1xyXG48L3NjcmlwdD5cclxuXHJcbjxzcGFuIGNsYXNzPVwiQkMtdHJhaWwtcGF0aC1jb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwidHJhaWxzLWRpdlwiPlxyXG4gICAgeyNlYWNoIHRyYWlsc1RvU2hvdyBhcyB0cmFpbH1cclxuICAgICAgPGRpdj5cclxuICAgICAgICB7I2lmICF0cmFpbC5sZW5ndGh9XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIkJDLWVtcHR5LXRyYWlsXCI+e25vUGF0aE1lc3NhZ2V9PC9zcGFuPlxyXG4gICAgICAgIHs6ZWxzZX1cclxuICAgICAgICAgIHsjZWFjaCB0cmFpbCBhcyBjcnVtYiwgaX1cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cImludGVybmFsLWxpbmsgQkMtTGlua1wiXHJcbiAgICAgICAgICAgICAgb246Y2xpY2s9e2FzeW5jIChlKSA9PiBhd2FpdCBvcGVuT3JTd2l0Y2goY3J1bWIsIGUpfVxyXG4gICAgICAgICAgICAgIG9uOm1vdXNlb3Zlcj17KGUpID0+IGhvdmVyUHJldmlldyhlLCB2aWV3LCBjcnVtYil9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7Z2V0QWx0KGNydW1iLCBwbHVnaW4pID8/IGRyb3BEZW5kcm9uKGNydW1iLCBzZXR0aW5ncyl9XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgeyNpZiBpIDwgdHJhaWwubGVuZ3RoIC0gMX1cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIkJDLXRyYWlsLXNlcFwiPntcIiBcIiArIHRyYWlsU2VwZXJhdG9yICsgXCIgXCJ9PC9zcGFuPlxyXG4gICAgICAgICAgICB7L2lmfVxyXG4gICAgICAgICAgey9lYWNofVxyXG4gICAgICAgIHsvaWZ9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgey9lYWNofVxyXG4gIDwvZGl2PlxyXG5cclxuICB7I2lmIHNvcnRlZFRyYWlscy5sZW5ndGggPiAxfVxyXG4gICAgPGRpdj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiYnV0dG9uLWRpdlwiXHJcbiAgICAgICAgb246Y2xpY2s9eygpID0+ICh0cmFpbF9sZW5ndGggPSBnZXRUcmFpbExlbmd0aCh0cmFpbF9sZW5ndGgpKX1cclxuICAgICAgICBvbjpjb250ZXh0bWVudT17KGUpID0+IHtcclxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIHRyYWlsX2xlbmd0aCA9IGdldFRyYWlsTGVuZ3RoKHRyYWlsX2xlbmd0aCwgLTEpO1xyXG4gICAgICAgIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dHJhaWxfbGVuZ3RofVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIHsvaWZ9XHJcbjwvc3Bhbj5cclxuXHJcbjxzdHlsZT5cclxuICBzcGFuLkJDLXRyYWlsLXBhdGgtY29udGFpbmVyIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgfVxyXG48L3N0eWxlPlxyXG4iLCAiaW1wb3J0IHR5cGUgeyBFZGdlRGVmaW5pdGlvbiwgTm9kZVNpbmd1bGFyIH0gZnJvbSBcImN5dG9zY2FwZVwiO1xyXG5pbXBvcnQgdHlwZSB7IE11bHRpR3JhcGggfSBmcm9tIFwiZ3JhcGhvbG9neVwiO1xyXG5pbXBvcnQge1xyXG4gIERhdGFTdG9yZUV2ZW50cyxcclxuICBnZXRQbHVnaW4sXHJcbiAgSUNvcmVEYXRhU3RvcmUsXHJcbiAgSUp1Z2dsLFxyXG4gIElKdWdnbFNldHRpbmdzLFxyXG4gIElKdWdnbFN0b3JlcyxcclxuICBub2RlRGFuZ2xpbmcsXHJcbiAgbm9kZUZyb21GaWxlLFxyXG4gIFZpeklkLFxyXG59IGZyb20gXCJqdWdnbC1hcGlcIjtcclxuaW1wb3J0IHsgaW5mbywgd2FybiB9IGZyb20gXCJsb2dsZXZlbFwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50cywgTWV0YWRhdGFDYWNoZSwgVEZpbGUgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHsgY3JlYXRlSW5kZXggfSBmcm9tIFwiLi4vQ29tbWFuZHMvQ3JlYXRlSW5kZXhcIjtcclxuaW1wb3J0IEp1Z2dsQnV0dG9uIGZyb20gXCIuLi9Db21wb25lbnRzL0p1Z2dsQnV0dG9uLnN2ZWx0ZVwiO1xyXG5pbXBvcnQgSnVnZ2xEZXB0aCBmcm9tIFwiLi4vQ29tcG9uZW50cy9KdWdnbERlcHRoLnN2ZWx0ZVwiO1xyXG5pbXBvcnQgeyBKVUdHTF9DQl9ERUZBVUxUUyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHtcclxuICBkZnNBbGxQYXRocyxcclxuICBnZXRSZWZsZXhpdmVDbG9zdXJlLFxyXG4gIGdldFN1YkluRGlycyxcclxufSBmcm9tIFwiLi4vVXRpbHMvZ3JhcGhVdGlsc1wiO1xyXG5jb25zdCBTVE9SRV9JRCA9IFwiY29yZVwiO1xyXG5cclxuY2xhc3MgQkNTdG9yZUV2ZW50cyBleHRlbmRzIEV2ZW50cyBpbXBsZW1lbnRzIERhdGFTdG9yZUV2ZW50cyB7IH1cclxuXHJcbmV4cG9ydCBjbGFzcyBCQ1N0b3JlIGV4dGVuZHMgQ29tcG9uZW50IGltcGxlbWVudHMgSUNvcmVEYXRhU3RvcmUge1xyXG4gIGdyYXBoOiBNdWx0aUdyYXBoO1xyXG4gIGNhY2hlOiBNZXRhZGF0YUNhY2hlO1xyXG4gIGRlcHRoTWFwOiB7IFt2YWx1ZTogc3RyaW5nXTogbnVtYmVyIH07XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBncmFwaDogTXVsdGlHcmFwaCxcclxuICAgIG1ldGFkYXRhOiBNZXRhZGF0YUNhY2hlLFxyXG4gICAgZGVwdGhNYXA/OiB7IFt2YWx1ZTogc3RyaW5nXTogbnVtYmVyIH1cclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmdyYXBoID0gZ3JhcGg7XHJcbiAgICB0aGlzLmNhY2hlID0gbWV0YWRhdGE7XHJcbiAgICB0aGlzLmRlcHRoTWFwID0gZGVwdGhNYXA7XHJcbiAgfVxyXG5cclxuICBhc1N0cmluZyhub2RlOiBOb2RlU2luZ3VsYXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgaWQgPSBWaXpJZC5mcm9tTm9kZShub2RlKTtcclxuICAgIHJldHVybiBpZC5pZC5zbGljZSgwLCAtMyk7XHJcbiAgfVxyXG5cclxuICBnZXRGaWxlKG5vZGVJZDogVml6SWQpOiBURmlsZSB7XHJcbiAgICByZXR1cm4gdGhpcy5jYWNoZS5nZXRGaXJzdExpbmtwYXRoRGVzdChub2RlSWQuaWQsIFwiXCIpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY29ubmVjdE5vZGVzKFxyXG4gICAgYWxsTm9kZXM6IGN5dG9zY2FwZS5Ob2RlQ29sbGVjdGlvbixcclxuICAgIG5ld05vZGVzOiBjeXRvc2NhcGUuTm9kZUNvbGxlY3Rpb24sXHJcbiAgICBncmFwaDogSUp1Z2dsXHJcbiAgKTogUHJvbWlzZTxjeXRvc2NhcGUuRWRnZURlZmluaXRpb25bXT4ge1xyXG4gICAgY29uc3QgZWRnZXM6IEVkZ2VEZWZpbml0aW9uW10gPSBbXTtcclxuICAgIGNvbnN0IG5vZGVzTGlzdFMgPSBuZXcgU2V0KFxyXG4gICAgICBhbGxOb2Rlcy5tYXAoKG5vZGUpID0+IHRoaXMuYXNTdHJpbmcobm9kZSkpLmZpbHRlcigocykgPT4gcylcclxuICAgICk7XHJcbiAgICBuZXdOb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmFzU3RyaW5nKG5vZGUpO1xyXG4gICAgICBpZiAoIXRoaXMuZ3JhcGguaGFzTm9kZShuYW1lKSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmdyYXBoLmZvckVhY2hPdXRFZGdlKFxyXG4gICAgICAgIHRoaXMuYXNTdHJpbmcobm9kZSksXHJcbiAgICAgICAgKGtleSwgYXR0ciwgc291cmNlLCB0YXJnZXQpID0+IHtcclxuICAgICAgICAgIGlmIChub2Rlc0xpc3RTLmhhcyh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgIGVkZ2VzLnB1c2goe1xyXG4gICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIGlkOiBgQkM6JHtzb3VyY2V9LT4ke3RhcmdldH1gLFxyXG4gICAgICAgICAgICAgICAgc291cmNlOiBWaXpJZC50b0lkKHNvdXJjZSwgU1RPUkVfSUQpICsgXCIubWRcIixcclxuICAgICAgICAgICAgICAgIHRhcmdldDogVml6SWQudG9JZCh0YXJnZXQsIFNUT1JFX0lEKSArIFwiLm1kXCIsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBhdHRyLmZpZWxkLFxyXG4gICAgICAgICAgICAgICAgZGlyOiBhdHRyLmRpcixcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGNsYXNzZXM6IGB0eXBlLSR7YXR0ci5maWVsZH0gZGlyLSR7YXR0ci5kaXJ9IGJyZWFkY3J1bWJzJGAsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShlZGdlcyk7XHJcbiAgfVxyXG5cclxuICBnZXRFdmVudHModmlldzogSUp1Z2dsKTogRGF0YVN0b3JlRXZlbnRzIHtcclxuICAgIHJldHVybiBuZXcgQkNTdG9yZUV2ZW50cygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0TmVpZ2hib3VyaG9vZChcclxuICAgIG5vZGVJZHM6IFZpeklkW10sXHJcbiAgICB2aWV3OiBJSnVnZ2xcclxuICApOiBQcm9taXNlPGN5dG9zY2FwZS5Ob2RlRGVmaW5pdGlvbltdPiB7XHJcbiAgICBjb25zdCBuZXdfbm9kZXMgPSBbXTtcclxuICAgIGZvciAoY29uc3Qgbm9kZUlkIG9mIG5vZGVJZHMpIHtcclxuICAgICAgY29uc3QgbmFtZSA9IG5vZGVJZC5pZC5zbGljZSgwLCAtMyk7XHJcbiAgICAgIGlmICghdGhpcy5ncmFwaC5oYXNOb2RlKG5hbWUpKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChjb25zdCBuZXdfbm9kZSBvZiB0aGlzLmdyYXBoLm5laWdoYm9ycyhuYW1lKSkge1xyXG4gICAgICAgIG5ld19ub2Rlcy5wdXNoKFxyXG4gICAgICAgICAgYXdhaXQgdGhpcy5nZXQobmV3IFZpeklkKG5ld19ub2RlICsgXCIubWRcIiwgU1RPUkVfSUQpLCB2aWV3KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBuZXdfbm9kZXM7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoTm9kZShpZDogVml6SWQsIHZpZXc6IElKdWdnbCk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIHN0b3JlSWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBTVE9SRV9JRDtcclxuICB9XHJcblxyXG4gIGdldChub2RlSWQ6IFZpeklkLCB2aWV3OiBJSnVnZ2wpOiBQcm9taXNlPGN5dG9zY2FwZS5Ob2RlRGVmaW5pdGlvbj4ge1xyXG4gICAgY29uc3QgZmlsZSA9IHRoaXMuZ2V0RmlsZShub2RlSWQpO1xyXG4gICAgbGV0IGRlcHRoID0gMDtcclxuICAgIGlmICh0aGlzLmRlcHRoTWFwICYmIG5vZGVJZC5pZCBpbiB0aGlzLmRlcHRoTWFwKSB7XHJcbiAgICAgIGRlcHRoID0gdGhpcy5kZXB0aE1hcFtub2RlSWQuaWRdO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpbGUgPT09IG51bGwpIHtcclxuICAgICAgY29uc3QgZGFuZ2xpbmcgPSBub2RlRGFuZ2xpbmcobm9kZUlkLmlkKTtcclxuICAgICAgZGFuZ2xpbmcuZGF0YS5kZXB0aCA9IGRlcHRoO1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGRhbmdsaW5nKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNhY2hlID0gdGhpcy5jYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XHJcbiAgICBpZiAoY2FjaGUgPT09IG51bGwpIHtcclxuICAgICAgaW5mbyhcInJldHVybmluZyBlbXB0eSBjYWNoZVwiLCBub2RlSWQpO1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5vZGVEYW5nbGluZyhub2RlSWQuaWQpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbm9kZUZyb21GaWxlKGZpbGUsIHZpZXcucGx1Z2luLCB2aWV3LnNldHRpbmdzLCBub2RlSWQudG9JZCgpKS50aGVuKFxyXG4gICAgICAobm9kZSkgPT4ge1xyXG4gICAgICAgIG5vZGUuZGF0YS5kZXB0aCA9IGRlcHRoO1xyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUp1Z2dsKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgdGFyZ2V0OiBIVE1MRWxlbWVudCxcclxuICBpbml0aWFsTm9kZXM6IHN0cmluZ1tdLFxyXG4gIGFyZ3M6IElKdWdnbFNldHRpbmdzLFxyXG4gIGRlcHRoTWFwOiB7IFt2YWx1ZTogc3RyaW5nXTogbnVtYmVyIH0gPSBudWxsXHJcbik6IElKdWdnbCB7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IGp1Z2dsUGx1Z2luID0gZ2V0UGx1Z2luKGFwcCk7XHJcbiAgICBpZiAoIWp1Z2dsUGx1Z2luKSB7XHJcbiAgICAgIC8vIFRPRE86IEVycm9yIGhhbmRsaW5nXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGtleSBpbiBKVUdHTF9DQl9ERUZBVUxUUykge1xyXG4gICAgICBpZiAoa2V5IGluIGFyZ3MgJiYgYXJnc1trZXldID09PSB1bmRlZmluZWQpXHJcbiAgICAgICAgYXJnc1trZXldID0gSlVHR0xfQ0JfREVGQVVMVFNba2V5XTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBiY1N0b3JlID0gbmV3IEJDU3RvcmUoXHJcbiAgICAgIHBsdWdpbi5tYWluRyxcclxuICAgICAgYXBwLm1ldGFkYXRhQ2FjaGUsXHJcbiAgICAgIGRlcHRoTWFwXHJcbiAgICApO1xyXG4gICAgY29uc3Qgc3RvcmVzOiBJSnVnZ2xTdG9yZXMgPSB7XHJcbiAgICAgIGNvcmVTdG9yZTogYmNTdG9yZSxcclxuICAgICAgZGF0YVN0b3JlczogW2JjU3RvcmVdLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBqdWdnbCA9IGp1Z2dsUGx1Z2luLmNyZWF0ZUp1Z2dsKHRhcmdldCwgYXJncywgc3RvcmVzLCBpbml0aWFsTm9kZXMpO1xyXG4gICAgcGx1Z2luLmFkZENoaWxkKGp1Z2dsKTtcclxuICAgIGluZm8oeyBqdWdnbCB9KTtcclxuICAgIHJldHVybiBqdWdnbDtcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgd2Fybih7IGVycm9yIH0pO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB6b29tVG9Tb3VyY2UoanVnZ2w6IElKdWdnbCwgc291cmNlOiBzdHJpbmcpIHtcclxuICBpZiAoIWp1Z2dsKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGp1Z2dsLm9uKFwidml6UmVhZHlcIiwgKHZpeikgPT4ge1xyXG4gICAgLy8gQWZ0ZXIgbGF5b3V0IGlzIGRvbmUsIGNlbnRlciBvbiBzb3VyY2Ugbm9kZVxyXG4gICAgdml6Lm9uZShcImxheW91dHN0b3BcIiwgKGUpID0+IHtcclxuICAgICAgY29uc3Qgdml6ID0gZS5jeTtcclxuICAgICAgY29uc3Qgbm9kZSA9IHZpei4kaWQoVml6SWQudG9JZChzb3VyY2UgKyBcIi5tZFwiLCBTVE9SRV9JRCkpO1xyXG4gICAgICB2aXouYW5pbWF0ZSh7XHJcbiAgICAgICAgY2VudGVyOiB7XHJcbiAgICAgICAgICBlbGVzOiBub2RlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZHVyYXRpb246IDI1MCxcclxuICAgICAgICBxdWV1ZTogZmFsc2UsXHJcbiAgICAgICAgem9vbTogMS43LFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiB6b29tVG9HcmFwaChqdWdnbDogSUp1Z2dsKSB7XHJcbiAganVnZ2wub24oXCJ2aXpSZWFkeVwiLCAodml6KSA9PiB7XHJcbiAgICB2aXouZml0KHZpei5ub2RlcygpKTtcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlRGVwdGhNYXAoXHJcbiAgcGF0aHM6IHN0cmluZ1tdW10sXHJcbiAgc291cmNlOiBzdHJpbmcsXHJcbiAgb2Zmc2V0ID0gMFxyXG4pOiB7IFtuYW1lOiBzdHJpbmddOiBudW1iZXIgfSB7XHJcbiAgLy8gVE9ETzogSXMgdGhlcmUgYSBCQyBmdW5jdGlvbiBmb3IgdGhpcyBhbHJlYWR5P1xyXG4gIGxldCBkZXB0aE1hcDogeyBbdmFsdWU6IHN0cmluZ106IG51bWJlciB9ID0ge307XHJcbiAgZGVwdGhNYXBbc291cmNlICsgXCIubWRcIl0gPSAwO1xyXG4gIHBhdGhzLmZvckVhY2goKHBhdGgpID0+IHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBuYW1lID0gcGF0aFtpXSArIFwiLm1kXCI7XHJcbiAgICAgIGNvbnN0IGRlcHRoID0gcGF0aC5sZW5ndGggLSBpIC0gMSArIG9mZnNldDtcclxuICAgICAgaWYgKG5hbWUgaW4gZGVwdGhNYXApIHtcclxuICAgICAgICBkZXB0aE1hcFtuYW1lXSA9IE1hdGgubWluKGRlcHRoTWFwW25hbWVdLCBkZXB0aCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZGVwdGhNYXBbbmFtZV0gPSBkZXB0aDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBkZXB0aE1hcDtcclxufVxyXG5cclxuZnVuY3Rpb24gdXBkYXRlRGVwdGgoanVnZ2w6IElKdWdnbCwgZGVwdGg6IG51bWJlcikge1xyXG4gIGp1Z2dsLnZpei4kKGBbZGVwdGg+JHtkZXB0aH1dYCkuYWRkQ2xhc3MoXCJmaWx0ZXJlZFwiKTtcclxuICBqdWdnbC52aXouJChgW2RlcHRoPD0ke2RlcHRofV1gKS5yZW1vdmVDbGFzcyhcImZpbHRlcmVkXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSnVnZ2xUcmFpbChcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIHRhcmdldDogSFRNTEVsZW1lbnQsXHJcbiAgcGF0aHM6IHN0cmluZ1tdW10sXHJcbiAgc291cmNlOiBzdHJpbmcsXHJcbiAgYXJnczogSUp1Z2dsU2V0dGluZ3NcclxuKSB7XHJcbiAgY29uc3QgdG9vbGJhckRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgdG9vbGJhckRpdi5hZGRDbGFzcyhcImN5LXRvb2xiYXJcIik7XHJcbiAgdGFyZ2V0LmFwcGVuZENoaWxkKHRvb2xiYXJEaXYpO1xyXG5cclxuICBjb25zdCBzZWN0RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICBzZWN0RGl2LmFkZENsYXNzKFwiY3ktdG9vbGJhci1zZWN0aW9uXCIpO1xyXG4gIHRvb2xiYXJEaXYuYXBwZW5kQ2hpbGQoc2VjdERpdik7XHJcblxyXG4gIGNvbnN0IGFtdENoaWxkcmVuID0gdGFyZ2V0LmNoaWxkcmVuLmxlbmd0aDtcclxuXHJcbiAgbGV0IGp1Z2dsVXA6IElKdWdnbCA9IG51bGw7XHJcbiAgbGV0IGp1Z2dsRG93bjogSUp1Z2dsID0gbnVsbDtcclxuXHJcbiAgbmV3IEp1Z2dsQnV0dG9uKHtcclxuICAgIHRhcmdldDogc2VjdERpdixcclxuICAgIHByb3BzOiB7XHJcbiAgICAgIGljb246IFwiXHUyMTkxXCIsXHJcbiAgICAgIG9uQ2xpY2s6ICgpID0+IHtcclxuICAgICAgICBpZiAoanVnZ2xVcCkge1xyXG4gICAgICAgICAgdGFyZ2V0LmNoaWxkcmVuW2FtdENoaWxkcmVuXS5jbGFzc0xpc3QucmVtb3ZlKFwianVnZ2wtaGlkZVwiKTtcclxuICAgICAgICAgIGRlcHRoVXAuJHNldCh7IHZpc2libGU6IHRydWUgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChqdWdnbERvd24pIHtcclxuICAgICAgICAgIHRhcmdldC5jaGlsZHJlblthbXRDaGlsZHJlbiArIDFdLmNsYXNzTGlzdC5hZGQoXCJqdWdnbC1oaWRlXCIpO1xyXG4gICAgICAgICAgZGVwdGhEb3duLiRzZXQoeyB2aXNpYmxlOiBmYWxzZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgdGl0bGU6IFwiU2hvdyB1cCBncmFwaFwiLFxyXG4gICAgfSxcclxuICB9KTtcclxuXHJcbiAgbmV3IEp1Z2dsQnV0dG9uKHtcclxuICAgIHRhcmdldDogc2VjdERpdixcclxuICAgIHByb3BzOiB7XHJcbiAgICAgIGljb246IFwiXHUyMTkzXCIsXHJcbiAgICAgIG9uQ2xpY2s6ICgpID0+IHtcclxuICAgICAgICBpZiAoanVnZ2xEb3duKSB7XHJcbiAgICAgICAgICB0YXJnZXQuY2hpbGRyZW5bYW10Q2hpbGRyZW4gKyAxXS5jbGFzc0xpc3QucmVtb3ZlKFwianVnZ2wtaGlkZVwiKTtcclxuICAgICAgICAgIGRlcHRoVXAuJHNldCh7IHZpc2libGU6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgaWYgKGp1Z2dsVXApIHtcclxuICAgICAgICAgICAgdGFyZ2V0LmNoaWxkcmVuW2FtdENoaWxkcmVuXS5jbGFzc0xpc3QuYWRkKFwianVnZ2wtaGlkZVwiKTtcclxuICAgICAgICAgICAgZGVwdGhEb3duLiRzZXQoeyB2aXNpYmxlOiB0cnVlIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzdWIgPSBnZXRTdWJJbkRpcnMocGx1Z2luLm1haW5HLCBcImRvd25cIiwgXCJ1cFwiKTtcclxuICAgICAgICBjb25zdCBjbG9zZWQgPSBnZXRSZWZsZXhpdmVDbG9zdXJlKHN1YiwgcGx1Z2luLnNldHRpbmdzLnVzZXJIaWVycyk7XHJcbiAgICAgICAgY29uc3Qgc3ViQ2xvc2VkID0gZ2V0U3ViSW5EaXJzKGNsb3NlZCwgXCJkb3duXCIpO1xyXG5cclxuXHJcbiAgICAgICAgY29uc3QgeyBjcmVhdGVJbmRleEluZGVudCB9ID0gcGx1Z2luLnNldHRpbmdzXHJcbiAgICAgICAgY29uc3QgYWxsUGF0aHMgPSBkZnNBbGxQYXRocyhzdWJDbG9zZWQsIHNvdXJjZSk7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBjcmVhdGVJbmRleChhbGxQYXRocywgZmFsc2UsIGNyZWF0ZUluZGV4SW5kZW50KTtcclxuICAgICAgICBjb25zdCBsaW5lcyA9IGluZGV4XHJcbiAgICAgICAgICAuc3BsaXQoXCJcXG5cIilcclxuICAgICAgICAgIC5tYXAoKGxpbmUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgW2luZGVudCwgLi4uY29udGVudF0gPSBsaW5lLnNwbGl0KFwiLSBcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50LmpvaW4oXCItIFwiKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZmlsdGVyKChwYWlyKSA9PiBwYWlyKTtcclxuICAgICAgICBsZXQgZGVwdGhNYXBEb3duID0gY3JlYXRlRGVwdGhNYXAoYWxsUGF0aHMsIHNvdXJjZSk7XHJcbiAgICAgICAgY29uc3QgbWF4RGVwdGhEb3duID0gTWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyhkZXB0aE1hcERvd24pKTtcclxuXHJcbiAgICAgICAgZGVwdGhEb3duID0gbmV3IEp1Z2dsRGVwdGgoe1xyXG4gICAgICAgICAgdGFyZ2V0OiB0b29sYmFyRGl2LFxyXG4gICAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgICAgbWF4RGVwdGg6IG1heERlcHRoRG93bixcclxuICAgICAgICAgICAgb25VcGRhdGVEZXB0aDogKGQpID0+IHtcclxuICAgICAgICAgICAgICB1cGRhdGVEZXB0aChqdWdnbERvd24sIGQpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBsZXQgbm9kZXNTID0gbmV3IFNldChsaW5lcyk7XHJcbiAgICAgICAgbm9kZXNTLmFkZChzb3VyY2UpO1xyXG4gICAgICAgIGNvbnN0IG5vZGVzID0gQXJyYXkuZnJvbShub2Rlc1MpLm1hcCgocykgPT4gcyArIFwiLm1kXCIpO1xyXG5cclxuICAgICAgICBjb25zdCBhcmdzRG93biA9IE9iamVjdC5hc3NpZ24oe30sIGFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IGxheW91dCA9IHBsdWdpbi5zZXR0aW5ncy5qdWdnbExheW91dDtcclxuICAgICAgICBpZiAobGF5b3V0ID09PSBcImhpZXJhcmNoeVwiKSB7XHJcbiAgICAgICAgICBhcmdzRG93bi5sYXlvdXQgPSB7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgbmFtZTogXCJkYWdyZVwiLFxyXG4gICAgICAgICAgICBhbmltYXRlOiBmYWxzZSxcclxuICAgICAgICAgICAgcmFua2VyOiAoZ3JhcGgpID0+IHtcclxuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhncmFwaC5fbm9kZXMpLmZvckVhY2goKGlkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gVml6SWQuZnJvbUlkKGlkKS5pZDtcclxuICAgICAgICAgICAgICAgIGlmIChuYW1lIGluIGRlcHRoTWFwRG93bikge1xyXG4gICAgICAgICAgICAgICAgICBncmFwaC5fbm9kZXNbaWRdLnJhbmsgPSBkZXB0aE1hcERvd25bbmFtZV0gKyAxO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgZ3JhcGguX25vZGVzW2lkXS5yYW5rID0gMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGFyZ3NEb3duLmxheW91dCA9IGxheW91dDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXNGZGdkID0gbGF5b3V0ID09PSBcImNvbGFcIiB8fCBsYXlvdXQgPT09IFwiZDMtZm9yY2VcIjtcclxuICAgICAgICBpZiAoaXNGZGdkKSB7XHJcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICBhcmdzRG93bi5mZGdkTGF5b3V0ID0gbGF5b3V0O1xyXG4gICAgICAgICAgYXJnc0Rvd24ubGF5b3V0ID0gXCJmb3JjZS1kaXJlY3RlZFwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhcmdzRG93bi5hdXRvWm9vbSA9IHRydWU7XHJcbiAgICAgICAgICBhcmdzRG93bi5hbmltYXRlTGF5b3V0ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBqdWdnbERvd24gPSBjcmVhdGVKdWdnbChwbHVnaW4sIHRhcmdldCwgbm9kZXMsIGFyZ3NEb3duLCBkZXB0aE1hcERvd24pO1xyXG5cclxuICAgICAgICBpZiAoaXNGZGdkKSB7XHJcbiAgICAgICAgICB6b29tVG9Tb3VyY2UoanVnZ2xEb3duLCBzb3VyY2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB6b29tVG9HcmFwaChqdWdnbERvd24pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGp1Z2dsVXApIHtcclxuICAgICAgICAgIHRhcmdldC5jaGlsZHJlblthbXRDaGlsZHJlbl0uYWRkQ2xhc3MoXCJqdWdnbC1oaWRlXCIpO1xyXG4gICAgICAgICAgZGVwdGhVcC4kc2V0KHsgdmlzaWJsZTogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgIHRpdGxlOiBcIlNob3cgZG93biBncmFwaFwiLFxyXG4gICAgfSxcclxuICB9KTtcclxuICBjb25zdCBkZXB0aE1hcFVwID0gY3JlYXRlRGVwdGhNYXAocGF0aHMsIHNvdXJjZSwgMSk7XHJcbiAgY29uc3QgbWF4RGVwdGhVcCA9IE1hdGgubWF4KC4uLk9iamVjdC52YWx1ZXMoZGVwdGhNYXBVcCkpO1xyXG5cclxuICBsZXQgZGVwdGhEb3duOiBKdWdnbERlcHRoO1xyXG4gIGNvbnN0IGRlcHRoVXAgPSBuZXcgSnVnZ2xEZXB0aCh7XHJcbiAgICB0YXJnZXQ6IHRvb2xiYXJEaXYsXHJcbiAgICBwcm9wczoge1xyXG4gICAgICBtYXhEZXB0aDogbWF4RGVwdGhVcCxcclxuICAgICAgb25VcGRhdGVEZXB0aDogKGQpID0+IHtcclxuICAgICAgICB1cGRhdGVEZXB0aChqdWdnbFVwLCBkKTtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgfSk7XHJcblxyXG4gIC8vIG5ldyBKdWdnbEJ1dHRvbih7XHJcbiAgLy8gICAgIHRhcmdldDogc2VjdERpdixcclxuICAvLyAgICAgcHJvcHM6IHtcclxuICAvLyAgICAgICAgIGljb246IFwiXHUyNkY2XCIsXHJcbiAgLy8gICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc29sZS5sb2coXCJoZXJlXCIpXHJcbiAgLy8gICAgICAgICAgICAgdGFyZ2V0LmNoaWxkcmVuWzFdLmFkZENsYXNzKFwianVnZ2wtZnVsbC1zY3JlZW5cIilcclxuICAvLyAgICAgICAgICAgICB0YXJnZXQuY2hpbGRyZW5bMV0uc2V0QXR0cihcInN0eWxlXCIsIFwiXCIpO1xyXG4gIC8vICAgICAgICAgfSxcclxuICAvLyAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAvLyAgICAgICAgIHRpdGxlOiBcIkZ1bGwgaGVpZ2h0XCJcclxuICAvLyAgICAgfVxyXG4gIC8vIH0pO1xyXG4gIGxldCBub2RlcyA9IEFycmF5LmZyb20oXHJcbiAgICBuZXcgU2V0KHBhdGhzLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldi5jb25jYXQoY3VyciksIFtdKSlcclxuICApO1xyXG5cclxuICBub2Rlcy5wdXNoKHNvdXJjZSk7XHJcbiAgbm9kZXMgPSBub2Rlcy5tYXAoKHMpID0+IHMgKyBcIi5tZFwiKTtcclxuXHJcbiAgY29uc3QgYXJnc1VwOiBJSnVnZ2xTZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIGFyZ3MpO1xyXG5cclxuICBjb25zdCBsYXlvdXQgPSBwbHVnaW4uc2V0dGluZ3MuanVnZ2xMYXlvdXQ7XHJcbiAgaWYgKGxheW91dCA9PT0gXCJoaWVyYXJjaHlcIikge1xyXG4gICAgYXJnc1VwLmxheW91dCA9IHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBuYW1lOiBcImRhZ3JlXCIsXHJcbiAgICAgIGFuaW1hdGU6IGZhbHNlLFxyXG4gICAgICByYW5rZXI6IChncmFwaCkgPT4ge1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGdyYXBoLl9ub2RlcykuZm9yRWFjaCgoaWQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5hbWUgPSBWaXpJZC5mcm9tSWQoaWQpLmlkO1xyXG4gICAgICAgICAgaWYgKG5hbWUgaW4gZGVwdGhNYXBVcCkge1xyXG4gICAgICAgICAgICBncmFwaC5fbm9kZXNbaWRdLnJhbmsgPSBtYXhEZXB0aFVwIC0gZGVwdGhNYXBVcFtuYW1lXSArIDE7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBncmFwaC5fbm9kZXNbaWRdLnJhbmsgPSBtYXhEZXB0aFVwICsgMjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgfSBlbHNlIHtcclxuICAgIGFyZ3NVcC5sYXlvdXQgPSBsYXlvdXQ7XHJcbiAgfVxyXG4gIGNvbnN0IGlzRmRnZCA9IGxheW91dCA9PT0gXCJjb2xhXCIgfHwgbGF5b3V0ID09PSBcImQzLWZvcmNlXCI7XHJcbiAgaWYgKGlzRmRnZCkge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgYXJnc1VwLmZkZ2RMYXlvdXQgPSBsYXlvdXQ7XHJcbiAgICBhcmdzVXAubGF5b3V0ID0gXCJmb3JjZS1kaXJlY3RlZFwiO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBhcmdzVXAuYXV0b1pvb20gPSB0cnVlO1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgYXJnc1VwLmFuaW1hdGVMYXlvdXQgPSBmYWxzZTtcclxuICB9XHJcbiAganVnZ2xVcCA9IGNyZWF0ZUp1Z2dsKHBsdWdpbiwgdGFyZ2V0LCBub2RlcywgYXJnc1VwLCBkZXB0aE1hcFVwKTtcclxuICBpZiAoaXNGZGdkKSB7XHJcbiAgICB6b29tVG9Tb3VyY2UoanVnZ2xVcCwgc291cmNlKTtcclxuICB9IGVsc2Uge1xyXG4gICAgem9vbVRvR3JhcGgoanVnZ2xVcCk7XHJcbiAgfVxyXG59XHJcbiIsICJpbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCB7IGluZm8gfSBmcm9tIFwibG9nbGV2ZWxcIjtcclxuaW1wb3J0IHsgY29weSB9IGZyb20gXCJvYnNpZGlhbi1jb21tdW5pdHktbGliL2Rpc3QvdXRpbHNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHsgZGZzQWxsUGF0aHMsIGdldFNpbmtzLCBnZXRTdWJJbkRpcnMgfSBmcm9tIFwiLi4vVXRpbHMvZ3JhcGhVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXRDdXJyRmlsZSwgbWFrZVdpa2kgfSBmcm9tIFwiLi4vVXRpbHMvT2JzaWRpYW5VdGlsc1wiO1xyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgYSBjb3B5IG9mIGBpbmRleGAsIGRvZXNuJ3QgbXV0YXRlLlxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGluZGV4XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYWRkQWxpYXNlc1RvSW5kZXgocGx1Z2luOiBCQ1BsdWdpbiwgaW5kZXg6IHN0cmluZykge1xyXG4gIGNvbnN0IHsgYWxpYXNlc0luSW5kZXggfSA9IHBsdWdpbi5zZXR0aW5ncztcclxuXHJcbiAgY29uc3QgbGluZXMgPSBpbmRleC5zbGljZSgpLnNwbGl0KFwiXFxuXCIpO1xyXG5cclxuICBpZiAoYWxpYXNlc0luSW5kZXgpIHtcclxuICAgIGZvciAobGV0IGxpbmUgb2YgbGluZXMpIHtcclxuICAgICAgY29uc3QgW2luZGVudCwgLi4uY29udGVudF0gPSBsaW5lLnNwbGl0KFwiLSBcIik7XHJcbiAgICAgIGNvbnN0IG5vdGUgPSBjb250ZW50LmpvaW4oXCItIFwiKTtcclxuICAgICAgaWYgKCFub3RlKSBjb250aW51ZTtcclxuXHJcbiAgICAgIGNvbnN0IGN1cnJGaWxlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Rmlyc3RMaW5rcGF0aERlc3Qobm90ZSwgXCJcIik7XHJcblxyXG4gICAgICBpZiAoY3VyckZpbGUgIT09IG51bGwpIHtcclxuICAgICAgICBjb25zdCBjYWNoZSA9IGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShjdXJyRmlsZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGFsaWFzOiBzdHJpbmdbXSA9IGNhY2hlPy5mcm9udG1hdHRlcj8uYWxpYXMgPz8gW107XHJcbiAgICAgICAgY29uc3QgYWxpYXNlczogc3RyaW5nW10gPSBjYWNoZT8uZnJvbnRtYXR0ZXI/LmFsaWFzZXMgPz8gW107XHJcblxyXG4gICAgICAgIGNvbnN0IGFsbEFsaWFzZXM6IHN0cmluZ1tdID0gWy4uLlthbGlhc10uZmxhdCgzKSwgLi4uW2FsaWFzZXNdLmZsYXQoMyldO1xyXG4gICAgICAgIGlmIChhbGxBbGlhc2VzLmxlbmd0aCkge1xyXG4gICAgICAgICAgbGluZSArPSBgICgke2FsbEFsaWFzZXMuam9pbihcIiwgXCIpfSlgO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gbGluZXMuam9pbihcIlxcblwiKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZSBhbiBpbmRleCBvZiBhbGwgdGhlIHBhdGhzIGluIHRoZSBncmFwaC5cclxuICogQHBhcmFtIGFsbFBhdGhzIC0gQSBsaXN0IG9mIGFsbCBwYXRocyBmcm9tIHRoZSByb290IHRvIHRoZSBsZWF2ZXMuXHJcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYXNXaWtpbGlua3MgLSBXaGV0aGVyIHRvIHVzZSB3aWtpbGlua3MgaW5zdGVhZCBvZiBwbGFpbiB0ZXh0LlxyXG4gKiBAcmV0dXJucyBBIHN0cmluZy5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbmRleChcclxuICBhbGxQYXRoczogc3RyaW5nW11bXSxcclxuICBhc1dpa2lsaW5rczogYm9vbGVhbixcclxuICBpbmRlbnQgPSBcIiAgXCJcclxuKTogc3RyaW5nIHtcclxuICBsZXQgaW5kZXggPSBcIlwiO1xyXG4gIGNvbnN0IGNvcHkgPSBjbG9uZURlZXAoYWxsUGF0aHMpO1xyXG4gIGNvbnN0IHJldmVyc2VkID0gY29weS5tYXAoKHBhdGgpID0+IHBhdGgucmV2ZXJzZSgpKTtcclxuICByZXZlcnNlZC5mb3JFYWNoKChwYXRoKSA9PiBwYXRoLnNoaWZ0KCkpO1xyXG5cclxuICBjb25zdCByZWFsSW5kZW50ID0gaW5kZW50ID09PSAnXFxcXHQnID8gJ1xcdCcgOiBpbmRlbnQ7XHJcblxyXG4gIGNvbnN0IHZpc2l0ZWQ6IHtcclxuICAgIFtub2RlOiBzdHJpbmddOiAvKiogVGhlIGRlcHRocyBhdCB3aGljaCBgbm9kZWAgd2FzIHZpc2l0ZWQgKi8gbnVtYmVyW107XHJcbiAgfSA9IHt9O1xyXG5cclxuICByZXZlcnNlZC5mb3JFYWNoKChwYXRoKSA9PiB7XHJcbiAgICBmb3IgKGxldCBkZXB0aCA9IDA7IGRlcHRoIDwgcGF0aC5sZW5ndGg7IGRlcHRoKyspIHtcclxuICAgICAgY29uc3QgY3Vyck5vZGUgPSBwYXRoW2RlcHRoXTtcclxuXHJcbiAgICAgIC8vIElmIHRoYXQgbm9kZSBoYXMgYmVlbiB2aXNpdGVkIGJlZm9yZSBhdCB0aGUgY3VycmVudCBkZXB0aFxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdmlzaXRlZC5oYXNPd25Qcm9wZXJ0eShjdXJyTm9kZSkgJiZcclxuICAgICAgICB2aXNpdGVkW2N1cnJOb2RlXS5pbmNsdWRlcyhkZXB0aClcclxuICAgICAgKSBjb250aW51ZVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpbmRleCArPSBgJHtyZWFsSW5kZW50LnJlcGVhdChkZXB0aCl9LSAke2FzV2lraWxpbmtzID8gbWFrZVdpa2koY3Vyck5vZGUpIDogY3Vyck5vZGVcclxuICAgICAgICAgIH1cXG5gO1xyXG5cclxuICAgICAgICBpZiAoIXZpc2l0ZWQuaGFzT3duUHJvcGVydHkoY3Vyck5vZGUpKSB2aXNpdGVkW2N1cnJOb2RlXSA9IFtdO1xyXG4gICAgICAgIHZpc2l0ZWRbY3Vyck5vZGVdLnB1c2goZGVwdGgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGluZGV4O1xyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29weUxvY2FsSW5kZXgocGx1Z2luOiBCQ1BsdWdpbikge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MsIGNsb3NlZEcgfSA9IHBsdWdpbjtcclxuICBjb25zdCB7IHdpa2lsaW5rSW5kZXgsIGNyZWF0ZUluZGV4SW5kZW50IH0gPSBzZXR0aW5ncztcclxuICBjb25zdCB7IGJhc2VuYW1lIH0gPSBnZXRDdXJyRmlsZSgpXHJcblxyXG4gIGNvbnN0IG9ubHlEb3ducyA9IGdldFN1YkluRGlycyhjbG9zZWRHLCBcImRvd25cIik7XHJcbiAgY29uc3QgYWxsUGF0aHMgPSBkZnNBbGxQYXRocyhvbmx5RG93bnMsIGJhc2VuYW1lKTtcclxuICBjb25zdCBpbmRleCA9IGFkZEFsaWFzZXNUb0luZGV4KHBsdWdpbiwgY3JlYXRlSW5kZXgoYWxsUGF0aHMsIHdpa2lsaW5rSW5kZXgsIGNyZWF0ZUluZGV4SW5kZW50KSk7XHJcblxyXG4gIGluZm8oeyBpbmRleCB9KTtcclxuICBhd2FpdCBjb3B5KGluZGV4KTtcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvcHlHbG9iYWxJbmRleChwbHVnaW46IEJDUGx1Z2luKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncywgY2xvc2VkRyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgd2lraWxpbmtJbmRleCwgY3JlYXRlSW5kZXhJbmRlbnQgfSA9IHNldHRpbmdzO1xyXG5cclxuICBjb25zdCBvbmx5RG93bnMgPSBnZXRTdWJJbkRpcnMoY2xvc2VkRywgXCJkb3duXCIpO1xyXG4gIGNvbnN0IG9ubHlVcHMgPSBnZXRTdWJJbkRpcnMoY2xvc2VkRywgXCJ1cFwiKTtcclxuXHJcbiAgY29uc3Qgc2lua3MgPSBnZXRTaW5rcyhvbmx5VXBzKTtcclxuXHJcbiAgbGV0IGdsb2JhbEluZGV4ID0gXCJcIjtcclxuICBzaW5rcy5mb3JFYWNoKCh0ZXJtaW5hbCkgPT4ge1xyXG4gICAgZ2xvYmFsSW5kZXggKz0gdGVybWluYWwgKyBcIlxcblwiO1xyXG4gICAgY29uc3QgYWxsUGF0aHMgPSBkZnNBbGxQYXRocyhvbmx5RG93bnMsIHRlcm1pbmFsKTtcclxuICAgIGdsb2JhbEluZGV4ICs9XHJcbiAgICAgIGFkZEFsaWFzZXNUb0luZGV4KHBsdWdpbiwgY3JlYXRlSW5kZXgoYWxsUGF0aHMsIHdpa2lsaW5rSW5kZXgsIGNyZWF0ZUluZGV4SW5kZW50KSkgKyBcIlxcblwiO1xyXG4gIH0pO1xyXG5cclxuICBpbmZvKHsgZ2xvYmFsSW5kZXggfSk7XHJcbiAgYXdhaXQgY29weShnbG9iYWxJbmRleCk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBpbmRleFRvTGluZVBhaXJzID0gKFxyXG4gIGluZGV4OiBzdHJpbmcsXHJcbiAgZmxhdCA9IGZhbHNlXHJcbik6IFtzdHJpbmcsIHN0cmluZ11bXSA9PlxyXG4gIGluZGV4XHJcbiAgICAuc3BsaXQoXCJcXG5cIilcclxuICAgIC5tYXAoKGxpbmUpID0+IHtcclxuICAgICAgY29uc3QgW2luZGVudCwgLi4uY29udGVudF0gPSBsaW5lLnNwbGl0KFwiLSBcIik7XHJcbiAgICAgIHJldHVybiBbZmxhdCA/IFwiXCIgOiBpbmRlbnQsIGNvbnRlbnQuam9pbihcIi0gXCIpXSBhcyBbXHJcbiAgICAgICAgc3RyaW5nLFxyXG4gICAgICAgIHN0cmluZ1xyXG4gICAgICBdO1xyXG4gICAgfSlcclxuICAgIC5maWx0ZXIoKHBhaXIpID0+IHBhaXJbMV0gIT09IFwiXCIpO1xyXG4iLCAiPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuICBleHBvcnQgbGV0IGljb247XHJcbiAgZXhwb3J0IGxldCBvbkNsaWNrOiAoKSA9PiB2b2lkO1xyXG4gIGV4cG9ydCBsZXQgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBleHBvcnQgbGV0IHRpdGxlID0gXCJcIjtcclxuXHJcbiAgJDogcmVuZGVyZWRJY29uID0gaWNvbjtcclxuPC9zY3JpcHQ+XHJcblxyXG48YnV0dG9uXHJcbiAgdHlwZT1cImJ1dHRvblwiXHJcbiAgY2xhc3M9XCJqdWdnbC1idXR0b25cIlxyXG4gIG9uOmNsaWNrPXtvbkNsaWNrfVxyXG4gIGFyaWEtbGFiZWw9e3RpdGxlfVxyXG4gIHtkaXNhYmxlZH1cclxuPlxyXG4gIHtyZW5kZXJlZEljb259XHJcbjwvYnV0dG9uPlxyXG4iLCBudWxsLCBudWxsLCAiPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuICBpbXBvcnQgSnVnZ2xCdXR0b24gZnJvbSBcIi4vSnVnZ2xCdXR0b24uc3ZlbHRlXCI7XHJcblxyXG4gIGV4cG9ydCBsZXQgdmlzaWJsZSA9IHRydWU7XHJcbiAgZXhwb3J0IGxldCBtYXhEZXB0aDogbnVtYmVyO1xyXG4gIGV4cG9ydCBsZXQgb25VcGRhdGVEZXB0aDogKGRlcHRoOiBudW1iZXIpID0+IHZvaWQ7XHJcblxyXG4gIGxldCBkZXB0aCA9IG1heERlcHRoO1xyXG48L3NjcmlwdD5cclxuXHJcbnsjaWYgdmlzaWJsZX1cclxuICA8ZGl2IGNsYXNzPVwiY3ktdG9vbGJhci1zZWN0aW9uXCI+XHJcbiAgICA8SnVnZ2xCdXR0b25cclxuICAgICAgaWNvbj1cIi1cIlxyXG4gICAgICBkaXNhYmxlZD17ZGVwdGggPD0gMH1cclxuICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgIGRlcHRoIC09IDE7XHJcbiAgICAgICAgb25VcGRhdGVEZXB0aChkZXB0aCk7XHJcbiAgICAgIH19XHJcbiAgICAvPlxyXG5cclxuICAgIDxKdWdnbEJ1dHRvbiBpY29uPXtkZXB0aH0gZGlzYWJsZWQ9e3RydWV9IG9uQ2xpY2s9e251bGx9IC8+XHJcblxyXG4gICAgPEp1Z2dsQnV0dG9uXHJcbiAgICAgIGljb249XCIrXCJcclxuICAgICAgZGlzYWJsZWQ9e2RlcHRoID49IG1heERlcHRofVxyXG4gICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgZGVwdGggKz0gMTtcclxuICAgICAgICBvblVwZGF0ZURlcHRoKGRlcHRoKTtcclxuICAgICAgfX1cclxuICAgIC8+XHJcbiAgPC9kaXY+XHJcbnsvaWZ9XHJcbiIsIG51bGwsICI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG4gIGltcG9ydCB7IHJlZnJlc2hJbmRleCB9IGZyb20gXCIuLi9yZWZyZXNoSW5kZXhcIjtcclxuICBpbXBvcnQgdHlwZSBNYXRyaXhWaWV3IGZyb20gXCIuLi9WaWV3cy9NYXRyaXhWaWV3XCI7XHJcblxyXG4gIGV4cG9ydCBsZXQgbWF0cml4VmlldzogTWF0cml4VmlldztcclxuXHJcbiAgY29uc3QgeyBwbHVnaW4gfSA9IG1hdHJpeFZpZXc7XHJcbiAgY29uc3QgeyBhbHBoYVNvcnRBc2MsIGVuYWJsZUFscGhhU29ydCB9ID0gcGx1Z2luLnNldHRpbmdzO1xyXG48L3NjcmlwdD5cclxuXHJcbjxidXR0b25cclxuICBjbGFzcz1cIkJDLXJlZnJlc2gtYnV0dG9uXCJcclxuICBhcmlhLWxhYmVsPVwiUmVmcmVzaCBJbmRleFwiXHJcbiAgb246Y2xpY2s9e2FzeW5jICgpID0+IGF3YWl0IHJlZnJlc2hJbmRleChwbHVnaW4pfVxyXG4+XHJcbiAgXHUyMUJCXHJcbjwvYnV0dG9uPlxyXG5cclxueyNpZiBlbmFibGVBbHBoYVNvcnR9XHJcbiAgPGJ1dHRvblxyXG4gICAgY2xhc3M9XCJCQy1zb3J0LWJ1dHRvblwiXHJcbiAgICBhcmlhLWxhYmVsPVwiQWxwaGFiZXRpY2FsIFNvcnRpbmcgT3JkZXJcIlxyXG4gICAgb246Y2xpY2s9e2FzeW5jICgpID0+IHtcclxuICAgICAgcGx1Z2luLnNldHRpbmdzLmFscGhhU29ydEFzYyA9ICFhbHBoYVNvcnRBc2M7XHJcbiAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgYXdhaXQgbWF0cml4Vmlldy5kcmF3KCk7XHJcbiAgICB9fVxyXG4gID5cclxuICAgIHthbHBoYVNvcnRBc2MgPyBcIlx1MjE5N1wiIDogXCJcdTIxOThcIn1cclxuICA8L2J1dHRvbj5cclxuey9pZn1cclxuXHJcbjxzdHlsZT5cclxuICBidXR0b24ge1xyXG4gICAgcGFkZGluZzogMXB4IDZweCAycHggNnB4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiA2cHg7XHJcbiAgfVxyXG48L3N0eWxlPlxyXG4iLCBudWxsLCAiPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuICBpbXBvcnQgdHlwZSB7IFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbiAgaW1wb3J0IHsgaG92ZXJQcmV2aWV3LCBvcGVuT3JTd2l0Y2ggfSBmcm9tIFwib2JzaWRpYW4tY29tbXVuaXR5LWxpYlwiO1xyXG4gIGltcG9ydCBNYXRyaXhCdXR0b25zIGZyb20gXCIuL01hdHJpeEJ1dHRvbnMuc3ZlbHRlXCI7XHJcbiAgaW1wb3J0IHR5cGUgeyBTcXVhcmVQcm9wcyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbiAgaW1wb3J0IHsgZHJvcFBhdGhORGVuZHJvbiB9IGZyb20gXCIuLi9VdGlscy9nZW5lcmFsVXRpbHNcIjtcclxuICBpbXBvcnQgdHlwZSBNYXRyaXhWaWV3IGZyb20gXCIuLi9WaWV3cy9NYXRyaXhWaWV3XCI7XHJcblxyXG4gIGV4cG9ydCBsZXQgaGllclNxdWFyZXM6IFNxdWFyZVByb3BzW11bXTtcclxuICBleHBvcnQgbGV0IGN1cnJGaWxlOiBURmlsZTtcclxuICBleHBvcnQgbGV0IG1hdHJpeFZpZXc6IE1hdHJpeFZpZXc7XHJcblxyXG4gIGNvbnN0IHsgcGx1Z2luIH0gPSBtYXRyaXhWaWV3O1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuXHJcbiAgY29uc3Qge1xyXG4gICAgc2hvd0ltcGxpZWRSZWxhdGlvbnMsXHJcbiAgICBybExlYWYsXHJcbiAgICB0cmVhdEN1cnJOb2RlQXNJbXBsaWVkU2libGluZyxcclxuICAgIHNob3dSZWxhdGlvblR5cGUsXHJcbiAgfSA9IHNldHRpbmdzO1xyXG48L3NjcmlwdD5cclxuXHJcbjxkaXYgY2xhc3M9XCJCQy1tYXRyaXgtYnV0dG9uc1wiPlxyXG4gIDxNYXRyaXhCdXR0b25zIHttYXRyaXhWaWV3fSAvPlxyXG48L2Rpdj5cclxuXHJcbjxkaXZcclxuICBjbGFzcz1cIkJDLU1hdHJpeCAgbWFya2Rvd24tcHJldmlldy12aWV3IHtoaWVyU3F1YXJlcy5sZW5ndGhcclxuICAgID8gJydcclxuICAgIDogJ0JDLWVtcHR5LXZpZXcnfVwiXHJcbj5cclxuICB7I2VhY2ggaGllclNxdWFyZXMgYXMgc3F1YXJlc31cclxuICAgIDxkaXYgY2xhc3M9XCJCQy1tYXRyaXgtaGllclwiPlxyXG4gICAgICB7I2VhY2ggc3F1YXJlcyBhcyB7IGZpZWxkLCBpbXBsaWVkSXRlbXMsIHJlYWxJdGVtcyB9fVxyXG4gICAgICAgIHsjaWYgcmVhbEl0ZW1zLmxlbmd0aCB8fCAoc2hvd0ltcGxpZWRSZWxhdGlvbnMgJiYgaW1wbGllZEl0ZW1zLmxlbmd0aCl9XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiQkMtTWF0cml4LXNxdWFyZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiQkMtTWF0cml4LWhlYWRlcnNcIj5cclxuICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJCQy1NYXRyaXgtaGVhZGVyXCI+e2ZpZWxkfTwvaDQ+XHJcblxyXG4gICAgICAgICAgICAgIHsjaWYgc2hvd1JlbGF0aW9uVHlwZX1cclxuICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cIkJDLU1hdHJpeC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAge3JlYWxJdGVtcy5sZW5ndGggPyBcIlJlYWxcIiA6IFwiSW1wbGllZFwifVxyXG4gICAgICAgICAgICAgICAgPC9oNj5cclxuICAgICAgICAgICAgICB7L2lmfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgeyNpZiByZWFsSXRlbXMubGVuZ3RofVxyXG4gICAgICAgICAgICAgIDxvbD5cclxuICAgICAgICAgICAgICAgIHsjZWFjaCByZWFsSXRlbXMgYXMgeyBhbHQsIGNscywgaW1wbGllZCwgdG8gfX1cclxuICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gc3ZlbHRlLWlnbm9yZSBhMTF5LXVua25vd24tYXJpYS1hdHRyaWJ1dGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBzdmVsdGUtaWdub3JlIGExMXktbW91c2UtZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIntjbHN9IHtpbXBsaWVkID8/ICcnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBvbjpjbGljaz17YXN5bmMgKGUpID0+IGF3YWl0IG9wZW5PclN3aXRjaCh0bywgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICBvbjptb3VzZW92ZXI9eyhldmVudCkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJQcmV2aWV3KGV2ZW50LCBtYXRyaXhWaWV3LCB0byl9XHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXthbHQgPyB0byA6IFwiXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsLXBvc2l0aW9uPXtybExlYWYgPyBcImxlZnRcIiA6IFwicmlnaHRcIn1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7YWx0ID8/IGRyb3BQYXRoTkRlbmRyb24odG8sIHNldHRpbmdzKX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIHsvZWFjaH1cclxuICAgICAgICAgICAgICA8L29sPlxyXG4gICAgICAgICAgICB7L2lmfVxyXG5cclxuICAgICAgICAgICAgeyNpZiBzaG93SW1wbGllZFJlbGF0aW9ucyAmJiBpbXBsaWVkSXRlbXMubGVuZ3RofVxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJCQy1NYXRyaXgtaGVhZGVyc1wiPlxyXG4gICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiQkMtTWF0cml4LWhlYWRlclwiPntcIiBcIn08L2g0PlxyXG4gICAgICAgICAgICAgICAgeyNpZiBpbXBsaWVkSXRlbXMubGVuZ3RofVxyXG4gICAgICAgICAgICAgICAgICB7I2lmIHNob3dSZWxhdGlvblR5cGUgJiYgcmVhbEl0ZW1zLmxlbmd0aH1cclxuICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJCQy1NYXRyaXgtaGVhZGVyXCI+SW1wbGllZDwvaDY+XHJcbiAgICAgICAgICAgICAgICAgIHsvaWZ9XHJcbiAgICAgICAgICAgICAgICB7L2lmfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxvbCBzdGFydD17cmVhbEl0ZW1zLmxlbmd0aCArIDF9PlxyXG4gICAgICAgICAgICAgICAgeyNlYWNoIGltcGxpZWRJdGVtcyBhcyB7IGFsdCwgY2xzLCBpbXBsaWVkLCB0bywgcGFyZW50IH19XHJcbiAgICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiQkMtSW1wbGllZCB7dHJlYXRDdXJyTm9kZUFzSW1wbGllZFNpYmxpbmcgJiZcclxuICAgICAgICAgICAgICAgICAgICB0byA9PT0gY3VyckZpbGUuYmFzZW5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgID8gJ0JDLWFjdGl2ZS1ub3RlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgOiAnJ31cIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBzdmVsdGUtaWdub3JlIGExMXktdW5rbm93bi1hcmlhLWF0dHJpYnV0ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIHN2ZWx0ZS1pZ25vcmUgYTExeS1tb3VzZS1ldmVudHMtaGF2ZS1rZXktZXZlbnRzIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie2Nsc30ge2ltcGxpZWQgPz8gJyd9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIG9uOmNsaWNrPXthc3luYyAoZSkgPT4gYXdhaXQgb3Blbk9yU3dpdGNoKHRvLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgIG9uOm1vdXNlb3Zlcj17KGUpID0+IGhvdmVyUHJldmlldyhlLCBtYXRyaXhWaWV3LCB0byl9XHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXsoYWx0ID8gYCR7dG99XFxuYCA6IFwiXCIpICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudCA/IFwiXHUyMTkxIFwiICsgcGFyZW50IDogXCJcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsLXBvc2l0aW9uPXtybExlYWYgPyBcImxlZnRcIiA6IFwicmlnaHRcIn1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7YWx0ID8/IGRyb3BQYXRoTkRlbmRyb24odG8sIHNldHRpbmdzKX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIHsvZWFjaH1cclxuICAgICAgICAgICAgICA8L29sPlxyXG4gICAgICAgICAgICB7L2lmfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgey9pZn1cclxuICAgICAgey9lYWNofVxyXG4gICAgPC9kaXY+XHJcbiAgey9lYWNofVxyXG48L2Rpdj5cclxuXHJcbjxzdHlsZT5cclxuICAuQkMtTWF0cml4IHtcclxuICAgIHBhZGRpbmc6IDVweDtcclxuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XHJcbiAgICBsaW5lLWhlaWdodDogMS41O1xyXG4gIH1cclxuICAuQkMtTWF0cml4ID4gZGl2IHtcclxuICAgIGJvcmRlcjogM3B4IHNvbGlkIHZhcigtLWJhY2tncm91bmQtbW9kaWZpZXItYm9yZGVyKTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgIC8qIHRleHQtYWxpZ246IGNlbnRlcjsgKi9cclxuICAgIG1hcmdpbjogM3B4O1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgaGVpZ2h0OiBmaXQtY29udGVudDtcclxuICB9XHJcblxyXG4gIC8qIC5CQy1tYXRyaXggZGl2IHtcclxuICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgfSAqL1xyXG5cclxuICAuQkMtTWF0cml4LXNxdWFyZSB7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1iYWNrZ3JvdW5kLW1vZGlmaWVyLWJvcmRlcik7XHJcbiAgfVxyXG5cclxuICAuQkMtTWF0cml4LWhlYWRlcnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgfVxyXG4gIC5CQy1NYXRyaXgtaGVhZGVyIHtcclxuICAgIG1hcmdpbjogMnB4O1xyXG4gICAgcGFkZGluZzogMHB4IDEwcHg7XHJcbiAgfVxyXG4gIGg0LkJDLU1hdHJpeC1oZWFkZXI6Zmlyc3QtbGV0dGVyIHtcclxuICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xyXG4gIH1cclxuXHJcbiAgb2wge1xyXG4gICAgbWFyZ2luOiAzcHg7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDMwcHg7XHJcbiAgfVxyXG5cclxuICAuQkMtTWF0cml4IGxpIHtcclxuICAgIG1hcmdpbjogMC4xZW07XHJcbiAgfVxyXG48L3N0eWxlPlxyXG4iLCAiaW1wb3J0IHR5cGUgeyBNdWx0aUdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHsgQVJST1dfRElSRUNUSU9OUywgRElSRUNUSU9OUyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgdHlwZSB7IEJDQVBJSSwgRGlyZWN0aW9ucywgVXNlckhpZXIgfSBmcm9tIFwiLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuL21haW5cIjtcclxuaW1wb3J0IHsgZ2V0TWF0cml4TmVpZ2hib3VycyB9IGZyb20gXCIuL1ZpZXdzL01hdHJpeFZpZXdcIjtcclxuaW1wb3J0IHtcclxuICBidWlsZE9ic0dyYXBoLFxyXG4gIGRmc0FsbFBhdGhzLFxyXG4gIGdldFN1YkZvckZpZWxkcyxcclxuICBnZXRTdWJJbkRpcnMsXHJcbn0gZnJvbSBcIi4vVXRpbHMvZ3JhcGhVdGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIGdldEZpZWxkSW5mbyxcclxuICBnZXRGaWVsZHMsXHJcbiAgZ2V0T3BwRGlyLFxyXG4gIGdldE9wcEZpZWxkcyxcclxuICBpdGVyYXRlSGllcnMsXHJcbn0gZnJvbSBcIi4vVXRpbHMvSGllclV0aWxzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUluZGV4IH0gZnJvbSBcIi4vQ29tbWFuZHMvQ3JlYXRlSW5kZXhcIjtcclxuaW1wb3J0IHsgcmVmcmVzaEluZGV4IH0gZnJvbSBcIi4vcmVmcmVzaEluZGV4XCI7XHJcbmltcG9ydCB7IGdldEN1cnJGaWxlIH0gZnJvbSBcIi4vVXRpbHMvT2JzaWRpYW5VdGlsc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEJDQVBJIGltcGxlbWVudHMgQkNBUElJIHtcclxuXHJcbiAgcGx1Z2luOiBCQ1BsdWdpbjtcclxuICBtYWluRzogTXVsdGlHcmFwaDtcclxuICBjbG9zZWRHOiBNdWx0aUdyYXBoO1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IocGx1Z2luOiBCQ1BsdWdpbikge1xyXG5cclxuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xyXG4gICAgdGhpcy5tYWluRyA9IHRoaXMucGx1Z2luLm1haW5HO1xyXG4gICAgdGhpcy5jbG9zZWRHID0gdGhpcy5wbHVnaW4uY2xvc2VkRztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBESVJFQ1RJT05TID0gRElSRUNUSU9OUztcclxuICBwdWJsaWMgQVJST1dfRElSRUNUSU9OUyA9IEFSUk9XX0RJUkVDVElPTlM7XHJcblxyXG4gIHB1YmxpYyBidWlsZE9ic0dyYXBoID0gYnVpbGRPYnNHcmFwaDtcclxuXHJcbiAgcHVibGljIHJlZnJlc2hJbmRleCA9IGFzeW5jICgpID0+IGF3YWl0IHJlZnJlc2hJbmRleCh0aGlzLnBsdWdpbilcclxuXHJcbiAgcHVibGljIGdldFN1YkluRGlycyA9IChkaXJzOiBEaXJlY3Rpb25zW10sIGcgPSB0aGlzLm1haW5HKSA9PlxyXG4gICAgZ2V0U3ViSW5EaXJzKGcsIC4uLmRpcnMpO1xyXG5cclxuICBwdWJsaWMgZ2V0U3ViRm9yRmllbGRzID0gKGZpZWxkczogc3RyaW5nW10sIGcgPSB0aGlzLm1haW5HKSA9PlxyXG4gICAgZ2V0U3ViRm9yRmllbGRzKGcsIGZpZWxkcyk7XHJcblxyXG4gIHB1YmxpYyBkZnNBbGxQYXRocyA9IChcclxuICAgIGZyb21Ob2RlID0gZ2V0Q3VyckZpbGUoKT8uYmFzZW5hbWUsXHJcbiAgICBnID0gdGhpcy5tYWluR1xyXG4gICkgPT4gZGZzQWxsUGF0aHMoZywgZnJvbU5vZGUpO1xyXG5cclxuICBwdWJsaWMgY3JlYXRlSW5kZXggPSAoYWxsUGF0aHM6IHN0cmluZ1tdW10sIHdpa2lsaW5rcyA9IGZhbHNlLCBpbmRlbnQgPSAnICAnKSA9PlxyXG4gICAgY3JlYXRlSW5kZXgoYWxsUGF0aHMsIHdpa2lsaW5rcywgaW5kZW50KTtcclxuXHJcbiAgcHVibGljIGdldE1hdHJpeE5laWdoYm91cnMgPSAoXHJcbiAgICBmcm9tTm9kZSA9IGdldEN1cnJGaWxlKCk/LmJhc2VuYW1lXHJcbiAgKSA9PiBnZXRNYXRyaXhOZWlnaGJvdXJzKHRoaXMucGx1Z2luLCBmcm9tTm9kZSk7XHJcblxyXG4gIHB1YmxpYyBnZXRPcHBEaXIgPSAoZGlyOiBEaXJlY3Rpb25zKSA9PiBnZXRPcHBEaXIoZGlyKTtcclxuXHJcbiAgcHVibGljIGdldE9wcEZpZWxkcyA9IChmaWVsZDogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCB7IGZpZWxkRGlyIH0gPSBnZXRGaWVsZEluZm8odGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckhpZXJzLCBmaWVsZCk7XHJcbiAgICByZXR1cm4gZ2V0T3BwRmllbGRzKHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJIaWVycywgZmllbGQsIGZpZWxkRGlyKTtcclxuICB9O1xyXG5cclxuICBwdWJsaWMgZ2V0RmllbGRJbmZvID0gKGZpZWxkOiBzdHJpbmcpID0+XHJcbiAgICBnZXRGaWVsZEluZm8odGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckhpZXJzLCBmaWVsZCk7XHJcbiAgcHVibGljIGdldEZpZWxkcyA9IChkaXI/OiBEaXJlY3Rpb25zKSA9PlxyXG4gICAgZ2V0RmllbGRzKHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJIaWVycywgZGlyID8/IFwiYWxsXCIpO1xyXG5cclxuICBwdWJsaWMgaXRlcmF0ZUhpZXJzKFxyXG4gICAgY2I6IChoaWVyOiBVc2VySGllciwgZGlyOiBEaXJlY3Rpb25zLCBmaWVsZDogc3RyaW5nKSA9PiB2b2lkXHJcbiAgKSB7XHJcbiAgICBpdGVyYXRlSGllcnModGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckhpZXJzLCBjYik7XHJcbiAgfVxyXG59XHJcbiIsICJpbXBvcnQgeyBGdXp6eU1hdGNoLCBGdXp6eVN1Z2dlc3RNb2RhbCwgTm90aWNlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IEhpZXJhcmNoeU5vdGVNYW5pcHVsYXRvciB9IGZyb20gXCIuL0hpZXJhcmNoeU5vdGVNYW5pcHVsYXRvclwiO1xyXG5pbXBvcnQgdHlwZSB7IEJDU2V0dGluZ3MgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vLi4vbWFpblwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEhpZXJhcmNoeU5vdGVTZWxlY3Rvck1vZGFsIGV4dGVuZHMgRnV6enlTdWdnZXN0TW9kYWw8c3RyaW5nPiB7XHJcbiAgcGx1Z2luOiBCQ1BsdWdpbjtcclxuICBzZXR0aW5nczogQkNTZXR0aW5ncztcclxuXHJcbiAgY29uc3RydWN0b3IocGx1Z2luOiBCQ1BsdWdpbikge1xyXG4gICAgc3VwZXIoYXBwKTtcclxuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xyXG4gICAgdGhpcy5zZXR0aW5ncyA9IHRoaXMucGx1Z2luLnNldHRpbmdzO1xyXG4gIH1cclxuXHJcbiAgb25PcGVuKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRQbGFjZWhvbGRlcihcIkhOIENob29zZXJcIik7XHJcbiAgICBjb25zdCB7IGhpZXJhcmNoeU5vdGVzIH0gPSB0aGlzLnNldHRpbmdzO1xyXG4gICAgaWYgKGhpZXJhcmNoeU5vdGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgIG5ldyBOb3RpY2UoXCJObyBoaWVyYXJjaHkgbm90ZXMgZm91bmRcIik7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICBoaWVyYXJjaHlOb3Rlcy5sZW5ndGggPT09IDEgJiZcclxuICAgICAgIWhpZXJhcmNoeU5vdGVzWzBdLmVuZHNXaXRoKFwiL1wiKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgbmV3IEhpZXJhcmNoeU5vdGVNYW5pcHVsYXRvcihcclxuICAgICAgICB0aGlzLnBsdWdpbixcclxuICAgICAgICBoaWVyYXJjaHlOb3Rlc1swXVxyXG4gICAgICApLm9wZW4oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN1cGVyLm9uT3BlbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbXMoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgeyBoaWVyYXJjaHlOb3RlcyB9ID0gdGhpcy5zZXR0aW5ncztcclxuICAgIGlmIChoaWVyYXJjaHlOb3Rlcy5sZW5ndGggPT0gMSAmJiBoaWVyYXJjaHlOb3Rlc1swXS5lbmRzV2l0aChcIi9cIikpIHtcclxuICAgICAgLy8gdGhpcyBpcyBhIGZvbGRlclxyXG4gICAgICBsZXQgZm9sZGVyID0gaGllcmFyY2h5Tm90ZXNbMF0uc2xpY2UoMCwgLTEpO1xyXG4gICAgICBpZiAoYXBwLnBsdWdpbnMucGx1Z2lucy5kYXRhdmlldyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBsZXQgcGFnZXMgPSBhcHAucGx1Z2lucy5wbHVnaW5zLmRhdGF2aWV3LmFwaS5wYWdlcyhcclxuICAgICAgICAgIGBcIiR7Zm9sZGVyfVwiYFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHBhZ2VzLnZhbHVlcy5tYXAoKHBhZ2UpID0+IHBhZ2UuZmlsZS5wYXRoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXcgTm90aWNlKFwibWFrZSBzdXJlIHlvdSBoYXZlIGRhdGF2aWV3IGVuYWJsZWRcIik7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSByZXR1cm4gaGllcmFyY2h5Tm90ZXM7XHJcbiAgfVxyXG5cclxuICBnZXRJdGVtVGV4dChpdGVtOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke2l0ZW19YDtcclxuICB9XHJcblxyXG4gIHJlbmRlclN1Z2dlc3Rpb24oaXRlbTogRnV6enlNYXRjaDxzdHJpbmc+LCBlbDogSFRNTEVsZW1lbnQpIHtcclxuICAgIHN1cGVyLnJlbmRlclN1Z2dlc3Rpb24oaXRlbSwgZWwpO1xyXG4gIH1cclxuXHJcbiAgb25DaG9vc2VJdGVtKGl0ZW06IHN0cmluZywgZXZ0OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgbmV3IEhpZXJhcmNoeU5vdGVNYW5pcHVsYXRvcih0aGlzLnBsdWdpbiwgaXRlbSkub3BlbigpO1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gIH1cclxufVxyXG4iLCAiaW1wb3J0IHsgZXJyb3IsIGluZm8gfSBmcm9tIFwibG9nbGV2ZWxcIjtcclxuaW1wb3J0IHtcclxuICBGdXp6eU1hdGNoLFxyXG4gIEZ1enp5U3VnZ2VzdE1vZGFsLFxyXG4gIExpc3RJdGVtQ2FjaGUsXHJcbiAgTWFya2Rvd25WaWV3LFxyXG4gIE5vdGljZSxcclxuICBURmlsZSxcclxufSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHR5cGUgeyBCQ1NldHRpbmdzIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uLy4uL21haW5cIjtcclxuaW1wb3J0IHsgZHJvcFdpa2lsaW5rcyB9IGZyb20gXCIuLi8uLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcbmltcG9ydCB7IE1vZGlmeUhpZXJJdGVtTW9kYWwgfSBmcm9tIFwiLi9Nb2RpZnlIaWVySXRlbU1vZGFsXCI7XHJcblxyXG5pbnRlcmZhY2UgSE5JdGVtIHtcclxuICBkZXB0aDogbnVtYmVyO1xyXG4gIGxpbmU6IHN0cmluZztcclxuICBsaW5lTm86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEhpZXJhcmNoeU5vdGVNYW5pcHVsYXRvciBleHRlbmRzIEZ1enp5U3VnZ2VzdE1vZGFsPEhOSXRlbT4ge1xyXG4gIHBsdWdpbjogQkNQbHVnaW47XHJcbiAgc2V0dGluZ3M6IEJDU2V0dGluZ3M7XHJcbiAgaGllck5vdGVOYW1lOiBzdHJpbmc7XHJcbiAgbGluZXM6IHN0cmluZ1tdO1xyXG4gIGxpc3RJdGVtczogTGlzdEl0ZW1DYWNoZVtdO1xyXG4gIGZpbGU6IFRGaWxlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwbHVnaW46IEJDUGx1Z2luLCBoaWVyTm90ZU5hbWU6IHN0cmluZykge1xyXG4gICAgc3VwZXIoYXBwKTtcclxuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xyXG4gICAgdGhpcy5zZXR0aW5ncyA9IHRoaXMucGx1Z2luLnNldHRpbmdzO1xyXG4gICAgdGhpcy5oaWVyTm90ZU5hbWUgPSBoaWVyTm90ZU5hbWU7XHJcblxyXG4gICAgY29uc3QgY2hvb3NlT3ZlcnJpZGUgPSAoZXZ0OiBLZXlib2FyZEV2ZW50KSA9PiB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgdGhpcy5jaG9vc2VyLnVzZVNlbGVjdGVkSXRlbShldnQpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5zY29wZS5yZWdpc3RlcihbXSwgXCJEZWxldGVcIiwgY2hvb3NlT3ZlcnJpZGUpO1xyXG4gICAgdGhpcy5zY29wZS5yZWdpc3RlcihbXCJTaGlmdFwiXSwgXCJBcnJvd1VwXCIsIGNob29zZU92ZXJyaWRlKTtcclxuICAgIHRoaXMuc2NvcGUucmVnaXN0ZXIoW1wiU2hpZnRcIl0sIFwiQXJyb3dSaWdodFwiLCBjaG9vc2VPdmVycmlkZSk7XHJcbiAgICB0aGlzLnNjb3BlLnJlZ2lzdGVyKFtcIlNoaWZ0XCJdLCBcIkFycm93RG93blwiLCBjaG9vc2VPdmVycmlkZSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbk9wZW4oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnNldFBsYWNlaG9sZGVyKFwiSE4gTWFuaXB1bGF0b3JcIik7XHJcbiAgICB0aGlzLnNldEluc3RydWN0aW9ucyhbXHJcbiAgICAgIHsgY29tbWFuZDogXCJTaGlmdCArIEVudGVyXCIsIHB1cnBvc2U6IFwiSnVtcCB0byBpdGVtXCIgfSxcclxuICAgICAgeyBjb21tYW5kOiBcIlNoaWZ0ICsgXHUyMTkxXCIsIHB1cnBvc2U6IFwiQWRkIHBhcmVudFwiIH0sXHJcbiAgICAgIHsgY29tbWFuZDogXCJTaGlmdCArIFx1MjE5MlwiLCBwdXJwb3NlOiBcIkFkZCBzaWJsaW5nXCIgfSxcclxuICAgICAgeyBjb21tYW5kOiBcIlNoaWZ0ICsgXHUyMTkzIC8gRW50ZXIgLyBDbGlja1wiLCBwdXJwb3NlOiBcIkFkZCBjaGlsZFwiIH0sXHJcbiAgICAgIHsgY29tbWFuZDogXCJEZWxldGVcIiwgcHVycG9zZTogXCJEZWxldGUgaXRlbVwiIH0sXHJcbiAgICBdKTtcclxuXHJcbiAgICB0aGlzLmZpbGUgPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaXJzdExpbmtwYXRoRGVzdCh0aGlzLmhpZXJOb3RlTmFtZSwgXCJcIik7XHJcbiAgICBpZiAoIXRoaXMuZmlsZSkgdGhpcy5saW5lcyA9IFtdO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKHRoaXMpO1xyXG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5jYWNoZWRSZWFkKHRoaXMuZmlsZSk7XHJcbiAgICB0aGlzLmxpbmVzID0gY29udGVudC5zcGxpdChcIlxcblwiKTtcclxuXHJcbiAgICB0aGlzLmxpc3RJdGVtcyA9IGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZSh0aGlzLmZpbGUpLmxpc3RJdGVtcztcclxuXHJcbiAgICBjb25zb2xlLmxvZyh0aGlzKTtcclxuICAgIHN1cGVyLm9uT3BlbigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbXMoKTogSE5JdGVtW10ge1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmxpc3RJdGVtc1xyXG4gICAgICAubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaSA9IGl0ZW0ucG9zaXRpb24uc3RhcnQubGluZTtcclxuICAgICAgICByZXR1cm4geyBpLCBsaW5lOiB0aGlzLmxpbmVzW2ldIH07XHJcbiAgICAgIH0pXHJcbiAgICAgIC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBjb25zdCBzcGxpdHMgPSBpdGVtLmxpbmUuc3BsaXQoXCItIFwiKTtcclxuICAgICAgICBjb25zdCBkZXB0aCA9IHNwbGl0c1swXS5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgbGluZSA9IHNwbGl0cy5zbGljZSgxKS5qb2luKFwiLSBcIik7XHJcblxyXG4gICAgICAgIHJldHVybiB7IGRlcHRoLCBsaW5lLCBsaW5lTm86IGl0ZW0uaSB9O1xyXG4gICAgICB9KTtcclxuXHJcbiAgICBpbmZvKGl0ZW1zKTtcclxuICAgIHJldHVybiBpdGVtcztcclxuICB9XHJcblxyXG4gIGdldEl0ZW1UZXh0KGl0ZW06IEhOSXRlbSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7XCIgXCIucmVwZWF0KGl0ZW0uZGVwdGgpfS0gJHtkcm9wV2lraWxpbmtzKGl0ZW0ubGluZSl9YDtcclxuICB9XHJcblxyXG4gIHJlbmRlclN1Z2dlc3Rpb24oaXRlbTogRnV6enlNYXRjaDxITkl0ZW0+LCBlbDogSFRNTEVsZW1lbnQpIHtcclxuICAgIHN1cGVyLnJlbmRlclN1Z2dlc3Rpb24oaXRlbSwgZWwpO1xyXG4gICAgZWwuaW5uZXJUZXh0ID0gYCR7XCIgXCIucmVwZWF0KGl0ZW0uaXRlbS5kZXB0aCl9LSAke2Ryb3BXaWtpbGlua3MoXHJcbiAgICAgIGl0ZW0uaXRlbS5saW5lXHJcbiAgICApfWA7XHJcbiAgfVxyXG5cclxuICBhc3luYyBkZWxldGVJdGVtKGl0ZW06IEhOSXRlbSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5saW5lcy5zcGxpY2UoaXRlbS5saW5lTm8sIDEpO1xyXG4gICAgICB0aGlzLmxpc3RJdGVtcy5zcGxpY2UoaXRlbS5saW5lTm8sIDEpO1xyXG4gICAgICBhd2FpdCBhcHAudmF1bHQubW9kaWZ5KHRoaXMuZmlsZSwgdGhpcy5saW5lcy5qb2luKFwiXFxuXCIpKTtcclxuICAgICAgbmV3IE5vdGljZShcIkl0ZW0gZGVsZXRlZCBTdWNjZXNmdWxseVwiKTtcclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICBlcnJvcihlcnIpO1xyXG4gICAgICBuZXcgTm90aWNlKFwiQW4gZXJyb3Igb2NjdXJlZC4gUGxlYXNlIGNoZWNrIHRoZSBjb25zb2xlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaG9vc2VJdGVtKGl0ZW06IEhOSXRlbSwgZXZ0OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2dCBpbnN0YW5jZW9mIEtleWJvYXJkRXZlbnQgJiYgZXZ0LmtleSA9PT0gXCJEZWxldGVcIikge1xyXG4gICAgICB0aGlzLmRlbGV0ZUl0ZW0oaXRlbSk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICBldnQgaW5zdGFuY2VvZiBLZXlib2FyZEV2ZW50ICYmXHJcbiAgICAgIGV2dC5rZXkgPT0gXCJFbnRlclwiICYmXHJcbiAgICAgIGV2dC5zaGlmdEtleVxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IHZpZXcgPSBhcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcclxuICAgICAgY29uc3QgeyBlZGl0b3IgfSA9IHZpZXcgPz8ge307XHJcbiAgICAgIGlmICghZWRpdG9yKSByZXR1cm47XHJcbiAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICB2aWV3LmxlYWYub3BlbkZpbGUodGhpcy5maWxlLCB7IGFjdGl2ZTogdHJ1ZSwgbW9kZTogXCJzb3VyY2VcIiB9KTtcclxuICAgICAgZWRpdG9yLnNldEN1cnNvcih7IGxpbmU6IGl0ZW0ubGluZU5vLCBjaDogaXRlbS5kZXB0aCArIDIgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2dCBpbnN0YW5jZW9mIEtleWJvYXJkRXZlbnQgfHwgZXZ0IGluc3RhbmNlb2YgTW91c2VFdmVudCkge1xyXG4gICAgICBsZXQgcmVsOiBcInVwXCIgfCBcImRvd25cIiB8IFwic2FtZVwiO1xyXG4gICAgICBpZiAoZXZ0IGluc3RhbmNlb2YgTW91c2VFdmVudCAmJiBldnQudHlwZSA9PSBcImNsaWNrXCIpIHJlbCA9IFwiZG93blwiO1xyXG4gICAgICBpZiAoZXZ0IGluc3RhbmNlb2YgS2V5Ym9hcmRFdmVudCkgaWYgKGV2dC5rZXkgPT09IFwiRW50ZXJcIikgcmVsID0gXCJkb3duXCI7XHJcbiAgICAgIGlmIChldnQgaW5zdGFuY2VvZiBLZXlib2FyZEV2ZW50ICYmIGV2dC5zaGlmdEtleSkge1xyXG4gICAgICAgIGlmIChldnQua2V5ID09PSBcIkFycm93VXBcIikgcmVsID0gXCJ1cFwiO1xyXG4gICAgICAgIGlmIChldnQua2V5ID09PSBcIkFycm93RG93blwiKSByZWwgPSBcImRvd25cIjtcclxuICAgICAgICBpZiAoZXZ0LmtleSA9PT0gXCJBcnJvd1JpZ2h0XCIpIHJlbCA9IFwic2FtZVwiO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBuZXcgTW9kaWZ5SGllckl0ZW1Nb2RhbChcclxuICAgICAgICB0aGlzLnBsdWdpbixcclxuICAgICAgICBpdGVtLFxyXG4gICAgICAgIHRoaXMuZmlsZSxcclxuICAgICAgICByZWxcclxuICAgICAgKS5vcGVuKCk7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwgImltcG9ydCB7IE1vZGFsLCBURmlsZSB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgTW9kaWZ5SE5JdGVtQ29tcCBmcm9tIFwiLi4vLi4vQ29tcG9uZW50cy9Nb2RpZnlITkl0ZW1Db21wLnN2ZWx0ZVwiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vLi4vbWFpblwiO1xyXG5cclxuaW50ZXJmYWNlIEhOSXRlbSB7XHJcbiAgZGVwdGg6IG51bWJlcjtcclxuICBsaW5lOiBzdHJpbmc7XHJcbiAgbGluZU5vOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBNb2RpZnlIaWVySXRlbU1vZGFsIGV4dGVuZHMgTW9kYWwge1xyXG4gIG1vdW50OiBNb2RpZnlITkl0ZW1Db21wO1xyXG4gIHBsdWdpbjogQkNQbHVnaW47XHJcbiAgbW9kYWw6IE1vZGlmeUhpZXJJdGVtTW9kYWw7XHJcbiAgaG5JdGVtOiBITkl0ZW07XHJcbiAgZmlsZTogVEZpbGU7XHJcbiAgcmVsOiBcInVwXCIgfCBcInNhbWVcIiB8IFwiZG93blwiO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgICBobkl0ZW06IEhOSXRlbSxcclxuICAgIGZpbGU6IFRGaWxlLFxyXG4gICAgcmVsOiBcInVwXCIgfCBcInNhbWVcIiB8IFwiZG93blwiXHJcbiAgKSB7XHJcbiAgICBzdXBlcihhcHApO1xyXG4gICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XHJcbiAgICB0aGlzLm1vZGFsID0gdGhpcztcclxuICAgIHRoaXMuaG5JdGVtID0gaG5JdGVtO1xyXG4gICAgdGhpcy5maWxlID0gZmlsZTtcclxuICAgIHRoaXMucmVsID0gcmVsO1xyXG4gIH1cclxuXHJcbiAgb25PcGVuKCkge1xyXG4gICAgY29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XHJcbiAgICBjb250ZW50RWwuZW1wdHkoKTtcclxuXHJcbiAgICB0aGlzLm1vdW50ID0gbmV3IE1vZGlmeUhOSXRlbUNvbXAoe1xyXG4gICAgICB0YXJnZXQ6IGNvbnRlbnRFbCxcclxuICAgICAgcHJvcHM6IHtcclxuICAgICAgICBtb2RhbDogdGhpcyxcclxuICAgICAgICBzZXR0aW5nczogdGhpcy5wbHVnaW4uc2V0dGluZ3MsXHJcbiAgICAgICAgaG5JdGVtOiB0aGlzLmhuSXRlbSxcclxuICAgICAgICBmaWxlOiB0aGlzLmZpbGUsXHJcbiAgICAgICAgcmVsOiB0aGlzLnJlbCxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZSgpIHtcclxuICAgIHRoaXMubW91bnQuJGRlc3Ryb3koKTtcclxuICAgIHRoaXMuY29udGVudEVsLmVtcHR5KCk7XHJcbiAgfVxyXG59XHJcbiIsIG51bGwsICI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG4gIGltcG9ydCB7IGVycm9yIH0gZnJvbSBcImNvbnNvbGVcIjtcclxuICBpbXBvcnQgeyBOb3RpY2UsIFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbiAgaW1wb3J0IHR5cGUgeyBNb2RpZnlIaWVySXRlbU1vZGFsIH0gZnJvbSBcIi4uL0FsdGVybmF0aXZlSGllcmFyY2hpZXMvSGllcmFyY2h5Tm90ZXMvTW9kaWZ5SGllckl0ZW1Nb2RhbFwiO1xyXG4gIGltcG9ydCB7IEFSUk9XX0RJUkVDVElPTlMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbiAgaW1wb3J0IHR5cGUgeyBCQ1NldHRpbmdzIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuICBpbXBvcnQgeyBkcm9wV2lraWxpbmtzLCBtYWtlV2lraSB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG4gIGV4cG9ydCBsZXQgbW9kYWw6IE1vZGlmeUhpZXJJdGVtTW9kYWw7XHJcbiAgZXhwb3J0IGxldCBzZXR0aW5nczogQkNTZXR0aW5ncztcclxuICBleHBvcnQgbGV0IGhuSXRlbTogSE5JdGVtO1xyXG4gIGV4cG9ydCBsZXQgZmlsZTogVEZpbGU7XHJcbiAgZXhwb3J0IGxldCByZWw6IFwidXBcIiB8IFwic2FtZVwiIHwgXCJkb3duXCI7XHJcblxyXG4gIGludGVyZmFjZSBITkl0ZW0ge1xyXG4gICAgZGVwdGg6IG51bWJlcjtcclxuICAgIGxpbmU6IHN0cmluZztcclxuICAgIGxpbmVObzogbnVtYmVyO1xyXG4gIH1cclxuICBsZXQgaW5wdXRFbDogSFRNTElucHV0RWxlbWVudDtcclxuXHJcbiAgLy9AdHMtaWdub3JlXHJcbiAgbGV0IG5ld0l0ZW0gPSBhcHAud29ya3NwYWNlLmFjdGl2ZUxlYWYudmlldy5maWxlLmJhc2VuYW1lO1xyXG5cclxuICBjb25zdCBidWlsZE5ld0l0ZW0gPSAoXHJcbiAgICBuZXdJdGVtOiBzdHJpbmcsXHJcbiAgICBkZXB0aCA9IGhuSXRlbS5kZXB0aCxcclxuICAgIHByZXZpZXcgPSBmYWxzZVxyXG4gICkgPT5cclxuICAgIGAke1wiIFwiLnJlcGVhdChNYXRoLnJvdW5kKGRlcHRoIC8gKHByZXZpZXcgPyAyIDogMSkpKX0tICR7XHJcbiAgICAgIHByZXZpZXcgPyBuZXdJdGVtIHx8IFwiPEVtcHR5PlwiIDogbWFrZVdpa2kobmV3SXRlbSlcclxuICAgIH1gO1xyXG5cclxuICAvLyBvbk1vdW50KGlucHV0RWwuZm9jdXMpO1xyXG48L3NjcmlwdD5cclxuXHJcbjxoNT5BZGQgYW4ge0FSUk9XX0RJUkVDVElPTlNbcmVsXX0gdG8ge2Ryb3BXaWtpbGlua3MoaG5JdGVtLmxpbmUpfTwvaDU+XHJcbjxkaXY+XHJcbiAgeyNpZiByZWwgPT09IFwidXBcIn1cclxuICAgIHsjaWYgaG5JdGVtLmRlcHRoID09PSAwfVxyXG4gICAgICA8ZGl2PkNhbid0IGFkZCBwYXJlbnQgdG8gdG9wIGxldmVsIGl0ZW0sIGNob29zZSBhbm90aGVyIGRpcmVjdGlvbjwvZGl2PlxyXG4gICAgezplbHNlfVxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxwcmU+XHJcbiAgICAgICAgICB7YnVpbGROZXdJdGVtKG5ld0l0ZW0sIGhuSXRlbS5kZXB0aCAtIDQsIHRydWUpfVxyXG4gICAgICAgIDwvcHJlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIHsvaWZ9XHJcbiAgey9pZn1cclxuICA8ZGl2PlxyXG4gICAgPHByZT5cclxuICAgICAgICA8c3Ryb25nXHJcbiAgICAgICAgPntidWlsZE5ld0l0ZW0oZHJvcFdpa2lsaW5rcyhobkl0ZW0ubGluZSksIGhuSXRlbS5kZXB0aCwgdHJ1ZSl9PC9zdHJvbmdcclxuICAgICAgPlxyXG4gICAgPC9wcmU+XHJcbiAgPC9kaXY+XHJcbiAgeyNpZiByZWwgPT09IFwic2FtZVwifVxyXG4gICAgPGRpdj5cclxuICAgICAgPHByZT5cclxuICAgICAgICB7YnVpbGROZXdJdGVtKG5ld0l0ZW0sIGhuSXRlbS5kZXB0aCwgdHJ1ZSl9XHJcbiAgICA8L3ByZT5cclxuICAgIDwvZGl2PlxyXG4gIHs6ZWxzZSBpZiByZWwgPT09IFwiZG93blwifVxyXG4gICAgPGRpdj5cclxuICAgICAgPHByZT5cclxuICAgICAgICB7YnVpbGROZXdJdGVtKG5ld0l0ZW0sIGhuSXRlbS5kZXB0aCArIDQsIHRydWUpfVxyXG4gICAgPC9wcmU+XHJcbiAgICA8L2Rpdj5cclxuICB7L2lmfVxyXG5cclxuICA8IS0tIHN2ZWx0ZS1pZ25vcmUgYTExeS1uby1vbmNoYW5nZSAtLT5cclxuICA8c2VsZWN0IGNsYXNzPVwiZHJvcGRvd25cIiB3aWR0aD1cIjFcIiBiaW5kOnZhbHVlPXtyZWx9PlxyXG4gICAgPG9wdGlvbiB2YWx1ZT1cInVwXCI+dXA8L29wdGlvbj5cclxuICAgIDxvcHRpb24gdmFsdWU9XCJzYW1lXCI+c2FtZTwvb3B0aW9uPlxyXG4gICAgPG9wdGlvbiB2YWx1ZT1cImRvd25cIj5kb3duPC9vcHRpb24+XHJcbiAgPC9zZWxlY3Q+XHJcblxyXG4gIDxpbnB1dFxyXG4gICAgdHlwZT1cInRleHRcIlxyXG4gICAgcGxhY2Vob2xkZXI9XCJOZXcgaXRlbVwiXHJcbiAgICBiaW5kOnRoaXM9e2lucHV0RWx9XHJcbiAgICBiaW5kOnZhbHVlPXtuZXdJdGVtfVxyXG4gIC8+XHJcblxyXG4gIDxidXR0b25cclxuICAgIG9uOmNsaWNrPXthc3luYyAoZSkgPT4ge1xyXG4gICAgICBpZiAocmVsID09PSBcInVwXCIgJiYgaG5JdGVtLmRlcHRoID09PSAwKSB7XHJcbiAgICAgICAgbmV3IE5vdGljZShcclxuICAgICAgICAgIFwiQ2FuJ3QgYWRkIHBhcmVudCB0byB0b3AgbGV2ZWwgaXRlbSwgY2hvb3NlIGFub3RoZXIgZGlyZWN0aW9uXCJcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5yZWFkKGZpbGUpO1xyXG4gICAgICAgICAgY29uc3QgbGluZXMgPSBjb250ZW50LnNwbGl0KFwiXFxuXCIpO1xyXG4gICAgICAgICAgY29uc3QgbGluZU5vID0gcmVsID09PSBcInVwXCIgPyBobkl0ZW0ubGluZU5vIDogaG5JdGVtLmxpbmVObyArIDE7XHJcblxyXG4gICAgICAgICAgY29uc3QgZGVwdGggPVxyXG4gICAgICAgICAgICByZWwgPT09IFwidXBcIlxyXG4gICAgICAgICAgICAgID8gaG5JdGVtLmRlcHRoIC0gNFxyXG4gICAgICAgICAgICAgIDogcmVsID09PSBcImRvd25cIlxyXG4gICAgICAgICAgICAgID8gaG5JdGVtLmRlcHRoICsgNFxyXG4gICAgICAgICAgICAgIDogaG5JdGVtLmRlcHRoO1xyXG5cclxuICAgICAgICAgIGxpbmVzLnNwbGljZShsaW5lTm8sIDAsIGJ1aWxkTmV3SXRlbShuZXdJdGVtLCBkZXB0aCkpO1xyXG4gICAgICAgICAgYXdhaXQgYXBwLnZhdWx0Lm1vZGlmeShmaWxlLCBsaW5lcy5qb2luKFwiXFxuXCIpKTtcclxuICAgICAgICAgIG1vZGFsLmNsb3NlKCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICBlcnJvcihlcnIpO1xyXG4gICAgICAgICAgbmV3IE5vdGljZShcIkFuIGVycm9yIG9jY3VyZWQsIHBsZWFzZSBjaGVjayB0aGUgY29uc29sZVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH19PkFkZDwvYnV0dG9uXHJcbiAgPlxyXG48L2Rpdj5cclxuXHJcbjxzdHlsZT5cclxuICBwcmUge1xyXG4gICAgZGlzcGxheTogaW5saW5lO1xyXG4gIH1cclxuPC9zdHlsZT5cclxuIiwgImltcG9ydCB7IGluZm8gfSBmcm9tIFwibG9nbGV2ZWxcIjtcclxuaW1wb3J0IHsgTWFya2Rvd25Qb3N0UHJvY2Vzc29yQ29udGV4dCwgTm90aWNlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IGdldERWQXBpIH0gZnJvbSBcIi4vVXRpbHMvT2JzaWRpYW5VdGlsc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVJbmRleCwgaW5kZXhUb0xpbmVQYWlycyB9IGZyb20gXCIuL0NvbW1hbmRzL0NyZWF0ZUluZGV4XCI7XHJcbmltcG9ydCBDQlRyZWUgZnJvbSBcIi4vQ29tcG9uZW50cy9DQlRyZWUuc3ZlbHRlXCI7XHJcbmltcG9ydCB7IENPREVCTE9DS19GSUVMRFMsIENPREVCTE9DS19UWVBFUywgRElSRUNUSU9OUyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgdHlwZSB7IENvZGVibG9ja0ZpZWxkcywgUGFyc2VkQ29kZWJsb2NrIH0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi9tYWluXCI7XHJcbmltcG9ydCB7IGRyb3BGb2xkZXIsIHNwbGl0QW5kVHJpbSB9IGZyb20gXCIuL1V0aWxzL2dlbmVyYWxVdGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIGRmc0FsbFBhdGhzLFxyXG4gIGdldFJlZmxleGl2ZUNsb3N1cmUsXHJcbiAgZ2V0U3ViRm9yRmllbGRzLFxyXG4gIGdldFN1YkluRGlycyxcclxufSBmcm9tIFwiLi9VdGlscy9ncmFwaFV0aWxzXCI7XHJcbmltcG9ydCB7IGdldEZpZWxkSW5mbywgZ2V0RmllbGRzLCBnZXRPcHBEaXIgfSBmcm9tIFwiLi9VdGlscy9IaWVyVXRpbHNcIjtcclxuaW1wb3J0IHsgY3JlYXRlSnVnZ2wgfSBmcm9tIFwiLi9WaXN1YWxpc2F0aW9ucy9KdWdnbFwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENvZGVibG9ja0NCKHBsdWdpbjogQkNQbHVnaW4pIHtcclxuICBjb25zdCB7IHNldHRpbmdzLCBkYiB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgdXNlckhpZXJzLCBjcmVhdGVJbmRleEluZGVudCB9ID0gc2V0dGluZ3M7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICBzb3VyY2U6IHN0cmluZyxcclxuICAgIGVsOiBIVE1MRWxlbWVudCxcclxuICAgIGN0eDogTWFya2Rvd25Qb3N0UHJvY2Vzc29yQ29udGV4dFxyXG4gICkgPT4ge1xyXG4gICAgZGIuc3RhcnQyRyhcIkNvZGVibG9ja1wiKTtcclxuICAgIGNvbnN0IHBhcnNlZFNvdXJjZSA9IHBhcnNlQ29kZUJsb2NrU291cmNlKHNvdXJjZSk7XHJcbiAgICBjb25zdCBlcnIgPSBjb2RlYmxvY2tFcnJvcihwbHVnaW4sIHBhcnNlZFNvdXJjZSk7XHJcblxyXG4gICAgaWYgKGVyciAhPT0gXCJcIikge1xyXG4gICAgICBlbC5pbm5lckhUTUwgPSBlcnI7XHJcbiAgICAgIGRiLmVuZDJHKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgbWluID0gMCxcclxuICAgICAgbWF4ID0gSW5maW5pdHk7XHJcbiAgICBsZXQgeyBkZXB0aCwgZGlyLCBmaWVsZHMsIGZyb20sIGltcGxpZWQsIGZsYXQgfSA9IHBhcnNlZFNvdXJjZTtcclxuICAgIGlmIChkZXB0aCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbnN0IG1pbk51bSA9IHBhcnNlSW50KGRlcHRoWzBdKTtcclxuICAgICAgaWYgKCFpc05hTihtaW5OdW0pKSBtaW4gPSBtaW5OdW07XHJcbiAgICAgIGNvbnN0IG1heE51bSA9IHBhcnNlSW50KGRlcHRoWzFdKTtcclxuICAgICAgaWYgKCFpc05hTihtYXhOdW0pKSBtYXggPSBtYXhOdW07XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNvbnN0IGN1cnJGaWxlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Rmlyc3RMaW5rcGF0aERlc3QoXHJcbiAgICAgIGN0eC5zb3VyY2VQYXRoLFxyXG4gICAgICBcIlwiXHJcbiAgICApO1xyXG4gICAgY29uc3QgeyBiYXNlbmFtZSB9ID0gY3VyckZpbGU7XHJcblxyXG4gICAgbGV0IGZyb21zID0gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGZyb20gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IGFwaSA9IGdldERWQXBpKHBsdWdpbik7XHJcbiAgICAgICAgaWYgKGFwaSkge1xyXG4gICAgICAgICAgY29uc3QgcGFnZXMgPSBhcGkucGFnZVBhdGhzKGZyb20pPy52YWx1ZXM7XHJcbiAgICAgICAgICBmcm9tcyA9IHBhZ2VzLm1hcChkcm9wRm9sZGVyKTtcclxuICAgICAgICB9IGVsc2UgbmV3IE5vdGljZShcIkRhdGF2aWV3IG11c3QgYmUgZW5hYmxlZCBmb3IgYGZyb21gIHRvIHdvcmsuXCIpO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgbmV3IE5vdGljZShgVGhlIHF1ZXJ5IFwiJHtmcm9tfVwiIGZhaWxlZC5gKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9wcERpciA9IGdldE9wcERpcihkaXIpO1xyXG4gICAgY29uc3Qgc3ViID1cclxuICAgICAgaW1wbGllZCA9PT0gZmFsc2VcclxuICAgICAgICA/IGdldFN1YkluRGlycyhwbHVnaW4ubWFpbkcsIGRpcilcclxuICAgICAgICA6IGdldFN1YkluRGlycyhwbHVnaW4ubWFpbkcsIGRpciwgb3BwRGlyKTtcclxuICAgIGNvbnN0IGNsb3NlZCA9IGdldFJlZmxleGl2ZUNsb3N1cmUoc3ViLCB1c2VySGllcnMpO1xyXG5cclxuICAgIGNvbnN0IHN1YkZpZWxkcyA9IGZpZWxkcyA/PyBnZXRGaWVsZHModXNlckhpZXJzKTtcclxuICAgIGNvbnN0IHN1YkNsb3NlZCA9IGdldFN1YkZvckZpZWxkcyhnZXRTdWJJbkRpcnMoY2xvc2VkLCBkaXIpLCBzdWJGaWVsZHMpO1xyXG5cclxuXHJcbiAgICBjb25zdCBhbGxQYXRocyA9IGRmc0FsbFBhdGhzKHN1YkNsb3NlZCwgYmFzZW5hbWUpO1xyXG4gICAgY29uc3QgaW5kZXggPSBjcmVhdGVJbmRleChhbGxQYXRocywgZmFsc2UsIGNyZWF0ZUluZGV4SW5kZW50KTtcclxuICAgIGluZm8oeyBhbGxQYXRocywgaW5kZXggfSk7XHJcblxyXG4gICAgY29uc3QgbGluZXMgPSBpbmRleFRvTGluZVBhaXJzKGluZGV4LCBmbGF0KTtcclxuXHJcbiAgICBzd2l0Y2ggKHBhcnNlZFNvdXJjZS50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJ0cmVlXCI6XHJcbiAgICAgICAgbmV3IENCVHJlZSh7XHJcbiAgICAgICAgICB0YXJnZXQ6IGVsLFxyXG4gICAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgICAgcGx1Z2luLFxyXG4gICAgICAgICAgICBlbCxcclxuICAgICAgICAgICAgbWluLFxyXG4gICAgICAgICAgICBtYXgsXHJcbiAgICAgICAgICAgIGxpbmVzLFxyXG4gICAgICAgICAgICBmcm9tcyxcclxuICAgICAgICAgICAgYmFzZW5hbWUsXHJcbiAgICAgICAgICAgIHBhcnNlZFNvdXJjZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJqdWdnbFwiOlxyXG4gICAgICAgIGNyZWF0ZWRKdWdnbENCKFxyXG4gICAgICAgICAgcGx1Z2luLFxyXG4gICAgICAgICAgZWwsXHJcbiAgICAgICAgICBwYXJzZWRTb3VyY2UsXHJcbiAgICAgICAgICBsaW5lcyxcclxuICAgICAgICAgIGZyb21zLFxyXG4gICAgICAgICAgYmFzZW5hbWUsXHJcbiAgICAgICAgICBtaW4sXHJcbiAgICAgICAgICBtYXhcclxuICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGRiLmVuZDJHKCk7XHJcbiAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFBhcnNlIGEgc3RyaW5nIGFzIGEgYm9vbGVhbiB2YWx1ZS4gSWYgbm90IFwidHJ1ZVwiIG9yIFwiZmFsc2VcIiwgcmV0dXJuIGB2YWx1ZWAuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIHN0cmluZ1xyXG4gKiBAcmV0dXJucyB7c3RyaW5nIHwgYm9vbGVhbn1cclxuICovXHJcbmNvbnN0IHBhcnNlQXNCb29sID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgfCBib29sZWFuID0+XHJcbiAgdmFsdWUgPT09IFwidHJ1ZVwiID8gdHJ1ZSA6IHZhbHVlID09PSBcImZhbHNlXCIgPyBmYWxzZSA6IHZhbHVlO1xyXG5cclxuZnVuY3Rpb24gcGFyc2VDb2RlQmxvY2tTb3VyY2Uoc291cmNlOiBzdHJpbmcpOiBQYXJzZWRDb2RlYmxvY2sge1xyXG4gIGNvbnN0IGxpbmVzID0gc291cmNlLnNwbGl0KFwiXFxuXCIpO1xyXG4gIGNvbnN0IGdldFZhbHVlID0gKHR5cGU6IHN0cmluZykgPT5cclxuICAgIGxpbmVzXHJcbiAgICAgIC5maW5kKChsKSA9PiBsLnN0YXJ0c1dpdGgoYCR7dHlwZX06YCkpXHJcbiAgICAgID8uc3BsaXQoXCI6XCIpPy5bMV1cclxuICAgICAgPy50cmltKCk7XHJcblxyXG4gIGNvbnN0IHJlc3VsdHM6IHsgW2ZpZWxkIGluIENvZGVibG9ja0ZpZWxkc106IHN0cmluZyB8IGJvb2xlYW4gfCBzdHJpbmdbXSB9ID1cclxuICAgIHt9O1xyXG5cclxuICBDT0RFQkxPQ0tfRklFTERTLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGdldFZhbHVlKGZpZWxkKTtcclxuICAgIHJlc3VsdHNbZmllbGRdID0gcGFyc2VBc0Jvb2wodmFsdWUpO1xyXG4gIH0pO1xyXG5cclxuICByZXN1bHRzLmZpZWxkcyA9IHJlc3VsdHMuZmllbGRzXHJcbiAgICA/IHNwbGl0QW5kVHJpbShyZXN1bHRzLmZpZWxkcyBhcyBzdHJpbmcpXHJcbiAgICA6IHVuZGVmaW5lZDtcclxuXHJcbiAgaWYgKHJlc3VsdHMuZGVwdGgpIHtcclxuICAgIGNvbnN0IG1hdGNoID0gKHJlc3VsdHMuZGVwdGggYXMgc3RyaW5nKS5tYXRjaCgvKFxcZCopLT8oXFxkKikvKTtcclxuICAgIHJlc3VsdHMuZGVwdGggPSBbbWF0Y2hbMV0sIG1hdGNoWzJdXTtcclxuICB9XHJcblxyXG4gIHJldHVybiByZXN1bHRzIGFzIHVua25vd24gYXMgUGFyc2VkQ29kZWJsb2NrO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjb2RlYmxvY2tFcnJvcihwbHVnaW46IEJDUGx1Z2luLCBwYXJzZWRTb3VyY2U6IFBhcnNlZENvZGVibG9jaykge1xyXG4gIGNvbnN0IHsgZGlyLCBmaWVsZHMsIHR5cGUsIHRpdGxlLCBkZXB0aCwgZmxhdCwgY29udGVudCwgZnJvbSwgaW1wbGllZCB9ID1cclxuICAgIHBhcnNlZFNvdXJjZTtcclxuICBjb25zdCB7IHVzZXJIaWVycyB9ID0gcGx1Z2luLnNldHRpbmdzO1xyXG4gIGxldCBlcnIgPSBcIlwiO1xyXG5cclxuICBpZiAoIUNPREVCTE9DS19UWVBFUy5pbmNsdWRlcyh0eXBlKSlcclxuICAgIGVyciArPSBgPGNvZGU+dHlwZTogJHt0eXBlfTwvY29kZT4gaXMgbm90IGEgdmFsaWQgdHlwZS4gSXQgbXVzdCBiZSBvbmUgb2Y6ICR7Q09ERUJMT0NLX1RZUEVTLm1hcChcclxuICAgICAgKHR5cGUpID0+IGA8Y29kZT4ke3R5cGV9PC9jb2RlPmBcclxuICAgICkuam9pbihcIiwgXCIpfS48L2JyPmA7XHJcblxyXG4gIGNvbnN0IHZhbGlkRGlyID0gRElSRUNUSU9OUy5pbmNsdWRlcyhkaXIpO1xyXG4gIGlmICghdmFsaWREaXIpXHJcbiAgICBlcnIgKz0gYDxjb2RlPmRpcjogJHtkaXJ9PC9jb2RlPiBpcyBub3QgYSB2YWxpZCBkaXJlY3Rpb24uPC9icj5gO1xyXG5cclxuICBjb25zdCBhbGxGaWVsZHMgPSBnZXRGaWVsZHModXNlckhpZXJzKTtcclxuICBbZmllbGRzXS5mbGF0KCk/LmZvckVhY2goKGYpID0+IHtcclxuICAgIGlmIChmICE9PSB1bmRlZmluZWQgJiYgIWFsbEZpZWxkcy5pbmNsdWRlcyhmKSlcclxuICAgICAgZXJyICs9IGA8Y29kZT5maWVsZHM6ICR7Zn08L2NvZGU+IGlzIG5vdCBhIGZpZWxkIGluIHlvdXIgaGllcmFyY2hpZXMuPC9icj5gO1xyXG4gIH0pO1xyXG5cclxuICBpZiAodGl0bGUgIT09IHVuZGVmaW5lZCAmJiB0aXRsZSAhPT0gZmFsc2UpXHJcbiAgICBlcnIgKz0gYDxjb2RlPnRpdGxlOiAke3RpdGxlfTwvY29kZT4gaXMgbm90IGEgdmFsaWQgdmFsdWUuIEl0IGhhcyB0byBiZSA8Y29kZT5mYWxzZTwvY29kZT4sIG9yIGxlYXZlIHRoZSBlbnRpcmUgbGluZSBvdXQuPC9icj5gO1xyXG5cclxuICBpZiAoZGVwdGggIT09IHVuZGVmaW5lZCAmJiBkZXB0aC5ldmVyeSgobnVtKSA9PiBpc05hTihwYXJzZUludChudW0pKSkpXHJcbiAgICBlcnIgKz0gYDxjb2RlPmRlcHRoOiAke2RlcHRofTwvY29kZT4gaXMgbm90IGEgdmFsaWQgdmFsdWUuIEl0IGhhcyB0byBiZSBhIG51bWJlci48L2JyPmA7XHJcblxyXG4gIGlmIChmbGF0ICE9PSB1bmRlZmluZWQgJiYgZmxhdCAhPT0gdHJ1ZSlcclxuICAgIGVyciArPSBgPGNvZGU+ZmxhdDogJHtmbGF0fTwvY29kZT4gaXMgbm90IGEgdmFsaWQgdmFsdWUuIEl0IGhhcyB0byBiZSA8Y29kZT50cnVlPC9jb2RlPiwgb3IgbGVhdmUgdGhlIGVudGlyZSBsaW5lIG91dC48L2JyPmA7XHJcblxyXG4gIGlmIChjb250ZW50ICE9PSB1bmRlZmluZWQgJiYgY29udGVudCAhPT0gXCJvcGVuXCIgJiYgY29udGVudCAhPT0gXCJjbG9zZWRcIilcclxuICAgIGVyciArPSBgPGNvZGU+Y29udGVudDogJHtjb250ZW50fTwvY29kZT4gaXMgbm90IGEgdmFsaWQgdmFsdWUuIEl0IGhhcyB0byBiZSA8Y29kZT5vcGVuPC9jb2RlPiBvciA8Y29kZT5jbG9zZWQ8L2NvZGU+LCBvciBsZWF2ZSB0aGUgZW50aXJlIGxpbmUgb3V0LjwvYnI+YDtcclxuXHJcbiAgaWYgKFxyXG4gICAgZnJvbSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAhYXBwLnBsdWdpbnMuZW5hYmxlZFBsdWdpbnMuaGFzKFwiZGF0YXZpZXdcIilcclxuICApIHtcclxuICAgIGVyciArPSBgRGF0YXZpZXcgbXVzdCBiZSBlbmFibGVkIHRvIHVzZSA8Y29kZT5mcm9tPC9jb2RlPi48L2JyPmA7XHJcbiAgfVxyXG5cclxuICBpZiAoaW1wbGllZCAhPT0gdW5kZWZpbmVkICYmIGltcGxpZWQgIT09IGZhbHNlKVxyXG4gICAgZXJyICs9IGA8Y29kZT5pbXBsaWVkOiAke2ltcGxpZWR9PC9jb2RlPiBpcyBub3QgYSB2YWxpZCB2YWx1ZS4gSXQgaGFzIHRvIGJlIDxjb2RlPmZhbHNlPC9jb2RlPiwgb3IgbGVhdmUgdGhlIGVudGlyZSBsaW5lIG91dC48L2JyPmA7XHJcblxyXG4gIHJldHVybiBlcnIgPT09IFwiXCJcclxuICAgID8gXCJcIlxyXG4gICAgOiBgJHtlcnJ9PC9icj5cclxuICAgIEEgdmFsaWQgZXhhbXBsZSB3b3VsZCBiZTpcclxuICAgIDxwcmU+PGNvZGU+XHJcbiAgICAgIHR5cGU6IHRyZWVcclxuICAgICAgZGlyOiAke3ZhbGlkRGlyID8gZGlyIDogXCJkb3duXCJ9XHJcbiAgICAgIGZpZWxkczogJHthbGxGaWVsZHNcclxuICAgICAgLm1hcCgoZikgPT4ge1xyXG4gICAgICAgIHJldHVybiB7IGYsIGRpcjogZ2V0RmllbGRJbmZvKHVzZXJIaWVycywgZikuZmllbGREaXIgfTtcclxuICAgICAgfSlcclxuICAgICAgLmZpbHRlcigoaW5mbykgPT4gaW5mby5kaXIgPT09IGRpcilcclxuICAgICAgLm1hcCgoaW5mbykgPT4gaW5mby5mKVxyXG4gICAgICAuam9pbihcIiwgXCIpIHx8IFwiY2hpbGRcIlxyXG4gICAgfVxyXG4gICAgICBkZXB0aDogM1xyXG4gICAgICA8L2NvZGU+PC9wcmU+YDtcclxufVxyXG5cclxuY29uc3QgaW5kZW50VG9EZXB0aCA9IChpbmRlbnQ6IHN0cmluZykgPT4gaW5kZW50Lmxlbmd0aCAvIDIgKyAxO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1lZXRzQ29uZGl0aW9ucyhcclxuICBpbmRlbnQ6IHN0cmluZyxcclxuICBub2RlOiBzdHJpbmcsXHJcbiAgZnJvbXM6IHN0cmluZ1tdLFxyXG4gIG1pbjogbnVtYmVyLFxyXG4gIG1heDogbnVtYmVyXHJcbikge1xyXG4gIGNvbnN0IGRlcHRoID0gaW5kZW50VG9EZXB0aChpbmRlbnQpO1xyXG4gIHJldHVybiAoXHJcbiAgICBkZXB0aCA+PSBtaW4gJiZcclxuICAgIGRlcHRoIDw9IG1heCAmJlxyXG4gICAgKGZyb21zID09PSB1bmRlZmluZWQgfHwgZnJvbXMuaW5jbHVkZXMobm9kZSkpXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZWRKdWdnbENCKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgdGFyZ2V0OiBIVE1MRWxlbWVudCxcclxuICBhcmdzOiBQYXJzZWRDb2RlYmxvY2ssXHJcbiAgbGluZXM6IFtzdHJpbmcsIHN0cmluZ11bXSxcclxuICBmcm9tczogc3RyaW5nW10sXHJcbiAgc291cmNlOiBzdHJpbmcsXHJcbiAgbWluOiBudW1iZXIsXHJcbiAgbWF4OiBudW1iZXJcclxuKSB7XHJcbiAgY29uc3Qgbm9kZXMgPSBsaW5lc1xyXG4gICAgLmZpbHRlcigoW2luZGVudCwgbm9kZV0pID0+IG1lZXRzQ29uZGl0aW9ucyhpbmRlbnQsIG5vZGUsIGZyb21zLCBtaW4sIG1heCkpXHJcbiAgICAubWFwKChbXywgbm9kZV0pID0+IG5vZGUgKyBcIi5tZFwiKTtcclxuICBpZiAobWluIDw9IDApIG5vZGVzLnB1c2goc291cmNlICsgXCIubWRcIik7XHJcblxyXG4gIGNyZWF0ZUp1Z2dsKHBsdWdpbiwgdGFyZ2V0LCBub2RlcywgYXJncyk7XHJcbn1cclxuIiwgbnVsbCwgIjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbiAgaW1wb3J0IHsgTWFya2Rvd25SZW5kZXJlciB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG4gIGltcG9ydCB7IG9uTW91bnQgfSBmcm9tIFwic3ZlbHRlXCI7XHJcblxyXG4gIGV4cG9ydCBsZXQgcGF0aDogc3RyaW5nO1xyXG5cclxuICBhc3luYyBmdW5jdGlvbiBnZXRDb250ZW50KG5vdGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgZmlsZSA9IGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KG5vdGUsIFwiXCIpO1xyXG4gICAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5jYWNoZWRSZWFkKGZpbGUpO1xyXG4gIH1cclxuXHJcbiAgbGV0IGVsOiBIVE1MRWxlbWVudDtcclxuICBvbk1vdW50KGFzeW5jICgpID0+IHtcclxuICAgIE1hcmtkb3duUmVuZGVyZXIucmVuZGVyTWFya2Rvd24oYXdhaXQgZ2V0Q29udGVudChwYXRoKSwgZWwsIHBhdGgsIG51bGwpO1xyXG4gIH0pO1xyXG48L3NjcmlwdD5cclxuXHJcbjxkaXYgY2xhc3M9XCJCQy1ub3RlLWNvbnRlbnRcIiBiaW5kOnRoaXM9e2VsfSAvPlxyXG5cclxuPHN0eWxlPlxyXG4gIGRpdi5CQy1ub3RlLWNvbnRlbnQge1xyXG4gICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xyXG4gIH1cclxuPC9zdHlsZT5cclxuIiwgbnVsbCwgIjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbiAgaW1wb3J0IHtcclxuICAgIGlzSW5WYXVsdCxcclxuICAgIG9wZW5PclN3aXRjaCxcclxuICAgIGhvdmVyUHJldmlldyxcclxuICB9IGZyb20gXCJvYnNpZGlhbi1jb21tdW5pdHktbGliL2Rpc3QvdXRpbHNcIjtcclxuICBpbXBvcnQgeyBtZWV0c0NvbmRpdGlvbnMgfSBmcm9tIFwiLi4vQ29kZWJsb2Nrc1wiO1xyXG4gIGltcG9ydCB0eXBlIHsgUGFyc2VkQ29kZWJsb2NrIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuICBpbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG4gIGltcG9ydCB7IGRyb3BEZW5kcm9uIH0gZnJvbSBcIi4uL1V0aWxzL2dlbmVyYWxVdGlsc1wiO1xyXG4gIGltcG9ydCBSZW5kZXJNYXJrZG93biBmcm9tIFwiLi9SZW5kZXJNYXJrZG93bi5zdmVsdGVcIjtcclxuXHJcbiAgZXhwb3J0IGxldCBwbHVnaW46IEJDUGx1Z2luO1xyXG4gIGV4cG9ydCBsZXQgZWw6IEhUTUxFbGVtZW50O1xyXG4gIGV4cG9ydCBsZXQgbGluZXM6IFtzdHJpbmcsIHN0cmluZ11bXTtcclxuICBleHBvcnQgbGV0IGZyb21zOiBzdHJpbmdbXTtcclxuICBleHBvcnQgbGV0IG1pbjogbnVtYmVyO1xyXG4gIGV4cG9ydCBsZXQgbWF4OiBudW1iZXI7XHJcbiAgZXhwb3J0IGxldCBiYXNlbmFtZTogc3RyaW5nO1xyXG4gIGV4cG9ydCBsZXQgcGFyc2VkU291cmNlOiBQYXJzZWRDb2RlYmxvY2s7XHJcblxyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCB7IHRpdGxlLCBjb250ZW50LCBkaXIgfSA9IHBhcnNlZFNvdXJjZTtcclxuXHJcbiAgY29uc3QgYWN0aXZlTGVhZlZpZXcgPSBhcHAud29ya3NwYWNlLmFjdGl2ZUxlYWYudmlldztcclxuPC9zY3JpcHQ+XHJcblxyXG57I2lmIHRpdGxlICE9PSBmYWxzZX1cclxuICA8aDM+e2Rpcn0gb2Yge2Jhc2VuYW1lfTwvaDM+XHJcbnsvaWZ9XHJcbjxkaXYgY2xhc3M9XCJCQy10cmVlXCI+XHJcbiAgeyNlYWNoIGxpbmVzIGFzIFtpbmRlbnQsIGxpbmtdfVxyXG4gICAgeyNpZiBtZWV0c0NvbmRpdGlvbnMoaW5kZW50LCBsaW5rLCBmcm9tcywgbWluLCBtYXgpfVxyXG4gICAgICB7I2lmIGNvbnRlbnQgPT09IFwib3BlblwiIHx8IGNvbnRlbnQgPT09IFwiY2xvc2VkXCJ9XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxwcmUgY2xhc3M9XCJpbmRlbnRcIj57aW5kZW50fTwvcHJlPlxyXG4gICAgICAgICAgPGRldGFpbHMgb3Blbj17Y29udGVudCA9PT0gXCJvcGVuXCJ9PlxyXG4gICAgICAgICAgICA8c3VtbWFyeT5cclxuICAgICAgICAgICAgICA8IS0tIHN2ZWx0ZS1pZ25vcmUgYTExeS1tb3VzZS1ldmVudHMtaGF2ZS1rZXktZXZlbnRzIC0tPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImludGVybmFsLWxpbmtcIlxyXG4gICAgICAgICAgICAgICAgb246Y2xpY2s9e2FzeW5jIChlKSA9PiBhd2FpdCBvcGVuT3JTd2l0Y2gobGluaywgZSl9XHJcbiAgICAgICAgICAgICAgICBvbjptb3VzZW92ZXI9eyhlKSA9PiBob3ZlclByZXZpZXcoZSwgYWN0aXZlTGVhZlZpZXcsIGxpbmspfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwhLS0gc3ZlbHRlLWlnbm9yZSBhMTF5LW1pc3NpbmctYXR0cmlidXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnRlcm5hbC1saW5rIHtpc0luVmF1bHQobGluaykgPyAnJyA6ICdpcy11bnJlc29sdmVkJ31cIlxyXG4gICAgICAgICAgICAgICAgICA+e2Ryb3BEZW5kcm9uKGxpbmssIHNldHRpbmdzKX08L2FcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3VtbWFyeT5cclxuICAgICAgICAgICAgPFJlbmRlck1hcmtkb3duIHBhdGg9e2xpbmt9IC8+XHJcbiAgICAgICAgICA8L2RldGFpbHM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIHs6ZWxzZX1cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPHByZSBjbGFzcz1cImluZGVudFwiPntpbmRlbnQgKyBcIi1cIn08L3ByZT5cclxuICAgICAgICAgIDwhLS0gc3ZlbHRlLWlnbm9yZSBhMTF5LW1vdXNlLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgLS0+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBjbGFzcz1cImludGVybmFsLWxpbmtcIlxyXG4gICAgICAgICAgICBvbjpjbGljaz17YXN5bmMgKGUpID0+IGF3YWl0IG9wZW5PclN3aXRjaChsaW5rLCBlKX1cclxuICAgICAgICAgICAgb246bW91c2VvdmVyPXsoZSkgPT4gaG92ZXJQcmV2aWV3KGUsIGFjdGl2ZUxlYWZWaWV3LCBsaW5rKX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPCEtLSBzdmVsdGUtaWdub3JlIGExMXktbWlzc2luZy1hdHRyaWJ1dGUgLS0+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwiaW50ZXJuYWwtbGluayB7aXNJblZhdWx0KGxpbmspID8gJycgOiAnaXMtdW5yZXNvbHZlZCd9XCI+XHJcbiAgICAgICAgICAgICAge2Ryb3BEZW5kcm9uKGxpbmssIHNldHRpbmdzKX1cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB7L2lmfVxyXG4gICAgey9pZn1cclxuICB7L2VhY2h9XHJcbjwvZGl2PlxyXG5cclxuPHN0eWxlPlxyXG4gIC5CQy10cmVlIHtcclxuICAgIHBhZGRpbmctbGVmdDogNXB4O1xyXG4gIH1cclxuICAvKiAuQkMtdHJlZSA+IGRpdiB7XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gIH0gKi9cclxuICBwcmUuaW5kZW50IHtcclxuICAgIGRpc3BsYXk6IGlubGluZTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgcG9zaXRpb246IHRvcDtcclxuICB9XHJcbiAgZGV0YWlscyB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgfVxyXG5cclxuICAuaXMtdW5yZXNvbHZlZCB7XHJcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XHJcbiAgfVxyXG48L3N0eWxlPlxyXG4iLCAiaW1wb3J0IHsgTm90aWNlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB0eXBlIHsgRGlyZWN0aW9ucyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IGdldFJlYWxuSW1wbGllZCB9IGZyb20gXCIuLi9VdGlscy9ncmFwaFV0aWxzXCI7XHJcbmltcG9ydCB7Z2V0Q3VyckZpbGV9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24ganVtcFRvRmlyc3REaXIocGx1Z2luOiBCQ1BsdWdpbiwgZGlyOiBEaXJlY3Rpb25zKSB7XHJcbiAgY29uc3QgeyBsaW1pdEp1bXBUb0ZpcnN0RmllbGRzIH0gPSBwbHVnaW4uc2V0dGluZ3M7XHJcbiAgY29uc3QgZmlsZSA9IGdldEN1cnJGaWxlKCk7XHJcbiAgaWYgKCFmaWxlKSB7XHJcbiAgICBuZXcgTm90aWNlKFwiWW91IG5lZWQgdG8gYmUgZm9jdXNzZWQgb24gYSBNYXJrZG93biBmaWxlXCIpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBjb25zdCB7IGJhc2VuYW1lIH0gPSBmaWxlO1xyXG5cclxuICBjb25zdCByZWFsc05JbXBsaWVkcyA9IGdldFJlYWxuSW1wbGllZChwbHVnaW4sIGJhc2VuYW1lLCBkaXIpW2Rpcl07XHJcbiAgY29uc3QgYWxsQkNzID0gWy4uLnJlYWxzTkltcGxpZWRzLnJlYWxzLCAuLi5yZWFsc05JbXBsaWVkcy5pbXBsaWVkc107XHJcbiAgaWYgKGFsbEJDcy5sZW5ndGggPT09IDApIHtcclxuICAgIG5ldyBOb3RpY2UoYE5vICR7ZGlyfSBmb3VuZGApO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgdG9Ob2RlID0gYWxsQkNzLmZpbmQoKGJjKSA9PlxyXG4gICAgbGltaXRKdW1wVG9GaXJzdEZpZWxkcy5pbmNsdWRlcyhiYy5maWVsZClcclxuICApPy50bztcclxuXHJcbiAgaWYgKCF0b05vZGUpIHtcclxuICAgIG5ldyBOb3RpY2UoXHJcbiAgICAgIGBObyBub3RlIHdhcyBmb3VuZCBpbiAke2Rpcn0gZ2l2ZW4gdGhlIGxpbWl0ZWQgZmllbGRzIGFsbG93ZWQ6ICR7bGltaXRKdW1wVG9GaXJzdEZpZWxkcy5qb2luKFxyXG4gICAgICAgIFwiLCBcIlxyXG4gICAgICApfWBcclxuICAgICk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBjb25zdCB0b0ZpbGUgPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaXJzdExpbmtwYXRoRGVzdCh0b05vZGUsIFwiXCIpO1xyXG4gIGF3YWl0IGFwcC53b3Jrc3BhY2UuYWN0aXZlTGVhZi5vcGVuRmlsZSh0b0ZpbGUpO1xyXG59XHJcbiIsICJpbXBvcnQgeyBub3JtYWxpemVQYXRoLCBOb3RpY2UsIFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB0eXBlIHsgRGlyZWN0aW9ucyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IGdldEZpZWxkSW5mbywgZ2V0T3BwRmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVPclVwZGF0ZVlhbWwsIGdldEN1cnJGaWxlLCBzcGxpdEF0WWFtbCB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG5jb25zdCByZXNvbHZlVGhyZWFkaW5nTmFtZVRlbXBsYXRlID0gKFxyXG4gIHRlbXBsYXRlOiBzdHJpbmcsXHJcbiAgY3VyckZpbGU6IFRGaWxlLFxyXG4gIGZpZWxkOiBzdHJpbmcsXHJcbiAgZGlyOiBEaXJlY3Rpb25zLFxyXG4gIGRhdGVGb3JtYXQ6IHN0cmluZ1xyXG4pID0+XHJcbiAgdGVtcGxhdGVcclxuICAgID8gdGVtcGxhdGVcclxuICAgICAgLnJlcGxhY2UoXCJ7e2N1cnJlbnR9fVwiLCBjdXJyRmlsZS5iYXNlbmFtZSlcclxuICAgICAgLnJlcGxhY2UoXCJ7e2ZpZWxkfX1cIiwgZmllbGQpXHJcbiAgICAgIC5yZXBsYWNlKFwie3tkaXJ9fVwiLCBkaXIpXHJcbiAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAucmVwbGFjZShcInt7ZGF0ZX19XCIsIG1vbWVudCgpLmZvcm1hdChkYXRlRm9ybWF0KSlcclxuICAgIDogXCJVbnRpdGxlZFwiO1xyXG5cclxuZnVuY3Rpb24gbWFrZUZpbGVuYW1lVW5pcXVlKGZpbGVuYW1lOiBzdHJpbmcpIHtcclxuICBsZXQgaSA9IDEsXHJcbiAgICBuZXdOYW1lID0gZmlsZW5hbWU7XHJcbiAgd2hpbGUgKGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KG5ld05hbWUsIFwiXCIpKSB7XHJcbiAgICBpZiAoaSA9PT0gMSkgbmV3TmFtZSArPSBgICR7aX1gO1xyXG4gICAgZWxzZSBuZXdOYW1lID0gbmV3TmFtZS5zbGljZSgwLCAtMikgKyBgICR7aX1gO1xyXG4gICAgaSsrO1xyXG4gIH1cclxuICByZXR1cm4gbmV3TmFtZTtcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVRocmVhZGluZ0NvbnRlbnRUZW1wbGF0ZShcclxuICB3cml0ZUJDc0lubGluZTogYm9vbGVhbixcclxuICB0ZW1wbGF0ZVBhdGg6IHN0cmluZyxcclxuICBvcHBGaWVsZDogc3RyaW5nLFxyXG4gIGN1cnJGaWxlOiBURmlsZSxcclxuICBjcnVtYjogc3RyaW5nXHJcbikge1xyXG4gIGxldCBuZXdDb250ZW50ID0gY3J1bWI7XHJcblxyXG4gIGlmICh0ZW1wbGF0ZVBhdGgpIHtcclxuICAgIGNvbnN0IHRlbXBsYXRlRmlsZSA9IGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KFxyXG4gICAgICB0ZW1wbGF0ZVBhdGgsXHJcbiAgICAgIFwiXCJcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgdGVtcGxhdGUgPSBhd2FpdCBhcHAudmF1bHQuY2FjaGVkUmVhZCh0ZW1wbGF0ZUZpbGUpO1xyXG4gICAgbmV3Q29udGVudCA9IHRlbXBsYXRlLnJlcGxhY2UoXHJcbiAgICAgIC9cXHtcXHtCQy10aHJlYWQtY3J1bWJcXH1cXH0vaSxcclxuICAgICAgd3JpdGVCQ3NJbmxpbmVcclxuICAgICAgICA/IGAke29wcEZpZWxkfTo6IFtbJHtjdXJyRmlsZS5iYXNlbmFtZX1dXWBcclxuICAgICAgICA6IGAke29wcEZpZWxkfTogWycke2N1cnJGaWxlLmJhc2VuYW1lfSddYFxyXG4gICAgKTtcclxuICB9XHJcbiAgcmV0dXJuIG5ld0NvbnRlbnQ7XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0aHJlYWQocGx1Z2luOiBCQ1BsdWdpbiwgZmllbGQ6IHN0cmluZykge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCB7XHJcbiAgICB1c2VySGllcnMsXHJcbiAgICB0aHJlYWRpbmdUZW1wbGF0ZSxcclxuICAgIGRhdGVGb3JtYXQsXHJcbiAgICB0aHJlYWRJbnRvTmV3UGFuZSxcclxuICAgIHRocmVhZGluZ0RpclRlbXBsYXRlcyxcclxuICAgIHRocmVhZFVuZGVyQ3Vyc29yLFxyXG4gICAgd3JpdGVCQ3NJbmxpbmUsXHJcbiAgfSA9IHNldHRpbmdzO1xyXG5cclxuICBjb25zdCBjdXJyRmlsZSA9IGdldEN1cnJGaWxlKCk7XHJcbiAgaWYgKCFjdXJyRmlsZSkgcmV0dXJuO1xyXG5cclxuICBjb25zdCBuZXdGaWxlUGFyZW50ID0gYXBwLmZpbGVNYW5hZ2VyLmdldE5ld0ZpbGVQYXJlbnQoY3VyckZpbGUucGF0aCk7XHJcblxyXG4gIGNvbnN0IGRpciA9IGdldEZpZWxkSW5mbyh1c2VySGllcnMsIGZpZWxkKS5maWVsZERpcjtcclxuICBjb25zdCBvcHBGaWVsZCA9IGdldE9wcEZpZWxkcyh1c2VySGllcnMsIGZpZWxkLCBkaXIpWzBdO1xyXG5cclxuICBsZXQgbmV3QmFzZW5hbWUgPSByZXNvbHZlVGhyZWFkaW5nTmFtZVRlbXBsYXRlKFxyXG4gICAgdGhyZWFkaW5nVGVtcGxhdGUsXHJcbiAgICBjdXJyRmlsZSxcclxuICAgIGZpZWxkLFxyXG4gICAgZGlyLFxyXG4gICAgZGF0ZUZvcm1hdFxyXG4gICk7XHJcbiAgbmV3QmFzZW5hbWUgPSBtYWtlRmlsZW5hbWVVbmlxdWUobmV3QmFzZW5hbWUpO1xyXG5cclxuICBjb25zdCBvcHBDcnVtYiA9IHdyaXRlQkNzSW5saW5lXHJcbiAgICA/IGAke29wcEZpZWxkfTo6IFtbJHtjdXJyRmlsZS5iYXNlbmFtZX1dXWBcclxuICAgIDogYC0tLVxcbiR7b3BwRmllbGR9OiBbJyR7Y3VyckZpbGUuYmFzZW5hbWV9J11cXG4tLS1gO1xyXG5cclxuICBjb25zdCB0ZW1wbGF0ZVBhdGggPSB0aHJlYWRpbmdEaXJUZW1wbGF0ZXNbZGlyXTtcclxuICBjb25zdCBuZXdDb250ZW50ID0gYXdhaXQgcmVzb2x2ZVRocmVhZGluZ0NvbnRlbnRUZW1wbGF0ZShcclxuICAgIHdyaXRlQkNzSW5saW5lLFxyXG4gICAgdGVtcGxhdGVQYXRoLFxyXG4gICAgb3BwRmllbGQsXHJcbiAgICBjdXJyRmlsZSxcclxuICAgIG9wcENydW1iXHJcbiAgKTtcclxuXHJcbiAgY29uc3QgbmV3RmlsZSA9IGF3YWl0IGFwcC52YXVsdC5jcmVhdGUoXHJcbiAgICBub3JtYWxpemVQYXRoKGAke25ld0ZpbGVQYXJlbnQucGF0aH0vJHtuZXdCYXNlbmFtZX0ubWRgKSxcclxuICAgIG5ld0NvbnRlbnRcclxuICApO1xyXG5cclxuICBpZiAoIXdyaXRlQkNzSW5saW5lKSB7XHJcbiAgICBjb25zdCB7IGFwaSB9ID0gYXBwLnBsdWdpbnMucGx1Z2lucy5tZXRhZWRpdCA/PyB7fTtcclxuICAgIGlmICghYXBpKSB7XHJcbiAgICAgIG5ldyBOb3RpY2UoXHJcbiAgICAgICAgXCJNZXRhZWRpdCBtdXN0IGJlIGVuYWJsZWQgdG8gd3JpdGUgdG8geWFtbC4gQWx0ZXJuYXRpdmVseSwgdG9nZ2xlIHRoZSBzZXR0aW5nIGBXcml0ZSBCcmVhZGNydW1icyBJbmxpbmVgIHRvIHVzZSBEYXRhdmlldyBpbmxpbmUgZmllbGRzIGluc3RlYWQuXCJcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgY3JlYXRlT3JVcGRhdGVZYW1sKFxyXG4gICAgICBmaWVsZCxcclxuICAgICAgbmV3RmlsZS5iYXNlbmFtZSxcclxuICAgICAgY3VyckZpbGUsXHJcbiAgICAgIGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShjdXJyRmlsZSkuZnJvbnRtYXR0ZXIsXHJcbiAgICAgIGFwaVxyXG4gICAgKTtcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc3QgY3J1bWIgPSBgJHtmaWVsZH06OiBbWyR7bmV3RmlsZS5iYXNlbmFtZX1dXWA7XHJcbiAgICBjb25zdCB7IGVkaXRvciB9ID0gYXBwLndvcmtzcGFjZS5hY3RpdmVMZWFmLnZpZXc7XHJcbiAgICBpZiAodGhyZWFkVW5kZXJDdXJzb3IgfHwgIWVkaXRvcikge1xyXG4gICAgICBlZGl0b3IucmVwbGFjZVJhbmdlKGNydW1iLCBlZGl0b3IuZ2V0Q3Vyc29yKCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gVE9ETyBDaGVjayBpZiB0aGlzIG5vdGUgYWxyZWFkeSBoYXMgdGhpcyBmaWVsZFxyXG4gICAgICBsZXQgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5yZWFkKGN1cnJGaWxlKTtcclxuICAgICAgY29uc3Qgc3BsaXRzID0gc3BsaXRBdFlhbWwoY29udGVudCk7XHJcbiAgICAgIGNvbnRlbnQgPVxyXG4gICAgICAgIHNwbGl0c1swXSArXHJcbiAgICAgICAgKHNwbGl0c1swXS5sZW5ndGggPyBcIlxcblwiIDogXCJcIikgK1xyXG4gICAgICAgIGNydW1iICtcclxuICAgICAgICAoc3BsaXRzWzFdLmxlbmd0aCA/IFwiXFxuXCIgOiBcIlwiKSArXHJcbiAgICAgICAgc3BsaXRzWzFdO1xyXG5cclxuICAgICAgYXdhaXQgYXBwLnZhdWx0Lm1vZGlmeShjdXJyRmlsZSwgY29udGVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdCBsZWFmID0gdGhyZWFkSW50b05ld1BhbmVcclxuICAgID8gYXBwLndvcmtzcGFjZS5nZXRMZWFmKHRydWUpXHJcbiAgICA6IGFwcC53b3Jrc3BhY2UuYWN0aXZlTGVhZjtcclxuXHJcbiAgYXdhaXQgbGVhZi5vcGVuRmlsZShuZXdGaWxlLCB7IGFjdGl2ZTogdHJ1ZSwgbW9kZTogXCJzb3VyY2VcIiB9KTtcclxuXHJcbiAgaWYgKHRlbXBsYXRlUGF0aCkge1xyXG4gICAgaWYgKGFwcC5wbHVnaW5zLnBsdWdpbnNbXCJ0ZW1wbGF0ZXItb2JzaWRpYW5cIl0pIHtcclxuICAgICAgYXBwLmNvbW1hbmRzLmV4ZWN1dGVDb21tYW5kQnlJZChcclxuICAgICAgICBcInRlbXBsYXRlci1vYnNpZGlhbjpyZXBsYWNlLWluLWZpbGUtdGVtcGxhdGVyXCJcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5ldyBOb3RpY2UoXHJcbiAgICAgICAgXCJUaGUgVGVtcGxhdGVyIHBsdWdpbiBtdXN0IGJlIGVuYWJsZWQgdG8gcmVzb2x2ZSB0aGUgdGVtcGxhdGVzIGluIHRoZSBuZXcgbm90ZVwiXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpZiAodGhyZWFkaW5nVGVtcGxhdGUpIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGNvbnN0IGVkaXRvciA9IGxlYWYudmlldy5lZGl0b3IgYXMgRWRpdG9yO1xyXG4gICAgZWRpdG9yLnNldEN1cnNvcihlZGl0b3IuZ2V0VmFsdWUoKS5sZW5ndGgpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zdCBub3RlTmFtZUlucHV0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ2aWV3LWhlYWRlci10aXRsZVwiKTtcclxuXHJcbiAgICBjb25zdCBuZXdOb3RlSW5wdXRFbCA9IEFycmF5LmZyb20obm90ZU5hbWVJbnB1dHMpLmZpbmQoXHJcbiAgICAgIChpbnB1dDogSFRNTElucHV0RWxlbWVudCkgPT4gaW5wdXQuaW5uZXJUZXh0ID09PSBuZXdCYXNlbmFtZVxyXG4gICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgbmV3Tm90ZUlucHV0RWwuaW5uZXJUZXh0ID0gXCJcIjtcclxuICAgIG5ld05vdGVJbnB1dEVsLmZvY3VzKCk7XHJcbiAgfVxyXG59XHJcbiIsICJpbXBvcnQgeyB3YXJuIH0gZnJvbSBcImxvZ2xldmVsXCI7XHJcbmltcG9ydCB7IE5vdGljZSwgVEZpbGUgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHsgZ2V0T3BwRmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBjaGFuZ2VZYW1sLCBnZXRDdXJyRmlsZSwgc3BsaXRBdFlhbWwgfSBmcm9tIFwiLi4vVXRpbHMvT2JzaWRpYW5VdGlsc1wiO1xyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQkNUb0ZpbGUocGx1Z2luOiBCQ1BsdWdpbiwgY3VyckZpbGU/OiBURmlsZSkge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MsIG1haW5HIH0gPSBwbHVnaW47XHJcbiAgY29uc3QgZmlsZSA9IGN1cnJGaWxlID8/IGdldEN1cnJGaWxlKCk7XHJcblxyXG4gIGNvbnN0IHsgbGltaXRXcml0ZUJDQ2hlY2tib3hlcywgd3JpdGVCQ3NJbmxpbmUsIHVzZXJIaWVycyB9ID0gc2V0dGluZ3M7XHJcblxyXG4gIGNvbnN0IHN1Y2NJbmZvID0gbWFpbkcubWFwSW5FZGdlcyhmaWxlLmJhc2VuYW1lLCAoaywgYSwgcywgdCkgPT4ge1xyXG4gICAgY29uc3QgeyBmaWVsZCwgZGlyIH0gPSBhO1xyXG4gICAgY29uc3Qgb3BwRmllbGQgPSBnZXRPcHBGaWVsZHModXNlckhpZXJzLCBmaWVsZCwgZGlyKVswXTtcclxuICAgIHJldHVybiB7IHN1Y2M6IHMsIGZpZWxkOiBvcHBGaWVsZCB9O1xyXG4gIH0pO1xyXG5cclxuICBmb3IgKGNvbnN0IHsgc3VjYywgZmllbGQgfSBvZiBzdWNjSW5mbykge1xyXG4gICAgaWYgKCFsaW1pdFdyaXRlQkNDaGVja2JveGVzLmluY2x1ZGVzKGZpZWxkKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQucmVhZChmaWxlKTtcclxuICAgIGNvbnN0IFt5YW1sLCBhZnRlcllhbWxdID0gc3BsaXRBdFlhbWwoY29udGVudCk7XHJcblxyXG4gICAgaWYgKCF3cml0ZUJDc0lubGluZSkge1xyXG4gICAgICBjb25zdCBpbm5lciA9IHlhbWwgPT09IFwiXCIgPyB5YW1sIDogeWFtbC5zbGljZSg0LCAtNCk7XHJcbiAgICAgIGNvbnN0IG5ld1lhbWwgPSBjaGFuZ2VZYW1sKGlubmVyLCBmaWVsZCwgc3VjYyk7XHJcbiAgICAgIGNvbnN0IG5ld0NvbnRlbnQgPSBgLS0tXFxuJHtuZXdZYW1sfVxcbi0tLSR7YWZ0ZXJZYW1sfWA7XHJcbiAgICAgIGF3YWl0IGFwcC52YXVsdC5tb2RpZnkoZmlsZSwgbmV3Q29udGVudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBUT0RPIENoZWNrIGlmIHRoaXMgbm90ZSBhbHJlYWR5IGhhcyB0aGlzIGZpZWxkXHJcbiAgICAgIGNvbnN0IG5ld0NvbnRlbnQgPVxyXG4gICAgICAgIHlhbWwgK1xyXG4gICAgICAgICh5YW1sLmxlbmd0aCA/IFwiXFxuXCIgOiBcIlwiKSArXHJcbiAgICAgICAgYCR7ZmllbGR9OjogW1ske3N1Y2N9XV1gICtcclxuICAgICAgICAoYWZ0ZXJZYW1sLmxlbmd0aCA/IFwiXFxuXCIgOiBcIlwiKSArXHJcbiAgICAgICAgYWZ0ZXJZYW1sO1xyXG5cclxuICAgICAgYXdhaXQgYXBwLnZhdWx0Lm1vZGlmeShmaWxlLCBuZXdDb250ZW50KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZUJDc1RvQWxsRmlsZXMocGx1Z2luOiBCQ1BsdWdpbikge1xyXG4gIGlmICghcGx1Z2luLnNldHRpbmdzLnNob3dXcml0ZUFsbEJDc0NtZCkge1xyXG4gICAgbmV3IE5vdGljZShcclxuICAgICAgXCJZb3UgZmlyc3QgbmVlZCB0byBlbmFibGUgdGhpcyBjb21tYW5kIGluIEJyZWFkY3J1bWJzJyBzZXR0aW5ncy5cIlxyXG4gICAgKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgaWYgKFxyXG4gICAgd2luZG93LmNvbmZpcm0oXHJcbiAgICAgIFwiVGhpcyBhY3Rpb24gd2lsbCB3cml0ZSB0aGUgaW1wbGllZCBCcmVhZGNydW1icyBvZiBlYWNoIGZpbGUgdG8gdGhhdCBmaWxlLlxcbkl0IHVzZXMgdGhlIE1ldGFFZGl0IHBsdWdpbnMgQVBJIHRvIHVwZGF0ZSB0aGUgWUFNTCwgc28gaXQgc2hvdWxkIG9ubHkgYWZmZWN0IHRoYXQgZnJvbnRtYXR0ZXIgb2YgeW91ciBub3RlLlxcbkkgY2FuJ3QgcHJvbWlzZSB0aGF0IG5vdGhpbmcgYmFkIHdpbGwgaGFwcGVuLiAqKlRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSB1bmRvbmUqKi5cIlxyXG4gICAgKVxyXG4gICkge1xyXG4gICAgaWYgKFxyXG4gICAgICB3aW5kb3cuY29uZmlybShcclxuICAgICAgICBcIkFyZSB5b3Ugc3VyZT8gWW91IGhhdmUgYmVlbiB3YXJuZWQgdGhhdCB0aGlzIG9wZXJhdGlvbiB3aWxsIGF0dGVtcHQgdG8gdXBkYXRlIGFsbCBmaWxlcyB3aXRoIGltcGxpZWQgYnJlYWRjcnVtYnMuXCJcclxuICAgICAgKVxyXG4gICAgKSB7XHJcbiAgICAgIGlmICh3aW5kb3cuY29uZmlybShcIkZvciByZWFsLCBwbGVhc2UgbWFrZSBhIGJhY2sgdXAgYmVmb3JlLlwiKSkge1xyXG4gICAgICAgIGNvbnN0IG5vdGljZSA9IG5ldyBOb3RpY2UoXCJPcGVyYXRpb24gU3RhcnRlZFwiKTtcclxuICAgICAgICBjb25zdCBwcm9ibGVtRmlsZXMgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgYXBwLnZhdWx0LmdldE1hcmtkb3duRmlsZXMoKSkge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgd3JpdGVCQ1RvRmlsZShwbHVnaW4sIGZpbGUpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBwcm9ibGVtRmlsZXMucHVzaChmaWxlLnBhdGgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBub3RpY2Uuc2V0TWVzc2FnZShcIk9wZXJhdGlvbiBDb21wbGV0ZVwiKTtcclxuICAgICAgICBpZiAocHJvYmxlbUZpbGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgbmV3IE5vdGljZShcclxuICAgICAgICAgICAgXCJTb21lIGZpbGVzIHdlcmUgbm90IHVwZGF0ZWQgZHVlIHRvIGVycm9ycy4gQ2hlY2sgdGhlIGNvbnNvbGUgdG8gc2VlIHdoaWNoIG9uZXMuXCJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB3YXJuKHsgcHJvYmxlbUZpbGVzIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCAiaW1wb3J0IHtcclxuICBFZGl0b3IsXHJcbiAgRWRpdG9yUG9zaXRpb24sXHJcbiAgRWRpdG9yU3VnZ2VzdCxcclxuICBFZGl0b3JTdWdnZXN0Q29udGV4dCxcclxuICBFZGl0b3JTdWdnZXN0VHJpZ2dlckluZm8sXHJcbiAgVEZpbGUsXHJcbn0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IGlzSW5zaWRlWWFtbCB9IGZyb20gXCIuL1V0aWxzL09ic2lkaWFuVXRpbHNcIjtcclxuaW1wb3J0IHsgQkNfRklFTERTX0lORk8gfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4vbWFpblwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEZpZWxkU3VnZ2VzdG9yIGV4dGVuZHMgRWRpdG9yU3VnZ2VzdDxzdHJpbmc+IHtcclxuICBwbHVnaW46IEJDUGx1Z2luO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwbHVnaW46IEJDUGx1Z2luKSB7XHJcbiAgICBzdXBlcihhcHApO1xyXG4gICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XHJcbiAgfVxyXG5cclxuICBvblRyaWdnZXIoXHJcbiAgICBjdXJzb3I6IEVkaXRvclBvc2l0aW9uLFxyXG4gICAgZWRpdG9yOiBFZGl0b3IsXHJcbiAgICBfOiBURmlsZVxyXG4gICk6IEVkaXRvclN1Z2dlc3RUcmlnZ2VySW5mbyB8IG51bGwge1xyXG4gICAgY29uc3Qgc3ViID0gZWRpdG9yLmdldExpbmUoY3Vyc29yLmxpbmUpLnN1YnN0cmluZygwLCBjdXJzb3IuY2gpO1xyXG4gICAgY29uc3QgbWF0Y2ggPSBzdWIubWF0Y2goL15CQy0oLiopJC8pPy5bMV07XHJcbiAgICBpZiAobWF0Y2ggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGVuZDogY3Vyc29yLFxyXG4gICAgICAgIHN0YXJ0OiB7XHJcbiAgICAgICAgICBjaDogc3ViLmxhc3RJbmRleE9mKG1hdGNoKSxcclxuICAgICAgICAgIGxpbmU6IGN1cnNvci5saW5lLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcXVlcnk6IG1hdGNoLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3VnZ2VzdGlvbnMgPSAoY29udGV4dDogRWRpdG9yU3VnZ2VzdENvbnRleHQpID0+IHtcclxuICAgIGNvbnN0IHsgcXVlcnkgfSA9IGNvbnRleHQ7XHJcbiAgICByZXR1cm4gQkNfRklFTERTX0lORk8ubWFwKChzdWcpID0+IHN1Zy5maWVsZCkuZmlsdGVyKChzdWcpID0+XHJcbiAgICAgIHN1Zy5pbmNsdWRlcyhxdWVyeSlcclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgcmVuZGVyU3VnZ2VzdGlvbihzdWdnZXN0aW9uOiBzdHJpbmcsIGVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgZWwuY3JlYXRlRGl2KHtcclxuICAgICAgdGV4dDogc3VnZ2VzdGlvbi5yZXBsYWNlKFwiQkMtXCIsIFwiXCIpLFxyXG4gICAgICBjbHM6IFwiQkMtc3VnZ2VzdGVyLWNvbnRhaW5lclwiLFxyXG4gICAgICBhdHRyOiB7XHJcbiAgICAgICAgXCJhcmlhLWxhYmVsXCI6IEJDX0ZJRUxEU19JTkZPLmZpbmQoKGYpID0+IGYuZmllbGQgPT09IHN1Z2dlc3Rpb24pPy5kZXNjLFxyXG4gICAgICAgIFwiYXJpYS1sYWJlbC1wb3NpdGlvblwiOiBcInJpZ2h0XCIsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGNvbnRleHQsIHBsdWdpbiB9ID0gdGhpcztcclxuICAgIGlmICghY29udGV4dCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGZpZWxkID0gQkNfRklFTERTX0lORk8uZmluZCgoZikgPT4gZi5maWVsZCA9PT0gc3VnZ2VzdGlvbik7XHJcbiAgICBjb25zdCByZXBsYWNlbWVudCA9IGAke3N1Z2dlc3Rpb259JHtmaWVsZD8uW2lzSW5zaWRlWWFtbChhcHApID8gXCJhZnRlcllhbWxcIiA6IFwiYWZ0ZXJJbmxpbmVcIl1cclxuICAgICAgfWA7XHJcblxyXG4gICAgY29udGV4dC5lZGl0b3IucmVwbGFjZVJhbmdlKFxyXG4gICAgICByZXBsYWNlbWVudCxcclxuICAgICAgeyBjaDogMCwgbGluZTogY29udGV4dC5zdGFydC5saW5lIH0sXHJcbiAgICAgIGNvbnRleHQuZW5kXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iLCAiaW1wb3J0IHtcclxuICBFZGl0b3IsXHJcbiAgRWRpdG9yUG9zaXRpb24sXHJcbiAgRWRpdG9yU3VnZ2VzdCxcclxuICBFZGl0b3JTdWdnZXN0Q29udGV4dCxcclxuICBFZGl0b3JTdWdnZXN0VHJpZ2dlckluZm8sXHJcbiAgVEZpbGUsXHJcbn0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IGlzSW5zaWRlWWFtbCB9IGZyb20gXCIuL1V0aWxzL09ic2lkaWFuVXRpbHNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4vbWFpblwiO1xyXG5pbXBvcnQgeyBlc2NhcGVSZWdleCB9IGZyb20gXCIuL1V0aWxzL2dlbmVyYWxVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXRGaWVsZHMgfSBmcm9tIFwiLi9VdGlscy9IaWVyVXRpbHNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBSZWxhdGlvblN1Z2dlc3RvciBleHRlbmRzIEVkaXRvclN1Z2dlc3Q8c3RyaW5nPiB7XHJcbiAgcGx1Z2luOiBCQ1BsdWdpbjtcclxuXHJcbiAgY29uc3RydWN0b3IocGx1Z2luOiBCQ1BsdWdpbikge1xyXG4gICAgc3VwZXIoYXBwKTtcclxuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xyXG4gIH1cclxuXHJcbiAgb25UcmlnZ2VyKFxyXG4gICAgY3Vyc29yOiBFZGl0b3JQb3NpdGlvbixcclxuICAgIGVkaXRvcjogRWRpdG9yLFxyXG4gICAgXzogVEZpbGVcclxuICApOiBFZGl0b3JTdWdnZXN0VHJpZ2dlckluZm8gfCBudWxsIHtcclxuICAgIGNvbnN0IHRyaWcgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy5yZWxTdWdnZXN0b3JUcmlnZ2VyO1xyXG4gICAgY29uc3Qgc3ViID0gZWRpdG9yLmdldExpbmUoY3Vyc29yLmxpbmUpLnN1YnN0cmluZygwLCBjdXJzb3IuY2gpO1xyXG5cclxuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgLio/JHtlc2NhcGVSZWdleCh0cmlnKX0oLiopJGApO1xyXG4gICAgY29uc3QgbWF0Y2ggPSByZWdleC5leGVjKHN1Yik/LlsxXTtcclxuXHJcbiAgICBpZiAobWF0Y2ggPT09IHVuZGVmaW5lZCkgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzdGFydDoge1xyXG4gICAgICAgIGNoOiBzdWIubGFzdEluZGV4T2YodHJpZyksXHJcbiAgICAgICAgbGluZTogY3Vyc29yLmxpbmUsXHJcbiAgICAgIH0sXHJcbiAgICAgIGVuZDogY3Vyc29yLFxyXG4gICAgICBxdWVyeTogbWF0Y2gsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0U3VnZ2VzdGlvbnMgPSAoY29udGV4dDogRWRpdG9yU3VnZ2VzdENvbnRleHQpID0+IHtcclxuICAgIGNvbnN0IHsgcXVlcnkgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCB7IHVzZXJIaWVycyB9ID0gdGhpcy5wbHVnaW4uc2V0dGluZ3M7XHJcbiAgICByZXR1cm4gZ2V0RmllbGRzKHVzZXJIaWVycykuZmlsdGVyKChzdWcpID0+IHN1Zy5pbmNsdWRlcyhxdWVyeSkpO1xyXG4gIH07XHJcblxyXG4gIHJlbmRlclN1Z2dlc3Rpb24oc3VnZ2VzdGlvbjogc3RyaW5nLCBlbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcclxuICAgIGVsLmNyZWF0ZURpdih7XHJcbiAgICAgIHRleHQ6IHN1Z2dlc3Rpb24sXHJcbiAgICAgIGNsczogXCJjb2RlYmxvY2stc3VnZ2VzdGlvblwiLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RTdWdnZXN0aW9uKHN1Z2dlc3Rpb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgeyBjb250ZXh0LCBwbHVnaW4gfSA9IHRoaXM7XHJcbiAgICBpZiAoIWNvbnRleHQpIHJldHVyblxyXG5cclxuICAgIGNvbnN0IHRyaWcgPSBwbHVnaW4uc2V0dGluZ3MucmVsU3VnZ2VzdG9yVHJpZ2dlcjtcclxuICAgIGNvbnN0IHsgc3RhcnQsIGVuZCwgZWRpdG9yIH0gPSBjb250ZXh0O1xyXG5cclxuICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gc3VnZ2VzdGlvbiArIChpc0luc2lkZVlhbWwoYXBwKSA/IFwiOiBcIiA6IFwiOjogXCIpICsgJ1tbJztcclxuICAgIGVkaXRvci5yZXBsYWNlUmFuZ2UoXHJcbiAgICAgIHJlcGxhY2VtZW50LFxyXG4gICAgICB7IGNoOiBzdGFydC5jaCArIDEgLSB0cmlnLmxlbmd0aCwgbGluZTogc3RhcnQubGluZSB9LFxyXG4gICAgICBlbmRcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiIsICJpbXBvcnQgeyBQbHVnaW5TZXR0aW5nVGFiLCBTZXR0aW5nIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IGRyYXdUcmFpbCB9IGZyb20gXCJzcmMvVmlld3MvVHJhaWxWaWV3XCI7XHJcbmltcG9ydCBLb0ZpIGZyb20gXCIuLi9Db21wb25lbnRzL0tvRmkuc3ZlbHRlXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IGFkZENyZWF0ZUluZGV4U2V0dGluZ3MgfSBmcm9tIFwiLi9DcmVhdGVJbmRleFNldHRpbmdzXCI7XHJcbmltcG9ydCB7IGFkZENTVlNldHRpbmdzIH0gZnJvbSBcIi4vQ1NWU2V0dGluZ3NcIjtcclxuaW1wb3J0IHsgYWRkRGF0YXZpZXdTZXR0aW5ncyB9IGZyb20gXCIuL0RhdGF2aWV3Tm90ZVNldHRpbmdzXCI7XHJcbmltcG9ydCB7IGFkZERhdGVOb3RlU2V0dGluZ3MgfSBmcm9tIFwiLi9EYXRlTm90ZVNldHRpbmdzXCI7XHJcbmltcG9ydCB7IGFkZERlYnVnZ2luZ3NTZXR0aW5ncyB9IGZyb20gXCIuL0RlYnVnZ2luZ1NldHRpbmdzXCI7XHJcbmltcG9ydCB7IGFkZERlbmRyb25TZXR0aW5ncyB9IGZyb20gXCIuL0RlbmRyb25TZXR0aW5nc1wiO1xyXG5pbXBvcnQgeyBhZGRHZW5lcmFsU2V0dGluZ3MgfSBmcm9tIFwiLi9HZW5lcmFsU2V0dGluZ3NcIjtcclxuaW1wb3J0IHsgYWRkSGllcmFyY2h5Tm90ZVNldHRpbmdzIH0gZnJvbSBcIi4vSGllcmFyY2h5Tm90ZVNldHRpbmdzXCI7XHJcbmltcG9ydCB7IGFkZEhpZXJhcmNoeVNldHRpbmdzIH0gZnJvbSBcIi4vSGllcmFyY2h5U2V0dGluZ3NcIjtcclxuaW1wb3J0IHsgYWRkSnVtcFRvTmV4dFNldHRpbmdzIH0gZnJvbSBcIi4vSnVtcFRvTmV4dFNldHRpbmdzXCI7XHJcbmltcG9ydCB7IGFkZE1hdHJpeFZpZXdTZXR0aW5ncyB9IGZyb20gXCIuL01hdHJpeFZpZXdTZXR0aW5nc1wiO1xyXG5pbXBvcnQgeyBhZGROb1N5c3RlbVNldHRpbmdzIH0gZnJvbSBcIi4vTm9TeXN0ZW1TZXR0aW5nc1wiO1xyXG5pbXBvcnQgeyBhZGRSZWdleE5vdGVTZXR0aW5ncyB9IGZyb20gXCIuL1JlZ2V4Tm90ZVNldHRpbmdzXCI7XHJcbmltcG9ydCB7IGFkZFJlbGF0aW9uU2V0dGluZ3MgfSBmcm9tIFwiLi9SZWxhdGlvblNldHRpbmdzXCI7XHJcbmltcG9ydCB7IGFkZFRhZ05vdGVTZXR0aW5ncyB9IGZyb20gXCIuL1RhZ05vdGVTZXR0aW5nc1wiO1xyXG5pbXBvcnQgeyBhZGRUaHJlYWRpbmdTZXR0aW5ncyB9IGZyb20gXCIuL1RocmVhZGluZ1NldHRpbmdzXCI7XHJcbmltcG9ydCB7IGFkZFRyYWlsVmlld1NldHRpbmdzIH0gZnJvbSBcIi4vVHJhaWxTZXR0aW5nc1wiO1xyXG5pbXBvcnQgeyBhZGRWaXNNb2RhbFNldHRpbmdzIH0gZnJvbSBcIi4vVmlzTW9kYWxTZXR0aW5nc1wiO1xyXG5pbXBvcnQgeyBhZGRXcml0ZUJDc1NldHRpbmdzIH0gZnJvbSBcIi4vV3JpdGVCQ3NTZXR0aW5nc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGZyYWdXaXRoSFRNTCA9IChodG1sOiBzdHJpbmcpID0+XHJcbiAgY3JlYXRlRnJhZ21lbnQoKGZyYWcpID0+IChmcmFnLmNyZWF0ZURpdigpLmlubmVySFRNTCA9IGh0bWwpKTtcclxuXHJcbmV4cG9ydCBjb25zdCBkZXRhaWxzID0gKHRleHQ6IHN0cmluZywgcGFyZW50OiBIVE1MRWxlbWVudCkgPT5cclxuICBwYXJlbnQuY3JlYXRlRWwoXCJkZXRhaWxzXCIsIHt9LCAoZCkgPT4gZC5jcmVhdGVFbChcInN1bW1hcnlcIiwgeyB0ZXh0IH0pKTtcclxuXHJcbmV4cG9ydCBjb25zdCBzdWJEZXRhaWxzID0gKHRleHQ6IHN0cmluZywgcGFyZW50OiBIVE1MRGV0YWlsc0VsZW1lbnQpID0+XHJcbiAgcGFyZW50LmNyZWF0ZURpdih7XHJcbiAgICBhdHRyOiB7IHN0eWxlOiBcInBhZGRpbmctbGVmdDogMTBweDtcIiB9LFxyXG4gIH0pXHJcbiAgICAuY3JlYXRlRWwoXCJkZXRhaWxzXCIsIHt9LCAoZCkgPT4gZC5jcmVhdGVFbChcInN1bW1hcnlcIiwgeyB0ZXh0IH0pKTtcclxuXHJcbmV4cG9ydCBjbGFzcyBCQ1NldHRpbmdUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcclxuICBwbHVnaW46IEJDUGx1Z2luO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwbHVnaW46IEJDUGx1Z2luKSB7XHJcbiAgICBzdXBlcihhcHAsIHBsdWdpbik7XHJcbiAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRpc3BsYXkoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCB7IHBsdWdpbiwgY29udGFpbmVyRWwgfSA9IHRoaXM7XHJcbiAgICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW5cclxuXHJcbiAgICBjb250YWluZXJFbC5lbXB0eSgpO1xyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoXCJoMlwiLCB7IHRleHQ6IFwiQnJlYWRjcnVtYnMgU2V0dGluZ3NcIiB9KTtcclxuICAgIGNvbnRhaW5lckVsLmFkZENsYXNzKFwiQkMtc2V0dGluZ3MtdGFiXCIpO1xyXG5cclxuICAgIGFkZEhpZXJhcmNoeVNldHRpbmdzKHBsdWdpbiwgY29udGFpbmVyRWwpO1xyXG4gICAgYWRkUmVsYXRpb25TZXR0aW5ncyhwbHVnaW4sIGNvbnRhaW5lckVsKTtcclxuICAgIGFkZEdlbmVyYWxTZXR0aW5ncyhwbHVnaW4sIGNvbnRhaW5lckVsKTtcclxuXHJcbiAgICBjb25zdCB2aWV3RGV0YWlscyA9IGRldGFpbHMoXCJWaWV3c1wiLCBjb250YWluZXJFbCk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcodmlld0RldGFpbHMpXHJcbiAgICAgIC5zZXROYW1lKFwiT3BlbiBWaWV3cyBieSBEZWZhdWx0XCIpXHJcbiAgICAgIC5zZXREZXNjKGZyYWdXaXRoSFRNTChcIkNob29zZSB3aGljaCBvZiB0aGUgdmlld3MgdG8gb3BlbiBvbmxvYWQ8YnIvPk9yZGVyIGlzOiBUcmFpbC9HcmlkL0p1Z2dsLCBNYXRyaXgsIER1Y2tzLCBUcmVlXCIpKVxyXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAgICAgdG9nZ2xlXHJcbiAgICAgICAgICAuc2V0VG9vbHRpcChcIlRyYWlsL0dyaWQvSnVnZ2xcIilcclxuICAgICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5zaG93QkNzKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBzZXR0aW5ncy5zaG93QkNzID0gdmFsdWU7XHJcbiAgICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgICAgYXdhaXQgZHJhd1RyYWlsKHBsdWdpbik7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xyXG4gICAgICAgIHRvZ2dsZVxyXG4gICAgICAgICAgLnNldFRvb2x0aXAoXCJNYXRyaXggVmlld1wiKVxyXG4gICAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLm9wZW5NYXRyaXhPbkxvYWQpXHJcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHNldHRpbmdzLm9wZW5NYXRyaXhPbkxvYWQgPSB2YWx1ZTtcclxuICAgICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xyXG4gICAgICAgIHRvZ2dsZVxyXG4gICAgICAgICAgLnNldFRvb2x0aXAoXCJEdWNrcyBWaWV3XCIpXHJcbiAgICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3Mub3BlbkR1Y2tPbkxvYWQpXHJcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHNldHRpbmdzLm9wZW5EdWNrT25Mb2FkID0gdmFsdWU7XHJcbiAgICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KVxyXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcclxuICAgICAgICB0b2dnbGVcclxuICAgICAgICAgIC5zZXRUb29sdGlwKFwiVHJlZSBWaWV3XCIpXHJcbiAgICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3Mub3BlbkRvd25PbkxvYWQpXHJcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHNldHRpbmdzLm9wZW5Eb3duT25Mb2FkID0gdmFsdWU7XHJcbiAgICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB2aWV3RGV0YWlscy5jcmVhdGVFbCgnaHInKVxyXG5cclxuICAgIGFkZE1hdHJpeFZpZXdTZXR0aW5ncyhwbHVnaW4sIHZpZXdEZXRhaWxzKTtcclxuICAgIGFkZFRyYWlsVmlld1NldHRpbmdzKHBsdWdpbiwgdmlld0RldGFpbHMpO1xyXG4gICAgYWRkVmlzTW9kYWxTZXR0aW5ncyhwbHVnaW4sIHZpZXdEZXRhaWxzKTtcclxuICAgIC8vIGFkZFRyZWVWaWV3U2V0dGluZ3MocGx1Z2luLCB2aWV3RGV0YWlscyk7XHJcblxyXG4gICAgY29uc3QgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzID0gZGV0YWlscyhcclxuICAgICAgXCJBbHRlcm5hdGl2ZSBIaWVyYXJjaGllc1wiLFxyXG4gICAgICBjb250YWluZXJFbFxyXG4gICAgKTtcclxuXHJcbiAgICBhZGRUYWdOb3RlU2V0dGluZ3MocGx1Z2luLCBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHMpO1xyXG4gICAgYWRkUmVnZXhOb3RlU2V0dGluZ3MocGx1Z2luLCBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHMpO1xyXG4gICAgYWRkTm9TeXN0ZW1TZXR0aW5ncyhwbHVnaW4sIGFsdGVybmF0aXZlSGllcmFyY2h5RGV0YWlscyk7XHJcbiAgICBhZGRIaWVyYXJjaHlOb3RlU2V0dGluZ3MocGx1Z2luLCBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHMpO1xyXG4gICAgYWRkQ1NWU2V0dGluZ3MocGx1Z2luLCBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHMpO1xyXG4gICAgYWRkRGVuZHJvblNldHRpbmdzKHBsdWdpbiwgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzKTtcclxuICAgIGFkZERhdGF2aWV3U2V0dGluZ3MocGx1Z2luLCBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHMpO1xyXG4gICAgYWRkRGF0ZU5vdGVTZXR0aW5ncyhwbHVnaW4sIGFsdGVybmF0aXZlSGllcmFyY2h5RGV0YWlscyk7XHJcblxyXG4gICAgY29uc3QgY21kc0RldGFpbHMgPSBkZXRhaWxzKFwiQ29tbWFuZHNcIiwgY29udGFpbmVyRWwpO1xyXG4gICAgYWRkV3JpdGVCQ3NTZXR0aW5ncyhwbHVnaW4sIGNtZHNEZXRhaWxzKTtcclxuICAgIGFkZENyZWF0ZUluZGV4U2V0dGluZ3MocGx1Z2luLCBjbWRzRGV0YWlscyk7XHJcbiAgICBhZGRUaHJlYWRpbmdTZXR0aW5ncyhwbHVnaW4sIGNtZHNEZXRhaWxzKTtcclxuICAgIGFkZEp1bXBUb05leHRTZXR0aW5ncyhwbHVnaW4sIGNtZHNEZXRhaWxzKTtcclxuXHJcbiAgICBhZGREZWJ1Z2dpbmdzU2V0dGluZ3MocGx1Z2luLCBjb250YWluZXJFbCk7XHJcblxyXG4gICAgbmV3IEtvRmkoeyB0YXJnZXQ6IGNvbnRhaW5lckVsIH0pO1xyXG4gIH1cclxufVxyXG4iLCAiPCEtLSBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9IRW1pbGUvanVnZ2wvYmxvYi9tYWluL2p1Z2dsL3VpL0tvRmkuc3ZlbHRlIC0tPlxyXG48c2NyaXB0PlxyXG4gIGxldCBidXR0b247XHJcbiAgY29uc3QgaW5pdGlhbGl6ZUtvZmkgPSAoKSA9PiB7XHJcbiAgICBrb2Zpd2lkZ2V0Mi5pbml0KFxyXG4gICAgICBcIlN1cHBvcnQgQnJlYWRjcnVtYnMgZGV2ZWxvcG1lbnQhXCIsXHJcbiAgICAgIFwiIzI5YWJlMFwiLFxyXG4gICAgICBcIkcyRzQ1NFRaRlwiXHJcbiAgICApO1xyXG4gICAgYnV0dG9uLmlubmVySFRNTCA9IGtvZml3aWRnZXQyLmdldEhUTUwoKTtcclxuICB9O1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdmVsdGU6aGVhZD5cclxuICA8c2NyaXB0XHJcbiAgICB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCJcclxuICAgIHNyYz1cImh0dHBzOi8va28tZmkuY29tL3dpZGdldHMvd2lkZ2V0XzIuanNcIlxyXG4gICAgb246bG9hZD17aW5pdGlhbGl6ZUtvZml9PlxyXG4gIDwvc2NyaXB0PlxyXG48L3N2ZWx0ZTpoZWFkPlxyXG48ZGl2IGNsYXNzPVwiQkMtS29maS1idXR0b25cIiBiaW5kOnRoaXM9e2J1dHRvbn0gLz5cclxuXHJcbjxzdHlsZT5cclxuICAuQkMtS29maS1idXR0b24ge1xyXG4gICAgbWFyZ2luLXRvcDogMTBweDtcclxuICB9XHJcbjwvc3R5bGU+XHJcbiIsICJpbXBvcnQgeyBTZXR0aW5nIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IGZyYWdXaXRoSFRNTCwgc3ViRGV0YWlscyB9IGZyb20gXCIuL0JyZWFkY3J1bWJzU2V0dGluZ1RhYlwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZENyZWF0ZUluZGV4U2V0dGluZ3MoXHJcbiAgcGx1Z2luOiBCQ1BsdWdpbixcclxuICBjbWRzRGV0YWlsczogSFRNTERldGFpbHNFbGVtZW50XHJcbikge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCBjcmVhdGVJbmRleERldGFpbHMgPSBzdWJEZXRhaWxzKFwiQ3JlYXRlIEluZGV4XCIsIGNtZHNEZXRhaWxzKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoY3JlYXRlSW5kZXhEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJBZGQgd2lrbGluayBicmFja2V0c1wiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBcIldoZW4gY3JlYXRpbmcgYW4gaW5kZXgsIHNob3VsZCBpdCB3cmFwIHRoZSBub3RlIG5hbWUgaW4gd2lraWxpbmtzIDxjb2RlPltbXV08L2NvZGU+IG9yIG5vdC5cXG5cdTI3MDUgPSB5ZXMsIFx1Mjc0QyA9IG5vLlwiXHJcbiAgICAgIClcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgdG9nZ2xlXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLndpa2lsaW5rSW5kZXgpXHJcbiAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgc2V0dGluZ3Mud2lraWxpbmtJbmRleCA9IHZhbHVlO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICBuZXcgU2V0dGluZyhjcmVhdGVJbmRleERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkluZGVudCBDaGFyYWN0ZXJcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgJ1RoZSBjaGFyYWN0ZXIocykgdXNlZCB0byBpbmRlbnQgdGhlIGluZGV4LiBUaGVzZSBjYW4gYmUgYW55dGhpbmcgeW91IHdhbnQsIGJ1dCB3aWxsIHVzdWFsbHkgYmUgZWl0aGVyIHNwYWNlcyBvciB0YWJzLiBFbnRlciA8Y29kZT5cXFxcdDwvY29kZT4gdG8gdXNlIHRhYnMuJ1xyXG4gICAgICApKVxyXG4gICAgLmFkZFRleHQoKHRleHQpID0+IHtcclxuICAgICAgdGV4dFxyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5jcmVhdGVJbmRleEluZGVudClcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICBzZXR0aW5ncy5jcmVhdGVJbmRleEluZGVudCA9IHZhbHVlO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9KVxyXG5cclxuICBuZXcgU2V0dGluZyhjcmVhdGVJbmRleERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlNob3cgYWxpYXNlcyBvZiBub3RlcyBpbiBpbmRleFwiKVxyXG4gICAgLnNldERlc2MoXCJTaG93IHRoZSBhbGlhc2VzIG9mIGVhY2ggbm90ZSBpbiBicmFja2V0cy5cXG5cdTI3MDUgPSB5ZXMsIFx1Mjc0QyA9IG5vLlwiKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICB0b2dnbGVcclxuICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3MuYWxpYXNlc0luSW5kZXgpXHJcbiAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgc2V0dGluZ3MuYWxpYXNlc0luSW5kZXggPSB2YWx1ZTtcclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICB9KVxyXG4gICAgKTtcclxufVxyXG4iLCAiaW1wb3J0IHsgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG5pbXBvcnQgeyBzdWJEZXRhaWxzIH0gZnJvbSBcIi4vQnJlYWRjcnVtYnNTZXR0aW5nVGFiXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkQ1NWU2V0dGluZ3MoXHJcbiAgcGx1Z2luOiBCQ1BsdWdpbixcclxuICBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHM6IEhUTUxEZXRhaWxzRWxlbWVudFxyXG4pIHtcclxuICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW47XHJcbiAgY29uc3QgY3N2RGV0YWlscyA9IHN1YkRldGFpbHMoXCJDU1YgTm90ZXNcIiwgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoY3N2RGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiQ1NWIEJyZWFkY3J1bWIgUGF0aHNcIilcclxuICAgIC5zZXREZXNjKFwiVGhlIGZpbGUgcGF0aCBvZiBhIGNzdiBmaWxlcyB3aXRoIGJyZWFkY3J1bWJzIGluZm9ybWF0aW9uLlwiKVxyXG4gICAgLmFkZFRleHQoKHRleHQpID0+IHtcclxuICAgICAgdGV4dC5zZXRWYWx1ZShzZXR0aW5ncy5DU1ZQYXRocyk7XHJcbiAgICAgIHRleHQuaW5wdXRFbC5vbmJsdXIgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MuQ1NWUGF0aHMgPSB0ZXh0LmlucHV0RWwudmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50LCBTZXR0aW5nIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IHJlZnJlc2hJbmRleCB9IGZyb20gXCIuLi9yZWZyZXNoSW5kZXhcIjtcclxuaW1wb3J0IHsgZ2V0RmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBmcmFnV2l0aEhUTUwsIHN1YkRldGFpbHMgfSBmcm9tIFwiLi9CcmVhZGNydW1ic1NldHRpbmdUYWJcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGREYXRhdmlld1NldHRpbmdzKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzOiBIVE1MRGV0YWlsc0VsZW1lbnRcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgdXNlckhpZXJzIH0gPSBzZXR0aW5ncztcclxuICBjb25zdCBmaWVsZHMgPSBnZXRGaWVsZHModXNlckhpZXJzKTtcclxuICBjb25zdCBkdkRldGFpbHMgPSBzdWJEZXRhaWxzKFwiRGF0YXZpZXcgTm90ZXNcIiwgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoZHZEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJEZWZhdWx0IERhdGF2aWV3IE5vdGUgRmllbGRcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgXCJCeSBkZWZhdWx0LCBEYXRhdmlldyBub3RlcyB1c2UgdGhlIGZpcnN0IGZpZWxkIGluIHlvdXIgaGllcmFyY2hpZXMgKHVzdWFsbHkgYW4gPGNvZGU+XHUyMTkxPC9jb2RlPiBmaWVsZCkuIENob29zZSBhIGRpZmZlcmVudCBvbmUgdG8gdXNlIGJ5IGRlZmF1bHQsIHdpdGhvdXQgaGF2aW5nIHRvIHNwZWNpZnkgPGNvZGU+QkMtZGF0YXZpZXctbm90ZS1maWVsZDoge2ZpZWxkfTwvY29kZT4uPC9icj5JZiB5b3UgZG9uJ3Qgd2FudCB0byBjaG9vc2UgYSBkZWZhdWx0LCBzZWxlY3QgdGhlIGJsYW5rIG9wdGlvbiBhdCB0aGUgYm90dG9tIG9mIHRoZSBsaXN0LlwiXHJcbiAgICAgIClcclxuICAgIClcclxuICAgIC5hZGREcm9wZG93bigoZGQ6IERyb3Bkb3duQ29tcG9uZW50KSA9PiB7XHJcbiAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4gZGQuYWRkT3B0aW9uKGZpZWxkLCBmaWVsZCkpO1xyXG4gICAgICBkZC5hZGRPcHRpb24oXCJcIiwgXCJcIilcclxuICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3MuZGF0YXZpZXdOb3RlRmllbGQpXHJcbiAgICAgICAgLm9uQ2hhbmdlKGFzeW5jIChmaWVsZCkgPT4ge1xyXG4gICAgICAgICAgc2V0dGluZ3MuZGF0YXZpZXdOb3RlRmllbGQgPSBmaWVsZDtcclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgIGF3YWl0IHJlZnJlc2hJbmRleChwbHVnaW4pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50LCBTZXR0aW5nIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IHJlZnJlc2hJbmRleCB9IGZyb20gXCIuLi9yZWZyZXNoSW5kZXhcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHsgZ2V0RmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBmcmFnV2l0aEhUTUwsIHN1YkRldGFpbHMgfSBmcm9tIFwiLi9CcmVhZGNydW1ic1NldHRpbmdUYWJcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGREYXRlTm90ZVNldHRpbmdzKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzOiBIVE1MRGV0YWlsc0VsZW1lbnRcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHsgdXNlckhpZXJzIH0gPSBzZXR0aW5ncztcclxuICBjb25zdCBmaWVsZHMgPSBnZXRGaWVsZHModXNlckhpZXJzKTtcclxuICBjb25zdCBmaWVsZE9wdGlvbnMgPSB7IFwiXCI6IFwiXCIgfTtcclxuICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IChmaWVsZE9wdGlvbnNbZmllbGRdID0gZmllbGQpKTtcclxuXHJcbiAgY29uc3QgZGF0ZU5vdGVEZXRhaWxzID0gc3ViRGV0YWlscyhcIkRhdGUgTm90ZXNcIiwgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoZGF0ZU5vdGVEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJBZGQgRGF0ZSBOb3RlcyB0byBHcmFwaFwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIFwiQnJlYWRjcnVtYnMgd2lsbCB0cnkgdG8gbGluayBlYWNoIGRhaWx5IG5vdGUgdG8gdGhlIG5leHQgb25lIHVzaW5nIHRoZSBkYXRlIGZvcm1hdCB5b3UgcHJvdmlkZSBpbiB0aGUgc2V0dGluZ3MgYmVsb3cuXCJcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xyXG4gICAgICB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3MuYWRkRGF0ZU5vdGVzKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy5hZGREYXRlTm90ZXMgPSB2YWx1ZTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgYXdhaXQgcmVmcmVzaEluZGV4KHBsdWdpbik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKGRhdGVOb3RlRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiRGFpbHkgTm90ZSBGb3JtYXRcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgYFRoZSBMdXhvbiBkYXRlIGZvcm1hdCBvZiB5b3VyIGRhaWx5IG5vdGVzLjwvYnI+PHN0cm9uZz5Ob3RlPC9zdHJvbmc+OiBMdXhvbiB1c2VzIGRpZmZlcmVudCBmb3JtYXRzIHRvIE1vbWVudCwgc28geW91ciBmb3JtYXQgZm9yIHRoZSBEYWlseSBOb3RlcyBwbHVnaW4gbWF5IG5vdCB3b3JrIGhlcmUuIEJlIHN1cmUgdG8gY2hlY2sgb3V0IDxhIGhyZWY9XCJodHRwczovL21vbWVudC5naXRodWIuaW8vbHV4b24vIy9mb3JtYXR0aW5nP2lkPXRhYmxlLW9mLXRva2Vuc1wiPnRoZSBkb2NzPC9hPiB0byBmaW5kIHRoZSByaWdodCBmb3JtYXQuPGJyPllvdSBjYW4gZXNjYXBlIGNoYXJhY3RlcnMgYnkgd3JhcHBpbmcgdGhlbSBpbiBzaW5nbGUgcXVvdGVzIChlLmcuIDxjb2RlPnl5eXktTU0tZGQgJ0RhaWx5IE5vdGUnPC9jb2RlPilgXHJcbiAgICAgIClcclxuICAgIClcclxuICAgIC5hZGRUZXh0KCh0ZXh0KSA9PiB7XHJcbiAgICAgIHRleHQuc2V0VmFsdWUoc2V0dGluZ3MuZGF0ZU5vdGVGb3JtYXQpO1xyXG4gICAgICB0ZXh0LmlucHV0RWwub25ibHVyID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIHNldHRpbmdzLmRhdGVOb3RlRm9ybWF0ID0gdGV4dC5nZXRWYWx1ZSgpO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICBhd2FpdCByZWZyZXNoSW5kZXgocGx1Z2luKTtcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICBuZXcgU2V0dGluZyhkYXRlTm90ZURldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkRhdGUgTm90ZSBGaWVsZFwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBcIlNlbGVjdCBhIGZpZWxkIHRvIHBvaW50IHRvIHRvbW9ycm93J3Mgbm90ZSBmcm9tIHRoZSBjdXJyZW50IG5vdGUuIFRoZSBvcHBvc2l0ZSBmaWVsZCB3aWxsIGJlIHVzZWQgdG8gcG9pbnQgdG8geWVzdGVyZGF5J3Mgbm90ZS5cIlxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuYWRkRHJvcGRvd24oKGRkOiBEcm9wZG93bkNvbXBvbmVudCkgPT4ge1xyXG4gICAgICBkZC5hZGRPcHRpb25zKGZpZWxkT3B0aW9ucylcclxuICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3MuZGF0ZU5vdGVGaWVsZClcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgICBzZXR0aW5ncy5kYXRlTm90ZUZpZWxkID0gZmllbGQ7XHJcbiAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICBhd2FpdCByZWZyZXNoSW5kZXgocGx1Z2luKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAvLyBuZXcgU2V0dGluZyhkYXRlTm90ZURldGFpbHMpXHJcbiAgLy8gICAuc2V0TmFtZShcIlBvaW50IHVwIHRvIE1vbnRoXCIpXHJcbiAgLy8gICAuc2V0RGVzYyhcclxuICAvLyAgICAgZnJhZ1dpdGhIVE1MKFxyXG4gIC8vICAgICAgIFwiU2VsZWN0IGEgZmllbGQgdG8gcG9pbnQgdXB3YXJkcyB0byB0aGUgY29ycmVzcG9uZGluZyBtb250aCAoVGhpcyB3aWxsIHN0aWxsIHdvcmsgaWYgYSBub3RlIGRvZXNuJ3QgZXhpc3QgZm9yIHRoYXQgbW9udGgpLjxicj5MZWF2ZSB0aGUgZHJvcGRvd24gYmxhbmsgdG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUuXCJcclxuICAvLyAgICAgKVxyXG4gIC8vICAgKVxyXG4gIC8vICAgLmFkZERyb3Bkb3duKChkZDogRHJvcGRvd25Db21wb25lbnQpID0+IHtcclxuICAvLyAgICAgZGQuYWRkT3B0aW9ucyhmaWVsZE9wdGlvbnMpO1xyXG4gIC8vICAgICBkZC5vbkNoYW5nZShhc3luYyAoZmllbGQpID0+IHtcclxuICAvLyAgICAgICBzZXR0aW5ncy5kYXRlTm90ZUFkZE1vbnRoID0gZmllbGQ7XHJcbiAgLy8gICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gIC8vICAgICAgIGF3YWl0IHJlZnJlc2hJbmRleChwbHVnaW4pO1xyXG4gIC8vICAgICB9KTtcclxuICAvLyAgIH0pO1xyXG4gIC8vIG5ldyBTZXR0aW5nKGRhdGVOb3RlRGV0YWlscylcclxuICAvLyAgIC5zZXROYW1lKFwiUG9pbnQgdXAgdG8gWWVhclwiKVxyXG4gIC8vICAgLnNldERlc2MoXHJcbiAgLy8gICAgIGZyYWdXaXRoSFRNTChcclxuICAvLyAgICAgICBcIlNlbGVjdCBhIGZpZWxkIHRvIHBvaW50IHVwd2FyZHMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgeWVhciAoVGhpcyB3aWxsIHN0aWxsIHdvcmsgaWYgYSBub3RlIGRvZXNuJ3QgZXhpc3QgZm9yIHRoYXQgeWVhcikuPGJyPkxlYXZlIHRoZSBkcm9wZG93biBibGFuayB0byBkaXNhYmxlIHRoaXMgZmVhdHVyZS5cIlxyXG4gIC8vICAgICApXHJcbiAgLy8gICApXHJcbiAgLy8gICAuYWRkRHJvcGRvd24oKGRkOiBEcm9wZG93bkNvbXBvbmVudCkgPT4ge1xyXG4gIC8vICAgICBkZC5hZGRPcHRpb25zKGZpZWxkT3B0aW9ucyk7XHJcbiAgLy8gICAgIGRkLm9uQ2hhbmdlKGFzeW5jIChmaWVsZCkgPT4ge1xyXG4gIC8vICAgICAgIHNldHRpbmdzLmRhdGVOb3RlQWRkWWVhciA9IGZpZWxkO1xyXG4gIC8vICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAvLyAgICAgICBhd2FpdCByZWZyZXNoSW5kZXgocGx1Z2luKTtcclxuICAvLyAgICAgfSk7XHJcbiAgLy8gICB9KTtcclxufVxyXG4iLCAiaW1wb3J0IGxvZyBmcm9tIFwibG9nbGV2ZWxcIjtcclxuaW1wb3J0IHsgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgdHlwZSB7IERlYnVnTGV2ZWwgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG5pbXBvcnQgeyBkZXRhaWxzLCBmcmFnV2l0aEhUTUwgfSBmcm9tIFwiLi9CcmVhZGNydW1ic1NldHRpbmdUYWJcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGREZWJ1Z2dpbmdzU2V0dGluZ3MoXHJcbiAgcGx1Z2luOiBCQ1BsdWdpbixcclxuICBjb250YWluZXJFbDogSFRNTEVsZW1lbnRcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IGRlYnVnRGV0YWlscyA9IGRldGFpbHMoXCJEZWJ1Z2dpbmdcIiwgY29udGFpbmVyRWwpO1xyXG5cclxuICBuZXcgU2V0dGluZyhkZWJ1Z0RldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkRlYnVnIE1vZGVcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgXCJTZXQgdGhlIG1pbmltdW0gbGV2ZWwgb2YgZGVidWcgbWVzc2FnZXMgdG8gY29uc29sZSBsb2cuIElmIHlvdSBjaG9vc2UgPGNvZGU+VFJBQ0U8L2NvZGU+LCB0aGVuIGV2ZXJ5dGhpbmcgd2lsbCBiZSBsb2dnZWQuIElmIHlvdSBjaG9vc2UgPGNvZGU+RVJST1I8L2NvZGU+LCB0aGVuIG9ubHkgdGhlIG1vc3QgbmVjZXNzYXJ5IGlzc3VlcyB3aWxsIGJlIGxvZ2dlZC4gPGNvZGU+U0lMRU5UPC9jb2RlPiB3aWxsIHR1cm4gb2ZmIGFsbCBsb2dzLlwiXHJcbiAgICAgIClcclxuICAgIClcclxuICAgIC5hZGREcm9wZG93bigoZGQpID0+IHtcclxuICAgICAgT2JqZWN0LmtleXMobG9nLmxldmVscykuZm9yRWFjaCgoa2V5KSA9PiBkZC5hZGRPcHRpb24oa2V5LCBrZXkpKTtcclxuICAgICAgZGQuc2V0VmFsdWUoc2V0dGluZ3MuZGVidWdNb2RlKS5vbkNoYW5nZShhc3luYyAodmFsdWU6IERlYnVnTGV2ZWwpID0+IHtcclxuICAgICAgICBsb2cuc2V0TGV2ZWwodmFsdWUpO1xyXG4gICAgICAgIHNldHRpbmdzLmRlYnVnTW9kZSA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgZGVidWdEZXRhaWxzLmNyZWF0ZUVsKFwiYnV0dG9uXCIsIHsgdGV4dDogXCJDb25zb2xlIGxvZyBzZXR0aW5nc1wiIH0sIChlbCkgPT4ge1xyXG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IGNvbnNvbGUubG9nKHNldHRpbmdzKSk7XHJcbiAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50LCBOb3RpY2UsIFNldHRpbmcgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHsgcmVmcmVzaEluZGV4IH0gZnJvbSBcIi4uL3JlZnJlc2hJbmRleFwiO1xyXG5pbXBvcnQgeyBERUZBVUxUX1NFVFRJTkdTLCBNQVRSSVhfVklFVyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHsgZ2V0RmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBmcmFnV2l0aEhUTUwsIHN1YkRldGFpbHMgfSBmcm9tIFwiLi9CcmVhZGNydW1ic1NldHRpbmdUYWJcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGREZW5kcm9uU2V0dGluZ3MoXHJcbiAgcGx1Z2luOiBCQ1BsdWdpbixcclxuICBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHM6IEhUTUxEZXRhaWxzRWxlbWVudFxyXG4pIHtcclxuICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW47XHJcbiAgY29uc3QgeyB1c2VySGllcnMgfSA9IHNldHRpbmdzO1xyXG4gIGNvbnN0IGZpZWxkcyA9IGdldEZpZWxkcyh1c2VySGllcnMpO1xyXG4gIGNvbnN0IGRlbmRyb25EZXRhaWxzID0gc3ViRGV0YWlscyhcclxuICAgIFwiRGVuZHJvbiBOb3Rlc1wiLFxyXG4gICAgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzXHJcbiAgKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoZGVuZHJvbkRldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkFkZCBEZW5kcm9uIG5vdGVzIHRvIGdyYXBoXCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgZnJhZ1dpdGhIVE1MKFxyXG4gICAgICAgIFwiRGVuZHJvbiBub3RlcyBjcmVhdGUgYSBoaWVyYXJjaHkgdXNpbmcgbm90ZSBuYW1lcy48L2JyPjxjb2RlPm5tYXRoLmFsZ2VicmE8L2NvZGU+IGlzIGEgbm90ZSBhYm91dCBhbGdlYnJhLCB3aG9zZSBwYXJlbnQgaXMgPGNvZGU+bWF0aDwvY29kZT4uPC9icj48Y29kZT5ubWF0aC5jYWxjdWx1cy5saW1pdHM8L2NvZGU+IGlzIGEgbm90ZSBhYm91dCBsaW1pdHMgd2hvc2UgcGFyZW50IGlzIHRoZSBub3RlIDxjb2RlPm1hdGguY2FsY3VsdXM8L2NvZGU+LCB0aGUgcGFyZW50IG9mIHdoaWNoIGlzIDxjb2RlPm1hdGg8L2NvZGU+LlwiXHJcbiAgICAgIClcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgdG9nZ2xlLnNldFZhbHVlKHNldHRpbmdzLmFkZERlbmRyb25Ob3Rlcykub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MuYWRkRGVuZHJvbk5vdGVzID0gdmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICBuZXcgU2V0dGluZyhkZW5kcm9uRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiRGVsaW1pdGVyXCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgZnJhZ1dpdGhIVE1MKFxyXG4gICAgICAgIFwiV2hpY2ggZGVsaW1pdGVyIHNob3VsZCBCcmVhZGNydW1icyBsb29rIGZvcj8gVGhlIGRlZmF1bHQgaXMgPGNvZGU+LjwvY29kZT4uXCJcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZFRleHQoKHRleHQpID0+IHtcclxuICAgICAgdGV4dFxyXG4gICAgICAgIC5zZXRQbGFjZWhvbGRlcihcIkRlbGltaXRlclwiKVxyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5kZW5kcm9uTm90ZURlbGltaXRlcik7XHJcblxyXG4gICAgICB0ZXh0LmlucHV0RWwub25ibHVyID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGV4dC5nZXRWYWx1ZSgpO1xyXG4gICAgICAgIGlmICh2YWx1ZSkgc2V0dGluZ3MuZGVuZHJvbk5vdGVEZWxpbWl0ZXIgPSB2YWx1ZTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIG5ldyBOb3RpY2UoYFRoZSBkZWxpbWl0ZXIgY2FuJ3QgYmUgYmxhbmtgKTtcclxuICAgICAgICAgIHNldHRpbmdzLmRlbmRyb25Ob3RlRGVsaW1pdGVyID0gREVGQVVMVF9TRVRUSU5HUy5kZW5kcm9uTm90ZURlbGltaXRlcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKGRlbmRyb25EZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJUcmltIERlbmRyb24gTm90ZSBOYW1lc1wiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBcIldoZW4gZGlzcGxheWluZyBhIGRlbmRyb24gbm90ZSBuYW1lLCBzaG91bGQgaXQgYmUgdHJpbW1lZCB0byBvbmx5IHNob3cgdGhlIGxhc3QgaXRlbSBpbiB0aGUgY2hhaW4/PC9icj5lLmcuIDxjb2RlPkEuQi5DPC9jb2RlPiBcdTIxOTIgPGNvZGU+QzwvY29kZT4uXCJcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3MudHJpbURlbmRyb25Ob3Rlcykub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MudHJpbURlbmRyb25Ob3RlcyA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uZ2V0QWN0aXZlVFlQRVZpZXcoTUFUUklYX1ZJRVcpLmRyYXcoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKGRlbmRyb25EZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJEZW5kcm9uIE5vdGUgRmllbGRcIilcclxuICAgIC5zZXREZXNjKFwiV2hpY2ggZmllbGQgc2hvdWxkIEJyZWFkY3J1bWJzIHVzZSBmb3IgRGVuZHJvbiBub3Rlcz9cIilcclxuICAgIC5hZGREcm9wZG93bigoZGQ6IERyb3Bkb3duQ29tcG9uZW50KSA9PiB7XHJcbiAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4gZGQuYWRkT3B0aW9uKGZpZWxkLCBmaWVsZCkpO1xyXG4gICAgICBkZC5zZXRWYWx1ZShzZXR0aW5ncy5kZW5kcm9uTm90ZUZpZWxkKTtcclxuXHJcbiAgICAgIGRkLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHNldHRpbmdzLmRlbmRyb25Ob3RlRmllbGQgPSB2YWx1ZTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgYXdhaXQgcmVmcmVzaEluZGV4KHBsdWdpbik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB7IE5vdGljZSwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG5pbXBvcnQgeyByZWZyZXNoSW5kZXggfSBmcm9tIFwiLi4vcmVmcmVzaEluZGV4XCI7XHJcbmltcG9ydCB7IHNwbGl0QW5kVHJpbSB9IGZyb20gXCIuLi9VdGlscy9nZW5lcmFsVXRpbHNcIjtcclxuaW1wb3J0IHsgZGV0YWlscywgZnJhZ1dpdGhIVE1MIH0gZnJvbSBcIi4vQnJlYWRjcnVtYnNTZXR0aW5nVGFiXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkR2VuZXJhbFNldHRpbmdzKHBsdWdpbjogQkNQbHVnaW4sIGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCkge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCBnZW5lcmFsRGV0YWlscyA9IGRldGFpbHMoXCJHZW5lcmFsIE9wdGlvbnNcIiwgY29udGFpbmVyRWwpO1xyXG5cclxuICBuZXcgU2V0dGluZyhnZW5lcmFsRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiUmVmcmVzaCBJbmRleCBvbiBOb3RlIENoYW5nZVwiKVxyXG4gICAgLnNldERlc2MoZnJhZ1dpdGhIVE1MKFxyXG4gICAgICBcIlJlZnJlc2ggdGhlIEJyZWFkY3J1bWJzIGluZGV4IGRhdGEgZXZlcnl0aW1lIHlvdSBjaGFuZ2Ugbm90ZXMuPC9icj48c3Ryb25nPk5vdGU8L3N0cm9uZz46IFRoaXMgY2FuIGJlIHZlcnkgc2xvdyBvbiBsYXJnZSB2YXVsdHMuXCIpXHJcbiAgICApXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAgIHRvZ2dsZS5zZXRWYWx1ZShzZXR0aW5ncy5yZWZyZXNoT25Ob3RlQ2hhbmdlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy5yZWZyZXNoT25Ob3RlQ2hhbmdlID0gdmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoZ2VuZXJhbERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlJlZnJlc2ggSW5kZXggT24gTm90ZSBTYXZlXCIpXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAgIHRvZ2dsZS5zZXRWYWx1ZShzZXR0aW5ncy5yZWZyZXNoT25Ob3RlU2F2ZSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MucmVmcmVzaE9uTm90ZVNhdmUgPSB2YWx1ZTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICBuZXcgU2V0dGluZyhnZW5lcmFsRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiU2hvdyBSZWZyZXNoIEluZGV4IE5vdGljZVwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIFwiV2hlbiBSZWZyZXNoaW5nIEluZGV4LCBzaG91bGQgaXQgc2hvdyBhIG5vdGljZSBvbmNlIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGU/XCJcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgdG9nZ2xlLnNldFZhbHVlKHNldHRpbmdzLnNob3dSZWZyZXNoTm90aWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy5zaG93UmVmcmVzaE5vdGljZSA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKGdlbmVyYWxEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJBbGlhcyBGaWVsZHNcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgXCJBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGZpZWxkcyB1c2VkIHRvIHNwZWNpZnkgYWxpYXNlcy4gVGhlc2UgZmllbGRzIHdpbGwgYmUgY2hlY2tlZCwgaW4gb3JkZXIsIHRvIGRpc3BsYXkgYW4gYWx0ZXJuYXRlIG5vdGUgdGl0bGUgaW4gZGlmZmVyZW50IHZpZXdzLjwvYnI+VGhpcyBmaWVsZCB3aWxsIHByb2JhYmx5IGJlIDxjb2RlPmFsaWFzPC9jb2RlPiBvciA8Y29kZT5hbGlhc2VzPC9jb2RlPiwgYnV0IGl0IGNhbiBiZSBhbnl0aGluZywgbGlrZSA8Y29kZT50aXRsZTwvY29kZT4uXCJcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZFRleHQoKHRleHQpID0+IHtcclxuICAgICAgdGV4dC5zZXRWYWx1ZShzZXR0aW5ncy5hbHRMaW5rRmllbGRzLmpvaW4oXCIsIFwiKSk7XHJcbiAgICAgIHRleHQuaW5wdXRFbC5vbmJsdXIgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MuYWx0TGlua0ZpZWxkcyA9IHNwbGl0QW5kVHJpbSh0ZXh0LmdldFZhbHVlKCkpO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICBuZXcgU2V0dGluZyhnZW5lcmFsRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiT25seSBzaG93IGZpcnN0IGFsaWFzXCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgXCJJZiBhIG5vdGUgaGFzIGFuIGFsaWFzICh1c2luZyB0aGUgZmllbGRzIGluIHRoZSBzZXR0aW5nIGFib3ZlKSwgc2hvdWxkIG9ubHkgdGhlIGZpcnN0IG9uZSBiZSBzaG93bj9cIlxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICB0b2dnbGUuc2V0VmFsdWUoIXNldHRpbmdzLnNob3dBbGxBbGlhc2VzKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy5zaG93QWxsQWxpYXNlcyA9ICF2YWx1ZTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgYXdhaXQgcmVmcmVzaEluZGV4KHBsdWdpbik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICBuZXcgU2V0dGluZyhnZW5lcmFsRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiVXNlIHlhbWwgb3IgaW5saW5lIGZpZWxkcyBmb3IgaGllcmFyY2h5IGRhdGFcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBcIklmIGVuYWJsZWQsIEJyZWFkY3J1bWJzIHdpbGwgbWFrZSBpdCdzIGhpZXJhcmNoeSB1c2luZyB5YW1sIGZpZWxkcywgYW5kIGlubGluZSBEYXRhdmlldyBmaWVsZHMuXFxuSWYgdGhpcyBpcyBkaXNhYmxlZCwgaXQgd2lsbCBvbmx5IHVzZSBKdWdnbCBsaW5rcyAoU2VlIGJlbG93KS5cIlxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3MudXNlQWxsTWV0YWRhdGEpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHNldHRpbmdzLnVzZUFsbE1ldGFkYXRhID0gdmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIGF3YWl0IHJlZnJlc2hJbmRleChwbHVnaW4pO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoZ2VuZXJhbERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlVzZSBKdWdnbCBsaW5rIHN5bnRheCB3aXRob3V0IGhhdmluZyBKdWdnbCBpbnN0YWxsZWQuXCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgZnJhZ1dpdGhIVE1MKFxyXG4gICAgICAgICdTaG91bGQgQnJlYWRjcnVtYnMgbG9vayBmb3IgPGEgaHJlZj1cImh0dHBzOi8vanVnZ2wuaW8vTGluaytUeXBlc1wiIGFyaWEtbGFiZWw9XCJodHRwczovL2p1Z2dsLmlvL0xpbmsrVHlwZXNcIj5KdWdnbCBsaW5rczwvYT4gZXZlbiBpZiB5b3UgZG9uXFwndCBoYXZlIEp1Z2dsIGluc3RhbGxlZD8gSWYgeW91IGRvIGhhdmUgSnVnZ2wgaW5zdGFsbGVkLCBpdCB3aWxsIGFsd2F5cyBsb29rIGZvciBKdWdnbCBsaW5rcy4nXHJcbiAgICAgIClcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgdG9nZ2xlXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLnBhcnNlSnVnZ2xMaW5rc1dpdGhvdXRKdWdnbClcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICBzZXR0aW5ncy5wYXJzZUp1Z2dsTGlua3NXaXRob3V0SnVnZ2wgPSB2YWx1ZTtcclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuXHJcblxyXG4gIG5ldyBTZXR0aW5nKGdlbmVyYWxEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJFbmFibGUgRmllbGQgU3VnZ2VzdG9yXCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgZnJhZ1dpdGhIVE1MKFxyXG4gICAgICAgICdBbG90IG9mIEJyZWFkY3J1bWJzIGZlYXR1cmVzIHJlcXVpcmUgYSBtZXRhZGF0YSAob3IgaW5saW5lIERhdGF2aWV3KSBmaWVsZCB0byB3b3JrLiBGb3IgZXhhbXBsZSwgYEJDLWZvbGRlci1ub3RlYC48L2JyPlRoZSBGaWVsZCBTdWdnZXN0b3Igd2lsbCBzaG93IGFuIGF1dG9jb21wbGV0ZSBtZW51IHdpdGggYWxsIGF2YWlsYWJsZSBCcmVhZGNydW1icyBmaWVsZCBvcHRpb25zIHdoZW4geW91IHR5cGUgPGNvZGU+QkMtPC9jb2RlPiBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lLidcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3MuZmllbGRTdWdnZXN0b3IpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHNldHRpbmdzLmZpZWxkU3VnZ2VzdG9yID0gdmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICBuZXcgU2V0dGluZyhnZW5lcmFsRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiRW5hYmxlIFJlbGF0aW9uIFN1Z2dlc3RvclwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBcIkVuYWJsZSBhbiBlZGl0b3Igc3VnZ2VzdG9yIHdoaWNoIGdldHMgdHJpZ2dlcmVkIGJ5IGEgY3VzdG9tIHN0cmluZyB0byBzaG93IGEgbGlzdCBvZiByZWxhdGlvbnMgZnJvbSB5b3VyIGhpZXJhcmNoaWVzIHRvIGluc2VydC5cIlxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAgIHRvZ2dsZVxyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5lbmFibGVSZWxhdGlvblN1Z2dlc3RvcilcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICBzZXR0aW5ncy5lbmFibGVSZWxhdGlvblN1Z2dlc3RvciA9IHZhbHVlO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG4gIG5ldyBTZXR0aW5nKGdlbmVyYWxEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJSZWxhdGlvbiBTdWdnZXN0b3IgVHJpZ2dlclwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBcIlRoZSBzdHJpbmcgdXNlZCB0byB0cmlnZ2VyIHRoZSByZWxhdGlvbiBzdWdnZXN0b3IuIERlZmF1bHQgaXMgPGNvZGU+XFxcXDwvY29kZT4uXCJcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZFRleHQoKHRleHQpID0+XHJcbiAgICAgIHRleHQuc2V0VmFsdWUoc2V0dGluZ3MucmVsU3VnZ2VzdG9yVHJpZ2dlcikub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MucmVsU3VnZ2VzdG9yVHJpZ2dlciA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gIGlmIChhcHAucGx1Z2lucy5wbHVnaW5zLmRhdGF2aWV3ICE9PSB1bmRlZmluZWQpIHtcclxuICAgIG5ldyBTZXR0aW5nKGdlbmVyYWxEZXRhaWxzKVxyXG4gICAgICAuc2V0TmFtZShcIkRhdGF2aWV3IFdhaXQgVGltZVwiKVxyXG4gICAgICAuc2V0RGVzYyhcclxuICAgICAgICAnRW50ZXIgYW4gaW50ZWdlciBudW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0IGZvciB0aGUgRGF0YXZpZXcgSW5kZXggdG8gbG9hZC4gVGhlIGxhcmdlciB5b3VyIHZhdWx0LCB0aGUgbG9uZ2VyIGl0IHdpbGwgdGFrZS4gVGhlIGRlZmF1bHQgaXMgNSBzZWNvbmRzLidcclxuICAgICAgKVxyXG4gICAgICAuYWRkVGV4dCgodGV4dCkgPT5cclxuICAgICAgICB0ZXh0XHJcbiAgICAgICAgICAuc2V0UGxhY2Vob2xkZXIoXCJTZWNvbmRzXCIpXHJcbiAgICAgICAgICAuc2V0VmFsdWUoKHNldHRpbmdzLmR2V2FpdFRpbWUgLyAxMDAwKS50b1N0cmluZygpKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBudW0gPSBOdW1iZXIodmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKG51bSA+IDApIHtcclxuICAgICAgICAgICAgICBzZXR0aW5ncy5kdldhaXRUaW1lID0gbnVtICogMTAwMDtcclxuICAgICAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbmV3IE5vdGljZShcIlRoZSBpbnRlcnZhbCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlclwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbn1cclxuIiwgImltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50LCBTZXR0aW5nIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IHJlZnJlc2hJbmRleCB9IGZyb20gXCIuLi9yZWZyZXNoSW5kZXhcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHsgc3BsaXRBbmRUcmltIH0gZnJvbSBcIi4uL1V0aWxzL2dlbmVyYWxVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXRGaWVsZHMgfSBmcm9tIFwiLi4vVXRpbHMvSGllclV0aWxzXCI7XHJcbmltcG9ydCB7IGZyYWdXaXRoSFRNTCwgc3ViRGV0YWlscyB9IGZyb20gXCIuL0JyZWFkY3J1bWJzU2V0dGluZ1RhYlwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZEhpZXJhcmNoeU5vdGVTZXR0aW5ncyhcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIGFsdGVybmF0aXZlSGllcmFyY2h5RGV0YWlsczogSFRNTERldGFpbHNFbGVtZW50XHJcbikge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCBoaWVyYXJjaHlOb3RlRGV0YWlscyA9IHN1YkRldGFpbHMoXHJcbiAgICBcIkhpZXJhcmNoeSBOb3Rlc1wiLFxyXG4gICAgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzXHJcbiAgKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoaGllcmFyY2h5Tm90ZURldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkhpZXJhcmNoeSBOb3RlKHMpXCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgZnJhZ1dpdGhIVE1MKFxyXG4gICAgICAgIFwiQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBub3RlcyB1c2VkIHRvIGNyZWF0ZSBleHRlcm5hbCBCcmVhZGNydW1iIHN0cnVjdHVyZXMuPGJyPllvdSBjYW4gYWxzbyBwb2ludCB0byBhIDxlbT5mb2xkZXI8L2VtPiBvZiBoaWVyYXJjaHkgbm90ZXMgYnkgZW50ZXJpbmcgPGNvZGU+Zm9sZGVyTmFtZS88L2NvZGU+IChlbmRpbmcgd2l0aCBhIDxjb2RlPi88L2NvZGU+KS48YnI+SGllcmFyY2h5IG5vdGUgbmFtZXMgYW5kIGZvbGRlcnMgb2YgaGllcmFyY2h5IG5vdGVzIGNhbiBib3RoIGJlIGVudGVyZWQgaW4gdGhlIHNhbWUgY29tbWEtc2VwYXJhdGVkIGxpc3QuXCJcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZFRleHQoKHRleHQpID0+IHtcclxuICAgICAgdGV4dFxyXG4gICAgICAgIC5zZXRQbGFjZWhvbGRlcihcIkhpZXJhcmNoeSBOb3RlKHMpXCIpXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLmhpZXJhcmNoeU5vdGVzLmpvaW4oXCIsIFwiKSk7XHJcblxyXG4gICAgICB0ZXh0LmlucHV0RWwub25ibHVyID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNwbGl0cyA9IHNwbGl0QW5kVHJpbSh0ZXh0LmdldFZhbHVlKCkpO1xyXG5cclxuICAgICAgICBzZXR0aW5ncy5oaWVyYXJjaHlOb3RlcyA9IHNwbGl0cztcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgbmV3IFNldHRpbmcoaGllcmFyY2h5Tm90ZURldGFpbHMpXHJcbiAgICAuc2V0TmFtZSgnSGllcmFyY2h5IG5vdGUgaXMgcGFyZW50IG9mIHRvcC1sZXZlbCBpdGVtcycpXHJcbiAgICAuc2V0RGVzYygnU2hvdWxkIHRoZSBhY3R1YWwgaGllcmFyY2h5IG5vdGUgYmUgdHJlYXRlZCBhcyB0aGUgcGFyZW50IG9mIGFsbCB0aGUgdG9wLWxldmVsIGl0ZW1zIGluIHRoZSBsaXN0PyBcdTI3MDUgPSBZZXMsIFx1Mjc0QyA9IE5vJylcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xyXG4gICAgICB0b2dnbGVcclxuICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3MuaGllcmFyY2h5Tm90ZUlzUGFyZW50KVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLmhpZXJhcmNoeU5vdGVJc1BhcmVudCA9IHZhbHVlXHJcbiAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICBhd2FpdCByZWZyZXNoSW5kZXgocGx1Z2luKTtcclxuICAgICAgICB9KVxyXG4gICAgfSlcclxuXHJcbiAgbmV3IFNldHRpbmcoaGllcmFyY2h5Tm90ZURldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkRlZmF1bHQgSGllcmFyY2h5IE5vdGUgRmllbGRcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgXCJCeSBkZWZhdWx0LCBoaWVyYXJjaHkgbm90ZXMgdXNlIHRoZSBmaXJzdCA8Y29kZT51cDwvY29kZT4gZmllbGQgaW4geW91ciBoaWVyYXJjaGllcy4gQ2hvb3NlIGEgZGlmZmVyZW50IG9uZSB0byB1c2UgYnkgZGVmYXVsdC4gSWYgeW91IGRvbid0IHdhbnQgdG8gY2hvb3NlIGEgZGVmYXVsdCwgc2VsZWN0IHRoZSBibGFuayBvcHRpb24gYXQgdGhlIGJvdHRvbSBvZiB0aGUgbGlzdC5cIlxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuYWRkRHJvcGRvd24oKGRkOiBEcm9wZG93bkNvbXBvbmVudCkgPT4ge1xyXG4gICAgICBjb25zdCB1cEZpZWxkcyA9IGdldEZpZWxkcyhzZXR0aW5ncy51c2VySGllcnMsIFwidXBcIik7XHJcblxyXG4gICAgICBjb25zdCBvcHRpb25zID0ge307XHJcbiAgICAgIHVwRmllbGRzLmZvckVhY2goXHJcbiAgICAgICAgKGZpZWxkKSA9PiAob3B0aW9uc1tmaWVsZF0gPSBmaWVsZClcclxuICAgICAgKTtcclxuICAgICAgZGQuYWRkT3B0aW9ucyhvcHRpb25zKVxyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5ITlVwRmllbGQgfHwgdXBGaWVsZHNbMF0pXHJcbiAgICAgICAgLm9uQ2hhbmdlKGFzeW5jIChmaWVsZCkgPT4ge1xyXG4gICAgICAgICAgc2V0dGluZ3MuSE5VcEZpZWxkID0gZmllbGQ7XHJcbiAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICBhd2FpdCByZWZyZXNoSW5kZXgocGx1Z2luKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG59XHJcbiIsIG51bGwsICI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG4gIGltcG9ydCB7IE5vdGljZSB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG4gIGltcG9ydCBGYUxpc3RVbCBmcm9tIFwic3ZlbHRlLWljb25zL2ZhL0ZhTGlzdFVsLnN2ZWx0ZVwiO1xyXG4gIGltcG9ydCBGYVBsdXMgZnJvbSBcInN2ZWx0ZS1pY29ucy9mYS9GYVBsdXMuc3ZlbHRlXCI7XHJcbiAgaW1wb3J0IEZhUmVnVHJhc2hBbHQgZnJvbSBcInN2ZWx0ZS1pY29ucy9mYS9GYVJlZ1RyYXNoQWx0LnN2ZWx0ZVwiO1xyXG4gIGltcG9ydCB7IEFSUk9XX0RJUkVDVElPTlMsIGJsYW5rVXNlckhpZXIsIERJUkVDVElPTlMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbiAgaW1wb3J0IHR5cGUgeyBVc2VySGllciB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbiAgaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuICBpbXBvcnQgeyBzcGxpdEFuZFRyaW0sIHN3YXBJdGVtcyB9IGZyb20gXCIuLi9VdGlscy9nZW5lcmFsVXRpbHNcIjtcclxuICBpbXBvcnQgeyBoaWVyVG9TdHIgfSBmcm9tIFwiLi4vVXRpbHMvSGllclV0aWxzXCI7XHJcblxyXG4gIGV4cG9ydCBsZXQgcGx1Z2luOiBCQ1BsdWdpbjtcclxuICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW47XHJcblxyXG4gIGxldCBjdXJySGllcnMgPSBbLi4ucGx1Z2luLnNldHRpbmdzLnVzZXJIaWVyc107XHJcbiAgYXN5bmMgZnVuY3Rpb24gdXBkYXRlKGN1cnJIaWVyczogVXNlckhpZXJbXSkge1xyXG4gICAgcGx1Z2luLnNldHRpbmdzLnVzZXJIaWVycyA9IGN1cnJIaWVycztcclxuICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICB9XHJcbjwvc2NyaXB0PlxyXG5cclxuPGRpdj5cclxuICA8ZGl2IGNsYXNzPVwiQkMtQnV0dG9uc1wiPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICBhcmlhLWxhYmVsPVwiQWRkIE5ldyBIaWVyYXJjaHlcIlxyXG4gICAgICBvbjpjbGljaz17YXN5bmMgKCkgPT4gKGN1cnJIaWVycyA9IFsuLi5jdXJySGllcnMsIGJsYW5rVXNlckhpZXIoKV0pfVxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPlxyXG4gICAgICAgIDxGYVBsdXMgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgYXJpYS1sYWJlbD1cIlJlc2V0IEFsbCBIaWVyYXJjaGllc1wiXHJcbiAgICAgIG9uOmNsaWNrPXthc3luYyAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHdpbmRvdy5jb25maXJtKFwiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlc2V0IGFsbCBoaWVyYXJjaGllcz9cIikpIHtcclxuICAgICAgICAgIGN1cnJIaWVycyA9IFtdO1xyXG4gICAgICAgICAgYXdhaXQgdXBkYXRlKGN1cnJIaWVycyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9fVxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPlxyXG4gICAgICAgIDxGYVJlZ1RyYXNoQWx0IC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIGFyaWEtbGFiZWw9XCJTaG93IEhpZXJhcmNoaWVzXCJcclxuICAgICAgb246Y2xpY2s9eygpID0+IG5ldyBOb3RpY2UoY3VyckhpZXJzLm1hcChoaWVyVG9TdHIpLmpvaW4oXCJcXG5cXG5cIikpfVxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPlxyXG4gICAgICAgIDxGYUxpc3RVbCAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICB7I2VhY2ggY3VyckhpZXJzIGFzIGhpZXIsIGl9XHJcbiAgICA8ZGV0YWlscyBjbGFzcz1cIkJDLUhpZXItRGV0YWlsc1wiPlxyXG4gICAgICA8c3VtbWFyeT5cclxuICAgICAgICB7RElSRUNUSU9OUy5tYXAoKGRpcikgPT4gaGllcltkaXJdPy5qb2luKFwiLCBcIikgPz8gXCJcIilcclxuICAgICAgICAgIC5tYXAoKGRpckZpZWxkcykgPT4gYCgke2RpckZpZWxkc30pYClcclxuICAgICAgICAgIC5qb2luKFwiIFwiKX1cclxuXHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJCQy1CdXR0b25zXCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTd2FwIHdpdGggSGllcmFyY2h5IEFib3ZlXCJcclxuICAgICAgICAgICAgb246Y2xpY2s9e2FzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICBjdXJySGllcnMgPSBzd2FwSXRlbXMoaSwgaSAtIDEsIGN1cnJIaWVycyk7XHJcbiAgICAgICAgICAgICAgYXdhaXQgdXBkYXRlKGN1cnJIaWVycyk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFx1MjE5MVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTd2FwIHdpdGggSGllcmFyY2h5IEJlbG93XCJcclxuICAgICAgICAgICAgb246Y2xpY2s9e2FzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICBjdXJySGllcnMgPSBzd2FwSXRlbXMoaSwgaSArIDEsIGN1cnJIaWVycyk7XHJcbiAgICAgICAgICAgICAgYXdhaXQgdXBkYXRlKGN1cnJIaWVycyk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFx1MjE5M1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJSZW1vdmUgSGllcmFyY2h5XCJcclxuICAgICAgICAgICAgb246Y2xpY2s9e2FzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBvbGRIaWVyID0gY3VyckhpZXJzLnNwbGljZShpLCAxKVswXTtcclxuICAgICAgICAgICAgICBvbGRIaWVyLnVwLmZvckVhY2goKHVwRmllbGQpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gc2V0dGluZ3MubGltaXRUcmFpbENoZWNrYm94ZXMuaW5kZXhPZih1cEZpZWxkKTtcclxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSBzZXR0aW5ncy5saW1pdFRyYWlsQ2hlY2tib3hlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICBESVJFQ1RJT05TLmZvckVhY2goKGRpcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgb2xkSGllcltkaXJdLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4SSA9IHNldHRpbmdzLmxpbWl0SnVtcFRvRmlyc3RGaWVsZHMuaW5kZXhPZihmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChpbmRleEkgPiAtMSlcclxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5saW1pdEp1bXBUb0ZpcnN0RmllbGRzLnNwbGljZShpbmRleEksIDEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXhKID0gc2V0dGluZ3MubGltaXRXcml0ZUJDQ2hlY2tib3hlcy5pbmRleE9mKGZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKGluZGV4SiA+IC0xKVxyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLmxpbWl0SnVtcFRvRmlyc3RGaWVsZHMuc3BsaWNlKGluZGV4SiwgMSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgY3VyckhpZXJzID0gY3VyckhpZXJzO1xyXG4gICAgICAgICAgICAgIGF3YWl0IHVwZGF0ZShjdXJySGllcnMpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBYXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvc3VtbWFyeT5cclxuICAgICAgeyNlYWNoIERJUkVDVElPTlMgYXMgZGlyfVxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJCQy1BcnJvdy1MYWJlbFwiIGZvcj17ZGlyfT5cclxuICAgICAgICAgICAge0FSUk9XX0RJUkVDVElPTlNbZGlyXX1cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBzaXplPVwiMjBcIlxyXG4gICAgICAgICAgICBuYW1lPXtkaXJ9XHJcbiAgICAgICAgICAgIHZhbHVlPXtoaWVyW2Rpcl0/LmpvaW4oXCIsIFwiKSA/PyBcIlwifVxyXG4gICAgICAgICAgICBvbjpjaGFuZ2U9e2FzeW5jIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgeyB2YWx1ZSB9ID0gZS50YXJnZXQ7XHJcbiAgICAgICAgICAgICAgY29uc3Qgc3BsaXRzID0gc3BsaXRBbmRUcmltKHZhbHVlKTtcclxuICAgICAgICAgICAgICBjdXJySGllcnNbaV1bZGlyXSA9IHNwbGl0cztcclxuICAgICAgICAgICAgICBhd2FpdCB1cGRhdGUoY3VyckhpZXJzKTtcclxuXHJcbiAgICAgICAgICAgICAgc3BsaXRzLmZvckVhY2goKHNwbGl0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgIGRpciA9PT0gXCJ1cFwiICYmXHJcbiAgICAgICAgICAgICAgICAgICFzZXR0aW5ncy5saW1pdFRyYWlsQ2hlY2tib3hlcy5pbmNsdWRlcyhzcGxpdClcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgc2V0dGluZ3MubGltaXRUcmFpbENoZWNrYm94ZXMucHVzaChzcGxpdCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXNldHRpbmdzLmxpbWl0SnVtcFRvRmlyc3RGaWVsZHMuaW5jbHVkZXMoc3BsaXQpKVxyXG4gICAgICAgICAgICAgICAgICBzZXR0aW5ncy5saW1pdEp1bXBUb0ZpcnN0RmllbGRzLnB1c2goc3BsaXQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFzZXR0aW5ncy5saW1pdFdyaXRlQkNDaGVja2JveGVzLmluY2x1ZGVzKHNwbGl0KSlcclxuICAgICAgICAgICAgICAgICAgc2V0dGluZ3MubGltaXRXcml0ZUJDQ2hlY2tib3hlcy5wdXNoKHNwbGl0KTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB7L2VhY2h9XHJcbiAgICA8L2RldGFpbHM+XHJcbiAgey9lYWNofVxyXG48L2Rpdj5cclxuXHJcbjxzdHlsZT5cclxuICBsYWJlbC5CQy1BcnJvdy1MYWJlbCB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB3aWR0aDogMjBweCAhaW1wb3J0YW50O1xyXG4gIH1cclxuICBkaXYuQkMtQnV0dG9ucyB7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogNXB4O1xyXG4gIH1cclxuXHJcbiAgZGV0YWlscy5CQy1IaWVyLURldGFpbHMge1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYmFja2dyb3VuZC1tb2RpZmllci1ib3JkZXIpO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICAgIHBhZGRpbmc6IDEwcHggNXB4IDEwcHggMTBweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XHJcbiAgfVxyXG4gIC5CQy1IaWVyLURldGFpbHMgc3VtbWFyeTo6bWFya2VyIHtcclxuICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICB9XHJcblxyXG4gIC5CQy1IaWVyLURldGFpbHMgc3VtbWFyeSBidXR0b24ge1xyXG4gICAgZmxvYXQ6IHJpZ2h0O1xyXG4gIH1cclxuICAuaWNvbiB7XHJcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1ub3JtYWwpO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgcGFkZGluZy10b3A6IDNweDtcclxuICAgIHdpZHRoOiAxN3B4O1xyXG4gICAgaGVpZ2h0OiAxN3B4O1xyXG4gIH1cclxuPC9zdHlsZT5cclxuIiwgIjxzY3JpcHQ+XG4gIGV4cG9ydCBsZXQgdGl0bGUgPSBudWxsO1xuICBleHBvcnQgbGV0IHZpZXdCb3g7XG48L3NjcmlwdD5cblxuPHN0eWxlPlxuICBzdmcge1xuICAgIHN0cm9rZTogY3VycmVudENvbG9yO1xuICAgIGZpbGw6IGN1cnJlbnRDb2xvcjtcbiAgICBzdHJva2Utd2lkdGg6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gIH0gIFxuPC9zdHlsZT5cblxuPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIge3ZpZXdCb3h9PlxuICB7I2lmIHRpdGxlfVxuICAgIDx0aXRsZT57dGl0bGV9PC90aXRsZT5cbiAgey9pZn1cbiAgPHNsb3QgLz5cbjwvc3ZnPlxuIiwgIjxzY3JpcHQ+XG4gICAgICAgIGltcG9ydCBJY29uQmFzZSBmcm9tICcuLi9jb21wb25lbnRzL0ljb25CYXNlLnN2ZWx0ZSc7XG4gICAgICAgIDwvc2NyaXB0PlxuICAgICAgICA8SWNvbkJhc2Ugdmlld0JveD1cIjAgMCA1MTIgNTEyXCIgey4uLiQkcHJvcHN9PlxuICAgICAgICAgIDxwYXRoIGQ9XCJNNDggNDhhNDggNDggMCAxIDAgNDggNDggNDggNDggMCAwIDAtNDgtNDh6bTAgMTYwYTQ4IDQ4IDAgMSAwIDQ4IDQ4IDQ4IDQ4IDAgMCAwLTQ4LTQ4em0wIDE2MGE0OCA0OCAwIDEgMCA0OCA0OCA0OCA0OCAwIDAgMC00OC00OHptNDQ4IDE2SDE3NmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMjBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTMyMEgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2VjgwYTE2IDE2IDAgMCAwLTE2LTE2em0wIDE2MEgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpcIiAvPlxuICAgICAgICA8L0ljb25CYXNlPlxuICAgICAgIiwgIjxzY3JpcHQ+XG4gICAgICAgIGltcG9ydCBJY29uQmFzZSBmcm9tICcuLi9jb21wb25lbnRzL0ljb25CYXNlLnN2ZWx0ZSc7XG4gICAgICAgIDwvc2NyaXB0PlxuICAgICAgICA8SWNvbkJhc2Ugdmlld0JveD1cIjAgMCA0NDggNTEyXCIgey4uLiQkcHJvcHN9PlxuICAgICAgICAgIDxwYXRoIGQ9XCJNNDE2IDIwOEgyNzJWNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTQ0SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTQ0djE0NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzA0aDE0NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiIC8+XG4gICAgICAgIDwvSWNvbkJhc2U+XG4gICAgICAiLCAiPHNjcmlwdD5cbiAgICAgICAgaW1wb3J0IEljb25CYXNlIGZyb20gJy4uL2NvbXBvbmVudHMvSWNvbkJhc2Uuc3ZlbHRlJztcbiAgICAgICAgPC9zY3JpcHQ+XG4gICAgICAgIDxJY29uQmFzZSB2aWV3Qm94PVwiMCAwIDQ0OCA1MTJcIiB7Li4uJCRwcm9wc30+XG4gICAgICAgICAgPHBhdGggZD1cIk0yNjggNDE2aDI0YTEyIDEyIDAgMCAwIDEyLTEyVjE4OGExMiAxMiAwIDAgMC0xMi0xMmgtMjRhMTIgMTIgMCAwIDAtMTIgMTJ2MjE2YTEyIDEyIDAgMCAwIDEyIDEyek00MzIgODBoLTgyLjQxbC0zNC01Ni43QTQ4IDQ4IDAgMCAwIDI3NC40MSAwSDE3My41OWE0OCA0OCAwIDAgMC00MS4xNiAyMy4zTDk4LjQxIDgwSDE2QTE2IDE2IDAgMCAwIDAgOTZ2MTZhMTYgMTYgMCAwIDAgMTYgMTZoMTZ2MzM2YTQ4IDQ4IDAgMCAwIDQ4IDQ4aDI4OGE0OCA0OCAwIDAgMCA0OC00OFYxMjhoMTZhMTYgMTYgMCAwIDAgMTYtMTZWOTZhMTYgMTYgMCAwIDAtMTYtMTZ6TTE3MS44NCA1MC45MUE2IDYgMCAwIDEgMTc3IDQ4aDk0YTYgNiAwIDAgMSA1LjE1IDIuOTFMMjkzLjYxIDgwSDE1NC4zOXpNMzY4IDQ2NEg4MFYxMjhoMjg4em0tMjEyLTQ4aDI0YTEyIDEyIDAgMCAwIDEyLTEyVjE4OGExMiAxMiAwIDAgMC0xMi0xMmgtMjRhMTIgMTIgMCAwIDAtMTIgMTJ2MjE2YTEyIDEyIDAgMCAwIDEyIDEyelwiIC8+XG4gICAgICAgIDwvSWNvbkJhc2U+XG4gICAgICAiLCAiaW1wb3J0IFVzZXJIaWVyYXJjaGllcyBmcm9tIFwiLi4vQ29tcG9uZW50cy9Vc2VySGllcmFyY2hpZXMuc3ZlbHRlXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IGRldGFpbHMgfSBmcm9tIFwiLi9CcmVhZGNydW1ic1NldHRpbmdUYWJcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRIaWVyYXJjaHlTZXR0aW5ncyhcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudFxyXG4pIHtcclxuICBjb25zdCBmaWVsZERldGFpbHMgPSBkZXRhaWxzKFwiSGllcmFyY2hpZXNcIiwgY29udGFpbmVyRWwpO1xyXG5cclxuICBmaWVsZERldGFpbHMuY3JlYXRlRWwoXCJwXCIsIHtcclxuICAgIHRleHQ6IFwiSGVyZSB5b3UgY2FuIHNldCB1cCBkaWZmZXJlbnQgaGllcmFyY2hpZXMgeW91IHVzZSBpbiB5b3VyIHZhdWx0LiBUbyBhZGQgYSBuZXcgaGllcmFyY2h5LCBjbGljayB0aGUgcGx1cyBidXR0b24uIFRoZW4sIGZpbGwgaW4gdGhlIGZpZWxkIG5hbWVzIG9mIHlvdXIgaGllcmFjaHkgaW50byB0aGUgNSBib3hlcyB0aGF0IGFwcGVhci5cIixcclxuICB9KTtcclxuICBmaWVsZERldGFpbHMuY3JlYXRlRWwoXCJwXCIsIHtcclxuICAgIHRleHQ6IFwiRm9yIGVhY2ggZGlyZWN0aW9uLCB5b3UgY2FuIGVudGVyIG11bHRpcGxlIGZpZWxkIG5hbWVzIGluIGEgY29tbWEtc2VwZXJhdGVkIGxpc3QuIEZvciBleGFtcGxlOiBgcGFyZW50LCBicm9hZGVyLCB1cHBlcmBcIixcclxuICB9KTtcclxuXHJcbiAgbmV3IFVzZXJIaWVyYXJjaGllcyh7XHJcbiAgICB0YXJnZXQ6IGZpZWxkRGV0YWlscyxcclxuICAgIHByb3BzOiB7IHBsdWdpbiB9LFxyXG4gIH0pO1xyXG59XHJcbiIsIG51bGwsICI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG4gIGltcG9ydCB7IHdhcm4gfSBmcm9tIFwibG9nbGV2ZWxcIjtcclxuICBpbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG4gIGltcG9ydCB7IHJlZnJlc2hJbmRleCB9IGZyb20gXCIuLi9yZWZyZXNoSW5kZXhcIjtcclxuXHJcbiAgZXhwb3J0IGxldCBwbHVnaW46IEJDUGx1Z2luO1xyXG4gIGV4cG9ydCBsZXQgc2V0dGluZ05hbWU6IHN0cmluZztcclxuICBleHBvcnQgbGV0IG9wdGlvbnM6IHN0cmluZ1tdO1xyXG5cclxuICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW47XHJcblxyXG4gIGxldCBzZWxlY3RlZCA9IHNldHRpbmdzW3NldHRpbmdOYW1lXTtcclxuXHJcbiAgJDogdG9Ob25lID0gc2VsZWN0ZWQubGVuZ3RoID09PSAwID8gZmFsc2UgOiB0cnVlO1xyXG5cclxuICBhc3luYyBmdW5jdGlvbiBzYXZlKCkge1xyXG4gICAgaWYgKHNldHRpbmdzW3NldHRpbmdOYW1lXSA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICByZXR1cm4gd2FybihzZXR0aW5nTmFtZSArIFwiIG5vdCBmb3VuZCBpbiBCQyBzZXR0aW5nc1wiKTtcclxuXHJcbiAgICBzZXR0aW5nc1tzZXR0aW5nTmFtZV0gPSBzZWxlY3RlZDtcclxuICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgIGF3YWl0IHJlZnJlc2hJbmRleChwbHVnaW4pO1xyXG4gIH1cclxuPC9zY3JpcHQ+XHJcblxyXG48ZGl2PlxyXG4gIDxidXR0b25cclxuICAgIG9uOmNsaWNrPXthc3luYyAoKSA9PiB7XHJcbiAgICAgIGlmICh0b05vbmUpIHNlbGVjdGVkID0gW107XHJcbiAgICAgIGVsc2Ugc2VsZWN0ZWQgPSBvcHRpb25zO1xyXG4gICAgICBhd2FpdCBzYXZlKCk7XHJcbiAgICB9fVxyXG4gID5cclxuICAgIFNlbGVjdCB7dG9Ob25lID8gXCJOb25lXCIgOiBcIkFsbFwifVxyXG4gIDwvYnV0dG9uPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgeyNlYWNoIG9wdGlvbnMgYXMgb3B0aW9ufVxyXG4gICAgPGRpdj5cclxuICAgICAgPGxhYmVsPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgIHZhbHVlPXtvcHRpb259XHJcbiAgICAgICAgICBiaW5kOmdyb3VwPXtzZWxlY3RlZH1cclxuICAgICAgICAgIG9uOmNoYW5nZT17YXN5bmMgKCkgPT4gYXdhaXQgc2F2ZSgpfVxyXG4gICAgICAgIC8+XHJcbiAgICAgICAge29wdGlvbn1cclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gIHsvZWFjaH1cclxuPC9kaXY+XHJcblxyXG48c3R5bGU+XHJcbiAgLmdyaWQge1xyXG4gICAgZGlzcGxheTogZ3JpZDtcclxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMTAwcHgsIDFmcikpO1xyXG4gIH1cclxuPC9zdHlsZT5cclxuIiwgImltcG9ydCBDaGVja2JveGVzIGZyb20gXCIuLi9Db21wb25lbnRzL0NoZWNrYm94ZXMuc3ZlbHRlXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IGdldEZpZWxkcyB9IGZyb20gXCIuLi9VdGlscy9IaWVyVXRpbHNcIjtcclxuaW1wb3J0IHsgc3ViRGV0YWlscyB9IGZyb20gXCIuL0JyZWFkY3J1bWJzU2V0dGluZ1RhYlwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZEp1bXBUb05leHRTZXR0aW5ncyhcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIHZpZXdEZXRhaWxzOiBIVE1MRGV0YWlsc0VsZW1lbnRcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IGp1bXBUb0RpckRldGFpbHMgPSBzdWJEZXRhaWxzKFwiSnVtcCB0byBOZXh0IERpcmVjdGlvblwiLCB2aWV3RGV0YWlscyk7XHJcblxyXG4gIGp1bXBUb0RpckRldGFpbHMuY3JlYXRlRGl2KHsgY2xzOiAnc2V0dGluZy1pdGVtLW5hbWUnLCB0ZXh0OiAnTGltaXQgd2hpY2ggZmllbGRzIHRvIGp1bXAgdG8nIH0pXHJcblxyXG4gIG5ldyBDaGVja2JveGVzKHtcclxuICAgIHRhcmdldDoganVtcFRvRGlyRGV0YWlscyxcclxuICAgIHByb3BzOiB7XHJcbiAgICAgIHBsdWdpbixcclxuICAgICAgc2V0dGluZ05hbWU6IFwibGltaXRKdW1wVG9GaXJzdEZpZWxkc1wiLFxyXG4gICAgICBvcHRpb25zOiBnZXRGaWVsZHMoc2V0dGluZ3MudXNlckhpZXJzKSxcclxuICAgIH0sXHJcbiAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB7IE5vdGljZSwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgeyBvcGVuVmlldyB9IGZyb20gXCJvYnNpZGlhbi1jb21tdW5pdHktbGliL2Rpc3QvdXRpbHNcIjtcclxuaW1wb3J0IHsgTUFUUklYX1ZJRVcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCBNYXRyaXhWaWV3IGZyb20gXCIuLi9WaWV3cy9NYXRyaXhWaWV3XCI7XHJcbmltcG9ydCB7IGZyYWdXaXRoSFRNTCwgc3ViRGV0YWlscyB9IGZyb20gXCIuL0JyZWFkY3J1bWJzU2V0dGluZ1RhYlwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZE1hdHJpeFZpZXdTZXR0aW5ncyhcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIHZpZXdEZXRhaWxzOiBIVE1MRGV0YWlsc0VsZW1lbnRcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IE1MVmlld0RldGFpbHMgPSBzdWJEZXRhaWxzKFwiTWF0cml4IFZpZXdcIiwgdmlld0RldGFpbHMpO1xyXG5cclxuICBuZXcgU2V0dGluZyhNTFZpZXdEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJTaG93IGFsbCBmaWVsZCBuYW1lcyBvciBqdXN0IHJlbGF0aW9uIHR5cGVzXCIpXHJcbiAgICAuc2V0RGVzYyhmcmFnV2l0aEhUTUwoXHJcbiAgICAgIFwiU2hvdyB0aGUgbGlzdCBvZiBtZXRhZGF0YSBmaWVsZHMgZm9yIGVhY2ggcmVsYXRpb24gdHlwZSAoZS5nLiA8Y29kZT5wYXJlbnQsIGJyb2FkZXIsIHVwcGVyPC9jb2RlPiksIG9yIGp1c3QgdGhlIG5hbWUgb2YgdGhlIHJlbGF0aW9uIHR5cGUsIGkuZS4gJzxjb2RlPlBhcmVudDwvY29kZT4nLCAnPGNvZGU+U2libGluZzwvY29kZT4nLCAnPGNvZGU+Q2hpbGQ8L2NvZGU+Jy48L2JyPlx1MjcwNSA9IHNob3cgdGhlIGZ1bGwgbGlzdC5cIilcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgdG9nZ2xlLnNldFZhbHVlKHNldHRpbmdzLnNob3dOYW1lT3JUeXBlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy5zaG93TmFtZU9yVHlwZSA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uZ2V0QWN0aXZlVFlQRVZpZXcoTUFUUklYX1ZJRVcpLmRyYXcoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKE1MVmlld0RldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlNob3cgUmVsYXRpb25zaGlwIFR5cGVcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgXCJTaG93IHdoZXRoZXIgYSBsaW5rIGlzIHJlYWwgb3IgaW1wbGllZC5cIlxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAgIHRvZ2dsZS5zZXRWYWx1ZShzZXR0aW5ncy5zaG93UmVsYXRpb25UeXBlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy5zaG93UmVsYXRpb25UeXBlID0gdmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5nZXRBY3RpdmVUWVBFVmlldyhNQVRSSVhfVklFVykuZHJhdygpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoTUxWaWV3RGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiRGlyZWN0aW9ucyBPcmRlclwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBgQ2hhbmdlIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgZGlyZWN0aW9ucyBhcHBlYXIgaW4gdGhlIE1hdHJpeCB2aWV3LjwvYnI+VGhlIGRlZmF1bHQgaXMgXCJ1cCwgc2FtZSwgZG93biwgbmV4dCwgcHJldlwiICg8Y29kZT4wMTIzNDwvY29kZT4pLlxyXG4gICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICA8bGk+MCBcdTIxOTIgdXA8L2xpPlxyXG4gICAgICAgICAgICA8bGk+MSBcdTIxOTIgc2FtZTwvbGk+XHJcbiAgICAgICAgICAgIDxsaT4yIFx1MjE5MiBkb3duPC9saT5cclxuICAgICAgICAgICAgPGxpPjMgXHUyMTkyIG5leHQ8L2xpPlxyXG4gICAgICAgICAgICA8bGk+NCBcdTIxOTIgcHJldjwvbGk+XHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPHN0cm9uZz5Ob3RlPC9zdHJvbmc+OiBZb3UgY2FuIHJlbW92ZSBudW1iZXJzIHRvIGhpZGUgdGhvc2UgZGlyZWN0aW9ucyBpbiB0aGUgTWF0cml4IFZpZXcuIEZvciBleGFtcGxlLCA8Y29kZT4wMjwvY29kZT4gd2lsbCBvbmx5IHNob3cgdXAgYW5kIGRvd24sIGluIHRoYXQgb3JkZXIuYFxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuYWRkVGV4dCgodGV4dCkgPT4ge1xyXG4gICAgICB0ZXh0LnNldFZhbHVlKHNldHRpbmdzLnNxdWFyZURpcmVjdGlvbnNPcmRlci5qb2luKFwiXCIpKTtcclxuICAgICAgdGV4dC5pbnB1dEVsLm9uYmx1ciA9IGFzeW5jICgpID0+IHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHRleHQuZ2V0VmFsdWUoKTtcclxuICAgICAgICBjb25zdCB2YWx1ZXMgPSB2YWx1ZS5zcGxpdChcIlwiKTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB2YWx1ZS5sZW5ndGggPD0gNSAmJlxyXG4gICAgICAgICAgdmFsdWVzLmV2ZXJ5KCh2YWx1ZSkgPT4gW1wiMFwiLCBcIjFcIiwgXCIyXCIsIFwiM1wiLCBcIjRcIl0uaW5jbHVkZXModmFsdWUpKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgc2V0dGluZ3Muc3F1YXJlRGlyZWN0aW9uc09yZGVyID0gdmFsdWVzLm1hcCgob3JkZXIpID0+XHJcbiAgICAgICAgICAgIE51bWJlci5wYXJzZUludChvcmRlcilcclxuICAgICAgICAgICkgYXMgKDAgfCAxIHwgMiB8IDMgfCA0KVtdO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLmdldEFjdGl2ZVRZUEVWaWV3KE1BVFJJWF9WSUVXKS5kcmF3KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG5ldyBOb3RpY2UoXHJcbiAgICAgICAgICAgICdUaGUgdmFsdWUgbXVzdCBiZSBhIDUgZGlnaXQgbnVtYmVyIHVzaW5nIG9ubHkgdGhlIGRpZ2l0cyBcIjBcIiwgXCIxXCIsIFwiMlwiLCBcIjNcIiwgXCI0XCInXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICBuZXcgU2V0dGluZyhNTFZpZXdEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJFbmFibGUgQWxwaGFiZXRpY2FsIFNvcnRpbmdcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBcIkJ5IGRlZmF1bHQsIGl0ZW1zIGluIHRoZSBNYXRyaXggdmlldyBhcmUgc29ydGVkIGJ5IHRoZSBvcmRlciB0aGV5IGFwcGVhciBpbiB5b3VyIG5vdGVzLiBUb2dnbGUgdGhpcyBvbiB0byBlbmFibGUgYWxwaGFiZXRpY2FsIHNvcnRpbmcuXCJcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgdG9nZ2xlLnNldFZhbHVlKHNldHRpbmdzLmVuYWJsZUFscGhhU29ydCkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MuZW5hYmxlQWxwaGFTb3J0ID0gdmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5nZXRBY3RpdmVUWVBFVmlldyhNQVRSSVhfVklFVykuZHJhdygpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgLy8gVE9ETyBoaWRlIHRoaXMgc2V0dGluZyBpZiAhZW5hYmxlQWxwaGFTb3J0XHJcbiAgbmV3IFNldHRpbmcoTUxWaWV3RGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiU29ydCBBbHBoYWJldGljYWxseSBBc2NlbmRpbmcvRGVzY2VuZGluZ1wiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIFwiU29ydCBzcXVhcmUgaXRlbXMgYWxwaGFiZXRpY2FsbHkgaW4gQXNjZW5kaW5nIChcdTI3MDUpIG9yIERlc2NlbmRpbmcgKFx1Mjc0Qykgb3JkZXIuXCJcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgdG9nZ2xlLnNldFZhbHVlKHNldHRpbmdzLmFscGhhU29ydEFzYykub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MuYWxwaGFTb3J0QXNjID0gdmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5nZXRBY3RpdmVUWVBFVmlldyhNQVRSSVhfVklFVykuZHJhdygpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoTUxWaWV3RGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiU29ydCBieSBub3RlIG5hbWUsIGJ1dCBzaG93IGFsaWFzXCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgXCJXaGVuIHRoaXMgaXMgdHVybmVkIG9mZiwgbm90ZXMgd2lsbCBmaXJzdCBiZSBzb3J0ZWQgYnkgdGhlaXIgYWxpYXMsIGFuZCB0aGVuIGJ5IHRoZWlyIG5hbWUgaWYgbm8gYWxpYXMgaXMgZm91bmQuIFR1cm4gdGhpcyBvbiB0byBzb3J0IGJ5IG5vdGUgbmFtZSBhbHdheXMsIGJ1dCBzdGlsbCBzaG93IHRoZSBhbGlhcyBpbiB0aGUgcmVzdWx0cy5cIlxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3Muc29ydEJ5TmFtZVNob3dBbGlhcykub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3Muc29ydEJ5TmFtZVNob3dBbGlhcyA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uZ2V0QWN0aXZlVFlQRVZpZXcoTUFUUklYX1ZJRVcpLmRyYXcoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKE1MVmlld0RldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlNob3cgSW1wbGllZCBSZWxhdGlvbnNcIilcclxuICAgIC5zZXREZXNjKFwiV2hldGhlciBvciBub3QgdG8gc2hvdyBpbXBsaWVkIHJlbGF0aW9ucyBhdCBhbGwuXCIpXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAgIHRvZ2dsZS5zZXRWYWx1ZShzZXR0aW5ncy5zaG93SW1wbGllZFJlbGF0aW9ucykub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3Muc2hvd0ltcGxpZWRSZWxhdGlvbnMgPSB2YWx1ZTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLmdldEFjdGl2ZVRZUEVWaWV3KE1BVFJJWF9WSUVXKS5kcmF3KCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAvLyBUT0RPIEkgZG9uJ3QgdGhpbmsgdGhpcyBzZXR0aW5nIHdvcmtzIGFueW1vcmUuIEkgcmVtb3ZlZCBpdCdzIGZ1bmN0aW9uYWxpdHkgd2hlbiBhZGRpbmcgbXVsdGlwbGUgaGllcmFyY2hpZXNcclxuICAvLyBuZXcgU2V0dGluZyhNTFZpZXdEZXRhaWxzKVxyXG4gIC8vICAgLnNldE5hbWUoXCJGaWx0ZXIgSW1wbGllZCBTaWJsaW5nc1wiKVxyXG4gIC8vICAgLnNldERlc2MoXHJcbiAgLy8gICAgIGZyYWdXaXRoSFRNTChcclxuICAvLyAgICAgICBgSW1wbGllZCBzaWJsaW5ncyBhcmU6XHJcbiAgLy8gICAgICAgICA8b2w+XHJcbiAgLy8gICAgICAgICAgIDxsaT5ub3RlcyB3aXRoIHRoZSBzYW1lIHBhcmVudCwgb3I8L2xpPlxyXG4gIC8vICAgICAgICAgICA8bGk+bm90ZXMgdGhhdCBhcmUgcmVhbCBzaWJsaW5ncy48L2xpPlxyXG4gIC8vICAgICAgICAgPC9vbD5cclxuICAvLyAgICAgICAgIFRoaXMgc2V0dGluZyBvbmx5IGFwcGxpZXMgdG8gdHlwZSAxIGltcGxpZWQgc2libGluZ3MuIElmIGVuYWJsZWQsIEJyZWFkY3J1bWJzIHdpbGwgZmlsdGVyIHR5cGUgMSBpbXBsaWVkIHNpYmxpbmdzIHNvIHRoYXQgdGhleSBub3Qgb25seSBzaGFyZSB0aGUgc2FtZSBwYXJlbnQsIGJ1dCB0aGUgcGFyZW50IHJlbGF0aW9uIGhhcyB0aGUgZXhhY3Qgc2FtZSB0eXBlLiBGb3IgZXhhbXBsZSwgdGhlIHR3byByZWFsIHJlbGF0aW9ucyA8Y29kZT5CIC1wYXJlbnQtPiBBPC9jb2RlPiwgYW5kIDxjb2RlPkMgLXBhcmVudC0+IEE8L2NvZGU+IGNyZWF0ZSBhbiBpbXBsaWVkIHNpYmxpbmcgYmV0d2VlbiBCIGFuZCBDICh0aGV5IGhhdmUgdGhlIHNhbWUgcGFyZW50LCBBKS4gVGhlIHR3byByZWFsIHJlbGF0aW9ucyA8Y29kZT5CIC1wYXJlbnQtPiBBPC9jb2RlPiwgYW5kIDxjb2RlPkMgLXVwLT4gQTwvY29kZT4gY3JlYXRlIGFuIGltcGxpZWQgc2libGluZyBiZXR3ZWVuIEIgYW5kIEMgKHRoZXkgYWxzbyBoYXZlIHRoZSBzYW1lIHBhcmVudCwgQSkuIEJ1dCBpZiB0aGlzIHNldHRpbmcgaXMgdHVybmVkIG9uLCB0aGUgc2Vjb25kIGltcGxpZWQgc2libGluZyB3b3VsZCBub3Qgc2hvdywgYmVjYXVzZSB0aGUgcGFyZW50IHR5cGVzIGFyZSBkaWZmZXJuZXQgKHBhcmVudCB2ZXJzdXMgdXApLmBcclxuICAvLyAgICAgKVxyXG4gIC8vICAgKVxyXG4gIC8vICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gIC8vICAgICB0b2dnbGVcclxuICAvLyAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3MuZmlsdGVySW1wbGllZFNpYmxpbmdzT2ZEaWZmZXJlbnRUeXBlcylcclxuICAvLyAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgLy8gICAgICAgICBzZXR0aW5ncy5maWx0ZXJJbXBsaWVkU2libGluZ3NPZkRpZmZlcmVudFR5cGVzID0gdmFsdWU7XHJcbiAgLy8gICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgLy8gICAgICAgICBhd2FpdCBwbHVnaW4uZ2V0QWN0aXZlVFlQRVZpZXcoTUFUUklYX1ZJRVcpLmRyYXcoKTtcclxuICAvLyAgICAgICB9KVxyXG4gIC8vICAgKTtcclxuXHJcbiAgbmV3IFNldHRpbmcoTUxWaWV3RGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiT3BlbiBWaWV3IGluIFJpZ2h0IG9yIExlZnQgc2lkZVwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIFwiV2hlbiBsb2FkaW5nIHRoZSBtYXRyaXggdmlldywgc2hvdWxkIGl0IG9wZW4gb24gdGhlIGxlZnQgb3IgcmlnaHQgc2lkZSBsZWFmPyBcdTI3MDUgPSBSaWdodCwgXHUyNzRDID0gTGVmdC5cIlxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3MucmxMZWFmKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy5ybExlYWYgPSB2YWx1ZTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgYXBwLndvcmtzcGFjZS5kZXRhY2hMZWF2ZXNPZlR5cGUoTUFUUklYX1ZJRVcpO1xyXG4gICAgICAgIGF3YWl0IG9wZW5WaWV3KFxyXG4gICAgICAgICAgYXBwLFxyXG4gICAgICAgICAgTUFUUklYX1ZJRVcsXHJcbiAgICAgICAgICBNYXRyaXhWaWV3LFxyXG4gICAgICAgICAgdmFsdWUgPyBcInJpZ2h0XCIgOiBcImxlZnRcIlxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG59XHJcbiIsICJpbXBvcnQgeyBOb3RpY2UsIFNldHRpbmcgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHsgcmVmcmVzaEluZGV4IH0gZnJvbSBcIi4uL3JlZnJlc2hJbmRleFwiO1xyXG5pbXBvcnQgeyBzdHJUb1JlZ2V4IH0gZnJvbSBcIi4uL1V0aWxzL2dlbmVyYWxVdGlsc1wiO1xyXG5pbXBvcnQgeyBnZXRGaWVsZHMgfSBmcm9tIFwiLi4vVXRpbHMvSGllclV0aWxzXCI7XHJcbmltcG9ydCB7IGZyYWdXaXRoSFRNTCwgc3ViRGV0YWlscyB9IGZyb20gXCIuL0JyZWFkY3J1bWJzU2V0dGluZ1RhYlwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZE5vU3lzdGVtU2V0dGluZ3MoXHJcbiAgcGx1Z2luOiBCQ1BsdWdpbixcclxuICBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHM6IEhUTUxEZXRhaWxzRWxlbWVudFxyXG4pIHtcclxuICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW47XHJcbiAgY29uc3QgeyB1c2VySGllcnMgfSA9IHNldHRpbmdzO1xyXG4gIGNvbnN0IGZpZWxkcyA9IGdldEZpZWxkcyh1c2VySGllcnMpO1xyXG5cclxuICBjb25zdCBub1N5c3RlbURldGFpbHMgPSBzdWJEZXRhaWxzKFxyXG4gICAgXCJOYW1pbmcgU3lzdGVtXCIsXHJcbiAgICBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHNcclxuICApO1xyXG5cclxuICBuZXcgU2V0dGluZyhub1N5c3RlbURldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIk5hbWluZyBTeXN0ZW0gUmVnZXhcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgXCJJZiB5b3UgbmFtZSB5b3VyIG5vdGVzIHVzaW5nIHRoZSBKb2hubnkgRGVjaW1hbCBTeXN0ZW0gb3IgYSByZWxhdGVkIHN5c3RlbSwgZW50ZXIgYSByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hpbmcgdGhlIGxvbmdlc3QgcG9zc2libGUgbmFtaW5nIHN5c3RlbSB5b3UgdXNlLiBUaGUgcmVnZXggc2hvdWxkIG9ubHkgbWF0Y2ggdGhlIG5hbWluZyBzeXN0ZW0gcGFydCBvZiB0aGUgbmFtZSwgbm90IHRoZSBhY3R1YWwgbm90ZSB0aXRsZS48L2JyPiBGb3IgZXhhbXBsZSwgaWYgeW91IHVzZSB0aGUgSm9obm55IERlY2ltYWwgU3lzdGVtLCB5b3UgbWlnaHQgdXNlIDxjb2RlPi9eXFxcXGRcXFxcLlxcXFxkXFxcXC5cXFxcdy9nPC9jb2RlPiB0byBtYXRjaCB0aGUgbm90ZSBuYW1lZCA8Y29kZT4xLjIuYSBDYXJzPC9jb2RlPi48L2JyPklmIHlvdSBkb24ndCB3YW50IHRvIGNob29zZSBhIGRlZmF1bHQsIHNlbGVjdCB0aGUgYmxhbmsgb3B0aW9uIGF0IHRoZSBib3R0b20gb2YgdGhlIGxpc3QuXCJcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZFRleHQoKHRleHQpID0+IHtcclxuICAgICAgdGV4dC5zZXRWYWx1ZShzZXR0aW5ncy5uYW1pbmdTeXN0ZW1SZWdleCk7XHJcbiAgICAgIHRleHQuaW5wdXRFbC5vbmJsdXIgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0ZXh0LmdldFZhbHVlKCk7XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSBcIlwiIHx8IHN0clRvUmVnZXgodmFsdWUpKSB7XHJcbiAgICAgICAgICBzZXR0aW5ncy5uYW1pbmdTeXN0ZW1SZWdleCA9IHZhbHVlO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgYXdhaXQgcmVmcmVzaEluZGV4KHBsdWdpbik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG5ldyBOb3RpY2UoXCJJbnZhbGlkIFJlZ2V4XCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIG5ldyBTZXR0aW5nKG5vU3lzdGVtRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiTmFtaW5nIFN5c3RlbSBEZWxpbWl0ZXJcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgXCJXaGF0IGNoYXJhY3RlciBkbyB5b3UgdXNlIHRvIHNwbGl0IHVwIHlvdXIgbmFtaW5nIGNvbnZlbnRpb24/IEZvciBleGFtcGxlLCBpZiB5b3UgdXNlIDxjb2RlPjEuMi5hLmI8L2NvZGU+LCB0aGVuIHlvdXIgZGVsaW1pdGVyIGlzIGEgcGVyaW9kICg8Y29kZT4uPC9jb2RlPikuXCJcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZFRleHQoKHRleHQpID0+IHtcclxuICAgICAgdGV4dC5zZXRWYWx1ZShzZXR0aW5ncy5uYW1pbmdTeXN0ZW1TcGxpdCk7XHJcbiAgICAgIHRleHQuaW5wdXRFbC5vbmJsdXIgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0ZXh0LmdldFZhbHVlKCk7XHJcbiAgICAgICAgc2V0dGluZ3MubmFtaW5nU3lzdGVtU3BsaXQgPSB2YWx1ZTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgYXdhaXQgcmVmcmVzaEluZGV4KHBsdWdpbik7XHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgbmV3IFNldHRpbmcobm9TeXN0ZW1EZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJOYW1pbmcgU3lzdGVtIEZpZWxkXCIpXHJcbiAgICAuc2V0RGVzYyhcIldoaWNoIGZpZWxkIHNob3VsZCBCcmVhZGNydW1icyB1c2UgZm9yIE5hbWluZyBTeXN0ZW0gbm90ZXM/XCIpXHJcbiAgICAuYWRkRHJvcGRvd24oKGRkKSA9PiB7XHJcbiAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGRkLmFkZE9wdGlvbihmaWVsZCwgZmllbGQpO1xyXG4gICAgICB9KTtcclxuICAgICAgZGQuc2V0VmFsdWUoc2V0dGluZ3MubmFtaW5nU3lzdGVtRmllbGQpO1xyXG4gICAgICBkZC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy5uYW1pbmdTeXN0ZW1GaWVsZCA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICBhd2FpdCByZWZyZXNoSW5kZXgocGx1Z2luKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICBuZXcgU2V0dGluZyhub1N5c3RlbURldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIk5hbWluZyBTeXN0ZW0gRW5kcyB3aXRoIERlbGltaXRlclwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBcIkRvZXMgeW91ciBuYW1pbmcgY29udmVudGlvbiBlbmQgd2l0aCB0aGUgZGVsaW1pdGVyPyBGb3IgZXhhbXBsZSwgPGNvZGU+MS4yLiBOb3RlPC9jb2RlPiBkb2VzIGVuZCB3aXRoIHRoZSBkZWxpbWl0ZXIsIGJ1dCA8Y29kZT4xLjIgTm90ZTwvY29kZT4gZG9lcyBub3QuPC9icj5Gb3IgbWF0Y2hpbmcgcHVycG9zZXMsIGl0IGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBuYW1lIHlvdXIgbm90ZXMgd2l0aCB0aGUgZGVsaW1pdGVyIG9uIHRoZSBlbmQuIE9ubHkgdHVybiB0aGlzIHNldHRpbmcgb24gaWYgeW91IGRvIG5hbWUgeW91ciBub3RlcyB0aGlzIHdheSwgYnV0IGtub3cgdGhhdCB0aGUgcmVzdWx0cyBtYXkgbm90IGJlIGFzIGFjY3VyYXRlIGlmIHlvdSBkb24ndC5cIlxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2cpID0+XHJcbiAgICAgIHRvZ1xyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5uYW1pbmdTeXN0ZW1FbmRzV2l0aERlbGltaXRlcilcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICBzZXR0aW5ncy5uYW1pbmdTeXN0ZW1FbmRzV2l0aERlbGltaXRlciA9IHZhbHVlO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgYXdhaXQgcmVmcmVzaEluZGV4KHBsdWdpbik7XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcbn1cclxuIiwgImltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50LCBTZXR0aW5nIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IHJlZnJlc2hJbmRleCB9IGZyb20gXCIuLi9yZWZyZXNoSW5kZXhcIjtcclxuaW1wb3J0IHsgZ2V0RmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBmcmFnV2l0aEhUTUwsIHN1YkRldGFpbHMgfSBmcm9tIFwiLi9CcmVhZGNydW1ic1NldHRpbmdUYWJcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRSZWdleE5vdGVTZXR0aW5ncyhcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIGFsdGVybmF0aXZlSGllcmFyY2h5RGV0YWlsczogSFRNTERldGFpbHNFbGVtZW50XHJcbikge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCByZWdleE5vdGVEZXRhaWxzID0gc3ViRGV0YWlscyhcclxuICAgIFwiUmVnZXggTm90ZXNcIixcclxuICAgIGFsdGVybmF0aXZlSGllcmFyY2h5RGV0YWlsc1xyXG4gICk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKHJlZ2V4Tm90ZURldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkRlZmF1bHQgUmVnZXggTm90ZSBGaWVsZFwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBcIkJ5IGRlZmF1bHQsIHJlZ2V4IG5vdGVzIHVzZSB0aGUgZmlyc3QgZmllbGQgaW4geW91ciBoaWVyYXJjaGllcyAodXN1YWxseSBhbiA8Y29kZT5cdTIxOTE8L2NvZGU+IGZpZWxkKS4gQ2hvb3NlIGEgZGlmZmVyZW50IG9uZSB0byB1c2UgYnkgZGVmYXVsdCwgd2l0aG91dCBoYXZpbmcgdG8gc3BlY2lmeSA8Y29kZT5CQy1yZWdleC1ub3RlLWZpZWxkOiB7ZmllbGR9PC9jb2RlPi48L2JyPklmIHlvdSBkb24ndCB3YW50IHRvIGNob29zZSBhIGRlZmF1bHQsIHNlbGVjdCB0aGUgYmxhbmsgb3B0aW9uIGF0IHRoZSBib3R0b20gb2YgdGhlIGxpc3QuXCJcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZERyb3Bkb3duKChkZDogRHJvcGRvd25Db21wb25lbnQpID0+IHtcclxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHt9O1xyXG4gICAgICBnZXRGaWVsZHMoc2V0dGluZ3MudXNlckhpZXJzKS5mb3JFYWNoKFxyXG4gICAgICAgIChmaWVsZCkgPT4gKG9wdGlvbnNbZmllbGRdID0gZmllbGQpXHJcbiAgICAgICk7XHJcbiAgICAgIGRkLmFkZE9wdGlvbnMoT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7IFwiXCI6IFwiXCIgfSkpXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLnJlZ2V4Tm90ZUZpZWxkKVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAoZmllbGQpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLnJlZ2V4Tm90ZUZpZWxkID0gZmllbGQ7XHJcbiAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICBhd2FpdCByZWZyZXNoSW5kZXgocGx1Z2luKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG59XHJcbiIsICJpbXBvcnQgeyBkZXRhaWxzIH0gZnJvbSBcIi4vQnJlYWRjcnVtYnNTZXR0aW5nVGFiXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IE1hcmtkb3duUmVuZGVyZXIsIFNldHRpbmcgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHsgcmVmcmVzaEluZGV4IH0gZnJvbSBcIi4uL3JlZnJlc2hJbmRleFwiO1xyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRSZWxhdGlvblNldHRpbmdzKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgY29udGFpbmVyRWw6IEhUTUxFbGVtZW50XHJcbikge1xyXG4gIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCByZWxhdGlvbkRldGFpbHMgPSBkZXRhaWxzKFwiUmVsYXRpb25zaGlwc1wiLCBjb250YWluZXJFbCk7XHJcblxyXG4gIGZ1bmN0aW9uIG1lcm1haWREaWFncmFtKGRpYWdyYW1TdHI6IHN0cmluZykge1xyXG4gICAgTWFya2Rvd25SZW5kZXJlci5yZW5kZXJNYXJrZG93bihcclxuICAgICAgZGlhZ3JhbVN0cixcclxuICAgICAgcmVsYXRpb25EZXRhaWxzLmNyZWF0ZURpdigpLFxyXG4gICAgICBcIlwiLFxyXG4gICAgICBudWxsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlbGF0aW9uRGV0YWlscy5jcmVhdGVFbChcInBcIiwge1xyXG4gICAgdGV4dDogXCJIZXJlIHlvdSBjYW4gdG9nZ2xlIG9uL29mZiBkaWZmZXJlbnQgdHlwZXMgb2YgaW1wbGllZCByZWxhdGlvbnNoaXBzLiBBbGwgb2YgeW91ciBleHBsaWNpdCAocmVhbCkgcmVsYXRpb25zaGlwcyB3aWxsIHN0aWxsIHNob3csIGJ1dCB5b3UgY2FuIGNob29zZSB3aGljaCBpbXBsaWVkIG9uZXMgZ2V0IGZpbGxlZCBpbi5cXG5BbGwgaW1wbGllZCByZWxhdGlvbnNoaXBzIGFyZSBnaXZlbiBhIENTUyBjbGFzcyBvZiB0aGUgdHlwZSBvZiBpbXBsaWVkIHJlbGF0aW9uLCBzbyB5b3UgY2FuIHN0eWxlIHRoZW0gZGlmZmVyZW50bHkuIEZvciBleGFtcGxlIGAuQkMtQXVudGAuXCIsXHJcbiAgfSk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKHJlbGF0aW9uRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiU2FtZSBQYXJlbnQgaXMgU2libGluZ3NcIilcclxuICAgIC5zZXREZXNjKFwiSWYgb25lIG5vdGUgc2hhcmVzIGEgcGFyZW50IHdpdGggYW5vdGhlciwgdHJlYXQgdGhlbSBhcyBzaWJsaW5nc1wiKVxyXG4gICAgLmFkZFRvZ2dsZSgodGcpID0+XHJcbiAgICAgIHRnXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLmltcGxpZWRSZWxhdGlvbnMuc2FtZVBhcmVudElzU2libGluZylcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbCkgPT4ge1xyXG4gICAgICAgICAgc2V0dGluZ3MuaW1wbGllZFJlbGF0aW9ucy5zYW1lUGFyZW50SXNTaWJsaW5nID0gdmFsO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgYXdhaXQgcmVmcmVzaEluZGV4KHBsdWdpbik7XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gIG1lcm1haWREaWFncmFtKFwiYGBgbWVybWFpZFxcbmZsb3djaGFydCBMUlxcbk1lIC0tPnx1cHwgRGFkXFxuU2lzdGVyIC0tPnx1cHwgRGFkXFxuTWUgPC0uLT58c2FtZXwgU2lzdGVyXFxuYGBgXCIpXHJcblxyXG4gIG5ldyBTZXR0aW5nKHJlbGF0aW9uRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiU2libGluZ3MnIFNpYmxpbmdzXCIpXHJcbiAgICAuc2V0RGVzYyhcIlRyZWF0IHlvdXIgc2libGluZ3MnIHNpYmxpbmdzIGFzIHlvdXIgc2libGluZ3NcIilcclxuICAgIC5hZGRUb2dnbGUoKHRnKSA9PlxyXG4gICAgICB0Z1xyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5pbXBsaWVkUmVsYXRpb25zLnNpYmxpbmdzU2libGluZ0lzU2libGluZylcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbCkgPT4ge1xyXG4gICAgICAgICAgc2V0dGluZ3MuaW1wbGllZFJlbGF0aW9ucy5zaWJsaW5nc1NpYmxpbmdJc1NpYmxpbmcgPSB2YWw7XHJcbiAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICBhd2FpdCByZWZyZXNoSW5kZXgocGx1Z2luKTtcclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgbWVybWFpZERpYWdyYW0oXCJgYGBtZXJtYWlkXFxuZmxvd2NoYXJ0IExSXFxuTWUgLS0+fHNhbWV8IFNpc3Rlclxcbk1lIC0tPnxzYW1lfCBCcm90aGVyXFxuU2lzdGVyIDwtLi0+fHNhbWV8IEJyb3RoZXJcXG5gYGBcIilcclxuXHJcbiAgbmV3IFNldHRpbmcocmVsYXRpb25EZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJTaWJsaW5ncycgUGFyZW50IGlzIFBhcmVudFwiKVxyXG4gICAgLnNldERlc2MoXCJZb3VyIHNpYmxpbmdzJyBwYXJlbnRzIGFyZSB5b3VyIHBhcmVudHNcIilcclxuICAgIC5hZGRUb2dnbGUoKHRnKSA9PlxyXG4gICAgICB0Z1xyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5pbXBsaWVkUmVsYXRpb25zLnNpYmxpbmdzUGFyZW50SXNQYXJlbnQpXHJcbiAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWwpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLmltcGxpZWRSZWxhdGlvbnMuc2libGluZ3NQYXJlbnRJc1BhcmVudCA9IHZhbDtcclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgIGF3YWl0IHJlZnJlc2hJbmRleChwbHVnaW4pO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICBtZXJtYWlkRGlhZ3JhbShcImBgYG1lcm1haWRcXG5mbG93Y2hhcnQgTFJcXG5TaXN0ZXIgLS0+fHVwfCBEYWRcXG5TaXN0ZXIgPC0tPnxzYW1lfCBNZVxcbk1lIC0uLT58dXB8IERhZFxcbmBgYFwiKVxyXG5cclxuICBuZXcgU2V0dGluZyhyZWxhdGlvbkRldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkF1bnQvVW5jbGVcIilcclxuICAgIC5zZXREZXNjKFwiVHJlYXQgeW91ciBwYXJlbnQncyBzaWJsaW5ncyBhcyB5b3VyIHBhcmVudHMgKGF1bnRzL3VuY2xlcylcIilcclxuICAgIC5hZGRUb2dnbGUoKHRnKSA9PlxyXG4gICAgICB0Z1xyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5pbXBsaWVkUmVsYXRpb25zLnBhcmVudHNTaWJsaW5nc0lzUGFyZW50cylcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbCkgPT4ge1xyXG4gICAgICAgICAgc2V0dGluZ3MuaW1wbGllZFJlbGF0aW9ucy5wYXJlbnRzU2libGluZ3NJc1BhcmVudHMgPSB2YWw7XHJcbiAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICBhd2FpdCByZWZyZXNoSW5kZXgocGx1Z2luKTtcclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgbWVybWFpZERpYWdyYW0oXCJgYGBtZXJtYWlkXFxuZmxvd2NoYXJ0IExSXFxuTWUgLS0+fHVwfCBEYWRcXG5EYWQgLS0+fHNhbWV8IFVuY2xlXFxuTWUgLS4tPnx1cHwgVW5jbGVcXG5gYGBcIilcclxuXHJcbiAgbmV3IFNldHRpbmcocmVsYXRpb25EZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJDb3VzaW5zXCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgXCJUcmVhdCB0aGUgY291c2lucyBvZiBhIG5vdGUgYXMgc2libGluZ3MgKHBhcmVudHMnIHNpYmxpbmdzJyBjaGlsZHJlbiBhcmUgY291c2lucylcIlxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodGcpID0+XHJcbiAgICAgIHRnXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLmltcGxpZWRSZWxhdGlvbnMuY291c2luc0lzU2libGluZylcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbCkgPT4ge1xyXG4gICAgICAgICAgc2V0dGluZ3MuaW1wbGllZFJlbGF0aW9ucy5jb3VzaW5zSXNTaWJsaW5nID0gdmFsO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgYXdhaXQgcmVmcmVzaEluZGV4KHBsdWdpbik7XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gIG1lcm1haWREaWFncmFtKFwiYGBgbWVybWFpZFxcbmZsb3djaGFydCBMUlxcbk1lIC0tPnx1cHwgRGFkXFxuRGFkIC0tPnxzYW1lfCBVbmNsZVxcblVuY2xlIC0tPnxkb3dufCBDb3VzaW5cXG5NZSA8LS4tPnxzYW1lfCBDb3VzaW5cXG5gYGBcIilcclxuXHJcbiAgbmV3IFNldHRpbmcocmVsYXRpb25EZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJNYWtlIEN1cnJlbnQgTm90ZSBhbiBJbXBsaWVkIFNpYmxpbmdcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBcIlRlY2hpbmNhbGx5LCB0aGUgY3VycmVudCBub3RlIGlzIGFsd2F5cyBpdCdzIG93biBpbXBsaWVkIHNpYmxpbmcuIEJ5IGRlZmF1bHQsIGl0IGlzIG5vdCBzaG93IGFzIHN1Y2guIFRvZ2dsZSB0aGlzIG9uIHRvIG1ha2UgaXQgc2hvdy5cIlxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICB0b2dnbGVcclxuICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3MudHJlYXRDdXJyTm9kZUFzSW1wbGllZFNpYmxpbmcpXHJcbiAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgc2V0dGluZ3MudHJlYXRDdXJyTm9kZUFzSW1wbGllZFNpYmxpbmcgPSB2YWx1ZTtcclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgIGF3YWl0IHJlZnJlc2hJbmRleChwbHVnaW4pO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG59XHJcbiIsICJpbXBvcnQgeyBEcm9wZG93bkNvbXBvbmVudCwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG5pbXBvcnQgeyByZWZyZXNoSW5kZXggfSBmcm9tIFwiLi4vcmVmcmVzaEluZGV4XCI7XHJcbmltcG9ydCB7IGdldEZpZWxkcyB9IGZyb20gXCIuLi9VdGlscy9IaWVyVXRpbHNcIjtcclxuaW1wb3J0IHsgZnJhZ1dpdGhIVE1MLCBzdWJEZXRhaWxzIH0gZnJvbSBcIi4vQnJlYWRjcnVtYnNTZXR0aW5nVGFiXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkVGFnTm90ZVNldHRpbmdzKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgYWx0ZXJuYXRpdmVIaWVyYXJjaHlEZXRhaWxzOiBIVE1MRGV0YWlsc0VsZW1lbnRcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHRhZ05vdGVEZXRhaWxzID0gc3ViRGV0YWlscyhcIlRhZyBOb3Rlc1wiLCBhbHRlcm5hdGl2ZUhpZXJhcmNoeURldGFpbHMpO1xyXG5cclxuICBuZXcgU2V0dGluZyh0YWdOb3RlRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiRGVmYXVsdCBUYWcgTm90ZSBGaWVsZFwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBcIkJ5IGRlZmF1bHQsIHRhZyBub3RlcyB1c2UgdGhlIGZpcnN0IGZpZWxkIGluIHlvdXIgaGllcmFyY2hpZXMgKHVzdWFsbHkgYW4gPGNvZGU+XHUyMTkxPC9jb2RlPiBmaWVsZCkuIENob29zZSBhIGRpZmZlcmVudCBvbmUgdG8gdXNlIGJ5IGRlZmF1bHQsIHdpdGhvdXQgaGF2aW5nIHRvIHNwZWNpZnkgPGNvZGU+QkMtdGFnLW5vdGUtZmllbGQ6IHtmaWVsZH08L2NvZGU+LjwvYnI+SWYgeW91IGRvbid0IHdhbnQgdG8gY2hvb3NlIGEgZGVmYXVsdCwgc2VsZWN0IHRoZSBibGFuayBvcHRpb24gYXQgdGhlIGJvdHRvbSBvZiB0aGUgbGlzdC5cIlxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuYWRkRHJvcGRvd24oKGRkOiBEcm9wZG93bkNvbXBvbmVudCkgPT4ge1xyXG5cclxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHt9O1xyXG4gICAgICBnZXRGaWVsZHMoc2V0dGluZ3MudXNlckhpZXJzKS5mb3JFYWNoKFxyXG4gICAgICAgIChmaWVsZCkgPT4gKG9wdGlvbnNbZmllbGRdID0gZmllbGQpXHJcbiAgICAgICk7XHJcbiAgICAgIGRkLmFkZE9wdGlvbnMoT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7IFwiXCI6IFwiXCIgfSkpXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLnRhZ05vdGVGaWVsZClcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgICBzZXR0aW5ncy50YWdOb3RlRmllbGQgPSBmaWVsZDtcclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgIGF3YWl0IHJlZnJlc2hJbmRleChwbHVnaW4pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB7IE5vdGljZSwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQge1xyXG4gIEFSUk9XX0RJUkVDVElPTlMsXHJcbiAgREVGQVVMVF9TRVRUSU5HUyxcclxuICBESVJFQ1RJT05TLFxyXG4gIElMTEVHQUxfRklMRU5BTUVfQ0hBUlMsXHJcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG5pbXBvcnQgeyBmcmFnV2l0aEhUTUwsIHN1YkRldGFpbHMgfSBmcm9tIFwiLi9CcmVhZGNydW1ic1NldHRpbmdUYWJcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRUaHJlYWRpbmdTZXR0aW5ncyhcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIGNtZHNEZXRhaWxzOiBIVE1MRGV0YWlsc0VsZW1lbnRcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHRocmVhZGluZ0RldGFpbHMgPSBzdWJEZXRhaWxzKFwiVGhyZWFkaW5nXCIsIGNtZHNEZXRhaWxzKTtcclxuXHJcbiAgdGhyZWFkaW5nRGV0YWlscy5jcmVhdGVEaXYoe1xyXG4gICAgdGV4dDogXCJTZXR0aW5ncyBmb3IgdGhlIGNvbW1hbmRzIGBDcmVhdGUgbmV3IDxmaWVsZD4gZnJvbSBjdXJyZW50IG5vdGVgXCIsXHJcbiAgfSk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKHRocmVhZGluZ0RldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIk9wZW4gbmV3IHRocmVhZHMgaW4gbmV3IHBhbmUgb3IgY3VycmVudCBwYW5lXCIpXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2cpID0+IHtcclxuICAgICAgdG9nLnNldFZhbHVlKHNldHRpbmdzLnRocmVhZEludG9OZXdQYW5lKTtcclxuICAgICAgdG9nLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHNldHRpbmdzLnRocmVhZEludG9OZXdQYW5lID0gdmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIG5ldyBTZXR0aW5nKHRocmVhZGluZ0RldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlRocmVhZCB1bmRlciBDdXJzb3JcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgXCJJZiB0aGUgc2V0dGluZyA8Y29kZT5Xcml0ZSBCcmVhZGNydW1icyBJbmxpbmU8L2NvZGU+IGlzIGVuYWJsZWQsIHdoZXJlIHNob3VsZCB0aGUgbmV3IEJyZWFkY3J1bWIgYmUgYWRkZWQgdG8gdGhlIGN1cnJlbnQgbm90ZT8gXHUyNzA1ID0gVW5kZXIgdGhlIGN1cnNvciwgXHUyNzRDID0gQXQgdGhlIHRvcCBvZiB0aGUgbm90ZSAodW5kZXIgdGhlIHlhbWwsIGlmIGFwcGxpY2FibGUpXCJcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nKSA9PiB7XHJcbiAgICAgIHRvZy5zZXRWYWx1ZShzZXR0aW5ncy50aHJlYWRVbmRlckN1cnNvcik7XHJcbiAgICAgIHRvZy5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy50aHJlYWRVbmRlckN1cnNvciA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgbmV3IFNldHRpbmcodGhyZWFkaW5nRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiTmV3IE5vdGUgTmFtZSBUZW1wbGF0ZVwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBgV2hlbiB0aHJlYWRpbmcgaW50byBhIG5ldyBub3RlLCBjaG9vc2UgdGhlIHRlbXBsYXRlIGZvciB0aGUgbmV3IG5vdGUgbmFtZS48L2JyPlxyXG4gICAgICAgIE9wdGlvbnMgaW5jbHVkZTo8L2JyPlxyXG4gICAgICAgIDx1bD5cclxuICAgICAgICAgIDxsaT48Y29kZT57e2ZpZWxkfX08L2NvZGU+OiB0aGUgZmllbGQgYmVpbmcgdGhyZWFkIGludG88L2xpPlxyXG4gICAgICAgICAgPGxpPjxjb2RlPnt7ZGlyfX08L2NvZGU+OiB0aGUgZGlyZWN0aW9uIGJlaW5nIHRocmVhZCBpbnRvPC9saT5cclxuICAgICAgICAgIDxsaT48Y29kZT57e2N1cnJlbnR9fTwvY29kZT46IHRoZSBjdXJyZW50IG5vdGUgbmFtZTwvbGk+XHJcbiAgICAgICAgICA8bGk+PGNvZGU+e3tkYXRlfX08L2NvZGU+OiB0aGUgY3VycmVudCBkYXRlIChTZXQgdGhlIGZvcm1hdCBpbiB0aGUgc2V0dGluZyBiZWxvdyk8L2xpPlxyXG4gICAgICAgIDwvdWw+YFxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuYWRkVGV4dCgodGV4dCkgPT4ge1xyXG4gICAgICB0ZXh0LnNldFZhbHVlKHNldHRpbmdzLnRocmVhZGluZ1RlbXBsYXRlKTtcclxuICAgICAgdGV4dC5pbnB1dEVsLm9uYmx1ciA9IGFzeW5jICgpID0+IHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHRleHQuZ2V0VmFsdWUoKTtcclxuICAgICAgICBpZiAoSUxMRUdBTF9GSUxFTkFNRV9DSEFSUy5zb21lKChjaGFyKSA9PiB2YWx1ZS5pbmNsdWRlcyhjaGFyKSkpIHtcclxuICAgICAgICAgIG5ldyBOb3RpY2UoXHJcbiAgICAgICAgICAgIGBGaWxlIG5hbWUgY2Fubm90IGNvbnRhaW4gYW55IG9mIHRoZXNlIGNoYXJhY3RlcnM6ICR7SUxMRUdBTF9GSUxFTkFNRV9DSEFSUy5qb2luKFxyXG4gICAgICAgICAgICAgIFwiIFwiXHJcbiAgICAgICAgICAgICl9YFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRleHQuc2V0VmFsdWUoc2V0dGluZ3MudGhyZWFkaW5nVGVtcGxhdGUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzZXR0aW5ncy50aHJlYWRpbmdUZW1wbGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIG5ldyBTZXR0aW5nKHRocmVhZGluZ0RldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkRhdGUgRm9ybWF0XCIpXHJcbiAgICAuc2V0RGVzYyhcIlRoZSBkYXRlIGZvcm1hdCB1c2VkIGluIHRoZSBUaHJlYWRpbmcgVGVtcGxhdGUgKHNldHRpbmcgYWJvdmUpXCIpXHJcbiAgICAuYWRkTW9tZW50Rm9ybWF0KChmb3JtYXQpID0+IHtcclxuICAgICAgZm9ybWF0XHJcbiAgICAgICAgLnNldERlZmF1bHRGb3JtYXQoREVGQVVMVF9TRVRUSU5HUy5kYXRlRm9ybWF0KVxyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5kYXRlRm9ybWF0KVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLmRhdGVGb3JtYXQgPSB2YWx1ZTtcclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICBjb25zdCB0aHJlYWREaXJUZW1wbGF0ZXNTZXR0aW5nID0gbmV3IFNldHRpbmcodGhyZWFkaW5nRGV0YWlscylcclxuICAgIC5zZXRDbGFzcyhcInRocmVhZC1kaXItdGVtcGxhdGVzXCIpXHJcbiAgICAuc2V0TmFtZShcIlRlbXBsYXRlciBUZW1wbGF0ZSBwZXIgRGlyZWN0aW9uXCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgZnJhZ1dpdGhIVE1MKFxyXG4gICAgICAgIGBGb3IgZWFjaCBkaXJlY3Rpb24gdG8gYmUgdGhyZWFkIGludG8sIGNob29zZSBhIFRlbXBsYXRlciB0ZW1wbGF0ZSB0byBpbnNlcnQgaW50byB0aGUgbmV3IG5vdGUuPC9icj5cclxuICAgICAgICAgIEdpdmUgdGhlIGJhc2VuYW1lLCBvciB0aGUgZnVsbCBmaWxlIHBhdGggKGUuZy4gPGNvZGU+VGVtcGxhdGVzL1BhcmVudCBUZW1wbGF0ZTwvY29kZT4pLmBcclxuICAgICAgKVxyXG4gICAgKTtcclxuXHJcbiAgRElSRUNUSU9OUy5mb3JFYWNoKChkaXIpID0+XHJcbiAgICB0aHJlYWREaXJUZW1wbGF0ZXNTZXR0aW5nLmFkZFRleHQoKHRleHQpID0+IHtcclxuICAgICAgdGV4dFxyXG4gICAgICAgIC5zZXRQbGFjZWhvbGRlcihBUlJPV19ESVJFQ1RJT05TW2Rpcl0pXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLnRocmVhZGluZ0RpclRlbXBsYXRlc1tkaXJdKTtcclxuICAgICAgdGV4dC5pbnB1dEVsLm9uYmx1ciA9IGFzeW5jICgpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy50aHJlYWRpbmdEaXJUZW1wbGF0ZXNbZGlyXSA9IHRleHQuZ2V0VmFsdWUoKTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgIH07XHJcbiAgICB9KVxyXG4gICk7XHJcblxyXG59XHJcbiIsICJpbXBvcnQgdHlwZSB7IEp1Z2dsTGF5b3V0cyB9IGZyb20gXCJqdWdnbC1hcGlcIjtcclxuaW1wb3J0IHsgRHJvcGRvd25Db21wb25lbnQsIE5vdGljZSwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgeyBpc0luVmF1bHQgfSBmcm9tIFwib2JzaWRpYW4tY29tbXVuaXR5LWxpYi9kaXN0L3V0aWxzXCI7XHJcbmltcG9ydCB7IFRSQUlMX0xFTkdUSFMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCBDaGVja2JveGVzIGZyb20gXCIuLi9Db21wb25lbnRzL0NoZWNrYm94ZXMuc3ZlbHRlXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7IHNwbGl0QW5kVHJpbSB9IGZyb20gXCIuLi9VdGlscy9nZW5lcmFsVXRpbHNcIjtcclxuaW1wb3J0IHsgZ2V0RmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBkcmF3VHJhaWwgfSBmcm9tIFwiLi4vVmlld3MvVHJhaWxWaWV3XCI7XHJcbmltcG9ydCB7IGZyYWdXaXRoSFRNTCwgc3ViRGV0YWlscyB9IGZyb20gXCIuL0JyZWFkY3J1bWJzU2V0dGluZ1RhYlwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZFRyYWlsVmlld1NldHRpbmdzKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgdmlld0RldGFpbHM6IEhUTUxEZXRhaWxzRWxlbWVudFxyXG4pIHtcclxuICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW47XHJcbiAgY29uc3QgdHJhaWxEZXRhaWxzID0gc3ViRGV0YWlscyhcIlRyYWlsL0dyaWQvSnVnZ2xcIiwgdmlld0RldGFpbHMpO1xyXG5cclxuICBuZXcgU2V0dGluZyh0cmFpbERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlNob3cgQnJlYWRjcnVtYnMgaW4gRWRpdC9MaXZlLVByZXZpZXcgTW9kZVwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIFwiSXQgYWx3YXlzIHNob3dzIGluIHByZXZpZXcgbW9kZSwgYnV0IHNob3VsZCBpdCBhbHNvIHNob3cgaW4gdGhlIG90aGVyIHR3bz9cIlxyXG4gICAgKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3Muc2hvd0JDc0luRWRpdExQTW9kZSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3Muc2hvd0JDc0luRWRpdExQTW9kZSA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICBhd2FpdCBkcmF3VHJhaWwocGx1Z2luKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gIHRyYWlsRGV0YWlscy5jcmVhdGVFbCgnaHInKVxyXG4gIHRyYWlsRGV0YWlscy5jcmVhdGVEaXYoe1xyXG4gICAgY2xzOiBcInNldHRpbmctaXRlbS1uYW1lXCIsXHJcbiAgICB0ZXh0OiBcIkxpbWl0IFRyYWlsIFZpZXcgdG8gb25seSBzaG93IGNlcnRhaW4gZmllbGRzXCIsXHJcbiAgfSk7XHJcblxyXG4gIG5ldyBDaGVja2JveGVzKHtcclxuICAgIHRhcmdldDogdHJhaWxEZXRhaWxzLFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgcGx1Z2luLFxyXG4gICAgICBzZXR0aW5nTmFtZTogXCJsaW1pdFRyYWlsQ2hlY2tib3hlc1wiLFxyXG4gICAgICBvcHRpb25zOiBnZXRGaWVsZHMoc2V0dGluZ3MudXNlckhpZXJzLCBcInVwXCIpLFxyXG4gICAgfSxcclxuICB9KTtcclxuXHJcbiAgY29uc3Qgdmlld3NUb1Nob3cgPSBuZXcgU2V0dGluZyh0cmFpbERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlZpZXdzIHRvIHNob3dcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBcIkNob29zZSB3aGljaCBvZiB0aGUgdmlld3MgdG8gc2hvdyBhdCB0aGUgdG9wIG9mIHRoZSBub3RlLiBKdWdnbCBWaWV3IHJlcXVpcmVzIHRoZSBKdWdnbCBwbHVnaW4uXCJcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xyXG4gICAgICB0b2dnbGVcclxuICAgICAgICAuc2V0VG9vbHRpcChcIlRyYWlsIHZpZXdcIilcclxuICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3Muc2hvd1RyYWlsKVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLnNob3dUcmFpbCA9IHZhbHVlO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgYXdhaXQgZHJhd1RyYWlsKHBsdWdpbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XHJcbiAgICAgIHRvZ2dsZVxyXG4gICAgICAgIC5zZXRUb29sdGlwKFwiR3JpZCB2aWV3XCIpXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLnNob3dHcmlkKVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLnNob3dHcmlkID0gdmFsdWU7XHJcbiAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICBhd2FpdCBkcmF3VHJhaWwocGx1Z2luKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcclxuICAgICAgdG9nZ2xlXHJcbiAgICAgICAgLnNldFRvb2x0aXAoXCJOZXh0L1ByZXZpb3VzIHZpZXdcIilcclxuICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3Muc2hvd1ByZXZOZXh0KVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLnNob3dQcmV2TmV4dCA9IHZhbHVlO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgYXdhaXQgZHJhd1RyYWlsKHBsdWdpbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KVxyXG5cclxuICBpZiAoYXBwLnBsdWdpbnMucGx1Z2lucy5qdWdnbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICB2aWV3c1RvU2hvdy5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xyXG4gICAgICB0b2dnbGVcclxuICAgICAgICAuc2V0VG9vbHRpcChcIkp1Z2dsIHZpZXdcIilcclxuICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3Muc2hvd0p1Z2dsKVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLnNob3dKdWdnbCA9IHZhbHVlO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgYXdhaXQgZHJhd1RyYWlsKHBsdWdpbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmV3IFNldHRpbmcodHJhaWxEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoJ0dyaWQgdmlldyBkZXB0aCcpXHJcbiAgICAuc2V0RGVzYygnTGltaXQgdGhlIGluaXRpYWwgZGVwdGggb2YgdGhlIGdyaWQgdmlldycpXHJcbiAgICAuYWRkU2xpZGVyKChzbGlkZXIpID0+IHtcclxuICAgICAgc2xpZGVyXHJcbiAgICAgICAgLnNldExpbWl0cygwLCAyNSwgMSlcclxuICAgICAgICAuc2V0VmFsdWUoc2V0dGluZ3MuZ3JpZERlZmF1bHREZXB0aClcclxuICAgICAgICAuc2V0RHluYW1pY1Rvb2x0aXAoKTtcclxuXHJcbiAgICAgIHNsaWRlci5zbGlkZXJFbC5vbmJsdXIgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MuZ3JpZERlZmF1bHREZXB0aCA9IHNsaWRlci5nZXRWYWx1ZSgpO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICBhd2FpdCBkcmF3VHJhaWwocGx1Z2luKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcblxyXG4gIG5ldyBTZXR0aW5nKHRyYWlsRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiSW5kZXggTm90ZShzKVwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIGZyYWdXaXRoSFRNTChcclxuICAgICAgICBcIlRoZSBub3RlIHRoYXQgYWxsIG9mIHlvdXIgb3RoZXIgbm90ZXMgbGVhZCBiYWNrIHRvLiBUaGUgcGFyZW50IG9mIGFsbCB5b3VyIHBhcmVudCBub3Rlcy4gSnVzdCBlbnRlciB0aGUgYmFzZW5hbWUuPC9icj5Zb3UgY2FuIGFsc28gaGF2ZSBtdWx0aXBsZSBpbmRleCBub3RlcyAoY29tbWEtc2VwYXJhdGVkIGxpc3QpLjwvYnI+TGVhdmluZyB0aGlzIGZpZWxkIGVtcHR5IHdpbGwgbWFrZSB0aGUgdHJhaWwgc2hvdyBhbGwgcGF0aHMgZ29pbmcgYXMgZmFyIHVwIHRoZSBwYXJlbnQtdHJlZSBhcyBwb3NzaWJsZS5cIlxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuYWRkVGV4dCgodGV4dCkgPT4ge1xyXG4gICAgICB0ZXh0XHJcbiAgICAgICAgLnNldFBsYWNlaG9sZGVyKFwiSW5kZXggTm90ZVwiKVxyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5pbmRleE5vdGVzLmpvaW4oXCIsIFwiKSk7XHJcblxyXG4gICAgICB0ZXh0LmlucHV0RWwub25ibHVyID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNwbGl0cyA9IHNwbGl0QW5kVHJpbSh0ZXh0LmdldFZhbHVlKCkpO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHNwbGl0c1swXSA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgICBzcGxpdHMuZXZlcnkoKGluZGV4KSA9PiBpc0luVmF1bHQoaW5kZXgpKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgc2V0dGluZ3MuaW5kZXhOb3RlcyA9IHNwbGl0cztcclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICB9IGVsc2UgbmV3IE5vdGljZShcIkF0bGVhc3Qgb25lIG9mIHRoZSBub3RlcyBpcyBub3QgaW4geW91ciB2YXVsdFwiKTtcclxuXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgbmV3IFNldHRpbmcodHJhaWxEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJTaG93cyBhbGwgcGF0aHMgaWYgbm9uZSB0byBpbmRleCBub3RlIGFyZSBmb3VuZFwiKVxyXG4gICAgLnNldERlc2MoXHJcbiAgICAgIFwiSWYgeW91IGhhdmUgYW4gaW5kZXggbm90ZSBjaG9zZW4sIGJ1dCB0aGUgdHJhaWwgdmlldyBoYXMgbm8gcGF0aHMgZ29pbmcgdXAgdG8gdGhvc2UgaW5kZXggbm90ZXMsIHNob3VsZCBpdCBzaG93IGFsbCBwYXRocyBpbnN0ZWFkP1wiXHJcbiAgICApXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAgIHRvZ2dsZVxyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5zaG93QWxsUGF0aHNJZk5vbmVUb0luZGV4Tm90ZSlcclxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICBzZXR0aW5ncy5zaG93QWxsUGF0aHNJZk5vbmVUb0luZGV4Tm90ZSA9IHZhbHVlO1xyXG5cclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgIGF3YWl0IGRyYXdUcmFpbChwbHVnaW4pO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICBuZXcgU2V0dGluZyh0cmFpbERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkRlZmF1bHQ6IEFsbCwgTG9uZ2VzdCwgb3IgU2hvcnRlc3RcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBcIklmIG11bHRpcGxlIHBhdGhzIGFyZSBmb3VuZCBnb2luZyB1cCB0aGUgcGFyZW50IHRyZWUsIHdoaWNoIG9mIHRoZW0gc2hvdWxkIHNob3c/XCJcclxuICAgIClcclxuICAgIC5hZGREcm9wZG93bihkZCA9PiB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7fVxyXG4gICAgICBUUkFJTF9MRU5HVEhTLmZvckVhY2gobGVuZ3RoID0+IHtcclxuICAgICAgICBvcHRpb25zW2xlbmd0aF0gPSBsZW5ndGg7XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBkZC5hZGRPcHRpb25zKG9wdGlvbnMpO1xyXG4gICAgICBkZC5zZXRWYWx1ZShzZXR0aW5ncy5zaG93QWxsKTtcclxuICAgICAgZGQub25DaGFuZ2UoYXN5bmMgKHZhbCkgPT4ge1xyXG4gICAgICAgIHNldHRpbmdzLnNob3dBbGwgPSB2YWw7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIGF3YWl0IGRyYXdUcmFpbChwbHVnaW4pO1xyXG4gICAgICB9KVxyXG4gICAgfSlcclxuXHJcbiAgbmV3IFNldHRpbmcodHJhaWxEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJTZXBlcmF0b3JcIilcclxuICAgIC5zZXREZXNjKGZyYWdXaXRoSFRNTChcclxuICAgICAgXCJUaGUgY2hhcmFjdGVyIHRvIHNob3cgYmV0d2VlbiBjcnVtYnMgaW4gdGhlIGJyZWFkY3J1bWIgdHJhaWwuIFRoZSBkZWZhdWx0IGlzIDxjb2RlPlx1MjE5MjwvY29kZT5cIilcclxuICAgIClcclxuICAgIC5hZGRUZXh0KCh0ZXh0KSA9PlxyXG4gICAgICB0ZXh0XHJcbiAgICAgICAgLnNldFBsYWNlaG9sZGVyKFwiXHUyMTkyXCIpXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLnRyYWlsU2VwZXJhdG9yKVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLnRyYWlsU2VwZXJhdG9yID0gdmFsdWU7XHJcbiAgICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICBhd2FpdCBkcmF3VHJhaWwocGx1Z2luKTtcclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgbmV3IFNldHRpbmcodHJhaWxEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJObyBwYXRoIGZvdW5kIG1lc3NhZ2VcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBcIlRoZSB0ZXh0IHRvIGRpc3BsYXkgd2hlbiBubyBwYXRoIHRvIHRoZSBpbmRleCBub3RlIGlzIGZvdW5kLCBvciB0aGUgY3VycmVudCBub3RlIGhhcyBubyBwYXJlbnQuXCJcclxuICAgIClcclxuICAgIC5hZGRUZXh0KCh0ZXh0KSA9PlxyXG4gICAgICB0ZXh0XHJcbiAgICAgICAgLnNldFBsYWNlaG9sZGVyKFwiTm8gcGF0aCB0byBpbmRleCBub3RlIHdhcyBmb3VuZFwiKVxyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5ub1BhdGhNZXNzYWdlKVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLm5vUGF0aE1lc3NhZ2UgPSB2YWx1ZTtcclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgIGF3YWl0IGRyYXdUcmFpbChwbHVnaW4pO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICBuZXcgU2V0dGluZyh0cmFpbERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlJlc3BlY3QgUmVhZGFibGUgTGluZSBMZW5ndGhcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBcIlNob3VsZCB0aGUgYnJlYWRjcnVtYnMgdHJhaWwgYWRqdXN0IGl0cyB3aWR0aCB0byB0aGUgcmVhZGFibGUgbGluZSBsZW5ndGgsIG9yIHVzZSBhcyBtdWNoIHNwYWNlIGFzIHBvc3NpYmxlPyBcdTI3MDUgPSB1c2UgcmVhZGFibGUgbGluZSBsZW5ndGguXCJcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgdG9nZ2xlXHJcbiAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLnJlc3BlY3RSZWFkYWJsZUxpbmVMZW5ndGgpXHJcbiAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgc2V0dGluZ3MucmVzcGVjdFJlYWRhYmxlTGluZUxlbmd0aCA9IHZhbHVlO1xyXG4gICAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgYXdhaXQgZHJhd1RyYWlsKHBsdWdpbik7XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcblxyXG5cclxuICBuZXcgU2V0dGluZyh0cmFpbERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIlNob3cgdXAgZmllbGRzIGluIEp1Z2dsXCIpXHJcbiAgICAuc2V0RGVzYyhcIkp1Z2dsIHdpbGwgc2hvdyBib3RoIHVwIGFuZCBkb3duIGZpZWxkc1wiKVxyXG4gICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XHJcbiAgICAgIHRvZ2dsZVxyXG4gICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5zaG93VXBJbkp1Z2dsKVxyXG4gICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgIHNldHRpbmdzLnNob3dVcEluSnVnZ2wgPSB2YWx1ZTtcclxuICAgICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICBuZXcgU2V0dGluZyh0cmFpbERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkp1Z2dsIHZpZXcgbGF5b3V0XCIpXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgZnJhZ1dpdGhIVE1MKFxyXG4gICAgICAgIFwiVGhlIGxheW91dCB0eXBlIHRvIHVzZSBmb3IgdGhlIEp1Z2dsIHZpZXcuPGJyPlRoZSBoaWVyYXJjaHkgbGF5b3V0IGlzIG1vc3QgbmF0dXJhbCBmb3IgQnJlYWRjcnVtYnMsIGJ1dCBmb3IgbGFyZ2UgZ3JhcGhzIEQzIEZvcmNlIGlzIHJlY29tbWVuZGVkLlwiXHJcbiAgICAgIClcclxuICAgIClcclxuICAgIC5hZGREcm9wZG93bigoZGM6IERyb3Bkb3duQ29tcG9uZW50KSA9PiB7XHJcbiAgICAgIGRjLmFkZE9wdGlvbihcImhpZXJhcmNoeVwiLCBcIkhpZXJhcmNoeVwiKTtcclxuICAgICAgZGMuYWRkT3B0aW9uKFwiZDMtZm9yY2VcIiwgXCJEMyBGb3JjZVwiKTtcclxuICAgICAgZGMuYWRkT3B0aW9uKFwiY29sYVwiLCBcIkNvbGEgRm9yY2VcIik7XHJcbiAgICAgIGRjLmFkZE9wdGlvbihcImdyaWRcIiwgXCJHcmlkXCIpO1xyXG4gICAgICBkYy5hZGRPcHRpb24oXCJjb25jZW50cmljXCIsIFwiQ29uY2VudHJpY1wiKTtcclxuXHJcbiAgICAgIGRjLnNldFZhbHVlKHNldHRpbmdzLmp1Z2dsTGF5b3V0KTtcclxuICAgICAgZGMub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0dGluZ3MuanVnZ2xMYXlvdXQgPSB2YWx1ZSBhcyBKdWdnbExheW91dHM7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIGF3YWl0IGRyYXdUcmFpbChwbHVnaW4pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG59XHJcbiIsICJpbXBvcnQgeyBEcm9wZG93bkNvbXBvbmVudCwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgeyBBTExVTkxJTktFRCwgUkVBbENMT1NFRCwgUkVMQVRJT05TLCBWSVNUWVBFUyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHR5cGUgeyBSZWxhdGlvbnMsIFZpc1R5cGUgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG5pbXBvcnQgeyBzdWJEZXRhaWxzIH0gZnJvbSBcIi4vQnJlYWRjcnVtYnNTZXR0aW5nVGFiXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkVmlzTW9kYWxTZXR0aW5ncyhcclxuICBwbHVnaW46IEJDUGx1Z2luLFxyXG4gIHZpZXdEZXRhaWxzOiBIVE1MRGV0YWlsc0VsZW1lbnRcclxuKSB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IHZpc01vZGFsRGV0YWlscyA9IHN1YkRldGFpbHMoXCJWaXN1YWxpc2F0aW9uIE1vZGFsXCIsIHZpZXdEZXRhaWxzKTtcclxuXHJcbiAgbmV3IFNldHRpbmcodmlzTW9kYWxEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJEZWZhdWx0IFZpc3VhbGlzYXRpb24gVHlwZVwiKVxyXG4gICAgLnNldERlc2MoXCJXaGljaCB2aXN1YWxpc2F0aW9uIHRvIHNob3cgYnkgZGVmYXVsdFwiKVxyXG4gICAgLmFkZERyb3Bkb3duKChjYjogRHJvcGRvd25Db21wb25lbnQpID0+IHtcclxuICAgICAgVklTVFlQRVMuZm9yRWFjaCgob3B0aW9uOiBWaXNUeXBlKSA9PiB7XHJcbiAgICAgICAgY2IuYWRkT3B0aW9uKG9wdGlvbiwgb3B0aW9uKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGNiLnNldFZhbHVlKHNldHRpbmdzLnZpc0dyYXBoKTtcclxuXHJcbiAgICAgIGNiLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZTogVmlzVHlwZSkgPT4ge1xyXG4gICAgICAgIHNldHRpbmdzLnZpc0dyYXBoID0gdmFsdWU7XHJcbiAgICAgICAgYXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIG5ldyBTZXR0aW5nKHZpc01vZGFsRGV0YWlscylcclxuICAgIC5zZXROYW1lKFwiRGVmYXVsdCBSZWxhdGlvblwiKVxyXG4gICAgLnNldERlc2MoXCJXaGljaCByZWxhdGlvbiB0eXBlIHRvIHNob3cgZmlyc3Qgd2hlbiBvcGVuaW5nIHRoZSBtb2RhbFwiKVxyXG4gICAgLmFkZERyb3Bkb3duKChkZCkgPT4ge1xyXG4gICAgICBSRUxBVElPTlMuZm9yRWFjaCgob3B0aW9uOiBSZWxhdGlvbnMpID0+IHtcclxuICAgICAgICBkZC5hZGRPcHRpb24ob3B0aW9uLCBvcHRpb24pO1xyXG4gICAgICB9KTtcclxuICAgICAgZGQuc2V0VmFsdWUoc2V0dGluZ3MudmlzUmVsYXRpb24pO1xyXG5cclxuICAgICAgZGQub25DaGFuZ2UoYXN5bmMgKHZhbHVlOiBSZWxhdGlvbnMpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy52aXNSZWxhdGlvbiA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICBuZXcgU2V0dGluZyh2aXNNb2RhbERldGFpbHMpXHJcbiAgICAuc2V0TmFtZShcIkRlZmF1bHQgUmVhbC9DbG9zZWRcIilcclxuICAgIC5zZXREZXNjKFwiU2hvdyB0aGUgcmVhbCBvciBjbG9zZWQgZ3JhcGggYnkgZGVmYXVsdFwiKVxyXG4gICAgLmFkZERyb3Bkb3duKChjYjogRHJvcGRvd25Db21wb25lbnQpID0+IHtcclxuICAgICAgUkVBbENMT1NFRC5mb3JFYWNoKChvcHRpb246IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGNiLmFkZE9wdGlvbihvcHRpb24sIG9wdGlvbik7XHJcbiAgICAgIH0pO1xyXG4gICAgICBjYi5zZXRWYWx1ZShzZXR0aW5ncy52aXNDbG9zZWQpO1xyXG5cclxuICAgICAgY2Iub25DaGFuZ2UoYXN5bmMgKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy52aXNDbG9zZWQgPSB2YWx1ZTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgbmV3IFNldHRpbmcodmlzTW9kYWxEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJEZWZhdWx0IFVubGlua2VkXCIpXHJcbiAgICAuc2V0RGVzYyhcIlNob3cgYWxsIG5vZGVzIG9yIG9ubHkgdGhvc2Ugd2hpY2ggaGF2ZSBsaW5rcyBieSBkZWZhdWx0XCIpXHJcbiAgICAuYWRkRHJvcGRvd24oKGNiOiBEcm9wZG93bkNvbXBvbmVudCkgPT4ge1xyXG4gICAgICBBTExVTkxJTktFRC5mb3JFYWNoKChvcHRpb246IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGNiLmFkZE9wdGlvbihvcHRpb24sIG9wdGlvbik7XHJcbiAgICAgIH0pO1xyXG4gICAgICBjYi5zZXRWYWx1ZShzZXR0aW5ncy52aXNBbGwpO1xyXG5cclxuICAgICAgY2Iub25DaGFuZ2UoYXN5bmMgKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy52aXNBbGwgPSB2YWx1ZTtcclxuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuIiwgImltcG9ydCB7IFNldHRpbmcgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IENoZWNrYm94ZXMgZnJvbSBcIi4uL0NvbXBvbmVudHMvQ2hlY2tib3hlcy5zdmVsdGVcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuaW1wb3J0IHsgZ2V0RmllbGRzIH0gZnJvbSBcIi4uL1V0aWxzL0hpZXJVdGlsc1wiO1xyXG5pbXBvcnQgeyBmcmFnV2l0aEhUTUwsIHN1YkRldGFpbHMgfSBmcm9tIFwiLi9CcmVhZGNydW1ic1NldHRpbmdUYWJcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRXcml0ZUJDc1NldHRpbmdzKFxyXG4gIHBsdWdpbjogQkNQbHVnaW4sXHJcbiAgY21kc0RldGFpbHM6IEhUTUxEZXRhaWxzRWxlbWVudFxyXG4pIHtcclxuICBjb25zdCB7IHNldHRpbmdzIH0gPSBwbHVnaW47XHJcbiAgY29uc3Qgd3JpdGVCQ3NUb0ZpbGVEZXRhaWxzID0gc3ViRGV0YWlscyhcclxuICAgIFwiV3JpdGUgQnJlYWRjcnVtYnMgdG8gRmlsZVwiLFxyXG4gICAgY21kc0RldGFpbHNcclxuICApO1xyXG5cclxuICB3cml0ZUJDc1RvRmlsZURldGFpbHMuY3JlYXRlRGl2KHtcclxuICAgIGNsczogXCJzZXR0aW5nLWl0ZW0tbmFtZVwiLFxyXG4gICAgdGV4dDogXCJMaW1pdCB0byBvbmx5IHdyaXRlIGNlcnRhaW4gZmllbGRzXCIsXHJcbiAgfSk7XHJcblxyXG4gIG5ldyBDaGVja2JveGVzKHtcclxuICAgIHRhcmdldDogd3JpdGVCQ3NUb0ZpbGVEZXRhaWxzLFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgcGx1Z2luLFxyXG4gICAgICBvcHRpb25zOiBnZXRGaWVsZHMoc2V0dGluZ3MudXNlckhpZXJzKSxcclxuICAgICAgc2V0dGluZ05hbWU6IFwibGltaXRXcml0ZUJDQ2hlY2tib3hlc1wiLFxyXG4gICAgfSxcclxuICB9KTtcclxuXHJcbiAgbmV3IFNldHRpbmcod3JpdGVCQ3NUb0ZpbGVEZXRhaWxzKVxyXG4gICAgLnNldE5hbWUoXCJXcml0ZSBJbmxpbmVcIilcclxuICAgIC5zZXREZXNjKFxyXG4gICAgICBcIldoZW4gd3JpdGluZyBCQ3MgdG8gZmlsZSwgc2hvdWxkIHRoZXkgYmUgd3JpdHRlbiBpbmxpbmUgKHVzaW5nIERhdGF2aWV3IHN5bnRheCksIG9yIGludG8gdGhlIFlBTUwgb2YgdGhlIG5vdGU/XCJcclxuICAgIClcclxuICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgdG9nZ2xlLnNldFZhbHVlKHNldHRpbmdzLndyaXRlQkNzSW5saW5lKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICBzZXR0aW5ncy53cml0ZUJDc0lubGluZSA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gIG5ldyBTZXR0aW5nKHdyaXRlQkNzVG9GaWxlRGV0YWlscylcclxuICAgIC5zZXROYW1lKFxyXG4gICAgICBmcmFnV2l0aEhUTUwoXHJcbiAgICAgICAgXCJTaG93IHRoZSA8Y29kZT5Xcml0ZSBCcmVhZGNydW1icyB0byBBTEwgRmlsZXM8L2NvZGU+IGNvbW1hbmRcIlxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAuc2V0RGVzYyhcclxuICAgICAgXCJUaGlzIGNvbW1hbmQgYXR0ZW1wdHMgdG8gdXBkYXRlIEFMTCBmaWxlcyB3aXRoIGltcGxpZWQgYnJlYWRjcnVtYnMgcG9pbnRpbmcgdG8gdGhlbS4gU28sIGl0IGlzIG5vdCBzaG93biBieSBkZWZhdWx0IChldmVuIHRob3VnaCBpdCBoYXMgMyBjb25maXJtYXRpb24gYm94ZXMgdG8gZW5zdXJlIHlvdSB3YW50IHRvIHJ1biBpdFwiXHJcbiAgICApXHJcbiAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAgIHRvZ2dsZS5zZXRWYWx1ZShzZXR0aW5ncy5zaG93V3JpdGVBbGxCQ3NDbWQpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHNldHRpbmdzLnNob3dXcml0ZUFsbEJDc0NtZCA9IHZhbHVlO1xyXG4gICAgICAgIGF3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbn1cclxuIiwgImltcG9ydCB7IEl0ZW1WaWV3LCBXb3Jrc3BhY2VMZWFmIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCBEdWNrcyBmcm9tIFwiLi4vQ29tcG9uZW50cy9EdWNrcy5zdmVsdGVcIjtcclxuaW1wb3J0IHsgRFVDS19JQ09OLCBEVUNLX1ZJRVcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEdWNrc1ZpZXcgZXh0ZW5kcyBJdGVtVmlldyB7XHJcbiAgcHJpdmF0ZSBwbHVnaW46IEJDUGx1Z2luO1xyXG4gIHByaXZhdGUgdmlldzogRHVja3M7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGxlYWY6IFdvcmtzcGFjZUxlYWYsIHBsdWdpbjogQkNQbHVnaW4pIHtcclxuICAgIHN1cGVyKGxlYWYpO1xyXG4gICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbmxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBzdXBlci5vbmxvYWQoKTtcclxuICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgYXBwLndvcmtzcGFjZS5vbkxheW91dFJlYWR5KGFzeW5jICgpID0+IHtcclxuICAgICAgYXdhaXQgdGhpcy5kcmF3KCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFZpZXdUeXBlKCkge1xyXG4gICAgcmV0dXJuIERVQ0tfVklFVztcclxuICB9XHJcbiAgZ2V0RGlzcGxheVRleHQoKSB7XHJcbiAgICByZXR1cm4gXCJCcmVhZGNydW1icyBEdWNrc1wiO1xyXG4gIH1cclxuXHJcbiAgLy8gVE9ETyBEdWNrIGljb25cclxuICBpY29uID0gRFVDS19JQ09OO1xyXG5cclxuICBhc3luYyBvbk9wZW4oKTogUHJvbWlzZTx2b2lkPiB7IH1cclxuXHJcbiAgb25DbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudmlldz8uJGRlc3Ryb3koKTtcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRyYXcoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmNvbnRlbnRFbC5lbXB0eSgpO1xyXG5cclxuICAgIHRoaXMudmlldyA9IG5ldyBEdWNrcyh7XHJcbiAgICAgIHRhcmdldDogdGhpcy5jb250ZW50RWwsXHJcbiAgICAgIHByb3BzOiB7IHBsdWdpbjogdGhpcy5wbHVnaW4sIGR1Y2tzVmlldzogdGhpcyB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsICI8c2NyaXB0PlxuICAgICAgICBpbXBvcnQgSWNvbkJhc2UgZnJvbSAnLi4vY29tcG9uZW50cy9JY29uQmFzZS5zdmVsdGUnO1xuICAgICAgICA8L3NjcmlwdD5cbiAgICAgICAgPEljb25CYXNlIHZpZXdCb3g9XCIwIDAgMTkyIDUxMlwiIHsuLi4kJHByb3BzfT5cbiAgICAgICAgICA8cGF0aCBkPVwiTTIwIDQyNC4yMjloMjBWMjc5Ljc3MUgyMGMtMTEuMDQ2IDAtMjAtOC45NTQtMjAtMjBWMjEyYzAtMTEuMDQ2IDguOTU0LTIwIDIwLTIwaDExMmMxMS4wNDYgMCAyMCA4Ljk1NCAyMCAyMHYyMTIuMjI5aDIwYzExLjA0NiAwIDIwIDguOTU0IDIwIDIwVjQ5MmMwIDExLjA0Ni04Ljk1NCAyMC0yMCAyMEgyMGMtMTEuMDQ2IDAtMjAtOC45NTQtMjAtMjB2LTQ3Ljc3MWMwLTExLjA0NiA4Ljk1NC0yMCAyMC0yMHpNOTYgMEM1Ni4yMzUgMCAyNCAzMi4yMzUgMjQgNzJzMzIuMjM1IDcyIDcyIDcyIDcyLTMyLjIzNSA3Mi03MlMxMzUuNzY0IDAgOTYgMHpcIiAvPlxuICAgICAgICA8L0ljb25CYXNlPlxuICAgICAgIiwgbnVsbCwgIjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbiAgaW1wb3J0IHsgaG92ZXJQcmV2aWV3LCBvcGVuT3JTd2l0Y2ggfSBmcm9tIFwib2JzaWRpYW4tY29tbXVuaXR5LWxpYlwiO1xyXG4gIGltcG9ydCBGYUluZm8gZnJvbSBcInN2ZWx0ZS1pY29ucy9mYS9GYUluZm8uc3ZlbHRlXCI7XHJcbiAgaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uL21haW5cIjtcclxuICBpbXBvcnQgdHlwZSBEdWNrc1ZpZXcgZnJvbSBcIi4uL1ZpZXdzL0R1Y2tzVmlld1wiO1xyXG5cclxuICBleHBvcnQgbGV0IHBsdWdpbjogQkNQbHVnaW47XHJcbiAgZXhwb3J0IGxldCBkdWNrc1ZpZXc6IER1Y2tzVmlldztcclxuXHJcbiAgY29uc3QgeyBtYWluRyB9ID0gcGx1Z2luO1xyXG4gIGNvbnN0IGZpbGVzID0gYXBwLnZhdWx0LmdldE1hcmtkb3duRmlsZXMoKTtcclxuXHJcbiAgbGV0IHF1ZXJ5OiBzdHJpbmcgPSBcIlwiO1xyXG4gIGxldCByZWdleCA9IG5ldyBSZWdFeHAocXVlcnksIFwiZ1wiKTtcclxuICBsZXQgaW5jbHVkZSA9IHRydWU7XHJcblxyXG4gICQ6IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IG5ld1JlZyA9IG5ldyBSZWdFeHAocXVlcnksIFwiZ1wiKTtcclxuICAgICAgcmVnZXggPSBuZXdSZWc7XHJcbiAgICB9IGNhdGNoIChlKSB7fVxyXG4gIH1cclxuXHJcbiAgY29uc3QgZ2V0RHVja3MgPSAocmVnZXg6IFJlZ0V4cCkgPT4ge1xyXG4gICAgaWYgKCFyZWdleCkgcmV0dXJuO1xyXG4gICAgcmV0dXJuIGZpbGVzXHJcbiAgICAgIC5tYXAoKGZpbGUpID0+IGZpbGUuYmFzZW5hbWUpXHJcbiAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgKG5hbWUpID0+ICFtYWluRy5uZWlnaGJvcnMobmFtZSkubGVuZ3RoICYmIGluY2x1ZGUgPT09IHJlZ2V4LnRlc3QobmFtZSlcclxuICAgICAgKTtcclxuICB9O1xyXG5cclxuICAkOiBkdWNrcyA9IGdldER1Y2tzKHJlZ2V4KTtcclxuPC9zY3JpcHQ+XHJcblxyXG48ZGl2IGNsYXNzPVwiQkMtRHVja3MgbWFya2Rvd24tcHJldmlldy12aWV3XCI+XHJcbiAgPGg2Pk5vdGVzIHdpdGhvdXQgQnJlYWRjcnVtYnM8L2g2PlxyXG4gIDxzcGFuXHJcbiAgICBjbGFzcz1cImljb25cIlxyXG4gICAgYXJpYS1sYWJlbD17YEEgUmVnZXggdXNlZCB0byBmaWx0ZXIgdGhlIHJlc3VsdHMuXFxuSWYgJ0luY2x1ZGUnIGlzIGNoZWNrZWQsIGl0IHdpbGwgb25seSBzaG93IG5vdGVzIHRoYXQgbWF0Y2ggdGhlIHJlZ2V4LlxcbklmICdJbmNsdWRlJyBpcyBub3QgY2hlY2tlZCwgdGhpcyByZWdleCB3aWxsIGZpbHRlciBvdXQgbm90ZXMgdGhhdCBtYXRjaCBpdC5gfVxyXG4gID5cclxuICAgIDxGYUluZm8gLz5cclxuICA8L3NwYW4+XHJcbiAgPGxhYmVsPlxyXG4gICAgRmlsdGVyOlxyXG4gICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJSZWdleFwiIGJpbmQ6dmFsdWU9e3F1ZXJ5fSAvPlxyXG4gIDwvbGFiZWw+XHJcbiAgPGlucHV0IGFyaWEtbGFiZWw9XCJJbmNsdWRlXCIgdHlwZT1cImNoZWNrYm94XCIgYmluZDpjaGVja2VkPXtpbmNsdWRlfSAvPlxyXG5cclxuICB7I2VhY2ggZHVja3MgYXMgZHVja31cclxuICAgIDxkaXZcclxuICAgICAgb246Y2xpY2s9e2FzeW5jIChlKSA9PiBhd2FpdCBvcGVuT3JTd2l0Y2goZHVjaywgZSl9XHJcbiAgICAgIG9uOm1vdXNlb3Zlcj17KGUpID0+IGhvdmVyUHJldmlldyhlLCBkdWNrc1ZpZXcsIGR1Y2spfVxyXG4gICAgPlxyXG4gICAgICA8IS0tIHN2ZWx0ZS1pZ25vcmUgYTExeS1taXNzaW5nLWF0dHJpYnV0ZSAtLT5cclxuICAgICAgPGEgY2xhc3M9XCJpbnRlcm5hbC1saW5rXCI+e2R1Y2t9PC9hPlxyXG4gICAgPC9kaXY+XHJcbiAgey9lYWNofVxyXG48L2Rpdj5cclxuXHJcbjxzdHlsZT5cclxuICAuaWNvbiB7XHJcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1ub3JtYWwpO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgcGFkZGluZy10b3A6IDVweCAhaW1wb3J0YW50O1xyXG4gICAgd2lkdGg6IDIwcHg7XHJcbiAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgfVxyXG48L3N0eWxlPlxyXG4iLCAiaW1wb3J0IHsgSXRlbVZpZXcsIFdvcmtzcGFjZUxlYWYgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHsgYWRkRmVhdGhlckljb24gfSBmcm9tIFwib2JzaWRpYW4tY29tbXVuaXR5LWxpYlwiO1xyXG5pbXBvcnQgU2lkZVRyZWUgZnJvbSBcIi4uL0NvbXBvbmVudHMvU2lkZVRyZWUuc3ZlbHRlXCI7XHJcbmltcG9ydCB7IFRSRUVfVklFVyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHR5cGUgQkNQbHVnaW4gZnJvbSBcIi4uLy4uL21haW5cIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRyZWVWaWV3IGV4dGVuZHMgSXRlbVZpZXcge1xyXG4gIHByaXZhdGUgcGx1Z2luOiBCQ1BsdWdpbjtcclxuICBwcml2YXRlIHZpZXc6IFNpZGVUcmVlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihsZWFmOiBXb3Jrc3BhY2VMZWFmLCBwbHVnaW46IEJDUGx1Z2luKSB7XHJcbiAgICBzdXBlcihsZWFmKTtcclxuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25sb2FkKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgc3VwZXIub25sb2FkKCk7XHJcbiAgICBhcHAud29ya3NwYWNlLm9uTGF5b3V0UmVhZHkoYXN5bmMgKCkgPT4ge1xyXG4gICAgICBhd2FpdCB0aGlzLmRyYXcoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Vmlld1R5cGUoKSB7XHJcbiAgICByZXR1cm4gVFJFRV9WSUVXO1xyXG4gIH1cclxuICBnZXREaXNwbGF5VGV4dCgpIHtcclxuICAgIHJldHVybiBcIkJyZWFkY3J1bWJzIERvd25cIjtcclxuICB9XHJcblxyXG4gIGljb24gPSBhZGRGZWF0aGVySWNvbihcImNvcm5lci1yaWdodC1kb3duXCIpIGFzIHN0cmluZztcclxuXHJcbiAgYXN5bmMgb25PcGVuKCk6IFByb21pc2U8dm9pZD4ge31cclxuXHJcbiAgb25DbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudmlldz8uJGRlc3Ryb3koKTtcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRyYXcoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmNvbnRlbnRFbC5lbXB0eSgpO1xyXG5cclxuICAgIHRoaXMudmlldyA9IG5ldyBTaWRlVHJlZSh7XHJcbiAgICAgIHRhcmdldDogdGhpcy5jb250ZW50RWwsXHJcbiAgICAgIHByb3BzOiB7IHBsdWdpbjogdGhpcy5wbHVnaW4sIHZpZXc6IHRoaXMgfSxcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCBudWxsLCAiPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuICBpbXBvcnQgeyBpbmZvIH0gZnJvbSBcImxvZ2xldmVsXCI7XHJcbiAgaW1wb3J0IHtcclxuICAgIGhvdmVyUHJldmlldyxcclxuICAgIGlzSW5WYXVsdCxcclxuICAgIG9wZW5PclN3aXRjaCxcclxuICB9IGZyb20gXCJvYnNpZGlhbi1jb21tdW5pdHktbGliXCI7XHJcbiAgaW1wb3J0IEZhRmlyZSBmcm9tIFwic3ZlbHRlLWljb25zL2ZhL0ZhRmlyZS5zdmVsdGVcIjtcclxuICBpbXBvcnQgRmFSZWdTbm93Zmxha2UgZnJvbSBcInN2ZWx0ZS1pY29ucy9mYS9GYVJlZ1Nub3dmbGFrZS5zdmVsdGVcIjtcclxuICBpbXBvcnQgeyBjcmVhdGVJbmRleCwgaW5kZXhUb0xpbmVQYWlycyB9IGZyb20gXCIuLi9Db21tYW5kcy9DcmVhdGVJbmRleFwiO1xyXG4gIGltcG9ydCB7IERJUkVDVElPTlMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbiAgaW1wb3J0IHR5cGUgeyBEaXJlY3Rpb25zIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuICBpbXBvcnQgdHlwZSBCQ1BsdWdpbiBmcm9tIFwiLi4vbWFpblwiO1xyXG4gIGltcG9ydCB7IHJlZnJlc2hJbmRleCB9IGZyb20gXCIuLi9yZWZyZXNoSW5kZXhcIjtcclxuICBpbXBvcnQgeyBkcm9wRGVuZHJvbiB9IGZyb20gXCIuLi9VdGlscy9nZW5lcmFsVXRpbHNcIjtcclxuICBpbXBvcnQgeyBkZnNBbGxQYXRocywgZ2V0U3ViSW5EaXJzIH0gZnJvbSBcIi4uL1V0aWxzL2dyYXBoVXRpbHNcIjtcclxuICBpbXBvcnQgdHlwZSBUcmVlVmlldyBmcm9tIFwiLi4vVmlld3MvVHJlZVZpZXdcIjtcclxuICBpbXBvcnQgeyBnZXRDdXJyRmlsZSB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG4gIGV4cG9ydCBsZXQgcGx1Z2luOiBCQ1BsdWdpbjtcclxuICBleHBvcnQgbGV0IHZpZXc6IFRyZWVWaWV3O1xyXG5cclxuICBjb25zdCB7IHNldHRpbmdzLCBhcHAsIGNsb3NlZEcgfSA9IHBsdWdpbjtcclxuICBjb25zdCB7IGNyZWF0ZUluZGV4SW5kZW50IH0gPSBzZXR0aW5ncztcclxuXHJcbiAgbGV0IGRpcjogRGlyZWN0aW9ucyA9IFwiZG93blwiO1xyXG4gIGxldCBmcm96ZW4gPSBmYWxzZTtcclxuICBsZXQgeyBiYXNlbmFtZSB9ID0gZ2V0Q3VyckZpbGUoKSA/PyB7fTtcclxuXHJcbiAgcGx1Z2luLnJlZ2lzdGVyRXZlbnQoXHJcbiAgICBhcHAud29ya3NwYWNlLm9uKFwiYWN0aXZlLWxlYWYtY2hhbmdlXCIsICgpID0+IHtcclxuICAgICAgaWYgKGZyb3plbikgcmV0dXJuO1xyXG4gICAgICBiYXNlbmFtZSA9IGdldEN1cnJGaWxlKCk/LmJhc2VuYW1lO1xyXG4gICAgfSlcclxuICApO1xyXG5cclxuICBsZXQgbGluZXM6IFtzdHJpbmcsIHN0cmluZ11bXTtcclxuICAkOiB7XHJcbiAgICBjb25zdCBkaXJHID0gZ2V0U3ViSW5EaXJzKGNsb3NlZEcsIGRpcik7XHJcbiAgICBjb25zdCBhbGxQYXRocyA9IGRmc0FsbFBhdGhzKGRpckcsIGJhc2VuYW1lKTtcclxuICAgIGNvbnN0IGluZGV4ID0gY3JlYXRlSW5kZXgoYWxsUGF0aHMsIGZhbHNlLCBjcmVhdGVJbmRleEluZGVudCk7XHJcbiAgICBpbmZvKHsgYWxsUGF0aHMsIGluZGV4IH0pO1xyXG5cclxuICAgIGxpbmVzID0gaW5kZXhUb0xpbmVQYWlycyhpbmRleCk7XHJcbiAgfVxyXG48L3NjcmlwdD5cclxuXHJcbjwhLS0gc3ZlbHRlLWlnbm9yZSBhMTF5LXVua25vd24tYXJpYS1hdHRyaWJ1dGUgLS0+XHJcbjxzcGFuXHJcbiAgY2xhc3M9XCJpY29uXCJcclxuICBhcmlhLWxhYmVsPXtmcm96ZW4gPyBgRnJvemVuIG9uOiAke2Jhc2VuYW1lfWAgOiBcIlVuZnJvemVuXCJ9XHJcbiAgYXJpYS1sYWJlbC1wb3NpdGlvbj1cImxlZnRcIlxyXG4gIG9uOmNsaWNrPXsoKSA9PiB7XHJcbiAgICBmcm96ZW4gPSAhZnJvemVuO1xyXG4gICAgaWYgKCFmcm96ZW4pIGJhc2VuYW1lID0gZ2V0Q3VyckZpbGUoKT8uYmFzZW5hbWU7XHJcbiAgfX1cclxuPlxyXG4gIHsjaWYgZnJvemVufVxyXG4gICAgPEZhUmVnU25vd2ZsYWtlIC8+XHJcbiAgezplbHNlfVxyXG4gICAgPEZhRmlyZSAvPlxyXG4gIHsvaWZ9XHJcbjwvc3Bhbj5cclxuXHJcbjxidXR0b25cclxuICBhcmlhLWxhYmVsPVwiUmVmcmVzaCBTdGF0cyBWaWV3IChhbHNvIHJlZnJlc2hlcyBCcmVhZGNydW1icyBJbmRleClcIlxyXG4gIG9uOmNsaWNrPXthc3luYyAoKSA9PiB7XHJcbiAgICBhd2FpdCByZWZyZXNoSW5kZXgocGx1Z2luKTtcclxuICAgIGF3YWl0IHZpZXcuZHJhdygpO1xyXG4gIH19XHJcbj5cclxuICBcdTIxQkJcclxuPC9idXR0b24+XHJcblxyXG48c2VsZWN0IGNsYXNzPVwiZHJvcGRvd25cIiBiaW5kOnZhbHVlPXtkaXJ9PlxyXG4gIHsjZWFjaCBESVJFQ1RJT05TIGFzIGRpcmVjdGlvbn1cclxuICAgIDxvcHRpb24gdmFsdWU9e2RpcmVjdGlvbn0+e2RpcmVjdGlvbn08L29wdGlvbj5cclxuICB7L2VhY2h9XHJcbjwvc2VsZWN0PlxyXG5cclxuPGRpdiBjbGFzcz1cIkJDLWRvd25zXCI+XHJcbiAgeyNlYWNoIGxpbmVzIGFzIGxpbmV9XHJcbiAgICB7I2lmIGxpbmUubGVuZ3RoID4gMX1cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8cHJlPntsaW5lWzBdICsgXCItXCJ9PC9wcmU+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwiaW50ZXJuYWwtbGlua1wiXHJcbiAgICAgICAgICBvbjpjbGljaz17YXN5bmMgKGUpID0+IGF3YWl0IG9wZW5PclN3aXRjaChsaW5lWzFdLCBlKX1cclxuICAgICAgICAgIG9uOm1vdXNlb3Zlcj17KGUpID0+IGhvdmVyUHJldmlldyhlLCB2aWV3LCBsaW5lWzFdKX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICA8IS0tIHN2ZWx0ZS1pZ25vcmUgYTExeS1taXNzaW5nLWF0dHJpYnV0ZSAtLT5cclxuICAgICAgICAgIDxhIGNsYXNzPVwiaW50ZXJuYWwtbGluayB7aXNJblZhdWx0KGxpbmVbMV0pID8gJycgOiAnaXMtdW5yZXNvbHZlZCd9XCJcclxuICAgICAgICAgICAgPntkcm9wRGVuZHJvbihsaW5lWzFdLCBzZXR0aW5ncyl9PC9hXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIHsvaWZ9XHJcbiAgey9lYWNofVxyXG48L2Rpdj5cclxuXHJcbjxzdHlsZT5cclxuICBidXR0b24ge1xyXG4gICAgZGlzcGxheTogaW5saW5lO1xyXG4gICAgcGFkZGluZzogMXB4IDZweCAycHggNnB4O1xyXG4gIH1cclxuXHJcbiAgLkJDLWRvd25zIHtcclxuICAgIHBhZGRpbmctbGVmdDogNXB4O1xyXG4gIH1cclxuICBwcmUge1xyXG4gICAgZGlzcGxheTogaW5saW5lO1xyXG4gIH1cclxuXHJcbiAgLmlzLXVucmVzb2x2ZWQge1xyXG4gICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xyXG4gIH1cclxuXHJcbiAgLmljb24ge1xyXG4gICAgY29sb3I6IHZhcigtLXRleHQtbm9ybWFsKTtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHBhZGRpbmctdG9wOiA1cHggIWltcG9ydGFudDtcclxuICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgaGVpZ2h0OiAyMHB4O1xyXG4gIH1cclxuPC9zdHlsZT5cclxuIiwgIjxzY3JpcHQ+XG4gICAgICAgIGltcG9ydCBJY29uQmFzZSBmcm9tICcuLi9jb21wb25lbnRzL0ljb25CYXNlLnN2ZWx0ZSc7XG4gICAgICAgIDwvc2NyaXB0PlxuICAgICAgICA8SWNvbkJhc2Ugdmlld0JveD1cIjAgMCAzODQgNTEyXCIgey4uLiQkcHJvcHN9PlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMjE2IDIzLjg2YzAtMjMuOC0zMC42NS0zMi43Ny00NC4xNS0xMy4wNEM0OCAxOTEuODUgMjI0IDIwMCAyMjQgMjg4YzAgMzUuNjMtMjkuMTEgNjQuNDYtNjQuODUgNjMuOTktMzUuMTctLjQ1LTYzLjE1LTI5Ljc3LTYzLjE1LTY0Ljk0di04NS41MWMwLTIxLjctMjYuNDctMzIuMjMtNDEuNDMtMTYuNUMyNy44IDIxMy4xNiAwIDI2MS4zMyAwIDMyMGMwIDEwNS44NyA4Ni4xMyAxOTIgMTkyIDE5MnMxOTItODYuMTMgMTkyLTE5MmMwLTE3MC4yOS0xNjgtMTkzLTE2OC0yOTYuMTR6XCIgLz5cbiAgICAgICAgPC9JY29uQmFzZT5cbiAgICAgICIsICI8c2NyaXB0PlxuICAgICAgICBpbXBvcnQgSWNvbkJhc2UgZnJvbSAnLi4vY29tcG9uZW50cy9JY29uQmFzZS5zdmVsdGUnO1xuICAgICAgICA8L3NjcmlwdD5cbiAgICAgICAgPEljb25CYXNlIHZpZXdCb3g9XCIwIDAgNDQ4IDUxMlwiIHsuLi4kJHByb3BzfT5cbiAgICAgICAgICA8cGF0aCBkPVwiTTQ0MC4xIDM1NS4ybC0zOS4yLTIzIDM0LjEtOS4zYzguNC0yLjMgMTMuNC0xMS4xIDExLjEtMTkuNmwtNC4xLTE1LjVjLTIuMi04LjUtMTAuOS0xMy42LTE5LjMtMTEuM0wzNDMgMjk4LjIgMjcxLjIgMjU2bDcxLjktNDIuMiA3OS43IDIxLjdjOC40IDIuMyAxNy0yLjggMTkuMy0xMS4zbDQuMS0xNS41YzIuMi04LjUtMi43LTE3LjMtMTEuMS0xOS42bC0zNC4xLTkuMyAzOS4yLTIzYzcuNS00LjQgMTAuMS0xNC4yIDUuOC0yMS45bC03LjktMTMuOWMtNC4zLTcuNy0xNC0xMC4zLTIxLjUtNS45bC0zOS4yIDIzIDkuMS0zNC43YzIuMi04LjUtMi43LTE3LjMtMTEuMS0xOS42bC0xNS4yLTQuMWMtOC40LTIuMy0xNyAyLjgtMTkuMyAxMS4zbC0yMS4zIDgxLTcxLjkgNDIuMnYtODQuNUwzMDYgNzAuNGM2LjEtNi4yIDYuMS0xNi40IDAtMjIuNmwtMTEuMS0xMS4zYy02LjEtNi4yLTE2LjEtNi4yLTIyLjIgMGwtMjQuOSAyNS40VjE2YzAtOC44LTctMTYtMTUuNy0xNmgtMTUuN2MtOC43IDAtMTUuNyA3LjItMTUuNyAxNnY0Ni4xbC0yNC45LTI1LjRjLTYuMS02LjItMTYuMS02LjItMjIuMiAwTDE0Mi4xIDQ4Yy02LjEgNi4yLTYuMSAxNi40IDAgMjIuNmw1OC4zIDU5LjN2ODQuNWwtNzEuOS00Mi4yLTIxLjMtODFjLTIuMi04LjUtMTAuOS0xMy42LTE5LjMtMTEuM0w3Mi43IDg0Yy04LjQgMi4zLTEzLjQgMTEuMS0xMS4xIDE5LjZsOS4xIDM0LjctMzkuMi0yM2MtNy41LTQuNC0xNy4xLTEuOC0yMS41IDUuOWwtNy45IDEzLjljLTQuMyA3LjctMS44IDE3LjQgNS44IDIxLjlsMzkuMiAyMy0zNC4xIDkuMWMtOC40IDIuMy0xMy40IDExLjEtMTEuMSAxOS42TDYgMjI0LjJjMi4yIDguNSAxMC45IDEzLjYgMTkuMyAxMS4zbDc5LjctMjEuNyA3MS45IDQyLjItNzEuOSA0Mi4yLTc5LjctMjEuN2MtOC40LTIuMy0xNyAyLjgtMTkuMyAxMS4zbC00LjEgMTUuNWMtMi4yIDguNSAyLjcgMTcuMyAxMS4xIDE5LjZsMzQuMSA5LjMtMzkuMiAyM2MtNy41IDQuNC0xMC4xIDE0LjItNS44IDIxLjlMMTAgMzkxYzQuMyA3LjcgMTQgMTAuMyAyMS41IDUuOWwzOS4yLTIzLTkuMSAzNC43Yy0yLjIgOC41IDIuNyAxNy4zIDExLjEgMTkuNmwxNS4yIDQuMWM4LjQgMi4zIDE3LTIuOCAxOS4zLTExLjNsMjEuMy04MSA3MS45LTQyLjJ2ODQuNWwtNTguMyA1OS4zYy02LjEgNi4yLTYuMSAxNi40IDAgMjIuNmwxMS4xIDExLjNjNi4xIDYuMiAxNi4xIDYuMiAyMi4yIDBsMjQuOS0yNS40VjQ5NmMwIDguOCA3IDE2IDE1LjcgMTZoMTUuN2M4LjcgMCAxNS43LTcuMiAxNS43LTE2di00Ni4xbDI0LjkgMjUuNGM2LjEgNi4yIDE2LjEgNi4yIDIyLjIgMGwxMS4xLTExLjNjNi4xLTYuMiA2LjEtMTYuNCAwLTIyLjZsLTU4LjMtNTkuM3YtODQuNWw3MS45IDQyLjIgMjEuMyA4MWMyLjIgOC41IDEwLjkgMTMuNiAxOS4zIDExLjNMMzc1IDQyOGM4LjQtMi4zIDEzLjQtMTEuMSAxMS4xLTE5LjZsLTkuMS0zNC43IDM5LjIgMjNjNy41IDQuNCAxNy4xIDEuOCAyMS41LTUuOWw3LjktMTMuOWM0LjYtNy41IDIuMS0xNy4zLTUuNS0yMS43elwiIC8+XG4gICAgICAgIDwvSWNvbkJhc2U+XG4gICAgICAiLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gYSA8IGIgPyAtMSA6IGEgPiBiID8gMSA6IGEgPj0gYiA/IDAgOiBOYU47XG59XG4iLCAiaW1wb3J0IGFzY2VuZGluZyBmcm9tIFwiLi9hc2NlbmRpbmcuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZikge1xuICBsZXQgZGVsdGEgPSBmO1xuICBsZXQgY29tcGFyZSA9IGY7XG5cbiAgaWYgKGYubGVuZ3RoID09PSAxKSB7XG4gICAgZGVsdGEgPSAoZCwgeCkgPT4gZihkKSAtIHg7XG4gICAgY29tcGFyZSA9IGFzY2VuZGluZ0NvbXBhcmF0b3IoZik7XG4gIH1cblxuICBmdW5jdGlvbiBsZWZ0KGEsIHgsIGxvLCBoaSkge1xuICAgIGlmIChsbyA9PSBudWxsKSBsbyA9IDA7XG4gICAgaWYgKGhpID09IG51bGwpIGhpID0gYS5sZW5ndGg7XG4gICAgd2hpbGUgKGxvIDwgaGkpIHtcbiAgICAgIGNvbnN0IG1pZCA9IChsbyArIGhpKSA+Pj4gMTtcbiAgICAgIGlmIChjb21wYXJlKGFbbWlkXSwgeCkgPCAwKSBsbyA9IG1pZCArIDE7XG4gICAgICBlbHNlIGhpID0gbWlkO1xuICAgIH1cbiAgICByZXR1cm4gbG87XG4gIH1cblxuICBmdW5jdGlvbiByaWdodChhLCB4LCBsbywgaGkpIHtcbiAgICBpZiAobG8gPT0gbnVsbCkgbG8gPSAwO1xuICAgIGlmIChoaSA9PSBudWxsKSBoaSA9IGEubGVuZ3RoO1xuICAgIHdoaWxlIChsbyA8IGhpKSB7XG4gICAgICBjb25zdCBtaWQgPSAobG8gKyBoaSkgPj4+IDE7XG4gICAgICBpZiAoY29tcGFyZShhW21pZF0sIHgpID4gMCkgaGkgPSBtaWQ7XG4gICAgICBlbHNlIGxvID0gbWlkICsgMTtcbiAgICB9XG4gICAgcmV0dXJuIGxvO1xuICB9XG5cbiAgZnVuY3Rpb24gY2VudGVyKGEsIHgsIGxvLCBoaSkge1xuICAgIGlmIChsbyA9PSBudWxsKSBsbyA9IDA7XG4gICAgaWYgKGhpID09IG51bGwpIGhpID0gYS5sZW5ndGg7XG4gICAgY29uc3QgaSA9IGxlZnQoYSwgeCwgbG8sIGhpIC0gMSk7XG4gICAgcmV0dXJuIGkgPiBsbyAmJiBkZWx0YShhW2kgLSAxXSwgeCkgPiAtZGVsdGEoYVtpXSwgeCkgPyBpIC0gMSA6IGk7XG4gIH1cblxuICByZXR1cm4ge2xlZnQsIGNlbnRlciwgcmlnaHR9O1xufVxuXG5mdW5jdGlvbiBhc2NlbmRpbmdDb21wYXJhdG9yKGYpIHtcbiAgcmV0dXJuIChkLCB4KSA9PiBhc2NlbmRpbmcoZihkKSwgeCk7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4geCA9PT0gbnVsbCA/IE5hTiA6ICt4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24qIG51bWJlcnModmFsdWVzLCB2YWx1ZW9mKSB7XG4gIGlmICh2YWx1ZW9mID09PSB1bmRlZmluZWQpIHtcbiAgICBmb3IgKGxldCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmICh2YWx1ZSA9ICt2YWx1ZSkgPj0gdmFsdWUpIHtcbiAgICAgICAgeWllbGQgdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxldCBpbmRleCA9IC0xO1xuICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgaWYgKCh2YWx1ZSA9IHZhbHVlb2YodmFsdWUsICsraW5kZXgsIHZhbHVlcykpICE9IG51bGwgJiYgKHZhbHVlID0gK3ZhbHVlKSA+PSB2YWx1ZSkge1xuICAgICAgICB5aWVsZCB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsICJpbXBvcnQgYXNjZW5kaW5nIGZyb20gXCIuL2FzY2VuZGluZy5qc1wiO1xuaW1wb3J0IGJpc2VjdG9yIGZyb20gXCIuL2Jpc2VjdG9yLmpzXCI7XG5pbXBvcnQgbnVtYmVyIGZyb20gXCIuL251bWJlci5qc1wiO1xuXG5jb25zdCBhc2NlbmRpbmdCaXNlY3QgPSBiaXNlY3Rvcihhc2NlbmRpbmcpO1xuZXhwb3J0IGNvbnN0IGJpc2VjdFJpZ2h0ID0gYXNjZW5kaW5nQmlzZWN0LnJpZ2h0O1xuZXhwb3J0IGNvbnN0IGJpc2VjdExlZnQgPSBhc2NlbmRpbmdCaXNlY3QubGVmdDtcbmV4cG9ydCBjb25zdCBiaXNlY3RDZW50ZXIgPSBiaXNlY3RvcihudW1iZXIpLmNlbnRlcjtcbmV4cG9ydCBkZWZhdWx0IGJpc2VjdFJpZ2h0O1xuIiwgInZhciBlMTAgPSBNYXRoLnNxcnQoNTApLFxuICAgIGU1ID0gTWF0aC5zcXJ0KDEwKSxcbiAgICBlMiA9IE1hdGguc3FydCgyKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc3RhcnQsIHN0b3AsIGNvdW50KSB7XG4gIHZhciByZXZlcnNlLFxuICAgICAgaSA9IC0xLFxuICAgICAgbixcbiAgICAgIHRpY2tzLFxuICAgICAgc3RlcDtcblxuICBzdG9wID0gK3N0b3AsIHN0YXJ0ID0gK3N0YXJ0LCBjb3VudCA9ICtjb3VudDtcbiAgaWYgKHN0YXJ0ID09PSBzdG9wICYmIGNvdW50ID4gMCkgcmV0dXJuIFtzdGFydF07XG4gIGlmIChyZXZlcnNlID0gc3RvcCA8IHN0YXJ0KSBuID0gc3RhcnQsIHN0YXJ0ID0gc3RvcCwgc3RvcCA9IG47XG4gIGlmICgoc3RlcCA9IHRpY2tJbmNyZW1lbnQoc3RhcnQsIHN0b3AsIGNvdW50KSkgPT09IDAgfHwgIWlzRmluaXRlKHN0ZXApKSByZXR1cm4gW107XG5cbiAgaWYgKHN0ZXAgPiAwKSB7XG4gICAgbGV0IHIwID0gTWF0aC5yb3VuZChzdGFydCAvIHN0ZXApLCByMSA9IE1hdGgucm91bmQoc3RvcCAvIHN0ZXApO1xuICAgIGlmIChyMCAqIHN0ZXAgPCBzdGFydCkgKytyMDtcbiAgICBpZiAocjEgKiBzdGVwID4gc3RvcCkgLS1yMTtcbiAgICB0aWNrcyA9IG5ldyBBcnJheShuID0gcjEgLSByMCArIDEpO1xuICAgIHdoaWxlICgrK2kgPCBuKSB0aWNrc1tpXSA9IChyMCArIGkpICogc3RlcDtcbiAgfSBlbHNlIHtcbiAgICBzdGVwID0gLXN0ZXA7XG4gICAgbGV0IHIwID0gTWF0aC5yb3VuZChzdGFydCAqIHN0ZXApLCByMSA9IE1hdGgucm91bmQoc3RvcCAqIHN0ZXApO1xuICAgIGlmIChyMCAvIHN0ZXAgPCBzdGFydCkgKytyMDtcbiAgICBpZiAocjEgLyBzdGVwID4gc3RvcCkgLS1yMTtcbiAgICB0aWNrcyA9IG5ldyBBcnJheShuID0gcjEgLSByMCArIDEpO1xuICAgIHdoaWxlICgrK2kgPCBuKSB0aWNrc1tpXSA9IChyMCArIGkpIC8gc3RlcDtcbiAgfVxuXG4gIGlmIChyZXZlcnNlKSB0aWNrcy5yZXZlcnNlKCk7XG5cbiAgcmV0dXJuIHRpY2tzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGlja0luY3JlbWVudChzdGFydCwgc3RvcCwgY291bnQpIHtcbiAgdmFyIHN0ZXAgPSAoc3RvcCAtIHN0YXJ0KSAvIE1hdGgubWF4KDAsIGNvdW50KSxcbiAgICAgIHBvd2VyID0gTWF0aC5mbG9vcihNYXRoLmxvZyhzdGVwKSAvIE1hdGguTE4xMCksXG4gICAgICBlcnJvciA9IHN0ZXAgLyBNYXRoLnBvdygxMCwgcG93ZXIpO1xuICByZXR1cm4gcG93ZXIgPj0gMFxuICAgICAgPyAoZXJyb3IgPj0gZTEwID8gMTAgOiBlcnJvciA+PSBlNSA/IDUgOiBlcnJvciA+PSBlMiA/IDIgOiAxKSAqIE1hdGgucG93KDEwLCBwb3dlcilcbiAgICAgIDogLU1hdGgucG93KDEwLCAtcG93ZXIpIC8gKGVycm9yID49IGUxMCA/IDEwIDogZXJyb3IgPj0gZTUgPyA1IDogZXJyb3IgPj0gZTIgPyAyIDogMSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aWNrU3RlcChzdGFydCwgc3RvcCwgY291bnQpIHtcbiAgdmFyIHN0ZXAwID0gTWF0aC5hYnMoc3RvcCAtIHN0YXJ0KSAvIE1hdGgubWF4KDAsIGNvdW50KSxcbiAgICAgIHN0ZXAxID0gTWF0aC5wb3coMTAsIE1hdGguZmxvb3IoTWF0aC5sb2coc3RlcDApIC8gTWF0aC5MTjEwKSksXG4gICAgICBlcnJvciA9IHN0ZXAwIC8gc3RlcDE7XG4gIGlmIChlcnJvciA+PSBlMTApIHN0ZXAxICo9IDEwO1xuICBlbHNlIGlmIChlcnJvciA+PSBlNSkgc3RlcDEgKj0gNTtcbiAgZWxzZSBpZiAoZXJyb3IgPj0gZTIpIHN0ZXAxICo9IDI7XG4gIHJldHVybiBzdG9wIDwgc3RhcnQgPyAtc3RlcDEgOiBzdGVwMTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtYXgodmFsdWVzLCB2YWx1ZW9mKSB7XG4gIGxldCBtYXg7XG4gIGlmICh2YWx1ZW9mID09PSB1bmRlZmluZWQpIHtcbiAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGxcbiAgICAgICAgICAmJiAobWF4IDwgdmFsdWUgfHwgKG1heCA9PT0gdW5kZWZpbmVkICYmIHZhbHVlID49IHZhbHVlKSkpIHtcbiAgICAgICAgbWF4ID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxldCBpbmRleCA9IC0xO1xuICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgaWYgKCh2YWx1ZSA9IHZhbHVlb2YodmFsdWUsICsraW5kZXgsIHZhbHVlcykpICE9IG51bGxcbiAgICAgICAgICAmJiAobWF4IDwgdmFsdWUgfHwgKG1heCA9PT0gdW5kZWZpbmVkICYmIHZhbHVlID49IHZhbHVlKSkpIHtcbiAgICAgICAgbWF4ID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBtYXg7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc3RhcnQsIHN0b3AsIHN0ZXApIHtcbiAgc3RhcnQgPSArc3RhcnQsIHN0b3AgPSArc3RvcCwgc3RlcCA9IChuID0gYXJndW1lbnRzLmxlbmd0aCkgPCAyID8gKHN0b3AgPSBzdGFydCwgc3RhcnQgPSAwLCAxKSA6IG4gPCAzID8gMSA6ICtzdGVwO1xuXG4gIHZhciBpID0gLTEsXG4gICAgICBuID0gTWF0aC5tYXgoMCwgTWF0aC5jZWlsKChzdG9wIC0gc3RhcnQpIC8gc3RlcCkpIHwgMCxcbiAgICAgIHJhbmdlID0gbmV3IEFycmF5KG4pO1xuXG4gIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgcmFuZ2VbaV0gPSBzdGFydCArIGkgKiBzdGVwO1xuICB9XG5cbiAgcmV0dXJuIHJhbmdlO1xufVxuIiwgInZhciBub29wID0ge3ZhbHVlOiAoKSA9PiB7fX07XG5cbmZ1bmN0aW9uIGRpc3BhdGNoKCkge1xuICBmb3IgKHZhciBpID0gMCwgbiA9IGFyZ3VtZW50cy5sZW5ndGgsIF8gPSB7fSwgdDsgaSA8IG47ICsraSkge1xuICAgIGlmICghKHQgPSBhcmd1bWVudHNbaV0gKyBcIlwiKSB8fCAodCBpbiBfKSB8fCAvW1xccy5dLy50ZXN0KHQpKSB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIHR5cGU6IFwiICsgdCk7XG4gICAgX1t0XSA9IFtdO1xuICB9XG4gIHJldHVybiBuZXcgRGlzcGF0Y2goXyk7XG59XG5cbmZ1bmN0aW9uIERpc3BhdGNoKF8pIHtcbiAgdGhpcy5fID0gXztcbn1cblxuZnVuY3Rpb24gcGFyc2VUeXBlbmFtZXModHlwZW5hbWVzLCB0eXBlcykge1xuICByZXR1cm4gdHlwZW5hbWVzLnRyaW0oKS5zcGxpdCgvXnxcXHMrLykubWFwKGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgbmFtZSA9IFwiXCIsIGkgPSB0LmluZGV4T2YoXCIuXCIpO1xuICAgIGlmIChpID49IDApIG5hbWUgPSB0LnNsaWNlKGkgKyAxKSwgdCA9IHQuc2xpY2UoMCwgaSk7XG4gICAgaWYgKHQgJiYgIXR5cGVzLmhhc093blByb3BlcnR5KHQpKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIHR5cGU6IFwiICsgdCk7XG4gICAgcmV0dXJuIHt0eXBlOiB0LCBuYW1lOiBuYW1lfTtcbiAgfSk7XG59XG5cbkRpc3BhdGNoLnByb3RvdHlwZSA9IGRpc3BhdGNoLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IERpc3BhdGNoLFxuICBvbjogZnVuY3Rpb24odHlwZW5hbWUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIF8gPSB0aGlzLl8sXG4gICAgICAgIFQgPSBwYXJzZVR5cGVuYW1lcyh0eXBlbmFtZSArIFwiXCIsIF8pLFxuICAgICAgICB0LFxuICAgICAgICBpID0gLTEsXG4gICAgICAgIG4gPSBULmxlbmd0aDtcblxuICAgIC8vIElmIG5vIGNhbGxiYWNrIHdhcyBzcGVjaWZpZWQsIHJldHVybiB0aGUgY2FsbGJhY2sgb2YgdGhlIGdpdmVuIHR5cGUgYW5kIG5hbWUuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgICB3aGlsZSAoKytpIDwgbikgaWYgKCh0ID0gKHR5cGVuYW1lID0gVFtpXSkudHlwZSkgJiYgKHQgPSBnZXQoX1t0XSwgdHlwZW5hbWUubmFtZSkpKSByZXR1cm4gdDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiBhIHR5cGUgd2FzIHNwZWNpZmllZCwgc2V0IHRoZSBjYWxsYmFjayBmb3IgdGhlIGdpdmVuIHR5cGUgYW5kIG5hbWUuXG4gICAgLy8gT3RoZXJ3aXNlLCBpZiBhIG51bGwgY2FsbGJhY2sgd2FzIHNwZWNpZmllZCwgcmVtb3ZlIGNhbGxiYWNrcyBvZiB0aGUgZ2l2ZW4gbmFtZS5cbiAgICBpZiAoY2FsbGJhY2sgIT0gbnVsbCAmJiB0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBjYWxsYmFjazogXCIgKyBjYWxsYmFjayk7XG4gICAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICAgIGlmICh0ID0gKHR5cGVuYW1lID0gVFtpXSkudHlwZSkgX1t0XSA9IHNldChfW3RdLCB0eXBlbmFtZS5uYW1lLCBjYWxsYmFjayk7XG4gICAgICBlbHNlIGlmIChjYWxsYmFjayA9PSBudWxsKSBmb3IgKHQgaW4gXykgX1t0XSA9IHNldChfW3RdLCB0eXBlbmFtZS5uYW1lLCBudWxsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgY29weTogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGNvcHkgPSB7fSwgXyA9IHRoaXMuXztcbiAgICBmb3IgKHZhciB0IGluIF8pIGNvcHlbdF0gPSBfW3RdLnNsaWNlKCk7XG4gICAgcmV0dXJuIG5ldyBEaXNwYXRjaChjb3B5KTtcbiAgfSxcbiAgY2FsbDogZnVuY3Rpb24odHlwZSwgdGhhdCkge1xuICAgIGlmICgobiA9IGFyZ3VtZW50cy5sZW5ndGggLSAyKSA+IDApIGZvciAodmFyIGFyZ3MgPSBuZXcgQXJyYXkobiksIGkgPSAwLCBuLCB0OyBpIDwgbjsgKytpKSBhcmdzW2ldID0gYXJndW1lbnRzW2kgKyAyXTtcbiAgICBpZiAoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgdGhyb3cgbmV3IEVycm9yKFwidW5rbm93biB0eXBlOiBcIiArIHR5cGUpO1xuICAgIGZvciAodCA9IHRoaXMuX1t0eXBlXSwgaSA9IDAsIG4gPSB0Lmxlbmd0aDsgaSA8IG47ICsraSkgdFtpXS52YWx1ZS5hcHBseSh0aGF0LCBhcmdzKTtcbiAgfSxcbiAgYXBwbHk6IGZ1bmN0aW9uKHR5cGUsIHRoYXQsIGFyZ3MpIHtcbiAgICBpZiAoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgdGhyb3cgbmV3IEVycm9yKFwidW5rbm93biB0eXBlOiBcIiArIHR5cGUpO1xuICAgIGZvciAodmFyIHQgPSB0aGlzLl9bdHlwZV0sIGkgPSAwLCBuID0gdC5sZW5ndGg7IGkgPCBuOyArK2kpIHRbaV0udmFsdWUuYXBwbHkodGhhdCwgYXJncyk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGdldCh0eXBlLCBuYW1lKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gdHlwZS5sZW5ndGgsIGM7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAoKGMgPSB0eXBlW2ldKS5uYW1lID09PSBuYW1lKSB7XG4gICAgICByZXR1cm4gYy52YWx1ZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0KHR5cGUsIG5hbWUsIGNhbGxiYWNrKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gdHlwZS5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAodHlwZVtpXS5uYW1lID09PSBuYW1lKSB7XG4gICAgICB0eXBlW2ldID0gbm9vcCwgdHlwZSA9IHR5cGUuc2xpY2UoMCwgaSkuY29uY2F0KHR5cGUuc2xpY2UoaSArIDEpKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoY2FsbGJhY2sgIT0gbnVsbCkgdHlwZS5wdXNoKHtuYW1lOiBuYW1lLCB2YWx1ZTogY2FsbGJhY2t9KTtcbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRpc3BhdGNoO1xuIiwgImV4cG9ydCB2YXIgeGh0bWwgPSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBzdmc6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgeGh0bWw6IHhodG1sLFxuICB4bGluazogXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXG4gIHhtbDogXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIixcbiAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy9cIlxufTtcbiIsICJpbXBvcnQgbmFtZXNwYWNlcyBmcm9tIFwiLi9uYW1lc3BhY2VzLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIHByZWZpeCA9IG5hbWUgKz0gXCJcIiwgaSA9IHByZWZpeC5pbmRleE9mKFwiOlwiKTtcbiAgaWYgKGkgPj0gMCAmJiAocHJlZml4ID0gbmFtZS5zbGljZSgwLCBpKSkgIT09IFwieG1sbnNcIikgbmFtZSA9IG5hbWUuc2xpY2UoaSArIDEpO1xuICByZXR1cm4gbmFtZXNwYWNlcy5oYXNPd25Qcm9wZXJ0eShwcmVmaXgpID8ge3NwYWNlOiBuYW1lc3BhY2VzW3ByZWZpeF0sIGxvY2FsOiBuYW1lfSA6IG5hbWU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG59XG4iLCAiaW1wb3J0IG5hbWVzcGFjZSBmcm9tIFwiLi9uYW1lc3BhY2UuanNcIjtcbmltcG9ydCB7eGh0bWx9IGZyb20gXCIuL25hbWVzcGFjZXMuanNcIjtcblxuZnVuY3Rpb24gY3JlYXRvckluaGVyaXQobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGRvY3VtZW50ID0gdGhpcy5vd25lckRvY3VtZW50LFxuICAgICAgICB1cmkgPSB0aGlzLm5hbWVzcGFjZVVSSTtcbiAgICByZXR1cm4gdXJpID09PSB4aHRtbCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJID09PSB4aHRtbFxuICAgICAgICA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSlcbiAgICAgICAgOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlModXJpLCBuYW1lKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRvckZpeGVkKGZ1bGxuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBmdWxsbmFtZSA9IG5hbWVzcGFjZShuYW1lKTtcbiAgcmV0dXJuIChmdWxsbmFtZS5sb2NhbFxuICAgICAgPyBjcmVhdG9yRml4ZWRcbiAgICAgIDogY3JlYXRvckluaGVyaXQpKGZ1bGxuYW1lKTtcbn1cbiIsICJmdW5jdGlvbiBub25lKCkge31cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHNlbGVjdG9yID09IG51bGwgPyBub25lIDogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG4gIH07XG59XG4iLCAiaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4LmpzXCI7XG5pbXBvcnQgc2VsZWN0b3IgZnJvbSBcIi4uL3NlbGVjdG9yLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdCkge1xuICBpZiAodHlwZW9mIHNlbGVjdCAhPT0gXCJmdW5jdGlvblwiKSBzZWxlY3QgPSBzZWxlY3RvcihzZWxlY3QpO1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIHN1Ymdyb3VwcyA9IG5ldyBBcnJheShtKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgc3ViZ3JvdXAgPSBzdWJncm91cHNbal0gPSBuZXcgQXJyYXkobiksIG5vZGUsIHN1Ym5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAoKG5vZGUgPSBncm91cFtpXSkgJiYgKHN1Ym5vZGUgPSBzZWxlY3QuY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCkpKSB7XG4gICAgICAgIGlmIChcIl9fZGF0YV9fXCIgaW4gbm9kZSkgc3Vibm9kZS5fX2RhdGFfXyA9IG5vZGUuX19kYXRhX187XG4gICAgICAgIHN1Ymdyb3VwW2ldID0gc3Vibm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFNlbGVjdGlvbihzdWJncm91cHMsIHRoaXMuX3BhcmVudHMpO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSBcIm9iamVjdFwiICYmIFwibGVuZ3RoXCIgaW4geFxuICAgID8geCAvLyBBcnJheSwgVHlwZWRBcnJheSwgTm9kZUxpc3QsIGFycmF5LWxpa2VcbiAgICA6IEFycmF5LmZyb20oeCk7IC8vIE1hcCwgU2V0LCBpdGVyYWJsZSwgc3RyaW5nLCBvciBhbnl0aGluZyBlbHNlXG59XG4iLCAiZnVuY3Rpb24gZW1wdHkoKSB7XG4gIHJldHVybiBbXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHNlbGVjdG9yID09IG51bGwgPyBlbXB0eSA6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuICB9O1xufVxuIiwgImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuaW1wb3J0IGFycmF5IGZyb20gXCIuLi9hcnJheS5qc1wiO1xuaW1wb3J0IHNlbGVjdG9yQWxsIGZyb20gXCIuLi9zZWxlY3RvckFsbC5qc1wiO1xuXG5mdW5jdGlvbiBhcnJheUFsbChzZWxlY3QpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBncm91cCA9IHNlbGVjdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIHJldHVybiBncm91cCA9PSBudWxsID8gW10gOiBhcnJheShncm91cCk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdCkge1xuICBpZiAodHlwZW9mIHNlbGVjdCA9PT0gXCJmdW5jdGlvblwiKSBzZWxlY3QgPSBhcnJheUFsbChzZWxlY3QpO1xuICBlbHNlIHNlbGVjdCA9IHNlbGVjdG9yQWxsKHNlbGVjdCk7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBtID0gZ3JvdXBzLmxlbmd0aCwgc3ViZ3JvdXBzID0gW10sIHBhcmVudHMgPSBbXSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgICAgc3ViZ3JvdXBzLnB1c2goc2VsZWN0LmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApKTtcbiAgICAgICAgcGFyZW50cy5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHN1Ymdyb3VwcywgcGFyZW50cyk7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLm1hdGNoZXMoc2VsZWN0b3IpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hpbGRNYXRjaGVyKHNlbGVjdG9yKSB7XG4gIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUubWF0Y2hlcyhzZWxlY3Rvcik7XG4gIH07XG59XG5cbiIsICJpbXBvcnQge2NoaWxkTWF0Y2hlcn0gZnJvbSBcIi4uL21hdGNoZXIuanNcIjtcblxudmFyIGZpbmQgPSBBcnJheS5wcm90b3R5cGUuZmluZDtcblxuZnVuY3Rpb24gY2hpbGRGaW5kKG1hdGNoKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZmluZC5jYWxsKHRoaXMuY2hpbGRyZW4sIG1hdGNoKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY2hpbGRGaXJzdCgpIHtcbiAgcmV0dXJuIHRoaXMuZmlyc3RFbGVtZW50Q2hpbGQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG1hdGNoKSB7XG4gIHJldHVybiB0aGlzLnNlbGVjdChtYXRjaCA9PSBudWxsID8gY2hpbGRGaXJzdFxuICAgICAgOiBjaGlsZEZpbmQodHlwZW9mIG1hdGNoID09PSBcImZ1bmN0aW9uXCIgPyBtYXRjaCA6IGNoaWxkTWF0Y2hlcihtYXRjaCkpKTtcbn1cbiIsICJpbXBvcnQge2NoaWxkTWF0Y2hlcn0gZnJvbSBcIi4uL21hdGNoZXIuanNcIjtcblxudmFyIGZpbHRlciA9IEFycmF5LnByb3RvdHlwZS5maWx0ZXI7XG5cbmZ1bmN0aW9uIGNoaWxkcmVuKCkge1xuICByZXR1cm4gdGhpcy5jaGlsZHJlbjtcbn1cblxuZnVuY3Rpb24gY2hpbGRyZW5GaWx0ZXIobWF0Y2gpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBmaWx0ZXIuY2FsbCh0aGlzLmNoaWxkcmVuLCBtYXRjaCk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG1hdGNoKSB7XG4gIHJldHVybiB0aGlzLnNlbGVjdEFsbChtYXRjaCA9PSBudWxsID8gY2hpbGRyZW5cbiAgICAgIDogY2hpbGRyZW5GaWx0ZXIodHlwZW9mIG1hdGNoID09PSBcImZ1bmN0aW9uXCIgPyBtYXRjaCA6IGNoaWxkTWF0Y2hlcihtYXRjaCkpKTtcbn1cbiIsICJpbXBvcnQge1NlbGVjdGlvbn0gZnJvbSBcIi4vaW5kZXguanNcIjtcbmltcG9ydCBtYXRjaGVyIGZyb20gXCIuLi9tYXRjaGVyLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG1hdGNoKSB7XG4gIGlmICh0eXBlb2YgbWF0Y2ggIT09IFwiZnVuY3Rpb25cIikgbWF0Y2ggPSBtYXRjaGVyKG1hdGNoKTtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBzdWJncm91cHMgPSBuZXcgQXJyYXkobSksIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIG4gPSBncm91cC5sZW5ndGgsIHN1Ymdyb3VwID0gc3ViZ3JvdXBzW2pdID0gW10sIG5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAoKG5vZGUgPSBncm91cFtpXSkgJiYgbWF0Y2guY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCkpIHtcbiAgICAgICAgc3ViZ3JvdXAucHVzaChub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFNlbGVjdGlvbihzdWJncm91cHMsIHRoaXMuX3BhcmVudHMpO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHVwZGF0ZSkge1xuICByZXR1cm4gbmV3IEFycmF5KHVwZGF0ZS5sZW5ndGgpO1xufVxuIiwgImltcG9ydCBzcGFyc2UgZnJvbSBcIi4vc3BhcnNlLmpzXCI7XG5pbXBvcnQge1NlbGVjdGlvbn0gZnJvbSBcIi4vaW5kZXguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHRoaXMuX2VudGVyIHx8IHRoaXMuX2dyb3Vwcy5tYXAoc3BhcnNlKSwgdGhpcy5fcGFyZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFbnRlck5vZGUocGFyZW50LCBkYXR1bSkge1xuICB0aGlzLm93bmVyRG9jdW1lbnQgPSBwYXJlbnQub3duZXJEb2N1bWVudDtcbiAgdGhpcy5uYW1lc3BhY2VVUkkgPSBwYXJlbnQubmFtZXNwYWNlVVJJO1xuICB0aGlzLl9uZXh0ID0gbnVsbDtcbiAgdGhpcy5fcGFyZW50ID0gcGFyZW50O1xuICB0aGlzLl9fZGF0YV9fID0gZGF0dW07XG59XG5cbkVudGVyTm9kZS5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBFbnRlck5vZGUsXG4gIGFwcGVuZENoaWxkOiBmdW5jdGlvbihjaGlsZCkgeyByZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZShjaGlsZCwgdGhpcy5fbmV4dCk7IH0sXG4gIGluc2VydEJlZm9yZTogZnVuY3Rpb24oY2hpbGQsIG5leHQpIHsgcmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUoY2hpbGQsIG5leHQpOyB9LFxuICBxdWVyeVNlbGVjdG9yOiBmdW5jdGlvbihzZWxlY3RvcikgeyByZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOyB9LFxuICBxdWVyeVNlbGVjdG9yQWxsOiBmdW5jdGlvbihzZWxlY3RvcikgeyByZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOyB9XG59O1xuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufVxuIiwgImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuaW1wb3J0IHtFbnRlck5vZGV9IGZyb20gXCIuL2VudGVyLmpzXCI7XG5pbXBvcnQgYXJyYXkgZnJvbSBcIi4uL2FycmF5LmpzXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4uL2NvbnN0YW50LmpzXCI7XG5cbmZ1bmN0aW9uIGJpbmRJbmRleChwYXJlbnQsIGdyb3VwLCBlbnRlciwgdXBkYXRlLCBleGl0LCBkYXRhKSB7XG4gIHZhciBpID0gMCxcbiAgICAgIG5vZGUsXG4gICAgICBncm91cExlbmd0aCA9IGdyb3VwLmxlbmd0aCxcbiAgICAgIGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aDtcblxuICAvLyBQdXQgYW55IG5vbi1udWxsIG5vZGVzIHRoYXQgZml0IGludG8gdXBkYXRlLlxuICAvLyBQdXQgYW55IG51bGwgbm9kZXMgaW50byBlbnRlci5cbiAgLy8gUHV0IGFueSByZW1haW5pbmcgZGF0YSBpbnRvIGVudGVyLlxuICBmb3IgKDsgaSA8IGRhdGFMZW5ndGg7ICsraSkge1xuICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgIG5vZGUuX19kYXRhX18gPSBkYXRhW2ldO1xuICAgICAgdXBkYXRlW2ldID0gbm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW50ZXJbaV0gPSBuZXcgRW50ZXJOb2RlKHBhcmVudCwgZGF0YVtpXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gUHV0IGFueSBub24tbnVsbCBub2RlcyB0aGF0IGRvblx1MjAxOXQgZml0IGludG8gZXhpdC5cbiAgZm9yICg7IGkgPCBncm91cExlbmd0aDsgKytpKSB7XG4gICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgZXhpdFtpXSA9IG5vZGU7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGJpbmRLZXkocGFyZW50LCBncm91cCwgZW50ZXIsIHVwZGF0ZSwgZXhpdCwgZGF0YSwga2V5KSB7XG4gIHZhciBpLFxuICAgICAgbm9kZSxcbiAgICAgIG5vZGVCeUtleVZhbHVlID0gbmV3IE1hcCxcbiAgICAgIGdyb3VwTGVuZ3RoID0gZ3JvdXAubGVuZ3RoLFxuICAgICAgZGF0YUxlbmd0aCA9IGRhdGEubGVuZ3RoLFxuICAgICAga2V5VmFsdWVzID0gbmV3IEFycmF5KGdyb3VwTGVuZ3RoKSxcbiAgICAgIGtleVZhbHVlO1xuXG4gIC8vIENvbXB1dGUgdGhlIGtleSBmb3IgZWFjaCBub2RlLlxuICAvLyBJZiBtdWx0aXBsZSBub2RlcyBoYXZlIHRoZSBzYW1lIGtleSwgdGhlIGR1cGxpY2F0ZXMgYXJlIGFkZGVkIHRvIGV4aXQuXG4gIGZvciAoaSA9IDA7IGkgPCBncm91cExlbmd0aDsgKytpKSB7XG4gICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAga2V5VmFsdWVzW2ldID0ga2V5VmFsdWUgPSBrZXkuY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCkgKyBcIlwiO1xuICAgICAgaWYgKG5vZGVCeUtleVZhbHVlLmhhcyhrZXlWYWx1ZSkpIHtcbiAgICAgICAgZXhpdFtpXSA9IG5vZGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlQnlLZXlWYWx1ZS5zZXQoa2V5VmFsdWUsIG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENvbXB1dGUgdGhlIGtleSBmb3IgZWFjaCBkYXR1bS5cbiAgLy8gSWYgdGhlcmUgYSBub2RlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGtleSwgam9pbiBhbmQgYWRkIGl0IHRvIHVwZGF0ZS5cbiAgLy8gSWYgdGhlcmUgaXMgbm90IChvciB0aGUga2V5IGlzIGEgZHVwbGljYXRlKSwgYWRkIGl0IHRvIGVudGVyLlxuICBmb3IgKGkgPSAwOyBpIDwgZGF0YUxlbmd0aDsgKytpKSB7XG4gICAga2V5VmFsdWUgPSBrZXkuY2FsbChwYXJlbnQsIGRhdGFbaV0sIGksIGRhdGEpICsgXCJcIjtcbiAgICBpZiAobm9kZSA9IG5vZGVCeUtleVZhbHVlLmdldChrZXlWYWx1ZSkpIHtcbiAgICAgIHVwZGF0ZVtpXSA9IG5vZGU7XG4gICAgICBub2RlLl9fZGF0YV9fID0gZGF0YVtpXTtcbiAgICAgIG5vZGVCeUtleVZhbHVlLmRlbGV0ZShrZXlWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVudGVyW2ldID0gbmV3IEVudGVyTm9kZShwYXJlbnQsIGRhdGFbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFkZCBhbnkgcmVtYWluaW5nIG5vZGVzIHRoYXQgd2VyZSBub3QgYm91bmQgdG8gZGF0YSB0byBleGl0LlxuICBmb3IgKGkgPSAwOyBpIDwgZ3JvdXBMZW5ndGg7ICsraSkge1xuICAgIGlmICgobm9kZSA9IGdyb3VwW2ldKSAmJiAobm9kZUJ5S2V5VmFsdWUuZ2V0KGtleVZhbHVlc1tpXSkgPT09IG5vZGUpKSB7XG4gICAgICBleGl0W2ldID0gbm9kZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZGF0dW0obm9kZSkge1xuICByZXR1cm4gbm9kZS5fX2RhdGFfXztcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBBcnJheS5mcm9tKHRoaXMsIGRhdHVtKTtcblxuICB2YXIgYmluZCA9IGtleSA/IGJpbmRLZXkgOiBiaW5kSW5kZXgsXG4gICAgICBwYXJlbnRzID0gdGhpcy5fcGFyZW50cyxcbiAgICAgIGdyb3VwcyA9IHRoaXMuX2dyb3VwcztcblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHZhbHVlID0gY29uc3RhbnQodmFsdWUpO1xuXG4gIGZvciAodmFyIG0gPSBncm91cHMubGVuZ3RoLCB1cGRhdGUgPSBuZXcgQXJyYXkobSksIGVudGVyID0gbmV3IEFycmF5KG0pLCBleGl0ID0gbmV3IEFycmF5KG0pLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIHZhciBwYXJlbnQgPSBwYXJlbnRzW2pdLFxuICAgICAgICBncm91cCA9IGdyb3Vwc1tqXSxcbiAgICAgICAgZ3JvdXBMZW5ndGggPSBncm91cC5sZW5ndGgsXG4gICAgICAgIGRhdGEgPSBhcnJheSh2YWx1ZS5jYWxsKHBhcmVudCwgcGFyZW50ICYmIHBhcmVudC5fX2RhdGFfXywgaiwgcGFyZW50cykpLFxuICAgICAgICBkYXRhTGVuZ3RoID0gZGF0YS5sZW5ndGgsXG4gICAgICAgIGVudGVyR3JvdXAgPSBlbnRlcltqXSA9IG5ldyBBcnJheShkYXRhTGVuZ3RoKSxcbiAgICAgICAgdXBkYXRlR3JvdXAgPSB1cGRhdGVbal0gPSBuZXcgQXJyYXkoZGF0YUxlbmd0aCksXG4gICAgICAgIGV4aXRHcm91cCA9IGV4aXRbal0gPSBuZXcgQXJyYXkoZ3JvdXBMZW5ndGgpO1xuXG4gICAgYmluZChwYXJlbnQsIGdyb3VwLCBlbnRlckdyb3VwLCB1cGRhdGVHcm91cCwgZXhpdEdyb3VwLCBkYXRhLCBrZXkpO1xuXG4gICAgLy8gTm93IGNvbm5lY3QgdGhlIGVudGVyIG5vZGVzIHRvIHRoZWlyIGZvbGxvd2luZyB1cGRhdGUgbm9kZSwgc3VjaCB0aGF0XG4gICAgLy8gYXBwZW5kQ2hpbGQgY2FuIGluc2VydCB0aGUgbWF0ZXJpYWxpemVkIGVudGVyIG5vZGUgYmVmb3JlIHRoaXMgbm9kZSxcbiAgICAvLyByYXRoZXIgdGhhbiBhdCB0aGUgZW5kIG9mIHRoZSBwYXJlbnQgbm9kZS5cbiAgICBmb3IgKHZhciBpMCA9IDAsIGkxID0gMCwgcHJldmlvdXMsIG5leHQ7IGkwIDwgZGF0YUxlbmd0aDsgKytpMCkge1xuICAgICAgaWYgKHByZXZpb3VzID0gZW50ZXJHcm91cFtpMF0pIHtcbiAgICAgICAgaWYgKGkwID49IGkxKSBpMSA9IGkwICsgMTtcbiAgICAgICAgd2hpbGUgKCEobmV4dCA9IHVwZGF0ZUdyb3VwW2kxXSkgJiYgKytpMSA8IGRhdGFMZW5ndGgpO1xuICAgICAgICBwcmV2aW91cy5fbmV4dCA9IG5leHQgfHwgbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGRhdGUgPSBuZXcgU2VsZWN0aW9uKHVwZGF0ZSwgcGFyZW50cyk7XG4gIHVwZGF0ZS5fZW50ZXIgPSBlbnRlcjtcbiAgdXBkYXRlLl9leGl0ID0gZXhpdDtcbiAgcmV0dXJuIHVwZGF0ZTtcbn1cbiIsICJpbXBvcnQgc3BhcnNlIGZyb20gXCIuL3NwYXJzZS5qc1wiO1xuaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFNlbGVjdGlvbih0aGlzLl9leGl0IHx8IHRoaXMuX2dyb3Vwcy5tYXAoc3BhcnNlKSwgdGhpcy5fcGFyZW50cyk7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ob25lbnRlciwgb251cGRhdGUsIG9uZXhpdCkge1xuICB2YXIgZW50ZXIgPSB0aGlzLmVudGVyKCksIHVwZGF0ZSA9IHRoaXMsIGV4aXQgPSB0aGlzLmV4aXQoKTtcbiAgZW50ZXIgPSB0eXBlb2Ygb25lbnRlciA9PT0gXCJmdW5jdGlvblwiID8gb25lbnRlcihlbnRlcikgOiBlbnRlci5hcHBlbmQob25lbnRlciArIFwiXCIpO1xuICBpZiAob251cGRhdGUgIT0gbnVsbCkgdXBkYXRlID0gb251cGRhdGUodXBkYXRlKTtcbiAgaWYgKG9uZXhpdCA9PSBudWxsKSBleGl0LnJlbW92ZSgpOyBlbHNlIG9uZXhpdChleGl0KTtcbiAgcmV0dXJuIGVudGVyICYmIHVwZGF0ZSA/IGVudGVyLm1lcmdlKHVwZGF0ZSkub3JkZXIoKSA6IHVwZGF0ZTtcbn1cbiIsICJpbXBvcnQge1NlbGVjdGlvbn0gZnJvbSBcIi4vaW5kZXguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0aW9uKSB7XG4gIGlmICghKHNlbGVjdGlvbiBpbnN0YW5jZW9mIFNlbGVjdGlvbikpIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgbWVyZ2VcIik7XG5cbiAgZm9yICh2YXIgZ3JvdXBzMCA9IHRoaXMuX2dyb3VwcywgZ3JvdXBzMSA9IHNlbGVjdGlvbi5fZ3JvdXBzLCBtMCA9IGdyb3VwczAubGVuZ3RoLCBtMSA9IGdyb3VwczEubGVuZ3RoLCBtID0gTWF0aC5taW4obTAsIG0xKSwgbWVyZ2VzID0gbmV3IEFycmF5KG0wKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cDAgPSBncm91cHMwW2pdLCBncm91cDEgPSBncm91cHMxW2pdLCBuID0gZ3JvdXAwLmxlbmd0aCwgbWVyZ2UgPSBtZXJnZXNbal0gPSBuZXcgQXJyYXkobiksIG5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwMFtpXSB8fCBncm91cDFbaV0pIHtcbiAgICAgICAgbWVyZ2VbaV0gPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvciAoOyBqIDwgbTA7ICsraikge1xuICAgIG1lcmdlc1tqXSA9IGdyb3VwczBbal07XG4gIH1cblxuICByZXR1cm4gbmV3IFNlbGVjdGlvbihtZXJnZXMsIHRoaXMuX3BhcmVudHMpO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgaiA9IC0xLCBtID0gZ3JvdXBzLmxlbmd0aDsgKytqIDwgbTspIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgaSA9IGdyb3VwLmxlbmd0aCAtIDEsIG5leHQgPSBncm91cFtpXSwgbm9kZTsgLS1pID49IDA7KSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB7XG4gICAgICAgIGlmIChuZXh0ICYmIG5vZGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24obmV4dCkgXiA0KSBuZXh0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5vZGUsIG5leHQpO1xuICAgICAgICBuZXh0ID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cbiIsICJpbXBvcnQge1NlbGVjdGlvbn0gZnJvbSBcIi4vaW5kZXguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29tcGFyZSkge1xuICBpZiAoIWNvbXBhcmUpIGNvbXBhcmUgPSBhc2NlbmRpbmc7XG5cbiAgZnVuY3Rpb24gY29tcGFyZU5vZGUoYSwgYikge1xuICAgIHJldHVybiBhICYmIGIgPyBjb21wYXJlKGEuX19kYXRhX18sIGIuX19kYXRhX18pIDogIWEgLSAhYjtcbiAgfVxuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIHNvcnRncm91cHMgPSBuZXcgQXJyYXkobSksIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIG4gPSBncm91cC5sZW5ndGgsIHNvcnRncm91cCA9IHNvcnRncm91cHNbal0gPSBuZXcgQXJyYXkobiksIG5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB7XG4gICAgICAgIHNvcnRncm91cFtpXSA9IG5vZGU7XG4gICAgICB9XG4gICAgfVxuICAgIHNvcnRncm91cC5zb3J0KGNvbXBhcmVOb2RlKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHNvcnRncm91cHMsIHRoaXMuX3BhcmVudHMpLm9yZGVyKCk7XG59XG5cbmZ1bmN0aW9uIGFzY2VuZGluZyhhLCBiKSB7XG4gIHJldHVybiBhIDwgYiA/IC0xIDogYSA+IGIgPyAxIDogYSA+PSBiID8gMCA6IE5hTjtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGNhbGxiYWNrID0gYXJndW1lbnRzWzBdO1xuICBhcmd1bWVudHNbMF0gPSB0aGlzO1xuICBjYWxsYmFjay5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdGhpcztcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20odGhpcyk7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBqID0gMCwgbSA9IGdyb3Vwcy5sZW5ndGg7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgaSA9IDAsIG4gPSBncm91cC5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIHZhciBub2RlID0gZ3JvdXBbaV07XG4gICAgICBpZiAobm9kZSkgcmV0dXJuIG5vZGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIGxldCBzaXplID0gMDtcbiAgZm9yIChjb25zdCBub2RlIG9mIHRoaXMpICsrc2l6ZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICByZXR1cm4gc2l6ZTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuICF0aGlzLm5vZGUoKTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjYWxsYmFjaykge1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgaiA9IDAsIG0gPSBncm91cHMubGVuZ3RoOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIGkgPSAwLCBuID0gZ3JvdXAubGVuZ3RoLCBub2RlOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSBjYWxsYmFjay5jYWxsKG5vZGUsIG5vZGUuX19kYXRhX18sIGksIGdyb3VwKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cbiIsICJpbXBvcnQgbmFtZXNwYWNlIGZyb20gXCIuLi9uYW1lc3BhY2UuanNcIjtcblxuZnVuY3Rpb24gYXR0clJlbW92ZShuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0clJlbW92ZU5TKGZ1bGxuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJDb25zdGFudChuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRyQ29uc3RhbnROUyhmdWxsbmFtZSwgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuc2V0QXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsLCB2YWx1ZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJGdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh2ID09IG51bGwpIHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgIGVsc2UgdGhpcy5zZXRBdHRyaWJ1dGUobmFtZSwgdik7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJGdW5jdGlvbk5TKGZ1bGxuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh2ID09IG51bGwpIHRoaXMucmVtb3ZlQXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsKTtcbiAgICBlbHNlIHRoaXMuc2V0QXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsLCB2KTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdmFyIGZ1bGxuYW1lID0gbmFtZXNwYWNlKG5hbWUpO1xuXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHZhciBub2RlID0gdGhpcy5ub2RlKCk7XG4gICAgcmV0dXJuIGZ1bGxuYW1lLmxvY2FsXG4gICAgICAgID8gbm9kZS5nZXRBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwpXG4gICAgICAgIDogbm9kZS5nZXRBdHRyaWJ1dGUoZnVsbG5hbWUpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuZWFjaCgodmFsdWUgPT0gbnVsbFxuICAgICAgPyAoZnVsbG5hbWUubG9jYWwgPyBhdHRyUmVtb3ZlTlMgOiBhdHRyUmVtb3ZlKSA6ICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyAoZnVsbG5hbWUubG9jYWwgPyBhdHRyRnVuY3Rpb25OUyA6IGF0dHJGdW5jdGlvbilcbiAgICAgIDogKGZ1bGxuYW1lLmxvY2FsID8gYXR0ckNvbnN0YW50TlMgOiBhdHRyQ29uc3RhbnQpKSkoZnVsbG5hbWUsIHZhbHVlKSk7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obm9kZSkge1xuICByZXR1cm4gKG5vZGUub3duZXJEb2N1bWVudCAmJiBub2RlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpIC8vIG5vZGUgaXMgYSBOb2RlXG4gICAgICB8fCAobm9kZS5kb2N1bWVudCAmJiBub2RlKSAvLyBub2RlIGlzIGEgV2luZG93XG4gICAgICB8fCBub2RlLmRlZmF1bHRWaWV3OyAvLyBub2RlIGlzIGEgRG9jdW1lbnRcbn1cbiIsICJpbXBvcnQgZGVmYXVsdFZpZXcgZnJvbSBcIi4uL3dpbmRvdy5qc1wiO1xuXG5mdW5jdGlvbiBzdHlsZVJlbW92ZShuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KG5hbWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzdHlsZUNvbnN0YW50KG5hbWUsIHZhbHVlLCBwcmlvcml0eSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCB2YWx1ZSwgcHJpb3JpdHkpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzdHlsZUZ1bmN0aW9uKG5hbWUsIHZhbHVlLCBwcmlvcml0eSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh2ID09IG51bGwpIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobmFtZSk7XG4gICAgZWxzZSB0aGlzLnN0eWxlLnNldFByb3BlcnR5KG5hbWUsIHYsIHByaW9yaXR5KTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUsIHByaW9yaXR5KSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMVxuICAgICAgPyB0aGlzLmVhY2goKHZhbHVlID09IG51bGxcbiAgICAgICAgICAgID8gc3R5bGVSZW1vdmUgOiB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgPyBzdHlsZUZ1bmN0aW9uXG4gICAgICAgICAgICA6IHN0eWxlQ29uc3RhbnQpKG5hbWUsIHZhbHVlLCBwcmlvcml0eSA9PSBudWxsID8gXCJcIiA6IHByaW9yaXR5KSlcbiAgICAgIDogc3R5bGVWYWx1ZSh0aGlzLm5vZGUoKSwgbmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHlsZVZhbHVlKG5vZGUsIG5hbWUpIHtcbiAgcmV0dXJuIG5vZGUuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShuYW1lKVxuICAgICAgfHwgZGVmYXVsdFZpZXcobm9kZSkuZ2V0Q29tcHV0ZWRTdHlsZShub2RlLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpO1xufVxuIiwgImZ1bmN0aW9uIHByb3BlcnR5UmVtb3ZlKG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIGRlbGV0ZSB0aGlzW25hbWVdO1xuICB9O1xufVxuXG5mdW5jdGlvbiBwcm9wZXJ0eUNvbnN0YW50KG5hbWUsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzW25hbWVdID0gdmFsdWU7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHByb3BlcnR5RnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2ID0gdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBpZiAodiA9PSBudWxsKSBkZWxldGUgdGhpc1tuYW1lXTtcbiAgICBlbHNlIHRoaXNbbmFtZV0gPSB2O1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+IDFcbiAgICAgID8gdGhpcy5lYWNoKCh2YWx1ZSA9PSBudWxsXG4gICAgICAgICAgPyBwcm9wZXJ0eVJlbW92ZSA6IHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgPyBwcm9wZXJ0eUZ1bmN0aW9uXG4gICAgICAgICAgOiBwcm9wZXJ0eUNvbnN0YW50KShuYW1lLCB2YWx1ZSkpXG4gICAgICA6IHRoaXMubm9kZSgpW25hbWVdO1xufVxuIiwgImZ1bmN0aW9uIGNsYXNzQXJyYXkoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcudHJpbSgpLnNwbGl0KC9efFxccysvKTtcbn1cblxuZnVuY3Rpb24gY2xhc3NMaXN0KG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUuY2xhc3NMaXN0IHx8IG5ldyBDbGFzc0xpc3Qobm9kZSk7XG59XG5cbmZ1bmN0aW9uIENsYXNzTGlzdChub2RlKSB7XG4gIHRoaXMuX25vZGUgPSBub2RlO1xuICB0aGlzLl9uYW1lcyA9IGNsYXNzQXJyYXkobm9kZS5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKSB8fCBcIlwiKTtcbn1cblxuQ2xhc3NMaXN0LnByb3RvdHlwZSA9IHtcbiAgYWRkOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgdmFyIGkgPSB0aGlzLl9uYW1lcy5pbmRleE9mKG5hbWUpO1xuICAgIGlmIChpIDwgMCkge1xuICAgICAgdGhpcy5fbmFtZXMucHVzaChuYW1lKTtcbiAgICAgIHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgdGhpcy5fbmFtZXMuam9pbihcIiBcIikpO1xuICAgIH1cbiAgfSxcbiAgcmVtb3ZlOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgdmFyIGkgPSB0aGlzLl9uYW1lcy5pbmRleE9mKG5hbWUpO1xuICAgIGlmIChpID49IDApIHtcbiAgICAgIHRoaXMuX25hbWVzLnNwbGljZShpLCAxKTtcbiAgICAgIHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgdGhpcy5fbmFtZXMuam9pbihcIiBcIikpO1xuICAgIH1cbiAgfSxcbiAgY29udGFpbnM6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZihuYW1lKSA+PSAwO1xuICB9XG59O1xuXG5mdW5jdGlvbiBjbGFzc2VkQWRkKG5vZGUsIG5hbWVzKSB7XG4gIHZhciBsaXN0ID0gY2xhc3NMaXN0KG5vZGUpLCBpID0gLTEsIG4gPSBuYW1lcy5sZW5ndGg7XG4gIHdoaWxlICgrK2kgPCBuKSBsaXN0LmFkZChuYW1lc1tpXSk7XG59XG5cbmZ1bmN0aW9uIGNsYXNzZWRSZW1vdmUobm9kZSwgbmFtZXMpIHtcbiAgdmFyIGxpc3QgPSBjbGFzc0xpc3Qobm9kZSksIGkgPSAtMSwgbiA9IG5hbWVzLmxlbmd0aDtcbiAgd2hpbGUgKCsraSA8IG4pIGxpc3QucmVtb3ZlKG5hbWVzW2ldKTtcbn1cblxuZnVuY3Rpb24gY2xhc3NlZFRydWUobmFtZXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIGNsYXNzZWRBZGQodGhpcywgbmFtZXMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjbGFzc2VkRmFsc2UobmFtZXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIGNsYXNzZWRSZW1vdmUodGhpcywgbmFtZXMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjbGFzc2VkRnVuY3Rpb24obmFtZXMsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAodmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKSA/IGNsYXNzZWRBZGQgOiBjbGFzc2VkUmVtb3ZlKSh0aGlzLCBuYW1lcyk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHZhciBuYW1lcyA9IGNsYXNzQXJyYXkobmFtZSArIFwiXCIpO1xuXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHZhciBsaXN0ID0gY2xhc3NMaXN0KHRoaXMubm9kZSgpKSwgaSA9IC0xLCBuID0gbmFtZXMubGVuZ3RoO1xuICAgIHdoaWxlICgrK2kgPCBuKSBpZiAoIWxpc3QuY29udGFpbnMobmFtZXNbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gdGhpcy5lYWNoKCh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyBjbGFzc2VkRnVuY3Rpb24gOiB2YWx1ZVxuICAgICAgPyBjbGFzc2VkVHJ1ZVxuICAgICAgOiBjbGFzc2VkRmFsc2UpKG5hbWVzLCB2YWx1ZSkpO1xufVxuIiwgImZ1bmN0aW9uIHRleHRSZW1vdmUoKSB7XG4gIHRoaXMudGV4dENvbnRlbnQgPSBcIlwiO1xufVxuXG5mdW5jdGlvbiB0ZXh0Q29uc3RhbnQodmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMudGV4dENvbnRlbnQgPSB2YWx1ZTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gdGV4dEZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgdGhpcy50ZXh0Q29udGVudCA9IHYgPT0gbnVsbCA/IFwiXCIgOiB2O1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLmVhY2godmFsdWUgPT0gbnVsbFxuICAgICAgICAgID8gdGV4dFJlbW92ZSA6ICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgID8gdGV4dEZ1bmN0aW9uXG4gICAgICAgICAgOiB0ZXh0Q29uc3RhbnQpKHZhbHVlKSlcbiAgICAgIDogdGhpcy5ub2RlKCkudGV4dENvbnRlbnQ7XG59XG4iLCAiZnVuY3Rpb24gaHRtbFJlbW92ZSgpIHtcbiAgdGhpcy5pbm5lckhUTUwgPSBcIlwiO1xufVxuXG5mdW5jdGlvbiBodG1sQ29uc3RhbnQodmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuaW5uZXJIVE1MID0gdmFsdWU7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGh0bWxGdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIHRoaXMuaW5uZXJIVE1MID0gdiA9PSBudWxsID8gXCJcIiA6IHY7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoXG4gICAgICA/IHRoaXMuZWFjaCh2YWx1ZSA9PSBudWxsXG4gICAgICAgICAgPyBodG1sUmVtb3ZlIDogKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgPyBodG1sRnVuY3Rpb25cbiAgICAgICAgICA6IGh0bWxDb25zdGFudCkodmFsdWUpKVxuICAgICAgOiB0aGlzLm5vZGUoKS5pbm5lckhUTUw7XG59XG4iLCAiZnVuY3Rpb24gcmFpc2UoKSB7XG4gIGlmICh0aGlzLm5leHRTaWJsaW5nKSB0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5lYWNoKHJhaXNlKTtcbn1cbiIsICJmdW5jdGlvbiBsb3dlcigpIHtcbiAgaWYgKHRoaXMucHJldmlvdXNTaWJsaW5nKSB0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsIHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmVhY2gobG93ZXIpO1xufVxuIiwgImltcG9ydCBjcmVhdG9yIGZyb20gXCIuLi9jcmVhdG9yLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGNyZWF0ZSA9IHR5cGVvZiBuYW1lID09PSBcImZ1bmN0aW9uXCIgPyBuYW1lIDogY3JlYXRvcihuYW1lKTtcbiAgcmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmFwcGVuZENoaWxkKGNyZWF0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgfSk7XG59XG4iLCAiaW1wb3J0IGNyZWF0b3IgZnJvbSBcIi4uL2NyZWF0b3IuanNcIjtcbmltcG9ydCBzZWxlY3RvciBmcm9tIFwiLi4vc2VsZWN0b3IuanNcIjtcblxuZnVuY3Rpb24gY29uc3RhbnROdWxsKCkge1xuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgYmVmb3JlKSB7XG4gIHZhciBjcmVhdGUgPSB0eXBlb2YgbmFtZSA9PT0gXCJmdW5jdGlvblwiID8gbmFtZSA6IGNyZWF0b3IobmFtZSksXG4gICAgICBzZWxlY3QgPSBiZWZvcmUgPT0gbnVsbCA/IGNvbnN0YW50TnVsbCA6IHR5cGVvZiBiZWZvcmUgPT09IFwiZnVuY3Rpb25cIiA/IGJlZm9yZSA6IHNlbGVjdG9yKGJlZm9yZSk7XG4gIHJldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUoY3JlYXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHNlbGVjdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IG51bGwpO1xuICB9KTtcbn1cbiIsICJmdW5jdGlvbiByZW1vdmUoKSB7XG4gIHZhciBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XG4gIGlmIChwYXJlbnQpIHBhcmVudC5yZW1vdmVDaGlsZCh0aGlzKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmVhY2gocmVtb3ZlKTtcbn1cbiIsICJmdW5jdGlvbiBzZWxlY3Rpb25fY2xvbmVTaGFsbG93KCkge1xuICB2YXIgY2xvbmUgPSB0aGlzLmNsb25lTm9kZShmYWxzZSksIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcbiAgcmV0dXJuIHBhcmVudCA/IHBhcmVudC5pbnNlcnRCZWZvcmUoY2xvbmUsIHRoaXMubmV4dFNpYmxpbmcpIDogY2xvbmU7XG59XG5cbmZ1bmN0aW9uIHNlbGVjdGlvbl9jbG9uZURlZXAoKSB7XG4gIHZhciBjbG9uZSA9IHRoaXMuY2xvbmVOb2RlKHRydWUpLCBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XG4gIHJldHVybiBwYXJlbnQgPyBwYXJlbnQuaW5zZXJ0QmVmb3JlKGNsb25lLCB0aGlzLm5leHRTaWJsaW5nKSA6IGNsb25lO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihkZWVwKSB7XG4gIHJldHVybiB0aGlzLnNlbGVjdChkZWVwID8gc2VsZWN0aW9uX2Nsb25lRGVlcCA6IHNlbGVjdGlvbl9jbG9uZVNoYWxsb3cpO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoXG4gICAgICA/IHRoaXMucHJvcGVydHkoXCJfX2RhdGFfX1wiLCB2YWx1ZSlcbiAgICAgIDogdGhpcy5ub2RlKCkuX19kYXRhX187XG59XG4iLCAiZnVuY3Rpb24gY29udGV4dExpc3RlbmVyKGxpc3RlbmVyKSB7XG4gIHJldHVybiBmdW5jdGlvbihldmVudCkge1xuICAgIGxpc3RlbmVyLmNhbGwodGhpcywgZXZlbnQsIHRoaXMuX19kYXRhX18pO1xuICB9O1xufVxuXG5mdW5jdGlvbiBwYXJzZVR5cGVuYW1lcyh0eXBlbmFtZXMpIHtcbiAgcmV0dXJuIHR5cGVuYW1lcy50cmltKCkuc3BsaXQoL158XFxzKy8pLm1hcChmdW5jdGlvbih0KSB7XG4gICAgdmFyIG5hbWUgPSBcIlwiLCBpID0gdC5pbmRleE9mKFwiLlwiKTtcbiAgICBpZiAoaSA+PSAwKSBuYW1lID0gdC5zbGljZShpICsgMSksIHQgPSB0LnNsaWNlKDAsIGkpO1xuICAgIHJldHVybiB7dHlwZTogdCwgbmFtZTogbmFtZX07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvblJlbW92ZSh0eXBlbmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIG9uID0gdGhpcy5fX29uO1xuICAgIGlmICghb24pIHJldHVybjtcbiAgICBmb3IgKHZhciBqID0gMCwgaSA9IC0xLCBtID0gb24ubGVuZ3RoLCBvOyBqIDwgbTsgKytqKSB7XG4gICAgICBpZiAobyA9IG9uW2pdLCAoIXR5cGVuYW1lLnR5cGUgfHwgby50eXBlID09PSB0eXBlbmFtZS50eXBlKSAmJiBvLm5hbWUgPT09IHR5cGVuYW1lLm5hbWUpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG8udHlwZSwgby5saXN0ZW5lciwgby5vcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uWysraV0gPSBvO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoKytpKSBvbi5sZW5ndGggPSBpO1xuICAgIGVsc2UgZGVsZXRlIHRoaXMuX19vbjtcbiAgfTtcbn1cblxuZnVuY3Rpb24gb25BZGQodHlwZW5hbWUsIHZhbHVlLCBvcHRpb25zKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgb24gPSB0aGlzLl9fb24sIG8sIGxpc3RlbmVyID0gY29udGV4dExpc3RlbmVyKHZhbHVlKTtcbiAgICBpZiAob24pIGZvciAodmFyIGogPSAwLCBtID0gb24ubGVuZ3RoOyBqIDwgbTsgKytqKSB7XG4gICAgICBpZiAoKG8gPSBvbltqXSkudHlwZSA9PT0gdHlwZW5hbWUudHlwZSAmJiBvLm5hbWUgPT09IHR5cGVuYW1lLm5hbWUpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG8udHlwZSwgby5saXN0ZW5lciwgby5vcHRpb25zKTtcbiAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKG8udHlwZSwgby5saXN0ZW5lciA9IGxpc3RlbmVyLCBvLm9wdGlvbnMgPSBvcHRpb25zKTtcbiAgICAgICAgby52YWx1ZSA9IHZhbHVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcih0eXBlbmFtZS50eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gICAgbyA9IHt0eXBlOiB0eXBlbmFtZS50eXBlLCBuYW1lOiB0eXBlbmFtZS5uYW1lLCB2YWx1ZTogdmFsdWUsIGxpc3RlbmVyOiBsaXN0ZW5lciwgb3B0aW9uczogb3B0aW9uc307XG4gICAgaWYgKCFvbikgdGhpcy5fX29uID0gW29dO1xuICAgIGVsc2Ugb24ucHVzaChvKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odHlwZW5hbWUsIHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciB0eXBlbmFtZXMgPSBwYXJzZVR5cGVuYW1lcyh0eXBlbmFtZSArIFwiXCIpLCBpLCBuID0gdHlwZW5hbWVzLmxlbmd0aCwgdDtcblxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB2YXIgb24gPSB0aGlzLm5vZGUoKS5fX29uO1xuICAgIGlmIChvbikgZm9yICh2YXIgaiA9IDAsIG0gPSBvbi5sZW5ndGgsIG87IGogPCBtOyArK2opIHtcbiAgICAgIGZvciAoaSA9IDAsIG8gPSBvbltqXTsgaSA8IG47ICsraSkge1xuICAgICAgICBpZiAoKHQgPSB0eXBlbmFtZXNbaV0pLnR5cGUgPT09IG8udHlwZSAmJiB0Lm5hbWUgPT09IG8ubmFtZSkge1xuICAgICAgICAgIHJldHVybiBvLnZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIG9uID0gdmFsdWUgPyBvbkFkZCA6IG9uUmVtb3ZlO1xuICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB0aGlzLmVhY2gob24odHlwZW5hbWVzW2ldLCB2YWx1ZSwgb3B0aW9ucykpO1xuICByZXR1cm4gdGhpcztcbn1cbiIsICJpbXBvcnQgZGVmYXVsdFZpZXcgZnJvbSBcIi4uL3dpbmRvdy5qc1wiO1xuXG5mdW5jdGlvbiBkaXNwYXRjaEV2ZW50KG5vZGUsIHR5cGUsIHBhcmFtcykge1xuICB2YXIgd2luZG93ID0gZGVmYXVsdFZpZXcobm9kZSksXG4gICAgICBldmVudCA9IHdpbmRvdy5DdXN0b21FdmVudDtcblxuICBpZiAodHlwZW9mIGV2ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBldmVudCA9IG5ldyBldmVudCh0eXBlLCBwYXJhbXMpO1xuICB9IGVsc2Uge1xuICAgIGV2ZW50ID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiRXZlbnRcIik7XG4gICAgaWYgKHBhcmFtcykgZXZlbnQuaW5pdEV2ZW50KHR5cGUsIHBhcmFtcy5idWJibGVzLCBwYXJhbXMuY2FuY2VsYWJsZSksIGV2ZW50LmRldGFpbCA9IHBhcmFtcy5kZXRhaWw7XG4gICAgZWxzZSBldmVudC5pbml0RXZlbnQodHlwZSwgZmFsc2UsIGZhbHNlKTtcbiAgfVxuXG4gIG5vZGUuZGlzcGF0Y2hFdmVudChldmVudCk7XG59XG5cbmZ1bmN0aW9uIGRpc3BhdGNoQ29uc3RhbnQodHlwZSwgcGFyYW1zKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZGlzcGF0Y2hFdmVudCh0aGlzLCB0eXBlLCBwYXJhbXMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBkaXNwYXRjaEZ1bmN0aW9uKHR5cGUsIHBhcmFtcykge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoRXZlbnQodGhpcywgdHlwZSwgcGFyYW1zLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih0eXBlLCBwYXJhbXMpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaCgodHlwZW9mIHBhcmFtcyA9PT0gXCJmdW5jdGlvblwiXG4gICAgICA/IGRpc3BhdGNoRnVuY3Rpb25cbiAgICAgIDogZGlzcGF0Y2hDb25zdGFudCkodHlwZSwgcGFyYW1zKSk7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24qKCkge1xuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIGogPSAwLCBtID0gZ3JvdXBzLmxlbmd0aDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBpID0gMCwgbiA9IGdyb3VwLmxlbmd0aCwgbm9kZTsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cFtpXSkgeWllbGQgbm9kZTtcbiAgICB9XG4gIH1cbn1cbiIsICJpbXBvcnQgc2VsZWN0aW9uX3NlbGVjdCBmcm9tIFwiLi9zZWxlY3QuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fc2VsZWN0QWxsIGZyb20gXCIuL3NlbGVjdEFsbC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9zZWxlY3RDaGlsZCBmcm9tIFwiLi9zZWxlY3RDaGlsZC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9zZWxlY3RDaGlsZHJlbiBmcm9tIFwiLi9zZWxlY3RDaGlsZHJlbi5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9maWx0ZXIgZnJvbSBcIi4vZmlsdGVyLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2RhdGEgZnJvbSBcIi4vZGF0YS5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9lbnRlciBmcm9tIFwiLi9lbnRlci5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9leGl0IGZyb20gXCIuL2V4aXQuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fam9pbiBmcm9tIFwiLi9qb2luLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX21lcmdlIGZyb20gXCIuL21lcmdlLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX29yZGVyIGZyb20gXCIuL29yZGVyLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3NvcnQgZnJvbSBcIi4vc29ydC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9jYWxsIGZyb20gXCIuL2NhbGwuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fbm9kZXMgZnJvbSBcIi4vbm9kZXMuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fbm9kZSBmcm9tIFwiLi9ub2RlLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3NpemUgZnJvbSBcIi4vc2l6ZS5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9lbXB0eSBmcm9tIFwiLi9lbXB0eS5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9lYWNoIGZyb20gXCIuL2VhY2guanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fYXR0ciBmcm9tIFwiLi9hdHRyLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3N0eWxlIGZyb20gXCIuL3N0eWxlLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3Byb3BlcnR5IGZyb20gXCIuL3Byb3BlcnR5LmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2NsYXNzZWQgZnJvbSBcIi4vY2xhc3NlZC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl90ZXh0IGZyb20gXCIuL3RleHQuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25faHRtbCBmcm9tIFwiLi9odG1sLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3JhaXNlIGZyb20gXCIuL3JhaXNlLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2xvd2VyIGZyb20gXCIuL2xvd2VyLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2FwcGVuZCBmcm9tIFwiLi9hcHBlbmQuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25faW5zZXJ0IGZyb20gXCIuL2luc2VydC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9yZW1vdmUgZnJvbSBcIi4vcmVtb3ZlLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2Nsb25lIGZyb20gXCIuL2Nsb25lLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2RhdHVtIGZyb20gXCIuL2RhdHVtLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX29uIGZyb20gXCIuL29uLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2Rpc3BhdGNoIGZyb20gXCIuL2Rpc3BhdGNoLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2l0ZXJhdG9yIGZyb20gXCIuL2l0ZXJhdG9yLmpzXCI7XG5cbmV4cG9ydCB2YXIgcm9vdCA9IFtudWxsXTtcblxuZXhwb3J0IGZ1bmN0aW9uIFNlbGVjdGlvbihncm91cHMsIHBhcmVudHMpIHtcbiAgdGhpcy5fZ3JvdXBzID0gZ3JvdXBzO1xuICB0aGlzLl9wYXJlbnRzID0gcGFyZW50cztcbn1cblxuZnVuY3Rpb24gc2VsZWN0aW9uKCkge1xuICByZXR1cm4gbmV3IFNlbGVjdGlvbihbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLCByb290KTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0aW9uX3NlbGVjdGlvbigpIHtcbiAgcmV0dXJuIHRoaXM7XG59XG5cblNlbGVjdGlvbi5wcm90b3R5cGUgPSBzZWxlY3Rpb24ucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogU2VsZWN0aW9uLFxuICBzZWxlY3Q6IHNlbGVjdGlvbl9zZWxlY3QsXG4gIHNlbGVjdEFsbDogc2VsZWN0aW9uX3NlbGVjdEFsbCxcbiAgc2VsZWN0Q2hpbGQ6IHNlbGVjdGlvbl9zZWxlY3RDaGlsZCxcbiAgc2VsZWN0Q2hpbGRyZW46IHNlbGVjdGlvbl9zZWxlY3RDaGlsZHJlbixcbiAgZmlsdGVyOiBzZWxlY3Rpb25fZmlsdGVyLFxuICBkYXRhOiBzZWxlY3Rpb25fZGF0YSxcbiAgZW50ZXI6IHNlbGVjdGlvbl9lbnRlcixcbiAgZXhpdDogc2VsZWN0aW9uX2V4aXQsXG4gIGpvaW46IHNlbGVjdGlvbl9qb2luLFxuICBtZXJnZTogc2VsZWN0aW9uX21lcmdlLFxuICBzZWxlY3Rpb246IHNlbGVjdGlvbl9zZWxlY3Rpb24sXG4gIG9yZGVyOiBzZWxlY3Rpb25fb3JkZXIsXG4gIHNvcnQ6IHNlbGVjdGlvbl9zb3J0LFxuICBjYWxsOiBzZWxlY3Rpb25fY2FsbCxcbiAgbm9kZXM6IHNlbGVjdGlvbl9ub2RlcyxcbiAgbm9kZTogc2VsZWN0aW9uX25vZGUsXG4gIHNpemU6IHNlbGVjdGlvbl9zaXplLFxuICBlbXB0eTogc2VsZWN0aW9uX2VtcHR5LFxuICBlYWNoOiBzZWxlY3Rpb25fZWFjaCxcbiAgYXR0cjogc2VsZWN0aW9uX2F0dHIsXG4gIHN0eWxlOiBzZWxlY3Rpb25fc3R5bGUsXG4gIHByb3BlcnR5OiBzZWxlY3Rpb25fcHJvcGVydHksXG4gIGNsYXNzZWQ6IHNlbGVjdGlvbl9jbGFzc2VkLFxuICB0ZXh0OiBzZWxlY3Rpb25fdGV4dCxcbiAgaHRtbDogc2VsZWN0aW9uX2h0bWwsXG4gIHJhaXNlOiBzZWxlY3Rpb25fcmFpc2UsXG4gIGxvd2VyOiBzZWxlY3Rpb25fbG93ZXIsXG4gIGFwcGVuZDogc2VsZWN0aW9uX2FwcGVuZCxcbiAgaW5zZXJ0OiBzZWxlY3Rpb25faW5zZXJ0LFxuICByZW1vdmU6IHNlbGVjdGlvbl9yZW1vdmUsXG4gIGNsb25lOiBzZWxlY3Rpb25fY2xvbmUsXG4gIGRhdHVtOiBzZWxlY3Rpb25fZGF0dW0sXG4gIG9uOiBzZWxlY3Rpb25fb24sXG4gIGRpc3BhdGNoOiBzZWxlY3Rpb25fZGlzcGF0Y2gsXG4gIFtTeW1ib2wuaXRlcmF0b3JdOiBzZWxlY3Rpb25faXRlcmF0b3Jcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHNlbGVjdGlvbjtcbiIsICJpbXBvcnQge1NlbGVjdGlvbiwgcm9vdH0gZnJvbSBcIi4vc2VsZWN0aW9uL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gIHJldHVybiB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCJcbiAgICAgID8gbmV3IFNlbGVjdGlvbihbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpXV0sIFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKVxuICAgICAgOiBuZXcgU2VsZWN0aW9uKFtbc2VsZWN0b3JdXSwgcm9vdCk7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZXZlbnQpIHtcbiAgbGV0IHNvdXJjZUV2ZW50O1xuICB3aGlsZSAoc291cmNlRXZlbnQgPSBldmVudC5zb3VyY2VFdmVudCkgZXZlbnQgPSBzb3VyY2VFdmVudDtcbiAgcmV0dXJuIGV2ZW50O1xufVxuIiwgImltcG9ydCBzb3VyY2VFdmVudCBmcm9tIFwiLi9zb3VyY2VFdmVudC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihldmVudCwgbm9kZSkge1xuICBldmVudCA9IHNvdXJjZUV2ZW50KGV2ZW50KTtcbiAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkgbm9kZSA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gIGlmIChub2RlKSB7XG4gICAgdmFyIHN2ZyA9IG5vZGUub3duZXJTVkdFbGVtZW50IHx8IG5vZGU7XG4gICAgaWYgKHN2Zy5jcmVhdGVTVkdQb2ludCkge1xuICAgICAgdmFyIHBvaW50ID0gc3ZnLmNyZWF0ZVNWR1BvaW50KCk7XG4gICAgICBwb2ludC54ID0gZXZlbnQuY2xpZW50WCwgcG9pbnQueSA9IGV2ZW50LmNsaWVudFk7XG4gICAgICBwb2ludCA9IHBvaW50Lm1hdHJpeFRyYW5zZm9ybShub2RlLmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSk7XG4gICAgICByZXR1cm4gW3BvaW50LngsIHBvaW50LnldO1xuICAgIH1cbiAgICBpZiAobm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QpIHtcbiAgICAgIHZhciByZWN0ID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIHJldHVybiBbZXZlbnQuY2xpZW50WCAtIHJlY3QubGVmdCAtIG5vZGUuY2xpZW50TGVmdCwgZXZlbnQuY2xpZW50WSAtIHJlY3QudG9wIC0gbm9kZS5jbGllbnRUb3BdO1xuICAgIH1cbiAgfVxuICByZXR1cm4gW2V2ZW50LnBhZ2VYLCBldmVudC5wYWdlWV07XG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIG5vcHJvcGFnYXRpb24oZXZlbnQpIHtcbiAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGV2ZW50KSB7XG4gIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xufVxuIiwgImltcG9ydCB7c2VsZWN0fSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5pbXBvcnQgbm9ldmVudCBmcm9tIFwiLi9ub2V2ZW50LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZpZXcpIHtcbiAgdmFyIHJvb3QgPSB2aWV3LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxcbiAgICAgIHNlbGVjdGlvbiA9IHNlbGVjdCh2aWV3KS5vbihcImRyYWdzdGFydC5kcmFnXCIsIG5vZXZlbnQsIHRydWUpO1xuICBpZiAoXCJvbnNlbGVjdHN0YXJ0XCIgaW4gcm9vdCkge1xuICAgIHNlbGVjdGlvbi5vbihcInNlbGVjdHN0YXJ0LmRyYWdcIiwgbm9ldmVudCwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgcm9vdC5fX25vc2VsZWN0ID0gcm9vdC5zdHlsZS5Nb3pVc2VyU2VsZWN0O1xuICAgIHJvb3Quc3R5bGUuTW96VXNlclNlbGVjdCA9IFwibm9uZVwiO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB5ZXNkcmFnKHZpZXcsIG5vY2xpY2spIHtcbiAgdmFyIHJvb3QgPSB2aWV3LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxcbiAgICAgIHNlbGVjdGlvbiA9IHNlbGVjdCh2aWV3KS5vbihcImRyYWdzdGFydC5kcmFnXCIsIG51bGwpO1xuICBpZiAobm9jbGljaykge1xuICAgIHNlbGVjdGlvbi5vbihcImNsaWNrLmRyYWdcIiwgbm9ldmVudCwgdHJ1ZSk7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2VsZWN0aW9uLm9uKFwiY2xpY2suZHJhZ1wiLCBudWxsKTsgfSwgMCk7XG4gIH1cbiAgaWYgKFwib25zZWxlY3RzdGFydFwiIGluIHJvb3QpIHtcbiAgICBzZWxlY3Rpb24ub24oXCJzZWxlY3RzdGFydC5kcmFnXCIsIG51bGwpO1xuICB9IGVsc2Uge1xuICAgIHJvb3Quc3R5bGUuTW96VXNlclNlbGVjdCA9IHJvb3QuX19ub3NlbGVjdDtcbiAgICBkZWxldGUgcm9vdC5fX25vc2VsZWN0O1xuICB9XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgeCA9PiAoKSA9PiB4O1xuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERyYWdFdmVudCh0eXBlLCB7XG4gIHNvdXJjZUV2ZW50LFxuICBzdWJqZWN0LFxuICB0YXJnZXQsXG4gIGlkZW50aWZpZXIsXG4gIGFjdGl2ZSxcbiAgeCwgeSwgZHgsIGR5LFxuICBkaXNwYXRjaFxufSkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLCB7XG4gICAgdHlwZToge3ZhbHVlOiB0eXBlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWV9LFxuICAgIHNvdXJjZUV2ZW50OiB7dmFsdWU6IHNvdXJjZUV2ZW50LCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWV9LFxuICAgIHN1YmplY3Q6IHt2YWx1ZTogc3ViamVjdCwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlfSxcbiAgICB0YXJnZXQ6IHt2YWx1ZTogdGFyZ2V0LCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWV9LFxuICAgIGlkZW50aWZpZXI6IHt2YWx1ZTogaWRlbnRpZmllciwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlfSxcbiAgICBhY3RpdmU6IHt2YWx1ZTogYWN0aXZlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWV9LFxuICAgIHg6IHt2YWx1ZTogeCwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlfSxcbiAgICB5OiB7dmFsdWU6IHksIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0sXG4gICAgZHg6IHt2YWx1ZTogZHgsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0sXG4gICAgZHk6IHt2YWx1ZTogZHksIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0sXG4gICAgXzoge3ZhbHVlOiBkaXNwYXRjaH1cbiAgfSk7XG59XG5cbkRyYWdFdmVudC5wcm90b3R5cGUub24gPSBmdW5jdGlvbigpIHtcbiAgdmFyIHZhbHVlID0gdGhpcy5fLm9uLmFwcGx5KHRoaXMuXywgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHZhbHVlID09PSB0aGlzLl8gPyB0aGlzIDogdmFsdWU7XG59O1xuIiwgImltcG9ydCB7ZGlzcGF0Y2h9IGZyb20gXCJkMy1kaXNwYXRjaFwiO1xuaW1wb3J0IHtzZWxlY3QsIHBvaW50ZXJ9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCBub2RyYWcsIHt5ZXNkcmFnfSBmcm9tIFwiLi9ub2RyYWcuanNcIjtcbmltcG9ydCBub2V2ZW50LCB7bm9wcm9wYWdhdGlvbn0gZnJvbSBcIi4vbm9ldmVudC5qc1wiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5pbXBvcnQgRHJhZ0V2ZW50IGZyb20gXCIuL2V2ZW50LmpzXCI7XG5cbi8vIElnbm9yZSByaWdodC1jbGljaywgc2luY2UgdGhhdCBzaG91bGQgb3BlbiB0aGUgY29udGV4dCBtZW51LlxuZnVuY3Rpb24gZGVmYXVsdEZpbHRlcihldmVudCkge1xuICByZXR1cm4gIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50LmJ1dHRvbjtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdENvbnRhaW5lcigpIHtcbiAgcmV0dXJuIHRoaXMucGFyZW50Tm9kZTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFN1YmplY3QoZXZlbnQsIGQpIHtcbiAgcmV0dXJuIGQgPT0gbnVsbCA/IHt4OiBldmVudC54LCB5OiBldmVudC55fSA6IGQ7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRUb3VjaGFibGUoKSB7XG4gIHJldHVybiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMgfHwgKFwib250b3VjaHN0YXJ0XCIgaW4gdGhpcyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgZmlsdGVyID0gZGVmYXVsdEZpbHRlcixcbiAgICAgIGNvbnRhaW5lciA9IGRlZmF1bHRDb250YWluZXIsXG4gICAgICBzdWJqZWN0ID0gZGVmYXVsdFN1YmplY3QsXG4gICAgICB0b3VjaGFibGUgPSBkZWZhdWx0VG91Y2hhYmxlLFxuICAgICAgZ2VzdHVyZXMgPSB7fSxcbiAgICAgIGxpc3RlbmVycyA9IGRpc3BhdGNoKFwic3RhcnRcIiwgXCJkcmFnXCIsIFwiZW5kXCIpLFxuICAgICAgYWN0aXZlID0gMCxcbiAgICAgIG1vdXNlZG93bngsXG4gICAgICBtb3VzZWRvd255LFxuICAgICAgbW91c2Vtb3ZpbmcsXG4gICAgICB0b3VjaGVuZGluZyxcbiAgICAgIGNsaWNrRGlzdGFuY2UyID0gMDtcblxuICBmdW5jdGlvbiBkcmFnKHNlbGVjdGlvbikge1xuICAgIHNlbGVjdGlvblxuICAgICAgICAub24oXCJtb3VzZWRvd24uZHJhZ1wiLCBtb3VzZWRvd25lZClcbiAgICAgIC5maWx0ZXIodG91Y2hhYmxlKVxuICAgICAgICAub24oXCJ0b3VjaHN0YXJ0LmRyYWdcIiwgdG91Y2hzdGFydGVkKVxuICAgICAgICAub24oXCJ0b3VjaG1vdmUuZHJhZ1wiLCB0b3VjaG1vdmVkKVxuICAgICAgICAub24oXCJ0b3VjaGVuZC5kcmFnIHRvdWNoY2FuY2VsLmRyYWdcIiwgdG91Y2hlbmRlZClcbiAgICAgICAgLnN0eWxlKFwidG91Y2gtYWN0aW9uXCIsIFwibm9uZVwiKVxuICAgICAgICAuc3R5bGUoXCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3JcIiwgXCJyZ2JhKDAsMCwwLDApXCIpO1xuICB9XG5cbiAgZnVuY3Rpb24gbW91c2Vkb3duZWQoZXZlbnQsIGQpIHtcbiAgICBpZiAodG91Y2hlbmRpbmcgfHwgIWZpbHRlci5jYWxsKHRoaXMsIGV2ZW50LCBkKSkgcmV0dXJuO1xuICAgIHZhciBnZXN0dXJlID0gYmVmb3Jlc3RhcnQodGhpcywgY29udGFpbmVyLmNhbGwodGhpcywgZXZlbnQsIGQpLCBldmVudCwgZCwgXCJtb3VzZVwiKTtcbiAgICBpZiAoIWdlc3R1cmUpIHJldHVybjtcbiAgICBzZWxlY3QoZXZlbnQudmlldykub24oXCJtb3VzZW1vdmUuZHJhZ1wiLCBtb3VzZW1vdmVkLCB0cnVlKS5vbihcIm1vdXNldXAuZHJhZ1wiLCBtb3VzZXVwcGVkLCB0cnVlKTtcbiAgICBub2RyYWcoZXZlbnQudmlldyk7XG4gICAgbm9wcm9wYWdhdGlvbihldmVudCk7XG4gICAgbW91c2Vtb3ZpbmcgPSBmYWxzZTtcbiAgICBtb3VzZWRvd254ID0gZXZlbnQuY2xpZW50WDtcbiAgICBtb3VzZWRvd255ID0gZXZlbnQuY2xpZW50WTtcbiAgICBnZXN0dXJlKFwic3RhcnRcIiwgZXZlbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gbW91c2Vtb3ZlZChldmVudCkge1xuICAgIG5vZXZlbnQoZXZlbnQpO1xuICAgIGlmICghbW91c2Vtb3ZpbmcpIHtcbiAgICAgIHZhciBkeCA9IGV2ZW50LmNsaWVudFggLSBtb3VzZWRvd254LCBkeSA9IGV2ZW50LmNsaWVudFkgLSBtb3VzZWRvd255O1xuICAgICAgbW91c2Vtb3ZpbmcgPSBkeCAqIGR4ICsgZHkgKiBkeSA+IGNsaWNrRGlzdGFuY2UyO1xuICAgIH1cbiAgICBnZXN0dXJlcy5tb3VzZShcImRyYWdcIiwgZXZlbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gbW91c2V1cHBlZChldmVudCkge1xuICAgIHNlbGVjdChldmVudC52aWV3KS5vbihcIm1vdXNlbW92ZS5kcmFnIG1vdXNldXAuZHJhZ1wiLCBudWxsKTtcbiAgICB5ZXNkcmFnKGV2ZW50LnZpZXcsIG1vdXNlbW92aW5nKTtcbiAgICBub2V2ZW50KGV2ZW50KTtcbiAgICBnZXN0dXJlcy5tb3VzZShcImVuZFwiLCBldmVudCk7XG4gIH1cblxuICBmdW5jdGlvbiB0b3VjaHN0YXJ0ZWQoZXZlbnQsIGQpIHtcbiAgICBpZiAoIWZpbHRlci5jYWxsKHRoaXMsIGV2ZW50LCBkKSkgcmV0dXJuO1xuICAgIHZhciB0b3VjaGVzID0gZXZlbnQuY2hhbmdlZFRvdWNoZXMsXG4gICAgICAgIGMgPSBjb250YWluZXIuY2FsbCh0aGlzLCBldmVudCwgZCksXG4gICAgICAgIG4gPSB0b3VjaGVzLmxlbmd0aCwgaSwgZ2VzdHVyZTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChnZXN0dXJlID0gYmVmb3Jlc3RhcnQodGhpcywgYywgZXZlbnQsIGQsIHRvdWNoZXNbaV0uaWRlbnRpZmllciwgdG91Y2hlc1tpXSkpIHtcbiAgICAgICAgbm9wcm9wYWdhdGlvbihldmVudCk7XG4gICAgICAgIGdlc3R1cmUoXCJzdGFydFwiLCBldmVudCwgdG91Y2hlc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdG91Y2htb3ZlZChldmVudCkge1xuICAgIHZhciB0b3VjaGVzID0gZXZlbnQuY2hhbmdlZFRvdWNoZXMsXG4gICAgICAgIG4gPSB0b3VjaGVzLmxlbmd0aCwgaSwgZ2VzdHVyZTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChnZXN0dXJlID0gZ2VzdHVyZXNbdG91Y2hlc1tpXS5pZGVudGlmaWVyXSkge1xuICAgICAgICBub2V2ZW50KGV2ZW50KTtcbiAgICAgICAgZ2VzdHVyZShcImRyYWdcIiwgZXZlbnQsIHRvdWNoZXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHRvdWNoZW5kZWQoZXZlbnQpIHtcbiAgICB2YXIgdG91Y2hlcyA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzLFxuICAgICAgICBuID0gdG91Y2hlcy5sZW5ndGgsIGksIGdlc3R1cmU7XG5cbiAgICBpZiAodG91Y2hlbmRpbmcpIGNsZWFyVGltZW91dCh0b3VjaGVuZGluZyk7XG4gICAgdG91Y2hlbmRpbmcgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB0b3VjaGVuZGluZyA9IG51bGw7IH0sIDUwMCk7IC8vIEdob3N0IGNsaWNrcyBhcmUgZGVsYXllZCFcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAoZ2VzdHVyZSA9IGdlc3R1cmVzW3RvdWNoZXNbaV0uaWRlbnRpZmllcl0pIHtcbiAgICAgICAgbm9wcm9wYWdhdGlvbihldmVudCk7XG4gICAgICAgIGdlc3R1cmUoXCJlbmRcIiwgZXZlbnQsIHRvdWNoZXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGJlZm9yZXN0YXJ0KHRoYXQsIGNvbnRhaW5lciwgZXZlbnQsIGQsIGlkZW50aWZpZXIsIHRvdWNoKSB7XG4gICAgdmFyIGRpc3BhdGNoID0gbGlzdGVuZXJzLmNvcHkoKSxcbiAgICAgICAgcCA9IHBvaW50ZXIodG91Y2ggfHwgZXZlbnQsIGNvbnRhaW5lciksIGR4LCBkeSxcbiAgICAgICAgcztcblxuICAgIGlmICgocyA9IHN1YmplY3QuY2FsbCh0aGF0LCBuZXcgRHJhZ0V2ZW50KFwiYmVmb3Jlc3RhcnRcIiwge1xuICAgICAgICBzb3VyY2VFdmVudDogZXZlbnQsXG4gICAgICAgIHRhcmdldDogZHJhZyxcbiAgICAgICAgaWRlbnRpZmllcixcbiAgICAgICAgYWN0aXZlLFxuICAgICAgICB4OiBwWzBdLFxuICAgICAgICB5OiBwWzFdLFxuICAgICAgICBkeDogMCxcbiAgICAgICAgZHk6IDAsXG4gICAgICAgIGRpc3BhdGNoXG4gICAgICB9KSwgZCkpID09IG51bGwpIHJldHVybjtcblxuICAgIGR4ID0gcy54IC0gcFswXSB8fCAwO1xuICAgIGR5ID0gcy55IC0gcFsxXSB8fCAwO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGdlc3R1cmUodHlwZSwgZXZlbnQsIHRvdWNoKSB7XG4gICAgICB2YXIgcDAgPSBwLCBuO1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgXCJzdGFydFwiOiBnZXN0dXJlc1tpZGVudGlmaWVyXSA9IGdlc3R1cmUsIG4gPSBhY3RpdmUrKzsgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJlbmRcIjogZGVsZXRlIGdlc3R1cmVzW2lkZW50aWZpZXJdLCAtLWFjdGl2ZTsgLy8gbm9icmVha1xuICAgICAgICBjYXNlIFwiZHJhZ1wiOiBwID0gcG9pbnRlcih0b3VjaCB8fCBldmVudCwgY29udGFpbmVyKSwgbiA9IGFjdGl2ZTsgYnJlYWs7XG4gICAgICB9XG4gICAgICBkaXNwYXRjaC5jYWxsKFxuICAgICAgICB0eXBlLFxuICAgICAgICB0aGF0LFxuICAgICAgICBuZXcgRHJhZ0V2ZW50KHR5cGUsIHtcbiAgICAgICAgICBzb3VyY2VFdmVudDogZXZlbnQsXG4gICAgICAgICAgc3ViamVjdDogcyxcbiAgICAgICAgICB0YXJnZXQ6IGRyYWcsXG4gICAgICAgICAgaWRlbnRpZmllcixcbiAgICAgICAgICBhY3RpdmU6IG4sXG4gICAgICAgICAgeDogcFswXSArIGR4LFxuICAgICAgICAgIHk6IHBbMV0gKyBkeSxcbiAgICAgICAgICBkeDogcFswXSAtIHAwWzBdLFxuICAgICAgICAgIGR5OiBwWzFdIC0gcDBbMV0sXG4gICAgICAgICAgZGlzcGF0Y2hcbiAgICAgICAgfSksXG4gICAgICAgIGRcbiAgICAgICk7XG4gICAgfTtcbiAgfVxuXG4gIGRyYWcuZmlsdGVyID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGZpbHRlciA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoISFfKSwgZHJhZykgOiBmaWx0ZXI7XG4gIH07XG5cbiAgZHJhZy5jb250YWluZXIgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoY29udGFpbmVyID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChfKSwgZHJhZykgOiBjb250YWluZXI7XG4gIH07XG5cbiAgZHJhZy5zdWJqZWN0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN1YmplY3QgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KF8pLCBkcmFnKSA6IHN1YmplY3Q7XG4gIH07XG5cbiAgZHJhZy50b3VjaGFibGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodG91Y2hhYmxlID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCghIV8pLCBkcmFnKSA6IHRvdWNoYWJsZTtcbiAgfTtcblxuICBkcmFnLm9uID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHZhbHVlID0gbGlzdGVuZXJzLm9uLmFwcGx5KGxpc3RlbmVycywgYXJndW1lbnRzKTtcbiAgICByZXR1cm4gdmFsdWUgPT09IGxpc3RlbmVycyA/IGRyYWcgOiB2YWx1ZTtcbiAgfTtcblxuICBkcmFnLmNsaWNrRGlzdGFuY2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoY2xpY2tEaXN0YW5jZTIgPSAoXyA9ICtfKSAqIF8sIGRyYWcpIDogTWF0aC5zcXJ0KGNsaWNrRGlzdGFuY2UyKTtcbiAgfTtcblxuICByZXR1cm4gZHJhZztcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb25zdHJ1Y3RvciwgZmFjdG9yeSwgcHJvdG90eXBlKSB7XG4gIGNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGZhY3RvcnkucHJvdG90eXBlID0gcHJvdG90eXBlO1xuICBwcm90b3R5cGUuY29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZChwYXJlbnQsIGRlZmluaXRpb24pIHtcbiAgdmFyIHByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUocGFyZW50LnByb3RvdHlwZSk7XG4gIGZvciAodmFyIGtleSBpbiBkZWZpbml0aW9uKSBwcm90b3R5cGVba2V5XSA9IGRlZmluaXRpb25ba2V5XTtcbiAgcmV0dXJuIHByb3RvdHlwZTtcbn1cbiIsICJpbXBvcnQgZGVmaW5lLCB7ZXh0ZW5kfSBmcm9tIFwiLi9kZWZpbmUuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIENvbG9yKCkge31cblxuZXhwb3J0IHZhciBkYXJrZXIgPSAwLjc7XG5leHBvcnQgdmFyIGJyaWdodGVyID0gMSAvIGRhcmtlcjtcblxudmFyIHJlSSA9IFwiXFxcXHMqKFsrLV0/XFxcXGQrKVxcXFxzKlwiLFxuICAgIHJlTiA9IFwiXFxcXHMqKFsrLV0/XFxcXGQqXFxcXC4/XFxcXGQrKD86W2VFXVsrLV0/XFxcXGQrKT8pXFxcXHMqXCIsXG4gICAgcmVQID0gXCJcXFxccyooWystXT9cXFxcZCpcXFxcLj9cXFxcZCsoPzpbZUVdWystXT9cXFxcZCspPyklXFxcXHMqXCIsXG4gICAgcmVIZXggPSAvXiMoWzAtOWEtZl17Myw4fSkkLyxcbiAgICByZVJnYkludGVnZXIgPSBuZXcgUmVnRXhwKFwiXnJnYlxcXFwoXCIgKyBbcmVJLCByZUksIHJlSV0gKyBcIlxcXFwpJFwiKSxcbiAgICByZVJnYlBlcmNlbnQgPSBuZXcgUmVnRXhwKFwiXnJnYlxcXFwoXCIgKyBbcmVQLCByZVAsIHJlUF0gKyBcIlxcXFwpJFwiKSxcbiAgICByZVJnYmFJbnRlZ2VyID0gbmV3IFJlZ0V4cChcIl5yZ2JhXFxcXChcIiArIFtyZUksIHJlSSwgcmVJLCByZU5dICsgXCJcXFxcKSRcIiksXG4gICAgcmVSZ2JhUGVyY2VudCA9IG5ldyBSZWdFeHAoXCJecmdiYVxcXFwoXCIgKyBbcmVQLCByZVAsIHJlUCwgcmVOXSArIFwiXFxcXCkkXCIpLFxuICAgIHJlSHNsUGVyY2VudCA9IG5ldyBSZWdFeHAoXCJeaHNsXFxcXChcIiArIFtyZU4sIHJlUCwgcmVQXSArIFwiXFxcXCkkXCIpLFxuICAgIHJlSHNsYVBlcmNlbnQgPSBuZXcgUmVnRXhwKFwiXmhzbGFcXFxcKFwiICsgW3JlTiwgcmVQLCByZVAsIHJlTl0gKyBcIlxcXFwpJFwiKTtcblxudmFyIG5hbWVkID0ge1xuICBhbGljZWJsdWU6IDB4ZjBmOGZmLFxuICBhbnRpcXVld2hpdGU6IDB4ZmFlYmQ3LFxuICBhcXVhOiAweDAwZmZmZixcbiAgYXF1YW1hcmluZTogMHg3ZmZmZDQsXG4gIGF6dXJlOiAweGYwZmZmZixcbiAgYmVpZ2U6IDB4ZjVmNWRjLFxuICBiaXNxdWU6IDB4ZmZlNGM0LFxuICBibGFjazogMHgwMDAwMDAsXG4gIGJsYW5jaGVkYWxtb25kOiAweGZmZWJjZCxcbiAgYmx1ZTogMHgwMDAwZmYsXG4gIGJsdWV2aW9sZXQ6IDB4OGEyYmUyLFxuICBicm93bjogMHhhNTJhMmEsXG4gIGJ1cmx5d29vZDogMHhkZWI4ODcsXG4gIGNhZGV0Ymx1ZTogMHg1ZjllYTAsXG4gIGNoYXJ0cmV1c2U6IDB4N2ZmZjAwLFxuICBjaG9jb2xhdGU6IDB4ZDI2OTFlLFxuICBjb3JhbDogMHhmZjdmNTAsXG4gIGNvcm5mbG93ZXJibHVlOiAweDY0OTVlZCxcbiAgY29ybnNpbGs6IDB4ZmZmOGRjLFxuICBjcmltc29uOiAweGRjMTQzYyxcbiAgY3lhbjogMHgwMGZmZmYsXG4gIGRhcmtibHVlOiAweDAwMDA4YixcbiAgZGFya2N5YW46IDB4MDA4YjhiLFxuICBkYXJrZ29sZGVucm9kOiAweGI4ODYwYixcbiAgZGFya2dyYXk6IDB4YTlhOWE5LFxuICBkYXJrZ3JlZW46IDB4MDA2NDAwLFxuICBkYXJrZ3JleTogMHhhOWE5YTksXG4gIGRhcmtraGFraTogMHhiZGI3NmIsXG4gIGRhcmttYWdlbnRhOiAweDhiMDA4YixcbiAgZGFya29saXZlZ3JlZW46IDB4NTU2YjJmLFxuICBkYXJrb3JhbmdlOiAweGZmOGMwMCxcbiAgZGFya29yY2hpZDogMHg5OTMyY2MsXG4gIGRhcmtyZWQ6IDB4OGIwMDAwLFxuICBkYXJrc2FsbW9uOiAweGU5OTY3YSxcbiAgZGFya3NlYWdyZWVuOiAweDhmYmM4ZixcbiAgZGFya3NsYXRlYmx1ZTogMHg0ODNkOGIsXG4gIGRhcmtzbGF0ZWdyYXk6IDB4MmY0ZjRmLFxuICBkYXJrc2xhdGVncmV5OiAweDJmNGY0ZixcbiAgZGFya3R1cnF1b2lzZTogMHgwMGNlZDEsXG4gIGRhcmt2aW9sZXQ6IDB4OTQwMGQzLFxuICBkZWVwcGluazogMHhmZjE0OTMsXG4gIGRlZXBza3libHVlOiAweDAwYmZmZixcbiAgZGltZ3JheTogMHg2OTY5NjksXG4gIGRpbWdyZXk6IDB4Njk2OTY5LFxuICBkb2RnZXJibHVlOiAweDFlOTBmZixcbiAgZmlyZWJyaWNrOiAweGIyMjIyMixcbiAgZmxvcmFsd2hpdGU6IDB4ZmZmYWYwLFxuICBmb3Jlc3RncmVlbjogMHgyMjhiMjIsXG4gIGZ1Y2hzaWE6IDB4ZmYwMGZmLFxuICBnYWluc2Jvcm86IDB4ZGNkY2RjLFxuICBnaG9zdHdoaXRlOiAweGY4ZjhmZixcbiAgZ29sZDogMHhmZmQ3MDAsXG4gIGdvbGRlbnJvZDogMHhkYWE1MjAsXG4gIGdyYXk6IDB4ODA4MDgwLFxuICBncmVlbjogMHgwMDgwMDAsXG4gIGdyZWVueWVsbG93OiAweGFkZmYyZixcbiAgZ3JleTogMHg4MDgwODAsXG4gIGhvbmV5ZGV3OiAweGYwZmZmMCxcbiAgaG90cGluazogMHhmZjY5YjQsXG4gIGluZGlhbnJlZDogMHhjZDVjNWMsXG4gIGluZGlnbzogMHg0YjAwODIsXG4gIGl2b3J5OiAweGZmZmZmMCxcbiAga2hha2k6IDB4ZjBlNjhjLFxuICBsYXZlbmRlcjogMHhlNmU2ZmEsXG4gIGxhdmVuZGVyYmx1c2g6IDB4ZmZmMGY1LFxuICBsYXduZ3JlZW46IDB4N2NmYzAwLFxuICBsZW1vbmNoaWZmb246IDB4ZmZmYWNkLFxuICBsaWdodGJsdWU6IDB4YWRkOGU2LFxuICBsaWdodGNvcmFsOiAweGYwODA4MCxcbiAgbGlnaHRjeWFuOiAweGUwZmZmZixcbiAgbGlnaHRnb2xkZW5yb2R5ZWxsb3c6IDB4ZmFmYWQyLFxuICBsaWdodGdyYXk6IDB4ZDNkM2QzLFxuICBsaWdodGdyZWVuOiAweDkwZWU5MCxcbiAgbGlnaHRncmV5OiAweGQzZDNkMyxcbiAgbGlnaHRwaW5rOiAweGZmYjZjMSxcbiAgbGlnaHRzYWxtb246IDB4ZmZhMDdhLFxuICBsaWdodHNlYWdyZWVuOiAweDIwYjJhYSxcbiAgbGlnaHRza3libHVlOiAweDg3Y2VmYSxcbiAgbGlnaHRzbGF0ZWdyYXk6IDB4Nzc4ODk5LFxuICBsaWdodHNsYXRlZ3JleTogMHg3Nzg4OTksXG4gIGxpZ2h0c3RlZWxibHVlOiAweGIwYzRkZSxcbiAgbGlnaHR5ZWxsb3c6IDB4ZmZmZmUwLFxuICBsaW1lOiAweDAwZmYwMCxcbiAgbGltZWdyZWVuOiAweDMyY2QzMixcbiAgbGluZW46IDB4ZmFmMGU2LFxuICBtYWdlbnRhOiAweGZmMDBmZixcbiAgbWFyb29uOiAweDgwMDAwMCxcbiAgbWVkaXVtYXF1YW1hcmluZTogMHg2NmNkYWEsXG4gIG1lZGl1bWJsdWU6IDB4MDAwMGNkLFxuICBtZWRpdW1vcmNoaWQ6IDB4YmE1NWQzLFxuICBtZWRpdW1wdXJwbGU6IDB4OTM3MGRiLFxuICBtZWRpdW1zZWFncmVlbjogMHgzY2IzNzEsXG4gIG1lZGl1bXNsYXRlYmx1ZTogMHg3YjY4ZWUsXG4gIG1lZGl1bXNwcmluZ2dyZWVuOiAweDAwZmE5YSxcbiAgbWVkaXVtdHVycXVvaXNlOiAweDQ4ZDFjYyxcbiAgbWVkaXVtdmlvbGV0cmVkOiAweGM3MTU4NSxcbiAgbWlkbmlnaHRibHVlOiAweDE5MTk3MCxcbiAgbWludGNyZWFtOiAweGY1ZmZmYSxcbiAgbWlzdHlyb3NlOiAweGZmZTRlMSxcbiAgbW9jY2FzaW46IDB4ZmZlNGI1LFxuICBuYXZham93aGl0ZTogMHhmZmRlYWQsXG4gIG5hdnk6IDB4MDAwMDgwLFxuICBvbGRsYWNlOiAweGZkZjVlNixcbiAgb2xpdmU6IDB4ODA4MDAwLFxuICBvbGl2ZWRyYWI6IDB4NmI4ZTIzLFxuICBvcmFuZ2U6IDB4ZmZhNTAwLFxuICBvcmFuZ2VyZWQ6IDB4ZmY0NTAwLFxuICBvcmNoaWQ6IDB4ZGE3MGQ2LFxuICBwYWxlZ29sZGVucm9kOiAweGVlZThhYSxcbiAgcGFsZWdyZWVuOiAweDk4ZmI5OCxcbiAgcGFsZXR1cnF1b2lzZTogMHhhZmVlZWUsXG4gIHBhbGV2aW9sZXRyZWQ6IDB4ZGI3MDkzLFxuICBwYXBheWF3aGlwOiAweGZmZWZkNSxcbiAgcGVhY2hwdWZmOiAweGZmZGFiOSxcbiAgcGVydTogMHhjZDg1M2YsXG4gIHBpbms6IDB4ZmZjMGNiLFxuICBwbHVtOiAweGRkYTBkZCxcbiAgcG93ZGVyYmx1ZTogMHhiMGUwZTYsXG4gIHB1cnBsZTogMHg4MDAwODAsXG4gIHJlYmVjY2FwdXJwbGU6IDB4NjYzMzk5LFxuICByZWQ6IDB4ZmYwMDAwLFxuICByb3N5YnJvd246IDB4YmM4ZjhmLFxuICByb3lhbGJsdWU6IDB4NDE2OWUxLFxuICBzYWRkbGVicm93bjogMHg4YjQ1MTMsXG4gIHNhbG1vbjogMHhmYTgwNzIsXG4gIHNhbmR5YnJvd246IDB4ZjRhNDYwLFxuICBzZWFncmVlbjogMHgyZThiNTcsXG4gIHNlYXNoZWxsOiAweGZmZjVlZSxcbiAgc2llbm5hOiAweGEwNTIyZCxcbiAgc2lsdmVyOiAweGMwYzBjMCxcbiAgc2t5Ymx1ZTogMHg4N2NlZWIsXG4gIHNsYXRlYmx1ZTogMHg2YTVhY2QsXG4gIHNsYXRlZ3JheTogMHg3MDgwOTAsXG4gIHNsYXRlZ3JleTogMHg3MDgwOTAsXG4gIHNub3c6IDB4ZmZmYWZhLFxuICBzcHJpbmdncmVlbjogMHgwMGZmN2YsXG4gIHN0ZWVsYmx1ZTogMHg0NjgyYjQsXG4gIHRhbjogMHhkMmI0OGMsXG4gIHRlYWw6IDB4MDA4MDgwLFxuICB0aGlzdGxlOiAweGQ4YmZkOCxcbiAgdG9tYXRvOiAweGZmNjM0NyxcbiAgdHVycXVvaXNlOiAweDQwZTBkMCxcbiAgdmlvbGV0OiAweGVlODJlZSxcbiAgd2hlYXQ6IDB4ZjVkZWIzLFxuICB3aGl0ZTogMHhmZmZmZmYsXG4gIHdoaXRlc21va2U6IDB4ZjVmNWY1LFxuICB5ZWxsb3c6IDB4ZmZmZjAwLFxuICB5ZWxsb3dncmVlbjogMHg5YWNkMzJcbn07XG5cbmRlZmluZShDb2xvciwgY29sb3IsIHtcbiAgY29weTogZnVuY3Rpb24oY2hhbm5lbHMpIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3RvciwgdGhpcywgY2hhbm5lbHMpO1xuICB9LFxuICBkaXNwbGF5YWJsZTogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKTtcbiAgfSxcbiAgaGV4OiBjb2xvcl9mb3JtYXRIZXgsIC8vIERlcHJlY2F0ZWQhIFVzZSBjb2xvci5mb3JtYXRIZXguXG4gIGZvcm1hdEhleDogY29sb3JfZm9ybWF0SGV4LFxuICBmb3JtYXRIc2w6IGNvbG9yX2Zvcm1hdEhzbCxcbiAgZm9ybWF0UmdiOiBjb2xvcl9mb3JtYXRSZ2IsXG4gIHRvU3RyaW5nOiBjb2xvcl9mb3JtYXRSZ2Jcbn0pO1xuXG5mdW5jdGlvbiBjb2xvcl9mb3JtYXRIZXgoKSB7XG4gIHJldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpO1xufVxuXG5mdW5jdGlvbiBjb2xvcl9mb3JtYXRIc2woKSB7XG4gIHJldHVybiBoc2xDb252ZXJ0KHRoaXMpLmZvcm1hdEhzbCgpO1xufVxuXG5mdW5jdGlvbiBjb2xvcl9mb3JtYXRSZ2IoKSB7XG4gIHJldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb2xvcihmb3JtYXQpIHtcbiAgdmFyIG0sIGw7XG4gIGZvcm1hdCA9IChmb3JtYXQgKyBcIlwiKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIChtID0gcmVIZXguZXhlYyhmb3JtYXQpKSA/IChsID0gbVsxXS5sZW5ndGgsIG0gPSBwYXJzZUludChtWzFdLCAxNiksIGwgPT09IDYgPyByZ2JuKG0pIC8vICNmZjAwMDBcbiAgICAgIDogbCA9PT0gMyA/IG5ldyBSZ2IoKG0gPj4gOCAmIDB4ZikgfCAobSA+PiA0ICYgMHhmMCksIChtID4+IDQgJiAweGYpIHwgKG0gJiAweGYwKSwgKChtICYgMHhmKSA8PCA0KSB8IChtICYgMHhmKSwgMSkgLy8gI2YwMFxuICAgICAgOiBsID09PSA4ID8gcmdiYShtID4+IDI0ICYgMHhmZiwgbSA+PiAxNiAmIDB4ZmYsIG0gPj4gOCAmIDB4ZmYsIChtICYgMHhmZikgLyAweGZmKSAvLyAjZmYwMDAwMDBcbiAgICAgIDogbCA9PT0gNCA/IHJnYmEoKG0gPj4gMTIgJiAweGYpIHwgKG0gPj4gOCAmIDB4ZjApLCAobSA+PiA4ICYgMHhmKSB8IChtID4+IDQgJiAweGYwKSwgKG0gPj4gNCAmIDB4ZikgfCAobSAmIDB4ZjApLCAoKChtICYgMHhmKSA8PCA0KSB8IChtICYgMHhmKSkgLyAweGZmKSAvLyAjZjAwMFxuICAgICAgOiBudWxsKSAvLyBpbnZhbGlkIGhleFxuICAgICAgOiAobSA9IHJlUmdiSW50ZWdlci5leGVjKGZvcm1hdCkpID8gbmV3IFJnYihtWzFdLCBtWzJdLCBtWzNdLCAxKSAvLyByZ2IoMjU1LCAwLCAwKVxuICAgICAgOiAobSA9IHJlUmdiUGVyY2VudC5leGVjKGZvcm1hdCkpID8gbmV3IFJnYihtWzFdICogMjU1IC8gMTAwLCBtWzJdICogMjU1IC8gMTAwLCBtWzNdICogMjU1IC8gMTAwLCAxKSAvLyByZ2IoMTAwJSwgMCUsIDAlKVxuICAgICAgOiAobSA9IHJlUmdiYUludGVnZXIuZXhlYyhmb3JtYXQpKSA/IHJnYmEobVsxXSwgbVsyXSwgbVszXSwgbVs0XSkgLy8gcmdiYSgyNTUsIDAsIDAsIDEpXG4gICAgICA6IChtID0gcmVSZ2JhUGVyY2VudC5leGVjKGZvcm1hdCkpID8gcmdiYShtWzFdICogMjU1IC8gMTAwLCBtWzJdICogMjU1IC8gMTAwLCBtWzNdICogMjU1IC8gMTAwLCBtWzRdKSAvLyByZ2IoMTAwJSwgMCUsIDAlLCAxKVxuICAgICAgOiAobSA9IHJlSHNsUGVyY2VudC5leGVjKGZvcm1hdCkpID8gaHNsYShtWzFdLCBtWzJdIC8gMTAwLCBtWzNdIC8gMTAwLCAxKSAvLyBoc2woMTIwLCA1MCUsIDUwJSlcbiAgICAgIDogKG0gPSByZUhzbGFQZXJjZW50LmV4ZWMoZm9ybWF0KSkgPyBoc2xhKG1bMV0sIG1bMl0gLyAxMDAsIG1bM10gLyAxMDAsIG1bNF0pIC8vIGhzbGEoMTIwLCA1MCUsIDUwJSwgMSlcbiAgICAgIDogbmFtZWQuaGFzT3duUHJvcGVydHkoZm9ybWF0KSA/IHJnYm4obmFtZWRbZm9ybWF0XSkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICAgIDogZm9ybWF0ID09PSBcInRyYW5zcGFyZW50XCIgPyBuZXcgUmdiKE5hTiwgTmFOLCBOYU4sIDApXG4gICAgICA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIHJnYm4obikge1xuICByZXR1cm4gbmV3IFJnYihuID4+IDE2ICYgMHhmZiwgbiA+PiA4ICYgMHhmZiwgbiAmIDB4ZmYsIDEpO1xufVxuXG5mdW5jdGlvbiByZ2JhKHIsIGcsIGIsIGEpIHtcbiAgaWYgKGEgPD0gMCkgciA9IGcgPSBiID0gTmFOO1xuICByZXR1cm4gbmV3IFJnYihyLCBnLCBiLCBhKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJnYkNvbnZlcnQobykge1xuICBpZiAoIShvIGluc3RhbmNlb2YgQ29sb3IpKSBvID0gY29sb3Iobyk7XG4gIGlmICghbykgcmV0dXJuIG5ldyBSZ2I7XG4gIG8gPSBvLnJnYigpO1xuICByZXR1cm4gbmV3IFJnYihvLnIsIG8uZywgby5iLCBvLm9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmdiKHIsIGcsIGIsIG9wYWNpdHkpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyByZ2JDb252ZXJ0KHIpIDogbmV3IFJnYihyLCBnLCBiLCBvcGFjaXR5ID09IG51bGwgPyAxIDogb3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZ2IociwgZywgYiwgb3BhY2l0eSkge1xuICB0aGlzLnIgPSArcjtcbiAgdGhpcy5nID0gK2c7XG4gIHRoaXMuYiA9ICtiO1xuICB0aGlzLm9wYWNpdHkgPSArb3BhY2l0eTtcbn1cblxuZGVmaW5lKFJnYiwgcmdiLCBleHRlbmQoQ29sb3IsIHtcbiAgYnJpZ2h0ZXI6IGZ1bmN0aW9uKGspIHtcbiAgICBrID0gayA9PSBudWxsID8gYnJpZ2h0ZXIgOiBNYXRoLnBvdyhicmlnaHRlciwgayk7XG4gICAgcmV0dXJuIG5ldyBSZ2IodGhpcy5yICogaywgdGhpcy5nICogaywgdGhpcy5iICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgZGFya2VyOiBmdW5jdGlvbihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGRhcmtlciA6IE1hdGgucG93KGRhcmtlciwgayk7XG4gICAgcmV0dXJuIG5ldyBSZ2IodGhpcy5yICogaywgdGhpcy5nICogaywgdGhpcy5iICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgcmdiOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgZGlzcGxheWFibGU6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAoLTAuNSA8PSB0aGlzLnIgJiYgdGhpcy5yIDwgMjU1LjUpXG4gICAgICAgICYmICgtMC41IDw9IHRoaXMuZyAmJiB0aGlzLmcgPCAyNTUuNSlcbiAgICAgICAgJiYgKC0wLjUgPD0gdGhpcy5iICYmIHRoaXMuYiA8IDI1NS41KVxuICAgICAgICAmJiAoMCA8PSB0aGlzLm9wYWNpdHkgJiYgdGhpcy5vcGFjaXR5IDw9IDEpO1xuICB9LFxuICBoZXg6IHJnYl9mb3JtYXRIZXgsIC8vIERlcHJlY2F0ZWQhIFVzZSBjb2xvci5mb3JtYXRIZXguXG4gIGZvcm1hdEhleDogcmdiX2Zvcm1hdEhleCxcbiAgZm9ybWF0UmdiOiByZ2JfZm9ybWF0UmdiLFxuICB0b1N0cmluZzogcmdiX2Zvcm1hdFJnYlxufSkpO1xuXG5mdW5jdGlvbiByZ2JfZm9ybWF0SGV4KCkge1xuICByZXR1cm4gXCIjXCIgKyBoZXgodGhpcy5yKSArIGhleCh0aGlzLmcpICsgaGV4KHRoaXMuYik7XG59XG5cbmZ1bmN0aW9uIHJnYl9mb3JtYXRSZ2IoKSB7XG4gIHZhciBhID0gdGhpcy5vcGFjaXR5OyBhID0gaXNOYU4oYSkgPyAxIDogTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgYSkpO1xuICByZXR1cm4gKGEgPT09IDEgPyBcInJnYihcIiA6IFwicmdiYShcIilcbiAgICAgICsgTWF0aC5tYXgoMCwgTWF0aC5taW4oMjU1LCBNYXRoLnJvdW5kKHRoaXMucikgfHwgMCkpICsgXCIsIFwiXG4gICAgICArIE1hdGgubWF4KDAsIE1hdGgubWluKDI1NSwgTWF0aC5yb3VuZCh0aGlzLmcpIHx8IDApKSArIFwiLCBcIlxuICAgICAgKyBNYXRoLm1heCgwLCBNYXRoLm1pbigyNTUsIE1hdGgucm91bmQodGhpcy5iKSB8fCAwKSlcbiAgICAgICsgKGEgPT09IDEgPyBcIilcIiA6IFwiLCBcIiArIGEgKyBcIilcIik7XG59XG5cbmZ1bmN0aW9uIGhleCh2YWx1ZSkge1xuICB2YWx1ZSA9IE1hdGgubWF4KDAsIE1hdGgubWluKDI1NSwgTWF0aC5yb3VuZCh2YWx1ZSkgfHwgMCkpO1xuICByZXR1cm4gKHZhbHVlIDwgMTYgPyBcIjBcIiA6IFwiXCIpICsgdmFsdWUudG9TdHJpbmcoMTYpO1xufVxuXG5mdW5jdGlvbiBoc2xhKGgsIHMsIGwsIGEpIHtcbiAgaWYgKGEgPD0gMCkgaCA9IHMgPSBsID0gTmFOO1xuICBlbHNlIGlmIChsIDw9IDAgfHwgbCA+PSAxKSBoID0gcyA9IE5hTjtcbiAgZWxzZSBpZiAocyA8PSAwKSBoID0gTmFOO1xuICByZXR1cm4gbmV3IEhzbChoLCBzLCBsLCBhKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhzbENvbnZlcnQobykge1xuICBpZiAobyBpbnN0YW5jZW9mIEhzbCkgcmV0dXJuIG5ldyBIc2woby5oLCBvLnMsIG8ubCwgby5vcGFjaXR5KTtcbiAgaWYgKCEobyBpbnN0YW5jZW9mIENvbG9yKSkgbyA9IGNvbG9yKG8pO1xuICBpZiAoIW8pIHJldHVybiBuZXcgSHNsO1xuICBpZiAobyBpbnN0YW5jZW9mIEhzbCkgcmV0dXJuIG87XG4gIG8gPSBvLnJnYigpO1xuICB2YXIgciA9IG8uciAvIDI1NSxcbiAgICAgIGcgPSBvLmcgLyAyNTUsXG4gICAgICBiID0gby5iIC8gMjU1LFxuICAgICAgbWluID0gTWF0aC5taW4ociwgZywgYiksXG4gICAgICBtYXggPSBNYXRoLm1heChyLCBnLCBiKSxcbiAgICAgIGggPSBOYU4sXG4gICAgICBzID0gbWF4IC0gbWluLFxuICAgICAgbCA9IChtYXggKyBtaW4pIC8gMjtcbiAgaWYgKHMpIHtcbiAgICBpZiAociA9PT0gbWF4KSBoID0gKGcgLSBiKSAvIHMgKyAoZyA8IGIpICogNjtcbiAgICBlbHNlIGlmIChnID09PSBtYXgpIGggPSAoYiAtIHIpIC8gcyArIDI7XG4gICAgZWxzZSBoID0gKHIgLSBnKSAvIHMgKyA0O1xuICAgIHMgLz0gbCA8IDAuNSA/IG1heCArIG1pbiA6IDIgLSBtYXggLSBtaW47XG4gICAgaCAqPSA2MDtcbiAgfSBlbHNlIHtcbiAgICBzID0gbCA+IDAgJiYgbCA8IDEgPyAwIDogaDtcbiAgfVxuICByZXR1cm4gbmV3IEhzbChoLCBzLCBsLCBvLm9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHNsKGgsIHMsIGwsIG9wYWNpdHkpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBoc2xDb252ZXJ0KGgpIDogbmV3IEhzbChoLCBzLCBsLCBvcGFjaXR5ID09IG51bGwgPyAxIDogb3BhY2l0eSk7XG59XG5cbmZ1bmN0aW9uIEhzbChoLCBzLCBsLCBvcGFjaXR5KSB7XG4gIHRoaXMuaCA9ICtoO1xuICB0aGlzLnMgPSArcztcbiAgdGhpcy5sID0gK2w7XG4gIHRoaXMub3BhY2l0eSA9ICtvcGFjaXR5O1xufVxuXG5kZWZpbmUoSHNsLCBoc2wsIGV4dGVuZChDb2xvciwge1xuICBicmlnaHRlcjogZnVuY3Rpb24oaykge1xuICAgIGsgPSBrID09IG51bGwgPyBicmlnaHRlciA6IE1hdGgucG93KGJyaWdodGVyLCBrKTtcbiAgICByZXR1cm4gbmV3IEhzbCh0aGlzLmgsIHRoaXMucywgdGhpcy5sICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgZGFya2VyOiBmdW5jdGlvbihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGRhcmtlciA6IE1hdGgucG93KGRhcmtlciwgayk7XG4gICAgcmV0dXJuIG5ldyBIc2wodGhpcy5oLCB0aGlzLnMsIHRoaXMubCAqIGssIHRoaXMub3BhY2l0eSk7XG4gIH0sXG4gIHJnYjogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGggPSB0aGlzLmggJSAzNjAgKyAodGhpcy5oIDwgMCkgKiAzNjAsXG4gICAgICAgIHMgPSBpc05hTihoKSB8fCBpc05hTih0aGlzLnMpID8gMCA6IHRoaXMucyxcbiAgICAgICAgbCA9IHRoaXMubCxcbiAgICAgICAgbTIgPSBsICsgKGwgPCAwLjUgPyBsIDogMSAtIGwpICogcyxcbiAgICAgICAgbTEgPSAyICogbCAtIG0yO1xuICAgIHJldHVybiBuZXcgUmdiKFxuICAgICAgaHNsMnJnYihoID49IDI0MCA/IGggLSAyNDAgOiBoICsgMTIwLCBtMSwgbTIpLFxuICAgICAgaHNsMnJnYihoLCBtMSwgbTIpLFxuICAgICAgaHNsMnJnYihoIDwgMTIwID8gaCArIDI0MCA6IGggLSAxMjAsIG0xLCBtMiksXG4gICAgICB0aGlzLm9wYWNpdHlcbiAgICApO1xuICB9LFxuICBkaXNwbGF5YWJsZTogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICgwIDw9IHRoaXMucyAmJiB0aGlzLnMgPD0gMSB8fCBpc05hTih0aGlzLnMpKVxuICAgICAgICAmJiAoMCA8PSB0aGlzLmwgJiYgdGhpcy5sIDw9IDEpXG4gICAgICAgICYmICgwIDw9IHRoaXMub3BhY2l0eSAmJiB0aGlzLm9wYWNpdHkgPD0gMSk7XG4gIH0sXG4gIGZvcm1hdEhzbDogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGEgPSB0aGlzLm9wYWNpdHk7IGEgPSBpc05hTihhKSA/IDEgOiBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBhKSk7XG4gICAgcmV0dXJuIChhID09PSAxID8gXCJoc2woXCIgOiBcImhzbGEoXCIpXG4gICAgICAgICsgKHRoaXMuaCB8fCAwKSArIFwiLCBcIlxuICAgICAgICArICh0aGlzLnMgfHwgMCkgKiAxMDAgKyBcIiUsIFwiXG4gICAgICAgICsgKHRoaXMubCB8fCAwKSAqIDEwMCArIFwiJVwiXG4gICAgICAgICsgKGEgPT09IDEgPyBcIilcIiA6IFwiLCBcIiArIGEgKyBcIilcIik7XG4gIH1cbn0pKTtcblxuLyogRnJvbSBGdkQgMTMuMzcsIENTUyBDb2xvciBNb2R1bGUgTGV2ZWwgMyAqL1xuZnVuY3Rpb24gaHNsMnJnYihoLCBtMSwgbTIpIHtcbiAgcmV0dXJuIChoIDwgNjAgPyBtMSArIChtMiAtIG0xKSAqIGggLyA2MFxuICAgICAgOiBoIDwgMTgwID8gbTJcbiAgICAgIDogaCA8IDI0MCA/IG0xICsgKG0yIC0gbTEpICogKDI0MCAtIGgpIC8gNjBcbiAgICAgIDogbTEpICogMjU1O1xufVxuIiwgImV4cG9ydCBjb25zdCByYWRpYW5zID0gTWF0aC5QSSAvIDE4MDtcbmV4cG9ydCBjb25zdCBkZWdyZWVzID0gMTgwIC8gTWF0aC5QSTtcbiIsICJpbXBvcnQgZGVmaW5lLCB7ZXh0ZW5kfSBmcm9tIFwiLi9kZWZpbmUuanNcIjtcbmltcG9ydCB7Q29sb3IsIHJnYkNvbnZlcnQsIFJnYiwgZGFya2VyLCBicmlnaHRlcn0gZnJvbSBcIi4vY29sb3IuanNcIjtcbmltcG9ydCB7ZGVncmVlcywgcmFkaWFuc30gZnJvbSBcIi4vbWF0aC5qc1wiO1xuXG52YXIgQSA9IC0wLjE0ODYxLFxuICAgIEIgPSArMS43ODI3NyxcbiAgICBDID0gLTAuMjkyMjcsXG4gICAgRCA9IC0wLjkwNjQ5LFxuICAgIEUgPSArMS45NzI5NCxcbiAgICBFRCA9IEUgKiBELFxuICAgIEVCID0gRSAqIEIsXG4gICAgQkNfREEgPSBCICogQyAtIEQgKiBBO1xuXG5mdW5jdGlvbiBjdWJlaGVsaXhDb252ZXJ0KG8pIHtcbiAgaWYgKG8gaW5zdGFuY2VvZiBDdWJlaGVsaXgpIHJldHVybiBuZXcgQ3ViZWhlbGl4KG8uaCwgby5zLCBvLmwsIG8ub3BhY2l0eSk7XG4gIGlmICghKG8gaW5zdGFuY2VvZiBSZ2IpKSBvID0gcmdiQ29udmVydChvKTtcbiAgdmFyIHIgPSBvLnIgLyAyNTUsXG4gICAgICBnID0gby5nIC8gMjU1LFxuICAgICAgYiA9IG8uYiAvIDI1NSxcbiAgICAgIGwgPSAoQkNfREEgKiBiICsgRUQgKiByIC0gRUIgKiBnKSAvIChCQ19EQSArIEVEIC0gRUIpLFxuICAgICAgYmwgPSBiIC0gbCxcbiAgICAgIGsgPSAoRSAqIChnIC0gbCkgLSBDICogYmwpIC8gRCxcbiAgICAgIHMgPSBNYXRoLnNxcnQoayAqIGsgKyBibCAqIGJsKSAvIChFICogbCAqICgxIC0gbCkpLCAvLyBOYU4gaWYgbD0wIG9yIGw9MVxuICAgICAgaCA9IHMgPyBNYXRoLmF0YW4yKGssIGJsKSAqIGRlZ3JlZXMgLSAxMjAgOiBOYU47XG4gIHJldHVybiBuZXcgQ3ViZWhlbGl4KGggPCAwID8gaCArIDM2MCA6IGgsIHMsIGwsIG8ub3BhY2l0eSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGN1YmVoZWxpeChoLCBzLCBsLCBvcGFjaXR5KSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gY3ViZWhlbGl4Q29udmVydChoKSA6IG5ldyBDdWJlaGVsaXgoaCwgcywgbCwgb3BhY2l0eSA9PSBudWxsID8gMSA6IG9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ3ViZWhlbGl4KGgsIHMsIGwsIG9wYWNpdHkpIHtcbiAgdGhpcy5oID0gK2g7XG4gIHRoaXMucyA9ICtzO1xuICB0aGlzLmwgPSArbDtcbiAgdGhpcy5vcGFjaXR5ID0gK29wYWNpdHk7XG59XG5cbmRlZmluZShDdWJlaGVsaXgsIGN1YmVoZWxpeCwgZXh0ZW5kKENvbG9yLCB7XG4gIGJyaWdodGVyOiBmdW5jdGlvbihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGJyaWdodGVyIDogTWF0aC5wb3coYnJpZ2h0ZXIsIGspO1xuICAgIHJldHVybiBuZXcgQ3ViZWhlbGl4KHRoaXMuaCwgdGhpcy5zLCB0aGlzLmwgKiBrLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICBkYXJrZXI6IGZ1bmN0aW9uKGspIHtcbiAgICBrID0gayA9PSBudWxsID8gZGFya2VyIDogTWF0aC5wb3coZGFya2VyLCBrKTtcbiAgICByZXR1cm4gbmV3IEN1YmVoZWxpeCh0aGlzLmgsIHRoaXMucywgdGhpcy5sICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgcmdiOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgaCA9IGlzTmFOKHRoaXMuaCkgPyAwIDogKHRoaXMuaCArIDEyMCkgKiByYWRpYW5zLFxuICAgICAgICBsID0gK3RoaXMubCxcbiAgICAgICAgYSA9IGlzTmFOKHRoaXMucykgPyAwIDogdGhpcy5zICogbCAqICgxIC0gbCksXG4gICAgICAgIGNvc2ggPSBNYXRoLmNvcyhoKSxcbiAgICAgICAgc2luaCA9IE1hdGguc2luKGgpO1xuICAgIHJldHVybiBuZXcgUmdiKFxuICAgICAgMjU1ICogKGwgKyBhICogKEEgKiBjb3NoICsgQiAqIHNpbmgpKSxcbiAgICAgIDI1NSAqIChsICsgYSAqIChDICogY29zaCArIEQgKiBzaW5oKSksXG4gICAgICAyNTUgKiAobCArIGEgKiAoRSAqIGNvc2gpKSxcbiAgICAgIHRoaXMub3BhY2l0eVxuICAgICk7XG4gIH1cbn0pKTtcbiIsICJleHBvcnQgZnVuY3Rpb24gYmFzaXModDEsIHYwLCB2MSwgdjIsIHYzKSB7XG4gIHZhciB0MiA9IHQxICogdDEsIHQzID0gdDIgKiB0MTtcbiAgcmV0dXJuICgoMSAtIDMgKiB0MSArIDMgKiB0MiAtIHQzKSAqIHYwXG4gICAgICArICg0IC0gNiAqIHQyICsgMyAqIHQzKSAqIHYxXG4gICAgICArICgxICsgMyAqIHQxICsgMyAqIHQyIC0gMyAqIHQzKSAqIHYyXG4gICAgICArIHQzICogdjMpIC8gNjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWVzKSB7XG4gIHZhciBuID0gdmFsdWVzLmxlbmd0aCAtIDE7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgdmFyIGkgPSB0IDw9IDAgPyAodCA9IDApIDogdCA+PSAxID8gKHQgPSAxLCBuIC0gMSkgOiBNYXRoLmZsb29yKHQgKiBuKSxcbiAgICAgICAgdjEgPSB2YWx1ZXNbaV0sXG4gICAgICAgIHYyID0gdmFsdWVzW2kgKyAxXSxcbiAgICAgICAgdjAgPSBpID4gMCA/IHZhbHVlc1tpIC0gMV0gOiAyICogdjEgLSB2MixcbiAgICAgICAgdjMgPSBpIDwgbiAtIDEgPyB2YWx1ZXNbaSArIDJdIDogMiAqIHYyIC0gdjE7XG4gICAgcmV0dXJuIGJhc2lzKCh0IC0gaSAvIG4pICogbiwgdjAsIHYxLCB2MiwgdjMpO1xuICB9O1xufVxuIiwgImltcG9ydCB7YmFzaXN9IGZyb20gXCIuL2Jhc2lzLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlcykge1xuICB2YXIgbiA9IHZhbHVlcy5sZW5ndGg7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yKCgodCAlPSAxKSA8IDAgPyArK3QgOiB0KSAqIG4pLFxuICAgICAgICB2MCA9IHZhbHVlc1soaSArIG4gLSAxKSAlIG5dLFxuICAgICAgICB2MSA9IHZhbHVlc1tpICUgbl0sXG4gICAgICAgIHYyID0gdmFsdWVzWyhpICsgMSkgJSBuXSxcbiAgICAgICAgdjMgPSB2YWx1ZXNbKGkgKyAyKSAlIG5dO1xuICAgIHJldHVybiBiYXNpcygodCAtIGkgLyBuKSAqIG4sIHYwLCB2MSwgdjIsIHYzKTtcbiAgfTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCB4ID0+ICgpID0+IHg7XG4iLCAiaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5cbmZ1bmN0aW9uIGxpbmVhcihhLCBkKSB7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIGEgKyB0ICogZDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZXhwb25lbnRpYWwoYSwgYiwgeSkge1xuICByZXR1cm4gYSA9IE1hdGgucG93KGEsIHkpLCBiID0gTWF0aC5wb3coYiwgeSkgLSBhLCB5ID0gMSAvIHksIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gTWF0aC5wb3coYSArIHQgKiBiLCB5KTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh1ZShhLCBiKSB7XG4gIHZhciBkID0gYiAtIGE7XG4gIHJldHVybiBkID8gbGluZWFyKGEsIGQgPiAxODAgfHwgZCA8IC0xODAgPyBkIC0gMzYwICogTWF0aC5yb3VuZChkIC8gMzYwKSA6IGQpIDogY29uc3RhbnQoaXNOYU4oYSkgPyBiIDogYSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnYW1tYSh5KSB7XG4gIHJldHVybiAoeSA9ICt5KSA9PT0gMSA/IG5vZ2FtbWEgOiBmdW5jdGlvbihhLCBiKSB7XG4gICAgcmV0dXJuIGIgLSBhID8gZXhwb25lbnRpYWwoYSwgYiwgeSkgOiBjb25zdGFudChpc05hTihhKSA/IGIgOiBhKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbm9nYW1tYShhLCBiKSB7XG4gIHZhciBkID0gYiAtIGE7XG4gIHJldHVybiBkID8gbGluZWFyKGEsIGQpIDogY29uc3RhbnQoaXNOYU4oYSkgPyBiIDogYSk7XG59XG4iLCAiaW1wb3J0IHtyZ2IgYXMgY29sb3JSZ2J9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGJhc2lzIGZyb20gXCIuL2Jhc2lzLmpzXCI7XG5pbXBvcnQgYmFzaXNDbG9zZWQgZnJvbSBcIi4vYmFzaXNDbG9zZWQuanNcIjtcbmltcG9ydCBub2dhbW1hLCB7Z2FtbWF9IGZyb20gXCIuL2NvbG9yLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiByZ2JHYW1tYSh5KSB7XG4gIHZhciBjb2xvciA9IGdhbW1hKHkpO1xuXG4gIGZ1bmN0aW9uIHJnYihzdGFydCwgZW5kKSB7XG4gICAgdmFyIHIgPSBjb2xvcigoc3RhcnQgPSBjb2xvclJnYihzdGFydCkpLnIsIChlbmQgPSBjb2xvclJnYihlbmQpKS5yKSxcbiAgICAgICAgZyA9IGNvbG9yKHN0YXJ0LmcsIGVuZC5nKSxcbiAgICAgICAgYiA9IGNvbG9yKHN0YXJ0LmIsIGVuZC5iKSxcbiAgICAgICAgb3BhY2l0eSA9IG5vZ2FtbWEoc3RhcnQub3BhY2l0eSwgZW5kLm9wYWNpdHkpO1xuICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICBzdGFydC5yID0gcih0KTtcbiAgICAgIHN0YXJ0LmcgPSBnKHQpO1xuICAgICAgc3RhcnQuYiA9IGIodCk7XG4gICAgICBzdGFydC5vcGFjaXR5ID0gb3BhY2l0eSh0KTtcbiAgICAgIHJldHVybiBzdGFydCArIFwiXCI7XG4gICAgfTtcbiAgfVxuXG4gIHJnYi5nYW1tYSA9IHJnYkdhbW1hO1xuXG4gIHJldHVybiByZ2I7XG59KSgxKTtcblxuZnVuY3Rpb24gcmdiU3BsaW5lKHNwbGluZSkge1xuICByZXR1cm4gZnVuY3Rpb24oY29sb3JzKSB7XG4gICAgdmFyIG4gPSBjb2xvcnMubGVuZ3RoLFxuICAgICAgICByID0gbmV3IEFycmF5KG4pLFxuICAgICAgICBnID0gbmV3IEFycmF5KG4pLFxuICAgICAgICBiID0gbmV3IEFycmF5KG4pLFxuICAgICAgICBpLCBjb2xvcjtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBjb2xvciA9IGNvbG9yUmdiKGNvbG9yc1tpXSk7XG4gICAgICByW2ldID0gY29sb3IuciB8fCAwO1xuICAgICAgZ1tpXSA9IGNvbG9yLmcgfHwgMDtcbiAgICAgIGJbaV0gPSBjb2xvci5iIHx8IDA7XG4gICAgfVxuICAgIHIgPSBzcGxpbmUocik7XG4gICAgZyA9IHNwbGluZShnKTtcbiAgICBiID0gc3BsaW5lKGIpO1xuICAgIGNvbG9yLm9wYWNpdHkgPSAxO1xuICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICBjb2xvci5yID0gcih0KTtcbiAgICAgIGNvbG9yLmcgPSBnKHQpO1xuICAgICAgY29sb3IuYiA9IGIodCk7XG4gICAgICByZXR1cm4gY29sb3IgKyBcIlwiO1xuICAgIH07XG4gIH07XG59XG5cbmV4cG9ydCB2YXIgcmdiQmFzaXMgPSByZ2JTcGxpbmUoYmFzaXMpO1xuZXhwb3J0IHZhciByZ2JCYXNpc0Nsb3NlZCA9IHJnYlNwbGluZShiYXNpc0Nsb3NlZCk7XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICBpZiAoIWIpIGIgPSBbXTtcbiAgdmFyIG4gPSBhID8gTWF0aC5taW4oYi5sZW5ndGgsIGEubGVuZ3RoKSA6IDAsXG4gICAgICBjID0gYi5zbGljZSgpLFxuICAgICAgaTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSBjW2ldID0gYVtpXSAqICgxIC0gdCkgKyBiW2ldICogdDtcbiAgICByZXR1cm4gYztcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyQXJyYXkoeCkge1xuICByZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KHgpICYmICEoeCBpbnN0YW5jZW9mIERhdGFWaWV3KTtcbn1cbiIsICJpbXBvcnQgdmFsdWUgZnJvbSBcIi4vdmFsdWUuanNcIjtcbmltcG9ydCBudW1iZXJBcnJheSwge2lzTnVtYmVyQXJyYXl9IGZyb20gXCIuL251bWJlckFycmF5LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgcmV0dXJuIChpc051bWJlckFycmF5KGIpID8gbnVtYmVyQXJyYXkgOiBnZW5lcmljQXJyYXkpKGEsIGIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJpY0FycmF5KGEsIGIpIHtcbiAgdmFyIG5iID0gYiA/IGIubGVuZ3RoIDogMCxcbiAgICAgIG5hID0gYSA/IE1hdGgubWluKG5iLCBhLmxlbmd0aCkgOiAwLFxuICAgICAgeCA9IG5ldyBBcnJheShuYSksXG4gICAgICBjID0gbmV3IEFycmF5KG5iKSxcbiAgICAgIGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IG5hOyArK2kpIHhbaV0gPSB2YWx1ZShhW2ldLCBiW2ldKTtcbiAgZm9yICg7IGkgPCBuYjsgKytpKSBjW2ldID0gYltpXTtcblxuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIGZvciAoaSA9IDA7IGkgPCBuYTsgKytpKSBjW2ldID0geFtpXSh0KTtcbiAgICByZXR1cm4gYztcbiAgfTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciBkID0gbmV3IERhdGU7XG4gIHJldHVybiBhID0gK2EsIGIgPSArYiwgZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBkLnNldFRpbWUoYSAqICgxIC0gdCkgKyBiICogdCksIGQ7XG4gIH07XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gYSA9ICthLCBiID0gK2IsIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gYSAqICgxIC0gdCkgKyBiICogdDtcbiAgfTtcbn1cbiIsICJpbXBvcnQgdmFsdWUgZnJvbSBcIi4vdmFsdWUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICB2YXIgaSA9IHt9LFxuICAgICAgYyA9IHt9LFxuICAgICAgaztcblxuICBpZiAoYSA9PT0gbnVsbCB8fCB0eXBlb2YgYSAhPT0gXCJvYmplY3RcIikgYSA9IHt9O1xuICBpZiAoYiA9PT0gbnVsbCB8fCB0eXBlb2YgYiAhPT0gXCJvYmplY3RcIikgYiA9IHt9O1xuXG4gIGZvciAoayBpbiBiKSB7XG4gICAgaWYgKGsgaW4gYSkge1xuICAgICAgaVtrXSA9IHZhbHVlKGFba10sIGJba10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjW2tdID0gYltrXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIGZvciAoayBpbiBpKSBjW2tdID0gaVtrXSh0KTtcbiAgICByZXR1cm4gYztcbiAgfTtcbn1cbiIsICJpbXBvcnQgbnVtYmVyIGZyb20gXCIuL251bWJlci5qc1wiO1xuXG52YXIgcmVBID0gL1stK10/KD86XFxkK1xcLj9cXGQqfFxcLj9cXGQrKSg/OltlRV1bLStdP1xcZCspPy9nLFxuICAgIHJlQiA9IG5ldyBSZWdFeHAocmVBLnNvdXJjZSwgXCJnXCIpO1xuXG5mdW5jdGlvbiB6ZXJvKGIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBiO1xuICB9O1xufVxuXG5mdW5jdGlvbiBvbmUoYikge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBiKHQpICsgXCJcIjtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICB2YXIgYmkgPSByZUEubGFzdEluZGV4ID0gcmVCLmxhc3RJbmRleCA9IDAsIC8vIHNjYW4gaW5kZXggZm9yIG5leHQgbnVtYmVyIGluIGJcbiAgICAgIGFtLCAvLyBjdXJyZW50IG1hdGNoIGluIGFcbiAgICAgIGJtLCAvLyBjdXJyZW50IG1hdGNoIGluIGJcbiAgICAgIGJzLCAvLyBzdHJpbmcgcHJlY2VkaW5nIGN1cnJlbnQgbnVtYmVyIGluIGIsIGlmIGFueVxuICAgICAgaSA9IC0xLCAvLyBpbmRleCBpbiBzXG4gICAgICBzID0gW10sIC8vIHN0cmluZyBjb25zdGFudHMgYW5kIHBsYWNlaG9sZGVyc1xuICAgICAgcSA9IFtdOyAvLyBudW1iZXIgaW50ZXJwb2xhdG9yc1xuXG4gIC8vIENvZXJjZSBpbnB1dHMgdG8gc3RyaW5ncy5cbiAgYSA9IGEgKyBcIlwiLCBiID0gYiArIFwiXCI7XG5cbiAgLy8gSW50ZXJwb2xhdGUgcGFpcnMgb2YgbnVtYmVycyBpbiBhICYgYi5cbiAgd2hpbGUgKChhbSA9IHJlQS5leGVjKGEpKVxuICAgICAgJiYgKGJtID0gcmVCLmV4ZWMoYikpKSB7XG4gICAgaWYgKChicyA9IGJtLmluZGV4KSA+IGJpKSB7IC8vIGEgc3RyaW5nIHByZWNlZGVzIHRoZSBuZXh0IG51bWJlciBpbiBiXG4gICAgICBicyA9IGIuc2xpY2UoYmksIGJzKTtcbiAgICAgIGlmIChzW2ldKSBzW2ldICs9IGJzOyAvLyBjb2FsZXNjZSB3aXRoIHByZXZpb3VzIHN0cmluZ1xuICAgICAgZWxzZSBzWysraV0gPSBicztcbiAgICB9XG4gICAgaWYgKChhbSA9IGFtWzBdKSA9PT0gKGJtID0gYm1bMF0pKSB7IC8vIG51bWJlcnMgaW4gYSAmIGIgbWF0Y2hcbiAgICAgIGlmIChzW2ldKSBzW2ldICs9IGJtOyAvLyBjb2FsZXNjZSB3aXRoIHByZXZpb3VzIHN0cmluZ1xuICAgICAgZWxzZSBzWysraV0gPSBibTtcbiAgICB9IGVsc2UgeyAvLyBpbnRlcnBvbGF0ZSBub24tbWF0Y2hpbmcgbnVtYmVyc1xuICAgICAgc1srK2ldID0gbnVsbDtcbiAgICAgIHEucHVzaCh7aTogaSwgeDogbnVtYmVyKGFtLCBibSl9KTtcbiAgICB9XG4gICAgYmkgPSByZUIubGFzdEluZGV4O1xuICB9XG5cbiAgLy8gQWRkIHJlbWFpbnMgb2YgYi5cbiAgaWYgKGJpIDwgYi5sZW5ndGgpIHtcbiAgICBicyA9IGIuc2xpY2UoYmkpO1xuICAgIGlmIChzW2ldKSBzW2ldICs9IGJzOyAvLyBjb2FsZXNjZSB3aXRoIHByZXZpb3VzIHN0cmluZ1xuICAgIGVsc2Ugc1srK2ldID0gYnM7XG4gIH1cblxuICAvLyBTcGVjaWFsIG9wdGltaXphdGlvbiBmb3Igb25seSBhIHNpbmdsZSBtYXRjaC5cbiAgLy8gT3RoZXJ3aXNlLCBpbnRlcnBvbGF0ZSBlYWNoIG9mIHRoZSBudW1iZXJzIGFuZCByZWpvaW4gdGhlIHN0cmluZy5cbiAgcmV0dXJuIHMubGVuZ3RoIDwgMiA/IChxWzBdXG4gICAgICA/IG9uZShxWzBdLngpXG4gICAgICA6IHplcm8oYikpXG4gICAgICA6IChiID0gcS5sZW5ndGgsIGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbzsgaSA8IGI7ICsraSkgc1sobyA9IHFbaV0pLmldID0gby54KHQpO1xuICAgICAgICAgIHJldHVybiBzLmpvaW4oXCJcIik7XG4gICAgICAgIH0pO1xufVxuIiwgImltcG9ydCB7Y29sb3J9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IHJnYiBmcm9tIFwiLi9yZ2IuanNcIjtcbmltcG9ydCB7Z2VuZXJpY0FycmF5fSBmcm9tIFwiLi9hcnJheS5qc1wiO1xuaW1wb3J0IGRhdGUgZnJvbSBcIi4vZGF0ZS5qc1wiO1xuaW1wb3J0IG51bWJlciBmcm9tIFwiLi9udW1iZXIuanNcIjtcbmltcG9ydCBvYmplY3QgZnJvbSBcIi4vb2JqZWN0LmpzXCI7XG5pbXBvcnQgc3RyaW5nIGZyb20gXCIuL3N0cmluZy5qc1wiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5pbXBvcnQgbnVtYmVyQXJyYXksIHtpc051bWJlckFycmF5fSBmcm9tIFwiLi9udW1iZXJBcnJheS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciB0ID0gdHlwZW9mIGIsIGM7XG4gIHJldHVybiBiID09IG51bGwgfHwgdCA9PT0gXCJib29sZWFuXCIgPyBjb25zdGFudChiKVxuICAgICAgOiAodCA9PT0gXCJudW1iZXJcIiA/IG51bWJlclxuICAgICAgOiB0ID09PSBcInN0cmluZ1wiID8gKChjID0gY29sb3IoYikpID8gKGIgPSBjLCByZ2IpIDogc3RyaW5nKVxuICAgICAgOiBiIGluc3RhbmNlb2YgY29sb3IgPyByZ2JcbiAgICAgIDogYiBpbnN0YW5jZW9mIERhdGUgPyBkYXRlXG4gICAgICA6IGlzTnVtYmVyQXJyYXkoYikgPyBudW1iZXJBcnJheVxuICAgICAgOiBBcnJheS5pc0FycmF5KGIpID8gZ2VuZXJpY0FycmF5XG4gICAgICA6IHR5cGVvZiBiLnZhbHVlT2YgIT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgYi50b1N0cmluZyAhPT0gXCJmdW5jdGlvblwiIHx8IGlzTmFOKGIpID8gb2JqZWN0XG4gICAgICA6IG51bWJlcikoYSwgYik7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gYSA9ICthLCBiID0gK2IsIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChhICogKDEgLSB0KSArIGIgKiB0KTtcbiAgfTtcbn1cbiIsICJ2YXIgZGVncmVlcyA9IDE4MCAvIE1hdGguUEk7XG5cbmV4cG9ydCB2YXIgaWRlbnRpdHkgPSB7XG4gIHRyYW5zbGF0ZVg6IDAsXG4gIHRyYW5zbGF0ZVk6IDAsXG4gIHJvdGF0ZTogMCxcbiAgc2tld1g6IDAsXG4gIHNjYWxlWDogMSxcbiAgc2NhbGVZOiAxXG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiLCBjLCBkLCBlLCBmKSB7XG4gIHZhciBzY2FsZVgsIHNjYWxlWSwgc2tld1g7XG4gIGlmIChzY2FsZVggPSBNYXRoLnNxcnQoYSAqIGEgKyBiICogYikpIGEgLz0gc2NhbGVYLCBiIC89IHNjYWxlWDtcbiAgaWYgKHNrZXdYID0gYSAqIGMgKyBiICogZCkgYyAtPSBhICogc2tld1gsIGQgLT0gYiAqIHNrZXdYO1xuICBpZiAoc2NhbGVZID0gTWF0aC5zcXJ0KGMgKiBjICsgZCAqIGQpKSBjIC89IHNjYWxlWSwgZCAvPSBzY2FsZVksIHNrZXdYIC89IHNjYWxlWTtcbiAgaWYgKGEgKiBkIDwgYiAqIGMpIGEgPSAtYSwgYiA9IC1iLCBza2V3WCA9IC1za2V3WCwgc2NhbGVYID0gLXNjYWxlWDtcbiAgcmV0dXJuIHtcbiAgICB0cmFuc2xhdGVYOiBlLFxuICAgIHRyYW5zbGF0ZVk6IGYsXG4gICAgcm90YXRlOiBNYXRoLmF0YW4yKGIsIGEpICogZGVncmVlcyxcbiAgICBza2V3WDogTWF0aC5hdGFuKHNrZXdYKSAqIGRlZ3JlZXMsXG4gICAgc2NhbGVYOiBzY2FsZVgsXG4gICAgc2NhbGVZOiBzY2FsZVlcbiAgfTtcbn1cbiIsICJpbXBvcnQgZGVjb21wb3NlLCB7aWRlbnRpdHl9IGZyb20gXCIuL2RlY29tcG9zZS5qc1wiO1xuXG52YXIgc3ZnTm9kZTtcblxuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNzcyh2YWx1ZSkge1xuICBjb25zdCBtID0gbmV3ICh0eXBlb2YgRE9NTWF0cml4ID09PSBcImZ1bmN0aW9uXCIgPyBET01NYXRyaXggOiBXZWJLaXRDU1NNYXRyaXgpKHZhbHVlICsgXCJcIik7XG4gIHJldHVybiBtLmlzSWRlbnRpdHkgPyBpZGVudGl0eSA6IGRlY29tcG9zZShtLmEsIG0uYiwgbS5jLCBtLmQsIG0uZSwgbS5mKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3ZnKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gaWRlbnRpdHk7XG4gIGlmICghc3ZnTm9kZSkgc3ZnTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIFwiZ1wiKTtcbiAgc3ZnTm9kZS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIiwgdmFsdWUpO1xuICBpZiAoISh2YWx1ZSA9IHN2Z05vZGUudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSkpIHJldHVybiBpZGVudGl0eTtcbiAgdmFsdWUgPSB2YWx1ZS5tYXRyaXg7XG4gIHJldHVybiBkZWNvbXBvc2UodmFsdWUuYSwgdmFsdWUuYiwgdmFsdWUuYywgdmFsdWUuZCwgdmFsdWUuZSwgdmFsdWUuZik7XG59XG4iLCAiaW1wb3J0IG51bWJlciBmcm9tIFwiLi4vbnVtYmVyLmpzXCI7XG5pbXBvcnQge3BhcnNlQ3NzLCBwYXJzZVN2Z30gZnJvbSBcIi4vcGFyc2UuanNcIjtcblxuZnVuY3Rpb24gaW50ZXJwb2xhdGVUcmFuc2Zvcm0ocGFyc2UsIHB4Q29tbWEsIHB4UGFyZW4sIGRlZ1BhcmVuKSB7XG5cbiAgZnVuY3Rpb24gcG9wKHMpIHtcbiAgICByZXR1cm4gcy5sZW5ndGggPyBzLnBvcCgpICsgXCIgXCIgOiBcIlwiO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNsYXRlKHhhLCB5YSwgeGIsIHliLCBzLCBxKSB7XG4gICAgaWYgKHhhICE9PSB4YiB8fCB5YSAhPT0geWIpIHtcbiAgICAgIHZhciBpID0gcy5wdXNoKFwidHJhbnNsYXRlKFwiLCBudWxsLCBweENvbW1hLCBudWxsLCBweFBhcmVuKTtcbiAgICAgIHEucHVzaCh7aTogaSAtIDQsIHg6IG51bWJlcih4YSwgeGIpfSwge2k6IGkgLSAyLCB4OiBudW1iZXIoeWEsIHliKX0pO1xuICAgIH0gZWxzZSBpZiAoeGIgfHwgeWIpIHtcbiAgICAgIHMucHVzaChcInRyYW5zbGF0ZShcIiArIHhiICsgcHhDb21tYSArIHliICsgcHhQYXJlbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcm90YXRlKGEsIGIsIHMsIHEpIHtcbiAgICBpZiAoYSAhPT0gYikge1xuICAgICAgaWYgKGEgLSBiID4gMTgwKSBiICs9IDM2MDsgZWxzZSBpZiAoYiAtIGEgPiAxODApIGEgKz0gMzYwOyAvLyBzaG9ydGVzdCBwYXRoXG4gICAgICBxLnB1c2goe2k6IHMucHVzaChwb3AocykgKyBcInJvdGF0ZShcIiwgbnVsbCwgZGVnUGFyZW4pIC0gMiwgeDogbnVtYmVyKGEsIGIpfSk7XG4gICAgfSBlbHNlIGlmIChiKSB7XG4gICAgICBzLnB1c2gocG9wKHMpICsgXCJyb3RhdGUoXCIgKyBiICsgZGVnUGFyZW4pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNrZXdYKGEsIGIsIHMsIHEpIHtcbiAgICBpZiAoYSAhPT0gYikge1xuICAgICAgcS5wdXNoKHtpOiBzLnB1c2gocG9wKHMpICsgXCJza2V3WChcIiwgbnVsbCwgZGVnUGFyZW4pIC0gMiwgeDogbnVtYmVyKGEsIGIpfSk7XG4gICAgfSBlbHNlIGlmIChiKSB7XG4gICAgICBzLnB1c2gocG9wKHMpICsgXCJza2V3WChcIiArIGIgKyBkZWdQYXJlbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2NhbGUoeGEsIHlhLCB4YiwgeWIsIHMsIHEpIHtcbiAgICBpZiAoeGEgIT09IHhiIHx8IHlhICE9PSB5Yikge1xuICAgICAgdmFyIGkgPSBzLnB1c2gocG9wKHMpICsgXCJzY2FsZShcIiwgbnVsbCwgXCIsXCIsIG51bGwsIFwiKVwiKTtcbiAgICAgIHEucHVzaCh7aTogaSAtIDQsIHg6IG51bWJlcih4YSwgeGIpfSwge2k6IGkgLSAyLCB4OiBudW1iZXIoeWEsIHliKX0pO1xuICAgIH0gZWxzZSBpZiAoeGIgIT09IDEgfHwgeWIgIT09IDEpIHtcbiAgICAgIHMucHVzaChwb3AocykgKyBcInNjYWxlKFwiICsgeGIgKyBcIixcIiArIHliICsgXCIpXCIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbihhLCBiKSB7XG4gICAgdmFyIHMgPSBbXSwgLy8gc3RyaW5nIGNvbnN0YW50cyBhbmQgcGxhY2Vob2xkZXJzXG4gICAgICAgIHEgPSBbXTsgLy8gbnVtYmVyIGludGVycG9sYXRvcnNcbiAgICBhID0gcGFyc2UoYSksIGIgPSBwYXJzZShiKTtcbiAgICB0cmFuc2xhdGUoYS50cmFuc2xhdGVYLCBhLnRyYW5zbGF0ZVksIGIudHJhbnNsYXRlWCwgYi50cmFuc2xhdGVZLCBzLCBxKTtcbiAgICByb3RhdGUoYS5yb3RhdGUsIGIucm90YXRlLCBzLCBxKTtcbiAgICBza2V3WChhLnNrZXdYLCBiLnNrZXdYLCBzLCBxKTtcbiAgICBzY2FsZShhLnNjYWxlWCwgYS5zY2FsZVksIGIuc2NhbGVYLCBiLnNjYWxlWSwgcywgcSk7XG4gICAgYSA9IGIgPSBudWxsOyAvLyBnY1xuICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgaSA9IC0xLCBuID0gcS5sZW5ndGgsIG87XG4gICAgICB3aGlsZSAoKytpIDwgbikgc1sobyA9IHFbaV0pLmldID0gby54KHQpO1xuICAgICAgcmV0dXJuIHMuam9pbihcIlwiKTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgdmFyIGludGVycG9sYXRlVHJhbnNmb3JtQ3NzID0gaW50ZXJwb2xhdGVUcmFuc2Zvcm0ocGFyc2VDc3MsIFwicHgsIFwiLCBcInB4KVwiLCBcImRlZylcIik7XG5leHBvcnQgdmFyIGludGVycG9sYXRlVHJhbnNmb3JtU3ZnID0gaW50ZXJwb2xhdGVUcmFuc2Zvcm0ocGFyc2VTdmcsIFwiLCBcIiwgXCIpXCIsIFwiKVwiKTtcbiIsICJ2YXIgZXBzaWxvbjIgPSAxZS0xMjtcblxuZnVuY3Rpb24gY29zaCh4KSB7XG4gIHJldHVybiAoKHggPSBNYXRoLmV4cCh4KSkgKyAxIC8geCkgLyAyO1xufVxuXG5mdW5jdGlvbiBzaW5oKHgpIHtcbiAgcmV0dXJuICgoeCA9IE1hdGguZXhwKHgpKSAtIDEgLyB4KSAvIDI7XG59XG5cbmZ1bmN0aW9uIHRhbmgoeCkge1xuICByZXR1cm4gKCh4ID0gTWF0aC5leHAoMiAqIHgpKSAtIDEpIC8gKHggKyAxKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIHpvb21SaG8ocmhvLCByaG8yLCByaG80KSB7XG5cbiAgLy8gcDAgPSBbdXgwLCB1eTAsIHcwXVxuICAvLyBwMSA9IFt1eDEsIHV5MSwgdzFdXG4gIGZ1bmN0aW9uIHpvb20ocDAsIHAxKSB7XG4gICAgdmFyIHV4MCA9IHAwWzBdLCB1eTAgPSBwMFsxXSwgdzAgPSBwMFsyXSxcbiAgICAgICAgdXgxID0gcDFbMF0sIHV5MSA9IHAxWzFdLCB3MSA9IHAxWzJdLFxuICAgICAgICBkeCA9IHV4MSAtIHV4MCxcbiAgICAgICAgZHkgPSB1eTEgLSB1eTAsXG4gICAgICAgIGQyID0gZHggKiBkeCArIGR5ICogZHksXG4gICAgICAgIGksXG4gICAgICAgIFM7XG5cbiAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHUwIFx1MjI0NSB1MS5cbiAgICBpZiAoZDIgPCBlcHNpbG9uMikge1xuICAgICAgUyA9IE1hdGgubG9nKHcxIC8gdzApIC8gcmhvO1xuICAgICAgaSA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICB1eDAgKyB0ICogZHgsXG4gICAgICAgICAgdXkwICsgdCAqIGR5LFxuICAgICAgICAgIHcwICogTWF0aC5leHAocmhvICogdCAqIFMpXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR2VuZXJhbCBjYXNlLlxuICAgIGVsc2Uge1xuICAgICAgdmFyIGQxID0gTWF0aC5zcXJ0KGQyKSxcbiAgICAgICAgICBiMCA9ICh3MSAqIHcxIC0gdzAgKiB3MCArIHJobzQgKiBkMikgLyAoMiAqIHcwICogcmhvMiAqIGQxKSxcbiAgICAgICAgICBiMSA9ICh3MSAqIHcxIC0gdzAgKiB3MCAtIHJobzQgKiBkMikgLyAoMiAqIHcxICogcmhvMiAqIGQxKSxcbiAgICAgICAgICByMCA9IE1hdGgubG9nKE1hdGguc3FydChiMCAqIGIwICsgMSkgLSBiMCksXG4gICAgICAgICAgcjEgPSBNYXRoLmxvZyhNYXRoLnNxcnQoYjEgKiBiMSArIDEpIC0gYjEpO1xuICAgICAgUyA9IChyMSAtIHIwKSAvIHJobztcbiAgICAgIGkgPSBmdW5jdGlvbih0KSB7XG4gICAgICAgIHZhciBzID0gdCAqIFMsXG4gICAgICAgICAgICBjb3NocjAgPSBjb3NoKHIwKSxcbiAgICAgICAgICAgIHUgPSB3MCAvIChyaG8yICogZDEpICogKGNvc2hyMCAqIHRhbmgocmhvICogcyArIHIwKSAtIHNpbmgocjApKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICB1eDAgKyB1ICogZHgsXG4gICAgICAgICAgdXkwICsgdSAqIGR5LFxuICAgICAgICAgIHcwICogY29zaHIwIC8gY29zaChyaG8gKiBzICsgcjApXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaS5kdXJhdGlvbiA9IFMgKiAxMDAwICogcmhvIC8gTWF0aC5TUVJUMjtcblxuICAgIHJldHVybiBpO1xuICB9XG5cbiAgem9vbS5yaG8gPSBmdW5jdGlvbihfKSB7XG4gICAgdmFyIF8xID0gTWF0aC5tYXgoMWUtMywgK18pLCBfMiA9IF8xICogXzEsIF80ID0gXzIgKiBfMjtcbiAgICByZXR1cm4gem9vbVJobyhfMSwgXzIsIF80KTtcbiAgfTtcblxuICByZXR1cm4gem9vbTtcbn0pKE1hdGguU1FSVDIsIDIsIDQpO1xuIiwgImltcG9ydCB7Y3ViZWhlbGl4IGFzIGNvbG9yQ3ViZWhlbGl4fSBmcm9tIFwiZDMtY29sb3JcIjtcbmltcG9ydCBjb2xvciwge2h1ZX0gZnJvbSBcIi4vY29sb3IuanNcIjtcblxuZnVuY3Rpb24gY3ViZWhlbGl4KGh1ZSkge1xuICByZXR1cm4gKGZ1bmN0aW9uIGN1YmVoZWxpeEdhbW1hKHkpIHtcbiAgICB5ID0gK3k7XG5cbiAgICBmdW5jdGlvbiBjdWJlaGVsaXgoc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGggPSBodWUoKHN0YXJ0ID0gY29sb3JDdWJlaGVsaXgoc3RhcnQpKS5oLCAoZW5kID0gY29sb3JDdWJlaGVsaXgoZW5kKSkuaCksXG4gICAgICAgICAgcyA9IGNvbG9yKHN0YXJ0LnMsIGVuZC5zKSxcbiAgICAgICAgICBsID0gY29sb3Ioc3RhcnQubCwgZW5kLmwpLFxuICAgICAgICAgIG9wYWNpdHkgPSBjb2xvcihzdGFydC5vcGFjaXR5LCBlbmQub3BhY2l0eSk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgICAgICBzdGFydC5oID0gaCh0KTtcbiAgICAgICAgc3RhcnQucyA9IHModCk7XG4gICAgICAgIHN0YXJ0LmwgPSBsKE1hdGgucG93KHQsIHkpKTtcbiAgICAgICAgc3RhcnQub3BhY2l0eSA9IG9wYWNpdHkodCk7XG4gICAgICAgIHJldHVybiBzdGFydCArIFwiXCI7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGN1YmVoZWxpeC5nYW1tYSA9IGN1YmVoZWxpeEdhbW1hO1xuXG4gICAgcmV0dXJuIGN1YmVoZWxpeDtcbiAgfSkoMSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGN1YmVoZWxpeChodWUpO1xuZXhwb3J0IHZhciBjdWJlaGVsaXhMb25nID0gY3ViZWhlbGl4KGNvbG9yKTtcbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnRlcnBvbGF0b3IsIG4pIHtcbiAgdmFyIHNhbXBsZXMgPSBuZXcgQXJyYXkobik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSBzYW1wbGVzW2ldID0gaW50ZXJwb2xhdG9yKGkgLyAobiAtIDEpKTtcbiAgcmV0dXJuIHNhbXBsZXM7XG59XG4iLCAidmFyIGZyYW1lID0gMCwgLy8gaXMgYW4gYW5pbWF0aW9uIGZyYW1lIHBlbmRpbmc/XG4gICAgdGltZW91dCA9IDAsIC8vIGlzIGEgdGltZW91dCBwZW5kaW5nP1xuICAgIGludGVydmFsID0gMCwgLy8gYXJlIGFueSB0aW1lcnMgYWN0aXZlP1xuICAgIHBva2VEZWxheSA9IDEwMDAsIC8vIGhvdyBmcmVxdWVudGx5IHdlIGNoZWNrIGZvciBjbG9jayBza2V3XG4gICAgdGFza0hlYWQsXG4gICAgdGFza1RhaWwsXG4gICAgY2xvY2tMYXN0ID0gMCxcbiAgICBjbG9ja05vdyA9IDAsXG4gICAgY2xvY2tTa2V3ID0gMCxcbiAgICBjbG9jayA9IHR5cGVvZiBwZXJmb3JtYW5jZSA9PT0gXCJvYmplY3RcIiAmJiBwZXJmb3JtYW5jZS5ub3cgPyBwZXJmb3JtYW5jZSA6IERhdGUsXG4gICAgc2V0RnJhbWUgPSB0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiICYmIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPyB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KSA6IGZ1bmN0aW9uKGYpIHsgc2V0VGltZW91dChmLCAxNyk7IH07XG5cbmV4cG9ydCBmdW5jdGlvbiBub3coKSB7XG4gIHJldHVybiBjbG9ja05vdyB8fCAoc2V0RnJhbWUoY2xlYXJOb3cpLCBjbG9ja05vdyA9IGNsb2NrLm5vdygpICsgY2xvY2tTa2V3KTtcbn1cblxuZnVuY3Rpb24gY2xlYXJOb3coKSB7XG4gIGNsb2NrTm93ID0gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRpbWVyKCkge1xuICB0aGlzLl9jYWxsID1cbiAgdGhpcy5fdGltZSA9XG4gIHRoaXMuX25leHQgPSBudWxsO1xufVxuXG5UaW1lci5wcm90b3R5cGUgPSB0aW1lci5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBUaW1lcixcbiAgcmVzdGFydDogZnVuY3Rpb24oY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSB7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb25cIik7XG4gICAgdGltZSA9ICh0aW1lID09IG51bGwgPyBub3coKSA6ICt0aW1lKSArIChkZWxheSA9PSBudWxsID8gMCA6ICtkZWxheSk7XG4gICAgaWYgKCF0aGlzLl9uZXh0ICYmIHRhc2tUYWlsICE9PSB0aGlzKSB7XG4gICAgICBpZiAodGFza1RhaWwpIHRhc2tUYWlsLl9uZXh0ID0gdGhpcztcbiAgICAgIGVsc2UgdGFza0hlYWQgPSB0aGlzO1xuICAgICAgdGFza1RhaWwgPSB0aGlzO1xuICAgIH1cbiAgICB0aGlzLl9jYWxsID0gY2FsbGJhY2s7XG4gICAgdGhpcy5fdGltZSA9IHRpbWU7XG4gICAgc2xlZXAoKTtcbiAgfSxcbiAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX2NhbGwpIHtcbiAgICAgIHRoaXMuX2NhbGwgPSBudWxsO1xuICAgICAgdGhpcy5fdGltZSA9IEluZmluaXR5O1xuICAgICAgc2xlZXAoKTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB0aW1lcihjYWxsYmFjaywgZGVsYXksIHRpbWUpIHtcbiAgdmFyIHQgPSBuZXcgVGltZXI7XG4gIHQucmVzdGFydChjYWxsYmFjaywgZGVsYXksIHRpbWUpO1xuICByZXR1cm4gdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRpbWVyRmx1c2goKSB7XG4gIG5vdygpOyAvLyBHZXQgdGhlIGN1cnJlbnQgdGltZSwgaWYgbm90IGFscmVhZHkgc2V0LlxuICArK2ZyYW1lOyAvLyBQcmV0ZW5kIHdlXHUyMDE5dmUgc2V0IGFuIGFsYXJtLCBpZiB3ZSBoYXZlblx1MjAxOXQgYWxyZWFkeS5cbiAgdmFyIHQgPSB0YXNrSGVhZCwgZTtcbiAgd2hpbGUgKHQpIHtcbiAgICBpZiAoKGUgPSBjbG9ja05vdyAtIHQuX3RpbWUpID49IDApIHQuX2NhbGwuY2FsbChudWxsLCBlKTtcbiAgICB0ID0gdC5fbmV4dDtcbiAgfVxuICAtLWZyYW1lO1xufVxuXG5mdW5jdGlvbiB3YWtlKCkge1xuICBjbG9ja05vdyA9IChjbG9ja0xhc3QgPSBjbG9jay5ub3coKSkgKyBjbG9ja1NrZXc7XG4gIGZyYW1lID0gdGltZW91dCA9IDA7XG4gIHRyeSB7XG4gICAgdGltZXJGbHVzaCgpO1xuICB9IGZpbmFsbHkge1xuICAgIGZyYW1lID0gMDtcbiAgICBuYXAoKTtcbiAgICBjbG9ja05vdyA9IDA7XG4gIH1cbn1cblxuZnVuY3Rpb24gcG9rZSgpIHtcbiAgdmFyIG5vdyA9IGNsb2NrLm5vdygpLCBkZWxheSA9IG5vdyAtIGNsb2NrTGFzdDtcbiAgaWYgKGRlbGF5ID4gcG9rZURlbGF5KSBjbG9ja1NrZXcgLT0gZGVsYXksIGNsb2NrTGFzdCA9IG5vdztcbn1cblxuZnVuY3Rpb24gbmFwKCkge1xuICB2YXIgdDAsIHQxID0gdGFza0hlYWQsIHQyLCB0aW1lID0gSW5maW5pdHk7XG4gIHdoaWxlICh0MSkge1xuICAgIGlmICh0MS5fY2FsbCkge1xuICAgICAgaWYgKHRpbWUgPiB0MS5fdGltZSkgdGltZSA9IHQxLl90aW1lO1xuICAgICAgdDAgPSB0MSwgdDEgPSB0MS5fbmV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgdDIgPSB0MS5fbmV4dCwgdDEuX25leHQgPSBudWxsO1xuICAgICAgdDEgPSB0MCA/IHQwLl9uZXh0ID0gdDIgOiB0YXNrSGVhZCA9IHQyO1xuICAgIH1cbiAgfVxuICB0YXNrVGFpbCA9IHQwO1xuICBzbGVlcCh0aW1lKTtcbn1cblxuZnVuY3Rpb24gc2xlZXAodGltZSkge1xuICBpZiAoZnJhbWUpIHJldHVybjsgLy8gU29vbmVzdCBhbGFybSBhbHJlYWR5IHNldCwgb3Igd2lsbCBiZS5cbiAgaWYgKHRpbWVvdXQpIHRpbWVvdXQgPSBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gIHZhciBkZWxheSA9IHRpbWUgLSBjbG9ja05vdzsgLy8gU3RyaWN0bHkgbGVzcyB0aGFuIGlmIHdlIHJlY29tcHV0ZWQgY2xvY2tOb3cuXG4gIGlmIChkZWxheSA+IDI0KSB7XG4gICAgaWYgKHRpbWUgPCBJbmZpbml0eSkgdGltZW91dCA9IHNldFRpbWVvdXQod2FrZSwgdGltZSAtIGNsb2NrLm5vdygpIC0gY2xvY2tTa2V3KTtcbiAgICBpZiAoaW50ZXJ2YWwpIGludGVydmFsID0gY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKCFpbnRlcnZhbCkgY2xvY2tMYXN0ID0gY2xvY2subm93KCksIGludGVydmFsID0gc2V0SW50ZXJ2YWwocG9rZSwgcG9rZURlbGF5KTtcbiAgICBmcmFtZSA9IDEsIHNldEZyYW1lKHdha2UpO1xuICB9XG59XG4iLCAiaW1wb3J0IHtUaW1lcn0gZnJvbSBcIi4vdGltZXIuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSB7XG4gIHZhciB0ID0gbmV3IFRpbWVyO1xuICBkZWxheSA9IGRlbGF5ID09IG51bGwgPyAwIDogK2RlbGF5O1xuICB0LnJlc3RhcnQoZWxhcHNlZCA9PiB7XG4gICAgdC5zdG9wKCk7XG4gICAgY2FsbGJhY2soZWxhcHNlZCArIGRlbGF5KTtcbiAgfSwgZGVsYXksIHRpbWUpO1xuICByZXR1cm4gdDtcbn1cbiIsICJpbXBvcnQge2Rpc3BhdGNofSBmcm9tIFwiZDMtZGlzcGF0Y2hcIjtcbmltcG9ydCB7dGltZXIsIHRpbWVvdXR9IGZyb20gXCJkMy10aW1lclwiO1xuXG52YXIgZW1wdHlPbiA9IGRpc3BhdGNoKFwic3RhcnRcIiwgXCJlbmRcIiwgXCJjYW5jZWxcIiwgXCJpbnRlcnJ1cHRcIik7XG52YXIgZW1wdHlUd2VlbiA9IFtdO1xuXG5leHBvcnQgdmFyIENSRUFURUQgPSAwO1xuZXhwb3J0IHZhciBTQ0hFRFVMRUQgPSAxO1xuZXhwb3J0IHZhciBTVEFSVElORyA9IDI7XG5leHBvcnQgdmFyIFNUQVJURUQgPSAzO1xuZXhwb3J0IHZhciBSVU5OSU5HID0gNDtcbmV4cG9ydCB2YXIgRU5ESU5HID0gNTtcbmV4cG9ydCB2YXIgRU5ERUQgPSA2O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihub2RlLCBuYW1lLCBpZCwgaW5kZXgsIGdyb3VwLCB0aW1pbmcpIHtcbiAgdmFyIHNjaGVkdWxlcyA9IG5vZGUuX190cmFuc2l0aW9uO1xuICBpZiAoIXNjaGVkdWxlcykgbm9kZS5fX3RyYW5zaXRpb24gPSB7fTtcbiAgZWxzZSBpZiAoaWQgaW4gc2NoZWR1bGVzKSByZXR1cm47XG4gIGNyZWF0ZShub2RlLCBpZCwge1xuICAgIG5hbWU6IG5hbWUsXG4gICAgaW5kZXg6IGluZGV4LCAvLyBGb3IgY29udGV4dCBkdXJpbmcgY2FsbGJhY2suXG4gICAgZ3JvdXA6IGdyb3VwLCAvLyBGb3IgY29udGV4dCBkdXJpbmcgY2FsbGJhY2suXG4gICAgb246IGVtcHR5T24sXG4gICAgdHdlZW46IGVtcHR5VHdlZW4sXG4gICAgdGltZTogdGltaW5nLnRpbWUsXG4gICAgZGVsYXk6IHRpbWluZy5kZWxheSxcbiAgICBkdXJhdGlvbjogdGltaW5nLmR1cmF0aW9uLFxuICAgIGVhc2U6IHRpbWluZy5lYXNlLFxuICAgIHRpbWVyOiBudWxsLFxuICAgIHN0YXRlOiBDUkVBVEVEXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdChub2RlLCBpZCkge1xuICB2YXIgc2NoZWR1bGUgPSBnZXQobm9kZSwgaWQpO1xuICBpZiAoc2NoZWR1bGUuc3RhdGUgPiBDUkVBVEVEKSB0aHJvdyBuZXcgRXJyb3IoXCJ0b28gbGF0ZTsgYWxyZWFkeSBzY2hlZHVsZWRcIik7XG4gIHJldHVybiBzY2hlZHVsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldChub2RlLCBpZCkge1xuICB2YXIgc2NoZWR1bGUgPSBnZXQobm9kZSwgaWQpO1xuICBpZiAoc2NoZWR1bGUuc3RhdGUgPiBTVEFSVEVEKSB0aHJvdyBuZXcgRXJyb3IoXCJ0b28gbGF0ZTsgYWxyZWFkeSBydW5uaW5nXCIpO1xuICByZXR1cm4gc2NoZWR1bGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXQobm9kZSwgaWQpIHtcbiAgdmFyIHNjaGVkdWxlID0gbm9kZS5fX3RyYW5zaXRpb247XG4gIGlmICghc2NoZWR1bGUgfHwgIShzY2hlZHVsZSA9IHNjaGVkdWxlW2lkXSkpIHRocm93IG5ldyBFcnJvcihcInRyYW5zaXRpb24gbm90IGZvdW5kXCIpO1xuICByZXR1cm4gc2NoZWR1bGU7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZShub2RlLCBpZCwgc2VsZikge1xuICB2YXIgc2NoZWR1bGVzID0gbm9kZS5fX3RyYW5zaXRpb24sXG4gICAgICB0d2VlbjtcblxuICAvLyBJbml0aWFsaXplIHRoZSBzZWxmIHRpbWVyIHdoZW4gdGhlIHRyYW5zaXRpb24gaXMgY3JlYXRlZC5cbiAgLy8gTm90ZSB0aGUgYWN0dWFsIGRlbGF5IGlzIG5vdCBrbm93biB1bnRpbCB0aGUgZmlyc3QgY2FsbGJhY2shXG4gIHNjaGVkdWxlc1tpZF0gPSBzZWxmO1xuICBzZWxmLnRpbWVyID0gdGltZXIoc2NoZWR1bGUsIDAsIHNlbGYudGltZSk7XG5cbiAgZnVuY3Rpb24gc2NoZWR1bGUoZWxhcHNlZCkge1xuICAgIHNlbGYuc3RhdGUgPSBTQ0hFRFVMRUQ7XG4gICAgc2VsZi50aW1lci5yZXN0YXJ0KHN0YXJ0LCBzZWxmLmRlbGF5LCBzZWxmLnRpbWUpO1xuXG4gICAgLy8gSWYgdGhlIGVsYXBzZWQgZGVsYXkgaXMgbGVzcyB0aGFuIG91ciBmaXJzdCBzbGVlcCwgc3RhcnQgaW1tZWRpYXRlbHkuXG4gICAgaWYgKHNlbGYuZGVsYXkgPD0gZWxhcHNlZCkgc3RhcnQoZWxhcHNlZCAtIHNlbGYuZGVsYXkpO1xuICB9XG5cbiAgZnVuY3Rpb24gc3RhcnQoZWxhcHNlZCkge1xuICAgIHZhciBpLCBqLCBuLCBvO1xuXG4gICAgLy8gSWYgdGhlIHN0YXRlIGlzIG5vdCBTQ0hFRFVMRUQsIHRoZW4gd2UgcHJldmlvdXNseSBlcnJvcmVkIG9uIHN0YXJ0LlxuICAgIGlmIChzZWxmLnN0YXRlICE9PSBTQ0hFRFVMRUQpIHJldHVybiBzdG9wKCk7XG5cbiAgICBmb3IgKGkgaW4gc2NoZWR1bGVzKSB7XG4gICAgICBvID0gc2NoZWR1bGVzW2ldO1xuICAgICAgaWYgKG8ubmFtZSAhPT0gc2VsZi5uYW1lKSBjb250aW51ZTtcblxuICAgICAgLy8gV2hpbGUgdGhpcyBlbGVtZW50IGFscmVhZHkgaGFzIGEgc3RhcnRpbmcgdHJhbnNpdGlvbiBkdXJpbmcgdGhpcyBmcmFtZSxcbiAgICAgIC8vIGRlZmVyIHN0YXJ0aW5nIGFuIGludGVycnVwdGluZyB0cmFuc2l0aW9uIHVudGlsIHRoYXQgdHJhbnNpdGlvbiBoYXMgYVxuICAgICAgLy8gY2hhbmNlIHRvIHRpY2sgKGFuZCBwb3NzaWJseSBlbmQpOyBzZWUgZDMvZDMtdHJhbnNpdGlvbiM1NCFcbiAgICAgIGlmIChvLnN0YXRlID09PSBTVEFSVEVEKSByZXR1cm4gdGltZW91dChzdGFydCk7XG5cbiAgICAgIC8vIEludGVycnVwdCB0aGUgYWN0aXZlIHRyYW5zaXRpb24sIGlmIGFueS5cbiAgICAgIGlmIChvLnN0YXRlID09PSBSVU5OSU5HKSB7XG4gICAgICAgIG8uc3RhdGUgPSBFTkRFRDtcbiAgICAgICAgby50aW1lci5zdG9wKCk7XG4gICAgICAgIG8ub24uY2FsbChcImludGVycnVwdFwiLCBub2RlLCBub2RlLl9fZGF0YV9fLCBvLmluZGV4LCBvLmdyb3VwKTtcbiAgICAgICAgZGVsZXRlIHNjaGVkdWxlc1tpXTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2FuY2VsIGFueSBwcmUtZW1wdGVkIHRyYW5zaXRpb25zLlxuICAgICAgZWxzZSBpZiAoK2kgPCBpZCkge1xuICAgICAgICBvLnN0YXRlID0gRU5ERUQ7XG4gICAgICAgIG8udGltZXIuc3RvcCgpO1xuICAgICAgICBvLm9uLmNhbGwoXCJjYW5jZWxcIiwgbm9kZSwgbm9kZS5fX2RhdGFfXywgby5pbmRleCwgby5ncm91cCk7XG4gICAgICAgIGRlbGV0ZSBzY2hlZHVsZXNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGVmZXIgdGhlIGZpcnN0IHRpY2sgdG8gZW5kIG9mIHRoZSBjdXJyZW50IGZyYW1lOyBzZWUgZDMvZDMjMTU3Ni5cbiAgICAvLyBOb3RlIHRoZSB0cmFuc2l0aW9uIG1heSBiZSBjYW5jZWxlZCBhZnRlciBzdGFydCBhbmQgYmVmb3JlIHRoZSBmaXJzdCB0aWNrIVxuICAgIC8vIE5vdGUgdGhpcyBtdXN0IGJlIHNjaGVkdWxlZCBiZWZvcmUgdGhlIHN0YXJ0IGV2ZW50OyBzZWUgZDMvZDMtdHJhbnNpdGlvbiMxNiFcbiAgICAvLyBBc3N1bWluZyB0aGlzIGlzIHN1Y2Nlc3NmdWwsIHN1YnNlcXVlbnQgY2FsbGJhY2tzIGdvIHN0cmFpZ2h0IHRvIHRpY2suXG4gICAgdGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgIGlmIChzZWxmLnN0YXRlID09PSBTVEFSVEVEKSB7XG4gICAgICAgIHNlbGYuc3RhdGUgPSBSVU5OSU5HO1xuICAgICAgICBzZWxmLnRpbWVyLnJlc3RhcnQodGljaywgc2VsZi5kZWxheSwgc2VsZi50aW1lKTtcbiAgICAgICAgdGljayhlbGFwc2VkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIERpc3BhdGNoIHRoZSBzdGFydCBldmVudC5cbiAgICAvLyBOb3RlIHRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSB0aGUgdHdlZW4gYXJlIGluaXRpYWxpemVkLlxuICAgIHNlbGYuc3RhdGUgPSBTVEFSVElORztcbiAgICBzZWxmLm9uLmNhbGwoXCJzdGFydFwiLCBub2RlLCBub2RlLl9fZGF0YV9fLCBzZWxmLmluZGV4LCBzZWxmLmdyb3VwKTtcbiAgICBpZiAoc2VsZi5zdGF0ZSAhPT0gU1RBUlRJTkcpIHJldHVybjsgLy8gaW50ZXJydXB0ZWRcbiAgICBzZWxmLnN0YXRlID0gU1RBUlRFRDtcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIHR3ZWVuLCBkZWxldGluZyBudWxsIHR3ZWVuLlxuICAgIHR3ZWVuID0gbmV3IEFycmF5KG4gPSBzZWxmLnR3ZWVuLmxlbmd0aCk7XG4gICAgZm9yIChpID0gMCwgaiA9IC0xOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobyA9IHNlbGYudHdlZW5baV0udmFsdWUuY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBzZWxmLmluZGV4LCBzZWxmLmdyb3VwKSkge1xuICAgICAgICB0d2VlblsrK2pdID0gbztcbiAgICAgIH1cbiAgICB9XG4gICAgdHdlZW4ubGVuZ3RoID0gaiArIDE7XG4gIH1cblxuICBmdW5jdGlvbiB0aWNrKGVsYXBzZWQpIHtcbiAgICB2YXIgdCA9IGVsYXBzZWQgPCBzZWxmLmR1cmF0aW9uID8gc2VsZi5lYXNlLmNhbGwobnVsbCwgZWxhcHNlZCAvIHNlbGYuZHVyYXRpb24pIDogKHNlbGYudGltZXIucmVzdGFydChzdG9wKSwgc2VsZi5zdGF0ZSA9IEVORElORywgMSksXG4gICAgICAgIGkgPSAtMSxcbiAgICAgICAgbiA9IHR3ZWVuLmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgICB0d2VlbltpXS5jYWxsKG5vZGUsIHQpO1xuICAgIH1cblxuICAgIC8vIERpc3BhdGNoIHRoZSBlbmQgZXZlbnQuXG4gICAgaWYgKHNlbGYuc3RhdGUgPT09IEVORElORykge1xuICAgICAgc2VsZi5vbi5jYWxsKFwiZW5kXCIsIG5vZGUsIG5vZGUuX19kYXRhX18sIHNlbGYuaW5kZXgsIHNlbGYuZ3JvdXApO1xuICAgICAgc3RvcCgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgc2VsZi5zdGF0ZSA9IEVOREVEO1xuICAgIHNlbGYudGltZXIuc3RvcCgpO1xuICAgIGRlbGV0ZSBzY2hlZHVsZXNbaWRdO1xuICAgIGZvciAodmFyIGkgaW4gc2NoZWR1bGVzKSByZXR1cm47IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICBkZWxldGUgbm9kZS5fX3RyYW5zaXRpb247XG4gIH1cbn1cbiIsICJpbXBvcnQge1NUQVJUSU5HLCBFTkRJTkcsIEVOREVEfSBmcm9tIFwiLi90cmFuc2l0aW9uL3NjaGVkdWxlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5vZGUsIG5hbWUpIHtcbiAgdmFyIHNjaGVkdWxlcyA9IG5vZGUuX190cmFuc2l0aW9uLFxuICAgICAgc2NoZWR1bGUsXG4gICAgICBhY3RpdmUsXG4gICAgICBlbXB0eSA9IHRydWUsXG4gICAgICBpO1xuXG4gIGlmICghc2NoZWR1bGVzKSByZXR1cm47XG5cbiAgbmFtZSA9IG5hbWUgPT0gbnVsbCA/IG51bGwgOiBuYW1lICsgXCJcIjtcblxuICBmb3IgKGkgaW4gc2NoZWR1bGVzKSB7XG4gICAgaWYgKChzY2hlZHVsZSA9IHNjaGVkdWxlc1tpXSkubmFtZSAhPT0gbmFtZSkgeyBlbXB0eSA9IGZhbHNlOyBjb250aW51ZTsgfVxuICAgIGFjdGl2ZSA9IHNjaGVkdWxlLnN0YXRlID4gU1RBUlRJTkcgJiYgc2NoZWR1bGUuc3RhdGUgPCBFTkRJTkc7XG4gICAgc2NoZWR1bGUuc3RhdGUgPSBFTkRFRDtcbiAgICBzY2hlZHVsZS50aW1lci5zdG9wKCk7XG4gICAgc2NoZWR1bGUub24uY2FsbChhY3RpdmUgPyBcImludGVycnVwdFwiIDogXCJjYW5jZWxcIiwgbm9kZSwgbm9kZS5fX2RhdGFfXywgc2NoZWR1bGUuaW5kZXgsIHNjaGVkdWxlLmdyb3VwKTtcbiAgICBkZWxldGUgc2NoZWR1bGVzW2ldO1xuICB9XG5cbiAgaWYgKGVtcHR5KSBkZWxldGUgbm9kZS5fX3RyYW5zaXRpb247XG59XG4iLCAiaW1wb3J0IGludGVycnVwdCBmcm9tIFwiLi4vaW50ZXJydXB0LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcbiAgICBpbnRlcnJ1cHQodGhpcywgbmFtZSk7XG4gIH0pO1xufVxuIiwgImltcG9ydCB7Z2V0LCBzZXR9IGZyb20gXCIuL3NjaGVkdWxlLmpzXCI7XG5cbmZ1bmN0aW9uIHR3ZWVuUmVtb3ZlKGlkLCBuYW1lKSB7XG4gIHZhciB0d2VlbjAsIHR3ZWVuMTtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzY2hlZHVsZSA9IHNldCh0aGlzLCBpZCksXG4gICAgICAgIHR3ZWVuID0gc2NoZWR1bGUudHdlZW47XG5cbiAgICAvLyBJZiB0aGlzIG5vZGUgc2hhcmVkIHR3ZWVuIHdpdGggdGhlIHByZXZpb3VzIG5vZGUsXG4gICAgLy8ganVzdCBhc3NpZ24gdGhlIHVwZGF0ZWQgc2hhcmVkIHR3ZWVuIGFuZCB3ZVx1MjAxOXJlIGRvbmUhXG4gICAgLy8gT3RoZXJ3aXNlLCBjb3B5LW9uLXdyaXRlLlxuICAgIGlmICh0d2VlbiAhPT0gdHdlZW4wKSB7XG4gICAgICB0d2VlbjEgPSB0d2VlbjAgPSB0d2VlbjtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gdHdlZW4xLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgICBpZiAodHdlZW4xW2ldLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgICB0d2VlbjEgPSB0d2VlbjEuc2xpY2UoKTtcbiAgICAgICAgICB0d2VlbjEuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2NoZWR1bGUudHdlZW4gPSB0d2VlbjE7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHR3ZWVuRnVuY3Rpb24oaWQsIG5hbWUsIHZhbHVlKSB7XG4gIHZhciB0d2VlbjAsIHR3ZWVuMTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3I7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc2NoZWR1bGUgPSBzZXQodGhpcywgaWQpLFxuICAgICAgICB0d2VlbiA9IHNjaGVkdWxlLnR3ZWVuO1xuXG4gICAgLy8gSWYgdGhpcyBub2RlIHNoYXJlZCB0d2VlbiB3aXRoIHRoZSBwcmV2aW91cyBub2RlLFxuICAgIC8vIGp1c3QgYXNzaWduIHRoZSB1cGRhdGVkIHNoYXJlZCB0d2VlbiBhbmQgd2VcdTIwMTlyZSBkb25lIVxuICAgIC8vIE90aGVyd2lzZSwgY29weS1vbi13cml0ZS5cbiAgICBpZiAodHdlZW4gIT09IHR3ZWVuMCkge1xuICAgICAgdHdlZW4xID0gKHR3ZWVuMCA9IHR3ZWVuKS5zbGljZSgpO1xuICAgICAgZm9yICh2YXIgdCA9IHtuYW1lOiBuYW1lLCB2YWx1ZTogdmFsdWV9LCBpID0gMCwgbiA9IHR3ZWVuMS5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgaWYgKHR3ZWVuMVtpXS5uYW1lID09PSBuYW1lKSB7XG4gICAgICAgICAgdHdlZW4xW2ldID0gdDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGkgPT09IG4pIHR3ZWVuMS5wdXNoKHQpO1xuICAgIH1cblxuICAgIHNjaGVkdWxlLnR3ZWVuID0gdHdlZW4xO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB2YXIgaWQgPSB0aGlzLl9pZDtcblxuICBuYW1lICs9IFwiXCI7XG5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdmFyIHR3ZWVuID0gZ2V0KHRoaXMubm9kZSgpLCBpZCkudHdlZW47XG4gICAgZm9yICh2YXIgaSA9IDAsIG4gPSB0d2Vlbi5sZW5ndGgsIHQ7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmICgodCA9IHR3ZWVuW2ldKS5uYW1lID09PSBuYW1lKSB7XG4gICAgICAgIHJldHVybiB0LnZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmVhY2goKHZhbHVlID09IG51bGwgPyB0d2VlblJlbW92ZSA6IHR3ZWVuRnVuY3Rpb24pKGlkLCBuYW1lLCB2YWx1ZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHdlZW5WYWx1ZSh0cmFuc2l0aW9uLCBuYW1lLCB2YWx1ZSkge1xuICB2YXIgaWQgPSB0cmFuc2l0aW9uLl9pZDtcblxuICB0cmFuc2l0aW9uLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgdmFyIHNjaGVkdWxlID0gc2V0KHRoaXMsIGlkKTtcbiAgICAoc2NoZWR1bGUudmFsdWUgfHwgKHNjaGVkdWxlLnZhbHVlID0ge30pKVtuYW1lXSA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH0pO1xuXG4gIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgcmV0dXJuIGdldChub2RlLCBpZCkudmFsdWVbbmFtZV07XG4gIH07XG59XG4iLCAiaW1wb3J0IHtjb2xvcn0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQge2ludGVycG9sYXRlTnVtYmVyLCBpbnRlcnBvbGF0ZVJnYiwgaW50ZXJwb2xhdGVTdHJpbmd9IGZyb20gXCJkMy1pbnRlcnBvbGF0ZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciBjO1xuICByZXR1cm4gKHR5cGVvZiBiID09PSBcIm51bWJlclwiID8gaW50ZXJwb2xhdGVOdW1iZXJcbiAgICAgIDogYiBpbnN0YW5jZW9mIGNvbG9yID8gaW50ZXJwb2xhdGVSZ2JcbiAgICAgIDogKGMgPSBjb2xvcihiKSkgPyAoYiA9IGMsIGludGVycG9sYXRlUmdiKVxuICAgICAgOiBpbnRlcnBvbGF0ZVN0cmluZykoYSwgYik7XG59XG4iLCAiaW1wb3J0IHtpbnRlcnBvbGF0ZVRyYW5zZm9ybVN2ZyBhcyBpbnRlcnBvbGF0ZVRyYW5zZm9ybX0gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5pbXBvcnQge25hbWVzcGFjZX0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHt0d2VlblZhbHVlfSBmcm9tIFwiLi90d2Vlbi5qc1wiO1xuaW1wb3J0IGludGVycG9sYXRlIGZyb20gXCIuL2ludGVycG9sYXRlLmpzXCI7XG5cbmZ1bmN0aW9uIGF0dHJSZW1vdmUobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJSZW1vdmVOUyhmdWxsbmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRyQ29uc3RhbnQobmFtZSwgaW50ZXJwb2xhdGUsIHZhbHVlMSkge1xuICB2YXIgc3RyaW5nMDAsXG4gICAgICBzdHJpbmcxID0gdmFsdWUxICsgXCJcIixcbiAgICAgIGludGVycG9sYXRlMDtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzdHJpbmcwID0gdGhpcy5nZXRBdHRyaWJ1dGUobmFtZSk7XG4gICAgcmV0dXJuIHN0cmluZzAgPT09IHN0cmluZzEgPyBudWxsXG4gICAgICAgIDogc3RyaW5nMCA9PT0gc3RyaW5nMDAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZShzdHJpbmcwMCA9IHN0cmluZzAsIHZhbHVlMSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJDb25zdGFudE5TKGZ1bGxuYW1lLCBpbnRlcnBvbGF0ZSwgdmFsdWUxKSB7XG4gIHZhciBzdHJpbmcwMCxcbiAgICAgIHN0cmluZzEgPSB2YWx1ZTEgKyBcIlwiLFxuICAgICAgaW50ZXJwb2xhdGUwO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHN0cmluZzAgPSB0aGlzLmdldEF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCk7XG4gICAgcmV0dXJuIHN0cmluZzAgPT09IHN0cmluZzEgPyBudWxsXG4gICAgICAgIDogc3RyaW5nMCA9PT0gc3RyaW5nMDAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZShzdHJpbmcwMCA9IHN0cmluZzAsIHZhbHVlMSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJGdW5jdGlvbihuYW1lLCBpbnRlcnBvbGF0ZSwgdmFsdWUpIHtcbiAgdmFyIHN0cmluZzAwLFxuICAgICAgc3RyaW5nMTAsXG4gICAgICBpbnRlcnBvbGF0ZTA7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc3RyaW5nMCwgdmFsdWUxID0gdmFsdWUodGhpcyksIHN0cmluZzE7XG4gICAgaWYgKHZhbHVlMSA9PSBudWxsKSByZXR1cm4gdm9pZCB0aGlzLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICBzdHJpbmcwID0gdGhpcy5nZXRBdHRyaWJ1dGUobmFtZSk7XG4gICAgc3RyaW5nMSA9IHZhbHVlMSArIFwiXCI7XG4gICAgcmV0dXJuIHN0cmluZzAgPT09IHN0cmluZzEgPyBudWxsXG4gICAgICAgIDogc3RyaW5nMCA9PT0gc3RyaW5nMDAgJiYgc3RyaW5nMSA9PT0gc3RyaW5nMTAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiAoc3RyaW5nMTAgPSBzdHJpbmcxLCBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZShzdHJpbmcwMCA9IHN0cmluZzAsIHZhbHVlMSkpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRyRnVuY3Rpb25OUyhmdWxsbmFtZSwgaW50ZXJwb2xhdGUsIHZhbHVlKSB7XG4gIHZhciBzdHJpbmcwMCxcbiAgICAgIHN0cmluZzEwLFxuICAgICAgaW50ZXJwb2xhdGUwO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHN0cmluZzAsIHZhbHVlMSA9IHZhbHVlKHRoaXMpLCBzdHJpbmcxO1xuICAgIGlmICh2YWx1ZTEgPT0gbnVsbCkgcmV0dXJuIHZvaWQgdGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwpO1xuICAgIHN0cmluZzAgPSB0aGlzLmdldEF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCk7XG4gICAgc3RyaW5nMSA9IHZhbHVlMSArIFwiXCI7XG4gICAgcmV0dXJuIHN0cmluZzAgPT09IHN0cmluZzEgPyBudWxsXG4gICAgICAgIDogc3RyaW5nMCA9PT0gc3RyaW5nMDAgJiYgc3RyaW5nMSA9PT0gc3RyaW5nMTAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiAoc3RyaW5nMTAgPSBzdHJpbmcxLCBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZShzdHJpbmcwMCA9IHN0cmluZzAsIHZhbHVlMSkpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB2YXIgZnVsbG5hbWUgPSBuYW1lc3BhY2UobmFtZSksIGkgPSBmdWxsbmFtZSA9PT0gXCJ0cmFuc2Zvcm1cIiA/IGludGVycG9sYXRlVHJhbnNmb3JtIDogaW50ZXJwb2xhdGU7XG4gIHJldHVybiB0aGlzLmF0dHJUd2VlbihuYW1lLCB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyAoZnVsbG5hbWUubG9jYWwgPyBhdHRyRnVuY3Rpb25OUyA6IGF0dHJGdW5jdGlvbikoZnVsbG5hbWUsIGksIHR3ZWVuVmFsdWUodGhpcywgXCJhdHRyLlwiICsgbmFtZSwgdmFsdWUpKVxuICAgICAgOiB2YWx1ZSA9PSBudWxsID8gKGZ1bGxuYW1lLmxvY2FsID8gYXR0clJlbW92ZU5TIDogYXR0clJlbW92ZSkoZnVsbG5hbWUpXG4gICAgICA6IChmdWxsbmFtZS5sb2NhbCA/IGF0dHJDb25zdGFudE5TIDogYXR0ckNvbnN0YW50KShmdWxsbmFtZSwgaSwgdmFsdWUpKTtcbn1cbiIsICJpbXBvcnQge25hbWVzcGFjZX0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuXG5mdW5jdGlvbiBhdHRySW50ZXJwb2xhdGUobmFtZSwgaSkge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKG5hbWUsIGkuY2FsbCh0aGlzLCB0KSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJJbnRlcnBvbGF0ZU5TKGZ1bGxuYW1lLCBpKSB7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwsIGkuY2FsbCh0aGlzLCB0KSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJUd2Vlbk5TKGZ1bGxuYW1lLCB2YWx1ZSkge1xuICB2YXIgdDAsIGkwO1xuICBmdW5jdGlvbiB0d2VlbigpIHtcbiAgICB2YXIgaSA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgaWYgKGkgIT09IGkwKSB0MCA9IChpMCA9IGkpICYmIGF0dHJJbnRlcnBvbGF0ZU5TKGZ1bGxuYW1lLCBpKTtcbiAgICByZXR1cm4gdDA7XG4gIH1cbiAgdHdlZW4uX3ZhbHVlID0gdmFsdWU7XG4gIHJldHVybiB0d2Vlbjtcbn1cblxuZnVuY3Rpb24gYXR0clR3ZWVuKG5hbWUsIHZhbHVlKSB7XG4gIHZhciB0MCwgaTA7XG4gIGZ1bmN0aW9uIHR3ZWVuKCkge1xuICAgIHZhciBpID0gdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBpZiAoaSAhPT0gaTApIHQwID0gKGkwID0gaSkgJiYgYXR0ckludGVycG9sYXRlKG5hbWUsIGkpO1xuICAgIHJldHVybiB0MDtcbiAgfVxuICB0d2Vlbi5fdmFsdWUgPSB2YWx1ZTtcbiAgcmV0dXJuIHR3ZWVuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB2YXIga2V5ID0gXCJhdHRyLlwiICsgbmFtZTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSByZXR1cm4gKGtleSA9IHRoaXMudHdlZW4oa2V5KSkgJiYga2V5Ll92YWx1ZTtcbiAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiB0aGlzLnR3ZWVuKGtleSwgbnVsbCk7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yO1xuICB2YXIgZnVsbG5hbWUgPSBuYW1lc3BhY2UobmFtZSk7XG4gIHJldHVybiB0aGlzLnR3ZWVuKGtleSwgKGZ1bGxuYW1lLmxvY2FsID8gYXR0clR3ZWVuTlMgOiBhdHRyVHdlZW4pKGZ1bGxuYW1lLCB2YWx1ZSkpO1xufVxuIiwgImltcG9ydCB7Z2V0LCBpbml0fSBmcm9tIFwiLi9zY2hlZHVsZS5qc1wiO1xuXG5mdW5jdGlvbiBkZWxheUZ1bmN0aW9uKGlkLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgaW5pdCh0aGlzLCBpZCkuZGVsYXkgPSArdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZGVsYXlDb25zdGFudChpZCwgdmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID0gK3ZhbHVlLCBmdW5jdGlvbigpIHtcbiAgICBpbml0KHRoaXMsIGlkKS5kZWxheSA9IHZhbHVlO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICB2YXIgaWQgPSB0aGlzLl9pZDtcblxuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLmVhY2goKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgPyBkZWxheUZ1bmN0aW9uXG4gICAgICAgICAgOiBkZWxheUNvbnN0YW50KShpZCwgdmFsdWUpKVxuICAgICAgOiBnZXQodGhpcy5ub2RlKCksIGlkKS5kZWxheTtcbn1cbiIsICJpbXBvcnQge2dldCwgc2V0fSBmcm9tIFwiLi9zY2hlZHVsZS5qc1wiO1xuXG5mdW5jdGlvbiBkdXJhdGlvbkZ1bmN0aW9uKGlkLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgc2V0KHRoaXMsIGlkKS5kdXJhdGlvbiA9ICt2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBkdXJhdGlvbkNvbnN0YW50KGlkLCB2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPSArdmFsdWUsIGZ1bmN0aW9uKCkge1xuICAgIHNldCh0aGlzLCBpZCkuZHVyYXRpb24gPSB2YWx1ZTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUpIHtcbiAgdmFyIGlkID0gdGhpcy5faWQ7XG5cbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgID8gdGhpcy5lYWNoKCh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgID8gZHVyYXRpb25GdW5jdGlvblxuICAgICAgICAgIDogZHVyYXRpb25Db25zdGFudCkoaWQsIHZhbHVlKSlcbiAgICAgIDogZ2V0KHRoaXMubm9kZSgpLCBpZCkuZHVyYXRpb247XG59XG4iLCAiaW1wb3J0IHtnZXQsIHNldH0gZnJvbSBcIi4vc2NoZWR1bGUuanNcIjtcblxuZnVuY3Rpb24gZWFzZUNvbnN0YW50KGlkLCB2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBFcnJvcjtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHNldCh0aGlzLCBpZCkuZWFzZSA9IHZhbHVlO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICB2YXIgaWQgPSB0aGlzLl9pZDtcblxuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLmVhY2goZWFzZUNvbnN0YW50KGlkLCB2YWx1ZSkpXG4gICAgICA6IGdldCh0aGlzLm5vZGUoKSwgaWQpLmVhc2U7XG59XG4iLCAiaW1wb3J0IHtzZXR9IGZyb20gXCIuL3NjaGVkdWxlLmpzXCI7XG5cbmZ1bmN0aW9uIGVhc2VWYXJ5aW5nKGlkLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh0eXBlb2YgdiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3I7XG4gICAgc2V0KHRoaXMsIGlkKS5lYXNlID0gdjtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3I7XG4gIHJldHVybiB0aGlzLmVhY2goZWFzZVZhcnlpbmcodGhpcy5faWQsIHZhbHVlKSk7XG59XG4iLCAiaW1wb3J0IHttYXRjaGVyfSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5pbXBvcnQge1RyYW5zaXRpb259IGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG1hdGNoKSB7XG4gIGlmICh0eXBlb2YgbWF0Y2ggIT09IFwiZnVuY3Rpb25cIikgbWF0Y2ggPSBtYXRjaGVyKG1hdGNoKTtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBzdWJncm91cHMgPSBuZXcgQXJyYXkobSksIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIG4gPSBncm91cC5sZW5ndGgsIHN1Ymdyb3VwID0gc3ViZ3JvdXBzW2pdID0gW10sIG5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAoKG5vZGUgPSBncm91cFtpXSkgJiYgbWF0Y2guY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCkpIHtcbiAgICAgICAgc3ViZ3JvdXAucHVzaChub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFRyYW5zaXRpb24oc3ViZ3JvdXBzLCB0aGlzLl9wYXJlbnRzLCB0aGlzLl9uYW1lLCB0aGlzLl9pZCk7XG59XG4iLCAiaW1wb3J0IHtUcmFuc2l0aW9ufSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih0cmFuc2l0aW9uKSB7XG4gIGlmICh0cmFuc2l0aW9uLl9pZCAhPT0gdGhpcy5faWQpIHRocm93IG5ldyBFcnJvcjtcblxuICBmb3IgKHZhciBncm91cHMwID0gdGhpcy5fZ3JvdXBzLCBncm91cHMxID0gdHJhbnNpdGlvbi5fZ3JvdXBzLCBtMCA9IGdyb3VwczAubGVuZ3RoLCBtMSA9IGdyb3VwczEubGVuZ3RoLCBtID0gTWF0aC5taW4obTAsIG0xKSwgbWVyZ2VzID0gbmV3IEFycmF5KG0wKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cDAgPSBncm91cHMwW2pdLCBncm91cDEgPSBncm91cHMxW2pdLCBuID0gZ3JvdXAwLmxlbmd0aCwgbWVyZ2UgPSBtZXJnZXNbal0gPSBuZXcgQXJyYXkobiksIG5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwMFtpXSB8fCBncm91cDFbaV0pIHtcbiAgICAgICAgbWVyZ2VbaV0gPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvciAoOyBqIDwgbTA7ICsraikge1xuICAgIG1lcmdlc1tqXSA9IGdyb3VwczBbal07XG4gIH1cblxuICByZXR1cm4gbmV3IFRyYW5zaXRpb24obWVyZ2VzLCB0aGlzLl9wYXJlbnRzLCB0aGlzLl9uYW1lLCB0aGlzLl9pZCk7XG59XG4iLCAiaW1wb3J0IHtnZXQsIHNldCwgaW5pdH0gZnJvbSBcIi4vc2NoZWR1bGUuanNcIjtcblxuZnVuY3Rpb24gc3RhcnQobmFtZSkge1xuICByZXR1cm4gKG5hbWUgKyBcIlwiKS50cmltKCkuc3BsaXQoL158XFxzKy8pLmV2ZXJ5KGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgaSA9IHQuaW5kZXhPZihcIi5cIik7XG4gICAgaWYgKGkgPj0gMCkgdCA9IHQuc2xpY2UoMCwgaSk7XG4gICAgcmV0dXJuICF0IHx8IHQgPT09IFwic3RhcnRcIjtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG9uRnVuY3Rpb24oaWQsIG5hbWUsIGxpc3RlbmVyKSB7XG4gIHZhciBvbjAsIG9uMSwgc2l0ID0gc3RhcnQobmFtZSkgPyBpbml0IDogc2V0O1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHNjaGVkdWxlID0gc2l0KHRoaXMsIGlkKSxcbiAgICAgICAgb24gPSBzY2hlZHVsZS5vbjtcblxuICAgIC8vIElmIHRoaXMgbm9kZSBzaGFyZWQgYSBkaXNwYXRjaCB3aXRoIHRoZSBwcmV2aW91cyBub2RlLFxuICAgIC8vIGp1c3QgYXNzaWduIHRoZSB1cGRhdGVkIHNoYXJlZCBkaXNwYXRjaCBhbmQgd2VcdTIwMTlyZSBkb25lIVxuICAgIC8vIE90aGVyd2lzZSwgY29weS1vbi13cml0ZS5cbiAgICBpZiAob24gIT09IG9uMCkgKG9uMSA9IChvbjAgPSBvbikuY29weSgpKS5vbihuYW1lLCBsaXN0ZW5lcik7XG5cbiAgICBzY2hlZHVsZS5vbiA9IG9uMTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgbGlzdGVuZXIpIHtcbiAgdmFyIGlkID0gdGhpcy5faWQ7XG5cbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyXG4gICAgICA/IGdldCh0aGlzLm5vZGUoKSwgaWQpLm9uLm9uKG5hbWUpXG4gICAgICA6IHRoaXMuZWFjaChvbkZ1bmN0aW9uKGlkLCBuYW1lLCBsaXN0ZW5lcikpO1xufVxuIiwgImZ1bmN0aW9uIHJlbW92ZUZ1bmN0aW9uKGlkKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgcGFyZW50ID0gdGhpcy5wYXJlbnROb2RlO1xuICAgIGZvciAodmFyIGkgaW4gdGhpcy5fX3RyYW5zaXRpb24pIGlmICgraSAhPT0gaWQpIHJldHVybjtcbiAgICBpZiAocGFyZW50KSBwYXJlbnQucmVtb3ZlQ2hpbGQodGhpcyk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5vbihcImVuZC5yZW1vdmVcIiwgcmVtb3ZlRnVuY3Rpb24odGhpcy5faWQpKTtcbn1cbiIsICJpbXBvcnQge3NlbGVjdG9yfSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5pbXBvcnQge1RyYW5zaXRpb259IGZyb20gXCIuL2luZGV4LmpzXCI7XG5pbXBvcnQgc2NoZWR1bGUsIHtnZXR9IGZyb20gXCIuL3NjaGVkdWxlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdCkge1xuICB2YXIgbmFtZSA9IHRoaXMuX25hbWUsXG4gICAgICBpZCA9IHRoaXMuX2lkO1xuXG4gIGlmICh0eXBlb2Ygc2VsZWN0ICE9PSBcImZ1bmN0aW9uXCIpIHNlbGVjdCA9IHNlbGVjdG9yKHNlbGVjdCk7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBtID0gZ3JvdXBzLmxlbmd0aCwgc3ViZ3JvdXBzID0gbmV3IEFycmF5KG0pLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBzdWJncm91cCA9IHN1Ymdyb3Vwc1tqXSA9IG5ldyBBcnJheShuKSwgbm9kZSwgc3Vibm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmICgobm9kZSA9IGdyb3VwW2ldKSAmJiAoc3Vibm9kZSA9IHNlbGVjdC5jYWxsKG5vZGUsIG5vZGUuX19kYXRhX18sIGksIGdyb3VwKSkpIHtcbiAgICAgICAgaWYgKFwiX19kYXRhX19cIiBpbiBub2RlKSBzdWJub2RlLl9fZGF0YV9fID0gbm9kZS5fX2RhdGFfXztcbiAgICAgICAgc3ViZ3JvdXBbaV0gPSBzdWJub2RlO1xuICAgICAgICBzY2hlZHVsZShzdWJncm91cFtpXSwgbmFtZSwgaWQsIGksIHN1Ymdyb3VwLCBnZXQobm9kZSwgaWQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFRyYW5zaXRpb24oc3ViZ3JvdXBzLCB0aGlzLl9wYXJlbnRzLCBuYW1lLCBpZCk7XG59XG4iLCAiaW1wb3J0IHtzZWxlY3RvckFsbH0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHtUcmFuc2l0aW9ufSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuaW1wb3J0IHNjaGVkdWxlLCB7Z2V0fSBmcm9tIFwiLi9zY2hlZHVsZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZWxlY3QpIHtcbiAgdmFyIG5hbWUgPSB0aGlzLl9uYW1lLFxuICAgICAgaWQgPSB0aGlzLl9pZDtcblxuICBpZiAodHlwZW9mIHNlbGVjdCAhPT0gXCJmdW5jdGlvblwiKSBzZWxlY3QgPSBzZWxlY3RvckFsbChzZWxlY3QpO1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIHN1Ymdyb3VwcyA9IFtdLCBwYXJlbnRzID0gW10sIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIG4gPSBncm91cC5sZW5ndGgsIG5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB7XG4gICAgICAgIGZvciAodmFyIGNoaWxkcmVuID0gc2VsZWN0LmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApLCBjaGlsZCwgaW5oZXJpdCA9IGdldChub2RlLCBpZCksIGsgPSAwLCBsID0gY2hpbGRyZW4ubGVuZ3RoOyBrIDwgbDsgKytrKSB7XG4gICAgICAgICAgaWYgKGNoaWxkID0gY2hpbGRyZW5ba10pIHtcbiAgICAgICAgICAgIHNjaGVkdWxlKGNoaWxkLCBuYW1lLCBpZCwgaywgY2hpbGRyZW4sIGluaGVyaXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdWJncm91cHMucHVzaChjaGlsZHJlbik7XG4gICAgICAgIHBhcmVudHMucHVzaChub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFRyYW5zaXRpb24oc3ViZ3JvdXBzLCBwYXJlbnRzLCBuYW1lLCBpZCk7XG59XG4iLCAiaW1wb3J0IHtzZWxlY3Rpb259IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcblxudmFyIFNlbGVjdGlvbiA9IHNlbGVjdGlvbi5wcm90b3R5cGUuY29uc3RydWN0b3I7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFNlbGVjdGlvbih0aGlzLl9ncm91cHMsIHRoaXMuX3BhcmVudHMpO1xufVxuIiwgImltcG9ydCB7aW50ZXJwb2xhdGVUcmFuc2Zvcm1Dc3MgYXMgaW50ZXJwb2xhdGVUcmFuc2Zvcm19IGZyb20gXCJkMy1pbnRlcnBvbGF0ZVwiO1xuaW1wb3J0IHtzdHlsZX0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHtzZXR9IGZyb20gXCIuL3NjaGVkdWxlLmpzXCI7XG5pbXBvcnQge3R3ZWVuVmFsdWV9IGZyb20gXCIuL3R3ZWVuLmpzXCI7XG5pbXBvcnQgaW50ZXJwb2xhdGUgZnJvbSBcIi4vaW50ZXJwb2xhdGUuanNcIjtcblxuZnVuY3Rpb24gc3R5bGVOdWxsKG5hbWUsIGludGVycG9sYXRlKSB7XG4gIHZhciBzdHJpbmcwMCxcbiAgICAgIHN0cmluZzEwLFxuICAgICAgaW50ZXJwb2xhdGUwO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHN0cmluZzAgPSBzdHlsZSh0aGlzLCBuYW1lKSxcbiAgICAgICAgc3RyaW5nMSA9ICh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KG5hbWUpLCBzdHlsZSh0aGlzLCBuYW1lKSk7XG4gICAgcmV0dXJuIHN0cmluZzAgPT09IHN0cmluZzEgPyBudWxsXG4gICAgICAgIDogc3RyaW5nMCA9PT0gc3RyaW5nMDAgJiYgc3RyaW5nMSA9PT0gc3RyaW5nMTAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZShzdHJpbmcwMCA9IHN0cmluZzAsIHN0cmluZzEwID0gc3RyaW5nMSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHN0eWxlUmVtb3ZlKG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobmFtZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHN0eWxlQ29uc3RhbnQobmFtZSwgaW50ZXJwb2xhdGUsIHZhbHVlMSkge1xuICB2YXIgc3RyaW5nMDAsXG4gICAgICBzdHJpbmcxID0gdmFsdWUxICsgXCJcIixcbiAgICAgIGludGVycG9sYXRlMDtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzdHJpbmcwID0gc3R5bGUodGhpcywgbmFtZSk7XG4gICAgcmV0dXJuIHN0cmluZzAgPT09IHN0cmluZzEgPyBudWxsXG4gICAgICAgIDogc3RyaW5nMCA9PT0gc3RyaW5nMDAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZShzdHJpbmcwMCA9IHN0cmluZzAsIHZhbHVlMSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHN0eWxlRnVuY3Rpb24obmFtZSwgaW50ZXJwb2xhdGUsIHZhbHVlKSB7XG4gIHZhciBzdHJpbmcwMCxcbiAgICAgIHN0cmluZzEwLFxuICAgICAgaW50ZXJwb2xhdGUwO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHN0cmluZzAgPSBzdHlsZSh0aGlzLCBuYW1lKSxcbiAgICAgICAgdmFsdWUxID0gdmFsdWUodGhpcyksXG4gICAgICAgIHN0cmluZzEgPSB2YWx1ZTEgKyBcIlwiO1xuICAgIGlmICh2YWx1ZTEgPT0gbnVsbCkgc3RyaW5nMSA9IHZhbHVlMSA9ICh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KG5hbWUpLCBzdHlsZSh0aGlzLCBuYW1lKSk7XG4gICAgcmV0dXJuIHN0cmluZzAgPT09IHN0cmluZzEgPyBudWxsXG4gICAgICAgIDogc3RyaW5nMCA9PT0gc3RyaW5nMDAgJiYgc3RyaW5nMSA9PT0gc3RyaW5nMTAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiAoc3RyaW5nMTAgPSBzdHJpbmcxLCBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZShzdHJpbmcwMCA9IHN0cmluZzAsIHZhbHVlMSkpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzdHlsZU1heWJlUmVtb3ZlKGlkLCBuYW1lKSB7XG4gIHZhciBvbjAsIG9uMSwgbGlzdGVuZXIwLCBrZXkgPSBcInN0eWxlLlwiICsgbmFtZSwgZXZlbnQgPSBcImVuZC5cIiArIGtleSwgcmVtb3ZlO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHNjaGVkdWxlID0gc2V0KHRoaXMsIGlkKSxcbiAgICAgICAgb24gPSBzY2hlZHVsZS5vbixcbiAgICAgICAgbGlzdGVuZXIgPSBzY2hlZHVsZS52YWx1ZVtrZXldID09IG51bGwgPyByZW1vdmUgfHwgKHJlbW92ZSA9IHN0eWxlUmVtb3ZlKG5hbWUpKSA6IHVuZGVmaW5lZDtcblxuICAgIC8vIElmIHRoaXMgbm9kZSBzaGFyZWQgYSBkaXNwYXRjaCB3aXRoIHRoZSBwcmV2aW91cyBub2RlLFxuICAgIC8vIGp1c3QgYXNzaWduIHRoZSB1cGRhdGVkIHNoYXJlZCBkaXNwYXRjaCBhbmQgd2VcdTIwMTlyZSBkb25lIVxuICAgIC8vIE90aGVyd2lzZSwgY29weS1vbi13cml0ZS5cbiAgICBpZiAob24gIT09IG9uMCB8fCBsaXN0ZW5lcjAgIT09IGxpc3RlbmVyKSAob24xID0gKG9uMCA9IG9uKS5jb3B5KCkpLm9uKGV2ZW50LCBsaXN0ZW5lcjAgPSBsaXN0ZW5lcik7XG5cbiAgICBzY2hlZHVsZS5vbiA9IG9uMTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUsIHByaW9yaXR5KSB7XG4gIHZhciBpID0gKG5hbWUgKz0gXCJcIikgPT09IFwidHJhbnNmb3JtXCIgPyBpbnRlcnBvbGF0ZVRyYW5zZm9ybSA6IGludGVycG9sYXRlO1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/IHRoaXNcbiAgICAgIC5zdHlsZVR3ZWVuKG5hbWUsIHN0eWxlTnVsbChuYW1lLCBpKSlcbiAgICAgIC5vbihcImVuZC5zdHlsZS5cIiArIG5hbWUsIHN0eWxlUmVtb3ZlKG5hbWUpKVxuICAgIDogdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyB0aGlzXG4gICAgICAuc3R5bGVUd2VlbihuYW1lLCBzdHlsZUZ1bmN0aW9uKG5hbWUsIGksIHR3ZWVuVmFsdWUodGhpcywgXCJzdHlsZS5cIiArIG5hbWUsIHZhbHVlKSkpXG4gICAgICAuZWFjaChzdHlsZU1heWJlUmVtb3ZlKHRoaXMuX2lkLCBuYW1lKSlcbiAgICA6IHRoaXNcbiAgICAgIC5zdHlsZVR3ZWVuKG5hbWUsIHN0eWxlQ29uc3RhbnQobmFtZSwgaSwgdmFsdWUpLCBwcmlvcml0eSlcbiAgICAgIC5vbihcImVuZC5zdHlsZS5cIiArIG5hbWUsIG51bGwpO1xufVxuIiwgImZ1bmN0aW9uIHN0eWxlSW50ZXJwb2xhdGUobmFtZSwgaSwgcHJpb3JpdHkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KG5hbWUsIGkuY2FsbCh0aGlzLCB0KSwgcHJpb3JpdHkpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzdHlsZVR3ZWVuKG5hbWUsIHZhbHVlLCBwcmlvcml0eSkge1xuICB2YXIgdCwgaTA7XG4gIGZ1bmN0aW9uIHR3ZWVuKCkge1xuICAgIHZhciBpID0gdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBpZiAoaSAhPT0gaTApIHQgPSAoaTAgPSBpKSAmJiBzdHlsZUludGVycG9sYXRlKG5hbWUsIGksIHByaW9yaXR5KTtcbiAgICByZXR1cm4gdDtcbiAgfVxuICB0d2Vlbi5fdmFsdWUgPSB2YWx1ZTtcbiAgcmV0dXJuIHR3ZWVuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSwgcHJpb3JpdHkpIHtcbiAgdmFyIGtleSA9IFwic3R5bGUuXCIgKyAobmFtZSArPSBcIlwiKTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSByZXR1cm4gKGtleSA9IHRoaXMudHdlZW4oa2V5KSkgJiYga2V5Ll92YWx1ZTtcbiAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiB0aGlzLnR3ZWVuKGtleSwgbnVsbCk7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yO1xuICByZXR1cm4gdGhpcy50d2VlbihrZXksIHN0eWxlVHdlZW4obmFtZSwgdmFsdWUsIHByaW9yaXR5ID09IG51bGwgPyBcIlwiIDogcHJpb3JpdHkpKTtcbn1cbiIsICJpbXBvcnQge3R3ZWVuVmFsdWV9IGZyb20gXCIuL3R3ZWVuLmpzXCI7XG5cbmZ1bmN0aW9uIHRleHRDb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy50ZXh0Q29udGVudCA9IHZhbHVlO1xuICB9O1xufVxuXG5mdW5jdGlvbiB0ZXh0RnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2YWx1ZTEgPSB2YWx1ZSh0aGlzKTtcbiAgICB0aGlzLnRleHRDb250ZW50ID0gdmFsdWUxID09IG51bGwgPyBcIlwiIDogdmFsdWUxO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdGhpcy50d2VlbihcInRleHRcIiwgdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgID8gdGV4dEZ1bmN0aW9uKHR3ZWVuVmFsdWUodGhpcywgXCJ0ZXh0XCIsIHZhbHVlKSlcbiAgICAgIDogdGV4dENvbnN0YW50KHZhbHVlID09IG51bGwgPyBcIlwiIDogdmFsdWUgKyBcIlwiKSk7XG59XG4iLCAiZnVuY3Rpb24gdGV4dEludGVycG9sYXRlKGkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB0aGlzLnRleHRDb250ZW50ID0gaS5jYWxsKHRoaXMsIHQpO1xuICB9O1xufVxuXG5mdW5jdGlvbiB0ZXh0VHdlZW4odmFsdWUpIHtcbiAgdmFyIHQwLCBpMDtcbiAgZnVuY3Rpb24gdHdlZW4oKSB7XG4gICAgdmFyIGkgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmIChpICE9PSBpMCkgdDAgPSAoaTAgPSBpKSAmJiB0ZXh0SW50ZXJwb2xhdGUoaSk7XG4gICAgcmV0dXJuIHQwO1xuICB9XG4gIHR3ZWVuLl92YWx1ZSA9IHZhbHVlO1xuICByZXR1cm4gdHdlZW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHZhciBrZXkgPSBcInRleHRcIjtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxKSByZXR1cm4gKGtleSA9IHRoaXMudHdlZW4oa2V5KSkgJiYga2V5Ll92YWx1ZTtcbiAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiB0aGlzLnR3ZWVuKGtleSwgbnVsbCk7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yO1xuICByZXR1cm4gdGhpcy50d2VlbihrZXksIHRleHRUd2Vlbih2YWx1ZSkpO1xufVxuIiwgImltcG9ydCB7VHJhbnNpdGlvbiwgbmV3SWR9IGZyb20gXCIuL2luZGV4LmpzXCI7XG5pbXBvcnQgc2NoZWR1bGUsIHtnZXR9IGZyb20gXCIuL3NjaGVkdWxlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgbmFtZSA9IHRoaXMuX25hbWUsXG4gICAgICBpZDAgPSB0aGlzLl9pZCxcbiAgICAgIGlkMSA9IG5ld0lkKCk7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBtID0gZ3JvdXBzLmxlbmd0aCwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgICAgdmFyIGluaGVyaXQgPSBnZXQobm9kZSwgaWQwKTtcbiAgICAgICAgc2NoZWR1bGUobm9kZSwgbmFtZSwgaWQxLCBpLCBncm91cCwge1xuICAgICAgICAgIHRpbWU6IGluaGVyaXQudGltZSArIGluaGVyaXQuZGVsYXkgKyBpbmhlcml0LmR1cmF0aW9uLFxuICAgICAgICAgIGRlbGF5OiAwLFxuICAgICAgICAgIGR1cmF0aW9uOiBpbmhlcml0LmR1cmF0aW9uLFxuICAgICAgICAgIGVhc2U6IGluaGVyaXQuZWFzZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFRyYW5zaXRpb24oZ3JvdXBzLCB0aGlzLl9wYXJlbnRzLCBuYW1lLCBpZDEpO1xufVxuIiwgImltcG9ydCB7c2V0fSBmcm9tIFwiLi9zY2hlZHVsZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIG9uMCwgb24xLCB0aGF0ID0gdGhpcywgaWQgPSB0aGF0Ll9pZCwgc2l6ZSA9IHRoYXQuc2l6ZSgpO1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIGNhbmNlbCA9IHt2YWx1ZTogcmVqZWN0fSxcbiAgICAgICAgZW5kID0ge3ZhbHVlOiBmdW5jdGlvbigpIHsgaWYgKC0tc2l6ZSA9PT0gMCkgcmVzb2x2ZSgpOyB9fTtcblxuICAgIHRoYXQuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgIHZhciBzY2hlZHVsZSA9IHNldCh0aGlzLCBpZCksXG4gICAgICAgICAgb24gPSBzY2hlZHVsZS5vbjtcblxuICAgICAgLy8gSWYgdGhpcyBub2RlIHNoYXJlZCBhIGRpc3BhdGNoIHdpdGggdGhlIHByZXZpb3VzIG5vZGUsXG4gICAgICAvLyBqdXN0IGFzc2lnbiB0aGUgdXBkYXRlZCBzaGFyZWQgZGlzcGF0Y2ggYW5kIHdlXHUyMDE5cmUgZG9uZSFcbiAgICAgIC8vIE90aGVyd2lzZSwgY29weS1vbi13cml0ZS5cbiAgICAgIGlmIChvbiAhPT0gb24wKSB7XG4gICAgICAgIG9uMSA9IChvbjAgPSBvbikuY29weSgpO1xuICAgICAgICBvbjEuXy5jYW5jZWwucHVzaChjYW5jZWwpO1xuICAgICAgICBvbjEuXy5pbnRlcnJ1cHQucHVzaChjYW5jZWwpO1xuICAgICAgICBvbjEuXy5lbmQucHVzaChlbmQpO1xuICAgICAgfVxuXG4gICAgICBzY2hlZHVsZS5vbiA9IG9uMTtcbiAgICB9KTtcblxuICAgIC8vIFRoZSBzZWxlY3Rpb24gd2FzIGVtcHR5LCByZXNvbHZlIGVuZCBpbW1lZGlhdGVseVxuICAgIGlmIChzaXplID09PSAwKSByZXNvbHZlKCk7XG4gIH0pO1xufVxuIiwgImltcG9ydCB7c2VsZWN0aW9ufSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9hdHRyIGZyb20gXCIuL2F0dHIuanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX2F0dHJUd2VlbiBmcm9tIFwiLi9hdHRyVHdlZW4uanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX2RlbGF5IGZyb20gXCIuL2RlbGF5LmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9kdXJhdGlvbiBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuaW1wb3J0IHRyYW5zaXRpb25fZWFzZSBmcm9tIFwiLi9lYXNlLmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9lYXNlVmFyeWluZyBmcm9tIFwiLi9lYXNlVmFyeWluZy5qc1wiO1xuaW1wb3J0IHRyYW5zaXRpb25fZmlsdGVyIGZyb20gXCIuL2ZpbHRlci5qc1wiO1xuaW1wb3J0IHRyYW5zaXRpb25fbWVyZ2UgZnJvbSBcIi4vbWVyZ2UuanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX29uIGZyb20gXCIuL29uLmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9yZW1vdmUgZnJvbSBcIi4vcmVtb3ZlLmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zZWxlY3QgZnJvbSBcIi4vc2VsZWN0LmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zZWxlY3RBbGwgZnJvbSBcIi4vc2VsZWN0QWxsLmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zZWxlY3Rpb24gZnJvbSBcIi4vc2VsZWN0aW9uLmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zdHlsZSBmcm9tIFwiLi9zdHlsZS5qc1wiO1xuaW1wb3J0IHRyYW5zaXRpb25fc3R5bGVUd2VlbiBmcm9tIFwiLi9zdHlsZVR3ZWVuLmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl90ZXh0IGZyb20gXCIuL3RleHQuanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX3RleHRUd2VlbiBmcm9tIFwiLi90ZXh0VHdlZW4uanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX3RyYW5zaXRpb24gZnJvbSBcIi4vdHJhbnNpdGlvbi5qc1wiO1xuaW1wb3J0IHRyYW5zaXRpb25fdHdlZW4gZnJvbSBcIi4vdHdlZW4uanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX2VuZCBmcm9tIFwiLi9lbmQuanNcIjtcblxudmFyIGlkID0gMDtcblxuZXhwb3J0IGZ1bmN0aW9uIFRyYW5zaXRpb24oZ3JvdXBzLCBwYXJlbnRzLCBuYW1lLCBpZCkge1xuICB0aGlzLl9ncm91cHMgPSBncm91cHM7XG4gIHRoaXMuX3BhcmVudHMgPSBwYXJlbnRzO1xuICB0aGlzLl9uYW1lID0gbmFtZTtcbiAgdGhpcy5faWQgPSBpZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhbnNpdGlvbihuYW1lKSB7XG4gIHJldHVybiBzZWxlY3Rpb24oKS50cmFuc2l0aW9uKG5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmV3SWQoKSB7XG4gIHJldHVybiArK2lkO1xufVxuXG52YXIgc2VsZWN0aW9uX3Byb3RvdHlwZSA9IHNlbGVjdGlvbi5wcm90b3R5cGU7XG5cblRyYW5zaXRpb24ucHJvdG90eXBlID0gdHJhbnNpdGlvbi5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBUcmFuc2l0aW9uLFxuICBzZWxlY3Q6IHRyYW5zaXRpb25fc2VsZWN0LFxuICBzZWxlY3RBbGw6IHRyYW5zaXRpb25fc2VsZWN0QWxsLFxuICBmaWx0ZXI6IHRyYW5zaXRpb25fZmlsdGVyLFxuICBtZXJnZTogdHJhbnNpdGlvbl9tZXJnZSxcbiAgc2VsZWN0aW9uOiB0cmFuc2l0aW9uX3NlbGVjdGlvbixcbiAgdHJhbnNpdGlvbjogdHJhbnNpdGlvbl90cmFuc2l0aW9uLFxuICBjYWxsOiBzZWxlY3Rpb25fcHJvdG90eXBlLmNhbGwsXG4gIG5vZGVzOiBzZWxlY3Rpb25fcHJvdG90eXBlLm5vZGVzLFxuICBub2RlOiBzZWxlY3Rpb25fcHJvdG90eXBlLm5vZGUsXG4gIHNpemU6IHNlbGVjdGlvbl9wcm90b3R5cGUuc2l6ZSxcbiAgZW1wdHk6IHNlbGVjdGlvbl9wcm90b3R5cGUuZW1wdHksXG4gIGVhY2g6IHNlbGVjdGlvbl9wcm90b3R5cGUuZWFjaCxcbiAgb246IHRyYW5zaXRpb25fb24sXG4gIGF0dHI6IHRyYW5zaXRpb25fYXR0cixcbiAgYXR0clR3ZWVuOiB0cmFuc2l0aW9uX2F0dHJUd2VlbixcbiAgc3R5bGU6IHRyYW5zaXRpb25fc3R5bGUsXG4gIHN0eWxlVHdlZW46IHRyYW5zaXRpb25fc3R5bGVUd2VlbixcbiAgdGV4dDogdHJhbnNpdGlvbl90ZXh0LFxuICB0ZXh0VHdlZW46IHRyYW5zaXRpb25fdGV4dFR3ZWVuLFxuICByZW1vdmU6IHRyYW5zaXRpb25fcmVtb3ZlLFxuICB0d2VlbjogdHJhbnNpdGlvbl90d2VlbixcbiAgZGVsYXk6IHRyYW5zaXRpb25fZGVsYXksXG4gIGR1cmF0aW9uOiB0cmFuc2l0aW9uX2R1cmF0aW9uLFxuICBlYXNlOiB0cmFuc2l0aW9uX2Vhc2UsXG4gIGVhc2VWYXJ5aW5nOiB0cmFuc2l0aW9uX2Vhc2VWYXJ5aW5nLFxuICBlbmQ6IHRyYW5zaXRpb25fZW5kLFxuICBbU3ltYm9sLml0ZXJhdG9yXTogc2VsZWN0aW9uX3Byb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdXG59O1xuIiwgImV4cG9ydCBmdW5jdGlvbiBjdWJpY0luKHQpIHtcbiAgcmV0dXJuIHQgKiB0ICogdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGN1YmljT3V0KHQpIHtcbiAgcmV0dXJuIC0tdCAqIHQgKiB0ICsgMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGN1YmljSW5PdXQodCkge1xuICByZXR1cm4gKCh0ICo9IDIpIDw9IDEgPyB0ICogdCAqIHQgOiAodCAtPSAyKSAqIHQgKiB0ICsgMikgLyAyO1xufVxuIiwgImltcG9ydCB7VHJhbnNpdGlvbiwgbmV3SWR9IGZyb20gXCIuLi90cmFuc2l0aW9uL2luZGV4LmpzXCI7XG5pbXBvcnQgc2NoZWR1bGUgZnJvbSBcIi4uL3RyYW5zaXRpb24vc2NoZWR1bGUuanNcIjtcbmltcG9ydCB7ZWFzZUN1YmljSW5PdXR9IGZyb20gXCJkMy1lYXNlXCI7XG5pbXBvcnQge25vd30gZnJvbSBcImQzLXRpbWVyXCI7XG5cbnZhciBkZWZhdWx0VGltaW5nID0ge1xuICB0aW1lOiBudWxsLCAvLyBTZXQgb24gdXNlLlxuICBkZWxheTogMCxcbiAgZHVyYXRpb246IDI1MCxcbiAgZWFzZTogZWFzZUN1YmljSW5PdXRcbn07XG5cbmZ1bmN0aW9uIGluaGVyaXQobm9kZSwgaWQpIHtcbiAgdmFyIHRpbWluZztcbiAgd2hpbGUgKCEodGltaW5nID0gbm9kZS5fX3RyYW5zaXRpb24pIHx8ICEodGltaW5nID0gdGltaW5nW2lkXSkpIHtcbiAgICBpZiAoIShub2RlID0gbm9kZS5wYXJlbnROb2RlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB0cmFuc2l0aW9uICR7aWR9IG5vdCBmb3VuZGApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGltaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBpZCxcbiAgICAgIHRpbWluZztcblxuICBpZiAobmFtZSBpbnN0YW5jZW9mIFRyYW5zaXRpb24pIHtcbiAgICBpZCA9IG5hbWUuX2lkLCBuYW1lID0gbmFtZS5fbmFtZTtcbiAgfSBlbHNlIHtcbiAgICBpZCA9IG5ld0lkKCksICh0aW1pbmcgPSBkZWZhdWx0VGltaW5nKS50aW1lID0gbm93KCksIG5hbWUgPSBuYW1lID09IG51bGwgPyBudWxsIDogbmFtZSArIFwiXCI7XG4gIH1cblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgICBzY2hlZHVsZShub2RlLCBuYW1lLCBpZCwgaSwgZ3JvdXAsIHRpbWluZyB8fCBpbmhlcml0KG5vZGUsIGlkKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBUcmFuc2l0aW9uKGdyb3VwcywgdGhpcy5fcGFyZW50cywgbmFtZSwgaWQpO1xufVxuIiwgImltcG9ydCB7c2VsZWN0aW9ufSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2ludGVycnVwdCBmcm9tIFwiLi9pbnRlcnJ1cHQuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fdHJhbnNpdGlvbiBmcm9tIFwiLi90cmFuc2l0aW9uLmpzXCI7XG5cbnNlbGVjdGlvbi5wcm90b3R5cGUuaW50ZXJydXB0ID0gc2VsZWN0aW9uX2ludGVycnVwdDtcbnNlbGVjdGlvbi5wcm90b3R5cGUudHJhbnNpdGlvbiA9IHNlbGVjdGlvbl90cmFuc2l0aW9uO1xuIiwgImltcG9ydCB7ZGlzcGF0Y2h9IGZyb20gXCJkMy1kaXNwYXRjaFwiO1xuaW1wb3J0IHtkcmFnRGlzYWJsZSwgZHJhZ0VuYWJsZX0gZnJvbSBcImQzLWRyYWdcIjtcbmltcG9ydCB7aW50ZXJwb2xhdGV9IGZyb20gXCJkMy1pbnRlcnBvbGF0ZVwiO1xuaW1wb3J0IHtwb2ludGVyLCBzZWxlY3R9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCB7aW50ZXJydXB0fSBmcm9tIFwiZDMtdHJhbnNpdGlvblwiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5pbXBvcnQgQnJ1c2hFdmVudCBmcm9tIFwiLi9ldmVudC5qc1wiO1xuaW1wb3J0IG5vZXZlbnQsIHtub3Byb3BhZ2F0aW9ufSBmcm9tIFwiLi9ub2V2ZW50LmpzXCI7XG5cbnZhciBNT0RFX0RSQUcgPSB7bmFtZTogXCJkcmFnXCJ9LFxuICAgIE1PREVfU1BBQ0UgPSB7bmFtZTogXCJzcGFjZVwifSxcbiAgICBNT0RFX0hBTkRMRSA9IHtuYW1lOiBcImhhbmRsZVwifSxcbiAgICBNT0RFX0NFTlRFUiA9IHtuYW1lOiBcImNlbnRlclwifTtcblxuY29uc3Qge2FicywgbWF4LCBtaW59ID0gTWF0aDtcblxuZnVuY3Rpb24gbnVtYmVyMShlKSB7XG4gIHJldHVybiBbK2VbMF0sICtlWzFdXTtcbn1cblxuZnVuY3Rpb24gbnVtYmVyMihlKSB7XG4gIHJldHVybiBbbnVtYmVyMShlWzBdKSwgbnVtYmVyMShlWzFdKV07XG59XG5cbnZhciBYID0ge1xuICBuYW1lOiBcInhcIixcbiAgaGFuZGxlczogW1wid1wiLCBcImVcIl0ubWFwKHR5cGUpLFxuICBpbnB1dDogZnVuY3Rpb24oeCwgZSkgeyByZXR1cm4geCA9PSBudWxsID8gbnVsbCA6IFtbK3hbMF0sIGVbMF1bMV1dLCBbK3hbMV0sIGVbMV1bMV1dXTsgfSxcbiAgb3V0cHV0OiBmdW5jdGlvbih4eSkgeyByZXR1cm4geHkgJiYgW3h5WzBdWzBdLCB4eVsxXVswXV07IH1cbn07XG5cbnZhciBZID0ge1xuICBuYW1lOiBcInlcIixcbiAgaGFuZGxlczogW1wiblwiLCBcInNcIl0ubWFwKHR5cGUpLFxuICBpbnB1dDogZnVuY3Rpb24oeSwgZSkgeyByZXR1cm4geSA9PSBudWxsID8gbnVsbCA6IFtbZVswXVswXSwgK3lbMF1dLCBbZVsxXVswXSwgK3lbMV1dXTsgfSxcbiAgb3V0cHV0OiBmdW5jdGlvbih4eSkgeyByZXR1cm4geHkgJiYgW3h5WzBdWzFdLCB4eVsxXVsxXV07IH1cbn07XG5cbnZhciBYWSA9IHtcbiAgbmFtZTogXCJ4eVwiLFxuICBoYW5kbGVzOiBbXCJuXCIsIFwid1wiLCBcImVcIiwgXCJzXCIsIFwibndcIiwgXCJuZVwiLCBcInN3XCIsIFwic2VcIl0ubWFwKHR5cGUpLFxuICBpbnB1dDogZnVuY3Rpb24oeHkpIHsgcmV0dXJuIHh5ID09IG51bGwgPyBudWxsIDogbnVtYmVyMih4eSk7IH0sXG4gIG91dHB1dDogZnVuY3Rpb24oeHkpIHsgcmV0dXJuIHh5OyB9XG59O1xuXG52YXIgY3Vyc29ycyA9IHtcbiAgb3ZlcmxheTogXCJjcm9zc2hhaXJcIixcbiAgc2VsZWN0aW9uOiBcIm1vdmVcIixcbiAgbjogXCJucy1yZXNpemVcIixcbiAgZTogXCJldy1yZXNpemVcIixcbiAgczogXCJucy1yZXNpemVcIixcbiAgdzogXCJldy1yZXNpemVcIixcbiAgbnc6IFwibndzZS1yZXNpemVcIixcbiAgbmU6IFwibmVzdy1yZXNpemVcIixcbiAgc2U6IFwibndzZS1yZXNpemVcIixcbiAgc3c6IFwibmVzdy1yZXNpemVcIlxufTtcblxudmFyIGZsaXBYID0ge1xuICBlOiBcIndcIixcbiAgdzogXCJlXCIsXG4gIG53OiBcIm5lXCIsXG4gIG5lOiBcIm53XCIsXG4gIHNlOiBcInN3XCIsXG4gIHN3OiBcInNlXCJcbn07XG5cbnZhciBmbGlwWSA9IHtcbiAgbjogXCJzXCIsXG4gIHM6IFwiblwiLFxuICBudzogXCJzd1wiLFxuICBuZTogXCJzZVwiLFxuICBzZTogXCJuZVwiLFxuICBzdzogXCJud1wiXG59O1xuXG52YXIgc2lnbnNYID0ge1xuICBvdmVybGF5OiArMSxcbiAgc2VsZWN0aW9uOiArMSxcbiAgbjogbnVsbCxcbiAgZTogKzEsXG4gIHM6IG51bGwsXG4gIHc6IC0xLFxuICBudzogLTEsXG4gIG5lOiArMSxcbiAgc2U6ICsxLFxuICBzdzogLTFcbn07XG5cbnZhciBzaWduc1kgPSB7XG4gIG92ZXJsYXk6ICsxLFxuICBzZWxlY3Rpb246ICsxLFxuICBuOiAtMSxcbiAgZTogbnVsbCxcbiAgczogKzEsXG4gIHc6IG51bGwsXG4gIG53OiAtMSxcbiAgbmU6IC0xLFxuICBzZTogKzEsXG4gIHN3OiArMVxufTtcblxuZnVuY3Rpb24gdHlwZSh0KSB7XG4gIHJldHVybiB7dHlwZTogdH07XG59XG5cbi8vIElnbm9yZSByaWdodC1jbGljaywgc2luY2UgdGhhdCBzaG91bGQgb3BlbiB0aGUgY29udGV4dCBtZW51LlxuZnVuY3Rpb24gZGVmYXVsdEZpbHRlcihldmVudCkge1xuICByZXR1cm4gIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50LmJ1dHRvbjtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdEV4dGVudCgpIHtcbiAgdmFyIHN2ZyA9IHRoaXMub3duZXJTVkdFbGVtZW50IHx8IHRoaXM7XG4gIGlmIChzdmcuaGFzQXR0cmlidXRlKFwidmlld0JveFwiKSkge1xuICAgIHN2ZyA9IHN2Zy52aWV3Qm94LmJhc2VWYWw7XG4gICAgcmV0dXJuIFtbc3ZnLngsIHN2Zy55XSwgW3N2Zy54ICsgc3ZnLndpZHRoLCBzdmcueSArIHN2Zy5oZWlnaHRdXTtcbiAgfVxuICByZXR1cm4gW1swLCAwXSwgW3N2Zy53aWR0aC5iYXNlVmFsLnZhbHVlLCBzdmcuaGVpZ2h0LmJhc2VWYWwudmFsdWVdXTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFRvdWNoYWJsZSgpIHtcbiAgcmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyB8fCAoXCJvbnRvdWNoc3RhcnRcIiBpbiB0aGlzKTtcbn1cblxuLy8gTGlrZSBkMy5sb2NhbCwgYnV0IHdpdGggdGhlIG5hbWUgXHUyMDFDX19icnVzaFx1MjAxRCByYXRoZXIgdGhhbiBhdXRvLWdlbmVyYXRlZC5cbmZ1bmN0aW9uIGxvY2FsKG5vZGUpIHtcbiAgd2hpbGUgKCFub2RlLl9fYnJ1c2gpIGlmICghKG5vZGUgPSBub2RlLnBhcmVudE5vZGUpKSByZXR1cm47XG4gIHJldHVybiBub2RlLl9fYnJ1c2g7XG59XG5cbmZ1bmN0aW9uIGVtcHR5KGV4dGVudCkge1xuICByZXR1cm4gZXh0ZW50WzBdWzBdID09PSBleHRlbnRbMV1bMF1cbiAgICAgIHx8IGV4dGVudFswXVsxXSA9PT0gZXh0ZW50WzFdWzFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnJ1c2hTZWxlY3Rpb24obm9kZSkge1xuICB2YXIgc3RhdGUgPSBub2RlLl9fYnJ1c2g7XG4gIHJldHVybiBzdGF0ZSA/IHN0YXRlLmRpbS5vdXRwdXQoc3RhdGUuc2VsZWN0aW9uKSA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBicnVzaFgoKSB7XG4gIHJldHVybiBicnVzaChYKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJydXNoWSgpIHtcbiAgcmV0dXJuIGJydXNoKFkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGJydXNoKFhZKTtcbn1cblxuZnVuY3Rpb24gYnJ1c2goZGltKSB7XG4gIHZhciBleHRlbnQgPSBkZWZhdWx0RXh0ZW50LFxuICAgICAgZmlsdGVyID0gZGVmYXVsdEZpbHRlcixcbiAgICAgIHRvdWNoYWJsZSA9IGRlZmF1bHRUb3VjaGFibGUsXG4gICAgICBrZXlzID0gdHJ1ZSxcbiAgICAgIGxpc3RlbmVycyA9IGRpc3BhdGNoKFwic3RhcnRcIiwgXCJicnVzaFwiLCBcImVuZFwiKSxcbiAgICAgIGhhbmRsZVNpemUgPSA2LFxuICAgICAgdG91Y2hlbmRpbmc7XG5cbiAgZnVuY3Rpb24gYnJ1c2goZ3JvdXApIHtcbiAgICB2YXIgb3ZlcmxheSA9IGdyb3VwXG4gICAgICAgIC5wcm9wZXJ0eShcIl9fYnJ1c2hcIiwgaW5pdGlhbGl6ZSlcbiAgICAgIC5zZWxlY3RBbGwoXCIub3ZlcmxheVwiKVxuICAgICAgLmRhdGEoW3R5cGUoXCJvdmVybGF5XCIpXSk7XG5cbiAgICBvdmVybGF5LmVudGVyKCkuYXBwZW5kKFwicmVjdFwiKVxuICAgICAgICAuYXR0cihcImNsYXNzXCIsIFwib3ZlcmxheVwiKVxuICAgICAgICAuYXR0cihcInBvaW50ZXItZXZlbnRzXCIsIFwiYWxsXCIpXG4gICAgICAgIC5hdHRyKFwiY3Vyc29yXCIsIGN1cnNvcnMub3ZlcmxheSlcbiAgICAgIC5tZXJnZShvdmVybGF5KVxuICAgICAgICAuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgZXh0ZW50ID0gbG9jYWwodGhpcykuZXh0ZW50O1xuICAgICAgICAgIHNlbGVjdCh0aGlzKVxuICAgICAgICAgICAgICAuYXR0cihcInhcIiwgZXh0ZW50WzBdWzBdKVxuICAgICAgICAgICAgICAuYXR0cihcInlcIiwgZXh0ZW50WzBdWzFdKVxuICAgICAgICAgICAgICAuYXR0cihcIndpZHRoXCIsIGV4dGVudFsxXVswXSAtIGV4dGVudFswXVswXSlcbiAgICAgICAgICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgZXh0ZW50WzFdWzFdIC0gZXh0ZW50WzBdWzFdKTtcbiAgICAgICAgfSk7XG5cbiAgICBncm91cC5zZWxlY3RBbGwoXCIuc2VsZWN0aW9uXCIpXG4gICAgICAuZGF0YShbdHlwZShcInNlbGVjdGlvblwiKV0pXG4gICAgICAuZW50ZXIoKS5hcHBlbmQoXCJyZWN0XCIpXG4gICAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJzZWxlY3Rpb25cIilcbiAgICAgICAgLmF0dHIoXCJjdXJzb3JcIiwgY3Vyc29ycy5zZWxlY3Rpb24pXG4gICAgICAgIC5hdHRyKFwiZmlsbFwiLCBcIiM3NzdcIilcbiAgICAgICAgLmF0dHIoXCJmaWxsLW9wYWNpdHlcIiwgMC4zKVxuICAgICAgICAuYXR0cihcInN0cm9rZVwiLCBcIiNmZmZcIilcbiAgICAgICAgLmF0dHIoXCJzaGFwZS1yZW5kZXJpbmdcIiwgXCJjcmlzcEVkZ2VzXCIpO1xuXG4gICAgdmFyIGhhbmRsZSA9IGdyb3VwLnNlbGVjdEFsbChcIi5oYW5kbGVcIilcbiAgICAgIC5kYXRhKGRpbS5oYW5kbGVzLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnR5cGU7IH0pO1xuXG4gICAgaGFuZGxlLmV4aXQoKS5yZW1vdmUoKTtcblxuICAgIGhhbmRsZS5lbnRlcigpLmFwcGVuZChcInJlY3RcIilcbiAgICAgICAgLmF0dHIoXCJjbGFzc1wiLCBmdW5jdGlvbihkKSB7IHJldHVybiBcImhhbmRsZSBoYW5kbGUtLVwiICsgZC50eXBlOyB9KVxuICAgICAgICAuYXR0cihcImN1cnNvclwiLCBmdW5jdGlvbihkKSB7IHJldHVybiBjdXJzb3JzW2QudHlwZV07IH0pO1xuXG4gICAgZ3JvdXBcbiAgICAgICAgLmVhY2gocmVkcmF3KVxuICAgICAgICAuYXR0cihcImZpbGxcIiwgXCJub25lXCIpXG4gICAgICAgIC5hdHRyKFwicG9pbnRlci1ldmVudHNcIiwgXCJhbGxcIilcbiAgICAgICAgLm9uKFwibW91c2Vkb3duLmJydXNoXCIsIHN0YXJ0ZWQpXG4gICAgICAuZmlsdGVyKHRvdWNoYWJsZSlcbiAgICAgICAgLm9uKFwidG91Y2hzdGFydC5icnVzaFwiLCBzdGFydGVkKVxuICAgICAgICAub24oXCJ0b3VjaG1vdmUuYnJ1c2hcIiwgdG91Y2htb3ZlZClcbiAgICAgICAgLm9uKFwidG91Y2hlbmQuYnJ1c2ggdG91Y2hjYW5jZWwuYnJ1c2hcIiwgdG91Y2hlbmRlZClcbiAgICAgICAgLnN0eWxlKFwidG91Y2gtYWN0aW9uXCIsIFwibm9uZVwiKVxuICAgICAgICAuc3R5bGUoXCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3JcIiwgXCJyZ2JhKDAsMCwwLDApXCIpO1xuICB9XG5cbiAgYnJ1c2gubW92ZSA9IGZ1bmN0aW9uKGdyb3VwLCBzZWxlY3Rpb24pIHtcbiAgICBpZiAoZ3JvdXAudHdlZW4pIHtcbiAgICAgIGdyb3VwXG4gICAgICAgICAgLm9uKFwic3RhcnQuYnJ1c2hcIiwgZnVuY3Rpb24oZXZlbnQpIHsgZW1pdHRlcih0aGlzLCBhcmd1bWVudHMpLmJlZm9yZXN0YXJ0KCkuc3RhcnQoZXZlbnQpOyB9KVxuICAgICAgICAgIC5vbihcImludGVycnVwdC5icnVzaCBlbmQuYnJ1c2hcIiwgZnVuY3Rpb24oZXZlbnQpIHsgZW1pdHRlcih0aGlzLCBhcmd1bWVudHMpLmVuZChldmVudCk7IH0pXG4gICAgICAgICAgLnR3ZWVuKFwiYnJ1c2hcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsXG4gICAgICAgICAgICAgICAgc3RhdGUgPSB0aGF0Ll9fYnJ1c2gsXG4gICAgICAgICAgICAgICAgZW1pdCA9IGVtaXR0ZXIodGhhdCwgYXJndW1lbnRzKSxcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb24wID0gc3RhdGUuc2VsZWN0aW9uLFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbjEgPSBkaW0uaW5wdXQodHlwZW9mIHNlbGVjdGlvbiA9PT0gXCJmdW5jdGlvblwiID8gc2VsZWN0aW9uLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiBzZWxlY3Rpb24sIHN0YXRlLmV4dGVudCksXG4gICAgICAgICAgICAgICAgaSA9IGludGVycG9sYXRlKHNlbGVjdGlvbjAsIHNlbGVjdGlvbjEpO1xuXG4gICAgICAgICAgICBmdW5jdGlvbiB0d2Vlbih0KSB7XG4gICAgICAgICAgICAgIHN0YXRlLnNlbGVjdGlvbiA9IHQgPT09IDEgJiYgc2VsZWN0aW9uMSA9PT0gbnVsbCA/IG51bGwgOiBpKHQpO1xuICAgICAgICAgICAgICByZWRyYXcuY2FsbCh0aGF0KTtcbiAgICAgICAgICAgICAgZW1pdC5icnVzaCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0aW9uMCAhPT0gbnVsbCAmJiBzZWxlY3Rpb24xICE9PSBudWxsID8gdHdlZW4gOiB0d2VlbigxKTtcbiAgICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXBcbiAgICAgICAgICAuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcyxcbiAgICAgICAgICAgICAgICBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICAgICAgICAgIHN0YXRlID0gdGhhdC5fX2JydXNoLFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbjEgPSBkaW0uaW5wdXQodHlwZW9mIHNlbGVjdGlvbiA9PT0gXCJmdW5jdGlvblwiID8gc2VsZWN0aW9uLmFwcGx5KHRoYXQsIGFyZ3MpIDogc2VsZWN0aW9uLCBzdGF0ZS5leHRlbnQpLFxuICAgICAgICAgICAgICAgIGVtaXQgPSBlbWl0dGVyKHRoYXQsIGFyZ3MpLmJlZm9yZXN0YXJ0KCk7XG5cbiAgICAgICAgICAgIGludGVycnVwdCh0aGF0KTtcbiAgICAgICAgICAgIHN0YXRlLnNlbGVjdGlvbiA9IHNlbGVjdGlvbjEgPT09IG51bGwgPyBudWxsIDogc2VsZWN0aW9uMTtcbiAgICAgICAgICAgIHJlZHJhdy5jYWxsKHRoYXQpO1xuICAgICAgICAgICAgZW1pdC5zdGFydCgpLmJydXNoKCkuZW5kKCk7XG4gICAgICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGJydXNoLmNsZWFyID0gZnVuY3Rpb24oZ3JvdXApIHtcbiAgICBicnVzaC5tb3ZlKGdyb3VwLCBudWxsKTtcbiAgfTtcblxuICBmdW5jdGlvbiByZWRyYXcoKSB7XG4gICAgdmFyIGdyb3VwID0gc2VsZWN0KHRoaXMpLFxuICAgICAgICBzZWxlY3Rpb24gPSBsb2NhbCh0aGlzKS5zZWxlY3Rpb247XG5cbiAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICBncm91cC5zZWxlY3RBbGwoXCIuc2VsZWN0aW9uXCIpXG4gICAgICAgICAgLnN0eWxlKFwiZGlzcGxheVwiLCBudWxsKVxuICAgICAgICAgIC5hdHRyKFwieFwiLCBzZWxlY3Rpb25bMF1bMF0pXG4gICAgICAgICAgLmF0dHIoXCJ5XCIsIHNlbGVjdGlvblswXVsxXSlcbiAgICAgICAgICAuYXR0cihcIndpZHRoXCIsIHNlbGVjdGlvblsxXVswXSAtIHNlbGVjdGlvblswXVswXSlcbiAgICAgICAgICAuYXR0cihcImhlaWdodFwiLCBzZWxlY3Rpb25bMV1bMV0gLSBzZWxlY3Rpb25bMF1bMV0pO1xuXG4gICAgICBncm91cC5zZWxlY3RBbGwoXCIuaGFuZGxlXCIpXG4gICAgICAgICAgLnN0eWxlKFwiZGlzcGxheVwiLCBudWxsKVxuICAgICAgICAgIC5hdHRyKFwieFwiLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnR5cGVbZC50eXBlLmxlbmd0aCAtIDFdID09PSBcImVcIiA/IHNlbGVjdGlvblsxXVswXSAtIGhhbmRsZVNpemUgLyAyIDogc2VsZWN0aW9uWzBdWzBdIC0gaGFuZGxlU2l6ZSAvIDI7IH0pXG4gICAgICAgICAgLmF0dHIoXCJ5XCIsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudHlwZVswXSA9PT0gXCJzXCIgPyBzZWxlY3Rpb25bMV1bMV0gLSBoYW5kbGVTaXplIC8gMiA6IHNlbGVjdGlvblswXVsxXSAtIGhhbmRsZVNpemUgLyAyOyB9KVxuICAgICAgICAgIC5hdHRyKFwid2lkdGhcIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC50eXBlID09PSBcIm5cIiB8fCBkLnR5cGUgPT09IFwic1wiID8gc2VsZWN0aW9uWzFdWzBdIC0gc2VsZWN0aW9uWzBdWzBdICsgaGFuZGxlU2l6ZSA6IGhhbmRsZVNpemU7IH0pXG4gICAgICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC50eXBlID09PSBcImVcIiB8fCBkLnR5cGUgPT09IFwid1wiID8gc2VsZWN0aW9uWzFdWzFdIC0gc2VsZWN0aW9uWzBdWzFdICsgaGFuZGxlU2l6ZSA6IGhhbmRsZVNpemU7IH0pO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgZ3JvdXAuc2VsZWN0QWxsKFwiLnNlbGVjdGlvbiwuaGFuZGxlXCIpXG4gICAgICAgICAgLnN0eWxlKFwiZGlzcGxheVwiLCBcIm5vbmVcIilcbiAgICAgICAgICAuYXR0cihcInhcIiwgbnVsbClcbiAgICAgICAgICAuYXR0cihcInlcIiwgbnVsbClcbiAgICAgICAgICAuYXR0cihcIndpZHRoXCIsIG51bGwpXG4gICAgICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZW1pdHRlcih0aGF0LCBhcmdzLCBjbGVhbikge1xuICAgIHZhciBlbWl0ID0gdGhhdC5fX2JydXNoLmVtaXR0ZXI7XG4gICAgcmV0dXJuIGVtaXQgJiYgKCFjbGVhbiB8fCAhZW1pdC5jbGVhbikgPyBlbWl0IDogbmV3IEVtaXR0ZXIodGhhdCwgYXJncywgY2xlYW4pO1xuICB9XG5cbiAgZnVuY3Rpb24gRW1pdHRlcih0aGF0LCBhcmdzLCBjbGVhbikge1xuICAgIHRoaXMudGhhdCA9IHRoYXQ7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgICB0aGlzLnN0YXRlID0gdGhhdC5fX2JydXNoO1xuICAgIHRoaXMuYWN0aXZlID0gMDtcbiAgICB0aGlzLmNsZWFuID0gY2xlYW47XG4gIH1cblxuICBFbWl0dGVyLnByb3RvdHlwZSA9IHtcbiAgICBiZWZvcmVzdGFydDogZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoKyt0aGlzLmFjdGl2ZSA9PT0gMSkgdGhpcy5zdGF0ZS5lbWl0dGVyID0gdGhpcywgdGhpcy5zdGFydGluZyA9IHRydWU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIHN0YXJ0OiBmdW5jdGlvbihldmVudCwgbW9kZSkge1xuICAgICAgaWYgKHRoaXMuc3RhcnRpbmcpIHRoaXMuc3RhcnRpbmcgPSBmYWxzZSwgdGhpcy5lbWl0KFwic3RhcnRcIiwgZXZlbnQsIG1vZGUpO1xuICAgICAgZWxzZSB0aGlzLmVtaXQoXCJicnVzaFwiLCBldmVudCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIGJydXNoOiBmdW5jdGlvbihldmVudCwgbW9kZSkge1xuICAgICAgdGhpcy5lbWl0KFwiYnJ1c2hcIiwgZXZlbnQsIG1vZGUpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBlbmQ6IGZ1bmN0aW9uKGV2ZW50LCBtb2RlKSB7XG4gICAgICBpZiAoLS10aGlzLmFjdGl2ZSA9PT0gMCkgZGVsZXRlIHRoaXMuc3RhdGUuZW1pdHRlciwgdGhpcy5lbWl0KFwiZW5kXCIsIGV2ZW50LCBtb2RlKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgZW1pdDogZnVuY3Rpb24odHlwZSwgZXZlbnQsIG1vZGUpIHtcbiAgICAgIHZhciBkID0gc2VsZWN0KHRoaXMudGhhdCkuZGF0dW0oKTtcbiAgICAgIGxpc3RlbmVycy5jYWxsKFxuICAgICAgICB0eXBlLFxuICAgICAgICB0aGlzLnRoYXQsXG4gICAgICAgIG5ldyBCcnVzaEV2ZW50KHR5cGUsIHtcbiAgICAgICAgICBzb3VyY2VFdmVudDogZXZlbnQsXG4gICAgICAgICAgdGFyZ2V0OiBicnVzaCxcbiAgICAgICAgICBzZWxlY3Rpb246IGRpbS5vdXRwdXQodGhpcy5zdGF0ZS5zZWxlY3Rpb24pLFxuICAgICAgICAgIG1vZGUsXG4gICAgICAgICAgZGlzcGF0Y2g6IGxpc3RlbmVyc1xuICAgICAgICB9KSxcbiAgICAgICAgZFxuICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gc3RhcnRlZChldmVudCkge1xuICAgIGlmICh0b3VjaGVuZGluZyAmJiAhZXZlbnQudG91Y2hlcykgcmV0dXJuO1xuICAgIGlmICghZmlsdGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIHJldHVybjtcblxuICAgIHZhciB0aGF0ID0gdGhpcyxcbiAgICAgICAgdHlwZSA9IGV2ZW50LnRhcmdldC5fX2RhdGFfXy50eXBlLFxuICAgICAgICBtb2RlID0gKGtleXMgJiYgZXZlbnQubWV0YUtleSA/IHR5cGUgPSBcIm92ZXJsYXlcIiA6IHR5cGUpID09PSBcInNlbGVjdGlvblwiID8gTU9ERV9EUkFHIDogKGtleXMgJiYgZXZlbnQuYWx0S2V5ID8gTU9ERV9DRU5URVIgOiBNT0RFX0hBTkRMRSksXG4gICAgICAgIHNpZ25YID0gZGltID09PSBZID8gbnVsbCA6IHNpZ25zWFt0eXBlXSxcbiAgICAgICAgc2lnblkgPSBkaW0gPT09IFggPyBudWxsIDogc2lnbnNZW3R5cGVdLFxuICAgICAgICBzdGF0ZSA9IGxvY2FsKHRoYXQpLFxuICAgICAgICBleHRlbnQgPSBzdGF0ZS5leHRlbnQsXG4gICAgICAgIHNlbGVjdGlvbiA9IHN0YXRlLnNlbGVjdGlvbixcbiAgICAgICAgVyA9IGV4dGVudFswXVswXSwgdzAsIHcxLFxuICAgICAgICBOID0gZXh0ZW50WzBdWzFdLCBuMCwgbjEsXG4gICAgICAgIEUgPSBleHRlbnRbMV1bMF0sIGUwLCBlMSxcbiAgICAgICAgUyA9IGV4dGVudFsxXVsxXSwgczAsIHMxLFxuICAgICAgICBkeCA9IDAsXG4gICAgICAgIGR5ID0gMCxcbiAgICAgICAgbW92aW5nLFxuICAgICAgICBzaGlmdGluZyA9IHNpZ25YICYmIHNpZ25ZICYmIGtleXMgJiYgZXZlbnQuc2hpZnRLZXksXG4gICAgICAgIGxvY2tYLFxuICAgICAgICBsb2NrWSxcbiAgICAgICAgcG9pbnRzID0gQXJyYXkuZnJvbShldmVudC50b3VjaGVzIHx8IFtldmVudF0sIHQgPT4ge1xuICAgICAgICAgIGNvbnN0IGkgPSB0LmlkZW50aWZpZXI7XG4gICAgICAgICAgdCA9IHBvaW50ZXIodCwgdGhhdCk7XG4gICAgICAgICAgdC5wb2ludDAgPSB0LnNsaWNlKCk7XG4gICAgICAgICAgdC5pZGVudGlmaWVyID0gaTtcbiAgICAgICAgICByZXR1cm4gdDtcbiAgICAgICAgfSk7XG5cbiAgICBpZiAodHlwZSA9PT0gXCJvdmVybGF5XCIpIHtcbiAgICAgIGlmIChzZWxlY3Rpb24pIG1vdmluZyA9IHRydWU7XG4gICAgICBjb25zdCBwdHMgPSBbcG9pbnRzWzBdLCBwb2ludHNbMV0gfHwgcG9pbnRzWzBdXTtcbiAgICAgIHN0YXRlLnNlbGVjdGlvbiA9IHNlbGVjdGlvbiA9IFtbXG4gICAgICAgICAgdzAgPSBkaW0gPT09IFkgPyBXIDogbWluKHB0c1swXVswXSwgcHRzWzFdWzBdKSxcbiAgICAgICAgICBuMCA9IGRpbSA9PT0gWCA/IE4gOiBtaW4ocHRzWzBdWzFdLCBwdHNbMV1bMV0pXG4gICAgICAgIF0sIFtcbiAgICAgICAgICBlMCA9IGRpbSA9PT0gWSA/IEUgOiBtYXgocHRzWzBdWzBdLCBwdHNbMV1bMF0pLFxuICAgICAgICAgIHMwID0gZGltID09PSBYID8gUyA6IG1heChwdHNbMF1bMV0sIHB0c1sxXVsxXSlcbiAgICAgICAgXV07XG4gICAgICBpZiAocG9pbnRzLmxlbmd0aCA+IDEpIG1vdmUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdzAgPSBzZWxlY3Rpb25bMF1bMF07XG4gICAgICBuMCA9IHNlbGVjdGlvblswXVsxXTtcbiAgICAgIGUwID0gc2VsZWN0aW9uWzFdWzBdO1xuICAgICAgczAgPSBzZWxlY3Rpb25bMV1bMV07XG4gICAgfVxuXG4gICAgdzEgPSB3MDtcbiAgICBuMSA9IG4wO1xuICAgIGUxID0gZTA7XG4gICAgczEgPSBzMDtcblxuICAgIHZhciBncm91cCA9IHNlbGVjdCh0aGF0KVxuICAgICAgICAuYXR0cihcInBvaW50ZXItZXZlbnRzXCIsIFwibm9uZVwiKTtcblxuICAgIHZhciBvdmVybGF5ID0gZ3JvdXAuc2VsZWN0QWxsKFwiLm92ZXJsYXlcIilcbiAgICAgICAgLmF0dHIoXCJjdXJzb3JcIiwgY3Vyc29yc1t0eXBlXSk7XG5cbiAgICBpbnRlcnJ1cHQodGhhdCk7XG4gICAgdmFyIGVtaXQgPSBlbWl0dGVyKHRoYXQsIGFyZ3VtZW50cywgdHJ1ZSkuYmVmb3Jlc3RhcnQoKTtcblxuICAgIGlmIChldmVudC50b3VjaGVzKSB7XG4gICAgICBlbWl0Lm1vdmVkID0gbW92ZWQ7XG4gICAgICBlbWl0LmVuZGVkID0gZW5kZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB2aWV3ID0gc2VsZWN0KGV2ZW50LnZpZXcpXG4gICAgICAgICAgLm9uKFwibW91c2Vtb3ZlLmJydXNoXCIsIG1vdmVkLCB0cnVlKVxuICAgICAgICAgIC5vbihcIm1vdXNldXAuYnJ1c2hcIiwgZW5kZWQsIHRydWUpO1xuICAgICAgaWYgKGtleXMpIHZpZXdcbiAgICAgICAgICAub24oXCJrZXlkb3duLmJydXNoXCIsIGtleWRvd25lZCwgdHJ1ZSlcbiAgICAgICAgICAub24oXCJrZXl1cC5icnVzaFwiLCBrZXl1cHBlZCwgdHJ1ZSlcblxuICAgICAgZHJhZ0Rpc2FibGUoZXZlbnQudmlldyk7XG4gICAgfVxuXG4gICAgcmVkcmF3LmNhbGwodGhhdCk7XG4gICAgZW1pdC5zdGFydChldmVudCwgbW9kZS5uYW1lKTtcblxuICAgIGZ1bmN0aW9uIG1vdmVkKGV2ZW50KSB7XG4gICAgICBmb3IgKGNvbnN0IHAgb2YgZXZlbnQuY2hhbmdlZFRvdWNoZXMgfHwgW2V2ZW50XSkge1xuICAgICAgICBmb3IgKGNvbnN0IGQgb2YgcG9pbnRzKVxuICAgICAgICAgIGlmIChkLmlkZW50aWZpZXIgPT09IHAuaWRlbnRpZmllcikgZC5jdXIgPSBwb2ludGVyKHAsIHRoYXQpO1xuICAgICAgfVxuICAgICAgaWYgKHNoaWZ0aW5nICYmICFsb2NrWCAmJiAhbG9ja1kgJiYgcG9pbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBjb25zdCBwb2ludCA9IHBvaW50c1swXTtcbiAgICAgICAgaWYgKGFicyhwb2ludC5jdXJbMF0gLSBwb2ludFswXSkgPiBhYnMocG9pbnQuY3VyWzFdIC0gcG9pbnRbMV0pKVxuICAgICAgICAgIGxvY2tZID0gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvY2tYID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgcG9pbnQgb2YgcG9pbnRzKVxuICAgICAgICBpZiAocG9pbnQuY3VyKSBwb2ludFswXSA9IHBvaW50LmN1clswXSwgcG9pbnRbMV0gPSBwb2ludC5jdXJbMV07XG4gICAgICBtb3ZpbmcgPSB0cnVlO1xuICAgICAgbm9ldmVudChldmVudCk7XG4gICAgICBtb3ZlKGV2ZW50KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb3ZlKGV2ZW50KSB7XG4gICAgICBjb25zdCBwb2ludCA9IHBvaW50c1swXSwgcG9pbnQwID0gcG9pbnQucG9pbnQwO1xuICAgICAgdmFyIHQ7XG5cbiAgICAgIGR4ID0gcG9pbnRbMF0gLSBwb2ludDBbMF07XG4gICAgICBkeSA9IHBvaW50WzFdIC0gcG9pbnQwWzFdO1xuXG4gICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgY2FzZSBNT0RFX1NQQUNFOlxuICAgICAgICBjYXNlIE1PREVfRFJBRzoge1xuICAgICAgICAgIGlmIChzaWduWCkgZHggPSBtYXgoVyAtIHcwLCBtaW4oRSAtIGUwLCBkeCkpLCB3MSA9IHcwICsgZHgsIGUxID0gZTAgKyBkeDtcbiAgICAgICAgICBpZiAoc2lnblkpIGR5ID0gbWF4KE4gLSBuMCwgbWluKFMgLSBzMCwgZHkpKSwgbjEgPSBuMCArIGR5LCBzMSA9IHMwICsgZHk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBNT0RFX0hBTkRMRToge1xuICAgICAgICAgIGlmIChwb2ludHNbMV0pIHtcbiAgICAgICAgICAgIGlmIChzaWduWCkgdzEgPSBtYXgoVywgbWluKEUsIHBvaW50c1swXVswXSkpLCBlMSA9IG1heChXLCBtaW4oRSwgcG9pbnRzWzFdWzBdKSksIHNpZ25YID0gMTtcbiAgICAgICAgICAgIGlmIChzaWduWSkgbjEgPSBtYXgoTiwgbWluKFMsIHBvaW50c1swXVsxXSkpLCBzMSA9IG1heChOLCBtaW4oUywgcG9pbnRzWzFdWzFdKSksIHNpZ25ZID0gMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHNpZ25YIDwgMCkgZHggPSBtYXgoVyAtIHcwLCBtaW4oRSAtIHcwLCBkeCkpLCB3MSA9IHcwICsgZHgsIGUxID0gZTA7XG4gICAgICAgICAgICBlbHNlIGlmIChzaWduWCA+IDApIGR4ID0gbWF4KFcgLSBlMCwgbWluKEUgLSBlMCwgZHgpKSwgdzEgPSB3MCwgZTEgPSBlMCArIGR4O1xuICAgICAgICAgICAgaWYgKHNpZ25ZIDwgMCkgZHkgPSBtYXgoTiAtIG4wLCBtaW4oUyAtIG4wLCBkeSkpLCBuMSA9IG4wICsgZHksIHMxID0gczA7XG4gICAgICAgICAgICBlbHNlIGlmIChzaWduWSA+IDApIGR5ID0gbWF4KE4gLSBzMCwgbWluKFMgLSBzMCwgZHkpKSwgbjEgPSBuMCwgczEgPSBzMCArIGR5O1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIE1PREVfQ0VOVEVSOiB7XG4gICAgICAgICAgaWYgKHNpZ25YKSB3MSA9IG1heChXLCBtaW4oRSwgdzAgLSBkeCAqIHNpZ25YKSksIGUxID0gbWF4KFcsIG1pbihFLCBlMCArIGR4ICogc2lnblgpKTtcbiAgICAgICAgICBpZiAoc2lnblkpIG4xID0gbWF4KE4sIG1pbihTLCBuMCAtIGR5ICogc2lnblkpKSwgczEgPSBtYXgoTiwgbWluKFMsIHMwICsgZHkgKiBzaWduWSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChlMSA8IHcxKSB7XG4gICAgICAgIHNpZ25YICo9IC0xO1xuICAgICAgICB0ID0gdzAsIHcwID0gZTAsIGUwID0gdDtcbiAgICAgICAgdCA9IHcxLCB3MSA9IGUxLCBlMSA9IHQ7XG4gICAgICAgIGlmICh0eXBlIGluIGZsaXBYKSBvdmVybGF5LmF0dHIoXCJjdXJzb3JcIiwgY3Vyc29yc1t0eXBlID0gZmxpcFhbdHlwZV1dKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHMxIDwgbjEpIHtcbiAgICAgICAgc2lnblkgKj0gLTE7XG4gICAgICAgIHQgPSBuMCwgbjAgPSBzMCwgczAgPSB0O1xuICAgICAgICB0ID0gbjEsIG4xID0gczEsIHMxID0gdDtcbiAgICAgICAgaWYgKHR5cGUgaW4gZmxpcFkpIG92ZXJsYXkuYXR0cihcImN1cnNvclwiLCBjdXJzb3JzW3R5cGUgPSBmbGlwWVt0eXBlXV0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUuc2VsZWN0aW9uKSBzZWxlY3Rpb24gPSBzdGF0ZS5zZWxlY3Rpb247IC8vIE1heSBiZSBzZXQgYnkgYnJ1c2gubW92ZSFcbiAgICAgIGlmIChsb2NrWCkgdzEgPSBzZWxlY3Rpb25bMF1bMF0sIGUxID0gc2VsZWN0aW9uWzFdWzBdO1xuICAgICAgaWYgKGxvY2tZKSBuMSA9IHNlbGVjdGlvblswXVsxXSwgczEgPSBzZWxlY3Rpb25bMV1bMV07XG5cbiAgICAgIGlmIChzZWxlY3Rpb25bMF1bMF0gIT09IHcxXG4gICAgICAgICAgfHwgc2VsZWN0aW9uWzBdWzFdICE9PSBuMVxuICAgICAgICAgIHx8IHNlbGVjdGlvblsxXVswXSAhPT0gZTFcbiAgICAgICAgICB8fCBzZWxlY3Rpb25bMV1bMV0gIT09IHMxKSB7XG4gICAgICAgIHN0YXRlLnNlbGVjdGlvbiA9IFtbdzEsIG4xXSwgW2UxLCBzMV1dO1xuICAgICAgICByZWRyYXcuY2FsbCh0aGF0KTtcbiAgICAgICAgZW1pdC5icnVzaChldmVudCwgbW9kZS5uYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbmRlZChldmVudCkge1xuICAgICAgbm9wcm9wYWdhdGlvbihldmVudCk7XG4gICAgICBpZiAoZXZlbnQudG91Y2hlcykge1xuICAgICAgICBpZiAoZXZlbnQudG91Y2hlcy5sZW5ndGgpIHJldHVybjtcbiAgICAgICAgaWYgKHRvdWNoZW5kaW5nKSBjbGVhclRpbWVvdXQodG91Y2hlbmRpbmcpO1xuICAgICAgICB0b3VjaGVuZGluZyA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHRvdWNoZW5kaW5nID0gbnVsbDsgfSwgNTAwKTsgLy8gR2hvc3QgY2xpY2tzIGFyZSBkZWxheWVkIVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZHJhZ0VuYWJsZShldmVudC52aWV3LCBtb3ZpbmcpO1xuICAgICAgICB2aWV3Lm9uKFwia2V5ZG93bi5icnVzaCBrZXl1cC5icnVzaCBtb3VzZW1vdmUuYnJ1c2ggbW91c2V1cC5icnVzaFwiLCBudWxsKTtcbiAgICAgIH1cbiAgICAgIGdyb3VwLmF0dHIoXCJwb2ludGVyLWV2ZW50c1wiLCBcImFsbFwiKTtcbiAgICAgIG92ZXJsYXkuYXR0cihcImN1cnNvclwiLCBjdXJzb3JzLm92ZXJsYXkpO1xuICAgICAgaWYgKHN0YXRlLnNlbGVjdGlvbikgc2VsZWN0aW9uID0gc3RhdGUuc2VsZWN0aW9uOyAvLyBNYXkgYmUgc2V0IGJ5IGJydXNoLm1vdmUgKG9uIHN0YXJ0KSFcbiAgICAgIGlmIChlbXB0eShzZWxlY3Rpb24pKSBzdGF0ZS5zZWxlY3Rpb24gPSBudWxsLCByZWRyYXcuY2FsbCh0aGF0KTtcbiAgICAgIGVtaXQuZW5kKGV2ZW50LCBtb2RlLm5hbWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGtleWRvd25lZChldmVudCkge1xuICAgICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7XG4gICAgICAgIGNhc2UgMTY6IHsgLy8gU0hJRlRcbiAgICAgICAgICBzaGlmdGluZyA9IHNpZ25YICYmIHNpZ25ZO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMTg6IHsgLy8gQUxUXG4gICAgICAgICAgaWYgKG1vZGUgPT09IE1PREVfSEFORExFKSB7XG4gICAgICAgICAgICBpZiAoc2lnblgpIGUwID0gZTEgLSBkeCAqIHNpZ25YLCB3MCA9IHcxICsgZHggKiBzaWduWDtcbiAgICAgICAgICAgIGlmIChzaWduWSkgczAgPSBzMSAtIGR5ICogc2lnblksIG4wID0gbjEgKyBkeSAqIHNpZ25ZO1xuICAgICAgICAgICAgbW9kZSA9IE1PREVfQ0VOVEVSO1xuICAgICAgICAgICAgbW92ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDMyOiB7IC8vIFNQQUNFOyB0YWtlcyBwcmlvcml0eSBvdmVyIEFMVFxuICAgICAgICAgIGlmIChtb2RlID09PSBNT0RFX0hBTkRMRSB8fCBtb2RlID09PSBNT0RFX0NFTlRFUikge1xuICAgICAgICAgICAgaWYgKHNpZ25YIDwgMCkgZTAgPSBlMSAtIGR4OyBlbHNlIGlmIChzaWduWCA+IDApIHcwID0gdzEgLSBkeDtcbiAgICAgICAgICAgIGlmIChzaWduWSA8IDApIHMwID0gczEgLSBkeTsgZWxzZSBpZiAoc2lnblkgPiAwKSBuMCA9IG4xIC0gZHk7XG4gICAgICAgICAgICBtb2RlID0gTU9ERV9TUEFDRTtcbiAgICAgICAgICAgIG92ZXJsYXkuYXR0cihcImN1cnNvclwiLCBjdXJzb3JzLnNlbGVjdGlvbik7XG4gICAgICAgICAgICBtb3ZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHJldHVybjtcbiAgICAgIH1cbiAgICAgIG5vZXZlbnQoZXZlbnQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGtleXVwcGVkKGV2ZW50KSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcbiAgICAgICAgY2FzZSAxNjogeyAvLyBTSElGVFxuICAgICAgICAgIGlmIChzaGlmdGluZykge1xuICAgICAgICAgICAgbG9ja1ggPSBsb2NrWSA9IHNoaWZ0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICBtb3ZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMTg6IHsgLy8gQUxUXG4gICAgICAgICAgaWYgKG1vZGUgPT09IE1PREVfQ0VOVEVSKSB7XG4gICAgICAgICAgICBpZiAoc2lnblggPCAwKSBlMCA9IGUxOyBlbHNlIGlmIChzaWduWCA+IDApIHcwID0gdzE7XG4gICAgICAgICAgICBpZiAoc2lnblkgPCAwKSBzMCA9IHMxOyBlbHNlIGlmIChzaWduWSA+IDApIG4wID0gbjE7XG4gICAgICAgICAgICBtb2RlID0gTU9ERV9IQU5ETEU7XG4gICAgICAgICAgICBtb3ZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMzI6IHsgLy8gU1BBQ0VcbiAgICAgICAgICBpZiAobW9kZSA9PT0gTU9ERV9TUEFDRSkge1xuICAgICAgICAgICAgaWYgKGV2ZW50LmFsdEtleSkge1xuICAgICAgICAgICAgICBpZiAoc2lnblgpIGUwID0gZTEgLSBkeCAqIHNpZ25YLCB3MCA9IHcxICsgZHggKiBzaWduWDtcbiAgICAgICAgICAgICAgaWYgKHNpZ25ZKSBzMCA9IHMxIC0gZHkgKiBzaWduWSwgbjAgPSBuMSArIGR5ICogc2lnblk7XG4gICAgICAgICAgICAgIG1vZGUgPSBNT0RFX0NFTlRFUjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmIChzaWduWCA8IDApIGUwID0gZTE7IGVsc2UgaWYgKHNpZ25YID4gMCkgdzAgPSB3MTtcbiAgICAgICAgICAgICAgaWYgKHNpZ25ZIDwgMCkgczAgPSBzMTsgZWxzZSBpZiAoc2lnblkgPiAwKSBuMCA9IG4xO1xuICAgICAgICAgICAgICBtb2RlID0gTU9ERV9IQU5ETEU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdmVybGF5LmF0dHIoXCJjdXJzb3JcIiwgY3Vyc29yc1t0eXBlXSk7XG4gICAgICAgICAgICBtb3ZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHJldHVybjtcbiAgICAgIH1cbiAgICAgIG5vZXZlbnQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHRvdWNobW92ZWQoZXZlbnQpIHtcbiAgICBlbWl0dGVyKHRoaXMsIGFyZ3VtZW50cykubW92ZWQoZXZlbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG91Y2hlbmRlZChldmVudCkge1xuICAgIGVtaXR0ZXIodGhpcywgYXJndW1lbnRzKS5lbmRlZChldmVudCk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuX19icnVzaCB8fCB7c2VsZWN0aW9uOiBudWxsfTtcbiAgICBzdGF0ZS5leHRlbnQgPSBudW1iZXIyKGV4dGVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgICBzdGF0ZS5kaW0gPSBkaW07XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgYnJ1c2guZXh0ZW50ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGV4dGVudCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQobnVtYmVyMihfKSksIGJydXNoKSA6IGV4dGVudDtcbiAgfTtcblxuICBicnVzaC5maWx0ZXIgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZmlsdGVyID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCghIV8pLCBicnVzaCkgOiBmaWx0ZXI7XG4gIH07XG5cbiAgYnJ1c2gudG91Y2hhYmxlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRvdWNoYWJsZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoISFfKSwgYnJ1c2gpIDogdG91Y2hhYmxlO1xuICB9O1xuXG4gIGJydXNoLmhhbmRsZVNpemUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaGFuZGxlU2l6ZSA9ICtfLCBicnVzaCkgOiBoYW5kbGVTaXplO1xuICB9O1xuXG4gIGJydXNoLmtleU1vZGlmaWVycyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChrZXlzID0gISFfLCBicnVzaCkgOiBrZXlzO1xuICB9O1xuXG4gIGJydXNoLm9uID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHZhbHVlID0gbGlzdGVuZXJzLm9uLmFwcGx5KGxpc3RlbmVycywgYXJndW1lbnRzKTtcbiAgICByZXR1cm4gdmFsdWUgPT09IGxpc3RlbmVycyA/IGJydXNoIDogdmFsdWU7XG4gIH07XG5cbiAgcmV0dXJuIGJydXNoO1xufVxuIiwgImNvbnN0IHBpID0gTWF0aC5QSSxcbiAgICB0YXUgPSAyICogcGksXG4gICAgZXBzaWxvbiA9IDFlLTYsXG4gICAgdGF1RXBzaWxvbiA9IHRhdSAtIGVwc2lsb247XG5cbmZ1bmN0aW9uIFBhdGgoKSB7XG4gIHRoaXMuX3gwID0gdGhpcy5feTAgPSAvLyBzdGFydCBvZiBjdXJyZW50IHN1YnBhdGhcbiAgdGhpcy5feDEgPSB0aGlzLl95MSA9IG51bGw7IC8vIGVuZCBvZiBjdXJyZW50IHN1YnBhdGhcbiAgdGhpcy5fID0gXCJcIjtcbn1cblxuZnVuY3Rpb24gcGF0aCgpIHtcbiAgcmV0dXJuIG5ldyBQYXRoO1xufVxuXG5QYXRoLnByb3RvdHlwZSA9IHBhdGgucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogUGF0aCxcbiAgbW92ZVRvOiBmdW5jdGlvbih4LCB5KSB7XG4gICAgdGhpcy5fICs9IFwiTVwiICsgKHRoaXMuX3gwID0gdGhpcy5feDEgPSAreCkgKyBcIixcIiArICh0aGlzLl95MCA9IHRoaXMuX3kxID0gK3kpO1xuICB9LFxuICBjbG9zZVBhdGg6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl94MSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5feDEgPSB0aGlzLl94MCwgdGhpcy5feTEgPSB0aGlzLl95MDtcbiAgICAgIHRoaXMuXyArPSBcIlpcIjtcbiAgICB9XG4gIH0sXG4gIGxpbmVUbzogZnVuY3Rpb24oeCwgeSkge1xuICAgIHRoaXMuXyArPSBcIkxcIiArICh0aGlzLl94MSA9ICt4KSArIFwiLFwiICsgKHRoaXMuX3kxID0gK3kpO1xuICB9LFxuICBxdWFkcmF0aWNDdXJ2ZVRvOiBmdW5jdGlvbih4MSwgeTEsIHgsIHkpIHtcbiAgICB0aGlzLl8gKz0gXCJRXCIgKyAoK3gxKSArIFwiLFwiICsgKCt5MSkgKyBcIixcIiArICh0aGlzLl94MSA9ICt4KSArIFwiLFwiICsgKHRoaXMuX3kxID0gK3kpO1xuICB9LFxuICBiZXppZXJDdXJ2ZVRvOiBmdW5jdGlvbih4MSwgeTEsIHgyLCB5MiwgeCwgeSkge1xuICAgIHRoaXMuXyArPSBcIkNcIiArICgreDEpICsgXCIsXCIgKyAoK3kxKSArIFwiLFwiICsgKCt4MikgKyBcIixcIiArICgreTIpICsgXCIsXCIgKyAodGhpcy5feDEgPSAreCkgKyBcIixcIiArICh0aGlzLl95MSA9ICt5KTtcbiAgfSxcbiAgYXJjVG86IGZ1bmN0aW9uKHgxLCB5MSwgeDIsIHkyLCByKSB7XG4gICAgeDEgPSAreDEsIHkxID0gK3kxLCB4MiA9ICt4MiwgeTIgPSAreTIsIHIgPSArcjtcbiAgICB2YXIgeDAgPSB0aGlzLl94MSxcbiAgICAgICAgeTAgPSB0aGlzLl95MSxcbiAgICAgICAgeDIxID0geDIgLSB4MSxcbiAgICAgICAgeTIxID0geTIgLSB5MSxcbiAgICAgICAgeDAxID0geDAgLSB4MSxcbiAgICAgICAgeTAxID0geTAgLSB5MSxcbiAgICAgICAgbDAxXzIgPSB4MDEgKiB4MDEgKyB5MDEgKiB5MDE7XG5cbiAgICAvLyBJcyB0aGUgcmFkaXVzIG5lZ2F0aXZlPyBFcnJvci5cbiAgICBpZiAociA8IDApIHRocm93IG5ldyBFcnJvcihcIm5lZ2F0aXZlIHJhZGl1czogXCIgKyByKTtcblxuICAgIC8vIElzIHRoaXMgcGF0aCBlbXB0eT8gTW92ZSB0byAoeDEseTEpLlxuICAgIGlmICh0aGlzLl94MSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fICs9IFwiTVwiICsgKHRoaXMuX3gxID0geDEpICsgXCIsXCIgKyAodGhpcy5feTEgPSB5MSk7XG4gICAgfVxuXG4gICAgLy8gT3IsIGlzICh4MSx5MSkgY29pbmNpZGVudCB3aXRoICh4MCx5MCk/IERvIG5vdGhpbmcuXG4gICAgZWxzZSBpZiAoIShsMDFfMiA+IGVwc2lsb24pKTtcblxuICAgIC8vIE9yLCBhcmUgKHgwLHkwKSwgKHgxLHkxKSBhbmQgKHgyLHkyKSBjb2xsaW5lYXI/XG4gICAgLy8gRXF1aXZhbGVudGx5LCBpcyAoeDEseTEpIGNvaW5jaWRlbnQgd2l0aCAoeDIseTIpP1xuICAgIC8vIE9yLCBpcyB0aGUgcmFkaXVzIHplcm8/IExpbmUgdG8gKHgxLHkxKS5cbiAgICBlbHNlIGlmICghKE1hdGguYWJzKHkwMSAqIHgyMSAtIHkyMSAqIHgwMSkgPiBlcHNpbG9uKSB8fCAhcikge1xuICAgICAgdGhpcy5fICs9IFwiTFwiICsgKHRoaXMuX3gxID0geDEpICsgXCIsXCIgKyAodGhpcy5feTEgPSB5MSk7XG4gICAgfVxuXG4gICAgLy8gT3RoZXJ3aXNlLCBkcmF3IGFuIGFyYyFcbiAgICBlbHNlIHtcbiAgICAgIHZhciB4MjAgPSB4MiAtIHgwLFxuICAgICAgICAgIHkyMCA9IHkyIC0geTAsXG4gICAgICAgICAgbDIxXzIgPSB4MjEgKiB4MjEgKyB5MjEgKiB5MjEsXG4gICAgICAgICAgbDIwXzIgPSB4MjAgKiB4MjAgKyB5MjAgKiB5MjAsXG4gICAgICAgICAgbDIxID0gTWF0aC5zcXJ0KGwyMV8yKSxcbiAgICAgICAgICBsMDEgPSBNYXRoLnNxcnQobDAxXzIpLFxuICAgICAgICAgIGwgPSByICogTWF0aC50YW4oKHBpIC0gTWF0aC5hY29zKChsMjFfMiArIGwwMV8yIC0gbDIwXzIpIC8gKDIgKiBsMjEgKiBsMDEpKSkgLyAyKSxcbiAgICAgICAgICB0MDEgPSBsIC8gbDAxLFxuICAgICAgICAgIHQyMSA9IGwgLyBsMjE7XG5cbiAgICAgIC8vIElmIHRoZSBzdGFydCB0YW5nZW50IGlzIG5vdCBjb2luY2lkZW50IHdpdGggKHgwLHkwKSwgbGluZSB0by5cbiAgICAgIGlmIChNYXRoLmFicyh0MDEgLSAxKSA+IGVwc2lsb24pIHtcbiAgICAgICAgdGhpcy5fICs9IFwiTFwiICsgKHgxICsgdDAxICogeDAxKSArIFwiLFwiICsgKHkxICsgdDAxICogeTAxKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fICs9IFwiQVwiICsgciArIFwiLFwiICsgciArIFwiLDAsMCxcIiArICgrKHkwMSAqIHgyMCA+IHgwMSAqIHkyMCkpICsgXCIsXCIgKyAodGhpcy5feDEgPSB4MSArIHQyMSAqIHgyMSkgKyBcIixcIiArICh0aGlzLl95MSA9IHkxICsgdDIxICogeTIxKTtcbiAgICB9XG4gIH0sXG4gIGFyYzogZnVuY3Rpb24oeCwgeSwgciwgYTAsIGExLCBjY3cpIHtcbiAgICB4ID0gK3gsIHkgPSAreSwgciA9ICtyLCBjY3cgPSAhIWNjdztcbiAgICB2YXIgZHggPSByICogTWF0aC5jb3MoYTApLFxuICAgICAgICBkeSA9IHIgKiBNYXRoLnNpbihhMCksXG4gICAgICAgIHgwID0geCArIGR4LFxuICAgICAgICB5MCA9IHkgKyBkeSxcbiAgICAgICAgY3cgPSAxIF4gY2N3LFxuICAgICAgICBkYSA9IGNjdyA/IGEwIC0gYTEgOiBhMSAtIGEwO1xuXG4gICAgLy8gSXMgdGhlIHJhZGl1cyBuZWdhdGl2ZT8gRXJyb3IuXG4gICAgaWYgKHIgPCAwKSB0aHJvdyBuZXcgRXJyb3IoXCJuZWdhdGl2ZSByYWRpdXM6IFwiICsgcik7XG5cbiAgICAvLyBJcyB0aGlzIHBhdGggZW1wdHk/IE1vdmUgdG8gKHgwLHkwKS5cbiAgICBpZiAodGhpcy5feDEgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuXyArPSBcIk1cIiArIHgwICsgXCIsXCIgKyB5MDtcbiAgICB9XG5cbiAgICAvLyBPciwgaXMgKHgwLHkwKSBub3QgY29pbmNpZGVudCB3aXRoIHRoZSBwcmV2aW91cyBwb2ludD8gTGluZSB0byAoeDAseTApLlxuICAgIGVsc2UgaWYgKE1hdGguYWJzKHRoaXMuX3gxIC0geDApID4gZXBzaWxvbiB8fCBNYXRoLmFicyh0aGlzLl95MSAtIHkwKSA+IGVwc2lsb24pIHtcbiAgICAgIHRoaXMuXyArPSBcIkxcIiArIHgwICsgXCIsXCIgKyB5MDtcbiAgICB9XG5cbiAgICAvLyBJcyB0aGlzIGFyYyBlbXB0eT8gV2VcdTIwMTlyZSBkb25lLlxuICAgIGlmICghcikgcmV0dXJuO1xuXG4gICAgLy8gRG9lcyB0aGUgYW5nbGUgZ28gdGhlIHdyb25nIHdheT8gRmxpcCB0aGUgZGlyZWN0aW9uLlxuICAgIGlmIChkYSA8IDApIGRhID0gZGEgJSB0YXUgKyB0YXU7XG5cbiAgICAvLyBJcyB0aGlzIGEgY29tcGxldGUgY2lyY2xlPyBEcmF3IHR3byBhcmNzIHRvIGNvbXBsZXRlIHRoZSBjaXJjbGUuXG4gICAgaWYgKGRhID4gdGF1RXBzaWxvbikge1xuICAgICAgdGhpcy5fICs9IFwiQVwiICsgciArIFwiLFwiICsgciArIFwiLDAsMSxcIiArIGN3ICsgXCIsXCIgKyAoeCAtIGR4KSArIFwiLFwiICsgKHkgLSBkeSkgKyBcIkFcIiArIHIgKyBcIixcIiArIHIgKyBcIiwwLDEsXCIgKyBjdyArIFwiLFwiICsgKHRoaXMuX3gxID0geDApICsgXCIsXCIgKyAodGhpcy5feTEgPSB5MCk7XG4gICAgfVxuXG4gICAgLy8gSXMgdGhpcyBhcmMgbm9uLWVtcHR5PyBEcmF3IGFuIGFyYyFcbiAgICBlbHNlIGlmIChkYSA+IGVwc2lsb24pIHtcbiAgICAgIHRoaXMuXyArPSBcIkFcIiArIHIgKyBcIixcIiArIHIgKyBcIiwwLFwiICsgKCsoZGEgPj0gcGkpKSArIFwiLFwiICsgY3cgKyBcIixcIiArICh0aGlzLl94MSA9IHggKyByICogTWF0aC5jb3MoYTEpKSArIFwiLFwiICsgKHRoaXMuX3kxID0geSArIHIgKiBNYXRoLnNpbihhMSkpO1xuICAgIH1cbiAgfSxcbiAgcmVjdDogZnVuY3Rpb24oeCwgeSwgdywgaCkge1xuICAgIHRoaXMuXyArPSBcIk1cIiArICh0aGlzLl94MCA9IHRoaXMuX3gxID0gK3gpICsgXCIsXCIgKyAodGhpcy5feTAgPSB0aGlzLl95MSA9ICt5KSArIFwiaFwiICsgKCt3KSArIFwidlwiICsgKCtoKSArIFwiaFwiICsgKC13KSArIFwiWlwiO1xuICB9LFxuICB0b1N0cmluZzogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuXztcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgcGF0aDtcbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4LCB5KSB7XG4gIHZhciBub2Rlcywgc3RyZW5ndGggPSAxO1xuXG4gIGlmICh4ID09IG51bGwpIHggPSAwO1xuICBpZiAoeSA9PSBudWxsKSB5ID0gMDtcblxuICBmdW5jdGlvbiBmb3JjZSgpIHtcbiAgICB2YXIgaSxcbiAgICAgICAgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgICAgbm9kZSxcbiAgICAgICAgc3ggPSAwLFxuICAgICAgICBzeSA9IDA7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV0sIHN4ICs9IG5vZGUueCwgc3kgKz0gbm9kZS55O1xuICAgIH1cblxuICAgIGZvciAoc3ggPSAoc3ggLyBuIC0geCkgKiBzdHJlbmd0aCwgc3kgPSAoc3kgLyBuIC0geSkgKiBzdHJlbmd0aCwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIG5vZGUgPSBub2Rlc1tpXSwgbm9kZS54IC09IHN4LCBub2RlLnkgLT0gc3k7XG4gICAgfVxuICB9XG5cbiAgZm9yY2UuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICBub2RlcyA9IF87XG4gIH07XG5cbiAgZm9yY2UueCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh4ID0gK18sIGZvcmNlKSA6IHg7XG4gIH07XG5cbiAgZm9yY2UueSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh5ID0gK18sIGZvcmNlKSA6IHk7XG4gIH07XG5cbiAgZm9yY2Uuc3RyZW5ndGggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3RyZW5ndGggPSArXywgZm9yY2UpIDogc3RyZW5ndGg7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGQpIHtcbiAgY29uc3QgeCA9ICt0aGlzLl94LmNhbGwobnVsbCwgZCksXG4gICAgICB5ID0gK3RoaXMuX3kuY2FsbChudWxsLCBkKTtcbiAgcmV0dXJuIGFkZCh0aGlzLmNvdmVyKHgsIHkpLCB4LCB5LCBkKTtcbn1cblxuZnVuY3Rpb24gYWRkKHRyZWUsIHgsIHksIGQpIHtcbiAgaWYgKGlzTmFOKHgpIHx8IGlzTmFOKHkpKSByZXR1cm4gdHJlZTsgLy8gaWdub3JlIGludmFsaWQgcG9pbnRzXG5cbiAgdmFyIHBhcmVudCxcbiAgICAgIG5vZGUgPSB0cmVlLl9yb290LFxuICAgICAgbGVhZiA9IHtkYXRhOiBkfSxcbiAgICAgIHgwID0gdHJlZS5feDAsXG4gICAgICB5MCA9IHRyZWUuX3kwLFxuICAgICAgeDEgPSB0cmVlLl94MSxcbiAgICAgIHkxID0gdHJlZS5feTEsXG4gICAgICB4bSxcbiAgICAgIHltLFxuICAgICAgeHAsXG4gICAgICB5cCxcbiAgICAgIHJpZ2h0LFxuICAgICAgYm90dG9tLFxuICAgICAgaSxcbiAgICAgIGo7XG5cbiAgLy8gSWYgdGhlIHRyZWUgaXMgZW1wdHksIGluaXRpYWxpemUgdGhlIHJvb3QgYXMgYSBsZWFmLlxuICBpZiAoIW5vZGUpIHJldHVybiB0cmVlLl9yb290ID0gbGVhZiwgdHJlZTtcblxuICAvLyBGaW5kIHRoZSBleGlzdGluZyBsZWFmIGZvciB0aGUgbmV3IHBvaW50LCBvciBhZGQgaXQuXG4gIHdoaWxlIChub2RlLmxlbmd0aCkge1xuICAgIGlmIChyaWdodCA9IHggPj0gKHhtID0gKHgwICsgeDEpIC8gMikpIHgwID0geG07IGVsc2UgeDEgPSB4bTtcbiAgICBpZiAoYm90dG9tID0geSA+PSAoeW0gPSAoeTAgKyB5MSkgLyAyKSkgeTAgPSB5bTsgZWxzZSB5MSA9IHltO1xuICAgIGlmIChwYXJlbnQgPSBub2RlLCAhKG5vZGUgPSBub2RlW2kgPSBib3R0b20gPDwgMSB8IHJpZ2h0XSkpIHJldHVybiBwYXJlbnRbaV0gPSBsZWFmLCB0cmVlO1xuICB9XG5cbiAgLy8gSXMgdGhlIG5ldyBwb2ludCBpcyBleGFjdGx5IGNvaW5jaWRlbnQgd2l0aCB0aGUgZXhpc3RpbmcgcG9pbnQ/XG4gIHhwID0gK3RyZWUuX3guY2FsbChudWxsLCBub2RlLmRhdGEpO1xuICB5cCA9ICt0cmVlLl95LmNhbGwobnVsbCwgbm9kZS5kYXRhKTtcbiAgaWYgKHggPT09IHhwICYmIHkgPT09IHlwKSByZXR1cm4gbGVhZi5uZXh0ID0gbm9kZSwgcGFyZW50ID8gcGFyZW50W2ldID0gbGVhZiA6IHRyZWUuX3Jvb3QgPSBsZWFmLCB0cmVlO1xuXG4gIC8vIE90aGVyd2lzZSwgc3BsaXQgdGhlIGxlYWYgbm9kZSB1bnRpbCB0aGUgb2xkIGFuZCBuZXcgcG9pbnQgYXJlIHNlcGFyYXRlZC5cbiAgZG8ge1xuICAgIHBhcmVudCA9IHBhcmVudCA/IHBhcmVudFtpXSA9IG5ldyBBcnJheSg0KSA6IHRyZWUuX3Jvb3QgPSBuZXcgQXJyYXkoNCk7XG4gICAgaWYgKHJpZ2h0ID0geCA+PSAoeG0gPSAoeDAgKyB4MSkgLyAyKSkgeDAgPSB4bTsgZWxzZSB4MSA9IHhtO1xuICAgIGlmIChib3R0b20gPSB5ID49ICh5bSA9ICh5MCArIHkxKSAvIDIpKSB5MCA9IHltOyBlbHNlIHkxID0geW07XG4gIH0gd2hpbGUgKChpID0gYm90dG9tIDw8IDEgfCByaWdodCkgPT09IChqID0gKHlwID49IHltKSA8PCAxIHwgKHhwID49IHhtKSkpO1xuICByZXR1cm4gcGFyZW50W2pdID0gbm9kZSwgcGFyZW50W2ldID0gbGVhZiwgdHJlZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEFsbChkYXRhKSB7XG4gIHZhciBkLCBpLCBuID0gZGF0YS5sZW5ndGgsXG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIHh6ID0gbmV3IEFycmF5KG4pLFxuICAgICAgeXogPSBuZXcgQXJyYXkobiksXG4gICAgICB4MCA9IEluZmluaXR5LFxuICAgICAgeTAgPSBJbmZpbml0eSxcbiAgICAgIHgxID0gLUluZmluaXR5LFxuICAgICAgeTEgPSAtSW5maW5pdHk7XG5cbiAgLy8gQ29tcHV0ZSB0aGUgcG9pbnRzIGFuZCB0aGVpciBleHRlbnQuXG4gIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAoaXNOYU4oeCA9ICt0aGlzLl94LmNhbGwobnVsbCwgZCA9IGRhdGFbaV0pKSB8fCBpc05hTih5ID0gK3RoaXMuX3kuY2FsbChudWxsLCBkKSkpIGNvbnRpbnVlO1xuICAgIHh6W2ldID0geDtcbiAgICB5eltpXSA9IHk7XG4gICAgaWYgKHggPCB4MCkgeDAgPSB4O1xuICAgIGlmICh4ID4geDEpIHgxID0geDtcbiAgICBpZiAoeSA8IHkwKSB5MCA9IHk7XG4gICAgaWYgKHkgPiB5MSkgeTEgPSB5O1xuICB9XG5cbiAgLy8gSWYgdGhlcmUgd2VyZSBubyAodmFsaWQpIHBvaW50cywgYWJvcnQuXG4gIGlmICh4MCA+IHgxIHx8IHkwID4geTEpIHJldHVybiB0aGlzO1xuXG4gIC8vIEV4cGFuZCB0aGUgdHJlZSB0byBjb3ZlciB0aGUgbmV3IHBvaW50cy5cbiAgdGhpcy5jb3Zlcih4MCwgeTApLmNvdmVyKHgxLCB5MSk7XG5cbiAgLy8gQWRkIHRoZSBuZXcgcG9pbnRzLlxuICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgYWRkKHRoaXMsIHh6W2ldLCB5eltpXSwgZGF0YVtpXSk7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4LCB5KSB7XG4gIGlmIChpc05hTih4ID0gK3gpIHx8IGlzTmFOKHkgPSAreSkpIHJldHVybiB0aGlzOyAvLyBpZ25vcmUgaW52YWxpZCBwb2ludHNcblxuICB2YXIgeDAgPSB0aGlzLl94MCxcbiAgICAgIHkwID0gdGhpcy5feTAsXG4gICAgICB4MSA9IHRoaXMuX3gxLFxuICAgICAgeTEgPSB0aGlzLl95MTtcblxuICAvLyBJZiB0aGUgcXVhZHRyZWUgaGFzIG5vIGV4dGVudCwgaW5pdGlhbGl6ZSB0aGVtLlxuICAvLyBJbnRlZ2VyIGV4dGVudCBhcmUgbmVjZXNzYXJ5IHNvIHRoYXQgaWYgd2UgbGF0ZXIgZG91YmxlIHRoZSBleHRlbnQsXG4gIC8vIHRoZSBleGlzdGluZyBxdWFkcmFudCBib3VuZGFyaWVzIGRvblx1MjAxOXQgY2hhbmdlIGR1ZSB0byBmbG9hdGluZyBwb2ludCBlcnJvciFcbiAgaWYgKGlzTmFOKHgwKSkge1xuICAgIHgxID0gKHgwID0gTWF0aC5mbG9vcih4KSkgKyAxO1xuICAgIHkxID0gKHkwID0gTWF0aC5mbG9vcih5KSkgKyAxO1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCBkb3VibGUgcmVwZWF0ZWRseSB0byBjb3Zlci5cbiAgZWxzZSB7XG4gICAgdmFyIHogPSB4MSAtIHgwIHx8IDEsXG4gICAgICAgIG5vZGUgPSB0aGlzLl9yb290LFxuICAgICAgICBwYXJlbnQsXG4gICAgICAgIGk7XG5cbiAgICB3aGlsZSAoeDAgPiB4IHx8IHggPj0geDEgfHwgeTAgPiB5IHx8IHkgPj0geTEpIHtcbiAgICAgIGkgPSAoeSA8IHkwKSA8PCAxIHwgKHggPCB4MCk7XG4gICAgICBwYXJlbnQgPSBuZXcgQXJyYXkoNCksIHBhcmVudFtpXSA9IG5vZGUsIG5vZGUgPSBwYXJlbnQsIHogKj0gMjtcbiAgICAgIHN3aXRjaCAoaSkge1xuICAgICAgICBjYXNlIDA6IHgxID0geDAgKyB6LCB5MSA9IHkwICsgejsgYnJlYWs7XG4gICAgICAgIGNhc2UgMTogeDAgPSB4MSAtIHosIHkxID0geTAgKyB6OyBicmVhaztcbiAgICAgICAgY2FzZSAyOiB4MSA9IHgwICsgeiwgeTAgPSB5MSAtIHo7IGJyZWFrO1xuICAgICAgICBjYXNlIDM6IHgwID0geDEgLSB6LCB5MCA9IHkxIC0gejsgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3Jvb3QgJiYgdGhpcy5fcm9vdC5sZW5ndGgpIHRoaXMuX3Jvb3QgPSBub2RlO1xuICB9XG5cbiAgdGhpcy5feDAgPSB4MDtcbiAgdGhpcy5feTAgPSB5MDtcbiAgdGhpcy5feDEgPSB4MTtcbiAgdGhpcy5feTEgPSB5MTtcbiAgcmV0dXJuIHRoaXM7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBkYXRhID0gW107XG4gIHRoaXMudmlzaXQoZnVuY3Rpb24obm9kZSkge1xuICAgIGlmICghbm9kZS5sZW5ndGgpIGRvIGRhdGEucHVzaChub2RlLmRhdGEpOyB3aGlsZSAobm9kZSA9IG5vZGUubmV4dClcbiAgfSk7XG4gIHJldHVybiBkYXRhO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKF8pIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgID8gdGhpcy5jb3ZlcigrX1swXVswXSwgK19bMF1bMV0pLmNvdmVyKCtfWzFdWzBdLCArX1sxXVsxXSlcbiAgICAgIDogaXNOYU4odGhpcy5feDApID8gdW5kZWZpbmVkIDogW1t0aGlzLl94MCwgdGhpcy5feTBdLCBbdGhpcy5feDEsIHRoaXMuX3kxXV07XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obm9kZSwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgdGhpcy5ub2RlID0gbm9kZTtcbiAgdGhpcy54MCA9IHgwO1xuICB0aGlzLnkwID0geTA7XG4gIHRoaXMueDEgPSB4MTtcbiAgdGhpcy55MSA9IHkxO1xufVxuIiwgImltcG9ydCBRdWFkIGZyb20gXCIuL3F1YWQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCwgeSwgcmFkaXVzKSB7XG4gIHZhciBkYXRhLFxuICAgICAgeDAgPSB0aGlzLl94MCxcbiAgICAgIHkwID0gdGhpcy5feTAsXG4gICAgICB4MSxcbiAgICAgIHkxLFxuICAgICAgeDIsXG4gICAgICB5MixcbiAgICAgIHgzID0gdGhpcy5feDEsXG4gICAgICB5MyA9IHRoaXMuX3kxLFxuICAgICAgcXVhZHMgPSBbXSxcbiAgICAgIG5vZGUgPSB0aGlzLl9yb290LFxuICAgICAgcSxcbiAgICAgIGk7XG5cbiAgaWYgKG5vZGUpIHF1YWRzLnB1c2gobmV3IFF1YWQobm9kZSwgeDAsIHkwLCB4MywgeTMpKTtcbiAgaWYgKHJhZGl1cyA9PSBudWxsKSByYWRpdXMgPSBJbmZpbml0eTtcbiAgZWxzZSB7XG4gICAgeDAgPSB4IC0gcmFkaXVzLCB5MCA9IHkgLSByYWRpdXM7XG4gICAgeDMgPSB4ICsgcmFkaXVzLCB5MyA9IHkgKyByYWRpdXM7XG4gICAgcmFkaXVzICo9IHJhZGl1cztcbiAgfVxuXG4gIHdoaWxlIChxID0gcXVhZHMucG9wKCkpIHtcblxuICAgIC8vIFN0b3Agc2VhcmNoaW5nIGlmIHRoaXMgcXVhZHJhbnQgY2FuXHUyMDE5dCBjb250YWluIGEgY2xvc2VyIG5vZGUuXG4gICAgaWYgKCEobm9kZSA9IHEubm9kZSlcbiAgICAgICAgfHwgKHgxID0gcS54MCkgPiB4M1xuICAgICAgICB8fCAoeTEgPSBxLnkwKSA+IHkzXG4gICAgICAgIHx8ICh4MiA9IHEueDEpIDwgeDBcbiAgICAgICAgfHwgKHkyID0gcS55MSkgPCB5MCkgY29udGludWU7XG5cbiAgICAvLyBCaXNlY3QgdGhlIGN1cnJlbnQgcXVhZHJhbnQuXG4gICAgaWYgKG5vZGUubGVuZ3RoKSB7XG4gICAgICB2YXIgeG0gPSAoeDEgKyB4MikgLyAyLFxuICAgICAgICAgIHltID0gKHkxICsgeTIpIC8gMjtcblxuICAgICAgcXVhZHMucHVzaChcbiAgICAgICAgbmV3IFF1YWQobm9kZVszXSwgeG0sIHltLCB4MiwgeTIpLFxuICAgICAgICBuZXcgUXVhZChub2RlWzJdLCB4MSwgeW0sIHhtLCB5MiksXG4gICAgICAgIG5ldyBRdWFkKG5vZGVbMV0sIHhtLCB5MSwgeDIsIHltKSxcbiAgICAgICAgbmV3IFF1YWQobm9kZVswXSwgeDEsIHkxLCB4bSwgeW0pXG4gICAgICApO1xuXG4gICAgICAvLyBWaXNpdCB0aGUgY2xvc2VzdCBxdWFkcmFudCBmaXJzdC5cbiAgICAgIGlmIChpID0gKHkgPj0geW0pIDw8IDEgfCAoeCA+PSB4bSkpIHtcbiAgICAgICAgcSA9IHF1YWRzW3F1YWRzLmxlbmd0aCAtIDFdO1xuICAgICAgICBxdWFkc1txdWFkcy5sZW5ndGggLSAxXSA9IHF1YWRzW3F1YWRzLmxlbmd0aCAtIDEgLSBpXTtcbiAgICAgICAgcXVhZHNbcXVhZHMubGVuZ3RoIC0gMSAtIGldID0gcTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBWaXNpdCB0aGlzIHBvaW50LiAoVmlzaXRpbmcgY29pbmNpZGVudCBwb2ludHMgaXNuXHUyMDE5dCBuZWNlc3NhcnkhKVxuICAgIGVsc2Uge1xuICAgICAgdmFyIGR4ID0geCAtICt0aGlzLl94LmNhbGwobnVsbCwgbm9kZS5kYXRhKSxcbiAgICAgICAgICBkeSA9IHkgLSArdGhpcy5feS5jYWxsKG51bGwsIG5vZGUuZGF0YSksXG4gICAgICAgICAgZDIgPSBkeCAqIGR4ICsgZHkgKiBkeTtcbiAgICAgIGlmIChkMiA8IHJhZGl1cykge1xuICAgICAgICB2YXIgZCA9IE1hdGguc3FydChyYWRpdXMgPSBkMik7XG4gICAgICAgIHgwID0geCAtIGQsIHkwID0geSAtIGQ7XG4gICAgICAgIHgzID0geCArIGQsIHkzID0geSArIGQ7XG4gICAgICAgIGRhdGEgPSBub2RlLmRhdGE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRhdGE7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZCkge1xuICBpZiAoaXNOYU4oeCA9ICt0aGlzLl94LmNhbGwobnVsbCwgZCkpIHx8IGlzTmFOKHkgPSArdGhpcy5feS5jYWxsKG51bGwsIGQpKSkgcmV0dXJuIHRoaXM7IC8vIGlnbm9yZSBpbnZhbGlkIHBvaW50c1xuXG4gIHZhciBwYXJlbnQsXG4gICAgICBub2RlID0gdGhpcy5fcm9vdCxcbiAgICAgIHJldGFpbmVyLFxuICAgICAgcHJldmlvdXMsXG4gICAgICBuZXh0LFxuICAgICAgeDAgPSB0aGlzLl94MCxcbiAgICAgIHkwID0gdGhpcy5feTAsXG4gICAgICB4MSA9IHRoaXMuX3gxLFxuICAgICAgeTEgPSB0aGlzLl95MSxcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgeG0sXG4gICAgICB5bSxcbiAgICAgIHJpZ2h0LFxuICAgICAgYm90dG9tLFxuICAgICAgaSxcbiAgICAgIGo7XG5cbiAgLy8gSWYgdGhlIHRyZWUgaXMgZW1wdHksIGluaXRpYWxpemUgdGhlIHJvb3QgYXMgYSBsZWFmLlxuICBpZiAoIW5vZGUpIHJldHVybiB0aGlzO1xuXG4gIC8vIEZpbmQgdGhlIGxlYWYgbm9kZSBmb3IgdGhlIHBvaW50LlxuICAvLyBXaGlsZSBkZXNjZW5kaW5nLCBhbHNvIHJldGFpbiB0aGUgZGVlcGVzdCBwYXJlbnQgd2l0aCBhIG5vbi1yZW1vdmVkIHNpYmxpbmcuXG4gIGlmIChub2RlLmxlbmd0aCkgd2hpbGUgKHRydWUpIHtcbiAgICBpZiAocmlnaHQgPSB4ID49ICh4bSA9ICh4MCArIHgxKSAvIDIpKSB4MCA9IHhtOyBlbHNlIHgxID0geG07XG4gICAgaWYgKGJvdHRvbSA9IHkgPj0gKHltID0gKHkwICsgeTEpIC8gMikpIHkwID0geW07IGVsc2UgeTEgPSB5bTtcbiAgICBpZiAoIShwYXJlbnQgPSBub2RlLCBub2RlID0gbm9kZVtpID0gYm90dG9tIDw8IDEgfCByaWdodF0pKSByZXR1cm4gdGhpcztcbiAgICBpZiAoIW5vZGUubGVuZ3RoKSBicmVhaztcbiAgICBpZiAocGFyZW50WyhpICsgMSkgJiAzXSB8fCBwYXJlbnRbKGkgKyAyKSAmIDNdIHx8IHBhcmVudFsoaSArIDMpICYgM10pIHJldGFpbmVyID0gcGFyZW50LCBqID0gaTtcbiAgfVxuXG4gIC8vIEZpbmQgdGhlIHBvaW50IHRvIHJlbW92ZS5cbiAgd2hpbGUgKG5vZGUuZGF0YSAhPT0gZCkgaWYgKCEocHJldmlvdXMgPSBub2RlLCBub2RlID0gbm9kZS5uZXh0KSkgcmV0dXJuIHRoaXM7XG4gIGlmIChuZXh0ID0gbm9kZS5uZXh0KSBkZWxldGUgbm9kZS5uZXh0O1xuXG4gIC8vIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBjb2luY2lkZW50IHBvaW50cywgcmVtb3ZlIGp1c3QgdGhlIHBvaW50LlxuICBpZiAocHJldmlvdXMpIHJldHVybiAobmV4dCA/IHByZXZpb3VzLm5leHQgPSBuZXh0IDogZGVsZXRlIHByZXZpb3VzLm5leHQpLCB0aGlzO1xuXG4gIC8vIElmIHRoaXMgaXMgdGhlIHJvb3QgcG9pbnQsIHJlbW92ZSBpdC5cbiAgaWYgKCFwYXJlbnQpIHJldHVybiB0aGlzLl9yb290ID0gbmV4dCwgdGhpcztcblxuICAvLyBSZW1vdmUgdGhpcyBsZWFmLlxuICBuZXh0ID8gcGFyZW50W2ldID0gbmV4dCA6IGRlbGV0ZSBwYXJlbnRbaV07XG5cbiAgLy8gSWYgdGhlIHBhcmVudCBub3cgY29udGFpbnMgZXhhY3RseSBvbmUgbGVhZiwgY29sbGFwc2Ugc3VwZXJmbHVvdXMgcGFyZW50cy5cbiAgaWYgKChub2RlID0gcGFyZW50WzBdIHx8IHBhcmVudFsxXSB8fCBwYXJlbnRbMl0gfHwgcGFyZW50WzNdKVxuICAgICAgJiYgbm9kZSA9PT0gKHBhcmVudFszXSB8fCBwYXJlbnRbMl0gfHwgcGFyZW50WzFdIHx8IHBhcmVudFswXSlcbiAgICAgICYmICFub2RlLmxlbmd0aCkge1xuICAgIGlmIChyZXRhaW5lcikgcmV0YWluZXJbal0gPSBub2RlO1xuICAgIGVsc2UgdGhpcy5fcm9vdCA9IG5vZGU7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUFsbChkYXRhKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gZGF0YS5sZW5ndGg7IGkgPCBuOyArK2kpIHRoaXMucmVtb3ZlKGRhdGFbaV0pO1xuICByZXR1cm4gdGhpcztcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX3Jvb3Q7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBzaXplID0gMDtcbiAgdGhpcy52aXNpdChmdW5jdGlvbihub2RlKSB7XG4gICAgaWYgKCFub2RlLmxlbmd0aCkgZG8gKytzaXplOyB3aGlsZSAobm9kZSA9IG5vZGUubmV4dClcbiAgfSk7XG4gIHJldHVybiBzaXplO1xufVxuIiwgImltcG9ydCBRdWFkIGZyb20gXCIuL3F1YWQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIHF1YWRzID0gW10sIHEsIG5vZGUgPSB0aGlzLl9yb290LCBjaGlsZCwgeDAsIHkwLCB4MSwgeTE7XG4gIGlmIChub2RlKSBxdWFkcy5wdXNoKG5ldyBRdWFkKG5vZGUsIHRoaXMuX3gwLCB0aGlzLl95MCwgdGhpcy5feDEsIHRoaXMuX3kxKSk7XG4gIHdoaWxlIChxID0gcXVhZHMucG9wKCkpIHtcbiAgICBpZiAoIWNhbGxiYWNrKG5vZGUgPSBxLm5vZGUsIHgwID0gcS54MCwgeTAgPSBxLnkwLCB4MSA9IHEueDEsIHkxID0gcS55MSkgJiYgbm9kZS5sZW5ndGgpIHtcbiAgICAgIHZhciB4bSA9ICh4MCArIHgxKSAvIDIsIHltID0gKHkwICsgeTEpIC8gMjtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbM10pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHhtLCB5bSwgeDEsIHkxKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzJdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4MCwgeW0sIHhtLCB5MSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVsxXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeG0sIHkwLCB4MSwgeW0pKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMF0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHgwLCB5MCwgeG0sIHltKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0aGlzO1xufVxuIiwgImltcG9ydCBRdWFkIGZyb20gXCIuL3F1YWQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIHF1YWRzID0gW10sIG5leHQgPSBbXSwgcTtcbiAgaWYgKHRoaXMuX3Jvb3QpIHF1YWRzLnB1c2gobmV3IFF1YWQodGhpcy5fcm9vdCwgdGhpcy5feDAsIHRoaXMuX3kwLCB0aGlzLl94MSwgdGhpcy5feTEpKTtcbiAgd2hpbGUgKHEgPSBxdWFkcy5wb3AoKSkge1xuICAgIHZhciBub2RlID0gcS5ub2RlO1xuICAgIGlmIChub2RlLmxlbmd0aCkge1xuICAgICAgdmFyIGNoaWxkLCB4MCA9IHEueDAsIHkwID0gcS55MCwgeDEgPSBxLngxLCB5MSA9IHEueTEsIHhtID0gKHgwICsgeDEpIC8gMiwgeW0gPSAoeTAgKyB5MSkgLyAyO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVswXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeDAsIHkwLCB4bSwgeW0pKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMV0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHhtLCB5MCwgeDEsIHltKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzJdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4MCwgeW0sIHhtLCB5MSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVszXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeG0sIHltLCB4MSwgeTEpKTtcbiAgICB9XG4gICAgbmV4dC5wdXNoKHEpO1xuICB9XG4gIHdoaWxlIChxID0gbmV4dC5wb3AoKSkge1xuICAgIGNhbGxiYWNrKHEubm9kZSwgcS54MCwgcS55MCwgcS54MSwgcS55MSk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRYKGQpIHtcbiAgcmV0dXJuIGRbMF07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKF8pIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGhpcy5feCA9IF8sIHRoaXMpIDogdGhpcy5feDtcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gZGVmYXVsdFkoZCkge1xuICByZXR1cm4gZFsxXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oXykge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl95ID0gXywgdGhpcykgOiB0aGlzLl95O1xufVxuIiwgImltcG9ydCB0cmVlX2FkZCwge2FkZEFsbCBhcyB0cmVlX2FkZEFsbH0gZnJvbSBcIi4vYWRkLmpzXCI7XG5pbXBvcnQgdHJlZV9jb3ZlciBmcm9tIFwiLi9jb3Zlci5qc1wiO1xuaW1wb3J0IHRyZWVfZGF0YSBmcm9tIFwiLi9kYXRhLmpzXCI7XG5pbXBvcnQgdHJlZV9leHRlbnQgZnJvbSBcIi4vZXh0ZW50LmpzXCI7XG5pbXBvcnQgdHJlZV9maW5kIGZyb20gXCIuL2ZpbmQuanNcIjtcbmltcG9ydCB0cmVlX3JlbW92ZSwge3JlbW92ZUFsbCBhcyB0cmVlX3JlbW92ZUFsbH0gZnJvbSBcIi4vcmVtb3ZlLmpzXCI7XG5pbXBvcnQgdHJlZV9yb290IGZyb20gXCIuL3Jvb3QuanNcIjtcbmltcG9ydCB0cmVlX3NpemUgZnJvbSBcIi4vc2l6ZS5qc1wiO1xuaW1wb3J0IHRyZWVfdmlzaXQgZnJvbSBcIi4vdmlzaXQuanNcIjtcbmltcG9ydCB0cmVlX3Zpc2l0QWZ0ZXIgZnJvbSBcIi4vdmlzaXRBZnRlci5qc1wiO1xuaW1wb3J0IHRyZWVfeCwge2RlZmF1bHRYfSBmcm9tIFwiLi94LmpzXCI7XG5pbXBvcnQgdHJlZV95LCB7ZGVmYXVsdFl9IGZyb20gXCIuL3kuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcXVhZHRyZWUobm9kZXMsIHgsIHkpIHtcbiAgdmFyIHRyZWUgPSBuZXcgUXVhZHRyZWUoeCA9PSBudWxsID8gZGVmYXVsdFggOiB4LCB5ID09IG51bGwgPyBkZWZhdWx0WSA6IHksIE5hTiwgTmFOLCBOYU4sIE5hTik7XG4gIHJldHVybiBub2RlcyA9PSBudWxsID8gdHJlZSA6IHRyZWUuYWRkQWxsKG5vZGVzKTtcbn1cblxuZnVuY3Rpb24gUXVhZHRyZWUoeCwgeSwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgdGhpcy5feCA9IHg7XG4gIHRoaXMuX3kgPSB5O1xuICB0aGlzLl94MCA9IHgwO1xuICB0aGlzLl95MCA9IHkwO1xuICB0aGlzLl94MSA9IHgxO1xuICB0aGlzLl95MSA9IHkxO1xuICB0aGlzLl9yb290ID0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBsZWFmX2NvcHkobGVhZikge1xuICB2YXIgY29weSA9IHtkYXRhOiBsZWFmLmRhdGF9LCBuZXh0ID0gY29weTtcbiAgd2hpbGUgKGxlYWYgPSBsZWFmLm5leHQpIG5leHQgPSBuZXh0Lm5leHQgPSB7ZGF0YTogbGVhZi5kYXRhfTtcbiAgcmV0dXJuIGNvcHk7XG59XG5cbnZhciB0cmVlUHJvdG8gPSBxdWFkdHJlZS5wcm90b3R5cGUgPSBRdWFkdHJlZS5wcm90b3R5cGU7XG5cbnRyZWVQcm90by5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gIHZhciBjb3B5ID0gbmV3IFF1YWR0cmVlKHRoaXMuX3gsIHRoaXMuX3ksIHRoaXMuX3gwLCB0aGlzLl95MCwgdGhpcy5feDEsIHRoaXMuX3kxKSxcbiAgICAgIG5vZGUgPSB0aGlzLl9yb290LFxuICAgICAgbm9kZXMsXG4gICAgICBjaGlsZDtcblxuICBpZiAoIW5vZGUpIHJldHVybiBjb3B5O1xuXG4gIGlmICghbm9kZS5sZW5ndGgpIHJldHVybiBjb3B5Ll9yb290ID0gbGVhZl9jb3B5KG5vZGUpLCBjb3B5O1xuXG4gIG5vZGVzID0gW3tzb3VyY2U6IG5vZGUsIHRhcmdldDogY29weS5fcm9vdCA9IG5ldyBBcnJheSg0KX1dO1xuICB3aGlsZSAobm9kZSA9IG5vZGVzLnBvcCgpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyArK2kpIHtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGUuc291cmNlW2ldKSB7XG4gICAgICAgIGlmIChjaGlsZC5sZW5ndGgpIG5vZGVzLnB1c2goe3NvdXJjZTogY2hpbGQsIHRhcmdldDogbm9kZS50YXJnZXRbaV0gPSBuZXcgQXJyYXkoNCl9KTtcbiAgICAgICAgZWxzZSBub2RlLnRhcmdldFtpXSA9IGxlYWZfY29weShjaGlsZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvcHk7XG59O1xuXG50cmVlUHJvdG8uYWRkID0gdHJlZV9hZGQ7XG50cmVlUHJvdG8uYWRkQWxsID0gdHJlZV9hZGRBbGw7XG50cmVlUHJvdG8uY292ZXIgPSB0cmVlX2NvdmVyO1xudHJlZVByb3RvLmRhdGEgPSB0cmVlX2RhdGE7XG50cmVlUHJvdG8uZXh0ZW50ID0gdHJlZV9leHRlbnQ7XG50cmVlUHJvdG8uZmluZCA9IHRyZWVfZmluZDtcbnRyZWVQcm90by5yZW1vdmUgPSB0cmVlX3JlbW92ZTtcbnRyZWVQcm90by5yZW1vdmVBbGwgPSB0cmVlX3JlbW92ZUFsbDtcbnRyZWVQcm90by5yb290ID0gdHJlZV9yb290O1xudHJlZVByb3RvLnNpemUgPSB0cmVlX3NpemU7XG50cmVlUHJvdG8udmlzaXQgPSB0cmVlX3Zpc2l0O1xudHJlZVByb3RvLnZpc2l0QWZ0ZXIgPSB0cmVlX3Zpc2l0QWZ0ZXI7XG50cmVlUHJvdG8ueCA9IHRyZWVfeDtcbnRyZWVQcm90by55ID0gdHJlZV95O1xuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHJhbmRvbSkge1xuICByZXR1cm4gKHJhbmRvbSgpIC0gMC41KSAqIDFlLTY7XG59XG4iLCAiaW1wb3J0IHtxdWFkdHJlZX0gZnJvbSBcImQzLXF1YWR0cmVlXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBqaWdnbGUgZnJvbSBcIi4vamlnZ2xlLmpzXCI7XG5cbmZ1bmN0aW9uIHgoZCkge1xuICByZXR1cm4gZC54ICsgZC52eDtcbn1cblxuZnVuY3Rpb24geShkKSB7XG4gIHJldHVybiBkLnkgKyBkLnZ5O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihyYWRpdXMpIHtcbiAgdmFyIG5vZGVzLFxuICAgICAgcmFkaWksXG4gICAgICByYW5kb20sXG4gICAgICBzdHJlbmd0aCA9IDEsXG4gICAgICBpdGVyYXRpb25zID0gMTtcblxuICBpZiAodHlwZW9mIHJhZGl1cyAhPT0gXCJmdW5jdGlvblwiKSByYWRpdXMgPSBjb25zdGFudChyYWRpdXMgPT0gbnVsbCA/IDEgOiArcmFkaXVzKTtcblxuICBmdW5jdGlvbiBmb3JjZSgpIHtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgICAgdHJlZSxcbiAgICAgICAgbm9kZSxcbiAgICAgICAgeGksXG4gICAgICAgIHlpLFxuICAgICAgICByaSxcbiAgICAgICAgcmkyO1xuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBpdGVyYXRpb25zOyArK2spIHtcbiAgICAgIHRyZWUgPSBxdWFkdHJlZShub2RlcywgeCwgeSkudmlzaXRBZnRlcihwcmVwYXJlKTtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICByaSA9IHJhZGlpW25vZGUuaW5kZXhdLCByaTIgPSByaSAqIHJpO1xuICAgICAgICB4aSA9IG5vZGUueCArIG5vZGUudng7XG4gICAgICAgIHlpID0gbm9kZS55ICsgbm9kZS52eTtcbiAgICAgICAgdHJlZS52aXNpdChhcHBseSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXBwbHkocXVhZCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgICAgIHZhciBkYXRhID0gcXVhZC5kYXRhLCByaiA9IHF1YWQuciwgciA9IHJpICsgcmo7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICBpZiAoZGF0YS5pbmRleCA+IG5vZGUuaW5kZXgpIHtcbiAgICAgICAgICB2YXIgeCA9IHhpIC0gZGF0YS54IC0gZGF0YS52eCxcbiAgICAgICAgICAgICAgeSA9IHlpIC0gZGF0YS55IC0gZGF0YS52eSxcbiAgICAgICAgICAgICAgbCA9IHggKiB4ICsgeSAqIHk7XG4gICAgICAgICAgaWYgKGwgPCByICogcikge1xuICAgICAgICAgICAgaWYgKHggPT09IDApIHggPSBqaWdnbGUocmFuZG9tKSwgbCArPSB4ICogeDtcbiAgICAgICAgICAgIGlmICh5ID09PSAwKSB5ID0gamlnZ2xlKHJhbmRvbSksIGwgKz0geSAqIHk7XG4gICAgICAgICAgICBsID0gKHIgLSAobCA9IE1hdGguc3FydChsKSkpIC8gbCAqIHN0cmVuZ3RoO1xuICAgICAgICAgICAgbm9kZS52eCArPSAoeCAqPSBsKSAqIChyID0gKHJqICo9IHJqKSAvIChyaTIgKyByaikpO1xuICAgICAgICAgICAgbm9kZS52eSArPSAoeSAqPSBsKSAqIHI7XG4gICAgICAgICAgICBkYXRhLnZ4IC09IHggKiAociA9IDEgLSByKTtcbiAgICAgICAgICAgIGRhdGEudnkgLT0geSAqIHI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB4MCA+IHhpICsgciB8fCB4MSA8IHhpIC0gciB8fCB5MCA+IHlpICsgciB8fCB5MSA8IHlpIC0gcjtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwcmVwYXJlKHF1YWQpIHtcbiAgICBpZiAocXVhZC5kYXRhKSByZXR1cm4gcXVhZC5yID0gcmFkaWlbcXVhZC5kYXRhLmluZGV4XTtcbiAgICBmb3IgKHZhciBpID0gcXVhZC5yID0gMDsgaSA8IDQ7ICsraSkge1xuICAgICAgaWYgKHF1YWRbaV0gJiYgcXVhZFtpXS5yID4gcXVhZC5yKSB7XG4gICAgICAgIHF1YWQuciA9IHF1YWRbaV0ucjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aCwgbm9kZTtcbiAgICByYWRpaSA9IG5ldyBBcnJheShuKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSBub2RlID0gbm9kZXNbaV0sIHJhZGlpW25vZGUuaW5kZXhdID0gK3JhZGl1cyhub2RlLCBpLCBub2Rlcyk7XG4gIH1cblxuICBmb3JjZS5pbml0aWFsaXplID0gZnVuY3Rpb24oX25vZGVzLCBfcmFuZG9tKSB7XG4gICAgbm9kZXMgPSBfbm9kZXM7XG4gICAgcmFuZG9tID0gX3JhbmRvbTtcbiAgICBpbml0aWFsaXplKCk7XG4gIH07XG5cbiAgZm9yY2UuaXRlcmF0aW9ucyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChpdGVyYXRpb25zID0gK18sIGZvcmNlKSA6IGl0ZXJhdGlvbnM7XG4gIH07XG5cbiAgZm9yY2Uuc3RyZW5ndGggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3RyZW5ndGggPSArXywgZm9yY2UpIDogc3RyZW5ndGg7XG4gIH07XG5cbiAgZm9yY2UucmFkaXVzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJhZGl1cyA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHJhZGl1cztcbiAgfTtcblxuICByZXR1cm4gZm9yY2U7XG59XG4iLCAiaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5pbXBvcnQgamlnZ2xlIGZyb20gXCIuL2ppZ2dsZS5qc1wiO1xuXG5mdW5jdGlvbiBpbmRleChkKSB7XG4gIHJldHVybiBkLmluZGV4O1xufVxuXG5mdW5jdGlvbiBmaW5kKG5vZGVCeUlkLCBub2RlSWQpIHtcbiAgdmFyIG5vZGUgPSBub2RlQnlJZC5nZXQobm9kZUlkKTtcbiAgaWYgKCFub2RlKSB0aHJvdyBuZXcgRXJyb3IoXCJub2RlIG5vdCBmb3VuZDogXCIgKyBub2RlSWQpO1xuICByZXR1cm4gbm9kZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obGlua3MpIHtcbiAgdmFyIGlkID0gaW5kZXgsXG4gICAgICBzdHJlbmd0aCA9IGRlZmF1bHRTdHJlbmd0aCxcbiAgICAgIHN0cmVuZ3RocyxcbiAgICAgIGRpc3RhbmNlID0gY29uc3RhbnQoMzApLFxuICAgICAgZGlzdGFuY2VzLFxuICAgICAgbm9kZXMsXG4gICAgICBjb3VudCxcbiAgICAgIGJpYXMsXG4gICAgICByYW5kb20sXG4gICAgICBpdGVyYXRpb25zID0gMTtcblxuICBpZiAobGlua3MgPT0gbnVsbCkgbGlua3MgPSBbXTtcblxuICBmdW5jdGlvbiBkZWZhdWx0U3RyZW5ndGgobGluaykge1xuICAgIHJldHVybiAxIC8gTWF0aC5taW4oY291bnRbbGluay5zb3VyY2UuaW5kZXhdLCBjb3VudFtsaW5rLnRhcmdldC5pbmRleF0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9yY2UoYWxwaGEpIHtcbiAgICBmb3IgKHZhciBrID0gMCwgbiA9IGxpbmtzLmxlbmd0aDsgayA8IGl0ZXJhdGlvbnM7ICsraykge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGxpbmssIHNvdXJjZSwgdGFyZ2V0LCB4LCB5LCBsLCBiOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIGxpbmsgPSBsaW5rc1tpXSwgc291cmNlID0gbGluay5zb3VyY2UsIHRhcmdldCA9IGxpbmsudGFyZ2V0O1xuICAgICAgICB4ID0gdGFyZ2V0LnggKyB0YXJnZXQudnggLSBzb3VyY2UueCAtIHNvdXJjZS52eCB8fCBqaWdnbGUocmFuZG9tKTtcbiAgICAgICAgeSA9IHRhcmdldC55ICsgdGFyZ2V0LnZ5IC0gc291cmNlLnkgLSBzb3VyY2UudnkgfHwgamlnZ2xlKHJhbmRvbSk7XG4gICAgICAgIGwgPSBNYXRoLnNxcnQoeCAqIHggKyB5ICogeSk7XG4gICAgICAgIGwgPSAobCAtIGRpc3RhbmNlc1tpXSkgLyBsICogYWxwaGEgKiBzdHJlbmd0aHNbaV07XG4gICAgICAgIHggKj0gbCwgeSAqPSBsO1xuICAgICAgICB0YXJnZXQudnggLT0geCAqIChiID0gYmlhc1tpXSk7XG4gICAgICAgIHRhcmdldC52eSAtPSB5ICogYjtcbiAgICAgICAgc291cmNlLnZ4ICs9IHggKiAoYiA9IDEgLSBiKTtcbiAgICAgICAgc291cmNlLnZ5ICs9IHkgKiBiO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuXG4gICAgdmFyIGksXG4gICAgICAgIG4gPSBub2Rlcy5sZW5ndGgsXG4gICAgICAgIG0gPSBsaW5rcy5sZW5ndGgsXG4gICAgICAgIG5vZGVCeUlkID0gbmV3IE1hcChub2Rlcy5tYXAoKGQsIGkpID0+IFtpZChkLCBpLCBub2RlcyksIGRdKSksXG4gICAgICAgIGxpbms7XG5cbiAgICBmb3IgKGkgPSAwLCBjb3VudCA9IG5ldyBBcnJheShuKTsgaSA8IG07ICsraSkge1xuICAgICAgbGluayA9IGxpbmtzW2ldLCBsaW5rLmluZGV4ID0gaTtcbiAgICAgIGlmICh0eXBlb2YgbGluay5zb3VyY2UgIT09IFwib2JqZWN0XCIpIGxpbmsuc291cmNlID0gZmluZChub2RlQnlJZCwgbGluay5zb3VyY2UpO1xuICAgICAgaWYgKHR5cGVvZiBsaW5rLnRhcmdldCAhPT0gXCJvYmplY3RcIikgbGluay50YXJnZXQgPSBmaW5kKG5vZGVCeUlkLCBsaW5rLnRhcmdldCk7XG4gICAgICBjb3VudFtsaW5rLnNvdXJjZS5pbmRleF0gPSAoY291bnRbbGluay5zb3VyY2UuaW5kZXhdIHx8IDApICsgMTtcbiAgICAgIGNvdW50W2xpbmsudGFyZ2V0LmluZGV4XSA9IChjb3VudFtsaW5rLnRhcmdldC5pbmRleF0gfHwgMCkgKyAxO1xuICAgIH1cblxuICAgIGZvciAoaSA9IDAsIGJpYXMgPSBuZXcgQXJyYXkobSk7IGkgPCBtOyArK2kpIHtcbiAgICAgIGxpbmsgPSBsaW5rc1tpXSwgYmlhc1tpXSA9IGNvdW50W2xpbmsuc291cmNlLmluZGV4XSAvIChjb3VudFtsaW5rLnNvdXJjZS5pbmRleF0gKyBjb3VudFtsaW5rLnRhcmdldC5pbmRleF0pO1xuICAgIH1cblxuICAgIHN0cmVuZ3RocyA9IG5ldyBBcnJheShtKSwgaW5pdGlhbGl6ZVN0cmVuZ3RoKCk7XG4gICAgZGlzdGFuY2VzID0gbmV3IEFycmF5KG0pLCBpbml0aWFsaXplRGlzdGFuY2UoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemVTdHJlbmd0aCgpIHtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm47XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IGxpbmtzLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgc3RyZW5ndGhzW2ldID0gK3N0cmVuZ3RoKGxpbmtzW2ldLCBpLCBsaW5rcyk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZURpc3RhbmNlKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwLCBuID0gbGlua3MubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICBkaXN0YW5jZXNbaV0gPSArZGlzdGFuY2UobGlua3NbaV0sIGksIGxpbmtzKTtcbiAgICB9XG4gIH1cblxuICBmb3JjZS5pbml0aWFsaXplID0gZnVuY3Rpb24oX25vZGVzLCBfcmFuZG9tKSB7XG4gICAgbm9kZXMgPSBfbm9kZXM7XG4gICAgcmFuZG9tID0gX3JhbmRvbTtcbiAgICBpbml0aWFsaXplKCk7XG4gIH07XG5cbiAgZm9yY2UubGlua3MgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAobGlua3MgPSBfLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IGxpbmtzO1xuICB9O1xuXG4gIGZvcmNlLmlkID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGlkID0gXywgZm9yY2UpIDogaWQ7XG4gIH07XG5cbiAgZm9yY2UuaXRlcmF0aW9ucyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChpdGVyYXRpb25zID0gK18sIGZvcmNlKSA6IGl0ZXJhdGlvbnM7XG4gIH07XG5cbiAgZm9yY2Uuc3RyZW5ndGggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3RyZW5ndGggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZVN0cmVuZ3RoKCksIGZvcmNlKSA6IHN0cmVuZ3RoO1xuICB9O1xuXG4gIGZvcmNlLmRpc3RhbmNlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGRpc3RhbmNlID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemVEaXN0YW5jZSgpLCBmb3JjZSkgOiBkaXN0YW5jZTtcbiAgfTtcblxuICByZXR1cm4gZm9yY2U7XG59XG4iLCAiLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGluZWFyX2NvbmdydWVudGlhbF9nZW5lcmF0b3IjUGFyYW1ldGVyc19pbl9jb21tb25fdXNlXG5jb25zdCBhID0gMTY2NDUyNTtcbmNvbnN0IGMgPSAxMDEzOTA0MjIzO1xuY29uc3QgbSA9IDQyOTQ5NjcyOTY7IC8vIDJeMzJcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIGxldCBzID0gMTtcbiAgcmV0dXJuICgpID0+IChzID0gKGEgKiBzICsgYykgJSBtKSAvIG07XG59XG4iLCAiaW1wb3J0IHtkaXNwYXRjaH0gZnJvbSBcImQzLWRpc3BhdGNoXCI7XG5pbXBvcnQge3RpbWVyfSBmcm9tIFwiZDMtdGltZXJcIjtcbmltcG9ydCBsY2cgZnJvbSBcIi4vbGNnLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB4KGQpIHtcbiAgcmV0dXJuIGQueDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHkoZCkge1xuICByZXR1cm4gZC55O1xufVxuXG52YXIgaW5pdGlhbFJhZGl1cyA9IDEwLFxuICAgIGluaXRpYWxBbmdsZSA9IE1hdGguUEkgKiAoMyAtIE1hdGguc3FydCg1KSk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5vZGVzKSB7XG4gIHZhciBzaW11bGF0aW9uLFxuICAgICAgYWxwaGEgPSAxLFxuICAgICAgYWxwaGFNaW4gPSAwLjAwMSxcbiAgICAgIGFscGhhRGVjYXkgPSAxIC0gTWF0aC5wb3coYWxwaGFNaW4sIDEgLyAzMDApLFxuICAgICAgYWxwaGFUYXJnZXQgPSAwLFxuICAgICAgdmVsb2NpdHlEZWNheSA9IDAuNixcbiAgICAgIGZvcmNlcyA9IG5ldyBNYXAoKSxcbiAgICAgIHN0ZXBwZXIgPSB0aW1lcihzdGVwKSxcbiAgICAgIGV2ZW50ID0gZGlzcGF0Y2goXCJ0aWNrXCIsIFwiZW5kXCIpLFxuICAgICAgcmFuZG9tID0gbGNnKCk7XG5cbiAgaWYgKG5vZGVzID09IG51bGwpIG5vZGVzID0gW107XG5cbiAgZnVuY3Rpb24gc3RlcCgpIHtcbiAgICB0aWNrKCk7XG4gICAgZXZlbnQuY2FsbChcInRpY2tcIiwgc2ltdWxhdGlvbik7XG4gICAgaWYgKGFscGhhIDwgYWxwaGFNaW4pIHtcbiAgICAgIHN0ZXBwZXIuc3RvcCgpO1xuICAgICAgZXZlbnQuY2FsbChcImVuZFwiLCBzaW11bGF0aW9uKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB0aWNrKGl0ZXJhdGlvbnMpIHtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aCwgbm9kZTtcblxuICAgIGlmIChpdGVyYXRpb25zID09PSB1bmRlZmluZWQpIGl0ZXJhdGlvbnMgPSAxO1xuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBpdGVyYXRpb25zOyArK2spIHtcbiAgICAgIGFscGhhICs9IChhbHBoYVRhcmdldCAtIGFscGhhKSAqIGFscGhhRGVjYXk7XG5cbiAgICAgIGZvcmNlcy5mb3JFYWNoKGZ1bmN0aW9uKGZvcmNlKSB7XG4gICAgICAgIGZvcmNlKGFscGhhKTtcbiAgICAgIH0pO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgaWYgKG5vZGUuZnggPT0gbnVsbCkgbm9kZS54ICs9IG5vZGUudnggKj0gdmVsb2NpdHlEZWNheTtcbiAgICAgICAgZWxzZSBub2RlLnggPSBub2RlLmZ4LCBub2RlLnZ4ID0gMDtcbiAgICAgICAgaWYgKG5vZGUuZnkgPT0gbnVsbCkgbm9kZS55ICs9IG5vZGUudnkgKj0gdmVsb2NpdHlEZWNheTtcbiAgICAgICAgZWxzZSBub2RlLnkgPSBub2RlLmZ5LCBub2RlLnZ5ID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2ltdWxhdGlvbjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemVOb2RlcygpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IG5vZGVzLmxlbmd0aCwgbm9kZTsgaSA8IG47ICsraSkge1xuICAgICAgbm9kZSA9IG5vZGVzW2ldLCBub2RlLmluZGV4ID0gaTtcbiAgICAgIGlmIChub2RlLmZ4ICE9IG51bGwpIG5vZGUueCA9IG5vZGUuZng7XG4gICAgICBpZiAobm9kZS5meSAhPSBudWxsKSBub2RlLnkgPSBub2RlLmZ5O1xuICAgICAgaWYgKGlzTmFOKG5vZGUueCkgfHwgaXNOYU4obm9kZS55KSkge1xuICAgICAgICB2YXIgcmFkaXVzID0gaW5pdGlhbFJhZGl1cyAqIE1hdGguc3FydCgwLjUgKyBpKSwgYW5nbGUgPSBpICogaW5pdGlhbEFuZ2xlO1xuICAgICAgICBub2RlLnggPSByYWRpdXMgKiBNYXRoLmNvcyhhbmdsZSk7XG4gICAgICAgIG5vZGUueSA9IHJhZGl1cyAqIE1hdGguc2luKGFuZ2xlKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc05hTihub2RlLnZ4KSB8fCBpc05hTihub2RlLnZ5KSkge1xuICAgICAgICBub2RlLnZ4ID0gbm9kZS52eSA9IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZUZvcmNlKGZvcmNlKSB7XG4gICAgaWYgKGZvcmNlLmluaXRpYWxpemUpIGZvcmNlLmluaXRpYWxpemUobm9kZXMsIHJhbmRvbSk7XG4gICAgcmV0dXJuIGZvcmNlO1xuICB9XG5cbiAgaW5pdGlhbGl6ZU5vZGVzKCk7XG5cbiAgcmV0dXJuIHNpbXVsYXRpb24gPSB7XG4gICAgdGljazogdGljayxcblxuICAgIHJlc3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHN0ZXBwZXIucmVzdGFydChzdGVwKSwgc2ltdWxhdGlvbjtcbiAgICB9LFxuXG4gICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gc3RlcHBlci5zdG9wKCksIHNpbXVsYXRpb247XG4gICAgfSxcblxuICAgIG5vZGVzOiBmdW5jdGlvbihfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChub2RlcyA9IF8sIGluaXRpYWxpemVOb2RlcygpLCBmb3JjZXMuZm9yRWFjaChpbml0aWFsaXplRm9yY2UpLCBzaW11bGF0aW9uKSA6IG5vZGVzO1xuICAgIH0sXG5cbiAgICBhbHBoYTogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoYWxwaGEgPSArXywgc2ltdWxhdGlvbikgOiBhbHBoYTtcbiAgICB9LFxuXG4gICAgYWxwaGFNaW46IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGFscGhhTWluID0gK18sIHNpbXVsYXRpb24pIDogYWxwaGFNaW47XG4gICAgfSxcblxuICAgIGFscGhhRGVjYXk6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGFscGhhRGVjYXkgPSArXywgc2ltdWxhdGlvbikgOiArYWxwaGFEZWNheTtcbiAgICB9LFxuXG4gICAgYWxwaGFUYXJnZXQ6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGFscGhhVGFyZ2V0ID0gK18sIHNpbXVsYXRpb24pIDogYWxwaGFUYXJnZXQ7XG4gICAgfSxcblxuICAgIHZlbG9jaXR5RGVjYXk6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHZlbG9jaXR5RGVjYXkgPSAxIC0gXywgc2ltdWxhdGlvbikgOiAxIC0gdmVsb2NpdHlEZWNheTtcbiAgICB9LFxuXG4gICAgcmFuZG9tU291cmNlOiBmdW5jdGlvbihfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYW5kb20gPSBfLCBmb3JjZXMuZm9yRWFjaChpbml0aWFsaXplRm9yY2UpLCBzaW11bGF0aW9uKSA6IHJhbmRvbTtcbiAgICB9LFxuXG4gICAgZm9yY2U6IGZ1bmN0aW9uKG5hbWUsIF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMSA/ICgoXyA9PSBudWxsID8gZm9yY2VzLmRlbGV0ZShuYW1lKSA6IGZvcmNlcy5zZXQobmFtZSwgaW5pdGlhbGl6ZUZvcmNlKF8pKSksIHNpbXVsYXRpb24pIDogZm9yY2VzLmdldChuYW1lKTtcbiAgICB9LFxuXG4gICAgZmluZDogZnVuY3Rpb24oeCwgeSwgcmFkaXVzKSB7XG4gICAgICB2YXIgaSA9IDAsXG4gICAgICAgICAgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgICAgICBkeCxcbiAgICAgICAgICBkeSxcbiAgICAgICAgICBkMixcbiAgICAgICAgICBub2RlLFxuICAgICAgICAgIGNsb3Nlc3Q7XG5cbiAgICAgIGlmIChyYWRpdXMgPT0gbnVsbCkgcmFkaXVzID0gSW5maW5pdHk7XG4gICAgICBlbHNlIHJhZGl1cyAqPSByYWRpdXM7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICBkeCA9IHggLSBub2RlLng7XG4gICAgICAgIGR5ID0geSAtIG5vZGUueTtcbiAgICAgICAgZDIgPSBkeCAqIGR4ICsgZHkgKiBkeTtcbiAgICAgICAgaWYgKGQyIDwgcmFkaXVzKSBjbG9zZXN0ID0gbm9kZSwgcmFkaXVzID0gZDI7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjbG9zZXN0O1xuICAgIH0sXG5cbiAgICBvbjogZnVuY3Rpb24obmFtZSwgXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gKGV2ZW50Lm9uKG5hbWUsIF8pLCBzaW11bGF0aW9uKSA6IGV2ZW50Lm9uKG5hbWUpO1xuICAgIH1cbiAgfTtcbn1cbiIsICJpbXBvcnQge3F1YWR0cmVlfSBmcm9tIFwiZDMtcXVhZHRyZWVcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuaW1wb3J0IGppZ2dsZSBmcm9tIFwiLi9qaWdnbGUuanNcIjtcbmltcG9ydCB7eCwgeX0gZnJvbSBcIi4vc2ltdWxhdGlvbi5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIG5vZGVzLFxuICAgICAgbm9kZSxcbiAgICAgIHJhbmRvbSxcbiAgICAgIGFscGhhLFxuICAgICAgc3RyZW5ndGggPSBjb25zdGFudCgtMzApLFxuICAgICAgc3RyZW5ndGhzLFxuICAgICAgZGlzdGFuY2VNaW4yID0gMSxcbiAgICAgIGRpc3RhbmNlTWF4MiA9IEluZmluaXR5LFxuICAgICAgdGhldGEyID0gMC44MTtcblxuICBmdW5jdGlvbiBmb3JjZShfKSB7XG4gICAgdmFyIGksIG4gPSBub2Rlcy5sZW5ndGgsIHRyZWUgPSBxdWFkdHJlZShub2RlcywgeCwgeSkudmlzaXRBZnRlcihhY2N1bXVsYXRlKTtcbiAgICBmb3IgKGFscGhhID0gXywgaSA9IDA7IGkgPCBuOyArK2kpIG5vZGUgPSBub2Rlc1tpXSwgdHJlZS52aXNpdChhcHBseSk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aCwgbm9kZTtcbiAgICBzdHJlbmd0aHMgPSBuZXcgQXJyYXkobik7XG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgbm9kZSA9IG5vZGVzW2ldLCBzdHJlbmd0aHNbbm9kZS5pbmRleF0gPSArc3RyZW5ndGgobm9kZSwgaSwgbm9kZXMpO1xuICB9XG5cbiAgZnVuY3Rpb24gYWNjdW11bGF0ZShxdWFkKSB7XG4gICAgdmFyIHN0cmVuZ3RoID0gMCwgcSwgYywgd2VpZ2h0ID0gMCwgeCwgeSwgaTtcblxuICAgIC8vIEZvciBpbnRlcm5hbCBub2RlcywgYWNjdW11bGF0ZSBmb3JjZXMgZnJvbSBjaGlsZCBxdWFkcmFudHMuXG4gICAgaWYgKHF1YWQubGVuZ3RoKSB7XG4gICAgICBmb3IgKHggPSB5ID0gaSA9IDA7IGkgPCA0OyArK2kpIHtcbiAgICAgICAgaWYgKChxID0gcXVhZFtpXSkgJiYgKGMgPSBNYXRoLmFicyhxLnZhbHVlKSkpIHtcbiAgICAgICAgICBzdHJlbmd0aCArPSBxLnZhbHVlLCB3ZWlnaHQgKz0gYywgeCArPSBjICogcS54LCB5ICs9IGMgKiBxLnk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1YWQueCA9IHggLyB3ZWlnaHQ7XG4gICAgICBxdWFkLnkgPSB5IC8gd2VpZ2h0O1xuICAgIH1cblxuICAgIC8vIEZvciBsZWFmIG5vZGVzLCBhY2N1bXVsYXRlIGZvcmNlcyBmcm9tIGNvaW5jaWRlbnQgcXVhZHJhbnRzLlxuICAgIGVsc2Uge1xuICAgICAgcSA9IHF1YWQ7XG4gICAgICBxLnggPSBxLmRhdGEueDtcbiAgICAgIHEueSA9IHEuZGF0YS55O1xuICAgICAgZG8gc3RyZW5ndGggKz0gc3RyZW5ndGhzW3EuZGF0YS5pbmRleF07XG4gICAgICB3aGlsZSAocSA9IHEubmV4dCk7XG4gICAgfVxuXG4gICAgcXVhZC52YWx1ZSA9IHN0cmVuZ3RoO1xuICB9XG5cbiAgZnVuY3Rpb24gYXBwbHkocXVhZCwgeDEsIF8sIHgyKSB7XG4gICAgaWYgKCFxdWFkLnZhbHVlKSByZXR1cm4gdHJ1ZTtcblxuICAgIHZhciB4ID0gcXVhZC54IC0gbm9kZS54LFxuICAgICAgICB5ID0gcXVhZC55IC0gbm9kZS55LFxuICAgICAgICB3ID0geDIgLSB4MSxcbiAgICAgICAgbCA9IHggKiB4ICsgeSAqIHk7XG5cbiAgICAvLyBBcHBseSB0aGUgQmFybmVzLUh1dCBhcHByb3hpbWF0aW9uIGlmIHBvc3NpYmxlLlxuICAgIC8vIExpbWl0IGZvcmNlcyBmb3IgdmVyeSBjbG9zZSBub2RlczsgcmFuZG9taXplIGRpcmVjdGlvbiBpZiBjb2luY2lkZW50LlxuICAgIGlmICh3ICogdyAvIHRoZXRhMiA8IGwpIHtcbiAgICAgIGlmIChsIDwgZGlzdGFuY2VNYXgyKSB7XG4gICAgICAgIGlmICh4ID09PSAwKSB4ID0gamlnZ2xlKHJhbmRvbSksIGwgKz0geCAqIHg7XG4gICAgICAgIGlmICh5ID09PSAwKSB5ID0gamlnZ2xlKHJhbmRvbSksIGwgKz0geSAqIHk7XG4gICAgICAgIGlmIChsIDwgZGlzdGFuY2VNaW4yKSBsID0gTWF0aC5zcXJ0KGRpc3RhbmNlTWluMiAqIGwpO1xuICAgICAgICBub2RlLnZ4ICs9IHggKiBxdWFkLnZhbHVlICogYWxwaGEgLyBsO1xuICAgICAgICBub2RlLnZ5ICs9IHkgKiBxdWFkLnZhbHVlICogYWxwaGEgLyBsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gT3RoZXJ3aXNlLCBwcm9jZXNzIHBvaW50cyBkaXJlY3RseS5cbiAgICBlbHNlIGlmIChxdWFkLmxlbmd0aCB8fCBsID49IGRpc3RhbmNlTWF4MikgcmV0dXJuO1xuXG4gICAgLy8gTGltaXQgZm9yY2VzIGZvciB2ZXJ5IGNsb3NlIG5vZGVzOyByYW5kb21pemUgZGlyZWN0aW9uIGlmIGNvaW5jaWRlbnQuXG4gICAgaWYgKHF1YWQuZGF0YSAhPT0gbm9kZSB8fCBxdWFkLm5leHQpIHtcbiAgICAgIGlmICh4ID09PSAwKSB4ID0gamlnZ2xlKHJhbmRvbSksIGwgKz0geCAqIHg7XG4gICAgICBpZiAoeSA9PT0gMCkgeSA9IGppZ2dsZShyYW5kb20pLCBsICs9IHkgKiB5O1xuICAgICAgaWYgKGwgPCBkaXN0YW5jZU1pbjIpIGwgPSBNYXRoLnNxcnQoZGlzdGFuY2VNaW4yICogbCk7XG4gICAgfVxuXG4gICAgZG8gaWYgKHF1YWQuZGF0YSAhPT0gbm9kZSkge1xuICAgICAgdyA9IHN0cmVuZ3Roc1txdWFkLmRhdGEuaW5kZXhdICogYWxwaGEgLyBsO1xuICAgICAgbm9kZS52eCArPSB4ICogdztcbiAgICAgIG5vZGUudnkgKz0geSAqIHc7XG4gICAgfSB3aGlsZSAocXVhZCA9IHF1YWQubmV4dCk7XG4gIH1cblxuICBmb3JjZS5pbml0aWFsaXplID0gZnVuY3Rpb24oX25vZGVzLCBfcmFuZG9tKSB7XG4gICAgbm9kZXMgPSBfbm9kZXM7XG4gICAgcmFuZG9tID0gX3JhbmRvbTtcbiAgICBpbml0aWFsaXplKCk7XG4gIH07XG5cbiAgZm9yY2Uuc3RyZW5ndGggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3RyZW5ndGggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICBmb3JjZS5kaXN0YW5jZU1pbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkaXN0YW5jZU1pbjIgPSBfICogXywgZm9yY2UpIDogTWF0aC5zcXJ0KGRpc3RhbmNlTWluMik7XG4gIH07XG5cbiAgZm9yY2UuZGlzdGFuY2VNYXggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZGlzdGFuY2VNYXgyID0gXyAqIF8sIGZvcmNlKSA6IE1hdGguc3FydChkaXN0YW5jZU1heDIpO1xuICB9O1xuXG4gIGZvcmNlLnRoZXRhID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoZXRhMiA9IF8gKiBfLCBmb3JjZSkgOiBNYXRoLnNxcnQodGhldGEyKTtcbiAgfTtcblxuICByZXR1cm4gZm9yY2U7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gTWF0aC5hYnMoeCA9IE1hdGgucm91bmQoeCkpID49IDFlMjFcbiAgICAgID8geC50b0xvY2FsZVN0cmluZyhcImVuXCIpLnJlcGxhY2UoLywvZywgXCJcIilcbiAgICAgIDogeC50b1N0cmluZygxMCk7XG59XG5cbi8vIENvbXB1dGVzIHRoZSBkZWNpbWFsIGNvZWZmaWNpZW50IGFuZCBleHBvbmVudCBvZiB0aGUgc3BlY2lmaWVkIG51bWJlciB4IHdpdGhcbi8vIHNpZ25pZmljYW50IGRpZ2l0cyBwLCB3aGVyZSB4IGlzIHBvc2l0aXZlIGFuZCBwIGlzIGluIFsxLCAyMV0gb3IgdW5kZWZpbmVkLlxuLy8gRm9yIGV4YW1wbGUsIGZvcm1hdERlY2ltYWxQYXJ0cygxLjIzKSByZXR1cm5zIFtcIjEyM1wiLCAwXS5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREZWNpbWFsUGFydHMoeCwgcCkge1xuICBpZiAoKGkgPSAoeCA9IHAgPyB4LnRvRXhwb25lbnRpYWwocCAtIDEpIDogeC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoXCJlXCIpKSA8IDApIHJldHVybiBudWxsOyAvLyBOYU4sIFx1MDBCMUluZmluaXR5XG4gIHZhciBpLCBjb2VmZmljaWVudCA9IHguc2xpY2UoMCwgaSk7XG5cbiAgLy8gVGhlIHN0cmluZyByZXR1cm5lZCBieSB0b0V4cG9uZW50aWFsIGVpdGhlciBoYXMgdGhlIGZvcm0gXFxkXFwuXFxkK2VbLStdXFxkK1xuICAvLyAoZS5nLiwgMS4yZSszKSBvciB0aGUgZm9ybSBcXGRlWy0rXVxcZCsgKGUuZy4sIDFlKzMpLlxuICByZXR1cm4gW1xuICAgIGNvZWZmaWNpZW50Lmxlbmd0aCA+IDEgPyBjb2VmZmljaWVudFswXSArIGNvZWZmaWNpZW50LnNsaWNlKDIpIDogY29lZmZpY2llbnQsXG4gICAgK3guc2xpY2UoaSArIDEpXG4gIF07XG59XG4iLCAiaW1wb3J0IHtmb3JtYXREZWNpbWFsUGFydHN9IGZyb20gXCIuL2Zvcm1hdERlY2ltYWwuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4geCA9IGZvcm1hdERlY2ltYWxQYXJ0cyhNYXRoLmFicyh4KSksIHggPyB4WzFdIDogTmFOO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGdyb3VwaW5nLCB0aG91c2FuZHMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCB3aWR0aCkge1xuICAgIHZhciBpID0gdmFsdWUubGVuZ3RoLFxuICAgICAgICB0ID0gW10sXG4gICAgICAgIGogPSAwLFxuICAgICAgICBnID0gZ3JvdXBpbmdbMF0sXG4gICAgICAgIGxlbmd0aCA9IDA7XG5cbiAgICB3aGlsZSAoaSA+IDAgJiYgZyA+IDApIHtcbiAgICAgIGlmIChsZW5ndGggKyBnICsgMSA+IHdpZHRoKSBnID0gTWF0aC5tYXgoMSwgd2lkdGggLSBsZW5ndGgpO1xuICAgICAgdC5wdXNoKHZhbHVlLnN1YnN0cmluZyhpIC09IGcsIGkgKyBnKSk7XG4gICAgICBpZiAoKGxlbmd0aCArPSBnICsgMSkgPiB3aWR0aCkgYnJlYWs7XG4gICAgICBnID0gZ3JvdXBpbmdbaiA9IChqICsgMSkgJSBncm91cGluZy5sZW5ndGhdO1xuICAgIH1cblxuICAgIHJldHVybiB0LnJldmVyc2UoKS5qb2luKHRob3VzYW5kcyk7XG4gIH07XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obnVtZXJhbHMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1swLTldL2csIGZ1bmN0aW9uKGkpIHtcbiAgICAgIHJldHVybiBudW1lcmFsc1sraV07XG4gICAgfSk7XG4gIH07XG59XG4iLCAiLy8gW1tmaWxsXWFsaWduXVtzaWduXVtzeW1ib2xdWzBdW3dpZHRoXVssXVsucHJlY2lzaW9uXVt+XVt0eXBlXVxudmFyIHJlID0gL14oPzooLik/KFs8Pj1eXSkpPyhbK1xcLSggXSk/KFskI10pPygwKT8oXFxkKyk/KCwpPyhcXC5cXGQrKT8ofik/KFthLXolXSk/JC9pO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXRTcGVjaWZpZXIoc3BlY2lmaWVyKSB7XG4gIGlmICghKG1hdGNoID0gcmUuZXhlYyhzcGVjaWZpZXIpKSkgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBmb3JtYXQ6IFwiICsgc3BlY2lmaWVyKTtcbiAgdmFyIG1hdGNoO1xuICByZXR1cm4gbmV3IEZvcm1hdFNwZWNpZmllcih7XG4gICAgZmlsbDogbWF0Y2hbMV0sXG4gICAgYWxpZ246IG1hdGNoWzJdLFxuICAgIHNpZ246IG1hdGNoWzNdLFxuICAgIHN5bWJvbDogbWF0Y2hbNF0sXG4gICAgemVybzogbWF0Y2hbNV0sXG4gICAgd2lkdGg6IG1hdGNoWzZdLFxuICAgIGNvbW1hOiBtYXRjaFs3XSxcbiAgICBwcmVjaXNpb246IG1hdGNoWzhdICYmIG1hdGNoWzhdLnNsaWNlKDEpLFxuICAgIHRyaW06IG1hdGNoWzldLFxuICAgIHR5cGU6IG1hdGNoWzEwXVxuICB9KTtcbn1cblxuZm9ybWF0U3BlY2lmaWVyLnByb3RvdHlwZSA9IEZvcm1hdFNwZWNpZmllci5wcm90b3R5cGU7IC8vIGluc3RhbmNlb2ZcblxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1hdFNwZWNpZmllcihzcGVjaWZpZXIpIHtcbiAgdGhpcy5maWxsID0gc3BlY2lmaWVyLmZpbGwgPT09IHVuZGVmaW5lZCA/IFwiIFwiIDogc3BlY2lmaWVyLmZpbGwgKyBcIlwiO1xuICB0aGlzLmFsaWduID0gc3BlY2lmaWVyLmFsaWduID09PSB1bmRlZmluZWQgPyBcIj5cIiA6IHNwZWNpZmllci5hbGlnbiArIFwiXCI7XG4gIHRoaXMuc2lnbiA9IHNwZWNpZmllci5zaWduID09PSB1bmRlZmluZWQgPyBcIi1cIiA6IHNwZWNpZmllci5zaWduICsgXCJcIjtcbiAgdGhpcy5zeW1ib2wgPSBzcGVjaWZpZXIuc3ltYm9sID09PSB1bmRlZmluZWQgPyBcIlwiIDogc3BlY2lmaWVyLnN5bWJvbCArIFwiXCI7XG4gIHRoaXMuemVybyA9ICEhc3BlY2lmaWVyLnplcm87XG4gIHRoaXMud2lkdGggPSBzcGVjaWZpZXIud2lkdGggPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6ICtzcGVjaWZpZXIud2lkdGg7XG4gIHRoaXMuY29tbWEgPSAhIXNwZWNpZmllci5jb21tYTtcbiAgdGhpcy5wcmVjaXNpb24gPSBzcGVjaWZpZXIucHJlY2lzaW9uID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiArc3BlY2lmaWVyLnByZWNpc2lvbjtcbiAgdGhpcy50cmltID0gISFzcGVjaWZpZXIudHJpbTtcbiAgdGhpcy50eXBlID0gc3BlY2lmaWVyLnR5cGUgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBzcGVjaWZpZXIudHlwZSArIFwiXCI7XG59XG5cbkZvcm1hdFNwZWNpZmllci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZmlsbFxuICAgICAgKyB0aGlzLmFsaWduXG4gICAgICArIHRoaXMuc2lnblxuICAgICAgKyB0aGlzLnN5bWJvbFxuICAgICAgKyAodGhpcy56ZXJvID8gXCIwXCIgOiBcIlwiKVxuICAgICAgKyAodGhpcy53aWR0aCA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IE1hdGgubWF4KDEsIHRoaXMud2lkdGggfCAwKSlcbiAgICAgICsgKHRoaXMuY29tbWEgPyBcIixcIiA6IFwiXCIpXG4gICAgICArICh0aGlzLnByZWNpc2lvbiA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IFwiLlwiICsgTWF0aC5tYXgoMCwgdGhpcy5wcmVjaXNpb24gfCAwKSlcbiAgICAgICsgKHRoaXMudHJpbSA/IFwiflwiIDogXCJcIilcbiAgICAgICsgdGhpcy50eXBlO1xufTtcbiIsICIvLyBUcmltcyBpbnNpZ25pZmljYW50IHplcm9zLCBlLmcuLCByZXBsYWNlcyAxLjIwMDBrIHdpdGggMS4yay5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHMpIHtcbiAgb3V0OiBmb3IgKHZhciBuID0gcy5sZW5ndGgsIGkgPSAxLCBpMCA9IC0xLCBpMTsgaSA8IG47ICsraSkge1xuICAgIHN3aXRjaCAoc1tpXSkge1xuICAgICAgY2FzZSBcIi5cIjogaTAgPSBpMSA9IGk7IGJyZWFrO1xuICAgICAgY2FzZSBcIjBcIjogaWYgKGkwID09PSAwKSBpMCA9IGk7IGkxID0gaTsgYnJlYWs7XG4gICAgICBkZWZhdWx0OiBpZiAoIStzW2ldKSBicmVhayBvdXQ7IGlmIChpMCA+IDApIGkwID0gMDsgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBpMCA+IDAgPyBzLnNsaWNlKDAsIGkwKSArIHMuc2xpY2UoaTEgKyAxKSA6IHM7XG59XG4iLCAiaW1wb3J0IHtmb3JtYXREZWNpbWFsUGFydHN9IGZyb20gXCIuL2Zvcm1hdERlY2ltYWwuanNcIjtcblxuZXhwb3J0IHZhciBwcmVmaXhFeHBvbmVudDtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCwgcCkge1xuICB2YXIgZCA9IGZvcm1hdERlY2ltYWxQYXJ0cyh4LCBwKTtcbiAgaWYgKCFkKSByZXR1cm4geCArIFwiXCI7XG4gIHZhciBjb2VmZmljaWVudCA9IGRbMF0sXG4gICAgICBleHBvbmVudCA9IGRbMV0sXG4gICAgICBpID0gZXhwb25lbnQgLSAocHJlZml4RXhwb25lbnQgPSBNYXRoLm1heCgtOCwgTWF0aC5taW4oOCwgTWF0aC5mbG9vcihleHBvbmVudCAvIDMpKSkgKiAzKSArIDEsXG4gICAgICBuID0gY29lZmZpY2llbnQubGVuZ3RoO1xuICByZXR1cm4gaSA9PT0gbiA/IGNvZWZmaWNpZW50XG4gICAgICA6IGkgPiBuID8gY29lZmZpY2llbnQgKyBuZXcgQXJyYXkoaSAtIG4gKyAxKS5qb2luKFwiMFwiKVxuICAgICAgOiBpID4gMCA/IGNvZWZmaWNpZW50LnNsaWNlKDAsIGkpICsgXCIuXCIgKyBjb2VmZmljaWVudC5zbGljZShpKVxuICAgICAgOiBcIjAuXCIgKyBuZXcgQXJyYXkoMSAtIGkpLmpvaW4oXCIwXCIpICsgZm9ybWF0RGVjaW1hbFBhcnRzKHgsIE1hdGgubWF4KDAsIHAgKyBpIC0gMSkpWzBdOyAvLyBsZXNzIHRoYW4gMXkhXG59XG4iLCAiaW1wb3J0IHtmb3JtYXREZWNpbWFsUGFydHN9IGZyb20gXCIuL2Zvcm1hdERlY2ltYWwuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCwgcCkge1xuICB2YXIgZCA9IGZvcm1hdERlY2ltYWxQYXJ0cyh4LCBwKTtcbiAgaWYgKCFkKSByZXR1cm4geCArIFwiXCI7XG4gIHZhciBjb2VmZmljaWVudCA9IGRbMF0sXG4gICAgICBleHBvbmVudCA9IGRbMV07XG4gIHJldHVybiBleHBvbmVudCA8IDAgPyBcIjAuXCIgKyBuZXcgQXJyYXkoLWV4cG9uZW50KS5qb2luKFwiMFwiKSArIGNvZWZmaWNpZW50XG4gICAgICA6IGNvZWZmaWNpZW50Lmxlbmd0aCA+IGV4cG9uZW50ICsgMSA/IGNvZWZmaWNpZW50LnNsaWNlKDAsIGV4cG9uZW50ICsgMSkgKyBcIi5cIiArIGNvZWZmaWNpZW50LnNsaWNlKGV4cG9uZW50ICsgMSlcbiAgICAgIDogY29lZmZpY2llbnQgKyBuZXcgQXJyYXkoZXhwb25lbnQgLSBjb2VmZmljaWVudC5sZW5ndGggKyAyKS5qb2luKFwiMFwiKTtcbn1cbiIsICJpbXBvcnQgZm9ybWF0RGVjaW1hbCBmcm9tIFwiLi9mb3JtYXREZWNpbWFsLmpzXCI7XG5pbXBvcnQgZm9ybWF0UHJlZml4QXV0byBmcm9tIFwiLi9mb3JtYXRQcmVmaXhBdXRvLmpzXCI7XG5pbXBvcnQgZm9ybWF0Um91bmRlZCBmcm9tIFwiLi9mb3JtYXRSb3VuZGVkLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgXCIlXCI6ICh4LCBwKSA9PiAoeCAqIDEwMCkudG9GaXhlZChwKSxcbiAgXCJiXCI6ICh4KSA9PiBNYXRoLnJvdW5kKHgpLnRvU3RyaW5nKDIpLFxuICBcImNcIjogKHgpID0+IHggKyBcIlwiLFxuICBcImRcIjogZm9ybWF0RGVjaW1hbCxcbiAgXCJlXCI6ICh4LCBwKSA9PiB4LnRvRXhwb25lbnRpYWwocCksXG4gIFwiZlwiOiAoeCwgcCkgPT4geC50b0ZpeGVkKHApLFxuICBcImdcIjogKHgsIHApID0+IHgudG9QcmVjaXNpb24ocCksXG4gIFwib1wiOiAoeCkgPT4gTWF0aC5yb3VuZCh4KS50b1N0cmluZyg4KSxcbiAgXCJwXCI6ICh4LCBwKSA9PiBmb3JtYXRSb3VuZGVkKHggKiAxMDAsIHApLFxuICBcInJcIjogZm9ybWF0Um91bmRlZCxcbiAgXCJzXCI6IGZvcm1hdFByZWZpeEF1dG8sXG4gIFwiWFwiOiAoeCkgPT4gTWF0aC5yb3VuZCh4KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSxcbiAgXCJ4XCI6ICh4KSA9PiBNYXRoLnJvdW5kKHgpLnRvU3RyaW5nKDE2KVxufTtcbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiB4O1xufVxuIiwgImltcG9ydCBleHBvbmVudCBmcm9tIFwiLi9leHBvbmVudC5qc1wiO1xuaW1wb3J0IGZvcm1hdEdyb3VwIGZyb20gXCIuL2Zvcm1hdEdyb3VwLmpzXCI7XG5pbXBvcnQgZm9ybWF0TnVtZXJhbHMgZnJvbSBcIi4vZm9ybWF0TnVtZXJhbHMuanNcIjtcbmltcG9ydCBmb3JtYXRTcGVjaWZpZXIgZnJvbSBcIi4vZm9ybWF0U3BlY2lmaWVyLmpzXCI7XG5pbXBvcnQgZm9ybWF0VHJpbSBmcm9tIFwiLi9mb3JtYXRUcmltLmpzXCI7XG5pbXBvcnQgZm9ybWF0VHlwZXMgZnJvbSBcIi4vZm9ybWF0VHlwZXMuanNcIjtcbmltcG9ydCB7cHJlZml4RXhwb25lbnR9IGZyb20gXCIuL2Zvcm1hdFByZWZpeEF1dG8uanNcIjtcbmltcG9ydCBpZGVudGl0eSBmcm9tIFwiLi9pZGVudGl0eS5qc1wiO1xuXG52YXIgbWFwID0gQXJyYXkucHJvdG90eXBlLm1hcCxcbiAgICBwcmVmaXhlcyA9IFtcInlcIixcInpcIixcImFcIixcImZcIixcInBcIixcIm5cIixcIlx1MDBCNVwiLFwibVwiLFwiXCIsXCJrXCIsXCJNXCIsXCJHXCIsXCJUXCIsXCJQXCIsXCJFXCIsXCJaXCIsXCJZXCJdO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihsb2NhbGUpIHtcbiAgdmFyIGdyb3VwID0gbG9jYWxlLmdyb3VwaW5nID09PSB1bmRlZmluZWQgfHwgbG9jYWxlLnRob3VzYW5kcyA9PT0gdW5kZWZpbmVkID8gaWRlbnRpdHkgOiBmb3JtYXRHcm91cChtYXAuY2FsbChsb2NhbGUuZ3JvdXBpbmcsIE51bWJlciksIGxvY2FsZS50aG91c2FuZHMgKyBcIlwiKSxcbiAgICAgIGN1cnJlbmN5UHJlZml4ID0gbG9jYWxlLmN1cnJlbmN5ID09PSB1bmRlZmluZWQgPyBcIlwiIDogbG9jYWxlLmN1cnJlbmN5WzBdICsgXCJcIixcbiAgICAgIGN1cnJlbmN5U3VmZml4ID0gbG9jYWxlLmN1cnJlbmN5ID09PSB1bmRlZmluZWQgPyBcIlwiIDogbG9jYWxlLmN1cnJlbmN5WzFdICsgXCJcIixcbiAgICAgIGRlY2ltYWwgPSBsb2NhbGUuZGVjaW1hbCA9PT0gdW5kZWZpbmVkID8gXCIuXCIgOiBsb2NhbGUuZGVjaW1hbCArIFwiXCIsXG4gICAgICBudW1lcmFscyA9IGxvY2FsZS5udW1lcmFscyA9PT0gdW5kZWZpbmVkID8gaWRlbnRpdHkgOiBmb3JtYXROdW1lcmFscyhtYXAuY2FsbChsb2NhbGUubnVtZXJhbHMsIFN0cmluZykpLFxuICAgICAgcGVyY2VudCA9IGxvY2FsZS5wZXJjZW50ID09PSB1bmRlZmluZWQgPyBcIiVcIiA6IGxvY2FsZS5wZXJjZW50ICsgXCJcIixcbiAgICAgIG1pbnVzID0gbG9jYWxlLm1pbnVzID09PSB1bmRlZmluZWQgPyBcIlx1MjIxMlwiIDogbG9jYWxlLm1pbnVzICsgXCJcIixcbiAgICAgIG5hbiA9IGxvY2FsZS5uYW4gPT09IHVuZGVmaW5lZCA/IFwiTmFOXCIgOiBsb2NhbGUubmFuICsgXCJcIjtcblxuICBmdW5jdGlvbiBuZXdGb3JtYXQoc3BlY2lmaWVyKSB7XG4gICAgc3BlY2lmaWVyID0gZm9ybWF0U3BlY2lmaWVyKHNwZWNpZmllcik7XG5cbiAgICB2YXIgZmlsbCA9IHNwZWNpZmllci5maWxsLFxuICAgICAgICBhbGlnbiA9IHNwZWNpZmllci5hbGlnbixcbiAgICAgICAgc2lnbiA9IHNwZWNpZmllci5zaWduLFxuICAgICAgICBzeW1ib2wgPSBzcGVjaWZpZXIuc3ltYm9sLFxuICAgICAgICB6ZXJvID0gc3BlY2lmaWVyLnplcm8sXG4gICAgICAgIHdpZHRoID0gc3BlY2lmaWVyLndpZHRoLFxuICAgICAgICBjb21tYSA9IHNwZWNpZmllci5jb21tYSxcbiAgICAgICAgcHJlY2lzaW9uID0gc3BlY2lmaWVyLnByZWNpc2lvbixcbiAgICAgICAgdHJpbSA9IHNwZWNpZmllci50cmltLFxuICAgICAgICB0eXBlID0gc3BlY2lmaWVyLnR5cGU7XG5cbiAgICAvLyBUaGUgXCJuXCIgdHlwZSBpcyBhbiBhbGlhcyBmb3IgXCIsZ1wiLlxuICAgIGlmICh0eXBlID09PSBcIm5cIikgY29tbWEgPSB0cnVlLCB0eXBlID0gXCJnXCI7XG5cbiAgICAvLyBUaGUgXCJcIiB0eXBlLCBhbmQgYW55IGludmFsaWQgdHlwZSwgaXMgYW4gYWxpYXMgZm9yIFwiLjEyfmdcIi5cbiAgICBlbHNlIGlmICghZm9ybWF0VHlwZXNbdHlwZV0pIHByZWNpc2lvbiA9PT0gdW5kZWZpbmVkICYmIChwcmVjaXNpb24gPSAxMiksIHRyaW0gPSB0cnVlLCB0eXBlID0gXCJnXCI7XG5cbiAgICAvLyBJZiB6ZXJvIGZpbGwgaXMgc3BlY2lmaWVkLCBwYWRkaW5nIGdvZXMgYWZ0ZXIgc2lnbiBhbmQgYmVmb3JlIGRpZ2l0cy5cbiAgICBpZiAoemVybyB8fCAoZmlsbCA9PT0gXCIwXCIgJiYgYWxpZ24gPT09IFwiPVwiKSkgemVybyA9IHRydWUsIGZpbGwgPSBcIjBcIiwgYWxpZ24gPSBcIj1cIjtcblxuICAgIC8vIENvbXB1dGUgdGhlIHByZWZpeCBhbmQgc3VmZml4LlxuICAgIC8vIEZvciBTSS1wcmVmaXgsIHRoZSBzdWZmaXggaXMgbGF6aWx5IGNvbXB1dGVkLlxuICAgIHZhciBwcmVmaXggPSBzeW1ib2wgPT09IFwiJFwiID8gY3VycmVuY3lQcmVmaXggOiBzeW1ib2wgPT09IFwiI1wiICYmIC9bYm94WF0vLnRlc3QodHlwZSkgPyBcIjBcIiArIHR5cGUudG9Mb3dlckNhc2UoKSA6IFwiXCIsXG4gICAgICAgIHN1ZmZpeCA9IHN5bWJvbCA9PT0gXCIkXCIgPyBjdXJyZW5jeVN1ZmZpeCA6IC9bJXBdLy50ZXN0KHR5cGUpID8gcGVyY2VudCA6IFwiXCI7XG5cbiAgICAvLyBXaGF0IGZvcm1hdCBmdW5jdGlvbiBzaG91bGQgd2UgdXNlP1xuICAgIC8vIElzIHRoaXMgYW4gaW50ZWdlciB0eXBlP1xuICAgIC8vIENhbiB0aGlzIHR5cGUgZ2VuZXJhdGUgZXhwb25lbnRpYWwgbm90YXRpb24/XG4gICAgdmFyIGZvcm1hdFR5cGUgPSBmb3JtYXRUeXBlc1t0eXBlXSxcbiAgICAgICAgbWF5YmVTdWZmaXggPSAvW2RlZmdwcnMlXS8udGVzdCh0eXBlKTtcblxuICAgIC8vIFNldCB0aGUgZGVmYXVsdCBwcmVjaXNpb24gaWYgbm90IHNwZWNpZmllZCxcbiAgICAvLyBvciBjbGFtcCB0aGUgc3BlY2lmaWVkIHByZWNpc2lvbiB0byB0aGUgc3VwcG9ydGVkIHJhbmdlLlxuICAgIC8vIEZvciBzaWduaWZpY2FudCBwcmVjaXNpb24sIGl0IG11c3QgYmUgaW4gWzEsIDIxXS5cbiAgICAvLyBGb3IgZml4ZWQgcHJlY2lzaW9uLCBpdCBtdXN0IGJlIGluIFswLCAyMF0uXG4gICAgcHJlY2lzaW9uID0gcHJlY2lzaW9uID09PSB1bmRlZmluZWQgPyA2XG4gICAgICAgIDogL1tncHJzXS8udGVzdCh0eXBlKSA/IE1hdGgubWF4KDEsIE1hdGgubWluKDIxLCBwcmVjaXNpb24pKVxuICAgICAgICA6IE1hdGgubWF4KDAsIE1hdGgubWluKDIwLCBwcmVjaXNpb24pKTtcblxuICAgIGZ1bmN0aW9uIGZvcm1hdCh2YWx1ZSkge1xuICAgICAgdmFyIHZhbHVlUHJlZml4ID0gcHJlZml4LFxuICAgICAgICAgIHZhbHVlU3VmZml4ID0gc3VmZml4LFxuICAgICAgICAgIGksIG4sIGM7XG5cbiAgICAgIGlmICh0eXBlID09PSBcImNcIikge1xuICAgICAgICB2YWx1ZVN1ZmZpeCA9IGZvcm1hdFR5cGUodmFsdWUpICsgdmFsdWVTdWZmaXg7XG4gICAgICAgIHZhbHVlID0gXCJcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gK3ZhbHVlO1xuXG4gICAgICAgIC8vIERldGVybWluZSB0aGUgc2lnbi4gLTAgaXMgbm90IGxlc3MgdGhhbiAwLCBidXQgMSAvIC0wIGlzIVxuICAgICAgICB2YXIgdmFsdWVOZWdhdGl2ZSA9IHZhbHVlIDwgMCB8fCAxIC8gdmFsdWUgPCAwO1xuXG4gICAgICAgIC8vIFBlcmZvcm0gdGhlIGluaXRpYWwgZm9ybWF0dGluZy5cbiAgICAgICAgdmFsdWUgPSBpc05hTih2YWx1ZSkgPyBuYW4gOiBmb3JtYXRUeXBlKE1hdGguYWJzKHZhbHVlKSwgcHJlY2lzaW9uKTtcblxuICAgICAgICAvLyBUcmltIGluc2lnbmlmaWNhbnQgemVyb3MuXG4gICAgICAgIGlmICh0cmltKSB2YWx1ZSA9IGZvcm1hdFRyaW0odmFsdWUpO1xuXG4gICAgICAgIC8vIElmIGEgbmVnYXRpdmUgdmFsdWUgcm91bmRzIHRvIHplcm8gYWZ0ZXIgZm9ybWF0dGluZywgYW5kIG5vIGV4cGxpY2l0IHBvc2l0aXZlIHNpZ24gaXMgcmVxdWVzdGVkLCBoaWRlIHRoZSBzaWduLlxuICAgICAgICBpZiAodmFsdWVOZWdhdGl2ZSAmJiArdmFsdWUgPT09IDAgJiYgc2lnbiAhPT0gXCIrXCIpIHZhbHVlTmVnYXRpdmUgPSBmYWxzZTtcblxuICAgICAgICAvLyBDb21wdXRlIHRoZSBwcmVmaXggYW5kIHN1ZmZpeC5cbiAgICAgICAgdmFsdWVQcmVmaXggPSAodmFsdWVOZWdhdGl2ZSA/IChzaWduID09PSBcIihcIiA/IHNpZ24gOiBtaW51cykgOiBzaWduID09PSBcIi1cIiB8fCBzaWduID09PSBcIihcIiA/IFwiXCIgOiBzaWduKSArIHZhbHVlUHJlZml4O1xuICAgICAgICB2YWx1ZVN1ZmZpeCA9ICh0eXBlID09PSBcInNcIiA/IHByZWZpeGVzWzggKyBwcmVmaXhFeHBvbmVudCAvIDNdIDogXCJcIikgKyB2YWx1ZVN1ZmZpeCArICh2YWx1ZU5lZ2F0aXZlICYmIHNpZ24gPT09IFwiKFwiID8gXCIpXCIgOiBcIlwiKTtcblxuICAgICAgICAvLyBCcmVhayB0aGUgZm9ybWF0dGVkIHZhbHVlIGludG8gdGhlIGludGVnZXIgXHUyMDFDdmFsdWVcdTIwMUQgcGFydCB0aGF0IGNhbiBiZVxuICAgICAgICAvLyBncm91cGVkLCBhbmQgZnJhY3Rpb25hbCBvciBleHBvbmVudGlhbCBcdTIwMUNzdWZmaXhcdTIwMUQgcGFydCB0aGF0IGlzIG5vdC5cbiAgICAgICAgaWYgKG1heWJlU3VmZml4KSB7XG4gICAgICAgICAgaSA9IC0xLCBuID0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgICAgICAgICBpZiAoYyA9IHZhbHVlLmNoYXJDb2RlQXQoaSksIDQ4ID4gYyB8fCBjID4gNTcpIHtcbiAgICAgICAgICAgICAgdmFsdWVTdWZmaXggPSAoYyA9PT0gNDYgPyBkZWNpbWFsICsgdmFsdWUuc2xpY2UoaSArIDEpIDogdmFsdWUuc2xpY2UoaSkpICsgdmFsdWVTdWZmaXg7XG4gICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMCwgaSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgZmlsbCBjaGFyYWN0ZXIgaXMgbm90IFwiMFwiLCBncm91cGluZyBpcyBhcHBsaWVkIGJlZm9yZSBwYWRkaW5nLlxuICAgICAgaWYgKGNvbW1hICYmICF6ZXJvKSB2YWx1ZSA9IGdyb3VwKHZhbHVlLCBJbmZpbml0eSk7XG5cbiAgICAgIC8vIENvbXB1dGUgdGhlIHBhZGRpbmcuXG4gICAgICB2YXIgbGVuZ3RoID0gdmFsdWVQcmVmaXgubGVuZ3RoICsgdmFsdWUubGVuZ3RoICsgdmFsdWVTdWZmaXgubGVuZ3RoLFxuICAgICAgICAgIHBhZGRpbmcgPSBsZW5ndGggPCB3aWR0aCA/IG5ldyBBcnJheSh3aWR0aCAtIGxlbmd0aCArIDEpLmpvaW4oZmlsbCkgOiBcIlwiO1xuXG4gICAgICAvLyBJZiB0aGUgZmlsbCBjaGFyYWN0ZXIgaXMgXCIwXCIsIGdyb3VwaW5nIGlzIGFwcGxpZWQgYWZ0ZXIgcGFkZGluZy5cbiAgICAgIGlmIChjb21tYSAmJiB6ZXJvKSB2YWx1ZSA9IGdyb3VwKHBhZGRpbmcgKyB2YWx1ZSwgcGFkZGluZy5sZW5ndGggPyB3aWR0aCAtIHZhbHVlU3VmZml4Lmxlbmd0aCA6IEluZmluaXR5KSwgcGFkZGluZyA9IFwiXCI7XG5cbiAgICAgIC8vIFJlY29uc3RydWN0IHRoZSBmaW5hbCBvdXRwdXQgYmFzZWQgb24gdGhlIGRlc2lyZWQgYWxpZ25tZW50LlxuICAgICAgc3dpdGNoIChhbGlnbikge1xuICAgICAgICBjYXNlIFwiPFwiOiB2YWx1ZSA9IHZhbHVlUHJlZml4ICsgdmFsdWUgKyB2YWx1ZVN1ZmZpeCArIHBhZGRpbmc7IGJyZWFrO1xuICAgICAgICBjYXNlIFwiPVwiOiB2YWx1ZSA9IHZhbHVlUHJlZml4ICsgcGFkZGluZyArIHZhbHVlICsgdmFsdWVTdWZmaXg7IGJyZWFrO1xuICAgICAgICBjYXNlIFwiXlwiOiB2YWx1ZSA9IHBhZGRpbmcuc2xpY2UoMCwgbGVuZ3RoID0gcGFkZGluZy5sZW5ndGggPj4gMSkgKyB2YWx1ZVByZWZpeCArIHZhbHVlICsgdmFsdWVTdWZmaXggKyBwYWRkaW5nLnNsaWNlKGxlbmd0aCk7IGJyZWFrO1xuICAgICAgICBkZWZhdWx0OiB2YWx1ZSA9IHBhZGRpbmcgKyB2YWx1ZVByZWZpeCArIHZhbHVlICsgdmFsdWVTdWZmaXg7IGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVtZXJhbHModmFsdWUpO1xuICAgIH1cblxuICAgIGZvcm1hdC50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHNwZWNpZmllciArIFwiXCI7XG4gICAgfTtcblxuICAgIHJldHVybiBmb3JtYXQ7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXRQcmVmaXgoc3BlY2lmaWVyLCB2YWx1ZSkge1xuICAgIHZhciBmID0gbmV3Rm9ybWF0KChzcGVjaWZpZXIgPSBmb3JtYXRTcGVjaWZpZXIoc3BlY2lmaWVyKSwgc3BlY2lmaWVyLnR5cGUgPSBcImZcIiwgc3BlY2lmaWVyKSksXG4gICAgICAgIGUgPSBNYXRoLm1heCgtOCwgTWF0aC5taW4oOCwgTWF0aC5mbG9vcihleHBvbmVudCh2YWx1ZSkgLyAzKSkpICogMyxcbiAgICAgICAgayA9IE1hdGgucG93KDEwLCAtZSksXG4gICAgICAgIHByZWZpeCA9IHByZWZpeGVzWzggKyBlIC8gM107XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gZihrICogdmFsdWUpICsgcHJlZml4O1xuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGZvcm1hdDogbmV3Rm9ybWF0LFxuICAgIGZvcm1hdFByZWZpeDogZm9ybWF0UHJlZml4XG4gIH07XG59XG4iLCAiaW1wb3J0IGZvcm1hdExvY2FsZSBmcm9tIFwiLi9sb2NhbGUuanNcIjtcblxudmFyIGxvY2FsZTtcbmV4cG9ydCB2YXIgZm9ybWF0O1xuZXhwb3J0IHZhciBmb3JtYXRQcmVmaXg7XG5cbmRlZmF1bHRMb2NhbGUoe1xuICB0aG91c2FuZHM6IFwiLFwiLFxuICBncm91cGluZzogWzNdLFxuICBjdXJyZW5jeTogW1wiJFwiLCBcIlwiXVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlZmF1bHRMb2NhbGUoZGVmaW5pdGlvbikge1xuICBsb2NhbGUgPSBmb3JtYXRMb2NhbGUoZGVmaW5pdGlvbik7XG4gIGZvcm1hdCA9IGxvY2FsZS5mb3JtYXQ7XG4gIGZvcm1hdFByZWZpeCA9IGxvY2FsZS5mb3JtYXRQcmVmaXg7XG4gIHJldHVybiBsb2NhbGU7XG59XG4iLCAiaW1wb3J0IGV4cG9uZW50IGZyb20gXCIuL2V4cG9uZW50LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0ZXApIHtcbiAgcmV0dXJuIE1hdGgubWF4KDAsIC1leHBvbmVudChNYXRoLmFicyhzdGVwKSkpO1xufVxuIiwgImltcG9ydCBleHBvbmVudCBmcm9tIFwiLi9leHBvbmVudC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzdGVwLCB2YWx1ZSkge1xuICByZXR1cm4gTWF0aC5tYXgoMCwgTWF0aC5tYXgoLTgsIE1hdGgubWluKDgsIE1hdGguZmxvb3IoZXhwb25lbnQodmFsdWUpIC8gMykpKSAqIDMgLSBleHBvbmVudChNYXRoLmFicyhzdGVwKSkpO1xufVxuIiwgImltcG9ydCBleHBvbmVudCBmcm9tIFwiLi9leHBvbmVudC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzdGVwLCBtYXgpIHtcbiAgc3RlcCA9IE1hdGguYWJzKHN0ZXApLCBtYXggPSBNYXRoLmFicyhtYXgpIC0gc3RlcDtcbiAgcmV0dXJuIE1hdGgubWF4KDAsIGV4cG9uZW50KG1heCkgLSBleHBvbmVudChzdGVwKSkgKyAxO1xufVxuIiwgImZ1bmN0aW9uIGRlZmF1bHRTZXBhcmF0aW9uKGEsIGIpIHtcbiAgcmV0dXJuIGEucGFyZW50ID09PSBiLnBhcmVudCA/IDEgOiAyO1xufVxuXG5mdW5jdGlvbiBtZWFuWChjaGlsZHJlbikge1xuICByZXR1cm4gY2hpbGRyZW4ucmVkdWNlKG1lYW5YUmVkdWNlLCAwKSAvIGNoaWxkcmVuLmxlbmd0aDtcbn1cblxuZnVuY3Rpb24gbWVhblhSZWR1Y2UoeCwgYykge1xuICByZXR1cm4geCArIGMueDtcbn1cblxuZnVuY3Rpb24gbWF4WShjaGlsZHJlbikge1xuICByZXR1cm4gMSArIGNoaWxkcmVuLnJlZHVjZShtYXhZUmVkdWNlLCAwKTtcbn1cblxuZnVuY3Rpb24gbWF4WVJlZHVjZSh5LCBjKSB7XG4gIHJldHVybiBNYXRoLm1heCh5LCBjLnkpO1xufVxuXG5mdW5jdGlvbiBsZWFmTGVmdChub2RlKSB7XG4gIHZhciBjaGlsZHJlbjtcbiAgd2hpbGUgKGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbikgbm9kZSA9IGNoaWxkcmVuWzBdO1xuICByZXR1cm4gbm9kZTtcbn1cblxuZnVuY3Rpb24gbGVhZlJpZ2h0KG5vZGUpIHtcbiAgdmFyIGNoaWxkcmVuO1xuICB3aGlsZSAoY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuKSBub2RlID0gY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gIHJldHVybiBub2RlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIHNlcGFyYXRpb24gPSBkZWZhdWx0U2VwYXJhdGlvbixcbiAgICAgIGR4ID0gMSxcbiAgICAgIGR5ID0gMSxcbiAgICAgIG5vZGVTaXplID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gY2x1c3Rlcihyb290KSB7XG4gICAgdmFyIHByZXZpb3VzTm9kZSxcbiAgICAgICAgeCA9IDA7XG5cbiAgICAvLyBGaXJzdCB3YWxrLCBjb21wdXRpbmcgdGhlIGluaXRpYWwgeCAmIHkgdmFsdWVzLlxuICAgIHJvb3QuZWFjaEFmdGVyKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47XG4gICAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgbm9kZS54ID0gbWVhblgoY2hpbGRyZW4pO1xuICAgICAgICBub2RlLnkgPSBtYXhZKGNoaWxkcmVuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGUueCA9IHByZXZpb3VzTm9kZSA/IHggKz0gc2VwYXJhdGlvbihub2RlLCBwcmV2aW91c05vZGUpIDogMDtcbiAgICAgICAgbm9kZS55ID0gMDtcbiAgICAgICAgcHJldmlvdXNOb2RlID0gbm9kZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHZhciBsZWZ0ID0gbGVhZkxlZnQocm9vdCksXG4gICAgICAgIHJpZ2h0ID0gbGVhZlJpZ2h0KHJvb3QpLFxuICAgICAgICB4MCA9IGxlZnQueCAtIHNlcGFyYXRpb24obGVmdCwgcmlnaHQpIC8gMixcbiAgICAgICAgeDEgPSByaWdodC54ICsgc2VwYXJhdGlvbihyaWdodCwgbGVmdCkgLyAyO1xuXG4gICAgLy8gU2Vjb25kIHdhbGssIG5vcm1hbGl6aW5nIHggJiB5IHRvIHRoZSBkZXNpcmVkIHNpemUuXG4gICAgcmV0dXJuIHJvb3QuZWFjaEFmdGVyKG5vZGVTaXplID8gZnVuY3Rpb24obm9kZSkge1xuICAgICAgbm9kZS54ID0gKG5vZGUueCAtIHJvb3QueCkgKiBkeDtcbiAgICAgIG5vZGUueSA9IChyb290LnkgLSBub2RlLnkpICogZHk7XG4gICAgfSA6IGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgIG5vZGUueCA9IChub2RlLnggLSB4MCkgLyAoeDEgLSB4MCkgKiBkeDtcbiAgICAgIG5vZGUueSA9ICgxIC0gKHJvb3QueSA/IG5vZGUueSAvIHJvb3QueSA6IDEpKSAqIGR5O1xuICAgIH0pO1xuICB9XG5cbiAgY2x1c3Rlci5zZXBhcmF0aW9uID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNlcGFyYXRpb24gPSB4LCBjbHVzdGVyKSA6IHNlcGFyYXRpb247XG4gIH07XG5cbiAgY2x1c3Rlci5zaXplID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG5vZGVTaXplID0gZmFsc2UsIGR4ID0gK3hbMF0sIGR5ID0gK3hbMV0sIGNsdXN0ZXIpIDogKG5vZGVTaXplID8gbnVsbCA6IFtkeCwgZHldKTtcbiAgfTtcblxuICBjbHVzdGVyLm5vZGVTaXplID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG5vZGVTaXplID0gdHJ1ZSwgZHggPSAreFswXSwgZHkgPSAreFsxXSwgY2x1c3RlcikgOiAobm9kZVNpemUgPyBbZHgsIGR5XSA6IG51bGwpO1xuICB9O1xuXG4gIHJldHVybiBjbHVzdGVyO1xufVxuIiwgImZ1bmN0aW9uIGNvdW50KG5vZGUpIHtcbiAgdmFyIHN1bSA9IDAsXG4gICAgICBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4sXG4gICAgICBpID0gY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoO1xuICBpZiAoIWkpIHN1bSA9IDE7XG4gIGVsc2Ugd2hpbGUgKC0taSA+PSAwKSBzdW0gKz0gY2hpbGRyZW5baV0udmFsdWU7XG4gIG5vZGUudmFsdWUgPSBzdW07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5lYWNoQWZ0ZXIoY291bnQpO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNhbGxiYWNrLCB0aGF0KSB7XG4gIGxldCBpbmRleCA9IC0xO1xuICBmb3IgKGNvbnN0IG5vZGUgb2YgdGhpcykge1xuICAgIGNhbGxiYWNrLmNhbGwodGhhdCwgbm9kZSwgKytpbmRleCwgdGhpcyk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2ssIHRoYXQpIHtcbiAgdmFyIG5vZGUgPSB0aGlzLCBub2RlcyA9IFtub2RlXSwgY2hpbGRyZW4sIGksIGluZGV4ID0gLTE7XG4gIHdoaWxlIChub2RlID0gbm9kZXMucG9wKCkpIHtcbiAgICBjYWxsYmFjay5jYWxsKHRoYXQsIG5vZGUsICsraW5kZXgsIHRoaXMpO1xuICAgIGlmIChjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGZvciAoaSA9IGNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIG5vZGVzLnB1c2goY2hpbGRyZW5baV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjYWxsYmFjaywgdGhhdCkge1xuICB2YXIgbm9kZSA9IHRoaXMsIG5vZGVzID0gW25vZGVdLCBuZXh0ID0gW10sIGNoaWxkcmVuLCBpLCBuLCBpbmRleCA9IC0xO1xuICB3aGlsZSAobm9kZSA9IG5vZGVzLnBvcCgpKSB7XG4gICAgbmV4dC5wdXNoKG5vZGUpO1xuICAgIGlmIChjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGZvciAoaSA9IDAsIG4gPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgbm9kZXMucHVzaChjaGlsZHJlbltpXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHdoaWxlIChub2RlID0gbmV4dC5wb3AoKSkge1xuICAgIGNhbGxiYWNrLmNhbGwodGhhdCwgbm9kZSwgKytpbmRleCwgdGhpcyk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2ssIHRoYXQpIHtcbiAgbGV0IGluZGV4ID0gLTE7XG4gIGZvciAoY29uc3Qgbm9kZSBvZiB0aGlzKSB7XG4gICAgaWYgKGNhbGxiYWNrLmNhbGwodGhhdCwgbm9kZSwgKytpbmRleCwgdGhpcykpIHtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgfVxufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLmVhY2hBZnRlcihmdW5jdGlvbihub2RlKSB7XG4gICAgdmFyIHN1bSA9ICt2YWx1ZShub2RlLmRhdGEpIHx8IDAsXG4gICAgICAgIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbixcbiAgICAgICAgaSA9IGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aDtcbiAgICB3aGlsZSAoLS1pID49IDApIHN1bSArPSBjaGlsZHJlbltpXS52YWx1ZTtcbiAgICBub2RlLnZhbHVlID0gc3VtO1xuICB9KTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb21wYXJlKSB7XG4gIHJldHVybiB0aGlzLmVhY2hCZWZvcmUoZnVuY3Rpb24obm9kZSkge1xuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICBub2RlLmNoaWxkcmVuLnNvcnQoY29tcGFyZSk7XG4gICAgfVxuICB9KTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihlbmQpIHtcbiAgdmFyIHN0YXJ0ID0gdGhpcyxcbiAgICAgIGFuY2VzdG9yID0gbGVhc3RDb21tb25BbmNlc3RvcihzdGFydCwgZW5kKSxcbiAgICAgIG5vZGVzID0gW3N0YXJ0XTtcbiAgd2hpbGUgKHN0YXJ0ICE9PSBhbmNlc3Rvcikge1xuICAgIHN0YXJ0ID0gc3RhcnQucGFyZW50O1xuICAgIG5vZGVzLnB1c2goc3RhcnQpO1xuICB9XG4gIHZhciBrID0gbm9kZXMubGVuZ3RoO1xuICB3aGlsZSAoZW5kICE9PSBhbmNlc3Rvcikge1xuICAgIG5vZGVzLnNwbGljZShrLCAwLCBlbmQpO1xuICAgIGVuZCA9IGVuZC5wYXJlbnQ7XG4gIH1cbiAgcmV0dXJuIG5vZGVzO1xufVxuXG5mdW5jdGlvbiBsZWFzdENvbW1vbkFuY2VzdG9yKGEsIGIpIHtcbiAgaWYgKGEgPT09IGIpIHJldHVybiBhO1xuICB2YXIgYU5vZGVzID0gYS5hbmNlc3RvcnMoKSxcbiAgICAgIGJOb2RlcyA9IGIuYW5jZXN0b3JzKCksXG4gICAgICBjID0gbnVsbDtcbiAgYSA9IGFOb2Rlcy5wb3AoKTtcbiAgYiA9IGJOb2Rlcy5wb3AoKTtcbiAgd2hpbGUgKGEgPT09IGIpIHtcbiAgICBjID0gYTtcbiAgICBhID0gYU5vZGVzLnBvcCgpO1xuICAgIGIgPSBiTm9kZXMucG9wKCk7XG4gIH1cbiAgcmV0dXJuIGM7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBub2RlID0gdGhpcywgbm9kZXMgPSBbbm9kZV07XG4gIHdoaWxlIChub2RlID0gbm9kZS5wYXJlbnQpIHtcbiAgICBub2Rlcy5wdXNoKG5vZGUpO1xuICB9XG4gIHJldHVybiBub2Rlcztcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20odGhpcyk7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBsZWF2ZXMgPSBbXTtcbiAgdGhpcy5lYWNoQmVmb3JlKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBpZiAoIW5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGxlYXZlcy5wdXNoKG5vZGUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBsZWF2ZXM7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciByb290ID0gdGhpcywgbGlua3MgPSBbXTtcbiAgcm9vdC5lYWNoKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBpZiAobm9kZSAhPT0gcm9vdCkgeyAvLyBEb25cdTIwMTl0IGluY2x1ZGUgdGhlIHJvb3RcdTIwMTlzIHBhcmVudCwgaWYgYW55LlxuICAgICAgbGlua3MucHVzaCh7c291cmNlOiBub2RlLnBhcmVudCwgdGFyZ2V0OiBub2RlfSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGxpbmtzO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKigpIHtcbiAgdmFyIG5vZGUgPSB0aGlzLCBjdXJyZW50LCBuZXh0ID0gW25vZGVdLCBjaGlsZHJlbiwgaSwgbjtcbiAgZG8ge1xuICAgIGN1cnJlbnQgPSBuZXh0LnJldmVyc2UoKSwgbmV4dCA9IFtdO1xuICAgIHdoaWxlIChub2RlID0gY3VycmVudC5wb3AoKSkge1xuICAgICAgeWllbGQgbm9kZTtcbiAgICAgIGlmIChjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgZm9yIChpID0gMCwgbiA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgICAgIG5leHQucHVzaChjaGlsZHJlbltpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gd2hpbGUgKG5leHQubGVuZ3RoKTtcbn1cbiIsICJpbXBvcnQgbm9kZV9jb3VudCBmcm9tIFwiLi9jb3VudC5qc1wiO1xuaW1wb3J0IG5vZGVfZWFjaCBmcm9tIFwiLi9lYWNoLmpzXCI7XG5pbXBvcnQgbm9kZV9lYWNoQmVmb3JlIGZyb20gXCIuL2VhY2hCZWZvcmUuanNcIjtcbmltcG9ydCBub2RlX2VhY2hBZnRlciBmcm9tIFwiLi9lYWNoQWZ0ZXIuanNcIjtcbmltcG9ydCBub2RlX2ZpbmQgZnJvbSBcIi4vZmluZC5qc1wiO1xuaW1wb3J0IG5vZGVfc3VtIGZyb20gXCIuL3N1bS5qc1wiO1xuaW1wb3J0IG5vZGVfc29ydCBmcm9tIFwiLi9zb3J0LmpzXCI7XG5pbXBvcnQgbm9kZV9wYXRoIGZyb20gXCIuL3BhdGguanNcIjtcbmltcG9ydCBub2RlX2FuY2VzdG9ycyBmcm9tIFwiLi9hbmNlc3RvcnMuanNcIjtcbmltcG9ydCBub2RlX2Rlc2NlbmRhbnRzIGZyb20gXCIuL2Rlc2NlbmRhbnRzLmpzXCI7XG5pbXBvcnQgbm9kZV9sZWF2ZXMgZnJvbSBcIi4vbGVhdmVzLmpzXCI7XG5pbXBvcnQgbm9kZV9saW5rcyBmcm9tIFwiLi9saW5rcy5qc1wiO1xuaW1wb3J0IG5vZGVfaXRlcmF0b3IgZnJvbSBcIi4vaXRlcmF0b3IuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaGllcmFyY2h5KGRhdGEsIGNoaWxkcmVuKSB7XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgZGF0YSA9IFt1bmRlZmluZWQsIGRhdGFdO1xuICAgIGlmIChjaGlsZHJlbiA9PT0gdW5kZWZpbmVkKSBjaGlsZHJlbiA9IG1hcENoaWxkcmVuO1xuICB9IGVsc2UgaWYgKGNoaWxkcmVuID09PSB1bmRlZmluZWQpIHtcbiAgICBjaGlsZHJlbiA9IG9iamVjdENoaWxkcmVuO1xuICB9XG5cbiAgdmFyIHJvb3QgPSBuZXcgTm9kZShkYXRhKSxcbiAgICAgIG5vZGUsXG4gICAgICBub2RlcyA9IFtyb290XSxcbiAgICAgIGNoaWxkLFxuICAgICAgY2hpbGRzLFxuICAgICAgaSxcbiAgICAgIG47XG5cbiAgd2hpbGUgKG5vZGUgPSBub2Rlcy5wb3AoKSkge1xuICAgIGlmICgoY2hpbGRzID0gY2hpbGRyZW4obm9kZS5kYXRhKSkgJiYgKG4gPSAoY2hpbGRzID0gQXJyYXkuZnJvbShjaGlsZHMpKS5sZW5ndGgpKSB7XG4gICAgICBub2RlLmNoaWxkcmVuID0gY2hpbGRzO1xuICAgICAgZm9yIChpID0gbiAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIG5vZGVzLnB1c2goY2hpbGQgPSBjaGlsZHNbaV0gPSBuZXcgTm9kZShjaGlsZHNbaV0pKTtcbiAgICAgICAgY2hpbGQucGFyZW50ID0gbm9kZTtcbiAgICAgICAgY2hpbGQuZGVwdGggPSBub2RlLmRlcHRoICsgMTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcm9vdC5lYWNoQmVmb3JlKGNvbXB1dGVIZWlnaHQpO1xufVxuXG5mdW5jdGlvbiBub2RlX2NvcHkoKSB7XG4gIHJldHVybiBoaWVyYXJjaHkodGhpcykuZWFjaEJlZm9yZShjb3B5RGF0YSk7XG59XG5cbmZ1bmN0aW9uIG9iamVjdENoaWxkcmVuKGQpIHtcbiAgcmV0dXJuIGQuY2hpbGRyZW47XG59XG5cbmZ1bmN0aW9uIG1hcENoaWxkcmVuKGQpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZCkgPyBkWzFdIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gY29weURhdGEobm9kZSkge1xuICBpZiAobm9kZS5kYXRhLnZhbHVlICE9PSB1bmRlZmluZWQpIG5vZGUudmFsdWUgPSBub2RlLmRhdGEudmFsdWU7XG4gIG5vZGUuZGF0YSA9IG5vZGUuZGF0YS5kYXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZUhlaWdodChub2RlKSB7XG4gIHZhciBoZWlnaHQgPSAwO1xuICBkbyBub2RlLmhlaWdodCA9IGhlaWdodDtcbiAgd2hpbGUgKChub2RlID0gbm9kZS5wYXJlbnQpICYmIChub2RlLmhlaWdodCA8ICsraGVpZ2h0KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBOb2RlKGRhdGEpIHtcbiAgdGhpcy5kYXRhID0gZGF0YTtcbiAgdGhpcy5kZXB0aCA9XG4gIHRoaXMuaGVpZ2h0ID0gMDtcbiAgdGhpcy5wYXJlbnQgPSBudWxsO1xufVxuXG5Ob2RlLnByb3RvdHlwZSA9IGhpZXJhcmNoeS5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBOb2RlLFxuICBjb3VudDogbm9kZV9jb3VudCxcbiAgZWFjaDogbm9kZV9lYWNoLFxuICBlYWNoQWZ0ZXI6IG5vZGVfZWFjaEFmdGVyLFxuICBlYWNoQmVmb3JlOiBub2RlX2VhY2hCZWZvcmUsXG4gIGZpbmQ6IG5vZGVfZmluZCxcbiAgc3VtOiBub2RlX3N1bSxcbiAgc29ydDogbm9kZV9zb3J0LFxuICBwYXRoOiBub2RlX3BhdGgsXG4gIGFuY2VzdG9yczogbm9kZV9hbmNlc3RvcnMsXG4gIGRlc2NlbmRhbnRzOiBub2RlX2Rlc2NlbmRhbnRzLFxuICBsZWF2ZXM6IG5vZGVfbGVhdmVzLFxuICBsaW5rczogbm9kZV9saW5rcyxcbiAgY29weTogbm9kZV9jb3B5LFxuICBbU3ltYm9sLml0ZXJhdG9yXTogbm9kZV9pdGVyYXRvclxufTtcbiIsICJleHBvcnQgZnVuY3Rpb24gb3B0aW9uYWwoZikge1xuICByZXR1cm4gZiA9PSBudWxsID8gbnVsbCA6IHJlcXVpcmVkKGYpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZWQoZikge1xuICBpZiAodHlwZW9mIGYgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yO1xuICByZXR1cm4gZjtcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gY29uc3RhbnRaZXJvKCkge1xuICByZXR1cm4gMDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obm9kZSkge1xuICBub2RlLngwID0gTWF0aC5yb3VuZChub2RlLngwKTtcbiAgbm9kZS55MCA9IE1hdGgucm91bmQobm9kZS55MCk7XG4gIG5vZGUueDEgPSBNYXRoLnJvdW5kKG5vZGUueDEpO1xuICBub2RlLnkxID0gTWF0aC5yb3VuZChub2RlLnkxKTtcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihwYXJlbnQsIHgwLCB5MCwgeDEsIHkxKSB7XG4gIHZhciBub2RlcyA9IHBhcmVudC5jaGlsZHJlbixcbiAgICAgIG5vZGUsXG4gICAgICBpID0gLTEsXG4gICAgICBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgayA9IHBhcmVudC52YWx1ZSAmJiAoeDEgLSB4MCkgLyBwYXJlbnQudmFsdWU7XG5cbiAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICBub2RlID0gbm9kZXNbaV0sIG5vZGUueTAgPSB5MCwgbm9kZS55MSA9IHkxO1xuICAgIG5vZGUueDAgPSB4MCwgbm9kZS54MSA9IHgwICs9IG5vZGUudmFsdWUgKiBrO1xuICB9XG59XG4iLCAiaW1wb3J0IHJvdW5kTm9kZSBmcm9tIFwiLi90cmVlbWFwL3JvdW5kLmpzXCI7XG5pbXBvcnQgdHJlZW1hcERpY2UgZnJvbSBcIi4vdHJlZW1hcC9kaWNlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgZHggPSAxLFxuICAgICAgZHkgPSAxLFxuICAgICAgcGFkZGluZyA9IDAsXG4gICAgICByb3VuZCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIHBhcnRpdGlvbihyb290KSB7XG4gICAgdmFyIG4gPSByb290LmhlaWdodCArIDE7XG4gICAgcm9vdC54MCA9XG4gICAgcm9vdC55MCA9IHBhZGRpbmc7XG4gICAgcm9vdC54MSA9IGR4O1xuICAgIHJvb3QueTEgPSBkeSAvIG47XG4gICAgcm9vdC5lYWNoQmVmb3JlKHBvc2l0aW9uTm9kZShkeSwgbikpO1xuICAgIGlmIChyb3VuZCkgcm9vdC5lYWNoQmVmb3JlKHJvdW5kTm9kZSk7XG4gICAgcmV0dXJuIHJvb3Q7XG4gIH1cblxuICBmdW5jdGlvbiBwb3NpdGlvbk5vZGUoZHksIG4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24obm9kZSkge1xuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgdHJlZW1hcERpY2Uobm9kZSwgbm9kZS54MCwgZHkgKiAobm9kZS5kZXB0aCArIDEpIC8gbiwgbm9kZS54MSwgZHkgKiAobm9kZS5kZXB0aCArIDIpIC8gbik7XG4gICAgICB9XG4gICAgICB2YXIgeDAgPSBub2RlLngwLFxuICAgICAgICAgIHkwID0gbm9kZS55MCxcbiAgICAgICAgICB4MSA9IG5vZGUueDEgLSBwYWRkaW5nLFxuICAgICAgICAgIHkxID0gbm9kZS55MSAtIHBhZGRpbmc7XG4gICAgICBpZiAoeDEgPCB4MCkgeDAgPSB4MSA9ICh4MCArIHgxKSAvIDI7XG4gICAgICBpZiAoeTEgPCB5MCkgeTAgPSB5MSA9ICh5MCArIHkxKSAvIDI7XG4gICAgICBub2RlLngwID0geDA7XG4gICAgICBub2RlLnkwID0geTA7XG4gICAgICBub2RlLngxID0geDE7XG4gICAgICBub2RlLnkxID0geTE7XG4gICAgfTtcbiAgfVxuXG4gIHBhcnRpdGlvbi5yb3VuZCA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyb3VuZCA9ICEheCwgcGFydGl0aW9uKSA6IHJvdW5kO1xuICB9O1xuXG4gIHBhcnRpdGlvbi5zaXplID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGR4ID0gK3hbMF0sIGR5ID0gK3hbMV0sIHBhcnRpdGlvbikgOiBbZHgsIGR5XTtcbiAgfTtcblxuICBwYXJ0aXRpb24ucGFkZGluZyA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwYWRkaW5nID0gK3gsIHBhcnRpdGlvbikgOiBwYWRkaW5nO1xuICB9O1xuXG4gIHJldHVybiBwYXJ0aXRpb247XG59XG4iLCAiaW1wb3J0IHtyZXF1aXJlZH0gZnJvbSBcIi4vYWNjZXNzb3JzLmpzXCI7XG5pbXBvcnQge05vZGUsIGNvbXB1dGVIZWlnaHR9IGZyb20gXCIuL2hpZXJhcmNoeS9pbmRleC5qc1wiO1xuXG52YXIgcHJlcm9vdCA9IHtkZXB0aDogLTF9LFxuICAgIGFtYmlndW91cyA9IHt9O1xuXG5mdW5jdGlvbiBkZWZhdWx0SWQoZCkge1xuICByZXR1cm4gZC5pZDtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFBhcmVudElkKGQpIHtcbiAgcmV0dXJuIGQucGFyZW50SWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgaWQgPSBkZWZhdWx0SWQsXG4gICAgICBwYXJlbnRJZCA9IGRlZmF1bHRQYXJlbnRJZDtcblxuICBmdW5jdGlvbiBzdHJhdGlmeShkYXRhKSB7XG4gICAgdmFyIG5vZGVzID0gQXJyYXkuZnJvbShkYXRhKSxcbiAgICAgICAgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgICAgZCxcbiAgICAgICAgaSxcbiAgICAgICAgcm9vdCxcbiAgICAgICAgcGFyZW50LFxuICAgICAgICBub2RlLFxuICAgICAgICBub2RlSWQsXG4gICAgICAgIG5vZGVLZXksXG4gICAgICAgIG5vZGVCeUtleSA9IG5ldyBNYXA7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBkID0gbm9kZXNbaV0sIG5vZGUgPSBub2Rlc1tpXSA9IG5ldyBOb2RlKGQpO1xuICAgICAgaWYgKChub2RlSWQgPSBpZChkLCBpLCBkYXRhKSkgIT0gbnVsbCAmJiAobm9kZUlkICs9IFwiXCIpKSB7XG4gICAgICAgIG5vZGVLZXkgPSBub2RlLmlkID0gbm9kZUlkO1xuICAgICAgICBub2RlQnlLZXkuc2V0KG5vZGVLZXksIG5vZGVCeUtleS5oYXMobm9kZUtleSkgPyBhbWJpZ3VvdXMgOiBub2RlKTtcbiAgICAgIH1cbiAgICAgIGlmICgobm9kZUlkID0gcGFyZW50SWQoZCwgaSwgZGF0YSkpICE9IG51bGwgJiYgKG5vZGVJZCArPSBcIlwiKSkge1xuICAgICAgICBub2RlLnBhcmVudCA9IG5vZGVJZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV07XG4gICAgICBpZiAobm9kZUlkID0gbm9kZS5wYXJlbnQpIHtcbiAgICAgICAgcGFyZW50ID0gbm9kZUJ5S2V5LmdldChub2RlSWQpO1xuICAgICAgICBpZiAoIXBhcmVudCkgdGhyb3cgbmV3IEVycm9yKFwibWlzc2luZzogXCIgKyBub2RlSWQpO1xuICAgICAgICBpZiAocGFyZW50ID09PSBhbWJpZ3VvdXMpIHRocm93IG5ldyBFcnJvcihcImFtYmlndW91czogXCIgKyBub2RlSWQpO1xuICAgICAgICBpZiAocGFyZW50LmNoaWxkcmVuKSBwYXJlbnQuY2hpbGRyZW4ucHVzaChub2RlKTtcbiAgICAgICAgZWxzZSBwYXJlbnQuY2hpbGRyZW4gPSBbbm9kZV07XG4gICAgICAgIG5vZGUucGFyZW50ID0gcGFyZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJvb3QpIHRocm93IG5ldyBFcnJvcihcIm11bHRpcGxlIHJvb3RzXCIpO1xuICAgICAgICByb290ID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXJvb3QpIHRocm93IG5ldyBFcnJvcihcIm5vIHJvb3RcIik7XG4gICAgcm9vdC5wYXJlbnQgPSBwcmVyb290O1xuICAgIHJvb3QuZWFjaEJlZm9yZShmdW5jdGlvbihub2RlKSB7IG5vZGUuZGVwdGggPSBub2RlLnBhcmVudC5kZXB0aCArIDE7IC0tbjsgfSkuZWFjaEJlZm9yZShjb21wdXRlSGVpZ2h0KTtcbiAgICByb290LnBhcmVudCA9IG51bGw7XG4gICAgaWYgKG4gPiAwKSB0aHJvdyBuZXcgRXJyb3IoXCJjeWNsZVwiKTtcblxuICAgIHJldHVybiByb290O1xuICB9XG5cbiAgc3RyYXRpZnkuaWQgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaWQgPSByZXF1aXJlZCh4KSwgc3RyYXRpZnkpIDogaWQ7XG4gIH07XG5cbiAgc3RyYXRpZnkucGFyZW50SWQgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFyZW50SWQgPSByZXF1aXJlZCh4KSwgc3RyYXRpZnkpIDogcGFyZW50SWQ7XG4gIH07XG5cbiAgcmV0dXJuIHN0cmF0aWZ5O1xufVxuIiwgImltcG9ydCB7Tm9kZX0gZnJvbSBcIi4vaGllcmFyY2h5L2luZGV4LmpzXCI7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXBhcmF0aW9uKGEsIGIpIHtcbiAgcmV0dXJuIGEucGFyZW50ID09PSBiLnBhcmVudCA/IDEgOiAyO1xufVxuXG4vLyBmdW5jdGlvbiByYWRpYWxTZXBhcmF0aW9uKGEsIGIpIHtcbi8vICAgcmV0dXJuIChhLnBhcmVudCA9PT0gYi5wYXJlbnQgPyAxIDogMikgLyBhLmRlcHRoO1xuLy8gfVxuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gdHJhdmVyc2UgdGhlIGxlZnQgY29udG91ciBvZiBhIHN1YnRyZWUgKG9yXG4vLyBzdWJmb3Jlc3QpLiBJdCByZXR1cm5zIHRoZSBzdWNjZXNzb3Igb2YgdiBvbiB0aGlzIGNvbnRvdXIuIFRoaXMgc3VjY2Vzc29yIGlzXG4vLyBlaXRoZXIgZ2l2ZW4gYnkgdGhlIGxlZnRtb3N0IGNoaWxkIG9mIHYgb3IgYnkgdGhlIHRocmVhZCBvZiB2LiBUaGUgZnVuY3Rpb25cbi8vIHJldHVybnMgbnVsbCBpZiBhbmQgb25seSBpZiB2IGlzIG9uIHRoZSBoaWdoZXN0IGxldmVsIG9mIGl0cyBzdWJ0cmVlLlxuZnVuY3Rpb24gbmV4dExlZnQodikge1xuICB2YXIgY2hpbGRyZW4gPSB2LmNoaWxkcmVuO1xuICByZXR1cm4gY2hpbGRyZW4gPyBjaGlsZHJlblswXSA6IHYudDtcbn1cblxuLy8gVGhpcyBmdW5jdGlvbiB3b3JrcyBhbmFsb2dvdXNseSB0byBuZXh0TGVmdC5cbmZ1bmN0aW9uIG5leHRSaWdodCh2KSB7XG4gIHZhciBjaGlsZHJlbiA9IHYuY2hpbGRyZW47XG4gIHJldHVybiBjaGlsZHJlbiA/IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdIDogdi50O1xufVxuXG4vLyBTaGlmdHMgdGhlIGN1cnJlbnQgc3VidHJlZSByb290ZWQgYXQgdysuIFRoaXMgaXMgZG9uZSBieSBpbmNyZWFzaW5nXG4vLyBwcmVsaW0odyspIGFuZCBtb2QodyspIGJ5IHNoaWZ0LlxuZnVuY3Rpb24gbW92ZVN1YnRyZWUod20sIHdwLCBzaGlmdCkge1xuICB2YXIgY2hhbmdlID0gc2hpZnQgLyAod3AuaSAtIHdtLmkpO1xuICB3cC5jIC09IGNoYW5nZTtcbiAgd3AucyArPSBzaGlmdDtcbiAgd20uYyArPSBjaGFuZ2U7XG4gIHdwLnogKz0gc2hpZnQ7XG4gIHdwLm0gKz0gc2hpZnQ7XG59XG5cbi8vIEFsbCBvdGhlciBzaGlmdHMsIGFwcGxpZWQgdG8gdGhlIHNtYWxsZXIgc3VidHJlZXMgYmV0d2VlbiB3LSBhbmQgdyssIGFyZVxuLy8gcGVyZm9ybWVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIHByZXBhcmUgdGhlIHNoaWZ0cywgd2UgaGF2ZSB0byBhZGp1c3Rcbi8vIGNoYW5nZSh3KyksIHNoaWZ0KHcrKSwgYW5kIGNoYW5nZSh3LSkuXG5mdW5jdGlvbiBleGVjdXRlU2hpZnRzKHYpIHtcbiAgdmFyIHNoaWZ0ID0gMCxcbiAgICAgIGNoYW5nZSA9IDAsXG4gICAgICBjaGlsZHJlbiA9IHYuY2hpbGRyZW4sXG4gICAgICBpID0gY2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgdztcbiAgd2hpbGUgKC0taSA+PSAwKSB7XG4gICAgdyA9IGNoaWxkcmVuW2ldO1xuICAgIHcueiArPSBzaGlmdDtcbiAgICB3Lm0gKz0gc2hpZnQ7XG4gICAgc2hpZnQgKz0gdy5zICsgKGNoYW5nZSArPSB3LmMpO1xuICB9XG59XG5cbi8vIElmIHZpLVx1MjAxOXMgYW5jZXN0b3IgaXMgYSBzaWJsaW5nIG9mIHYsIHJldHVybnMgdmktXHUyMDE5cyBhbmNlc3Rvci4gT3RoZXJ3aXNlLFxuLy8gcmV0dXJucyB0aGUgc3BlY2lmaWVkIChkZWZhdWx0KSBhbmNlc3Rvci5cbmZ1bmN0aW9uIG5leHRBbmNlc3Rvcih2aW0sIHYsIGFuY2VzdG9yKSB7XG4gIHJldHVybiB2aW0uYS5wYXJlbnQgPT09IHYucGFyZW50ID8gdmltLmEgOiBhbmNlc3Rvcjtcbn1cblxuZnVuY3Rpb24gVHJlZU5vZGUobm9kZSwgaSkge1xuICB0aGlzLl8gPSBub2RlO1xuICB0aGlzLnBhcmVudCA9IG51bGw7XG4gIHRoaXMuY2hpbGRyZW4gPSBudWxsO1xuICB0aGlzLkEgPSBudWxsOyAvLyBkZWZhdWx0IGFuY2VzdG9yXG4gIHRoaXMuYSA9IHRoaXM7IC8vIGFuY2VzdG9yXG4gIHRoaXMueiA9IDA7IC8vIHByZWxpbVxuICB0aGlzLm0gPSAwOyAvLyBtb2RcbiAgdGhpcy5jID0gMDsgLy8gY2hhbmdlXG4gIHRoaXMucyA9IDA7IC8vIHNoaWZ0XG4gIHRoaXMudCA9IG51bGw7IC8vIHRocmVhZFxuICB0aGlzLmkgPSBpOyAvLyBudW1iZXJcbn1cblxuVHJlZU5vZGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShOb2RlLnByb3RvdHlwZSk7XG5cbmZ1bmN0aW9uIHRyZWVSb290KHJvb3QpIHtcbiAgdmFyIHRyZWUgPSBuZXcgVHJlZU5vZGUocm9vdCwgMCksXG4gICAgICBub2RlLFxuICAgICAgbm9kZXMgPSBbdHJlZV0sXG4gICAgICBjaGlsZCxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgaSxcbiAgICAgIG47XG5cbiAgd2hpbGUgKG5vZGUgPSBub2Rlcy5wb3AoKSkge1xuICAgIGlmIChjaGlsZHJlbiA9IG5vZGUuXy5jaGlsZHJlbikge1xuICAgICAgbm9kZS5jaGlsZHJlbiA9IG5ldyBBcnJheShuID0gY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgIGZvciAoaSA9IG4gLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICBub2Rlcy5wdXNoKGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXSA9IG5ldyBUcmVlTm9kZShjaGlsZHJlbltpXSwgaSkpO1xuICAgICAgICBjaGlsZC5wYXJlbnQgPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICh0cmVlLnBhcmVudCA9IG5ldyBUcmVlTm9kZShudWxsLCAwKSkuY2hpbGRyZW4gPSBbdHJlZV07XG4gIHJldHVybiB0cmVlO1xufVxuXG4vLyBOb2RlLWxpbmsgdHJlZSBkaWFncmFtIHVzaW5nIHRoZSBSZWluZ29sZC1UaWxmb3JkIFwidGlkeVwiIGFsZ29yaXRobVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBzZXBhcmF0aW9uID0gZGVmYXVsdFNlcGFyYXRpb24sXG4gICAgICBkeCA9IDEsXG4gICAgICBkeSA9IDEsXG4gICAgICBub2RlU2l6ZSA9IG51bGw7XG5cbiAgZnVuY3Rpb24gdHJlZShyb290KSB7XG4gICAgdmFyIHQgPSB0cmVlUm9vdChyb290KTtcblxuICAgIC8vIENvbXB1dGUgdGhlIGxheW91dCB1c2luZyBCdWNoaGVpbSBldCBhbC5cdTIwMTlzIGFsZ29yaXRobS5cbiAgICB0LmVhY2hBZnRlcihmaXJzdFdhbGspLCB0LnBhcmVudC5tID0gLXQuejtcbiAgICB0LmVhY2hCZWZvcmUoc2Vjb25kV2Fsayk7XG5cbiAgICAvLyBJZiBhIGZpeGVkIG5vZGUgc2l6ZSBpcyBzcGVjaWZpZWQsIHNjYWxlIHggYW5kIHkuXG4gICAgaWYgKG5vZGVTaXplKSByb290LmVhY2hCZWZvcmUoc2l6ZU5vZGUpO1xuXG4gICAgLy8gSWYgYSBmaXhlZCB0cmVlIHNpemUgaXMgc3BlY2lmaWVkLCBzY2FsZSB4IGFuZCB5IGJhc2VkIG9uIHRoZSBleHRlbnQuXG4gICAgLy8gQ29tcHV0ZSB0aGUgbGVmdC1tb3N0LCByaWdodC1tb3N0LCBhbmQgZGVwdGgtbW9zdCBub2RlcyBmb3IgZXh0ZW50cy5cbiAgICBlbHNlIHtcbiAgICAgIHZhciBsZWZ0ID0gcm9vdCxcbiAgICAgICAgICByaWdodCA9IHJvb3QsXG4gICAgICAgICAgYm90dG9tID0gcm9vdDtcbiAgICAgIHJvb3QuZWFjaEJlZm9yZShmdW5jdGlvbihub2RlKSB7XG4gICAgICAgIGlmIChub2RlLnggPCBsZWZ0LngpIGxlZnQgPSBub2RlO1xuICAgICAgICBpZiAobm9kZS54ID4gcmlnaHQueCkgcmlnaHQgPSBub2RlO1xuICAgICAgICBpZiAobm9kZS5kZXB0aCA+IGJvdHRvbS5kZXB0aCkgYm90dG9tID0gbm9kZTtcbiAgICAgIH0pO1xuICAgICAgdmFyIHMgPSBsZWZ0ID09PSByaWdodCA/IDEgOiBzZXBhcmF0aW9uKGxlZnQsIHJpZ2h0KSAvIDIsXG4gICAgICAgICAgdHggPSBzIC0gbGVmdC54LFxuICAgICAgICAgIGt4ID0gZHggLyAocmlnaHQueCArIHMgKyB0eCksXG4gICAgICAgICAga3kgPSBkeSAvIChib3R0b20uZGVwdGggfHwgMSk7XG4gICAgICByb290LmVhY2hCZWZvcmUoZnVuY3Rpb24obm9kZSkge1xuICAgICAgICBub2RlLnggPSAobm9kZS54ICsgdHgpICoga3g7XG4gICAgICAgIG5vZGUueSA9IG5vZGUuZGVwdGggKiBreTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByb290O1xuICB9XG5cbiAgLy8gQ29tcHV0ZXMgYSBwcmVsaW1pbmFyeSB4LWNvb3JkaW5hdGUgZm9yIHYuIEJlZm9yZSB0aGF0LCBGSVJTVCBXQUxLIGlzXG4gIC8vIGFwcGxpZWQgcmVjdXJzaXZlbHkgdG8gdGhlIGNoaWxkcmVuIG9mIHYsIGFzIHdlbGwgYXMgdGhlIGZ1bmN0aW9uXG4gIC8vIEFQUE9SVElPTi4gQWZ0ZXIgc3BhY2luZyBvdXQgdGhlIGNoaWxkcmVuIGJ5IGNhbGxpbmcgRVhFQ1VURSBTSElGVFMsIHRoZVxuICAvLyBub2RlIHYgaXMgcGxhY2VkIHRvIHRoZSBtaWRwb2ludCBvZiBpdHMgb3V0ZXJtb3N0IGNoaWxkcmVuLlxuICBmdW5jdGlvbiBmaXJzdFdhbGsodikge1xuICAgIHZhciBjaGlsZHJlbiA9IHYuY2hpbGRyZW4sXG4gICAgICAgIHNpYmxpbmdzID0gdi5wYXJlbnQuY2hpbGRyZW4sXG4gICAgICAgIHcgPSB2LmkgPyBzaWJsaW5nc1t2LmkgLSAxXSA6IG51bGw7XG4gICAgaWYgKGNoaWxkcmVuKSB7XG4gICAgICBleGVjdXRlU2hpZnRzKHYpO1xuICAgICAgdmFyIG1pZHBvaW50ID0gKGNoaWxkcmVuWzBdLnogKyBjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAxXS56KSAvIDI7XG4gICAgICBpZiAodykge1xuICAgICAgICB2LnogPSB3LnogKyBzZXBhcmF0aW9uKHYuXywgdy5fKTtcbiAgICAgICAgdi5tID0gdi56IC0gbWlkcG9pbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2LnogPSBtaWRwb2ludDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHcpIHtcbiAgICAgIHYueiA9IHcueiArIHNlcGFyYXRpb24odi5fLCB3Ll8pO1xuICAgIH1cbiAgICB2LnBhcmVudC5BID0gYXBwb3J0aW9uKHYsIHcsIHYucGFyZW50LkEgfHwgc2libGluZ3NbMF0pO1xuICB9XG5cbiAgLy8gQ29tcHV0ZXMgYWxsIHJlYWwgeC1jb29yZGluYXRlcyBieSBzdW1taW5nIHVwIHRoZSBtb2RpZmllcnMgcmVjdXJzaXZlbHkuXG4gIGZ1bmN0aW9uIHNlY29uZFdhbGsodikge1xuICAgIHYuXy54ID0gdi56ICsgdi5wYXJlbnQubTtcbiAgICB2Lm0gKz0gdi5wYXJlbnQubTtcbiAgfVxuXG4gIC8vIFRoZSBjb3JlIG9mIHRoZSBhbGdvcml0aG0uIEhlcmUsIGEgbmV3IHN1YnRyZWUgaXMgY29tYmluZWQgd2l0aCB0aGVcbiAgLy8gcHJldmlvdXMgc3VidHJlZXMuIFRocmVhZHMgYXJlIHVzZWQgdG8gdHJhdmVyc2UgdGhlIGluc2lkZSBhbmQgb3V0c2lkZVxuICAvLyBjb250b3VycyBvZiB0aGUgbGVmdCBhbmQgcmlnaHQgc3VidHJlZSB1cCB0byB0aGUgaGlnaGVzdCBjb21tb24gbGV2ZWwuIFRoZVxuICAvLyB2ZXJ0aWNlcyB1c2VkIGZvciB0aGUgdHJhdmVyc2FscyBhcmUgdmkrLCB2aS0sIHZvLSwgYW5kIHZvKywgd2hlcmUgdGhlXG4gIC8vIHN1cGVyc2NyaXB0IG8gbWVhbnMgb3V0c2lkZSBhbmQgaSBtZWFucyBpbnNpZGUsIHRoZSBzdWJzY3JpcHQgLSBtZWFucyBsZWZ0XG4gIC8vIHN1YnRyZWUgYW5kICsgbWVhbnMgcmlnaHQgc3VidHJlZS4gRm9yIHN1bW1pbmcgdXAgdGhlIG1vZGlmaWVycyBhbG9uZyB0aGVcbiAgLy8gY29udG91ciwgd2UgdXNlIHJlc3BlY3RpdmUgdmFyaWFibGVzIHNpKywgc2ktLCBzby0sIGFuZCBzbysuIFdoZW5ldmVyIHR3b1xuICAvLyBub2RlcyBvZiB0aGUgaW5zaWRlIGNvbnRvdXJzIGNvbmZsaWN0LCB3ZSBjb21wdXRlIHRoZSBsZWZ0IG9uZSBvZiB0aGVcbiAgLy8gZ3JlYXRlc3QgdW5jb21tb24gYW5jZXN0b3JzIHVzaW5nIHRoZSBmdW5jdGlvbiBBTkNFU1RPUiBhbmQgY2FsbCBNT1ZFXG4gIC8vIFNVQlRSRUUgdG8gc2hpZnQgdGhlIHN1YnRyZWUgYW5kIHByZXBhcmUgdGhlIHNoaWZ0cyBvZiBzbWFsbGVyIHN1YnRyZWVzLlxuICAvLyBGaW5hbGx5LCB3ZSBhZGQgYSBuZXcgdGhyZWFkIChpZiBuZWNlc3NhcnkpLlxuICBmdW5jdGlvbiBhcHBvcnRpb24odiwgdywgYW5jZXN0b3IpIHtcbiAgICBpZiAodykge1xuICAgICAgdmFyIHZpcCA9IHYsXG4gICAgICAgICAgdm9wID0gdixcbiAgICAgICAgICB2aW0gPSB3LFxuICAgICAgICAgIHZvbSA9IHZpcC5wYXJlbnQuY2hpbGRyZW5bMF0sXG4gICAgICAgICAgc2lwID0gdmlwLm0sXG4gICAgICAgICAgc29wID0gdm9wLm0sXG4gICAgICAgICAgc2ltID0gdmltLm0sXG4gICAgICAgICAgc29tID0gdm9tLm0sXG4gICAgICAgICAgc2hpZnQ7XG4gICAgICB3aGlsZSAodmltID0gbmV4dFJpZ2h0KHZpbSksIHZpcCA9IG5leHRMZWZ0KHZpcCksIHZpbSAmJiB2aXApIHtcbiAgICAgICAgdm9tID0gbmV4dExlZnQodm9tKTtcbiAgICAgICAgdm9wID0gbmV4dFJpZ2h0KHZvcCk7XG4gICAgICAgIHZvcC5hID0gdjtcbiAgICAgICAgc2hpZnQgPSB2aW0ueiArIHNpbSAtIHZpcC56IC0gc2lwICsgc2VwYXJhdGlvbih2aW0uXywgdmlwLl8pO1xuICAgICAgICBpZiAoc2hpZnQgPiAwKSB7XG4gICAgICAgICAgbW92ZVN1YnRyZWUobmV4dEFuY2VzdG9yKHZpbSwgdiwgYW5jZXN0b3IpLCB2LCBzaGlmdCk7XG4gICAgICAgICAgc2lwICs9IHNoaWZ0O1xuICAgICAgICAgIHNvcCArPSBzaGlmdDtcbiAgICAgICAgfVxuICAgICAgICBzaW0gKz0gdmltLm07XG4gICAgICAgIHNpcCArPSB2aXAubTtcbiAgICAgICAgc29tICs9IHZvbS5tO1xuICAgICAgICBzb3AgKz0gdm9wLm07XG4gICAgICB9XG4gICAgICBpZiAodmltICYmICFuZXh0UmlnaHQodm9wKSkge1xuICAgICAgICB2b3AudCA9IHZpbTtcbiAgICAgICAgdm9wLm0gKz0gc2ltIC0gc29wO1xuICAgICAgfVxuICAgICAgaWYgKHZpcCAmJiAhbmV4dExlZnQodm9tKSkge1xuICAgICAgICB2b20udCA9IHZpcDtcbiAgICAgICAgdm9tLm0gKz0gc2lwIC0gc29tO1xuICAgICAgICBhbmNlc3RvciA9IHY7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhbmNlc3RvcjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNpemVOb2RlKG5vZGUpIHtcbiAgICBub2RlLnggKj0gZHg7XG4gICAgbm9kZS55ID0gbm9kZS5kZXB0aCAqIGR5O1xuICB9XG5cbiAgdHJlZS5zZXBhcmF0aW9uID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNlcGFyYXRpb24gPSB4LCB0cmVlKSA6IHNlcGFyYXRpb247XG4gIH07XG5cbiAgdHJlZS5zaXplID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG5vZGVTaXplID0gZmFsc2UsIGR4ID0gK3hbMF0sIGR5ID0gK3hbMV0sIHRyZWUpIDogKG5vZGVTaXplID8gbnVsbCA6IFtkeCwgZHldKTtcbiAgfTtcblxuICB0cmVlLm5vZGVTaXplID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG5vZGVTaXplID0gdHJ1ZSwgZHggPSAreFswXSwgZHkgPSAreFsxXSwgdHJlZSkgOiAobm9kZVNpemUgPyBbZHgsIGR5XSA6IG51bGwpO1xuICB9O1xuXG4gIHJldHVybiB0cmVlO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHBhcmVudCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgdmFyIG5vZGVzID0gcGFyZW50LmNoaWxkcmVuLFxuICAgICAgbm9kZSxcbiAgICAgIGkgPSAtMSxcbiAgICAgIG4gPSBub2Rlcy5sZW5ndGgsXG4gICAgICBrID0gcGFyZW50LnZhbHVlICYmICh5MSAtIHkwKSAvIHBhcmVudC52YWx1ZTtcblxuICB3aGlsZSAoKytpIDwgbikge1xuICAgIG5vZGUgPSBub2Rlc1tpXSwgbm9kZS54MCA9IHgwLCBub2RlLngxID0geDE7XG4gICAgbm9kZS55MCA9IHkwLCBub2RlLnkxID0geTAgKz0gbm9kZS52YWx1ZSAqIGs7XG4gIH1cbn1cbiIsICJpbXBvcnQgdHJlZW1hcERpY2UgZnJvbSBcIi4vZGljZS5qc1wiO1xuaW1wb3J0IHRyZWVtYXBTbGljZSBmcm9tIFwiLi9zbGljZS5qc1wiO1xuXG5leHBvcnQgdmFyIHBoaSA9ICgxICsgTWF0aC5zcXJ0KDUpKSAvIDI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzcXVhcmlmeVJhdGlvKHJhdGlvLCBwYXJlbnQsIHgwLCB5MCwgeDEsIHkxKSB7XG4gIHZhciByb3dzID0gW10sXG4gICAgICBub2RlcyA9IHBhcmVudC5jaGlsZHJlbixcbiAgICAgIHJvdyxcbiAgICAgIG5vZGVWYWx1ZSxcbiAgICAgIGkwID0gMCxcbiAgICAgIGkxID0gMCxcbiAgICAgIG4gPSBub2Rlcy5sZW5ndGgsXG4gICAgICBkeCwgZHksXG4gICAgICB2YWx1ZSA9IHBhcmVudC52YWx1ZSxcbiAgICAgIHN1bVZhbHVlLFxuICAgICAgbWluVmFsdWUsXG4gICAgICBtYXhWYWx1ZSxcbiAgICAgIG5ld1JhdGlvLFxuICAgICAgbWluUmF0aW8sXG4gICAgICBhbHBoYSxcbiAgICAgIGJldGE7XG5cbiAgd2hpbGUgKGkwIDwgbikge1xuICAgIGR4ID0geDEgLSB4MCwgZHkgPSB5MSAtIHkwO1xuXG4gICAgLy8gRmluZCB0aGUgbmV4dCBub24tZW1wdHkgbm9kZS5cbiAgICBkbyBzdW1WYWx1ZSA9IG5vZGVzW2kxKytdLnZhbHVlOyB3aGlsZSAoIXN1bVZhbHVlICYmIGkxIDwgbik7XG4gICAgbWluVmFsdWUgPSBtYXhWYWx1ZSA9IHN1bVZhbHVlO1xuICAgIGFscGhhID0gTWF0aC5tYXgoZHkgLyBkeCwgZHggLyBkeSkgLyAodmFsdWUgKiByYXRpbyk7XG4gICAgYmV0YSA9IHN1bVZhbHVlICogc3VtVmFsdWUgKiBhbHBoYTtcbiAgICBtaW5SYXRpbyA9IE1hdGgubWF4KG1heFZhbHVlIC8gYmV0YSwgYmV0YSAvIG1pblZhbHVlKTtcblxuICAgIC8vIEtlZXAgYWRkaW5nIG5vZGVzIHdoaWxlIHRoZSBhc3BlY3QgcmF0aW8gbWFpbnRhaW5zIG9yIGltcHJvdmVzLlxuICAgIGZvciAoOyBpMSA8IG47ICsraTEpIHtcbiAgICAgIHN1bVZhbHVlICs9IG5vZGVWYWx1ZSA9IG5vZGVzW2kxXS52YWx1ZTtcbiAgICAgIGlmIChub2RlVmFsdWUgPCBtaW5WYWx1ZSkgbWluVmFsdWUgPSBub2RlVmFsdWU7XG4gICAgICBpZiAobm9kZVZhbHVlID4gbWF4VmFsdWUpIG1heFZhbHVlID0gbm9kZVZhbHVlO1xuICAgICAgYmV0YSA9IHN1bVZhbHVlICogc3VtVmFsdWUgKiBhbHBoYTtcbiAgICAgIG5ld1JhdGlvID0gTWF0aC5tYXgobWF4VmFsdWUgLyBiZXRhLCBiZXRhIC8gbWluVmFsdWUpO1xuICAgICAgaWYgKG5ld1JhdGlvID4gbWluUmF0aW8pIHsgc3VtVmFsdWUgLT0gbm9kZVZhbHVlOyBicmVhazsgfVxuICAgICAgbWluUmF0aW8gPSBuZXdSYXRpbztcbiAgICB9XG5cbiAgICAvLyBQb3NpdGlvbiBhbmQgcmVjb3JkIHRoZSByb3cgb3JpZW50YXRpb24uXG4gICAgcm93cy5wdXNoKHJvdyA9IHt2YWx1ZTogc3VtVmFsdWUsIGRpY2U6IGR4IDwgZHksIGNoaWxkcmVuOiBub2Rlcy5zbGljZShpMCwgaTEpfSk7XG4gICAgaWYgKHJvdy5kaWNlKSB0cmVlbWFwRGljZShyb3csIHgwLCB5MCwgeDEsIHZhbHVlID8geTAgKz0gZHkgKiBzdW1WYWx1ZSAvIHZhbHVlIDogeTEpO1xuICAgIGVsc2UgdHJlZW1hcFNsaWNlKHJvdywgeDAsIHkwLCB2YWx1ZSA/IHgwICs9IGR4ICogc3VtVmFsdWUgLyB2YWx1ZSA6IHgxLCB5MSk7XG4gICAgdmFsdWUgLT0gc3VtVmFsdWUsIGkwID0gaTE7XG4gIH1cblxuICByZXR1cm4gcm93cztcbn1cblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbShyYXRpbykge1xuXG4gIGZ1bmN0aW9uIHNxdWFyaWZ5KHBhcmVudCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgICBzcXVhcmlmeVJhdGlvKHJhdGlvLCBwYXJlbnQsIHgwLCB5MCwgeDEsIHkxKTtcbiAgfVxuXG4gIHNxdWFyaWZ5LnJhdGlvID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBjdXN0b20oKHggPSAreCkgPiAxID8geCA6IDEpO1xuICB9O1xuXG4gIHJldHVybiBzcXVhcmlmeTtcbn0pKHBoaSk7XG4iLCAiaW1wb3J0IHJvdW5kTm9kZSBmcm9tIFwiLi9yb3VuZC5qc1wiO1xuaW1wb3J0IHNxdWFyaWZ5IGZyb20gXCIuL3NxdWFyaWZ5LmpzXCI7XG5pbXBvcnQge3JlcXVpcmVkfSBmcm9tIFwiLi4vYWNjZXNzb3JzLmpzXCI7XG5pbXBvcnQgY29uc3RhbnQsIHtjb25zdGFudFplcm99IGZyb20gXCIuLi9jb25zdGFudC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIHRpbGUgPSBzcXVhcmlmeSxcbiAgICAgIHJvdW5kID0gZmFsc2UsXG4gICAgICBkeCA9IDEsXG4gICAgICBkeSA9IDEsXG4gICAgICBwYWRkaW5nU3RhY2sgPSBbMF0sXG4gICAgICBwYWRkaW5nSW5uZXIgPSBjb25zdGFudFplcm8sXG4gICAgICBwYWRkaW5nVG9wID0gY29uc3RhbnRaZXJvLFxuICAgICAgcGFkZGluZ1JpZ2h0ID0gY29uc3RhbnRaZXJvLFxuICAgICAgcGFkZGluZ0JvdHRvbSA9IGNvbnN0YW50WmVybyxcbiAgICAgIHBhZGRpbmdMZWZ0ID0gY29uc3RhbnRaZXJvO1xuXG4gIGZ1bmN0aW9uIHRyZWVtYXAocm9vdCkge1xuICAgIHJvb3QueDAgPVxuICAgIHJvb3QueTAgPSAwO1xuICAgIHJvb3QueDEgPSBkeDtcbiAgICByb290LnkxID0gZHk7XG4gICAgcm9vdC5lYWNoQmVmb3JlKHBvc2l0aW9uTm9kZSk7XG4gICAgcGFkZGluZ1N0YWNrID0gWzBdO1xuICAgIGlmIChyb3VuZCkgcm9vdC5lYWNoQmVmb3JlKHJvdW5kTm9kZSk7XG4gICAgcmV0dXJuIHJvb3Q7XG4gIH1cblxuICBmdW5jdGlvbiBwb3NpdGlvbk5vZGUobm9kZSkge1xuICAgIHZhciBwID0gcGFkZGluZ1N0YWNrW25vZGUuZGVwdGhdLFxuICAgICAgICB4MCA9IG5vZGUueDAgKyBwLFxuICAgICAgICB5MCA9IG5vZGUueTAgKyBwLFxuICAgICAgICB4MSA9IG5vZGUueDEgLSBwLFxuICAgICAgICB5MSA9IG5vZGUueTEgLSBwO1xuICAgIGlmICh4MSA8IHgwKSB4MCA9IHgxID0gKHgwICsgeDEpIC8gMjtcbiAgICBpZiAoeTEgPCB5MCkgeTAgPSB5MSA9ICh5MCArIHkxKSAvIDI7XG4gICAgbm9kZS54MCA9IHgwO1xuICAgIG5vZGUueTAgPSB5MDtcbiAgICBub2RlLngxID0geDE7XG4gICAgbm9kZS55MSA9IHkxO1xuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICBwID0gcGFkZGluZ1N0YWNrW25vZGUuZGVwdGggKyAxXSA9IHBhZGRpbmdJbm5lcihub2RlKSAvIDI7XG4gICAgICB4MCArPSBwYWRkaW5nTGVmdChub2RlKSAtIHA7XG4gICAgICB5MCArPSBwYWRkaW5nVG9wKG5vZGUpIC0gcDtcbiAgICAgIHgxIC09IHBhZGRpbmdSaWdodChub2RlKSAtIHA7XG4gICAgICB5MSAtPSBwYWRkaW5nQm90dG9tKG5vZGUpIC0gcDtcbiAgICAgIGlmICh4MSA8IHgwKSB4MCA9IHgxID0gKHgwICsgeDEpIC8gMjtcbiAgICAgIGlmICh5MSA8IHkwKSB5MCA9IHkxID0gKHkwICsgeTEpIC8gMjtcbiAgICAgIHRpbGUobm9kZSwgeDAsIHkwLCB4MSwgeTEpO1xuICAgIH1cbiAgfVxuXG4gIHRyZWVtYXAucm91bmQgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocm91bmQgPSAhIXgsIHRyZWVtYXApIDogcm91bmQ7XG4gIH07XG5cbiAgdHJlZW1hcC5zaXplID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGR4ID0gK3hbMF0sIGR5ID0gK3hbMV0sIHRyZWVtYXApIDogW2R4LCBkeV07XG4gIH07XG5cbiAgdHJlZW1hcC50aWxlID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRpbGUgPSByZXF1aXJlZCh4KSwgdHJlZW1hcCkgOiB0aWxlO1xuICB9O1xuXG4gIHRyZWVtYXAucGFkZGluZyA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IHRyZWVtYXAucGFkZGluZ0lubmVyKHgpLnBhZGRpbmdPdXRlcih4KSA6IHRyZWVtYXAucGFkZGluZ0lubmVyKCk7XG4gIH07XG5cbiAgdHJlZW1hcC5wYWRkaW5nSW5uZXIgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFkZGluZ0lubmVyID0gdHlwZW9mIHggPT09IFwiZnVuY3Rpb25cIiA/IHggOiBjb25zdGFudCgreCksIHRyZWVtYXApIDogcGFkZGluZ0lubmVyO1xuICB9O1xuXG4gIHRyZWVtYXAucGFkZGluZ091dGVyID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gdHJlZW1hcC5wYWRkaW5nVG9wKHgpLnBhZGRpbmdSaWdodCh4KS5wYWRkaW5nQm90dG9tKHgpLnBhZGRpbmdMZWZ0KHgpIDogdHJlZW1hcC5wYWRkaW5nVG9wKCk7XG4gIH07XG5cbiAgdHJlZW1hcC5wYWRkaW5nVG9wID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhZGRpbmdUb3AgPSB0eXBlb2YgeCA9PT0gXCJmdW5jdGlvblwiID8geCA6IGNvbnN0YW50KCt4KSwgdHJlZW1hcCkgOiBwYWRkaW5nVG9wO1xuICB9O1xuXG4gIHRyZWVtYXAucGFkZGluZ1JpZ2h0ID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhZGRpbmdSaWdodCA9IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyB4IDogY29uc3RhbnQoK3gpLCB0cmVlbWFwKSA6IHBhZGRpbmdSaWdodDtcbiAgfTtcblxuICB0cmVlbWFwLnBhZGRpbmdCb3R0b20gPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFkZGluZ0JvdHRvbSA9IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyB4IDogY29uc3RhbnQoK3gpLCB0cmVlbWFwKSA6IHBhZGRpbmdCb3R0b207XG4gIH07XG5cbiAgdHJlZW1hcC5wYWRkaW5nTGVmdCA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwYWRkaW5nTGVmdCA9IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyB4IDogY29uc3RhbnQoK3gpLCB0cmVlbWFwKSA6IHBhZGRpbmdMZWZ0O1xuICB9O1xuXG4gIHJldHVybiB0cmVlbWFwO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHBhcmVudCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgdmFyIG5vZGVzID0gcGFyZW50LmNoaWxkcmVuLFxuICAgICAgaSwgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgIHN1bSwgc3VtcyA9IG5ldyBBcnJheShuICsgMSk7XG5cbiAgZm9yIChzdW1zWzBdID0gc3VtID0gaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICBzdW1zW2kgKyAxXSA9IHN1bSArPSBub2Rlc1tpXS52YWx1ZTtcbiAgfVxuXG4gIHBhcnRpdGlvbigwLCBuLCBwYXJlbnQudmFsdWUsIHgwLCB5MCwgeDEsIHkxKTtcblxuICBmdW5jdGlvbiBwYXJ0aXRpb24oaSwgaiwgdmFsdWUsIHgwLCB5MCwgeDEsIHkxKSB7XG4gICAgaWYgKGkgPj0gaiAtIDEpIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICBub2RlLngwID0geDAsIG5vZGUueTAgPSB5MDtcbiAgICAgIG5vZGUueDEgPSB4MSwgbm9kZS55MSA9IHkxO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciB2YWx1ZU9mZnNldCA9IHN1bXNbaV0sXG4gICAgICAgIHZhbHVlVGFyZ2V0ID0gKHZhbHVlIC8gMikgKyB2YWx1ZU9mZnNldCxcbiAgICAgICAgayA9IGkgKyAxLFxuICAgICAgICBoaSA9IGogLSAxO1xuXG4gICAgd2hpbGUgKGsgPCBoaSkge1xuICAgICAgdmFyIG1pZCA9IGsgKyBoaSA+Pj4gMTtcbiAgICAgIGlmIChzdW1zW21pZF0gPCB2YWx1ZVRhcmdldCkgayA9IG1pZCArIDE7XG4gICAgICBlbHNlIGhpID0gbWlkO1xuICAgIH1cblxuICAgIGlmICgodmFsdWVUYXJnZXQgLSBzdW1zW2sgLSAxXSkgPCAoc3Vtc1trXSAtIHZhbHVlVGFyZ2V0KSAmJiBpICsgMSA8IGspIC0taztcblxuICAgIHZhciB2YWx1ZUxlZnQgPSBzdW1zW2tdIC0gdmFsdWVPZmZzZXQsXG4gICAgICAgIHZhbHVlUmlnaHQgPSB2YWx1ZSAtIHZhbHVlTGVmdDtcblxuICAgIGlmICgoeDEgLSB4MCkgPiAoeTEgLSB5MCkpIHtcbiAgICAgIHZhciB4ayA9IHZhbHVlID8gKHgwICogdmFsdWVSaWdodCArIHgxICogdmFsdWVMZWZ0KSAvIHZhbHVlIDogeDE7XG4gICAgICBwYXJ0aXRpb24oaSwgaywgdmFsdWVMZWZ0LCB4MCwgeTAsIHhrLCB5MSk7XG4gICAgICBwYXJ0aXRpb24oaywgaiwgdmFsdWVSaWdodCwgeGssIHkwLCB4MSwgeTEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgeWsgPSB2YWx1ZSA/ICh5MCAqIHZhbHVlUmlnaHQgKyB5MSAqIHZhbHVlTGVmdCkgLyB2YWx1ZSA6IHkxO1xuICAgICAgcGFydGl0aW9uKGksIGssIHZhbHVlTGVmdCwgeDAsIHkwLCB4MSwgeWspO1xuICAgICAgcGFydGl0aW9uKGssIGosIHZhbHVlUmlnaHQsIHgwLCB5aywgeDEsIHkxKTtcbiAgICB9XG4gIH1cbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gaW5pdFJhbmdlKGRvbWFpbiwgcmFuZ2UpIHtcbiAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiBicmVhaztcbiAgICBjYXNlIDE6IHRoaXMucmFuZ2UoZG9tYWluKTsgYnJlYWs7XG4gICAgZGVmYXVsdDogdGhpcy5yYW5nZShyYW5nZSkuZG9tYWluKGRvbWFpbik7IGJyZWFrO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdEludGVycG9sYXRvcihkb21haW4sIGludGVycG9sYXRvcikge1xuICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IGJyZWFrO1xuICAgIGNhc2UgMToge1xuICAgICAgaWYgKHR5cGVvZiBkb21haW4gPT09IFwiZnVuY3Rpb25cIikgdGhpcy5pbnRlcnBvbGF0b3IoZG9tYWluKTtcbiAgICAgIGVsc2UgdGhpcy5yYW5nZShkb21haW4pO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHRoaXMuZG9tYWluKGRvbWFpbik7XG4gICAgICBpZiAodHlwZW9mIGludGVycG9sYXRvciA9PT0gXCJmdW5jdGlvblwiKSB0aGlzLmludGVycG9sYXRvcihpbnRlcnBvbGF0b3IpO1xuICAgICAgZWxzZSB0aGlzLnJhbmdlKGludGVycG9sYXRvcik7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG4iLCAiaW1wb3J0IHtpbml0UmFuZ2V9IGZyb20gXCIuL2luaXQuanNcIjtcblxuZXhwb3J0IGNvbnN0IGltcGxpY2l0ID0gU3ltYm9sKFwiaW1wbGljaXRcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9yZGluYWwoKSB7XG4gIHZhciBpbmRleCA9IG5ldyBNYXAoKSxcbiAgICAgIGRvbWFpbiA9IFtdLFxuICAgICAgcmFuZ2UgPSBbXSxcbiAgICAgIHVua25vd24gPSBpbXBsaWNpdDtcblxuICBmdW5jdGlvbiBzY2FsZShkKSB7XG4gICAgdmFyIGtleSA9IGQgKyBcIlwiLCBpID0gaW5kZXguZ2V0KGtleSk7XG4gICAgaWYgKCFpKSB7XG4gICAgICBpZiAodW5rbm93biAhPT0gaW1wbGljaXQpIHJldHVybiB1bmtub3duO1xuICAgICAgaW5kZXguc2V0KGtleSwgaSA9IGRvbWFpbi5wdXNoKGQpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJhbmdlWyhpIC0gMSkgJSByYW5nZS5sZW5ndGhdO1xuICB9XG5cbiAgc2NhbGUuZG9tYWluID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIGRvbWFpbi5zbGljZSgpO1xuICAgIGRvbWFpbiA9IFtdLCBpbmRleCA9IG5ldyBNYXAoKTtcbiAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIF8pIHtcbiAgICAgIGNvbnN0IGtleSA9IHZhbHVlICsgXCJcIjtcbiAgICAgIGlmIChpbmRleC5oYXMoa2V5KSkgY29udGludWU7XG4gICAgICBpbmRleC5zZXQoa2V5LCBkb21haW4ucHVzaCh2YWx1ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gc2NhbGU7XG4gIH07XG5cbiAgc2NhbGUucmFuZ2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocmFuZ2UgPSBBcnJheS5mcm9tKF8pLCBzY2FsZSkgOiByYW5nZS5zbGljZSgpO1xuICB9O1xuXG4gIHNjYWxlLnVua25vd24gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodW5rbm93biA9IF8sIHNjYWxlKSA6IHVua25vd247XG4gIH07XG5cbiAgc2NhbGUuY29weSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBvcmRpbmFsKGRvbWFpbiwgcmFuZ2UpLnVua25vd24odW5rbm93bik7XG4gIH07XG5cbiAgaW5pdFJhbmdlLmFwcGx5KHNjYWxlLCBhcmd1bWVudHMpO1xuXG4gIHJldHVybiBzY2FsZTtcbn1cbiIsICJpbXBvcnQge3JhbmdlIGFzIHNlcXVlbmNlfSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7aW5pdFJhbmdlfSBmcm9tIFwiLi9pbml0LmpzXCI7XG5pbXBvcnQgb3JkaW5hbCBmcm9tIFwiLi9vcmRpbmFsLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJhbmQoKSB7XG4gIHZhciBzY2FsZSA9IG9yZGluYWwoKS51bmtub3duKHVuZGVmaW5lZCksXG4gICAgICBkb21haW4gPSBzY2FsZS5kb21haW4sXG4gICAgICBvcmRpbmFsUmFuZ2UgPSBzY2FsZS5yYW5nZSxcbiAgICAgIHIwID0gMCxcbiAgICAgIHIxID0gMSxcbiAgICAgIHN0ZXAsXG4gICAgICBiYW5kd2lkdGgsXG4gICAgICByb3VuZCA9IGZhbHNlLFxuICAgICAgcGFkZGluZ0lubmVyID0gMCxcbiAgICAgIHBhZGRpbmdPdXRlciA9IDAsXG4gICAgICBhbGlnbiA9IDAuNTtcblxuICBkZWxldGUgc2NhbGUudW5rbm93bjtcblxuICBmdW5jdGlvbiByZXNjYWxlKCkge1xuICAgIHZhciBuID0gZG9tYWluKCkubGVuZ3RoLFxuICAgICAgICByZXZlcnNlID0gcjEgPCByMCxcbiAgICAgICAgc3RhcnQgPSByZXZlcnNlID8gcjEgOiByMCxcbiAgICAgICAgc3RvcCA9IHJldmVyc2UgPyByMCA6IHIxO1xuICAgIHN0ZXAgPSAoc3RvcCAtIHN0YXJ0KSAvIE1hdGgubWF4KDEsIG4gLSBwYWRkaW5nSW5uZXIgKyBwYWRkaW5nT3V0ZXIgKiAyKTtcbiAgICBpZiAocm91bmQpIHN0ZXAgPSBNYXRoLmZsb29yKHN0ZXApO1xuICAgIHN0YXJ0ICs9IChzdG9wIC0gc3RhcnQgLSBzdGVwICogKG4gLSBwYWRkaW5nSW5uZXIpKSAqIGFsaWduO1xuICAgIGJhbmR3aWR0aCA9IHN0ZXAgKiAoMSAtIHBhZGRpbmdJbm5lcik7XG4gICAgaWYgKHJvdW5kKSBzdGFydCA9IE1hdGgucm91bmQoc3RhcnQpLCBiYW5kd2lkdGggPSBNYXRoLnJvdW5kKGJhbmR3aWR0aCk7XG4gICAgdmFyIHZhbHVlcyA9IHNlcXVlbmNlKG4pLm1hcChmdW5jdGlvbihpKSB7IHJldHVybiBzdGFydCArIHN0ZXAgKiBpOyB9KTtcbiAgICByZXR1cm4gb3JkaW5hbFJhbmdlKHJldmVyc2UgPyB2YWx1ZXMucmV2ZXJzZSgpIDogdmFsdWVzKTtcbiAgfVxuXG4gIHNjYWxlLmRvbWFpbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkb21haW4oXyksIHJlc2NhbGUoKSkgOiBkb21haW4oKTtcbiAgfTtcblxuICBzY2FsZS5yYW5nZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChbcjAsIHIxXSA9IF8sIHIwID0gK3IwLCByMSA9ICtyMSwgcmVzY2FsZSgpKSA6IFtyMCwgcjFdO1xuICB9O1xuXG4gIHNjYWxlLnJhbmdlUm91bmQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIFtyMCwgcjFdID0gXywgcjAgPSArcjAsIHIxID0gK3IxLCByb3VuZCA9IHRydWUsIHJlc2NhbGUoKTtcbiAgfTtcblxuICBzY2FsZS5iYW5kd2lkdGggPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYmFuZHdpZHRoO1xuICB9O1xuXG4gIHNjYWxlLnN0ZXAgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gc3RlcDtcbiAgfTtcblxuICBzY2FsZS5yb3VuZCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyb3VuZCA9ICEhXywgcmVzY2FsZSgpKSA6IHJvdW5kO1xuICB9O1xuXG4gIHNjYWxlLnBhZGRpbmcgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFkZGluZ0lubmVyID0gTWF0aC5taW4oMSwgcGFkZGluZ091dGVyID0gK18pLCByZXNjYWxlKCkpIDogcGFkZGluZ0lubmVyO1xuICB9O1xuXG4gIHNjYWxlLnBhZGRpbmdJbm5lciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwYWRkaW5nSW5uZXIgPSBNYXRoLm1pbigxLCBfKSwgcmVzY2FsZSgpKSA6IHBhZGRpbmdJbm5lcjtcbiAgfTtcblxuICBzY2FsZS5wYWRkaW5nT3V0ZXIgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFkZGluZ091dGVyID0gK18sIHJlc2NhbGUoKSkgOiBwYWRkaW5nT3V0ZXI7XG4gIH07XG5cbiAgc2NhbGUuYWxpZ24gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoYWxpZ24gPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBfKSksIHJlc2NhbGUoKSkgOiBhbGlnbjtcbiAgfTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGJhbmQoZG9tYWluKCksIFtyMCwgcjFdKVxuICAgICAgICAucm91bmQocm91bmQpXG4gICAgICAgIC5wYWRkaW5nSW5uZXIocGFkZGluZ0lubmVyKVxuICAgICAgICAucGFkZGluZ091dGVyKHBhZGRpbmdPdXRlcilcbiAgICAgICAgLmFsaWduKGFsaWduKTtcbiAgfTtcblxuICByZXR1cm4gaW5pdFJhbmdlLmFwcGx5KHJlc2NhbGUoKSwgYXJndW1lbnRzKTtcbn1cblxuZnVuY3Rpb24gcG9pbnRpc2goc2NhbGUpIHtcbiAgdmFyIGNvcHkgPSBzY2FsZS5jb3B5O1xuXG4gIHNjYWxlLnBhZGRpbmcgPSBzY2FsZS5wYWRkaW5nT3V0ZXI7XG4gIGRlbGV0ZSBzY2FsZS5wYWRkaW5nSW5uZXI7XG4gIGRlbGV0ZSBzY2FsZS5wYWRkaW5nT3V0ZXI7XG5cbiAgc2NhbGUuY29weSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBwb2ludGlzaChjb3B5KCkpO1xuICB9O1xuXG4gIHJldHVybiBzY2FsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvaW50KCkge1xuICByZXR1cm4gcG9pbnRpc2goYmFuZC5hcHBseShudWxsLCBhcmd1bWVudHMpLnBhZGRpbmdJbm5lcigxKSk7XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29uc3RhbnRzKHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG51bWJlcih4KSB7XG4gIHJldHVybiAreDtcbn1cbiIsICJpbXBvcnQge2Jpc2VjdH0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQge2ludGVycG9sYXRlIGFzIGludGVycG9sYXRlVmFsdWUsIGludGVycG9sYXRlTnVtYmVyLCBpbnRlcnBvbGF0ZVJvdW5kfSBmcm9tIFwiZDMtaW50ZXJwb2xhdGVcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuaW1wb3J0IG51bWJlciBmcm9tIFwiLi9udW1iZXIuanNcIjtcblxudmFyIHVuaXQgPSBbMCwgMV07XG5cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGl0eSh4KSB7XG4gIHJldHVybiB4O1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemUoYSwgYikge1xuICByZXR1cm4gKGIgLT0gKGEgPSArYSkpXG4gICAgICA/IGZ1bmN0aW9uKHgpIHsgcmV0dXJuICh4IC0gYSkgLyBiOyB9XG4gICAgICA6IGNvbnN0YW50KGlzTmFOKGIpID8gTmFOIDogMC41KTtcbn1cblxuZnVuY3Rpb24gY2xhbXBlcihhLCBiKSB7XG4gIHZhciB0O1xuICBpZiAoYSA+IGIpIHQgPSBhLCBhID0gYiwgYiA9IHQ7XG4gIHJldHVybiBmdW5jdGlvbih4KSB7IHJldHVybiBNYXRoLm1heChhLCBNYXRoLm1pbihiLCB4KSk7IH07XG59XG5cbi8vIG5vcm1hbGl6ZShhLCBiKSh4KSB0YWtlcyBhIGRvbWFpbiB2YWx1ZSB4IGluIFthLGJdIGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHBhcmFtZXRlciB0IGluIFswLDFdLlxuLy8gaW50ZXJwb2xhdGUoYSwgYikodCkgdGFrZXMgYSBwYXJhbWV0ZXIgdCBpbiBbMCwxXSBhbmQgcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyByYW5nZSB2YWx1ZSB4IGluIFthLGJdLlxuZnVuY3Rpb24gYmltYXAoZG9tYWluLCByYW5nZSwgaW50ZXJwb2xhdGUpIHtcbiAgdmFyIGQwID0gZG9tYWluWzBdLCBkMSA9IGRvbWFpblsxXSwgcjAgPSByYW5nZVswXSwgcjEgPSByYW5nZVsxXTtcbiAgaWYgKGQxIDwgZDApIGQwID0gbm9ybWFsaXplKGQxLCBkMCksIHIwID0gaW50ZXJwb2xhdGUocjEsIHIwKTtcbiAgZWxzZSBkMCA9IG5vcm1hbGl6ZShkMCwgZDEpLCByMCA9IGludGVycG9sYXRlKHIwLCByMSk7XG4gIHJldHVybiBmdW5jdGlvbih4KSB7IHJldHVybiByMChkMCh4KSk7IH07XG59XG5cbmZ1bmN0aW9uIHBvbHltYXAoZG9tYWluLCByYW5nZSwgaW50ZXJwb2xhdGUpIHtcbiAgdmFyIGogPSBNYXRoLm1pbihkb21haW4ubGVuZ3RoLCByYW5nZS5sZW5ndGgpIC0gMSxcbiAgICAgIGQgPSBuZXcgQXJyYXkoaiksXG4gICAgICByID0gbmV3IEFycmF5KGopLFxuICAgICAgaSA9IC0xO1xuXG4gIC8vIFJldmVyc2UgZGVzY2VuZGluZyBkb21haW5zLlxuICBpZiAoZG9tYWluW2pdIDwgZG9tYWluWzBdKSB7XG4gICAgZG9tYWluID0gZG9tYWluLnNsaWNlKCkucmV2ZXJzZSgpO1xuICAgIHJhbmdlID0gcmFuZ2Uuc2xpY2UoKS5yZXZlcnNlKCk7XG4gIH1cblxuICB3aGlsZSAoKytpIDwgaikge1xuICAgIGRbaV0gPSBub3JtYWxpemUoZG9tYWluW2ldLCBkb21haW5baSArIDFdKTtcbiAgICByW2ldID0gaW50ZXJwb2xhdGUocmFuZ2VbaV0sIHJhbmdlW2kgKyAxXSk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24oeCkge1xuICAgIHZhciBpID0gYmlzZWN0KGRvbWFpbiwgeCwgMSwgaikgLSAxO1xuICAgIHJldHVybiByW2ldKGRbaV0oeCkpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29weShzb3VyY2UsIHRhcmdldCkge1xuICByZXR1cm4gdGFyZ2V0XG4gICAgICAuZG9tYWluKHNvdXJjZS5kb21haW4oKSlcbiAgICAgIC5yYW5nZShzb3VyY2UucmFuZ2UoKSlcbiAgICAgIC5pbnRlcnBvbGF0ZShzb3VyY2UuaW50ZXJwb2xhdGUoKSlcbiAgICAgIC5jbGFtcChzb3VyY2UuY2xhbXAoKSlcbiAgICAgIC51bmtub3duKHNvdXJjZS51bmtub3duKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtZXIoKSB7XG4gIHZhciBkb21haW4gPSB1bml0LFxuICAgICAgcmFuZ2UgPSB1bml0LFxuICAgICAgaW50ZXJwb2xhdGUgPSBpbnRlcnBvbGF0ZVZhbHVlLFxuICAgICAgdHJhbnNmb3JtLFxuICAgICAgdW50cmFuc2Zvcm0sXG4gICAgICB1bmtub3duLFxuICAgICAgY2xhbXAgPSBpZGVudGl0eSxcbiAgICAgIHBpZWNld2lzZSxcbiAgICAgIG91dHB1dCxcbiAgICAgIGlucHV0O1xuXG4gIGZ1bmN0aW9uIHJlc2NhbGUoKSB7XG4gICAgdmFyIG4gPSBNYXRoLm1pbihkb21haW4ubGVuZ3RoLCByYW5nZS5sZW5ndGgpO1xuICAgIGlmIChjbGFtcCAhPT0gaWRlbnRpdHkpIGNsYW1wID0gY2xhbXBlcihkb21haW5bMF0sIGRvbWFpbltuIC0gMV0pO1xuICAgIHBpZWNld2lzZSA9IG4gPiAyID8gcG9seW1hcCA6IGJpbWFwO1xuICAgIG91dHB1dCA9IGlucHV0ID0gbnVsbDtcbiAgICByZXR1cm4gc2NhbGU7XG4gIH1cblxuICBmdW5jdGlvbiBzY2FsZSh4KSB7XG4gICAgcmV0dXJuIHggPT0gbnVsbCB8fCBpc05hTih4ID0gK3gpID8gdW5rbm93biA6IChvdXRwdXQgfHwgKG91dHB1dCA9IHBpZWNld2lzZShkb21haW4ubWFwKHRyYW5zZm9ybSksIHJhbmdlLCBpbnRlcnBvbGF0ZSkpKSh0cmFuc2Zvcm0oY2xhbXAoeCkpKTtcbiAgfVxuXG4gIHNjYWxlLmludmVydCA9IGZ1bmN0aW9uKHkpIHtcbiAgICByZXR1cm4gY2xhbXAodW50cmFuc2Zvcm0oKGlucHV0IHx8IChpbnB1dCA9IHBpZWNld2lzZShyYW5nZSwgZG9tYWluLm1hcCh0cmFuc2Zvcm0pLCBpbnRlcnBvbGF0ZU51bWJlcikpKSh5KSkpO1xuICB9O1xuXG4gIHNjYWxlLmRvbWFpbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkb21haW4gPSBBcnJheS5mcm9tKF8sIG51bWJlciksIHJlc2NhbGUoKSkgOiBkb21haW4uc2xpY2UoKTtcbiAgfTtcblxuICBzY2FsZS5yYW5nZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYW5nZSA9IEFycmF5LmZyb20oXyksIHJlc2NhbGUoKSkgOiByYW5nZS5zbGljZSgpO1xuICB9O1xuXG4gIHNjYWxlLnJhbmdlUm91bmQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIHJhbmdlID0gQXJyYXkuZnJvbShfKSwgaW50ZXJwb2xhdGUgPSBpbnRlcnBvbGF0ZVJvdW5kLCByZXNjYWxlKCk7XG4gIH07XG5cbiAgc2NhbGUuY2xhbXAgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoY2xhbXAgPSBfID8gdHJ1ZSA6IGlkZW50aXR5LCByZXNjYWxlKCkpIDogY2xhbXAgIT09IGlkZW50aXR5O1xuICB9O1xuXG4gIHNjYWxlLmludGVycG9sYXRlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGludGVycG9sYXRlID0gXywgcmVzY2FsZSgpKSA6IGludGVycG9sYXRlO1xuICB9O1xuXG4gIHNjYWxlLnVua25vd24gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodW5rbm93biA9IF8sIHNjYWxlKSA6IHVua25vd247XG4gIH07XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHQsIHUpIHtcbiAgICB0cmFuc2Zvcm0gPSB0LCB1bnRyYW5zZm9ybSA9IHU7XG4gICAgcmV0dXJuIHJlc2NhbGUoKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29udGludW91cygpIHtcbiAgcmV0dXJuIHRyYW5zZm9ybWVyKCkoaWRlbnRpdHksIGlkZW50aXR5KTtcbn1cbiIsICJpbXBvcnQge3RpY2tTdGVwfSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7Zm9ybWF0LCBmb3JtYXRQcmVmaXgsIGZvcm1hdFNwZWNpZmllciwgcHJlY2lzaW9uRml4ZWQsIHByZWNpc2lvblByZWZpeCwgcHJlY2lzaW9uUm91bmR9IGZyb20gXCJkMy1mb3JtYXRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdGlja0Zvcm1hdChzdGFydCwgc3RvcCwgY291bnQsIHNwZWNpZmllcikge1xuICB2YXIgc3RlcCA9IHRpY2tTdGVwKHN0YXJ0LCBzdG9wLCBjb3VudCksXG4gICAgICBwcmVjaXNpb247XG4gIHNwZWNpZmllciA9IGZvcm1hdFNwZWNpZmllcihzcGVjaWZpZXIgPT0gbnVsbCA/IFwiLGZcIiA6IHNwZWNpZmllcik7XG4gIHN3aXRjaCAoc3BlY2lmaWVyLnR5cGUpIHtcbiAgICBjYXNlIFwic1wiOiB7XG4gICAgICB2YXIgdmFsdWUgPSBNYXRoLm1heChNYXRoLmFicyhzdGFydCksIE1hdGguYWJzKHN0b3ApKTtcbiAgICAgIGlmIChzcGVjaWZpZXIucHJlY2lzaW9uID09IG51bGwgJiYgIWlzTmFOKHByZWNpc2lvbiA9IHByZWNpc2lvblByZWZpeChzdGVwLCB2YWx1ZSkpKSBzcGVjaWZpZXIucHJlY2lzaW9uID0gcHJlY2lzaW9uO1xuICAgICAgcmV0dXJuIGZvcm1hdFByZWZpeChzcGVjaWZpZXIsIHZhbHVlKTtcbiAgICB9XG4gICAgY2FzZSBcIlwiOlxuICAgIGNhc2UgXCJlXCI6XG4gICAgY2FzZSBcImdcIjpcbiAgICBjYXNlIFwicFwiOlxuICAgIGNhc2UgXCJyXCI6IHtcbiAgICAgIGlmIChzcGVjaWZpZXIucHJlY2lzaW9uID09IG51bGwgJiYgIWlzTmFOKHByZWNpc2lvbiA9IHByZWNpc2lvblJvdW5kKHN0ZXAsIE1hdGgubWF4KE1hdGguYWJzKHN0YXJ0KSwgTWF0aC5hYnMoc3RvcCkpKSkpIHNwZWNpZmllci5wcmVjaXNpb24gPSBwcmVjaXNpb24gLSAoc3BlY2lmaWVyLnR5cGUgPT09IFwiZVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIFwiZlwiOlxuICAgIGNhc2UgXCIlXCI6IHtcbiAgICAgIGlmIChzcGVjaWZpZXIucHJlY2lzaW9uID09IG51bGwgJiYgIWlzTmFOKHByZWNpc2lvbiA9IHByZWNpc2lvbkZpeGVkKHN0ZXApKSkgc3BlY2lmaWVyLnByZWNpc2lvbiA9IHByZWNpc2lvbiAtIChzcGVjaWZpZXIudHlwZSA9PT0gXCIlXCIpICogMjtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZm9ybWF0KHNwZWNpZmllcik7XG59XG4iLCAiaW1wb3J0IHt0aWNrcywgdGlja0luY3JlbWVudH0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQgY29udGludW91cywge2NvcHl9IGZyb20gXCIuL2NvbnRpbnVvdXMuanNcIjtcbmltcG9ydCB7aW5pdFJhbmdlfSBmcm9tIFwiLi9pbml0LmpzXCI7XG5pbXBvcnQgdGlja0Zvcm1hdCBmcm9tIFwiLi90aWNrRm9ybWF0LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5lYXJpc2goc2NhbGUpIHtcbiAgdmFyIGRvbWFpbiA9IHNjYWxlLmRvbWFpbjtcblxuICBzY2FsZS50aWNrcyA9IGZ1bmN0aW9uKGNvdW50KSB7XG4gICAgdmFyIGQgPSBkb21haW4oKTtcbiAgICByZXR1cm4gdGlja3MoZFswXSwgZFtkLmxlbmd0aCAtIDFdLCBjb3VudCA9PSBudWxsID8gMTAgOiBjb3VudCk7XG4gIH07XG5cbiAgc2NhbGUudGlja0Zvcm1hdCA9IGZ1bmN0aW9uKGNvdW50LCBzcGVjaWZpZXIpIHtcbiAgICB2YXIgZCA9IGRvbWFpbigpO1xuICAgIHJldHVybiB0aWNrRm9ybWF0KGRbMF0sIGRbZC5sZW5ndGggLSAxXSwgY291bnQgPT0gbnVsbCA/IDEwIDogY291bnQsIHNwZWNpZmllcik7XG4gIH07XG5cbiAgc2NhbGUubmljZSA9IGZ1bmN0aW9uKGNvdW50KSB7XG4gICAgaWYgKGNvdW50ID09IG51bGwpIGNvdW50ID0gMTA7XG5cbiAgICB2YXIgZCA9IGRvbWFpbigpO1xuICAgIHZhciBpMCA9IDA7XG4gICAgdmFyIGkxID0gZC5sZW5ndGggLSAxO1xuICAgIHZhciBzdGFydCA9IGRbaTBdO1xuICAgIHZhciBzdG9wID0gZFtpMV07XG4gICAgdmFyIHByZXN0ZXA7XG4gICAgdmFyIHN0ZXA7XG4gICAgdmFyIG1heEl0ZXIgPSAxMDtcblxuICAgIGlmIChzdG9wIDwgc3RhcnQpIHtcbiAgICAgIHN0ZXAgPSBzdGFydCwgc3RhcnQgPSBzdG9wLCBzdG9wID0gc3RlcDtcbiAgICAgIHN0ZXAgPSBpMCwgaTAgPSBpMSwgaTEgPSBzdGVwO1xuICAgIH1cbiAgICBcbiAgICB3aGlsZSAobWF4SXRlci0tID4gMCkge1xuICAgICAgc3RlcCA9IHRpY2tJbmNyZW1lbnQoc3RhcnQsIHN0b3AsIGNvdW50KTtcbiAgICAgIGlmIChzdGVwID09PSBwcmVzdGVwKSB7XG4gICAgICAgIGRbaTBdID0gc3RhcnRcbiAgICAgICAgZFtpMV0gPSBzdG9wXG4gICAgICAgIHJldHVybiBkb21haW4oZCk7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAgPiAwKSB7XG4gICAgICAgIHN0YXJ0ID0gTWF0aC5mbG9vcihzdGFydCAvIHN0ZXApICogc3RlcDtcbiAgICAgICAgc3RvcCA9IE1hdGguY2VpbChzdG9wIC8gc3RlcCkgKiBzdGVwO1xuICAgICAgfSBlbHNlIGlmIChzdGVwIDwgMCkge1xuICAgICAgICBzdGFydCA9IE1hdGguY2VpbChzdGFydCAqIHN0ZXApIC8gc3RlcDtcbiAgICAgICAgc3RvcCA9IE1hdGguZmxvb3Ioc3RvcCAqIHN0ZXApIC8gc3RlcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcHJlc3RlcCA9IHN0ZXA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjYWxlO1xuICB9O1xuXG4gIHJldHVybiBzY2FsZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGluZWFyKCkge1xuICB2YXIgc2NhbGUgPSBjb250aW51b3VzKCk7XG5cbiAgc2NhbGUuY29weSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBjb3B5KHNjYWxlLCBsaW5lYXIoKSk7XG4gIH07XG5cbiAgaW5pdFJhbmdlLmFwcGx5KHNjYWxlLCBhcmd1bWVudHMpO1xuXG4gIHJldHVybiBsaW5lYXJpc2goc2NhbGUpO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNwZWNpZmllcikge1xuICB2YXIgbiA9IHNwZWNpZmllci5sZW5ndGggLyA2IHwgMCwgY29sb3JzID0gbmV3IEFycmF5KG4pLCBpID0gMDtcbiAgd2hpbGUgKGkgPCBuKSBjb2xvcnNbaV0gPSBcIiNcIiArIHNwZWNpZmllci5zbGljZShpICogNiwgKytpICogNik7XG4gIHJldHVybiBjb2xvcnM7XG59XG4iLCAiaW1wb3J0IGNvbG9ycyBmcm9tIFwiLi4vY29sb3JzLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbG9ycyhcIjFmNzdiNGZmN2YwZTJjYTAyY2Q2MjcyODk0NjdiZDhjNTY0YmUzNzdjMjdmN2Y3ZmJjYmQyMjE3YmVjZlwiKTtcbiIsICJpbXBvcnQge2N1YmVoZWxpeH0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQge2ludGVycG9sYXRlQ3ViZWhlbGl4TG9uZ30gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5cbmV4cG9ydCB2YXIgd2FybSA9IGludGVycG9sYXRlQ3ViZWhlbGl4TG9uZyhjdWJlaGVsaXgoLTEwMCwgMC43NSwgMC4zNSksIGN1YmVoZWxpeCg4MCwgMS41MCwgMC44KSk7XG5cbmV4cG9ydCB2YXIgY29vbCA9IGludGVycG9sYXRlQ3ViZWhlbGl4TG9uZyhjdWJlaGVsaXgoMjYwLCAwLjc1LCAwLjM1KSwgY3ViZWhlbGl4KDgwLCAxLjUwLCAwLjgpKTtcblxudmFyIGMgPSBjdWJlaGVsaXgoKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odCkge1xuICBpZiAodCA8IDAgfHwgdCA+IDEpIHQgLT0gTWF0aC5mbG9vcih0KTtcbiAgdmFyIHRzID0gTWF0aC5hYnModCAtIDAuNSk7XG4gIGMuaCA9IDM2MCAqIHQgLSAxMDA7XG4gIGMucyA9IDEuNSAtIDEuNSAqIHRzO1xuICBjLmwgPSAwLjggLSAwLjkgKiB0cztcbiAgcmV0dXJuIGMgKyBcIlwiO1xufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNvbnN0YW50KCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufVxuIiwgImV4cG9ydCB2YXIgYWJzID0gTWF0aC5hYnM7XG5leHBvcnQgdmFyIGF0YW4yID0gTWF0aC5hdGFuMjtcbmV4cG9ydCB2YXIgY29zID0gTWF0aC5jb3M7XG5leHBvcnQgdmFyIG1heCA9IE1hdGgubWF4O1xuZXhwb3J0IHZhciBtaW4gPSBNYXRoLm1pbjtcbmV4cG9ydCB2YXIgc2luID0gTWF0aC5zaW47XG5leHBvcnQgdmFyIHNxcnQgPSBNYXRoLnNxcnQ7XG5cbmV4cG9ydCB2YXIgZXBzaWxvbiA9IDFlLTEyO1xuZXhwb3J0IHZhciBwaSA9IE1hdGguUEk7XG5leHBvcnQgdmFyIGhhbGZQaSA9IHBpIC8gMjtcbmV4cG9ydCB2YXIgdGF1ID0gMiAqIHBpO1xuXG5leHBvcnQgZnVuY3Rpb24gYWNvcyh4KSB7XG4gIHJldHVybiB4ID4gMSA/IDAgOiB4IDwgLTEgPyBwaSA6IE1hdGguYWNvcyh4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzaW4oeCkge1xuICByZXR1cm4geCA+PSAxID8gaGFsZlBpIDogeCA8PSAtMSA/IC1oYWxmUGkgOiBNYXRoLmFzaW4oeCk7XG59XG4iLCAiaW1wb3J0IHtwYXRofSBmcm9tIFwiZDMtcGF0aFwiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5pbXBvcnQge2FicywgYWNvcywgYXNpbiwgYXRhbjIsIGNvcywgZXBzaWxvbiwgaGFsZlBpLCBtYXgsIG1pbiwgcGksIHNpbiwgc3FydCwgdGF1fSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIGFyY0lubmVyUmFkaXVzKGQpIHtcbiAgcmV0dXJuIGQuaW5uZXJSYWRpdXM7XG59XG5cbmZ1bmN0aW9uIGFyY091dGVyUmFkaXVzKGQpIHtcbiAgcmV0dXJuIGQub3V0ZXJSYWRpdXM7XG59XG5cbmZ1bmN0aW9uIGFyY1N0YXJ0QW5nbGUoZCkge1xuICByZXR1cm4gZC5zdGFydEFuZ2xlO1xufVxuXG5mdW5jdGlvbiBhcmNFbmRBbmdsZShkKSB7XG4gIHJldHVybiBkLmVuZEFuZ2xlO1xufVxuXG5mdW5jdGlvbiBhcmNQYWRBbmdsZShkKSB7XG4gIHJldHVybiBkICYmIGQucGFkQW5nbGU7IC8vIE5vdGU6IG9wdGlvbmFsIVxufVxuXG5mdW5jdGlvbiBpbnRlcnNlY3QoeDAsIHkwLCB4MSwgeTEsIHgyLCB5MiwgeDMsIHkzKSB7XG4gIHZhciB4MTAgPSB4MSAtIHgwLCB5MTAgPSB5MSAtIHkwLFxuICAgICAgeDMyID0geDMgLSB4MiwgeTMyID0geTMgLSB5MixcbiAgICAgIHQgPSB5MzIgKiB4MTAgLSB4MzIgKiB5MTA7XG4gIGlmICh0ICogdCA8IGVwc2lsb24pIHJldHVybjtcbiAgdCA9ICh4MzIgKiAoeTAgLSB5MikgLSB5MzIgKiAoeDAgLSB4MikpIC8gdDtcbiAgcmV0dXJuIFt4MCArIHQgKiB4MTAsIHkwICsgdCAqIHkxMF07XG59XG5cbi8vIENvbXB1dGUgcGVycGVuZGljdWxhciBvZmZzZXQgbGluZSBvZiBsZW5ndGggcmMuXG4vLyBodHRwOi8vbWF0aHdvcmxkLndvbGZyYW0uY29tL0NpcmNsZS1MaW5lSW50ZXJzZWN0aW9uLmh0bWxcbmZ1bmN0aW9uIGNvcm5lclRhbmdlbnRzKHgwLCB5MCwgeDEsIHkxLCByMSwgcmMsIGN3KSB7XG4gIHZhciB4MDEgPSB4MCAtIHgxLFxuICAgICAgeTAxID0geTAgLSB5MSxcbiAgICAgIGxvID0gKGN3ID8gcmMgOiAtcmMpIC8gc3FydCh4MDEgKiB4MDEgKyB5MDEgKiB5MDEpLFxuICAgICAgb3ggPSBsbyAqIHkwMSxcbiAgICAgIG95ID0gLWxvICogeDAxLFxuICAgICAgeDExID0geDAgKyBveCxcbiAgICAgIHkxMSA9IHkwICsgb3ksXG4gICAgICB4MTAgPSB4MSArIG94LFxuICAgICAgeTEwID0geTEgKyBveSxcbiAgICAgIHgwMCA9ICh4MTEgKyB4MTApIC8gMixcbiAgICAgIHkwMCA9ICh5MTEgKyB5MTApIC8gMixcbiAgICAgIGR4ID0geDEwIC0geDExLFxuICAgICAgZHkgPSB5MTAgLSB5MTEsXG4gICAgICBkMiA9IGR4ICogZHggKyBkeSAqIGR5LFxuICAgICAgciA9IHIxIC0gcmMsXG4gICAgICBEID0geDExICogeTEwIC0geDEwICogeTExLFxuICAgICAgZCA9IChkeSA8IDAgPyAtMSA6IDEpICogc3FydChtYXgoMCwgciAqIHIgKiBkMiAtIEQgKiBEKSksXG4gICAgICBjeDAgPSAoRCAqIGR5IC0gZHggKiBkKSAvIGQyLFxuICAgICAgY3kwID0gKC1EICogZHggLSBkeSAqIGQpIC8gZDIsXG4gICAgICBjeDEgPSAoRCAqIGR5ICsgZHggKiBkKSAvIGQyLFxuICAgICAgY3kxID0gKC1EICogZHggKyBkeSAqIGQpIC8gZDIsXG4gICAgICBkeDAgPSBjeDAgLSB4MDAsXG4gICAgICBkeTAgPSBjeTAgLSB5MDAsXG4gICAgICBkeDEgPSBjeDEgLSB4MDAsXG4gICAgICBkeTEgPSBjeTEgLSB5MDA7XG5cbiAgLy8gUGljayB0aGUgY2xvc2VyIG9mIHRoZSB0d28gaW50ZXJzZWN0aW9uIHBvaW50cy5cbiAgLy8gVE9ETyBJcyB0aGVyZSBhIGZhc3RlciB3YXkgdG8gZGV0ZXJtaW5lIHdoaWNoIGludGVyc2VjdGlvbiB0byB1c2U/XG4gIGlmIChkeDAgKiBkeDAgKyBkeTAgKiBkeTAgPiBkeDEgKiBkeDEgKyBkeTEgKiBkeTEpIGN4MCA9IGN4MSwgY3kwID0gY3kxO1xuXG4gIHJldHVybiB7XG4gICAgY3g6IGN4MCxcbiAgICBjeTogY3kwLFxuICAgIHgwMTogLW94LFxuICAgIHkwMTogLW95LFxuICAgIHgxMTogY3gwICogKHIxIC8gciAtIDEpLFxuICAgIHkxMTogY3kwICogKHIxIC8gciAtIDEpXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgaW5uZXJSYWRpdXMgPSBhcmNJbm5lclJhZGl1cyxcbiAgICAgIG91dGVyUmFkaXVzID0gYXJjT3V0ZXJSYWRpdXMsXG4gICAgICBjb3JuZXJSYWRpdXMgPSBjb25zdGFudCgwKSxcbiAgICAgIHBhZFJhZGl1cyA9IG51bGwsXG4gICAgICBzdGFydEFuZ2xlID0gYXJjU3RhcnRBbmdsZSxcbiAgICAgIGVuZEFuZ2xlID0gYXJjRW5kQW5nbGUsXG4gICAgICBwYWRBbmdsZSA9IGFyY1BhZEFuZ2xlLFxuICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgZnVuY3Rpb24gYXJjKCkge1xuICAgIHZhciBidWZmZXIsXG4gICAgICAgIHIsXG4gICAgICAgIHIwID0gK2lubmVyUmFkaXVzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksXG4gICAgICAgIHIxID0gK291dGVyUmFkaXVzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksXG4gICAgICAgIGEwID0gc3RhcnRBbmdsZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIC0gaGFsZlBpLFxuICAgICAgICBhMSA9IGVuZEFuZ2xlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgLSBoYWxmUGksXG4gICAgICAgIGRhID0gYWJzKGExIC0gYTApLFxuICAgICAgICBjdyA9IGExID4gYTA7XG5cbiAgICBpZiAoIWNvbnRleHQpIGNvbnRleHQgPSBidWZmZXIgPSBwYXRoKCk7XG5cbiAgICAvLyBFbnN1cmUgdGhhdCB0aGUgb3V0ZXIgcmFkaXVzIGlzIGFsd2F5cyBsYXJnZXIgdGhhbiB0aGUgaW5uZXIgcmFkaXVzLlxuICAgIGlmIChyMSA8IHIwKSByID0gcjEsIHIxID0gcjAsIHIwID0gcjtcblxuICAgIC8vIElzIGl0IGEgcG9pbnQ/XG4gICAgaWYgKCEocjEgPiBlcHNpbG9uKSkgY29udGV4dC5tb3ZlVG8oMCwgMCk7XG5cbiAgICAvLyBPciBpcyBpdCBhIGNpcmNsZSBvciBhbm51bHVzP1xuICAgIGVsc2UgaWYgKGRhID4gdGF1IC0gZXBzaWxvbikge1xuICAgICAgY29udGV4dC5tb3ZlVG8ocjEgKiBjb3MoYTApLCByMSAqIHNpbihhMCkpO1xuICAgICAgY29udGV4dC5hcmMoMCwgMCwgcjEsIGEwLCBhMSwgIWN3KTtcbiAgICAgIGlmIChyMCA+IGVwc2lsb24pIHtcbiAgICAgICAgY29udGV4dC5tb3ZlVG8ocjAgKiBjb3MoYTEpLCByMCAqIHNpbihhMSkpO1xuICAgICAgICBjb250ZXh0LmFyYygwLCAwLCByMCwgYTEsIGEwLCBjdyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gT3IgaXMgaXQgYSBjaXJjdWxhciBvciBhbm51bGFyIHNlY3Rvcj9cbiAgICBlbHNlIHtcbiAgICAgIHZhciBhMDEgPSBhMCxcbiAgICAgICAgICBhMTEgPSBhMSxcbiAgICAgICAgICBhMDAgPSBhMCxcbiAgICAgICAgICBhMTAgPSBhMSxcbiAgICAgICAgICBkYTAgPSBkYSxcbiAgICAgICAgICBkYTEgPSBkYSxcbiAgICAgICAgICBhcCA9IHBhZEFuZ2xlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgLyAyLFxuICAgICAgICAgIHJwID0gKGFwID4gZXBzaWxvbikgJiYgKHBhZFJhZGl1cyA/ICtwYWRSYWRpdXMuYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IHNxcnQocjAgKiByMCArIHIxICogcjEpKSxcbiAgICAgICAgICByYyA9IG1pbihhYnMocjEgLSByMCkgLyAyLCArY29ybmVyUmFkaXVzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpLFxuICAgICAgICAgIHJjMCA9IHJjLFxuICAgICAgICAgIHJjMSA9IHJjLFxuICAgICAgICAgIHQwLFxuICAgICAgICAgIHQxO1xuXG4gICAgICAvLyBBcHBseSBwYWRkaW5nPyBOb3RlIHRoYXQgc2luY2UgcjEgXHUyMjY1IHIwLCBkYTEgXHUyMjY1IGRhMC5cbiAgICAgIGlmIChycCA+IGVwc2lsb24pIHtcbiAgICAgICAgdmFyIHAwID0gYXNpbihycCAvIHIwICogc2luKGFwKSksXG4gICAgICAgICAgICBwMSA9IGFzaW4ocnAgLyByMSAqIHNpbihhcCkpO1xuICAgICAgICBpZiAoKGRhMCAtPSBwMCAqIDIpID4gZXBzaWxvbikgcDAgKj0gKGN3ID8gMSA6IC0xKSwgYTAwICs9IHAwLCBhMTAgLT0gcDA7XG4gICAgICAgIGVsc2UgZGEwID0gMCwgYTAwID0gYTEwID0gKGEwICsgYTEpIC8gMjtcbiAgICAgICAgaWYgKChkYTEgLT0gcDEgKiAyKSA+IGVwc2lsb24pIHAxICo9IChjdyA/IDEgOiAtMSksIGEwMSArPSBwMSwgYTExIC09IHAxO1xuICAgICAgICBlbHNlIGRhMSA9IDAsIGEwMSA9IGExMSA9IChhMCArIGExKSAvIDI7XG4gICAgICB9XG5cbiAgICAgIHZhciB4MDEgPSByMSAqIGNvcyhhMDEpLFxuICAgICAgICAgIHkwMSA9IHIxICogc2luKGEwMSksXG4gICAgICAgICAgeDEwID0gcjAgKiBjb3MoYTEwKSxcbiAgICAgICAgICB5MTAgPSByMCAqIHNpbihhMTApO1xuXG4gICAgICAvLyBBcHBseSByb3VuZGVkIGNvcm5lcnM/XG4gICAgICBpZiAocmMgPiBlcHNpbG9uKSB7XG4gICAgICAgIHZhciB4MTEgPSByMSAqIGNvcyhhMTEpLFxuICAgICAgICAgICAgeTExID0gcjEgKiBzaW4oYTExKSxcbiAgICAgICAgICAgIHgwMCA9IHIwICogY29zKGEwMCksXG4gICAgICAgICAgICB5MDAgPSByMCAqIHNpbihhMDApLFxuICAgICAgICAgICAgb2M7XG5cbiAgICAgICAgLy8gUmVzdHJpY3QgdGhlIGNvcm5lciByYWRpdXMgYWNjb3JkaW5nIHRvIHRoZSBzZWN0b3IgYW5nbGUuXG4gICAgICAgIGlmIChkYSA8IHBpICYmIChvYyA9IGludGVyc2VjdCh4MDEsIHkwMSwgeDAwLCB5MDAsIHgxMSwgeTExLCB4MTAsIHkxMCkpKSB7XG4gICAgICAgICAgdmFyIGF4ID0geDAxIC0gb2NbMF0sXG4gICAgICAgICAgICAgIGF5ID0geTAxIC0gb2NbMV0sXG4gICAgICAgICAgICAgIGJ4ID0geDExIC0gb2NbMF0sXG4gICAgICAgICAgICAgIGJ5ID0geTExIC0gb2NbMV0sXG4gICAgICAgICAgICAgIGtjID0gMSAvIHNpbihhY29zKChheCAqIGJ4ICsgYXkgKiBieSkgLyAoc3FydChheCAqIGF4ICsgYXkgKiBheSkgKiBzcXJ0KGJ4ICogYnggKyBieSAqIGJ5KSkpIC8gMiksXG4gICAgICAgICAgICAgIGxjID0gc3FydChvY1swXSAqIG9jWzBdICsgb2NbMV0gKiBvY1sxXSk7XG4gICAgICAgICAgcmMwID0gbWluKHJjLCAocjAgLSBsYykgLyAoa2MgLSAxKSk7XG4gICAgICAgICAgcmMxID0gbWluKHJjLCAocjEgLSBsYykgLyAoa2MgKyAxKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSXMgdGhlIHNlY3RvciBjb2xsYXBzZWQgdG8gYSBsaW5lP1xuICAgICAgaWYgKCEoZGExID4gZXBzaWxvbikpIGNvbnRleHQubW92ZVRvKHgwMSwgeTAxKTtcblxuICAgICAgLy8gRG9lcyB0aGUgc2VjdG9yXHUyMDE5cyBvdXRlciByaW5nIGhhdmUgcm91bmRlZCBjb3JuZXJzP1xuICAgICAgZWxzZSBpZiAocmMxID4gZXBzaWxvbikge1xuICAgICAgICB0MCA9IGNvcm5lclRhbmdlbnRzKHgwMCwgeTAwLCB4MDEsIHkwMSwgcjEsIHJjMSwgY3cpO1xuICAgICAgICB0MSA9IGNvcm5lclRhbmdlbnRzKHgxMSwgeTExLCB4MTAsIHkxMCwgcjEsIHJjMSwgY3cpO1xuXG4gICAgICAgIGNvbnRleHQubW92ZVRvKHQwLmN4ICsgdDAueDAxLCB0MC5jeSArIHQwLnkwMSk7XG5cbiAgICAgICAgLy8gSGF2ZSB0aGUgY29ybmVycyBtZXJnZWQ/XG4gICAgICAgIGlmIChyYzEgPCByYykgY29udGV4dC5hcmModDAuY3gsIHQwLmN5LCByYzEsIGF0YW4yKHQwLnkwMSwgdDAueDAxKSwgYXRhbjIodDEueTAxLCB0MS54MDEpLCAhY3cpO1xuXG4gICAgICAgIC8vIE90aGVyd2lzZSwgZHJhdyB0aGUgdHdvIGNvcm5lcnMgYW5kIHRoZSByaW5nLlxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjb250ZXh0LmFyYyh0MC5jeCwgdDAuY3ksIHJjMSwgYXRhbjIodDAueTAxLCB0MC54MDEpLCBhdGFuMih0MC55MTEsIHQwLngxMSksICFjdyk7XG4gICAgICAgICAgY29udGV4dC5hcmMoMCwgMCwgcjEsIGF0YW4yKHQwLmN5ICsgdDAueTExLCB0MC5jeCArIHQwLngxMSksIGF0YW4yKHQxLmN5ICsgdDEueTExLCB0MS5jeCArIHQxLngxMSksICFjdyk7XG4gICAgICAgICAgY29udGV4dC5hcmModDEuY3gsIHQxLmN5LCByYzEsIGF0YW4yKHQxLnkxMSwgdDEueDExKSwgYXRhbjIodDEueTAxLCB0MS54MDEpLCAhY3cpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE9yIGlzIHRoZSBvdXRlciByaW5nIGp1c3QgYSBjaXJjdWxhciBhcmM/XG4gICAgICBlbHNlIGNvbnRleHQubW92ZVRvKHgwMSwgeTAxKSwgY29udGV4dC5hcmMoMCwgMCwgcjEsIGEwMSwgYTExLCAhY3cpO1xuXG4gICAgICAvLyBJcyB0aGVyZSBubyBpbm5lciByaW5nLCBhbmQgaXRcdTIwMTlzIGEgY2lyY3VsYXIgc2VjdG9yP1xuICAgICAgLy8gT3IgcGVyaGFwcyBpdFx1MjAxOXMgYW4gYW5udWxhciBzZWN0b3IgY29sbGFwc2VkIGR1ZSB0byBwYWRkaW5nP1xuICAgICAgaWYgKCEocjAgPiBlcHNpbG9uKSB8fCAhKGRhMCA+IGVwc2lsb24pKSBjb250ZXh0LmxpbmVUbyh4MTAsIHkxMCk7XG5cbiAgICAgIC8vIERvZXMgdGhlIHNlY3Rvclx1MjAxOXMgaW5uZXIgcmluZyAob3IgcG9pbnQpIGhhdmUgcm91bmRlZCBjb3JuZXJzP1xuICAgICAgZWxzZSBpZiAocmMwID4gZXBzaWxvbikge1xuICAgICAgICB0MCA9IGNvcm5lclRhbmdlbnRzKHgxMCwgeTEwLCB4MTEsIHkxMSwgcjAsIC1yYzAsIGN3KTtcbiAgICAgICAgdDEgPSBjb3JuZXJUYW5nZW50cyh4MDEsIHkwMSwgeDAwLCB5MDAsIHIwLCAtcmMwLCBjdyk7XG5cbiAgICAgICAgY29udGV4dC5saW5lVG8odDAuY3ggKyB0MC54MDEsIHQwLmN5ICsgdDAueTAxKTtcblxuICAgICAgICAvLyBIYXZlIHRoZSBjb3JuZXJzIG1lcmdlZD9cbiAgICAgICAgaWYgKHJjMCA8IHJjKSBjb250ZXh0LmFyYyh0MC5jeCwgdDAuY3ksIHJjMCwgYXRhbjIodDAueTAxLCB0MC54MDEpLCBhdGFuMih0MS55MDEsIHQxLngwMSksICFjdyk7XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlLCBkcmF3IHRoZSB0d28gY29ybmVycyBhbmQgdGhlIHJpbmcuXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNvbnRleHQuYXJjKHQwLmN4LCB0MC5jeSwgcmMwLCBhdGFuMih0MC55MDEsIHQwLngwMSksIGF0YW4yKHQwLnkxMSwgdDAueDExKSwgIWN3KTtcbiAgICAgICAgICBjb250ZXh0LmFyYygwLCAwLCByMCwgYXRhbjIodDAuY3kgKyB0MC55MTEsIHQwLmN4ICsgdDAueDExKSwgYXRhbjIodDEuY3kgKyB0MS55MTEsIHQxLmN4ICsgdDEueDExKSwgY3cpO1xuICAgICAgICAgIGNvbnRleHQuYXJjKHQxLmN4LCB0MS5jeSwgcmMwLCBhdGFuMih0MS55MTEsIHQxLngxMSksIGF0YW4yKHQxLnkwMSwgdDEueDAxKSwgIWN3KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBPciBpcyB0aGUgaW5uZXIgcmluZyBqdXN0IGEgY2lyY3VsYXIgYXJjP1xuICAgICAgZWxzZSBjb250ZXh0LmFyYygwLCAwLCByMCwgYTEwLCBhMDAsIGN3KTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuXG4gICAgaWYgKGJ1ZmZlcikgcmV0dXJuIGNvbnRleHQgPSBudWxsLCBidWZmZXIgKyBcIlwiIHx8IG51bGw7XG4gIH1cblxuICBhcmMuY2VudHJvaWQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgciA9ICgraW5uZXJSYWRpdXMuYXBwbHkodGhpcywgYXJndW1lbnRzKSArICtvdXRlclJhZGl1cy5hcHBseSh0aGlzLCBhcmd1bWVudHMpKSAvIDIsXG4gICAgICAgIGEgPSAoK3N0YXJ0QW5nbGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSArICtlbmRBbmdsZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKSAvIDIgLSBwaSAvIDI7XG4gICAgcmV0dXJuIFtjb3MoYSkgKiByLCBzaW4oYSkgKiByXTtcbiAgfTtcblxuICBhcmMuaW5uZXJSYWRpdXMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaW5uZXJSYWRpdXMgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgYXJjKSA6IGlubmVyUmFkaXVzO1xuICB9O1xuXG4gIGFyYy5vdXRlclJhZGl1cyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChvdXRlclJhZGl1cyA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBhcmMpIDogb3V0ZXJSYWRpdXM7XG4gIH07XG5cbiAgYXJjLmNvcm5lclJhZGl1cyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjb3JuZXJSYWRpdXMgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgYXJjKSA6IGNvcm5lclJhZGl1cztcbiAgfTtcblxuICBhcmMucGFkUmFkaXVzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhZFJhZGl1cyA9IF8gPT0gbnVsbCA/IG51bGwgOiB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgYXJjKSA6IHBhZFJhZGl1cztcbiAgfTtcblxuICBhcmMuc3RhcnRBbmdsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdGFydEFuZ2xlID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGFyYykgOiBzdGFydEFuZ2xlO1xuICB9O1xuXG4gIGFyYy5lbmRBbmdsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChlbmRBbmdsZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBhcmMpIDogZW5kQW5nbGU7XG4gIH07XG5cbiAgYXJjLnBhZEFuZ2xlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhZEFuZ2xlID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGFyYykgOiBwYWRBbmdsZTtcbiAgfTtcblxuICBhcmMuY29udGV4dCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICgoY29udGV4dCA9IF8gPT0gbnVsbCA/IG51bGwgOiBfKSwgYXJjKSA6IGNvbnRleHQ7XG4gIH07XG5cbiAgcmV0dXJuIGFyYztcbn1cbiIsICJleHBvcnQgdmFyIHNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gXCJvYmplY3RcIiAmJiBcImxlbmd0aFwiIGluIHhcbiAgICA/IHggLy8gQXJyYXksIFR5cGVkQXJyYXksIE5vZGVMaXN0LCBhcnJheS1saWtlXG4gICAgOiBBcnJheS5mcm9tKHgpOyAvLyBNYXAsIFNldCwgaXRlcmFibGUsIHN0cmluZywgb3IgYW55dGhpbmcgZWxzZVxufVxuIiwgImZ1bmN0aW9uIExpbmVhcihjb250ZXh0KSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xufVxuXG5MaW5lYXIucHJvdG90eXBlID0ge1xuICBhcmVhU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSAwO1xuICB9LFxuICBhcmVhRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gTmFOO1xuICB9LFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX2xpbmUgfHwgKHRoaXMuX2xpbmUgIT09IDAgJiYgdGhpcy5fcG9pbnQgPT09IDEpKSB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIHRoaXMuX2xpbmUgPSAxIC0gdGhpcy5fbGluZTtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB4ID0gK3gsIHkgPSAreTtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgdGhpcy5fbGluZSA/IHRoaXMuX2NvbnRleHQubGluZVRvKHgsIHkpIDogdGhpcy5fY29udGV4dC5tb3ZlVG8oeCwgeSk7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IC8vIHByb2NlZWRcbiAgICAgIGRlZmF1bHQ6IHRoaXMuX2NvbnRleHQubGluZVRvKHgsIHkpOyBicmVhaztcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBMaW5lYXIoY29udGV4dCk7XG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIHgocCkge1xuICByZXR1cm4gcFswXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHkocCkge1xuICByZXR1cm4gcFsxXTtcbn1cbiIsICJpbXBvcnQge3BhdGh9IGZyb20gXCJkMy1wYXRoXCI7XG5pbXBvcnQgYXJyYXkgZnJvbSBcIi4vYXJyYXkuanNcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuaW1wb3J0IGN1cnZlTGluZWFyIGZyb20gXCIuL2N1cnZlL2xpbmVhci5qc1wiO1xuaW1wb3J0IHt4IGFzIHBvaW50WCwgeSBhcyBwb2ludFl9IGZyb20gXCIuL3BvaW50LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgsIHkpIHtcbiAgdmFyIGRlZmluZWQgPSBjb25zdGFudCh0cnVlKSxcbiAgICAgIGNvbnRleHQgPSBudWxsLFxuICAgICAgY3VydmUgPSBjdXJ2ZUxpbmVhcixcbiAgICAgIG91dHB1dCA9IG51bGw7XG5cbiAgeCA9IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyB4IDogKHggPT09IHVuZGVmaW5lZCkgPyBwb2ludFggOiBjb25zdGFudCh4KTtcbiAgeSA9IHR5cGVvZiB5ID09PSBcImZ1bmN0aW9uXCIgPyB5IDogKHkgPT09IHVuZGVmaW5lZCkgPyBwb2ludFkgOiBjb25zdGFudCh5KTtcblxuICBmdW5jdGlvbiBsaW5lKGRhdGEpIHtcbiAgICB2YXIgaSxcbiAgICAgICAgbiA9IChkYXRhID0gYXJyYXkoZGF0YSkpLmxlbmd0aCxcbiAgICAgICAgZCxcbiAgICAgICAgZGVmaW5lZDAgPSBmYWxzZSxcbiAgICAgICAgYnVmZmVyO1xuXG4gICAgaWYgKGNvbnRleHQgPT0gbnVsbCkgb3V0cHV0ID0gY3VydmUoYnVmZmVyID0gcGF0aCgpKTtcblxuICAgIGZvciAoaSA9IDA7IGkgPD0gbjsgKytpKSB7XG4gICAgICBpZiAoIShpIDwgbiAmJiBkZWZpbmVkKGQgPSBkYXRhW2ldLCBpLCBkYXRhKSkgPT09IGRlZmluZWQwKSB7XG4gICAgICAgIGlmIChkZWZpbmVkMCA9ICFkZWZpbmVkMCkgb3V0cHV0LmxpbmVTdGFydCgpO1xuICAgICAgICBlbHNlIG91dHB1dC5saW5lRW5kKCk7XG4gICAgICB9XG4gICAgICBpZiAoZGVmaW5lZDApIG91dHB1dC5wb2ludCgreChkLCBpLCBkYXRhKSwgK3koZCwgaSwgZGF0YSkpO1xuICAgIH1cblxuICAgIGlmIChidWZmZXIpIHJldHVybiBvdXRwdXQgPSBudWxsLCBidWZmZXIgKyBcIlwiIHx8IG51bGw7XG4gIH1cblxuICBsaW5lLnggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBsaW5lKSA6IHg7XG4gIH07XG5cbiAgbGluZS55ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHkgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgbGluZSkgOiB5O1xuICB9O1xuXG4gIGxpbmUuZGVmaW5lZCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkZWZpbmVkID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCghIV8pLCBsaW5lKSA6IGRlZmluZWQ7XG4gIH07XG5cbiAgbGluZS5jdXJ2ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjdXJ2ZSA9IF8sIGNvbnRleHQgIT0gbnVsbCAmJiAob3V0cHV0ID0gY3VydmUoY29udGV4dCkpLCBsaW5lKSA6IGN1cnZlO1xuICB9O1xuXG4gIGxpbmUuY29udGV4dCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChfID09IG51bGwgPyBjb250ZXh0ID0gb3V0cHV0ID0gbnVsbCA6IG91dHB1dCA9IGN1cnZlKGNvbnRleHQgPSBfKSwgbGluZSkgOiBjb250ZXh0O1xuICB9O1xuXG4gIHJldHVybiBsaW5lO1xufVxuIiwgImltcG9ydCBjdXJ2ZUxpbmVhciBmcm9tIFwiLi9saW5lYXIuanNcIjtcblxuZXhwb3J0IHZhciBjdXJ2ZVJhZGlhbExpbmVhciA9IGN1cnZlUmFkaWFsKGN1cnZlTGluZWFyKTtcblxuZnVuY3Rpb24gUmFkaWFsKGN1cnZlKSB7XG4gIHRoaXMuX2N1cnZlID0gY3VydmU7XG59XG5cblJhZGlhbC5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fY3VydmUuYXJlYVN0YXJ0KCk7XG4gIH0sXG4gIGFyZWFFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2N1cnZlLmFyZWFFbmQoKTtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9jdXJ2ZS5saW5lU3RhcnQoKTtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fY3VydmUubGluZUVuZCgpO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oYSwgcikge1xuICAgIHRoaXMuX2N1cnZlLnBvaW50KHIgKiBNYXRoLnNpbihhKSwgciAqIC1NYXRoLmNvcyhhKSk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGN1cnZlUmFkaWFsKGN1cnZlKSB7XG5cbiAgZnVuY3Rpb24gcmFkaWFsKGNvbnRleHQpIHtcbiAgICByZXR1cm4gbmV3IFJhZGlhbChjdXJ2ZShjb250ZXh0KSk7XG4gIH1cblxuICByYWRpYWwuX2N1cnZlID0gY3VydmU7XG5cbiAgcmV0dXJuIHJhZGlhbDtcbn1cbiIsICJpbXBvcnQgY3VydmVSYWRpYWwsIHtjdXJ2ZVJhZGlhbExpbmVhcn0gZnJvbSBcIi4vY3VydmUvcmFkaWFsLmpzXCI7XG5pbXBvcnQgbGluZSBmcm9tIFwiLi9saW5lLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5lUmFkaWFsKGwpIHtcbiAgdmFyIGMgPSBsLmN1cnZlO1xuXG4gIGwuYW5nbGUgPSBsLngsIGRlbGV0ZSBsLng7XG4gIGwucmFkaXVzID0gbC55LCBkZWxldGUgbC55O1xuXG4gIGwuY3VydmUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyBjKGN1cnZlUmFkaWFsKF8pKSA6IGMoKS5fY3VydmU7XG4gIH07XG5cbiAgcmV0dXJuIGw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbGluZVJhZGlhbChsaW5lKCkuY3VydmUoY3VydmVSYWRpYWxMaW5lYXIpKTtcbn1cbiIsICJpbXBvcnQge3BhdGh9IGZyb20gXCJkMy1wYXRoXCI7XG5pbXBvcnQge3NsaWNlfSBmcm9tIFwiLi4vYXJyYXkuanNcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCB7eCBhcyBwb2ludFgsIHkgYXMgcG9pbnRZfSBmcm9tIFwiLi4vcG9pbnQuanNcIjtcbmltcG9ydCBwb2ludFJhZGlhbCBmcm9tIFwiLi4vcG9pbnRSYWRpYWwuanNcIjtcblxuZnVuY3Rpb24gbGlua1NvdXJjZShkKSB7XG4gIHJldHVybiBkLnNvdXJjZTtcbn1cblxuZnVuY3Rpb24gbGlua1RhcmdldChkKSB7XG4gIHJldHVybiBkLnRhcmdldDtcbn1cblxuZnVuY3Rpb24gbGluayhjdXJ2ZSkge1xuICB2YXIgc291cmNlID0gbGlua1NvdXJjZSxcbiAgICAgIHRhcmdldCA9IGxpbmtUYXJnZXQsXG4gICAgICB4ID0gcG9pbnRYLFxuICAgICAgeSA9IHBvaW50WSxcbiAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIGxpbmsoKSB7XG4gICAgdmFyIGJ1ZmZlciwgYXJndiA9IHNsaWNlLmNhbGwoYXJndW1lbnRzKSwgcyA9IHNvdXJjZS5hcHBseSh0aGlzLCBhcmd2KSwgdCA9IHRhcmdldC5hcHBseSh0aGlzLCBhcmd2KTtcbiAgICBpZiAoIWNvbnRleHQpIGNvbnRleHQgPSBidWZmZXIgPSBwYXRoKCk7XG4gICAgY3VydmUoY29udGV4dCwgK3guYXBwbHkodGhpcywgKGFyZ3ZbMF0gPSBzLCBhcmd2KSksICt5LmFwcGx5KHRoaXMsIGFyZ3YpLCAreC5hcHBseSh0aGlzLCAoYXJndlswXSA9IHQsIGFyZ3YpKSwgK3kuYXBwbHkodGhpcywgYXJndikpO1xuICAgIGlmIChidWZmZXIpIHJldHVybiBjb250ZXh0ID0gbnVsbCwgYnVmZmVyICsgXCJcIiB8fCBudWxsO1xuICB9XG5cbiAgbGluay5zb3VyY2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc291cmNlID0gXywgbGluaykgOiBzb3VyY2U7XG4gIH07XG5cbiAgbGluay50YXJnZXQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGFyZ2V0ID0gXywgbGluaykgOiB0YXJnZXQ7XG4gIH07XG5cbiAgbGluay54ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgbGluaykgOiB4O1xuICB9O1xuXG4gIGxpbmsueSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh5ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGxpbmspIDogeTtcbiAgfTtcblxuICBsaW5rLmNvbnRleHQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoKGNvbnRleHQgPSBfID09IG51bGwgPyBudWxsIDogXyksIGxpbmspIDogY29udGV4dDtcbiAgfTtcblxuICByZXR1cm4gbGluaztcbn1cblxuZnVuY3Rpb24gY3VydmVIb3Jpem9udGFsKGNvbnRleHQsIHgwLCB5MCwgeDEsIHkxKSB7XG4gIGNvbnRleHQubW92ZVRvKHgwLCB5MCk7XG4gIGNvbnRleHQuYmV6aWVyQ3VydmVUbyh4MCA9ICh4MCArIHgxKSAvIDIsIHkwLCB4MCwgeTEsIHgxLCB5MSk7XG59XG5cbmZ1bmN0aW9uIGN1cnZlVmVydGljYWwoY29udGV4dCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgY29udGV4dC5tb3ZlVG8oeDAsIHkwKTtcbiAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKHgwLCB5MCA9ICh5MCArIHkxKSAvIDIsIHgxLCB5MCwgeDEsIHkxKTtcbn1cblxuZnVuY3Rpb24gY3VydmVSYWRpYWwoY29udGV4dCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgdmFyIHAwID0gcG9pbnRSYWRpYWwoeDAsIHkwKSxcbiAgICAgIHAxID0gcG9pbnRSYWRpYWwoeDAsIHkwID0gKHkwICsgeTEpIC8gMiksXG4gICAgICBwMiA9IHBvaW50UmFkaWFsKHgxLCB5MCksXG4gICAgICBwMyA9IHBvaW50UmFkaWFsKHgxLCB5MSk7XG4gIGNvbnRleHQubW92ZVRvKHAwWzBdLCBwMFsxXSk7XG4gIGNvbnRleHQuYmV6aWVyQ3VydmVUbyhwMVswXSwgcDFbMV0sIHAyWzBdLCBwMlsxXSwgcDNbMF0sIHAzWzFdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtIb3Jpem9udGFsKCkge1xuICByZXR1cm4gbGluayhjdXJ2ZUhvcml6b250YWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlua1ZlcnRpY2FsKCkge1xuICByZXR1cm4gbGluayhjdXJ2ZVZlcnRpY2FsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtSYWRpYWwoKSB7XG4gIHZhciBsID0gbGluayhjdXJ2ZVJhZGlhbCk7XG4gIGwuYW5nbGUgPSBsLngsIGRlbGV0ZSBsLng7XG4gIGwucmFkaXVzID0gbC55LCBkZWxldGUgbC55O1xuICByZXR1cm4gbDtcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gcG9pbnQodGhhdCwgeCwgeSkge1xuICB0aGF0Ll9jb250ZXh0LmJlemllckN1cnZlVG8oXG4gICAgKDIgKiB0aGF0Ll94MCArIHRoYXQuX3gxKSAvIDMsXG4gICAgKDIgKiB0aGF0Ll95MCArIHRoYXQuX3kxKSAvIDMsXG4gICAgKHRoYXQuX3gwICsgMiAqIHRoYXQuX3gxKSAvIDMsXG4gICAgKHRoYXQuX3kwICsgMiAqIHRoYXQuX3kxKSAvIDMsXG4gICAgKHRoYXQuX3gwICsgNCAqIHRoYXQuX3gxICsgeCkgLyA2LFxuICAgICh0aGF0Ll95MCArIDQgKiB0aGF0Ll95MSArIHkpIC8gNlxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQmFzaXMoY29udGV4dCkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbn1cblxuQmFzaXMucHJvdG90eXBlID0ge1xuICBhcmVhU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSAwO1xuICB9LFxuICBhcmVhRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gTmFOO1xuICB9LFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3gwID0gdGhpcy5feDEgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSBOYU47XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDM6IHBvaW50KHRoaXMsIHRoaXMuX3gxLCB0aGlzLl95MSk7IC8vIHByb2NlZWRcbiAgICAgIGNhc2UgMjogdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsIHRoaXMuX3kxKTsgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIHRoaXMuX3BvaW50ID09PSAxKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgeCA9ICt4LCB5ID0gK3k7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAwOiB0aGlzLl9wb2ludCA9IDE7IHRoaXMuX2xpbmUgPyB0aGlzLl9jb250ZXh0LmxpbmVUbyh4LCB5KSA6IHRoaXMuX2NvbnRleHQubW92ZVRvKHgsIHkpOyBicmVhaztcbiAgICAgIGNhc2UgMTogdGhpcy5fcG9pbnQgPSAyOyBicmVhaztcbiAgICAgIGNhc2UgMjogdGhpcy5fcG9pbnQgPSAzOyB0aGlzLl9jb250ZXh0LmxpbmVUbygoNSAqIHRoaXMuX3gwICsgdGhpcy5feDEpIC8gNiwgKDUgKiB0aGlzLl95MCArIHRoaXMuX3kxKSAvIDYpOyAvLyBwcm9jZWVkXG4gICAgICBkZWZhdWx0OiBwb2ludCh0aGlzLCB4LCB5KTsgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMuX3gwID0gdGhpcy5feDEsIHRoaXMuX3gxID0geDtcbiAgICB0aGlzLl95MCA9IHRoaXMuX3kxLCB0aGlzLl95MSA9IHk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBCYXNpcyhjb250ZXh0KTtcbn1cbiIsICJpbXBvcnQge0Jhc2lzfSBmcm9tIFwiLi9iYXNpcy5qc1wiO1xuXG5mdW5jdGlvbiBCdW5kbGUoY29udGV4dCwgYmV0YSkge1xuICB0aGlzLl9iYXNpcyA9IG5ldyBCYXNpcyhjb250ZXh0KTtcbiAgdGhpcy5fYmV0YSA9IGJldGE7XG59XG5cbkJ1bmRsZS5wcm90b3R5cGUgPSB7XG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5feCA9IFtdO1xuICAgIHRoaXMuX3kgPSBbXTtcbiAgICB0aGlzLl9iYXNpcy5saW5lU3RhcnQoKTtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdmFyIHggPSB0aGlzLl94LFxuICAgICAgICB5ID0gdGhpcy5feSxcbiAgICAgICAgaiA9IHgubGVuZ3RoIC0gMTtcblxuICAgIGlmIChqID4gMCkge1xuICAgICAgdmFyIHgwID0geFswXSxcbiAgICAgICAgICB5MCA9IHlbMF0sXG4gICAgICAgICAgZHggPSB4W2pdIC0geDAsXG4gICAgICAgICAgZHkgPSB5W2pdIC0geTAsXG4gICAgICAgICAgaSA9IC0xLFxuICAgICAgICAgIHQ7XG5cbiAgICAgIHdoaWxlICgrK2kgPD0gaikge1xuICAgICAgICB0ID0gaSAvIGo7XG4gICAgICAgIHRoaXMuX2Jhc2lzLnBvaW50KFxuICAgICAgICAgIHRoaXMuX2JldGEgKiB4W2ldICsgKDEgLSB0aGlzLl9iZXRhKSAqICh4MCArIHQgKiBkeCksXG4gICAgICAgICAgdGhpcy5fYmV0YSAqIHlbaV0gKyAoMSAtIHRoaXMuX2JldGEpICogKHkwICsgdCAqIGR5KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3ggPSB0aGlzLl95ID0gbnVsbDtcbiAgICB0aGlzLl9iYXNpcy5saW5lRW5kKCk7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgdGhpcy5feC5wdXNoKCt4KTtcbiAgICB0aGlzLl95LnB1c2goK3kpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gY3VzdG9tKGJldGEpIHtcblxuICBmdW5jdGlvbiBidW5kbGUoY29udGV4dCkge1xuICAgIHJldHVybiBiZXRhID09PSAxID8gbmV3IEJhc2lzKGNvbnRleHQpIDogbmV3IEJ1bmRsZShjb250ZXh0LCBiZXRhKTtcbiAgfVxuXG4gIGJ1bmRsZS5iZXRhID0gZnVuY3Rpb24oYmV0YSkge1xuICAgIHJldHVybiBjdXN0b20oK2JldGEpO1xuICB9O1xuXG4gIHJldHVybiBidW5kbGU7XG59KSgwLjg1KTtcbiIsICJleHBvcnQgZGVmYXVsdCB4ID0+ICgpID0+IHg7XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gWm9vbUV2ZW50KHR5cGUsIHtcbiAgc291cmNlRXZlbnQsXG4gIHRhcmdldCxcbiAgdHJhbnNmb3JtLFxuICBkaXNwYXRjaFxufSkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLCB7XG4gICAgdHlwZToge3ZhbHVlOiB0eXBlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWV9LFxuICAgIHNvdXJjZUV2ZW50OiB7dmFsdWU6IHNvdXJjZUV2ZW50LCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWV9LFxuICAgIHRhcmdldDoge3ZhbHVlOiB0YXJnZXQsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0sXG4gICAgdHJhbnNmb3JtOiB7dmFsdWU6IHRyYW5zZm9ybSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlfSxcbiAgICBfOiB7dmFsdWU6IGRpc3BhdGNofVxuICB9KTtcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gVHJhbnNmb3JtKGssIHgsIHkpIHtcbiAgdGhpcy5rID0gaztcbiAgdGhpcy54ID0geDtcbiAgdGhpcy55ID0geTtcbn1cblxuVHJhbnNmb3JtLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IFRyYW5zZm9ybSxcbiAgc2NhbGU6IGZ1bmN0aW9uKGspIHtcbiAgICByZXR1cm4gayA9PT0gMSA/IHRoaXMgOiBuZXcgVHJhbnNmb3JtKHRoaXMuayAqIGssIHRoaXMueCwgdGhpcy55KTtcbiAgfSxcbiAgdHJhbnNsYXRlOiBmdW5jdGlvbih4LCB5KSB7XG4gICAgcmV0dXJuIHggPT09IDAgJiB5ID09PSAwID8gdGhpcyA6IG5ldyBUcmFuc2Zvcm0odGhpcy5rLCB0aGlzLnggKyB0aGlzLmsgKiB4LCB0aGlzLnkgKyB0aGlzLmsgKiB5KTtcbiAgfSxcbiAgYXBwbHk6IGZ1bmN0aW9uKHBvaW50KSB7XG4gICAgcmV0dXJuIFtwb2ludFswXSAqIHRoaXMuayArIHRoaXMueCwgcG9pbnRbMV0gKiB0aGlzLmsgKyB0aGlzLnldO1xuICB9LFxuICBhcHBseVg6IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4geCAqIHRoaXMuayArIHRoaXMueDtcbiAgfSxcbiAgYXBwbHlZOiBmdW5jdGlvbih5KSB7XG4gICAgcmV0dXJuIHkgKiB0aGlzLmsgKyB0aGlzLnk7XG4gIH0sXG4gIGludmVydDogZnVuY3Rpb24obG9jYXRpb24pIHtcbiAgICByZXR1cm4gWyhsb2NhdGlvblswXSAtIHRoaXMueCkgLyB0aGlzLmssIChsb2NhdGlvblsxXSAtIHRoaXMueSkgLyB0aGlzLmtdO1xuICB9LFxuICBpbnZlcnRYOiBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuICh4IC0gdGhpcy54KSAvIHRoaXMuaztcbiAgfSxcbiAgaW52ZXJ0WTogZnVuY3Rpb24oeSkge1xuICAgIHJldHVybiAoeSAtIHRoaXMueSkgLyB0aGlzLms7XG4gIH0sXG4gIHJlc2NhbGVYOiBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIHguY29weSgpLmRvbWFpbih4LnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WCwgdGhpcykubWFwKHguaW52ZXJ0LCB4KSk7XG4gIH0sXG4gIHJlc2NhbGVZOiBmdW5jdGlvbih5KSB7XG4gICAgcmV0dXJuIHkuY29weSgpLmRvbWFpbih5LnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WSwgdGhpcykubWFwKHkuaW52ZXJ0LCB5KSk7XG4gIH0sXG4gIHRvU3RyaW5nOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gXCJ0cmFuc2xhdGUoXCIgKyB0aGlzLnggKyBcIixcIiArIHRoaXMueSArIFwiKSBzY2FsZShcIiArIHRoaXMuayArIFwiKVwiO1xuICB9XG59O1xuXG5leHBvcnQgdmFyIGlkZW50aXR5ID0gbmV3IFRyYW5zZm9ybSgxLCAwLCAwKTtcblxudHJhbnNmb3JtLnByb3RvdHlwZSA9IFRyYW5zZm9ybS5wcm90b3R5cGU7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRyYW5zZm9ybShub2RlKSB7XG4gIHdoaWxlICghbm9kZS5fX3pvb20pIGlmICghKG5vZGUgPSBub2RlLnBhcmVudE5vZGUpKSByZXR1cm4gaWRlbnRpdHk7XG4gIHJldHVybiBub2RlLl9fem9vbTtcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gbm9wcm9wYWdhdGlvbihldmVudCkge1xuICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZXZlbnQpIHtcbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG59XG4iLCAiaW1wb3J0IHtkaXNwYXRjaH0gZnJvbSBcImQzLWRpc3BhdGNoXCI7XG5pbXBvcnQge2RyYWdEaXNhYmxlLCBkcmFnRW5hYmxlfSBmcm9tIFwiZDMtZHJhZ1wiO1xuaW1wb3J0IHtpbnRlcnBvbGF0ZVpvb219IGZyb20gXCJkMy1pbnRlcnBvbGF0ZVwiO1xuaW1wb3J0IHtzZWxlY3QsIHBvaW50ZXJ9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCB7aW50ZXJydXB0fSBmcm9tIFwiZDMtdHJhbnNpdGlvblwiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5pbXBvcnQgWm9vbUV2ZW50IGZyb20gXCIuL2V2ZW50LmpzXCI7XG5pbXBvcnQge1RyYW5zZm9ybSwgaWRlbnRpdHl9IGZyb20gXCIuL3RyYW5zZm9ybS5qc1wiO1xuaW1wb3J0IG5vZXZlbnQsIHtub3Byb3BhZ2F0aW9ufSBmcm9tIFwiLi9ub2V2ZW50LmpzXCI7XG5cbi8vIElnbm9yZSByaWdodC1jbGljaywgc2luY2UgdGhhdCBzaG91bGQgb3BlbiB0aGUgY29udGV4dCBtZW51LlxuLy8gZXhjZXB0IGZvciBwaW5jaC10by16b29tLCB3aGljaCBpcyBzZW50IGFzIGEgd2hlZWwrY3RybEtleSBldmVudFxuZnVuY3Rpb24gZGVmYXVsdEZpbHRlcihldmVudCkge1xuICByZXR1cm4gKCFldmVudC5jdHJsS2V5IHx8IGV2ZW50LnR5cGUgPT09ICd3aGVlbCcpICYmICFldmVudC5idXR0b247XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRFeHRlbnQoKSB7XG4gIHZhciBlID0gdGhpcztcbiAgaWYgKGUgaW5zdGFuY2VvZiBTVkdFbGVtZW50KSB7XG4gICAgZSA9IGUub3duZXJTVkdFbGVtZW50IHx8IGU7XG4gICAgaWYgKGUuaGFzQXR0cmlidXRlKFwidmlld0JveFwiKSkge1xuICAgICAgZSA9IGUudmlld0JveC5iYXNlVmFsO1xuICAgICAgcmV0dXJuIFtbZS54LCBlLnldLCBbZS54ICsgZS53aWR0aCwgZS55ICsgZS5oZWlnaHRdXTtcbiAgICB9XG4gICAgcmV0dXJuIFtbMCwgMF0sIFtlLndpZHRoLmJhc2VWYWwudmFsdWUsIGUuaGVpZ2h0LmJhc2VWYWwudmFsdWVdXTtcbiAgfVxuICByZXR1cm4gW1swLCAwXSwgW2UuY2xpZW50V2lkdGgsIGUuY2xpZW50SGVpZ2h0XV07XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRUcmFuc2Zvcm0oKSB7XG4gIHJldHVybiB0aGlzLl9fem9vbSB8fCBpZGVudGl0eTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFdoZWVsRGVsdGEoZXZlbnQpIHtcbiAgcmV0dXJuIC1ldmVudC5kZWx0YVkgKiAoZXZlbnQuZGVsdGFNb2RlID09PSAxID8gMC4wNSA6IGV2ZW50LmRlbHRhTW9kZSA/IDEgOiAwLjAwMikgKiAoZXZlbnQuY3RybEtleSA/IDEwIDogMSk7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRUb3VjaGFibGUoKSB7XG4gIHJldHVybiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMgfHwgKFwib250b3VjaHN0YXJ0XCIgaW4gdGhpcyk7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRDb25zdHJhaW4odHJhbnNmb3JtLCBleHRlbnQsIHRyYW5zbGF0ZUV4dGVudCkge1xuICB2YXIgZHgwID0gdHJhbnNmb3JtLmludmVydFgoZXh0ZW50WzBdWzBdKSAtIHRyYW5zbGF0ZUV4dGVudFswXVswXSxcbiAgICAgIGR4MSA9IHRyYW5zZm9ybS5pbnZlcnRYKGV4dGVudFsxXVswXSkgLSB0cmFuc2xhdGVFeHRlbnRbMV1bMF0sXG4gICAgICBkeTAgPSB0cmFuc2Zvcm0uaW52ZXJ0WShleHRlbnRbMF1bMV0pIC0gdHJhbnNsYXRlRXh0ZW50WzBdWzFdLFxuICAgICAgZHkxID0gdHJhbnNmb3JtLmludmVydFkoZXh0ZW50WzFdWzFdKSAtIHRyYW5zbGF0ZUV4dGVudFsxXVsxXTtcbiAgcmV0dXJuIHRyYW5zZm9ybS50cmFuc2xhdGUoXG4gICAgZHgxID4gZHgwID8gKGR4MCArIGR4MSkgLyAyIDogTWF0aC5taW4oMCwgZHgwKSB8fCBNYXRoLm1heCgwLCBkeDEpLFxuICAgIGR5MSA+IGR5MCA/IChkeTAgKyBkeTEpIC8gMiA6IE1hdGgubWluKDAsIGR5MCkgfHwgTWF0aC5tYXgoMCwgZHkxKVxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGZpbHRlciA9IGRlZmF1bHRGaWx0ZXIsXG4gICAgICBleHRlbnQgPSBkZWZhdWx0RXh0ZW50LFxuICAgICAgY29uc3RyYWluID0gZGVmYXVsdENvbnN0cmFpbixcbiAgICAgIHdoZWVsRGVsdGEgPSBkZWZhdWx0V2hlZWxEZWx0YSxcbiAgICAgIHRvdWNoYWJsZSA9IGRlZmF1bHRUb3VjaGFibGUsXG4gICAgICBzY2FsZUV4dGVudCA9IFswLCBJbmZpbml0eV0sXG4gICAgICB0cmFuc2xhdGVFeHRlbnQgPSBbWy1JbmZpbml0eSwgLUluZmluaXR5XSwgW0luZmluaXR5LCBJbmZpbml0eV1dLFxuICAgICAgZHVyYXRpb24gPSAyNTAsXG4gICAgICBpbnRlcnBvbGF0ZSA9IGludGVycG9sYXRlWm9vbSxcbiAgICAgIGxpc3RlbmVycyA9IGRpc3BhdGNoKFwic3RhcnRcIiwgXCJ6b29tXCIsIFwiZW5kXCIpLFxuICAgICAgdG91Y2hzdGFydGluZyxcbiAgICAgIHRvdWNoZmlyc3QsXG4gICAgICB0b3VjaGVuZGluZyxcbiAgICAgIHRvdWNoRGVsYXkgPSA1MDAsXG4gICAgICB3aGVlbERlbGF5ID0gMTUwLFxuICAgICAgY2xpY2tEaXN0YW5jZTIgPSAwLFxuICAgICAgdGFwRGlzdGFuY2UgPSAxMDtcblxuICBmdW5jdGlvbiB6b29tKHNlbGVjdGlvbikge1xuICAgIHNlbGVjdGlvblxuICAgICAgICAucHJvcGVydHkoXCJfX3pvb21cIiwgZGVmYXVsdFRyYW5zZm9ybSlcbiAgICAgICAgLm9uKFwid2hlZWwuem9vbVwiLCB3aGVlbGVkKVxuICAgICAgICAub24oXCJtb3VzZWRvd24uem9vbVwiLCBtb3VzZWRvd25lZClcbiAgICAgICAgLm9uKFwiZGJsY2xpY2suem9vbVwiLCBkYmxjbGlja2VkKVxuICAgICAgLmZpbHRlcih0b3VjaGFibGUpXG4gICAgICAgIC5vbihcInRvdWNoc3RhcnQuem9vbVwiLCB0b3VjaHN0YXJ0ZWQpXG4gICAgICAgIC5vbihcInRvdWNobW92ZS56b29tXCIsIHRvdWNobW92ZWQpXG4gICAgICAgIC5vbihcInRvdWNoZW5kLnpvb20gdG91Y2hjYW5jZWwuem9vbVwiLCB0b3VjaGVuZGVkKVxuICAgICAgICAuc3R5bGUoXCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3JcIiwgXCJyZ2JhKDAsMCwwLDApXCIpO1xuICB9XG5cbiAgem9vbS50cmFuc2Zvcm0gPSBmdW5jdGlvbihjb2xsZWN0aW9uLCB0cmFuc2Zvcm0sIHBvaW50LCBldmVudCkge1xuICAgIHZhciBzZWxlY3Rpb24gPSBjb2xsZWN0aW9uLnNlbGVjdGlvbiA/IGNvbGxlY3Rpb24uc2VsZWN0aW9uKCkgOiBjb2xsZWN0aW9uO1xuICAgIHNlbGVjdGlvbi5wcm9wZXJ0eShcIl9fem9vbVwiLCBkZWZhdWx0VHJhbnNmb3JtKTtcbiAgICBpZiAoY29sbGVjdGlvbiAhPT0gc2VsZWN0aW9uKSB7XG4gICAgICBzY2hlZHVsZShjb2xsZWN0aW9uLCB0cmFuc2Zvcm0sIHBvaW50LCBldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGVjdGlvbi5pbnRlcnJ1cHQoKS5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICBnZXN0dXJlKHRoaXMsIGFyZ3VtZW50cylcbiAgICAgICAgICAuZXZlbnQoZXZlbnQpXG4gICAgICAgICAgLnN0YXJ0KClcbiAgICAgICAgICAuem9vbShudWxsLCB0eXBlb2YgdHJhbnNmb3JtID09PSBcImZ1bmN0aW9uXCIgPyB0cmFuc2Zvcm0uYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IHRyYW5zZm9ybSlcbiAgICAgICAgICAuZW5kKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgem9vbS5zY2FsZUJ5ID0gZnVuY3Rpb24oc2VsZWN0aW9uLCBrLCBwLCBldmVudCkge1xuICAgIHpvb20uc2NhbGVUbyhzZWxlY3Rpb24sIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGswID0gdGhpcy5fX3pvb20uayxcbiAgICAgICAgICBrMSA9IHR5cGVvZiBrID09PSBcImZ1bmN0aW9uXCIgPyBrLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiBrO1xuICAgICAgcmV0dXJuIGswICogazE7XG4gICAgfSwgcCwgZXZlbnQpO1xuICB9O1xuXG4gIHpvb20uc2NhbGVUbyA9IGZ1bmN0aW9uKHNlbGVjdGlvbiwgaywgcCwgZXZlbnQpIHtcbiAgICB6b29tLnRyYW5zZm9ybShzZWxlY3Rpb24sIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGUgPSBleHRlbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKSxcbiAgICAgICAgICB0MCA9IHRoaXMuX196b29tLFxuICAgICAgICAgIHAwID0gcCA9PSBudWxsID8gY2VudHJvaWQoZSkgOiB0eXBlb2YgcCA9PT0gXCJmdW5jdGlvblwiID8gcC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogcCxcbiAgICAgICAgICBwMSA9IHQwLmludmVydChwMCksXG4gICAgICAgICAgazEgPSB0eXBlb2YgayA9PT0gXCJmdW5jdGlvblwiID8gay5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogaztcbiAgICAgIHJldHVybiBjb25zdHJhaW4odHJhbnNsYXRlKHNjYWxlKHQwLCBrMSksIHAwLCBwMSksIGUsIHRyYW5zbGF0ZUV4dGVudCk7XG4gICAgfSwgcCwgZXZlbnQpO1xuICB9O1xuXG4gIHpvb20udHJhbnNsYXRlQnkgPSBmdW5jdGlvbihzZWxlY3Rpb24sIHgsIHksIGV2ZW50KSB7XG4gICAgem9vbS50cmFuc2Zvcm0oc2VsZWN0aW9uLCBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBjb25zdHJhaW4odGhpcy5fX3pvb20udHJhbnNsYXRlKFxuICAgICAgICB0eXBlb2YgeCA9PT0gXCJmdW5jdGlvblwiID8geC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogeCxcbiAgICAgICAgdHlwZW9mIHkgPT09IFwiZnVuY3Rpb25cIiA/IHkuYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IHlcbiAgICAgICksIGV4dGVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCB0cmFuc2xhdGVFeHRlbnQpO1xuICAgIH0sIG51bGwsIGV2ZW50KTtcbiAgfTtcblxuICB6b29tLnRyYW5zbGF0ZVRvID0gZnVuY3Rpb24oc2VsZWN0aW9uLCB4LCB5LCBwLCBldmVudCkge1xuICAgIHpvb20udHJhbnNmb3JtKHNlbGVjdGlvbiwgZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZSA9IGV4dGVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpLFxuICAgICAgICAgIHQgPSB0aGlzLl9fem9vbSxcbiAgICAgICAgICBwMCA9IHAgPT0gbnVsbCA/IGNlbnRyb2lkKGUpIDogdHlwZW9mIHAgPT09IFwiZnVuY3Rpb25cIiA/IHAuYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IHA7XG4gICAgICByZXR1cm4gY29uc3RyYWluKGlkZW50aXR5LnRyYW5zbGF0ZShwMFswXSwgcDBbMV0pLnNjYWxlKHQuaykudHJhbnNsYXRlKFxuICAgICAgICB0eXBlb2YgeCA9PT0gXCJmdW5jdGlvblwiID8gLXguYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IC14LFxuICAgICAgICB0eXBlb2YgeSA9PT0gXCJmdW5jdGlvblwiID8gLXkuYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IC15XG4gICAgICApLCBlLCB0cmFuc2xhdGVFeHRlbnQpO1xuICAgIH0sIHAsIGV2ZW50KTtcbiAgfTtcblxuICBmdW5jdGlvbiBzY2FsZSh0cmFuc2Zvcm0sIGspIHtcbiAgICBrID0gTWF0aC5tYXgoc2NhbGVFeHRlbnRbMF0sIE1hdGgubWluKHNjYWxlRXh0ZW50WzFdLCBrKSk7XG4gICAgcmV0dXJuIGsgPT09IHRyYW5zZm9ybS5rID8gdHJhbnNmb3JtIDogbmV3IFRyYW5zZm9ybShrLCB0cmFuc2Zvcm0ueCwgdHJhbnNmb3JtLnkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNsYXRlKHRyYW5zZm9ybSwgcDAsIHAxKSB7XG4gICAgdmFyIHggPSBwMFswXSAtIHAxWzBdICogdHJhbnNmb3JtLmssIHkgPSBwMFsxXSAtIHAxWzFdICogdHJhbnNmb3JtLms7XG4gICAgcmV0dXJuIHggPT09IHRyYW5zZm9ybS54ICYmIHkgPT09IHRyYW5zZm9ybS55ID8gdHJhbnNmb3JtIDogbmV3IFRyYW5zZm9ybSh0cmFuc2Zvcm0uaywgeCwgeSk7XG4gIH1cblxuICBmdW5jdGlvbiBjZW50cm9pZChleHRlbnQpIHtcbiAgICByZXR1cm4gWygrZXh0ZW50WzBdWzBdICsgK2V4dGVudFsxXVswXSkgLyAyLCAoK2V4dGVudFswXVsxXSArICtleHRlbnRbMV1bMV0pIC8gMl07XG4gIH1cblxuICBmdW5jdGlvbiBzY2hlZHVsZSh0cmFuc2l0aW9uLCB0cmFuc2Zvcm0sIHBvaW50LCBldmVudCkge1xuICAgIHRyYW5zaXRpb25cbiAgICAgICAgLm9uKFwic3RhcnQuem9vbVwiLCBmdW5jdGlvbigpIHsgZ2VzdHVyZSh0aGlzLCBhcmd1bWVudHMpLmV2ZW50KGV2ZW50KS5zdGFydCgpOyB9KVxuICAgICAgICAub24oXCJpbnRlcnJ1cHQuem9vbSBlbmQuem9vbVwiLCBmdW5jdGlvbigpIHsgZ2VzdHVyZSh0aGlzLCBhcmd1bWVudHMpLmV2ZW50KGV2ZW50KS5lbmQoKTsgfSlcbiAgICAgICAgLnR3ZWVuKFwiem9vbVwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsXG4gICAgICAgICAgICAgIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICAgIGcgPSBnZXN0dXJlKHRoYXQsIGFyZ3MpLmV2ZW50KGV2ZW50KSxcbiAgICAgICAgICAgICAgZSA9IGV4dGVudC5hcHBseSh0aGF0LCBhcmdzKSxcbiAgICAgICAgICAgICAgcCA9IHBvaW50ID09IG51bGwgPyBjZW50cm9pZChlKSA6IHR5cGVvZiBwb2ludCA9PT0gXCJmdW5jdGlvblwiID8gcG9pbnQuYXBwbHkodGhhdCwgYXJncykgOiBwb2ludCxcbiAgICAgICAgICAgICAgdyA9IE1hdGgubWF4KGVbMV1bMF0gLSBlWzBdWzBdLCBlWzFdWzFdIC0gZVswXVsxXSksXG4gICAgICAgICAgICAgIGEgPSB0aGF0Ll9fem9vbSxcbiAgICAgICAgICAgICAgYiA9IHR5cGVvZiB0cmFuc2Zvcm0gPT09IFwiZnVuY3Rpb25cIiA/IHRyYW5zZm9ybS5hcHBseSh0aGF0LCBhcmdzKSA6IHRyYW5zZm9ybSxcbiAgICAgICAgICAgICAgaSA9IGludGVycG9sYXRlKGEuaW52ZXJ0KHApLmNvbmNhdCh3IC8gYS5rKSwgYi5pbnZlcnQocCkuY29uY2F0KHcgLyBiLmspKTtcbiAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgICAgICAgICAgaWYgKHQgPT09IDEpIHQgPSBiOyAvLyBBdm9pZCByb3VuZGluZyBlcnJvciBvbiBlbmQuXG4gICAgICAgICAgICBlbHNlIHsgdmFyIGwgPSBpKHQpLCBrID0gdyAvIGxbMl07IHQgPSBuZXcgVHJhbnNmb3JtKGssIHBbMF0gLSBsWzBdICogaywgcFsxXSAtIGxbMV0gKiBrKTsgfVxuICAgICAgICAgICAgZy56b29tKG51bGwsIHQpO1xuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2VzdHVyZSh0aGF0LCBhcmdzLCBjbGVhbikge1xuICAgIHJldHVybiAoIWNsZWFuICYmIHRoYXQuX196b29taW5nKSB8fCBuZXcgR2VzdHVyZSh0aGF0LCBhcmdzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIEdlc3R1cmUodGhhdCwgYXJncykge1xuICAgIHRoaXMudGhhdCA9IHRoYXQ7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgICB0aGlzLmFjdGl2ZSA9IDA7XG4gICAgdGhpcy5zb3VyY2VFdmVudCA9IG51bGw7XG4gICAgdGhpcy5leHRlbnQgPSBleHRlbnQuYXBwbHkodGhhdCwgYXJncyk7XG4gICAgdGhpcy50YXBzID0gMDtcbiAgfVxuXG4gIEdlc3R1cmUucHJvdG90eXBlID0ge1xuICAgIGV2ZW50OiBmdW5jdGlvbihldmVudCkge1xuICAgICAgaWYgKGV2ZW50KSB0aGlzLnNvdXJjZUV2ZW50ID0gZXZlbnQ7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIHN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICAgIGlmICgrK3RoaXMuYWN0aXZlID09PSAxKSB7XG4gICAgICAgIHRoaXMudGhhdC5fX3pvb21pbmcgPSB0aGlzO1xuICAgICAgICB0aGlzLmVtaXQoXCJzdGFydFwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgem9vbTogZnVuY3Rpb24oa2V5LCB0cmFuc2Zvcm0pIHtcbiAgICAgIGlmICh0aGlzLm1vdXNlICYmIGtleSAhPT0gXCJtb3VzZVwiKSB0aGlzLm1vdXNlWzFdID0gdHJhbnNmb3JtLmludmVydCh0aGlzLm1vdXNlWzBdKTtcbiAgICAgIGlmICh0aGlzLnRvdWNoMCAmJiBrZXkgIT09IFwidG91Y2hcIikgdGhpcy50b3VjaDBbMV0gPSB0cmFuc2Zvcm0uaW52ZXJ0KHRoaXMudG91Y2gwWzBdKTtcbiAgICAgIGlmICh0aGlzLnRvdWNoMSAmJiBrZXkgIT09IFwidG91Y2hcIikgdGhpcy50b3VjaDFbMV0gPSB0cmFuc2Zvcm0uaW52ZXJ0KHRoaXMudG91Y2gxWzBdKTtcbiAgICAgIHRoaXMudGhhdC5fX3pvb20gPSB0cmFuc2Zvcm07XG4gICAgICB0aGlzLmVtaXQoXCJ6b29tXCIpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBlbmQ6IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKC0tdGhpcy5hY3RpdmUgPT09IDApIHtcbiAgICAgICAgZGVsZXRlIHRoaXMudGhhdC5fX3pvb21pbmc7XG4gICAgICAgIHRoaXMuZW1pdChcImVuZFwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgZW1pdDogZnVuY3Rpb24odHlwZSkge1xuICAgICAgdmFyIGQgPSBzZWxlY3QodGhpcy50aGF0KS5kYXR1bSgpO1xuICAgICAgbGlzdGVuZXJzLmNhbGwoXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHRoaXMudGhhdCxcbiAgICAgICAgbmV3IFpvb21FdmVudCh0eXBlLCB7XG4gICAgICAgICAgc291cmNlRXZlbnQ6IHRoaXMuc291cmNlRXZlbnQsXG4gICAgICAgICAgdGFyZ2V0OiB6b29tLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdHJhbnNmb3JtOiB0aGlzLnRoYXQuX196b29tLFxuICAgICAgICAgIGRpc3BhdGNoOiBsaXN0ZW5lcnNcbiAgICAgICAgfSksXG4gICAgICAgIGRcbiAgICAgICk7XG4gICAgfVxuICB9O1xuXG4gIGZ1bmN0aW9uIHdoZWVsZWQoZXZlbnQsIC4uLmFyZ3MpIHtcbiAgICBpZiAoIWZpbHRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpKSByZXR1cm47XG4gICAgdmFyIGcgPSBnZXN0dXJlKHRoaXMsIGFyZ3MpLmV2ZW50KGV2ZW50KSxcbiAgICAgICAgdCA9IHRoaXMuX196b29tLFxuICAgICAgICBrID0gTWF0aC5tYXgoc2NhbGVFeHRlbnRbMF0sIE1hdGgubWluKHNjYWxlRXh0ZW50WzFdLCB0LmsgKiBNYXRoLnBvdygyLCB3aGVlbERlbHRhLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpKSksXG4gICAgICAgIHAgPSBwb2ludGVyKGV2ZW50KTtcblxuICAgIC8vIElmIHRoZSBtb3VzZSBpcyBpbiB0aGUgc2FtZSBsb2NhdGlvbiBhcyBiZWZvcmUsIHJldXNlIGl0LlxuICAgIC8vIElmIHRoZXJlIHdlcmUgcmVjZW50IHdoZWVsIGV2ZW50cywgcmVzZXQgdGhlIHdoZWVsIGlkbGUgdGltZW91dC5cbiAgICBpZiAoZy53aGVlbCkge1xuICAgICAgaWYgKGcubW91c2VbMF1bMF0gIT09IHBbMF0gfHwgZy5tb3VzZVswXVsxXSAhPT0gcFsxXSkge1xuICAgICAgICBnLm1vdXNlWzFdID0gdC5pbnZlcnQoZy5tb3VzZVswXSA9IHApO1xuICAgICAgfVxuICAgICAgY2xlYXJUaW1lb3V0KGcud2hlZWwpO1xuICAgIH1cblxuICAgIC8vIElmIHRoaXMgd2hlZWwgZXZlbnQgd29uXHUyMDE5dCB0cmlnZ2VyIGEgdHJhbnNmb3JtIGNoYW5nZSwgaWdub3JlIGl0LlxuICAgIGVsc2UgaWYgKHQuayA9PT0gaykgcmV0dXJuO1xuXG4gICAgLy8gT3RoZXJ3aXNlLCBjYXB0dXJlIHRoZSBtb3VzZSBwb2ludCBhbmQgbG9jYXRpb24gYXQgdGhlIHN0YXJ0LlxuICAgIGVsc2Uge1xuICAgICAgZy5tb3VzZSA9IFtwLCB0LmludmVydChwKV07XG4gICAgICBpbnRlcnJ1cHQodGhpcyk7XG4gICAgICBnLnN0YXJ0KCk7XG4gICAgfVxuXG4gICAgbm9ldmVudChldmVudCk7XG4gICAgZy53aGVlbCA9IHNldFRpbWVvdXQod2hlZWxpZGxlZCwgd2hlZWxEZWxheSk7XG4gICAgZy56b29tKFwibW91c2VcIiwgY29uc3RyYWluKHRyYW5zbGF0ZShzY2FsZSh0LCBrKSwgZy5tb3VzZVswXSwgZy5tb3VzZVsxXSksIGcuZXh0ZW50LCB0cmFuc2xhdGVFeHRlbnQpKTtcblxuICAgIGZ1bmN0aW9uIHdoZWVsaWRsZWQoKSB7XG4gICAgICBnLndoZWVsID0gbnVsbDtcbiAgICAgIGcuZW5kKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbW91c2Vkb3duZWQoZXZlbnQsIC4uLmFyZ3MpIHtcbiAgICBpZiAodG91Y2hlbmRpbmcgfHwgIWZpbHRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpKSByZXR1cm47XG4gICAgdmFyIGcgPSBnZXN0dXJlKHRoaXMsIGFyZ3MsIHRydWUpLmV2ZW50KGV2ZW50KSxcbiAgICAgICAgdiA9IHNlbGVjdChldmVudC52aWV3KS5vbihcIm1vdXNlbW92ZS56b29tXCIsIG1vdXNlbW92ZWQsIHRydWUpLm9uKFwibW91c2V1cC56b29tXCIsIG1vdXNldXBwZWQsIHRydWUpLFxuICAgICAgICBwID0gcG9pbnRlcihldmVudCwgY3VycmVudFRhcmdldCksXG4gICAgICAgIGN1cnJlbnRUYXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0LFxuICAgICAgICB4MCA9IGV2ZW50LmNsaWVudFgsXG4gICAgICAgIHkwID0gZXZlbnQuY2xpZW50WTtcblxuICAgIGRyYWdEaXNhYmxlKGV2ZW50LnZpZXcpO1xuICAgIG5vcHJvcGFnYXRpb24oZXZlbnQpO1xuICAgIGcubW91c2UgPSBbcCwgdGhpcy5fX3pvb20uaW52ZXJ0KHApXTtcbiAgICBpbnRlcnJ1cHQodGhpcyk7XG4gICAgZy5zdGFydCgpO1xuXG4gICAgZnVuY3Rpb24gbW91c2Vtb3ZlZChldmVudCkge1xuICAgICAgbm9ldmVudChldmVudCk7XG4gICAgICBpZiAoIWcubW92ZWQpIHtcbiAgICAgICAgdmFyIGR4ID0gZXZlbnQuY2xpZW50WCAtIHgwLCBkeSA9IGV2ZW50LmNsaWVudFkgLSB5MDtcbiAgICAgICAgZy5tb3ZlZCA9IGR4ICogZHggKyBkeSAqIGR5ID4gY2xpY2tEaXN0YW5jZTI7XG4gICAgICB9XG4gICAgICBnLmV2ZW50KGV2ZW50KVxuICAgICAgIC56b29tKFwibW91c2VcIiwgY29uc3RyYWluKHRyYW5zbGF0ZShnLnRoYXQuX196b29tLCBnLm1vdXNlWzBdID0gcG9pbnRlcihldmVudCwgY3VycmVudFRhcmdldCksIGcubW91c2VbMV0pLCBnLmV4dGVudCwgdHJhbnNsYXRlRXh0ZW50KSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW91c2V1cHBlZChldmVudCkge1xuICAgICAgdi5vbihcIm1vdXNlbW92ZS56b29tIG1vdXNldXAuem9vbVwiLCBudWxsKTtcbiAgICAgIGRyYWdFbmFibGUoZXZlbnQudmlldywgZy5tb3ZlZCk7XG4gICAgICBub2V2ZW50KGV2ZW50KTtcbiAgICAgIGcuZXZlbnQoZXZlbnQpLmVuZCgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGRibGNsaWNrZWQoZXZlbnQsIC4uLmFyZ3MpIHtcbiAgICBpZiAoIWZpbHRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpKSByZXR1cm47XG4gICAgdmFyIHQwID0gdGhpcy5fX3pvb20sXG4gICAgICAgIHAwID0gcG9pbnRlcihldmVudC5jaGFuZ2VkVG91Y2hlcyA/IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdIDogZXZlbnQsIHRoaXMpLFxuICAgICAgICBwMSA9IHQwLmludmVydChwMCksXG4gICAgICAgIGsxID0gdDAuayAqIChldmVudC5zaGlmdEtleSA/IDAuNSA6IDIpLFxuICAgICAgICB0MSA9IGNvbnN0cmFpbih0cmFuc2xhdGUoc2NhbGUodDAsIGsxKSwgcDAsIHAxKSwgZXh0ZW50LmFwcGx5KHRoaXMsIGFyZ3MpLCB0cmFuc2xhdGVFeHRlbnQpO1xuXG4gICAgbm9ldmVudChldmVudCk7XG4gICAgaWYgKGR1cmF0aW9uID4gMCkgc2VsZWN0KHRoaXMpLnRyYW5zaXRpb24oKS5kdXJhdGlvbihkdXJhdGlvbikuY2FsbChzY2hlZHVsZSwgdDEsIHAwLCBldmVudCk7XG4gICAgZWxzZSBzZWxlY3QodGhpcykuY2FsbCh6b29tLnRyYW5zZm9ybSwgdDEsIHAwLCBldmVudCk7XG4gIH1cblxuICBmdW5jdGlvbiB0b3VjaHN0YXJ0ZWQoZXZlbnQsIC4uLmFyZ3MpIHtcbiAgICBpZiAoIWZpbHRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpKSByZXR1cm47XG4gICAgdmFyIHRvdWNoZXMgPSBldmVudC50b3VjaGVzLFxuICAgICAgICBuID0gdG91Y2hlcy5sZW5ndGgsXG4gICAgICAgIGcgPSBnZXN0dXJlKHRoaXMsIGFyZ3MsIGV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCA9PT0gbikuZXZlbnQoZXZlbnQpLFxuICAgICAgICBzdGFydGVkLCBpLCB0LCBwO1xuXG4gICAgbm9wcm9wYWdhdGlvbihldmVudCk7XG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgdCA9IHRvdWNoZXNbaV0sIHAgPSBwb2ludGVyKHQsIHRoaXMpO1xuICAgICAgcCA9IFtwLCB0aGlzLl9fem9vbS5pbnZlcnQocCksIHQuaWRlbnRpZmllcl07XG4gICAgICBpZiAoIWcudG91Y2gwKSBnLnRvdWNoMCA9IHAsIHN0YXJ0ZWQgPSB0cnVlLCBnLnRhcHMgPSAxICsgISF0b3VjaHN0YXJ0aW5nO1xuICAgICAgZWxzZSBpZiAoIWcudG91Y2gxICYmIGcudG91Y2gwWzJdICE9PSBwWzJdKSBnLnRvdWNoMSA9IHAsIGcudGFwcyA9IDA7XG4gICAgfVxuXG4gICAgaWYgKHRvdWNoc3RhcnRpbmcpIHRvdWNoc3RhcnRpbmcgPSBjbGVhclRpbWVvdXQodG91Y2hzdGFydGluZyk7XG5cbiAgICBpZiAoc3RhcnRlZCkge1xuICAgICAgaWYgKGcudGFwcyA8IDIpIHRvdWNoZmlyc3QgPSBwWzBdLCB0b3VjaHN0YXJ0aW5nID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsgdG91Y2hzdGFydGluZyA9IG51bGw7IH0sIHRvdWNoRGVsYXkpO1xuICAgICAgaW50ZXJydXB0KHRoaXMpO1xuICAgICAgZy5zdGFydCgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHRvdWNobW92ZWQoZXZlbnQsIC4uLmFyZ3MpIHtcbiAgICBpZiAoIXRoaXMuX196b29taW5nKSByZXR1cm47XG4gICAgdmFyIGcgPSBnZXN0dXJlKHRoaXMsIGFyZ3MpLmV2ZW50KGV2ZW50KSxcbiAgICAgICAgdG91Y2hlcyA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzLFxuICAgICAgICBuID0gdG91Y2hlcy5sZW5ndGgsIGksIHQsIHAsIGw7XG5cbiAgICBub2V2ZW50KGV2ZW50KTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICB0ID0gdG91Y2hlc1tpXSwgcCA9IHBvaW50ZXIodCwgdGhpcyk7XG4gICAgICBpZiAoZy50b3VjaDAgJiYgZy50b3VjaDBbMl0gPT09IHQuaWRlbnRpZmllcikgZy50b3VjaDBbMF0gPSBwO1xuICAgICAgZWxzZSBpZiAoZy50b3VjaDEgJiYgZy50b3VjaDFbMl0gPT09IHQuaWRlbnRpZmllcikgZy50b3VjaDFbMF0gPSBwO1xuICAgIH1cbiAgICB0ID0gZy50aGF0Ll9fem9vbTtcbiAgICBpZiAoZy50b3VjaDEpIHtcbiAgICAgIHZhciBwMCA9IGcudG91Y2gwWzBdLCBsMCA9IGcudG91Y2gwWzFdLFxuICAgICAgICAgIHAxID0gZy50b3VjaDFbMF0sIGwxID0gZy50b3VjaDFbMV0sXG4gICAgICAgICAgZHAgPSAoZHAgPSBwMVswXSAtIHAwWzBdKSAqIGRwICsgKGRwID0gcDFbMV0gLSBwMFsxXSkgKiBkcCxcbiAgICAgICAgICBkbCA9IChkbCA9IGwxWzBdIC0gbDBbMF0pICogZGwgKyAoZGwgPSBsMVsxXSAtIGwwWzFdKSAqIGRsO1xuICAgICAgdCA9IHNjYWxlKHQsIE1hdGguc3FydChkcCAvIGRsKSk7XG4gICAgICBwID0gWyhwMFswXSArIHAxWzBdKSAvIDIsIChwMFsxXSArIHAxWzFdKSAvIDJdO1xuICAgICAgbCA9IFsobDBbMF0gKyBsMVswXSkgLyAyLCAobDBbMV0gKyBsMVsxXSkgLyAyXTtcbiAgICB9XG4gICAgZWxzZSBpZiAoZy50b3VjaDApIHAgPSBnLnRvdWNoMFswXSwgbCA9IGcudG91Y2gwWzFdO1xuICAgIGVsc2UgcmV0dXJuO1xuXG4gICAgZy56b29tKFwidG91Y2hcIiwgY29uc3RyYWluKHRyYW5zbGF0ZSh0LCBwLCBsKSwgZy5leHRlbnQsIHRyYW5zbGF0ZUV4dGVudCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG91Y2hlbmRlZChldmVudCwgLi4uYXJncykge1xuICAgIGlmICghdGhpcy5fX3pvb21pbmcpIHJldHVybjtcbiAgICB2YXIgZyA9IGdlc3R1cmUodGhpcywgYXJncykuZXZlbnQoZXZlbnQpLFxuICAgICAgICB0b3VjaGVzID0gZXZlbnQuY2hhbmdlZFRvdWNoZXMsXG4gICAgICAgIG4gPSB0b3VjaGVzLmxlbmd0aCwgaSwgdDtcblxuICAgIG5vcHJvcGFnYXRpb24oZXZlbnQpO1xuICAgIGlmICh0b3VjaGVuZGluZykgY2xlYXJUaW1lb3V0KHRvdWNoZW5kaW5nKTtcbiAgICB0b3VjaGVuZGluZyA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHRvdWNoZW5kaW5nID0gbnVsbDsgfSwgdG91Y2hEZWxheSk7XG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgdCA9IHRvdWNoZXNbaV07XG4gICAgICBpZiAoZy50b3VjaDAgJiYgZy50b3VjaDBbMl0gPT09IHQuaWRlbnRpZmllcikgZGVsZXRlIGcudG91Y2gwO1xuICAgICAgZWxzZSBpZiAoZy50b3VjaDEgJiYgZy50b3VjaDFbMl0gPT09IHQuaWRlbnRpZmllcikgZGVsZXRlIGcudG91Y2gxO1xuICAgIH1cbiAgICBpZiAoZy50b3VjaDEgJiYgIWcudG91Y2gwKSBnLnRvdWNoMCA9IGcudG91Y2gxLCBkZWxldGUgZy50b3VjaDE7XG4gICAgaWYgKGcudG91Y2gwKSBnLnRvdWNoMFsxXSA9IHRoaXMuX196b29tLmludmVydChnLnRvdWNoMFswXSk7XG4gICAgZWxzZSB7XG4gICAgICBnLmVuZCgpO1xuICAgICAgLy8gSWYgdGhpcyB3YXMgYSBkYmx0YXAsIHJlcm91dGUgdG8gdGhlIChvcHRpb25hbCkgZGJsY2xpY2suem9vbSBoYW5kbGVyLlxuICAgICAgaWYgKGcudGFwcyA9PT0gMikge1xuICAgICAgICB0ID0gcG9pbnRlcih0LCB0aGlzKTtcbiAgICAgICAgaWYgKE1hdGguaHlwb3QodG91Y2hmaXJzdFswXSAtIHRbMF0sIHRvdWNoZmlyc3RbMV0gLSB0WzFdKSA8IHRhcERpc3RhbmNlKSB7XG4gICAgICAgICAgdmFyIHAgPSBzZWxlY3QodGhpcykub24oXCJkYmxjbGljay56b29tXCIpO1xuICAgICAgICAgIGlmIChwKSBwLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB6b29tLndoZWVsRGVsdGEgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAod2hlZWxEZWx0YSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCB6b29tKSA6IHdoZWVsRGVsdGE7XG4gIH07XG5cbiAgem9vbS5maWx0ZXIgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZmlsdGVyID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCghIV8pLCB6b29tKSA6IGZpbHRlcjtcbiAgfTtcblxuICB6b29tLnRvdWNoYWJsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0b3VjaGFibGUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCEhXyksIHpvb20pIDogdG91Y2hhYmxlO1xuICB9O1xuXG4gIHpvb20uZXh0ZW50ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGV4dGVudCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoW1srX1swXVswXSwgK19bMF1bMV1dLCBbK19bMV1bMF0sICtfWzFdWzFdXV0pLCB6b29tKSA6IGV4dGVudDtcbiAgfTtcblxuICB6b29tLnNjYWxlRXh0ZW50ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNjYWxlRXh0ZW50WzBdID0gK19bMF0sIHNjYWxlRXh0ZW50WzFdID0gK19bMV0sIHpvb20pIDogW3NjYWxlRXh0ZW50WzBdLCBzY2FsZUV4dGVudFsxXV07XG4gIH07XG5cbiAgem9vbS50cmFuc2xhdGVFeHRlbnQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodHJhbnNsYXRlRXh0ZW50WzBdWzBdID0gK19bMF1bMF0sIHRyYW5zbGF0ZUV4dGVudFsxXVswXSA9ICtfWzFdWzBdLCB0cmFuc2xhdGVFeHRlbnRbMF1bMV0gPSArX1swXVsxXSwgdHJhbnNsYXRlRXh0ZW50WzFdWzFdID0gK19bMV1bMV0sIHpvb20pIDogW1t0cmFuc2xhdGVFeHRlbnRbMF1bMF0sIHRyYW5zbGF0ZUV4dGVudFswXVsxXV0sIFt0cmFuc2xhdGVFeHRlbnRbMV1bMF0sIHRyYW5zbGF0ZUV4dGVudFsxXVsxXV1dO1xuICB9O1xuXG4gIHpvb20uY29uc3RyYWluID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGNvbnN0cmFpbiA9IF8sIHpvb20pIDogY29uc3RyYWluO1xuICB9O1xuXG4gIHpvb20uZHVyYXRpb24gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZHVyYXRpb24gPSArXywgem9vbSkgOiBkdXJhdGlvbjtcbiAgfTtcblxuICB6b29tLmludGVycG9sYXRlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGludGVycG9sYXRlID0gXywgem9vbSkgOiBpbnRlcnBvbGF0ZTtcbiAgfTtcblxuICB6b29tLm9uID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHZhbHVlID0gbGlzdGVuZXJzLm9uLmFwcGx5KGxpc3RlbmVycywgYXJndW1lbnRzKTtcbiAgICByZXR1cm4gdmFsdWUgPT09IGxpc3RlbmVycyA/IHpvb20gOiB2YWx1ZTtcbiAgfTtcblxuICB6b29tLmNsaWNrRGlzdGFuY2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoY2xpY2tEaXN0YW5jZTIgPSAoXyA9ICtfKSAqIF8sIHpvb20pIDogTWF0aC5zcXJ0KGNsaWNrRGlzdGFuY2UyKTtcbiAgfTtcblxuICB6b29tLnRhcERpc3RhbmNlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRhcERpc3RhbmNlID0gK18sIHpvb20pIDogdGFwRGlzdGFuY2U7XG4gIH07XG5cbiAgcmV0dXJuIHpvb207XG59XG4iLCAiaW1wb3J0ICogYXMgZDMgZnJvbSBcImQzXCI7XHJcbmltcG9ydCB0eXBlIEdyYXBoIGZyb20gXCJncmFwaG9sb2d5XCI7XHJcbmltcG9ydCB7IE1vZGFsLCBOb3RpY2UgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IFZpc0NvbXAgZnJvbSBcIi4uL0NvbXBvbmVudHMvVmlzQ29tcC5zdmVsdGVcIjtcclxuaW1wb3J0IHR5cGUgeyBBZGpMaXN0SXRlbSwgZDNHcmFwaCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB0eXBlIEJDUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XHJcbmltcG9ydCB7XHJcbiAgZ2V0SW5OZWlnaGJvdXJzLFxyXG4gIGdldE91dE5laWdoYm91cnMsXHJcbiAgZ2V0U2lua3MsXHJcbn0gZnJvbSBcIi4uL1V0aWxzL2dyYXBoVXRpbHNcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBncmFwaGxpYlRvRDMoZzogR3JhcGgpOiBkM0dyYXBoIHtcclxuICBjb25zdCBkM0dyYXBoOiBkM0dyYXBoID0geyBub2RlczogW10sIGxpbmtzOiBbXSB9O1xyXG4gIGNvbnN0IG5vZGVJRHMgPSB7fTtcclxuXHJcbiAgZy5ub2RlcygpLmZvckVhY2goKG5vZGUsIGkpID0+IHtcclxuICAgIGQzR3JhcGgubm9kZXMucHVzaCh7IGlkOiBpLCBuYW1lOiBub2RlIH0pO1xyXG4gICAgbm9kZUlEc1tub2RlXSA9IGk7XHJcbiAgfSk7XHJcbiAgZy5mb3JFYWNoRWRnZSgoaywgYSwgcywgdCkgPT4ge1xyXG4gICAgZDNHcmFwaC5saW5rcy5wdXNoKHtcclxuICAgICAgc291cmNlOiBub2RlSURzW3NdLFxyXG4gICAgICB0YXJnZXQ6IG5vZGVJRHNbdF0sXHJcbiAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIGQzR3JhcGg7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBiZnNGcm9tQWxsU2lua3MoZzogR3JhcGgpIHtcclxuICBjb25zdCBxdWV1ZTogc3RyaW5nW10gPSBnZXRTaW5rcyhnKTtcclxuICBjb25zdCBhZGpMaXN0OiBBZGpMaXN0SXRlbVtdID0gW107XHJcblxyXG4gIGxldCBpID0gMDtcclxuICB3aGlsZSAocXVldWUubGVuZ3RoICYmIGkgPCAxMDAwKSB7XHJcbiAgICBpKys7XHJcblxyXG4gICAgY29uc3QgY3Vyck5vZGUgPSBxdWV1ZS5zaGlmdCgpO1xyXG4gICAgY29uc3QgbmV3Tm9kZXMgPSBnZXRJbk5laWdoYm91cnMoZywgY3Vyck5vZGUpO1xyXG5cclxuICAgIGlmIChuZXdOb2Rlcy5sZW5ndGgpIHtcclxuICAgICAgbmV3Tm9kZXMuZm9yRWFjaCgocHJlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV4dDogQWRqTGlzdEl0ZW0gPSB7XHJcbiAgICAgICAgICBuYW1lOiBjdXJyTm9kZSxcclxuICAgICAgICAgIHBhcmVudElkOiBwcmUsXHJcbiAgICAgICAgICBkZXB0aDogaSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHF1ZXVlLnB1c2gocHJlKTtcclxuICAgICAgICBhZGpMaXN0LnB1c2gobmV4dCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYWRqTGlzdC5wdXNoKHtcclxuICAgICAgICBuYW1lOiBjdXJyTm9kZSxcclxuICAgICAgICBwYXJlbnRJZDogdW5kZWZpbmVkLFxyXG4gICAgICAgIGRlcHRoOiBpLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0IG1heERlcHRoID0gYWRqTGlzdC5zb3J0KChhLCBiKSA9PiBhLmRlcHRoIC0gYi5kZXB0aCkubGFzdCgpLmRlcHRoO1xyXG4gIGFkakxpc3QuZm9yRWFjaCgoaXRlbSkgPT4gKGl0ZW0uaGVpZ2h0ID0gbWF4RGVwdGggLSBpdGVtLmRlcHRoKSk7XHJcbiAgcmV0dXJuIGFkakxpc3Q7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkZnNBZGpMaXN0KGc6IEdyYXBoLCBzdGFydE5vZGU6IHN0cmluZyk6IEFkakxpc3RJdGVtW10ge1xyXG4gIGNvbnN0IHF1ZXVlOiBzdHJpbmdbXSA9IFtzdGFydE5vZGVdO1xyXG4gIGNvbnN0IGFkakxpc3Q6IEFkakxpc3RJdGVtW10gPSBbXTtcclxuXHJcbiAgbGV0IGkgPSAwO1xyXG4gIHdoaWxlIChxdWV1ZS5sZW5ndGggJiYgaSA8IDEwMDApIHtcclxuICAgIGkrKztcclxuXHJcbiAgICBjb25zdCBjdXJyTm9kZSA9IHF1ZXVlLnNoaWZ0KCk7XHJcbiAgICBjb25zdCBuZXdOb2RlcyA9IGdldE91dE5laWdoYm91cnMoZywgY3Vyck5vZGUpO1xyXG5cclxuICAgIGlmIChuZXdOb2Rlcy5sZW5ndGgpIHtcclxuICAgICAgbmV3Tm9kZXMuZm9yRWFjaCgoc3VjYykgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5leHQ6IEFkakxpc3RJdGVtID0ge1xyXG4gICAgICAgICAgbmFtZTogY3Vyck5vZGUsXHJcbiAgICAgICAgICBwYXJlbnRJZDogc3VjYyxcclxuICAgICAgICAgIGRlcHRoOiBpLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcXVldWUucHVzaChzdWNjKTtcclxuICAgICAgICBhZGpMaXN0LnB1c2gobmV4dCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYWRqTGlzdC5wdXNoKHtcclxuICAgICAgICBuYW1lOiBjdXJyTm9kZSxcclxuICAgICAgICBwYXJlbnRJZDogdW5kZWZpbmVkLFxyXG4gICAgICAgIGRlcHRoOiBpLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgY29uc3QgbWF4RGVwdGggPSBhZGpMaXN0LnNvcnQoKGEsIGIpID0+IGEuZGVwdGggLSBiLmRlcHRoKS5sYXN0KCkuZGVwdGg7XHJcbiAgYWRqTGlzdC5mb3JFYWNoKChpdGVtKSA9PiAoaXRlbS5oZWlnaHQgPSBtYXhEZXB0aCAtIGl0ZW0uZGVwdGgpKTtcclxuXHJcbiAgcmV0dXJuIGFkakxpc3Q7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBiZnNBZGpMaXN0KGc6IEdyYXBoLCBzdGFydE5vZGU6IHN0cmluZyk6IEFkakxpc3RJdGVtW10ge1xyXG4gIGNvbnN0IHF1ZXVlOiBzdHJpbmdbXSA9IFtzdGFydE5vZGVdO1xyXG4gIGNvbnN0IGFkakxpc3Q6IEFkakxpc3RJdGVtW10gPSBbXTtcclxuXHJcbiAgbGV0IGkgPSAwO1xyXG4gIHdoaWxlIChxdWV1ZS5sZW5ndGggJiYgaSA8IDEwMDApIHtcclxuICAgIGkrKztcclxuXHJcbiAgICBjb25zdCBjdXJyTm9kZSA9IHF1ZXVlLnNoaWZ0KCk7XHJcbiAgICBjb25zdCBuZWlnaGJvdXJzID0ge1xyXG4gICAgICBzdWNjczogZ2V0T3V0TmVpZ2hib3VycyhnLCBjdXJyTm9kZSksXHJcbiAgICAgIHByZXM6IGdldEluTmVpZ2hib3VycyhnLCBjdXJyTm9kZSksXHJcbiAgICB9O1xyXG4gICAgY29uc29sZS5sb2coeyBjdXJyTm9kZSwgbmVpZ2hib3VycyB9KTtcclxuXHJcbiAgICBjb25zdCBuZXh0OiBBZGpMaXN0SXRlbSA9IHtcclxuICAgICAgbmFtZTogY3Vyck5vZGUsXHJcbiAgICAgIHByZXM6IHVuZGVmaW5lZCxcclxuICAgICAgc3VjY3M6IHVuZGVmaW5lZCxcclxuICAgICAgcGFyZW50SWQ6IGksXHJcbiAgICAgIGRlcHRoOiBpLFxyXG4gICAgfTtcclxuICAgIGlmIChuZWlnaGJvdXJzLnN1Y2NzLmxlbmd0aCkge1xyXG4gICAgICBuZXh0LnN1Y2NzID0gbmVpZ2hib3Vycy5zdWNjcztcclxuICAgICAgcXVldWUucHVzaCguLi5uZWlnaGJvdXJzLnN1Y2NzKTtcclxuICAgIH1cclxuICAgIGlmIChuZWlnaGJvdXJzLnByZXMubGVuZ3RoKSB7XHJcbiAgICAgIG5leHQucHJlcyA9IG5laWdoYm91cnMucHJlcztcclxuICAgIH1cclxuICAgIGFkakxpc3QucHVzaChuZXh0KTtcclxuICB9XHJcbiAgY29uc3QgbWF4RGVwdGggPSBhZGpMaXN0LnNvcnQoKGEsIGIpID0+IGEuZGVwdGggLSBiLmRlcHRoKS5sYXN0KCkuZGVwdGg7XHJcbiAgYWRqTGlzdC5mb3JFYWNoKChpdGVtKSA9PiAoaXRlbS5oZWlnaHQgPSBtYXhEZXB0aCAtIGl0ZW0uZGVwdGgpKTtcclxuXHJcbiAgcmV0dXJuIGFkakxpc3Q7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkZnNGbGF0QWRqTGlzdChnOiBHcmFwaCwgc3RhcnROb2RlOiBzdHJpbmcpIHtcclxuICBjb25zdCBub2RlcyA9IGcubm9kZXMoKTtcclxuICBjb25zdCBub2RlQ291bnQgPSBub2Rlcy5sZW5ndGg7XHJcbiAgY29uc3QgdmlzaXRzID0ge307XHJcbiAgbm9kZXMuZm9yRWFjaCgobm9kZSwgaSkgPT4ge1xyXG4gICAgdmlzaXRzW25vZGVdID0gbm9kZUNvdW50ICogaTtcclxuICB9KTtcclxuXHJcbiAgY29uc3QgcXVldWU6IHN0cmluZ1tdID0gW3N0YXJ0Tm9kZV07XHJcbiAgY29uc3QgYWRqTGlzdDogQWRqTGlzdEl0ZW1bXSA9IFtdO1xyXG5cclxuICBsZXQgZGVwdGggPSAxO1xyXG4gIGxldCBpID0gMDtcclxuICB3aGlsZSAocXVldWUubGVuZ3RoICYmIGkgPCAxMDAwKSB7XHJcbiAgICBpKys7XHJcblxyXG4gICAgY29uc3QgY3Vyck5vZGUgPSBxdWV1ZS5zaGlmdCgpO1xyXG4gICAgY29uc3QgbmV4dCA9IGdldE91dE5laWdoYm91cnMoZywgY3Vyck5vZGUpO1xyXG5cclxuICAgIGlmIChuZXh0Lmxlbmd0aCkge1xyXG4gICAgICBxdWV1ZS51bnNoaWZ0KC4uLm5leHQpO1xyXG4gICAgICBuZXh0LmZvckVhY2goKHN1Y2MpID0+IHtcclxuICAgICAgICBjb25zdCBwYXJlbnRJZCA9IG5vZGVDb3VudCAqIG5vZGVzLmluZGV4T2Yoc3VjYyk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgIWFkakxpc3Quc29tZShcclxuICAgICAgICAgICAgKGFkakl0ZW0pID0+XHJcbiAgICAgICAgICAgICAgYWRqSXRlbS5uYW1lID09PSBjdXJyTm9kZSAmJiBhZGpJdGVtLnBhcmVudElkID09PSBwYXJlbnRJZFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgYWRqTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgaWQ6IHZpc2l0c1tjdXJyTm9kZV0gYXMgbnVtYmVyLFxyXG4gICAgICAgICAgICBuYW1lOiBjdXJyTm9kZSxcclxuICAgICAgICAgICAgcGFyZW50SWQsXHJcbiAgICAgICAgICAgIGRlcHRoLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB2aXNpdHNbY3Vyck5vZGVdKys7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgZGVwdGgrKztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFkakxpc3QucHVzaCh7XHJcbiAgICAgICAgaWQ6IHZpc2l0c1tjdXJyTm9kZV0gYXMgbnVtYmVyLFxyXG4gICAgICAgIG5hbWU6IGN1cnJOb2RlLFxyXG4gICAgICAgIHBhcmVudElkOiA5OTk5OTk5OTksXHJcbiAgICAgICAgZGVwdGgsXHJcbiAgICAgIH0pO1xyXG4gICAgICBkZXB0aCA9IDE7XHJcbiAgICAgIHZpc2l0c1tjdXJyTm9kZV0rKztcclxuICAgIH1cclxuICB9XHJcbiAgYWRqTGlzdC5wdXNoKHtcclxuICAgIGlkOiA5OTk5OTk5OTksXHJcbiAgICBuYW1lOiBcIkNPTlRBSU5FUlwiLFxyXG4gICAgcGFyZW50SWQ6IHVuZGVmaW5lZCxcclxuICAgIGRlcHRoOiAwLFxyXG4gIH0pO1xyXG5cclxuICBjb25zdCBtYXhEZXB0aCA9IGFkakxpc3Quc29ydCgoYSwgYikgPT4gYS5kZXB0aCAtIGIuZGVwdGgpLmxhc3QoKS5kZXB0aDtcclxuICBhZGpMaXN0LmZvckVhY2goKGl0ZW0pID0+IChpdGVtLmhlaWdodCA9IG1heERlcHRoIC0gaXRlbS5kZXB0aCkpO1xyXG5cclxuICBjb25zb2xlLmxvZyh7IHZpc2l0cyB9KTtcclxuICByZXR1cm4gYWRqTGlzdDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHN0cmF0aWZ5ID0gZDNcclxuICAuc3RyYXRpZnkoKVxyXG4gIC5pZChmdW5jdGlvbiAoZDogQWRqTGlzdEl0ZW0pIHtcclxuICAgIGNvbnNvbGUubG9nKHsgZCB9KTtcclxuICAgIHJldHVybiBkLm5hbWU7XHJcbiAgfSlcclxuICAucGFyZW50SWQoZnVuY3Rpb24gKGQ6IEFkakxpc3RJdGVtKSB7XHJcbiAgICByZXR1cm4gZC5wYXJlbnRJZDtcclxuICB9KTtcclxuZXhwb3J0IGNsYXNzIFZpc01vZGFsIGV4dGVuZHMgTW9kYWwge1xyXG4gIHBsdWdpbjogQkNQbHVnaW47XHJcbiAgbW9kYWw6IFZpc01vZGFsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwbHVnaW46IEJDUGx1Z2luKSB7XHJcbiAgICBzdXBlcihhcHApO1xyXG4gICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XHJcbiAgICB0aGlzLm1vZGFsID0gdGhpcztcclxuICB9XHJcblxyXG4gIG9uT3BlbigpIHtcclxuICAgIG5ldyBOb3RpY2UoXHJcbiAgICAgIFwiQWxvdCBvZiB0aGVzZSBmZWF0dXJlcyBtYXkgbm90IHdvcmssIGl0IGlzIHN0aWxsIHZlcnkgZXhwZXJpbWVudGFsLlwiXHJcbiAgICApO1xyXG4gICAgY29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XHJcbiAgICBjb250ZW50RWwuZW1wdHkoKTtcclxuXHJcbiAgICBuZXcgVmlzQ29tcCh7XHJcbiAgICAgIHRhcmdldDogY29udGVudEVsLFxyXG4gICAgICBwcm9wczoge1xyXG4gICAgICAgIG1vZGFsOiB0aGlzLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlKCkge1xyXG4gICAgdGhpcy5jb250ZW50RWwuZW1wdHkoKTtcclxuICB9XHJcbn1cclxuIiwgbnVsbCwgIjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbiAgaW1wb3J0IHsgd2FybiB9IGZyb20gXCJsb2dsZXZlbFwiO1xyXG4gIGltcG9ydCB7IEFMTFVOTElOS0VELCBSRUFsQ0xPU0VELCBSRUxBVElPTlMsIFZJU1RZUEVTIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG4gIGltcG9ydCB0eXBlIHsgVmlzR3JhcGhzLCBWaXNUeXBlIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuICBpbXBvcnQge1xyXG4gICAgY2xvc2VJbXBsaWVkTGlua3MsXHJcbiAgICBnZXRTdWJJbkRpcnMsXHJcbiAgICByZW1vdmVVbmxpbmtlZE5vZGVzLFxyXG4gIH0gZnJvbSBcIi4uL1V0aWxzL2dyYXBoVXRpbHNcIjtcclxuICBpbXBvcnQgeyBhcmNEaWFncmFtIH0gZnJvbSBcIi4uL1Zpc3VhbGlzYXRpb25zL0FyY0RpYWdyYW1cIjtcclxuICBpbXBvcnQgeyBjaXJjbGVQYWNraW5nIH0gZnJvbSBcIi4uL1Zpc3VhbGlzYXRpb25zL0NpcmNsZVBhY2tpbmdcIjtcclxuICBpbXBvcnQgeyBlZGdlQnVuZGxpbmcgfSBmcm9tIFwiLi4vVmlzdWFsaXNhdGlvbnMvRWRnZUJ1bmRsaW5nXCI7XHJcbiAgaW1wb3J0IHsgZm9yY2VEaXJlY3RlZEcgfSBmcm9tIFwiLi4vVmlzdWFsaXNhdGlvbnMvRm9yY2VEaXJlY3RlZEdcIjtcclxuICBpbXBvcnQgeyBpY2ljbGUgfSBmcm9tIFwiLi4vVmlzdWFsaXNhdGlvbnMvSWNpY2xlXCI7XHJcbiAgaW1wb3J0IHsgcmFkaWFsVHJlZSB9IGZyb20gXCIuLi9WaXN1YWxpc2F0aW9ucy9SYWRpYWxUcmVlXCI7XHJcbiAgaW1wb3J0IHsgc3VuYnVyc3QgfSBmcm9tIFwiLi4vVmlzdWFsaXNhdGlvbnMvU3VuYnVyc3RcIjtcclxuICBpbXBvcnQgeyB0aWR5VHJlZSB9IGZyb20gXCIuLi9WaXN1YWxpc2F0aW9ucy9UaWR5VHJlZVwiO1xyXG4gIGltcG9ydCB7IHRyZWVNYXAgfSBmcm9tIFwiLi4vVmlzdWFsaXNhdGlvbnMvVHJlZU1hcFwiO1xyXG4gIGltcG9ydCB0eXBlIHsgVmlzTW9kYWwgfSBmcm9tIFwiLi4vVmlzdWFsaXNhdGlvbnMvVmlzTW9kYWxcIjtcclxuICBpbXBvcnQgeyBnZXRDdXJyRmlsZSB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG4gIGV4cG9ydCBsZXQgbW9kYWw6IFZpc01vZGFsO1xyXG5cclxuICBjb25zdCB7IHBsdWdpbiB9ID0gbW9kYWw7XHJcbiAgY29uc3QgeyBtYWluRywgc2V0dGluZ3MgfSA9IHBsdWdpbjtcclxuICBjb25zdCB7IHZpc0dyYXBoLCB2aXNSZWxhdGlvbiwgdmlzQ2xvc2VkLCB2aXNBbGwgfSA9IHNldHRpbmdzO1xyXG5cclxuICBjb25zdCBjdXJyRmlsZSA9IGdldEN1cnJGaWxlKCk7XHJcblxyXG4gIGNvbnN0IHNlbGVjdG9ycyA9IFtcclxuICAgIHtcclxuICAgICAgdGV4dDogXCJUeXBlXCIsXHJcbiAgICAgIG9wdGlvbnM6IFZJU1RZUEVTLFxyXG4gICAgICB2YWw6IHZpc0dyYXBoLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgdGV4dDogXCJSZWxhdGlvblwiLFxyXG4gICAgICBvcHRpb25zOiBSRUxBVElPTlMsXHJcbiAgICAgIHZhbDogdmlzUmVsYXRpb24sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICB0ZXh0OiBcIkNsb3NlIEltcGxpZWRcIixcclxuICAgICAgb3B0aW9uczogUkVBbENMT1NFRCxcclxuICAgICAgdmFsOiB2aXNDbG9zZWQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICB0ZXh0OiBcIk5vIFVubGlua2VkXCIsXHJcbiAgICAgIG9wdGlvbnM6IEFMTFVOTElOS0VELFxyXG4gICAgICB2YWw6IHZpc0FsbCxcclxuICAgIH0sXHJcbiAgXTtcclxuXHJcbiAgY29uc3QgW3dpZHRoLCBoZWlnaHRdID0gW1xyXG4gICAgTWF0aC5yb3VuZCh3aW5kb3cuaW5uZXJXaWR0aCAvIDEuMyksXHJcbiAgICBNYXRoLnJvdW5kKHdpbmRvdy5pbm5lckhlaWdodCAvIDEuMyksXHJcbiAgXTtcclxuXHJcbiAgY29uc3QgW3VwLCBzYW1lLCBkb3duXSA9IFtcclxuICAgIGdldFN1YkluRGlycyhtYWluRywgXCJ1cFwiKSxcclxuICAgIGdldFN1YkluRGlycyhtYWluRywgXCJzYW1lXCIpLFxyXG4gICAgZ2V0U3ViSW5EaXJzKG1haW5HLCBcImRvd25cIiksXHJcbiAgXTtcclxuXHJcbiAgY29uc3QgW2Nsb3NlZFBhcmVudE5vU2luZ2xlLCBjbG9zZWRTaWJsaW5nTm9TaW5nbGUsIGNsb3NlZENoaWxkTm9TaW5nbGVdID0gW1xyXG4gICAgY2xvc2VJbXBsaWVkTGlua3ModXAsIGRvd24pLFxyXG4gICAgY2xvc2VJbXBsaWVkTGlua3Moc2FtZSwgc2FtZSksXHJcbiAgICBjbG9zZUltcGxpZWRMaW5rcyhkb3duLCB1cCksXHJcbiAgXTtcclxuXHJcbiAgY29uc3QgZ3JhcGhzOiBWaXNHcmFwaHMgPSB7XHJcbiAgICBQYXJlbnQ6IHtcclxuICAgICAgUmVhbDoge1xyXG4gICAgICAgIEFsbDogdXAsXHJcbiAgICAgICAgXCJObyBVbmxpbmtlZFwiOiByZW1vdmVVbmxpbmtlZE5vZGVzKHVwKSxcclxuICAgICAgfSxcclxuICAgICAgQ2xvc2VkOiB7XHJcbiAgICAgICAgQWxsOiBjbG9zZWRQYXJlbnROb1NpbmdsZSxcclxuICAgICAgICBcIk5vIFVubGlua2VkXCI6IHJlbW92ZVVubGlua2VkTm9kZXMoY2xvc2VkUGFyZW50Tm9TaW5nbGUpLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIFNpYmxpbmc6IHtcclxuICAgICAgUmVhbDoge1xyXG4gICAgICAgIEFsbDogc2FtZSxcclxuICAgICAgICBcIk5vIFVubGlua2VkXCI6IHJlbW92ZVVubGlua2VkTm9kZXMoc2FtZSksXHJcbiAgICAgIH0sXHJcbiAgICAgIENsb3NlZDoge1xyXG4gICAgICAgIEFsbDogY2xvc2VkU2libGluZ05vU2luZ2xlLFxyXG4gICAgICAgIFwiTm8gVW5saW5rZWRcIjogcmVtb3ZlVW5saW5rZWROb2RlcyhjbG9zZWRTaWJsaW5nTm9TaW5nbGUpLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIENoaWxkOiB7XHJcbiAgICAgIFJlYWw6IHtcclxuICAgICAgICBBbGw6IGRvd24sXHJcbiAgICAgICAgXCJObyBVbmxpbmtlZFwiOiByZW1vdmVVbmxpbmtlZE5vZGVzKGRvd24pLFxyXG4gICAgICB9LFxyXG4gICAgICBDbG9zZWQ6IHtcclxuICAgICAgICBBbGw6IGNsb3NlZENoaWxkTm9TaW5nbGUsXHJcbiAgICAgICAgXCJObyBVbmxpbmtlZFwiOiByZW1vdmVVbmxpbmtlZE5vZGVzKGNsb3NlZENoaWxkTm9TaW5nbGUpLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICAkOiBhcmdBcnIgPSBbXHJcbiAgICBncmFwaHNbc2VsZWN0b3JzWzFdLnZhbF1bc2VsZWN0b3JzWzJdLnZhbF1bc2VsZWN0b3JzWzNdLnZhbF0sXHJcbiAgICBhcHAsXHJcbiAgICBjdXJyRmlsZSxcclxuICAgIG1vZGFsLFxyXG4gICAgd2lkdGgsXHJcbiAgICBoZWlnaHQsXHJcbiAgXTtcclxuXHJcbiAgY29uc3QgdHlwZXM6IHtcclxuICAgIFt2aXMgaW4gVmlzVHlwZV06ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZDtcclxuICB9ID0ge1xyXG4gICAgXCJGb3JjZSBEaXJlY3RlZCBHcmFwaFwiOiBmb3JjZURpcmVjdGVkRyxcclxuICAgIFwiVGlkeSBUcmVlXCI6IHRpZHlUcmVlLFxyXG4gICAgXCJDaXJjbGUgUGFja2luZ1wiOiBjaXJjbGVQYWNraW5nLFxyXG4gICAgXCJFZGdlIEJ1bmRsaW5nXCI6IGVkZ2VCdW5kbGluZyxcclxuICAgIFwiQXJjIERpYWdyYW1cIjogYXJjRGlhZ3JhbSxcclxuICAgIFN1bmJ1cnN0OiBzdW5idXJzdCxcclxuICAgIFwiVHJlZSBNYXBcIjogdHJlZU1hcCxcclxuICAgIEljaWNsZTogaWNpY2xlLFxyXG4gICAgXCJSYWRpYWwgVHJlZVwiOiByYWRpYWxUcmVlLFxyXG4gIH07XHJcblxyXG4gIGZ1bmN0aW9uIGRyYXcodHlwZTogVmlzVHlwZSkge1xyXG4gICAgaWYgKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmQzLWdyYXBoXCIpKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZDMtZ3JhcGhcIik/LmVtcHR5KCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHR5cGVzW3R5cGVdKC4uLmFyZ0Fycik7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIHdhcm4oZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgMTApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5kMy1ncmFwaFwiKS5lbXB0eSgpO1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHR5cGVzW3R5cGVdKC4uLmFyZ0Fycik7XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgd2FybihlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICQ6IGRyYXcoc2VsZWN0b3JzWzBdLnZhbCBhcyBWaXNUeXBlKTtcclxuPC9zY3JpcHQ+XHJcblxyXG48ZGl2PlxyXG4gIHsjZWFjaCBzZWxlY3RvcnMgYXMgeyB0ZXh0LCBvcHRpb25zLCB2YWwgfX1cclxuICAgIDxzcGFuPlxyXG4gICAgICB7dGV4dH06XHJcbiAgICAgIDxzZWxlY3QgYmluZDp2YWx1ZT17dmFsfT5cclxuICAgICAgICB7I2VhY2ggb3B0aW9ucyBhcyBvcH1cclxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9e29wfT57b3B9PC9vcHRpb24+XHJcbiAgICAgICAgey9lYWNofVxyXG4gICAgICA8L3NlbGVjdD5cclxuICAgIDwvc3Bhbj5cclxuICB7L2VhY2h9XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImQzLWdyYXBoXCIgLz5cclxuIiwgImltcG9ydCAqIGFzIGQzIGZyb20gXCJkM1wiO1xyXG5pbXBvcnQgdHlwZSBHcmFwaCBmcm9tIFwiZ3JhcGhvbG9neVwiO1xyXG5pbXBvcnQgdHlwZSB7IFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB0eXBlIHsgZDNOb2RlIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHsgZ3JhcGhsaWJUb0QzLCBWaXNNb2RhbCB9IGZyb20gXCIuL1Zpc01vZGFsXCI7XHJcbmltcG9ydCB7IG9wZW5PclN3aXRjaCB9IGZyb20gXCJvYnNpZGlhbi1jb21tdW5pdHktbGliXCI7XHJcblxyXG5leHBvcnQgY29uc3QgYXJjRGlhZ3JhbSA9IChcclxuICBncmFwaDogR3JhcGgsXHJcbiAgY3VyckZpbGU6IFRGaWxlLFxyXG4gIG1vZGFsOiBWaXNNb2RhbCxcclxuICB3aWR0aDogbnVtYmVyLFxyXG4gIGhlaWdodDogbnVtYmVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGRhdGEgPSBncmFwaGxpYlRvRDMoZ3JhcGgpO1xyXG5cclxuICBjb25zdCBtYXJnaW4gPSB7IHRvcDogMjAsIHJpZ2h0OiAyMCwgYm90dG9tOiAyMCwgbGVmdDogMTUwIH07XHJcbiAgY29uc3Qgc3ZnID0gZDNcclxuICAgIC5zZWxlY3QoXCIuZDMtZ3JhcGhcIilcclxuICAgIC5hcHBlbmQoXCJzdmdcIilcclxuICAgIC5hdHRyKFwiaGVpZ2h0XCIsIGhlaWdodClcclxuICAgIC5hdHRyKFwid2lkdGhcIiwgd2lkdGgpO1xyXG5cclxuICBjb25zdCBub2RlcyA9IGRhdGEubm9kZXMubWFwKCh7IGlkLCBuYW1lIH0pID0+ICh7XHJcbiAgICBpZCxcclxuICAgIG5hbWUsXHJcbiAgICBzb3VyY2VMaW5rczogW10sXHJcbiAgICB0YXJnZXRMaW5rczogW10sXHJcbiAgfSkpO1xyXG5cclxuICBjb25zdCBub2RlQnlJZCA9IG5ldyBNYXAobm9kZXMubWFwKChkKSA9PiBbZC5pZCwgZF0pKTtcclxuXHJcbiAgY29uc3QgbGlua3MgPSBkYXRhLmxpbmtzLm1hcCgoeyBzb3VyY2UsIHRhcmdldCB9KSA9PiAoe1xyXG4gICAgc291cmNlOiBub2RlQnlJZC5nZXQoc291cmNlIGFzIG51bWJlciksXHJcbiAgICB0YXJnZXQ6IG5vZGVCeUlkLmdldCh0YXJnZXQgYXMgbnVtYmVyKSxcclxuICB9KSk7XHJcblxyXG4gIGZvciAoY29uc3QgbGluayBvZiBsaW5rcykge1xyXG4gICAgY29uc3QgeyBzb3VyY2UsIHRhcmdldCB9ID0gbGluaztcclxuICAgIHNvdXJjZS5zb3VyY2VMaW5rcy5wdXNoKGxpbmspO1xyXG4gICAgdGFyZ2V0LnRhcmdldExpbmtzLnB1c2gobGluayk7XHJcbiAgfVxyXG5cclxuICBzdmcuYXBwZW5kKFwic3R5bGVcIikudGV4dChgXHJcblxyXG5wYXRoIHtcclxuICBzdHJva2U6ICM4MDgwODA7XHJcbiAgb3BhY2l0eTogMC44O1xyXG59XHJcblxyXG50ZXh0IHtcclxuICBzdHJva2U6IHZhcigtLXRleHQtYSk7XHJcbiAgb3BhY2l0eTogMC44O1xyXG59XHJcblxyXG5cclxuLmhvdmVyIGcucHJpbWFyeSB0ZXh0IHtcclxuICBmaWxsOiBibGFjaztcclxufVxyXG5cclxuLmhvdmVyIGcuc2Vjb25kYXJ5IHRleHQge1xyXG4gIGZpbGw6ICMzMzM7XHJcbn1cclxuXHJcbi5ob3ZlciAuc2Vjb25kYXJ5IHtcclxuICAgIGNvbG9yOiByZWQ7XHJcbn1cclxuXHJcbi5ob3ZlciBwYXRoLnByaW1hcnkge1xyXG4gIHN0cm9rZTogIzMzMztcclxuICBzdHJva2Utb3BhY2l0eTogMTtcclxufVxyXG5cclxuLmhvdmVyIHJlY3Qge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuYCk7XHJcblxyXG4gIGNvbnN0IHkgPSBkMy5zY2FsZVBvaW50KG5vZGVzLm1hcCgoZCkgPT4gZC5uYW1lKS5zb3J0KGQzLmFzY2VuZGluZyksIFtcclxuICAgIG1hcmdpbi50b3AsXHJcbiAgICBoZWlnaHQgLSBtYXJnaW4uYm90dG9tLFxyXG4gIF0pO1xyXG5cclxuICBjb25zdCBsYWJlbCA9IHN2Z1xyXG4gICAgLmFwcGVuZChcImdcIilcclxuICAgIC5hdHRyKFwiZm9udC1mYW1pbHlcIiwgXCJzYW5zLXNlcmlmXCIpXHJcbiAgICAuYXR0cihcImZvbnQtc2l6ZVwiLCAxMClcclxuICAgIC5hdHRyKFwidGV4dC1hbmNob3JcIiwgXCJlbmRcIilcclxuICAgIC5zZWxlY3RBbGwoXCJnXCIpXHJcbiAgICAuZGF0YShub2RlcylcclxuICAgIC5qb2luKFwiZ1wiKVxyXG4gICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgKGQpID0+IGB0cmFuc2xhdGUoJHttYXJnaW4ubGVmdH0sJHsoZC55ID0geShkLm5hbWUpKX0pYClcclxuICAgIC5jYWxsKChnKSA9PlxyXG4gICAgICBnXHJcbiAgICAgICAgLmFwcGVuZChcInRleHRcIilcclxuICAgICAgICAuYXR0cihcInhcIiwgLTYpXHJcbiAgICAgICAgLmF0dHIoXCJkeVwiLCBcIjAuMzVlbVwiKVxyXG4gICAgICAgIC8vIC5hdHRyKFwiZmlsbFwiLCAoZCkgPT4gZDMubGFiKGNvbG9yKGQuZ3JvdXApKS5kYXJrZXIoMikpXHJcbiAgICAgICAgLnRleHQoKGQpID0+IGQubmFtZSlcclxuICAgIClcclxuICAgIC5jYWxsKFxyXG4gICAgICAoZykgPT4gZy5hcHBlbmQoXCJjaXJjbGVcIikuYXR0cihcInJcIiwgMylcclxuICAgICAgLy8gLmF0dHIoXCJmaWxsXCIsIChkKSA9PiBjb2xvcihkLmdyb3VwKSlcclxuICAgICk7XHJcblxyXG4gIGNvbnN0IHBhdGggPSBzdmdcclxuICAgIC5pbnNlcnQoXCJnXCIsIFwiKlwiKVxyXG4gICAgLmF0dHIoXCJmaWxsXCIsIFwibm9uZVwiKVxyXG4gICAgLmF0dHIoXCJzdHJva2Utb3BhY2l0eVwiLCAwLjYpXHJcbiAgICAuYXR0cihcInN0cm9rZS13aWR0aFwiLCAxLjUpXHJcbiAgICAuc2VsZWN0QWxsKFwicGF0aFwiKVxyXG4gICAgLmRhdGEobGlua3MpXHJcbiAgICAuam9pbihcInBhdGhcIilcclxuICAgIC8vIC5hdHRyKFwic3Ryb2tlXCIsIChkKSA9PlxyXG4gICAgLy8gICBkLnNvdXJjZS5ncm91cCA9PT0gZC50YXJnZXQuZ3JvdXAgPyBjb2xvcihkLnNvdXJjZS5ncm91cCkgOiBcIiNhYWFcIlxyXG4gICAgLy8gKVxyXG4gICAgLmF0dHIoXCJkXCIsIGFyYyk7XHJcblxyXG4gIGNvbnN0IHN0ZXAgPSAxMDQ7XHJcblxyXG4gIGNvbnN0IG5vZGVDbGljayA9IChldmVudDogTW91c2VFdmVudCwgZGVzdDogc3RyaW5nKSA9PiB7XHJcbiAgICBvcGVuT3JTd2l0Y2goZGVzdCwgZXZlbnQpO1xyXG4gICAgbW9kYWwuY2xvc2UoKTtcclxuICB9O1xyXG5cclxuICBjb25zdCBvdmVybGF5ID0gc3ZnXHJcbiAgICAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgLmF0dHIoXCJmaWxsXCIsIFwibm9uZVwiKVxyXG4gICAgLmF0dHIoXCJwb2ludGVyLWV2ZW50c1wiLCBcImFsbFwiKVxyXG4gICAgLnNlbGVjdEFsbChcInJlY3RcIilcclxuICAgIC5kYXRhKG5vZGVzKVxyXG4gICAgLmpvaW4oXCJyZWN0XCIpXHJcbiAgICAuYXR0cihcIndpZHRoXCIsIG1hcmdpbi5sZWZ0ICsgNDApXHJcbiAgICAuYXR0cihcImhlaWdodFwiLCBzdGVwKVxyXG4gICAgLmF0dHIoXCJ5XCIsIChkKSA9PiB5KGQubmFtZSkgLSBzdGVwIC8gMilcclxuICAgIC5vbihcIm1vdXNlb3ZlclwiLCAoZCkgPT4ge1xyXG4gICAgICBzdmcuY2xhc3NlZChcImhvdmVyXCIsIHRydWUpO1xyXG4gICAgICBsYWJlbC5jbGFzc2VkKFwicHJpbWFyeVwiLCAobikgPT4gbiA9PT0gZCk7XHJcbiAgICAgIGxhYmVsLmNsYXNzZWQoXHJcbiAgICAgICAgXCJzZWNvbmRhcnlcIixcclxuICAgICAgICAobikgPT5cclxuICAgICAgICAgIG4uc291cmNlTGlua3Muc29tZSgobCkgPT4gbC50YXJnZXQgPT09IGQpIHx8XHJcbiAgICAgICAgICBuLnRhcmdldExpbmtzLnNvbWUoKGwpID0+IGwuc291cmNlID09PSBkKVxyXG4gICAgICApO1xyXG4gICAgICBwYXRoXHJcbiAgICAgICAgLmNsYXNzZWQoXCJwcmltYXJ5XCIsIChsKSA9PiBsLnNvdXJjZSA9PT0gZCB8fCBsLnRhcmdldCA9PT0gZClcclxuICAgICAgICAuZmlsdGVyKFwiLnByaW1hcnlcIilcclxuICAgICAgICAucmFpc2UoKTtcclxuICAgIH0pXHJcbiAgICAub24oXCJtb3VzZW91dFwiLCAoZCkgPT4ge1xyXG4gICAgICBzdmcuY2xhc3NlZChcImhvdmVyXCIsIGZhbHNlKTtcclxuICAgICAgbGFiZWwuY2xhc3NlZChcInByaW1hcnlcIiwgZmFsc2UpO1xyXG4gICAgICBsYWJlbC5jbGFzc2VkKFwic2Vjb25kYXJ5XCIsIGZhbHNlKTtcclxuICAgICAgcGF0aC5jbGFzc2VkKFwicHJpbWFyeVwiLCBmYWxzZSkub3JkZXIoKTtcclxuICAgIH0pXHJcbiAgICAub24oXCJjbGlja1wiLCAoZXZlbnQ6IE1vdXNlRXZlbnQsIGQ6IGQzTm9kZSkgPT4ge1xyXG4gICAgICBub2RlQ2xpY2soZXZlbnQsIGQubmFtZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgLy8gICBmdW5jdGlvbiB1cGRhdGUoKSB7XHJcbiAgLy8gICAgIHkuZG9tYWluKG5vZGVzLnNvcnQodmlld29mIG9yZGVyLnZhbHVlKS5tYXAoZCA9PiBkLmlkKSk7XHJcblxyXG4gIC8vICAgICBjb25zdCB0ID0gc3ZnLnRyYW5zaXRpb24oKVxyXG4gIC8vICAgICAgICAgLmR1cmF0aW9uKDc1MCk7XHJcblxyXG4gIC8vICAgICBsYWJlbC50cmFuc2l0aW9uKHQpXHJcbiAgLy8gICAgICAgICAuZGVsYXkoKGQsIGkpID0+IGkgKiAyMClcclxuICAvLyAgICAgICAgIC5hdHRyVHdlZW4oXCJ0cmFuc2Zvcm1cIiwgZCA9PiB7XHJcbiAgLy8gICAgICAgICAgIGNvbnN0IGkgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihkLnksIHkoZC5pZCkpO1xyXG4gIC8vICAgICAgICAgICByZXR1cm4gdCA9PiBgdHJhbnNsYXRlKCR7bWFyZ2luLmxlZnR9LCR7ZC55ID0gaSh0KX0pYDtcclxuICAvLyAgICAgICAgIH0pO1xyXG5cclxuICAvLyAgICAgcGF0aC50cmFuc2l0aW9uKHQpXHJcbiAgLy8gICAgICAgICAuZHVyYXRpb24oNzUwICsgbm9kZXMubGVuZ3RoICogMjApXHJcbiAgLy8gICAgICAgICAuYXR0clR3ZWVuKFwiZFwiLCBkID0+ICgpID0+IGFyYyhkKSk7XHJcblxyXG4gIC8vICAgICBvdmVybGF5LnRyYW5zaXRpb24odClcclxuICAvLyAgICAgICAgIC5kZWxheSgoZCwgaSkgPT4gaSAqIDIwKVxyXG4gIC8vICAgICAgICAgLmF0dHIoXCJ5XCIsIGQgPT4geShkLmlkKSAtIHN0ZXAgLyAyKTtcclxuICAvLyAgIH1cclxuXHJcbiAgLy8gICB2aWV3b2Ygb3JkZXIuYWRkRXZlbnRMaXN0ZW5lcihcImlucHV0XCIsIHVwZGF0ZSk7XHJcbiAgLy8gICBpbnZhbGlkYXRpb24udGhlbigoKSA9PiB2aWV3b2Ygb3JkZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImlucHV0XCIsIHVwZGF0ZSkpO1xyXG5cclxuICBmdW5jdGlvbiBhcmMoZDogeyBzb3VyY2U6IHsgeTogbnVtYmVyIH07IHRhcmdldDogeyB5OiBudW1iZXIgfSB9KSB7XHJcbiAgICBjb25zdCB5MSA9IGQuc291cmNlLnk7XHJcbiAgICBjb25zdCB5MiA9IGQudGFyZ2V0Lnk7XHJcbiAgICBjb25zdCByID0gTWF0aC5hYnMoeTIgLSB5MSkgLyAyO1xyXG4gICAgcmV0dXJuIGBNJHttYXJnaW4ubGVmdH0sJHt5MX1BJHtyfSwke3J9IDAsMCwke3kxIDwgeTIgPyAxIDogMH0gJHttYXJnaW4ubGVmdFxyXG4gICAgICB9LCR7eTJ9YDtcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uIHpvb21lZCh7IHRyYW5zZm9ybSB9KSB7XHJcbiAgICBzdmcuYXR0cihcInRyYW5zZm9ybVwiLCB0cmFuc2Zvcm0pO1xyXG4gIH1cclxuICBzdmcuY2FsbChcclxuICAgIGQzXHJcbiAgICAgIC56b29tKClcclxuICAgICAgLmV4dGVudChbXHJcbiAgICAgICAgWzAsIDBdLFxyXG4gICAgICAgIFt3aWR0aCwgaGVpZ2h0XSxcclxuICAgICAgXSlcclxuICAgICAgLnNjYWxlRXh0ZW50KFswLjUsIDhdKVxyXG4gICAgICAub24oXCJ6b29tXCIsIHpvb21lZClcclxuICApO1xyXG59O1xyXG4iLCAiaW1wb3J0ICogYXMgZDMgZnJvbSBcImQzXCI7XHJcbmltcG9ydCB0eXBlIEdyYXBoIGZyb20gXCJncmFwaG9sb2d5XCI7XHJcbmltcG9ydCB0eXBlIHsgVEZpbGUgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHR5cGUgeyBBZGpMaXN0SXRlbSwgZDNMaW5rLCBkM05vZGUgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBiZnNBZGpMaXN0LCBkZnNGbGF0QWRqTGlzdCwgVmlzTW9kYWwgfSBmcm9tIFwiLi9WaXNNb2RhbFwiO1xyXG5pbXBvcnQgeyBvcGVuT3JTd2l0Y2ggfSBmcm9tIFwib2JzaWRpYW4tY29tbXVuaXR5LWxpYlwiO1xyXG5pbXBvcnQgeyBnZXRDdXJyRmlsZSB9IGZyb20gXCIuLi9VdGlscy9PYnNpZGlhblV0aWxzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY2lyY2xlUGFja2luZyA9IChcclxuICBncmFwaDogR3JhcGgsXHJcbiAgY3VyckZpbGU6IFRGaWxlLFxyXG4gIG1vZGFsOiBWaXNNb2RhbCxcclxuICB3aWR0aDogbnVtYmVyLFxyXG4gIGhlaWdodDogbnVtYmVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGZsYXRBZGogPSBkZnNGbGF0QWRqTGlzdChncmFwaCwgY3VyckZpbGUuYmFzZW5hbWUpO1xyXG4gIGNvbnNvbGUubG9nKHsgZmxhdEFkaiB9KTtcclxuXHJcbiAgY29uc3QgaGllcmFyY2h5ID0gZDMuc3RyYXRpZnkoKShmbGF0QWRqKTtcclxuICBjb25zb2xlLmxvZyh7IGhpZXJhcmNoeSB9KTtcclxuXHJcbiAgY29uc3QgYWRqTGlzdDogQWRqTGlzdEl0ZW1bXSA9IGJmc0Fkakxpc3QoZ3JhcGgsIGN1cnJGaWxlLmJhc2VuYW1lKTtcclxuICBjb25zb2xlLmxvZyh7IGFkakxpc3QgfSk7XHJcblxyXG4gIGNvbnN0IG5vRG91YmxlcyA9IFsuLi5hZGpMaXN0XTtcclxuICBub0RvdWJsZXMuZm9yRWFjaCgoYSwgaSkgPT4ge1xyXG4gICAgaWYgKG5vRG91Ymxlcy5zb21lKChiLCBqKSA9PiBpICE9PSBqICYmIGEubmFtZSA9PT0gYi5uYW1lKSkge1xyXG4gICAgICBjb25zdCBpbmRleCA9IG5vRG91Ymxlcy5maW5kSW5kZXgoKGIsIGopID0+IGkgIT09IGogJiYgYS5uYW1lID09PSBiLm5hbWUpO1xyXG4gICAgICBub0RvdWJsZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgLy8gY29uc3Qgbm9Eb3VibGVzID0gYWRqTGlzdC5maWx0ZXIoKGEpID0+IHtcclxuICAvLyAgICFhZGpMaXN0LnNvbWUoKGIpID0+IHtcclxuICAvLyAgICAgY29uc29sZS5sb2coeyBhLCBiIH0pO1xyXG4gIC8vICAgICByZXR1cm4gYS5uYW1lICE9PSBiLm5hbWUgJiYgYS5wYXJlbnRJZCA9PT0gYi5wYXJlbnRJZDtcclxuICAvLyAgIH0pO1xyXG4gIC8vIH0pO1xyXG4gIGNvbnNvbGUubG9nKHsgbm9Eb3VibGVzIH0pO1xyXG5cclxuICAvLyBjb25zdCByb290ID0gc3RyYXRpZnkobm9Eb3VibGVzKTtcclxuICAvLyBjb25zb2xlLmxvZyhyb290KTtcclxuXHJcbiAgLy8gY29uc3QgaGllcmFyY2h5OiBkM1RyZWUgPSBjcmVhdGVUcmVlSGllcmFyY2h5KG5vRG91Ymxlcywge1xyXG4gIC8vICAgaWQ6IFwibmFtZVwiLFxyXG4gIC8vICAgZXhjbHVkZVBhcmVudDogdHJ1ZSxcclxuICAvLyB9KTtcclxuXHJcbiAgLy8gY29uc29sZS5sb2coeyBoaWVyYXJjaHkgfSk7XHJcblxyXG4gIGNvbnN0IGxpbmtBcnI6IGQzTGlua1tdID0gbm9Eb3VibGVzLm1hcCgoZCkgPT4ge1xyXG4gICAgcmV0dXJuIHsgc291cmNlOiBkLm5hbWUsIHRhcmdldDogZC5wYXJlbnRJZCB9O1xyXG4gIH0pO1xyXG4gIGNvbnN0IGxpbmtzID0gbGlua0Fyci5tYXAoKGQpID0+IE9iamVjdC5jcmVhdGUoZCkpO1xyXG5cclxuICBjb25zdCBzdmcgPSBkM1xyXG4gICAgLnNlbGVjdChcIi5kMy1ncmFwaFwiKVxyXG4gICAgLmFwcGVuZChcInN2Z1wiKVxyXG4gICAgLmF0dHIoXCJoZWlnaHRcIiwgaGVpZ2h0KVxyXG4gICAgLmF0dHIoXCJ3aWR0aFwiLCB3aWR0aCk7XHJcblxyXG4gIGNvbnN0IG5vZGVDb2xvdXIgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoXHJcbiAgICBcIi0tdGV4dC1hY2NlbnRcIlxyXG4gICk7XHJcblxyXG4gIC8vIEluaXRpYWxpemUgdGhlIGNpcmNsZTogYWxsIGxvY2F0ZWQgYXQgdGhlIGNlbnRlciBvZiB0aGUgc3ZnIGFyZWFcclxuICBjb25zdCBub2RlID0gc3ZnXHJcbiAgICAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgLnNlbGVjdEFsbChcImNpcmNsZVwiKVxyXG4gICAgLmRhdGEobm9Eb3VibGVzKVxyXG4gICAgLmpvaW4oXCJjaXJjbGVcIilcclxuICAgIC5hdHRyKFwiclwiLCAoZCkgPT4gTWF0aC5yb3VuZChkLmhlaWdodCAvIDEwKSArIDEwKVxyXG4gICAgLmF0dHIoXCJjeFwiLCB3aWR0aCAvIDIpXHJcbiAgICAuYXR0cihcImN5XCIsIGhlaWdodCAvIDIpXHJcbiAgICAuc3R5bGUoXCJmaWxsXCIsIG5vZGVDb2xvdXIpXHJcbiAgICAuc3R5bGUoXCJmaWxsLW9wYWNpdHlcIiwgMC42KVxyXG4gICAgLmF0dHIoXCJzdHJva2VcIiwgbm9kZUNvbG91cilcclxuICAgIC5zdHlsZShcInN0cm9rZS13aWR0aFwiLCA0KTtcclxuXHJcbiAgbm9kZS5hdHRyKFwiYXJpYS1sYWJlbFwiLCAoZDogQWRqTGlzdEl0ZW0pID0+IGQubmFtZSk7XHJcblxyXG4gIGNvbnN0IG5vZGVDbGljayA9IChldmVudDogTW91c2VFdmVudCwgZGVzdDogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCBjdXJyRmlsZSA9IGdldEN1cnJGaWxlKCk7XHJcbiAgICBvcGVuT3JTd2l0Y2goZGVzdCwgZXZlbnQpO1xyXG4gICAgbW9kYWwuY2xvc2UoKTtcclxuICB9O1xyXG4gIG5vZGUub24oXCJjbGlja1wiLCAoZXZlbnQ6IE1vdXNlRXZlbnQsIGQ6IGQzTm9kZSkgPT4ge1xyXG4gICAgbm9kZUNsaWNrKGV2ZW50LCBkLm5hbWUpO1xyXG4gIH0pO1xyXG5cclxuICBjb25zdCBsaW5rID0gc3ZnXHJcbiAgICAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgLmF0dHIoXCJzdHJva2VcIiwgXCIjODY4MjgyXCIpXHJcbiAgICAuYXR0cihcInN0cm9rZS1vcGFjaXR5XCIsIDAuNilcclxuICAgIC5zZWxlY3RBbGwoXCJsaW5lXCIpXHJcbiAgICAuZGF0YShsaW5rcylcclxuICAgIC5qb2luKFwibGluZVwiKVxyXG4gICAgLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgMC44KTtcclxuXHJcbiAgLy8gRmVhdHVyZXMgb2YgdGhlIGZvcmNlcyBhcHBsaWVkIHRvIHRoZSBub2RlczpcclxuICBjb25zdCBzaW11bGF0aW9uID0gZDNcclxuICAgIC5mb3JjZVNpbXVsYXRpb24oKVxyXG4gICAgLmZvcmNlKFxyXG4gICAgICBcImNlbnRlclwiLFxyXG4gICAgICBkM1xyXG4gICAgICAgIC5mb3JjZUNlbnRlcigpXHJcbiAgICAgICAgLngod2lkdGggLyAyKVxyXG4gICAgICAgIC55KGhlaWdodCAvIDIpXHJcbiAgICApIC8vIEF0dHJhY3Rpb24gdG8gdGhlIGNlbnRlciBvZiB0aGUgc3ZnIGFyZWFcclxuICAgIC5mb3JjZShcImNoYXJnZVwiLCBkMy5mb3JjZU1hbnlCb2R5KCkuc3RyZW5ndGgoMC41KSkgLy8gTm9kZXMgYXJlIGF0dHJhY3RlZCBvbmUgZWFjaCBvdGhlciBvZiB2YWx1ZSBpcyA+IDBcclxuICAgIC5mb3JjZShcclxuICAgICAgXCJjb2xsaWRlXCIsXHJcbiAgICAgIGQzLmZvcmNlQ29sbGlkZSgpLnN0cmVuZ3RoKDAuMDI1KS5yYWRpdXMoMzApLml0ZXJhdGlvbnMoMSlcclxuICAgICk7IC8vIEZvcmNlIHRoYXQgYXZvaWRzIGNpcmNsZSBvdmVybGFwcGluZ1xyXG5cclxuICAvLyBBcHBseSB0aGVzZSBmb3JjZXMgdG8gdGhlIG5vZGVzIGFuZCB1cGRhdGUgdGhlaXIgcG9zaXRpb25zLlxyXG4gIC8vIE9uY2UgdGhlIGZvcmNlIGFsZ29yaXRobSBpcyBoYXBweSB3aXRoIHBvc2l0aW9ucyAoJ2FscGhhJyB2YWx1ZSBpcyBsb3cgZW5vdWdoKSwgc2ltdWxhdGlvbnMgd2lsbCBzdG9wLlxyXG4gIHNpbXVsYXRpb24ubm9kZXMobm9Eb3VibGVzKS5vbihcInRpY2tcIiwgZnVuY3Rpb24gKGQpIHtcclxuICAgIG5vZGUuYXR0cihcImN4XCIsIChkKSA9PiBkLngpLmF0dHIoXCJjeVwiLCAoZCkgPT4gZC55KTtcclxuICB9KTtcclxuXHJcbiAgZnVuY3Rpb24gem9vbWVkKHsgdHJhbnNmb3JtIH0pIHtcclxuICAgIG5vZGUuYXR0cihcInRyYW5zZm9ybVwiLCB0cmFuc2Zvcm0pO1xyXG4gIH1cclxuICBzdmcuY2FsbChcclxuICAgIGQzXHJcbiAgICAgIC56b29tKClcclxuICAgICAgLmV4dGVudChbXHJcbiAgICAgICAgWzAsIDBdLFxyXG4gICAgICAgIFt3aWR0aCwgaGVpZ2h0XSxcclxuICAgICAgXSlcclxuICAgICAgLnNjYWxlRXh0ZW50KFswLjUsIDhdKVxyXG4gICAgICAub24oXCJ6b29tXCIsIHpvb21lZClcclxuICApO1xyXG5cclxuICBjb25zdCBkcmFnID0gKFxyXG4gICAgc2ltdWxhdGlvbjogZDMuU2ltdWxhdGlvbjxkMy5TaW11bGF0aW9uTm9kZURhdHVtLCB1bmRlZmluZWQ+XHJcbiAgKSA9PiB7XHJcbiAgICBmdW5jdGlvbiBkcmFnc3RhcnRlZChldmVudCwgZCkge1xyXG4gICAgICBpZiAoIWV2ZW50LmFjdGl2ZSkgc2ltdWxhdGlvbi5hbHBoYVRhcmdldCgwLjMpLnJlc3RhcnQoKTtcclxuICAgICAgZC5meCA9IGQueDtcclxuICAgICAgZC5meSA9IGQueTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBkcmFnZ2VkKGV2ZW50LCBkKSB7XHJcbiAgICAgIGQuZnggPSBldmVudC54O1xyXG4gICAgICBkLmZ5ID0gZXZlbnQueTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBkcmFnZW5kZWQoZXZlbnQsIGQpIHtcclxuICAgICAgaWYgKCFldmVudC5hY3RpdmUpIHNpbXVsYXRpb24uYWxwaGFUYXJnZXQoMCk7XHJcbiAgICAgIGQuZnggPSBudWxsO1xyXG4gICAgICBkLmZ5ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZDNcclxuICAgICAgLmRyYWcoKVxyXG4gICAgICAub24oXCJzdGFydFwiLCBkcmFnc3RhcnRlZClcclxuICAgICAgLm9uKFwiZHJhZ1wiLCBkcmFnZ2VkKVxyXG4gICAgICAub24oXCJlbmRcIiwgZHJhZ2VuZGVkKTtcclxuICB9O1xyXG5cclxuICBub2RlLmNhbGwoZHJhZyhzaW11bGF0aW9uKSk7XHJcblxyXG4gIC8vICAgY29uc3QgcGFjayA9IChkYXRhKSA9PlxyXG4gIC8vICAgICBkMy5wYWNrKCkuc2l6ZShbd2lkdGgsIGhlaWdodF0pLnBhZGRpbmcoMykoXHJcbiAgLy8gICAgICAgZDNcclxuICAvLyAgICAgICAgIC5oaWVyYXJjaHkoZGF0YSlcclxuICAvLyAgICAgICAgIC5zdW0oKGQpID0+IGQudmFsdWUpXHJcbiAgLy8gICAgICAgICAuc29ydCgoYSwgYikgPT4gYi52YWx1ZSAtIGEudmFsdWUpXHJcbiAgLy8gICAgICk7XHJcblxyXG4gIC8vICAgY29uc3Qgcm9vdCA9IHBhY2soaGllcmFyY2h5KTtcclxuXHJcbiAgLy8gICBjb25zdCBzdmcgPSBkM1xyXG4gIC8vICAgICAuc2VsZWN0KFwiLmQzLWdyYXBoXCIpXHJcbiAgLy8gICAgIC5hcHBlbmQoXCJzdmdcIilcclxuICAvLyAgICAgLmF0dHIoXCJoZWlnaHRcIiwgaGVpZ2h0KVxyXG4gIC8vICAgICAuYXR0cihcIndpZHRoXCIsIHdpZHRoKVxyXG4gIC8vICAgICAuc3R5bGUoXCJmb250XCIsIFwiMTBweCBzYW5zLXNlcmlmXCIpXHJcbiAgLy8gICAgIC5zdHlsZShcIm92ZXJmbG93XCIsIFwidmlzaWJsZVwiKVxyXG4gIC8vICAgICAuYXR0cihcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpO1xyXG5cclxuICAvLyAgIGNvbnN0IG5vZGUgPSBzdmdcclxuICAvLyAgICAgLmFwcGVuZChcImdcIilcclxuICAvLyAgICAgLmF0dHIoXCJwb2ludGVyLWV2ZW50c1wiLCBcImFsbFwiKVxyXG4gIC8vICAgICAuc2VsZWN0QWxsKFwiZ1wiKVxyXG4gIC8vICAgICAuZGF0YShyb290LmRlc2NlbmRhbnRzKCkpXHJcbiAgLy8gICAgIC5qb2luKFwiZ1wiKVxyXG4gIC8vICAgICAuYXR0cihcInRyYW5zZm9ybVwiLCAoZCkgPT4gYHRyYW5zbGF0ZSgke2QueH0sJHtkLnl9KWApO1xyXG5cclxuICAvLyAgIG5vZGVcclxuICAvLyAgICAgLmFwcGVuZChcImNpcmNsZVwiKVxyXG4gIC8vICAgICAuYXR0cihcInJcIiwgKGQpID0+IGQucilcclxuICAvLyAgICAgLmF0dHIoXCJzdHJva2VcIiwgKGQpID0+IChkLmNoaWxkcmVuID8gXCIjYmJiXCIgOiBcIm5vbmVcIikpXHJcbiAgLy8gICAgIC5hdHRyKFwiZmlsbFwiLCAoZCkgPT4gKGQuY2hpbGRyZW4gPyBcIm5vbmVcIiA6IFwiI2RkZFwiKSk7XHJcblxyXG4gIC8vICAgY29uc3QgbGVhZiA9IG5vZGUuZmlsdGVyKChkKSA9PiAhZC5jaGlsZHJlbik7XHJcblxyXG4gIC8vICAgbGVhZi5zZWxlY3QoXCJjaXJjbGVcIik7XHJcblxyXG4gIC8vICAgLy8gbGVhZlxyXG4gIC8vICAgLy8gICAuYXBwZW5kKFwiY2xpcFBhdGhcIilcclxuICAvLyAgIC8vICAgLmF0dHIoXCJpZFwiLCAoZCkgPT4gKGQuY2xpcFVpZCA9IERPTS51aWQoXCJjbGlwXCIpKS5pZClcclxuICAvLyAgIC8vICAgLmFwcGVuZChcInVzZVwiKVxyXG4gIC8vICAgLy8gICAuYXR0cihcInhsaW5rOmhyZWZcIiwgKGQpID0+IGQubGVhZlVpZC5ocmVmKTtcclxuXHJcbiAgLy8gICAvLyBsZWFmXHJcbiAgLy8gICAvLyAgIC5hcHBlbmQoXCJ0ZXh0XCIpXHJcbiAgLy8gICAvLyAgIC5hdHRyKFwiY2xpcC1wYXRoXCIsIChkKSA9PiBkLmNsaXBVaWQpXHJcbiAgLy8gICAvLyAgIC5zZWxlY3RBbGwoXCJ0c3BhblwiKVxyXG4gIC8vICAgLy8gICAuZGF0YSgoZCkgPT4gZC5kYXRhLm5hbWUuc3BsaXQoLyg/PVtBLVpdW15BLVpdKS9nKSlcclxuICAvLyAgIC8vICAgLmpvaW4oXCJ0c3BhblwiKVxyXG4gIC8vICAgLy8gICAuYXR0cihcInhcIiwgMClcclxuICAvLyAgIC8vICAgLmF0dHIoXCJ5XCIsIChkLCBpLCBub2RlcykgPT4gYCR7aSAtIG5vZGVzLmxlbmd0aCAvIDIgKyAwLjh9ZW1gKVxyXG4gIC8vICAgLy8gICAudGV4dCgoZCkgPT4gZCk7XHJcblxyXG4gIC8vICAgbm9kZS5hcHBlbmQoXCJ0aXRsZVwiKS50ZXh0KFxyXG4gIC8vICAgICAoZCkgPT4gYCR7ZFxyXG4gIC8vICAgICAgIC5hbmNlc3RvcnMoKVxyXG4gIC8vICAgICAgIC5tYXAoKGQpID0+IGQuZGF0YS5kYXRhLm5hbWUpXHJcbiAgLy8gICAgICAgLnJldmVyc2UoKVxyXG4gIC8vICAgICAgIC5qb2luKFwiL1wiKX1cclxuICAvLyAke2QudmFsdWUudG9Mb2NhbGVTdHJpbmcoKX1gXHJcbiAgLy8gICApO1xyXG59O1xyXG4iLCAiaW1wb3J0ICogYXMgZDMgZnJvbSBcImQzXCI7XHJcbmltcG9ydCB0eXBlIEdyYXBoIGZyb20gXCJncmFwaG9sb2d5XCI7XHJcbmltcG9ydCB0eXBlIHsgVEZpbGUgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHsgZGZzRmxhdEFkakxpc3QsIFZpc01vZGFsIH0gZnJvbSBcIi4vVmlzTW9kYWxcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBlZGdlQnVuZGxpbmcgPSAoXHJcbiAgZ3JhcGg6IEdyYXBoLFxyXG4gIGN1cnJGaWxlOiBURmlsZSxcclxuICBtb2RhbDogVmlzTW9kYWwsXHJcbiAgd2lkdGg6IG51bWJlcixcclxuICBoZWlnaHQ6IG51bWJlclxyXG4pID0+IHtcclxuICBjb25zdCBmbGF0QWRqID0gZGZzRmxhdEFkakxpc3QoZ3JhcGgsIGN1cnJGaWxlLmJhc2VuYW1lKTtcclxuICBjb25zb2xlLmxvZyh7IGZsYXRBZGogfSk7XHJcblxyXG4gIGNvbnN0IGhpZXIgPSBkMy5zdHJhdGlmeSgpKGZsYXRBZGopO1xyXG4gIGNvbnNvbGUubG9nKHsgaGllciB9KTtcclxuXHJcbiAgY29uc3QgUEFERElOR19CVUJCTEUgPSAxNTsgLy8gZGlzdGFuY2UgYmV0d2VlbiBlZGdlIGVuZCBhbmQgYnViYmxlXHJcbiAgY29uc3QgUEFERElOR19MQUJFTCA9IDMwOyAvLyBkaXN0YW5jZSBiZXR3ZWVuIGVkZ2UgZW5kIGFuZCBlbmdpbmVlciBuYW1lXHJcbiAgY29uc3QgQlVCQkxFX1NJWkVfTUlOID0gNDtcclxuICBjb25zdCBCVUJCTEVfU0laRV9NQVggPSAyMDtcclxuXHJcbiAgdmFyIGRpYW1ldGVyID0gNTYwLFxyXG4gICAgcmFkaXVzID0gZGlhbWV0ZXIgLyAyLFxyXG4gICAgaW5uZXJSYWRpdXMgPSByYWRpdXMgLSAxNzA7IC8vIGJldHdlZW4gY2VudGVyIGFuZCBlZGdlIGVuZFxyXG5cclxuICAvLyBUaGUgJ2NsdXN0ZXInIGZ1bmN0aW9uIHRha2VzIDEgYXJndW1lbnQgYXMgaW5wdXQuIEl0IGFsc28gaGFzIG1ldGhvZHMgKD8/KSBsaWtlIGNsdXN0ZXIuc2VwYXJhdGlvbigpLCBjbHVzdGVyLnNpemUoKSBhbmQgY2x1c3Rlci5ub2RlU2l6ZSgpXHJcbiAgdmFyIGNsdXN0ZXIgPSBkMy5jbHVzdGVyKCkuc2l6ZShbMzYwLCBpbm5lclJhZGl1c10pO1xyXG5cclxuICB2YXIgbGluZSA9IGQzXHJcbiAgICAubGluZVJhZGlhbCgpXHJcbiAgICAuY3VydmUoZDMuY3VydmVCdW5kbGUuYmV0YSgwLjg1KSlcclxuICAgIC5yYWRpdXMoZnVuY3Rpb24gKGQpIHtcclxuICAgICAgcmV0dXJuIGRbMV07XHJcbiAgICB9KVxyXG4gICAgLmFuZ2xlKGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgIHJldHVybiAoZFswXSAvIDE4MCkgKiBNYXRoLlBJO1xyXG4gICAgfSk7XHJcblxyXG4gIGNvbnN0IHN2ZyA9IGQzXHJcbiAgICAuc2VsZWN0KFwiLmQzLWdyYXBoXCIpXHJcbiAgICAuYXBwZW5kKFwic3ZnXCIpXHJcbiAgICAuYXR0cihcImhlaWdodFwiLCBoZWlnaHQpXHJcbiAgICAuYXR0cihcIndpZHRoXCIsIHdpZHRoKVxyXG4gICAgLmFwcGVuZChcImdcIilcclxuICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgcmFkaXVzICsgXCIsXCIgKyByYWRpdXMgKyBcIilcIik7XHJcblxyXG4gIHZhciBsaW5rID0gc3ZnLmFwcGVuZChcImdcIikuc2VsZWN0QWxsKFwiLmxpbmtcIiksXHJcbiAgICBsYWJlbCA9IHN2Zy5hcHBlbmQoXCJnXCIpLnNlbGVjdEFsbChcIi5sYWJlbFwiKSxcclxuICAgIGJ1YmJsZSA9IHN2Zy5hcHBlbmQoXCJnXCIpLnNlbGVjdEFsbChcIi5idWJibGVcIik7XHJcblxyXG4gIC8vIEFkZCBhIHNjYWxlIGZvciBidWJibGUgc2l6ZVxyXG4gIHZhciBidWJibGVTaXplU2NhbGUgPSBkM1xyXG4gICAgLnNjYWxlTGluZWFyKClcclxuICAgIC5kb21haW4oWzAsIDEwMF0pXHJcbiAgICAucmFuZ2UoW0JVQkJMRV9TSVpFX01JTiwgQlVCQkxFX1NJWkVfTUFYXSk7XHJcblxyXG4gIC8vIFNjYWxlIGZvciB0aGUgYnViYmxlIHNpemVcclxuXHJcbiAgLy8gSWYgd2FubmEgc2VlIHlvdXIgZGF0YVxyXG4gIC8vIGNvbnNvbGUubG9nKGhpZXJhcmNoaWNhbERhdGEpXHJcblxyXG4gIC8vIFJlZm9ybWF0IHRoZSBkYXRhXHJcbiAgdmFyIHJvb3QgPSBwYWNrYWdlSGllcmFyY2h5KGhpZXIpXHJcbiAgICAvL2RlYnVnZ2VyO1xyXG4gICAgLnN1bShmdW5jdGlvbiAoZCkge1xyXG4gICAgICBjb25zb2xlLmxvZyhkKTtcclxuICAgICAgcmV0dXJuIGQuaGVpZ2h0O1xyXG4gICAgfSk7XHJcblxyXG4gIC8vIGNvbnNvbGUubG9nKHJvb3QpXHJcblxyXG4gIC8vIEJ1aWxkIGFuIG9iamVjdCB0aGF0IGdpdmVzIGZlYXR1cmUgb2YgZWFjaCBsZWF2ZXNcclxuICBjbHVzdGVyKHJvb3QpO1xyXG4gIGNvbnN0IGxlYXZlcyA9IHJvb3QubGVhdmVzKCk7XHJcblxyXG4gIC8vIExlYXZlcyBpcyBhbiBhcnJheSBvZiBPYmplY3RzLiAxIGl0ZW0gPSBvbmUgbGVhZi4gUHJvdmlkZXMgeCBhbmQgeSBmb3IgbGVhZiBwb3NpdGlvbiBpbiB0aGUgc3ZnLiBBbHNvIGdpdmVzIGRldGFpbHMgYWJvdXQgaXRzIHBhcmVudC5cclxuICBjb25zdCBfbGluayA9IGxpbmtcclxuICAgIC5kYXRhKHBhY2thZ2VJbXBvcnRzKGxlYXZlcykpXHJcbiAgICAuZW50ZXIoKVxyXG4gICAgLmFwcGVuZChcInBhdGhcIilcclxuICAgIC5lYWNoKGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgIChkLnNvdXJjZSA9IGRbMF0pLCAoZC50YXJnZXQgPSBkW2QubGVuZ3RoIC0gMV0pO1xyXG4gICAgfSlcclxuICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJsaW5rXCIpXHJcbiAgICAuYXR0cihcImRcIiwgbGluZSlcclxuICAgIC5hdHRyKFwiZmlsbFwiLCBcIm5vbmVcIilcclxuICAgIC5hdHRyKFwic3Ryb2tlXCIsIFwiYmxhY2tcIik7XHJcblxyXG4gIGNvbnN0IF9sYWJlbCA9IGxhYmVsXHJcbiAgICAuZGF0YShsZWF2ZXMpXHJcbiAgICAuZW50ZXIoKVxyXG4gICAgLmFwcGVuZChcInRleHRcIilcclxuICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJsYWJlbFwiKVxyXG4gICAgLmF0dHIoXCJkeVwiLCBcIjAuMzFlbVwiKVxyXG4gICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgZnVuY3Rpb24gKGQpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICBcInJvdGF0ZShcIiArXHJcbiAgICAgICAgKGQueCAtIDkwKSArXHJcbiAgICAgICAgXCIpdHJhbnNsYXRlKFwiICtcclxuICAgICAgICAoZC55ICsgUEFERElOR19MQUJFTCkgK1xyXG4gICAgICAgIFwiLDApXCIgK1xyXG4gICAgICAgIChkLnggPCAxODAgPyBcIlwiIDogXCJyb3RhdGUoMTgwKVwiKVxyXG4gICAgICApO1xyXG4gICAgfSlcclxuICAgIC5hdHRyKFwidGV4dC1hbmNob3JcIiwgZnVuY3Rpb24gKGQpIHtcclxuICAgICAgcmV0dXJuIGQueCA8IDE4MCA/IFwic3RhcnRcIiA6IFwiZW5kXCI7XHJcbiAgICB9KVxyXG4gICAgLnRleHQoZnVuY3Rpb24gKGQpIHtcclxuICAgICAgcmV0dXJuIGQuZGF0YS5rZXk7XHJcbiAgICB9KTtcclxuXHJcbiAgY29uc3QgX2J1YmJsZSA9IGJ1YmJsZVxyXG4gICAgLmRhdGEobGVhdmVzKVxyXG4gICAgLmVudGVyKClcclxuICAgIC5hcHBlbmQoXCJjaXJjbGVcIilcclxuICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJidWJibGVcIilcclxuICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgXCJyb3RhdGUoXCIgKyAoZC54IC0gOTApICsgXCIpdHJhbnNsYXRlKFwiICsgKGQueSArIFBBRERJTkdfQlVCQkxFKSArIFwiLDApXCJcclxuICAgICAgKTtcclxuICAgIH0pXHJcbiAgICAuYXR0cihcInJcIiwgKGQpID0+IGJ1YmJsZVNpemVTY2FsZShkLnZhbHVlKSlcclxuICAgIC5hdHRyKFwic3Ryb2tlXCIsIFwiYmxhY2tcIilcclxuICAgIC5hdHRyKFwiZmlsbFwiLCBcIiM2OWEzYjJcIilcclxuICAgIC5zdHlsZShcIm9wYWNpdHlcIiwgMC4yKTtcclxuXHJcbiAgLy8gTGF6aWx5IGNvbnN0cnVjdCB0aGUgcGFja2FnZSBoaWVyYXJjaHkgZnJvbSBjbGFzcyBuYW1lcy5cclxuICBmdW5jdGlvbiBwYWNrYWdlSGllcmFyY2h5KGNsYXNzZXMpIHtcclxuICAgIHZhciBtYXAgPSB7fTtcclxuXHJcbiAgICBmdW5jdGlvbiBmaW5kKG5hbWUsIGRhdGEpIHtcclxuICAgICAgdmFyIG5vZGUgPSBtYXBbbmFtZV0sXHJcbiAgICAgICAgaTtcclxuICAgICAgaWYgKCFub2RlKSB7XHJcbiAgICAgICAgbm9kZSA9IG1hcFtuYW1lXSA9IGRhdGEgfHwgeyBuYW1lOiBuYW1lLCBjaGlsZHJlbjogW10gfTtcclxuICAgICAgICBpZiAobmFtZS5sZW5ndGgpIHtcclxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgIG5vZGUucGFyZW50ID0gZmluZChuYW1lLnN1YnN0cmluZygwLCAoaSA9IG5hbWUubGFzdEluZGV4T2YoXCIuXCIpKSkpO1xyXG4gICAgICAgICAgbm9kZS5wYXJlbnQuY2hpbGRyZW4ucHVzaChub2RlKTtcclxuICAgICAgICAgIG5vZGUua2V5ID0gbmFtZS5zdWJzdHJpbmcoaSArIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbm9kZTtcclxuICAgIH1cclxuXHJcbiAgICBjbGFzc2VzLmZvckVhY2goZnVuY3Rpb24gKGQpIHtcclxuICAgICAgZmluZChkLm5hbWUsIGQpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGQzLmhpZXJhcmNoeShtYXBbXCJcIl0pO1xyXG4gIH1cclxuXHJcbiAgLy8gUmV0dXJuIGEgbGlzdCBvZiBpbXBvcnRzIGZvciB0aGUgZ2l2ZW4gYXJyYXkgb2Ygbm9kZXMuXHJcbiAgZnVuY3Rpb24gcGFja2FnZUltcG9ydHMobm9kZXMpIHtcclxuICAgIHZhciBtYXAgPSB7fSxcclxuICAgICAgaW1wb3J0cyA9IFtdO1xyXG5cclxuICAgIC8vIENvbXB1dGUgYSBtYXAgZnJvbSBuYW1lIHRvIG5vZGUuXHJcbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgIG1hcFtkLmRhdGEubmFtZV0gPSBkO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gRm9yIGVhY2ggaW1wb3J0LCBjb25zdHJ1Y3QgYSBsaW5rIGZyb20gdGhlIHNvdXJjZSB0byB0YXJnZXQgbm9kZS5cclxuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKGQpIHtcclxuICAgICAgaWYgKGQuZGF0YS5pbXBvcnRzKVxyXG4gICAgICAgIGQuZGF0YS5pbXBvcnRzLmZvckVhY2goZnVuY3Rpb24gKGkpIHtcclxuICAgICAgICAgIGltcG9ydHMucHVzaChtYXBbZC5kYXRhLm5hbWVdLnBhdGgobWFwW2ldKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gaW1wb3J0cztcclxuICB9XHJcbn07XHJcbiIsICJpbXBvcnQgKiBhcyBkMyBmcm9tIFwiZDNcIjtcclxuaW1wb3J0IHR5cGUgR3JhcGggZnJvbSBcImdyYXBob2xvZ3lcIjtcclxuaW1wb3J0IHsgb3Blbk9yU3dpdGNoIH0gZnJvbSBcIm9ic2lkaWFuLWNvbW11bml0eS1saWJcIjtcclxuaW1wb3J0IHR5cGUgeyBkM05vZGUgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBncmFwaGxpYlRvRDMsIFZpc01vZGFsIH0gZnJvbSBcIi4vVmlzTW9kYWxcIjtcclxuaW1wb3J0IHR5cGUgeyBURmlsZSB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGZvcmNlRGlyZWN0ZWRHID0gKFxyXG4gIGdyYXBoOiBHcmFwaCxcclxuICBjdXJyRmlsZTogVEZpbGUsXHJcbiAgbW9kYWw6IFZpc01vZGFsLFxyXG4gIHdpZHRoOiBudW1iZXIsXHJcbiAgaGVpZ2h0OiBudW1iZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gbW9kYWwucGx1Z2luO1xyXG4gIGxldCBub2RlVG9HZXRUbyA9IGN1cnJGaWxlLmJhc2VuYW1lO1xyXG4gIGNvbnNvbGUubG9nKHsgbm9kZVRvR2V0VG8gfSk7XHJcblxyXG4gIGNvbnNvbGUudGltZShcIkZpbmQgYWxsIHBhdGhzXCIpO1xyXG4gIC8vIGxldCBwYXRoc0Zyb21Ob2RlVG9HZXRUbyA9IGdyYXBobGliLmFsZy5kaWprc3RyYShncmFwaCwgbm9kZVRvR2V0VG8pO1xyXG4gIGNvbnNvbGUudGltZUVuZChcIkZpbmQgYWxsIHBhdGhzXCIpO1xyXG5cclxuICBjb25zdCBkZWZhdWx0Tm9kZUNvbG91ciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZShcclxuICAgIFwiLS10ZXh0LWFjY2VudFwiXHJcbiAgKTtcclxuICBsZXQgY3Vyck5vZGVDb2xvdXIgPSBkZWZhdWx0Tm9kZUNvbG91cjtcclxuXHJcbiAgY29uc3QgY29sb3VyQ2hhbmdlSW5wdXQgPSBkM1xyXG4gICAgLnNlbGVjdChcIi5kMy1ncmFwaFwiKVxyXG4gICAgLmFwcGVuZChcImlucHV0XCIpXHJcbiAgICAuYXR0cihcInR5cGVcIiwgXCJjb2xvclwiKTtcclxuXHJcbiAgY29sb3VyQ2hhbmdlSW5wdXQub24oXCJjaGFuZ2VcIiwgZnVuY3Rpb24gY2hhbmdlQ29sb3IoZWwpIHtcclxuICAgIGN1cnJOb2RlQ29sb3VyID0gZWwudGFyZ2V0LnZhbHVlO1xyXG4gICAgbm9kZVxyXG4gICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgIC5kdXJhdGlvbigzMDApXHJcbiAgICAgIC5zdHlsZShcImZpbGxcIiwgKGQpID0+IHtcclxuICAgICAgICBpZiAoZC5pbmRleCA9PT0gY3Vyck5vZGVJbmRleCkgcmV0dXJuO1xyXG4gICAgICAgIHJldHVybiBjdXJyTm9kZUNvbG91cjtcclxuICAgICAgfSk7XHJcbiAgfSk7XHJcblxyXG4gIC8vIGNvbnN0IHNhdmVMYXlvdXRCdXR0b24gPSBtb2RhbC5jb250ZW50RWwuY3JlYXRlRWwoJ2J1dHRvbicsIHsgdGV4dDogJ1NhdmUgTGF5b3V0JyB9KVxyXG4gIC8vICAgLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgc2F2ZUdyYXBoKVxyXG5cclxuICBjb25zdCBkYXRhID0gZ3JhcGhsaWJUb0QzKGdyYXBoKTtcclxuXHJcbiAgY29uc3QgbGlua3M6IHtcclxuICAgIGluZGV4OiBudW1iZXI7XHJcbiAgICBzb3VyY2U6IHsgaW5kZXg6IG51bWJlcjsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTtcclxuICAgIHRhcmdldDogeyBpbmRleDogbnVtYmVyOyB4OiBudW1iZXI7IHk6IG51bWJlciB9O1xyXG4gIH1bXSA9IGRhdGEubGlua3MubWFwKChkKSA9PiBPYmplY3QuY3JlYXRlKGQpKTtcclxuXHJcbiAgY29uc3QgY3Vyck5vZGUgPSBkYXRhLm5vZGVzLmZpbmQoKG5vZGUpID0+IG5vZGUubmFtZSA9PT0gY3VyckZpbGUuYmFzZW5hbWUpO1xyXG4gIGxldCBjdXJyTm9kZUluZGV4OiBudW1iZXI7XHJcbiAgaWYgKCFjdXJyTm9kZSkge1xyXG4gICAgY29uc3QgaWQgPSBkYXRhLm5vZGVzLmxlbmd0aDtcclxuICAgIGRhdGEubm9kZXMucHVzaCh7IGlkLCBuYW1lOiBjdXJyRmlsZS5iYXNlbmFtZSB9KTtcclxuICAgIGN1cnJOb2RlSW5kZXggPSBpZDtcclxuICB9IGVsc2Uge1xyXG4gICAgY3Vyck5vZGVJbmRleCA9IGN1cnJOb2RlLmlkO1xyXG4gIH1cclxuXHJcbiAgY29uc3Qgbm9kZXMgPSBkYXRhLm5vZGVzLm1hcCgoZCkgPT4gT2JqZWN0LmNyZWF0ZShkKSk7XHJcblxyXG4gIGNvbnN0IHNpbXVsYXRpb24gPSBkM1xyXG4gICAgLmZvcmNlU2ltdWxhdGlvbihub2RlcylcclxuICAgIC5mb3JjZShcclxuICAgICAgXCJsaW5rXCIsXHJcbiAgICAgIGQzLmZvcmNlTGluayhsaW5rcykuaWQoKGQpID0+IGQuaWQpXHJcbiAgICApXHJcbiAgICAuZm9yY2UoXCJjaGFyZ2VcIiwgZDMuZm9yY2VNYW55Qm9keSgpLnN0cmVuZ3RoKC04KSlcclxuICAgIC5mb3JjZShcImNlbnRlclwiLCBkMy5mb3JjZUNlbnRlcih3aWR0aCAvIDIsIGhlaWdodCAvIDIpLnN0cmVuZ3RoKDAuNSkpO1xyXG5cclxuICBjb25zdCBkcmFnID0gKHNpbXVsYXRpb246IGQzLlNpbXVsYXRpb248YW55LCB1bmRlZmluZWQ+KSA9PiB7XHJcbiAgICBmdW5jdGlvbiBkcmFnc3RhcnRlZChldmVudCwgZCkge1xyXG4gICAgICBpZiAoIWV2ZW50LmFjdGl2ZSkgc2ltdWxhdGlvbi5hbHBoYVRhcmdldCgwLjMpLnJlc3RhcnQoKTtcclxuICAgICAgZC5meCA9IGQueDtcclxuICAgICAgZC5meSA9IGQueTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBkcmFnZ2VkKGV2ZW50LCBkKSB7XHJcbiAgICAgIGQuZnggPSBldmVudC54O1xyXG4gICAgICBkLmZ5ID0gZXZlbnQueTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBkcmFnZW5kZWQoZXZlbnQsIGQpIHtcclxuICAgICAgaWYgKCFldmVudC5hY3RpdmUpIHNpbXVsYXRpb24uYWxwaGFUYXJnZXQoMCk7XHJcbiAgICAgIGQuZnggPSBudWxsO1xyXG4gICAgICBkLmZ5ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZDNcclxuICAgICAgLmRyYWcoKVxyXG4gICAgICAub24oXCJzdGFydFwiLCBkcmFnc3RhcnRlZClcclxuICAgICAgLm9uKFwiZHJhZ1wiLCBkcmFnZ2VkKVxyXG4gICAgICAub24oXCJlbmRcIiwgZHJhZ2VuZGVkKTtcclxuICB9O1xyXG5cclxuICBjb25zdCBzdmcgPSBkM1xyXG4gICAgLnNlbGVjdChcIi5kMy1ncmFwaFwiKVxyXG4gICAgLmFwcGVuZChcInN2Z1wiKVxyXG4gICAgLmF0dHIoXCJoZWlnaHRcIiwgaGVpZ2h0KVxyXG4gICAgLmF0dHIoXCJ3aWR0aFwiLCB3aWR0aClcclxuICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJmb3JjZURpcmVjdGVkR1wiKTtcclxuXHJcbiAgY29uc3QgbGluayA9IHN2Z1xyXG4gICAgLmFwcGVuZChcImdcIilcclxuICAgIC5hdHRyKFwic3Ryb2tlXCIsIFwiIzg2ODI4MlwiKVxyXG4gICAgLmF0dHIoXCJzdHJva2Utb3BhY2l0eVwiLCAwLjYpXHJcbiAgICAuc2VsZWN0QWxsKFwibGluZVwiKVxyXG4gICAgLmRhdGEobGlua3MpXHJcbiAgICAuam9pbihcImxpbmVcIilcclxuICAgIC5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIDAuOClcclxuICAgIC5hdHRyKFwibWFya2VyLWVuZFwiLCBcInVybCgjZW5kKVwiKTtcclxuXHJcbiAgdmFyIHBhdGggPSBzdmdcclxuICAgIC5hcHBlbmQoXCJzdmc6Z1wiKVxyXG4gICAgLnNlbGVjdEFsbChcInBhdGhcIilcclxuICAgIC5kYXRhKGxpbmtzKVxyXG4gICAgLmVudGVyKClcclxuICAgIC5hcHBlbmQoXCJzdmc6cGF0aFwiKVxyXG4gICAgLy8gICAgLmF0dHIoXCJjbGFzc1wiLCBmdW5jdGlvbihkKSB7IHJldHVybiBcImxpbmsgXCIgKyBkLnR5cGU7IH0pXHJcbiAgICAuYXR0cihcImNsYXNzXCIsIFwibGlua1wiKVxyXG4gICAgLmF0dHIoXCJtYXJrZXItZW5kXCIsIFwidXJsKCNlbmQpXCIpO1xyXG5cclxuICBjb25zdCBhcnJvd0hlYWQgPSBzdmdcclxuICAgIC5hcHBlbmQoXCJzdmc6ZGVmc1wiKVxyXG4gICAgLnNlbGVjdEFsbChcIm1hcmtlclwiKVxyXG4gICAgLmRhdGEoW1wiZW5kXCJdKSAvLyBEaWZmZXJlbnQgbGluay9wYXRoIHR5cGVzIGNhbiBiZSBkZWZpbmVkIGhlcmVcclxuICAgIC5lbnRlcigpXHJcbiAgICAuYXBwZW5kKFwic3ZnOm1hcmtlclwiKSAvLyBUaGlzIHNlY3Rpb24gYWRkcyBpbiB0aGUgYXJyb3dzXHJcbiAgICAuYXR0cihcImlkXCIsIFN0cmluZylcclxuICAgIC5hdHRyKFwidmlld0JveFwiLCBcIjAgLTUgMTAgMTBcIilcclxuICAgIC5hdHRyKFwicmVmWFwiLCAyMClcclxuICAgIC5hdHRyKFwicmVmWVwiLCAwLjEpXHJcbiAgICAuYXR0cihcIm1hcmtlcldpZHRoXCIsIDYpXHJcbiAgICAuYXR0cihcIm1hcmtlckhlaWdodFwiLCA2KVxyXG4gICAgLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpXHJcbiAgICAvLyAuYXR0cihcInN0cm9rZVwiLCBcIiM4NjgyODJcIilcclxuICAgIC5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIDEwKVxyXG4gICAgLmFwcGVuZChcInN2ZzpwYXRoXCIpXHJcbiAgICAuYXR0cihcImRcIiwgXCJNMCwtNUwxMCwwTDAsNVwiKTtcclxuXHJcbiAgY29uc3QgbmFtZUZyb21JbmRleCA9IChkOiB7IGluZGV4OiBudW1iZXIgfSkgPT5cclxuICAgIGRhdGEubm9kZXMuZmluZCgobm9kZSkgPT4gbm9kZS5pZCA9PT0gZC5pbmRleCkubmFtZTtcclxuXHJcbiAgY29uc3QgaW5kZXhGcm9tTmFtZSA9IChuYW1lOiBzdHJpbmcpOiBudW1iZXIgPT5cclxuICAgIGRhdGEubm9kZXMuZmluZCgobm9kZSkgPT4gbm9kZS5uYW1lID09PSBuYW1lKS5pZDtcclxuXHJcbiAgY29uc3Qgbm9kZTogZDMuU2VsZWN0aW9uPFxyXG4gICAgZDMuQmFzZVR5cGUgfCBTVkdDaXJjbGVFbGVtZW50LFxyXG4gICAgYW55LFxyXG4gICAgU1ZHR0VsZW1lbnQsXHJcbiAgICB1bmtub3duXHJcbiAgPiA9IHN2Z1xyXG4gICAgLmFwcGVuZChcImdcIilcclxuICAgIC5zZWxlY3RBbGwoXCJjaXJjbGVcIilcclxuICAgIC5kYXRhKG5vZGVzKVxyXG4gICAgLmpvaW4oXCJjaXJjbGVcIilcclxuXHJcbiAgICAuYXR0cihcInJcIiwgNSlcclxuICAgIC5hdHRyKFwiZmlsbFwiLCAoZCkgPT4ge1xyXG4gICAgICBpZiAobmFtZUZyb21JbmRleChkKSA9PT0gY3VyckZpbGUuYmFzZW5hbWUpIHtcclxuICAgICAgICByZXR1cm4gXCIjZmZmZmZmXCI7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGN1cnJOb2RlQ29sb3VyO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgLmNhbGwoZHJhZyhzaW11bGF0aW9uKSk7XHJcblxyXG4gIG5vZGUuYXR0cihcImFyaWEtbGFiZWxcIiwgKGQ6IGQzTm9kZSkgPT4gZC5uYW1lKTtcclxuXHJcbiAgY29uc3Qgbm9kZUNsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50LCBkZXN0OiBzdHJpbmcpID0+IHtcclxuICAgIG9wZW5PclN3aXRjaChkZXN0LCBldmVudCk7XHJcbiAgICBtb2RhbC5jbG9zZSgpO1xyXG4gIH07XHJcbiAgbm9kZS5vbihcImNsaWNrXCIsIChldmVudDogTW91c2VFdmVudCwgZDogZDNOb2RlKSA9PiB7XHJcbiAgICBub2RlQ2xpY2soZXZlbnQsIGQubmFtZSk7XHJcbiAgfSk7XHJcblxyXG4gIG5vZGUub24oXCJtb3VzZWRvd25cIiwgKGV2ZW50OiBNb3VzZUV2ZW50LCBkKSA9PiB7XHJcbiAgICBpZiAoZXZlbnQuYnV0dG9uID09PSAyKSB7XHJcbiAgICAgIG5vZGVUb0dldFRvID0gZC5uYW1lO1xyXG5cclxuICAgICAgbm9kZS5zdHlsZShcImZpbGxcIiwgKG4pID0+IHtcclxuICAgICAgICBpZiAobi5uYW1lID09PSBub2RlVG9HZXRUbykge1xyXG4gICAgICAgICAgcmV0dXJuIFwiI2ZmMDAwMFwiO1xyXG4gICAgICAgIH0gZWxzZSByZXR1cm4gY3Vyck5vZGVDb2xvdXI7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gcGF0aHNGcm9tTm9kZVRvR2V0VG8gPSBncmFwaGxpYi5hbGcuZGlqa3N0cmEoZ3JhcGgsIG5vZGVUb0dldFRvKTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgZnVuY3Rpb24gbGlua2VkKGE6IG51bWJlciwgYjogbnVtYmVyKSB7XHJcbiAgICBpZiAoYSA9PT0gYikgcmV0dXJuIHRydWU7XHJcbiAgICBjb25zdCBsaW5rZWRBcnIgPSBsaW5rcy5maW5kKFxyXG4gICAgICAobGluaykgPT5cclxuICAgICAgICAobGluay5zb3VyY2UuaW5kZXggPT09IGEgJiYgbGluay50YXJnZXQuaW5kZXggPT09IGIpIHx8XHJcbiAgICAgICAgKGxpbmsudGFyZ2V0LmluZGV4ID09PSBhICYmIGxpbmsuc291cmNlLmluZGV4ID09PSBiKVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gISFsaW5rZWRBcnI7XHJcbiAgfVxyXG5cclxuICAvLyBmdW5jdGlvbiB3YWxrRGlqa3N0cmFQYXRocyhcclxuICAvLyAgIHBhdGhzOiB7IFtub2RlOiBzdHJpbmddOiBncmFwaGxpYi5QYXRoIH0sXHJcbiAgLy8gICBzdGFydE5vZGU6IHN0cmluZ1xyXG4gIC8vICkge1xyXG4gIC8vICAgaWYgKHN0YXJ0Tm9kZSA9PT0gbm9kZVRvR2V0VG8gfHwgcGF0aHNbc3RhcnROb2RlXS5kaXN0YW5jZSA9PT0gSW5maW5pdHkpXHJcbiAgLy8gICAgIHJldHVybiBbXTtcclxuICAvLyAgIGxldCBzdGVwID0gc3RhcnROb2RlO1xyXG5cclxuICAvLyAgIGNvbnN0IHBhdGg6IHN0cmluZ1tdID0gW3N0YXJ0Tm9kZV07XHJcbiAgLy8gICBsZXQgaSA9IDA7XHJcbiAgLy8gICBjb25zdCBNQVggPSAzMDA7XHJcbiAgLy8gICB3aGlsZSAocGF0aHNbc3RlcF0ucHJlZGVjZXNzb3IgIT09IG5vZGVUb0dldFRvICYmIGkgPCBNQVgpIHtcclxuICAvLyAgICAgaSsrO1xyXG4gIC8vICAgICBzdGVwID0gcGF0aHNbc3RlcF0ucHJlZGVjZXNzb3I7XHJcbiAgLy8gICAgIHBhdGgucHVzaChzdGVwKTtcclxuICAvLyAgIH1cclxuICAvLyAgIGlmIChpID49IE1BWCkgcmV0dXJuIFtdO1xyXG4gIC8vICAgcGF0aC5wdXNoKG5vZGVUb0dldFRvKTtcclxuICAvLyAgIHJldHVybiBwYXRoO1xyXG4gIC8vIH1cclxuXHJcbiAgbm9kZVxyXG4gICAgLm9uKFwibW91c2VvdmVyXCIsIChldmVudDogTW91c2VFdmVudCwgZDogeyBpbmRleDogbnVtYmVyIH0pID0+IHtcclxuICAgICAgbm9kZVxyXG4gICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAuZHVyYXRpb24oMTUwKVxyXG4gICAgICAgIC5zdHlsZShcIm9wYWNpdHlcIiwgKG8pID0+IHtcclxuICAgICAgICAgIHJldHVybiBsaW5rZWQoZC5pbmRleCwgby5pbmRleCkgPyAxIDogMC4yO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICBsaW5rXHJcbiAgICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAgIC5kdXJhdGlvbigxNTApXHJcbiAgICAgICAgLnN0eWxlKFwib3BhY2l0eVwiLCBmdW5jdGlvbiAobykge1xyXG4gICAgICAgICAgcmV0dXJuIG8uc291cmNlLmluZGV4ID09PSBkLmluZGV4IHx8IG8udGFyZ2V0LmluZGV4ID09PSBkLmluZGV4XHJcbiAgICAgICAgICAgID8gMVxyXG4gICAgICAgICAgICA6IDAuMjtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIC8vIEhpZ2hsaWdodCBwYXRoIGZyb20gaG92ZXJlZCBub2RlIHRvIGN1cnJOb2RlXHJcbiAgICAgIGNvbnN0IGhvdmVyZWROb2RlID0gbmFtZUZyb21JbmRleChkKTtcclxuICAgICAgLy8gY29uc3QgcGF0aCA9IHdhbGtEaWprc3RyYVBhdGhzKHBhdGhzRnJvbU5vZGVUb0dldFRvLCBob3ZlcmVkTm9kZSk7XHJcbiAgICAgIC8vIGlmIChwYXRoLmxlbmd0aCkge1xyXG4gICAgICAvLyAgIGxpbmtcclxuICAgICAgLy8gICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgLy8gICAgIC5kdXJhdGlvbigxNTApXHJcbiAgICAgIC8vICAgICAuc3R5bGUoXCJzdHJva2VcIiwgZnVuY3Rpb24gKGxpbmspIHtcclxuICAgICAgLy8gICAgICAgaWYgKFxyXG4gICAgICAvLyAgICAgICAgIHBhdGguaW5jbHVkZXMobmFtZUZyb21JbmRleChsaW5rLnNvdXJjZSkpICYmXHJcbiAgICAgIC8vICAgICAgICAgcGF0aC5pbmNsdWRlcyhuYW1lRnJvbUluZGV4KGxpbmsudGFyZ2V0KSlcclxuICAgICAgLy8gICAgICAgKVxyXG4gICAgICAvLyAgICAgICAgIHJldHVybiBjdXJyTm9kZUNvbG91cjtcclxuICAgICAgLy8gICAgIH0pXHJcbiAgICAgIC8vICAgICAuc3R5bGUoXCJvcGFjaXR5XCIsIGZ1bmN0aW9uIChsaW5rKSB7XHJcbiAgICAgIC8vICAgICAgIGlmIChcclxuICAgICAgLy8gICAgICAgICBwYXRoLmluY2x1ZGVzKG5hbWVGcm9tSW5kZXgobGluay5zb3VyY2UpKSAmJlxyXG4gICAgICAvLyAgICAgICAgIHBhdGguaW5jbHVkZXMobmFtZUZyb21JbmRleChsaW5rLnRhcmdldCkpXHJcbiAgICAgIC8vICAgICAgIClcclxuICAgICAgLy8gICAgICAgICByZXR1cm4gMTtcclxuICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAvLyB9XHJcbiAgICB9KVxyXG4gICAgLm9uKFwibW91c2VvdXRcIiwgdW5mb2N1cyk7XHJcblxyXG4gIGZ1bmN0aW9uIGZvY3VzTmVpZ2hib3VycyhkLCBldmVudDogTW91c2VFdmVudCkgeyB9XHJcblxyXG4gIGZ1bmN0aW9uIHVuZm9jdXMoKSB7XHJcbiAgICAvLyBsYWJlbE5vZGUuYXR0cihcImRpc3BsYXlcIiwgXCJibG9ja1wiKTtcclxuICAgIG5vZGUuc3R5bGUoXCJvcGFjaXR5XCIsIDEpO1xyXG4gICAgbGluay5zdHlsZShcIm9wYWNpdHlcIiwgMSkuc3R5bGUoXCJzdHJva2VcIiwgXCIjODY4MjgyXCIpO1xyXG4gIH1cclxuXHJcbiAgc2ltdWxhdGlvbi5vbihcInRpY2tcIiwgKCkgPT4ge1xyXG4gICAgbGlua1xyXG4gICAgICAuYXR0cihcIngxXCIsIChkKSA9PiBkLnNvdXJjZS54KVxyXG4gICAgICAuYXR0cihcInkxXCIsIChkKSA9PiBkLnNvdXJjZS55KVxyXG4gICAgICAuYXR0cihcIngyXCIsIChkKSA9PiBkLnRhcmdldC54KVxyXG4gICAgICAuYXR0cihcInkyXCIsIChkKSA9PiBkLnRhcmdldC55KTtcclxuXHJcbiAgICBub2RlLmF0dHIoXCJjeFwiLCAoZCkgPT4gZC54KS5hdHRyKFwiY3lcIiwgKGQpID0+IGQueSk7XHJcbiAgfSk7XHJcblxyXG4gIGZ1bmN0aW9uIHpvb21lZCh7IHRyYW5zZm9ybSB9KSB7XHJcbiAgICBub2RlLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgdHJhbnNmb3JtKTtcclxuICAgIGxpbmsuYXR0cihcInRyYW5zZm9ybVwiLCB0cmFuc2Zvcm0pO1xyXG4gIH1cclxuICBzdmcuY2FsbChcclxuICAgIGQzXHJcbiAgICAgIC56b29tKClcclxuICAgICAgLmV4dGVudChbXHJcbiAgICAgICAgWzAsIDBdLFxyXG4gICAgICAgIFt3aWR0aCwgaGVpZ2h0XSxcclxuICAgICAgXSlcclxuICAgICAgLnNjYWxlRXh0ZW50KFswLjUsIDEwXSlcclxuICAgICAgLm9uKFwiem9vbVwiLCB6b29tZWQpXHJcbiAgKTtcclxuXHJcbiAgZnVuY3Rpb24gc2F2ZUdyYXBoKCkge1xyXG4gICAgY29uc3QgY2xvbmUgPSBzdmcuY2xvbmUodHJ1ZSk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIkZER1wiLCBKU09OLnN0cmluZ2lmeShjbG9uZSkpO1xyXG4gIH1cclxufTtcclxuIiwgImltcG9ydCAqIGFzIGQzIGZyb20gXCJkM1wiO1xyXG5pbXBvcnQgdHlwZSBHcmFwaCBmcm9tIFwiZ3JhcGhvbG9neVwiO1xyXG5pbXBvcnQgdHlwZSB7IFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IGRmc0ZsYXRBZGpMaXN0LCBWaXNNb2RhbCB9IGZyb20gXCIuL1Zpc01vZGFsXCI7XHJcblxyXG5leHBvcnQgY29uc3QgaWNpY2xlID0gKFxyXG4gIGdyYXBoOiBHcmFwaCxcclxuICBjdXJyRmlsZTogVEZpbGUsXHJcbiAgbW9kYWw6IFZpc01vZGFsLFxyXG4gIHdpZHRoOiBudW1iZXIsXHJcbiAgdmlld0hlaWdodDogbnVtYmVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGZsYXRBZGogPSBkZnNGbGF0QWRqTGlzdChncmFwaCwgY3VyckZpbGUuYmFzZW5hbWUpO1xyXG4gIGNvbnNvbGUubG9nKHsgZmxhdEFkaiB9KTtcclxuXHJcbiAgY29uc3QgaGllciA9IGQzLnN0cmF0aWZ5KCkoZmxhdEFkaik7XHJcbiAgY29uc29sZS5sb2coeyBoaWVyIH0pO1xyXG5cclxuICBjb25zdCBmb3JtYXQgPSBkMy5mb3JtYXQoXCIsZFwiKTtcclxuXHJcbiAgY29uc3QgY29sb3IgPSBkMy5zY2FsZU9yZGluYWwoXHJcbiAgICBkMy5xdWFudGl6ZShkMy5pbnRlcnBvbGF0ZVJhaW5ib3csIGhpZXIuY2hpbGRyZW4ubGVuZ3RoICsgMSlcclxuICApO1xyXG5cclxuICBjb25zdCBwYXJ0aXRpb24gPSAoZGF0YSkgPT4ge1xyXG4gICAgY29uc3Qgcm9vdCA9IGQzXHJcbiAgICAgIC5oaWVyYXJjaHkoZGF0YSlcclxuICAgICAgLnN1bSgoZCkgPT4gZC52YWx1ZSlcclxuICAgICAgLnNvcnQoKGEsIGIpID0+IGIuaGVpZ2h0IC0gYS5oZWlnaHQgfHwgYi52YWx1ZSAtIGEudmFsdWUpO1xyXG4gICAgcmV0dXJuIGQzLnBhcnRpdGlvbigpLnNpemUoW3ZpZXdIZWlnaHQsICgocm9vdC5oZWlnaHQgKyAxKSAqIHdpZHRoKSAvIDNdKShcclxuICAgICAgcm9vdFxyXG4gICAgKTtcclxuICB9O1xyXG5cclxuICBjb25zdCByb290ID0gcGFydGl0aW9uKGhpZXIpO1xyXG4gIGxldCBmb2N1cyA9IHJvb3Q7XHJcblxyXG4gIGNvbnN0IHN2ZyA9IGQzXHJcbiAgICAuc2VsZWN0KFwiLmQzLWdyYXBoXCIpXHJcbiAgICAuYXBwZW5kKFwic3ZnXCIpXHJcbiAgICAuYXR0cihcImhlaWdodFwiLCB2aWV3SGVpZ2h0KVxyXG4gICAgLmF0dHIoXCJ3aWR0aFwiLCB3aWR0aClcclxuICAgIC5zdHlsZShcImZvbnRcIiwgXCIxMHB4IHNhbnMtc2VyaWZcIik7XHJcblxyXG4gIGNvbnN0IGNlbGwgPSBzdmdcclxuICAgIC5zZWxlY3RBbGwoXCJnXCIpXHJcbiAgICAuZGF0YShyb290LmRlc2NlbmRhbnRzKCkpXHJcbiAgICAuam9pbihcImdcIilcclxuICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIChkKSA9PiBgdHJhbnNsYXRlKCR7ZC55MH0sJHtkLngwfSlgKTtcclxuXHJcbiAgY29uc3QgcmVjdCA9IGNlbGxcclxuICAgIC5hcHBlbmQoXCJyZWN0XCIpXHJcbiAgICAuYXR0cihcIndpZHRoXCIsIChkKSA9PiBkLnkxIC0gZC55MCAtIDEpXHJcbiAgICAuYXR0cihcImhlaWdodFwiLCAoZCkgPT4gcmVjdEhlaWdodChkKSlcclxuICAgIC5hdHRyKFwiZmlsbC1vcGFjaXR5XCIsIDAuNilcclxuICAgIC5hdHRyKFwiZmlsbFwiLCAoZCkgPT4ge1xyXG4gICAgICBpZiAoIWQuZGVwdGgpIHJldHVybiBcIiNjY2NcIjtcclxuICAgICAgd2hpbGUgKGQuZGVwdGggPiAxKSBkID0gZC5wYXJlbnQ7XHJcbiAgICAgIHJldHVybiBjb2xvcihkLmRhdGEuZGF0YS5uYW1lKTtcclxuICAgIH0pXHJcbiAgICAuc3R5bGUoXCJjdXJzb3JcIiwgXCJwb2ludGVyXCIpXHJcbiAgICAub24oXCJjbGlja1wiLCBjbGlja2VkKTtcclxuXHJcbiAgY29uc3QgdGV4dCA9IGNlbGxcclxuICAgIC5hcHBlbmQoXCJ0ZXh0XCIpXHJcbiAgICAuc3R5bGUoXCJ1c2VyLXNlbGVjdFwiLCBcIm5vbmVcIilcclxuICAgIC5hdHRyKFwicG9pbnRlci1ldmVudHNcIiwgXCJub25lXCIpXHJcbiAgICAuYXR0cihcInhcIiwgNClcclxuICAgIC5hdHRyKFwieVwiLCAxMyk7XHJcbiAgLy8gLmF0dHIoXCJmaWxsLW9wYWNpdHlcIiwgKGQpID0+ICtsYWJlbFZpc2libGUoZCkpO1xyXG5cclxuICB0ZXh0LmFwcGVuZChcInRzcGFuXCIpLnRleHQoKGQpID0+IGQuZGF0YS5kYXRhLm5hbWUpO1xyXG5cclxuICBjb25zdCB0c3BhbiA9IHRleHRcclxuICAgIC5hcHBlbmQoXCJ0c3BhblwiKVxyXG4gICAgLmF0dHIoXCJmaWxsLW9wYWNpdHlcIiwgKGQpID0+IChsYWJlbFZpc2libGUoZCkgPyAxIDogMCkgKiAwLjcpXHJcbiAgICAudGV4dCgoZCkgPT4gYCAke2Zvcm1hdChkLnZhbHVlKX1gKTtcclxuXHJcbiAgY2VsbC5hcHBlbmQoXCJ0aXRsZVwiKS50ZXh0KFxyXG4gICAgKGQpID0+XHJcbiAgICAgIGAke2QuYW5jZXN0b3JzKCkubWFwKChkKSA9PiBkLmRhdGEuZGF0YS5uYW1lKVxyXG4gICAgICAvLyAucmV2ZXJzZSgpXHJcbiAgICAgIC8vIC5qb2luKFwiL1wiKX1cXG4ke2Zvcm1hdChkLnZhbHVlKVxyXG4gICAgICB9YFxyXG4gICk7XHJcblxyXG4gIGZ1bmN0aW9uIGNsaWNrZWQoZXZlbnQsIHApIHtcclxuICAgIGNvbnNvbGUubG9nKHsgcCB9KTtcclxuICAgIGZvY3VzID0gZm9jdXMgPT09IHAgPyAocCA9IHAucGFyZW50KSA6IHA7XHJcblxyXG4gICAgcm9vdC5lYWNoKChkKSA9PiB7XHJcbiAgICAgIGQudGFyZ2V0ID0ge1xyXG4gICAgICAgIHgwOiAoKGQueDAgLSBwLngwKSAvIChwLngxIC0gcC54MCkpICogdmlld0hlaWdodCxcclxuICAgICAgICB4MTogKChkLngxIC0gcC54MCkgLyAocC54MSAtIHAueDApKSAqIHZpZXdIZWlnaHQsXHJcbiAgICAgICAgeTA6IGQueTAgLSBwLnkwLFxyXG4gICAgICAgIHkxOiBkLnkxIC0gcC55MCxcclxuICAgICAgfTtcclxuICAgICAgY29uc29sZS5sb2coZC50YXJnZXQueDApO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgdCA9IGNlbGxcclxuICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAuZHVyYXRpb24oNzUwKVxyXG4gICAgICAuYXR0cihcInRyYW5zZm9ybVwiLCAoZCkgPT4gYHRyYW5zbGF0ZSgke2QudGFyZ2V0LnkwfSwke2QudGFyZ2V0LngwfSlgKTtcclxuXHJcbiAgICByZWN0LnRyYW5zaXRpb24odCkuYXR0cihcImhlaWdodFwiLCAoZCkgPT4gcmVjdEhlaWdodChkLnRhcmdldCkpO1xyXG4gICAgdGV4dC50cmFuc2l0aW9uKHQpLmF0dHIoXCJmaWxsLW9wYWNpdHlcIiwgKGQpID0+ICtsYWJlbFZpc2libGUoZC50YXJnZXQpKTtcclxuICAgIHRzcGFuXHJcbiAgICAgIC50cmFuc2l0aW9uKHQpXHJcbiAgICAgIC5hdHRyKFwiZmlsbC1vcGFjaXR5XCIsIChkKSA9PiAobGFiZWxWaXNpYmxlKGQpID8gMSA6IDApICogMC43KTtcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uIHJlY3RIZWlnaHQoZCkge1xyXG4gICAgY29uc29sZS5sb2coeyBkIH0pO1xyXG4gICAgcmV0dXJuIGQueDEgLSBkLngwIC0gTWF0aC5taW4oMSwgKGQueDEgLSBkLngwKSAvIDIpO1xyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gbGFiZWxWaXNpYmxlKGQpIHtcclxuICAgIHJldHVybiBkLnkxIDw9IHdpZHRoICYmIGQueTAgPj0gMCAmJiBkLngxIC0gZC54MCA+IDE2O1xyXG4gIH1cclxufTtcclxuIiwgImltcG9ydCAqIGFzIGQzIGZyb20gXCJkM1wiO1xyXG5pbXBvcnQgdHlwZSBHcmFwaCBmcm9tIFwiZ3JhcGhvbG9neVwiO1xyXG5pbXBvcnQgdHlwZSB7IFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IGRmc0ZsYXRBZGpMaXN0LCBWaXNNb2RhbCB9IGZyb20gXCIuL1Zpc01vZGFsXCI7XHJcblxyXG5leHBvcnQgY29uc3QgcmFkaWFsVHJlZSA9IChcclxuICBncmFwaDogR3JhcGgsXHJcbiAgY3VyckZpbGU6IFRGaWxlLFxyXG4gIG1vZGFsOiBWaXNNb2RhbCxcclxuICB3aWR0aDogbnVtYmVyLFxyXG4gIGhlaWdodDogbnVtYmVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGZsYXRBZGogPSBkZnNGbGF0QWRqTGlzdChncmFwaCwgY3VyckZpbGUuYmFzZW5hbWUpO1xyXG4gIGNvbnNvbGUubG9nKHsgZmxhdEFkaiB9KTtcclxuXHJcbiAgY29uc3QgaGllcmFyY2h5ID0gZDMuc3RyYXRpZnkoKShmbGF0QWRqKTtcclxuICBjb25zb2xlLmxvZyh7IGhpZXJhcmNoeSB9KTtcclxuXHJcbiAgY29uc3Qgc3ZnID0gZDNcclxuICAgIC5zZWxlY3QoXCIuZDMtZ3JhcGhcIilcclxuICAgIC5hcHBlbmQoXCJzdmdcIilcclxuICAgIC5hdHRyKFwiaGVpZ2h0XCIsIGhlaWdodClcclxuICAgIC5hdHRyKFwid2lkdGhcIiwgd2lkdGgpO1xyXG5cclxuICBjb25zdCByb290ID0gZDNcclxuICAgIC5oaWVyYXJjaHkoaGllcmFyY2h5LCAoZCkgPT4gZC5jaGlsZHJlbilcclxuICAgIC5zdW0oKGQpID0+IChkLmNoaWxkcmVuID8gMCA6IDEpKVxyXG4gICAgLnNvcnQoKGEsIGIpID0+IGEuZGVwdGggLSBiLmRlcHRoKTtcclxuXHJcbiAgY29uc3Qgb3V0ZXJSYWRpdXMgPSB3aWR0aCAvIDI7XHJcbiAgY29uc3QgaW5uZXJSYWRpdXMgPSBvdXRlclJhZGl1cyAtIDE3MDtcclxuXHJcbiAgY29uc3QgY2x1c3RlciA9IGQzXHJcbiAgICAuY2x1c3RlcigpXHJcbiAgICAuc2l6ZShbMzYwLCBpbm5lclJhZGl1c10pXHJcbiAgICAuc2VwYXJhdGlvbigoYSwgYikgPT4gMSk7XHJcblxyXG4gIGNvbnN0IGNvbG9yID0gZDNcclxuICAgIC5zY2FsZU9yZGluYWwoKVxyXG4gICAgLmRvbWFpbihncmFwaC5ub2RlcygpKVxyXG4gICAgLnJhbmdlKGQzLnNjaGVtZUNhdGVnb3J5MTApO1xyXG5cclxuICBmdW5jdGlvbiBtYXhMZW5ndGgoZDogZDMuSGllcmFyY2h5Tm9kZTx1bmtub3duPikge1xyXG4gICAgcmV0dXJuIGQuZGF0YS5kYXRhLmRlcHRoICsgKGQuY2hpbGRyZW4gPyBkMy5tYXgoZC5jaGlsZHJlbiwgbWF4TGVuZ3RoKSA6IDApO1xyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gc2V0UmFkaXVzKGQ6IGQzLkhpZXJhcmNoeU5vZGU8dW5rbm93bj4sIHkwOiBudW1iZXIsIGs6IG51bWJlcikge1xyXG4gICAgZC5yYWRpdXMgPSAoeTAgKz0gZC5kYXRhLmRhdGEuZGVwdGgpICogaztcclxuICAgIGlmIChkLmNoaWxkcmVuKSBkLmNoaWxkcmVuLmZvckVhY2goKGQpID0+IHNldFJhZGl1cyhkLCB5MCwgaykpO1xyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gc2V0Q29sb3IoZDogZDMuSGllcmFyY2h5Tm9kZTx1bmtub3duPikge1xyXG4gICAgdmFyIG5hbWUgPSBkLmRhdGEuZGF0YS5uYW1lO1xyXG4gICAgZC5jb2xvciA9XHJcbiAgICAgIGNvbG9yLmRvbWFpbigpLmluZGV4T2YobmFtZSkgPj0gMFxyXG4gICAgICAgID8gY29sb3IobmFtZSlcclxuICAgICAgICA6IGQucGFyZW50XHJcbiAgICAgICAgICA/IGQucGFyZW50LmNvbG9yXHJcbiAgICAgICAgICA6IG51bGw7XHJcbiAgICBpZiAoZC5jaGlsZHJlbikgZC5jaGlsZHJlbi5mb3JFYWNoKHNldENvbG9yKTtcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uIGxpbmtWYXJpYWJsZShkKSB7XHJcbiAgICByZXR1cm4gbGlua1N0ZXAoZC5zb3VyY2UueCwgZC5zb3VyY2UucmFkaXVzLCBkLnRhcmdldC54LCBkLnRhcmdldC5yYWRpdXMpO1xyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gbGlua0NvbnN0YW50KGQpIHtcclxuICAgIHJldHVybiBsaW5rU3RlcChkLnNvdXJjZS54LCBkLnNvdXJjZS55LCBkLnRhcmdldC54LCBkLnRhcmdldC55KTtcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uIGxpbmtFeHRlbnNpb25WYXJpYWJsZShkKSB7XHJcbiAgICByZXR1cm4gbGlua1N0ZXAoZC50YXJnZXQueCwgZC50YXJnZXQucmFkaXVzLCBkLnRhcmdldC54LCBpbm5lclJhZGl1cyk7XHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiBsaW5rRXh0ZW5zaW9uQ29uc3RhbnQoZCkge1xyXG4gICAgcmV0dXJuIGxpbmtTdGVwKGQudGFyZ2V0LngsIGQudGFyZ2V0LnksIGQudGFyZ2V0LngsIGlubmVyUmFkaXVzKTtcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uIGxpbmtTdGVwKFxyXG4gICAgc3RhcnRBbmdsZTogbnVtYmVyLFxyXG4gICAgc3RhcnRSYWRpdXM6IG51bWJlcixcclxuICAgIGVuZEFuZ2xlOiBudW1iZXIsXHJcbiAgICBlbmRSYWRpdXM6IG51bWJlclxyXG4gICkge1xyXG4gICAgY29uc3QgYzAgPSBNYXRoLmNvcygoc3RhcnRBbmdsZSA9ICgoc3RhcnRBbmdsZSAtIDkwKSAvIDE4MCkgKiBNYXRoLlBJKSk7XHJcbiAgICBjb25zdCBzMCA9IE1hdGguc2luKHN0YXJ0QW5nbGUpO1xyXG4gICAgY29uc3QgYzEgPSBNYXRoLmNvcygoZW5kQW5nbGUgPSAoKGVuZEFuZ2xlIC0gOTApIC8gMTgwKSAqIE1hdGguUEkpKTtcclxuICAgIGNvbnN0IHMxID0gTWF0aC5zaW4oZW5kQW5nbGUpO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgXCJNXCIgK1xyXG4gICAgICBzdGFydFJhZGl1cyAqIGMwICtcclxuICAgICAgXCIsXCIgK1xyXG4gICAgICBzdGFydFJhZGl1cyAqIHMwICtcclxuICAgICAgKGVuZEFuZ2xlID09PSBzdGFydEFuZ2xlXHJcbiAgICAgICAgPyBcIlwiXHJcbiAgICAgICAgOiBcIkFcIiArXHJcbiAgICAgICAgc3RhcnRSYWRpdXMgK1xyXG4gICAgICAgIFwiLFwiICtcclxuICAgICAgICBzdGFydFJhZGl1cyArXHJcbiAgICAgICAgXCIgMCAwIFwiICtcclxuICAgICAgICAoZW5kQW5nbGUgPiBzdGFydEFuZ2xlID8gMSA6IDApICtcclxuICAgICAgICBcIiBcIiArXHJcbiAgICAgICAgc3RhcnRSYWRpdXMgKiBjMSArXHJcbiAgICAgICAgXCIsXCIgK1xyXG4gICAgICAgIHN0YXJ0UmFkaXVzICogczEpICtcclxuICAgICAgXCJMXCIgK1xyXG4gICAgICBlbmRSYWRpdXMgKiBjMSArXHJcbiAgICAgIFwiLFwiICtcclxuICAgICAgZW5kUmFkaXVzICogczFcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBsZWdlbmQgPSAoc3ZnKSA9PiB7XHJcbiAgICBjb25zdCBnID0gc3ZnXHJcbiAgICAgIC5zZWxlY3RBbGwoXCJnXCIpXHJcbiAgICAgIC5kYXRhKGNvbG9yLmRvbWFpbigpKVxyXG4gICAgICAuam9pbihcImdcIilcclxuICAgICAgLmF0dHIoXHJcbiAgICAgICAgXCJ0cmFuc2Zvcm1cIixcclxuICAgICAgICAoZCwgaSkgPT4gYHRyYW5zbGF0ZSgkey1vdXRlclJhZGl1c30sJHstb3V0ZXJSYWRpdXMgKyBpICogMjB9KWBcclxuICAgICAgKTtcclxuXHJcbiAgICBnLmFwcGVuZChcInJlY3RcIikuYXR0cihcIndpZHRoXCIsIDE4KS5hdHRyKFwiaGVpZ2h0XCIsIDE4KS5hdHRyKFwiZmlsbFwiLCBjb2xvcik7XHJcblxyXG4gICAgZy5hcHBlbmQoXCJ0ZXh0XCIpXHJcbiAgICAgIC5hdHRyKFwieFwiLCAyNClcclxuICAgICAgLmF0dHIoXCJ5XCIsIDkpXHJcbiAgICAgIC5hdHRyKFwiZHlcIiwgXCIwLjM1ZW1cIilcclxuICAgICAgLnRleHQoKGQpID0+IGQpO1xyXG4gIH07XHJcblxyXG4gIGNsdXN0ZXIocm9vdCk7XHJcbiAgc2V0UmFkaXVzKHJvb3QsIChyb290LmRhdGEuZGF0YS5kZXB0aCA9IDApLCBpbm5lclJhZGl1cyAvIG1heExlbmd0aChyb290KSk7XHJcbiAgc2V0Q29sb3Iocm9vdCk7XHJcblxyXG4gIHN2Zy5hcHBlbmQoXCJnXCIpLmNhbGwobGVnZW5kKTtcclxuXHJcbiAgc3ZnLmFwcGVuZChcInN0eWxlXCIpLnRleHQoYFxyXG5cclxuLmxpbmstLWFjdGl2ZSB7XHJcbnN0cm9rZTogIzAwMCAhaW1wb3J0YW50O1xyXG5zdHJva2Utd2lkdGg6IDEuNXB4O1xyXG59XHJcblxyXG4ubGluay1leHRlbnNpb24tLWFjdGl2ZSB7XHJcbnN0cm9rZS1vcGFjaXR5OiAuNjtcclxufVxyXG5cclxuLmxhYmVsLS1hY3RpdmUge1xyXG5mb250LXdlaWdodDogYm9sZDtcclxufVxyXG5cclxuYCk7XHJcblxyXG4gIGNvbnN0IGxpbmtFeHRlbnNpb24gPSBzdmdcclxuICAgIC5hcHBlbmQoXCJnXCIpXHJcbiAgICAuYXR0cihcImZpbGxcIiwgXCJub25lXCIpXHJcbiAgICAuYXR0cihcInN0cm9rZVwiLCBcIiMwMDBcIilcclxuICAgIC5hdHRyKFwic3Ryb2tlLW9wYWNpdHlcIiwgMC4yNSlcclxuICAgIC5zZWxlY3RBbGwoXCJwYXRoXCIpXHJcbiAgICAuZGF0YShyb290LmxpbmtzKCkuZmlsdGVyKChkKSA9PiAhZC50YXJnZXQuY2hpbGRyZW4pKVxyXG4gICAgLmpvaW4oXCJwYXRoXCIpXHJcbiAgICAuZWFjaChmdW5jdGlvbiAoZCkge1xyXG4gICAgICBkLnRhcmdldC5saW5rRXh0ZW5zaW9uTm9kZSA9IHRoaXM7XHJcbiAgICB9KVxyXG4gICAgLmF0dHIoXCJkXCIsIGxpbmtFeHRlbnNpb25Db25zdGFudCk7XHJcblxyXG4gIGNvbnN0IGxpbmsgPSBzdmdcclxuICAgIC5hcHBlbmQoXCJnXCIpXHJcbiAgICAuYXR0cihcImZpbGxcIiwgXCJub25lXCIpXHJcbiAgICAuYXR0cihcInN0cm9rZVwiLCBcIiMwMDBcIilcclxuICAgIC5zZWxlY3RBbGwoXCJwYXRoXCIpXHJcbiAgICAuZGF0YShyb290LmxpbmtzKCkpXHJcbiAgICAuam9pbihcInBhdGhcIilcclxuICAgIC5lYWNoKGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgIGQudGFyZ2V0LmxpbmtOb2RlID0gdGhpcztcclxuICAgIH0pXHJcbiAgICAuYXR0cihcImRcIiwgbGlua0NvbnN0YW50KVxyXG4gICAgLmF0dHIoXCJzdHJva2VcIiwgKGQpID0+IGQudGFyZ2V0LmNvbG9yKTtcclxuXHJcbiAgY29uc3QgbGFiZWwgPSBzdmdcclxuICAgIC5hcHBlbmQoXCJnXCIpXHJcbiAgICAuc2VsZWN0QWxsKFwidGV4dFwiKVxyXG4gICAgLmRhdGEocm9vdC5sZWF2ZXMoKSlcclxuICAgIC5qb2luKFwidGV4dFwiKVxyXG4gICAgLmF0dHIoXCJkeVwiLCBcIi4zMWVtXCIpXHJcbiAgICAuYXR0cihcclxuICAgICAgXCJ0cmFuc2Zvcm1cIixcclxuICAgICAgKGQpID0+XHJcbiAgICAgICAgYHJvdGF0ZSgke2QueCAtIDkwfSkgdHJhbnNsYXRlKCR7aW5uZXJSYWRpdXMgKyA0fSwwKSR7ZC54IDwgMTgwID8gXCJcIiA6IFwiIHJvdGF0ZSgxODApXCJcclxuICAgICAgICB9YFxyXG4gICAgKVxyXG4gICAgLmF0dHIoXCJ0ZXh0LWFuY2hvclwiLCAoZCkgPT4gKGQueCA8IDE4MCA/IFwic3RhcnRcIiA6IFwiZW5kXCIpKVxyXG4gICAgLnRleHQoKGQpID0+IGQuZGF0YS5kYXRhLm5hbWUpXHJcbiAgICAub24oXCJtb3VzZW92ZXJcIiwgbW91c2VvdmVyZWQodHJ1ZSkpXHJcbiAgICAub24oXCJtb3VzZW91dFwiLCBtb3VzZW92ZXJlZChmYWxzZSkpO1xyXG5cclxuICAvLyAgIGZ1bmN0aW9uIHVwZGF0ZShjaGVja2VkKSB7XHJcbiAgLy8gICAgIGNvbnN0IHQgPSBkMy50cmFuc2l0aW9uKCkuZHVyYXRpb24oNzUwKTtcclxuICAvLyAgICAgbGlua0V4dGVuc2lvblxyXG4gIC8vICAgICAgIC50cmFuc2l0aW9uKHQpXHJcbiAgLy8gICAgICAgLmF0dHIoXCJkXCIsIGNoZWNrZWQgPyBsaW5rRXh0ZW5zaW9uVmFyaWFibGUgOiBsaW5rRXh0ZW5zaW9uQ29uc3RhbnQpO1xyXG4gIC8vICAgICBsaW5rLnRyYW5zaXRpb24odCkuYXR0cihcImRcIiwgY2hlY2tlZCA/IGxpbmtWYXJpYWJsZSA6IGxpbmtDb25zdGFudCk7XHJcbiAgLy8gICB9XHJcblxyXG4gIGZ1bmN0aW9uIG1vdXNlb3ZlcmVkKGFjdGl2ZSkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChldmVudCwgZCkge1xyXG4gICAgICBkMy5zZWxlY3QodGhpcykuY2xhc3NlZChcImxhYmVsLS1hY3RpdmVcIiwgYWN0aXZlKTtcclxuICAgICAgZDMuc2VsZWN0KGQubGlua0V4dGVuc2lvbk5vZGUpXHJcbiAgICAgICAgLmNsYXNzZWQoXCJsaW5rLWV4dGVuc2lvbi0tYWN0aXZlXCIsIGFjdGl2ZSlcclxuICAgICAgICAucmFpc2UoKTtcclxuICAgICAgZG8gZDMuc2VsZWN0KGQubGlua05vZGUpLmNsYXNzZWQoXCJsaW5rLS1hY3RpdmVcIiwgYWN0aXZlKS5yYWlzZSgpO1xyXG4gICAgICB3aGlsZSAoKGQgPSBkLnBhcmVudCkpO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uIHpvb21lZCh7IHRyYW5zZm9ybSB9KSB7XHJcbiAgICBsaW5rRXh0ZW5zaW9uLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgdHJhbnNmb3JtKTtcclxuICAgIGxpbmsuYXR0cihcInRyYW5zZm9ybVwiLCB0cmFuc2Zvcm0pO1xyXG4gICAgbGFiZWwuYXR0cihcInRyYW5zZm9ybVwiLCB0cmFuc2Zvcm0pO1xyXG4gIH1cclxuICBzdmcuY2FsbChcclxuICAgIGQzXHJcbiAgICAgIC56b29tKClcclxuICAgICAgLmV4dGVudChbXHJcbiAgICAgICAgWzAsIDBdLFxyXG4gICAgICAgIFt3aWR0aCwgaGVpZ2h0XSxcclxuICAgICAgXSlcclxuICAgICAgLnNjYWxlRXh0ZW50KFswLjUsIDhdKVxyXG4gICAgICAub24oXCJ6b29tXCIsIHpvb21lZClcclxuICApO1xyXG59O1xyXG4iLCAiaW1wb3J0ICogYXMgZDMgZnJvbSBcImQzXCI7XHJcbmltcG9ydCB0eXBlIEdyYXBoIGZyb20gXCJncmFwaG9sb2d5XCI7XHJcbmltcG9ydCB0eXBlIHsgVEZpbGUgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHR5cGUgeyBWaXNNb2RhbCB9IGZyb20gXCIuL1Zpc01vZGFsXCI7XHJcbmltcG9ydCB7IGRmc0ZsYXRBZGpMaXN0IH0gZnJvbSBcIi4vVmlzTW9kYWxcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBzdW5idXJzdCA9IChcclxuICBncmFwaDogR3JhcGgsXHJcbiAgY3VyckZpbGU6IFRGaWxlLFxyXG4gIG1vZGFsOiBWaXNNb2RhbCxcclxuICB3aWR0aDogbnVtYmVyLFxyXG4gIGhlaWdodDogbnVtYmVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGZsYXRBZGogPSBkZnNGbGF0QWRqTGlzdChncmFwaCwgY3VyckZpbGUuYmFzZW5hbWUpO1xyXG4gIGNvbnNvbGUubG9nKHsgZmxhdEFkaiB9KTtcclxuXHJcbiAgY29uc3QgaGllcmFyY2h5ID0gZDMuc3RyYXRpZnkoKShmbGF0QWRqKTtcclxuICBjb25zb2xlLmxvZyh7IGhpZXJhcmNoeSB9KTtcclxuXHJcbiAgdmFyIHJhZGl1cyA9IE1hdGgubWluKHdpZHRoLCBoZWlnaHQpIC8gMjsgLy8gPCAtLSAyXHJcbiAgdmFyIGNvbG9yID0gZDMuc2NhbGVPcmRpbmFsKGQzLnNjaGVtZUNhdGVnb3J5MTApO1xyXG5cclxuICB2YXIgZyA9IGQzXHJcbiAgICAuc2VsZWN0KFwic3ZnXCIpIC8vIDwtLSAxXHJcbiAgICAuYXR0cihcIndpZHRoXCIsIHdpZHRoKSAvLyA8LS0gMlxyXG4gICAgLmF0dHIoXCJoZWlnaHRcIiwgaGVpZ2h0KVxyXG4gICAgLmFwcGVuZChcImdcIikgLy8gPC0tIDNcclxuICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgd2lkdGggLyAyICsgXCIsXCIgKyBoZWlnaHQgLyAyICsgXCIpXCIpOyAvLyA8LS0gNFxyXG5cclxuICB2YXIgZyA9IGQzXHJcbiAgICAuc2VsZWN0KFwic3ZnXCIpIC8vIHJldHVybnMgYSBoYW5kbGUgdG8gdGhlIDxzdmc+IGVsZW1lbnRcclxuICAgIC5hdHRyKFwid2lkdGhcIiwgd2lkdGgpIC8vIHNldHMgdGhlIHdpZHRoIG9mIDxzdmc+IGFuZCB0aGVuIHJldHVybnMgdGhlIDxzdmc+IGVsZW1lbnQgYWdhaW5cclxuICAgIC5hdHRyKFwiaGVpZ2h0XCIsIGhlaWdodCkgLy8gKHNhbWUgYXMgd2lkdGgpXHJcbiAgICAuYXBwZW5kKFwiZ1wiKSAvLyBhZGRzIGEgPGc+IGVsZW1lbnQgdG8gdGhlIDxzdmc+IGVsZW1lbnQuIEl0IHJldHVybnMgdGhlIDxnPiBlbGVtZW50XHJcbiAgICAuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIHdpZHRoIC8gMiArIFwiLFwiICsgaGVpZ2h0IC8gMiArIFwiKVwiKTsgLy8gdGFrZXMgdGhlIDxnPiBlbGVtZW50IGFuZCBtb3ZlcyB0aGUgWzAsMF0gY2VudGVyIG92ZXIgYW5kIGRvd25cclxuXHJcbiAgdmFyIGcgPSBkM1xyXG4gICAgLnNlbGVjdChcInN2Z1wiKSAvLyAtLT4gPHN2Zz48L3N2Zz5cclxuICAgIC5hdHRyKFwid2lkdGhcIiwgd2lkdGgpIC8vIC0tPiA8c3ZnIHdpZHRoPVwiNTAwXCI+PC9zdmc+XHJcbiAgICAuYXR0cihcImhlaWdodFwiLCBoZWlnaHQpIC8vIC0tPiA8c3ZnIHdpZHRoPVwiNTAwXCIgaGVpZ2h0PVwiNTAwXCI+PC9zdmc+XHJcbiAgICAuYXBwZW5kKFwiZ1wiKSAvLyAtLT4gPHN2ZyB3aWR0aD1cIjUwMFwiIGhlaWdodD1cIjUwMFwiPjxnPjwvZz48L3N2Zz5cclxuICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgd2lkdGggLyAyICsgXCIsXCIgKyBoZWlnaHQgLyAyICsgXCIpXCIpOyAvLyAtLT4gPHN2ZyB3aWR0aD1cIjUwMFwiIGhlaWdodD1cIjUwMFwiPjxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgyNTAsMjUwKVwiPjwvZz48L3N2Zz5cclxuXHJcbiAgdmFyIHBhcnRpdGlvbiA9IGQzXHJcbiAgICAucGFydGl0aW9uKCkgLy8gPC0tIDFcclxuICAgIC5zaXplKFsyICogTWF0aC5QSSwgcmFkaXVzXSk7IC8vIDwtLSAyXHJcblxyXG4gIHZhciByb290ID0gZDNcclxuICAgIC5oaWVyYXJjaHkoaGllcmFyY2h5KSAvLyA8LS0gMVxyXG4gICAgLnN1bShmdW5jdGlvbiAoZCkge1xyXG4gICAgICByZXR1cm4gZC5oZWlnaHQ7XHJcbiAgICB9KTsgLy8gPC0tIDJcclxuXHJcbiAgcGFydGl0aW9uKHJvb3QpOyAvLyA8LS0gMVxyXG4gIHZhciBhcmMgPSBkM1xyXG4gICAgLmFyYygpIC8vIDwtLSAyXHJcbiAgICAuc3RhcnRBbmdsZShmdW5jdGlvbiAoZCkge1xyXG4gICAgICByZXR1cm4gZC54MDtcclxuICAgIH0pXHJcbiAgICAuZW5kQW5nbGUoZnVuY3Rpb24gKGQpIHtcclxuICAgICAgcmV0dXJuIGQueDE7XHJcbiAgICB9KVxyXG4gICAgLmlubmVyUmFkaXVzKGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgIHJldHVybiBkLnkwO1xyXG4gICAgfSlcclxuICAgIC5vdXRlclJhZGl1cyhmdW5jdGlvbiAoZCkge1xyXG4gICAgICByZXR1cm4gZC55MTtcclxuICAgIH0pO1xyXG5cclxuICBnLnNlbGVjdEFsbChcInBhdGhcIikgLy8gPC0tIDFcclxuICAgIC5kYXRhKHJvb3QuZGVzY2VuZGFudHMoKSkgLy8gPC0tIDJcclxuICAgIC5lbnRlcigpIC8vIDwtLSAzXHJcbiAgICAuYXBwZW5kKFwicGF0aFwiKSAvLyA8LS0gNFxyXG4gICAgLmF0dHIoXCJkaXNwbGF5XCIsIGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgIHJldHVybiBkLmRlcHRoID8gbnVsbCA6IFwibm9uZVwiO1xyXG4gICAgfSkgLy8gPC0tIDVcclxuICAgIC5hdHRyKFwiZFwiLCBhcmMpIC8vIDwtLSA2XHJcbiAgICAuc3R5bGUoXCJzdHJva2VcIiwgXCIjZmZmXCIpIC8vIDwtLSA3XHJcbiAgICAuc3R5bGUoXCJmaWxsXCIsIGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgIHJldHVybiBjb2xvcigoZC5jaGlsZHJlbiA/IGQgOiBkLnBhcmVudCkuZGF0YS5uYW1lKTtcclxuICAgIH0pOyAvLyA8LS0gOFxyXG59O1xyXG4iLCAiaW1wb3J0ICogYXMgZDMgZnJvbSBcImQzXCI7XHJcbmltcG9ydCB0eXBlIEdyYXBoIGZyb20gXCJncmFwaG9sb2d5XCI7XHJcbmltcG9ydCB0eXBlIHsgVEZpbGUgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuaW1wb3J0IHsgb3Blbk9yU3dpdGNoIH0gZnJvbSBcIm9ic2lkaWFuLWNvbW11bml0eS1saWJcIjtcclxuaW1wb3J0IHsgZGZzRmxhdEFkakxpc3QsIFZpc01vZGFsIH0gZnJvbSBcIi4vVmlzTW9kYWxcIjtcclxuXHJcbmV4cG9ydCBjb25zdCB0aWR5VHJlZSA9IChcclxuICBncmFwaDogR3JhcGgsXHJcbiAgY3VyckZpbGU6IFRGaWxlLFxyXG4gIG1vZGFsOiBWaXNNb2RhbCxcclxuICB3aWR0aDogbnVtYmVyLFxyXG4gIGhlaWdodDogbnVtYmVyXHJcbikgPT4ge1xyXG4gIC8vIGNvbnN0IGFkakxpc3Q6IEFkakxpc3RJdGVtW10gPSBiZnNBZGpMaXN0KGdyYXBoLCBjdXJyRmlsZS5iYXNlbmFtZSk7XHJcbiAgLy8gY29uc29sZS5sb2coeyBhZGpMaXN0IH0pO1xyXG5cclxuICAvLyBjb25zdCBub0RvdWJsZXMgPSBbLi4uYWRqTGlzdF07XHJcbiAgLy8gbm9Eb3VibGVzLmZvckVhY2goKGEsIGksIGxpc3QpID0+IHtcclxuICAvLyAgIGlmIChsaXN0LnNvbWUoKGIsIGopID0+IGkgIT09IGogJiYgYS5wYXJlbnRJZCA9PT0gYi5wYXJlbnRJZCkpIHtcclxuICAvLyAgICAgbm9Eb3VibGVzLnNwbGljZShpLCAxKTtcclxuICAvLyAgIH1cclxuICAvLyB9KTtcclxuICAvLyBjb25zb2xlLmxvZyh7IG5vRG91YmxlcyB9KTtcclxuXHJcbiAgY29uc3QgdHJlZSA9IChkYXRhKSA9PiB7XHJcbiAgICBjb25zdCByb290ID0gZDMuaGllcmFyY2h5KGRhdGEpO1xyXG4gICAgcm9vdC5keCA9IDEwO1xyXG4gICAgcm9vdC5keSA9IHdpZHRoIC8gKHJvb3QuaGVpZ2h0ICsgMSk7XHJcbiAgICByZXR1cm4gZDMudHJlZSgpLm5vZGVTaXplKFtyb290LmR4LCByb290LmR5XSkocm9vdCk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgZmxhdEFkaiA9IGRmc0ZsYXRBZGpMaXN0KGdyYXBoLCBjdXJyRmlsZS5iYXNlbmFtZSk7XHJcbiAgY29uc29sZS5sb2coeyBmbGF0QWRqIH0pO1xyXG5cclxuICBjb25zdCBoaWVyYXJjaHkgPSBkMy5zdHJhdGlmeSgpKGZsYXRBZGopO1xyXG4gIGNvbnNvbGUubG9nKHsgaGllcmFyY2h5IH0pO1xyXG5cclxuICBjb25zdCByb290ID0gdHJlZShoaWVyYXJjaHkpO1xyXG4gIGNvbnNvbGUubG9nKHJvb3QpO1xyXG5cclxuICBsZXQgeDAgPSBJbmZpbml0eTtcclxuICBsZXQgeDEgPSAteDA7XHJcbiAgcm9vdC5lYWNoKChkKSA9PiB7XHJcbiAgICBpZiAoZC54ID4geDEpIHgxID0gZC54O1xyXG4gICAgaWYgKGQueCA8IHgwKSB4MCA9IGQueDtcclxuICB9KTtcclxuXHJcbiAgY29uc3Qgc3ZnID0gZDNcclxuICAgIC5zZWxlY3QoXCIuZDMtZ3JhcGhcIilcclxuICAgIC5hcHBlbmQoXCJzdmdcIilcclxuICAgIC5hdHRyKFwiaGVpZ2h0XCIsIGhlaWdodClcclxuICAgIC5hdHRyKFwid2lkdGhcIiwgd2lkdGgpO1xyXG5cclxuICBjb25zdCBnID0gc3ZnXHJcbiAgICAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgLmF0dHIoXCJmb250LWZhbWlseVwiLCBcInNhbnMtc2VyaWZcIilcclxuICAgIC5hdHRyKFwiZm9udC1zaXplXCIsIDEwKVxyXG4gICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgYHRyYW5zbGF0ZSgke3Jvb3QuZHkgLyAzfSwke3Jvb3QuZHggLSB4MH0pYCk7XHJcblxyXG4gIGNvbnN0IGxpbmsgPSBnXHJcbiAgICAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgLmF0dHIoXCJmaWxsXCIsIFwibm9uZVwiKVxyXG4gICAgLmF0dHIoXCJzdHJva2VcIiwgXCIjNTU1XCIpXHJcbiAgICAuYXR0cihcInN0cm9rZS1vcGFjaXR5XCIsIDAuNClcclxuICAgIC5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIDEuNSlcclxuICAgIC5zZWxlY3RBbGwoXCJwYXRoXCIpXHJcbiAgICAuZGF0YShyb290LmxpbmtzKCkpXHJcbiAgICAuam9pbihcInBhdGhcIilcclxuICAgIC5hdHRyKFxyXG4gICAgICBcImRcIixcclxuICAgICAgZDNcclxuICAgICAgICAubGlua0hvcml6b250YWwoKVxyXG4gICAgICAgIC54KChkKSA9PiBkLnkpXHJcbiAgICAgICAgLnkoKGQpID0+IGQueClcclxuICAgICk7XHJcblxyXG4gIGNvbnN0IG5vZGUgPSBnXHJcbiAgICAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgLmF0dHIoXCJzdHJva2UtbGluZWpvaW5cIiwgXCJyb3VuZFwiKVxyXG4gICAgLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgMTApXHJcbiAgICAuc2VsZWN0QWxsKFwiZ1wiKVxyXG4gICAgLmRhdGEocm9vdC5kZXNjZW5kYW50cygpKVxyXG4gICAgLmpvaW4oXCJnXCIpXHJcbiAgICAuYXR0cihcInRyYW5zZm9ybVwiLCAoZCkgPT4gYHRyYW5zbGF0ZSgke2QueX0sJHtkLnh9KWApO1xyXG5cclxuICBub2RlXHJcbiAgICAuYXBwZW5kKFwiY2lyY2xlXCIpXHJcbiAgICAuYXR0cihcImZpbGxcIiwgKGQpID0+IChkLmNoaWxkcmVuID8gXCIjNTU1XCIgOiBcIiM5OTlcIikpXHJcbiAgICAuYXR0cihcInJcIiwgMTApO1xyXG5cclxuICBub2RlLmF0dHIoXCJhcmlhLWxhYmVsXCIsIChkKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyhkKTtcclxuICAgIHJldHVybiBkLmRhdGEuZGF0YS5uYW1lO1xyXG4gIH0pO1xyXG5cclxuICBjb25zdCBub2RlQ2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQsIGRlc3Q6IHN0cmluZykgPT4ge1xyXG4gICAgb3Blbk9yU3dpdGNoKGRlc3QsIGV2ZW50KTtcclxuICAgIG1vZGFsLmNsb3NlKCk7XHJcbiAgfTtcclxuICBub2RlLm9uKFwiY2xpY2tcIiwgKGV2ZW50OiBNb3VzZUV2ZW50LCBkKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyh7IGQgfSk7XHJcbiAgICBub2RlQ2xpY2soZXZlbnQsIGQuZGF0YS5kYXRhLm5hbWUpO1xyXG4gIH0pO1xyXG5cclxuICBub2RlXHJcbiAgICAuYXBwZW5kKFwidGV4dFwiKVxyXG4gICAgLmF0dHIoXCJkeVwiLCBcIjAuMzFlbVwiKVxyXG4gICAgLmF0dHIoXCJ4XCIsIChkKSA9PiAoZC5jaGlsZHJlbiA/IC02IDogNikpXHJcbiAgICAuYXR0cihcInRleHQtYW5jaG9yXCIsIChkKSA9PiAoZC5jaGlsZHJlbiA/IFwiZW5kXCIgOiBcInN0YXJ0XCIpKVxyXG4gICAgLnRleHQoKGQpID0+IGQuZGF0YS5kYXRhLm5hbWUpXHJcbiAgICAuY2xvbmUodHJ1ZSlcclxuICAgIC5sb3dlcigpXHJcbiAgICAuYXR0cihcInN0cm9rZVwiLCBcIndoaXRlXCIpO1xyXG5cclxuICBmdW5jdGlvbiB6b29tZWQoeyB0cmFuc2Zvcm0gfSkge1xyXG4gICAgc3ZnLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgdHJhbnNmb3JtKTtcclxuICB9XHJcbiAgc3ZnLmNhbGwoXHJcbiAgICBkM1xyXG4gICAgICAuem9vbSgpXHJcbiAgICAgIC5leHRlbnQoW1xyXG4gICAgICAgIFswLCAwXSxcclxuICAgICAgICBbd2lkdGgsIGhlaWdodF0sXHJcbiAgICAgIF0pXHJcbiAgICAgIC5zY2FsZUV4dGVudChbMC41LCA4XSlcclxuICAgICAgLm9uKFwiem9vbVwiLCB6b29tZWQpXHJcbiAgKTtcclxufTtcclxuIiwgImltcG9ydCAqIGFzIGQzIGZyb20gXCJkM1wiO1xyXG5pbXBvcnQgdHlwZSBHcmFwaCBmcm9tIFwiZ3JhcGhvbG9neVwiO1xyXG5pbXBvcnQgdHlwZSB7IFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IG9wZW5PclN3aXRjaCB9IGZyb20gXCJvYnNpZGlhbi1jb21tdW5pdHktbGliXCI7XHJcbmltcG9ydCB0eXBlIHsgVmlzTW9kYWwgfSBmcm9tIFwiLi9WaXNNb2RhbFwiO1xyXG5pbXBvcnQgeyBkZnNGbGF0QWRqTGlzdCB9IGZyb20gXCIuL1Zpc01vZGFsXCI7XHJcblxyXG5leHBvcnQgY29uc3QgdHJlZU1hcCA9IChcclxuICBncmFwaDogR3JhcGgsXHJcbiAgY3VyckZpbGU6IFRGaWxlLFxyXG4gIG1vZGFsOiBWaXNNb2RhbCxcclxuICB3aWR0aDogbnVtYmVyLFxyXG4gIGhlaWdodDogbnVtYmVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGZsYXRBZGogPSBkZnNGbGF0QWRqTGlzdChncmFwaCwgY3VyckZpbGUuYmFzZW5hbWUpO1xyXG4gIGNvbnNvbGUubG9nKHsgZmxhdEFkaiB9KTtcclxuXHJcbiAgY29uc3QgaGllcmFyY2h5ID0gZDMuc3RyYXRpZnkoKShmbGF0QWRqKTtcclxuICBjb25zb2xlLmxvZyh7IGhpZXJhcmNoeSB9KTtcclxuXHJcbiAgY29uc3Qgcm9vdCA9IGQzXHJcbiAgICAudHJlZW1hcCgpXHJcbiAgICAudGlsZShkMy50cmVlbWFwQmluYXJ5KVxyXG4gICAgLnNpemUoW3dpZHRoLCBoZWlnaHRdKVxyXG4gICAgLnBhZGRpbmcoMSlcclxuICAgIC5yb3VuZCh0cnVlKShcclxuICAgICAgaGllcmFyY2h5LnN1bSgoZCkgPT4gZC5oZWlnaHQpLnNvcnQoKGEsIGIpID0+IGIuaGVpZ2h0IC0gYS5oZWlnaHQpXHJcbiAgICApO1xyXG5cclxuICAvLyAgIGNvbnN0IHJvb3QgPSB0cmVlbWFwKGRhdGEpO1xyXG5cclxuICBjb25zdCBzdmcgPSBkM1xyXG4gICAgLnNlbGVjdChcIi5kMy1ncmFwaFwiKVxyXG4gICAgLmFwcGVuZChcInN2Z1wiKVxyXG4gICAgLmF0dHIoXCJoZWlnaHRcIiwgaGVpZ2h0KVxyXG4gICAgLmF0dHIoXCJ3aWR0aFwiLCB3aWR0aClcclxuICAgIC5zdHlsZShcImZvbnRcIiwgXCIxMHB4IHNhbnMtc2VyaWZcIik7XHJcblxyXG4gIGNvbnN0IGxlYWYgPSBzdmdcclxuICAgIC5zZWxlY3RBbGwoXCJnXCIpXHJcbiAgICAuZGF0YShyb290LmxlYXZlcygpKVxyXG4gICAgLmpvaW4oXCJnXCIpXHJcbiAgICAuYXR0cihcInRyYW5zZm9ybVwiLCAoZCkgPT4gYHRyYW5zbGF0ZSgke2QueDB9LCR7ZC55MH0pYCk7XHJcblxyXG4gIGxlYWYuYXR0cihcImFyaWEtbGFiZWxcIiwgKGQpID0+IGQuZGF0YS5uYW1lKTtcclxuXHJcbiAgLy8gICBsZWFmLmFwcGVuZChcInRpdGxlXCIpLnRleHQoXHJcbiAgLy8gICAgIChkKSA9PlxyXG4gIC8vICAgICAgIGAke2RcclxuICAvLyAgICAgICAgIC5hbmNlc3RvcnMoKVxyXG4gIC8vICAgICAgICAgLnJldmVyc2UoKVxyXG4gIC8vICAgICAgICAgLm1hcCgoZCkgPT4gZC5kYXRhLmlkKVxyXG4gIC8vICAgICAgICAgLmpvaW4oXCIvXCIpfVxcbiR7Zm9ybWF0KGQuaGVpZ2h0KX1gXHJcbiAgLy8gICApO1xyXG5cclxuICBjb25zdCBjb2xvciA9IGQzLnNjYWxlT3JkaW5hbChkMy5zY2hlbWVDYXRlZ29yeTEwKTtcclxuXHJcbiAgbGVhZlxyXG4gICAgLmFwcGVuZChcInJlY3RcIilcclxuICAgIC8vIC5hdHRyKFwiaWRcIiwgKGQpID0+IChkLmxlYWZVaWQgPSBET00udWlkKFwibGVhZlwiKSkuaWQpXHJcbiAgICAuYXR0cihcImZpbGxcIiwgKGQpID0+IHtcclxuICAgICAgd2hpbGUgKGQuZGVwdGggPiAxKSBkID0gZC5wYXJlbnQ7XHJcbiAgICAgIHJldHVybiBjb2xvcihkLmRhdGEuaWQpO1xyXG4gICAgfSlcclxuICAgIC5hdHRyKFwiZmlsbC1vcGFjaXR5XCIsIDAuNilcclxuICAgIC5hdHRyKFwid2lkdGhcIiwgKGQpID0+IGQueDEgLSBkLngwKVxyXG4gICAgLmF0dHIoXCJoZWlnaHRcIiwgKGQpID0+IGQueTEgLSBkLnkwKTtcclxuXHJcbiAgbGVhZlxyXG4gICAgLmFwcGVuZChcImNsaXBQYXRoXCIpXHJcbiAgICAvLyAuYXR0cihcImlkXCIsIChkKSA9PiAoZC5jbGlwVWlkID0gRE9NLnVpZChcImNsaXBcIikpLmlkKVxyXG4gICAgLmFwcGVuZChcInVzZVwiKTtcclxuICAvLyAuYXR0cihcInhsaW5rOmhyZWZcIiwgKGQpID0+IGQubGVhZlVpZC5ocmVmKTtcclxuXHJcbiAgLy8gICBsZWFmXHJcbiAgLy8gICAgIC5hcHBlbmQoXCJ0ZXh0XCIpXHJcbiAgLy8gICAgIC5hdHRyKFwiY2xpcC1wYXRoXCIsIChkKSA9PiBkLmNsaXBVaWQpXHJcbiAgLy8gICAgIC5zZWxlY3RBbGwoXCJ0c3BhblwiKVxyXG4gIC8vICAgICAuZGF0YSgoZCkgPT4ge1xyXG4gIC8vICAgICAgIGNvbnNvbGUubG9nKHsgZCB9KTtcclxuICAvLyAgICAgICByZXR1cm4gZC5kYXRhLm5hbWUuc3BsaXQoLyg/PVtBLVpdW15BLVpdKS9nKS5jb25jYXQoZm9ybWF0KGQuaGVpZ2h0KSk7XHJcbiAgLy8gICAgIH0pXHJcbiAgLy8gICAgIC5qb2luKFwidHNwYW5cIilcclxuICAvLyAgICAgLmF0dHIoXCJ4XCIsIDMpXHJcbiAgLy8gICAgIC5hdHRyKFxyXG4gIC8vICAgICAgIFwieVwiLFxyXG4gIC8vICAgICAgIChkLCBpLCBub2RlcykgPT4gYCR7KGkgPT09IG5vZGVzLmxlbmd0aCAtIDEpICogMC4zICsgMS4xICsgaSAqIDAuOX1lbWBcclxuICAvLyAgICAgKVxyXG4gIC8vICAgICAuYXR0cihcImZpbGwtb3BhY2l0eVwiLCAoZCwgaSwgbm9kZXMpID0+XHJcbiAgLy8gICAgICAgaSA9PT0gbm9kZXMubGVuZ3RoIC0gMSA/IDAuNyA6IG51bGxcclxuICAvLyAgICAgKTtcclxuICAvLyAgIC8vIC50ZXh0KChkKSA9PiBkKTtcclxuXHJcbiAgY29uc3Qgbm9kZUNsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50LCBkZXN0OiBzdHJpbmcpID0+IHtcclxuICAgIG9wZW5PclN3aXRjaChkZXN0LCBldmVudCk7XHJcbiAgICBtb2RhbC5jbG9zZSgpO1xyXG4gIH07XHJcbiAgbGVhZi5vbihcImNsaWNrXCIsIChldmVudDogTW91c2VFdmVudCwgZCkgPT4ge1xyXG4gICAgY29uc29sZS5sb2coeyBkIH0pO1xyXG4gICAgbm9kZUNsaWNrKGV2ZW50LCBkLmRhdGEubmFtZSk7XHJcbiAgfSk7XHJcblxyXG4gIGZ1bmN0aW9uIHpvb21lZCh7IHRyYW5zZm9ybSB9KSB7XHJcbiAgICBzdmcuYXR0cihcInRyYW5zZm9ybVwiLCB0cmFuc2Zvcm0pO1xyXG4gIH1cclxuICBzdmcuY2FsbChcclxuICAgIGQzXHJcbiAgICAgIC56b29tKClcclxuICAgICAgLmV4dGVudChbXHJcbiAgICAgICAgWzAsIDBdLFxyXG4gICAgICAgIFt3aWR0aCwgaGVpZ2h0XSxcclxuICAgICAgXSlcclxuICAgICAgLnNjYWxlRXh0ZW50KFswLjUsIDhdKVxyXG4gICAgICAub24oXCJ6b29tXCIsIHpvb21lZClcclxuICApO1xyXG59O1xyXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7SUFBQSwyQ0FBQSxPQUFBLFNBQUE7QUFDQSxVQUFBLE9BQUEsWUFBQSxZQUFBLE9BQUEsWUFBQTtBQUNBLGdCQUFBLFVBQUEsUUFBQTtlQUNBLE9BQUEsV0FBQSxjQUFBLE9BQUE7QUFDQSxlQUFBLENBQUEsR0FBQSxPQUFBO2VBQ0EsT0FBQSxZQUFBO0FBQ0EsZ0JBQUEsYUFBQSxRQUFBOztBQUVBLGNBQUEsYUFBQSxRQUFBO0lBQ0EsR0FBQyxPQUFBLFNBQUEsY0FB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O1VBQ0EsT0FBQztBQUNELGdCQUFBLFFBQUEsVUFBQSxPQUFBO0FBQ0EsdUJBQUEsU0FBQTtBQUNBLG1CQUFBLFNBQUEsSUFBQSxVQUFBO0FBQ0EsbUJBQUEsSUFBQSxPQUFBLFFBQUE7QUFDQSxxQkFBQTtZQUNBO0FBQ0EsbUJBQUEsU0FBQSxJQUFBO0FBQ0EscUJBQUEsVUFBQSxJQUFBLEtBQUEsSUFBQSxHQUFBLFNBQUEsQ0FBQTtZQUNBO0FBQ0Esa0JBQUEsU0FBQSxJQUFBO0FBQ0EscUJBQUEsVUFBQSxJQUFBLEtBQUE7WUFDQTtVQUNBO0FBRUEsa0JBQUEsVUFBQTtZQUNBLEtBQUE7WUFDQSxLQUFBO1lBQ0E7WUFDQTtZQUNBO1VBQ0E7OztBQzVEQSxjQUFBLGtCQUFBLG9CQUFBLHVEQUFBO0FBQ0EsY0FBQSxZQUFBLG9CQUFBLCtDQUFBO0FBRUEsY0FBQSxXQUFBLGdCQUFBLFVBQUE7QUFDQSxjQUFBLGlCQUFBLE1BQUE7QUFHQSxrQkFBQSxVQUFBLFNBQUEsSUFBQTtBQUNBLG1CQUFBLE9BQUEsVUFBQSxXQUFBLFVBQUEsTUFBQSxlQUFBLGNBQUE7VUFDQTs7O0FDVEEsY0FBQSxRQUFBLG9CQUFBLDJDQUFBO0FBRUEsY0FBQSxjQUFBO0FBRUEsY0FBQSxXQUFBLFNBQUEsU0FBQSxXQUFBO0FBQ0EsZ0JBQUEsUUFBQSxLQUFBLFdBQUEsT0FBQTtBQUNBLG1CQUFBLFNBQUEsV0FBQSxPQUNBLFNBQUEsU0FBQSxRQUNBLE9BQUEsYUFBQSxhQUFBLE1BQUEsU0FBQSxJQUNBLENBQUEsQ0FBQTtVQUNBO0FBRUEsY0FBQSxhQUFBLFNBQUEsWUFBQSxTQUFBLFFBQUE7QUFDQSxtQkFBQSxPQUFBLE1BQUEsRUFBQSxRQUFBLGFBQUEsR0FBQSxFQUFBLFlBQUE7VUFDQTtBQUVBLGNBQUEsT0FBQSxTQUFBLE9BQUEsQ0FBQTtBQUNBLGNBQUEsU0FBQSxTQUFBLFNBQUE7QUFDQSxjQUFBLFdBQUEsU0FBQSxXQUFBO0FBRUEsa0JBQUEsVUFBQTs7O0FDcEJBLGtCQUFBLFVBQUEsU0FBQSxJQUFBO0FBQ0Es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QUFBLFFBQUssUUFBUTtBQUFBLFFBQUssUUFBUTtBQUFBLFFBQUssUUFBUTtBQUFBLFFBQUssUUFBUTtBQUFBLFFBQzFFLFFBQVE7QUFBQSxRQUFNLFFBQVE7QUFBQSxRQUFLLFFBQVE7QUFBQSxRQUFLLFFBQVE7QUFBQSxRQUNoRCxRQUFRO0FBQUEsUUFBTSxRQUFRO0FBQUEsUUFBSyxRQUFRO0FBQUEsUUFBSyxRQUFRO0FBQUEsUUFDaEQsUUFBUTtBQUFBLFFBQU0sUUFBUTtBQUFBLFFBQUssUUFBUTtBQUFBLFFBQ25DLFFBQVE7QUFBQSxRQUFNLFFBQVE7QUFBQSxRQUN0QixRQUFRO0FBQUEsUUFBTSxRQUFRO0FBQUEsUUFDdEIsUUFBUTtBQUFBLFFBRVIsVUFBVTtBQUFBLFFBQU0sVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQ3pDLFVBQVU7QUFBQSxRQUFNLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUN6QyxVQUFVO0FBQUEsUUFBTSxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFDeEQsVUFBVTtBQUFBLFFBQU0sVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQ3hELFVBQVU7QUFBQSxRQUFNLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUN4RCxVQUFVO0FBQUEsUUFBTSxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFDdkUsVUFBVTtBQUFBLFFBQU0sVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQ3ZFLFVBQVU7QUFBQSxRQUFNLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUN4RCxVQUFVO0FBQUEsUUFBTSxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFDeEQsVUFBVTtBQUFBLFFBQU0sVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQ3hELFVBQVU7QUFBQSxRQUFNLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUN2RSxVQUFVO0FBQUEsUUFBTSxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFDdkUsVUFBVTtBQUFBLFFBQU0sVUFBVTtBQUFBLFFBQzFCLFVBQVU7QUFBQSxRQUFNLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUN6QyxVQUFVO0FBQUEsUUFBTSxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFDdkUsVUFBVTtBQUFBLFFBQU0sVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQ3ZFLFVBQVU7QUFBQSxRQUFNLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUN4RCxVQUFVO0FBQUEsUUFBTSxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFDeEQsVUFBVTtBQUFBLFFBQU0sVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQ3pDLFVBQVU7QUFBQSxRQUFNLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUN6QyxVQUFVO0FBQUEsUUFBTSxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFDekMsVUFBVTtBQUFBLFFBQU0sVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQ3pDLFVBQVU7QUFBQSxRQUFNLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUFLLFVBQVU7QUFBQSxRQUN4RCxVQUFVO0FBQUEsUUFBTSxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFBSyxVQUFVO0FBQUEsUUFDeEQsVUFBVTtBQUFBLFFBQU0sVUFBVTtBQUFBLFFBQUssVUFBVTtBQUFBLFFBQ3pDLFVBQVU7QUFBQSxRQUFNLFVBQVU7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QUFBQSxJQUNOLFdBQVc7QUFBQSxJQUNYLGFBQWE7QUFBQSxJQUNiLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQTtBQUFBLElBQ0UsT0FBTztBQUFBLElBQ1AsTUFBTTtBQUFBLElBQ04sV0FBVztBQUFBLElBQ1gsYUFBYTtBQUFBLElBQ2IsS0FBSztBQUFBLEVBQ1A7QUFBQSxFQUNBO0FBQUEsSUFDRSxPQUFPO0FBQUEsSUFDUCxNQUFNO0FBQUEsSUFDTixXQUFXO0FBQUEsSUFDWCxhQUFhO0FBQUEsSUFDYixLQUFLO0FBQUEsRUFDUDtBQUFBLEVBQ0E7QUFBQSxJQUNFLE9BQU87QUFBQSxJQUNQLE1BQU07QUFBQSxJQUNOLFdBQVc7QUFBQSxJQUNYLGFBQWE7QUFBQSxJQUNiLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQTtBQUFBLElBQ0UsT0FBTztBQUFBLElBQ1AsTUFBTTtBQUFBLElBQ04sV0FBVztBQUFBLElBQ1gsYUFBYTtBQUFBLElBQ2IsS0FBSztBQUFBLEVBQ1A7QUFBQSxFQUNBO0FBQUEsSUFDRSxPQUFPO0FBQUEsSUFDUCxNQUFNO0FBQUEsSUFDTixXQUFXO0FBQUEsSUFDWCxhQUFhO0FBQUEsSUFDYixLQUFLO0FBQUEsRUFDUDtBQUFBLEVBQ0E7QUFBQSxJQUNFLE9BQU87QUFBQSxJQUNQLE1BQU07QUFBQSxJQUNOLFdBQVc7QUFBQSxJQUNYLGFBQWE7QUFBQSxJQUNiLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQTtBQUFBLElBQ0UsT0FBTztBQUFBLElBQ1AsTUFBTTtBQUFBLElBQ04sV0FBVztBQUFBLElBQ1gsYUFBYTtBQUFBLElBQ2IsS0FBSztBQUFBLEVBQ1A7QUFBQSxFQUNBO0FBQUEsSUFDRSxPQUFPO0FBQUEsSUFDUCxNQUFNO0FBQUEsSUFDTixXQUFXO0FBQUEsSUFDWCxhQUFhO0FBQUEsSUFDYixLQUFLO0FBQUEsRUFDUDtBQUFBLEVBQ0E7QUFBQSxJQUNFLE9BQU87QUFBQSxJQUNQLE1BQU07QUFBQSxJQUNOLFdBQVc7QUFBQSxJQUNYLGFBQWE7QUFBQSxJQUNiLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQTtBQUFBLElBQ0UsT0FBTztBQUFBLElBQ1AsTUFBTTtBQUFBLElBQ04sV0FBVztBQUFBLElBQ1gsYUFBYTtBQUFBLElBQ2IsS0FBSztBQUFBLEVBQ1A7QUFBQSxFQUNBO0FBQUEsSUFDRSxPQUFPO0FBQUEsSUFDUCxNQUFNO0FBQUEsSUFDTixXQUFXO0FBQUEsSUFDWCxhQUFhO0FBQUEsSUFDYixLQUFLO0FBQUEsRUFDUDtBQUFBLEVBQ0E7QUFBQSxJQUNFLE9BQU87QUFBQSxJQUNQLE1BQU07QUFBQSxJQUNOLFdBQVc7QUFBQSxJQUNYLGFBQWE7QUFBQSxJQUNiLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQTtBQUFBLElBQ0UsT0FBTztBQUFBLElBQ1AsTUFBTTtBQUFBLElBQ04sV0FBVztBQUFBLElBQ1gsYUFBYTtBQUFBLElBQ2IsS0FBSztBQUFBLEVBQ1A7QUFDRjtBQUVPLElBQU0sVUFBVSxlQUFlLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSztBQUV0RSxJQUFNLHlCQUF5QjtBQUFBLEVBQ3BDO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRjtBQUVPLElBQU0sbUJBQ1g7QUFFSyxJQUFNLFdBQVc7QUFFakIsSUFBTSxtQkFBK0I7QUFBQSxFQUMxQyxpQkFBaUI7QUFBQSxFQUNqQixjQUFjO0FBQUEsRUFDZCxnQkFBZ0I7QUFBQSxFQUNoQixjQUFjO0FBQUEsRUFDZCxlQUFlLENBQUM7QUFBQSxFQUNoQixVQUFVO0FBQUEsRUFDVixtQkFBbUI7QUFBQSxFQUNuQixZQUFZO0FBQUEsRUFDWixnQkFBZ0I7QUFBQSxFQUNoQixlQUFlO0FBQUEsRUFDZixtQkFBbUI7QUFBQSxFQUNuQixrQkFBa0I7QUFBQSxFQUNsQixpQkFBaUI7QUFBQSxFQUNqQixXQUFXO0FBQUEsRUFDWCxzQkFBc0I7QUFBQSxFQUN0QixrQkFBa0I7QUFBQSxFQUNsQixZQUFZO0FBQUEsRUFDWixpQkFBaUI7QUFBQSxFQUNqQix5QkFBeUI7QUFBQSxFQUN6QixnQkFBZ0I7QUFBQSxFQUNoQix1Q0FBdUM7QUFBQSxFQUN2QyxhQUFhO0FBQUEsRUFDYix3QkFBd0IsQ0FBQztBQUFBLEVBQ3pCLDZCQUE2QjtBQUFBLEVBQzdCLGtCQUFrQjtBQUFBLEVBQ2xCLGdCQUFnQixDQUFDLEVBQUU7QUFBQSxFQUNuQix1QkFBdUI7QUFBQSxFQUN2QixXQUFXO0FBQUEsRUFDWCxZQUFZLENBQUMsRUFBRTtBQUFBLEVBQ2YsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsK0JBQStCO0FBQUEsRUFDL0IscUJBQXFCO0FBQUEsRUFDckIsZ0JBQWdCO0FBQUEsRUFDaEIsa0JBQWtCO0FBQUEsRUFDbEIsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsNkJBQTZCO0FBQUEsRUFDN0IsZ0JBQWdCO0FBQUEsRUFDaEIsa0JBQWtCO0FBQUEsRUFDbEIsZ0JBQWdCO0FBQUEsRUFDaEIscUJBQXFCO0FBQUEsRUFDckIsUUFBUTtBQUFBLEVBQ1IsK0JBQStCO0FBQUEsRUFDL0IsZ0JBQWdCO0FBQUEsRUFDaEIsU0FBUztBQUFBLEVBQ1QscUJBQXFCO0FBQUEsRUFDckIsbUJBQW1CO0FBQUEsRUFDbkIsc0JBQXNCO0FBQUEsRUFDdEIsV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsY0FBYztBQUFBLEVBQ2QscUJBQXFCO0FBQUEsRUFDckIsdUJBQXVCLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQUEsRUFDckMsc0JBQXNCLENBQUM7QUFBQSxFQUN2Qix3QkFBd0IsQ0FBQztBQUFBLEVBQ3pCLFNBQVM7QUFBQSxFQUNULGVBQWU7QUFBQSxFQUNmLGNBQWM7QUFBQSxFQUNkLG1CQUFtQjtBQUFBLEVBQ25CLG1CQUFtQjtBQUFBLEVBQ25CLHVCQUF1QixFQUFFLElBQUksSUFBSSxNQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sSUFBSSxNQUFNLEdBQUc7QUFBQSxFQUN4RSxtQkFBbUI7QUFBQSxFQUNuQixnQkFBZ0I7QUFBQSxFQUNoQiwrQkFBK0I7QUFBQSxFQUMvQixrQkFBa0I7QUFBQSxFQUNsQiwyQkFBMkI7QUFBQSxFQUMzQixXQUFXO0FBQUEsSUFDVDtBQUFBLE1BQ0UsSUFBSSxDQUFDLElBQUk7QUFBQSxNQUNULE1BQU0sQ0FBQyxNQUFNO0FBQUEsTUFDYixNQUFNLENBQUMsTUFBTTtBQUFBLE1BQ2IsTUFBTSxDQUFDLE1BQU07QUFBQSxNQUNiLE1BQU0sQ0FBQyxNQUFNO0FBQUEsSUFDZjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLGdCQUFnQjtBQUFBLEVBQ2hCLG9CQUFvQjtBQUFBLEVBQ3BCLFVBQVU7QUFBQSxFQUNWLGFBQWE7QUFBQSxFQUNiLFdBQVc7QUFBQSxFQUNYLFFBQVE7QUFBQSxFQUNSLGVBQWU7QUFBQSxFQUNmLGtCQUFrQjtBQUFBLElBQ2hCLGlCQUFpQjtBQUFBLElBQ2pCLHFCQUFxQjtBQUFBLElBQ3JCLDBCQUEwQjtBQUFBLElBQzFCLHdCQUF3QjtBQUFBLElBQ3hCLDBCQUEwQjtBQUFBLElBQzFCLHdCQUF3QjtBQUFBLElBQ3hCLGtCQUFrQjtBQUFBLEVBQ3BCO0FBQUEsRUFDQSxtQkFBbUI7QUFBQSxFQUNuQixlQUFlO0FBQ2pCOzs7QUNyYUEsd0JBQTRCO0FBQzVCLHdCQUErQzs7O0FDRC9DLHNCQUFvQztBQUc3QixJQUFNLFdBQU4sTUFBZTtBQUFBLEVBRXBCLFlBQVksUUFBa0I7QUFJOUIseUJBQWdCLENBQUMsVUFDZix1QkFBTyxLQUFLLE9BQU8sU0FBUyxhQUFhO0FBSnpDLFNBQUssU0FBUztBQUFBLEVBQ2hCO0FBQUEsRUFLQSxRQUFRLE9BQWU7QUFDckIsUUFBSSxLQUFLLGNBQWMsQ0FBQztBQUFHLGNBQVEsZUFBZSxLQUFLO0FBQUEsRUFDekQ7QUFBQSxFQUNBLFNBQVMsTUFBYTtBQUNwQixRQUFJLEtBQUssY0FBYyxDQUFDLEdBQUc7QUFDekIsVUFBSSxLQUFLO0FBQVEsa0NBQUssR0FBRyxJQUFJO0FBQzdCLGNBQVEsU0FBUztBQUFBLElBQ25CO0FBQUEsRUFDRjtBQUFBLEVBQ0EsUUFBUSxPQUFlO0FBQ3JCLFFBQUksS0FBSyxjQUFjLENBQUM7QUFBRyxjQUFRLGVBQWUsS0FBSztBQUFBLEVBQ3pEO0FBQUEsRUFDQSxTQUFTLE1BQWE7QUFDcEIsUUFBSSxLQUFLLGNBQWMsQ0FBQyxHQUFHO0FBQ3pCLFVBQUksS0FBSztBQUFRLG1DQUFNLEdBQUcsSUFBSTtBQUM5QixjQUFRLFNBQVM7QUFBQSxJQUNuQjtBQUFBLEVBQ0Y7QUFBQSxFQUVBLFdBQVcsUUFBa0I7QUFDM0IsU0FBSyxRQUFRLE9BQU8sRUFBRTtBQUN0QixRQUFJLE9BQU87QUFBSSxXQUFLLFFBQVEsT0FBTyxFQUFFO0FBQUEsRUFDdkM7QUFBQSxFQU9BLE1BQU0sV0FBaUIsTUFBYTtBQUNsQyxRQUFJLFdBQVU7QUFBRyxXQUFLLE1BQU0sR0FBRyxJQUFJO0FBQUEsU0FDOUI7QUFDSCxXQUFLLE1BQU07QUFDWCxXQUFLLE1BQU0sR0FBRyxJQUFJO0FBQUEsSUFDcEI7QUFBQSxFQUNGO0FBQ0Y7OztBQ2hEQSxnQkFBZ0I7QUFBRTtBQUVsQixnQkFBZ0IsS0FBSyxLQUFLO0FBRXRCLGFBQVcsS0FBSztBQUNaLFFBQUksS0FBSyxJQUFJO0FBQ2pCLFNBQU87QUFDWDtBQVNBLGFBQWEsSUFBSTtBQUNiLFNBQU8sR0FBRztBQUNkO0FBQ0Esd0JBQXdCO0FBQ3BCLFNBQU8sdUJBQU8sT0FBTyxJQUFJO0FBQzdCO0FBQ0EsaUJBQWlCLEtBQUs7QUFDbEIsTUFBSSxRQUFRLEdBQUc7QUFDbkI7QUFDQSxxQkFBcUIsT0FBTztBQUN4QixTQUFPLE9BQU8sVUFBVTtBQUM1QjtBQUNBLHdCQUF3QixJQUFHLEdBQUc7QUFDMUIsU0FBTyxNQUFLLEtBQUksS0FBSyxJQUFJLE9BQU0sS0FBTyxPQUFLLE9BQU8sT0FBTSxZQUFhLE9BQU8sT0FBTTtBQUN0RjtBQUNBLElBQUk7QUFDSix1QkFBdUIsYUFBYSxLQUFLO0FBQ3JDLE1BQUksQ0FBQyxzQkFBc0I7QUFDdkIsMkJBQXVCLFNBQVMsY0FBYyxHQUFHO0FBQUEsRUFDckQ7QUFDQSx1QkFBcUIsT0FBTztBQUM1QixTQUFPLGdCQUFnQixxQkFBcUI7QUFDaEQ7QUFJQSxrQkFBa0IsS0FBSztBQUNuQixTQUFPLE9BQU8sS0FBSyxHQUFHLEVBQUUsV0FBVztBQUN2QztBQXFCQSxxQkFBcUIsWUFBWSxLQUFLLFNBQVMsSUFBSTtBQUMvQyxNQUFJLFlBQVk7QUFDWixVQUFNLFdBQVcsaUJBQWlCLFlBQVksS0FBSyxTQUFTLEVBQUU7QUFDOUQsV0FBTyxXQUFXLEdBQUcsUUFBUTtBQUFBLEVBQ2pDO0FBQ0o7QUFDQSwwQkFBMEIsWUFBWSxLQUFLLFNBQVMsSUFBSTtBQUNwRCxTQUFPLFdBQVcsTUFBTSxLQUNsQixPQUFPLFFBQVEsSUFBSSxNQUFNLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFDbEQsUUFBUTtBQUNsQjtBQUNBLDBCQUEwQixZQUFZLFNBQVMsT0FBTyxJQUFJO0FBQ3RELE1BQUksV0FBVyxNQUFNLElBQUk7QUFDckIsVUFBTSxPQUFPLFdBQVcsR0FBRyxHQUFHLEtBQUssQ0FBQztBQUNwQyxRQUFJLFFBQVEsVUFBVSxRQUFXO0FBQzdCLGFBQU87QUFBQSxJQUNYO0FBQ0EsUUFBSSxPQUFPLFNBQVMsVUFBVTtBQUMxQixZQUFNLFNBQVMsQ0FBQztBQUNoQixZQUFNLE1BQU0sS0FBSyxJQUFJLFFBQVEsTUFBTSxRQUFRLEtBQUssTUFBTTtBQUN0RCxlQUFTLElBQUksR0FBRyxJQUFJLEtBQUssS0FBSyxHQUFHO0FBQzdCLGVBQU8sS0FBSyxRQUFRLE1BQU0sS0FBSyxLQUFLO0FBQUEsTUFDeEM7QUFDQSxhQUFPO0FBQUEsSUFDWDtBQUNBLFdBQU8sUUFBUSxRQUFRO0FBQUEsRUFDM0I7QUFDQSxTQUFPLFFBQVE7QUFDbkI7QUFDQSwwQkFBMEIsTUFBTSxpQkFBaUIsS0FBSyxTQUFTLGNBQWMscUJBQXFCO0FBQzlGLE1BQUksY0FBYztBQUNkLFVBQU0sZUFBZSxpQkFBaUIsaUJBQWlCLEtBQUssU0FBUyxtQkFBbUI7QUFDeEYsU0FBSyxFQUFFLGNBQWMsWUFBWTtBQUFBLEVBQ3JDO0FBQ0o7QUFLQSxrQ0FBa0MsU0FBUztBQUN2QyxNQUFJLFFBQVEsSUFBSSxTQUFTLElBQUk7QUFDekIsVUFBTSxRQUFRLENBQUM7QUFDZixVQUFNLFNBQVMsUUFBUSxJQUFJLFNBQVM7QUFDcEMsYUFBUyxJQUFJLEdBQUcsSUFBSSxRQUFRLEtBQUs7QUFDN0IsWUFBTSxLQUFLO0FBQUEsSUFDZjtBQUNBLFdBQU87QUFBQSxFQUNYO0FBQ0EsU0FBTztBQUNYO0FBQ0EsZ0NBQWdDLE9BQU87QUFDbkMsUUFBTSxTQUFTLENBQUM7QUFDaEIsYUFBVyxLQUFLO0FBQ1osUUFBSSxFQUFFLE9BQU87QUFDVCxhQUFPLEtBQUssTUFBTTtBQUMxQixTQUFPO0FBQ1g7QUF5QkEsdUJBQXVCLE9BQU87QUFDMUIsU0FBTyxTQUFTLE9BQU8sS0FBSztBQUNoQztBQTREQSxJQUFJLGVBQWU7QUFDbkIsMkJBQTJCO0FBQ3ZCLGlCQUFlO0FBQ25CO0FBQ0EseUJBQXlCO0FBQ3JCLGlCQUFlO0FBQ25CO0FBNkZBLGdCQUFnQixRQUFRLE1BQU07QUFDMUIsU0FBTyxZQUFZLElBQUk7QUFDM0I7QUFDQSx1QkFBdUIsUUFBUSxnQkFBZ0IsUUFBUTtBQUNuRCxRQUFNLG1CQUFtQixtQkFBbUIsTUFBTTtBQUNsRCxNQUFJLENBQUMsaUJBQWlCLGVBQWUsY0FBYyxHQUFHO0FBQ2xELFVBQU0sUUFBUSxRQUFRLE9BQU87QUFDN0IsVUFBTSxLQUFLO0FBQ1gsVUFBTSxjQUFjO0FBQ3BCLHNCQUFrQixrQkFBa0IsS0FBSztBQUFBLEVBQzdDO0FBQ0o7QUFDQSw0QkFBNEIsTUFBTTtBQUM5QixNQUFJLENBQUM7QUFDRCxXQUFPO0FBQ1gsUUFBTSxRQUFPLEtBQUssY0FBYyxLQUFLLFlBQVksSUFBSSxLQUFLO0FBQzFELE1BQUksU0FBUSxNQUFLLE1BQU07QUFDbkIsV0FBTztBQUFBLEVBQ1g7QUFDQSxTQUFPLEtBQUs7QUFDaEI7QUFNQSwyQkFBMkIsTUFBTSxPQUFPO0FBQ3BDLFNBQU8sS0FBSyxRQUFRLE1BQU0sS0FBSztBQUNuQztBQXlCQSxnQkFBZ0IsUUFBUSxNQUFNLFFBQVE7QUFDbEMsU0FBTyxhQUFhLE1BQU0sVUFBVSxJQUFJO0FBQzVDO0FBU0EsZ0JBQWdCLE1BQU07QUFDbEIsT0FBSyxXQUFXLFlBQVksSUFBSTtBQUNwQztBQUNBLHNCQUFzQixZQUFZLFdBQVc7QUFDekMsV0FBUyxJQUFJLEdBQUcsSUFBSSxXQUFXLFFBQVEsS0FBSyxHQUFHO0FBQzNDLFFBQUksV0FBVztBQUNYLGlCQUFXLEdBQUcsRUFBRSxTQUFTO0FBQUEsRUFDakM7QUFDSjtBQUNBLGlCQUFpQixNQUFNO0FBQ25CLFNBQU8sU0FBUyxjQUFjLElBQUk7QUFDdEM7QUFnQkEscUJBQXFCLE1BQU07QUFDdkIsU0FBTyxTQUFTLGdCQUFnQiw4QkFBOEIsSUFBSTtBQUN0RTtBQUNBLGNBQWMsTUFBTTtBQUNoQixTQUFPLFNBQVMsZUFBZSxJQUFJO0FBQ3ZDO0FBQ0EsaUJBQWlCO0FBQ2IsU0FBTyxLQUFLLEdBQUc7QUFDbkI7QUFDQSxpQkFBaUI7QUFDYixTQUFPLEtBQUssRUFBRTtBQUNsQjtBQUNBLGdCQUFnQixNQUFNLE9BQU8sU0FBUyxTQUFTO0FBQzNDLE9BQUssaUJBQWlCLE9BQU8sU0FBUyxPQUFPO0FBQzdDLFNBQU8sTUFBTSxLQUFLLG9CQUFvQixPQUFPLFNBQVMsT0FBTztBQUNqRTtBQTZCQSxjQUFjLE1BQU0sV0FBVyxPQUFPO0FBQ2xDLE1BQUksU0FBUztBQUNULFNBQUssZ0JBQWdCLFNBQVM7QUFBQSxXQUN6QixLQUFLLGFBQWEsU0FBUyxNQUFNO0FBQ3RDLFNBQUssYUFBYSxXQUFXLEtBQUs7QUFDMUM7QUFzQ0EsaUNBQWlDLE9BQU8sU0FBUyxTQUFTO0FBQ3RELFFBQU0sUUFBUSxvQkFBSSxJQUFJO0FBQ3RCLFdBQVMsSUFBSSxHQUFHLElBQUksTUFBTSxRQUFRLEtBQUssR0FBRztBQUN0QyxRQUFJLE1BQU0sR0FBRztBQUNULFlBQU0sSUFBSSxNQUFNLEdBQUcsT0FBTztBQUFBLEVBQ2xDO0FBQ0EsTUFBSSxDQUFDLFNBQVM7QUFDVixVQUFNLE9BQU8sT0FBTztBQUFBLEVBQ3hCO0FBQ0EsU0FBTyxNQUFNLEtBQUssS0FBSztBQUMzQjtBQVdBLGtCQUFrQixVQUFTO0FBQ3ZCLFNBQU8sTUFBTSxLQUFLLFNBQVEsVUFBVTtBQUN4QztBQXVIQSxrQkFBa0IsT0FBTSxNQUFNO0FBQzFCLFNBQU8sS0FBSztBQUNaLE1BQUksTUFBSyxjQUFjO0FBQ25CLFVBQUssT0FBTztBQUNwQjtBQUNBLHlCQUF5QixPQUFPLE9BQU87QUFDbkMsUUFBTSxRQUFRLFNBQVMsT0FBTyxLQUFLO0FBQ3ZDO0FBU0EsbUJBQW1CLE1BQU0sS0FBSyxPQUFPLFdBQVc7QUFDNUMsT0FBSyxNQUFNLFlBQVksS0FBSyxPQUFPLFlBQVksY0FBYyxFQUFFO0FBQ25FO0FBQ0EsdUJBQXVCLFFBQVEsT0FBTztBQUNsQyxXQUFTLElBQUksR0FBRyxJQUFJLE9BQU8sUUFBUSxRQUFRLEtBQUssR0FBRztBQUMvQyxVQUFNLFNBQVMsT0FBTyxRQUFRO0FBQzlCLFFBQUksT0FBTyxZQUFZLE9BQU87QUFDMUIsYUFBTyxXQUFXO0FBQ2xCO0FBQUEsSUFDSjtBQUFBLEVBQ0o7QUFDQSxTQUFPLGdCQUFnQjtBQUMzQjtBQU9BLHNCQUFzQixRQUFRO0FBQzFCLFFBQU0sa0JBQWtCLE9BQU8sY0FBYyxVQUFVLEtBQUssT0FBTyxRQUFRO0FBQzNFLFNBQU8sbUJBQW1CLGdCQUFnQjtBQUM5QztBQTBRQSxJQUFJO0FBQ0osK0JBQStCLFdBQVc7QUFDdEMsc0JBQW9CO0FBQ3hCO0FBQ0EsaUNBQWlDO0FBQzdCLE1BQUksQ0FBQztBQUNELFVBQU0sSUFBSSxNQUFNLGtEQUFrRDtBQUN0RSxTQUFPO0FBQ1g7QUFJQSxpQkFBaUIsSUFBSTtBQUNqQix3QkFBc0IsRUFBRSxHQUFHLFNBQVMsS0FBSyxFQUFFO0FBQy9DO0FBNENBLElBQU0sbUJBQW1CLENBQUM7QUFFMUIsSUFBTSxvQkFBb0IsQ0FBQztBQUMzQixJQUFNLG1CQUFtQixDQUFDO0FBQzFCLElBQU0sa0JBQWtCLENBQUM7QUFDekIsSUFBTSxtQkFBbUIsUUFBUSxRQUFRO0FBQ3pDLElBQUksbUJBQW1CO0FBQ3ZCLDJCQUEyQjtBQUN2QixNQUFJLENBQUMsa0JBQWtCO0FBQ25CLHVCQUFtQjtBQUNuQixxQkFBaUIsS0FBSyxLQUFLO0FBQUEsRUFDL0I7QUFDSjtBQUtBLDZCQUE2QixJQUFJO0FBQzdCLG1CQUFpQixLQUFLLEVBQUU7QUFDNUI7QUFJQSxJQUFJLFdBQVc7QUFDZixJQUFNLGlCQUFpQixvQkFBSSxJQUFJO0FBQy9CLGlCQUFpQjtBQUNiLE1BQUk7QUFDQTtBQUNKLGFBQVc7QUFDWCxLQUFHO0FBR0MsYUFBUyxJQUFJLEdBQUcsSUFBSSxpQkFBaUIsUUFBUSxLQUFLLEdBQUc7QUFDakQsWUFBTSxZQUFZLGlCQUFpQjtBQUNuQyw0QkFBc0IsU0FBUztBQUMvQixhQUFPLFVBQVUsRUFBRTtBQUFBLElBQ3ZCO0FBQ0EsMEJBQXNCLElBQUk7QUFDMUIscUJBQWlCLFNBQVM7QUFDMUIsV0FBTyxrQkFBa0I7QUFDckIsd0JBQWtCLElBQUksRUFBRTtBQUk1QixhQUFTLElBQUksR0FBRyxJQUFJLGlCQUFpQixRQUFRLEtBQUssR0FBRztBQUNqRCxZQUFNLFdBQVcsaUJBQWlCO0FBQ2xDLFVBQUksQ0FBQyxlQUFlLElBQUksUUFBUSxHQUFHO0FBRS9CLHVCQUFlLElBQUksUUFBUTtBQUMzQixpQkFBUztBQUFBLE1BQ2I7QUFBQSxJQUNKO0FBQ0EscUJBQWlCLFNBQVM7QUFBQSxFQUM5QixTQUFTLGlCQUFpQjtBQUMxQixTQUFPLGdCQUFnQixRQUFRO0FBQzNCLG9CQUFnQixJQUFJLEVBQUU7QUFBQSxFQUMxQjtBQUNBLHFCQUFtQjtBQUNuQixhQUFXO0FBQ1gsaUJBQWUsTUFBTTtBQUN6QjtBQUNBLGdCQUFnQixJQUFJO0FBQ2hCLE1BQUksR0FBRyxhQUFhLE1BQU07QUFDdEIsT0FBRyxPQUFPO0FBQ1YsWUFBUSxHQUFHLGFBQWE7QUFDeEIsVUFBTSxRQUFRLEdBQUc7QUFDakIsT0FBRyxRQUFRLENBQUMsRUFBRTtBQUNkLE9BQUcsWUFBWSxHQUFHLFNBQVMsRUFBRSxHQUFHLEtBQUssS0FBSztBQUMxQyxPQUFHLGFBQWEsUUFBUSxtQkFBbUI7QUFBQSxFQUMvQztBQUNKO0FBZUEsSUFBTSxXQUFXLG9CQUFJLElBQUk7QUFDekIsSUFBSTtBQUNKLHdCQUF3QjtBQUNwQixXQUFTO0FBQUEsSUFDTCxHQUFHO0FBQUEsSUFDSCxHQUFHLENBQUM7QUFBQSxJQUNKLEdBQUc7QUFBQSxFQUNQO0FBQ0o7QUFDQSx3QkFBd0I7QUFDcEIsTUFBSSxDQUFDLE9BQU8sR0FBRztBQUNYLFlBQVEsT0FBTyxDQUFDO0FBQUEsRUFDcEI7QUFDQSxXQUFTLE9BQU87QUFDcEI7QUFDQSx1QkFBdUIsT0FBTyxPQUFPO0FBQ2pDLE1BQUksU0FBUyxNQUFNLEdBQUc7QUFDbEIsYUFBUyxPQUFPLEtBQUs7QUFDckIsVUFBTSxFQUFFLEtBQUs7QUFBQSxFQUNqQjtBQUNKO0FBQ0Esd0JBQXdCLE9BQU8sT0FBTyxTQUFRLFVBQVU7QUFDcEQsTUFBSSxTQUFTLE1BQU0sR0FBRztBQUNsQixRQUFJLFNBQVMsSUFBSSxLQUFLO0FBQ2xCO0FBQ0osYUFBUyxJQUFJLEtBQUs7QUFDbEIsV0FBTyxFQUFFLEtBQUssTUFBTTtBQUNoQixlQUFTLE9BQU8sS0FBSztBQUNyQixVQUFJLFVBQVU7QUFDVixZQUFJO0FBQ0EsZ0JBQU0sRUFBRSxDQUFDO0FBQ2IsaUJBQVM7QUFBQSxNQUNiO0FBQUEsSUFDSixDQUFDO0FBQ0QsVUFBTSxFQUFFLEtBQUs7QUFBQSxFQUNqQjtBQUNKO0FBcVRBLElBQU0sVUFBVyxPQUFPLFdBQVcsY0FDN0IsU0FDQSxPQUFPLGVBQWUsY0FDbEIsYUFDQTtBQXlHViwyQkFBMkIsU0FBUSxTQUFTO0FBQ3hDLFFBQU0sVUFBUyxDQUFDO0FBQ2hCLFFBQU0sY0FBYyxDQUFDO0FBQ3JCLFFBQU0sZ0JBQWdCLEVBQUUsU0FBUyxFQUFFO0FBQ25DLE1BQUksSUFBSSxRQUFPO0FBQ2YsU0FBTyxLQUFLO0FBQ1IsVUFBTSxJQUFJLFFBQU87QUFDakIsVUFBTSxJQUFJLFFBQVE7QUFDbEIsUUFBSSxHQUFHO0FBQ0gsaUJBQVcsT0FBTyxHQUFHO0FBQ2pCLFlBQUksQ0FBRSxRQUFPO0FBQ1Qsc0JBQVksT0FBTztBQUFBLE1BQzNCO0FBQ0EsaUJBQVcsT0FBTyxHQUFHO0FBQ2pCLFlBQUksQ0FBQyxjQUFjLE1BQU07QUFDckIsa0JBQU8sT0FBTyxFQUFFO0FBQ2hCLHdCQUFjLE9BQU87QUFBQSxRQUN6QjtBQUFBLE1BQ0o7QUFDQSxjQUFPLEtBQUs7QUFBQSxJQUNoQixPQUNLO0FBQ0QsaUJBQVcsT0FBTyxHQUFHO0FBQ2pCLHNCQUFjLE9BQU87QUFBQSxNQUN6QjtBQUFBLElBQ0o7QUFBQSxFQUNKO0FBQ0EsYUFBVyxPQUFPLGFBQWE7QUFDM0IsUUFBSSxDQUFFLFFBQU87QUFDVCxjQUFPLE9BQU87QUFBQSxFQUN0QjtBQUNBLFNBQU87QUFDWDtBQUNBLDJCQUEyQixjQUFjO0FBQ3JDLFNBQU8sT0FBTyxpQkFBaUIsWUFBWSxpQkFBaUIsT0FBTyxlQUFlLENBQUM7QUFDdkY7QUEySkEsMEJBQTBCLE9BQU87QUFDN0IsV0FBUyxNQUFNLEVBQUU7QUFDckI7QUFJQSx5QkFBeUIsV0FBVyxRQUFRLFFBQVEsZUFBZTtBQUMvRCxRQUFNLEVBQUUsVUFBVSxVQUFVLFlBQVksaUJBQWlCLFVBQVU7QUFDbkUsY0FBWSxTQUFTLEVBQUUsUUFBUSxNQUFNO0FBQ3JDLE1BQUksQ0FBQyxlQUFlO0FBRWhCLHdCQUFvQixNQUFNO0FBQ3RCLFlBQU0saUJBQWlCLFNBQVMsSUFBSSxHQUFHLEVBQUUsT0FBTyxXQUFXO0FBQzNELFVBQUksWUFBWTtBQUNaLG1CQUFXLEtBQUssR0FBRyxjQUFjO0FBQUEsTUFDckMsT0FDSztBQUdELGdCQUFRLGNBQWM7QUFBQSxNQUMxQjtBQUNBLGdCQUFVLEdBQUcsV0FBVyxDQUFDO0FBQUEsSUFDN0IsQ0FBQztBQUFBLEVBQ0w7QUFDQSxlQUFhLFFBQVEsbUJBQW1CO0FBQzVDO0FBQ0EsMkJBQTJCLFdBQVcsV0FBVztBQUM3QyxRQUFNLEtBQUssVUFBVTtBQUNyQixNQUFJLEdBQUcsYUFBYSxNQUFNO0FBQ3RCLFlBQVEsR0FBRyxVQUFVO0FBQ3JCLE9BQUcsWUFBWSxHQUFHLFNBQVMsRUFBRSxTQUFTO0FBR3RDLE9BQUcsYUFBYSxHQUFHLFdBQVc7QUFDOUIsT0FBRyxNQUFNLENBQUM7QUFBQSxFQUNkO0FBQ0o7QUFDQSxvQkFBb0IsV0FBVyxHQUFHO0FBQzlCLE1BQUksVUFBVSxHQUFHLE1BQU0sT0FBTyxJQUFJO0FBQzlCLHFCQUFpQixLQUFLLFNBQVM7QUFDL0Isb0JBQWdCO0FBQ2hCLGNBQVUsR0FBRyxNQUFNLEtBQUssQ0FBQztBQUFBLEVBQzdCO0FBQ0EsWUFBVSxHQUFHLE1BQU8sSUFBSSxLQUFNLE1BQU8sS0FBTSxJQUFJO0FBQ25EO0FBQ0EsY0FBYyxXQUFXLFNBQVMsWUFBVSxtQkFBaUIsV0FBVyxPQUFPLGdCQUFlLFFBQVEsQ0FBQyxFQUFFLEdBQUc7QUFDeEcsUUFBTSxtQkFBbUI7QUFDekIsd0JBQXNCLFNBQVM7QUFDL0IsUUFBTSxLQUFLLFVBQVUsS0FBSztBQUFBLElBQ3RCLFVBQVU7QUFBQSxJQUNWLEtBQUs7QUFBQSxJQUVMO0FBQUEsSUFDQSxRQUFRO0FBQUEsSUFDUjtBQUFBLElBQ0EsT0FBTyxhQUFhO0FBQUEsSUFFcEIsVUFBVSxDQUFDO0FBQUEsSUFDWCxZQUFZLENBQUM7QUFBQSxJQUNiLGVBQWUsQ0FBQztBQUFBLElBQ2hCLGVBQWUsQ0FBQztBQUFBLElBQ2hCLGNBQWMsQ0FBQztBQUFBLElBQ2YsU0FBUyxJQUFJLElBQUksUUFBUSxXQUFZLG9CQUFtQixpQkFBaUIsR0FBRyxVQUFVLENBQUMsRUFBRTtBQUFBLElBRXpGLFdBQVcsYUFBYTtBQUFBLElBQ3hCO0FBQUEsSUFDQSxZQUFZO0FBQUEsSUFDWixNQUFNLFFBQVEsVUFBVSxpQkFBaUIsR0FBRztBQUFBLEVBQ2hEO0FBQ0Esb0JBQWlCLGVBQWMsR0FBRyxJQUFJO0FBQ3RDLE1BQUksUUFBUTtBQUNaLEtBQUcsTUFBTSxhQUNILFdBQVMsV0FBVyxRQUFRLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLFNBQVM7QUFDNUQsVUFBTSxRQUFRLEtBQUssU0FBUyxLQUFLLEtBQUs7QUFDdEMsUUFBSSxHQUFHLE9BQU8sVUFBVSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksS0FBSyxLQUFLLEdBQUc7QUFDbkQsVUFBSSxDQUFDLEdBQUcsY0FBYyxHQUFHLE1BQU07QUFDM0IsV0FBRyxNQUFNLEdBQUcsS0FBSztBQUNyQixVQUFJO0FBQ0EsbUJBQVcsV0FBVyxDQUFDO0FBQUEsSUFDL0I7QUFDQSxXQUFPO0FBQUEsRUFDWCxDQUFDLElBQ0MsQ0FBQztBQUNQLEtBQUcsT0FBTztBQUNWLFVBQVE7QUFDUixVQUFRLEdBQUcsYUFBYTtBQUV4QixLQUFHLFdBQVcsb0JBQWtCLGtCQUFnQixHQUFHLEdBQUcsSUFBSTtBQUMxRCxNQUFJLFFBQVEsUUFBUTtBQUNoQixRQUFJLFFBQVEsU0FBUztBQUNqQixzQkFBZ0I7QUFDaEIsWUFBTSxRQUFRLFNBQVMsUUFBUSxNQUFNO0FBRXJDLFNBQUcsWUFBWSxHQUFHLFNBQVMsRUFBRSxLQUFLO0FBQ2xDLFlBQU0sUUFBUSxNQUFNO0FBQUEsSUFDeEIsT0FDSztBQUVELFNBQUcsWUFBWSxHQUFHLFNBQVMsRUFBRTtBQUFBLElBQ2pDO0FBQ0EsUUFBSSxRQUFRO0FBQ1Isb0JBQWMsVUFBVSxHQUFHLFFBQVE7QUFDdkMsb0JBQWdCLFdBQVcsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLGFBQWE7QUFDaEYsa0JBQWM7QUFDZCxVQUFNO0FBQUEsRUFDVjtBQUNBLHdCQUFzQixnQkFBZ0I7QUFDMUM7QUFDQSxJQUFJO0FBQ0osSUFBSSxPQUFPLGdCQUFnQixZQUFZO0FBQ25DLGtCQUFnQixjQUFjLFlBQVk7QUFBQSxJQUN0QyxjQUFjO0FBQ1YsWUFBTTtBQUNOLFdBQUssYUFBYSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQUEsSUFDdEM7QUFBQSxJQUNBLG9CQUFvQjtBQUNoQixZQUFNLEVBQUUsYUFBYSxLQUFLO0FBQzFCLFdBQUssR0FBRyxnQkFBZ0IsU0FBUyxJQUFJLEdBQUcsRUFBRSxPQUFPLFdBQVc7QUFFNUQsaUJBQVcsT0FBTyxLQUFLLEdBQUcsU0FBUztBQUUvQixhQUFLLFlBQVksS0FBSyxHQUFHLFFBQVEsSUFBSTtBQUFBLE1BQ3pDO0FBQUEsSUFDSjtBQUFBLElBQ0EseUJBQXlCLE9BQU0sV0FBVyxVQUFVO0FBQ2hELFdBQUssU0FBUTtBQUFBLElBQ2pCO0FBQUEsSUFDQSx1QkFBdUI7QUFDbkIsY0FBUSxLQUFLLEdBQUcsYUFBYTtBQUFBLElBQ2pDO0FBQUEsSUFDQSxXQUFXO0FBQ1Asd0JBQWtCLE1BQU0sQ0FBQztBQUN6QixXQUFLLFdBQVc7QUFBQSxJQUNwQjtBQUFBLElBQ0EsSUFBSSxPQUFNLFVBQVU7QUFFaEIsWUFBTSxZQUFhLEtBQUssR0FBRyxVQUFVLFVBQVUsTUFBSyxHQUFHLFVBQVUsU0FBUSxDQUFDO0FBQzFFLGdCQUFVLEtBQUssUUFBUTtBQUN2QixhQUFPLE1BQU07QUFDVCxjQUFNLFNBQVEsVUFBVSxRQUFRLFFBQVE7QUFDeEMsWUFBSSxXQUFVO0FBQ1Ysb0JBQVUsT0FBTyxRQUFPLENBQUM7QUFBQSxNQUNqQztBQUFBLElBQ0o7QUFBQSxJQUNBLEtBQUssU0FBUztBQUNWLFVBQUksS0FBSyxTQUFTLENBQUMsU0FBUyxPQUFPLEdBQUc7QUFDbEMsYUFBSyxHQUFHLGFBQWE7QUFDckIsYUFBSyxNQUFNLE9BQU87QUFDbEIsYUFBSyxHQUFHLGFBQWE7QUFBQSxNQUN6QjtBQUFBLElBQ0o7QUFBQSxFQUNKO0FBQ0o7QUFJQSxJQUFNLGtCQUFOLE1BQXNCO0FBQUEsRUFDbEIsV0FBVztBQUNQLHNCQUFrQixNQUFNLENBQUM7QUFDekIsU0FBSyxXQUFXO0FBQUEsRUFDcEI7QUFBQSxFQUNBLElBQUksT0FBTSxVQUFVO0FBQ2hCLFVBQU0sWUFBYSxLQUFLLEdBQUcsVUFBVSxVQUFVLE1BQUssR0FBRyxVQUFVLFNBQVEsQ0FBQztBQUMxRSxjQUFVLEtBQUssUUFBUTtBQUN2QixXQUFPLE1BQU07QUFDVCxZQUFNLFNBQVEsVUFBVSxRQUFRLFFBQVE7QUFDeEMsVUFBSSxXQUFVO0FBQ1Ysa0JBQVUsT0FBTyxRQUFPLENBQUM7QUFBQSxJQUNqQztBQUFBLEVBQ0o7QUFBQSxFQUNBLEtBQUssU0FBUztBQUNWLFFBQUksS0FBSyxTQUFTLENBQUMsU0FBUyxPQUFPLEdBQUc7QUFDbEMsV0FBSyxHQUFHLGFBQWE7QUFDckIsV0FBSyxNQUFNLE9BQU87QUFDbEIsV0FBSyxHQUFHLGFBQWE7QUFBQSxJQUN6QjtBQUFBLEVBQ0o7QUFDSjs7O0FDdjJEQSx5QkFBMkI7QUFDM0Isd0JBQTZCO0FBQzdCLHVCQUEyRDs7O0FDRDNELHVCQUFzQjtBQUN0Qix1QkFBOEI7OztBQ0Y5Qix1QkFBcUI7QUFDckIsdUJBS087OztBQ05QLHVCQUFxQjtBQXdCZCxJQUFNLFdBQVcsQ0FBQyxVQUFpQixNQUFLLFFBQVEsU0FBUyxFQUFFO0FBQzNELElBQU0sY0FBYyxDQUFDLE9BQWMsYUFDeEMsU0FBUyxtQkFDTCxNQUFLLE1BQU0sU0FBUyxvQkFBb0IsRUFBRSxLQUFLLElBQy9DO0FBRUMsSUFBTSxtQkFBbUIsQ0FBQyxPQUFjLGFBQzdDLFlBQVksU0FBUyxLQUFJLEdBQUcsUUFBUTtBQUUvQixJQUFNLGFBQWEsQ0FBQyxVQUN6QixNQUFLLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLEtBQUssR0FBRztBQUVsRCxJQUFNLGVBQWUsQ0FBQyxXQUE2QjtBQUN4RCxNQUFJLENBQUMsVUFBVSxXQUFXO0FBQUksV0FBTyxDQUFDO0FBQUE7QUFDakMsV0FBTyxPQUFPLE1BQU0sR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO0FBQ3ZEO0FBU08sa0JBQ0wsS0FDQSxhQUNBLFNBQWlCLElBQ0Q7QUFDaEIsUUFBTSxRQUF1QixDQUFDLEdBQUcsR0FBRztBQUNwQyxRQUFNLGFBQWEsTUFBSztBQUN4QixNQUFJLGFBQWE7QUFDZixVQUFNLElBQUksTUFBTSw2Q0FBNkM7QUFBQSxXQUN0RCxlQUFlO0FBQWEsV0FBTztBQUFBLE9BQ3ZDO0FBQ0gsYUFBUyxJQUFJLFlBQVksSUFBSSxhQUFhO0FBQUssWUFBSyxLQUFLLE1BQU07QUFDL0QsV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQU9PLG1CQUFzQixJQUFpQjtBQUM1QyxRQUFNLE9BQU8sR0FBRSxHQUFHO0FBQ2xCLFFBQU0sS0FBWSxDQUFDO0FBRW5CLFdBQVMsSUFBSSxHQUFHLElBQUksTUFBTTtBQUFLLE9BQUcsS0FBSyxHQUFFLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO0FBRTdELFNBQU87QUFDVDtBQWNPLGNBQ0wsS0FDa0Q7QUFDbEQsUUFBTSxRQUF5RCxDQUFDO0FBQ2hFLE1BQUksSUFBSTtBQUNSLFNBQU8sSUFBSSxJQUFJLFFBQVE7QUFDckIsVUFBTSxZQUFZLElBQUk7QUFDdEIsVUFBSyxLQUFLLEVBQUUsT0FBTyxXQUFXLE9BQU8sR0FBRyxNQUFNLE9BQVUsQ0FBQztBQUN6RCxXQUFPLGNBQWMsSUFBSSxJQUFJO0FBQzNCO0FBQUEsSUFDRjtBQUNBLFVBQUssS0FBSyxFQUFFLE9BQU8sSUFBSTtBQUFBLEVBQ3pCO0FBQ0EsU0FBTztBQUNUO0FBNkNPLG1CQUFzQixHQUFXLEdBQVcsS0FBVTtBQUMzRCxRQUFNLE9BQU0sSUFBSSxTQUFTO0FBQ3pCLE1BQUksSUFBSSxLQUFLLElBQUksUUFBTyxJQUFJLEtBQUssSUFBSTtBQUFLLFdBQU87QUFDakQsUUFBTSxNQUFNLElBQUk7QUFDaEIsTUFBSSxLQUFLLElBQUk7QUFDYixNQUFJLEtBQUs7QUFDVCxTQUFPO0FBQ1Q7QUFTTyxvQkFBb0IsT0FBZTtBQUN4QyxRQUFNLFFBQVEsTUFBTSxNQUFNLFNBQVM7QUFDbkMsTUFBSSxDQUFDO0FBQU8sV0FBTztBQUNuQixRQUFNLENBQUMsRUFBRSxZQUFZLFNBQVM7QUFDOUIsTUFBSTtBQUNGLFVBQU0sUUFBUSxJQUFJLE9BQU8sWUFBWSxLQUFLO0FBQzFDLFdBQU87QUFBQSxFQUNULFNBQVMsR0FBUDtBQUNBLCtCQUFLLENBQUM7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUNGO0FBR08scUJBQXFCLFFBQVE7QUFDbEMsU0FBTyxPQUFPLFFBQVEsMEJBQTBCLE1BQU07QUFDeEQ7OztBRHJLTyxJQUFNLGNBQWMsTUFBTSxJQUFJLFFBQVEsUUFBUSxZQUFZO0FBRTFELElBQU0sY0FBYyxNQUFvQixJQUFJLFVBQVUsY0FBYztBQU1wRSxJQUFNLG9CQUFvQixDQUFDLFVBQWlCO0FBQ2pELFFBQU0sYUFBYSxNQUFLLE1BQU0sR0FBRyxFQUFFLEtBQUs7QUFDeEMsTUFBSSxXQUFXLFNBQVMsS0FBSyxHQUFHO0FBQzlCLFdBQU8sV0FBVyxNQUFNLEtBQUssRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLEtBQUssR0FBRztBQUFBLEVBQ3REO0FBQU8sV0FBTztBQUNoQjtBQUVPLElBQU0sZ0JBQWdCLENBQUMsU0FBZ0IsS0FBSyxZQUFZLEtBQUs7QUFDN0QsSUFBTSxnQkFBZ0IsQ0FBQyxTQUFxQjtBQWhDbkQ7QUFrQ0UsNkNBQU0sV0FBTixtQkFBYyxTQUFRLEtBQUs7QUFBQTtBQUV0QixrQkFBa0IsS0FBYSxRQUFRLE1BQU07QUFDbEQsTUFBSSxRQUFPLElBQUksTUFBTTtBQUNyQixNQUFJLE9BQU87QUFDVCxZQUFPLE9BQU87QUFDZCxhQUFRO0FBQUEsRUFDVjtBQUNBLFNBQU87QUFDVDtBQUVPLHVCQUF1QixLQUFhO0FBQ3pDLE1BQUksUUFBTyxJQUFJLE1BQU07QUFDckIsTUFBSSxNQUFLLFdBQVcsSUFBSSxLQUFLLE1BQUssU0FBUyxJQUFJO0FBQUcsWUFBTyxNQUFLLE1BQU0sR0FBRyxFQUFFO0FBQ3pFLFNBQU87QUFDVDtBQVVPLElBQU0scUJBQXFCLE9BQ2hDLEtBQ0EsT0FDQSxNQUNBLGFBQ0EsUUFDRztBQUNILFFBQU0sV0FBVyxNQUFNLFNBQVM7QUFFaEMsTUFBSSxDQUFDLGVBQWUsWUFBWSxTQUFTLFFBQVc7QUFDbEQsK0JBQUssYUFBYSxRQUFRLFVBQVU7QUFDcEMsVUFBTSxJQUFJLG1CQUFtQixLQUFLLEtBQUssY0FBYyxJQUFJO0FBQUEsRUFDM0QsV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxRQUFRLE9BQU8sUUFBUSxHQUFHO0FBQ3pFLCtCQUFLLGlCQUFpQjtBQUN0QjtBQUFBLEVBQ0YsT0FBTztBQUNMLFVBQU0sZUFBeUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUM7QUFDN0QsVUFBTSxXQUFXLENBQUMsR0FBRyxjQUFjLElBQUksV0FBVztBQUNsRCwrQkFBSyxhQUFhLFFBQVEsVUFBVTtBQUNwQyxVQUFNLElBQUksT0FBTyxLQUFLLElBQUksU0FBUyxLQUFLLElBQUksTUFBTSxJQUFJO0FBQUEsRUFDeEQ7QUFDRjtBQUVPLG9CQUFvQixNQUFjLEtBQWEsUUFBd0I7QUFDNUUsTUFBSSxTQUFTLElBQUk7QUFDZixXQUFPLEdBQUcsVUFBVTtBQUFBLEVBQ3RCLE9BQU87QUFDTCxVQUFNLFNBQWlDLGdDQUFVLElBQUk7QUFDckQsVUFBTSxRQUFRLE9BQU87QUFDckIsUUFBSSxVQUFVLFFBQVc7QUFDdkIsYUFBTyxPQUFPO0FBQUEsSUFDaEIsV0FBVyxPQUFPLFVBQVUsWUFBWSxVQUFVLFFBQVE7QUFDeEQsYUFBTyxPQUFPLENBQUMsT0FBTyxNQUFNO0FBQUEsSUFDOUIsV0FDRSxPQUFPLGdDQUFRLFFBQU8sWUFDdEIsTUFBTSxZQUNOLENBQUMsTUFBTSxTQUFTLE1BQU0sR0FDdEI7QUFDQSxhQUFPLE9BQU8sQ0FBQyxHQUFHLE9BQU8sTUFBTTtBQUFBLElBQ2pDO0FBRUEsV0FBTyxvQ0FBYyxNQUFNO0FBQUEsRUFDN0I7QUFDRjtBQUVPLHNCQUFxQixTQUFtQztBQUM3RCxNQUFJLENBQUMsUUFBUSxXQUFXLE9BQU87QUFBRyxXQUFPLENBQUMsSUFBSSxPQUFPO0FBQUEsT0FDaEQ7QUFDSCxVQUFNLFNBQVMsUUFBUSxNQUFNLEtBQUs7QUFDbEMsV0FBTztBQUFBLE1BQ0wsT0FBTyxNQUFNLEdBQUcsQ0FBQyxFQUFFLEtBQUssS0FBSyxJQUFJO0FBQUEsTUFDakMsT0FBTyxNQUFNLENBQUMsRUFBRSxLQUFLLEtBQUs7QUFBQSxJQUM1QjtBQUFBLEVBQ0Y7QUFDRjtBQUVPLElBQU0sV0FBVyxDQUFDLFFBQ3ZCLElBQUksV0FBVyxHQUFHLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSTtBQUVoQyxJQUFNLFVBQVUsQ0FBQyxRQUFpQixJQUFJLFdBQVcsR0FBRyxJQUFJLE1BQU0sSUFBSTtBQUVsRSxnQkFBZ0IsTUFBYyxRQUFpQztBQXhIdEU7QUF5SEUsUUFBTSxFQUFFLGVBQWUsbUJBQW1CLE9BQU87QUFDakQsTUFBSSxjQUFjLFFBQVE7QUFDeEIsVUFBTSxPQUFPLElBQUksY0FBYyxxQkFBcUIsTUFBTSxFQUFFO0FBQzVELFFBQUksTUFBTTtBQUNSLFlBQU0sV0FBVyxJQUFJLGNBQWMsYUFBYSxJQUFJO0FBQ3BELGlCQUFXLFlBQVksZUFBZTtBQUNwQyxjQUFNLFFBQVEsMkNBQVUsZ0JBQVYsbUJBQXdCO0FBRXRDLGNBQU0sTUFDSixPQUFPLFVBQVUsV0FBVyxhQUFhLEtBQUssSUFBSTtBQUNwRCxZQUFJO0FBQU8saUJBQU8saUJBQWlCLElBQUksS0FBSyxJQUFJLElBQUksSUFBSTtBQUFBLE1BQzFEO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBTyxXQUFPO0FBQ2hCO0FBRUEsNEJBQW1DLFFBQWtCO0FBeklyRDtBQTBJRSxNQUFJLElBQUksUUFBUSxlQUFlLElBQUksVUFBVSxHQUFHO0FBQzlDLFFBQUk7QUFDSixXQUFPLENBQUMsWUFBWSxDQUFDLElBQUksUUFBUSxRQUFRLFNBQVMsSUFBSSxLQUFLLFFBQVEsR0FBRztBQUNwRSxZQUFNLEtBQUssR0FBRztBQUNkLGlCQUFXLGtCQUFZLE1BQVosbUJBQWU7QUFBQSxJQUM1QjtBQUFBLEVBQ0YsT0FBTztBQUNMLFVBQU0scUJBQXFCLEdBQUc7QUFBQSxFQUNoQztBQUNGO0FBRU8sSUFBTSxZQUFZLENBQUMsSUFBWSxRQUFRLFNBQzVDLHlCQUF5QixVQUFVLEVBQUUsSUFBSSxLQUFLLG1CQUFtQixRQUFRLEtBQUs7QUFHekUsSUFBTSxXQUFXLENBQUMsV0FBa0I7QUF6SjNDO0FBMEpFLG1CQUFJLFFBQVEsUUFBUSxhQUFwQixtQkFBOEI7QUFBQTtBQUV6Qix3QkFBd0M7QUFDN0MsUUFBTSxFQUFFLFdBQVcsa0JBQWtCO0FBQ3JDLFFBQU0sRUFBRSxlQUFlO0FBQ3ZCLFFBQU07QUFBQSxJQUNKLE9BQU8sRUFBRTtBQUFBLE1BQ1AsV0FBVyxhQUFhO0FBRTVCLE1BQUksU0FBUztBQUFVLFdBQU87QUFFOUIsUUFBTSxFQUFFLFdBQVcsV0FBVztBQUU5QixRQUFNLE9BQU8sWUFBWTtBQUN6QixNQUFJLENBQUM7QUFBTSxXQUFPO0FBRWxCLFFBQU0sRUFBRSxnQkFBZ0IsY0FBYyxhQUFhLElBQUk7QUFDdkQsTUFBSSxDQUFDO0FBQWEsV0FBTztBQUV6QixRQUFNLEVBQUUsZUFBTyxRQUFRLFlBQVk7QUFDbkMsUUFBTSxVQUFVLE9BQU8sWUFBWSxPQUFPLFVBQVUsQ0FBQztBQUNyRCxNQUFJLFdBQVcsT0FBTSxVQUFVLFdBQVcsSUFBSTtBQUFRLFdBQU87QUFBQTtBQUN4RCxXQUFPO0FBQ2Q7OztBRWpMQSx3QkFBa0M7QUFDbEMsa0NBQTRCO0FBRTVCLHVCQUFxQjs7O0FDTWQsbUJBQ0wsV0FDQSxNQUEwQixPQUMxQjtBQUNBLFFBQU0sU0FBbUIsQ0FBQztBQUMxQixZQUFVLFFBQVEsQ0FBQyxTQUFTO0FBQzFCLFFBQUksUUFBUSxPQUFPO0FBQ2pCLGlCQUFXLFFBQVEsQ0FBQyxZQUFZO0FBQzlCLGVBQU8sS0FBSyxHQUFHLEtBQUssUUFBUTtBQUFBLE1BQzlCLENBQUM7QUFBQSxJQUNILE9BQU87QUFDTCxhQUFPLEtBQUssR0FBRyxLQUFLLElBQUk7QUFBQSxJQUMxQjtBQUFBLEVBQ0YsQ0FBQztBQUNELFNBQU87QUFDVDtBQUVPLElBQU0sWUFBWSxDQUFDLFFBQWdDO0FBQ3hELFVBQVE7QUFBQSxTQUNEO0FBQ0gsYUFBTztBQUFBLFNBQ0o7QUFDSCxhQUFPO0FBQUEsU0FDSjtBQUNILGFBQU87QUFBQSxTQUNKO0FBQ0gsYUFBTztBQUFBLFNBQ0o7QUFDSCxhQUFPO0FBQUE7QUFFYjtBQUtPLHNCQUFzQixXQUF1QixPQUFlO0FBQ2pFLE1BQUk7QUFDSixNQUFJO0FBRUosYUFBVyxRQUFRLENBQUMsUUFBb0I7QUFDdEMsY0FBVSxRQUFRLENBQUMsU0FBUztBQUMxQixVQUFJLEtBQUssS0FBSyxTQUFTLEtBQUssR0FBRztBQUM3QixtQkFBVztBQUNYLG9CQUFZO0FBQ1o7QUFBQSxNQUNGO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0QsU0FBTyxFQUFFLFdBQVcsU0FBUztBQUMvQjtBQUVPLHNCQUNMLFdBQ0EsT0FDQSxLQUNBO0FBRUEsTUFBSSxNQUFNLFNBQVMsR0FBRztBQUFHLFdBQU8sQ0FBQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFFbkQsUUFBTSxZQUFZLENBQUMsaUJBQWlCLE9BQU8sR0FBRyxDQUFDO0FBQy9DLFFBQU0sRUFBRSxXQUFXLGFBQWEsYUFBYSxXQUFXLEtBQUs7QUFDN0QsTUFBSSxDQUFDLGFBQWEsQ0FBQztBQUFVLFdBQU87QUFFcEMsUUFBTSxTQUFTLFVBQVUsUUFBUTtBQUNqQyxZQUFVLFFBQVEsR0FBRyxVQUFVLE9BQU87QUFDdEMsU0FBTztBQUNUO0FBRU8sSUFBTSxZQUFZLENBQUMsU0FDeEIsV0FBVyxJQUNULENBQUMsUUFBUSxHQUFHLGlCQUFpQixTQUFTLEtBQUssS0FBSyxLQUFLLElBQUksR0FDM0QsRUFBRSxLQUFLLElBQUk7QUFFTixJQUFNLGdCQUFnQixDQUFDLE9BQWUsUUFDM0MsR0FBRyxVQUFVLGlCQUFpQjtBQUN6QixJQUFNLG1CQUFtQixDQUFDLE9BQWUsUUFDOUMsR0FBRyxVQUFVLGlCQUFpQixVQUFVLEdBQUc7QUFFdEMsc0JBQ0wsV0FDQSxJQUNBO0FBQ0EsWUFBVSxRQUFRLENBQUMsU0FBUztBQUMxQixlQUFXLFFBQVEsQ0FBQyxRQUFRO0FBQzFCLFdBQUssS0FBSyxRQUFRLENBQUMsVUFBVTtBQUMzQixXQUFHLE1BQU0sS0FBSyxLQUFLO0FBQUEsTUFDckIsQ0FBQztBQUFBLElBQ0gsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUNIOzs7QUR2RU8sMkJBQ0wsTUFDQSxTQUNZO0FBQ1osUUFBTSxVQUFVLEtBQUssS0FBSztBQUMxQixVQUFRLFlBQVksQ0FBQyxLQUFLLElBQUcsR0FBRyxNQUFNO0FBQ3BDLFlBQVEsVUFBVSxHQUFHLEdBQUcsRUFBQztBQUFBLEVBQzNCLENBQUM7QUFDRCxTQUFPO0FBQ1Q7QUFDTyw2QkFBNkIsR0FBZTtBQUNqRCxRQUFNLFFBQU8sRUFBRSxLQUFLO0FBQ3BCLFFBQUssWUFBWSxDQUFDLFNBQVM7QUFDekIsUUFBSSxDQUFDLE1BQUssT0FBTyxJQUFJO0FBQUcsWUFBSyxTQUFTLElBQUk7QUFBQSxFQUM1QyxDQUFDO0FBQ0QsU0FBTztBQUNUO0FBU08sc0JBQXNCLE1BQWtCLE1BQW9CO0FBQ2pFLFFBQU0sTUFBTSxJQUFJLDZCQUFXO0FBQzNCLHlCQUFHLFlBQVksQ0FBQyxHQUFHLElBQUcsR0FBRyxNQUFNO0FBQzdCLFFBQUksS0FBSyxTQUFTLEdBQUUsR0FBRyxHQUFHO0FBRXhCLG9CQUFjLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sR0FBRSxNQUFNLENBQUM7QUFDN0MsVUFBSSxRQUFRLEdBQUcsR0FBRyxFQUFDO0FBQUEsSUFDckI7QUFBQSxFQUNGO0FBQ0EsU0FBTztBQUNUO0FBU08seUJBQXlCLEdBQWUsUUFBa0I7QUFDL0QsUUFBTSxNQUFNLElBQUksNkJBQVc7QUFDM0IsSUFBRSxZQUFZLENBQUMsR0FBRyxJQUFHLEdBQUcsTUFBTTtBQUM1QixRQUFJLE9BQU8sU0FBUyxHQUFFLEtBQUssR0FBRztBQUU1QixvQkFBYyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLEdBQUUsTUFBTSxDQUFDO0FBQzdDLFVBQUksUUFBUSxHQUFHLEdBQUcsRUFBQztBQUFBLElBQ3JCO0FBQUEsRUFDRixDQUFDO0FBQ0QsU0FBTztBQUNUO0FBVU8sNkJBQ0wsR0FDQSxXQUNZO0FBQ1osUUFBTSxRQUFPLEVBQUUsS0FBSztBQUNwQixRQUFLLFlBQVksQ0FBQyxHQUFHLElBQUcsR0FBRyxNQUFNO0FBQy9CLFVBQU0sRUFBRSxLQUFLLFVBQVU7QUFDdkIsUUFBSSxVQUFVO0FBQVc7QUFDekIsVUFBTSxTQUFTLFVBQVUsR0FBRztBQUM1QixVQUFNLFdBQ0osUUFBUSxTQUFTLFFBQVEsYUFBYSxXQUFXLE9BQU8sR0FBRyxFQUFFO0FBRS9ELGtCQUFjLE9BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQzNDLGlCQUFhLE9BQU0sR0FBRyxHQUFHO0FBQUEsTUFDdkIsS0FBSztBQUFBLE1BQ0wsT0FBTztBQUFBLE1BQ1AsU0FBUztBQUFBLElBQ1gsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUNELFNBQU87QUFDVDtBQUVPLHVCQUNMLEdBQ0EsT0FDQSxRQUFPLEVBQUUsT0FBTyxLQUFLLEdBQ3JCO0FBQ0EsYUFBVyxRQUFRLE9BQU87QUFDeEIsTUFBRSxXQUFXLE1BQU0sQ0FBQyxpQkFBNkI7QUFDL0MsWUFBTSxjQUFrQyxhQUFhO0FBQ3JELGFBQU87QUFBQSxRQUNMLEdBQUc7QUFBQSxRQUNILE9BQU8sZUFBZSxjQUFjLE9BQU8sY0FBYyxNQUFLO0FBQUEsTUFDaEU7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNIO0FBQ0Y7QUFFTyxzQkFDTCxHQUNBLFFBQ0EsUUFDQSxPQUNBO0FBQ0EsTUFBSSxDQUFDLEVBQUUsUUFBUSxRQUFRLE1BQU07QUFBRyxNQUFFLFFBQVEsUUFBUSxRQUFRLEtBQUk7QUFDaEU7QUFFTyxJQUFNLFdBQVcsQ0FBQyxNQUN2QixFQUFFLFlBQVksQ0FBQyxTQUFTLEVBQUUsUUFBUSxJQUFJLEtBQUssQ0FBQyxFQUFFLFVBQVUsSUFBSSxDQUFDO0FBS3hELElBQU0sbUJBQW1CLENBQUMsR0FBZSxTQUM5QyxFQUFFLFFBQVEsSUFBSSxJQUFJLEVBQUUsYUFBYSxJQUFJLElBQUksQ0FBQztBQUNyQyxJQUFNLGtCQUFrQixDQUFDLEdBQWUsU0FDN0MsRUFBRSxRQUFRLElBQUksSUFBSSxFQUFFLFlBQVksSUFBSSxJQUFJLENBQUM7QUFVcEMscUJBQXFCLEdBQWUsUUFBMkI7QUFDcEUsUUFBTSxRQUFvQixDQUFDLEVBQUUsTUFBTSxRQUFPLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDcEQsUUFBTSxVQUFzQyxDQUFDO0FBQzdDLFFBQU0sV0FBdUIsQ0FBQztBQUU5QixNQUFJLElBQUk7QUFDUixTQUFPLE1BQU0sU0FBUyxLQUFLLElBQUksS0FBTTtBQUNuQztBQUNBLFVBQU0sRUFBRSxNQUFNLGdCQUFTLE1BQU0sTUFBTTtBQUVuQyxVQUFNLFVBQVUsQ0FBQyxNQUFNLEdBQUcsS0FBSTtBQUM5QixVQUFNLGtCQUFrQixFQUFFLFFBQVEsSUFBSSxJQUNsQyxFQUFFLG1CQUNGLE1BQ0EsQ0FBQyxTQUFTLENBQUMsUUFBUSxTQUFTLFFBQVEsUUFBUSxDQUM5QyxJQUNFLENBQUM7QUFDTCxVQUFNLFdBQVcsZ0JBQWdCLElBQUksQ0FBQyxTQUFTO0FBQzdDLGNBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLElBQUk7QUFDcEQsYUFBTyxFQUFFLE1BQU0sTUFBTSxNQUFNLFFBQVE7QUFBQSxJQUNyQyxDQUFDO0FBRUQsVUFBTSxRQUFRLEdBQUcsUUFBUTtBQUV6QixRQUFJLENBQUMsRUFBRSxRQUFRLElBQUksS0FBSyxDQUFDLEVBQUUsVUFBVSxJQUFJO0FBQUcsZUFBUyxLQUFLLE9BQU87QUFBQSxFQUNuRTtBQUNBLFNBQU87QUFDVDtBQUVPLHFCQUFxQixHQUFlLFFBQTJCO0FBQ3BFLFFBQU0sV0FBdUIsQ0FBQztBQUM5QixRQUFNLFFBQW9CLENBQUMsRUFBRSxNQUFNLFFBQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUVwRCxNQUFJLElBQUk7QUFDUixTQUFPLE1BQU0sV0FBVyxLQUFLLElBQUksS0FBTTtBQUNyQztBQUNBLFVBQU0sRUFBRSxNQUFNLGdCQUFTLE1BQU0sTUFBTTtBQUNuQyxVQUFNLFVBQVUsQ0FBQyxNQUFNLEdBQUcsS0FBSTtBQUU5QixVQUFNLFFBQVEsRUFBRSxRQUFRLElBQUksSUFDeEIsRUFBRSxtQkFBbUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFLLFNBQVMsQ0FBQyxDQUFDLElBQ25ELENBQUM7QUFDTCxlQUFXLFNBQVEsT0FBTztBQUN4QixZQUFNLEtBQUssRUFBRSxhQUFNLE1BQU0sUUFBUSxDQUFDO0FBQUEsSUFDcEM7QUFHQSxRQUFJLENBQUMsRUFBRSxRQUFRLElBQUksS0FBSyxNQUFNLFdBQVcsR0FBRztBQUMxQyxlQUFTLEtBQUssT0FBTztBQUFBLElBQ3ZCO0FBQUEsRUFDRjtBQUVBLFdBQVMsUUFBUSxDQUFDLFVBQVM7QUFDekIsUUFBSSxNQUFLO0FBQVEsWUFBSyxPQUFPLE1BQUssU0FBUyxHQUFHLENBQUM7QUFBQSxFQUNqRCxDQUFDO0FBQ0QsNkJBQUssRUFBRSxTQUFTLENBQUM7QUFDakIsU0FBTztBQUNUO0FBRU8sc0JBQXNCLEdBQVUsV0FBbUI7QUFDeEQsUUFBTSxRQUFPLEVBQUUsS0FBSztBQUNwQixNQUFJLFdBQVc7QUFDZiwrQ0FBWSxPQUFNLFdBQVcsQ0FBQyxNQUFNO0FBQ2xDLFVBQUssbUJBQW1CLEdBQUcsQ0FBQyxNQUFNO0FBQ2hDLFVBQUksTUFBTSxZQUFZLE1BQUssUUFBUSxHQUFHLFFBQVEsR0FBRztBQUMvQyxZQUFJO0FBQUUsZ0JBQUssU0FBUyxHQUFHLFFBQVE7QUFBQSxRQUFFLFNBQzFCLFFBQVA7QUFBZ0Isa0JBQVEsTUFBTSxHQUFHLFVBQVUsTUFBSztBQUFBLFFBQUU7QUFBQSxNQUNwRDtBQUFBLElBQ0YsQ0FBQztBQUVELGVBQVc7QUFBQSxFQUNiLENBQUM7QUFDRCxTQUFPO0FBQ1Q7QUFhTyx5QkFBcUM7QUFDMUMsUUFBTSxPQUFPLElBQUksNkJBQVc7QUFDNUIsUUFBTSxFQUFFLGVBQWUsb0JBQW9CLElBQUk7QUFFL0MsYUFBVyxVQUFVLGVBQWU7QUFDbEMsUUFBSSxDQUFDLE9BQU8sU0FBUyxLQUFLO0FBQUc7QUFDN0IsVUFBTSxhQUFhLGtCQUFrQixNQUFNO0FBQzNDLGtCQUFjLE1BQU0sQ0FBQyxVQUFVLENBQUM7QUFFaEMsZUFBVyxRQUFRLGNBQWMsU0FBUztBQUN4QyxVQUFJLENBQUMsS0FBSyxTQUFTLEtBQUs7QUFBRztBQUMzQixZQUFNLFdBQVcsa0JBQWtCLElBQUk7QUFDdkMsb0JBQWMsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUM5QixXQUFLLFFBQVEsWUFBWSxVQUFVLEVBQUUsVUFBVSxLQUFLLENBQUM7QUFBQSxJQUN2RDtBQUFBLEVBQ0Y7QUFFQSxhQUFXLFVBQVUsaUJBQWlCO0FBQ3BDLFVBQU0sYUFBYSxrQkFBa0IsTUFBTTtBQUMzQyxrQkFBYyxNQUFNLENBQUMsVUFBVSxDQUFDO0FBRWhDLGVBQVcsUUFBUSxnQkFBZ0IsU0FBUztBQUMxQyxZQUFNLFdBQVcsa0JBQWtCLElBQUk7QUFDdkMsb0JBQWMsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUM5QixVQUFJLGVBQWU7QUFBVTtBQUM3QixXQUFLLFFBQVEsWUFBWSxVQUFVLEVBQUUsVUFBVSxNQUFNLENBQUM7QUFBQSxJQUN4RDtBQUFBLEVBQ0Y7QUFFQSw2QkFBSyxFQUFFLEtBQUssQ0FBQztBQUNiLFNBQU87QUFDVDtBQUVPLHNCQUNMLFVBQ0EsT0FDQSxRQUNBLE9BQ0EsUUFDQSxhQUNBLGFBQ0EsVUFBVSxPQUNKO0FBQ04sUUFBTSxFQUFFLGNBQWM7QUFDdEIsUUFBTSxNQUFNLGFBQWEsV0FBVyxLQUFLLEVBQUU7QUFFM0MsZ0JBQWMsT0FBTyxDQUFDLE1BQU0sR0FBRztBQUFBLElBQzdCLE9BQU87QUFBQSxFQUNULENBQUM7QUFFRCxnQkFBYyxPQUFPLENBQUMsTUFBTSxHQUFHO0FBQUEsSUFDN0IsT0FBTztBQUFBLEVBQ1QsQ0FBQztBQUVELGVBQWEsT0FBTyxRQUFRLFFBQVE7QUFBQSxJQUNsQztBQUFBLElBQ0E7QUFBQSxFQUNGLENBQUM7QUFDRCxNQUFJLFNBQVM7QUFDWCxpQkFBYSxPQUFPLFFBQVEsUUFBUTtBQUFBLE1BQ2xDLEtBQUssVUFBVSxHQUFHO0FBQUEsTUFDbEIsT0FBTyxhQUFhLFdBQVcsT0FBTyxHQUFHLEVBQUU7QUFBQSxJQUM3QyxDQUFDO0FBQUEsRUFDSDtBQUNGO0FBRU8sSUFBTSxpQkFBaUIsQ0FBQyxTQUErQixXQUFnQjtBQXJUOUU7QUFzVEUsa0JBQ0csb0JBQVEsS0FBSyxDQUFDLE9BQUk7QUF2VHZCO0FBdVQwQiw0Q0FBSSxTQUFKLG9CQUFVLGNBQWE7QUFBQSxHQUFNLE1BQWxELG1CQUNDLGNBREQsWUFFZSxNQUNsQjtBQUFBO0FBRUssSUFBTSxpQkFBaUIsQ0FBQyxXQUE0QjtBQTVUM0Q7QUE2VEUsa0JBQVUsYUFBTyxjQUFQLFlBQStCLE1BQU07QUFBQTtBQUcxQyx5QkFDTCxRQUNBLFVBQ0EsTUFBa0IsTUFDSjtBQUNkLFFBQU0saUJBQStCLGtCQUFrQjtBQUN2RCxRQUFNLEVBQUUsVUFBVSxZQUFZO0FBQzlCLFFBQU0sRUFBRSxjQUFjO0FBRXRCLE1BQUksQ0FBQyxRQUFRLFFBQVEsUUFBUTtBQUFHLFdBQU87QUFDdkMsVUFBUSxZQUFZLFVBQVUsQ0FBQyxHQUFHLElBQUcsR0FBRyxNQUFNO0FBQzVDLFVBQU0sRUFBRSxPQUFPLEtBQUssU0FBUyxZQUFZO0FBQ3pDLFVBQU0sV0FBVyxhQUFhLFdBQVcsT0FBTyxPQUFPLEVBQUU7QUFFekQsSUFBQyxPQUFNLENBQUMsS0FBSyxVQUFVLEdBQUcsQ0FBQyxJQUFJLFlBQVksUUFDekMsQ0FBQyxZQUF3QjtBQUN2QixZQUFNLFNBQVMsVUFBVSxPQUFPO0FBRWhDLFVBQUksTUFBTSxZQUFhLGFBQVksV0FBVyxZQUFZLFNBQVM7QUFDakUsY0FBTSxNQUFNLGVBQWUsU0FBUztBQUNwQyxZQUFJLElBQUksVUFBVSxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsTUFBTSxJQUFJO0FBQ2pELGNBQUksS0FBSyxFQUFFLElBQUksR0FBRyxPQUFPLFFBQVEsQ0FBQztBQUFBLFFBQ3BDO0FBQUEsTUFDRixXQUdTLFlBQVksV0FBVyxZQUFZLFFBQVE7QUFDbEQsY0FBTSxNQUFNLGVBQWUsVUFBVSxPQUFPLEdBQUc7QUFDL0MsWUFBSSxJQUFJLFVBQVUsQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLE1BQU0sSUFBSTtBQUNqRCxjQUFJLEtBQUs7QUFBQSxZQUNQLElBQUk7QUFBQSxZQUNKLE9BQU87QUFBQSxZQUNQO0FBQUEsVUFDRixDQUFDO0FBQUEsUUFDSDtBQUFBLE1BQ0Y7QUFBQSxJQUNGLENBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDRCxTQUFPO0FBQ1Q7OztBSGhXQSwwQkFBaUMsUUFBa0I7QUFDakQsUUFBTSxFQUFFLGFBQWEsT0FBTztBQUM1QixRQUFNLFVBQXVDLENBQUM7QUFDOUMsTUFBSSxhQUFhO0FBQUksV0FBTztBQUU1QixRQUFNLFdBQVcsb0NBQWMsUUFBUTtBQUV2QyxRQUFNLFVBQVUsTUFBTSxJQUFJLE1BQU0sUUFBUSxLQUFLLFFBQVE7QUFDckQsUUFBTSxRQUFRLFFBQVEsTUFBTSxJQUFJO0FBRWhDLFFBQU0sVUFBVSxNQUFNLEdBQUcsTUFBTSxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUM7QUFDN0QsUUFBTSxNQUFNLENBQUMsRUFBRSxRQUFRLENBQUMsUUFBUTtBQUM5QixVQUFNLFNBQVMsQ0FBQztBQUNoQixRQUNHLE1BQU0sR0FBRyxFQUNULElBQUksQ0FBQyxTQUFTLGNBQWMsS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUN4QyxRQUFRLENBQUMsTUFBTSxNQUFNO0FBQ3BCLGFBQU8sUUFBUSxNQUFNO0FBQUEsSUFDdkIsQ0FBQztBQUNILGdDQUFNLEVBQUUsT0FBTyxDQUFDO0FBQ2hCLFlBQVEsS0FBSyxNQUFNO0FBQUEsRUFDckIsQ0FBQztBQUNELFNBQU87QUFDVDtBQUVPLHNCQUNMLEdBQ0EsU0FDQSxLQUNBLE9BQ0E7QUFDQSxVQUFRLFFBQVEsQ0FBQyxRQUFRO0FBQ3ZCLGtCQUFjLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUMzQixRQUFJLFVBQVUsTUFBTSxDQUFDLElBQUk7QUFBUTtBQUVqQyxrQkFBYyxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUM7QUFDN0IsaUJBQWEsR0FBRyxJQUFJLE1BQU0sSUFBSSxRQUFRLEVBQUUsS0FBSyxNQUFNLENBQUM7QUFBQSxFQUN0RCxDQUFDO0FBQ0g7OztBSzdDQSx1QkFBcUI7QUFDckIsdUJBQXVCO0FBWWhCLGlDQUNMLFFBQ0EsY0FDQSxTQUNBLE9BQ0E7QUFDQSxRQUFNLEVBQUUsYUFBYTtBQUNyQixRQUFNLEVBQUUsV0FBVyxzQkFBc0I7QUFDekMsUUFBTSxLQUFLLFNBQVMsTUFBTTtBQUMxQixNQUFJLENBQUMsTUFBTSxhQUFhLFFBQVE7QUFDOUIsUUFBSSx3QkFBTyxnQkFBZ0I7QUFDM0I7QUFBQSxFQUNGO0FBRUEsUUFBTSxTQUFTLFVBQVUsU0FBUztBQUVsQyxlQUFhLFFBQVEsQ0FBQyxZQUFZO0FBOUJwQztBQStCSSxVQUFNLFdBQVcsY0FBYyxRQUFRLElBQUk7QUFFM0MsUUFBSSxRQUFRLFFBQVE7QUFDcEIsUUFBSSxNQUFNLGVBQWUsTUFBTSxHQUFHO0FBRWhDLGNBQVEsS0FBSyxNQUFNO0FBQUEsSUFDckI7QUFHQSxRQUFJLFFBQ0QsY0FBUSxzQkFBUixZQUF5QyxxQkFBcUIsT0FBTztBQUV4RSxRQUFJLFVBQWdDLENBQUM7QUFDckMsUUFBSTtBQUNGLGdCQUFVLEdBQUcsTUFBYyxLQUFLLEVBQUU7QUFBQSxJQUNwQyxTQUFTLElBQVA7QUFDQSxVQUFJLHdCQUFPLEdBQUcsMENBQTBDO0FBQ3hELGlDQUFLLEVBQUU7QUFBQSxJQUNUO0FBRUEsZUFBVyxVQUFVLFNBQVM7QUFDNUIsVUFBSSxPQUFPO0FBQVk7QUFDdkIsWUFBTSxXQUFXLGNBQWMsT0FBTyxJQUFJO0FBQzFDLFlBQU0sY0FBYyxlQUFlLE9BQU87QUFDMUMsWUFBTSxjQUFjLGVBQWUsU0FBUyxRQUFRO0FBRXBELG1CQUNFLFVBQ0EsT0FDQSxVQUNBLE9BQ0EsVUFDQSxhQUNBLGFBQ0EsSUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDSDs7O0FDaEVBLFlBQXVCO0FBRWhCLDZCQUNMLFFBQ0EsU0FDQSxPQUNBO0FBQ0EsUUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsTUFDRTtBQUNKLE1BQUksQ0FBQztBQUFjO0FBRW5CLFFBQU0sRUFBRSxVQUFVLEFBQU0sZUFBUyxrQkFBa0IsSUFBSSxjQUFjO0FBQ3JFLFVBQVEsUUFBUSxDQUFDLFNBQVM7QUFDeEIsVUFBTSxFQUFFLFNBQVM7QUFDakIsVUFBTSxFQUFFLFFBQVE7QUFDaEIsUUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssY0FBYyxJQUFJLENBQUM7QUFBRztBQUU5QyxVQUFNLFFBQVEsY0FBYyxJQUFJO0FBQ2hDLFVBQU0sV0FBVyxJQUFJLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUNyQyxVQUFNLFNBQVMsU0FBUyxTQUFTLGNBQWM7QUFFL0MsaUJBQ0UsVUFDQSxPQUNBLE9BQ0EsZUFDQSxRQUNBLE1BQ0EsTUFDQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBQ0g7OztBQ2hDQSxJQUFNLG1CQUFtQixDQUFDLFNBQWlCLGFBQ3pDLFFBQVEsTUFBTSxRQUFRLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxLQUFLLFFBQVE7QUFFN0MsZ0NBQ0wsUUFDQSxTQUNBLE9BQ0E7QUFDQSxRQUFNLEVBQUUsYUFBYTtBQUNyQixRQUFNLEVBQUUsaUJBQWlCLHNCQUFzQixxQkFBcUI7QUFDcEUsTUFBSSxDQUFDO0FBQWlCO0FBRXRCLGFBQVcsVUFBVSxTQUFTO0FBQzVCLFFBQUksT0FBTyxzQkFBc0IsT0FBTztBQUFZO0FBRXBELFFBQUksT0FBTyxjQUFjLE9BQU8sSUFBSTtBQUNwQyxRQUFJLFNBQVMsaUJBQWlCLE1BQU0sb0JBQW9CO0FBRXhELFdBQU8sV0FBVyxJQUFJO0FBQ3BCLFlBQU0sYUFBYSxRQUFRLEtBQ3pCLENBQUMsT0FBTyxjQUFjLEdBQUcsSUFBSSxNQUFNLE1BQ3JDO0FBSUEsVUFBSSxDQUFDLGNBQWMsV0FBVyx1QkFBdUIsTUFBTTtBQUN6RCxxQkFDRSxVQUNBLE9BQ0EsTUFDQSxrQkFDQSxRQUNBLE1BQ0EsTUFDQSxJQUNGO0FBQUEsTUFDRjtBQUNBLGFBQU87QUFDUCxlQUFTLGlCQUFpQixRQUFRLG9CQUFvQjtBQUFBLElBQ3hEO0FBQUEsRUFDRjtBQUNGOzs7QUNuREEsdUJBQStCO0FBaUIvQixJQUFNLG9CQUFvQixDQUFDLFdBQW9CO0FBQzdDLFFBQU0sYUFBc0IsQ0FBQyxHQUMzQixhQUF3QixDQUFDO0FBQzNCLFNBQU8sU0FBUyxRQUFRLENBQUMsY0FBYztBQUNyQyxRQUFJLHFCQUFxQjtBQUFPLGlCQUFXLEtBQUssU0FBUztBQUFBO0FBQ3BELGlCQUFXLEtBQUssU0FBb0I7QUFBQSxFQUMzQyxDQUFDO0FBQ0QsU0FBTyxFQUFFLFlBQVksV0FBVztBQUNsQztBQUVPLCtCQUNMLFFBQ0EsYUFDQSxTQUNBLE9BQ0E7QUFDQSxRQUFNLEVBQUUsYUFBYTtBQUNyQixRQUFNLEVBQUUsY0FBYztBQUN0QixRQUFNLFNBQVMsVUFBVSxTQUFTO0FBRWxDLGNBQVksUUFBUSxDQUFDLFlBQVk7QUFDL0IsVUFBTSxFQUFFLFNBQVM7QUFDakIsVUFBTSxXQUFXLGNBQWMsSUFBSTtBQUNuQyxVQUFNLGdCQUFnQixjQUFjLElBQUk7QUFDeEMsVUFBTSxZQUFZLElBQUksTUFBTSxzQkFBc0IsYUFBYTtBQUUvRCxVQUFNLFVBQVUsUUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksRUFDbkIsT0FDQyxDQUFDLFVBQ0MsY0FBYyxLQUFLLE1BQU0saUJBQWlCLE1BQU0sU0FBUyxLQUFLLFFBQVEsQ0FBQyxNQUFNLFVBQ2pGLEVBQ0MsSUFBSSxhQUFhO0FBRXBCLFVBQU0sUUFBUSxRQUFRO0FBQ3RCLFFBQUksT0FBTyxVQUFVLFlBQVksQ0FBQyxPQUFPLFNBQVMsS0FBSztBQUFHO0FBRTFELFlBQVEsUUFBUSxDQUFDLFdBQVc7QUFFMUIsWUFBTSxjQUFjLGVBQWUsT0FBTztBQUMxQyxZQUFNLGNBQWMsZUFBZSxTQUFTLFFBQVE7QUFDcEQsbUJBQ0UsVUFDQSxPQUNBLFVBQ0EsT0FDQSxRQUNBLGFBQ0EsYUFDQSxJQUNGO0FBQUEsSUFDRixDQUFDO0FBRUQsUUFBSSxRQUFRLDRCQUE0QjtBQUN0QyxZQUFNLGlCQUFpQixRQUFRO0FBQy9CLFVBQ0UsT0FBTyxtQkFBbUIsWUFDMUIsQ0FBQyxPQUFPLFNBQVMsY0FBYztBQUUvQjtBQUVGLFlBQU0sRUFBRSxlQUFlLGtCQUFrQixTQUFTO0FBRWxELGlCQUFXLFFBQVEsQ0FBQyxjQUFjO0FBQ2hDLGtCQUFVLFNBQVMsUUFBUSxDQUFDLFVBQVU7QUFDcEMsY0FBSSxpQkFBaUIsd0JBQU87QUFDMUIsa0JBQU0sZ0JBQWdCLGNBQWMsS0FBSztBQUV6Qyx5QkFDRSxVQUNBLE9BQ0EsVUFDQSxnQkFDQSxlQUNBLE1BQ0EsTUFDQSxJQUNGO0FBQUEsVUFDRjtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0gsQ0FBQztBQUFBLElBQ0g7QUFFQSxRQUFJLFFBQVEsMkJBQTJCO0FBQ3JDLFlBQU0sRUFBRSxlQUFlLGtCQUFrQixTQUFTO0FBQ2xELFlBQU0sY0FBeUIsQ0FBQyxHQUFHLFVBQVU7QUFFN0MsVUFBSSxhQUFhLFlBQVksTUFBTTtBQUNuQyxhQUFPLGVBQWUsUUFBVztBQUMvQixjQUFNLEVBQUUsWUFBWSw0QkFBZSxrQkFBa0IsVUFBVTtBQUUvRCxjQUFNLGFBQWEsV0FBVztBQUM5QixjQUFNLFdBQVUsV0FBVyxJQUFJLGFBQWE7QUFJNUMsY0FBTSxjQUFjO0FBQ3BCLGNBQU0sY0FBYztBQUVwQixjQUFNLG1CQUFtQixXQUFXLE9BQU87QUFFM0MscUJBQ0UsVUFDQSxPQUNBLGtCQUNBLE9BQ0EsWUFDQSxhQUNBLGFBQ0EsSUFDRjtBQUVBLGlCQUFRLFFBQVEsQ0FBQyxXQUFXO0FBQzFCLGNBQUksV0FBVztBQUFZO0FBQzNCLGdCQUFNLGVBQWM7QUFDcEIsZ0JBQU0sZUFBYztBQUVwQix1QkFDRSxVQUNBLE9BQ0EsWUFDQSxPQUNBLFFBQ0EsY0FDQSxjQUNBLElBQ0Y7QUFBQSxRQUNGLENBQUM7QUFFRCxvQkFBWSxLQUFLLEdBQUcsV0FBVTtBQUM5QixxQkFBYSxZQUFZLE1BQU07QUFBQSxNQUNqQztBQUFBLElBQ0Y7QUFBQSxFQUtGLENBQUM7QUFDSDs7O0FDckpBLHFDQUE0QyxNQUFhO0FBQ3ZELFFBQU0sRUFBRSxjQUFjLElBQUksY0FBYyxhQUFhLElBQUk7QUFDekQsTUFBSSxDQUFDO0FBQVcsV0FBTyxDQUFDO0FBRXhCLFFBQU0sV0FBVyxjQUFjLElBQUk7QUFDbkMsUUFBTSxFQUFFLDBCQUEwQixZQUFZO0FBRTlDLFFBQU0sUUFBUyxPQUFNLElBQUksTUFBTSxXQUFXLElBQUksR0FBRyxNQUFNLElBQUk7QUFFM0QsUUFBTSxxQkFBMEMsQ0FBQztBQUVqRCxRQUFNLGlCQUFpQixJQUFJLE9BQU8saUJBQWlCO0FBQ25ELFFBQU0sbUJBQW1CLElBQUksT0FBTyxlQUFlO0FBQ25ELFFBQU0sV0FBVyxJQUFJLE9BQU8sa0JBQWtCO0FBRTlDLGFBQVcsUUFBUSxXQUFXO0FBQzVCLFVBQU0sT0FBTyxNQUFNLEtBQUssU0FBUyxNQUFNO0FBRXZDLFVBQU0sa0JBQWtCLGVBQWUsS0FBSyxJQUFJLEVBQUU7QUFDbEQsVUFBTSxPQUFPLGlCQUFpQixLQUFLLGVBQWUsRUFBRTtBQUNwRCxRQUFJLFFBQVEsU0FBUyxLQUFLLGVBQWUsRUFBRSxHQUFHLEtBQUssS0FBSztBQUV4RCxVQUFNLEVBQUUsV0FBVztBQUNuQixRQUFJLFVBQVUsR0FBRztBQUNmLFlBQU0sYUFBYSxNQUFNO0FBQ3pCLFlBQU0sb0JBQW9CLGVBQWUsS0FBSyxVQUFVLEVBQUU7QUFDMUQsWUFBTSxpQkFBaUIsaUJBQWlCLEtBQUssaUJBQWlCLEVBQUU7QUFFaEUseUJBQW1CLEtBQUs7QUFBQSxRQUN0QjtBQUFBLFFBQ0EsUUFBUTtBQUFBLFFBQ1I7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNILE9BQU87QUFDTCx5QkFBbUIsS0FBSztBQUFBLFFBQ3RCO0FBQUEsUUFDQSxRQUFRLHdCQUF3QixXQUFXO0FBQUEsUUFDM0M7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDtBQUVPLHVCQUNMLFVBQ0EsT0FDQSxPQUNBO0FBQ0EsUUFBTSxFQUFFLFdBQVcsY0FBYztBQUNqQyxRQUFNLFdBQVcsVUFBVSxXQUFXLElBQUk7QUFFMUMsUUFBTSxRQUFRLENBQUMsUUFBUSxNQUFNO0FBM0QvQjtBQTRESSxVQUFNLEVBQUUsTUFBTSxPQUFPLFdBQVc7QUFFaEMsVUFBTSxjQUFjLHdCQUFVLGFBQWEsU0FBUztBQUNwRCxVQUFNLE1BQU0sbUJBQWEsV0FBVyxXQUFXLE1BQW5DLG1CQUFzQztBQUNsRCxVQUFNLFNBQVMsVUFBVSxHQUFHO0FBQzVCLFVBQU0sV0FBVyxhQUFhLFdBQVcsYUFBYSxHQUFHLEVBQUU7QUFFM0QsUUFBSSxXQUFXLE1BQU07QUFDbkIsWUFBTSxJQUFJO0FBQ1YsWUFBTSxJQUFJLFlBQU0sSUFBSSxPQUFWLG1CQUFjO0FBRXhCLG9CQUFjLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQixtQkFBYSxPQUFPLEdBQUcsR0FBRyxFQUFFLEtBQUssUUFBUSxPQUFPLFNBQVMsQ0FBQztBQUFBLElBQzVELE9BQU87QUFDTCxvQkFBYyxPQUFPLENBQUMsTUFBTSxNQUFNLENBQUM7QUFDbkMsVUFBSSxTQUFTLGVBQWU7QUFDMUIscUJBQWEsT0FBTyxNQUFNLFFBQVE7QUFBQSxVQUNoQztBQUFBLFVBQ0EsT0FBTztBQUFBLFFBQ1QsQ0FBQztBQUFBLE1BQ0g7QUFFQSxtQkFBYSxPQUFPLFFBQVEsTUFBTTtBQUFBLFFBQ2hDLEtBQUs7QUFBQSxRQUNMLE9BQU87QUFBQSxNQUNULENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRixDQUFDO0FBQ0g7OztBQzdFQSw2QkFDRSxRQUNBLE9BQ3NCO0FBQ3RCLFFBQU0sRUFBRSxVQUFVLE9BQU87QUFDekIsS0FBRyxRQUFRLGVBQWU7QUFFMUIsUUFBTSxFQUFFLGNBQWM7QUFHdEIsUUFBTSxnQkFBNkIsTUFBTSxRQUFRLElBQy9DLE1BQU0sSUFBSSxPQUFPLFNBQVM7QUF0QjlCO0FBdUJNLFVBQU0sWUFBdUIsRUFBRSxNQUFNLE9BQU8sQ0FBQyxFQUFFO0FBRy9DLFVBQU0sUUFBUSxnQkFBSSxjQUFjLGFBQWEsSUFBSSxNQUFuQyxtQkFBc0MsVUFBdEMsWUFBK0MsQ0FBQztBQUU5RCxVQUFNLFVBQVUsTUFBTSxTQUFTLE1BQU0sSUFBSSxNQUFNLFdBQVcsSUFBSSxJQUFJO0FBQ2xFLFVBQU0sUUFBUSxRQUFRLE1BQU0sSUFBSTtBQUVoQyxVQUFNLFFBQVEsQ0FBQyxVQUFTO0FBL0I5QjtBQWdDUSxZQUFNLFNBQVMsTUFBSyxTQUFTLE1BQU07QUFDbkMsWUFBTSxPQUFPLE1BQU07QUFHbkIsWUFBTSxjQUNKLHlCQUNHLE1BQU0sZUFBZSxNQUR4QixvQkFFSSxJQUFJLENBQUMsVUFBUyxNQUFLLE1BQU0sR0FBRyxNQUFLLFNBQVMsQ0FBQyxPQUYvQyxvQkFHSSxJQUFJLENBQUMsY0FBYyxVQUFVLE1BQU0sR0FBRyxFQUFFLFFBSDVDLFlBR21ELENBQUM7QUFFdEQsWUFBTSxrQkFDSixnQkFBSSxRQUFRLFFBQVEsVUFBcEIsbUJBQTJCLFNBQVMsb0JBQXBDLFlBQXVEO0FBRXpELFlBQU0sY0FBYyxlQUFlLE9BQU0sTUFBTSxlQUFlO0FBRTlELFlBQU0sUUFBUSx1REFBYSxlQUFiLG1CQUF5QixTQUF6QixZQUFpQztBQUMvQyxVQUFJLFVBQVU7QUFBSTtBQUNsQixZQUFNLEVBQUUsYUFBYSxhQUFhLFdBQVcsS0FBSyxLQUFLLENBQUM7QUFDeEQsVUFBSSxDQUFDO0FBQVU7QUFFZixnQkFBVSxNQUFNLEtBQUs7QUFBQSxRQUNuQixLQUFLO0FBQUEsUUFDTDtBQUFBLFFBQ0E7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNILENBQUM7QUFDRCxXQUFPO0FBQUEsRUFDVCxDQUFDLENBQ0g7QUFFQSxRQUFNLFlBQVksVUFBVSxTQUFTO0FBRXJDLFFBQU0sZ0JBQWdCLGNBQWMsSUFBSSxDQUFDLGNBQWM7QUFFckQsY0FBVSxRQUFRLFVBQVUsTUFBTSxPQUFPLENBQUMsVUFDeEMsVUFBVSxTQUFTLE1BQUssS0FBSyxDQUMvQjtBQUNBLFdBQU87QUFBQSxFQUNULENBQUM7QUFDRCxLQUFHLE1BQU0sRUFBRSxjQUFjLENBQUM7QUFDMUIsU0FBTztBQUNUO0FBRU8sOEJBQ0wsVUFDQSxZQUNBLFNBQ0EsT0FDQTtBQUNBLGFBQVcsUUFBUSxDQUFDLGNBQWM7QUFDaEMsVUFBTSxFQUFFLGFBQWEsVUFBVTtBQUMvQixjQUFVLE1BQU0sUUFBUSxDQUFDLFVBQVM7QUFDaEMsWUFBTSxFQUFFLEtBQUssT0FBTyxnQkFBZ0I7QUFDcEMsVUFBSSxRQUFRO0FBQUk7QUFDaEIsWUFBTSxjQUFjLGVBQWUsU0FBUyxRQUFRO0FBQ3BELGtCQUFZLFFBQVEsQ0FBQyxlQUFlO0FBRWxDLGNBQU0sZUFBZSxlQUFlLFNBQVMsVUFBVTtBQUV2RCxxQkFDRSxVQUNBLE9BQ0EsVUFDQSxPQUNBLFlBQ0EsYUFDQSxZQUNGO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSCxDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0g7OztBQzNGTyw2QkFDTCxRQUNBLGNBQ0EsU0FDQSxPQUNBO0FBQ0EsUUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBTSxFQUFFLGNBQWM7QUFDdEIsUUFBTSxTQUFTLFVBQVUsU0FBUztBQUNsQyxlQUFhLFFBQVEsQ0FBQyxZQUFZO0FBckJwQztBQXNCSSxVQUFNLGVBQWUsUUFBUTtBQUM3QixVQUFNLG1CQUFtQixjQUFjLFlBQVk7QUFFbkQsUUFBSSxRQUFRLFFBQVE7QUFDcEIsUUFBSSxPQUFPLFVBQVUsWUFBWSxDQUFDLE9BQU8sU0FBUyxLQUFLO0FBQUc7QUFFMUQsVUFBTSxRQUFRLGdCQUFJLGNBQ2YsYUFBYSxZQUFZLE1BRGQsbUJBRVYsVUFGVSxtQkFFSCxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssTUFBTSxRQUFRLEVBQUU7QUFFN0MsVUFBTSxTQUFTLGdCQUFJLGNBQ2hCLGFBQWEsWUFBWSxNQURiLG1CQUVYLFdBRlcsbUJBRUgsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLE1BQU0sUUFBUSxFQUFFO0FBRTlDLFVBQU0sVUFBVSxDQUFDLEdBQUksd0JBQVMsQ0FBQyxHQUFJLEdBQUksMEJBQVUsQ0FBQyxDQUFFO0FBRXBELGVBQVcsVUFBVSxTQUFTO0FBQzVCLFlBQU0sY0FBYyxlQUFlLE9BQU87QUFDMUMsWUFBTSxjQUFjLGVBQWUsU0FBUyxnQkFBZ0I7QUFDNUQsbUJBQ0UsVUFDQSxPQUNBLGtCQUNBLE9BQ0EsUUFDQSxhQUNBLGFBQ0EsSUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDSDs7O0FDcERBLHVCQUFxQjtBQWFkLDhCQUNMLFFBQ0EsY0FDQSxTQUNBLE9BQ0E7QUFDQSxRQUFNLEVBQUUsYUFBYTtBQUNyQixRQUFNLEVBQUUsV0FBVyxtQkFBbUI7QUFDdEMsUUFBTSxTQUFTLFVBQVUsU0FBUztBQUVsQyxlQUFhLFFBQVEsQ0FBQyxZQUFZO0FBQ2hDLFVBQU0sZ0JBQWdCLFFBQVE7QUFDOUIsVUFBTSxvQkFBb0IsY0FBYyxhQUFhO0FBRXJELFVBQU0sUUFBUSxXQUFXLFFBQVEsY0FBd0I7QUFDekQsK0JBQUssRUFBRSxNQUFNLENBQUM7QUFFZCxRQUFJLFFBQVEsUUFBUTtBQUNwQixRQUFJLE9BQU8sVUFBVSxZQUFZLENBQUMsT0FBTyxTQUFTLEtBQUs7QUFDckQsY0FBUSxrQkFBa0IsT0FBTztBQUVuQyxVQUFNLFVBQVUsQ0FBQztBQUNqQixZQUFRLFFBQVEsQ0FBQyxTQUFTO0FBQ3hCLFVBQUksS0FBSztBQUFZO0FBQ3JCLFlBQU0sV0FBVyxjQUFjLEtBQUssSUFBSTtBQUN4QyxVQUFJLGFBQWEscUJBQXFCLE1BQU0sS0FBSyxRQUFRO0FBQ3ZELGdCQUFRLEtBQUssUUFBUTtBQUFBLElBQ3pCLENBQUM7QUFFRCxlQUFXLFVBQVUsU0FBUztBQUM1QixZQUFNLGNBQWMsZUFBZSxPQUFPO0FBQzFDLFlBQU0sY0FBYyxlQUFlLFNBQVMsaUJBQWlCO0FBQzdELG1CQUNFLFVBQ0EsT0FDQSxtQkFDQSxPQUNBLFFBQ0EsYUFDQSxhQUNBLElBQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBQ0g7OztBQ3pEQSx1QkFBcUI7QUFtQnJCLElBQU0sYUFBYSxDQUFDLE1BQWEsV0FBVyxTQUFtQjtBQXBCL0Q7QUFxQkUsUUFBTSxFQUFFLE1BQU0sZ0JBQWdCLElBQUksY0FBYyxhQUFhLElBQUk7QUFDakUsUUFBTSxVQUFvQixDQUFDO0FBRTNCLCtCQUFNLFFBQVEsQ0FBQyxNQUFNLFFBQVEsS0FBSyxTQUFTLEVBQUUsR0FBRyxDQUFDO0FBRWpELEdBQUMsaURBQWEsU0FBYixZQUFxQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLE1BQWM7QUFDdEQsaUJBQWEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxXQUFXLFFBQVEsS0FBSyxTQUFTLE1BQU0sQ0FBQyxDQUFDO0FBQUEsRUFDcEUsQ0FBQztBQUNELEdBQUMsaURBQWEsUUFBYixZQUFvQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLE1BQWM7QUFDckQsaUJBQWEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxXQUFXLFFBQVEsS0FBSyxTQUFTLE1BQU0sQ0FBQyxDQUFDO0FBQUEsRUFDcEUsQ0FBQztBQUVELFNBQU8sUUFBUSxJQUFJLENBQUMsTUFBTyxZQUFXLE1BQU0sTUFBTSxFQUFFLFlBQVksQ0FBQztBQUNuRTtBQUVPLDRCQUNMLFFBQ0EsY0FDQSxTQUNBLE9BQ0E7QUFDQSxRQUFNLEVBQUUsYUFBYTtBQUNyQixRQUFNLEVBQUUsV0FBVyxpQkFBaUI7QUFDcEMsUUFBTSxTQUFTLFVBQVUsU0FBUztBQUNsQyxlQUFhLFFBQVEsQ0FBQyxZQUFZO0FBN0NwQztBQThDSSxVQUFNLGNBQWMsUUFBUTtBQUU1QixVQUFNLGtCQUFrQixjQUFjLFdBQVc7QUFDakQsVUFBTSxNQUFNLFFBQVMsUUFBUSxhQUF3QixLQUFLLEVBQUUsWUFBWSxDQUFDO0FBQ3pFLCtCQUFLLEVBQUUsSUFBSSxDQUFDO0FBRVosVUFBTSxhQUFhLENBQUMsU0FBZ0I7QUFDbEMsWUFBTSxVQUFVLFdBQVcsSUFBSTtBQUMvQixhQUFPLFFBQVEsdUJBQXVCLFNBQ2xDLFFBQVEsU0FBUyxHQUFHLElBQ3BCLFFBQVEsS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLEdBQUcsQ0FBQztBQUFBLElBQ3pDO0FBRUEsVUFBTSxVQUFVLFFBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQ25CLE9BQU8sQ0FBQyxTQUFTLEtBQUssU0FBUyxZQUFZLFFBQVEsV0FBVyxJQUFJLEtBQUssQ0FBQyxLQUFLLFVBQVUsRUFDdkYsSUFBSSxhQUFhO0FBQ3BCLCtCQUFLLEVBQUUsUUFBUSxDQUFDO0FBRWhCLFFBQUksUUFDRCxjQUFRLHVCQUFSLFlBQTBDLGdCQUFnQixPQUFPO0FBRXBFLFlBQVEsUUFBUSxDQUFDLFdBQVc7QUFDMUIsWUFBTSxjQUFjLGVBQWUsT0FBTztBQUMxQyxZQUFNLGNBQWMsZUFBZSxTQUFTLGVBQWU7QUFDM0QsbUJBQ0UsVUFDQSxPQUNBLGlCQUNBLE9BQ0EsUUFDQSxhQUNBLGFBQ0EsSUFDRjtBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUNIOzs7QUNsRkEsdUJBQXFCO0FBUWQsaUNBQ0wsUUFDQSxlQUNBLE9BQ0EsTUFDQTtBQUNBLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU0sRUFBRSxjQUFjO0FBQ3RCLFFBQU0sU0FBUyxVQUFVLFNBQVM7QUFFbEMsZ0JBQWMsUUFBUSxDQUFDLFlBQVk7QUFDakMsVUFBTSxFQUFFLFNBQVM7QUFDakIsVUFBTSxXQUFXLGNBQWMsSUFBSTtBQUNuQyxVQUFNLFdBQVcsYUFBYSxNQUFNLFFBQVE7QUFFNUMsUUFBSSxRQUFRLFFBQVE7QUFDcEIsUUFBSSxPQUFPLFVBQVUsWUFBWSxDQUFDLE9BQU8sU0FBUyxLQUFLO0FBQUc7QUFFMUQsVUFBTSxXQUFXLFlBQVksVUFBVSxRQUFRO0FBQy9DLCtCQUFLLFFBQVE7QUFDYixVQUFNLFdBQVcsQ0FBQyxHQUFHLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBUyxNQUFLLFFBQVEsQ0FBQztBQUMzRCxhQUFTLFFBQVEsQ0FBQyxVQUFTO0FBQ3pCLFlBQUssUUFBUSxDQUFDLE1BQU0sTUFBTTtBQUN4QixjQUFNLE9BQU8sTUFBSyxJQUFJO0FBQ3RCLFlBQUksU0FBUztBQUFXO0FBQ3hCLHFCQUNFLFVBQ0EsT0FDQSxNQUNBLE9BQ0EsTUFDQSxNQUNBLE1BQ0EsSUFDRjtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0gsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUNIOzs7QUN6Q08sbUNBQW1DLEdBQWUsVUFBc0I7QUFDM0UsUUFBTSxFQUFFLFdBQVcsa0NBQWtDO0FBQ3JELElBQUUsWUFBWSxDQUFDLE9BQU8sT0FBTTtBQUV4QixNQUFFLGVBQWUsT0FBTyxDQUFDLEdBQUcsV0FBVyxHQUFHLGVBQWU7QUFWakU7QUFXWSxVQUFJLFVBQVUsUUFBUTtBQUFNO0FBRTVCLFlBQU0sRUFBRSxVQUFVLGNBQWMsYUFBYSxXQUFXLFVBQVUsS0FBSztBQUN2RSxZQUFNLFFBQ0YsZ0JBQVUsS0FBSyxPQUFmLFlBQXFCLGNBQWMsVUFBVSxPQUFPLFFBQVE7QUFHaEUsUUFBRSxlQUFlLFlBQVksQ0FBQyxJQUFHLElBQUcsSUFBRyxtQkFBbUI7QUFFdEQsWUFDSSxHQUFFLFFBQVEsVUFDVCxDQUFDLGlDQUFpQyxtQkFBbUI7QUFFdEQ7QUFFSixxQkFBYSxHQUFHLE9BQU8sZ0JBQWdCO0FBQUEsVUFDbkMsS0FBSztBQUFBLFVBQ0w7QUFBQSxVQUNBLFNBQVM7QUFBQSxRQUNiLENBQUM7QUFBQSxNQUNMLENBQUM7QUFBQSxJQUNMLENBQUM7QUFBQSxFQUNMLENBQUM7QUFDTDtBQUVPLG1DQUFtQyxHQUFlO0FBQ3JELElBQUUsWUFBWSxDQUFDLE9BQU8sT0FBTTtBQUV4QixNQUFFLGVBQWUsT0FBTyxDQUFDLEdBQUcsV0FBVyxHQUFHLFlBQVk7QUFDbEQsVUFBSSxVQUFVLFFBQVE7QUFBUTtBQUU5QixRQUFFLGVBQWUsU0FBUyxDQUFDLElBQUcsSUFBRyxJQUFHLFdBQVc7QUFDM0MsY0FBTSxFQUFFLEtBQUssVUFBVTtBQUN2QixZQUFJLFFBQVE7QUFBTTtBQUVsQixxQkFBYSxHQUFHLE9BQU8sUUFBUTtBQUFBLFVBQzNCLEtBQUs7QUFBQSxVQUNMO0FBQUEsVUFDQSxTQUFTO0FBQUEsUUFDYixDQUFDO0FBQUEsTUFDTCxDQUFDO0FBQUEsSUFDTCxDQUFDO0FBQUEsRUFDTCxDQUFDO0FBQ0w7QUFLTyx3QkFBd0IsR0FBZTtBQUMxQyxJQUFFLFlBQVksQ0FBQyxPQUFPLE9BQU07QUFFeEIsTUFBRSxlQUFlLE9BQU8sQ0FBQyxHQUFHLFdBQVcsR0FBRyxlQUFlO0FBQ3JELFVBQUksVUFBVSxRQUFRO0FBQU07QUFFNUIsUUFBRSxlQUFlLFlBQVksQ0FBQyxJQUFHLElBQUcsSUFBRyxVQUFVO0FBQzdDLFlBQUksR0FBRSxRQUFRO0FBQVE7QUFFdEIscUJBQWEsR0FBRyxPQUFPLE9BQU87QUFBQSxVQUMxQixLQUFLO0FBQUEsVUFFTCxPQUFPLFVBQVU7QUFBQSxVQUNqQixTQUFTO0FBQUEsUUFDYixDQUFDO0FBQUEsTUFDTCxDQUFDO0FBQUEsSUFDTCxDQUFDO0FBQUEsRUFDTCxDQUFDO0FBQ0w7QUFDTyxvQkFBb0IsR0FBZTtBQUN0QyxJQUFFLFlBQVksQ0FBQyxPQUFPLE9BQU07QUFFeEIsTUFBRSxlQUFlLE9BQU8sQ0FBQyxHQUFHLFdBQVcsR0FBRyxlQUFlO0FBQ3JELFVBQUksVUFBVSxRQUFRO0FBQU07QUFFNUIsUUFBRSxlQUFlLFlBQVksQ0FBQyxJQUFHLG1CQUFtQixJQUFHLFVBQVU7QUFDN0QsWUFBSSxrQkFBa0IsUUFBUTtBQUFRO0FBRXRDLFVBQUUsZUFBZSxPQUFPLENBQUMsSUFBRyxJQUFHLElBQUcsV0FBVztBQUN6QyxjQUFJLEdBQUUsUUFBUSxVQUFVLFVBQVU7QUFBUTtBQUUxQyx1QkFBYSxHQUFHLE9BQU8sUUFBUTtBQUFBLFlBQzNCLEtBQUs7QUFBQSxZQUNMLE9BQU8sa0JBQWtCO0FBQUEsWUFDekIsU0FBUztBQUFBLFVBQ2IsQ0FBQztBQUFBLFFBQ0wsQ0FBQztBQUFBLE1BQ0wsQ0FBQztBQUFBLElBQ0wsQ0FBQztBQUFBLEVBQ0wsQ0FBQztBQUNMO0FBSU8sMENBQTBDLEdBQWU7QUFDNUQsSUFBRSxZQUFZLENBQUMsT0FBTyxPQUFNO0FBQ3hCLE1BQUUsY0FBYyxPQUFPLENBQUMsR0FBRyxNQUFNLEtBQUssTUFBTTtBQUN4QyxVQUFJLEtBQUssUUFBUTtBQUFRO0FBQ3pCLFFBQUUsY0FBYyxPQUFPLENBQUMsSUFBRyxNQUFNLEtBQUssT0FBTTtBQUN4QyxZQUFJLEtBQUssUUFBUSxVQUFVLFFBQVE7QUFBSztBQUN4QyxZQUFJLEtBQUssVUFBVSxLQUFLLE9BQU87QUFDM0IsdUJBQWEsR0FBRyxLQUFLLEtBQUs7QUFBQSxZQUN0QixLQUFLO0FBQUEsWUFDTCxPQUFPLEtBQUs7QUFBQSxZQUNaLFNBQVM7QUFBQSxVQUNiLENBQUM7QUFBQSxRQUNMO0FBQUEsTUFDSixDQUFDO0FBQUEsSUFDTCxDQUFDO0FBQUEsRUFDTCxDQUFDO0FBQ0w7OztBQ3RIQSx3QkFBNEI7QUFDNUIsdUJBQW9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkVvQmpCLElBQUssS0FBQTs7O2lCQUNiLElBQUUsTUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkNBTEssVUFBVSxJQUFFLEtBQUUsSUFBSSxFQUFBLElBQUEseUJBQUE7OztBQUQ1QixhQU9NLFFBQUEsS0FBQSxNQUFBO0FBRkosYUFBd0IsS0FBQSxNQUFBOzs7Ozs7Ozs7Ozs7Ozs7Z0RBQWYsSUFBSyxLQUFBO0FBQUEsaUJBQUEsSUFBQSxRQUFBO2dEQUNiLElBQUUsTUFBQTtBQUFBLGlCQUFBLElBQUEsUUFBQTs4REFMSyxVQUFVLElBQUUsS0FBRSxJQUFJLEVBQUEsSUFBQSw0QkFBQTs7Ozs7Ozs7Ozs7Ozs7aUJBa0J6QixJQUFFLE1BQUE7Ozs7aUJBQVcsSUFBSyxLQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQ0FKWCxVQUFVLElBQUUsS0FBRSxJQUFJLEVBQUEsSUFBQSx5QkFBQTs7O0FBRDVCLGFBTU0sUUFBQSxLQUFBLE1BQUE7OztBQURDLGFBQXdCLEtBQUEsTUFBQTs7Ozs7Ozs7Ozs7OztnREFBNUIsSUFBRSxNQUFBO0FBQUEsaUJBQUEsSUFBQSxRQUFBO2dEQUFXLElBQUssS0FBQTtBQUFBLGlCQUFBLElBQUEsUUFBQTs4REFKWCxVQUFVLElBQUUsS0FBRSxJQUFJLEVBQUEsSUFBQSw0QkFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQkFoQnZCLElBQUk7O21DQUFULFFBQUksS0FBQSxHQUFBOzs7bUJBY0MsSUFBSTs7aUNBQVQsUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFqQlosYUE0Qk0sUUFBQSxNQUFBLE1BQUE7QUEzQkosYUFhTSxNQUFBLElBQUE7QUFaSixhQVdPLE1BQUEsS0FBQTs7Ozs7QUFFVCxhQVlNLE1BQUEsSUFBQTtBQVhKLGFBVU8sTUFBQSxLQUFBOzs7Ozs7O3VCQXZCRSxLQUFJOztxQ0FBVCxRQUFJLEtBQUEsR0FBQTs7Ozs7Ozs7Ozs7Ozs0Q0FBSjs7O3FCQWNLLEtBQUk7O21DQUFULFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7O3dDQUFKOzs7Ozs7Ozs7Ozs7OztRRHhCSyxXQUFnQjtRQUNoQixTQUFrQjtRQUNsQixTQUFrQjtRQUV2QixpQkFBaUIsSUFBSSxVQUFVLFdBQVc7bUNDU3ZCLE1BQUMsTUFBVyxhQUFhLElBQUksQ0FBQztpQ0FDaEMsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLEVBQUU7cUNBYXRDLE1BQUMsTUFBVyxhQUFhLElBQUksQ0FBQzttQ0FDaEMsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJFMEJwRCxjQUFPLElBQUssS0FBRSxJQUFNLEVBQUEsTUFBcEIsWUFBeUIsWUFBWSxJQUFLLEtBQUUsSUFBUSxFQUFBLEtBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkRBRDNDLFVBQVUsSUFBSyxHQUFBLENBQUEsSUFBQSxnQkFBQTtxRUFQQSxLQUFLLFFBQUssS0FBSyxjQUFjLE1BQUUsZ0JBQUE7bUNBRTFDLElBQUssTUFBRyxJQUFDLFFBQUssS0FBQyxNQUFHLEtBQUMsUUFDMUIsS0FBSSxNQUFHLEtBQUMsUUFBSyxLQUFDLE1BQUcsRUFBQzs7O0FBSjdCLGFBV00sUUFBQSxNQUFBLE1BQUE7QUFISixhQUVNLE1BQUEsSUFBQTs7Ozs7Ozs7Ozs7Ozs7aURBREgsZUFBTyxJQUFLLEtBQUUsSUFBTSxFQUFBLE1BQXBCLGFBQXlCLFlBQVksSUFBSyxLQUFFLElBQVEsRUFBQSxLQUFBO0FBQUEsaUJBQUEsSUFBQSxRQUFBOytFQUQzQyxVQUFVLElBQUssR0FBQSxDQUFBLElBQUEsbUJBQUE7Ozt5RkFQQSxLQUFLLFFBQUssS0FBSyxjQUFjLE1BQUUsbUJBQUE7Ozs7cUNBRTFDLElBQUssTUFBRyxJQUFDLFFBQUssS0FBQyxNQUFHLEtBQUMsUUFDMUIsS0FBSSxNQUFHLEtBQUMsUUFBSyxLQUFDLE1BQUcsRUFBQzs7Ozs7Ozs7Ozs7OztxQkFOeEIsSUFBTyxHQUFDLElBQUM7O21DQUFkLFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7dUJBQUMsS0FBTyxHQUFDLEtBQUM7O3FDQUFkLFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7OzBDQUFKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CQURHLElBQWdCOztpQ0FBckIsUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkEyQjhCLEdBQUM7OztnQkFFRixJQUFLLEVBQUE7OztnQkFJSixHQUFDOzsrQ0FwQ1gsT0FBTyxPQUFPLElBQWdCLEdBQUMsTUFBTSxDQUFBOzRDQUN4QyxPQUFPLE9BQU8sSUFBWSxHQUFDLE1BQU0sQ0FBQTs7O2tEQTRCeEMsSUFBSyxPQUFLOzs7a0RBTVYsSUFBSyxPQUFLLElBQVM7Ozs7OztBQXZDdkMsYUE2Q00sUUFBQSxNQUFBLE1BQUE7QUE1Q0osYUF1Qk0sTUFBQSxJQUFBOzs7OztBQUVOLGFBa0JNLE1BQUEsSUFBQTtBQWpCSixhQWdCTyxNQUFBLEtBQUE7QUFmTCxhQUE0QyxPQUFBLEtBQUE7O0FBRTVDLGFBWU8sT0FBQSxLQUFBO0FBWEwsYUFJQyxPQUFBLE9BQUE7OztBQUNELGFBQTRDLE9BQUEsS0FBQTs7O0FBQzVDLGFBSUMsT0FBQSxPQUFBOzs7Ozs7Ozs7Ozs7cUJBbENFLEtBQWdCOzttQ0FBckIsUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7d0NBQUo7OztpREFId0IsT0FBTyxPQUFPLEtBQWdCLEdBQUMsTUFBTSxDQUFBOzs7OENBQ3hDLE9BQU8sT0FBTyxLQUFZLEdBQUMsTUFBTSxDQUFBOzs0RUE0QnhDLEtBQUssT0FBSyxJQUFDOzs7O3FCQUdRLEtBQUssRUFBQTs0RUFHeEIsS0FBSyxPQUFLLEtBQVMsS0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRRGxFMUIsaUJBQXdCO1FBQ3hCLFdBQWdCO1VBRW5CLGFBQWE7VUFDYixxQkFBcUI7UUFFdkIsaUJBQWlCLElBQUksVUFBVSxXQUFXO1FBQzFDLFlBQVksYUFBYSxLQUFJLEVBQUc7TUFHbEMsUUFBUSxLQUFLLElBQUksV0FBVyxnQkFBZ0I7TUFFNUMsZUFBZTtzQ0M4Qk0sTUFBQyxNQUFXLGFBQWEsT0FBTyxDQUFDO29DQUNuQyxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsS0FBSztnREFrQnpDLFNBQVMsQ0FBQztnREFNVixTQUFTLENBQUM7Ozs7Ozs7OztBRHREbkMsU0FBQzt3QkFDQyxlQUFZLENBQUEsQ0FBQTtBQUNaLHFCQUFhLFFBQVMsV0FBSztnQkFDbkIsU0FBUSxNQUFNLE1BQU0sWUFBWSxLQUFLO2NBQ3ZDLE9BQU07QUFBUSx5QkFBYSxLQUFLLE1BQUs7Ozs7O0FBSTdDO0FBQUMscUJBQUEsR0FBRSxlQUFlLGFBQWEsSUFBSyxXQUFVLFNBQVMsT0FBTyxLQUFLLENBQUEsQ0FBQTs7O0FBRW5FO0FBQUMscUJBQUEsR0FBRSxtQkFBbUIsVUFBVSxZQUFZLENBQUE7OztBQUM1QztBQUFDLHFCQUFBLEdBQUUsVUFBVSxpQkFBaUIsSUFBSSxJQUFJLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQkdKdkIsSUFBSzs7bUNBQVYsUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QkFBQyxLQUFLOztxQ0FBVixRQUFJLEtBQUEsR0FBQTs7Ozs7Ozs7Ozs7OzswQ0FBSjs7Ozs7Ozs7Ozs7Ozs7OzRCQUY0QixJQUFhOzs7O0FBQTNDLGFBQW1ELFFBQUEsTUFBQSxNQUFBOzs7Ozs7Ozs7Ozs7Ozs0QkFXbkIsTUFBTSxJQUFjLEtBQUc7Ozs7QUFBbkQsYUFBOEQsUUFBQSxNQUFBLE1BQUE7Ozs7Ozs7Ozs7OztpQkFIN0QsY0FBTyxJQUFLLEtBQUUsSUFBTSxFQUFBLE1BQXBCLFlBQXlCLFlBQVksSUFBSyxLQUFFLElBQVEsRUFBQSxLQUFBOzs7Ozs7Ozs7Ozs7aUJBRWxELElBQUMsTUFBRyxJQUFLLElBQUMsU0FBUyxLQUFDLGtCQUFBLEdBQUE7Ozs7Ozs7Ozs7OztBQVB6QixhQU1PLFFBQUEsTUFBQSxNQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztpREFESixlQUFPLElBQUssS0FBRSxJQUFNLEVBQUEsTUFBcEIsYUFBeUIsWUFBWSxJQUFLLEtBQUUsSUFBUSxFQUFBLEtBQUE7QUFBQSxpQkFBQSxJQUFBLFFBQUE7VUFFbEQsSUFBQyxNQUFHLElBQUssSUFBQyxTQUFTLEdBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FYdkIsS0FBSyxJQUFDO0FBQU0sYUFBQTs7Ozs7Ozs7Ozs7O0FBRHBCLGFBaUJNLFFBQUEsS0FBQSxNQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZUFjSCxJQUFZLEVBQUE7Ozs7QUFUakIsYUFXTSxRQUFBLEtBQUEsTUFBQTtBQVZKLGFBU1MsS0FBQSxNQUFBOzs7Ozs7Ozs7Ozs7b0JBRE4sS0FBWSxFQUFBOzs7Ozs7Ozs7Ozs7OzttQkFoQ1YsSUFBWTs7aUNBQWpCLFFBQUksS0FBQSxHQUFBOzs7aUJBc0JILElBQVksR0FBQyxTQUFTLEtBQUMsZ0JBQUEsR0FBQTs7Ozs7Ozs7Ozs7Ozs7O0FBeEI5QixhQXNDTyxRQUFBLE1BQUEsTUFBQTtBQXJDTCxhQXFCTSxNQUFBLEdBQUE7Ozs7Ozs7Ozs7cUJBcEJHLEtBQVk7O21DQUFqQixRQUFJLEtBQUEsR0FBQTs7Ozs7Ozs7Ozs7Ozt3Q0FBSjs7VUFzQkMsS0FBWSxHQUFDLFNBQVMsR0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUR6Q2pCLGlCQUF3QjtRQUN4QixXQUFnQjtVQUVuQixhQUFhO1VBQ2IsU0FBUyxJQUFJLFVBQVU7UUFDekIsU0FBUyxlQUFlLG1CQUFtQjtNQUU3QyxlQUFlO3NDQ29CVSxNQUFDLE1BQVcsYUFBYSxPQUFPLENBQUM7b0NBQ25DLE1BQU0sYUFBYSxHQUFHLE1BQU0sS0FBSztnREFpQnJDLGVBQWUsZUFBZSxZQUFZLENBQUE7OEJBQzFDLE9BQUM7QUFDaEIsTUFBRSxlQUFjO29CQUNoQixlQUFlLGVBQWUsY0FBWSxFQUFJLENBQUE7Ozs7Ozs7Ozs7QUR2Q3REO0FBQUMscUJBQUEsR0FBRSxlQUNELGdCQUFnQixRQUNaLGVBQ0EsZ0JBQWdCLGNBQ2YsYUFBYSxFQUFDLEtBQ2QsYUFBYSxLQUFJLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FFWDFCLHdCQUEyQjtBQUMzQix1QkFBd0Q7OztBQ2R4RCxvQkFBMEI7QUFDMUIsd0JBQXFCO0FBVWQsMkJBQTJCLFFBQWtCLFFBQWU7QUFYbkU7QUFZRSxRQUFNLEVBQUUsbUJBQW1CLE9BQU87QUFFbEMsUUFBTSxRQUFRLE9BQU0sTUFBTSxFQUFFLE1BQU0sSUFBSTtBQUV0QyxNQUFJLGdCQUFnQjtBQUNsQixhQUFTLFFBQVEsT0FBTztBQUN0QixZQUFNLENBQUMsV0FBVyxXQUFXLEtBQUssTUFBTSxJQUFJO0FBQzVDLFlBQU0sT0FBTyxRQUFRLEtBQUssSUFBSTtBQUM5QixVQUFJLENBQUM7QUFBTTtBQUVYLFlBQU0sV0FBVyxJQUFJLGNBQWMscUJBQXFCLE1BQU0sRUFBRTtBQUVoRSxVQUFJLGFBQWEsTUFBTTtBQUNyQixjQUFNLFFBQVEsSUFBSSxjQUFjLGFBQWEsUUFBUTtBQUVyRCxjQUFNLFFBQWtCLDJDQUFPLGdCQUFQLG1CQUFvQixVQUFwQixZQUE2QixDQUFDO0FBQ3RELGNBQU0sVUFBb0IsMkNBQU8sZ0JBQVAsbUJBQW9CLFlBQXBCLFlBQStCLENBQUM7QUFFMUQsY0FBTSxhQUF1QixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0RSxZQUFJLFdBQVcsUUFBUTtBQUNyQixrQkFBUSxLQUFLLFdBQVcsS0FBSyxJQUFJO0FBQUEsUUFDbkM7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxTQUFPLE1BQU0sS0FBSyxJQUFJO0FBQ3hCO0FBUU8scUJBQ0wsVUFDQSxhQUNBLFNBQVMsTUFDRDtBQUNSLE1BQUksU0FBUTtBQUNaLFFBQU0sUUFBTyw2QkFBVSxRQUFRO0FBQy9CLFFBQU0sV0FBVyxNQUFLLElBQUksQ0FBQyxVQUFTLE1BQUssUUFBUSxDQUFDO0FBQ2xELFdBQVMsUUFBUSxDQUFDLFVBQVMsTUFBSyxNQUFNLENBQUM7QUFFdkMsUUFBTSxhQUFhLFdBQVcsUUFBUSxNQUFPO0FBRTdDLFFBQU0sVUFFRixDQUFDO0FBRUwsV0FBUyxRQUFRLENBQUMsVUFBUztBQUN6QixhQUFTLFFBQVEsR0FBRyxRQUFRLE1BQUssUUFBUSxTQUFTO0FBQ2hELFlBQU0sV0FBVyxNQUFLO0FBR3RCLFVBQ0UsUUFBUSxlQUFlLFFBQVEsS0FDL0IsUUFBUSxVQUFVLFNBQVMsS0FBSztBQUNoQztBQUFBLFdBQ0c7QUFDSCxrQkFBUyxHQUFHLFdBQVcsT0FBTyxLQUFLLE1BQU0sY0FBYyxTQUFTLFFBQVEsSUFBSTtBQUFBO0FBRzVFLFlBQUksQ0FBQyxRQUFRLGVBQWUsUUFBUTtBQUFHLGtCQUFRLFlBQVksQ0FBQztBQUM1RCxnQkFBUSxVQUFVLEtBQUssS0FBSztBQUFBLE1BQzlCO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQztBQUNELFNBQU87QUFDVDtBQUVBLDhCQUFxQyxRQUFrQjtBQUNyRCxRQUFNLEVBQUUsVUFBVSxZQUFZO0FBQzlCLFFBQU0sRUFBRSxlQUFlLHNCQUFzQjtBQUM3QyxRQUFNLEVBQUUsYUFBYSxZQUFZO0FBRWpDLFFBQU0sWUFBWSxhQUFhLFNBQVMsTUFBTTtBQUM5QyxRQUFNLFdBQVcsWUFBWSxXQUFXLFFBQVE7QUFDaEQsUUFBTSxTQUFRLGtCQUFrQixRQUFRLFlBQVksVUFBVSxlQUFlLGlCQUFpQixDQUFDO0FBRS9GLDhCQUFLLEVBQUUsY0FBTSxDQUFDO0FBQ2QsUUFBTSxLQUFLLE1BQUs7QUFDbEI7QUFFQSwrQkFBc0MsUUFBa0I7QUFDdEQsUUFBTSxFQUFFLFVBQVUsWUFBWTtBQUM5QixRQUFNLEVBQUUsZUFBZSxzQkFBc0I7QUFFN0MsUUFBTSxZQUFZLGFBQWEsU0FBUyxNQUFNO0FBQzlDLFFBQU0sVUFBVSxhQUFhLFNBQVMsSUFBSTtBQUUxQyxRQUFNLFFBQVEsU0FBUyxPQUFPO0FBRTlCLE1BQUksY0FBYztBQUNsQixRQUFNLFFBQVEsQ0FBQyxhQUFhO0FBQzFCLG1CQUFlLFdBQVc7QUFDMUIsVUFBTSxXQUFXLFlBQVksV0FBVyxRQUFRO0FBQ2hELG1CQUNFLGtCQUFrQixRQUFRLFlBQVksVUFBVSxlQUFlLGlCQUFpQixDQUFDLElBQUk7QUFBQSxFQUN6RixDQUFDO0FBRUQsOEJBQUssRUFBRSxZQUFZLENBQUM7QUFDcEIsUUFBTSxLQUFLLFdBQVc7QUFDeEI7QUFFTyxJQUFNLG1CQUFtQixDQUM5QixRQUNBLE9BQU8sVUFFUCxPQUNHLE1BQU0sSUFBSSxFQUNWLElBQUksQ0FBQyxTQUFTO0FBQ2IsUUFBTSxDQUFDLFdBQVcsV0FBVyxLQUFLLE1BQU0sSUFBSTtBQUM1QyxTQUFPLENBQUMsT0FBTyxLQUFLLFFBQVEsUUFBUSxLQUFLLElBQUksQ0FBQztBQUloRCxDQUFDLEVBQ0EsT0FBTyxDQUFDLFNBQVMsS0FBSyxPQUFPLEVBQUU7Ozs7Ozs7Ozs7O2VDbEhqQyxJQUFZLEVBQUE7OztpQ0FIRCxJQUFLLEVBQUE7Ozs7QUFKbkIsYUFRUyxRQUFBLFFBQUEsTUFBQTs7OzswQkFMRyxJQUFPLEVBQUE7QUFBUCxnQkFBTyxHQUFBLE1BQUEsTUFBQSxTQUFBOzs7Ozs7OztvQkFJaEIsSUFBWSxFQUFBOzttQ0FIRCxJQUFLLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQ1pOLFNBQUk7UUFDSixZQUFtQjtRQUNuQixXQUFXLFVBQUs7UUFDaEIsUUFBUSxPQUFFOzs7Ozs7Ozs7Ozs7O0FBRXJCO0FBQUMscUJBQUEsR0FBRSxlQUFlLElBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkVRUixJQUFLLE1BQUk7Ozs7OztZQU9GLElBQUs7Z0JBQVk7ZUFBZTs7Ozs7O2dCQUl2QyxJQUFLLE1BQUksSUFBUTs7Ozs7Ozs7Ozs7Ozs7O0FBZC9CLGFBb0JNLFFBQUEsS0FBQSxNQUFBOzs7Ozs7Ozs7Ozt3Q0FqQlEsS0FBSyxNQUFJOzs7Ozs7b0NBT0YsS0FBSzs7Ozt3Q0FJWixLQUFLLE1BQUksS0FBUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkFmNUIsSUFBTyxNQUFBLGlCQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7O1VBQVAsS0FBTyxJQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UURQQyxVQUFVLFNBQUk7UUFDZCxhQUFnQjtRQUNoQixrQkFBc0M7TUFFN0MsUUFBUTs7b0JDU04sU0FBUyxDQUFDO0FBQ1Ysa0JBQWMsS0FBSzs7O29CQVVuQixTQUFTLENBQUM7QUFDVixrQkFBYyxLQUFLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FMSDNCLElBQU0sV0FBVztBQUVqQixJQUFNLGdCQUFOLGNBQTRCLHdCQUFrQztBQUFFO0FBRXpELElBQU0sVUFBTixjQUFzQiwyQkFBb0M7QUFBQSxFQUkvRCxZQUNFLE9BQ0EsVUFDQSxVQUNBO0FBQ0EsVUFBTTtBQUNOLFNBQUssUUFBUTtBQUNiLFNBQUssUUFBUTtBQUNiLFNBQUssV0FBVztBQUFBLEVBQ2xCO0FBQUEsRUFFQSxTQUFTLE1BQTRCO0FBQ25DLFVBQU0sTUFBSyxNQUFNLFNBQVMsSUFBSTtBQUM5QixXQUFPLElBQUcsR0FBRyxNQUFNLEdBQUcsRUFBRTtBQUFBLEVBQzFCO0FBQUEsRUFFQSxRQUFRLFFBQXNCO0FBQzVCLFdBQU8sS0FBSyxNQUFNLHFCQUFxQixPQUFPLElBQUksRUFBRTtBQUFBLEVBQ3REO0FBQUEsRUFFQSxNQUFNLGFBQ0osVUFDQSxVQUNBLE9BQ3FDO0FBQ3JDLFVBQU0sUUFBMEIsQ0FBQztBQUNqQyxVQUFNLGFBQWEsSUFBSSxJQUNyQixTQUFTLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQzdEO0FBQ0EsYUFBUyxRQUFRLENBQUMsU0FBUztBQUN6QixZQUFNLE9BQU8sS0FBSyxTQUFTLElBQUk7QUFDL0IsVUFBSSxDQUFDLEtBQUssTUFBTSxRQUFRLElBQUksR0FBRztBQUM3QjtBQUFBLE1BQ0Y7QUFDQSxXQUFLLE1BQU0sZUFDVCxLQUFLLFNBQVMsSUFBSSxHQUNsQixDQUFDLEtBQUssT0FBTSxRQUFRLFdBQVc7QUFDN0IsWUFBSSxXQUFXLElBQUksTUFBTSxHQUFHO0FBQzFCLGdCQUFNLEtBQUs7QUFBQSxZQUNULE1BQU07QUFBQSxjQUNKLElBQUksTUFBTSxXQUFXO0FBQUEsY0FDckIsUUFBUSxNQUFNLEtBQUssUUFBUSxRQUFRLElBQUk7QUFBQSxjQUN2QyxRQUFRLE1BQU0sS0FBSyxRQUFRLFFBQVEsSUFBSTtBQUFBLGNBQ3ZDLE1BQU0sTUFBSztBQUFBLGNBQ1gsS0FBSyxNQUFLO0FBQUEsWUFDWjtBQUFBLFlBQ0EsU0FBUyxRQUFRLE1BQUssYUFBYSxNQUFLO0FBQUEsVUFDMUMsQ0FBQztBQUFBLFFBQ0g7QUFBQSxNQUNGLENBQ0Y7QUFBQSxJQUNGLENBQUM7QUFDRCxXQUFPLFFBQVEsUUFBUSxLQUFLO0FBQUEsRUFDOUI7QUFBQSxFQUVBLFVBQVUsTUFBK0I7QUFDdkMsV0FBTyxJQUFJLGNBQWM7QUFBQSxFQUMzQjtBQUFBLEVBRUEsTUFBTSxpQkFDSixTQUNBLE1BQ3FDO0FBQ3JDLFVBQU0sWUFBWSxDQUFDO0FBQ25CLGVBQVcsVUFBVSxTQUFTO0FBQzVCLFlBQU0sT0FBTyxPQUFPLEdBQUcsTUFBTSxHQUFHLEVBQUU7QUFDbEMsVUFBSSxDQUFDLEtBQUssTUFBTSxRQUFRLElBQUksR0FBRztBQUM3QjtBQUFBLE1BQ0Y7QUFDQSxpQkFBVyxZQUFZLEtBQUssTUFBTSxVQUFVLElBQUksR0FBRztBQUNqRCxrQkFBVSxLQUNSLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxXQUFXLE9BQU8sUUFBUSxHQUFHLElBQUksQ0FDNUQ7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUNBLFdBQU87QUFBQSxFQUNUO0FBQUEsRUFFQSxZQUFZLEtBQVcsTUFBb0M7QUFDekQ7QUFBQSxFQUNGO0FBQUEsRUFFQSxVQUFrQjtBQUNoQixXQUFPO0FBQUEsRUFDVDtBQUFBLEVBRUEsSUFBSSxRQUFlLE1BQWlEO0FBQ2xFLFVBQU0sT0FBTyxLQUFLLFFBQVEsTUFBTTtBQUNoQyxRQUFJLFFBQVE7QUFDWixRQUFJLEtBQUssWUFBWSxPQUFPLE1BQU0sS0FBSyxVQUFVO0FBQy9DLGNBQVEsS0FBSyxTQUFTLE9BQU87QUFBQSxJQUMvQjtBQUNBLFFBQUksU0FBUyxNQUFNO0FBQ2pCLFlBQU0sV0FBVyxhQUFhLE9BQU8sRUFBRTtBQUN2QyxlQUFTLEtBQUssUUFBUTtBQUN0QixhQUFPLFFBQVEsUUFBUSxRQUFRO0FBQUEsSUFDakM7QUFDQSxVQUFNLFFBQVEsS0FBSyxNQUFNLGFBQWEsSUFBSTtBQUMxQyxRQUFJLFVBQVUsTUFBTTtBQUNsQixrQ0FBSyx5QkFBeUIsTUFBTTtBQUNwQyxhQUFPLFFBQVEsUUFBUSxhQUFhLE9BQU8sRUFBRSxDQUFDO0FBQUEsSUFDaEQ7QUFFQSxXQUFPLGFBQWEsTUFBTSxLQUFLLFFBQVEsS0FBSyxVQUFVLE9BQU8sS0FBSyxDQUFDLEVBQUUsS0FDbkUsQ0FBQyxTQUFTO0FBQ1IsV0FBSyxLQUFLLFFBQVE7QUFDbEIsYUFBTztBQUFBLElBQ1QsQ0FDRjtBQUFBLEVBQ0Y7QUFDRjtBQUVPLHFCQUNMLFFBQ0EsUUFDQSxjQUNBLE1BQ0EsV0FBd0MsTUFDaEM7QUFDUixNQUFJO0FBQ0YsVUFBTSxjQUFjLFVBQVUsR0FBRztBQUNqQyxRQUFJLENBQUMsYUFBYTtBQUVoQjtBQUFBLElBQ0Y7QUFDQSxhQUFTLE9BQU8sbUJBQW1CO0FBQ2pDLFVBQUksT0FBTyxRQUFRLEtBQUssU0FBUztBQUMvQixhQUFLLE9BQU8sa0JBQWtCO0FBQUEsSUFDbEM7QUFFQSxVQUFNLFVBQVUsSUFBSSxRQUNsQixPQUFPLE9BQ1AsSUFBSSxlQUNKLFFBQ0Y7QUFDQSxVQUFNLFNBQXVCO0FBQUEsTUFDM0IsV0FBVztBQUFBLE1BQ1gsWUFBWSxDQUFDLE9BQU87QUFBQSxJQUN0QjtBQUVBLFVBQU0sUUFBUSxZQUFZLFlBQVksUUFBUSxNQUFNLFFBQVEsWUFBWTtBQUN4RSxXQUFPLFNBQVMsS0FBSztBQUNyQixnQ0FBSyxFQUFFLE1BQU0sQ0FBQztBQUNkLFdBQU87QUFBQSxFQUNULFNBQVMsUUFBUDtBQUNBLGdDQUFLLEVBQUUsY0FBTSxDQUFDO0FBQ2QsV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQUVBLHNCQUFzQixPQUFlLFFBQWdCO0FBQ25ELE1BQUksQ0FBQyxPQUFPO0FBQ1Y7QUFBQSxFQUNGO0FBQ0EsUUFBTSxHQUFHLFlBQVksQ0FBQyxRQUFRO0FBRTVCLFFBQUksSUFBSSxjQUFjLENBQUMsTUFBTTtBQUMzQixZQUFNLE9BQU0sRUFBRTtBQUNkLFlBQU0sT0FBTyxLQUFJLElBQUksTUFBTSxLQUFLLFNBQVMsT0FBTyxRQUFRLENBQUM7QUFDekQsV0FBSSxRQUFRO0FBQUEsUUFDVixRQUFRO0FBQUEsVUFDTixNQUFNO0FBQUEsUUFDUjtBQUFBLFFBQ0EsVUFBVTtBQUFBLFFBQ1YsT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLE1BQ1IsQ0FBQztBQUFBLElBQ0gsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUNIO0FBRUEscUJBQXFCLE9BQWU7QUFDbEMsUUFBTSxHQUFHLFlBQVksQ0FBQyxRQUFRO0FBQzVCLFFBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQztBQUFBLEVBQ3JCLENBQUM7QUFDSDtBQUVBLHdCQUNFLE9BQ0EsUUFDQSxTQUFTLEdBQ21CO0FBRTVCLE1BQUksV0FBd0MsQ0FBQztBQUM3QyxXQUFTLFNBQVMsU0FBUztBQUMzQixRQUFNLFFBQVEsQ0FBQyxVQUFTO0FBQ3RCLGFBQVMsSUFBSSxHQUFHLElBQUksTUFBSyxRQUFRLEtBQUs7QUFDcEMsWUFBTSxPQUFPLE1BQUssS0FBSztBQUN2QixZQUFNLFFBQVEsTUFBSyxTQUFTLElBQUksSUFBSTtBQUNwQyxVQUFJLFFBQVEsVUFBVTtBQUNwQixpQkFBUyxRQUFRLEtBQUssSUFBSSxTQUFTLE9BQU8sS0FBSztBQUFBLE1BQ2pELE9BQU87QUFDTCxpQkFBUyxRQUFRO0FBQUEsTUFDbkI7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBQ0QsU0FBTztBQUNUO0FBRUEscUJBQXFCLE9BQWUsT0FBZTtBQUNqRCxRQUFNLElBQUksRUFBRSxVQUFVLFFBQVEsRUFBRSxTQUFTLFVBQVU7QUFDbkQsUUFBTSxJQUFJLEVBQUUsV0FBVyxRQUFRLEVBQUUsWUFBWSxVQUFVO0FBQ3pEO0FBRU8sMEJBQ0wsUUFDQSxRQUNBLE9BQ0EsUUFDQSxNQUNBO0FBQ0EsUUFBTSxhQUFhLFNBQVMsY0FBYyxLQUFLO0FBQy9DLGFBQVcsU0FBUyxZQUFZO0FBQ2hDLFNBQU8sWUFBWSxVQUFVO0FBRTdCLFFBQU0sVUFBVSxTQUFTLGNBQWMsS0FBSztBQUM1QyxVQUFRLFNBQVMsb0JBQW9CO0FBQ3JDLGFBQVcsWUFBWSxPQUFPO0FBRTlCLFFBQU0sY0FBYyxPQUFPLFNBQVM7QUFFcEMsTUFBSSxVQUFrQjtBQUN0QixNQUFJLFlBQW9CO0FBRXhCLE1BQUksb0JBQVk7QUFBQSxJQUNkLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLFNBQVMsTUFBTTtBQUNiLFlBQUksU0FBUztBQUNYLGlCQUFPLFNBQVMsYUFBYSxVQUFVLE9BQU8sWUFBWTtBQUMxRCxrQkFBUSxLQUFLLEVBQUUsU0FBUyxLQUFLLENBQUM7QUFBQSxRQUNoQztBQUNBLFlBQUksV0FBVztBQUNiLGlCQUFPLFNBQVMsY0FBYyxHQUFHLFVBQVUsSUFBSSxZQUFZO0FBQzNELG9CQUFVLEtBQUssRUFBRSxTQUFTLE1BQU0sQ0FBQztBQUFBLFFBQ25DO0FBQUEsTUFDRjtBQUFBLE1BQ0EsVUFBVTtBQUFBLE1BQ1YsT0FBTztBQUFBLElBQ1Q7QUFBQSxFQUNGLENBQUM7QUFFRCxNQUFJLG9CQUFZO0FBQUEsSUFDZCxRQUFRO0FBQUEsSUFDUixPQUFPO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixTQUFTLE1BQU07QUFDYixZQUFJLFdBQVc7QUFDYixpQkFBTyxTQUFTLGNBQWMsR0FBRyxVQUFVLE9BQU8sWUFBWTtBQUM5RCxrQkFBUSxLQUFLLEVBQUUsU0FBUyxNQUFNLENBQUM7QUFDL0IsY0FBSSxTQUFTO0FBQ1gsbUJBQU8sU0FBUyxhQUFhLFVBQVUsSUFBSSxZQUFZO0FBQ3ZELHNCQUFVLEtBQUssRUFBRSxTQUFTLEtBQUssQ0FBQztBQUFBLFVBQ2xDO0FBQ0E7QUFBQSxRQUNGO0FBQ0EsY0FBTSxNQUFNLGFBQWEsT0FBTyxPQUFPLFFBQVEsSUFBSTtBQUNuRCxjQUFNLFNBQVMsb0JBQW9CLEtBQUssT0FBTyxTQUFTLFNBQVM7QUFDakUsY0FBTSxZQUFZLGFBQWEsUUFBUSxNQUFNO0FBRzdDLGNBQU0sRUFBRSxzQkFBc0IsT0FBTztBQUNyQyxjQUFNLFdBQVcsWUFBWSxXQUFXLE1BQU07QUFDOUMsY0FBTSxTQUFRLFlBQVksVUFBVSxPQUFPLGlCQUFpQjtBQUM1RCxjQUFNLFFBQVEsT0FDWCxNQUFNLElBQUksRUFDVixJQUFJLENBQUMsU0FBUztBQUNiLGdCQUFNLENBQUMsV0FBVyxXQUFXLEtBQUssTUFBTSxJQUFJO0FBQzVDLGlCQUFPLFFBQVEsS0FBSyxJQUFJO0FBQUEsUUFDMUIsQ0FBQyxFQUNBLE9BQU8sQ0FBQyxTQUFTLElBQUk7QUFDeEIsWUFBSSxlQUFlLGVBQWUsVUFBVSxNQUFNO0FBQ2xELGNBQU0sZUFBZSxLQUFLLElBQUksR0FBRyxPQUFPLE9BQU8sWUFBWSxDQUFDO0FBRTVELG9CQUFZLElBQUksbUJBQVc7QUFBQSxVQUN6QixRQUFRO0FBQUEsVUFDUixPQUFPO0FBQUEsWUFDTCxVQUFVO0FBQUEsWUFDVixlQUFlLENBQUMsTUFBTTtBQUNwQiwwQkFBWSxXQUFXLENBQUM7QUFBQSxZQUMxQjtBQUFBLFVBQ0Y7QUFBQSxRQUNGLENBQUM7QUFDRCxZQUFJLFNBQVMsSUFBSSxJQUFJLEtBQUs7QUFDMUIsZUFBTyxJQUFJLE1BQU07QUFDakIsY0FBTSxTQUFRLE1BQU0sS0FBSyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLO0FBRXJELGNBQU0sV0FBVyxPQUFPLE9BQU8sQ0FBQyxHQUFHLElBQUk7QUFDdkMsY0FBTSxVQUFTLE9BQU8sU0FBUztBQUMvQixZQUFJLFlBQVcsYUFBYTtBQUMxQixtQkFBUyxTQUFTO0FBQUEsWUFFaEIsTUFBTTtBQUFBLFlBQ04sU0FBUztBQUFBLFlBQ1QsUUFBUSxDQUFDLFVBQVU7QUFDakIscUJBQU8sS0FBSyxNQUFNLE1BQU0sRUFBRSxRQUFRLENBQUMsUUFBTztBQUN4QyxzQkFBTSxPQUFPLE1BQU0sT0FBTyxHQUFFLEVBQUU7QUFDOUIsb0JBQUksUUFBUSxjQUFjO0FBQ3hCLHdCQUFNLE9BQU8sS0FBSSxPQUFPLGFBQWEsUUFBUTtBQUFBLGdCQUMvQyxPQUFPO0FBQ0wsd0JBQU0sT0FBTyxLQUFJLE9BQU87QUFBQSxnQkFDMUI7QUFBQSxjQUNGLENBQUM7QUFBQSxZQUNIO0FBQUEsVUFDRjtBQUFBLFFBQ0YsT0FBTztBQUNMLG1CQUFTLFNBQVM7QUFBQSxRQUNwQjtBQUNBLGNBQU0sVUFBUyxZQUFXLFVBQVUsWUFBVztBQUMvQyxZQUFJLFNBQVE7QUFFVixtQkFBUyxhQUFhO0FBQ3RCLG1CQUFTLFNBQVM7QUFBQSxRQUNwQixPQUFPO0FBQ0wsbUJBQVMsV0FBVztBQUNwQixtQkFBUyxnQkFBZ0I7QUFBQSxRQUMzQjtBQUVBLG9CQUFZLFlBQVksUUFBUSxRQUFRLFFBQU8sVUFBVSxZQUFZO0FBRXJFLFlBQUksU0FBUTtBQUNWLHVCQUFhLFdBQVcsTUFBTTtBQUFBLFFBQ2hDLE9BQU87QUFDTCxzQkFBWSxTQUFTO0FBQUEsUUFDdkI7QUFFQSxZQUFJLFNBQVM7QUFDWCxpQkFBTyxTQUFTLGFBQWEsU0FBUyxZQUFZO0FBQ2xELGtCQUFRLEtBQUssRUFBRSxTQUFTLE1BQU0sQ0FBQztBQUFBLFFBQ2pDO0FBQUEsTUFDRjtBQUFBLE1BQ0EsVUFBVTtBQUFBLE1BQ1YsT0FBTztBQUFBLElBQ1Q7QUFBQSxFQUNGLENBQUM7QUFDRCxRQUFNLGFBQWEsZUFBZSxPQUFPLFFBQVEsQ0FBQztBQUNsRCxRQUFNLGFBQWEsS0FBSyxJQUFJLEdBQUcsT0FBTyxPQUFPLFVBQVUsQ0FBQztBQUV4RCxNQUFJO0FBQ0osUUFBTSxVQUFVLElBQUksbUJBQVc7QUFBQSxJQUM3QixRQUFRO0FBQUEsSUFDUixPQUFPO0FBQUEsTUFDTCxVQUFVO0FBQUEsTUFDVixlQUFlLENBQUMsTUFBTTtBQUNwQixvQkFBWSxTQUFTLENBQUM7QUFBQSxNQUN4QjtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFlRCxNQUFJLFFBQVEsTUFBTSxLQUNoQixJQUFJLElBQUksTUFBTSxPQUFPLENBQUMsTUFBTSxTQUFTLEtBQUssT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDN0Q7QUFFQSxRQUFNLEtBQUssTUFBTTtBQUNqQixVQUFRLE1BQU0sSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLO0FBRWxDLFFBQU0sU0FBeUIsT0FBTyxPQUFPLENBQUMsR0FBRyxJQUFJO0FBRXJELFFBQU0sU0FBUyxPQUFPLFNBQVM7QUFDL0IsTUFBSSxXQUFXLGFBQWE7QUFDMUIsV0FBTyxTQUFTO0FBQUEsTUFFZCxNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxRQUFRLENBQUMsVUFBVTtBQUNqQixlQUFPLEtBQUssTUFBTSxNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQU87QUFDeEMsZ0JBQU0sT0FBTyxNQUFNLE9BQU8sR0FBRSxFQUFFO0FBQzlCLGNBQUksUUFBUSxZQUFZO0FBQ3RCLGtCQUFNLE9BQU8sS0FBSSxPQUFPLGFBQWEsV0FBVyxRQUFRO0FBQUEsVUFDMUQsT0FBTztBQUNMLGtCQUFNLE9BQU8sS0FBSSxPQUFPLGFBQWE7QUFBQSxVQUN2QztBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGO0FBQUEsRUFDRixPQUFPO0FBQ0wsV0FBTyxTQUFTO0FBQUEsRUFDbEI7QUFDQSxRQUFNLFNBQVMsV0FBVyxVQUFVLFdBQVc7QUFDL0MsTUFBSSxRQUFRO0FBRVYsV0FBTyxhQUFhO0FBQ3BCLFdBQU8sU0FBUztBQUFBLEVBQ2xCLE9BQU87QUFDTCxXQUFPLFdBQVc7QUFFbEIsV0FBTyxnQkFBZ0I7QUFBQSxFQUN6QjtBQUNBLFlBQVUsWUFBWSxRQUFRLFFBQVEsT0FBTyxRQUFRLFVBQVU7QUFDL0QsTUFBSSxRQUFRO0FBQ1YsaUJBQWEsU0FBUyxNQUFNO0FBQUEsRUFDOUIsT0FBTztBQUNMLGdCQUFZLE9BQU87QUFBQSxFQUNyQjtBQUNGOzs7QVBsYUEsNEJBQTRCLFFBQWtCO0FBQzVDLFFBQU0sRUFBRSxVQUFVLE9BQU8sWUFBWTtBQUNyQyxRQUFNLEVBQUUsc0JBQXNCLGNBQWM7QUFFNUMsTUFDRSxVQUFVLFNBQVMsRUFBRSxNQUFNLENBQUMsVUFBVSxxQkFBcUIsU0FBUyxLQUFLLENBQUMsR0FDMUU7QUFDQSxXQUFPLGFBQWEsU0FBUyxJQUFJO0FBQUEsRUFDbkMsT0FBTztBQUNMLFVBQU0sWUFBWSxxQkFDZixJQUFJLENBQUMsVUFBTztBQWpDbkI7QUFpQ3NCLGdDQUFhLFdBQVcsT0FBTyxJQUFJLE1BQW5DLG1CQUF1QztBQUFBLEtBQUUsRUFDeEQsT0FBTyxDQUFDLFVBQVUsVUFBVSxNQUFTO0FBQ3hDLFVBQU0sV0FBVyxnQkFBZ0IsT0FBTztBQUFBLE1BQ3RDLEdBQUc7QUFBQSxNQUNILEdBQUc7QUFBQSxJQUNMLENBQUM7QUFDRCxVQUFNLFNBQVMsb0JBQW9CLFVBQVUsU0FBUztBQUN0RCxXQUFPLGFBQWEsUUFBUSxJQUFJO0FBQUEsRUFDbEM7QUFDRjtBQUVBLHdCQUNFLFVBQ0EsR0FDQSxVQUNtQjtBQUNuQixRQUFNLEVBQUUsVUFBVSxjQUFjO0FBQ2hDLE1BQUksY0FBYztBQUFNLFdBQU87QUFFL0IsUUFBTSxZQUFZLFlBQVksR0FBRyxRQUFRO0FBQ3pDLE1BQUksaUJBQWlCLENBQUMsR0FBRyxTQUFTO0FBRWxDLFFBQU0sRUFBRSxZQUFZLGtDQUFrQztBQUV0RCxNQUVFLFdBQVcsTUFDWCxlQUFlLFFBQ2Y7QUFDQSxxQkFBaUIsZUFBZSxPQUFPLENBQUMsVUFDdEMsV0FBVyxTQUFTLE1BQU0sRUFBRSxDQUM5QjtBQUNBLFFBQUksZUFBZSxXQUFXLEtBQUs7QUFDakMsdUJBQWlCLENBQUMsR0FBRyxTQUFTO0FBQUEsRUFDbEM7QUFFQSxRQUFNLGVBQWUsZUFDbEIsT0FBTyxDQUFDLFVBQVUsTUFBTSxTQUFTLENBQUMsRUFDbEMsS0FBSyxDQUFDLElBQUcsTUFBTSxHQUFFLFNBQVMsRUFBRSxNQUFNO0FBRXJDLFNBQU87QUFDVDtBQUVBLHNCQUFzQixRQUFrQixVQUFrQjtBQUN4RCxRQUFNLEVBQUUsVUFBVTtBQUNsQixRQUFNLEVBQUUsY0FBYyxPQUFPO0FBQzdCLE1BQUksQ0FBQztBQUFPLFdBQU87QUFDbkIsUUFBTSxZQUEwQixrQkFBa0I7QUFFbEQsUUFBTSxZQUFZLFVBQVUsQ0FBQyxHQUFHLElBQUcsR0FBRyxNQUFNO0FBQzFDLFVBQU0sRUFBRSxLQUFLLE9BQU8sWUFBWTtBQUNoQyxRQUFJLFFBQVEsVUFBVSxRQUFRO0FBQVE7QUFDdEMsUUFBSSxNQUFNLFVBQVU7QUFDbEIsZ0JBQVUsS0FBSyxNQUFNLEtBQUssRUFBRSxPQUFPLElBQUksR0FBRyxRQUFRLENBQUM7QUFBQSxJQUNyRCxPQUFPO0FBQ0wsWUFBTSxXQUFXLGFBQWEsV0FBVyxPQUFPLEdBQUcsRUFBRTtBQUNyRCxnQkFBVSxVQUFVLEdBQUcsR0FBRyxTQUFTLEtBQUs7QUFBQSxRQUN0QyxPQUFPO0FBQUEsUUFDUCxJQUFJO0FBQUEsUUFDSjtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGLENBQUM7QUFDRCxTQUFPO0FBQ1Q7QUFFTyx3QkFBd0IsTUFBYyxTQUFpQixHQUFHO0FBQy9ELFFBQU0sU0FDSCxlQUFjLFFBQVEsSUFBSSxJQUFJLFVBQVUsY0FBYztBQUN6RCxTQUFPLGNBQWMsU0FBUSxJQUFJLGNBQWMsU0FBUyxTQUFRO0FBQ2xFO0FBRUEseUJBQWdDLFFBQWlDO0FBekdqRTtBQTBHRSxNQUFJO0FBQ0YsVUFBTSxFQUFFLFVBQVUsSUFBSSxVQUFVO0FBQ2hDLFVBQU07QUFBQSxNQUNKO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLFFBQ0U7QUFFSixPQUFHLFFBQVEsV0FBVztBQUV0QixVQUFNLGVBQWUsSUFBSSxVQUFVLG9CQUFvQiw2QkFBWTtBQUNuRSxVQUFNLE9BQU8sNkNBQWM7QUFFM0IsUUFDRSxDQUFDLFdBQ0QsQ0FBQyxnQkFDQSxTQUFTLGFBQWEsQ0FBQyxxQkFDeEI7QUFDQSx5REFBYyxZQUFZLGNBQWMsaUJBQXhDLG1CQUFzRDtBQUN0RCxhQUFPLEdBQUcsTUFBTTtBQUFBLElBQ2xCO0FBRUEsVUFBTSxFQUFFLFNBQVM7QUFDakIsVUFBTSxFQUFFLGdCQUFnQixVQUFJLGNBQWMsYUFBYSxJQUFJLE1BQW5DLFlBQXdDLENBQUM7QUFHakUsUUFBSSw0Q0FBYyxtQkFBa0IsNENBQWM7QUFBa0IsYUFBTyxHQUFHLE1BQU07QUFFcEYsVUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBSSxDQUFDLE1BQU0sUUFBUSxRQUFRO0FBQUcsYUFBTyxHQUFHLE1BQU07QUFFOUMsVUFBTSxPQUNKLFNBQVMsWUFDTCxhQUFhLFlBQVksWUFBWSxjQUNyQywyQkFDRixJQUNFLGFBQWEsVUFBVSxjQUFjLDBCQUEwQjtBQUVyRSx1QkFBYSxZQUNWLGlCQUFpQixXQUFXLE1BRC9CLG1CQUVJLFFBQVEsQ0FBQyxVQUFVLE1BQU0sT0FBTztBQUVwQyxVQUFNLFdBQVcsbUJBQW1CLE1BQU07QUFDMUMsVUFBTSxlQUFlLGVBQWUsVUFBVSxVQUFVLElBQUk7QUFDNUQsZ0NBQUssRUFBRSxhQUFhLENBQUM7QUFFckIsVUFBTTtBQUFBLE1BQ0osTUFBTSxFQUFFLE9BQU8sT0FBTyxVQUFVO0FBQUEsTUFDaEMsTUFBTSxFQUFFLE9BQU8sT0FBTyxVQUFVO0FBQUEsUUFDOUIsYUFBYSxRQUFRLFFBQVE7QUFHakMsVUFBTSxPQUFPLENBQUMsR0FBRyxLQUFLO0FBQ3RCLFVBQU0sUUFBUSxDQUFDLE1BQU07QUFDbkIsVUFBSSxLQUFLLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTTtBQUMzQyxhQUFLLEtBQUssQ0FBQztBQUFBLElBQ2YsQ0FBQztBQUNELFVBQU0sT0FBTyxDQUFDLEdBQUcsS0FBSztBQUN0QixVQUFNLFFBQVEsQ0FBQyxNQUFNO0FBQ25CLFVBQUksS0FBSyxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU07QUFDM0MsYUFBSyxLQUFLLENBQUM7QUFBQSxJQUNmLENBQUM7QUFFRCxVQUFNLFVBQVUsQ0FBQyxhQUFhLFVBQVUsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxLQUFLO0FBRTlELFFBQUksV0FBVyxrQkFBa0I7QUFBSSxhQUFPLEdBQUcsTUFBTTtBQUVyRCxVQUFNLHNCQUNKLFNBQVMsWUFDTCwwRUFDQTtBQUVOLFVBQU0sZ0JBQ0osd0JBQXdCLEtBQ3BCLFNBQVMsY0FBYyxtQkFBbUIsSUFDMUM7QUFDTixVQUFNLFlBQVksZ0JBQ2QsaUJBQWlCLGFBQWEsRUFBRSxpQkFBaUIsV0FBVyxJQUM1RDtBQUVKLFVBQU0sV0FBVyxVQUFVO0FBQUEsTUFDekIsS0FBSyxZQUFZLDRCQUNiLDJFQUNBO0FBQUEsTUFFSixNQUFNO0FBQUEsUUFDSixPQUNHLFVBQVMsWUFBWSxjQUFjLGVBQWUsTUFDbkQsa0JBQ0csNEJBQ0MsbUNBQ0E7QUFBQSxNQUNSO0FBQUEsSUFDRixDQUFDO0FBRUQsV0FBTyxRQUFRLEtBQUssQ0FBQyxLQUFLLE1BQU0sUUFBUSxDQUFDO0FBRXpDLFFBQUksU0FBUyxXQUFXO0FBQ3RCLFdBQUssY0FBYyw0QkFBNEIsRUFBRSxPQUFPLFFBQVE7QUFBQSxJQVdsRSxPQUFPO0FBQ0wsWUFBTSxXQUFXLEtBQUssY0FBYyxnQkFBZ0I7QUFDcEQsVUFBSSxVQUFVO0FBQ1osOEJBQXNCLE1BQU07QUFDMUIsZ0JBQU0sZUFBZSxTQUFTLHNCQUFzQixFQUFFO0FBRXRELG1CQUFTLE1BQU0sYUFBYSxHQUFHLGVBQWU7QUFBQSxRQUNoRCxDQUFDO0FBQUEsTUFDSDtBQWFBLGlCQUFLLGNBQWMseUJBQXlCLE1BQTVDLG1CQUErQyxPQUFPO0FBQUEsSUFFeEQ7QUFHQSxhQUFTLE1BQU07QUFDZixRQUFJLFNBQVMsV0FBVyxTQUFTLFFBQVEsR0FBRztBQUMxQyxlQUFTLFlBQVk7QUFDckIsYUFBTyxHQUFHLE1BQU07QUFBQSxJQUNsQjtBQUVBLFFBQUksU0FBUztBQUNYLGVBQVMsWUFBWTtBQUNyQixhQUFPLEdBQUcsTUFBTTtBQUFBLElBQ2xCO0FBRUEsVUFBTSxjQUFjO0FBQUEsTUFDbEIsUUFBUTtBQUFBLE1BQ1IsT0FBTyxFQUFFLGNBQWMsT0FBTztBQUFBLElBQ2hDO0FBRUEsUUFBSSxhQUFhLGFBQWE7QUFBUSxVQUFJLGtCQUFVLFdBQVc7QUFDL0QsUUFBSSxZQUFZLGFBQWE7QUFBUSxVQUFJLGtCQUFVLFdBQVc7QUFDOUQsUUFBSSxnQkFBaUIsTUFBSyxVQUFVLEtBQUssU0FBUztBQUNoRCxVQUFJLGlCQUFTO0FBQUEsUUFDWCxRQUFRO0FBQUEsUUFDUixPQUFPLEVBQUUsUUFBUSxNQUFNLEtBQUs7QUFBQSxNQUM5QixDQUFDO0FBQUEsSUFDSDtBQUNBLFFBQUksYUFBYSxhQUFhLFFBQVE7QUFDcEMsdUJBQ0UsUUFDQSxVQUNBLGNBQ0EsVUFDQSxvQkFDRjtBQUFBLElBQ0Y7QUFDQSxPQUFHLE1BQU07QUFBQSxFQUNYLFNBQVMsS0FBUDtBQUNBLGlDQUFNLEdBQUc7QUFDVCxXQUFPLEdBQUcsTUFBTTtBQUFBLEVBQ2xCO0FBQ0Y7OztBakJ2T0EsNEJBQTRCLFFBQWtCO0FBQzVDLFFBQU0sRUFBRSxPQUFPO0FBQ2YsUUFBTSxNQUFNLFNBQVMsTUFBTTtBQUUzQixLQUFHLFFBQVEsb0JBQW9CO0FBQy9CLFFBQU0sVUFBVSxJQUFJLE1BQU0sRUFBRTtBQUM1QixLQUFHLE1BQU0sRUFBRSxRQUFRLENBQUM7QUFFcEIsU0FBTztBQUNUO0FBRUEsNkJBQTZCLFFBQWtCLE9BQWdCO0FBQzdELFFBQU0sRUFBRSxPQUFPO0FBQ2YsS0FBRyxRQUFRLHFCQUFxQjtBQUVoQyxRQUFNLFVBQWdDLE1BQU0sSUFBSSxDQUFDLFNBQVM7QUFDeEQsVUFBTSxFQUFFLGdCQUFnQixJQUFJLGNBQWMsYUFBYSxJQUFJO0FBQzNELFdBQU8sY0FBYyxFQUFFLE1BQU0sR0FBRyxZQUFZLElBQUksRUFBRSxLQUFLO0FBQUEsRUFDekQsQ0FBQztBQUVELEtBQUcsTUFBTSxFQUFFLFFBQVEsQ0FBQztBQUNwQixTQUFPO0FBQ1Q7QUFFQSxJQUFNLFlBQVksQ0FBQyxTQUFtQixPQUFPLEtBQUssc0JBQXNCO0FBTXhFLGlCQUFpQixNQUFnQjtBQUMvQixRQUFNLFlBQVksQ0FBQztBQUNuQixRQUFNLFFBQVEsQ0FBQyxJQUFJO0FBRW5CLFNBQU8sTUFBTSxRQUFRO0FBQ25CLFVBQU0sV0FBVyxNQUFNLE1BQU07QUFFN0IsUUFBSSxVQUFVLFFBQVE7QUFBRyxZQUFNLEtBQUssR0FBRyxTQUFTLE1BQU07QUFBQTtBQUNqRCxnQkFBVSxLQUFLLFFBQVE7QUFBQSxFQUM5QjtBQUNBLFNBQU87QUFDVDtBQU9BLHlCQUNFLE9BQ0E7QUFDQSxNQUFJLENBQUM7QUFBTyxXQUFPLENBQUM7QUFHcEIsUUFBTSxTQUFtQixDQUFDO0FBQzFCLE1BQUk7QUFFRixRQUFJLE9BQU8sVUFBVSxVQUFVO0FBQzdCLFlBQU0sU0FBUyxNQUFNLE1BQU0sZUFBZTtBQUUxQyxVQUFJLFdBQVcsTUFBTTtBQUNuQixjQUFNLFlBQVksT0FBTyxJQUFJLENBQUMsVUFBUyxrQkFBa0IsTUFBSyxNQUFNLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztBQUMxRixlQUFPLEtBQUssR0FBRyxTQUFTO0FBQUEsTUFDMUI7QUFBQSxJQUNGLE9BQU87QUFDTCxZQUFNLFlBQXdCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztBQUM1QyxtQ0FBTSxHQUFHLFNBQVM7QUFFbEIsZ0JBQVUsUUFBUSxDQUFDLFlBQVk7QUFDN0IsWUFBSSxDQUFDO0FBQVM7QUFFZCxjQUFNLFlBQVksUUFBUSxPQUFPO0FBQ2pDLGtCQUFVLFFBQVEsQ0FBQyxXQUFVO0FBQzNCLGNBQUksT0FBTyxXQUFVLFlBQVksT0FBTyxXQUFVLFVBQVU7QUFDMUQsa0JBQU0sY0FBYyxPQUFNLFNBQVM7QUFDbkMsa0JBQU0sU0FBUyxZQUFZLE1BQU0sZUFBZTtBQUNoRCxnQkFBSSxXQUFXLE1BQU07QUFDbkIsb0JBQU0sT0FBTyxPQUFPLElBQUksQ0FBQyxVQUN2QixrQkFBa0IsTUFBSyxNQUFNLGlCQUFpQixFQUFFLEVBQUUsQ0FDcEQ7QUFDQSxxQkFBTyxLQUFLLEdBQUcsSUFBSTtBQUFBLFlBQ3JCLE9BQU87QUFDTCxvQkFBTSxXQUFXLGtCQUFrQixXQUFXO0FBQzlDLHFCQUFPLEtBQUssU0FBUyxNQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sR0FBRyxFQUFFLEVBQUU7QUFBQSxZQUNsRDtBQUFBLFVBQ0YsV0FBVyxPQUFNLFNBQVMsUUFBVztBQUNuQyxrQkFBTSxXQUFXLGtCQUFrQixPQUFNLElBQUk7QUFDN0MsZ0JBQUksYUFBYTtBQUFXLHFCQUFPLEtBQUssUUFBUTtBQUFBLFVBQ2xEO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSCxDQUFDO0FBQUEsSUFDSDtBQUNBLFdBQU87QUFBQSxFQUNULFNBQVMsS0FBUDtBQUNBLGlDQUFNLEdBQUc7QUFDVCxXQUFPO0FBQUEsRUFDVDtBQUNGO0FBRUEsMEJBQWlDLFFBQXVDO0FBQ3RFLFFBQU0sUUFBUSxJQUFJLDhCQUFXO0FBQzdCLE1BQUk7QUFDRixVQUFNLEVBQUUsVUFBVSxPQUFPO0FBQ3pCLFVBQU0sRUFBRSxXQUFXLFVBQVUsNkJBQTZCLG1CQUN4RDtBQUNGLE9BQUcsUUFBUSxZQUFZO0FBRXZCLFFBQUksVUFBVSxXQUFXLEdBQUc7QUFDMUIsU0FBRyxNQUFNO0FBQ1QsVUFBSSx3QkFBTyxxREFBcUQ7QUFDaEUsYUFBTztBQUFBLElBQ1Q7QUFFQSxVQUFNLFFBQVEsSUFBSSxNQUFNLGlCQUFpQjtBQUN6QyxVQUFNLE1BQU0sSUFBSSxRQUFRLGVBQWUsSUFBSSxVQUFVO0FBRXJELFFBQUksVUFBZ0MsTUFDaEMsbUJBQW1CLE1BQU0sSUFDekIsb0JBQW9CLFFBQVEsS0FBSztBQVNyQyxVQUFNLFVBQVUsYUFBYSxLQUFLLE1BQU0sV0FBVyxNQUFNLElBQUksQ0FBQztBQUU5RCxVQUFNLGVBQTZELENBQUM7QUFDcEUsWUFBUSxRQUFRLENBQUMsUUFBUyxhQUFhLE9BQU8sQ0FBQyxDQUFFO0FBRWpELE9BQUcsUUFBUSx1QkFBdUI7QUFDbEMsWUFBUSxRQUFRLENBQUMsU0FBUztBQUN4QixjQUFRLFFBQVEsQ0FBQyxRQUFRO0FBQ3ZCLFlBQUksS0FBSyxTQUFTLFVBQWEsS0FBSyxTQUFTO0FBQzNDLHVCQUFhLEtBQUssS0FBSyxJQUFJO0FBQUEsTUFDL0IsQ0FBQztBQUVELFlBQU0sV0FBVyxjQUFjLEtBQUssSUFBSTtBQUN4QyxZQUFNLGNBQWMsZUFBZSxJQUFJO0FBRXZDLG1CQUFhLFdBQVcsQ0FBQyxNQUFNLEtBQUssVUFBVTtBQUM1QyxjQUFNLFNBQVMsZ0JBQWdCLEtBQUssTUFBTTtBQUUxQyxlQUFPLFFBQVEsQ0FBQyxXQUFXO0FBQ3pCLGNBQUksT0FBTyxXQUFXLElBQUksS0FBSyxPQUFPLFdBQVcsSUFBSTtBQUFHO0FBQ3hELGdCQUFNLGNBQWMsZUFBZSxTQUFTLE1BQU07QUFFbEQsdUJBQ0UsVUFDQSxPQUNBLFVBQ0EsT0FDQSxRQUNBLGFBQ0EsV0FDRjtBQUFBLFFBQ0YsQ0FBQztBQUNELFlBQUksUUFBUTtBQUFRLHVCQUFhLE9BQU8sU0FBUyxLQUFLLEtBQUs7QUFBQSxNQUM3RCxDQUFDO0FBQUEsSUFDSCxDQUFDO0FBRUQsT0FBRyxNQUFNO0FBR1QsVUFBTSxhQUNKLElBQUksUUFBUSxRQUFRLFNBQVMsOEJBQ3pCLE1BQU0sY0FBYyxRQUFRLEtBQUssSUFDakMsQ0FBQztBQUVQLFFBQUksV0FBVztBQUNiLDJCQUFxQixVQUFVLFlBQVksU0FBUyxLQUFLO0FBSTNELE9BQUcsUUFBUSx5QkFBeUI7QUFFcEMsT0FBRyxRQUFRLGlCQUFpQjtBQUU1QixRQUFJLGVBQWUsUUFBUTtBQUN6QixpQkFBVyxnQkFBZ0IsZ0JBQWdCO0FBQ3pDLFlBQUksYUFBYSxTQUFTLEdBQUcsR0FBRztBQUM5QixnQkFBTSxTQUFTLElBQUksTUFBTSxzQkFDdkIsb0NBQWMsWUFBWSxDQUM1QjtBQUVBLGNBQUksQ0FBRSxtQkFBa0I7QUFBVTtBQUNsQyxxQkFBVyxTQUFTLE9BQU8sVUFBVTtBQUNuQyxnQkFBSSxpQkFBaUIsd0JBQU87QUFDMUIsNEJBQ0UsVUFDQSxNQUFNLHNCQUFzQixLQUFLLEdBQ2pDLEtBQ0Y7QUFBQSxZQUNGO0FBQUEsVUFDRjtBQUFBLFFBQ0YsT0FBTztBQUNMLGdCQUFNLE9BQU8sSUFBSSxjQUFjLHFCQUFxQixjQUFjLEVBQUU7QUFDcEUsY0FBSTtBQUNGLDBCQUNFLFVBQ0EsTUFBTSxzQkFBc0IsSUFBSSxHQUNoQyxLQUNGO0FBQUEsUUFDSjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBRUEsT0FBRyxNQUFNO0FBR1QsT0FBRyxRQUFRLGNBQWM7QUFDekIsMEJBQXNCLFFBQVEsYUFBYSxpQkFBaUIsU0FBUyxLQUFLO0FBQzFFLE9BQUcsTUFBTTtBQUNULE9BQUcsUUFBUSxXQUFXO0FBQ3RCLHVCQUFtQixRQUFRLGFBQWEsY0FBYyxTQUFTLEtBQUs7QUFDcEUsT0FBRyxNQUFNO0FBQ1QsT0FBRyxRQUFRLFlBQVk7QUFDdkIsd0JBQW9CLFFBQVEsYUFBYSxlQUFlLFNBQVMsS0FBSztBQUN0RSxPQUFHLE1BQU07QUFDVCxPQUFHLFFBQVEsYUFBYTtBQUN4Qix5QkFBcUIsUUFBUSxhQUFhLGdCQUFnQixTQUFTLEtBQUs7QUFDeEUsT0FBRyxNQUFNO0FBRVQsT0FBRyxRQUFRLGdCQUFnQjtBQUMzQiw0QkFDRSxRQUNBLGFBQWEsbUJBQ2IsT0FDQSxjQUFjLENBQ2hCO0FBQ0EsT0FBRyxNQUFNO0FBQ1QsT0FBRyxRQUFRLGVBQWU7QUFDMUIsMkJBQXVCLFFBQVEsU0FBUyxLQUFLO0FBQzdDLE9BQUcsTUFBTTtBQUNULE9BQUcsUUFBUSxnQkFBZ0I7QUFDM0IsNEJBQXdCLFFBQVEsYUFBYSxhQUFhLFNBQVMsS0FBSztBQUN4RSxPQUFHLE1BQU07QUFDVCxPQUFHLFFBQVEsWUFBWTtBQUN2Qix3QkFBb0IsUUFBUSxTQUFTLEtBQUs7QUFDMUMsT0FBRyxNQUFNO0FBRVQsT0FBRyxNQUFNO0FBRVQsVUFBTSxRQUFRLENBQUMsU0FBUyxjQUFjLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDO0FBQzdELE9BQUcsTUFBTSxpQkFBaUIsRUFBRSxNQUFNLENBQUM7QUFDbkMsV0FBTztBQUFBLEVBQ1QsU0FBUyxLQUFQO0FBQ0EsaUNBQU0sR0FBRztBQUNULFdBQU8sR0FBRyxNQUFNO0FBQ2hCLFdBQU87QUFBQSxFQUNUO0FBQ0Y7QUFFTyxzQkFBc0IsUUFBa0I7QUFDN0MsUUFBTSxFQUFFLE9BQU8sYUFBYTtBQUM1QixRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0Esa0JBQWtCO0FBQUEsTUFDaEI7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUE7QUFBQSxNQUVBO0FBQ0osTUFBSSxVQUFVLG9CQUFvQixPQUFPLFNBQVM7QUFFbEQsTUFBSTtBQUFxQiw4QkFBMEIsU0FBUyxRQUFRO0FBQ3BFLE1BQUk7QUFBd0IsOEJBQTBCLE9BQU87QUFDN0QsTUFBSTtBQUEwQixtQkFBZSxPQUFPO0FBQ3BELE1BQUk7QUFBa0IsZUFBVyxPQUFPO0FBQ3hDLE1BQUk7QUFBMEIscUNBQWlDLE9BQU87QUFFdEUsU0FBTztBQUNUO0FBRUEsNEJBQW1DLFFBQWtCO0FBM1VyRDtBQTRVRSxNQUFJLENBQUMsT0FBTztBQUFrQixXQUFPLDhCQUE4QjtBQUNuRSxNQUFJLENBQUMsT0FBTztBQUFjLFdBQU8sMEJBQTBCO0FBRTNELFNBQU8sUUFBUSxNQUFNLFdBQVcsTUFBTTtBQUN0QyxTQUFPLFVBQVUsYUFBYSxNQUFNO0FBRXBDLGFBQVcsRUFBRSxpQkFBVSxPQUFPO0FBQzVCLFVBQU0sY0FBTyxrQkFBa0IsS0FBSSxNQUE3QixtQkFBZ0M7QUFFeEMsTUFBSSxPQUFPLFNBQVM7QUFBUyxVQUFNLFVBQVUsTUFBTTtBQUNuRCxNQUFJLE9BQU8sU0FBUztBQUFtQixRQUFJLHdCQUFPLG9CQUFvQjtBQUN4RTs7Ozs7Ozs7Ozs7Ozs4QitCM1RLLElBQVksS0FBRyxXQUFNOzs7OztBQVR4QixhQVVTLFFBQUEsUUFBQSxNQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBWE4sSUFBZSxNQUFBLGlCQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7QUFScEIsYUFNUyxRQUFBLFFBQUEsTUFBQTs7Ozs7Ozs7Ozs7VUFFSixLQUFlO0FBQUEsaUJBQUEsRUFBQSxNQUFBLEtBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UURkUCxlQUFzQjtVQUV6QixXQUFXO1VBQ1gsY0FBYyxvQkFBb0IsT0FBTzswQ0NNckIsYUFBYSxNQUFNOztvQkFVM0MsT0FBTyxTQUFTLGVBQVksQ0FBSSxjQUFZLE1BQUE7VUFDdEMsT0FBTyxhQUFZO1VBQ25CLFdBQVcsS0FBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCRWFpQixJQUFLLE1BQUE7Ozs7O2tCQUU5QixJQUFnQixNQUFBLGtCQUFBLEdBQUE7a0JBTWxCLElBQVMsSUFBQyxVQUFNLGtCQUFBLEdBQUE7a0JBcUJoQixJQUFvQixNQUFJLElBQVksSUFBQyxVQUFNLG1CQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQS9CbEQsYUFnRU0sUUFBQSxNQUFBLE1BQUE7QUEvREosYUFRTSxNQUFBLElBQUE7QUFQSixhQUF5QyxNQUFBLEVBQUE7Ozs7Ozs7Ozs7Ozs7Z0RBQVgsS0FBSyxNQUFBO0FBQUEsaUJBQUEsSUFBQSxRQUFBO1VBRTlCLEtBQWdCO0FBQUEsa0JBQUEsRUFBQSxNQUFBLEtBQUE7VUFNbEIsS0FBUyxJQUFDLFFBQU07Ozs7Ozs7Ozs7OztVQXFCaEIsS0FBb0IsTUFBSSxLQUFZLElBQUMsUUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCQXpCekMsSUFBUyxJQUFDLFNBQVMsU0FBUzs7Ozs7Ozs7O0FBRC9CLGFBRUssUUFBQSxJQUFBLE1BQUE7Ozs7OENBREYsS0FBUyxJQUFDLFNBQVMsU0FBUztBQUFTLGlCQUFBLEdBQUEsT0FBQTs7Ozs7Ozs7OztxQkFNakMsSUFBUzs7bUNBQWQsUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7OztBQURSLGFBaUJLLFFBQUEsSUFBQSxNQUFBOzs7Ozs7O3VCQWhCSSxLQUFTOztxQ0FBZCxRQUFJLEtBQUEsR0FBQTs7Ozs7Ozs7Ozs7OzswQ0FBSjs7Ozs7Ozs7Ozs7Ozs7aUJBWUssV0FBRyxRQUFILFlBQU8saUJBQWlCLElBQUUsS0FBRSxJQUFRLEVBQUEsS0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJDQVA3QixJQUFHLE1BQUEsTUFBRyxZQUFPLFFBQVAsYUFBVyxNQUFFLGlCQUFBO3FEQUlmLElBQUcsTUFBRyxJQUFFLE1BQUcsRUFBRTt1RUFDSixJQUFNLEtBQUcsU0FBUyxPQUFPOzs7O0FBVGxELGFBYUssUUFBQSxJQUFBLE1BQUE7QUFWSCxhQVNNLElBQUEsR0FBQTs7Ozs7Ozs7Ozs7Ozs7Z0RBREgsWUFBRyxRQUFILGFBQU8saUJBQWlCLElBQUUsS0FBRSxJQUFRLEVBQUEsS0FBQTtBQUFBLGlCQUFBLElBQUEsUUFBQTs4REFQN0IsSUFBRyxNQUFBLE1BQUcsV0FBTyxRQUFQLFlBQVcsTUFBRSxvQkFBQTs7O3dFQUlmLElBQUcsTUFBRyxJQUFFLE1BQUcsS0FBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkFhMUIsSUFBWSxJQUFDLFVBQU0sbUJBQUEsR0FBQTtxQkFPakIsSUFBWTs7bUNBQWpCLFFBQUksS0FBQSxHQUFBOzs7Ozs7OzBCQVJ3Qjs7Ozs7Ozs7Ozs7eUNBT3JCLElBQVMsSUFBQyxTQUFTLENBQUM7Ozs7QUFSL0IsYUFPTSxRQUFBLEtBQUEsTUFBQTtBQU5KLGFBQXVDLEtBQUEsRUFBQTs7Ozs7QUFPekMsYUFzQkssUUFBQSxJQUFBLE1BQUE7Ozs7OztVQTVCRSxLQUFZLElBQUMsUUFBTTs7Ozs7Ozs7Ozs7Ozt1QkFPakIsS0FBWTs7cUNBQWpCLFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7OzBDQUFKOzs0REFETyxLQUFTLElBQUMsU0FBUyxJQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQUx0QixJQUFnQixNQUFJLElBQVMsSUFBQyxVQUFNLGtCQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7VUFBcEMsS0FBZ0IsTUFBSSxLQUFTLElBQUMsUUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDdkMsYUFBeUMsUUFBQSxJQUFBLE1BQUE7Ozs7Ozs7Ozs7OztnQkFzQnRDLFdBQUcsUUFBSCxZQUFPLGlCQUFpQixJQUFFLEtBQUUsSUFBUSxFQUFBLEtBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJDQVA3QixJQUFHLE1BQUEsTUFBRyxZQUFPLFFBQVAsYUFBVyxNQUFFLGlCQUFBO3FEQUdkLEtBQUcsTUFBQSxHQUFNLElBQUU7SUFBTyxNQUM1QixLQUFNLE1BQUcsWUFBTyxJQUFNLE1BQUcsR0FBRTt1RUFDVCxJQUFNLEtBQUcsU0FBUyxPQUFPO3lEQWI3QixLQUE2QixNQUNoRCxJQUFFLFFBQUssSUFBUSxHQUFDLFdBQ1osbUJBQ0EsTUFBRSxpQkFBQTs7O0FBSlIsYUFrQkssUUFBQSxJQUFBLE1BQUE7QUFWSCxhQVNNLElBQUEsR0FBQTs7Ozs7Ozs7Ozs7Ozs4Q0FESCxZQUFHLFFBQUgsYUFBTyxpQkFBaUIsSUFBRSxLQUFFLElBQVEsRUFBQSxLQUFBO0FBQUEsaUJBQUEsR0FBQSxPQUFBOzhEQVA3QixJQUFHLE1BQUEsTUFBRyxXQUFPLFFBQVAsWUFBVyxNQUFFLG9CQUFBOzs7d0VBR2QsS0FBRyxNQUFBLEdBQU0sSUFBRTtJQUFPLE1BQzVCLEtBQU0sTUFBRyxZQUFPLElBQU0sTUFBRyxNQUFFOzs7NEVBWmIsS0FBNkIsTUFDaEQsSUFBRSxRQUFLLElBQVEsR0FBQyxXQUNaLG1CQUNBLE1BQUUsb0JBQUE7Ozs7Ozs7Ozs7Ozs7O2lCQS9DYixLQUFTLElBQUMsVUFBVyxJQUFvQixNQUFJLElBQVksSUFBQyxXQUFNLGlCQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7VUFBaEUsS0FBUyxJQUFDLFVBQVcsS0FBb0IsTUFBSSxLQUFZLElBQUMsUUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCQURoRSxJQUFPOzttQ0FBWixRQUFJLEtBQUEsR0FBQTs7Ozs7Ozs7Ozs7OztBQURSLGFBc0VNLFFBQUEsS0FBQSxNQUFBOzs7Ozs7Ozt1QkFyRUcsS0FBTzs7cUNBQVosUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7MENBQUo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CQUZDLElBQVc7O2lDQUFoQixRQUFJLEtBQUEsR0FBQTs7Ozs7Ozs7Ozs7OztrRkFKbUMsS0FBVyxHQUFDLFNBQ2pELEtBQ0EsbUJBQWUsaUJBQUE7OztBQVByQixhQUVNLFFBQUEsTUFBQSxNQUFBOzs7QUFFTixhQThFTSxRQUFBLE1BQUEsTUFBQTs7Ozs7Ozs7Ozs7O3FCQXpFRyxLQUFXOzttQ0FBaEIsUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7d0NBQUo7O2lIQUp1QyxNQUFXLEdBQUMsU0FDakQsS0FDQSxtQkFBZSxvQkFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FEdEJSLGdCQUE0QjtRQUM1QixhQUFlO1FBQ2YsZUFBc0I7VUFFekIsV0FBVztVQUNYLGFBQWE7VUFHbkIsc0JBQ0EsUUFDQSwrQkFDQSxxQkFDRTttQ0NrQ2lDLE1BQUMsTUFBVyxhQUFhLElBQUksQ0FBQztpQ0FDaEMsVUFDYixhQUFhLE9BQU8sWUFBWSxFQUFFO3FDQWdDbkIsTUFBQyxNQUFXLGFBQWEsSUFBSSxDQUFDO21DQUNoQyxNQUFNLGFBQWEsR0FBRyxZQUFZLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QXBDbEVsRSw2QkFBNkIsUUFBa0IsVUFBa0I7QUFDdEUsUUFBTSxFQUFFLFNBQVMsYUFBYTtBQUM5QixRQUFNLEVBQUUsY0FBYztBQUN0QixRQUFNLGFBQWEsa0JBQWtCO0FBQ3JDLE1BQUksQ0FBQztBQUFTLFdBQU87QUFFckIsVUFBUSxZQUFZLFVBQVUsQ0FBQyxHQUFHLElBQUcsR0FBRyxNQUFNO0FBQzVDLFVBQU0sRUFBRSxPQUFPLEtBQUssWUFBWTtBQUVoQyxRQUFJLE1BQU0sVUFBVTtBQUNsQixpQkFBVyxLQUFLLE1BQU0sS0FBSyxFQUFFLElBQUksR0FBRyxPQUFPLFFBQVEsQ0FBQztBQUFBLElBQ3RELE9BQU87QUFDTCxpQkFBVyxVQUFVLEdBQUcsR0FBRyxTQUFTLEtBQUs7QUFBQSxRQUN2QyxJQUFJO0FBQUEsUUFDSixPQUFPLGFBQWEsV0FBVyxPQUFPLEdBQUcsRUFBRTtBQUFBLFFBQzNDO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0YsQ0FBQztBQUVELFNBQU87QUFDVDtBQUNBLElBQXFCLGFBQXJCLGNBQXdDLDJCQUFTO0FBQUEsRUFLL0MsWUFBWSxNQUFxQixRQUFrQjtBQUNqRCxVQUFNLElBQUk7QUEyQlosZ0JBQU87QUF5Q1AsNkJBQW9CLENBQ2xCLElBQ0EsUUFBUSxNQUNSLFFBQ0EsWUFDb0I7QUFDcEIsYUFBTztBQUFBLFFBQ0w7QUFBQSxRQUNBLEtBQUssVUFBVSxJQUFJLEtBQUs7QUFBQSxRQUN4QixLQUFLLEtBQUssT0FBTyxFQUFFO0FBQUEsUUFDbkIsT0FBTyxLQUFLLFNBQVMsRUFBRTtBQUFBLFFBQ3ZCO0FBQUEsUUFDQTtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBWUEsb0JBQVcsQ0FBQyxTQUNWLE9BQU8sU0FBUyxLQUFLLE9BQU8sTUFBTSxpQkFBaUIsTUFBTSxPQUFPLENBQUM7QUFFbkUsMEJBQWlCLENBQUMsSUFBb0IsTUFBdUI7QUFwSi9EO0FBcUpJLFlBQU0sRUFBRSxxQkFBcUIsaUJBQWlCLEtBQUssT0FBTztBQUMxRCxZQUFNLFVBQVcsdUJBQXNCLEdBQUUsS0FBSyxTQUFFLFFBQUYsWUFBUyxHQUFFLElBQUksWUFBWTtBQUN6RSxZQUFNLFVBQVcsdUJBQXNCLEVBQUUsS0FBSyxRQUFFLFFBQUYsWUFBUyxFQUFFLElBQUksWUFBWTtBQUV6RSxZQUFNLE9BQU8sZUFBZSxLQUFLO0FBQ2pDLFlBQU0sT0FBTyxlQUFlLElBQUk7QUFFaEMsYUFBTyxVQUFVLFVBQVUsT0FBTztBQUFBLElBQ3BDO0FBekdFLFNBQUssU0FBUztBQUNkLFNBQUssS0FBSyxJQUFJLFNBQVMsTUFBTTtBQUFBLEVBQy9CO0FBQUEsRUFFQSxNQUFNLFNBQXdCO0FBQzVCLFVBQU0sT0FBTztBQUNiLFVBQU0sRUFBRSxXQUFXO0FBRW5CLFFBQUksVUFBVSxjQUFjLE1BQU07QUFDaEMsaUJBQ0UsWUFBWSxNQUFNLEtBQUssS0FBSyxHQUM1QixJQUFJLFFBQVEsUUFBUSxXQUNoQixJQUFJLFFBQVEsUUFBUSxTQUFTLE1BQzNCLElBQ0EsT0FBTyxTQUFTLGFBQ2xCLEdBQ047QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNIO0FBQUEsRUFFQSxjQUFjO0FBQ1osV0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUNBLGlCQUFpQjtBQUNmLFdBQU87QUFBQSxFQUNUO0FBQUEsRUFHQSxNQUFNLFNBQXdCO0FBQUEsRUFBRTtBQUFBLEVBRWhDLFVBQXlCO0FBbEYzQjtBQW1GSSxlQUFLLFNBQUwsbUJBQVc7QUFDWCxXQUFPLFFBQVEsUUFBUTtBQUFBLEVBQ3pCO0FBQUEsRUFFQSxPQUFPLE1BQTZCO0FBQ2xDLFVBQU0sRUFBRSxXQUFXO0FBQ25CLFVBQU0sRUFBRSxlQUFlLG1CQUFtQixPQUFPO0FBQ2pELFFBQUksQ0FBQyxjQUFjO0FBQVEsYUFBTztBQUdsQyxVQUFNLEtBQUssU0FBUyxNQUFNO0FBQzFCLFFBQUksSUFBSTtBQUNOLFlBQU0sT0FBTyxHQUFHLEtBQUssSUFBSTtBQUN6QixVQUFJLENBQUM7QUFBTSxlQUFPO0FBQ2xCLGlCQUFXLE9BQU8sZUFBZTtBQUMvQixjQUFNLFFBQVEsS0FBSztBQUVuQixjQUFNLE1BQ0osT0FBTyxVQUFVLFdBQVcsYUFBYSxLQUFLLElBQUk7QUFDcEQsWUFBSTtBQUFPLGlCQUFPLGlCQUFpQixJQUFJLEtBQUssSUFBSSxJQUFJLElBQUk7QUFBQSxNQUMxRDtBQUFBLElBQ0YsT0FBTztBQUNMLFlBQU0sT0FBTyxJQUFJLGNBQWMscUJBQXFCLE1BQU0sRUFBRTtBQUM1RCxVQUFJLE1BQU07QUFDUixjQUFNLEVBQUUsZ0JBQWdCLElBQUksY0FBYyxhQUFhLElBQUk7QUFDM0QsbUJBQVcsWUFBWSxlQUFlO0FBQ3BDLGdCQUFNLFFBQVEsMkNBQWM7QUFFNUIsZ0JBQU0sTUFDSixPQUFPLFVBQVUsV0FBVyxhQUFhLEtBQUssSUFBSTtBQUNwRCxjQUFJO0FBQU8sbUJBQU8saUJBQWlCLElBQUksS0FBSyxJQUFJLElBQUksSUFBSTtBQUFBLFFBQzFEO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUEsRUFvQkEsdUJBQ0UsT0FDQSxVQUNtQjtBQUNuQixVQUFNLFVBQVUsTUFBTSxJQUFJLENBQUMsU0FBUyxLQUFLLEVBQUU7QUFDM0MsV0FBTyxTQUFTLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxTQUFTLFFBQVEsRUFBRSxDQUFDO0FBQUEsRUFDbkU7QUFBQSxFQWdCQSxlQUFlLFdBQXVCLFVBQWtDO0FBQ3RFLFVBQU0sRUFBRSxXQUFXO0FBQ25CLFVBQU0sRUFBRSxPQUFPLGFBQWE7QUFDNUIsVUFBTSxFQUFFLGlCQUFpQiwwQkFBMEI7QUFDbkQsUUFBSSxDQUFDO0FBQU8sYUFBTyxDQUFDO0FBRXBCLFVBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQUksQ0FBQyxNQUFNLFFBQVEsUUFBUTtBQUFHLGFBQU8sQ0FBQztBQUN0QyxVQUFNLGlCQUFpQixvQkFBb0IsUUFBUSxRQUFRO0FBRTNELFdBQU8sVUFBVSxJQUFJLENBQUMsU0FBUztBQUM3QixZQUFNLHVCQUF1QixrQkFBa0I7QUFPL0MsWUFBTSxnQkFBZ0IsQ0FDcEIsTUFDQSxLQUNBLFFBQ0EsVUFFQSxLQUFLLEtBQUssU0FBUyxLQUFLLEtBQUssS0FDNUIsS0FBSyxNQUFNLFNBQVMsSUFBSSxRQUFRLEtBQy9CLEtBQUssUUFBUSxTQUFTLEtBQUssTUFBTSxNQUFNLElBQUksRUFBRSxFQUFFO0FBRW5ELGlCQUFXLE9BQU8sZ0JBQWdCO0FBQ2hDLGNBQU0sU0FBUyxVQUFVLEdBQWlCO0FBQzFDLGNBQU0sUUFBUSxpQkFBaUI7QUFDL0IsY0FBTSxFQUFFLE9BQU8sYUFBYSxlQUFlO0FBRTNDLDZCQUFxQixLQUFLLFFBQVEsTUFDL0IsT0FBTyxDQUFDLFNBQ1AsY0FBYyxNQUFNLEtBQW1CLFFBQVEsS0FBSyxDQUN0RCxFQUNDLElBQUksQ0FBQyxTQUNKLEtBQUssa0JBQWtCLEtBQUssSUFBSSxNQUFNLE1BQU0sS0FBSyxPQUFPLENBQzFEO0FBRUYsNkJBQXFCLEtBQUssV0FBVyxTQUNsQyxPQUFPLENBQUMsWUFDUCxjQUFjLFNBQVMsS0FBbUIsUUFBUSxLQUFLLENBQ3pELEVBQ0MsSUFBSSxDQUFDLFNBQ0osS0FBSyxrQkFBa0IsS0FBSyxJQUFJLE9BQU8sTUFBTSxLQUFLLE9BQU8sQ0FDM0Q7QUFBQSxNQUNKO0FBRUEsVUFBSTtBQUFBLFFBQ0YsSUFBSSxFQUFFLE9BQU8sSUFBSSxVQUFVO0FBQUEsUUFDM0IsTUFBTSxFQUFFLE9BQU8sSUFBSSxVQUFVO0FBQUEsUUFDN0IsTUFBTSxFQUFFLE9BQU8sSUFBSSxVQUFVO0FBQUEsUUFDN0IsTUFBTSxFQUFFLE9BQU8sSUFBSSxVQUFVO0FBQUEsUUFDN0IsTUFBTSxFQUFFLE9BQU8sSUFBSSxVQUFVO0FBQUEsVUFDM0I7QUFJSixPQUFDLElBQUksSUFBSSxLQUFJLElBQUksRUFBRSxJQUFJO0FBQUEsUUFDckIsS0FBSyx1QkFBdUIsSUFBSSxFQUFFO0FBQUEsUUFDbEMsS0FBSyx1QkFBdUIsSUFBSSxFQUFFO0FBQUEsUUFDbEMsS0FBSyx1QkFBdUIsSUFBSSxHQUFFO0FBQUEsUUFDbEMsS0FBSyx1QkFBdUIsSUFBSSxFQUFFO0FBQUEsUUFDbEMsS0FBSyx1QkFBdUIsSUFBSSxFQUFFO0FBQUEsTUFDcEM7QUFFQSxZQUFNLGFBQWdDLENBQUM7QUFDdkMsU0FBRyxRQUFRLENBQUMsV0FBVztBQUNyQixZQUFJLFdBQVcsTUFBTSxDQUFDLFVBQVUsTUFBTSxPQUFPLE9BQU8sRUFBRSxHQUFHO0FBQ3ZELHFCQUFXLEtBQUssTUFBTTtBQUFBLFFBQ3hCO0FBQUEsTUFDRixDQUFDO0FBQ0QsV0FBSztBQUVMLFlBQU0saUJBQWlCLENBQUMsUUFDdEIsS0FBSyxLQUFLLEtBQ04sS0FBSyxLQUFLLEtBQUssSUFBSSxJQUNuQixHQUFHLEtBQUssVUFBVSxHQUFHLEdBQUcsS0FBSyxHQUFHLElBQUksaUJBQWlCO0FBRTNELFlBQU0sVUFBVSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSSxJQUFJLEVBQUU7QUFFdkQsVUFBSTtBQUNGLGdCQUFRLFFBQVEsQ0FBQyxPQUFPLEdBQUcsS0FBSyxLQUFLLGNBQWMsQ0FBQztBQUV0RCxjQUFRLFFBQVEsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUcsTUFBTSxHQUFFLFFBQVEsRUFBRSxLQUFLLENBQUM7QUFFNUQsa0NBQUs7QUFBQSxRQUNILEVBQUUsR0FBRztBQUFBLFFBQ0wsRUFBRSxHQUFHO0FBQUEsUUFDTCxFQUFFLEdBQUc7QUFBQSxRQUNMLEVBQUUsR0FBRztBQUFBLFFBQ0wsRUFBRSxHQUFHO0FBQUEsUUFDTCxFQUFFLEdBQUc7QUFBQSxRQUNMLEVBQUUsR0FBRztBQUFBLFFBQ0wsRUFBRSxRQUFHO0FBQUEsUUFDTCxFQUFFLEdBQUc7QUFBQSxRQUNMLEVBQUUsR0FBRztBQUFBLE1BQ1AsQ0FBQztBQUVELFlBQU0sU0FBUztBQUFBLFFBQ2I7QUFBQSxVQUNFLFdBQVc7QUFBQSxVQUNYLGNBQWM7QUFBQSxVQUNkLE9BQU8sZUFBZSxJQUFJO0FBQUEsUUFDNUI7QUFBQSxRQUVBO0FBQUEsVUFDRSxXQUFXO0FBQUEsVUFDWCxjQUFjO0FBQUEsVUFDZCxPQUFPLGVBQWUsTUFBTTtBQUFBLFFBQzlCO0FBQUEsUUFFQTtBQUFBLFVBQ0UsV0FBVztBQUFBLFVBQ1gsY0FBYztBQUFBLFVBQ2QsT0FBTyxlQUFlLE1BQU07QUFBQSxRQUM5QjtBQUFBLFFBQ0E7QUFBQSxVQUNFLFdBQVc7QUFBQSxVQUNYLGNBQWM7QUFBQSxVQUNkLE9BQU8sZUFBZSxNQUFNO0FBQUEsUUFDOUI7QUFBQSxRQUNBO0FBQUEsVUFDRSxXQUFXO0FBQUEsVUFDWCxjQUFjO0FBQUEsVUFDZCxPQUFPLGVBQWUsTUFBTTtBQUFBLFFBQzlCO0FBQUEsTUFDRjtBQUVBLGFBQU8sc0JBQXNCLElBQUksQ0FBQyxVQUFVLE9BQU8sTUFBTTtBQUFBLElBQzNELENBQUM7QUFBQSxFQUNIO0FBQUEsRUFFQSxNQUFNLE9BQXNCO0FBQzFCLFFBQUk7QUFDRixZQUFNLEVBQUUsV0FBVyxJQUFJLFdBQVc7QUFDbEMsU0FBRyxRQUFRLGtCQUFrQjtBQUM3QixnQkFBVSxNQUFNO0FBRWhCLFlBQU0sRUFBRSxjQUFjLE9BQU87QUFFN0IsWUFBTSxXQUFXLFlBQVk7QUFDN0IsVUFBSSxDQUFDO0FBQVU7QUFFZixZQUFNLGNBQWMsS0FBSyxlQUFlLFdBQVcsUUFBUSxFQUFFLE9BQzNELENBQUMsY0FDQyxVQUFVLEtBQ1IsQ0FBQyxPQUFPLEdBQUcsVUFBVSxTQUFTLEdBQUcsYUFBYSxTQUFTLENBQ3pELENBQ0o7QUFFQSxVQUFJLGVBQU87QUFBQSxRQUNULFFBQVE7QUFBQSxRQUNSLE9BQU8sRUFBRSxhQUFhLFlBQVksTUFBTSxTQUFTO0FBQUEsTUFDbkQsQ0FBQztBQUdELFNBQUcsTUFBTTtBQUFBLElBQ1gsU0FBUyxLQUFQO0FBQ0EsbUNBQU0sR0FBRztBQUNULFdBQUssR0FBRyxNQUFNO0FBQUEsSUFDaEI7QUFBQSxFQUNGO0FBQ0Y7OztBcUM5U08sSUFBTSxRQUFOLE1BQThCO0FBQUEsRUFNbkMsQUFBTyxZQUFZLFFBQWtCO0FBT3JDLFNBQU8sYUFBYTtBQUNwQixTQUFPLG1CQUFtQjtBQUUxQixTQUFPLGdCQUFnQjtBQUV2QixTQUFPLGVBQWUsWUFBWSxNQUFNLGFBQWEsS0FBSyxNQUFNO0FBRWhFLFNBQU8sZUFBZSxDQUFDLE1BQW9CLElBQUksS0FBSyxVQUNsRCxhQUFhLEdBQUcsR0FBRyxJQUFJO0FBRXpCLFNBQU8sa0JBQWtCLENBQUMsUUFBa0IsSUFBSSxLQUFLLFVBQ25ELGdCQUFnQixHQUFHLE1BQU07QUFFM0IsU0FBTyxjQUFjLENBQ25CLFdBQVcsMkJBQVksTUFBWixtQkFBZSxhQUMxQixJQUFJLEtBQUssVUFDTixZQUFZLEdBQUcsUUFBUTtBQUU1QixTQUFPLGNBQWMsQ0FBQyxVQUFzQixZQUFZLE9BQU8sU0FBUyxTQUN0RSxZQUFZLFVBQVUsV0FBVyxNQUFNO0FBRXpDLFNBQU8sc0JBQXNCLENBQzNCLFdBQVcsMkJBQVksTUFBWixtQkFBZSxnQkFDdkIsb0JBQW9CLEtBQUssUUFBUSxRQUFRO0FBRTlDLFNBQU8sWUFBWSxDQUFDLFFBQW9CLFVBQVUsR0FBRztBQUVyRCxTQUFPLGVBQWUsQ0FBQyxVQUFrQjtBQUN2QyxZQUFNLEVBQUUsYUFBYSxhQUFhLEtBQUssT0FBTyxTQUFTLFdBQVcsS0FBSztBQUN2RSxhQUFPLGFBQWEsS0FBSyxPQUFPLFNBQVMsV0FBVyxPQUFPLFFBQVE7QUFBQSxJQUNyRTtBQUVBLFNBQU8sZUFBZSxDQUFDLFVBQ3JCLGFBQWEsS0FBSyxPQUFPLFNBQVMsV0FBVyxLQUFLO0FBQ3BELFNBQU8sWUFBWSxDQUFDLFFBQ2xCLFVBQVUsS0FBSyxPQUFPLFNBQVMsV0FBVyxvQkFBTyxLQUFLO0FBeEN0RCxTQUFLLFNBQVM7QUFDZCxTQUFLLFFBQVEsS0FBSyxPQUFPO0FBQ3pCLFNBQUssVUFBVSxLQUFLLE9BQU87QUFBQSxFQUM3QjtBQUFBLEVBdUNBLEFBQU8sYUFDTCxJQUNBO0FBQ0EsaUJBQWEsS0FBSyxPQUFPLFNBQVMsV0FBVyxFQUFFO0FBQUEsRUFDakQ7QUFDRjs7O0FDN0VBLHdCQUFzRDs7O0FDQXRELHdCQUE0QjtBQUM1Qix3QkFPTzs7O0FDUlAsd0JBQTZCOzs7cUJDQ0w7d0JBQ1E7Ozs7Ozs7UUNxQ3ZCLEtBQU0sR0FBQyxVQUFVO0FBQUMsYUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCQUtoQixJQUFZLEdBQUMsSUFBTyxJQUFFLElBQU0sR0FBQyxRQUFRLEdBQUcsSUFBSSxJQUFBOzs7Ozs7Ozs7O0FBRmpELGFBSU0sUUFBQSxLQUFBLE1BQUE7QUFISixhQUVNLEtBQUEsR0FBQTs7OzsrQ0FESCxLQUFZLEdBQUMsS0FBTyxJQUFFLEtBQU0sR0FBQyxRQUFRLEdBQUcsSUFBSSxJQUFBO0FBQUEsaUJBQUEsR0FBQSxPQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FBSmpELGFBQXVFLFFBQUEsS0FBQSxNQUFBOzs7Ozs7Ozs7Ozs7Z0JBeUJwRSxJQUFZLEdBQUMsSUFBTyxJQUFFLElBQU0sR0FBQyxRQUFRLEdBQUcsSUFBSSxJQUFBOzs7Ozs7Ozs7O0FBRmpELGFBSU0sUUFBQSxLQUFBLE1BQUE7QUFISixhQUVJLEtBQUEsR0FBQTs7OzsrQ0FERCxLQUFZLEdBQUMsS0FBTyxJQUFFLEtBQU0sR0FBQyxRQUFRLEdBQUcsSUFBSSxJQUFBO0FBQUEsaUJBQUEsR0FBQSxPQUFBOzs7Ozs7Ozs7OztnQkFONUMsSUFBWSxHQUFDLElBQU8sSUFBRSxJQUFNLEdBQUMsT0FBTyxJQUFJLElBQUE7Ozs7Ozs7Ozs7QUFGN0MsYUFJTSxRQUFBLEtBQUEsTUFBQTtBQUhKLGFBRUksS0FBQSxHQUFBOzs7OytDQURELEtBQVksR0FBQyxLQUFPLElBQUUsS0FBTSxHQUFDLE9BQU8sSUFBSSxJQUFBO0FBQUEsaUJBQUEsR0FBQSxPQUFBOzs7Ozs7Ozs7OztpQkF2QnJDLGlCQUFpQixJQUFHLE1BQUE7OztpQkFBTyxjQUFjLElBQU0sR0FBQyxJQUFJLElBQUE7Ozs7Ozs7O2lCQWdCdEQsSUFBWSxHQUFDLGNBQWMsSUFBTSxHQUFDLElBQUksR0FBRyxJQUFNLEdBQUMsT0FBTyxJQUFJLElBQUE7Ozs7Ozs7Ozs7Ozs7O2tCQWQ5RCxJQUFHLE9BQUssUUFBSSxtQkFBQSxHQUFBOztRQWtCWixLQUFHLE9BQUs7QUFBTSxhQUFBO1FBTVQsS0FBRyxPQUFLO0FBQU0sYUFBQTs7Ozs7OztnQkExQnRCLFNBQU87O2dCQUF1QixNQUFJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUFtQ1csSUFBRyxPQUFBO0FBQUEsNEJBQUEsTUFBQSxJQUFBLEdBQUEsS0FBQSxNQUFBLENBQUE7Ozs7O0FBbkNwRCxhQUF1RSxRQUFBLElBQUEsTUFBQTs7Ozs7O0FBQ3ZFLGFBNkVNLFFBQUEsTUFBQSxNQUFBOzs7O0FBakVKLGFBTU0sTUFBQSxJQUFBO0FBTEosYUFJTSxNQUFBLEdBQUE7QUFIRixhQUVELEtBQUEsTUFBQTs7Ozs7O0FBa0JMLGFBSVMsTUFBQSxNQUFBO0FBSFAsYUFBOEIsUUFBQSxPQUFBO0FBQzlCLGFBQWtDLFFBQUEsT0FBQTtBQUNsQyxhQUFrQyxRQUFBLE9BQUE7NEJBSFcsSUFBRyxFQUFBOztBQU1sRCxhQUtFLE1BQUEsS0FBQTs7NkJBRFksSUFBTyxFQUFBOztBQUdyQixhQTZCQyxNQUFBLE1BQUE7Ozs7Ozs7Ozs7O2dEQTdFUyxpQkFBaUIsS0FBRyxNQUFBO0FBQUEsaUJBQUEsSUFBQSxRQUFBO2dEQUFPLGNBQWMsS0FBTSxHQUFDLElBQUksSUFBQTtBQUFBLGlCQUFBLElBQUEsUUFBQTtVQUV6RCxLQUFHLE9BQUssTUFBSTs7Ozs7Ozs7Ozs7O2dEQWNULEtBQVksR0FBQyxjQUFjLEtBQU0sR0FBQyxJQUFJLEdBQUcsS0FBTSxHQUFDLE9BQU8sSUFBSSxJQUFBO0FBQUEsaUJBQUEsSUFBQSxRQUFBOzs7Ozs7Ozs7Ozs7OzhCQW1CcEIsS0FBRyxFQUFBOzt3Q0FVcEMsS0FBTyxJQUFBOytCQUFQLEtBQU8sRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FEekVWLFVBQTBCO1FBQzFCLGFBQW9CO1FBQ3BCLFdBQWM7UUFDZCxTQUFXO1FBQ1gsUUFBMkI7TUFPbEM7TUFHQSxVQUFVLElBQUksVUFBVSxXQUFXLEtBQUssS0FBSztRQUUzQyxlQUFZLENBQ2hCLFVBQ0EsUUFBUSxPQUFPLE9BQ2YsVUFBVSxVQUFLLEdBRVosSUFBSSxPQUFPLEtBQUssTUFBTSxRQUFTLFdBQVUsSUFBSSxFQUFDLENBQUEsTUFDL0MsVUFBVSxZQUFXLFlBQVksU0FBUyxRQUFPOztBQ3lDTixVQUFHLGFBQUEsSUFBQTs7Ozs7QUFTckMsZ0JBQU87Ozs7O0FBQ04sY0FBTyxLQUFBOzs7K0JBSUYsTUFBQztRQUNaLFFBQVEsUUFBUSxPQUFPLFVBQVUsR0FBQztVQUNoQyx5QkFDRiw4REFBOEQ7Ozs7Y0FLeEQsVUFBTyxNQUFTLElBQUksTUFBTSxLQUFLLElBQUk7Y0FDbkMsUUFBUSxRQUFRLE1BQU0sSUFBSTtjQUMxQixTQUFTLFFBQVEsT0FBTyxPQUFPLFNBQVMsT0FBTyxTQUFTO2NBRXhELFFBQ0osUUFBUSxPQUNKLE9BQU8sUUFBUSxJQUNmLFFBQVEsU0FDUixPQUFPLFFBQVEsSUFDZixPQUFPO0FBRWIsY0FBTSxPQUFPLFFBQVEsR0FBRyxhQUFhLFNBQVMsS0FBSyxDQUFBO2NBQzdDLElBQUksTUFBTSxPQUFPLE1BQU0sTUFBTSxLQUFLLElBQUksQ0FBQTtBQUM1QyxjQUFNLE1BQUs7ZUFDSjtBQUNQLGtDQUFNLEdBQUc7WUFDTCx5QkFBTyw0Q0FBNEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUZuRzFELElBQU0sc0JBQU4sY0FBa0Msd0JBQU07QUFBQSxFQVE3QyxZQUNFLFFBQ0EsUUFDQSxNQUNBLEtBQ0E7QUFDQSxVQUFNLEdBQUc7QUFDVCxTQUFLLFNBQVM7QUFDZCxTQUFLLFFBQVE7QUFDYixTQUFLLFNBQVM7QUFDZCxTQUFLLE9BQU87QUFDWixTQUFLLE1BQU07QUFBQSxFQUNiO0FBQUEsRUFFQSxTQUFTO0FBQ1AsVUFBTSxFQUFFLGNBQWM7QUFDdEIsY0FBVSxNQUFNO0FBRWhCLFNBQUssUUFBUSxJQUFJLHlCQUFpQjtBQUFBLE1BQ2hDLFFBQVE7QUFBQSxNQUNSLE9BQU87QUFBQSxRQUNMLE9BQU87QUFBQSxRQUNQLFVBQVUsS0FBSyxPQUFPO0FBQUEsUUFDdEIsUUFBUSxLQUFLO0FBQUEsUUFDYixNQUFNLEtBQUs7QUFBQSxRQUNYLEtBQUssS0FBSztBQUFBLE1BQ1o7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNIO0FBQUEsRUFFQSxVQUFVO0FBQ1IsU0FBSyxNQUFNLFNBQVM7QUFDcEIsU0FBSyxVQUFVLE1BQU07QUFBQSxFQUN2QjtBQUNGOzs7QURoQ08sSUFBTSwyQkFBTixjQUF1QyxvQ0FBMEI7QUFBQSxFQVF0RSxZQUFZLFFBQWtCLGNBQXNCO0FBQ2xELFVBQU0sR0FBRztBQUNULFNBQUssU0FBUztBQUNkLFNBQUssV0FBVyxLQUFLLE9BQU87QUFDNUIsU0FBSyxlQUFlO0FBRXBCLFVBQU0saUJBQWlCLENBQUMsUUFBdUI7QUFFN0MsV0FBSyxRQUFRLGdCQUFnQixHQUFHO0FBQ2hDLGFBQU87QUFBQSxJQUNUO0FBQ0EsU0FBSyxNQUFNLFNBQVMsQ0FBQyxHQUFHLFVBQVUsY0FBYztBQUNoRCxTQUFLLE1BQU0sU0FBUyxDQUFDLE9BQU8sR0FBRyxXQUFXLGNBQWM7QUFDeEQsU0FBSyxNQUFNLFNBQVMsQ0FBQyxPQUFPLEdBQUcsY0FBYyxjQUFjO0FBQzNELFNBQUssTUFBTSxTQUFTLENBQUMsT0FBTyxHQUFHLGFBQWEsY0FBYztBQUFBLEVBQzVEO0FBQUEsRUFFQSxNQUFNLFNBQXdCO0FBQzVCLFNBQUssZUFBZSxnQkFBZ0I7QUFDcEMsU0FBSyxnQkFBZ0I7QUFBQSxNQUNuQixFQUFFLFNBQVMsaUJBQWlCLFNBQVMsZUFBZTtBQUFBLE1BQ3BELEVBQUUsU0FBUyxrQkFBYSxTQUFTLGFBQWE7QUFBQSxNQUM5QyxFQUFFLFNBQVMsa0JBQWEsU0FBUyxjQUFjO0FBQUEsTUFDL0MsRUFBRSxTQUFTLGtDQUE2QixTQUFTLFlBQVk7QUFBQSxNQUM3RCxFQUFFLFNBQVMsVUFBVSxTQUFTLGNBQWM7QUFBQSxJQUM5QyxDQUFDO0FBRUQsU0FBSyxPQUFPLElBQUksY0FBYyxxQkFBcUIsS0FBSyxjQUFjLEVBQUU7QUFDeEUsUUFBSSxDQUFDLEtBQUs7QUFBTSxXQUFLLFFBQVEsQ0FBQztBQUU5QixZQUFRLElBQUksSUFBSTtBQUNoQixVQUFNLFVBQVUsTUFBTSxJQUFJLE1BQU0sV0FBVyxLQUFLLElBQUk7QUFDcEQsU0FBSyxRQUFRLFFBQVEsTUFBTSxJQUFJO0FBRS9CLFNBQUssWUFBWSxJQUFJLGNBQWMsYUFBYSxLQUFLLElBQUksRUFBRTtBQUUzRCxZQUFRLElBQUksSUFBSTtBQUNoQixVQUFNLE9BQU87QUFBQSxFQUNmO0FBQUEsRUFFQSxXQUFxQjtBQUNuQixVQUFNLFFBQVEsS0FBSyxVQUNoQixJQUFJLENBQUMsU0FBUztBQUNiLFlBQU0sSUFBSSxLQUFLLFNBQVMsTUFBTTtBQUM5QixhQUFPLEVBQUUsR0FBRyxNQUFNLEtBQUssTUFBTSxHQUFHO0FBQUEsSUFDbEMsQ0FBQyxFQUNBLElBQUksQ0FBQyxTQUFTO0FBQ2IsWUFBTSxTQUFTLEtBQUssS0FBSyxNQUFNLElBQUk7QUFDbkMsWUFBTSxRQUFRLE9BQU8sR0FBRztBQUN4QixZQUFNLE9BQU8sT0FBTyxNQUFNLENBQUMsRUFBRSxLQUFLLElBQUk7QUFFdEMsYUFBTyxFQUFFLE9BQU8sTUFBTSxRQUFRLEtBQUssRUFBRTtBQUFBLElBQ3ZDLENBQUM7QUFFSCxnQ0FBSyxLQUFLO0FBQ1YsV0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUVBLFlBQVksTUFBc0I7QUFDaEMsV0FBTyxHQUFHLElBQUksT0FBTyxLQUFLLEtBQUssTUFBTSxjQUFjLEtBQUssSUFBSTtBQUFBLEVBQzlEO0FBQUEsRUFFQSxpQkFBaUIsTUFBMEIsSUFBaUI7QUFDMUQsVUFBTSxpQkFBaUIsTUFBTSxFQUFFO0FBQy9CLE9BQUcsWUFBWSxHQUFHLElBQUksT0FBTyxLQUFLLEtBQUssS0FBSyxNQUFNLGNBQ2hELEtBQUssS0FBSyxJQUNaO0FBQUEsRUFDRjtBQUFBLEVBRUEsTUFBTSxXQUFXLE1BQTZCO0FBQzVDLFFBQUk7QUFDRixXQUFLLE1BQU0sT0FBTyxLQUFLLFFBQVEsQ0FBQztBQUNoQyxXQUFLLFVBQVUsT0FBTyxLQUFLLFFBQVEsQ0FBQztBQUNwQyxZQUFNLElBQUksTUFBTSxPQUFPLEtBQUssTUFBTSxLQUFLLE1BQU0sS0FBSyxJQUFJLENBQUM7QUFDdkQsVUFBSSx5QkFBTywwQkFBMEI7QUFBQSxJQUN2QyxTQUFTLEtBQVA7QUFDQSxtQ0FBTSxHQUFHO0FBQ1QsVUFBSSx5QkFBTyw0Q0FBNEM7QUFBQSxJQUN6RDtBQUFBLEVBQ0Y7QUFBQSxFQUVBLGFBQWEsTUFBYyxLQUF1QztBQUNoRSxRQUFJLGVBQWUsaUJBQWlCLElBQUksUUFBUSxVQUFVO0FBQ3hELFdBQUssV0FBVyxJQUFJO0FBQUEsSUFDdEIsV0FDRSxlQUFlLGlCQUNmLElBQUksT0FBTyxXQUNYLElBQUksVUFDSjtBQUNBLFlBQU0sT0FBTyxJQUFJLFVBQVUsb0JBQW9CLDhCQUFZO0FBQzNELFlBQU0sRUFBRSxXQUFXLHNCQUFRLENBQUM7QUFDNUIsVUFBSSxDQUFDO0FBQVE7QUFFYixXQUFLLEtBQUssU0FBUyxLQUFLLE1BQU0sRUFBRSxRQUFRLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFDOUQsYUFBTyxVQUFVLEVBQUUsTUFBTSxLQUFLLFFBQVEsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO0FBQUEsSUFDNUQsV0FBVyxlQUFlLGlCQUFpQixlQUFlLFlBQVk7QUFDcEUsVUFBSTtBQUNKLFVBQUksZUFBZSxjQUFjLElBQUksUUFBUTtBQUFTLGNBQU07QUFDNUQsVUFBSSxlQUFlO0FBQWUsWUFBSSxJQUFJLFFBQVE7QUFBUyxnQkFBTTtBQUFBO0FBQ2pFLFVBQUksZUFBZSxpQkFBaUIsSUFBSSxVQUFVO0FBQ2hELFlBQUksSUFBSSxRQUFRO0FBQVcsZ0JBQU07QUFDakMsWUFBSSxJQUFJLFFBQVE7QUFBYSxnQkFBTTtBQUNuQyxZQUFJLElBQUksUUFBUTtBQUFjLGdCQUFNO0FBQUEsTUFDdEM7QUFFQSxVQUFJLG9CQUNGLEtBQUssUUFDTCxNQUNBLEtBQUssTUFDTCxHQUNGLEVBQUUsS0FBSztBQUNQLFdBQUssTUFBTTtBQUFBLElBQ2I7QUFBQSxFQUNGO0FBQ0Y7OztBRHpJTyxJQUFNLDZCQUFOLGNBQXlDLG9DQUEwQjtBQUFBLEVBSXhFLFlBQVksUUFBa0I7QUFDNUIsVUFBTSxHQUFHO0FBQ1QsU0FBSyxTQUFTO0FBQ2QsU0FBSyxXQUFXLEtBQUssT0FBTztBQUFBLEVBQzlCO0FBQUEsRUFFQSxTQUFlO0FBQ2IsU0FBSyxlQUFlLFlBQVk7QUFDaEMsVUFBTSxFQUFFLG1CQUFtQixLQUFLO0FBQ2hDLFFBQUksZUFBZSxXQUFXLEdBQUc7QUFDL0IsV0FBSyxNQUFNO0FBQ1gsVUFBSSx5QkFBTywwQkFBMEI7QUFBQSxJQUN2QyxXQUNFLGVBQWUsV0FBVyxLQUMxQixDQUFDLGVBQWUsR0FBRyxTQUFTLEdBQUcsR0FDL0I7QUFDQSxXQUFLLE1BQU07QUFDWCxVQUFJLHlCQUNGLEtBQUssUUFDTCxlQUFlLEVBQ2pCLEVBQUUsS0FBSztBQUFBLElBQ1QsT0FBTztBQUNMLFlBQU0sT0FBTztBQUFBLElBQ2Y7QUFBQSxFQUNGO0FBQUEsRUFFQSxXQUFxQjtBQUNuQixVQUFNLEVBQUUsbUJBQW1CLEtBQUs7QUFDaEMsUUFBSSxlQUFlLFVBQVUsS0FBSyxlQUFlLEdBQUcsU0FBUyxHQUFHLEdBQUc7QUFFakUsVUFBSSxTQUFTLGVBQWUsR0FBRyxNQUFNLEdBQUcsRUFBRTtBQUMxQyxVQUFJLElBQUksUUFBUSxRQUFRLFlBQVksUUFBVztBQUM3QyxZQUFJLFFBQVEsSUFBSSxRQUFRLFFBQVEsU0FBUyxJQUFJLE1BQzNDLElBQUksU0FDTjtBQUNBLGVBQU8sTUFBTSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxJQUFJO0FBQUEsTUFDbEQsT0FBTztBQUNMLFlBQUkseUJBQU8scUNBQXFDO0FBQUEsTUFDbEQ7QUFBQSxJQUNGO0FBQU8sYUFBTztBQUFBLEVBQ2hCO0FBQUEsRUFFQSxZQUFZLE1BQXNCO0FBQ2hDLFdBQU8sR0FBRztBQUFBLEVBQ1o7QUFBQSxFQUVBLGlCQUFpQixNQUEwQixJQUFpQjtBQUMxRCxVQUFNLGlCQUFpQixNQUFNLEVBQUU7QUFBQSxFQUNqQztBQUFBLEVBRUEsYUFBYSxNQUFjLEtBQXVDO0FBQ2hFLFFBQUkseUJBQXlCLEtBQUssUUFBUSxJQUFJLEVBQUUsS0FBSztBQUNyRCxTQUFLLE1BQU07QUFBQSxFQUNiO0FBQ0Y7OztBSy9EQSx3QkFBcUI7QUFDckIsd0JBQXFEOzs7d0JDQWxCOzs7Ozs7Ozs7Ozs7QUNnQm5DLGFBQThDLFFBQUEsS0FBQSxNQUFBOzs7Ozs7Ozs7Ozs7OztNQWpCN0IsWUFBQSxRQUFBLEtBQUEsYUFBQSxTQUFBLFNBQUEsWUFBQSxHQUFBLFdBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRRElKLGdCQUFZO3NCQUVHLE1BQVk7O1lBQzlCLE9BQU8sSUFBSSxjQUFjLHFCQUFxQixNQUFNLEVBQUU7bUJBQy9DLElBQUksTUFBTSxXQUFXLElBQUk7OztNQUdwQztBQUNKLFVBQU8sTUFBWSxVQUFBLFFBQUEsUUFBQSxRQUFBLGFBQUE7QUFDakIsdUNBQWlCLGVBQWMsTUFBTyxXQUFXLEtBQUksR0FBRyxJQUFJLE9BQU0sSUFBSTs7OztBQ0lsQyxXQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0JFV25DLElBQUcsRUFBQTtnQkFBQyxNQUFJO2dCQUFDLElBQVEsRUFBQTs7O0FBQXRCLGFBQTRCLFFBQUEsSUFBQSxNQUFBOzs7Ozs7O3FCQUFkLEtBQVEsRUFBQTs7Ozs7Ozs7Ozs7Ozs7OztRQUtiLEtBQU8sT0FBSyxVQUFVLEtBQU8sT0FBSztBQUFRLGFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQXVCdEIsSUFBTSxNQUFHOzs7OztpQkFTekIsWUFBWSxJQUFJLEtBQUUsSUFBUSxFQUFBLElBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJEQURKLFdBQVUsSUFBSSxHQUFBLElBQUksS0FBSyxtQkFBZSxpQkFBQTs7OztBQVRuRSxhQWFNLFFBQUEsS0FBQSxNQUFBO0FBWkosYUFBd0MsS0FBQSxHQUFBOzs7QUFFeEMsYUFTTyxLQUFBLElBQUE7QUFITCxhQUVJLE1BQUEsRUFBQTs7Ozs7Ozs7Ozs7OztnREFWZSxJQUFNLE1BQUc7QUFBRyxpQkFBQSxJQUFBLFFBQUE7Z0RBUzVCLFlBQVksSUFBSSxLQUFFLElBQVEsRUFBQSxJQUFBO0FBQUEsaUJBQUEsSUFBQSxRQUFBOzZFQURKLFdBQVUsSUFBSSxHQUFBLElBQUksS0FBSyxtQkFBZSxvQkFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBN0I1QyxJQUFNLE1BQUE7Ozs7Ozs7aUJBWWpCLFlBQVksSUFBSSxLQUFFLElBQVEsRUFBQSxJQUFBOzs7Ozs7Ozs7Ozs7Ozs7OytEQUlaLElBQUksSUFBQSxFQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7MkRBTEUsV0FBVSxJQUFJLEdBQUEsSUFBSSxLQUFLLG1CQUFlLGlCQUFBOzsyQ0FWckQsSUFBTyxPQUFLOzs7O0FBRjdCLGFBbUJNLFFBQUEsS0FBQSxNQUFBO0FBbEJKLGFBQWtDLEtBQUEsR0FBQTs7O0FBQ2xDLGFBZ0JVLEtBQUEsUUFBQTtBQWZSLGFBYVUsVUFBQSxPQUFBO0FBWFIsYUFVTyxTQUFBLElBQUE7QUFKTCxhQUdDLE1BQUEsRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs4REFiYyxJQUFNLE1BQUE7QUFBQSxpQkFBQSxJQUFBLFFBQUE7OERBWWpCLFlBQVksSUFBSSxLQUFFLElBQVEsRUFBQSxJQUFBO0FBQUEsaUJBQUEsSUFBQSxRQUFBO3lGQUROLFdBQVUsSUFBSSxHQUFBLElBQUksS0FBSyxtQkFBZSxvQkFBQTs7Ozs7c0NBSzVDLElBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCQW5CN0IsZ0JBQWdCLElBQU0sS0FBRSxJQUFJLEtBQUUsSUFBSyxJQUFFLElBQUcsSUFBRSxJQUFHLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQkFBN0MsZ0JBQWdCLEtBQU0sS0FBRSxLQUFJLEtBQUUsS0FBSyxJQUFFLEtBQUcsSUFBRSxLQUFHLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBTGpELElBQUssT0FBSyxTQUFLLG1CQUFBLEdBQUE7bUJBSVgsSUFBSzs7aUNBQVYsUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQURSLGFBMENNLFFBQUEsS0FBQSxNQUFBOzs7Ozs7O1VBN0NELEtBQUssT0FBSztBQUFLLGlCQUFBLEVBQUEsTUFBQSxLQUFBOztxQkFJWCxLQUFLOzttQ0FBVixRQUFJLEtBQUEsR0FBQTs7Ozs7Ozs7Ozs7Ozs0QkFBSixRQUFJLElBQUEsWUFBQSxRQUFBLEtBQUEsR0FBQTs7Ozs7Ozs7O3FDQUFKLFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UURuQkssV0FBZ0I7UUFDaEIsT0FBZTtRQUNmLFVBQXlCO1FBQ3pCLFVBQWU7UUFDZixjQUFXO1FBQ1gsY0FBVztRQUNYLGFBQWdCO1FBQ2hCLGlCQUE2QjtVQUVoQyxhQUFhO1VBQ2IsT0FBTyxTQUFTLFFBQVE7UUFFMUIsaUJBQWlCLElBQUksVUFBVSxXQUFXO3NDQ2lCakIsTUFBQyxNQUFXLGFBQWEsT0FBTSxDQUFDO29DQUNsQyxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsS0FBSTt3Q0FrQjVDLE1BQUMsTUFBVyxhQUFhLE9BQU0sQ0FBQztzQ0FDbEMsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLEtBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBSjNDOUQsd0JBQXdCLFFBQWtCO0FBQy9DLFFBQU0sRUFBRSxVQUFVLE9BQU87QUFDekIsUUFBTSxFQUFFLFdBQVcsc0JBQXNCO0FBRXpDLFNBQU8sQ0FDTCxRQUNBLElBQ0EsUUFDRztBQTFCUDtBQTJCSSxPQUFHLFFBQVEsV0FBVztBQUN0QixVQUFNLGVBQWUscUJBQXFCLE1BQU07QUFDaEQsVUFBTSxNQUFNLGVBQWUsUUFBUSxZQUFZO0FBRS9DLFFBQUksUUFBUSxJQUFJO0FBQ2QsU0FBRyxZQUFZO0FBQ2YsU0FBRyxNQUFNO0FBQ1Q7QUFBQSxJQUNGO0FBRUEsUUFBSSxPQUFNLEdBQ1IsT0FBTTtBQUNSLFFBQUksRUFBRSxPQUFPLEtBQUssUUFBUSxNQUFNLFNBQVMsU0FBUztBQUNsRCxRQUFJLFVBQVUsUUFBVztBQUN2QixZQUFNLFNBQVMsU0FBUyxNQUFNLEVBQUU7QUFDaEMsVUFBSSxDQUFDLE1BQU0sTUFBTTtBQUFHLGVBQU07QUFDMUIsWUFBTSxTQUFTLFNBQVMsTUFBTSxFQUFFO0FBQ2hDLFVBQUksQ0FBQyxNQUFNLE1BQU07QUFBRyxlQUFNO0FBQUEsSUFDNUI7QUFHQSxVQUFNLFdBQVcsSUFBSSxjQUFjLHFCQUNqQyxJQUFJLFlBQ0osRUFDRjtBQUNBLFVBQU0sRUFBRSxhQUFhO0FBRXJCLFFBQUksUUFBUTtBQUNaLFFBQUksU0FBUyxRQUFXO0FBQ3RCLFVBQUk7QUFDRixjQUFNLE1BQU0sU0FBUyxNQUFNO0FBQzNCLFlBQUksS0FBSztBQUNQLGdCQUFNLFFBQVEsVUFBSSxVQUFVLElBQUksTUFBbEIsbUJBQXFCO0FBQ25DLGtCQUFRLE1BQU0sSUFBSSxVQUFVO0FBQUEsUUFDOUI7QUFBTyxjQUFJLHlCQUFPLDhDQUE4QztBQUFBLE1BQ2xFLFNBQVMsR0FBUDtBQUNBLFlBQUkseUJBQU8sY0FBYyxlQUFlO0FBQUEsTUFDMUM7QUFBQSxJQUNGO0FBRUEsVUFBTSxTQUFTLFVBQVUsR0FBRztBQUM1QixVQUFNLE1BQ0osWUFBWSxRQUNSLGFBQWEsT0FBTyxPQUFPLEdBQUcsSUFDOUIsYUFBYSxPQUFPLE9BQU8sS0FBSyxNQUFNO0FBQzVDLFVBQU0sU0FBUyxvQkFBb0IsS0FBSyxTQUFTO0FBRWpELFVBQU0sWUFBWSwwQkFBVSxVQUFVLFNBQVM7QUFDL0MsVUFBTSxZQUFZLGdCQUFnQixhQUFhLFFBQVEsR0FBRyxHQUFHLFNBQVM7QUFHdEUsVUFBTSxXQUFXLFlBQVksV0FBVyxRQUFRO0FBQ2hELFVBQU0sU0FBUSxZQUFZLFVBQVUsT0FBTyxpQkFBaUI7QUFDNUQsZ0NBQUssRUFBRSxVQUFVLGNBQU0sQ0FBQztBQUV4QixVQUFNLFFBQVEsaUJBQWlCLFFBQU8sSUFBSTtBQUUxQyxZQUFRLGFBQWE7QUFBQSxXQUNkO0FBQ0gsWUFBSSxlQUFPO0FBQUEsVUFDVCxRQUFRO0FBQUEsVUFDUixPQUFPO0FBQUEsWUFDTDtBQUFBLFlBQ0E7QUFBQSxZQUNBO0FBQUEsWUFDQTtBQUFBLFlBQ0E7QUFBQSxZQUNBO0FBQUEsWUFDQTtBQUFBLFlBQ0E7QUFBQSxVQUNGO0FBQUEsUUFDRixDQUFDO0FBQ0Q7QUFBQSxXQUNHO0FBQ0gsdUJBQ0UsUUFDQSxJQUNBLGNBQ0EsT0FDQSxPQUNBLFVBQ0EsTUFDQSxJQUNGO0FBQ0E7QUFBQTtBQUdKLE9BQUcsTUFBTTtBQUFBLEVBQ1g7QUFDRjtBQU9BLElBQU0sY0FBYyxDQUFDLFVBQ25CLFVBQVUsU0FBUyxPQUFPLFVBQVUsVUFBVSxRQUFRO0FBRXhELDhCQUE4QixRQUFpQztBQUM3RCxRQUFNLFFBQVEsT0FBTyxNQUFNLElBQUk7QUFDL0IsUUFBTSxXQUFXLENBQUMsVUFBYztBQWhJbEM7QUFpSUksbUNBQ0csS0FBSyxDQUFDLE1BQU0sRUFBRSxXQUFXLEdBQUcsUUFBTyxDQUFDLE1BRHZDLG1CQUVJLE1BQU0sU0FGVixtQkFFaUIsT0FGakIsbUJBR0k7QUFBQTtBQUVOLFFBQU0sVUFDSixDQUFDO0FBRUgsbUJBQWlCLFFBQVEsQ0FBQyxVQUFVO0FBQ2xDLFVBQU0sUUFBUSxTQUFTLEtBQUs7QUFDNUIsWUFBUSxTQUFTLFlBQVksS0FBSztBQUFBLEVBQ3BDLENBQUM7QUFFRCxVQUFRLFNBQVMsUUFBUSxTQUNyQixhQUFhLFFBQVEsTUFBZ0IsSUFDckM7QUFFSixNQUFJLFFBQVEsT0FBTztBQUNqQixVQUFNLFFBQVMsUUFBUSxNQUFpQixNQUFNLGNBQWM7QUFDNUQsWUFBUSxRQUFRLENBQUMsTUFBTSxJQUFJLE1BQU0sRUFBRTtBQUFBLEVBQ3JDO0FBRUEsU0FBTztBQUNUO0FBRUEsd0JBQXdCLFFBQWtCLGNBQStCO0FBMUp6RTtBQTJKRSxRQUFNLEVBQUUsS0FBSyxRQUFRLGFBQU0sT0FBTyxPQUFPLE1BQU0sU0FBUyxNQUFNLFlBQzVEO0FBQ0YsUUFBTSxFQUFFLGNBQWMsT0FBTztBQUM3QixNQUFJLE1BQU07QUFFVixNQUFJLENBQUMsZ0JBQWdCLFNBQVMsS0FBSTtBQUNoQyxXQUFPLGVBQWUsd0RBQXVELGdCQUFnQixJQUMzRixDQUFDLFVBQVMsU0FBUyxjQUNyQixFQUFFLEtBQUssSUFBSTtBQUViLFFBQU0sV0FBVyxXQUFXLFNBQVMsR0FBRztBQUN4QyxNQUFJLENBQUM7QUFDSCxXQUFPLGNBQWM7QUFFdkIsUUFBTSxZQUFZLFVBQVUsU0FBUztBQUNyQyxTQUFDLE1BQU0sRUFBRSxLQUFLLE1BQWQsbUJBQWlCLFFBQVEsQ0FBQyxNQUFNO0FBQzlCLFFBQUksTUFBTSxVQUFhLENBQUMsVUFBVSxTQUFTLENBQUM7QUFDMUMsYUFBTyxpQkFBaUI7QUFBQSxFQUM1QjtBQUVBLE1BQUksVUFBVSxVQUFhLFVBQVU7QUFDbkMsV0FBTyxnQkFBZ0I7QUFFekIsTUFBSSxVQUFVLFVBQWEsTUFBTSxNQUFNLENBQUMsUUFBUSxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFDbEUsV0FBTyxnQkFBZ0I7QUFFekIsTUFBSSxTQUFTLFVBQWEsU0FBUztBQUNqQyxXQUFPLGVBQWU7QUFFeEIsTUFBSSxZQUFZLFVBQWEsWUFBWSxVQUFVLFlBQVk7QUFDN0QsV0FBTyxrQkFBa0I7QUFFM0IsTUFDRSxTQUFTLFVBQ1QsQ0FBQyxJQUFJLFFBQVEsZUFBZSxJQUFJLFVBQVUsR0FDMUM7QUFDQSxXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksWUFBWSxVQUFhLFlBQVk7QUFDdkMsV0FBTyxrQkFBa0I7QUFFM0IsU0FBTyxRQUFRLEtBQ1gsS0FDQSxHQUFHO0FBQUE7QUFBQTtBQUFBO0FBQUEsYUFJSSxXQUFXLE1BQU07QUFBQSxnQkFDZCxVQUNULElBQUksQ0FBQyxNQUFNO0FBQ1YsV0FBTyxFQUFFLEdBQUcsS0FBSyxhQUFhLFdBQVcsQ0FBQyxFQUFFLFNBQVM7QUFBQSxFQUN2RCxDQUFDLEVBQ0EsT0FBTyxDQUFDLFdBQVMsT0FBSyxRQUFRLEdBQUcsRUFDakMsSUFBSSxDQUFDLFdBQVMsT0FBSyxDQUFDLEVBQ3BCLEtBQUssSUFBSSxLQUFLO0FBQUE7QUFBQTtBQUlyQjtBQUVBLElBQU0sZ0JBQWdCLENBQUMsV0FBbUIsT0FBTyxTQUFTLElBQUk7QUFFdkQseUJBQ0wsUUFDQSxNQUNBLE9BQ0EsTUFDQSxNQUNBO0FBQ0EsUUFBTSxRQUFRLGNBQWMsTUFBTTtBQUNsQyxTQUNFLFNBQVMsUUFDVCxTQUFTLFFBQ1IsV0FBVSxVQUFhLE1BQU0sU0FBUyxJQUFJO0FBRS9DO0FBRU8sd0JBQ0wsUUFDQSxRQUNBLE1BQ0EsT0FDQSxPQUNBLFFBQ0EsTUFDQSxNQUNBO0FBQ0EsUUFBTSxRQUFRLE1BQ1gsT0FBTyxDQUFDLENBQUMsUUFBUSxVQUFVLGdCQUFnQixRQUFRLE1BQU0sT0FBTyxNQUFLLElBQUcsQ0FBQyxFQUN6RSxJQUFJLENBQUMsQ0FBQyxHQUFHLFVBQVUsT0FBTyxLQUFLO0FBQ2xDLE1BQUksUUFBTztBQUFHLFVBQU0sS0FBSyxTQUFTLEtBQUs7QUFFdkMsY0FBWSxRQUFRLFFBQVEsT0FBTyxJQUFJO0FBQ3pDOzs7QUt6UEEsd0JBQXVCO0FBTXZCLDhCQUFxQyxRQUFrQixLQUFpQjtBQU54RTtBQU9FLFFBQU0sRUFBRSwyQkFBMkIsT0FBTztBQUMxQyxRQUFNLE9BQU8sWUFBWTtBQUN6QixNQUFJLENBQUMsTUFBTTtBQUNULFFBQUkseUJBQU8sNENBQTRDO0FBQ3ZEO0FBQUEsRUFDRjtBQUNBLFFBQU0sRUFBRSxhQUFhO0FBRXJCLFFBQU0saUJBQWlCLGdCQUFnQixRQUFRLFVBQVUsR0FBRyxFQUFFO0FBQzlELFFBQU0sU0FBUyxDQUFDLEdBQUcsZUFBZSxPQUFPLEdBQUcsZUFBZSxRQUFRO0FBQ25FLE1BQUksT0FBTyxXQUFXLEdBQUc7QUFDdkIsUUFBSSx5QkFBTyxNQUFNLFdBQVc7QUFDNUI7QUFBQSxFQUNGO0FBRUEsUUFBTSxTQUFTLGFBQU8sS0FBSyxDQUFDLE9BQzFCLHVCQUF1QixTQUFTLEdBQUcsS0FBSyxDQUMxQyxNQUZlLG1CQUVaO0FBRUgsTUFBSSxDQUFDLFFBQVE7QUFDWCxRQUFJLHlCQUNGLHdCQUF3Qix5Q0FBeUMsdUJBQXVCLEtBQ3RGLElBQ0YsR0FDRjtBQUNBO0FBQUEsRUFDRjtBQUVBLFFBQU0sU0FBUyxJQUFJLGNBQWMscUJBQXFCLFFBQVEsRUFBRTtBQUNoRSxRQUFNLElBQUksVUFBVSxXQUFXLFNBQVMsTUFBTTtBQUNoRDs7O0FDckNBLHdCQUE2QztBQU03QyxJQUFNLCtCQUErQixDQUNuQyxVQUNBLFVBQ0EsT0FDQSxLQUNBLGVBRUEsV0FDSSxTQUNDLFFBQVEsZUFBZSxTQUFTLFFBQVEsRUFDeEMsUUFBUSxhQUFhLEtBQUssRUFDMUIsUUFBUSxXQUFXLEdBQUcsRUFFdEIsUUFBUSxZQUFZLE9BQU8sRUFBRSxPQUFPLFVBQVUsQ0FBQyxJQUNoRDtBQUVOLDRCQUE0QixVQUFrQjtBQUM1QyxNQUFJLElBQUksR0FDTixVQUFVO0FBQ1osU0FBTyxJQUFJLGNBQWMscUJBQXFCLFNBQVMsRUFBRSxHQUFHO0FBQzFELFFBQUksTUFBTTtBQUFHLGlCQUFXLElBQUk7QUFBQTtBQUN2QixnQkFBVSxRQUFRLE1BQU0sR0FBRyxFQUFFLElBQUksSUFBSTtBQUMxQztBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1Q7QUFFQSwrQ0FDRSxnQkFDQSxjQUNBLFVBQ0EsVUFDQSxPQUNBO0FBQ0EsTUFBSSxhQUFhO0FBRWpCLE1BQUksY0FBYztBQUNoQixVQUFNLGVBQWUsSUFBSSxjQUFjLHFCQUNyQyxjQUNBLEVBQ0Y7QUFFQSxVQUFNLFdBQVcsTUFBTSxJQUFJLE1BQU0sV0FBVyxZQUFZO0FBQ3hELGlCQUFhLFNBQVMsUUFDcEIsNEJBQ0EsaUJBQ0ksR0FBRyxnQkFBZ0IsU0FBUyxlQUM1QixHQUFHLGVBQWUsU0FBUyxZQUNqQztBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1Q7QUFFQSxzQkFBNkIsUUFBa0IsT0FBZTtBQTNEOUQ7QUE0REUsUUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxNQUNFO0FBRUosUUFBTSxXQUFXLFlBQVk7QUFDN0IsTUFBSSxDQUFDO0FBQVU7QUFFZixRQUFNLGdCQUFnQixJQUFJLFlBQVksaUJBQWlCLFNBQVMsSUFBSTtBQUVwRSxRQUFNLE1BQU0sYUFBYSxXQUFXLEtBQUssRUFBRTtBQUMzQyxRQUFNLFdBQVcsYUFBYSxXQUFXLE9BQU8sR0FBRyxFQUFFO0FBRXJELE1BQUksY0FBYyw2QkFDaEIsbUJBQ0EsVUFDQSxPQUNBLEtBQ0EsVUFDRjtBQUNBLGdCQUFjLG1CQUFtQixXQUFXO0FBRTVDLFFBQU0sV0FBVyxpQkFDYixHQUFHLGdCQUFnQixTQUFTLGVBQzVCO0FBQUEsRUFBUSxlQUFlLFNBQVM7QUFBQTtBQUVwQyxRQUFNLGVBQWUsc0JBQXNCO0FBQzNDLFFBQU0sYUFBYSxNQUFNLGdDQUN2QixnQkFDQSxjQUNBLFVBQ0EsVUFDQSxRQUNGO0FBRUEsUUFBTSxVQUFVLE1BQU0sSUFBSSxNQUFNLE9BQzlCLHFDQUFjLEdBQUcsY0FBYyxRQUFRLGdCQUFnQixHQUN2RCxVQUNGO0FBRUEsTUFBSSxDQUFDLGdCQUFnQjtBQUNuQixVQUFNLEVBQUUsUUFBUSxVQUFJLFFBQVEsUUFBUSxhQUFwQixZQUFnQyxDQUFDO0FBQ2pELFFBQUksQ0FBQyxLQUFLO0FBQ1IsVUFBSSx5QkFDRixnSkFDRjtBQUNBO0FBQUEsSUFDRjtBQUNBLFVBQU0sbUJBQ0osT0FDQSxRQUFRLFVBQ1IsVUFDQSxJQUFJLGNBQWMsYUFBYSxRQUFRLEVBQUUsYUFDekMsR0FDRjtBQUFBLEVBQ0YsT0FBTztBQUNMLFVBQU0sUUFBUSxHQUFHLGFBQWEsUUFBUTtBQUN0QyxVQUFNLEVBQUUsV0FBVyxJQUFJLFVBQVUsV0FBVztBQUM1QyxRQUFJLHFCQUFxQixDQUFDLFFBQVE7QUFDaEMsYUFBTyxhQUFhLE9BQU8sT0FBTyxVQUFVLENBQUM7QUFBQSxJQUMvQyxPQUFPO0FBRUwsVUFBSSxVQUFVLE1BQU0sSUFBSSxNQUFNLEtBQUssUUFBUTtBQUMzQyxZQUFNLFNBQVMsYUFBWSxPQUFPO0FBQ2xDLGdCQUNFLE9BQU8sS0FDTixRQUFPLEdBQUcsU0FBUyxPQUFPLE1BQzNCLFFBQ0MsUUFBTyxHQUFHLFNBQVMsT0FBTyxNQUMzQixPQUFPO0FBRVQsWUFBTSxJQUFJLE1BQU0sT0FBTyxVQUFVLE9BQU87QUFBQSxJQUMxQztBQUFBLEVBQ0Y7QUFFQSxRQUFNLE9BQU8sb0JBQ1QsSUFBSSxVQUFVLFFBQVEsSUFBSSxJQUMxQixJQUFJLFVBQVU7QUFFbEIsUUFBTSxLQUFLLFNBQVMsU0FBUyxFQUFFLFFBQVEsTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUU3RCxNQUFJLGNBQWM7QUFDaEIsUUFBSSxJQUFJLFFBQVEsUUFBUSx1QkFBdUI7QUFDN0MsVUFBSSxTQUFTLG1CQUNYLDhDQUNGO0FBQUEsSUFDRixPQUFPO0FBQ0wsVUFBSSx5QkFDRiwrRUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsTUFBSSxtQkFBbUI7QUFFckIsVUFBTSxTQUFTLEtBQUssS0FBSztBQUN6QixXQUFPLFVBQVUsT0FBTyxTQUFTLEVBQUUsTUFBTTtBQUFBLEVBQzNDLE9BQU87QUFDTCxVQUFNLGlCQUFpQixTQUFTLHVCQUF1QixtQkFBbUI7QUFFMUUsVUFBTSxpQkFBaUIsTUFBTSxLQUFLLGNBQWMsRUFBRSxLQUNoRCxDQUFDLFVBQTRCLE1BQU0sY0FBYyxXQUNuRDtBQUNBLG1CQUFlLFlBQVk7QUFDM0IsbUJBQWUsTUFBTTtBQUFBLEVBQ3ZCO0FBQ0Y7OztBQzVLQSx3QkFBcUI7QUFDckIsd0JBQThCO0FBSzlCLDZCQUFvQyxRQUFrQixVQUFrQjtBQUN0RSxRQUFNLEVBQUUsVUFBVSxVQUFVO0FBQzVCLFFBQU0sT0FBTyw4QkFBWSxZQUFZO0FBRXJDLFFBQU0sRUFBRSx3QkFBd0IsZ0JBQWdCLGNBQWM7QUFFOUQsUUFBTSxXQUFXLE1BQU0sV0FBVyxLQUFLLFVBQVUsQ0FBQyxHQUFHLElBQUcsR0FBRyxNQUFNO0FBQy9ELFVBQU0sRUFBRSxPQUFPLFFBQVE7QUFDdkIsVUFBTSxXQUFXLGFBQWEsV0FBVyxPQUFPLEdBQUcsRUFBRTtBQUNyRCxXQUFPLEVBQUUsTUFBTSxHQUFHLE9BQU8sU0FBUztBQUFBLEVBQ3BDLENBQUM7QUFFRCxhQUFXLEVBQUUsTUFBTSxXQUFXLFVBQVU7QUFDdEMsUUFBSSxDQUFDLHVCQUF1QixTQUFTLEtBQUs7QUFBRztBQUU3QyxVQUFNLFVBQVUsTUFBTSxJQUFJLE1BQU0sS0FBSyxJQUFJO0FBQ3pDLFVBQU0sQ0FBQyxNQUFNLGFBQWEsYUFBWSxPQUFPO0FBRTdDLFFBQUksQ0FBQyxnQkFBZ0I7QUFDbkIsWUFBTSxRQUFRLFNBQVMsS0FBSyxPQUFPLEtBQUssTUFBTSxHQUFHLEVBQUU7QUFDbkQsWUFBTSxVQUFVLFdBQVcsT0FBTyxPQUFPLElBQUk7QUFDN0MsWUFBTSxhQUFhO0FBQUEsRUFBUTtBQUFBLEtBQWU7QUFDMUMsWUFBTSxJQUFJLE1BQU0sT0FBTyxNQUFNLFVBQVU7QUFBQSxJQUN6QyxPQUFPO0FBRUwsWUFBTSxhQUNKLE9BQ0MsTUFBSyxTQUFTLE9BQU8sTUFDdEIsR0FBRyxhQUFhLFdBQ2YsV0FBVSxTQUFTLE9BQU8sTUFDM0I7QUFFRixZQUFNLElBQUksTUFBTSxPQUFPLE1BQU0sVUFBVTtBQUFBLElBQ3pDO0FBQUEsRUFDRjtBQUNGO0FBRUEsa0NBQXlDLFFBQWtCO0FBQ3pELE1BQUksQ0FBQyxPQUFPLFNBQVMsb0JBQW9CO0FBQ3ZDLFFBQUkseUJBQ0YsaUVBQ0Y7QUFDQTtBQUFBLEVBQ0Y7QUFDQSxNQUNFLE9BQU8sUUFDTCw2UUFDRixHQUNBO0FBQ0EsUUFDRSxPQUFPLFFBQ0wsbUhBQ0YsR0FDQTtBQUNBLFVBQUksT0FBTyxRQUFRLHlDQUF5QyxHQUFHO0FBQzdELGNBQU0sU0FBUyxJQUFJLHlCQUFPLG1CQUFtQjtBQUM3QyxjQUFNLGVBQWUsQ0FBQztBQUN0QixtQkFBVyxRQUFRLElBQUksTUFBTSxpQkFBaUIsR0FBRztBQUMvQyxjQUFJO0FBQ0Ysa0JBQU0sY0FBYyxRQUFRLElBQUk7QUFBQSxVQUNsQyxTQUFTLEdBQVA7QUFDQSx5QkFBYSxLQUFLLEtBQUssSUFBSTtBQUFBLFVBQzdCO0FBQUEsUUFDRjtBQUNBLGVBQU8sV0FBVyxvQkFBb0I7QUFDdEMsWUFBSSxhQUFhLFFBQVE7QUFDdkIsY0FBSSx5QkFDRixpRkFDRjtBQUNBLHNDQUFLLEVBQUUsYUFBYSxDQUFDO0FBQUEsUUFDdkI7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjs7O0FDaEZBLHdCQU9PO0FBS0EsSUFBTSxpQkFBTixjQUE2QixnQ0FBc0I7QUFBQSxFQUd4RCxZQUFZLFFBQWtCO0FBQzVCLFVBQU0sR0FBRztBQXlCWCwwQkFBaUIsQ0FBQyxZQUFrQztBQUNsRCxZQUFNLEVBQUUsVUFBVTtBQUNsQixhQUFPLGVBQWUsSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQ3BELElBQUksU0FBUyxLQUFLLENBQ3BCO0FBQUEsSUFDRjtBQTdCRSxTQUFLLFNBQVM7QUFBQSxFQUNoQjtBQUFBLEVBRUEsVUFDRSxRQUNBLFFBQ0EsR0FDaUM7QUF4QnJDO0FBeUJJLFVBQU0sTUFBTSxPQUFPLFFBQVEsT0FBTyxJQUFJLEVBQUUsVUFBVSxHQUFHLE9BQU8sRUFBRTtBQUM5RCxVQUFNLFFBQVEsVUFBSSxNQUFNLFdBQVcsTUFBckIsbUJBQXlCO0FBQ3ZDLFFBQUksVUFBVSxRQUFXO0FBQ3ZCLGFBQU87QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLE9BQU87QUFBQSxVQUNMLElBQUksSUFBSSxZQUFZLEtBQUs7QUFBQSxVQUN6QixNQUFNLE9BQU87QUFBQSxRQUNmO0FBQUEsUUFDQSxPQUFPO0FBQUEsTUFDVDtBQUFBLElBQ0Y7QUFFQSxXQUFPO0FBQUEsRUFDVDtBQUFBLEVBU0EsaUJBQWlCLFlBQW9CLElBQXVCO0FBaEQ5RDtBQWlESSxPQUFHLFVBQVU7QUFBQSxNQUNYLE1BQU0sV0FBVyxRQUFRLE9BQU8sRUFBRTtBQUFBLE1BQ2xDLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxRQUNKLGNBQWMscUJBQWUsS0FBSyxDQUFDLE1BQU0sRUFBRSxVQUFVLFVBQVUsTUFBakQsbUJBQW9EO0FBQUEsUUFDbEUsdUJBQXVCO0FBQUEsTUFDekI7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNIO0FBQUEsRUFFQSxpQkFBaUIsWUFBMEI7QUFDekMsVUFBTSxFQUFFLFNBQVMsV0FBVztBQUM1QixRQUFJLENBQUM7QUFBUztBQUVkLFVBQU0sUUFBUSxlQUFlLEtBQUssQ0FBQyxNQUFNLEVBQUUsVUFBVSxVQUFVO0FBQy9ELFVBQU0sY0FBYyxHQUFHLGFBQWEsK0JBQVEsYUFBYSxHQUFHLElBQUksY0FBYztBQUc5RSxZQUFRLE9BQU8sYUFDYixhQUNBLEVBQUUsSUFBSSxHQUFHLE1BQU0sUUFBUSxNQUFNLEtBQUssR0FDbEMsUUFBUSxHQUNWO0FBQUEsRUFDRjtBQUNGOzs7QUN6RUEsd0JBT087QUFNQSxJQUFNLG9CQUFOLGNBQWdDLGdDQUFzQjtBQUFBLEVBRzNELFlBQVksUUFBa0I7QUFDNUIsVUFBTSxHQUFHO0FBMEJYLDBCQUFpQixDQUFDLFlBQWtDO0FBQ2xELFlBQU0sRUFBRSxVQUFVO0FBQ2xCLFlBQU0sRUFBRSxjQUFjLEtBQUssT0FBTztBQUNsQyxhQUFPLFVBQVUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxRQUFRLElBQUksU0FBUyxLQUFLLENBQUM7QUFBQSxJQUNqRTtBQTdCRSxTQUFLLFNBQVM7QUFBQSxFQUNoQjtBQUFBLEVBRUEsVUFDRSxRQUNBLFFBQ0EsR0FDaUM7QUF6QnJDO0FBMEJJLFVBQU0sT0FBTyxLQUFLLE9BQU8sU0FBUztBQUNsQyxVQUFNLE1BQU0sT0FBTyxRQUFRLE9BQU8sSUFBSSxFQUFFLFVBQVUsR0FBRyxPQUFPLEVBQUU7QUFFOUQsVUFBTSxRQUFRLElBQUksT0FBTyxNQUFNLFlBQVksSUFBSSxRQUFRO0FBQ3ZELFVBQU0sUUFBUSxZQUFNLEtBQUssR0FBRyxNQUFkLG1CQUFrQjtBQUVoQyxRQUFJLFVBQVU7QUFBVyxhQUFPO0FBQ2hDLFdBQU87QUFBQSxNQUNMLE9BQU87QUFBQSxRQUNMLElBQUksSUFBSSxZQUFZLElBQUk7QUFBQSxRQUN4QixNQUFNLE9BQU87QUFBQSxNQUNmO0FBQUEsTUFDQSxLQUFLO0FBQUEsTUFDTCxPQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFBQSxFQVFBLGlCQUFpQixZQUFvQixJQUF1QjtBQUMxRCxPQUFHLFVBQVU7QUFBQSxNQUNYLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxJQUNQLENBQUM7QUFBQSxFQUNIO0FBQUEsRUFFQSxpQkFBaUIsWUFBMEI7QUFDekMsVUFBTSxFQUFFLFNBQVMsV0FBVztBQUM1QixRQUFJLENBQUM7QUFBUztBQUVkLFVBQU0sT0FBTyxPQUFPLFNBQVM7QUFDN0IsVUFBTSxFQUFFLGVBQU8sS0FBSyxXQUFXO0FBRS9CLFVBQU0sY0FBYyxhQUFjLGNBQWEsR0FBRyxJQUFJLE9BQU8sU0FBUztBQUN0RSxXQUFPLGFBQ0wsYUFDQSxFQUFFLElBQUksT0FBTSxLQUFLLElBQUksS0FBSyxRQUFRLE1BQU0sT0FBTSxLQUFLLEdBQ25ELEdBQ0Y7QUFBQSxFQUNGO0FBQ0Y7OztBQ3RFQSx3QkFBMEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2N4QyxhQUlTLFNBQUEsTUFBQSxNQUFBOztBQUVYLGFBQWlELFFBQUEsS0FBQSxNQUFBOzs7eUNBSHBDLElBQWMsRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFmckI7UUFDRSxpQkFBYyxNQUFBO0FBQ2xCLGdCQUFZLEtBQ1Ysb0NBQ0EsV0FDQSxXQUFXO29CQUViLE9BQU8sWUFBWSxZQUFZLFFBQU8sR0FBQSxNQUFBOzs7O0FBV0gsZUFBTTs7Ozs7Ozs7Ozs7Ozs7O0FDcEI3Qyx3QkFBd0I7QUFJakIsZ0NBQ0wsUUFDQSxhQUNBO0FBQ0EsUUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBTSxxQkFBcUIsV0FBVyxnQkFBZ0IsV0FBVztBQUVqRSxNQUFJLDBCQUFRLGtCQUFrQixFQUMzQixRQUFRLHNCQUFzQixFQUM5QixRQUNDLGFBQ0UseUhBQ0YsQ0FDRixFQUNDLFVBQVUsQ0FBQyxXQUNWLE9BQ0csU0FBUyxTQUFTLGFBQWEsRUFDL0IsU0FBUyxPQUFPLFVBQVU7QUFDekIsYUFBUyxnQkFBZ0I7QUFDekIsVUFBTSxPQUFPLGFBQWE7QUFBQSxFQUM1QixDQUFDLENBQ0w7QUFFRixNQUFJLDBCQUFRLGtCQUFrQixFQUMzQixRQUFRLGtCQUFrQixFQUMxQixRQUNDLGFBQ0UsMkpBQ0YsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxVQUFTO0FBQ2pCLFVBQ0csU0FBUyxTQUFTLGlCQUFpQixFQUNuQyxTQUFTLE9BQU8sVUFBVTtBQUN6QixlQUFTLG9CQUFvQjtBQUM3QixZQUFNLE9BQU8sYUFBYTtBQUFBLElBQzVCLENBQUM7QUFBQSxFQUNMLENBQUM7QUFFSCxNQUFJLDBCQUFRLGtCQUFrQixFQUMzQixRQUFRLGdDQUFnQyxFQUN4QyxRQUFRLHdFQUE4RCxFQUN0RSxVQUFVLENBQUMsV0FDVixPQUNHLFNBQVMsU0FBUyxjQUFjLEVBQ2hDLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGFBQVMsaUJBQWlCO0FBQzFCLFVBQU0sT0FBTyxhQUFhO0FBQUEsRUFDNUIsQ0FBQyxDQUNMO0FBQ0o7OztBQ3JEQSx3QkFBd0I7QUFJakIsd0JBQ0wsUUFDQSw2QkFDQTtBQUNBLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU0sYUFBYSxXQUFXLGFBQWEsMkJBQTJCO0FBRXRFLE1BQUksMEJBQVEsVUFBVSxFQUNuQixRQUFRLHNCQUFzQixFQUM5QixRQUFRLDREQUE0RCxFQUNwRSxRQUFRLENBQUMsVUFBUztBQUNqQixVQUFLLFNBQVMsU0FBUyxRQUFRO0FBQy9CLFVBQUssUUFBUSxTQUFTLFlBQVk7QUFDaEMsZUFBUyxXQUFXLE1BQUssUUFBUTtBQUNqQyxZQUFNLE9BQU8sYUFBYTtBQUFBLElBQzVCO0FBQUEsRUFDRixDQUFDO0FBQ0w7OztBQ3JCQSx3QkFBMkM7QUFNcEMsNkJBQ0wsUUFDQSw2QkFDQTtBQUNBLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU0sRUFBRSxjQUFjO0FBQ3RCLFFBQU0sU0FBUyxVQUFVLFNBQVM7QUFDbEMsUUFBTSxZQUFZLFdBQVcsa0JBQWtCLDJCQUEyQjtBQUUxRSxNQUFJLDBCQUFRLFNBQVMsRUFDbEIsUUFBUSw2QkFBNkIsRUFDckMsUUFDQyxhQUNFLDRUQUNGLENBQ0YsRUFDQyxZQUFZLENBQUMsT0FBMEI7QUFDdEMsV0FBTyxRQUFRLENBQUMsVUFBVSxHQUFHLFVBQVUsT0FBTyxLQUFLLENBQUM7QUFDcEQsT0FBRyxVQUFVLElBQUksRUFBRSxFQUNoQixTQUFTLFNBQVMsaUJBQWlCLEVBQ25DLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGVBQVMsb0JBQW9CO0FBQzdCLFlBQU0sT0FBTyxhQUFhO0FBQzFCLFlBQU0sYUFBYSxNQUFNO0FBQUEsSUFDM0IsQ0FBQztBQUFBLEVBQ0wsQ0FBQztBQUNMOzs7QUNoQ0Esd0JBQTJDO0FBTXBDLDZCQUNMLFFBQ0EsNkJBQ0E7QUFDQSxRQUFNLEVBQUUsYUFBYTtBQUNyQixRQUFNLEVBQUUsY0FBYztBQUN0QixRQUFNLFNBQVMsVUFBVSxTQUFTO0FBQ2xDLFFBQU0sZUFBZSxFQUFFLElBQUksR0FBRztBQUM5QixTQUFPLFFBQVEsQ0FBQyxVQUFXLGFBQWEsU0FBUyxLQUFNO0FBRXZELFFBQU0sa0JBQWtCLFdBQVcsY0FBYywyQkFBMkI7QUFFNUUsTUFBSSwwQkFBUSxlQUFlLEVBQ3hCLFFBQVEseUJBQXlCLEVBQ2pDLFFBQ0MsdUhBQ0YsRUFDQyxVQUFVLENBQUMsV0FBVztBQUNyQixXQUFPLFNBQVMsU0FBUyxZQUFZLEVBQUUsU0FBUyxPQUFPLFVBQVU7QUFDL0QsZUFBUyxlQUFlO0FBQ3hCLFlBQU0sT0FBTyxhQUFhO0FBQzFCLFlBQU0sYUFBYSxNQUFNO0FBQUEsSUFDM0IsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUVILE1BQUksMEJBQVEsZUFBZSxFQUN4QixRQUFRLG1CQUFtQixFQUMzQixRQUNDLGFBQ0UsNFpBQ0YsQ0FDRixFQUNDLFFBQVEsQ0FBQyxVQUFTO0FBQ2pCLFVBQUssU0FBUyxTQUFTLGNBQWM7QUFDckMsVUFBSyxRQUFRLFNBQVMsWUFBWTtBQUNoQyxlQUFTLGlCQUFpQixNQUFLLFNBQVM7QUFDeEMsWUFBTSxPQUFPLGFBQWE7QUFDMUIsWUFBTSxhQUFhLE1BQU07QUFBQSxJQUMzQjtBQUFBLEVBQ0YsQ0FBQztBQUVILE1BQUksMEJBQVEsZUFBZSxFQUN4QixRQUFRLGlCQUFpQixFQUN6QixRQUNDLGFBQ0UsaUlBQ0YsQ0FDRixFQUNDLFlBQVksQ0FBQyxPQUEwQjtBQUN0QyxPQUFHLFdBQVcsWUFBWSxFQUN2QixTQUFTLFNBQVMsYUFBYSxFQUMvQixTQUFTLE9BQU8sVUFBVTtBQUN6QixlQUFTLGdCQUFnQjtBQUN6QixZQUFNLE9BQU8sYUFBYTtBQUMxQixZQUFNLGFBQWEsTUFBTTtBQUFBLElBQzNCLENBQUM7QUFBQSxFQUNMLENBQUM7QUFnQ0w7OztBQzlGQSx3QkFBZ0I7QUFDaEIsd0JBQXdCO0FBS2pCLCtCQUNMLFFBQ0EsYUFDQTtBQUNBLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU0sZUFBZSxRQUFRLGFBQWEsV0FBVztBQUVyRCxNQUFJLDBCQUFRLFlBQVksRUFDckIsUUFBUSxZQUFZLEVBQ3BCLFFBQ0MsYUFDRSw2UEFDRixDQUNGLEVBQ0MsWUFBWSxDQUFDLE9BQU87QUFDbkIsV0FBTyxLQUFLLDBCQUFJLE1BQU0sRUFBRSxRQUFRLENBQUMsUUFBUSxHQUFHLFVBQVUsS0FBSyxHQUFHLENBQUM7QUFDL0QsT0FBRyxTQUFTLFNBQVMsU0FBUyxFQUFFLFNBQVMsT0FBTyxVQUFzQjtBQUNwRSxnQ0FBSSxTQUFTLEtBQUs7QUFDbEIsZUFBUyxZQUFZO0FBQ3JCLFlBQU0sT0FBTyxhQUFhO0FBQUEsSUFDNUIsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUVILGVBQWEsU0FBUyxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLE9BQU87QUFDeEUsT0FBRyxpQkFBaUIsU0FBUyxNQUFNLFFBQVEsSUFBSSxRQUFRLENBQUM7QUFBQSxFQUMxRCxDQUFDO0FBQ0g7OztBQ2hDQSx3QkFBbUQ7QUFPNUMsNEJBQ0wsUUFDQSw2QkFDQTtBQUNBLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU0sRUFBRSxjQUFjO0FBQ3RCLFFBQU0sU0FBUyxVQUFVLFNBQVM7QUFDbEMsUUFBTSxpQkFBaUIsV0FDckIsaUJBQ0EsMkJBQ0Y7QUFFQSxNQUFJLDBCQUFRLGNBQWMsRUFDdkIsUUFBUSw0QkFBNEIsRUFDcEMsUUFDQyxhQUNFLDRTQUNGLENBQ0YsRUFDQyxVQUFVLENBQUMsV0FDVixPQUFPLFNBQVMsU0FBUyxlQUFlLEVBQUUsU0FBUyxPQUFPLFVBQVU7QUFDbEUsYUFBUyxrQkFBa0I7QUFDM0IsVUFBTSxPQUFPLGFBQWE7QUFBQSxFQUM1QixDQUFDLENBQ0g7QUFDRixNQUFJLDBCQUFRLGNBQWMsRUFDdkIsUUFBUSxXQUFXLEVBQ25CLFFBQ0MsYUFDRSw2RUFDRixDQUNGLEVBQ0MsUUFBUSxDQUFDLFVBQVM7QUFDakIsVUFDRyxlQUFlLFdBQVcsRUFDMUIsU0FBUyxTQUFTLG9CQUFvQjtBQUV6QyxVQUFLLFFBQVEsU0FBUyxZQUFZO0FBQ2hDLFlBQU0sUUFBUSxNQUFLLFNBQVM7QUFDNUIsVUFBSTtBQUFPLGlCQUFTLHVCQUF1QjtBQUFBLFdBQ3RDO0FBQ0gsWUFBSSx5QkFBTyw4QkFBOEI7QUFDekMsaUJBQVMsdUJBQXVCLGlCQUFpQjtBQUFBLE1BQ25EO0FBQ0EsWUFBTSxPQUFPLGFBQWE7QUFBQSxJQUM1QjtBQUFBLEVBQ0YsQ0FBQztBQUVILE1BQUksMEJBQVEsY0FBYyxFQUN2QixRQUFRLHlCQUF5QixFQUNqQyxRQUNDLGFBQ0UsdUpBQ0YsQ0FDRixFQUNDLFVBQVUsQ0FBQyxXQUNWLE9BQU8sU0FBUyxTQUFTLGdCQUFnQixFQUFFLFNBQVMsT0FBTyxVQUFVO0FBQ25FLGFBQVMsbUJBQW1CO0FBQzVCLFVBQU0sT0FBTyxhQUFhO0FBQzFCLFVBQU0sT0FBTyxrQkFBa0IsV0FBVyxFQUFFLEtBQUs7QUFBQSxFQUNuRCxDQUFDLENBQ0g7QUFFRixNQUFJLDBCQUFRLGNBQWMsRUFDdkIsUUFBUSxvQkFBb0IsRUFDNUIsUUFBUSx1REFBdUQsRUFDL0QsWUFBWSxDQUFDLE9BQTBCO0FBQ3RDLFdBQU8sUUFBUSxDQUFDLFVBQVUsR0FBRyxVQUFVLE9BQU8sS0FBSyxDQUFDO0FBQ3BELE9BQUcsU0FBUyxTQUFTLGdCQUFnQjtBQUVyQyxPQUFHLFNBQVMsT0FBTyxVQUFVO0FBQzNCLGVBQVMsbUJBQW1CO0FBQzVCLFlBQU0sT0FBTyxhQUFhO0FBQzFCLFlBQU0sYUFBYSxNQUFNO0FBQUEsSUFDM0IsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUNMOzs7QUNuRkEsd0JBQWdDO0FBTXpCLDRCQUE0QixRQUFrQixhQUEwQjtBQUM3RSxRQUFNLEVBQUUsYUFBYTtBQUNyQixRQUFNLGlCQUFpQixRQUFRLG1CQUFtQixXQUFXO0FBRTdELE1BQUksMEJBQVEsY0FBYyxFQUN2QixRQUFRLDhCQUE4QixFQUN0QyxRQUFRLGFBQ1Asa0lBQWtJLENBQ3BJLEVBQ0MsVUFBVSxDQUFDLFdBQ1YsT0FBTyxTQUFTLFNBQVMsbUJBQW1CLEVBQUUsU0FBUyxPQUFPLFVBQVU7QUFDdEUsYUFBUyxzQkFBc0I7QUFDL0IsVUFBTSxPQUFPLGFBQWE7QUFBQSxFQUM1QixDQUFDLENBQ0g7QUFFRixNQUFJLDBCQUFRLGNBQWMsRUFDdkIsUUFBUSw0QkFBNEIsRUFDcEMsVUFBVSxDQUFDLFdBQ1YsT0FBTyxTQUFTLFNBQVMsaUJBQWlCLEVBQUUsU0FBUyxPQUFPLFVBQVU7QUFDcEUsYUFBUyxvQkFBb0I7QUFDN0IsVUFBTSxPQUFPLGFBQWE7QUFBQSxFQUM1QixDQUFDLENBQ0g7QUFFRixNQUFJLDBCQUFRLGNBQWMsRUFDdkIsUUFBUSwyQkFBMkIsRUFDbkMsUUFDQyxnRkFDRixFQUNDLFVBQVUsQ0FBQyxXQUNWLE9BQU8sU0FBUyxTQUFTLGlCQUFpQixFQUFFLFNBQVMsT0FBTyxVQUFVO0FBQ3BFLGFBQVMsb0JBQW9CO0FBQzdCLFVBQU0sT0FBTyxhQUFhO0FBQUEsRUFDNUIsQ0FBQyxDQUNIO0FBRUYsTUFBSSwwQkFBUSxjQUFjLEVBQ3ZCLFFBQVEsY0FBYyxFQUN0QixRQUNDLGFBQ0UsdVJBQ0YsQ0FDRixFQUNDLFFBQVEsQ0FBQyxVQUFTO0FBQ2pCLFVBQUssU0FBUyxTQUFTLGNBQWMsS0FBSyxJQUFJLENBQUM7QUFDL0MsVUFBSyxRQUFRLFNBQVMsWUFBWTtBQUNoQyxlQUFTLGdCQUFnQixhQUFhLE1BQUssU0FBUyxDQUFDO0FBQ3JELFlBQU0sT0FBTyxhQUFhO0FBQUEsSUFDNUI7QUFBQSxFQUNGLENBQUM7QUFFSCxNQUFJLDBCQUFRLGNBQWMsRUFDdkIsUUFBUSx1QkFBdUIsRUFDL0IsUUFDQyxxR0FDRixFQUNDLFVBQVUsQ0FBQyxXQUNWLE9BQU8sU0FBUyxDQUFDLFNBQVMsY0FBYyxFQUFFLFNBQVMsT0FBTyxVQUFVO0FBQ2xFLGFBQVMsaUJBQWlCLENBQUM7QUFDM0IsVUFBTSxPQUFPLGFBQWE7QUFDMUIsVUFBTSxhQUFhLE1BQU07QUFBQSxFQUMzQixDQUFDLENBQ0g7QUFFRixNQUFJLDBCQUFRLGNBQWMsRUFDdkIsUUFBUSw4Q0FBOEMsRUFDdEQsUUFDQyxpS0FDRixFQUNDLFVBQVUsQ0FBQyxXQUNWLE9BQU8sU0FBUyxTQUFTLGNBQWMsRUFBRSxTQUFTLE9BQU8sVUFBVTtBQUNqRSxhQUFTLGlCQUFpQjtBQUMxQixVQUFNLE9BQU8sYUFBYTtBQUMxQixVQUFNLGFBQWEsTUFBTTtBQUFBLEVBQzNCLENBQUMsQ0FDSDtBQUVGLE1BQUksMEJBQVEsY0FBYyxFQUN2QixRQUFRLHVEQUF1RCxFQUMvRCxRQUNDLGFBQ0UseU9BQ0YsQ0FDRixFQUNDLFVBQVUsQ0FBQyxXQUNWLE9BQ0csU0FBUyxTQUFTLDJCQUEyQixFQUM3QyxTQUFTLE9BQU8sVUFBVTtBQUN6QixhQUFTLDhCQUE4QjtBQUN2QyxVQUFNLE9BQU8sYUFBYTtBQUFBLEVBQzVCLENBQUMsQ0FDTDtBQUdGLE1BQUksMEJBQVEsY0FBYyxFQUN2QixRQUFRLHdCQUF3QixFQUNoQyxRQUNDLGFBQ0UsK1FBQ0YsQ0FDRixFQUNDLFVBQVUsQ0FBQyxXQUNWLE9BQU8sU0FBUyxTQUFTLGNBQWMsRUFBRSxTQUFTLE9BQU8sVUFBVTtBQUNqRSxhQUFTLGlCQUFpQjtBQUMxQixVQUFNLE9BQU8sYUFBYTtBQUFBLEVBQzVCLENBQUMsQ0FDSDtBQUNGLE1BQUksMEJBQVEsY0FBYyxFQUN2QixRQUFRLDJCQUEyQixFQUNuQyxRQUNDLGFBQ0UsaUlBQ0YsQ0FDRixFQUNDLFVBQVUsQ0FBQyxXQUNWLE9BQ0csU0FBUyxTQUFTLHVCQUF1QixFQUN6QyxTQUFTLE9BQU8sVUFBVTtBQUN6QixhQUFTLDBCQUEwQjtBQUNuQyxVQUFNLE9BQU8sYUFBYTtBQUFBLEVBQzVCLENBQUMsQ0FDTDtBQUNGLE1BQUksMEJBQVEsY0FBYyxFQUN2QixRQUFRLDRCQUE0QixFQUNwQyxRQUNDLGFBQ0UsZ0ZBQ0YsQ0FDRixFQUNDLFFBQVEsQ0FBQyxVQUNSLE1BQUssU0FBUyxTQUFTLG1CQUFtQixFQUFFLFNBQVMsT0FBTyxVQUFVO0FBQ3BFLGFBQVMsc0JBQXNCO0FBQy9CLFVBQU0sT0FBTyxhQUFhO0FBQUEsRUFDNUIsQ0FBQyxDQUNIO0FBRUYsTUFBSSxJQUFJLFFBQVEsUUFBUSxhQUFhLFFBQVc7QUFDOUMsUUFBSSwwQkFBUSxjQUFjLEVBQ3ZCLFFBQVEsb0JBQW9CLEVBQzVCLFFBQ0Msc0pBQ0YsRUFDQyxRQUFRLENBQUMsVUFDUixNQUNHLGVBQWUsU0FBUyxFQUN4QixTQUFVLFVBQVMsYUFBYSxLQUFNLFNBQVMsQ0FBQyxFQUNoRCxTQUFTLE9BQU8sVUFBVTtBQUN6QixZQUFNLE1BQU0sT0FBTyxLQUFLO0FBRXhCLFVBQUksTUFBTSxHQUFHO0FBQ1gsaUJBQVMsYUFBYSxNQUFNO0FBQzVCLGNBQU0sT0FBTyxhQUFhO0FBQUEsTUFDNUIsT0FBTztBQUNMLFlBQUkseUJBQU8sNENBQTRDO0FBQUEsTUFDekQ7QUFBQSxJQUNGLENBQUMsQ0FDTDtBQUFBLEVBQ0o7QUFDRjs7O0FDcktBLHdCQUEyQztBQU9wQyxrQ0FDTCxRQUNBLDZCQUNBO0FBQ0EsUUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBTSx1QkFBdUIsV0FDM0IsbUJBQ0EsMkJBQ0Y7QUFFQSxNQUFJLDBCQUFRLG9CQUFvQixFQUM3QixRQUFRLG1CQUFtQixFQUMzQixRQUNDLGFBQ0UsZ1VBQ0YsQ0FDRixFQUNDLFFBQVEsQ0FBQyxVQUFTO0FBQ2pCLFVBQ0csZUFBZSxtQkFBbUIsRUFDbEMsU0FBUyxTQUFTLGVBQWUsS0FBSyxJQUFJLENBQUM7QUFFOUMsVUFBSyxRQUFRLFNBQVMsWUFBWTtBQUNoQyxZQUFNLFNBQVMsYUFBYSxNQUFLLFNBQVMsQ0FBQztBQUUzQyxlQUFTLGlCQUFpQjtBQUMxQixZQUFNLE9BQU8sYUFBYTtBQUFBLElBQzVCO0FBQUEsRUFDRixDQUFDO0FBRUgsTUFBSSwwQkFBUSxvQkFBb0IsRUFDN0IsUUFBUSw2Q0FBNkMsRUFDckQsUUFBUSw2SEFBbUgsRUFDM0gsVUFBVSxDQUFDLFdBQVc7QUFDckIsV0FDRyxTQUFTLFNBQVMscUJBQXFCLEVBQ3ZDLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGVBQVMsd0JBQXdCO0FBQ2pDLFlBQU0sT0FBTyxhQUFhO0FBQzFCLFlBQU0sYUFBYSxNQUFNO0FBQUEsSUFDM0IsQ0FBQztBQUFBLEVBQ0wsQ0FBQztBQUVILE1BQUksMEJBQVEsb0JBQW9CLEVBQzdCLFFBQVEsOEJBQThCLEVBQ3RDLFFBQ0MsYUFDRSwwTkFDRixDQUNGLEVBQ0MsWUFBWSxDQUFDLE9BQTBCO0FBQ3RDLFVBQU0sV0FBVyxVQUFVLFNBQVMsV0FBVyxJQUFJO0FBRW5ELFVBQU0sVUFBVSxDQUFDO0FBQ2pCLGFBQVMsUUFDUCxDQUFDLFVBQVcsUUFBUSxTQUFTLEtBQy9CO0FBQ0EsT0FBRyxXQUFXLE9BQU8sRUFDbEIsU0FBUyxTQUFTLGFBQWEsU0FBUyxFQUFFLEVBQzFDLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGVBQVMsWUFBWTtBQUNyQixZQUFNLE9BQU8sYUFBYTtBQUMxQixZQUFNLGFBQWEsTUFBTTtBQUFBLElBQzNCLENBQUM7QUFBQSxFQUNMLENBQUM7QUFDTDs7O3dCQ3ZFeUI7Ozs7Ozs7Ozs7OztlRWlCYixJQUFLLEVBQUE7OztBQUFiLGFBQXFCLFFBQUEsU0FBQSxNQUFBOzs7OztvQkFBYixLQUFLLEVBQUE7Ozs7Ozs7Ozs7OztpQkFEVixJQUFLLE1BQUEsaUJBQUEsR0FBQTs7Ozs7Ozs7Ozs7Ozs7OztBQURaLGFBS0ssUUFBQSxLQUFBLE1BQUE7Ozs7Ozs7Ozs7VUFKRSxLQUFLLElBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUFoQkMsUUFBUSxTQUFJO1FBQ1osWUFBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0VWLGFBQXVhLFFBQUEsT0FBQSxNQUFBOzs7Ozs7Ozs7Ozs4REFEclksSUFBTyxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7bUlBQVAsS0FBTyxFQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQ3pDLGFBQTJQLFFBQUEsT0FBQSxNQUFBOzs7Ozs7Ozs7Ozs4REFEek4sSUFBTyxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7bUlBQVAsS0FBTyxFQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQ3pDLGFBQWlnQixRQUFBLE9BQUEsTUFBQTs7Ozs7Ozs7Ozs7OERBRC9kLElBQU8sRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O21JQUFQLEtBQU8sRUFBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQko2R3RDLGlCQUFpQixJQUFHLE9BQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQ0FEWSxJQUFHLEdBQUE7Ozs2Q0FNOUIsSUFBRyxHQUFBO3dDQUNGLGdCQUFJLElBQUMsSUFBRyxTQUFSLG1CQUFXLEtBQUssVUFBaEIsWUFBeUI7OztBQVJwQyxhQTZCTSxRQUFBLEtBQUEsTUFBQTtBQTVCSixhQUVRLEtBQUEsS0FBQTs7O0FBQ1IsYUF3QkUsS0FBQSxLQUFBOzs7Ozs7Ozs7a0VBcEJPLGdCQUFJLElBQUMsSUFBRyxTQUFSLG1CQUFXLEtBQUssVUFBaEIsWUFBeUIsT0FBRSxNQUFBLFVBQUEsbUJBQUE7Ozs7Ozs7Ozs7Ozs7OztpQkE3RHJDLFdBQVcsSUFBRyxJQUFBLEVBQ1osSUFBRyxNQUFBLEVBQ0gsS0FBSyxHQUFHLElBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBa0ROOzttQ0FBTCxRQUFJLEtBQUEsR0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXREUixhQXNGVSxRQUFBLFVBQUEsTUFBQTtBQXJGUixhQW9EVSxVQUFBLE9BQUE7OztBQS9DUixhQThDTyxTQUFBLElBQUE7QUE3Q0wsYUFRUyxNQUFBLE9BQUE7O0FBQ1QsYUFRUyxNQUFBLE9BQUE7O0FBQ1QsYUEwQlMsTUFBQSxPQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztnREFqRFYsV0FBVyxJQUFHLElBQUEsRUFDWixJQUFHLE1BQUEsRUFDSCxLQUFLLEdBQUcsSUFBQTtBQUFBLGlCQUFBLElBQUEsUUFBQTs7dUJBa0ROOztxQ0FBTCxRQUFJLEtBQUEsR0FBQTs7Ozs7Ozs7Ozs7OzswQ0FBSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CQXZEQyxJQUFTOztpQ0FBZCxRQUFJLEtBQUEsR0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWpDUixhQTBITSxRQUFBLE1BQUEsTUFBQTtBQXpISixhQThCTSxNQUFBLElBQUE7QUE3QkosYUFPUyxNQUFBLE9BQUE7QUFIUCxhQUVNLFNBQUEsSUFBQTs7O0FBRVIsYUFZUyxNQUFBLE9BQUE7QUFIUCxhQUVNLFNBQUEsSUFBQTs7O0FBRVIsYUFPUyxNQUFBLE9BQUE7QUFIUCxhQUVNLFNBQUEsSUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCQUlILEtBQVM7O21DQUFkLFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7O3dDQUFKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthQUlZLGVBQVMsSUFBUzs7TUExRGpCLFlBQUEsUUFBQSxLQUFBLGFBQUEsU0FBQSxTQUFBLFlBQUEsR0FBQSxXQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UURXSixXQUFnQjtVQUNuQixhQUFhO01BRWpCLFlBQVMsQ0FBQSxHQUFPLE9BQU8sU0FBUyxTQUFTO21CQUN2QixZQUFxQjs7c0JBQ3pDLE9BQU8sU0FBUyxZQUFZLFlBQVMsTUFBQTtZQUMvQixPQUFPLGFBQVk7OztvRENRQSxZQUFTLENBQUEsR0FBTyxXQUFXLGNBQWEsQ0FBQSxDQUFBOztRQVN6RCxPQUFPLFFBQVEsaURBQWlELEdBQUE7c0JBQ2xFLFlBQVMsQ0FBQSxDQUFBO1lBQ0gsUUFBTyxTQUFTOzs7b0NBVU4seUJBQU8sVUFBVSxJQUFJLFNBQVMsRUFBRSxLQUFLLE1BQU0sQ0FBQTtzQkFXNUMsUUFBRzs7QUFBSyw0QkFBSyxTQUFMLG1CQUFXLEtBQUssVUFBaEIsWUFBeUI7OztvQkFRNUMsWUFBWSxVQUFVLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQTtVQUNuQyxRQUFPLFNBQVM7OztvQkFRdEIsWUFBWSxVQUFVLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQTtVQUNuQyxRQUFPLFNBQVM7OztVQVFoQixVQUFVLFVBQVUsT0FBTyxHQUFHLENBQUMsRUFBRTtBQUN2QyxZQUFRLEdBQUcsUUFBUyxhQUFPO1lBQ25CLFNBQVEsU0FBUyxxQkFBcUIsUUFBUSxPQUFPO1VBQ3ZELFNBQUs7QUFBTyxpQkFBUyxxQkFBcUIsT0FBTyxRQUFPLENBQUM7O0FBRy9ELGVBQVcsUUFBUyxTQUFHO0FBQ3JCLGNBQVEsS0FBSyxRQUFTLFdBQUs7Y0FDbkIsU0FBUyxTQUFTLHVCQUF1QixRQUFRLEtBQUs7WUFDeEQsU0FBTTtBQUNSLG1CQUFTLHVCQUF1QixPQUFPLFFBQVEsQ0FBQztjQUU1QyxTQUFTLFNBQVMsdUJBQXVCLFFBQVEsS0FBSztZQUN4RCxTQUFNO0FBQ1IsbUJBQVMsdUJBQXVCLE9BQU8sUUFBUSxDQUFDOzs7O1VBS2hELFFBQU8sU0FBUzs7d0NBaUJOLE1BQUM7WUFDVCxVQUFVLEVBQUU7VUFDZCxTQUFTLGFBQWEsS0FBSztvQkFDakMsVUFBVSxHQUFHLE9BQU8sUUFBTSxTQUFBO1VBQ3BCLFFBQU8sU0FBUztBQUV0QixXQUFPLFFBQVMsV0FBSztVQUVqQixRQUFRLFFBQUksQ0FDWCxTQUFTLHFCQUFxQixTQUFTLEtBQUs7QUFFN0MsaUJBQVMscUJBQXFCLEtBQUssS0FBSztXQUNyQyxTQUFTLHVCQUF1QixTQUFTLEtBQUs7QUFDakQsaUJBQVMsdUJBQXVCLEtBQUssS0FBSztXQUN2QyxTQUFTLHVCQUF1QixTQUFTLEtBQUs7QUFDakQsaUJBQVMsdUJBQXVCLEtBQUssS0FBSzs7VUFFeEMsT0FBTyxhQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUtwSWhDLDhCQUNMLFFBQ0EsYUFDQTtBQUNBLFFBQU0sZUFBZSxRQUFRLGVBQWUsV0FBVztBQUV2RCxlQUFhLFNBQVMsS0FBSztBQUFBLElBQ3pCLE1BQU07QUFBQSxFQUNSLENBQUM7QUFDRCxlQUFhLFNBQVMsS0FBSztBQUFBLElBQ3pCLE1BQU07QUFBQSxFQUNSLENBQUM7QUFFRCxNQUFJLHdCQUFnQjtBQUFBLElBQ2xCLFFBQVE7QUFBQSxJQUNSLE9BQU8sRUFBRSxPQUFPO0FBQUEsRUFDbEIsQ0FBQztBQUNIOzs7d0JDcEJ1Qjs7Ozs7Ozs7Ozs7Ozs7O2lCQzhDZCxJQUFNLE1BQUE7Ozs7Ozs7Ozs7Ozs7OzBDQUpFLElBQU07Ozs7O0FBSm5CLGFBVU0sUUFBQSxLQUFBLE1BQUE7QUFUSixhQVFRLEtBQUEsS0FBQTtBQVBOLGFBS0UsT0FBQSxLQUFBO3VCQUZZLElBQVEsR0FBQSxRQUFBLE1BQUEsT0FBQTs7Ozs7Ozs7Ozs7OztrRUFEYixLQUFNLE1BQUE7Ozs7O3lCQUNELEtBQVEsR0FBQSxRQUFBLE1BQUEsT0FBQTs7Z0RBR3JCLEtBQU0sTUFBQTtBQUFBLGlCQUFBLElBQUEsUUFBQTs7Ozs7Ozs7Ozs7Ozs7O2lCQWRILElBQU0sS0FBRyxTQUFTOzs7Ozs7bUJBS3JCLElBQU87O2lDQUFaLFFBQUksS0FBQSxHQUFBOzs7Ozs7O2dCQU5MLFNBQ1E7Ozs7Ozs7Ozs7QUFSWCxhQVVNLFFBQUEsTUFBQSxNQUFBO0FBVEosYUFRUyxNQUFBLE1BQUE7Ozs7QUFHWCxhQWNNLFFBQUEsTUFBQSxNQUFBOzs7Ozs7Ozs7O2dEQWxCTSxLQUFNLEtBQUcsU0FBUztBQUFLLGlCQUFBLElBQUEsUUFBQTs7cUJBSzFCLEtBQU87O21DQUFaLFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7O3dDQUFKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQXRDYSxZQUFBLFFBQUEsS0FBQSxhQUFBLFNBQUEsU0FBQSxZQUFBLEdBQUEsV0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FES0osV0FBZ0I7UUFDaEIsZ0JBQW1CO1FBQ25CLFlBQWlCO1VBRXBCLGFBQWE7TUFFakIsV0FBVyxTQUFTO2tCQUlMOztVQUNiLFNBQVMsaUJBQWlCO0FBQVMsZUFDOUIsNEJBQUssY0FBYywyQkFBMkI7QUFFdkQsZUFBUyxlQUFlO1lBQ2xCLE9BQU8sYUFBWTtZQUNuQixhQUFhLE1BQU07Ozs7O1FDT25CO0FBQU0sbUJBQUEsR0FBRSxXQUFRLENBQUEsQ0FBQTs7QUFBQSxtQkFBQSxHQUNmLFdBQVcsT0FBTztVQUNqQixLQUFJOzs7QUFjTSxlQUFRLHdCQUFBLGlCQUFBLElBQUEsS0FBQSxTQUFBLEtBQUEsT0FBQTs7OzJDQUNTLEtBQUk7Ozs7Ozs7Ozs7O0FEaEN6QztBQUFDLHFCQUFBLEdBQUUsU0FBUyxTQUFTLFdBQVcsSUFBSSxRQUFRLElBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUVSM0MsK0JBQ0wsUUFDQSxhQUNBO0FBQ0EsUUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBTSxtQkFBbUIsV0FBVywwQkFBMEIsV0FBVztBQUV6RSxtQkFBaUIsVUFBVSxFQUFFLEtBQUsscUJBQXFCLE1BQU0sZ0NBQWdDLENBQUM7QUFFOUYsTUFBSSxtQkFBVztBQUFBLElBQ2IsUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLE1BQ0w7QUFBQSxNQUNBLGFBQWE7QUFBQSxNQUNiLFNBQVMsVUFBVSxTQUFTLFNBQVM7QUFBQSxJQUN2QztBQUFBLEVBQ0YsQ0FBQztBQUNIOzs7QUN0QkEsd0JBQWdDO0FBT3pCLCtCQUNMLFFBQ0EsYUFDQTtBQUNBLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU0sZ0JBQWdCLFdBQVcsZUFBZSxXQUFXO0FBRTNELE1BQUksMEJBQVEsYUFBYSxFQUN0QixRQUFRLDZDQUE2QyxFQUNyRCxRQUFRLGFBQ1AsdVBBQWtQLENBQ3BQLEVBQ0MsVUFBVSxDQUFDLFdBQ1YsT0FBTyxTQUFTLFNBQVMsY0FBYyxFQUFFLFNBQVMsT0FBTyxVQUFVO0FBQ2pFLGFBQVMsaUJBQWlCO0FBQzFCLFVBQU0sT0FBTyxhQUFhO0FBQzFCLFVBQU0sT0FBTyxrQkFBa0IsV0FBVyxFQUFFLEtBQUs7QUFBQSxFQUNuRCxDQUFDLENBQ0g7QUFFRixNQUFJLDBCQUFRLGFBQWEsRUFDdEIsUUFBUSx3QkFBd0IsRUFDaEMsUUFDQyxhQUNFLHlDQUNGLENBQ0YsRUFDQyxVQUFVLENBQUMsV0FDVixPQUFPLFNBQVMsU0FBUyxnQkFBZ0IsRUFBRSxTQUFTLE9BQU8sVUFBVTtBQUNuRSxhQUFTLG1CQUFtQjtBQUM1QixVQUFNLE9BQU8sYUFBYTtBQUMxQixVQUFNLE9BQU8sa0JBQWtCLFdBQVcsRUFBRSxLQUFLO0FBQUEsRUFDbkQsQ0FBQyxDQUNIO0FBRUYsTUFBSSwwQkFBUSxhQUFhLEVBQ3RCLFFBQVEsa0JBQWtCLEVBQzFCLFFBQ0MsYUFDRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsNktBU0YsQ0FDRixFQUNDLFFBQVEsQ0FBQyxVQUFTO0FBQ2pCLFVBQUssU0FBUyxTQUFTLHNCQUFzQixLQUFLLEVBQUUsQ0FBQztBQUNyRCxVQUFLLFFBQVEsU0FBUyxZQUFZO0FBQ2hDLFlBQU0sUUFBUSxNQUFLLFNBQVM7QUFDNUIsWUFBTSxTQUFTLE1BQU0sTUFBTSxFQUFFO0FBQzdCLFVBQ0UsTUFBTSxVQUFVLEtBQ2hCLE9BQU8sTUFBTSxDQUFDLFdBQVUsQ0FBQyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsRUFBRSxTQUFTLE1BQUssQ0FBQyxHQUNqRTtBQUNBLGlCQUFTLHdCQUF3QixPQUFPLElBQUksQ0FBQyxVQUMzQyxPQUFPLFNBQVMsS0FBSyxDQUN2QjtBQUNBLGNBQU0sT0FBTyxhQUFhO0FBQzFCLGNBQU0sT0FBTyxrQkFBa0IsV0FBVyxFQUFFLEtBQUs7QUFBQSxNQUNuRCxPQUFPO0FBQ0wsWUFBSSx5QkFDRixrRkFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBRUgsTUFBSSwwQkFBUSxhQUFhLEVBQ3RCLFFBQVEsNkJBQTZCLEVBQ3JDLFFBQ0Msd0lBQ0YsRUFDQyxVQUFVLENBQUMsV0FDVixPQUFPLFNBQVMsU0FBUyxlQUFlLEVBQUUsU0FBUyxPQUFPLFVBQVU7QUFDbEUsYUFBUyxrQkFBa0I7QUFDM0IsVUFBTSxPQUFPLGFBQWE7QUFDMUIsVUFBTSxPQUFPLGtCQUFrQixXQUFXLEVBQUUsS0FBSztBQUFBLEVBQ25ELENBQUMsQ0FDSDtBQUdGLE1BQUksMEJBQVEsYUFBYSxFQUN0QixRQUFRLDBDQUEwQyxFQUNsRCxRQUNDLHNGQUNGLEVBQ0MsVUFBVSxDQUFDLFdBQ1YsT0FBTyxTQUFTLFNBQVMsWUFBWSxFQUFFLFNBQVMsT0FBTyxVQUFVO0FBQy9ELGFBQVMsZUFBZTtBQUN4QixVQUFNLE9BQU8sYUFBYTtBQUMxQixVQUFNLE9BQU8sa0JBQWtCLFdBQVcsRUFBRSxLQUFLO0FBQUEsRUFDbkQsQ0FBQyxDQUNIO0FBRUYsTUFBSSwwQkFBUSxhQUFhLEVBQ3RCLFFBQVEsbUNBQW1DLEVBQzNDLFFBQ0MscU1BQ0YsRUFDQyxVQUFVLENBQUMsV0FDVixPQUFPLFNBQVMsU0FBUyxtQkFBbUIsRUFBRSxTQUFTLE9BQU8sVUFBVTtBQUN0RSxhQUFTLHNCQUFzQjtBQUMvQixVQUFNLE9BQU8sYUFBYTtBQUMxQixVQUFNLE9BQU8sa0JBQWtCLFdBQVcsRUFBRSxLQUFLO0FBQUEsRUFDbkQsQ0FBQyxDQUNIO0FBRUYsTUFBSSwwQkFBUSxhQUFhLEVBQ3RCLFFBQVEsd0JBQXdCLEVBQ2hDLFFBQVEsa0RBQWtELEVBQzFELFVBQVUsQ0FBQyxXQUNWLE9BQU8sU0FBUyxTQUFTLG9CQUFvQixFQUFFLFNBQVMsT0FBTyxVQUFVO0FBQ3ZFLGFBQVMsdUJBQXVCO0FBQ2hDLFVBQU0sT0FBTyxhQUFhO0FBQzFCLFVBQU0sT0FBTyxrQkFBa0IsV0FBVyxFQUFFLEtBQUs7QUFBQSxFQUNuRCxDQUFDLENBQ0g7QUF5QkYsTUFBSSwwQkFBUSxhQUFhLEVBQ3RCLFFBQVEsaUNBQWlDLEVBQ3pDLFFBQ0MsNkdBQ0YsRUFDQyxVQUFVLENBQUMsV0FDVixPQUFPLFNBQVMsU0FBUyxNQUFNLEVBQUUsU0FBUyxPQUFPLFVBQVU7QUFDekQsYUFBUyxTQUFTO0FBQ2xCLFVBQU0sT0FBTyxhQUFhO0FBQzFCLFFBQUksVUFBVSxtQkFBbUIsV0FBVztBQUM1QyxVQUFNLFNBQ0osS0FDQSxhQUNBLFlBQ0EsUUFBUSxVQUFVLE1BQ3BCO0FBQUEsRUFDRixDQUFDLENBQ0g7QUFDSjs7O0FDM0tBLHdCQUFnQztBQU96Qiw2QkFDTCxRQUNBLDZCQUNBO0FBQ0EsUUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBTSxFQUFFLGNBQWM7QUFDdEIsUUFBTSxTQUFTLFVBQVUsU0FBUztBQUVsQyxRQUFNLGtCQUFrQixXQUN0QixpQkFDQSwyQkFDRjtBQUVBLE1BQUksMEJBQVEsZUFBZSxFQUN4QixRQUFRLHFCQUFxQixFQUM3QixRQUNDLGFBQ0UsOGVBQ0YsQ0FDRixFQUNDLFFBQVEsQ0FBQyxVQUFTO0FBQ2pCLFVBQUssU0FBUyxTQUFTLGlCQUFpQjtBQUN4QyxVQUFLLFFBQVEsU0FBUyxZQUFZO0FBQ2hDLFlBQU0sUUFBUSxNQUFLLFNBQVM7QUFDNUIsVUFBSSxVQUFVLE1BQU0sV0FBVyxLQUFLLEdBQUc7QUFDckMsaUJBQVMsb0JBQW9CO0FBQzdCLGNBQU0sT0FBTyxhQUFhO0FBQzFCLGNBQU0sYUFBYSxNQUFNO0FBQUEsTUFDM0IsT0FBTztBQUNMLFlBQUkseUJBQU8sZUFBZTtBQUFBLE1BQzVCO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQztBQUNILE1BQUksMEJBQVEsZUFBZSxFQUN4QixRQUFRLHlCQUF5QixFQUNqQyxRQUNDLGFBQ0UsK0pBQ0YsQ0FDRixFQUNDLFFBQVEsQ0FBQyxVQUFTO0FBQ2pCLFVBQUssU0FBUyxTQUFTLGlCQUFpQjtBQUN4QyxVQUFLLFFBQVEsU0FBUyxZQUFZO0FBQ2hDLFlBQU0sUUFBUSxNQUFLLFNBQVM7QUFDNUIsZUFBUyxvQkFBb0I7QUFDN0IsWUFBTSxPQUFPLGFBQWE7QUFDMUIsWUFBTSxhQUFhLE1BQU07QUFBQSxJQUMzQjtBQUFBLEVBQ0YsQ0FBQztBQUVILE1BQUksMEJBQVEsZUFBZSxFQUN4QixRQUFRLHFCQUFxQixFQUM3QixRQUFRLDZEQUE2RCxFQUNyRSxZQUFZLENBQUMsT0FBTztBQUNuQixXQUFPLFFBQVEsQ0FBQyxVQUFVO0FBQ3hCLFNBQUcsVUFBVSxPQUFPLEtBQUs7QUFBQSxJQUMzQixDQUFDO0FBQ0QsT0FBRyxTQUFTLFNBQVMsaUJBQWlCO0FBQ3RDLE9BQUcsU0FBUyxPQUFPLFVBQVU7QUFDM0IsZUFBUyxvQkFBb0I7QUFDN0IsWUFBTSxPQUFPLGFBQWE7QUFDMUIsWUFBTSxhQUFhLE1BQU07QUFBQSxJQUMzQixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0gsTUFBSSwwQkFBUSxlQUFlLEVBQ3hCLFFBQVEsbUNBQW1DLEVBQzNDLFFBQ0MsYUFDRSw2WEFDRixDQUNGLEVBQ0MsVUFBVSxDQUFDLFFBQ1YsSUFDRyxTQUFTLFNBQVMsNkJBQTZCLEVBQy9DLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGFBQVMsZ0NBQWdDO0FBQ3pDLFVBQU0sT0FBTyxhQUFhO0FBQzFCLFVBQU0sYUFBYSxNQUFNO0FBQUEsRUFDM0IsQ0FBQyxDQUNMO0FBQ0o7OztBQ3ZGQSx3QkFBMkM7QUFNcEMsOEJBQ0wsUUFDQSw2QkFDQTtBQUNBLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU0sbUJBQW1CLFdBQ3ZCLGVBQ0EsMkJBQ0Y7QUFFQSxNQUFJLDBCQUFRLGdCQUFnQixFQUN6QixRQUFRLDBCQUEwQixFQUNsQyxRQUNDLGFBQ0Usc1RBQ0YsQ0FDRixFQUNDLFlBQVksQ0FBQyxPQUEwQjtBQUN0QyxVQUFNLFVBQVUsQ0FBQztBQUNqQixjQUFVLFNBQVMsU0FBUyxFQUFFLFFBQzVCLENBQUMsVUFBVyxRQUFRLFNBQVMsS0FDL0I7QUFDQSxPQUFHLFdBQVcsT0FBTyxPQUFPLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQzdDLFNBQVMsU0FBUyxjQUFjLEVBQ2hDLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGVBQVMsaUJBQWlCO0FBQzFCLFlBQU0sT0FBTyxhQUFhO0FBQzFCLFlBQU0sYUFBYSxNQUFNO0FBQUEsSUFDM0IsQ0FBQztBQUFBLEVBQ0wsQ0FBQztBQUNMOzs7QUNsQ0Esd0JBQTBDO0FBSW5DLDZCQUNMLFFBQ0EsYUFDQTtBQUNBLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU0sa0JBQWtCLFFBQVEsaUJBQWlCLFdBQVc7QUFFNUQsMEJBQXdCLFlBQW9CO0FBQzFDLHVDQUFpQixlQUNmLFlBQ0EsZ0JBQWdCLFVBQVUsR0FDMUIsSUFDQSxJQUNGO0FBQUEsRUFDRjtBQUdBLGtCQUFnQixTQUFTLEtBQUs7QUFBQSxJQUM1QixNQUFNO0FBQUEsRUFDUixDQUFDO0FBRUQsTUFBSSwwQkFBUSxlQUFlLEVBQ3hCLFFBQVEseUJBQXlCLEVBQ2pDLFFBQVEsa0VBQWtFLEVBQzFFLFVBQVUsQ0FBQyxPQUNWLEdBQ0csU0FBUyxTQUFTLGlCQUFpQixtQkFBbUIsRUFDdEQsU0FBUyxPQUFPLFFBQVE7QUFDdkIsYUFBUyxpQkFBaUIsc0JBQXNCO0FBQ2hELFVBQU0sT0FBTyxhQUFhO0FBQzFCLFVBQU0sYUFBYSxNQUFNO0FBQUEsRUFDM0IsQ0FBQyxDQUNMO0FBRUYsaUJBQWUsMEZBQTBGO0FBRXpHLE1BQUksMEJBQVEsZUFBZSxFQUN4QixRQUFRLG9CQUFvQixFQUM1QixRQUFRLGdEQUFnRCxFQUN4RCxVQUFVLENBQUMsT0FDVixHQUNHLFNBQVMsU0FBUyxpQkFBaUIsd0JBQXdCLEVBQzNELFNBQVMsT0FBTyxRQUFRO0FBQ3ZCLGFBQVMsaUJBQWlCLDJCQUEyQjtBQUNyRCxVQUFNLE9BQU8sYUFBYTtBQUMxQixVQUFNLGFBQWEsTUFBTTtBQUFBLEVBQzNCLENBQUMsQ0FDTDtBQUVGLGlCQUFlLHNHQUFzRztBQUVySCxNQUFJLDBCQUFRLGVBQWUsRUFDeEIsUUFBUSw0QkFBNEIsRUFDcEMsUUFBUSx5Q0FBeUMsRUFDakQsVUFBVSxDQUFDLE9BQ1YsR0FDRyxTQUFTLFNBQVMsaUJBQWlCLHNCQUFzQixFQUN6RCxTQUFTLE9BQU8sUUFBUTtBQUN2QixhQUFTLGlCQUFpQix5QkFBeUI7QUFDbkQsVUFBTSxPQUFPLGFBQWE7QUFDMUIsVUFBTSxhQUFhLE1BQU07QUFBQSxFQUMzQixDQUFDLENBQ0w7QUFFRixpQkFBZSwwRkFBMEY7QUFFekcsTUFBSSwwQkFBUSxlQUFlLEVBQ3hCLFFBQVEsWUFBWSxFQUNwQixRQUFRLDZEQUE2RCxFQUNyRSxVQUFVLENBQUMsT0FDVixHQUNHLFNBQVMsU0FBUyxpQkFBaUIsd0JBQXdCLEVBQzNELFNBQVMsT0FBTyxRQUFRO0FBQ3ZCLGFBQVMsaUJBQWlCLDJCQUEyQjtBQUNyRCxVQUFNLE9BQU8sYUFBYTtBQUMxQixVQUFNLGFBQWEsTUFBTTtBQUFBLEVBQzNCLENBQUMsQ0FDTDtBQUVGLGlCQUFlLHVGQUF1RjtBQUV0RyxNQUFJLDBCQUFRLGVBQWUsRUFDeEIsUUFBUSxTQUFTLEVBQ2pCLFFBQ0MsbUZBQ0YsRUFDQyxVQUFVLENBQUMsT0FDVixHQUNHLFNBQVMsU0FBUyxpQkFBaUIsZ0JBQWdCLEVBQ25ELFNBQVMsT0FBTyxRQUFRO0FBQ3ZCLGFBQVMsaUJBQWlCLG1CQUFtQjtBQUM3QyxVQUFNLE9BQU8sYUFBYTtBQUMxQixVQUFNLGFBQWEsTUFBTTtBQUFBLEVBQzNCLENBQUMsQ0FDTDtBQUVGLGlCQUFlLG1IQUFtSDtBQUVsSSxNQUFJLDBCQUFRLGVBQWUsRUFDeEIsUUFBUSxzQ0FBc0MsRUFDOUMsUUFDQyx1SUFDRixFQUNDLFVBQVUsQ0FBQyxXQUNWLE9BQ0csU0FBUyxTQUFTLDZCQUE2QixFQUMvQyxTQUFTLE9BQU8sVUFBVTtBQUN6QixhQUFTLGdDQUFnQztBQUN6QyxVQUFNLE9BQU8sYUFBYTtBQUMxQixVQUFNLGFBQWEsTUFBTTtBQUFBLEVBQzNCLENBQUMsQ0FDTDtBQUNKOzs7QUN0SEEsd0JBQTJDO0FBTXBDLDRCQUNMLFFBQ0EsNkJBQ0E7QUFDQSxRQUFNLEVBQUUsYUFBYTtBQUNyQixRQUFNLGlCQUFpQixXQUFXLGFBQWEsMkJBQTJCO0FBRTFFLE1BQUksMEJBQVEsY0FBYyxFQUN2QixRQUFRLHdCQUF3QixFQUNoQyxRQUNDLGFBQ0Usa1RBQ0YsQ0FDRixFQUNDLFlBQVksQ0FBQyxPQUEwQjtBQUV0QyxVQUFNLFVBQVUsQ0FBQztBQUNqQixjQUFVLFNBQVMsU0FBUyxFQUFFLFFBQzVCLENBQUMsVUFBVyxRQUFRLFNBQVMsS0FDL0I7QUFDQSxPQUFHLFdBQVcsT0FBTyxPQUFPLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQzdDLFNBQVMsU0FBUyxZQUFZLEVBQzlCLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGVBQVMsZUFBZTtBQUN4QixZQUFNLE9BQU8sYUFBYTtBQUMxQixZQUFNLGFBQWEsTUFBTTtBQUFBLElBQzNCLENBQUM7QUFBQSxFQUNMLENBQUM7QUFDTDs7O0FDbENBLHdCQUFnQztBQVV6Qiw4QkFDTCxRQUNBLGFBQ0E7QUFDQSxRQUFNLEVBQUUsYUFBYTtBQUNyQixRQUFNLG1CQUFtQixXQUFXLGFBQWEsV0FBVztBQUU1RCxtQkFBaUIsVUFBVTtBQUFBLElBQ3pCLE1BQU07QUFBQSxFQUNSLENBQUM7QUFFRCxNQUFJLDBCQUFRLGdCQUFnQixFQUN6QixRQUFRLDhDQUE4QyxFQUN0RCxVQUFVLENBQUMsUUFBUTtBQUNsQixRQUFJLFNBQVMsU0FBUyxpQkFBaUI7QUFDdkMsUUFBSSxTQUFTLE9BQU8sVUFBVTtBQUM1QixlQUFTLG9CQUFvQjtBQUM3QixZQUFNLE9BQU8sYUFBYTtBQUFBLElBQzVCLENBQUM7QUFBQSxFQUNILENBQUM7QUFDSCxNQUFJLDBCQUFRLGdCQUFnQixFQUN6QixRQUFRLHFCQUFxQixFQUM3QixRQUNDLGFBQ0UsMk5BQ0YsQ0FDRixFQUNDLFVBQVUsQ0FBQyxRQUFRO0FBQ2xCLFFBQUksU0FBUyxTQUFTLGlCQUFpQjtBQUN2QyxRQUFJLFNBQVMsT0FBTyxVQUFVO0FBQzVCLGVBQVMsb0JBQW9CO0FBQzdCLFlBQU0sT0FBTyxhQUFhO0FBQUEsSUFDNUIsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUVILE1BQUksMEJBQVEsZ0JBQWdCLEVBQ3pCLFFBQVEsd0JBQXdCLEVBQ2hDLFFBQ0MsYUFDRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGNBUUYsQ0FDRixFQUNDLFFBQVEsQ0FBQyxVQUFTO0FBQ2pCLFVBQUssU0FBUyxTQUFTLGlCQUFpQjtBQUN4QyxVQUFLLFFBQVEsU0FBUyxZQUFZO0FBQ2hDLFlBQU0sUUFBUSxNQUFLLFNBQVM7QUFDNUIsVUFBSSx1QkFBdUIsS0FBSyxDQUFDLFNBQVMsTUFBTSxTQUFTLElBQUksQ0FBQyxHQUFHO0FBQy9ELFlBQUkseUJBQ0YscURBQXFELHVCQUF1QixLQUMxRSxHQUNGLEdBQ0Y7QUFDQSxjQUFLLFNBQVMsU0FBUyxpQkFBaUI7QUFBQSxNQUMxQyxPQUFPO0FBQ0wsaUJBQVMsb0JBQW9CO0FBQzdCLGNBQU0sT0FBTyxhQUFhO0FBQUEsTUFDNUI7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBQ0gsTUFBSSwwQkFBUSxnQkFBZ0IsRUFDekIsUUFBUSxhQUFhLEVBQ3JCLFFBQVEsZ0VBQWdFLEVBQ3hFLGdCQUFnQixDQUFDLFlBQVc7QUFDM0IsWUFDRyxpQkFBaUIsaUJBQWlCLFVBQVUsRUFDNUMsU0FBUyxTQUFTLFVBQVUsRUFDNUIsU0FBUyxPQUFPLFVBQVU7QUFDekIsZUFBUyxhQUFhO0FBQ3RCLFlBQU0sT0FBTyxhQUFhO0FBQUEsSUFDNUIsQ0FBQztBQUFBLEVBQ0wsQ0FBQztBQUVILFFBQU0sNEJBQTRCLElBQUksMEJBQVEsZ0JBQWdCLEVBQzNELFNBQVMsc0JBQXNCLEVBQy9CLFFBQVEsa0NBQWtDLEVBQzFDLFFBQ0MsYUFDRTtBQUFBLGtHQUVGLENBQ0Y7QUFFRixhQUFXLFFBQVEsQ0FBQyxRQUNsQiwwQkFBMEIsUUFBUSxDQUFDLFVBQVM7QUFDMUMsVUFDRyxlQUFlLGlCQUFpQixJQUFJLEVBQ3BDLFNBQVMsU0FBUyxzQkFBc0IsSUFBSTtBQUMvQyxVQUFLLFFBQVEsU0FBUyxZQUFZO0FBQ2hDLGVBQVMsc0JBQXNCLE9BQU8sTUFBSyxTQUFTO0FBQ3BELFlBQU0sT0FBTyxhQUFhO0FBQUEsSUFDNUI7QUFBQSxFQUNGLENBQUMsQ0FDSDtBQUVGOzs7QUM5R0Esd0JBQW1EO0FBVTVDLDhCQUNMLFFBQ0EsYUFDQTtBQUNBLFFBQU0sRUFBRSxhQUFhO0FBQ3JCLFFBQU0sZUFBZSxXQUFXLG9CQUFvQixXQUFXO0FBRS9ELE1BQUksMEJBQVEsWUFBWSxFQUNyQixRQUFRLDRDQUE0QyxFQUNwRCxRQUNDLDRFQUNGLEVBQ0MsVUFBVSxDQUFDLFdBQ1YsT0FBTyxTQUFTLFNBQVMsbUJBQW1CLEVBQUUsU0FBUyxPQUFPLFVBQVU7QUFDdEUsYUFBUyxzQkFBc0I7QUFDL0IsVUFBTSxPQUFPLGFBQWE7QUFDMUIsVUFBTSxVQUFVLE1BQU07QUFBQSxFQUN4QixDQUFDLENBQ0g7QUFFRixlQUFhLFNBQVMsSUFBSTtBQUMxQixlQUFhLFVBQVU7QUFBQSxJQUNyQixLQUFLO0FBQUEsSUFDTCxNQUFNO0FBQUEsRUFDUixDQUFDO0FBRUQsTUFBSSxtQkFBVztBQUFBLElBQ2IsUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLE1BQ0w7QUFBQSxNQUNBLGFBQWE7QUFBQSxNQUNiLFNBQVMsVUFBVSxTQUFTLFdBQVcsSUFBSTtBQUFBLElBQzdDO0FBQUEsRUFDRixDQUFDO0FBRUQsUUFBTSxjQUFjLElBQUksMEJBQVEsWUFBWSxFQUN6QyxRQUFRLGVBQWUsRUFDdkIsUUFDQyxpR0FDRixFQUNDLFVBQVUsQ0FBQyxXQUFXO0FBQ3JCLFdBQ0csV0FBVyxZQUFZLEVBQ3ZCLFNBQVMsU0FBUyxTQUFTLEVBQzNCLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGVBQVMsWUFBWTtBQUNyQixZQUFNLE9BQU8sYUFBYTtBQUMxQixZQUFNLFVBQVUsTUFBTTtBQUFBLElBQ3hCLENBQUM7QUFBQSxFQUNMLENBQUMsRUFDQSxVQUFVLENBQUMsV0FBVztBQUNyQixXQUNHLFdBQVcsV0FBVyxFQUN0QixTQUFTLFNBQVMsUUFBUSxFQUMxQixTQUFTLE9BQU8sVUFBVTtBQUN6QixlQUFTLFdBQVc7QUFDcEIsWUFBTSxPQUFPLGFBQWE7QUFDMUIsWUFBTSxVQUFVLE1BQU07QUFBQSxJQUN4QixDQUFDO0FBQUEsRUFDTCxDQUFDLEVBQ0EsVUFBVSxDQUFDLFdBQVc7QUFDckIsV0FDRyxXQUFXLG9CQUFvQixFQUMvQixTQUFTLFNBQVMsWUFBWSxFQUM5QixTQUFTLE9BQU8sVUFBVTtBQUN6QixlQUFTLGVBQWU7QUFDeEIsWUFBTSxPQUFPLGFBQWE7QUFDMUIsWUFBTSxVQUFVLE1BQU07QUFBQSxJQUN4QixDQUFDO0FBQUEsRUFDTCxDQUFDO0FBRUgsTUFBSSxJQUFJLFFBQVEsUUFBUSxVQUFVLFFBQVc7QUFDM0MsZ0JBQVksVUFBVSxDQUFDLFdBQVc7QUFDaEMsYUFDRyxXQUFXLFlBQVksRUFDdkIsU0FBUyxTQUFTLFNBQVMsRUFDM0IsU0FBUyxPQUFPLFVBQVU7QUFDekIsaUJBQVMsWUFBWTtBQUNyQixjQUFNLE9BQU8sYUFBYTtBQUMxQixjQUFNLFVBQVUsTUFBTTtBQUFBLE1BQ3hCLENBQUM7QUFBQSxJQUNMLENBQUM7QUFBQSxFQUNIO0FBRUEsTUFBSSwwQkFBUSxZQUFZLEVBQ3JCLFFBQVEsaUJBQWlCLEVBQ3pCLFFBQVEsMENBQTBDLEVBQ2xELFVBQVUsQ0FBQyxXQUFXO0FBQ3JCLFdBQ0csVUFBVSxHQUFHLElBQUksQ0FBQyxFQUNsQixTQUFTLFNBQVMsZ0JBQWdCLEVBQ2xDLGtCQUFrQjtBQUVyQixXQUFPLFNBQVMsU0FBUyxZQUFZO0FBQ25DLGVBQVMsbUJBQW1CLE9BQU8sU0FBUztBQUM1QyxZQUFNLE9BQU8sYUFBYTtBQUMxQixZQUFNLFVBQVUsTUFBTTtBQUFBLElBQ3hCO0FBQUEsRUFDRixDQUFDO0FBR0gsTUFBSSwwQkFBUSxZQUFZLEVBQ3JCLFFBQVEsZUFBZSxFQUN2QixRQUNDLGFBQ0UsbVNBQ0YsQ0FDRixFQUNDLFFBQVEsQ0FBQyxVQUFTO0FBQ2pCLFVBQ0csZUFBZSxZQUFZLEVBQzNCLFNBQVMsU0FBUyxXQUFXLEtBQUssSUFBSSxDQUFDO0FBRTFDLFVBQUssUUFBUSxTQUFTLFlBQVk7QUFDaEMsWUFBTSxTQUFTLGFBQWEsTUFBSyxTQUFTLENBQUM7QUFDM0MsVUFDRSxPQUFPLE9BQU8sVUFDZCxPQUFPLE1BQU0sQ0FBQyxXQUFVLFVBQVUsTUFBSyxDQUFDLEdBQ3hDO0FBQ0EsaUJBQVMsYUFBYTtBQUN0QixjQUFNLE9BQU8sYUFBYTtBQUFBLE1BQzVCO0FBQU8sWUFBSSx5QkFBTywrQ0FBK0M7QUFBQSxJQUVuRTtBQUFBLEVBQ0YsQ0FBQztBQUVILE1BQUksMEJBQVEsWUFBWSxFQUNyQixRQUFRLGlEQUFpRCxFQUN6RCxRQUNDLG9JQUNGLEVBQ0MsVUFBVSxDQUFDLFdBQ1YsT0FDRyxTQUFTLFNBQVMsNkJBQTZCLEVBQy9DLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGFBQVMsZ0NBQWdDO0FBRXpDLFVBQU0sT0FBTyxhQUFhO0FBQzFCLFVBQU0sVUFBVSxNQUFNO0FBQUEsRUFDeEIsQ0FBQyxDQUNMO0FBRUYsTUFBSSwwQkFBUSxZQUFZLEVBQ3JCLFFBQVEsb0NBQW9DLEVBQzVDLFFBQ0Msa0ZBQ0YsRUFDQyxZQUFZLFFBQU07QUFDakIsVUFBTSxVQUFVLENBQUM7QUFDakIsa0JBQWMsUUFBUSxZQUFVO0FBQzlCLGNBQVEsVUFBVTtBQUFBLElBQ3BCLENBQUM7QUFFRCxPQUFHLFdBQVcsT0FBTztBQUNyQixPQUFHLFNBQVMsU0FBUyxPQUFPO0FBQzVCLE9BQUcsU0FBUyxPQUFPLFFBQVE7QUFDekIsZUFBUyxVQUFVO0FBQ25CLFlBQU0sT0FBTyxhQUFhO0FBQzFCLFlBQU0sVUFBVSxNQUFNO0FBQUEsSUFDeEIsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUVILE1BQUksMEJBQVEsWUFBWSxFQUNyQixRQUFRLFdBQVcsRUFDbkIsUUFBUSxhQUNQLGtHQUE2RixDQUMvRixFQUNDLFFBQVEsQ0FBQyxVQUNSLE1BQ0csZUFBZSxRQUFHLEVBQ2xCLFNBQVMsU0FBUyxjQUFjLEVBQ2hDLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGFBQVMsaUJBQWlCO0FBQzFCLFVBQU0sT0FBTyxhQUFhO0FBQzFCLFVBQU0sVUFBVSxNQUFNO0FBQUEsRUFDeEIsQ0FBQyxDQUNMO0FBRUYsTUFBSSwwQkFBUSxZQUFZLEVBQ3JCLFFBQVEsdUJBQXVCLEVBQy9CLFFBQ0MsaUdBQ0YsRUFDQyxRQUFRLENBQUMsVUFDUixNQUNHLGVBQWUsaUNBQWlDLEVBQ2hELFNBQVMsU0FBUyxhQUFhLEVBQy9CLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGFBQVMsZ0JBQWdCO0FBQ3pCLFVBQU0sT0FBTyxhQUFhO0FBQzFCLFVBQU0sVUFBVSxNQUFNO0FBQUEsRUFDeEIsQ0FBQyxDQUNMO0FBRUYsTUFBSSwwQkFBUSxZQUFZLEVBQ3JCLFFBQVEsOEJBQThCLEVBQ3RDLFFBQ0MsaUpBQ0YsRUFDQyxVQUFVLENBQUMsV0FDVixPQUNHLFNBQVMsU0FBUyx5QkFBeUIsRUFDM0MsU0FBUyxPQUFPLFVBQVU7QUFDekIsYUFBUyw0QkFBNEI7QUFDckMsVUFBTSxPQUFPLGFBQWE7QUFDMUIsVUFBTSxVQUFVLE1BQU07QUFBQSxFQUN4QixDQUFDLENBQ0w7QUFHRixNQUFJLDBCQUFRLFlBQVksRUFDckIsUUFBUSx5QkFBeUIsRUFDakMsUUFBUSx5Q0FBeUMsRUFDakQsVUFBVSxDQUFDLFdBQVc7QUFDckIsV0FDRyxTQUFTLFNBQVMsYUFBYSxFQUMvQixTQUFTLE9BQU8sVUFBVTtBQUN6QixlQUFTLGdCQUFnQjtBQUN6QixZQUFNLE9BQU8sYUFBYTtBQUFBLElBQzVCLENBQUM7QUFBQSxFQUNMLENBQUM7QUFFSCxNQUFJLDBCQUFRLFlBQVksRUFDckIsUUFBUSxtQkFBbUIsRUFDM0IsUUFDQyxhQUNFLG1KQUNGLENBQ0YsRUFDQyxZQUFZLENBQUMsT0FBMEI7QUFDdEMsT0FBRyxVQUFVLGFBQWEsV0FBVztBQUNyQyxPQUFHLFVBQVUsWUFBWSxVQUFVO0FBQ25DLE9BQUcsVUFBVSxRQUFRLFlBQVk7QUFDakMsT0FBRyxVQUFVLFFBQVEsTUFBTTtBQUMzQixPQUFHLFVBQVUsY0FBYyxZQUFZO0FBRXZDLE9BQUcsU0FBUyxTQUFTLFdBQVc7QUFDaEMsT0FBRyxTQUFTLE9BQU8sVUFBVTtBQUMzQixlQUFTLGNBQWM7QUFDdkIsWUFBTSxPQUFPLGFBQWE7QUFDMUIsWUFBTSxVQUFVLE1BQU07QUFBQSxJQUN4QixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0w7OztBQzlQQSx3QkFBMkM7QUFNcEMsNkJBQ0wsUUFDQSxhQUNBO0FBQ0EsUUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBTSxrQkFBa0IsV0FBVyx1QkFBdUIsV0FBVztBQUVyRSxNQUFJLDBCQUFRLGVBQWUsRUFDeEIsUUFBUSw0QkFBNEIsRUFDcEMsUUFBUSx3Q0FBd0MsRUFDaEQsWUFBWSxDQUFDLE9BQTBCO0FBQ3RDLGFBQVMsUUFBUSxDQUFDLFdBQW9CO0FBQ3BDLFNBQUcsVUFBVSxRQUFRLE1BQU07QUFBQSxJQUM3QixDQUFDO0FBQ0QsT0FBRyxTQUFTLFNBQVMsUUFBUTtBQUU3QixPQUFHLFNBQVMsT0FBTyxVQUFtQjtBQUNwQyxlQUFTLFdBQVc7QUFDcEIsWUFBTSxPQUFPLGFBQWE7QUFBQSxJQUM1QixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0gsTUFBSSwwQkFBUSxlQUFlLEVBQ3hCLFFBQVEsa0JBQWtCLEVBQzFCLFFBQVEsMERBQTBELEVBQ2xFLFlBQVksQ0FBQyxPQUFPO0FBQ25CLGNBQVUsUUFBUSxDQUFDLFdBQXNCO0FBQ3ZDLFNBQUcsVUFBVSxRQUFRLE1BQU07QUFBQSxJQUM3QixDQUFDO0FBQ0QsT0FBRyxTQUFTLFNBQVMsV0FBVztBQUVoQyxPQUFHLFNBQVMsT0FBTyxVQUFxQjtBQUN0QyxlQUFTLGNBQWM7QUFDdkIsWUFBTSxPQUFPLGFBQWE7QUFBQSxJQUM1QixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0gsTUFBSSwwQkFBUSxlQUFlLEVBQ3hCLFFBQVEscUJBQXFCLEVBQzdCLFFBQVEsMENBQTBDLEVBQ2xELFlBQVksQ0FBQyxPQUEwQjtBQUN0QyxlQUFXLFFBQVEsQ0FBQyxXQUFtQjtBQUNyQyxTQUFHLFVBQVUsUUFBUSxNQUFNO0FBQUEsSUFDN0IsQ0FBQztBQUNELE9BQUcsU0FBUyxTQUFTLFNBQVM7QUFFOUIsT0FBRyxTQUFTLE9BQU8sVUFBa0I7QUFDbkMsZUFBUyxZQUFZO0FBQ3JCLFlBQU0sT0FBTyxhQUFhO0FBQUEsSUFDNUIsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUNILE1BQUksMEJBQVEsZUFBZSxFQUN4QixRQUFRLGtCQUFrQixFQUMxQixRQUFRLDBEQUEwRCxFQUNsRSxZQUFZLENBQUMsT0FBMEI7QUFDdEMsZ0JBQVksUUFBUSxDQUFDLFdBQW1CO0FBQ3RDLFNBQUcsVUFBVSxRQUFRLE1BQU07QUFBQSxJQUM3QixDQUFDO0FBQ0QsT0FBRyxTQUFTLFNBQVMsTUFBTTtBQUUzQixPQUFHLFNBQVMsT0FBTyxVQUFrQjtBQUNuQyxlQUFTLFNBQVM7QUFDbEIsWUFBTSxPQUFPLGFBQWE7QUFBQSxJQUM1QixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0w7OztBQ3JFQSx3QkFBd0I7QUFNakIsNkJBQ0wsUUFDQSxhQUNBO0FBQ0EsUUFBTSxFQUFFLGFBQWE7QUFDckIsUUFBTSx3QkFBd0IsV0FDNUIsNkJBQ0EsV0FDRjtBQUVBLHdCQUFzQixVQUFVO0FBQUEsSUFDOUIsS0FBSztBQUFBLElBQ0wsTUFBTTtBQUFBLEVBQ1IsQ0FBQztBQUVELE1BQUksbUJBQVc7QUFBQSxJQUNiLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxNQUNMO0FBQUEsTUFDQSxTQUFTLFVBQVUsU0FBUyxTQUFTO0FBQUEsTUFDckMsYUFBYTtBQUFBLElBQ2Y7QUFBQSxFQUNGLENBQUM7QUFFRCxNQUFJLDBCQUFRLHFCQUFxQixFQUM5QixRQUFRLGNBQWMsRUFDdEIsUUFDQyxnSEFDRixFQUNDLFVBQVUsQ0FBQyxXQUNWLE9BQU8sU0FBUyxTQUFTLGNBQWMsRUFBRSxTQUFTLE9BQU8sVUFBVTtBQUNqRSxhQUFTLGlCQUFpQjtBQUMxQixVQUFNLE9BQU8sYUFBYTtBQUFBLEVBQzVCLENBQUMsQ0FDSDtBQUVGLE1BQUksMEJBQVEscUJBQXFCLEVBQzlCLFFBQ0MsYUFDRSw4REFDRixDQUNGLEVBQ0MsUUFDQywyTEFDRixFQUNDLFVBQVUsQ0FBQyxXQUNWLE9BQU8sU0FBUyxTQUFTLGtCQUFrQixFQUFFLFNBQVMsT0FBTyxVQUFVO0FBQ3JFLGFBQVMscUJBQXFCO0FBQzlCLFVBQU0sT0FBTyxhQUFhO0FBQUEsRUFDNUIsQ0FBQyxDQUNIO0FBQ0o7OztBNUJqQ08sSUFBTSxlQUFlLENBQUMsU0FDM0IsZUFBZSxDQUFDLFNBQVUsS0FBSyxVQUFVLEVBQUUsWUFBWSxJQUFLO0FBRXZELElBQU0sVUFBVSxDQUFDLE9BQWMsV0FDcEMsT0FBTyxTQUFTLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFNBQVMsV0FBVyxFQUFFLFlBQUssQ0FBQyxDQUFDO0FBRWhFLElBQU0sYUFBYSxDQUFDLE9BQWMsV0FDdkMsT0FBTyxVQUFVO0FBQUEsRUFDZixNQUFNLEVBQUUsT0FBTyxzQkFBc0I7QUFDdkMsQ0FBQyxFQUNFLFNBQVMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsU0FBUyxXQUFXLEVBQUUsWUFBSyxDQUFDLENBQUM7QUFFNUQsSUFBTSxlQUFOLGNBQTJCLG1DQUFpQjtBQUFBLEVBR2pELFlBQVksUUFBa0I7QUFDNUIsVUFBTSxLQUFLLE1BQU07QUFDakIsU0FBSyxTQUFTO0FBQUEsRUFDaEI7QUFBQSxFQUVBLE1BQU0sVUFBeUI7QUFDN0IsVUFBTSxFQUFFLFFBQVEsZ0JBQWdCO0FBQ2hDLFVBQU0sRUFBRSxhQUFhO0FBRXJCLGdCQUFZLE1BQU07QUFDbEIsZ0JBQVksU0FBUyxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxnQkFBWSxTQUFTLGlCQUFpQjtBQUV0Qyx5QkFBcUIsUUFBUSxXQUFXO0FBQ3hDLHdCQUFvQixRQUFRLFdBQVc7QUFDdkMsdUJBQW1CLFFBQVEsV0FBVztBQUV0QyxVQUFNLGNBQWMsUUFBUSxTQUFTLFdBQVc7QUFFaEQsUUFBSSwwQkFBUSxXQUFXLEVBQ3BCLFFBQVEsdUJBQXVCLEVBQy9CLFFBQVEsYUFBYSw4RkFBOEYsQ0FBQyxFQUNwSCxVQUFVLENBQUMsV0FDVixPQUNHLFdBQVcsa0JBQWtCLEVBQzdCLFNBQVMsU0FBUyxPQUFPLEVBQ3pCLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGVBQVMsVUFBVTtBQUNuQixZQUFNLE9BQU8sYUFBYTtBQUMxQixZQUFNLFVBQVUsTUFBTTtBQUFBLElBQ3hCLENBQUMsQ0FDTCxFQUNDLFVBQVUsQ0FBQyxXQUFXO0FBQ3JCLGFBQ0csV0FBVyxhQUFhLEVBQ3hCLFNBQVMsU0FBUyxnQkFBZ0IsRUFDbEMsU0FBUyxPQUFPLFVBQVU7QUFDekIsaUJBQVMsbUJBQW1CO0FBQzVCLGNBQU0sT0FBTyxhQUFhO0FBQUEsTUFDNUIsQ0FBQztBQUFBLElBQ0wsQ0FBQyxFQUNBLFVBQVUsQ0FBQyxXQUFXO0FBQ3JCLGFBQ0csV0FBVyxZQUFZLEVBQ3ZCLFNBQVMsU0FBUyxjQUFjLEVBQ2hDLFNBQVMsT0FBTyxVQUFVO0FBQ3pCLGlCQUFTLGlCQUFpQjtBQUMxQixjQUFNLE9BQU8sYUFBYTtBQUFBLE1BQzVCLENBQUM7QUFBQSxJQUNMLENBQUMsRUFDQSxVQUFVLENBQUMsV0FBVztBQUNyQixhQUNHLFdBQVcsV0FBVyxFQUN0QixTQUFTLFNBQVMsY0FBYyxFQUNoQyxTQUFTLE9BQU8sVUFBVTtBQUN6QixpQkFBUyxpQkFBaUI7QUFDMUIsY0FBTSxPQUFPLGFBQWE7QUFBQSxNQUM1QixDQUFDO0FBQUEsSUFDTCxDQUFDO0FBRUgsZ0JBQVksU0FBUyxJQUFJO0FBRXpCLDBCQUFzQixRQUFRLFdBQVc7QUFDekMseUJBQXFCLFFBQVEsV0FBVztBQUN4Qyx3QkFBb0IsUUFBUSxXQUFXO0FBR3ZDLFVBQU0sOEJBQThCLFFBQ2xDLDJCQUNBLFdBQ0Y7QUFFQSx1QkFBbUIsUUFBUSwyQkFBMkI7QUFDdEQseUJBQXFCLFFBQVEsMkJBQTJCO0FBQ3hELHdCQUFvQixRQUFRLDJCQUEyQjtBQUN2RCw2QkFBeUIsUUFBUSwyQkFBMkI7QUFDNUQsbUJBQWUsUUFBUSwyQkFBMkI7QUFDbEQsdUJBQW1CLFFBQVEsMkJBQTJCO0FBQ3RELHdCQUFvQixRQUFRLDJCQUEyQjtBQUN2RCx3QkFBb0IsUUFBUSwyQkFBMkI7QUFFdkQsVUFBTSxjQUFjLFFBQVEsWUFBWSxXQUFXO0FBQ25ELHdCQUFvQixRQUFRLFdBQVc7QUFDdkMsMkJBQXVCLFFBQVEsV0FBVztBQUMxQyx5QkFBcUIsUUFBUSxXQUFXO0FBQ3hDLDBCQUFzQixRQUFRLFdBQVc7QUFFekMsMEJBQXNCLFFBQVEsV0FBVztBQUV6QyxRQUFJLGFBQUssRUFBRSxRQUFRLFlBQVksQ0FBQztBQUFBLEVBQ2xDO0FBQ0Y7OztBNkJsSUEsd0JBQXdDOzs7Ozs7Ozs7OztBQ0k5QixhQUFnVSxRQUFBLE9BQUEsTUFBQTs7Ozs7Ozs7Ozs7OERBRDlSLElBQU8sRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O21JQUFQLEtBQU8sRUFBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkVvRG5CLElBQUksTUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFMaEMsYUFNTSxRQUFBLEtBQUEsTUFBQTtBQURKLGFBQW1DLEtBQUEsRUFBQTs7Ozs7Ozs7Ozs7OztnREFBVCxJQUFJLE1BQUE7QUFBQSxpQkFBQSxJQUFBLFFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUJBTjNCLElBQUs7O2lDQUFWLFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7O2dCQU5DLGlCQUVMOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVkosYUF1Qk0sUUFBQSxLQUFBLE1BQUE7QUF0QkosYUFBa0MsS0FBQSxFQUFBOztBQUNsQyxhQUtPLEtBQUEsSUFBQTs7O0FBQ1AsYUFHUSxLQUFBLEtBQUE7O0FBRE4sYUFBNEQsT0FBQSxNQUFBOzhCQUFULElBQUssRUFBQTs7QUFFMUQsYUFBcUUsS0FBQSxNQUFBO3VCQUFYLElBQU87Ozs7Ozs7Ozs7Ozs7Ozt3Q0FGWixLQUFLLElBQUE7Z0NBQUwsS0FBSyxFQUFBOzs7eUJBRUEsS0FBTzs7O3FCQUUxRCxLQUFLOzttQ0FBVixRQUFJLEtBQUEsR0FBQTs7Ozs7Ozs7Ozs7Ozt3Q0FBSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRRDNDUyxXQUFnQjtRQUNoQixjQUFvQjtVQUV2QixVQUFVO1FBQ1osUUFBUSxJQUFJLE1BQU0saUJBQWdCO01BRXBDLFFBQWdCO01BQ2hCLFFBQUssSUFBTyxPQUFPLE9BQU8sR0FBRztNQUM3QixVQUFVO1FBU1IsV0FBWSxZQUFhO1NBQ3hCO0FBQUs7V0FDSCxNQUNKLElBQUssVUFBUyxLQUFLLFFBQVEsRUFDM0IsT0FDRSxVQUFJLENBQU0sTUFBTSxVQUFVLElBQUksRUFBRSxVQUFVLFlBQVksT0FBTSxLQUFLLElBQUksQ0FBQTs7O0FDaUJ2QixZQUFLLEtBQUE7Ozs7QUFFQSxjQUFPLEtBQUE7OztxQ0FJNUMsTUFBQyxNQUFXLGFBQWEsTUFBTSxDQUFDO21DQUNsQyxNQUFNLGFBQWEsR0FBRyxXQUFXLElBQUk7Ozs7Ozs7OztBRHBDeEQsU0FBQzs7Z0JBRVMsU0FBTSxJQUFPLE9BQU8sT0FBTyxHQUFHOzBCQUNwQyxRQUFRLE1BQU07aUJBQ1A7Ozs7O0FBWVg7QUFBQyxxQkFBQSxHQUFFLFFBQVEsU0FBUyxLQUFLLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUYzQjNCLElBQXFCLFlBQXJCLGNBQXVDLDJCQUFTO0FBQUEsRUFJOUMsWUFBWSxNQUFxQixRQUFrQjtBQUNqRCxVQUFNLElBQUk7QUFvQlosZ0JBQU87QUFuQkwsU0FBSyxTQUFTO0FBQUEsRUFDaEI7QUFBQSxFQUVBLE1BQU0sU0FBd0I7QUFDNUIsVUFBTSxPQUFPO0FBQ2IsVUFBTSxLQUFLLE9BQU8sYUFBYTtBQUMvQixRQUFJLFVBQVUsY0FBYyxZQUFZO0FBQ3RDLFlBQU0sS0FBSyxLQUFLO0FBQUEsSUFDbEIsQ0FBQztBQUFBLEVBQ0g7QUFBQSxFQUVBLGNBQWM7QUFDWixXQUFPO0FBQUEsRUFDVDtBQUFBLEVBQ0EsaUJBQWlCO0FBQ2YsV0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUtBLE1BQU0sU0FBd0I7QUFBQSxFQUFFO0FBQUEsRUFFaEMsVUFBeUI7QUFsQzNCO0FBbUNJLGVBQUssU0FBTCxtQkFBVztBQUNYLFdBQU8sUUFBUSxRQUFRO0FBQUEsRUFDekI7QUFBQSxFQUVBLE1BQU0sT0FBc0I7QUFDMUIsU0FBSyxVQUFVLE1BQU07QUFFckIsU0FBSyxPQUFPLElBQUksY0FBTTtBQUFBLE1BQ3BCLFFBQVEsS0FBSztBQUFBLE1BQ2IsT0FBTyxFQUFFLFFBQVEsS0FBSyxRQUFRLFdBQVcsS0FBSztBQUFBLElBQ2hELENBQUM7QUFBQSxFQUNIO0FBQ0Y7OztBSS9DQSx3QkFBd0M7Ozt3QkNDakI7Ozs7Ozs7Ozs7O0FFR2IsYUFBMlIsUUFBQSxPQUFBLE1BQUE7Ozs7Ozs7Ozs7OzhEQUR6UCxJQUFPLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OzttSUFBUCxLQUFPLEVBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNDekMsYUFBOC9DLFFBQUEsT0FBQSxNQUFBOzs7Ozs7Ozs7Ozs4REFENTlDLElBQU8sRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O21JQUFQLEtBQU8sRUFBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0JGeUVwQixJQUFTLE1BQUE7Ozs7Ozs7NENBQXJCLElBQVM7Ozs7QUFBeEIsYUFBOEMsUUFBQSxRQUFBLE1BQUE7Ozs7Ozs7Ozs7Ozs7aUJBUXBDLElBQUksSUFBQyxLQUFLOzs7OztpQkFRVixZQUFZLElBQUksSUFBQyxJQUFJLElBQVEsRUFBQSxJQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyREFEUixXQUFVLElBQUksSUFBQyxFQUFDLElBQUssS0FBSyxtQkFBZSxnQkFBQTs7OztBQVJ0RSxhQVlNLFFBQUEsS0FBQSxNQUFBO0FBWEosYUFBMEIsS0FBQSxHQUFBOzs7QUFDMUIsYUFTTyxLQUFBLElBQUE7QUFITCxhQUVDLE1BQUEsRUFBQTs7Ozs7Ozs7Ozs7OztpREFURyxJQUFJLElBQUMsS0FBSztBQUFHLGlCQUFBLElBQUEsUUFBQTtpREFRYixZQUFZLElBQUksSUFBQyxJQUFJLElBQVEsRUFBQSxJQUFBO0FBQUEsaUJBQUEsSUFBQSxRQUFBOzhFQURSLFdBQVUsSUFBSSxJQUFDLEVBQUMsSUFBSyxLQUFLLG1CQUFlLG1CQUFBOzs7Ozs7Ozs7Ozs7OztpQkFUbkUsSUFBSSxJQUFDLFNBQVMsS0FBQyxpQkFBQSxHQUFBOzs7Ozs7Ozs7Ozs7O1VBQWYsS0FBSSxJQUFDLFNBQVMsR0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUF6QmpCLEtBQU07QUFBQSxhQUFBOzs7OztxQkFrQko7O21DQUFMLFFBQUksS0FBQSxHQUFBOzs7bUJBTUMsSUFBSzs7aUNBQVYsUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1REEvQk0sSUFBTSxtQkFBaUIsSUFBUSxPQUFLLFVBQVU7Ozs7O1VBd0J2QixJQUFHLE9BQUE7QUFBQSw0QkFBQSxNQUFBLElBQUEsR0FBQSxLQUFBLE1BQUEsQ0FBQTs7OztBQTFCeEMsYUFjTyxRQUFBLE1BQUEsTUFBQTs7O0FBRVAsYUFRUyxRQUFBLFFBQUEsTUFBQTs7QUFFVCxhQUlTLFFBQUEsUUFBQSxNQUFBOzs7OzRCQUo0QixJQUFHLEVBQUE7O0FBTXhDLGFBa0JNLFFBQUEsS0FBQSxNQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1RkFoRFEsS0FBTSxtQkFBaUIsS0FBUSxPQUFLLGFBQVU7Ozs7dUJBeUJuRDs7cUNBQUwsUUFBSSxLQUFBLEdBQUE7Ozs7Ozs7Ozs7Ozs7NENBQUo7Ozs4QkFEaUMsS0FBRyxFQUFBOzs7cUJBTy9CLEtBQUs7O21DQUFWLFFBQUksS0FBQSxHQUFBOzs7Ozs7Ozs7Ozs7O3dDQUFKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BakZhO1FEbUJKLFdBQWdCO1FBQ2hCLFNBQWM7VUFFakIsVUFBVSxXQUFLLFlBQVk7VUFDM0Isc0JBQXNCO01BRTFCLE1BQWtCO01BQ2xCLFNBQVM7UUFDUCxhQUFhLE1BQUEsWUFBVyxPQUFFLFFBQUEsT0FBQSxTQUFBLEtBQUEsQ0FBQTtBQUVoQyxTQUFPLGNBQ0wsS0FBSSxVQUFVLEdBQUcsc0JBQW9CLE1BQUE7O1FBQy9CO0FBQU07b0JBQ1YsV0FBVyxPQUFBLFlBQVcsT0FBRSxRQUFBLFFBQUEsa0JBQUEsSUFBRSxRQUFROztNQUlsQzs7O29CQ2lCRixTQUFNLENBQUksTUFBTTtTQUNYO0FBQU0sbUJBQUEsR0FBRSxXQUFXLG1CQUFXLE1BQVgsb0JBQWUsUUFBUTs7O1VBYXpDLGFBQWEsTUFBTTtVQUNuQixLQUFLLEtBQUk7OztBQU1rQixVQUFHLGFBQUEsSUFBQTs7O3VDQWFiLE1BQUMsTUFBVyxhQUFhLEtBQUssSUFBSSxDQUFDO21DQUNyQyxNQUFNLGFBQWEsR0FBRyxNQUFNLEtBQUssRUFBQzs7Ozs7Ozs7O0FEbkR6RCxTQUFDO2NBQ08sT0FBTyxhQUFhLFNBQVMsR0FBRztjQUNoQyxXQUFXLFlBQVksTUFBTSxRQUFRO2NBQ3JDLFNBQVEsWUFBWSxVQUFVLE9BQU8saUJBQWlCO0FBQzVELG9DQUFJLEVBQUcsVUFBVSxjQUFLLENBQUE7d0JBRXRCLFFBQVEsaUJBQWlCLE1BQUssQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBRHJDbEMsSUFBcUIsV0FBckIsY0FBc0MsMkJBQVM7QUFBQSxFQUk3QyxZQUFZLE1BQXFCLFFBQWtCO0FBQ2pELFVBQU0sSUFBSTtBQWtCWixnQkFBTyxlQUFlLG1CQUFtQjtBQWpCdkMsU0FBSyxTQUFTO0FBQUEsRUFDaEI7QUFBQSxFQUVBLE1BQU0sU0FBd0I7QUFDNUIsVUFBTSxPQUFPO0FBQ2IsUUFBSSxVQUFVLGNBQWMsWUFBWTtBQUN0QyxZQUFNLEtBQUssS0FBSztBQUFBLElBQ2xCLENBQUM7QUFBQSxFQUNIO0FBQUEsRUFFQSxjQUFjO0FBQ1osV0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUNBLGlCQUFpQjtBQUNmLFdBQU87QUFBQSxFQUNUO0FBQUEsRUFJQSxNQUFNLFNBQXdCO0FBQUEsRUFBQztBQUFBLEVBRS9CLFVBQXlCO0FBakMzQjtBQWtDSSxlQUFLLFNBQUwsbUJBQVc7QUFDWCxXQUFPLFFBQVEsUUFBUTtBQUFBLEVBQ3pCO0FBQUEsRUFFQSxNQUFNLE9BQXNCO0FBQzFCLFNBQUssVUFBVSxNQUFNO0FBRXJCLFNBQUssT0FBTyxJQUFJLGlCQUFTO0FBQUEsTUFDdkIsUUFBUSxLQUFLO0FBQUEsTUFDYixPQUFPLEVBQUUsUUFBUSxLQUFLLFFBQVEsTUFBTSxLQUFLO0FBQUEsSUFDM0MsQ0FBQztBQUFBLEVBQ0g7QUFDRjs7O0FLOUNlLDJCQUFTLElBQUcsR0FBRztBQUM1QixTQUFPLEtBQUksSUFBSSxLQUFLLEtBQUksSUFBSSxJQUFJLE1BQUssSUFBSSxJQUFJO0FBQy9DOzs7QUNBZSwwQkFBUyxHQUFHO0FBQ3pCLE1BQUksUUFBUTtBQUNaLE1BQUksVUFBVTtBQUVkLE1BQUksRUFBRSxXQUFXLEdBQUc7QUFDbEIsWUFBUSxDQUFDLEdBQUcsT0FBTSxFQUFFLENBQUMsSUFBSTtBQUN6QixjQUFVLG9CQUFvQixDQUFDO0FBQUEsRUFDakM7QUFFQSxnQkFBYyxJQUFHLElBQUcsSUFBSSxJQUFJO0FBQzFCLFFBQUksTUFBTTtBQUFNLFdBQUs7QUFDckIsUUFBSSxNQUFNO0FBQU0sV0FBSyxHQUFFO0FBQ3ZCLFdBQU8sS0FBSyxJQUFJO0FBQ2QsWUFBTSxNQUFPLEtBQUssT0FBUTtBQUMxQixVQUFJLFFBQVEsR0FBRSxNQUFNLEVBQUMsSUFBSTtBQUFHLGFBQUssTUFBTTtBQUFBO0FBQ2xDLGFBQUs7QUFBQSxJQUNaO0FBQ0EsV0FBTztBQUFBLEVBQ1Q7QUFFQSxpQkFBZSxJQUFHLElBQUcsSUFBSSxJQUFJO0FBQzNCLFFBQUksTUFBTTtBQUFNLFdBQUs7QUFDckIsUUFBSSxNQUFNO0FBQU0sV0FBSyxHQUFFO0FBQ3ZCLFdBQU8sS0FBSyxJQUFJO0FBQ2QsWUFBTSxNQUFPLEtBQUssT0FBUTtBQUMxQixVQUFJLFFBQVEsR0FBRSxNQUFNLEVBQUMsSUFBSTtBQUFHLGFBQUs7QUFBQTtBQUM1QixhQUFLLE1BQU07QUFBQSxJQUNsQjtBQUNBLFdBQU87QUFBQSxFQUNUO0FBRUEsa0JBQWdCLElBQUcsSUFBRyxJQUFJLElBQUk7QUFDNUIsUUFBSSxNQUFNO0FBQU0sV0FBSztBQUNyQixRQUFJLE1BQU07QUFBTSxXQUFLLEdBQUU7QUFDdkIsVUFBTSxJQUFJLEtBQUssSUFBRyxJQUFHLElBQUksS0FBSyxDQUFDO0FBQy9CLFdBQU8sSUFBSSxNQUFNLE1BQU0sR0FBRSxJQUFJLElBQUksRUFBQyxJQUFJLENBQUMsTUFBTSxHQUFFLElBQUksRUFBQyxJQUFJLElBQUksSUFBSTtBQUFBLEVBQ2xFO0FBRUEsU0FBTyxFQUFDLE1BQU0sUUFBUSxNQUFLO0FBQzdCO0FBRUEsNkJBQTZCLEdBQUc7QUFDOUIsU0FBTyxDQUFDLEdBQUcsT0FBTSxrQkFBVSxFQUFFLENBQUMsR0FBRyxFQUFDO0FBQ3BDOzs7QUM3Q2Usd0JBQVMsSUFBRztBQUN6QixTQUFPLE9BQU0sT0FBTyxNQUFNLENBQUM7QUFDN0I7OztBQ0VBLElBQU0sa0JBQWtCLGlCQUFTLGlCQUFTO0FBQ25DLElBQU0sY0FBYyxnQkFBZ0I7QUFDcEMsSUFBTSxhQUFhLGdCQUFnQjtBQUNuQyxJQUFNLGVBQWUsaUJBQVMsY0FBTSxFQUFFO0FBQzdDLElBQU8saUJBQVE7OztBQ1JmLElBQUksTUFBTSxLQUFLLEtBQUssRUFBRTtBQUF0QixJQUNJLEtBQUssS0FBSyxLQUFLLEVBQUU7QUFEckIsSUFFSSxLQUFLLEtBQUssS0FBSyxDQUFDO0FBRUwsdUJBQVMsUUFBTyxNQUFNLFFBQU87QUFDMUMsTUFBSSxTQUNBLElBQUksSUFDSixHQUNBLE9BQ0E7QUFFSixTQUFPLENBQUMsTUFBTSxTQUFRLENBQUMsUUFBTyxTQUFRLENBQUM7QUFDdkMsTUFBSSxXQUFVLFFBQVEsU0FBUTtBQUFHLFdBQU8sQ0FBQyxNQUFLO0FBQzlDLE1BQUksVUFBVSxPQUFPO0FBQU8sUUFBSSxRQUFPLFNBQVEsTUFBTSxPQUFPO0FBQzVELE1BQUssUUFBTyxjQUFjLFFBQU8sTUFBTSxNQUFLLE9BQU8sS0FBSyxDQUFDLFNBQVMsSUFBSTtBQUFHLFdBQU8sQ0FBQztBQUVqRixNQUFJLE9BQU8sR0FBRztBQUNaLFFBQUksS0FBSyxLQUFLLE1BQU0sU0FBUSxJQUFJLEdBQUcsS0FBSyxLQUFLLE1BQU0sT0FBTyxJQUFJO0FBQzlELFFBQUksS0FBSyxPQUFPO0FBQU8sUUFBRTtBQUN6QixRQUFJLEtBQUssT0FBTztBQUFNLFFBQUU7QUFDeEIsWUFBUSxJQUFJLE1BQU0sSUFBSSxLQUFLLEtBQUssQ0FBQztBQUNqQyxXQUFPLEVBQUUsSUFBSTtBQUFHLFlBQU0sS0FBTSxNQUFLLEtBQUs7QUFBQSxFQUN4QyxPQUFPO0FBQ0wsV0FBTyxDQUFDO0FBQ1IsUUFBSSxLQUFLLEtBQUssTUFBTSxTQUFRLElBQUksR0FBRyxLQUFLLEtBQUssTUFBTSxPQUFPLElBQUk7QUFDOUQsUUFBSSxLQUFLLE9BQU87QUFBTyxRQUFFO0FBQ3pCLFFBQUksS0FBSyxPQUFPO0FBQU0sUUFBRTtBQUN4QixZQUFRLElBQUksTUFBTSxJQUFJLEtBQUssS0FBSyxDQUFDO0FBQ2pDLFdBQU8sRUFBRSxJQUFJO0FBQUcsWUFBTSxLQUFNLE1BQUssS0FBSztBQUFBLEVBQ3hDO0FBRUEsTUFBSTtBQUFTLFVBQU0sUUFBUTtBQUUzQixTQUFPO0FBQ1Q7QUFFTyx1QkFBdUIsUUFBTyxNQUFNLFFBQU87QUFDaEQsTUFBSSxPQUFRLFFBQU8sVUFBUyxLQUFLLElBQUksR0FBRyxNQUFLLEdBQ3pDLFFBQVEsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLEdBQzdDLFNBQVEsT0FBTyxLQUFLLElBQUksSUFBSSxLQUFLO0FBQ3JDLFNBQU8sU0FBUyxJQUNULFdBQVMsTUFBTSxLQUFLLFVBQVMsS0FBSyxJQUFJLFVBQVMsS0FBSyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxJQUNoRixDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFLLFdBQVMsTUFBTSxLQUFLLFVBQVMsS0FBSyxJQUFJLFVBQVMsS0FBSyxJQUFJO0FBQ3pGO0FBRU8sa0JBQWtCLFFBQU8sTUFBTSxRQUFPO0FBQzNDLE1BQUksUUFBUSxLQUFLLElBQUksT0FBTyxNQUFLLElBQUksS0FBSyxJQUFJLEdBQUcsTUFBSyxHQUNsRCxRQUFRLEtBQUssSUFBSSxJQUFJLEtBQUssTUFBTSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQzVELFNBQVEsUUFBUTtBQUNwQixNQUFJLFVBQVM7QUFBSyxhQUFTO0FBQUEsV0FDbEIsVUFBUztBQUFJLGFBQVM7QUFBQSxXQUN0QixVQUFTO0FBQUksYUFBUztBQUMvQixTQUFPLE9BQU8sU0FBUSxDQUFDLFFBQVE7QUFDakM7OztBQ3JEZSxhQUFhLFFBQVEsU0FBUztBQUMzQyxNQUFJO0FBQ0osTUFBSSxZQUFZLFFBQVc7QUFDekIsZUFBVyxTQUFTLFFBQVE7QUFDMUIsVUFBSSxTQUFTLFFBQ0wsUUFBTSxTQUFVLFNBQVEsVUFBYSxTQUFTLFFBQVM7QUFDN0QsZUFBTTtBQUFBLE1BQ1I7QUFBQSxJQUNGO0FBQUEsRUFDRixPQUFPO0FBQ0wsUUFBSSxTQUFRO0FBQ1osYUFBUyxTQUFTLFFBQVE7QUFDeEIsVUFBSyxTQUFRLFFBQVEsT0FBTyxFQUFFLFFBQU8sTUFBTSxNQUFNLFFBQ3pDLFFBQU0sU0FBVSxTQUFRLFVBQWEsU0FBUyxRQUFTO0FBQzdELGVBQU07QUFBQSxNQUNSO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1Q7OztBQ25CZSx1QkFBUyxRQUFPLE1BQU0sTUFBTTtBQUN6QyxXQUFRLENBQUMsUUFBTyxPQUFPLENBQUMsTUFBTSxPQUFRLEtBQUksVUFBVSxVQUFVLElBQUssUUFBTyxRQUFPLFNBQVEsR0FBRyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUM7QUFFOUcsTUFBSSxJQUFJLElBQ0osSUFBSSxLQUFLLElBQUksR0FBRyxLQUFLLEtBQU0sUUFBTyxVQUFTLElBQUksQ0FBQyxJQUFJLEdBQ3BELFFBQVEsSUFBSSxNQUFNLENBQUM7QUFFdkIsU0FBTyxFQUFFLElBQUksR0FBRztBQUNkLFVBQU0sS0FBSyxTQUFRLElBQUk7QUFBQSxFQUN6QjtBQUVBLFNBQU87QUFDVDs7O0FDWkEsSUFBSSxRQUFPLEVBQUMsT0FBTyxNQUFNO0FBQUMsRUFBQztBQUUzQixvQkFBb0I7QUFDbEIsV0FBUyxJQUFJLEdBQUcsSUFBSSxVQUFVLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHO0FBQzNELFFBQUksQ0FBRSxLQUFJLFVBQVUsS0FBSyxPQUFRLEtBQUssS0FBTSxRQUFRLEtBQUssQ0FBQztBQUFHLFlBQU0sSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pHLE1BQUUsS0FBSyxDQUFDO0FBQUEsRUFDVjtBQUNBLFNBQU8sSUFBSSxTQUFTLENBQUM7QUFDdkI7QUFFQSxrQkFBa0IsR0FBRztBQUNuQixPQUFLLElBQUk7QUFDWDtBQUVBLHdCQUF3QixXQUFXLE9BQU87QUFDeEMsU0FBTyxVQUFVLEtBQUssRUFBRSxNQUFNLE9BQU8sRUFBRSxJQUFJLFNBQVMsR0FBRztBQUNyRCxRQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsUUFBUSxHQUFHO0FBQ2hDLFFBQUksS0FBSztBQUFHLGFBQU8sRUFBRSxNQUFNLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxNQUFNLEdBQUcsQ0FBQztBQUNuRCxRQUFJLEtBQUssQ0FBQyxNQUFNLGVBQWUsQ0FBQztBQUFHLFlBQU0sSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZFLFdBQU8sRUFBQyxNQUFNLEdBQUcsS0FBVTtBQUFBLEVBQzdCLENBQUM7QUFDSDtBQUVBLFNBQVMsWUFBWSxTQUFTLFlBQVk7QUFBQSxFQUN4QyxhQUFhO0FBQUEsRUFDYixJQUFJLFNBQVMsVUFBVSxVQUFVO0FBQy9CLFFBQUksSUFBSSxLQUFLLEdBQ1QsSUFBSSxlQUFlLFdBQVcsSUFBSSxDQUFDLEdBQ25DLEdBQ0EsSUFBSSxJQUNKLElBQUksRUFBRTtBQUdWLFFBQUksVUFBVSxTQUFTLEdBQUc7QUFDeEIsYUFBTyxFQUFFLElBQUk7QUFBRyxZQUFLLEtBQUssWUFBVyxFQUFFLElBQUksU0FBVSxLQUFJLElBQUksRUFBRSxJQUFJLFNBQVMsSUFBSTtBQUFJLGlCQUFPO0FBQzNGO0FBQUEsSUFDRjtBQUlBLFFBQUksWUFBWSxRQUFRLE9BQU8sYUFBYTtBQUFZLFlBQU0sSUFBSSxNQUFNLHVCQUF1QixRQUFRO0FBQ3ZHLFdBQU8sRUFBRSxJQUFJLEdBQUc7QUFDZCxVQUFJLElBQUssWUFBVyxFQUFFLElBQUk7QUFBTSxVQUFFLEtBQUssSUFBSSxFQUFFLElBQUksU0FBUyxNQUFNLFFBQVE7QUFBQSxlQUMvRCxZQUFZO0FBQU0sYUFBSyxLQUFLO0FBQUcsWUFBRSxLQUFLLElBQUksRUFBRSxJQUFJLFNBQVMsTUFBTSxJQUFJO0FBQUEsSUFDOUU7QUFFQSxXQUFPO0FBQUEsRUFDVDtBQUFBLEVBQ0EsTUFBTSxXQUFXO0FBQ2YsUUFBSSxRQUFPLENBQUMsR0FBRyxJQUFJLEtBQUs7QUFDeEIsYUFBUyxLQUFLO0FBQUcsWUFBSyxLQUFLLEVBQUUsR0FBRyxNQUFNO0FBQ3RDLFdBQU8sSUFBSSxTQUFTLEtBQUk7QUFBQSxFQUMxQjtBQUFBLEVBQ0EsTUFBTSxTQUFTLE9BQU0sTUFBTTtBQUN6QixRQUFLLEtBQUksVUFBVSxTQUFTLEtBQUs7QUFBRyxlQUFTLE9BQU8sSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFO0FBQUcsYUFBSyxLQUFLLFVBQVUsSUFBSTtBQUNuSCxRQUFJLENBQUMsS0FBSyxFQUFFLGVBQWUsS0FBSTtBQUFHLFlBQU0sSUFBSSxNQUFNLG1CQUFtQixLQUFJO0FBQ3pFLFNBQUssSUFBSSxLQUFLLEVBQUUsUUFBTyxJQUFJLEdBQUcsSUFBSSxFQUFFLFFBQVEsSUFBSSxHQUFHLEVBQUU7QUFBRyxRQUFFLEdBQUcsTUFBTSxNQUFNLE1BQU0sSUFBSTtBQUFBLEVBQ3JGO0FBQUEsRUFDQSxPQUFPLFNBQVMsT0FBTSxNQUFNLE1BQU07QUFDaEMsUUFBSSxDQUFDLEtBQUssRUFBRSxlQUFlLEtBQUk7QUFBRyxZQUFNLElBQUksTUFBTSxtQkFBbUIsS0FBSTtBQUN6RSxhQUFTLElBQUksS0FBSyxFQUFFLFFBQU8sSUFBSSxHQUFHLElBQUksRUFBRSxRQUFRLElBQUksR0FBRyxFQUFFO0FBQUcsUUFBRSxHQUFHLE1BQU0sTUFBTSxNQUFNLElBQUk7QUFBQSxFQUN6RjtBQUNGO0FBRUEsYUFBYSxPQUFNLE1BQU07QUFDdkIsV0FBUyxJQUFJLEdBQUcsSUFBSSxNQUFLLFFBQVEsSUFBRyxJQUFJLEdBQUcsRUFBRSxHQUFHO0FBQzlDLFFBQUssTUFBSSxNQUFLLElBQUksU0FBUyxNQUFNO0FBQy9CLGFBQU8sR0FBRTtBQUFBLElBQ1g7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxhQUFhLE9BQU0sTUFBTSxVQUFVO0FBQ2pDLFdBQVMsSUFBSSxHQUFHLElBQUksTUFBSyxRQUFRLElBQUksR0FBRyxFQUFFLEdBQUc7QUFDM0MsUUFBSSxNQUFLLEdBQUcsU0FBUyxNQUFNO0FBQ3pCLFlBQUssS0FBSyxPQUFNLFFBQU8sTUFBSyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE9BQU8sTUFBSyxNQUFNLElBQUksQ0FBQyxDQUFDO0FBQ2hFO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxNQUFJLFlBQVk7QUFBTSxVQUFLLEtBQUssRUFBQyxNQUFZLE9BQU8sU0FBUSxDQUFDO0FBQzdELFNBQU87QUFDVDtBQUVBLElBQU8sbUJBQVE7OztBQ25GUixJQUFJLFFBQVE7QUFFbkIsSUFBTyxxQkFBUTtBQUFBLEVBQ2IsS0FBSztBQUFBLEVBQ0w7QUFBQSxFQUNBLE9BQU87QUFBQSxFQUNQLEtBQUs7QUFBQSxFQUNMLE9BQU87QUFDVDs7O0FDTmUsMkJBQVMsTUFBTTtBQUM1QixNQUFJLFNBQVMsUUFBUSxJQUFJLElBQUksT0FBTyxRQUFRLEdBQUc7QUFDL0MsTUFBSSxLQUFLLEtBQU0sVUFBUyxLQUFLLE1BQU0sR0FBRyxDQUFDLE9BQU87QUFBUyxXQUFPLEtBQUssTUFBTSxJQUFJLENBQUM7QUFDOUUsU0FBTyxtQkFBVyxlQUFlLE1BQU0sSUFBSSxFQUFDLE9BQU8sbUJBQVcsU0FBUyxPQUFPLEtBQUksSUFBSTtBQUN4Rjs7O0FDSEEsd0JBQXdCLE1BQU07QUFDNUIsU0FBTyxXQUFXO0FBQ2hCLFFBQUksWUFBVyxLQUFLLGVBQ2hCLE1BQU0sS0FBSztBQUNmLFdBQU8sUUFBUSxTQUFTLFVBQVMsZ0JBQWdCLGlCQUFpQixRQUM1RCxVQUFTLGNBQWMsSUFBSSxJQUMzQixVQUFTLGdCQUFnQixLQUFLLElBQUk7QUFBQSxFQUMxQztBQUNGO0FBRUEsc0JBQXNCLFVBQVU7QUFDOUIsU0FBTyxXQUFXO0FBQ2hCLFdBQU8sS0FBSyxjQUFjLGdCQUFnQixTQUFTLE9BQU8sU0FBUyxLQUFLO0FBQUEsRUFDMUU7QUFDRjtBQUVlLHlCQUFTLE1BQU07QUFDNUIsTUFBSSxXQUFXLGtCQUFVLElBQUk7QUFDN0IsU0FBUSxVQUFTLFFBQ1gsZUFDQSxnQkFBZ0IsUUFBUTtBQUNoQzs7O0FDeEJBLGdCQUFnQjtBQUFDO0FBRUYsMEJBQVMsVUFBVTtBQUNoQyxTQUFPLFlBQVksT0FBTyxPQUFPLFdBQVc7QUFDMUMsV0FBTyxLQUFLLGNBQWMsUUFBUTtBQUFBLEVBQ3BDO0FBQ0Y7OztBQ0hlLHdCQUFTLFFBQVE7QUFDOUIsTUFBSSxPQUFPLFdBQVc7QUFBWSxhQUFTLGlCQUFTLE1BQU07QUFFMUQsV0FBUyxTQUFTLEtBQUssU0FBUyxLQUFJLE9BQU8sUUFBUSxZQUFZLElBQUksTUFBTSxFQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBRyxFQUFFLEdBQUc7QUFDOUYsYUFBUyxRQUFRLE9BQU8sSUFBSSxJQUFJLE1BQU0sUUFBUSxXQUFXLFVBQVUsS0FBSyxJQUFJLE1BQU0sQ0FBQyxHQUFHLE1BQU0sU0FBUyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRztBQUN0SCxVQUFLLFFBQU8sTUFBTSxPQUFRLFdBQVUsT0FBTyxLQUFLLE1BQU0sS0FBSyxVQUFVLEdBQUcsS0FBSyxJQUFJO0FBQy9FLFlBQUksY0FBYztBQUFNLGtCQUFRLFdBQVcsS0FBSztBQUNoRCxpQkFBUyxLQUFLO0FBQUEsTUFDaEI7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU8sSUFBSSxVQUFVLFdBQVcsS0FBSyxRQUFRO0FBQy9DOzs7QUNoQmUsdUJBQVMsSUFBRztBQUN6QixTQUFPLE9BQU8sT0FBTSxZQUFZLFlBQVksS0FDeEMsS0FDQSxNQUFNLEtBQUssRUFBQztBQUNsQjs7O0FDSkEsa0JBQWlCO0FBQ2YsU0FBTyxDQUFDO0FBQ1Y7QUFFZSw2QkFBUyxVQUFVO0FBQ2hDLFNBQU8sWUFBWSxPQUFPLFNBQVEsV0FBVztBQUMzQyxXQUFPLEtBQUssaUJBQWlCLFFBQVE7QUFBQSxFQUN2QztBQUNGOzs7QUNKQSxrQkFBa0IsUUFBUTtBQUN4QixTQUFPLFdBQVc7QUFDaEIsUUFBSSxRQUFRLE9BQU8sTUFBTSxNQUFNLFNBQVM7QUFDeEMsV0FBTyxTQUFTLE9BQU8sQ0FBQyxJQUFJLGNBQU0sS0FBSztBQUFBLEVBQ3pDO0FBQ0Y7QUFFZSwyQkFBUyxRQUFRO0FBQzlCLE1BQUksT0FBTyxXQUFXO0FBQVksYUFBUyxTQUFTLE1BQU07QUFBQTtBQUNyRCxhQUFTLG9CQUFZLE1BQU07QUFFaEMsV0FBUyxTQUFTLEtBQUssU0FBUyxLQUFJLE9BQU8sUUFBUSxZQUFZLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFHLEVBQUUsR0FBRztBQUNsRyxhQUFTLFFBQVEsT0FBTyxJQUFJLElBQUksTUFBTSxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUc7QUFDckUsVUFBSSxPQUFPLE1BQU0sSUFBSTtBQUNuQixrQkFBVSxLQUFLLE9BQU8sS0FBSyxNQUFNLEtBQUssVUFBVSxHQUFHLEtBQUssQ0FBQztBQUN6RCxnQkFBUSxLQUFLLElBQUk7QUFBQSxNQUNuQjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsU0FBTyxJQUFJLFVBQVUsV0FBVyxPQUFPO0FBQ3pDOzs7QUN6QmUseUJBQVMsVUFBVTtBQUNoQyxTQUFPLFdBQVc7QUFDaEIsV0FBTyxLQUFLLFFBQVEsUUFBUTtBQUFBLEVBQzlCO0FBQ0Y7QUFFTyxzQkFBc0IsVUFBVTtBQUNyQyxTQUFPLFNBQVMsTUFBTTtBQUNwQixXQUFPLEtBQUssUUFBUSxRQUFRO0FBQUEsRUFDOUI7QUFDRjs7O0FDUkEsSUFBSSxPQUFPLE1BQU0sVUFBVTtBQUUzQixtQkFBbUIsT0FBTztBQUN4QixTQUFPLFdBQVc7QUFDaEIsV0FBTyxLQUFLLEtBQUssS0FBSyxVQUFVLEtBQUs7QUFBQSxFQUN2QztBQUNGO0FBRUEsc0JBQXNCO0FBQ3BCLFNBQU8sS0FBSztBQUNkO0FBRWUsNkJBQVMsT0FBTztBQUM3QixTQUFPLEtBQUssT0FBTyxTQUFTLE9BQU8sYUFDN0IsVUFBVSxPQUFPLFVBQVUsYUFBYSxRQUFRLGFBQWEsS0FBSyxDQUFDLENBQUM7QUFDNUU7OztBQ2ZBLElBQUksU0FBUyxNQUFNLFVBQVU7QUFFN0IscUJBQW9CO0FBQ2xCLFNBQU8sS0FBSztBQUNkO0FBRUEsd0JBQXdCLE9BQU87QUFDN0IsU0FBTyxXQUFXO0FBQ2hCLFdBQU8sT0FBTyxLQUFLLEtBQUssVUFBVSxLQUFLO0FBQUEsRUFDekM7QUFDRjtBQUVlLGdDQUFTLE9BQU87QUFDN0IsU0FBTyxLQUFLLFVBQVUsU0FBUyxPQUFPLFlBQ2hDLGVBQWUsT0FBTyxVQUFVLGFBQWEsUUFBUSxhQUFhLEtBQUssQ0FBQyxDQUFDO0FBQ2pGOzs7QUNkZSx3QkFBUyxPQUFPO0FBQzdCLE1BQUksT0FBTyxVQUFVO0FBQVksWUFBUSxnQkFBUSxLQUFLO0FBRXRELFdBQVMsU0FBUyxLQUFLLFNBQVMsS0FBSSxPQUFPLFFBQVEsWUFBWSxJQUFJLE1BQU0sRUFBQyxHQUFHLElBQUksR0FBRyxJQUFJLElBQUcsRUFBRSxHQUFHO0FBQzlGLGFBQVMsUUFBUSxPQUFPLElBQUksSUFBSSxNQUFNLFFBQVEsV0FBVyxVQUFVLEtBQUssQ0FBQyxHQUFHLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUc7QUFDbkcsVUFBSyxRQUFPLE1BQU0sT0FBTyxNQUFNLEtBQUssTUFBTSxLQUFLLFVBQVUsR0FBRyxLQUFLLEdBQUc7QUFDbEUsaUJBQVMsS0FBSyxJQUFJO0FBQUEsTUFDcEI7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU8sSUFBSSxVQUFVLFdBQVcsS0FBSyxRQUFRO0FBQy9DOzs7QUNmZSx3QkFBUyxTQUFRO0FBQzlCLFNBQU8sSUFBSSxNQUFNLFFBQU8sTUFBTTtBQUNoQzs7O0FDQ2UseUJBQVc7QUFDeEIsU0FBTyxJQUFJLFVBQVUsS0FBSyxVQUFVLEtBQUssUUFBUSxJQUFJLGNBQU0sR0FBRyxLQUFLLFFBQVE7QUFDN0U7QUFFTyxtQkFBbUIsUUFBUSxRQUFPO0FBQ3ZDLE9BQUssZ0JBQWdCLE9BQU87QUFDNUIsT0FBSyxlQUFlLE9BQU87QUFDM0IsT0FBSyxRQUFRO0FBQ2IsT0FBSyxVQUFVO0FBQ2YsT0FBSyxXQUFXO0FBQ2xCO0FBRUEsVUFBVSxZQUFZO0FBQUEsRUFDcEIsYUFBYTtBQUFBLEVBQ2IsYUFBYSxTQUFTLE9BQU87QUFBRSxXQUFPLEtBQUssUUFBUSxhQUFhLE9BQU8sS0FBSyxLQUFLO0FBQUEsRUFBRztBQUFBLEVBQ3BGLGNBQWMsU0FBUyxPQUFPLE1BQU07QUFBRSxXQUFPLEtBQUssUUFBUSxhQUFhLE9BQU8sSUFBSTtBQUFBLEVBQUc7QUFBQSxFQUNyRixlQUFlLFNBQVMsVUFBVTtBQUFFLFdBQU8sS0FBSyxRQUFRLGNBQWMsUUFBUTtBQUFBLEVBQUc7QUFBQSxFQUNqRixrQkFBa0IsU0FBUyxVQUFVO0FBQUUsV0FBTyxLQUFLLFFBQVEsaUJBQWlCLFFBQVE7QUFBQSxFQUFHO0FBQ3pGOzs7QUNyQmUsMEJBQVMsSUFBRztBQUN6QixTQUFPLFdBQVc7QUFDaEIsV0FBTztBQUFBLEVBQ1Q7QUFDRjs7O0FDQ0EsbUJBQW1CLFFBQVEsT0FBTyxPQUFPLFNBQVEsTUFBTSxNQUFNO0FBQzNELE1BQUksSUFBSSxHQUNKLE1BQ0EsY0FBYyxNQUFNLFFBQ3BCLGFBQWEsS0FBSztBQUt0QixTQUFPLElBQUksWUFBWSxFQUFFLEdBQUc7QUFDMUIsUUFBSSxPQUFPLE1BQU0sSUFBSTtBQUNuQixXQUFLLFdBQVcsS0FBSztBQUNyQixjQUFPLEtBQUs7QUFBQSxJQUNkLE9BQU87QUFDTCxZQUFNLEtBQUssSUFBSSxVQUFVLFFBQVEsS0FBSyxFQUFFO0FBQUEsSUFDMUM7QUFBQSxFQUNGO0FBR0EsU0FBTyxJQUFJLGFBQWEsRUFBRSxHQUFHO0FBQzNCLFFBQUksT0FBTyxNQUFNLElBQUk7QUFDbkIsV0FBSyxLQUFLO0FBQUEsSUFDWjtBQUFBLEVBQ0Y7QUFDRjtBQUVBLGlCQUFpQixRQUFRLE9BQU8sT0FBTyxTQUFRLE1BQU0sTUFBTSxLQUFLO0FBQzlELE1BQUksR0FDQSxNQUNBLGlCQUFpQixvQkFBSSxPQUNyQixjQUFjLE1BQU0sUUFDcEIsYUFBYSxLQUFLLFFBQ2xCLFlBQVksSUFBSSxNQUFNLFdBQVcsR0FDakM7QUFJSixPQUFLLElBQUksR0FBRyxJQUFJLGFBQWEsRUFBRSxHQUFHO0FBQ2hDLFFBQUksT0FBTyxNQUFNLElBQUk7QUFDbkIsZ0JBQVUsS0FBSyxXQUFXLElBQUksS0FBSyxNQUFNLEtBQUssVUFBVSxHQUFHLEtBQUssSUFBSTtBQUNwRSxVQUFJLGVBQWUsSUFBSSxRQUFRLEdBQUc7QUFDaEMsYUFBSyxLQUFLO0FBQUEsTUFDWixPQUFPO0FBQ0wsdUJBQWUsSUFBSSxVQUFVLElBQUk7QUFBQSxNQUNuQztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBS0EsT0FBSyxJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQUUsR0FBRztBQUMvQixlQUFXLElBQUksS0FBSyxRQUFRLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSTtBQUNoRCxRQUFJLE9BQU8sZUFBZSxJQUFJLFFBQVEsR0FBRztBQUN2QyxjQUFPLEtBQUs7QUFDWixXQUFLLFdBQVcsS0FBSztBQUNyQixxQkFBZSxPQUFPLFFBQVE7QUFBQSxJQUNoQyxPQUFPO0FBQ0wsWUFBTSxLQUFLLElBQUksVUFBVSxRQUFRLEtBQUssRUFBRTtBQUFBLElBQzFDO0FBQUEsRUFDRjtBQUdBLE9BQUssSUFBSSxHQUFHLElBQUksYUFBYSxFQUFFLEdBQUc7QUFDaEMsUUFBSyxRQUFPLE1BQU0sT0FBUSxlQUFlLElBQUksVUFBVSxFQUFFLE1BQU0sTUFBTztBQUNwRSxXQUFLLEtBQUs7QUFBQSxJQUNaO0FBQUEsRUFDRjtBQUNGO0FBRUEsZUFBZSxNQUFNO0FBQ25CLFNBQU8sS0FBSztBQUNkO0FBRWUsc0JBQVMsT0FBTyxLQUFLO0FBQ2xDLE1BQUksQ0FBQyxVQUFVO0FBQVEsV0FBTyxNQUFNLEtBQUssTUFBTSxLQUFLO0FBRXBELE1BQUksT0FBTyxNQUFNLFVBQVUsV0FDdkIsVUFBVSxLQUFLLFVBQ2YsU0FBUyxLQUFLO0FBRWxCLE1BQUksT0FBTyxVQUFVO0FBQVksWUFBUSxpQkFBUyxLQUFLO0FBRXZELFdBQVMsS0FBSSxPQUFPLFFBQVEsVUFBUyxJQUFJLE1BQU0sRUFBQyxHQUFHLFFBQVEsSUFBSSxNQUFNLEVBQUMsR0FBRyxPQUFPLElBQUksTUFBTSxFQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBRyxFQUFFLEdBQUc7QUFDL0csUUFBSSxTQUFTLFFBQVEsSUFDakIsUUFBUSxPQUFPLElBQ2YsY0FBYyxNQUFNLFFBQ3BCLE9BQU8sY0FBTSxNQUFNLEtBQUssUUFBUSxVQUFVLE9BQU8sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUN0RSxhQUFhLEtBQUssUUFDbEIsYUFBYSxNQUFNLEtBQUssSUFBSSxNQUFNLFVBQVUsR0FDNUMsY0FBYyxRQUFPLEtBQUssSUFBSSxNQUFNLFVBQVUsR0FDOUMsWUFBWSxLQUFLLEtBQUssSUFBSSxNQUFNLFdBQVc7QUFFL0MsU0FBSyxRQUFRLE9BQU8sWUFBWSxhQUFhLFdBQVcsTUFBTSxHQUFHO0FBS2pFLGFBQVMsS0FBSyxHQUFHLEtBQUssR0FBRyxVQUFVLE1BQU0sS0FBSyxZQUFZLEVBQUUsSUFBSTtBQUM5RCxVQUFJLFdBQVcsV0FBVyxLQUFLO0FBQzdCLFlBQUksTUFBTTtBQUFJLGVBQUssS0FBSztBQUN4QixlQUFPLENBQUUsUUFBTyxZQUFZLFFBQVEsRUFBRSxLQUFLO0FBQVc7QUFDdEQsaUJBQVMsUUFBUSxRQUFRO0FBQUEsTUFDM0I7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFlBQVMsSUFBSSxVQUFVLFNBQVEsT0FBTztBQUN0QyxVQUFPLFNBQVM7QUFDaEIsVUFBTyxRQUFRO0FBQ2YsU0FBTztBQUNUOzs7QUNqSGUsd0JBQVc7QUFDeEIsU0FBTyxJQUFJLFVBQVUsS0FBSyxTQUFTLEtBQUssUUFBUSxJQUFJLGNBQU0sR0FBRyxLQUFLLFFBQVE7QUFDNUU7OztBQ0xlLHNCQUFTLFNBQVMsVUFBVSxRQUFRO0FBQ2pELE1BQUksUUFBUSxLQUFLLE1BQU0sR0FBRyxVQUFTLE1BQU0sT0FBTyxLQUFLLEtBQUs7QUFDMUQsVUFBUSxPQUFPLFlBQVksYUFBYSxRQUFRLEtBQUssSUFBSSxNQUFNLE9BQU8sVUFBVSxFQUFFO0FBQ2xGLE1BQUksWUFBWTtBQUFNLGNBQVMsU0FBUyxPQUFNO0FBQzlDLE1BQUksVUFBVTtBQUFNLFNBQUssT0FBTztBQUFBO0FBQVEsV0FBTyxJQUFJO0FBQ25ELFNBQU8sU0FBUyxVQUFTLE1BQU0sTUFBTSxPQUFNLEVBQUUsTUFBTSxJQUFJO0FBQ3pEOzs7QUNKZSx1QkFBUyxZQUFXO0FBQ2pDLE1BQUksQ0FBRSx1QkFBcUI7QUFBWSxVQUFNLElBQUksTUFBTSxlQUFlO0FBRXRFLFdBQVMsVUFBVSxLQUFLLFNBQVMsVUFBVSxXQUFVLFNBQVMsS0FBSyxRQUFRLFFBQVEsS0FBSyxRQUFRLFFBQVEsS0FBSSxLQUFLLElBQUksSUFBSSxFQUFFLEdBQUcsU0FBUyxJQUFJLE1BQU0sRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUcsRUFBRSxHQUFHO0FBQ3ZLLGFBQVMsU0FBUyxRQUFRLElBQUksU0FBUyxRQUFRLElBQUksSUFBSSxPQUFPLFFBQVEsUUFBUSxPQUFPLEtBQUssSUFBSSxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHO0FBQy9ILFVBQUksT0FBTyxPQUFPLE1BQU0sT0FBTyxJQUFJO0FBQ2pDLGNBQU0sS0FBSztBQUFBLE1BQ2I7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU8sSUFBSSxJQUFJLEVBQUUsR0FBRztBQUNsQixXQUFPLEtBQUssUUFBUTtBQUFBLEVBQ3RCO0FBRUEsU0FBTyxJQUFJLFVBQVUsUUFBUSxLQUFLLFFBQVE7QUFDNUM7OztBQ2xCZSx5QkFBVztBQUV4QixXQUFTLFNBQVMsS0FBSyxTQUFTLElBQUksSUFBSSxLQUFJLE9BQU8sUUFBUSxFQUFFLElBQUksTUFBSTtBQUNuRSxhQUFTLFFBQVEsT0FBTyxJQUFJLElBQUksTUFBTSxTQUFTLEdBQUcsT0FBTyxNQUFNLElBQUksTUFBTSxFQUFFLEtBQUssS0FBSTtBQUNsRixVQUFJLE9BQU8sTUFBTSxJQUFJO0FBQ25CLFlBQUksUUFBUSxLQUFLLHdCQUF3QixJQUFJLElBQUk7QUFBRyxlQUFLLFdBQVcsYUFBYSxNQUFNLElBQUk7QUFDM0YsZUFBTztBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDs7O0FDVmUsc0JBQVMsU0FBUztBQUMvQixNQUFJLENBQUM7QUFBUyxjQUFVO0FBRXhCLHVCQUFxQixJQUFHLEdBQUc7QUFDekIsV0FBTyxNQUFLLElBQUksUUFBUSxHQUFFLFVBQVUsRUFBRSxRQUFRLElBQUksQ0FBQyxLQUFJLENBQUM7QUFBQSxFQUMxRDtBQUVBLFdBQVMsU0FBUyxLQUFLLFNBQVMsS0FBSSxPQUFPLFFBQVEsYUFBYSxJQUFJLE1BQU0sRUFBQyxHQUFHLElBQUksR0FBRyxJQUFJLElBQUcsRUFBRSxHQUFHO0FBQy9GLGFBQVMsUUFBUSxPQUFPLElBQUksSUFBSSxNQUFNLFFBQVEsWUFBWSxXQUFXLEtBQUssSUFBSSxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHO0FBQy9HLFVBQUksT0FBTyxNQUFNLElBQUk7QUFDbkIsa0JBQVUsS0FBSztBQUFBLE1BQ2pCO0FBQUEsSUFDRjtBQUNBLGNBQVUsS0FBSyxXQUFXO0FBQUEsRUFDNUI7QUFFQSxTQUFPLElBQUksVUFBVSxZQUFZLEtBQUssUUFBUSxFQUFFLE1BQU07QUFDeEQ7QUFFQSxtQkFBbUIsSUFBRyxHQUFHO0FBQ3ZCLFNBQU8sS0FBSSxJQUFJLEtBQUssS0FBSSxJQUFJLElBQUksTUFBSyxJQUFJLElBQUk7QUFDL0M7OztBQ3ZCZSx3QkFBVztBQUN4QixNQUFJLFdBQVcsVUFBVTtBQUN6QixZQUFVLEtBQUs7QUFDZixXQUFTLE1BQU0sTUFBTSxTQUFTO0FBQzlCLFNBQU87QUFDVDs7O0FDTGUseUJBQVc7QUFDeEIsU0FBTyxNQUFNLEtBQUssSUFBSTtBQUN4Qjs7O0FDRmUsd0JBQVc7QUFFeEIsV0FBUyxTQUFTLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSSxPQUFPLFFBQVEsSUFBSSxJQUFHLEVBQUUsR0FBRztBQUNwRSxhQUFTLFFBQVEsT0FBTyxJQUFJLElBQUksR0FBRyxJQUFJLE1BQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxHQUFHO0FBQy9ELFVBQUksT0FBTyxNQUFNO0FBQ2pCLFVBQUk7QUFBTSxlQUFPO0FBQUEsSUFDbkI7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUOzs7QUNWZSx3QkFBVztBQUN4QixNQUFJLE9BQU87QUFDWCxhQUFXLFFBQVE7QUFBTSxNQUFFO0FBQzNCLFNBQU87QUFDVDs7O0FDSmUseUJBQVc7QUFDeEIsU0FBTyxDQUFDLEtBQUssS0FBSztBQUNwQjs7O0FDRmUsc0JBQVMsVUFBVTtBQUVoQyxXQUFTLFNBQVMsS0FBSyxTQUFTLElBQUksR0FBRyxLQUFJLE9BQU8sUUFBUSxJQUFJLElBQUcsRUFBRSxHQUFHO0FBQ3BFLGFBQVMsUUFBUSxPQUFPLElBQUksSUFBSSxHQUFHLElBQUksTUFBTSxRQUFRLE1BQU0sSUFBSSxHQUFHLEVBQUUsR0FBRztBQUNyRSxVQUFJLE9BQU8sTUFBTTtBQUFJLGlCQUFTLEtBQUssTUFBTSxLQUFLLFVBQVUsR0FBRyxLQUFLO0FBQUEsSUFDbEU7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUOzs7QUNQQSxvQkFBb0IsTUFBTTtBQUN4QixTQUFPLFdBQVc7QUFDaEIsU0FBSyxnQkFBZ0IsSUFBSTtBQUFBLEVBQzNCO0FBQ0Y7QUFFQSxzQkFBc0IsVUFBVTtBQUM5QixTQUFPLFdBQVc7QUFDaEIsU0FBSyxrQkFBa0IsU0FBUyxPQUFPLFNBQVMsS0FBSztBQUFBLEVBQ3ZEO0FBQ0Y7QUFFQSxzQkFBc0IsTUFBTSxPQUFPO0FBQ2pDLFNBQU8sV0FBVztBQUNoQixTQUFLLGFBQWEsTUFBTSxLQUFLO0FBQUEsRUFDL0I7QUFDRjtBQUVBLHdCQUF3QixVQUFVLE9BQU87QUFDdkMsU0FBTyxXQUFXO0FBQ2hCLFNBQUssZUFBZSxTQUFTLE9BQU8sU0FBUyxPQUFPLEtBQUs7QUFBQSxFQUMzRDtBQUNGO0FBRUEsc0JBQXNCLE1BQU0sT0FBTztBQUNqQyxTQUFPLFdBQVc7QUFDaEIsUUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLFNBQVM7QUFDbkMsUUFBSSxLQUFLO0FBQU0sV0FBSyxnQkFBZ0IsSUFBSTtBQUFBO0FBQ25DLFdBQUssYUFBYSxNQUFNLENBQUM7QUFBQSxFQUNoQztBQUNGO0FBRUEsd0JBQXdCLFVBQVUsT0FBTztBQUN2QyxTQUFPLFdBQVc7QUFDaEIsUUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLFNBQVM7QUFDbkMsUUFBSSxLQUFLO0FBQU0sV0FBSyxrQkFBa0IsU0FBUyxPQUFPLFNBQVMsS0FBSztBQUFBO0FBQy9ELFdBQUssZUFBZSxTQUFTLE9BQU8sU0FBUyxPQUFPLENBQUM7QUFBQSxFQUM1RDtBQUNGO0FBRWUsc0JBQVMsTUFBTSxPQUFPO0FBQ25DLE1BQUksV0FBVyxrQkFBVSxJQUFJO0FBRTdCLE1BQUksVUFBVSxTQUFTLEdBQUc7QUFDeEIsUUFBSSxPQUFPLEtBQUssS0FBSztBQUNyQixXQUFPLFNBQVMsUUFDVixLQUFLLGVBQWUsU0FBUyxPQUFPLFNBQVMsS0FBSyxJQUNsRCxLQUFLLGFBQWEsUUFBUTtBQUFBLEVBQ2xDO0FBRUEsU0FBTyxLQUFLLEtBQU0sVUFBUyxPQUNwQixTQUFTLFFBQVEsZUFBZSxhQUFlLE9BQU8sVUFBVSxhQUNoRSxTQUFTLFFBQVEsaUJBQWlCLGVBQ2xDLFNBQVMsUUFBUSxpQkFBaUIsY0FBZ0IsVUFBVSxLQUFLLENBQUM7QUFDM0U7OztBQ3hEZSx3QkFBUyxNQUFNO0FBQzVCLFNBQVEsS0FBSyxpQkFBaUIsS0FBSyxjQUFjLGVBQ3pDLEtBQUssWUFBWSxRQUNsQixLQUFLO0FBQ2Q7OztBQ0ZBLHFCQUFxQixNQUFNO0FBQ3pCLFNBQU8sV0FBVztBQUNoQixTQUFLLE1BQU0sZUFBZSxJQUFJO0FBQUEsRUFDaEM7QUFDRjtBQUVBLHVCQUF1QixNQUFNLE9BQU8sVUFBVTtBQUM1QyxTQUFPLFdBQVc7QUFDaEIsU0FBSyxNQUFNLFlBQVksTUFBTSxPQUFPLFFBQVE7QUFBQSxFQUM5QztBQUNGO0FBRUEsdUJBQXVCLE1BQU0sT0FBTyxVQUFVO0FBQzVDLFNBQU8sV0FBVztBQUNoQixRQUFJLElBQUksTUFBTSxNQUFNLE1BQU0sU0FBUztBQUNuQyxRQUFJLEtBQUs7QUFBTSxXQUFLLE1BQU0sZUFBZSxJQUFJO0FBQUE7QUFDeEMsV0FBSyxNQUFNLFlBQVksTUFBTSxHQUFHLFFBQVE7QUFBQSxFQUMvQztBQUNGO0FBRWUsdUJBQVMsTUFBTSxPQUFPLFVBQVU7QUFDN0MsU0FBTyxVQUFVLFNBQVMsSUFDcEIsS0FBSyxLQUFNLFVBQVMsT0FDZCxjQUFjLE9BQU8sVUFBVSxhQUMvQixnQkFDQSxlQUFlLE1BQU0sT0FBTyxZQUFZLE9BQU8sS0FBSyxRQUFRLENBQUMsSUFDbkUsV0FBVyxLQUFLLEtBQUssR0FBRyxJQUFJO0FBQ3BDO0FBRU8sb0JBQW9CLE1BQU0sTUFBTTtBQUNyQyxTQUFPLEtBQUssTUFBTSxpQkFBaUIsSUFBSSxLQUNoQyxlQUFZLElBQUksRUFBRSxpQkFBaUIsTUFBTSxJQUFJLEVBQUUsaUJBQWlCLElBQUk7QUFDN0U7OztBQ2xDQSx3QkFBd0IsTUFBTTtBQUM1QixTQUFPLFdBQVc7QUFDaEIsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUNGO0FBRUEsMEJBQTBCLE1BQU0sT0FBTztBQUNyQyxTQUFPLFdBQVc7QUFDaEIsU0FBSyxRQUFRO0FBQUEsRUFDZjtBQUNGO0FBRUEsMEJBQTBCLE1BQU0sT0FBTztBQUNyQyxTQUFPLFdBQVc7QUFDaEIsUUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLFNBQVM7QUFDbkMsUUFBSSxLQUFLO0FBQU0sYUFBTyxLQUFLO0FBQUE7QUFDdEIsV0FBSyxRQUFRO0FBQUEsRUFDcEI7QUFDRjtBQUVlLDBCQUFTLE1BQU0sT0FBTztBQUNuQyxTQUFPLFVBQVUsU0FBUyxJQUNwQixLQUFLLEtBQU0sVUFBUyxPQUNoQixpQkFBaUIsT0FBTyxVQUFVLGFBQ2xDLG1CQUNBLGtCQUFrQixNQUFNLEtBQUssQ0FBQyxJQUNsQyxLQUFLLEtBQUssRUFBRTtBQUNwQjs7O0FDM0JBLG9CQUFvQixRQUFRO0FBQzFCLFNBQU8sT0FBTyxLQUFLLEVBQUUsTUFBTSxPQUFPO0FBQ3BDO0FBRUEsbUJBQW1CLE1BQU07QUFDdkIsU0FBTyxLQUFLLGFBQWEsSUFBSSxVQUFVLElBQUk7QUFDN0M7QUFFQSxtQkFBbUIsTUFBTTtBQUN2QixPQUFLLFFBQVE7QUFDYixPQUFLLFNBQVMsV0FBVyxLQUFLLGFBQWEsT0FBTyxLQUFLLEVBQUU7QUFDM0Q7QUFFQSxVQUFVLFlBQVk7QUFBQSxFQUNwQixLQUFLLFNBQVMsTUFBTTtBQUNsQixRQUFJLElBQUksS0FBSyxPQUFPLFFBQVEsSUFBSTtBQUNoQyxRQUFJLElBQUksR0FBRztBQUNULFdBQUssT0FBTyxLQUFLLElBQUk7QUFDckIsV0FBSyxNQUFNLGFBQWEsU0FBUyxLQUFLLE9BQU8sS0FBSyxHQUFHLENBQUM7QUFBQSxJQUN4RDtBQUFBLEVBQ0Y7QUFBQSxFQUNBLFFBQVEsU0FBUyxNQUFNO0FBQ3JCLFFBQUksSUFBSSxLQUFLLE9BQU8sUUFBUSxJQUFJO0FBQ2hDLFFBQUksS0FBSyxHQUFHO0FBQ1YsV0FBSyxPQUFPLE9BQU8sR0FBRyxDQUFDO0FBQ3ZCLFdBQUssTUFBTSxhQUFhLFNBQVMsS0FBSyxPQUFPLEtBQUssR0FBRyxDQUFDO0FBQUEsSUFDeEQ7QUFBQSxFQUNGO0FBQUEsRUFDQSxVQUFVLFNBQVMsTUFBTTtBQUN2QixXQUFPLEtBQUssT0FBTyxRQUFRLElBQUksS0FBSztBQUFBLEVBQ3RDO0FBQ0Y7QUFFQSxvQkFBb0IsTUFBTSxPQUFPO0FBQy9CLE1BQUksT0FBTyxVQUFVLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNO0FBQzlDLFNBQU8sRUFBRSxJQUFJO0FBQUcsU0FBSyxJQUFJLE1BQU0sRUFBRTtBQUNuQztBQUVBLHVCQUF1QixNQUFNLE9BQU87QUFDbEMsTUFBSSxPQUFPLFVBQVUsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLE1BQU07QUFDOUMsU0FBTyxFQUFFLElBQUk7QUFBRyxTQUFLLE9BQU8sTUFBTSxFQUFFO0FBQ3RDO0FBRUEscUJBQXFCLE9BQU87QUFDMUIsU0FBTyxXQUFXO0FBQ2hCLGVBQVcsTUFBTSxLQUFLO0FBQUEsRUFDeEI7QUFDRjtBQUVBLHNCQUFzQixPQUFPO0FBQzNCLFNBQU8sV0FBVztBQUNoQixrQkFBYyxNQUFNLEtBQUs7QUFBQSxFQUMzQjtBQUNGO0FBRUEseUJBQXlCLE9BQU8sT0FBTztBQUNyQyxTQUFPLFdBQVc7QUFDaEIsSUFBQyxPQUFNLE1BQU0sTUFBTSxTQUFTLElBQUksYUFBYSxlQUFlLE1BQU0sS0FBSztBQUFBLEVBQ3pFO0FBQ0Y7QUFFZSx5QkFBUyxNQUFNLE9BQU87QUFDbkMsTUFBSSxRQUFRLFdBQVcsT0FBTyxFQUFFO0FBRWhDLE1BQUksVUFBVSxTQUFTLEdBQUc7QUFDeEIsUUFBSSxPQUFPLFVBQVUsS0FBSyxLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksSUFBSSxNQUFNO0FBQ3JELFdBQU8sRUFBRSxJQUFJO0FBQUcsVUFBSSxDQUFDLEtBQUssU0FBUyxNQUFNLEVBQUU7QUFBRyxlQUFPO0FBQ3JELFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxLQUFLLEtBQU0sUUFBTyxVQUFVLGFBQzdCLGtCQUFrQixRQUNsQixjQUNBLGNBQWMsT0FBTyxLQUFLLENBQUM7QUFDbkM7OztBQzFFQSxzQkFBc0I7QUFDcEIsT0FBSyxjQUFjO0FBQ3JCO0FBRUEsc0JBQXNCLE9BQU87QUFDM0IsU0FBTyxXQUFXO0FBQ2hCLFNBQUssY0FBYztBQUFBLEVBQ3JCO0FBQ0Y7QUFFQSxzQkFBc0IsT0FBTztBQUMzQixTQUFPLFdBQVc7QUFDaEIsUUFBSSxJQUFJLE1BQU0sTUFBTSxNQUFNLFNBQVM7QUFDbkMsU0FBSyxjQUFjLEtBQUssT0FBTyxLQUFLO0FBQUEsRUFDdEM7QUFDRjtBQUVlLHNCQUFTLE9BQU87QUFDN0IsU0FBTyxVQUFVLFNBQ1gsS0FBSyxLQUFLLFNBQVMsT0FDZixhQUFjLFFBQU8sVUFBVSxhQUMvQixlQUNBLGNBQWMsS0FBSyxDQUFDLElBQ3hCLEtBQUssS0FBSyxFQUFFO0FBQ3BCOzs7QUN4QkEsc0JBQXNCO0FBQ3BCLE9BQUssWUFBWTtBQUNuQjtBQUVBLHNCQUFzQixPQUFPO0FBQzNCLFNBQU8sV0FBVztBQUNoQixTQUFLLFlBQVk7QUFBQSxFQUNuQjtBQUNGO0FBRUEsc0JBQXNCLE9BQU87QUFDM0IsU0FBTyxXQUFXO0FBQ2hCLFFBQUksSUFBSSxNQUFNLE1BQU0sTUFBTSxTQUFTO0FBQ25DLFNBQUssWUFBWSxLQUFLLE9BQU8sS0FBSztBQUFBLEVBQ3BDO0FBQ0Y7QUFFZSxzQkFBUyxPQUFPO0FBQzdCLFNBQU8sVUFBVSxTQUNYLEtBQUssS0FBSyxTQUFTLE9BQ2YsYUFBYyxRQUFPLFVBQVUsYUFDL0IsZUFDQSxjQUFjLEtBQUssQ0FBQyxJQUN4QixLQUFLLEtBQUssRUFBRTtBQUNwQjs7O0FDeEJBLGlCQUFpQjtBQUNmLE1BQUksS0FBSztBQUFhLFNBQUssV0FBVyxZQUFZLElBQUk7QUFDeEQ7QUFFZSx5QkFBVztBQUN4QixTQUFPLEtBQUssS0FBSyxLQUFLO0FBQ3hCOzs7QUNOQSxpQkFBaUI7QUFDZixNQUFJLEtBQUs7QUFBaUIsU0FBSyxXQUFXLGFBQWEsTUFBTSxLQUFLLFdBQVcsVUFBVTtBQUN6RjtBQUVlLHlCQUFXO0FBQ3hCLFNBQU8sS0FBSyxLQUFLLEtBQUs7QUFDeEI7OztBQ0plLHdCQUFTLE1BQU07QUFDNUIsTUFBSSxVQUFTLE9BQU8sU0FBUyxhQUFhLE9BQU8sZ0JBQVEsSUFBSTtBQUM3RCxTQUFPLEtBQUssT0FBTyxXQUFXO0FBQzVCLFdBQU8sS0FBSyxZQUFZLFFBQU8sTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUFBLEVBQ3ZELENBQUM7QUFDSDs7O0FDSkEsd0JBQXdCO0FBQ3RCLFNBQU87QUFDVDtBQUVlLHdCQUFTLE1BQU0sUUFBUTtBQUNwQyxNQUFJLFVBQVMsT0FBTyxTQUFTLGFBQWEsT0FBTyxnQkFBUSxJQUFJLEdBQ3pELFNBQVMsVUFBVSxPQUFPLGVBQWUsT0FBTyxXQUFXLGFBQWEsU0FBUyxpQkFBUyxNQUFNO0FBQ3BHLFNBQU8sS0FBSyxPQUFPLFdBQVc7QUFDNUIsV0FBTyxLQUFLLGFBQWEsUUFBTyxNQUFNLE1BQU0sU0FBUyxHQUFHLE9BQU8sTUFBTSxNQUFNLFNBQVMsS0FBSyxJQUFJO0FBQUEsRUFDL0YsQ0FBQztBQUNIOzs7QUNiQSxrQkFBa0I7QUFDaEIsTUFBSSxTQUFTLEtBQUs7QUFDbEIsTUFBSTtBQUFRLFdBQU8sWUFBWSxJQUFJO0FBQ3JDO0FBRWUsMEJBQVc7QUFDeEIsU0FBTyxLQUFLLEtBQUssTUFBTTtBQUN6Qjs7O0FDUEEsa0NBQWtDO0FBQ2hDLE1BQUksUUFBUSxLQUFLLFVBQVUsS0FBSyxHQUFHLFNBQVMsS0FBSztBQUNqRCxTQUFPLFNBQVMsT0FBTyxhQUFhLE9BQU8sS0FBSyxXQUFXLElBQUk7QUFDakU7QUFFQSwrQkFBK0I7QUFDN0IsTUFBSSxRQUFRLEtBQUssVUFBVSxJQUFJLEdBQUcsU0FBUyxLQUFLO0FBQ2hELFNBQU8sU0FBUyxPQUFPLGFBQWEsT0FBTyxLQUFLLFdBQVcsSUFBSTtBQUNqRTtBQUVlLHVCQUFTLE1BQU07QUFDNUIsU0FBTyxLQUFLLE9BQU8sT0FBTyxzQkFBc0Isc0JBQXNCO0FBQ3hFOzs7QUNaZSx1QkFBUyxPQUFPO0FBQzdCLFNBQU8sVUFBVSxTQUNYLEtBQUssU0FBUyxZQUFZLEtBQUssSUFDL0IsS0FBSyxLQUFLLEVBQUU7QUFDcEI7OztBQ0pBLHlCQUF5QixVQUFVO0FBQ2pDLFNBQU8sU0FBUyxPQUFPO0FBQ3JCLGFBQVMsS0FBSyxNQUFNLE9BQU8sS0FBSyxRQUFRO0FBQUEsRUFDMUM7QUFDRjtBQUVBLHlCQUF3QixXQUFXO0FBQ2pDLFNBQU8sVUFBVSxLQUFLLEVBQUUsTUFBTSxPQUFPLEVBQUUsSUFBSSxTQUFTLEdBQUc7QUFDckQsUUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLFFBQVEsR0FBRztBQUNoQyxRQUFJLEtBQUs7QUFBRyxhQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFDbkQsV0FBTyxFQUFDLE1BQU0sR0FBRyxLQUFVO0FBQUEsRUFDN0IsQ0FBQztBQUNIO0FBRUEsa0JBQWtCLFVBQVU7QUFDMUIsU0FBTyxXQUFXO0FBQ2hCLFFBQUksS0FBSyxLQUFLO0FBQ2QsUUFBSSxDQUFDO0FBQUk7QUFDVCxhQUFTLElBQUksR0FBRyxJQUFJLElBQUksS0FBSSxHQUFHLFFBQVEsR0FBRyxJQUFJLElBQUcsRUFBRSxHQUFHO0FBQ3BELFVBQUksSUFBSSxHQUFHLElBQUssRUFBQyxTQUFTLFFBQVEsRUFBRSxTQUFTLFNBQVMsU0FBUyxFQUFFLFNBQVMsU0FBUyxNQUFNO0FBQ3ZGLGFBQUssb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPO0FBQUEsTUFDeEQsT0FBTztBQUNMLFdBQUcsRUFBRSxLQUFLO0FBQUEsTUFDWjtBQUFBLElBQ0Y7QUFDQSxRQUFJLEVBQUU7QUFBRyxTQUFHLFNBQVM7QUFBQTtBQUNoQixhQUFPLEtBQUs7QUFBQSxFQUNuQjtBQUNGO0FBRUEsZUFBZSxVQUFVLE9BQU8sU0FBUztBQUN2QyxTQUFPLFdBQVc7QUFDaEIsUUFBSSxLQUFLLEtBQUssTUFBTSxHQUFHLFdBQVcsZ0JBQWdCLEtBQUs7QUFDdkQsUUFBSTtBQUFJLGVBQVMsSUFBSSxHQUFHLEtBQUksR0FBRyxRQUFRLElBQUksSUFBRyxFQUFFLEdBQUc7QUFDakQsWUFBSyxLQUFJLEdBQUcsSUFBSSxTQUFTLFNBQVMsUUFBUSxFQUFFLFNBQVMsU0FBUyxNQUFNO0FBQ2xFLGVBQUssb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPO0FBQ3RELGVBQUssaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFdBQVcsVUFBVSxFQUFFLFVBQVUsT0FBTztBQUN4RSxZQUFFLFFBQVE7QUFDVjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQ0EsU0FBSyxpQkFBaUIsU0FBUyxNQUFNLFVBQVUsT0FBTztBQUN0RCxRQUFJLEVBQUMsTUFBTSxTQUFTLE1BQU0sTUFBTSxTQUFTLE1BQU0sT0FBYyxVQUFvQixRQUFnQjtBQUNqRyxRQUFJLENBQUM7QUFBSSxXQUFLLE9BQU8sQ0FBQyxDQUFDO0FBQUE7QUFDbEIsU0FBRyxLQUFLLENBQUM7QUFBQSxFQUNoQjtBQUNGO0FBRWUsb0JBQVMsVUFBVSxPQUFPLFNBQVM7QUFDaEQsTUFBSSxZQUFZLGdCQUFlLFdBQVcsRUFBRSxHQUFHLEdBQUcsSUFBSSxVQUFVLFFBQVE7QUFFeEUsTUFBSSxVQUFVLFNBQVMsR0FBRztBQUN4QixRQUFJLEtBQUssS0FBSyxLQUFLLEVBQUU7QUFDckIsUUFBSTtBQUFJLGVBQVMsSUFBSSxHQUFHLEtBQUksR0FBRyxRQUFRLEdBQUcsSUFBSSxJQUFHLEVBQUUsR0FBRztBQUNwRCxhQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHO0FBQ2pDLGNBQUssS0FBSSxVQUFVLElBQUksU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTTtBQUMzRCxtQkFBTyxFQUFFO0FBQUEsVUFDWDtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQ0E7QUFBQSxFQUNGO0FBRUEsT0FBSyxRQUFRLFFBQVE7QUFDckIsT0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUU7QUFBRyxTQUFLLEtBQUssR0FBRyxVQUFVLElBQUksT0FBTyxPQUFPLENBQUM7QUFDbEUsU0FBTztBQUNUOzs7QUNoRUEsdUJBQXVCLE1BQU0sT0FBTSxRQUFRO0FBQ3pDLE1BQUksVUFBUyxlQUFZLElBQUksR0FDekIsUUFBUSxRQUFPO0FBRW5CLE1BQUksT0FBTyxVQUFVLFlBQVk7QUFDL0IsWUFBUSxJQUFJLE1BQU0sT0FBTSxNQUFNO0FBQUEsRUFDaEMsT0FBTztBQUNMLFlBQVEsUUFBTyxTQUFTLFlBQVksT0FBTztBQUMzQyxRQUFJO0FBQVEsWUFBTSxVQUFVLE9BQU0sT0FBTyxTQUFTLE9BQU8sVUFBVSxHQUFHLE1BQU0sU0FBUyxPQUFPO0FBQUE7QUFDdkYsWUFBTSxVQUFVLE9BQU0sT0FBTyxLQUFLO0FBQUEsRUFDekM7QUFFQSxPQUFLLGNBQWMsS0FBSztBQUMxQjtBQUVBLDBCQUEwQixPQUFNLFFBQVE7QUFDdEMsU0FBTyxXQUFXO0FBQ2hCLFdBQU8sY0FBYyxNQUFNLE9BQU0sTUFBTTtBQUFBLEVBQ3pDO0FBQ0Y7QUFFQSwwQkFBMEIsT0FBTSxRQUFRO0FBQ3RDLFNBQU8sV0FBVztBQUNoQixXQUFPLGNBQWMsTUFBTSxPQUFNLE9BQU8sTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUFBLEVBQ2hFO0FBQ0Y7QUFFZSwyQkFBUyxPQUFNLFFBQVE7QUFDcEMsU0FBTyxLQUFLLEtBQU0sUUFBTyxXQUFXLGFBQzlCLG1CQUNBLGtCQUFrQixPQUFNLE1BQU0sQ0FBQztBQUN2Qzs7O0FDakNlLDZCQUFZO0FBQ3pCLFdBQVMsU0FBUyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUksT0FBTyxRQUFRLElBQUksSUFBRyxFQUFFLEdBQUc7QUFDcEUsYUFBUyxRQUFRLE9BQU8sSUFBSSxJQUFJLEdBQUcsSUFBSSxNQUFNLFFBQVEsTUFBTSxJQUFJLEdBQUcsRUFBRSxHQUFHO0FBQ3JFLFVBQUksT0FBTyxNQUFNO0FBQUksY0FBTTtBQUFBLElBQzdCO0FBQUEsRUFDRjtBQUNGOzs7QUM2Qk8sSUFBSSxPQUFPLENBQUMsSUFBSTtBQUVoQixtQkFBbUIsUUFBUSxTQUFTO0FBQ3pDLE9BQUssVUFBVTtBQUNmLE9BQUssV0FBVztBQUNsQjtBQUVBLHFCQUFxQjtBQUNuQixTQUFPLElBQUksVUFBVSxDQUFDLENBQUMsU0FBUyxlQUFlLENBQUMsR0FBRyxJQUFJO0FBQ3pEO0FBRUEsK0JBQStCO0FBQzdCLFNBQU87QUFDVDtBQUVBLFVBQVUsWUFBWSxVQUFVLFlBQVk7QUFBQSxFQUMxQyxhQUFhO0FBQUEsRUFDYixRQUFRO0FBQUEsRUFDUixXQUFXO0FBQUEsRUFDWCxhQUFhO0FBQUEsRUFDYixnQkFBZ0I7QUFBQSxFQUNoQixRQUFRO0FBQUEsRUFDUixNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxXQUFXO0FBQUEsRUFDWCxPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxVQUFVO0FBQUEsRUFDVixTQUFTO0FBQUEsRUFDVCxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxJQUFJO0FBQUEsRUFDSixVQUFVO0FBQUEsRUFDVixDQUFDLE9BQU8sV0FBVztBQUNyQjtBQUVBLElBQU8sb0JBQVE7OztBQ3ZGQSx5QkFBUyxVQUFVO0FBQ2hDLFNBQU8sT0FBTyxhQUFhLFdBQ3JCLElBQUksVUFBVSxDQUFDLENBQUMsU0FBUyxjQUFjLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLGVBQWUsQ0FBQyxJQUM5RSxJQUFJLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUk7QUFDeEM7OztBQ05lLDZCQUFTLE9BQU87QUFDN0IsTUFBSTtBQUNKLFNBQU8sY0FBYyxNQUFNO0FBQWEsWUFBUTtBQUNoRCxTQUFPO0FBQ1Q7OztBQ0ZlLHlCQUFTLE9BQU8sTUFBTTtBQUNuQyxVQUFRLG9CQUFZLEtBQUs7QUFDekIsTUFBSSxTQUFTO0FBQVcsV0FBTyxNQUFNO0FBQ3JDLE1BQUksTUFBTTtBQUNSLFFBQUksTUFBTSxLQUFLLG1CQUFtQjtBQUNsQyxRQUFJLElBQUksZ0JBQWdCO0FBQ3RCLFVBQUksU0FBUSxJQUFJLGVBQWU7QUFDL0IsYUFBTSxJQUFJLE1BQU0sU0FBUyxPQUFNLElBQUksTUFBTTtBQUN6QyxlQUFRLE9BQU0sZ0JBQWdCLEtBQUssYUFBYSxFQUFFLFFBQVEsQ0FBQztBQUMzRCxhQUFPLENBQUMsT0FBTSxHQUFHLE9BQU0sQ0FBQztBQUFBLElBQzFCO0FBQ0EsUUFBSSxLQUFLLHVCQUF1QjtBQUM5QixVQUFJLE9BQU8sS0FBSyxzQkFBc0I7QUFDdEMsYUFBTyxDQUFDLE1BQU0sVUFBVSxLQUFLLE9BQU8sS0FBSyxZQUFZLE1BQU0sVUFBVSxLQUFLLE1BQU0sS0FBSyxTQUFTO0FBQUEsSUFDaEc7QUFBQSxFQUNGO0FBQ0EsU0FBTyxDQUFDLE1BQU0sT0FBTyxNQUFNLEtBQUs7QUFDbEM7OztBQ25CTyx1QkFBdUIsT0FBTztBQUNuQyxRQUFNLHlCQUF5QjtBQUNqQztBQUVlLHlCQUFTLE9BQU87QUFDN0IsUUFBTSxlQUFlO0FBQ3JCLFFBQU0seUJBQXlCO0FBQ2pDOzs7QUNKZSx3QkFBUyxNQUFNO0FBQzVCLE1BQUksUUFBTyxLQUFLLFNBQVMsaUJBQ3JCLGFBQVksZ0JBQU8sSUFBSSxFQUFFLEdBQUcsa0JBQWtCLGlCQUFTLElBQUk7QUFDL0QsTUFBSSxtQkFBbUIsT0FBTTtBQUMzQixlQUFVLEdBQUcsb0JBQW9CLGlCQUFTLElBQUk7QUFBQSxFQUNoRCxPQUFPO0FBQ0wsVUFBSyxhQUFhLE1BQUssTUFBTTtBQUM3QixVQUFLLE1BQU0sZ0JBQWdCO0FBQUEsRUFDN0I7QUFDRjtBQUVPLGlCQUFpQixNQUFNLFNBQVM7QUFDckMsTUFBSSxRQUFPLEtBQUssU0FBUyxpQkFDckIsYUFBWSxnQkFBTyxJQUFJLEVBQUUsR0FBRyxrQkFBa0IsSUFBSTtBQUN0RCxNQUFJLFNBQVM7QUFDWCxlQUFVLEdBQUcsY0FBYyxpQkFBUyxJQUFJO0FBQ3hDLGVBQVcsV0FBVztBQUFFLGlCQUFVLEdBQUcsY0FBYyxJQUFJO0FBQUEsSUFBRyxHQUFHLENBQUM7QUFBQSxFQUNoRTtBQUNBLE1BQUksbUJBQW1CLE9BQU07QUFDM0IsZUFBVSxHQUFHLG9CQUFvQixJQUFJO0FBQUEsRUFDdkMsT0FBTztBQUNMLFVBQUssTUFBTSxnQkFBZ0IsTUFBSztBQUNoQyxXQUFPLE1BQUs7QUFBQSxFQUNkO0FBQ0Y7OztBQzNCQSxJQUFPLG9CQUFRLFFBQUssTUFBTTs7O0FDQVgsbUJBQW1CLE9BQU07QUFBQSxFQUN0QztBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFBRztBQUFBLEVBQUc7QUFBQSxFQUFJO0FBQUEsRUFDVjtBQUFBLEdBQ0M7QUFDRCxTQUFPLGlCQUFpQixNQUFNO0FBQUEsSUFDNUIsTUFBTSxFQUFDLE9BQU8sT0FBTSxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDeEQsYUFBYSxFQUFDLE9BQU8sYUFBYSxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDdEUsU0FBUyxFQUFDLE9BQU8sU0FBUyxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDOUQsUUFBUSxFQUFDLE9BQU8sUUFBUSxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDNUQsWUFBWSxFQUFDLE9BQU8sWUFBWSxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDcEUsUUFBUSxFQUFDLE9BQU8sUUFBUSxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDNUQsR0FBRyxFQUFDLE9BQU8sSUFBRyxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDbEQsR0FBRyxFQUFDLE9BQU8sSUFBRyxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDbEQsSUFBSSxFQUFDLE9BQU8sSUFBSSxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDcEQsSUFBSSxFQUFDLE9BQU8sSUFBSSxZQUFZLE1BQU0sY0FBYyxLQUFJO0FBQUEsSUFDcEQsR0FBRyxFQUFDLE9BQU8sVUFBUTtBQUFBLEVBQ3JCLENBQUM7QUFDSDtBQUVBLFVBQVUsVUFBVSxLQUFLLFdBQVc7QUFDbEMsTUFBSSxRQUFRLEtBQUssRUFBRSxHQUFHLE1BQU0sS0FBSyxHQUFHLFNBQVM7QUFDN0MsU0FBTyxVQUFVLEtBQUssSUFBSSxPQUFPO0FBQ25DOzs7QUNuQkEsdUJBQXVCLE9BQU87QUFDNUIsU0FBTyxDQUFDLE1BQU0sV0FBVyxDQUFDLE1BQU07QUFDbEM7QUFFQSw0QkFBNEI7QUFDMUIsU0FBTyxLQUFLO0FBQ2Q7QUFFQSx3QkFBd0IsT0FBTyxHQUFHO0FBQ2hDLFNBQU8sS0FBSyxPQUFPLEVBQUMsR0FBRyxNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUMsSUFBSTtBQUNoRDtBQUVBLDRCQUE0QjtBQUMxQixTQUFPLFVBQVUsa0JBQW1CLGtCQUFrQjtBQUN4RDtBQUVlLHdCQUFXO0FBQ3hCLE1BQUksVUFBUyxlQUNULFlBQVksa0JBQ1osVUFBVSxnQkFDVixZQUFZLGtCQUNaLFdBQVcsQ0FBQyxHQUNaLFlBQVksaUJBQVMsU0FBUyxRQUFRLEtBQUssR0FDM0MsU0FBUyxHQUNULFlBQ0EsWUFDQSxhQUNBLGFBQ0EsaUJBQWlCO0FBRXJCLGdCQUFjLFlBQVc7QUFDdkIsZUFDSyxHQUFHLGtCQUFrQixXQUFXLEVBQ2xDLE9BQU8sU0FBUyxFQUNkLEdBQUcsbUJBQW1CLFlBQVksRUFDbEMsR0FBRyxrQkFBa0IsVUFBVSxFQUMvQixHQUFHLGtDQUFrQyxVQUFVLEVBQy9DLE1BQU0sZ0JBQWdCLE1BQU0sRUFDNUIsTUFBTSwrQkFBK0IsZUFBZTtBQUFBLEVBQzNEO0FBRUEsdUJBQXFCLE9BQU8sR0FBRztBQUM3QixRQUFJLGVBQWUsQ0FBQyxRQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFBRztBQUNqRCxRQUFJLFVBQVUsWUFBWSxNQUFNLFVBQVUsS0FBSyxNQUFNLE9BQU8sQ0FBQyxHQUFHLE9BQU8sR0FBRyxPQUFPO0FBQ2pGLFFBQUksQ0FBQztBQUFTO0FBQ2Qsb0JBQU8sTUFBTSxJQUFJLEVBQUUsR0FBRyxrQkFBa0IsWUFBWSxJQUFJLEVBQUUsR0FBRyxnQkFBZ0IsWUFBWSxJQUFJO0FBQzdGLG1CQUFPLE1BQU0sSUFBSTtBQUNqQixrQkFBYyxLQUFLO0FBQ25CLGtCQUFjO0FBQ2QsaUJBQWEsTUFBTTtBQUNuQixpQkFBYSxNQUFNO0FBQ25CLFlBQVEsU0FBUyxLQUFLO0FBQUEsRUFDeEI7QUFFQSxzQkFBb0IsT0FBTztBQUN6QixvQkFBUSxLQUFLO0FBQ2IsUUFBSSxDQUFDLGFBQWE7QUFDaEIsVUFBSSxLQUFLLE1BQU0sVUFBVSxZQUFZLEtBQUssTUFBTSxVQUFVO0FBQzFELG9CQUFjLEtBQUssS0FBSyxLQUFLLEtBQUs7QUFBQSxJQUNwQztBQUNBLGFBQVMsTUFBTSxRQUFRLEtBQUs7QUFBQSxFQUM5QjtBQUVBLHNCQUFvQixPQUFPO0FBQ3pCLG9CQUFPLE1BQU0sSUFBSSxFQUFFLEdBQUcsK0JBQStCLElBQUk7QUFDekQsWUFBUSxNQUFNLE1BQU0sV0FBVztBQUMvQixvQkFBUSxLQUFLO0FBQ2IsYUFBUyxNQUFNLE9BQU8sS0FBSztBQUFBLEVBQzdCO0FBRUEsd0JBQXNCLE9BQU8sR0FBRztBQUM5QixRQUFJLENBQUMsUUFBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQUc7QUFDbEMsUUFBSSxVQUFVLE1BQU0sZ0JBQ2hCLEtBQUksVUFBVSxLQUFLLE1BQU0sT0FBTyxDQUFDLEdBQ2pDLElBQUksUUFBUSxRQUFRLEdBQUc7QUFFM0IsU0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRztBQUN0QixVQUFJLFVBQVUsWUFBWSxNQUFNLElBQUcsT0FBTyxHQUFHLFFBQVEsR0FBRyxZQUFZLFFBQVEsRUFBRSxHQUFHO0FBQy9FLHNCQUFjLEtBQUs7QUFDbkIsZ0JBQVEsU0FBUyxPQUFPLFFBQVEsRUFBRTtBQUFBLE1BQ3BDO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFFQSxzQkFBb0IsT0FBTztBQUN6QixRQUFJLFVBQVUsTUFBTSxnQkFDaEIsSUFBSSxRQUFRLFFBQVEsR0FBRztBQUUzQixTQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHO0FBQ3RCLFVBQUksVUFBVSxTQUFTLFFBQVEsR0FBRyxhQUFhO0FBQzdDLHdCQUFRLEtBQUs7QUFDYixnQkFBUSxRQUFRLE9BQU8sUUFBUSxFQUFFO0FBQUEsTUFDbkM7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLHNCQUFvQixPQUFPO0FBQ3pCLFFBQUksVUFBVSxNQUFNLGdCQUNoQixJQUFJLFFBQVEsUUFBUSxHQUFHO0FBRTNCLFFBQUk7QUFBYSxtQkFBYSxXQUFXO0FBQ3pDLGtCQUFjLFdBQVcsV0FBVztBQUFFLG9CQUFjO0FBQUEsSUFBTSxHQUFHLEdBQUc7QUFDaEUsU0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRztBQUN0QixVQUFJLFVBQVUsU0FBUyxRQUFRLEdBQUcsYUFBYTtBQUM3QyxzQkFBYyxLQUFLO0FBQ25CLGdCQUFRLE9BQU8sT0FBTyxRQUFRLEVBQUU7QUFBQSxNQUNsQztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsdUJBQXFCLE1BQU0sWUFBVyxPQUFPLEdBQUcsWUFBWSxPQUFPO0FBQ2pFLFFBQUksWUFBVyxVQUFVLEtBQUssR0FDMUIsSUFBSSxnQkFBUSxTQUFTLE9BQU8sVUFBUyxHQUFHLElBQUksSUFDNUM7QUFFSixRQUFLLEtBQUksUUFBUSxLQUFLLE1BQU0sSUFBSSxVQUFVLGVBQWU7QUFBQSxNQUNyRCxhQUFhO0FBQUEsTUFDYixRQUFRO0FBQUEsTUFDUjtBQUFBLE1BQ0E7QUFBQSxNQUNBLEdBQUcsRUFBRTtBQUFBLE1BQ0wsR0FBRyxFQUFFO0FBQUEsTUFDTCxJQUFJO0FBQUEsTUFDSixJQUFJO0FBQUEsTUFDSjtBQUFBLElBQ0YsQ0FBQyxHQUFHLENBQUMsTUFBTTtBQUFNO0FBRW5CLFNBQUssRUFBRSxJQUFJLEVBQUUsTUFBTTtBQUNuQixTQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU07QUFFbkIsV0FBTyxpQkFBaUIsT0FBTSxRQUFPLFFBQU87QUFDMUMsVUFBSSxLQUFLLEdBQUc7QUFDWixjQUFRO0FBQUEsYUFDRDtBQUFTLG1CQUFTLGNBQWMsU0FBUyxJQUFJO0FBQVU7QUFBQSxhQUN2RDtBQUFPLGlCQUFPLFNBQVMsYUFBYSxFQUFFO0FBQUEsYUFDdEM7QUFBUSxjQUFJLGdCQUFRLFVBQVMsUUFBTyxVQUFTLEdBQUcsSUFBSTtBQUFRO0FBQUE7QUFFbkUsZ0JBQVMsS0FDUCxPQUNBLE1BQ0EsSUFBSSxVQUFVLE9BQU07QUFBQSxRQUNsQixhQUFhO0FBQUEsUUFDYixTQUFTO0FBQUEsUUFDVCxRQUFRO0FBQUEsUUFDUjtBQUFBLFFBQ0EsUUFBUTtBQUFBLFFBQ1IsR0FBRyxFQUFFLEtBQUs7QUFBQSxRQUNWLEdBQUcsRUFBRSxLQUFLO0FBQUEsUUFDVixJQUFJLEVBQUUsS0FBSyxHQUFHO0FBQUEsUUFDZCxJQUFJLEVBQUUsS0FBSyxHQUFHO0FBQUEsUUFDZDtBQUFBLE1BQ0YsQ0FBQyxHQUNELENBQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLE9BQUssU0FBUyxTQUFTLEdBQUc7QUFDeEIsV0FBTyxVQUFVLFNBQVUsV0FBUyxPQUFPLE1BQU0sYUFBYSxJQUFJLGtCQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUTtBQUFBLEVBQzNGO0FBRUEsT0FBSyxZQUFZLFNBQVMsR0FBRztBQUMzQixXQUFPLFVBQVUsU0FBVSxhQUFZLE9BQU8sTUFBTSxhQUFhLElBQUksa0JBQVMsQ0FBQyxHQUFHLFFBQVE7QUFBQSxFQUM1RjtBQUVBLE9BQUssVUFBVSxTQUFTLEdBQUc7QUFDekIsV0FBTyxVQUFVLFNBQVUsV0FBVSxPQUFPLE1BQU0sYUFBYSxJQUFJLGtCQUFTLENBQUMsR0FBRyxRQUFRO0FBQUEsRUFDMUY7QUFFQSxPQUFLLFlBQVksU0FBUyxHQUFHO0FBQzNCLFdBQU8sVUFBVSxTQUFVLGFBQVksT0FBTyxNQUFNLGFBQWEsSUFBSSxrQkFBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVE7QUFBQSxFQUM5RjtBQUVBLE9BQUssS0FBSyxXQUFXO0FBQ25CLFFBQUksUUFBUSxVQUFVLEdBQUcsTUFBTSxXQUFXLFNBQVM7QUFDbkQsV0FBTyxVQUFVLFlBQVksT0FBTztBQUFBLEVBQ3RDO0FBRUEsT0FBSyxnQkFBZ0IsU0FBUyxHQUFHO0FBQy9CLFdBQU8sVUFBVSxTQUFVLGtCQUFrQixLQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsS0FBSyxLQUFLLGNBQWM7QUFBQSxFQUM1RjtBQUVBLFNBQU87QUFDVDs7O0FDL0xlLHdCQUFTLGFBQWEsU0FBUyxXQUFXO0FBQ3ZELGNBQVksWUFBWSxRQUFRLFlBQVk7QUFDNUMsWUFBVSxjQUFjO0FBQzFCO0FBRU8sZ0JBQWdCLFFBQVEsWUFBWTtBQUN6QyxNQUFJLFlBQVksT0FBTyxPQUFPLE9BQU8sU0FBUztBQUM5QyxXQUFTLE9BQU87QUFBWSxjQUFVLE9BQU8sV0FBVztBQUN4RCxTQUFPO0FBQ1Q7OztBQ1BPLGlCQUFpQjtBQUFDO0FBRWxCLElBQUksU0FBUztBQUNiLElBQUksV0FBVyxJQUFJO0FBRTFCLElBQUksTUFBTTtBQUFWLElBQ0ksTUFBTTtBQURWLElBRUksTUFBTTtBQUZWLElBR0ksUUFBUTtBQUhaLElBSUksZUFBZSxJQUFJLE9BQU8sWUFBWSxDQUFDLEtBQUssS0FBSyxHQUFHLElBQUksTUFBTTtBQUpsRSxJQUtJLGVBQWUsSUFBSSxPQUFPLFlBQVksQ0FBQyxLQUFLLEtBQUssR0FBRyxJQUFJLE1BQU07QUFMbEUsSUFNSSxnQkFBZ0IsSUFBSSxPQUFPLGFBQWEsQ0FBQyxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksTUFBTTtBQU56RSxJQU9JLGdCQUFnQixJQUFJLE9BQU8sYUFBYSxDQUFDLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxNQUFNO0FBUHpFLElBUUksZUFBZSxJQUFJLE9BQU8sWUFBWSxDQUFDLEtBQUssS0FBSyxHQUFHLElBQUksTUFBTTtBQVJsRSxJQVNJLGdCQUFnQixJQUFJLE9BQU8sYUFBYSxDQUFDLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxNQUFNO0FBRXpFLElBQUksUUFBUTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsY0FBYztBQUFBLEVBQ2QsTUFBTTtBQUFBLEVBQ04sWUFBWTtBQUFBLEVBQ1osT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsZ0JBQWdCO0FBQUEsRUFDaEIsTUFBTTtBQUFBLEVBQ04sWUFBWTtBQUFBLEVBQ1osT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsT0FBTztBQUFBLEVBQ1AsZ0JBQWdCO0FBQUEsRUFDaEIsVUFBVTtBQUFBLEVBQ1YsU0FBUztBQUFBLEVBQ1QsTUFBTTtBQUFBLEVBQ04sVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsZUFBZTtBQUFBLEVBQ2YsVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsYUFBYTtBQUFBLEVBQ2IsZ0JBQWdCO0FBQUEsRUFDaEIsWUFBWTtBQUFBLEVBQ1osWUFBWTtBQUFBLEVBQ1osU0FBUztBQUFBLEVBQ1QsWUFBWTtBQUFBLEVBQ1osY0FBYztBQUFBLEVBQ2QsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsWUFBWTtBQUFBLEVBQ1osVUFBVTtBQUFBLEVBQ1YsYUFBYTtBQUFBLEVBQ2IsU0FBUztBQUFBLEVBQ1QsU0FBUztBQUFBLEVBQ1QsWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsU0FBUztBQUFBLEVBQ1QsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsTUFBTTtBQUFBLEVBQ04sT0FBTztBQUFBLEVBQ1AsYUFBYTtBQUFBLEVBQ2IsTUFBTTtBQUFBLEVBQ04sVUFBVTtBQUFBLEVBQ1YsU0FBUztBQUFBLEVBQ1QsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsZUFBZTtBQUFBLEVBQ2YsV0FBVztBQUFBLEVBQ1gsY0FBYztBQUFBLEVBQ2QsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsc0JBQXNCO0FBQUEsRUFDdEIsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsYUFBYTtBQUFBLEVBQ2IsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsYUFBYTtBQUFBLEVBQ2IsTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsT0FBTztBQUFBLEVBQ1AsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1Isa0JBQWtCO0FBQUEsRUFDbEIsWUFBWTtBQUFBLEVBQ1osY0FBYztBQUFBLEVBQ2QsY0FBYztBQUFBLEVBQ2QsZ0JBQWdCO0FBQUEsRUFDaEIsaUJBQWlCO0FBQUEsRUFDakIsbUJBQW1CO0FBQUEsRUFDbkIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsY0FBYztBQUFBLEVBQ2QsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1YsYUFBYTtBQUFBLEVBQ2IsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUFBLEVBQ1QsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsZUFBZTtBQUFBLEVBQ2YsV0FBVztBQUFBLEVBQ1gsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sWUFBWTtBQUFBLEVBQ1osUUFBUTtBQUFBLEVBQ1IsZUFBZTtBQUFBLEVBQ2YsS0FBSztBQUFBLEVBQ0wsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsYUFBYTtBQUFBLEVBQ2IsUUFBUTtBQUFBLEVBQ1IsWUFBWTtBQUFBLEVBQ1osVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsV0FBVztBQUFBLEVBQ1gsS0FBSztBQUFBLEVBQ0wsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsWUFBWTtBQUFBLEVB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 diff --git a/notes/.obsidian/plugins/breadcrumbs/manifest.json b/notes/.obsidian/plugins/breadcrumbs/manifest.json index f4c46c6..f128c6d 100644 --- a/notes/.obsidian/plugins/breadcrumbs/manifest.json +++ b/notes/.obsidian/plugins/breadcrumbs/manifest.json @@ -1,7 +1,7 @@ { "id": "breadcrumbs", "name": "Breadcrumbs", - "version": "3.6.2", + "version": "3.6.4", "minAppVersion": "0.15.2", "description": "Visualise & navigate your vault's structure", "author": "SkepticMystic", diff --git a/notes/.obsidian/plugins/dataview/main.js b/notes/.obsidian/plugins/dataview/main.js index 77cd17d..cc3e7ec 100644 --- a/notes/.obsidian/plugins/dataview/main.js +++ b/notes/.obsidian/plugins/dataview/main.js @@ -15221,7 +15221,11 @@ function createBinaryOps(linkNormalizer) { .register("null", "-", "null", (_a, _b) => null) .register("null", "*", "null", (_a, _b) => null) .register("null", "/", "null", (_a, _b) => null) - .register("null", "%", "null", (_a, _b) => null)); + .register("null", "%", "null", (_a, _b) => null) + .register("date", "+", "null", (_a, _b) => null) + .register("null", "+", "date", (_a, _b) => null) + .register("date", "-", "null", (_a, _b) => null) + .register("null", "-", "date", (_a, _b) => null)); } /** Core implementation of the query language evaluation engine. */ @@ -21003,4 +21007,4 @@ class GeneralSettingsTab extends obsidian.PluginSettingTab { } module.exports = DataviewPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL2J1aWxkL2Nqcy1icm93c2VyL2x1eG9uLmpzIiwiLi4vc3JjL3NldHRpbmdzLnRzIiwiLi4vc3JjL2FwaS9yZXN1bHQudHMiLCIuLi9ub2RlX21vZHVsZXMvcGFyc2ltbW9uL2J1aWxkL3BhcnNpbW1vbi51bWQubWluLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Vtb2ppLXJlZ2V4L2luZGV4LmpzIiwiLi4vc3JjL3V0aWwvbm9ybWFsaXplLnRzIiwiLi4vc3JjL2RhdGEtbW9kZWwvdmFsdWUudHMiLCIuLi9zcmMvYXBpL2RhdGEtYXJyYXkudHMiLCIuLi9zcmMvdXRpbC9sb2NhbGUudHMiLCIuLi9zcmMvdWkvcmVuZGVyLnRzIiwiLi4vbm9kZV9tb2R1bGVzL3BhcGFwYXJzZS9wYXBhcGFyc2UubWluLmpzIiwiLi4vc3JjL2V4cHJlc3Npb24vZmllbGQudHMiLCIuLi9zcmMvZGF0YS1pbmRleC9zb3VyY2UudHMiLCIuLi9zcmMvZXhwcmVzc2lvbi9wYXJzZS50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC9pbmxpbmUtZmllbGQudHMiLCIuLi9zcmMvZGF0YS1tb2RlbC9tYXJrZG93bi50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC9tYXJrZG93bi1maWxlLnRzIiwiLi4vc3JjL2RhdGEtaW1wb3J0L2Nzdi50cyIsIi4uL3NyYy9kYXRhLW1vZGVsL3RyYW5zZmVyYWJsZS50cyIsIi4uL25vZGVfbW9kdWxlcy9sb2NhbGZvcmFnZS9kaXN0L2xvY2FsZm9yYWdlLmpzIiwiLi4vc3JjL2RhdGEtaW1wb3J0L3BlcnNpc3Rlci50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC93ZWItd29ya2VyL2ltcG9ydC1tYW5hZ2VyLnRzIiwiLi4vc3JjL2RhdGEtaW5kZXgvaW5kZXgudHMiLCIuLi9zcmMvZGF0YS1pbmRleC9yZXNvbHZlci50cyIsIi4uL3NyYy9leHByZXNzaW9uL2Z1bmN0aW9ucy50cyIsIi4uL3NyYy9leHByZXNzaW9uL2JpbmFyeW9wLnRzIiwiLi4vc3JjL2V4cHJlc3Npb24vY29udGV4dC50cyIsIi4uL3NyYy9xdWVyeS9lbmdpbmUudHMiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFyZS12ZXJzaW9ucy9pbmRleC5tanMiLCIuLi9ub2RlX21vZHVsZXMvcHJlYWN0L2Rpc3QvcHJlYWN0Lm1vZHVsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9wcmVhY3QvaG9va3MvZGlzdC9ob29rcy5tb2R1bGUuanMiLCIuLi9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9kaXN0L2NvbXBhdC5tb2R1bGUuanMiLCIuLi9zcmMvdXRpbC9tZWRpYS50cyIsIi4uL3NyYy91aS9tYXJrZG93bi50c3giLCIuLi9zcmMvdWkvdmlld3MvdGFzay12aWV3LnRzeCIsIi4uL3NyYy91aS92aWV3cy9saXN0LXZpZXcudHN4IiwiLi4vc3JjL3VpL3ZpZXdzL3RhYmxlLXZpZXcudHN4IiwiLi4vc3JjL3F1ZXJ5L3F1ZXJ5LnRzIiwiLi4vc3JjL3F1ZXJ5L3BhcnNlLnRzIiwiLi4vbm9kZV9tb2R1bGVzL29ic2lkaWFuLWNhbGVuZGFyLXVpL2Rpc3QvaW5kZXgubWpzIiwiLi4vc3JjL3VpL3JlZnJlc2hhYmxlLXZpZXcudHMiLCIuLi9zcmMvdWkvdmlld3MvY2FsZW5kYXItdmlldy50cyIsIi4uL3NyYy9hcGkvaW5saW5lLWFwaS50cyIsIi4uL3NyYy91aS92aWV3cy9qcy12aWV3LnRzIiwiLi4vc3JjL3VpL2V4cG9ydC9tYXJrZG93bi50cyIsIi4uL3NyYy9hcGkvcGx1Z2luLWFwaS50cyIsIi4uL3NyYy91aS92aWV3cy9pbmxpbmUtdmlldy50cyIsIi4uL3NyYy91aS92aWV3cy9pbmxpbmUtZmllbGQudHN4IiwiLi4vc3JjL3VpL2xwLXJlbmRlci50cyIsIi4uL3NyYy9tYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpudWxsLCJuYW1lcyI6WyJuIiwicyIsImwiLCJ0aGlzIiwiRGF0ZVRpbWUiLCJQLmFsdCIsIlAucmVnZXgiLCJQLndoaXRlc3BhY2UiLCJQLmFueSIsIkR1cmF0aW9uIiwiTWFya2Rvd25SZW5kZXJlciIsIlAuc2VxTWFwIiwiUC5zZXEiLCJQLm9wdFdoaXRlc3BhY2UiLCJQLmN1c3RvbSIsIlAuY3JlYXRlTGFuZ3VhZ2UiLCJQLnJlZ2V4cCIsIlAuc3RyaW5nIiwiUC5ub25lT2YiLCJQLnN1Y2NlZWQiLCJQLmZhaWwiLCJMaXN0SXRlbSIsIlBhcGEucGFyc2UiLCJTeXN0ZW1ab25lIiwicmVxdWlyZSIsImdsb2JhbCIsIkNvbXBvbmVudCIsIkRhdGF2aWV3SW1wb3J0V29ya2VyIiwiVEZpbGUiLCJURm9sZGVyIiwidSIsInQiLCJvIiwiciIsImYiLCJlIiwiYyIsImEiLCJoIiwidiIsInkiLCJwIiwiZCIsIl8iLCJrIiwiYiIsIm0iLCJnIiwiaiIsInoiLCJ3IiwieCIsIlAiLCJOIiwiTSIsIkEiLCJDIiwiSCIsIiQiLCJUIiwiSSIsIk8iLCJMIiwiUyIsInEiLCJCIiwiRCIsIkYiLCJpIiwiY3JlYXRlQ29udGV4dCIsInVzZVJlZiIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJGcmFnbWVudCIsInVzZVN0YXRlIiwiTWFya2Rvd25SZW5kZXJDaGlsZCIsInJlbmRlciIsInVubW91bnRDb21wb25lbnRBdE5vZGUiLCJQbGF0Zm9ybSIsIlAuc2VwQnkiLCJXaWRnZXRUeXBlIiwiZWRpdG9yRWRpdG9yRmllbGQiLCJlZGl0b3JWaWV3RmllbGQiLCJ2aWV3Iiwic3ludGF4VHJlZSIsIkRlY29yYXRpb24iLCJWaWV3UGx1Z2luIiwiZWRpdG9yTGl2ZVByZXZpZXdGaWVsZCIsIlBsdWdpbiIsImRlYm91bmNlIiwiUGx1Z2luU2V0dGluZ1RhYiIsIlNldHRpbmciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUQ7QUFDQSxTQUFTLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUU7QUFDMUMsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxJQUFJLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixJQUFJLFVBQVUsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUM7QUFDM0QsSUFBSSxVQUFVLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztBQUNuQyxJQUFJLElBQUksT0FBTyxJQUFJLFVBQVUsRUFBRSxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUMxRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDOUQsR0FBRztBQUNILENBQUM7QUFDRDtBQUNBLFNBQVMsWUFBWSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFO0FBQzVELEVBQUUsSUFBSSxVQUFVLEVBQUUsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN2RSxFQUFFLElBQUksV0FBVyxFQUFFLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUMvRCxFQUFFLE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFDRDtBQUNBLFNBQVMsUUFBUSxHQUFHO0FBQ3BCLEVBQUUsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksVUFBVSxNQUFNLEVBQUU7QUFDaEQsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMvQyxNQUFNLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQztBQUNBLE1BQU0sS0FBSyxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUU7QUFDOUIsUUFBUSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDL0QsVUFBVSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLE1BQU0sQ0FBQztBQUNsQixHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBQ0Q7QUFDQSxTQUFTLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFO0FBQzlDLEVBQUUsUUFBUSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMzRCxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztBQUM1QztBQUNBLEVBQUUsZUFBZSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBQ0Q7QUFDQSxTQUFTLGVBQWUsQ0FBQyxDQUFDLEVBQUU7QUFDNUIsRUFBRSxlQUFlLEdBQUcsTUFBTSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxHQUFHLFNBQVMsZUFBZSxDQUFDLENBQUMsRUFBRTtBQUNoRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25ELEdBQUcsQ0FBQztBQUNKLEVBQUUsT0FBTyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUMvQixFQUFFLGVBQWUsR0FBRyxNQUFNLENBQUMsY0FBYyxJQUFJLFNBQVMsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDNUUsSUFBSSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztBQUNwQixJQUFJLE9BQU8sQ0FBQyxDQUFDO0FBQ2IsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLE9BQU8sZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBQ0Q7QUFDQSxTQUFTLHlCQUF5QixHQUFHO0FBQ3JDLEVBQUUsSUFBSSxPQUFPLE9BQU8sS0FBSyxXQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ3pFLEVBQUUsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLEtBQUssQ0FBQztBQUMzQyxFQUFFLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQy9DO0FBQ0EsRUFBRSxJQUFJO0FBQ04sSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuRixJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNkLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsR0FBRztBQUNILENBQUM7QUFDRDtBQUNBLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO0FBQ3pDLEVBQUUsSUFBSSx5QkFBeUIsRUFBRSxFQUFFO0FBQ25DLElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFDbkMsR0FBRyxNQUFNO0FBQ1QsSUFBSSxVQUFVLEdBQUcsU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7QUFDMUQsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JCLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzVCLE1BQU0sSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELE1BQU0sSUFBSSxRQUFRLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztBQUN2QyxNQUFNLElBQUksS0FBSyxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzVELE1BQU0sT0FBTyxRQUFRLENBQUM7QUFDdEIsS0FBSyxDQUFDO0FBQ04sR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFDRDtBQUNBLFNBQVMsaUJBQWlCLENBQUMsRUFBRSxFQUFFO0FBQy9CLEVBQUUsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUNEO0FBQ0EsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7QUFDakMsRUFBRSxJQUFJLE1BQU0sR0FBRyxPQUFPLEdBQUcsS0FBSyxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUM7QUFDakU7QUFDQSxFQUFFLGdCQUFnQixHQUFHLFNBQVMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO0FBQ3RELElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDbEU7QUFDQSxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxFQUFFO0FBQ3JDLE1BQU0sTUFBTSxJQUFJLFNBQVMsQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO0FBQ2hGLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUU7QUFDdkMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3REO0FBQ0EsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNqQyxLQUFLO0FBQ0w7QUFDQSxJQUFJLFNBQVMsT0FBTyxHQUFHO0FBQ3ZCLE1BQU0sT0FBTyxVQUFVLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDN0UsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtBQUN2RCxNQUFNLFdBQVcsRUFBRTtBQUNuQixRQUFRLEtBQUssRUFBRSxPQUFPO0FBQ3RCLFFBQVEsVUFBVSxFQUFFLEtBQUs7QUFDekIsUUFBUSxRQUFRLEVBQUUsSUFBSTtBQUN0QixRQUFRLFlBQVksRUFBRSxJQUFJO0FBQzFCLE9BQU87QUFDUCxLQUFLLENBQUMsQ0FBQztBQUNQLElBQUksT0FBTyxlQUFlLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzNDLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxPQUFPLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFDRDtBQUNBLFNBQVMsNkJBQTZCLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRTtBQUN6RCxFQUFFLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUNoQyxFQUFFLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNsQixFQUFFLElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdkMsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDYjtBQUNBLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFDLElBQUksR0FBRyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QixJQUFJLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUztBQUM3QyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUIsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBQ0Q7QUFDQSxTQUFTLDJCQUEyQixDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7QUFDaEQsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLE9BQU87QUFDakIsRUFBRSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxPQUFPLGlCQUFpQixDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNqRSxFQUFFLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekQsRUFBRSxJQUFJLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7QUFDOUQsRUFBRSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkQsRUFBRSxJQUFJLENBQUMsS0FBSyxXQUFXLElBQUksMENBQTBDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8saUJBQWlCLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ25ILENBQUM7QUFDRDtBQUNBLFNBQVMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUNyQyxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztBQUN4RDtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RTtBQUNBLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLCtCQUErQixDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUU7QUFDNUQsRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDbEYsRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqRDtBQUNBLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLGNBQWMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRTtBQUN4SCxJQUFJLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDbkIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCxJQUFJLE9BQU8sWUFBWTtBQUN2QixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTztBQUNoQyxRQUFRLElBQUksRUFBRSxJQUFJO0FBQ2xCLE9BQU8sQ0FBQztBQUNSLE1BQU0sT0FBTztBQUNiLFFBQVEsSUFBSSxFQUFFLEtBQUs7QUFDbkIsUUFBUSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3JCLE9BQU8sQ0FBQztBQUNSLEtBQUssQ0FBQztBQUNOLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxJQUFJLFNBQVMsQ0FBQyx1SUFBdUksQ0FBQyxDQUFDO0FBQy9KLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFVBQVUsZ0JBQWdCLFVBQVUsTUFBTSxFQUFFO0FBQ2hELEVBQUUsY0FBYyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNyQztBQUNBLEVBQUUsU0FBUyxVQUFVLEdBQUc7QUFDeEIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUNqRCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMsZUFBZSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLG9CQUFvQixnQkFBZ0IsVUFBVSxXQUFXLEVBQUU7QUFDL0QsRUFBRSxjQUFjLENBQUMsb0JBQW9CLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDcEQ7QUFDQSxFQUFFLFNBQVMsb0JBQW9CLENBQUMsTUFBTSxFQUFFO0FBQ3hDLElBQUksT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDckYsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLG9CQUFvQixDQUFDO0FBQzlCLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxvQkFBb0IsZ0JBQWdCLFVBQVUsWUFBWSxFQUFFO0FBQ2hFLEVBQUUsY0FBYyxDQUFDLG9CQUFvQixFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ3JEO0FBQ0EsRUFBRSxTQUFTLG9CQUFvQixDQUFDLE1BQU0sRUFBRTtBQUN4QyxJQUFJLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDO0FBQ3RGLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxvQkFBb0IsQ0FBQztBQUM5QixDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksb0JBQW9CLGdCQUFnQixVQUFVLFlBQVksRUFBRTtBQUNoRSxFQUFFLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNyRDtBQUNBLEVBQUUsU0FBUyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUU7QUFDeEMsSUFBSSxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUN0RixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sb0JBQW9CLENBQUM7QUFDOUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLDZCQUE2QixnQkFBZ0IsVUFBVSxZQUFZLEVBQUU7QUFDekUsRUFBRSxjQUFjLENBQUMsNkJBQTZCLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDOUQ7QUFDQSxFQUFFLFNBQVMsNkJBQTZCLEdBQUc7QUFDM0MsSUFBSSxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUN2RCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sNkJBQTZCLENBQUM7QUFDdkMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGdCQUFnQixnQkFBZ0IsVUFBVSxZQUFZLEVBQUU7QUFDNUQsRUFBRSxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDakQ7QUFDQSxFQUFFLFNBQVMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO0FBQ2xDLElBQUksT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO0FBQ25FLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxnQkFBZ0IsQ0FBQztBQUMxQixDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksb0JBQW9CLGdCQUFnQixVQUFVLFlBQVksRUFBRTtBQUNoRSxFQUFFLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNyRDtBQUNBLEVBQUUsU0FBUyxvQkFBb0IsR0FBRztBQUNsQyxJQUFJLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDO0FBQ3ZELEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxvQkFBb0IsQ0FBQztBQUM5QixDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksbUJBQW1CLGdCQUFnQixVQUFVLFlBQVksRUFBRTtBQUMvRCxFQUFFLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNwRDtBQUNBLEVBQUUsU0FBUyxtQkFBbUIsR0FBRztBQUNqQyxJQUFJLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsMkJBQTJCLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDeEUsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLG1CQUFtQixDQUFDO0FBQzdCLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSUEsR0FBQyxHQUFHLFNBQVM7QUFDakIsSUFBSUMsR0FBQyxHQUFHLE9BQU87QUFDZixJQUFJQyxHQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ2YsSUFBSSxVQUFVLEdBQUc7QUFDakIsRUFBRSxJQUFJLEVBQUVGLEdBQUM7QUFDVCxFQUFFLEtBQUssRUFBRUEsR0FBQztBQUNWLEVBQUUsR0FBRyxFQUFFQSxHQUFDO0FBQ1IsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxRQUFRLEdBQUc7QUFDZixFQUFFLElBQUksRUFBRUEsR0FBQztBQUNULEVBQUUsS0FBSyxFQUFFQyxHQUFDO0FBQ1YsRUFBRSxHQUFHLEVBQUVELEdBQUM7QUFDUixDQUFDLENBQUM7QUFDRixJQUFJLHFCQUFxQixHQUFHO0FBQzVCLEVBQUUsSUFBSSxFQUFFQSxHQUFDO0FBQ1QsRUFBRSxLQUFLLEVBQUVDLEdBQUM7QUFDVixFQUFFLEdBQUcsRUFBRUQsR0FBQztBQUNSLEVBQUUsT0FBTyxFQUFFQyxHQUFDO0FBQ1osQ0FBQyxDQUFDO0FBQ0YsSUFBSSxTQUFTLEdBQUc7QUFDaEIsRUFBRSxJQUFJLEVBQUVELEdBQUM7QUFDVCxFQUFFLEtBQUssRUFBRUUsR0FBQztBQUNWLEVBQUUsR0FBRyxFQUFFRixHQUFDO0FBQ1IsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxTQUFTLEdBQUc7QUFDaEIsRUFBRSxJQUFJLEVBQUVBLEdBQUM7QUFDVCxFQUFFLEtBQUssRUFBRUUsR0FBQztBQUNWLEVBQUUsR0FBRyxFQUFFRixHQUFDO0FBQ1IsRUFBRSxPQUFPLEVBQUVFLEdBQUM7QUFDWixDQUFDLENBQUM7QUFDRixJQUFJLFdBQVcsR0FBRztBQUNsQixFQUFFLElBQUksRUFBRUYsR0FBQztBQUNULEVBQUUsTUFBTSxFQUFFQSxHQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxpQkFBaUIsR0FBRztBQUN4QixFQUFFLElBQUksRUFBRUEsR0FBQztBQUNULEVBQUUsTUFBTSxFQUFFQSxHQUFDO0FBQ1gsRUFBRSxNQUFNLEVBQUVBLEdBQUM7QUFDWCxDQUFDLENBQUM7QUFDRixJQUFJLHNCQUFzQixHQUFHO0FBQzdCLEVBQUUsSUFBSSxFQUFFQSxHQUFDO0FBQ1QsRUFBRSxNQUFNLEVBQUVBLEdBQUM7QUFDWCxFQUFFLE1BQU0sRUFBRUEsR0FBQztBQUNYLEVBQUUsWUFBWSxFQUFFQyxHQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUNGLElBQUkscUJBQXFCLEdBQUc7QUFDNUIsRUFBRSxJQUFJLEVBQUVELEdBQUM7QUFDVCxFQUFFLE1BQU0sRUFBRUEsR0FBQztBQUNYLEVBQUUsTUFBTSxFQUFFQSxHQUFDO0FBQ1gsRUFBRSxZQUFZLEVBQUVFLEdBQUM7QUFDakIsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxjQUFjLEdBQUc7QUFDckIsRUFBRSxJQUFJLEVBQUVGLEdBQUM7QUFDVCxFQUFFLE1BQU0sRUFBRUEsR0FBQztBQUNYLEVBQUUsU0FBUyxFQUFFLEtBQUs7QUFDbEIsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxvQkFBb0IsR0FBRztBQUMzQixFQUFFLElBQUksRUFBRUEsR0FBQztBQUNULEVBQUUsTUFBTSxFQUFFQSxHQUFDO0FBQ1gsRUFBRSxNQUFNLEVBQUVBLEdBQUM7QUFDWCxFQUFFLFNBQVMsRUFBRSxLQUFLO0FBQ2xCLENBQUMsQ0FBQztBQUNGLElBQUkseUJBQXlCLEdBQUc7QUFDaEMsRUFBRSxJQUFJLEVBQUVBLEdBQUM7QUFDVCxFQUFFLE1BQU0sRUFBRUEsR0FBQztBQUNYLEVBQUUsTUFBTSxFQUFFQSxHQUFDO0FBQ1gsRUFBRSxTQUFTLEVBQUUsS0FBSztBQUNsQixFQUFFLFlBQVksRUFBRUMsR0FBQztBQUNqQixDQUFDLENBQUM7QUFDRixJQUFJLHdCQUF3QixHQUFHO0FBQy9CLEVBQUUsSUFBSSxFQUFFRCxHQUFDO0FBQ1QsRUFBRSxNQUFNLEVBQUVBLEdBQUM7QUFDWCxFQUFFLE1BQU0sRUFBRUEsR0FBQztBQUNYLEVBQUUsU0FBUyxFQUFFLEtBQUs7QUFDbEIsRUFBRSxZQUFZLEVBQUVFLEdBQUM7QUFDakIsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxjQUFjLEdBQUc7QUFDckIsRUFBRSxJQUFJLEVBQUVGLEdBQUM7QUFDVCxFQUFFLEtBQUssRUFBRUEsR0FBQztBQUNWLEVBQUUsR0FBRyxFQUFFQSxHQUFDO0FBQ1IsRUFBRSxJQUFJLEVBQUVBLEdBQUM7QUFDVCxFQUFFLE1BQU0sRUFBRUEsR0FBQztBQUNYLENBQUMsQ0FBQztBQUNGLElBQUksMkJBQTJCLEdBQUc7QUFDbEMsRUFBRSxJQUFJLEVBQUVBLEdBQUM7QUFDVCxFQUFFLEtBQUssRUFBRUEsR0FBQztBQUNWLEVBQUUsR0FBRyxFQUFFQSxHQUFDO0FBQ1IsRUFBRSxJQUFJLEVBQUVBLEdBQUM7QUFDVCxFQUFFLE1BQU0sRUFBRUEsR0FBQztBQUNYLEVBQUUsTUFBTSxFQUFFQSxHQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxZQUFZLEdBQUc7QUFDbkIsRUFBRSxJQUFJLEVBQUVBLEdBQUM7QUFDVCxFQUFFLEtBQUssRUFBRUMsR0FBQztBQUNWLEVBQUUsR0FBRyxFQUFFRCxHQUFDO0FBQ1IsRUFBRSxJQUFJLEVBQUVBLEdBQUM7QUFDVCxFQUFFLE1BQU0sRUFBRUEsR0FBQztBQUNYLENBQUMsQ0FBQztBQUNGLElBQUkseUJBQXlCLEdBQUc7QUFDaEMsRUFBRSxJQUFJLEVBQUVBLEdBQUM7QUFDVCxFQUFFLEtBQUssRUFBRUMsR0FBQztBQUNWLEVBQUUsR0FBRyxFQUFFRCxHQUFDO0FBQ1IsRUFBRSxJQUFJLEVBQUVBLEdBQUM7QUFDVCxFQUFFLE1BQU0sRUFBRUEsR0FBQztBQUNYLEVBQUUsTUFBTSxFQUFFQSxHQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBQ0YsSUFBSSx5QkFBeUIsR0FBRztBQUNoQyxFQUFFLElBQUksRUFBRUEsR0FBQztBQUNULEVBQUUsS0FBSyxFQUFFQyxHQUFDO0FBQ1YsRUFBRSxHQUFHLEVBQUVELEdBQUM7QUFDUixFQUFFLE9BQU8sRUFBRUMsR0FBQztBQUNaLEVBQUUsSUFBSSxFQUFFRCxHQUFDO0FBQ1QsRUFBRSxNQUFNLEVBQUVBLEdBQUM7QUFDWCxDQUFDLENBQUM7QUFDRixJQUFJLGFBQWEsR0FBRztBQUNwQixFQUFFLElBQUksRUFBRUEsR0FBQztBQUNULEVBQUUsS0FBSyxFQUFFRSxHQUFDO0FBQ1YsRUFBRSxHQUFHLEVBQUVGLEdBQUM7QUFDUixFQUFFLElBQUksRUFBRUEsR0FBQztBQUNULEVBQUUsTUFBTSxFQUFFQSxHQUFDO0FBQ1gsRUFBRSxZQUFZLEVBQUVDLEdBQUM7QUFDakIsQ0FBQyxDQUFDO0FBQ0YsSUFBSSwwQkFBMEIsR0FBRztBQUNqQyxFQUFFLElBQUksRUFBRUQsR0FBQztBQUNULEVBQUUsS0FBSyxFQUFFRSxHQUFDO0FBQ1YsRUFBRSxHQUFHLEVBQUVGLEdBQUM7QUFDUixFQUFFLElBQUksRUFBRUEsR0FBQztBQUNULEVBQUUsTUFBTSxFQUFFQSxHQUFDO0FBQ1gsRUFBRSxNQUFNLEVBQUVBLEdBQUM7QUFDWCxFQUFFLFlBQVksRUFBRUMsR0FBQztBQUNqQixDQUFDLENBQUM7QUFDRixJQUFJLGFBQWEsR0FBRztBQUNwQixFQUFFLElBQUksRUFBRUQsR0FBQztBQUNULEVBQUUsS0FBSyxFQUFFRSxHQUFDO0FBQ1YsRUFBRSxHQUFHLEVBQUVGLEdBQUM7QUFDUixFQUFFLE9BQU8sRUFBRUUsR0FBQztBQUNaLEVBQUUsSUFBSSxFQUFFRixHQUFDO0FBQ1QsRUFBRSxNQUFNLEVBQUVBLEdBQUM7QUFDWCxFQUFFLFlBQVksRUFBRUUsR0FBQztBQUNqQixDQUFDLENBQUM7QUFDRixJQUFJLDBCQUEwQixHQUFHO0FBQ2pDLEVBQUUsSUFBSSxFQUFFRixHQUFDO0FBQ1QsRUFBRSxLQUFLLEVBQUVFLEdBQUM7QUFDVixFQUFFLEdBQUcsRUFBRUYsR0FBQztBQUNSLEVBQUUsT0FBTyxFQUFFRSxHQUFDO0FBQ1osRUFBRSxJQUFJLEVBQUVGLEdBQUM7QUFDVCxFQUFFLE1BQU0sRUFBRUEsR0FBQztBQUNYLEVBQUUsTUFBTSxFQUFFQSxHQUFDO0FBQ1gsRUFBRSxZQUFZLEVBQUVFLEdBQUM7QUFDakIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxXQUFXLENBQUMsQ0FBQyxFQUFFO0FBQ3hCLEVBQUUsT0FBTyxPQUFPLENBQUMsS0FBSyxXQUFXLENBQUM7QUFDbEMsQ0FBQztBQUNELFNBQVMsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUNyQixFQUFFLE9BQU8sT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDO0FBQy9CLENBQUM7QUFDRCxTQUFTLFNBQVMsQ0FBQyxDQUFDLEVBQUU7QUFDdEIsRUFBRSxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBQ0QsU0FBUyxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQ3JCLEVBQUUsT0FBTyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUM7QUFDL0IsQ0FBQztBQUNELFNBQVMsTUFBTSxDQUFDLENBQUMsRUFBRTtBQUNuQixFQUFFLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLGVBQWUsQ0FBQztBQUMvRCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFdBQVcsR0FBRztBQUN2QixFQUFFLElBQUk7QUFDTixJQUFJLE9BQU8sT0FBTyxJQUFJLEtBQUssV0FBVyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7QUFDcEUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQ2QsSUFBSSxPQUFPLEtBQUssQ0FBQztBQUNqQixHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxVQUFVLENBQUMsS0FBSyxFQUFFO0FBQzNCLEVBQUUsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFDRCxTQUFTLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRTtBQUNsQyxFQUFFLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDeEIsSUFBSSxPQUFPLFNBQVMsQ0FBQztBQUNyQixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDMUMsSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNoQztBQUNBLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtBQUNmLE1BQU0sT0FBTyxJQUFJLENBQUM7QUFDbEIsS0FBSyxNQUFNLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDdEQsTUFBTSxPQUFPLElBQUksQ0FBQztBQUNsQixLQUFLLE1BQU07QUFDWCxNQUFNLE9BQU8sSUFBSSxDQUFDO0FBQ2xCLEtBQUs7QUFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDZCxDQUFDO0FBQ0QsU0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRTtBQUN6QixFQUFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDckMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLElBQUksT0FBTyxDQUFDLENBQUM7QUFDYixHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDVCxDQUFDO0FBQ0QsU0FBUyxjQUFjLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRTtBQUNuQyxFQUFFLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLGNBQWMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRTtBQUM1QyxFQUFFLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxNQUFNLElBQUksS0FBSyxJQUFJLEdBQUcsQ0FBQztBQUM3RCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3hCLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFDRCxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFO0FBQzVCLEVBQUUsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUU7QUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ1YsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLEVBQUUsSUFBSSxNQUFNLENBQUM7QUFDYjtBQUNBLEVBQUUsSUFBSSxLQUFLLEVBQUU7QUFDYixJQUFJLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNsRCxHQUFHLE1BQU07QUFDVCxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMzQyxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFDRCxTQUFTLFlBQVksQ0FBQyxNQUFNLEVBQUU7QUFDOUIsRUFBRSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxFQUFFLEVBQUU7QUFDL0QsSUFBSSxPQUFPLFNBQVMsQ0FBQztBQUNyQixHQUFHLE1BQU07QUFDVCxJQUFJLE9BQU8sUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNoQyxHQUFHO0FBQ0gsQ0FBQztBQUNELFNBQVMsYUFBYSxDQUFDLE1BQU0sRUFBRTtBQUMvQixFQUFFLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLEVBQUUsRUFBRTtBQUMvRCxJQUFJLE9BQU8sU0FBUyxDQUFDO0FBQ3JCLEdBQUcsTUFBTTtBQUNULElBQUksT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUIsR0FBRztBQUNILENBQUM7QUFDRCxTQUFTLFdBQVcsQ0FBQyxRQUFRLEVBQUU7QUFDL0I7QUFDQSxFQUFFLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsS0FBSyxJQUFJLElBQUksUUFBUSxLQUFLLEVBQUUsRUFBRTtBQUNyRSxJQUFJLE9BQU8sU0FBUyxDQUFDO0FBQ3JCLEdBQUcsTUFBTTtBQUNULElBQUksSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDL0MsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsR0FBRztBQUNILENBQUM7QUFDRCxTQUFTLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRTtBQUM3QyxFQUFFLElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQzdCLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztBQUN2QixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztBQUNuQyxNQUFNLE9BQU8sR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ3JELEVBQUUsT0FBTyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUMzQyxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFVBQVUsQ0FBQyxJQUFJLEVBQUU7QUFDMUIsRUFBRSxPQUFPLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUNELFNBQVMsVUFBVSxDQUFDLElBQUksRUFBRTtBQUMxQixFQUFFLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDdEMsQ0FBQztBQUNELFNBQVMsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7QUFDbEMsRUFBRSxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDO0FBQzVDLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0FBQy9DO0FBQ0EsRUFBRSxJQUFJLFFBQVEsS0FBSyxDQUFDLEVBQUU7QUFDdEIsSUFBSSxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3pDLEdBQUcsTUFBTTtBQUNULElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVFLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFlBQVksQ0FBQyxHQUFHLEVBQUU7QUFDM0IsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxD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TDtBQUNBLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxHQUFHLENBQUM7QUFDbEMsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDeEMsUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNELEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsT0FBTyxDQUFDLElBQUksRUFBRTtBQUMxQyxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQzFGLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLE9BQU8sR0FBRztBQUN0QyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ2pELEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsT0FBTyxDQUFDLFFBQVEsRUFBRTtBQUM5QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFF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SSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDaEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEdBQUcsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFO0FBQzdDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDcEMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQzNDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDcEMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbEQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsU0FBUyxNQUFNLENBQUMsS0FBSyxFQUFFO0FBQ3pDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO0FBQ3pDLE1BQU0sT0FBTyxLQUFLLENBQUM7QUFDbkIsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FB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Q0FBQyxDQUFDO0FBQzlCO0FBQ0E7QUFDQSxNQUFNLEtBQUssSUFBSTtBQUNmLFFBQVEsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUI7QUFDQSxNQUFNLEtBQUssR0FBRztBQUNkLFFBQVEsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakM7QUFDQSxNQUFNLEtBQUssSUFBSTtBQUNmLFFBQVEsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUI7QUFDQSxNQUFNLEtBQUssR0FBRztBQUNkLFFBQVEsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakM7QUFDQSxNQUFNLEtBQUssSUFBSTtBQUNmLFFBQVEsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUI7QUFDQSxNQUFNLEtBQUssR0FBRztBQUNkLFFBQVEsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakM7QUFDQSxNQUFNLEtBQUssR0FBRztBQUNkLFFBQVEsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakM7QUFDQSxNQUFNLEtBQUssSUFBSTtBQUNmLFFBQVEsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUI7QUFDQSxNQUFNLEtBQUssR0FBRztBQUNkLFFBQVEsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakM7QUFDQSxNQUFNLEtBQUssSUFBSTtBQUNmLFFBQVEsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUI7QUFDQSxNQUFNLEtBQUssR0FBRztBQUNkLFFBQVEsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDbkM7QUFDQSxNQUFNLEtBQUssS0FBSztBQUNoQixRQUFRLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsTUFBTSxLQUFLLEdBQUc7QUFDZCxRQUFRLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2pDO0FBQ0EsTUFBTSxLQUFLLElBQUk7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S0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0FBQ2xGLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUMvQixJQUFJLElBQUksRUFBRSxJQUFJO0FBQ2QsSUFBSSxLQUFLLEVBQUUsS0FBSztBQUNoQixJQUFJLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0FBQzFHLEdBQUcsQ0FBQztBQUNKLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7QUFDeEMsSUFBSSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDNUMsSUFBSSxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFDckQsSUFBSSxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDL0MsSUFBSSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDNUMsSUFBSSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDekMsSUFBSSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7QUFDcEIsSUFBSSxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87QUFDeEIsSUFBSSxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87QUFDeEIsSUFBSSxZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVk7QUFDbEMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQztBQUN2QixNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEM7QUFDQSxFQUFFLElBQUksVUFBVSxHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDdEQsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUN4QixNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEI7QUFDQSxFQUFFLElBQUksV0FBVyxLQUFLLENBQUMsRUFBRTtBQUN6QixJQUFJLEVBQUUsSUFBSSxXQUFXLENBQUM7QUFDdEI7QUFDQSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3QixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU87QUFDVCxJQUFJLEVBQUUsRUFBRSxFQUFFO0FBQ1YsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUNSLEdBQUcsQ0FBQztBQUNKLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxTQUFTLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFO0FBQ3JGLEVBQUUsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU87QUFDNUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztBQUN2QjtBQUNBLEVBQUUsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQ2xELElBQUksSUFBSSxrQkFBa0IsR0FBRyxVQUFVLElBQUksSUFBSTtBQUMvQyxRQUFRLElBQUksR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRTtBQUM5RCxNQUFNLElBQUksRUFBRSxrQkFBa0I7QUFDOUIsTUFBTSxjQUFjLEVBQUUsY0FBYztBQUNwQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ1IsSUFBSSxPQUFPLE9BQU8sR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQyxHQUFHLE1BQU07QUFDVCxJQUFJLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUUsY0FBYyxHQUFHLElBQUksR0FBRyx3QkFBd0IsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2xILEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsU0FBUyxZQUFZLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDMUMsRUFBRSxJQUFJLE1BQU0sS0FBSyxLQUFLLENBQUMsRUFBRTtBQUN6QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLEVBQUUsQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQy9ELElBQUksTUFBTSxFQUFFLE1BQU07QUFDbEIsSUFBSSxXQUFXLEVBQUUsSUFBSTtBQUNyQixHQUFHLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ2pELENBQUM7QUFDRDtBQUNBLFNBQVMsVUFBVSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUU7QUFDakMsRUFBRSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ25ELEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2IsRUFBRSxJQUFJLFVBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUM1QyxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QztBQUNBLEVBQUUsSUFBSSxRQUFRLEVBQUU7QUFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ2IsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ2IsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0IsR0FBRyxNQUFNO0FBQ1QsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0IsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0IsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFDRDtBQUNBLFNBQVMsVUFBVSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUU7QUFDckcsRUFBRSxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3QjtBQUNBLEVBQUUsSUFBSSxRQUFRLEVBQUU7QUFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ2IsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUI7QUFDQSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO0FBQzlDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNmLEtBQUs7QUFDTCxHQUFHLE1BQU07QUFDVCxJQUFJLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM5QixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO0FBQzVDLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO0FBQ3hELE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNmLE1BQU0sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4QyxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLGFBQWEsRUFBRTtBQUNyQixJQUFJLElBQUksQ0FBQyxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtBQUM1RCxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDZixLQUFLLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUN4QixNQUFNLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDZixNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDZixNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzQyxLQUFLLE1BQU07QUFDWCxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDZixNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUMsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ2YsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzFDLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksWUFBWSxFQUFFO0FBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFDckMsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFDRDtBQUNBO0FBQ0EsSUFBSSxpQkFBaUIsR0FBRztBQUN4QixFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ1YsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNSLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDVCxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ1gsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUNYLEVBQUUsV0FBVyxFQUFFLENBQUM7QUFDaEIsQ0FBQztBQUNELElBQUkscUJBQXFCLEdBQUc7QUFDNUIsRUFBRSxVQUFVLEVBQUUsQ0FBQztBQUNmLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDWixFQUFFLElBQUksRUFBRSxDQUFDO0FBQ1QsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUNYLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDWCxFQUFFLFdBQVcsRUFBRSxDQUFDO0FBQ2hCLENBQUM7QUFDRCxJQUFJLHdCQUF3QixHQUFHO0FBQy9CLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDWixFQUFFLElBQUksRUFBRSxDQUFDO0FBQ1QsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUNYLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDWCxFQUFFLFdBQVcsRUFBRSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxZQUFZLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUM7QUFDdEYsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQztBQUN2RyxJQUFJLG1CQUFtQixHQUFHLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUN6RjtBQUNBLFNBQVMsYUFBYSxDQUFDLElBQUksRUFBRTtBQUM3QixFQUFFLElBQUksVUFBVSxHQUFHO0FBQ25CLElBQUksSUFBSSxFQUFFLE1BQU07QUFDaEIsSUFBSSxLQUFLLEVBQUUsTUFBTTtBQUNqQixJQUFJLEtBQUssRUFBRSxPQUFPO0FBQ2xCLElBQUksTUFBTSxFQUFFLE9BQU87QUFDbkIsSUFBSSxHQUFHLEVBQUUsS0FBSztBQUNkLElBQUksSUFBSSxFQUFFLEtBQUs7QUFDZixJQUFJLElBQUksRUFBRSxNQUFNO0FBQ2hCLElBQUksS0FBSyxFQUFFLE1BQU07QUFDakIsSUFBSSxNQUFNLEVBQUUsUUFBUTtBQUNwQixJQUFJLE9BQU8sRUFBRSxRQUFRO0FBQ3JCLElBQUksT0FBTyxFQUFFLFNBQVM7QUFDdEIsSUFBSSxRQUFRLEVBQUUsU0FBUztBQUN2QixJQUFJLE1BQU0sRUFBRSxRQUFRO0FBQ3BCLElBQUksT0FBTyxFQUFFLFFBQVE7QUFDckIsSUFBSSxXQUFXLEVBQUUsYUFBYTtBQUM5QixJQUFJLFlBQVksRUFBRSxhQUFhO0FBQy9CLElBQUksT0FBTyxFQUFFLFNBQVM7QUFDdEIsSUFBSSxRQUFRLEVBQUUsU0FBUztBQUN2QixJQUFJLFVBQVUsRUFBRSxZQUFZO0FBQzVCLElBQUksV0FBVyxFQUFFLFlBQVk7QUFDN0IsSUFBSSxXQUFXLEVBQUUsWUFBWTtBQUM3QixJQUFJLFFBQVEsRUFBRSxVQUFVO0FBQ3hCLElBQUksU0FBUyxFQUFFLFVBQVU7QUFDekIsSUFBSSxPQUFPLEVBQUUsU0FBUztBQUN0QixHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDeEIsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwRCxFQUFFLE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUU7QUFDNUIsRUFBRSxJQUFJLElBQUksR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDO0FBQzNELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO0FBQ25DLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUM3QixFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNaO0FBQ0EsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUM5QixJQUFJLEtBQUssSUFBSSxTQUFTLEdBQUcsK0JBQStCLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxFQUFFLEVBQUUsSUFBSSxHQUFHO0FBQzdHLE1BQU0sSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUMxQjtBQUNBLE1BQU0sSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDL0IsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEMsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxPQUFPLEdBQUcsdUJBQXVCLENBQUMsR0FBRyxDQUFDLElBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUU7QUFDQSxJQUFJLElBQUksT0FBTyxFQUFFO0FBQ2pCLE1BQU0sT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZDLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQztBQUNBLElBQUksSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDcEQ7QUFDQSxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckIsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLEdBQUcsTUFBTTtBQUNULElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztBQUNmLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxJQUFJLFFBQVEsQ0FBQztBQUN0QixJQUFJLEVBQUUsRUFBRSxFQUFFO0FBQ1YsSUFBSSxJQUFJLEVBQUUsSUFBSTtBQUNkLElBQUksR0FBRyxFQUFFLEdBQUc7QUFDWixJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ1IsR0FBRyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFlBQVksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtBQUN4QyxFQUFFLElBQUksS0FBSyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLO0FBQ3pELE1BQU0sTUFBTSxHQUFHLFNBQVMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUU7QUFDeEMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFELElBQUksSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNELElBQUksT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyQyxHQUFHO0FBQ0gsTUFBTSxNQUFNLEdBQUcsU0FBUyxNQUFNLENBQUMsSUFBSSxFQUFFO0FBQ3JDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO0FBQ3hCLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO0FBQ3JDLFFBQVEsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzRSxPQUFPLE1BQU0sT0FBTyxDQUFDLENBQUM7QUFDdEIsS0FBSyxNQUFNO0FBQ1gsTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3QyxLQUFLO0FBQ0wsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtBQUNqQixJQUFJLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hELEdBQUc7QUFDSDtBQUNBLEVBQUUsS0FBSyxJQUFJLFVBQVUsR0FBRywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxFQUFFLEVBQUUsSUFBSSxHQUFHO0FBQzdHLElBQUksSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUM1QixJQUFJLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3QjtBQUNBLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUM5QixNQUFNLE9BQU8sTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqQyxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekUsQ0FBQztBQUNEO0FBQ0EsU0FBUyxRQUFRLENBQUMsT0FBTyxFQUFFO0FBQzNCLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRTtBQUNmLE1BQU0sSUFBSSxDQUFDO0FBQ1g7QUFDQSxFQUFFLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUU7QUFDN0UsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkMsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDNUQsR0FBRyxNQUFNO0FBQ1QsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMvQixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxRQUFRLGdCQUFnQixZQUFZO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxRQUFRLENBQUMsTUFBTSxFQUFFO0FBQzVCLElBQUksSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDO0FBQ25ELElBQUksSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ3RKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDbEUsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJO0FBQ2hCLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNqQjtBQUNBLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUNsQixNQUFNLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUY7QUFDQSxNQUFNLElBQUksU0FBUyxFQUFFO0FBQ3JCLFFBQVEsSUFBSSxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hELFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQixRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsT0FBTyxNQUFNO0FBQ2IsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN0QyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNqQyxRQUFRLE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDN0UsUUFBUSxDQUFDLEdBQUcsT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7QUFDL0IsUUFBUSxDQUFDLEdBQUcsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDaEMsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztBQUNoQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFFBQVEsQ0FBQyxHQUFHLEdBQUcsU0FBUyxHQUFHLEdBQUc7QUFDaEMsSUFBSSxPQUFPLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzVCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLFFBQVEsQ0FBQyxLQUFLLEdBQUcsU0FBUyxLQUFLLEdBQUc7QUFDcEMsSUFBSSxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO0FBQ3ZDLFFBQVEsSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsUUFBUSxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMzQixRQUFRLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLFFBQVEsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdkIsUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNyQixRQUFRLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLFFBQVEsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEIsUUFBUSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN4QixRQUFRLFdBQVcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUI7QUFDQSxJQUFJLE9BQU8sT0FBTyxDQUFDO0FBQ25CLE1BQU0sSUFBSSxFQUFFLElBQUk7QUFDaEIsTUFBTSxLQUFLLEVBQUUsS0FBSztBQUNsQixNQUFNLEdBQUcsRUFBRSxHQUFHO0FBQ2QsTUFBTSxJQUFJLEVBQUUsSUFBSTtBQUNoQixNQUFNLE1BQU0sRUFBRSxNQUFNO0FBQ3BCLE1BQU0sTUFBTSxFQUFFLE1BQU07QUFDcEIsTUFBTSxXQUFXLEVBQUUsV0FBVztBQUM5QixLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDYixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxRQUFRLENBQUMsR0FBRyxHQUFHLFNBQVMsR0FBRyxHQUFHO0FBQ2hDLElBQUksSUFBSSxVQUFVLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQztBQUN4QyxRQUFRLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQzVCLFFBQVEsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDNUIsUUFBUSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN0QixRQUFRLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDckIsUUFBUSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN0QixRQUFRLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLFFBQVEsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEIsUUFBUSxXQUFXLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQyxXQUFXLENBQUM7QUFDNUMsSUFBSSxPQUFPLE9BQU8sQ0FBQztBQUNuQixNQUFNLElBQUksRUFBRSxJQUFJO0FBQ2hCLE1BQU0sS0FBSyxFQUFFLEtBQUs7QUFDbEIsTUFBTSxHQUFHLEVBQUUsR0FBRztBQUNkLE1BQU0sSUFBSSxFQUFFLElBQUk7QUFDaEIsTUFBTSxNQUFNLEVBQUUsTUFBTTtBQUNwQixNQUFNLE1BQU0sRUFBRSxNQUFNO0FBQ3BCLE1BQU0sV0FBVyxFQUFFLFdBQVc7QUFDOUIsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2IsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxRQUFRLENBQUMsVUFBVSxHQUFHLFNBQVMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDM0QsSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLENBQUMsRUFBRTtBQUM1QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFDbkIsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQztBQUNqRDtBQUNBLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzFCLE1BQU0sT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQy9DLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxTQUFTLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3RFO0FBQ0EsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtBQUM1QixNQUFNLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMxRCxLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU8sSUFBSSxRQUFRLENBQUM7QUFDeEIsTUFBTSxFQUFFLEVBQUUsRUFBRTtBQUNaLE1BQU0sSUFBSSxFQUFFLFNBQVM7QUFDckIsTUFBTSxHQUFHLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7QUFDckMsS0FBSyxDQUFDLENBQUM7QUFDUCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLFFBQVEsQ0FBQyxVQUFVLEdBQUcsU0FBUyxVQUFVLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRTtBQUNuRSxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQzVCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUNuQixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUU7QUFDakMsTUFBTSxNQUFNLElBQUksb0JBQW9CLENBQUMsd0RBQXdELEdBQUcsT0FBTyxZQUFZLEdBQUcsY0FBYyxHQUFHLFlBQVksQ0FBQyxDQUFDO0FBQ3JKLEtBQUssTUFBTSxJQUFJLFlBQVksR0FBRyxDQUFDLFFBQVEsSUFBSSxZQUFZLEdBQUcsUUFBUSxFQUFFO0FBQ3BFO0FBQ0EsTUFBTSxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUN4RCxLQUFLLE1BQU07QUFDWCxNQUFNLE9BQU8sSUFBSSxRQUFRLENBQUM7QUFDMUIsUUFBUSxFQUFFLEVBQUUsWUFBWTtBQUN4QixRQUFRLElBQUksRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDO0FBQy9ELFFBQVEsR0FBRyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO0FBQ3ZDLE9BQU8sQ0FBQyxDQUFDO0FBQ1QsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEVBQUUsUUFBUSxDQUFDLFdBQVcsR0FBRyxTQUFTLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ2hFLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxDQUFDLEVBQUU7QUFDNUIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQ25CLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUM1QixNQUFNLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0FBQy9FLEtBQUssTUFBTTtBQUNYLE1BQU0sT0FBTyxJQUFJLFFBQVEsQ0FBQztBQUMxQixRQUFRLEVBQUUsRUFBRSxPQUFPLEdBQUcsSUFBSTtBQUMxQixRQUFRLElBQUksRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDO0FBQy9ELFFBQVEsR0FBRyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO0FBQ3ZDLE9BQU8sQ0FBQyxDQUFDO0FBQ1QsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEVBQUUsUUFBUSxDQUFDLFVBQVUsR0FBRyxTQUFTLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFO0FBQ3ZELElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7QUFDekIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2hCLEtBQUs7QUFDTDtBQUNBLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxFQUFFLENBQUM7QUFDcEIsSUFBSSxJQUFJLFNBQVMsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDbkU7QUFDQSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFO0FBQzVCLE1BQU0sT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzFELEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtBQUM5QixRQUFRLFlBQVksR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUN4RyxRQUFRLFVBQVUsR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQztBQUN4RCxRQUFRLGVBQWUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO0FBQzFELFFBQVEsa0JBQWtCLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztBQUMxRCxRQUFRLGdCQUFnQixHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO0FBQ3pGLFFBQVEsY0FBYyxHQUFHLGtCQUFrQixJQUFJLGdCQUFnQjtBQUMvRCxRQUFRLGVBQWUsR0FBRyxVQUFVLENBQUMsUUFBUSxJQUFJLFVBQVUsQ0FBQyxVQUFVO0FBQ3RFLFFBQVEsR0FBRyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxlQUFlLEtBQUssZUFBZSxFQUFFO0FBQ2hFLE1BQU0sTUFBTSxJQUFJLDZCQUE2QixDQUFDLHFFQUFxRSxDQUFDLENBQUM7QUFDckgsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLGdCQUFnQixJQUFJLGVBQWUsRUFBRTtBQUM3QyxNQUFNLE1BQU0sSUFBSSw2QkFBNkIsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0FBQ3hGLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxXQUFXLEdBQUcsZUFBZSxJQUFJLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7QUFDL0U7QUFDQSxJQUFJLElBQUksS0FBSztBQUNiLFFBQVEsYUFBYTtBQUNyQixRQUFRLE1BQU0sR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQzlDO0FBQ0EsSUFBSSxJQUFJLFdBQVcsRUFBRTtBQUNyQixNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQztBQUMvQixNQUFNLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQztBQUM1QyxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdkMsS0FBSyxNQUFNLElBQUksZUFBZSxFQUFFO0FBQ2hDLE1BQU0sS0FBSyxHQUFHLG1CQUFtQixDQUFDO0FBQ2xDLE1BQU0sYUFBYSxHQUFHLHdCQUF3QixDQUFDO0FBQy9DLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFDLEtBQUssTUFBTTtBQUNYLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQztBQUMzQixNQUFNLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQztBQUN4QyxLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBQzNCO0FBQ0EsSUFBSSxLQUFLLElBQUksVUFBVSxHQUFHLCtCQUErQixDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLFVBQVUsRUFBRSxFQUFFLElBQUksR0FBRztBQUMxRyxNQUFNLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7QUFDM0IsTUFBTSxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUI7QUFDQSxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDM0IsUUFBUSxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQzFCLE9BQU8sTUFBTSxJQUFJLFVBQVUsRUFBRTtBQUM3QixRQUFRLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekMsT0FBTyxNQUFNO0FBQ2IsUUFBUSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksSUFBSSxrQkFBa0IsR0FBRyxXQUFXLEdBQUcsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEdBQUcsZUFBZSxHQUFHLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxHQUFHLHVCQUF1QixDQUFDLFVBQVUsQ0FBQztBQUNySyxRQUFRLE9BQU8sR0FBRyxrQkFBa0IsSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN2RTtBQUNBLElBQUksSUFBSSxPQUFPLEVBQUU7QUFDakIsTUFBTSxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkMsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLElBQUksU0FBUyxHQUFHLFdBQVcsR0FBRyxlQUFlLENBQUMsVUFBVSxDQUFDLEdBQUcsZUFBZSxHQUFHLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxHQUFHLFVBQVU7QUFDN0gsUUFBUSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxDQUFDO0FBQy9ELFFBQVEsT0FBTyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsUUFBUSxXQUFXLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNsQyxRQUFRLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQztBQUM1QixNQUFNLEVBQUUsRUFBRSxPQUFPO0FBQ2pCLE1BQU0sSUFBSSxFQUFFLFNBQVM7QUFDckIsTUFBTSxDQUFDLEVBQUUsV0FBVztBQUNwQixNQUFNLEdBQUcsRUFBRSxHQUFHO0FBQ2QsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0EsSUFBSSxJQUFJLFVBQVUsQ0FBQyxPQUFPLElBQUksY0FBYyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUM5RSxNQUFNLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxzQ0FBc0MsR0FBRyxVQUFVLENBQUMsT0FBTyxHQUFHLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ3BKLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxRQUFRLENBQUMsT0FBTyxHQUFHLFNBQVMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDbEQsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtBQUN6QixNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7QUFDaEIsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLGFBQWEsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDO0FBQzFDLFFBQVEsSUFBSSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFDL0IsUUFBUSxVQUFVLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDO0FBQ0EsSUFBSSxPQUFPLG1CQUFtQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN6RSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEVBQUUsUUFBUSxDQUFDLFdBQVcsR0FBRyxTQUFTLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQzFELElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7QUFDekIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2hCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7QUFDbEQsUUFBUSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ25DLFFBQVEsVUFBVSxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDO0FBQ0EsSUFBSSxPQUFPLG1CQUFtQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN6RSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxRQUFRLENBQUMsUUFBUSxHQUFHLFNBQVMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDcEQsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtBQUN6QixNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7QUFDaEIsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLGNBQWMsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDO0FBQzVDLFFBQVEsSUFBSSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsUUFBUSxVQUFVLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDO0FBQ0EsSUFBSSxPQUFPLG1CQUFtQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyRSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLFFBQVEsQ0FBQyxVQUFVLEdBQUcsU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7QUFDN0QsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtBQUN6QixNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7QUFDaEIsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDL0MsTUFBTSxNQUFNLElBQUksb0JBQW9CLENBQUMsa0RBQWtELENBQUMsQ0FBQztBQUN6RixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksS0FBSyxHQUFHLElBQUk7QUFDcEIsUUFBUSxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU07QUFDbkMsUUFBUSxNQUFNLEdBQUcsWUFBWSxLQUFLLEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxZQUFZO0FBQzlELFFBQVEscUJBQXFCLEdBQUcsS0FBSyxDQUFDLGVBQWU7QUFDckQsUUFBUSxlQUFlLEdBQUcscUJBQXFCLEtBQUssS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLHFCQUFxQjtBQUN6RixRQUFRLFdBQVcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQ3RDLE1BQU0sTUFBTSxFQUFFLE1BQU07QUFDcEIsTUFBTSxlQUFlLEVBQUUsZUFBZTtBQUN0QyxNQUFNLFdBQVcsRUFBRSxJQUFJO0FBQ3ZCLEtBQUssQ0FBQztBQUNOLFFBQVEsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ2xFLFFBQVEsSUFBSSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQztBQUNsQyxRQUFRLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7QUFDeEMsUUFBUSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0FBQzVDLFFBQVEsT0FBTyxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDO0FBQ0EsSUFBSSxJQUFJLE9BQU8sRUFBRTtBQUNqQixNQUFNLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QyxLQUFLLE1BQU07QUFDWCxNQUFNLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDaEcsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLFFBQVEsQ0FBQyxVQUFVLEdBQUcsU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7QUFDN0QsSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtBQUN6QixNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7QUFDaEIsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNoRCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEVBQUUsUUFBUSxDQUFDLE9BQU8sR0FBRyxTQUFTLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ2xELElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7QUFDekIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2hCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztBQUNsQyxRQUFRLElBQUksR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzNCLFFBQVEsVUFBVSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQztBQUNBLElBQUksT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDcEUsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEVBQUUsUUFBUSxDQUFDLE9BQU8sR0FBRyxTQUFTLE9BQU8sQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO0FBQzNELElBQUksSUFBSSxXQUFXLEtBQUssS0FBSyxDQUFDLEVBQUU7QUFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNqQixNQUFNLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0FBQ3pGLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxPQUFPLEdBQUcsTUFBTSxZQUFZLE9BQU8sR0FBRyxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3hGO0FBQ0EsSUFBSSxJQUFJLFFBQVEsQ0FBQyxjQUFjLEVBQUU7QUFDakMsTUFBTSxNQUFNLElBQUksb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDOUMsS0FBSyxNQUFNO0FBQ1gsTUFBTSxPQUFPLElBQUksUUFBUSxDQUFDO0FBQzFCLFFBQVEsT0FBTyxFQUFFLE9BQU87QUFDeEIsT0FBTyxDQUFDLENBQUM7QUFDVCxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLFFBQVEsQ0FBQyxVQUFVLEdBQUcsU0FBUyxVQUFVLENBQUMsQ0FBQyxFQUFFO0FBQy9DLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUM7QUFDM0MsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7QUFDbEM7QUFDQSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEdBQUcsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFO0FBQ2xDLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsTUFBTSxDQUFDLHFCQUFxQixHQUFHLFNBQVMscUJBQXFCLENBQUMsSUFBSSxFQUFFO0FBQ3RFLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7QUFDekIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2hCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxxQkFBcUIsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7QUFDbEcsUUFBUSxNQUFNLEdBQUcscUJBQXFCLENBQUMsTUFBTTtBQUM3QyxRQUFRLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQyxlQUFlO0FBQy9ELFFBQVEsUUFBUSxHQUFHLHFCQUFxQixDQUFDLFFBQVEsQ0FBQztBQUNsRDtBQUNBLElBQUksT0FBTztBQUNYLE1BQU0sTUFBTSxFQUFFLE1BQU07QUFDcEIsTUFBTSxlQUFlLEVBQUUsZUFBZTtBQUN0QyxNQUFNLGNBQWMsRUFBRSxRQUFRO0FBQzlCLEtBQUssQ0FBQztBQUNOLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEdBQUcsU0FBUyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtBQUM5QyxJQUFJLElBQUksTUFBTSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQzNCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNqQixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNoQixLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hFLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxPQUFPLEdBQUc7QUFDdEMsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzlDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtBQUNqRCxJQUFJLElBQUksS0FBSyxHQUFHLEtBQUssS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSztBQUM3QyxRQUFRLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxhQUFhO0FBQ2pELFFBQVEsYUFBYSxHQUFHLG1CQUFtQixLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxtQkFBbUI7QUFDcEYsUUFBUSxxQkFBcUIsR0FBRyxLQUFLLENBQUMsZ0JBQWdCO0FBQ3RELFFBQVEsZ0JBQWdCLEdBQUcscUJBQXFCLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHLHFCQUFxQixDQUFDO0FBQzVGO0FBQ0EsSUFBSSxJQUFJLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDckQ7QUFDQSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDaEMsTUFBTSxPQUFPLElBQUksQ0FBQztBQUNsQixLQUFLLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDOUIsTUFBTSxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDckQsS0FBSyxNQUFNO0FBQ1gsTUFBTSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQzFCO0FBQ0EsTUFBTSxJQUFJLGFBQWEsSUFBSSxnQkFBZ0IsRUFBRTtBQUM3QyxRQUFRLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9DLFFBQVEsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3BDO0FBQ0EsUUFBUSxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMxRDtBQUNBLFFBQVEsS0FBSyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixPQUFPO0FBQ1A7QUFDQSxNQUFNLE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRTtBQUN6QixRQUFRLEVBQUUsRUFBRSxLQUFLO0FBQ2pCLFFBQVEsSUFBSSxFQUFFLElBQUk7QUFDbEIsT0FBTyxDQUFDLENBQUM7QUFDVCxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxDQUFDLFdBQVcsR0FBRyxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUU7QUFDcEQsSUFBSSxJQUFJLEtBQUssR0FBRyxNQUFNLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU07QUFDL0MsUUFBUSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU07QUFDN0IsUUFBUSxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWU7QUFDL0MsUUFBUSxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztBQUM5QztBQUNBLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDN0IsTUFBTSxNQUFNLEVBQUUsTUFBTTtBQUNwQixNQUFNLGVBQWUsRUFBRSxlQUFlO0FBQ3RDLE1BQU0sY0FBYyxFQUFFLGNBQWM7QUFDcEMsS0FBSyxDQUFDLENBQUM7QUFDUCxJQUFJLE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRTtBQUN2QixNQUFNLEdBQUcsRUFBRSxHQUFHO0FBQ2QsS0FBSyxDQUFDLENBQUM7QUFDUCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsU0FBUyxHQUFHLFNBQVMsU0FBUyxDQUFDLE1BQU0sRUFBRTtBQUNoRCxJQUFJLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztBQUM1QixNQUFNLE1BQU0sRUFBRSxNQUFNO0FBQ3BCLEtBQUssQ0FBQyxDQUFDO0FBQ1AsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsR0FBRyxHQUFHLFNBQVMsR0FBRyxDQUFDLE1BQU0sRUFBRTtBQUNwQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQ25DLElBQUksSUFBSSxVQUFVLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUM7QUFDM0QsUUFBUSxnQkFBZ0IsR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7QUFDdkksUUFBUSxlQUFlLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztBQUMxRCxRQUFRLGtCQUFrQixHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7QUFDMUQsUUFBUSxnQkFBZ0IsR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztBQUN6RixRQUFRLGNBQWMsR0FBRyxrQkFBa0IsSUFBSSxnQkFBZ0I7QUFDL0QsUUFBUSxlQUFlLEdBQUcsVUFBVSxDQUFDLFFBQVEsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDO0FBQ3ZFO0FBQ0EsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLGVBQWUsS0FBSyxlQUFlLEVBQUU7QUFDaEUsTUFBTSxNQUFNLElBQUksNkJBQTZCLENBQUMscUVBQXFFLENBQUMsQ0FBQztBQUNySCxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksZ0JBQWdCLElBQUksZUFBZSxFQUFFO0FBQzdDLE1BQU0sTUFBTSxJQUFJLDZCQUE2QixDQUFDLHdDQUF3QyxDQUFDLENBQUM7QUFDeEYsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLEtBQUssQ0FBQztBQUNkO0FBQ0EsSUFBSSxJQUFJLGdCQUFnQixFQUFFO0FBQzFCLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNqRixLQUFLLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDakQsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUN2RixLQUFLLE1BQU07QUFDWCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN4RDtBQUNBO0FBQ0EsTUFBTSxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDdkMsUUFBUSxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5RSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztBQUNyRCxRQUFRLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLFFBQVEsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QjtBQUNBLElBQUksT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFO0FBQ3ZCLE1BQU0sRUFBRSxFQUFFLEVBQUU7QUFDWixNQUFNLENBQUMsRUFBRSxDQUFDO0FBQ1YsS0FBSyxDQUFDLENBQUM7QUFDUCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsU0FBUyxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ3hDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDbkMsSUFBSSxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEQsSUFBSSxPQUFPLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEdBQUcsU0FBUyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQzFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDbkMsSUFBSSxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDM0QsSUFBSSxPQUFPLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDMUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLElBQUksQ0FBQztBQUNuQyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDZCxRQUFRLGNBQWMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3REO0FBQ0EsSUFBSSxRQUFRLGNBQWM7QUFDMUIsTUFBTSxLQUFLLE9BQU87QUFDbEIsUUFBUSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNwQjtBQUNBO0FBQ0EsTUFBTSxLQUFLLFVBQVUsQ0FBQztBQUN0QixNQUFNLEtBQUssUUFBUTtBQUNuQixRQUFRLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCO0FBQ0E7QUFDQSxNQUFNLEtBQUssT0FBTyxDQUFDO0FBQ25CLE1BQU0sS0FBSyxNQUFNO0FBQ2pCLFFBQVEsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7QUFDbkI7QUFDQTtBQUNBLE1BQU0sS0FBSyxPQUFPO0FBQ2xCLFFBQVEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDckI7QUFDQTtBQUNBLE1BQU0sS0FBSyxTQUFTO0FBQ3BCLFFBQVEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDckI7QUFDQTtBQUNBLE1BQU0sS0FBSyxTQUFTO0FBQ3BCLFFBQVEsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDMUIsUUFBUSxNQUFNO0FBQ2Q7QUFDQSxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksY0FBYyxLQUFLLE9BQU8sRUFBRTtBQUNwQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxjQUFjLEtBQUssVUFBVSxFQUFFO0FBQ3ZDLE1BQU0sSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLE1BQU0sQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoQyxLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEdBQUcsU0FBUyxLQUFLLENBQUMsSUFBSSxFQUFFO0FBQ3RDLElBQUksSUFBSSxVQUFVLENBQUM7QUFDbkI7QUFDQSxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN2SCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEdBQUcsU0FBUyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRTtBQUNqRCxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNoQixLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUN2SCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxjQUFjLEdBQUcsU0FBUyxjQUFjLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRTtBQUNwRSxJQUFJLElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQy9CLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQztBQUM5QixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNoQixLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDNUcsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsYUFBYSxHQUFHLFNBQVMsYUFBYSxDQUFDLElBQUksRUFBRTtBQUN0RCxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNoQixLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN0RyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxDQUFDLEtBQUssR0FBRyxTQUFTLEtBQUssQ0FBQyxNQUFNLEVBQUU7QUFDeEMsSUFBSSxJQUFJLEtBQUssR0FBRyxNQUFNLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU07QUFDL0MsUUFBUSxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU07QUFDbkMsUUFBUSxNQUFNLEdBQUcsWUFBWSxLQUFLLEtBQUssQ0FBQyxHQUFHLFVBQVUsR0FBRyxZQUFZO0FBQ3BFLFFBQVEscUJBQXFCLEdBQUcsS0FBSyxDQUFDLGVBQWU7QUFDckQsUUFBUSxlQUFlLEdBQUcscUJBQXFCLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHLHFCQUFxQjtBQUMxRixRQUFRLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxvQkFBb0I7QUFDMUQsUUFBUSxvQkFBb0IsR0FBRyxxQkFBcUIsS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcscUJBQXFCO0FBQy9GLFFBQVEsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLGFBQWE7QUFDakQsUUFBUSxhQUFhLEdBQUcsbUJBQW1CLEtBQUssS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLG1CQUFtQjtBQUNuRixRQUFRLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxZQUFZO0FBQy9DLFFBQVEsWUFBWSxHQUFHLGtCQUFrQixLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxrQkFBa0IsQ0FBQztBQUNsRjtBQUNBLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDdkIsTUFBTSxPQUFPLElBQUksQ0FBQztBQUNsQixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksR0FBRyxHQUFHLE1BQU0sS0FBSyxVQUFVLENBQUM7QUFDcEM7QUFDQSxJQUFJLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDbEM7QUFDQSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDYixJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ25HLElBQUksT0FBTyxDQUFDLENBQUM7QUFDYixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxDQUFDLFNBQVMsR0FBRyxTQUFTLFNBQVMsQ0FBQyxNQUFNLEVBQUU7QUFDaEQsSUFBSSxJQUFJLEtBQUssR0FBRyxNQUFNLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU07QUFDL0MsUUFBUSxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU07QUFDbkMsUUFBUSxNQUFNLEdBQUcsWUFBWSxLQUFLLEtBQUssQ0FBQyxHQUFHLFVBQVUsR0FBRyxZQUFZLENBQUM7QUFDckU7QUFDQSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO0FBQ3ZCLE1BQU0sT0FBTyxJQUFJLENBQUM7QUFDbEIsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLFVBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxLQUFLLFVBQVUsQ0FBQyxDQUFDO0FBQ25ELEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsYUFBYSxHQUFHLFNBQVMsYUFBYSxHQUFHO0FBQ2xELElBQUksT0FBTyxZQUFZLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQzlDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEdBQUcsU0FBUyxTQUFTLENBQUMsTUFBTSxFQUFFO0FBQ2hELElBQUksSUFBSSxLQUFLLEdBQUcsTUFBTSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNO0FBQy9DLFFBQVEscUJBQXFCLEdBQUcsS0FBSyxDQUFDLG9CQUFvQjtBQUMxRCxRQUFRLG9CQUFvQixHQUFHLHFCQUFxQixLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxxQkFBcUI7QUFDL0YsUUFBUSxxQkFBcUIsR0FBRyxLQUFLLENBQUMsZUFBZTtBQUNyRCxRQUFRLGVBQWUsR0FBRyxxQkFBcUIsS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcscUJBQXFCO0FBQzFGLFFBQVEsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLGFBQWE7QUFDakQsUUFBUSxhQUFhLEdBQUcsbUJBQW1CLEtBQUssS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLG1CQUFtQjtBQUNuRixRQUFRLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxhQUFhO0FBQ2pELFFBQVEsYUFBYSxHQUFHLG1CQUFtQixLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxtQkFBbUI7QUFDcEYsUUFBUSxrQkFBa0IsR0FBRyxLQUFLLENBQUMsWUFBWTtBQUMvQyxRQUFRLFlBQVksR0FBRyxrQkFBa0IsS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsa0JBQWtCO0FBQ2pGLFFBQVEsWUFBWSxHQUFHLEtBQUssQ0FBQyxNQUFNO0FBQ25DLFFBQVEsTUFBTSxHQUFHLFlBQVksS0FBSyxLQUFLLENBQUMsR0FBRyxVQUFVLEdBQUcsWUFBWSxDQUFDO0FBQ3JFO0FBQ0EsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUN2QixNQUFNLE9BQU8sSUFBSSxDQUFDO0FBQ2xCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxDQUFDLEdBQUcsYUFBYSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDckMsSUFBSSxPQUFPLENBQUMsR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sS0FBSyxVQUFVLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUMzSCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsU0FBUyxHQUFHLFNBQVMsU0FBUyxHQUFHO0FBQzFDLElBQUksT0FBTyxZQUFZLENBQUMsSUFBSSxFQUFFLCtCQUErQixFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RFLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLFNBQVMsTUFBTSxHQUFHO0FBQ3BDLElBQUksT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLGlDQUFpQyxDQUFDLENBQUM7QUFDekUsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEdBQUcsU0FBUyxTQUFTLEdBQUc7QUFDMUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUN2QixNQUFNLE9BQU8sSUFBSSxDQUFDO0FBQ2xCLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2xDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEdBQUcsU0FBUyxTQUFTLENBQUMsTUFBTSxFQUFFO0FBQ2hELElBQUksSUFBSSxLQUFLLEdBQUcsTUFBTSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNO0FBQy9DLFFBQVEsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLGFBQWE7QUFDakQsUUFBUSxhQUFhLEdBQUcsbUJBQW1CLEtBQUssS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLG1CQUFtQjtBQUNuRixRQUFRLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxXQUFXO0FBQzdDLFFBQVEsV0FBVyxHQUFHLGlCQUFpQixLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxpQkFBaUI7QUFDOUUsUUFBUSxxQkFBcUIsR0FBRyxLQUFLLENBQUMsa0JBQWtCO0FBQ3hELFFBQVEsa0JBQWtCLEdBQUcscUJBQXFCLEtBQUssS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLHFCQUFxQixDQUFDO0FBQzdGO0FBQ0EsSUFBSSxJQUFJLEdBQUcsR0FBRyxjQUFjLENBQUM7QUFDN0I7QUFDQSxJQUFJLElBQUksV0FBVyxJQUFJLGFBQWEsRUFBRTtBQUN0QyxNQUFNLElBQUksa0JBQWtCLEVBQUU7QUFDOUIsUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDO0FBQ25CLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxXQUFXLEVBQUU7QUFDdkIsUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDO0FBQ25CLE9BQU8sTUFBTSxJQUFJLGFBQWEsRUFBRTtBQUNoQyxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUM7QUFDcEIsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN6QyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsS0FBSyxHQUFHLFNBQVMsS0FBSyxDQUFDLElBQUksRUFBRTtBQUN0QyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNoQixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO0FBQ3ZCLE1BQU0sT0FBTyxJQUFJLENBQUM7QUFDbEIsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6RCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEdBQUcsU0FBUyxRQUFRLEdBQUc7QUFDeEMsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNqRCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxPQUFPLEdBQUc7QUFDdEMsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUMzQixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEdBQUcsU0FBUyxRQUFRLEdBQUc7QUFDeEMsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFDeEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsU0FBUyxHQUFHLFNBQVMsU0FBUyxHQUFHO0FBQzFDLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUMvQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxhQUFhLEdBQUcsU0FBUyxhQUFhLEdBQUc7QUFDbEQsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUMzRCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsU0FBUyxNQUFNLEdBQUc7QUFDcEMsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN4QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsU0FBUyxNQUFNLEdBQUc7QUFDcEMsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUMzQixHQUFH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LEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTSxXQUFXLEVBQUUsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywrRkFBK0YsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsMkVBQTJFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQywwREFBMEQsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFNLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLE1BQU0sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLCtEQUErRCxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdJQUFnSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLDBDQUEwQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBOzs7QUNBNTJkLElBQUEsVUFBYyxHQUFHLE1BQU07QUFDdkI7QUFDQSxDQUFD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TSxHQUFHLEVBQUUsQ0FBQztJQUNoQixJQUFJLEdBQUcsQ0FBQyxLQUFLO0FBQUUsUUFBQSxNQUFNLElBQUksQ0FBRyxFQUFBLEdBQUcsQ0FBQyxLQUFLLFVBQVUsQ0FBQztJQUNoRCxJQUFJLEdBQUcsQ0FBQyxNQUFNO0FBQUUsUUFBQSxNQUFNLElBQUksQ0FBRyxFQUFBLEdBQUcsQ0FBQyxNQUFNLFdBQVcsQ0FBQztJQUNuRCxJQUFJLEdBQUcsQ0FBQyxLQUFLO0FBQUUsUUFBQSxNQUFNLElBQUksQ0FBRyxFQUFBLEdBQUcsQ0FBQyxLQUFLLFVBQVUsQ0FBQztJQUNoRCxJQUFJLEdBQUcsQ0FBQyxJQUFJO0FBQUUsUUFBQSxNQUFNLElBQUksQ0FBRyxFQUFBLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQztJQUM3QyxJQUFJLEdBQUcsQ0FBQyxLQUFLO0FBQUUsUUFBQSxNQUFNLElBQUksQ0FBRyxFQUFBLEdBQUcsQ0FBQyxLQUFLLFVBQVUsQ0FBQztJQUNoRCxJQUFJLEdBQUcsQ0FBQyxPQUFPO0FBQUUsUUFBQSxNQUFNLElBQUksQ0FBRyxFQUFBLEdBQUcsQ0FBQyxPQUFPLFlBQVksQ0FBQztJQUN0RCxJQUFJLEdBQUcsQ0FBQyxPQUFPO1FBQUUsTUFBTSxJQUFJLENBQUcsRUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQSxVQUFBLENBQVksQ0FBQztJQUNsRSxJQUFJLEdBQUcsQ0FBQyxZQUFZO1FBQUUsTUFBTSxJQUFJLENBQUcsRUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQSxLQUFBLENBQU8sQ0FBQztBQUV2RSxJQUFBLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7QUFBRSxRQUFBLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzNFLElBQUEsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUVEO0FB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VUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsWUFBWSxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxjQUFjLFlBQVksTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtEQUFrRCxDQUFDLENBQUMsQ0FBQyxrTkFBa04sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyw0REFBNEQsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsNkNBQTZDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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QUFFLENBQUMsRUFBRSxDQUFDO0lBQ3RDLEdBQUcsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUV2QyxJQUFJLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdkMsS0FBSyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3hDLEVBQUUsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxHQUFHLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdEMsQ0FBQyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRXBDLEdBQUcsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxJQUFJLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdEMsQ0FBQyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRW5DLElBQUksRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN2QyxLQUFLLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEMsRUFBRSxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3JDLEdBQUcsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFcEMsTUFBTSxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzNDLE9BQU8sRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM1QyxHQUFHLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEMsSUFBSSxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3pDLENBQUMsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUV0QyxNQUFNLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDM0MsT0FBTyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzVDLEdBQUcsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxJQUFJLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDekMsQ0FBQyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0NBQ3pDLENBQUM7QUFFRjtBQUNPLE1BQU0sZUFBZSxHQUFHO0FBQzNCLElBQUEsR0FBRyxFQUFFLE1BQU1MLFVBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDM0IsSUFBQSxLQUFLLEVBQUUsTUFBTUEsVUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDNUMsSUFBQSxTQUFTLEVBQUUsTUFDUEEsVUFBUSxDQUFDLEtBQUssRUFBRTtTQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUM7U0FDZCxLQUFLLENBQUNLLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRCxJQUFBLFFBQVEsRUFBRSxNQUNOTCxVQUFRLENBQUMsS0FBSyxFQUFFO1NBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUNkLElBQUksQ0FBQ0ssVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9DLElBQUEsR0FBRyxFQUFFLE1BQU1MLFVBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQzNDLElBQUEsZUFBZSxFQUFFLE1BQU1BLFVBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQ3ZELElBQUEsR0FBRyxFQUFFLE1BQU1BLFVBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3pDLElBQUEsYUFBYSxFQUFFLE1BQU1BLFVBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ25ELElBQUEsR0FBRyxFQUFFLE1BQU1BLFVBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQzNDLElBQUEsZUFBZSxFQUFFLE1BQU1BLFVBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQ3ZELElBQUEsR0FBRyxFQUFFLE1BQU1BLFVBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3pDLElBQUEsYUFBYSxFQUFFLE1BQU1BLFVBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ25ELElBQUEsR0FBRyxFQUFFLE1BQU1BLFVBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFP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LENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPZSxlQUFPLEVBQUUsVUFBVSxFQUFFQSxlQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBT0EsZUFBTyxFQUFFLFVBQVUsRUFBRUEsZUFBTyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxD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Q0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUM5QyxDQUFDLFVBQVUsTUFBTSxDQUFDO0FBRWxCLElBQUksT0FBTyxNQUFNLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBRTtBQUMxQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFDRDtBQUNBLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU9BLGNBQU0sS0FBSyxXQUFXLEdBQUdBLGNBQU0sR0FBRyxPQUFPLElBQUksS0FBSyxXQUFXLEdBQUcsSUFBSSxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsR0FBRyxNQUFNLEdBQUcsRUFBRSxFQUFDO0FBQ3ZJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFFOUM7QUFDQSxJQUFJLE9BQU8sR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVLElBQUksT0FBTyxNQUFNLENBQUMsUUFBUSxLQUFLLFFBQVEsR0FBRyxVQUFVLEdBQUcsRUFBRSxFQUFFLE9BQU8sT0FBTyxHQUFHLENBQUMsRUFBRSxHQUFHLFVBQVUsR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFHLElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLEdBQUcsQ0FBQyxXQUFXLEtBQUssTUFBTSxJQUFJLEdBQUcsS0FBSyxNQUFNLENBQUMsU0FBUyxHQUFHLFFBQVEsR0FBRyxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDN1E7QUFDQSxTQUFTLGVBQWUsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsWUFBWSxXQUFXLENBQUMsRUFBRSxFQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsbUNBQW1D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QUMsTUFBTSxDQUFDO1NBQ3hELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdEUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQztBQUN4QixTQUFBLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQixTQUFBLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEYsU0FBQSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEcsU0FBQSxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsRCxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLGdCQUFBLENBQUEsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENB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LEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDcEIsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxTQUFTLEdBQWlCLElBQUksZUFBZSxDQUFDLFdBQVcsQ0FBQztBQUNsRSxTQUFBLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssS0FBSyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzlELElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ2xGLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDcEIsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxRQUFRLEdBQWlCLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQztBQUNoRSxTQUFBLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxLQUFJO1FBQ3hELElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNyQyxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDekUsU0FBQTtBQUFNLGFBQUE7QUFDSCxZQUFBLE9BQU8sR0FBRyxDQUFDO0FBQ2QsU0FBQTtBQUNMLEtBQUMsQ0FBQztTQUNELElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssZ0JBQUEsQ0FBQSxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDakYsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNwQixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUM7QUFDakQsU0FBQSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDdEQsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwQixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUM7QUFDbEQsU0FBQSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdEQsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDO0FBQzlDLFNBQUEsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDNUUsU0FBQSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDO0FBQzlDLFNBQUEsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLE9BQU8sS0FBSTtBQUMxQyxRQUFBLElBQUksR0FBRyxD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SSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JGLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0QsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxHQUFHLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDO1NBQ3hDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RCxTQUFBLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0RixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlELFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsSUFBSSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztTQUN6QyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJ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QUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvRCw0QkFBQSxLQUFLLE9BQU8sQ0FBQztBQUNiLDRCQUFBLEtBQUssUUFBUTtBQUNULGdDQUFBLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNqRSw0QkFBQSxLQUFLLE9BQU87QUFDUixnQ0FBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0QsNEJBQUEsS0FBSyxLQUFLLENBQUM7QUFDWCw0QkFBQSxLQUFLLE1BQU07QUFDUCxnQ0FBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0QsNEJBQUEsS0FBSyxNQUFNLENBQUM7QUFDWiw0QkFBQSxLQUFLLE9BQU87QUFDUixnQ0FBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0QsNEJBQUEsS0FBSyxRQUFRLENBQUM7QUFDZCw0QkFBQSxLQUFLLFNBQVM7QUFDVixnQ0FBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkUsNEJBQUEsS0FBSyxRQUFRLENBQUM7QUFDZCw0QkFBQSxLQUFLLFNBQVM7QUFDVixnQ0FBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkUsNEJBQUEsS0FBSyxhQUFhLENBQUM7QUFDbkIs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LENBQUM7QUFDTixHQUFHO0FBQ0gsQ0FBQzs7QUMzSEUsSUFBQyxDQUFDLENBQUNGLEdBQUMsQ0FBQzRCLEdBQUMsQ0FBR0MsR0FBQyxDQUFDQyxHQUFDLENBQUNDLEdBQUMsQ0FBQ0MsR0FBQyxDQUFDQyxHQUFDLENBQUMsRUFBRSxDQUFDQyxHQUFDLENBQUMsRUFBRSxDQUFDbkMsR0FBQyxDQUFDLG9FQUFvRSxTQUFTb0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRVYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUU1QixHQUFDLENBQUMsS0FBSyxFQUFFQSxHQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTdUMsR0FBQyxFQUFFLENBQUMsT0FBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU0sVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU9BLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVmLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQ2dCLEdBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRWQsR0FBQyxHQUFHL0IsR0FBQyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQytCLEdBQUMsQ0FBQy9CLEdBQUMsQ0FBQyxpQkFBaUIsR0FBRzhCLEdBQUMsRUFBRWUsR0FBQyxFQUFDLENBQUMsU0FBU0EsR0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQ2hCLEdBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDQSxHQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQ00sR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNXLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUNKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDSyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFSixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTSyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFZCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQ0ksR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUNFLEdBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDRixHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQ1EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRWIsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNnQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDUixHQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDUyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU0gsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTRyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBU0gsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBU0ksR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUVDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRXpELEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsU0FBU3dELEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFQyxHQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQSxHQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNDLEdBQUMsQ0FBQ0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDRCxHQUFDLENBQUNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcseUJBQXlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFNBQVNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzFELEdBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU3lELEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ3pELEdBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUzhDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOUMsR0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSXlDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQ2tCLEdBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUN4QixHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDbkMsR0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUNtQyxHQUFDLENBQUNBLEdBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUdLLEdBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUNRLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDWSxHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzVELEdBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsU0FBUytDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMvQyxHQUFDLENBQUMsR0FBRyxFQUFFQSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUzRELEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUzQixHQUFDLEVBQUUsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUMsQ0FBQyxHQUFHcUIsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQ04sR0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFTixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFTixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRW1CLEdBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFQSxHQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBU0gsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQ3BELEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsU0FBU21ELEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHbkQsR0FBQyxDQUFDLE9BQU8sRUFBRUEsR0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFb0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLEdBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDcEQsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVtRCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFZixHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxTQUFTdUIsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTRSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDN0QsR0FBQyxDQUFDLEVBQUUsRUFBRUEsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDOEMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQ1QsR0FBQyxDQUFDRyxHQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVQLEdBQUMsQ0FBQ0EsR0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDYyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNlLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNELEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQyxHQUFDLEVBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzVCLEdBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDRyxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUzBCLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQ2hDLEdBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDWSxHQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNWLEdBQUMsQ0FBQyxLQUFLLENBQUNsQyxHQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDNEIsR0FBQyxDQUFDLENBQUMsQ0FBdURhLEdBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDTixHQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQ1MsR0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQ0gsR0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDRyxHQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQyxDQUFDSCxHQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQ0QsR0FBQyxDQUFDWCxHQUFDLENBQUMsRUFBRSxDQUFDQyxHQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUNlLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDYixHQUFDLENBQUMsQ0FBQzs7QUNBbmlULElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQ2xDLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsRUFBRUEsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDa0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNsRCxHQUFDLENBQUMsR0FBRyxFQUFFNEMsR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDNUMsR0FBQyxDQUFDLEdBQUcsRUFBRTRDLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU0sVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPQSxHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTVyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBU1ksR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTUixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDM0QsR0FBQyxDQUFDLGFBQWEsRUFBRUEsR0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFpSyxTQUFTbUQsR0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDSixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQ2hELEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDK0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQ2hELEdBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0EsR0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxxQkFBcUIsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRW1ELEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxDQUFDbkQsR0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDK0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQ2hELEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMrQyxHQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRS9DLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8scUJBQXFCLENBQUMsU0FBUytDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTSixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTTSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQ0FoL0QsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsVUFBVSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDakQsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJb0MsR0FBQyxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDQyxHQUFDLENBQUMsR0FBRyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUNJLEdBQUMsQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFLLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDSixHQUFDLENBQUMsR0FBRyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBT3JDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDcUMsR0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJRCxHQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRXBDLEdBQUMsQ0FBQ3NDLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQ3RDLEdBQUMsQ0FBQ3NDLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDRSxHQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDeEMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxvQkFBb0IsR0FBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUlvQyxHQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUNLLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsMk9BQTJPLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsV0FBVyxFQUFFLE9BQU8sTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLE1BQU0sRUFBRSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUNELEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU9LLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQ1QsR0FBQyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQywyQkFBMkIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUNBLEdBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNDLEdBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxjQUFjLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsY0FBYyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsa0NBQWtDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDSSxHQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDSixHQUFDLENBQUMsR0FBRyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUcsQ0FBQyxDQUFJLElBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPckMsR0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDdUMsR0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUdDLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBSSxJQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFNLFlBQWMsQ0FBQyxRQUFRLENBQUN6QyxDQUFDLENBQUMsVUFBVSxDQUFDK0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQ0ksQ0FBQyxDQUFDLGVBQWUsQ0FBQ0YsQ0FBQyxDQUFDLE1BQU0sQ0FBQ0gsQ0FB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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL2J1aWxkL2Nqcy1icm93c2VyL2x1eG9uLmpzIiwiLi4vc3JjL3NldHRpbmdzLnRzIiwiLi4vc3JjL2FwaS9yZXN1bHQudHMiLCIuLi9ub2RlX21vZHVsZXMvcGFyc2ltbW9uL2J1aWxkL3BhcnNpbW1vbi51bWQubWluLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Vtb2ppLXJlZ2V4L2luZGV4LmpzIiwiLi4vc3JjL3V0aWwvbm9ybWFsaXplLnRzIiwiLi4vc3JjL2RhdGEtbW9kZWwvdmFsdWUudHMiLCIuLi9zcmMvYXBpL2RhdGEtYXJyYXkudHMiLCIuLi9zcmMvdXRpbC9sb2NhbGUudHMiLCIuLi9zcmMvdWkvcmVuZGVyLnRzIiwiLi4vbm9kZV9tb2R1bGVzL3BhcGFwYXJzZS9wYXBhcGFyc2UubWluLmpzIiwiLi4vc3JjL2V4cHJlc3Npb24vZmllbGQudHMiLCIuLi9zcmMvZGF0YS1pbmRleC9zb3VyY2UudHMiLCIuLi9zcmMvZXhwcmVzc2lvbi9wYXJzZS50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC9pbmxpbmUtZmllbGQudHMiLCIuLi9zcmMvZGF0YS1tb2RlbC9tYXJrZG93bi50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC9tYXJrZG93bi1maWxlLnRzIiwiLi4vc3JjL2RhdGEtaW1wb3J0L2Nzdi50cyIsIi4uL3NyYy9kYXRhLW1vZGVsL3RyYW5zZmVyYWJsZS50cyIsIi4uL25vZGVfbW9kdWxlcy9sb2NhbGZvcmFnZS9kaXN0L2xvY2FsZm9yYWdlLmpzIiwiLi4vc3JjL2RhdGEtaW1wb3J0L3BlcnNpc3Rlci50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC93ZWItd29ya2VyL2ltcG9ydC1tYW5hZ2VyLnRzIiwiLi4vc3JjL2RhdGEtaW5kZXgvaW5kZXgudHMiLCIuLi9zcmMvZGF0YS1pbmRleC9yZXNvbHZlci50cyIsIi4uL3NyYy9leHByZXNzaW9uL2Z1bmN0aW9ucy50cyIsIi4uL3NyYy9leHByZXNzaW9uL2JpbmFyeW9wLnRzIiwiLi4vc3JjL2V4cHJlc3Npb24vY29udGV4dC50cyIsIi4uL3NyYy9xdWVyeS9lbmdpbmUudHMiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFyZS12ZXJzaW9ucy9pbmRleC5tanMiLCIuLi9ub2RlX21vZHVsZXMvcHJlYWN0L2Rpc3QvcHJlYWN0Lm1vZHVsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9wcmVhY3QvaG9va3MvZGlzdC9ob29rcy5tb2R1bGUuanMiLCIuLi9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9kaXN0L2NvbXBhdC5tb2R1bGUuanMiLCIuLi9zcmMvdXRpbC9tZWRpYS50cyIsIi4uL3NyYy91aS9tYXJrZG93bi50c3giLCIuLi9zcmMvdWkvdmlld3MvdGFzay12aWV3LnRzeCIsIi4uL3NyYy91aS92aWV3cy9saXN0LXZpZXcudHN4IiwiLi4vc3JjL3VpL3ZpZXdzL3RhYmxlLXZpZXcudHN4IiwiLi4vc3JjL3F1ZXJ5L3F1ZXJ5LnRzIiwiLi4vc3JjL3F1ZXJ5L3BhcnNlLnRzIiwiLi4vbm9kZV9tb2R1bGVzL29ic2lkaWFuLWNhbGVuZGFyLXVpL2Rpc3QvaW5kZXgubWpzIiwiLi4vc3JjL3VpL3JlZnJlc2hhYmxlLXZpZXcudHMiLCIuLi9zcmMvdWkvdmlld3MvY2FsZW5kYXItdmlldy50cyIsIi4uL3NyYy9hcGkvaW5saW5lLWFwaS50cyIsIi4uL3NyYy91aS92aWV3cy9qcy12aWV3LnRzIiwiLi4vc3JjL3VpL2V4cG9ydC9tYXJrZG93bi50cyIsIi4uL3NyYy9hcGkvcGx1Z2luLWFwaS50cyIsIi4uL3NyYy91aS92aWV3cy9pbmxpbmUtdmlldy50cyIsIi4uL3NyYy91aS92aWV3cy9pbmxpbmUtZmllbGQudHN4IiwiLi4vc3JjL3VpL2xwLXJlbmRlci50cyIsIi4uL3NyYy9tYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpudWxsLCJuYW1lcyI6WyJuIiwicyIsImwiLCJ0aGlzIiwiRGF0ZVRpbWUiLCJQLmFsdCIsIlAucmVnZXgiLCJQLndoaXRlc3BhY2UiLCJQLmFueSIsIkR1cmF0aW9uIiwiTWFya2Rvd25SZW5kZXJlciIsIlAuc2VxTWFwIiwiUC5zZXEiLCJQLm9wdFdoaXRlc3BhY2UiLCJQLmN1c3RvbSIsIlAuY3JlYXRlTGFuZ3VhZ2UiLCJQLnJlZ2V4cCIsIlAuc3RyaW5nIiwiUC5ub25lT2YiLCJQLnN1Y2NlZWQiLCJQLmZhaWwiLCJMaXN0SXRlbSIsIlBhcGEucGFyc2UiLCJTeXN0ZW1ab25lIiwicmVxdWlyZSIsImdsb2JhbCIsIkNvbXBvbmVudCIsIkRhdGF2aWV3SW1wb3J0V29ya2VyIiwiVEZpbGUiLCJURm9sZGVyIiwidSIsInQiLCJvIiwiciIsImYiLCJlIiwiYyIsImEiLCJoIiwidiIsInkiLCJwIiwiZCIsIl8iLCJrIiwiYiIsIm0iLCJnIiwiaiIsInoiLCJ3IiwieCIsIlAiLCJOIiwiTSIsIkEiLCJDIiwiSCIsIiQiLCJUIiwiSSIsIk8iLCJMIiwiUyIsInEiLCJCIiwiRCIsIkYiLCJpIiwiY3JlYXRlQ29udGV4dCIsInVzZVJlZiIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJGcmFnbWVudCIsInVzZVN0YXRlIiwiTWFya2Rvd25SZW5kZXJDaGlsZCIsInJlbmRlciIsInVubW91bnRDb21wb25lbnRBdE5vZGUiLCJQbGF0Zm9ybSIsIlAuc2VwQnkiLCJXaWRnZXRUeXBlIiwiZWRpdG9yRWRpdG9yRmllbGQiLCJlZGl0b3JWaWV3RmllbGQiLCJ2aWV3Iiwic3ludGF4VHJlZSIsIkRlY29yYXRpb24iLCJWaWV3UGx1Z2luIiwiZWRpdG9yTGl2ZVByZXZpZXdGaWVsZCIsIlBsdWdpbiIsImRlYm91bmNlIiwiUGx1Z2luU2V0dGluZ1RhYiIsIlNldHRpbmciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUQ7QUFDQSxTQUFTLGlCQUFpQixD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TSxHQUFHLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUMzQyxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFVBQVUsQ0FBQyxJQUFJLEVBQUU7QUFDMUIsRUFBRSxPQUFPLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUNELFNBQVMsVUFBVSxDQUFDLElBQUksRUFBRTtBQUMxQixFQUFFLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDdEMsQ0FBQztBQUNELFNBQVMsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7QUFDbEMsRUFBRSxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDO0FBQzVDLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0FBQy9DO0FBQ0EsRUFBRSxJQUFJLFFBQVEsS0FBSyxDQUFDLEVBQUU7QUFDdEIsSUFBSSxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3pDLEdBQUcsTUFBTTtBQUNULElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVFLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFlBQVksQ0FBQyxHQUFHLEVBQUU7QUFDM0IsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxD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TDtBQUNBLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxHQUFHLENBQUM7QUFDbEMsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDeEMsUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNELEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsT0FBTyxDQUFDLElBQUksRUFBRTtBQUMxQyxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQzFGLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLE9BQU8sR0FBRztBQUN0QyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ2pELEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsT0FBTyxDQUFDLFFBQVEsRUFBRTtBQUM5QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFF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SSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDaEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEdBQUcsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFO0FBQzdDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDcEMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQzNDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDcEMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbEQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsU0FBUyxNQUFNLENBQUMsS0FBSyxFQUFFO0FBQ3pDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO0FBQ3pDLE1BQU0sT0FBTyxLQUFLLENBQUM7QUFDbkIsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FB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Q0FBQyxDQUFDO0FBQzlCO0FBQ0E7QUFDQSxNQUFNLEtBQUssSUFBSTtBQUNmLFFBQVEsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUI7QUFDQSxNQUFNLEtBQUssR0FBRztBQUNkLFFBQVEsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakM7QUFDQSxNQUFNLEtBQUssSUFBSTtBQUNmLFFBQVEsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUI7QUFDQSxNQUFNLEtBQUssR0FBRztBQUNkLFFBQVEsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakM7QUFDQSxNQUFNLEtBQUssSUFBSTtBQUNmLFFBQVEsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUI7QUFDQSxNQUFNLEtBQUssR0FBRztBQUNkLFFBQVEsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakM7QUFDQSxNQUFNLEtBQUssR0FBRztBQUNkLFFBQVEsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakM7QUFDQSxNQUFNLEtBQUssSUFBSTtBQUNmLFFBQVEsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUI7QUFDQSxNQUFNLEtBQUssR0FBRztBQUNkLFFBQVEsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakM7QUFDQSxNQUFNLEtBQUssSUFBSTtBQUNmLFFBQVEsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUI7QUFDQSxNQUFNLEtBQUssR0FBRztBQUNkLFFBQVEsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDbkM7QUFDQSxNQUFNLEtBQUssS0FBSztBQUNoQixRQUFRLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsTUFBTSxLQUFLLEdBQUc7QUFDZCxRQUFRLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2pDO0FBQ0EsTUFBTSxLQUFLLElBQUk7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S0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0FBQ2xGLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUMvQixJQUFJLElBQUksRUFBRSxJQUFJO0FBQ2QsSUFBSSxLQUFLLEVBQUUsS0FBSztBQUNoQixJQUFJLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0FBQzFHLEdBQUcsQ0FBQztBQUNKLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7QUFDeEMsSUFBSSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDNUMsSUFBSSxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFDckQsSUFBSSxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDL0MsSUFBSSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDNUMsSUFBSSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDekMsSUFBSSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7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QUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxPQUFPLEdBQUc7QUFDdEMsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUMzQixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEdBQUcsU0FBUyxRQUFRLEdBQUc7QUFDeEMsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFDeEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsU0FBUyxHQUFHLFNBQVMsU0FBUyxHQUFHO0FBQzFDLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUMvQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxhQUFhLEdBQUcsU0FBUyxhQUFhLEdBQUc7QUFDbEQsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUMzRCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsU0FBUyxNQUFNLEdBQUc7QUFDcEMsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN4QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsU0FBUyxNQUFNLEdBQUc7QUFDcEMsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUMzQixHQUFH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LEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTSxXQUFXLEVBQUUsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywrRkFBK0YsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsMkVBQTJFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQywwREFBMEQsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFNLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLE1BQU0sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLCtEQUErRCxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdJQUFnSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLDBDQUEwQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBOzs7QUNBNTJkLElBQUEsVUFBYyxHQUFHLE1BQU07QUFDdkI7QUFDQSxDQUFD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TSxHQUFHLEVBQUUsQ0FBQztJQUNoQixJQUFJLEdBQUcsQ0FBQyxLQUFLO0FBQUUsUUFBQSxNQUFNLElBQUksQ0FBRyxFQUFBLEdBQUcsQ0FBQyxLQUFLLFVBQVUsQ0FBQztJQUNoRCxJQUFJLEdBQUcsQ0FBQyxNQUFNO0FBQUUsUUFBQSxNQUFNLElBQUksQ0FBRyxFQUFBLEdBQUcsQ0FBQyxNQUFNLFdBQVcsQ0FBQztJQUNuRCxJQUFJLEdBQUcsQ0FBQyxLQUFLO0FBQUUsUUFBQSxNQUFNLElBQUksQ0FBRyxFQUFBLEdBQUcsQ0FBQyxLQUFLLFVBQVUsQ0FBQztJQUNoRCxJQUFJLEdBQUcsQ0FBQyxJQUFJO0FBQUUsUUFBQSxNQUFNLElBQUksQ0FBRyxFQUFBLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQztJQUM3QyxJQUFJLEdBQUcsQ0FBQyxLQUFLO0FBQUUsUUFBQSxNQUFNLElBQUksQ0FBRyxFQUFBLEdBQUcsQ0FBQyxLQUFLLFVBQVUsQ0FBQztJQUNoRCxJQUFJLEdBQUcsQ0FBQyxPQUFPO0FBQUUsUUFBQSxNQUFNLElBQUksQ0FBRyxFQUFBLEdBQUcsQ0FBQyxPQUFPLFlBQVksQ0FBQztJQUN0RCxJQUFJLEdBQUcsQ0FBQyxPQUFPO1FBQUUsTUFBTSxJQUFJLENBQUcsRUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQSxVQUFBLENBQVksQ0FBQztJQUNsRSxJQUFJLEdBQUcsQ0FBQyxZQUFZO1FBQUUsTUFBTSxJQUFJLENBQUcsRUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQSxLQUFBLENBQU8sQ0FBQztBQUV2RSxJQUFBLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7QUFBRSxRQUFBLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzNFLElBQUEsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUVEO0FB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VUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsWUFBWSxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxjQUFjLFlBQVksTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtEQUFrRCxDQUFDLENBQUMsQ0FBQyxrTkFBa04sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyw0REFBNEQsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsNkNBQTZDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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QUFFLENBQUMsRUFBRSxDQUFDO0lBQ3RDLEdBQUcsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUV2QyxJQUFJLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdkMsS0FBSyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3hDLEVBQUUsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxHQUFHLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdEMsQ0FBQyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRXBDLEdBQUcsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxJQUFJLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdEMsQ0FBQyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRW5DLElBQUksRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN2QyxLQUFLLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEMsRUFBRSxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3JDLEdBQUcsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFcEMsTUFBTSxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzNDLE9BQU8sRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM1QyxHQUFHLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEMsSUFBSSxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3pDLENBQUMsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUV0QyxNQUFNLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDM0MsT0FBTyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzVDLEdBQUcsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxJQUFJLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDekMsQ0FBQyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0NBQ3pDLENBQUM7QUFFRjtBQUNPLE1BQU0sZUFBZSxHQUFHO0FBQzNCLElBQUEsR0FBRyxFQUFFLE1BQU1MLFVBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDM0IsSUFBQSxLQUFLLEVBQUUsTUFBTUEsVUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDNUMsSUFBQSxTQUFTLEVBQUUsTUFDUEEsVUFBUSxDQUFDLEtBQUssRUFBRTtTQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUM7U0FDZCxLQUFLLENBQUNLLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRCxJQUFBLFFBQVEsRUFBRSxNQUNOTCxVQUFRLENBQUMsS0FBSyxFQUFFO1NBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUNkLElBQUksQ0FBQ0ssVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9DLElBQUEsR0FBRyxFQUFFLE1BQU1MLFVBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQzNDLElBQUEsZUFBZSxFQUFFLE1BQU1BLFVBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQ3ZELElBQUEsR0FBRyxFQUFFLE1BQU1BLFVBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3pDLElBQUEsYUFBYSxFQUFFLE1BQU1BLFVBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ25ELElBQUEsR0FBRyxFQUFFLE1BQU1BLFVBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQzNDLElBQUEsZUFBZSxFQUFFLE1BQU1BLFVBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQ3ZELElBQUEsR0FBRyxFQUFFLE1BQU1BLFVBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3pDLElBQUEsYUFBYSxFQUFFLE1BQU1BLFVBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ25ELElBQUEsR0FBRyxFQUFFLE1BQU1BLFVBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFP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LENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPZSxlQUFPLEVBQUUsVUFBVSxFQUFFQSxlQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBT0EsZUFBTyxFQUFFLFVBQVUsRUFBRUEsZUFBTyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxD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Q0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUM5QyxDQUFDLFVBQVUsTUFBTSxDQUFDO0FBRWxCLElBQUksT0FBTyxNQUFNLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBRTtBQUMxQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFDRDtBQUNBLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU9BLGNBQU0sS0FBSyxXQUFXLEdBQUdBLGNBQU0sR0FBRyxPQUFPLElBQUksS0FBSyxXQUFXLEdBQUcsSUFBSSxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsR0FBRyxNQUFNLEdBQUcsRUFBRSxFQUFDO0FBQ3ZJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFFOUM7QUFDQSxJQUFJLE9BQU8sR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVLElBQUksT0FBTyxNQUFNLENBQUMsUUFBUSxLQUFLLFFBQVEsR0FBRyxVQUFVLEdBQUcsRUFBRSxFQUFFLE9BQU8sT0FBTyxHQUFHLENBQUMsRUFBRSxHQUFHLFVBQVUsR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFHLElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLEdBQUcsQ0FBQyxXQUFXLEtBQUssTUFBTSxJQUFJLEdBQUcsS0FBSyxNQUFNLENBQUMsU0FBUyxHQUFHLFFBQVEsR0FBRyxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDN1E7QUFDQSxTQUFTLGVBQWUsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsWUFBWSxXQUFXLENBQUMsRUFBRSxFQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsbUNBQW1D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QUMsTUFBTSxDQUFDO1NBQ3hELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdEUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQztBQUN4QixTQUFBLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQixTQUFBLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEYsU0FBQSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEcsU0FBQSxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsRCxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLGdCQUFBLENBQUEsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENB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LEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDcEIsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxTQUFTLEdBQWlCLElBQUksZUFBZSxDQUFDLFdBQVcsQ0FBQztBQUNsRSxTQUFBLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssS0FBSyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzlELElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ2xGLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDcEIsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxRQUFRLEdBQWlCLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQztBQUNoRSxTQUFBLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxLQUFJO1FBQ3hELElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNyQyxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDekUsU0FBQTtBQUFNLGFBQUE7QUFDSCxZQUFBLE9BQU8sR0FBRyxDQUFDO0FBQ2QsU0FBQTtBQUNMLEtBQUMsQ0FBQztTQUNELElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssZ0JBQUEsQ0FBQSxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDakYsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNwQixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUM7QUFDakQsU0FBQSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDdEQsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwQixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUM7QUFDbEQsU0FBQSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdEQsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDO0FBQzlDLFNBQUEsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDNUUsU0FBQSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDO0FBQzlDLFNBQUEsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLE9BQU8sS0FBSTtBQUMxQyxRQUFBLElBQUksR0FBRyxD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SSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JGLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0QsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxHQUFHLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDO1NBQ3hDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RCxTQUFBLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0RixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlELFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsSUFBSSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztTQUN6QyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJ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RUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzs7QUFFcEUsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDL0MsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDL0MsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFDdEQ7QUFDTjs7QUM3SUE7QUFzQkE7OztBQUdH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QUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU9DLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBU0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFVixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRTVCLEdBQUMsQ0FBQyxLQUFLLEVBQUVBLEdBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVN1QyxHQUFDLEVBQUUsQ0FBQyxPQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBT0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRWYsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDZ0IsR0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFZCxHQUFDLEdBQUcvQixHQUFDLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDK0IsR0FBQyxDQUFDL0IsR0FBQyxDQUFDLGlCQUFpQixHQUFHOEIsR0FBQyxFQUFFZSxHQUFDLEVBQUMsQ0FBQyxTQUFTQSxHQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDaEIsR0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUNBLEdBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDTSxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ1csR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQ0osR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUNLLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUVKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNLLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUVkLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDSSxHQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQ0UsR0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNGLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDUSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFYixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ2dCLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUNSLEdBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNTLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTSCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVNHLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTSCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTSSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFekQsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxTQUFTd0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUVDLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsR0FBQyxDQUFDQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNELEdBQUMsQ0FBQ0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyx5QkFBeUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsU0FBU0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDMUQsR0FBQyxDQUFDLEtBQUssQ0FBQ0EsR0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTeUQsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDekQsR0FBQyxDQUFDLEtBQUssQ0FBQ0EsR0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTOEMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM5QyxHQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJeUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDa0IsR0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQ3hCLEdBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUNuQyxHQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQ21DLEdBQUMsQ0FBQ0EsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBR0ssR0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQ1EsR0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUNZLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDNUQsR0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTK0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQy9DLEdBQUMsQ0FBQyxHQUFHLEVBQUVBLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTNEQsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTNCLEdBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBQyxDQUFDLEdBQUdxQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDTixHQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUVOLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVOLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFbUIsR0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTSCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDcEQsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTbUQsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUduRCxHQUFDLENBQUMsT0FBTyxFQUFFQSxHQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUVvRCxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsR0FBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUNwRCxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRW1ELEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUVmLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxDQUFDLFNBQVN1QixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVNFLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM3RCxHQUFDLENBQUMsRUFBRSxFQUFFQSxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM4QyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDVCxHQUFDLENBQUNHLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRVAsR0FBQyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUNjLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU2UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNDLEdBQUMsRUFBQyxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDNUIsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNHLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTMEIsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDaEMsR0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUNZLEdBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ1YsR0FBQyxDQUFDLEtBQUssQ0FBQ2xDLEdBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM0QixHQUFDLENBQUMsQ0FBQyxDQUF1RGEsR0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUNOLEdBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUEsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDUyxHQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQyxDQUFDSCxHQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUNHLEdBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLENBQUNILEdBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDRCxHQUFDLENBQUNYLEdBQUMsQ0FBQyxFQUFFLENBQUNDLEdBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQ2UsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNiLEdBQUMsQ0FBQyxDQUFDOztBQ0FuaVQsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDbEMsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxFQUFFQSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNrRCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ2xELEdBQUMsQ0FBQyxHQUFHLEVBQUU0QyxHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM1QyxHQUFDLENBQUMsR0FBRyxFQUFFNEMsR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU9BLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVNXLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTWSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVNSLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMzRCxHQUFDLENBQUMsYUFBYSxFQUFFQSxHQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQWlLLFNBQVNtRCxHQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUNKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQ0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDaEQsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMrQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQ0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDaEQsR0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHQSxHQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLHFCQUFxQixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFbUQsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLENBQUNuRCxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMrQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUVDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDaEQsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQytDLEdBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFL0MsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxxQkFBcUIsQ0FBQyxTQUFTK0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVNNLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FDQWgvRCxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUNqRCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUlvQyxHQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNDLEdBQUMsQ0FBQyxHQUFHLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQ0ksR0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQUssZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNKLEdBQUMsQ0FBQyxHQUFHLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPckMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUNxQyxHQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUlELEdBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFcEMsR0FBQyxDQUFDc0MsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDdEMsR0FBQyxDQUFDc0MsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUNFLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUN4QyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLG9CQUFvQixHQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSW9DLEdBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQ0ssR0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQywyT0FBMk8sQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxXQUFXLEVBQUUsT0FBTyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sTUFBTSxFQUFFLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQ0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBT0ssR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDVCxHQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLDJCQUEyQixDQUFDLHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQ0EsR0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQ0MsR0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLGNBQWMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxjQUFjLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUNJLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNKLEdBQUMsQ0FBQyxHQUFHLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRyxDQUFDLENBQUksSUFBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFhLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU9yQyxHQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUN1QyxHQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBR0MsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxH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QUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDMUMsTUFBTSxPQUFPLEdBQWEsRUFBRSxDQUFDO0FBQzdCLFFBQUEsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDL0MsWUFBQSxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFFMUUsWUFBQSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25CLFlBQUEsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1RCxTQUFBO0FBQ0QsUUFBQSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3pCLEtBQUE7OztBQUlELElBQUEsSUFBSSxLQUFLLEdBQUcsQ0FBSyxFQUFBLEVBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQzs7SUFFdkcsS0FBSyxJQUFJLENBQUssRUFBQSxFQUFBLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLElBQUEsQ0FBTSxDQUFDOztBQUUxRSxJQUFBLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFF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 diff --git a/notes/.obsidian/plugins/dataview/manifest.json b/notes/.obsidian/plugins/dataview/manifest.json index fbd17b7..ce1f93c 100644 --- a/notes/.obsidian/plugins/dataview/manifest.json +++ b/notes/.obsidian/plugins/dataview/manifest.json @@ -1,7 +1,7 @@ { "id": "dataview", "name": "Dataview", - "version": "0.5.46", + "version": "0.5.47", "minAppVersion": "0.13.11", "description": "Complex data views for the data-obsessed.", "author": "Michael Brenan ", diff --git a/notes/.obsidian/plugins/obsidian-checklist-plugin/main.js b/notes/.obsidian/plugins/obsidian-checklist-plugin/main.js index 64c6bdc..bbc5e8a 100644 --- a/notes/.obsidian/plugins/obsidian-checklist-plugin/main.js +++ b/notes/.obsidian/plugins/obsidian-checklist-plugin/main.js @@ -6603,7 +6603,7 @@ var CheckCircle_default = CheckCircle; // src/svelte/ChecklistItem.svelte function add_css2(target) { - append_styles(target, "svelte-6nbpzm", "li.svelte-6nbpzm.svelte-6nbpzm{display:flex;align-items:center;background-color:var(--checklist-listItemBackground);border-radius:var(--checklist-listItemBorderRadius);margin:var(--checklist-listItemMargin);cursor:pointer;transition:background-color 100ms ease-in-out}li.svelte-6nbpzm.svelte-6nbpzm:hover{background-color:var(--checklist-listItemBackground--hover)}.toggle.svelte-6nbpzm.svelte-6nbpzm{padding:var(--checklist-togglePadding);background:transparent;flex-shrink:1;width:initial}.content.svelte-6nbpzm.svelte-6nbpzm{padding:var(--checklist-contentPadding);flex:1;font-size:var(--checklist-contentFontSize)}.compact.svelte-6nbpzm.svelte-6nbpzm{bottom:var(--checklist-listItemMargin--compact)}.compact.svelte-6nbpzm>.content.svelte-6nbpzm{padding:var(--checklist-contentPadding--compact)}.compact.svelte-6nbpzm>.toggle.svelte-6nbpzm{padding:var(--checklist-togglePadding--compact)}.toggle.svelte-6nbpzm.svelte-6nbpzm:hover{opacity:0.8}"); + append_styles(target, "svelte-sx5ktw", "li.svelte-sx5ktw.svelte-sx5ktw{display:flex;align-items:center;background-color:var(--checklist-listItemBackground);border-radius:var(--checklist-listItemBorderRadius);margin:var(--checklist-listItemMargin);cursor:pointer;transition:background-color 100ms ease-in-out}li.svelte-sx5ktw.svelte-sx5ktw:hover{background-color:var(--checklist-listItemBackground--hover)}.toggle.svelte-sx5ktw.svelte-sx5ktw{padding:var(--checklist-togglePadding);background:transparent;box-shadow:var(--checklist-listItemBoxShadow);flex-shrink:1;width:initial}.content.svelte-sx5ktw.svelte-sx5ktw{padding:var(--checklist-contentPadding);flex:1;font-size:var(--checklist-contentFontSize)}.compact.svelte-sx5ktw.svelte-sx5ktw{bottom:var(--checklist-listItemMargin--compact)}.compact.svelte-sx5ktw>.content.svelte-sx5ktw{padding:var(--checklist-contentPadding--compact)}.compact.svelte-sx5ktw>.toggle.svelte-sx5ktw{padding:var(--checklist-togglePadding--compact)}.toggle.svelte-sx5ktw.svelte-sx5ktw:hover{opacity:0.8}"); } function create_fragment2(ctx) { let li; @@ -6625,9 +6625,9 @@ function create_fragment2(ctx) { create_component(checkcircle.$$.fragment); t = space(); div = element("div"); - attr(button, "class", "toggle svelte-6nbpzm"); - attr(div, "class", "content svelte-6nbpzm"); - attr(li, "class", li_class_value = null_to_empty(`${ctx[1]}`) + " svelte-6nbpzm"); + attr(button, "class", "toggle svelte-sx5ktw"); + attr(div, "class", "content svelte-sx5ktw"); + attr(li, "class", li_class_value = null_to_empty(`${ctx[1]}`) + " svelte-sx5ktw"); }, m(target, anchor) { insert(target, li, anchor); @@ -6651,7 +6651,7 @@ function create_fragment2(ctx) { if (dirty & 1) checkcircle_changes.checked = ctx2[0].checked; checkcircle.$set(checkcircle_changes); - if (!current || dirty & 2 && li_class_value !== (li_class_value = null_to_empty(`${ctx2[1]}`) + " svelte-6nbpzm")) { + if (!current || dirty & 2 && li_class_value !== (li_class_value = null_to_empty(`${ctx2[1]}`) + " svelte-sx5ktw")) { attr(li, "class", li_class_value); } }, @@ -6893,7 +6893,7 @@ var Icon_default = Icon; // src/svelte/ChecklistGroup.svelte function add_css4(target) { - append_styles(target, "svelte-129fg97", ".page.svelte-129fg97{margin:var(--checklist-pageMargin);color:var(--checklist-textColor);transition:opacity 150ms ease-in-out;cursor:pointer}.file-link.svelte-129fg97:hover{opacity:0.8}header.svelte-129fg97{font-weight:var(--checklist-headerFontWeight);font-size:var(--checklist-headerFontSize);margin:var(--checklist-headerMargin);display:flex;gap:var(--checklist-headerGap);align-items:center}.space.svelte-129fg97{flex:1}button.svelte-129fg97,.count.svelte-129fg97,.title.svelte-129fg97{flex-shrink:1}.count.svelte-129fg97{padding:var(--checklist-countPadding);background:var(--checklist-countBackground);border-radius:var(--checklist-countBorderRadius);font-size:var(--checklist-countFontSize)}.title.svelte-129fg97{min-width:0;overflow:hidden;text-overflow:ellipsis;display:flex}button.svelte-129fg97{display:flex;padding:var(--checklist-buttonPadding);background:transparent}.tag-base.svelte-129fg97{color:var(--checklist-tagBaseColor)}.tag-sub.svelte-129fg97{color:var(--checklist-tagSubColor)}ul.svelte-129fg97{list-style:none;padding:0;margin:0;padding-inline-start:initial !important}.group.svelte-129fg97{margin-bottom:var(--checklist-groupMargin)}.collapse.svelte-129fg97{width:initial}"); + append_styles(target, "svelte-1tzpg3c", ".page.svelte-1tzpg3c{margin:var(--checklist-pageMargin);color:var(--checklist-textColor);transition:opacity 150ms ease-in-out;cursor:pointer}.file-link.svelte-1tzpg3c:hover{opacity:0.8}header.svelte-1tzpg3c{font-weight:var(--checklist-headerFontWeight);font-size:var(--checklist-headerFontSize);margin:var(--checklist-headerMargin);display:flex;gap:var(--checklist-headerGap);align-items:center}.space.svelte-1tzpg3c{flex:1}button.svelte-1tzpg3c,.count.svelte-1tzpg3c,.title.svelte-1tzpg3c{flex-shrink:1}.count.svelte-1tzpg3c{padding:var(--checklist-countPadding);background:var(--checklist-countBackground);border-radius:var(--checklist-countBorderRadius);font-size:var(--checklist-countFontSize)}.title.svelte-1tzpg3c{min-width:0;overflow:hidden;text-overflow:ellipsis;display:flex}button.svelte-1tzpg3c{display:flex;padding:var(--checklist-buttonPadding);background:transparent;box-shadow:var(--checklist-buttonBoxShadow)}.tag-base.svelte-1tzpg3c{color:var(--checklist-tagBaseColor)}.tag-sub.svelte-1tzpg3c{color:var(--checklist-tagSubColor)}ul.svelte-1tzpg3c{list-style:none;padding:0;margin:0;padding-inline-start:initial !important}.group.svelte-1tzpg3c{margin-bottom:var(--checklist-groupMargin)}.collapse.svelte-1tzpg3c{width:initial}"); } function get_each_context(ctx, list, i) { const child_ctx = ctx.slice(); @@ -6906,7 +6906,7 @@ function create_else_block(ctx) { c() { span = element("span"); span.textContent = "All Tags"; - attr(span, "class", "tag-base svelte-129fg97"); + attr(span, "class", "tag-base svelte-1tzpg3c"); }, m(target, anchor) { insert(target, span, anchor); @@ -6939,8 +6939,8 @@ function create_if_block_2(ctx) { if (if_block) if_block.c(); if_block_anchor = empty(); - attr(span0, "class", "tag-base svelte-129fg97"); - attr(span1, "class", span1_class_value = null_to_empty(ctx[0].subTags == null ? "tag-sub" : "tag-base") + " svelte-129fg97"); + attr(span0, "class", "tag-base svelte-1tzpg3c"); + attr(span1, "class", span1_class_value = null_to_empty(ctx[0].subTags == null ? "tag-sub" : "tag-base") + " svelte-1tzpg3c"); }, m(target, anchor) { insert(target, span0, anchor); @@ -6955,7 +6955,7 @@ function create_if_block_2(ctx) { p(ctx2, dirty) { if (dirty & 1 && t2_value !== (t2_value = `${ctx2[0].mainTag}${ctx2[0].subTags != null ? "/" : ""}`)) set_data(t2, t2_value); - if (dirty & 1 && span1_class_value !== (span1_class_value = null_to_empty(ctx2[0].subTags == null ? "tag-sub" : "tag-base") + " svelte-129fg97")) { + if (dirty & 1 && span1_class_value !== (span1_class_value = null_to_empty(ctx2[0].subTags == null ? "tag-sub" : "tag-base") + " svelte-1tzpg3c")) { attr(span1, "class", span1_class_value); } if (ctx2[0].subTags != null) { @@ -7015,7 +7015,7 @@ function create_if_block_3(ctx) { c() { span = element("span"); t = text(t_value); - attr(span, "class", "tag-sub svelte-129fg97"); + attr(span, "class", "tag-sub svelte-1tzpg3c"); }, m(target, anchor) { insert(target, span, anchor); @@ -7048,7 +7048,7 @@ function create_if_block2(ctx) { for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].c(); } - attr(ul, "class", "svelte-129fg97"); + attr(ul, "class", "svelte-1tzpg3c"); }, m(target, anchor) { insert(target, ul, anchor); @@ -7197,13 +7197,13 @@ function create_fragment4(ctx) { t4 = space(); if (if_block1) if_block1.c(); - attr(div0, "class", "title svelte-129fg97"); - attr(div1, "class", "space svelte-129fg97"); - attr(div2, "class", "count svelte-129fg97"); - attr(button, "class", "collapse svelte-129fg97"); + attr(div0, "class", "title svelte-1tzpg3c"); + attr(div1, "class", "space svelte-1tzpg3c"); + attr(div2, "class", "count svelte-1tzpg3c"); + attr(button, "class", "collapse svelte-1tzpg3c"); attr(button, "title", "Toggle Group"); - attr(header, "class", header_class_value = null_to_empty(`group-header ${ctx[0].type}`) + " svelte-129fg97"); - attr(section, "class", section_class_value = "group " + ctx[0].className + " svelte-129fg97"); + attr(header, "class", header_class_value = null_to_empty(`group-header ${ctx[0].type}`) + " svelte-1tzpg3c"); + attr(section, "class", section_class_value = "group " + ctx[0].className + " svelte-1tzpg3c"); }, m(target, anchor) { insert(target, section, anchor); @@ -7247,7 +7247,7 @@ function create_fragment4(ctx) { if (dirty & 2) icon_changes.direction = ctx2[1] ? "left" : "down"; icon.$set(icon_changes); - if (!current || dirty & 1 && header_class_value !== (header_class_value = null_to_empty(`group-header ${ctx2[0].type}`) + " svelte-129fg97")) { + if (!current || dirty & 1 && header_class_value !== (header_class_value = null_to_empty(`group-header ${ctx2[0].type}`) + " svelte-1tzpg3c")) { attr(header, "class", header_class_value); } if (!ctx2[1]) { @@ -7269,7 +7269,7 @@ function create_fragment4(ctx) { }); check_outros(); } - if (!current || dirty & 1 && section_class_value !== (section_class_value = "group " + ctx2[0].className + " svelte-129fg97")) { + if (!current || dirty & 1 && section_class_value !== (section_class_value = "group " + ctx2[0].className + " svelte-1tzpg3c")) { attr(section, "class", section_class_value); } }, @@ -8163,7 +8163,7 @@ var TodoListView = class extends import_obsidian4.ItemView { } groupItems() { const flattenedItems = Array.from(this.itemsByFile.values()).flat(); - const searchedItems = flattenedItems.filter((e) => e.originalText.toLowerCase().includes(this.searchTerm)); + const searchedItems = flattenedItems.filter((e) => e.originalText.toLowerCase().includes(this.searchTerm.toLowerCase())); this.groupedItems = groupTodos(searchedItems, this.plugin.getSettingValue("groupBy"), this.plugin.getSettingValue("sortDirectionGroups"), this.plugin.getSettingValue("sortDirectionItems"), this.plugin.getSettingValue("subGroups"), this.plugin.getSettingValue("sortDirectionSubGroups")); } renderView() { diff --git a/notes/.obsidian/plugins/obsidian-checklist-plugin/manifest.json b/notes/.obsidian/plugins/obsidian-checklist-plugin/manifest.json index 6662040..7895923 100644 --- a/notes/.obsidian/plugins/obsidian-checklist-plugin/manifest.json +++ b/notes/.obsidian/plugins/obsidian-checklist-plugin/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-checklist-plugin", "name": "Checklist", - "version": "2.2.8", + "version": "2.2.10", "minAppVersion": "0.14.5", "description": "Combines checklists across pages into users sidebar", "author": "delashum", diff --git a/notes/.obsidian/plugins/obsidian-checklist-plugin/styles.css b/notes/.obsidian/plugins/obsidian-checklist-plugin/styles.css index e4ea1cf..19ca82d 100644 --- a/notes/.obsidian/plugins/obsidian-checklist-plugin/styles.css +++ b/notes/.obsidian/plugins/obsidian-checklist-plugin/styles.css @@ -9,6 +9,7 @@ --checklist-listItemBackground: var(--interactive-normal); --checklist-listItemBackground--hover: var(--interactive-hover); --checklist-listItemMargin--compact: 0 0 8px; + --checklist-listItemBoxShadow: none; --checklist-headerMargin: 0 0 8px; --checklist-headerGap: 4px; --checklist-headerFontSize: 18px; @@ -23,6 +24,7 @@ --checklist-loaderSize: 16px; --checklist-loaderBorderColor: var(--text-muted) var(--text-muted) var(--text-normal); --checklist-buttonPadding: 0 5px; + --checklist-buttonBoxShadow: none; --checklist-countPadding: 0 6px; --checklist-countBackground: var(--interactive-normal); --checklist-countFontSize: 13px; diff --git a/notes/.obsidian/plugins/obsidian-emoji-toolbar/main.js b/notes/.obsidian/plugins/obsidian-emoji-toolbar/main.js index 1771be0..58961a8 100644 --- a/notes/.obsidian/plugins/obsidian-emoji-toolbar/main.js +++ b/notes/.obsidian/plugins/obsidian-emoji-toolbar/main.js @@ -104179,12 +104179,17 @@ class EmojiToolbar extends react.Component { } } +const DEF_DELAY = 1000; +function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms || DEF_DELAY)); +} class EmojiModal extends obsidian.Modal { constructor(app, theme) { super(app); this.reactComponent = react.createElement(EmojiToolbar, { - "onSelect": (emoji) => { + "onSelect": async (emoji) => { this.close(); + await sleep(10); document.execCommand('insertText', false, emoji.native); }, "onClose": () => { diff --git a/notes/.obsidian/plugins/obsidian-emoji-toolbar/manifest.json b/notes/.obsidian/plugins/obsidian-emoji-toolbar/manifest.json index e33ba16..088e6d7 100644 --- a/notes/.obsidian/plugins/obsidian-emoji-toolbar/manifest.json +++ b/notes/.obsidian/plugins/obsidian-emoji-toolbar/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-emoji-toolbar", "name": "Emoji Toolbar", - "version": "0.3.1", + "version": "0.3.2", "description": "Quickly search for and insert emojis into your notes.", "author": "oliveryh", "authorUrl": "https://github.com/oliveryh/obsidian-emoji-toolbar", diff --git a/notes/.obsidian/plugins/obsidian-excalidraw-plugin/data.json b/notes/.obsidian/plugins/obsidian-excalidraw-plugin/data.json index ceea0b5..ca4a026 100644 --- a/notes/.obsidian/plugins/obsidian-excalidraw-plugin/data.json +++ b/notes/.obsidian/plugins/obsidian-excalidraw-plugin/data.json @@ -25,6 +25,9 @@ "zoomToFitMaxLevel": 2, "linkPrefix": "📍", "urlPrefix": "🌐", + "parseTODO": false, + "todo": "☐", + "done": "🗹", "hoverPreviewWithoutCTRL": false, "linkOpacity": 1, "openInAdjacentPane": false, @@ -34,6 +37,7 @@ "forceWrap": false, "pageTransclusionCharLimit": 200, "wordWrappingDefault": 0, + "removeTransclusionQuoteSigns": true, "iframelyAllowed": true, "pngExportScale": 1, "exportWithTheme": true, @@ -71,7 +75,7 @@ "mdCSS": "", "scriptEngineSettings": {}, "defaultTrayMode": false, - "previousRelease": "1.7.20", + "previousRelease": "1.7.26", "showReleaseNotes": true, "showNewVersionNotification": true, "mathjaxSourceURL": "https://cdn.jsdelivr.net/npm/mathjax@3.2.1/es5/tex-svg.js", diff --git a/notes/.obsidian/plugins/obsidian-excalidraw-plugin/main.js b/notes/.obsidian/plugins/obsidian-excalidraw-plugin/main.js index 0aba67c..0877d1e 100644 --- a/notes/.obsidian/plugins/obsidian-excalidraw-plugin/main.js +++ b/notes/.obsidian/plugins/obsidian-excalidraw-plugin/main.js @@ -1,5 +1,5 @@ "use strict";var obsidian=require("obsidian");var LZString=function(){function o(o,r){if(!t[o]){t[o]={};for(var n=0;ne;e++){var s=r.charCodeAt(e);n[2*e]=s>>>8,n[2*e+1]=s%256}return n},decompressFromUint8Array:function(o){if(null===o||void 0===o)return i.decompress(o);for(var n=new Array(o.length/2),e=0,t=n.length;t>e;e++)n[e]=256*o[2*e]+o[2*e+1];var s=[];return n.forEach(function(o){s.push(r(o))}),i.decompress(s.join(""))},compressToEncodedURIComponent:function(o){return null==o?"":i._compress(o,6,function(o){return e.charAt(o)})},decompressFromEncodedURIComponent:function(r){return null==r?"":""==r?null:(r=r.replace(/ /g,"+"),i._decompress(r.length,32,function(n){return o(e,r.charAt(n))}))},compress:function(o){return i._compress(o,16,function(o){return r(o)})},_compress:function(o,r,n){if(null==o)return"";var e,t,i,s={},p={},u="",c="",a="",l=2,f=3,h=2,d=[],m=0,v=0;for(i=0;ie;e++)m<<=1,v==r-1?(v=0,d.push(n(m)),m=0):v++;for(t=a.charCodeAt(0),e=0;8>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;h>e;e++)m=m<<1|t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=a.charCodeAt(0),e=0;16>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}l--,0==l&&(l=Math.pow(2,h),h++),delete p[a]}else for(t=s[a],e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;l--,0==l&&(l=Math.pow(2,h),h++),s[c]=f++,a=String(u)}if(""!==a){if(Object.prototype.hasOwnProperty.call(p,a)){if(a.charCodeAt(0)<256){for(e=0;h>e;e++)m<<=1,v==r-1?(v=0,d.push(n(m)),m=0):v++;for(t=a.charCodeAt(0),e=0;8>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;h>e;e++)m=m<<1|t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=a.charCodeAt(0),e=0;16>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}l--,0==l&&(l=Math.pow(2,h),h++),delete p[a]}else for(t=s[a],e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;l--,0==l&&(l=Math.pow(2,h),h++)}for(t=2,e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;for(;;){if(m<<=1,v==r-1){d.push(n(m));break}v++}return d.join("")},decompress:function(o){return null==o?"":""==o?null:i._decompress(o.length,32768,function(r){return o.charCodeAt(r)})},_decompress:function(o,n,e){var t,i,s,p,u,c,a,l,f=[],h=4,d=4,m=3,v="",w=[],A={val:e(0),position:n,index:1};for(i=0;3>i;i+=1)f[i]=i;for(p=0,c=Math.pow(2,2),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;switch(t=p){case 0:for(p=0,c=Math.pow(2,8),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;l=r(p);break;case 1:for(p=0,c=Math.pow(2,16),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;l=r(p);break;case 2:return""}for(f[3]=l,s=l,w.push(l);;){if(A.index>o)return"";for(p=0,c=Math.pow(2,m),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;switch(l=p){case 0:for(p=0,c=Math.pow(2,8),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;f[d++]=r(p),l=d-1,h--;break;case 1:for(p=0,c=Math.pow(2,16),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;f[d++]=r(p),l=d-1,h--;break;case 2:return w.join("")}if(0==h&&(h=Math.pow(2,m),m++),f[l])v=f[l];else{if(l!==d)return null;v=s+s.charAt(0)}w.push(v),f[d++]=s+v.charAt(0),h--,s=v,0==h&&(h=Math.pow(2,m),m++)}}};return i}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module&&(module.exports=LZString); -const EXCALIDRAW_PACKAGES = "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/5azjN806//Ld6EpQjnAFb2wtoES/0JYJZsgK3HJKnjNsBW+Arc9EtKeVmxK4ClxMSlqzR8ZrQK0BqUECtx06rArQXUqQAVIXT8CthJS65NZ6pTiy3cYb60ZjWSigrXxhuoK1qFaFqN0cYxDpYwVtRM1Njibwl9yW8o9X8mt4K3JcKBCtzYS4QraAVpUw1IxjO2lUBW8kzdLkrmqUtWbdMNKMShQrf4VoOo0fhiR2lKKak55RoVuCK1tHrquFOhW7FNWapPnSXPRLPNVeKSwYLUSmqbHGwdLEitfR6kwBVYVtwi2DcKV4xeBQ355Z0RKpnUSmaaZ1T1Gog8YAAEQEQAADQIgAADgREtVXCswAAIQIgAAAARAAA9AiAAAUBEAABcCIAAGwEQAALwIgAARgQaitss6hK6Y/6O6K19FbKitVRWwAAHgIgAAKAQ2itgAAdgQyitgAAJgRAAAqAhNFbAAAbAhlFapit0xWxrVboqIaK3VFbAAAgAiAABuBAWK2dFauitgAAPgQeitGxWol5VBPIaK2AAAGBH6K1zRzQBVQscOorS0Vp6K2AAA0BEAAA8CIAABAEGYrdcVtuK1uRKZVRjxWl4rR8Vq+K03FbHtVzo4o2df2Ag6K2nFbpitCxWwAALQITRW84rTVEsOXFPFaKitDRWtorYAADAEFYrVUVtGK1lYaIStZxW9ErcsVsxK3VFbE01/YCJErSiVphK1wlbDXlzxWvYrSiVrPYVLFblitgAAUARlit3xWy09bSVoZK1YlaSY5gAATAQ9itgAASAQ2ittxWk7KSSVraK07FblitDSst4resVq1UWclaeStVRWuorWUVquK1m8SJStvJWlkrcKVuHTX9gI6itCxW14rWKVvvM39gJ5StVRWtUrYAAAQENorethsBADala6St1JW2Odd6orGK09FaxithxW9krccVqaK2gWayitnxWiErdUVptK12lac3li5UukrRUVrGK3VFaJitxxW6ErWxSrqK10lauit7RW24rWzOLKK09FaKitnxW6YrfsVqDK0Gla051HIAMMrRGVpmK2AABcBFhK2fFbbitAlK9kra8VuOK27FaeitgAAagQ0yt9bywAABgIFRWzkrccVvZK0Qla/StO9GvWcZmVuzK3plbTNJ6UkqOOYCAADK2mlbe1F9s4rudR6VsAAA4CBiVrqK3d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=";const {react, reactDOM, excalidrawLib} = window.eval.call(window, `(function() {${LZString.decompressFromBase64(EXCALIDRAW_PACKAGES)};return {react:React, reactDOM:ReactDOM, excalidrawLib: ExcalidrawLib};})();`);const PLUGIN_VERSION="1.7.20";function _interopNamespace(A){if(A&&A.__esModule)return A;var e=Object.create(null);return A&&Object.keys(A).forEach((function(t){if("default"!==t){var i=Object.getOwnPropertyDescriptor(A,t);Object.defineProperty(e,t,i.get?i:{enumerable:!0,get:function(){return A[t]}})}})),e.default=A,Object.freeze(e)}var React__namespace=_interopNamespace(React);let random=A=>crypto.getRandomValues(new Uint8Array(A)),customRandom=(A,e,t)=>{let i=(2<{let r="";for(;;){let e=t(n),s=n;for(;s--;)if(r+=A[e[s]&i]||"",r.length===a)return r}}},customAlphabet=(A,e=21)=>customRandom(A,e,random);function JSON_parse(A){return JSON.parse(A.replaceAll("[","["))}const isDarwin=/Mac|iPod|iPhone|iPad/.test(window.navigator.platform),CTRL_OR_CMD=isDarwin?"metaKey":"ctrlKey",nanoid=customAlphabet("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",8),KEYCODE={ESC:27},PLUGIN_ID="obsidian-excalidraw-plugin",SCRIPT_INSTALL_CODEBLOCK="excalidraw-script-install",SCRIPT_INSTALL_FOLDER="Downloaded",fileid=customAlphabet("1234567890abcdef",40),REG_LINKINDEX_INVALIDCHARS=/[<>:"\\|?*#]/g,REG_BLOCK_REF_CLEAN=/[!"#$%&()*+,.:;<=>?@^`{|}~\/\[\]\\]/g,IMAGE_TYPES=["jpeg","jpg","png","gif","svg"],EXPORT_TYPES=["svg","dark.svg","light.svg","png","dark.png","light.png"],MAX_IMAGE_SIZE=500,FRONTMATTER_KEY="excalidraw-plugin",FRONTMATTER_KEY_EXPORT_TRANSPARENT="excalidraw-export-transparent",FRONTMATTER_KEY_EXPORT_DARK="excalidraw-export-dark",FRONTMATTER_KEY_EXPORT_SVGPADDING="excalidraw-export-svgpadding",FRONTMATTER_KEY_EXPORT_PADDING="excalidraw-export-padding",FRONTMATTER_KEY_EXPORT_PNGSCALE="excalidraw-export-pngscale",FRONTMATTER_KEY_CUSTOM_PREFIX="excalidraw-link-prefix",FRONTMATTER_KEY_CUSTOM_URL_PREFIX="excalidraw-url-prefix",FRONTMATTER_KEY_CUSTOM_LINK_BRACKETS="excalidraw-link-brackets",FRONTMATTER_KEY_ONLOAD_SCRIPT="excalidraw-onload-script",FRONTMATTER_KEY_LINKBUTTON_OPACITY="excalidraw-linkbutton-opacity",FRONTMATTER_KEY_DEFAULT_MODE="excalidraw-default-mode",FRONTMATTER_KEY_FONT="excalidraw-font",FRONTMATTER_KEY_FONTCOLOR="excalidraw-font-color",FRONTMATTER_KEY_BORDERCOLOR="excalidraw-border-color",FRONTMATTER_KEY_MD_STYLE="excalidraw-css",FRONTMATTER_KEY_AUTOEXPORT="excalidraw-autoexport",LOCAL_PROTOCOL="md://",VIEW_TYPE_EXCALIDRAW="excalidraw",ICON_NAME="excalidraw-icon",RERENDER_EVENT="excalidraw-embed-rerender",BLANK_DRAWING='{"type":"excalidraw","version":2,"source":"https://excalidraw.com","elements":[],"appState":{"gridSize":null,"viewBackgroundColor":"#ffffff"}}',DARK_BLANK_DRAWING='{"type":"excalidraw","version":2,"source":"https://excalidraw.com","elements":[],"appState":{"theme":"dark","gridSize":null,"viewBackgroundColor":"#ffffff"}}',FRONTMATTER=["---","","excalidraw-plugin: parsed","tags: [excalidraw]","","---","==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠==","",""].join("\n"),EMPTY_MESSAGE="Hit enter to create a new drawing",TEXT_DISPLAY_PARSED_ICON_NAME="quote-glyph",TEXT_DISPLAY_RAW_ICON_NAME="presentation",FULLSCREEN_ICON_NAME="fullscreen",SCRIPTENGINE_ICON_NAME="ScriptEngine",COLOR_NAMES=new Map;COLOR_NAMES.set("aliceblue","#f0f8ff"),COLOR_NAMES.set("antiquewhite","#faebd7"),COLOR_NAMES.set("aqua","#00ffff"),COLOR_NAMES.set("aquamarine","#7fffd4"),COLOR_NAMES.set("azure","#f0ffff"),COLOR_NAMES.set("beige","#f5f5dc"),COLOR_NAMES.set("bisque","#ffe4c4"),COLOR_NAMES.set("black","#000000"),COLOR_NAMES.set("blanchedalmond","#ffebcd"),COLOR_NAMES.set("blue","#0000ff"),COLOR_NAMES.set("blueviolet","#8a2be2"),COLOR_NAMES.set("brown","#a52a2a"),COLOR_NAMES.set("burlywood","#deb887"),COLOR_NAMES.set("cadetblue","#5f9ea0"),COLOR_NAMES.set("chartreuse","#7fff00"),COLOR_NAMES.set("chocolate","#d2691e"),COLOR_NAMES.set("coral","#ff7f50"),COLOR_NAMES.set("cornflowerblue","#6495ed"),COLOR_NAMES.set("cornsilk","#fff8dc"),COLOR_NAMES.set("crimson","#dc143c"),COLOR_NAMES.set("cyan","#00ffff"),COLOR_NAMES.set("darkblue","#00008b"),COLOR_NAMES.set("darkcyan","#008b8b"),COLOR_NAMES.set("darkgoldenrod","#b8860b"),COLOR_NAMES.set("darkgray","#a9a9a9"),COLOR_NAMES.set("darkgreen","#006400"),COLOR_NAMES.set("darkkhaki","#bdb76b"),COLOR_NAMES.set("darkmagenta","#8b008b"),COLOR_NAMES.set("darkolivegreen","#556b2f"),COLOR_NAMES.set("darkorange","#ff8c00"),COLOR_NAMES.set("darkorchid","#9932cc"),COLOR_NAMES.set("darkred","#8b0000"),COLOR_NAMES.set("darksalmon","#e9967a"),COLOR_NAMES.set("darkseagreen","#8fbc8f"),COLOR_NAMES.set("darkslateblue","#483d8b"),COLOR_NAMES.set("darkslategray","#2f4f4f"),COLOR_NAMES.set("darkturquoise","#00ced1"),COLOR_NAMES.set("darkviolet","#9400d3"),COLOR_NAMES.set("deeppink","#ff1493"),COLOR_NAMES.set("deepskyblue","#00bfff"),COLOR_NAMES.set("dimgray","#696969"),COLOR_NAMES.set("dodgerblue","#1e90ff"),COLOR_NAMES.set("firebrick","#b22222"),COLOR_NAMES.set("floralwhite","#fffaf0"),COLOR_NAMES.set("forestgreen","#228b22"),COLOR_NAMES.set("fuchsia","#ff00ff"),COLOR_NAMES.set("gainsboro","#dcdcdc"),COLOR_NAMES.set("ghostwhite","#f8f8ff"),COLOR_NAMES.set("gold","#ffd700"),COLOR_NAMES.set("goldenrod","#daa520"),COLOR_NAMES.set("gray","#808080"),COLOR_NAMES.set("green","#008000"),COLOR_NAMES.set("greenyellow","#adff2f"),COLOR_NAMES.set("honeydew","#f0fff0"),COLOR_NAMES.set("hotpink","#ff69b4"),COLOR_NAMES.set("indianred","#cd5c5c"),COLOR_NAMES.set("indigo","#4b0082"),COLOR_NAMES.set("ivory","#fffff0"),COLOR_NAMES.set("khaki","#f0e68c"),COLOR_NAMES.set("lavender","#e6e6fa"),COLOR_NAMES.set("lavenderblush","#fff0f5"),COLOR_NAMES.set("lawngreen","#7cfc00"),COLOR_NAMES.set("lemonchiffon","#fffacd"),COLOR_NAMES.set("lightblue","#add8e6"),COLOR_NAMES.set("lightcoral","#f08080"),COLOR_NAMES.set("lightcyan","#e0ffff"),COLOR_NAMES.set("lightgoldenrodyellow","#fafad2"),COLOR_NAMES.set("lightgrey","#d3d3d3"),COLOR_NAMES.set("lightgreen","#90ee90"),COLOR_NAMES.set("lightpink","#ffb6c1"),COLOR_NAMES.set("lightsalmon","#ffa07a"),COLOR_NAMES.set("lightseagreen","#20b2aa"),COLOR_NAMES.set("lightskyblue","#87cefa"),COLOR_NAMES.set("lightslategray","#778899"),COLOR_NAMES.set("lightsteelblue","#b0c4de"),COLOR_NAMES.set("lightyellow","#ffffe0"),COLOR_NAMES.set("lime","#00ff00"),COLOR_NAMES.set("limegreen","#32cd32"),COLOR_NAMES.set("linen","#faf0e6"),COLOR_NAMES.set("magenta","#ff00ff"),COLOR_NAMES.set("maroon","#800000"),COLOR_NAMES.set("mediumaquamarine","#66cdaa"),COLOR_NAMES.set("mediumblue","#0000cd"),COLOR_NAMES.set("mediumorchid","#ba55d3"),COLOR_NAMES.set("mediumpurple","#9370d8"),COLOR_NAMES.set("mediumseagreen","#3cb371"),COLOR_NAMES.set("mediumslateblue","#7b68ee"),COLOR_NAMES.set("mediumspringgreen","#00fa9a"),COLOR_NAMES.set("mediumturquoise","#48d1cc"),COLOR_NAMES.set("mediumvioletred","#c71585"),COLOR_NAMES.set("midnightblue","#191970"),COLOR_NAMES.set("mintcream","#f5fffa"),COLOR_NAMES.set("mistyrose","#ffe4e1"),COLOR_NAMES.set("moccasin","#ffe4b5"),COLOR_NAMES.set("navajowhite","#ffdead"),COLOR_NAMES.set("navy","#000080"),COLOR_NAMES.set("oldlace","#fdf5e6"),COLOR_NAMES.set("olive","#808000"),COLOR_NAMES.set("olivedrab","#6b8e23"),COLOR_NAMES.set("orange","#ffa500"),COLOR_NAMES.set("orangered","#ff4500"),COLOR_NAMES.set("orchid","#da70d6"),COLOR_NAMES.set("palegoldenrod","#eee8aa"),COLOR_NAMES.set("palegreen","#98fb98"),COLOR_NAMES.set("paleturquoise","#afeeee"),COLOR_NAMES.set("palevioletred","#d87093"),COLOR_NAMES.set("papayawhip","#ffefd5"),COLOR_NAMES.set("peachpuff","#ffdab9"),COLOR_NAMES.set("peru","#cd853f"),COLOR_NAMES.set("pink","#ffc0cb"),COLOR_NAMES.set("plum","#dda0dd"),COLOR_NAMES.set("powderblue","#b0e0e6"),COLOR_NAMES.set("purple","#800080"),COLOR_NAMES.set("rebeccapurple","#663399"),COLOR_NAMES.set("red","#ff0000"),COLOR_NAMES.set("rosybrown","#bc8f8f"),COLOR_NAMES.set("royalblue","#4169e1"),COLOR_NAMES.set("saddlebrown","#8b4513"),COLOR_NAMES.set("salmon","#fa8072"),COLOR_NAMES.set("sandybrown","#f4a460"),COLOR_NAMES.set("seagreen","#2e8b57"),COLOR_NAMES.set("seashell","#fff5ee"),COLOR_NAMES.set("sienna","#a0522d"),COLOR_NAMES.set("silver","#c0c0c0"),COLOR_NAMES.set("skyblue","#87ceeb"),COLOR_NAMES.set("slateblue","#6a5acd"),COLOR_NAMES.set("slategray","#708090"),COLOR_NAMES.set("snow","#fffafa"),COLOR_NAMES.set("springgreen","#00ff7f"),COLOR_NAMES.set("steelblue","#4682b4"),COLOR_NAMES.set("tan","#d2b48c"),COLOR_NAMES.set("teal","#008080"),COLOR_NAMES.set("thistle","#d8bfd8"),COLOR_NAMES.set("tomato","#ff6347"),COLOR_NAMES.set("turquoise","#40e0d0"),COLOR_NAMES.set("violet","#ee82ee"),COLOR_NAMES.set("wheat","#f5deb3"),COLOR_NAMES.set("white","#ffffff"),COLOR_NAMES.set("whitesmoke","#f5f5f5"),COLOR_NAMES.set("yellow","#ffff00"),COLOR_NAMES.set("yellowgreen","#9acd32");const DEFAULT_MD_EMBED_CSS='.excalidraw-md-host{padding:0px 10px}.excalidraw-md-footer{height:5px}foreignObject{background-color:transparent}p{display:block;margin-block-start:1em;margin-block-end:1em;margin-inline-start:0px;margin-inline-end:0px;color:inherit}table,tr,th,td{color:inherit;border:1px solid;border-collapse:collapse;padding:3px}th{font-weight:bold;border-bottom:double;background-color:silver}.copy-code-button{display:none}code[class*=language-],pre[class*=language-]{color:#393a34;font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;font-size:.9em;line-height:1.2em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre>code[class*=language-]{font-size:1em}pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection{background:#C1DEF1}pre[class*=language-]::selection,pre[class*=language-] ::selection,code[class*=language-]::selection,code[class*=language-] ::selection{background:#C1DEF1}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;background-color:#0000001a}:not(pre)>code[class*=language-]{padding:.2em;padding-top:1px;padding-bottom:1px;background:#f8f8f8;border:1px solid #dddddd}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:green;font-style:italic}.token.namespace{opacity:.7}.token.string{color:#a31515}.token.punctuation,.token.operator{color:#393a34}.token.url,.token.symbol,.token.number,.token.boolean,.token.variable,.token.constant,.token.inserted{color:#36acaa}.token.atrule,.token.keyword,.token.attr-value,.language-autohotkey .token.selector,.language-json .token.boolean,.language-json .token.number,code[class*=language-css]{color:#00f}.token.function{color:#393a34}.token.deleted,.language-autohotkey .token.tag{color:#9a050f}.token.selector,.language-autohotkey .token.keyword{color:#00009f}.token.important{color:#e90}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.class-name,.language-json .token.property{color:#2b91af}.token.tag,.token.selector{color:maroon}.token.attr-name,.token.property,.token.regex,.token.entity{color:red}.token.directive.tag .tag{background:#ffff00;color:#393a34}.line-numbers.line-numbers .line-numbers-rows{border-right-color:#a5a5a5}.line-numbers .line-numbers-rows>span:before{color:#2b91af}.line-highlight.line-highlight{background:rgba(193,222,241,.2);background:-webkit-linear-gradient(left,rgba(193,222,241,.2) 70%,rgba(221,222,241,0));background:linear-gradient(to right,rgba(193,222,241,.2) 70%,rgba(221,222,241,0))}blockquote{ font-style:italic;background-color:rgb(46,43,42,0.1);margin:0;margin-left:1em;border-radius:0 4px 4px 0;border:1px solid hsl(0,80%,32%);border-left-width:8px;border-top-width:0px;border-right-width:0px;border-bottom-width:0px;padding:10px 20px;margin-inline-start:30px;margin-inline-end:30px;}',SCRIPTENGINE_ICON='',DISK_ICON_NAME="disk",DISK_ICON='',PNG_ICON_NAME="save-png",PNG_ICON='',SVG_ICON_NAME="save-svg",SVG_ICON='',EXCALIDRAW_ICON='',VIRGIL_DATAURL="data:application/font-woff;charset=utf-8;base64,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",VIRGIL_FONT=` @font-face {font-family: "Virgil";src: url("${VIRGIL_DATAURL}") format("woff2");}`,CASCADIA_FONT=' @font-face {font-family: "Cascadia";src: url("data:application/font-woff;charset=utf-8;base64,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XVtdpV2uXdBeAV4OXmBecl6GXpteyl74X1Vfsl/PX+xgDWAtYDVgPWBQYGNga2B9YIZgj2CcYKlgtmDLYOFg7GElYVthfmGgYa1hwmHdYgNiN2JVYoli0GL6Yzpjc2PbZINkrGUYZUBlTWVeZaNl8GX9Zi9mPGZNZrdm/mdPZ59nq2e4Z8hoAWhDaE9oW2hoaMto12jnaPNo/2mBaipqmGqlarFrRWtSa79sG2wnbFRskGzBbM5s32z7bQ5tF20fbR9tH20fbX9tzm4ebp9u+W9jb75wGnBgcKRw1HEucZRx1nIxcoly1HMHc1Nzm3P+dEJ0rXTvdR11YXWIdcl2LHZrdnN2e3aidqp2zHbwdwd3LHc/d213qHfGd/14JHhLeHt4rnjWeON5EnkpeUd5nHnBefJ5+noCeiV6T3pyenp6hXqcewR7kXu5e+R8Dnw3fHF8qnztfPp9B30UfSF9Ln07fUh9VX1ifW99fH2JfZZ9o32wfb19yn3YfeZ9834Bfg5+Hn4yfkJ+U35hfnd+h37Vf2iAj4CrgNeBDYEzgVmBgIGmgbmBzYH4gh2CUoKHgr2C84M1g/iEM4SIhK6Ey4T9hR6FQIVbhXaFiYWcha+FwoXSheuGAoYZhjCGR4Zoho+GnYazhsGGzobjhviHBYcah0yHaIgsiE6IcIi1iNuJA4lciWqJgImViaqJvYnRie6KDIosikyKbIqBio+KpIqyir+KzIrZiueK+4sPiySLOYtdi3GLhIuRi5+Ls4vIi9aL44vxi/+MFIwojD2MUoxfjGyMeYyFjJiMq4y/jNKM840NjSeNO41bjXSNjo2ijc6N7o4PjieOPY5TjmaOd46Njp6OtI7NjuGO8o8JjxqPMY9Lj2WPe4+Rj6aPvI/Kj96P75AAkA6QHJAukE6QdJCCkJ6QvJDKkN6Q75ECkRORIZE7kU+RY5F+kZSRqZHCkdiR7pIIkiSSQJJckniSlJK3ksiS2JLrkwCTDpMhkzKTQ5NQk12TcJOMk6+TvJPVk/GT/5QSlCSUNJRElFKUa5R+lJGUrJTClNiU8ZUHlR2VN5VTlWqVf5WUla2VwJXWleaV/JYNlieWOpZQlmCWdpaHlqCWtJbJluyXBZcflziXTJdgl3qXjpeil8WX3Zf1mGqYsZkFmTmZg5mvmcaZ5Zpamr6bHZtFm7icHZyAnN6dG52E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") format("woff2");}';var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},lzString={exports:{}};function splitFolderAndFilename(A){const e=A.lastIndexOf("/"),t=-1==e?A:A.substring(e+1);return{folderpath:obsidian.normalizePath(A.substring(0,e)),filename:t,basename:t.replace(/\.[^/.]+$/,"")}}function download(A,e,t){const i=document.createElement("a");i.setAttribute("href",(A?`${A},`:"")+e),i.setAttribute("download",t),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)}function getIMGFilename(A,e){return`${A.substring(0,A.lastIndexOf("."))}.${e}`}function getNewUniqueFilepath(A,e,t){let i=obsidian.normalizePath(`${t}/${e}`),n=A.getAbstractFileByPath(i),a=0;const r=e.endsWith(".excalidraw.md")?".excalidraw.md":e.slice(e.lastIndexOf("."));for(;n;)i=obsidian.normalizePath(`${t}/${e.slice(0,e.lastIndexOf(r))}_${a}${r}`),a++,n=A.getAbstractFileByPath(i);return i}function getDrawingFilename(A){return A.drawingFilenamePrefix+(""!==A.drawingFilenameDateTime?window.moment().format(A.drawingFilenameDateTime):"")+(A.compatibilityMode?".excalidraw":A.useExcalidrawExtension?".excalidraw.md":".md")}function getEmbedFilename(A,e){return(e.drawingEmbedPrefixWithFilename?A:"")+e.drawingFilnameEmbedPostfix+(""!==e.drawingFilenameDateTime?window.moment().format(e.drawingFilenameDateTime):"")+(e.compatibilityMode?".excalidraw":e.useExcalidrawExtension?".excalidraw.md":".md")}async function checkAndCreateFolder(A){const e=app.vault;A=obsidian.normalizePath(A);const t=e.getAbstractFileByPathInsensitive(A);t&&t instanceof obsidian.TFolder||(t&&t instanceof obsidian.TFile&&new obsidian.Notice(`The folder cannot be created because it already exists as a file: ${A}.`),await e.createFolder(A))}!function(A){var e=function(){var A=String.fromCharCode,e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",i={};function n(A,e){if(!i[A]){i[A]={};for(var t=0;t>>8,t[2*i+1]=r%256}return t},decompressFromUint8Array:function(e){if(null==e)return a.decompress(e);for(var t=new Array(e.length/2),i=0,n=t.length;i>=1}else{for(n=1,i=0;i>=1}0==--d&&(d=Math.pow(2,g),g++),delete s[c]}else for(n=r[c],i=0;i>=1;0==--d&&(d=Math.pow(2,g),g++),r[l]=h++,c=String(o)}if(""!==c){if(Object.prototype.hasOwnProperty.call(s,c)){if(c.charCodeAt(0)<256){for(i=0;i>=1}else{for(n=1,i=0;i>=1}0==--d&&(d=Math.pow(2,g),g++),delete s[c]}else for(n=r[c],i=0;i>=1;0==--d&&(d=Math.pow(2,g),g++)}for(n=2,i=0;i>=1;for(;;){if(p<<=1,w==e-1){u.push(t(p));break}w++}return u.join("")},decompress:function(A){return null==A?"":""==A?null:a._decompress(A.length,32768,(function(e){return A.charCodeAt(e)}))},_decompress:function(e,t,i){var n,a,r,s,o,l,c,d=[],h=4,g=4,u=3,p="",w=[],m={val:i(0),position:t,index:1};for(n=0;n<3;n+=1)d[n]=n;for(r=0,o=Math.pow(2,2),l=1;l!=o;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=t,m.val=i(m.index++)),r|=(s>0?1:0)*l,l<<=1;switch(r){case 0:for(r=0,o=Math.pow(2,8),l=1;l!=o;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=t,m.val=i(m.index++)),r|=(s>0?1:0)*l,l<<=1;c=A(r);break;case 1:for(r=0,o=Math.pow(2,16),l=1;l!=o;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=t,m.val=i(m.index++)),r|=(s>0?1:0)*l,l<<=1;c=A(r);break;case 2:return""}for(d[3]=c,a=c,w.push(c);;){if(m.index>e)return"";for(r=0,o=Math.pow(2,u),l=1;l!=o;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=t,m.val=i(m.index++)),r|=(s>0?1:0)*l,l<<=1;switch(c=r){case 0:for(r=0,o=Math.pow(2,8),l=1;l!=o;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=t,m.val=i(m.index++)),r|=(s>0?1:0)*l,l<<=1;d[g++]=A(r),c=g-1,h--;break;case 1:for(r=0,o=Math.pow(2,16),l=1;l!=o;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=t,m.val=i(m.index++)),r|=(s>0?1:0)*l,l<<=1;d[g++]=A(r),c=g-1,h--;break;case 2:return w.join("")}if(0==h&&(h=Math.pow(2,u),u++),d[c])p=d[c];else{if(c!==g)return null;p=a+a.charAt(0)}w.push(p),d[g++]=a+p.charAt(0),a=p,0==--h&&(h=Math.pow(2,u),u++)}}};return a}();null!=A&&(A.exports=e)}(lzString);const{exportToSvg:exportToSvg,exportToBlob:exportToBlob}=excalidrawLib;let versionUpdateChecked=!1;const checkExcalidrawVersion=async A=>{if(!versionUpdateChecked){versionUpdateChecked=!0;try{const A=async()=>JSON.parse(await obsidian.request({url:"https://api.github.com/repos/zsviczian/obsidian-excalidraw-plugin/releases?per_page=5&page=1"})),e=(await A()).map((A=>({version:A.tag_name,published:new Date(A.published_at)}))).filter((A=>A.version.match(/^\d+\.\d+\.\d+$/))).sort(((A,e)=>e.published-A.published))[0].version;isVersionNewerThanOther(e,PLUGIN_VERSION)&&new obsidian.Notice(`A newer version of Excalidraw is available in Community Plugins.\n\nYou are using ${PLUGIN_VERSION}.\nThe latest is ${e}`)}catch(A){errorlog({where:"Utils/checkExcalidrawVersion",error:A})}setTimeout((()=>versionUpdateChecked=!1),288e5)}};function wrapText(A,e,t=!1,i=0){if(!e)return A;let n="";if(t){for(const t of A.split("\n")){const A=t.match(new RegExp(`(.){1,${e}}`,"g"));n+=A?`${A.join("\n")}\n`:"\n"}return n.replace(/\n$/,"")}const a=new RegExp(`(.{1,${e}})(\\s+|$\\n?)|([^\\s]{1,${e+i}})(\\s+|$\\n?)?`,"gm"),r=A.matchAll(a);let s;for(;!(s=r.next()).done;){n+=s.value[1]?s.value[1].trimEnd():s.value[3].trimEnd();const A=(s.value[2]?s.value[2].split("\n").length-1:0)+(s.value[4]?s.value[4].split("\n").length-1:0);n+="\n".repeat(A),0===A&&(n+="\n")}return n.replace(/\n$/,"")}const rotate=(A,e,t,i,n)=>[(A-t)*Math.cos(n)-(e-i)*Math.sin(n)+t,(A-t)*Math.sin(n)+(e-i)*Math.cos(n)+i],rotatedDimensions=A=>{if(0===A.angle)return[A.x,A.y,A.width,A.height];const e=A.x+A.width/2,t=A.y+A.height/2,[i,n]=rotate(A.x,A.y,e,t,A.angle),[a,r]=rotate(A.x+A.width,A.y+A.height,e,t,A.angle);return[i{const s=1/t.value;return{x:(A-i)*s-a,y:(e-n)*s-r}},getDataURL=async(A,e)=>new Promise(((t,i)=>{const n=new FileReader;n.onload=()=>{const A=n.result;t(A)},n.onerror=A=>i(A),n.readAsDataURL(new Blob([new Uint8Array(A)],{type:e}))})),getFontDataURL=async(A,e,t,i)=>{let n="",a="",r="";const s=A.metadataCache.getFirstLinkpathDest(e,t);if(s){const e=await A.vault.readBinary(s),t=s.extension.startsWith("woff")?"application/font-woff":"font/truetype";a=null!=i?i:s.basename,r=await getDataURL(e,t),n=` @font-face {font-family: "${a}";src: url("${r}") format("${"ttf"===s.extension?"truetype":s.extension}");}`;const o=n.split(";base64,",2);n=`${o[0]};charset=utf-8;base64,${o[1]}`}return{fontDef:n,fontName:a,dataURL:r}},svgToBase64=A=>`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(A.replaceAll(" "," "))))}`,getBinaryFileFromDataURL=A=>{if(!A)return null;const e=A.matchAll(/base64,(.*)/g).next(),t=window.atob(e.value[1]),i=t.length,n=new Uint8Array(i);for(let A=0;A{var i;try{return await exportToSvg({elements:A.elements,appState:Object.assign({exportBackground:e.withBackground,exportWithDarkMode:!!e.withTheme&&"light"!=(null===(i=A.appState)||void 0===i?void 0:i.theme)},A.appState),files:A.files,exportPadding:t})}catch(A){return null}},getPNG=async(A,e,t,i=1)=>{var n;try{return await exportToBlob({elements:A.elements,appState:Object.assign({exportBackground:e.withBackground,exportWithDarkMode:!!e.withTheme&&"light"!=(null===(n=A.appState)||void 0===n?void 0:n.theme)},A.appState),files:A.files,exportPadding:t,mimeType:"image/png",getDimensions:(A,e)=>({width:A*i,height:e*i,scale:i})})}catch(A){return errorlog({where:"Utils.getPNG",error:A}),null}},getQuickImagePreview=async(A,e,t)=>{if(!A.settings.displayExportedImageIfAvailable)return null;const i=getIMGFilename(e,t),n=A.app.vault.getAbstractFileByPath(i);return n&&n instanceof obsidian.TFile?"png"===t?await A.app.vault.readBinary(n):await A.app.vault.read(n):null},embedFontsInSVG=(A,e)=>{const t=null!=A.querySelector("text[font-family^='Virgil']"),i=null!=A.querySelector("text[font-family^='Cascadia']"),n=null!=A.querySelector("text[font-family^='LocalFont']"),a=A.querySelector("defs");return a&&(i||t||n)&&(a.innerHTML=``),A},getImageSize=async A=>new Promise(((e,t)=>{const i=new Image;i.onload=()=>e({height:i.naturalHeight,width:i.naturalWidth}),i.onerror=t,i.src=A})),scaleLoadedImage=(A,e)=>{let t=!1;if(!e||!A)return{dirty:t,scene:A};for(const i of e){const[e,n]=[i.size.width,i.size.height],a=i.size.width/i.size.height;return A.elements.filter((A=>"image"===A.type&&A.fileId===i.id)).forEach((A=>{const[i,r]=[A.width,A.height];if(a!=i/r){t=!0;const a=Math.sqrt(i*r*n/e),s=Math.sqrt(i*r*e/n);A.height=a,A.width=s,A.y+=(r-a)/2,A.x+=(i-s)/2}})),{dirty:t,scene:A}}},setDocLeftHandedMode=(A,e)=>{const t=e.createElement("style");t.id="excalidraw-left-handed",t.textContent=".excalidraw .App-bottom-bar{justify-content:flex-end;}";const i=e.getElementById(t.id);i&&e.head.removeChild(i),A&&e.head.appendChild(t)},setLeftHandedMode=A=>{const e=new Set;app.workspace.iterateAllLeaves((t=>{const i=app.isMobile?document:t.view.containerEl.ownerDocument;i&&(e.has(i)||(e.add(i),setDocLeftHandedMode(A,i)))}))},getLinkParts=(A,e)=>{var t;const i=A.match(/(^[^#\|]*)#?(\^)?([^\|]*)?\|?(\d*)x?(\d*)/);return{original:A,path:e&&""===i[1]?e.path:i[1],isBlockRef:"^"===i[2],ref:null===(t=i[3])||void 0===t?void 0:t.replaceAll(REG_BLOCK_REF_CLEAN,""),width:i[4]?parseInt(i[4]):void 0,height:i[5]?parseInt(i[5]):void 0}},compress=A=>lzString.exports.compressToBase64(A).replace(/(.{64})/g,"$1\n\n"),decompress=A=>lzString.exports.decompressFromBase64(A.replaceAll("\n","").replaceAll("\r","")),hasExportTheme=(A,e)=>{if(e){const t=A.app.metadataCache.getFileCache(e);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-dark"])return!0}return!1},getExportTheme=(A,e,t)=>{if(e){const t=A.app.metadataCache.getFileCache(e);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-dark"])return t.frontmatter["excalidraw-export-dark"]?"dark":"light"}return A.settings.exportWithTheme?t:"light"},hasExportBackground=(A,e)=>{if(e){const t=A.app.metadataCache.getFileCache(e);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-transparent"])return!0}return!1},getWithBackground=(A,e)=>{if(e){const t=A.app.metadataCache.getFileCache(e);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-transparent"])return!t.frontmatter["excalidraw-export-transparent"]}return A.settings.exportWithBackground},getExportPadding=(A,e)=>{if(e){const t=A.app.metadataCache.getFileCache(e);if(!(null==t?void 0:t.frontmatter))return A.settings.exportPaddingSVG;if(null!=t.frontmatter["excalidraw-export-padding"]){const A=parseInt(t.frontmatter["excalidraw-export-padding"]);if(!isNaN(A))return A}if(null!=t.frontmatter["excalidraw-export-svgpadding"]){const A=parseInt(t.frontmatter["excalidraw-export-svgpadding"]);if(!isNaN(A))return A}}return A.settings.exportPaddingSVG},getPNGScale=(A,e)=>{if(e){const t=A.app.metadataCache.getFileCache(e);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-pngscale"]){const A=parseFloat(t.frontmatter["excalidraw-export-pngscale"]);if(!isNaN(A)&&A>0)return A}}return A.settings.pngExportScale},isVersionNewerThanOther=(A,e)=>{const t=A.match(/(\d*)\.(\d*)\.(\d*)/),i=e.match(/(\d*)\.(\d*)\.(\d*)/);return Boolean(t&&4===t.length&&i&&4===i.length&&!(isNaN(parseInt(t[1]))||isNaN(parseInt(t[2]))||isNaN(parseInt(t[3])))&&!(isNaN(parseInt(i[1]))||isNaN(parseInt(i[2]))||isNaN(parseInt(i[3])))&&(parseInt(t[1])>parseInt(i[1])||parseInt(t[1])>=parseInt(i[1])&&parseInt(t[2])>parseInt(i[2])||parseInt(t[1])>=parseInt(i[1])&&parseInt(t[2])>=parseInt(i[2])&&parseInt(t[3])>parseInt(i[3])))},getEmbeddedFilenameParts=A=>{const e=null==A?void 0:A.match(/([^#\^]*)((#\^)(group=|area=)?([^\|]*)|(#)(group=|area=)?([^\^\|]*))(.*)/);return e?{filepath:e[1],hasBlockref:Boolean(e[3]),hasGroupref:"group="===e[4]||"group="===e[7],hasArearef:"area="===e[4]||"area="===e[7],blockref:e[5],hasSectionref:Boolean(e[6]),sectionref:e[8],linkpartReference:e[2],linkpartAlias:e[9]}:{filepath:A,hasBlockref:!1,hasGroupref:!1,hasArearef:!1,blockref:"",hasSectionref:!1,sectionref:"",linkpartReference:"",linkpartAlias:""}},errorlog=A=>{console.error(Object.assign({plugin:"Excalidraw"},A))},sleep$1=async A=>new Promise((e=>setTimeout(e,A))),log=console.log.bind(window.console);console.log.bind(window.console);const getParentOfClass=(A,e)=>{var t;let i=A.parentElement;for(;i&&!(i instanceof window.HTMLBodyElement)&&!i.classList.contains(e);)i=i.parentElement;return(null===(t=null==i?void 0:i.classList)||void 0===t?void 0:t.contains(e))?i:null},getNewOrAdjacentLeaf=(A,e)=>{const t=e.id,i=app.workspace.getLayout(),n=A=>A.children.filter((A=>"leaf"!==A.type)).map((A=>n(A))).flat().concat(A.children.filter((A=>"leaf"===A.type)).map((A=>A.id))),a=n(i.main),r=i.main&&a.contains(t)?"main":i.floating&&n(i.floating).contains(t)?"popout":i.left&&n(i.left).contains(t)?"left":i.right&&n(i.right).contains(t)?"right":"hover",s=()=>{var A;let t=app.workspace.getMostRecentLeaf();return t&&t!==e&&(null===(A=t.view)||void 0===A?void 0:A.containerEl.ownerDocument)===document||(t=null,a.forEach((A=>{var i;const n=app.workspace.getLeafById(A);!t&&(null===(i=n.view)||void 0===i?void 0:i.navigation)&&e!==n&&(t=n)}))),t};if(A.settings.openInMainWorkspace||["main","left","right"].contains(r)){if(!A.settings.openInAdjacentPane){if("main"===r)return app.workspace.createLeafBySplit(e);const A=s();return A?"empty"===A.view.getViewType()?A:app.workspace.createLeafBySplit(A):app.workspace.getLeaf(!0)}const t=s();return null!=t?t:app.workspace.getLeaf(!0)}if(!A.settings.openInAdjacentPane)return app.workspace.createLeafBySplit(e);if("hover"===r){const t=new Set;return app.workspace.iterateAllLeaves((A=>{A!==e&&e.containerEl.parentElement===A.containerEl.parentElement&&t.add(A)})),0===t.size?A.app.workspace.createLeafBySplit(e):Array.from(t)[0]}if("popout"===r){const A=new Set;return app.workspace.iterateAllLeaves((t=>{t!==e&&t.view.navigation&&t.view.containerEl.ownerDocument===e.view.containerEl.ownerDocument&&A.add(t)})),0===A.size?app.workspace.createLeafBySplit(e):Array.from(A)[0]}return A.app.workspace.createLeafBySplit(e)},getAttachmentsFolderAndFilePath=async(A,e,t)=>{let i=A.vault.getConfig("attachmentFolderPath");if(i&&i.startsWith("./")){const A=`${splitFolderAndFilename(e).folderpath}/`;i=obsidian.normalizePath(A+i.substring(2))}return i&&"/"!==i||(i=""),await checkAndCreateFolder(i),{folder:i,filepath:obsidian.normalizePath(""===i?t:`${i}/${t}`)}},isObsidianThemeDark=()=>document.body.classList.contains("theme-dark");var ar={},cz={},da={},de={},en={INSTALL_SCRIPT:"Install this script",UPDATE_SCRIPT:"An update is available - Click to install",CHECKING_SCRIPT:"Checking if a newer version is available - Click to reinstall now",UNABLETOCHECK_SCRIPT:"Update check was unsuccessful - Click to reinstall now",UPTODATE_SCRIPT:"Script is installed and up to date - Click to reinstall now",OPEN_AS_EXCALIDRAW:"Open as Excalidraw Drawing",TOGGLE_MODE:"Toggle between Excalidraw and Markdown mode",CONVERT_NOTE_TO_EXCALIDRAW:"Convert empty note to Excalidraw Drawing",CONVERT_EXCALIDRAW:"Convert *.excalidraw to *.md files",CREATE_NEW:"New Excalidraw drawing",CONVERT_FILE_KEEP_EXT:"*.excalidraw => *.excalidraw.md",CONVERT_FILE_REPLACE_EXT:"*.excalidraw => *.md (Logseq compatibility)",DOWNLOAD_LIBRARY:"Export stencil library as an *.excalidrawlib file",OPEN_EXISTING_NEW_PANE:"Open an existing drawing - IN A NEW PANE",OPEN_EXISTING_ACTIVE_PANE:"Open an existing drawing - IN THE CURRENT ACTIVE PANE",TRANSCLUDE:"Transclude (embed) a drawing",TRANSCLUDE_MOST_RECENT:"Transclude (embed) the most recently edited drawing",TOGGLE_LEFTHANDED_MODE:"Toggle left-handed mode",NEW_IN_NEW_PANE:"Create a new drawing - IN A NEW PANE",NEW_IN_ACTIVE_PANE:"Create a new drawing - IN THE CURRENT ACTIVE PANE",NEW_IN_POPOUT_WINDOW:"Create a new drawing - IN A POPOUT WINDOW",NEW_IN_NEW_PANE_EMBED:"Create a new drawing - IN A NEW PANE - and embed into active document",NEW_IN_ACTIVE_PANE_EMBED:"Create a new drawing - IN THE CURRENT ACTIVE PANE - and embed into active document",NEW_IN_POPOUT_WINDOW_EMBED:"Create a new drawing - IN A POPOUT WINDOW - and embed into active document",EXPORT_SVG:"Save as SVG next to the current file",EXPORT_PNG:"Save as PNG next to the current file",TOGGLE_LOCK:"Toggle Text Element edit RAW/PREVIEW",DELETE_FILE:"Delete selected Image or Markdown file from Obsidian Vault",INSERT_LINK_TO_ELEMENT:"Copy markdown link for selected element to clipboard. CTRL/CMD+Click to copy group link. SHIFT+click to copy an area link.",INSERT_LINK_TO_ELEMENT_GROUP:"Copy 'group=' markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_AREA:"Copy 'area=' markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_NORMAL:"Copy markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_ERROR:"Select a single element in the scene",INSERT_LINK_TO_ELEMENT_READY:"Link is READY and available on the clipboard",INSERT_LINK:"Insert link to file",INSERT_IMAGE:"Insert image from vault",INSERT_MD:"Insert markdown file from vault",INSERT_LATEX:"Insert LaTeX formula (e.g. \\binom{n}{k} = \\frac{n!}{k!(n-k)!})",ENTER_LATEX:"Enter a valid LaTeX expression",READ_RELEASE_NOTES:"Read latest release notes",TRAY_MODE:"Toggle property-panel tray-mode",SEARCH:"Search for text in drawing",INSTALL_SCRIPT_BUTTON:"Install or update Excalidraw Scripts",OPEN_AS_MD:"Open as Markdown",SAVE_AS_PNG:"Save as PNG into Vault (CTRL/CMD+CLICK to export)",SAVE_AS_SVG:"Save as SVG into Vault (CTRL/CMD+CLICK to export)",OPEN_LINK:"Open selected text as link\n(SHIFT+CLICK to open in a new pane)",EXPORT_EXCALIDRAW:"Export to an .Excalidraw file",LINK_BUTTON_CLICK_NO_TEXT:"Select a an ImageElement, or select a TextElement that contains an internal or external link.\nSHIFT CLICK this button to open the link in a new pane.\nCTRL/CMD CLICK the Image or TextElement on the canvas has the same effect!",FILENAME_INVALID_CHARS:'File name cannot contain any of the following characters: * " \\ < > : | ? #',FILE_DOES_NOT_EXIST:"File does not exist. Hold down ALT (or ALT+SHIFT) and CLICK link button to create a new file.",FORCE_SAVE:"Force-save to update transclusions in adjacent panes.\n(Check autosave settings in plugin settings.)",RAW:"Change to PREVIEW mode (only effects text-elements with links or transclusions)",PARSED:"Change to RAW mode (only effects text-elements with links or transclusions)",NOFILE:"Excalidraw (no file)",COMPATIBILITY_MODE:"*.excalidraw file opened in compatibility mode. Convert to new format for full plugin functionality.",CONVERT_FILE:"Convert to new format",RELEASE_NOTES_NAME:"Display Release Notes after update",RELEASE_NOTES_DESC:"Toggle ON: Display release notes each time you update Excalidraw to a newer version.
Toggle OFF: Silent mode. You can still read release notes on GitHub.",NEWVERSION_NOTIFICATION_NAME:"Plugin update notification",NEWVERSION_NOTIFICATION_DESC:"Toggle ON: Show a notification when a new version of the plugin is avaiable.
Toggle OFF: Silent mode. You need to check for plugin updates in Community Plugins.",FOLDER_NAME:"Excalidraw folder",FOLDER_DESC:"Default location for new drawings. If empty, drawings will be created in the Vault root.",FOLDER_EMBED_NAME:"Use Excalidraw folder when embedding a drawing into the active document",FOLDER_EMBED_DESC:"Define which folder to place the newly inserted drawing into when using the command palette action: 'Create a new drawing and embed into active document'.
Toggle ON: Use Excalidraw folder
Toggle OFF: use the attachments folder defined in Obsidian settings.",TEMPLATE_NAME:"Excalidraw template file",TEMPLATE_DESC:"Full filepath to the Excalidraw template. E.g.: If your template is in the default Excalidraw folder and it's name is Template.md, the setting would be: Excalidraw/Template.md (or just Excalidraw/Template - you may omit the .md file extension). If you are using Excalidraw in compatibility mode, then your template must be a legacy Excalidraw file as well such as Excalidraw/Template.excalidraw.",SCRIPT_FOLDER_NAME:"Excalidraw Automate script folder",SCRIPT_FOLDER_DESC:"The files you place in this folder will be treated as Excalidraw Automate scripts. You can access your scripts from Excalidraw via the Obsidian Command Palette. Assign hotkeys to your favorite scripts just like to any other Obsidian command. The folder may not be the root folder of your Vault. ",COMPRESS_NAME:"Compress Excalidraw JSON in Markdown",COMPRESS_DESC:"By enabling this feature Excalidraw will store the drawing JSON in a Base64 compressed format using the LZ-String algorithm. This will reduce the chance of Excalidraw JSON cluttering your search results in Obsidian. As a side effect, this will also reduce the filesize of Excalidraw drawings. When you switch an Excalidraw drawing to Markdown view, using the options menu in Excalidraw, the file will be saved without compression, so that you can read and edit the JSON string. The drawing will be compressed again once you switch back to Excalidraw view. The setting only has effect 'point forward', meaning, existing drawings will not be effected by the setting until you open them and save them.
Toggle ON: Compress drawing JSON
Toggle OFF: Leave drawing JSON uncompressed",AUTOSAVE_NAME:"Enable Autosave",AUTOSAVE_DESC:"Automatically save the active drawing, in case there are changes, every 15, 30 seconds, or 1, 2, 3, 4, or 5 minute. Save normally happens when you close Excalidraw or Obsidian, or move focus to another pane. I created this feature with mobile phones and tablets in mind, where 'swiping out Obsidian to close it' led to some data loss.",AUTOSAVE_INTERVAL_NAME:"Interval for autosave",AUTOSAVE_INTERVAL_DESC:"The time interval between saves. Autosave will skip if there are no changes in the drawing.",FILENAME_HEAD:"Filename",FILENAME_DESC:"

Click this link for the date and time format reference.

",FILENAME_SAMPLE:"Filename for a new drawing is: ",FILENAME_EMBED_SAMPLE:"Filename for a new embedded drawing is: ",FILENAME_PREFIX_NAME:"Filename prefix",FILENAME_PREFIX_DESC:"The first part of the filename",FILENAME_PREFIX_EMBED_NAME:"Filename prefix when embedding a new drawing into a markdown note",FILENAME_PREFIX_EMBED_DESC:"Should the filename of the newly inserted drawing start with the name of the active markdown note when using the command palette action: Create a new drawing and embed into active document?
Toggle ON: Yes, the filename of a new drawing should start with filename of the active document
Toggle OFF: No, filename of a new drawing should not include the filename of the active document",FILENAME_POSTFIX_NAME:"Custom text after markdown Note's name when embedding",FILENAME_POSTFIX_DESC:"Effects filename only when embedding into a markdown document. This is text will be inserted after the note's name, but before the date.",FILENAME_DATE_NAME:"Filename Date",FILENAME_DATE_DESC:"The last part of the filename. Leave empty if you do not want a date.",FILENAME_EXCALIDRAW_EXTENSION_NAME:".excalidraw.md or .md",FILENAME_EXCALIDRAW_EXTENSION_DESC:"This setting does not apply if you use Excalidraw in compatibility mode, i.e. you are not using Excalidraw markdown files.
Toggle ON: filename ends with .excalidraw.md
Toggle OFF: filename ends with .md",DISPLAY_HEAD:"Display",LEFTHANDED_MODE_NAME:"Left-handed mode",LEFTHANDED_MODE_DESC:"Currently only has effect in tray-mode. If turned on, the tray will be on the right side.
Toggle ON: Left-handed mode.
Toggle OFF: Right-handed moded",MATCH_THEME_NAME:"New drawing to match Obsidian theme",MATCH_THEME_DESC:"If theme is dark, new drawing will be created in dark mode. This does not apply when you use a template for new drawings. Also this will not effect when you open an existing drawing. Those will follow the theme of the template/drawing respectively.
Toggle ON: Follow Obsidian Theme
Toggle OFF:Follow theme defined in your template",MATCH_THEME_ALWAYS_NAME:"Existing drawings to match Obsidian theme",MATCH_THEME_ALWAYS_DESC:"If theme is dark, drawings will be opened in dark mode. If your theme is light, they will be opened in light mode.
Toggle ON: Match Obsidian theme
Toggle OFF: Open with the same theme as last saved",MATCH_THEME_TRIGGER_NAME:"Excalidraw to follow when Obsidian Theme changes",MATCH_THEME_TRIGGER_DESC:"If this option is enabled open Excalidraw pane will switch to light/dark mode when Obsidian theme changes.
Toggle ON: Follow theme changes
Toggle OFF: Drawings are not effected by Obsidian theme changes",DEFAULT_OPEN_MODE_NAME:"Default mode when opening Excalidraw",DEFAULT_OPEN_MODE_DESC:"Specifies the mode how Excalidraw opens: Normal, Zen, or View mode. You may also set this behavior on a file level by adding the excalidraw-default-mode frontmatter key with a value of: normal,view, or zen to your document.",DEFAULT_PEN_MODE_NAME:"Pen mode",DEFAULT_PEN_MODE_DESC:"Should pen mode be automatically enabled when opening Excalidraw?",ZOOM_TO_FIT_NAME:"Zoom to fit on view resize",ZOOM_TO_FIT_DESC:"Zoom to fit drawing when the pane is resized
Toggle ON: Zoom to fit
Toggle OFF: Auto zoom disabled",ZOOM_TO_FIT_MAX_LEVEL_NAME:"Zoom to fit max ZOOM level",ZOOM_TO_FIT_MAX_LEVEL_DESC:"Set the maximum level to which zoom to fit will enlarge the drawing. Minimum is 0.5 (50%) and maximum is 10 (1000%).",LINKS_HEAD:"Links and transclusion",LINKS_DESC:"CTRL/CMD + CLICK on [[Text Elements]] to open them as links. If the selected text has more than one [[valid Obsidian links]], only the first will be opened. If the text starts as a valid web link (i.e. https:// or http://), then the plugin will open it in a browser. When Obsidian files change, the matching [[link]] in your drawings will also change. If you don't want text accidentally changing in your drawings use [[links|with aliases]].",ADJACENT_PANE_NAME:"Open in adjacent pane",ADJACENT_PANE_DESC:"When CTRL/CMD+SHIFT clicking a link in Excalidraw, by default the plugin will open the link in a new pane. Turning this setting on, Excalidraw will first look for an existing adjacent pane, and try to open the link there. Excalidraw will look for the adjacent pane based on your focus/navigation history, i.e. the workpane that was active before you activated Excalidraw.",MAINWORKSPACE_PANE_NAME:"Open in main workspace",MAINWORKSPACE_PANE_DESC:"When CTRL/CMD+SHIFT clicking a link in Excalidraw, by default the plugin will open the link in a new pane in the current active window. Turning this setting on, Excalidraw will open the link in an existing or new pane in the main workspace. ",LINK_BRACKETS_NAME:"Show [[brackets]] around links",LINK_BRACKETS_DESC:"In PREVIEW mode, when parsing Text Elements, place brackets around links. You can override this setting for a specific drawing by adding excalidraw-link-brackets: true/false to the file's frontmatter.",LINK_PREFIX_NAME:"Link prefix",LINK_PREFIX_DESC:'In PREVIEW mode, if the Text Element contains a link, precede the text with these characters. You can override this setting for a specific drawing by adding excalidraw-link-prefix: "📍 " to the file\'s frontmatter.',URL_PREFIX_NAME:"URL prefix",URL_PREFIX_DESC:'In PREVIEW mode, if the Text Element contains a URL link, precede the text with these characters. You can override this setting for a specific drawing by adding excalidraw-url-prefix: "🌐 " to the file\'s frontmatter.',HOVERPREVIEW_NAME:"Hover preview without CTRL/CMD key",HOVERPREVIEW_DESC:"Toggle On: In Exalidraw view mode the hover preview for [[wiki links]] will be shown immediately, without the need to hold the CTRL/CMD key. In Excalidraw normal mode, the preview will be shown immediately only when hovering the blue link icon in the top right of the element.
Toggle Off: Hover preview is shown only when you hold the CTRL/CMD key while hovering the link.",LINKOPACITY_NAME:"Opacity of link icon",LINKOPACITY_DESC:"Opacity of the link indicator icon in the top right corner of an element. 1 is opaque, 0 is transparent.",LINK_CTRL_CLICK_NAME:"CTRL/CMD + CLICK on text with [[links]] or [](links) to open them",LINK_CTRL_CLICK_DESC:"You can turn this feature off if it interferes with default Excalidraw features you want to use. If this is turned off, only the link button in the title bar of the drawing pane will open links.",TRANSCLUSION_WRAP_NAME:"Overflow wrap behavior of transcluded text",TRANSCLUSION_WRAP_DESC:"Number specifies the character count where the text should be wrapped. Set the text wrapping behavior of transcluded text. Turn this ON to force-wrap text (i.e. no overflow), or OFF to soft-wrap text (at the nearest whitespace).",TRANSCLUSION_DEFAULT_WRAP_NAME:"Transclusion word wrap default",TRANSCLUSION_DEFAULT_WRAP_DESC:"You can set manually set/override word wrapping length using the `![[page#^block]]{NUMBER}` format. Normally you will not want to set a default, because if you transclude text inside a sticky note, then Excalidraw will automatically take care of word wrapping. Set this value to `0` if you do not want to set a default. ",PAGE_TRANSCLUSION_CHARCOUNT_NAME:"Page transclusion max char count",PAGE_TRANSCLUSION_CHARCOUNT_DESC:"The maximum number of characters to display from the page when transcluding an entire page with the ![[markdown page]] format.",GET_URL_TITLE_NAME:"Use iframely to resolve page title",GET_URL_TITLE_DESC:"Use the http://iframely.server.crestify.com/iframely?url= to get title of page when dropping a link into Excalidraw",MD_HEAD:"Markdown-embed settings",MD_HEAD_DESC:"You can transclude formatted markdown documents into drawings as images CTRL(Shift on Mac) drop from the file explorer or using the command palette action.",MD_TRANSCLUDE_WIDTH_NAME:"Default width of a transcluded markdown document",MD_TRANSCLUDE_WIDTH_DESC:"The width of the markdown page. This effects the word wrapping when transcluding longer paragraphs, and the width of the image element. You can override the default width of an embedded file using the [[filename#heading|WIDTHxMAXHEIGHT]] syntax in markdown view mode under embedded files.",MD_TRANSCLUDE_HEIGHT_NAME:"Default maximum height of a transcluded markdown document",MD_TRANSCLUDE_HEIGHT_DESC:"The embedded image will be as high as the markdown text requires, but not higher than this value. You can override this value by editing the embedded image link in markdown view mode with the following syntax [[filename#^blockref|WIDTHxMAXHEIGHT]].",MD_DEFAULT_FONT_NAME:"The default font typeface to use for embedded markdown files.",MD_DEFAULT_FONT_DESC:'Set this value to "Virgil" or "Cascadia" or the filename of a valid .ttf, .woff, or .woff2 font e.g. MyFont.woff2 You can override this setting by adding the following frontmatter-key to the embedded markdown file: excalidraw-font: font_or_filename',MD_DEFAULT_COLOR_NAME:"The default font color to use for embedded markdown files.",MD_DEFAULT_COLOR_DESC:'Set this to any valid css color name e.g. "steelblue" (color names), or a valid hexadecimal color e.g. "#e67700", or any other valid css color string. You can override this setting by adding the following frontmatter-key to the embedded markdown file: excalidraw-font-color: steelblue',MD_DEFAULT_BORDER_COLOR_NAME:"The default border color to use for embedded markdown files.",MD_DEFAULT_BORDER_COLOR_DESC:'Set this to any valid css color name e.g. "steelblue" (color names), or a valid hexadecimal color e.g. "#e67700", or any other valid css color string. You can override this setting by adding the following frontmatter-key to the embedded markdown file: excalidraw-border-color: gray. Leave empty if you don\'t want a border. ',MD_CSS_NAME:"CSS file",MD_CSS_DESC:"The filename of the CSS to apply to markdown embeds. Provide the filename with extension (e.g. 'md-embed.css'). The css file may also be a plain markdown file (e.g. 'md-embed-css.md'), just make sure the content is written using valid css syntax. If you need to look at the HTML code you are applying the CSS to, then open Obsidian Developer Console (CTRL+SHIFT+i) and type in the following command: \"ExcalidrawAutomate.mostRecentMarkdownSVG\". This will display the most recent SVG generated by Excalidraw. Setting the font-family in the css is has limitations. By default only your operating system's standard fonts are available (see README for details). You can add one custom font beyond that using the setting above. You can override this css setting by adding the following frontmatter-key to the embedded markdown file: \"excalidraw-css: css_file_in_vault|css-snippet\".",EMBED_HEAD:"Embed & Export",EMBED_REUSE_EXPORTED_IMAGE_NAME:"If found, use the already exported image for preview",EMBED_REUSE_EXPORTED_IMAGE_DESC:"This setting works in conjunction with the Auto-export SVG/PNG setting. If an exported image that matches the file name of the drawing is available, use that image instead of generating a preview image on the fly. This will result in faster previews especially when you have many embedded objects in the drawing, however, it may happen that your latest changes are not displayed and that the image will not automatically match your Obsidian theme in case you have changed the Obsidian theme since the export was created. This setting only applies to embedding images into markdown documents. For a number of reasons, the same approach cannot be used to expedite the loading of drawings with many embedded objects. See demonstration here.",EMBED_PREVIEW_SVG_NAME:"Display SVG in markdown preview",EMBED_PREVIEW_SVG_DESC:"Toggle ON: Embed drawing as an SVG image into the markdown preview.
Toggle OFF: Embedd drawing as a PNG image. Note, that some of the image block referencing features do not work with PNG embeds.",PREVIEW_MATCH_OBSIDIAN_NAME:"Excalidraw preview to match Obsidian theme",PREVIEW_MATCH_OBSIDIAN_DESC:"Image preview in documents should match the Obsidian theme. If enabled, when Obsidian is in dark mode, Excalidraw images will render in dark mode. When Obsidian is in light mode, Excalidraw will render light mode as well. You may want to switch 'Export image with background' off for a more Obsidian-integrated look and feel.",EMBED_WIDTH_NAME:"Default width of embedded (transcluded) image",EMBED_WIDTH_DESC:"The default width of an embedded drawing. This applies to live preview edit and reading mode, as well as to hover previews. You can specify a custom width when embedding an image using the ![[drawing.excalidraw|100]] or [[drawing.excalidraw|100x100]] format.",EMBED_TYPE_NAME:"Type of file to insert into the document",EMBED_TYPE_DESC:"When you embed an image into a document using the command palette this setting will specify if Excalidraw should embed the original Excalidraw file or a PNG or an SVG copy. You need to enable auto-export PNG / SVG (see below under Export Settings) for those image types to be available in the dropdown. For drawings that do not have a a corresponding PNG or SVG readily available the command palette action will insert a broken link. You need to open the original drawing and initiate export manually. This option will not autogenerate PNG/SVG files, but will simply reference the already existing files.",EMBED_WIKILINK_NAME:"Embed SVG or PNG as Wiki link",EMBED_WIKILINK_DESC:"Toggle ON: Excalidraw will embed a [[wiki link]]. Toggle OFF: Excalidraw will embed a [markdown](link).",EXPORT_PNG_SCALE_NAME:"PNG export image scale",EXPORT_PNG_SCALE_DESC:"The size-scale of the exported PNG image",EXPORT_BACKGROUND_NAME:"Export image with background",EXPORT_BACKGROUND_DESC:"If turned off, the exported image will be transparent.",EXPORT_PADDING_NAME:"Image Padding",EXPORT_PADDING_DESC:"The padding (in pixels) around the exported SVG or PNG image. If you have curved lines close to the edge of the image they might get cropped during image export. You can increase this value to avoid cropping. You can also override this setting at a file level by adding the excalidraw-export-padding: 5 frontmatter key.",EXPORT_THEME_NAME:"Export image with theme",EXPORT_THEME_DESC:"Export the image matching the dark/light theme of your drawing. If turned off, drawings created in dark mode will appear as they would in light mode.",EXPORT_HEAD:"Export Settings",EXPORT_SYNC_NAME:"Keep the .SVG and/or .PNG filenames in sync with the drawing file",EXPORT_SYNC_DESC:"When turned on, the plugin will automatically update the filename of the .SVG and/or .PNG files when the drawing in the same folder (and same name) is renamed. The plugin will also automatically delete the .SVG and/or .PNG files when the drawing in the same folder (and same name) is deleted. ",EXPORT_SVG_NAME:"Auto-export SVG",EXPORT_SVG_DESC:"Automatically create an SVG export of your drawing matching the title of your file. The plugin will save the *.SVG file in the same folder as the drawing. Embed the .svg file into your documents instead of Excalidraw making you embeds platform independent. While the auto-export switch is on, this file will get updated every time you edit the Excalidraw drawing with the matching name. You can override this setting on a file level by adding the excalidraw-autoexport frontmatter key. Valid values for this key are none,both,svg, and png",EXPORT_PNG_NAME:"Auto-export PNG",EXPORT_PNG_DESC:"Same as the auto-export SVG, but for *.PNG",EXPORT_BOTH_DARK_AND_LIGHT_NAME:"Export both dark- and light-themed image",EXPORT_BOTH_DARK_AND_LIGHT_DESC:"When enabled, Excalidraw will export two files instead of one: filename.dark.png, filename.light.png and/or filename.dark.svg and filename.light.svg
Double files will be exported both if auto-export SVG or PNG (or both) are enabled, as well as when clicking export on a single image.",COMPATIBILITY_HEAD:"Compatibility features",EXPORT_EXCALIDRAW_NAME:"Auto-export Excalidraw",EXPORT_EXCALIDRAW_DESC:"Same as the auto-export SVG, but for *.Excalidraw",SYNC_EXCALIDRAW_NAME:"Sync *.excalidraw with *.md version of the same drawing",SYNC_EXCALIDRAW_DESC:"If the modified date of the *.excalidraw file is more recent than the modified date of the *.md file then update the drawing in the .md file based on the .excalidraw file",COMPATIBILITY_MODE_NAME:"New drawings as legacy files",COMPATIBILITY_MODE_DESC:"By enabling this feature drawings you create with the ribbon icon, the command palette actions, and the file explorer are going to be all legacy *.excalidraw files. This setting will also turn off the reminder message when you open a legacy file for editing.",MATHJAX_NAME:"MathJax (LaTeX) javascript library host",MATHJAX_DESC:"If you are using LaTeX equiations in Excalidraw then the plugin needs to load a javascript library for that. Some users are unable to access certain host servers. If you are experiencing issues try changing the host here. You may need to restart Obsidian after closing settings, for this change to take effect.",EXPERIMENTAL_HEAD:"Experimental features",EXPERIMENTAL_DESC:"Some of these setting will not take effect immediately, only when the File Explorer is refreshed, or Obsidian restarted.",FIELD_SUGGESTER_NAME:"Enable Field Suggester",FIELD_SUGGESTER_DESC:"Field Suggester borrowed from Breadcrumbs and Templater plugins. The Field Suggester will show an autocomplete menu when you type excalidraw- or ea. with function description as hints on the individual items in the list.",FILETYPE_NAME:"Display type (✏️) for excalidraw.md files in File Explorer",FILETYPE_DESC:"Excalidraw files will receive an indicator using the emoji or text defined in the next setting.",FILETAG_NAME:"Set the type indicator for excalidraw.md files",FILETAG_DESC:"The text or emoji to display as type indicator.",INSERT_EMOJI:"Insert an emoji",LIVEPREVIEW_NAME:"Immersive image embedding in live preview editing mode",LIVEPREVIEW_DESC:"Turn this on to support image embedding styles such as ![[drawing|width|style]] in live preview editing mode. The setting will not effect the currently open documents. You need close the open documents and re-open them for the change to take effect.",ENABLE_FOURTH_FONT_NAME:"Enable fourth font option",ENABLE_FOURTH_FONT_DESC:"By turning this on, you will see a fourth font button on the properties panel for text elements. Files that use this fourth font will (partly) lose their platform independence. Depending on the custom font set in settings, they will look differently when loaded in another vault, or at a later time. Also the 4th font will display as system default font on excalidraw.com, or other Excalidraw versions.",FOURTH_FONT_NAME:"Forth font file",FOURTH_FONT_DESC:"Select a .ttf, .woff or .woff2 font file from your vault to use as the fourth font. If no file is selected, Excalidraw will use the Virgil font by default.",SCRIPT_SETTINGS_HEAD:"Settings for installed Scripts",SELECT_FILE:"Select a file then press enter.",NO_MATCH:"No file matches your query.",SELECT_FILE_TO_LINK:"Select the file you want to insert the link for.",SELECT_DRAWING:"Select the drawing you want to insert",TYPE_FILENAME:"Type name of drawing to select.",SELECT_FILE_OR_TYPE_NEW:"Select existing drawing or type name of a new drawing then press Enter.",SELECT_TO_EMBED:"Select the drawing to insert into active document.",SELECT_MD:"Select the markdown document you want to insert",INFINITE_LOOP_WARNING:"EXCALIDRAW WARNING\nAborted loading embedded images due to infinite loop in file:\n",SCRIPT_EXECUTION_ERROR:"Script execution error. Please find error message on the developer console.",LOAD_FROM_BACKUP:"Excalidraw file was corrupted. Loading from backup file.",GOTO_FULLSCREEN:"Goto fullscreen mode",EXIT_FULLSCREEN:"Exit fullscreen mode",TOGGLE_FULLSCREEN:"Toggle fullscreen mode"},enGB={},es={},fr={},hi={},id={},it={},ja={},ko={},nl={},no={},pl={},pt={},ptBR={},ro={},ru={},tr={},zhCN={INSTALL_SCRIPT:"安装此脚本",UPDATE_SCRIPT:"发现可用更新 - 点击安装",CHECKING_SCRIPT:"检查脚本更新 - 点击重新安装",UNABLETOCHECK_SCRIPT:"检查更新失败 - 点击重新安装",UPTODATE_SCRIPT:"已安装最新脚本 - 点击重新安装",OPEN_AS_EXCALIDRAW:"打开为 Excalidraw 绘图(Excalidraw 模式)",TOGGLE_MODE:"在 Excalidraw 和 Markdown 模式之间切换",CONVERT_NOTE_TO_EXCALIDRAW:"转换空白笔记为 Excalidraw 绘图",CONVERT_EXCALIDRAW:"转换 *.excalidraw 为 *.md 文件",CREATE_NEW:"新建 Excalidraw 绘图",CONVERT_FILE_KEEP_EXT:"*.excalidraw => *.excalidraw.md",CONVERT_FILE_REPLACE_EXT:"*.excalidraw => *.md (兼容 Logseq)",DOWNLOAD_LIBRARY:"导出 stencil 库为 *.excalidrawlib 文件",OPEN_EXISTING_NEW_PANE:"打开已有的绘图(在新面板)",OPEN_EXISTING_ACTIVE_PANE:"打开已有的绘图(在当前面板)",TRANSCLUDE:"插入(嵌入)绘图到当前文档",TRANSCLUDE_MOST_RECENT:"插入(嵌入)最近编辑的绘图到当前文档",NEW_IN_NEW_PANE:"新建绘图(在新面板)",NEW_IN_ACTIVE_PANE:"新建绘图(在当前面板)",NEW_IN_NEW_PANE_EMBED:"新建绘图(在新面板),并插入(嵌入)到当前文档",NEW_IN_ACTIVE_PANE_EMBED:"新建绘图(在当前面板),并插入(嵌入)到当前文档",EXPORT_SVG:"导出 SVG 文件到当前目录",EXPORT_PNG:"导出 PNG 文件到当前目录",TOGGLE_LOCK:"切换文本元素的原文/预览模式",DELETE_FILE:"删除所选的图像或以图像形式嵌入的 Markdown 文档(包括其源文件)",INSERT_LINK_TO_ELEMENT:"复制所选元素(以链接形式)",INSERT_LINK_TO_ELEMENT_ERROR:"未选择画布里的单个元素",INSERT_LINK_TO_ELEMENT_READY:"链接已生成并复制到剪贴板",INSERT_LINK:"插入(链接)文件到当前绘图",INSERT_IMAGE:"插入(以图像形式嵌入)图像到当前绘图",INSERT_MD:"插入(以图像形式嵌入) Markdown 文档到当前绘图",INSERT_LATEX:"插入 LaTeX 公式",ENTER_LATEX:"输入 LaTeX 表达式",READ_RELEASE_NOTES:"阅读本插件的最新发行版本说明",TRAY_MODE:"切换绘图工具属性页的面板(Panel)/托盘(Tray)模式",SEARCH:"搜索文本",INSTALL_SCRIPT_BUTTON:"安装或更新 Excalidraw 自动化脚本",OPEN_AS_MD:"打开为 Markdown 文件(Markdown 模式)",SAVE_AS_PNG:"导出 PNG 到当前目录(按住 CTRL/CMD 设定导出路径)",SAVE_AS_SVG:"导出 SVG 到当前目录(按住 CTRL/CMD 设定导出路径)",OPEN_LINK:"打开所选元素里的链接 \n(按住 SHIFT 在新面板打开)",EXPORT_EXCALIDRAW:"导出为 .Excalidraw 文件",LINK_BUTTON_CLICK_NO_TEXT:"请选择一个含有链接的图形或文本元素。\n按住 SHIFT 并点击此按钮可在新面板中打开链接。\n您也可以直接在画布中按住 CTRL/CMD 并点击图形或文本元素来打开链接。",TEXT_ELEMENT_EMPTY:"未选中图形或文本元素,或者元素不包含有效的链接([[链接|别名]] 或 [别名](链接))",FILENAME_INVALID_CHARS:'文件名不能含有以下符号: * " \\ < > : | ? #',FILE_DOES_NOT_EXIST:"文件不存在。按住 ALT(或 ALT + SHIFT)并点击链接来创建新文件。",FORCE_SAVE:"立刻保存该绘图,并更新其他嵌入了该绘图的面板。\n(详见插件设置中的定期保存选项)",RAW:"文本元素正以原文(RAW)模式显示链接。\n点击切换到预览(PREVIEW)模式",PARSED:"文本元素正以预览(PREVIEW)模式显示链接。\n点击切换到原文(RAW)模式",NOFILE:"Excalidraw(没有文件)",COMPATIBILITY_MODE:"*.excalidraw 文件以兼容模式打开。转换为新格式以获得完整的插件功能。",CONVERT_FILE:"转换为新格式",RELEASE_NOTES_NAME:"显示更新说明",RELEASE_NOTES_DESC:"开启:每次更新本插件后,显示最新发行版本的说明。
关闭:您仍可以在 GitHub 上阅读更新说明。",FOLDER_NAME:"Excalidraw 文件夹",FOLDER_DESC:"新绘图的默认存储路径。若为空,将在库的根目录中创建新绘图。",FOLDER_EMBED_NAME:"将 Excalidraw 文件夹用于“新建绘图”命令创建的绘图",FOLDER_EMBED_DESC:"在命令面板中执行“新建绘图,并插入(嵌入)到当前文档”之类命令时,新绘图的存储路径。
开启:使用 Excalidraw 文件夹。 关闭:使用 Obsidian 设置的新附件默认位置。",TEMPLATE_NAME:"Excalidraw 模板文件",TEMPLATE_DESC:"Excalidraw 模板文件的完整路径。
如果您的模板在默认的 Excalidraw 文件夹中且文件名是 Template.md,则此项应设为 Excalidraw/Template.md(也可省略 .md 扩展名,即 Excalidraw/Template)。
如果您在兼容模式下使用 Excalidraw,那么您的模板文件也必须是旧的 *.excalidraw 格式,例如 Excalidraw/Template.excalidraw。",SCRIPT_FOLDER_NAME:"Excalidraw 自动化脚本的文件夹",SCRIPT_FOLDER_DESC:"此文件夹用于存放 Excalidraw 自动化脚本。您可以在 Obsidian 命令面板中执行这些脚本,还可以为喜欢的脚本分配快捷键,就像为其他 Obsidian 命令分配快捷键一样。
该项不能设为库的根目录。",COMPRESS_NAME:"压缩 Excalidraw JSON",COMPRESS_DESC:"Excalidraw 绘图文件默认将元素记录为 JSON 格式。开启此项,可将元素的 JSON 数据以 BASE64 编码(使用 LZ-String 算法)。这样做的好处是:一方面可以避免原来的明文 JSON 数据干扰 Obsidian 的文本搜索结果,另一方面减小了绘图文件的体积。
当您通过功能区按钮或命令将绘图切换成 Markdown 模式时,数据将被解码回 JSON 格式以便阅读和编辑;而当您切换回 Excalidraw 模式时,数据就会被再次编码。
开启此项后,对于之前已存在的未压缩的绘图文件,需要重新打开并保存它们才能生效。",AUTOSAVE_NAME:"定期保存",AUTOSAVE_DESC:"定期保存当前绘图。此功能专为移动设备设计 —— 在桌面端,当您关闭 Excalidraw 或 Obsidian,或者移动焦点到其他面板的时候,软件是会自动保存的;但是在手机或平板上通过滑动手势退出 Obsidian 时,可能无法顺利触发自动保存。因此我添加了定期保存功能作为弥补。",AUTOSAVE_INTERVAL_NAME:"定期保存的时间间隔",AUTOSAVE_INTERVAL_DESC:"每隔多长时间执行一次保存。如果当前绘图没有发生改变,将不会进行定期保存。",FILENAME_HEAD:"文件名",FILENAME_DESC:"

点击阅读日期和时间格式参考

",FILENAME_SAMPLE:"当前设置下,新绘图的文件名形如:",FILENAME_EMBED_SAMPLE:"“新建绘图”命令创建的绘图的文件名形如:",FILENAME_PREFIX_NAME:"文件名前缀",FILENAME_PREFIX_DESC:"文件名的第一部分",FILENAME_PREFIX_EMBED_NAME:"“新建绘图”命令创建的绘图的文件名前缀",FILENAME_PREFIX_EMBED_DESC:"若开启此项,则在命令面板中执行“新建绘图,并插入(嵌入)到当前文档”之类命令时,创建的绘图文件名将以当前文档名作为开头。",FILENAME_POSTFIX_NAME:"“新建绘图”命令创建的绘图的文件名后缀",FILENAME_POSTFIX_DESC:"介于文件名前缀和文件名日期之间的文本。仅对“新建绘图”命令创建的绘图生效。",FILENAME_DATE_NAME:"文件名日期",FILENAME_DATE_DESC:"文件名的最后一部分",FILENAME_EXCALIDRAW_EXTENSION_NAME:"文件扩展名(.excalidraw.md 或 .md)",FILENAME_EXCALIDRAW_EXTENSION_DESC:"该选项在兼容模式(即非 Excalidraw 专用 Markdown 文件)下不会生效。
开启:使用 .excalidraw.md 作为扩展名;关闭:使用 .md 作为扩展名。",DISPLAY_HEAD:"显示",LEFTHANDED_MODE_NAME:"左手模式",LEFTHANDED_MODE_DESC:"目前只影响托盘模式下,绘图工具属性页的位置。若开启此项,则托盘处于右侧。",MATCH_THEME_NAME:"使新建的绘图匹配 Obsidian 主题",MATCH_THEME_DESC:"如果 Obsidian 使用黑暗主题,新建的绘图文件也将使用黑暗主题。
但是若设置了模板,新建的绘图文件将跟随模板主题;另外,此功能不会作用于已有的绘图。",MATCH_THEME_ALWAYS_NAME:"使已有的绘图匹配 Obsidian 主题",MATCH_THEME_ALWAYS_DESC:"如果 Obsidian 使用黑暗主题,则绘图文件也将以黑暗主题打开;反之亦然。",MATCH_THEME_TRIGGER_NAME:"Excalidraw 主题跟随 Obsidian 主题变化",MATCH_THEME_TRIGGER_DESC:"开启此项,则切换 Obsidian 的黑暗/明亮主题时,当前活动的 Excalidraw 面板的主题会随之改变。",DEFAULT_OPEN_MODE_NAME:"Excalidraw 的默认运行模式",DEFAULT_OPEN_MODE_DESC:"设置 Excalidraw 的运行模式:普通模式,禅模式,或者阅读模式。
您可为某个绘图单独设置此项,方法是在其 Frontmatter 中添加形如 excalidraw-default-mode: normal/zen/view 的键值对。",ZOOM_TO_FIT_NAME:"自动缩放以适应面板调整",ZOOM_TO_FIT_DESC:"调整面板大小时,自适应地缩放画布",ZOOM_TO_FIT_MAX_LEVEL_NAME:"自动缩放的最高级别",ZOOM_TO_FIT_MAX_LEVEL_DESC:"自动缩放画布时,允许放大的最高级别。该值不能低于 0.5(50%)且不能超过 10(1000%)。",LINKS_HEAD:"链接(Links) & 嵌入到绘图中的文档(Transclusion)",LINKS_DESC:"按住 CTRL/CMD 并点击包含 [[链接]] 的文本元素可以打开其中的链接。如果所选文本元素包含多个 [[有效的 Obsidian 链接]] ,只会打开第一个链接;如果所选文本元素包含有效的 URL 链接 (如 https://http://),插件会在浏览器中打开 URL 链接。
链接的源文件被重命名时,绘图中相应的 [[链接]] 也会同步更新。若您不愿绘图中的链接文本因此而变化,可用 [[链接|别名]] 来使用别名。",ADJACENT_PANE_NAME:"在相邻面板中打开",ADJACENT_PANE_DESC:"按住 CTRL/CMD + SHIFT 并点击链接时,插件默认会在新面板中打开该链接。
若开启此项,Excalidraw 会先尝试寻找已有的相邻面板(按照右侧、左侧、上方、下方的顺序),并在其中打开链接。如果找不到,再在新面板中打开链接。",LINK_BRACKETS_NAME:"在链接的两侧显示 [[中括号]]",LINK_BRACKETS_DESC:"文本元素处于预览模式时,在链接的两侧显示中括号。
您可为某个绘图单独设置此项,方法是在其 Frontmatter 中添加形如 excalidraw-link-brackets: true/false 的键值对。",LINK_PREFIX_NAME:"链接的前缀",LINK_PREFIX_DESC:'文本元素处于预览模式时,如果其中包含链接,则添加此前缀。
您可为某个绘图单独设置此项,方法是在其 Frontmatter 中添加形如 excalidraw-link-prefix: "📍 " 的键值对。',URL_PREFIX_NAME:"URL 的前缀",URL_PREFIX_DESC:'预览模式下,如果文本元素包含 URL 链接,则添加此前缀。
您可为某个绘图单独设置此项,方法是在其 Frontmatter 中添加形如 excalidraw-url-prefix: "🌐 " 的键值对。',HOVERPREVIEW_NAME:"鼠标悬停预览链接",HOVERPREVIEW_DESC:"开启:鼠标悬停在 [[链接]] 上即可预览。
关闭:鼠标悬停在 [[链接]] 上,并且按住 CTRL/CMD 时进行预览。",LINKOPACITY_NAME:"链接标识的透明度",LINKOPACITY_DESC:"含有链接的元素,其右上角的链接标识的透明度。介于 0(全透明)到 1(不透明)之间。",LINK_CTRL_CLICK_NAME:"按住 CTRL/CMD 并点击含有 [[链接]] 或 [别名](链接) 的文本来打开链接",LINK_CTRL_CLICK_DESC:"如果此功能影响到您使用某些原版 Excalidraw 功能,可将其关闭。关闭后,您只能通过绘图面板标题栏中的链接按钮来打开链接。",TRANSCLUSION_WRAP_NAME:"嵌入文档(Translusion)的折行方式",TRANSCLUSION_WRAP_DESC:"中的 number 表示嵌入的文本溢出时,在第几个字符处进行折行。
此开关控制具体的折行方式。若开启,则严格在 number 处折行,禁止溢出;若关闭,则允许在 number 位置后最近的空格处折行。",TRANSCLUSION_DEFAULT_WRAP_NAME:"嵌入文档(Translusion)的默认折行位置",TRANSCLUSION_DEFAULT_WRAP_DESC:"除了通过 ![[doc#^block]]{number} 中的 number 来控制折行位置,您也可以在此设置 number 的默认值。
一般设为 0 即可,表示不设置固定的默认值,这样当您需要嵌入文档到便签中时,Excalidraw 能更好地帮您自动处理。",PAGE_TRANSCLUSION_CHARCOUNT_NAME:"嵌入文档(Translusion)的最大显示字符数",PAGE_TRANSCLUSION_CHARCOUNT_DESC:"以 ![[Markdown 文档]] 的形式将文档嵌入到绘图中时,该文档在绘图中可显示的最大字符数量。",GET_URL_TITLE_NAME:"使用 iframly 获取页面标题",GET_URL_TITLE_DESC:"拖放链接到 Excalidraw 时,使用 http://iframely.server.crestify.com/iframely?url= 来获取页面的标题。",MD_HEAD:"以图像形式嵌入到绘图中的 Markdown 文档(MD-Embed)",MD_HEAD_DESC:"您可以将 Markdown 文档以图像(而非链接)的形式嵌入到绘图中,方法是按住 CTRL/CMD 并从文件管理器中把文档拖入绘图,或者使用命令面板里的相关命令。",MD_TRANSCLUDE_WIDTH_NAME:"MD-Embed 的默认宽度",MD_TRANSCLUDE_WIDTH_DESC:"MD-Embed 图像的宽度。该选项会影响到折行,以及图像元素的宽度。
您可为绘图中的某个 MD-Embed 单独设置此项,方法是将绘图切换至 Markdown 模式,并修改相应的 [[Embed文件名#标题|宽度x最大高度]]。",MD_TRANSCLUDE_HEIGHT_NAME:"MD-Embed 的默认最大高度",MD_TRANSCLUDE_HEIGHT_DESC:"MD-Embed 图像的高度取决于文档内容的多少,但最大不会超过该值。
您可为绘图中的某个 MD-Embed 单独设置此项,方法是将绘图切换至 Markdown 模式,并修改相应的 [[Embed文件名#^块引ID|宽度x最大高度]]。",MD_DEFAULT_FONT_NAME:"MD-Embed 的默认字体",MD_DEFAULT_FONT_DESC:"可以设为 VirgilCasadia 或其他有效的 .ttf/.woff/.woff2 字体文件(如 我的字体.woff2)。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 Frontmatter 中添加形如 excalidraw-font: 字体名或文件名 的键值对。",MD_DEFAULT_COLOR_NAME:"MD-Embed 的默认文本颜色",MD_DEFAULT_COLOR_DESC:"可以填写 HTML 颜色名,如 steelblue(参考 HTML Color Names),或者有效的 16 进制颜色值,例如 #e67700,或者任何其他有效的 CSS 颜色。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 Frontmatter 中添加形如 excalidraw-font-color: steelblue 的键值对。",MD_DEFAULT_BORDER_COLOR_NAME:"MD-Embed 的默认边框颜色",MD_DEFAULT_BORDER_COLOR_DESC:"可以填写 HTML 颜色名,如 steelblue(参考 HTML Color Names),或者有效的 16 进制颜色值,例如 #e67700,或者任何其他有效的 CSS 颜色。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 Frontmatter 中添加形如 excalidraw-border-color: gray 的键值对。
如果您不想要边框,请留空。",MD_CSS_NAME:"MD-Embed 的默认 CSS 样式表",MD_CSS_DESC:"MD-Embed 图像所采用的 CSS 样式表文件名。需包含扩展名,例如 md-embed.css。允许使用 Markdown 文件(如 md-embed-css.md),但其内容应符合 CSS 语法。
如果您要查询 CSS 所作用的 HTML 节点,请在 Obsidian 开发者控制台(CTRL+SHIFT+i)中键入命令:ExcalidrawAutomate.mostRecentMarkdownSVG —— 这将显示 Excalidraw 最近生成的 SVG。
此外,在 CSS 中不能任意地设置字体,您一般只能使用系统默认的标准字体(详见 README),但可以通过上面的设置来额外添加一个自定义字体。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 Frontmatter 中添加形如 excalidraw-css: 库中的CSS文件或CSS片段 的键值对。",EMBED_HEAD:"嵌入到文档中的绘图(Embed) & 导出",EMBED_PREVIEW_SVG_NAME:"在 Markdown 阅读视图下显示 SVG 格式的预览图",EMBED_PREVIEW_SVG_DESC:"Obsidian 的 Markdown 阅读视图默认会将嵌入的绘图显示为 SVG 格式的预览图。若关闭此项,则显示为 PNG 格式。",PREVIEW_MATCH_OBSIDIAN_NAME:"预览图匹配 Obsidian 主题",PREVIEW_MATCH_OBSIDIAN_DESC:"开启此项,则当 Obsidian 处于黑暗模式时,预览图也会以黑暗模式渲染;当 Obsidian 处于明亮模式时,的预览图也会以明亮模式渲染。
您可能还需要关闭“导出的图像包含背景”开关,来获得与 Obsidian 更加协调的观感。",EMBED_WIDTH_NAME:"预览图的默认宽度",EMBED_WIDTH_DESC:"该选项同时作用于 Obsidian 实时预览模式下的编辑视图和阅读视图,以及鼠标悬停时的预览图。
您可为嵌入到文档中的某个绘图单独设置此项,方法是修改相应的链接格式为形如 ![[drawing.excalidraw|100]][[drawing.excalidraw|100x100]] 的格式。",EMBED_TYPE_NAME:"“嵌入绘图到当前文档”命令的源文件类型",EMBED_TYPE_DESC:"在命令面板中执行“嵌入绘图到当前文档”之类命令时,要嵌入绘图文件,还是嵌入其 PNG 或 SVG 副本。
如果您想在该下拉框中选择 PNG 或 SVG 副本,需要先开启下方的“自动导出 PNG 格式副本”或“自动导出 SVG 格式副本”开关。若您选择了嵌入 PNG 或 SVG 副本,当绘图缺少对应的 PNG 或 SVG 副本时,该命令将会插入一条损坏的链接,您需要打开绘图文件并手动导出副本才能修复 —— 该选项不会帮您自动生成 PNG/SVG 副本,而只会引用已经存在的 PNG/SVG 副本。",EMBED_WIKILINK_NAME:"“嵌入绘图到当前文档”命令产生的链接类型",EMBED_WIKILINK_DESC:"开启:将产生 ![[Wiki 链接]]关闭:将产生 ![](Markdown 链接)。",EXPORT_PNG_SCALE_NAME:"导出 PNG 图像的比例",EXPORT_PNG_SCALE_DESC:"导出的 PNG 图像的大小比例",EXPORT_BACKGROUND_NAME:"导出的图像包含背景",EXPORT_BACKGROUND_DESC:"如果关闭,将导出透明背景的图像。",EXPORT_SVG_PADDING_NAME:"导出 SVG 图像的边距",EXPORT_SVG_PADDING_DESC:"导出的 PNG 图像的空白边距(像素)。增加该值,可以避免在导出 SVG 图像时,过于靠近画布边缘的图形被裁掉。",EXPORT_THEME_NAME:"导出的图像包含主题",EXPORT_THEME_DESC:"导出与绘图的黑暗/明亮主题匹配的图像。如果关闭,在黑暗主题下导出的图像将和明亮主题一样。",EXPORT_HEAD:"导出设置",EXPORT_SYNC_NAME:"保持 .SVG 和 .PNG 文件名与绘图文件同步",EXPORT_SYNC_DESC:"打开后,当绘图文件被重命名时,插件将同步更新同文件夹下的同名 .SVG 和 .PNG 文件。当绘图文件被删除时,插件将自动删除同文件夹下的同名 .SVG 和 .PNG 文件。",EXPORT_SVG_NAME:"自动导出 SVG 格式副本",EXPORT_SVG_DESC:"自动导出和绘图文件同名的 SVG 格式副本。插件会将副本保存到绘图文件所在的文件夹中。在文档中嵌入这个 SVG 文件,相比直接嵌入绘图文件,具有更强的跨平台能力。
此开关开启时,每次您编辑 Excalidraw 绘图,其 SVG 文件副本都会同步更新。",EXPORT_PNG_NAME:"自动导出 PNG 格式副本",EXPORT_PNG_DESC:"和“自动导出 SVG 格式副本”类似,但是导出格式为 *.PNG。",COMPATIBILITY_HEAD:"兼容性设置",EXPORT_EXCALIDRAW_NAME:"自动导出 Excalidraw 格式副本",EXPORT_EXCALIDRAW_DESC:"和“自动导出 SVG 格式副本”类似,但是导出格式为 *.excalidraw。",SYNC_EXCALIDRAW_NAME:"保持同一绘图的新旧格式文件内容一致",SYNC_EXCALIDRAW_DESC:"如果旧格式(*.excalidraw)绘图文件的修改日期比新格式(*.md)更新,则根据旧格式文件的内容来更新新格式文件。",COMPATIBILITY_MODE_NAME:"以旧格式创建新绘图",COMPATIBILITY_MODE_DESC:"开启此功能后,您通过功能区按钮、命令面板、文件浏览器等创建的绘图都将是旧格式(*.excalidraw)。此外,您打开旧格式绘图文件时将不再收到提醒消息。",EXPERIMENTAL_HEAD:"实验性功能",EXPERIMENTAL_DESC:"以下部分设置不会立即生效,需要刷新文件资源管理器或者重启 Obsidian 才会生效。",FIELD_SUGGESTER_NAME:"开启 Field Suggester",FIELD_SUGGESTER_DESC:"开启后,当您在编辑器中输入 excalidraw- 或者 ea. 时,会弹出一个带有函数说明的自动补全提示菜单。
该功能借鉴了 Breadcrumbs 和 Templater 插件。",FILETYPE_NAME:"在文件浏览器中为 excalidraw.md 文件添加类型标识符(如 ✏️)",FILETYPE_DESC:"可通过下一项设置来自定义类型标识符。",FILETAG_NAME:"excalidraw.md 文件的类型标识符",FILETAG_DESC:"要显示为类型标识符的 emoji 或文本。",INSERT_EMOJI:"插入 emoji",LIVEPREVIEW_NAME:"嵌入绘图到文档时,模拟嵌入图像的语法",LIVEPREVIEW_DESC:"开启此项,则可在 Obsidian 实时预览模式的编辑视图下,用形如 ![[绘图|宽度|样式]] 的语法来嵌入绘图。
该选项不会在已打开的文档中立刻生效 —— 你需要重新打开此文档来使其生效。",ENABLE_FOURTH_FONT_NAME:"为文本元素启用本地字体",ENABLE_FOURTH_FONT_DESC:"开启此项后,文本元素的属性面板里会多出一个本地字体按钮。
使用了本地字体的绘图文件,将会失去一部分跨平台能力 —— 若将绘图文件移动到其他库中打开,显示效果可能会截然不同;若在 excalidraw.com 或者其他版本的 Excalidraw 中打开,使用本地字体的文本会变回系统默认字体。",FOURTH_FONT_NAME:"本地字体文件",FOURTH_FONT_DESC:"选择库文件夹中的一个 .ttf, .woff 或 .woff2 字体文件作为本地字体文件。若未选择文件,则使用默认的 Virgil 字体。",SCRIPT_SETTINGS_HEAD:"已安装脚本的设置",SELECT_FILE:"选择一个文件后按回车。",NO_MATCH:"查询不到匹配的文件。",SELECT_FILE_TO_LINK:"选择要插入(链接)到当前绘图中的文件。",SELECT_DRAWING:"选择要插入(以图像形式嵌入)到当前绘图中的图像。",TYPE_FILENAME:"键入要选择的绘图名称。",SELECT_FILE_OR_TYPE_NEW:"选择已有绘图,或者新绘图的类型,然后按回车。",SELECT_TO_EMBED:"选择要插入(嵌入)到当前文档中的绘图。",SELECT_MD:"选择要插入(以图像形式嵌入)到当前绘图中的 Markdown 文档。",INFINITE_LOOP_WARNING:"EXCALIDRAW 警告\n停止加载嵌入的图像,因为此文件中存在死循环:\n",SCRIPT_EXECUTION_ERROR:"脚本运行错误。请在开发者控制台中查看错误信息。",LOAD_FROM_BACKUP:"Excalidraw 文件已损坏。尝试从备份文件中加载。",GOTO_FULLSCREEN:"进入全屏模式",EXIT_FULLSCREEN:"退出全屏模式",TOGGLE_FULLSCREEN:"切换全屏模式"},zhTW={};const localeMap={ar:ar,cs:cz,da:da,de:de,en:en,"en-gb":enGB,es:es,fr:fr,hi:hi,id:id,it:it,ja:ja,ko:ko,nl:nl,nn:no,pl:pl,pt:pt,"pt-br":ptBR,ro:ro,ru:ru,tr:tr,"zh-cn":zhCN,"zh-tw":zhTW},locale=localeMap[obsidian.moment.locale()];function t$d(A){return locale||errorlog({where:"helpers.t",message:"Error: Excalidraw locale not found",locale:obsidian.moment.locale()}),locale&&locale[A]||en[A]}var html2canvas$1={exports:{}}; +const EXCALIDRAW_PACKAGES = "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fWoDjY6zKL6089aGypPJUsvrQA2vDFUkDg1IAOfWlDrLX1tovV8bKG+tCIktPrbSQuaIn8yNpqFMNW5lrS2HMzFWYNrvbp/rW78QNAABZa2dhSijVqnC5gALt1tKAAstbGFAi8iz7SX+1t9IW2by8wlgvW4XrUXYC3a3ozzp+thJXHjrVTAEO63I9bq2Z2LYtfrab1tOcCNuTt+ttcs9nra+1oP60ScaR+t/cgcfrWcZO361USS5+tOpchirXNgs4oR/tbLWtevW8guWkUpszky9byC51Dm2sqbLZPD60SthNyJ/8mRzrfLpIs40L5yMutzvWzVsN76rAG0YOSBHN1cKwpQMX1qGFUGBT5dJI5U6NBcHXNPa2oDay+cowAOurW7JGEq0oWS5gAIvWo1rQwuFVLmctj4etX9gRHrcHXLAEW8kTx65anQGxzdlsqIG2wAASBtP60e9rQf1vSbUUC8zWt354EDrZe1rM6G0JATmBUhkmrZealtAlX7BjAteBbW7sYHGZMKUANIBGWtTmi/beeINtT60Q1cEnN0g25gALINvQkiXLJhuNT/K00iWy1sMwkgWzUkIyQAenrSxrUc604BzUAAYbWvsOeqesxw1boLNWxZj03xlRKdFNYUoABfutTskllresJOKilIZSpet1vcm5zaypP262lhT97UXVU0oAE91rH61adaIzYmNW2qOPRXzc60zdy14AXlCtKxAZABCnBSULzYkcX6r/rWeNLmIBRtbYeN8kqkgid4NqtIBtIA/BtF3WlJAJp1q4NXBDag0Vbg28IbccJMx9X81a6cJT6aeTAKb1pyG20kLzJV0VWnlrU61qI1HqnrEXNwRC8nFRYADj60NDbQzYzg2k69U5KrclX10B9WtjLa7yVb0XPqG2qdaeIlLPqwYbX0NrOMnOtbf91mgmw1re61tOBietattYvvWwVtZJEtmG04ujjWtCw2s1rQHsoqACOdacgecVsyRMK0Nrj60Ddau+OBeAQtrdOEvKVTPFy8Xp+w2pTrZMNuyimLiMdetuUqql6bXeoZa3mdbwNpS/WiDreMHLIG2m8b36J7TNYwbba5p+9g/DaqlwT6aB1iFSADt42etqtmZOJQB1sLIXORwn7lSU1VIJcglRWinN2Y4u9bg+NKxo6IAHn1o960RubClAXnC0IAFUNq21jO9aF2t8ukh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Gp3JU7H2dDVOs2nfVTvip2RM7Wqd3LOwrnb+zs2p2i067qdWVO0+nd5zqa7WsTbAQAiDOuOnblTuKp1uM7mqdVVO6qndHTtS53bs7sqdrVOxZnZvTrzZ2j07kad/XOxqnY/Tv+p3PU736duHO8AAINzovp1fU6zOd6tOoDncSzuI53VU786dCVO5jndMfMTw1RBqvrJhtWroNWIOPTw21PrM8NFtWwO0Z9UqQ50Xc7Oqd1VOwAAPAIgAATgRAAAMAh9c6NOdk3OrZnSczuJp2XM616dD3O5KnQRzuO531c7vOdOeG62rZSDttq0u+bBMVNvajkAIAABIEZGnfxzo450TM7D2dF9O+qnRJzoWp0Wc79qdRPOnUHeBcpLw1q5bUwdecUt2rUkqprw3r46NX1XWKmpVSTZMfw3spTf/NLdk+8TUrNpMHGmzbQJN1s2it1UhDvninogy0cVV8U1iHfoFsptGN06RqdYjOooMYuGpRp3C070qdgAAIAQOade76ohACjTohZ3+s7WgxyVOr2nepzpTp1LTSk6d8TO0YWYLToUh3t1azed+tOx3nYHaOOZ3LM6s2dtD0rXncNTrLp17c7W6dj1O3KnY9TpLp2fU7nqdBtOp7nSoztBp1pBbQvJX1ktD9es6MfrlpQ774pDnO0znWEzt6Z1V1bhmdsPOxHnSjzv3p1NM6fqd6fOrOndW7ORp3w87kedqPO2ZncVDqbq091bjfMmTO45nZEzpGp3HM6tud8VOnbncJztSp350772d6XO+FncdzuDp2AAApBEE52E06sed97O5+nemzvx50M079GdX1Oi5nQVTtFp07c7vOdW+KjkAG3zo753G06xqdWnOyfnflTun53uM616dffO9dnTSztm50X07JqdotO7znfUOOOZ3hM68OdX9O7JneAzoap2pU7g+dofO2KnY3Tr2531U6dqd97OlGnYVTvAAAL87gWdGXO8mnb0zs753L87oGdCVO7qnY1TrZ51n06B2d+8St+Jd3VrQSmIULoWlZNOkGnQzTuOZ1jM7g6drzOqene3zvf51d866udPtOvvnZaLL0ADVU7nqdDVO4wAN8eG/53k06LqdqzO7AXfxzuSp3QC7qqdotOwAXf3VoDC2AgAgudd3Om7nalTpyp0NU7yBdeVOstnYnViu50Cc6FGdgAAfARnqdStO8FnZ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=";const {react, reactDOM, excalidrawLib} = window.eval.call(window, `(function() {${LZString.decompressFromBase64(EXCALIDRAW_PACKAGES)};return {react:React, reactDOM:ReactDOM, excalidrawLib: ExcalidrawLib};})();`);const PLUGIN_VERSION="1.7.26";function _interopNamespace(A){if(A&&A.__esModule)return A;var e=Object.create(null);return A&&Object.keys(A).forEach((function(t){if("default"!==t){var i=Object.getOwnPropertyDescriptor(A,t);Object.defineProperty(e,t,i.get?i:{enumerable:!0,get:function(){return A[t]}})}})),e.default=A,Object.freeze(e)}var React__namespace=_interopNamespace(React);let random=A=>crypto.getRandomValues(new Uint8Array(A)),customRandom=(A,e,t)=>{let i=(2<{let r="";for(;;){let e=t(n),s=n;for(;s--;)if(r+=A[e[s]&i]||"",r.length===a)return r}}},customAlphabet=(A,e=21)=>customRandom(A,e,random);function JSON_parse(A){return JSON.parse(A.replaceAll("[","["))}const isDarwin=/Mac|iPod|iPhone|iPad/.test(window.navigator.platform),CTRL_OR_CMD=isDarwin?"metaKey":"ctrlKey",nanoid=customAlphabet("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",8),KEYCODE={ESC:27},PLUGIN_ID="obsidian-excalidraw-plugin",SCRIPT_INSTALL_CODEBLOCK="excalidraw-script-install",SCRIPT_INSTALL_FOLDER="Downloaded",fileid=customAlphabet("1234567890abcdef",40),REG_LINKINDEX_INVALIDCHARS=/[<>:"\\|?*#]/g,REG_BLOCK_REF_CLEAN=/[!"#$%&()*+,.:;<=>?@^`{|}~\/\[\]\\]/g,IMAGE_TYPES=["jpeg","jpg","png","gif","svg","webp","bmp","ico"],EXPORT_TYPES=["svg","dark.svg","light.svg","png","dark.png","light.png"],MAX_IMAGE_SIZE=500,FRONTMATTER_KEY="excalidraw-plugin",FRONTMATTER_KEY_EXPORT_TRANSPARENT="excalidraw-export-transparent",FRONTMATTER_KEY_EXPORT_DARK="excalidraw-export-dark",FRONTMATTER_KEY_EXPORT_SVGPADDING="excalidraw-export-svgpadding",FRONTMATTER_KEY_EXPORT_PADDING="excalidraw-export-padding",FRONTMATTER_KEY_EXPORT_PNGSCALE="excalidraw-export-pngscale",FRONTMATTER_KEY_CUSTOM_PREFIX="excalidraw-link-prefix",FRONTMATTER_KEY_CUSTOM_URL_PREFIX="excalidraw-url-prefix",FRONTMATTER_KEY_CUSTOM_LINK_BRACKETS="excalidraw-link-brackets",FRONTMATTER_KEY_ONLOAD_SCRIPT="excalidraw-onload-script",FRONTMATTER_KEY_LINKBUTTON_OPACITY="excalidraw-linkbutton-opacity",FRONTMATTER_KEY_DEFAULT_MODE="excalidraw-default-mode",FRONTMATTER_KEY_FONT="excalidraw-font",FRONTMATTER_KEY_FONTCOLOR="excalidraw-font-color",FRONTMATTER_KEY_BORDERCOLOR="excalidraw-border-color",FRONTMATTER_KEY_MD_STYLE="excalidraw-css",FRONTMATTER_KEY_AUTOEXPORT="excalidraw-autoexport",LOCAL_PROTOCOL="md://",VIEW_TYPE_EXCALIDRAW="excalidraw",ICON_NAME="excalidraw-icon",RERENDER_EVENT="excalidraw-embed-rerender",BLANK_DRAWING='{"type":"excalidraw","version":2,"source":"https://excalidraw.com","elements":[],"appState":{"gridSize":null,"viewBackgroundColor":"#ffffff"}}',DARK_BLANK_DRAWING='{"type":"excalidraw","version":2,"source":"https://excalidraw.com","elements":[],"appState":{"theme":"dark","gridSize":null,"viewBackgroundColor":"#ffffff"}}',FRONTMATTER=["---","","excalidraw-plugin: parsed","tags: [excalidraw]","","---","==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠==","",""].join("\n"),EMPTY_MESSAGE="Hit enter to create a new drawing",TEXT_DISPLAY_PARSED_ICON_NAME="quote-glyph",TEXT_DISPLAY_RAW_ICON_NAME="presentation",FULLSCREEN_ICON_NAME="fullscreen",SCRIPTENGINE_ICON_NAME="ScriptEngine",COLOR_NAMES=new Map;COLOR_NAMES.set("aliceblue","#f0f8ff"),COLOR_NAMES.set("antiquewhite","#faebd7"),COLOR_NAMES.set("aqua","#00ffff"),COLOR_NAMES.set("aquamarine","#7fffd4"),COLOR_NAMES.set("azure","#f0ffff"),COLOR_NAMES.set("beige","#f5f5dc"),COLOR_NAMES.set("bisque","#ffe4c4"),COLOR_NAMES.set("black","#000000"),COLOR_NAMES.set("blanchedalmond","#ffebcd"),COLOR_NAMES.set("blue","#0000ff"),COLOR_NAMES.set("blueviolet","#8a2be2"),COLOR_NAMES.set("brown","#a52a2a"),COLOR_NAMES.set("burlywood","#deb887"),COLOR_NAMES.set("cadetblue","#5f9ea0"),COLOR_NAMES.set("chartreuse","#7fff00"),COLOR_NAMES.set("chocolate","#d2691e"),COLOR_NAMES.set("coral","#ff7f50"),COLOR_NAMES.set("cornflowerblue","#6495ed"),COLOR_NAMES.set("cornsilk","#fff8dc"),COLOR_NAMES.set("crimson","#dc143c"),COLOR_NAMES.set("cyan","#00ffff"),COLOR_NAMES.set("darkblue","#00008b"),COLOR_NAMES.set("darkcyan","#008b8b"),COLOR_NAMES.set("darkgoldenrod","#b8860b"),COLOR_NAMES.set("darkgray","#a9a9a9"),COLOR_NAMES.set("darkgreen","#006400"),COLOR_NAMES.set("darkkhaki","#bdb76b"),COLOR_NAMES.set("darkmagenta","#8b008b"),COLOR_NAMES.set("darkolivegreen","#556b2f"),COLOR_NAMES.set("darkorange","#ff8c00"),COLOR_NAMES.set("darkorchid","#9932cc"),COLOR_NAMES.set("darkred","#8b0000"),COLOR_NAMES.set("darksalmon","#e9967a"),COLOR_NAMES.set("darkseagreen","#8fbc8f"),COLOR_NAMES.set("darkslateblue","#483d8b"),COLOR_NAMES.set("darkslategray","#2f4f4f"),COLOR_NAMES.set("darkturquoise","#00ced1"),COLOR_NAMES.set("darkviolet","#9400d3"),COLOR_NAMES.set("deeppink","#ff1493"),COLOR_NAMES.set("deepskyblue","#00bfff"),COLOR_NAMES.set("dimgray","#696969"),COLOR_NAMES.set("dodgerblue","#1e90ff"),COLOR_NAMES.set("firebrick","#b22222"),COLOR_NAMES.set("floralwhite","#fffaf0"),COLOR_NAMES.set("forestgreen","#228b22"),COLOR_NAMES.set("fuchsia","#ff00ff"),COLOR_NAMES.set("gainsboro","#dcdcdc"),COLOR_NAMES.set("ghostwhite","#f8f8ff"),COLOR_NAMES.set("gold","#ffd700"),COLOR_NAMES.set("goldenrod","#daa520"),COLOR_NAMES.set("gray","#808080"),COLOR_NAMES.set("green","#008000"),COLOR_NAMES.set("greenyellow","#adff2f"),COLOR_NAMES.set("honeydew","#f0fff0"),COLOR_NAMES.set("hotpink","#ff69b4"),COLOR_NAMES.set("indianred","#cd5c5c"),COLOR_NAMES.set("indigo","#4b0082"),COLOR_NAMES.set("ivory","#fffff0"),COLOR_NAMES.set("khaki","#f0e68c"),COLOR_NAMES.set("lavender","#e6e6fa"),COLOR_NAMES.set("lavenderblush","#fff0f5"),COLOR_NAMES.set("lawngreen","#7cfc00"),COLOR_NAMES.set("lemonchiffon","#fffacd"),COLOR_NAMES.set("lightblue","#add8e6"),COLOR_NAMES.set("lightcoral","#f08080"),COLOR_NAMES.set("lightcyan","#e0ffff"),COLOR_NAMES.set("lightgoldenrodyellow","#fafad2"),COLOR_NAMES.set("lightgrey","#d3d3d3"),COLOR_NAMES.set("lightgreen","#90ee90"),COLOR_NAMES.set("lightpink","#ffb6c1"),COLOR_NAMES.set("lightsalmon","#ffa07a"),COLOR_NAMES.set("lightseagreen","#20b2aa"),COLOR_NAMES.set("lightskyblue","#87cefa"),COLOR_NAMES.set("lightslategray","#778899"),COLOR_NAMES.set("lightsteelblue","#b0c4de"),COLOR_NAMES.set("lightyellow","#ffffe0"),COLOR_NAMES.set("lime","#00ff00"),COLOR_NAMES.set("limegreen","#32cd32"),COLOR_NAMES.set("linen","#faf0e6"),COLOR_NAMES.set("magenta","#ff00ff"),COLOR_NAMES.set("maroon","#800000"),COLOR_NAMES.set("mediumaquamarine","#66cdaa"),COLOR_NAMES.set("mediumblue","#0000cd"),COLOR_NAMES.set("mediumorchid","#ba55d3"),COLOR_NAMES.set("mediumpurple","#9370d8"),COLOR_NAMES.set("mediumseagreen","#3cb371"),COLOR_NAMES.set("mediumslateblue","#7b68ee"),COLOR_NAMES.set("mediumspringgreen","#00fa9a"),COLOR_NAMES.set("mediumturquoise","#48d1cc"),COLOR_NAMES.set("mediumvioletred","#c71585"),COLOR_NAMES.set("midnightblue","#191970"),COLOR_NAMES.set("mintcream","#f5fffa"),COLOR_NAMES.set("mistyrose","#ffe4e1"),COLOR_NAMES.set("moccasin","#ffe4b5"),COLOR_NAMES.set("navajowhite","#ffdead"),COLOR_NAMES.set("navy","#000080"),COLOR_NAMES.set("oldlace","#fdf5e6"),COLOR_NAMES.set("olive","#808000"),COLOR_NAMES.set("olivedrab","#6b8e23"),COLOR_NAMES.set("orange","#ffa500"),COLOR_NAMES.set("orangered","#ff4500"),COLOR_NAMES.set("orchid","#da70d6"),COLOR_NAMES.set("palegoldenrod","#eee8aa"),COLOR_NAMES.set("palegreen","#98fb98"),COLOR_NAMES.set("paleturquoise","#afeeee"),COLOR_NAMES.set("palevioletred","#d87093"),COLOR_NAMES.set("papayawhip","#ffefd5"),COLOR_NAMES.set("peachpuff","#ffdab9"),COLOR_NAMES.set("peru","#cd853f"),COLOR_NAMES.set("pink","#ffc0cb"),COLOR_NAMES.set("plum","#dda0dd"),COLOR_NAMES.set("powderblue","#b0e0e6"),COLOR_NAMES.set("purple","#800080"),COLOR_NAMES.set("rebeccapurple","#663399"),COLOR_NAMES.set("red","#ff0000"),COLOR_NAMES.set("rosybrown","#bc8f8f"),COLOR_NAMES.set("royalblue","#4169e1"),COLOR_NAMES.set("saddlebrown","#8b4513"),COLOR_NAMES.set("salmon","#fa8072"),COLOR_NAMES.set("sandybrown","#f4a460"),COLOR_NAMES.set("seagreen","#2e8b57"),COLOR_NAMES.set("seashell","#fff5ee"),COLOR_NAMES.set("sienna","#a0522d"),COLOR_NAMES.set("silver","#c0c0c0"),COLOR_NAMES.set("skyblue","#87ceeb"),COLOR_NAMES.set("slateblue","#6a5acd"),COLOR_NAMES.set("slategray","#708090"),COLOR_NAMES.set("snow","#fffafa"),COLOR_NAMES.set("springgreen","#00ff7f"),COLOR_NAMES.set("steelblue","#4682b4"),COLOR_NAMES.set("tan","#d2b48c"),COLOR_NAMES.set("teal","#008080"),COLOR_NAMES.set("thistle","#d8bfd8"),COLOR_NAMES.set("tomato","#ff6347"),COLOR_NAMES.set("turquoise","#40e0d0"),COLOR_NAMES.set("violet","#ee82ee"),COLOR_NAMES.set("wheat","#f5deb3"),COLOR_NAMES.set("white","#ffffff"),COLOR_NAMES.set("whitesmoke","#f5f5f5"),COLOR_NAMES.set("yellow","#ffff00"),COLOR_NAMES.set("yellowgreen","#9acd32");const DEFAULT_MD_EMBED_CSS='.excalidraw-md-host{padding:0px 10px}.excalidraw-md-footer{height:5px}foreignObject{background-color:transparent}p{display:block;margin-block-start:1em;margin-block-end:1em;margin-inline-start:0px;margin-inline-end:0px;color:inherit}table,tr,th,td{color:inherit;border:1px solid;border-collapse:collapse;padding:3px}th{font-weight:bold;border-bottom:double;background-color:silver}.copy-code-button{display:none}code[class*=language-],pre[class*=language-]{color:#393a34;font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;font-size:.9em;line-height:1.2em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre>code[class*=language-]{font-size:1em}pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection{background:#C1DEF1}pre[class*=language-]::selection,pre[class*=language-] ::selection,code[class*=language-]::selection,code[class*=language-] ::selection{background:#C1DEF1}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;background-color:#0000001a}:not(pre)>code[class*=language-]{padding:.2em;padding-top:1px;padding-bottom:1px;background:#f8f8f8;border:1px solid #dddddd}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:green;font-style:italic}.token.namespace{opacity:.7}.token.string{color:#a31515}.token.punctuation,.token.operator{color:#393a34}.token.url,.token.symbol,.token.number,.token.boolean,.token.variable,.token.constant,.token.inserted{color:#36acaa}.token.atrule,.token.keyword,.token.attr-value,.language-autohotkey .token.selector,.language-json .token.boolean,.language-json .token.number,code[class*=language-css]{color:#00f}.token.function{color:#393a34}.token.deleted,.language-autohotkey .token.tag{color:#9a050f}.token.selector,.language-autohotkey .token.keyword{color:#00009f}.token.important{color:#e90}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.class-name,.language-json .token.property{color:#2b91af}.token.tag,.token.selector{color:maroon}.token.attr-name,.token.property,.token.regex,.token.entity{color:red}.token.directive.tag .tag{background:#ffff00;color:#393a34}.line-numbers.line-numbers .line-numbers-rows{border-right-color:#a5a5a5}.line-numbers .line-numbers-rows>span:before{color:#2b91af}.line-highlight.line-highlight{background:rgba(193,222,241,.2);background:-webkit-linear-gradient(left,rgba(193,222,241,.2) 70%,rgba(221,222,241,0));background:linear-gradient(to right,rgba(193,222,241,.2) 70%,rgba(221,222,241,0))}blockquote{ font-style:italic;background-color:rgb(46,43,42,0.1);margin:0;margin-left:1em;border-radius:0 4px 4px 0;border:1px solid hsl(0,80%,32%);border-left-width:8px;border-top-width:0px;border-right-width:0px;border-bottom-width:0px;padding:10px 20px;margin-inline-start:30px;margin-inline-end:30px;}',SCRIPTENGINE_ICON='',DISK_ICON_NAME="disk",DISK_ICON='',PNG_ICON_NAME="save-png",PNG_ICON='',SVG_ICON_NAME="save-svg",SVG_ICON='',EXCALIDRAW_ICON='',VIRGIL_DATAURL="data:application/font-woff;charset=utf-8;base64,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",VIRGIL_FONT=` @font-face {font-family: "Virgil";src: url("${VIRGIL_DATAURL}") format("woff2");}`,CASCADIA_FONT=' @font-face {font-family: "Cascadia";src: url("data:application/font-woff;charset=utf-8;base64,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XVtdpV2uXdBeAV4OXmBecl6GXpteyl74X1Vfsl/PX+xgDWAtYDVgPWBQYGNga2B9YIZgj2CcYKlgtmDLYOFg7GElYVthfmGgYa1hwmHdYgNiN2JVYoli0GL6Yzpjc2PbZINkrGUYZUBlTWVeZaNl8GX9Zi9mPGZNZrdm/mdPZ59nq2e4Z8hoAWhDaE9oW2hoaMto12jnaPNo/2mBaipqmGqlarFrRWtSa79sG2wnbFRskGzBbM5s32z7bQ5tF20fbR9tH20fbX9tzm4ebp9u+W9jb75wGnBgcKRw1HEucZRx1nIxcoly1HMHc1Nzm3P+dEJ0rXTvdR11YXWIdcl2LHZrdnN2e3aidqp2zHbwdwd3LHc/d213qHfGd/14JHhLeHt4rnjWeON5EnkpeUd5nHnBefJ5+noCeiV6T3pyenp6hXqcewR7kXu5e+R8Dnw3fHF8qnztfPp9B30UfSF9Ln07fUh9VX1ifW99fH2JfZZ9o32wfb19yn3YfeZ9834Bfg5+Hn4yfkJ+U35hfnd+h37Vf2iAj4CrgNeBDYEzgVmBgIGmgbmBzYH4gh2CUoKHgr2C84M1g/iEM4SIhK6Ey4T9hR6FQIVbhXaFiYWcha+FwoXSheuGAoYZhjCGR4Zoho+GnYazhsGGzobjhviHBYcah0yHaIgsiE6IcIi1iNuJA4lciWqJgImViaqJvYnRie6KDIosikyKbIqBio+KpIqyir+KzIrZiueK+4sPiySLOYtdi3GLhIuRi5+Ls4vIi9aL44vxi/+MFIwojD2MUoxfjGyMeYyFjJiMq4y/jNKM840NjSeNO41bjXSNjo2ijc6N7o4PjieOPY5TjmaOd46Njp6OtI7NjuGO8o8JjxqPMY9Lj2WPe4+Rj6aPvI/Kj96P75AAkA6QHJAukE6QdJCCkJ6QvJDKkN6Q75ECkRORIZE7kU+RY5F+kZSRqZHCkdiR7pIIkiSSQJJckniSlJK3ksiS2JLrkwCTDpMhkzKTQ5NQk12TcJOMk6+TvJPVk/GT/5QSlCSUNJRElFKUa5R+lJGUrJTClNiU8ZUHlR2VN5VTlWqVf5WUla2VwJXWleaV/JYNlieWOpZQlmCWdpaHlqCWtJbJluyXBZcflziXTJdgl3qXjpeil8WX3Zf1mGqYsZkFmTmZg5mvmcaZ5Zpamr6bHZtFm7icHZyAnN6dG52E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") format("woff2");}';var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},lzString={exports:{}};function splitFolderAndFilename(A){const e=A.lastIndexOf("/"),t=-1==e?A:A.substring(e+1);return{folderpath:obsidian.normalizePath(A.substring(0,e)),filename:t,basename:t.replace(/\.[^/.]+$/,"")}}function download(A,e,t){const i=document.createElement("a");i.setAttribute("href",(A?`${A},`:"")+e),i.setAttribute("download",t),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)}function getIMGFilename(A,e){return`${A.substring(0,A.lastIndexOf("."))}.${e}`}function getNewUniqueFilepath(A,e,t){let i=obsidian.normalizePath(`${t}/${e}`),n=A.getAbstractFileByPath(i),a=0;const r=e.endsWith(".excalidraw.md")?".excalidraw.md":e.slice(e.lastIndexOf("."));for(;n;)i=obsidian.normalizePath(`${t}/${e.slice(0,e.lastIndexOf(r))}_${a}${r}`),a++,n=A.getAbstractFileByPath(i);return i}function getDrawingFilename(A){return A.drawingFilenamePrefix+(""!==A.drawingFilenameDateTime?window.moment().format(A.drawingFilenameDateTime):"")+(A.compatibilityMode?".excalidraw":A.useExcalidrawExtension?".excalidraw.md":".md")}function getEmbedFilename(A,e){return(e.drawingEmbedPrefixWithFilename?A:"")+e.drawingFilnameEmbedPostfix+(""!==e.drawingFilenameDateTime?window.moment().format(e.drawingFilenameDateTime):"")+(e.compatibilityMode?".excalidraw":e.useExcalidrawExtension?".excalidraw.md":".md")}async function checkAndCreateFolder(A){const e=app.vault;A=obsidian.normalizePath(A);const t=e.getAbstractFileByPathInsensitive(A);t&&t instanceof obsidian.TFolder||(t&&t instanceof obsidian.TFile&&new obsidian.Notice(`The folder cannot be created because it already exists as a file: ${A}.`),await e.createFolder(A))}!function(A){var e=function(){var A=String.fromCharCode,e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",i={};function n(A,e){if(!i[A]){i[A]={};for(var t=0;t>>8,t[2*i+1]=r%256}return t},decompressFromUint8Array:function(e){if(null==e)return a.decompress(e);for(var t=new Array(e.length/2),i=0,n=t.length;i>=1}else{for(n=1,i=0;i>=1}0==--d&&(d=Math.pow(2,g),g++),delete s[c]}else for(n=r[c],i=0;i>=1;0==--d&&(d=Math.pow(2,g),g++),r[l]=h++,c=String(o)}if(""!==c){if(Object.prototype.hasOwnProperty.call(s,c)){if(c.charCodeAt(0)<256){for(i=0;i>=1}else{for(n=1,i=0;i>=1}0==--d&&(d=Math.pow(2,g),g++),delete s[c]}else for(n=r[c],i=0;i>=1;0==--d&&(d=Math.pow(2,g),g++)}for(n=2,i=0;i>=1;for(;;){if(p<<=1,w==e-1){u.push(t(p));break}w++}return u.join("")},decompress:function(A){return null==A?"":""==A?null:a._decompress(A.length,32768,(function(e){return A.charCodeAt(e)}))},_decompress:function(e,t,i){var n,a,r,s,o,l,c,d=[],h=4,g=4,u=3,p="",w=[],m={val:i(0),position:t,index:1};for(n=0;n<3;n+=1)d[n]=n;for(r=0,o=Math.pow(2,2),l=1;l!=o;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=t,m.val=i(m.index++)),r|=(s>0?1:0)*l,l<<=1;switch(r){case 0:for(r=0,o=Math.pow(2,8),l=1;l!=o;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=t,m.val=i(m.index++)),r|=(s>0?1:0)*l,l<<=1;c=A(r);break;case 1:for(r=0,o=Math.pow(2,16),l=1;l!=o;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=t,m.val=i(m.index++)),r|=(s>0?1:0)*l,l<<=1;c=A(r);break;case 2:return""}for(d[3]=c,a=c,w.push(c);;){if(m.index>e)return"";for(r=0,o=Math.pow(2,u),l=1;l!=o;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=t,m.val=i(m.index++)),r|=(s>0?1:0)*l,l<<=1;switch(c=r){case 0:for(r=0,o=Math.pow(2,8),l=1;l!=o;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=t,m.val=i(m.index++)),r|=(s>0?1:0)*l,l<<=1;d[g++]=A(r),c=g-1,h--;break;case 1:for(r=0,o=Math.pow(2,16),l=1;l!=o;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=t,m.val=i(m.index++)),r|=(s>0?1:0)*l,l<<=1;d[g++]=A(r),c=g-1,h--;break;case 2:return w.join("")}if(0==h&&(h=Math.pow(2,u),u++),d[c])p=d[c];else{if(c!==g)return null;p=a+a.charAt(0)}w.push(p),d[g++]=a+p.charAt(0),a=p,0==--h&&(h=Math.pow(2,u),u++)}}};return a}();null!=A&&(A.exports=e)}(lzString);const{exportToSvg:exportToSvg,exportToBlob:exportToBlob}=excalidrawLib;let versionUpdateChecked=!1;const checkExcalidrawVersion=async A=>{if(!versionUpdateChecked){versionUpdateChecked=!0;try{const A=async()=>JSON.parse(await obsidian.request({url:"https://api.github.com/repos/zsviczian/obsidian-excalidraw-plugin/releases?per_page=5&page=1"})),e=(await A()).map((A=>({version:A.tag_name,published:new Date(A.published_at)}))).filter((A=>A.version.match(/^\d+\.\d+\.\d+$/))).sort(((A,e)=>e.published-A.published))[0].version;isVersionNewerThanOther(e,PLUGIN_VERSION)&&new obsidian.Notice(`A newer version of Excalidraw is available in Community Plugins.\n\nYou are using ${PLUGIN_VERSION}.\nThe latest is ${e}`)}catch(A){errorlog({where:"Utils/checkExcalidrawVersion",error:A})}setTimeout((()=>versionUpdateChecked=!1),288e5)}};function wrapText(A,e,t=!1,i=0){if(!e)return A;let n="";if(t){for(const t of A.split("\n")){const A=t.match(new RegExp(`(.){1,${e}}`,"g"));n+=A?`${A.join("\n")}\n`:"\n"}return n.replace(/\n$/,"")}const a=new RegExp(`(.{1,${e}})(\\s+|$\\n?)|([^\\s]{1,${e+i}})(\\s+|$\\n?)?`,"gm"),r=A.matchAll(a);let s;for(;!(s=r.next()).done;){n+=s.value[1]?s.value[1].trimEnd():s.value[3].trimEnd();const A=(s.value[2]?s.value[2].split("\n").length-1:0)+(s.value[4]?s.value[4].split("\n").length-1:0);n+="\n".repeat(A),0===A&&(n+="\n")}return n.replace(/\n$/,"")}const rotate=(A,e,t,i,n)=>[(A-t)*Math.cos(n)-(e-i)*Math.sin(n)+t,(A-t)*Math.sin(n)+(e-i)*Math.cos(n)+i],rotatedDimensions=A=>{if(0===A.angle)return[A.x,A.y,A.width,A.height];const e=A.x+A.width/2,t=A.y+A.height/2,[i,n]=rotate(A.x,A.y,e,t,A.angle),[a,r]=rotate(A.x+A.width,A.y+A.height,e,t,A.angle);return[i{const s=1/t.value;return{x:(A-i)*s-a,y:(e-n)*s-r}},getDataURL=async(A,e)=>new Promise(((t,i)=>{const n=new FileReader;n.onload=()=>{const A=n.result;t(A)},n.onerror=A=>i(A),n.readAsDataURL(new Blob([new Uint8Array(A)],{type:e}))})),getFontDataURL=async(A,e,t,i)=>{let n="",a="",r="";const s=A.metadataCache.getFirstLinkpathDest(e,t);if(s){const e=await A.vault.readBinary(s),t=s.extension.startsWith("woff")?"application/font-woff":"font/truetype";a=null!=i?i:s.basename,r=await getDataURL(e,t),n=` @font-face {font-family: "${a}";src: url("${r}") format("${"ttf"===s.extension?"truetype":s.extension}");}`;const o=n.split(";base64,",2);n=`${o[0]};charset=utf-8;base64,${o[1]}`}return{fontDef:n,fontName:a,dataURL:r}},svgToBase64=A=>`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(A.replaceAll(" "," "))))}`,getBinaryFileFromDataURL=A=>{if(!A)return null;const e=A.matchAll(/base64,(.*)/g).next(),t=window.atob(e.value[1]),i=t.length,n=new Uint8Array(i);for(let A=0;A{var i;try{return await exportToSvg({elements:A.elements,appState:Object.assign({exportBackground:e.withBackground,exportWithDarkMode:!!e.withTheme&&"light"!=(null===(i=A.appState)||void 0===i?void 0:i.theme)},A.appState),files:A.files,exportPadding:t})}catch(A){return null}},getPNG=async(A,e,t,i=1)=>{var n;try{return await exportToBlob({elements:A.elements,appState:Object.assign({exportBackground:e.withBackground,exportWithDarkMode:!!e.withTheme&&"light"!=(null===(n=A.appState)||void 0===n?void 0:n.theme)},A.appState),files:A.files,exportPadding:t,mimeType:"image/png",getDimensions:(A,e)=>({width:A*i,height:e*i,scale:i})})}catch(A){return errorlog({where:"Utils.getPNG",error:A}),null}},getQuickImagePreview=async(A,e,t)=>{if(!A.settings.displayExportedImageIfAvailable)return null;const i=getIMGFilename(e,t),n=A.app.vault.getAbstractFileByPath(i);return n&&n instanceof obsidian.TFile?"png"===t?await A.app.vault.readBinary(n):await A.app.vault.read(n):null},embedFontsInSVG=(A,e)=>{const t=null!=A.querySelector("text[font-family^='Virgil']"),i=null!=A.querySelector("text[font-family^='Cascadia']"),n=null!=A.querySelector("text[font-family^='LocalFont']"),a=A.querySelector("defs");return a&&(i||t||n)&&(a.innerHTML=``),A},getImageSize=async A=>new Promise(((e,t)=>{const i=new Image;i.onload=()=>e({height:i.naturalHeight,width:i.naturalWidth}),i.onerror=t,i.src=A})),scaleLoadedImage=(A,e)=>{let t=!1;if(!e||!A)return{dirty:t,scene:A};for(const i of e){const[e,n]=[i.size.width,i.size.height],a=i.size.width/i.size.height;A.elements.filter((A=>"image"===A.type&&A.fileId===i.id)).forEach((A=>{const[r,s]=[A.width,A.height];if(i.shouldScale){if(a!=r/s){t=!0;const i=Math.sqrt(r*s*n/e),a=Math.sqrt(r*s*e/n);A.height=i,A.width=a,A.y+=(s-i)/2,A.x+=(r-a)/2}}else r===e&&s===n||(t=!0,A.height=n,A.width=e,A.y+=(s-n)/2,A.x+=(r-e)/2)}))}return{dirty:t,scene:A}},setDocLeftHandedMode=(A,e)=>{const t=e.createElement("style");t.id="excalidraw-left-handed",t.textContent=".excalidraw .App-bottom-bar{justify-content:flex-end;}";const i=e.getElementById(t.id);i&&e.head.removeChild(i),A&&e.head.appendChild(t)},setLeftHandedMode=A=>{const e=new Set;app.workspace.iterateAllLeaves((t=>{const i=app.isMobile?document:t.view.containerEl.ownerDocument;i&&(e.has(i)||(e.add(i),setDocLeftHandedMode(A,i)))}))},getLinkParts=(A,e)=>{var t;const i=A.match(/(^[^#\|]*)#?(\^)?([^\|]*)?\|?(\d*)x?(\d*)/);return{original:A,path:e&&""===i[1]?e.path:i[1],isBlockRef:"^"===i[2],ref:null===(t=i[3])||void 0===t?void 0:t.replaceAll(REG_BLOCK_REF_CLEAN,""),width:i[4]?parseInt(i[4]):void 0,height:i[5]?parseInt(i[5]):void 0}},compress=A=>lzString.exports.compressToBase64(A).replace(/(.{64})/g,"$1\n\n"),decompress=A=>lzString.exports.decompressFromBase64(A.replaceAll("\n","").replaceAll("\r","")),hasExportTheme=(A,e)=>{if(e){const t=A.app.metadataCache.getFileCache(e);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-dark"])return!0}return!1},getExportTheme=(A,e,t)=>{if(e){const t=A.app.metadataCache.getFileCache(e);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-dark"])return t.frontmatter["excalidraw-export-dark"]?"dark":"light"}return A.settings.exportWithTheme?t:"light"},hasExportBackground=(A,e)=>{if(e){const t=A.app.metadataCache.getFileCache(e);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-transparent"])return!0}return!1},getWithBackground=(A,e)=>{if(e){const t=A.app.metadataCache.getFileCache(e);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-transparent"])return!t.frontmatter["excalidraw-export-transparent"]}return A.settings.exportWithBackground},getExportPadding=(A,e)=>{if(e){const t=A.app.metadataCache.getFileCache(e);if(!(null==t?void 0:t.frontmatter))return A.settings.exportPaddingSVG;if(null!=t.frontmatter["excalidraw-export-padding"]){const A=parseInt(t.frontmatter["excalidraw-export-padding"]);if(!isNaN(A))return A}if(null!=t.frontmatter["excalidraw-export-svgpadding"]){const A=parseInt(t.frontmatter["excalidraw-export-svgpadding"]);if(!isNaN(A))return A}}return A.settings.exportPaddingSVG},getPNGScale=(A,e)=>{if(e){const t=A.app.metadataCache.getFileCache(e);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-pngscale"]){const A=parseFloat(t.frontmatter["excalidraw-export-pngscale"]);if(!isNaN(A)&&A>0)return A}}return A.settings.pngExportScale},isVersionNewerThanOther=(A,e)=>{const t=A.match(/(\d*)\.(\d*)\.(\d*)/),i=e.match(/(\d*)\.(\d*)\.(\d*)/);return Boolean(t&&4===t.length&&i&&4===i.length&&!(isNaN(parseInt(t[1]))||isNaN(parseInt(t[2]))||isNaN(parseInt(t[3])))&&!(isNaN(parseInt(i[1]))||isNaN(parseInt(i[2]))||isNaN(parseInt(i[3])))&&(parseInt(t[1])>parseInt(i[1])||parseInt(t[1])>=parseInt(i[1])&&parseInt(t[2])>parseInt(i[2])||parseInt(t[1])>=parseInt(i[1])&&parseInt(t[2])>=parseInt(i[2])&&parseInt(t[3])>parseInt(i[3])))},getEmbeddedFilenameParts=A=>{const e=null==A?void 0:A.match(/([^#\^]*)((#\^)(group=|area=)?([^\|]*)|(#)(group=|area=)?([^\^\|]*))(.*)/);return e?{filepath:e[1],hasBlockref:Boolean(e[3]),hasGroupref:"group="===e[4]||"group="===e[7],hasArearef:"area="===e[4]||"area="===e[7],blockref:e[5],hasSectionref:Boolean(e[6]),sectionref:e[8],linkpartReference:e[2],linkpartAlias:e[9]}:{filepath:A,hasBlockref:!1,hasGroupref:!1,hasArearef:!1,blockref:"",hasSectionref:!1,sectionref:"",linkpartReference:"",linkpartAlias:""}},fragWithHTML=A=>createFragment((e=>e.createDiv().innerHTML=A)),errorlog=A=>{console.error(Object.assign({plugin:"Excalidraw"},A))},sleep$1=async A=>new Promise((e=>setTimeout(e,A))),log=console.log.bind(window.console);console.log.bind(window.console);const getParentOfClass=(A,e)=>{var t;let i=A.parentElement;for(;i&&!(i instanceof window.HTMLBodyElement)&&!i.classList.contains(e);)i=i.parentElement;return(null===(t=null==i?void 0:i.classList)||void 0===t?void 0:t.contains(e))?i:null},getNewOrAdjacentLeaf=(A,e)=>{const t=e.id,i=app.workspace.getLayout(),n=A=>A.children.filter((A=>"leaf"!==A.type)).map((A=>n(A))).flat().concat(A.children.filter((A=>"leaf"===A.type)).map((A=>A.id))),a=n(i.main),r=i.main&&a.contains(t)?"main":i.floating&&n(i.floating).contains(t)?"popout":i.left&&n(i.left).contains(t)?"left":i.right&&n(i.right).contains(t)?"right":"hover",s=()=>{var A;let t=app.workspace.getMostRecentLeaf();return t&&t!==e&&(null===(A=t.view)||void 0===A?void 0:A.containerEl.ownerDocument)===document||(t=null,a.forEach((A=>{var i;const n=app.workspace.getLeafById(A);!t&&(null===(i=n.view)||void 0===i?void 0:i.navigation)&&e!==n&&(t=n)}))),t};if(A.settings.openInMainWorkspace||["main","left","right"].contains(r)){if(!A.settings.openInAdjacentPane){if("main"===r)return app.workspace.createLeafBySplit(e);const A=s();return A?"empty"===A.view.getViewType()?A:app.workspace.createLeafBySplit(A):app.workspace.getLeaf(!0)}const t=s();return null!=t?t:app.workspace.getLeaf(!0)}if(!A.settings.openInAdjacentPane)return app.workspace.createLeafBySplit(e);if("hover"===r){const t=new Set;return app.workspace.iterateAllLeaves((A=>{A!==e&&e.containerEl.parentElement===A.containerEl.parentElement&&t.add(A)})),0===t.size?A.app.workspace.createLeafBySplit(e):Array.from(t)[0]}if("popout"===r){const A=new Set;return app.workspace.iterateAllLeaves((t=>{t!==e&&t.view.navigation&&t.view.containerEl.ownerDocument===e.view.containerEl.ownerDocument&&A.add(t)})),0===A.size?app.workspace.createLeafBySplit(e):Array.from(A)[0]}return A.app.workspace.createLeafBySplit(e)},getAttachmentsFolderAndFilePath=async(A,e,t)=>{let i=A.vault.getConfig("attachmentFolderPath");if(i&&i.startsWith("./")){const A=`${splitFolderAndFilename(e).folderpath}/`;i=obsidian.normalizePath(A+i.substring(2))}return i&&"/"!==i||(i=""),await checkAndCreateFolder(i),{folder:i,filepath:obsidian.normalizePath(""===i?t:`${i}/${t}`)}},isObsidianThemeDark=()=>document.body.classList.contains("theme-dark");var ar={},cz={},da={},de={},en={INSTALL_SCRIPT:"Install this script",UPDATE_SCRIPT:"An update is available - Click to install",CHECKING_SCRIPT:"Checking if a newer version is available - Click to reinstall now",UNABLETOCHECK_SCRIPT:"Update check was unsuccessful - Click to reinstall now",UPTODATE_SCRIPT:"Script is installed and up to date - Click to reinstall now",OPEN_AS_EXCALIDRAW:"Open as Excalidraw Drawing",TOGGLE_MODE:"Toggle between Excalidraw and Markdown mode",CONVERT_NOTE_TO_EXCALIDRAW:"Convert empty note to Excalidraw Drawing",CONVERT_EXCALIDRAW:"Convert *.excalidraw to *.md files",CREATE_NEW:"New Excalidraw drawing",CONVERT_FILE_KEEP_EXT:"*.excalidraw => *.excalidraw.md",CONVERT_FILE_REPLACE_EXT:"*.excalidraw => *.md (Logseq compatibility)",DOWNLOAD_LIBRARY:"Export stencil library as an *.excalidrawlib file",OPEN_EXISTING_NEW_PANE:"Open an existing drawing - IN A NEW PANE",OPEN_EXISTING_ACTIVE_PANE:"Open an existing drawing - IN THE CURRENT ACTIVE PANE",TRANSCLUDE:"Transclude (embed) a drawing",TRANSCLUDE_MOST_RECENT:"Transclude (embed) the most recently edited drawing",TOGGLE_LEFTHANDED_MODE:"Toggle left-handed mode",NEW_IN_NEW_PANE:"Create a new drawing - IN A NEW PANE",NEW_IN_ACTIVE_PANE:"Create a new drawing - IN THE CURRENT ACTIVE PANE",NEW_IN_POPOUT_WINDOW:"Create a new drawing - IN A POPOUT WINDOW",NEW_IN_NEW_PANE_EMBED:"Create a new drawing - IN A NEW PANE - and embed into active document",NEW_IN_ACTIVE_PANE_EMBED:"Create a new drawing - IN THE CURRENT ACTIVE PANE - and embed into active document",NEW_IN_POPOUT_WINDOW_EMBED:"Create a new drawing - IN A POPOUT WINDOW - and embed into active document",EXPORT_SVG:"Save as SVG next to the current file",EXPORT_PNG:"Save as PNG next to the current file",TOGGLE_LOCK:"Toggle Text Element edit RAW/PREVIEW",DELETE_FILE:"Delete selected Image or Markdown file from Obsidian Vault",INSERT_LINK_TO_ELEMENT:"Copy markdown link for selected element to clipboard. CTRL/CMD+Click to copy group link. SHIFT+click to copy an area link.",INSERT_LINK_TO_ELEMENT_GROUP:"Copy 'group=' markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_AREA:"Copy 'area=' markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_NORMAL:"Copy markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_ERROR:"Select a single element in the scene",INSERT_LINK_TO_ELEMENT_READY:"Link is READY and available on the clipboard",INSERT_LINK:"Insert link to file",INSERT_IMAGE:"Insert image or Excalidraw drawing from your vault",INSERT_MD:"Insert markdown file from vault",INSERT_LATEX:"Insert LaTeX formula (e.g. \\binom{n}{k} = \\frac{n!}{k!(n-k)!})",ENTER_LATEX:"Enter a valid LaTeX expression",READ_RELEASE_NOTES:"Read latest release notes",TRAY_MODE:"Toggle property-panel tray-mode",SEARCH:"Search for text in drawing",RESET_IMG_TO_100:"Set selected image element size to 100% of original",TEMPORARY_DISABLE_AUTOSAVE:"Disable autosave until next time Obsidian starts (only set this if you know what you are doing)",TEMPORARY_ENABLE_AUTOSAVE:"Enable autosave",INSTALL_SCRIPT_BUTTON:"Install or update Excalidraw Scripts",OPEN_AS_MD:"Open as Markdown",SAVE_AS_PNG:"Save as PNG into Vault (CTRL/CMD+CLICK to export)",SAVE_AS_SVG:"Save as SVG into Vault (CTRL/CMD+CLICK to export)",OPEN_LINK:"Open selected text as link\n(SHIFT+CLICK to open in a new pane)",EXPORT_EXCALIDRAW:"Export to an .Excalidraw file",LINK_BUTTON_CLICK_NO_TEXT:"Select a an ImageElement, or select a TextElement that contains an internal or external link.\nSHIFT CLICK this button to open the link in a new pane.\nCTRL/CMD CLICK the Image or TextElement on the canvas has the same effect!",FILENAME_INVALID_CHARS:'File name cannot contain any of the following characters: * " \\ < > : | ? #',FILE_DOES_NOT_EXIST:"File does not exist. Hold down ALT (or ALT+SHIFT) and CLICK link button to create a new file.",FORCE_SAVE:"Save (will also update transclusions)",RAW:"Change to PREVIEW mode (only effects text-elements with links or transclusions)",PARSED:"Change to RAW mode (only effects text-elements with links or transclusions)",NOFILE:"Excalidraw (no file)",COMPATIBILITY_MODE:"*.excalidraw file opened in compatibility mode. Convert to new format for full plugin functionality.",CONVERT_FILE:"Convert to new format",RELEASE_NOTES_NAME:"Display Release Notes after update",RELEASE_NOTES_DESC:"Toggle ON: Display release notes each time you update Excalidraw to a newer version.
Toggle OFF: Silent mode. You can still read release notes on GitHub.",NEWVERSION_NOTIFICATION_NAME:"Plugin update notification",NEWVERSION_NOTIFICATION_DESC:"Toggle ON: Show a notification when a new version of the plugin is avaiable.
Toggle OFF: Silent mode. You need to check for plugin updates in Community Plugins.",FOLDER_NAME:"Excalidraw folder",FOLDER_DESC:"Default location for new drawings. If empty, drawings will be created in the Vault root.",FOLDER_EMBED_NAME:"Use Excalidraw folder when embedding a drawing into the active document",FOLDER_EMBED_DESC:"Define which folder to place the newly inserted drawing into when using the command palette action: 'Create a new drawing and embed into active document'.
Toggle ON: Use Excalidraw folder
Toggle OFF: use the attachments folder defined in Obsidian settings.",TEMPLATE_NAME:"Excalidraw template file",TEMPLATE_DESC:"Full filepath to the Excalidraw template. E.g.: If your template is in the default Excalidraw folder and it's name is Template.md, the setting would be: Excalidraw/Template.md (or just Excalidraw/Template - you may omit the .md file extension). If you are using Excalidraw in compatibility mode, then your template must be a legacy Excalidraw file as well such as Excalidraw/Template.excalidraw.",SCRIPT_FOLDER_NAME:"Excalidraw Automate script folder (CASE SeNSitiVE!)",SCRIPT_FOLDER_DESC:"The files you place in this folder will be treated as Excalidraw Automate scripts. You can access your scripts from Excalidraw via the Obsidian Command Palette. Assign hotkeys to your favorite scripts just like to any other Obsidian command. The folder may not be the root folder of your Vault. ",COMPRESS_NAME:"Compress Excalidraw JSON in Markdown",COMPRESS_DESC:"By enabling this feature Excalidraw will store the drawing JSON in a Base64 compressed format using the LZ-String algorithm. This will reduce the chance of Excalidraw JSON cluttering your search results in Obsidian. As a side effect, this will also reduce the filesize of Excalidraw drawings. When you switch an Excalidraw drawing to Markdown view, using the options menu in Excalidraw, the file will be saved without compression, so that you can read and edit the JSON string. The drawing will be compressed again once you switch back to Excalidraw view. The setting only has effect 'point forward', meaning, existing drawings will not be effected by the setting until you open them and save them.
Toggle ON: Compress drawing JSON
Toggle OFF: Leave drawing JSON uncompressed",AUTOSAVE_NAME:"Enable Autosave",AUTOSAVE_DESC:"Automatically save the active drawing, in case there are changes, every 15, 30 seconds, or 1, 2, 3, 4, or 5 minute. Save normally happens when you close Excalidraw or Obsidian, or move focus to another pane. I created this feature with mobile phones and tablets in mind, where 'swiping out Obsidian to close it' led to some data loss.",AUTOSAVE_INTERVAL_NAME:"Interval for autosave",AUTOSAVE_INTERVAL_DESC:"The time interval between saves. Autosave will skip if there are no changes in the drawing.",FILENAME_HEAD:"Filename",FILENAME_DESC:"

Click this link for the date and time format reference.

",FILENAME_SAMPLE:"Filename for a new drawing is: ",FILENAME_EMBED_SAMPLE:"Filename for a new embedded drawing is: ",FILENAME_PREFIX_NAME:"Filename prefix",FILENAME_PREFIX_DESC:"The first part of the filename",FILENAME_PREFIX_EMBED_NAME:"Filename prefix when embedding a new drawing into a markdown note",FILENAME_PREFIX_EMBED_DESC:"Should the filename of the newly inserted drawing start with the name of the active markdown note when using the command palette action: Create a new drawing and embed into active document?
Toggle ON: Yes, the filename of a new drawing should start with filename of the active document
Toggle OFF: No, filename of a new drawing should not include the filename of the active document",FILENAME_POSTFIX_NAME:"Custom text after markdown Note's name when embedding",FILENAME_POSTFIX_DESC:"Effects filename only when embedding into a markdown document. This is text will be inserted after the note's name, but before the date.",FILENAME_DATE_NAME:"Filename Date",FILENAME_DATE_DESC:"The last part of the filename. Leave empty if you do not want a date.",FILENAME_EXCALIDRAW_EXTENSION_NAME:".excalidraw.md or .md",FILENAME_EXCALIDRAW_EXTENSION_DESC:"This setting does not apply if you use Excalidraw in compatibility mode, i.e. you are not using Excalidraw markdown files.
Toggle ON: filename ends with .excalidraw.md
Toggle OFF: filename ends with .md",DISPLAY_HEAD:"Display",LEFTHANDED_MODE_NAME:"Left-handed mode",LEFTHANDED_MODE_DESC:"Currently only has effect in tray-mode. If turned on, the tray will be on the right side.
Toggle ON: Left-handed mode.
Toggle OFF: Right-handed moded",MATCH_THEME_NAME:"New drawing to match Obsidian theme",MATCH_THEME_DESC:"If theme is dark, new drawing will be created in dark mode. This does not apply when you use a template for new drawings. Also this will not effect when you open an existing drawing. Those will follow the theme of the template/drawing respectively.
Toggle ON: Follow Obsidian Theme
Toggle OFF:Follow theme defined in your template",MATCH_THEME_ALWAYS_NAME:"Existing drawings to match Obsidian theme",MATCH_THEME_ALWAYS_DESC:"If theme is dark, drawings will be opened in dark mode. If your theme is light, they will be opened in light mode.
Toggle ON: Match Obsidian theme
Toggle OFF: Open with the same theme as last saved",MATCH_THEME_TRIGGER_NAME:"Excalidraw to follow when Obsidian Theme changes",MATCH_THEME_TRIGGER_DESC:"If this option is enabled open Excalidraw pane will switch to light/dark mode when Obsidian theme changes.
Toggle ON: Follow theme changes
Toggle OFF: Drawings are not effected by Obsidian theme changes",DEFAULT_OPEN_MODE_NAME:"Default mode when opening Excalidraw",DEFAULT_OPEN_MODE_DESC:"Specifies the mode how Excalidraw opens: Normal, Zen, or View mode. You may also set this behavior on a file level by adding the excalidraw-default-mode frontmatter key with a value of: normal,view, or zen to your document.",DEFAULT_PEN_MODE_NAME:"Pen mode",DEFAULT_PEN_MODE_DESC:"Should pen mode be automatically enabled when opening Excalidraw?",ZOOM_TO_FIT_NAME:"Zoom to fit on view resize",ZOOM_TO_FIT_DESC:"Zoom to fit drawing when the pane is resized
Toggle ON: Zoom to fit
Toggle OFF: Auto zoom disabled",ZOOM_TO_FIT_MAX_LEVEL_NAME:"Zoom to fit max ZOOM level",ZOOM_TO_FIT_MAX_LEVEL_DESC:"Set the maximum level to which zoom to fit will enlarge the drawing. Minimum is 0.5 (50%) and maximum is 10 (1000%).",LINKS_HEAD:"Links and transclusion",LINKS_DESC:"CTRL/CMD + CLICK on [[Text Elements]] to open them as links. If the selected text has more than one [[valid Obsidian links]], only the first will be opened. If the text starts as a valid web link (i.e. https:// or http://), then the plugin will open it in a browser. When Obsidian files change, the matching [[link]] in your drawings will also change. If you don't want text accidentally changing in your drawings use [[links|with aliases]].",ADJACENT_PANE_NAME:"Open in adjacent pane",ADJACENT_PANE_DESC:"When CTRL/CMD+SHIFT clicking a link in Excalidraw, by default the plugin will open the link in a new pane. Turning this setting on, Excalidraw will first look for an existing adjacent pane, and try to open the link there. Excalidraw will look for the adjacent pane based on your focus/navigation history, i.e. the workpane that was active before you activated Excalidraw.",MAINWORKSPACE_PANE_NAME:"Open in main workspace",MAINWORKSPACE_PANE_DESC:"When CTRL/CMD+SHIFT clicking a link in Excalidraw, by default the plugin will open the link in a new pane in the current active window. Turning this setting on, Excalidraw will open the link in an existing or new pane in the main workspace. ",LINK_BRACKETS_NAME:"Show [[brackets]] around links",LINK_BRACKETS_DESC:"In PREVIEW mode, when parsing Text Elements, place brackets around links. You can override this setting for a specific drawing by adding excalidraw-link-brackets: true/false to the file's frontmatter.",LINK_PREFIX_NAME:"Link prefix",LINK_PREFIX_DESC:'In PREVIEW mode, if the Text Element contains a link, precede the text with these characters. You can override this setting for a specific drawing by adding excalidraw-link-prefix: "📍 " to the file\'s frontmatter.',URL_PREFIX_NAME:"URL prefix",URL_PREFIX_DESC:'In PREVIEW mode, if the Text Element contains a URL link, precede the text with these characters. You can override this setting for a specific drawing by adding excalidraw-url-prefix: "🌐 " to the file\'s frontmatter.',PARSE_TODO_NAME:"Parse todo",PARSE_TODO_DESC:"Convert '- [ ] ' and '- [x] ' to checkpox and tick in the box.",TODO_NAME:"Open TODO icon",TODO_DESC:"Icon to use for open TODO items",DONE_NAME:"Completed TODO icon",DONE_DESC:"Icon to use for completed TODO items",HOVERPREVIEW_NAME:"Hover preview without CTRL/CMD key",HOVERPREVIEW_DESC:"Toggle On: In Exalidraw view mode the hover preview for [[wiki links]] will be shown immediately, without the need to hold the CTRL/CMD key. In Excalidraw normal mode, the preview will be shown immediately only when hovering the blue link icon in the top right of the element.
Toggle Off: Hover preview is shown only when you hold the CTRL/CMD key while hovering the link.",LINKOPACITY_NAME:"Opacity of link icon",LINKOPACITY_DESC:"Opacity of the link indicator icon in the top right corner of an element. 1 is opaque, 0 is transparent.",LINK_CTRL_CLICK_NAME:"CTRL/CMD + CLICK on text with [[links]] or [](links) to open them",LINK_CTRL_CLICK_DESC:"You can turn this feature off if it interferes with default Excalidraw features you want to use. If this is turned off, only the link button in the title bar of the drawing pane will open links.",TRANSCLUSION_WRAP_NAME:"Overflow wrap behavior of transcluded text",TRANSCLUSION_WRAP_DESC:"Number specifies the character count where the text should be wrapped. Set the text wrapping behavior of transcluded text. Turn this ON to force-wrap text (i.e. no overflow), or OFF to soft-wrap text (at the nearest whitespace).",TRANSCLUSION_DEFAULT_WRAP_NAME:"Transclusion word wrap default",TRANSCLUSION_DEFAULT_WRAP_DESC:"You can set manually set/override word wrapping length using the `![[page#^block]]{NUMBER}` format. Normally you will not want to set a default, because if you transclude text inside a sticky note, then Excalidraw will automatically take care of word wrapping. Set this value to `0` if you do not want to set a default. ",PAGE_TRANSCLUSION_CHARCOUNT_NAME:"Page transclusion max char count",PAGE_TRANSCLUSION_CHARCOUNT_DESC:"The maximum number of characters to display from the page when transcluding an entire page with the ![[markdown page]] format.",QUOTE_TRANSCLUSION_REMOVE_NAME:"Quote translusion: remove leading '> ' from each line",QUOTE_TRANSCLUSION_REMOVE_DESC:"Remove the leading '> ' from each line of the transclusion. This will improve readibility of quotes in text only transclusions
Toggle ON: Remove leading '> '
Toggle OFF: Do not remove leading '> ' (note it will still be removed from the first row due to Obsidian API functionality)",GET_URL_TITLE_NAME:"Use iframely to resolve page title",GET_URL_TITLE_DESC:"Use the http://iframely.server.crestify.com/iframely?url= to get title of page when dropping a link into Excalidraw",MD_HEAD:"Markdown-embed settings",MD_HEAD_DESC:"You can transclude formatted markdown documents into drawings as images CTRL(Shift on Mac) drop from the file explorer or using the command palette action.",MD_TRANSCLUDE_WIDTH_NAME:"Default width of a transcluded markdown document",MD_TRANSCLUDE_WIDTH_DESC:"The width of the markdown page. This effects the word wrapping when transcluding longer paragraphs, and the width of the image element. You can override the default width of an embedded file using the [[filename#heading|WIDTHxMAXHEIGHT]] syntax in markdown view mode under embedded files.",MD_TRANSCLUDE_HEIGHT_NAME:"Default maximum height of a transcluded markdown document",MD_TRANSCLUDE_HEIGHT_DESC:"The embedded image will be as high as the markdown text requires, but not higher than this value. You can override this value by editing the embedded image link in markdown view mode with the following syntax [[filename#^blockref|WIDTHxMAXHEIGHT]].",MD_DEFAULT_FONT_NAME:"The default font typeface to use for embedded markdown files.",MD_DEFAULT_FONT_DESC:'Set this value to "Virgil" or "Cascadia" or the filename of a valid .ttf, .woff, or .woff2 font e.g. MyFont.woff2 You can override this setting by adding the following frontmatter-key to the embedded markdown file: excalidraw-font: font_or_filename',MD_DEFAULT_COLOR_NAME:"The default font color to use for embedded markdown files.",MD_DEFAULT_COLOR_DESC:'Set this to any valid css color name e.g. "steelblue" (color names), or a valid hexadecimal color e.g. "#e67700", or any other valid css color string. You can override this setting by adding the following frontmatter-key to the embedded markdown file: excalidraw-font-color: steelblue',MD_DEFAULT_BORDER_COLOR_NAME:"The default border color to use for embedded markdown files.",MD_DEFAULT_BORDER_COLOR_DESC:'Set this to any valid css color name e.g. "steelblue" (color names), or a valid hexadecimal color e.g. "#e67700", or any other valid css color string. You can override this setting by adding the following frontmatter-key to the embedded markdown file: excalidraw-border-color: gray. Leave empty if you don\'t want a border. ',MD_CSS_NAME:"CSS file",MD_CSS_DESC:"The filename of the CSS to apply to markdown embeds. Provide the filename with extension (e.g. 'md-embed.css'). The css file may also be a plain markdown file (e.g. 'md-embed-css.md'), just make sure the content is written using valid css syntax. If you need to look at the HTML code you are applying the CSS to, then open Obsidian Developer Console (CTRL+SHIFT+i) and type in the following command: \"ExcalidrawAutomate.mostRecentMarkdownSVG\". This will display the most recent SVG generated by Excalidraw. Setting the font-family in the css is has limitations. By default only your operating system's standard fonts are available (see README for details). You can add one custom font beyond that using the setting above. You can override this css setting by adding the following frontmatter-key to the embedded markdown file: \"excalidraw-css: css_file_in_vault|css-snippet\".",EMBED_HEAD:"Embed & Export",EMBED_REUSE_EXPORTED_IMAGE_NAME:"If found, use the already exported image for preview",EMBED_REUSE_EXPORTED_IMAGE_DESC:"This setting works in conjunction with the Auto-export SVG/PNG setting. If an exported image that matches the file name of the drawing is available, use that image instead of generating a preview image on the fly. This will result in faster previews especially when you have many embedded objects in the drawing, however, it may happen that your latest changes are not displayed and that the image will not automatically match your Obsidian theme in case you have changed the Obsidian theme since the export was created. This setting only applies to embedding images into markdown documents. For a number of reasons, the same approach cannot be used to expedite the loading of drawings with many embedded objects. See demonstration here.",EMBED_PREVIEW_SVG_NAME:"Display SVG in markdown preview",EMBED_PREVIEW_SVG_DESC:"Toggle ON: Embed drawing as an SVG image into the markdown preview.
Toggle OFF: Embedd drawing as a PNG image. Note, that some of the image block referencing features do not work with PNG embeds.",PREVIEW_MATCH_OBSIDIAN_NAME:"Excalidraw preview to match Obsidian theme",PREVIEW_MATCH_OBSIDIAN_DESC:"Image preview in documents should match the Obsidian theme. If enabled, when Obsidian is in dark mode, Excalidraw images will render in dark mode. When Obsidian is in light mode, Excalidraw will render light mode as well. You may want to switch 'Export image with background' off for a more Obsidian-integrated look and feel.",EMBED_WIDTH_NAME:"Default width of embedded (transcluded) image",EMBED_WIDTH_DESC:"The default width of an embedded drawing. This applies to live preview edit and reading mode, as well as to hover previews. You can specify a custom width when embedding an image using the ![[drawing.excalidraw|100]] or [[drawing.excalidraw|100x100]] format.",EMBED_TYPE_NAME:"Type of file to insert into the document",EMBED_TYPE_DESC:"When you embed an image into a document using the command palette this setting will specify if Excalidraw should embed the original Excalidraw file or a PNG or an SVG copy. You need to enable auto-export PNG / SVG (see below under Export Settings) for those image types to be available in the dropdown. For drawings that do not have a a corresponding PNG or SVG readily available the command palette action will insert a broken link. You need to open the original drawing and initiate export manually. This option will not autogenerate PNG/SVG files, but will simply reference the already existing files.",EMBED_WIKILINK_NAME:"Embed SVG or PNG as Wiki link",EMBED_WIKILINK_DESC:"Toggle ON: Excalidraw will embed a [[wiki link]]. Toggle OFF: Excalidraw will embed a [markdown](link).",EXPORT_PNG_SCALE_NAME:"PNG export image scale",EXPORT_PNG_SCALE_DESC:"The size-scale of the exported PNG image",EXPORT_BACKGROUND_NAME:"Export image with background",EXPORT_BACKGROUND_DESC:"If turned off, the exported image will be transparent.",EXPORT_PADDING_NAME:"Image Padding",EXPORT_PADDING_DESC:"The padding (in pixels) around the exported SVG or PNG image. If you have curved lines close to the edge of the image they might get cropped during image export. You can increase this value to avoid cropping. You can also override this setting at a file level by adding the excalidraw-export-padding: 5 frontmatter key.",EXPORT_THEME_NAME:"Export image with theme",EXPORT_THEME_DESC:"Export the image matching the dark/light theme of your drawing. If turned off, drawings created in dark mode will appear as they would in light mode.",EXPORT_HEAD:"Export Settings",EXPORT_SYNC_NAME:"Keep the .SVG and/or .PNG filenames in sync with the drawing file",EXPORT_SYNC_DESC:"When turned on, the plugin will automatically update the filename of the .SVG and/or .PNG files when the drawing in the same folder (and same name) is renamed. The plugin will also automatically delete the .SVG and/or .PNG files when the drawing in the same folder (and same name) is deleted. ",EXPORT_SVG_NAME:"Auto-export SVG",EXPORT_SVG_DESC:"Automatically create an SVG export of your drawing matching the title of your file. The plugin will save the *.SVG file in the same folder as the drawing. Embed the .svg file into your documents instead of Excalidraw making you embeds platform independent. While the auto-export switch is on, this file will get updated every time you edit the Excalidraw drawing with the matching name. You can override this setting on a file level by adding the excalidraw-autoexport frontmatter key. Valid values for this key are none,both,svg, and png",EXPORT_PNG_NAME:"Auto-export PNG",EXPORT_PNG_DESC:"Same as the auto-export SVG, but for *.PNG",EXPORT_BOTH_DARK_AND_LIGHT_NAME:"Export both dark- and light-themed image",EXPORT_BOTH_DARK_AND_LIGHT_DESC:"When enabled, Excalidraw will export two files instead of one: filename.dark.png, filename.light.png and/or filename.dark.svg and filename.light.svg
Double files will be exported both if auto-export SVG or PNG (or both) are enabled, as well as when clicking export on a single image.",COMPATIBILITY_HEAD:"Compatibility features",EXPORT_EXCALIDRAW_NAME:"Auto-export Excalidraw",EXPORT_EXCALIDRAW_DESC:"Same as the auto-export SVG, but for *.Excalidraw",SYNC_EXCALIDRAW_NAME:"Sync *.excalidraw with *.md version of the same drawing",SYNC_EXCALIDRAW_DESC:"If the modified date of the *.excalidraw file is more recent than the modified date of the *.md file then update the drawing in the .md file based on the .excalidraw file",COMPATIBILITY_MODE_NAME:"New drawings as legacy files",COMPATIBILITY_MODE_DESC:"By enabling this feature drawings you create with the ribbon icon, the command palette actions, and the file explorer are going to be all legacy *.excalidraw files. This setting will also turn off the reminder message when you open a legacy file for editing.",MATHJAX_NAME:"MathJax (LaTeX) javascript library host",MATHJAX_DESC:"If you are using LaTeX equiations in Excalidraw then the plugin needs to load a javascript library for that. Some users are unable to access certain host servers. If you are experiencing issues try changing the host here. You may need to restart Obsidian after closing settings, for this change to take effect.",EXPERIMENTAL_HEAD:"Experimental features",EXPERIMENTAL_DESC:"Some of these setting will not take effect immediately, only when the File Explorer is refreshed, or Obsidian restarted.",FIELD_SUGGESTER_NAME:"Enable Field Suggester",FIELD_SUGGESTER_DESC:"Field Suggester borrowed from Breadcrumbs and Templater plugins. The Field Suggester will show an autocomplete menu when you type excalidraw- or ea. with function description as hints on the individual items in the list.",FILETYPE_NAME:"Display type (✏️) for excalidraw.md files in File Explorer",FILETYPE_DESC:"Excalidraw files will receive an indicator using the emoji or text defined in the next setting.",FILETAG_NAME:"Set the type indicator for excalidraw.md files",FILETAG_DESC:"The text or emoji to display as type indicator.",INSERT_EMOJI:"Insert an emoji",LIVEPREVIEW_NAME:"Immersive image embedding in live preview editing mode",LIVEPREVIEW_DESC:"Turn this on to support image embedding styles such as ![[drawing|width|style]] in live preview editing mode. The setting will not effect the currently open documents. You need close the open documents and re-open them for the change to take effect.",ENABLE_FOURTH_FONT_NAME:"Enable fourth font option",ENABLE_FOURTH_FONT_DESC:"By turning this on, you will see a fourth font button on the properties panel for text elements. Files that use this fourth font will (partly) lose their platform independence. Depending on the custom font set in settings, they will look differently when loaded in another vault, or at a later time. Also the 4th font will display as system default font on excalidraw.com, or other Excalidraw versions.",FOURTH_FONT_NAME:"Forth font file",FOURTH_FONT_DESC:"Select a .ttf, .woff or .woff2 font file from your vault to use as the fourth font. If no file is selected, Excalidraw will use the Virgil font by default.",SCRIPT_SETTINGS_HEAD:"Settings for installed Scripts",SELECT_FILE:"Select a file then press enter.",SELECT_FILE_WITH_OPTION_TO_SCALE:"Select a file then press ENTER, or ALT+ENTER to insert at 100% scale.",NO_MATCH:"No file matches your query.",SELECT_FILE_TO_LINK:"Select the file you want to insert the link for.",SELECT_DRAWING:"Select the image or drawing you want to insert",TYPE_FILENAME:"Type name of drawing to select.",SELECT_FILE_OR_TYPE_NEW:"Select existing drawing or type name of a new drawing then press Enter.",SELECT_TO_EMBED:"Select the drawing to insert into active document.",SELECT_MD:"Select the markdown document you want to insert",INFINITE_LOOP_WARNING:"EXCALIDRAW WARNING\nAborted loading embedded images due to infinite loop in file:\n",SCRIPT_EXECUTION_ERROR:"Script execution error. Please find error message on the developer console.",LOAD_FROM_BACKUP:"Excalidraw file was corrupted. Loading from backup file.",GOTO_FULLSCREEN:"Goto fullscreen mode",EXIT_FULLSCREEN:"Exit fullscreen mode",TOGGLE_FULLSCREEN:"Toggle fullscreen mode"},enGB={},es={},fr={},hi={},id={},it={},ja={},ko={},nl={},no={},pl={},pt={},ptBR={},ro={},ru={},tr={},zhCN={INSTALL_SCRIPT:"安装此脚本",UPDATE_SCRIPT:"发现可用更新 - 点击安装",CHECKING_SCRIPT:"检查脚本更新 - 点击重新安装",UNABLETOCHECK_SCRIPT:"检查更新失败 - 点击重新安装",UPTODATE_SCRIPT:"已安装最新脚本 - 点击重新安装",OPEN_AS_EXCALIDRAW:"打开为 Excalidraw 绘图",TOGGLE_MODE:"在 Excalidraw 和 Markdown 模式之间切换",CONVERT_NOTE_TO_EXCALIDRAW:"转换空白笔记为 Excalidraw 绘图",CONVERT_EXCALIDRAW:"转换 *.excalidraw 为 *.md 文件",CREATE_NEW:"新建 Excalidraw 绘图",CONVERT_FILE_KEEP_EXT:"*.excalidraw => *.excalidraw.md",CONVERT_FILE_REPLACE_EXT:"*.excalidraw => *.md (兼容 Logseq)",DOWNLOAD_LIBRARY:"导出 stencil 库为 *.excalidrawlib 文件",OPEN_EXISTING_NEW_PANE:"打开已有的绘图 - 于新面板",OPEN_EXISTING_ACTIVE_PANE:"打开已有的绘图 - 于当前面板",TRANSCLUDE:"嵌入绘图(形如 ![[drawing]])到当前文档",TRANSCLUDE_MOST_RECENT:"嵌入最近编辑过的绘图(形如 ![[drawing]])到当前文档",TOGGLE_LEFTHANDED_MODE:"切换为左手模式",NEW_IN_NEW_PANE:"新建绘图 - 于新面板",NEW_IN_ACTIVE_PANE:"新建绘图 - 于当前面板",NEW_IN_POPOUT_WINDOW:"新建绘图 - 于新窗口",NEW_IN_NEW_PANE_EMBED:"新建绘图 - 于新面板 - 并将其嵌入(形如 ![[drawing]])到当前文档",NEW_IN_ACTIVE_PANE_EMBED:"新建绘图 - 于当前面板 - 并将其嵌入(形如 ![[drawing]])到当前文档",NEW_IN_POPOUT_WINDOW_EMBED:"新建绘图 - 于新窗口 - 并将其嵌入(形如 ![[drawing]])到当前文档",EXPORT_SVG:"导出 SVG 文件到当前目录",EXPORT_PNG:"导出 PNG 文件到当前目录",TOGGLE_LOCK:"切换文本元素为原文模式(RAW)/预览模式(PREVIEW)",DELETE_FILE:"从库中删除所选图像(或 MD-Embed)的源文件",INSERT_LINK_TO_ELEMENT:"复制所选元素的内部链接。按住 CTRL/CMD 可复制元素所在分组的内部链接。按住 SHIFT 可复制元素周围区域的内部链接。",INSERT_LINK_TO_ELEMENT_GROUP:"复制所选元素所在分组的内部链接(形如 [[file#^group=elementID]])",INSERT_LINK_TO_ELEMENT_AREA:"复制所选元素周围区域的内部链接(形如 [[file#^area=elementID]])",INSERT_LINK_TO_ELEMENT_NORMAL:"复制所选元素的引用链接(形如 [[file#^elementID]])",INSERT_LINK_TO_ELEMENT_ERROR:"未选择画布里的单个元素",INSERT_LINK_TO_ELEMENT_READY:"链接已生成并复制到剪贴板",INSERT_LINK:"插入文件的内部链接(形如 [[drawing]])到当前绘图",INSERT_IMAGE:"插入图像(以图像形式嵌入)到当前绘图",INSERT_MD:"插入 Markdown 文档(以图像形式嵌入)到当前绘图",INSERT_LATEX:"插入 LaTeX 公式到当前绘图",ENTER_LATEX:"输入 LaTeX 表达式",READ_RELEASE_NOTES:"阅读本插件的最新发行版本说明",TRAY_MODE:"切换绘图工具属性页为面板模式(Panel)/托盘模式(Tray)",SEARCH:"搜索文本",INSTALL_SCRIPT_BUTTON:"安装或更新 Excalidraw 自动化脚本",OPEN_AS_MD:"打开为 Markdown 文件",SAVE_AS_PNG:"导出 PNG 到当前目录(按住 CTRL/CMD 设定导出路径)",SAVE_AS_SVG:"导出 SVG 到当前目录(按住 CTRL/CMD 设定导出路径)",OPEN_LINK:"打开所选元素里的链接 \n(按住 SHIFT 在新面板打开)",EXPORT_EXCALIDRAW:"导出为 .Excalidraw 文件",LINK_BUTTON_CLICK_NO_TEXT:"请选择一个含有链接的图形或文本元素。\n按住 SHIFT 并点击此按钮可在新面板中打开链接。\n您也可以直接在画布中按住 CTRL/CMD 并点击图形或文本元素来打开链接。",FILENAME_INVALID_CHARS:'文件名不能含有以下符号: * " \\ < > : | ? #',FILE_DOES_NOT_EXIST:"文件不存在。按住 ALT(或 ALT + SHIFT)并点击链接来创建新文件。",FORCE_SAVE:"立刻保存该绘图(并更新嵌入了该绘图的面板)。\n详见插件设置中的定期保存选项",RAW:"文本元素正以原文(RAW)模式显示链接。\n点击切换到预览(PREVIEW)模式",PARSED:"文本元素正以预览(PREVIEW)模式显示链接。\n点击切换到原文(RAW)模式",NOFILE:"Excalidraw(没有文件)",COMPATIBILITY_MODE:"*.excalidraw 文件以兼容模式打开。转换为新格式以获得完整的插件功能。",CONVERT_FILE:"转换为新格式",RELEASE_NOTES_NAME:"显示更新说明",RELEASE_NOTES_DESC:"开启:每次更新本插件后,显示最新发行版本的说明。
关闭:您仍可以在 GitHub 上阅读更新说明。",NEWVERSION_NOTIFICATION_NAME:"通知插件更新",NEWVERSION_NOTIFICATION_DESC:"开启:当本插件存在可用更新时,显示通知。
关闭:您需要手动检查本插件的更新(设置 - 第三方插件 - 检查更新)。",FOLDER_NAME:"Excalidraw 文件夹",FOLDER_DESC:"新绘图的默认存储路径。若为空,将在库的根目录中创建新绘图。",FOLDER_EMBED_NAME:"将 Excalidraw 文件夹用于“新建绘图”命令创建的绘图",FOLDER_EMBED_DESC:"在命令面板中执行“新建绘图”系列命令时,新绘图的存储路径。
开启:使用 Excalidraw 文件夹。
关闭:使用 Obsidian 设置的新附件默认位置。",TEMPLATE_NAME:"Excalidraw 模板文件",TEMPLATE_DESC:"Excalidraw 模板文件的完整路径。
如果您的模板在默认的 Excalidraw 文件夹中且文件名是 Template.md,则此项应设为 Excalidraw/Template.md(也可省略 .md 扩展名,即 Excalidraw/Template)。
如果您在兼容模式下使用 Excalidraw,那么您的模板文件也必须是旧的 *.excalidraw 格式,例如 Excalidraw/Template.excalidraw。",SCRIPT_FOLDER_NAME:"Excalidraw 自动化脚本的文件夹",SCRIPT_FOLDER_DESC:"此文件夹用于存放 Excalidraw 自动化脚本。您可以在 Obsidian 命令面板中执行这些脚本,还可以为喜欢的脚本分配快捷键,就像为其他 Obsidian 命令分配快捷键一样。
该项不能设为库的根目录。",COMPRESS_NAME:"压缩 Excalidraw JSON",COMPRESS_DESC:"Excalidraw 绘图文件默认将元素记录为 JSON 格式。开启此项,可将元素的 JSON 数据以 BASE64 编码(使用 LZ-String 算法)。这样做的好处是:一方面可以避免原来的明文 JSON 数据干扰 Obsidian 的文本搜索结果,另一方面减小了绘图文件的体积。
当您通过功能区按钮或命令将绘图切换成 Markdown 模式时,数据将被解码回 JSON 格式以便阅读和编辑;而当您切换回 Excalidraw 模式时,数据就会被再次编码。
开启此项后,对于之前已存在的未压缩的绘图文件,需要重新打开并保存它们才能生效。",AUTOSAVE_NAME:"定期保存",AUTOSAVE_DESC:"定期保存当前绘图。此功能专为移动设备设计 —— 在桌面端,当您关闭 Excalidraw 或 Obsidian,或者移动焦点到其他面板的时候,软件是会自动保存的;但是在手机或平板上通过滑动手势退出 Obsidian 时,可能无法顺利触发自动保存。因此我添加了定期保存功能作为弥补。",AUTOSAVE_INTERVAL_NAME:"定期保存的时间间隔",AUTOSAVE_INTERVAL_DESC:"每隔多长时间执行一次保存。如果当前绘图没有发生改变,将不会触发保存。",FILENAME_HEAD:"文件名",FILENAME_DESC:"

点击阅读日期和时间格式参考

",FILENAME_SAMPLE:"“新建绘图”系列命令创建的文件名形如:",FILENAME_EMBED_SAMPLE:"“新建绘图并嵌入到当前文档”系列命令创建的文件名形如:",FILENAME_PREFIX_NAME:"“新建绘图”系列命令创建的文件名前缀",FILENAME_PREFIX_DESC:"执行“新建绘图”系列命令时,创建的绘图文件名的第一部分",FILENAME_PREFIX_EMBED_NAME:"“新建绘图并嵌入到当前文档”系列命令创建的文件名前缀",FILENAME_PREFIX_EMBED_DESC:"执行“新建绘图并嵌入到当前文档”系列命令时,创建的绘图文件名是否以当前文档名作为前缀?
开启:
关闭:否",FILENAME_POSTFIX_NAME:"“新建绘图并嵌入到当前文档”系列命令创建的文件名的中间部分",FILENAME_POSTFIX_DESC:"介于文件名前缀和日期时间之间的文本。仅对“新建绘图并嵌入到当前文档”系列命令创建的绘图生效。",FILENAME_DATE_NAME:"文件名里的日期时间",FILENAME_DATE_DESC:"文件名的最后一部分。允许留空。",FILENAME_EXCALIDRAW_EXTENSION_NAME:"文件扩展名(.excalidraw.md 或 .md)",FILENAME_EXCALIDRAW_EXTENSION_DESC:"该选项在兼容模式(即非 Excalidraw 专用 Markdown 文件)下不会生效。
开启:使用 .excalidraw.md 作为扩展名。
关闭:使用 .md 作为扩展名。",DISPLAY_HEAD:"显示",LEFTHANDED_MODE_NAME:"左手模式",LEFTHANDED_MODE_DESC:"目前只在托盘模式下生效。若开启此项,则托盘(绘图工具属性页)将位于右侧。
开启:左手模式。
关闭:右手模式。",MATCH_THEME_NAME:"使新建的绘图匹配 Obsidian 主题",MATCH_THEME_DESC:"如果 Obsidian 使用黑暗主题,新建的绘图文件也将使用黑暗主题。
但是若设置了模板,新建的绘图文件将跟随模板主题;另外,此功能不会作用于已有的绘图。
开启:跟随 Obsidian 主题风格。
关闭:跟随模板主题风格。",MATCH_THEME_ALWAYS_NAME:"使已有的绘图匹配 Obsidian 主题",MATCH_THEME_ALWAYS_DESC:"如果 Obsidian 使用黑暗主题,则绘图文件也将以黑暗主题打开;反之亦然。
开启:匹配 Obsidian 主题风格。
关闭:采用上次保存时的主题风格。",MATCH_THEME_TRIGGER_NAME:"Excalidraw 主题跟随 Obsidian 主题变化",MATCH_THEME_TRIGGER_DESC:"开启此项,则切换 Obsidian 的黑暗/明亮主题时,已打开的 Excalidraw 面板的主题会随之改变。
开启:跟随主题变化。
关闭:不跟随主题变化。",DEFAULT_OPEN_MODE_NAME:"Excalidraw 的默认运行模式",DEFAULT_OPEN_MODE_DESC:"设置 Excalidraw 的运行模式:普通模式(Normal)/禅模式(Zen)/阅读模式(View)。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-default-mode: normal/zen/view 的键值对。",DEFAULT_PEN_MODE_NAME:"触控笔模式(Pen mode)",DEFAULT_PEN_MODE_DESC:"打开绘图时,是否自动开启触控笔模式?",ZOOM_TO_FIT_NAME:"自动缩放以适应面板调整",ZOOM_TO_FIT_DESC:"调整面板大小时,自适应地缩放画布
开启:自动缩放。
关闭:禁用自动缩放。",ZOOM_TO_FIT_MAX_LEVEL_NAME:"自动缩放的最高级别",ZOOM_TO_FIT_MAX_LEVEL_DESC:"自动缩放画布时,允许放大的最高级别。该值不能低于 0.5(50%)且不能超过 10(1000%)。",LINKS_HEAD:"链接(Links) & 以文本形式嵌入到绘图中的文档(Transclusion)",LINKS_DESC:"按住 CTRL/CMD 并点击包含 [[链接]] 的文本元素可以打开其中的链接。
如果所选文本元素包含多个 [[有效的内部链接]] ,只会打开第一个链接;如果所选文本元素包含有效的 URL 链接 (如 https://http://),插件会在浏览器中打开链接。
链接的源文件被重命名时,绘图中相应的 [[内部链接]] 也会同步更新。若您不愿绘图中的链接外观因此而变化,可使用 [[内部链接|别名]]。",ADJACENT_PANE_NAME:"在相邻面板中打开",ADJACENT_PANE_DESC:"按住 CTRL/CMD + SHIFT 并点击绘图里的内部链接时,插件默认会在新面板中打开该链接。
若开启此项,Excalidraw 会先尝试寻找已有的相邻面板(按照右侧、左侧、上方、下方的顺序),并在其中打开该链接。如果找不到,再在新面板中打开。",MAINWORKSPACE_PANE_NAME:"在主工作区中打开",MAINWORKSPACE_PANE_DESC:"按住 CTRL/CMD + SHIFT 并点击绘图里的内部链接时,插件默认会在当前窗口的新面板中打开该链接。
若开启此项,Excalidraw 会在主工作区的面板中打开该链接。",LINK_BRACKETS_NAME:"在链接的两侧显示 [[中括号]]",LINK_BRACKETS_DESC:"文本元素处于预览模式时,在内部链接的两侧显示中括号。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-link-brackets: true/false 的键值对。",LINK_PREFIX_NAME:"内部链接的前缀",LINK_PREFIX_DESC:'文本元素处于预览模式时,如果其中包含链接,则添加此前缀。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-link-prefix: "📍 " 的键值对。',URL_PREFIX_NAME:"外部链接的前缀",URL_PREFIX_DESC:'文本元素处于预览模式时,如果其中包含外部链接,则添加此前缀。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-url-prefix: "🌐 " 的键值对。',PARSE_TODO_NAME:"解析任务列表(Todo)",PARSE_TODO_DESC:"将文本元素中的 - [ ]- [x] 前缀显示为方框。",TODO_NAME:"未完成的 Todo 项目",TODO_DESC:"未完成的 Todo 项目的符号",DONE_NAME:"已完成的 Todo 项目",DONE_DESC:"已完成的 Todo 项目的符号",HOVERPREVIEW_NAME:"鼠标悬停预览内部链接",HOVERPREVIEW_DESC:"开启:在 Excalidraw 阅读模式(View)下,鼠标悬停在 [[内部链接]] 上即可预览;而在普通模式(Normal)下, 鼠标悬停在内部链接右上角的蓝色标识上即可预览。
关闭:鼠标悬停在 [[内部链接]] 上,并且按住 CTRL/CMD 时进行预览。",LINKOPACITY_NAME:"链接标识的透明度",LINKOPACITY_DESC:"含有链接的元素,其右上角的链接标识的透明度。介于 0(全透明)到 1(不透明)之间。",LINK_CTRL_CLICK_NAME:"按住 CTRL/CMD 并点击含有 [[链接]] 或 [别名](链接) 的文本来打开链接",LINK_CTRL_CLICK_DESC:"如果此功能影响到您使用某些原版 Excalidraw 功能,可将其关闭。关闭后,您只能通过绘图面板标题栏中的链接按钮来打开链接。",TRANSCLUSION_WRAP_NAME:"Transclusion 的折行方式",TRANSCLUSION_WRAP_DESC:"中的 number 表示嵌入的文本溢出时,在第几个字符处进行折行。
此开关控制具体的折行方式。若开启,则严格在 number 处折行,禁止溢出;若关闭,则允许在 number 位置后最近的空格处折行。",TRANSCLUSION_DEFAULT_WRAP_NAME:"Transclusion 的默认折行位置",TRANSCLUSION_DEFAULT_WRAP_DESC:"除了通过 ![[doc#^block]]{number} 中的 number 来控制折行位置,您也可以在此设置 number 的默认值。
一般设为 0 即可,表示不设置固定的默认值,这样当您需要嵌入文档到便签中时,Excalidraw 能更好地帮您自动处理。",PAGE_TRANSCLUSION_CHARCOUNT_NAME:"Transclusion 的最大显示字符数",PAGE_TRANSCLUSION_CHARCOUNT_DESC:"以 ![[内部链接]]![](内部链接) 的形式将文档以文本形式嵌入到绘图中时,该文档在绘图中可显示的最大字符数量。",GET_URL_TITLE_NAME:"使用 iframly 获取页面标题",GET_URL_TITLE_DESC:"拖放链接到 Excalidraw 时,使用 http://iframely.server.crestify.com/iframely?url= 来获取页面的标题。",MD_HEAD:"以图像形式嵌入到绘图中的 Markdown 文档(MD-Embed)",MD_HEAD_DESC:"您还可以将 Markdown 文档以图像形式(而非文本形式)嵌入到绘图中。方法是按住 CTRL/CMD 并从文件管理器中把文档拖入绘图,或者执行“以图像形式嵌入”系列命令。",MD_TRANSCLUDE_WIDTH_NAME:"MD-Embed 的默认宽度",MD_TRANSCLUDE_WIDTH_DESC:"MD-Embed 的宽度。该选项会影响到折行,以及图像元素的宽度。
您可为绘图中的某个 MD-Embed 单独设置此项,方法是将绘图切换至 Markdown 模式,并修改相应的 [[Embed文件名#标题|宽度x最大高度]]。",MD_TRANSCLUDE_HEIGHT_NAME:"MD-Embed 的默认最大高度",MD_TRANSCLUDE_HEIGHT_DESC:"MD-Embed 的高度取决于 Markdown 文档内容的多少,但最大不会超过该值。
您可为绘图中的某个 MD-Embed 单独设置此项,方法是将绘图切换至 Markdown 模式,并修改相应的 [[Embed文件名#^块引ID|宽度x最大高度]]。",MD_DEFAULT_FONT_NAME:"MD-Embed 的默认字体",MD_DEFAULT_FONT_DESC:"可以设为 VirgilCasadia 或其他有效的 .ttf/.woff/.woff2 字体文件(如 我的字体.woff2)。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-font: 字体名或文件名 的键值对。",MD_DEFAULT_COLOR_NAME:"MD-Embed 的默认文本颜色",MD_DEFAULT_COLOR_DESC:"可以填写 HTML 颜色名,如 steelblue(参考 HTML Color Names),或者有效的 16 进制颜色值,例如 #e67700,或者任何其他有效的 CSS 颜色。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-font-color: steelblue 的键值对。",MD_DEFAULT_BORDER_COLOR_NAME:"MD-Embed 的默认边框颜色",MD_DEFAULT_BORDER_COLOR_DESC:"可以填写 HTML 颜色名,如 steelblue(参考 HTML Color Names),或者有效的 16 进制颜色值,例如 #e67700,或者任何其他有效的 CSS 颜色。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-border-color: gray 的键值对。
如果您不想要边框,请留空。",MD_CSS_NAME:"MD-Embed 的默认 CSS 样式表",MD_CSS_DESC:"MD-Embed 图像所采用的 CSS 样式表文件名。需包含扩展名,例如 md-embed.css。允许使用 Markdown 文件(如 md-embed-css.md),但其内容应符合 CSS 语法。
如果您要查询 CSS 所作用的 HTML 节点,请在 Obsidian 开发者控制台(CTRL+SHIFT+i)中键入命令:ExcalidrawAutomate.mostRecentMarkdownSVG —— 这将显示 Excalidraw 最近生成的 SVG。
此外,在 CSS 中不能任意地设置字体,您一般只能使用系统默认的标准字体(详见 README),但可以通过上面的设置来额外添加一个自定义字体。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-css: 库中的CSS文件或CSS片段 的键值对。",EMBED_HEAD:"嵌入到文档中的绘图(Embed) & 导出",EMBED_REUSE_EXPORTED_IMAGE_NAME:"将之前已导出的图像作为 Embed 的预览图(如果存在的话)",EMBED_REUSE_EXPORTED_IMAGE_DESC:"该选项与“自动导出 SVG/PNG 副本”选项配合使用。如果存在文件名相匹配的 SVG/PNG 副本,则将其作为 Embed 的预览图,而不再重新生成预览图。
该选项能够提高性能,尤其是当 Embed 中含有大量图像或 MD-Embed 时。但是,该选项也可能导致预览图无法立即响应你最新的修改,或者你对 Obsidian 主题风格的改变。
该选项仅作用于嵌入到文档中的绘图。由于种种原因,该技术无法用于加快绘图文件的打开速度。详见此说明。",EMBED_PREVIEW_SVG_NAME:"生成 SVG 格式的 Embed 预览图",EMBED_PREVIEW_SVG_DESC:"开启:在 Markdown 预览模式下,为 Embed 生成 SVG 格式的预览图。
关闭:为 Embed 生成 PNG 格式的预览图。注意:PNG 格式预览图不支持某些 绘图元素的块引用特性。",PREVIEW_MATCH_OBSIDIAN_NAME:"Embed 预览图匹配 Obsidian 主题",PREVIEW_MATCH_OBSIDIAN_DESC:"开启此项,则当 Obsidian 处于黑暗模式时,Embed 的预览图也会以黑暗模式渲染;当 Obsidian 处于明亮模式时,预览图也会以明亮模式渲染。
您可能还需要关闭“导出的图像包含背景”开关,来获得与 Obsidian 更加协调的观感。",EMBED_WIDTH_NAME:"Embed 预览图的默认宽度",EMBED_WIDTH_DESC:"该选项同时作用于 Obsidian 实时预览模式下的编辑视图和阅读视图,以及鼠标悬停时浮现的预览图。
您可为某个要嵌入到文档中的绘图(Embed)单独设置此项,方法是修改相应的链接格式为形如 ![[drawing.excalidraw|100]][[drawing.excalidraw|100x100]] 的格式。",EMBED_TYPE_NAME:"“嵌入绘图到当前文档”系列命令的源文件类型",EMBED_TYPE_DESC:"在命令面板中执行“嵌入绘图到当前文档”系列命令时,要嵌入绘图文件本身,还是嵌入其 PNG 或 SVG 副本。
如果您想选择 PNG 或 SVG 副本,需要先开启下方的“自动导出 PNG 副本”或“自动导出 SVG 副本”开关。
如果您选择了 PNG 或 SVG 副本,当副本不存在时,该命令将会插入一条损坏的链接,您需要打开绘图文件并手动导出副本才能修复 —— 也就是说,该选项不会自动帮您生成 PNG/SVG 副本,而只会引用已有的 PNG/SVG 副本。",EMBED_WIKILINK_NAME:"“嵌入绘图到当前文档”命令产生的内部链接类型",EMBED_WIKILINK_DESC:"开启:将产生 ![[Wiki 链接]]关闭:将产生 ![](Markdown 链接)。",EXPORT_PNG_SCALE_NAME:"导出的 PNG 图像的比例",EXPORT_PNG_SCALE_DESC:"导出的 PNG 图像的大小比例",EXPORT_BACKGROUND_NAME:"导出的图像包含背景",EXPORT_BACKGROUND_DESC:"如果关闭,将导出透明背景的图像。",EXPORT_PADDING_NAME:"导出的图像的空白边距",EXPORT_PADDING_DESC:"导出的 SVG/PNG 图像四周的空白边距(单位:像素)。
增加该值,可以避免在导出图像时,靠近图像边缘的图形被裁掉。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-export-padding: 5 的键值对。",EXPORT_THEME_NAME:"导出的图像包含主题",EXPORT_THEME_DESC:"导出与绘图的黑暗/明亮主题匹配的图像。如果关闭,在黑暗主题下导出的图像将和明亮主题一样。",EXPORT_HEAD:"导出设置",EXPORT_SYNC_NAME:"保持 SVG/PNG 文件名与绘图文件同步",EXPORT_SYNC_DESC:"打开后,当绘图文件被重命名时,插件将同步更新同文件夹下的同名 .SVG 和 .PNG 文件。当绘图文件被删除时,插件将自动删除同文件夹下的同名 .SVG 和 .PNG 文件。",EXPORT_SVG_NAME:"自动导出 SVG 副本",EXPORT_SVG_DESC:"自动导出和绘图文件同名的 SVG 副本。插件会将副本保存到绘图文件所在的文件夹中。在文档中嵌入这个 SVG 文件,相比直接嵌入绘图文件,具有更强的跨平台能力。
此开关开启时,每次您编辑 Excalidraw 绘图,其 SVG 文件副本都会同步更新。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-autoexport: none/both/svg/png的键值对",EXPORT_PNG_NAME:"自动导出 PNG 副本",EXPORT_PNG_DESC:"和“自动导出 SVG 副本”类似,但是导出格式为 *.PNG。",EXPORT_BOTH_DARK_AND_LIGHT_NAME:"同时导出黑暗和明亮风格的图像",EXPORT_BOTH_DARK_AND_LIGHT_DESC:"若开启,Excalidraw 将导出两个文件:filename.dark.png(或 filename.dark.svg)和 filename.light.png(或 filename.light.svg)。
该选项可作用于“自动导出 SVG 副本”、“自动导出 PNG 副本”,以及其他的手动的导出命令。",COMPATIBILITY_HEAD:"兼容性设置",EXPORT_EXCALIDRAW_NAME:"自动导出 Excalidraw 旧格式副本",EXPORT_EXCALIDRAW_DESC:"和“自动导出 SVG 副本”类似,但是导出格式为 *.excalidraw。",SYNC_EXCALIDRAW_NAME:"新旧格式绘图文件的内容保持同步",SYNC_EXCALIDRAW_DESC:"如果旧格式(*.excalidraw)绘图文件的修改日期比新格式(*.md)更新,则根据旧格式文件的内容来更新新格式文件。",COMPATIBILITY_MODE_NAME:"以旧格式创建新绘图",COMPATIBILITY_MODE_DESC:"开启此功能后,您通过功能区按钮、命令面板、文件浏览器等创建的绘图都将是旧格式(*.excalidraw)。此外,您打开旧格式绘图文件时将不再收到提醒消息。",MATHJAX_NAME:"MathJax (LaTeX) 的 javascript 库服务器",MATHJAX_DESC:"如果您在绘图中使用 LaTeX,插件需要从服务器获取并加载一个 javascript 库。如果您的网络无法访问某些库服务器,可以尝试通过此选项更换库服务器。更改此选项后,您可能需要重启 Obsidian 来使其生效。",EXPERIMENTAL_HEAD:"实验性功能",EXPERIMENTAL_DESC:"以下部分设置不会立即生效,需要刷新文件资源管理器或者重启 Obsidian 才会生效。",FIELD_SUGGESTER_NAME:"开启字段建议",FIELD_SUGGESTER_DESC:"开启后,当您在编辑器中输入 excalidraw- 或者 ea. 时,会弹出一个带有函数说明的自动补全提示菜单。
该功能借鉴了 Breadcrumbs 和 Templater 插件。",FILETYPE_NAME:"在文件浏览器中为 excalidraw.md 文件添加类型标识符(如 ✏️)",FILETYPE_DESC:"可通过下一项设置来自定义类型标识符。",FILETAG_NAME:"excalidraw.md 文件的类型标识符",FILETAG_DESC:"要显示为类型标识符的 emoji 或文本。",INSERT_EMOJI:"插入 emoji",LIVEPREVIEW_NAME:"嵌入绘图到文档时,模拟嵌入图像的语法",LIVEPREVIEW_DESC:"开启此项,则可在 Obsidian 实时预览模式的编辑视图下,用形如 ![[绘图|宽度|样式]] 的语法来嵌入绘图。
该选项不会在已打开的文档中立刻生效 —— 你需要重新打开此文档来使其生效。",ENABLE_FOURTH_FONT_NAME:"为文本元素启用本地字体",ENABLE_FOURTH_FONT_DESC:"开启此项后,文本元素的属性面板里会多出一个本地字体按钮。
使用了本地字体的绘图文件,将会失去一部分跨平台能力 —— 若将绘图文件移动到其他库中打开,显示效果可能会截然不同;若在 excalidraw.com 或者其他版本的 Excalidraw 中打开,使用本地字体的文本会变回系统默认字体。",FOURTH_FONT_NAME:"本地字体文件",FOURTH_FONT_DESC:"选择库文件夹中的一个 .ttf, .woff 或 .woff2 字体文件作为本地字体文件。若未选择文件,则使用默认的 Virgil 字体。",SCRIPT_SETTINGS_HEAD:"已安装脚本的设置",SELECT_FILE:"选择一个文件后按回车。",NO_MATCH:"查询不到匹配的文件。",SELECT_FILE_TO_LINK:"选择要插入(链接)到当前绘图中的文件。",SELECT_DRAWING:"选择要插入(以图像形式嵌入)到当前绘图中的图像。",TYPE_FILENAME:"键入要选择的绘图名称。",SELECT_FILE_OR_TYPE_NEW:"选择已有绘图,或者新绘图的类型,然后按回车。",SELECT_TO_EMBED:"选择要插入(嵌入)到当前文档中的绘图。",SELECT_MD:"选择要插入(以图像形式嵌入)到当前绘图中的 Markdown 文档。",INFINITE_LOOP_WARNING:"EXCALIDRAW 警告\n停止加载嵌入的图像,因为此文件中存在死循环:\n",SCRIPT_EXECUTION_ERROR:"脚本运行错误。请在开发者控制台中查看错误信息。",LOAD_FROM_BACKUP:"Excalidraw 文件已损坏。尝试从备份文件中加载。",GOTO_FULLSCREEN:"进入全屏模式",EXIT_FULLSCREEN:"退出全屏模式",TOGGLE_FULLSCREEN:"切换全屏模式"},zhTW={};const localeMap={ar:ar,cs:cz,da:da,de:de,en:en,"en-gb":enGB,es:es,fr:fr,hi:hi,id:id,it:it,ja:ja,ko:ko,nl:nl,nn:no,pl:pl,pt:pt,"pt-br":ptBR,ro:ro,ru:ru,tr:tr,"zh-cn":zhCN,"zh-tw":zhTW},locale=localeMap[obsidian.moment.locale()];function t$d(A){return locale||errorlog({where:"helpers.t",message:"Error: Excalidraw locale not found",locale:obsidian.moment.locale()}),locale&&locale[A]||en[A]}var html2canvas$1={exports:{}}; /*! * html2canvas 1.4.0 * Copyright (c) 2022 Niklas von Hertzen @@ -19,6 +19,8 @@ const EXCALIDRAW_PACKAGES = "PQKhAIAEBsEsGMCmA7Azo8AlRBDeAXcANwEYB2AOgAYKAmAKHAg OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ -var A=function(e,t){return A=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(A,e){A.__proto__=e}||function(A,e){for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(A[t]=e[t])},A(e,t)};function e(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}A(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}var t=function(){return t=Object.assign||function(A){for(var e,t=1,i=arguments.length;t0&&n[n.length-1])||6!==a[0]&&2!==a[0])){r=0;continue}if(3===a[0]&&(!n||a[1]>n[0]&&a[1]=55296&&n<=56319&&t>10),r%1024+56320)),(n+1===t||i.length>16384)&&(a+=String.fromCharCode.apply(String,i),i.length=0)}return a},c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d="undefined"==typeof Uint8Array?[]:new Uint8Array(256),h=0;h=0){if(A<55296||A>56319&&A<=65535)return e=((e=this.index[A>>5])<<2)+(31&A),this.data[e];if(A<=65535)return e=((e=this.index[2048+(A-55296>>5)])<<2)+(31&A),this.data[e];if(A>11),e=this.index[e],e+=A>>5&63,e=((e=this.index[e])<<2)+(31&A),this.data[e];if(A<=1114111)return this.data[this.highValueIndex]}return this.errorValue},A}(),p=10,w=13,m=15,f=17,B=18,E=19,C=20,b=21,v=22,F=24,y=25,x=26,Q=27,U=28,I=30,S=32,T=33,L=34,M=35,k=37,H=38,D=39,O=40,N=42,R=[9001,65288],P="×",V="÷",K=function(A){var e,t,i,n=function(A){var e,t,i,n,a,r=.75*A.length,s=A.length,o=0;"="===A[A.length-1]&&(r--,"="===A[A.length-2]&&r--);var l="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(r):new Array(r),c=Array.isArray(l)?l:new Uint8Array(l);for(e=0;e>4,c[o++]=(15&i)<<4|n>>2,c[o++]=(3&n)<<6|63&a;return l}(A),a=Array.isArray(n)?function(A){for(var e=A.length,t=[],i=0;i0;){var r=i[--a];if(Array.isArray(A)?-1!==A.indexOf(r):A===r)for(var s=t;s<=i.length;){var o;if((o=i[++s])===e)return!0;if(o!==p)break}if(r!==p)break}return!1},q=function(A,e){for(var t=A;t>=0;){var i=e[t];if(i!==p)return i;t--}return 0},_=function(A,e,t,i,n){if(0===t[i])return P;var a=i-1;if(Array.isArray(n)&&!0===n[a])return P;var r=a-1,s=a+1,o=e[a],l=r>=0?e[r]:0,c=e[s];if(2===o&&3===c)return P;if(-1!==W.indexOf(o))return"!";if(-1!==W.indexOf(c))return P;if(-1!==X.indexOf(c))return P;if(8===q(a,e))return V;if(11===K.get(A[a]))return P;if((o===S||o===T)&&11===K.get(A[s]))return P;if(7===o||7===c)return P;if(9===o)return P;if(-1===[p,w,m].indexOf(o)&&9===c)return P;if(-1!==[f,B,E,F,U].indexOf(c))return P;if(q(a,e)===v)return P;if(Z(23,v,a,e))return P;if(Z([f,B],b,a,e))return P;if(Z(12,12,a,e))return P;if(o===p)return V;if(23===o||23===c)return P;if(16===c||16===o)return V;if(-1!==[w,m,b].indexOf(c)||14===o)return P;if(36===l&&-1!==J.indexOf(o))return P;if(o===U&&36===c)return P;if(c===C)return P;if(-1!==G.indexOf(c)&&o===y||-1!==G.indexOf(o)&&c===y)return P;if(o===Q&&-1!==[k,S,T].indexOf(c)||-1!==[k,S,T].indexOf(o)&&c===x)return P;if(-1!==G.indexOf(o)&&-1!==z.indexOf(c)||-1!==z.indexOf(o)&&-1!==G.indexOf(c))return P;if(-1!==[Q,x].indexOf(o)&&(c===y||-1!==[v,m].indexOf(c)&&e[s+1]===y)||-1!==[v,m].indexOf(o)&&c===y||o===y&&-1!==[y,U,F].indexOf(c))return P;if(-1!==[y,U,F,f,B].indexOf(c))for(var d=a;d>=0;){if((h=e[d])===y)return P;if(-1===[U,F].indexOf(h))break;d--}if(-1!==[Q,x].indexOf(c))for(d=-1!==[f,B].indexOf(o)?r:a;d>=0;){var h;if((h=e[d])===y)return P;if(-1===[U,F].indexOf(h))break;d--}if(H===o&&-1!==[H,D,L,M].indexOf(c)||-1!==[D,L].indexOf(o)&&-1!==[D,O].indexOf(c)||-1!==[O,M].indexOf(o)&&c===O)return P;if(-1!==j.indexOf(o)&&-1!==[C,x].indexOf(c)||-1!==j.indexOf(c)&&o===Q)return P;if(-1!==G.indexOf(o)&&-1!==G.indexOf(c))return P;if(o===F&&-1!==G.indexOf(c))return P;if(-1!==G.concat(y).indexOf(o)&&c===v&&-1===R.indexOf(A[s])||-1!==G.concat(y).indexOf(c)&&o===B)return P;if(41===o&&41===c){for(var g=t[a],u=1;g>0&&41===e[--g];)u++;if(u%2!=0)return P}return o===S&&c===T?P:V},$=function(A,e){e||(e={lineBreak:"normal",wordBreak:"normal"});var t=function(A,e){void 0===e&&(e="strict");var t=[],i=[],n=[];return A.forEach((function(A,a){var r=K.get(A);if(r>50?(n.push(!0),r-=50):n.push(!1),-1!==["normal","auto","loose"].indexOf(e)&&-1!==[8208,8211,12316,12448].indexOf(A))return i.push(a),t.push(16);if(4===r||11===r){if(0===a)return i.push(a),t.push(I);var s=t[a-1];return-1===Y.indexOf(s)?(i.push(i[a-1]),t.push(s)):(i.push(a),t.push(I))}return i.push(a),31===r?t.push("strict"===e?b:k):r===N||29===r?t.push(I):43===r?A>=131072&&A<=196605||A>=196608&&A<=262141?t.push(k):t.push(I):void t.push(r)})),[i,t,n]}(A,e.lineBreak),i=t[0],n=t[1],a=t[2];"break-all"!==e.wordBreak&&"break-word"!==e.wordBreak||(n=n.map((function(A){return-1!==[y,I,N].indexOf(A)?k:A})));var r="keep-all"===e.wordBreak?a.map((function(e,t){return e&&A[t]>=19968&&A[t]<=40959})):void 0;return[i,n,r]},AA=function(){function A(A,e,t,i){this.codePoints=A,this.required="!"===e,this.start=t,this.end=i}return A.prototype.slice=function(){return l.apply(void 0,this.codePoints.slice(this.start,this.end))},A}(),eA=45,tA=43,iA=-1,nA=function(A){return A>=48&&A<=57},aA=function(A){return nA(A)||A>=65&&A<=70||A>=97&&A<=102},rA=function(A){return 10===A||9===A||32===A},sA=function(A){return function(A){return function(A){return A>=97&&A<=122}(A)||function(A){return A>=65&&A<=90}(A)}(A)||function(A){return A>=128}(A)||95===A},oA=function(A){return sA(A)||nA(A)||A===eA},lA=function(A){return A>=0&&A<=8||11===A||A>=14&&A<=31||127===A},cA=function(A,e){return 92===A&&10!==e},dA=function(A,e,t){return A===eA?sA(e)||cA(e,t):!!sA(A)||!(92!==A||!cA(A,e))},hA=function(A,e,t){return A===tA||A===eA?!!nA(e)||46===e&&nA(t):nA(46===A?e:A)},gA=function(A){var e=0,t=1;A[e]!==tA&&A[e]!==eA||(A[e]===eA&&(t=-1),e++);for(var i=[];nA(A[e]);)i.push(A[e++]);var n=i.length?parseInt(l.apply(void 0,i),10):0;46===A[e]&&e++;for(var a=[];nA(A[e]);)a.push(A[e++]);var r=a.length,s=r?parseInt(l.apply(void 0,a),10):0;69!==A[e]&&101!==A[e]||e++;var o=1;A[e]!==tA&&A[e]!==eA||(A[e]===eA&&(o=-1),e++);for(var c=[];nA(A[e]);)c.push(A[e++]);var d=c.length?parseInt(l.apply(void 0,c),10):0;return t*(n+s*Math.pow(10,-r))*Math.pow(10,o*d)},uA={type:2},pA={type:3},wA={type:4},mA={type:13},fA={type:8},BA={type:21},EA={type:9},CA={type:10},bA={type:11},vA={type:12},FA={type:14},yA={type:23},xA={type:1},QA={type:25},UA={type:24},IA={type:26},SA={type:27},TA={type:28},LA={type:29},MA={type:31},kA={type:32},HA=function(){function A(){this._value=[]}return A.prototype.write=function(A){this._value=this._value.concat(o(A))},A.prototype.read=function(){for(var A=[],e=this.consumeToken();e!==kA;)A.push(e),e=this.consumeToken();return A},A.prototype.consumeToken=function(){var A=this.consumeCodePoint();switch(A){case 34:return this.consumeStringToken(34);case 35:var e=this.peekCodePoint(0),t=this.peekCodePoint(1),i=this.peekCodePoint(2);if(oA(e)||cA(t,i)){var n=dA(e,t,i)?2:1;return{type:5,value:this.consumeName(),flags:n}}break;case 36:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),mA;break;case 39:return this.consumeStringToken(39);case 40:return uA;case 41:return pA;case 42:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),FA;break;case tA:if(hA(A,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(A),this.consumeNumericToken();break;case 44:return wA;case eA:var a=A,r=this.peekCodePoint(0),s=this.peekCodePoint(1);if(hA(a,r,s))return this.reconsumeCodePoint(A),this.consumeNumericToken();if(dA(a,r,s))return this.reconsumeCodePoint(A),this.consumeIdentLikeToken();if(r===eA&&62===s)return this.consumeCodePoint(),this.consumeCodePoint(),UA;break;case 46:if(hA(A,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(A),this.consumeNumericToken();break;case 47:if(42===this.peekCodePoint(0))for(this.consumeCodePoint();;){var o=this.consumeCodePoint();if(42===o&&47===(o=this.consumeCodePoint()))return this.consumeToken();if(o===iA)return this.consumeToken()}break;case 58:return IA;case 59:return SA;case 60:if(33===this.peekCodePoint(0)&&this.peekCodePoint(1)===eA&&this.peekCodePoint(2)===eA)return this.consumeCodePoint(),this.consumeCodePoint(),QA;break;case 64:var c=this.peekCodePoint(0),d=this.peekCodePoint(1),h=this.peekCodePoint(2);if(dA(c,d,h))return{type:7,value:this.consumeName()};break;case 91:return TA;case 92:if(cA(A,this.peekCodePoint(0)))return this.reconsumeCodePoint(A),this.consumeIdentLikeToken();break;case 93:return LA;case 61:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),fA;break;case 123:return bA;case 125:return vA;case 117:case 85:var g=this.peekCodePoint(0),u=this.peekCodePoint(1);return g!==tA||!aA(u)&&63!==u||(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(A),this.consumeIdentLikeToken();case 124:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),EA;if(124===this.peekCodePoint(0))return this.consumeCodePoint(),BA;break;case 126:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),CA;break;case iA:return kA}return rA(A)?(this.consumeWhiteSpace(),MA):nA(A)?(this.reconsumeCodePoint(A),this.consumeNumericToken()):sA(A)?(this.reconsumeCodePoint(A),this.consumeIdentLikeToken()):{type:6,value:l(A)}},A.prototype.consumeCodePoint=function(){var A=this._value.shift();return void 0===A?-1:A},A.prototype.reconsumeCodePoint=function(A){this._value.unshift(A)},A.prototype.peekCodePoint=function(A){return A>=this._value.length?-1:this._value[A]},A.prototype.consumeUnicodeRangeToken=function(){for(var A=[],e=this.consumeCodePoint();aA(e)&&A.length<6;)A.push(e),e=this.consumeCodePoint();for(var t=!1;63===e&&A.length<6;)A.push(e),e=this.consumeCodePoint(),t=!0;if(t)return{type:30,start:parseInt(l.apply(void 0,A.map((function(A){return 63===A?48:A}))),16),end:parseInt(l.apply(void 0,A.map((function(A){return 63===A?70:A}))),16)};var i=parseInt(l.apply(void 0,A),16);if(this.peekCodePoint(0)===eA&&aA(this.peekCodePoint(1))){this.consumeCodePoint(),e=this.consumeCodePoint();for(var n=[];aA(e)&&n.length<6;)n.push(e),e=this.consumeCodePoint();return{type:30,start:i,end:parseInt(l.apply(void 0,n),16)}}return{type:30,start:i,end:i}},A.prototype.consumeIdentLikeToken=function(){var A=this.consumeName();return"url"===A.toLowerCase()&&40===this.peekCodePoint(0)?(this.consumeCodePoint(),this.consumeUrlToken()):40===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:19,value:A}):{type:20,value:A}},A.prototype.consumeUrlToken=function(){var A=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===iA)return{type:22,value:""};var e=this.peekCodePoint(0);if(39===e||34===e){var t=this.consumeStringToken(this.consumeCodePoint());return 0===t.type&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===iA||41===this.peekCodePoint(0))?(this.consumeCodePoint(),{type:22,value:t.value}):(this.consumeBadUrlRemnants(),yA)}for(;;){var i=this.consumeCodePoint();if(i===iA||41===i)return{type:22,value:l.apply(void 0,A)};if(rA(i))return this.consumeWhiteSpace(),this.peekCodePoint(0)===iA||41===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:22,value:l.apply(void 0,A)}):(this.consumeBadUrlRemnants(),yA);if(34===i||39===i||40===i||lA(i))return this.consumeBadUrlRemnants(),yA;if(92===i){if(!cA(i,this.peekCodePoint(0)))return this.consumeBadUrlRemnants(),yA;A.push(this.consumeEscapedCodePoint())}else A.push(i)}},A.prototype.consumeWhiteSpace=function(){for(;rA(this.peekCodePoint(0));)this.consumeCodePoint()},A.prototype.consumeBadUrlRemnants=function(){for(;;){var A=this.consumeCodePoint();if(41===A||A===iA)return;cA(A,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},A.prototype.consumeStringSlice=function(A){for(var e="";A>0;){var t=Math.min(5e4,A);e+=l.apply(void 0,this._value.splice(0,t)),A-=t}return this._value.shift(),e},A.prototype.consumeStringToken=function(A){for(var e="",t=0;;){var i=this._value[t];if(i===iA||void 0===i||i===A)return{type:0,value:e+=this.consumeStringSlice(t)};if(10===i)return this._value.splice(0,t),xA;if(92===i){var n=this._value[t+1];n!==iA&&void 0!==n&&(10===n?(e+=this.consumeStringSlice(t),t=-1,this._value.shift()):cA(i,n)&&(e+=this.consumeStringSlice(t),e+=l(this.consumeEscapedCodePoint()),t=-1))}t++}},A.prototype.consumeNumber=function(){var A=[],e=4,t=this.peekCodePoint(0);for(t!==tA&&t!==eA||A.push(this.consumeCodePoint());nA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());t=this.peekCodePoint(0);var i=this.peekCodePoint(1);if(46===t&&nA(i))for(A.push(this.consumeCodePoint(),this.consumeCodePoint()),e=8;nA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());t=this.peekCodePoint(0),i=this.peekCodePoint(1);var n=this.peekCodePoint(2);if((69===t||101===t)&&((i===tA||i===eA)&&nA(n)||nA(i)))for(A.push(this.consumeCodePoint(),this.consumeCodePoint()),e=8;nA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());return[gA(A),e]},A.prototype.consumeNumericToken=function(){var A=this.consumeNumber(),e=A[0],t=A[1],i=this.peekCodePoint(0),n=this.peekCodePoint(1),a=this.peekCodePoint(2);return dA(i,n,a)?{type:15,number:e,flags:t,unit:this.consumeName()}:37===i?(this.consumeCodePoint(),{type:16,number:e,flags:t}):{type:17,number:e,flags:t}},A.prototype.consumeEscapedCodePoint=function(){var A=this.consumeCodePoint();if(aA(A)){for(var e=l(A);aA(this.peekCodePoint(0))&&e.length<6;)e+=l(this.consumeCodePoint());rA(this.peekCodePoint(0))&&this.consumeCodePoint();var t=parseInt(e,16);return 0===t||function(A){return A>=55296&&A<=57343}(t)||t>1114111?65533:t}return A===iA?65533:A},A.prototype.consumeName=function(){for(var A="";;){var e=this.consumeCodePoint();if(oA(e))A+=l(e);else{if(!cA(e,this.peekCodePoint(0)))return this.reconsumeCodePoint(e),A;A+=l(this.consumeEscapedCodePoint())}}},A}(),DA=function(){function A(A){this._tokens=A}return A.create=function(e){var t=new HA;return t.write(e),new A(t.read())},A.parseValue=function(e){return A.create(e).parseComponentValue()},A.parseValues=function(e){return A.create(e).parseComponentValues()},A.prototype.parseComponentValue=function(){for(var A=this.consumeToken();31===A.type;)A=this.consumeToken();if(32===A.type)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(A);var e=this.consumeComponentValue();do{A=this.consumeToken()}while(31===A.type);if(32===A.type)return e;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},A.prototype.parseComponentValues=function(){for(var A=[];;){var e=this.consumeComponentValue();if(32===e.type)return A;A.push(e),A.push()}},A.prototype.consumeComponentValue=function(){var A=this.consumeToken();switch(A.type){case 11:case 28:case 2:return this.consumeSimpleBlock(A.type);case 19:return this.consumeFunction(A)}return A},A.prototype.consumeSimpleBlock=function(A){for(var e={type:A,values:[]},t=this.consumeToken();;){if(32===t.type||XA(t,A))return e;this.reconsumeToken(t),e.values.push(this.consumeComponentValue()),t=this.consumeToken()}},A.prototype.consumeFunction=function(A){for(var e={name:A.value,values:[],type:18};;){var t=this.consumeToken();if(32===t.type||3===t.type)return e;this.reconsumeToken(t),e.values.push(this.consumeComponentValue())}},A.prototype.consumeToken=function(){var A=this._tokens.shift();return void 0===A?kA:A},A.prototype.reconsumeToken=function(A){this._tokens.unshift(A)},A}(),OA=function(A){return 15===A.type},NA=function(A){return 17===A.type},RA=function(A){return 20===A.type},PA=function(A){return 0===A.type},VA=function(A,e){return RA(A)&&A.value===e},KA=function(A){return 31!==A.type},GA=function(A){return 31!==A.type&&4!==A.type},WA=function(A){var e=[],t=[];return A.forEach((function(A){if(4===A.type){if(0===t.length)throw new Error("Error parsing function args, zero tokens for arg");return e.push(t),void(t=[])}31!==A.type&&t.push(A)})),t.length&&e.push(t),e},XA=function(A,e){return 11===e&&12===A.type||28===e&&29===A.type||2===e&&3===A.type},zA=function(A){return 17===A.type||15===A.type},YA=function(A){return 16===A.type||zA(A)},jA=function(A){return A.length>1?[A[0],A[1]]:[A[0]]},JA={type:17,number:0,flags:4},ZA={type:16,number:50,flags:4},qA={type:16,number:100,flags:4},_A=function(A,e,t){var i=A[0],n=A[1];return[$A(i,e),$A(void 0!==n?n:i,t)]},$A=function(A,e){if(16===A.type)return A.number/100*e;if(OA(A))switch(A.unit){case"rem":case"em":return 16*A.number;default:return A.number}return A.number},Ae="grad",ee="turn",te=function(A,e){if(15===e.type)switch(e.unit){case"deg":return Math.PI*e.number/180;case Ae:return Math.PI/200*e.number;case"rad":return e.number;case ee:return 2*Math.PI*e.number}throw new Error("Unsupported angle type")},ie=function(A){return 15===A.type&&("deg"===A.unit||A.unit===Ae||"rad"===A.unit||A.unit===ee)},ne=function(A){switch(A.filter(RA).map((function(A){return A.value})).join(" ")){case"to bottom right":case"to right bottom":case"left top":case"top left":return[JA,JA];case"to top":case"bottom":return ae(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[JA,qA];case"to right":case"left":return ae(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[qA,qA];case"to bottom":case"top":return ae(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[qA,JA];case"to left":case"right":return ae(270)}return 0},ae=function(A){return Math.PI*A/180},re=function(A,e){if(18===e.type){var t=ue[e.name];if(void 0===t)throw new Error('Attempting to parse an unsupported color function "'+e.name+'"');return t(A,e.values)}if(5===e.type){if(3===e.value.length){var i=e.value.substring(0,1),n=e.value.substring(1,2),a=e.value.substring(2,3);return le(parseInt(i+i,16),parseInt(n+n,16),parseInt(a+a,16),1)}if(4===e.value.length){i=e.value.substring(0,1),n=e.value.substring(1,2),a=e.value.substring(2,3);var r=e.value.substring(3,4);return le(parseInt(i+i,16),parseInt(n+n,16),parseInt(a+a,16),parseInt(r+r,16)/255)}if(6===e.value.length)return i=e.value.substring(0,2),n=e.value.substring(2,4),a=e.value.substring(4,6),le(parseInt(i,16),parseInt(n,16),parseInt(a,16),1);if(8===e.value.length)return i=e.value.substring(0,2),n=e.value.substring(2,4),a=e.value.substring(4,6),r=e.value.substring(6,8),le(parseInt(i,16),parseInt(n,16),parseInt(a,16),parseInt(r,16)/255)}if(20===e.type){var s=we[e.value.toUpperCase()];if(void 0!==s)return s}return we.TRANSPARENT},se=function(A){return 0==(255&A)},oe=function(A){var e=255&A,t=255&A>>8,i=255&A>>16,n=255&A>>24;return e<255?"rgba("+n+","+i+","+t+","+e/255+")":"rgb("+n+","+i+","+t+")"},le=function(A,e,t,i){return(A<<24|e<<16|t<<8|Math.round(255*i)<<0)>>>0},ce=function(A,e){if(17===A.type)return A.number;if(16===A.type){var t=3===e?1:255;return 3===e?A.number/100*t:Math.round(A.number/100*t)}return 0},de=function(A,e){var t=e.filter(GA);if(3===t.length){var i=t.map(ce),n=i[0],a=i[1],r=i[2];return le(n,a,r,1)}if(4===t.length){var s=t.map(ce),o=(n=s[0],a=s[1],r=s[2],s[3]);return le(n,a,r,o)}return 0};function he(A,e,t){return t<0&&(t+=1),t>=1&&(t-=1),t<1/6?(e-A)*t*6+A:t<.5?e:t<2/3?6*(e-A)*(2/3-t)+A:A}var ge=function(A,e){var t=e.filter(GA),i=t[0],n=t[1],a=t[2],r=t[3],s=(17===i.type?ae(i.number):te(A,i))/(2*Math.PI),o=YA(n)?n.number/100:0,l=YA(a)?a.number/100:0,c=void 0!==r&&YA(r)?$A(r,1):1;if(0===o)return le(255*l,255*l,255*l,1);var d=l<=.5?l*(o+1):l+o-l*o,h=2*l-d,g=he(h,d,s+1/3),u=he(h,d,s),p=he(h,d,s-1/3);return le(255*g,255*u,255*p,c)},ue={hsl:ge,hsla:ge,rgb:de,rgba:de},pe=function(A,e){return re(A,DA.create(e).parseComponentValue())},we={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},me={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(A,e){return e.map((function(A){if(RA(A))switch(A.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},fe={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Be=function(A,e){var t=re(A,e[0]),i=e[1];return i&&YA(i)?{color:t,stop:i}:{color:t,stop:null}},Ee=function(A,e){var t=A[0],i=A[A.length-1];null===t.stop&&(t.stop=JA),null===i.stop&&(i.stop=qA);for(var n=[],a=0,r=0;ra?n.push(o):n.push(a),a=o}else n.push(null)}var l=null;for(r=0;rA.optimumDistance)?{optimumCorner:e,optimumDistance:s}:A}),{optimumDistance:n?1/0:-1/0,optimumCorner:null}).optimumCorner},Fe=function(A,e){var t=ae(180),i=[];return WA(e).forEach((function(e,n){if(0===n){var a=e[0];if(20===a.type&&-1!==["top","left","right","bottom"].indexOf(a.value))return void(t=ne(e));if(ie(a))return void(t=(te(A,a)+ae(270))%ae(360))}var r=Be(A,e);i.push(r)})),{angle:t,stops:i,type:1}},ye="closest-side",xe="farthest-side",Qe="closest-corner",Ue="farthest-corner",Ie="circle",Se="ellipse",Te="cover",Le="contain",Me=function(A,e){var t=0,i=3,n=[],a=[];return WA(e).forEach((function(e,r){var s=!0;if(0===r?s=e.reduce((function(A,e){if(RA(e))switch(e.value){case"center":return a.push(ZA),!1;case"top":case"left":return a.push(JA),!1;case"right":case"bottom":return a.push(qA),!1}else if(YA(e)||zA(e))return a.push(e),!1;return A}),s):1===r&&(s=e.reduce((function(A,e){if(RA(e))switch(e.value){case Ie:return t=0,!1;case Se:return t=1,!1;case Le:case ye:return i=0,!1;case xe:return i=1,!1;case Qe:return i=2,!1;case Te:case Ue:return i=3,!1}else if(zA(e)||YA(e))return Array.isArray(i)||(i=[]),i.push(e),!1;return A}),s)),s){var o=Be(A,e);n.push(o)}})),{size:i,shape:t,stops:n,position:a,type:2}},ke=function(A,e){if(22===e.type){var t={url:e.value,type:0};return A.cache.addImage(e.value),t}if(18===e.type){var i=De[e.name];if(void 0===i)throw new Error('Attempting to parse an unsupported image function "'+e.name+'"');return i(A,e.values)}throw new Error("Unsupported image type "+e.type)};var He,De={"linear-gradient":function(A,e){var t=ae(180),i=[];return WA(e).forEach((function(e,n){if(0===n){var a=e[0];if(20===a.type&&"to"===a.value)return void(t=ne(e));if(ie(a))return void(t=te(A,a))}var r=Be(A,e);i.push(r)})),{angle:t,stops:i,type:1}},"-moz-linear-gradient":Fe,"-ms-linear-gradient":Fe,"-o-linear-gradient":Fe,"-webkit-linear-gradient":Fe,"radial-gradient":function(A,e){var t=0,i=3,n=[],a=[];return WA(e).forEach((function(e,r){var s=!0;if(0===r){var o=!1;s=e.reduce((function(A,e){if(o)if(RA(e))switch(e.value){case"center":return a.push(ZA),A;case"top":case"left":return a.push(JA),A;case"right":case"bottom":return a.push(qA),A}else(YA(e)||zA(e))&&a.push(e);else if(RA(e))switch(e.value){case Ie:return t=0,!1;case Se:return t=1,!1;case"at":return o=!0,!1;case ye:return i=0,!1;case Te:case xe:return i=1,!1;case Le:case Qe:return i=2,!1;case Ue:return i=3,!1}else if(zA(e)||YA(e))return Array.isArray(i)||(i=[]),i.push(e),!1;return A}),s)}if(s){var l=Be(A,e);n.push(l)}})),{size:i,shape:t,stops:n,position:a,type:2}},"-moz-radial-gradient":Me,"-ms-radial-gradient":Me,"-o-radial-gradient":Me,"-webkit-radial-gradient":Me,"-webkit-gradient":function(A,e){var t=ae(180),i=[],n=1;return WA(e).forEach((function(e,t){var a=e[0];if(0===t){if(RA(a)&&"linear"===a.value)return void(n=1);if(RA(a)&&"radial"===a.value)return void(n=2)}if(18===a.type)if("from"===a.name){var r=re(A,a.values[0]);i.push({stop:JA,color:r})}else if("to"===a.name)r=re(A,a.values[0]),i.push({stop:qA,color:r});else if("color-stop"===a.name){var s=a.values.filter(GA);if(2===s.length){r=re(A,s[1]);var o=s[0];NA(o)&&i.push({stop:{type:16,number:100*o.number,flags:o.flags},color:r})}}})),1===n?{angle:(t+ae(180))%ae(360),stops:i,type:n}:{size:3,shape:0,stops:i,position:[],type:n}}},Oe={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(A,e){if(0===e.length)return[];var t=e[0];return 20===t.type&&"none"===t.value?[]:e.filter((function(A){return GA(A)&&function(A){return!(20===A.type&&"none"===A.value||18===A.type&&!De[A.name])}(A)})).map((function(e){return ke(A,e)}))}},Ne={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(A,e){return e.map((function(A){if(RA(A))switch(A.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},Re={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(A,e){return WA(e).map((function(A){return A.filter(YA)})).map(jA)}},Pe={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(A,e){return WA(e).map((function(A){return A.filter(RA).map((function(A){return A.value})).join(" ")})).map(Ve)}},Ve=function(A){switch(A){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;default:return 0}};!function(A){A.AUTO="auto",A.CONTAIN="contain",A.COVER="cover"}(He||(He={}));var Ke,Ge={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(A,e){return WA(e).map((function(A){return A.filter(We)}))}},We=function(A){return RA(A)||YA(A)},Xe=function(A){return{name:"border-"+A+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},ze=Xe("top"),Ye=Xe("right"),je=Xe("bottom"),Je=Xe("left"),Ze=function(A){return{name:"border-radius-"+A,initialValue:"0 0",prefix:!1,type:1,parse:function(A,e){return jA(e.filter(YA))}}},qe=Ze("top-left"),_e=Ze("top-right"),$e=Ze("bottom-right"),At=Ze("bottom-left"),et=function(A){return{name:"border-"+A+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(A,e){switch(e){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},tt=et("top"),it=et("right"),nt=et("bottom"),at=et("left"),rt=function(A){return{name:"border-"+A+"-width",initialValue:"0",type:0,prefix:!1,parse:function(A,e){return OA(e)?e.number:0}}},st=rt("top"),ot=rt("right"),lt=rt("bottom"),ct=rt("left"),dt={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},ht={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(A,e){return"rtl"===e?1:0}},gt={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(A,e){return e.filter(RA).reduce((function(A,e){return A|ut(e.value)}),0)}},ut=function(A){switch(A){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},pt={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(A,e){switch(e){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},wt={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(A,e){return 20===e.type&&"normal"===e.value?0:17===e.type||15===e.type?e.number:0}};!function(A){A.NORMAL="normal",A.STRICT="strict"}(Ke||(Ke={}));var mt,ft={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(A,e){return"strict"===e?Ke.STRICT:Ke.NORMAL}},Bt={name:"line-height",initialValue:"normal",prefix:!1,type:4},Et=function(A,e){return RA(A)&&"normal"===A.value?1.2*e:17===A.type?e*A.number:YA(A)?$A(A,e):e},Ct={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(A,e){return 20===e.type&&"none"===e.value?null:ke(A,e)}},bt={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(A,e){return"inside"===e?0:1}},vt={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(A,e){switch(e){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;default:return-1}}},Ft=function(A){return{name:"margin-"+A,initialValue:"0",prefix:!1,type:4}},yt=Ft("top"),xt=Ft("right"),Qt=Ft("bottom"),Ut=Ft("left"),It={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(A,e){return e.filter(RA).map((function(A){switch(A.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;default:return 0}}))}},St={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(A,e){return"break-word"===e?"break-word":"normal"}},Tt=function(A){return{name:"padding-"+A,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},Lt=Tt("top"),Mt=Tt("right"),kt=Tt("bottom"),Ht=Tt("left"),Dt={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(A,e){switch(e){case"right":return 2;case"center":case"justify":return 1;default:return 0}}},Ot={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(A,e){switch(e){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},Nt={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(A,e){return 1===e.length&&VA(e[0],"none")?[]:WA(e).map((function(e){for(var t={color:we.TRANSPARENT,offsetX:JA,offsetY:JA,blur:JA},i=0,n=0;n1?1:0],this.overflowWrap=mi(A,St,e.overflowWrap),this.paddingTop=mi(A,Lt,e.paddingTop),this.paddingRight=mi(A,Mt,e.paddingRight),this.paddingBottom=mi(A,kt,e.paddingBottom),this.paddingLeft=mi(A,Ht,e.paddingLeft),this.paintOrder=mi(A,di,e.paintOrder),this.position=mi(A,Ot,e.position),this.textAlign=mi(A,Dt,e.textAlign),this.textDecorationColor=mi(A,Zt,null!==(t=e.textDecorationColor)&&void 0!==t?t:e.color),this.textDecorationLine=mi(A,qt,null!==(i=e.textDecorationLine)&&void 0!==i?i:e.textDecoration),this.textShadow=mi(A,Nt,e.textShadow),this.textTransform=mi(A,Rt,e.textTransform),this.transform=mi(A,Pt,e.transform),this.transformOrigin=mi(A,Wt,e.transformOrigin),this.visibility=mi(A,Xt,e.visibility),this.webkitTextStrokeColor=mi(A,hi,e.webkitTextStrokeColor),this.webkitTextStrokeWidth=mi(A,gi,e.webkitTextStrokeWidth),this.wordBreak=mi(A,zt,e.wordBreak),this.zIndex=mi(A,Yt,e.zIndex)}return A.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&0===this.visibility},A.prototype.isTransparent=function(){return se(this.backgroundColor)},A.prototype.isTransformed=function(){return null!==this.transform},A.prototype.isPositioned=function(){return 0!==this.position},A.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},A.prototype.isFloating=function(){return 0!==this.float},A.prototype.isInlineLevel=function(){return ii(this.display,4)||ii(this.display,33554432)||ii(this.display,268435456)||ii(this.display,536870912)||ii(this.display,67108864)||ii(this.display,134217728)},A}(),pi=function(A,e){this.content=mi(A,ni,e.content),this.quotes=mi(A,oi,e.quotes)},wi=function(A,e){this.counterIncrement=mi(A,ai,e.counterIncrement),this.counterReset=mi(A,ri,e.counterReset)},mi=function(A,e,t){var i=new HA,n=null!=t?t.toString():e.initialValue;i.write(n);var a=new DA(i.read());switch(e.type){case 2:var r=a.parseComponentValue();return e.parse(A,RA(r)?r.value:e.initialValue);case 0:return e.parse(A,a.parseComponentValue());case 1:return e.parse(A,a.parseComponentValues());case 4:return a.parseComponentValue();case 3:switch(e.format){case"angle":return te(A,a.parseComponentValue());case"color":return re(A,a.parseComponentValue());case"image":return ke(A,a.parseComponentValue());case"length":var s=a.parseComponentValue();return zA(s)?s:JA;case"length-percentage":var o=a.parseComponentValue();return YA(o)?o:JA;case"time":return jt.parse(A,a.parseComponentValue())}}},fi=function(A,e){var t=function(A){switch(A.getAttribute("data-html2canvas-debug")){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}}(A);return 1===t||e===t},Bi=function(A,e){this.context=A,this.textNodes=[],this.elements=[],this.flags=0,fi(e,3),this.styles=new ui(A,window.getComputedStyle(e,null)),Fn(e)&&(this.styles.animationDuration.some((function(A){return A>0}))&&(e.style.animationDuration="0s"),null!==this.styles.transform&&(e.style.transform="none")),this.bounds=s(this.context,e),fi(e,4)&&(this.flags|=16)},Ei="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ci="undefined"==typeof Uint8Array?[]:new Uint8Array(256),bi=0;bi=0){if(A<55296||A>56319&&A<=65535)return e=((e=this.index[A>>5])<<2)+(31&A),this.data[e];if(A<=65535)return e=((e=this.index[2048+(A-55296>>5)])<<2)+(31&A),this.data[e];if(A>11),e=this.index[e],e+=A>>5&63,e=((e=this.index[e])<<2)+(31&A),this.data[e];if(A<=1114111)return this.data[this.highValueIndex]}return this.errorValue},A}(),yi="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",xi="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Qi=0;Qi>10),r%1024+56320)),(n+1===t||i.length>16384)&&(a+=String.fromCharCode.apply(String,i),i.length=0)}return a},ki=function(A,e){var t,i,n,a=function(A){var e,t,i,n,a,r=.75*A.length,s=A.length,o=0;"="===A[A.length-1]&&(r--,"="===A[A.length-2]&&r--);var l="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(r):new Array(r),c=Array.isArray(l)?l:new Uint8Array(l);for(e=0;e>4,c[o++]=(15&i)<<4|n>>2,c[o++]=(3&n)<<6|63&a;return l}(A),r=Array.isArray(a)?function(A){for(var e=A.length,t=[],i=0;i=55296&&n<=56319&&t=t)return{done:!0,value:null};for(var A=Hi;ir.x||n.y>r.y;return r=n,0===e||s}));return A.body.removeChild(e),s}(document);return Object.defineProperty(Ki,"SUPPORT_WORD_BREAKING",{value:A}),A},get SUPPORT_SVG_DRAWING(){var A=function(A){var e=new Image,t=A.createElement("canvas"),i=t.getContext("2d");if(!i)return!1;e.src="data:image/svg+xml,";try{i.drawImage(e,0,0),t.toDataURL()}catch(A){return!1}return!0}(document);return Object.defineProperty(Ki,"SUPPORT_SVG_DRAWING",{value:A}),A},get SUPPORT_FOREIGNOBJECT_DRAWING(){var A="function"==typeof Array.from&&"function"==typeof window.fetch?function(A){var e=A.createElement("canvas"),t=100;e.width=t,e.height=t;var i=e.getContext("2d");if(!i)return Promise.reject(!1);i.fillStyle="rgb(0, 255, 0)",i.fillRect(0,0,t,t);var n=new Image,a=e.toDataURL();n.src=a;var r=Pi(t,t,0,0,n);return i.fillStyle="red",i.fillRect(0,0,t,t),Vi(r).then((function(e){i.drawImage(e,0,0);var n=i.getImageData(0,0,t,t).data;i.fillStyle="red",i.fillRect(0,0,t,t);var r=A.createElement("div");return r.style.backgroundImage="url("+a+")",r.style.height="100px",Ri(n)?Vi(Pi(t,t,0,0,r)):Promise.reject(!1)})).then((function(A){return i.drawImage(A,0,0),Ri(i.getImageData(0,0,t,t).data)})).catch((function(){return!1}))}(document):Promise.resolve(!1);return Object.defineProperty(Ki,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:A}),A},get SUPPORT_CORS_IMAGES(){var A=void 0!==(new Image).crossOrigin;return Object.defineProperty(Ki,"SUPPORT_CORS_IMAGES",{value:A}),A},get SUPPORT_RESPONSE_TYPE(){var A="string"==typeof(new XMLHttpRequest).responseType;return Object.defineProperty(Ki,"SUPPORT_RESPONSE_TYPE",{value:A}),A},get SUPPORT_CORS_XHR(){var A="withCredentials"in new XMLHttpRequest;return Object.defineProperty(Ki,"SUPPORT_CORS_XHR",{value:A}),A},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var A=!("undefined"==typeof Intl||!Intl.Segmenter);return Object.defineProperty(Ki,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:A}),A}},Gi=function(A,e){this.text=A,this.bounds=e},Wi=function(A,e){var t=e.ownerDocument;if(t){var i=t.createElement("html2canvaswrapper");i.appendChild(e.cloneNode(!0));var n=e.parentNode;if(n){n.replaceChild(i,e);var a=s(A,i);return i.firstChild&&n.replaceChild(i.firstChild,i),a}}return r.EMPTY},Xi=function(A,e,t){var i=A.ownerDocument;if(!i)throw new Error("Node has no owner document");var n=i.createRange();return n.setStart(A,e),n.setEnd(A,e+t),n},zi=function(A){if(Ki.SUPPORT_NATIVE_TEXT_SEGMENTATION){var e=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(e.segment(A)).map((function(A){return A.segment}))}return function(A){for(var e,t=Ni(A),i=[];!(e=t.next()).done;)e.value&&i.push(e.value.slice());return i}(A)},Yi=function(A,e){return 0!==e.letterSpacing?zi(A):function(A,e){if(Ki.SUPPORT_NATIVE_TEXT_SEGMENTATION){var t=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(t.segment(A)).map((function(A){return A.segment}))}return Ji(A,e)}(A,e)},ji=[32,160,4961,65792,65793,4153,4241],Ji=function(A,e){for(var t,i=function(A,e){var t=o(A),i=$(t,e),n=i[0],a=i[1],r=i[2],s=t.length,l=0,c=0;return{next:function(){if(c>=s)return{done:!0,value:null};for(var A=P;c0)if(Ki.SUPPORT_RANGE_BOUNDS){var n=Xi(i,s,e.length).getClientRects();if(n.length>1){var o=zi(e),l=0;o.forEach((function(e){a.push(new Gi(e,r.fromDOMRectList(A,Xi(i,l+s,e.length).getClientRects()))),l+=e.length}))}else a.push(new Gi(e,r.fromDOMRectList(A,n)))}else{var c=i.splitText(e.length);a.push(new Gi(e,Wi(A,i))),i=c}else Ki.SUPPORT_RANGE_BOUNDS||(i=i.splitText(e.length));s+=e.length})),a}(A,this.text,t,e)},qi=function(A,e){switch(e){case 1:return A.toLowerCase();case 3:return A.replace(_i,$i);case 2:return A.toUpperCase();default:return A}},_i=/(^|\s|:|-|\(|\))([a-z])/g,$i=function(A,e,t){return A.length>0?e+t.toUpperCase():A},An=function(A){function t(e,t){var i=A.call(this,e,t)||this;return i.src=t.currentSrc||t.src,i.intrinsicWidth=t.naturalWidth,i.intrinsicHeight=t.naturalHeight,i.context.cache.addImage(i.src),i}return e(t,A),t}(Bi),en=function(A){function t(e,t){var i=A.call(this,e,t)||this;return i.canvas=t,i.intrinsicWidth=t.width,i.intrinsicHeight=t.height,i}return e(t,A),t}(Bi),tn=function(A){function t(e,t){var i=A.call(this,e,t)||this,n=new XMLSerializer,a=s(e,t);return t.setAttribute("width",a.width+"px"),t.setAttribute("height",a.height+"px"),i.svg="data:image/svg+xml,"+encodeURIComponent(n.serializeToString(t)),i.intrinsicWidth=t.width.baseVal.value,i.intrinsicHeight=t.height.baseVal.value,i.context.cache.addImage(i.svg),i}return e(t,A),t}(Bi),nn=function(A){function t(e,t){var i=A.call(this,e,t)||this;return i.value=t.value,i}return e(t,A),t}(Bi),an=function(A){function t(e,t){var i=A.call(this,e,t)||this;return i.start=t.start,i.reversed="boolean"==typeof t.reversed&&!0===t.reversed,i}return e(t,A),t}(Bi),rn=[{type:15,flags:0,unit:"px",number:3}],sn=[{type:16,flags:0,number:50}],on="checkbox",ln="radio",cn="password",dn=707406591,hn=function(A){function t(e,t){var i,n,a,s=A.call(this,e,t)||this;switch(s.type=t.type.toLowerCase(),s.checked=t.checked,s.value=0===(a=(n=t).type===cn?new Array(n.value.length+1).join("•"):n.value).length?n.placeholder||"":a,s.type!==on&&s.type!==ln||(s.styles.backgroundColor=3739148031,s.styles.borderTopColor=s.styles.borderRightColor=s.styles.borderBottomColor=s.styles.borderLeftColor=2779096575,s.styles.borderTopWidth=s.styles.borderRightWidth=s.styles.borderBottomWidth=s.styles.borderLeftWidth=1,s.styles.borderTopStyle=s.styles.borderRightStyle=s.styles.borderBottomStyle=s.styles.borderLeftStyle=1,s.styles.backgroundClip=[0],s.styles.backgroundOrigin=[0],s.bounds=(i=s.bounds).width>i.height?new r(i.left+(i.width-i.height)/2,i.top,i.height,i.height):i.width0)t.textNodes.push(new Zi(A,n,t.styles));else if(vn(n))if(On(n)&&n.assignedNodes)n.assignedNodes().forEach((function(e){return mn(A,e,t,i)}));else{var r=fn(A,n);r.styles.isVisible()&&(En(n,r,i)?r.flags|=4:Cn(r.styles)&&(r.flags|=2),-1!==wn.indexOf(n.tagName)&&(r.flags|=8),t.elements.push(r),n.slot,n.shadowRoot?mn(A,n.shadowRoot,r,i):Hn(n)||In(n)||Dn(n)||mn(A,n,r,i))}},fn=function(A,e){return Ln(e)?new An(A,e):Tn(e)?new en(A,e):In(e)?new tn(A,e):xn(e)?new nn(A,e):Qn(e)?new an(A,e):Un(e)?new hn(A,e):Dn(e)?new gn(A,e):Hn(e)?new un(A,e):Mn(e)?new pn(A,e):new Bi(A,e)},Bn=function(A,e){var t=fn(A,e);return t.flags|=4,mn(A,e,t,t),t},En=function(A,e,t){return e.styles.isPositionedWithZIndex()||e.styles.opacity<1||e.styles.isTransformed()||Sn(A)&&t.styles.isTransparent()},Cn=function(A){return A.isPositioned()||A.isFloating()},bn=function(A){return A.nodeType===Node.TEXT_NODE},vn=function(A){return A.nodeType===Node.ELEMENT_NODE},Fn=function(A){return vn(A)&&void 0!==A.style&&!yn(A)},yn=function(A){return"object"==typeof A.className},xn=function(A){return"LI"===A.tagName},Qn=function(A){return"OL"===A.tagName},Un=function(A){return"INPUT"===A.tagName},In=function(A){return"svg"===A.tagName},Sn=function(A){return"BODY"===A.tagName},Tn=function(A){return"CANVAS"===A.tagName},Ln=function(A){return"IMG"===A.tagName},Mn=function(A){return"IFRAME"===A.tagName},kn=function(A){return"STYLE"===A.tagName},Hn=function(A){return"TEXTAREA"===A.tagName},Dn=function(A){return"SELECT"===A.tagName},On=function(A){return"SLOT"===A.tagName},Nn=function(A){return A.tagName.indexOf("-")>0},Rn=function(){function A(){this.counters={}}return A.prototype.getCounterValue=function(A){var e=this.counters[A];return e&&e.length?e[e.length-1]:1},A.prototype.getCounterValues=function(A){return this.counters[A]||[]},A.prototype.pop=function(A){var e=this;A.forEach((function(A){return e.counters[A].pop()}))},A.prototype.parse=function(A){var e=this,t=A.counterIncrement,i=A.counterReset,n=!0;null!==t&&t.forEach((function(A){var t=e.counters[A.counter];t&&0!==A.increment&&(n=!1,t.length||t.push(1),t[Math.max(0,t.length-1)]+=A.increment)}));var a=[];return n&&i.forEach((function(A){var t=e.counters[A.counter];a.push(A.counter),t||(t=e.counters[A.counter]=[]),t.push(A.reset)})),a},A}(),Pn={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},Vn={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},Kn={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},Gn={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},Wn=function(A,e,t,i,n,a){return At?$n(A,n,a.length>0):i.integers.reduce((function(e,t,n){for(;A>=t;)A-=t,e+=i.values[n];return e}),"")+a},Xn=function(A,e,t,i){var n="";do{t||A--,n=i(A)+n,A/=e}while(A*e>=e);return n},zn=function(A,e,t,i,n){var a=t-e+1;return(A<0?"-":"")+(Xn(Math.abs(A),a,i,(function(A){return l(Math.floor(A%a)+e)}))+n)},Yn=function(A,e,t){void 0===t&&(t=". ");var i=e.length;return Xn(Math.abs(A),i,!1,(function(A){return e[Math.floor(A%i)]}))+t},jn=function(A,e,t,i,n,a){if(A<-9999||A>9999)return $n(A,4,n.length>0);var r=Math.abs(A),s=n;if(0===r)return e[0]+s;for(var o=0;r>0&&o<=4;o++){var l=r%10;0===l&&ii(a,1)&&""!==s?s=e[l]+s:l>1||1===l&&0===o||1===l&&1===o&&ii(a,2)||1===l&&1===o&&ii(a,4)&&A>100||1===l&&o>1&&ii(a,8)?s=e[l]+(o>0?t[o-1]:"")+s:1===l&&o>0&&(s=t[o-1]+s),r=Math.floor(r/10)}return(A<0?i:"")+s},Jn="十百千萬",Zn="拾佰仟萬",qn="マイナス",_n="마이너스",$n=function(A,e,t){var i=t?". ":"",n=t?"、":"",a=t?", ":"",r=t?" ":"";switch(e){case 0:return"•"+r;case 1:return"◦"+r;case 2:return"◾"+r;case 5:var s=zn(A,48,57,!0,i);return s.length<4?"0"+s:s;case 4:return Yn(A,"〇一二三四五六七八九",n);case 6:return Wn(A,1,3999,Pn,3,i).toLowerCase();case 7:return Wn(A,1,3999,Pn,3,i);case 8:return zn(A,945,969,!1,i);case 9:return zn(A,97,122,!1,i);case 10:return zn(A,65,90,!1,i);case 11:return zn(A,1632,1641,!0,i);case 12:case 49:return Wn(A,1,9999,Vn,3,i);case 35:return Wn(A,1,9999,Vn,3,i).toLowerCase();case 13:return zn(A,2534,2543,!0,i);case 14:case 30:return zn(A,6112,6121,!0,i);case 15:return Yn(A,"子丑寅卯辰巳午未申酉戌亥",n);case 16:return Yn(A,"甲乙丙丁戊己庚辛壬癸",n);case 17:case 48:return jn(A,"零一二三四五六七八九",Jn,"負",n,14);case 47:return jn(A,"零壹貳參肆伍陸柒捌玖",Zn,"負",n,15);case 42:return jn(A,"零一二三四五六七八九",Jn,"负",n,14);case 41:return jn(A,"零壹贰叁肆伍陆柒捌玖",Zn,"负",n,15);case 26:return jn(A,"〇一二三四五六七八九","十百千万",qn,n,0);case 25:return jn(A,"零壱弐参四伍六七八九","拾百千万",qn,n,7);case 31:return jn(A,"영일이삼사오육칠팔구","십백천만",_n,a,7);case 33:return jn(A,"零一二三四五六七八九","十百千萬",_n,a,0);case 32:return jn(A,"零壹貳參四五六七八九","拾百千",_n,a,7);case 18:return zn(A,2406,2415,!0,i);case 20:return Wn(A,1,19999,Gn,3,i);case 21:return zn(A,2790,2799,!0,i);case 22:return zn(A,2662,2671,!0,i);case 22:return Wn(A,1,10999,Kn,3,i);case 23:return Yn(A,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return Yn(A,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return zn(A,3302,3311,!0,i);case 28:return Yn(A,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",n);case 29:return Yn(A,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",n);case 34:return zn(A,3792,3801,!0,i);case 37:return zn(A,6160,6169,!0,i);case 38:return zn(A,4160,4169,!0,i);case 39:return zn(A,2918,2927,!0,i);case 40:return zn(A,1776,1785,!0,i);case 43:return zn(A,3046,3055,!0,i);case 44:return zn(A,3174,3183,!0,i);case 45:return zn(A,3664,3673,!0,i);case 46:return zn(A,3872,3881,!0,i);default:return zn(A,48,57,!0,i)}},Aa="data-html2canvas-ignore",ea=function(){function A(A,e,t){if(this.context=A,this.options=t,this.scrolledElements=[],this.referenceElement=e,this.counters=new Rn,this.quoteDepth=0,!e.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(e.ownerDocument.documentElement,!1)}return A.prototype.toIFrame=function(A,e){var t=this,a=ia(A,e);if(!a.contentWindow)return Promise.reject("Unable to find iframe window");var r=A.defaultView.pageXOffset,s=A.defaultView.pageYOffset,o=a.contentWindow,l=o.document,c=ra(a).then((function(){return i(t,void 0,void 0,(function(){var A,t;return n(this,(function(i){switch(i.label){case 0:return this.scrolledElements.forEach(da),o&&(o.scrollTo(e.left,e.top),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||o.scrollY===e.top&&o.scrollX===e.left||(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(o.scrollX-e.left,o.scrollY-e.top,0,0))),A=this.options.onclone,void 0===(t=this.clonedReferenceElement)?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:l.fonts&&l.fonts.ready?[4,l.fonts.ready]:[3,2];case 1:i.sent(),i.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,aa(l)]:[3,4];case 3:i.sent(),i.label=4;case 4:return"function"==typeof A?[2,Promise.resolve().then((function(){return A(l,t)})).then((function(){return a}))]:[2,a]}}))}))}));return l.open(),l.write(la(document.doctype)+""),ca(this.referenceElement.ownerDocument,r,s),l.replaceChild(l.adoptNode(this.documentElement),l.documentElement),l.close(),c},A.prototype.createElementClone=function(A){if(fi(A,2),Tn(A))return this.createCanvasClone(A);if(kn(A))return this.createStyleClone(A);var e=A.cloneNode(!1);return Ln(e)&&(Ln(A)&&A.currentSrc&&A.currentSrc!==A.src&&(e.src=A.currentSrc,e.srcset=""),"lazy"===e.loading&&(e.loading="eager")),Nn(e)?this.createCustomElementClone(e):e},A.prototype.createCustomElementClone=function(A){var e=document.createElement("html2canvascustomelement");return oa(A.style,e),e},A.prototype.createStyleClone=function(A){try{var e=A.sheet;if(e&&e.cssRules){var t=[].slice.call(e.cssRules,0).reduce((function(A,e){return e&&"string"==typeof e.cssText?A+e.cssText:A}),""),i=A.cloneNode(!1);return i.textContent=t,i}}catch(A){if(this.context.logger.error("Unable to access cssRules property",A),"SecurityError"!==A.name)throw A}return A.cloneNode(!1)},A.prototype.createCanvasClone=function(A){var e;if(this.options.inlineImages&&A.ownerDocument){var t=A.ownerDocument.createElement("img");try{return t.src=A.toDataURL(),t}catch(e){this.context.logger.info("Unable to inline canvas contents, canvas is tainted",A)}}var i=A.cloneNode(!1);try{i.width=A.width,i.height=A.height;var n=A.getContext("2d"),a=i.getContext("2d");if(a)if(!this.options.allowTaint&&n)a.putImageData(n.getImageData(0,0,A.width,A.height),0,0);else{var r=null!==(e=A.getContext("webgl2"))&&void 0!==e?e:A.getContext("webgl");if(r){var s=r.getContextAttributes();!1===(null==s?void 0:s.preserveDrawingBuffer)&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",A)}a.drawImage(A,0,0)}return i}catch(e){this.context.logger.info("Unable to clone canvas as it is tainted",A)}return i},A.prototype.appendChildNode=function(A,e,t){vn(e)&&("SCRIPT"===e.tagName||e.hasAttribute(Aa)||"function"==typeof this.options.ignoreElements&&this.options.ignoreElements(e))||this.options.copyStyles&&vn(e)&&kn(e)||A.appendChild(this.cloneNode(e,t))},A.prototype.cloneNode=function(A,e){var t=this;if(bn(A))return document.createTextNode(A.data);if(!A.ownerDocument)return A.cloneNode(!1);var i=A.ownerDocument.defaultView;if(i&&vn(A)&&(Fn(A)||yn(A))){var n=this.createElementClone(A);n.style.transitionProperty="none";var a=i.getComputedStyle(A),r=i.getComputedStyle(A,":before"),s=i.getComputedStyle(A,":after");this.referenceElement===A&&Fn(n)&&(this.clonedReferenceElement=n),Sn(n)&&pa(n);var o=this.counters.parse(new wi(this.context,a)),l=this.resolvePseudoContent(A,n,r,Ui.BEFORE);Nn(A)&&(e=!0);for(var c=A.shadowRoot?A.shadowRoot.firstChild:A.firstChild;c;c=c.nextSibling)if(vn(c)&&On(c)&&"function"==typeof c.assignedNodes){var d=c.assignedNodes();d.length&&d.forEach((function(A){return t.appendChildNode(n,A,e)}))}else this.appendChildNode(n,c,e);l&&n.insertBefore(l,n.firstChild);var h=this.resolvePseudoContent(A,n,s,Ui.AFTER);return h&&n.appendChild(h),this.counters.pop(o),(a&&(this.options.copyStyles||yn(A))&&!Mn(A)||e)&&oa(a,n),0===A.scrollTop&&0===A.scrollLeft||this.scrolledElements.push([n,A.scrollLeft,A.scrollTop]),(Hn(A)||Dn(A))&&(Hn(n)||Dn(n))&&(n.value=A.value),n}return A.cloneNode(!1)},A.prototype.resolvePseudoContent=function(A,e,t,i){var n=this;if(t){var a=t.content,r=e.ownerDocument;if(r&&a&&"none"!==a&&"-moz-alt-content"!==a&&"none"!==t.display){this.counters.parse(new wi(this.context,t));var s=new pi(this.context,t),o=r.createElement("html2canvaspseudoelement");oa(t,o),s.content.forEach((function(e){if(0===e.type)o.appendChild(r.createTextNode(e.value));else if(22===e.type){var t=r.createElement("img");t.src=e.value,t.style.opacity="1",o.appendChild(t)}else if(18===e.type){if("attr"===e.name){var i=e.values.filter(RA);i.length&&o.appendChild(r.createTextNode(A.getAttribute(i[0].value)||""))}else if("counter"===e.name){var a=e.values.filter(GA),l=a[0],c=a[1];if(l&&RA(l)){var d=n.counters.getCounterValue(l.value),h=c&&RA(c)?vt.parse(n.context,c.value):3;o.appendChild(r.createTextNode($n(d,h,!1)))}}else if("counters"===e.name){var g=e.values.filter(GA),u=(l=g[0],g[1]);if(c=g[2],l&&RA(l)){var p=n.counters.getCounterValues(l.value),w=c&&RA(c)?vt.parse(n.context,c.value):3,m=u&&0===u.type?u.value:"",f=p.map((function(A){return $n(A,w,!1)})).join(m);o.appendChild(r.createTextNode(f))}}}else if(20===e.type)switch(e.value){case"open-quote":o.appendChild(r.createTextNode(li(s.quotes,n.quoteDepth++,!0)));break;case"close-quote":o.appendChild(r.createTextNode(li(s.quotes,--n.quoteDepth,!1)));break;default:o.appendChild(r.createTextNode(e.value))}})),o.className=ha+" "+ga;var l=i===Ui.BEFORE?" "+ha:" "+ga;return yn(e)?e.className.baseValue+=l:e.className+=l,o}}},A.destroy=function(A){return!!A.parentNode&&(A.parentNode.removeChild(A),!0)},A}();!function(A){A[A.BEFORE=0]="BEFORE",A[A.AFTER=1]="AFTER"}(Ui||(Ui={}));var ta,ia=function(A,e){var t=A.createElement("iframe");return t.className="html2canvas-container",t.style.visibility="hidden",t.style.position="fixed",t.style.left="-10000px",t.style.top="0px",t.style.border="0",t.width=e.width.toString(),t.height=e.height.toString(),t.scrolling="no",t.setAttribute(Aa,"true"),A.body.appendChild(t),t},na=function(A){return new Promise((function(e){A.complete?e():A.src?(A.onload=e,A.onerror=e):e()}))},aa=function(A){return Promise.all([].slice.call(A.images,0).map(na))},ra=function(A){return new Promise((function(e,t){var i=A.contentWindow;if(!i)return t("No window assigned for iframe");var n=i.document;i.onload=A.onload=function(){i.onload=A.onload=null;var t=setInterval((function(){n.body.childNodes.length>0&&"complete"===n.readyState&&(clearInterval(t),e(A))}),50)}}))},sa=["all","d","content"],oa=function(A,e){for(var t=A.length-1;t>=0;t--){var i=A.item(t);-1===sa.indexOf(i)&&e.style.setProperty(i,A.getPropertyValue(i))}return e},la=function(A){var e="";return A&&(e+=""),e},ca=function(A,e,t){A&&A.defaultView&&(e!==A.defaultView.pageXOffset||t!==A.defaultView.pageYOffset)&&A.defaultView.scrollTo(e,t)},da=function(A){var e=A[0],t=A[1],i=A[2];e.scrollLeft=t,e.scrollTop=i},ha="___html2canvas___pseudoelement_before",ga="___html2canvas___pseudoelement_after",ua='{\n content: "" !important;\n display: none !important;\n}',pa=function(A){wa(A,"."+ha+":before"+ua+"\n ."+ga+":after"+ua)},wa=function(A,e){var t=A.ownerDocument;if(t){var i=t.createElement("style");i.textContent=e,A.appendChild(i)}},ma=function(){function A(){}return A.getOrigin=function(e){var t=A._link;return t?(t.href=e,t.href=t.href,t.protocol+t.hostname+t.port):"about:blank"},A.isSameOrigin=function(e){return A.getOrigin(e)===A._origin},A.setContext=function(e){A._link=e.document.createElement("a"),A._origin=A.getOrigin(e.location.href)},A._origin="about:blank",A}(),fa=function(){function A(A,e){this.context=A,this._options=e,this._cache={}}return A.prototype.addImage=function(A){var e=Promise.resolve();return this.has(A)?e:ya(A)||ba(A)?((this._cache[A]=this.loadImage(A)).catch((function(){})),e):e},A.prototype.match=function(A){return this._cache[A]},A.prototype.loadImage=function(A){return i(this,void 0,void 0,(function(){var e,t,i,a,r=this;return n(this,(function(n){switch(n.label){case 0:return e=ma.isSameOrigin(A),t=!va(A)&&!0===this._options.useCORS&&Ki.SUPPORT_CORS_IMAGES&&!e,i=!va(A)&&!e&&!ya(A)&&"string"==typeof this._options.proxy&&Ki.SUPPORT_CORS_XHR&&!t,e||!1!==this._options.allowTaint||va(A)||ya(A)||i||t?(a=A,i?[4,this.proxy(a)]:[3,2]):[2];case 1:a=n.sent(),n.label=2;case 2:return this.context.logger.debug("Added image "+A.substring(0,256)),[4,new Promise((function(A,e){var i=new Image;i.onload=function(){return A(i)},i.onerror=e,(Fa(a)||t)&&(i.crossOrigin="anonymous"),i.src=a,!0===i.complete&&setTimeout((function(){return A(i)}),500),r._options.imageTimeout>0&&setTimeout((function(){return e("Timed out ("+r._options.imageTimeout+"ms) loading image")}),r._options.imageTimeout)}))];case 3:return[2,n.sent()]}}))}))},A.prototype.has=function(A){return void 0!==this._cache[A]},A.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},A.prototype.proxy=function(A){var e=this,t=this._options.proxy;if(!t)throw new Error("No proxy defined");var i=A.substring(0,256);return new Promise((function(n,a){var r=Ki.SUPPORT_RESPONSE_TYPE?"blob":"text",s=new XMLHttpRequest;s.onload=function(){if(200===s.status)if("text"===r)n(s.response);else{var A=new FileReader;A.addEventListener("load",(function(){return n(A.result)}),!1),A.addEventListener("error",(function(A){return a(A)}),!1),A.readAsDataURL(s.response)}else a("Failed to proxy resource "+i+" with status code "+s.status)},s.onerror=a;var o=t.indexOf("?")>-1?"&":"?";if(s.open("GET",""+t+o+"url="+encodeURIComponent(A)+"&responseType="+r),"text"!==r&&s instanceof XMLHttpRequest&&(s.responseType=r),e._options.imageTimeout){var l=e._options.imageTimeout;s.timeout=l,s.ontimeout=function(){return a("Timed out ("+l+"ms) proxying "+i)}}s.send()}))},A}(),Ba=/^data:image\/svg\+xml/i,Ea=/^data:image\/.*;base64,/i,Ca=/^data:image\/.*/i,ba=function(A){return Ki.SUPPORT_SVG_DRAWING||!xa(A)},va=function(A){return Ca.test(A)},Fa=function(A){return Ea.test(A)},ya=function(A){return"blob"===A.substr(0,4)},xa=function(A){return"svg"===A.substr(-3).toLowerCase()||Ba.test(A)},Qa=function(){function A(A,e){this.type=0,this.x=A,this.y=e}return A.prototype.add=function(e,t){return new A(this.x+e,this.y+t)},A}(),Ua=function(A,e,t){return new Qa(A.x+(e.x-A.x)*t,A.y+(e.y-A.y)*t)},Ia=function(){function A(A,e,t,i){this.type=1,this.start=A,this.startControl=e,this.endControl=t,this.end=i}return A.prototype.subdivide=function(e,t){var i=Ua(this.start,this.startControl,e),n=Ua(this.startControl,this.endControl,e),a=Ua(this.endControl,this.end,e),r=Ua(i,n,e),s=Ua(n,a,e),o=Ua(r,s,e);return t?new A(this.start,i,r,o):new A(o,s,a,this.end)},A.prototype.add=function(e,t){return new A(this.start.add(e,t),this.startControl.add(e,t),this.endControl.add(e,t),this.end.add(e,t))},A.prototype.reverse=function(){return new A(this.end,this.endControl,this.startControl,this.start)},A}(),Sa=function(A){return 1===A.type},Ta=function(A){var e=A.styles,t=A.bounds,i=_A(e.borderTopLeftRadius,t.width,t.height),n=i[0],a=i[1],r=_A(e.borderTopRightRadius,t.width,t.height),s=r[0],o=r[1],l=_A(e.borderBottomRightRadius,t.width,t.height),c=l[0],d=l[1],h=_A(e.borderBottomLeftRadius,t.width,t.height),g=h[0],u=h[1],p=[];p.push((n+s)/t.width),p.push((g+c)/t.width),p.push((a+u)/t.height),p.push((o+d)/t.height);var w=Math.max.apply(Math,p);w>1&&(n/=w,a/=w,s/=w,o/=w,c/=w,d/=w,g/=w,u/=w);var m=t.width-s,f=t.height-d,B=t.width-c,E=t.height-u,C=e.borderTopWidth,b=e.borderRightWidth,v=e.borderBottomWidth,F=e.borderLeftWidth,y=$A(e.paddingTop,A.bounds.width),x=$A(e.paddingRight,A.bounds.width),Q=$A(e.paddingBottom,A.bounds.width),U=$A(e.paddingLeft,A.bounds.width);this.topLeftBorderDoubleOuterBox=n>0||a>0?La(t.left+F/3,t.top+C/3,n-F/3,a-C/3,ta.TOP_LEFT):new Qa(t.left+F/3,t.top+C/3),this.topRightBorderDoubleOuterBox=n>0||a>0?La(t.left+m,t.top+C/3,s-b/3,o-C/3,ta.TOP_RIGHT):new Qa(t.left+t.width-b/3,t.top+C/3),this.bottomRightBorderDoubleOuterBox=c>0||d>0?La(t.left+B,t.top+f,c-b/3,d-v/3,ta.BOTTOM_RIGHT):new Qa(t.left+t.width-b/3,t.top+t.height-v/3),this.bottomLeftBorderDoubleOuterBox=g>0||u>0?La(t.left+F/3,t.top+E,g-F/3,u-v/3,ta.BOTTOM_LEFT):new Qa(t.left+F/3,t.top+t.height-v/3),this.topLeftBorderDoubleInnerBox=n>0||a>0?La(t.left+2*F/3,t.top+2*C/3,n-2*F/3,a-2*C/3,ta.TOP_LEFT):new Qa(t.left+2*F/3,t.top+2*C/3),this.topRightBorderDoubleInnerBox=n>0||a>0?La(t.left+m,t.top+2*C/3,s-2*b/3,o-2*C/3,ta.TOP_RIGHT):new Qa(t.left+t.width-2*b/3,t.top+2*C/3),this.bottomRightBorderDoubleInnerBox=c>0||d>0?La(t.left+B,t.top+f,c-2*b/3,d-2*v/3,ta.BOTTOM_RIGHT):new Qa(t.left+t.width-2*b/3,t.top+t.height-2*v/3),this.bottomLeftBorderDoubleInnerBox=g>0||u>0?La(t.left+2*F/3,t.top+E,g-2*F/3,u-2*v/3,ta.BOTTOM_LEFT):new Qa(t.left+2*F/3,t.top+t.height-2*v/3),this.topLeftBorderStroke=n>0||a>0?La(t.left+F/2,t.top+C/2,n-F/2,a-C/2,ta.TOP_LEFT):new Qa(t.left+F/2,t.top+C/2),this.topRightBorderStroke=n>0||a>0?La(t.left+m,t.top+C/2,s-b/2,o-C/2,ta.TOP_RIGHT):new Qa(t.left+t.width-b/2,t.top+C/2),this.bottomRightBorderStroke=c>0||d>0?La(t.left+B,t.top+f,c-b/2,d-v/2,ta.BOTTOM_RIGHT):new Qa(t.left+t.width-b/2,t.top+t.height-v/2),this.bottomLeftBorderStroke=g>0||u>0?La(t.left+F/2,t.top+E,g-F/2,u-v/2,ta.BOTTOM_LEFT):new Qa(t.left+F/2,t.top+t.height-v/2),this.topLeftBorderBox=n>0||a>0?La(t.left,t.top,n,a,ta.TOP_LEFT):new Qa(t.left,t.top),this.topRightBorderBox=s>0||o>0?La(t.left+m,t.top,s,o,ta.TOP_RIGHT):new Qa(t.left+t.width,t.top),this.bottomRightBorderBox=c>0||d>0?La(t.left+B,t.top+f,c,d,ta.BOTTOM_RIGHT):new Qa(t.left+t.width,t.top+t.height),this.bottomLeftBorderBox=g>0||u>0?La(t.left,t.top+E,g,u,ta.BOTTOM_LEFT):new Qa(t.left,t.top+t.height),this.topLeftPaddingBox=n>0||a>0?La(t.left+F,t.top+C,Math.max(0,n-F),Math.max(0,a-C),ta.TOP_LEFT):new Qa(t.left+F,t.top+C),this.topRightPaddingBox=s>0||o>0?La(t.left+Math.min(m,t.width-b),t.top+C,m>t.width+b?0:Math.max(0,s-b),Math.max(0,o-C),ta.TOP_RIGHT):new Qa(t.left+t.width-b,t.top+C),this.bottomRightPaddingBox=c>0||d>0?La(t.left+Math.min(B,t.width-F),t.top+Math.min(f,t.height-v),Math.max(0,c-b),Math.max(0,d-v),ta.BOTTOM_RIGHT):new Qa(t.left+t.width-b,t.top+t.height-v),this.bottomLeftPaddingBox=g>0||u>0?La(t.left+F,t.top+Math.min(E,t.height-v),Math.max(0,g-F),Math.max(0,u-v),ta.BOTTOM_LEFT):new Qa(t.left+F,t.top+t.height-v),this.topLeftContentBox=n>0||a>0?La(t.left+F+U,t.top+C+y,Math.max(0,n-(F+U)),Math.max(0,a-(C+y)),ta.TOP_LEFT):new Qa(t.left+F+U,t.top+C+y),this.topRightContentBox=s>0||o>0?La(t.left+Math.min(m,t.width+F+U),t.top+C+y,m>t.width+F+U?0:s-F+U,o-(C+y),ta.TOP_RIGHT):new Qa(t.left+t.width-(b+x),t.top+C+y),this.bottomRightContentBox=c>0||d>0?La(t.left+Math.min(B,t.width-(F+U)),t.top+Math.min(f,t.height+C+y),Math.max(0,c-(b+x)),d-(v+Q),ta.BOTTOM_RIGHT):new Qa(t.left+t.width-(b+x),t.top+t.height-(v+Q)),this.bottomLeftContentBox=g>0||u>0?La(t.left+F+U,t.top+E,Math.max(0,g-(F+U)),u-(v+Q),ta.BOTTOM_LEFT):new Qa(t.left+F+U,t.top+t.height-(v+Q))};!function(A){A[A.TOP_LEFT=0]="TOP_LEFT",A[A.TOP_RIGHT=1]="TOP_RIGHT",A[A.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",A[A.BOTTOM_LEFT=3]="BOTTOM_LEFT"}(ta||(ta={}));var La=function(A,e,t,i,n){var a=(Math.sqrt(2)-1)/3*4,r=t*a,s=i*a,o=A+t,l=e+i;switch(n){case ta.TOP_LEFT:return new Ia(new Qa(A,l),new Qa(A,l-s),new Qa(o-r,e),new Qa(o,e));case ta.TOP_RIGHT:return new Ia(new Qa(A,e),new Qa(A+r,e),new Qa(o,l-s),new Qa(o,l));case ta.BOTTOM_RIGHT:return new Ia(new Qa(o,e),new Qa(o,e+s),new Qa(A+r,l),new Qa(A,l));case ta.BOTTOM_LEFT:default:return new Ia(new Qa(o,l),new Qa(o-r,l),new Qa(A,e+s),new Qa(A,e))}},Ma=function(A){return[A.topLeftBorderBox,A.topRightBorderBox,A.bottomRightBorderBox,A.bottomLeftBorderBox]},ka=function(A){return[A.topLeftPaddingBox,A.topRightPaddingBox,A.bottomRightPaddingBox,A.bottomLeftPaddingBox]},Ha=function(A,e,t){this.offsetX=A,this.offsetY=e,this.matrix=t,this.type=0,this.target=6},Da=function(A,e){this.path=A,this.target=e,this.type=1},Oa=function(A){this.opacity=A,this.type=2,this.target=6},Na=function(A){return 1===A.type},Ra=function(A,e){return A.length===e.length&&A.some((function(A,t){return A===e[t]}))},Pa=function(A){this.element=A,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]},Va=function(){function A(A,e){if(this.container=A,this.parent=e,this.effects=[],this.curves=new Ta(this.container),this.container.styles.opacity<1&&this.effects.push(new Oa(this.container.styles.opacity)),null!==this.container.styles.transform){var t=this.container.bounds.left+this.container.styles.transformOrigin[0].number,i=this.container.bounds.top+this.container.styles.transformOrigin[1].number,n=this.container.styles.transform;this.effects.push(new Ha(t,i,n))}if(0!==this.container.styles.overflowX){var a=Ma(this.curves),r=ka(this.curves);Ra(a,r)?this.effects.push(new Da(a,6)):(this.effects.push(new Da(a,2)),this.effects.push(new Da(r,4)))}}return A.prototype.getEffects=function(A){for(var e=-1===[2,3].indexOf(this.container.styles.position),t=this.parent,i=this.effects.slice(0);t;){var n=t.effects.filter((function(A){return!Na(A)}));if(e||0!==t.container.styles.position||!t.parent){if(i.unshift.apply(i,n),e=-1===[2,3].indexOf(t.container.styles.position),0!==t.container.styles.overflowX){var a=Ma(t.curves),r=ka(t.curves);Ra(a,r)||i.unshift(new Da(r,6))}}else i.unshift.apply(i,n);t=t.parent}return i.filter((function(e){return ii(e.target,A)}))},A}(),Ka=function(A,e,t,i){A.container.elements.forEach((function(n){var a=ii(n.flags,4),r=ii(n.flags,2),s=new Va(n,A);ii(n.styles.display,2048)&&i.push(s);var o=ii(n.flags,8)?[]:i;if(a||r){var l=a||n.styles.isPositioned()?t:e,c=new Pa(s);if(n.styles.isPositioned()||n.styles.opacity<1||n.styles.isTransformed()){var d=n.styles.zIndex.order;if(d<0){var h=0;l.negativeZIndex.some((function(A,e){return d>A.element.container.styles.zIndex.order?(h=e,!1):h>0})),l.negativeZIndex.splice(h,0,c)}else if(d>0){var g=0;l.positiveZIndex.some((function(A,e){return d>=A.element.container.styles.zIndex.order?(g=e+1,!1):g>0})),l.positiveZIndex.splice(g,0,c)}else l.zeroOrAutoZIndexOrTransformedOrOpacity.push(c)}else n.styles.isFloating()?l.nonPositionedFloats.push(c):l.nonPositionedInlineLevel.push(c);Ka(s,c,a?c:t,o)}else n.styles.isInlineLevel()?e.inlineLevel.push(s):e.nonInlineLevel.push(s),Ka(s,e,t,o);ii(n.flags,8)&&Ga(n,o)}))},Ga=function(A,e){for(var t=A instanceof an?A.start:1,i=A instanceof an&&A.reversed,n=0;n0&&A.intrinsicHeight>0){var i=ja(A),n=ka(e);this.path(n),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(t,0,0,A.intrinsicWidth,A.intrinsicHeight,i.left,i.top,i.width,i.height),this.ctx.restore()}},t.prototype.renderNodeContent=function(A){return i(this,void 0,void 0,(function(){var e,i,a,s,o,l,c,d,h,g,u,p,w,m,f,B,E,C;return n(this,(function(n){switch(n.label){case 0:this.applyEffects(A.getEffects(4)),e=A.container,i=A.curves,a=e.styles,s=0,o=e.textNodes,n.label=1;case 1:return s0&&F>0&&(f=i.ctx.createPattern(p,"repeat"),i.renderRepeat(E,f,x,Q))):function(A){return 2===A.type}(t)&&(B=Ja(A,e,[null,null,null]),E=B[0],C=B[1],b=B[2],v=B[3],F=B[4],y=0===t.position.length?[ZA]:t.position,x=$A(y[0],v),Q=$A(y[y.length-1],F),U=function(A,e,t,i,n){var a=0,r=0;switch(A.size){case 0:0===A.shape?a=r=Math.min(Math.abs(e),Math.abs(e-i),Math.abs(t),Math.abs(t-n)):1===A.shape&&(a=Math.min(Math.abs(e),Math.abs(e-i)),r=Math.min(Math.abs(t),Math.abs(t-n)));break;case 2:if(0===A.shape)a=r=Math.min(be(e,t),be(e,t-n),be(e-i,t),be(e-i,t-n));else if(1===A.shape){var s=Math.min(Math.abs(t),Math.abs(t-n))/Math.min(Math.abs(e),Math.abs(e-i)),o=ve(i,n,e,t,!0),l=o[0],c=o[1];r=s*(a=be(l-e,(c-t)/s))}break;case 1:0===A.shape?a=r=Math.max(Math.abs(e),Math.abs(e-i),Math.abs(t),Math.abs(t-n)):1===A.shape&&(a=Math.max(Math.abs(e),Math.abs(e-i)),r=Math.max(Math.abs(t),Math.abs(t-n)));break;case 3:if(0===A.shape)a=r=Math.max(be(e,t),be(e,t-n),be(e-i,t),be(e-i,t-n));else if(1===A.shape){s=Math.max(Math.abs(t),Math.abs(t-n))/Math.max(Math.abs(e),Math.abs(e-i));var d=ve(i,n,e,t,!1);l=d[0],c=d[1],r=s*(a=be(l-e,(c-t)/s))}}return Array.isArray(A.size)&&(a=$A(A.size[0],i),r=2===A.size.length?$A(A.size[1],n):a),[a,r]}(t,x,Q,v,F),I=U[0],S=U[1],I>0&&S>0&&(T=i.ctx.createRadialGradient(C+x,b+Q,0,C+x,b+Q,I),Ee(t.stops,2*I).forEach((function(A){return T.addColorStop(A.stop,oe(A.color))})),i.path(E),i.ctx.fillStyle=T,I!==S?(L=A.bounds.left+.5*A.bounds.width,M=A.bounds.top+.5*A.bounds.height,H=1/(k=S/I),i.ctx.save(),i.ctx.translate(L,M),i.ctx.transform(1,0,0,k,0,0),i.ctx.translate(-L,-M),i.ctx.fillRect(C,H*(b-M)+M,v,F*H),i.ctx.restore()):i.ctx.fill())),n.label=6;case 6:return e--,[2]}}))},i=this,a=0,r=A.styles.backgroundImage.slice(0).reverse(),o.label=1;case 1:return a0?2!==l.style?[3,5]:[4,this.renderDashedDottedBorder(l.color,l.width,r,A.curves,2)]:[3,11]:[3,13];case 4:return n.sent(),[3,11];case 5:return 3!==l.style?[3,7]:[4,this.renderDashedDottedBorder(l.color,l.width,r,A.curves,3)];case 6:return n.sent(),[3,11];case 7:return 4!==l.style?[3,9]:[4,this.renderDoubleBorder(l.color,l.width,r,A.curves)];case 8:return n.sent(),[3,11];case 9:return[4,this.renderSolidBorder(l.color,r,A.curves)];case 10:n.sent(),n.label=11;case 11:r++,n.label=12;case 12:return s++,[3,3];case 13:return[2]}}))}))},t.prototype.renderDashedDottedBorder=function(A,e,t,a,r){return i(this,void 0,void 0,(function(){var i,s,o,l,c,d,h,g,u,p,w,m,f,B,E,C;return n(this,(function(n){return this.ctx.save(),i=function(A,e){switch(e){case 0:return Xa(A.topLeftBorderStroke,A.topRightBorderStroke);case 1:return Xa(A.topRightBorderStroke,A.bottomRightBorderStroke);case 2:return Xa(A.bottomRightBorderStroke,A.bottomLeftBorderStroke);default:return Xa(A.bottomLeftBorderStroke,A.topLeftBorderStroke)}}(a,t),s=Wa(a,t),2===r&&(this.path(s),this.ctx.clip()),Sa(s[0])?(o=s[0].start.x,l=s[0].start.y):(o=s[0].x,l=s[0].y),Sa(s[1])?(c=s[1].end.x,d=s[1].end.y):(c=s[1].x,d=s[1].y),h=0===t||2===t?Math.abs(o-c):Math.abs(l-d),this.ctx.beginPath(),3===r?this.formatPath(i):this.formatPath(s.slice(0,2)),g=e<3?3*e:2*e,u=e<3?2*e:e,3===r&&(g=e,u=e),p=!0,h<=2*g?p=!1:h<=2*g+u?(g*=w=h/(2*g+u),u*=w):(m=Math.floor((h+u)/(g+u)),f=(h-m*g)/(m-1),u=(B=(h-(m+1)*g)/m)<=0||Math.abs(u-f){const a=await tex2dataURL(A,n);if(a){const A=[];A.push({mimeType:a.mimeType,id:e,dataURL:a.dataURL,created:a.created,size:a.size,hasSVGwithBitmap:!1}),i(A,t)}};async function tex2dataURL(A,e){let t=0;for(;!e.mathjax&&!e.mathjaxLoaderFinished&&t<10;)await sleep$1(100),t++;e.mathjaxLoaderFinished||errorlog({where:"text2dataURL",fn:tex2dataURL,message:"mathjaxLoader not ready, using fallback. Try reloading Obsidian or restarting the Excalidraw plugin"});try{return await mathjaxSVG(A,e)}catch(t){await sleep$1(100);try{return await mathjaxSVG(A,e)}catch(t){await sleep$1(100);try{return await mathjaxSVG(A,e)}catch(t){return e.mathjax?new obsidian.Notice("Unknown error loading LaTeX. Using fallback solution. Try closing and reopening this drawing."):new obsidian.Notice("LaTeX support did not load. Using fallback solution. Try checking your network connection."),await mathjaxImage2html(A)}}}}async function mathjaxSVG(A,e){const t=e.mathjax.tex2svg(A,{display:!0,scale:4}).querySelector("svg");if(t){const A=svgToBase64(t.outerHTML);return{mimeType:"image/svg+xml",fileId:fileid(),dataURL:A,created:Date.now(),size:await getImageSize(A)}}return null}async function mathjaxImage2html(A){const e=document.body.createDiv();e.style.display="table";const t=window.MathJax.tex2chtml(A,{display:!0,scale:4});t.style.margin="3px",t.style.color="black";const i=t.querySelector("mjx-assistive-mml");i&&i.parentElement.removeChild(i),e.appendChild(t),window.MathJax.typeset();const n=await html2canvas(e,{backgroundColor:null});return document.body.removeChild(e),{mimeType:"image/png",fileId:fileid(),dataURL:n.toDataURL(),created:Date.now(),size:{height:n.height,width:n.width}}}const THEME_FILTER="invert(100%) hue-rotate(180deg) saturate(1.25)";class EmbeddedFile{constructor(A,e,t){this.file=null,this.isSVGwithBitmap=!1,this.img="",this.imgInverted="",this.mtime=0,this.mimeType="application/octet-stream",this.size={height:0,width:0},this.attemptCounter=0,this.plugin=A,this.resetImage(e,t)}resetImage(A,e){this.imgInverted=this.img="",this.mtime=0,this.linkParts=getLinkParts(e),this.hostPath=A,this.linkParts.path?(this.linkParts.width||(this.linkParts.width=this.plugin.settings.mdSVGwidth),this.linkParts.height||(this.linkParts.height=this.plugin.settings.mdSVGmaxHeight),this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,A),this.file||0==this.attemptCounter++&&new obsidian.Notice(`Excalidraw Warning: could not find image file: ${e}`,5e3)):new obsidian.Notice(`Excalidraw Error\nIncorrect embedded filename: ${e}`)}fileChanged(){return this.file||(this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,this.hostPath),this.file)?this.mtime!=this.file.stat.mtime:(this.attemptCounter++,!1)}setImage(A,e,t,i,n){if(this.file){switch(this.fileChanged()&&(this.imgInverted=this.img=""),this.mtime=this.file.stat.mtime,this.size=t,this.mimeType=e,i&&n){case!0:this.imgInverted=A;break;case!1:this.img=A}this.isSVGwithBitmap=n}}isLoaded(A){return this.file||(this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,this.hostPath),this.file)?!this.fileChanged()&&(this.isSVGwithBitmap&&A?""!==this.imgInverted:""!==this.img):(this.attemptCounter++,!0)}getImage(A){return this.file?A&&this.isSVGwithBitmap?this.imgInverted:this.img:""}}class EmbeddedFilesLoader{constructor(A,e){this.terminate=!1,this.plugin=A,this.isDark=e,this.uid=nanoid()}async getObsidianImage(A,e){if(!this.plugin||!A)return null;const t=A instanceof EmbeddedFile?A.file:A,i=A instanceof EmbeddedFile?A.linkParts:{original:t.path,path:t.path,isBlockRef:!1,ref:null,width:this.plugin.settings.mdSVGwidth,height:this.plugin.settings.mdSVGmaxHeight};let n=!1;const a=this.plugin.isExcalidrawFile(t);if(!IMAGE_TYPES.contains(t.extension)&&!a&&"md"!==t.extension)return null;const r=await app.vault.readBinary(t),s=a?await(async A=>{const i=hasExportTheme(this.plugin,t)?getExportTheme(this.plugin,t,"light"):void 0,a={withBackground:!!hasExportBackground(this.plugin,t)&&getWithBackground(this.plugin,t),withTheme:!!i},r=await createSVG(t.path,!0,a,this,i,null,null,[],this.plugin,e+1,getExportPadding(this.plugin,t)),s=r.querySelectorAll("image:not([href^='data:image/svg'])");return s.length>0&&(n=!0),n&&A&&s.forEach((A=>{var e;const t=null===(e=A.parentElement)||void 0===e?void 0:e.id;r.querySelectorAll(`use[href='#${t}']`).forEach((A=>{A.setAttribute("filter",THEME_FILTER)}))})),!n&&r.getAttribute("hasbitmap")&&(n=!0),svgToBase64(r.outerHTML)})(this.isDark):null;let o="image/svg+xml";if(!a)switch(t.extension){case"png":o="image/png";break;case"jpeg":case"jpg":o="image/jpeg";break;case"gif":o="image/gif";break;case"svg":case"md":o="image/svg+xml";break;default:o="application/octet-stream"}let l=null!=s?s:"svg"===t.extension?await getSVGData(app,t):"md"===t.extension?null:await getDataURL(r,o);if(!l){const A=await this.convertMarkdownToSVG(this.plugin,t,i);l=A.dataURL,n=A.hasSVGwithBitmap}const c=await getImageSize(l);return{mimeType:o,fileId:await generateIdFromFile(r),dataURL:l,created:t.stat.mtime,hasSVGwithBitmap:n,size:c}}async loadSceneFiles(A,e,t){var i,n;if(t>4)return void new obsidian.Notice(t$d("INFINITE_LOOP_WARNING")+t.toString(),6e3);const a=A.getFileEntries();let r;void 0===this.isDark&&(this.isDark="dark"===(null===(n=null===(i=null==A?void 0:A.scene)||void 0===i?void 0:i.appState)||void 0===n?void 0:n.theme));const s=[];for(;!this.terminate&&!(r=a.next()).done;){const A=r.value[1];if(A.isLoaded(this.isDark))A.isSVGwithBitmap&&s.push({mimeType:A.mimeType,id:r.value[0],dataURL:A.getImage(this.isDark),created:A.mtime,size:A.size,hasSVGwithBitmap:A.isSVGwithBitmap});else{const e=await this.getObsidianImage(A,t);e&&s.push({mimeType:e.mimeType,id:r.value[0],dataURL:e.dataURL,created:e.created,size:e.size,hasSVGwithBitmap:e.hasSVGwithBitmap})}}let o;const l=A.getEquationEntries();for(;!this.terminate&&!(o=l.next()).done;)if(!A.getEquation(o.value[0]).isLoaded){const A=o.value[1].latex,e=await tex2dataURL(A,this.plugin);e&&s.push({mimeType:e.mimeType,id:o.value[0],dataURL:e.dataURL,created:e.created,size:e.size,hasSVGwithBitmap:!1})}if(!this.terminate)try{e(s,this.isDark)}catch(A){errorlog({where:"EmbeddedFileLoader.loadSceneFiles",error:A})}}async convertMarkdownToSVG(A,e,t){var i,n,a,r;let s=!1;const o=await getTransclusion(t,A.app,e);let l=(null!==(i=o.leadingHashes)&&void 0!==i?i:"")+o.contents;""===l&&(l="# Empty markdown file\nCTRL+Click here to open the file for editing in the current active pane, or CTRL+SHIFT+Click to open it in an adjacent pane.");const c=A.app.metadataCache.getFileCache(e);let d,h=A.settings.mdFont;switch((null==c?void 0:c.frontmatter)&&null!=c.frontmatter["excalidraw-font"]&&(h=c.frontmatter["excalidraw-font"]),h){case"Virgil":d=VIRGIL_FONT;break;case"Cascadia":d=CASCADIA_FONT;break;case"":d="";break;default:const t=await getFontDataURL(A.app,h,e.path);d=t.fontDef,h=t.fontName}const g=(null==c?void 0:c.frontmatter)&&null!==(n=c.frontmatter["excalidraw-font-color"])&&void 0!==n?n:A.settings.mdFontColor;let u=(null==c?void 0:c.frontmatter)&&null!==(a=c.frontmatter["excalidraw-css"])&&void 0!==a?a:"",p=!1;if(u&&""!=u){const t=A.app.metadataCache.getFirstLinkpathDest(u,e.path);t&&(u=await A.app.vault.read(t),p=!0)}if(!p)if(A.settings.mdCSS&&""!==A.settings.mdCSS){const t=A.app.metadataCache.getFirstLinkpathDest(A.settings.mdCSS,e.path);u+=t?`\n${await A.app.vault.read(t)}`:DEFAULT_MD_EMBED_CSS}else u+=DEFAULT_MD_EMBED_CSS;const w=(null==c?void 0:c.frontmatter)&&null!==(r=c.frontmatter["excalidraw-border-color"])&&void 0!==r?r:A.settings.mdBorderColor;w&&""!==w&&!u.match(/svg/i)&&(u+=`svg{border:2px solid;color:${w};transform:scale(.95)}`);let m=` width="${t.width}px" height="100000"`,f=` width="${t.width}px" height="100%"`;const B=(A,e,t)=>`${t?``:""}${A}${e}${""!==d?``:""}`,E=createDiv();E.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),E.setAttribute("class","excalidraw-md-host"),""!==h&&(E.style.fontFamily=h),E.style.overflow="auto",E.style.display="block",E.style.color=g&&""!==g?g:"initial",await obsidian.MarkdownRenderer.renderMarkdown(l,E,e.path,A),E.querySelectorAll(":scope > *[class^='frontmatter']").forEach((A=>E.removeChild(A)));const C=Array.from(E.querySelectorAll("span[class='internal-embed']"));for(let t=0;t{const e=A.style,t=window.getComputedStyle(A);let i="";for(const A in e)e.hasOwnProperty(A)&&(i+=`${A}: ${t[A]};`);A.setAttribute("style",i)}));const x=(new XMLSerializer).serializeToString(F),Q=(new XMLSerializer).serializeToString(y);document.body.removeChild(b);const U=new DOMParser,I=U.parseFromString(B(x,Q),"image/svg+xml").firstElementChild,S=createDiv();S.appendChild(I),document.body.appendChild(S);const T=I.querySelector(".excalidraw-md-footer").scrollHeight,L=I.querySelector(".excalidraw-md-host").scrollHeight+T,M=L<=t.height?L:t.height;document.body.removeChild(S),m=` width="${t.width}px" height="${M}px"`,f=` width="${t.width}px" height="${M}px"`,E.style.height=M-T+"px",E.style.overflow="hidden";const k=E.querySelectorAll("img:not([src^='data:image/svg+xml'])");k.length>0&&(s=!0),s&&this.isDark&&k.forEach((A=>{A instanceof HTMLImageElement&&(A.style.filter=THEME_FILTER)}));const H=B((new XMLSerializer).serializeToString(E),'',u);return A.ea.mostRecentMarkdownSVG=U.parseFromString(H,"image/svg+xml").firstElementChild,{dataURL:svgToBase64(H),hasSVGwithBitmap:s}}}const getSVGData=async(A,e)=>{const t=await A.vault.read(e);return svgToBase64(t)},generateIdFromFile=async A=>{let e;try{const t=await window.crypto.subtle.digest("SHA-1",A);e=Array.from(new Uint8Array(t)).map((A=>A.toString(16).padStart(2,"0"))).join("")}catch(A){errorlog({where:"EmbeddedFileLoader.generateIdFromFile",error:A}),e=fileid()}return e};var AutoexportPreference;!function(A){A[A.none=0]="none",A[A.both=1]="both",A[A.png=2]="png",A[A.svg=3]="svg",A[A.inherit=4]="inherit"}(AutoexportPreference||(AutoexportPreference={}));const REGEX_LINK={ +var A=function(e,t){return A=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(A,e){A.__proto__=e}||function(A,e){for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(A[t]=e[t])},A(e,t)};function e(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}A(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}var t=function(){return t=Object.assign||function(A){for(var e,t=1,i=arguments.length;t0&&n[n.length-1])||6!==a[0]&&2!==a[0])){r=0;continue}if(3===a[0]&&(!n||a[1]>n[0]&&a[1]=55296&&n<=56319&&t>10),r%1024+56320)),(n+1===t||i.length>16384)&&(a+=String.fromCharCode.apply(String,i),i.length=0)}return a},c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d="undefined"==typeof Uint8Array?[]:new Uint8Array(256),h=0;h=0){if(A<55296||A>56319&&A<=65535)return e=((e=this.index[A>>5])<<2)+(31&A),this.data[e];if(A<=65535)return e=((e=this.index[2048+(A-55296>>5)])<<2)+(31&A),this.data[e];if(A>11),e=this.index[e],e+=A>>5&63,e=((e=this.index[e])<<2)+(31&A),this.data[e];if(A<=1114111)return this.data[this.highValueIndex]}return this.errorValue},A}(),p=10,w=13,m=15,f=17,B=18,E=19,C=20,b=21,v=22,y=24,F=25,x=26,Q=27,U=28,I=30,S=32,T=33,L=34,M=35,k=37,H=38,O=39,D=40,N=42,R=[9001,65288],P="×",V="÷",K=function(A){var e,t,i,n=function(A){var e,t,i,n,a,r=.75*A.length,s=A.length,o=0;"="===A[A.length-1]&&(r--,"="===A[A.length-2]&&r--);var l="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(r):new Array(r),c=Array.isArray(l)?l:new Uint8Array(l);for(e=0;e>4,c[o++]=(15&i)<<4|n>>2,c[o++]=(3&n)<<6|63&a;return l}(A),a=Array.isArray(n)?function(A){for(var e=A.length,t=[],i=0;i0;){var r=i[--a];if(Array.isArray(A)?-1!==A.indexOf(r):A===r)for(var s=t;s<=i.length;){var o;if((o=i[++s])===e)return!0;if(o!==p)break}if(r!==p)break}return!1},q=function(A,e){for(var t=A;t>=0;){var i=e[t];if(i!==p)return i;t--}return 0},_=function(A,e,t,i,n){if(0===t[i])return P;var a=i-1;if(Array.isArray(n)&&!0===n[a])return P;var r=a-1,s=a+1,o=e[a],l=r>=0?e[r]:0,c=e[s];if(2===o&&3===c)return P;if(-1!==W.indexOf(o))return"!";if(-1!==W.indexOf(c))return P;if(-1!==z.indexOf(c))return P;if(8===q(a,e))return V;if(11===K.get(A[a]))return P;if((o===S||o===T)&&11===K.get(A[s]))return P;if(7===o||7===c)return P;if(9===o)return P;if(-1===[p,w,m].indexOf(o)&&9===c)return P;if(-1!==[f,B,E,y,U].indexOf(c))return P;if(q(a,e)===v)return P;if(Z(23,v,a,e))return P;if(Z([f,B],b,a,e))return P;if(Z(12,12,a,e))return P;if(o===p)return V;if(23===o||23===c)return P;if(16===c||16===o)return V;if(-1!==[w,m,b].indexOf(c)||14===o)return P;if(36===l&&-1!==J.indexOf(o))return P;if(o===U&&36===c)return P;if(c===C)return P;if(-1!==G.indexOf(c)&&o===F||-1!==G.indexOf(o)&&c===F)return P;if(o===Q&&-1!==[k,S,T].indexOf(c)||-1!==[k,S,T].indexOf(o)&&c===x)return P;if(-1!==G.indexOf(o)&&-1!==X.indexOf(c)||-1!==X.indexOf(o)&&-1!==G.indexOf(c))return P;if(-1!==[Q,x].indexOf(o)&&(c===F||-1!==[v,m].indexOf(c)&&e[s+1]===F)||-1!==[v,m].indexOf(o)&&c===F||o===F&&-1!==[F,U,y].indexOf(c))return P;if(-1!==[F,U,y,f,B].indexOf(c))for(var d=a;d>=0;){if((h=e[d])===F)return P;if(-1===[U,y].indexOf(h))break;d--}if(-1!==[Q,x].indexOf(c))for(d=-1!==[f,B].indexOf(o)?r:a;d>=0;){var h;if((h=e[d])===F)return P;if(-1===[U,y].indexOf(h))break;d--}if(H===o&&-1!==[H,O,L,M].indexOf(c)||-1!==[O,L].indexOf(o)&&-1!==[O,D].indexOf(c)||-1!==[D,M].indexOf(o)&&c===D)return P;if(-1!==j.indexOf(o)&&-1!==[C,x].indexOf(c)||-1!==j.indexOf(c)&&o===Q)return P;if(-1!==G.indexOf(o)&&-1!==G.indexOf(c))return P;if(o===y&&-1!==G.indexOf(c))return P;if(-1!==G.concat(F).indexOf(o)&&c===v&&-1===R.indexOf(A[s])||-1!==G.concat(F).indexOf(c)&&o===B)return P;if(41===o&&41===c){for(var g=t[a],u=1;g>0&&41===e[--g];)u++;if(u%2!=0)return P}return o===S&&c===T?P:V},$=function(A,e){e||(e={lineBreak:"normal",wordBreak:"normal"});var t=function(A,e){void 0===e&&(e="strict");var t=[],i=[],n=[];return A.forEach((function(A,a){var r=K.get(A);if(r>50?(n.push(!0),r-=50):n.push(!1),-1!==["normal","auto","loose"].indexOf(e)&&-1!==[8208,8211,12316,12448].indexOf(A))return i.push(a),t.push(16);if(4===r||11===r){if(0===a)return i.push(a),t.push(I);var s=t[a-1];return-1===Y.indexOf(s)?(i.push(i[a-1]),t.push(s)):(i.push(a),t.push(I))}return i.push(a),31===r?t.push("strict"===e?b:k):r===N||29===r?t.push(I):43===r?A>=131072&&A<=196605||A>=196608&&A<=262141?t.push(k):t.push(I):void t.push(r)})),[i,t,n]}(A,e.lineBreak),i=t[0],n=t[1],a=t[2];"break-all"!==e.wordBreak&&"break-word"!==e.wordBreak||(n=n.map((function(A){return-1!==[F,I,N].indexOf(A)?k:A})));var r="keep-all"===e.wordBreak?a.map((function(e,t){return e&&A[t]>=19968&&A[t]<=40959})):void 0;return[i,n,r]},AA=function(){function A(A,e,t,i){this.codePoints=A,this.required="!"===e,this.start=t,this.end=i}return A.prototype.slice=function(){return l.apply(void 0,this.codePoints.slice(this.start,this.end))},A}(),eA=45,tA=43,iA=-1,nA=function(A){return A>=48&&A<=57},aA=function(A){return nA(A)||A>=65&&A<=70||A>=97&&A<=102},rA=function(A){return 10===A||9===A||32===A},sA=function(A){return function(A){return function(A){return A>=97&&A<=122}(A)||function(A){return A>=65&&A<=90}(A)}(A)||function(A){return A>=128}(A)||95===A},oA=function(A){return sA(A)||nA(A)||A===eA},lA=function(A){return A>=0&&A<=8||11===A||A>=14&&A<=31||127===A},cA=function(A,e){return 92===A&&10!==e},dA=function(A,e,t){return A===eA?sA(e)||cA(e,t):!!sA(A)||!(92!==A||!cA(A,e))},hA=function(A,e,t){return A===tA||A===eA?!!nA(e)||46===e&&nA(t):nA(46===A?e:A)},gA=function(A){var e=0,t=1;A[e]!==tA&&A[e]!==eA||(A[e]===eA&&(t=-1),e++);for(var i=[];nA(A[e]);)i.push(A[e++]);var n=i.length?parseInt(l.apply(void 0,i),10):0;46===A[e]&&e++;for(var a=[];nA(A[e]);)a.push(A[e++]);var r=a.length,s=r?parseInt(l.apply(void 0,a),10):0;69!==A[e]&&101!==A[e]||e++;var o=1;A[e]!==tA&&A[e]!==eA||(A[e]===eA&&(o=-1),e++);for(var c=[];nA(A[e]);)c.push(A[e++]);var d=c.length?parseInt(l.apply(void 0,c),10):0;return t*(n+s*Math.pow(10,-r))*Math.pow(10,o*d)},uA={type:2},pA={type:3},wA={type:4},mA={type:13},fA={type:8},BA={type:21},EA={type:9},CA={type:10},bA={type:11},vA={type:12},yA={type:14},FA={type:23},xA={type:1},QA={type:25},UA={type:24},IA={type:26},SA={type:27},TA={type:28},LA={type:29},MA={type:31},kA={type:32},HA=function(){function A(){this._value=[]}return A.prototype.write=function(A){this._value=this._value.concat(o(A))},A.prototype.read=function(){for(var A=[],e=this.consumeToken();e!==kA;)A.push(e),e=this.consumeToken();return A},A.prototype.consumeToken=function(){var A=this.consumeCodePoint();switch(A){case 34:return this.consumeStringToken(34);case 35:var e=this.peekCodePoint(0),t=this.peekCodePoint(1),i=this.peekCodePoint(2);if(oA(e)||cA(t,i)){var n=dA(e,t,i)?2:1;return{type:5,value:this.consumeName(),flags:n}}break;case 36:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),mA;break;case 39:return this.consumeStringToken(39);case 40:return uA;case 41:return pA;case 42:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),yA;break;case tA:if(hA(A,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(A),this.consumeNumericToken();break;case 44:return wA;case eA:var a=A,r=this.peekCodePoint(0),s=this.peekCodePoint(1);if(hA(a,r,s))return this.reconsumeCodePoint(A),this.consumeNumericToken();if(dA(a,r,s))return this.reconsumeCodePoint(A),this.consumeIdentLikeToken();if(r===eA&&62===s)return this.consumeCodePoint(),this.consumeCodePoint(),UA;break;case 46:if(hA(A,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(A),this.consumeNumericToken();break;case 47:if(42===this.peekCodePoint(0))for(this.consumeCodePoint();;){var o=this.consumeCodePoint();if(42===o&&47===(o=this.consumeCodePoint()))return this.consumeToken();if(o===iA)return this.consumeToken()}break;case 58:return IA;case 59:return SA;case 60:if(33===this.peekCodePoint(0)&&this.peekCodePoint(1)===eA&&this.peekCodePoint(2)===eA)return this.consumeCodePoint(),this.consumeCodePoint(),QA;break;case 64:var c=this.peekCodePoint(0),d=this.peekCodePoint(1),h=this.peekCodePoint(2);if(dA(c,d,h))return{type:7,value:this.consumeName()};break;case 91:return TA;case 92:if(cA(A,this.peekCodePoint(0)))return this.reconsumeCodePoint(A),this.consumeIdentLikeToken();break;case 93:return LA;case 61:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),fA;break;case 123:return bA;case 125:return vA;case 117:case 85:var g=this.peekCodePoint(0),u=this.peekCodePoint(1);return g!==tA||!aA(u)&&63!==u||(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(A),this.consumeIdentLikeToken();case 124:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),EA;if(124===this.peekCodePoint(0))return this.consumeCodePoint(),BA;break;case 126:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),CA;break;case iA:return kA}return rA(A)?(this.consumeWhiteSpace(),MA):nA(A)?(this.reconsumeCodePoint(A),this.consumeNumericToken()):sA(A)?(this.reconsumeCodePoint(A),this.consumeIdentLikeToken()):{type:6,value:l(A)}},A.prototype.consumeCodePoint=function(){var A=this._value.shift();return void 0===A?-1:A},A.prototype.reconsumeCodePoint=function(A){this._value.unshift(A)},A.prototype.peekCodePoint=function(A){return A>=this._value.length?-1:this._value[A]},A.prototype.consumeUnicodeRangeToken=function(){for(var A=[],e=this.consumeCodePoint();aA(e)&&A.length<6;)A.push(e),e=this.consumeCodePoint();for(var t=!1;63===e&&A.length<6;)A.push(e),e=this.consumeCodePoint(),t=!0;if(t)return{type:30,start:parseInt(l.apply(void 0,A.map((function(A){return 63===A?48:A}))),16),end:parseInt(l.apply(void 0,A.map((function(A){return 63===A?70:A}))),16)};var i=parseInt(l.apply(void 0,A),16);if(this.peekCodePoint(0)===eA&&aA(this.peekCodePoint(1))){this.consumeCodePoint(),e=this.consumeCodePoint();for(var n=[];aA(e)&&n.length<6;)n.push(e),e=this.consumeCodePoint();return{type:30,start:i,end:parseInt(l.apply(void 0,n),16)}}return{type:30,start:i,end:i}},A.prototype.consumeIdentLikeToken=function(){var A=this.consumeName();return"url"===A.toLowerCase()&&40===this.peekCodePoint(0)?(this.consumeCodePoint(),this.consumeUrlToken()):40===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:19,value:A}):{type:20,value:A}},A.prototype.consumeUrlToken=function(){var A=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===iA)return{type:22,value:""};var e=this.peekCodePoint(0);if(39===e||34===e){var t=this.consumeStringToken(this.consumeCodePoint());return 0===t.type&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===iA||41===this.peekCodePoint(0))?(this.consumeCodePoint(),{type:22,value:t.value}):(this.consumeBadUrlRemnants(),FA)}for(;;){var i=this.consumeCodePoint();if(i===iA||41===i)return{type:22,value:l.apply(void 0,A)};if(rA(i))return this.consumeWhiteSpace(),this.peekCodePoint(0)===iA||41===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:22,value:l.apply(void 0,A)}):(this.consumeBadUrlRemnants(),FA);if(34===i||39===i||40===i||lA(i))return this.consumeBadUrlRemnants(),FA;if(92===i){if(!cA(i,this.peekCodePoint(0)))return this.consumeBadUrlRemnants(),FA;A.push(this.consumeEscapedCodePoint())}else A.push(i)}},A.prototype.consumeWhiteSpace=function(){for(;rA(this.peekCodePoint(0));)this.consumeCodePoint()},A.prototype.consumeBadUrlRemnants=function(){for(;;){var A=this.consumeCodePoint();if(41===A||A===iA)return;cA(A,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},A.prototype.consumeStringSlice=function(A){for(var e="";A>0;){var t=Math.min(5e4,A);e+=l.apply(void 0,this._value.splice(0,t)),A-=t}return this._value.shift(),e},A.prototype.consumeStringToken=function(A){for(var e="",t=0;;){var i=this._value[t];if(i===iA||void 0===i||i===A)return{type:0,value:e+=this.consumeStringSlice(t)};if(10===i)return this._value.splice(0,t),xA;if(92===i){var n=this._value[t+1];n!==iA&&void 0!==n&&(10===n?(e+=this.consumeStringSlice(t),t=-1,this._value.shift()):cA(i,n)&&(e+=this.consumeStringSlice(t),e+=l(this.consumeEscapedCodePoint()),t=-1))}t++}},A.prototype.consumeNumber=function(){var A=[],e=4,t=this.peekCodePoint(0);for(t!==tA&&t!==eA||A.push(this.consumeCodePoint());nA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());t=this.peekCodePoint(0);var i=this.peekCodePoint(1);if(46===t&&nA(i))for(A.push(this.consumeCodePoint(),this.consumeCodePoint()),e=8;nA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());t=this.peekCodePoint(0),i=this.peekCodePoint(1);var n=this.peekCodePoint(2);if((69===t||101===t)&&((i===tA||i===eA)&&nA(n)||nA(i)))for(A.push(this.consumeCodePoint(),this.consumeCodePoint()),e=8;nA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());return[gA(A),e]},A.prototype.consumeNumericToken=function(){var A=this.consumeNumber(),e=A[0],t=A[1],i=this.peekCodePoint(0),n=this.peekCodePoint(1),a=this.peekCodePoint(2);return dA(i,n,a)?{type:15,number:e,flags:t,unit:this.consumeName()}:37===i?(this.consumeCodePoint(),{type:16,number:e,flags:t}):{type:17,number:e,flags:t}},A.prototype.consumeEscapedCodePoint=function(){var A=this.consumeCodePoint();if(aA(A)){for(var e=l(A);aA(this.peekCodePoint(0))&&e.length<6;)e+=l(this.consumeCodePoint());rA(this.peekCodePoint(0))&&this.consumeCodePoint();var t=parseInt(e,16);return 0===t||function(A){return A>=55296&&A<=57343}(t)||t>1114111?65533:t}return A===iA?65533:A},A.prototype.consumeName=function(){for(var A="";;){var e=this.consumeCodePoint();if(oA(e))A+=l(e);else{if(!cA(e,this.peekCodePoint(0)))return this.reconsumeCodePoint(e),A;A+=l(this.consumeEscapedCodePoint())}}},A}(),OA=function(){function A(A){this._tokens=A}return A.create=function(e){var t=new HA;return t.write(e),new A(t.read())},A.parseValue=function(e){return A.create(e).parseComponentValue()},A.parseValues=function(e){return A.create(e).parseComponentValues()},A.prototype.parseComponentValue=function(){for(var A=this.consumeToken();31===A.type;)A=this.consumeToken();if(32===A.type)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(A);var e=this.consumeComponentValue();do{A=this.consumeToken()}while(31===A.type);if(32===A.type)return e;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},A.prototype.parseComponentValues=function(){for(var A=[];;){var e=this.consumeComponentValue();if(32===e.type)return A;A.push(e),A.push()}},A.prototype.consumeComponentValue=function(){var A=this.consumeToken();switch(A.type){case 11:case 28:case 2:return this.consumeSimpleBlock(A.type);case 19:return this.consumeFunction(A)}return A},A.prototype.consumeSimpleBlock=function(A){for(var e={type:A,values:[]},t=this.consumeToken();;){if(32===t.type||zA(t,A))return e;this.reconsumeToken(t),e.values.push(this.consumeComponentValue()),t=this.consumeToken()}},A.prototype.consumeFunction=function(A){for(var e={name:A.value,values:[],type:18};;){var t=this.consumeToken();if(32===t.type||3===t.type)return e;this.reconsumeToken(t),e.values.push(this.consumeComponentValue())}},A.prototype.consumeToken=function(){var A=this._tokens.shift();return void 0===A?kA:A},A.prototype.reconsumeToken=function(A){this._tokens.unshift(A)},A}(),DA=function(A){return 15===A.type},NA=function(A){return 17===A.type},RA=function(A){return 20===A.type},PA=function(A){return 0===A.type},VA=function(A,e){return RA(A)&&A.value===e},KA=function(A){return 31!==A.type},GA=function(A){return 31!==A.type&&4!==A.type},WA=function(A){var e=[],t=[];return A.forEach((function(A){if(4===A.type){if(0===t.length)throw new Error("Error parsing function args, zero tokens for arg");return e.push(t),void(t=[])}31!==A.type&&t.push(A)})),t.length&&e.push(t),e},zA=function(A,e){return 11===e&&12===A.type||28===e&&29===A.type||2===e&&3===A.type},XA=function(A){return 17===A.type||15===A.type},YA=function(A){return 16===A.type||XA(A)},jA=function(A){return A.length>1?[A[0],A[1]]:[A[0]]},JA={type:17,number:0,flags:4},ZA={type:16,number:50,flags:4},qA={type:16,number:100,flags:4},_A=function(A,e,t){var i=A[0],n=A[1];return[$A(i,e),$A(void 0!==n?n:i,t)]},$A=function(A,e){if(16===A.type)return A.number/100*e;if(DA(A))switch(A.unit){case"rem":case"em":return 16*A.number;default:return A.number}return A.number},Ae="grad",ee="turn",te=function(A,e){if(15===e.type)switch(e.unit){case"deg":return Math.PI*e.number/180;case Ae:return Math.PI/200*e.number;case"rad":return e.number;case ee:return 2*Math.PI*e.number}throw new Error("Unsupported angle type")},ie=function(A){return 15===A.type&&("deg"===A.unit||A.unit===Ae||"rad"===A.unit||A.unit===ee)},ne=function(A){switch(A.filter(RA).map((function(A){return A.value})).join(" ")){case"to bottom right":case"to right bottom":case"left top":case"top left":return[JA,JA];case"to top":case"bottom":return ae(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[JA,qA];case"to right":case"left":return ae(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[qA,qA];case"to bottom":case"top":return ae(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[qA,JA];case"to left":case"right":return ae(270)}return 0},ae=function(A){return Math.PI*A/180},re=function(A,e){if(18===e.type){var t=ue[e.name];if(void 0===t)throw new Error('Attempting to parse an unsupported color function "'+e.name+'"');return t(A,e.values)}if(5===e.type){if(3===e.value.length){var i=e.value.substring(0,1),n=e.value.substring(1,2),a=e.value.substring(2,3);return le(parseInt(i+i,16),parseInt(n+n,16),parseInt(a+a,16),1)}if(4===e.value.length){i=e.value.substring(0,1),n=e.value.substring(1,2),a=e.value.substring(2,3);var r=e.value.substring(3,4);return le(parseInt(i+i,16),parseInt(n+n,16),parseInt(a+a,16),parseInt(r+r,16)/255)}if(6===e.value.length)return i=e.value.substring(0,2),n=e.value.substring(2,4),a=e.value.substring(4,6),le(parseInt(i,16),parseInt(n,16),parseInt(a,16),1);if(8===e.value.length)return i=e.value.substring(0,2),n=e.value.substring(2,4),a=e.value.substring(4,6),r=e.value.substring(6,8),le(parseInt(i,16),parseInt(n,16),parseInt(a,16),parseInt(r,16)/255)}if(20===e.type){var s=we[e.value.toUpperCase()];if(void 0!==s)return s}return we.TRANSPARENT},se=function(A){return 0==(255&A)},oe=function(A){var e=255&A,t=255&A>>8,i=255&A>>16,n=255&A>>24;return e<255?"rgba("+n+","+i+","+t+","+e/255+")":"rgb("+n+","+i+","+t+")"},le=function(A,e,t,i){return(A<<24|e<<16|t<<8|Math.round(255*i)<<0)>>>0},ce=function(A,e){if(17===A.type)return A.number;if(16===A.type){var t=3===e?1:255;return 3===e?A.number/100*t:Math.round(A.number/100*t)}return 0},de=function(A,e){var t=e.filter(GA);if(3===t.length){var i=t.map(ce),n=i[0],a=i[1],r=i[2];return le(n,a,r,1)}if(4===t.length){var s=t.map(ce),o=(n=s[0],a=s[1],r=s[2],s[3]);return le(n,a,r,o)}return 0};function he(A,e,t){return t<0&&(t+=1),t>=1&&(t-=1),t<1/6?(e-A)*t*6+A:t<.5?e:t<2/3?6*(e-A)*(2/3-t)+A:A}var ge=function(A,e){var t=e.filter(GA),i=t[0],n=t[1],a=t[2],r=t[3],s=(17===i.type?ae(i.number):te(A,i))/(2*Math.PI),o=YA(n)?n.number/100:0,l=YA(a)?a.number/100:0,c=void 0!==r&&YA(r)?$A(r,1):1;if(0===o)return le(255*l,255*l,255*l,1);var d=l<=.5?l*(o+1):l+o-l*o,h=2*l-d,g=he(h,d,s+1/3),u=he(h,d,s),p=he(h,d,s-1/3);return le(255*g,255*u,255*p,c)},ue={hsl:ge,hsla:ge,rgb:de,rgba:de},pe=function(A,e){return re(A,OA.create(e).parseComponentValue())},we={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},me={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(A,e){return e.map((function(A){if(RA(A))switch(A.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},fe={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Be=function(A,e){var t=re(A,e[0]),i=e[1];return i&&YA(i)?{color:t,stop:i}:{color:t,stop:null}},Ee=function(A,e){var t=A[0],i=A[A.length-1];null===t.stop&&(t.stop=JA),null===i.stop&&(i.stop=qA);for(var n=[],a=0,r=0;ra?n.push(o):n.push(a),a=o}else n.push(null)}var l=null;for(r=0;rA.optimumDistance)?{optimumCorner:e,optimumDistance:s}:A}),{optimumDistance:n?1/0:-1/0,optimumCorner:null}).optimumCorner},ye=function(A,e){var t=ae(180),i=[];return WA(e).forEach((function(e,n){if(0===n){var a=e[0];if(20===a.type&&-1!==["top","left","right","bottom"].indexOf(a.value))return void(t=ne(e));if(ie(a))return void(t=(te(A,a)+ae(270))%ae(360))}var r=Be(A,e);i.push(r)})),{angle:t,stops:i,type:1}},Fe="closest-side",xe="farthest-side",Qe="closest-corner",Ue="farthest-corner",Ie="circle",Se="ellipse",Te="cover",Le="contain",Me=function(A,e){var t=0,i=3,n=[],a=[];return WA(e).forEach((function(e,r){var s=!0;if(0===r?s=e.reduce((function(A,e){if(RA(e))switch(e.value){case"center":return a.push(ZA),!1;case"top":case"left":return a.push(JA),!1;case"right":case"bottom":return a.push(qA),!1}else if(YA(e)||XA(e))return a.push(e),!1;return A}),s):1===r&&(s=e.reduce((function(A,e){if(RA(e))switch(e.value){case Ie:return t=0,!1;case Se:return t=1,!1;case Le:case Fe:return i=0,!1;case xe:return i=1,!1;case Qe:return i=2,!1;case Te:case Ue:return i=3,!1}else if(XA(e)||YA(e))return Array.isArray(i)||(i=[]),i.push(e),!1;return A}),s)),s){var o=Be(A,e);n.push(o)}})),{size:i,shape:t,stops:n,position:a,type:2}},ke=function(A,e){if(22===e.type){var t={url:e.value,type:0};return A.cache.addImage(e.value),t}if(18===e.type){var i=Oe[e.name];if(void 0===i)throw new Error('Attempting to parse an unsupported image function "'+e.name+'"');return i(A,e.values)}throw new Error("Unsupported image type "+e.type)};var He,Oe={"linear-gradient":function(A,e){var t=ae(180),i=[];return WA(e).forEach((function(e,n){if(0===n){var a=e[0];if(20===a.type&&"to"===a.value)return void(t=ne(e));if(ie(a))return void(t=te(A,a))}var r=Be(A,e);i.push(r)})),{angle:t,stops:i,type:1}},"-moz-linear-gradient":ye,"-ms-linear-gradient":ye,"-o-linear-gradient":ye,"-webkit-linear-gradient":ye,"radial-gradient":function(A,e){var t=0,i=3,n=[],a=[];return WA(e).forEach((function(e,r){var s=!0;if(0===r){var o=!1;s=e.reduce((function(A,e){if(o)if(RA(e))switch(e.value){case"center":return a.push(ZA),A;case"top":case"left":return a.push(JA),A;case"right":case"bottom":return a.push(qA),A}else(YA(e)||XA(e))&&a.push(e);else if(RA(e))switch(e.value){case Ie:return t=0,!1;case Se:return t=1,!1;case"at":return o=!0,!1;case Fe:return i=0,!1;case Te:case xe:return i=1,!1;case Le:case Qe:return i=2,!1;case Ue:return i=3,!1}else if(XA(e)||YA(e))return Array.isArray(i)||(i=[]),i.push(e),!1;return A}),s)}if(s){var l=Be(A,e);n.push(l)}})),{size:i,shape:t,stops:n,position:a,type:2}},"-moz-radial-gradient":Me,"-ms-radial-gradient":Me,"-o-radial-gradient":Me,"-webkit-radial-gradient":Me,"-webkit-gradient":function(A,e){var t=ae(180),i=[],n=1;return WA(e).forEach((function(e,t){var a=e[0];if(0===t){if(RA(a)&&"linear"===a.value)return void(n=1);if(RA(a)&&"radial"===a.value)return void(n=2)}if(18===a.type)if("from"===a.name){var r=re(A,a.values[0]);i.push({stop:JA,color:r})}else if("to"===a.name)r=re(A,a.values[0]),i.push({stop:qA,color:r});else if("color-stop"===a.name){var s=a.values.filter(GA);if(2===s.length){r=re(A,s[1]);var o=s[0];NA(o)&&i.push({stop:{type:16,number:100*o.number,flags:o.flags},color:r})}}})),1===n?{angle:(t+ae(180))%ae(360),stops:i,type:n}:{size:3,shape:0,stops:i,position:[],type:n}}},De={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(A,e){if(0===e.length)return[];var t=e[0];return 20===t.type&&"none"===t.value?[]:e.filter((function(A){return GA(A)&&function(A){return!(20===A.type&&"none"===A.value||18===A.type&&!Oe[A.name])}(A)})).map((function(e){return ke(A,e)}))}},Ne={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(A,e){return e.map((function(A){if(RA(A))switch(A.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},Re={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(A,e){return WA(e).map((function(A){return A.filter(YA)})).map(jA)}},Pe={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(A,e){return WA(e).map((function(A){return A.filter(RA).map((function(A){return A.value})).join(" ")})).map(Ve)}},Ve=function(A){switch(A){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;default:return 0}};!function(A){A.AUTO="auto",A.CONTAIN="contain",A.COVER="cover"}(He||(He={}));var Ke,Ge={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(A,e){return WA(e).map((function(A){return A.filter(We)}))}},We=function(A){return RA(A)||YA(A)},ze=function(A){return{name:"border-"+A+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},Xe=ze("top"),Ye=ze("right"),je=ze("bottom"),Je=ze("left"),Ze=function(A){return{name:"border-radius-"+A,initialValue:"0 0",prefix:!1,type:1,parse:function(A,e){return jA(e.filter(YA))}}},qe=Ze("top-left"),_e=Ze("top-right"),$e=Ze("bottom-right"),At=Ze("bottom-left"),et=function(A){return{name:"border-"+A+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(A,e){switch(e){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},tt=et("top"),it=et("right"),nt=et("bottom"),at=et("left"),rt=function(A){return{name:"border-"+A+"-width",initialValue:"0",type:0,prefix:!1,parse:function(A,e){return DA(e)?e.number:0}}},st=rt("top"),ot=rt("right"),lt=rt("bottom"),ct=rt("left"),dt={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},ht={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(A,e){return"rtl"===e?1:0}},gt={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(A,e){return e.filter(RA).reduce((function(A,e){return A|ut(e.value)}),0)}},ut=function(A){switch(A){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},pt={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(A,e){switch(e){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},wt={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(A,e){return 20===e.type&&"normal"===e.value?0:17===e.type||15===e.type?e.number:0}};!function(A){A.NORMAL="normal",A.STRICT="strict"}(Ke||(Ke={}));var mt,ft={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(A,e){return"strict"===e?Ke.STRICT:Ke.NORMAL}},Bt={name:"line-height",initialValue:"normal",prefix:!1,type:4},Et=function(A,e){return RA(A)&&"normal"===A.value?1.2*e:17===A.type?e*A.number:YA(A)?$A(A,e):e},Ct={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(A,e){return 20===e.type&&"none"===e.value?null:ke(A,e)}},bt={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(A,e){return"inside"===e?0:1}},vt={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(A,e){switch(e){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;default:return-1}}},yt=function(A){return{name:"margin-"+A,initialValue:"0",prefix:!1,type:4}},Ft=yt("top"),xt=yt("right"),Qt=yt("bottom"),Ut=yt("left"),It={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(A,e){return e.filter(RA).map((function(A){switch(A.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;default:return 0}}))}},St={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(A,e){return"break-word"===e?"break-word":"normal"}},Tt=function(A){return{name:"padding-"+A,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},Lt=Tt("top"),Mt=Tt("right"),kt=Tt("bottom"),Ht=Tt("left"),Ot={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(A,e){switch(e){case"right":return 2;case"center":case"justify":return 1;default:return 0}}},Dt={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(A,e){switch(e){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},Nt={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(A,e){return 1===e.length&&VA(e[0],"none")?[]:WA(e).map((function(e){for(var t={color:we.TRANSPARENT,offsetX:JA,offsetY:JA,blur:JA},i=0,n=0;n1?1:0],this.overflowWrap=mi(A,St,e.overflowWrap),this.paddingTop=mi(A,Lt,e.paddingTop),this.paddingRight=mi(A,Mt,e.paddingRight),this.paddingBottom=mi(A,kt,e.paddingBottom),this.paddingLeft=mi(A,Ht,e.paddingLeft),this.paintOrder=mi(A,di,e.paintOrder),this.position=mi(A,Dt,e.position),this.textAlign=mi(A,Ot,e.textAlign),this.textDecorationColor=mi(A,Zt,null!==(t=e.textDecorationColor)&&void 0!==t?t:e.color),this.textDecorationLine=mi(A,qt,null!==(i=e.textDecorationLine)&&void 0!==i?i:e.textDecoration),this.textShadow=mi(A,Nt,e.textShadow),this.textTransform=mi(A,Rt,e.textTransform),this.transform=mi(A,Pt,e.transform),this.transformOrigin=mi(A,Wt,e.transformOrigin),this.visibility=mi(A,zt,e.visibility),this.webkitTextStrokeColor=mi(A,hi,e.webkitTextStrokeColor),this.webkitTextStrokeWidth=mi(A,gi,e.webkitTextStrokeWidth),this.wordBreak=mi(A,Xt,e.wordBreak),this.zIndex=mi(A,Yt,e.zIndex)}return A.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&0===this.visibility},A.prototype.isTransparent=function(){return se(this.backgroundColor)},A.prototype.isTransformed=function(){return null!==this.transform},A.prototype.isPositioned=function(){return 0!==this.position},A.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},A.prototype.isFloating=function(){return 0!==this.float},A.prototype.isInlineLevel=function(){return ii(this.display,4)||ii(this.display,33554432)||ii(this.display,268435456)||ii(this.display,536870912)||ii(this.display,67108864)||ii(this.display,134217728)},A}(),pi=function(A,e){this.content=mi(A,ni,e.content),this.quotes=mi(A,oi,e.quotes)},wi=function(A,e){this.counterIncrement=mi(A,ai,e.counterIncrement),this.counterReset=mi(A,ri,e.counterReset)},mi=function(A,e,t){var i=new HA,n=null!=t?t.toString():e.initialValue;i.write(n);var a=new OA(i.read());switch(e.type){case 2:var r=a.parseComponentValue();return e.parse(A,RA(r)?r.value:e.initialValue);case 0:return e.parse(A,a.parseComponentValue());case 1:return e.parse(A,a.parseComponentValues());case 4:return a.parseComponentValue();case 3:switch(e.format){case"angle":return te(A,a.parseComponentValue());case"color":return re(A,a.parseComponentValue());case"image":return ke(A,a.parseComponentValue());case"length":var s=a.parseComponentValue();return XA(s)?s:JA;case"length-percentage":var o=a.parseComponentValue();return YA(o)?o:JA;case"time":return jt.parse(A,a.parseComponentValue())}}},fi=function(A,e){var t=function(A){switch(A.getAttribute("data-html2canvas-debug")){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}}(A);return 1===t||e===t},Bi=function(A,e){this.context=A,this.textNodes=[],this.elements=[],this.flags=0,fi(e,3),this.styles=new ui(A,window.getComputedStyle(e,null)),yn(e)&&(this.styles.animationDuration.some((function(A){return A>0}))&&(e.style.animationDuration="0s"),null!==this.styles.transform&&(e.style.transform="none")),this.bounds=s(this.context,e),fi(e,4)&&(this.flags|=16)},Ei="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ci="undefined"==typeof Uint8Array?[]:new Uint8Array(256),bi=0;bi=0){if(A<55296||A>56319&&A<=65535)return e=((e=this.index[A>>5])<<2)+(31&A),this.data[e];if(A<=65535)return e=((e=this.index[2048+(A-55296>>5)])<<2)+(31&A),this.data[e];if(A>11),e=this.index[e],e+=A>>5&63,e=((e=this.index[e])<<2)+(31&A),this.data[e];if(A<=1114111)return this.data[this.highValueIndex]}return this.errorValue},A}(),Fi="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",xi="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Qi=0;Qi>10),r%1024+56320)),(n+1===t||i.length>16384)&&(a+=String.fromCharCode.apply(String,i),i.length=0)}return a},ki=function(A,e){var t,i,n,a=function(A){var e,t,i,n,a,r=.75*A.length,s=A.length,o=0;"="===A[A.length-1]&&(r--,"="===A[A.length-2]&&r--);var l="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(r):new Array(r),c=Array.isArray(l)?l:new Uint8Array(l);for(e=0;e>4,c[o++]=(15&i)<<4|n>>2,c[o++]=(3&n)<<6|63&a;return l}(A),r=Array.isArray(a)?function(A){for(var e=A.length,t=[],i=0;i=55296&&n<=56319&&t=t)return{done:!0,value:null};for(var A=Hi;ir.x||n.y>r.y;return r=n,0===e||s}));return A.body.removeChild(e),s}(document);return Object.defineProperty(Ki,"SUPPORT_WORD_BREAKING",{value:A}),A},get SUPPORT_SVG_DRAWING(){var A=function(A){var e=new Image,t=A.createElement("canvas"),i=t.getContext("2d");if(!i)return!1;e.src="data:image/svg+xml,";try{i.drawImage(e,0,0),t.toDataURL()}catch(A){return!1}return!0}(document);return Object.defineProperty(Ki,"SUPPORT_SVG_DRAWING",{value:A}),A},get SUPPORT_FOREIGNOBJECT_DRAWING(){var A="function"==typeof Array.from&&"function"==typeof window.fetch?function(A){var e=A.createElement("canvas"),t=100;e.width=t,e.height=t;var i=e.getContext("2d");if(!i)return Promise.reject(!1);i.fillStyle="rgb(0, 255, 0)",i.fillRect(0,0,t,t);var n=new Image,a=e.toDataURL();n.src=a;var r=Pi(t,t,0,0,n);return i.fillStyle="red",i.fillRect(0,0,t,t),Vi(r).then((function(e){i.drawImage(e,0,0);var n=i.getImageData(0,0,t,t).data;i.fillStyle="red",i.fillRect(0,0,t,t);var r=A.createElement("div");return r.style.backgroundImage="url("+a+")",r.style.height="100px",Ri(n)?Vi(Pi(t,t,0,0,r)):Promise.reject(!1)})).then((function(A){return i.drawImage(A,0,0),Ri(i.getImageData(0,0,t,t).data)})).catch((function(){return!1}))}(document):Promise.resolve(!1);return Object.defineProperty(Ki,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:A}),A},get SUPPORT_CORS_IMAGES(){var A=void 0!==(new Image).crossOrigin;return Object.defineProperty(Ki,"SUPPORT_CORS_IMAGES",{value:A}),A},get SUPPORT_RESPONSE_TYPE(){var A="string"==typeof(new XMLHttpRequest).responseType;return Object.defineProperty(Ki,"SUPPORT_RESPONSE_TYPE",{value:A}),A},get SUPPORT_CORS_XHR(){var A="withCredentials"in new XMLHttpRequest;return Object.defineProperty(Ki,"SUPPORT_CORS_XHR",{value:A}),A},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var A=!("undefined"==typeof Intl||!Intl.Segmenter);return Object.defineProperty(Ki,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:A}),A}},Gi=function(A,e){this.text=A,this.bounds=e},Wi=function(A,e){var t=e.ownerDocument;if(t){var i=t.createElement("html2canvaswrapper");i.appendChild(e.cloneNode(!0));var n=e.parentNode;if(n){n.replaceChild(i,e);var a=s(A,i);return i.firstChild&&n.replaceChild(i.firstChild,i),a}}return r.EMPTY},zi=function(A,e,t){var i=A.ownerDocument;if(!i)throw new Error("Node has no owner document");var n=i.createRange();return n.setStart(A,e),n.setEnd(A,e+t),n},Xi=function(A){if(Ki.SUPPORT_NATIVE_TEXT_SEGMENTATION){var e=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(e.segment(A)).map((function(A){return A.segment}))}return function(A){for(var e,t=Ni(A),i=[];!(e=t.next()).done;)e.value&&i.push(e.value.slice());return i}(A)},Yi=function(A,e){return 0!==e.letterSpacing?Xi(A):function(A,e){if(Ki.SUPPORT_NATIVE_TEXT_SEGMENTATION){var t=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(t.segment(A)).map((function(A){return A.segment}))}return Ji(A,e)}(A,e)},ji=[32,160,4961,65792,65793,4153,4241],Ji=function(A,e){for(var t,i=function(A,e){var t=o(A),i=$(t,e),n=i[0],a=i[1],r=i[2],s=t.length,l=0,c=0;return{next:function(){if(c>=s)return{done:!0,value:null};for(var A=P;c0)if(Ki.SUPPORT_RANGE_BOUNDS){var n=zi(i,s,e.length).getClientRects();if(n.length>1){var o=Xi(e),l=0;o.forEach((function(e){a.push(new Gi(e,r.fromDOMRectList(A,zi(i,l+s,e.length).getClientRects()))),l+=e.length}))}else a.push(new Gi(e,r.fromDOMRectList(A,n)))}else{var c=i.splitText(e.length);a.push(new Gi(e,Wi(A,i))),i=c}else Ki.SUPPORT_RANGE_BOUNDS||(i=i.splitText(e.length));s+=e.length})),a}(A,this.text,t,e)},qi=function(A,e){switch(e){case 1:return A.toLowerCase();case 3:return A.replace(_i,$i);case 2:return A.toUpperCase();default:return A}},_i=/(^|\s|:|-|\(|\))([a-z])/g,$i=function(A,e,t){return A.length>0?e+t.toUpperCase():A},An=function(A){function t(e,t){var i=A.call(this,e,t)||this;return i.src=t.currentSrc||t.src,i.intrinsicWidth=t.naturalWidth,i.intrinsicHeight=t.naturalHeight,i.context.cache.addImage(i.src),i}return e(t,A),t}(Bi),en=function(A){function t(e,t){var i=A.call(this,e,t)||this;return i.canvas=t,i.intrinsicWidth=t.width,i.intrinsicHeight=t.height,i}return e(t,A),t}(Bi),tn=function(A){function t(e,t){var i=A.call(this,e,t)||this,n=new XMLSerializer,a=s(e,t);return t.setAttribute("width",a.width+"px"),t.setAttribute("height",a.height+"px"),i.svg="data:image/svg+xml,"+encodeURIComponent(n.serializeToString(t)),i.intrinsicWidth=t.width.baseVal.value,i.intrinsicHeight=t.height.baseVal.value,i.context.cache.addImage(i.svg),i}return e(t,A),t}(Bi),nn=function(A){function t(e,t){var i=A.call(this,e,t)||this;return i.value=t.value,i}return e(t,A),t}(Bi),an=function(A){function t(e,t){var i=A.call(this,e,t)||this;return i.start=t.start,i.reversed="boolean"==typeof t.reversed&&!0===t.reversed,i}return e(t,A),t}(Bi),rn=[{type:15,flags:0,unit:"px",number:3}],sn=[{type:16,flags:0,number:50}],on="checkbox",ln="radio",cn="password",dn=707406591,hn=function(A){function t(e,t){var i,n,a,s=A.call(this,e,t)||this;switch(s.type=t.type.toLowerCase(),s.checked=t.checked,s.value=0===(a=(n=t).type===cn?new Array(n.value.length+1).join("•"):n.value).length?n.placeholder||"":a,s.type!==on&&s.type!==ln||(s.styles.backgroundColor=3739148031,s.styles.borderTopColor=s.styles.borderRightColor=s.styles.borderBottomColor=s.styles.borderLeftColor=2779096575,s.styles.borderTopWidth=s.styles.borderRightWidth=s.styles.borderBottomWidth=s.styles.borderLeftWidth=1,s.styles.borderTopStyle=s.styles.borderRightStyle=s.styles.borderBottomStyle=s.styles.borderLeftStyle=1,s.styles.backgroundClip=[0],s.styles.backgroundOrigin=[0],s.bounds=(i=s.bounds).width>i.height?new r(i.left+(i.width-i.height)/2,i.top,i.height,i.height):i.width0)t.textNodes.push(new Zi(A,n,t.styles));else if(vn(n))if(Dn(n)&&n.assignedNodes)n.assignedNodes().forEach((function(e){return mn(A,e,t,i)}));else{var r=fn(A,n);r.styles.isVisible()&&(En(n,r,i)?r.flags|=4:Cn(r.styles)&&(r.flags|=2),-1!==wn.indexOf(n.tagName)&&(r.flags|=8),t.elements.push(r),n.slot,n.shadowRoot?mn(A,n.shadowRoot,r,i):Hn(n)||In(n)||On(n)||mn(A,n,r,i))}},fn=function(A,e){return Ln(e)?new An(A,e):Tn(e)?new en(A,e):In(e)?new tn(A,e):xn(e)?new nn(A,e):Qn(e)?new an(A,e):Un(e)?new hn(A,e):On(e)?new gn(A,e):Hn(e)?new un(A,e):Mn(e)?new pn(A,e):new Bi(A,e)},Bn=function(A,e){var t=fn(A,e);return t.flags|=4,mn(A,e,t,t),t},En=function(A,e,t){return e.styles.isPositionedWithZIndex()||e.styles.opacity<1||e.styles.isTransformed()||Sn(A)&&t.styles.isTransparent()},Cn=function(A){return A.isPositioned()||A.isFloating()},bn=function(A){return A.nodeType===Node.TEXT_NODE},vn=function(A){return A.nodeType===Node.ELEMENT_NODE},yn=function(A){return vn(A)&&void 0!==A.style&&!Fn(A)},Fn=function(A){return"object"==typeof A.className},xn=function(A){return"LI"===A.tagName},Qn=function(A){return"OL"===A.tagName},Un=function(A){return"INPUT"===A.tagName},In=function(A){return"svg"===A.tagName},Sn=function(A){return"BODY"===A.tagName},Tn=function(A){return"CANVAS"===A.tagName},Ln=function(A){return"IMG"===A.tagName},Mn=function(A){return"IFRAME"===A.tagName},kn=function(A){return"STYLE"===A.tagName},Hn=function(A){return"TEXTAREA"===A.tagName},On=function(A){return"SELECT"===A.tagName},Dn=function(A){return"SLOT"===A.tagName},Nn=function(A){return A.tagName.indexOf("-")>0},Rn=function(){function A(){this.counters={}}return A.prototype.getCounterValue=function(A){var e=this.counters[A];return e&&e.length?e[e.length-1]:1},A.prototype.getCounterValues=function(A){return this.counters[A]||[]},A.prototype.pop=function(A){var e=this;A.forEach((function(A){return e.counters[A].pop()}))},A.prototype.parse=function(A){var e=this,t=A.counterIncrement,i=A.counterReset,n=!0;null!==t&&t.forEach((function(A){var t=e.counters[A.counter];t&&0!==A.increment&&(n=!1,t.length||t.push(1),t[Math.max(0,t.length-1)]+=A.increment)}));var a=[];return n&&i.forEach((function(A){var t=e.counters[A.counter];a.push(A.counter),t||(t=e.counters[A.counter]=[]),t.push(A.reset)})),a},A}(),Pn={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},Vn={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},Kn={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},Gn={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},Wn=function(A,e,t,i,n,a){return At?$n(A,n,a.length>0):i.integers.reduce((function(e,t,n){for(;A>=t;)A-=t,e+=i.values[n];return e}),"")+a},zn=function(A,e,t,i){var n="";do{t||A--,n=i(A)+n,A/=e}while(A*e>=e);return n},Xn=function(A,e,t,i,n){var a=t-e+1;return(A<0?"-":"")+(zn(Math.abs(A),a,i,(function(A){return l(Math.floor(A%a)+e)}))+n)},Yn=function(A,e,t){void 0===t&&(t=". ");var i=e.length;return zn(Math.abs(A),i,!1,(function(A){return e[Math.floor(A%i)]}))+t},jn=function(A,e,t,i,n,a){if(A<-9999||A>9999)return $n(A,4,n.length>0);var r=Math.abs(A),s=n;if(0===r)return e[0]+s;for(var o=0;r>0&&o<=4;o++){var l=r%10;0===l&&ii(a,1)&&""!==s?s=e[l]+s:l>1||1===l&&0===o||1===l&&1===o&&ii(a,2)||1===l&&1===o&&ii(a,4)&&A>100||1===l&&o>1&&ii(a,8)?s=e[l]+(o>0?t[o-1]:"")+s:1===l&&o>0&&(s=t[o-1]+s),r=Math.floor(r/10)}return(A<0?i:"")+s},Jn="十百千萬",Zn="拾佰仟萬",qn="マイナス",_n="마이너스",$n=function(A,e,t){var i=t?". ":"",n=t?"、":"",a=t?", ":"",r=t?" ":"";switch(e){case 0:return"•"+r;case 1:return"◦"+r;case 2:return"◾"+r;case 5:var s=Xn(A,48,57,!0,i);return s.length<4?"0"+s:s;case 4:return Yn(A,"〇一二三四五六七八九",n);case 6:return Wn(A,1,3999,Pn,3,i).toLowerCase();case 7:return Wn(A,1,3999,Pn,3,i);case 8:return Xn(A,945,969,!1,i);case 9:return Xn(A,97,122,!1,i);case 10:return Xn(A,65,90,!1,i);case 11:return Xn(A,1632,1641,!0,i);case 12:case 49:return Wn(A,1,9999,Vn,3,i);case 35:return Wn(A,1,9999,Vn,3,i).toLowerCase();case 13:return Xn(A,2534,2543,!0,i);case 14:case 30:return Xn(A,6112,6121,!0,i);case 15:return Yn(A,"子丑寅卯辰巳午未申酉戌亥",n);case 16:return Yn(A,"甲乙丙丁戊己庚辛壬癸",n);case 17:case 48:return jn(A,"零一二三四五六七八九",Jn,"負",n,14);case 47:return jn(A,"零壹貳參肆伍陸柒捌玖",Zn,"負",n,15);case 42:return jn(A,"零一二三四五六七八九",Jn,"负",n,14);case 41:return jn(A,"零壹贰叁肆伍陆柒捌玖",Zn,"负",n,15);case 26:return jn(A,"〇一二三四五六七八九","十百千万",qn,n,0);case 25:return jn(A,"零壱弐参四伍六七八九","拾百千万",qn,n,7);case 31:return jn(A,"영일이삼사오육칠팔구","십백천만",_n,a,7);case 33:return jn(A,"零一二三四五六七八九","十百千萬",_n,a,0);case 32:return jn(A,"零壹貳參四五六七八九","拾百千",_n,a,7);case 18:return Xn(A,2406,2415,!0,i);case 20:return Wn(A,1,19999,Gn,3,i);case 21:return Xn(A,2790,2799,!0,i);case 22:return Xn(A,2662,2671,!0,i);case 22:return Wn(A,1,10999,Kn,3,i);case 23:return Yn(A,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return Yn(A,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return Xn(A,3302,3311,!0,i);case 28:return Yn(A,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",n);case 29:return Yn(A,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",n);case 34:return Xn(A,3792,3801,!0,i);case 37:return Xn(A,6160,6169,!0,i);case 38:return Xn(A,4160,4169,!0,i);case 39:return Xn(A,2918,2927,!0,i);case 40:return Xn(A,1776,1785,!0,i);case 43:return Xn(A,3046,3055,!0,i);case 44:return Xn(A,3174,3183,!0,i);case 45:return Xn(A,3664,3673,!0,i);case 46:return Xn(A,3872,3881,!0,i);default:return Xn(A,48,57,!0,i)}},Aa="data-html2canvas-ignore",ea=function(){function A(A,e,t){if(this.context=A,this.options=t,this.scrolledElements=[],this.referenceElement=e,this.counters=new Rn,this.quoteDepth=0,!e.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(e.ownerDocument.documentElement,!1)}return A.prototype.toIFrame=function(A,e){var t=this,a=ia(A,e);if(!a.contentWindow)return Promise.reject("Unable to find iframe window");var r=A.defaultView.pageXOffset,s=A.defaultView.pageYOffset,o=a.contentWindow,l=o.document,c=ra(a).then((function(){return i(t,void 0,void 0,(function(){var A,t;return n(this,(function(i){switch(i.label){case 0:return this.scrolledElements.forEach(da),o&&(o.scrollTo(e.left,e.top),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||o.scrollY===e.top&&o.scrollX===e.left||(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(o.scrollX-e.left,o.scrollY-e.top,0,0))),A=this.options.onclone,void 0===(t=this.clonedReferenceElement)?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:l.fonts&&l.fonts.ready?[4,l.fonts.ready]:[3,2];case 1:i.sent(),i.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,aa(l)]:[3,4];case 3:i.sent(),i.label=4;case 4:return"function"==typeof A?[2,Promise.resolve().then((function(){return A(l,t)})).then((function(){return a}))]:[2,a]}}))}))}));return l.open(),l.write(la(document.doctype)+""),ca(this.referenceElement.ownerDocument,r,s),l.replaceChild(l.adoptNode(this.documentElement),l.documentElement),l.close(),c},A.prototype.createElementClone=function(A){if(fi(A,2),Tn(A))return this.createCanvasClone(A);if(kn(A))return this.createStyleClone(A);var e=A.cloneNode(!1);return Ln(e)&&(Ln(A)&&A.currentSrc&&A.currentSrc!==A.src&&(e.src=A.currentSrc,e.srcset=""),"lazy"===e.loading&&(e.loading="eager")),Nn(e)?this.createCustomElementClone(e):e},A.prototype.createCustomElementClone=function(A){var e=document.createElement("html2canvascustomelement");return oa(A.style,e),e},A.prototype.createStyleClone=function(A){try{var e=A.sheet;if(e&&e.cssRules){var t=[].slice.call(e.cssRules,0).reduce((function(A,e){return e&&"string"==typeof e.cssText?A+e.cssText:A}),""),i=A.cloneNode(!1);return i.textContent=t,i}}catch(A){if(this.context.logger.error("Unable to access cssRules property",A),"SecurityError"!==A.name)throw A}return A.cloneNode(!1)},A.prototype.createCanvasClone=function(A){var e;if(this.options.inlineImages&&A.ownerDocument){var t=A.ownerDocument.createElement("img");try{return t.src=A.toDataURL(),t}catch(e){this.context.logger.info("Unable to inline canvas contents, canvas is tainted",A)}}var i=A.cloneNode(!1);try{i.width=A.width,i.height=A.height;var n=A.getContext("2d"),a=i.getContext("2d");if(a)if(!this.options.allowTaint&&n)a.putImageData(n.getImageData(0,0,A.width,A.height),0,0);else{var r=null!==(e=A.getContext("webgl2"))&&void 0!==e?e:A.getContext("webgl");if(r){var s=r.getContextAttributes();!1===(null==s?void 0:s.preserveDrawingBuffer)&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",A)}a.drawImage(A,0,0)}return i}catch(e){this.context.logger.info("Unable to clone canvas as it is tainted",A)}return i},A.prototype.appendChildNode=function(A,e,t){vn(e)&&("SCRIPT"===e.tagName||e.hasAttribute(Aa)||"function"==typeof this.options.ignoreElements&&this.options.ignoreElements(e))||this.options.copyStyles&&vn(e)&&kn(e)||A.appendChild(this.cloneNode(e,t))},A.prototype.cloneNode=function(A,e){var t=this;if(bn(A))return document.createTextNode(A.data);if(!A.ownerDocument)return A.cloneNode(!1);var i=A.ownerDocument.defaultView;if(i&&vn(A)&&(yn(A)||Fn(A))){var n=this.createElementClone(A);n.style.transitionProperty="none";var a=i.getComputedStyle(A),r=i.getComputedStyle(A,":before"),s=i.getComputedStyle(A,":after");this.referenceElement===A&&yn(n)&&(this.clonedReferenceElement=n),Sn(n)&&pa(n);var o=this.counters.parse(new wi(this.context,a)),l=this.resolvePseudoContent(A,n,r,Ui.BEFORE);Nn(A)&&(e=!0);for(var c=A.shadowRoot?A.shadowRoot.firstChild:A.firstChild;c;c=c.nextSibling)if(vn(c)&&Dn(c)&&"function"==typeof c.assignedNodes){var d=c.assignedNodes();d.length&&d.forEach((function(A){return t.appendChildNode(n,A,e)}))}else this.appendChildNode(n,c,e);l&&n.insertBefore(l,n.firstChild);var h=this.resolvePseudoContent(A,n,s,Ui.AFTER);return h&&n.appendChild(h),this.counters.pop(o),(a&&(this.options.copyStyles||Fn(A))&&!Mn(A)||e)&&oa(a,n),0===A.scrollTop&&0===A.scrollLeft||this.scrolledElements.push([n,A.scrollLeft,A.scrollTop]),(Hn(A)||On(A))&&(Hn(n)||On(n))&&(n.value=A.value),n}return A.cloneNode(!1)},A.prototype.resolvePseudoContent=function(A,e,t,i){var n=this;if(t){var a=t.content,r=e.ownerDocument;if(r&&a&&"none"!==a&&"-moz-alt-content"!==a&&"none"!==t.display){this.counters.parse(new wi(this.context,t));var s=new pi(this.context,t),o=r.createElement("html2canvaspseudoelement");oa(t,o),s.content.forEach((function(e){if(0===e.type)o.appendChild(r.createTextNode(e.value));else if(22===e.type){var t=r.createElement("img");t.src=e.value,t.style.opacity="1",o.appendChild(t)}else if(18===e.type){if("attr"===e.name){var i=e.values.filter(RA);i.length&&o.appendChild(r.createTextNode(A.getAttribute(i[0].value)||""))}else if("counter"===e.name){var a=e.values.filter(GA),l=a[0],c=a[1];if(l&&RA(l)){var d=n.counters.getCounterValue(l.value),h=c&&RA(c)?vt.parse(n.context,c.value):3;o.appendChild(r.createTextNode($n(d,h,!1)))}}else if("counters"===e.name){var g=e.values.filter(GA),u=(l=g[0],g[1]);if(c=g[2],l&&RA(l)){var p=n.counters.getCounterValues(l.value),w=c&&RA(c)?vt.parse(n.context,c.value):3,m=u&&0===u.type?u.value:"",f=p.map((function(A){return $n(A,w,!1)})).join(m);o.appendChild(r.createTextNode(f))}}}else if(20===e.type)switch(e.value){case"open-quote":o.appendChild(r.createTextNode(li(s.quotes,n.quoteDepth++,!0)));break;case"close-quote":o.appendChild(r.createTextNode(li(s.quotes,--n.quoteDepth,!1)));break;default:o.appendChild(r.createTextNode(e.value))}})),o.className=ha+" "+ga;var l=i===Ui.BEFORE?" "+ha:" "+ga;return Fn(e)?e.className.baseValue+=l:e.className+=l,o}}},A.destroy=function(A){return!!A.parentNode&&(A.parentNode.removeChild(A),!0)},A}();!function(A){A[A.BEFORE=0]="BEFORE",A[A.AFTER=1]="AFTER"}(Ui||(Ui={}));var ta,ia=function(A,e){var t=A.createElement("iframe");return t.className="html2canvas-container",t.style.visibility="hidden",t.style.position="fixed",t.style.left="-10000px",t.style.top="0px",t.style.border="0",t.width=e.width.toString(),t.height=e.height.toString(),t.scrolling="no",t.setAttribute(Aa,"true"),A.body.appendChild(t),t},na=function(A){return new Promise((function(e){A.complete?e():A.src?(A.onload=e,A.onerror=e):e()}))},aa=function(A){return Promise.all([].slice.call(A.images,0).map(na))},ra=function(A){return new Promise((function(e,t){var i=A.contentWindow;if(!i)return t("No window assigned for iframe");var n=i.document;i.onload=A.onload=function(){i.onload=A.onload=null;var t=setInterval((function(){n.body.childNodes.length>0&&"complete"===n.readyState&&(clearInterval(t),e(A))}),50)}}))},sa=["all","d","content"],oa=function(A,e){for(var t=A.length-1;t>=0;t--){var i=A.item(t);-1===sa.indexOf(i)&&e.style.setProperty(i,A.getPropertyValue(i))}return e},la=function(A){var e="";return A&&(e+=""),e},ca=function(A,e,t){A&&A.defaultView&&(e!==A.defaultView.pageXOffset||t!==A.defaultView.pageYOffset)&&A.defaultView.scrollTo(e,t)},da=function(A){var e=A[0],t=A[1],i=A[2];e.scrollLeft=t,e.scrollTop=i},ha="___html2canvas___pseudoelement_before",ga="___html2canvas___pseudoelement_after",ua='{\n content: "" !important;\n display: none !important;\n}',pa=function(A){wa(A,"."+ha+":before"+ua+"\n ."+ga+":after"+ua)},wa=function(A,e){var t=A.ownerDocument;if(t){var i=t.createElement("style");i.textContent=e,A.appendChild(i)}},ma=function(){function A(){}return A.getOrigin=function(e){var t=A._link;return t?(t.href=e,t.href=t.href,t.protocol+t.hostname+t.port):"about:blank"},A.isSameOrigin=function(e){return A.getOrigin(e)===A._origin},A.setContext=function(e){A._link=e.document.createElement("a"),A._origin=A.getOrigin(e.location.href)},A._origin="about:blank",A}(),fa=function(){function A(A,e){this.context=A,this._options=e,this._cache={}}return A.prototype.addImage=function(A){var e=Promise.resolve();return this.has(A)?e:Fa(A)||ba(A)?((this._cache[A]=this.loadImage(A)).catch((function(){})),e):e},A.prototype.match=function(A){return this._cache[A]},A.prototype.loadImage=function(A){return i(this,void 0,void 0,(function(){var e,t,i,a,r=this;return n(this,(function(n){switch(n.label){case 0:return e=ma.isSameOrigin(A),t=!va(A)&&!0===this._options.useCORS&&Ki.SUPPORT_CORS_IMAGES&&!e,i=!va(A)&&!e&&!Fa(A)&&"string"==typeof this._options.proxy&&Ki.SUPPORT_CORS_XHR&&!t,e||!1!==this._options.allowTaint||va(A)||Fa(A)||i||t?(a=A,i?[4,this.proxy(a)]:[3,2]):[2];case 1:a=n.sent(),n.label=2;case 2:return this.context.logger.debug("Added image "+A.substring(0,256)),[4,new Promise((function(A,e){var i=new Image;i.onload=function(){return A(i)},i.onerror=e,(ya(a)||t)&&(i.crossOrigin="anonymous"),i.src=a,!0===i.complete&&setTimeout((function(){return A(i)}),500),r._options.imageTimeout>0&&setTimeout((function(){return e("Timed out ("+r._options.imageTimeout+"ms) loading image")}),r._options.imageTimeout)}))];case 3:return[2,n.sent()]}}))}))},A.prototype.has=function(A){return void 0!==this._cache[A]},A.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},A.prototype.proxy=function(A){var e=this,t=this._options.proxy;if(!t)throw new Error("No proxy defined");var i=A.substring(0,256);return new Promise((function(n,a){var r=Ki.SUPPORT_RESPONSE_TYPE?"blob":"text",s=new XMLHttpRequest;s.onload=function(){if(200===s.status)if("text"===r)n(s.response);else{var A=new FileReader;A.addEventListener("load",(function(){return n(A.result)}),!1),A.addEventListener("error",(function(A){return a(A)}),!1),A.readAsDataURL(s.response)}else a("Failed to proxy resource "+i+" with status code "+s.status)},s.onerror=a;var o=t.indexOf("?")>-1?"&":"?";if(s.open("GET",""+t+o+"url="+encodeURIComponent(A)+"&responseType="+r),"text"!==r&&s instanceof XMLHttpRequest&&(s.responseType=r),e._options.imageTimeout){var l=e._options.imageTimeout;s.timeout=l,s.ontimeout=function(){return a("Timed out ("+l+"ms) proxying "+i)}}s.send()}))},A}(),Ba=/^data:image\/svg\+xml/i,Ea=/^data:image\/.*;base64,/i,Ca=/^data:image\/.*/i,ba=function(A){return Ki.SUPPORT_SVG_DRAWING||!xa(A)},va=function(A){return Ca.test(A)},ya=function(A){return Ea.test(A)},Fa=function(A){return"blob"===A.substr(0,4)},xa=function(A){return"svg"===A.substr(-3).toLowerCase()||Ba.test(A)},Qa=function(){function A(A,e){this.type=0,this.x=A,this.y=e}return A.prototype.add=function(e,t){return new A(this.x+e,this.y+t)},A}(),Ua=function(A,e,t){return new Qa(A.x+(e.x-A.x)*t,A.y+(e.y-A.y)*t)},Ia=function(){function A(A,e,t,i){this.type=1,this.start=A,this.startControl=e,this.endControl=t,this.end=i}return A.prototype.subdivide=function(e,t){var i=Ua(this.start,this.startControl,e),n=Ua(this.startControl,this.endControl,e),a=Ua(this.endControl,this.end,e),r=Ua(i,n,e),s=Ua(n,a,e),o=Ua(r,s,e);return t?new A(this.start,i,r,o):new A(o,s,a,this.end)},A.prototype.add=function(e,t){return new A(this.start.add(e,t),this.startControl.add(e,t),this.endControl.add(e,t),this.end.add(e,t))},A.prototype.reverse=function(){return new A(this.end,this.endControl,this.startControl,this.start)},A}(),Sa=function(A){return 1===A.type},Ta=function(A){var e=A.styles,t=A.bounds,i=_A(e.borderTopLeftRadius,t.width,t.height),n=i[0],a=i[1],r=_A(e.borderTopRightRadius,t.width,t.height),s=r[0],o=r[1],l=_A(e.borderBottomRightRadius,t.width,t.height),c=l[0],d=l[1],h=_A(e.borderBottomLeftRadius,t.width,t.height),g=h[0],u=h[1],p=[];p.push((n+s)/t.width),p.push((g+c)/t.width),p.push((a+u)/t.height),p.push((o+d)/t.height);var w=Math.max.apply(Math,p);w>1&&(n/=w,a/=w,s/=w,o/=w,c/=w,d/=w,g/=w,u/=w);var m=t.width-s,f=t.height-d,B=t.width-c,E=t.height-u,C=e.borderTopWidth,b=e.borderRightWidth,v=e.borderBottomWidth,y=e.borderLeftWidth,F=$A(e.paddingTop,A.bounds.width),x=$A(e.paddingRight,A.bounds.width),Q=$A(e.paddingBottom,A.bounds.width),U=$A(e.paddingLeft,A.bounds.width);this.topLeftBorderDoubleOuterBox=n>0||a>0?La(t.left+y/3,t.top+C/3,n-y/3,a-C/3,ta.TOP_LEFT):new Qa(t.left+y/3,t.top+C/3),this.topRightBorderDoubleOuterBox=n>0||a>0?La(t.left+m,t.top+C/3,s-b/3,o-C/3,ta.TOP_RIGHT):new Qa(t.left+t.width-b/3,t.top+C/3),this.bottomRightBorderDoubleOuterBox=c>0||d>0?La(t.left+B,t.top+f,c-b/3,d-v/3,ta.BOTTOM_RIGHT):new Qa(t.left+t.width-b/3,t.top+t.height-v/3),this.bottomLeftBorderDoubleOuterBox=g>0||u>0?La(t.left+y/3,t.top+E,g-y/3,u-v/3,ta.BOTTOM_LEFT):new Qa(t.left+y/3,t.top+t.height-v/3),this.topLeftBorderDoubleInnerBox=n>0||a>0?La(t.left+2*y/3,t.top+2*C/3,n-2*y/3,a-2*C/3,ta.TOP_LEFT):new Qa(t.left+2*y/3,t.top+2*C/3),this.topRightBorderDoubleInnerBox=n>0||a>0?La(t.left+m,t.top+2*C/3,s-2*b/3,o-2*C/3,ta.TOP_RIGHT):new Qa(t.left+t.width-2*b/3,t.top+2*C/3),this.bottomRightBorderDoubleInnerBox=c>0||d>0?La(t.left+B,t.top+f,c-2*b/3,d-2*v/3,ta.BOTTOM_RIGHT):new Qa(t.left+t.width-2*b/3,t.top+t.height-2*v/3),this.bottomLeftBorderDoubleInnerBox=g>0||u>0?La(t.left+2*y/3,t.top+E,g-2*y/3,u-2*v/3,ta.BOTTOM_LEFT):new Qa(t.left+2*y/3,t.top+t.height-2*v/3),this.topLeftBorderStroke=n>0||a>0?La(t.left+y/2,t.top+C/2,n-y/2,a-C/2,ta.TOP_LEFT):new Qa(t.left+y/2,t.top+C/2),this.topRightBorderStroke=n>0||a>0?La(t.left+m,t.top+C/2,s-b/2,o-C/2,ta.TOP_RIGHT):new Qa(t.left+t.width-b/2,t.top+C/2),this.bottomRightBorderStroke=c>0||d>0?La(t.left+B,t.top+f,c-b/2,d-v/2,ta.BOTTOM_RIGHT):new Qa(t.left+t.width-b/2,t.top+t.height-v/2),this.bottomLeftBorderStroke=g>0||u>0?La(t.left+y/2,t.top+E,g-y/2,u-v/2,ta.BOTTOM_LEFT):new Qa(t.left+y/2,t.top+t.height-v/2),this.topLeftBorderBox=n>0||a>0?La(t.left,t.top,n,a,ta.TOP_LEFT):new Qa(t.left,t.top),this.topRightBorderBox=s>0||o>0?La(t.left+m,t.top,s,o,ta.TOP_RIGHT):new Qa(t.left+t.width,t.top),this.bottomRightBorderBox=c>0||d>0?La(t.left+B,t.top+f,c,d,ta.BOTTOM_RIGHT):new Qa(t.left+t.width,t.top+t.height),this.bottomLeftBorderBox=g>0||u>0?La(t.left,t.top+E,g,u,ta.BOTTOM_LEFT):new Qa(t.left,t.top+t.height),this.topLeftPaddingBox=n>0||a>0?La(t.left+y,t.top+C,Math.max(0,n-y),Math.max(0,a-C),ta.TOP_LEFT):new Qa(t.left+y,t.top+C),this.topRightPaddingBox=s>0||o>0?La(t.left+Math.min(m,t.width-b),t.top+C,m>t.width+b?0:Math.max(0,s-b),Math.max(0,o-C),ta.TOP_RIGHT):new Qa(t.left+t.width-b,t.top+C),this.bottomRightPaddingBox=c>0||d>0?La(t.left+Math.min(B,t.width-y),t.top+Math.min(f,t.height-v),Math.max(0,c-b),Math.max(0,d-v),ta.BOTTOM_RIGHT):new Qa(t.left+t.width-b,t.top+t.height-v),this.bottomLeftPaddingBox=g>0||u>0?La(t.left+y,t.top+Math.min(E,t.height-v),Math.max(0,g-y),Math.max(0,u-v),ta.BOTTOM_LEFT):new Qa(t.left+y,t.top+t.height-v),this.topLeftContentBox=n>0||a>0?La(t.left+y+U,t.top+C+F,Math.max(0,n-(y+U)),Math.max(0,a-(C+F)),ta.TOP_LEFT):new Qa(t.left+y+U,t.top+C+F),this.topRightContentBox=s>0||o>0?La(t.left+Math.min(m,t.width+y+U),t.top+C+F,m>t.width+y+U?0:s-y+U,o-(C+F),ta.TOP_RIGHT):new Qa(t.left+t.width-(b+x),t.top+C+F),this.bottomRightContentBox=c>0||d>0?La(t.left+Math.min(B,t.width-(y+U)),t.top+Math.min(f,t.height+C+F),Math.max(0,c-(b+x)),d-(v+Q),ta.BOTTOM_RIGHT):new Qa(t.left+t.width-(b+x),t.top+t.height-(v+Q)),this.bottomLeftContentBox=g>0||u>0?La(t.left+y+U,t.top+E,Math.max(0,g-(y+U)),u-(v+Q),ta.BOTTOM_LEFT):new Qa(t.left+y+U,t.top+t.height-(v+Q))};!function(A){A[A.TOP_LEFT=0]="TOP_LEFT",A[A.TOP_RIGHT=1]="TOP_RIGHT",A[A.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",A[A.BOTTOM_LEFT=3]="BOTTOM_LEFT"}(ta||(ta={}));var La=function(A,e,t,i,n){var a=(Math.sqrt(2)-1)/3*4,r=t*a,s=i*a,o=A+t,l=e+i;switch(n){case ta.TOP_LEFT:return new Ia(new Qa(A,l),new Qa(A,l-s),new Qa(o-r,e),new Qa(o,e));case ta.TOP_RIGHT:return new Ia(new Qa(A,e),new Qa(A+r,e),new Qa(o,l-s),new Qa(o,l));case ta.BOTTOM_RIGHT:return new Ia(new Qa(o,e),new Qa(o,e+s),new Qa(A+r,l),new Qa(A,l));case ta.BOTTOM_LEFT:default:return new Ia(new Qa(o,l),new Qa(o-r,l),new Qa(A,e+s),new Qa(A,e))}},Ma=function(A){return[A.topLeftBorderBox,A.topRightBorderBox,A.bottomRightBorderBox,A.bottomLeftBorderBox]},ka=function(A){return[A.topLeftPaddingBox,A.topRightPaddingBox,A.bottomRightPaddingBox,A.bottomLeftPaddingBox]},Ha=function(A,e,t){this.offsetX=A,this.offsetY=e,this.matrix=t,this.type=0,this.target=6},Oa=function(A,e){this.path=A,this.target=e,this.type=1},Da=function(A){this.opacity=A,this.type=2,this.target=6},Na=function(A){return 1===A.type},Ra=function(A,e){return A.length===e.length&&A.some((function(A,t){return A===e[t]}))},Pa=function(A){this.element=A,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]},Va=function(){function A(A,e){if(this.container=A,this.parent=e,this.effects=[],this.curves=new Ta(this.container),this.container.styles.opacity<1&&this.effects.push(new Da(this.container.styles.opacity)),null!==this.container.styles.transform){var t=this.container.bounds.left+this.container.styles.transformOrigin[0].number,i=this.container.bounds.top+this.container.styles.transformOrigin[1].number,n=this.container.styles.transform;this.effects.push(new Ha(t,i,n))}if(0!==this.container.styles.overflowX){var a=Ma(this.curves),r=ka(this.curves);Ra(a,r)?this.effects.push(new Oa(a,6)):(this.effects.push(new Oa(a,2)),this.effects.push(new Oa(r,4)))}}return A.prototype.getEffects=function(A){for(var e=-1===[2,3].indexOf(this.container.styles.position),t=this.parent,i=this.effects.slice(0);t;){var n=t.effects.filter((function(A){return!Na(A)}));if(e||0!==t.container.styles.position||!t.parent){if(i.unshift.apply(i,n),e=-1===[2,3].indexOf(t.container.styles.position),0!==t.container.styles.overflowX){var a=Ma(t.curves),r=ka(t.curves);Ra(a,r)||i.unshift(new Oa(r,6))}}else i.unshift.apply(i,n);t=t.parent}return i.filter((function(e){return ii(e.target,A)}))},A}(),Ka=function(A,e,t,i){A.container.elements.forEach((function(n){var a=ii(n.flags,4),r=ii(n.flags,2),s=new Va(n,A);ii(n.styles.display,2048)&&i.push(s);var o=ii(n.flags,8)?[]:i;if(a||r){var l=a||n.styles.isPositioned()?t:e,c=new Pa(s);if(n.styles.isPositioned()||n.styles.opacity<1||n.styles.isTransformed()){var d=n.styles.zIndex.order;if(d<0){var h=0;l.negativeZIndex.some((function(A,e){return d>A.element.container.styles.zIndex.order?(h=e,!1):h>0})),l.negativeZIndex.splice(h,0,c)}else if(d>0){var g=0;l.positiveZIndex.some((function(A,e){return d>=A.element.container.styles.zIndex.order?(g=e+1,!1):g>0})),l.positiveZIndex.splice(g,0,c)}else l.zeroOrAutoZIndexOrTransformedOrOpacity.push(c)}else n.styles.isFloating()?l.nonPositionedFloats.push(c):l.nonPositionedInlineLevel.push(c);Ka(s,c,a?c:t,o)}else n.styles.isInlineLevel()?e.inlineLevel.push(s):e.nonInlineLevel.push(s),Ka(s,e,t,o);ii(n.flags,8)&&Ga(n,o)}))},Ga=function(A,e){for(var t=A instanceof an?A.start:1,i=A instanceof an&&A.reversed,n=0;n0&&A.intrinsicHeight>0){var i=ja(A),n=ka(e);this.path(n),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(t,0,0,A.intrinsicWidth,A.intrinsicHeight,i.left,i.top,i.width,i.height),this.ctx.restore()}},t.prototype.renderNodeContent=function(A){return i(this,void 0,void 0,(function(){var e,i,a,s,o,l,c,d,h,g,u,p,w,m,f,B,E,C;return n(this,(function(n){switch(n.label){case 0:this.applyEffects(A.getEffects(4)),e=A.container,i=A.curves,a=e.styles,s=0,o=e.textNodes,n.label=1;case 1:return s0&&y>0&&(f=i.ctx.createPattern(p,"repeat"),i.renderRepeat(E,f,x,Q))):function(A){return 2===A.type}(t)&&(B=Ja(A,e,[null,null,null]),E=B[0],C=B[1],b=B[2],v=B[3],y=B[4],F=0===t.position.length?[ZA]:t.position,x=$A(F[0],v),Q=$A(F[F.length-1],y),U=function(A,e,t,i,n){var a=0,r=0;switch(A.size){case 0:0===A.shape?a=r=Math.min(Math.abs(e),Math.abs(e-i),Math.abs(t),Math.abs(t-n)):1===A.shape&&(a=Math.min(Math.abs(e),Math.abs(e-i)),r=Math.min(Math.abs(t),Math.abs(t-n)));break;case 2:if(0===A.shape)a=r=Math.min(be(e,t),be(e,t-n),be(e-i,t),be(e-i,t-n));else if(1===A.shape){var s=Math.min(Math.abs(t),Math.abs(t-n))/Math.min(Math.abs(e),Math.abs(e-i)),o=ve(i,n,e,t,!0),l=o[0],c=o[1];r=s*(a=be(l-e,(c-t)/s))}break;case 1:0===A.shape?a=r=Math.max(Math.abs(e),Math.abs(e-i),Math.abs(t),Math.abs(t-n)):1===A.shape&&(a=Math.max(Math.abs(e),Math.abs(e-i)),r=Math.max(Math.abs(t),Math.abs(t-n)));break;case 3:if(0===A.shape)a=r=Math.max(be(e,t),be(e,t-n),be(e-i,t),be(e-i,t-n));else if(1===A.shape){s=Math.max(Math.abs(t),Math.abs(t-n))/Math.max(Math.abs(e),Math.abs(e-i));var d=ve(i,n,e,t,!1);l=d[0],c=d[1],r=s*(a=be(l-e,(c-t)/s))}}return Array.isArray(A.size)&&(a=$A(A.size[0],i),r=2===A.size.length?$A(A.size[1],n):a),[a,r]}(t,x,Q,v,y),I=U[0],S=U[1],I>0&&S>0&&(T=i.ctx.createRadialGradient(C+x,b+Q,0,C+x,b+Q,I),Ee(t.stops,2*I).forEach((function(A){return T.addColorStop(A.stop,oe(A.color))})),i.path(E),i.ctx.fillStyle=T,I!==S?(L=A.bounds.left+.5*A.bounds.width,M=A.bounds.top+.5*A.bounds.height,H=1/(k=S/I),i.ctx.save(),i.ctx.translate(L,M),i.ctx.transform(1,0,0,k,0,0),i.ctx.translate(-L,-M),i.ctx.fillRect(C,H*(b-M)+M,v,y*H),i.ctx.restore()):i.ctx.fill())),n.label=6;case 6:return e--,[2]}}))},i=this,a=0,r=A.styles.backgroundImage.slice(0).reverse(),o.label=1;case 1:return a0?2!==l.style?[3,5]:[4,this.renderDashedDottedBorder(l.color,l.width,r,A.curves,2)]:[3,11]:[3,13];case 4:return n.sent(),[3,11];case 5:return 3!==l.style?[3,7]:[4,this.renderDashedDottedBorder(l.color,l.width,r,A.curves,3)];case 6:return n.sent(),[3,11];case 7:return 4!==l.style?[3,9]:[4,this.renderDoubleBorder(l.color,l.width,r,A.curves)];case 8:return n.sent(),[3,11];case 9:return[4,this.renderSolidBorder(l.color,r,A.curves)];case 10:n.sent(),n.label=11;case 11:r++,n.label=12;case 12:return s++,[3,3];case 13:return[2]}}))}))},t.prototype.renderDashedDottedBorder=function(A,e,t,a,r){return i(this,void 0,void 0,(function(){var i,s,o,l,c,d,h,g,u,p,w,m,f,B,E,C;return n(this,(function(n){return this.ctx.save(),i=function(A,e){switch(e){case 0:return za(A.topLeftBorderStroke,A.topRightBorderStroke);case 1:return za(A.topRightBorderStroke,A.bottomRightBorderStroke);case 2:return za(A.bottomRightBorderStroke,A.bottomLeftBorderStroke);default:return za(A.bottomLeftBorderStroke,A.topLeftBorderStroke)}}(a,t),s=Wa(a,t),2===r&&(this.path(s),this.ctx.clip()),Sa(s[0])?(o=s[0].start.x,l=s[0].start.y):(o=s[0].x,l=s[0].y),Sa(s[1])?(c=s[1].end.x,d=s[1].end.y):(c=s[1].x,d=s[1].y),h=0===t||2===t?Math.abs(o-c):Math.abs(l-d),this.ctx.beginPath(),3===r?this.formatPath(i):this.formatPath(s.slice(0,2)),g=e<3?3*e:2*e,u=e<3?2*e:e,3===r&&(g=e,u=e),p=!0,h<=2*g?p=!1:h<=2*g+u?(g*=w=h/(2*g+u),u*=w):(m=Math.floor((h+u)/(g+u)),f=(h-m*g)/(m-1),u=(B=(h-(m+1)*g)/m)<=0||Math.abs(u-f){const a=await tex2dataURL(A,n);if(a){const A=[];A.push({mimeType:a.mimeType,id:e,dataURL:a.dataURL,created:a.created,size:a.size,hasSVGwithBitmap:!1,shouldScale:!0}),i(A,t)}};async function tex2dataURL(A,e){let t=0;for(;!e.mathjax&&!e.mathjaxLoaderFinished&&t<10;)await sleep$1(100),t++;e.mathjaxLoaderFinished||errorlog({where:"text2dataURL",fn:tex2dataURL,message:"mathjaxLoader not ready, using fallback. Try reloading Obsidian or restarting the Excalidraw plugin"});try{return await mathjaxSVG(A,e)}catch(t){await sleep$1(100);try{return await mathjaxSVG(A,e)}catch(t){await sleep$1(100);try{return await mathjaxSVG(A,e)}catch(t){return e.mathjax?new obsidian.Notice("Unknown error loading LaTeX. Using fallback solution. Try closing and reopening this drawing."):new obsidian.Notice("LaTeX support did not load. Using fallback solution. Try checking your network connection."),await mathjaxImage2html(A)}}}}async function mathjaxSVG(A,e){const t=e.mathjax.tex2svg(A,{display:!0,scale:4}).querySelector("svg");if(t){const A=svgToBase64(t.outerHTML);return{mimeType:"image/svg+xml",fileId:fileid(),dataURL:A,created:Date.now(),size:await getImageSize(A)}}return null}async function mathjaxImage2html(A){const e=document.body.createDiv();e.style.display="table";const t=window.MathJax.tex2chtml(A,{display:!0,scale:4});t.style.margin="3px",t.style.color="black";const i=t.querySelector("mjx-assistive-mml");i&&i.parentElement.removeChild(i),e.appendChild(t),window.MathJax.typeset();const n=await html2canvas(e,{backgroundColor:null});return document.body.removeChild(e),{mimeType:"image/png",fileId:fileid(),dataURL:n.toDataURL(),created:Date.now(),size:{height:n.height,width:n.width}}}const THEME_FILTER="invert(100%) hue-rotate(180deg) saturate(1.25)";class EmbeddedFile{constructor(A,e,t){this.file=null,this.isSVGwithBitmap=!1,this.img="",this.imgInverted="",this.mtime=0,this.mimeType="application/octet-stream",this.size={height:0,width:0},this.attemptCounter=0,this.plugin=A,this.resetImage(e,t)}resetImage(A,e){this.imgInverted=this.img="",this.mtime=0,this.linkParts=getLinkParts(e),this.hostPath=A,this.linkParts.path?(this.linkParts.width||(this.linkParts.width=this.plugin.settings.mdSVGwidth),this.linkParts.height||(this.linkParts.height=this.plugin.settings.mdSVGmaxHeight),this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,A),this.file||0==this.attemptCounter++&&new obsidian.Notice(`Excalidraw Warning: could not find image file: ${e}`,5e3)):new obsidian.Notice(`Excalidraw Error\nIncorrect embedded filename: ${e}`)}fileChanged(){return this.file||(this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,this.hostPath),this.file)?this.mtime!=this.file.stat.mtime:(this.attemptCounter++,!1)}setImage(A,e,t,i,n){if(this.file){switch(this.fileChanged()&&(this.imgInverted=this.img=""),this.mtime=this.file.stat.mtime,this.size=t,this.mimeType=e,i&&n){case!0:this.imgInverted=A;break;case!1:this.img=A}this.isSVGwithBitmap=n}}isLoaded(A){return this.file||(this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,this.hostPath),this.file)?!this.fileChanged()&&(this.isSVGwithBitmap&&A?""!==this.imgInverted:""!==this.img):(this.attemptCounter++,!0)}getImage(A){return this.file?A&&this.isSVGwithBitmap?this.imgInverted:this.img:""}shouldScale(){return!Boolean(this.linkParts&&this.linkParts.original&&this.linkParts.original.endsWith("|100%"))}}class EmbeddedFilesLoader{constructor(A,e){this.terminate=!1,this.plugin=A,this.isDark=e,this.uid=nanoid()}async getObsidianImage(A,e){if(!this.plugin||!A)return null;const t=A instanceof EmbeddedFile?A.file:A,i=A instanceof EmbeddedFile?A.linkParts:{original:t.path,path:t.path,isBlockRef:!1,ref:null,width:this.plugin.settings.mdSVGwidth,height:this.plugin.settings.mdSVGmaxHeight};let n=!1;const a=this.plugin.isExcalidrawFile(t);if(!IMAGE_TYPES.contains(t.extension)&&!a&&"md"!==t.extension)return null;const r=await app.vault.readBinary(t),s=a?await(async A=>{const i=hasExportTheme(this.plugin,t)?getExportTheme(this.plugin,t,"light"):void 0,a={withBackground:!!hasExportBackground(this.plugin,t)&&getWithBackground(this.plugin,t),withTheme:!!i},r=await createSVG(t.path,!0,a,this,i,null,null,[],this.plugin,e+1,getExportPadding(this.plugin,t)),s=r.querySelectorAll("image:not([href^='data:image/svg'])");return s.length>0&&(n=!0),n&&A&&s.forEach((A=>{var e;const t=null===(e=A.parentElement)||void 0===e?void 0:e.id;r.querySelectorAll(`use[href='#${t}']`).forEach((A=>{A.setAttribute("filter",THEME_FILTER)}))})),!n&&r.getAttribute("hasbitmap")&&(n=!0),svgToBase64(r.outerHTML)})(this.isDark):null;let o="image/svg+xml";if(!a)switch(t.extension){case"png":o="image/png";break;case"jpeg":case"jpg":o="image/jpeg";break;case"gif":o="image/gif";break;case"webp":o="image/webp";break;case"bmp":o="image/bmp";break;case"ico":o="image/x-icon";break;case"svg":case"md":o="image/svg+xml";break;default:o="application/octet-stream"}let l=null!=s?s:"svg"===t.extension?await getSVGData(app,t):"md"===t.extension?null:await getDataURL(r,o);if(!l){const A=await this.convertMarkdownToSVG(this.plugin,t,i);l=A.dataURL,n=A.hasSVGwithBitmap}const c=await getImageSize(l);return{mimeType:o,fileId:await generateIdFromFile(r),dataURL:l,created:t.stat.mtime,hasSVGwithBitmap:n,size:c}}async loadSceneFiles(A,e,t){var i,n;if(t>4)return void new obsidian.Notice(t$d("INFINITE_LOOP_WARNING")+t.toString(),6e3);const a=A.getFileEntries();let r;void 0===this.isDark&&(this.isDark="dark"===(null===(n=null===(i=null==A?void 0:A.scene)||void 0===i?void 0:i.appState)||void 0===n?void 0:n.theme));const s=[];for(;!this.terminate&&!(r=a.next()).done;){const A=r.value[1];if(A.isLoaded(this.isDark))A.isSVGwithBitmap&&s.push({mimeType:A.mimeType,id:r.value[0],dataURL:A.getImage(this.isDark),created:A.mtime,size:A.size,hasSVGwithBitmap:A.isSVGwithBitmap,shouldScale:A.shouldScale()});else{const e=await this.getObsidianImage(A,t);e&&s.push({mimeType:e.mimeType,id:r.value[0],dataURL:e.dataURL,created:e.created,size:e.size,hasSVGwithBitmap:e.hasSVGwithBitmap,shouldScale:A.shouldScale()})}}let o;const l=A.getEquationEntries();for(;!this.terminate&&!(o=l.next()).done;)if(!A.getEquation(o.value[0]).isLoaded){const A=o.value[1].latex,e=await tex2dataURL(A,this.plugin);e&&s.push({mimeType:e.mimeType,id:o.value[0],dataURL:e.dataURL,created:e.created,size:e.size,hasSVGwithBitmap:!1,shouldScale:!0})}if(!this.terminate)try{e(s,this.isDark)}catch(A){errorlog({where:"EmbeddedFileLoader.loadSceneFiles",error:A})}}async convertMarkdownToSVG(A,e,t){var i,n,a,r;let s=!1;const o=await getTransclusion(t,A.app,e);let l=(null!==(i=o.leadingHashes)&&void 0!==i?i:"")+o.contents;""===l&&(l="# Empty markdown file\nCTRL+Click here to open the file for editing in the current active pane, or CTRL+SHIFT+Click to open it in an adjacent pane.");const c=A.app.metadataCache.getFileCache(e);let d,h=A.settings.mdFont;switch((null==c?void 0:c.frontmatter)&&Boolean(c.frontmatter["excalidraw-font"])&&(h=c.frontmatter["excalidraw-font"]),h){case"Virgil":d=VIRGIL_FONT;break;case"Cascadia":d=CASCADIA_FONT;break;case"":d="";break;default:const t=await getFontDataURL(A.app,h,e.path);d=t.fontDef,h=t.fontName}(null==c?void 0:c.frontmatter)&&null!==c.frontmatter.banner&&(l=l.replace(/banner:\s*.*/,""));const g=(null==c?void 0:c.frontmatter)&&null!==(n=c.frontmatter["excalidraw-font-color"])&&void 0!==n?n:A.settings.mdFontColor;let u=(null==c?void 0:c.frontmatter)&&null!==(a=c.frontmatter["excalidraw-css"])&&void 0!==a?a:"",p=!1;if(u&&""!=u){const t=A.app.metadataCache.getFirstLinkpathDest(u,e.path);t&&(u=await A.app.vault.read(t),p=!0)}if(!p)if(A.settings.mdCSS&&""!==A.settings.mdCSS){const t=A.app.metadataCache.getFirstLinkpathDest(A.settings.mdCSS,e.path);u+=t?`\n${await A.app.vault.read(t)}`:DEFAULT_MD_EMBED_CSS}else u+=DEFAULT_MD_EMBED_CSS;const w=(null==c?void 0:c.frontmatter)&&null!==(r=c.frontmatter["excalidraw-border-color"])&&void 0!==r?r:A.settings.mdBorderColor;w&&""!==w&&!u.match(/svg/i)&&(u+=`svg{border:2px solid;color:${w};transform:scale(.95)}`);let m=` width="${t.width}px" height="100000"`,f=` width="${t.width}px" height="100%"`;const B=(A,e,t)=>`${t?``:""}${A}${e}${""!==d?``:""}`,E=createDiv();E.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),E.setAttribute("class","excalidraw-md-host"),""!==h&&(E.style.fontFamily=h),E.style.overflow="auto",E.style.display="block",E.style.color=g&&""!==g?g:"initial",await obsidian.MarkdownRenderer.renderMarkdown(l,E,e.path,A),E.querySelectorAll(":scope > *[class^='frontmatter']").forEach((A=>E.removeChild(A)));const C=Array.from(E.querySelectorAll("span[class='internal-embed']"));for(let t=0;t{const e=A.style,t=window.getComputedStyle(A);let i="";for(const A in e)e.hasOwnProperty(A)&&(i+=`${A}: ${t[A]};`);A.setAttribute("style",i)}));const x=(new XMLSerializer).serializeToString(y),Q=(new XMLSerializer).serializeToString(F);document.body.removeChild(b);const U=new DOMParser,I=U.parseFromString(B(x,Q),"image/svg+xml").firstElementChild,S=createDiv();S.appendChild(I),document.body.appendChild(S);const T=I.querySelector(".excalidraw-md-footer").scrollHeight,L=I.querySelector(".excalidraw-md-host").scrollHeight+T,M=L<=t.height?L:t.height;document.body.removeChild(S),m=` width="${t.width}px" height="${M}px"`,f=` width="${t.width}px" height="${M}px"`,E.style.height=M-T+"px",E.style.overflow="hidden";const k=E.querySelectorAll("img:not([src^='data:image/svg+xml'])");k.length>0&&(s=!0),s&&this.isDark&&k.forEach((A=>{A instanceof HTMLImageElement&&(A.style.filter=THEME_FILTER)}));const H=B((new XMLSerializer).serializeToString(E),'',u);return A.ea.mostRecentMarkdownSVG=U.parseFromString(H,"image/svg+xml").firstElementChild,{dataURL:svgToBase64(H),hasSVGwithBitmap:s}}}const getSVGData=async(A,e)=>{const t=await A.vault.read(e);return svgToBase64(t)},generateIdFromFile=async A=>{let e;try{const t=await window.crypto.subtle.digest("SHA-1",A);e=Array.from(new Uint8Array(t)).map((A=>A.toString(16).padStart(2,"0"))).join("")}catch(A){errorlog({where:"EmbeddedFileLoader.generateIdFromFile",error:A}),e=fileid()}return e};var AutoexportPreference;!function(A){A[A.none=0]="none",A[A.both=1]="both",A[A.png=2]="png",A[A.svg=3]="svg",A[A.inherit=4]="inherit"}(AutoexportPreference||(AutoexportPreference={}));const REGEX_LINK={ //![[link|alias]] [alias](link){num} -EXPR:/(!)?(\[\[([^|\]]+)\|?([^\]]+)?]]|\[([^\]]*)]\(([^)]*)\))(\{(\d+)\})?/g,getRes:A=>A.matchAll(REGEX_LINK.EXPR),isTransclusion:A=>!!A.value[1],getLink:A=>A.value[3]?A.value[3]:A.value[6],isWikiLink:A=>!!A.value[3],getAliasOrLink:A=>REGEX_LINK.isWikiLink(A)?A.value[4]?A.value[4]:A.value[3]:A.value[5]?A.value[5]:A.value[6],getWrapLength:(A,e)=>{const t=parseInt(A.value[8]);return isNaN(t)?e>0?e:null:t}},DRAWING_REG=/\n# Drawing\n[^`]*(```json\n)([\s\S]*?)```\n/gm,DRAWING_REG_FALLBACK=/\n# Drawing\n(```json\n)?(.*)(```)?(%%)?/gm,DRAWING_COMPRESSED_REG=/(\n# Drawing\n[^`]*(?:```compressed\-json\n))([\s\S]*?)(```\n)/gm,DRAWING_COMPRESSED_REG_FALLBACK=/(\n# Drawing\n(?:```compressed\-json\n)?)(.*)((```)?(%%)?)/gm,REG_LINKINDEX_HYPERLINK=/^\w+:\/\//,isCompressedMD=A=>null!==A.match(/```compressed\-json\n/gm),getDecompressedScene=A=>{let e,t=A.matchAll(DRAWING_COMPRESSED_REG);return e=t.next(),e.done&&(t=A.matchAll(DRAWING_COMPRESSED_REG_FALLBACK),e=t.next()),e.value&&e.value.length>1?[decompress(e.value[2]),e]:[null,e]},changeThemeOfExcalidrawMD=A=>{const e=isCompressedMD(A);let t=e?getDecompressedScene(A)[0]:A;return t?(isObsidianThemeDark?1===(t.match(/"theme"\s*:\s*"light"\s*,/g)||[]).length&&(t=t.replace(/"theme"\s*:\s*"light"\s*,/,'"theme": "dark",')):1===(t.match(/"theme"\s*:\s*"dark"\s*,/g)||[]).length&&(t=t.replace(/"theme"\s*:\s*"dark"\s*,/,'"theme": "light",')),e?A.replace(DRAWING_COMPRESSED_REG,`$1${compress(t)}$3`):t):A};function getJSON(A){let e,t;if(isCompressedMD(A)){const[e,t]=getDecompressedScene(A);return e?{scene:e.substring(0,e.lastIndexOf("}")+1),pos:t.value.index}:{scene:A,pos:t.value?t.value.index:0}}if(e=A.matchAll(DRAWING_REG),t=e.next(),t.done&&(e=A.matchAll(DRAWING_REG_FALLBACK),t=e.next()),t.value&&t.value.length>1){const A=t.value[2];return{scene:A.substr(0,A.lastIndexOf("}")+1),pos:t.value.index}}return{scene:A,pos:t.value?t.value.index:0}}function getMarkdownDrawingSection(A,e){return e?`%%\n# Drawing\n\`\`\`compressed-json\n${compress(A)}\n\`\`\`\n%%`:`%%\n# Drawing\n\`\`\`json\n${A}\n\`\`\`\n%%`}const estimateMaxLineLen=(A,e)=>{if(!e||!A)return null;if(A===e)return null;let t=0;const i=A.split("\n");if(1===i.length)return null;for(const A of i)A.length>t&&(t=A.length);return t},wrap=(A,e)=>e?wrapText(A,e,!1,0):A;class ExcalidrawData{constructor(A){this.plugin=A,this.textElements=null,this.elementLinks=null,this.scene=null,this.deletedElements=[],this.file=null,this.autoexportPreference=AutoexportPreference.inherit,this.textMode=TextMode.raw,this.loaded=!1,this.files=null,this.equations=null,this.compatibilityMode=!1,this.selectedElementIds={},this.disableCompression=!1,this.app=A.app,this.files=new Map,this.equations=new Map}initializeNonInitializedFields(){var A,e;if(!this.scene||!this.scene.elements)return;const t=this.scene.elements;for(const i of t){if(i.boundElements){const A=new Map;i.boundElements.forEach((e=>{A.set(e.id,e.type)}));const e=Array.from(A,(([A,e])=>({id:A,type:e})));e.length!==i.boundElements.length&&(i.boundElements=e)}i.boundElementIds&&(i.boundElements||(i.boundElements=[]),i.boundElements=i.boundElements.concat(i.boundElementIds.map((A=>({type:"arrow",id:A})))),delete i.boundElementIds),"text"!==i.type||i.containerId||(i.containerId=null),null===i.x&&(i.x=0),null===i.y&&(i.y=0),null===(null===(A=i.startBinding)||void 0===A?void 0:A.focus)&&(i.startBinding.focus=0),null===(null===(e=i.endBinding)||void 0===e?void 0:e.focus)&&(i.endBinding.focus=0),null===i.fontSize&&(i.fontSize=20)}try{t.filter((A=>"text"===A.type&&A.containerId&&t.some((e=>e.id===A.containerId&&e.boundElements.length>0&&e.boundElements.some((e=>"text"===e.type&&e.id!==A.id&&e.id.length>8)))))).forEach((A=>{try{const e=t.filter((e=>e.id===A.containerId))[0],i=e.boundElements.filter((A=>!("text"===A.type&&!t.some((e=>e.id===A.id)))));e.boundElements=[{id:A.id,type:"text"}].concat(i)}catch(A){}})),t.filter((A=>A.boundElements&&A.boundElements.length>0)).forEach((A=>{const e=A.boundElements.filter((A=>t.some((e=>e.id===A.id))));e.length!==A.boundElements.length&&(A.boundElements=e)})),t.filter((A=>"text"===A.type&&A.containerId&&!t.some((e=>e.id===A.containerId)))).forEach((A=>{A.containerId=null}))}catch(A){}}async loadData(A,e,t){if(!e)return!1;if(this.loaded=!1,this.selectedElementIds={},this.textElements=new Map,this.elementLinks=new Map,this.file!=e&&(this.files.clear(),this.equations.clear()),this.file=e,this.compatibilityMode=!1,this.setShowLinkBrackets(),this.setLinkPrefix(),this.setUrlPrefix(),this.setAutoexportPreferences(),this.scene=null,this.plugin.settings.syncExcalidraw){const A=`${e.path.substring(0,e.path.lastIndexOf(".md"))}.excalidraw`,t=this.app.vault.getAbstractFileByPath(A);if(t&&t instanceof obsidian.TFile&&t.stat.mtime>e.stat.mtime){const A=await this.app.vault.read(t);this.scene=JSON.parse(A)}}let i=null;i=(()=>{const e=getJSON(A);if(-1===e.pos)throw new Error("Excalidraw JSON not found in the file");return this.scene||(this.scene=JSON_parse(e.scene)),e})(),this.deletedElements=this.scene.elements.filter((A=>A.isDeleted)),this.scene.elements=this.scene.elements.filter((A=>!A.isDeleted)),this.scene.files||(this.scene.files={}),hasExportTheme(this.plugin,this.file)?this.scene.appState.theme=getExportTheme(this.plugin,this.file,"light"):this.plugin.settings.matchThemeAlways&&(this.scene.appState.theme=isObsidianThemeDark()?"dark":"light"),this.initializeNonInitializedFields();let n=(A=A.substring(0,i.pos)).search(/(^%%\n)?# Text Elements\n/m);if(-1===n)return await this.setTextMode(t,!1),this.loaded=!0,!0;n+=A.match(/((^%%\n)?# Text Elements\n)/m)[0].length,A=A.substring(n),n=0;const a=" ^12345678\n\n".length;let r,s=A.matchAll(/\s\^(.{8})[\n]+/g);for(;!(r=s.next()).done;){const e=A.substring(n,r.value.index),t=r.value[1],i=this.scene.elements.filter((A=>A.id===t))[0];if(i)if("text"!==i.type)i.link!==e&&(i.link=e,i.version++,i.versionNonce++),this.elementLinks.set(t,e);else{const A=estimateMaxLineLen(i.text,i.originalText),n=await this.parse(e);this.textElements.set(t,{raw:e,parsed:n.parsed,wrapAt:A}),n.link&&(i.link=n.link),!i||i.rawText&&""!==i.rawText||(i.rawText=e)}n=r.value.index+a}for(s=(A=A.substring(A.indexOf("# Embedded files\n")+"# Embedded files\n".length)).matchAll(/([\w\d]*):\s*\[\[([^\]]*)]]\n/gm);!(r=s.next()).done;){const A=new EmbeddedFile(this.plugin,this.file.path,r.value[2]);this.setFile(r.value[1],A)}for(s=A.matchAll(/([\w\d]*):\s*\$\$(.*)(\$\$\s*\n)/gm);!(r=s.next()).done;)this.setEquation(r.value[1],{latex:r.value[2],isLoaded:!1});return this.findNewTextElementsInScene(),this.findNewElementLinksInScene(),await this.setTextMode(t,!0),this.loaded=!0,!0}async loadLegacyData(A,e){return!!e&&(this.loaded=!1,this.selectedElementIds={},this.compatibilityMode=!0,this.file=e,this.textElements=new Map,this.elementLinks=new Map,this.setShowLinkBrackets(),this.setLinkPrefix(),this.setUrlPrefix(),this.scene=JSON.parse(A),this.scene.files||(this.scene.files={}),this.initializeNonInitializedFields(),this.plugin.settings.matchThemeAlways&&(this.scene.appState.theme=isObsidianThemeDark()?"dark":"light"),this.files.clear(),this.equations.clear(),this.findNewTextElementsInScene(),this.findNewElementLinksInScene(),await this.setTextMode(TextMode.raw,!0),this.loaded=!0,!0)}async setTextMode(A,e=!1){this.scene&&(this.textMode=A,await this.updateSceneTextElements(e))}updateTextElement(A,e,t,i=!1){if(i||e!=A.text){const i=_measureText(e,A.fontSize,A.fontFamily);A.text=e,A.originalText=t,A.containerId||(A.width=i.w),A.height=i.h,A.baseline=i.baseline}}async updateSceneTextElements(A=!1){var e,t,i,n;const a=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((A=>"text"===A.type));for(const e of a){const a=null!==(i=null!==(t=await this.getText(e.id,!1))&&void 0!==t?t:e.originalText)&&void 0!==i?i:e.text,r=null===(n=this.textElements.get(e.id))||void 0===n?void 0:n.wrapAt;this.updateTextElement(e,wrap(a,r),a,A)}}async getText(A,e=!0){const t=this.textElements.get(A);return t?this.textMode===TextMode.parsed?(t.parsed||this.textElements.set(A,{raw:t.raw,parsed:(await this.parse(t.raw)).parsed,wrapAt:t.wrapAt}),e?wrap(t.parsed,t.wrapAt):t.parsed):t.raw:null}findNewElementLinksInScene(){var A;const e=null===(A=this.scene.elements)||void 0===A?void 0:A.filter((A=>"text"!==A.type&&A.link&&A.link.startsWith("[[")&&!this.elementLinks.has(A.id)));if(0===e.length)return!1;let t,i=JSON.stringify(this.scene);for(const A of e)t=A.id,A.id.length>8&&(t=nanoid(),i=i.replaceAll(A.id,t)),this.elementLinks.set(t,A.link);return this.scene=JSON.parse(i),!0}findNewTextElementsInScene(A={}){var e;this.selectedElementIds=A;const t=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((A=>"text"===A.type));let i,n=JSON.stringify(this.scene),a=!1;for(const A of t)if(i=A.id,A.id.length>8){if(a=!0,i=nanoid(),this.selectedElementIds[A.id]&&(delete this.selectedElementIds[A.id],this.selectedElementIds[i]=!0),n=n.replaceAll(A.id,i),this.textElements.has(A.id)){const e=this.textElements.get(A.id);this.textElements.set(i,{raw:e.raw,parsed:e.parsed,wrapAt:e.wrapAt}),this.textElements.delete(A.id)}if(!this.textElements.has(i)){const e=A.rawText&&""!==A.rawText?A.rawText:A.text,t=estimateMaxLineLen(A.text,A.originalText);this.textElements.set(i,{raw:e,parsed:null,wrapAt:t}),this.parseasync(i,e,t)}}else if(!this.textElements.has(A.id)){const e=A.rawText&&""!==A.rawText?A.rawText:A.text,t=estimateMaxLineLen(A.text,A.originalText);this.textElements.set(i,{raw:e,parsed:null,wrapAt:t}),this.parseasync(i,e,t)}return a&&(this.scene=JSON.parse(n)),a}updateElementLinksFromScene(){var A;for(const e of this.elementLinks.keys()){const t=null===(A=this.scene.elements)||void 0===A?void 0:A.filter((A=>"text"!==A.type&&A.id===e&&A.link&&A.link.startsWith("[[")));0===t.length?this.elementLinks.delete(e):this.elementLinks.set(e,t[0].link)}}async updateTextElementsFromScene(){var A,e,t;for(const i of this.textElements.keys()){const n=null===(A=this.scene.elements)||void 0===A?void 0:A.filter((A=>"text"===A.type&&A.id===i));if(0===n.length)this.textElements.delete(i);else{const A=await this.getText(i,!1),a=this.scene.prevTextMode===TextMode.parsed?n[0].rawText:null!==(e=n[0].originalText)&&void 0!==e?e:n[0].text;if(A!==(null!==(t=n[0].originalText)&&void 0!==t?t:n[0].text)){const A=estimateMaxLineLen(n[0].text,n[0].originalText);this.textElements.set(i,{raw:a,parsed:(await this.parse(a)).parsed,wrapAt:A})}}}}async parseasync(A,e,t){this.textElements.set(A,{raw:e,parsed:(await this.parse(e)).parsed,wrapAt:t})}parseLinks(A,e,t){return A.substring(e,t.value.index)+(this.showLinkBrackets?"[[":"")+REGEX_LINK.getAliasOrLink(t)+(this.showLinkBrackets?"]]":"")}async getTransclusion(A){const e=getLinkParts(A,this.file),t=this.app.metadataCache.getFirstLinkpathDest(e.path,this.file.path);return await getTransclusion(e,this.app,t,this.plugin.settings.pageTransclusionCharLimit)}async parse(A){let e="",t=null,i=0;const n=REGEX_LINK.getRes(A);let a,r=!1,s=!1;for(A.match(REG_LINKINDEX_HYPERLINK)&&(t=A,s=!0);!(a=n.next()).done;){if(!t){const A=REGEX_LINK.getLink(a);t=A.match(REG_LINKINDEX_HYPERLINK)?A:`[[${A}]]`}if(REGEX_LINK.isTransclusion(a)){const t=(await this.getTransclusion(REGEX_LINK.getLink(a))).contents;e+=A.substring(i,a.value.index)+wrapText(t,REGEX_LINK.getWrapLength(a,this.plugin.settings.wordWrappingDefault),this.plugin.settings.forceWrap)}else{const t=this.parseLinks(A,i,a);t&&(e+=t,s||r||(REGEX_LINK.getLink(a).match(REG_LINKINDEX_HYPERLINK)?s=!0:r=!0))}i=a.value.index+a.value[0].length}return e+=A.substring(i,A.length),r&&(e=this.linkPrefix+e),s&&(e=this.urlPrefix+e),{parsed:e,link:t}}quickParse(A){if((A=>{const e=REGEX_LINK.getRes(A);let t;for(;!(t=e.next()).done;)if(REGEX_LINK.isTransclusion(t))return!0;return!1})(A))return[null,null];let e="",t=null,i=0;const n=REGEX_LINK.getRes(A);let a,r=!1,s=!1;for(A.match(REG_LINKINDEX_HYPERLINK)&&(t=A,s=!0);!(a=n.next()).done;){if(!t){const A=REGEX_LINK.getLink(a);t=A.match(REG_LINKINDEX_HYPERLINK)?A:`[[${A}]]`}const n=this.parseLinks(A,i,a);n&&(e+=n,s||r||(REGEX_LINK.getLink(a).match(REG_LINKINDEX_HYPERLINK)?s=!0:r=!0)),i=a.value.index+a.value[0].length}return e+=A.substring(i,A.length),r&&(e=this.linkPrefix+e),s&&(e=this.urlPrefix+e),[e,t]}generateMD(A=[]){let e="# Text Elements\n";for(const A of this.textElements.keys())e+=`${this.textElements.get(A).raw} ^${A}\n\n`;for(const A of this.elementLinks.keys())e+=`${this.elementLinks.get(A)} ^${A}\n\n`;if(e+=this.equations.size>0||this.files.size>0?"\n# Embedded files\n":"",this.equations.size>0)for(const A of this.equations.keys())e+=`${A}: $$${this.equations.get(A).latex}$$\n`;if(this.files.size>0)for(const A of this.files.keys())e+=`${A}: [[${this.files.get(A).linkParts.original}]]\n`;return e+=this.equations.size>0||this.files.size>0?"\n":"",e+getMarkdownDrawingSection(JSON.stringify({type:this.scene.type,version:this.scene.version,source:this.scene.source,elements:this.scene.elements.concat(A),appState:this.scene.appState,files:this.scene.files},null,"\t"),!this.disableCompression&&this.plugin.settings.compress)}async syncFiles(){var A;let e=!1;const t=this.scene,i=t.elements.filter((A=>"image"===A.type)).map((A=>A.fileId));if(this.files.forEach(((A,t)=>{i.contains(t)||(this.files.delete(t),e=!0)})),this.equations.forEach(((A,t)=>{i.contains(t)||(this.equations.delete(t),e=!0)})),!t.files||t.files=={})return!1;const n=new Set;i.forEach((A=>{if(n.has(A)){const i=this.getFile(A),a=this.getEquation(A);if(i&&("md"!==i.file.extension||this.plugin.isExcalidrawFile(i.file)))return;const r=fileid();t.elements.filter((e=>e.fileId===A))[0].fileId=r,e=!0,n.add(r),i&&this.setFile(r,new EmbeddedFile(this.plugin,this.file.path,i.linkParts.original)),a&&this.setEquation(r,{latex:a.latex,isLoaded:!1})}n.add(A)}));for(const i of Object.keys(t.files))if(!this.hasFile(i)&&!this.hasEquation(i)){e=!0;let n=`Pasted Image ${window.moment().format("YYYYMMDDHHmmss_SSS")}`;const a=t.files[i].mimeType;switch(a){case"image/png":default:n+=".png";break;case"image/jpeg":n+=".jpg";break;case"image/svg+xml":n+=".svg";break;case"image/gif":n+=".gif"}const r=(await getAttachmentsFolderAndFilePath(this.app,this.file.path,n)).filepath,s=t.files[i].dataURL;await this.app.vault.createBinary(r,getBinaryFileFromDataURL(s));const o=new EmbeddedFile(this.plugin,this.file.path,r);o.setImage(s,a,{height:0,width:0},"dark"===(null===(A=t.appState)||void 0===A?void 0:A.theme),"image/svg+xml"===a),this.setFile(i,o)}return e}async syncElements(A,e){this.scene=A;let t=!1;return this.compatibilityMode||(t=await this.syncFiles(),this.scene.files={}),this.updateElementLinksFromScene(),t=t||this.setLinkPrefix()||this.setUrlPrefix()||this.setShowLinkBrackets()||this.findNewElementLinksInScene(),await this.updateTextElementsFromScene(),t||this.findNewTextElementsInScene(e)}async updateScene(A){this.scene=JSON_parse(A),this.updateElementLinksFromScene();const e=this.setLinkPrefix()||this.setUrlPrefix()||this.setShowLinkBrackets()||this.findNewElementLinksInScene();return await this.updateTextElementsFromScene(),!(!e&&!this.findNewTextElementsInScene()||(await this.updateSceneTextElements(),0))}getRawText(A){var e;return null===(e=this.textElements.get(A))||void 0===e?void 0:e.raw}getParsedText(A){const e=this.textElements.get(A);return e?[wrap(e.parsed,e.wrapAt),e.parsed,null]:[null,null,null]}setTextElement(A,e,t,i){const n=estimateMaxLineLen(e,t),[a,r]=this.quickParse(t);return a?(this.textElements.set(A,{raw:t,parsed:a,wrapAt:n}),[wrap(a,n),a,r]):(this.parse(t).then((e=>{const a=e.parsed;this.textElements.set(A,{raw:t,parsed:a,wrapAt:n}),a&&i(wrap(a,n),a)})),[null,null,null])}async addTextElement(A,e,t){let i=estimateMaxLineLen(e,t);this.textElements.has(A)&&(i=this.textElements.get(A).wrapAt);const n=await this.parse(t);return this.textElements.set(A,{raw:t,parsed:n.parsed,wrapAt:i}),[wrap(n.parsed,i),n.parsed,n.link]}deleteTextElement(A){this.textElements.delete(A)}getOpenMode(){const A=this.app.metadataCache.getFileCache(this.file);let e=this.plugin.settings.defaultMode;switch((null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-default-mode"]&&(e=A.frontmatter["excalidraw-default-mode"]),e){case"zen":return{viewModeEnabled:!1,zenModeEnabled:!0};case"view":return{viewModeEnabled:!0,zenModeEnabled:!1};default:return{viewModeEnabled:!1,zenModeEnabled:!1}}}getLinkOpacity(){const A=this.app.metadataCache.getFileCache(this.file);let e=this.plugin.settings.linkOpacity;return(null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-linkbutton-opacity"]&&(e=A.frontmatter["excalidraw-linkbutton-opacity"]),e}getOnLoadScript(){const A=this.app.metadataCache.getFileCache(this.file);return(null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-onload-script"]?A.frontmatter["excalidraw-onload-script"]:null}setLinkPrefix(){const A=this.linkPrefix,e=this.app.metadataCache.getFileCache(this.file);return(null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-link-prefix"]?this.linkPrefix=e.frontmatter["excalidraw-link-prefix"]:this.linkPrefix=this.plugin.settings.linkPrefix,A!=this.linkPrefix}setUrlPrefix(){const A=this.urlPrefix,e=this.app.metadataCache.getFileCache(this.file);return(null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-url-prefix"]?this.urlPrefix=e.frontmatter["excalidraw-url-prefix"]:this.urlPrefix=this.plugin.settings.urlPrefix,A!=this.urlPrefix}setAutoexportPreferences(){const A=this.app.metadataCache.getFileCache(this.file);if((null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-autoexport"])switch(A.frontmatter["excalidraw-autoexport"].toLowerCase()){case"none":this.autoexportPreference=AutoexportPreference.none;break;case"both":this.autoexportPreference=AutoexportPreference.both;break;case"png":this.autoexportPreference=AutoexportPreference.png;break;case"svg":this.autoexportPreference=AutoexportPreference.svg;break;default:this.autoexportPreference=AutoexportPreference.inherit}else this.autoexportPreference=AutoexportPreference.inherit}setShowLinkBrackets(){const A=this.showLinkBrackets,e=this.app.metadataCache.getFileCache(this.file);return(null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-link-brackets"]?this.showLinkBrackets=0!=e.frontmatter["excalidraw-link-brackets"]:this.showLinkBrackets=this.plugin.settings.showLinkBrackets,A!=this.showLinkBrackets}setFile(A,e){if(!e)return;if(this.files.set(A,e),!e.file)return;const t=e.linkParts.original.split("#");this.plugin.filesMaster.set(A,{path:e.file.path,blockrefData:1===t.length?null:t[1],hasSVGwithBitmap:e.isSVGwithBitmap})}getFiles(){return Object.values(this.files)}getFile(A){let e=this.files.get(A);if(e)return e;const t=this.plugin.filesMaster.get(A);return t?(e=new EmbeddedFile(this.plugin,this.file.path,t.blockrefData?t.path+"#"+t.blockrefData:t.path),this.files.set(A,e),e):e}getFileEntries(){return this.files.entries()}deleteFile(A){this.files.delete(A)}hasFile(A){if(this.files.has(A))return!0;if(this.plugin.filesMaster.has(A)){const e=this.plugin.filesMaster.get(A);if(!this.app.vault.getAbstractFileByPath(e.path))return this.plugin.filesMaster.delete(A),!0;const t=new EmbeddedFile(this.plugin,this.file.path,e.blockrefData?e.path+"#"+e.blockrefData:e.path);return this.files.set(A,t),!0}return!1}setEquation(A,e){this.equations.set(A,{latex:e.latex,isLoaded:e.isLoaded}),this.plugin.equationsMaster.set(A,e.latex)}getEquation(A){let e=this.equations.get(A);if(e)return e;const t=this.plugin.equationsMaster.get(A);return t?(this.equations.set(A,{latex:t,isLoaded:!1}),{latex:t,isLoaded:!1}):e}getEquationEntries(){return this.equations.entries()}deleteEquation(A){this.equations.delete(A)}hasEquation(A){return!!this.equations.has(A)||!!this.plugin.equationsMaster.has(A)&&(this.equations.set(A,{latex:this.plugin.equationsMaster.get(A),isLoaded:!1}),!0)}}const getTransclusion=async(A,e,t,i)=>{var n,a,r,s,o,l,c,d,h,g;if(!A.path)return{contents:A.original.trim(),lineNum:0};if(!(t&&t instanceof obsidian.TFile))return{contents:A.original.trim(),lineNum:0};const u=await e.vault.read(t);if(!A.ref)return i?{contents:u.substring(0,i).trim(),lineNum:0}:{contents:u.trim(),lineNum:0};const p=(await e.metadataCache.blockCache.getForFile({isCancelled:()=>!1},t)).blocks.filter((A=>"comment"!=A.node.type));if(!p)return{contents:A.original.trim(),lineNum:0};if(A.isBlockRef){let e=null===(n=p.filter((e=>e.node.id==A.ref))[0])||void 0===n?void 0:n.node;if(!e)return{contents:A.original.trim(),lineNum:0};["blockquote","listItem"].includes(e.type)&&(e=e.children[0]);const t=e.position.start.offset,i=e.position.start.line,r=(null===(a=e.children[e.children.length-1])||void 0===a?void 0:a.position.start.offset)-1;return{contents:u.substring(t,r).trim(),lineNum:i}}const w=p.filter((A=>0===A.display.search(/^#+\s/)));let m=null,f=0,B=null,E=1;for(let e=0;eE;)A++;return A===w.length&&w[A-1].node.depth>E?{leadingHashes:"#".repeat(E)+" ",contents:u.substring(m).trim(),lineNum:f}:(B=w[A].node.position.start.offset-1,{leadingHashes:"#".repeat(E)+" ",contents:u.substring(m,B).trim(),lineNum:f})}const t=w[e].node.children[0],i=null===(s=null===(r=w[e].node.data)||void 0===r?void 0:r.hProperties)||void 0===s?void 0:s.dataHeading,n=null==t?void 0:t.children;!m&&((null===(o=null==t?void 0:t.value)||void 0===o?void 0:o.replaceAll(REG_BLOCK_REF_CLEAN,""))===A.ref||(null===(l=null==t?void 0:t.title)||void 0===l?void 0:l.replaceAll(REG_BLOCK_REF_CLEAN,""))===A.ref||(null==i?void 0:i.replaceAll(REG_BLOCK_REF_CLEAN,""))===A.ref||n&&(null===(d=null===(c=n[0])||void 0===c?void 0:c.value)||void 0===d?void 0:d.replaceAll(REG_BLOCK_REF_CLEAN,""))===A.ref)&&(m=null===(h=w[e].node.children[0])||void 0===h?void 0:h.position.start.offset,E=w[e].node.depth,f=null===(g=w[e].node.children[0])||void 0===g?void 0:g.position.start.line)}return m?{leadingHashes:"#".repeat(E)+" ",contents:u.substring(m).trim(),lineNum:f}:{contents:A.original.trim(),lineNum:0}};class Prompt extends obsidian.Modal{constructor(A,e,t,i,n){super(A),this.prompt_text=e,this.default_value=t,this.placeholder=i,this.prompt_desc=n}onOpen(){this.titleEl.setText(this.prompt_text),this.createForm()}onClose(){this.contentEl.empty()}createForm(){var A;let e=this.contentEl.createDiv();e.addClass("excalidraw-prompt-div"),this.prompt_desc&&(e=e.createDiv(),e.style.width="100%",e.createEl("p").innerHTML=this.prompt_desc);const t=e.createEl("form");t.addClass("excalidraw-prompt-form"),t.type="submit",t.onsubmit=A=>{A.preventDefault(),this.resolve(this.promptEl.value),this.close()},this.promptEl=t.createEl("input"),this.promptEl.type="text",this.promptEl.placeholder=this.placeholder,this.promptEl.value=null!==(A=this.default_value)&&void 0!==A?A:"",this.promptEl.addClass("excalidraw-prompt-input"),this.promptEl.select()}async openAndGetValue(A){this.resolve=A,this.open()}}class GenericInputPrompt extends obsidian.Modal{constructor(A,e,t,i,n){super(A),this.header=e,this.didSubmit=!1,this.submitClickCallback=()=>this.submit(),this.cancelClickCallback=()=>this.cancel(),this.submitEnterCallback=A=>{"Enter"===A.key&&(A.preventDefault(),this.submit())},this.placeholder=t,this.input=i,this.buttons=n,this.waitForClose=new Promise(((A,e)=>{this.resolvePromise=A,this.rejectPromise=e})),this.display(),this.open()}static Prompt(A,e,t,i,n){return new GenericInputPrompt(A,e,t,i,n).waitForClose}display(){this.contentEl.empty(),this.titleEl.textContent=this.header;const A=this.contentEl.createDiv();this.inputComponent=this.createInputField(A,this.placeholder,this.input),this.createButtonBar(A)}createInputField(A,e,t){const i=new obsidian.TextComponent(A);return i.inputEl.style.width="100%",i.setPlaceholder(null!=e?e:"").setValue(null!=t?t:"").onChange((A=>this.input=A)).inputEl.addEventListener("keydown",this.submitEnterCallback),i}createButton(A,e,t){const i=new obsidian.ButtonComponent(A);return i.setButtonText(e).onClick(t),i}createButtonBar(A){const e=A.createDiv();if(this.buttons&&this.buttons.length>0){let A=null;for(const t of this.buttons){const i=new obsidian.ButtonComponent(e);i.setButtonText(t.caption).onClick((A=>{const e=t.action(this.input);e&&(this.input=e),this.submit()})),A=null!=A?A:i}A&&(A.setCta().buttonEl.style.marginRight="0")}else this.createButton(e,"Ok",this.submitClickCallback).setCta().buttonEl.style.marginRight="0";this.createButton(e,"Cancel",this.cancelClickCallback),e.style.display="flex",e.style.flexDirection="row-reverse",e.style.justifyContent="flex-start",e.style.marginTop="1rem"}submit(){this.didSubmit=!0,this.close()}cancel(){this.close()}resolveInput(){this.didSubmit?this.resolvePromise(this.input):this.rejectPromise("No input given.")}removeInputListener(){var A,e;null===(e=null===(A=this.inputComponent)||void 0===A?void 0:A.inputEl)||void 0===e||e.removeEventListener("keydown",this.submitEnterCallback)}onOpen(){super.onOpen(),this.inputComponent.inputEl.focus(),this.inputComponent.inputEl.select()}onClose(){super.onClose(),this.resolveInput(),this.removeInputListener()}}class GenericSuggester extends obsidian.FuzzySuggestModal{constructor(A,e,t,i,n){var a;super(A),this.displayItems=e,this.items=t,this.hint=i,this.instructions=n,this.limit=20,this.setPlaceholder(null!==(a=this.hint)&&void 0!==a?a:""),n&&this.setInstructions(this.instructions),this.promise=new Promise(((A,e)=>{this.resolvePromise=A,this.rejectPromise=e})),this.open()}static Suggest(A,e,t,i,n){return new GenericSuggester(A,e,t,i,n).promise}getItemText(A){return this.displayItems[this.items.indexOf(A)]}getItems(){return this.items}selectSuggestion(A,e){this.resolved=!0,super.selectSuggestion(A,e)}onChooseItem(A){this.resolved=!0,this.resolvePromise(A)}onClose(){super.onClose(),this.resolved||this.rejectPromise(this.inputEl.value)}}class NewFileActions extends obsidian.Modal{constructor(A,e,t,i,n){super(A.app),this.plugin=A,this.path=e,this.newPane=t,this.newWindow=i,this.view=n}onOpen(){this.createForm()}async onClose(){}openFile(A){A&&(this.newWindow?app.workspace.openPopoutLeaf():this.newPane?getNewOrAdjacentLeaf(this.plugin,this.view.leaf):this.view.leaf).openFile(A,{active:!0})}createForm(){this.titleEl.setText("New File"),this.contentEl.createDiv({cls:"excalidraw-prompt-center",text:"File does not exist. Do you want to create it?"}),this.contentEl.createDiv({cls:"excalidraw-prompt-center filepath",text:this.path}),this.contentEl.createDiv({cls:"excalidraw-prompt-center"},(A=>{A.style.textAlign="right";const e=()=>this.path&&""!==this.path?!!this.view.file||(new obsidian.Notice("Unknown error. It seems as if your drawing was closed or the drawing file is missing"),!1):(new obsidian.Notice("Error: Filename for new file may not be empty"),!1),t=async A=>{if(!this.path.includes("/")){const A=new RegExp(`${this.view.file.name}$`,"g");this.path=this.view.file.path.replace(A,this.path)}return this.path.match(/\.md$/)||(this.path=`${this.path}.md`),checkAndCreateFolder(splitFolderAndFilename(this.path).folderpath),await this.app.vault.create(this.path,A)};A.createEl("button",{text:"Create Markdown"}).onclick=async()=>{if(!e)return;const A=await t("");this.openFile(A),this.close()},A.createEl("button",{text:"Create Excalidraw"}).onclick=async()=>{if(!e)return;const A=await t(await this.plugin.getBlankDrawing());await sleep$1(200),this.openFile(A),this.close()},A.createEl("button",{text:"Never Mind"}).onclick=()=>{this.close()}}))}}class ScriptEngine{constructor(A){this.plugin=A,this.scriptIconMap={},this.loadScripts(),this.registerEventHandlers()}registerEventHandlers(){const A=A=>{if(!A.endsWith(".svg"))return;const e=app.vault.getAbstractFileByPath(getIMGFilename(A,"md"));e&&e instanceof obsidian.TFile&&(this.unloadScript(this.getScriptName(e),e.path),this.loadScript(e))};this.plugin.registerEvent(app.vault.on("delete",(async e=>{e instanceof obsidian.TFile&&e.path.startsWith(this.scriptPath)&&(this.unloadScript(this.getScriptName(e),e.path),A(e.path))}))),this.plugin.registerEvent(app.vault.on("create",(async e=>{e instanceof obsidian.TFile&&e.path.startsWith(this.scriptPath)&&(this.loadScript(e),A(e.path))}))),this.plugin.registerEvent(app.vault.on("rename",(async(e,t)=>{if(!(e instanceof obsidian.TFile))return;const i=t.startsWith(this.scriptPath),n=e.path.startsWith(this.scriptPath);i&&(this.unloadScript(this.getScriptName(t),t),A(t)),n&&(this.loadScript(e),A(e.path))})))}updateScriptPath(){this.scriptPath!==this.plugin.settings.scriptFolderPath&&(this.scriptPath&&this.unloadScripts(),this.loadScripts())}getListofScripts(){if(this.scriptPath=this.plugin.settings.scriptFolderPath,app.vault.getAbstractFileByPath(this.scriptPath))return app.vault.getFiles().filter((A=>A.path.startsWith(this.scriptPath)&&"md"===A.extension));this.scriptPath=null}loadScripts(){var A;null===(A=this.getListofScripts())||void 0===A||A.forEach((A=>this.loadScript(A)))}getScriptName(A){let e="",t="";A instanceof obsidian.TFile?(e=A.basename,t=A.path):(e=splitFolderAndFilename(A).basename,t=A);const i=t.split(`${this.scriptPath}/`)[1],n=i.lastIndexOf("/");return n>-1?i.substring(0,n+1)+e:e}async addScriptIconToMap(A,e){const t=getIMGFilename(A,"svg"),i=app.vault.getAbstractFileByPath(t),n=i&&i instanceof obsidian.TFile?await app.vault.read(i):null;this.scriptIconMap=Object.assign({},this.scriptIconMap),this.scriptIconMap[A]={name:e,svgString:n},this.updateToolPannels()}loadScript(A){if("md"!==A.extension)return;const e=this.getScriptName(A);this.addScriptIconToMap(A.path,e),this.plugin.addCommand({id:e,name:`(Script) ${e}`,checkCallback:t=>{if(t)return Boolean(app.workspace.getActiveViewOfType(ExcalidrawView));const i=app.workspace.getActiveViewOfType(ExcalidrawView);return!!i&&((async()=>{const t=await app.vault.read(A);t&&this.executeScript(i,t,e)})(),!0)}})}unloadScripts(){const A=app.vault.getFiles().filter((A=>A.path.startsWith(this.scriptPath)));A.forEach((A=>{this.unloadScript(this.getScriptName(A),A.path)}))}unloadScript(A,e){if(!e.endsWith(".md"))return;delete this.scriptIconMap[e],this.scriptIconMap=Object.assign({},this.scriptIconMap),this.updateToolPannels();const t=`${PLUGIN_ID}:${A}`;app.commands.commands[t]&&delete app.commands.commands[t]}async executeScript(A,e,t){if(!A||!e||!t)return;this.plugin.ea.reset(),this.plugin.ea.setView(A),this.plugin.ea.activeScript=t;const i=Object.getPrototypeOf((async()=>{})).constructor;let n=null;return n=await new i("ea","utils",e)(this.plugin.ea,{inputPrompt:(A,e,t,i)=>ScriptEngine.inputPrompt(app,A,e,t,i),suggester:(A,e,t,i)=>ScriptEngine.suggester(app,A,e,t,i)}),this.plugin.ea.activeScript=null,n}updateToolPannels(){app.workspace.getLeavesOfType("excalidraw").forEach((A=>{var e,t;null===(t=null===(e=A.view.toolsPanelRef)||void 0===e?void 0:e.current)||void 0===t||t.updateScriptIconMap(this.scriptIconMap)}))}static async inputPrompt(A,e,t,i,n){try{return await GenericInputPrompt.Prompt(A,e,t,i,n)}catch(A){return}}static async suggester(A,e,t,i,n){try{return await GenericSuggester.Suggest(A,e,t,i,n)}catch(A){return}}}var t$c={d:(A,e)=>{for(var t in e)t$c.o(e,t)&&!t$c.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},r$d={};t$c.d(r$d,{QA:()=>w$1,ZP:()=>j$1,qt:()=>x$1,MX:()=>$});const e$d={red:"hsl(0, 100%, 50%)",orange:"hsl(30, 100%, 50%)",yellow:"hsl(60, 100%, 50%)","lime green":"hsl(90, 100%, 50%)",green:"hsl(120, 100%, 50%)","blue green":"hsl(150, 100%, 50%)",cyan:"hsl(180, 100%, 50%)","sky blue":"hsl(210, 100%, 50%)",blue:"hsl(240, 100%, 50%)",purple:"hsl(270, 100%, 50%)",magenta:"hsl(300, 100%, 50%)",pink:"hsl(330, 100%, 50%)"};function s$a(A,e,t){return Math.max(A,Math.min(e,t))}function n$c(A,e){return+A.toFixed(e>=0?e:0)}function a$c(A){const e=A%360;return e<0?e+360:e}function i$a(A){return void 0!==A?s$a(0,A,1):1}function o$b(A){return Math.floor(Math.random()*A)}function h$4(A){var e;const{Cmin:t,Cmax:i,H:n,delta:a}=function(A){const[e,t,i]=Object.values(A).map((A=>A/255)),n=Math.max(e,t,i),a=Math.min(e,t,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===e?(t-i)/r%6:n===t?(i-e)/r+2:(e-t)/r+4,delta:r}}(A),r=(i+t)/2,s=0===a?0:a/(1-Math.abs(2*r-1));return{h:a$c(60*n),s:100*s,l:100*r,a:null!==(e=A.a)&&void 0!==e?e:1}}function u$8(A){const{h:e,s:t,l:i,a:n}=A,a=i/100,r=t/100,s=(1-Math.abs(2*a-1))*r,o=s*(1-Math.abs(e/60%2-1)),l=a-s/2,c=e<60||300<=e&&e<360?s:120<=e&&e<240?0:o,d=240<=e&&e<360?0:60<=e&&e<180?s:o,h=e<120?0:180<=e&&e<300?s:o,[g,u,p]=[c,d,h].map((A=>255*(A+l)));return{r:g,g:u,b:p,a:null!=n?n:1}}function l$5(A){const[e,t,i,n]=Object.values(A).map((A=>parseInt(A,16)));return{r:e,g:t,b:i,a:n?n/255:1}}const c$a=/^#?([\da-f])([\da-f])([\da-f])([\da-f])?$|^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})?([\da-f]{2})?$/gi,f$3=/hsla?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function d$2({h:A,s:e,l:t,a:i}){return[u$8({h:a$c(A),s:s$a(0,e,100),l:s$a(0,t,100),a:i$a(i)}),"hsl"]}const g$2=/rgba?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function b$5({r:A,g:e,b:t,a:i}){return[{r:s$a(0,A,255),g:s$a(0,e,255),b:s$a(0,t,255),a:i$a(i)},"rgb"]}var p$3,v$2,m$1=function(A,e,t,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?A!==e||!n:!e.has(A))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(A,t):n?n.value=t:e.set(A,t),t},y$1=function(A,e,t,i){if("a"===t&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?A!==e||!i:!e.has(A))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?i:"a"===t?i.call(A):i?i.value:e.get(A)};class w$1{constructor(A){var e,t;p$3.set(this,{r:0,g:0,b:0,a:1}),v$2.set(this,"rgb");const i=w$1.Parsers.map((e=>e(A))).find((A=>"invalid"!==A[1]));i?(e=this,t=this,[{set value(A){m$1(e,p$3,A,"f")}}.value,{set value(A){m$1(t,v$2,A,"f")}}.value]=i):m$1(this,v$2,"invalid","f")}get red(){return y$1(this,p$3,"f").r}get blue(){return y$1(this,p$3,"f").b}get green(){return y$1(this,p$3,"f").g}get alpha(){return y$1(this,p$3,"f").a}get hue(){return h$4(y$1(this,p$3,"f")).h}get saturation(){return h$4(y$1(this,p$3,"f")).s}get lightness(){return h$4(y$1(this,p$3,"f")).l}get format(){return y$1(this,v$2,"f")}isValid(){return"invalid"!==y$1(this,v$2,"f")}rgba(){return y$1(this,p$3,"f")}hsla(){return h$4(y$1(this,p$3,"f"))}hexa({round:A=!1}={}){return function(A,e=!1){let{r:t,g:i,b:n,a:a}=A;a&&(a*=255),e&&([t,i,n,a]=[t,i,n,a].map((A=>A&&Math.round(A))));const[r,s,o,l]=[t,i,n,null!=a?a:255].map((A=>A.toString(16).padStart(2,"0").toUpperCase()));return{r:r,g:s,b:o,a:l}}(y$1(this,p$3,"f"),A)}stringRGB({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(y$1(this,p$3,"f")).map(((A,t)=>n$c(A,e[t])));return A?`rgba(${t}, ${i}, ${n}, ${a})`:`rgb(${t}, ${i}, ${n})`}stringHEX({alpha:A=!0}={}){const[e,t,i,n]=Object.values(this.hexa({round:!0}));return`#${e}${t}${i}${A?n:""}`}stringHSL({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(this.hsla()).map(((A,t)=>n$c(A,e[t])));return A?`hsla(${t}, ${i}%, ${n}%, ${a})`:`hsl(${t}, ${i}%, ${n}%)`}hueTo(A){var e;const{h:t,s:i,l:n,a:a}=this.hsla(),r="number"==typeof A?a$c(A):Number(null!==(e=e$d[A].match(/\d{1,3}/))&&void 0!==e?e:t);return m$1(this,p$3,u$8({h:r,s:i,l:n,a:a}),"f"),this}hueBy(A){const{h:e,s:t,l:i,a:n}=this.hsla();return m$1(this,p$3,u$8({h:a$c(e+A),s:t,l:i,a:n}),"f"),this}saturationTo(A){const{h:e,l:t,a:i}=this.hsla();return m$1(this,p$3,u$8({h:e,s:s$a(0,A,100),l:t,a:i}),"f"),this}saturateBy(A){const{h:e,s:t,l:i,a:n}=this.hsla();return m$1(this,p$3,u$8({h:e,s:s$a(0,t+A,100),l:i,a:n}),"f"),this}desaturateBy(A){return this.saturateBy(-1*A)}lightnessTo(A){const{h:e,s:t,a:i}=this.hsla();return m$1(this,p$3,u$8({h:e,s:t,l:s$a(0,A,100),a:i}),"f"),this}lighterBy(A){const{h:e,s:t,l:i,a:n}=this.hsla();return m$1(this,p$3,u$8({h:e,s:t,l:s$a(0,i+A,100),a:n}),"f"),this}darkerBy(A){return this.lighterBy(-1*A)}alphaTo(A){return m$1(this,p$3,Object.assign(Object.assign({},y$1(this,p$3,"f")),{a:s$a(0,A,1)}),"f"),this}alphaBy(A){return m$1(this,p$3,Object.assign(Object.assign({},y$1(this,p$3,"f")),{a:s$a(0,y$1(this,p$3,"f").a+A,1)}),"f"),this}invert({alpha:A=!1}={}){const{r:e,g:t,b:i,a:n}=y$1(this,p$3,"f");return m$1(this,p$3,{r:255-e,g:255-t,b:255-i,a:A?1-n:n},"f"),this}grayscale(){return this.desaturateBy(100)}rotate(A){return this.hueBy(A)}}function $(){return new w$1({r:o$b(255),g:o$b(255),b:o$b(255),a:Math.random()})}function x$1(A){(A=A.filter(((A,e,t)=>t.indexOf(A)===e))).forEach((A=>A(w$1)))}p$3=new WeakMap,v$2=new WeakMap,w$1.Parsers=[function(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{r:e,g:t,b:i}=A;return void 0!==e&&void 0!==t&&void 0!==i&&"number"==typeof e}(A))return b$5(A);if("string"==typeof A){g$2.lastIndex=0;const e=g$2.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map(((A,e)=>A.includes("%")?+A.slice(0,-1)*(e<3?2.55:.01):+A));return b$5({r:A,g:t,b:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]},function(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{r:e,g:t,b:i}=A;return void 0!==e&&void 0!==t&&void 0!==i&&"string"==typeof e}(A))return[l$5(A),"hex"];if("string"==typeof A){c$a.lastIndex=0;const e=c$a.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map((A=>1===A.length?A.repeat(2):A));return[l$5({r:A,g:t,b:i,a:null!=n?n:"FF"}),"hex"]}}return[{r:0,g:0,b:0,a:1},"invalid"]},function(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{h:e,s:t,l:i}=A;return void 0!==e&&void 0!==t&&void 0!==i}(A))return d$2(A);if("string"==typeof A){f$3.lastIndex=0;const e=f$3.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map(((A,e)=>A.includes("%")?+A.slice(0,-1)*(0===e?3.59:e<3?1:.01):+A));return d$2({h:A,s:t,l:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}];const j$1=A=>new w$1(A);r$d.QA;var O$1=r$d.ZP,B=r$d.qt;r$d.MX;var e$c={d:(A,e)=>{for(var t in e)e$c.o(e,t)&&!e$c.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},a$b={};function t$b(A){const e=A%360;return e<0?e+360:e}e$c.d(a$b,{Z:()=>n$b});const n$b=A=>{A.prototype.harmony=function({type:e="analogous",effect:t="tones",amount:i=5}={}){const{h:n,s:a,l:r,a:s}=this.hsla();switch("monochromatic"===e&&(o=i,i=Math.max(2,Math.min(o,10))),e){case"analogous":return[-30,0,30].map((e=>new A({h:t$b(n+e),s:a,l:r,a:s})));case"complementary":return[0,180].map((e=>new A({h:t$b(n+e),s:a,l:r,a:s})));case"split-complementary":return[0,150,210].map((e=>new A({h:t$b(n+e),s:a,l:r,a:s})));case"double-split-complementary":return[-30,0,30,150,210].map((e=>new A({h:t$b(n+e),s:a,l:r,a:s})));case"triad":return[0,120,240].map((e=>new A({h:t$b(n+e),s:a,l:r,a:s})));case"rectangle":return[0,60,180,240].map((e=>new A({h:t$b(n+e),s:a,l:r,a:s})));case"square":return[0,90,180,270].map((e=>new A({h:t$b(n+e),s:a,l:r,a:s})));case"monochromatic":{const e="tones"===t?a:r;let o=("tints"===t?100-e:e)/i;o="tints"===t?o:-1*o;const l=[e];for(let A=0;Anew A({h:n,s:e,l:r,a:s}))):l.map((e=>new A({h:n,s:a,l:e,a:s})))}}var o}};var r$c=a$b.Z,a$a={d:(A,e)=>{for(var t in e)a$a.o(e,t)&&!a$a.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},t$a={};a$a.d(t$a,{Z:()=>k});const e$b=6/29,n$a=Math.pow(e$b,3),c$9=Math.pow(29/3,3),r$b={x:.96422,y:1,z:.82521};function u$7(A,e){return[A[0][0]*e[0]+A[0][1]*e[1]+A[0][2]*e[2],A[1][0]*e[0]+A[1][1]*e[1]+A[1][2]*e[2],A[2][0]*e[0]+A[2][1]*e[1]+A[2][2]*e[2]]}function s$9(A,e,t){return Math.max(A,Math.min(e,t))}function o$a(A){const e=A%360;return e<0?e+360:e}function l$4(A){const[e,t,i]=Object.values(A).map((A=>A/255)),n=Math.max(e,t,i),a=Math.min(e,t,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===e?(t-i)/r%6:n===t?(i-e)/r+2:(e-t)/r+4,delta:r}}function b$4(A){var e;const{Cmin:t,Cmax:i,H:n,delta:a}=l$4(A),r=(i+t)/2,s=0===a?0:a/(1-Math.abs(2*r-1));return{h:o$a(60*n),s:100*s,l:100*r,a:null!==(e=A.a)&&void 0!==e?e:1}}function h$3(A){var e;const{Cmax:t,H:i,delta:n}=l$4(A),a=0===n?0:n/t;return{h:o$a(60*i),s:100*a,v:100*t,a:null!==(e=A.a)&&void 0!==e?e:1}}function v$1(A){const{h:e,a:t}=b$4(A),{r:i,g:n,b:a}=A;return{h:e,w:Math.min(i,n,a)/2.55,b:100*(1-Math.max(i,n,a)/255),a:t}}function i$9(A){const[e,t,i]=u$7([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(A).map((A=>{return 100*(e=A,(e/=255)<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4));var e})));return function(A){const[e,t,i]=u$7([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}({x:e,y:t,z:i,a:A.a})}function m(A){const e=Object.values(i$9(A)).map(((A,e)=>A/(100*Object.values(r$b)[e]))).map((A=>A>n$a?Math.cbrt(A):(c$9*A+16)/116));return{l:116*e[1]-16,a:500*(e[0]-e[1]),b:200*(e[1]-e[2]),alpha:A.a}}function p$2(A){const{l:e,a:t,b:i}=m(A),n=180*Math.atan2(i,t)/Math.PI;return{l:e,c:Math.sqrt(Math.pow(t,2)+Math.pow(i,2)),h:o$a(n),a:A.a}}function f$2(A){const[e,t,i]=Object.values(i$9(A)).map((A=>A/100)),n=t/r$b.y,a=e&&t&&i?e+15*t+3*i:19,r=4*e/a,s=9*t/a,o=r$b.x+15*r$b.y+3*r$b.z,l=4*r$b.x/o,c=9*r$b.y/o;let d=n>n$a?116*Math.cbrt(n)-16:c$9*n,h=13*d*(r-l),g=13*d*(s-c);return d===Number(-0)&&(d=0),h===Number(-0)&&(h=0),g===Number(-0)&&(g=0),{l:d,u:h,v:g,a:A.a}}function M(A){const{x:e,y:t,z:i}=i$9(A),[n,a,r]=u$7([[2/3,0,0],[0,1,0],[-.5,1.5,.5]],[e,t,i]);return{u:n,v:a,w:r,a:A.a}}function w(A){let{r:e,g:t,b:i}=A;const n=Math.min(e,t,i);[e,t,i]=[e,t,i].map((A=>A-n));const a=Math.max(e,t,i);let r=Math.min(e,t);e-=r,t-=r,i&&t&&(i/=2,t/=2),r+=t,i+=t;const s=Math.max(e,r,i);if(s){const A=a/s;[e,r,i]=[e,r,i].map((e=>e*A))}return[e,r,i]=[e,r,i].map((A=>A+n)),{r:e,y:r,b:i,a:A.a}}function O(A){const{r:e,g:t,b:i,a:n}=A,a=1-Math.max(e,t,i)/255,[r,s,o]=1===a?[0,0,0]:[e,t,i].map((A=>100*(1-A/255-a)/(1-a)));return{c:r,m:s,y:o,k:100*a,a:n}}function j(A){const{h:e,s:t,v:i,a:n}=A,a=i/100,r=a*(t/100),s=r*(1-Math.abs(e/60%2-1)),o=a-r,l=e<60||300<=e&&e<360?r:120<=e&&e<240?0:s,c=240<=e&&e<360?0:60<=e&&e<180?r:s,d=e<120?0:180<=e&&e<300?r:s,[h,g,u]=[l,c,d].map((A=>255*(A+o)));return{r:h,g:g,b:u,a:null!=n?n:1}}function x(A){const[e,t,i]=Object.values(function(A){const[e,t,i]=u$7([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}(A)).map((A=>A/100)),[n,a,r]=u$7([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[e,t,i]).map((A=>{return s$9(0,255*((e=A)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e),255);var e}));return{r:n,g:a,b:r,a:A.a}}function y(A){const{l:e,a:t,b:i}=A,n=(e+16)/116,a=n+t/500,r=n-i/200,s=Object.values(r$b),[o,l,c]=[a,n,r].map(((A,e)=>(A>e$b?Math.pow(A,3):3*Math.pow(e$b,2)*(A-4/29))*s[e]*100));return x({x:o,y:l,z:c,a:A.alpha})}const k=A=>{A.prototype.mix=function({color:e="#fff",ratio:t=.5,colorspace:i="luv"}={}){const n=this.rgba(),a=(e instanceof A?e:new A(e)).rgba();let r,s;switch(t=s$9(0,t,1),i){case"hsl":r=Object.values(b$4(n)),s=Object.values(b$4(a));break;case"hsv":r=Object.values(h$3(n)),s=Object.values(h$3(a));break;case"hwb":r=Object.values(v$1(n)),s=Object.values(v$1(a));break;case"lab":r=Object.values(m(n)),s=Object.values(m(a));break;case"lch":r=Object.values(p$2(n)),s=Object.values(p$2(a));break;case"luv":r=Object.values(f$2(n)),s=Object.values(f$2(a));break;case"ryb":r=Object.values(w(n)),s=Object.values(w(a));break;case"uvw":r=Object.values(M(n)),s=Object.values(M(a));break;case"xyz":r=Object.values(i$9(n)),s=Object.values(i$9(a));break;case"cmyk":r=Object.values(O(n)),s=Object.values(O(a));break;default:r=Object.values(n),s=Object.values(a)}const[o,l,c,d,h]=r.map(((A,e)=>r[e]*(1-t)+s[e]*t));switch(i){case"hsl":return new A(function(A){const{h:e,s:t,l:i,a:n}=A,a=i/100,r=t/100,s=(1-Math.abs(2*a-1))*r,o=s*(1-Math.abs(e/60%2-1)),l=a-s/2,c=e<60||300<=e&&e<360?s:120<=e&&e<240?0:o,d=240<=e&&e<360?0:60<=e&&e<180?s:o,h=e<120?0:180<=e&&e<300?s:o,[g,u,p]=[c,d,h].map((A=>255*(A+l)));return{r:g,g:u,b:p,a:null!=n?n:1}}({h:o,s:l,l:c,a:d}));case"hsv":return new A(j({h:o,s:l,v:c,a:d}));case"hwb":return new A(function(A){const{h:e,b:t,w:i,a:n}=A;return j({h:e,s:100===t?0:100-i/(100-t)*100,v:100-t,a:n})}({h:o,w:l,b:c,a:d}));case"lab":return new A(y({l:o,a:l,b:c,alpha:d}));case"lch":return new A(function(A){const{l:e,c:t,h:i}=A;return y({l:e,a:t*Math.cos(i*Math.PI/180),b:t*Math.sin(i*Math.PI/180),alpha:A.a})}({l:o,c:l,h:c,a:d}));case"luv":return new A(function(A){const{l:e,u:t,v:i}=A,n=e>c$9*n$a?Math.pow((e+16)/116,3):e/c$9,a=r$b.x+15*r$b.y+3*r$b.z,r=(52*e/(t&&e?t+13*e*(4*r$b.x/a):1)-1)/3,s=-5*n,o=n*(39*e/(i&&e?i+13*e*(9*r$b.y/a):1)-5),l=r===-1/3?o-s:(o-s)/(r- -1/3);return x({x:100*l,y:100*n,z:100*(r*l+s),a:A.a})}({l:o,u:l,v:c,a:d}));case"ryb":return new A(function(A){let{r:e,y:t,b:i}=A;const n=Math.min(e,t,i);[e,t,i]=[e,t,i].map((A=>A-n));const a=Math.max(e,t,i);let r=Math.min(t,i);t-=r,i-=r,i&&r&&(i*=2,r*=2),e+=t,r+=t;const s=Math.max(e,r,i);if(s){const A=a/s;[e,r,i]=[e,r,i].map((e=>e*A))}return[e,r,i]=[e,r,i].map((A=>A+n)),{r:e,g:r,b:i,a:A.a}}({r:o,y:l,b:c,a:d}));case"uvw":return new A(function(A){const{u:e,v:t,w:i}=A,[n,a,r]=u$7([[1.5,0,0],[0,1,0],[1.5,-3,2]],[e,t,i]);return x({x:n,y:a,z:r,a:A.a})}({u:o,v:l,w:c,a:d}));case"xyz":return new A(x({x:o,y:l,z:c,a:d}));case"cmyk":return new A(function(A){const{c:e,m:t,y:i,k:n,a:a}=A,[r,s,o]=[e,t,i].map((A=>255*(1-A/100)*(1-n/100)));return{r:r,g:s,b:o,a:a}}({c:o,m:l,y:c,k:d,a:h}));default:return new A({r:o,g:l,b:c,a:d})}}};var z=t$a.Z,r$a={d:(A,e)=>{for(var t in e)r$a.o(e,t)&&!r$a.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},b$3={};r$a.d(b$3,{Z:()=>n$9});const g$1=["rgb(0,0,0)","rgb(0,0,51)","rgb(0,0,102)","rgb(0,0,153)","rgb(0,0,204)","rgb(0,0,255)","rgb(0,51,0)","rgb(0,51,51)","rgb(0,51,102)","rgb(0,51,153)","rgb(0,51,204)","rgb(0,51,255)","rgb(0,102,0)","rgb(0,102,51)","rgb(0,102,102)","rgb(0,102,153)","rgb(0,102,204)","rgb(0,102,255)","rgb(0,153,0)","rgb(0,153,51)","rgb(0,153,102)","rgb(0,153,153)","rgb(0,153,204)","rgb(0,153,255)","rgb(0,204,0)","rgb(0,204,51)","rgb(0,204,102)","rgb(0,204,153)","rgb(0,204,204)","rgb(0,204,255)","rgb(0,255,0)","rgb(0,255,51)","rgb(0,255,102)","rgb(0,255,153)","rgb(0,255,204)","rgb(0,255,255)","rgb(51,0,0)","rgb(51,0,51)","rgb(51,0,102)","rgb(51,0,153)","rgb(51,0,204)","rgb(51,0,255)","rgb(51,51,0)","rgb(51,51,51)","rgb(51,51,102)","rgb(51,51,153)","rgb(51,51,204)","rgb(51,51,255)","rgb(51,102,0)","rgb(51,102,51)","rgb(51,102,102)","rgb(51,102,153)","rgb(51,102,204)","rgb(51,102,255)","rgb(51,153,0)","rgb(51,153,51)","rgb(51,153,102)","rgb(51,153,153)","rgb(51,153,204)","rgb(51,153,255)","rgb(51,204,0)","rgb(51,204,51)","rgb(51,204,102)","rgb(51,204,153)","rgb(51,204,204)","rgb(51,204,255)","rgb(51,255,0)","rgb(51,255,51)","rgb(51,255,102)","rgb(51,255,153)","rgb(51,255,204)","rgb(51,255,255)","rgb(102,0,0)","rgb(102,0,51)","rgb(102,0,102)","rgb(102,0,153)","rgb(102,0,204)","rgb(102,0,255)","rgb(102,51,0)","rgb(102,51,51)","rgb(102,51,102)","rgb(102,51,153)","rgb(102,51,204)","rgb(102,51,255)","rgb(102,102,0)","rgb(102,102,51)","rgb(102,102,102)","rgb(102,102,153)","rgb(102,102,204)","rgb(102,102,255)","rgb(102,153,0)","rgb(102,153,51)","rgb(102,153,102)","rgb(102,153,153)","rgb(102,153,204)","rgb(102,153,255)","rgb(102,204,0)","rgb(102,204,51)","rgb(102,204,102)","rgb(102,204,153)","rgb(102,204,204)","rgb(102,204,255)","rgb(102,255,0)","rgb(102,255,51)","rgb(102,255,102)","rgb(102,255,153)","rgb(102,255,204)","rgb(102,255,255)","rgb(153,0,0)","rgb(153,0,51)","rgb(153,0,102)","rgb(153,0,153)","rgb(153,0,204)","rgb(153,0,255)","rgb(153,51,0)","rgb(153,51,51)","rgb(153,51,102)","rgb(153,51,153)","rgb(153,51,204)","rgb(153,51,255)","rgb(153,102,0)","rgb(153,102,51)","rgb(153,102,102)","rgb(153,102,153)","rgb(153,102,204)","rgb(153,102,255)","rgb(153,153,0)","rgb(153,153,51)","rgb(153,153,102)","rgb(153,153,153)","rgb(153,153,204)","rgb(153,153,255)","rgb(153,204,0)","rgb(153,204,51)","rgb(153,204,102)","rgb(153,204,153)","rgb(153,204,204)","rgb(153,204,255)","rgb(153,255,0)","rgb(153,255,51)","rgb(153,255,102)","rgb(153,255,153)","rgb(153,255,204)","rgb(153,255,255)","rgb(204,0,0)","rgb(204,0,51)","rgb(204,0,102)","rgb(204,0,153)","rgb(204,0,204)","rgb(204,0,255)","rgb(204,51,0)","rgb(204,51,51)","rgb(204,51,102)","rgb(204,51,153)","rgb(204,51,204)","rgb(204,51,255)","rgb(204,102,0)","rgb(204,102,51)","rgb(204,102,102)","rgb(204,102,153)","rgb(204,102,204)","rgb(204,102,255)","rgb(204,153,0)","rgb(204,153,51)","rgb(204,153,102)","rgb(204,153,153)","rgb(204,153,204)","rgb(204,153,255)","rgb(204,204,0)","rgb(204,204,51)","rgb(204,204,102)","rgb(204,204,153)","rgb(204,204,204)","rgb(204,204,255)","rgb(204,255,0)","rgb(204,255,51)","rgb(204,255,102)","rgb(204,255,153)","rgb(204,255,204)","rgb(204,255,255)","rgb(255,0,0)","rgb(255,0,51)","rgb(255,0,102)","rgb(255,0,153)","rgb(255,0,204)","rgb(255,0,255)","rgb(255,51,0)","rgb(255,51,51)","rgb(255,51,102)","rgb(255,51,153)","rgb(255,51,204)","rgb(255,51,255)","rgb(255,102,0)","rgb(255,102,51)","rgb(255,102,102)","rgb(255,102,153)","rgb(255,102,204)","rgb(255,102,255)","rgb(255,153,0)","rgb(255,153,51)","rgb(255,153,102)","rgb(255,153,153)","rgb(255,153,204)","rgb(255,153,255)","rgb(255,204,0)","rgb(255,204,51)","rgb(255,204,102)","rgb(255,204,153)","rgb(255,204,204)","rgb(255,204,255)","rgb(255,255,0)","rgb(255,255,51)","rgb(255,255,102)","rgb(255,255,153)","rgb(255,255,204)","rgb(255,255,255)"];function t$9(A){return(A/=255)<.04045?A/12.92:Math.pow((A+.055)/1.055,2.4)}function o$9(A,e=[0,0,0,1]){var t,i;return null!==(i=null===(t=A.match(/\d{1,3}/g))||void 0===t?void 0:t.map((A=>+A)))&&void 0!==i?i:e}const n$9=A=>{A.prototype.brightness=function({precision:A=4,percentage:e=!1}={}){const{r:t,g:i,b:n}=this.rgba(),a=+((.299*t+.587*i+.114*n)/255).toFixed(A);return e?100*a:a},A.prototype.luminance=function({precision:A=4,percentage:e=!1}={}){const{r:t,g:i,b:n}=this.rgba(),a=+(.2126*t$9(t)+.7152*t$9(i)+.0722*t$9(n)).toFixed(A);return e?100*a:a},A.prototype.contrast=function({bgColor:e="#fff",precision:t=4,ratio:i=!1}={}){const n=this.luminance(),a=(e instanceof A?e:new A(e)).luminance(),r=((Math.max(n,a)+.05)/(Math.min(n,a)+.05)).toFixed(t);return i?r+":1":+r},A.prototype.readableOn=function({bgColor:A="#fff",size:e="body",level:t="minimum"}={}){const i=this.contrast({bgColor:A});return"body"===e&&"enhanced"===t?i>=7:"large"===e&&"minimum"===t?i>=3:i>=4.5},A.prototype.equalTo=function(e="#fff"){const t=Object.values(this.rgba()),i=Object.values((e instanceof A?e:new A(e)).rgba());return t.toString()===i.toString()},A.prototype.isLight=function(){return this.brightness()>=.5},A.prototype.isDark=function(){return!this.isLight()},A.prototype.isCool=function(){const{h:A}=this.hsla();return 75<=A&&A<255},A.prototype.isWarm=function(){return!this.isCool()},A.prototype.isTinted=function(){return this.hsla().l>50},A.prototype.isShaded=function(){return this.hsla().l<50},A.prototype.isToned=function(){return this.hsla().s<100},A.prototype.isPureHue=function({reason:A=!0}={}){return this.isTinted()?!!A&&{pure:!1,reason:"tinted"}:this.isShaded()?!!A&&{pure:!1,reason:"shaded"}:this.isToned()?!!A&&{pure:!1,reason:"toned"}:!A||{pure:!0,reason:"N/A"}},A.prototype.closestCool=function(){const{h:A}=this.hsla();return this.isCool()?this:this.hueTo(A<75?75:254)},A.prototype.closestWarm=function(){const{h:A}=this.hsla();return this.isWarm()?this:this.hueTo(A<165?74:255)},A.prototype.closestPureHue=function(){const{h:e,a:t}=this.hsla(),{r:i,g:n,b:a,a:r}=function(A){const{h:e,s:t,l:i,a:n}=A,a=i/100,r=t/100,s=(1-Math.abs(2*a-1))*r,o=s*(1-Math.abs(e/60%2-1)),l=a-s/2,c=e<60||300<=e&&e<360?s:120<=e&&e<240?0:o,d=240<=e&&e<360?0:60<=e&&e<180?s:o,h=e<120?0:180<=e&&e<300?s:o,[g,u,p]=[c,d,h].map((A=>255*(A+l)));return{r:g,g:u,b:p,a:null!=n?n:1}}({h:e,s:100,l:50,a:t});return new A({r:i,g:n,b:a,a:r})},A.prototype.closestWebSafe=function(){const{r:e,g:t,b:i,a:n}=this.rgba();let[a,r,s]=new Array(3).fill(0),o=Number.POSITIVE_INFINITY,l={r:e,g:t,b:i,a:n};for(let A=0;A{for(var t in e)r$9.o(e,t)&&!r$9.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},g={};r$9.d(g,{Z:()=>a$9});const e$9={maroon:"rgb(128,0,0)","dark red":"rgb(139,0,0)",brown:"rgb(165,42,42)",firebrick:"rgb(178,34,34)",crimson:"rgb(220,20,60)",red:"rgb(255,0,0)",tomato:"rgb(255,99,71)",coral:"rgb(255,127,80)","indian red":"rgb(205,92,92)","light coral":"rgb(240,128,128)","dark salmon":"rgb(233,150,122)",salmon:"rgb(250,128,114)","light salmon":"rgb(255,160,122)","orange red":"rgb(255,69,0)","dark orange":"rgb(255,140,0)",orange:"rgb(255,165,0)",gold:"rgb(255,215,0)","dark golden rod":"rgb(184,134,11)","golden rod":"rgb(218,165,32)","pale golden rod":"rgb(238,232,170)","dark khaki":"rgb(189,183,107)",khaki:"rgb(240,230,140)",olive:"rgb(128,128,0)",yellow:"rgb(255,255,0)","yellow green":"rgb(154,205,50)","dark olive green":"rgb(85,107,47)","olive drab":"rgb(107,142,35)","lawn green":"rgb(124,252,0)","chart reuse":"rgb(127,255,0)","green yellow":"rgb(173,255,47)","dark green":"rgb(0,100,0)",green:"rgb(0,128,0)","forest green":"rgb(34,139,34)",lime:"rgb(0,255,0)","lime green":"rgb(50,205,50)","light green":"rgb(144,238,144)","pale green":"rgb(152,251,152)","dark sea green":"rgb(143,188,143)","medium spring green":"rgb(0,250,154)","spring green":"rgb(0,255,127)","sea green":"rgb(46,139,87)","medium aqua marine":"rgb(102,205,170)","medium sea green":"rgb(60,179,113)","light sea green":"rgb(32,178,170)","dark slate gray":"rgb(47,79,79)",teal:"rgb(0,128,128)","dark cyan":"rgb(0,139,139)",cyan:"rgb(0,255,255)",aqua:"rgb(0,255,255)","light cyan":"rgb(224,255,255)","dark turquoise":"rgb(0,206,209)",turquoise:"rgb(64,224,208)","medium turquoise":"rgb(72,209,204)","pale turquoise":"rgb(175,238,238)","aqua marine":"rgb(127,255,212)","powder blue":"rgb(176,224,230)","cadet blue":"rgb(95,158,160)","steel blue":"rgb(70,130,180)","corn flower blue":"rgb(100,149,237)","deep sky blue":"rgb(0,191,255)","dodger blue":"rgb(30,144,255)","light blue":"rgb(173,216,230)","sky blue":"rgb(135,206,235)","light sky blue":"rgb(135,206,250)","midnight blue":"rgb(25,25,112)",navy:"rgb(0,0,128)","dark blue":"rgb(0,0,139)","medium blue":"rgb(0,0,205)",blue:"rgb(0,0,255)","royal blue":"rgb(65,105,225)","blue violet":"rgb(138,43,226)",indigo:"rgb(75,0,130)","dark slate blue":"rgb(72,61,139)","slate blue":"rgb(106,90,205)","medium slate blue":"rgb(123,104,238)","medium purple":"rgb(147,112,219)","dark magenta":"rgb(139,0,139)","dark violet":"rgb(148,0,211)","dark orchid":"rgb(153,50,204)","medium orchid":"rgb(186,85,211)",purple:"rgb(128,0,128)",thistle:"rgb(216,191,216)",plum:"rgb(221,160,221)",violet:"rgb(238,130,238)",magenta:"rgb(255,0,255)",fuchsia:"rgb(255,0,255)",orchid:"rgb(218,112,214)","medium violet red":"rgb(199,21,133)","pale violet red":"rgb(219,112,147)","deep pink":"rgb(255,20,147)","hot pink":"rgb(255,105,180)","light pink":"rgb(255,182,193)",pink:"rgb(255,192,203)","antique white":"rgb(250,235,215)",beige:"rgb(245,245,220)",bisque:"rgb(255,228,196)","blanched almond":"rgb(255,235,205)",wheat:"rgb(245,222,179)","corn silk":"rgb(255,248,220)","lemon chiffon":"rgb(255,250,205)","light golden rod yellow":"rgb(250,250,210)","light yellow":"rgb(255,255,224)","saddle brown":"rgb(139,69,19)",sienna:"rgb(160,82,45)",chocolate:"rgb(210,105,30)",peru:"rgb(205,133,63)","sandy brown":"rgb(244,164,96)","burly wood":"rgb(222,184,135)",tan:"rgb(210,180,140)","rosy brown":"rgb(188,143,143)",moccasin:"rgb(255,228,181)","navajo white":"rgb(255,222,173)","peach puff":"rgb(255,218,185)","misty rose":"rgb(255,228,225)","lavender blush":"rgb(255,240,245)",linen:"rgb(250,240,230)","old lace":"rgb(253,245,230)","papaya whip":"rgb(255,239,213)","sea shell":"rgb(255,245,238)","mint cream":"rgb(245,255,250)","slate gray":"rgb(112,128,144)","light slate gray":"rgb(119,136,153)","light steel blue":"rgb(176,196,222)",lavender:"rgb(230,230,250)","floral white":"rgb(255,250,240)","alice blue":"rgb(240,248,255)","ghost white":"rgb(248,248,255)",honeydew:"rgb(240,255,240)",ivory:"rgb(255,255,240)",azure:"rgb(240,255,255)",snow:"rgb(255,250,250)",black:"rgb(0,0,0)","dim gray":"rgb(105,105,105)","dim grey":"rgb(105,105,105)",gray:"rgb(128,128,128)",grey:"rgb(128,128,128)","dark gray":"rgb(169,169,169)","dark grey":"rgb(169,169,169)",silver:"rgb(192,192,192)","light gray":"rgb(211,211,211)","light grey":"rgb(211,211,211)",gainsboro:"rgb(220,220,220)",gainsborough:"rgb(220,220,220)","white smoke":"rgb(245,245,245)",white:"rgb(255,255,255)",transparent:"rgba(0,0,0,0)"};function b$2(A,e=[0,0,0,1]){var t,i;return null!==(i=null===(t=A.match(/\d{1,3}/g))||void 0===t?void 0:t.map((A=>+A)))&&void 0!==i?i:e}const a$9=A=>{A.prototype.name=function({exact:A=!0}={}){const{r:e,g:t,b:i,a:n}=this.rgba();if(0===n)return"transparent";const[a,r]=[Object.keys(e$9),Object.values(e$9)];let s;if(A){const A=this.stringRGB({alpha:!1}).replace(/\s/g,"");s=a.find((e=>e$9[e]===A))}else{let A=Number.POSITIVE_INFINITY;for(let n=0;n{for(var t in e)t$8.o(e,t)&&!t$8.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},a$8={};t$8.d(a$8,{Z:()=>d$1});const n$8=6/29,r$8=Math.pow(n$8,3),o$8=Math.pow(29/3,3),e$8={x:.96422,y:1,z:.82521};function c$8(A,e){return[A[0][0]*e[0]+A[0][1]*e[1]+A[0][2]*e[2],A[1][0]*e[0]+A[1][1]*e[1]+A[1][2]*e[2],A[2][0]*e[0]+A[2][1]*e[1]+A[2][2]*e[2]]}function s$8(A,e,t){return Math.max(A,Math.min(e,t))}function u$6(A){const e=A%360;return e<0?e+360:e}function i$8(A){const{l:e,a:t,b:i}=function(A){const e=Object.values(function(A){const[e,t,i]=c$8([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(A).map((A=>{return 100*(e=A,(e/=255)<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4));var e})));return function(A){const[e,t,i]=c$8([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}({x:e,y:t,z:i,a:A.a})}(A)).map(((A,e)=>A/(100*Object.values(e$8)[e]))).map((A=>A>r$8?Math.cbrt(A):(o$8*A+16)/116));return{l:116*e[1]-16,a:500*(e[0]-e[1]),b:200*(e[1]-e[2]),alpha:A.a}}(A),n=180*Math.atan2(i,t)/Math.PI;return{l:e,c:Math.sqrt(Math.pow(t,2)+Math.pow(i,2)),h:u$6(n),a:A.a}}function h$2(A){const{l:e,c:t,h:i}=A;return function(A){const{l:e,a:t,b:i}=A,n=(e+16)/116,a=n+t/500,r=n-i/200,s=Object.values(e$8),[o,l,c]=[a,n,r].map(((A,e)=>(A>n$8?Math.pow(A,3):3*Math.pow(n$8,2)*(A-4/29))*s[e]*100));return function(A){const[e,t,i]=Object.values(function(A){const[e,t,i]=c$8([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}(A)).map((A=>A/100)),[n,a,r]=c$8([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[e,t,i]).map((A=>{return s$8(0,255*((e=A)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e),255);var e}));return{r:n,g:a,b:r,a:A.a}}({x:o,y:l,z:c,a:A.alpha})}({l:e,a:t*Math.cos(i*Math.PI/180),b:t*Math.sin(i*Math.PI/180),alpha:A.a})}const l$2=/lcha?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function p$1({l:A,c:e,h:t,a:i}){return[h$2({l:s$8(0,A,100),c:s$8(0,e,230),h:u$6(t),a:(n=i,void 0!==n?s$8(0,n,1):1)}),"lch"];var n}function f$1(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{l:e,c:t,h:i}=A;return void 0!==e&&void 0!==t&&void 0!==i}(A))return p$1(A);if("string"==typeof A){l$2.lastIndex=0;const e=l$2.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map(((A,e)=>A.includes("%")?+A.slice(0,-1)*(0===e?1:1===e?2.3:2===e?3.59:.01):+A));return p$1({l:A,c:t,h:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const d$1=A=>{A.prototype.lcha=function(){return i$8(this.rgba())},A.prototype.stringLCH=function({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(this.lcha()).map(((A,t)=>function(A,e){return+A.toFixed(e>=0?e:0)}(A,e[t])));return A?`lcha(${t}%, ${i}, ${n}, ${a})`:`lch(${t}%, ${i}, ${n})`},A.Parsers.push(f$1)};var b$1=a$8.Z,t$7={d:(A,e)=>{for(var t in e)t$7.o(e,t)&&!t$7.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},n$7={};t$7.d(n$7,{Z:()=>l$1});const r$7=Math.pow(6/29,3),e$7=Math.pow(29/3,3);function o$7(A,e){return[A[0][0]*e[0]+A[0][1]*e[1]+A[0][2]*e[2],A[1][0]*e[0]+A[1][1]*e[1]+A[1][2]*e[2],A[2][0]*e[0]+A[2][1]*e[1]+A[2][2]*e[2]]}function a$7(A,e,t){return Math.max(A,Math.min(e,t))}function u$5(A){const{l:e,u:t,v:i}=A,n=e>e$7*r$7?Math.pow((e+16)/116,3):e/e$7,a=(52*e/(t&&e?t+13*e*.20916005282038627:1)-1)/3,r=-5*n,s=n*(39*e/(i&&e?i+13*e*(9/18.43985):1)-5),o=a===-1/3?s-r:(s-r)/(a- -1/3);return function(A){const[e,t,i]=Object.values(function(A){const[e,t,i]=o$7([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}(A)).map((A=>A/100)),[n,a,r]=o$7([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[e,t,i]).map((A=>{return a$7(0,255*((e=A)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e),255);var e}));return{r:n,g:a,b:r,a:A.a}}({x:100*o,y:100*n,z:100*(a*o+r),a:A.a})}const c$7=/color\s*\(\s*luva?\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function s$7({l:A,u:e,v:t,a:i}){return[u$5({l:a$7(0,A,100),u:a$7(-100,e,100),v:a$7(-100,t,100),a:(n=i,void 0!==n?a$7(0,n,1):1)}),"luv"];var n}function i$7(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{l:e,u:t,v:i}=A;return void 0!==e&&void 0!==t&&null!=i}(A))return s$7(A);if("string"==typeof A){c$7.lastIndex=0;const e=c$7.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map(((A,e)=>A.includes("%")?+A.slice(0,-1)*(e<3?1:.01):+A));return s$7({l:A,u:t,v:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const l$1=A=>{A.prototype.luva=function(){return function(A){const[e,t,i]=Object.values(function(A){const[e,t,i]=o$7([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(A).map((A=>{return 100*(e=A,(e/=255)<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4));var e})));return function(A){const[e,t,i]=o$7([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}({x:e,y:t,z:i,a:A.a})}(A)).map((A=>A/100)),n=t/1,a=e&&t&&i?e+15*t+3*i:19,r=4*e/a,s=9*t/a;let o=n>r$7?116*Math.cbrt(n)-16:e$7*n,l=13*o*(r-.20916005282038627),c=13*o*(s-.48807338454488514);return o===Number(-0)&&(o=0),l===Number(-0)&&(l=0),c===Number(-0)&&(c=0),{l:o,u:l,v:c,a:A.a}}(this.rgba())},A.prototype.stringLUV=function({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(this.luva()).map(((A,t)=>function(A,e){return+A.toFixed(e>=0?e:0)}(A,e[t])));return A?`color(luva ${t}%, ${i}%, ${n}%, ${a})`:`color(luv ${t}%, ${i}%, ${n}%)`},A.Parsers.push(i$7)};var v=n$7.Z,t$6={d:(A,e)=>{for(var t in e)t$6.o(e,t)&&!t$6.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},a$6={};t$6.d(a$6,{Z:()=>d});const n$6=6/29,r$6=Math.pow(n$6,3),e$6=Math.pow(29/3,3),o$6={x:.96422,y:1,z:.82521};function c$6(A,e){return[A[0][0]*e[0]+A[0][1]*e[1]+A[0][2]*e[2],A[1][0]*e[0]+A[1][1]*e[1]+A[1][2]*e[2],A[2][0]*e[0]+A[2][1]*e[1]+A[2][2]*e[2]]}function s$6(A,e,t){return Math.max(A,Math.min(e,t))}function u$4(A){return void 0!==A?s$6(0,A,1):1}function i$6(A){const e=Object.values(function(A){const[e,t,i]=c$6([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(A).map((A=>{return 100*(e=A,(e/=255)<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4));var e})));return function(A){const[e,t,i]=c$6([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}({x:e,y:t,z:i,a:A.a})}(A)).map(((A,e)=>A/(100*Object.values(o$6)[e]))).map((A=>A>r$6?Math.cbrt(A):(e$6*A+16)/116));return{l:116*e[1]-16,a:500*(e[0]-e[1]),b:200*(e[1]-e[2]),alpha:A.a}}function l(A){const{l:e,a:t,b:i}=A,n=(e+16)/116,a=n+t/500,r=n-i/200,s=Object.values(o$6),[o,l,c]=[a,n,r].map(((A,e)=>(A>n$6?Math.pow(A,3):3*Math.pow(n$6,2)*(A-4/29))*s[e]*100));return function(A){const[e,t,i]=Object.values(function(A){const[e,t,i]=c$6([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}(A)).map((A=>A/100)),[n,a,r]=c$6([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[e,t,i]).map((A=>{return s$6(0,255*((e=A)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e),255);var e}));return{r:n,g:a,b:r,a:A.a}}({x:o,y:l,z:c,a:A.alpha})}const p=/laba?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function b({l:A,a:e,b:t,alpha:i}){return[l({l:s$6(0,A,100),a:s$6(-160,e,160),b:s$6(-160,t,160),alpha:u$4(i)}),"lab"]}function f(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{l:e,a:t,b:i}=A;return void 0!==e&&void 0!==t&&void 0!==i}(A))return b(A);if("string"==typeof A){p.lastIndex=0;const e=p.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map(((A,e)=>A.includes("%")?+A.slice(0,-1)*(e<3?1:.01):+A));return b({l:A,a:t,b:i,alpha:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const d=A=>{A.prototype.laba=function(){return i$6(this.rgba())},A.prototype.stringLAB=function({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(this.laba()).map(((A,t)=>function(A,e){return+A.toFixed(e>=0?e:0)}(A,e[t])));return A?`laba(${t}%, ${i}, ${n}, ${a})`:`lab(${t}%, ${i}, ${n})`},A.Parsers.push(f)};var h$1=a$6.Z,t$5={d:(A,e)=>{for(var t in e)t$5.o(e,t)&&!t$5.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},n$5={};function r$5(A,e){return[A[0][0]*e[0]+A[0][1]*e[1]+A[0][2]*e[2],A[1][0]*e[0]+A[1][1]*e[1]+A[1][2]*e[2],A[2][0]*e[0]+A[2][1]*e[1]+A[2][2]*e[2]]}function o$5(A,e,t){return Math.max(A,Math.min(e,t))}function e$5(A){const{u:e,v:t,w:i}=A,[n,a,r]=r$5([[1.5,0,0],[0,1,0],[1.5,-3,2]],[e,t,i]);return function(A){const[e,t,i]=Object.values(function(A){const[e,t,i]=r$5([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}(A)).map((A=>A/100)),[n,a,r]=r$5([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[e,t,i]).map((A=>{return o$5(0,255*((e=A)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e),255);var e}));return{r:n,g:a,b:r,a:A.a}}({x:n,y:a,z:r,a:A.a})}t$5.d(n$5,{Z:()=>s$5});const a$5=/color\s*\(\s*uvwa?\s*(\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function u$3({u:A,v:e,w:t,a:i}){return[e$5({u:o$5(0,A,200/3*.96422),v:o$5(0,e,100),w:o$5(-48.211,t,191.2605),a:(n=i,void 0!==n?o$5(0,n,1):1)}),"uvw"];var n}function c$5(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{u:e,v:t,w:i}=A;return void 0!==e&&void 0!==t&&void 0!==i}(A))return u$3(A);if("string"==typeof A){a$5.lastIndex=0;const e=a$5.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map((A=>A.includes("%")?.01*+A.slice(0,-1):+A));return u$3({u:A,v:t,w:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const s$5=A=>{A.prototype.uvwa=function(){return function(A){const{x:e,y:t,z:i}=function(A){const[e,t,i]=r$5([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(A).map((A=>{return 100*(e=A,(e/=255)<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4));var e})));return function(A){const[e,t,i]=r$5([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}({x:e,y:t,z:i,a:A.a})}(A),[n,a,r]=r$5([[2/3,0,0],[0,1,0],[-.5,1.5,.5]],[e,t,i]);return{u:n,v:a,w:r,a:A.a}}(this.rgba())},A.prototype.stringUVW=function({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(this.uvwa()).map(((A,t)=>function(A,e){return+A.toFixed(e>=0?e:0)}(A,e[t])));return A?`color(uvwa ${t}, ${i}, ${n}, ${a})`:`color(uvw ${t}, ${i}, ${n})`},A.Parsers.push(c$5)};var i$5=n$5.Z,t$4={d:(A,e)=>{for(var t in e)t$4.o(e,t)&&!t$4.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},n$4={};function r$4(A,e){return[A[0][0]*e[0]+A[0][1]*e[1]+A[0][2]*e[2],A[1][0]*e[0]+A[1][1]*e[1]+A[1][2]*e[2],A[2][0]*e[0]+A[2][1]*e[1]+A[2][2]*e[2]]}function o$4(A,e,t){return Math.max(A,Math.min(e,t))}function e$4(A){const[e,t,i]=Object.values(function(A){const[e,t,i]=r$4([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}(A)).map((A=>A/100)),[n,a,r]=r$4([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[e,t,i]).map((A=>{return o$4(0,255*((e=A)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e),255);var e}));return{r:n,g:a,b:r,a:A.a}}t$4.d(n$4,{Z:()=>u$2});const a$4=/color\s*\(\s*xyza?\s*(\d*\.?\d+)\s*,?\s*(\d*\.?\d+)\s*,?\s*(\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function s$4({x:A,y:e,z:t,a:i}){return[e$4({x:o$4(0,A,96.422),y:o$4(0,e,100),z:o$4(0,t,82.521),a:(n=i,void 0!==n?o$4(0,n,1):1)}),"xyz"];var n}function c$4(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{x:e,y:t,z:i}=A;return void 0!==e&&void 0!==t&&void 0!==i}(A))return s$4(A);if("string"==typeof A){a$4.lastIndex=0;const e=a$4.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map((A=>A.includes("%")?.01*+A.slice(0,-1):+A));return s$4({x:A,y:t,z:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const u$2=A=>{A.prototype.xyza=function(){return function(A){const[e,t,i]=r$4([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(A).map((A=>{return 100*(e=A,(e/=255)<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4));var e})));return function(A){const[e,t,i]=r$4([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}({x:e,y:t,z:i,a:A.a})}(this.rgba())},A.prototype.stringXYZ=function({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(this.xyza()).map(((A,t)=>function(A,e){return+A.toFixed(e>=0?e:0)}(A,e[t])));return A?`color(xyza ${t}, ${i}, ${n}, ${a})`:`color(xyz ${t}, ${i}, ${n})`},A.Parsers.push(c$4)};var i$4=n$4.Z,t$3={d:(A,e)=>{for(var t in e)t$3.o(e,t)&&!t$3.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},n$3={};function r$3(A,e,t){return Math.max(A,Math.min(e,t))}function a$3(A){const e=A%360;return e<0?e+360:e}function o$3(A){const{h:e,a:t}=function(A){var e;const{Cmin:t,Cmax:i,H:n,delta:a}=function(A){const[e,t,i]=Object.values(A).map((A=>A/255)),n=Math.max(e,t,i),a=Math.min(e,t,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===e?(t-i)/r%6:n===t?(i-e)/r+2:(e-t)/r+4,delta:r}}(A),r=(i+t)/2,s=0===a?0:a/(1-Math.abs(2*r-1));return{h:a$3(60*n),s:100*s,l:100*r,a:null!==(e=A.a)&&void 0!==e?e:1}}(A),{r:i,g:n,b:a}=A;return{h:e,w:Math.min(i,n,a)/2.55,b:100*(1-Math.max(i,n,a)/255),a:t}}function e$3(A){const{h:e,b:t,w:i,a:n}=A;return function(A){const{h:e,s:t,v:i,a:n}=A,a=i/100,r=a*(t/100),s=r*(1-Math.abs(e/60%2-1)),o=a-r,l=e<60||300<=e&&e<360?r:120<=e&&e<240?0:s,c=240<=e&&e<360?0:60<=e&&e<180?r:s,d=e<120?0:180<=e&&e<300?r:s,[h,g,u]=[l,c,d].map((A=>255*(A+o)));return{r:h,g:g,b:u,a:null!=n?n:1}}({h:e,s:100===t?0:100-i/(100-t)*100,v:100-t,a:n})}t$3.d(n$3,{Z:()=>u$1});const s$3=/hwba?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function i$3({h:A,w:e,b:t,a:i}){return[e$3({h:a$3(A),w:r$3(0,e,100),b:r$3(0,t,100),a:(n=i,void 0!==n?r$3(0,n,1):1)}),"hwb"];var n}function c$3(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{h:e,w:t,b:i}=A;return void 0!==e&&void 0!==t&&void 0!==i}(A))return i$3(A);if("string"==typeof A){s$3.lastIndex=0;const e=s$3.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map(((A,e)=>A.includes("%")?+A.slice(0,-1)*(0===e?3.59:e<3?1:.01):+A));return i$3({h:A,w:t,b:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const u$1=A=>{A.prototype.hwba=function(){return o$3(this.rgba())},A.prototype.stringHWB=function({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(this.hwba()).map(((A,t)=>function(A,e){return+A.toFixed(e>=0?e:0)}(A,e[t])));return A?`hwba(${a$3(t)}, ${i}%, ${n}%, ${a})`:`hwb(${a$3(t)}, ${i}%, ${n}%)`},A.Parsers.push(c$3)};var h=n$3.Z,t$2={d:(A,e)=>{for(var t in e)t$2.o(e,t)&&!t$2.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},n$2={};function r$2(A,e,t){return Math.max(A,Math.min(e,t))}function s$2(A){const e=A%360;return e<0?e+360:e}function e$2(A){const{h:e,s:t,v:i,a:n}=A,a=i/100,r=a*(t/100),s=r*(1-Math.abs(e/60%2-1)),o=a-r,l=e<60||300<=e&&e<360?r:120<=e&&e<240?0:s,c=240<=e&&e<360?0:60<=e&&e<180?r:s,d=e<120?0:180<=e&&e<300?r:s,[h,g,u]=[l,c,d].map((A=>255*(A+o)));return{r:h,g:g,b:u,a:null!=n?n:1}}t$2.d(n$2,{Z:()=>c$2});const a$2=/hsva?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function o$2({h:A,s:e,v:t,a:i}){return[e$2({h:s$2(A),s:r$2(0,e,100),v:r$2(0,t,100),a:(n=i,void 0!==n?r$2(0,n,1):1)}),"hsv"];var n}function i$2(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{h:e,s:t,v:i}=A;return void 0!==e&&void 0!==t&&void 0!==i}(A))return o$2(A);if("string"==typeof A){a$2.lastIndex=0;const e=a$2.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map(((A,e)=>A.includes("%")?+A.slice(0,-1)*(0===e?3.59:e<3?1:.01):+A));return o$2({h:A,s:t,v:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const c$2=A=>{A.prototype.hsva=function(){return function(A){var e;const{Cmax:t,H:i,delta:n}=function(A){const[e,t,i]=Object.values(A).map((A=>A/255)),n=Math.max(e,t,i),a=Math.min(e,t,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===e?(t-i)/r%6:n===t?(i-e)/r+2:(e-t)/r+4,delta:r}}(A),a=0===n?0:n/t;return{h:s$2(60*i),s:100*a,v:100*t,a:null!==(e=A.a)&&void 0!==e?e:1}}(this.rgba())},A.prototype.stringHSV=function({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(this.hsva()).map(((A,t)=>function(A,e){return+A.toFixed(e>=0?e:0)}(A,e[t])));return A?`hsva(${s$2(t)}, ${i}%, ${n}%, ${a})`:`hsv(${s$2(t)}, ${i}%, ${n}%)`},A.Parsers.push(i$2)};var u=n$2.Z,t$1={d:(A,e)=>{for(var t in e)t$1.o(e,t)&&!t$1.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},r$1={};function n$1(A,e,t){return Math.max(A,Math.min(e,t))}function o$1(A){let{r:e,y:t,b:i}=A;const n=Math.min(e,t,i);[e,t,i]=[e,t,i].map((A=>A-n));const a=Math.max(e,t,i);let r=Math.min(t,i);t-=r,i-=r,i&&r&&(i*=2,r*=2),e+=t,r+=t;const s=Math.max(e,r,i);if(s){const A=a/s;[e,r,i]=[e,r,i].map((e=>e*A))}return[e,r,i]=[e,r,i].map((A=>A+n)),{r:e,g:r,b:i,a:A.a}}t$1.d(r$1,{Z:()=>i$1});const a$1=/color\s*\(\s*ryba?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function e$1({r:A,y:e,b:t,a:i}){return[o$1({r:n$1(0,A,255),y:n$1(0,e,255),b:n$1(0,t,255),a:(n=i,void 0!==n?n$1(0,n,1):1)}),"ryb"];var n}function s$1(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{r:e,y:t,b:i}=A;return void 0!==e&&void 0!==t&&void 0!==i}(A))return e$1(A);if("string"==typeof A){a$1.lastIndex=0;const e=a$1.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map(((A,e)=>A.includes("%")?+A.slice(0,-1)*(e<3?2.55:.01):+A));return e$1({r:A,y:t,b:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const i$1=A=>{A.prototype.ryba=function(){return function(A){let{r:e,g:t,b:i}=A;const n=Math.min(e,t,i);[e,t,i]=[e,t,i].map((A=>A-n));const a=Math.max(e,t,i);let r=Math.min(e,t);e-=r,t-=r,i&&t&&(i/=2,t/=2),r+=t,i+=t;const s=Math.max(e,r,i);if(s){const A=a/s;[e,r,i]=[e,r,i].map((e=>e*A))}return[e,r,i]=[e,r,i].map((A=>A+n)),{r:e,y:r,b:i,a:A.a}}(this.rgba())},A.prototype.stringRYB=function({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(this.ryba()).map(((A,t)=>function(A,e){return+A.toFixed(e>=0?e:0)}(A,e[t])));return A?`color(ryba ${t}, ${i}, ${n}, ${a})`:`color(ryb ${t}, ${i}, ${n})`},A.Parsers.push(s$1)};var c$1=r$1.Z,t={d:(A,e)=>{for(var i in e)t.o(e,i)&&!t.o(A,i)&&Object.defineProperty(A,i,{enumerable:!0,get:e[i]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},n={};function e(A,e,t){return Math.max(A,Math.min(e,t))}function r(A){const{c:e,m:t,y:i,k:n,a:a}=A,[r,s,o]=[e,t,i].map((A=>255*(1-A/100)*(1-n/100)));return{r:r,g:s,b:o,a:a}}t.d(n,{Z:()=>i});const c=/device-cmyka?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?),?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function o({c:A,m:t,y:i,k:n,a:a}){return[r({c:e(0,A,100),m:e(0,t,100),y:e(0,i,100),k:e(0,n,100),a:(s=a,void 0!==s?e(0,s,1):1)}),"cmyk"];var s}function a(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{c:e,m:t,y:i,k:n}=A;return void 0!==e&&void 0!==t&&void 0!==i&&void 0!==n}(A))return o(A);if("string"==typeof A){c.lastIndex=0;const e=c.exec(A);if(e){const[A,t,i,n,a]=e.filter((A=>void 0!==A)).slice(1).map(((A,e)=>A.includes("%")?+A.slice(0,-1)*(e<4?1:.01):+A));return o({c:A,m:t,y:i,k:n,a:a})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const i=A=>{A.prototype.cmyka=function(){return function(A){const{r:e,g:t,b:i,a:n}=A,a=1-Math.max(e,t,i)/255,[r,s,o]=1===a?[0,0,0]:[e,t,i].map((A=>100*(1-A/255-a)/(1-a)));return{c:r,m:s,y:o,k:100*a,a:n}}(this.rgba())},A.prototype.stringCMYK=function({alpha:A=!0,precision:e=[0,0,0,0,1]}={}){const[t,i,n,a,r]=Object.values(this.cmyka()).map(((A,t)=>function(A,e){return+A.toFixed(e>=0?e:0)}(A,e[t])));return A?`device-cmyk(${t}, ${i}, ${n}, ${a}, ${r})`:`device-cmyk(${t}, ${i}, ${n}, ${a})`},A.Parsers.push(a)};var s=n.Z;B([r$c,z,e$a,l$3,b$1,v,h$1,i$5,i$4,h,u,c$1,s]);const{determineFocusDistance:determineFocusDistance,intersectElementWithLine:intersectElementWithLine,getCommonBoundingBox:getCommonBoundingBox,getMaximumGroups:getMaximumGroups,measureText:measureText}=excalidrawLib,GAP=4;class ExcalidrawAutomate{constructor(A,e){this.targetView=null,this.mostRecentMarkdownSVG=null,this.onViewUnloadHook=null,this.onViewModeChangeHook=null,this.onLinkHoverHook=null,this.onLinkClickHook=null,this.onDropHook=null,this.activeScript=null,this.plugin=A,this.reset(),this.targetView=e}getAPI(A){return new ExcalidrawAutomate(this.plugin,A)}setFillStyle(A){switch(A){case 0:return this.style.fillStyle="hachure","hachure";case 1:return this.style.fillStyle="cross-hatch","cross-hatch";default:return this.style.fillStyle="solid","solid"}}setStrokeStyle(A){switch(A){case 0:return this.style.strokeStyle="solid","solid";case 1:return this.style.strokeStyle="dashed","dashed";default:return this.style.strokeStyle="dotted","dotted"}}setStrokeSharpness(A){return 0===A?(this.style.strokeSharpness="round","round"):(this.style.strokeSharpness="sharp","sharp")}setFontFamily(A){switch(A){case 1:return this.style.fontFamily=4,getFontFamily(4);case 2:return this.style.fontFamily=2,getFontFamily(2);case 3:return this.style.fontFamily=3,getFontFamily(3);default:return this.style.fontFamily=1,getFontFamily(1)}}setTheme(A){return 0===A?(this.canvas.theme="light","light"):(this.canvas.theme="dark","dark")}addToGroup(A){const e=nanoid();return A.forEach((A=>{var t,i;null===(i=null===(t=this.elementsDict[A])||void 0===t?void 0:t.groupIds)||void 0===i||i.push(e)})),e}async toClipboard(A){const e=A?await getTemplate(this.plugin,A,!1,new EmbeddedFilesLoader(this.plugin),0):null;let t=e?e.elements:[];t=t.concat(this.getElements()),navigator.clipboard.writeText(JSON.stringify({type:"excalidraw/clipboard",elements:t}))}getElements(){const A=[],e=Object.keys(this.elementsDict);for(let t=0;t{const l=t+Math.random()*r-r/2;o.push([l+Math.random()*r-r/2+t%2*r/6+A,i*Math.sqrt(n*n*(1-l*l/(a*a)))+Math.random()*s-s/2+t%2*s/6+e])};let c;for(c=r/2-a;c<=a-r/2;c+=a/6)l(c,1);for(c=a-r/2;c>=r/2-a;c-=a/6)l(c,-1);o.push(o[0]);const d=this.addLine((A=>{const e=getLineBox(A),n=t/e.w,a=i/e.h;let r;for(r=0;r500){const A=500/Math.max(a.size.width,a.size.height);a.size.width=A*a.size.width,a.size.height=A*a.size.height}return this.elementsDict[i]=this.boxedElement(i,"image",A,e,a.size.width,a.size.height),this.elementsDict[i].fileId=r,this.elementsDict[i].scale=[1,1],i}async addLaTex(A,e,t){const i=nanoid(),n=await tex2dataURL(t,this.plugin);return n?(this.imagesDict[n.fileId]={mimeType:n.mimeType,id:n.fileId,dataURL:n.dataURL,created:n.created,file:null,hasSVGwithBitmap:!1,latex:t},this.elementsDict[i]=this.boxedElement(i,"image",A,e,n.size.width,n.size.height),this.elementsDict[i].fileId=n.fileId,this.elementsDict[i].scale=[1,1],i):null}connectObjects(A,e,t,i,n){if(!this.elementsDict[A]||!this.elementsDict[t])return;if(["line","arrow","freedraw"].includes(this.elementsDict[A].type)||["line","arrow","freedraw"].includes(this.elementsDict[t].type))return;const a=(null==n?void 0:n.padding)?n.padding:10,r=(null==n?void 0:n.numberOfPoints)?n.numberOfPoints:0,s=(A,e)=>{switch(A){case"bottom":return[(e.x+(e.x+e.width))/2,e.y+e.height+a];case"left":return[e.x-a,(e.y+(e.y+e.height))/2];case"right":return[e.x+e.width+a,(e.y+(e.y+e.height))/2];default:return[(e.x+(e.x+e.width))/2,e.y-a]}};let o,l,c,d;const h=this.elementsDict[A],g=this.elementsDict[t];if(!e||!i){const A=h.x+h.width/2,t=g.x+g.width/2,n=h.y+h.height/2,a=g.y+g.height/2;if(!e){const e=intersectElementWithLine(h,[t,a],[A,n],4);0===e.length?[o,l]=[A,n]:[o,l]=e[0]}if(!i){const e=intersectElementWithLine(g,[A,n],[t,a],4);0===e.length?[c,d]=[t,a]:[c,d]=e[0]}}e&&([o,l]=s(e,this.elementsDict[A])),i&&([c,d]=s(i,this.elementsDict[t]));const u=r+2,p=[];for(let A=0;AMath.PI/2&&(i-=Math.PI),this.style.angle=i;const a=this.addText(t.x+t.points[1][0]/2-n.width/2,t.y+t.points[1][1]/2-n.height,e);return this.style.angle=0,a}clear(){this.elementsDict={},this.imagesDict={}}reset(){this.clear(),this.activeScript=null,this.style={strokeColor:"#000000",backgroundColor:"transparent",angle:0,fillStyle:"hachure",strokeWidth:1,strokeStyle:"solid",roughness:1,opacity:100,strokeSharpness:"sharp",fontFamily:1,fontSize:20,textAlign:"left",verticalAlign:"top",startArrowHead:null,endArrowHead:"arrow"},this.canvas={theme:"light",viewBackgroundColor:"#FFFFFF",gridSize:0}}isExcalidrawFile(A){return this.plugin.isExcalidrawFile(A)}setView(A){if("active"==A){const A=app.workspace.getActiveViewOfType(ExcalidrawView);if(!(A instanceof ExcalidrawView))return;this.targetView=A}if("first"==A){const A=app.workspace.getLeavesOfType("excalidraw");if(!A||0==A.length)return;this.targetView=A[0].view}return A instanceof ExcalidrawView&&(this.targetView=A),this.targetView}getExcalidrawAPI(){var A;return this.targetView&&(null===(A=this.targetView)||void 0===A?void 0:A._loaded)?this.targetView.excalidrawAPI:(errorMessage("targetView not set","getExcalidrawAPI()"),null)}getViewElements(){var A,e,t;if(!this.targetView||!(null===(A=this.targetView)||void 0===A?void 0:A._loaded))return errorMessage("targetView not set","getViewSelectedElements()"),[];const i=null===(t=null===(e=this.targetView)||void 0===e?void 0:e.excalidrawRef)||void 0===t?void 0:t.current;return i?null==i?void 0:i.getSceneElements():[]}deleteViewElements(A){var e,t,i;if(!this.targetView||!(null===(e=this.targetView)||void 0===e?void 0:e._loaded))return errorMessage("targetView not set","getViewSelectedElements()"),!1;const n=null===(i=null===(t=this.targetView)||void 0===t?void 0:t.excalidrawRef)||void 0===i?void 0:i.current;if(!n)return!1;const a=n.getSceneElements(),r=n.getAppState();return this.targetView.updateScene({elements:a.filter((e=>!A.includes(e))),appState:r,commitToHistory:!0}),!0}getViewSelectedElement(){const A=this.getViewSelectedElements();return A?A[0]:null}getViewSelectedElements(){var A;return this.targetView&&(null===(A=this.targetView)||void 0===A?void 0:A._loaded)?this.targetView.getViewSelectedElements():(errorMessage("targetView not set","getViewSelectedElements()"),[])}getViewFileForImageElement(A){var e,t,i,n;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?A&&"image"===A.type?null===(n=null===(i=null===(t=this.targetView)||void 0===t?void 0:t.excalidrawData)||void 0===i?void 0:i.getFile(A.fileId))||void 0===n?void 0:n.file:(errorMessage("Must provide an image element as input","getViewFileForImageElement()"),null):(errorMessage("targetView not set","getViewSelectedElements()"),null)}copyViewElementsToEAforEditing(A){A.forEach((A=>{this.elementsDict[A.id]=cloneElement(A)}))}viewToggleFullScreen(A=!1){var e;if(app.isMobile)return void errorMessage("mobile not supported","viewToggleFullScreen()");if(!this.targetView||!(null===(e=this.targetView)||void 0===e?void 0:e._loaded))return void errorMessage("targetView not set","viewToggleFullScreen()");if(A){const A=this.getExcalidrawAPI();this.targetView.updateScene({appState:Object.assign({viewModeEnabled:!0},A.appState),commitToHistory:!1})}const t=this.targetView;t.isFullscreen()?t.exitFullscreen():t.gotoFullscreen()}connectObjectWithViewSelectedElement(A,e,t,i){const n=this.getViewSelectedElement();if(!n)return!1;const a=n.id;return this.elementsDict[a]=n,this.connectObjects(A,e,a,t,i),delete this.elementsDict[a],!0}async addElementsToView(A=!1,e=!0,t=!1){var i;if(!this.targetView||!(null===(i=this.targetView)||void 0===i?void 0:i._loaded))return errorMessage("targetView not set","addElementsToView()"),!1;const n=this.getElements();return await this.targetView.addElements(n,A,e,this.imagesDict,t)}registerThisAsViewEA(){var A;return this.targetView&&(null===(A=this.targetView)||void 0===A?void 0:A._loaded)?(this.targetView.setHookServer(this),!0):(errorMessage("targetView not set","addElementsToView()"),!1)}deregisterThisAsViewEA(){var A;return this.targetView&&(null===(A=this.targetView)||void 0===A?void 0:A._loaded)?(this.targetView.setHookServer(this),!0):(errorMessage("targetView not set","addElementsToView()"),!1)}getEmbeddedFilesLoader(A){return new EmbeddedFilesLoader(this.plugin,A)}getExportSettings(A,e){return{withBackground:A,withTheme:e}}getBoundingBox(A){const e=getCommonBoundingBox(A);return{topX:e.minX,topY:e.minY,width:e.maxX-e.minX,height:e.maxY-e.minY}}getMaximumGroups(A){return getMaximumGroups(A)}getLargestElement(A){if(!A||0===A.length)return null;let e=A[0];const t=A=>A.height*A.width;let i=t(A[0]);for(let n=1;ni&&(i=a,e=A[n])}return e}getCommonGroupForElements(A){const e=A.map((A=>A.groupIds)).reduce(((A,e)=>e.filter((e=>A.includes(e)))));return e.length>0?e[0]:null}getElementsInTheSameGroupWithElement(A,e){if(!A||!e)return[];const t="text"===A.type&&A.containerId?e.filter((e=>e.id===A.containerId)):[];return 0===A.groupIds.length?1===t.length?[A,t[0]]:[A]:1===t.length?e.filter((e=>e.groupIds.some((e=>A.groupIds.includes(e)))||e===t[0])):e.filter((e=>e.groupIds.some((e=>A.groupIds.includes(e)))))}intersectElementWithLine(A,e,t,i){return intersectElementWithLine(A,e,t,i)}getScriptSettings(){var A;return this.activeScript?null!==(A=this.plugin.settings.scriptEngineSettings[this.activeScript])&&void 0!==A?A:{}:null}async setScriptSettings(A){if(!this.activeScript)return null;this.plugin.settings.scriptEngineSettings[this.activeScript]=A,await this.plugin.saveSettings()}openFileInNewOrAdjacentLeaf(A){if(!(A&&A instanceof obsidian.TFile))return null;if(!this.targetView)return null;const e=getNewOrAdjacentLeaf(this.plugin,this.targetView.leaf);return e.openFile(A,{active:!0}),e}measureText(A){var e,t;const i=_measureText(A,this.style.fontSize,this.style.fontFamily);return{width:null!==(e=i.w)&&void 0!==e?e:0,height:null!==(t=i.h)&&void 0!==t?t:0}}verifyMinimumPluginVersion(A){return PLUGIN_VERSION===A||isVersionNewerThanOther(PLUGIN_VERSION,A)}isExcalidrawView(A){return A instanceof ExcalidrawView}selectElementsInView(A){var e;this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?A&&0!==A.length&&this.getExcalidrawAPI().selectElements(A):errorMessage("targetView not set","selectElementsInView()")}generateElementId(){return nanoid()}cloneElement(A){const e=JSON.parse(JSON.stringify(A));return e.id=nanoid(),e}moveViewElementToZIndex(A,e){var t;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return void errorMessage("targetView not set","moveViewElementToZIndex()");const i=this.getExcalidrawAPI(),n=this.getViewElements(),a=n.filter((e=>e.id===A));if(0===a.length)return void errorMessage(`Element (id: ${A}) not found`,"moveViewElementToZIndex");if(e>=n.length)return void i.bringToFront(a);if(e<0)return void i.sendToBack(a);const r=n.indexOf(a[0]);n.splice(e,0,n.splice(r,1)[0]),this.targetView.updateScene({elements:n,commitToHistory:!0})}hexStringToRgb(A){const e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(A);return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}rgbToHexString(A){return O$1({r:A[0],g:A[1],b:A[2]}).stringHEX({alpha:!1})}hslToRgb(A){const e=O$1({h:A[0],s:A[1],l:A[2]});return[e.red,e.green,e.blue]}rgbToHsl(A){const e=O$1({r:A[0],g:A[1],b:A[2]});return[e.hue,e.saturation,e.lightness]}colorNameToHex(A){return COLOR_NAMES.has(A.toLowerCase().trim())?COLOR_NAMES.get(A.toLowerCase().trim()):A.trim()}getCM(A){if(A)return O$1(A);log("Creates a CM object. Visit https://github.com/lbragile/ColorMaster for documentation.")}}async function initExcalidrawAutomate(A){await initFonts();const e=new ExcalidrawAutomate(A);return window.ExcalidrawAutomate=e,e}function destroyExcalidrawAutomate(){delete window.ExcalidrawAutomate}function normalizeLinePoints(A){const e=[],[t,i]=A[0];for(let n=0;n-1||e.search("excalidraw-plugin: locked\n")>-1;await a.loadData(e,l,o?TextMode.parsed:TextMode.raw);let d=e.search("# Text Elements\n");-1==d&&(d=e.search("# Drawing\n"));let h=a.scene;t&&await i.loadSceneFiles(a,(A=>{if(A&&0!==A.length){for(const e of A)e.hasSVGwithBitmap&&(c=!0),a.scene.files[e.id]={mimeType:e.mimeType,id:e.id,dataURL:e.dataURL,created:e.created};h=scaleLoadedImage(a.scene,A).scene}}),n);let g=h.elements;if(s.hasGroupref){const e=s.hasSectionref?getTextElementsMatchingQuery(h.elements,["# "+s.sectionref],!0):h.elements.filter((A=>A.id===s.blockref));e.length>0&&(g=A.ea.getElementsInTheSameGroupWithElement(e[0],h.elements))}return{elements:g,appState:h.appState,frontmatter:e.substring(0,d),files:h.files,hasSVGwithBitmap:c}}return{elements:[],appState:{},frontmatter:null,files:[],hasSVGwithBitmap:c}}async function createPNG(A,e=1,t,i,n,a,r,s=[],o,l,c){var d,h,g,u,p,w,m,f;i||(i=new EmbeddedFilesLoader(o)),c=null!=c?c:o.settings.exportPaddingSVG;const B=A?await getTemplate(o,A,!0,i,l):null;let E=null!==(d=null==B?void 0:B.elements)&&void 0!==d?d:[];return E=E.concat(s),await getPNG({type:"excalidraw",version:2,source:"https://excalidraw.com",elements:E,appState:{theme:null!==(g=null!=n?n:null===(h=null==B?void 0:B.appState)||void 0===h?void 0:h.theme)&&void 0!==g?g:a,viewBackgroundColor:null!==(p=null===(u=null==B?void 0:B.appState)||void 0===u?void 0:u.viewBackgroundColor)&&void 0!==p?p:r},files:null!==(w=null==B?void 0:B.files)&&void 0!==w?w:{}},{withBackground:null!==(m=null==t?void 0:t.withBackground)&&void 0!==m?m:o.settings.exportWithBackground,withTheme:null!==(f=null==t?void 0:t.withTheme)&&void 0!==f?f:o.settings.exportWithTheme},c,e)}async function createSVG(A,e=!1,t,i,n,a,r,s=[],o,l,c){var d,h,g,u,p,w,m,f;i||(i=new EmbeddedFilesLoader(o));const B=A?await getTemplate(o,A,!0,i,l):null;let E=null!==(d=null==B?void 0:B.elements)&&void 0!==d?d:[];E=E.concat(s),c=null!=c?c:o.settings.exportPaddingSVG;const C=await getSVG({type:"excalidraw",version:2,source:"https://excalidraw.com",elements:E,appState:{theme:null!==(g=null!=n?n:null===(h=null==B?void 0:B.appState)||void 0===h?void 0:h.theme)&&void 0!==g?g:a,viewBackgroundColor:null!==(p=null===(u=null==B?void 0:B.appState)||void 0===u?void 0:u.viewBackgroundColor)&&void 0!==p?p:r},files:null!==(w=null==B?void 0:B.files)&&void 0!==w?w:{}},{withBackground:null!==(m=null==t?void 0:t.withBackground)&&void 0!==m?m:o.settings.exportWithBackground,withTheme:null!==(f=null==t?void 0:t.withTheme)&&void 0!==f?f:o.settings.exportWithTheme},c),b=getEmbeddedFilenameParts(A);if(!b.hasGroupref&&(b.hasBlockref||b.hasSectionref)){let A=b.hasSectionref?getTextElementsMatchingQuery(E,["# "+b.sectionref],!0):E.filter((A=>A.id===b.blockref));if(A.length>0){const e=A[0].containerId;e&&(A=A.concat(E.filter((A=>A.id===e))));const t=o.ea.getBoundingBox(A),i=o.ea.getBoundingBox(E);C.viewBox.baseVal.x=t.topX-i.topX,C.viewBox.baseVal.y=t.topY-i.topY,C.viewBox.baseVal.width=t.width+2*c,C.viewBox.baseVal.height=t.height+2*c}}return(null==B?void 0:B.hasSVGwithBitmap)&&C.setAttribute("hasbitmap","true"),e?embedFontsInSVG(C,o):C}function estimateLineBound(A){let e=1/0,t=1/0,i=-1/0,n=-1/0;for(const[a,r]of A)e=Math.min(e,a),t=Math.min(t,r),i=Math.max(i,a),n=Math.max(n,r);return[e,t,i,n]}function estimateBounds(A){const e=getCommonBoundingBox(A);return[e.minX,e.minY,e.maxX,e.maxY]}function repositionElementsToCursor(A,e,t=!1){const[i,n,a,r]=estimateBounds(A);let[s,o]=[0,0];return[s,o]=t?[e.x-(i+a)/2,e.y-(n+r)/2]:[e.x-i,e.y-n],A.forEach((A=>{A.x=A.x+s,A.y=A.y+o})),A}function errorMessage(A,e){switch(A){case"targetView not set":errorlog({where:"ExcalidrawAutomate",source:e,message:"targetView not set, or no longer active. Use setView before calling this function"});break;case"mobile not supported":errorlog({where:"ExcalidrawAutomate",source:e,message:"this function is not avalable on Obsidian Mobile"});break;default:errorlog({where:"ExcalidrawAutomate",source:e,message:"unknown error"})}}const insertLaTeXToView=A=>{const e=A.plugin.app,t=A.plugin.ea;new Prompt(e,t$d("ENTER_LATEX"),"","\\color{red}\\oint_S {E_n dA = \\frac{1}{{\\varepsilon _0 }}} Q_{inside}").openAndGetValue((async e=>{e&&(t.reset(),await t.addLaTex(0,0,e),t.setView(A),t.addElementsToView(!0,!1,!0))}))},search=async A=>{const e=A.plugin.ea;e.reset(),e.setView(A);const t=e.getViewElements().filter((A=>"text"===A.type));if(0===t.length)return;let i=await ScriptEngine.inputPrompt(A.plugin.app,"Search for","use quotation marks for exact match","");if(!i)return;const n=i.matchAll(/"(.*?)"/g);let a,r=[];for(;!(a=n.next()).done;)r.push(a.value[1]);i=i.replaceAll(/"(.*?)"/g,""),r=r.concat(i.split(" ").filter((A=>0!==A.length))),e.targetView.selectElementsMatchingQuery(t,r)},getTextElementsMatchingQuery=(A,e,t=!1)=>A&&0!==A.length&&e&&0!==e.length?A.filter((A=>"text"===A.type&&e.some((e=>{if(t){const t=A.rawText.toLowerCase().split("\n")[0].trim().match(/^#*(# .*)/);return!(!t||2!==t.length)&&t[1]===e.toLowerCase()}return A.rawText.toLowerCase().replaceAll("\n"," ").trim().match(e.toLowerCase())})))):[],cloneElement=A=>Object.assign(Object.assign({},A),{version:A.version+1,updated:Date.now(),versionNonce:Math.floor(1e9*Math.random())}),URL$1="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/index-new.md";class ScriptInstallPrompt extends obsidian.Modal{constructor(A){super(A.app),this.plugin=A}async onOpen(){this.contentEl.classList.add("excalidraw-scriptengine-install"),this.containerEl.classList.add("excalidraw-scriptengine-install");try{const A=await obsidian.request({url:URL$1});if(!A)return new obsidian.Notice("Error opening the Excalidraw Script Store page. Please double check that you can access the website. I've logged the link in developer console (press CTRL+SHIFT+i)",5e3),log(URL$1),void this.close();await obsidian.MarkdownRenderer.renderMarkdown(A,this.contentEl,"",this.plugin),this.contentEl.querySelectorAll("h1[data-heading],h2[data-heading],h3[data-heading]").forEach((A=>{A.setAttribute("id",A.getAttribute("data-heading"))})),this.contentEl.querySelectorAll("a.internal-link").forEach((A=>{A.removeAttribute("target")}))}catch(A){errorlog({where:"ScriptInstallPrompt.onOpen",error:A}),new obsidian.Notice("Could not open ScriptEngine repository"),this.close()}}onClose(){this.contentEl.empty()}}function toVal(A){var e,t,i="";if("string"==typeof A||"number"==typeof A)i+=A;else if("object"==typeof A)if(Array.isArray(A))for(e=0;eReact__namespace.createElement("label",{className:clsx("ToolIcon ToolIcon_type_floating","ToolIcon_size_medium",{"is-mobile":A}),onClick:()=>{this.toolsRef.current.setTheme(e.theme),this.toolsRef.current.toggleVisibility(e.zenModeEnabled||A)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-hidden":"true"},React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 166 267"},React__namespace.createElement("path",{fill:"transparent",d:"M0 0h165.742v267.245H0z"}),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{fill:"#bd7efc",strokeWidth:"0",d:"M55.5 96.49 39.92 57.05 111.28 10l4.58 36.54L55.5 95.65"}),React__namespace.createElement("path",{fill:"none",stroke:"#410380",strokeWidth:".5",d:"M55.5 96.49c-5.79-14.66-11.59-29.33-15.58-39.44M55.5 96.49c-3.79-9.59-7.58-19.18-15.58-39.44m0 0C60.13 43.72 80.34 30.4 111.28 10M39.92 57.05C60.82 43.27 81.73 29.49 111.28 10m0 0c.97 7.72 1.94 15.45 4.58 36.54M111.28 10c1.14 9.12 2.29 18.24 4.58 36.54m0 0C95.41 63.18 74.96 79.82 55.5 95.65m60.36-49.11C102.78 57.18 89.71 67.82 55.5 95.65m0 0v.84m0-.84v.84"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{fill:"#e2c4ff",strokeWidth:"0",d:"m111.234 10.06 44.51 42.07-40.66-5.08-3.85-36.99"}),React__namespace.createElement("path",{fill:"none",stroke:"#410380",strokeWidth:".5",d:"M111.234 10.06c11.83 11.18 23.65 22.36 44.51 42.07m-44.51-42.07 44.51 42.07m0 0c-13.07-1.63-26.13-3.27-40.66-5.08m40.66 5.08c-11.33-1.41-22.67-2.83-40.66-5.08m0 0c-1.17-11.29-2.35-22.58-3.85-36.99m3.85 36.99c-1.47-14.17-2.95-28.33-3.85-36.99m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{fill:"#2f005e",strokeWidth:"0",d:"m10 127.778 45.77-32.99-15.57-38.08-30.2 71.07"}),React__namespace.createElement("path",{fill:"none",stroke:"#410380",strokeWidth:".5",d:"M10 127.778c16.85-12.14 33.7-24.29 45.77-32.99M10 127.778c16.59-11.95 33.17-23.91 45.77-32.99m0 0c-6.14-15.02-12.29-30.05-15.57-38.08m15.57 38.08c-4.08-9.98-8.16-19.96-15.57-38.08m0 0c-11.16 26.27-22.33 52.54-30.2 71.07m30.2-71.07c-10.12 23.81-20.23 47.61-30.2 71.07m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{fill:"#410380",strokeWidth:"0",d:"m40.208 235.61 15.76-140.4-45.92 32.92 30.16 107.48"}),React__namespace.createElement("path",{fill:"none",stroke:"#410380",strokeWidth:".5",d:"M40.208 235.61c3.7-33.01 7.41-66.02 15.76-140.4m-15.76 140.4c3.38-30.16 6.77-60.32 15.76-140.4m0 0c-10.83 7.76-21.66 15.53-45.92 32.92m45.92-32.92c-11.69 8.38-23.37 16.75-45.92 32.92m0 0c6.84 24.4 13.69 48.8 30.16 107.48m-30.16-107.48c6.67 23.77 13.33 47.53 30.16 107.48m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{fill:"#943feb",strokeWidth:"0",d:"m111.234 240.434-12.47 16.67-42.36-161.87 58.81-48.3 40.46 5.25-44.44 188.25"}),React__namespace.createElement("path",{fill:"none",stroke:"#410380",strokeWidth:".5",d:"M111.234 240.434c-3.79 5.06-7.57 10.12-12.47 16.67m12.47-16.67c-4.43 5.93-8.87 11.85-12.47 16.67m0 0c-16.8-64.17-33.59-128.35-42.36-161.87m42.36 161.87c-9.74-37.2-19.47-74.41-42.36-161.87m0 0c15.03-12.35 30.07-24.7 58.81-48.3m-58.81 48.3c22.49-18.47 44.97-36.94 58.81-48.3m0 0c9.48 1.23 18.95 2.46 40.46 5.25m-40.46-5.25c13.01 1.69 26.02 3.38 40.46 5.25m0 0c-10.95 46.41-21.91 92.82-44.44 188.25m44.44-188.25c-12.2 51.71-24.41 103.42-44.44 188.25m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{fill:"#6212b3",strokeWidth:"0",d:"m40.379 235.667 15.9-140.21 42.43 161.79-58.33-21.58"}),React__namespace.createElement("path",{fill:"none",stroke:"#410380",strokeWidth:".5",d:"M40.379 235.667c4.83-42.62 9.67-85.25 15.9-140.21m-15.9 140.21c5.84-51.52 11.69-103.03 15.9-140.21m0 0c10.98 41.87 21.96 83.74 42.43 161.79m-42.43-161.79c13.28 50.63 26.56 101.25 42.43 161.79m0 0c-11.8-4.37-23.6-8.74-58.33-21.58m58.33 21.58c-21.73-8.04-43.47-16.08-58.33-21.58m0 0s0 0 0 0m0 0s0 0 0 0"}))))),this.plugin=A,this.toolsRef=e}}class ActionButton extends React__namespace.Component{constructor(A){super(A),this.toastMessageTimeout=0,this.state={visible:!0}}render(){return React__namespace.createElement("button",{style:{width:"fit-content",padding:"2px",margin:"4px"},className:"ToolIcon_type_button ToolIcon_size_small ToolIcon_type_button--show ToolIcon",title:this.props.title,onClick:A=>{this.toastMessageTimeout&&(window.clearTimeout(this.toastMessageTimeout),this.toastMessageTimeout=0),this.props.action(A)},onPointerDown:()=>{this.toastMessageTimeout=window.setTimeout((()=>{var A;return null===(A=this.props.view.excalidrawAPI)||void 0===A?void 0:A.setToastMessage(this.props.title)}),300)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-hidden":"true"},this.props.icon))}}const ICONS={exportLibrary:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 200 190"},React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M50 10h20v20H50"}),React__namespace.createElement("path",{fill:"none",strokeWidth:"2",d:"M50 10h20m-20 0h20m0 0v20m0-20v20m0 0H50m20 0H50m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M90 10h20v20H90"}),React__namespace.createElement("path",{fill:"none",strokeWidth:"2",d:"M90 10h20m-20 0h20m0 0v20m0-20v20m0 0H90m20 0H90m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M130 10h20v20h-20"}),React__namespace.createElement("path",{fill:"none",strokeWidth:"2",d:"M130 10h20m-20 0h20m0 0v20m0-20v20m0 0h-20m20 0h-20m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M170 10h20v20h-20"}),React__namespace.createElement("path",{fill:"none",strokeWidth:"2",d:"M170 10h20m-20 0h20m0 0v20m0-20v20m0 0h-20m20 0h-20m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M70 50h60v80h20l-50 50-50-50h20V50"}),React__namespace.createElement("path",{fill:"none",strokeWidth:"2",d:"M70 50h60m-60 0h60m0 0v80m0-80v80m0 0h20m-20 0h20m0 0-50 50m50-50-50 50m0 0-50-50m50 50-50-50m0 0h20m-20 0h20m0 0V50m0 80V50m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M10 10h20v20H10"}),React__namespace.createElement("path",{fill:"none",strokeWidth:"2",d:"M10 10h20m-20 0h20m0 0v20m0-20v20m0 0H10m20 0H10m0 0V10m0 20V10"}))),insertImage:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},React__namespace.createElement("path",{d:"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zM128 152c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zM96 352h320v-80l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L192 304l-39.515-39.515c-4.686-4.686-12.284-4.686-16.971 0L96 304v48z"})),insertMD:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 384 512"},React__namespace.createElement("path",{d:"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z"})),insertLaTeX:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512"},React__namespace.createElement("path",{d:"M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z"})),insertLink:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},React__namespace.createElement("path",{d:"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"})),exportSVG:React__namespace.createElement("svg",{viewBox:"0 0 28 28"},React__namespace.createElement("text",{style:{fontSize:"28px",fontWeight:"bold"},x:"4",y:"24"},"S")),exportPNG:React__namespace.createElement("svg",{viewBox:"0 0 28 28"},React__namespace.createElement("text",{style:{fontSize:"28px",fontWeight:"bold"},x:"4",y:"24"},"P")),exportExcalidraw:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100"},React__namespace.createElement("g",{transform:"translate(30,5)"},React__namespace.createElement("path",{d:"M14.45 1.715c-2.723 2.148-6.915 5.797-10.223 8.93l-2.61 2.445.477 3.207c.258 1.75.738 5.176 1.031 7.582.332 2.406.66 4.668.773 4.996.145.438 0 .656-.406.656-.699 0-.734-.183 1.176 5.832.7 2.297 1.363 4.414 1.434 4.633.074.254.367.363.699.254.332-.145.515-.438.406-.691-.113-.293.074-.586.367-.696.403-.144.367-.437-.258-1.492-.992-1.64-3.53-15.64-3.675-20.164-.11-3.207-.11-3.242 1.25-5.066 1.324-1.786 4.375-4.485 9.078-7.91 1.324-.985 2.648-2.079 3.015-2.446.551-.656.809-.472 5.442 4.414 2.683 2.805 5.664 5.688 6.617 6.414l1.766 1.313-1.36 2.844c-.734 1.53-3.715 7.437-6.656 13.054-6.137 11.813-4.887 10.68-12.02 10.79l-4.632.038-1.547 1.75c-1.617 1.86-1.836 2.551-1.063 3.72.293.398.512 1.054.512 1.456 0 .656.258.766 1.73.84.918.035 1.762.145 1.875.254.11.11.258 2.371.368 5.031l.144 4.813-2.46 5.25C1.616 72.516 0 76.527 0 77.84c0 .691.148 1.273.293 1.273.367 0 .367-.035 15.332-30.988 6.95-14.363 13.531-27.89 14.633-30.113 1.101-2.227 2.094-4.266 2.168-4.559.074-.328-2.461-2.844-6.508-6.379C22.281 3.864 19.082.95 18.785.621c-.844-1.023-2.094-.695-4.336 1.094zM15.7 43.64c-1.692 3.246-1.766 3.28-6.4 3.5-4.081.218-4.152.183-4.152-.582 0-.438-.148-1.024-.332-1.313-.222-.328-.074-.914.442-1.715l.808-1.238h3.676c2.024-.04 4.34-.184 5.149-.328.808-.149 1.507-.219 1.578-.184.074.035-.293.875-.77 1.86zm-3.09 5.832c-.294.765-1.067 2.37-1.692 3.574-1.027 2.043-1.137 2.113-1.395 1.277-.148-.511-.257-2.008-.296-3.355-.036-2.66-.11-2.625 2.98-2.809l.992-.035zm0 0"}),React__namespace.createElement("path",{d:"M15.55 10.39c-.66.473-.843.95-.843 2.153 0 1.422.11 1.64 1.102 2.039.992.402 1.25.367 2.39-.398 1.508-1.024 1.543-1.278.442-2.918-.957-1.422-1.914-1.676-3.09-.875zm2.098 1.313c.586 1.02.22 1.785-.882 1.785-.993 0-1.434-.984-.883-1.968.441-.801 1.285-.727 1.765.183zm0 0M38.602 18.594c0 .183-.22.363-.477.363-.219 0-.844 1.023-1.324 2.262-1.469 3.793-16.176 32.629-16.211 31.718 0-.472-.223-.8-.59-.8-.516 0-.59.289-.367 1.71.219 1.641.074 2.008-5.149 12.071-2.941 5.723-6.101 11.703-7.02 13.305-.956 1.68-1.69 3.5-1.765 4.265-.11 1.313.035 1.496 3.235 4.23 1.84 1.606 4.191 3.61 5.222 4.52 4.63 4.196 6.801 5.871 7.387 5.762.883-.145 14.523-14.328 14.559-15.129 0-.367-.66-5.906-1.47-12.324-1.398-10.938-2.722-23.734-2.573-24.973.109-.765-.442-4.633-.844-6.308-.332-1.313-.184-1.86 2.46-7.84 1.544-3.535 3.567-7.875 4.45-9.625.844-1.75 1.582-3.281 1.582-3.39 0-.11-.258-.18-.55-.18-.298 0-.555.144-.555.363zm-8.454 27.234c.403 2.55 1.211 8.676 1.801 13.598 1.14 9.043 2.461 19.07 2.832 21.62.219 1.278.07 1.532-2.316 4.157-4.156 4.629-8.567 9.188-10.074 10.356l-1.399 1.093-7.168-6.636c-6.617-6.051-7.168-6.672-6.765-7.403.222-.398 2.097-3.789 4.156-7.508 2.058-3.718 4.777-8.68 6.027-11.011 1.29-2.371 2.465-4.41 2.684-4.52.258-.148.332 3.535.258 11.375-.149 11.703-.11 11.739 1.066 11.485.148 0 .258-5.907.258-13.09V56.293l3.86-7.656c2.132-4.23 3.898-7.621 3.972-7.586.07.039.441 2.187.808 4.777zm0 0"}))),search:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},React__namespace.createElement("path",{d:"M500.3 443.7l-119.7-119.7c27.22-40.41 40.65-90.9 33.46-144.7C401.8 87.79 326.8 13.32 235.2 1.723C99.01-15.51-15.51 99.01 1.724 235.2c11.6 91.64 86.08 166.7 177.6 178.9c53.8 7.189 104.3-6.236 144.7-33.46l119.7 119.7c15.62 15.62 40.95 15.62 56.57 0C515.9 484.7 515.9 459.3 500.3 443.7zM79.1 208c0-70.58 57.42-128 128-128s128 57.42 128 128c0 70.58-57.42 128-128 128S79.1 278.6 79.1 208z"})),switchToMarkdown:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512"},React__namespace.createElement("path",{d:"M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z"})),gotoFullScreen:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512"},React__namespace.createElement("path",{d:"M128 32H32C14.31 32 0 46.31 0 64v96c0 17.69 14.31 32 32 32s32-14.31 32-32V96h64c17.69 0 32-14.31 32-32S145.7 32 128 32zM416 32h-96c-17.69 0-32 14.31-32 32s14.31 32 32 32h64v64c0 17.69 14.31 32 32 32s32-14.31 32-32V64C448 46.31 433.7 32 416 32zM128 416H64v-64c0-17.69-14.31-32-32-32s-32 14.31-32 32v96c0 17.69 14.31 32 32 32h96c17.69 0 32-14.31 32-32S145.7 416 128 416zM416 320c-17.69 0-32 14.31-32 32v64h-64c-17.69 0-32 14.31-32 32s14.31 32 32 32h96c17.69 0 32-14.31 32-32v-96C448 334.3 433.7 320 416 320z"})),exitFullScreen:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512"},React__namespace.createElement("path",{d:"M128 320H32c-17.69 0-32 14.31-32 32s14.31 32 32 32h64v64c0 17.69 14.31 32 32 32s32-14.31 32-32v-96C160 334.3 145.7 320 128 320zM416 320h-96c-17.69 0-32 14.31-32 32v96c0 17.69 14.31 32 32 32s32-14.31 32-32v-64h64c17.69 0 32-14.31 32-32S433.7 320 416 320zM320 192h96c17.69 0 32-14.31 32-32s-14.31-32-32-32h-64V64c0-17.69-14.31-32-32-32s-32 14.31-32 32v96C288 177.7 302.3 192 320 192zM128 32C110.3 32 96 46.31 96 64v64H32C14.31 128 0 142.3 0 160s14.31 32 32 32h96c17.69 0 32-14.31 32-32V64C160 46.31 145.7 32 128 32z"})),releaseNotes:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},React__namespace.createElement("path",{d:"M0 219.2v212.5c0 14.25 11.62 26.25 26.5 27C75.32 461.2 180.2 471.3 240 511.9V245.2C181.4 205.5 79.99 194.8 29.84 192C13.59 191.1 0 203.6 0 219.2zM482.2 192c-50.09 2.848-151.3 13.47-209.1 53.09C272.1 245.2 272 245.3 272 245.5v266.5c60.04-40.39 164.7-50.76 213.5-53.28C500.4 457.9 512 445.9 512 431.7V219.2C512 203.6 498.4 191.1 482.2 192zM352 96c0-53-43-96-96-96S160 43 160 96s43 96 96 96S352 149 352 96z"})),rawMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 60"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",strokeWidth:"4",d:"M20 10H10m10 0H10m0 0v40m0-40v40m0 0h10m-10 0h10M40 10H30m10 0H30m0 0v40m0-40v40m0 0h10m-10 0h10M60 10h10m-10 0h10m0 0v40m0-40v40m0 0H60m10 0H60M80 10h10m-10 0h10m0 0v40m0-40v40m0 0H80m10 0H80"})),parsedMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512"},React__namespace.createElement("path",{d:"M574.1 280.4l-45.38-181.8c-5.875-23.63-21.62-44-43-55.75c-21.5-11.75-46.1-14.13-70.25-6.375l-15.25 5.125c-8.375 2.75-12.87 11.88-10 20.25l5 15.13c2.75 8.375 11.88 12.88 20.25 10.13l13.12-4.375c10.88-3.625 23-3.625 33.25 1.75c10.25 5.375 17.5 14.5 20.38 25.75l38.38 153.9c-22.12-6.875-49.75-12.5-81.13-12.5c-34.88 0-73.1 7-114.9 26.75H251.4C210.5 258.6 171.4 251.6 136.5 251.6c-31.38 0-59 5.625-81.12 12.5l38.38-153.9c2.875-11.25 10.12-20.38 20.5-25.75C124.4 79.12 136.5 79.12 147.4 82.74l13.12 4.375c8.375 2.75 17.5-1.75 20.25-10.13l5-15.13C188.6 53.49 184.1 44.37 175.6 41.62l-15.25-5.125c-23.13-7.75-48.75-5.375-70.13 6.375c-21.37 11.75-37.12 32.13-43 55.75L1.875 280.4C.6251 285.4 .0001 290.6 .0001 295.9v70.25C.0001 428.1 51.63 480 115.3 480h37.13c60.25 0 110.4-46 114.9-105.4l2.875-38.63h35.75l2.875 38.63C313.3 433.1 363.4 480 423.6 480h37.13c63.62 0 115.2-51 115.2-113.9V295.9C576 290.6 575.4 285.5 574.1 280.4zM203.4 369.7c-2 26-24.38 46.25-51 46.25H115.2C87 415.1 64 393.6 64 366.1v-37.5c18.12-6.5 43.38-13 72.62-13c23.88 0 47.25 4.375 69.88 13L203.4 369.7zM512 366.1c0 27.5-23 49.88-51.25 49.88h-37.13c-26.62 0-49-20.25-51-46.25l-3.125-41.13c22.62-8.625 46.13-13 70-13c29 0 54.38 6.5 72.5 13V366.1z"})),convertFile:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",viewBox:"0 110 700 340",xmlns:"http://www.w3.org/2000/svg"},React__namespace.createElement("path",{d:"m593.95 239.4v-1.5742c-0.85547-1.8828-2.043-3.6016-3.5-5.0742l-52.5-52.5c-1.4688-1.457-3.1875-2.6445-5.0742-3.5h-1.5742c-1.4727-0.49219-3.0039-0.78516-4.5508-0.875h-124.25c-4.6406 0-9.0938 1.8438-12.375 5.125s-5.125 7.7344-5.125 12.375v87.5h-70v-105.88-1.0508c-0.089844-1.5469-0.38281-3.0781-0.875-4.5508v-1.5742c-0.85547-1.8828-2.043-3.6016-3.5-5.0742l-52.5-52.5c-1.4727-1.457-3.1914-2.6445-5.0742-3.5h-1.5742c-1.7031-0.875-3.5352-1.4688-5.4258-1.75h-123.55c-4.6406 0-9.0938 1.8438-12.375 5.125s-5.125 7.7344-5.125 12.375v245c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h175c4.6406 0 9.0938-1.8438 12.375-5.125s5.125-7.7344 5.125-12.375v-52.5h70v122.5c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h175c4.6406 0 9.0938-1.8438 12.375-5.125s5.125-7.7344 5.125-12.375v-192.5-1.0508c-0.14453-1.5547-0.5-3.0859-1.0508-4.5508zm-313.95 110.6h-140v-210h87.5v35c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h35v87.5h-52.5c-6.2539 0-12.031 3.3359-15.156 8.75s-3.125 12.086 0 17.5 8.9023 8.75 15.156 8.75h52.5zm140 70v-105h27.824l-5.0742 5.0742c-3.7031 3.1719-5.9141 7.7461-6.1055 12.617-0.1875 4.8711 1.668 9.6016 5.1133 13.051 3.4492 3.4453 8.1797 5.3008 13.051 5.1133 4.8711-0.19141 9.4453-2.4023 12.617-6.1055l35-35c3.2578-3.2773 5.0898-7.7148 5.0898-12.336 0-4.625-1.832-9.0586-5.0898-12.34l-35-35c-4.5078-3.8555-10.66-5.1719-16.348-3.4883-5.6875 1.6797-10.137 6.1289-11.816 11.816-1.6836 5.6914-0.37109 11.844 3.4883 16.348l5.0742 5.0742h-27.824v-69.824h87.5v35c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h35v157.5z"})),cog:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},React__namespace.createElement("path",{d:"M495.9 166.6C499.2 175.2 496.4 184.9 489.6 191.2L446.3 230.6C447.4 238.9 448 247.4 448 256C448 264.6 447.4 273.1 446.3 281.4L489.6 320.8C496.4 327.1 499.2 336.8 495.9 345.4C491.5 357.3 486.2 368.8 480.2 379.7L475.5 387.8C468.9 398.8 461.5 409.2 453.4 419.1C447.4 426.2 437.7 428.7 428.9 425.9L373.2 408.1C359.8 418.4 344.1 427 329.2 433.6L316.7 490.7C314.7 499.7 307.7 506.1 298.5 508.5C284.7 510.8 270.5 512 255.1 512C241.5 512 227.3 510.8 213.5 508.5C204.3 506.1 197.3 499.7 195.3 490.7L182.8 433.6C167 427 152.2 418.4 138.8 408.1L83.14 425.9C74.3 428.7 64.55 426.2 58.63 419.1C50.52 409.2 43.12 398.8 36.52 387.8L31.84 379.7C25.77 368.8 20.49 357.3 16.06 345.4C12.82 336.8 15.55 327.1 22.41 320.8L65.67 281.4C64.57 273.1 64 264.6 64 256C64 247.4 64.57 238.9 65.67 230.6L22.41 191.2C15.55 184.9 12.82 175.3 16.06 166.6C20.49 154.7 25.78 143.2 31.84 132.3L36.51 124.2C43.12 113.2 50.52 102.8 58.63 92.95C64.55 85.8 74.3 83.32 83.14 86.14L138.8 103.9C152.2 93.56 167 84.96 182.8 78.43L195.3 21.33C197.3 12.25 204.3 5.04 213.5 3.51C227.3 1.201 241.5 0 256 0C270.5 0 284.7 1.201 298.5 3.51C307.7 5.04 314.7 12.25 316.7 21.33L329.2 78.43C344.1 84.96 359.8 93.56 373.2 103.9L428.9 86.14C437.7 83.32 447.4 85.8 453.4 92.95C461.5 102.8 468.9 113.2 475.5 124.2L480.2 132.3C486.2 143.2 491.5 154.7 495.9 166.6V166.6zM256 336C300.2 336 336 300.2 336 255.1C336 211.8 300.2 175.1 256 175.1C211.8 175.1 176 211.8 176 255.1C176 300.2 211.8 336 256 336z"})),trayMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512"},React__namespace.createElement("path",{d:"M618.1 97.67c-13.02-4.375-27.45 .1562-35.72 11.16L464 266.7l-118.4-157.8c-8.266-11.03-22.64-15.56-35.72-11.16C296.8 102 288 114.2 288 128v256c0 17.69 14.33 32 32 32s32-14.31 32-32v-160l86.41 115.2c12.06 16.12 39.13 16.12 51.19 0L576 224v160c0 17.69 14.33 32 32 32s32-14.31 32-32v-256C640 114.2 631.2 102 618.1 97.67zM224 96.01H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h64v223.1c0 17.69 14.33 31.99 32 31.99s32-14.3 32-31.99V160h64c17.67 0 32-14.31 32-32S241.7 96.01 224 96.01z"})),copyElementLink:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 260 260","aria-hidden":"true",focusable:"false",role:"img"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"8",d:"M10 10h40m-40 0h40m0 0v40m0-40v40m0 0H10m40 0H10m0 0V10m0 40V10M210 10h40m-40 0h40m0 0v40m0-40v40m0 0h-40m40 0h-40m0 0V10m0 40V10M210 210h40m-40 0h40m0 0v40m0-40v40m0 0h-40m40 0h-40m0 0v-40m0 40v-40M10 210h40m-40 0h40m0 0v40m0-40v40m0 0H10m40 0H10m0 0v-40m0 40v-40M30 210V50m0 160V50M50 30h160M50 30h160M230 50v160m0-160v160M50 230h160m-160 0h160"}),React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"16",d:"M110 90c-6.67 1.67-30 3.11-40 10-10 6.89-20 21.37-20 31.37S60 153.56 70 160c10 6.44 33.33 8.33 40 10m0-80c-6.67 1.67-30 3.11-40 10-10 6.89-20 21.37-20 31.37S60 153.56 70 160c10 6.44 33.33 8.33 40 10M150 90c6.67 1.67 30 3.11 40 10 10 6.89 20 21.37 20 31.37s-10 22.19-20 28.63c-10 6.44-33.33 8.33-40 10m0-80c6.67 1.67 30 3.11 40 10 10 6.89 20 21.37 20 31.37s-10 22.19-20 28.63c-10 6.44-33.33 8.33-40 10"}),React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"16",d:"M89.868 130.198c13.36-.03 66.78-.17 80.13-.2m-80.13.2c13.36-.03 66.78-.17 80.13-.2"}))},FIRST_RUN='\nThe Excalidraw Obsidian plugin is much more than "just" a drawing tool. To help you get started here\'s a showcase of the key Excalidraw plugin features.\n\nIf you\'d like to learn more, please subscribe to my YouTube channel: [Visual PKM](https://www.youtube.com/channel/UCC0gns4a9fhVkGkngvSumAQ) where I regularly share videos about Obsidian-Excalidraw and about tools and techniques for Visual Personal Knowledge Management.\n\nThank you & Enjoy!\n\n
\n\n
\n',RELEASE_NOTES={Intro:'I want to help you keep up with all the updates. After installing each release, you\'ll be prompted with a summary of new features and fixes. You can disable these popup messages in plugin settings.\n\nI develop this plugin as a hobby, spending most of my free time doing this. If you\'d like to contribute to the on-going work, I have a simple membership scheme with Bronze, Silver and Gold tiers. Many of you have already bought me a coffee. THANK YOU! It really means a lot to me! If you find this plugin valuable, please consider supporting me.\n\n
\n',"1.7.20":'\n# New from Excalidraw.com\n- support segment midpoints in line editor [#5641](https://github.com/excalidraw/excalidraw/pull/5641)\n
\n\n
\n\n# Fixed\n- When editing a line or arrow and selecting a tool on the toolbar, the tool jumps back to the selection tool and you need to click again to select the tool [#5703](https://github.com/excalidraw/excalidraw/issues/5703)\n- Minor improvement of autosave, hopefully decreasing occasional lagging\n',"1.7.19":`\n# QoL improvements\n- Reintroduced the help button. I also added the help button to the Tray (in Tray Mode) and moved help to the canvas action panel (in non-TrayMode) because in Obsidian 0.16.0 the status bar hides the help icon.\n- Resetting the canvas with the "Reset Canvas" button will now preserve your custom color palette.\n- I updated the [Set background color of unlclosed line object](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Set%20background%20color%20of%20unclosed%20line%20object%20by%20adding%20a%20shadow%20clone.md) script. The script will now add background color to open freedraw objects as well. You no longer need to convert freedraw objects to lines before setting the background color. Check the Script Engine library to download the update.\n\n# New in Excalidraw Automate\n- I added the [ColorMaster](https://github.com/lbragile/ColorMaster#readme) library to ExcalidrawAutomate. You can get a CM object by calling ${String.fromCharCode(96)}ExcalidrawAutomate.getCM()${String.fromCharCode(96)}. Color master introduces many new ways to manipulate colors from script. I will publish scripts that make use of this new functionality including supporting videos on my YouTube channel in the coming days.\n`,"1.7.18":"\n## Critical fix\n- duplicating text elements, adding text elements from the library, and pasting excalidraw text elements results in a corrupted file!!","1.7.17":`\n## Fixed\n- Block transclusions sometimes got lost when switching between RAW mode and PREVIEW mode. [#769](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/769)\n\n## New\n- Added feature to disable "new Excalidraw version" notification [#770](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/770)\n- Added option to export both light- and dark-themed images at the same time. If this is enabled Excalidraw will create two files "filename.dark.png" and "filename.light.png" (or .svg depending on your other settings). See practical use case here: [Aadam's Notes](https://notes.aadam.dev/SBYNtPHqsTW9Ck1Kuoxsu/)\n- Added custom export padding for PNG images. Use the frontmatter key ${String.fromCharCode(96)}excalidraw-export-padding${String.fromCharCode(96)} to set the padding at a file level, or set padding for all your files in plugin settings. The new feature replaces the old "SVG Padding" option and applies to both SVG and PNG exports.\n\n## ExcalidrawAutomate\n- Added ${String.fromCharCode(96)}padding${String.fromCharCode(96)} to the createPNG function call.\n${String.fromCharCode(96,96,96)}typescript\nasync createPNG(\n templatePath?: string,\n scale: number = 1,\n exportSettings?: ExportSettings,\n loader?: EmbeddedFilesLoader,\n theme?: string,\n padding?: number,\n)\n${String.fromCharCode(96,96,96)}\n`,"1.7.16":"\n## Fixed\n- Excalidraw canvas is empty after saving the drawing and re-opening it at a later time. If you accidentally paste Excalidraw elements from the clipboard as the contents of a text element, in certain situations this can corrupt the Excalidraw file and as a result, Excalidraw will load an empty-looking drawing the next time. Changing to markdown view, these files can be repaired, however, to avoid accidental data loss, I have prevented pasting of excalidraw clipboard contents as text elements. [#768](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/768)\n\n## New\n- Add zoom % display in tray-mode [737](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/737)\n","1.7.15":"\n## Fixed\n- Canvas turns white when adding point for curved line [#760](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/760), [#738](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/738), [#5602](https://github.com/excalidraw/excalidraw/issues/5602)\n","1.7.14":`\n
\n\n
\n\n## New\n- The ${String.fromCharCode(96)}Copy markdown link for selected element to clipboard${String.fromCharCode(96)} action in the Obsidian menu is now more intelligent. If multiple elements are selected it will copy the Element Reference for the largest element. \n- When referencing an element in a link pointing to an Excalidraw file using the elementId or the section header as the block reference e.g. ${String.fromCharCode(96)}[[file#^elementID]]${String.fromCharCode(96)}, you can now add the ${String.fromCharCode(96)}group=${String.fromCharCode(96)} prefix, e.g. ${String.fromCharCode(96)}[[file#^group=elementID]]${String.fromCharCode(96)} and the ${String.fromCharCode(96)}area=${String.fromCharCode(96)} prefix, e.g. ${String.fromCharCode(96)}[[file#area=Section heading]]${String.fromCharCode(96)}.\n - If the ${String.fromCharCode(96)}group=${String.fromCharCode(96)} prefix is found, Excalidraw will select the group of elements in the same group as the element referenced by the elementID or heading section.\n - If the ${String.fromCharCode(96)}area=${String.fromCharCode(96)} prefix is found, excalidraw will insert a cutout of the image around the referenced element.\n - The ${String.fromCharCode(96)}area=${String.fromCharCode(96)} selector is not supported when embedding Excalidraw as PNG into your markdown documents.\n- I added "Toggle left-handed mode" to the Command Palette. The action is only visible if tray-mode is enabled. It will move the tray from left to right and back. [749](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/749)\n\n## Fixed\n- Zooming with CTRL+Wheel will no longer trigger hover preview.\n- When editing text in a text element CTRL+C will not launch the hover preview in case the mouse pointer is over the text element being edited. Hover preview will only show if the element is not in editing mode.\n- ExcalidrawAutomate did not reliably save changes. This caused issues for example in the "Add link to an existing file and open" script. [#747](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/747)\n- Create a new folder not working when clicking on a link in Erxcalidraw that points to a file that is in a folder that does not yet exist. [741](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/741)\n- Downgraded to React 17 due to various stability issues, including [#738](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/738) and [#747](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/747)\n\n## New in Excalidraw Automate\n- I added two new Excalidraw Automate functions\n${String.fromCharCode(96,96,96)}typescript\n/**\n * Gets the groupId for the group that contains all the elements, or null if such a group does not exist\n * @param elements \n * @returns null or the groupId\n*/\ngetCommonGroupForElements(elements: ExcalidrawElement[]): string;\n\n/**\n * Gets all the elements from elements[] that share one or more groupIds with element.\n * @param element \n * @param elements - typically all the non-deleted elements in the scene \n * @returns \n*/\ngetElementsInTheSameGroupWithElement(element: ExcalidrawElement, elements: ExcalidrawElement[]): ExcalidrawElement[];\n${String.fromCharCode(96,96,96)}`,"1.7.13":`\n## Fix from Excalidraw.com\n- Resize multiple elements from center ([#5560](https://github.com/excalidraw/excalidraw/pull/5560))\n\n## Obsidian 0.16.0 compatibility (getting ready, because 0.16.0 will be available to insiders soon)\n- ${String.fromCharCode(96)}Install or update Excalidraw Scripts${String.fromCharCode(96)} was only available via the page header button. Because the page header is hidden by default, the install script action is now available through the pane menu and through the command palette as well.\n- ${String.fromCharCode(96)}Open selected text as link${String.fromCharCode(96)} page header button is now also available via the pane menu\n- ${String.fromCharCode(96)}Open in Adjacent Pane${String.fromCharCode(96)} and ${String.fromCharCode(96)}Open in Main Workspace${String.fromCharCode(96)} Excalidraw plugin settings is fixed\n`,"1.7.12":`\n## New from Excalidraw.com:\n- Showing a mid-point for lines and arrows. By touching the mid-point you can easily add an additional point to a two-point line. This is especially helpful when working on a tablet with touch input. ([#5534](https://github.com/excalidraw/excalidraw/pull/5534))\n- Lock angle when editing a line or an arrow with SHIFT pressed. Pressing SHIFT will restrict the edited point to snap to certain discrete angles. ([#5527](https://github.com/excalidraw/excalidraw/pull/5527))\n\n## Fixed:\n- Clicking Obsidian search-results pointing to an element on the canvas works again ([#734](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/734))\n- The feature to allow resizing and rotation of lines and arrows consisting of 3 or more points by showing the bounding box when selected is back ([#5554](https://github.com/excalidraw/excalidraw/pull/5554))\n\n## New\n- You can now use the following frontmatter key to allow/prevent automatic export of PNG/SVG images at a file level. This frontmatter will override export settings for the given file. ([#732](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/732)\n${String.fromCharCode(96)}excalidraw-autoexport: none|both|svg|png${String.fromCharCode(96)}\n`,"1.7.11":`\n## Fixed\n- Markdown files embed into the Excalidraw canvas crashed when the embedded markdown file included a nested Markdown embed with a block reference (i.e. the markdown document you are dropping into Excalidraw included a quote you referenced from another file using a ${String.fromCharCode(96)}[[other-file#^blockref]]${String.fromCharCode(96)} block or section reference. \n- Horizontal flipping of arrows and lines broke in 1.7.10. ([#726](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/726))\n`,"1.7.10":'\n## New from Excalidraw.com\n- Improved handling of arrows and lines. ([#5501](https://github.com/excalidraw/excalidraw/pull/5501))\n\n## Fixed\n- When opening a document in view-mode or zen-mode the panel buttons no longer flash up for a moment before switching to the desired mode. ([#479](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/479))\n- The "blinding white screen" no longer flashes up while loading the scene if the scene is dark ([#241](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/241))\n\n## Under the hood\n- Finalized migration to React 18 (no longer showing an error about React 17 compatibility mode in console log)\n',"1.7.9":'\n## New features and fixes from Excalidraw.com:\n- The right-click context menu is now scrollable on smaller screens ([#4030](https://github.com/excalidraw/excalidraw/pull/4030), [#5520](https://github.com/excalidraw/excalidraw/pull/5520))\n- Holding down the shift key while rotating an object will rotate it at discrete angles. Rotation is continuous without the SHIFT key. ([#5500](https://github.com/excalidraw/excalidraw/pull/5500))\n- Improved cursor alignment when resizing an element proportionally (maintain aspect ratio) by holding SHIFT during resizing. ([#5513](https://github.com/excalidraw/excalidraw/pull/5515))\n- Improved freedraw performance during editing (now has proper canvas caching), and no more blurry freedraw shapes when exporting on a higher scale. ([#5481](https://github.com/excalidraw/excalidraw/pull/5481))\n- Sidebar stencil library now correctly scrolls vertically ([#5459](https://github.com/excalidraw/excalidraw/pull/5459))\n\n## New in Obsidian:\n- Fullscreen mode on iPad. When there are multiple work panes open, clicking the fullscreen action in the Excalidraw Obsidian menu will hide the other work panes and make Excalidraw fullscreen.\n\n## Fixes in Obsidian:\n- Drag&Drop an image from a web browser into Excalidraw ([#697](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/697))\n- On Obsidian Mobile 1.3.0, when the drawing included an embedded image, switching from markdown-view to Excalidraw-view caused the drawing to disappear (it had to be recovered from backup or synchronization history). ([#715](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/715))\n- When working on a mobile device (tablet and phone) and using two work panes (one for drawing and the other for editing a markdown document) if you switched focus from the drawing to the markdown document auto-zoom changed the zoom level of the drawing. ([#723](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/723)), ([#705](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/705))\n- Actions on the Command Palette to create a new drawing in a new pane or reusing an existing adjacent pane; on the main workspace or in the Hover Editor or Popout window, were not working well. See related settings in plugin settings under "Links and transclusions" ([#718](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/718))\n- There was a problem with links with section references when the header contained space characters ([#704](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/704))\n- I added additional controls to avoid the fantom warnings about a problem with saving the Excalidraw file. Hopefully, from now on, you\'ll see this error less frequently ([#701](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/701))\n',"1.7.8":'\n# Optimized for Obsidian 0.15.5\n- I reworked how the plugin treats the "More options" menu because the old approach was interfering with Obsidian\n- Did thorough testing of handling of work panes on link click. There are two settings (open in the adjacent pane, and open in the main workspace), and three broad scenarios (Excalidraw in a work pane in the main Obsidian window, Excalidraw in a hover editor, and Excalidraw in an Obsidian popout window). All should work correctly now.\n',"1.7.7":`\n# New\n- Optimized for Obsidian 0.15.4\n- On a desktop, you can now use the META key when clicking on a link and it will open the link in a new popout Window.\n- ([#685](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/685)) Markdown embeds will now display correctly in Excalidraw even if they include photos and recursive markdown embeds. Unfortunately due to the limitations of Safari the inversion of colors on iPads in dark mode will not work well.\nSee an 18 second long demo video [here](https://user-images.githubusercontent.com/14358394/177213263-2a7ef1ca-0614-4190-8955-e830ca6b424b.mp4).\n\n\n# Fixed\n- ([#683](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/683)) Copy/Paste Markdown embeds to create another instance of the embed, thus you can reference different sections of the document in your drawing (something I broke in 1.7.6)\n- ([#684](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/684)) Transclusions incorrectly did not pick up subsections of a section. To understand this change, imagine for example the following document:\n${String.fromCharCode(96,96,96)}markdown\n# A\nabc\n# B\nxyz\n## b1\n123\n## b2\n456\n# C\n${String.fromCharCode(96,96,96)}\nWhen you transclude ${String.fromCharCode(96)}![[document#B]]${String.fromCharCode(96)} you expect the following result\n${String.fromCharCode(96,96,96)}markdown\nB\nxyz\n\nb1\n123\n\nb2\n456\n${String.fromCharCode(96,96,96)}\nUntil this fix you only got\n${String.fromCharCode(96,96,96)}markdown\nB\nxyz\n${String.fromCharCode(96,96,96)}`,"1.7.6":`\nThis release is the same as 1.7.5 except for two minor fixes\n- a fix for ExcaliBrain, becuase 1.7.5 broke ExcaliBrain.\n- I left out the release note from 1.7.5.\n\n# New\n- Deployed sidebar for libraries panel from excalidraw.com ([#5274](https://github.com/excalidraw/excalidraw/pull/5274)). You can dock the library to the right side depending on the screen real estate available (i.e. does not work on mobiles).\n\n# Fixed\n- When copying 2 identical images from one drawing to another, the second image got corrupted in the process ([#672]https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/672)).\n- When making a copy of an equation in a drawing and then without first closing/opening the file, immediately copying the new equation to another drawing, the equation did not get displayed until the file was closed and reopened.\n- Copying a markdown embed from one drawing to another, in the destination the markdown embed appeared without the section/block reference and without the width & height (i.e. these settings had to be done again)\n- Improved the parsing of section references in embeds. When you had ${String.fromCharCode(96)}&${String.fromCharCode(96)} in the section name in a markdown file, when embedding that markdown document into Excalidraw, the section reference did not work as expected ([#681 ](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/681)).\n- Improved the logic for autosave to better detect changes to the document, and to reduce too frequent export of ${String.fromCharCode(96)}.png${String.fromCharCode(96)} and/or ${String.fromCharCode(96)}.svg${String.fromCharCode(96)} files, when auto export is enabled in plugin settings.\n`,"1.7.5":`\n# New\n- Deployed sidebar for libraries panel from excalidraw.com ([#5274](https://github.com/excalidraw/excalidraw/pull/5274)). You can dock the library to the right side depending on the screen real estate available (i.e. does not work on mobiles).\n\n# Fixed\n- When copying 2 identical images from one drawing to another, the second image got corrupted in the process ([#672]https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/672)).\n- When making a copy of an equation in a drawing and then without first closing/opening the file, immediately copying the new equation to another drawing, the equation did not get displayed until the file was closed and reopened.\n- Copying a markdown embed from one drawing to another, in the destination the markdown embed appeared without the section/block reference and without the width & height (i.e. these settings had to be done again)\n- Improved the parsing of section references in embeds. When you had ${String.fromCharCode(96)}&${String.fromCharCode(96)} in the section name in a markdown file, when embedding that markdown document into Excalidraw, the section reference did not work as expected ([#681 ](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/681)).\n- Improved the logic for autosave to better detect changes to the document, and to reduce too frequent export of ${String.fromCharCode(96)}.png${String.fromCharCode(96)} and/or ${String.fromCharCode(96)}.svg${String.fromCharCode(96)} files, when auto export is enabled in plugin settings.\n`,"1.7.4":"\n- Obsidian 0.15.3 support dragging and dropping work panes between Obsidian windows.\n- Addressed Obsidian changes affecting the more-options menu.\n- Addressed incompatibility with Obsidian Mobile 1.2.2.\n","1.7.3":"\nObsidian 0.15.3 support for dragging and dropping work panes between Obsidian windows.\n","1.7.2":"\nDue to some of the changes to the code, I highly recommend restarting Obsidian after installing this update to Excalidraw.\n\n# Fixed\n- Stability improvements\n- Opening links in new panes and creating new drawings from the file explorer works properly again\n\n# New feature\n- Two new command palette actions:\n - Create a new drawing - IN A POPOUT WINDOW\n - Create a new drawing - IN A POPOUT WINDOW - and embed into active document\n![image|600](https://user-images.githubusercontent.com/14358394/175137800-88789f5d-f8e8-4371-a356-84f443aa6a50.png)\n- Added setting to prefer opening the link in the popout window or in the main workspace.\n![image|800](https://user-images.githubusercontent.com/14358394/175076326-1c8eee53-e512-4025-aedb-07881a732c69.png)\n","1.7.1":"\nSupport for Obsidian 0.15.0 popout windows. While there are no new features (apart from the popout window support) under the hood there were some major changes required to make this happen.\n","1.7.0":"\nThis is the first test version of Excalidraw Obsidian supporting Obsidian 0.15.0 popout windows. The current technical solution is not really sustainable, it's more of a working concept. I don't expect any real big issues with this version - on the contrary, this works much better with Obsidian 0.15.0 popout windows, but some of the features aren't working as expected in the Obsidian popouts yet. Also as a consequence of Obsidian 0.15.0 compatibility, multiple hover previews are no longer supported.\n","1.6.34":"\nWith 0.15.1 Obsidian is implementing some exciting, but significant changes to how windows are managed. I need to make some heavy/invasive changes to Excalidraw to adapt. The next version of the Excalidraw Plugin will require Obsidian 0.15.1 or newer. If you are not signed up for Obsidian Insider Builds, you will need to wait few weeks until the new Obsidian version will be made public.\n\n# Fixed\n- Error saving when the attachments folder exists but with a different letter case (i.e. ATTACHMENTS instead of attachments) [658](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/658). I added more error tolerance. As a general rule, however, I recommend treating file paths as case-sensitive as some platforms like iOS or LINUX have case-sensitive filenames, and synchronizing your Vault to these platforms will cause you headaches in the future.\n- Text detached from the container if you immediately clicked the text-align buttons on the properties pane while still editing the text in the container for the very first time. [#657](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/657).\n- Can't add text to the second container if the first container has text and the second container is centered around the first one. [#5300](https://github.com/excalidraw/excalidraw/issues/5300)\n","1.6.33":`\n# Fixed\n- Under some special circumstances when you embedded a drawing (guest) into another drawing (host), the host did not update when you modified the guest, until you closed Excalidraw completely and reopened the host. [#637](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/637)\n\n# New\n- ExcalidrawAutomate ${String.fromCharCode(96)}addLabelToLine${String.fromCharCode(96)} adds a text label to a line or arrow. Currently this function only works with simple straight 2-point (start & end) lines.\n${String.fromCharCode(96,96,96)}typescript\naddLabelToLine(lineId: string, label: string): string\n${String.fromCharCode(96,96,96)}\n- ExcalidrawAutomate ${String.fromCharCode(96)}ConnectObjects${String.fromCharCode(96)} now returns the ID of the arrow that was created.`,"1.6.32":"\n## Fixed\n- Filenames of embedded images and markdown documents did not get updated if the drawing was open in a work-pane while you changed the filename of the embedded file (image or markdown document) [632](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/632).\n- When you created a new text element and immediately dragged it, sometimes autosave interrupted the drag action and Excalidraw dropped the element you were dragging [630](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/630)\n- In some edge cases when you had the drawing open on your desktop and you also opened the same image on your tablet, Sync seemed to work in the background but the changes did not appear on the desktop until you closed and opened the drawing again. [629](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/629)\n- LaTeX support: Excalidraw must download a javascript library from one of the hosting sites for MathJax tex2svg. It seems that some people do not have access to the URL recommended in the first place by [MathJax](https://docs.mathjax.org/en/latest/web/start.html). If LaTeX formulas do not render correctly in Excalidraw, try changing the source server under Compatibility Settings in Excalidraw Plugin Settings. [628](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/628)","1.6.31":"\nMinor update:\n\n## Fixes\n- Color picker hotkeys were not working. They are working again [627](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/627)\n- I updated MathJax (LaTeX) to the newest (3.2.1) release.","1.6.30":"\n## Fixed\n- The load stencil library button stopped working after 1.6.29 due to an error in the core Excalidraw package. It is now fixed. [#625](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/625).\n- On iPad (probably other Obsidian mobile devices as well) after opening the command palette the positioning of the pointer was off. From now on, the pointer is automatically re-calibrated every 5 seconds.\n- I improved shared-vault collaboration sync. If the open file has not been saved for the last 5 minutes (i.e. you are not working on the drawing actively), and a newer remote version of the file is received via sync, then the remote file will simply overwrite the local file (i.e. the behavior of Excalidraw Obsidian prior to implementing Shared (Multiplayer) Vault Synchronization support in 1.6.29). This solution will support active collaboration when parties participating are actively editing the drawing, but also caters to the scenario when you open a drawing on one device (e.g. your desktop) and once you are finished editing you do not close the drawing, but simply put your PC to sleep... then later you edit the same drawing on your tablet. When you turn your desktop PC on the next time, the changes you've made on your tablet will be synchronized by Obsidian sync. In this case the changes from your tablet should be honored. If you have not edited the open drawing for more then 5 minutes (like in this scenario) there is no value in running the file comparison between the local version and the received one. This approach reduces the probability of running into sync conflicts.","1.6.29":"\n## New\n- I implemented sync support inspired by the new [Obsidian Multiplayer Sync](https://youtu.be/ZyCPhbd51eo) feature (available in insider build v0.14.10). \n - To manage expectations, this is not real-time collaboration like on Excalidraw.com. Synchronization is delayed by the frequency of the autosave timer (every 10 secs) and the speed of Obsidian sync. Also if a file has conflicting versions, Obsidian sync may delay the delivery of the changed file.\n - Even if you are not using multiplayer Obsidian Vaults, you may benefit from the improved synchronization, for example when using the freedraw tool on your tablet or phone, and in parallel editing the same drawing (e.g. typing text) on your desktop. I frequently do this in a mind-mapping scenario.\n - If the same Excalidraw sketch is open on multiple devices then Excalidraw will try to merge changes into the open drawing, thus parallel modifications on different devices are possible. If the same element is edited by multiple parties at the same time, then the foreign (received) version will be honored and the local changes lost. \n\n## Fixed:\n- Default embed width setting stopped working. [#622](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/622)\n- The link tooltip gets stuck on screen after Excalidraw closes [#621](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/621)\n- Layout error when using the Workspaces core plugin. [#28](https://github.com/zsviczian/excalibrain/issues/28)","1.6.28":'\n## New\n- When dropping a link from a DataView query into Excalidraw the link will honor your "New link format" preferences in Obsidian. It will add the "shortest path when possible", if that is your setting. If the link includes a block or section reference, then the link will automatically include an alias, such that only the filename is displayed (shortest path possible allowing) [#610](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/610)\n- If Excalidraw is in a Hover Editor and you open a link in another pane by CTRL+SHIFT+Click then the new page will open in the main workspace, and not in a split pane in the hover editor.\n\n## Fixed\n- New text elements get de-selected after auto-save [#609](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/609)\n- Update opacity of bound text when the opacity of the container is updated [#5142](https://github.com/excalidraw/excalidraw/pull/5142)\n- ExcalidrawAutomate: openFileInNewOrAdjacentLeaf() function. This also caused an error when clicking a link in Excalidraw in a hover window, when there were no leaves in the main workspace view.',"1.6.27":"\n## New Features\n- While these new features are benefitial for all Excalidraw Automation projects, the current changes are mainly in support of the [ExcaliBrain](https://youtu.be/O2s-h5VKCas) integration. See detailed [Release Notes](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.6.27) on GitHub.\n","1.6.26":`\n## Fixed\n- Dragging multiple files onto the canvas will now correctly [#589](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/589)\n - add multiple links\n - or if you hold the CTRL/(SHIFT on Mac) while dropping the files, then adding multiple images\n- Dropped images and links were not selectable with the selection tool until the file was saved. This is now fixed.\n- Display the linked block/section on link-hover instead of the full page. [#597](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/597)\n- Hover preview without CTRL/CMD works again. Requires configuration in plugin settings. [#595](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/595)\n- If you embed the same markdown document into a drawing multiple times, you can now display different sections of the document in each embedded object. [#601](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/601).\n- If you make a copy of an equation and edit this copy, the original equation will remain unchanged [#593](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/593)\n\n## New Features\n- When you drag files from Dataview-results onto the canvas the obsidian:// urls will be converted into wiki links.[#599](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/599)\n- I added one more frontmatter key: ${String.fromCharCode(96)}excalidraw-linkbutton-opacity: ${String.fromCharCode(96)} This sets the opacity of the blue link-button in the top right corner of the element, overriding the respective setting in plugin settings. Valid values are numbers between 0 and 1, where 0 means the button is fully transparent.\n\n## New Excalidraw Automate Features\n- As part of building the new [ExcaliBrain](https://youtu.be/O2s-h5VKCas) plugin, I've added a number of integration features. See the GitHub [Release Notes](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.6.26) for details.\n`,"1.6.25":`\n## Fixed\n- Pinch-zoom in view mode was broken ([#5001](https://github.com/excalidraw/excalidraw/pull/5001))\n- The add image button on iPad was not working ([#5038](https://github.com/excalidraw/excalidraw/pull/5038) & [#584](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/584))\n\n## New Features\n- If Excalidraw is open in a [hover-editor](https://github.com/nothingislost/obsidian-hover-editor) when opening a link in a new pane Excalidraw will now open the link in the main workspace and not by splitting the view inside the hover-editor. \n- Excalidraw ScriptEngine settings\n - Script Engine settings now render HTML descriptions\n - If the ${String.fromCharCode(96)}height${String.fromCharCode(96)} property of a text setting is set, the corresponding text input field will be rendered as a textArea with the specified height.\n`,"1.6.24":"\n## Fixed\n- Link fixes:\n - Shift+Click on an element link (i.e. a link attached to a rectangle, ellipse, etc) did not open the link in a new leaf.\n - Clicking a link and opening it in a new leaf will now make the new leaf active and focused after the click.\n- Pointer calibration:\n - Opening an Excalidraw drawing with the [hover-editor](https://github.com/nothingislost/obsidian-hover-editor) and dragging the editor to another location corrupted the calibration of the pointer in Excalidraw. Similarly, when rearranging workspace panes by dragging, Excalidraw lost pointer calibration.\n\n## New Features\n### From Excalidraw.com\n- Element locking: The lock and unlock action is in the context menu.\n\n### Plugin\n- Any element that has a link, ctrl/cmd+clicking anywhere on the object will trigger the link action. You no longer have to go to the link icon. ([#541](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/541#issuecomment-1075578365))\n","1.6.23":`\n## Fixed:\n- I have received some user feedback about cases where the text separated from the sticky note. This version comes with a cleanup algorithm that will try to automatically resolve these issues.\n- Autosave did not notice changes in a very obscure case, when you opened a drawing, resized an element, and without deselecting the element you immediately closed the drawing. ([565](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/565))\n- CTRL+Enter to create a task did not work in hover-editor when opened from Excalidraw. Now it does! Thanks @pjeby! ([567](https://github.com/zsviczian/obsidian-excalidraw-plugin/pull/567))\n\n## New Features\n- If you have the [Obsidian-Latex](https://github.com/xldenis/obsidian-latex) plugin installed, from now Excalidraw will also process the ${String.fromCharCode(96)}preambles.sty${String.fromCharCode(96)} file. ( [563](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/563))\n- I added a new setting ${String.fromCharCode(96)}Embed & Export >> If found, use the already exported image for preview${String.fromCharCode(96)}. This setting works in conjunction with the ${String.fromCharCode(96)}Auto-export SVG/PNG${String.fromCharCode(96)} settings. If an exported image that matches the file name of the drawing is available, use that image instead of generating a preview image on the fly. This will result in faster previews especially when you have many embedded objects in the drawing, however, it may happen that your latest changes are not displayed and that the image will not automatically match your Obsidian theme in case you have changed the Obsidian theme since the export was created. This setting only applies to embedding images into markdown documents. For a number of reasons, the same approach cannot be used to expedite the loading of drawings with many embedded objects. See release notes for a [demo video](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.6.22).\n`,"1.6.22":'\n## Fixed:\n- "Create a new drawing - IN THE CURRENT ACTIVE PANE - and embed into active document" did not work as intended when an Excalidraw pane was already open. [#559](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/559)\n- [Obsidian-hover-editor](https://github.com/nothingislost/obsidian-hover-editor) related improvements [#555](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/555):\n - hovering triggered many hover preview windows in quick succession, and in some cases raised dozens of errors in the Developer Console\n - hover-editors were not visible in Excalidraw fullscreen mode\n\n## Minor new features:\n- Activating the eraser with key "e" will toggle the active tool and back. So for example if you are drawing a freedraw shape, you can press "e" to delete a few strokes, then press "e" again to continue drawing. On desktop PCs many styluses allow you to configure the pen button to trigger keypress "e". \n- New setting to enable penMode by default.\n- I increased the file size limit for images you paste into Excalidraw from 2MB to 20MB. You should however avoid very large images as they will impact the overall performance of the canvas. ([#557](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/557))\n',"1.6.21":`\nBefore I move on to implementing further features, I spent this week with further stabilizing and debugging the plugin. Hopefully this will result in a smoother, better experince for you all.\n\n## Fixed\n- Links in drawings (e.g. text elements or embedded images) were sometimes not updating when the source file was moved or renamed in your Vault. The issue happend when you had the drawing and the linked file open in panes next to each other. This has led to broken links. ([#546](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/546))\n- To remove complexity and potential error, I have hidden the autosave settings. From now, autosave is now always enabled. Excalidraw will attempt to save your drawing every 10 seconds, or if you are actively engaged in drawing a shape at that very moment (e.g. you are busy with a freedraw line), then autosave will save the drawing at the earliest next opportunity. I imlemented further triggers to save the drawing when there are changes in the drawing and you click outside the drawing canvas. There was a rare error involving text elements, that when happened blocked saving of the file. This error is now properly handeled. Also from now, you will receive a warning message if for any reason save encountered problems. \n- If you have two heading sections in your drawing, e.g. ${String.fromCharCode(96)}# Section abc${String.fromCharCode(96)} and ${String.fromCharCode(96)}# Section abc def${String.fromCharCode(96)}, then referencing ${String.fromCharCode(96)}[[#Section abc]]${String.fromCharCode(96)} in a link will highlight both text elements when clicking the link. These section references now work as expected. ([#530](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/530))`,"1.6.20":`\n
\n\n
\n\n## Fixed\n- ${String.fromCharCode(96)}ExcalidrawAutomate.create()${String.fromCharCode(96)} threw an error [539](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/539)\n\n## New Features\n### From excalidraw.com\n- Bind/unbind text to/from container [4935](https://github.com/excalidraw/excalidraw/pull/4935)\n\n### Plugin\nFrontmatter tags to customize image export at a file level [519](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/519). If these keys are present they will override the default excalidraw embed and export settings.\n- ${String.fromCharCode(96)}excalidraw-export-transparent: true${String.fromCharCode(96)}\n - true == Transparent / false == with background. \n- ${String.fromCharCode(96)}excalidraw-export-dark${String.fromCharCode(96)}\n - true == Dark mode / false == light mode.\n- ${String.fromCharCode(96)}excalidraw-export-svgpadding${String.fromCharCode(96)}\n - This only affects export to SVG. Specify the export padding for the image\n- ${String.fromCharCode(96)}excalidraw-export-pngscale${String.fromCharCode(96)}\n - This only affects export to PNG. Specify the export scale for the image. The typical range is between 0.5 and 5, but you can experiment with other values as well.\n`,"1.6.19":"\nThis is a minor update fixing left-handed mode on iOS, and deploying improvements to the new Excalidraw Eraser.\n","1.6.18":`\n
\n\n
\n\n## Fixed\n- Modifying properties of a text element in tray mode. [496](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/496)\n- Friendly page aliases with iframely should work more reliably now.\n- I further improved resilience of loading from a damaged Excalidraw.md file.\n\n## New Features\n### From excalidraw.com\n- Added Eraser [4887](https://github.com/excalidraw/excalidraw/pull/4887)\n\n### Plugin\n- New setting for default transcluded-text line-wrap length. This is the default value for "wrapAt" in ${String.fromCharCode(96)}![[file#^block]]{wrapAt}${String.fromCharCode(96)}. Wrapping text using this feature will insert linebreaks in the transcluded text. An alternative approach is to transclude text inside sticky notes, in which case Excalidraw will automatically take care of text wrapping depending on the sticky note's width. [228](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/228)\n- New command palette action to toggle fullscreen mode, so you can assign a hotkey.\n- I added basic support for left-handed users. Enable it in plugin settings under the "Display" section. Currently, only affects the position of the tray in tray-mode. [510](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/510)\n- More flexible filename settings. ⚠ Due to the change, current settings may behave slightly differently compared to before. ⚠ [470](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/470)\n`,"1.6.17":`\n
\n\n
\n\n## Fixed\n- Freedraw shape's background color was missing in the SVG export. [#443](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/443)\n- In rare cases, when you only changed the background color of the drawing or edited the dimensions of an embedded markdown document, or changed an existing LaTeX formula, and then moved to another document in the vault, these changes did not get saved. [#503](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/503)\n- I resolved an Excalidraw Automate glitch with word wrapping in containers. EA generated containers with fixed line breaks. The same error also affected the conversion of drawings from the "legacy" Excalidraw.com file format.\n- When you allow/disable autosave in settings, this change will immediately take effect for all open Excalidraw workspace leaves. Until now autosave was activated only after you closed and reopened the Excalidraw view. [#502](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/502)\n- When you create a text element containing a ${String.fromCharCode(96,96,96)}[[markdown link]]${String.fromCharCode(96,96,96)} in raw mode, the new link was parsed nonetheless, and sometimes the link disappeared, leaving only the parsed text without the actual link. Creating links in raw-mode now works correctly.\n\n## New Features\n- The most recent 5 custom colors from the canvas are now added as color options to the element stroke and element background palette. [#4843](https://github.com/excalidraw/excalidraw/pull/4843)\n- Vertical text alignment for text in sticky notes [#4852](https://github.com/excalidraw/excalidraw/pull/4852)\n- Markdown embeds into Excalidraw now receive default styling, including that of tables, blockquotes, and code blocks. I also added a new setting and corresponding frontmatter-key to set the border-color for the embedded markdown document. You can override plugin settings at the document level by adding ${String.fromCharCode(96,96,96)}excalidraw-border-color: steelblue${String.fromCharCode(96,96,96)} to the markdown document you want to embed into your drawing. Valid values are css-color-name|#HEXcolor|any-other-html-standard-format.\n- In Obsidian search, when the text you were searching for is found in an Excalidraw document, clicking the link in search-results will open the drawing with the matching text element selected and zoomed.\n- Excalidraw now supports linking to text elements on the canvas and linking to non-text objects. \n1) You can reference text headings just the same as markdown headings in a document\ni.e. you have a text element that includes a valid markdown heading:\n${String.fromCharCode(96,96,96)}markdown\n# My Heading\ndetails...\n${String.fromCharCode(96,96,96)}\nor \n${String.fromCharCode(96,96,96)}markdown\ntext element text\n# my reference\n${String.fromCharCode(96,96,96)}\nYou can reference these like this respectively: ${String.fromCharCode(96,96,96)}[[#My Heading|display alias]]${String.fromCharCode(96,96,96)} and ${String.fromCharCode(96,96,96)}[[#my reference|alias]]${String.fromCharCode(96,96,96)}\n\n![image](https://user-images.githubusercontent.com/14358394/156890231-5a23bcb3-40a4-4ad7-b366-74c328620159.png)\n\n2) You can also reference element ids similar to block references\n- Links take this form ${String.fromCharCode(96,96,96)}[[#^elementID|alias]]${String.fromCharCode(96,96,96)}\n- Linking is supported by a new action on the Obsidian Tools Panel\n![image](https://user-images.githubusercontent.com/14358394/156894011-6442c3d6-aaff-43a8-bd77-513e450484ba.png)\n\n[Release Notes on GitHub](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.6.17)\n`,"1.6.16":'\n
\n\n
\n\n\n## Fixed\n- CMD+Drag from the Obsidian File Manager does not work on Mac. You can now use SHIFT+Drag to embed an image or markdown document into a scene. ([#468](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/468))\n- Excalidraw Compressed JSON is now cut to smaller chunks (64 characters per paragraph, instead of the earlier 1024 characters). This should address search performance issues. ([#484](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/484))\n\n## New Features\n- I added the Obsidian Tools Panel\n - Click the Obsidian button to access the panel.\n - The tools panel contains key plugin commands and user / downloaded Excalidraw scripts.\n - Drag the panel with the handle at the top. Single click on the top to collapse the panel.\n - On Mobile press and hold the drag handle before dragging, to avoid activating the Obsidian slide in menus.\n - On Mobile long touch individual buttons on the panel to access tooltips.\n - Reinstall Excalidraw scripts to get the icons.\n- If you hold down SHIFT while resizing a sticky note, the text size will scale instead of text wrapping. ([Excalidraw tweet](https://twitter.com/aakansha1216/status/1496116528890417155?s=20&t=taXjA6I9Nd0T-C0wYBsG5g))\n- SVG export now includes links ([#4791](https://github.com/excalidraw/excalidraw/pull/4791))\n- Added full screen mode for Obsidian Mobile\n- Release notes\n - disable popup in settings\n - access release notes via the command palette, or the button on the tools panel\n\n[Release Notes on GitHub](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.6.16)\n\n[![support-membership](https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/support-tiers.jpg)](https://ko-fi.com/zsolt)\n'};class ReleaseNotes extends obsidian.Modal{constructor(A,e,t){super(A),this.plugin=e,this.version=t}onOpen(){var A;this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText(`Welcome to Excalidraw ${null!==(A=this.version)&&void 0!==A?A:""}`),this.createForm()}async onClose(){this.contentEl.empty(),await this.plugin.loadSettings(),this.plugin.settings.previousRelease=PLUGIN_VERSION,await this.plugin.saveSettings()}async createForm(){let A=this.plugin.settings.previousRelease;A=this.version===A?"0.0.0":A;const e=this.version?Object.keys(RELEASE_NOTES).filter((e=>"Intro"===e||isVersionNewerThanOther(e,A))).map((A=>`# ${A}\n${RELEASE_NOTES[A]}`)).slice(0,10).join("\n\n---\n"):FIRST_RUN;await obsidian.MarkdownRenderer.renderMarkdown(e,this.contentEl,"",this.plugin),this.contentEl.createEl("p",{text:""},(A=>{A.style.textAlign="right",A.createEl("button",{text:"Close"}).onclick=()=>this.close()}))}}const dark='({scriptIconMap:A})))}setPreviewMode(A){this.setState((()=>({isPreviewMode:A})))}setFullscreen(A){this.setState((()=>({isFullscreen:A})))}setExcalidrawViewMode(A){this.setState((()=>({excalidrawViewMode:A})))}toggleVisibility(A){this.setTopCenter(A),this.setState((A=>({visible:!A.visible})))}setTheme(A){this.setState((e=>({theme:A})))}setTopCenter(A){this.setState((()=>({left:(this.containerRef.current.clientWidth-228-(A?0:232))/2+this.containerRef.current.parentElement.offsetLeft+(A?0:232),top:64+this.containerRef.current.parentElement.offsetTop})))}updatePosition(A=0,e=0){this.setState((()=>{const{offsetTop:t,offsetLeft:i,clientWidth:n,clientHeight:a}=this.containerRef.current.firstElementChild,r=t-A,s=i-e,{clientWidth:o,clientHeight:l,offsetTop:c,offsetLeft:d}=this.containerRef.current.parentElement;return this.previousHeight=l,this.previousWidth=o,this.onBottomEdge=r>=l-a+c,this.onRightEdge=s>=o-n+d,{top:r{A.preventDefault(),Math.abs(this.penDownX-this.pos3)>5||Math.abs(this.penDownY-this.pos4)>5||this.setState((A=>({minimized:!A.minimized})))},onPointerDown:A=>{const e=A=>{A.preventDefault(),this.pos1=this.pos3-A.clientX,this.pos2=this.pos4-A.clientY,this.pos3=A.clientX,this.pos4=A.clientY,this.updatePosition(this.pos2,this.pos1)},t=()=>{var A,i;null===(A=this.props.view.ownerDocument)||void 0===A||A.removeEventListener("pointerup",t),null===(i=this.props.view.ownerDocument)||void 0===i||i.removeEventListener("pointermove",e)};A.preventDefault(),this.penDownX=this.pos3=A.clientX,this.penDownY=this.pos4=A.clientY,this.props.view.ownerDocument.addEventListener("pointerup",t),this.props.view.ownerDocument.addEventListener("pointermove",e)}},React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 228 26"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M40,7 h148 M40,13 h148 M40,19 h148"}))),React__namespace.createElement("div",{className:"Island App-menu__left scrollbar",style:{maxHeight:"350px","--padding":2,display:this.state.minimized?"none":"block"}},React__namespace.createElement("div",{className:"panelColumn"},React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Utility actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"search",title:t$d("SEARCH"),action:()=>{search(this.props.view)},icon:ICONS.search,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"release-notes",title:t$d("READ_RELEASE_NOTES"),action:()=>{new ReleaseNotes(this.props.view.app,this.props.view.plugin,PLUGIN_VERSION).open()},icon:ICONS.releaseNotes,view:this.props.view}),null===this.state.isPreviewMode?React__namespace.createElement(ActionButton,{key:"convert",title:t$d("CONVERT_FILE"),action:()=>{this.props.view.convertExcalidrawToMD()},icon:ICONS.convertFile,view:this.props.view}):React__namespace.createElement(ActionButton,{key:"viewmode",title:this.state.isPreviewMode?t$d("PARSED"):t$d("RAW"),action:()=>{this.state.isPreviewMode?this.props.view.changeTextMode(TextMode.raw):this.props.view.changeTextMode(TextMode.parsed)},icon:this.state.isPreviewMode?ICONS.rawMode:ICONS.parsedMode,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"tray-mode",title:t$d("TRAY_MODE"),action:()=>{this.props.view.toggleTrayMode()},icon:ICONS.trayMode,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"fullscreen",title:this.state.isFullscreen?t$d("EXIT_FULLSCREEN"):t$d("GOTO_FULLSCREEN"),action:()=>{this.state.isFullscreen?this.props.view.exitFullscreen():this.props.view.gotoFullscreen()},icon:this.state.isFullscreen?ICONS.exitFullScreen:ICONS.gotoFullScreen,view:this.props.view}))),React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Export actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"lib",title:t$d("DOWNLOAD_LIBRARY"),action:()=>{this.props.view.plugin.exportLibrary()},icon:ICONS.exportLibrary,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"svg",title:t$d("EXPORT_SVG"),action:()=>{this.props.view.saveSVG(),new obsidian.Notice(`File saved: ${getIMGFilename(this.props.view.file.path,"svg")}`)},icon:ICONS.exportSVG,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"png",title:t$d("EXPORT_PNG"),action:()=>{this.props.view.savePNG(),new obsidian.Notice(`File saved: ${getIMGFilename(this.props.view.file.path,"png")}`)},icon:ICONS.exportPNG,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"excalidraw",title:t$d("EXPORT_EXCALIDRAW"),action:()=>{this.props.view.exportExcalidraw()},icon:ICONS.exportExcalidraw,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"md",title:t$d("OPEN_AS_MD"),action:()=>{this.props.view.openAsMarkdown()},icon:ICONS.switchToMarkdown,view:this.props.view}))),React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Insert actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"image",title:t$d("INSERT_IMAGE"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertImageDialog.start(this.props.view)},icon:ICONS.insertImage,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"insertMD",title:t$d("INSERT_MD"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertMDDialog.start(this.props.view)},icon:ICONS.insertMD,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"latex",title:t$d("INSERT_LATEX"),action:()=>{this.props.centerPointer(),insertLaTeXToView(this.props.view)},icon:ICONS.insertLaTeX,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"link",title:t$d("INSERT_LINK"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertLinkDialog.start(this.props.view.file.path,this.props.view.addText)},icon:ICONS.insertLink,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"link-to-element",title:t$d("INSERT_LINK_TO_ELEMENT"),action:A=>{this.props.view.copyLinkToSelectedElementToClipboard(A[CTRL_OR_CMD]?"group=":A.shiftKey?"area=":"")},icon:ICONS.copyElementLink,view:this.props.view}))),this.renderScriptButtons(!1),this.renderScriptButtons(!0)))))}renderScriptButtons(A){if(0===Object.keys(this.state.scriptIconMap).length)return"";const e=`${this.props.view.plugin.settings.scriptFolderPath}/Downloaded/`,t=t=>A?t.startsWith(e):!t.startsWith(e);return 0===Object.keys(this.state.scriptIconMap).filter((A=>t(A))).length?"":React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,A?"Downloaded":"User"," Scripts"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},Object.keys(this.state.scriptIconMap).filter((A=>t(A))).sort().map((e=>React__namespace.createElement(ActionButton,{key:e,title:A?this.state.scriptIconMap[e].name.replace("Downloaded/",""):this.state.scriptIconMap[e].name,action:async()=>{const A=this.props.view.app.vault.getAbstractFileByPath(e);A&&A instanceof obsidian.TFile&&this.props.view.plugin.scriptEngine.executeScript(this.props.view,await this.props.view.plugin.app.vault.read(A),this.props.view.plugin.scriptEngine.getScriptName(A))},icon:this.state.scriptIconMap[e].svgString?React__namespace.createElement("img",{src:`data:image/svg+xml,${encodeURIComponent("dark"===this.state.theme?this.state.scriptIconMap[e].svgString.replace("e.filter((e=>{if(t&&e.type!==t)return!1;const[i,n,a,r]=rotatedDimensions(e);return i<=A.x&&i+a>=A.x&&n<=A.y&&n+r>=A.y})),getTextElementAtPointer=(A,e)=>{const t=e.excalidrawAPI;if(!t)return{id:null,text:null};const i=getElementsAtPointer(A,t.getSceneElements(),"text");if(0==i.length)return{id:null,text:null};if(1===i.length)return{id:i[0].id,text:i[0].text};const n=i.filter((A=>{const t=e.textMode===TextMode.parsed?e.excalidrawData.getRawText(A.id):A.text;return!!t&&(!!t.match(REG_LINKINDEX_HYPERLINK)||!!REGEX_LINK.getRes(t).next().value)}));return 0==n.length?{id:i[0].id,text:i[0].text}:{id:n[0].id,text:n[0].text}},getImageElementAtPointer=(A,e)=>{const t=e.excalidrawAPI;if(!t)return;const i=getElementsAtPointer(A,t.getSceneElements(),"image");return 0===i.length?{id:null,fileId:null}:i.length>=1?{id:i[0].id,fileId:i[0].fileId}:void 0},getElementWithLinkAtPointer=(A,e)=>{const t=e.excalidrawAPI;if(!t)return;const i=getElementsAtPointer(A,t.getSceneElements()).filter((A=>A.link));return 0===i.length?{id:null,text:null}:i.length>=1?{id:i[0].id,text:i[0].link}:void 0};var TextMode;!function(A){A.parsed="parsed",A.raw="raw"}(TextMode||(TextMode={}));const addFiles=async(A,e,t)=>{if(!A||0===A.length||!e)return;const i=e.excalidrawAPI;if(!i)return;if(A=A.filter((A=>A&&A.size&&A.size.height>0&&A.size.width>0)),0===A.length)return;const n=scaleLoadedImage(e.getScene(),A);void 0===t&&(t=n.scene.appState.theme),n.dirty&&await e.updateScene({elements:n.scene.elements,appState:n.scene.appState,commitToHistory:!1});for(const i of A)if(e.excalidrawData.hasFile(i.id)&&e.excalidrawData.getFile(i.id).setImage(i.dataURL,i.mimeType,i.size,t,i.hasSVGwithBitmap),e.excalidrawData.hasEquation(i.id)){const A=e.excalidrawData.getEquation(i.id).latex;e.excalidrawData.setEquation(i.id,{latex:A,isLoaded:!0})}i.addFiles(A)},warningUnknowSeriousError=()=>{new obsidian.Notice("WARNING: Excalidraw ran into an unknown problem!\n\nThere is a risk that your most recent changes cannot be saved.\n\nTo be on the safe side...\n1) Please select your drawing using CTRL/CMD+A and make a copy with CTRL/CMD+C.\n2) Then create an empty drawing in a new pane by CTRL/CMD+clicking the Excalidraw ribbon button,\n3) and paste your work to the new document with CTRL/CMD+V.",6e4)};class ExcalidrawView extends obsidian.TextFileView{constructor(A,e){super(A),this.getScene=null,this.addElements=null,this.getSelectedTextElement=null,this.getSelectedImageElement=null,this.getSelectedElementWithLink=null,this.addText=null,this.refresh=null,this.excalidrawRef=null,this.excalidrawAPI=null,this.excalidrawWrapperRef=null,this.toolsPanelRef=null,this.linksAlwaysOpenInANewPane=!1,this.lastSaveTimestamp=0,this.metaKeyDown=!1,this.ctrlKeyDown=!1,this.shiftKeyDown=!1,this.altKeyDown=!1,this.semaphores={viewunload:!1,scriptsReady:!1,justLoaded:!1,preventAutozoom:!1,autosaving:!1,dirty:null,preventReload:!1,isEditingText:!1,saving:!1,forceSaving:!1,hoverSleep:!1,wheelTimeout:null},this.autosaveTimer=null,this.textMode=TextMode.raw,this.compatibilityMode=!1,this.isEditingTextResetTimer=null,this.id=this.leaf.id,this.getHookServer=()=>{var A;return null!==(A=this.hookServer)&&void 0!==A?A:this.plugin.ea},this.preventReloadResetTimer=null,this.fullscreenModalObserver=null,this.hiddenMobileLeaves=[],this.offsetLeft=0,this.offsetTop=0,this.blockTextModeChange=!1,this.isLoaded=!1,this.activeLoader=null,this.nextLoader=null,this.initialContainerSizeUpdate=!1,this.previousSceneVersion=0,this.previousBackgroundColor="",this.plugin=e,this.excalidrawData=new ExcalidrawData(e),this.hookServer=e.ea}setHookServer(A){this.hookServer=A||this.plugin.ea}preventAutozoom(){this.semaphores.preventAutozoom=!0,setTimeout((()=>this.semaphores.preventAutozoom=!1),1500)}saveExcalidraw(A){if(!A){if(!this.getScene)return!1;A=this.getScene()}const e=`${this.file.path.substring(0,this.file.path.lastIndexOf(".md"))}.excalidraw`,t=app.vault.getAbstractFileByPath(obsidian.normalizePath(e));t&&t instanceof obsidian.TFile?app.vault.modify(t,JSON.stringify(A,null,"\t")):app.vault.create(e,JSON.stringify(A,null,"\t"))}async exportExcalidraw(){this.getScene&&this.file&&(app.isMobile?new Prompt(app,"Please provide filename",this.file.basename,"filename, leave blank to cancel action").openAndGetValue((async A=>{if(!A)return;A=`${A}.excalidraw`;const e=splitFolderAndFilename(this.file.path).folderpath;await checkAndCreateFolder(e);const t=getNewUniqueFilepath(app.vault,A,e);app.vault.create(t,JSON.stringify(this.getScene(),null,"\t")),new obsidian.Notice(`Exported to ${t}`,6e3)})):download("data:text/plain;charset=utf-8",encodeURIComponent(JSON.stringify(this.getScene(),null,"\t")),`${this.file.basename}.excalidraw`))}async svg(A,e){const t={withBackground:getWithBackground(this.plugin,this.file),withTheme:!0};return await getSVG(Object.assign(Object.assign({},A),{appState:Object.assign(Object.assign({},A.appState),{theme:null!=e?e:getExportTheme(this.plugin,this.file,A.appState.theme)})}),t,getExportPadding(this.plugin,this.file))}async saveSVG(A){if(!A){if(!this.getScene)return!1;A=this.getScene()}const e=async(e,t)=>{const i=app.vault.getAbstractFileByPath(obsidian.normalizePath(e)),n=await this.svg(A,t);if(!n)return;const a=(new XMLSerializer).serializeToString(embedFontsInSVG(n,this.plugin));i&&i instanceof obsidian.TFile?await app.vault.modify(i,a):await app.vault.create(e,a)};this.plugin.settings.autoExportLightAndDark?(await e(getIMGFilename(this.file.path,"dark.svg"),"dark"),await e(getIMGFilename(this.file.path,"light.svg"),"light")):await e(getIMGFilename(this.file.path,"svg"))}async png(A,e){const t={withBackground:getWithBackground(this.plugin,this.file),withTheme:!0};return await getPNG(Object.assign(Object.assign({},A),{appState:Object.assign(Object.assign({},A.appState),{theme:null!=e?e:getExportTheme(this.plugin,this.file,A.appState.theme)})}),t,getExportPadding(this.plugin,this.file),getPNGScale(this.plugin,this.file))}async savePNG(A){if(!A){if(!this.getScene)return!1;A=this.getScene()}const e=async(e,t)=>{const i=app.vault.getAbstractFileByPath(obsidian.normalizePath(e)),n=await this.png(A,t);n&&(i&&i instanceof obsidian.TFile?await app.vault.modifyBinary(i,await n.arrayBuffer()):await app.vault.createBinary(e,await n.arrayBuffer()))};this.plugin.settings.autoExportLightAndDark?(await e(getIMGFilename(this.file.path,"dark.png"),"dark"),await e(getIMGFilename(this.file.path,"light.png"),"light")):await e(getIMGFilename(this.file.path,"png"))}async save(A=!0,e=!1){if(this.isLoaded&&!this.semaphores.saving)if(this.semaphores.saving=!0,this.getScene&&this.excalidrawAPI&&this.isLoaded&&this.file&&app.vault.getAbstractFileByPath(this.file.path)){try{const t=Boolean(null!==this.semaphores.dirty&&this.semaphores.dirty||this.semaphores.autosaving||e),i=this.getScene();if(this.compatibilityMode?await this.excalidrawData.syncElements(i):await this.excalidrawData.syncElements(i,this.excalidrawAPI.getAppState().selectedElementIds)&&await this.loadDrawing(!1,this.excalidrawAPI.getSceneElementsIncludingDeleted().filter((A=>A.isDeleted))),t&&(this.preventReloadResetTimer&&(clearTimeout(this.preventReloadResetTimer),this.preventReloadResetTimer=null),this.semaphores.preventReload=A,await super.save(),this.lastSaveTimestamp=this.file.stat.mtime,this.clearDirty(),A)){const A=this;this.preventReloadResetTimer=setTimeout((()=>A.semaphores.preventReload=!1),2e3)}if(!this.semaphores.autosaving&&!this.semaphores.viewunload){const A=this.excalidrawData.autoexportPreference;(A===AutoexportPreference.inherit&&this.plugin.settings.autoexportSVG||A===AutoexportPreference.both||A===AutoexportPreference.svg)&&this.saveSVG(),(A===AutoexportPreference.inherit&&this.plugin.settings.autoexportPNG||A===AutoexportPreference.both||A===AutoexportPreference.png)&&this.savePNG(),!this.compatibilityMode&&this.plugin.settings.autoexportExcalidraw&&this.saveExcalidraw()}}catch(A){errorlog({where:"ExcalidrawView.save",fn:this.save,error:A}),warningUnknowSeriousError()}this.semaphores.saving=!1}else this.semaphores.saving=!1}getViewData(){if(!this.getScene)return this.data;if(!this.excalidrawData.loaded)return this.data;const A=this.getScene();if(!this.compatibilityMode){let A=this.data.search(/(^%%\n)?# Text Elements\n/m);if(-1==A&&(A=this.data.search(/(%%\n)?# Drawing\n/)),-1==A)return this.data;let e=this.data.substring(0,A).replace(/excalidraw-plugin:\s.*\n/,"excalidraw-plugin: "+(this.textMode===TextMode.raw?"raw\n":"parsed\n"));const t=/(^---[\w\W]*?---\n)(!\[\[.*?]]\n(%%\n)?)/m;e.match(t)&&(e=e.replace(t,"$1")),this.excalidrawData.disableCompression||(this.excalidrawData.disableCompression=this.isEditedAsMarkdownInOtherView());const i=e+this.excalidrawData.generateMD(this.excalidrawAPI.getSceneElementsIncludingDeleted().filter((A=>A.isDeleted)));return this.excalidrawData.disableCompression=!1,i}return this.compatibilityMode?JSON.stringify(A,null,"\t"):this.data}addFullscreenchangeEvent(){this.contentEl.onfullscreenchange=()=>{this.plugin.settings.zoomToFitOnResize&&this.zoomToFit(),this.isFullscreen()||(this.clearFullscreenObserver(),this.contentEl.removeAttribute("style")),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setFullscreen(this.isFullscreen())}}restoreMobileLeaves(){this.hiddenMobileLeaves.length>0&&(this.hiddenMobileLeaves.forEach((A=>{A[0].containerEl.style.display=A[1]})),this.hiddenMobileLeaves=[])}gotoFullscreen(){var A;if(this.plugin.leafChangeTimeout&&(clearTimeout(this.plugin.leafChangeTimeout),this.plugin.leafChangeTimeout=null),this.excalidrawWrapperRef){if(this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setFullscreen(!0),app.isMobile){obsidian.Platform.isIosApp&&(this.restoreMobileLeaves(),app.workspace.getLayout().main.children.filter((A=>"leaf"===A.type)).forEach((A=>{const e=app.workspace.getLeafById(A.id);e!==this.leaf&&(this.hiddenMobileLeaves.push([e,e.containerEl.style.display]),e.containerEl.style.display="none")})));const A=document.createElement("style");A.id="excalidraw-full-screen",A.textContent="\n .workspace-leaf-content .view-content {\n padding: 0px !important;\n }\n .view-header {\n height: 1px !important;\n }\n .status-bar {\n display: none !important;\n }";const e=document.getElementById(A.id);e&&document.head.removeChild(e),document.head.appendChild(A)}this.contentEl.requestFullscreen(),null===(A=this.excalidrawWrapperRef.current.firstElementChild)||void 0===A||A.focus(),this.contentEl.setAttribute("style","padding:0px;margin:0px;"),this.fullscreenModalObserver=new MutationObserver((A=>{if(1!==A.length)return;if(!A[0].addedNodes||1!==A[0].addedNodes.length)return;const e=A[0].addedNodes[0];if(e.nodeType!==Node.ELEMENT_NODE)return;const t=e;t.classList.contains("modal-container")&&(this.contentEl.appendChild(t),t.querySelector("input").focus())})),this.fullscreenModalObserver.observe(this.ownerDocument.body,{childList:!0,subtree:!1})}}clearFullscreenObserver(){this.fullscreenModalObserver&&(this.fullscreenModalObserver.disconnect(),this.fullscreenModalObserver=null)}isFullscreen(){return this.hiddenMobileLeaves.length>0||this.ownerDocument.fullscreenEnabled&&this.ownerDocument.fullscreenElement===this.contentEl}exitFullscreen(){if(console.log("Exit Fullscreen"),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setFullscreen(!1),app.isMobile){this.restoreMobileLeaves();const A=document.getElementById("excalidraw-full-screen");A&&document.head.removeChild(A)}this.ownerDocument.exitFullscreen()}async handleLinkClick(A,e){var t,i,n,a;const r=this.ownerDocument.body.querySelector("body>div.excalidraw-tooltip,div.excalidraw-tooltip--visible");r&&this.ownerDocument.body.removeChild(r);const s=this.getSelectedTextElement(),o=(null==s?void 0:s.id)?null:this.getSelectedImageElement(),l=(null==o?void 0:o.id)||(null==s?void 0:s.id)?null:this.getSelectedElementWithLink();let c=null,d=null,h=null;if((null==s?void 0:s.id)||(null==l?void 0:l.id)){if(h=null!==(t=null==l?void 0:l.text)&&void 0!==t?t:this.textMode===TextMode.parsed?this.excalidrawData.getRawText(s.id):s.text,!h)return;if(h=h.replaceAll("\n",""),this.getHookServer().onLinkClickHook){const A=null!==(i=s.id)&&void 0!==i?i:l.id,t=this.excalidrawAPI.getSceneElements().filter((e=>e.id===A))[0];try{if(!this.getHookServer().onLinkClickHook(t,h,e,this,this.getHookServer()))return}catch(A){errorlog({where:"ExcalidrawView.handleLinkClick selectedText.id!==null",fn:this.getHookServer().onLinkClickHook,error:A})}}if(h.match(REG_LINKINDEX_HYPERLINK))return void window.open(h,"_blank");const n=REGEX_LINK.getRes(h).next();if(!n.value){const A=h.matchAll(/#([\p{Letter}\p{Emoji_Presentation}\p{Number}\/_-]+)/gu).next();if(!A.value||A.value.length<2)return;const e=app.workspace.getLeavesOfType("search");if(0==e.length)return;return e[0].view.setQuery(`tag:${A.value[1]}`),app.workspace.revealLeaf(e[0]),void(this.isFullscreen()&&this.exitFullscreen())}if(h=REGEX_LINK.getLink(n),h.match(REG_LINKINDEX_HYPERLINK))return void window.open(h,"_blank");if(h.search("#")>-1){const A=getLinkParts(h,this.file);d=`#${A.isBlockRef?"^":""}${A.ref}`,h=A.path}if(h.match(REG_LINKINDEX_INVALIDCHARS))return void new obsidian.Notice(t$d("FILENAME_INVALID_CHARS"),4e3);c=A.app.metadataCache.getFirstLinkpathDest(h,A.file.path)}if(null==o?void 0:o.id){if(this.excalidrawData.hasEquation(o.fileId)){const A=this.excalidrawData.getEquation(o.fileId).latex;return void new Prompt(app,t$d("ENTER_LATEX"),A,"").openAndGetValue((async e=>{e&&e!==A&&(this.excalidrawData.setEquation(o.fileId,{latex:e,isLoaded:!1}),await this.save(!1),await updateEquation(e,o.fileId,this,addFiles,this.plugin),this.setDirty(1))}))}if(await this.save(!1),this.excalidrawData.hasFile(o.fileId)){if(e.altKey){const A=this.excalidrawData.getFile(o.fileId);if("md"===A.file.extension&&!this.plugin.isExcalidrawFile(A.file))return void new Prompt(app,"Customize the link",A.linkParts.original,"","Do not add [[square brackets]] around the filename!
Follow this format when editing your link:
filename#^blockref|WIDTHxMAXHEIGHT").openAndGetValue((async e=>{e&&A.linkParts.original!==e&&(A.resetImage(this.file.path,e),await this.save(!1),await this.loadSceneFiles(),this.setDirty(2))}))}h=this.excalidrawData.getFile(o.fileId).file.path,c=this.excalidrawData.getFile(o.fileId).file}}if(h){if(this.getHookServer().onLinkClickHook){const A=null!==(a=null!==(n=o.id)&&void 0!==n?n:s.id)&&void 0!==a?a:l.id,t=this.excalidrawAPI.getSceneElements().filter((e=>e.id===A))[0];try{if(!this.getHookServer().onLinkClickHook(t,h,e,this,this.getHookServer()))return}catch(A){errorlog({where:"ExcalidrawView.handleLinkClick selectedText.id===null",fn:this.getHookServer().onLinkClickHook,error:A})}}try{if(e.shiftKey&&this.isFullscreen()&&this.exitFullscreen(),!c)return void new NewFileActions(this.plugin,h,e.shiftKey,!app.isMobile&&e.metaKey,A).open();const t=!app.isMobile&&(e.metaKey&&this.linksAlwaysOpenInANewPane||e.metaKey)?app.workspace.openPopoutLeaf():e.shiftKey||this.linksAlwaysOpenInANewPane?getNewOrAdjacentLeaf(this.plugin,A.leaf):A.leaf;await t.openFile(c,d?{active:!1,eState:{subpath:d}}:void 0)}catch(A){new obsidian.Notice(A,4e3)}}else new obsidian.Notice(t$d("LINK_BUTTON_CLICK_NO_TEXT"),2e4)}onResize(){var A,e;if(this.plugin.leafChangeTimeout)return;const t=this.excalidrawAPI;this.plugin.settings.zoomToFitOnResize&&this.excalidrawRef&&!this.semaphores.isEditingText&&t&&"text"!==(null===(e=null===(A=t.getAppState())||void 0===A?void 0:A.editingElement)||void 0===e?void 0:e.type)&&this.zoomToFit(!1)}getSceneVersion(A){return this.excalidrawGetSceneVersion||(this.excalidrawGetSceneVersion=this.plugin.getPackage(this.ownerWindow).excalidrawLib.getSceneVersion),this.excalidrawGetSceneVersion(A.filter((A=>!A.isDeleted)))}onload(){const A=Boolean(void 0===this.containerEl.onWindowMigrated);app.isMobile||A||this.containerEl.onWindowMigrated((()=>this.leaf.rebuildView()));const e=app.isMobile?document:this.containerEl.ownerDocument;this.ownerDocument=e,this.ownerWindow=this.ownerDocument.defaultView,this.plugin.getPackage(this.ownerWindow),this.semaphores.scriptsReady=!0,this.wheelEvent=A=>{this.semaphores.wheelTimeout&&clearTimeout(this.semaphores.wheelTimeout),this.semaphores.hoverSleep&&this.clearHoverPreview&&this.clearHoverPreview(),this.semaphores.wheelTimeout=setTimeout((()=>{clearTimeout(this.semaphores.wheelTimeout),this.semaphores.wheelTimeout=null}),1e3)},this.containerEl.addEventListener("wheel",this.wheelEvent,{passive:!1}),this.addAction("ScriptEngine",t$d("INSTALL_SCRIPT_BUTTON"),(()=>{new ScriptInstallPrompt(this.plugin).open()})),this.diskIcon=this.addAction("disk",t$d("FORCE_SAVE"),(async()=>{this.semaphores.autosaving||(this.semaphores.forceSaving=!0,await this.save(!1,!0),this.plugin.triggerEmbedUpdates(),this.loadSceneFiles(),this.semaphores.forceSaving=!1,new obsidian.Notice("Save successful",1e3))})),this.textIsRaw_Element=this.addAction("presentation",t$d("RAW"),(()=>this.changeTextMode(TextMode.parsed))),this.textIsParsed_Element=this.addAction("quote-glyph",t$d("PARSED"),(()=>this.changeTextMode(TextMode.raw))),this.linkAction_Element=this.addAction("link",t$d("OPEN_LINK"),(A=>this.handleLinkClick(this,A))),app.isMobile||this.addAction("fullscreen","Press ESC to exit fullscreen mode",(()=>this.gotoFullscreen()));const t=this;app.workspace.onLayoutReady((async()=>{t.contentEl.addClass("excalidraw-view"),await t.addSlidingPanesListner(),t.addParentMoveObserver(),t.onKeyUp=A=>{t.ctrlKeyDown=A[CTRL_OR_CMD],t.shiftKeyDown=A.shiftKey,t.altKeyDown=A.altKey,t.metaKeyDown=A.metaKey},t.onKeyDown=A=>{this.ctrlKeyDown=A[CTRL_OR_CMD],this.shiftKeyDown=A.shiftKey,this.altKeyDown=A.altKey,this.metaKeyDown=A.metaKey},t.ownerWindow.addEventListener("keydown",t.onKeyDown,!1),t.ownerWindow.addEventListener("keyup",t.onKeyUp,!1)})),this.setupAutosaveTimer(),super.onload()}async addSlidingPanesListner(){const A=this;this.slidingPanesListner=()=>{A.refresh&&A.refresh()};let e=app.workspace.rootSplit;for(;!e;)await sleep(50),e=app.workspace.rootSplit;e.containerEl.addEventListener("scroll",this.slidingPanesListner)}removeSlidingPanesListner(){var A;this.slidingPanesListner&&(null===(A=app.workspace.rootSplit.containerEl)||void 0===A||A.removeEventListener("scroll",this.slidingPanesListner))}addParentMoveObserver(){var A;const e=null!==(A=getParentOfClass(this.containerEl,"popover"))&&void 0!==A?A:getParentOfClass(this.containerEl,"workspace-leaf");if(!e)return;const t=e.classList.contains("popover");this.offsetLeft=e.offsetLeft,this.offsetTop=e.offsetTop;const i=this;this.parentMoveObserver=new MutationObserver((async A=>{const e=A[0].target;if(!(e instanceof HTMLElement))return;const{offsetLeft:t,offsetTop:n}=e;t===i.offsetLeft&&n==i.offsetTop||(i.refresh&&i.refresh(),i.offsetLeft=t,i.offsetTop=n)})),this.parentMoveObserver.observe(e,{attributeOldValue:!0,attributeFilter:t?["data-x","data-y"]:["class","style"]})}removeParentMoveObserver(){this.parentMoveObserver&&this.parentMoveObserver.disconnect()}setTheme(A){const e=this.excalidrawAPI;if(!this.excalidrawRef||!e)return;if(this.file&&hasExportTheme(this.plugin,this.file))return;const t=e.getAppState();this.excalidrawData.scene.theme=A,this.updateScene({appState:Object.assign(Object.assign({},t),{theme:A}),commitToHistory:!1})}async changeTextMode(A,e=!0){if(this.compatibilityMode)return;if(this.blockTextModeChange)return;this.blockTextModeChange=!0,this.textMode=A,A===TextMode.parsed?(this.textIsRaw_Element.hide(),this.textIsParsed_Element.show()):(this.textIsRaw_Element.show(),this.textIsParsed_Element.hide()),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setPreviewMode(A===TextMode.parsed);const t=this.excalidrawAPI;t&&e&&(await this.save(),this.preventAutozoom(),await this.excalidrawData.loadData(this.data,this.file,this.textMode),this.excalidrawData.scene.appState.theme=t.getAppState().theme,await this.loadDrawing(!1),t.history.clear()),this.prevTextMode=this.textMode,this.blockTextModeChange=!1}setupAutosaveTimer(){const A=async()=>{var e;if(!this.isLoaded)return void(this.autosaveTimer=setTimeout(A,this.plugin.settings.autosaveInterval));const t=this.excalidrawAPI;if(!t)return void warningUnknowSeriousError();const i=t.getAppState(),n=null!==i.editingElement;if(this.refresh(),!this.semaphores.dirty||this.semaphores.dirty!=(null===(e=this.file)||void 0===e?void 0:e.path)||!this.plugin.settings.autosave||this.semaphores.forceSaving||this.semaphores.autosaving||n||null!==i.draggingElement)this.autosaveTimer=setTimeout(A,this.plugin.activeExcalidrawView===this&&this.semaphores.dirty?1e3:this.plugin.settings.autosaveInterval);else{if(this.autosaveTimer=null,this.excalidrawRef){this.semaphores.autosaving=!0;const A=this;this.save().then((()=>A.semaphores.autosaving=!1))}this.autosaveTimer=setTimeout(A,this.plugin.settings.autosaveInterval)}};this.autosaveTimer&&(clearTimeout(this.autosaveTimer),this.autosaveTimer=null),this.plugin.settings.autosave&&(this.autosaveTimer=setTimeout(A,this.plugin.settings.autosaveInterval))}onunload(){var A,e,t,i,n,a;if(this.restoreMobileLeaves(),this.semaphores.viewunload=!0,null===(A=this.ownerWindow)||void 0===A||A.removeEventListener("keydown",this.onKeyDown,!1),null===(e=this.ownerWindow)||void 0===e||e.removeEventListener("keyup",this.onKeyUp,!1),this.containerEl.removeEventListener("wheel",this.wheelEvent,!1),this.getHookServer().onViewUnloadHook)try{this.getHookServer().onViewUnloadHook(this)}catch(A){errorlog({where:"ExcalidrawView.onunload",fn:this.getHookServer().onViewUnloadHook,error:A})}const r=null===(i=null===(t=this.containerEl)||void 0===t?void 0:t.ownerDocument)||void 0===i?void 0:i.body.querySelector("body>div.excalidraw-tooltip,div.excalidraw-tooltip--visible");r&&(null===(a=null===(n=this.containerEl)||void 0===n?void 0:n.ownerDocument)||void 0===a||a.body.removeChild(r)),this.removeParentMoveObserver(),this.removeSlidingPanesListner(),this.autosaveTimer&&(clearInterval(this.autosaveTimer),this.autosaveTimer=null),this.fullscreenModalObserver&&(this.fullscreenModalObserver.disconnect(),this.fullscreenModalObserver=null)}async reload(A=!1,e){if(this.semaphores.preventReload)return void(this.semaphores.preventReload=!1);if(this.semaphores.saving)return;if(this.diskIcon.querySelector("svg").removeClass("excalidraw-dirty"),this.compatibilityMode)return void this.clearDirty();const t=this.excalidrawAPI;if(!this.excalidrawRef||!this.file||!t)return;const i=e&&e===this.file;i&&(this.data=await app.vault.read(e),this.preventAutozoom()),A?await this.excalidrawData.loadData(this.data,this.file,this.textMode):await this.excalidrawData.setTextMode(this.textMode),this.excalidrawData.scene.appState.theme=t.getAppState().theme,await this.loadDrawing(i),this.clearDirty()}async zoomToElementId(A,e){let t=0;for(;!this.excalidrawAPI&&t++<100;)await sleep(50);const i=this.excalidrawAPI;if(!i)return;const n=i.getSceneElements();let a=n.filter((e=>e.id===A));if(0!==a.length){if(e){const A=this.plugin.ea.getElementsInTheSameGroupWithElement(a[0],n);A.length>0&&(a=A)}this.preventAutozoom(),this.zoomToElements(!i.getAppState().viewModeEnabled,a)}}setEphemeralState(A){if(!A)return;const e=this;let t=null;A.match&&A.match.content&&A.match.matches&&1===A.match.matches.length&&2===A.match.matches[0].length&&(t=[A.match.content.substring(A.match.matches[0][0],A.match.matches[0][1])]);const i=getEmbeddedFilenameParts(A.subpath);i.hasBlockref&&setTimeout((()=>e.zoomToElementId(i.blockref,i.hasGroupref)),300),i.hasSectionref?t=[`# ${i.sectionref}`]:A.line&&A.line>0&&(t=[this.data.split("\n")[A.line-1]]),t&&setTimeout((async()=>{let A=0;for(;!e.excalidrawAPI&&A++<100;)await sleep(50);const n=e.excalidrawAPI;if(!n)return;const a=n.getSceneElements();e.selectElementsMatchingQuery(a,t,!n.getAppState().viewModeEnabled,i.hasSectionref,i.hasGroupref)}),300),super.setEphemeralState(A)}clear(){const A=this.excalidrawAPI;this.excalidrawRef&&A&&(this.activeLoader&&(this.activeLoader.terminate=!0,this.activeLoader=null),this.nextLoader=null,A.resetScene(),A.history.clear(),this.previousSceneVersion=0)}async setViewData(A,e=!1){this.plugin.settings.showNewVersionNotification&&checkExcalidrawVersion(app),this.isLoaded=!1,e&&this.clear(),this.lastSaveTimestamp=this.file.stat.mtime,A=this.data=A.replaceAll("\r\n","\n").replaceAll("\r","\n"),app.workspace.onLayoutReady((async()=>{if(this.compatibilityMode="excalidraw"===this.file.extension,await this.plugin.loadSettings(),this.compatibilityMode)this.textIsRaw_Element.hide(),this.textIsParsed_Element.hide(),this.linkAction_Element.hide(),this.textMode=TextMode.raw,await this.excalidrawData.loadLegacyData(A,this.file),this.plugin.settings.compatibilityMode||new obsidian.Notice(t$d("COMPATIBILITY_MODE"),4e3),this.excalidrawData.disableCompression=!0;else{this.linkAction_Element.show(),this.excalidrawData.disableCompression=!1;const e=getTextMode(A);this.changeTextMode(e,!1);try{if(!await this.excalidrawData.loadData(A,this.file,this.textMode))return}catch(A){return errorlog({where:"ExcalidrawView.setViewData",error:A}),new obsidian.Notice(`Error loading drawing:\n${A.message}${"Cannot read property 'index' of undefined"===A.message?"\n'# Drawing' section is likely missing":""}\n\nTry manually fixing the file or restoring an earlier version from sync history.`,1e4),void this.setMarkdownView()}}await this.loadDrawing(!0);const e=this.excalidrawData.getOnLoadScript();if(e){const A=this,t=this.file.basename+"-onlaod-script",i=()=>{A.excalidrawAPI?A.plugin.scriptEngine.executeScript(A,e,t):setTimeout(i,200)};i()}this.isLoaded=!0}))}async loadSceneFiles(){if(!this.excalidrawAPI)return;const A=new EmbeddedFilesLoader(this.plugin),e=A=>{this.nextLoader=null,this.activeLoader=A,A.loadSceneFiles(this.excalidrawData,((A,t)=>{A&&(addFiles(A,this,t),this.activeLoader=null,this.nextLoader?e(this.nextLoader):this.excalidrawData.getFiles().some((A=>{if(A&&!A.file&&A.attemptCounter<30){const A=this,e=this.file.path;return setTimeout((async()=>{A&&A.excalidrawAPI&&e===A.file.path&&A.loadSceneFiles()}),2e3),!0}return!1})))}),0)};this.activeLoader?this.nextLoader=A:e(A)}async synchronizeWithData(A){let e=0;for(;this.semaphores.saving&&e++<30;)await sleep(100);if(e>=30)return void errorlog({where:"ExcalidrawView.synchronizeWithData",message:`Aborting sync with received file (${this.file.path}) because semaphores.saving remained true for ower 3 seconds`,fn:this.synchronizeWithData});this.semaphores.saving=!0;let t=!1;try{const e=A.deletedElements.map((A=>A.id)),i=this.excalidrawAPI.getSceneElements().filter((A=>!e.contains(A.id))),n=i.map((A=>A.id)),a=e=>{switch(e.type){case"text":this.excalidrawData.textElements.set(e.id,A.textElements.get(e.id));break;case"image":A.getFile(e.fileId)?(this.excalidrawData.setFile(e.fileId,A.getFile(e.fileId)),t=!0):A.getEquation(e.fileId)&&(this.excalidrawData.setEquation(e.fileId,A.getEquation(e.fileId)),t=!0)}A.elementLinks.has(e.id)&&this.excalidrawData.elementLinks.set(e.id,A.elementLinks.get(e.id))};A.scene.elements.forEach(((e,r,s)=>{const o=i.filter((A=>A.id===e.id))[0];if(o&&(o.versionA.view.file===this.file)).length>0}setDirty(A){var e;this.semaphores.dirty=null===(e=this.file)||void 0===e?void 0:e.path,this.diskIcon.querySelector("svg").addClass("excalidraw-dirty"),app.isMobile||obsidian.requireApiVersion("0.16.0")&&(this.leaf.tabHeaderInnerTitleEl.style.color="var(--color-accent)")}clearDirty(){const A=this.excalidrawAPI;if(!A)return;this.semaphores.dirty=null;const e=A.getSceneElements();e&&(this.previousSceneVersion=this.getSceneVersion(e)),this.diskIcon.querySelector("svg").removeClass("excalidraw-dirty"),app.isMobile||obsidian.requireApiVersion("0.16.0")&&(this.leaf.tabHeaderInnerTitleEl.style.color="")}initializeToolsIconPanelAfterLoading(){var A;const e=this.excalidrawAPI;if(!e)return;const t=e.getAppState(),i=null===(A=this.toolsPanelRef)||void 0===A?void 0:A.current;i&&(i.setTheme(t.theme),i.setExcalidrawViewMode(t.viewModeEnabled),i.setPreviewMode(this.compatibilityMode?null:this.textMode===TextMode.parsed),i.updateScriptIconMap(this.plugin.scriptEngine.scriptIconMap))}canAcceptExtension(A){return"excalidraw"===A}getDisplayText(){return this.file?this.file.basename:t$d("NOFILE")}getViewType(){return"excalidraw"}getIcon(){return ICON_NAME}setMarkdownView(){this.plugin.excalidrawFileModes[this.id||this.file.path]="markdown",this.plugin.setMarkdownView(this.leaf)}async openAsMarkdown(){!0===this.plugin.settings.compress&&(this.excalidrawData.disableCompression=!0,await this.save(!0,!0)),this.setMarkdownView()}async convertExcalidrawToMD(){await this.save(),this.plugin.openDrawing(await this.plugin.convertSingleExcalidrawToMD(this.file),"active-pane",!0)}onPaneMenu(A,e){this.excalidrawAPI&&this.getViewSelectedElements().some((A=>"text"===A.type))&&A.addItem((A=>{A.setTitle(t$d("OPEN_LINK")).setIcon("external-link").setSection("pane").onClick((A=>{this.handleLinkClick(this,A)}))})),this.compatibilityMode?A.addItem((A=>{A.setTitle(t$d("CONVERT_FILE")).onClick((()=>this.convertExcalidrawToMD())).setSection("pane")})):A.addItem((A=>{A.setTitle(t$d("OPEN_AS_MD")).setIcon("document").onClick((()=>{this.openAsMarkdown()})).setSection("pane")})).addItem((A=>{A.setTitle(t$d("EXPORT_EXCALIDRAW")).setIcon(ICON_NAME).onClick((async()=>{this.exportExcalidraw()})).setSection("pane")})),A.addItem((A=>{A.setTitle(t$d("SAVE_AS_PNG")).setIcon("save-png").setSection("pane").onClick((async A=>{if(this.getScene&&this.file)if(A[CTRL_OR_CMD]){const A=await this.png(this.getScene());if(!A)return;const e=new FileReader;e.readAsDataURL(A);const t=this;e.onloadend=function(){download(null,e.result,`${t.file.basename}.png`)}}else this.savePNG()})).setSection("pane")})).addItem((A=>{A.setTitle(t$d("SAVE_AS_SVG")).setIcon("save-svg").setSection("pane").onClick((async A=>{if(this.getScene&&this.file){if(A[CTRL_OR_CMD]){let A=await this.svg(this.getScene());return A?(A=embedFontsInSVG(A,this.plugin),void download(null,svgToBase64(A.outerHTML),`${this.file.basename}.svg`)):null}this.saveSVG()}}))})).addItem((A=>{A.setTitle(t$d("INSTALL_SCRIPT_BUTTON")).setIcon("ScriptEngine").setSection("pane").onClick((()=>{new ScriptInstallPrompt(this.plugin).open()}))})),super.onPaneMenu(A,e)}async getLibrary(){var A;const e=this.plugin.getStencilLibrary();return(null==e?void 0:e.library)?e.library:null!==(A=null==e?void 0:e.libraryItems)&&void 0!==A?A:[]}async instantiateExcalidraw(A){for(;!this.semaphores.scriptsReady;)await sleep(50);const e=this.plugin.getPackage(this.ownerWindow).react,t=this.plugin.getPackage(this.ownerWindow).reactDOM;this.clearDirty();const i=e.createElement((()=>{let t={x:0,y:0};const i=e.useRef(null),n=e.useRef(null),[a,r]=e.useState({width:void 0,height:void 0});let s=null,o=null,l=null,c=0,d=!1;this.toolsPanelRef=n,this.obsidianMenu=new ObsidianMenu(this.plugin,n);const h=()=>{let A,e;const t=new Promise(((t,i)=>{A=t,e=i}));return t.resolve=A,t.reject=e,t},g=e.useMemo((()=>({current:{readyPromise:h()}})),[]);e.useEffect((()=>{g.current.readyPromise.then((A=>{var e;this.excalidrawAPI=A,A.setLocalFont(this.plugin.settings.experimentalEnableFourthFont),this.loadSceneFiles(),this.updateContainerSize(null,!0),null===(e=this.excalidrawWrapperRef.current.firstElementChild)||void 0===e||e.focus(),this.addFullscreenchangeEvent(),this.initializeToolsIconPanelAfterLoading()}))}),[g]),this.excalidrawRef=g,this.excalidrawWrapperRef=i,e.useEffect((()=>{r({width:this.contentEl.clientWidth,height:this.contentEl.clientHeight});const A=()=>{try{r({width:this.contentEl.clientWidth,height:this.contentEl.clientHeight}),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.updatePosition(),this.ownerDocument!==document&&this.refresh()}catch(A){errorlog({where:"Excalidraw React-Wrapper, onResize",error:A})}};return this.ownerWindow.addEventListener("resize",A),()=>{var e;return null===(e=this.ownerWindow)||void 0===e?void 0:e.removeEventListener("resize",A)}}),[i]),this.getSelectedTextElement=()=>{var A;const e=this.excalidrawAPI;if(!(null==g?void 0:g.current)||!e)return{id:null,text:null};if(e.getAppState().viewModeEnabled){if(s){const A=s;return s=null,A}return{id:null,text:null}}const t=e.getSceneElements().filter((A=>A.id===Object.keys(e.getAppState().selectedElementIds)[0]));if(0===t.length)return{id:null,text:null};if("text"===t[0].type)return{id:t[0].id,text:t[0].text};if("image"===t[0].type)return{id:null,text:null};const i=null===(A=t[0].boundElements)||void 0===A?void 0:A.filter((A=>"text"===A.type));if((null==i?void 0:i.length)>0){const A=e.getSceneElements().filter((A=>A.id===i[0].id));if(A.length>0)return{id:A[0].id,text:A[0].text}}if(0===t[0].groupIds.length)return{id:null,text:null};const n=t[0].groupIds[0],a=e.getSceneElements().filter((A=>{var e;return null===(e=A.groupIds)||void 0===e?void 0:e.includes(n)})).filter((A=>"text"===A.type));return 0===a.length?{id:null,text:null}:{id:t[0].id,text:t[0].text}},this.getSelectedImageElement=()=>{const A=this.excalidrawAPI;if(!A)return{id:null,fileId:null};if(A.getAppState().viewModeEnabled){if(o){const A=o;return o=null,A}return{id:null,fileId:null}}const e=A.getSceneElements().filter((e=>e.id==Object.keys(A.getAppState().selectedElementIds)[0]));if(0===e.length)return{id:null,fileId:null};if("image"==e[0].type)return{id:e[0].id,fileId:e[0].fileId};if("text"===e[0].type)return{id:null,fileId:null};if(0===e[0].groupIds.length)return{id:null,fileId:null};const t=e[0].groupIds[0],i=A.getSceneElements().filter((A=>{var e;return null===(e=A.groupIds)||void 0===e?void 0:e.includes(t)})).filter((A=>"image"==A.type));return 0===i.length?{id:null,fileId:null}:{id:i[0].id,fileId:i[0].fileId}},this.getSelectedElementWithLink=()=>{const A=this.excalidrawAPI;if(!A)return{id:null,text:null};if(A.getAppState().viewModeEnabled){if(l){const A=l;return l=null,A}return{id:null,text:null}}const e=A.getSceneElements().filter((e=>e.id==Object.keys(A.getAppState().selectedElementIds)[0]));if(0===e.length)return{id:null,text:null};if(e[0].link)return{id:e[0].id,text:e[0].link};if(0===e[0].groupIds.length)return{id:null,text:null};const t=e[0].groupIds[0],i=A.getSceneElements().filter((A=>{var e;return null===(e=A.groupIds)||void 0===e?void 0:e.includes(t)})).filter((A=>A.link));return 0===i.length?{id:null,text:null}:{id:i[0].id,text:i[0].link}},this.addText=async(A,e,i=!0)=>{var n,a,r,s,o;const l=this.excalidrawAPI;if(!(null==g?void 0:g.current)||!l)return;const c=l.getAppState(),d=this.plugin.ea;d.reset(),d.style.strokeColor=null!==(n=c.currentItemStrokeColor)&&void 0!==n?n:"black",d.style.opacity=null!==(a=c.currentItemOpacity)&&void 0!==a?a:1,d.style.fontFamily=null!==(r=null!=e?e:c.currentItemFontFamily)&&void 0!==r?r:1,d.style.fontSize=null!==(s=c.currentItemFontSize)&&void 0!==s?s:20,d.style.textAlign=null!==(o=c.currentItemTextAlign)&&void 0!==o?o:"left";const h=d.addText(t.x,t.y,A);return await this.addElements(d.getElements(),!1,i),h},this.addElements=async(A,e=!1,i=!1,n,a=!1)=>{const r=this.excalidrawAPI;if(!(null==g?void 0:g.current)||!r)return!1;const s=A.filter((A=>"text"==A.type));for(let A=0;AA.id)),l=r.getSceneElements(),c=[];for(let e=0;eA.id===t))[0],c.push(t))}const d=a?l.concat(A.filter((A=>!c.includes(A.id)))):A.filter((A=>!c.includes(A.id))).concat(l);if(await this.updateScene({elements:d,commitToHistory:!0},!1,!0),n&&n!=={}){const A=[];Object.keys(n).forEach((e=>{if(A.push({mimeType:n[e].mimeType,id:n[e].id,dataURL:n[e].dataURL,created:n[e].created}),n[e].file){const A=new EmbeddedFile(this.plugin,this.file.path,n[e].file),t=r.getAppState();A.setImage(n[e].dataURL,n[e].mimeType,n[e].size,"dark"===t.theme,n[e].hasSVGwithBitmap),this.excalidrawData.setFile(n[e].id,A)}n[e].latex&&this.excalidrawData.setEquation(n[e].id,{latex:n[e].latex,isLoaded:!0})})),r.addFiles(A)}return i?await this.save(!1):this.setDirty(5),!0},this.getScene=()=>{const A=this.excalidrawAPI;if(!(null==g?void 0:g.current)||!A)return null;const e=A.getSceneElements(),t=A.getAppState(),i=A.getFiles();if(i){const A=e.filter((A=>"image"===A.type)).map((A=>A.fileId)),t=Object.keys(i).filter((e=>!A.contains(e)));t.forEach((A=>delete i[A]))}return{type:"excalidraw",version:2,source:"https://excalidraw.com",elements:e,appState:{theme:t.theme,viewBackgroundColor:t.viewBackgroundColor,currentItemStrokeColor:t.currentItemStrokeColor,currentItemBackgroundColor:t.currentItemBackgroundColor,currentItemFillStyle:t.currentItemFillStyle,currentItemStrokeWidth:t.currentItemStrokeWidth,currentItemStrokeStyle:t.currentItemStrokeStyle,currentItemRoughness:t.currentItemRoughness,currentItemOpacity:t.currentItemOpacity,currentItemFontFamily:t.currentItemFontFamily,currentItemFontSize:t.currentItemFontSize,currentItemTextAlign:t.currentItemTextAlign,currentItemStrokeSharpness:t.currentItemStrokeSharpness,currentItemStartArrowhead:t.currentItemStartArrowhead,currentItemEndArrowhead:t.currentItemEndArrowhead,currentItemLinearStrokeSharpness:t.currentItemLinearStrokeSharpness,gridSize:t.gridSize,colorPalette:t.colorPalette},prevTextMode:this.prevTextMode,files:i}},this.refresh=()=>{if(0===this.contentEl.clientWidth||0===this.contentEl.clientHeight)return;const A=this.excalidrawAPI;(null==g?void 0:g.current)&&A&&A.refresh()};let u={x:0,y:0},p=null;this.clearHoverPreview=()=>{if(p){const A=new MouseEvent("click",{view:this.ownerWindow,bubbles:!0,cancelable:!0});p.dispatchEvent(A),p=null}};const w=A=>{var e,t,i,n,a;const r=null===(e=app.dragManager.draggable)||void 0===e?void 0:e.files;return r&&r[0]==this.file&&(r.shift(),app.dragManager.draggable.title=`${r.length} files`),["file","files"].includes(null===(t=app.dragManager.draggable)||void 0===t?void 0:t.type)?"link":(null===(i=A.types)||void 0===i?void 0:i.includes("text/html"))||(null===(n=A.types)||void 0===n?void 0:n.includes("text/plain"))||(null===(a=A.types)||void 0===a?void 0:a.includes("Files"))?"copy":void 0};let m=!1;const f=()=>{if(s=getTextElementAtPointer(t,this),s&&s.id){const A=new MouseEvent("click",{ctrlKey:!0,metaKey:this.metaKeyDown,shiftKey:this.shiftKeyDown,altKey:this.altKeyDown});return this.handleLinkClick(this,A),void(s=null)}if(o=getImageElementAtPointer(t,this),o&&o.id){const A=new MouseEvent("click",{ctrlKey:!0,metaKey:this.metaKeyDown,shiftKey:this.shiftKeyDown,altKey:this.altKeyDown});return this.handleLinkClick(this,A),void(o=null)}if(l=getElementWithLinkAtPointer(t,this),l&&l.id){const A=new MouseEvent("click",{ctrlKey:!0,metaKey:this.metaKeyDown,shiftKey:this.shiftKeyDown,altKey:this.altKeyDown});return this.handleLinkClick(this,A),void(l=null)}};let B=null;const E=(A,e)=>{var i,n;if(!B)return;if(null===(n=null===(i=this.excalidrawAPI)||void 0===i?void 0:i.getAppState())||void 0===n?void 0:n.editingElement)return;if(this.semaphores.wheelTimeout)return;if(!A){if(!t)return;A="";const i=getTextElementAtPointer(t,this);if(i&&i.text){e=this.excalidrawAPI.getSceneElements().filter((A=>A.id===i.id))[0];const t=this.textMode===TextMode.parsed?this.excalidrawData.getRawText(i.id):i.text;if(!t)return;if(t.match(REG_LINKINDEX_HYPERLINK))return;const n=REGEX_LINK.getRes(t).next();if(!n.value)return;if((A=REGEX_LINK.getLink(n)).match(REG_LINKINDEX_HYPERLINK))return}else{const i=getImageElementAtPointer(t,this);if(e=this.excalidrawAPI.getSceneElements().filter((A=>A.id===i.id))[0],!i||!i.fileId)return;if(!this.excalidrawData.hasFile(i.fileId))return;const n=this.excalidrawData.getFile(i.fileId),a=n.linkParts.ref?`#${n.linkParts.isBlockRef?"^":""}${n.linkParts.ref}`:"";A=this.excalidrawData.getFile(i.fileId).file.path+a}}if(this.getHookServer().onLinkHoverHook)try{if(!this.getHookServer().onLinkHoverHook(e,A,this,this.getHookServer()))return}catch(A){errorlog({where:"ExcalidrawView.showHoverPreview",fn:this.getHookServer().onLinkHoverHook,error:A})}if(this.semaphores.hoverSleep)return;const a=app.metadataCache.getFirstLinkpathDest(A.split("#")[0],this.file.path);if(!a)return;if(this.ownerDocument.querySelector(`div.popover-title[data-path="${a.path}"]`))return;this.semaphores.hoverSleep=!0;const r=this;if(setTimeout((()=>r.semaphores.hoverSleep=!1),500),this.plugin.hover.linkText=A,this.plugin.hover.sourcePath=this.file.path,p=this.contentEl,app.workspace.trigger("hover-link",{event:B,source:"excalidraw",hoverParent:p,targetEl:p,linktext:this.plugin.hover.linkText,sourcePath:this.plugin.hover.sourcePath}),u=t,this.isFullscreen()){const A=this;setTimeout((()=>{var e,t,i,n;const r=null!==(n=null===(i=null===(t=null===(e=this.ownerDocument.querySelector(`div.popover-title[data-path="${a.path}"]`))||void 0===e?void 0:e.parentElement)||void 0===t?void 0:t.parentElement)||void 0===i?void 0:i.parentElement)&&void 0!==n?n:this.ownerDocument.body.querySelector("div.popover");r&&A.contentEl.append(r)}),400)}},{Excalidraw:C}=this.plugin.getPackage(this.ownerWindow).excalidrawLib,b=e.createElement("div",{className:"excalidraw-wrapper",ref:i,key:"abc",tabIndex:0,onKeyDown:A=>{A.target!==b.ref.current&&(this.isFullscreen()&&A.keyCode===KEYCODE.ESC&&this.exitFullscreen(),!A[CTRL_OR_CMD]||A.shiftKey||A.altKey||E())},onPointerDown:A=>{(A[CTRL_OR_CMD]||A.metaKey)&&(this.plugin.settings.allowCtrlClick||A.metaKey)&&setTimeout((()=>{(this.getSelectedTextElement().id||this.getSelectedImageElement().id||this.getSelectedElementWithLink().id)&&this.handleLinkClick(this,A)}))},onMouseMove:A=>{B=A.nativeEvent},onMouseOver:()=>{this.clearHoverPreview()},onDragOver:A=>{const e=w(A.dataTransfer);if(e)return A.dataTransfer.dropEffect=e,A.preventDefault(),!1},onDragLeave:()=>{}},e.createElement(C,{ref:g,width:a.width,height:a.height,UIOptions:{canvasActions:{loadScene:!1,saveScene:!1,saveAsScene:!1,export:{saveFileToDisk:!1},saveAsImage:!1,saveToActiveFile:!1}},initState:null==A?void 0:A.appState,initialData:A,detectScroll:!0,onPointerUpdate:A=>{if(t=A.pointer,p&&(Math.abs(u.x-A.pointer.x)>50||Math.abs(u.y-A.pointer.y)>50)&&this.clearHoverPreview(),m){if(!d&&"down"===A.button){if(d=!0,this.ctrlKeyDown||this.metaKeyDown)return void f();const A=(new Date).getTime();return A-c<600&&f(),void(c=A)}"up"===A.button&&(d=!1),(this.ctrlKeyDown||this.excalidrawAPI.getAppState().isViewModeEnabled&&this.plugin.settings.hoverPreviewWithoutCTRL)&&E()}},libraryReturnUrl:"app://obsidian.md",autoFocus:!0,onChange:(A,e)=>{if(m=e.viewModeEnabled,this.semaphores.justLoaded)return this.semaphores.justLoaded=!1,this.semaphores.preventAutozoom||this.zoomToFit(!1),this.previousSceneVersion=this.getSceneVersion(A),void(this.previousBackgroundColor=e.viewBackgroundColor);if(!this.semaphores.dirty&&null===e.editingElement&&null===e.editingLinearElement){const t=this.getSceneVersion(A);((t>0||0===t&&A.length>0)&&t!==this.previousSceneVersion||e.viewBackgroundColor!==this.previousBackgroundColor)&&(this.previousSceneVersion=t,this.previousBackgroundColor=e.viewBackgroundColor,this.setDirty(6))}},onLibraryChange:A=>{(async()=>{const e={type:"excalidrawlib",version:2,source:"https://excalidraw.com",libraryItems:A};this.plugin.setStencilLibrary(e),await this.plugin.saveSettings()})()},renderTopRightUI:this.obsidianMenu.renderButton,onPaste:A=>{if(A.elements){const A=this;setTimeout((()=>A.save(!1)),300)}return!0},onThemeChange:async A=>{var e;this.excalidrawData.scene.appState.theme=A,this.loadSceneFiles(),null===(e=null==n?void 0:n.current)||void 0===e||e.setTheme(A)},ownerDocument:this.ownerDocument,ownerWindow:this.ownerWindow,onDrop:A=>{const e=this.excalidrawAPI;if(!e)return!1;const i=e.getAppState();t=viewportCoordsToSceneCoords({clientX:A.clientX,clientY:A.clientY},i);const n=app.dragManager.draggable,a=(e,i,a)=>{if(!this.getHookServer().onDropHook)return!1;try{return this.getHookServer().onDropHook({ea:this.getHookServer(),event:A,draggable:n,type:e,payload:{files:i,text:a},excalidrawFile:this.file,view:this,pointerPosition:t})}catch(A){return new obsidian.Notice("on drop hook error. See console log for details"),errorlog({where:"ExcalidrawView.onDrop",error:A}),!1}};switch(A[CTRL_OR_CMD]=A.shiftKey||A[CTRL_OR_CMD],null==n?void 0:n.type){case"file":if(!a("file",[n.file],null)){if(n.file.path.match(REG_LINKINDEX_INVALIDCHARS))return new obsidian.Notice(t$d("FILENAME_INVALID_CHARS"),4e3),!1;if(A[CTRL_OR_CMD]&&(IMAGE_TYPES.contains(n.file.extension)||"md"===n.file.extension)){const A=this.plugin.ea;return A.reset(),A.setView(this),(async()=>{A.canvas.theme=e.getAppState().theme,await A.addImage(t.x,t.y,n.file),A.addElementsToView(!1,!1,!0)})(),!1}this.addText(`[[${app.metadataCache.fileToLinktext(n.file,this.file.path,!0)}]]`)}return!1;case"files":return a("file",n.files,null)||(async()=>{if(A[CTRL_OR_CMD]){const A=this.plugin.ea;A.reset(),A.setView(this),A.canvas.theme=e.getAppState().theme;let i=0;for(const e of n.files)(IMAGE_TYPES.contains(e.extension)||"md"===e.extension)&&(await A.addImage(t.x+50*i,t.y+50*i,e),i++,await A.addElementsToView(!1,!1,!0))}else{for(const A of n.files)await this.addText(`[[${app.metadataCache.fileToLinktext(A,this.file.path,!0)}]]`,void 0,!1),t.y+=2*i.currentItemFontSize;this.save(!1)}})(),!1}if(A.dataTransfer.types.includes("Files")){if(A.dataTransfer.types.includes("text/plain")){const e=A.dataTransfer.getData("text");if(e&&a("text",null,e))return!1}return!0}if(A.dataTransfer.types.includes("text/plain")){const e=A.dataTransfer.getData("text");if(!e)return!0;if(!a("text",null,e)){if(this.plugin.settings.iframelyAllowed&&e.match(/^https?:\/\/\S*$/))return(async()=>{var A;const t=await this.addText(e),i=`http://iframely.server.crestify.com/iframely?url=${e}`,n=JSON.parse(await obsidian.request({url:i}));if(!n||n.error||!(null===(A=n.meta)||void 0===A?void 0:A.title))return!1;const a=this.plugin.ea;a.reset(),a.setView(this);const r=a.getViewElements().filter((A=>A.id===t));1===r.length&&(r[0].text=r[0].originalText=r[0].rawText=`[${n.meta.title}](${e})`,a.copyViewElementsToEAforEditing(r),a.addElementsToView(!1,!1,!1))})(),!1;if(e.startsWith("obsidian://open?vault=")){const t=A.dataTransfer.getData("text/html");if(t){const A=t.match(/href="app:\/\/obsidian\.md\/(.*?)"/);if(2===A.length){const e=decodeURIComponent(A[1]).split("#"),t=app.vault.getAbstractFileByPath(e[0]);if(t&&t instanceof obsidian.TFile){const A=app.metadataCache.fileToLinktext(t,this.file.path);return void this.addText(`[[${A+(e.length>1?"#"+e[1]+"|"+A:"")}]]`)}return this.addText(`[[${decodeURIComponent(A[1])}]]`),!1}}const i=e.split("file=");if(2===i.length)return this.addText(`[[${decodeURIComponent(i[1])}]]`),!1}this.addText(e.replace(/(!\[\[.*#[^\]]*\]\])/g,"$1{40}"))}return!1}return!a("unknown",null,null)},onBeforeTextEdit:A=>{var e;if(clearTimeout(this.isEditingTextResetTimer),this.isEditingTextResetTimer=null,this.semaphores.isEditingText=!0,this.compatibilityMode)return null!==(e=A.originalText)&&void 0!==e?e:A.text;return this.excalidrawData.getRawText(A.id)||A.rawText},onBeforeTextSubmit:(A,e,t,i)=>{const n=this.excalidrawAPI;if(!n)return[null,null,null];const a="PASTING EXCALIDRAW ELEMENTS AS A TEXT ELEMENT IS NOT ALLOWED";if(e.startsWith('{"type":"excalidraw/clipboard","elements":[{"'))return setTimeout((async()=>{const e=this.excalidrawAPI.getSceneElements(),t=e.filter((e=>e.id===A.id));if(1===t.length){const A=cloneElement(t[0]);A.rawText=a,e[e.indexOf(t[0])]=A,this.excalidrawData.setTextElement(A.id,a,a,(()=>{})),await this.updateScene({elements:e}),n.history.clear()}})),[a,a,null];if(this.semaphores.isEditingText=!0,this.isEditingTextResetTimer=setTimeout((()=>{this.semaphores.isEditingText=!1,this.isEditingTextResetTimer=null}),1500),i)return this.excalidrawData.deleteTextElement(A.id),this.setDirty(7),[null,null,null];const r=A.containerId;if(e!==A.text||t!==A.originalText||!this.excalidrawData.getRawText(A.id)){this.setDirty(8);const[i,a,s]=this.excalidrawData.setTextElement(A.id,e,t,(async(e,t)=>{if(this.textMode===TextMode.raw)return;const i=this.excalidrawAPI.getSceneElements(),a=i.filter((e=>e.id===A.id));if(1===a.length){const A=cloneElement(a[0]);this.excalidrawData.updateTextElement(A,e,t,!0),i[i.indexOf(a[0])]=A,await this.updateScene({elements:i}),A.containerId&&this.updateContainerSize(A.containerId)}n.history.clear()}));return i?(r&&this.updateContainerSize(r,!0),this.textMode===TextMode.raw?[e,t,s]:e===i?s?[i,a,s]:[null,null,null]:(n.history.clear(),[i,a,s])):[null,null,null]}return r&&this.updateContainerSize(r,!0),this.textMode===TextMode.parsed?this.excalidrawData.getParsedText(A.id):[null,null,null]},onLinkOpen:async(A,e)=>{var t;if(e.preventDefault(),!A)return;const i=A.link;if(!i||""===i)return;const n=this.ownerDocument.body.querySelector("body>div.excalidraw-tooltip,div.excalidraw-tooltip--visible");n&&this.ownerDocument.body.removeChild(n);const a=null===(t=null==e?void 0:e.detail)||void 0===t?void 0:t.nativeEvent;if(this.getHookServer().onLinkClickHook)try{if(!this.getHookServer().onLinkClickHook(A,A.link,a,this,this.getHookServer()))return}catch(e){errorlog({where:"ExcalidrawView.onLinkOpen",fn:this.getHookServer().onLinkClickHook,error:e})}i.startsWith("md://")||i.startsWith("[[")?(async()=>{const A=i.match(/(md:\/\/)?\[\[(?.*?)\]\]/);if(!A)return;let e=A.groups.link,t=null;if(e.search("#")>-1){const A=getLinkParts(e,this.file);t=`#${A.isBlockRef?"^":""}${A.ref}`,e=A.path}if(e.match(REG_LINKINDEX_INVALIDCHARS))return void new obsidian.Notice(t$d("FILENAME_INVALID_CHARS"),4e3);const n=app.metadataCache.getFirstLinkpathDest(e,this.file.path),r=a.shiftKey||a[CTRL_OR_CMD]||this.linksAlwaysOpenInANewPane||a.metaKey;if(r&&this.isFullscreen()&&this.exitFullscreen(),n)if(n===this.file){if(t)return void this.setEphemeralState({subpath:t});this.zoomToFit(!1)}else try{const A=r?a.metaKey&&!app.isMobile?app.workspace.openPopoutLeaf():getNewOrAdjacentLeaf(this.plugin,this.leaf):this.leaf;await A.openFile(n,t?{active:!1,eState:{subpath:t}}:{active:!1})}catch(A){new obsidian.Notice(A,4e3)}else new NewFileActions(this.plugin,e,r,!app.isMobile&&a.metaKey,this).open()})():window.open(i)},onLinkHover:(A,e)=>{if(A&&(this.plugin.settings.hoverPreviewWithoutCTRL||e[CTRL_OR_CMD])){B=e,B.ctrlKey=!0;const t=A.link;if(!t||""===t)return;if(t.startsWith("md://")||t.startsWith("[[")){const e=t.match(/(md:\/\/)?\[\[(?.*?)\]\]/);if(!e)return;let i=e.groups.link;E(i,A)}}},onViewModeChange:A=>{var e,t;if(null===(t=null===(e=this.toolsPanelRef)||void 0===e?void 0:e.current)||void 0===t||t.setExcalidrawViewMode(A),this.getHookServer().onViewModeChangeHook)try{this.getHookServer().onViewModeChangeHook(A,this,this.getHookServer())}catch(A){errorlog({where:"ExcalidrawView.onViewModeChange",fn:this.getHookServer().onViewModeChangeHook,error:A})}}}),e.createElement(ToolsPanel,{ref:n,visible:!1,view:this,centerPointer:()=>{const A=this.excalidrawAPI;if(!g||!g.current||!A)return;const e=A.getAppState(),{width:i,height:n}=e;t=viewportCoordsToSceneCoords({clientX:i/2,clientY:n/2},e)}})),v=e.useRef(new ResizeObserver((A=>{if(!n||!n.current)return;const{width:e,height:t}=A[0].contentRect,i=n.current.onRightEdge?n.current.previousWidth-e:0,a=n.current.onBottomEdge?n.current.previousHeight-t:0;n.current.updatePosition(a,i)})));return e.useEffect((()=>((null==n?void 0:n.current)&&v.current.observe(n.current.containerRef.current),()=>{v.current.unobserve(n.current.containerRef.current)})),[n,v]),e.createElement(e.Fragment,null,b)}));t.render(i,this.contentEl,(()=>{}))}updateContainerSize(A,e=!1){const t=this.excalidrawAPI;if(!t)return;const i=()=>{const e=A?t.getSceneElements().filter((e=>e.id===A)):t.getSceneElements().filter((A=>{var e;return null===(e=A.boundElements)||void 0===e?void 0:e.map((A=>A.type)).includes("text")}));e.length>0&&(this.initialContainerSizeUpdate&&(this.semaphores.justLoaded=!0),t.updateContainerSize(e)),this.initialContainerSizeUpdate=!1};e?setTimeout((()=>i()),50):i()}zoomToFit(A=!0){const e=this.excalidrawAPI;if(!e||!this.excalidrawRef||this.semaphores.isEditingText)return;const t=this.plugin.settings.zoomToFitMaxLevel,i=e.getSceneElements().filter((A=>A.width<1e4&&A.height<1e4));A?setTimeout((()=>e.zoomToFit(i,t,this.isFullscreen()?0:.05)),100):e.zoomToFit(i,t,this.isFullscreen()?0:.05)}async toggleTrayMode(){const A=this.excalidrawAPI;if(!A)return!1;const e=A.getAppState();A.updateScene({appState:{trayModeEnabled:!e.trayModeEnabled}}),await this.plugin.loadSettings(),this.plugin.settings.defaultTrayMode=!e.trayModeEnabled,this.plugin.saveSettings()}selectElementsMatchingQuery(A,e,t=!0,i=!1,n=!1){let a=getTextElementsMatchingQuery(A.filter((A=>"text"===A.type)),e,i);if(0!==a.length){if(n){const e=this.plugin.ea.getElementsInTheSameGroupWithElement(a[0],A);e.length>0&&(a=e)}this.zoomToElements(t,a)}else new obsidian.Notice("I could not find a matching text element")}zoomToElements(A,e){const t=this.excalidrawAPI;if(!t)return;const i=this.plugin.settings.zoomToFitMaxLevel;this.ownerWindow,A&&t.selectElements(e),t.zoomToFit(e,i,.05)}getViewSelectedElements(){var A;const e=this.excalidrawAPI;if(!e)return[];const t=null===(A=e.getAppState())||void 0===A?void 0:A.selectedElementIds;if(!t)return[];const i=Object.keys(t);if(!i)return[];const n=e.getSceneElements().filter((A=>i.includes(A.id))),a=n.filter((A=>A.boundElements&&A.boundElements.filter((A=>"text"===A.type)).length>0)).map((A=>A.boundElements.filter((A=>"text"===A.type)).map((A=>A.id))[0])),r=n.map((A=>A.id)).concat(a);return e.getSceneElements().filter((A=>r.contains(A.id)))}async copyLinkToSelectedElementToClipboard(A){const e=this.getViewSelectedElements();if(e.length<1)return void new obsidian.Notice(t$d("INSERT_LINK_TO_ELEMENT_ERROR"));let t;if(2===e.length){const A=e.filter((A=>"text"===A.type));1===A.length&&A[0].containerId&&1===e.filter((A=>A.boundElements.some((A=>"text"===A.type)))).length&&(t=A[0].id)}t||(t=1===e.length?e[0].id:this.plugin.ea.getLargestElement(e).id);const i=await ScriptEngine.inputPrompt(app,"Set link alias","Leave empty if you do not want to set an alias","");navigator.clipboard.writeText(`[[${this.file.path}#^${A}${t}${i?`|${i}`:""}]]`),new obsidian.Notice(t$d("INSERT_LINK_TO_ELEMENT_READY"))}async updateScene(A,e=!1,t=!1){const i=this.excalidrawAPI;if(!i)return;const n=A.elements&&e;n&&(A.elements=i.restore(A).elements);try{i.updateScene(A)}catch(e){if(errorlog({where:"ExcalidrawView.updateScene 1st attempt",fn:this.updateScene,error:e,scene:A,willDoSecondAttempt:!n}),n)warningUnknowSeriousError();else try{A.elements=i.restore(A).elements,i.updateScene(A)}catch(e){errorlog({where:"ExcalidrawView.updateScene 2nd attempt",fn:this.updateScene,error:e,scene:A}),warningUnknowSeriousError()}}}}function getTextMode(A){return A.search("excalidraw-plugin: parsed\n")>-1||A.search("excalidraw-plugin: locked\n")>-1?TextMode.parsed:TextMode.raw}const DEFAULT_SETTINGS={folder:"Excalidraw",embedUseExcalidrawFolder:!1,templateFilePath:"Excalidraw/Template.excalidraw",scriptFolderPath:"Excalidraw/Scripts",compress:!1,autosave:!0,autosaveInterval:15e3,drawingFilenamePrefix:"Drawing ",drawingEmbedPrefixWithFilename:!0,drawingFilnameEmbedPostfix:" ",drawingFilenameDateTime:"YYYY-MM-DD HH.mm.ss",useExcalidrawExtension:!0,displaySVGInPreview:!0,displayExportedImageIfAvailable:!1,previewMatchObsidianTheme:!1,width:"400",isLeftHanded:!1,matchTheme:!1,matchThemeAlways:!1,matchThemeTrigger:!1,defaultMode:"normal",defaultPenMode:"never",zoomToFitOnResize:!0,zoomToFitMaxLevel:2,linkPrefix:"📍",urlPrefix:"🌐",hoverPreviewWithoutCTRL:!1,linkOpacity:1,openInAdjacentPane:!1,openInMainWorkspace:!0,showLinkBrackets:!0,allowCtrlClick:!0,forceWrap:!1,pageTransclusionCharLimit:200,wordWrappingDefault:0,iframelyAllowed:!0,pngExportScale:1,exportWithTheme:!0,exportWithBackground:!0,exportPaddingSVG:10,keepInSync:!1,autoexportSVG:!1,autoexportPNG:!1,autoExportLightAndDark:!1,autoexportExcalidraw:!1,embedType:"excalidraw",embedWikiLink:!0,syncExcalidraw:!1,experimentalFileType:!1,experimentalFileTag:"✏️",experimentalLivePreview:!0,experimentalEnableFourthFont:!1,experimantalFourthFont:"Virgil",fieldSuggester:!0,compatibilityMode:!1,drawingOpenCount:0,library:"deprecated",library2:{type:"excalidrawlib",version:2,source:"https://excalidraw.com",libraryItems:[]},imageElementNotice:!0,mdSVGwidth:500,mdSVGmaxHeight:800,mdFont:"Virgil",mdFontColor:"Black",mdBorderColor:"Black",mdCSS:"",scriptEngineSettings:{},defaultTrayMode:!1,previousRelease:"1.6.13",showReleaseNotes:!0,showNewVersionNotification:!0,mathjaxSourceURL:"https://cdn.jsdelivr.net/npm/mathjax@3.2.1/es5/tex-svg.js"},fragWithHTML=A=>createFragment((e=>e.createDiv().innerHTML=A));class ExcalidrawSettingTab extends obsidian.PluginSettingTab{constructor(A,e){super(A,e),this.requestEmbedUpdate=!1,this.requestReloadDrawings=!1,this.reloadMathJax=!1,this.plugin=e}applySettingsUpdate(A=!1){A&&(this.requestReloadDrawings=!0)}async hide(){if(this.plugin.settings.scriptFolderPath=obsidian.normalizePath(this.plugin.settings.scriptFolderPath),"/"!==this.plugin.settings.scriptFolderPath&&""!==this.plugin.settings.scriptFolderPath||(this.plugin.settings.scriptFolderPath="Excalidraw/Scripts"),this.plugin.saveSettings(),this.requestReloadDrawings){const A=app.workspace.getLeavesOfType("excalidraw");for(const e of A)e.view instanceof ExcalidrawView&&(await e.view.save(!1),await e.view.reload(!0));this.requestEmbedUpdate=!0}this.requestEmbedUpdate&&this.plugin.triggerEmbedUpdates(),this.plugin.scriptEngine.updateScriptPath(),this.reloadMathJax&&this.plugin.loadMathJax()}async display(){var A;await this.plugin.loadSettings(),this.requestEmbedUpdate=!1,this.requestReloadDrawings=!1;const{containerEl:e}=this;this.containerEl.empty();const t=e.createDiv("coffee");t.addClass("ex-coffee-div"),t.createEl("a",{href:"https://ko-fi.com/zsolt"}).createEl("img",{attr:{src:"https://cdn.ko-fi.com/cdn/kofi3.png?v=3"}}).height=45,new obsidian.Setting(e).setName(t$d("RELEASE_NOTES_NAME")).setDesc(fragWithHTML(t$d("RELEASE_NOTES_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.showReleaseNotes).onChange((async A=>{this.plugin.settings.showReleaseNotes=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("NEWVERSION_NOTIFICATION_NAME")).setDesc(fragWithHTML(t$d("NEWVERSION_NOTIFICATION_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.showNewVersionNotification).onChange((async A=>{this.plugin.settings.showNewVersionNotification=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("FOLDER_NAME")).setDesc(fragWithHTML(t$d("FOLDER_DESC"))).addText((A=>A.setPlaceholder("Excalidraw").setValue(this.plugin.settings.folder).onChange((async A=>{this.plugin.settings.folder=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("FOLDER_EMBED_NAME")).setDesc(fragWithHTML(t$d("FOLDER_EMBED_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.embedUseExcalidrawFolder).onChange((async A=>{this.plugin.settings.embedUseExcalidrawFolder=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("TEMPLATE_NAME")).setDesc(fragWithHTML(t$d("TEMPLATE_DESC"))).addText((A=>A.setPlaceholder("Excalidraw/Template").setValue(this.plugin.settings.templateFilePath).onChange((async A=>{this.plugin.settings.templateFilePath=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("SCRIPT_FOLDER_NAME")).setDesc(fragWithHTML(t$d("SCRIPT_FOLDER_DESC"))).addText((A=>A.setPlaceholder("Excalidraw/Scripts").setValue(this.plugin.settings.scriptFolderPath).onChange((async A=>{this.plugin.settings.scriptFolderPath=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("COMPRESS_NAME")).setDesc(fragWithHTML(t$d("COMPRESS_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.compress).onChange((async A=>{this.plugin.settings.compress=A,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("FILENAME_HEAD")}),e.createDiv("",(A=>{A.innerHTML=t$d("FILENAME_DESC")}));const i=()=>`${t$d("FILENAME_SAMPLE")}${getDrawingFilename(this.plugin.settings)}
${t$d("FILENAME_EMBED_SAMPLE")}${getEmbedFilename("{NOTE_NAME}",this.plugin.settings)}`,n=e.createEl("p",{text:""});let a,r,s,o,l;n.innerHTML=i(),new obsidian.Setting(e).setName(t$d("FILENAME_PREFIX_NAME")).setDesc(fragWithHTML(t$d("FILENAME_PREFIX_DESC"))).addText((A=>A.setPlaceholder("Drawing ").setValue(this.plugin.settings.drawingFilenamePrefix).onChange((async e=>{this.plugin.settings.drawingFilenamePrefix=e.replaceAll(/[<>:"/\\|?*]/g,"_"),A.setValue(this.plugin.settings.drawingFilenamePrefix),n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("FILENAME_PREFIX_EMBED_NAME")).setDesc(fragWithHTML(t$d("FILENAME_PREFIX_EMBED_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.drawingEmbedPrefixWithFilename).onChange((async A=>{this.plugin.settings.drawingEmbedPrefixWithFilename=A,n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("FILENAME_POSTFIX_NAME")).setDesc(fragWithHTML(t$d("FILENAME_POSTFIX_DESC"))).addText((A=>A.setPlaceholder("").setValue(this.plugin.settings.drawingFilnameEmbedPostfix).onChange((async e=>{this.plugin.settings.drawingFilnameEmbedPostfix=e.replaceAll(/[<>:"/\\|?*]/g,"_"),A.setValue(this.plugin.settings.drawingFilnameEmbedPostfix),n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("FILENAME_DATE_NAME")).setDesc(fragWithHTML(t$d("FILENAME_DATE_DESC"))).addText((A=>A.setPlaceholder("YYYY-MM-DD HH.mm.ss").setValue(this.plugin.settings.drawingFilenameDateTime).onChange((async e=>{this.plugin.settings.drawingFilenameDateTime=e.replaceAll(/[<>:"/\\|?*]/g,"_"),A.setValue(this.plugin.settings.drawingFilenameDateTime),n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("FILENAME_EXCALIDRAW_EXTENSION_NAME")).setDesc(fragWithHTML(t$d("FILENAME_EXCALIDRAW_EXTENSION_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.useExcalidrawExtension).onChange((async A=>{this.plugin.settings.useExcalidrawExtension=A,n.innerHTML=i(),this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("DISPLAY_HEAD")}),new obsidian.Setting(e).setName(t$d("LEFTHANDED_MODE_NAME")).setDesc(fragWithHTML(t$d("LEFTHANDED_MODE_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.isLeftHanded).onChange((async A=>{this.plugin.settings.isLeftHanded=A,setLeftHandedMode(A),setTimeout((()=>setLeftHandedMode(A))),this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("MATCH_THEME_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.matchTheme).onChange((async A=>{this.plugin.settings.matchTheme=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("MATCH_THEME_ALWAYS_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_ALWAYS_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.matchThemeAlways).onChange((async A=>{this.plugin.settings.matchThemeAlways=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("MATCH_THEME_TRIGGER_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_TRIGGER_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.matchThemeTrigger).onChange((async A=>{this.plugin.settings.matchThemeTrigger=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("DEFAULT_OPEN_MODE_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_OPEN_MODE_DESC"))).addDropdown((A=>A.addOption("normal","Normal Mode").addOption("zen","Zen Mode").addOption("view","View Mode").setValue(this.plugin.settings.defaultMode).onChange((async A=>{this.plugin.settings.defaultMode=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("DEFAULT_PEN_MODE_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_PEN_MODE_DESC"))).addDropdown((A=>A.addOption("never","Never").addOption("mobile","On Obsidian Mobile").addOption("always","Always").setValue(this.plugin.settings.defaultPenMode).onChange((async A=>{this.plugin.settings.defaultPenMode=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("ZOOM_TO_FIT_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.zoomToFitOnResize).onChange((async A=>{this.plugin.settings.zoomToFitOnResize=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("ZOOM_TO_FIT_MAX_LEVEL_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_MAX_LEVEL_DESC"))).addSlider((A=>A.setLimits(.5,10,.5).setValue(this.plugin.settings.zoomToFitMaxLevel).onChange((async A=>{a.innerText=` ${A.toString()}`,this.plugin.settings.zoomToFitMaxLevel=A,this.applySettingsUpdate()})))).settingEl.createDiv("",(A=>{a=A,A.style.minWidth="2.3em",A.style.textAlign="right",A.innerText=` ${this.plugin.settings.zoomToFitMaxLevel.toString()}`})),this.containerEl.createEl("h1",{text:t$d("LINKS_HEAD")}),this.containerEl.createEl("span",void 0,(A=>A.innerHTML=t$d("LINKS_DESC"))),new obsidian.Setting(e).setName(t$d("ADJACENT_PANE_NAME")).setDesc(fragWithHTML(t$d("ADJACENT_PANE_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.openInAdjacentPane).onChange((async A=>{this.plugin.settings.openInAdjacentPane=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("MAINWORKSPACE_PANE_NAME")).setDesc(fragWithHTML(t$d("MAINWORKSPACE_PANE_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.openInMainWorkspace).onChange((async A=>{this.plugin.settings.openInMainWorkspace=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(fragWithHTML(t$d("LINK_BRACKETS_NAME"))).setDesc(fragWithHTML(t$d("LINK_BRACKETS_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.showLinkBrackets).onChange((async A=>{this.plugin.settings.showLinkBrackets=A,this.applySettingsUpdate(!0)})))),new obsidian.Setting(e).setName(t$d("LINK_PREFIX_NAME")).setDesc(fragWithHTML(t$d("LINK_PREFIX_DESC"))).addText((A=>A.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.linkPrefix).onChange((A=>{this.plugin.settings.linkPrefix=A,this.applySettingsUpdate(!0)})))),new obsidian.Setting(e).setName(t$d("URL_PREFIX_NAME")).setDesc(fragWithHTML(t$d("URL_PREFIX_DESC"))).addText((A=>A.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.urlPrefix).onChange((async A=>{this.plugin.settings.urlPrefix=A,this.applySettingsUpdate(!0)})))),new obsidian.Setting(e).setName(t$d("LINKOPACITY_NAME")).setDesc(fragWithHTML(t$d("LINKOPACITY_DESC"))).addSlider((A=>A.setLimits(0,1,.05).setValue(this.plugin.settings.linkOpacity).onChange((async A=>{r.innerText=` ${A.toString()}`,this.plugin.settings.linkOpacity=A,this.applySettingsUpdate(!0)})))).settingEl.createDiv("",(A=>{r=A,A.style.minWidth="2.3em",A.style.textAlign="right",A.innerText=` ${this.plugin.settings.linkOpacity.toString()}`})),new obsidian.Setting(e).setName(t$d("HOVERPREVIEW_NAME")).setDesc(fragWithHTML(t$d("HOVERPREVIEW_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.hoverPreviewWithoutCTRL).onChange((async A=>{this.plugin.settings.hoverPreviewWithoutCTRL=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("LINK_CTRL_CLICK_NAME")).setDesc(fragWithHTML(t$d("LINK_CTRL_CLICK_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.allowCtrlClick).onChange((async A=>{this.plugin.settings.allowCtrlClick=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("TRANSCLUSION_WRAP_NAME")).setDesc(fragWithHTML(t$d("TRANSCLUSION_WRAP_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.forceWrap).onChange((async A=>{this.plugin.settings.forceWrap=A,this.applySettingsUpdate(!0)})))).descEl.innerHTML=`![[doc#^ref]]{number} ${t$d("TRANSCLUSION_WRAP_DESC")}`,new obsidian.Setting(e).setName(t$d("PAGE_TRANSCLUSION_CHARCOUNT_NAME")).setDesc(fragWithHTML(t$d("PAGE_TRANSCLUSION_CHARCOUNT_DESC"))).addText((A=>A.setPlaceholder("Enter a number").setValue(this.plugin.settings.pageTransclusionCharLimit.toString()).onChange((async e=>{const t=parseInt(e);if(isNaN(t)&&""!==e)A.setValue(this.plugin.settings.pageTransclusionCharLimit.toString());else{if(this.requestEmbedUpdate=!0,""===e)return this.plugin.settings.pageTransclusionCharLimit=10,void this.applySettingsUpdate(!0);this.plugin.settings.pageTransclusionCharLimit=t,A.setValue(this.plugin.settings.pageTransclusionCharLimit.toString()),this.applySettingsUpdate(!0)}})))),new obsidian.Setting(e).setName(t$d("TRANSCLUSION_DEFAULT_WRAP_NAME")).setDesc(fragWithHTML(t$d("TRANSCLUSION_DEFAULT_WRAP_DESC"))).addText((A=>A.setPlaceholder("Enter a number").setValue(this.plugin.settings.wordWrappingDefault.toString()).onChange((async e=>{const t=parseInt(e);if(isNaN(t)&&""!==e)A.setValue(this.plugin.settings.wordWrappingDefault.toString());else{if(this.requestEmbedUpdate=!0,""===e)return this.plugin.settings.wordWrappingDefault=0,void this.applySettingsUpdate(!0);this.plugin.settings.wordWrappingDefault=t,A.setValue(this.plugin.settings.wordWrappingDefault.toString()),this.applySettingsUpdate(!0)}})))),new obsidian.Setting(e).setName(t$d("GET_URL_TITLE_NAME")).setDesc(fragWithHTML(t$d("GET_URL_TITLE_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.iframelyAllowed).onChange((async A=>{this.plugin.settings.iframelyAllowed=A,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("MD_HEAD")}),this.containerEl.createEl("p",{text:t$d("MD_HEAD_DESC")}),new obsidian.Setting(e).setName(t$d("MD_TRANSCLUDE_WIDTH_NAME")).setDesc(fragWithHTML(t$d("MD_TRANSCLUDE_WIDTH_DESC"))).addText((A=>A.setPlaceholder("Enter a number e.g. 500").setValue(this.plugin.settings.mdSVGwidth.toString()).onChange((async e=>{const t=parseInt(e);if(isNaN(t)&&""!==e)A.setValue(this.plugin.settings.mdSVGwidth.toString());else{if(this.requestEmbedUpdate=!0,""===e)return this.plugin.settings.mdSVGwidth=500,void this.applySettingsUpdate(!0);this.plugin.settings.mdSVGwidth=t,this.requestReloadDrawings=!0,A.setValue(this.plugin.settings.mdSVGwidth.toString()),this.applySettingsUpdate(!0)}})))),new obsidian.Setting(e).setName(t$d("MD_TRANSCLUDE_HEIGHT_NAME")).setDesc(fragWithHTML(t$d("MD_TRANSCLUDE_HEIGHT_DESC"))).addText((A=>A.setPlaceholder("Enter a number e.g. 800").setValue(this.plugin.settings.mdSVGmaxHeight.toString()).onChange((async e=>{const t=parseInt(e);if(isNaN(t)&&""!==e)A.setValue(this.plugin.settings.mdSVGmaxHeight.toString());else{if(this.requestEmbedUpdate=!0,""===e)return this.plugin.settings.mdSVGmaxHeight=800,void this.applySettingsUpdate(!0);this.plugin.settings.mdSVGmaxHeight=t,this.requestReloadDrawings=!0,A.setValue(this.plugin.settings.mdSVGmaxHeight.toString()),this.applySettingsUpdate(!0)}})))),new obsidian.Setting(e).setName(t$d("MD_DEFAULT_FONT_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_FONT_DESC"))).addDropdown((async A=>{A.addOption("Virgil","Virgil"),A.addOption("Cascadia","Cascadia"),this.app.vault.getFiles().filter((A=>["ttf","woff","woff2"].contains(A.extension))).forEach((e=>{A.addOption(e.path,e.name)})),A.setValue(this.plugin.settings.mdFont).onChange((A=>{this.requestReloadDrawings=!0,this.plugin.settings.mdFont=A,this.applySettingsUpdate(!0)}))})),new obsidian.Setting(e).setName(t$d("MD_DEFAULT_COLOR_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_COLOR_DESC"))).addText((A=>A.setPlaceholder("CSS Color-name|RGB-HEX").setValue(this.plugin.settings.mdFontColor).onChange((A=>{this.requestReloadDrawings=!0,this.plugin.settings.mdFontColor=A,this.applySettingsUpdate(!0)})))),new obsidian.Setting(e).setName(t$d("MD_DEFAULT_BORDER_COLOR_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_BORDER_COLOR_DESC"))).addText((A=>A.setPlaceholder("CSS Color-name|RGB-HEX").setValue(this.plugin.settings.mdBorderColor).onChange((A=>{this.requestReloadDrawings=!0,this.plugin.settings.mdBorderColor=A,this.applySettingsUpdate(!0)})))),new obsidian.Setting(e).setName(t$d("MD_CSS_NAME")).setDesc(fragWithHTML(t$d("MD_CSS_DESC"))).addText((A=>A.setPlaceholder("filename of css file in vault").setValue(this.plugin.settings.mdCSS).onChange((A=>{this.requestReloadDrawings=!0,this.plugin.settings.mdCSS=A,this.applySettingsUpdate(!0)})))),this.containerEl.createEl("h1",{text:t$d("EMBED_HEAD")}),new obsidian.Setting(e).setName(t$d("EMBED_PREVIEW_SVG_NAME")).setDesc(fragWithHTML(t$d("EMBED_PREVIEW_SVG_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.displaySVGInPreview).onChange((async A=>{this.plugin.settings.displaySVGInPreview=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("EMBED_REUSE_EXPORTED_IMAGE_NAME")).setDesc(fragWithHTML(t$d("EMBED_REUSE_EXPORTED_IMAGE_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.displayExportedImageIfAvailable).onChange((async A=>{this.plugin.settings.displayExportedImageIfAvailable=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("PREVIEW_MATCH_OBSIDIAN_NAME")).setDesc(fragWithHTML(t$d("PREVIEW_MATCH_OBSIDIAN_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.previewMatchObsidianTheme).onChange((async A=>{this.plugin.settings.previewMatchObsidianTheme=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("EMBED_WIDTH_NAME")).setDesc(fragWithHTML(t$d("EMBED_WIDTH_DESC"))).addText((A=>A.setPlaceholder("400").setValue(this.plugin.settings.width).onChange((async A=>{this.plugin.settings.width=A,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian.Setting(e).setName(t$d("EMBED_TYPE_NAME")).setDesc(fragWithHTML(t$d("EMBED_TYPE_DESC"))).addDropdown((async A=>{s=A,s.addOption("excalidraw","excalidraw"),this.plugin.settings.autoexportPNG?s.addOption("PNG","PNG"):"PNG"===this.plugin.settings.embedType&&(this.plugin.settings.embedType="excalidraw",this.applySettingsUpdate()),this.plugin.settings.autoexportSVG?s.addOption("SVG","SVG"):"SVG"===this.plugin.settings.embedType&&(this.plugin.settings.embedType="excalidraw",this.applySettingsUpdate()),s.setValue(this.plugin.settings.embedType).onChange((async A=>{this.plugin.settings.embedType=A,this.applySettingsUpdate()}))})),new obsidian.Setting(e).setName(t$d("EMBED_WIKILINK_NAME")).setDesc(fragWithHTML(t$d("EMBED_WIKILINK_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.embedWikiLink).onChange((async A=>{this.plugin.settings.embedWikiLink=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("EXPORT_PNG_SCALE_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PNG_SCALE_DESC"))).addSlider((A=>A.setLimits(1,5,.5).setValue(this.plugin.settings.pngExportScale).onChange((async A=>{o.innerText=` ${A.toString()}`,this.plugin.settings.pngExportScale=A,this.applySettingsUpdate()})))).settingEl.createDiv("",(A=>{o=A,A.style.minWidth="2.3em",A.style.textAlign="right",A.innerText=` ${this.plugin.settings.pngExportScale.toString()}`})),new obsidian.Setting(e).setName(t$d("EXPORT_BACKGROUND_NAME")).setDesc(fragWithHTML(t$d("EXPORT_BACKGROUND_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.exportWithBackground).onChange((async A=>{this.plugin.settings.exportWithBackground=A,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian.Setting(e).setName(t$d("EXPORT_PADDING_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PADDING_DESC"))).addSlider((A=>A.setLimits(0,50,5).setValue(this.plugin.settings.exportPaddingSVG).onChange((async A=>{l.innerText=` ${A.toString()}`,this.plugin.settings.exportPaddingSVG=A,this.applySettingsUpdate()})))).settingEl.createDiv("",(A=>{l=A,A.style.minWidth="2.3em",A.style.textAlign="right",A.innerText=` ${this.plugin.settings.exportPaddingSVG.toString()}`})),new obsidian.Setting(e).setName(t$d("EXPORT_THEME_NAME")).setDesc(fragWithHTML(t$d("EXPORT_THEME_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.exportWithTheme).onChange((async A=>{this.plugin.settings.exportWithTheme=A,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),this.containerEl.createEl("h1",{text:t$d("EXPORT_HEAD")}),new obsidian.Setting(e).setName(t$d("EXPORT_SYNC_NAME")).setDesc(fragWithHTML(t$d("EXPORT_SYNC_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.keepInSync).onChange((async A=>{this.plugin.settings.keepInSync=A,this.applySettingsUpdate()}))));const c=A=>{let e=0;for(e=0;eA.setValue(this.plugin.settings.autoexportSVG).onChange((async A=>{A?s.addOption("SVG","SVG"):("SVG"===this.plugin.settings.embedType&&(s.setValue("excalidraw"),this.plugin.settings.embedType="excalidraw"),c("SVG")),this.plugin.settings.autoexportSVG=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("EXPORT_PNG_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PNG_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.autoexportPNG).onChange((async A=>{A?s.addOption("PNG","PNG"):("PNG"===this.plugin.settings.embedType&&(s.setValue("excalidraw"),this.plugin.settings.embedType="excalidraw"),c("PNG")),this.plugin.settings.autoexportPNG=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("EXPORT_BOTH_DARK_AND_LIGHT_NAME")).setDesc(fragWithHTML(t$d("EXPORT_BOTH_DARK_AND_LIGHT_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.autoExportLightAndDark).onChange((async A=>{this.plugin.settings.autoExportLightAndDark=A,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("COMPATIBILITY_HEAD")}),new obsidian.Setting(e).setName(t$d("COMPATIBILITY_MODE_NAME")).setDesc(fragWithHTML(t$d("COMPATIBILITY_MODE_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.compatibilityMode).onChange((async A=>{this.plugin.settings.compatibilityMode=A,n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("EXPORT_EXCALIDRAW_NAME")).setDesc(fragWithHTML(t$d("EXPORT_EXCALIDRAW_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.autoexportExcalidraw).onChange((async A=>{this.plugin.settings.autoexportExcalidraw=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("SYNC_EXCALIDRAW_NAME")).setDesc(fragWithHTML(t$d("SYNC_EXCALIDRAW_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.syncExcalidraw).onChange((async A=>{this.plugin.settings.syncExcalidraw=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("MATHJAX_NAME")).setDesc(t$d("MATHJAX_DESC")).addDropdown((A=>{A.addOption("https://cdn.jsdelivr.net/npm/mathjax@3.2.1/es5/tex-svg.js","jsdelivr").addOption("https://unpkg.com/mathjax@3.2.1/es5/tex-svg.js","unpkg").addOption("https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.1/es5/tex-svg-full.min.js","cdnjs").setValue(this.plugin.settings.mathjaxSourceURL).onChange((A=>{this.plugin.settings.mathjaxSourceURL=A,this.reloadMathJax=!0,this.applySettingsUpdate()}))})),this.containerEl.createEl("h1",{text:t$d("EXPERIMENTAL_HEAD")}),this.containerEl.createEl("p",{text:t$d("EXPERIMENTAL_DESC")}),new obsidian.Setting(e).setName(t$d("FIELD_SUGGESTER_NAME")).setDesc(fragWithHTML(t$d("FIELD_SUGGESTER_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.fieldSuggester).onChange((async A=>{this.plugin.settings.fieldSuggester=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("FILETYPE_NAME")).setDesc(fragWithHTML(t$d("FILETYPE_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.experimentalFileType).onChange((async A=>{this.plugin.settings.experimentalFileType=A,this.plugin.experimentalFileTypeDisplayToggle(A),this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("FILETAG_NAME")).setDesc(fragWithHTML(t$d("FILETAG_DESC"))).addText((A=>A.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.experimentalFileTag).onChange((async A=>{this.plugin.settings.experimentalFileTag=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("LIVEPREVIEW_NAME")).setDesc(fragWithHTML(t$d("LIVEPREVIEW_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.experimentalLivePreview).onChange((async A=>{this.plugin.settings.experimentalLivePreview=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("ENABLE_FOURTH_FONT_NAME")).setDesc(fragWithHTML(t$d("ENABLE_FOURTH_FONT_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.experimentalEnableFourthFont).onChange((async A=>{this.requestReloadDrawings=!0,this.plugin.settings.experimentalEnableFourthFont=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("FOURTH_FONT_NAME")).setDesc(fragWithHTML(t$d("FOURTH_FONT_DESC"))).addDropdown((async A=>{A.addOption("Virgil","Virgil"),this.app.vault.getFiles().filter((A=>["ttf","woff","woff2"].contains(A.extension))).forEach((e=>{A.addOption(e.path,e.name)})),A.setValue(this.plugin.settings.experimantalFourthFont).onChange((A=>{this.requestReloadDrawings=!0,this.plugin.settings.experimantalFourthFont=A,this.applySettingsUpdate(!0),this.plugin.initializeFourthFont()}))}));const d=null===(A=this.plugin.scriptEngine.getListofScripts())||void 0===A?void 0:A.map((A=>this.plugin.scriptEngine.getScriptName(A)));if(Object.keys(this.plugin.settings.scriptEngineSettings).length>0&&d){const A=(A,e)=>{const t=this.plugin.settings.scriptEngineSettings[A][e];return"object"==typeof t?t.height:null},t=(A,e)=>{const t=this.plugin.settings.scriptEngineSettings[A][e];return"object"==typeof t?t.value:t},i=(A,e,t)=>{"object"==typeof this.plugin.settings.scriptEngineSettings[A][e]?this.plugin.settings.scriptEngineSettings[A][e].value=t:this.plugin.settings.scriptEngineSettings[A][e]=t},n=(A,n,a)=>{new obsidian.Setting(e).setName(n).setDesc(fragWithHTML(null!=a?a:"")).addToggle((e=>e.setValue(t(A,n)).onChange((async e=>{i(A,n,e),this.applySettingsUpdate()}))))},a=(n,a,r,s)=>{s&&"[object Array]"===Object.prototype.toString.call(s)&&s.length>0?new obsidian.Setting(e).setName(a).setDesc(fragWithHTML(null!=r?r:"")).addDropdown((A=>{s.forEach((e=>A.addOption(e.toString(),e.toString()))),A.setValue(t(n,a)).onChange((async A=>{i(n,a,A),this.applySettingsUpdate()}))})):A(n,a)?new obsidian.Setting(e).setName(a).setDesc(fragWithHTML(null!=r?r:"")).addTextArea((e=>{e.inputEl.style.minHeight=A(n,a),e.inputEl.style.minWidth="400px",e.setValue(t(n,a)).onChange((async A=>{i(n,a,A),this.applySettingsUpdate()}))})):new obsidian.Setting(e).setName(a).setDesc(fragWithHTML(null!=r?r:"")).addText((A=>A.setValue(t(n,a)).onChange((async A=>{i(n,a,A),this.applySettingsUpdate()}))))},r=(A,n,a)=>{new obsidian.Setting(e).setName(n).setDesc(fragWithHTML(null!=a?a:"")).addText((e=>e.setPlaceholder("Enter a number").setValue(t(A,n).toString()).onChange((async a=>{const r=parseFloat(a);isNaN(r)&&""!==a?e.setValue(t(A,n).toString()):(i(A,n,isNaN(r)?0:r),this.applySettingsUpdate())}))))};this.containerEl.createEl("h1",{text:t$d("SCRIPT_SETTINGS_HEAD")}),Object.keys(this.plugin.settings.scriptEngineSettings).filter((A=>d.contains(A))).forEach((A=>{const e=this.plugin.settings.scriptEngineSettings[A],t=Object.values(e);0===t.length||t.length>0&&0===t.map((A=>A.hidden?0:1)).reduce(((A,e)=>A+e))||(this.containerEl.createEl("h3",{text:A}),Object.keys(e).forEach((t=>{var i;const s=e[t];switch(typeof(null!==(i=s.value)&&void 0!==i?i:s)){case"boolean":s.hidden||n(A,t,s.description);break;case"string":s.hidden||a(A,t,s.description,s.valueset);break;case"number":s.hidden||r(A,t,s.description)}})))}))}}}var openDialogAction;!function(A){A[A.openFile=0]="openFile",A[A.insertLinkToDrawing=1]="insertLinkToDrawing"}(openDialogAction||(openDialogAction={}));class OpenFileDialog extends obsidian.FuzzySuggestModal{constructor(A,e){super(A),this.app=A,this.action=openDialogAction.openFile,this.plugin=e,this.onNewPane=!1,this.limit=20,this.setInstructions([{command:t$d("TYPE_FILENAME"),purpose:""}]),this.inputEl.onkeyup=A=>{"Enter"==A.key&&this.action==openDialogAction.openFile&&this.containerEl.innerText.includes(EMPTY_MESSAGE)&&(this.plugin.createAndOpenDrawing(`${this.plugin.settings.folder}/${this.inputEl.value}.excalidraw.md`,this.onNewPane?"new-pane":"active-pane"),this.close())}}getItems(){return(this.app.vault.getFiles()||[]).filter((A=>this.plugin.isExcalidrawFile(A)))}getItemText(A){return A.path}onChooseItem(A){switch(this.action){case openDialogAction.openFile:this.plugin.openDrawing(A,this.onNewPane?"new-pane":"active-pane",!0);break;case openDialogAction.insertLinkToDrawing:this.plugin.embedDrawing(A)}}start(A,e){switch(this.action=A,this.onNewPane=e,A){case openDialogAction.openFile:this.emptyStateText=EMPTY_MESSAGE,this.setPlaceholder(t$d("SELECT_FILE_OR_TYPE_NEW"));break;case openDialogAction.insertLinkToDrawing:this.emptyStateText=t$d("NO_MATCH"),this.setPlaceholder(t$d("SELECT_TO_EMBED"))}this.open()}}class InsertLinkDialog extends obsidian.FuzzySuggestModal{constructor(A){super(A),this.app=A,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_FILE_TO_LINK")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return this.app.metadataCache.getLinkSuggestions().filter((A=>!A.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(A){return A.path+(A.alias?`|${A.alias}`:"")}onChooseItem(A){let e=A.path;A.file&&(e=this.app.metadataCache.fileToLinktext(A.file,this.drawingPath,!0)),this.addText(`[[${e+(A.alias?`|${A.alias}`:"")}]]`)}start(A,e){this.addText=e,this.drawingPath=A,this.open()}}class InsertImageDialog extends obsidian.FuzzySuggestModal{constructor(A){super(A.app),this.plugin=A,this.app=A.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_DRAWING")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return(this.app.vault.getFiles()||[]).filter((A=>(IMAGE_TYPES.contains(A.extension)||this.plugin.isExcalidrawFile(A))&&!A.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(A){return A.path}onChooseItem(A){const e=this.plugin.ea;e.reset(),e.setView(this.view),e.canvas.theme=this.view.excalidrawAPI.getAppState().theme,(async()=>{await e.addImage(0,0,A),e.addElementsToView(!0,!1,!0)})()}start(A){this.view=A,this.open()}}class InsertMDDialog extends obsidian.FuzzySuggestModal{constructor(A){super(A.app),this.plugin=A,this.app=A.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_MD")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return(this.app.vault.getFiles()||[]).filter((A=>"md"===A.extension&&!this.plugin.isExcalidrawFile(A)))}getItemText(A){return A.path}onChooseItem(A){const e=this.plugin.ea;e.reset(),e.setView(this.view),(async()=>{await e.addImage(0,0,A),e.addElementsToView(!0,!1,!0)})()}start(A){this.view=A,this.open()}}function around(A,e){const t=Object.keys(e).map((t=>around1(A,t,e[t])));return 1===t.length?t[0]:function(){t.forEach((A=>A()))}}function around1(A,e,t){const i=A[e],n=A.hasOwnProperty(e);let a=t(i);return i&&Object.setPrototypeOf(a,i),Object.setPrototypeOf(r,a),A[e]=r,s;function r(...t){return a===i&&A[e]===r&&s(),a.apply(this,t)}function s(){A[e]===r&&(n?A[e]=i:delete A[e]),a!==i&&(a=i,Object.setPrototypeOf(r,i||Function))}}let plugin,vault,metadataCache;const getDefaultWidth=A=>{const e=parseInt(A.settings.width);return isNaN(e)||0===e||null===e?"400":A.settings.width},initializeMarkdownPostProcessor=A=>{plugin=A,vault=A.app.vault,metadataCache=A.app.metadataCache},getIMG=async A=>{var e;let t=A.file;if(!A.file){const i=vault.getAbstractFileByPath(null===(e=A.fname)||void 0===e?void 0:e.split("#")[0]);if(!(i&&i instanceof obsidian.TFile))return null;t=i}const i=getEmbeddedFilenameParts(A.fname);A.style=A.style.replaceAll(" ","-");const n=hasExportTheme(plugin,t)?getExportTheme(plugin,t,"light"):void 0,a={withBackground:getWithBackground(plugin,t),withTheme:!!n||plugin.settings.exportWithTheme},r=createEl("img");let s=`max-width:${A.fwidth}px !important; width:100%;`;A.fheight&&(s+=`height:${A.fheight}px;`),r.setAttribute("style",s),r.addClass(A.style);const o=null!=n?n:plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":plugin.settings.exportWithTheme?void 0:"light";o&&(a.withTheme=!0);const l=new EmbeddedFilesLoader(plugin,o?"dark"===o:void 0);if(!plugin.settings.displaySVGInPreview){const e=parseInt(A.fwidth),n=e>=2400?5:e>=1800?4:e>=1200?3:e>=600?2:1,s=i.hasGroupref?void 0:await getQuickImagePreview(plugin,t.path,"png"),c=null!=s?s:await createPNG(i.hasGroupref?i.filepath+i.linkpartReference:t.path,n,a,l,o,null,null,[],plugin,0);return c?(r.src=URL.createObjectURL(c),r):null}if(!i.hasBlockref&&!i.hasSectionref){const A=await getQuickImagePreview(plugin,t.path,"svg");if(A)return r.setAttribute("src",svgToBase64(A)),r}const c=(await createSVG(i.hasGroupref||i.hasBlockref||i.hasSectionref?i.filepath+i.linkpartReference:t.path,!0,a,l,o,null,null,[],plugin,0,getExportPadding(plugin,t))).outerHTML;let d=null;const h=document.createElement("div");h.innerHTML=c;const g=h.firstChild;return g instanceof SVGSVGElement&&(d=g),d?(d=embedFontsInSVG(d,plugin),d.removeAttribute("width"),d.removeAttribute("height"),r.setAttribute("src",svgToBase64(d.outerHTML)),r):null},createImageDiv=async A=>{const e=await getIMG(A);return createDiv(A.style,(t=>{t.append(e),t.setAttribute("src",A.fname),A.fwidth&&t.setAttribute("w",A.fwidth),A.fheight&&t.setAttribute("h",A.fheight),t.onClickEvent((A=>{if(A.target instanceof Element&&"img"!=A.target.tagName.toLowerCase())return;const e=t.getAttribute("src");if(e){const t=e.match(/([^#]*)(.*)/);if(!t)return;plugin.openDrawing(vault.getAbstractFileByPath(t[1]),A[CTRL_OR_CMD]?"new-pane":A.metaKey&&!app.isMobile?"popout-window":"active-pane",!0,t[2])}})),t.addEventListener(RERENDER_EVENT,(async A=>{A.stopPropagation(),t.empty();const e=await getIMG({fname:t.getAttribute("src"),fwidth:t.getAttribute("w"),fheight:t.getAttribute("h"),style:t.getAttribute("class")});t.append(e)}))}))},processReadingMode=async(A,e)=>{var t;for(const i of A){const A=null===(t=i.getAttribute("src"))||void 0===t?void 0:t.split("#")[0];if(!A)continue;const n=metadataCache.getFirstLinkpathDest(A,e.sourcePath);if(n&&n instanceof obsidian.TFile&&plugin.isExcalidrawFile(n)){if(isTextOnlyEmbed(i))continue;i.parentElement.replaceChild(await processInternalEmbed(i,n),i)}}},processInternalEmbed=async(A,e)=>{const t={fname:"",fheight:"",fwidth:"",style:""},i=A.getAttribute("src");if(!i)return;t.fwidth=A.getAttribute("width")?A.getAttribute("width"):getDefaultWidth(plugin),t.fheight=A.getAttribute("height");let n=A.getAttribute("alt");t.style="excalidraw-svg",processAltText(i.split("#")[0],n,t);const a=getEmbeddedFilenameParts(i);return t.fname=(null==e?void 0:e.path)+(a.hasBlockref||a.hasSectionref?a.linkpartReference:""),t.file=e,await createImageDiv(t)},processAltText=(A,e,t)=>{var i,n;if(e&&!e.startsWith(A)){const a=e.match(/[^\|\d]*\|?((\d*%?)x?(\d*%?))?\|?(.*)/);t.fwidth=null!==(i=a[2])&&void 0!==i?i:t.fwidth,t.fheight=null!==(n=a[3])&&void 0!==n?n:t.fheight,a[4]&&!a[4].startsWith(A)&&(t.style=`excalidraw-svg-${a[4]}`),a[4]&&""!==a[4]||a[2]&&""!==a[2]||!a[0]||""===a[0]||(t.style=`excalidraw-svg-${a[0]}`)}},isTextOnlyEmbed=A=>{const e=A.getAttribute("src");if(!e)return!0;const t=getEmbeddedFilenameParts(e);return!(t.hasArearef||t.hasGroupref)&&(t.hasBlockref||t.hasSectionref)},tmpObsidianWYSIWYG=async(A,e)=>{const t=app.vault.getAbstractFileByPath(e.sourcePath);t instanceof obsidian.TFile&&plugin.isExcalidrawFile(t)&&(e.remainingNestLevel<4||setTimeout((async()=>{let i=0;for(;!A.parentElement&&i++<=50;)await sleep(50);if(!A.parentElement)return;let n=A;for(;!n.hasClass("internal-embed")&&n.parentElement;)n=n.parentElement;const a={fname:e.sourcePath,fheight:"",fwidth:getDefaultWidth(plugin),style:"excalidraw-svg"};if(a.file=t,!n.hasClass("internal-embed")){A.empty();const e=A.parentElement;if(!e.hasClass("markdown-preview-section"))return;if(e.hasAttribute("ready"))return void e.removeChild(A);e.setAttribute("ready","");const t=await createImageDiv(a);return void A.appendChild(t)}if(isTextOnlyEmbed(n))return;if(A.empty(),n.hasAttribute("ready"))return;n.setAttribute("ready",""),n.empty();const r=await processInternalEmbed(n,t);n.appendChild(r);let s=null;const o=new MutationObserver((A=>{var e;["alt","width","height"].contains(null===(e=A[0])||void 0===e?void 0:e.attributeName)&&(s&&clearTimeout(s),s=setTimeout((async()=>{s=null,n.empty();const A=await processInternalEmbed(n,t);n.appendChild(A)}),500))}));o.observe(n,{attributes:!0})})))},markdownPostProcessor=async(A,e)=>{var t;const i=A.querySelectorAll(".internal-embed");0!==i.length?Boolean(null===(t=e.frontmatter)||void 0===t?void 0:t.hasOwnProperty("excalidraw-plugin"))?A.style.display="none":await processReadingMode(i,e):tmpObsidianWYSIWYG(A,e)},hoverEvent=A=>{A.linktext?(plugin.hover.linkText=A.linktext,plugin.hover.sourcePath=A.sourcePath):plugin.hover.linkText=null},observer=new MutationObserver((async A=>{if(0==A.length)return;if(!plugin.hover.linkText)return;const e=metadataCache.getFirstLinkpathDest(plugin.hover.linkText,plugin.hover.sourcePath?plugin.hover.sourcePath:"");if(!e)return;if(!(e instanceof obsidian.TFile))return;if("excalidraw"!==e.extension)return;const t=getIMGFilename(e.path,"svg"),i=vault.getAbstractFileByPath(t);if(i&&i instanceof obsidian.TFile)return;const n=getIMGFilename(e.path,"png"),a=vault.getAbstractFileByPath(n);if(a&&a instanceof obsidian.TFile)return;if(!plugin.hover.linkText)return;if(1!=A.length)return;if(1!=A[0].addedNodes.length)return;if("popover hover-popover file-embed is-loaded"!=!A[0].addedNodes[0].classNames)return;const r=A[0].addedNodes[0];r.empty();const s=await getIMG({file:e,fname:e.path,fwidth:"300",fheight:null,style:"excalidraw-svg"}),o=createDiv("",(async A=>{A.appendChild(s),A.setAttribute("src",e.path),A.onClickEvent((e=>{e.stopImmediatePropagation();const t=A.getAttribute("src");t&&plugin.openDrawing(vault.getAbstractFileByPath(t),e[CTRL_OR_CMD]?"new-pane":e.metaKey&&!app.isMobile?"popout-window":"active-pane")}))}));r.appendChild(o)})),EXCALIDRAW_AUTOMATE_INFO=[{field:"plugin",code:null,desc:"The ExcalidrawPlugin object",after:""},{field:"elementsDict",code:null,desc:"The {} dictionary object, contains the ExcalidrawElements currently edited in Automate indexed by el.id",after:'[""]'},{field:"imagesDict",code:null,desc:"the images files including DataURL, indexed by fileId",after:'[""]'},{field:"style.strokeColor",code:"[string]",desc:"A valid css color. See W3 School Colors for more.",after:""},{field:"style.backgroundColor",code:"[string]",desc:"A valid css color. See W3 School Colors for more.",after:""},{field:"style.angle",code:"[number]",desc:"Rotation of the object in radian",after:""},{field:"style.fillStyle",code:"[string]",desc:"'hachure' | 'cross-hatch' | 'solid'",after:""},{field:"style.strokeWidth",code:"[number]",desc:null,after:""},{field:"style.strokeStyle",code:"[string]",desc:"'solid' | 'dashed' | 'dotted'",after:""},{field:"style.roughness",code:"[number]",desc:"0:Architect\n1:Artist\n2:Cartoonist",after:""},{field:"style.opacity",code:"[number]",desc:"100: Fully opaque\n0: Fully transparent",after:""},{field:"style.strokeSharpness",code:"[string]",desc:"'round' | 'sharp'",after:""},{field:"style.fontFamily",code:"[number]",desc:"1: Virgil, 2:Helvetica, 3:Cascadia, 4:LocalFont",after:""},{field:"style.fontSize",code:"[number]",desc:null,after:""},{field:"style.textAlign",code:"[string]",desc:"'left' | 'right' | 'center'",after:""},{field:"style.verticalAlign",code:"[string]",desc:"For future use, has no effect currently; 'top' | 'bottom' | 'middle'",after:""},{field:"style.startArrowHead",code:"[string]",desc:"'triangle' | 'dot' | 'arrow' | 'bar' | null",after:""},{field:"style.endArrowHead",code:"[string]",desc:"'triangle' | 'dot' | 'arrow' | 'bar' | null",after:""},{field:"canvas.theme",code:"[string]",desc:"'dark' | 'light'",after:""},{field:"canvas.viewBackgroundColor",code:"[string]",desc:"A valid css color.\nSee W3 School Colors for more.",after:""},{field:"canvas.gridSize",code:"[number]",desc:null,after:""},{field:"addToGroup",code:"addToGroup(objectIds: []): string;",desc:null,after:""},{field:"toCliboard",code:"toClipboard(templatePath?: string): void;",desc:"Copies current elements using template to clipboard, ready to be pasted into an excalidraw canvas",after:""},{field:"getElements",code:"getElements(): ExcalidrawElement[];",desc:"Get all elements from ExcalidrawAutomate elementsDict",after:""},{field:"getElement",code:"getElement(id: string): ExcalidrawElement;",desc:"Get single element from ExcalidrawAutomate elementsDict",after:""},{field:"create",code:'create(params?: {filename?: string, foldername?: string, templatePath?: string, onNewPane?: boolean, frontmatterKeys?: { "excalidraw-plugin"?: "raw" | "parsed", "excalidraw-link-prefix"?: string, "excalidraw-link-brackets"?: boolean, "excalidraw-url-prefix"?: string,},}): Promise;',desc:"Create a drawing and save it to filename.\nIf filename is null: default filename as defined in Excalidraw settings.\nIf folder is null: default folder as defined in Excalidraw settings\n",after:""},{field:"createSVG",code:"createSVG(templatePath?: string, embedFont?: boolean, exportSettings?: ExportSettings, loader?: EmbeddedFilesLoader, theme?: string,): Promise;",desc:"Use ExcalidrawAutomate.getExportSettings(boolean,boolean) to create an ExportSettings object.\nUse ExcalidrawAutomate.getEmbeddedFilesLoader(boolean?) to create an EmbeddedFilesLoader object.",after:""},{field:"createPNG",code:"createPNG(templatePath?: string, scale?: number, exportSettings?: ExportSettings, loader?: EmbeddedFilesLoader, theme?: string,): Promise;",desc:"Use ExcalidrawAutomate.getExportSettings(boolean,boolean) to create an ExportSettings object.\nUse ExcalidrawAutomate.getEmbeddedFilesLoader(boolean?) to create an EmbeddedFilesLoader object.",after:""},{field:"wrapText",code:"wrapText(text: string, lineLen: number): string;",desc:null,after:""},{field:"addRect",code:"addRect(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addDiamond",code:"addDiamond(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addEllipse",code:"addEllipse(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addBlob",code:"addBlob(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addText",code:'addText(topX: number, topY: number, text: string, formatting?: {wrapAt?: number; width?: number; height?: number; textAlign?: string; box?: boolean | "box" | "blob" | "ellipse" | "diamond"; boxPadding?: number;}, id?: string,): string;',desc:"If box is !null, then text will be boxed\nThe function returns the id of the TextElement. If the text element is boxed i.e. it is a sticky note, then the id of the container object",after:""},{field:"addLine",code:"addLine(points: [[x: number, y: number]]): string;",desc:null,after:""},{field:"addArrow",code:"addArrow(points: [[x: number, y: number]], formatting?: { startArrowHead?: string; endArrowHead?: string; startObjectId?: string; endObjectId?: string;},): string;",desc:null,after:""},{field:"addImage",code:"addImage(topX: number, topY: number, imageFile: TFile): Promise;",desc:null,after:""},{field:"addLaTex",code:"addLaTex(topX: number, topY: number, tex: string): Promise;",desc:null,after:""},{field:"connectObjects",code:"connectObjects(objectA: string, connectionA: ConnectionPoint, objectB: string, connectionB: ConnectionPoint, formatting?: {numberOfPoints?: number; startArrowHead?: string; endArrowHead?: string; padding?: number;},): string;",desc:'type ConnectionPoint = "top" | "bottom" | "left" | "right" | null\nWhen null is passed as ConnectionPoint then Excalidraw will automatically decide\nnumberOfPoints is the number of points on the line. Default is 0 i.e. line will only have a start and end point.\nArrowHead: "triangle"|"dot"|"arrow"|"bar"|null',after:""},{field:"addLabelToLine",code:"addLabelToLine(lineId: string, label: string): string;",desc:"Adds a text label to a line or arrow. Currently only works with a simple straight 2-point (start & end) line",after:""},{field:"clear",code:"clear(): void;",desc:"Clears elementsDict and imagesDict only",after:""},{field:"reset",code:"reset(): void;",desc:"clear() + reset all style values to default",after:""},{field:"isExcalidrawFile",code:"isExcalidrawFile(f: TFile): boolean;",desc:"Returns true if MD file is an Excalidraw file",after:""},{field:"targetView",code:"targetView: ExcalidrawView;",desc:"The Obsidian view currently edited",after:""},{field:"setView",code:'setView(view: ExcalidrawView | "first" | "active"): ExcalidrawView;',desc:null,after:""},{field:"getExcalidrawAPI",code:"getExcalidrawAPI(): any;",desc:"Excalidraw API",after:""},{field:"getViewElements",code:"getViewElements(): ExcalidrawElement[];",desc:"Get elements in View",after:""},{field:"deleteViewElements",code:"deleteViewElements(el: ExcalidrawElement[]): boolean;",desc:null,after:""},{field:"getViewSelectedElement",code:"getViewSelectedElement(): ExcalidrawElement;",desc:"Get the selected element in the view, if more are selected, get the first",after:""},{field:"getViewSelectedElements",code:"getViewSelectedElements(): ExcalidrawElement[];",desc:null,after:""},{field:"getViewFileForImageElement",code:"getViewFileForImageElement(el: ExcalidrawElement): TFile | null;",desc:"Returns the TFile file handle for the image element",after:""},{field:"copyViewElementsToEAforEditing",code:"copyViewElementsToEAforEditing(elements: ExcalidrawElement[]): void;",desc:"Copies elements from view to elementsDict for editing",after:""},{field:"viewToggleFullScreen",code:"viewToggleFullScreen(forceViewMode?: boolean): void;",desc:null,after:""},{field:"connectObjectWithViewSelectedElement",code:"connectObjectWithViewSelectedElement(objectA: string, connectionA: ConnectionPoint, connectionB: ConnectionPoint, formatting?: {numberOfPoints?: number; startArrowHead?: string; endArrowHead?: string; padding?: number;},): boolean;",desc:"Connect an object to the selected element in the view\nSee tooltip for connectObjects for details",after:""},{field:"addElementsToView",code:"addElementsToView(repositionToCursor?: boolean, save?: boolean, newElementsOnTop?: boolean,): Promise;",desc:"Adds elements from elementsDict to the current view\nrepositionToCursor: default is false\nsave: default is true\nnewElementsOnTop: default is false, i.e. the new elements get to the bottom of the stack\nnewElementsOnTop controls whether elements created with ExcalidrawAutomate are added at the bottom of the stack or the top of the stack of elements already in the view\nNote that elements copied to the view with copyViewElementsToEAforEditing retain their position in the stack of elements in the view even if modified using EA",after:""},{field:"onDropHook",code:'onDropHook(data: {ea: ExcalidrawAutomate, event: React.DragEvent, draggable: any, type: "file" | "text" | "unknown", payload: {files: TFile[], text: string,}, excalidrawFile: TFile, view: ExcalidrawView, pointerPosition: { x: number, y: number},}): boolean;',desc:"If set Excalidraw will call this function onDrop events.\nA return of true will stop the default onDrop processing in Excalidraw.\n\ndraggable is the Obsidian draggable object\nfiles is the array of dropped files\nexcalidrawFile is the file receiving the drop event\nview is the excalidraw view receiving the drop.\npointerPosition is the pointer position on canvas at the time of drop.",after:""},{field:"mostRecentMarkdownSVG",code:"mostRecentMarkdownSVG: SVGSVGElement;",desc:"Markdown renderer will drop a copy of the most recent SVG here for debugging purposes",after:""},{field:"getEmbeddedFilesLoader",code:"getEmbeddedFilesLoader(isDark?: boolean): EmbeddedFilesLoader;",desc:"Utility function to generate EmbeddedFilesLoader object",after:""},{field:"getExportSettings",code:"getExportSettings(withBackground: boolean, withTheme: boolean,): ExportSettings;",desc:"Utility function to generate ExportSettings object",after:""},{field:"getBoundingBox",code:"getBoundingBox(elements: ExcalidrawElement[]): {topX: number, topY: number, width: number, height: number,};",desc:"Gets the bounding box of elements. The bounding box is the box encapsulating all of the elements completely.",after:""},{field:"getMaximumGroups",code:"getMaximumGroups(elements: ExcalidrawElement[]): ExcalidrawElement[][];",desc:"Elements grouped by the highest level groups",after:""},{field:"getLargestElement",code:"getLargestElement(elements: ExcalidrawElement[]): ExcalidrawElement;",desc:"Gets the largest element from a group. useful when a text element is grouped with a box, and you want to connect an arrow to the box",after:""},{field:"intersectElementWithLine",code:"intersectElementWithLine(element: ExcalidrawBindableElement, a: readonly [number, number], b: readonly [number, number], gap?: number,): Point[];",desc:"If gap is given, the element is inflated by this value.\nReturns 2 or 0 intersection points between line going through `a` and `b` and the `element`, in ascending order of distance from `a`.",after:""},{field:"getCommonGroupForElements",code:"getCommonGroupForElements(elements: ExcalidrawElement[]): string;",desc:"Gets the groupId for the group that contains all the elements, or null if such a group does not exist",after:""},{field:"getElementsInTheSameGroupWithElement",code:"getElementsInTheSameGroupWithElement(element: ExcalidrawElement, elements: ExcalidrawElement[]): ExcalidrawElement[];",desc:"Gets all the elements from elements[] that share one or more groupIds with element.",after:""},{field:"activeScript",code:"activeScript: string;",desc:"Mandatory to set before calling the get and set ScriptSettings functions. Set automatically by the ScriptEngine\nSee for more details: Script Engine Help",after:""},{field:"getScriptSettings",code:"getScriptSettings(): {};",desc:"Returns script settings. Saves settings in plugin settings, under the activeScript key. See for more details: Script Engine Help",after:""},{field:"setScriptSettings",code:"setScriptSettings(settings: any): Promise;",desc:"Sets script settings.\nSee for more details: Script Engine Help",after:""},{field:"openFileInNewOrAdjacentLeaf",code:"openFileInNewOrAdjacentLeaf(file: TFile): WorkspaceLeaf;",desc:"Open a file in a new workspaceleaf or reuse an existing adjacent leaf depending on Excalidraw Plugin Settings",after:""},{field:"measureText",code:"measureText(text: string): { width: number; height: number };",desc:"Measures text size based on current style settings",after:""},{field:"verifyMinimumPluginVersion",code:"verifyMinimumPluginVersion(requiredVersion: string): boolean;",desc:'Returns true if plugin version is >= than required\nrecommended use:\nif(!ea.verifyMinimumPluginVersion || !ea.verifyMinimumPluginVersion("1.5.20")) {new Notice("message");return;}',after:""},{field:"selectElementsInView",code:"selectElementsInView(elements: ExcalidrawElement[]):void;",desc:"Elements provided will be set as selected in the targetView.",after:""},{field:"generateElementId",code:"generateElementId(): string;",desc:"Returns an 8 character long random id",after:""},{field:"cloneElement",code:"cloneElement(element: ExcalidrawElement): ExcalidrawElement;",desc:"Returns a clone of the element with a new element id",after:""},{field:"moveViewElementToZIndex",code:"moveViewElementToZIndex(elementId:number, newZIndex:number): void;",desc:"Moves the element to a specific position in the z-index",after:""},{field:"hexStringToRgb",code:"hexStringToRgb(color: string):number[];",desc:"Converts a HEX color to an RGB number array. #FF0000 to [255,0,0]",after:""},{field:"rgbToHexString",code:"rgbToHexString(color: number[]):string;",desc:"Converts an RGB number array to a HEX string. [255,0,0] to #FF0000",after:""},{field:"hslToRgb",code:"hslToRgb(color: number[]):number[];",desc:"Converts an HSL number array to an RGB number array. [0,100,50] to [255,0,0]",after:""},{field:"rgbToHsl",code:"rgbToHsl(color:number[]):number[];",desc:"Converts an RGB number array to an HSL number array. [255,0,0] to [0,100,50]",after:""},{field:"colorNameToHex",code:"colorNameToHex(color:string):string;",desc:"Converts a CSS color name to its HEX color equivalent. 'White' to #FFFFFF",after:""}],EXCALIDRAW_SCRIPTENGINE_INFO=[{field:"inputPrompt",code:"inputPrompt: (header: string, placeholder?: string, value?: string, buttons?: [{caption:string, action:Function}]);",desc:"Opens a prompt that asks for an input.\nReturns a string with the input.\nYou need to await the result of inputPrompt.\nbuttons.action(input: string) => string\nThe button action function will receive the actual input string. If action returns null, input will be unchanged. If action returns a string, input will receive that value when the promise is resolved. example:\nlet fileType = '';\nconst filename = await utils.inputPrompt (\n 'Filename',\n '',\n '',\n, [\n {\n caption: 'Markdown',\n action: ()=>{fileType='md';return;}\n },\n {\n caption: 'Excalidraw',\n action: ()=>{fileType='ex';return;}\n }\n ]\n);",after:""},{field:"suggester",code:"suggester: (displayItems: string[], items: any[], hint?: string, instructions?:Instruction[]);",desc:"Opens a suggester. Displays the displayItems and returns the corresponding item from items[]\nYou need to await the result of suggester.\nIf the user cancels (ESC), suggester will return undefined\nHint and instructions are optional\n\ninterface Instruction {command: string;purpose: string;}",after:""}],FRONTMATTER_KEYS_INFO=[{field:"plugin",code:null,desc:"Denotes an excalidraw file. If key is not present, the file will not be recognized as an Excalidarw file. Valid values are 'parsed' and 'raw'",after:": parsed"},{field:"link-prefix",code:null,desc:"Set custom prefix to denote text element containing a valid internal link. Set to empty string if you do not want to show a prefix",after:': "📍"'},{field:"url-prefix",code:null,desc:"Set custom prefix to denote text element containing a valid external link. Set to empty string if you do not want to show a prefix",after:': "🌐"'},{field:"link-brackets",code:null,desc:"Set to true, if you want to display [[square brackets]] around the links in Text Elements",after:": true"},{field:"default-mode",code:null,desc:"Specifies how Excalidraw should open by default. Valid values are: view|zen",after:": view"},{field:"linkbutton-opacity",code:null,desc:"The opacity of the blue link button in the top right of the element overriding the respective setting in plugin settings. Valid values are between 0 and 1, where 0 means the button is transparent.",after:": 0.5"},{field:"onload-script",code:null,desc:"The value of this field will be executed as javascript code using the Script Engine environment. Use this to initiate custom actions or logic when loading your drawing.",after:': "new Notice(`Hello World!\\n\\nFile: ${ea.targetView.file.basename}`);"'},{field:"font",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: Virgil|Cascadia|font_file_name.extension",after:": Virgil"},{field:"font-color",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: css-color-name|#HEXcolor|any-other-html-standard-format",after:": SteelBlue"},{field:"border-color",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: css-color-name|#HEXcolor|any-other-html-standard-format",after:": SteelBlue"},{field:"css",code:null,desc:'This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this front matter keys to your markdown document. Valid values are: "css-filename|css snippet"',after:': ""'},{field:"export-transparent",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. true == Transparent / false == with background",after:": true"},{field:"export-dark",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. true == Dark mode / false == light mode",after:": true"},{field:"export-padding",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. This only affects both SVG and PNG export. Specify the export padding for the image.",after:": 5"},{field:"export-pngscale",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. This only affects export to PNG. Specify the export scale for the image. The typical range is between 0.5 and 5, but you can experiment with other values as well.",after:": 1"},{field:"autoexport",code:null,desc:"Override autoexport settings for this file. Valid values are\nnone\nboth\npng\nsvg",after:": png"}];class FieldSuggester extends obsidian.EditorSuggest{constructor(A){super(A.app),this.getSuggestions=A=>{const e=A.query.toLowerCase();return("ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO).map((A=>A.field)).filter((A=>A.toLowerCase().includes(e)))},this.plugin=A}onTrigger(A,e,t){var i,n,a,r,s;if(this.plugin.settings.fieldSuggester){const t=e.getLine(A.line).substring(0,A.ch),o=null!==(r=null!==(n=null===(i=t.match(/^excalidraw-(.*)$/))||void 0===i?void 0:i[1])&&void 0!==n?n:null===(a=t.match(/(^ea|\Wea)\.([\w\.]*)$/))||void 0===a?void 0:a[2])&&void 0!==r?r:null===(s=t.match(/(^utils|\Wutils)\.([\w\.]*)$/))||void 0===s?void 0:s[2];if(void 0!==o)return this.suggestType=t.match(/^excalidraw-(.*)$/)?"excalidraw":t.match(/(^ea|\Wea)\.([\w\.]*)$/)?"ea":"utils",this.latestTriggerInfo={end:A,start:{ch:A.ch-o.length,line:A.line},query:o},this.latestTriggerInfo}return null}renderSuggestion(A,e){const t=A.replace("ea"===this.suggestType?"ea.":"utils"===this.suggestType?"utils.":"excalidraw-",""),i=("ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO).find((e=>e.field===A));e.createEl("b",{text:t}),e.createEl("br"),i.code&&e.createEl("code",{text:i.code}),i.desc&&e.createDiv("div",(A=>A.innerHTML=i.desc))}selectSuggestion(A){var e;const{context:t}=this;if(t){const i="ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO,n=`${A}${null===(e=i.find((e=>e.field===A)))||void 0===e?void 0:e.after}`;if(t.editor.replaceRange(n,this.latestTriggerInfo.start,this.latestTriggerInfo.end),this.latestTriggerInfo.start.ch===this.latestTriggerInfo.end.ch){const A=this.latestTriggerInfo.end;A.ch+=n.length,t.editor.setCursor(A)}}}}class ExcalidrawPlugin extends obsidian.Plugin{constructor(A,e){super(A,e),this.excalidrawFiles=new Set,this.excalidrawFileModes={},this._loaded=!1,this.activeExcalidrawView=null,this.lastActiveExcalidrawFilePath=null,this.hover={linkText:null,sourcePath:null},this.opencount=0,this.filesMaster=null,this.equationsMaster=null,this.mathjax=null,this.mathjaxDiv=null,this.mathjaxLoaderFinished=!1,this.fourthFontDef=VIRGIL_FONT,this.packageMap=new WeakMap,this.leafChangeTimeout=null,this.popScope=null,this.filesMaster=new Map,this.equationsMaster=new Map}getPackage(A){if(A===window)return{react:react,reactDOM:reactDOM,excalidrawLib:excalidrawLib};if(this.packageMap.has(A))return this.packageMap.get(A);const{react:e,reactDOM:t,excalidrawLib:i}=A.eval.call(A,`(function() {\n ${lzString.exports.decompressFromBase64(EXCALIDRAW_PACKAGES)};\n return {react:React,reactDOM:ReactDOM,excalidrawLib:ExcalidrawLib};\n })()`);return this.packageMap.set(A,{react:e,reactDOM:t,excalidrawLib:i}),{react:e,reactDOM:t,excalidrawLib:i}}async onload(){if(obsidian.addIcon(ICON_NAME,EXCALIDRAW_ICON),obsidian.addIcon("ScriptEngine",SCRIPTENGINE_ICON),obsidian.addIcon("disk",DISK_ICON),obsidian.addIcon("save-png",PNG_ICON),obsidian.addIcon("save-svg",SVG_ICON),await this.loadSettings(),this.addSettingTab(new ExcalidrawSettingTab(this.app,this)),this.ea=await initExcalidrawAutomate(this),this.registerView("excalidraw",(A=>new ExcalidrawView(A,this))),this.registerExtensions(["excalidraw"],"excalidraw"),this.addMarkdownPostProcessor(),this.registerInstallCodeblockProcessor(),this.addThemeObserver(),this.experimentalFileTypeDisplayToggle(this.settings.experimentalFileType),this.registerCommands(),this.registerEventListeners(),this.initializeFourthFont(),this.registerEditorSuggest(new FieldSuggester(this)),this.registerMonkeyPatches(),this.settings.showReleaseNotes){const A=this.settings.imageElementNotice;isVersionNewerThanOther(PLUGIN_VERSION,this.settings.previousRelease)&&new ReleaseNotes(this.app,this,A?null:PLUGIN_VERSION).open()}this.switchToExcalidarwAfterLoad(),this.loadMathJax();const A=this;this.app.workspace.onLayoutReady((()=>{this.scriptEngine=new ScriptEngine(A)}))}initializeFourthFont(){this.app.workspace.onLayoutReady((async()=>{const A=await getFontDataURL(this.app,this.settings.experimantalFourthFont,"","LocalFont"),e=""===A.dataURL?VIRGIL_DATAURL:A.dataURL;this.fourthFontDef=A.fontDef;const t=new Set;app.workspace.iterateAllLeaves((A=>{const i=app.isMobile?document:A.view.containerEl.ownerDocument;if(!i)return;if(t.has(i))return;t.add(i);const n=i.createElement("style");n.id="local-font-stylesheet",n.textContent=`\n @font-face {\n font-family: 'LocalFont';\n src: url("${e}");\n font-display: swap;\n }\n `;const a=i.getElementById(n.id);i.head.appendChild(n),a&&i.head.removeChild(a),i.fonts.load("20px LocalFont")}))}))}loadMathJax(){const A=this;this.app.workspace.onLayoutReady((async()=>{await obsidian.loadMathJax();try{A.mathjaxDiv&&(document.body.removeChild(A.mathjaxDiv),A.mathjax=null,A.mathjaxLoaderFinished=!1),A.mathjaxDiv=document.body.createDiv(),A.mathjaxDiv.title="Excalidraw MathJax Support",A.mathjaxDiv.style.display="none";const e=A.mathjaxDiv.createEl("iframe");e.title="Excalidraw MathJax Support";const t=e.contentWindow.document,i=t.createElement("script");i.type="text/javascript",i.onload=()=>{const t=e.contentWindow;t.MathJax.startup.pagePromise.then((async()=>{const e=app.vault.getAbstractFileByPath("preamble.sty"),i=e&&e instanceof obsidian.TFile?await app.vault.read(e):null;try{i&&await t.MathJax.tex2svg(i)}catch(e){errorlog({where:A.loadMathJax,description:"Unexpected error while loading preamble.sty",error:e})}A.mathjax=t.MathJax,A.mathjaxLoaderFinished=!0}))},i.src=A.settings.mathjaxSourceURL,t.head.appendChild(i)}catch(e){new obsidian.Notice("Excalidraw: Error initializing LaTeX support"),A.mathjaxLoaderFinished=!0}}))}switchToExcalidarwAfterLoad(){const A=this;this.app.workspace.onLayoutReady((()=>{let e;for(e of app.workspace.getLeavesOfType("markdown"))e.view instanceof obsidian.MarkdownView&&A.isExcalidrawFile(e.view.file)&&(A.excalidrawFileModes[e.id||e.view.file.path]="excalidraw",A.setExcalidrawView(e))}))}registerInstallCodeblockProcessor(){const A=async(A,e)=>{let t=null;try{const A=e.parentElement.querySelector(`a[href="#${e.previousElementSibling.getAttribute("data-heading")}"]`);A.style.paddingRight="10px",t=A.parentElement.createEl("button",null,(A=>{A.setText(t$d("UPDATE_SCRIPT")),A.addClass("mod-cta"),A.style.backgroundColor="var(--interactive-success)",A.style.display="none"}))}catch(e){errorlog({where:"this.registerInstallCodeblockProcessor",source:A,error:e})}A=A.trim(),e.createEl("button",null,(async e=>{const i=A=>{switch(t&&(t.style.display="none"),A){case"CHECKING":e.setText(t$d("CHECKING_SCRIPT")),e.style.backgroundColor="var(--interactive-normal)";break;case"INSTALL":e.setText(t$d("INSTALL_SCRIPT")),e.style.backgroundColor="var(--interactive-accent)";break;case"UPTODATE":e.setText(t$d("UPTODATE_SCRIPT")),e.style.backgroundColor="var(--interactive-normal)";break;case"UPDATE":e.setText(t$d("UPDATE_SCRIPT")),e.style.backgroundColor="var(--interactive-success)",t&&(t.style.display=null);break;case"ERROR":e.setText(t$d("UNABLETOCHECK_SCRIPT")),e.style.backgroundColor="var(--interactive-normal)"}};e.addClass("mod-cta");let n=A;try{n=decodeURI(A)}catch(e){errorlog({where:"ExcalidrawPlugin.registerInstallCodeblockProcessor.codeblockProcessor.onClick",source:A,error:e})}const a=n.substring(n.lastIndexOf("/")+1),r=`${this.settings.scriptFolderPath}/Downloaded`,s=`${r}/${a}`,o=getIMGFilename(s,"svg");let l=this.app.vault.getAbstractFileByPath(s),c=this.app.vault.getAbstractFileByPath(o);if(i(l?"CHECKING":"INSTALL"),e.onclick=async()=>{const e=async(A,e,t)=>{const i=await obsidian.request({url:A});return!i||i.startsWith("404: Not Found")?null:(e?await this.app.vault.modify(e,i):(await checkAndCreateFolder(r),e=await this.app.vault.create(t,i)),e)};try{if(l=await e(A,l,s),!l)throw i("ERROR"),"File not found";c=await e(getIMGFilename(A,"svg"),c,o),i("UPTODATE"),new obsidian.Notice(`Installed: ${l.basename}`)}catch(A){new obsidian.Notice(`Error installing script: ${a}`),errorlog({where:"ExcalidrawPlugin.registerInstallCodeblockProcessor.codeblockProcessor.onClick",error:A})}},t&&(t.onclick=e.onclick),!(l&&l instanceof obsidian.TFile))return;const d=new Map;JSON.parse(await obsidian.request({url:"https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/directory-info.json"})).forEach((A=>d.set(A.fname,A.mtime)));const h=(A,e)=>{if(0===d.size||!d.has(A))return"ERROR";const t=d.get(A);return!e||t>e.stat.mtime?"UPDATE":"UPTODATE"},g=h(a,l),u=h(getIMGFilename(a,"svg"),c&&c instanceof obsidian.TFile?c:null);i("UPTODATE"===g&&"UPTODATE"===u||"UPTODATE"===g&&"ERROR"===u?"UPTODATE":"ERROR"===g?"ERROR":"UPDATE"===g||"UPDATE"===u?"UPDATE":"UPTODATE")}))};this.registerMarkdownCodeBlockProcessor(SCRIPT_INSTALL_CODEBLOCK,(async(e,t)=>{t.addEventListener(RERENDER_EVENT,(async i=>{i.stopPropagation(),t.empty(),A(e,t)})),A(e,t)}))}addMarkdownPostProcessor(){initializeMarkdownPostProcessor(this),this.registerMarkdownPostProcessor(markdownPostProcessor),this.registerEvent(this.app.workspace.on("hover-link",hoverEvent)),this.observer=observer,this.observer.observe(document,{childList:!0,subtree:!0})}addThemeObserver(){this.themeObserver=new MutationObserver((async A=>{var e,t,i,n,a,r,s,o;if(!this.settings.matchThemeTrigger)return;if((null===(e=A[0])||void 0===e?void 0:e.oldValue)===(null===(i=null===(t=A[0])||void 0===t?void 0:t.target)||void 0===i?void 0:i.getAttribute("class")))return;if((null===(a=null===(n=A[0])||void 0===n?void 0:n.oldValue)||void 0===a?void 0:a.includes("theme-dark"))===(null===(o=null===(s=null===(r=A[0])||void 0===r?void 0:r.target)||void 0===s?void 0:s.classList)||void 0===o?void 0:o.contains("theme-dark")))return;const l=isObsidianThemeDark()?"dark":"light";this.app.workspace.getLeavesOfType("excalidraw").forEach((A=>{const e=A.view;e.file&&e.excalidrawRef&&e.setTheme(l)}))})),this.themeObserver.observe(document.body,{attributeOldValue:!0,attributeFilter:["class"]})}experimentalFileTypeDisplayToggle(A){A?this.experimentalFileTypeDisplay():(this.fileExplorerObserver&&this.fileExplorerObserver.disconnect(),this.fileExplorerObserver=null)}experimentalFileTypeDisplay(){const A=A=>{if(1!=A.childElementCount)return;const e=A.getAttribute("data-path");if(!e)return;const t=this.app.vault.getAbstractFileByPath(e);t&&t instanceof obsidian.TFile&&this.isExcalidrawFile(t)&&A.insertBefore(createDiv({cls:"nav-file-tag",text:this.settings.experimentalFileTag}),A.firstChild)};this.fileExplorerObserver=new MutationObserver((e=>{const t=e.filter((A=>A.addedNodes.length>0));t.forEach((e=>{e.addedNodes.forEach((e=>{e instanceof Element&&e.querySelectorAll(".nav-file-title").forEach(A)}))}))}));const e=this;this.app.workspace.onLayoutReady((()=>{document.querySelectorAll(".nav-file-title").forEach(A),e.fileExplorerObserver.observe(document.querySelector(".workspace"),{childList:!0,subtree:!0})}))}registerCommands(){this.openDialog=new OpenFileDialog(this.app,this),this.insertLinkDialog=new InsertLinkDialog(this.app),this.insertImageDialog=new InsertImageDialog(this),this.insertMDDialog=new InsertMDDialog(this),this.addRibbonIcon(ICON_NAME,t$d("CREATE_NEW"),(async A=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),A[CTRL_OR_CMD]?"new-pane":"active-pane")})),this.registerEvent(this.app.workspace.on("file-menu",((A,e)=>{A.addItem((A=>{A.setTitle(t$d("CREATE_NEW")).setIcon(ICON_NAME).onClick((()=>{let A=e.path;e instanceof obsidian.TFile&&(A=obsidian.normalizePath(e.path.substr(0,e.path.lastIndexOf(e.name)))),this.createAndOpenDrawing(getDrawingFilename(this.settings),"active-pane",A)}))}))}))),this.registerEvent(this.app.workspace.on("file-menu",((A,e)=>{e instanceof obsidian.TFile&&"excalidraw"==e.extension&&A.addItem((A=>{A.setTitle(t$d("CONVERT_FILE_KEEP_EXT")).onClick((()=>{this.convertSingleExcalidrawToMD(e,!1,!1)}))}))}))),this.registerEvent(this.app.workspace.on("file-menu",((A,e)=>{e instanceof obsidian.TFile&&"excalidraw"==e.extension&&A.addItem((A=>{A.setTitle(t$d("CONVERT_FILE_REPLACE_EXT")).onClick((()=>{this.convertSingleExcalidrawToMD(e,!0,!0)}))}))}))),this.addCommand({id:"excalidraw-download-lib",name:t$d("DOWNLOAD_LIBRARY"),callback:this.exportLibrary}),this.addCommand({id:"excalidraw-open",name:t$d("OPEN_EXISTING_NEW_PANE"),callback:()=>{this.openDialog.start(openDialogAction.openFile,!0)}}),this.addCommand({id:"excalidraw-open-on-current",name:t$d("OPEN_EXISTING_ACTIVE_PANE"),callback:()=>{this.openDialog.start(openDialogAction.openFile,!1)}}),this.addCommand({id:"excalidraw-insert-transclusion",name:t$d("TRANSCLUDE"),checkCallback:A=>A?Boolean(this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)):(this.openDialog.start(openDialogAction.insertLinkToDrawing,!1),!0)}),this.addCommand({id:"excalidraw-insert-last-active-transclusion",name:t$d("TRANSCLUDE_MOST_RECENT"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(obsidian.MarkdownView))&&null!=this.lastActiveExcalidrawFilePath;const e=this.app.vault.getAbstractFileByPath(this.lastActiveExcalidrawFilePath);return e instanceof obsidian.TFile&&(this.embedDrawing(e),!0)}}),this.addCommand({id:"excalidraw-autocreate",name:t$d("NEW_IN_NEW_PANE"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"new-pane")}}),this.addCommand({id:"excalidraw-autocreate-on-current",name:t$d("NEW_IN_ACTIVE_PANE"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"active-pane")}}),this.addCommand({id:"excalidraw-autocreate-popout",name:t$d("NEW_IN_POPOUT_WINDOW"),checkCallback:A=>{if(A)return!app.isMobile;this.createAndOpenDrawing(getDrawingFilename(this.settings),"popout-window")}});const A=async A=>{const e=this.app.workspace.getActiveViewOfType(obsidian.MarkdownView);if(!e)return;const t=getEmbedFilename(e.file.basename,this.settings),i=this.settings.embedUseExcalidrawFolder?null:(await getAttachmentsFolderAndFilePath(this.app,e.file.path,t)).folder,n=await this.createDrawing(t,i);await this.embedDrawing(n),this.openDrawing(n,A,!0)};this.addCommand({id:"excalidraw-autocreate-and-embed",name:t$d("NEW_IN_NEW_PANE_EMBED"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)):(A("new-pane"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-on-current",name:t$d("NEW_IN_ACTIVE_PANE_EMBED"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)):(A("active-pane"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-popout",name:t$d("NEW_IN_POPOUT_WINDOW_EMBED"),checkCallback:e=>e?!app.isMobile&&Boolean(this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)):(A("popout-window"),!0)}),this.addCommand({id:"export-svg",name:t$d("EXPORT_SVG"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(e.saveSVG(),!0)}}),this.addCommand({id:"search-text",name:t$d("SEARCH"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(search(e),!0)}}),this.addCommand({id:"fullscreen",name:t$d("TOGGLE_FULLSCREEN"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(e.isFullscreen()?e.exitFullscreen():e.gotoFullscreen(),!0)}}),this.addCommand({id:"export-png",name:t$d("EXPORT_PNG"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(e.savePNG(),!0)}}),this.addCommand({id:"toggle-lock",hotkeys:[{modifiers:["Ctrl","Shift"],key:"e"}],name:t$d("TOGGLE_LOCK"),checkCallback:A=>{if(A)return!!Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView))&&!this.app.workspace.getActiveViewOfType(ExcalidrawView).compatibilityMode;const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!(!e||e.compatibilityMode||(e.changeTextMode(e.textMode===TextMode.parsed?TextMode.raw:TextMode.parsed),0))}}),this.addCommand({id:"scriptengine-store",name:t$d("INSTALL_SCRIPT_BUTTON"),checkCallback:A=>A?Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView)):(new ScriptInstallPrompt(this).open(),!0)}),this.addCommand({id:"delete-file",name:t$d("DELETE_FILE"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(e){this.ea.reset(),this.ea.setView(e);const A=this.ea.getViewSelectedElement();if("image"!==A.type)return new obsidian.Notice("Please select an image or embedded markdown document",4e3),!0;const t=this.ea.getViewFileForImageElement(A);return t?(this.app.vault.delete(t),this.ea.deleteViewElements([A]),!0):(new obsidian.Notice("Please select an image or embedded markdown document",4e3),!0)}return!1}}),this.addCommand({id:"insert-link",hotkeys:[{modifiers:["Ctrl","Shift"],key:"k"}],name:t$d("INSERT_LINK"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(this.insertLinkDialog.start(e.file.path,e.addText),!0)}}),this.addCommand({id:"insert-link-to-element",hotkeys:[{modifiers:["Ctrl","Shift"],key:"k"}],name:t$d("INSERT_LINK_TO_ELEMENT_NORMAL"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(e.copyLinkToSelectedElementToClipboard(""),!0)}}),this.addCommand({id:"insert-link-to-element-group",name:t$d("INSERT_LINK_TO_ELEMENT_GROUP"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(e.copyLinkToSelectedElementToClipboard("group="),!0)}}),this.addCommand({id:"insert-link-to-element-area",name:t$d("INSERT_LINK_TO_ELEMENT_AREA"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(e.copyLinkToSelectedElementToClipboard("area="),!0)}}),this.addCommand({id:"toggle-lefthanded-mode",name:t$d("TOGGLE_LEFTHANDED_MODE"),checkCallback:A=>{if(A){if(this.app.workspace.getActiveViewOfType(ExcalidrawView)){const A=this.app.workspace.getActiveViewOfType(ExcalidrawView),e=null==A?void 0:A.excalidrawAPI;return!!e&&!!e.getAppState().trayModeEnabled}return!1}return this.app.workspace.getActiveViewOfType(ExcalidrawView),(async()=>{const A=this.settings.isLeftHanded;await this.loadSettings(!1),this.settings.isLeftHanded=!A,this.saveSettings(),setLeftHandedMode(!A),setTimeout((()=>setLeftHandedMode(!A)))})(),!0}}),this.addCommand({id:"insert-image",name:t$d("INSERT_IMAGE"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(this.insertImageDialog.start(e),!0)}}),this.addCommand({id:"release-notes",name:t$d("READ_RELEASE_NOTES"),checkCallback:A=>A?Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView)):(new ReleaseNotes(this.app,this,PLUGIN_VERSION).open(),!0)}),this.addCommand({id:"tray-mode",name:t$d("TRAY_MODE"),checkCallback:A=>{if(A){const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!A||!A.excalidrawRef)return!1;const e=A.excalidrawAPI.getAppState();return!e.zenModeEnabled&&!e.viewModeEnabled}const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!(!e||!e.excalidrawAPI||(e.toggleTrayMode(),0))}}),this.addCommand({id:"insert-md",name:t$d("INSERT_MD"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(this.insertMDDialog.start(e),!0)}}),this.addCommand({id:"insert-LaTeX-symbol",name:t$d("INSERT_LATEX"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(insertLaTeXToView(e),!0)}}),this.addCommand({id:"toggle-excalidraw-view",name:t$d("TOGGLE_MODE"),checkCallback:A=>{const e=this.app.workspace.getActiveFile();if(!e)return!1;const t=this.isExcalidrawFile(e);if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView))?!this.app.workspace.getActiveViewOfType(ExcalidrawView).compatibilityMode:t;const i=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(i){const A=i.leaf;return this.excalidrawFileModes[A.id||e.path]="markdown",void this.setMarkdownView(A)}const n=this.app.workspace.getActiveViewOfType(obsidian.MarkdownView);if(n&&t){const A=n.leaf;return this.excalidrawFileModes[A.id||e.path]="excalidraw",void this.setExcalidrawView(A)}}}),this.addCommand({id:"convert-to-excalidraw",name:t$d("CONVERT_NOTE_TO_EXCALIDRAW"),checkCallback:A=>{const e=this.app.workspace.getActiveFile(),t=this.app.workspace.getActiveViewOfType(obsidian.MarkdownView);if(!e||!t)return!1;const i=0===e.stat.size;if(A)return i;i&&(async()=>{await this.app.vault.modify(e,await this.getBlankDrawing()),this.setExcalidrawView(t.leaf)})()}}),this.addCommand({id:"convert-excalidraw",name:t$d("CONVERT_EXCALIDRAW"),checkCallback:A=>{if(A){const A=this.app.vault.getFiles().filter((A=>"excalidraw"==A.extension));return A.length>0}return this.convertExcalidrawToMD(),!0}})}async convertSingleExcalidrawToMD(A,e=!1,t=!1){const i=await this.app.vault.read(A),n=A.name.substring(0,A.name.lastIndexOf(".excalidraw"))+(e?".md":".excalidraw.md"),a=getNewUniqueFilepath(this.app.vault,n,obsidian.normalizePath(A.path.substring(0,A.path.lastIndexOf(A.name))));log(a);const r=await this.app.vault.create(a,FRONTMATTER+await this.exportSceneToMD(i));return this.settings.keepInSync&&EXPORT_TYPES.forEach((e=>{const t=A.path.substring(0,A.path.lastIndexOf(".excalidraw"))+e,i=this.app.vault.getAbstractFileByPath(obsidian.normalizePath(t));if(i&&i instanceof obsidian.TFile){const A=a.substring(0,a.lastIndexOf(".md"))+e;this.app.fileManager.renameFile(i,A)}})),t||this.app.vault.delete(A),r}async convertExcalidrawToMD(A=!1,e=!1){const t=this.app.vault.getFiles().filter((A=>"excalidraw"==A.extension));for(const i of t)this.convertSingleExcalidrawToMD(i,A,e);new obsidian.Notice(`Converted ${t.length} files.`)}registerMonkeyPatches(){this.registerEvent(app.workspace.on("editor-menu",((A,e,t)=>{if(!(t&&t instanceof obsidian.MarkdownView))return;const i=t.file,n=t.leaf;if(!t.file)return;const a=this.app.metadataCache.getFileCache(i);(null==a?void 0:a.frontmatter)&&a.frontmatter[FRONTMATTER_KEY]&&A.addItem((A=>A.setTitle(t$d("OPEN_AS_EXCALIDRAW")).setIcon(ICON_NAME).setSection("excalidraw").onClick((()=>{this.excalidrawFileModes[n.id||i.path]="excalidraw",this.setExcalidrawView(n)}))))}))),this.registerEvent(app.workspace.on("file-menu",((A,e,t,i)=>{if(!(i&&i.view instanceof obsidian.MarkdownView))return;if(!(e instanceof obsidian.TFile))return;const n=this.app.metadataCache.getFileCache(e);(null==n?void 0:n.frontmatter)&&n.frontmatter[FRONTMATTER_KEY]&&(A.addItem((A=>{A.setTitle(t$d("OPEN_AS_EXCALIDRAW")).setIcon(ICON_NAME).setSection("pane").onClick((()=>{this.excalidrawFileModes[i.id||e.path]="excalidraw",this.setExcalidrawView(i)}))})),A.items.unshift(A.items.pop()))})));const A=this;this.register(around(obsidian.WorkspaceLeaf.prototype,{detach:e=>function(){var t;const i=null===(t=this.view)||void 0===t?void 0:t.getState();return(null==i?void 0:i.file)&&A.excalidrawFileModes[this.id||i.file]&&delete A.excalidrawFileModes[this.id||i.file],e.apply(this)},setViewState:e=>function(t,...i){var n;if(A._loaded&&"markdown"===t.type&&(null===(n=t.state)||void 0===n?void 0:n.file)&&"markdown"!==A.excalidrawFileModes[this.id||t.state.file]){const n=app.metadataCache.getCache(t.state.file);if((null==n?void 0:n.frontmatter)&&n.frontmatter[FRONTMATTER_KEY]){const n=Object.assign(Object.assign({},t),{type:"excalidraw"});return A.excalidrawFileModes[t.state.file]="excalidraw",e.apply(this,[n,...i])}}return e.apply(this,[t,...i])}}))}registerEventListeners(){const A=this;this.app.workspace.onLayoutReady((async()=>{A.registerEvent(app.vault.on("rename",(async(e,t)=>{e instanceof obsidian.TFile&&A.isExcalidrawFile(e)&&A.settings.keepInSync&&[EXPORT_TYPES,"excalidraw"].flat().forEach((async A=>{const i=getIMGFilename(t,A),n=app.vault.getAbstractFileByPath(obsidian.normalizePath(i));if(n&&n instanceof obsidian.TFile){const t=getIMGFilename(e.path,A);await app.fileManager.renameFile(n,t)}}))}))),A.registerEvent(app.vault.on("modify",(async e=>{app.workspace.getLeavesOfType("excalidraw").forEach((async t=>{const i=t.view;if(i.file&&(i.file.path===e.path||"excalidraw"===e.extension&&`${e.path.substring(0,e.path.lastIndexOf(".excalidraw"))}.md`===i.file.path)){if(i.semaphores.preventReload)return void(i.semaphores.preventReload=!1);if(i.lastSaveTimestamp+3e5{if(!(e instanceof obsidian.TFile))return;const t=this.excalidrawFiles.has(e);if(this.updateFileCache(e,void 0,!0),!t)return;const i=app.workspace.getLeavesOfType("excalidraw");for(let A=0;A{[EXPORT_TYPES,"excalidraw"].flat().forEach((async A=>{const t=getIMGFilename(e.path,A),i=app.vault.getAbstractFileByPath(obsidian.normalizePath(t));i&&i instanceof obsidian.TFile&&await app.vault.delete(i)}))}),500)}))),A.registerEvent(app.workspace.on("active-leaf-change",(async e=>{var t;A.leafChangeTimeout&&clearTimeout(this.leafChangeTimeout),A.leafChangeTimeout=setTimeout((()=>{A.leafChangeTimeout=null}),1e3);const i=A.activeExcalidrawView,n=e.view instanceof ExcalidrawView?e.view:null;if(A.activeExcalidrawView=n,n&&(A.lastActiveExcalidrawFilePath=null===(t=n.file)||void 0===t?void 0:t.path),i&&i!=n&&(i.leaf!=e&&i.semaphores.dirty&&await i.save(!0),i.file&&A.triggerEmbedUpdates(i.file.path)),n&&(!i||i.leaf!=e)){const A=n.file;n.file&&setTimeout((()=>{var e;n&&n._loaded&&(null===(e=n.file)||void 0===e?void 0:e.path)===(null==A?void 0:A.path)&&(n.activeLoader||n.loadSceneFiles())}),2e3)}if(A.popScope&&(A.popScope(),A.popScope=null),n){const e=this.app.keymap.getRootScope(),t=e.register(["Mod"],"Enter",(()=>!0));e.keys.unshift(e.keys.pop()),A.popScope=()=>e.unregister(t)}}))),A.addFileSaveTriggerEventHandlers();const e=app.metadataCache;e.getCachedFiles().forEach((t=>{var i;const n=null===(i=e.getCache(t))||void 0===i?void 0:i.frontmatter;(n&&void 0!==n[FRONTMATTER_KEY]||t.match(/\.excalidraw$/))&&A.updateFileCache(app.vault.getAbstractFileByPath(t),n)})),this.registerEvent(e.on("changed",((A,e,t)=>this.updateFileCache(A,null==t?void 0:t.frontmatter))))}))}addFileSaveTriggerEventHandlers(){this.registerEvent(this.app.workspace.on("click",(A=>{this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&(!A.target||"excalidraw__canvas"!==A.target.className&&!getParentOfClass(A.target,"excalidraw-wrapper"))&&this.activeExcalidrawView.save()}))),this.registerEvent(this.app.workspace.on("file-menu",(()=>{this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()}))),this.modalContainerObserver=new MutationObserver((async A=>{1===A.length&&"childList"===A[0].type&&1===A[0].addedNodes.length&&this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()})),this.modalContainerObserver.observe(document.body,{childList:!0});const A=document.querySelector(".workspace-drawer.mod-left"),e=document.querySelector(".workspace-drawer.mod-right");if(A||e){const t=async A=>{"display: none;"===A[0].oldValue&&this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()},i={attributeOldValue:!0,attributeFilter:["style"]};A&&(this.workspaceDrawerLeftObserver=new MutationObserver(t),this.workspaceDrawerLeftObserver.observe(A,i)),e&&(this.workspaceDrawerRightObserver=new MutationObserver(t),this.workspaceDrawerRightObserver.observe(e,i))}}updateFileCache(A,e,t=!1){e&&void 0!==e[FRONTMATTER_KEY]?this.excalidrawFiles.add(A):t||"excalidraw"!==A.extension?this.excalidrawFiles.delete(A):this.excalidrawFiles.add(A)}onunload(){destroyExcalidrawAutomate(),this.popScope&&(this.popScope(),this.popScope=null),this.observer.disconnect(),this.themeObserver.disconnect(),this.modalContainerObserver.disconnect(),this.workspaceDrawerLeftObserver&&this.workspaceDrawerLeftObserver.disconnect(),this.workspaceDrawerRightObserver&&this.workspaceDrawerRightObserver.disconnect(),this.fileExplorerObserver&&this.fileExplorerObserver.disconnect(),this.app.workspace.getLeavesOfType("excalidraw").forEach((A=>{this.setMarkdownView(A)})),this.mathjaxDiv&&document.body.removeChild(this.mathjaxDiv),Object.values(this.packageMap).forEach((A=>{delete A.excalidrawLib,delete A.reactDOM,delete A.react}))}async embedDrawing(A){const e=this.app.workspace.getActiveViewOfType(obsidian.MarkdownView);if(e&&e.file){const t=this.app.metadataCache.fileToLinktext(A,e.file.path,"excalidraw"===this.settings.embedType),i=e.editor;if("excalidraw"===this.settings.embedType)return i.replaceSelection(this.settings.embedWikiLink?`![[${t}]]`:`![](${encodeURI(t)})`),void i.focus();let n=this.settings.autoExportLightAndDark?getExportTheme(this,A,this.settings.exportWithTheme&&isObsidianThemeDark()?"dark":"light"):"";n=""===n?"":n+".";const a=getIMGFilename(t,n+this.settings.embedType.toLowerCase()),r=getIMGFilename(A.path,n+this.settings.embedType.toLowerCase()),s="dark."===n?"light.":"dark.",o=getIMGFilename(t,s+this.settings.embedType.toLowerCase());this.app.vault.getAbstractFileByPath(r)||(await this.app.vault.create(r,""),await sleep$1(200)),i.replaceSelection(this.settings.embedWikiLink?`![[${a}]]\n%%[[${t}|🖋 Edit in Excalidraw]]${o?", and the [["+o+"|"+s.split(".")[0]+" exported image]]":""}%%`:`![](${encodeURI(a)})\n%%[🖋 Edit in Excalidraw](${encodeURI(t)})${o?", and the ["+s.split(".")[0]+" exported image]("+encodeURI(o)+")":""}%%`),i.focus()}}async loadSettings(A=!0){this.settings=Object.assign({},DEFAULT_SETTINGS,await this.loadData()),A&&setLeftHandedMode(this.settings.isLeftHanded),this.settings.autosave=!0,this.settings.autosaveInterval=app.isMobile?1e4:15e3}async saveSettings(){await this.saveData(this.settings)}getStencilLibrary(){return""===this.settings.library||"deprecated"===this.settings.library?this.settings.library2:JSON_parse(this.settings.library)}setStencilLibrary(A){this.settings.library="deprecated",this.settings.library2=A}triggerEmbedUpdates(A){const e=new Set;app.workspace.iterateAllLeaves((t=>{const i=app.isMobile?document:t.view.containerEl.ownerDocument;if(!i)return;if(e.has(i))return;e.add(i);const n=i.createEvent("Event");n.initEvent(RERENDER_EVENT,!0,!1),i.querySelectorAll("div[class^='excalidraw-svg']"+(A?`[src='${A.replaceAll("'","\\'")}']`:"")).forEach((A=>A.dispatchEvent(n)))}))}openDrawing(A,e,t=!1,i){let n;"popout-window"===e?n=app.workspace.openPopoutLeaf():(n=this.app.workspace.getLeaf(!1),"empty"!==n.view.getViewType()&&"new-pane"===e&&(n=getNewOrAdjacentLeaf(this,n))),n.openFile(A,i&&""!==i?{active:t,eState:{subpath:i}}:{active:t})}async getBlankDrawing(){const A=this.app.metadataCache.getFirstLinkpathDest(obsidian.normalizePath(this.settings.templateFilePath),"");if(A&&A instanceof obsidian.TFile&&("md"==A.extension&&!this.settings.compatibilityMode||"excalidraw"==A.extension&&this.settings.compatibilityMode)){const e=await this.app.vault.read(A);if(e)return this.settings.matchTheme?changeThemeOfExcalidrawMD(e):e}if(this.settings.compatibilityMode)return this.settings.matchTheme&&isObsidianThemeDark()?DARK_BLANK_DRAWING:BLANK_DRAWING;const e=this.settings.matchTheme&&isObsidianThemeDark()?DARK_BLANK_DRAWING:BLANK_DRAWING;return`${FRONTMATTER}\n${getMarkdownDrawingSection(e,this.settings.compress)}`}async exportSceneToMD(A){var e,t;if(!A)return"";const i=null===(e=JSON_parse(A).elements)||void 0===e?void 0:e.filter((A=>"text"==A.type));let n,a="# Text Elements\n";for(const e of i)n=e.id,e.id.length>8&&(n=nanoid(),A=A.replaceAll(e.id,n)),a+=`${null!==(t=e.originalText)&&void 0!==t?t:e.text} ^${n}\n\n`;return a+getMarkdownDrawingSection(JSON.stringify(JSON_parse(A),null,"\t"),this.settings.compress)}async createDrawing(A,e,t){const i=obsidian.normalizePath(e||this.settings.folder);await checkAndCreateFolder(i);const n=getNewUniqueFilepath(this.app.vault,A,i),a=await this.app.vault.create(n,null!=t?t:await this.getBlankDrawing());let r=0;for(;a instanceof obsidian.TFile&&!this.isExcalidrawFile(a)&&r++<10;)await sleep$1(50);return r>10&&errorlog({file:a,error:"new drawing not recognized as an excalidraw file",fn:this.createDrawing}),a}async createAndOpenDrawing(A,e,t,i){const n=await this.createDrawing(A,t,i);return this.openDrawing(n,e,!0),n.path}async setMarkdownView(A){const e=A.view.getState();await A.setViewState({type:"excalidraw",state:{file:null}}),await A.setViewState({type:"markdown",state:e,popstate:!0},{focus:!0})}async setExcalidrawView(A){await A.setViewState({type:"excalidraw",state:A.view.getState(),popstate:!0})}isExcalidrawFile(A){if("excalidraw"==A.extension)return!0;const e=A?this.app.metadataCache.getFileCache(A):null;return!!(null==e?void 0:e.frontmatter)&&!!e.frontmatter[FRONTMATTER_KEY]}async exportLibrary(){this.app.isMobile?new Prompt(this.app,"Please provide a filename","my-library","filename, leave blank to cancel action").openAndGetValue((async A=>{if(!A)return;A=`${A}.excalidrawlib`;const e=obsidian.normalizePath(this.settings.folder);await checkAndCreateFolder(e);const t=getNewUniqueFilepath(this.app.vault,A,e);this.app.vault.create(t,this.settings.library),new obsidian.Notice(`Exported library to ${t}`,6e3)})):download("data:text/plain;charset=utf-8",encodeURIComponent(JSON.stringify(this.settings.library2,null,"\t")),"my-obsidian-library.excalidrawlib")}}module.exports=ExcalidrawPlugin; +EXPR:/(!)?(\[\[([^|\]]+)\|?([^\]]+)?]]|\[([^\]]*)]\(([^)]*)\))(\{(\d+)\})?/g,getRes:A=>A.matchAll(REGEX_LINK.EXPR),isTransclusion:A=>!!A.value[1],getLink:A=>A.value[3]?A.value[3]:A.value[6],isWikiLink:A=>!!A.value[3],getAliasOrLink:A=>REGEX_LINK.isWikiLink(A)?A.value[4]?A.value[4]:A.value[3]:A.value[5]?A.value[5]:A.value[6],getWrapLength:(A,e)=>{const t=parseInt(A.value[8]);return isNaN(t)?e>0?e:null:t}},DRAWING_REG=/\n# Drawing\n[^`]*(```json\n)([\s\S]*?)```\n/gm,DRAWING_REG_FALLBACK=/\n# Drawing\n(```json\n)?(.*)(```)?(%%)?/gm,DRAWING_COMPRESSED_REG=/(\n# Drawing\n[^`]*(?:```compressed\-json\n))([\s\S]*?)(```\n)/gm,DRAWING_COMPRESSED_REG_FALLBACK=/(\n# Drawing\n(?:```compressed\-json\n)?)(.*)((```)?(%%)?)/gm,REG_LINKINDEX_HYPERLINK=/^\w+:\/\//,isCompressedMD=A=>null!==A.match(/```compressed\-json\n/gm),getDecompressedScene=A=>{let e,t=A.matchAll(DRAWING_COMPRESSED_REG);return e=t.next(),e.done&&(t=A.matchAll(DRAWING_COMPRESSED_REG_FALLBACK),e=t.next()),e.value&&e.value.length>1?[decompress(e.value[2]),e]:[null,e]},changeThemeOfExcalidrawMD=A=>{const e=isCompressedMD(A);let t=e?getDecompressedScene(A)[0]:A;return t?(isObsidianThemeDark?1===(t.match(/"theme"\s*:\s*"light"\s*,/g)||[]).length&&(t=t.replace(/"theme"\s*:\s*"light"\s*,/,'"theme": "dark",')):1===(t.match(/"theme"\s*:\s*"dark"\s*,/g)||[]).length&&(t=t.replace(/"theme"\s*:\s*"dark"\s*,/,'"theme": "light",')),e?A.replace(DRAWING_COMPRESSED_REG,`$1${compress(t)}$3`):t):A};function getJSON(A){let e,t;if(isCompressedMD(A)){const[e,t]=getDecompressedScene(A);return e?{scene:e.substring(0,e.lastIndexOf("}")+1),pos:t.value.index}:{scene:A,pos:t.value?t.value.index:0}}if(e=A.matchAll(DRAWING_REG),t=e.next(),t.done&&(e=A.matchAll(DRAWING_REG_FALLBACK),t=e.next()),t.value&&t.value.length>1){const A=t.value[2];return{scene:A.substr(0,A.lastIndexOf("}")+1),pos:t.value.index}}return{scene:A,pos:t.value?t.value.index:0}}function getMarkdownDrawingSection(A,e){return e?`%%\n# Drawing\n\`\`\`compressed-json\n${compress(A)}\n\`\`\`\n%%`:`%%\n# Drawing\n\`\`\`json\n${A}\n\`\`\`\n%%`}const estimateMaxLineLen=(A,e)=>{if(!e||!A)return null;if(A===e)return null;let t=0;const i=A.split("\n");if(1===i.length)return null;for(const A of i)A.length>t&&(t=A.length);return t},wrap=(A,e)=>e?wrapText(A,e,!1,0):A;class ExcalidrawData{constructor(A){this.plugin=A,this.textElements=null,this.elementLinks=null,this.scene=null,this.deletedElements=[],this.file=null,this.autoexportPreference=AutoexportPreference.inherit,this.textMode=TextMode.raw,this.loaded=!1,this.files=null,this.equations=null,this.compatibilityMode=!1,this.selectedElementIds={},this.disableCompression=!1,this.app=A.app,this.files=new Map,this.equations=new Map}initializeNonInitializedFields(){var A,e;if(!this.scene||!this.scene.elements)return;const t=this.scene.elements;for(const i of t){if(i.boundElements){const A=new Map;i.boundElements.forEach((e=>{A.set(e.id,e.type)}));const e=Array.from(A,(([A,e])=>({id:A,type:e})));e.length!==i.boundElements.length&&(i.boundElements=e)}i.boundElementIds&&(i.boundElements||(i.boundElements=[]),i.boundElements=i.boundElements.concat(i.boundElementIds.map((A=>({type:"arrow",id:A})))),delete i.boundElementIds),"text"!==i.type||i.containerId||(i.containerId=null),null===i.x&&(i.x=0),null===i.y&&(i.y=0),null===(null===(A=i.startBinding)||void 0===A?void 0:A.focus)&&(i.startBinding.focus=0),null===(null===(e=i.endBinding)||void 0===e?void 0:e.focus)&&(i.endBinding.focus=0),null===i.fontSize&&(i.fontSize=20)}try{t.filter((A=>"text"===A.type&&A.containerId&&t.some((e=>e.id===A.containerId&&e.boundElements.length>0&&e.boundElements.some((e=>"text"===e.type&&e.id!==A.id&&e.id.length>8)))))).forEach((A=>{try{const e=t.filter((e=>e.id===A.containerId))[0],i=e.boundElements.filter((A=>!("text"===A.type&&!t.some((e=>e.id===A.id)))));e.boundElements=[{id:A.id,type:"text"}].concat(i)}catch(A){}})),t.filter((A=>A.boundElements&&A.boundElements.length>0)).forEach((A=>{const e=A.boundElements.filter((A=>t.some((e=>e.id===A.id))));e.length!==A.boundElements.length&&(A.boundElements=e)})),t.filter((A=>"text"===A.type&&A.containerId&&!t.some((e=>e.id===A.containerId)))).forEach((A=>{A.containerId=null}))}catch(A){}}async loadData(A,e,t){if(!e)return!1;if(this.loaded=!1,this.selectedElementIds={},this.textElements=new Map,this.elementLinks=new Map,this.file!=e&&(this.files.clear(),this.equations.clear()),this.file=e,this.compatibilityMode=!1,this.setShowLinkBrackets(),this.setLinkPrefix(),this.setUrlPrefix(),this.setAutoexportPreferences(),this.scene=null,this.plugin.settings.syncExcalidraw){const A=`${e.path.substring(0,e.path.lastIndexOf(".md"))}.excalidraw`,t=this.app.vault.getAbstractFileByPath(A);if(t&&t instanceof obsidian.TFile&&t.stat.mtime>e.stat.mtime){const A=await this.app.vault.read(t);this.scene=JSON.parse(A)}}let i=null;i=(()=>{const e=getJSON(A);if(-1===e.pos)throw new Error("Excalidraw JSON not found in the file");return this.scene||(this.scene=JSON_parse(e.scene)),e})(),this.deletedElements=this.scene.elements.filter((A=>A.isDeleted)),this.scene.elements=this.scene.elements.filter((A=>!A.isDeleted)),this.scene.files||(this.scene.files={}),hasExportTheme(this.plugin,this.file)?this.scene.appState.theme=getExportTheme(this.plugin,this.file,"light"):this.plugin.settings.matchThemeAlways&&(this.scene.appState.theme=isObsidianThemeDark()?"dark":"light"),this.initializeNonInitializedFields();let n=(A=A.substring(0,i.pos)).search(/(^%%\n)?# Text Elements\n/m);if(-1===n)return await this.setTextMode(t,!1),this.loaded=!0,!0;n+=A.match(/((^%%\n)?# Text Elements\n)/m)[0].length,A=A.substring(n),n=0;const a=" ^12345678\n\n".length;let r,s=A.matchAll(/\s\^(.{8})[\n]+/g);for(;!(r=s.next()).done;){let e=A.substring(n,r.value.index);const t=r.value[1],i=this.scene.elements.filter((A=>A.id===t))[0];if(i)if("text"!==i.type)i.link!==e&&(i.link=e,i.version++,i.versionNonce++),this.elementLinks.set(t,e);else{const A=estimateMaxLineLen(i.text,i.originalText),n=e.matchAll(/^%%\*\*\*>>>text element-link:(\[\[[^<*\]]*]])<<<\*\*\*%%/gm).next();n.done||(e=e.replace(/^%%\*\*\*>>>text element-link:\[\[[^<*\]]*]]<<<\*\*\*%%/gm,""),i.link=n.value[1]);const a=await this.parse(e);this.textElements.set(t,{raw:e,parsed:a.parsed,wrapAt:A}),a.link&&(i.link=a.link),!i||i.rawText&&""!==i.rawText||(i.rawText=e)}n=r.value.index+a}for(s=(A=A.substring(A.indexOf("# Embedded files\n")+"# Embedded files\n".length)).matchAll(/([\w\d]*):\s*\[\[([^\]]*)]]\n/gm);!(r=s.next()).done;){const A=new EmbeddedFile(this.plugin,this.file.path,r.value[2]);this.setFile(r.value[1],A)}for(s=A.matchAll(/([\w\d]*):\s*\$\$(.*)(\$\$\s*\n)/gm);!(r=s.next()).done;)this.setEquation(r.value[1],{latex:r.value[2],isLoaded:!1});return this.findNewTextElementsInScene(),this.findNewElementLinksInScene(),await this.setTextMode(t,!0),this.loaded=!0,!0}async loadLegacyData(A,e){return!!e&&(this.loaded=!1,this.selectedElementIds={},this.compatibilityMode=!0,this.file=e,this.textElements=new Map,this.elementLinks=new Map,this.setShowLinkBrackets(),this.setLinkPrefix(),this.setUrlPrefix(),this.scene=JSON.parse(A),this.scene.files||(this.scene.files={}),this.initializeNonInitializedFields(),this.plugin.settings.matchThemeAlways&&(this.scene.appState.theme=isObsidianThemeDark()?"dark":"light"),this.files.clear(),this.equations.clear(),this.findNewTextElementsInScene(),this.findNewElementLinksInScene(),await this.setTextMode(TextMode.raw,!0),this.loaded=!0,!0)}async setTextMode(A,e=!1){this.scene&&(this.textMode=A,await this.updateSceneTextElements(e))}updateTextElement(A,e,t,i=!1){if(i||e!=A.text){const i=_measureText(e,A.fontSize,A.fontFamily);A.text=e,A.originalText=t,A.containerId||(A.width=i.w),A.height=i.h,A.baseline=i.baseline}}async updateSceneTextElements(A=!1){var e,t,i,n;const a=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((A=>"text"===A.type));for(const e of a){const a=null!==(i=null!==(t=await this.getText(e.id,!1))&&void 0!==t?t:e.originalText)&&void 0!==i?i:e.text,r=null===(n=this.textElements.get(e.id))||void 0===n?void 0:n.wrapAt;this.updateTextElement(e,wrap(a,r),a,A)}}async getText(A,e=!0){const t=this.textElements.get(A);return t?this.textMode===TextMode.parsed?(t.parsed||this.textElements.set(A,{raw:t.raw,parsed:(await this.parse(t.raw)).parsed,wrapAt:t.wrapAt}),e?wrap(t.parsed,t.wrapAt):t.parsed):t.raw:null}findNewElementLinksInScene(){var A;const e=null===(A=this.scene.elements)||void 0===A?void 0:A.filter((A=>"text"!==A.type&&A.link&&A.link.startsWith("[[")&&!this.elementLinks.has(A.id)));if(0===e.length)return!1;let t,i=JSON.stringify(this.scene);for(const A of e)t=A.id,A.id.length>8&&(t=nanoid(),i=i.replaceAll(A.id,t)),this.elementLinks.set(t,A.link);return this.scene=JSON.parse(i),!0}findNewTextElementsInScene(A={}){var e;this.selectedElementIds=A;const t=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((A=>"text"===A.type));let i,n=JSON.stringify(this.scene),a=!1;for(const A of t)if(i=A.id,A.id.length>8){if(a=!0,i=nanoid(),this.selectedElementIds[A.id]&&(delete this.selectedElementIds[A.id],this.selectedElementIds[i]=!0),n=n.replaceAll(A.id,i),this.textElements.has(A.id)){const e=this.textElements.get(A.id);this.textElements.set(i,{raw:e.raw,parsed:e.parsed,wrapAt:e.wrapAt}),this.textElements.delete(A.id)}if(!this.textElements.has(i)){const e=A.rawText&&""!==A.rawText?A.rawText:A.text,t=estimateMaxLineLen(A.text,A.originalText);this.textElements.set(i,{raw:e,parsed:null,wrapAt:t}),this.parseasync(i,e,t)}}else if(!this.textElements.has(A.id)){const e=A.rawText&&""!==A.rawText?A.rawText:A.text,t=estimateMaxLineLen(A.text,A.originalText);this.textElements.set(i,{raw:e,parsed:null,wrapAt:t}),this.parseasync(i,e,t)}return a&&(this.scene=JSON.parse(n)),a}updateElementLinksFromScene(){var A;for(const e of this.elementLinks.keys()){const t=null===(A=this.scene.elements)||void 0===A?void 0:A.filter((A=>"text"!==A.type&&A.id===e&&A.link&&A.link.startsWith("[[")));0===t.length?this.elementLinks.delete(e):this.elementLinks.set(e,t[0].link)}}async updateTextElementsFromScene(){var A,e,t;for(const i of this.textElements.keys()){const n=null===(A=this.scene.elements)||void 0===A?void 0:A.filter((A=>"text"===A.type&&A.id===i));if(0===n.length)this.textElements.delete(i);else{const A=await this.getText(i,!1),a=this.scene.prevTextMode===TextMode.parsed?n[0].rawText:null!==(e=n[0].originalText)&&void 0!==e?e:n[0].text;if(A!==(null!==(t=n[0].originalText)&&void 0!==t?t:n[0].text)){const A=estimateMaxLineLen(n[0].text,n[0].originalText);this.textElements.set(i,{raw:a,parsed:(await this.parse(a)).parsed,wrapAt:A})}}}}async parseasync(A,e,t){this.textElements.set(A,{raw:e,parsed:(await this.parse(e)).parsed,wrapAt:t})}parseLinks(A,e,t){return A.substring(e,t.value.index)+(this.showLinkBrackets?"[[":"")+REGEX_LINK.getAliasOrLink(t)+(this.showLinkBrackets?"]]":"")}async getTransclusion(A){const e=getLinkParts(A,this.file),t=this.app.metadataCache.getFirstLinkpathDest(e.path,this.file.path);return await getTransclusion(e,this.app,t,this.plugin.settings.pageTransclusionCharLimit)}async parse(A){A=this.parseCheckbox(A);let e="",t=null,i=0;const n=REGEX_LINK.getRes(A);let a,r=!1,s=!1;for(A.match(REG_LINKINDEX_HYPERLINK)&&(t=A,s=!0);!(a=n.next()).done;){if(!t){const A=REGEX_LINK.getLink(a);t=A.match(REG_LINKINDEX_HYPERLINK)?A:`[[${A}]]`}if(REGEX_LINK.isTransclusion(a)){let t=this.parseCheckbox((await this.getTransclusion(REGEX_LINK.getLink(a))).contents).replaceAll(/%%[^%]*%%/gm,"");this.plugin.settings.removeTransclusionQuoteSigns&&(t=t.replaceAll(/\n\s*>\s?/gm,"\n")),e+=A.substring(i,a.value.index)+wrapText(t,REGEX_LINK.getWrapLength(a,this.plugin.settings.wordWrappingDefault),this.plugin.settings.forceWrap)}else{const t=this.parseLinks(A,i,a);t&&(e+=t,s||r||(REGEX_LINK.getLink(a).match(REG_LINKINDEX_HYPERLINK)?s=!0:r=!0))}i=a.value.index+a.value[0].length}return e+=A.substring(i,A.length),r&&(e=this.linkPrefix+e),s&&(e=this.urlPrefix+e),{parsed:e,link:t}}parseCheckbox(A){return this.plugin.settings.parseTODO?A.replaceAll(/^- \[\s] /g,`${this.plugin.settings.todo} `).replaceAll(/\n- \[\s] /g,`\n${this.plugin.settings.todo} `).replaceAll(/^- \[[^\s]] /g,`${this.plugin.settings.done} `).replaceAll(/\n- \[[^\s]] /g,`\n${this.plugin.settings.done} `):A}quickParse(A){if((A=>{const e=REGEX_LINK.getRes(A);let t;for(;!(t=e.next()).done;)if(REGEX_LINK.isTransclusion(t))return!0;return!1})(A))return[null,null];A=this.parseCheckbox(A);let e="",t=null,i=0;const n=REGEX_LINK.getRes(A);let a,r=!1,s=!1;for(A.match(REG_LINKINDEX_HYPERLINK)&&(t=A,s=!0);!(a=n.next()).done;){if(!t){const A=REGEX_LINK.getLink(a);t=A.match(REG_LINKINDEX_HYPERLINK)?A:`[[${A}]]`}const n=this.parseLinks(A,i,a);n&&(e+=n,s||r||(REGEX_LINK.getLink(a).match(REG_LINKINDEX_HYPERLINK)?s=!0:r=!0)),i=a.value.index+a.value[0].length}return e+=A.substring(i,A.length),r&&(e=this.linkPrefix+e),s&&(e=this.urlPrefix+e),[e,t]}generateMD(A=[]){let e="# Text Elements\n";for(const A of this.textElements.keys()){const t=this.scene.elements.filter((e=>e.id===A));let i=this.textElements.get(A).raw;t&&1===t.length&&t[0].link&&t[0].rawText===t[0].originalText&&t[0].link.match(/^\[\[[^\]]*]]$/g)&&(i=`%%***>>>text element-link:${t[0].link}<<<***%%`+i),e+=`${i} ^${A}\n\n`}for(const A of this.elementLinks.keys())e+=`${this.elementLinks.get(A)} ^${A}\n\n`;if(e+=this.equations.size>0||this.files.size>0?"\n# Embedded files\n":"",this.equations.size>0)for(const A of this.equations.keys())e+=`${A}: $$${this.equations.get(A).latex}$$\n`;if(this.files.size>0)for(const A of this.files.keys()){const t=/(^[^#\|]*)/,i=this.files.get(A);e+=`${A}: [[${i.file?i.linkParts.original.replace(t,app.metadataCache.fileToLinktext(i.file,this.file.path)):i.linkParts.original}]]\n`}return e+=this.equations.size>0||this.files.size>0?"\n":"",e+getMarkdownDrawingSection(JSON.stringify({type:this.scene.type,version:this.scene.version,source:this.scene.source,elements:this.scene.elements.concat(A),appState:this.scene.appState,files:this.scene.files},null,"\t"),!this.disableCompression&&this.plugin.settings.compress)}async syncFiles(){var A;let e=!1;const t=this.scene,i=t.elements.filter((A=>"image"===A.type)).map((A=>A.fileId));if(this.files.forEach(((A,t)=>{i.contains(t)||(this.files.delete(t),e=!0)})),this.equations.forEach(((A,t)=>{i.contains(t)||(this.equations.delete(t),e=!0)})),!t.files||0===Object.keys(t.files).length)return!1;const n=new Set;i.forEach((A=>{if(n.has(A)){const i=this.getFile(A),a=this.getEquation(A);if(i&&i.file&&("md"!==i.file.extension||this.plugin.isExcalidrawFile(i.file)))return;const r=fileid();t.elements.filter((e=>e.fileId===A))[0].fileId=r,e=!0,n.add(r),i&&this.setFile(r,new EmbeddedFile(this.plugin,this.file.path,i.linkParts.original)),a&&this.setEquation(r,{latex:a.latex,isLoaded:!1})}n.add(A)}));for(const i of Object.keys(t.files))if(!this.hasFile(i)&&!this.hasEquation(i)){e=!0;let n=`Pasted Image ${window.moment().format("YYYYMMDDHHmmss_SSS")}`;const a=t.files[i].mimeType;switch(a){case"image/png":default:n+=".png";break;case"image/jpeg":n+=".jpg";break;case"image/svg+xml":n+=".svg";break;case"image/gif":n+=".gif"}const r=(await getAttachmentsFolderAndFilePath(this.app,this.file.path,n)).filepath,s=t.files[i].dataURL;await this.app.vault.createBinary(r,getBinaryFileFromDataURL(s));const o=new EmbeddedFile(this.plugin,this.file.path,r);o.setImage(s,a,{height:0,width:0},"dark"===(null===(A=t.appState)||void 0===A?void 0:A.theme),"image/svg+xml"===a),this.setFile(i,o)}return e}async syncElements(A,e){this.scene=A;let t=!1;return this.compatibilityMode||(t=await this.syncFiles(),this.scene.files={}),this.updateElementLinksFromScene(),t=t||this.setLinkPrefix()||this.setUrlPrefix()||this.setShowLinkBrackets()||this.findNewElementLinksInScene(),await this.updateTextElementsFromScene(),t||this.findNewTextElementsInScene(e)}async updateScene(A){this.scene=JSON_parse(A),this.updateElementLinksFromScene();const e=this.setLinkPrefix()||this.setUrlPrefix()||this.setShowLinkBrackets()||this.findNewElementLinksInScene();return await this.updateTextElementsFromScene(),!(!e&&!this.findNewTextElementsInScene()||(await this.updateSceneTextElements(),0))}getRawText(A){var e;return null===(e=this.textElements.get(A))||void 0===e?void 0:e.raw}getParsedText(A){const e=this.textElements.get(A);return e?[wrap(e.parsed,e.wrapAt),e.parsed,null]:[null,null,null]}setTextElement(A,e,t,i){const n=estimateMaxLineLen(e,t),[a,r]=this.quickParse(t);return a?(this.textElements.set(A,{raw:t,parsed:a,wrapAt:n}),[wrap(a,n),a,r]):(this.parse(t).then((e=>{const a=e.parsed;this.textElements.set(A,{raw:t,parsed:a,wrapAt:n}),a&&i(wrap(a,n),a)})),[null,null,null])}async addTextElement(A,e,t){let i=estimateMaxLineLen(e,t);this.textElements.has(A)&&(i=this.textElements.get(A).wrapAt);const n=await this.parse(t);return this.textElements.set(A,{raw:t,parsed:n.parsed,wrapAt:i}),[wrap(n.parsed,i),n.parsed,n.link]}deleteTextElement(A){this.textElements.delete(A)}getOpenMode(){const A=this.app.metadataCache.getFileCache(this.file);let e=this.plugin.settings.defaultMode;switch((null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-default-mode"]&&(e=A.frontmatter["excalidraw-default-mode"]),e){case"zen":return{viewModeEnabled:!1,zenModeEnabled:!0};case"view":return{viewModeEnabled:!0,zenModeEnabled:!1};default:return{viewModeEnabled:!1,zenModeEnabled:!1}}}getLinkOpacity(){const A=this.app.metadataCache.getFileCache(this.file);let e=this.plugin.settings.linkOpacity;return(null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-linkbutton-opacity"]&&(e=A.frontmatter["excalidraw-linkbutton-opacity"]),e}getOnLoadScript(){const A=this.app.metadataCache.getFileCache(this.file);return(null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-onload-script"]?A.frontmatter["excalidraw-onload-script"]:null}setLinkPrefix(){const A=this.linkPrefix,e=this.app.metadataCache.getFileCache(this.file);return(null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-link-prefix"]?this.linkPrefix=e.frontmatter["excalidraw-link-prefix"]:this.linkPrefix=this.plugin.settings.linkPrefix,A!=this.linkPrefix}setUrlPrefix(){const A=this.urlPrefix,e=this.app.metadataCache.getFileCache(this.file);return(null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-url-prefix"]?this.urlPrefix=e.frontmatter["excalidraw-url-prefix"]:this.urlPrefix=this.plugin.settings.urlPrefix,A!=this.urlPrefix}setAutoexportPreferences(){const A=this.app.metadataCache.getFileCache(this.file);if((null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-autoexport"])switch(A.frontmatter["excalidraw-autoexport"].toLowerCase()){case"none":this.autoexportPreference=AutoexportPreference.none;break;case"both":this.autoexportPreference=AutoexportPreference.both;break;case"png":this.autoexportPreference=AutoexportPreference.png;break;case"svg":this.autoexportPreference=AutoexportPreference.svg;break;default:this.autoexportPreference=AutoexportPreference.inherit}else this.autoexportPreference=AutoexportPreference.inherit}setShowLinkBrackets(){const A=this.showLinkBrackets,e=this.app.metadataCache.getFileCache(this.file);return(null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-link-brackets"]?this.showLinkBrackets=0!=e.frontmatter["excalidraw-link-brackets"]:this.showLinkBrackets=this.plugin.settings.showLinkBrackets,A!=this.showLinkBrackets}setFile(A,e){if(!e)return;if(this.files.set(A,e),!e.file)return;const t=e.linkParts.original.split("#");this.plugin.filesMaster.set(A,{path:e.file.path,blockrefData:1===t.length?null:t[1],hasSVGwithBitmap:e.isSVGwithBitmap})}getFiles(){return Object.values(this.files)}getFile(A){let e=this.files.get(A);if(e)return e;const t=this.plugin.filesMaster.get(A);return t?(e=new EmbeddedFile(this.plugin,this.file.path,t.blockrefData?t.path+"#"+t.blockrefData:t.path),this.files.set(A,e),e):e}getFileEntries(){return this.files.entries()}deleteFile(A){this.files.delete(A)}hasFile(A){if(this.files.has(A))return!0;if(this.plugin.filesMaster.has(A)){const e=this.plugin.filesMaster.get(A);if(!this.app.vault.getAbstractFileByPath(e.path))return this.plugin.filesMaster.delete(A),!0;const t=new EmbeddedFile(this.plugin,this.file.path,e.blockrefData?e.path+"#"+e.blockrefData:e.path);return this.files.set(A,t),!0}return!1}setEquation(A,e){this.equations.set(A,{latex:e.latex,isLoaded:e.isLoaded}),this.plugin.equationsMaster.set(A,e.latex)}getEquation(A){let e=this.equations.get(A);if(e)return e;const t=this.plugin.equationsMaster.get(A);return t?(this.equations.set(A,{latex:t,isLoaded:!1}),{latex:t,isLoaded:!1}):e}getEquationEntries(){return this.equations.entries()}deleteEquation(A){this.equations.delete(A)}hasEquation(A){return!!this.equations.has(A)||!!this.plugin.equationsMaster.has(A)&&(this.equations.set(A,{latex:this.plugin.equationsMaster.get(A),isLoaded:!1}),!0)}}const getTransclusion=async(A,e,t,i)=>{var n,a,r,s,o,l,c,d,h;if(!A.path)return{contents:A.original.trim(),lineNum:0};if(!(t&&t instanceof obsidian.TFile))return{contents:A.original.trim(),lineNum:0};const g=await e.vault.read(t);if(!A.ref)return i?{contents:g.substring(0,i).trim(),lineNum:0}:{contents:g.trim(),lineNum:0};const u=(await e.metadataCache.blockCache.getForFile({isCancelled:()=>!1},t)).blocks.filter((A=>"comment"!=A.node.type));if(!u)return{contents:A.original.trim(),lineNum:0};if(A.isBlockRef){let e=null===(n=u.filter((e=>e.node.id==A.ref))[0])||void 0===n?void 0:n.node;if(!e)return{contents:A.original.trim(),lineNum:0};["blockquote"].includes(e.type)&&(e=e.children[0]);const t=e.position.start.offset,i=e.position.start.line,a=e.position.end.offset;return{contents:g.substring(t,a).replaceAll(/ \^\S*$|^\^\S*$/gm,"").trim(),lineNum:i}}const p=u.filter((A=>0===A.display.search(/^#+\s/)));let w=null,m=0,f=null,B=1;for(let e=0;eB;)A++;return A===p.length&&p[A-1].node.depth>B?{leadingHashes:"#".repeat(B)+" ",contents:g.substring(w).trim(),lineNum:m}:(f=p[A].node.position.start.offset-1,{leadingHashes:"#".repeat(B)+" ",contents:g.substring(w,f).trim(),lineNum:m})}const t=p[e].node.children[0],i=null===(r=null===(a=p[e].node.data)||void 0===a?void 0:a.hProperties)||void 0===r?void 0:r.dataHeading,n=null==t?void 0:t.children;!w&&((null===(s=null==t?void 0:t.value)||void 0===s?void 0:s.replaceAll(REG_BLOCK_REF_CLEAN,""))===A.ref||(null===(o=null==t?void 0:t.title)||void 0===o?void 0:o.replaceAll(REG_BLOCK_REF_CLEAN,""))===A.ref||(null==i?void 0:i.replaceAll(REG_BLOCK_REF_CLEAN,""))===A.ref||n&&(null===(c=null===(l=n[0])||void 0===l?void 0:l.value)||void 0===c?void 0:c.replaceAll(REG_BLOCK_REF_CLEAN,""))===A.ref)&&(w=null===(d=p[e].node.children[0])||void 0===d?void 0:d.position.start.offset,B=p[e].node.depth,m=null===(h=p[e].node.children[0])||void 0===h?void 0:h.position.start.line)}return w?{leadingHashes:"#".repeat(B)+" ",contents:g.substring(w).trim(),lineNum:m}:{contents:A.original.trim(),lineNum:0}};class Prompt extends obsidian.Modal{constructor(A,e,t,i,n){super(A),this.prompt_text=e,this.default_value=t,this.placeholder=i,this.prompt_desc=n}onOpen(){this.titleEl.setText(this.prompt_text),this.createForm()}onClose(){this.contentEl.empty()}createForm(){var A;let e=this.contentEl.createDiv();e.addClass("excalidraw-prompt-div"),this.prompt_desc&&(e=e.createDiv(),e.style.width="100%",e.createEl("p").innerHTML=this.prompt_desc);const t=e.createEl("form");t.addClass("excalidraw-prompt-form"),t.type="submit",t.onsubmit=A=>{A.preventDefault(),this.resolve(this.promptEl.value),this.close()},this.promptEl=t.createEl("input"),this.promptEl.type="text",this.promptEl.placeholder=this.placeholder,this.promptEl.value=null!==(A=this.default_value)&&void 0!==A?A:"",this.promptEl.addClass("excalidraw-prompt-input"),this.promptEl.select()}async openAndGetValue(A){this.resolve=A,this.open()}}class GenericInputPrompt extends obsidian.Modal{constructor(A,e,t,i,n){super(A),this.header=e,this.didSubmit=!1,this.submitClickCallback=()=>this.submit(),this.cancelClickCallback=()=>this.cancel(),this.submitEnterCallback=A=>{"Enter"===A.key&&(A.preventDefault(),this.submit())},this.placeholder=t,this.input=i,this.buttons=n,this.waitForClose=new Promise(((A,e)=>{this.resolvePromise=A,this.rejectPromise=e})),this.display(),this.open()}static Prompt(A,e,t,i,n){return new GenericInputPrompt(A,e,t,i,n).waitForClose}display(){this.contentEl.empty(),this.titleEl.textContent=this.header;const A=this.contentEl.createDiv();this.inputComponent=this.createInputField(A,this.placeholder,this.input),this.createButtonBar(A)}createInputField(A,e,t){const i=new obsidian.TextComponent(A);return i.inputEl.style.width="100%",i.setPlaceholder(null!=e?e:"").setValue(null!=t?t:"").onChange((A=>this.input=A)).inputEl.addEventListener("keydown",this.submitEnterCallback),i}createButton(A,e,t){const i=new obsidian.ButtonComponent(A);return i.setButtonText(e).onClick(t),i}createButtonBar(A){const e=A.createDiv();if(this.buttons&&this.buttons.length>0){let A=null;for(const t of this.buttons){const i=new obsidian.ButtonComponent(e);i.setButtonText(t.caption).onClick((A=>{const e=t.action(this.input);e&&(this.input=e),this.submit()})),A=null!=A?A:i}A&&(A.setCta().buttonEl.style.marginRight="0")}else this.createButton(e,"Ok",this.submitClickCallback).setCta().buttonEl.style.marginRight="0";this.createButton(e,"Cancel",this.cancelClickCallback),e.style.display="flex",e.style.flexDirection="row-reverse",e.style.justifyContent="flex-start",e.style.marginTop="1rem"}submit(){this.didSubmit=!0,this.close()}cancel(){this.close()}resolveInput(){this.didSubmit?this.resolvePromise(this.input):this.rejectPromise("No input given.")}removeInputListener(){var A,e;null===(e=null===(A=this.inputComponent)||void 0===A?void 0:A.inputEl)||void 0===e||e.removeEventListener("keydown",this.submitEnterCallback)}onOpen(){super.onOpen(),this.inputComponent.inputEl.focus(),this.inputComponent.inputEl.select()}onClose(){super.onClose(),this.resolveInput(),this.removeInputListener()}}class GenericSuggester extends obsidian.FuzzySuggestModal{constructor(A,e,t,i,n){var a;super(A),this.displayItems=e,this.items=t,this.hint=i,this.instructions=n,this.limit=20,this.setPlaceholder(null!==(a=this.hint)&&void 0!==a?a:""),n&&this.setInstructions(this.instructions),this.promise=new Promise(((A,e)=>{this.resolvePromise=A,this.rejectPromise=e})),this.open()}static Suggest(A,e,t,i,n){return new GenericSuggester(A,e,t,i,n).promise}getItemText(A){return this.displayItems[this.items.indexOf(A)]}getItems(){return this.items}selectSuggestion(A,e){this.resolved=!0,super.selectSuggestion(A,e)}onChooseItem(A){this.resolved=!0,this.resolvePromise(A)}onClose(){super.onClose(),this.resolved||this.rejectPromise(this.inputEl.value)}}class NewFileActions extends obsidian.Modal{constructor(A,e,t,i,n){super(A.app),this.plugin=A,this.path=e,this.newPane=t,this.newWindow=i,this.view=n}onOpen(){this.createForm()}async onClose(){}openFile(A){A&&(this.newWindow?app.workspace.openPopoutLeaf():this.newPane?getNewOrAdjacentLeaf(this.plugin,this.view.leaf):this.view.leaf).openFile(A,{active:!0})}createForm(){this.titleEl.setText("New File"),this.contentEl.createDiv({cls:"excalidraw-prompt-center",text:"File does not exist. Do you want to create it?"}),this.contentEl.createDiv({cls:"excalidraw-prompt-center filepath",text:this.path}),this.contentEl.createDiv({cls:"excalidraw-prompt-center"},(A=>{A.style.textAlign="right";const e=()=>this.path&&""!==this.path?!!this.view.file||(new obsidian.Notice("Unknown error. It seems as if your drawing was closed or the drawing file is missing"),!1):(new obsidian.Notice("Error: Filename for new file may not be empty"),!1),t=async A=>{if(!this.path.includes("/")){const A=new RegExp(`${this.view.file.name}$`,"g");this.path=this.view.file.path.replace(A,this.path)}return this.path.match(/\.md$/)||(this.path=`${this.path}.md`),checkAndCreateFolder(splitFolderAndFilename(this.path).folderpath),await this.app.vault.create(this.path,A)};A.createEl("button",{text:"Create Markdown"}).onclick=async()=>{if(!e)return;const A=await t("");this.openFile(A),this.close()},A.createEl("button",{text:"Create Excalidraw"}).onclick=async()=>{if(!e)return;const A=await t(await this.plugin.getBlankDrawing());await sleep$1(200),this.openFile(A),this.close()},A.createEl("button",{text:"Never Mind"}).onclick=()=>{this.close()}}))}}class ScriptEngine{constructor(A){this.plugin=A,this.scriptIconMap={},this.loadScripts(),this.registerEventHandlers()}registerEventHandlers(){const A=A=>{if(!A.endsWith(".svg"))return;const e=app.vault.getAbstractFileByPath(getIMGFilename(A,"md"));e&&e instanceof obsidian.TFile&&(this.unloadScript(this.getScriptName(e),e.path),this.loadScript(e))};this.plugin.registerEvent(app.vault.on("delete",(async e=>{e instanceof obsidian.TFile&&e.path.startsWith(this.scriptPath)&&(this.unloadScript(this.getScriptName(e),e.path),A(e.path))}))),this.plugin.registerEvent(app.vault.on("create",(async e=>{e instanceof obsidian.TFile&&e.path.startsWith(this.scriptPath)&&(this.loadScript(e),A(e.path))}))),this.plugin.registerEvent(app.vault.on("rename",(async(e,t)=>{if(!(e instanceof obsidian.TFile))return;const i=t.startsWith(this.scriptPath),n=e.path.startsWith(this.scriptPath);i&&(this.unloadScript(this.getScriptName(t),t),A(t)),n&&(this.loadScript(e),A(e.path))})))}updateScriptPath(){this.scriptPath!==this.plugin.settings.scriptFolderPath&&(this.scriptPath&&this.unloadScripts(),this.loadScripts())}getListofScripts(){if(this.scriptPath=this.plugin.settings.scriptFolderPath,app.vault.getAbstractFileByPath(this.scriptPath))return app.vault.getFiles().filter((A=>A.path.startsWith(this.scriptPath)&&"md"===A.extension));this.scriptPath=null}loadScripts(){var A;null===(A=this.getListofScripts())||void 0===A||A.forEach((A=>this.loadScript(A)))}getScriptName(A){let e="",t="";A instanceof obsidian.TFile?(e=A.basename,t=A.path):(e=splitFolderAndFilename(A).basename,t=A);const i=t.split(`${this.scriptPath}/`)[1],n=i.lastIndexOf("/");return n>-1?i.substring(0,n+1)+e:e}async addScriptIconToMap(A,e){const t=getIMGFilename(A,"svg"),i=app.vault.getAbstractFileByPath(t),n=i&&i instanceof obsidian.TFile?await app.vault.read(i):null;this.scriptIconMap=Object.assign({},this.scriptIconMap),this.scriptIconMap[A]={name:e,svgString:n},this.updateToolPannels()}loadScript(A){if("md"!==A.extension)return;const e=this.getScriptName(A);this.addScriptIconToMap(A.path,e),this.plugin.addCommand({id:e,name:`(Script) ${e}`,checkCallback:t=>{if(t)return Boolean(app.workspace.getActiveViewOfType(ExcalidrawView));const i=app.workspace.getActiveViewOfType(ExcalidrawView);return!!i&&((async()=>{const t=await app.vault.read(A);t&&this.executeScript(i,t,e)})(),!0)}})}unloadScripts(){const A=app.vault.getFiles().filter((A=>A.path.startsWith(this.scriptPath)));A.forEach((A=>{this.unloadScript(this.getScriptName(A),A.path)}))}unloadScript(A,e){if(!e.endsWith(".md"))return;delete this.scriptIconMap[e],this.scriptIconMap=Object.assign({},this.scriptIconMap),this.updateToolPannels();const t=`${PLUGIN_ID}:${A}`;app.commands.commands[t]&&delete app.commands.commands[t]}async executeScript(A,e,t){if(!A||!e||!t)return;this.plugin.ea.reset(),this.plugin.ea.setView(A),this.plugin.ea.activeScript=t;const i=Object.getPrototypeOf((async()=>{})).constructor;let n=null;return n=await new i("ea","utils",e)(this.plugin.ea,{inputPrompt:(A,e,t,i)=>ScriptEngine.inputPrompt(app,A,e,t,i),suggester:(A,e,t,i)=>ScriptEngine.suggester(app,A,e,t,i)}),this.plugin.ea.activeScript=null,n}updateToolPannels(){app.workspace.getLeavesOfType("excalidraw").forEach((A=>{var e,t;null===(t=null===(e=A.view.toolsPanelRef)||void 0===e?void 0:e.current)||void 0===t||t.updateScriptIconMap(this.scriptIconMap)}))}static async inputPrompt(A,e,t,i,n){try{return await GenericInputPrompt.Prompt(A,e,t,i,n)}catch(A){return}}static async suggester(A,e,t,i,n){try{return await GenericSuggester.Suggest(A,e,t,i,n)}catch(A){return}}}var t$c={d:(A,e)=>{for(var t in e)t$c.o(e,t)&&!t$c.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},r$d={};t$c.d(r$d,{QA:()=>w$1,ZP:()=>j$1,qt:()=>x$1,MX:()=>$});const e$d={red:"hsl(0, 100%, 50%)",orange:"hsl(30, 100%, 50%)",yellow:"hsl(60, 100%, 50%)","lime green":"hsl(90, 100%, 50%)",green:"hsl(120, 100%, 50%)","blue green":"hsl(150, 100%, 50%)",cyan:"hsl(180, 100%, 50%)","sky blue":"hsl(210, 100%, 50%)",blue:"hsl(240, 100%, 50%)",purple:"hsl(270, 100%, 50%)",magenta:"hsl(300, 100%, 50%)",pink:"hsl(330, 100%, 50%)"};function s$a(A,e,t){return Math.max(A,Math.min(e,t))}function n$c(A,e){return+A.toFixed(e>=0?e:0)}function a$c(A){const e=A%360;return e<0?e+360:e}function i$a(A){return void 0!==A?s$a(0,A,1):1}function o$b(A){return Math.floor(Math.random()*A)}function h$4(A){var e;const{Cmin:t,Cmax:i,H:n,delta:a}=function(A){const[e,t,i]=Object.values(A).map((A=>A/255)),n=Math.max(e,t,i),a=Math.min(e,t,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===e?(t-i)/r%6:n===t?(i-e)/r+2:(e-t)/r+4,delta:r}}(A),r=(i+t)/2,s=0===a?0:a/(1-Math.abs(2*r-1));return{h:a$c(60*n),s:100*s,l:100*r,a:null!==(e=A.a)&&void 0!==e?e:1}}function u$8(A){const{h:e,s:t,l:i,a:n}=A,a=i/100,r=t/100,s=(1-Math.abs(2*a-1))*r,o=s*(1-Math.abs(e/60%2-1)),l=a-s/2,c=e<60||300<=e&&e<360?s:120<=e&&e<240?0:o,d=240<=e&&e<360?0:60<=e&&e<180?s:o,h=e<120?0:180<=e&&e<300?s:o,[g,u,p]=[c,d,h].map((A=>255*(A+l)));return{r:g,g:u,b:p,a:null!=n?n:1}}function l$5(A){const[e,t,i,n]=Object.values(A).map((A=>parseInt(A,16)));return{r:e,g:t,b:i,a:n?n/255:1}}const c$a=/^#?([\da-f])([\da-f])([\da-f])([\da-f])?$|^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})?([\da-f]{2})?$/gi,f$3=/hsla?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function d$2({h:A,s:e,l:t,a:i}){return[u$8({h:a$c(A),s:s$a(0,e,100),l:s$a(0,t,100),a:i$a(i)}),"hsl"]}const g$2=/rgba?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function b$5({r:A,g:e,b:t,a:i}){return[{r:s$a(0,A,255),g:s$a(0,e,255),b:s$a(0,t,255),a:i$a(i)},"rgb"]}var p$3,v$2,m$1=function(A,e,t,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?A!==e||!n:!e.has(A))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(A,t):n?n.value=t:e.set(A,t),t},y$1=function(A,e,t,i){if("a"===t&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?A!==e||!i:!e.has(A))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?i:"a"===t?i.call(A):i?i.value:e.get(A)};class w$1{constructor(A){var e,t;p$3.set(this,{r:0,g:0,b:0,a:1}),v$2.set(this,"rgb");const i=w$1.Parsers.map((e=>e(A))).find((A=>"invalid"!==A[1]));i?(e=this,t=this,[{set value(A){m$1(e,p$3,A,"f")}}.value,{set value(A){m$1(t,v$2,A,"f")}}.value]=i):m$1(this,v$2,"invalid","f")}get red(){return y$1(this,p$3,"f").r}get blue(){return y$1(this,p$3,"f").b}get green(){return y$1(this,p$3,"f").g}get alpha(){return y$1(this,p$3,"f").a}get hue(){return h$4(y$1(this,p$3,"f")).h}get saturation(){return h$4(y$1(this,p$3,"f")).s}get lightness(){return h$4(y$1(this,p$3,"f")).l}get format(){return y$1(this,v$2,"f")}isValid(){return"invalid"!==y$1(this,v$2,"f")}rgba(){return y$1(this,p$3,"f")}hsla(){return h$4(y$1(this,p$3,"f"))}hexa({round:A=!1}={}){return function(A,e=!1){let{r:t,g:i,b:n,a:a}=A;a&&(a*=255),e&&([t,i,n,a]=[t,i,n,a].map((A=>A&&Math.round(A))));const[r,s,o,l]=[t,i,n,null!=a?a:255].map((A=>A.toString(16).padStart(2,"0").toUpperCase()));return{r:r,g:s,b:o,a:l}}(y$1(this,p$3,"f"),A)}stringRGB({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(y$1(this,p$3,"f")).map(((A,t)=>n$c(A,e[t])));return A?`rgba(${t}, ${i}, ${n}, ${a})`:`rgb(${t}, ${i}, ${n})`}stringHEX({alpha:A=!0}={}){const[e,t,i,n]=Object.values(this.hexa({round:!0}));return`#${e}${t}${i}${A?n:""}`}stringHSL({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(this.hsla()).map(((A,t)=>n$c(A,e[t])));return A?`hsla(${t}, ${i}%, ${n}%, ${a})`:`hsl(${t}, ${i}%, ${n}%)`}hueTo(A){var e;const{h:t,s:i,l:n,a:a}=this.hsla(),r="number"==typeof A?a$c(A):Number(null!==(e=e$d[A].match(/\d{1,3}/))&&void 0!==e?e:t);return m$1(this,p$3,u$8({h:r,s:i,l:n,a:a}),"f"),this}hueBy(A){const{h:e,s:t,l:i,a:n}=this.hsla();return m$1(this,p$3,u$8({h:a$c(e+A),s:t,l:i,a:n}),"f"),this}saturationTo(A){const{h:e,l:t,a:i}=this.hsla();return m$1(this,p$3,u$8({h:e,s:s$a(0,A,100),l:t,a:i}),"f"),this}saturateBy(A){const{h:e,s:t,l:i,a:n}=this.hsla();return m$1(this,p$3,u$8({h:e,s:s$a(0,t+A,100),l:i,a:n}),"f"),this}desaturateBy(A){return this.saturateBy(-1*A)}lightnessTo(A){const{h:e,s:t,a:i}=this.hsla();return m$1(this,p$3,u$8({h:e,s:t,l:s$a(0,A,100),a:i}),"f"),this}lighterBy(A){const{h:e,s:t,l:i,a:n}=this.hsla();return m$1(this,p$3,u$8({h:e,s:t,l:s$a(0,i+A,100),a:n}),"f"),this}darkerBy(A){return this.lighterBy(-1*A)}alphaTo(A){return m$1(this,p$3,Object.assign(Object.assign({},y$1(this,p$3,"f")),{a:s$a(0,A,1)}),"f"),this}alphaBy(A){return m$1(this,p$3,Object.assign(Object.assign({},y$1(this,p$3,"f")),{a:s$a(0,y$1(this,p$3,"f").a+A,1)}),"f"),this}invert({alpha:A=!1}={}){const{r:e,g:t,b:i,a:n}=y$1(this,p$3,"f");return m$1(this,p$3,{r:255-e,g:255-t,b:255-i,a:A?1-n:n},"f"),this}grayscale(){return this.desaturateBy(100)}rotate(A){return this.hueBy(A)}}function $(){return new w$1({r:o$b(255),g:o$b(255),b:o$b(255),a:Math.random()})}function x$1(A){(A=A.filter(((A,e,t)=>t.indexOf(A)===e))).forEach((A=>A(w$1)))}p$3=new WeakMap,v$2=new WeakMap,w$1.Parsers=[function(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{r:e,g:t,b:i}=A;return void 0!==e&&void 0!==t&&void 0!==i&&"number"==typeof e}(A))return b$5(A);if("string"==typeof A){g$2.lastIndex=0;const e=g$2.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map(((A,e)=>A.includes("%")?+A.slice(0,-1)*(e<3?2.55:.01):+A));return b$5({r:A,g:t,b:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]},function(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{r:e,g:t,b:i}=A;return void 0!==e&&void 0!==t&&void 0!==i&&"string"==typeof e}(A))return[l$5(A),"hex"];if("string"==typeof A){c$a.lastIndex=0;const e=c$a.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map((A=>1===A.length?A.repeat(2):A));return[l$5({r:A,g:t,b:i,a:null!=n?n:"FF"}),"hex"]}}return[{r:0,g:0,b:0,a:1},"invalid"]},function(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{h:e,s:t,l:i}=A;return void 0!==e&&void 0!==t&&void 0!==i}(A))return d$2(A);if("string"==typeof A){f$3.lastIndex=0;const e=f$3.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map(((A,e)=>A.includes("%")?+A.slice(0,-1)*(0===e?3.59:e<3?1:.01):+A));return d$2({h:A,s:t,l:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}];const j$1=A=>new w$1(A);r$d.QA;var O$1=r$d.ZP,B=r$d.qt;r$d.MX;var e$c={d:(A,e)=>{for(var t in e)e$c.o(e,t)&&!e$c.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},a$b={};function t$b(A){const e=A%360;return e<0?e+360:e}e$c.d(a$b,{Z:()=>n$b});const n$b=A=>{A.prototype.harmony=function({type:e="analogous",effect:t="tones",amount:i=5}={}){const{h:n,s:a,l:r,a:s}=this.hsla();switch("monochromatic"===e&&(o=i,i=Math.max(2,Math.min(o,10))),e){case"analogous":return[-30,0,30].map((e=>new A({h:t$b(n+e),s:a,l:r,a:s})));case"complementary":return[0,180].map((e=>new A({h:t$b(n+e),s:a,l:r,a:s})));case"split-complementary":return[0,150,210].map((e=>new A({h:t$b(n+e),s:a,l:r,a:s})));case"double-split-complementary":return[-30,0,30,150,210].map((e=>new A({h:t$b(n+e),s:a,l:r,a:s})));case"triad":return[0,120,240].map((e=>new A({h:t$b(n+e),s:a,l:r,a:s})));case"rectangle":return[0,60,180,240].map((e=>new A({h:t$b(n+e),s:a,l:r,a:s})));case"square":return[0,90,180,270].map((e=>new A({h:t$b(n+e),s:a,l:r,a:s})));case"monochromatic":{const e="tones"===t?a:r;let o=("tints"===t?100-e:e)/i;o="tints"===t?o:-1*o;const l=[e];for(let A=0;Anew A({h:n,s:e,l:r,a:s}))):l.map((e=>new A({h:n,s:a,l:e,a:s})))}}var o}};var r$c=a$b.Z,a$a={d:(A,e)=>{for(var t in e)a$a.o(e,t)&&!a$a.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},t$a={};a$a.d(t$a,{Z:()=>k});const e$b=6/29,n$a=Math.pow(e$b,3),c$9=Math.pow(29/3,3),r$b={x:.96422,y:1,z:.82521};function u$7(A,e){return[A[0][0]*e[0]+A[0][1]*e[1]+A[0][2]*e[2],A[1][0]*e[0]+A[1][1]*e[1]+A[1][2]*e[2],A[2][0]*e[0]+A[2][1]*e[1]+A[2][2]*e[2]]}function s$9(A,e,t){return Math.max(A,Math.min(e,t))}function o$a(A){const e=A%360;return e<0?e+360:e}function l$4(A){const[e,t,i]=Object.values(A).map((A=>A/255)),n=Math.max(e,t,i),a=Math.min(e,t,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===e?(t-i)/r%6:n===t?(i-e)/r+2:(e-t)/r+4,delta:r}}function b$4(A){var e;const{Cmin:t,Cmax:i,H:n,delta:a}=l$4(A),r=(i+t)/2,s=0===a?0:a/(1-Math.abs(2*r-1));return{h:o$a(60*n),s:100*s,l:100*r,a:null!==(e=A.a)&&void 0!==e?e:1}}function h$3(A){var e;const{Cmax:t,H:i,delta:n}=l$4(A),a=0===n?0:n/t;return{h:o$a(60*i),s:100*a,v:100*t,a:null!==(e=A.a)&&void 0!==e?e:1}}function v$1(A){const{h:e,a:t}=b$4(A),{r:i,g:n,b:a}=A;return{h:e,w:Math.min(i,n,a)/2.55,b:100*(1-Math.max(i,n,a)/255),a:t}}function i$9(A){const[e,t,i]=u$7([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(A).map((A=>{return 100*(e=A,(e/=255)<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4));var e})));return function(A){const[e,t,i]=u$7([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}({x:e,y:t,z:i,a:A.a})}function m(A){const e=Object.values(i$9(A)).map(((A,e)=>A/(100*Object.values(r$b)[e]))).map((A=>A>n$a?Math.cbrt(A):(c$9*A+16)/116));return{l:116*e[1]-16,a:500*(e[0]-e[1]),b:200*(e[1]-e[2]),alpha:A.a}}function p$2(A){const{l:e,a:t,b:i}=m(A),n=180*Math.atan2(i,t)/Math.PI;return{l:e,c:Math.sqrt(Math.pow(t,2)+Math.pow(i,2)),h:o$a(n),a:A.a}}function f$2(A){const[e,t,i]=Object.values(i$9(A)).map((A=>A/100)),n=t/r$b.y,a=e&&t&&i?e+15*t+3*i:19,r=4*e/a,s=9*t/a,o=r$b.x+15*r$b.y+3*r$b.z,l=4*r$b.x/o,c=9*r$b.y/o;let d=n>n$a?116*Math.cbrt(n)-16:c$9*n,h=13*d*(r-l),g=13*d*(s-c);return d===Number(-0)&&(d=0),h===Number(-0)&&(h=0),g===Number(-0)&&(g=0),{l:d,u:h,v:g,a:A.a}}function M(A){const{x:e,y:t,z:i}=i$9(A),[n,a,r]=u$7([[2/3,0,0],[0,1,0],[-.5,1.5,.5]],[e,t,i]);return{u:n,v:a,w:r,a:A.a}}function w(A){let{r:e,g:t,b:i}=A;const n=Math.min(e,t,i);[e,t,i]=[e,t,i].map((A=>A-n));const a=Math.max(e,t,i);let r=Math.min(e,t);e-=r,t-=r,i&&t&&(i/=2,t/=2),r+=t,i+=t;const s=Math.max(e,r,i);if(s){const A=a/s;[e,r,i]=[e,r,i].map((e=>e*A))}return[e,r,i]=[e,r,i].map((A=>A+n)),{r:e,y:r,b:i,a:A.a}}function O(A){const{r:e,g:t,b:i,a:n}=A,a=1-Math.max(e,t,i)/255,[r,s,o]=1===a?[0,0,0]:[e,t,i].map((A=>100*(1-A/255-a)/(1-a)));return{c:r,m:s,y:o,k:100*a,a:n}}function j(A){const{h:e,s:t,v:i,a:n}=A,a=i/100,r=a*(t/100),s=r*(1-Math.abs(e/60%2-1)),o=a-r,l=e<60||300<=e&&e<360?r:120<=e&&e<240?0:s,c=240<=e&&e<360?0:60<=e&&e<180?r:s,d=e<120?0:180<=e&&e<300?r:s,[h,g,u]=[l,c,d].map((A=>255*(A+o)));return{r:h,g:g,b:u,a:null!=n?n:1}}function x(A){const[e,t,i]=Object.values(function(A){const[e,t,i]=u$7([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}(A)).map((A=>A/100)),[n,a,r]=u$7([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[e,t,i]).map((A=>{return s$9(0,255*((e=A)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e),255);var e}));return{r:n,g:a,b:r,a:A.a}}function y(A){const{l:e,a:t,b:i}=A,n=(e+16)/116,a=n+t/500,r=n-i/200,s=Object.values(r$b),[o,l,c]=[a,n,r].map(((A,e)=>(A>e$b?Math.pow(A,3):3*Math.pow(e$b,2)*(A-4/29))*s[e]*100));return x({x:o,y:l,z:c,a:A.alpha})}const k=A=>{A.prototype.mix=function({color:e="#fff",ratio:t=.5,colorspace:i="luv"}={}){const n=this.rgba(),a=(e instanceof A?e:new A(e)).rgba();let r,s;switch(t=s$9(0,t,1),i){case"hsl":r=Object.values(b$4(n)),s=Object.values(b$4(a));break;case"hsv":r=Object.values(h$3(n)),s=Object.values(h$3(a));break;case"hwb":r=Object.values(v$1(n)),s=Object.values(v$1(a));break;case"lab":r=Object.values(m(n)),s=Object.values(m(a));break;case"lch":r=Object.values(p$2(n)),s=Object.values(p$2(a));break;case"luv":r=Object.values(f$2(n)),s=Object.values(f$2(a));break;case"ryb":r=Object.values(w(n)),s=Object.values(w(a));break;case"uvw":r=Object.values(M(n)),s=Object.values(M(a));break;case"xyz":r=Object.values(i$9(n)),s=Object.values(i$9(a));break;case"cmyk":r=Object.values(O(n)),s=Object.values(O(a));break;default:r=Object.values(n),s=Object.values(a)}const[o,l,c,d,h]=r.map(((A,e)=>r[e]*(1-t)+s[e]*t));switch(i){case"hsl":return new A(function(A){const{h:e,s:t,l:i,a:n}=A,a=i/100,r=t/100,s=(1-Math.abs(2*a-1))*r,o=s*(1-Math.abs(e/60%2-1)),l=a-s/2,c=e<60||300<=e&&e<360?s:120<=e&&e<240?0:o,d=240<=e&&e<360?0:60<=e&&e<180?s:o,h=e<120?0:180<=e&&e<300?s:o,[g,u,p]=[c,d,h].map((A=>255*(A+l)));return{r:g,g:u,b:p,a:null!=n?n:1}}({h:o,s:l,l:c,a:d}));case"hsv":return new A(j({h:o,s:l,v:c,a:d}));case"hwb":return new A(function(A){const{h:e,b:t,w:i,a:n}=A;return j({h:e,s:100===t?0:100-i/(100-t)*100,v:100-t,a:n})}({h:o,w:l,b:c,a:d}));case"lab":return new A(y({l:o,a:l,b:c,alpha:d}));case"lch":return new A(function(A){const{l:e,c:t,h:i}=A;return y({l:e,a:t*Math.cos(i*Math.PI/180),b:t*Math.sin(i*Math.PI/180),alpha:A.a})}({l:o,c:l,h:c,a:d}));case"luv":return new A(function(A){const{l:e,u:t,v:i}=A,n=e>c$9*n$a?Math.pow((e+16)/116,3):e/c$9,a=r$b.x+15*r$b.y+3*r$b.z,r=(52*e/(t&&e?t+13*e*(4*r$b.x/a):1)-1)/3,s=-5*n,o=n*(39*e/(i&&e?i+13*e*(9*r$b.y/a):1)-5),l=r===-1/3?o-s:(o-s)/(r- -1/3);return x({x:100*l,y:100*n,z:100*(r*l+s),a:A.a})}({l:o,u:l,v:c,a:d}));case"ryb":return new A(function(A){let{r:e,y:t,b:i}=A;const n=Math.min(e,t,i);[e,t,i]=[e,t,i].map((A=>A-n));const a=Math.max(e,t,i);let r=Math.min(t,i);t-=r,i-=r,i&&r&&(i*=2,r*=2),e+=t,r+=t;const s=Math.max(e,r,i);if(s){const A=a/s;[e,r,i]=[e,r,i].map((e=>e*A))}return[e,r,i]=[e,r,i].map((A=>A+n)),{r:e,g:r,b:i,a:A.a}}({r:o,y:l,b:c,a:d}));case"uvw":return new A(function(A){const{u:e,v:t,w:i}=A,[n,a,r]=u$7([[1.5,0,0],[0,1,0],[1.5,-3,2]],[e,t,i]);return x({x:n,y:a,z:r,a:A.a})}({u:o,v:l,w:c,a:d}));case"xyz":return new A(x({x:o,y:l,z:c,a:d}));case"cmyk":return new A(function(A){const{c:e,m:t,y:i,k:n,a:a}=A,[r,s,o]=[e,t,i].map((A=>255*(1-A/100)*(1-n/100)));return{r:r,g:s,b:o,a:a}}({c:o,m:l,y:c,k:d,a:h}));default:return new A({r:o,g:l,b:c,a:d})}}};var z=t$a.Z,r$a={d:(A,e)=>{for(var t in e)r$a.o(e,t)&&!r$a.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},b$3={};r$a.d(b$3,{Z:()=>n$9});const g$1=["rgb(0,0,0)","rgb(0,0,51)","rgb(0,0,102)","rgb(0,0,153)","rgb(0,0,204)","rgb(0,0,255)","rgb(0,51,0)","rgb(0,51,51)","rgb(0,51,102)","rgb(0,51,153)","rgb(0,51,204)","rgb(0,51,255)","rgb(0,102,0)","rgb(0,102,51)","rgb(0,102,102)","rgb(0,102,153)","rgb(0,102,204)","rgb(0,102,255)","rgb(0,153,0)","rgb(0,153,51)","rgb(0,153,102)","rgb(0,153,153)","rgb(0,153,204)","rgb(0,153,255)","rgb(0,204,0)","rgb(0,204,51)","rgb(0,204,102)","rgb(0,204,153)","rgb(0,204,204)","rgb(0,204,255)","rgb(0,255,0)","rgb(0,255,51)","rgb(0,255,102)","rgb(0,255,153)","rgb(0,255,204)","rgb(0,255,255)","rgb(51,0,0)","rgb(51,0,51)","rgb(51,0,102)","rgb(51,0,153)","rgb(51,0,204)","rgb(51,0,255)","rgb(51,51,0)","rgb(51,51,51)","rgb(51,51,102)","rgb(51,51,153)","rgb(51,51,204)","rgb(51,51,255)","rgb(51,102,0)","rgb(51,102,51)","rgb(51,102,102)","rgb(51,102,153)","rgb(51,102,204)","rgb(51,102,255)","rgb(51,153,0)","rgb(51,153,51)","rgb(51,153,102)","rgb(51,153,153)","rgb(51,153,204)","rgb(51,153,255)","rgb(51,204,0)","rgb(51,204,51)","rgb(51,204,102)","rgb(51,204,153)","rgb(51,204,204)","rgb(51,204,255)","rgb(51,255,0)","rgb(51,255,51)","rgb(51,255,102)","rgb(51,255,153)","rgb(51,255,204)","rgb(51,255,255)","rgb(102,0,0)","rgb(102,0,51)","rgb(102,0,102)","rgb(102,0,153)","rgb(102,0,204)","rgb(102,0,255)","rgb(102,51,0)","rgb(102,51,51)","rgb(102,51,102)","rgb(102,51,153)","rgb(102,51,204)","rgb(102,51,255)","rgb(102,102,0)","rgb(102,102,51)","rgb(102,102,102)","rgb(102,102,153)","rgb(102,102,204)","rgb(102,102,255)","rgb(102,153,0)","rgb(102,153,51)","rgb(102,153,102)","rgb(102,153,153)","rgb(102,153,204)","rgb(102,153,255)","rgb(102,204,0)","rgb(102,204,51)","rgb(102,204,102)","rgb(102,204,153)","rgb(102,204,204)","rgb(102,204,255)","rgb(102,255,0)","rgb(102,255,51)","rgb(102,255,102)","rgb(102,255,153)","rgb(102,255,204)","rgb(102,255,255)","rgb(153,0,0)","rgb(153,0,51)","rgb(153,0,102)","rgb(153,0,153)","rgb(153,0,204)","rgb(153,0,255)","rgb(153,51,0)","rgb(153,51,51)","rgb(153,51,102)","rgb(153,51,153)","rgb(153,51,204)","rgb(153,51,255)","rgb(153,102,0)","rgb(153,102,51)","rgb(153,102,102)","rgb(153,102,153)","rgb(153,102,204)","rgb(153,102,255)","rgb(153,153,0)","rgb(153,153,51)","rgb(153,153,102)","rgb(153,153,153)","rgb(153,153,204)","rgb(153,153,255)","rgb(153,204,0)","rgb(153,204,51)","rgb(153,204,102)","rgb(153,204,153)","rgb(153,204,204)","rgb(153,204,255)","rgb(153,255,0)","rgb(153,255,51)","rgb(153,255,102)","rgb(153,255,153)","rgb(153,255,204)","rgb(153,255,255)","rgb(204,0,0)","rgb(204,0,51)","rgb(204,0,102)","rgb(204,0,153)","rgb(204,0,204)","rgb(204,0,255)","rgb(204,51,0)","rgb(204,51,51)","rgb(204,51,102)","rgb(204,51,153)","rgb(204,51,204)","rgb(204,51,255)","rgb(204,102,0)","rgb(204,102,51)","rgb(204,102,102)","rgb(204,102,153)","rgb(204,102,204)","rgb(204,102,255)","rgb(204,153,0)","rgb(204,153,51)","rgb(204,153,102)","rgb(204,153,153)","rgb(204,153,204)","rgb(204,153,255)","rgb(204,204,0)","rgb(204,204,51)","rgb(204,204,102)","rgb(204,204,153)","rgb(204,204,204)","rgb(204,204,255)","rgb(204,255,0)","rgb(204,255,51)","rgb(204,255,102)","rgb(204,255,153)","rgb(204,255,204)","rgb(204,255,255)","rgb(255,0,0)","rgb(255,0,51)","rgb(255,0,102)","rgb(255,0,153)","rgb(255,0,204)","rgb(255,0,255)","rgb(255,51,0)","rgb(255,51,51)","rgb(255,51,102)","rgb(255,51,153)","rgb(255,51,204)","rgb(255,51,255)","rgb(255,102,0)","rgb(255,102,51)","rgb(255,102,102)","rgb(255,102,153)","rgb(255,102,204)","rgb(255,102,255)","rgb(255,153,0)","rgb(255,153,51)","rgb(255,153,102)","rgb(255,153,153)","rgb(255,153,204)","rgb(255,153,255)","rgb(255,204,0)","rgb(255,204,51)","rgb(255,204,102)","rgb(255,204,153)","rgb(255,204,204)","rgb(255,204,255)","rgb(255,255,0)","rgb(255,255,51)","rgb(255,255,102)","rgb(255,255,153)","rgb(255,255,204)","rgb(255,255,255)"];function t$9(A){return(A/=255)<.04045?A/12.92:Math.pow((A+.055)/1.055,2.4)}function o$9(A,e=[0,0,0,1]){var t,i;return null!==(i=null===(t=A.match(/\d{1,3}/g))||void 0===t?void 0:t.map((A=>+A)))&&void 0!==i?i:e}const n$9=A=>{A.prototype.brightness=function({precision:A=4,percentage:e=!1}={}){const{r:t,g:i,b:n}=this.rgba(),a=+((.299*t+.587*i+.114*n)/255).toFixed(A);return e?100*a:a},A.prototype.luminance=function({precision:A=4,percentage:e=!1}={}){const{r:t,g:i,b:n}=this.rgba(),a=+(.2126*t$9(t)+.7152*t$9(i)+.0722*t$9(n)).toFixed(A);return e?100*a:a},A.prototype.contrast=function({bgColor:e="#fff",precision:t=4,ratio:i=!1}={}){const n=this.luminance(),a=(e instanceof A?e:new A(e)).luminance(),r=((Math.max(n,a)+.05)/(Math.min(n,a)+.05)).toFixed(t);return i?r+":1":+r},A.prototype.readableOn=function({bgColor:A="#fff",size:e="body",level:t="minimum"}={}){const i=this.contrast({bgColor:A});return"body"===e&&"enhanced"===t?i>=7:"large"===e&&"minimum"===t?i>=3:i>=4.5},A.prototype.equalTo=function(e="#fff"){const t=Object.values(this.rgba()),i=Object.values((e instanceof A?e:new A(e)).rgba());return t.toString()===i.toString()},A.prototype.isLight=function(){return this.brightness()>=.5},A.prototype.isDark=function(){return!this.isLight()},A.prototype.isCool=function(){const{h:A}=this.hsla();return 75<=A&&A<255},A.prototype.isWarm=function(){return!this.isCool()},A.prototype.isTinted=function(){return this.hsla().l>50},A.prototype.isShaded=function(){return this.hsla().l<50},A.prototype.isToned=function(){return this.hsla().s<100},A.prototype.isPureHue=function({reason:A=!0}={}){return this.isTinted()?!!A&&{pure:!1,reason:"tinted"}:this.isShaded()?!!A&&{pure:!1,reason:"shaded"}:this.isToned()?!!A&&{pure:!1,reason:"toned"}:!A||{pure:!0,reason:"N/A"}},A.prototype.closestCool=function(){const{h:A}=this.hsla();return this.isCool()?this:this.hueTo(A<75?75:254)},A.prototype.closestWarm=function(){const{h:A}=this.hsla();return this.isWarm()?this:this.hueTo(A<165?74:255)},A.prototype.closestPureHue=function(){const{h:e,a:t}=this.hsla(),{r:i,g:n,b:a,a:r}=function(A){const{h:e,s:t,l:i,a:n}=A,a=i/100,r=t/100,s=(1-Math.abs(2*a-1))*r,o=s*(1-Math.abs(e/60%2-1)),l=a-s/2,c=e<60||300<=e&&e<360?s:120<=e&&e<240?0:o,d=240<=e&&e<360?0:60<=e&&e<180?s:o,h=e<120?0:180<=e&&e<300?s:o,[g,u,p]=[c,d,h].map((A=>255*(A+l)));return{r:g,g:u,b:p,a:null!=n?n:1}}({h:e,s:100,l:50,a:t});return new A({r:i,g:n,b:a,a:r})},A.prototype.closestWebSafe=function(){const{r:e,g:t,b:i,a:n}=this.rgba();let[a,r,s]=new Array(3).fill(0),o=Number.POSITIVE_INFINITY,l={r:e,g:t,b:i,a:n};for(let A=0;A{for(var t in e)r$9.o(e,t)&&!r$9.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},g={};r$9.d(g,{Z:()=>a$9});const e$9={maroon:"rgb(128,0,0)","dark red":"rgb(139,0,0)",brown:"rgb(165,42,42)",firebrick:"rgb(178,34,34)",crimson:"rgb(220,20,60)",red:"rgb(255,0,0)",tomato:"rgb(255,99,71)",coral:"rgb(255,127,80)","indian red":"rgb(205,92,92)","light coral":"rgb(240,128,128)","dark salmon":"rgb(233,150,122)",salmon:"rgb(250,128,114)","light salmon":"rgb(255,160,122)","orange red":"rgb(255,69,0)","dark orange":"rgb(255,140,0)",orange:"rgb(255,165,0)",gold:"rgb(255,215,0)","dark golden rod":"rgb(184,134,11)","golden rod":"rgb(218,165,32)","pale golden rod":"rgb(238,232,170)","dark khaki":"rgb(189,183,107)",khaki:"rgb(240,230,140)",olive:"rgb(128,128,0)",yellow:"rgb(255,255,0)","yellow green":"rgb(154,205,50)","dark olive green":"rgb(85,107,47)","olive drab":"rgb(107,142,35)","lawn green":"rgb(124,252,0)","chart reuse":"rgb(127,255,0)","green yellow":"rgb(173,255,47)","dark green":"rgb(0,100,0)",green:"rgb(0,128,0)","forest green":"rgb(34,139,34)",lime:"rgb(0,255,0)","lime green":"rgb(50,205,50)","light green":"rgb(144,238,144)","pale green":"rgb(152,251,152)","dark sea green":"rgb(143,188,143)","medium spring green":"rgb(0,250,154)","spring green":"rgb(0,255,127)","sea green":"rgb(46,139,87)","medium aqua marine":"rgb(102,205,170)","medium sea green":"rgb(60,179,113)","light sea green":"rgb(32,178,170)","dark slate gray":"rgb(47,79,79)",teal:"rgb(0,128,128)","dark cyan":"rgb(0,139,139)",cyan:"rgb(0,255,255)",aqua:"rgb(0,255,255)","light cyan":"rgb(224,255,255)","dark turquoise":"rgb(0,206,209)",turquoise:"rgb(64,224,208)","medium turquoise":"rgb(72,209,204)","pale turquoise":"rgb(175,238,238)","aqua marine":"rgb(127,255,212)","powder blue":"rgb(176,224,230)","cadet blue":"rgb(95,158,160)","steel blue":"rgb(70,130,180)","corn flower blue":"rgb(100,149,237)","deep sky blue":"rgb(0,191,255)","dodger blue":"rgb(30,144,255)","light blue":"rgb(173,216,230)","sky blue":"rgb(135,206,235)","light sky blue":"rgb(135,206,250)","midnight blue":"rgb(25,25,112)",navy:"rgb(0,0,128)","dark blue":"rgb(0,0,139)","medium blue":"rgb(0,0,205)",blue:"rgb(0,0,255)","royal blue":"rgb(65,105,225)","blue violet":"rgb(138,43,226)",indigo:"rgb(75,0,130)","dark slate blue":"rgb(72,61,139)","slate blue":"rgb(106,90,205)","medium slate blue":"rgb(123,104,238)","medium purple":"rgb(147,112,219)","dark magenta":"rgb(139,0,139)","dark violet":"rgb(148,0,211)","dark orchid":"rgb(153,50,204)","medium orchid":"rgb(186,85,211)",purple:"rgb(128,0,128)",thistle:"rgb(216,191,216)",plum:"rgb(221,160,221)",violet:"rgb(238,130,238)",magenta:"rgb(255,0,255)",fuchsia:"rgb(255,0,255)",orchid:"rgb(218,112,214)","medium violet red":"rgb(199,21,133)","pale violet red":"rgb(219,112,147)","deep pink":"rgb(255,20,147)","hot pink":"rgb(255,105,180)","light pink":"rgb(255,182,193)",pink:"rgb(255,192,203)","antique white":"rgb(250,235,215)",beige:"rgb(245,245,220)",bisque:"rgb(255,228,196)","blanched almond":"rgb(255,235,205)",wheat:"rgb(245,222,179)","corn silk":"rgb(255,248,220)","lemon chiffon":"rgb(255,250,205)","light golden rod yellow":"rgb(250,250,210)","light yellow":"rgb(255,255,224)","saddle brown":"rgb(139,69,19)",sienna:"rgb(160,82,45)",chocolate:"rgb(210,105,30)",peru:"rgb(205,133,63)","sandy brown":"rgb(244,164,96)","burly wood":"rgb(222,184,135)",tan:"rgb(210,180,140)","rosy brown":"rgb(188,143,143)",moccasin:"rgb(255,228,181)","navajo white":"rgb(255,222,173)","peach puff":"rgb(255,218,185)","misty rose":"rgb(255,228,225)","lavender blush":"rgb(255,240,245)",linen:"rgb(250,240,230)","old lace":"rgb(253,245,230)","papaya whip":"rgb(255,239,213)","sea shell":"rgb(255,245,238)","mint cream":"rgb(245,255,250)","slate gray":"rgb(112,128,144)","light slate gray":"rgb(119,136,153)","light steel blue":"rgb(176,196,222)",lavender:"rgb(230,230,250)","floral white":"rgb(255,250,240)","alice blue":"rgb(240,248,255)","ghost white":"rgb(248,248,255)",honeydew:"rgb(240,255,240)",ivory:"rgb(255,255,240)",azure:"rgb(240,255,255)",snow:"rgb(255,250,250)",black:"rgb(0,0,0)","dim gray":"rgb(105,105,105)","dim grey":"rgb(105,105,105)",gray:"rgb(128,128,128)",grey:"rgb(128,128,128)","dark gray":"rgb(169,169,169)","dark grey":"rgb(169,169,169)",silver:"rgb(192,192,192)","light gray":"rgb(211,211,211)","light grey":"rgb(211,211,211)",gainsboro:"rgb(220,220,220)",gainsborough:"rgb(220,220,220)","white smoke":"rgb(245,245,245)",white:"rgb(255,255,255)",transparent:"rgba(0,0,0,0)"};function b$2(A,e=[0,0,0,1]){var t,i;return null!==(i=null===(t=A.match(/\d{1,3}/g))||void 0===t?void 0:t.map((A=>+A)))&&void 0!==i?i:e}const a$9=A=>{A.prototype.name=function({exact:A=!0}={}){const{r:e,g:t,b:i,a:n}=this.rgba();if(0===n)return"transparent";const[a,r]=[Object.keys(e$9),Object.values(e$9)];let s;if(A){const A=this.stringRGB({alpha:!1}).replace(/\s/g,"");s=a.find((e=>e$9[e]===A))}else{let A=Number.POSITIVE_INFINITY;for(let n=0;n{for(var t in e)t$8.o(e,t)&&!t$8.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},a$8={};t$8.d(a$8,{Z:()=>d$1});const n$8=6/29,r$8=Math.pow(n$8,3),o$8=Math.pow(29/3,3),e$8={x:.96422,y:1,z:.82521};function c$8(A,e){return[A[0][0]*e[0]+A[0][1]*e[1]+A[0][2]*e[2],A[1][0]*e[0]+A[1][1]*e[1]+A[1][2]*e[2],A[2][0]*e[0]+A[2][1]*e[1]+A[2][2]*e[2]]}function s$8(A,e,t){return Math.max(A,Math.min(e,t))}function u$6(A){const e=A%360;return e<0?e+360:e}function i$8(A){const{l:e,a:t,b:i}=function(A){const e=Object.values(function(A){const[e,t,i]=c$8([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(A).map((A=>{return 100*(e=A,(e/=255)<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4));var e})));return function(A){const[e,t,i]=c$8([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}({x:e,y:t,z:i,a:A.a})}(A)).map(((A,e)=>A/(100*Object.values(e$8)[e]))).map((A=>A>r$8?Math.cbrt(A):(o$8*A+16)/116));return{l:116*e[1]-16,a:500*(e[0]-e[1]),b:200*(e[1]-e[2]),alpha:A.a}}(A),n=180*Math.atan2(i,t)/Math.PI;return{l:e,c:Math.sqrt(Math.pow(t,2)+Math.pow(i,2)),h:u$6(n),a:A.a}}function h$2(A){const{l:e,c:t,h:i}=A;return function(A){const{l:e,a:t,b:i}=A,n=(e+16)/116,a=n+t/500,r=n-i/200,s=Object.values(e$8),[o,l,c]=[a,n,r].map(((A,e)=>(A>n$8?Math.pow(A,3):3*Math.pow(n$8,2)*(A-4/29))*s[e]*100));return function(A){const[e,t,i]=Object.values(function(A){const[e,t,i]=c$8([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}(A)).map((A=>A/100)),[n,a,r]=c$8([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[e,t,i]).map((A=>{return s$8(0,255*((e=A)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e),255);var e}));return{r:n,g:a,b:r,a:A.a}}({x:o,y:l,z:c,a:A.alpha})}({l:e,a:t*Math.cos(i*Math.PI/180),b:t*Math.sin(i*Math.PI/180),alpha:A.a})}const l$2=/lcha?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function p$1({l:A,c:e,h:t,a:i}){return[h$2({l:s$8(0,A,100),c:s$8(0,e,230),h:u$6(t),a:(n=i,void 0!==n?s$8(0,n,1):1)}),"lch"];var n}function f$1(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{l:e,c:t,h:i}=A;return void 0!==e&&void 0!==t&&void 0!==i}(A))return p$1(A);if("string"==typeof A){l$2.lastIndex=0;const e=l$2.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map(((A,e)=>A.includes("%")?+A.slice(0,-1)*(0===e?1:1===e?2.3:2===e?3.59:.01):+A));return p$1({l:A,c:t,h:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const d$1=A=>{A.prototype.lcha=function(){return i$8(this.rgba())},A.prototype.stringLCH=function({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(this.lcha()).map(((A,t)=>function(A,e){return+A.toFixed(e>=0?e:0)}(A,e[t])));return A?`lcha(${t}%, ${i}, ${n}, ${a})`:`lch(${t}%, ${i}, ${n})`},A.Parsers.push(f$1)};var b$1=a$8.Z,t$7={d:(A,e)=>{for(var t in e)t$7.o(e,t)&&!t$7.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},n$7={};t$7.d(n$7,{Z:()=>l$1});const r$7=Math.pow(6/29,3),e$7=Math.pow(29/3,3);function o$7(A,e){return[A[0][0]*e[0]+A[0][1]*e[1]+A[0][2]*e[2],A[1][0]*e[0]+A[1][1]*e[1]+A[1][2]*e[2],A[2][0]*e[0]+A[2][1]*e[1]+A[2][2]*e[2]]}function a$7(A,e,t){return Math.max(A,Math.min(e,t))}function u$5(A){const{l:e,u:t,v:i}=A,n=e>e$7*r$7?Math.pow((e+16)/116,3):e/e$7,a=(52*e/(t&&e?t+13*e*.20916005282038627:1)-1)/3,r=-5*n,s=n*(39*e/(i&&e?i+13*e*(9/18.43985):1)-5),o=a===-1/3?s-r:(s-r)/(a- -1/3);return function(A){const[e,t,i]=Object.values(function(A){const[e,t,i]=o$7([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}(A)).map((A=>A/100)),[n,a,r]=o$7([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[e,t,i]).map((A=>{return a$7(0,255*((e=A)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e),255);var e}));return{r:n,g:a,b:r,a:A.a}}({x:100*o,y:100*n,z:100*(a*o+r),a:A.a})}const c$7=/color\s*\(\s*luva?\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function s$7({l:A,u:e,v:t,a:i}){return[u$5({l:a$7(0,A,100),u:a$7(-100,e,100),v:a$7(-100,t,100),a:(n=i,void 0!==n?a$7(0,n,1):1)}),"luv"];var n}function i$7(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{l:e,u:t,v:i}=A;return void 0!==e&&void 0!==t&&null!=i}(A))return s$7(A);if("string"==typeof A){c$7.lastIndex=0;const e=c$7.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map(((A,e)=>A.includes("%")?+A.slice(0,-1)*(e<3?1:.01):+A));return s$7({l:A,u:t,v:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const l$1=A=>{A.prototype.luva=function(){return function(A){const[e,t,i]=Object.values(function(A){const[e,t,i]=o$7([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(A).map((A=>{return 100*(e=A,(e/=255)<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4));var e})));return function(A){const[e,t,i]=o$7([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}({x:e,y:t,z:i,a:A.a})}(A)).map((A=>A/100)),n=t/1,a=e&&t&&i?e+15*t+3*i:19,r=4*e/a,s=9*t/a;let o=n>r$7?116*Math.cbrt(n)-16:e$7*n,l=13*o*(r-.20916005282038627),c=13*o*(s-.48807338454488514);return o===Number(-0)&&(o=0),l===Number(-0)&&(l=0),c===Number(-0)&&(c=0),{l:o,u:l,v:c,a:A.a}}(this.rgba())},A.prototype.stringLUV=function({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(this.luva()).map(((A,t)=>function(A,e){return+A.toFixed(e>=0?e:0)}(A,e[t])));return A?`color(luva ${t}%, ${i}%, ${n}%, ${a})`:`color(luv ${t}%, ${i}%, ${n}%)`},A.Parsers.push(i$7)};var v=n$7.Z,t$6={d:(A,e)=>{for(var t in e)t$6.o(e,t)&&!t$6.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},a$6={};t$6.d(a$6,{Z:()=>d});const n$6=6/29,r$6=Math.pow(n$6,3),e$6=Math.pow(29/3,3),o$6={x:.96422,y:1,z:.82521};function c$6(A,e){return[A[0][0]*e[0]+A[0][1]*e[1]+A[0][2]*e[2],A[1][0]*e[0]+A[1][1]*e[1]+A[1][2]*e[2],A[2][0]*e[0]+A[2][1]*e[1]+A[2][2]*e[2]]}function s$6(A,e,t){return Math.max(A,Math.min(e,t))}function u$4(A){return void 0!==A?s$6(0,A,1):1}function i$6(A){const e=Object.values(function(A){const[e,t,i]=c$6([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(A).map((A=>{return 100*(e=A,(e/=255)<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4));var e})));return function(A){const[e,t,i]=c$6([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}({x:e,y:t,z:i,a:A.a})}(A)).map(((A,e)=>A/(100*Object.values(o$6)[e]))).map((A=>A>r$6?Math.cbrt(A):(e$6*A+16)/116));return{l:116*e[1]-16,a:500*(e[0]-e[1]),b:200*(e[1]-e[2]),alpha:A.a}}function l(A){const{l:e,a:t,b:i}=A,n=(e+16)/116,a=n+t/500,r=n-i/200,s=Object.values(o$6),[o,l,c]=[a,n,r].map(((A,e)=>(A>n$6?Math.pow(A,3):3*Math.pow(n$6,2)*(A-4/29))*s[e]*100));return function(A){const[e,t,i]=Object.values(function(A){const[e,t,i]=c$6([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}(A)).map((A=>A/100)),[n,a,r]=c$6([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[e,t,i]).map((A=>{return s$6(0,255*((e=A)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e),255);var e}));return{r:n,g:a,b:r,a:A.a}}({x:o,y:l,z:c,a:A.alpha})}const p=/laba?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function b({l:A,a:e,b:t,alpha:i}){return[l({l:s$6(0,A,100),a:s$6(-160,e,160),b:s$6(-160,t,160),alpha:u$4(i)}),"lab"]}function f(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{l:e,a:t,b:i}=A;return void 0!==e&&void 0!==t&&void 0!==i}(A))return b(A);if("string"==typeof A){p.lastIndex=0;const e=p.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map(((A,e)=>A.includes("%")?+A.slice(0,-1)*(e<3?1:.01):+A));return b({l:A,a:t,b:i,alpha:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const d=A=>{A.prototype.laba=function(){return i$6(this.rgba())},A.prototype.stringLAB=function({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(this.laba()).map(((A,t)=>function(A,e){return+A.toFixed(e>=0?e:0)}(A,e[t])));return A?`laba(${t}%, ${i}, ${n}, ${a})`:`lab(${t}%, ${i}, ${n})`},A.Parsers.push(f)};var h$1=a$6.Z,t$5={d:(A,e)=>{for(var t in e)t$5.o(e,t)&&!t$5.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},n$5={};function r$5(A,e){return[A[0][0]*e[0]+A[0][1]*e[1]+A[0][2]*e[2],A[1][0]*e[0]+A[1][1]*e[1]+A[1][2]*e[2],A[2][0]*e[0]+A[2][1]*e[1]+A[2][2]*e[2]]}function o$5(A,e,t){return Math.max(A,Math.min(e,t))}function e$5(A){const{u:e,v:t,w:i}=A,[n,a,r]=r$5([[1.5,0,0],[0,1,0],[1.5,-3,2]],[e,t,i]);return function(A){const[e,t,i]=Object.values(function(A){const[e,t,i]=r$5([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}(A)).map((A=>A/100)),[n,a,r]=r$5([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[e,t,i]).map((A=>{return o$5(0,255*((e=A)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e),255);var e}));return{r:n,g:a,b:r,a:A.a}}({x:n,y:a,z:r,a:A.a})}t$5.d(n$5,{Z:()=>s$5});const a$5=/color\s*\(\s*uvwa?\s*(\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function u$3({u:A,v:e,w:t,a:i}){return[e$5({u:o$5(0,A,200/3*.96422),v:o$5(0,e,100),w:o$5(-48.211,t,191.2605),a:(n=i,void 0!==n?o$5(0,n,1):1)}),"uvw"];var n}function c$5(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{u:e,v:t,w:i}=A;return void 0!==e&&void 0!==t&&void 0!==i}(A))return u$3(A);if("string"==typeof A){a$5.lastIndex=0;const e=a$5.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map((A=>A.includes("%")?.01*+A.slice(0,-1):+A));return u$3({u:A,v:t,w:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const s$5=A=>{A.prototype.uvwa=function(){return function(A){const{x:e,y:t,z:i}=function(A){const[e,t,i]=r$5([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(A).map((A=>{return 100*(e=A,(e/=255)<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4));var e})));return function(A){const[e,t,i]=r$5([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}({x:e,y:t,z:i,a:A.a})}(A),[n,a,r]=r$5([[2/3,0,0],[0,1,0],[-.5,1.5,.5]],[e,t,i]);return{u:n,v:a,w:r,a:A.a}}(this.rgba())},A.prototype.stringUVW=function({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(this.uvwa()).map(((A,t)=>function(A,e){return+A.toFixed(e>=0?e:0)}(A,e[t])));return A?`color(uvwa ${t}, ${i}, ${n}, ${a})`:`color(uvw ${t}, ${i}, ${n})`},A.Parsers.push(c$5)};var i$5=n$5.Z,t$4={d:(A,e)=>{for(var t in e)t$4.o(e,t)&&!t$4.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},n$4={};function r$4(A,e){return[A[0][0]*e[0]+A[0][1]*e[1]+A[0][2]*e[2],A[1][0]*e[0]+A[1][1]*e[1]+A[1][2]*e[2],A[2][0]*e[0]+A[2][1]*e[1]+A[2][2]*e[2]]}function o$4(A,e,t){return Math.max(A,Math.min(e,t))}function e$4(A){const[e,t,i]=Object.values(function(A){const[e,t,i]=r$4([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}(A)).map((A=>A/100)),[n,a,r]=r$4([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[e,t,i]).map((A=>{return o$4(0,255*((e=A)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e),255);var e}));return{r:n,g:a,b:r,a:A.a}}t$4.d(n$4,{Z:()=>u$2});const a$4=/color\s*\(\s*xyza?\s*(\d*\.?\d+)\s*,?\s*(\d*\.?\d+)\s*,?\s*(\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function s$4({x:A,y:e,z:t,a:i}){return[e$4({x:o$4(0,A,96.422),y:o$4(0,e,100),z:o$4(0,t,82.521),a:(n=i,void 0!==n?o$4(0,n,1):1)}),"xyz"];var n}function c$4(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{x:e,y:t,z:i}=A;return void 0!==e&&void 0!==t&&void 0!==i}(A))return s$4(A);if("string"==typeof A){a$4.lastIndex=0;const e=a$4.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map((A=>A.includes("%")?.01*+A.slice(0,-1):+A));return s$4({x:A,y:t,z:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const u$2=A=>{A.prototype.xyza=function(){return function(A){const[e,t,i]=r$4([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(A).map((A=>{return 100*(e=A,(e/=255)<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4));var e})));return function(A){const[e,t,i]=r$4([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(A));return{x:e,y:t,z:i,a:A.a}}({x:e,y:t,z:i,a:A.a})}(this.rgba())},A.prototype.stringXYZ=function({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(this.xyza()).map(((A,t)=>function(A,e){return+A.toFixed(e>=0?e:0)}(A,e[t])));return A?`color(xyza ${t}, ${i}, ${n}, ${a})`:`color(xyz ${t}, ${i}, ${n})`},A.Parsers.push(c$4)};var i$4=n$4.Z,t$3={d:(A,e)=>{for(var t in e)t$3.o(e,t)&&!t$3.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},n$3={};function r$3(A,e,t){return Math.max(A,Math.min(e,t))}function a$3(A){const e=A%360;return e<0?e+360:e}function o$3(A){const{h:e,a:t}=function(A){var e;const{Cmin:t,Cmax:i,H:n,delta:a}=function(A){const[e,t,i]=Object.values(A).map((A=>A/255)),n=Math.max(e,t,i),a=Math.min(e,t,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===e?(t-i)/r%6:n===t?(i-e)/r+2:(e-t)/r+4,delta:r}}(A),r=(i+t)/2,s=0===a?0:a/(1-Math.abs(2*r-1));return{h:a$3(60*n),s:100*s,l:100*r,a:null!==(e=A.a)&&void 0!==e?e:1}}(A),{r:i,g:n,b:a}=A;return{h:e,w:Math.min(i,n,a)/2.55,b:100*(1-Math.max(i,n,a)/255),a:t}}function e$3(A){const{h:e,b:t,w:i,a:n}=A;return function(A){const{h:e,s:t,v:i,a:n}=A,a=i/100,r=a*(t/100),s=r*(1-Math.abs(e/60%2-1)),o=a-r,l=e<60||300<=e&&e<360?r:120<=e&&e<240?0:s,c=240<=e&&e<360?0:60<=e&&e<180?r:s,d=e<120?0:180<=e&&e<300?r:s,[h,g,u]=[l,c,d].map((A=>255*(A+o)));return{r:h,g:g,b:u,a:null!=n?n:1}}({h:e,s:100===t?0:100-i/(100-t)*100,v:100-t,a:n})}t$3.d(n$3,{Z:()=>u$1});const s$3=/hwba?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function i$3({h:A,w:e,b:t,a:i}){return[e$3({h:a$3(A),w:r$3(0,e,100),b:r$3(0,t,100),a:(n=i,void 0!==n?r$3(0,n,1):1)}),"hwb"];var n}function c$3(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{h:e,w:t,b:i}=A;return void 0!==e&&void 0!==t&&void 0!==i}(A))return i$3(A);if("string"==typeof A){s$3.lastIndex=0;const e=s$3.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map(((A,e)=>A.includes("%")?+A.slice(0,-1)*(0===e?3.59:e<3?1:.01):+A));return i$3({h:A,w:t,b:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const u$1=A=>{A.prototype.hwba=function(){return o$3(this.rgba())},A.prototype.stringHWB=function({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(this.hwba()).map(((A,t)=>function(A,e){return+A.toFixed(e>=0?e:0)}(A,e[t])));return A?`hwba(${a$3(t)}, ${i}%, ${n}%, ${a})`:`hwb(${a$3(t)}, ${i}%, ${n}%)`},A.Parsers.push(c$3)};var h=n$3.Z,t$2={d:(A,e)=>{for(var t in e)t$2.o(e,t)&&!t$2.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},n$2={};function r$2(A,e,t){return Math.max(A,Math.min(e,t))}function s$2(A){const e=A%360;return e<0?e+360:e}function e$2(A){const{h:e,s:t,v:i,a:n}=A,a=i/100,r=a*(t/100),s=r*(1-Math.abs(e/60%2-1)),o=a-r,l=e<60||300<=e&&e<360?r:120<=e&&e<240?0:s,c=240<=e&&e<360?0:60<=e&&e<180?r:s,d=e<120?0:180<=e&&e<300?r:s,[h,g,u]=[l,c,d].map((A=>255*(A+o)));return{r:h,g:g,b:u,a:null!=n?n:1}}t$2.d(n$2,{Z:()=>c$2});const a$2=/hsva?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function o$2({h:A,s:e,v:t,a:i}){return[e$2({h:s$2(A),s:r$2(0,e,100),v:r$2(0,t,100),a:(n=i,void 0!==n?r$2(0,n,1):1)}),"hsv"];var n}function i$2(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{h:e,s:t,v:i}=A;return void 0!==e&&void 0!==t&&void 0!==i}(A))return o$2(A);if("string"==typeof A){a$2.lastIndex=0;const e=a$2.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map(((A,e)=>A.includes("%")?+A.slice(0,-1)*(0===e?3.59:e<3?1:.01):+A));return o$2({h:A,s:t,v:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const c$2=A=>{A.prototype.hsva=function(){return function(A){var e;const{Cmax:t,H:i,delta:n}=function(A){const[e,t,i]=Object.values(A).map((A=>A/255)),n=Math.max(e,t,i),a=Math.min(e,t,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===e?(t-i)/r%6:n===t?(i-e)/r+2:(e-t)/r+4,delta:r}}(A),a=0===n?0:n/t;return{h:s$2(60*i),s:100*a,v:100*t,a:null!==(e=A.a)&&void 0!==e?e:1}}(this.rgba())},A.prototype.stringHSV=function({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(this.hsva()).map(((A,t)=>function(A,e){return+A.toFixed(e>=0?e:0)}(A,e[t])));return A?`hsva(${s$2(t)}, ${i}%, ${n}%, ${a})`:`hsv(${s$2(t)}, ${i}%, ${n}%)`},A.Parsers.push(i$2)};var u=n$2.Z,t$1={d:(A,e)=>{for(var t in e)t$1.o(e,t)&&!t$1.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},r$1={};function n$1(A,e,t){return Math.max(A,Math.min(e,t))}function o$1(A){let{r:e,y:t,b:i}=A;const n=Math.min(e,t,i);[e,t,i]=[e,t,i].map((A=>A-n));const a=Math.max(e,t,i);let r=Math.min(t,i);t-=r,i-=r,i&&r&&(i*=2,r*=2),e+=t,r+=t;const s=Math.max(e,r,i);if(s){const A=a/s;[e,r,i]=[e,r,i].map((e=>e*A))}return[e,r,i]=[e,r,i].map((A=>A+n)),{r:e,g:r,b:i,a:A.a}}t$1.d(r$1,{Z:()=>i$1});const a$1=/color\s*\(\s*ryba?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function e$1({r:A,y:e,b:t,a:i}){return[o$1({r:n$1(0,A,255),y:n$1(0,e,255),b:n$1(0,t,255),a:(n=i,void 0!==n?n$1(0,n,1):1)}),"ryb"];var n}function s$1(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{r:e,y:t,b:i}=A;return void 0!==e&&void 0!==t&&void 0!==i}(A))return e$1(A);if("string"==typeof A){a$1.lastIndex=0;const e=a$1.exec(A);if(e){const[A,t,i,n]=e.filter((A=>void 0!==A)).slice(1).map(((A,e)=>A.includes("%")?+A.slice(0,-1)*(e<3?2.55:.01):+A));return e$1({r:A,y:t,b:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const i$1=A=>{A.prototype.ryba=function(){return function(A){let{r:e,g:t,b:i}=A;const n=Math.min(e,t,i);[e,t,i]=[e,t,i].map((A=>A-n));const a=Math.max(e,t,i);let r=Math.min(e,t);e-=r,t-=r,i&&t&&(i/=2,t/=2),r+=t,i+=t;const s=Math.max(e,r,i);if(s){const A=a/s;[e,r,i]=[e,r,i].map((e=>e*A))}return[e,r,i]=[e,r,i].map((A=>A+n)),{r:e,y:r,b:i,a:A.a}}(this.rgba())},A.prototype.stringRYB=function({alpha:A=!0,precision:e=[0,0,0,1]}={}){const[t,i,n,a]=Object.values(this.ryba()).map(((A,t)=>function(A,e){return+A.toFixed(e>=0?e:0)}(A,e[t])));return A?`color(ryba ${t}, ${i}, ${n}, ${a})`:`color(ryb ${t}, ${i}, ${n})`},A.Parsers.push(s$1)};var c$1=r$1.Z,t={d:(A,e)=>{for(var i in e)t.o(e,i)&&!t.o(A,i)&&Object.defineProperty(A,i,{enumerable:!0,get:e[i]})},o:(A,e)=>Object.prototype.hasOwnProperty.call(A,e)},n={};function e(A,e,t){return Math.max(A,Math.min(e,t))}function r(A){const{c:e,m:t,y:i,k:n,a:a}=A,[r,s,o]=[e,t,i].map((A=>255*(1-A/100)*(1-n/100)));return{r:r,g:s,b:o,a:a}}t.d(n,{Z:()=>i});const c=/device-cmyka?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?),?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function o({c:A,m:t,y:i,k:n,a:a}){return[r({c:e(0,A,100),m:e(0,t,100),y:e(0,i,100),k:e(0,n,100),a:(s=a,void 0!==s?e(0,s,1):1)}),"cmyk"];var s}function a(A){if("object"===A.constructor.name.toLowerCase()&&function(A){const{c:e,m:t,y:i,k:n}=A;return void 0!==e&&void 0!==t&&void 0!==i&&void 0!==n}(A))return o(A);if("string"==typeof A){c.lastIndex=0;const e=c.exec(A);if(e){const[A,t,i,n,a]=e.filter((A=>void 0!==A)).slice(1).map(((A,e)=>A.includes("%")?+A.slice(0,-1)*(e<4?1:.01):+A));return o({c:A,m:t,y:i,k:n,a:a})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const i=A=>{A.prototype.cmyka=function(){return function(A){const{r:e,g:t,b:i,a:n}=A,a=1-Math.max(e,t,i)/255,[r,s,o]=1===a?[0,0,0]:[e,t,i].map((A=>100*(1-A/255-a)/(1-a)));return{c:r,m:s,y:o,k:100*a,a:n}}(this.rgba())},A.prototype.stringCMYK=function({alpha:A=!0,precision:e=[0,0,0,0,1]}={}){const[t,i,n,a,r]=Object.values(this.cmyka()).map(((A,t)=>function(A,e){return+A.toFixed(e>=0?e:0)}(A,e[t])));return A?`device-cmyk(${t}, ${i}, ${n}, ${a}, ${r})`:`device-cmyk(${t}, ${i}, ${n}, ${a})`},A.Parsers.push(a)};var s=n.Z;B([r$c,z,e$a,l$3,b$1,v,h$1,i$5,i$4,h,u,c$1,s]);const{determineFocusDistance:determineFocusDistance,intersectElementWithLine:intersectElementWithLine,getCommonBoundingBox:getCommonBoundingBox,getMaximumGroups:getMaximumGroups,measureText:measureText}=excalidrawLib,GAP=4;class ExcalidrawAutomate{constructor(A,e){this.targetView=null,this.mostRecentMarkdownSVG=null,this.onViewUnloadHook=null,this.onViewModeChangeHook=null,this.onLinkHoverHook=null,this.onLinkClickHook=null,this.onDropHook=null,this.onCanvasColorChangeHook=null,this.activeScript=null,this.plugin=A,this.reset(),this.targetView=e}getAPI(A){return new ExcalidrawAutomate(this.plugin,A)}setFillStyle(A){switch(A){case 0:return this.style.fillStyle="hachure","hachure";case 1:return this.style.fillStyle="cross-hatch","cross-hatch";default:return this.style.fillStyle="solid","solid"}}setStrokeStyle(A){switch(A){case 0:return this.style.strokeStyle="solid","solid";case 1:return this.style.strokeStyle="dashed","dashed";default:return this.style.strokeStyle="dotted","dotted"}}setStrokeSharpness(A){return 0===A?(this.style.strokeSharpness="round","round"):(this.style.strokeSharpness="sharp","sharp")}setFontFamily(A){switch(A){case 1:return this.style.fontFamily=4,getFontFamily(4);case 2:return this.style.fontFamily=2,getFontFamily(2);case 3:return this.style.fontFamily=3,getFontFamily(3);default:return this.style.fontFamily=1,getFontFamily(1)}}setTheme(A){return 0===A?(this.canvas.theme="light","light"):(this.canvas.theme="dark","dark")}addToGroup(A){const e=nanoid();return A.forEach((A=>{var t,i;null===(i=null===(t=this.elementsDict[A])||void 0===t?void 0:t.groupIds)||void 0===i||i.push(e)})),e}async toClipboard(A){const e=A?await getTemplate(this.plugin,A,!1,new EmbeddedFilesLoader(this.plugin),0):null;let t=e?e.elements:[];t=t.concat(this.getElements()),navigator.clipboard.writeText(JSON.stringify({type:"excalidraw/clipboard",elements:t}))}getElements(){const A=[],e=Object.keys(this.elementsDict);for(let t=0;t{const l=t+Math.random()*r-r/2;o.push([l+Math.random()*r-r/2+t%2*r/6+A,i*Math.sqrt(n*n*(1-l*l/(a*a)))+Math.random()*s-s/2+t%2*s/6+e])};let c;for(c=r/2-a;c<=a-r/2;c+=a/6)l(c,1);for(c=a-r/2;c>=r/2-a;c-=a/6)l(c,-1);o.push(o[0]);const d=this.addLine((A=>{const e=getLineBox(A),n=t/e.w,a=i/e.h;let r;for(r=0;r500){const A=500/Math.max(r.size.width,r.size.height);r.size.width=A*r.size.width,r.size.height=A*r.size.height}return this.elementsDict[n]=this.boxedElement(n,"image",A,e,r.size.width,r.size.height),this.elementsDict[n].fileId=s,this.elementsDict[n].scale=[1,1],n}async addLaTex(A,e,t){const i=nanoid(),n=await tex2dataURL(t,this.plugin);return n?(this.imagesDict[n.fileId]={mimeType:n.mimeType,id:n.fileId,dataURL:n.dataURL,created:n.created,file:null,hasSVGwithBitmap:!1,latex:t},this.elementsDict[i]=this.boxedElement(i,"image",A,e,n.size.width,n.size.height),this.elementsDict[i].fileId=n.fileId,this.elementsDict[i].scale=[1,1],i):null}connectObjects(A,e,t,i,n){if(!this.elementsDict[A]||!this.elementsDict[t])return;if(["line","arrow","freedraw"].includes(this.elementsDict[A].type)||["line","arrow","freedraw"].includes(this.elementsDict[t].type))return;const a=(null==n?void 0:n.padding)?n.padding:10,r=(null==n?void 0:n.numberOfPoints)?n.numberOfPoints:0,s=(A,e)=>{switch(A){case"bottom":return[(e.x+(e.x+e.width))/2,e.y+e.height+a];case"left":return[e.x-a,(e.y+(e.y+e.height))/2];case"right":return[e.x+e.width+a,(e.y+(e.y+e.height))/2];default:return[(e.x+(e.x+e.width))/2,e.y-a]}};let o,l,c,d;const h=this.elementsDict[A],g=this.elementsDict[t];if(!e||!i){const A=h.x+h.width/2,t=g.x+g.width/2,n=h.y+h.height/2,a=g.y+g.height/2;if(!e){const e=intersectElementWithLine(h,[t,a],[A,n],4);0===e.length?[o,l]=[A,n]:[o,l]=e[0]}if(!i){const e=intersectElementWithLine(g,[A,n],[t,a],4);0===e.length?[c,d]=[t,a]:[c,d]=e[0]}}e&&([o,l]=s(e,this.elementsDict[A])),i&&([c,d]=s(i,this.elementsDict[t]));const u=r+2,p=[];for(let A=0;AMath.PI/2&&(i-=Math.PI),this.style.angle=i;const a=this.addText(t.x+t.points[1][0]/2-n.width/2,t.y+t.points[1][1]/2-n.height,e);return this.style.angle=0,a}clear(){this.elementsDict={},this.imagesDict={}}reset(){this.clear(),this.activeScript=null,this.style={strokeColor:"#000000",backgroundColor:"transparent",angle:0,fillStyle:"hachure",strokeWidth:1,strokeStyle:"solid",roughness:1,opacity:100,strokeSharpness:"sharp",fontFamily:1,fontSize:20,textAlign:"left",verticalAlign:"top",startArrowHead:null,endArrowHead:"arrow"},this.canvas={theme:"light",viewBackgroundColor:"#FFFFFF",gridSize:0}}isExcalidrawFile(A){return this.plugin.isExcalidrawFile(A)}setView(A){if("active"==A){const A=app.workspace.getActiveViewOfType(ExcalidrawView);if(!(A instanceof ExcalidrawView))return;this.targetView=A}if("first"==A){const A=app.workspace.getLeavesOfType("excalidraw");if(!A||0==A.length)return;this.targetView=A[0].view}return A instanceof ExcalidrawView&&(this.targetView=A),this.targetView}getExcalidrawAPI(){var A;return this.targetView&&(null===(A=this.targetView)||void 0===A?void 0:A._loaded)?this.targetView.excalidrawAPI:(errorMessage("targetView not set","getExcalidrawAPI()"),null)}getViewElements(){var A,e,t;if(!this.targetView||!(null===(A=this.targetView)||void 0===A?void 0:A._loaded))return errorMessage("targetView not set","getViewElements()"),[];const i=null===(t=null===(e=this.targetView)||void 0===e?void 0:e.excalidrawRef)||void 0===t?void 0:t.current;return i?null==i?void 0:i.getSceneElements():[]}deleteViewElements(A){var e,t,i;if(!this.targetView||!(null===(e=this.targetView)||void 0===e?void 0:e._loaded))return errorMessage("targetView not set","deleteViewElements()"),!1;const n=null===(i=null===(t=this.targetView)||void 0===t?void 0:t.excalidrawRef)||void 0===i?void 0:i.current;if(!n)return!1;const a=n.getSceneElements(),r=n.getAppState();return this.targetView.updateScene({elements:a.filter((e=>!A.includes(e))),appState:r,commitToHistory:!0}),!0}getViewSelectedElement(){const A=this.getViewSelectedElements();return A?A[0]:null}getViewSelectedElements(){var A;return this.targetView&&(null===(A=this.targetView)||void 0===A?void 0:A._loaded)?this.targetView.getViewSelectedElements():(errorMessage("targetView not set","getViewSelectedElements()"),[])}getViewFileForImageElement(A){var e,t,i,n;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?A&&"image"===A.type?null===(n=null===(i=null===(t=this.targetView)||void 0===t?void 0:t.excalidrawData)||void 0===i?void 0:i.getFile(A.fileId))||void 0===n?void 0:n.file:(errorMessage("Must provide an image element as input","getViewFileForImageElement()"),null):(errorMessage("targetView not set","getViewFileForImageElement()"),null)}copyViewElementsToEAforEditing(A){A.forEach((A=>{this.elementsDict[A.id]=cloneElement(A)}))}viewToggleFullScreen(A=!1){var e;if(app.isMobile)return void errorMessage("mobile not supported","viewToggleFullScreen()");if(!this.targetView||!(null===(e=this.targetView)||void 0===e?void 0:e._loaded))return void errorMessage("targetView not set","viewToggleFullScreen()");if(A){const A=this.getExcalidrawAPI();this.targetView.updateScene({appState:Object.assign({viewModeEnabled:!0},A.appState),commitToHistory:!1})}const t=this.targetView;t.isFullscreen()?t.exitFullscreen():t.gotoFullscreen()}connectObjectWithViewSelectedElement(A,e,t,i){const n=this.getViewSelectedElement();if(!n)return!1;const a=n.id;return this.elementsDict[a]=n,this.connectObjects(A,e,a,t,i),delete this.elementsDict[a],!0}async addElementsToView(A=!1,e=!0,t=!1){var i;if(!this.targetView||!(null===(i=this.targetView)||void 0===i?void 0:i._loaded))return errorMessage("targetView not set","addElementsToView()"),!1;const n=this.getElements();return await this.targetView.addElements(n,A,e,this.imagesDict,t)}registerThisAsViewEA(){var A;return this.targetView&&(null===(A=this.targetView)||void 0===A?void 0:A._loaded)?(this.targetView.setHookServer(this),!0):(errorMessage("targetView not set","addElementsToView()"),!1)}deregisterThisAsViewEA(){var A;return this.targetView&&(null===(A=this.targetView)||void 0===A?void 0:A._loaded)?(this.targetView.setHookServer(this),!0):(errorMessage("targetView not set","addElementsToView()"),!1)}getEmbeddedFilesLoader(A){return new EmbeddedFilesLoader(this.plugin,A)}getExportSettings(A,e){return{withBackground:A,withTheme:e}}getBoundingBox(A){const e=getCommonBoundingBox(A);return{topX:e.minX,topY:e.minY,width:e.maxX-e.minX,height:e.maxY-e.minY}}getMaximumGroups(A){return getMaximumGroups(A)}getLargestElement(A){if(!A||0===A.length)return null;let e=A[0];const t=A=>A.height*A.width;let i=t(A[0]);for(let n=1;ni&&(i=a,e=A[n])}return e}getCommonGroupForElements(A){const e=A.map((A=>A.groupIds)).reduce(((A,e)=>e.filter((e=>A.includes(e)))));return e.length>0?e[0]:null}getElementsInTheSameGroupWithElement(A,e){if(!A||!e)return[];const t="text"===A.type&&A.containerId?e.filter((e=>e.id===A.containerId)):[];return 0===A.groupIds.length?1===t.length?[A,t[0]]:[A]:1===t.length?e.filter((e=>e.groupIds.some((e=>A.groupIds.includes(e)))||e===t[0])):e.filter((e=>e.groupIds.some((e=>A.groupIds.includes(e)))))}intersectElementWithLine(A,e,t,i){return intersectElementWithLine(A,e,t,i)}getScriptSettings(){var A;return this.activeScript?null!==(A=this.plugin.settings.scriptEngineSettings[this.activeScript])&&void 0!==A?A:{}:null}async setScriptSettings(A){if(!this.activeScript)return null;this.plugin.settings.scriptEngineSettings[this.activeScript]=A,await this.plugin.saveSettings()}openFileInNewOrAdjacentLeaf(A){if(!(A&&A instanceof obsidian.TFile))return null;if(!this.targetView)return null;const e=getNewOrAdjacentLeaf(this.plugin,this.targetView.leaf);return e.openFile(A,{active:!0}),e}measureText(A){var e,t;const i=_measureText(A,this.style.fontSize,this.style.fontFamily);return{width:null!==(e=i.w)&&void 0!==e?e:0,height:null!==(t=i.h)&&void 0!==t?t:0}}async getOriginalImageSize(A){var e;if(!this.targetView||!(null===(e=this.targetView)||void 0===e?void 0:e._loaded))return errorMessage("targetView not set","getOriginalImageSize()"),null;if(!A||"image"!==A.type)return errorMessage("Please provide a single image element as input","getOriginalImageSize()"),null;const t=this.targetView.excalidrawData.getFile(A.fileId);if(!t)return errorMessage("Please provide a single image element as input","getOriginalImageSize()"),null;const i="dark"===this.getExcalidrawAPI().getAppState().theme,n=t.getImage(i);return await getImageSize(n)}verifyMinimumPluginVersion(A){return PLUGIN_VERSION===A||isVersionNewerThanOther(PLUGIN_VERSION,A)}isExcalidrawView(A){return A instanceof ExcalidrawView}selectElementsInView(A){var e;this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?A&&0!==A.length&&this.getExcalidrawAPI().selectElements(A):errorMessage("targetView not set","selectElementsInView()")}generateElementId(){return nanoid()}cloneElement(A){const e=JSON.parse(JSON.stringify(A));return e.id=nanoid(),e}moveViewElementToZIndex(A,e){var t;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return void errorMessage("targetView not set","moveViewElementToZIndex()");const i=this.getExcalidrawAPI(),n=this.getViewElements(),a=n.filter((e=>e.id===A));if(0===a.length)return void errorMessage(`Element (id: ${A}) not found`,"moveViewElementToZIndex");if(e>=n.length)return void i.bringToFront(a);if(e<0)return void i.sendToBack(a);const r=n.indexOf(a[0]);n.splice(e,0,n.splice(r,1)[0]),this.targetView.updateScene({elements:n,commitToHistory:!0})}hexStringToRgb(A){const e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(A);return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}rgbToHexString(A){return O$1({r:A[0],g:A[1],b:A[2]}).stringHEX({alpha:!1})}hslToRgb(A){const e=O$1({h:A[0],s:A[1],l:A[2]});return[e.red,e.green,e.blue]}rgbToHsl(A){const e=O$1({r:A[0],g:A[1],b:A[2]});return[e.hue,e.saturation,e.lightness]}colorNameToHex(A){return COLOR_NAMES.has(A.toLowerCase().trim())?COLOR_NAMES.get(A.toLowerCase().trim()):A.trim()}getCM(A){if(A)return"string"==typeof A&&(A=this.colorNameToHex(A)),O$1(A);log("Creates a CM object. Visit https://github.com/lbragile/ColorMaster for documentation.")}}async function initExcalidrawAutomate(A){await initFonts();const e=new ExcalidrawAutomate(A);return window.ExcalidrawAutomate=e,e}function destroyExcalidrawAutomate(){delete window.ExcalidrawAutomate}function normalizeLinePoints(A){const e=[],[t,i]=A[0];for(let n=0;n-1||e.search("excalidraw-plugin: locked\n")>-1;await a.loadData(e,l,o?TextMode.parsed:TextMode.raw);let d=e.search("# Text Elements\n");-1==d&&(d=e.search("# Drawing\n"));let h=a.scene;t&&await i.loadSceneFiles(a,(A=>{if(A&&0!==A.length){for(const e of A)e.hasSVGwithBitmap&&(c=!0),a.scene.files[e.id]={mimeType:e.mimeType,id:e.id,dataURL:e.dataURL,created:e.created};h=scaleLoadedImage(a.scene,A).scene}}),n);let g=h.elements;if(s.hasGroupref){const e=s.hasSectionref?getTextElementsMatchingQuery(h.elements,["# "+s.sectionref],!0):h.elements.filter((A=>A.id===s.blockref));e.length>0&&(g=A.ea.getElementsInTheSameGroupWithElement(e[0],h.elements))}return{elements:g,appState:h.appState,frontmatter:e.substring(0,d),files:h.files,hasSVGwithBitmap:c}}return{elements:[],appState:{},frontmatter:null,files:[],hasSVGwithBitmap:c}}async function createPNG(A,e=1,t,i,n,a,r,s=[],o,l,c){var d,h,g,u,p,w,m,f;i||(i=new EmbeddedFilesLoader(o)),c=null!=c?c:o.settings.exportPaddingSVG;const B=A?await getTemplate(o,A,!0,i,l):null;let E=null!==(d=null==B?void 0:B.elements)&&void 0!==d?d:[];return E=E.concat(s),await getPNG({type:"excalidraw",version:2,source:"https://excalidraw.com",elements:E,appState:{theme:null!==(g=null!=n?n:null===(h=null==B?void 0:B.appState)||void 0===h?void 0:h.theme)&&void 0!==g?g:a,viewBackgroundColor:null!==(p=null===(u=null==B?void 0:B.appState)||void 0===u?void 0:u.viewBackgroundColor)&&void 0!==p?p:r},files:null!==(w=null==B?void 0:B.files)&&void 0!==w?w:{}},{withBackground:null!==(m=null==t?void 0:t.withBackground)&&void 0!==m?m:o.settings.exportWithBackground,withTheme:null!==(f=null==t?void 0:t.withTheme)&&void 0!==f?f:o.settings.exportWithTheme},c,e)}async function createSVG(A,e=!1,t,i,n,a,r,s=[],o,l,c){var d,h,g,u,p,w,m,f;i||(i=new EmbeddedFilesLoader(o));const B=A?await getTemplate(o,A,!0,i,l):null;let E=null!==(d=null==B?void 0:B.elements)&&void 0!==d?d:[];E=E.concat(s),c=null!=c?c:o.settings.exportPaddingSVG;const C=await getSVG({type:"excalidraw",version:2,source:"https://excalidraw.com",elements:E,appState:{theme:null!==(g=null!=n?n:null===(h=null==B?void 0:B.appState)||void 0===h?void 0:h.theme)&&void 0!==g?g:a,viewBackgroundColor:null!==(p=null===(u=null==B?void 0:B.appState)||void 0===u?void 0:u.viewBackgroundColor)&&void 0!==p?p:r},files:null!==(w=null==B?void 0:B.files)&&void 0!==w?w:{}},{withBackground:null!==(m=null==t?void 0:t.withBackground)&&void 0!==m?m:o.settings.exportWithBackground,withTheme:null!==(f=null==t?void 0:t.withTheme)&&void 0!==f?f:o.settings.exportWithTheme},c),b=getEmbeddedFilenameParts(A);if(!b.hasGroupref&&(b.hasBlockref||b.hasSectionref)){let A=b.hasSectionref?getTextElementsMatchingQuery(E,["# "+b.sectionref],!0):E.filter((A=>A.id===b.blockref));if(A.length>0){const e=A[0].containerId;e&&(A=A.concat(E.filter((A=>A.id===e))));const t=o.ea.getBoundingBox(A),i=o.ea.getBoundingBox(E);C.viewBox.baseVal.x=t.topX-i.topX,C.viewBox.baseVal.y=t.topY-i.topY,C.viewBox.baseVal.width=t.width+2*c,C.viewBox.baseVal.height=t.height+2*c}}return(null==B?void 0:B.hasSVGwithBitmap)&&C.setAttribute("hasbitmap","true"),e?embedFontsInSVG(C,o):C}function estimateLineBound(A){let e=1/0,t=1/0,i=-1/0,n=-1/0;for(const[a,r]of A)e=Math.min(e,a),t=Math.min(t,r),i=Math.max(i,a),n=Math.max(n,r);return[e,t,i,n]}function estimateBounds(A){const e=getCommonBoundingBox(A);return[e.minX,e.minY,e.maxX,e.maxY]}function repositionElementsToCursor(A,e,t=!1){const[i,n,a,r]=estimateBounds(A);let[s,o]=[0,0];return[s,o]=t?[e.x-(i+a)/2,e.y-(n+r)/2]:[e.x-i,e.y-n],A.forEach((A=>{A.x=A.x+s,A.y=A.y+o})),A}function errorMessage(A,e){switch(A){case"targetView not set":errorlog({where:"ExcalidrawAutomate",source:e,message:"targetView not set, or no longer active. Use setView before calling this function"});break;case"mobile not supported":errorlog({where:"ExcalidrawAutomate",source:e,message:"this function is not avalable on Obsidian Mobile"});break;default:errorlog({where:"ExcalidrawAutomate",source:e,message:"unknown error"})}}const insertLaTeXToView=A=>{const e=A.plugin.app,t=A.plugin.ea;new Prompt(e,t$d("ENTER_LATEX"),"","\\color{red}\\oint_S {E_n dA = \\frac{1}{{\\varepsilon _0 }}} Q_{inside}").openAndGetValue((async e=>{e&&(t.reset(),await t.addLaTex(0,0,e),t.setView(A),t.addElementsToView(!0,!1,!0))}))},search=async A=>{const e=A.plugin.ea;e.reset(),e.setView(A);const t=e.getViewElements().filter((A=>"text"===A.type));if(0===t.length)return;let i=await ScriptEngine.inputPrompt(A.plugin.app,"Search for","use quotation marks for exact match","");if(!i)return;const n=i.matchAll(/"(.*?)"/g);let a,r=[];for(;!(a=n.next()).done;)r.push(a.value[1]);i=i.replaceAll(/"(.*?)"/g,""),r=r.concat(i.split(" ").filter((A=>0!==A.length))),e.targetView.selectElementsMatchingQuery(t,r)},getTextElementsMatchingQuery=(A,e,t=!1)=>A&&0!==A.length&&e&&0!==e.length?A.filter((A=>"text"===A.type&&e.some((e=>{if(t){const t=A.rawText.toLowerCase().split("\n")[0].trim().match(/^#*(# .*)/);return!(!t||2!==t.length)&&t[1]===e.toLowerCase()}return A.rawText.toLowerCase().replaceAll("\n"," ").trim().match(e.toLowerCase())})))):[],cloneElement=A=>Object.assign(Object.assign({},A),{version:A.version+1,updated:Date.now(),versionNonce:Math.floor(1e9*Math.random())}),URL$1="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/index-new.md";class ScriptInstallPrompt extends obsidian.Modal{constructor(A){super(A.app),this.plugin=A}async onOpen(){this.contentEl.classList.add("excalidraw-scriptengine-install"),this.containerEl.classList.add("excalidraw-scriptengine-install");try{const A=await obsidian.request({url:URL$1});if(!A)return new obsidian.Notice("Error opening the Excalidraw Script Store page. Please double check that you can access the website. I've logged the link in developer console (press CTRL+SHIFT+i)",5e3),log(URL$1),void this.close();await obsidian.MarkdownRenderer.renderMarkdown(A,this.contentEl,"",this.plugin),this.contentEl.querySelectorAll("h1[data-heading],h2[data-heading],h3[data-heading]").forEach((A=>{A.setAttribute("id",A.getAttribute("data-heading"))})),this.contentEl.querySelectorAll("a.internal-link").forEach((A=>{A.removeAttribute("target")}))}catch(A){errorlog({where:"ScriptInstallPrompt.onOpen",error:A}),new obsidian.Notice("Could not open ScriptEngine repository"),this.close()}}onClose(){this.contentEl.empty()}}function toVal(A){var e,t,i="";if("string"==typeof A||"number"==typeof A)i+=A;else if("object"==typeof A)if(Array.isArray(A))for(e=0;eReact__namespace.createElement("label",{className:clsx("ToolIcon ToolIcon_type_floating","ToolIcon_size_medium",{"is-mobile":A}),onClick:()=>{this.toolsRef.current.setTheme(e.theme),this.toolsRef.current.toggleVisibility(e.zenModeEnabled||A)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-hidden":"true"},React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 166 267"},React__namespace.createElement("path",{fill:"transparent",d:"M0 0h165.742v267.245H0z"}),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{fill:"#bd7efc",strokeWidth:"0",d:"M55.5 96.49 39.92 57.05 111.28 10l4.58 36.54L55.5 95.65"}),React__namespace.createElement("path",{fill:"none",stroke:"#410380",strokeWidth:".5",d:"M55.5 96.49c-5.79-14.66-11.59-29.33-15.58-39.44M55.5 96.49c-3.79-9.59-7.58-19.18-15.58-39.44m0 0C60.13 43.72 80.34 30.4 111.28 10M39.92 57.05C60.82 43.27 81.73 29.49 111.28 10m0 0c.97 7.72 1.94 15.45 4.58 36.54M111.28 10c1.14 9.12 2.29 18.24 4.58 36.54m0 0C95.41 63.18 74.96 79.82 55.5 95.65m60.36-49.11C102.78 57.18 89.71 67.82 55.5 95.65m0 0v.84m0-.84v.84"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{fill:"#e2c4ff",strokeWidth:"0",d:"m111.234 10.06 44.51 42.07-40.66-5.08-3.85-36.99"}),React__namespace.createElement("path",{fill:"none",stroke:"#410380",strokeWidth:".5",d:"M111.234 10.06c11.83 11.18 23.65 22.36 44.51 42.07m-44.51-42.07 44.51 42.07m0 0c-13.07-1.63-26.13-3.27-40.66-5.08m40.66 5.08c-11.33-1.41-22.67-2.83-40.66-5.08m0 0c-1.17-11.29-2.35-22.58-3.85-36.99m3.85 36.99c-1.47-14.17-2.95-28.33-3.85-36.99m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{fill:"#2f005e",strokeWidth:"0",d:"m10 127.778 45.77-32.99-15.57-38.08-30.2 71.07"}),React__namespace.createElement("path",{fill:"none",stroke:"#410380",strokeWidth:".5",d:"M10 127.778c16.85-12.14 33.7-24.29 45.77-32.99M10 127.778c16.59-11.95 33.17-23.91 45.77-32.99m0 0c-6.14-15.02-12.29-30.05-15.57-38.08m15.57 38.08c-4.08-9.98-8.16-19.96-15.57-38.08m0 0c-11.16 26.27-22.33 52.54-30.2 71.07m30.2-71.07c-10.12 23.81-20.23 47.61-30.2 71.07m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{fill:"#410380",strokeWidth:"0",d:"m40.208 235.61 15.76-140.4-45.92 32.92 30.16 107.48"}),React__namespace.createElement("path",{fill:"none",stroke:"#410380",strokeWidth:".5",d:"M40.208 235.61c3.7-33.01 7.41-66.02 15.76-140.4m-15.76 140.4c3.38-30.16 6.77-60.32 15.76-140.4m0 0c-10.83 7.76-21.66 15.53-45.92 32.92m45.92-32.92c-11.69 8.38-23.37 16.75-45.92 32.92m0 0c6.84 24.4 13.69 48.8 30.16 107.48m-30.16-107.48c6.67 23.77 13.33 47.53 30.16 107.48m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{fill:"#943feb",strokeWidth:"0",d:"m111.234 240.434-12.47 16.67-42.36-161.87 58.81-48.3 40.46 5.25-44.44 188.25"}),React__namespace.createElement("path",{fill:"none",stroke:"#410380",strokeWidth:".5",d:"M111.234 240.434c-3.79 5.06-7.57 10.12-12.47 16.67m12.47-16.67c-4.43 5.93-8.87 11.85-12.47 16.67m0 0c-16.8-64.17-33.59-128.35-42.36-161.87m42.36 161.87c-9.74-37.2-19.47-74.41-42.36-161.87m0 0c15.03-12.35 30.07-24.7 58.81-48.3m-58.81 48.3c22.49-18.47 44.97-36.94 58.81-48.3m0 0c9.48 1.23 18.95 2.46 40.46 5.25m-40.46-5.25c13.01 1.69 26.02 3.38 40.46 5.25m0 0c-10.95 46.41-21.91 92.82-44.44 188.25m44.44-188.25c-12.2 51.71-24.41 103.42-44.44 188.25m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{fill:"#6212b3",strokeWidth:"0",d:"m40.379 235.667 15.9-140.21 42.43 161.79-58.33-21.58"}),React__namespace.createElement("path",{fill:"none",stroke:"#410380",strokeWidth:".5",d:"M40.379 235.667c4.83-42.62 9.67-85.25 15.9-140.21m-15.9 140.21c5.84-51.52 11.69-103.03 15.9-140.21m0 0c10.98 41.87 21.96 83.74 42.43 161.79m-42.43-161.79c13.28 50.63 26.56 101.25 42.43 161.79m0 0c-11.8-4.37-23.6-8.74-58.33-21.58m58.33 21.58c-21.73-8.04-43.47-16.08-58.33-21.58m0 0s0 0 0 0m0 0s0 0 0 0"}))))),this.plugin=A,this.toolsRef=e}}class ActionButton extends React__namespace.Component{constructor(A){super(A),this.toastMessageTimeout=0,this.state={visible:!0}}render(){return React__namespace.createElement("button",{style:{width:"fit-content",padding:"2px",margin:"4px"},className:"ToolIcon_type_button ToolIcon_size_small ToolIcon_type_button--show ToolIcon",title:this.props.title,onClick:A=>{this.toastMessageTimeout&&(window.clearTimeout(this.toastMessageTimeout),this.toastMessageTimeout=0),this.props.action(A)},onPointerDown:()=>{this.toastMessageTimeout=window.setTimeout((()=>{var A;return null===(A=this.props.view.excalidrawAPI)||void 0===A?void 0:A.setToast({message:this.props.title})}),300)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-hidden":"true"},this.props.icon))}}const ICONS={exportLibrary:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 200 190"},React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M50 10h20v20H50"}),React__namespace.createElement("path",{fill:"none",strokeWidth:"2",d:"M50 10h20m-20 0h20m0 0v20m0-20v20m0 0H50m20 0H50m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M90 10h20v20H90"}),React__namespace.createElement("path",{fill:"none",strokeWidth:"2",d:"M90 10h20m-20 0h20m0 0v20m0-20v20m0 0H90m20 0H90m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M130 10h20v20h-20"}),React__namespace.createElement("path",{fill:"none",strokeWidth:"2",d:"M130 10h20m-20 0h20m0 0v20m0-20v20m0 0h-20m20 0h-20m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M170 10h20v20h-20"}),React__namespace.createElement("path",{fill:"none",strokeWidth:"2",d:"M170 10h20m-20 0h20m0 0v20m0-20v20m0 0h-20m20 0h-20m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M70 50h60v80h20l-50 50-50-50h20V50"}),React__namespace.createElement("path",{fill:"none",strokeWidth:"2",d:"M70 50h60m-60 0h60m0 0v80m0-80v80m0 0h20m-20 0h20m0 0-50 50m50-50-50 50m0 0-50-50m50 50-50-50m0 0h20m-20 0h20m0 0V50m0 80V50m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M10 10h20v20H10"}),React__namespace.createElement("path",{fill:"none",strokeWidth:"2",d:"M10 10h20m-20 0h20m0 0v20m0-20v20m0 0H10m20 0H10m0 0V10m0 20V10"}))),insertImage:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},React__namespace.createElement("path",{d:"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zM128 152c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zM96 352h320v-80l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L192 304l-39.515-39.515c-4.686-4.686-12.284-4.686-16.971 0L96 304v48z"})),insertMD:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 384 512"},React__namespace.createElement("path",{d:"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z"})),insertLaTeX:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512"},React__namespace.createElement("path",{d:"M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z"})),insertLink:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},React__namespace.createElement("path",{d:"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"})),exportSVG:React__namespace.createElement("svg",{viewBox:"0 0 28 28"},React__namespace.createElement("text",{style:{fontSize:"28px",fontWeight:"bold"},x:"4",y:"24"},"S")),exportPNG:React__namespace.createElement("svg",{viewBox:"0 0 28 28"},React__namespace.createElement("text",{style:{fontSize:"28px",fontWeight:"bold"},x:"4",y:"24"},"P")),exportExcalidraw:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100"},React__namespace.createElement("g",{transform:"translate(30,5)"},React__namespace.createElement("path",{d:"M14.45 1.715c-2.723 2.148-6.915 5.797-10.223 8.93l-2.61 2.445.477 3.207c.258 1.75.738 5.176 1.031 7.582.332 2.406.66 4.668.773 4.996.145.438 0 .656-.406.656-.699 0-.734-.183 1.176 5.832.7 2.297 1.363 4.414 1.434 4.633.074.254.367.363.699.254.332-.145.515-.438.406-.691-.113-.293.074-.586.367-.696.403-.144.367-.437-.258-1.492-.992-1.64-3.53-15.64-3.675-20.164-.11-3.207-.11-3.242 1.25-5.066 1.324-1.786 4.375-4.485 9.078-7.91 1.324-.985 2.648-2.079 3.015-2.446.551-.656.809-.472 5.442 4.414 2.683 2.805 5.664 5.688 6.617 6.414l1.766 1.313-1.36 2.844c-.734 1.53-3.715 7.437-6.656 13.054-6.137 11.813-4.887 10.68-12.02 10.79l-4.632.038-1.547 1.75c-1.617 1.86-1.836 2.551-1.063 3.72.293.398.512 1.054.512 1.456 0 .656.258.766 1.73.84.918.035 1.762.145 1.875.254.11.11.258 2.371.368 5.031l.144 4.813-2.46 5.25C1.616 72.516 0 76.527 0 77.84c0 .691.148 1.273.293 1.273.367 0 .367-.035 15.332-30.988 6.95-14.363 13.531-27.89 14.633-30.113 1.101-2.227 2.094-4.266 2.168-4.559.074-.328-2.461-2.844-6.508-6.379C22.281 3.864 19.082.95 18.785.621c-.844-1.023-2.094-.695-4.336 1.094zM15.7 43.64c-1.692 3.246-1.766 3.28-6.4 3.5-4.081.218-4.152.183-4.152-.582 0-.438-.148-1.024-.332-1.313-.222-.328-.074-.914.442-1.715l.808-1.238h3.676c2.024-.04 4.34-.184 5.149-.328.808-.149 1.507-.219 1.578-.184.074.035-.293.875-.77 1.86zm-3.09 5.832c-.294.765-1.067 2.37-1.692 3.574-1.027 2.043-1.137 2.113-1.395 1.277-.148-.511-.257-2.008-.296-3.355-.036-2.66-.11-2.625 2.98-2.809l.992-.035zm0 0"}),React__namespace.createElement("path",{d:"M15.55 10.39c-.66.473-.843.95-.843 2.153 0 1.422.11 1.64 1.102 2.039.992.402 1.25.367 2.39-.398 1.508-1.024 1.543-1.278.442-2.918-.957-1.422-1.914-1.676-3.09-.875zm2.098 1.313c.586 1.02.22 1.785-.882 1.785-.993 0-1.434-.984-.883-1.968.441-.801 1.285-.727 1.765.183zm0 0M38.602 18.594c0 .183-.22.363-.477.363-.219 0-.844 1.023-1.324 2.262-1.469 3.793-16.176 32.629-16.211 31.718 0-.472-.223-.8-.59-.8-.516 0-.59.289-.367 1.71.219 1.641.074 2.008-5.149 12.071-2.941 5.723-6.101 11.703-7.02 13.305-.956 1.68-1.69 3.5-1.765 4.265-.11 1.313.035 1.496 3.235 4.23 1.84 1.606 4.191 3.61 5.222 4.52 4.63 4.196 6.801 5.871 7.387 5.762.883-.145 14.523-14.328 14.559-15.129 0-.367-.66-5.906-1.47-12.324-1.398-10.938-2.722-23.734-2.573-24.973.109-.765-.442-4.633-.844-6.308-.332-1.313-.184-1.86 2.46-7.84 1.544-3.535 3.567-7.875 4.45-9.625.844-1.75 1.582-3.281 1.582-3.39 0-.11-.258-.18-.55-.18-.298 0-.555.144-.555.363zm-8.454 27.234c.403 2.55 1.211 8.676 1.801 13.598 1.14 9.043 2.461 19.07 2.832 21.62.219 1.278.07 1.532-2.316 4.157-4.156 4.629-8.567 9.188-10.074 10.356l-1.399 1.093-7.168-6.636c-6.617-6.051-7.168-6.672-6.765-7.403.222-.398 2.097-3.789 4.156-7.508 2.058-3.718 4.777-8.68 6.027-11.011 1.29-2.371 2.465-4.41 2.684-4.52.258-.148.332 3.535.258 11.375-.149 11.703-.11 11.739 1.066 11.485.148 0 .258-5.907.258-13.09V56.293l3.86-7.656c2.132-4.23 3.898-7.621 3.972-7.586.07.039.441 2.187.808 4.777zm0 0"}))),search:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},React__namespace.createElement("path",{d:"M500.3 443.7l-119.7-119.7c27.22-40.41 40.65-90.9 33.46-144.7C401.8 87.79 326.8 13.32 235.2 1.723C99.01-15.51-15.51 99.01 1.724 235.2c11.6 91.64 86.08 166.7 177.6 178.9c53.8 7.189 104.3-6.236 144.7-33.46l119.7 119.7c15.62 15.62 40.95 15.62 56.57 0C515.9 484.7 515.9 459.3 500.3 443.7zM79.1 208c0-70.58 57.42-128 128-128s128 57.42 128 128c0 70.58-57.42 128-128 128S79.1 278.6 79.1 208z"})),switchToMarkdown:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512"},React__namespace.createElement("path",{d:"M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z"})),gotoFullScreen:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512"},React__namespace.createElement("path",{d:"M128 32H32C14.31 32 0 46.31 0 64v96c0 17.69 14.31 32 32 32s32-14.31 32-32V96h64c17.69 0 32-14.31 32-32S145.7 32 128 32zM416 32h-96c-17.69 0-32 14.31-32 32s14.31 32 32 32h64v64c0 17.69 14.31 32 32 32s32-14.31 32-32V64C448 46.31 433.7 32 416 32zM128 416H64v-64c0-17.69-14.31-32-32-32s-32 14.31-32 32v96c0 17.69 14.31 32 32 32h96c17.69 0 32-14.31 32-32S145.7 416 128 416zM416 320c-17.69 0-32 14.31-32 32v64h-64c-17.69 0-32 14.31-32 32s14.31 32 32 32h96c17.69 0 32-14.31 32-32v-96C448 334.3 433.7 320 416 320z"})),exitFullScreen:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512"},React__namespace.createElement("path",{d:"M128 320H32c-17.69 0-32 14.31-32 32s14.31 32 32 32h64v64c0 17.69 14.31 32 32 32s32-14.31 32-32v-96C160 334.3 145.7 320 128 320zM416 320h-96c-17.69 0-32 14.31-32 32v96c0 17.69 14.31 32 32 32s32-14.31 32-32v-64h64c17.69 0 32-14.31 32-32S433.7 320 416 320zM320 192h96c17.69 0 32-14.31 32-32s-14.31-32-32-32h-64V64c0-17.69-14.31-32-32-32s-32 14.31-32 32v96C288 177.7 302.3 192 320 192zM128 32C110.3 32 96 46.31 96 64v64H32C14.31 128 0 142.3 0 160s14.31 32 32 32h96c17.69 0 32-14.31 32-32V64C160 46.31 145.7 32 128 32z"})),releaseNotes:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},React__namespace.createElement("path",{d:"M0 219.2v212.5c0 14.25 11.62 26.25 26.5 27C75.32 461.2 180.2 471.3 240 511.9V245.2C181.4 205.5 79.99 194.8 29.84 192C13.59 191.1 0 203.6 0 219.2zM482.2 192c-50.09 2.848-151.3 13.47-209.1 53.09C272.1 245.2 272 245.3 272 245.5v266.5c60.04-40.39 164.7-50.76 213.5-53.28C500.4 457.9 512 445.9 512 431.7V219.2C512 203.6 498.4 191.1 482.2 192zM352 96c0-53-43-96-96-96S160 43 160 96s43 96 96 96S352 149 352 96z"})),rawMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 60"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",strokeWidth:"4",d:"M20 10H10m10 0H10m0 0v40m0-40v40m0 0h10m-10 0h10M40 10H30m10 0H30m0 0v40m0-40v40m0 0h10m-10 0h10M60 10h10m-10 0h10m0 0v40m0-40v40m0 0H60m10 0H60M80 10h10m-10 0h10m0 0v40m0-40v40m0 0H80m10 0H80"})),parsedMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512"},React__namespace.createElement("path",{d:"M574.1 280.4l-45.38-181.8c-5.875-23.63-21.62-44-43-55.75c-21.5-11.75-46.1-14.13-70.25-6.375l-15.25 5.125c-8.375 2.75-12.87 11.88-10 20.25l5 15.13c2.75 8.375 11.88 12.88 20.25 10.13l13.12-4.375c10.88-3.625 23-3.625 33.25 1.75c10.25 5.375 17.5 14.5 20.38 25.75l38.38 153.9c-22.12-6.875-49.75-12.5-81.13-12.5c-34.88 0-73.1 7-114.9 26.75H251.4C210.5 258.6 171.4 251.6 136.5 251.6c-31.38 0-59 5.625-81.12 12.5l38.38-153.9c2.875-11.25 10.12-20.38 20.5-25.75C124.4 79.12 136.5 79.12 147.4 82.74l13.12 4.375c8.375 2.75 17.5-1.75 20.25-10.13l5-15.13C188.6 53.49 184.1 44.37 175.6 41.62l-15.25-5.125c-23.13-7.75-48.75-5.375-70.13 6.375c-21.37 11.75-37.12 32.13-43 55.75L1.875 280.4C.6251 285.4 .0001 290.6 .0001 295.9v70.25C.0001 428.1 51.63 480 115.3 480h37.13c60.25 0 110.4-46 114.9-105.4l2.875-38.63h35.75l2.875 38.63C313.3 433.1 363.4 480 423.6 480h37.13c63.62 0 115.2-51 115.2-113.9V295.9C576 290.6 575.4 285.5 574.1 280.4zM203.4 369.7c-2 26-24.38 46.25-51 46.25H115.2C87 415.1 64 393.6 64 366.1v-37.5c18.12-6.5 43.38-13 72.62-13c23.88 0 47.25 4.375 69.88 13L203.4 369.7zM512 366.1c0 27.5-23 49.88-51.25 49.88h-37.13c-26.62 0-49-20.25-51-46.25l-3.125-41.13c22.62-8.625 46.13-13 70-13c29 0 54.38 6.5 72.5 13V366.1z"})),convertFile:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",viewBox:"0 110 700 340",xmlns:"http://www.w3.org/2000/svg"},React__namespace.createElement("path",{d:"m593.95 239.4v-1.5742c-0.85547-1.8828-2.043-3.6016-3.5-5.0742l-52.5-52.5c-1.4688-1.457-3.1875-2.6445-5.0742-3.5h-1.5742c-1.4727-0.49219-3.0039-0.78516-4.5508-0.875h-124.25c-4.6406 0-9.0938 1.8438-12.375 5.125s-5.125 7.7344-5.125 12.375v87.5h-70v-105.88-1.0508c-0.089844-1.5469-0.38281-3.0781-0.875-4.5508v-1.5742c-0.85547-1.8828-2.043-3.6016-3.5-5.0742l-52.5-52.5c-1.4727-1.457-3.1914-2.6445-5.0742-3.5h-1.5742c-1.7031-0.875-3.5352-1.4688-5.4258-1.75h-123.55c-4.6406 0-9.0938 1.8438-12.375 5.125s-5.125 7.7344-5.125 12.375v245c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h175c4.6406 0 9.0938-1.8438 12.375-5.125s5.125-7.7344 5.125-12.375v-52.5h70v122.5c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h175c4.6406 0 9.0938-1.8438 12.375-5.125s5.125-7.7344 5.125-12.375v-192.5-1.0508c-0.14453-1.5547-0.5-3.0859-1.0508-4.5508zm-313.95 110.6h-140v-210h87.5v35c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h35v87.5h-52.5c-6.2539 0-12.031 3.3359-15.156 8.75s-3.125 12.086 0 17.5 8.9023 8.75 15.156 8.75h52.5zm140 70v-105h27.824l-5.0742 5.0742c-3.7031 3.1719-5.9141 7.7461-6.1055 12.617-0.1875 4.8711 1.668 9.6016 5.1133 13.051 3.4492 3.4453 8.1797 5.3008 13.051 5.1133 4.8711-0.19141 9.4453-2.4023 12.617-6.1055l35-35c3.2578-3.2773 5.0898-7.7148 5.0898-12.336 0-4.625-1.832-9.0586-5.0898-12.34l-35-35c-4.5078-3.8555-10.66-5.1719-16.348-3.4883-5.6875 1.6797-10.137 6.1289-11.816 11.816-1.6836 5.6914-0.37109 11.844 3.4883 16.348l5.0742 5.0742h-27.824v-69.824h87.5v35c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h35v157.5z"})),cog:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},React__namespace.createElement("path",{d:"M495.9 166.6C499.2 175.2 496.4 184.9 489.6 191.2L446.3 230.6C447.4 238.9 448 247.4 448 256C448 264.6 447.4 273.1 446.3 281.4L489.6 320.8C496.4 327.1 499.2 336.8 495.9 345.4C491.5 357.3 486.2 368.8 480.2 379.7L475.5 387.8C468.9 398.8 461.5 409.2 453.4 419.1C447.4 426.2 437.7 428.7 428.9 425.9L373.2 408.1C359.8 418.4 344.1 427 329.2 433.6L316.7 490.7C314.7 499.7 307.7 506.1 298.5 508.5C284.7 510.8 270.5 512 255.1 512C241.5 512 227.3 510.8 213.5 508.5C204.3 506.1 197.3 499.7 195.3 490.7L182.8 433.6C167 427 152.2 418.4 138.8 408.1L83.14 425.9C74.3 428.7 64.55 426.2 58.63 419.1C50.52 409.2 43.12 398.8 36.52 387.8L31.84 379.7C25.77 368.8 20.49 357.3 16.06 345.4C12.82 336.8 15.55 327.1 22.41 320.8L65.67 281.4C64.57 273.1 64 264.6 64 256C64 247.4 64.57 238.9 65.67 230.6L22.41 191.2C15.55 184.9 12.82 175.3 16.06 166.6C20.49 154.7 25.78 143.2 31.84 132.3L36.51 124.2C43.12 113.2 50.52 102.8 58.63 92.95C64.55 85.8 74.3 83.32 83.14 86.14L138.8 103.9C152.2 93.56 167 84.96 182.8 78.43L195.3 21.33C197.3 12.25 204.3 5.04 213.5 3.51C227.3 1.201 241.5 0 256 0C270.5 0 284.7 1.201 298.5 3.51C307.7 5.04 314.7 12.25 316.7 21.33L329.2 78.43C344.1 84.96 359.8 93.56 373.2 103.9L428.9 86.14C437.7 83.32 447.4 85.8 453.4 92.95C461.5 102.8 468.9 113.2 475.5 124.2L480.2 132.3C486.2 143.2 491.5 154.7 495.9 166.6V166.6zM256 336C300.2 336 336 300.2 336 255.1C336 211.8 300.2 175.1 256 175.1C211.8 175.1 176 211.8 176 255.1C176 300.2 211.8 336 256 336z"})),trayMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512"},React__namespace.createElement("path",{d:"M618.1 97.67c-13.02-4.375-27.45 .1562-35.72 11.16L464 266.7l-118.4-157.8c-8.266-11.03-22.64-15.56-35.72-11.16C296.8 102 288 114.2 288 128v256c0 17.69 14.33 32 32 32s32-14.31 32-32v-160l86.41 115.2c12.06 16.12 39.13 16.12 51.19 0L576 224v160c0 17.69 14.33 32 32 32s32-14.31 32-32v-256C640 114.2 631.2 102 618.1 97.67zM224 96.01H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h64v223.1c0 17.69 14.33 31.99 32 31.99s32-14.3 32-31.99V160h64c17.67 0 32-14.31 32-32S241.7 96.01 224 96.01z"})),copyElementLink:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 260 260","aria-hidden":"true",focusable:"false",role:"img"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"8",d:"M10 10h40m-40 0h40m0 0v40m0-40v40m0 0H10m40 0H10m0 0V10m0 40V10M210 10h40m-40 0h40m0 0v40m0-40v40m0 0h-40m40 0h-40m0 0V10m0 40V10M210 210h40m-40 0h40m0 0v40m0-40v40m0 0h-40m40 0h-40m0 0v-40m0 40v-40M10 210h40m-40 0h40m0 0v40m0-40v40m0 0H10m40 0H10m0 0v-40m0 40v-40M30 210V50m0 160V50M50 30h160M50 30h160M230 50v160m0-160v160M50 230h160m-160 0h160"}),React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"16",d:"M110 90c-6.67 1.67-30 3.11-40 10-10 6.89-20 21.37-20 31.37S60 153.56 70 160c10 6.44 33.33 8.33 40 10m0-80c-6.67 1.67-30 3.11-40 10-10 6.89-20 21.37-20 31.37S60 153.56 70 160c10 6.44 33.33 8.33 40 10M150 90c6.67 1.67 30 3.11 40 10 10 6.89 20 21.37 20 31.37s-10 22.19-20 28.63c-10 6.44-33.33 8.33-40 10m0-80c6.67 1.67 30 3.11 40 10 10 6.89 20 21.37 20 31.37s-10 22.19-20 28.63c-10 6.44-33.33 8.33-40 10"}),React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"16",d:"M89.868 130.198c13.36-.03 66.78-.17 80.13-.2m-80.13.2c13.36-.03 66.78-.17 80.13-.2"}))},stringToSVG=A=>(A=A.replace(/stroke\s*=\s*['"][^"']*['"]/g,"").replace(/width\s*=\s*['"][^"']*['"]/g,"").replace(/height\s*=\s*['"][^"']*['"]/g,"").replace("
\n\n
\n',RELEASE_NOTES={Intro:'I want to help you keep up with all the updates. After installing each release, you\'ll be prompted with a summary of new features and fixes. You can disable these popup messages in plugin settings.\n\nI develop this plugin as a hobby, spending most of my free time doing this. If you\'d like to contribute to the on-going work, I have a simple membership scheme with Bronze, Silver and Gold tiers. Many of you have already bought me a coffee. THANK YOU! It really means a lot to me! If you find this plugin valuable, please consider supporting me.\n\n
\n',"1.7.26":'## Fixed\n- Transcluded block with a parent bullet does not embed sub-bullet [#853](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/853)\n- Transcluded text will now exclude ^block-references at end of lines\n- Phantom duplicates of the drawing appear when "zoom to fit" results in a zoom value below 10% and there are many objects on the canvas [#850](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/850)\n- CTRL+Wheel will increase/decrease zoom in steps of 5% matching the behavior of the "+" & "-" zoom buttons.\n- Latest updates from Excalidarw.com\n - Freedraw flip not scaling correctly [#5752](https://github.com/excalidraw/excalidraw/pull/5752)\n - Multiple elements resizing regressions [#5586](https://github.com/excalidraw/excalidraw/pull/5586)\n\n## New - power user features\n- Force the embedded image to always scale to 100%. Note: this is a very niche feature with a very particular behavior that I built primarily for myself (even more so than other features in Excalidraw Obsidian - also built primarily for myself 😉)... This will reset your embedded image to 100% size every time you open the Excalidraw drawing, or in case you have embedded an Excalidraw drawing on your canvas inserted using this function, every time you update the embedded drawing, it will be scaled back to 100% size. This means that even if you resize the image on the drawing, it will reset to 100% the next time you open the file or you modify the original embedded object. This feature is useful when you decompose a drawing into separate Excalidraw files, but when combined onto a single canvas you want the individual pieces to maintain their actual sizes. I use this feature to construct Book-on-a-Page summaries from atomic drawings.\n- I added an action to the command palette to temporarily disable/enable Excalidraw autosave. When autosave is disabled, Excalidraw will still save your drawing when changing to another Obsidian window, but it will not save every 10 seconds. On a mobile device (but also on a desktop) this can lead to data loss if you terminate Obsidian abruptly (i.e. swipe the application away, or close Obsidian without first closing the drawing). Use this feature if you find Excalidraw laggy.',"1.7.25":`## Fixed\n- Tool buttons did not "stick" the first time you clicked them.\n- Tray (in tray mode) was higher when the help button was visible. The tray in tablet mode was too large and the help button was missing.\n- ExcalidrawAutomate ${String.fromCharCode(96)}getCM(color:TInput): ColorMaster;${String.fromCharCode(96)} function will now properly convert valid [css color names](https://www.w3schools.com/colors/colors_names.asp) to ColorMaster objects.\n- The downloaded script icons in the Excalidraw-Obsidian menu were not always correct\n- The obsidian mobile navigation bar at the bottom overlapped with Excalidraw\n\n## New\n- Created ExcalidrawAutomate hook for styling script when the canvas color changes. See sample [onCanvasColorChangeHook](https://gist.github.com/zsviczian/c7223c5b4af30d5c88a0cae05300305c) implementation following the link.\n\n
\n\n
\n\n${String.fromCharCode(96,96,96)}typescript\n /**\n * If set, this callback is triggered whenever the active canvas color changes\n */\n onCanvasColorChangeHook: (\n ea: ExcalidrawAutomate,\n view: ExcalidrawView, //the Excalidraw view \n color: string,\n ) => void = null;\n${String.fromCharCode(96,96,96)}\n`,"1.7.24":`\n# New and improved\n- **Updated Chinese translation**. Thanks, @tswwe!\n- **Improved update for TextElement links**: Until now, when you attached a link to a file to a TextElement using the "Create Link" command, this link did not get updated when the file was renamed or moved. Only links created as markdown links in the TextElement text were updated. Now both approaches work. Keep in mind however, that if you have a link in the TextElemenet text, it will override the link attached to the text element using the create link command. [#566](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/566)\n- **Transclusion filters markdown comments**: Text transclusion in a TextElement using the ${String.fromCharCode(96)}![[file]]${String.fromCharCode(96)} or ${String.fromCharCode(96)}![[file#section]]${String.fromCharCode(96)} format did not filter out markdown comments in the file placed ${String.fromCharCode(96)}%% inside a comment block %%${String.fromCharCode(96)}. Now they do.\n- **Remove leading '>' from trancluded quotes**: Added a new option in settings under **Links and Transclusion** to remove the leading ${String.fromCharCode(96)}> ${String.fromCharCode(96)} characters from quotes you transclude as a text element in your drawing. \n![image](https://user-images.githubusercontent.com/14358394/194755306-6e7bf5f3-4228-44a1-9363-c3241b34865e.png)\n- **Added support for ${String.fromCharCode(96)}webp${String.fromCharCode(96)}, ${String.fromCharCode(96)}bmp${String.fromCharCode(96)}, and ${String.fromCharCode(96)}ico${String.fromCharCode(96)} images**. This extends the already supported formats (${String.fromCharCode(96)}jpg${String.fromCharCode(96)}, ${String.fromCharCode(96)}gif${String.fromCharCode(96)}, ${String.fromCharCode(96)}png${String.fromCharCode(96)}, ${String.fromCharCode(96)}svg${String.fromCharCode(96)}).\n- **Added command palette action to reset images to original size**. Select a single image or embedded Excalidraw drawing on your canvas and choose ${String.fromCharCode(96)}Set selected image element size to 100% of original${String.fromCharCode(96)} from the command palette. This function is especially helpful when you combine atomic drawings on a single canvas, keeping each atomic piece in its original excalidraw file (i.e. the way I create [book on a page summaries](https://www.youtube.com/playlist?list=PL6mqgtMZ4NP1-mbCYc3T7mr-unmsIXpEG))\n- The ${String.fromCharCode(96)}async getOriginalImageSize(imageElement: ExcalidrawImageElement): Promise<{width: number; height: number}>${String.fromCharCode(96)} function is also avaiable via ExcalidrawAutomate. You may use this function to resize images to custom scales (e.g. 50% size, or to fit a certain bounding rectangle).\n\n# Fixed\n- **Upgraded perfect freehand package to resolve unwanted dots on end of lines** [#5727](https://github.com/excalidraw/excalidraw/pull/5727)\n- **Pinch zoom in View mode opens images** resulting in a very annoying behavior [#837](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/837)\n- **Embedded files** such as transcluded markdown documents and images **did not honor the Obsidian "New Link Format" setting** (shortest path, relative path, absolute path). [#829](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/829)\n- **Fixed error with dataview queries involving Excalidraw files**: In case you created a task on an Excalidraw canvas (${String.fromCharCode(96)}docA.md${String.fromCharCode(96)}) by typing ${String.fromCharCode(96)}- [ ] Task [[owner]] #tag${String.fromCharCode(96)}, and then you created a Dataview tasklist in another document (${String.fromCharCode(96)}docB.md${String.fromCharCode(96)}) such that the query criteria matched the task in ${String.fromCharCode(96)}docA.md${String.fromCharCode(96)}, then the task from ${String.fromCharCode(96)}docA.md${String.fromCharCode(96)} only appeared as an empty line when viewing ${String.fromCharCode(96)}docB.md${String.fromCharCode(96)}. If you now embedded ${String.fromCharCode(96)}docB.md${String.fromCharCode(96)} into a third markdown document (${String.fromCharCode(96)}docC.md${String.fromCharCode(96)}), then instead of the contents of ${String.fromCharCode(96)}docB.md${String.fromCharCode(96)} Obsidian rendered ${String.fromCharCode(96)}docA.md${String.fromCharCode(96)}. [#835](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/835)\n`,"1.7.22":"\n# Fixed\n- Text size in sticky notes increased when opening the drawing and when editing a sticky note [#824](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/824)\n- ToDo rendering did not work properly when there were parsed links in the text\n- Horizontal text alignment in sticky notes did not honor text alignment setting when resizing text. The text was always aligned center even when text alignment was left or right. [#5720](https://github.com/excalidraw/excalidraw/issues/5720)\n","1.7.21":`\n# New from Excalidraw.com\n- Image-mirroring in export preview and in exported SVG [#5700](https://github.com/excalidraw/excalidraw/pull/5700), [#811](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/811), [#617](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/617)\n\n# New \n- Ctrl+s will force-save your drawing and update all your transclusions\n- Added setting to parse ${String.fromCharCode(96)}- [ ] ${String.fromCharCode(96)} and ${String.fromCharCode(96)}- [x] ${String.fromCharCode(96)} todo items. Parsing is disabled by default. This feature can be found under "Links and Transclusions" in Plugin Settings. [#819](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/819)\n\n![image](https://user-images.githubusercontent.com/14358394/192145020-94bdd115-d24f-47c7-86fe-1417c53980c4.png)\n\n\n\n\n- Added new scripts to the script library\n - [Rename Image](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Rename%20Image.md)\n - [Text Arch](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Text%20Arch.md)\n\n\n\n\n# Fixed\n- Fixed toast message to display script name on press and hold on mobile and iPad.\n- Fixed save error when the embedded image file is not found (i.e. it was moved, renamed, or deleted)\n\n`,"1.7.20":'\n# New from Excalidraw.com\n- support segment midpoints in line editor [#5641](https://github.com/excalidraw/excalidraw/pull/5641)\n
\n\n
\n\n# Fixed\n- When editing a line or arrow and selecting a tool on the toolbar, the tool jumps back to the selection tool and you need to click again to select the tool [#5703](https://github.com/excalidraw/excalidraw/issues/5703)\n- Minor improvement of autosave, hopefully decreasing occasional lagging\n',"1.7.19":`\n# QoL improvements\n- Reintroduced the help button. I also added the help button to the Tray (in Tray Mode) and moved help to the canvas action panel (in non-TrayMode) because in Obsidian 0.16.0 the status bar hides the help icon.\n- Resetting the canvas with the "Reset Canvas" button will now preserve your custom color palette.\n- I updated the [Set background color of unlclosed line object](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Set%20background%20color%20of%20unclosed%20line%20object%20by%20adding%20a%20shadow%20clone.md) script. The script will now add background color to open freedraw objects as well. You no longer need to convert freedraw objects to lines before setting the background color. Check the Script Engine library to download the update.\n\n# New in Excalidraw Automate\n- I added the [ColorMaster](https://github.com/lbragile/ColorMaster#readme) library to ExcalidrawAutomate. You can get a CM object by calling ${String.fromCharCode(96)}ExcalidrawAutomate.getCM()${String.fromCharCode(96)}. Color master introduces many new ways to manipulate colors from script. I will publish scripts that make use of this new functionality including supporting videos on my YouTube channel in the coming days.\n`,"1.7.18":"\n## Critical fix\n- duplicating text elements, adding text elements from the library, and pasting excalidraw text elements results in a corrupted file!!","1.7.17":`\n## Fixed\n- Block transclusions sometimes got lost when switching between RAW mode and PREVIEW mode. [#769](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/769)\n\n## New\n- Added feature to disable "new Excalidraw version" notification [#770](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/770)\n- Added option to export both light- and dark-themed images at the same time. If this is enabled Excalidraw will create two files "filename.dark.png" and "filename.light.png" (or .svg depending on your other settings). See practical use case here: [Aadam's Notes](https://notes.aadam.dev/SBYNtPHqsTW9Ck1Kuoxsu/)\n- Added custom export padding for PNG images. Use the frontmatter key ${String.fromCharCode(96)}excalidraw-export-padding${String.fromCharCode(96)} to set the padding at a file level, or set padding for all your files in plugin settings. The new feature replaces the old "SVG Padding" option and applies to both SVG and PNG exports.\n\n## ExcalidrawAutomate\n- Added ${String.fromCharCode(96)}padding${String.fromCharCode(96)} to the createPNG function call.\n${String.fromCharCode(96,96,96)}typescript\nasync createPNG(\n templatePath?: string,\n scale: number = 1,\n exportSettings?: ExportSettings,\n loader?: EmbeddedFilesLoader,\n theme?: string,\n padding?: number,\n)\n${String.fromCharCode(96,96,96)}\n`,"1.7.16":"\n## Fixed\n- Excalidraw canvas is empty after saving the drawing and re-opening it at a later time. If you accidentally paste Excalidraw elements from the clipboard as the contents of a text element, in certain situations this can corrupt the Excalidraw file and as a result, Excalidraw will load an empty-looking drawing the next time. Changing to markdown view, these files can be repaired, however, to avoid accidental data loss, I have prevented pasting of excalidraw clipboard contents as text elements. [#768](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/768)\n\n## New\n- Add zoom % display in tray-mode [737](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/737)\n","1.7.15":"\n## Fixed\n- Canvas turns white when adding point for curved line [#760](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/760), [#738](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/738), [#5602](https://github.com/excalidraw/excalidraw/issues/5602)\n","1.7.14":`\n
\n\n
\n\n## New\n- The ${String.fromCharCode(96)}Copy markdown link for selected element to clipboard${String.fromCharCode(96)} action in the Obsidian menu is now more intelligent. If multiple elements are selected it will copy the Element Reference for the largest element. \n- When referencing an element in a link pointing to an Excalidraw file using the elementId or the section header as the block reference e.g. ${String.fromCharCode(96)}[[file#^elementID]]${String.fromCharCode(96)}, you can now add the ${String.fromCharCode(96)}group=${String.fromCharCode(96)} prefix, e.g. ${String.fromCharCode(96)}[[file#^group=elementID]]${String.fromCharCode(96)} and the ${String.fromCharCode(96)}area=${String.fromCharCode(96)} prefix, e.g. ${String.fromCharCode(96)}[[file#area=Section heading]]${String.fromCharCode(96)}.\n - If the ${String.fromCharCode(96)}group=${String.fromCharCode(96)} prefix is found, Excalidraw will select the group of elements in the same group as the element referenced by the elementID or heading section.\n - If the ${String.fromCharCode(96)}area=${String.fromCharCode(96)} prefix is found, excalidraw will insert a cutout of the image around the referenced element.\n - The ${String.fromCharCode(96)}area=${String.fromCharCode(96)} selector is not supported when embedding Excalidraw as PNG into your markdown documents.\n- I added "Toggle left-handed mode" to the Command Palette. The action is only visible if tray-mode is enabled. It will move the tray from left to right and back. [749](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/749)\n\n## Fixed\n- Zooming with CTRL+Wheel will no longer trigger hover preview.\n- When editing text in a text element CTRL+C will not launch the hover preview in case the mouse pointer is over the text element being edited. Hover preview will only show if the element is not in editing mode.\n- ExcalidrawAutomate did not reliably save changes. This caused issues for example in the "Add link to an existing file and open" script. [#747](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/747)\n- Create a new folder not working when clicking on a link in Erxcalidraw that points to a file that is in a folder that does not yet exist. [741](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/741)\n- Downgraded to React 17 due to various stability issues, including [#738](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/738) and [#747](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/747)\n\n## New in Excalidraw Automate\n- I added two new Excalidraw Automate functions\n${String.fromCharCode(96,96,96)}typescript\n/**\n * Gets the groupId for the group that contains all the elements, or null if such a group does not exist\n * @param elements \n * @returns null or the groupId\n*/\ngetCommonGroupForElements(elements: ExcalidrawElement[]): string;\n\n/**\n * Gets all the elements from elements[] that share one or more groupIds with element.\n * @param element \n * @param elements - typically all the non-deleted elements in the scene \n * @returns \n*/\ngetElementsInTheSameGroupWithElement(element: ExcalidrawElement, elements: ExcalidrawElement[]): ExcalidrawElement[];\n${String.fromCharCode(96,96,96)}`,"1.7.13":`\n## Fix from Excalidraw.com\n- Resize multiple elements from center ([#5560](https://github.com/excalidraw/excalidraw/pull/5560))\n\n## Obsidian 0.16.0 compatibility (getting ready, because 0.16.0 will be available to insiders soon)\n- ${String.fromCharCode(96)}Install or update Excalidraw Scripts${String.fromCharCode(96)} was only available via the page header button. Because the page header is hidden by default, the install script action is now available through the pane menu and through the command palette as well.\n- ${String.fromCharCode(96)}Open selected text as link${String.fromCharCode(96)} page header button is now also available via the pane menu\n- ${String.fromCharCode(96)}Open in Adjacent Pane${String.fromCharCode(96)} and ${String.fromCharCode(96)}Open in Main Workspace${String.fromCharCode(96)} Excalidraw plugin settings is fixed\n`,"1.7.12":`\n## New from Excalidraw.com:\n- Showing a mid-point for lines and arrows. By touching the mid-point you can easily add an additional point to a two-point line. This is especially helpful when working on a tablet with touch input. ([#5534](https://github.com/excalidraw/excalidraw/pull/5534))\n- Lock angle when editing a line or an arrow with SHIFT pressed. Pressing SHIFT will restrict the edited point to snap to certain discrete angles. ([#5527](https://github.com/excalidraw/excalidraw/pull/5527))\n\n## Fixed:\n- Clicking Obsidian search-results pointing to an element on the canvas works again ([#734](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/734))\n- The feature to allow resizing and rotation of lines and arrows consisting of 3 or more points by showing the bounding box when selected is back ([#5554](https://github.com/excalidraw/excalidraw/pull/5554))\n\n## New\n- You can now use the following frontmatter key to allow/prevent automatic export of PNG/SVG images at a file level. This frontmatter will override export settings for the given file. ([#732](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/732)\n${String.fromCharCode(96)}excalidraw-autoexport: none|both|svg|png${String.fromCharCode(96)}\n`,"1.7.11":`\n## Fixed\n- Markdown files embed into the Excalidraw canvas crashed when the embedded markdown file included a nested Markdown embed with a block reference (i.e. the markdown document you are dropping into Excalidraw included a quote you referenced from another file using a ${String.fromCharCode(96)}[[other-file#^blockref]]${String.fromCharCode(96)} block or section reference. \n- Horizontal flipping of arrows and lines broke in 1.7.10. ([#726](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/726))\n`,"1.7.10":'\n## New from Excalidraw.com\n- Improved handling of arrows and lines. ([#5501](https://github.com/excalidraw/excalidraw/pull/5501))\n\n## Fixed\n- When opening a document in view-mode or zen-mode the panel buttons no longer flash up for a moment before switching to the desired mode. ([#479](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/479))\n- The "blinding white screen" no longer flashes up while loading the scene if the scene is dark ([#241](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/241))\n\n## Under the hood\n- Finalized migration to React 18 (no longer showing an error about React 17 compatibility mode in console log)\n',"1.7.9":'\n## New features and fixes from Excalidraw.com:\n- The right-click context menu is now scrollable on smaller screens ([#4030](https://github.com/excalidraw/excalidraw/pull/4030), [#5520](https://github.com/excalidraw/excalidraw/pull/5520))\n- Holding down the shift key while rotating an object will rotate it at discrete angles. Rotation is continuous without the SHIFT key. ([#5500](https://github.com/excalidraw/excalidraw/pull/5500))\n- Improved cursor alignment when resizing an element proportionally (maintain aspect ratio) by holding SHIFT during resizing. ([#5513](https://github.com/excalidraw/excalidraw/pull/5515))\n- Improved freedraw performance during editing (now has proper canvas caching), and no more blurry freedraw shapes when exporting on a higher scale. ([#5481](https://github.com/excalidraw/excalidraw/pull/5481))\n- Sidebar stencil library now correctly scrolls vertically ([#5459](https://github.com/excalidraw/excalidraw/pull/5459))\n\n## New in Obsidian:\n- Fullscreen mode on iPad. When there are multiple work panes open, clicking the fullscreen action in the Excalidraw Obsidian menu will hide the other work panes and make Excalidraw fullscreen.\n\n## Fixes in Obsidian:\n- Drag&Drop an image from a web browser into Excalidraw ([#697](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/697))\n- On Obsidian Mobile 1.3.0, when the drawing included an embedded image, switching from markdown-view to Excalidraw-view caused the drawing to disappear (it had to be recovered from backup or synchronization history). ([#715](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/715))\n- When working on a mobile device (tablet and phone) and using two work panes (one for drawing and the other for editing a markdown document) if you switched focus from the drawing to the markdown document auto-zoom changed the zoom level of the drawing. ([#723](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/723)), ([#705](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/705))\n- Actions on the Command Palette to create a new drawing in a new pane or reusing an existing adjacent pane; on the main workspace or in the Hover Editor or Popout window, were not working well. See related settings in plugin settings under "Links and transclusions" ([#718](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/718))\n- There was a problem with links with section references when the header contained space characters ([#704](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/704))\n- I added additional controls to avoid the fantom warnings about a problem with saving the Excalidraw file. Hopefully, from now on, you\'ll see this error less frequently ([#701](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/701))\n',"1.7.8":'\n# Optimized for Obsidian 0.15.5\n- I reworked how the plugin treats the "More options" menu because the old approach was interfering with Obsidian\n- Did thorough testing of handling of work panes on link click. There are two settings (open in the adjacent pane, and open in the main workspace), and three broad scenarios (Excalidraw in a work pane in the main Obsidian window, Excalidraw in a hover editor, and Excalidraw in an Obsidian popout window). All should work correctly now.\n',"1.7.7":`\n# New\n- Optimized for Obsidian 0.15.4\n- On a desktop, you can now use the META key when clicking on a link and it will open the link in a new popout Window.\n- ([#685](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/685)) Markdown embeds will now display correctly in Excalidraw even if they include photos and recursive markdown embeds. Unfortunately due to the limitations of Safari the inversion of colors on iPads in dark mode will not work well.\nSee an 18 second long demo video [here](https://user-images.githubusercontent.com/14358394/177213263-2a7ef1ca-0614-4190-8955-e830ca6b424b.mp4).\n\n\n# Fixed\n- ([#683](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/683)) Copy/Paste Markdown embeds to create another instance of the embed, thus you can reference different sections of the document in your drawing (something I broke in 1.7.6)\n- ([#684](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/684)) Transclusions incorrectly did not pick up subsections of a section. To understand this change, imagine for example the following document:\n${String.fromCharCode(96,96,96)}markdown\n# A\nabc\n# B\nxyz\n## b1\n123\n## b2\n456\n# C\n${String.fromCharCode(96,96,96)}\nWhen you transclude ${String.fromCharCode(96)}![[document#B]]${String.fromCharCode(96)} you expect the following result\n${String.fromCharCode(96,96,96)}markdown\nB\nxyz\n\nb1\n123\n\nb2\n456\n${String.fromCharCode(96,96,96)}\nUntil this fix you only got\n${String.fromCharCode(96,96,96)}markdown\nB\nxyz\n${String.fromCharCode(96,96,96)}`,"1.7.6":`\nThis release is the same as 1.7.5 except for two minor fixes\n- a fix for ExcaliBrain, becuase 1.7.5 broke ExcaliBrain.\n- I left out the release note from 1.7.5.\n\n# New\n- Deployed sidebar for libraries panel from excalidraw.com ([#5274](https://github.com/excalidraw/excalidraw/pull/5274)). You can dock the library to the right side depending on the screen real estate available (i.e. does not work on mobiles).\n\n# Fixed\n- When copying 2 identical images from one drawing to another, the second image got corrupted in the process ([#672]https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/672)).\n- When making a copy of an equation in a drawing and then without first closing/opening the file, immediately copying the new equation to another drawing, the equation did not get displayed until the file was closed and reopened.\n- Copying a markdown embed from one drawing to another, in the destination the markdown embed appeared without the section/block reference and without the width & height (i.e. these settings had to be done again)\n- Improved the parsing of section references in embeds. When you had ${String.fromCharCode(96)}&${String.fromCharCode(96)} in the section name in a markdown file, when embedding that markdown document into Excalidraw, the section reference did not work as expected ([#681 ](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/681)).\n- Improved the logic for autosave to better detect changes to the document, and to reduce too frequent export of ${String.fromCharCode(96)}.png${String.fromCharCode(96)} and/or ${String.fromCharCode(96)}.svg${String.fromCharCode(96)} files, when auto export is enabled in plugin settings.\n`,"1.7.5":`\n# New\n- Deployed sidebar for libraries panel from excalidraw.com ([#5274](https://github.com/excalidraw/excalidraw/pull/5274)). You can dock the library to the right side depending on the screen real estate available (i.e. does not work on mobiles).\n\n# Fixed\n- When copying 2 identical images from one drawing to another, the second image got corrupted in the process ([#672]https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/672)).\n- When making a copy of an equation in a drawing and then without first closing/opening the file, immediately copying the new equation to another drawing, the equation did not get displayed until the file was closed and reopened.\n- Copying a markdown embed from one drawing to another, in the destination the markdown embed appeared without the section/block reference and without the width & height (i.e. these settings had to be done again)\n- Improved the parsing of section references in embeds. When you had ${String.fromCharCode(96)}&${String.fromCharCode(96)} in the section name in a markdown file, when embedding that markdown document into Excalidraw, the section reference did not work as expected ([#681 ](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/681)).\n- Improved the logic for autosave to better detect changes to the document, and to reduce too frequent export of ${String.fromCharCode(96)}.png${String.fromCharCode(96)} and/or ${String.fromCharCode(96)}.svg${String.fromCharCode(96)} files, when auto export is enabled in plugin settings.\n`,"1.7.4":"\n- Obsidian 0.15.3 support dragging and dropping work panes between Obsidian windows.\n- Addressed Obsidian changes affecting the more-options menu.\n- Addressed incompatibility with Obsidian Mobile 1.2.2.\n","1.7.3":"\nObsidian 0.15.3 support for dragging and dropping work panes between Obsidian windows.\n","1.7.2":"\nDue to some of the changes to the code, I highly recommend restarting Obsidian after installing this update to Excalidraw.\n\n# Fixed\n- Stability improvements\n- Opening links in new panes and creating new drawings from the file explorer works properly again\n\n# New feature\n- Two new command palette actions:\n - Create a new drawing - IN A POPOUT WINDOW\n - Create a new drawing - IN A POPOUT WINDOW - and embed into active document\n![image|600](https://user-images.githubusercontent.com/14358394/175137800-88789f5d-f8e8-4371-a356-84f443aa6a50.png)\n- Added setting to prefer opening the link in the popout window or in the main workspace.\n![image|800](https://user-images.githubusercontent.com/14358394/175076326-1c8eee53-e512-4025-aedb-07881a732c69.png)\n","1.7.1":"\nSupport for Obsidian 0.15.0 popout windows. While there are no new features (apart from the popout window support) under the hood there were some major changes required to make this happen.\n","1.7.0":"\nThis is the first test version of Excalidraw Obsidian supporting Obsidian 0.15.0 popout windows. The current technical solution is not really sustainable, it's more of a working concept. I don't expect any real big issues with this version - on the contrary, this works much better with Obsidian 0.15.0 popout windows, but some of the features aren't working as expected in the Obsidian popouts yet. Also as a consequence of Obsidian 0.15.0 compatibility, multiple hover previews are no longer supported.\n","1.6.34":"\nWith 0.15.1 Obsidian is implementing some exciting, but significant changes to how windows are managed. I need to make some heavy/invasive changes to Excalidraw to adapt. The next version of the Excalidraw Plugin will require Obsidian 0.15.1 or newer. If you are not signed up for Obsidian Insider Builds, you will need to wait few weeks until the new Obsidian version will be made public.\n\n# Fixed\n- Error saving when the attachments folder exists but with a different letter case (i.e. ATTACHMENTS instead of attachments) [658](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/658). I added more error tolerance. As a general rule, however, I recommend treating file paths as case-sensitive as some platforms like iOS or LINUX have case-sensitive filenames, and synchronizing your Vault to these platforms will cause you headaches in the future.\n- Text detached from the container if you immediately clicked the text-align buttons on the properties pane while still editing the text in the container for the very first time. [#657](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/657).\n- Can't add text to the second container if the first container has text and the second container is centered around the first one. [#5300](https://github.com/excalidraw/excalidraw/issues/5300)\n","1.6.33":`\n# Fixed\n- Under some special circumstances when you embedded a drawing (guest) into another drawing (host), the host did not update when you modified the guest, until you closed Excalidraw completely and reopened the host. [#637](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/637)\n\n# New\n- ExcalidrawAutomate ${String.fromCharCode(96)}addLabelToLine${String.fromCharCode(96)} adds a text label to a line or arrow. Currently this function only works with simple straight 2-point (start & end) lines.\n${String.fromCharCode(96,96,96)}typescript\naddLabelToLine(lineId: string, label: string): string\n${String.fromCharCode(96,96,96)}\n- ExcalidrawAutomate ${String.fromCharCode(96)}ConnectObjects${String.fromCharCode(96)} now returns the ID of the arrow that was created.`,"1.6.32":"\n## Fixed\n- Filenames of embedded images and markdown documents did not get updated if the drawing was open in a work-pane while you changed the filename of the embedded file (image or markdown document) [632](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/632).\n- When you created a new text element and immediately dragged it, sometimes autosave interrupted the drag action and Excalidraw dropped the element you were dragging [630](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/630)\n- In some edge cases when you had the drawing open on your desktop and you also opened the same image on your tablet, Sync seemed to work in the background but the changes did not appear on the desktop until you closed and opened the drawing again. [629](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/629)\n- LaTeX support: Excalidraw must download a javascript library from one of the hosting sites for MathJax tex2svg. It seems that some people do not have access to the URL recommended in the first place by [MathJax](https://docs.mathjax.org/en/latest/web/start.html). If LaTeX formulas do not render correctly in Excalidraw, try changing the source server under Compatibility Settings in Excalidraw Plugin Settings. [628](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/628)","1.6.31":"\nMinor update:\n\n## Fixes\n- Color picker hotkeys were not working. They are working again [627](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/627)\n- I updated MathJax (LaTeX) to the newest (3.2.1) release.","1.6.30":"\n## Fixed\n- The load stencil library button stopped working after 1.6.29 due to an error in the core Excalidraw package. It is now fixed. [#625](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/625).\n- On iPad (probably other Obsidian mobile devices as well) after opening the command palette the positioning of the pointer was off. From now on, the pointer is automatically re-calibrated every 5 seconds.\n- I improved shared-vault collaboration sync. If the open file has not been saved for the last 5 minutes (i.e. you are not working on the drawing actively), and a newer remote version of the file is received via sync, then the remote file will simply overwrite the local file (i.e. the behavior of Excalidraw Obsidian prior to implementing Shared (Multiplayer) Vault Synchronization support in 1.6.29). This solution will support active collaboration when parties participating are actively editing the drawing, but also caters to the scenario when you open a drawing on one device (e.g. your desktop) and once you are finished editing you do not close the drawing, but simply put your PC to sleep... then later you edit the same drawing on your tablet. When you turn your desktop PC on the next time, the changes you've made on your tablet will be synchronized by Obsidian sync. In this case the changes from your tablet should be honored. If you have not edited the open drawing for more then 5 minutes (like in this scenario) there is no value in running the file comparison between the local version and the received one. This approach reduces the probability of running into sync conflicts.","1.6.29":"\n## New\n- I implemented sync support inspired by the new [Obsidian Multiplayer Sync](https://youtu.be/ZyCPhbd51eo) feature (available in insider build v0.14.10). \n - To manage expectations, this is not real-time collaboration like on Excalidraw.com. Synchronization is delayed by the frequency of the autosave timer (every 10 secs) and the speed of Obsidian sync. Also if a file has conflicting versions, Obsidian sync may delay the delivery of the changed file.\n - Even if you are not using multiplayer Obsidian Vaults, you may benefit from the improved synchronization, for example when using the freedraw tool on your tablet or phone, and in parallel editing the same drawing (e.g. typing text) on your desktop. I frequently do this in a mind-mapping scenario.\n - If the same Excalidraw sketch is open on multiple devices then Excalidraw will try to merge changes into the open drawing, thus parallel modifications on different devices are possible. If the same element is edited by multiple parties at the same time, then the foreign (received) version will be honored and the local changes lost. \n\n## Fixed:\n- Default embed width setting stopped working. [#622](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/622)\n- The link tooltip gets stuck on screen after Excalidraw closes [#621](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/621)\n- Layout error when using the Workspaces core plugin. [#28](https://github.com/zsviczian/excalibrain/issues/28)","1.6.28":'\n## New\n- When dropping a link from a DataView query into Excalidraw the link will honor your "New link format" preferences in Obsidian. It will add the "shortest path when possible", if that is your setting. If the link includes a block or section reference, then the link will automatically include an alias, such that only the filename is displayed (shortest path possible allowing) [#610](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/610)\n- If Excalidraw is in a Hover Editor and you open a link in another pane by CTRL+SHIFT+Click then the new page will open in the main workspace, and not in a split pane in the hover editor.\n\n## Fixed\n- New text elements get de-selected after auto-save [#609](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/609)\n- Update opacity of bound text when the opacity of the container is updated [#5142](https://github.com/excalidraw/excalidraw/pull/5142)\n- ExcalidrawAutomate: openFileInNewOrAdjacentLeaf() function. This also caused an error when clicking a link in Excalidraw in a hover window, when there were no leaves in the main workspace view.',"1.6.27":"\n## New Features\n- While these new features are benefitial for all Excalidraw Automation projects, the current changes are mainly in support of the [ExcaliBrain](https://youtu.be/O2s-h5VKCas) integration. See detailed [Release Notes](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.6.27) on GitHub.\n","1.6.26":`\n## Fixed\n- Dragging multiple files onto the canvas will now correctly [#589](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/589)\n - add multiple links\n - or if you hold the CTRL/(SHIFT on Mac) while dropping the files, then adding multiple images\n- Dropped images and links were not selectable with the selection tool until the file was saved. This is now fixed.\n- Display the linked block/section on link-hover instead of the full page. [#597](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/597)\n- Hover preview without CTRL/CMD works again. Requires configuration in plugin settings. [#595](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/595)\n- If you embed the same markdown document into a drawing multiple times, you can now display different sections of the document in each embedded object. [#601](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/601).\n- If you make a copy of an equation and edit this copy, the original equation will remain unchanged [#593](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/593)\n\n## New Features\n- When you drag files from Dataview-results onto the canvas the obsidian:// urls will be converted into wiki links.[#599](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/599)\n- I added one more frontmatter key: ${String.fromCharCode(96)}excalidraw-linkbutton-opacity: ${String.fromCharCode(96)} This sets the opacity of the blue link-button in the top right corner of the element, overriding the respective setting in plugin settings. Valid values are numbers between 0 and 1, where 0 means the button is fully transparent.\n\n## New Excalidraw Automate Features\n- As part of building the new [ExcaliBrain](https://youtu.be/O2s-h5VKCas) plugin, I've added a number of integration features. See the GitHub [Release Notes](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.6.26) for details.\n`,"1.6.25":`\n## Fixed\n- Pinch-zoom in view mode was broken ([#5001](https://github.com/excalidraw/excalidraw/pull/5001))\n- The add image button on iPad was not working ([#5038](https://github.com/excalidraw/excalidraw/pull/5038) & [#584](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/584))\n\n## New Features\n- If Excalidraw is open in a [hover-editor](https://github.com/nothingislost/obsidian-hover-editor) when opening a link in a new pane Excalidraw will now open the link in the main workspace and not by splitting the view inside the hover-editor. \n- Excalidraw ScriptEngine settings\n - Script Engine settings now render HTML descriptions\n - If the ${String.fromCharCode(96)}height${String.fromCharCode(96)} property of a text setting is set, the corresponding text input field will be rendered as a textArea with the specified height.\n`,"1.6.24":"\n## Fixed\n- Link fixes:\n - Shift+Click on an element link (i.e. a link attached to a rectangle, ellipse, etc) did not open the link in a new leaf.\n - Clicking a link and opening it in a new leaf will now make the new leaf active and focused after the click.\n- Pointer calibration:\n - Opening an Excalidraw drawing with the [hover-editor](https://github.com/nothingislost/obsidian-hover-editor) and dragging the editor to another location corrupted the calibration of the pointer in Excalidraw. Similarly, when rearranging workspace panes by dragging, Excalidraw lost pointer calibration.\n\n## New Features\n### From Excalidraw.com\n- Element locking: The lock and unlock action is in the context menu.\n\n### Plugin\n- Any element that has a link, ctrl/cmd+clicking anywhere on the object will trigger the link action. You no longer have to go to the link icon. ([#541](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/541#issuecomment-1075578365))\n","1.6.23":`\n## Fixed:\n- I have received some user feedback about cases where the text separated from the sticky note. This version comes with a cleanup algorithm that will try to automatically resolve these issues.\n- Autosave did not notice changes in a very obscure case, when you opened a drawing, resized an element, and without deselecting the element you immediately closed the drawing. ([565](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/565))\n- CTRL+Enter to create a task did not work in hover-editor when opened from Excalidraw. Now it does! Thanks @pjeby! ([567](https://github.com/zsviczian/obsidian-excalidraw-plugin/pull/567))\n\n## New Features\n- If you have the [Obsidian-Latex](https://github.com/xldenis/obsidian-latex) plugin installed, from now Excalidraw will also process the ${String.fromCharCode(96)}preambles.sty${String.fromCharCode(96)} file. ( [563](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/563))\n- I added a new setting ${String.fromCharCode(96)}Embed & Export >> If found, use the already exported image for preview${String.fromCharCode(96)}. This setting works in conjunction with the ${String.fromCharCode(96)}Auto-export SVG/PNG${String.fromCharCode(96)} settings. If an exported image that matches the file name of the drawing is available, use that image instead of generating a preview image on the fly. This will result in faster previews especially when you have many embedded objects in the drawing, however, it may happen that your latest changes are not displayed and that the image will not automatically match your Obsidian theme in case you have changed the Obsidian theme since the export was created. This setting only applies to embedding images into markdown documents. For a number of reasons, the same approach cannot be used to expedite the loading of drawings with many embedded objects. See release notes for a [demo video](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.6.22).\n`,"1.6.22":'\n## Fixed:\n- "Create a new drawing - IN THE CURRENT ACTIVE PANE - and embed into active document" did not work as intended when an Excalidraw pane was already open. [#559](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/559)\n- [Obsidian-hover-editor](https://github.com/nothingislost/obsidian-hover-editor) related improvements [#555](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/555):\n - hovering triggered many hover preview windows in quick succession, and in some cases raised dozens of errors in the Developer Console\n - hover-editors were not visible in Excalidraw fullscreen mode\n\n## Minor new features:\n- Activating the eraser with key "e" will toggle the active tool and back. So for example if you are drawing a freedraw shape, you can press "e" to delete a few strokes, then press "e" again to continue drawing. On desktop PCs many styluses allow you to configure the pen button to trigger keypress "e". \n- New setting to enable penMode by default.\n- I increased the file size limit for images you paste into Excalidraw from 2MB to 20MB. You should however avoid very large images as they will impact the overall performance of the canvas. ([#557](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/557))\n',"1.6.21":`\nBefore I move on to implementing further features, I spent this week with further stabilizing and debugging the plugin. Hopefully this will result in a smoother, better experince for you all.\n\n## Fixed\n- Links in drawings (e.g. text elements or embedded images) were sometimes not updating when the source file was moved or renamed in your Vault. The issue happend when you had the drawing and the linked file open in panes next to each other. This has led to broken links. ([#546](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/546))\n- To remove complexity and potential error, I have hidden the autosave settings. From now, autosave is now always enabled. Excalidraw will attempt to save your drawing every 10 seconds, or if you are actively engaged in drawing a shape at that very moment (e.g. you are busy with a freedraw line), then autosave will save the drawing at the earliest next opportunity. I imlemented further triggers to save the drawing when there are changes in the drawing and you click outside the drawing canvas. There was a rare error involving text elements, that when happened blocked saving of the file. This error is now properly handeled. Also from now, you will receive a warning message if for any reason save encountered problems. \n- If you have two heading sections in your drawing, e.g. ${String.fromCharCode(96)}# Section abc${String.fromCharCode(96)} and ${String.fromCharCode(96)}# Section abc def${String.fromCharCode(96)}, then referencing ${String.fromCharCode(96)}[[#Section abc]]${String.fromCharCode(96)} in a link will highlight both text elements when clicking the link. These section references now work as expected. ([#530](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/530))`,"1.6.20":`\n
\n\n
\n\n## Fixed\n- ${String.fromCharCode(96)}ExcalidrawAutomate.create()${String.fromCharCode(96)} threw an error [539](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/539)\n\n## New Features\n### From excalidraw.com\n- Bind/unbind text to/from container [4935](https://github.com/excalidraw/excalidraw/pull/4935)\n\n### Plugin\nFrontmatter tags to customize image export at a file level [519](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/519). If these keys are present they will override the default excalidraw embed and export settings.\n- ${String.fromCharCode(96)}excalidraw-export-transparent: true${String.fromCharCode(96)}\n - true == Transparent / false == with background. \n- ${String.fromCharCode(96)}excalidraw-export-dark${String.fromCharCode(96)}\n - true == Dark mode / false == light mode.\n- ${String.fromCharCode(96)}excalidraw-export-svgpadding${String.fromCharCode(96)}\n - This only affects export to SVG. Specify the export padding for the image\n- ${String.fromCharCode(96)}excalidraw-export-pngscale${String.fromCharCode(96)}\n - This only affects export to PNG. Specify the export scale for the image. The typical range is between 0.5 and 5, but you can experiment with other values as well.\n`,"1.6.19":"\nThis is a minor update fixing left-handed mode on iOS, and deploying improvements to the new Excalidraw Eraser.\n","1.6.18":`\n
\n\n
\n\n## Fixed\n- Modifying properties of a text element in tray mode. [496](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/496)\n- Friendly page aliases with iframely should work more reliably now.\n- I further improved resilience of loading from a damaged Excalidraw.md file.\n\n## New Features\n### From excalidraw.com\n- Added Eraser [4887](https://github.com/excalidraw/excalidraw/pull/4887)\n\n### Plugin\n- New setting for default transcluded-text line-wrap length. This is the default value for "wrapAt" in ${String.fromCharCode(96)}![[file#^block]]{wrapAt}${String.fromCharCode(96)}. Wrapping text using this feature will insert linebreaks in the transcluded text. An alternative approach is to transclude text inside sticky notes, in which case Excalidraw will automatically take care of text wrapping depending on the sticky note's width. [228](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/228)\n- New command palette action to toggle fullscreen mode, so you can assign a hotkey.\n- I added basic support for left-handed users. Enable it in plugin settings under the "Display" section. Currently, only affects the position of the tray in tray-mode. [510](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/510)\n- More flexible filename settings. ⚠ Due to the change, current settings may behave slightly differently compared to before. ⚠ [470](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/470)\n`,"1.6.17":`\n
\n\n
\n\n## Fixed\n- Freedraw shape's background color was missing in the SVG export. [#443](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/443)\n- In rare cases, when you only changed the background color of the drawing or edited the dimensions of an embedded markdown document, or changed an existing LaTeX formula, and then moved to another document in the vault, these changes did not get saved. [#503](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/503)\n- I resolved an Excalidraw Automate glitch with word wrapping in containers. EA generated containers with fixed line breaks. The same error also affected the conversion of drawings from the "legacy" Excalidraw.com file format.\n- When you allow/disable autosave in settings, this change will immediately take effect for all open Excalidraw workspace leaves. Until now autosave was activated only after you closed and reopened the Excalidraw view. [#502](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/502)\n- When you create a text element containing a ${String.fromCharCode(96,96,96)}[[markdown link]]${String.fromCharCode(96,96,96)} in raw mode, the new link was parsed nonetheless, and sometimes the link disappeared, leaving only the parsed text without the actual link. Creating links in raw-mode now works correctly.\n\n## New Features\n- The most recent 5 custom colors from the canvas are now added as color options to the element stroke and element background palette. [#4843](https://github.com/excalidraw/excalidraw/pull/4843)\n- Vertical text alignment for text in sticky notes [#4852](https://github.com/excalidraw/excalidraw/pull/4852)\n- Markdown embeds into Excalidraw now receive default styling, including that of tables, blockquotes, and code blocks. I also added a new setting and corresponding frontmatter-key to set the border-color for the embedded markdown document. You can override plugin settings at the document level by adding ${String.fromCharCode(96,96,96)}excalidraw-border-color: steelblue${String.fromCharCode(96,96,96)} to the markdown document you want to embed into your drawing. Valid values are css-color-name|#HEXcolor|any-other-html-standard-format.\n- In Obsidian search, when the text you were searching for is found in an Excalidraw document, clicking the link in search-results will open the drawing with the matching text element selected and zoomed.\n- Excalidraw now supports linking to text elements on the canvas and linking to non-text objects. \n1) You can reference text headings just the same as markdown headings in a document\ni.e. you have a text element that includes a valid markdown heading:\n${String.fromCharCode(96,96,96)}markdown\n# My Heading\ndetails...\n${String.fromCharCode(96,96,96)}\nor \n${String.fromCharCode(96,96,96)}markdown\ntext element text\n# my reference\n${String.fromCharCode(96,96,96)}\nYou can reference these like this respectively: ${String.fromCharCode(96,96,96)}[[#My Heading|display alias]]${String.fromCharCode(96,96,96)} and ${String.fromCharCode(96,96,96)}[[#my reference|alias]]${String.fromCharCode(96,96,96)}\n\n![image](https://user-images.githubusercontent.com/14358394/156890231-5a23bcb3-40a4-4ad7-b366-74c328620159.png)\n\n2) You can also reference element ids similar to block references\n- Links take this form ${String.fromCharCode(96,96,96)}[[#^elementID|alias]]${String.fromCharCode(96,96,96)}\n- Linking is supported by a new action on the Obsidian Tools Panel\n![image](https://user-images.githubusercontent.com/14358394/156894011-6442c3d6-aaff-43a8-bd77-513e450484ba.png)\n\n[Release Notes on GitHub](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.6.17)\n`,"1.6.16":'\n
\n\n
\n\n\n## Fixed\n- CMD+Drag from the Obsidian File Manager does not work on Mac. You can now use SHIFT+Drag to embed an image or markdown document into a scene. ([#468](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/468))\n- Excalidraw Compressed JSON is now cut to smaller chunks (64 characters per paragraph, instead of the earlier 1024 characters). This should address search performance issues. ([#484](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/484))\n\n## New Features\n- I added the Obsidian Tools Panel\n - Click the Obsidian button to access the panel.\n - The tools panel contains key plugin commands and user / downloaded Excalidraw scripts.\n - Drag the panel with the handle at the top. Single click on the top to collapse the panel.\n - On Mobile press and hold the drag handle before dragging, to avoid activating the Obsidian slide in menus.\n - On Mobile long touch individual buttons on the panel to access tooltips.\n - Reinstall Excalidraw scripts to get the icons.\n- If you hold down SHIFT while resizing a sticky note, the text size will scale instead of text wrapping. ([Excalidraw tweet](https://twitter.com/aakansha1216/status/1496116528890417155?s=20&t=taXjA6I9Nd0T-C0wYBsG5g))\n- SVG export now includes links ([#4791](https://github.com/excalidraw/excalidraw/pull/4791))\n- Added full screen mode for Obsidian Mobile\n- Release notes\n - disable popup in settings\n - access release notes via the command palette, or the button on the tools panel\n\n[Release Notes on GitHub](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.6.16)\n\n[![support-membership](https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/support-tiers.jpg)](https://ko-fi.com/zsolt)\n'};class ReleaseNotes extends obsidian.Modal{constructor(A,e,t){super(A),this.plugin=e,this.version=t}onOpen(){var A;this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText(`Welcome to Excalidraw ${null!==(A=this.version)&&void 0!==A?A:""}`),this.createForm()}async onClose(){this.contentEl.empty(),await this.plugin.loadSettings(),this.plugin.settings.previousRelease=PLUGIN_VERSION,await this.plugin.saveSettings()}async createForm(){let A=this.plugin.settings.previousRelease;A=this.version===A?"0.0.0":A;const e=this.version?Object.keys(RELEASE_NOTES).filter((e=>"Intro"===e||isVersionNewerThanOther(e,A))).map((A=>`# ${A}\n${RELEASE_NOTES[A]}`)).slice(0,10).join("\n\n---\n"):FIRST_RUN;await obsidian.MarkdownRenderer.renderMarkdown(e,this.contentEl,"",this.plugin),this.contentEl.createEl("p",{text:""},(A=>{A.style.textAlign="right",A.createEl("button",{text:"Close"}).onclick=()=>this.close()}))}}const TOOLS_PANEL_WIDTH=228;class ToolsPanel extends React__namespace.Component{constructor(A){super(A),this.pos1=0,this.pos2=0,this.pos3=0,this.pos4=0,this.penDownX=0,this.penDownY=0,this.previousWidth=0,this.previousHeight=0,this.onRightEdge=!1,this.onBottomEdge=!1;const e=A.view.plugin.getPackage(A.view.ownerWindow).react;this.containerRef=e.createRef(),this.state={visible:A.visible,top:50,left:200,theme:"dark",excalidrawViewMode:!1,minimized:!1,isFullscreen:!1,isPreviewMode:!0,scriptIconMap:{}}}updateScriptIconMap(A){this.setState((()=>({scriptIconMap:A})))}setPreviewMode(A){this.setState((()=>({isPreviewMode:A})))}setFullscreen(A){this.setState((()=>({isFullscreen:A})))}setExcalidrawViewMode(A){this.setState((()=>({excalidrawViewMode:A})))}toggleVisibility(A){this.setTopCenter(A),this.setState((A=>({visible:!A.visible})))}setTheme(A){this.setState((e=>({theme:A})))}setTopCenter(A){this.setState((()=>({left:(this.containerRef.current.clientWidth-228-(A?0:232))/2+this.containerRef.current.parentElement.offsetLeft+(A?0:232),top:64+this.containerRef.current.parentElement.offsetTop})))}updatePosition(A=0,e=0){this.setState((()=>{const{offsetTop:t,offsetLeft:i,clientWidth:n,clientHeight:a}=this.containerRef.current.firstElementChild,r=t-A,s=i-e,{clientWidth:o,clientHeight:l,offsetTop:c,offsetLeft:d}=this.containerRef.current.parentElement;return this.previousHeight=l,this.previousWidth=o,this.onBottomEdge=r>=l-a+c,this.onRightEdge=s>=o-n+d,{top:r{A.preventDefault(),Math.abs(this.penDownX-this.pos3)>5||Math.abs(this.penDownY-this.pos4)>5||this.setState((A=>({minimized:!A.minimized})))},onPointerDown:A=>{const e=A=>{A.preventDefault(),this.pos1=this.pos3-A.clientX,this.pos2=this.pos4-A.clientY,this.pos3=A.clientX,this.pos4=A.clientY,this.updatePosition(this.pos2,this.pos1)},t=()=>{var A,i;null===(A=this.props.view.ownerDocument)||void 0===A||A.removeEventListener("pointerup",t),null===(i=this.props.view.ownerDocument)||void 0===i||i.removeEventListener("pointermove",e)};A.preventDefault(),this.penDownX=this.pos3=A.clientX,this.penDownY=this.pos4=A.clientY,this.props.view.ownerDocument.addEventListener("pointerup",t),this.props.view.ownerDocument.addEventListener("pointermove",e)}},React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 228 26"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M40,7 h148 M40,13 h148 M40,19 h148"}))),React__namespace.createElement("div",{className:"Island App-menu__left scrollbar",style:{maxHeight:"350px",backgroundColor:"transparent","--padding":2,display:this.state.minimized?"none":"block"}},React__namespace.createElement("div",{className:"panelColumn"},React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Utility actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"search",title:t$d("SEARCH"),action:()=>{search(this.props.view)},icon:ICONS.search,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"release-notes",title:t$d("READ_RELEASE_NOTES"),action:()=>{new ReleaseNotes(this.props.view.app,this.props.view.plugin,PLUGIN_VERSION).open()},icon:ICONS.releaseNotes,view:this.props.view}),null===this.state.isPreviewMode?React__namespace.createElement(ActionButton,{key:"convert",title:t$d("CONVERT_FILE"),action:()=>{this.props.view.convertExcalidrawToMD()},icon:ICONS.convertFile,view:this.props.view}):React__namespace.createElement(ActionButton,{key:"viewmode",title:this.state.isPreviewMode?t$d("PARSED"):t$d("RAW"),action:()=>{this.state.isPreviewMode?this.props.view.changeTextMode(TextMode.raw):this.props.view.changeTextMode(TextMode.parsed)},icon:this.state.isPreviewMode?ICONS.rawMode:ICONS.parsedMode,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"tray-mode",title:t$d("TRAY_MODE"),action:()=>{this.props.view.toggleTrayMode()},icon:ICONS.trayMode,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"fullscreen",title:this.state.isFullscreen?t$d("EXIT_FULLSCREEN"):t$d("GOTO_FULLSCREEN"),action:()=>{this.state.isFullscreen?this.props.view.exitFullscreen():this.props.view.gotoFullscreen()},icon:this.state.isFullscreen?ICONS.exitFullScreen:ICONS.gotoFullScreen,view:this.props.view}))),React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Export actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"lib",title:t$d("DOWNLOAD_LIBRARY"),action:()=>{this.props.view.plugin.exportLibrary()},icon:ICONS.exportLibrary,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"svg",title:t$d("EXPORT_SVG"),action:()=>{this.props.view.saveSVG(),new obsidian.Notice(`File saved: ${getIMGFilename(this.props.view.file.path,"svg")}`)},icon:ICONS.exportSVG,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"png",title:t$d("EXPORT_PNG"),action:()=>{this.props.view.savePNG(),new obsidian.Notice(`File saved: ${getIMGFilename(this.props.view.file.path,"png")}`)},icon:ICONS.exportPNG,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"excalidraw",title:t$d("EXPORT_EXCALIDRAW"),action:()=>{this.props.view.exportExcalidraw()},icon:ICONS.exportExcalidraw,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"md",title:t$d("OPEN_AS_MD"),action:()=>{this.props.view.openAsMarkdown()},icon:ICONS.switchToMarkdown,view:this.props.view}))),React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Insert actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"image",title:t$d("INSERT_IMAGE"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertImageDialog.start(this.props.view)},icon:ICONS.insertImage,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"insertMD",title:t$d("INSERT_MD"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertMDDialog.start(this.props.view)},icon:ICONS.insertMD,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"latex",title:t$d("INSERT_LATEX"),action:()=>{this.props.centerPointer(),insertLaTeXToView(this.props.view)},icon:ICONS.insertLaTeX,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"link",title:t$d("INSERT_LINK"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertLinkDialog.start(this.props.view.file.path,this.props.view.addText)},icon:ICONS.insertLink,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"link-to-element",title:t$d("INSERT_LINK_TO_ELEMENT"),action:A=>{this.props.view.copyLinkToSelectedElementToClipboard(A[CTRL_OR_CMD]?"group=":A.shiftKey?"area=":"")},icon:ICONS.copyElementLink,view:this.props.view}))),this.renderScriptButtons(!1),this.renderScriptButtons(!0)))))}renderScriptButtons(A){if(0===Object.keys(this.state.scriptIconMap).length)return"";const e=`${this.props.view.plugin.settings.scriptFolderPath}/Downloaded/`,t=t=>A?t.startsWith(e):!t.startsWith(e);return 0===Object.keys(this.state.scriptIconMap).filter((A=>t(A))).length?"":React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,A?"Downloaded":"User"," Scripts"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},Object.keys(this.state.scriptIconMap).filter((A=>t(A))).sort().map((e=>{return React__namespace.createElement(ActionButton,{key:e,title:A?this.state.scriptIconMap[e].name.replace("Downloaded/",""):this.state.scriptIconMap[e].name,action:async()=>{const A=this.props.view.app.vault.getAbstractFileByPath(e);A&&A instanceof obsidian.TFile&&this.props.view.plugin.scriptEngine.executeScript(this.props.view,await this.props.view.plugin.app.vault.read(A),this.props.view.plugin.scriptEngine.getScriptName(A))},icon:this.state.scriptIconMap[e].svgString?(t=this.state.scriptIconMap[e].svgString,t=t.replace(/stroke\s*=\s*['"][^"']*['"]/g,"").replace(/width\s*=\s*['"][^"']*['"]/g,"").replace(/height\s*=\s*['"][^"']*['"]/g,"").replace("e.filter((e=>{if(t&&e.type!==t)return!1;const[i,n,a,r]=rotatedDimensions(e);return i<=A.x&&i+a>=A.x&&n<=A.y&&n+r>=A.y})),getTextElementAtPointer=(A,e)=>{const t=e.excalidrawAPI;if(!t)return{id:null,text:null};const i=getElementsAtPointer(A,t.getSceneElements(),"text");if(0==i.length)return{id:null,text:null};if(1===i.length)return{id:i[0].id,text:i[0].text};const n=i.filter((A=>{const t=e.textMode===TextMode.parsed?e.excalidrawData.getRawText(A.id):A.text;return!!t&&(!!t.match(REG_LINKINDEX_HYPERLINK)||!!REGEX_LINK.getRes(t).next().value)}));return 0==n.length?{id:i[0].id,text:i[0].text}:{id:n[0].id,text:n[0].text}},getImageElementAtPointer=(A,e)=>{const t=e.excalidrawAPI;if(!t)return;const i=getElementsAtPointer(A,t.getSceneElements(),"image");return 0===i.length?{id:null,fileId:null}:i.length>=1?{id:i[0].id,fileId:i[0].fileId}:void 0},getElementWithLinkAtPointer=(A,e)=>{const t=e.excalidrawAPI;if(!t)return;const i=getElementsAtPointer(A,t.getSceneElements()).filter((A=>A.link));return 0===i.length?{id:null,text:null}:i.length>=1?{id:i[0].id,text:i[0].link}:void 0};var TextMode;!function(A){A.parsed="parsed",A.raw="raw"}(TextMode||(TextMode={}));const addFiles=async(A,e,t)=>{if(!A||0===A.length||!e)return;const i=e.excalidrawAPI;if(!i)return;if(A=A.filter((A=>A&&A.size&&A.size.height>0&&A.size.width>0)),0===A.length)return;const n=scaleLoadedImage(e.getScene(),A);void 0===t&&(t=n.scene.appState.theme),n.dirty&&await e.updateScene({elements:n.scene.elements,appState:n.scene.appState,commitToHistory:!1});for(const i of A)if(e.excalidrawData.hasFile(i.id)&&e.excalidrawData.getFile(i.id).setImage(i.dataURL,i.mimeType,i.size,t,i.hasSVGwithBitmap),e.excalidrawData.hasEquation(i.id)){const A=e.excalidrawData.getEquation(i.id).latex;e.excalidrawData.setEquation(i.id,{latex:A,isLoaded:!0})}i.addFiles(A)},warningUnknowSeriousError=()=>{new obsidian.Notice("WARNING: Excalidraw ran into an unknown problem!\n\nThere is a risk that your most recent changes cannot be saved.\n\nTo be on the safe side...\n1) Please select your drawing using CTRL/CMD+A and make a copy with CTRL/CMD+C.\n2) Then create an empty drawing in a new pane by CTRL/CMD+clicking the Excalidraw ribbon button,\n3) and paste your work to the new document with CTRL/CMD+V.",6e4)};class ExcalidrawView extends obsidian.TextFileView{constructor(A,e){super(A),this.getScene=null,this.addElements=null,this.getSelectedTextElement=null,this.getSelectedImageElement=null,this.getSelectedElementWithLink=null,this.addText=null,this.refresh=null,this.excalidrawRef=null,this.excalidrawAPI=null,this.excalidrawWrapperRef=null,this.toolsPanelRef=null,this.linksAlwaysOpenInANewPane=!1,this.lastSaveTimestamp=0,this.metaKeyDown=!1,this.ctrlKeyDown=!1,this.shiftKeyDown=!1,this.altKeyDown=!1,this.semaphores={viewunload:!1,scriptsReady:!1,justLoaded:!1,preventAutozoom:!1,autosaving:!1,dirty:null,preventReload:!1,isEditingText:!1,saving:!1,forceSaving:!1,hoverSleep:!1,wheelTimeout:null},this.autosaveTimer=null,this.textMode=TextMode.raw,this.compatibilityMode=!1,this.isEditingTextResetTimer=null,this.id=this.leaf.id,this.getHookServer=()=>{var A;return null!==(A=this.hookServer)&&void 0!==A?A:this.plugin.ea},this.preventReloadResetTimer=null,this.fullscreenModalObserver=null,this.hiddenMobileLeaves=[],this.offsetLeft=0,this.offsetTop=0,this.blockTextModeChange=!1,this.isLoaded=!1,this.activeLoader=null,this.nextLoader=null,this.initialContainerSizeUpdate=!1,this.previousSceneVersion=0,this.previousBackgroundColor="",this.plugin=e,this.excalidrawData=new ExcalidrawData(e),this.hookServer=e.ea}setHookServer(A){this.hookServer=A||this.plugin.ea}preventAutozoom(){this.semaphores.preventAutozoom=!0,setTimeout((()=>this.semaphores.preventAutozoom=!1),1500)}saveExcalidraw(A){if(!A){if(!this.getScene)return!1;A=this.getScene()}const e=`${this.file.path.substring(0,this.file.path.lastIndexOf(".md"))}.excalidraw`,t=app.vault.getAbstractFileByPath(obsidian.normalizePath(e));t&&t instanceof obsidian.TFile?app.vault.modify(t,JSON.stringify(A,null,"\t")):app.vault.create(e,JSON.stringify(A,null,"\t"))}async exportExcalidraw(){this.getScene&&this.file&&(app.isMobile?new Prompt(app,"Please provide filename",this.file.basename,"filename, leave blank to cancel action").openAndGetValue((async A=>{if(!A)return;A=`${A}.excalidraw`;const e=splitFolderAndFilename(this.file.path).folderpath;await checkAndCreateFolder(e);const t=getNewUniqueFilepath(app.vault,A,e);app.vault.create(t,JSON.stringify(this.getScene(),null,"\t")),new obsidian.Notice(`Exported to ${t}`,6e3)})):download("data:text/plain;charset=utf-8",encodeURIComponent(JSON.stringify(this.getScene(),null,"\t")),`${this.file.basename}.excalidraw`))}async svg(A,e){const t={withBackground:getWithBackground(this.plugin,this.file),withTheme:!0};return await getSVG(Object.assign(Object.assign({},A),{appState:Object.assign(Object.assign({},A.appState),{theme:null!=e?e:getExportTheme(this.plugin,this.file,A.appState.theme)})}),t,getExportPadding(this.plugin,this.file))}async saveSVG(A){if(!A){if(!this.getScene)return!1;A=this.getScene()}const e=async(e,t)=>{const i=app.vault.getAbstractFileByPath(obsidian.normalizePath(e)),n=await this.svg(A,t);if(!n)return;const a=(new XMLSerializer).serializeToString(embedFontsInSVG(n,this.plugin));i&&i instanceof obsidian.TFile?await app.vault.modify(i,a):await app.vault.create(e,a)};this.plugin.settings.autoExportLightAndDark?(await e(getIMGFilename(this.file.path,"dark.svg"),"dark"),await e(getIMGFilename(this.file.path,"light.svg"),"light")):await e(getIMGFilename(this.file.path,"svg"))}async png(A,e){const t={withBackground:getWithBackground(this.plugin,this.file),withTheme:!0};return await getPNG(Object.assign(Object.assign({},A),{appState:Object.assign(Object.assign({},A.appState),{theme:null!=e?e:getExportTheme(this.plugin,this.file,A.appState.theme)})}),t,getExportPadding(this.plugin,this.file),getPNGScale(this.plugin,this.file))}async savePNG(A){if(!A){if(!this.getScene)return!1;A=this.getScene()}const e=async(e,t)=>{const i=app.vault.getAbstractFileByPath(obsidian.normalizePath(e)),n=await this.png(A,t);n&&(i&&i instanceof obsidian.TFile?await app.vault.modifyBinary(i,await n.arrayBuffer()):await app.vault.createBinary(e,await n.arrayBuffer()))};this.plugin.settings.autoExportLightAndDark?(await e(getIMGFilename(this.file.path,"dark.png"),"dark"),await e(getIMGFilename(this.file.path,"light.png"),"light")):await e(getIMGFilename(this.file.path,"png"))}async save(A=!0,e=!1){if(!this.isLoaded)return;if(this.semaphores.saving)return;this.semaphores.saving=!0;let t=!1;if(this.getScene&&this.excalidrawAPI&&this.isLoaded&&this.file&&app.vault.getAbstractFileByPath(this.file.path)){try{const i=Boolean(null!==this.semaphores.dirty&&this.semaphores.dirty||this.semaphores.autosaving||e),n=this.getScene();if(this.compatibilityMode?await this.excalidrawData.syncElements(n):await this.excalidrawData.syncElements(n,this.excalidrawAPI.getAppState().selectedElementIds)&&await this.loadDrawing(!1,this.excalidrawAPI.getSceneElementsIncludingDeleted().filter((A=>A.isDeleted))),i&&(this.preventReloadResetTimer&&(clearTimeout(this.preventReloadResetTimer),this.preventReloadResetTimer=null),this.semaphores.preventReload=A,await super.save(),t=this.lastSaveTimestamp===this.file.stat.mtime&&!A&&e,this.lastSaveTimestamp=this.file.stat.mtime,this.clearDirty(),A)){const A=this;this.preventReloadResetTimer=setTimeout((()=>A.semaphores.preventReload=!1),2e3)}if(!t&&!this.semaphores.autosaving&&!this.semaphores.viewunload){const A=this.excalidrawData.autoexportPreference;(A===AutoexportPreference.inherit&&this.plugin.settings.autoexportSVG||A===AutoexportPreference.both||A===AutoexportPreference.svg)&&this.saveSVG(),(A===AutoexportPreference.inherit&&this.plugin.settings.autoexportPNG||A===AutoexportPreference.both||A===AutoexportPreference.png)&&this.savePNG(),!this.compatibilityMode&&this.plugin.settings.autoexportExcalidraw&&this.saveExcalidraw()}}catch(A){errorlog({where:"ExcalidrawView.save",fn:this.save,error:A}),warningUnknowSeriousError()}this.semaphores.saving=!1,t&&this.reload(!0,this.file)}else this.semaphores.saving=!1}getViewData(){if(!this.getScene)return this.data;if(!this.excalidrawData.loaded)return this.data;const A=this.getScene();if(!this.compatibilityMode){let A=this.data.search(/(^%%\n)?# Text Elements\n/m);if(-1==A&&(A=this.data.search(/(%%\n)?# Drawing\n/)),-1==A)return this.data;let e=this.data.substring(0,A).replace(/excalidraw-plugin:\s.*\n/,"excalidraw-plugin: "+(this.textMode===TextMode.raw?"raw\n":"parsed\n"));const t=/(^---[\w\W]*?---\n)(!\[\[.*?]]\n(%%\n)?)/m;e.match(t)&&(e=e.replace(t,"$1")),this.excalidrawData.disableCompression||(this.excalidrawData.disableCompression=this.isEditedAsMarkdownInOtherView());const i=e+this.excalidrawData.generateMD(this.excalidrawAPI.getSceneElementsIncludingDeleted().filter((A=>A.isDeleted)));return this.excalidrawData.disableCompression=!1,i}return this.compatibilityMode?JSON.stringify(A,null,"\t"):this.data}addFullscreenchangeEvent(){this.contentEl.onfullscreenchange=()=>{this.plugin.settings.zoomToFitOnResize&&this.zoomToFit(),this.isFullscreen()||(this.clearFullscreenObserver(),this.contentEl.removeAttribute("style")),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setFullscreen(this.isFullscreen())}}restoreMobileLeaves(){this.hiddenMobileLeaves.length>0&&(this.hiddenMobileLeaves.forEach((A=>{A[0].containerEl.style.display=A[1]})),this.hiddenMobileLeaves=[])}gotoFullscreen(){var A;if(this.plugin.leafChangeTimeout&&(clearTimeout(this.plugin.leafChangeTimeout),this.plugin.leafChangeTimeout=null),this.excalidrawWrapperRef){if(this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setFullscreen(!0),app.isMobile){obsidian.Platform.isIosApp&&(this.restoreMobileLeaves(),app.workspace.getLayout().main.children.filter((A=>"leaf"===A.type)).forEach((A=>{const e=app.workspace.getLeafById(A.id);e!==this.leaf&&(this.hiddenMobileLeaves.push([e,e.containerEl.style.display]),e.containerEl.style.display="none")})));const A=document.createElement("style");A.id="excalidraw-full-screen",A.textContent="\n .workspace-leaf-content .view-content {\n padding: 0px !important;\n }\n .view-header {\n height: 1px !important;\n }\n .status-bar {\n display: none !important;\n }";const e=document.getElementById(A.id);e&&document.head.removeChild(e),document.head.appendChild(A)}this.contentEl.requestFullscreen(),null===(A=this.excalidrawWrapperRef.current.firstElementChild)||void 0===A||A.focus(),this.contentEl.setAttribute("style","padding:0px;margin:0px;"),this.fullscreenModalObserver=new MutationObserver((A=>{if(1!==A.length)return;if(!A[0].addedNodes||1!==A[0].addedNodes.length)return;const e=A[0].addedNodes[0];if(e.nodeType!==Node.ELEMENT_NODE)return;const t=e;t.classList.contains("modal-container")&&(this.contentEl.appendChild(t),t.querySelector("input").focus())})),this.fullscreenModalObserver.observe(this.ownerDocument.body,{childList:!0,subtree:!1})}}clearFullscreenObserver(){this.fullscreenModalObserver&&(this.fullscreenModalObserver.disconnect(),this.fullscreenModalObserver=null)}isFullscreen(){return this.hiddenMobileLeaves.length>0||this.ownerDocument.fullscreenEnabled&&this.ownerDocument.fullscreenElement===this.contentEl}exitFullscreen(){if(console.log("Exit Fullscreen"),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setFullscreen(!1),app.isMobile){this.restoreMobileLeaves();const A=document.getElementById("excalidraw-full-screen");A&&document.head.removeChild(A)}this.ownerDocument.exitFullscreen()}async handleLinkClick(A,e){var t,i,n,a;const r=this.ownerDocument.body.querySelector("body>div.excalidraw-tooltip,div.excalidraw-tooltip--visible");r&&this.ownerDocument.body.removeChild(r);const s=this.getSelectedTextElement(),o=(null==s?void 0:s.id)?null:this.getSelectedImageElement(),l=(null==o?void 0:o.id)||(null==s?void 0:s.id)?null:this.getSelectedElementWithLink();let c=null,d=null,h=null;if((null==s?void 0:s.id)||(null==l?void 0:l.id)){if(h=null!==(t=null==l?void 0:l.text)&&void 0!==t?t:this.textMode===TextMode.parsed?this.excalidrawData.getRawText(s.id):s.text,!h)return;if(h=h.replaceAll("\n",""),this.getHookServer().onLinkClickHook){const A=null!==(i=s.id)&&void 0!==i?i:l.id,t=this.excalidrawAPI.getSceneElements().filter((e=>e.id===A))[0];try{if(!this.getHookServer().onLinkClickHook(t,h,e,this,this.getHookServer()))return}catch(A){errorlog({where:"ExcalidrawView.handleLinkClick selectedText.id!==null",fn:this.getHookServer().onLinkClickHook,error:A})}}if(h.match(REG_LINKINDEX_HYPERLINK))return void window.open(h,"_blank");const n=REGEX_LINK.getRes(h).next();if(!n.value){const A=h.matchAll(/#([\p{Letter}\p{Emoji_Presentation}\p{Number}\/_-]+)/gu).next();if(!A.value||A.value.length<2)return;const e=app.workspace.getLeavesOfType("search");if(0==e.length)return;return e[0].view.setQuery(`tag:${A.value[1]}`),app.workspace.revealLeaf(e[0]),void(this.isFullscreen()&&this.exitFullscreen())}if(h=REGEX_LINK.getLink(n),h.match(REG_LINKINDEX_HYPERLINK))return void window.open(h,"_blank");if(h.search("#")>-1){const A=getLinkParts(h,this.file);d=`#${A.isBlockRef?"^":""}${A.ref}`,h=A.path}if(h.match(REG_LINKINDEX_INVALIDCHARS))return void new obsidian.Notice(t$d("FILENAME_INVALID_CHARS"),4e3);c=A.app.metadataCache.getFirstLinkpathDest(h,A.file.path)}if(null==o?void 0:o.id){if(this.excalidrawData.hasEquation(o.fileId)){const A=this.excalidrawData.getEquation(o.fileId).latex;return void new Prompt(app,t$d("ENTER_LATEX"),A,"").openAndGetValue((async e=>{e&&e!==A&&(this.excalidrawData.setEquation(o.fileId,{latex:e,isLoaded:!1}),await this.save(!1),await updateEquation(e,o.fileId,this,addFiles,this.plugin),this.setDirty(1))}))}if(await this.save(!1),this.excalidrawData.hasFile(o.fileId)){if(e.altKey){const A=this.excalidrawData.getFile(o.fileId);if("md"===A.file.extension&&!this.plugin.isExcalidrawFile(A.file))return void new Prompt(app,"Customize the link",A.linkParts.original,"","Do not add [[square brackets]] around the filename!
Follow this format when editing your link:
filename#^blockref|WIDTHxMAXHEIGHT").openAndGetValue((async e=>{e&&A.linkParts.original!==e&&(A.resetImage(this.file.path,e),await this.save(!1),await this.loadSceneFiles(),this.setDirty(2))}))}h=this.excalidrawData.getFile(o.fileId).file.path,c=this.excalidrawData.getFile(o.fileId).file}}if(h){if(this.getHookServer().onLinkClickHook){const A=null!==(a=null!==(n=o.id)&&void 0!==n?n:s.id)&&void 0!==a?a:l.id,t=this.excalidrawAPI.getSceneElements().filter((e=>e.id===A))[0];try{if(!this.getHookServer().onLinkClickHook(t,h,e,this,this.getHookServer()))return}catch(A){errorlog({where:"ExcalidrawView.handleLinkClick selectedText.id===null",fn:this.getHookServer().onLinkClickHook,error:A})}}try{if(e.shiftKey&&this.isFullscreen()&&this.exitFullscreen(),!c)return void new NewFileActions(this.plugin,h,e.shiftKey,!app.isMobile&&e.metaKey,A).open();const t=!app.isMobile&&(e.metaKey&&this.linksAlwaysOpenInANewPane||e.metaKey)?app.workspace.openPopoutLeaf():e.shiftKey||this.linksAlwaysOpenInANewPane?getNewOrAdjacentLeaf(this.plugin,A.leaf):A.leaf;await t.openFile(c,d?{active:!1,eState:{subpath:d}}:void 0)}catch(A){new obsidian.Notice(A,4e3)}}else new obsidian.Notice(t$d("LINK_BUTTON_CLICK_NO_TEXT"),2e4)}onResize(){var A,e;if(this.plugin.leafChangeTimeout)return;const t=this.excalidrawAPI;this.plugin.settings.zoomToFitOnResize&&this.excalidrawRef&&!this.semaphores.isEditingText&&t&&"text"!==(null===(e=null===(A=t.getAppState())||void 0===A?void 0:A.editingElement)||void 0===e?void 0:e.type)&&this.zoomToFit(!1)}getSceneVersion(A){return this.excalidrawGetSceneVersion||(this.excalidrawGetSceneVersion=this.plugin.getPackage(this.ownerWindow).excalidrawLib.getSceneVersion),this.excalidrawGetSceneVersion(A.filter((A=>!A.isDeleted)))}onload(){const A=Boolean(void 0===this.containerEl.onWindowMigrated);app.isMobile||A||this.containerEl.onWindowMigrated((()=>this.leaf.rebuildView()));const e=app.isMobile?document:this.containerEl.ownerDocument;this.ownerDocument=e,this.ownerWindow=this.ownerDocument.defaultView,this.plugin.getPackage(this.ownerWindow),this.semaphores.scriptsReady=!0,this.wheelEvent=A=>{this.semaphores.wheelTimeout&&clearTimeout(this.semaphores.wheelTimeout),this.semaphores.hoverSleep&&this.clearHoverPreview&&this.clearHoverPreview(),this.semaphores.wheelTimeout=setTimeout((()=>{clearTimeout(this.semaphores.wheelTimeout),this.semaphores.wheelTimeout=null}),1e3)},this.containerEl.addEventListener("wheel",this.wheelEvent,{passive:!1}),this.addAction("ScriptEngine",t$d("INSTALL_SCRIPT_BUTTON"),(()=>{new ScriptInstallPrompt(this.plugin).open()})),this.diskIcon=this.addAction("disk",t$d("FORCE_SAVE"),(async()=>{this.semaphores.autosaving||this.semaphores.saving?new obsidian.Notice("Force Save aborted because saving is in progress)"):(this.preventReloadResetTimer&&(clearTimeout(this.preventReloadResetTimer),this.preventReloadResetTimer=null),this.semaphores.preventReload=!1,this.semaphores.forceSaving=!0,await this.save(!1,!0),this.plugin.triggerEmbedUpdates(),this.loadSceneFiles(),this.semaphores.forceSaving=!1,new obsidian.Notice("Save successful",1e3))})),this.textIsRaw_Element=this.addAction("presentation",t$d("RAW"),(()=>this.changeTextMode(TextMode.parsed))),this.textIsParsed_Element=this.addAction("quote-glyph",t$d("PARSED"),(()=>this.changeTextMode(TextMode.raw))),this.linkAction_Element=this.addAction("link",t$d("OPEN_LINK"),(A=>this.handleLinkClick(this,A))),app.isMobile||this.addAction("fullscreen","Press ESC to exit fullscreen mode",(()=>this.gotoFullscreen()));const t=this;app.workspace.onLayoutReady((async()=>{t.contentEl.addClass("excalidraw-view"),await t.addSlidingPanesListner(),t.addParentMoveObserver(),t.onKeyUp=A=>{t.ctrlKeyDown=A[CTRL_OR_CMD],t.shiftKeyDown=A.shiftKey,t.altKeyDown=A.altKey,t.metaKeyDown=A.metaKey},t.onKeyDown=A=>{this.ctrlKeyDown=A[CTRL_OR_CMD],this.shiftKeyDown=A.shiftKey,this.altKeyDown=A.altKey,this.metaKeyDown=A.metaKey},t.ownerWindow.addEventListener("keydown",t.onKeyDown,!1),t.ownerWindow.addEventListener("keyup",t.onKeyUp,!1)})),this.setupAutosaveTimer(),super.onload()}async addSlidingPanesListner(){const A=this;this.slidingPanesListner=()=>{A.refresh&&A.refresh()};let e=app.workspace.rootSplit;for(;!e;)await sleep(50),e=app.workspace.rootSplit;e.containerEl.addEventListener("scroll",this.slidingPanesListner)}removeSlidingPanesListner(){var A;this.slidingPanesListner&&(null===(A=app.workspace.rootSplit.containerEl)||void 0===A||A.removeEventListener("scroll",this.slidingPanesListner))}addParentMoveObserver(){var A;const e=null!==(A=getParentOfClass(this.containerEl,"popover"))&&void 0!==A?A:getParentOfClass(this.containerEl,"workspace-leaf");if(!e)return;const t=e.classList.contains("popover");this.offsetLeft=e.offsetLeft,this.offsetTop=e.offsetTop;const i=this;this.parentMoveObserver=new MutationObserver((async A=>{const e=A[0].target;if(!(e instanceof HTMLElement))return;const{offsetLeft:t,offsetTop:n}=e;t===i.offsetLeft&&n==i.offsetTop||(i.refresh&&i.refresh(),i.offsetLeft=t,i.offsetTop=n)})),this.parentMoveObserver.observe(e,{attributeOldValue:!0,attributeFilter:t?["data-x","data-y"]:["class","style"]})}removeParentMoveObserver(){this.parentMoveObserver&&this.parentMoveObserver.disconnect()}setTheme(A){const e=this.excalidrawAPI;if(!this.excalidrawRef||!e)return;if(this.file&&hasExportTheme(this.plugin,this.file))return;const t=e.getAppState();this.excalidrawData.scene.theme=A,this.updateScene({appState:Object.assign(Object.assign({},t),{theme:A}),commitToHistory:!1})}async changeTextMode(A,e=!0){if(this.compatibilityMode)return;if(this.blockTextModeChange)return;this.blockTextModeChange=!0,this.textMode=A,A===TextMode.parsed?(this.textIsRaw_Element.hide(),this.textIsParsed_Element.show()):(this.textIsRaw_Element.show(),this.textIsParsed_Element.hide()),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setPreviewMode(A===TextMode.parsed);const t=this.excalidrawAPI;t&&e&&(await this.save(),this.preventAutozoom(),await this.excalidrawData.loadData(this.data,this.file,this.textMode),this.excalidrawData.scene.appState.theme=t.getAppState().theme,await this.loadDrawing(!1),t.history.clear()),this.prevTextMode=this.textMode,this.blockTextModeChange=!1}setupAutosaveTimer(){const A=async()=>{var e;if(!this.isLoaded)return void(this.autosaveTimer=setTimeout(A,this.plugin.settings.autosaveInterval));const t=this.excalidrawAPI;if(!t)return void warningUnknowSeriousError();const i=t.getAppState(),n=null!==i.editingElement;if(this.refresh(),!this.semaphores.dirty||this.semaphores.dirty!=(null===(e=this.file)||void 0===e?void 0:e.path)||!this.plugin.settings.autosave||this.semaphores.forceSaving||this.semaphores.autosaving||n||null!==i.draggingElement)this.autosaveTimer=setTimeout(A,this.plugin.activeExcalidrawView===this&&this.semaphores.dirty&&this.plugin.settings.autosave?1e3:this.plugin.settings.autosaveInterval);else{if(this.autosaveTimer=null,this.excalidrawRef){this.semaphores.autosaving=!0;const A=this;this.save().then((()=>A.semaphores.autosaving=!1))}this.autosaveTimer=setTimeout(A,this.plugin.settings.autosaveInterval)}};this.autosaveTimer&&(clearTimeout(this.autosaveTimer),this.autosaveTimer=null),this.autosaveTimer=setTimeout(A,this.plugin.settings.autosaveInterval)}onunload(){var A,e,t,i,n,a;if(this.restoreMobileLeaves(),this.semaphores.viewunload=!0,null===(A=this.ownerWindow)||void 0===A||A.removeEventListener("keydown",this.onKeyDown,!1),null===(e=this.ownerWindow)||void 0===e||e.removeEventListener("keyup",this.onKeyUp,!1),this.containerEl.removeEventListener("wheel",this.wheelEvent,!1),this.getHookServer().onViewUnloadHook)try{this.getHookServer().onViewUnloadHook(this)}catch(A){errorlog({where:"ExcalidrawView.onunload",fn:this.getHookServer().onViewUnloadHook,error:A})}const r=null===(i=null===(t=this.containerEl)||void 0===t?void 0:t.ownerDocument)||void 0===i?void 0:i.body.querySelector("body>div.excalidraw-tooltip,div.excalidraw-tooltip--visible");r&&(null===(a=null===(n=this.containerEl)||void 0===n?void 0:n.ownerDocument)||void 0===a||a.body.removeChild(r)),this.removeParentMoveObserver(),this.removeSlidingPanesListner(),this.autosaveTimer&&(clearInterval(this.autosaveTimer),this.autosaveTimer=null),this.fullscreenModalObserver&&(this.fullscreenModalObserver.disconnect(),this.fullscreenModalObserver=null)}async reload(A=!1,e){if(this.semaphores.preventReload)return void(this.semaphores.preventReload=!1);if(this.semaphores.saving)return;if(this.diskIcon.querySelector("svg").removeClass("excalidraw-dirty"),this.compatibilityMode)return void this.clearDirty();const t=this.excalidrawAPI;if(!this.excalidrawRef||!this.file||!t)return;const i=e&&e===this.file;i&&(this.data=await app.vault.read(e),this.preventAutozoom()),A?await this.excalidrawData.loadData(this.data,this.file,this.textMode):await this.excalidrawData.setTextMode(this.textMode),this.excalidrawData.scene.appState.theme=t.getAppState().theme,await this.loadDrawing(i),this.clearDirty()}async zoomToElementId(A,e){let t=0;for(;!this.excalidrawAPI&&t++<100;)await sleep(50);const i=this.excalidrawAPI;if(!i)return;const n=i.getSceneElements();let a=n.filter((e=>e.id===A));if(0!==a.length){if(e){const A=this.plugin.ea.getElementsInTheSameGroupWithElement(a[0],n);A.length>0&&(a=A)}this.preventAutozoom(),this.zoomToElements(!i.getAppState().viewModeEnabled,a)}}setEphemeralState(A){if(!A)return;const e=this;let t=null;A.match&&A.match.content&&A.match.matches&&1===A.match.matches.length&&2===A.match.matches[0].length&&(t=[A.match.content.substring(A.match.matches[0][0],A.match.matches[0][1])]);const i=getEmbeddedFilenameParts(A.subpath);i.hasBlockref&&setTimeout((()=>e.zoomToElementId(i.blockref,i.hasGroupref)),300),i.hasSectionref?t=[`# ${i.sectionref}`]:A.line&&A.line>0&&(t=[this.data.split("\n")[A.line-1]]),t&&setTimeout((async()=>{let A=0;for(;!e.excalidrawAPI&&A++<100;)await sleep(50);const n=e.excalidrawAPI;if(!n)return;const a=n.getSceneElements();e.selectElementsMatchingQuery(a,t,!n.getAppState().viewModeEnabled,i.hasSectionref,i.hasGroupref)}),300),super.setEphemeralState(A)}clear(){const A=this.excalidrawAPI;this.excalidrawRef&&A&&(this.activeLoader&&(this.activeLoader.terminate=!0,this.activeLoader=null),this.nextLoader=null,A.resetScene(),A.history.clear(),this.previousSceneVersion=0)}async setViewData(A,e=!1){this.plugin.settings.showNewVersionNotification&&checkExcalidrawVersion(app),this.isLoaded=!1,e&&this.clear(),this.lastSaveTimestamp=this.file.stat.mtime,A=this.data=A.replaceAll("\r\n","\n").replaceAll("\r","\n"),app.workspace.onLayoutReady((async()=>{if(this.compatibilityMode="excalidraw"===this.file.extension,await this.plugin.loadSettings(),this.compatibilityMode)this.textIsRaw_Element.hide(),this.textIsParsed_Element.hide(),this.linkAction_Element.hide(),this.textMode=TextMode.raw,await this.excalidrawData.loadLegacyData(A,this.file),this.plugin.settings.compatibilityMode||new obsidian.Notice(t$d("COMPATIBILITY_MODE"),4e3),this.excalidrawData.disableCompression=!0;else{this.linkAction_Element.show(),this.excalidrawData.disableCompression=!1;const e=getTextMode(A);this.changeTextMode(e,!1);try{if(!await this.excalidrawData.loadData(A,this.file,this.textMode))return}catch(A){return errorlog({where:"ExcalidrawView.setViewData",error:A}),new obsidian.Notice(`Error loading drawing:\n${A.message}${"Cannot read property 'index' of undefined"===A.message?"\n'# Drawing' section is likely missing":""}\n\nTry manually fixing the file or restoring an earlier version from sync history.`,1e4),void this.setMarkdownView()}}await this.loadDrawing(!0);const e=this.excalidrawData.getOnLoadScript();if(e){const A=this,t=this.file.basename+"-onlaod-script",i=()=>{A.excalidrawAPI?A.plugin.scriptEngine.executeScript(A,e,t):setTimeout(i,200)};i()}this.isLoaded=!0}))}async loadSceneFiles(){if(!this.excalidrawAPI)return;const A=new EmbeddedFilesLoader(this.plugin),e=A=>{this.nextLoader=null,this.activeLoader=A,A.loadSceneFiles(this.excalidrawData,((A,t)=>{A&&(addFiles(A,this,t),this.activeLoader=null,this.nextLoader?e(this.nextLoader):this.excalidrawData.getFiles().some((A=>{if(A&&!A.file&&A.attemptCounter<30){const A=this,e=this.file.path;return setTimeout((async()=>{A&&A.excalidrawAPI&&e===A.file.path&&A.loadSceneFiles()}),2e3),!0}return!1})))}),0)};this.activeLoader?this.nextLoader=A:e(A)}async synchronizeWithData(A){let e=0;for(;this.semaphores.saving&&e++<30;)await sleep(100);if(e>=30)return void errorlog({where:"ExcalidrawView.synchronizeWithData",message:`Aborting sync with received file (${this.file.path}) because semaphores.saving remained true for ower 3 seconds`,fn:this.synchronizeWithData});this.semaphores.saving=!0;let t=!1;try{const e=A.deletedElements.map((A=>A.id)),i=this.excalidrawAPI.getSceneElements().filter((A=>!e.contains(A.id))),n=i.map((A=>A.id)),a=e=>{switch(e.type){case"text":this.excalidrawData.textElements.set(e.id,A.textElements.get(e.id));break;case"image":A.getFile(e.fileId)?(this.excalidrawData.setFile(e.fileId,A.getFile(e.fileId)),t=!0):A.getEquation(e.fileId)&&(this.excalidrawData.setEquation(e.fileId,A.getEquation(e.fileId)),t=!0)}A.elementLinks.has(e.id)&&this.excalidrawData.elementLinks.set(e.id,A.elementLinks.get(e.id))};A.scene.elements.forEach(((e,r,s)=>{const o=i.filter((A=>A.id===e.id))[0];if(o&&(o.versionA.view.file===this.file)).length>0}setDirty(A){var e;this.semaphores.dirty=null===(e=this.file)||void 0===e?void 0:e.path,this.diskIcon.querySelector("svg").addClass("excalidraw-dirty"),app.isMobile||obsidian.requireApiVersion("0.16.0")&&(this.leaf.tabHeaderInnerTitleEl.style.color="var(--color-accent)")}clearDirty(){const A=this.excalidrawAPI;if(!A)return;this.semaphores.dirty=null;const e=A.getSceneElements();e&&(this.previousSceneVersion=this.getSceneVersion(e)),this.diskIcon.querySelector("svg").removeClass("excalidraw-dirty"),app.isMobile||obsidian.requireApiVersion("0.16.0")&&(this.leaf.tabHeaderInnerTitleEl.style.color="")}initializeToolsIconPanelAfterLoading(){var A;const e=this.excalidrawAPI;if(!e)return;const t=e.getAppState(),i=null===(A=this.toolsPanelRef)||void 0===A?void 0:A.current;i&&(i.setTheme(t.theme),i.setExcalidrawViewMode(t.viewModeEnabled),i.setPreviewMode(this.compatibilityMode?null:this.textMode===TextMode.parsed),i.updateScriptIconMap(this.plugin.scriptEngine.scriptIconMap))}canAcceptExtension(A){return"excalidraw"===A}getDisplayText(){return this.file?this.file.basename:t$d("NOFILE")}getViewType(){return"excalidraw"}getIcon(){return ICON_NAME}setMarkdownView(){this.plugin.excalidrawFileModes[this.id||this.file.path]="markdown",this.plugin.setMarkdownView(this.leaf)}async openAsMarkdown(){!0===this.plugin.settings.compress&&(this.excalidrawData.disableCompression=!0,await this.save(!0,!0)),this.setMarkdownView()}async convertExcalidrawToMD(){await this.save(),this.plugin.openDrawing(await this.plugin.convertSingleExcalidrawToMD(this.file),"active-pane",!0)}onPaneMenu(A,e){this.excalidrawAPI&&this.getViewSelectedElements().some((A=>"text"===A.type))&&A.addItem((A=>{A.setTitle(t$d("OPEN_LINK")).setIcon("external-link").setSection("pane").onClick((A=>{this.handleLinkClick(this,A)}))})),this.compatibilityMode?A.addItem((A=>{A.setTitle(t$d("CONVERT_FILE")).onClick((()=>this.convertExcalidrawToMD())).setSection("pane")})):A.addItem((A=>{A.setTitle(t$d("OPEN_AS_MD")).setIcon("document").onClick((()=>{this.openAsMarkdown()})).setSection("pane")})).addItem((A=>{A.setTitle(t$d("EXPORT_EXCALIDRAW")).setIcon(ICON_NAME).onClick((async()=>{this.exportExcalidraw()})).setSection("pane")})),A.addItem((A=>{A.setTitle(t$d("SAVE_AS_PNG")).setIcon("save-png").setSection("pane").onClick((async A=>{if(this.getScene&&this.file)if(A[CTRL_OR_CMD]){const A=await this.png(this.getScene());if(!A)return;const e=new FileReader;e.readAsDataURL(A);const t=this;e.onloadend=function(){download(null,e.result,`${t.file.basename}.png`)}}else this.savePNG()})).setSection("pane")})).addItem((A=>{A.setTitle(t$d("SAVE_AS_SVG")).setIcon("save-svg").setSection("pane").onClick((async A=>{if(this.getScene&&this.file){if(A[CTRL_OR_CMD]){let A=await this.svg(this.getScene());return A?(A=embedFontsInSVG(A,this.plugin),void download(null,svgToBase64(A.outerHTML),`${this.file.basename}.svg`)):null}this.saveSVG()}}))})).addItem((A=>{A.setTitle(t$d("INSTALL_SCRIPT_BUTTON")).setIcon("ScriptEngine").setSection("pane").onClick((()=>{new ScriptInstallPrompt(this.plugin).open()}))})),super.onPaneMenu(A,e)}async getLibrary(){var A;const e=this.plugin.getStencilLibrary();return(null==e?void 0:e.library)?e.library:null!==(A=null==e?void 0:e.libraryItems)&&void 0!==A?A:[]}async instantiateExcalidraw(A){for(;!this.semaphores.scriptsReady;)await sleep(50);const e=this.plugin.getPackage(this.ownerWindow).react,t=this.plugin.getPackage(this.ownerWindow).reactDOM;this.clearDirty();const i=e.createElement((()=>{let t={x:0,y:0};const i=e.useRef(null),n=e.useRef(null),[a,r]=e.useState({width:void 0,height:void 0});let s=null,o=null,l=null,c=Date.now(),d=!1;this.toolsPanelRef=n,this.obsidianMenu=new ObsidianMenu(this.plugin,n);const h=()=>{let A,e;const t=new Promise(((t,i)=>{A=t,e=i}));return t.resolve=A,t.reject=e,t},g=e.useMemo((()=>({current:{readyPromise:h()}})),[]);e.useEffect((()=>{g.current.readyPromise.then((A=>{var e;this.excalidrawAPI=A,A.setLocalFont(this.plugin.settings.experimentalEnableFourthFont),this.loadSceneFiles(),this.updateContainerSize(null,!0),null===(e=this.excalidrawWrapperRef.current.firstElementChild)||void 0===e||e.focus(),this.addFullscreenchangeEvent(),this.initializeToolsIconPanelAfterLoading()}))}),[g]),this.excalidrawRef=g,this.excalidrawWrapperRef=i,e.useEffect((()=>{r({width:this.contentEl.clientWidth,height:this.contentEl.clientHeight});const A=()=>{try{r({width:this.contentEl.clientWidth,height:this.contentEl.clientHeight}),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.updatePosition(),this.ownerDocument!==document&&this.refresh()}catch(A){errorlog({where:"Excalidraw React-Wrapper, onResize",error:A})}};return this.ownerWindow.addEventListener("resize",A),()=>{var e;return null===(e=this.ownerWindow)||void 0===e?void 0:e.removeEventListener("resize",A)}}),[i]),this.getSelectedTextElement=()=>{var A;const e=this.excalidrawAPI;if(!(null==g?void 0:g.current)||!e)return{id:null,text:null};if(e.getAppState().viewModeEnabled){if(s){const A=s;return s=null,A}return{id:null,text:null}}const t=e.getSceneElements().filter((A=>A.id===Object.keys(e.getAppState().selectedElementIds)[0]));if(0===t.length)return{id:null,text:null};if("text"===t[0].type)return{id:t[0].id,text:t[0].text};if("image"===t[0].type)return{id:null,text:null};const i=null===(A=t[0].boundElements)||void 0===A?void 0:A.filter((A=>"text"===A.type));if((null==i?void 0:i.length)>0){const A=e.getSceneElements().filter((A=>A.id===i[0].id));if(A.length>0)return{id:A[0].id,text:A[0].text}}if(0===t[0].groupIds.length)return{id:null,text:null};const n=t[0].groupIds[0],a=e.getSceneElements().filter((A=>{var e;return null===(e=A.groupIds)||void 0===e?void 0:e.includes(n)})).filter((A=>"text"===A.type));return 0===a.length?{id:null,text:null}:{id:t[0].id,text:t[0].text}},this.getSelectedImageElement=()=>{const A=this.excalidrawAPI;if(!A)return{id:null,fileId:null};if(A.getAppState().viewModeEnabled){if(o){const A=o;return o=null,A}return{id:null,fileId:null}}const e=A.getSceneElements().filter((e=>e.id==Object.keys(A.getAppState().selectedElementIds)[0]));if(0===e.length)return{id:null,fileId:null};if("image"==e[0].type)return{id:e[0].id,fileId:e[0].fileId};if("text"===e[0].type)return{id:null,fileId:null};if(0===e[0].groupIds.length)return{id:null,fileId:null};const t=e[0].groupIds[0],i=A.getSceneElements().filter((A=>{var e;return null===(e=A.groupIds)||void 0===e?void 0:e.includes(t)})).filter((A=>"image"==A.type));return 0===i.length?{id:null,fileId:null}:{id:i[0].id,fileId:i[0].fileId}},this.getSelectedElementWithLink=()=>{const A=this.excalidrawAPI;if(!A)return{id:null,text:null};if(A.getAppState().viewModeEnabled){if(l){const A=l;return l=null,A}return{id:null,text:null}}const e=A.getSceneElements().filter((e=>e.id==Object.keys(A.getAppState().selectedElementIds)[0]));if(0===e.length)return{id:null,text:null};if(e[0].link)return{id:e[0].id,text:e[0].link};if(0===e[0].groupIds.length)return{id:null,text:null};const t=e[0].groupIds[0],i=A.getSceneElements().filter((A=>{var e;return null===(e=A.groupIds)||void 0===e?void 0:e.includes(t)})).filter((A=>A.link));return 0===i.length?{id:null,text:null}:{id:i[0].id,text:i[0].link}},this.addText=async(A,e,i=!0)=>{var n,a,r,s,o;const l=this.excalidrawAPI;if(!(null==g?void 0:g.current)||!l)return;const c=l.getAppState(),d=this.plugin.ea;d.reset(),d.style.strokeColor=null!==(n=c.currentItemStrokeColor)&&void 0!==n?n:"black",d.style.opacity=null!==(a=c.currentItemOpacity)&&void 0!==a?a:1,d.style.fontFamily=null!==(r=null!=e?e:c.currentItemFontFamily)&&void 0!==r?r:1,d.style.fontSize=null!==(s=c.currentItemFontSize)&&void 0!==s?s:20,d.style.textAlign=null!==(o=c.currentItemTextAlign)&&void 0!==o?o:"left";const h=d.addText(t.x,t.y,A);return await this.addElements(d.getElements(),!1,i),h},this.addElements=async(A,e=!1,i=!1,n,a=!1)=>{const r=this.excalidrawAPI;if(!(null==g?void 0:g.current)||!r)return!1;const s=A.filter((A=>"text"==A.type));for(let A=0;AA.id)),l=r.getSceneElements(),c=[];for(let e=0;eA.id===t))[0],c.push(t))}const d=a?l.concat(A.filter((A=>!c.includes(A.id)))):A.filter((A=>!c.includes(A.id))).concat(l);if(await this.updateScene({elements:d,commitToHistory:!0},!1,!0),n&&Object.keys(n).length>0){const A=[];Object.keys(n).forEach((e=>{if(A.push({mimeType:n[e].mimeType,id:n[e].id,dataURL:n[e].dataURL,created:n[e].created}),n[e].file){const A=new EmbeddedFile(this.plugin,this.file.path,n[e].file),t=r.getAppState();A.setImage(n[e].dataURL,n[e].mimeType,n[e].size,"dark"===t.theme,n[e].hasSVGwithBitmap),this.excalidrawData.setFile(n[e].id,A)}n[e].latex&&this.excalidrawData.setEquation(n[e].id,{latex:n[e].latex,isLoaded:!0})})),r.addFiles(A)}return i?await this.save(!1):this.setDirty(5),!0},this.getScene=()=>{const A=this.excalidrawAPI;if(!(null==g?void 0:g.current)||!A)return null;const e=A.getSceneElements(),t=A.getAppState(),i=A.getFiles();if(i){const A=e.filter((A=>"image"===A.type)).map((A=>A.fileId)),t=Object.keys(i).filter((e=>!A.contains(e)));t.forEach((A=>delete i[A]))}return{type:"excalidraw",version:2,source:"https://excalidraw.com",elements:e,appState:{theme:t.theme,viewBackgroundColor:t.viewBackgroundColor,currentItemStrokeColor:t.currentItemStrokeColor,currentItemBackgroundColor:t.currentItemBackgroundColor,currentItemFillStyle:t.currentItemFillStyle,currentItemStrokeWidth:t.currentItemStrokeWidth,currentItemStrokeStyle:t.currentItemStrokeStyle,currentItemRoughness:t.currentItemRoughness,currentItemOpacity:t.currentItemOpacity,currentItemFontFamily:t.currentItemFontFamily,currentItemFontSize:t.currentItemFontSize,currentItemTextAlign:t.currentItemTextAlign,currentItemStrokeSharpness:t.currentItemStrokeSharpness,currentItemStartArrowhead:t.currentItemStartArrowhead,currentItemEndArrowhead:t.currentItemEndArrowhead,currentItemLinearStrokeSharpness:t.currentItemLinearStrokeSharpness,gridSize:t.gridSize,colorPalette:t.colorPalette},prevTextMode:this.prevTextMode,files:i}},this.refresh=()=>{if(0===this.contentEl.clientWidth||0===this.contentEl.clientHeight)return;const A=this.excalidrawAPI;(null==g?void 0:g.current)&&A&&A.refresh()};let u={x:0,y:0},p=null;this.clearHoverPreview=()=>{if(p){const A=new MouseEvent("click",{view:this.ownerWindow,bubbles:!0,cancelable:!0});p.dispatchEvent(A),p=null}};const w=A=>{var e,t,i,n,a;const r=null===(e=app.dragManager.draggable)||void 0===e?void 0:e.files;return r&&r[0]==this.file&&(r.shift(),app.dragManager.draggable.title=`${r.length} files`),["file","files"].includes(null===(t=app.dragManager.draggable)||void 0===t?void 0:t.type)?"link":(null===(i=A.types)||void 0===i?void 0:i.includes("text/html"))||(null===(n=A.types)||void 0===n?void 0:n.includes("text/plain"))||(null===(a=A.types)||void 0===a?void 0:a.includes("Files"))?"copy":void 0};let m=!1;const f=()=>{if(s=getTextElementAtPointer(t,this),s&&s.id){const A=new MouseEvent("click",{ctrlKey:!0,metaKey:this.metaKeyDown,shiftKey:this.shiftKeyDown,altKey:this.altKeyDown});return this.handleLinkClick(this,A),void(s=null)}if(o=getImageElementAtPointer(t,this),o&&o.id){const A=new MouseEvent("click",{ctrlKey:!0,metaKey:this.metaKeyDown,shiftKey:this.shiftKeyDown,altKey:this.altKeyDown});return this.handleLinkClick(this,A),void(o=null)}if(l=getElementWithLinkAtPointer(t,this),l&&l.id){const A=new MouseEvent("click",{ctrlKey:!0,metaKey:this.metaKeyDown,shiftKey:this.shiftKeyDown,altKey:this.altKeyDown});return this.handleLinkClick(this,A),void(l=null)}};let B=null;const E=(A,e)=>{var i,n;if(!B)return;if(null===(n=null===(i=this.excalidrawAPI)||void 0===i?void 0:i.getAppState())||void 0===n?void 0:n.editingElement)return;if(this.semaphores.wheelTimeout)return;if(!A){if(!t)return;A="";const i=getTextElementAtPointer(t,this);if(i&&i.text){e=this.excalidrawAPI.getSceneElements().filter((A=>A.id===i.id))[0];const t=this.textMode===TextMode.parsed?this.excalidrawData.getRawText(i.id):i.text;if(!t)return;if(t.match(REG_LINKINDEX_HYPERLINK))return;const n=REGEX_LINK.getRes(t).next();if(!n.value)return;if((A=REGEX_LINK.getLink(n)).match(REG_LINKINDEX_HYPERLINK))return}else{const i=getImageElementAtPointer(t,this);if(e=this.excalidrawAPI.getSceneElements().filter((A=>A.id===i.id))[0],!i||!i.fileId)return;if(!this.excalidrawData.hasFile(i.fileId))return;const n=this.excalidrawData.getFile(i.fileId),a=n.linkParts.ref?`#${n.linkParts.isBlockRef?"^":""}${n.linkParts.ref}`:"";A=this.excalidrawData.getFile(i.fileId).file.path+a}}if(this.getHookServer().onLinkHoverHook)try{if(!this.getHookServer().onLinkHoverHook(e,A,this,this.getHookServer()))return}catch(A){errorlog({where:"ExcalidrawView.showHoverPreview",fn:this.getHookServer().onLinkHoverHook,error:A})}if(this.semaphores.hoverSleep)return;const a=app.metadataCache.getFirstLinkpathDest(A.split("#")[0],this.file.path);if(!a)return;if(this.ownerDocument.querySelector(`div.popover-title[data-path="${a.path}"]`))return;this.semaphores.hoverSleep=!0;const r=this;if(setTimeout((()=>r.semaphores.hoverSleep=!1),500),this.plugin.hover.linkText=A,this.plugin.hover.sourcePath=this.file.path,p=this.contentEl,app.workspace.trigger("hover-link",{event:B,source:"excalidraw",hoverParent:p,targetEl:p,linktext:this.plugin.hover.linkText,sourcePath:this.plugin.hover.sourcePath}),u=t,this.isFullscreen()){const A=this;setTimeout((()=>{var e,t,i,n;const r=null!==(n=null===(i=null===(t=null===(e=this.ownerDocument.querySelector(`div.popover-title[data-path="${a.path}"]`))||void 0===e?void 0:e.parentElement)||void 0===t?void 0:t.parentElement)||void 0===i?void 0:i.parentElement)&&void 0!==n?n:this.ownerDocument.body.querySelector("div.popover");r&&A.contentEl.append(r)}),400)}},{Excalidraw:C}=this.plugin.getPackage(this.ownerWindow).excalidrawLib,b=e.createElement("div",{className:"excalidraw-wrapper",ref:i,key:"abc",tabIndex:0,onKeyDown:A=>{A.target!==b.ref.current&&(this.isFullscreen()&&A.keyCode===KEYCODE.ESC&&this.exitFullscreen(),!A[CTRL_OR_CMD]||A.shiftKey||A.altKey||E())},onPointerDown:A=>{(A[CTRL_OR_CMD]||A.metaKey)&&(this.plugin.settings.allowCtrlClick||A.metaKey)&&setTimeout((()=>{(this.getSelectedTextElement().id||this.getSelectedImageElement().id||this.getSelectedElementWithLink().id)&&this.handleLinkClick(this,A)}))},onMouseMove:A=>{B=A.nativeEvent},onMouseOver:()=>{this.clearHoverPreview()},onDragOver:A=>{const e=w(A.dataTransfer);if(e)return A.dataTransfer.dropEffect=e,A.preventDefault(),!1},onDragLeave:()=>{}},e.createElement(C,{ref:g,width:a.width,height:a.height,UIOptions:{canvasActions:{loadScene:!1,saveScene:!1,saveAsScene:!1,export:{saveFileToDisk:!1},saveAsImage:!1,saveToActiveFile:!1}},initState:null==A?void 0:A.appState,initialData:A,detectScroll:!0,onPointerUpdate:A=>{if(t=A.pointer,p&&(Math.abs(u.x-A.pointer.x)>50||Math.abs(u.y-A.pointer.y)>50)&&this.clearHoverPreview(),m){if(!d&&"down"===A.button){if(d=!0,this.ctrlKeyDown||this.metaKeyDown)return void f();const A=Date.now();return A-c<600&&A-c>40&&f(),void(c=A)}"up"===A.button&&(d=!1),(this.ctrlKeyDown||this.excalidrawAPI.getAppState().isViewModeEnabled&&this.plugin.settings.hoverPreviewWithoutCTRL)&&E()}},libraryReturnUrl:"app://obsidian.md",autoFocus:!0,onChange:(A,e)=>{const t=()=>{this.plugin.ea.onCanvasColorChangeHook&&this.plugin.ea.onCanvasColorChangeHook(this.plugin.ea,this,e.viewBackgroundColor)};if(m=e.viewModeEnabled,this.semaphores.justLoaded)return this.semaphores.justLoaded=!1,this.semaphores.preventAutozoom||this.zoomToFit(!1),this.previousSceneVersion=this.getSceneVersion(A),this.previousBackgroundColor=e.viewBackgroundColor,void t();if(!this.semaphores.dirty&&null===e.editingElement&&null===e.editingLinearElement){const i=this.getSceneVersion(A);((i>0||0===i&&A.length>0)&&i!==this.previousSceneVersion||e.viewBackgroundColor!==this.previousBackgroundColor)&&(this.previousSceneVersion=i,this.previousBackgroundColor=e.viewBackgroundColor,this.setDirty(6),t())}},onLibraryChange:A=>{(async()=>{const e={type:"excalidrawlib",version:2,source:"https://excalidraw.com",libraryItems:A};this.plugin.setStencilLibrary(e),await this.plugin.saveSettings()})()},renderTopRightUI:this.obsidianMenu.renderButton,onPaste:A=>{if(A.elements){const A=this;setTimeout((()=>A.save(!1)),300)}return!0},onThemeChange:async A=>{var e;this.excalidrawData.scene.appState.theme=A,this.loadSceneFiles(),null===(e=null==n?void 0:n.current)||void 0===e||e.setTheme(A)},ownerDocument:this.ownerDocument,ownerWindow:this.ownerWindow,onDrop:A=>{const e=this.excalidrawAPI;if(!e)return!1;const i=e.getAppState();t=viewportCoordsToSceneCoords({clientX:A.clientX,clientY:A.clientY},i);const n=app.dragManager.draggable,a=(e,i,a)=>{if(!this.getHookServer().onDropHook)return!1;try{return this.getHookServer().onDropHook({ea:this.getHookServer(),event:A,draggable:n,type:e,payload:{files:i,text:a},excalidrawFile:this.file,view:this,pointerPosition:t})}catch(A){return new obsidian.Notice("on drop hook error. See console log for details"),errorlog({where:"ExcalidrawView.onDrop",error:A}),!1}};switch(A[CTRL_OR_CMD]=A.shiftKey||A[CTRL_OR_CMD],null==n?void 0:n.type){case"file":if(!a("file",[n.file],null)){if(n.file.path.match(REG_LINKINDEX_INVALIDCHARS))return new obsidian.Notice(t$d("FILENAME_INVALID_CHARS"),4e3),!1;if(A[CTRL_OR_CMD]&&(IMAGE_TYPES.contains(n.file.extension)||"md"===n.file.extension)){const i=this.plugin.ea;return i.reset(),i.setView(this),(async()=>{i.canvas.theme=e.getAppState().theme,await i.addImage(t.x,t.y,n.file,!A.altKey),i.addElementsToView(!1,!1,!0)})(),!1}this.addText(`[[${app.metadataCache.fileToLinktext(n.file,this.file.path,!0)}]]`)}return!1;case"files":return a("file",n.files,null)||(async()=>{if(A[CTRL_OR_CMD]){const i=this.plugin.ea;i.reset(),i.setView(this),i.canvas.theme=e.getAppState().theme;let a=0;for(const e of n.files)(IMAGE_TYPES.contains(e.extension)||"md"===e.extension)&&(await i.addImage(t.x+50*a,t.y+50*a,e,!A.altKey),a++,await i.addElementsToView(!1,!1,!0))}else{for(const A of n.files)await this.addText(`[[${app.metadataCache.fileToLinktext(A,this.file.path,!0)}]]`,void 0,!1),t.y+=2*i.currentItemFontSize;this.save(!1)}})(),!1}if(A.dataTransfer.types.includes("Files")){if(A.dataTransfer.types.includes("text/plain")){const e=A.dataTransfer.getData("text");if(e&&a("text",null,e))return!1}return!0}if(A.dataTransfer.types.includes("text/plain")){const e=A.dataTransfer.getData("text");if(!e)return!0;if(!a("text",null,e)){if(this.plugin.settings.iframelyAllowed&&e.match(/^https?:\/\/\S*$/))return(async()=>{var A;const t=await this.addText(e),i=`http://iframely.server.crestify.com/iframely?url=${e}`,n=JSON.parse(await obsidian.request({url:i}));if(!n||n.error||!(null===(A=n.meta)||void 0===A?void 0:A.title))return!1;const a=this.plugin.ea;a.reset(),a.setView(this);const r=a.getViewElements().filter((A=>A.id===t));1===r.length&&(r[0].text=r[0].originalText=r[0].rawText=`[${n.meta.title}](${e})`,a.copyViewElementsToEAforEditing(r),a.addElementsToView(!1,!1,!1))})(),!1;if(e.startsWith("obsidian://open?vault=")){const t=A.dataTransfer.getData("text/html");if(t){const A=t.match(/href="app:\/\/obsidian\.md\/(.*?)"/);if(2===A.length){const e=decodeURIComponent(A[1]).split("#"),t=app.vault.getAbstractFileByPath(e[0]);if(t&&t instanceof obsidian.TFile){const A=app.metadataCache.fileToLinktext(t,this.file.path);return void this.addText(`[[${A+(e.length>1?"#"+e[1]+"|"+A:"")}]]`)}return this.addText(`[[${decodeURIComponent(A[1])}]]`),!1}}const i=e.split("file=");if(2===i.length)return this.addText(`[[${decodeURIComponent(i[1])}]]`),!1}this.addText(e.replace(/(!\[\[.*#[^\]]*\]\])/g,"$1{40}"))}return!1}return!a("unknown",null,null)},onBeforeTextEdit:A=>{var e;if(clearTimeout(this.isEditingTextResetTimer),this.isEditingTextResetTimer=null,this.semaphores.isEditingText=!0,this.compatibilityMode)return null!==(e=A.originalText)&&void 0!==e?e:A.text;return this.excalidrawData.getRawText(A.id)||A.rawText},onBeforeTextSubmit:(A,e,t,i)=>{const n=this.excalidrawAPI;if(!n)return[null,null,null];const a="PASTING EXCALIDRAW ELEMENTS AS A TEXT ELEMENT IS NOT ALLOWED";if(e.startsWith('{"type":"excalidraw/clipboard","elements":[{"'))return setTimeout((async()=>{const e=this.excalidrawAPI.getSceneElements(),t=e.filter((e=>e.id===A.id));if(1===t.length){const A=cloneElement(t[0]);A.rawText=a,e[e.indexOf(t[0])]=A,this.excalidrawData.setTextElement(A.id,a,a,(()=>{})),await this.updateScene({elements:e}),n.history.clear()}})),[a,a,null];if(this.semaphores.isEditingText=!0,this.isEditingTextResetTimer=setTimeout((()=>{this.semaphores.isEditingText=!1,this.isEditingTextResetTimer=null}),1500),i)return this.excalidrawData.deleteTextElement(A.id),this.setDirty(7),[null,null,null];const r=A.containerId;if(e!==A.text||t!==A.originalText||!this.excalidrawData.getRawText(A.id)){this.setDirty(8);const[i,a,s]=this.excalidrawData.setTextElement(A.id,e,t,(async(e,t)=>{if(this.textMode===TextMode.raw)return;const i=this.excalidrawAPI.getSceneElements(),a=i.filter((e=>e.id===A.id));if(1===a.length){const A=cloneElement(a[0]);this.excalidrawData.updateTextElement(A,e,t,!0),i[i.indexOf(a[0])]=A,await this.updateScene({elements:i}),A.containerId&&this.updateContainerSize(A.containerId)}n.history.clear()}));return i?(r&&this.updateContainerSize(r,!0),this.textMode===TextMode.raw?[e,t,s]:e===i?s?[i,a,s]:[null,null,null]:(n.history.clear(),[i,a,s])):[null,null,null]}return r&&this.updateContainerSize(r,!0),this.textMode===TextMode.parsed?this.excalidrawData.getParsedText(A.id):[null,null,null]},onLinkOpen:async(A,e)=>{var t;if(e.preventDefault(),!A)return;const i=A.link;if(!i||""===i)return;const n=this.ownerDocument.body.querySelector("body>div.excalidraw-tooltip,div.excalidraw-tooltip--visible");n&&this.ownerDocument.body.removeChild(n);const a=null===(t=null==e?void 0:e.detail)||void 0===t?void 0:t.nativeEvent;if(this.getHookServer().onLinkClickHook)try{if(!this.getHookServer().onLinkClickHook(A,A.link,a,this,this.getHookServer()))return}catch(e){errorlog({where:"ExcalidrawView.onLinkOpen",fn:this.getHookServer().onLinkClickHook,error:e})}i.startsWith("md://")||i.startsWith("[[")?(async()=>{const A=i.match(/(md:\/\/)?\[\[(?.*?)\]\]/);if(!A)return;let e=A.groups.link,t=null;if(e.search("#")>-1){const A=getLinkParts(e,this.file);t=`#${A.isBlockRef?"^":""}${A.ref}`,e=A.path}if(e.match(REG_LINKINDEX_INVALIDCHARS))return void new obsidian.Notice(t$d("FILENAME_INVALID_CHARS"),4e3);const n=app.metadataCache.getFirstLinkpathDest(e,this.file.path),r=a.shiftKey||a[CTRL_OR_CMD]||this.linksAlwaysOpenInANewPane||a.metaKey;if(r&&this.isFullscreen()&&this.exitFullscreen(),n)if(n===this.file){if(t)return void this.setEphemeralState({subpath:t});this.zoomToFit(!1)}else try{const A=r?a.metaKey&&!app.isMobile?app.workspace.openPopoutLeaf():getNewOrAdjacentLeaf(this.plugin,this.leaf):this.leaf;await A.openFile(n,t?{active:!1,eState:{subpath:t}}:{active:!1})}catch(A){new obsidian.Notice(A,4e3)}else new NewFileActions(this.plugin,e,r,!app.isMobile&&a.metaKey,this).open()})():window.open(i)},onLinkHover:(A,e)=>{if(A&&(this.plugin.settings.hoverPreviewWithoutCTRL||e[CTRL_OR_CMD])){B=e,B.ctrlKey=!0;const t=A.link;if(!t||""===t)return;if(t.startsWith("md://")||t.startsWith("[[")){const e=t.match(/(md:\/\/)?\[\[(?.*?)\]\]/);if(!e)return;let i=e.groups.link;E(i,A)}}},onViewModeChange:A=>{var e,t;if(null===(t=null===(e=this.toolsPanelRef)||void 0===e?void 0:e.current)||void 0===t||t.setExcalidrawViewMode(A),this.getHookServer().onViewModeChangeHook)try{this.getHookServer().onViewModeChangeHook(A,this,this.getHookServer())}catch(A){errorlog({where:"ExcalidrawView.onViewModeChange",fn:this.getHookServer().onViewModeChangeHook,error:A})}}}),e.createElement(ToolsPanel,{ref:n,visible:!1,view:this,centerPointer:()=>{const A=this.excalidrawAPI;if(!g||!g.current||!A)return;const e=A.getAppState(),{width:i,height:n}=e;t=viewportCoordsToSceneCoords({clientX:i/2,clientY:n/2},e)}})),v=e.useRef(new ResizeObserver((A=>{if(!n||!n.current)return;const{width:e,height:t}=A[0].contentRect,i=n.current.onRightEdge?n.current.previousWidth-e:0,a=n.current.onBottomEdge?n.current.previousHeight-t:0;n.current.updatePosition(a,i)})));return e.useEffect((()=>((null==n?void 0:n.current)&&v.current.observe(n.current.containerRef.current),()=>{v.current.unobserve(n.current.containerRef.current)})),[n,v]),e.createElement(e.Fragment,null,b)}));t.render(i,this.contentEl,(()=>{}))}updateContainerSize(A,e=!1){const t=this.excalidrawAPI;if(!t)return;const i=()=>{const e=A?t.getSceneElements().filter((e=>e.id===A)):t.getSceneElements().filter((A=>{var e;return null===(e=A.boundElements)||void 0===e?void 0:e.map((A=>A.type)).includes("text")}));e.length>0&&(this.initialContainerSizeUpdate&&(this.semaphores.justLoaded=!0),t.updateContainerSize(e)),this.initialContainerSizeUpdate=!1};e?setTimeout((()=>i()),50):i()}zoomToFit(A=!0){const e=this.excalidrawAPI;if(!e||!this.excalidrawRef||this.semaphores.isEditingText)return;const t=this.plugin.settings.zoomToFitMaxLevel,i=e.getSceneElements().filter((A=>A.width<1e4&&A.height<1e4));A?setTimeout((()=>e.zoomToFit(i,t,this.isFullscreen()?0:.05)),100):e.zoomToFit(i,t,this.isFullscreen()?0:.05)}async toggleTrayMode(){const A=this.excalidrawAPI;if(!A)return!1;const e=A.getAppState();A.updateScene({appState:{trayModeEnabled:!e.trayModeEnabled}}),await this.plugin.loadSettings(),this.plugin.settings.defaultTrayMode=!e.trayModeEnabled,this.plugin.saveSettings()}selectElementsMatchingQuery(A,e,t=!0,i=!1,n=!1){let a=getTextElementsMatchingQuery(A.filter((A=>"text"===A.type)),e,i);if(0!==a.length){if(n){const e=this.plugin.ea.getElementsInTheSameGroupWithElement(a[0],A);e.length>0&&(a=e)}this.zoomToElements(t,a)}else new obsidian.Notice("I could not find a matching text element")}zoomToElements(A,e){const t=this.excalidrawAPI;if(!t)return;const i=this.plugin.settings.zoomToFitMaxLevel;this.ownerWindow,A&&t.selectElements(e),t.zoomToFit(e,i,.05)}getViewSelectedElements(){var A;const e=this.excalidrawAPI;if(!e)return[];const t=null===(A=e.getAppState())||void 0===A?void 0:A.selectedElementIds;if(!t)return[];const i=Object.keys(t);if(!i)return[];const n=e.getSceneElements().filter((A=>i.includes(A.id))),a=n.filter((A=>A.boundElements&&A.boundElements.filter((A=>"text"===A.type)).length>0)).map((A=>A.boundElements.filter((A=>"text"===A.type)).map((A=>A.id))[0])),r=n.map((A=>A.id)).concat(a);return e.getSceneElements().filter((A=>r.contains(A.id)))}async copyLinkToSelectedElementToClipboard(A){const e=this.getViewSelectedElements();if(e.length<1)return void new obsidian.Notice(t$d("INSERT_LINK_TO_ELEMENT_ERROR"));let t;if(2===e.length){const A=e.filter((A=>"text"===A.type));1===A.length&&A[0].containerId&&1===e.filter((A=>A.boundElements.some((A=>"text"===A.type)))).length&&(t=A[0].id)}t||(t=1===e.length?e[0].id:this.plugin.ea.getLargestElement(e).id);const i=await ScriptEngine.inputPrompt(app,"Set link alias","Leave empty if you do not want to set an alias","");navigator.clipboard.writeText(`[[${this.file.path}#^${A}${t}${i?`|${i}`:""}]]`),new obsidian.Notice(t$d("INSERT_LINK_TO_ELEMENT_READY"))}async updateScene(A,e=!1,t=!1){const i=this.excalidrawAPI;if(!i)return;const n=A.elements&&e;n&&(A.elements=i.restore(A).elements);try{i.updateScene(A)}catch(e){if(errorlog({where:"ExcalidrawView.updateScene 1st attempt",fn:this.updateScene,error:e,scene:A,willDoSecondAttempt:!n}),n)warningUnknowSeriousError();else try{A.elements=i.restore(A).elements,i.updateScene(A)}catch(e){errorlog({where:"ExcalidrawView.updateScene 2nd attempt",fn:this.updateScene,error:e,scene:A}),warningUnknowSeriousError()}}}}function getTextMode(A){return A.search("excalidraw-plugin: parsed\n")>-1||A.search("excalidraw-plugin: locked\n")>-1?TextMode.parsed:TextMode.raw}const DEFAULT_SETTINGS={folder:"Excalidraw",embedUseExcalidrawFolder:!1,templateFilePath:"Excalidraw/Template.excalidraw",scriptFolderPath:"Excalidraw/Scripts",compress:!1,autosave:!0,autosaveInterval:15e3,drawingFilenamePrefix:"Drawing ",drawingEmbedPrefixWithFilename:!0,drawingFilnameEmbedPostfix:" ",drawingFilenameDateTime:"YYYY-MM-DD HH.mm.ss",useExcalidrawExtension:!0,displaySVGInPreview:!0,displayExportedImageIfAvailable:!1,previewMatchObsidianTheme:!1,width:"400",isLeftHanded:!1,matchTheme:!1,matchThemeAlways:!1,matchThemeTrigger:!1,defaultMode:"normal",defaultPenMode:"never",zoomToFitOnResize:!0,zoomToFitMaxLevel:2,linkPrefix:"📍",urlPrefix:"🌐",parseTODO:!1,todo:"☐",done:"🗹",hoverPreviewWithoutCTRL:!1,linkOpacity:1,openInAdjacentPane:!1,openInMainWorkspace:!0,showLinkBrackets:!0,allowCtrlClick:!0,forceWrap:!1,pageTransclusionCharLimit:200,wordWrappingDefault:0,removeTransclusionQuoteSigns:!0,iframelyAllowed:!0,pngExportScale:1,exportWithTheme:!0,exportWithBackground:!0,exportPaddingSVG:10,keepInSync:!1,autoexportSVG:!1,autoexportPNG:!1,autoExportLightAndDark:!1,autoexportExcalidraw:!1,embedType:"excalidraw",embedWikiLink:!0,syncExcalidraw:!1,experimentalFileType:!1,experimentalFileTag:"✏️",experimentalLivePreview:!0,experimentalEnableFourthFont:!1,experimantalFourthFont:"Virgil",fieldSuggester:!0,compatibilityMode:!1,drawingOpenCount:0,library:"deprecated",library2:{type:"excalidrawlib",version:2,source:"https://excalidraw.com",libraryItems:[]},imageElementNotice:!0,mdSVGwidth:500,mdSVGmaxHeight:800,mdFont:"Virgil",mdFontColor:"Black",mdBorderColor:"Black",mdCSS:"",scriptEngineSettings:{},defaultTrayMode:!1,previousRelease:"1.6.13",showReleaseNotes:!0,showNewVersionNotification:!0,mathjaxSourceURL:"https://cdn.jsdelivr.net/npm/mathjax@3.2.1/es5/tex-svg.js"};class ExcalidrawSettingTab extends obsidian.PluginSettingTab{constructor(A,e){super(A,e),this.requestEmbedUpdate=!1,this.requestReloadDrawings=!1,this.reloadMathJax=!1,this.plugin=e}applySettingsUpdate(A=!1){A&&(this.requestReloadDrawings=!0)}async hide(){if(this.plugin.settings.scriptFolderPath=obsidian.normalizePath(this.plugin.settings.scriptFolderPath),"/"!==this.plugin.settings.scriptFolderPath&&""!==this.plugin.settings.scriptFolderPath||(this.plugin.settings.scriptFolderPath="Excalidraw/Scripts"),this.plugin.saveSettings(),this.requestReloadDrawings){const A=app.workspace.getLeavesOfType("excalidraw");for(const e of A)e.view instanceof ExcalidrawView&&(await e.view.save(!1),await e.view.reload(!0));this.requestEmbedUpdate=!0}this.requestEmbedUpdate&&this.plugin.triggerEmbedUpdates(),this.plugin.scriptEngine.updateScriptPath(),this.reloadMathJax&&this.plugin.loadMathJax()}async display(){var A;await this.plugin.loadSettings(),this.requestEmbedUpdate=!1,this.requestReloadDrawings=!1;const{containerEl:e}=this;this.containerEl.empty();const t=e.createDiv("coffee");t.addClass("ex-coffee-div"),t.createEl("a",{href:"https://ko-fi.com/zsolt"}).createEl("img",{attr:{src:"https://cdn.ko-fi.com/cdn/kofi3.png?v=3"}}).height=45,new obsidian.Setting(e).setName(t$d("RELEASE_NOTES_NAME")).setDesc(fragWithHTML(t$d("RELEASE_NOTES_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.showReleaseNotes).onChange((async A=>{this.plugin.settings.showReleaseNotes=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("NEWVERSION_NOTIFICATION_NAME")).setDesc(fragWithHTML(t$d("NEWVERSION_NOTIFICATION_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.showNewVersionNotification).onChange((async A=>{this.plugin.settings.showNewVersionNotification=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("FOLDER_NAME")).setDesc(fragWithHTML(t$d("FOLDER_DESC"))).addText((A=>A.setPlaceholder("Excalidraw").setValue(this.plugin.settings.folder).onChange((async A=>{this.plugin.settings.folder=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("FOLDER_EMBED_NAME")).setDesc(fragWithHTML(t$d("FOLDER_EMBED_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.embedUseExcalidrawFolder).onChange((async A=>{this.plugin.settings.embedUseExcalidrawFolder=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("TEMPLATE_NAME")).setDesc(fragWithHTML(t$d("TEMPLATE_DESC"))).addText((A=>A.setPlaceholder("Excalidraw/Template").setValue(this.plugin.settings.templateFilePath).onChange((async A=>{this.plugin.settings.templateFilePath=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("SCRIPT_FOLDER_NAME")).setDesc(fragWithHTML(t$d("SCRIPT_FOLDER_DESC"))).addText((A=>A.setPlaceholder("Excalidraw/Scripts").setValue(this.plugin.settings.scriptFolderPath).onChange((async A=>{this.plugin.settings.scriptFolderPath=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("COMPRESS_NAME")).setDesc(fragWithHTML(t$d("COMPRESS_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.compress).onChange((async A=>{this.plugin.settings.compress=A,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("FILENAME_HEAD")}),e.createDiv("",(A=>{A.innerHTML=t$d("FILENAME_DESC")}));const i=()=>`${t$d("FILENAME_SAMPLE")}${getDrawingFilename(this.plugin.settings)}
${t$d("FILENAME_EMBED_SAMPLE")}${getEmbedFilename("{NOTE_NAME}",this.plugin.settings)}`,n=e.createEl("p",{text:""});let a,r,s,o,l,c,d;n.innerHTML=i(),new obsidian.Setting(e).setName(t$d("FILENAME_PREFIX_NAME")).setDesc(fragWithHTML(t$d("FILENAME_PREFIX_DESC"))).addText((A=>A.setPlaceholder("Drawing ").setValue(this.plugin.settings.drawingFilenamePrefix).onChange((async e=>{this.plugin.settings.drawingFilenamePrefix=e.replaceAll(/[<>:"/\\|?*]/g,"_"),A.setValue(this.plugin.settings.drawingFilenamePrefix),n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("FILENAME_PREFIX_EMBED_NAME")).setDesc(fragWithHTML(t$d("FILENAME_PREFIX_EMBED_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.drawingEmbedPrefixWithFilename).onChange((async A=>{this.plugin.settings.drawingEmbedPrefixWithFilename=A,n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("FILENAME_POSTFIX_NAME")).setDesc(fragWithHTML(t$d("FILENAME_POSTFIX_DESC"))).addText((A=>A.setPlaceholder("").setValue(this.plugin.settings.drawingFilnameEmbedPostfix).onChange((async e=>{this.plugin.settings.drawingFilnameEmbedPostfix=e.replaceAll(/[<>:"/\\|?*]/g,"_"),A.setValue(this.plugin.settings.drawingFilnameEmbedPostfix),n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("FILENAME_DATE_NAME")).setDesc(fragWithHTML(t$d("FILENAME_DATE_DESC"))).addText((A=>A.setPlaceholder("YYYY-MM-DD HH.mm.ss").setValue(this.plugin.settings.drawingFilenameDateTime).onChange((async e=>{this.plugin.settings.drawingFilenameDateTime=e.replaceAll(/[<>:"/\\|?*]/g,"_"),A.setValue(this.plugin.settings.drawingFilenameDateTime),n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("FILENAME_EXCALIDRAW_EXTENSION_NAME")).setDesc(fragWithHTML(t$d("FILENAME_EXCALIDRAW_EXTENSION_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.useExcalidrawExtension).onChange((async A=>{this.plugin.settings.useExcalidrawExtension=A,n.innerHTML=i(),this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("DISPLAY_HEAD")}),new obsidian.Setting(e).setName(t$d("LEFTHANDED_MODE_NAME")).setDesc(fragWithHTML(t$d("LEFTHANDED_MODE_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.isLeftHanded).onChange((async A=>{this.plugin.settings.isLeftHanded=A,setLeftHandedMode(A),setTimeout((()=>setLeftHandedMode(A))),this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("MATCH_THEME_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.matchTheme).onChange((async A=>{this.plugin.settings.matchTheme=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("MATCH_THEME_ALWAYS_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_ALWAYS_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.matchThemeAlways).onChange((async A=>{this.plugin.settings.matchThemeAlways=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("MATCH_THEME_TRIGGER_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_TRIGGER_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.matchThemeTrigger).onChange((async A=>{this.plugin.settings.matchThemeTrigger=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("DEFAULT_OPEN_MODE_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_OPEN_MODE_DESC"))).addDropdown((A=>A.addOption("normal","Normal Mode").addOption("zen","Zen Mode").addOption("view","View Mode").setValue(this.plugin.settings.defaultMode).onChange((async A=>{this.plugin.settings.defaultMode=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("DEFAULT_PEN_MODE_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_PEN_MODE_DESC"))).addDropdown((A=>A.addOption("never","Never").addOption("mobile","On Obsidian Mobile").addOption("always","Always").setValue(this.plugin.settings.defaultPenMode).onChange((async A=>{this.plugin.settings.defaultPenMode=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("ZOOM_TO_FIT_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.zoomToFitOnResize).onChange((async A=>{this.plugin.settings.zoomToFitOnResize=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("ZOOM_TO_FIT_MAX_LEVEL_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_MAX_LEVEL_DESC"))).addSlider((A=>A.setLimits(.5,10,.5).setValue(this.plugin.settings.zoomToFitMaxLevel).onChange((async A=>{a.innerText=` ${A.toString()}`,this.plugin.settings.zoomToFitMaxLevel=A,this.applySettingsUpdate()})))).settingEl.createDiv("",(A=>{a=A,A.style.minWidth="2.3em",A.style.textAlign="right",A.innerText=` ${this.plugin.settings.zoomToFitMaxLevel.toString()}`})),this.containerEl.createEl("h1",{text:t$d("LINKS_HEAD")}),this.containerEl.createEl("span",void 0,(A=>A.innerHTML=t$d("LINKS_DESC"))),new obsidian.Setting(e).setName(t$d("ADJACENT_PANE_NAME")).setDesc(fragWithHTML(t$d("ADJACENT_PANE_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.openInAdjacentPane).onChange((async A=>{this.plugin.settings.openInAdjacentPane=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("MAINWORKSPACE_PANE_NAME")).setDesc(fragWithHTML(t$d("MAINWORKSPACE_PANE_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.openInMainWorkspace).onChange((async A=>{this.plugin.settings.openInMainWorkspace=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(fragWithHTML(t$d("LINK_BRACKETS_NAME"))).setDesc(fragWithHTML(t$d("LINK_BRACKETS_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.showLinkBrackets).onChange((A=>{this.plugin.settings.showLinkBrackets=A,this.applySettingsUpdate(!0)})))),new obsidian.Setting(e).setName(t$d("LINK_PREFIX_NAME")).setDesc(fragWithHTML(t$d("LINK_PREFIX_DESC"))).addText((A=>A.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.linkPrefix).onChange((A=>{this.plugin.settings.linkPrefix=A,this.applySettingsUpdate(!0)})))),new obsidian.Setting(e).setName(t$d("URL_PREFIX_NAME")).setDesc(fragWithHTML(t$d("URL_PREFIX_DESC"))).addText((A=>A.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.urlPrefix).onChange((A=>{this.plugin.settings.urlPrefix=A,this.applySettingsUpdate(!0)})))),new obsidian.Setting(e).setName(t$d("PARSE_TODO_NAME")).setDesc(fragWithHTML(t$d("PARSE_TODO_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.parseTODO).onChange((A=>{this.plugin.settings.parseTODO=A,r.setDisabled(!A),s.setDisabled(!A),this.applySettingsUpdate(!0)})))),new obsidian.Setting(e).setName(t$d("TODO_NAME")).setDesc(fragWithHTML(t$d("TODO_DESC"))).addText((A=>{r=A,A.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.todo).onChange((A=>{this.plugin.settings.todo=A,this.applySettingsUpdate(!0)}))})),r.setDisabled(!this.plugin.settings.parseTODO),new obsidian.Setting(e).setName(t$d("DONE_NAME")).setDesc(fragWithHTML(t$d("DONE_DESC"))).setDisabled(!this.plugin.settings.parseTODO).addText((A=>{s=A,A.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.done).onChange((A=>{this.plugin.settings.done=A,this.applySettingsUpdate(!0)}))})),s.setDisabled(!this.plugin.settings.parseTODO),new obsidian.Setting(e).setName(t$d("LINKOPACITY_NAME")).setDesc(fragWithHTML(t$d("LINKOPACITY_DESC"))).addSlider((A=>A.setLimits(0,1,.05).setValue(this.plugin.settings.linkOpacity).onChange((async A=>{o.innerText=` ${A.toString()}`,this.plugin.settings.linkOpacity=A,this.applySettingsUpdate(!0)})))).settingEl.createDiv("",(A=>{o=A,A.style.minWidth="2.3em",A.style.textAlign="right",A.innerText=` ${this.plugin.settings.linkOpacity.toString()}`})),new obsidian.Setting(e).setName(t$d("HOVERPREVIEW_NAME")).setDesc(fragWithHTML(t$d("HOVERPREVIEW_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.hoverPreviewWithoutCTRL).onChange((async A=>{this.plugin.settings.hoverPreviewWithoutCTRL=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("LINK_CTRL_CLICK_NAME")).setDesc(fragWithHTML(t$d("LINK_CTRL_CLICK_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.allowCtrlClick).onChange((async A=>{this.plugin.settings.allowCtrlClick=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("TRANSCLUSION_WRAP_NAME")).setDesc(fragWithHTML(t$d("TRANSCLUSION_WRAP_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.forceWrap).onChange((async A=>{this.plugin.settings.forceWrap=A,this.applySettingsUpdate(!0)})))).descEl.innerHTML=`![[doc#^ref]]{number} ${t$d("TRANSCLUSION_WRAP_DESC")}`,new obsidian.Setting(e).setName(t$d("PAGE_TRANSCLUSION_CHARCOUNT_NAME")).setDesc(fragWithHTML(t$d("PAGE_TRANSCLUSION_CHARCOUNT_DESC"))).addText((A=>A.setPlaceholder("Enter a number").setValue(this.plugin.settings.pageTransclusionCharLimit.toString()).onChange((async e=>{const t=parseInt(e);if(isNaN(t)&&""!==e)A.setValue(this.plugin.settings.pageTransclusionCharLimit.toString());else{if(this.requestEmbedUpdate=!0,""===e)return this.plugin.settings.pageTransclusionCharLimit=10,void this.applySettingsUpdate(!0);this.plugin.settings.pageTransclusionCharLimit=t,A.setValue(this.plugin.settings.pageTransclusionCharLimit.toString()),this.applySettingsUpdate(!0)}})))),new obsidian.Setting(e).setName(t$d("TRANSCLUSION_DEFAULT_WRAP_NAME")).setDesc(fragWithHTML(t$d("TRANSCLUSION_DEFAULT_WRAP_DESC"))).addText((A=>A.setPlaceholder("Enter a number").setValue(this.plugin.settings.wordWrappingDefault.toString()).onChange((async e=>{const t=parseInt(e);if(isNaN(t)&&""!==e)A.setValue(this.plugin.settings.wordWrappingDefault.toString());else{if(this.requestEmbedUpdate=!0,""===e)return this.plugin.settings.wordWrappingDefault=0,void this.applySettingsUpdate(!0);this.plugin.settings.wordWrappingDefault=t,A.setValue(this.plugin.settings.wordWrappingDefault.toString()),this.applySettingsUpdate(!0)}})))),new obsidian.Setting(e).setName(t$d("QUOTE_TRANSCLUSION_REMOVE_NAME")).setDesc(fragWithHTML(t$d("QUOTE_TRANSCLUSION_REMOVE_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.removeTransclusionQuoteSigns).onChange((A=>{this.plugin.settings.removeTransclusionQuoteSigns=A,this.requestEmbedUpdate=!0,this.applySettingsUpdate(!0)})))),new obsidian.Setting(e).setName(t$d("GET_URL_TITLE_NAME")).setDesc(fragWithHTML(t$d("GET_URL_TITLE_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.iframelyAllowed).onChange((async A=>{this.plugin.settings.iframelyAllowed=A,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("MD_HEAD")}),this.containerEl.createEl("p",{text:t$d("MD_HEAD_DESC")}),new obsidian.Setting(e).setName(t$d("MD_TRANSCLUDE_WIDTH_NAME")).setDesc(fragWithHTML(t$d("MD_TRANSCLUDE_WIDTH_DESC"))).addText((A=>A.setPlaceholder("Enter a number e.g. 500").setValue(this.plugin.settings.mdSVGwidth.toString()).onChange((async e=>{const t=parseInt(e);if(isNaN(t)&&""!==e)A.setValue(this.plugin.settings.mdSVGwidth.toString());else{if(this.requestEmbedUpdate=!0,""===e)return this.plugin.settings.mdSVGwidth=500,void this.applySettingsUpdate(!0);this.plugin.settings.mdSVGwidth=t,this.requestReloadDrawings=!0,A.setValue(this.plugin.settings.mdSVGwidth.toString()),this.applySettingsUpdate(!0)}})))),new obsidian.Setting(e).setName(t$d("MD_TRANSCLUDE_HEIGHT_NAME")).setDesc(fragWithHTML(t$d("MD_TRANSCLUDE_HEIGHT_DESC"))).addText((A=>A.setPlaceholder("Enter a number e.g. 800").setValue(this.plugin.settings.mdSVGmaxHeight.toString()).onChange((async e=>{const t=parseInt(e);if(isNaN(t)&&""!==e)A.setValue(this.plugin.settings.mdSVGmaxHeight.toString());else{if(this.requestEmbedUpdate=!0,""===e)return this.plugin.settings.mdSVGmaxHeight=800,void this.applySettingsUpdate(!0);this.plugin.settings.mdSVGmaxHeight=t,this.requestReloadDrawings=!0,A.setValue(this.plugin.settings.mdSVGmaxHeight.toString()),this.applySettingsUpdate(!0)}})))),new obsidian.Setting(e).setName(t$d("MD_DEFAULT_FONT_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_FONT_DESC"))).addDropdown((async A=>{A.addOption("Virgil","Virgil"),A.addOption("Cascadia","Cascadia"),this.app.vault.getFiles().filter((A=>["ttf","woff","woff2"].contains(A.extension))).forEach((e=>{A.addOption(e.path,e.name)})),A.setValue(this.plugin.settings.mdFont).onChange((A=>{this.requestReloadDrawings=!0,this.plugin.settings.mdFont=A,this.applySettingsUpdate(!0)}))})),new obsidian.Setting(e).setName(t$d("MD_DEFAULT_COLOR_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_COLOR_DESC"))).addText((A=>A.setPlaceholder("CSS Color-name|RGB-HEX").setValue(this.plugin.settings.mdFontColor).onChange((A=>{this.requestReloadDrawings=!0,this.plugin.settings.mdFontColor=A,this.applySettingsUpdate(!0)})))),new obsidian.Setting(e).setName(t$d("MD_DEFAULT_BORDER_COLOR_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_BORDER_COLOR_DESC"))).addText((A=>A.setPlaceholder("CSS Color-name|RGB-HEX").setValue(this.plugin.settings.mdBorderColor).onChange((A=>{this.requestReloadDrawings=!0,this.plugin.settings.mdBorderColor=A,this.applySettingsUpdate(!0)})))),new obsidian.Setting(e).setName(t$d("MD_CSS_NAME")).setDesc(fragWithHTML(t$d("MD_CSS_DESC"))).addText((A=>A.setPlaceholder("filename of css file in vault").setValue(this.plugin.settings.mdCSS).onChange((A=>{this.requestReloadDrawings=!0,this.plugin.settings.mdCSS=A,this.applySettingsUpdate(!0)})))),this.containerEl.createEl("h1",{text:t$d("EMBED_HEAD")}),new obsidian.Setting(e).setName(t$d("EMBED_PREVIEW_SVG_NAME")).setDesc(fragWithHTML(t$d("EMBED_PREVIEW_SVG_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.displaySVGInPreview).onChange((async A=>{this.plugin.settings.displaySVGInPreview=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("EMBED_REUSE_EXPORTED_IMAGE_NAME")).setDesc(fragWithHTML(t$d("EMBED_REUSE_EXPORTED_IMAGE_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.displayExportedImageIfAvailable).onChange((async A=>{this.plugin.settings.displayExportedImageIfAvailable=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("PREVIEW_MATCH_OBSIDIAN_NAME")).setDesc(fragWithHTML(t$d("PREVIEW_MATCH_OBSIDIAN_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.previewMatchObsidianTheme).onChange((async A=>{this.plugin.settings.previewMatchObsidianTheme=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("EMBED_WIDTH_NAME")).setDesc(fragWithHTML(t$d("EMBED_WIDTH_DESC"))).addText((A=>A.setPlaceholder("400").setValue(this.plugin.settings.width).onChange((async A=>{this.plugin.settings.width=A,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian.Setting(e).setName(t$d("EMBED_TYPE_NAME")).setDesc(fragWithHTML(t$d("EMBED_TYPE_DESC"))).addDropdown((async A=>{l=A,l.addOption("excalidraw","excalidraw"),this.plugin.settings.autoexportPNG?l.addOption("PNG","PNG"):"PNG"===this.plugin.settings.embedType&&(this.plugin.settings.embedType="excalidraw",this.applySettingsUpdate()),this.plugin.settings.autoexportSVG?l.addOption("SVG","SVG"):"SVG"===this.plugin.settings.embedType&&(this.plugin.settings.embedType="excalidraw",this.applySettingsUpdate()),l.setValue(this.plugin.settings.embedType).onChange((async A=>{this.plugin.settings.embedType=A,this.applySettingsUpdate()}))})),new obsidian.Setting(e).setName(t$d("EMBED_WIKILINK_NAME")).setDesc(fragWithHTML(t$d("EMBED_WIKILINK_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.embedWikiLink).onChange((async A=>{this.plugin.settings.embedWikiLink=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("EXPORT_PNG_SCALE_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PNG_SCALE_DESC"))).addSlider((A=>A.setLimits(1,5,.5).setValue(this.plugin.settings.pngExportScale).onChange((async A=>{c.innerText=` ${A.toString()}`,this.plugin.settings.pngExportScale=A,this.applySettingsUpdate()})))).settingEl.createDiv("",(A=>{c=A,A.style.minWidth="2.3em",A.style.textAlign="right",A.innerText=` ${this.plugin.settings.pngExportScale.toString()}`})),new obsidian.Setting(e).setName(t$d("EXPORT_BACKGROUND_NAME")).setDesc(fragWithHTML(t$d("EXPORT_BACKGROUND_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.exportWithBackground).onChange((async A=>{this.plugin.settings.exportWithBackground=A,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian.Setting(e).setName(t$d("EXPORT_PADDING_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PADDING_DESC"))).addSlider((A=>A.setLimits(0,50,5).setValue(this.plugin.settings.exportPaddingSVG).onChange((async A=>{d.innerText=` ${A.toString()}`,this.plugin.settings.exportPaddingSVG=A,this.applySettingsUpdate()})))).settingEl.createDiv("",(A=>{d=A,A.style.minWidth="2.3em",A.style.textAlign="right",A.innerText=` ${this.plugin.settings.exportPaddingSVG.toString()}`})),new obsidian.Setting(e).setName(t$d("EXPORT_THEME_NAME")).setDesc(fragWithHTML(t$d("EXPORT_THEME_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.exportWithTheme).onChange((async A=>{this.plugin.settings.exportWithTheme=A,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),this.containerEl.createEl("h1",{text:t$d("EXPORT_HEAD")}),new obsidian.Setting(e).setName(t$d("EXPORT_SYNC_NAME")).setDesc(fragWithHTML(t$d("EXPORT_SYNC_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.keepInSync).onChange((async A=>{this.plugin.settings.keepInSync=A,this.applySettingsUpdate()}))));const h=A=>{let e=0;for(e=0;eA.setValue(this.plugin.settings.autoexportSVG).onChange((async A=>{A?l.addOption("SVG","SVG"):("SVG"===this.plugin.settings.embedType&&(l.setValue("excalidraw"),this.plugin.settings.embedType="excalidraw"),h("SVG")),this.plugin.settings.autoexportSVG=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("EXPORT_PNG_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PNG_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.autoexportPNG).onChange((async A=>{A?l.addOption("PNG","PNG"):("PNG"===this.plugin.settings.embedType&&(l.setValue("excalidraw"),this.plugin.settings.embedType="excalidraw"),h("PNG")),this.plugin.settings.autoexportPNG=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("EXPORT_BOTH_DARK_AND_LIGHT_NAME")).setDesc(fragWithHTML(t$d("EXPORT_BOTH_DARK_AND_LIGHT_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.autoExportLightAndDark).onChange((async A=>{this.plugin.settings.autoExportLightAndDark=A,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("COMPATIBILITY_HEAD")}),new obsidian.Setting(e).setName(t$d("COMPATIBILITY_MODE_NAME")).setDesc(fragWithHTML(t$d("COMPATIBILITY_MODE_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.compatibilityMode).onChange((async A=>{this.plugin.settings.compatibilityMode=A,n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("EXPORT_EXCALIDRAW_NAME")).setDesc(fragWithHTML(t$d("EXPORT_EXCALIDRAW_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.autoexportExcalidraw).onChange((async A=>{this.plugin.settings.autoexportExcalidraw=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("SYNC_EXCALIDRAW_NAME")).setDesc(fragWithHTML(t$d("SYNC_EXCALIDRAW_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.syncExcalidraw).onChange((async A=>{this.plugin.settings.syncExcalidraw=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("MATHJAX_NAME")).setDesc(t$d("MATHJAX_DESC")).addDropdown((A=>{A.addOption("https://cdn.jsdelivr.net/npm/mathjax@3.2.1/es5/tex-svg.js","jsdelivr").addOption("https://unpkg.com/mathjax@3.2.1/es5/tex-svg.js","unpkg").addOption("https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.1/es5/tex-svg-full.min.js","cdnjs").setValue(this.plugin.settings.mathjaxSourceURL).onChange((A=>{this.plugin.settings.mathjaxSourceURL=A,this.reloadMathJax=!0,this.applySettingsUpdate()}))})),this.containerEl.createEl("h1",{text:t$d("EXPERIMENTAL_HEAD")}),this.containerEl.createEl("p",{text:t$d("EXPERIMENTAL_DESC")}),new obsidian.Setting(e).setName(t$d("FIELD_SUGGESTER_NAME")).setDesc(fragWithHTML(t$d("FIELD_SUGGESTER_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.fieldSuggester).onChange((async A=>{this.plugin.settings.fieldSuggester=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("FILETYPE_NAME")).setDesc(fragWithHTML(t$d("FILETYPE_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.experimentalFileType).onChange((async A=>{this.plugin.settings.experimentalFileType=A,this.plugin.experimentalFileTypeDisplayToggle(A),this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("FILETAG_NAME")).setDesc(fragWithHTML(t$d("FILETAG_DESC"))).addText((A=>A.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.experimentalFileTag).onChange((async A=>{this.plugin.settings.experimentalFileTag=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("LIVEPREVIEW_NAME")).setDesc(fragWithHTML(t$d("LIVEPREVIEW_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.experimentalLivePreview).onChange((async A=>{this.plugin.settings.experimentalLivePreview=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("ENABLE_FOURTH_FONT_NAME")).setDesc(fragWithHTML(t$d("ENABLE_FOURTH_FONT_DESC"))).addToggle((A=>A.setValue(this.plugin.settings.experimentalEnableFourthFont).onChange((async A=>{this.requestReloadDrawings=!0,this.plugin.settings.experimentalEnableFourthFont=A,this.applySettingsUpdate()})))),new obsidian.Setting(e).setName(t$d("FOURTH_FONT_NAME")).setDesc(fragWithHTML(t$d("FOURTH_FONT_DESC"))).addDropdown((async A=>{A.addOption("Virgil","Virgil"),this.app.vault.getFiles().filter((A=>["ttf","woff","woff2"].contains(A.extension))).forEach((e=>{A.addOption(e.path,e.name)})),A.setValue(this.plugin.settings.experimantalFourthFont).onChange((A=>{this.requestReloadDrawings=!0,this.plugin.settings.experimantalFourthFont=A,this.applySettingsUpdate(!0),this.plugin.initializeFourthFont()}))}));const g=null===(A=this.plugin.scriptEngine.getListofScripts())||void 0===A?void 0:A.map((A=>this.plugin.scriptEngine.getScriptName(A)));if(Object.keys(this.plugin.settings.scriptEngineSettings).length>0&&g){const A=(A,e)=>{const t=this.plugin.settings.scriptEngineSettings[A][e];return"object"==typeof t?t.height:null},t=(A,e)=>{const t=this.plugin.settings.scriptEngineSettings[A][e];return"object"==typeof t?t.value:t},i=(A,e,t)=>{"object"==typeof this.plugin.settings.scriptEngineSettings[A][e]?this.plugin.settings.scriptEngineSettings[A][e].value=t:this.plugin.settings.scriptEngineSettings[A][e]=t},n=(A,n,a)=>{new obsidian.Setting(e).setName(n).setDesc(fragWithHTML(null!=a?a:"")).addToggle((e=>e.setValue(t(A,n)).onChange((async e=>{i(A,n,e),this.applySettingsUpdate()}))))},a=(n,a,r,s)=>{s&&"[object Array]"===Object.prototype.toString.call(s)&&s.length>0?new obsidian.Setting(e).setName(a).setDesc(fragWithHTML(null!=r?r:"")).addDropdown((A=>{s.forEach((e=>A.addOption(e.toString(),e.toString()))),A.setValue(t(n,a)).onChange((async A=>{i(n,a,A),this.applySettingsUpdate()}))})):A(n,a)?new obsidian.Setting(e).setName(a).setDesc(fragWithHTML(null!=r?r:"")).addTextArea((e=>{e.inputEl.style.minHeight=A(n,a),e.inputEl.style.minWidth="400px",e.setValue(t(n,a)).onChange((async A=>{i(n,a,A),this.applySettingsUpdate()}))})):new obsidian.Setting(e).setName(a).setDesc(fragWithHTML(null!=r?r:"")).addText((A=>A.setValue(t(n,a)).onChange((async A=>{i(n,a,A),this.applySettingsUpdate()}))))},r=(A,n,a)=>{new obsidian.Setting(e).setName(n).setDesc(fragWithHTML(null!=a?a:"")).addText((e=>e.setPlaceholder("Enter a number").setValue(t(A,n).toString()).onChange((async a=>{const r=parseFloat(a);isNaN(r)&&""!==a?e.setValue(t(A,n).toString()):(i(A,n,isNaN(r)?0:r),this.applySettingsUpdate())}))))};this.containerEl.createEl("h1",{text:t$d("SCRIPT_SETTINGS_HEAD")}),Object.keys(this.plugin.settings.scriptEngineSettings).filter((A=>g.contains(A))).forEach((A=>{const e=this.plugin.settings.scriptEngineSettings[A],t=Object.values(e);0===t.length||t.length>0&&0===t.map((A=>A.hidden?0:1)).reduce(((A,e)=>A+e))||(this.containerEl.createEl("h3",{text:A}),Object.keys(e).forEach((t=>{var i;const s=e[t];switch(typeof(null!==(i=s.value)&&void 0!==i?i:s)){case"boolean":s.hidden||n(A,t,s.description);break;case"string":s.hidden||a(A,t,s.description,s.valueset);break;case"number":s.hidden||r(A,t,s.description)}})))}))}}}var openDialogAction;!function(A){A[A.openFile=0]="openFile",A[A.insertLinkToDrawing=1]="insertLinkToDrawing"}(openDialogAction||(openDialogAction={}));class OpenFileDialog extends obsidian.FuzzySuggestModal{constructor(A,e){super(A),this.app=A,this.action=openDialogAction.openFile,this.plugin=e,this.onNewPane=!1,this.limit=20,this.setInstructions([{command:t$d("TYPE_FILENAME"),purpose:""}]),this.inputEl.onkeyup=A=>{"Enter"==A.key&&this.action==openDialogAction.openFile&&this.containerEl.innerText.includes(EMPTY_MESSAGE)&&(this.plugin.createAndOpenDrawing(`${this.plugin.settings.folder}/${this.inputEl.value}.excalidraw.md`,this.onNewPane?"new-pane":"active-pane"),this.close())}}getItems(){return(this.app.vault.getFiles()||[]).filter((A=>this.plugin.isExcalidrawFile(A)))}getItemText(A){return A.path}onChooseItem(A){switch(this.action){case openDialogAction.openFile:this.plugin.openDrawing(A,this.onNewPane?"new-pane":"active-pane",!0);break;case openDialogAction.insertLinkToDrawing:this.plugin.embedDrawing(A)}}start(A,e){switch(this.action=A,this.onNewPane=e,A){case openDialogAction.openFile:this.emptyStateText=EMPTY_MESSAGE,this.setPlaceholder(t$d("SELECT_FILE_OR_TYPE_NEW"));break;case openDialogAction.insertLinkToDrawing:this.emptyStateText=t$d("NO_MATCH"),this.setPlaceholder(t$d("SELECT_TO_EMBED"))}this.open()}}class InsertLinkDialog extends obsidian.FuzzySuggestModal{constructor(A){super(A),this.app=A,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_FILE_TO_LINK")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return this.app.metadataCache.getLinkSuggestions().filter((A=>!A.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(A){return A.path+(A.alias?`|${A.alias}`:"")}onChooseItem(A){let e=A.path;A.file&&(e=this.app.metadataCache.fileToLinktext(A.file,this.drawingPath,!0)),this.addText(`[[${e+(A.alias?`|${A.alias}`:"")}]]`)}start(A,e){this.addText=e,this.drawingPath=A,this.open()}}class InsertImageDialog extends obsidian.FuzzySuggestModal{constructor(A){super(A.app),this.plugin=A,this.app=A.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE_WITH_OPTION_TO_SCALE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_DRAWING")),this.emptyStateText=t$d("NO_MATCH"),this.inputEl.onkeyup=A=>{"Enter"===A.key&&A.altKey&&this.chooser.values&&(this.onChooseItem(this.chooser.values[this.chooser.selectedItem].item,new KeyboardEvent("keypress",{altKey:!0})),this.close())}}getItems(){return(this.app.vault.getFiles()||[]).filter((A=>(IMAGE_TYPES.contains(A.extension)||this.plugin.isExcalidrawFile(A))&&!A.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(A){return A.path}onChooseItem(A,e){const t=this.plugin.ea;t.reset(),t.setView(this.view),t.canvas.theme=this.view.excalidrawAPI.getAppState().theme,(async()=>{await t.addImage(0,0,A,!e.altKey),t.addElementsToView(!0,!1,!0)})()}start(A){this.view=A,this.open()}}class InsertMDDialog extends obsidian.FuzzySuggestModal{constructor(A){super(A.app),this.plugin=A,this.app=A.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_MD")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return(this.app.vault.getFiles()||[]).filter((A=>"md"===A.extension&&!this.plugin.isExcalidrawFile(A)))}getItemText(A){return A.path}onChooseItem(A){const e=this.plugin.ea;e.reset(),e.setView(this.view),(async()=>{await e.addImage(0,0,A),e.addElementsToView(!0,!1,!0)})()}start(A){this.view=A,this.open()}}function around(A,e){const t=Object.keys(e).map((t=>around1(A,t,e[t])));return 1===t.length?t[0]:function(){t.forEach((A=>A()))}}function around1(A,e,t){const i=A[e],n=A.hasOwnProperty(e);let a=t(i);return i&&Object.setPrototypeOf(a,i),Object.setPrototypeOf(r,a),A[e]=r,s;function r(...t){return a===i&&A[e]===r&&s(),a.apply(this,t)}function s(){A[e]===r&&(n?A[e]=i:delete A[e]),a!==i&&(a=i,Object.setPrototypeOf(r,i||Function))}}let plugin,vault,metadataCache;const getDefaultWidth=A=>{const e=parseInt(A.settings.width);return isNaN(e)||0===e||null===e?"400":A.settings.width},initializeMarkdownPostProcessor=A=>{plugin=A,vault=A.app.vault,metadataCache=A.app.metadataCache},getIMG=async A=>{var e;let t=A.file;if(!A.file){const i=vault.getAbstractFileByPath(null===(e=A.fname)||void 0===e?void 0:e.split("#")[0]);if(!(i&&i instanceof obsidian.TFile))return null;t=i}const i=getEmbeddedFilenameParts(A.fname);A.style=A.style.replaceAll(" ","-");const n=hasExportTheme(plugin,t)?getExportTheme(plugin,t,"light"):void 0,a={withBackground:getWithBackground(plugin,t),withTheme:!!n||plugin.settings.exportWithTheme},r=createEl("img");let s=`max-width:${A.fwidth}px !important; width:100%;`;A.fheight&&(s+=`height:${A.fheight}px;`),r.setAttribute("style",s),r.addClass(A.style);const o=null!=n?n:plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":plugin.settings.exportWithTheme?void 0:"light";o&&(a.withTheme=!0);const l=new EmbeddedFilesLoader(plugin,o?"dark"===o:void 0);if(!plugin.settings.displaySVGInPreview){const e=parseInt(A.fwidth),n=e>=2400?5:e>=1800?4:e>=1200?3:e>=600?2:1,s=i.hasGroupref?void 0:await getQuickImagePreview(plugin,t.path,"png"),c=null!=s?s:await createPNG(i.hasGroupref?i.filepath+i.linkpartReference:t.path,n,a,l,o,null,null,[],plugin,0);return c?(r.src=URL.createObjectURL(c),r):null}if(!i.hasBlockref&&!i.hasSectionref){const A=await getQuickImagePreview(plugin,t.path,"svg");if(A)return r.setAttribute("src",svgToBase64(A)),r}const c=(await createSVG(i.hasGroupref||i.hasBlockref||i.hasSectionref?i.filepath+i.linkpartReference:t.path,!0,a,l,o,null,null,[],plugin,0,getExportPadding(plugin,t))).outerHTML;let d=null;const h=document.createElement("div");h.innerHTML=c;const g=h.firstChild;return g instanceof SVGSVGElement&&(d=g),d?(d=embedFontsInSVG(d,plugin),d.removeAttribute("width"),d.removeAttribute("height"),r.setAttribute("src",svgToBase64(d.outerHTML)),r):null},createImageDiv=async A=>{const e=await getIMG(A);return createDiv(A.style,(t=>{t.append(e),t.setAttribute("src",A.fname),A.fwidth&&t.setAttribute("w",A.fwidth),A.fheight&&t.setAttribute("h",A.fheight),t.onClickEvent((A=>{if(A.target instanceof Element&&"img"!=A.target.tagName.toLowerCase())return;const e=t.getAttribute("src");if(e){const t=e.match(/([^#]*)(.*)/);if(!t)return;plugin.openDrawing(vault.getAbstractFileByPath(t[1]),A[CTRL_OR_CMD]?"new-pane":A.metaKey&&!app.isMobile?"popout-window":"active-pane",!0,t[2])}})),t.addEventListener(RERENDER_EVENT,(async A=>{A.stopPropagation(),t.empty();const e=await getIMG({fname:t.getAttribute("src"),fwidth:t.getAttribute("w"),fheight:t.getAttribute("h"),style:t.getAttribute("class")});t.append(e)}))}))},processReadingMode=async(A,e)=>{var t;for(const i of A){const A=null===(t=i.getAttribute("src"))||void 0===t?void 0:t.split("#")[0];if(!A)continue;const n=metadataCache.getFirstLinkpathDest(A,e.sourcePath);if(n&&n instanceof obsidian.TFile&&plugin.isExcalidrawFile(n)){if(isTextOnlyEmbed(i))continue;i.parentElement.replaceChild(await processInternalEmbed(i,n),i)}}},processInternalEmbed=async(A,e)=>{const t={fname:"",fheight:"",fwidth:"",style:""},i=A.getAttribute("src");if(!i)return;t.fwidth=A.getAttribute("width")?A.getAttribute("width"):getDefaultWidth(plugin),t.fheight=A.getAttribute("height");let n=A.getAttribute("alt");t.style="excalidraw-svg",processAltText(i.split("#")[0],n,t);const a=getEmbeddedFilenameParts(i);return t.fname=(null==e?void 0:e.path)+(a.hasBlockref||a.hasSectionref?a.linkpartReference:""),t.file=e,await createImageDiv(t)},processAltText=(A,e,t)=>{var i,n;if(e&&!e.startsWith(A)){const a=e.match(/[^\|\d]*\|?((\d*%?)x?(\d*%?))?\|?(.*)/);t.fwidth=null!==(i=a[2])&&void 0!==i?i:t.fwidth,t.fheight=null!==(n=a[3])&&void 0!==n?n:t.fheight,a[4]&&!a[4].startsWith(A)&&(t.style=`excalidraw-svg-${a[4]}`),a[4]&&""!==a[4]||a[2]&&""!==a[2]||!a[0]||""===a[0]||(t.style=`excalidraw-svg-${a[0]}`)}},isTextOnlyEmbed=A=>{const e=A.getAttribute("src");if(!e)return!0;const t=getEmbeddedFilenameParts(e);return!(t.hasArearef||t.hasGroupref)&&(t.hasBlockref||t.hasSectionref)},tmpObsidianWYSIWYG=async(A,e)=>{const t=app.vault.getAbstractFileByPath(e.sourcePath);t instanceof obsidian.TFile&&plugin.isExcalidrawFile(t)&&(e.remainingNestLevel<4||setTimeout((async()=>{let i=0;for(;!A.parentElement&&i++<=50;)await sleep(50);if(!A.parentElement)return;let n=A;for(;!n.hasClass("dataview")&&!n.hasClass("cm-preview-code-block")&&!n.hasClass("cm-embed-block")&&!n.hasClass("internal-embed")&&n.parentElement;)n=n.parentElement;if(n.hasClass("dataview")||n.hasClass("cm-preview-code-block")||n.hasClass("cm-embed-block"))return;const a={fname:e.sourcePath,fheight:"",fwidth:getDefaultWidth(plugin),style:"excalidraw-svg"};if(a.file=t,!n.hasClass("internal-embed")){A.empty();const e=A.parentElement;if(!e.hasClass("markdown-preview-section"))return;if(e.hasAttribute("ready"))return void e.removeChild(A);e.setAttribute("ready","");const t=await createImageDiv(a);return void A.appendChild(t)}if(isTextOnlyEmbed(n))return;if(A.empty(),n.hasAttribute("ready"))return;n.setAttribute("ready",""),n.empty();const r=await processInternalEmbed(n,t);n.appendChild(r);let s=null;const o=new MutationObserver((A=>{var e;["alt","width","height"].contains(null===(e=A[0])||void 0===e?void 0:e.attributeName)&&(s&&clearTimeout(s),s=setTimeout((async()=>{s=null,n.empty();const A=await processInternalEmbed(n,t);n.appendChild(A)}),500))}));o.observe(n,{attributes:!0})})))},markdownPostProcessor=async(A,e)=>{var t;const i=A.querySelectorAll(".internal-embed");0!==i.length?Boolean(null===(t=e.frontmatter)||void 0===t?void 0:t.hasOwnProperty("excalidraw-plugin"))?A.style.display="none":await processReadingMode(i,e):tmpObsidianWYSIWYG(A,e)},hoverEvent=A=>{A.linktext?(plugin.hover.linkText=A.linktext,plugin.hover.sourcePath=A.sourcePath):plugin.hover.linkText=null},observer=new MutationObserver((async A=>{if(0==A.length)return;if(!plugin.hover.linkText)return;const e=metadataCache.getFirstLinkpathDest(plugin.hover.linkText,plugin.hover.sourcePath?plugin.hover.sourcePath:"");if(!e)return;if(!(e instanceof obsidian.TFile))return;if("excalidraw"!==e.extension)return;const t=getIMGFilename(e.path,"svg"),i=vault.getAbstractFileByPath(t);if(i&&i instanceof obsidian.TFile)return;const n=getIMGFilename(e.path,"png"),a=vault.getAbstractFileByPath(n);if(a&&a instanceof obsidian.TFile)return;if(!plugin.hover.linkText)return;if(1!=A.length)return;if(1!=A[0].addedNodes.length)return;if("popover hover-popover file-embed is-loaded"!=!A[0].addedNodes[0].classNames)return;const r=A[0].addedNodes[0];r.empty();const s=await getIMG({file:e,fname:e.path,fwidth:"300",fheight:null,style:"excalidraw-svg"}),o=createDiv("",(async A=>{A.appendChild(s),A.setAttribute("src",e.path),A.onClickEvent((e=>{e.stopImmediatePropagation();const t=A.getAttribute("src");t&&plugin.openDrawing(vault.getAbstractFileByPath(t),e[CTRL_OR_CMD]?"new-pane":e.metaKey&&!app.isMobile?"popout-window":"active-pane")}))}));r.appendChild(o)})),EXCALIDRAW_AUTOMATE_INFO=[{field:"plugin",code:null,desc:"The ExcalidrawPlugin object",after:""},{field:"elementsDict",code:null,desc:"The {} dictionary object, contains the ExcalidrawElements currently edited in Automate indexed by el.id",after:'[""]'},{field:"imagesDict",code:null,desc:"the images files including DataURL, indexed by fileId",after:'[""]'},{field:"style.strokeColor",code:"[string]",desc:"A valid css color. See W3 School Colors for more.",after:""},{field:"style.backgroundColor",code:"[string]",desc:"A valid css color. See W3 School Colors for more.",after:""},{field:"style.angle",code:"[number]",desc:"Rotation of the object in radian",after:""},{field:"style.fillStyle",code:"[string]",desc:"'hachure' | 'cross-hatch' | 'solid'",after:""},{field:"style.strokeWidth",code:"[number]",desc:null,after:""},{field:"style.strokeStyle",code:"[string]",desc:"'solid' | 'dashed' | 'dotted'",after:""},{field:"style.roughness",code:"[number]",desc:"0:Architect\n1:Artist\n2:Cartoonist",after:""},{field:"style.opacity",code:"[number]",desc:"100: Fully opaque\n0: Fully transparent",after:""},{field:"style.strokeSharpness",code:"[string]",desc:"'round' | 'sharp'",after:""},{field:"style.fontFamily",code:"[number]",desc:"1: Virgil, 2:Helvetica, 3:Cascadia, 4:LocalFont",after:""},{field:"style.fontSize",code:"[number]",desc:null,after:""},{field:"style.textAlign",code:"[string]",desc:"'left' | 'right' | 'center'",after:""},{field:"style.verticalAlign",code:"[string]",desc:"For future use, has no effect currently; 'top' | 'bottom' | 'middle'",after:""},{field:"style.startArrowHead",code:"[string]",desc:"'triangle' | 'dot' | 'arrow' | 'bar' | null",after:""},{field:"style.endArrowHead",code:"[string]",desc:"'triangle' | 'dot' | 'arrow' | 'bar' | null",after:""},{field:"canvas.theme",code:"[string]",desc:"'dark' | 'light'",after:""},{field:"canvas.viewBackgroundColor",code:"[string]",desc:"A valid css color.\nSee W3 School Colors for more.",after:""},{field:"canvas.gridSize",code:"[number]",desc:null,after:""},{field:"addToGroup",code:"addToGroup(objectIds: []): string;",desc:null,after:""},{field:"toCliboard",code:"toClipboard(templatePath?: string): void;",desc:"Copies current elements using template to clipboard, ready to be pasted into an excalidraw canvas",after:""},{field:"getElements",code:"getElements(): ExcalidrawElement[];",desc:"Get all elements from ExcalidrawAutomate elementsDict",after:""},{field:"getElement",code:"getElement(id: string): ExcalidrawElement;",desc:"Get single element from ExcalidrawAutomate elementsDict",after:""},{field:"create",code:'create(params?: {filename?: string, foldername?: string, templatePath?: string, onNewPane?: boolean, frontmatterKeys?: { "excalidraw-plugin"?: "raw" | "parsed", "excalidraw-link-prefix"?: string, "excalidraw-link-brackets"?: boolean, "excalidraw-url-prefix"?: string,},}): Promise;',desc:"Create a drawing and save it to filename.\nIf filename is null: default filename as defined in Excalidraw settings.\nIf folder is null: default folder as defined in Excalidraw settings\n",after:""},{field:"createSVG",code:"createSVG(templatePath?: string, embedFont?: boolean, exportSettings?: ExportSettings, loader?: EmbeddedFilesLoader, theme?: string,): Promise;",desc:"Use ExcalidrawAutomate.getExportSettings(boolean,boolean) to create an ExportSettings object.\nUse ExcalidrawAutomate.getEmbeddedFilesLoader(boolean?) to create an EmbeddedFilesLoader object.",after:""},{field:"createPNG",code:"createPNG(templatePath?: string, scale?: number, exportSettings?: ExportSettings, loader?: EmbeddedFilesLoader, theme?: string,): Promise;",desc:"Use ExcalidrawAutomate.getExportSettings(boolean,boolean) to create an ExportSettings object.\nUse ExcalidrawAutomate.getEmbeddedFilesLoader(boolean?) to create an EmbeddedFilesLoader object.",after:""},{field:"wrapText",code:"wrapText(text: string, lineLen: number): string;",desc:null,after:""},{field:"addRect",code:"addRect(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addDiamond",code:"addDiamond(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addEllipse",code:"addEllipse(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addBlob",code:"addBlob(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addText",code:'addText(topX: number, topY: number, text: string, formatting?: {wrapAt?: number; width?: number; height?: number; textAlign?: string; box?: boolean | "box" | "blob" | "ellipse" | "diamond"; boxPadding?: number;}, id?: string,): string;',desc:"If box is !null, then text will be boxed\nThe function returns the id of the TextElement. If the text element is boxed i.e. it is a sticky note, then the id of the container object",after:""},{field:"addLine",code:"addLine(points: [[x: number, y: number]]): string;",desc:null,after:""},{field:"addArrow",code:"addArrow(points: [[x: number, y: number]], formatting?: { startArrowHead?: string; endArrowHead?: string; startObjectId?: string; endObjectId?: string;},): string;",desc:null,after:""},{field:"addImage",code:"addImage(topX: number, topY: number, imageFile: TFile): Promise;",desc:null,after:""},{field:"addLaTex",code:"addLaTex(topX: number, topY: number, tex: string): Promise;",desc:null,after:""},{field:"connectObjects",code:"connectObjects(objectA: string, connectionA: ConnectionPoint, objectB: string, connectionB: ConnectionPoint, formatting?: {numberOfPoints?: number; startArrowHead?: string; endArrowHead?: string; padding?: number;},): string;",desc:'type ConnectionPoint = "top" | "bottom" | "left" | "right" | null\nWhen null is passed as ConnectionPoint then Excalidraw will automatically decide\nnumberOfPoints is the number of points on the line. Default is 0 i.e. line will only have a start and end point.\nArrowHead: "triangle"|"dot"|"arrow"|"bar"|null',after:""},{field:"addLabelToLine",code:"addLabelToLine(lineId: string, label: string): string;",desc:"Adds a text label to a line or arrow. Currently only works with a simple straight 2-point (start & end) line",after:""},{field:"clear",code:"clear(): void;",desc:"Clears elementsDict and imagesDict only",after:""},{field:"reset",code:"reset(): void;",desc:"clear() + reset all style values to default",after:""},{field:"isExcalidrawFile",code:"isExcalidrawFile(f: TFile): boolean;",desc:"Returns true if MD file is an Excalidraw file",after:""},{field:"targetView",code:"targetView: ExcalidrawView;",desc:"The Obsidian view currently edited",after:""},{field:"setView",code:'setView(view: ExcalidrawView | "first" | "active"): ExcalidrawView;',desc:null,after:""},{field:"getExcalidrawAPI",code:"getExcalidrawAPI(): any;",desc:"Excalidraw API",after:""},{field:"getViewElements",code:"getViewElements(): ExcalidrawElement[];",desc:"Get elements in View",after:""},{field:"deleteViewElements",code:"deleteViewElements(el: ExcalidrawElement[]): boolean;",desc:null,after:""},{field:"getViewSelectedElement",code:"getViewSelectedElement(): ExcalidrawElement;",desc:"Get the selected element in the view, if more are selected, get the first",after:""},{field:"getViewSelectedElements",code:"getViewSelectedElements(): ExcalidrawElement[];",desc:null,after:""},{field:"getViewFileForImageElement",code:"getViewFileForImageElement(el: ExcalidrawElement): TFile | null;",desc:"Returns the TFile file handle for the image element",after:""},{field:"copyViewElementsToEAforEditing",code:"copyViewElementsToEAforEditing(elements: ExcalidrawElement[]): void;",desc:"Copies elements from view to elementsDict for editing",after:""},{field:"viewToggleFullScreen",code:"viewToggleFullScreen(forceViewMode?: boolean): void;",desc:null,after:""},{field:"connectObjectWithViewSelectedElement",code:"connectObjectWithViewSelectedElement(objectA: string, connectionA: ConnectionPoint, connectionB: ConnectionPoint, formatting?: {numberOfPoints?: number; startArrowHead?: string; endArrowHead?: string; padding?: number;},): boolean;",desc:"Connect an object to the selected element in the view\nSee tooltip for connectObjects for details",after:""},{field:"addElementsToView",code:"addElementsToView(repositionToCursor?: boolean, save?: boolean, newElementsOnTop?: boolean,): Promise;",desc:"Adds elements from elementsDict to the current view\nrepositionToCursor: default is false\nsave: default is true\nnewElementsOnTop: default is false, i.e. the new elements get to the bottom of the stack\nnewElementsOnTop controls whether elements created with ExcalidrawAutomate are added at the bottom of the stack or the top of the stack of elements already in the view\nNote that elements copied to the view with copyViewElementsToEAforEditing retain their position in the stack of elements in the view even if modified using EA",after:""},{field:"onDropHook",code:'onDropHook(data: {ea: ExcalidrawAutomate, event: React.DragEvent, draggable: any, type: "file" | "text" | "unknown", payload: {files: TFile[], text: string,}, excalidrawFile: TFile, view: ExcalidrawView, pointerPosition: { x: number, y: number},}): boolean;',desc:"If set Excalidraw will call this function onDrop events.\nA return of true will stop the default onDrop processing in Excalidraw.\n\ndraggable is the Obsidian draggable object\nfiles is the array of dropped files\nexcalidrawFile is the file receiving the drop event\nview is the excalidraw view receiving the drop.\npointerPosition is the pointer position on canvas at the time of drop.",after:""},{field:"mostRecentMarkdownSVG",code:"mostRecentMarkdownSVG: SVGSVGElement;",desc:"Markdown renderer will drop a copy of the most recent SVG here for debugging purposes",after:""},{field:"getEmbeddedFilesLoader",code:"getEmbeddedFilesLoader(isDark?: boolean): EmbeddedFilesLoader;",desc:"Utility function to generate EmbeddedFilesLoader object",after:""},{field:"getExportSettings",code:"getExportSettings(withBackground: boolean, withTheme: boolean,): ExportSettings;",desc:"Utility function to generate ExportSettings object",after:""},{field:"getBoundingBox",code:"getBoundingBox(elements: ExcalidrawElement[]): {topX: number, topY: number, width: number, height: number,};",desc:"Gets the bounding box of elements. The bounding box is the box encapsulating all of the elements completely.",after:""},{field:"getMaximumGroups",code:"getMaximumGroups(elements: ExcalidrawElement[]): ExcalidrawElement[][];",desc:"Elements grouped by the highest level groups",after:""},{field:"getLargestElement",code:"getLargestElement(elements: ExcalidrawElement[]): ExcalidrawElement;",desc:"Gets the largest element from a group. useful when a text element is grouped with a box, and you want to connect an arrow to the box",after:""},{field:"intersectElementWithLine",code:"intersectElementWithLine(element: ExcalidrawBindableElement, a: readonly [number, number], b: readonly [number, number], gap?: number,): Point[];",desc:"If gap is given, the element is inflated by this value.\nReturns 2 or 0 intersection points between line going through `a` and `b` and the `element`, in ascending order of distance from `a`.",after:""},{field:"getCommonGroupForElements",code:"getCommonGroupForElements(elements: ExcalidrawElement[]): string;",desc:"Gets the groupId for the group that contains all the elements, or null if such a group does not exist",after:""},{field:"getElementsInTheSameGroupWithElement",code:"getElementsInTheSameGroupWithElement(element: ExcalidrawElement, elements: ExcalidrawElement[]): ExcalidrawElement[];",desc:"Gets all the elements from elements[] that share one or more groupIds with element.",after:""},{field:"activeScript",code:"activeScript: string;",desc:"Mandatory to set before calling the get and set ScriptSettings functions. Set automatically by the ScriptEngine\nSee for more details: Script Engine Help",after:""},{field:"getScriptSettings",code:"getScriptSettings(): {};",desc:"Returns script settings. Saves settings in plugin settings, under the activeScript key. See for more details: Script Engine Help",after:""},{field:"setScriptSettings",code:"setScriptSettings(settings: any): Promise;",desc:"Sets script settings.\nSee for more details: Script Engine Help",after:""},{field:"openFileInNewOrAdjacentLeaf",code:"openFileInNewOrAdjacentLeaf(file: TFile): WorkspaceLeaf;",desc:"Open a file in a new workspaceleaf or reuse an existing adjacent leaf depending on Excalidraw Plugin Settings",after:""},{field:"measureText",code:"measureText(text: string): { width: number; height: number };",desc:"Measures text size based on current style settings",after:""},{field:"verifyMinimumPluginVersion",code:"verifyMinimumPluginVersion(requiredVersion: string): boolean;",desc:'Returns true if plugin version is >= than required\nrecommended use:\nif(!ea.verifyMinimumPluginVersion || !ea.verifyMinimumPluginVersion("1.5.20")) {new Notice("message");return;}',after:""},{field:"selectElementsInView",code:"selectElementsInView(elements: ExcalidrawElement[]):void;",desc:"Elements provided will be set as selected in the targetView.",after:""},{field:"generateElementId",code:"generateElementId(): string;",desc:"Returns an 8 character long random id",after:""},{field:"cloneElement",code:"cloneElement(element: ExcalidrawElement): ExcalidrawElement;",desc:"Returns a clone of the element with a new element id",after:""},{field:"moveViewElementToZIndex",code:"moveViewElementToZIndex(elementId:number, newZIndex:number): void;",desc:"Moves the element to a specific position in the z-index",after:""},{field:"hexStringToRgb",code:"hexStringToRgb(color: string):number[];",desc:"Converts a HEX color to an RGB number array. #FF0000 to [255,0,0]",after:""},{field:"rgbToHexString",code:"rgbToHexString(color: number[]):string;",desc:"Converts an RGB number array to a HEX string. [255,0,0] to #FF0000",after:""},{field:"hslToRgb",code:"hslToRgb(color: number[]):number[];",desc:"Converts an HSL number array to an RGB number array. [0,100,50] to [255,0,0]",after:""},{field:"rgbToHsl",code:"rgbToHsl(color:number[]):number[];",desc:"Converts an RGB number array to an HSL number array. [255,0,0] to [0,100,50]",after:""},{field:"colorNameToHex",code:"colorNameToHex(color:string):string;",desc:"Converts a CSS color name to its HEX color equivalent. 'White' to #FFFFFF",after:""}],EXCALIDRAW_SCRIPTENGINE_INFO=[{field:"inputPrompt",code:"inputPrompt: (header: string, placeholder?: string, value?: string, buttons?: [{caption:string, action:Function}]);",desc:"Opens a prompt that asks for an input.\nReturns a string with the input.\nYou need to await the result of inputPrompt.\nbuttons.action(input: string) => string\nThe button action function will receive the actual input string. If action returns null, input will be unchanged. If action returns a string, input will receive that value when the promise is resolved. example:\nlet fileType = '';\nconst filename = await utils.inputPrompt (\n 'Filename',\n '',\n '',\n, [\n {\n caption: 'Markdown',\n action: ()=>{fileType='md';return;}\n },\n {\n caption: 'Excalidraw',\n action: ()=>{fileType='ex';return;}\n }\n ]\n);",after:""},{field:"suggester",code:"suggester: (displayItems: string[], items: any[], hint?: string, instructions?:Instruction[]);",desc:"Opens a suggester. Displays the displayItems and returns the corresponding item from items[]\nYou need to await the result of suggester.\nIf the user cancels (ESC), suggester will return undefined\nHint and instructions are optional\n\ninterface Instruction {command: string;purpose: string;}",after:""}],FRONTMATTER_KEYS_INFO=[{field:"plugin",code:null,desc:"Denotes an excalidraw file. If key is not present, the file will not be recognized as an Excalidarw file. Valid values are 'parsed' and 'raw'",after:": parsed"},{field:"link-prefix",code:null,desc:"Set custom prefix to denote text element containing a valid internal link. Set to empty string if you do not want to show a prefix",after:': "📍"'},{field:"url-prefix",code:null,desc:"Set custom prefix to denote text element containing a valid external link. Set to empty string if you do not want to show a prefix",after:': "🌐"'},{field:"link-brackets",code:null,desc:"Set to true, if you want to display [[square brackets]] around the links in Text Elements",after:": true"},{field:"default-mode",code:null,desc:"Specifies how Excalidraw should open by default. Valid values are: view|zen",after:": view"},{field:"linkbutton-opacity",code:null,desc:"The opacity of the blue link button in the top right of the element overriding the respective setting in plugin settings. Valid values are between 0 and 1, where 0 means the button is transparent.",after:": 0.5"},{field:"onload-script",code:null,desc:"The value of this field will be executed as javascript code using the Script Engine environment. Use this to initiate custom actions or logic when loading your drawing.",after:': "new Notice(`Hello World!\\n\\nFile: ${ea.targetView.file.basename}`);"'},{field:"font",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: Virgil|Cascadia|font_file_name.extension",after:": Virgil"},{field:"font-color",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: css-color-name|#HEXcolor|any-other-html-standard-format",after:": SteelBlue"},{field:"border-color",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: css-color-name|#HEXcolor|any-other-html-standard-format",after:": SteelBlue"},{field:"css",code:null,desc:'This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this front matter keys to your markdown document. Valid values are: "css-filename|css snippet"',after:': ""'},{field:"export-transparent",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. true == Transparent / false == with background",after:": true"},{field:"export-dark",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. true == Dark mode / false == light mode",after:": true"},{field:"export-padding",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. This only affects both SVG and PNG export. Specify the export padding for the image.",after:": 5"},{field:"export-pngscale",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. This only affects export to PNG. Specify the export scale for the image. The typical range is between 0.5 and 5, but you can experiment with other values as well.",after:": 1"},{field:"autoexport",code:null,desc:"Override autoexport settings for this file. Valid values are\nnone\nboth\npng\nsvg",after:": png"}];class FieldSuggester extends obsidian.EditorSuggest{constructor(A){super(A.app),this.getSuggestions=A=>{const e=A.query.toLowerCase();return("ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO).map((A=>A.field)).filter((A=>A.toLowerCase().includes(e)))},this.plugin=A}onTrigger(A,e,t){var i,n,a,r,s;if(this.plugin.settings.fieldSuggester){const t=e.getLine(A.line).substring(0,A.ch),o=null!==(r=null!==(n=null===(i=t.match(/^excalidraw-(.*)$/))||void 0===i?void 0:i[1])&&void 0!==n?n:null===(a=t.match(/(^ea|\Wea)\.([\w\.]*)$/))||void 0===a?void 0:a[2])&&void 0!==r?r:null===(s=t.match(/(^utils|\Wutils)\.([\w\.]*)$/))||void 0===s?void 0:s[2];if(void 0!==o)return this.suggestType=t.match(/^excalidraw-(.*)$/)?"excalidraw":t.match(/(^ea|\Wea)\.([\w\.]*)$/)?"ea":"utils",this.latestTriggerInfo={end:A,start:{ch:A.ch-o.length,line:A.line},query:o},this.latestTriggerInfo}return null}renderSuggestion(A,e){const t=A.replace("ea"===this.suggestType?"ea.":"utils"===this.suggestType?"utils.":"excalidraw-",""),i=("ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO).find((e=>e.field===A));e.createEl("b",{text:t}),e.createEl("br"),i.code&&e.createEl("code",{text:i.code}),i.desc&&e.createDiv("div",(A=>A.innerHTML=i.desc))}selectSuggestion(A){var e;const{context:t}=this;if(t){const i="ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO,n=`${A}${null===(e=i.find((e=>e.field===A)))||void 0===e?void 0:e.after}`;if(t.editor.replaceRange(n,this.latestTriggerInfo.start,this.latestTriggerInfo.end),this.latestTriggerInfo.start.ch===this.latestTriggerInfo.end.ch){const A=this.latestTriggerInfo.end;A.ch+=n.length,t.editor.setCursor(A)}}}}class ExcalidrawPlugin extends obsidian.Plugin{constructor(A,e){super(A,e),this.excalidrawFiles=new Set,this.excalidrawFileModes={},this._loaded=!1,this.activeExcalidrawView=null,this.lastActiveExcalidrawFilePath=null,this.hover={linkText:null,sourcePath:null},this.opencount=0,this.filesMaster=null,this.equationsMaster=null,this.mathjax=null,this.mathjaxDiv=null,this.mathjaxLoaderFinished=!1,this.fourthFontDef=VIRGIL_FONT,this.packageMap=new WeakMap,this.leafChangeTimeout=null,this.popScope=null,this.filesMaster=new Map,this.equationsMaster=new Map}getPackage(A){if(A===window)return{react:react,reactDOM:reactDOM,excalidrawLib:excalidrawLib};if(this.packageMap.has(A))return this.packageMap.get(A);const{react:e,reactDOM:t,excalidrawLib:i}=A.eval.call(A,`(function() {\n ${lzString.exports.decompressFromBase64(EXCALIDRAW_PACKAGES)};\n return {react:React,reactDOM:ReactDOM,excalidrawLib:ExcalidrawLib};\n })()`);return this.packageMap.set(A,{react:e,reactDOM:t,excalidrawLib:i}),{react:e,reactDOM:t,excalidrawLib:i}}async onload(){if(obsidian.addIcon(ICON_NAME,EXCALIDRAW_ICON),obsidian.addIcon("ScriptEngine",SCRIPTENGINE_ICON),obsidian.addIcon("disk",DISK_ICON),obsidian.addIcon("save-png",PNG_ICON),obsidian.addIcon("save-svg",SVG_ICON),await this.loadSettings({reEnableAutosave:!0}),this.addSettingTab(new ExcalidrawSettingTab(this.app,this)),this.ea=await initExcalidrawAutomate(this),this.registerView("excalidraw",(A=>new ExcalidrawView(A,this))),this.registerExtensions(["excalidraw"],"excalidraw"),this.addMarkdownPostProcessor(),this.registerInstallCodeblockProcessor(),this.addThemeObserver(),this.experimentalFileTypeDisplayToggle(this.settings.experimentalFileType),this.registerCommands(),this.registerEventListeners(),this.initializeFourthFont(),this.registerEditorSuggest(new FieldSuggester(this)),this.registerMonkeyPatches(),this.settings.showReleaseNotes){const A=this.settings.imageElementNotice;isVersionNewerThanOther(PLUGIN_VERSION,this.settings.previousRelease)&&new ReleaseNotes(this.app,this,A?null:PLUGIN_VERSION).open()}this.switchToExcalidarwAfterLoad(),this.loadMathJax();const A=this;this.app.workspace.onLayoutReady((()=>{this.scriptEngine=new ScriptEngine(A)}))}initializeFourthFont(){this.app.workspace.onLayoutReady((async()=>{const A=await getFontDataURL(this.app,this.settings.experimantalFourthFont,"","LocalFont"),e=""===A.dataURL?VIRGIL_DATAURL:A.dataURL;this.fourthFontDef=A.fontDef;const t=new Set;app.workspace.iterateAllLeaves((A=>{const i=app.isMobile?document:A.view.containerEl.ownerDocument;if(!i)return;if(t.has(i))return;t.add(i);const n=i.createElement("style");n.id="local-font-stylesheet",n.textContent=`\n @font-face {\n font-family: 'LocalFont';\n src: url("${e}");\n font-display: swap;\n }\n `;const a=i.getElementById(n.id);i.head.appendChild(n),a&&i.head.removeChild(a),i.fonts.load("20px LocalFont")}))}))}loadMathJax(){const A=this;this.app.workspace.onLayoutReady((async()=>{await obsidian.loadMathJax();try{A.mathjaxDiv&&(document.body.removeChild(A.mathjaxDiv),A.mathjax=null,A.mathjaxLoaderFinished=!1),A.mathjaxDiv=document.body.createDiv(),A.mathjaxDiv.title="Excalidraw MathJax Support",A.mathjaxDiv.style.display="none";const e=A.mathjaxDiv.createEl("iframe");e.title="Excalidraw MathJax Support";const t=e.contentWindow.document,i=t.createElement("script");i.type="text/javascript",i.onload=()=>{const t=e.contentWindow;t.MathJax.startup.pagePromise.then((async()=>{const e=app.vault.getAbstractFileByPath("preamble.sty"),i=e&&e instanceof obsidian.TFile?await app.vault.read(e):null;try{i&&await t.MathJax.tex2svg(i)}catch(e){errorlog({where:A.loadMathJax,description:"Unexpected error while loading preamble.sty",error:e})}A.mathjax=t.MathJax,A.mathjaxLoaderFinished=!0}))},i.src=A.settings.mathjaxSourceURL,t.head.appendChild(i)}catch(e){new obsidian.Notice("Excalidraw: Error initializing LaTeX support"),A.mathjaxLoaderFinished=!0}}))}switchToExcalidarwAfterLoad(){const A=this;this.app.workspace.onLayoutReady((()=>{let e;for(e of app.workspace.getLeavesOfType("markdown"))e.view instanceof obsidian.MarkdownView&&A.isExcalidrawFile(e.view.file)&&(A.excalidrawFileModes[e.id||e.view.file.path]="excalidraw",A.setExcalidrawView(e))}))}forceSaveActiveView(A){if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&((async()=>{e.semaphores.autosaving||(e.semaphores.forceSaving=!0,await e.save(!1,!0),e.plugin.triggerEmbedUpdates(),e.loadSceneFiles(),e.semaphores.forceSaving=!1,new obsidian.Notice("Save successful",1e3))})(),!0)}registerInstallCodeblockProcessor(){const A=async(A,e)=>{let t=null;try{const A=e.parentElement.querySelector(`a[href="#${e.previousElementSibling.getAttribute("data-heading")}"]`);A.style.paddingRight="10px",t=A.parentElement.createEl("button",null,(A=>{A.setText(t$d("UPDATE_SCRIPT")),A.addClass("mod-cta"),A.style.backgroundColor="var(--interactive-success)",A.style.display="none"}))}catch(e){errorlog({where:"this.registerInstallCodeblockProcessor",source:A,error:e})}A=A.trim(),e.createEl("button",null,(async e=>{const i=A=>{switch(t&&(t.style.display="none"),A){case"CHECKING":e.setText(t$d("CHECKING_SCRIPT")),e.style.backgroundColor="var(--interactive-normal)";break;case"INSTALL":e.setText(t$d("INSTALL_SCRIPT")),e.style.backgroundColor="var(--interactive-accent)";break;case"UPTODATE":e.setText(t$d("UPTODATE_SCRIPT")),e.style.backgroundColor="var(--interactive-normal)";break;case"UPDATE":e.setText(t$d("UPDATE_SCRIPT")),e.style.backgroundColor="var(--interactive-success)",t&&(t.style.display=null);break;case"ERROR":e.setText(t$d("UNABLETOCHECK_SCRIPT")),e.style.backgroundColor="var(--interactive-normal)"}};e.addClass("mod-cta");let n=A;try{n=decodeURI(A)}catch(e){errorlog({where:"ExcalidrawPlugin.registerInstallCodeblockProcessor.codeblockProcessor.onClick",source:A,error:e})}const a=n.substring(n.lastIndexOf("/")+1),r=`${this.settings.scriptFolderPath}/Downloaded`,s=`${r}/${a}`,o=getIMGFilename(s,"svg");let l=this.app.vault.getAbstractFileByPath(s),c=this.app.vault.getAbstractFileByPath(o);if(i(l?"CHECKING":"INSTALL"),e.onclick=async()=>{const e=async(A,e,t)=>{const i=await obsidian.request({url:A});return!i||i.startsWith("404: Not Found")?null:(e?await this.app.vault.modify(e,i):(await checkAndCreateFolder(r),e=await this.app.vault.create(t,i)),e)};try{if(l=await e(A,l,s),!l)throw i("ERROR"),"File not found";c=await e(getIMGFilename(A,"svg"),c,o),i("UPTODATE"),new obsidian.Notice(`Installed: ${l.basename}`)}catch(A){new obsidian.Notice(`Error installing script: ${a}`),errorlog({where:"ExcalidrawPlugin.registerInstallCodeblockProcessor.codeblockProcessor.onClick",error:A})}},t&&(t.onclick=e.onclick),!(l&&l instanceof obsidian.TFile))return;const d=new Map;JSON.parse(await obsidian.request({url:"https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/directory-info.json"})).forEach((A=>d.set(A.fname,A.mtime)));const h=(A,e)=>{if(0===d.size||!d.has(A))return"ERROR";const t=d.get(A);return!e||t>e.stat.mtime?"UPDATE":"UPTODATE"},g=h(a,l),u=h(getIMGFilename(a,"svg"),c&&c instanceof obsidian.TFile?c:null);i("UPTODATE"===g&&"UPTODATE"===u||"UPTODATE"===g&&"ERROR"===u?"UPTODATE":"ERROR"===g?"ERROR":"UPDATE"===g||"UPDATE"===u?"UPDATE":"UPTODATE")}))};this.registerMarkdownCodeBlockProcessor(SCRIPT_INSTALL_CODEBLOCK,(async(e,t)=>{t.addEventListener(RERENDER_EVENT,(async i=>{i.stopPropagation(),t.empty(),A(e,t)})),A(e,t)}))}addMarkdownPostProcessor(){initializeMarkdownPostProcessor(this),this.registerMarkdownPostProcessor(markdownPostProcessor),this.registerEvent(this.app.workspace.on("hover-link",hoverEvent)),this.observer=observer,this.observer.observe(document,{childList:!0,subtree:!0})}addThemeObserver(){this.themeObserver=new MutationObserver((async A=>{var e,t,i,n,a,r,s,o;if(!this.settings.matchThemeTrigger)return;if((null===(e=A[0])||void 0===e?void 0:e.oldValue)===(null===(i=null===(t=A[0])||void 0===t?void 0:t.target)||void 0===i?void 0:i.getAttribute("class")))return;if((null===(a=null===(n=A[0])||void 0===n?void 0:n.oldValue)||void 0===a?void 0:a.includes("theme-dark"))===(null===(o=null===(s=null===(r=A[0])||void 0===r?void 0:r.target)||void 0===s?void 0:s.classList)||void 0===o?void 0:o.contains("theme-dark")))return;const l=isObsidianThemeDark()?"dark":"light";this.app.workspace.getLeavesOfType("excalidraw").forEach((A=>{const e=A.view;e.file&&e.excalidrawRef&&e.setTheme(l)}))})),this.themeObserver.observe(document.body,{attributeOldValue:!0,attributeFilter:["class"]})}experimentalFileTypeDisplayToggle(A){A?this.experimentalFileTypeDisplay():(this.fileExplorerObserver&&this.fileExplorerObserver.disconnect(),this.fileExplorerObserver=null)}experimentalFileTypeDisplay(){const A=A=>{if(1!=A.childElementCount)return;const e=A.getAttribute("data-path");if(!e)return;const t=this.app.vault.getAbstractFileByPath(e);t&&t instanceof obsidian.TFile&&this.isExcalidrawFile(t)&&A.insertBefore(createDiv({cls:"nav-file-tag",text:this.settings.experimentalFileTag}),A.firstChild)};this.fileExplorerObserver=new MutationObserver((e=>{const t=e.filter((A=>A.addedNodes.length>0));t.forEach((e=>{e.addedNodes.forEach((e=>{e instanceof Element&&e.querySelectorAll(".nav-file-title").forEach(A)}))}))}));const e=this;this.app.workspace.onLayoutReady((()=>{document.querySelectorAll(".nav-file-title").forEach(A),e.fileExplorerObserver.observe(document.querySelector(".workspace"),{childList:!0,subtree:!0})}))}registerCommands(){this.openDialog=new OpenFileDialog(this.app,this),this.insertLinkDialog=new InsertLinkDialog(this.app),this.insertImageDialog=new InsertImageDialog(this),this.insertMDDialog=new InsertMDDialog(this),this.addRibbonIcon(ICON_NAME,t$d("CREATE_NEW"),(async A=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),A[CTRL_OR_CMD]?"new-pane":"active-pane")})),this.registerEvent(this.app.workspace.on("file-menu",((A,e)=>{A.addItem((A=>{A.setTitle(t$d("CREATE_NEW")).setIcon(ICON_NAME).onClick((()=>{let A=e.path;e instanceof obsidian.TFile&&(A=obsidian.normalizePath(e.path.substr(0,e.path.lastIndexOf(e.name)))),this.createAndOpenDrawing(getDrawingFilename(this.settings),"active-pane",A)}))}))}))),this.registerEvent(this.app.workspace.on("file-menu",((A,e)=>{e instanceof obsidian.TFile&&"excalidraw"==e.extension&&A.addItem((A=>{A.setTitle(t$d("CONVERT_FILE_KEEP_EXT")).onClick((()=>{this.convertSingleExcalidrawToMD(e,!1,!1)}))}))}))),this.registerEvent(this.app.workspace.on("file-menu",((A,e)=>{e instanceof obsidian.TFile&&"excalidraw"==e.extension&&A.addItem((A=>{A.setTitle(t$d("CONVERT_FILE_REPLACE_EXT")).onClick((()=>{this.convertSingleExcalidrawToMD(e,!0,!0)}))}))}))),this.addCommand({id:"excalidraw-disable-autosave",name:t$d("TEMPORARY_DISABLE_AUTOSAVE"),checkCallback:A=>!!this.settings.autosave&&(A||(this.settings.autosave=!1),!0)}),this.addCommand({id:"excalidraw-enable-autosave",name:t$d("TEMPORARY_ENABLE_AUTOSAVE"),checkCallback:A=>!this.settings.autosave&&(A||(this.settings.autosave=!0),!0)}),this.addCommand({id:"excalidraw-download-lib",name:t$d("DOWNLOAD_LIBRARY"),callback:this.exportLibrary}),this.addCommand({id:"excalidraw-open",name:t$d("OPEN_EXISTING_NEW_PANE"),callback:()=>{this.openDialog.start(openDialogAction.openFile,!0)}}),this.addCommand({id:"excalidraw-open-on-current",name:t$d("OPEN_EXISTING_ACTIVE_PANE"),callback:()=>{this.openDialog.start(openDialogAction.openFile,!1)}}),this.addCommand({id:"excalidraw-insert-transclusion",name:t$d("TRANSCLUDE"),checkCallback:A=>A?Boolean(this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)):(this.openDialog.start(openDialogAction.insertLinkToDrawing,!1),!0)}),this.addCommand({id:"excalidraw-insert-last-active-transclusion",name:t$d("TRANSCLUDE_MOST_RECENT"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(obsidian.MarkdownView))&&null!=this.lastActiveExcalidrawFilePath;const e=this.app.vault.getAbstractFileByPath(this.lastActiveExcalidrawFilePath);return e instanceof obsidian.TFile&&(this.embedDrawing(e),!0)}}),this.addCommand({id:"excalidraw-autocreate",name:t$d("NEW_IN_NEW_PANE"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"new-pane")}}),this.addCommand({id:"excalidraw-autocreate-on-current",name:t$d("NEW_IN_ACTIVE_PANE"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"active-pane")}}),this.addCommand({id:"excalidraw-autocreate-popout",name:t$d("NEW_IN_POPOUT_WINDOW"),checkCallback:A=>{if(A)return!app.isMobile;this.createAndOpenDrawing(getDrawingFilename(this.settings),"popout-window")}});const A=async A=>{const e=this.app.workspace.getActiveViewOfType(obsidian.MarkdownView);if(!e)return;const t=getEmbedFilename(e.file.basename,this.settings),i=this.settings.embedUseExcalidrawFolder?null:(await getAttachmentsFolderAndFilePath(this.app,e.file.path,t)).folder,n=await this.createDrawing(t,i);await this.embedDrawing(n),this.openDrawing(n,A,!0)};this.addCommand({id:"excalidraw-autocreate-and-embed",name:t$d("NEW_IN_NEW_PANE_EMBED"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)):(A("new-pane"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-on-current",name:t$d("NEW_IN_ACTIVE_PANE_EMBED"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)):(A("active-pane"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-popout",name:t$d("NEW_IN_POPOUT_WINDOW_EMBED"),checkCallback:e=>e?!app.isMobile&&Boolean(this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)):(A("popout-window"),!0)}),this.addCommand({id:"export-svg",name:t$d("EXPORT_SVG"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(e.saveSVG(),!0)}}),this.addCommand({id:"search-text",name:t$d("SEARCH"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(search(e),!0)}}),this.addCommand({id:"fullscreen",name:t$d("TOGGLE_FULLSCREEN"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(e.isFullscreen()?e.exitFullscreen():e.gotoFullscreen(),!0)}}),this.addCommand({id:"export-png",name:t$d("EXPORT_PNG"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(e.savePNG(),!0)}}),this.forceSaveCommand=this.addCommand({id:"save",hotkeys:[{modifiers:["Ctrl"],key:"s"}],name:t$d("FORCE_SAVE"),checkCallback:A=>this.forceSaveActiveView(A)}),this.addCommand({id:"toggle-lock",hotkeys:[{modifiers:["Ctrl","Shift"],key:"e"}],name:t$d("TOGGLE_LOCK"),checkCallback:A=>{if(A)return!!Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView))&&!this.app.workspace.getActiveViewOfType(ExcalidrawView).compatibilityMode;const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!(!e||e.compatibilityMode||(e.changeTextMode(e.textMode===TextMode.parsed?TextMode.raw:TextMode.parsed),0))}}),this.addCommand({id:"scriptengine-store",name:t$d("INSTALL_SCRIPT_BUTTON"),checkCallback:A=>A?Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView)):(new ScriptInstallPrompt(this).open(),!0)}),this.addCommand({id:"delete-file",name:t$d("DELETE_FILE"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(e){this.ea.reset(),this.ea.setView(e);const A=this.ea.getViewSelectedElement();if("image"!==A.type)return new obsidian.Notice("Please select an image or embedded markdown document",4e3),!0;const t=this.ea.getViewFileForImageElement(A);return t?(this.app.vault.delete(t),this.ea.deleteViewElements([A]),!0):(new obsidian.Notice("Please select an image or embedded markdown document",4e3),!0)}return!1}}),this.addCommand({id:"insert-link",hotkeys:[{modifiers:["Ctrl","Shift"],key:"k"}],name:t$d("INSERT_LINK"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(this.insertLinkDialog.start(e.file.path,e.addText),!0)}}),this.addCommand({id:"insert-link-to-element",hotkeys:[{modifiers:["Ctrl","Shift"],key:"k"}],name:t$d("INSERT_LINK_TO_ELEMENT_NORMAL"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(e.copyLinkToSelectedElementToClipboard(""),!0)}}),this.addCommand({id:"insert-link-to-element-group",name:t$d("INSERT_LINK_TO_ELEMENT_GROUP"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(e.copyLinkToSelectedElementToClipboard("group="),!0)}}),this.addCommand({id:"insert-link-to-element-area",name:t$d("INSERT_LINK_TO_ELEMENT_AREA"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(e.copyLinkToSelectedElementToClipboard("area="),!0)}}),this.addCommand({id:"toggle-lefthanded-mode",name:t$d("TOGGLE_LEFTHANDED_MODE"),checkCallback:A=>{if(A){if(this.app.workspace.getActiveViewOfType(ExcalidrawView)){const A=this.app.workspace.getActiveViewOfType(ExcalidrawView),e=null==A?void 0:A.excalidrawAPI;return!!e&&!!e.getAppState().trayModeEnabled}return!1}return this.app.workspace.getActiveViewOfType(ExcalidrawView),(async()=>{const A=this.settings.isLeftHanded;await this.loadSettings({applyLefthandedMode:!1}),this.settings.isLeftHanded=!A,this.saveSettings(),setLeftHandedMode(!A),setTimeout((()=>setLeftHandedMode(!A)))})(),!0}}),this.addCommand({id:"reset-image-to-100",name:t$d("RESET_IMG_TO_100"),checkCallback:A=>{const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!e)return!1;if(!e.excalidrawAPI)return!1;const t=e.getViewSelectedElements().filter((A=>"image"===A.type));if(1!==t.length)return A||new obsidian.Notice("Select a single image element and try again"),!1;const i=t[0];return e.excalidrawData.getFile(i.fileId)?!!A||void(async()=>{const A=new ExcalidrawAutomate(this,e),n=await A.getOriginalImageSize(i);if(n){A.copyViewElementsToEAforEditing(t);const e=A.getElement(i.id);e.width=n.width,e.height=n.height,A.addElementsToView(!1,!1,!1)}})():(A||new obsidian.Notice("Select a single image element and try again"),!1)}}),this.addCommand({id:"insert-image",name:t$d("INSERT_IMAGE"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(this.insertImageDialog.start(e),!0)}}),this.addCommand({id:"release-notes",name:t$d("READ_RELEASE_NOTES"),checkCallback:A=>A?Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView)):(new ReleaseNotes(this.app,this,PLUGIN_VERSION).open(),!0)}),this.addCommand({id:"tray-mode",name:t$d("TRAY_MODE"),checkCallback:A=>{if(A){const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!A||!A.excalidrawRef)return!1;const e=A.excalidrawAPI.getAppState();return!e.zenModeEnabled&&!e.viewModeEnabled}const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!(!e||!e.excalidrawAPI||(e.toggleTrayMode(),0))}}),this.addCommand({id:"insert-md",name:t$d("INSERT_MD"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(this.insertMDDialog.start(e),!0)}}),this.addCommand({id:"insert-LaTeX-symbol",name:t$d("INSERT_LATEX"),checkCallback:A=>{if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(insertLaTeXToView(e),!0)}}),this.addCommand({id:"toggle-excalidraw-view",name:t$d("TOGGLE_MODE"),checkCallback:A=>{const e=this.app.workspace.getActiveFile();if(!e)return!1;const t=this.isExcalidrawFile(e);if(A)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView))?!this.app.workspace.getActiveViewOfType(ExcalidrawView).compatibilityMode:t;const i=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(i){const A=i.leaf;return this.excalidrawFileModes[A.id||e.path]="markdown",void this.setMarkdownView(A)}const n=this.app.workspace.getActiveViewOfType(obsidian.MarkdownView);if(n&&t){const A=n.leaf;return this.excalidrawFileModes[A.id||e.path]="excalidraw",void this.setExcalidrawView(A)}}}),this.addCommand({id:"convert-to-excalidraw",name:t$d("CONVERT_NOTE_TO_EXCALIDRAW"),checkCallback:A=>{const e=this.app.workspace.getActiveFile(),t=this.app.workspace.getActiveViewOfType(obsidian.MarkdownView);if(!e||!t)return!1;const i=0===e.stat.size;if(A)return i;i&&(async()=>{await this.app.vault.modify(e,await this.getBlankDrawing()),this.setExcalidrawView(t.leaf)})()}}),this.addCommand({id:"convert-excalidraw",name:t$d("CONVERT_EXCALIDRAW"),checkCallback:A=>{if(A){const A=this.app.vault.getFiles().filter((A=>"excalidraw"==A.extension));return A.length>0}return this.convertExcalidrawToMD(),!0}})}async convertSingleExcalidrawToMD(A,e=!1,t=!1){const i=await this.app.vault.read(A),n=A.name.substring(0,A.name.lastIndexOf(".excalidraw"))+(e?".md":".excalidraw.md"),a=getNewUniqueFilepath(this.app.vault,n,obsidian.normalizePath(A.path.substring(0,A.path.lastIndexOf(A.name))));log(a);const r=await this.app.vault.create(a,FRONTMATTER+await this.exportSceneToMD(i));return this.settings.keepInSync&&EXPORT_TYPES.forEach((e=>{const t=A.path.substring(0,A.path.lastIndexOf(".excalidraw"))+e,i=this.app.vault.getAbstractFileByPath(obsidian.normalizePath(t));if(i&&i instanceof obsidian.TFile){const A=a.substring(0,a.lastIndexOf(".md"))+e;this.app.fileManager.renameFile(i,A)}})),t||this.app.vault.delete(A),r}async convertExcalidrawToMD(A=!1,e=!1){const t=this.app.vault.getFiles().filter((A=>"excalidraw"==A.extension));for(const i of t)this.convertSingleExcalidrawToMD(i,A,e);new obsidian.Notice(`Converted ${t.length} files.`)}registerMonkeyPatches(){this.registerEvent(app.workspace.on("editor-menu",((A,e,t)=>{if(!(t&&t instanceof obsidian.MarkdownView))return;const i=t.file,n=t.leaf;if(!t.file)return;const a=this.app.metadataCache.getFileCache(i);(null==a?void 0:a.frontmatter)&&a.frontmatter[FRONTMATTER_KEY]&&A.addItem((A=>A.setTitle(t$d("OPEN_AS_EXCALIDRAW")).setIcon(ICON_NAME).setSection("excalidraw").onClick((()=>{this.excalidrawFileModes[n.id||i.path]="excalidraw",this.setExcalidrawView(n)}))))}))),this.registerEvent(app.workspace.on("file-menu",((A,e,t,i)=>{if(!(i&&i.view instanceof obsidian.MarkdownView))return;if(!(e instanceof obsidian.TFile))return;const n=this.app.metadataCache.getFileCache(e);(null==n?void 0:n.frontmatter)&&n.frontmatter[FRONTMATTER_KEY]&&(A.addItem((A=>{A.setTitle(t$d("OPEN_AS_EXCALIDRAW")).setIcon(ICON_NAME).setSection("pane").onClick((()=>{this.excalidrawFileModes[i.id||e.path]="excalidraw",this.setExcalidrawView(i)}))})),A.items.unshift(A.items.pop()))})));const A=this;this.register(around(obsidian.WorkspaceLeaf.prototype,{detach:e=>function(){var t;const i=null===(t=this.view)||void 0===t?void 0:t.getState();return(null==i?void 0:i.file)&&A.excalidrawFileModes[this.id||i.file]&&delete A.excalidrawFileModes[this.id||i.file],e.apply(this)},setViewState:e=>function(t,...i){var n;if(A._loaded&&"markdown"===t.type&&(null===(n=t.state)||void 0===n?void 0:n.file)&&"markdown"!==A.excalidrawFileModes[this.id||t.state.file]){const n=app.metadataCache.getCache(t.state.file);if((null==n?void 0:n.frontmatter)&&n.frontmatter[FRONTMATTER_KEY]){const n=Object.assign(Object.assign({},t),{type:"excalidraw"});return A.excalidrawFileModes[t.state.file]="excalidraw",e.apply(this,[n,...i])}}return e.apply(this,[t,...i])}}))}registerEventListeners(){const A=this;this.app.workspace.onLayoutReady((async()=>{A.registerEvent(app.vault.on("rename",(async(e,t)=>{e instanceof obsidian.TFile&&A.isExcalidrawFile(e)&&A.settings.keepInSync&&[EXPORT_TYPES,"excalidraw"].flat().forEach((async A=>{const i=getIMGFilename(t,A),n=app.vault.getAbstractFileByPath(obsidian.normalizePath(i));if(n&&n instanceof obsidian.TFile){const t=getIMGFilename(e.path,A);await app.fileManager.renameFile(n,t)}}))}))),A.registerEvent(app.vault.on("modify",(async e=>{app.workspace.getLeavesOfType("excalidraw").forEach((async t=>{const i=t.view;if(i.file&&(i.file.path===e.path||"excalidraw"===e.extension&&`${e.path.substring(0,e.path.lastIndexOf(".excalidraw"))}.md`===i.file.path)){if(i.semaphores.preventReload)return void(i.semaphores.preventReload=!1);if(i.lastSaveTimestamp+3e5{if(!(e instanceof obsidian.TFile))return;const t=this.excalidrawFiles.has(e);if(this.updateFileCache(e,void 0,!0),!t)return;const i=app.workspace.getLeavesOfType("excalidraw");for(let A=0;A{[EXPORT_TYPES,"excalidraw"].flat().forEach((async A=>{const t=getIMGFilename(e.path,A),i=app.vault.getAbstractFileByPath(obsidian.normalizePath(t));i&&i instanceof obsidian.TFile&&await app.vault.delete(i)}))}),500)}))),A.registerEvent(app.workspace.on("active-leaf-change",(async e=>{var t;A.leafChangeTimeout&&clearTimeout(A.leafChangeTimeout),A.leafChangeTimeout=setTimeout((()=>{A.leafChangeTimeout=null}),1e3);const i=A.activeExcalidrawView,n=e.view instanceof ExcalidrawView?e.view:null; +//!Temporary hack +if(A.activeExcalidrawView=n,n&&(A.lastActiveExcalidrawFilePath=null===(t=n.file)||void 0===t?void 0:t.path),app.isMobile&&n&&!i){const A=document.querySelector("body>.app-container>.mobile-navbar");A&&A instanceof HTMLDivElement&&(A.style.position="relative")}if(app.isMobile&&!n&&i){const A=document.querySelector("body>.app-container>.mobile-navbar");A&&A instanceof HTMLDivElement&&(A.style.position="")}if(i&&i!==n&&(i.leaf!==e&&i.semaphores.dirty&&await i.save(!0),i.file&&A.triggerEmbedUpdates(i.file.path)),n&&(!i||i.leaf!==e)){const A=n.file;n.file&&setTimeout((()=>{var e;n&&n._loaded&&(null===(e=n.file)||void 0===e?void 0:e.path)===(null==A?void 0:A.path)&&(n.activeLoader||n.loadSceneFiles())}),2e3)}if(n&&n._loaded&&n.isLoaded&&n.excalidrawAPI&&A.ea.onCanvasColorChangeHook&&A.ea.onCanvasColorChangeHook(A.ea,n,n.excalidrawAPI.getAppState().viewBackgroundColor),A.popScope&&(A.popScope(),A.popScope=null),n){const e=A.app.keymap.getRootScope(),t=e.register(["Mod"],"Enter",(()=>!0)),i=A.forceSaveCommand&&"s"===A.forceSaveCommand.hotkeys[0].key&&A.forceSaveCommand.hotkeys[0].modifiers.includes("Ctrl")?e.register(["Ctrl"],"s",(()=>A.forceSaveActiveView(!1))):void 0;e.keys.unshift(e.keys.pop()),A.popScope=()=>{e.unregister(t),Boolean(i)&&e.unregister(i)}}}))),A.addFileSaveTriggerEventHandlers();const e=app.metadataCache;e.getCachedFiles().forEach((t=>{var i;const n=null===(i=e.getCache(t))||void 0===i?void 0:i.frontmatter;(n&&void 0!==n[FRONTMATTER_KEY]||t.match(/\.excalidraw$/))&&A.updateFileCache(app.vault.getAbstractFileByPath(t),n)})),this.registerEvent(e.on("changed",((A,e,t)=>this.updateFileCache(A,null==t?void 0:t.frontmatter))))}))}addFileSaveTriggerEventHandlers(){this.registerEvent(this.app.workspace.on("click",(A=>{this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&(!A.target||"excalidraw__canvas"!==A.target.className&&!getParentOfClass(A.target,"excalidraw-wrapper"))&&this.activeExcalidrawView.save()}))),this.registerEvent(this.app.workspace.on("file-menu",(()=>{this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()}))),this.modalContainerObserver=new MutationObserver((async A=>{1===A.length&&"childList"===A[0].type&&1===A[0].addedNodes.length&&this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()})),this.modalContainerObserver.observe(document.body,{childList:!0});const A=document.querySelector(".workspace-drawer.mod-left"),e=document.querySelector(".workspace-drawer.mod-right");if(A||e){const t=async A=>{"display: none;"===A[0].oldValue&&this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()},i={attributeOldValue:!0,attributeFilter:["style"]};A&&(this.workspaceDrawerLeftObserver=new MutationObserver(t),this.workspaceDrawerLeftObserver.observe(A,i)),e&&(this.workspaceDrawerRightObserver=new MutationObserver(t),this.workspaceDrawerRightObserver.observe(e,i))}}updateFileCache(A,e,t=!1){e&&void 0!==e[FRONTMATTER_KEY]?this.excalidrawFiles.add(A):t||"excalidraw"!==A.extension?this.excalidrawFiles.delete(A):this.excalidrawFiles.add(A)}onunload(){destroyExcalidrawAutomate(),this.popScope&&(this.popScope(),this.popScope=null),this.observer.disconnect(),this.themeObserver.disconnect(),this.modalContainerObserver.disconnect(),this.workspaceDrawerLeftObserver&&this.workspaceDrawerLeftObserver.disconnect(),this.workspaceDrawerRightObserver&&this.workspaceDrawerRightObserver.disconnect(),this.fileExplorerObserver&&this.fileExplorerObserver.disconnect(),this.app.workspace.getLeavesOfType("excalidraw").forEach((A=>{this.setMarkdownView(A)})),this.mathjaxDiv&&document.body.removeChild(this.mathjaxDiv),Object.values(this.packageMap).forEach((A=>{delete A.excalidrawLib,delete A.reactDOM,delete A.react}))}async embedDrawing(A){const e=this.app.workspace.getActiveViewOfType(obsidian.MarkdownView);if(e&&e.file){const t=this.app.metadataCache.fileToLinktext(A,e.file.path,"excalidraw"===this.settings.embedType),i=e.editor;if("excalidraw"===this.settings.embedType)return i.replaceSelection(this.settings.embedWikiLink?`![[${t}]]`:`![](${encodeURI(t)})`),void i.focus();let n=this.settings.autoExportLightAndDark?getExportTheme(this,A,this.settings.exportWithTheme&&isObsidianThemeDark()?"dark":"light"):"";n=""===n?"":n+".";const a=getIMGFilename(t,n+this.settings.embedType.toLowerCase()),r=getIMGFilename(A.path,n+this.settings.embedType.toLowerCase()),s="dark."===n?"light.":"dark.",o=getIMGFilename(t,s+this.settings.embedType.toLowerCase());this.app.vault.getAbstractFileByPath(r)||(await this.app.vault.create(r,""),await sleep$1(200)),i.replaceSelection(this.settings.embedWikiLink?`![[${a}]]\n%%[[${t}|🖋 Edit in Excalidraw]]${o?", and the [["+o+"|"+s.split(".")[0]+" exported image]]":""}%%`:`![](${encodeURI(a)})\n%%[🖋 Edit in Excalidraw](${encodeURI(t)})${o?", and the ["+s.split(".")[0]+" exported image]("+encodeURI(o)+")":""}%%`),i.focus()}}async loadSettings(A={applyLefthandedMode:!0,reEnableAutosave:!1}){void 0===A.applyLefthandedMode&&(A.applyLefthandedMode=!0),void 0===A.reEnableAutosave&&(A.reEnableAutosave=!1),this.settings=Object.assign({},DEFAULT_SETTINGS,await this.loadData()),A.applyLefthandedMode&&setLeftHandedMode(this.settings.isLeftHanded),A.reEnableAutosave&&(this.settings.autosave=!0),this.settings.autosaveInterval=app.isMobile?1e4:15e3}async saveSettings(){await this.saveData(this.settings)}getStencilLibrary(){return""===this.settings.library||"deprecated"===this.settings.library?this.settings.library2:JSON_parse(this.settings.library)}setStencilLibrary(A){this.settings.library="deprecated",this.settings.library2=A}triggerEmbedUpdates(A){const e=new Set;app.workspace.iterateAllLeaves((t=>{const i=app.isMobile?document:t.view.containerEl.ownerDocument;if(!i)return;if(e.has(i))return;e.add(i);const n=i.createEvent("Event");n.initEvent(RERENDER_EVENT,!0,!1),i.querySelectorAll("div[class^='excalidraw-svg']"+(A?`[src='${A.replaceAll("'","\\'")}']`:"")).forEach((A=>A.dispatchEvent(n)))}))}openDrawing(A,e,t=!1,i){let n;"popout-window"===e?n=app.workspace.openPopoutLeaf():(n=this.app.workspace.getLeaf(!1),"empty"!==n.view.getViewType()&&"new-pane"===e&&(n=getNewOrAdjacentLeaf(this,n))),n.openFile(A,i&&""!==i?{active:t,eState:{subpath:i}}:{active:t})}async getBlankDrawing(){const A=this.app.metadataCache.getFirstLinkpathDest(obsidian.normalizePath(this.settings.templateFilePath),"");if(A&&A instanceof obsidian.TFile&&("md"==A.extension&&!this.settings.compatibilityMode||"excalidraw"==A.extension&&this.settings.compatibilityMode)){const e=await this.app.vault.read(A);if(e)return this.settings.matchTheme?changeThemeOfExcalidrawMD(e):e}if(this.settings.compatibilityMode)return this.settings.matchTheme&&isObsidianThemeDark()?DARK_BLANK_DRAWING:BLANK_DRAWING;const e=this.settings.matchTheme&&isObsidianThemeDark()?DARK_BLANK_DRAWING:BLANK_DRAWING;return`${FRONTMATTER}\n${getMarkdownDrawingSection(e,this.settings.compress)}`}async exportSceneToMD(A){var e,t;if(!A)return"";const i=null===(e=JSON_parse(A).elements)||void 0===e?void 0:e.filter((A=>"text"==A.type));let n,a="# Text Elements\n";for(const e of i)n=e.id,e.id.length>8&&(n=nanoid(),A=A.replaceAll(e.id,n)),a+=`${null!==(t=e.originalText)&&void 0!==t?t:e.text} ^${n}\n\n`;return a+getMarkdownDrawingSection(JSON.stringify(JSON_parse(A),null,"\t"),this.settings.compress)}async createDrawing(A,e,t){const i=obsidian.normalizePath(e||this.settings.folder);await checkAndCreateFolder(i);const n=getNewUniqueFilepath(this.app.vault,A,i),a=await this.app.vault.create(n,null!=t?t:await this.getBlankDrawing());let r=0;for(;a instanceof obsidian.TFile&&!this.isExcalidrawFile(a)&&r++<10;)await sleep$1(50);return r>10&&errorlog({file:a,error:"new drawing not recognized as an excalidraw file",fn:this.createDrawing}),a}async createAndOpenDrawing(A,e,t,i){const n=await this.createDrawing(A,t,i);return this.openDrawing(n,e,!0),n.path}async setMarkdownView(A){const e=A.view.getState();await A.setViewState({type:"excalidraw",state:{file:null}}),await A.setViewState({type:"markdown",state:e,popstate:!0},{focus:!0})}async setExcalidrawView(A){await A.setViewState({type:"excalidraw",state:A.view.getState(),popstate:!0})}isExcalidrawFile(A){if("excalidraw"==A.extension)return!0;const e=A?this.app.metadataCache.getFileCache(A):null;return!!(null==e?void 0:e.frontmatter)&&!!e.frontmatter[FRONTMATTER_KEY]}async exportLibrary(){this.app.isMobile?new Prompt(this.app,"Please provide a filename","my-library","filename, leave blank to cancel action").openAndGetValue((async A=>{if(!A)return;A=`${A}.excalidrawlib`;const e=obsidian.normalizePath(this.settings.folder);await checkAndCreateFolder(e);const t=getNewUniqueFilepath(this.app.vault,A,e);this.app.vault.create(t,this.settings.library),new obsidian.Notice(`Exported library to ${t}`,6e3)})):download("data:text/plain;charset=utf-8",encodeURIComponent(JSON.stringify(this.settings.library2,null,"\t")),"my-obsidian-library.excalidrawlib")}}module.exports=ExcalidrawPlugin; diff --git a/notes/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json b/notes/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json index 67fbdc6..794b3cb 100644 --- a/notes/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json +++ b/notes/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-excalidraw-plugin", "name": "Excalidraw", - "version": "1.7.20", + "version": "1.7.26", "minAppVersion": "0.15.6", "description": "An Obsidian plugin to edit and view Excalidraw drawings", "author": "Zsolt Viczian", diff --git a/notes/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css b/notes/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css index 56e28b4..12defc8 100644 --- a/notes/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css +++ b/notes/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css @@ -217,6 +217,14 @@ li[data-testid] { } textarea.excalidraw-wysiwyg { - border-color: transparent !important; - border-radius: 0 !important; + border: none; + outline: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + border-radius: 0; +} + +.is-tablet .excalidraw button { + padding: initial; } \ No newline at end of file diff --git a/notes/.obsidian/plugins/obsidian-git/main.js b/notes/.obsidian/plugins/obsidian-git/main.js index 5c45566..0990c5b 100644 --- a/notes/.obsidian/plugins/obsidian-git/main.js +++ b/notes/.obsidian/plugins/obsidian-git/main.js @@ -18665,7 +18665,7 @@ var index = { var isomorphic_git_default = index; // src/main.ts -var import_obsidian22 = __toModule(require("obsidian")); +var import_obsidian23 = __toModule(require("obsidian")); // src/promiseQueue.ts init_polyfill_buffer(); @@ -18695,6 +18695,496 @@ var import_obsidian7 = __toModule(require("obsidian")); // src/isomorphicGit.ts init_polyfill_buffer(); + +// node_modules/diff/lib/index.mjs +init_polyfill_buffer(); +function Diff() { +} +Diff.prototype = { + diff: function diff(oldString, newString) { + var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + var callback = options.callback; + if (typeof options === "function") { + callback = options; + options = {}; + } + this.options = options; + var self3 = this; + function done(value) { + if (callback) { + setTimeout(function() { + callback(void 0, value); + }, 0); + return true; + } else { + return value; + } + } + oldString = this.castInput(oldString); + newString = this.castInput(newString); + oldString = this.removeEmpty(this.tokenize(oldString)); + newString = this.removeEmpty(this.tokenize(newString)); + var newLen = newString.length, oldLen = oldString.length; + var editLength = 1; + var maxEditLength = newLen + oldLen; + if (options.maxEditLength) { + maxEditLength = Math.min(maxEditLength, options.maxEditLength); + } + var bestPath = [{ + newPos: -1, + components: [] + }]; + var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); + if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + return done([{ + value: this.join(newString), + count: newString.length + }]); + } + function execEditLength() { + for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { + var basePath = void 0; + var addPath = bestPath[diagonalPath - 1], removePath = bestPath[diagonalPath + 1], _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; + if (addPath) { + bestPath[diagonalPath - 1] = void 0; + } + var canAdd = addPath && addPath.newPos + 1 < newLen, canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen; + if (!canAdd && !canRemove) { + bestPath[diagonalPath] = void 0; + continue; + } + if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { + basePath = clonePath(removePath); + self3.pushComponent(basePath.components, void 0, true); + } else { + basePath = addPath; + basePath.newPos++; + self3.pushComponent(basePath.components, true, void 0); + } + _oldPos = self3.extractCommon(basePath, newString, oldString, diagonalPath); + if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) { + return done(buildValues(self3, basePath.components, newString, oldString, self3.useLongestToken)); + } else { + bestPath[diagonalPath] = basePath; + } + } + editLength++; + } + if (callback) { + (function exec() { + setTimeout(function() { + if (editLength > maxEditLength) { + return callback(); + } + if (!execEditLength()) { + exec(); + } + }, 0); + })(); + } else { + while (editLength <= maxEditLength) { + var ret = execEditLength(); + if (ret) { + return ret; + } + } + } + }, + pushComponent: function pushComponent(components, added, removed) { + var last2 = components[components.length - 1]; + if (last2 && last2.added === added && last2.removed === removed) { + components[components.length - 1] = { + count: last2.count + 1, + added, + removed + }; + } else { + components.push({ + count: 1, + added, + removed + }); + } + }, + extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) { + var newLen = newString.length, oldLen = oldString.length, newPos = basePath.newPos, oldPos = newPos - diagonalPath, commonCount = 0; + while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { + newPos++; + oldPos++; + commonCount++; + } + if (commonCount) { + basePath.components.push({ + count: commonCount + }); + } + basePath.newPos = newPos; + return oldPos; + }, + equals: function equals(left, right) { + if (this.options.comparator) { + return this.options.comparator(left, right); + } else { + return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase(); + } + }, + removeEmpty: function removeEmpty(array) { + var ret = []; + for (var i = 0; i < array.length; i++) { + if (array[i]) { + ret.push(array[i]); + } + } + return ret; + }, + castInput: function castInput(value) { + return value; + }, + tokenize: function tokenize(value) { + return value.split(""); + }, + join: function join2(chars) { + return chars.join(""); + } +}; +function buildValues(diff2, components, newString, oldString, useLongestToken) { + var componentPos = 0, componentLen = components.length, newPos = 0, oldPos = 0; + for (; componentPos < componentLen; componentPos++) { + var component = components[componentPos]; + if (!component.removed) { + if (!component.added && useLongestToken) { + var value = newString.slice(newPos, newPos + component.count); + value = value.map(function(value2, i) { + var oldValue = oldString[oldPos + i]; + return oldValue.length > value2.length ? oldValue : value2; + }); + component.value = diff2.join(value); + } else { + component.value = diff2.join(newString.slice(newPos, newPos + component.count)); + } + newPos += component.count; + if (!component.added) { + oldPos += component.count; + } + } else { + component.value = diff2.join(oldString.slice(oldPos, oldPos + component.count)); + oldPos += component.count; + if (componentPos && components[componentPos - 1].added) { + var tmp = components[componentPos - 1]; + components[componentPos - 1] = components[componentPos]; + components[componentPos] = tmp; + } + } + } + var lastComponent = components[componentLen - 1]; + if (componentLen > 1 && typeof lastComponent.value === "string" && (lastComponent.added || lastComponent.removed) && diff2.equals("", lastComponent.value)) { + components[componentLen - 2].value += lastComponent.value; + components.pop(); + } + return components; +} +function clonePath(path2) { + return { + newPos: path2.newPos, + components: path2.components.slice(0) + }; +} +var characterDiff = new Diff(); +function diffChars(oldStr, newStr, options) { + return characterDiff.diff(oldStr, newStr, options); +} +var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/; +var reWhitespace = /\S/; +var wordDiff = new Diff(); +wordDiff.equals = function(left, right) { + if (this.options.ignoreCase) { + left = left.toLowerCase(); + right = right.toLowerCase(); + } + return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right); +}; +wordDiff.tokenize = function(value) { + var tokens = value.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/); + for (var i = 0; i < tokens.length - 1; i++) { + if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) { + tokens[i] += tokens[i + 2]; + tokens.splice(i + 1, 2); + i--; + } + } + return tokens; +}; +function diffWordsWithSpace(oldStr, newStr, options) { + return wordDiff.diff(oldStr, newStr, options); +} +var lineDiff = new Diff(); +lineDiff.tokenize = function(value) { + var retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/); + if (!linesAndNewlines[linesAndNewlines.length - 1]) { + linesAndNewlines.pop(); + } + for (var i = 0; i < linesAndNewlines.length; i++) { + var line = linesAndNewlines[i]; + if (i % 2 && !this.options.newlineIsToken) { + retLines[retLines.length - 1] += line; + } else { + if (this.options.ignoreWhitespace) { + line = line.trim(); + } + retLines.push(line); + } + } + return retLines; +}; +function diffLines(oldStr, newStr, callback) { + return lineDiff.diff(oldStr, newStr, callback); +} +var sentenceDiff = new Diff(); +sentenceDiff.tokenize = function(value) { + return value.split(/(\S.+?[.!?])(?=\s+|$)/); +}; +var cssDiff = new Diff(); +cssDiff.tokenize = function(value) { + return value.split(/([{}:;,]|\s+)/); +}; +function _typeof(obj) { + "@babel/helpers - typeof"; + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function(obj2) { + return typeof obj2; + }; + } else { + _typeof = function(obj2) { + return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; + }; + } + return _typeof(obj); +} +function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); +} +function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) + return _arrayLikeToArray(arr); +} +function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) + return Array.from(iter); +} +function _unsupportedIterableToArray(o, minLen) { + if (!o) + return; + if (typeof o === "string") + return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) + n = o.constructor.name; + if (n === "Map" || n === "Set") + return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) + return _arrayLikeToArray(o, minLen); +} +function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) + len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) + arr2[i] = arr[i]; + return arr2; +} +function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} +var objectPrototypeToString = Object.prototype.toString; +var jsonDiff = new Diff(); +jsonDiff.useLongestToken = true; +jsonDiff.tokenize = lineDiff.tokenize; +jsonDiff.castInput = function(value) { + var _this$options = this.options, undefinedReplacement = _this$options.undefinedReplacement, _this$options$stringi = _this$options.stringifyReplacer, stringifyReplacer = _this$options$stringi === void 0 ? function(k, v) { + return typeof v === "undefined" ? undefinedReplacement : v; + } : _this$options$stringi; + return typeof value === "string" ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, " "); +}; +jsonDiff.equals = function(left, right) { + return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, "$1"), right.replace(/,([\r\n])/g, "$1")); +}; +function canonicalize(obj, stack, replacementStack, replacer, key2) { + stack = stack || []; + replacementStack = replacementStack || []; + if (replacer) { + obj = replacer(key2, obj); + } + var i; + for (i = 0; i < stack.length; i += 1) { + if (stack[i] === obj) { + return replacementStack[i]; + } + } + var canonicalizedObj; + if (objectPrototypeToString.call(obj) === "[object Array]") { + stack.push(obj); + canonicalizedObj = new Array(obj.length); + replacementStack.push(canonicalizedObj); + for (i = 0; i < obj.length; i += 1) { + canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key2); + } + stack.pop(); + replacementStack.pop(); + return canonicalizedObj; + } + if (obj && obj.toJSON) { + obj = obj.toJSON(); + } + if (_typeof(obj) === "object" && obj !== null) { + stack.push(obj); + canonicalizedObj = {}; + replacementStack.push(canonicalizedObj); + var sortedKeys = [], _key; + for (_key in obj) { + if (obj.hasOwnProperty(_key)) { + sortedKeys.push(_key); + } + } + sortedKeys.sort(); + for (i = 0; i < sortedKeys.length; i += 1) { + _key = sortedKeys[i]; + canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key); + } + stack.pop(); + replacementStack.pop(); + } else { + canonicalizedObj = obj; + } + return canonicalizedObj; +} +var arrayDiff = new Diff(); +arrayDiff.tokenize = function(value) { + return value.slice(); +}; +arrayDiff.join = arrayDiff.removeEmpty = function(value) { + return value; +}; +function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { + if (!options) { + options = {}; + } + if (typeof options.context === "undefined") { + options.context = 4; + } + var diff2 = diffLines(oldStr, newStr, options); + if (!diff2) { + return; + } + diff2.push({ + value: "", + lines: [] + }); + function contextLines(lines) { + return lines.map(function(entry) { + return " " + entry; + }); + } + var hunks = []; + var oldRangeStart = 0, newRangeStart = 0, curRange = [], oldLine = 1, newLine = 1; + var _loop = function _loop2(i2) { + var current = diff2[i2], lines = current.lines || current.value.replace(/\n$/, "").split("\n"); + current.lines = lines; + if (current.added || current.removed) { + var _curRange; + if (!oldRangeStart) { + var prev = diff2[i2 - 1]; + oldRangeStart = oldLine; + newRangeStart = newLine; + if (prev) { + curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : []; + oldRangeStart -= curRange.length; + newRangeStart -= curRange.length; + } + } + (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function(entry) { + return (current.added ? "+" : "-") + entry; + }))); + if (current.added) { + newLine += lines.length; + } else { + oldLine += lines.length; + } + } else { + if (oldRangeStart) { + if (lines.length <= options.context * 2 && i2 < diff2.length - 2) { + var _curRange2; + (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines))); + } else { + var _curRange3; + var contextSize = Math.min(lines.length, options.context); + (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize)))); + var hunk = { + oldStart: oldRangeStart, + oldLines: oldLine - oldRangeStart + contextSize, + newStart: newRangeStart, + newLines: newLine - newRangeStart + contextSize, + lines: curRange + }; + if (i2 >= diff2.length - 2 && lines.length <= options.context) { + var oldEOFNewline = /\n$/.test(oldStr); + var newEOFNewline = /\n$/.test(newStr); + var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines; + if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) { + curRange.splice(hunk.oldLines, 0, "\\ No newline at end of file"); + } + if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) { + curRange.push("\\ No newline at end of file"); + } + } + hunks.push(hunk); + oldRangeStart = 0; + newRangeStart = 0; + curRange = []; + } + } + oldLine += lines.length; + newLine += lines.length; + } + }; + for (var i = 0; i < diff2.length; i++) { + _loop(i); + } + return { + oldFileName, + newFileName, + oldHeader, + newHeader, + hunks + }; +} +function formatPatch(diff2) { + var ret = []; + if (diff2.oldFileName == diff2.newFileName) { + ret.push("Index: " + diff2.oldFileName); + } + ret.push("==================================================================="); + ret.push("--- " + diff2.oldFileName + (typeof diff2.oldHeader === "undefined" ? "" : " " + diff2.oldHeader)); + ret.push("+++ " + diff2.newFileName + (typeof diff2.newHeader === "undefined" ? "" : " " + diff2.newHeader)); + for (var i = 0; i < diff2.hunks.length; i++) { + var hunk = diff2.hunks[i]; + if (hunk.oldLines === 0) { + hunk.oldStart -= 1; + } + if (hunk.newLines === 0) { + hunk.newStart -= 1; + } + ret.push("@@ -" + hunk.oldStart + "," + hunk.oldLines + " +" + hunk.newStart + "," + hunk.newLines + " @@"); + ret.push.apply(ret, hunk.lines); + } + return ret.join("\n") + "\n"; +} +function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { + return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options)); +} +function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) { + return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options); +} + +// src/isomorphicGit.ts var import_obsidian5 = __toModule(require("obsidian")); // src/gitManager.ts @@ -18714,8 +19204,8 @@ var GitManager = class { getPath(path2, relativeToVault) { return relativeToVault && this.plugin.settings.basePath.length > 0 ? path2.substring(this.plugin.settings.basePath.length + 1) : path2; } - getTreeStructure(children2, beginLength = 0) { - let list = []; + _getTreeStructure(children2, beginLength = 0) { + const list = []; children2 = [...children2]; while (children2.length > 0) { const first2 = children2.first(); @@ -18726,22 +19216,71 @@ var GitManager = class { return item.path.substring(beginLength).startsWith(title + "/"); }); childrenWithSameTitle.forEach((item) => children2.remove(item)); + const path2 = first2.path.substring(0, restPath.indexOf("/") + beginLength); list.push({ title, - children: this.getTreeStructure(childrenWithSameTitle, (beginLength > 0 ? beginLength + title.length : title.length) + 1) + path: path2, + vaultPath: this.getVaultPath(path2), + children: this._getTreeStructure(childrenWithSameTitle, (beginLength > 0 ? beginLength + title.length : title.length) + 1) }); } else { - list.push({ title: restPath, statusResult: first2 }); + list.push({ + title: restPath, + statusResult: first2, + path: first2.path, + vaultPath: this.getVaultPath(first2.path) + }); children2.remove(first2); } } return list; } + simplify(tree) { + var _a2, _b, _c, _d; + for (const node of tree) { + while (true) { + const singleChild = ((_a2 = node.children) == null ? void 0 : _a2.length) == 1; + const singleChildIsDir = ((_c = (_b = node.children) == null ? void 0 : _b.first()) == null ? void 0 : _c.statusResult) == void 0; + if (!(node.children != void 0 && singleChild && singleChildIsDir)) + break; + const child = node.children.first(); + node.title += "/" + child.title; + node.statusResult = child.statusResult; + node.path = child.path; + node.vaultPath = child.vaultPath; + node.children = child.children; + } + if (node.children != void 0) { + this.simplify(node.children); + } + (_d = node.children) == null ? void 0 : _d.sort((a, b) => { + const dirCompare = (b.statusResult == void 0 ? 1 : 0) - (a.statusResult == void 0 ? 1 : 0); + if (dirCompare != 0) { + return dirCompare; + } else { + return a.title.localeCompare(b.title); + } + }); + } + return tree.sort((a, b) => { + const dirCompare = (b.statusResult == void 0 ? 1 : 0) - (a.statusResult == void 0 ? 1 : 0); + if (dirCompare != 0) { + return dirCompare; + } else { + return a.title.localeCompare(b.title); + } + }); + } + getTreeStructure(children2) { + const tree = this._getTreeStructure(children2); + const res = this.simplify(tree); + return res; + } async formatCommitMessage(template) { let status2; if (template.includes("{{numFiles}}")) { status2 = await this.status(); - let numFiles = status2.staged.length; + const numFiles = status2.staged.length; template = template.replace("{{numFiles}}", String(numFiles)); } if (template.includes("{{hostname}}")) { @@ -18750,7 +19289,7 @@ var GitManager = class { } if (template.includes("{{files}}")) { status2 = status2 != null ? status2 : await this.status(); - let changeset = {}; + const changeset = {}; status2.staged.forEach((value) => { if (value.index in changeset) { changeset[value.index].push(value.path); @@ -18758,14 +19297,14 @@ var GitManager = class { changeset[value.index] = [value.path]; } }); - let chunks = []; - for (let [action, files2] of Object.entries(changeset)) { + const chunks = []; + for (const [action, files2] of Object.entries(changeset)) { chunks.push(action + " " + files2.join(" ")); } - let files = chunks.join(", "); + const files = chunks.join(", "); template = template.replace("{{files}}", files); } - let moment = window.moment; + const moment = window.moment; template = template.replace("{{date}}", moment().format(this.plugin.settings.commitDateFormat)); if (this.plugin.settings.listChangedFilesInMessageBody) { template = template + "\n\nAffected files:\n" + (status2 != null ? status2 : await this.status()).staged.map((e) => e.path).join("\n"); @@ -18972,17 +19511,25 @@ var FileType; // src/ui/modals/generalModal.ts init_polyfill_buffer(); var import_obsidian3 = __toModule(require("obsidian")); +var generalModalConfigDefaults = { + options: [], + placeholder: "", + allowEmpty: false, + onlySelection: false, + initialValue: void 0 +}; var GeneralModal = class extends import_obsidian3.SuggestModal { - constructor(app2, options, placeholder, allowEmpty = false, onlySelection = false) { - super(app2); - this.options = options; - this.allowEmpty = allowEmpty; - this.onlySelection = onlySelection; - this.resolve = null; - this.setPlaceholder(placeholder); + constructor(config) { + super(app); + this.config = { ...generalModalConfigDefaults, ...config }; + this.setPlaceholder(this.config.placeholder); } open() { super.open(); + if (this.config.initialValue != void 0) { + this.inputEl.value = this.config.initialValue; + this.inputEl.dispatchEvent(new Event("input")); + } return new Promise((resolve) => { this.resolve = resolve; }); @@ -18990,7 +19537,7 @@ var GeneralModal = class extends import_obsidian3.SuggestModal { selectSuggestion(value, evt) { if (this.resolve) { let res; - if (this.allowEmpty && value === " ") + if (this.config.allowEmpty && value === " ") res = ""; else if (value === "...") res = void 0; @@ -19005,18 +19552,18 @@ var GeneralModal = class extends import_obsidian3.SuggestModal { this.resolve(void 0); } getSuggestions(query) { - if (this.onlySelection) { - return this.options; - } else if (this.allowEmpty) { - return [query.length > 0 ? query : " ", ...this.options]; + if (this.config.onlySelection) { + return this.config.options; + } else if (this.config.allowEmpty) { + return [query.length > 0 ? query : " ", ...this.config.options]; } else { - return [query.length > 0 ? query : "...", ...this.options]; + return [query.length > 0 ? query : "...", ...this.config.options]; } } renderSuggestion(value, el) { - el.innerText = value; + el.setText(value); } - onChooseSuggestion(item, _) { + onChooseSuggestion(item, evt) { } }; @@ -19033,12 +19580,15 @@ var worthWalking2 = (filepath, root) => { return filepath.startsWith(root); } }; -function getNewLeaf() { +function getNewLeaf(event) { let leaf; - if ((0, import_obsidian4.requireApiVersion)("0.16.0")) { - leaf = app.workspace.getLeaf("tab"); + if (event) { + if (event.button === 0 || event.button === 1) { + const type = import_obsidian4.Keymap.isModEvent(event); + leaf = app.workspace.getLeaf(type); + } } else { - leaf = app.workspace.createLeafInParent(app.workspace.rootSplit, 0); + leaf = app.workspace.getLeaf(false); } return leaf; } @@ -19075,16 +19625,17 @@ var IsomorphicGit = class extends GitManager { fs: this.fs, dir: this.plugin.settings.basePath, onAuth: () => { + var _a2; return { username: this.plugin.settings.username, - password: this.plugin.localStorage.getPassword() + password: (_a2 = this.plugin.localStorage.getPassword()) != null ? _a2 : void 0 }; }, onAuthFailure: async () => { new import_obsidian5.Notice("Authentication failed. Please try with different credentials"); - const username = await new GeneralModal(app, [], "Specify your username").open(); + const username = await new GeneralModal({ placeholder: "Specify your username" }).open(); if (username) { - const password = await new GeneralModal(app, [], "Specify your password/personal access token").open(); + const password = await new GeneralModal({ placeholder: "Specify your password/personal access token" }).open(); if (password) { this.plugin.settings.username = username; await this.plugin.saveSettings(); @@ -19230,7 +19781,7 @@ var IsomorphicGit = class extends GitManager { const res = await this.getStagedFiles(dir != null ? dir : "."); staged = res.map(({ filepath }) => filepath); } - await Promise.all(staged.map((file) => this.unstage(file, false))); + await this.wrapFS(Promise.all(staged.map((file) => isomorphic_git_default.resetIndex({ ...this.getRepo(), filepath: file })))); } catch (error) { this.plugin.displayError(error); throw error; @@ -19245,6 +19796,24 @@ var IsomorphicGit = class extends GitManager { throw error; } } + async discardAll({ dir, status: status2 }) { + let files = []; + if (status2) { + if (dir != void 0) { + files = status2.changed.filter((file) => file.path.startsWith(dir)).map((file) => file.path); + } else { + files = status2.changed.map((file) => file.path); + } + } else { + files = (await this.getUnstagedFiles(dir)).map(({ filepath }) => filepath); + } + try { + await this.wrapFS(isomorphic_git_default.checkout({ ...this.getRepo(), filepaths: files, force: true })); + } catch (error) { + this.plugin.displayError(error); + throw error; + } + } getProgressText(action, event) { let out = `${action} progress:`; if (event.phase) { @@ -19347,7 +19916,7 @@ var IsomorphicGit = class extends GitManager { const branches = await isomorphic_git_default.listBranches(this.getRepo()); const remote = (_a2 = await this.getConfig(`branch.${current}.remote`)) != null ? _a2 : "origin"; const trackingBranch = (_b = await this.getConfig(`branch.${current}.merge`)) == null ? void 0 : _b.split("refs/heads")[1]; - let tracking = trackingBranch ? remote + trackingBranch : void 0; + const tracking = trackingBranch ? remote + trackingBranch : void 0; return { current, tracking, @@ -19376,6 +19945,25 @@ var IsomorphicGit = class extends GitManager { throw error; } } + async createBranch(branch2) { + try { + await this.wrapFS(isomorphic_git_default.branch({ ...this.getRepo(), ref: branch2, checkout: true })); + } catch (error) { + this.plugin.displayError(error); + throw error; + } + } + async deleteBranch(branch2) { + try { + await this.wrapFS(isomorphic_git_default.deleteBranch({ ...this.getRepo(), ref: branch2 })); + } catch (error) { + this.plugin.displayError(error); + throw error; + } + } + async branchIsMerged(branch2) { + return true; + } async init() { try { await this.wrapFS(isomorphic_git_default.init(this.getRepo())); @@ -19482,10 +20070,10 @@ var IsomorphicGit = class extends GitManager { async getFileChangesCount(commitHash1, commitHash2) { return this.walkDifference({ walkers: [isomorphic_git_default.TREE({ ref: commitHash1 }), isomorphic_git_default.TREE({ ref: commitHash2 })] }); } - async walkDifference({ walkers: walker, dir: base }) { + async walkDifference({ walkers, dir: base }) { const res = await this.wrapFS(isomorphic_git_default.walk({ ...this.getRepo(), - trees: walker, + trees: walkers, map: async function(filepath, [A, B]) { if (!worthWalking2(filepath, base)) { return null; @@ -19594,8 +20182,35 @@ var IsomorphicGit = class extends GitManager { throw error; } } - async getDiffString(filePath) { - throw new Error("Method not implemented."); + async getDiffString(filePath, stagedChanges = false) { + const map = async (file, [A]) => { + if (filePath == file) { + const oid = await A.oid(); + const contents = await isomorphic_git_default.readBlob({ ...this.getRepo(), oid }); + return contents.blob; + } + }; + const stagedBlob = (await isomorphic_git_default.walk({ + ...this.getRepo(), + trees: [isomorphic_git_default.STAGE()], + map + })).first(); + const stagedContent = new TextDecoder().decode(stagedBlob); + if (stagedChanges) { + const headBlob = await readBlob({ ...this.getRepo(), filepath: filePath, oid: await this.resolveRef("HEAD") }); + const headContent = new TextDecoder().decode(headBlob.blob); + const diff2 = createPatch(filePath, headContent, stagedContent); + return diff2; + } else { + let workdirContent; + if (await app.vault.adapter.exists(filePath)) { + workdirContent = await app.vault.adapter.read(filePath); + } else { + workdirContent = ""; + } + const diff2 = createPatch(filePath, stagedContent, workdirContent); + return diff2; + } } getFileStatusResult(row) { const status2 = this.status_mapping[`${row[this.HEAD]}${row[this.WORKDIR]}${row[this.STAGE]}`]; @@ -20068,7 +20683,7 @@ var init_task_options = __esm2({ function callTaskParser(parser3, streams) { return parser3(streams.stdOut, streams.stdErr); } -function parseStringResponse(result, parsers11, texts, trim = true) { +function parseStringResponse(result, parsers12, texts, trim = true) { asArray(texts).forEach((text2) => { for (let lines = toLinesWithContent(text2, trim), i = 0, max = lines.length; i < max; i++) { const line = (offset = 0) => { @@ -20077,7 +20692,7 @@ function parseStringResponse(result, parsers11, texts, trim = true) { } return lines[i + offset]; }; - parsers11.some(({ parse: parse2 }) => parse2(line, result)); + parsers12.some(({ parse: parse2 }) => parse2(line, result)); } }); return result; @@ -22064,7 +22679,7 @@ function versionResponse(major = 0, minor = 0, patch = 0, agent = "", installed installed }, "toString", { value() { - return `${major}.${minor}.${patch}`; + return `${this.major}.${this.minor}.${this.patch}`; }, configurable: false, enumerable: false @@ -22079,16 +22694,7 @@ function version_default() { return this._runTask({ commands: ["--version"], format: "utf-8", - parser(stdOut) { - if (stdOut === NOT_INSTALLED) { - return notInstalledResponse(); - } - const version2 = /version (\d+)\.(\d+)\.(\d+)(?:\s*\((.+)\))?/.exec(stdOut); - if (!version2) { - return versionResponse(0, 0, 0, stdOut); - } - return versionResponse(asNumber(version2[1]), asNumber(version2[2]), asNumber(version2[3]), version2[4] || ""); - }, + parser: versionParser, onError(result, error, done, fail) { if (result.exitCode === -2) { return done(Buffer2.from(NOT_INSTALLED)); @@ -22099,11 +22705,26 @@ function version_default() { } }; } +function versionParser(stdOut) { + if (stdOut === NOT_INSTALLED) { + return notInstalledResponse(); + } + return parseStringResponse(versionResponse(0, 0, 0, stdOut), parsers7, stdOut); +} var NOT_INSTALLED; +var parsers7; var init_version = __esm2({ "src/lib/tasks/version.ts"() { init_utils(); NOT_INSTALLED = "installed=false"; + parsers7 = [ + new LineParser(/version (\d+)\.(\d+)\.(\d+)(?:\s*\((.+)\))?/, (result, [major, minor, patch, agent = ""]) => { + Object.assign(result, versionResponse(asNumber(major), asNumber(minor), asNumber(patch), agent)); + }), + new LineParser(/version (\d+)\.(\d+)\.(\D+)(.+)?$/, (result, [major, minor, patch, agent = ""]) => { + Object.assign(result, versionResponse(asNumber(major), asNumber(minor), patch, agent)); + }) + ]; } }); var simple_git_api_exports = {}; @@ -22290,7 +22911,7 @@ function hasBranchDeletionError(data, processExitCode) { } var deleteSuccessRegex; var deleteErrorRegex; -var parsers7; +var parsers8; var parseBranchDeletions; var init_parse_branch_delete = __esm2({ "src/lib/parsers/parse-branch-delete.ts"() { @@ -22298,7 +22919,7 @@ var init_parse_branch_delete = __esm2({ init_utils(); deleteSuccessRegex = /(\S+)\s+\(\S+\s([^)]+)\)/; deleteErrorRegex = /^error[^']+'([^']+)'/m; - parsers7 = [ + parsers8 = [ new LineParser(deleteSuccessRegex, (result, [branch2, hash2]) => { const deletion = branchDeletionSuccess(branch2, hash2); result.all.push(deletion); @@ -22312,7 +22933,7 @@ var init_parse_branch_delete = __esm2({ }) ]; parseBranchDeletions = (stdOut, stdErr) => { - return parseStringResponse(new BranchDeletionBatch(), parsers7, [stdOut, stdErr]); + return parseStringResponse(new BranchDeletionBatch(), parsers8, [stdOut, stdErr]); }; } }); @@ -22347,14 +22968,14 @@ function branchStatus(input) { return input ? input.charAt(0) : ""; } function parseBranchSummary(stdOut) { - return parseStringResponse(new BranchSummaryResult(), parsers8, stdOut); + return parseStringResponse(new BranchSummaryResult(), parsers9, stdOut); } -var parsers8; +var parsers9; var init_parse_branch = __esm2({ "src/lib/parsers/parse-branch.ts"() { init_BranchSummary(); init_utils(); - parsers8 = [ + parsers9 = [ new LineParser(/^([*+]\s)?\((?:HEAD )?detached (?:from|at) (\S+)\)\s+([a-z0-9]+)\s(.*)$/, (result, [current, name, commit2, label]) => { result.push(branchStatus(current), true, name, commit2, label); }), @@ -22504,13 +23125,13 @@ function parseFetchResult(stdOut, stdErr) { updated: [], deleted: [] }; - return parseStringResponse(result, parsers9, [stdOut, stdErr]); + return parseStringResponse(result, parsers10, [stdOut, stdErr]); } -var parsers9; +var parsers10; var init_parse_fetch = __esm2({ "src/lib/parsers/parse-fetch.ts"() { init_utils(); - parsers9 = [ + parsers10 = [ new LineParser(/From (.+)$/, (result, [remote]) => { result.remote = remote; }), @@ -22571,13 +23192,13 @@ var init_fetch = __esm2({ } }); function parseMoveResult(stdOut) { - return parseStringResponse({ moves: [] }, parsers10, stdOut); + return parseStringResponse({ moves: [] }, parsers11, stdOut); } -var parsers10; +var parsers11; var init_parse_move = __esm2({ "src/lib/parsers/parse-move.ts"() { init_utils(); - parsers10 = [ + parsers11 = [ new LineParser(/^Renaming (.+) to (.+)$/, (result, [from, to]) => { result.moves.push({ from, to }); }) @@ -23463,12 +24084,7 @@ var SimpleGit = class extends GitManager { vault_path: this.getVaultPath(res.path) }; }), - conflicted: status2.conflicted.map((e) => this.formatPath({ - path: e, - from: void 0, - index: void 0, - working_dir: void 0 - }).path) + conflicted: status2.conflicted.map((path2) => this.formatPath({ path: path2 }).path) }; } formatPath(path2, renamed = false) { @@ -23500,20 +24116,20 @@ var SimpleGit = class extends GitManager { if (!(args.contains("submodule") && args.contains("foreach"))) return; let body = ""; - let root = this.app.vault.adapter.getBasePath() + (this.plugin.settings.basePath ? "/" + this.plugin.settings.basePath : ""); + const root = this.app.vault.adapter.getBasePath() + (this.plugin.settings.basePath ? "/" + this.plugin.settings.basePath : ""); stdout.on("data", (chunk) => { body += chunk.toString("utf8"); }); stdout.on("end", async () => { - let submods = body.split("\n"); - submods = submods.map((i) => { - let submod = i.match(/'([^']*)'/); + const submods = body.split("\n"); + const strippedSubmods = submods.map((i) => { + const submod = i.match(/'([^']*)'/); if (submod != void 0) { return root + "/" + submod[1] + import_path.sep; } }); - submods.reverse(); - for (const item of submods) { + strippedSubmods.reverse(); + for (const item of strippedSubmods) { if (item != void 0) { await this.git.cwd({ path: item, root: false }).add("-A", (err) => this.onError(err)); await this.git.cwd({ path: item, root: false }).commit(await this.formatCommitMessage(message), (err) => this.onError(err)); @@ -23549,9 +24165,9 @@ var SimpleGit = class extends GitManager { await this.git.add(dir != null ? dir : "-A", (err) => this.onError(err)); this.plugin.setState(PluginState.idle); } - async unstageAll() { + async unstageAll({ dir }) { this.plugin.setState(PluginState.add); - await this.git.reset([], (err) => this.onError(err)); + await this.git.reset(dir != void 0 ? ["--", dir] : [], (err) => this.onError(err)); this.plugin.setState(PluginState.idle); } async unstage(path2, relativeToVault) { @@ -23565,6 +24181,9 @@ var SimpleGit = class extends GitManager { await this.git.checkout(["--", filepath], (err) => this.onError(err)); this.plugin.setState(PluginState.idle); } + async discardAll({ dir }) { + return this.discard(dir != null ? dir : "."); + } async pull() { this.plugin.setState(PluginState.pull); if (this.plugin.settings.updateSubmodules) @@ -23590,7 +24209,7 @@ var SimpleGit = class extends GitManager { } else if (this.plugin.settings.syncMethod === "reset") { try { await this.git.raw(["update-ref", `refs/heads/${branchInfo.current}`, upstreamCommit], (err) => this.onError(err)); - await this.unstageAll(); + await this.unstageAll({}); } catch (err) { this.plugin.displayError(`Sync failed (${this.plugin.settings.syncMethod}): ${err.message}`); } @@ -23613,7 +24232,7 @@ var SimpleGit = class extends GitManager { const status2 = await this.git.status(); const trackingBranch = status2.tracking; const currentBranch2 = status2.current; - const remoteChangedFiles = (await this.git.diffSummary([currentBranch2, trackingBranch], (err) => this.onError(err))).changed; + const remoteChangedFiles = (await this.git.diffSummary([currentBranch2, trackingBranch, "--"], (err) => this.onError(err))).changed; this.plugin.setState(PluginState.push); if (this.plugin.settings.updateSubmodules) { await this.git.env({ ...process.env, "OBSIDIAN_GIT": 1 }).subModule(["foreach", "--recursive", `tracking=$(git for-each-ref --format='%(upstream:short)' "$(git symbolic-ref -q HEAD)"); echo $tracking; if [ ! -z "$(git diff --shortstat $tracking)" ]; then git push; fi`], (err) => this.onError(err)); @@ -23628,7 +24247,7 @@ var SimpleGit = class extends GitManager { const status2 = await this.git.status((err) => this.onError(err)); const trackingBranch = status2.tracking; const currentBranch2 = status2.current; - const remoteChangedFiles = (await this.git.diffSummary([currentBranch2, trackingBranch])).changed; + const remoteChangedFiles = (await this.git.diffSummary([currentBranch2, trackingBranch, "--"])).changed; return remoteChangedFiles !== 0; } async checkRequirements() { @@ -23644,8 +24263,8 @@ var SimpleGit = class extends GitManager { const status2 = await this.git.status((err) => this.onError(err)); const branches = await this.git.branch(["--no-color"], (err) => this.onError(err)); return { - current: status2.current, - tracking: status2.tracking, + current: status2.current || void 0, + tracking: status2.tracking || void 0, branches: branches.all }; } @@ -23664,6 +24283,16 @@ var SimpleGit = class extends GitManager { async checkout(branch2) { await this.git.checkout(branch2, (err) => this.onError(err)); } + async createBranch(branch2) { + await this.git.checkout(["-b", branch2], (err) => this.onError(err)); + } + async deleteBranch(branch2, force) { + await this.git.branch([force ? "-D" : "-d", branch2], (err) => this.onError(err)); + } + async branchIsMerged(branch2) { + const notMergedBranches = await this.git.branch(["--no-merged"], (err) => this.onError(err)); + return !notMergedBranches.all.contains(branch2); + } async init() { await this.git.init(false, (err) => this.onError(err)); } @@ -23692,7 +24321,7 @@ var SimpleGit = class extends GitManager { console.log(remote); console.log(res); const list = []; - for (var item in res.branches) { + for (const item in res.branches) { list.push(res.branches[item].name); } return list; @@ -23748,7 +24377,7 @@ var SimpleGit = class extends GitManager { } onError(error) { if (error) { - let networkFailure = error.message.contains("Could not resolve host") || error.message.match(/ssh: connect to host .*? port .*?: Operation timed out/); + const networkFailure = error.message.contains("Could not resolve host") || error.message.match(/ssh: connect to host .*? port .*?: Operation timed out/); if (!networkFailure) { this.plugin.displayError(error.message); this.plugin.setState(PluginState.idle); @@ -23766,7 +24395,7 @@ var SimpleGit = class extends GitManager { // src/settings.ts var ObsidianGitSettingsTab = class extends import_obsidian7.PluginSettingTab { display() { - let { containerEl } = this; + const { containerEl } = this; const plugin = this.plugin; const commitOrBackup = plugin.settings.differentIntervalCommitAndPush ? "commit" : "backup"; const gitReady = plugin.gitReady; @@ -23864,11 +24493,14 @@ var ObsidianGitSettingsTab = class extends import_obsidian7.PluginSettingTab { plugin.settings.commitDateFormat = value; await plugin.saveSettings(); })); - new import_obsidian7.Setting(containerEl).setName("{{hostname}} placeholder replacement").setDesc("Specify custom hostname for every device.").addText((text2) => text2.setValue(plugin.localStorage.getHostname()).onChange(async (value) => { - plugin.localStorage.setHostname(value); - })); + new import_obsidian7.Setting(containerEl).setName("{{hostname}} placeholder replacement").setDesc("Specify custom hostname for every device.").addText((text2) => { + var _a2; + return text2.setValue((_a2 = plugin.localStorage.getHostname()) != null ? _a2 : "").onChange(async (value) => { + plugin.localStorage.setHostname(value); + }); + }); new import_obsidian7.Setting(containerEl).setName("Preview commit message").addButton((button) => button.setButtonText("Preview").onClick(async () => { - let commitMessagePreview = await plugin.gitManager.formatCommitMessage(plugin.settings.commitMessage); + const commitMessagePreview = await plugin.gitManager.formatCommitMessage(plugin.settings.commitMessage); new import_obsidian7.Notice(`${commitMessagePreview}`); })); new import_obsidian7.Setting(containerEl).setName("List filenames affected by commit in the commit body").addToggle((toggle) => toggle.setValue(plugin.settings.listChangedFilesInMessageBody).onChange((value) => { @@ -23906,23 +24538,11 @@ var ObsidianGitSettingsTab = class extends import_obsidian7.PluginSettingTab { } containerEl.createEl("br"); containerEl.createEl("h3", { text: "Miscellaneous" }); - if (gitReady) - new import_obsidian7.Setting(containerEl).setName("Current branch").setDesc("Switch to a different branch").addDropdown(async (dropdown) => { - const branchInfo = await plugin.gitManager.branchInfo(); - for (const branch2 of branchInfo.branches) { - dropdown.addOption(branch2, branch2); - } - dropdown.setValue(branchInfo.current); - dropdown.onChange(async (option) => { - await plugin.gitManager.checkout(option); - new import_obsidian7.Notice(`Checked out to ${option}`); - }); - }); new import_obsidian7.Setting(containerEl).setName("Automatically refresh Source Control View on file changes").setDesc("On slower machines this may cause lags. If so, just disable this option").addToggle((toggle) => toggle.setValue(plugin.settings.refreshSourceControl).onChange((value) => { plugin.settings.refreshSourceControl = value; plugin.saveSettings(); })); - new import_obsidian7.Setting(containerEl).setName("Source Control View refresh interval").setDesc("Milliseconds two wait after file change before refreshing the Source Control View").addText((toggle) => toggle.setValue(plugin.settings.refreshSourceControlTimer.toString()).setPlaceholder("7000").onChange((value) => { + new import_obsidian7.Setting(containerEl).setName("Source Control View refresh interval").setDesc("Milliseconds to wait after file change before refreshing the Source Control View").addText((toggle) => toggle.setValue(plugin.settings.refreshSourceControlTimer.toString()).setPlaceholder("7000").onChange((value) => { plugin.settings.refreshSourceControlTimer = Math.max(parseInt(value), 500); plugin.saveSettings(); plugin.setRefreshDebouncer(); @@ -23935,6 +24555,10 @@ var ObsidianGitSettingsTab = class extends import_obsidian7.PluginSettingTab { plugin.settings.showStatusBar = value; plugin.saveSettings(); })); + new import_obsidian7.Setting(containerEl).setName("Show branch status bar").setDesc("Obsidian must be restarted for the changes to take affect").addToggle((toggle) => toggle.setValue(plugin.settings.showBranchStatusBar).onChange((value) => { + plugin.settings.showBranchStatusBar = value; + plugin.saveSettings(); + })); new import_obsidian7.Setting(containerEl).setName("Show changes files count in status bar").addToggle((toggle) => toggle.setValue(plugin.settings.changedFilesInStatusBar).onChange((value) => { plugin.settings.changedFilesInStatusBar = value; plugin.saveSettings(); @@ -23948,7 +24572,8 @@ var ObsidianGitSettingsTab = class extends import_obsidian7.PluginSettingTab { })); if (plugin.gitManager instanceof SimpleGit) new import_obsidian7.Setting(containerEl).setName("Custom Git binary path").addText((cb) => { - cb.setValue(plugin.localStorage.getGitPath()); + var _a2; + cb.setValue((_a2 = plugin.localStorage.getGitPath()) != null ? _a2 : ""); cb.setPlaceholder("git"); cb.onChange((value) => { plugin.localStorage.setGitPath(value); @@ -24229,7 +24854,8 @@ var DEFAULT_SETTINGS = { changedFilesInStatusBar: false, username: "", showedMobileNotice: false, - refreshSourceControlTimer: 7e3 + refreshSourceControlTimer: 7e3, + showBranchStatusBar: true }; var GIT_VIEW_CONFIG = { type: "git-view", @@ -24247,55 +24873,67 @@ init_polyfill_buffer(); var LocalStorageSettings = class { constructor(plugin) { this.plugin = plugin; - this.prefix = this.plugin.manifest.id; + this.prefix = this.plugin.manifest.id + ":"; + } + migrate() { + const keys = ["password", "hostname", "conflict", "lastAutoPull", "lastAutoBackup", "lastAutoPush", "gitPath", "pluginDisabled"]; + for (const key2 of keys) { + const old = localStorage.getItem(this.prefix + key2); + if (app.loadLocalStorage(this.prefix + key2) == null && old != null) { + if (old != null) { + app.saveLocalStorage(this.prefix + key2, old); + localStorage.removeItem(this.prefix + key2); + } + } + } } getPassword() { - return localStorage.getItem(this.prefix + ":password"); + return app.loadLocalStorage(this.prefix + "password"); } setPassword(value) { - return localStorage.setItem(this.prefix + ":password", value); + return app.saveLocalStorage(this.prefix + "password", value); } getHostname() { - return localStorage.getItem(this.prefix + ":hostname"); + return app.loadLocalStorage(this.prefix + "hostname"); } setHostname(value) { - return localStorage.setItem(this.prefix + ":hostname", value); + return app.saveLocalStorage(this.prefix + "hostname", value); } getConflict() { - return localStorage.getItem(this.prefix + ":conflict"); + return app.loadLocalStorage(this.prefix + "conflict"); } setConflict(value) { - return localStorage.setItem(this.prefix + ":conflict", value); + return app.saveLocalStorage(this.prefix + "conflict", value); } getLastAutoPull() { - return localStorage.getItem(this.prefix + ":lastAutoPull"); + return app.loadLocalStorage(this.prefix + "lastAutoPull"); } setLastAutoPull(value) { - return localStorage.setItem(this.prefix + ":lastAutoPull", value); + return app.saveLocalStorage(this.prefix + "lastAutoPull", value); } getLastAutoBackup() { - return localStorage.getItem(this.prefix + ":lastAutoBackup"); + return app.loadLocalStorage(this.prefix + "lastAutoBackup"); } setLastAutoBackup(value) { - return localStorage.setItem(this.prefix + ":lastAutoBackup", value); + return app.saveLocalStorage(this.prefix + "lastAutoBackup", value); } getLastAutoPush() { - return localStorage.getItem(this.prefix + ":lastAutoPush"); + return app.loadLocalStorage(this.prefix + "lastAutoPush"); } setLastAutoPush(value) { - return localStorage.setItem(this.prefix + ":lastAutoPush", value); + return app.saveLocalStorage(this.prefix + "lastAutoPush", value); } getGitPath() { - return localStorage.getItem(this.prefix + ":gitPath"); + return app.loadLocalStorage(this.prefix + "gitPath"); } setGitPath(value) { - return localStorage.setItem(this.prefix + ":gitPath", value); + return app.saveLocalStorage(this.prefix + "gitPath", value); } getPluginDisabled() { - return localStorage.getItem(this.prefix + ":pluginDisabled") == "true"; + return app.loadLocalStorage(this.prefix + "pluginDisabled") == "true"; } setPluginDisabled(value) { - return localStorage.setItem(this.prefix + ":pluginDisabled", `${value}`); + return app.saveLocalStorage(this.prefix + "pluginDisabled", `${value}`); } }; @@ -24480,7 +25118,7 @@ function parse(diffInput, config) { var combinedMode = /^mode (\d{6}),(\d{6})\.\.(\d{6})/; var combinedNewFile = /^new file mode (\d{6})/; var combinedDeletedFile = /^deleted file mode (\d{6}),(\d{6})/; - var diffLines = diffInput.replace(/\\ No newline at end of file/g, "").replace(/\r\n?/g, "\n").split("\n"); + var diffLines2 = diffInput.replace(/\\ No newline at end of file/g, "").replace(/\r\n?/g, "\n").split("\n"); function saveBlock() { if (currentBlock !== null && currentFile !== null) { currentFile.blocks.push(currentBlock); @@ -24569,25 +25207,25 @@ function parse(diffInput, config) { } function existHunkHeader(line, lineIdx) { var idx = lineIdx; - while (idx < diffLines.length - 3) { + while (idx < diffLines2.length - 3) { if (line.startsWith("diff")) { return false; } - if (diffLines[idx].startsWith(oldFileNameHeader) && diffLines[idx + 1].startsWith(newFileNameHeader) && diffLines[idx + 2].startsWith(hunkHeaderPrefix)) { + if (diffLines2[idx].startsWith(oldFileNameHeader) && diffLines2[idx + 1].startsWith(newFileNameHeader) && diffLines2[idx + 2].startsWith(hunkHeaderPrefix)) { return true; } idx++; } return false; } - diffLines.forEach(function(line, lineIndex) { + diffLines2.forEach(function(line, lineIndex) { if (!line || line.startsWith("*")) { return; } var values; - var prevLine = diffLines[lineIndex - 1]; - var nxtLine = diffLines[lineIndex + 1]; - var afterNxtLine = diffLines[lineIndex + 2]; + var prevLine = diffLines2[lineIndex - 1]; + var nxtLine = diffLines2[lineIndex + 1]; + var afterNxtLine = diffLines2[lineIndex + 2]; if (line.startsWith("diff")) { startFile(); var gitDiffStart = /^diff --git "?([a-ciow]\/.+)"? "?([a-ciow]\/.+)"?/; @@ -24712,337 +25350,6 @@ init_polyfill_buffer(); // node_modules/diff2html/lib-esm/render-utils.js init_polyfill_buffer(); -// node_modules/diff/lib/index.mjs -init_polyfill_buffer(); -function Diff() { -} -Diff.prototype = { - diff: function diff(oldString, newString) { - var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; - var callback = options.callback; - if (typeof options === "function") { - callback = options; - options = {}; - } - this.options = options; - var self3 = this; - function done(value) { - if (callback) { - setTimeout(function() { - callback(void 0, value); - }, 0); - return true; - } else { - return value; - } - } - oldString = this.castInput(oldString); - newString = this.castInput(newString); - oldString = this.removeEmpty(this.tokenize(oldString)); - newString = this.removeEmpty(this.tokenize(newString)); - var newLen = newString.length, oldLen = oldString.length; - var editLength = 1; - var maxEditLength = newLen + oldLen; - if (options.maxEditLength) { - maxEditLength = Math.min(maxEditLength, options.maxEditLength); - } - var bestPath = [{ - newPos: -1, - components: [] - }]; - var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); - if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { - return done([{ - value: this.join(newString), - count: newString.length - }]); - } - function execEditLength() { - for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { - var basePath = void 0; - var addPath = bestPath[diagonalPath - 1], removePath = bestPath[diagonalPath + 1], _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; - if (addPath) { - bestPath[diagonalPath - 1] = void 0; - } - var canAdd = addPath && addPath.newPos + 1 < newLen, canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen; - if (!canAdd && !canRemove) { - bestPath[diagonalPath] = void 0; - continue; - } - if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { - basePath = clonePath(removePath); - self3.pushComponent(basePath.components, void 0, true); - } else { - basePath = addPath; - basePath.newPos++; - self3.pushComponent(basePath.components, true, void 0); - } - _oldPos = self3.extractCommon(basePath, newString, oldString, diagonalPath); - if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) { - return done(buildValues(self3, basePath.components, newString, oldString, self3.useLongestToken)); - } else { - bestPath[diagonalPath] = basePath; - } - } - editLength++; - } - if (callback) { - (function exec() { - setTimeout(function() { - if (editLength > maxEditLength) { - return callback(); - } - if (!execEditLength()) { - exec(); - } - }, 0); - })(); - } else { - while (editLength <= maxEditLength) { - var ret = execEditLength(); - if (ret) { - return ret; - } - } - } - }, - pushComponent: function pushComponent(components, added, removed) { - var last2 = components[components.length - 1]; - if (last2 && last2.added === added && last2.removed === removed) { - components[components.length - 1] = { - count: last2.count + 1, - added, - removed - }; - } else { - components.push({ - count: 1, - added, - removed - }); - } - }, - extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) { - var newLen = newString.length, oldLen = oldString.length, newPos = basePath.newPos, oldPos = newPos - diagonalPath, commonCount = 0; - while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { - newPos++; - oldPos++; - commonCount++; - } - if (commonCount) { - basePath.components.push({ - count: commonCount - }); - } - basePath.newPos = newPos; - return oldPos; - }, - equals: function equals(left, right) { - if (this.options.comparator) { - return this.options.comparator(left, right); - } else { - return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase(); - } - }, - removeEmpty: function removeEmpty(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - if (array[i]) { - ret.push(array[i]); - } - } - return ret; - }, - castInput: function castInput(value) { - return value; - }, - tokenize: function tokenize(value) { - return value.split(""); - }, - join: function join3(chars) { - return chars.join(""); - } -}; -function buildValues(diff2, components, newString, oldString, useLongestToken) { - var componentPos = 0, componentLen = components.length, newPos = 0, oldPos = 0; - for (; componentPos < componentLen; componentPos++) { - var component = components[componentPos]; - if (!component.removed) { - if (!component.added && useLongestToken) { - var value = newString.slice(newPos, newPos + component.count); - value = value.map(function(value2, i) { - var oldValue = oldString[oldPos + i]; - return oldValue.length > value2.length ? oldValue : value2; - }); - component.value = diff2.join(value); - } else { - component.value = diff2.join(newString.slice(newPos, newPos + component.count)); - } - newPos += component.count; - if (!component.added) { - oldPos += component.count; - } - } else { - component.value = diff2.join(oldString.slice(oldPos, oldPos + component.count)); - oldPos += component.count; - if (componentPos && components[componentPos - 1].added) { - var tmp = components[componentPos - 1]; - components[componentPos - 1] = components[componentPos]; - components[componentPos] = tmp; - } - } - } - var lastComponent = components[componentLen - 1]; - if (componentLen > 1 && typeof lastComponent.value === "string" && (lastComponent.added || lastComponent.removed) && diff2.equals("", lastComponent.value)) { - components[componentLen - 2].value += lastComponent.value; - components.pop(); - } - return components; -} -function clonePath(path2) { - return { - newPos: path2.newPos, - components: path2.components.slice(0) - }; -} -var characterDiff = new Diff(); -function diffChars(oldStr, newStr, options) { - return characterDiff.diff(oldStr, newStr, options); -} -var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/; -var reWhitespace = /\S/; -var wordDiff = new Diff(); -wordDiff.equals = function(left, right) { - if (this.options.ignoreCase) { - left = left.toLowerCase(); - right = right.toLowerCase(); - } - return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right); -}; -wordDiff.tokenize = function(value) { - var tokens = value.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/); - for (var i = 0; i < tokens.length - 1; i++) { - if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) { - tokens[i] += tokens[i + 2]; - tokens.splice(i + 1, 2); - i--; - } - } - return tokens; -}; -function diffWordsWithSpace(oldStr, newStr, options) { - return wordDiff.diff(oldStr, newStr, options); -} -var lineDiff = new Diff(); -lineDiff.tokenize = function(value) { - var retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/); - if (!linesAndNewlines[linesAndNewlines.length - 1]) { - linesAndNewlines.pop(); - } - for (var i = 0; i < linesAndNewlines.length; i++) { - var line = linesAndNewlines[i]; - if (i % 2 && !this.options.newlineIsToken) { - retLines[retLines.length - 1] += line; - } else { - if (this.options.ignoreWhitespace) { - line = line.trim(); - } - retLines.push(line); - } - } - return retLines; -}; -var sentenceDiff = new Diff(); -sentenceDiff.tokenize = function(value) { - return value.split(/(\S.+?[.!?])(?=\s+|$)/); -}; -var cssDiff = new Diff(); -cssDiff.tokenize = function(value) { - return value.split(/([{}:;,]|\s+)/); -}; -function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function(obj2) { - return typeof obj2; - }; - } else { - _typeof = function(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); -} -var objectPrototypeToString = Object.prototype.toString; -var jsonDiff = new Diff(); -jsonDiff.useLongestToken = true; -jsonDiff.tokenize = lineDiff.tokenize; -jsonDiff.castInput = function(value) { - var _this$options = this.options, undefinedReplacement = _this$options.undefinedReplacement, _this$options$stringi = _this$options.stringifyReplacer, stringifyReplacer = _this$options$stringi === void 0 ? function(k, v) { - return typeof v === "undefined" ? undefinedReplacement : v; - } : _this$options$stringi; - return typeof value === "string" ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, " "); -}; -jsonDiff.equals = function(left, right) { - return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, "$1"), right.replace(/,([\r\n])/g, "$1")); -}; -function canonicalize(obj, stack, replacementStack, replacer, key2) { - stack = stack || []; - replacementStack = replacementStack || []; - if (replacer) { - obj = replacer(key2, obj); - } - var i; - for (i = 0; i < stack.length; i += 1) { - if (stack[i] === obj) { - return replacementStack[i]; - } - } - var canonicalizedObj; - if (objectPrototypeToString.call(obj) === "[object Array]") { - stack.push(obj); - canonicalizedObj = new Array(obj.length); - replacementStack.push(canonicalizedObj); - for (i = 0; i < obj.length; i += 1) { - canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key2); - } - stack.pop(); - replacementStack.pop(); - return canonicalizedObj; - } - if (obj && obj.toJSON) { - obj = obj.toJSON(); - } - if (_typeof(obj) === "object" && obj !== null) { - stack.push(obj); - canonicalizedObj = {}; - replacementStack.push(canonicalizedObj); - var sortedKeys = [], _key; - for (_key in obj) { - if (obj.hasOwnProperty(_key)) { - sortedKeys.push(_key); - } - } - sortedKeys.sort(); - for (i = 0; i < sortedKeys.length; i += 1) { - _key = sortedKeys[i]; - canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key); - } - stack.pop(); - replacementStack.pop(); - } else { - canonicalizedObj = obj; - } - return canonicalizedObj; -} -var arrayDiff = new Diff(); -arrayDiff.tokenize = function(value) { - return value.slice(); -}; -arrayDiff.join = arrayDiff.removeEmpty = function(value) { - return value; -}; - // node_modules/diff2html/lib-esm/rematch.js init_polyfill_buffer(); function levenshtein(a, b) { @@ -26234,6 +26541,7 @@ var DiffView = class extends import_obsidian13.ItemView { this.plugin = plugin; this.gettingDiff = false; this.parser = new DOMParser(); + this.navigation = true; addEventListener("git-refresh", this.refresh.bind(this)); } getViewType() { @@ -26281,10 +26589,41 @@ var DiffView = class extends import_obsidian13.ItemView { } }; -// src/ui/modals/ignoreModal.ts +// src/ui/modals/branchModal.ts init_polyfill_buffer(); var import_obsidian14 = __toModule(require("obsidian")); -var IgnoreModal = class extends import_obsidian14.Modal { +var BranchModal = class extends import_obsidian14.FuzzySuggestModal { + constructor(branches) { + super(app); + this.branches = branches; + this.setPlaceholder("Select branch to checkout"); + } + getItems() { + return this.branches; + } + getItemText(item) { + return item; + } + onChooseItem(item, evt) { + this.resolve(item); + } + open() { + super.open(); + return new Promise((resolve) => { + this.resolve = resolve; + }); + } + async onClose() { + await new Promise((resolve) => setTimeout(resolve, 10)); + if (this.resolve) + this.resolve(void 0); + } +}; + +// src/ui/modals/ignoreModal.ts +init_polyfill_buffer(); +var import_obsidian15 = __toModule(require("obsidian")); +var IgnoreModal = class extends import_obsidian15.Modal { constructor(app2, content) { super(app2); this.content = content; @@ -26297,7 +26636,7 @@ var IgnoreModal = class extends import_obsidian14.Modal { }); } onOpen() { - let { contentEl, titleEl } = this; + const { contentEl, titleEl } = this; titleEl.setText("Edit .gitignore"); const div = contentEl.createDiv(); const text2 = div.createEl("textarea", { @@ -26314,7 +26653,7 @@ var IgnoreModal = class extends import_obsidian14.Modal { }); } onClose() { - let { contentEl } = this; + const { contentEl } = this; this.resolve(void 0); contentEl.empty(); } @@ -26322,7 +26661,7 @@ var IgnoreModal = class extends import_obsidian14.Modal { // src/ui/sidebar/sidebarView.ts init_polyfill_buffer(); -var import_obsidian21 = __toModule(require("obsidian")); +var import_obsidian22 = __toModule(require("obsidian")); // src/ui/sidebar/gitView.svelte init_polyfill_buffer(); @@ -26465,6 +26804,13 @@ function set_data(text2, data) { function set_input_value(input, value) { input.value = value == null ? "" : value; } +function set_style(node, key2, value, important) { + if (value === null) { + node.style.removeProperty(key2); + } else { + node.style.setProperty(key2, value, important ? "important" : ""); + } +} function toggle_class(element2, name, toggle) { element2.classList[toggle ? "add" : "remove"](name); } @@ -26768,7 +27114,9 @@ var boolean_attributes = new Set([ "disabled", "formnovalidate", "hidden", + "inert", "ismap", + "itemscope", "loop", "multiple", "muted", @@ -26785,13 +27133,13 @@ function create_component(block) { block && block.c(); } function mount_component(component, target, anchor, customElement) { - const { fragment, on_mount, on_destroy, after_update } = component.$$; + const { fragment, after_update } = component.$$; fragment && fragment.m(target, anchor); if (!customElement) { add_render_callback(() => { - const new_on_destroy = on_mount.map(run).filter(is_function); - if (on_destroy) { - on_destroy.push(...new_on_destroy); + const new_on_destroy = component.$$.on_mount.map(run).filter(is_function); + if (component.$$.on_destroy) { + component.$$.on_destroy.push(...new_on_destroy); } else { run_all(new_on_destroy); } @@ -26822,7 +27170,7 @@ function init2(component, options, instance6, create_fragment6, not_equal, props set_current_component(component); const $$ = component.$$ = { fragment: null, - ctx: null, + ctx: [], props, update: noop, not_equal, @@ -26839,19 +27187,19 @@ function init2(component, options, instance6, create_fragment6, not_equal, props root: options.target || parent_component.$$.root }; append_styles2 && append_styles2($$.root); - let ready2 = false; + let ready = false; $$.ctx = instance6 ? instance6(component, options.props || {}, (i, ret, ...rest) => { const value = rest.length ? rest[0] : ret; if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { if (!$$.skip_bound && $$.bound[i]) $$.bound[i](value); - if (ready2) + if (ready) make_dirty(component, i); } return ret; }) : []; $$.update(); - ready2 = true; + ready = true; run_all($$.before_update); $$.fragment = create_fragment6 ? create_fragment6($$.ctx) : false; if (options.target) { @@ -26896,6 +27244,9 @@ if (typeof HTMLElement === "function") { this.$destroy = noop; } $on(type, callback) { + if (!is_function(callback)) { + return noop; + } const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []); callbacks.push(callback); return () => { @@ -26919,6 +27270,9 @@ var SvelteComponent = class { this.$destroy = noop; } $on(type, callback) { + if (!is_function(callback)) { + return noop; + } const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []); callbacks.push(callback); return () => { @@ -26937,7 +27291,7 @@ var SvelteComponent = class { }; // src/ui/sidebar/gitView.svelte -var import_obsidian20 = __toModule(require("obsidian")); +var import_obsidian21 = __toModule(require("obsidian")); // node_modules/svelte/index.mjs init_polyfill_buffer(); @@ -26971,61 +27325,6 @@ function slide(node, { delay: delay2 = 0, duration = 400, easing = cubicOut } = }; } -// src/ui/sidebar/components/fileComponent.svelte -init_polyfill_buffer(); -var import_obsidian17 = __toModule(require("obsidian")); - -// node_modules/obsidian-community-lib/dist/index.js -init_polyfill_buffer(); - -// node_modules/obsidian-community-lib/dist/utils.js -init_polyfill_buffer(); -var feather = __toModule(require_feather()); -var import_obsidian15 = __toModule(require("obsidian")); -function hoverPreview(event, view, to) { - const targetEl = event.target; - app.workspace.trigger("hover-link", { - event, - source: view.getViewType(), - hoverParent: view, - targetEl, - linktext: to - }); -} -async function createNewMDNote(newName, currFilePath = "") { - const newFileFolder = app.fileManager.getNewFileParent(currFilePath).path; - const newFilePath = (0, import_obsidian15.normalizePath)(`${newFileFolder}${newFileFolder === "/" ? "" : "/"}${addMD(newName)}`); - return await app.vault.create(newFilePath, ""); -} -var addMD = (noteName) => { - return noteName.match(/\.MD$|\.md$/m) ? noteName : noteName + ".md"; -}; -async function openOrSwitch(dest, event, options = { createNewFile: true }) { - const { workspace } = app; - let destFile = app.metadataCache.getFirstLinkpathDest(dest, ""); - if (!destFile && options.createNewFile) { - destFile = await createNewMDNote(dest); - } else if (!destFile && !options.createNewFile) - return; - const leavesWithDestAlreadyOpen = []; - workspace.iterateAllLeaves((leaf) => { - var _a2; - if (leaf.view instanceof import_obsidian15.MarkdownView) { - const file = (_a2 = leaf.view) === null || _a2 === void 0 ? void 0 : _a2.file; - if (file && file.basename + "." + file.extension === dest) { - leavesWithDestAlreadyOpen.push(leaf); - } - } - }); - if (leavesWithDestAlreadyOpen.length > 0) { - workspace.setActiveLeaf(leavesWithDestAlreadyOpen[0]); - } else { - const mode = app.vault.getConfig("defaultViewMode"); - const leaf = event.ctrlKey || event.getModifierState("Meta") ? workspace.splitActiveLeaf() : workspace.getUnpinnedLeaf(); - await leaf.openFile(destFile, { active: true, mode }); - } -} - // src/ui/modals/discardModal.ts init_polyfill_buffer(); var import_obsidian16 = __toModule(require("obsidian")); @@ -27043,19 +27342,27 @@ var DiscardModal = class extends import_obsidian16.Modal { }); } onOpen() { - let { contentEl, titleEl } = this; + const { contentEl, titleEl } = this; titleEl.setText(`${this.deletion ? "Delete" : "Discard"} this file?`); contentEl.createEl("h4").setText(`Do you really want to ${this.deletion ? "delete" : "discard the changes of"} "${this.filename}"`); const div = contentEl.createDiv(); div.addClass("obsidian-git-center"); - div.createEl("button", { text: "Cancel" }).addEventListener("click", () => { + div.createEl("button", { + text: "Cancel", + attr: { + style: "margin: 0 10px" + } + }).addEventListener("click", () => { if (this.resolve) this.resolve(false); return this.close(); }); div.createEl("button", { cls: "mod-cta", - text: "Confirm" + text: "Confirm", + attr: { + style: "margin: 0 10px" + } }).addEventListener("click", async () => { if (this.resolve) this.resolve(true); @@ -27063,14 +27370,36 @@ var DiscardModal = class extends import_obsidian16.Modal { }); } onClose() { - let { contentEl } = this; + const { contentEl } = this; contentEl.empty(); } }; +// src/ui/sidebar/components/fileComponent.svelte +init_polyfill_buffer(); +var import_obsidian18 = __toModule(require("obsidian")); + +// node_modules/obsidian-community-lib/dist/index.js +init_polyfill_buffer(); + +// node_modules/obsidian-community-lib/dist/utils.js +init_polyfill_buffer(); +var feather = __toModule(require_feather()); +var import_obsidian17 = __toModule(require("obsidian")); +function hoverPreview(event, view, to) { + const targetEl = event.target; + app.workspace.trigger("hover-link", { + event, + source: view.getViewType(), + hoverParent: view, + targetEl, + linktext: to + }); +} + // src/ui/sidebar/components/fileComponent.svelte function add_css(target) { - append_styles(target, "svelte-1furf50", "main.svelte-1furf50.svelte-1furf50.svelte-1furf50{cursor:pointer;background-color:var(--background-secondary);border-radius:4px;width:98%;display:flex;justify-content:space-between;font-size:0.8rem;margin-bottom:2px}main.svelte-1furf50 .path.svelte-1furf50.svelte-1furf50{color:var(--text-muted);white-space:nowrap;max-width:75%;overflow:hidden;text-overflow:ellipsis}main.svelte-1furf50:hover .path.svelte-1furf50.svelte-1furf50{color:var(--text-normal);transition:all 200ms}main.svelte-1furf50 .tools.svelte-1furf50.svelte-1furf50{display:flex;align-items:center}main.svelte-1furf50 .tools .type.svelte-1furf50.svelte-1furf50{height:16px;width:16px;margin:0;display:flex;align-items:center;justify-content:center}main.svelte-1furf50 .tools .type[data-type=M].svelte-1furf50.svelte-1furf50{color:orange}main.svelte-1furf50 .tools .type[data-type=D].svelte-1furf50.svelte-1furf50{color:red}main.svelte-1furf50 .tools .buttons.svelte-1furf50.svelte-1furf50{display:flex}main.svelte-1furf50 .tools .buttons.svelte-1furf50>.svelte-1furf50{color:var(--text-faint);height:16px;width:16px;margin:0;transition:all 0.2s;border-radius:2px;margin-right:1px}main.svelte-1furf50 .tools .buttons.svelte-1furf50>.svelte-1furf50:hover{color:var(--text-normal);background-color:var(--interactive-accent)}"); + append_styles(target, "svelte-wn85nz", "main.svelte-wn85nz .nav-file-title-content.svelte-wn85nz.svelte-wn85nz{display:flex;align-items:center}main.svelte-wn85nz .tools.svelte-wn85nz.svelte-wn85nz{display:flex;margin-left:auto}main.svelte-wn85nz .tools .type.svelte-wn85nz.svelte-wn85nz{padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center}main.svelte-wn85nz .tools .type[data-type=M].svelte-wn85nz.svelte-wn85nz{color:orange}main.svelte-wn85nz .tools .type[data-type=D].svelte-wn85nz.svelte-wn85nz{color:red}main.svelte-wn85nz .tools .buttons.svelte-wn85nz.svelte-wn85nz{display:flex}main.svelte-wn85nz .tools .buttons.svelte-wn85nz>.svelte-wn85nz{padding:0 0;height:auto}"); } function create_if_block(ctx) { let div; @@ -27081,13 +27410,16 @@ function create_if_block(ctx) { div = element("div"); attr(div, "data-icon", "go-to-file"); attr(div, "aria-label", "Open File"); - attr(div, "class", "svelte-1furf50"); + attr(div, "class", "clickable-icon svelte-wn85nz"); }, m(target, anchor) { insert(target, div, anchor); - ctx[12](div); + ctx[11](div); if (!mounted) { - dispose = listen(div, "click", ctx[5]); + dispose = [ + listen(div, "auxclick", ctx[5]), + listen(div, "click", ctx[5]) + ]; mounted = true; } }, @@ -27095,105 +27427,108 @@ function create_if_block(ctx) { d(detaching) { if (detaching) detach(div); - ctx[12](null); + ctx[11](null); mounted = false; - dispose(); + run_all(dispose); } }; } function create_fragment(ctx) { + var _a2; let main; - let span0; - let t0_value = ctx[0].vault_path.split("/").last().replace(".md", "") + ""; + let div6; + let div0; + let t0_value = ((_a2 = ctx[0].vault_path.split("/").last()) == null ? void 0 : _a2.replace(".md", "")) + ""; let t0; - let span0_aria_label_value; let t1; + let div5; let div3; - let div2; let show_if = ctx[1].app.vault.getAbstractFileByPath(ctx[0].vault_path); let t2; - let div0; - let t3; let div1; + let t3; + let div2; let t4; - let span1; + let div4; let t5_value = ctx[0].working_dir + ""; let t5; - let span1_data_type_value; + let div4_data_type_value; + let div6_aria_label_value; let mounted; let dispose; let if_block = show_if && create_if_block(ctx); return { c() { main = element("main"); - span0 = element("span"); + div6 = element("div"); + div0 = element("div"); t0 = text(t0_value); t1 = space(); + div5 = element("div"); div3 = element("div"); - div2 = element("div"); if (if_block) if_block.c(); t2 = space(); - div0 = element("div"); - t3 = space(); div1 = element("div"); + t3 = space(); + div2 = element("div"); t4 = space(); - span1 = element("span"); + div4 = element("div"); t5 = text(t5_value); - attr(span0, "class", "path svelte-1furf50"); - attr(span0, "aria-label-position", ctx[3]); - attr(span0, "aria-label", span0_aria_label_value = ctx[0].vault_path.split("/").last() != ctx[0].vault_path ? ctx[0].vault_path : ""); - attr(div0, "data-icon", "skip-back"); - attr(div0, "aria-label", "Discard"); - attr(div0, "class", "svelte-1furf50"); - attr(div1, "data-icon", "plus"); - attr(div1, "aria-label", "Stage"); - attr(div1, "class", "svelte-1furf50"); - attr(div2, "class", "buttons svelte-1furf50"); - attr(span1, "class", "type svelte-1furf50"); - attr(span1, "data-type", span1_data_type_value = ctx[0].working_dir); - attr(div3, "class", "tools svelte-1furf50"); - attr(main, "class", "svelte-1furf50"); + attr(div0, "class", "nav-file-title-content svelte-wn85nz"); + attr(div1, "data-icon", "undo"); + attr(div1, "aria-label", "Discard"); + attr(div1, "class", "clickable-icon svelte-wn85nz"); + attr(div2, "data-icon", "plus"); + attr(div2, "aria-label", "Stage"); + attr(div2, "class", "clickable-icon svelte-wn85nz"); + attr(div3, "class", "buttons svelte-wn85nz"); + attr(div4, "class", "type svelte-wn85nz"); + attr(div4, "data-type", div4_data_type_value = ctx[0].working_dir); + attr(div5, "class", "tools svelte-wn85nz"); + attr(div6, "class", "nav-file-title"); + attr(div6, "aria-label-position", ctx[3]); + attr(div6, "aria-label", div6_aria_label_value = ctx[0].vault_path.split("/").last() != ctx[0].vault_path ? ctx[0].vault_path : ""); + attr(main, "class", "nav-file svelte-wn85nz"); }, m(target, anchor) { insert(target, main, anchor); - append2(main, span0); - append2(span0, t0); - append2(main, t1); - append2(main, div3); - append2(div3, div2); + append2(main, div6); + append2(div6, div0); + append2(div0, t0); + append2(div6, t1); + append2(div6, div5); + append2(div5, div3); if (if_block) - if_block.m(div2, null); - append2(div2, t2); - append2(div2, div0); - ctx[13](div0); - append2(div2, t3); - append2(div2, div1); - ctx[14](div1); - append2(div3, t4); - append2(div3, span1); - append2(span1, t5); + if_block.m(div3, null); + append2(div3, t2); + append2(div3, div1); + ctx[12](div1); + append2(div3, t3); + append2(div3, div2); + ctx[13](div2); + append2(div5, t4); + append2(div5, div4); + append2(div4, t5); if (!mounted) { dispose = [ - listen(span0, "click", self2(ctx[7])), - listen(div0, "click", ctx[8]), - listen(div1, "click", ctx[6]), + listen(div0, "click", ctx[7]), + listen(div0, "auxclick", ctx[7]), + listen(div1, "click", ctx[8]), + listen(div2, "click", ctx[6]), + listen(div6, "click", self2(ctx[7])), + listen(div6, "auxclick", self2(ctx[7])), listen(main, "mouseover", ctx[4]), listen(main, "click", self2(ctx[7])), - listen(main, "focus", ctx[11]) + listen(main, "focus", ctx[10]) ]; mounted = true; } }, p(ctx2, [dirty]) { - if (dirty & 1 && t0_value !== (t0_value = ctx2[0].vault_path.split("/").last().replace(".md", "") + "")) + var _a3; + if (dirty & 1 && t0_value !== (t0_value = ((_a3 = ctx2[0].vault_path.split("/").last()) == null ? void 0 : _a3.replace(".md", "")) + "")) set_data(t0, t0_value); - if (dirty & 8) { - attr(span0, "aria-label-position", ctx2[3]); - } - if (dirty & 1 && span0_aria_label_value !== (span0_aria_label_value = ctx2[0].vault_path.split("/").last() != ctx2[0].vault_path ? ctx2[0].vault_path : "")) { - attr(span0, "aria-label", span0_aria_label_value); - } if (dirty & 3) show_if = ctx2[1].app.vault.getAbstractFileByPath(ctx2[0].vault_path); if (show_if) { @@ -27202,7 +27537,7 @@ function create_fragment(ctx) { } else { if_block = create_if_block(ctx2); if_block.c(); - if_block.m(div2, t2); + if_block.m(div3, t2); } } else if (if_block) { if_block.d(1); @@ -27210,8 +27545,14 @@ function create_fragment(ctx) { } if (dirty & 1 && t5_value !== (t5_value = ctx2[0].working_dir + "")) set_data(t5, t5_value); - if (dirty & 1 && span1_data_type_value !== (span1_data_type_value = ctx2[0].working_dir)) { - attr(span1, "data-type", span1_data_type_value); + if (dirty & 1 && div4_data_type_value !== (div4_data_type_value = ctx2[0].working_dir)) { + attr(div4, "data-type", div4_data_type_value); + } + if (dirty & 8) { + attr(div6, "aria-label-position", ctx2[3]); + } + if (dirty & 1 && div6_aria_label_value !== (div6_aria_label_value = ctx2[0].vault_path.split("/").last() != ctx2[0].vault_path ? ctx2[0].vault_path : "")) { + attr(div6, "aria-label", div6_aria_label_value); } }, i: noop, @@ -27221,8 +27562,8 @@ function create_fragment(ctx) { detach(main); if (if_block) if_block.d(); + ctx[12](null); ctx[13](null); - ctx[14](null); mounted = false; run_all(dispose); } @@ -27233,17 +27574,19 @@ function instance($$self, $$props, $$invalidate) { let { change } = $$props; let { view } = $$props; let { manager } = $$props; - let { workspace } = $$props; let buttons = []; - window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian17.setIcon)(b, b.getAttr("data-icon"), 16)), 0); + window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian18.setIcon)(b, b.getAttr("data-icon"))), 0); function hover(event) { if (!change.path.startsWith(view.app.vault.configDir) || !change.path.startsWith(".")) { hoverPreview(event, view, change.vault_path.split("/").last().replace(".md", "")); } } function open(event) { - if (!(change.path.startsWith(view.app.vault.configDir) || change.path.startsWith(".") || change.working_dir === "D")) { - openOrSwitch(change.vault_path, event); + var _a2; + const file = view.app.vault.getAbstractFileByPath(change.vault_path); + console.log(event); + if (file instanceof import_obsidian18.TFile) { + (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file); } } function stage() { @@ -27252,19 +27595,12 @@ function instance($$self, $$props, $$invalidate) { }); } function showDiff(event) { - const leaf = workspace.getMostRecentLeaf(workspace.rootSplit); - if (leaf && !leaf.getViewState().pinned && !(event.ctrlKey || event.getModifierState("Meta"))) { - leaf.setViewState({ - type: DIFF_VIEW_CONFIG.type, - state: { file: change.path, staged: false } - }); - } else { - getNewLeaf().setViewState({ - type: DIFF_VIEW_CONFIG.type, - active: true, - state: { file: change.path, staged: false } - }); - } + var _a2; + (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.setViewState({ + type: DIFF_VIEW_CONFIG.type, + active: true, + state: { file: change.path, staged: false } + }); } function discard() { const deleteFile = change.working_dir == "U"; @@ -27291,13 +27627,13 @@ function instance($$self, $$props, $$invalidate) { $$invalidate(2, buttons); }); } - function div0_binding($$value) { + function div1_binding($$value) { binding_callbacks[$$value ? "unshift" : "push"](() => { buttons[0] = $$value; $$invalidate(2, buttons); }); } - function div1_binding($$value) { + function div2_binding($$value) { binding_callbacks[$$value ? "unshift" : "push"](() => { buttons[2] = $$value; $$invalidate(2, buttons); @@ -27310,8 +27646,6 @@ function instance($$self, $$props, $$invalidate) { $$invalidate(1, view = $$props2.view); if ("manager" in $$props2) $$invalidate(9, manager = $$props2.manager); - if ("workspace" in $$props2) - $$invalidate(10, workspace = $$props2.workspace); }; $$self.$$.update = () => { if ($$self.$$.dirty & 2) { @@ -27330,94 +27664,93 @@ function instance($$self, $$props, $$invalidate) { showDiff, discard, manager, - workspace, focus_handler, div_binding, - div0_binding, - div1_binding + div1_binding, + div2_binding ]; } var FileComponent = class extends SvelteComponent { constructor(options) { super(); - init2(this, options, instance, create_fragment, safe_not_equal, { - change: 0, - view: 1, - manager: 9, - workspace: 10 - }, add_css); + init2(this, options, instance, create_fragment, safe_not_equal, { change: 0, view: 1, manager: 9 }, add_css); } }; var fileComponent_default = FileComponent; // src/ui/sidebar/components/pulledFileComponent.svelte init_polyfill_buffer(); -var import_obsidian18 = __toModule(require("obsidian")); +var import_obsidian19 = __toModule(require("obsidian")); function add_css2(target) { - append_styles(target, "svelte-1pr4yz5", "main.svelte-1pr4yz5.svelte-1pr4yz5{cursor:pointer;background-color:var(--background-secondary);border-radius:4px;width:98%;display:flex;justify-content:space-between;font-size:0.8rem;margin-bottom:2px}main.svelte-1pr4yz5 .path.svelte-1pr4yz5{color:var(--text-muted);white-space:nowrap;max-width:75%;overflow:hidden;text-overflow:ellipsis}main.svelte-1pr4yz5:hover .path.svelte-1pr4yz5{color:var(--text-normal);transition:all 200ms}main.svelte-1pr4yz5 .tools.svelte-1pr4yz5{display:flex;align-items:center}main.svelte-1pr4yz5 .tools .type.svelte-1pr4yz5{height:16px;width:16px;margin:0;display:flex;align-items:center;justify-content:center}main.svelte-1pr4yz5 .tools .type[data-type=M].svelte-1pr4yz5{color:orange}main.svelte-1pr4yz5 .tools .type[data-type=D].svelte-1pr4yz5{color:red}"); + append_styles(target, "svelte-sajhpp", "main.svelte-sajhpp .nav-file-title-content.svelte-sajhpp{display:flex;align-items:center}main.svelte-sajhpp .tools.svelte-sajhpp{display:flex;margin-left:auto}main.svelte-sajhpp .tools .type.svelte-sajhpp{padding-left:var(--size-2-1);display:flex;align-items:center;justify-content:center}main.svelte-sajhpp .tools .type[data-type=M].svelte-sajhpp{color:orange}main.svelte-sajhpp .tools .type[data-type=D].svelte-sajhpp{color:red}"); } function create_fragment2(ctx) { + var _a2; let main; - let span0; - let t0_value = ctx[0].vault_path.split("/").last().replace(".md", "") + ""; + let div2; + let div0; + let t0_value = ((_a2 = ctx[0].vault_path.split("/").last()) == null ? void 0 : _a2.replace(".md", "")) + ""; let t0; - let span0_aria_label_value; let t1; - let div; - let span1; + let div1; + let span; let t2_value = ctx[0].working_dir + ""; let t2; - let span1_data_type_value; + let span_data_type_value; + let div2_aria_label_value; let mounted; let dispose; return { c() { main = element("main"); - span0 = element("span"); + div2 = element("div"); + div0 = element("div"); t0 = text(t0_value); t1 = space(); - div = element("div"); - span1 = element("span"); + div1 = element("div"); + span = element("span"); t2 = text(t2_value); - attr(span0, "class", "path svelte-1pr4yz5"); - attr(span0, "aria-label-position", ctx[1]); - attr(span0, "aria-label", span0_aria_label_value = ctx[0].vault_path.split("/").last() != ctx[0].vault_path ? ctx[0].vault_path : ""); - attr(span1, "class", "type svelte-1pr4yz5"); - attr(span1, "data-type", span1_data_type_value = ctx[0].working_dir); - attr(div, "class", "tools svelte-1pr4yz5"); - attr(main, "class", "svelte-1pr4yz5"); + attr(div0, "class", "nav-file-title-content svelte-sajhpp"); + attr(span, "class", "type svelte-sajhpp"); + attr(span, "data-type", span_data_type_value = ctx[0].working_dir); + attr(div1, "class", "tools svelte-sajhpp"); + attr(div2, "class", "nav-file-title"); + attr(div2, "aria-label-position", ctx[1]); + attr(div2, "aria-label", div2_aria_label_value = ctx[0].vault_path.split("/").last() != ctx[0].vault_path ? ctx[0].vault_path : ""); + attr(main, "class", "nav-file svelte-sajhpp"); }, m(target, anchor) { insert(target, main, anchor); - append2(main, span0); - append2(span0, t0); - append2(main, t1); - append2(main, div); - append2(div, span1); - append2(span1, t2); + append2(main, div2); + append2(div2, div0); + append2(div0, t0); + append2(div2, t1); + append2(div2, div1); + append2(div1, span); + append2(span, t2); if (!mounted) { dispose = [ - listen(span0, "click", self2(ctx[3])), listen(main, "mouseover", ctx[2]), - listen(main, "click", self2(ctx[3])), + listen(main, "click", ctx[3]), listen(main, "focus", ctx[5]) ]; mounted = true; } }, p(ctx2, [dirty]) { - if (dirty & 1 && t0_value !== (t0_value = ctx2[0].vault_path.split("/").last().replace(".md", "") + "")) + var _a3; + if (dirty & 1 && t0_value !== (t0_value = ((_a3 = ctx2[0].vault_path.split("/").last()) == null ? void 0 : _a3.replace(".md", "")) + "")) set_data(t0, t0_value); - if (dirty & 2) { - attr(span0, "aria-label-position", ctx2[1]); - } - if (dirty & 1 && span0_aria_label_value !== (span0_aria_label_value = ctx2[0].vault_path.split("/").last() != ctx2[0].vault_path ? ctx2[0].vault_path : "")) { - attr(span0, "aria-label", span0_aria_label_value); - } if (dirty & 1 && t2_value !== (t2_value = ctx2[0].working_dir + "")) set_data(t2, t2_value); - if (dirty & 1 && span1_data_type_value !== (span1_data_type_value = ctx2[0].working_dir)) { - attr(span1, "data-type", span1_data_type_value); + if (dirty & 1 && span_data_type_value !== (span_data_type_value = ctx2[0].working_dir)) { + attr(span, "data-type", span_data_type_value); + } + if (dirty & 2) { + attr(div2, "aria-label-position", ctx2[1]); + } + if (dirty & 1 && div2_aria_label_value !== (div2_aria_label_value = ctx2[0].vault_path.split("/").last() != ctx2[0].vault_path ? ctx2[0].vault_path : "")) { + attr(div2, "aria-label", div2_aria_label_value); } }, i: noop, @@ -27440,8 +27773,10 @@ function instance2($$self, $$props, $$invalidate) { } } function open(event) { - if (!(change.path.startsWith(view.app.vault.configDir) || change.path.startsWith(".") || change.working_dir === "D")) { - openOrSwitch(change.vault_path, event); + var _a2; + const file = view.app.vault.getAbstractFileByPath(change.vault_path); + if (file instanceof import_obsidian19.TFile) { + (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file); } } function focus_handler(event) { @@ -27471,9 +27806,9 @@ var pulledFileComponent_default = PulledFileComponent; // src/ui/sidebar/components/stagedFileComponent.svelte init_polyfill_buffer(); -var import_obsidian19 = __toModule(require("obsidian")); +var import_obsidian20 = __toModule(require("obsidian")); function add_css3(target) { - append_styles(target, "svelte-15heedx", "main.svelte-15heedx.svelte-15heedx.svelte-15heedx{cursor:pointer;background-color:var(--background-secondary);border-radius:4px;width:98%;display:flex;justify-content:space-between;font-size:0.8rem;margin-bottom:2px}main.svelte-15heedx .path.svelte-15heedx.svelte-15heedx{color:var(--text-muted);white-space:nowrap;max-width:75%;overflow:hidden;text-overflow:ellipsis}main.svelte-15heedx:hover .path.svelte-15heedx.svelte-15heedx{color:var(--text-normal);transition:all 200ms}main.svelte-15heedx .tools.svelte-15heedx.svelte-15heedx{display:flex;align-items:center}main.svelte-15heedx .tools .type.svelte-15heedx.svelte-15heedx{height:16px;width:16px;margin:0;display:flex;align-items:center;justify-content:center}main.svelte-15heedx .tools .type[data-type=M].svelte-15heedx.svelte-15heedx{color:orange}main.svelte-15heedx .tools .type[data-type=D].svelte-15heedx.svelte-15heedx{color:red}main.svelte-15heedx .tools .type[data-type=A].svelte-15heedx.svelte-15heedx{color:yellowgreen}main.svelte-15heedx .tools .type[data-type=R].svelte-15heedx.svelte-15heedx{color:violet}main.svelte-15heedx .tools .buttons.svelte-15heedx.svelte-15heedx{display:flex}main.svelte-15heedx .tools .buttons.svelte-15heedx>.svelte-15heedx{color:var(--text-faint);height:16px;width:16px;margin:0;transition:all 0.2s;border-radius:2px;margin-right:1px}main.svelte-15heedx .tools .buttons.svelte-15heedx>.svelte-15heedx:hover{color:var(--text-normal);background-color:var(--interactive-accent)}"); + append_styles(target, "svelte-wn85nz", "main.svelte-wn85nz .nav-file-title-content.svelte-wn85nz.svelte-wn85nz{display:flex;align-items:center}main.svelte-wn85nz .tools.svelte-wn85nz.svelte-wn85nz{display:flex;margin-left:auto}main.svelte-wn85nz .tools .type.svelte-wn85nz.svelte-wn85nz{padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center}main.svelte-wn85nz .tools .type[data-type=M].svelte-wn85nz.svelte-wn85nz{color:orange}main.svelte-wn85nz .tools .type[data-type=D].svelte-wn85nz.svelte-wn85nz{color:red}main.svelte-wn85nz .tools .buttons.svelte-wn85nz.svelte-wn85nz{display:flex}main.svelte-wn85nz .tools .buttons.svelte-wn85nz>.svelte-wn85nz{padding:0 0;height:auto}"); } function create_if_block2(ctx) { let div; @@ -27484,7 +27819,7 @@ function create_if_block2(ctx) { div = element("div"); attr(div, "data-icon", "go-to-file"); attr(div, "aria-label", "Open File"); - attr(div, "class", "svelte-15heedx"); + attr(div, "class", "clickable-icon svelte-wn85nz"); }, m(target, anchor) { insert(target, div, anchor); @@ -27505,71 +27840,78 @@ function create_if_block2(ctx) { }; } function create_fragment3(ctx) { + var _a2; let main; - let span0; - let t0_value = ctx[3].split("/").last().replace(".md", "") + ""; + let div5; + let div0; + let t0_value = ((_a2 = ctx[3].split("/").last()) == null ? void 0 : _a2.replace(".md", "")) + ""; let t0; - let span0_aria_label_value; let t1; + let div4; let div2; - let div1; let show_if = ctx[1].app.vault.getAbstractFileByPath(ctx[3]); let t2; - let div0; + let div1; let t3; - let span1; + let div3; let t4_value = ctx[0].index + ""; let t4; - let span1_data_type_value; + let div3_data_type_value; + let div5_aria_label_value; let mounted; let dispose; let if_block = show_if && create_if_block2(ctx); return { c() { main = element("main"); - span0 = element("span"); + div5 = element("div"); + div0 = element("div"); t0 = text(t0_value); t1 = space(); + div4 = element("div"); div2 = element("div"); - div1 = element("div"); if (if_block) if_block.c(); t2 = space(); - div0 = element("div"); + div1 = element("div"); t3 = space(); - span1 = element("span"); + div3 = element("div"); t4 = text(t4_value); - attr(span0, "class", "path svelte-15heedx"); - attr(span0, "aria-label-position", ctx[4]); - attr(span0, "aria-label", span0_aria_label_value = ctx[3].split("/").last() != ctx[3] ? ctx[3] : ""); - attr(div0, "data-icon", "minus"); - attr(div0, "aria-label", "Unstage"); - attr(div0, "class", "svelte-15heedx"); - attr(div1, "class", "buttons svelte-15heedx"); - attr(span1, "class", "type svelte-15heedx"); - attr(span1, "data-type", span1_data_type_value = ctx[0].index); - attr(div2, "class", "tools svelte-15heedx"); - attr(main, "class", "svelte-15heedx"); + attr(div0, "class", "nav-file-title-content svelte-wn85nz"); + attr(div1, "data-icon", "minus"); + attr(div1, "aria-label", "Unstage"); + attr(div1, "class", "clickable-icon svelte-wn85nz"); + attr(div2, "class", "buttons svelte-wn85nz"); + attr(div3, "class", "type svelte-wn85nz"); + attr(div3, "data-type", div3_data_type_value = ctx[0].index); + attr(div4, "class", "tools svelte-wn85nz"); + attr(div5, "class", "nav-file-title"); + attr(div5, "aria-label-position", ctx[4]); + attr(div5, "aria-label", div5_aria_label_value = ctx[3].split("/").last() != ctx[3] ? ctx[3] : ""); + attr(main, "class", "nav-file svelte-wn85nz"); }, m(target, anchor) { insert(target, main, anchor); - append2(main, span0); - append2(span0, t0); - append2(main, t1); - append2(main, div2); - append2(div2, div1); + append2(main, div5); + append2(div5, div0); + append2(div0, t0); + append2(div5, t1); + append2(div5, div4); + append2(div4, div2); if (if_block) - if_block.m(div1, null); - append2(div1, t2); - append2(div1, div0); - ctx[12](div0); - append2(div2, t3); - append2(div2, span1); - append2(span1, t4); + if_block.m(div2, null); + append2(div2, t2); + append2(div2, div1); + ctx[12](div1); + append2(div4, t3); + append2(div4, div3); + append2(div3, t4); if (!mounted) { dispose = [ - listen(span0, "click", ctx[7]), - listen(div0, "click", ctx[8]), + listen(div0, "click", ctx[7]), + listen(div0, "auxclick", ctx[7]), + listen(div1, "click", ctx[8]), + listen(div5, "click", self2(ctx[7])), listen(main, "mouseover", ctx[5]), listen(main, "focus", ctx[10]), listen(main, "click", self2(ctx[7])) @@ -27578,14 +27920,9 @@ function create_fragment3(ctx) { } }, p(ctx2, [dirty]) { - if (dirty & 8 && t0_value !== (t0_value = ctx2[3].split("/").last().replace(".md", "") + "")) + var _a3; + if (dirty & 8 && t0_value !== (t0_value = ((_a3 = ctx2[3].split("/").last()) == null ? void 0 : _a3.replace(".md", "")) + "")) set_data(t0, t0_value); - if (dirty & 16) { - attr(span0, "aria-label-position", ctx2[4]); - } - if (dirty & 8 && span0_aria_label_value !== (span0_aria_label_value = ctx2[3].split("/").last() != ctx2[3] ? ctx2[3] : "")) { - attr(span0, "aria-label", span0_aria_label_value); - } if (dirty & 10) show_if = ctx2[1].app.vault.getAbstractFileByPath(ctx2[3]); if (show_if) { @@ -27594,7 +27931,7 @@ function create_fragment3(ctx) { } else { if_block = create_if_block2(ctx2); if_block.c(); - if_block.m(div1, t2); + if_block.m(div2, t2); } } else if (if_block) { if_block.d(1); @@ -27602,8 +27939,14 @@ function create_fragment3(ctx) { } if (dirty & 1 && t4_value !== (t4_value = ctx2[0].index + "")) set_data(t4, t4_value); - if (dirty & 1 && span1_data_type_value !== (span1_data_type_value = ctx2[0].index)) { - attr(span1, "data-type", span1_data_type_value); + if (dirty & 1 && div3_data_type_value !== (div3_data_type_value = ctx2[0].index)) { + attr(div3, "data-type", div3_data_type_value); + } + if (dirty & 16) { + attr(div5, "aria-label-position", ctx2[4]); + } + if (dirty & 8 && div5_aria_label_value !== (div5_aria_label_value = ctx2[3].split("/").last() != ctx2[3] ? ctx2[3] : "")) { + attr(div5, "aria-label", div5_aria_label_value); } }, i: noop, @@ -27626,33 +27969,26 @@ function instance3($$self, $$props, $$invalidate) { let { view } = $$props; let { manager } = $$props; let buttons = []; - window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian19.setIcon)(b, b.getAttr("data-icon"), 16)), 0); + window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian20.setIcon)(b, b.getAttr("data-icon"), 16)), 0); function hover(event) { if (!change.path.startsWith(view.app.vault.configDir) || !change.path.startsWith(".")) { hoverPreview(event, view, formattedPath.split("/").last().replace(".md", "")); } } function open(event) { - if (!(change.path.startsWith(view.app.vault.configDir) || change.path.startsWith(".") || change.index === "D")) { - openOrSwitch(formattedPath, event); + var _a2; + const file = view.app.vault.getAbstractFileByPath(change.vault_path); + if (file instanceof import_obsidian20.TFile) { + (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file); } } function showDiff(event) { - const workspace = view.app.workspace; - const leaf = workspace.getMostRecentLeaf(workspace.rootSplit); - if (leaf && !leaf.getViewState().pinned && !(event.ctrlKey || event.getModifierState("Meta"))) { - leaf.setViewState({ - type: DIFF_VIEW_CONFIG.type, - state: { file: change.path, staged: true } - }); - workspace.setActiveLeaf(leaf, true, true); - } else { - getNewLeaf().setViewState({ - type: DIFF_VIEW_CONFIG.type, - active: true, - state: { file: change.path, staged: true } - }); - } + var _a2; + (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.setViewState({ + type: DIFF_VIEW_CONFIG.type, + active: true, + state: { file: change.path, staged: true } + }); } function unstage() { manager.unstage(change.path, false).finally(() => { @@ -27668,7 +28004,7 @@ function instance3($$self, $$props, $$invalidate) { $$invalidate(2, buttons); }); } - function div0_binding($$value) { + function div1_binding($$value) { binding_callbacks[$$value ? "unshift" : "push"](() => { buttons[0] = $$value; $$invalidate(2, buttons); @@ -27705,7 +28041,7 @@ function instance3($$self, $$props, $$invalidate) { manager, focus_handler, div_binding, - div0_binding + div1_binding ]; } var StagedFileComponent = class extends SvelteComponent { @@ -27719,115 +28055,177 @@ var stagedFileComponent_default = StagedFileComponent; // src/ui/sidebar/components/treeComponent.svelte init_polyfill_buffer(); function add_css4(target) { - append_styles(target, "svelte-pgmdei", '@charset "UTF-8";main.svelte-pgmdei.svelte-pgmdei:not(.topLevel){margin-left:5px}.opener.svelte-pgmdei.svelte-pgmdei{display:flex;justify-content:space-between;align-items:center;padding:0 4px}.opener.svelte-pgmdei .collapse-icon.svelte-pgmdei::after{content:"\xA0"}.opener.svelte-pgmdei div.svelte-pgmdei{display:flex}.opener.svelte-pgmdei svg.svelte-pgmdei{transform:rotate(-90deg)}.opener.open.svelte-pgmdei svg.svelte-pgmdei{transform:rotate(0)}.opener.svelte-pgmdei span.svelte-pgmdei{font-size:0.8rem}.file-view.svelte-pgmdei.svelte-pgmdei{margin-left:5px}'); + append_styles(target, "svelte-148wteu", "main.svelte-148wteu .nav-folder-title-content.svelte-148wteu.svelte-148wteu{display:flex;align-items:center}main.svelte-148wteu .tools.svelte-148wteu.svelte-148wteu{display:flex;margin-left:auto}main.svelte-148wteu .tools .buttons.svelte-148wteu.svelte-148wteu{display:flex}main.svelte-148wteu .tools .buttons.svelte-148wteu>.svelte-148wteu{padding:0 0;height:auto}"); } function get_each_context(ctx, list, i) { const child_ctx = ctx.slice(); - child_ctx[7] = list[i]; + child_ctx[17] = list[i]; return child_ctx; } function create_else_block(ctx) { - let div2; - let div1; + let div7; + let div6; let div0; let t0; - let span; - let t1_value = ctx[7].title + ""; + let div1; let t1; + let div2; + let t2_value = ctx[17].title + ""; let t2; - let if_block_anchor; + let t3; + let div5; + let div4; + let t4; + let div3; + let div6_aria_label_value; + let t5; + let t6; let current; let mounted; let dispose; function click_handler() { - return ctx[6](ctx[7]); + return ctx[11](ctx[17]); } - let if_block = !ctx[5][ctx[7].title] && create_if_block_4(ctx); + function click_handler_1() { + return ctx[12](ctx[17]); + } + function select_block_type_2(ctx2, dirty) { + if (ctx2[3] == FileType.staged) + return create_if_block_5; + return create_else_block_1; + } + let current_block_type = select_block_type_2(ctx, -1); + let if_block0 = current_block_type(ctx); + function click_handler_5() { + return ctx[16](ctx[17]); + } + let if_block1 = !ctx[5][ctx[17].title] && create_if_block_4(ctx); return { c() { - div2 = element("div"); - div1 = element("div"); + div7 = element("div"); + div6 = element("div"); div0 = element("div"); - div0.innerHTML = ``; t0 = space(); - span = element("span"); - t1 = text(t1_value); - t2 = space(); - if (if_block) - if_block.c(); - if_block_anchor = empty(); - attr(div0, "class", "tree-item-icon collapse-icon svelte-pgmdei"); - attr(div0, "style", ""); - attr(span, "class", "svelte-pgmdei"); - attr(div1, "class", "svelte-pgmdei"); - attr(div2, "class", "opener tree-item-self is-clickable svelte-pgmdei"); - toggle_class(div2, "open", !ctx[5][ctx[7].title]); + div1 = element("div"); + div1.innerHTML = ``; + t1 = space(); + div2 = element("div"); + t2 = text(t2_value); + t3 = space(); + div5 = element("div"); + div4 = element("div"); + if_block0.c(); + t4 = space(); + div3 = element("div"); + t5 = space(); + if (if_block1) + if_block1.c(); + t6 = space(); + attr(div0, "data-icon", "folder"); + set_style(div0, "padding-right", "5px"); + set_style(div0, "display", "flex"); + attr(div1, "class", "nav-folder-collapse-indicator collapse-icon"); + attr(div2, "class", "nav-folder-title-content svelte-148wteu"); + set_style(div3, "width", "11px"); + attr(div3, "class", "svelte-148wteu"); + attr(div4, "class", "buttons svelte-148wteu"); + attr(div5, "class", "tools svelte-148wteu"); + attr(div6, "class", "nav-folder-title"); + attr(div6, "aria-label-position", ctx[6]); + attr(div6, "aria-label", div6_aria_label_value = ctx[17].vaultPath.split("/").last() != ctx[17].vaultPath ? ctx[17].vaultPath : ""); + attr(div7, "class", "nav-folder"); + toggle_class(div7, "is-collapsed", ctx[5][ctx[17].title]); }, m(target, anchor) { - insert(target, div2, anchor); - append2(div2, div1); - append2(div1, div0); - append2(div1, t0); - append2(div1, span); - append2(span, t1); - insert(target, t2, anchor); - if (if_block) - if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); + insert(target, div7, anchor); + append2(div7, div6); + append2(div6, div0); + append2(div6, t0); + append2(div6, div1); + append2(div6, t1); + append2(div6, div2); + append2(div2, t2); + append2(div6, t3); + append2(div6, div5); + append2(div5, div4); + if_block0.m(div4, null); + append2(div4, t4); + append2(div4, div3); + append2(div7, t5); + if (if_block1) + if_block1.m(div7, null); + append2(div7, t6); current = true; if (!mounted) { - dispose = listen(div2, "click", click_handler); + dispose = [ + listen(div1, "click", click_handler), + listen(div2, "click", click_handler_1), + listen(div6, "click", self2(click_handler_5)) + ]; mounted = true; } }, p(new_ctx, dirty) { ctx = new_ctx; - if ((!current || dirty & 1) && t1_value !== (t1_value = ctx[7].title + "")) - set_data(t1, t1_value); - if (!current || dirty & 33) { - toggle_class(div2, "open", !ctx[5][ctx[7].title]); + if ((!current || dirty & 1) && t2_value !== (t2_value = ctx[17].title + "")) + set_data(t2, t2_value); + if (current_block_type === (current_block_type = select_block_type_2(ctx, dirty)) && if_block0) { + if_block0.p(ctx, dirty); + } else { + if_block0.d(1); + if_block0 = current_block_type(ctx); + if (if_block0) { + if_block0.c(); + if_block0.m(div4, t4); + } } - if (!ctx[5][ctx[7].title]) { - if (if_block) { - if_block.p(ctx, dirty); + if (!current || dirty & 64) { + attr(div6, "aria-label-position", ctx[6]); + } + if (!current || dirty & 1 && div6_aria_label_value !== (div6_aria_label_value = ctx[17].vaultPath.split("/").last() != ctx[17].vaultPath ? ctx[17].vaultPath : "")) { + attr(div6, "aria-label", div6_aria_label_value); + } + if (!ctx[5][ctx[17].title]) { + if (if_block1) { + if_block1.p(ctx, dirty); if (dirty & 33) { - transition_in(if_block, 1); + transition_in(if_block1, 1); } } else { - if_block = create_if_block_4(ctx); - if_block.c(); - transition_in(if_block, 1); - if_block.m(if_block_anchor.parentNode, if_block_anchor); + if_block1 = create_if_block_4(ctx); + if_block1.c(); + transition_in(if_block1, 1); + if_block1.m(div7, t6); } - } else if (if_block) { + } else if (if_block1) { group_outros(); - transition_out(if_block, 1, 1, () => { - if_block = null; + transition_out(if_block1, 1, 1, () => { + if_block1 = null; }); check_outros(); } + if (!current || dirty & 33) { + toggle_class(div7, "is-collapsed", ctx[5][ctx[17].title]); + } }, i(local) { if (current) return; - transition_in(if_block); + transition_in(if_block1); current = true; }, o(local) { - transition_out(if_block); + transition_out(if_block1); current = false; }, d(detaching) { if (detaching) - detach(div2); - if (detaching) - detach(t2); - if (if_block) - if_block.d(detaching); - if (detaching) - detach(if_block_anchor); + detach(div7); + if_block0.d(); + if (if_block1) + if_block1.d(); mounted = false; - dispose(); + run_all(dispose); } }; } @@ -27857,7 +28255,6 @@ function create_if_block3(ctx) { if (if_block) if_block.c(); t = space(); - attr(div, "class", "file-view svelte-pgmdei"); }, m(target, anchor) { insert(target, div, anchor); @@ -27916,15 +28313,100 @@ function create_if_block3(ctx) { } }; } +function create_else_block_1(ctx) { + let div0; + let t; + let div1; + let mounted; + let dispose; + function click_handler_3() { + return ctx[14](ctx[17]); + } + function click_handler_4() { + return ctx[15](ctx[17]); + } + return { + c() { + div0 = element("div"); + div0.innerHTML = ``; + t = space(); + div1 = element("div"); + div1.innerHTML = ``; + attr(div0, "data-icon", "undo"); + attr(div0, "aria-label", "Discard"); + attr(div0, "class", "clickable-icon svelte-148wteu"); + attr(div1, "data-icon", "plus"); + attr(div1, "aria-label", "Stage"); + attr(div1, "class", "clickable-icon svelte-148wteu"); + }, + m(target, anchor) { + insert(target, div0, anchor); + insert(target, t, anchor); + insert(target, div1, anchor); + if (!mounted) { + dispose = [ + listen(div0, "click", click_handler_3), + listen(div1, "click", click_handler_4) + ]; + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; + }, + d(detaching) { + if (detaching) + detach(div0); + if (detaching) + detach(t); + if (detaching) + detach(div1); + mounted = false; + run_all(dispose); + } + }; +} +function create_if_block_5(ctx) { + let div; + let mounted; + let dispose; + function click_handler_2() { + return ctx[13](ctx[17]); + } + return { + c() { + div = element("div"); + div.innerHTML = ``; + attr(div, "data-icon", "minus"); + attr(div, "aria-label", "Unstage"); + attr(div, "class", "clickable-icon svelte-148wteu"); + }, + m(target, anchor) { + insert(target, div, anchor); + if (!mounted) { + dispose = listen(div, "click", click_handler_2); + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; + }, + d(detaching) { + if (detaching) + detach(div); + mounted = false; + dispose(); + } + }; +} function create_if_block_4(ctx) { let div; let treecomponent; - let t; let div_transition; let current; treecomponent = new TreeComponent({ props: { - hierarchy: ctx[7], + hierarchy: ctx[17], plugin: ctx[1], view: ctx[2], fileType: ctx[3] @@ -27934,19 +28416,17 @@ function create_if_block_4(ctx) { c() { div = element("div"); create_component(treecomponent.$$.fragment); - t = space(); - attr(div, "class", "file-view svelte-pgmdei"); + attr(div, "class", "nav-folder-children"); }, m(target, anchor) { insert(target, div, anchor); mount_component(treecomponent, div, null); - append2(div, t); current = true; }, p(ctx2, dirty) { const treecomponent_changes = {}; if (dirty & 1) - treecomponent_changes.hierarchy = ctx2[7]; + treecomponent_changes.hierarchy = ctx2[17]; if (dirty & 2) treecomponent_changes.plugin = ctx2[1]; if (dirty & 4) @@ -27962,7 +28442,7 @@ function create_if_block_4(ctx) { if (local) { add_render_callback(() => { if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 75 }, true); + div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); div_transition.run(1); }); } @@ -27972,7 +28452,7 @@ function create_if_block_4(ctx) { transition_out(treecomponent.$$.fragment, local); if (local) { if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 75 }, false); + div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); div_transition.run(0); } current = false; @@ -27991,7 +28471,7 @@ function create_if_block_3(ctx) { let current; pulledfilecomponent = new pulledFileComponent_default({ props: { - change: ctx[7].statusResult, + change: ctx[17].statusResult, view: ctx[2] } }); @@ -28006,7 +28486,7 @@ function create_if_block_3(ctx) { p(ctx2, dirty) { const pulledfilecomponent_changes = {}; if (dirty & 1) - pulledfilecomponent_changes.change = ctx2[7].statusResult; + pulledfilecomponent_changes.change = ctx2[17].statusResult; if (dirty & 4) pulledfilecomponent_changes.view = ctx2[2]; pulledfilecomponent.$set(pulledfilecomponent_changes); @@ -28031,10 +28511,9 @@ function create_if_block_2(ctx) { let current; filecomponent = new fileComponent_default({ props: { - change: ctx[7].statusResult, + change: ctx[17].statusResult, manager: ctx[1].gitManager, - view: ctx[2], - workspace: ctx[1].app.workspace + view: ctx[2] } }); return { @@ -28048,13 +28527,11 @@ function create_if_block_2(ctx) { p(ctx2, dirty) { const filecomponent_changes = {}; if (dirty & 1) - filecomponent_changes.change = ctx2[7].statusResult; + filecomponent_changes.change = ctx2[17].statusResult; if (dirty & 2) filecomponent_changes.manager = ctx2[1].gitManager; if (dirty & 4) filecomponent_changes.view = ctx2[2]; - if (dirty & 2) - filecomponent_changes.workspace = ctx2[1].app.workspace; filecomponent.$set(filecomponent_changes); }, i(local) { @@ -28077,7 +28554,7 @@ function create_if_block_1(ctx) { let current; stagedfilecomponent = new stagedFileComponent_default({ props: { - change: ctx[7].statusResult, + change: ctx[17].statusResult, manager: ctx[1].gitManager, view: ctx[2] } @@ -28093,7 +28570,7 @@ function create_if_block_1(ctx) { p(ctx2, dirty) { const stagedfilecomponent_changes = {}; if (dirty & 1) - stagedfilecomponent_changes.change = ctx2[7].statusResult; + stagedfilecomponent_changes.change = ctx2[17].statusResult; if (dirty & 2) stagedfilecomponent_changes.manager = ctx2[1].gitManager; if (dirty & 4) @@ -28123,7 +28600,7 @@ function create_each_block(ctx) { const if_block_creators = [create_if_block3, create_else_block]; const if_blocks = []; function select_block_type(ctx2, dirty) { - if (ctx2[7].statusResult) + if (ctx2[17].statusResult) return 0; return 1; } @@ -28195,7 +28672,7 @@ function create_fragment4(ctx) { for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].c(); } - attr(main, "class", "svelte-pgmdei"); + attr(main, "class", "svelte-148wteu"); toggle_class(main, "topLevel", ctx[4]); }, m(target, anchor) { @@ -28206,7 +28683,7 @@ function create_fragment4(ctx) { current = true; }, p(ctx2, [dirty]) { - if (dirty & 47) { + if (dirty & 2031) { each_value = ctx2[0].children; let i; for (i = 0; i < each_value.length; i += 1) { @@ -28254,15 +28731,44 @@ function create_fragment4(ctx) { }; } function instance4($$self, $$props, $$invalidate) { + let side; let { hierarchy } = $$props; let { plugin } = $$props; let { view } = $$props; let { fileType } = $$props; let { topLevel = false } = $$props; const closed = {}; - const click_handler = (entity) => { - $$invalidate(5, closed[entity.title] = !closed[entity.title], closed); - }; + function stage(path2) { + plugin.gitManager.stageAll({ dir: path2 }).finally(() => { + dispatchEvent(new CustomEvent("git-refresh")); + }); + } + function unstage(path2) { + plugin.gitManager.unstageAll({ dir: path2 }).finally(() => { + dispatchEvent(new CustomEvent("git-refresh")); + }); + } + function discard(item) { + new DiscardModal(view.app, false, item.vaultPath).myOpen().then((shouldDiscard) => { + if (shouldDiscard === true) { + plugin.gitManager.discardAll({ + dir: item.path, + status: plugin.cachedStatus + }).finally(() => { + dispatchEvent(new CustomEvent("git-refresh")); + }); + } + }); + } + function fold(item) { + $$invalidate(5, closed[item.title] = !closed[item.title], closed); + } + const click_handler = (entity) => fold(entity); + const click_handler_1 = (entity) => fold(entity); + const click_handler_2 = (entity) => unstage(entity.path); + const click_handler_3 = (entity) => discard(entity); + const click_handler_4 = (entity) => stage(entity.path); + const click_handler_5 = (entity) => fold(entity); $$self.$$set = ($$props2) => { if ("hierarchy" in $$props2) $$invalidate(0, hierarchy = $$props2.hierarchy); @@ -28275,7 +28781,31 @@ function instance4($$self, $$props, $$invalidate) { if ("topLevel" in $$props2) $$invalidate(4, topLevel = $$props2.topLevel); }; - return [hierarchy, plugin, view, fileType, topLevel, closed, click_handler]; + $$self.$$.update = () => { + if ($$self.$$.dirty & 4) { + $: + $$invalidate(6, side = view.leaf.getRoot().side == "left" ? "right" : "left"); + } + }; + return [ + hierarchy, + plugin, + view, + fileType, + topLevel, + closed, + side, + stage, + unstage, + discard, + fold, + click_handler, + click_handler_1, + click_handler_2, + click_handler_3, + click_handler_4, + click_handler_5 + ]; } var TreeComponent = class extends SvelteComponent { constructor(options) { @@ -28293,21 +28823,21 @@ var treeComponent_default = TreeComponent; // src/ui/sidebar/gitView.svelte function add_css5(target) { - append_styles(target, "svelte-1f0ksxd", '@charset "UTF-8";.commit-msg.svelte-1f0ksxd.svelte-1f0ksxd{width:100%;min-height:1.9em;height:1.9em;resize:vertical;padding:2px 5px;background-color:var(--background-modifier-form-field)}.search-input-container.svelte-1f0ksxd.svelte-1f0ksxd{width:100%}.file-view.svelte-1f0ksxd.svelte-1f0ksxd{margin-left:5px}.opener.svelte-1f0ksxd.svelte-1f0ksxd{display:flex;justify-content:space-between;align-items:center;padding:0 4px}.opener.svelte-1f0ksxd .collapse-icon.svelte-1f0ksxd::after{content:"\xA0"}.opener.svelte-1f0ksxd div.svelte-1f0ksxd{display:flex}.opener.svelte-1f0ksxd svg.svelte-1f0ksxd{transform:rotate(-90deg)}.opener.open.svelte-1f0ksxd svg.svelte-1f0ksxd{transform:rotate(0)}.git-view-body.svelte-1f0ksxd.svelte-1f0ksxd{overflow-y:auto;padding-left:10px}main.svelte-1f0ksxd.svelte-1f0ksxd{display:flex;flex-direction:column;height:100%;overflow-y:hidden}.nav-buttons-container.svelte-1f0ksxd.svelte-1f0ksxd{justify-content:space-between}.group.svelte-1f0ksxd.svelte-1f0ksxd{display:flex}'); + append_styles(target, "svelte-fnxzfa", `.commit-msg-input.svelte-fnxzfa.svelte-fnxzfa.svelte-fnxzfa{width:100%;overflow:hidden;resize:none;padding:7px 5px;background-color:var(--background-modifier-form-field)}.git-commit-msg.svelte-fnxzfa.svelte-fnxzfa.svelte-fnxzfa{position:relative;padding:0;width:calc(100% - var(--size-4-8));margin:4px auto}main.svelte-fnxzfa .tools.svelte-fnxzfa.svelte-fnxzfa{display:flex;margin-left:auto}main.svelte-fnxzfa .tools .buttons.svelte-fnxzfa.svelte-fnxzfa{display:flex}main.svelte-fnxzfa .tools .buttons.svelte-fnxzfa>.svelte-fnxzfa{padding:0 0;height:auto}main.svelte-fnxzfa .tools .files-count.svelte-fnxzfa.svelte-fnxzfa{padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center}.git-commit-msg-clear-button.svelte-fnxzfa.svelte-fnxzfa.svelte-fnxzfa{position:absolute;background:transparent;border-radius:50%;color:var(--search-clear-button-color);cursor:var(--cursor);top:-4px;right:2px;bottom:0px;line-height:0;height:var(--input-height);width:28px;margin:auto;padding:0 0;text-align:center;display:flex;justify-content:center;align-items:center;transition:color 0.15s ease-in-out}.git-commit-msg-clear-button.svelte-fnxzfa.svelte-fnxzfa.svelte-fnxzfa:after{content:"";height:var(--search-clear-button-size);width:var(--search-clear-button-size);display:block;background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,");-webkit-mask-repeat:no-repeat}.tree-item-flair.svelte-fnxzfa.svelte-fnxzfa.svelte-fnxzfa{margin-left:auto;align-items:center}`); } function get_each_context2(ctx, list, i) { const child_ctx = ctx.slice(); - child_ctx[34] = list[i]; + child_ctx[43] = list[i]; return child_ctx; } function get_each_context_1(ctx, list, i) { const child_ctx = ctx.slice(); - child_ctx[34] = list[i]; + child_ctx[43] = list[i]; return child_ctx; } function get_each_context_2(ctx, list, i) { const child_ctx = ctx.slice(); - child_ctx[39] = list[i]; + child_ctx[48] = list[i]; return child_ctx; } function create_if_block_8(ctx) { @@ -28318,13 +28848,13 @@ function create_if_block_8(ctx) { return { c() { div = element("div"); - attr(div, "class", "search-input-clear-button"); + attr(div, "class", "git-commit-msg-clear-button svelte-fnxzfa"); attr(div, "aria-label", div_aria_label_value = "Clear"); }, m(target, anchor) { insert(target, div, anchor); if (!mounted) { - dispose = listen(div, "click", ctx[29]); + dispose = listen(div, "click", ctx[31]); mounted = true; } }, @@ -28338,110 +28868,181 @@ function create_if_block_8(ctx) { }; } function create_if_block4(ctx) { - let div3; - let div2; - let div1; - let t2; - let span1; - let t3_value = ctx[5].staged.length + ""; - let t3; - let t4; - let t5; + let div18; + let div17; let div7; let div6; + let div0; + let t0; + let div1; + let t2; let div5; - let t8; - let span3; - let t9_value = ctx[5].changed.length + ""; + let div3; + let div2; + let t3; + let div4; + let t4_value = ctx[6].staged.length + ""; + let t4; + let t5; + let t6; + let div16; + let div15; + let div8; + let t7; + let div9; let t9; + let div14; + let div12; + let div10; let t10; + let div11; let t11; - let if_block2_anchor; + let div13; + let t12_value = ctx[6].changed.length + ""; + let t12; + let t13; + let t14; let current; let mounted; let dispose; let if_block0 = ctx[13] && create_if_block_6(ctx); let if_block1 = ctx[12] && create_if_block_42(ctx); - let if_block2 = ctx[6].length > 0 && create_if_block_12(ctx); + let if_block2 = ctx[7].length > 0 && create_if_block_12(ctx); return { c() { - div3 = element("div"); - div2 = element("div"); - div1 = element("div"); - div1.innerHTML = `
- Staged Changes`; - t2 = space(); - span1 = element("span"); - t3 = text(t3_value); - t4 = space(); - if (if_block0) - if_block0.c(); - t5 = space(); + div18 = element("div"); + div17 = element("div"); div7 = element("div"); div6 = element("div"); + div0 = element("div"); + div0.innerHTML = ``; + t0 = space(); + div1 = element("div"); + div1.textContent = "Staged Changes"; + t2 = space(); div5 = element("div"); - div5.innerHTML = `
- Changes`; - t8 = space(); - span3 = element("span"); - t9 = text(t9_value); + div3 = element("div"); + div2 = element("div"); + div2.innerHTML = ``; + t3 = space(); + div4 = element("div"); + t4 = text(t4_value); + t5 = space(); + if (if_block0) + if_block0.c(); + t6 = space(); + div16 = element("div"); + div15 = element("div"); + div8 = element("div"); + div8.innerHTML = ``; + t7 = space(); + div9 = element("div"); + div9.textContent = "Changes"; + t9 = space(); + div14 = element("div"); + div12 = element("div"); + div10 = element("div"); + div10.innerHTML = ``; t10 = space(); + div11 = element("div"); + div11.innerHTML = ``; + t11 = space(); + div13 = element("div"); + t12 = text(t12_value); + t13 = space(); if (if_block1) if_block1.c(); - t11 = space(); + t14 = space(); if (if_block2) if_block2.c(); - if_block2_anchor = empty(); - attr(div1, "class", "svelte-1f0ksxd"); - attr(span1, "class", "tree-item-flair"); - attr(div2, "class", "opener tree-item-self is-clickable svelte-1f0ksxd"); - toggle_class(div2, "open", ctx[13]); - attr(div3, "class", "staged"); - attr(div5, "class", "svelte-1f0ksxd"); - attr(span3, "class", "tree-item-flair"); - attr(div6, "class", "opener tree-item-self is-clickable svelte-1f0ksxd"); - toggle_class(div6, "open", ctx[12]); - attr(div7, "class", "changes"); + attr(div0, "class", "nav-folder-collapse-indicator collapse-icon"); + attr(div1, "class", "nav-folder-title-content"); + attr(div2, "data-icon", "minus"); + attr(div2, "aria-label", "Unstage"); + attr(div2, "class", "clickable-icon svelte-fnxzfa"); + attr(div3, "class", "buttons svelte-fnxzfa"); + attr(div4, "class", "files-count svelte-fnxzfa"); + attr(div5, "class", "tools svelte-fnxzfa"); + attr(div6, "class", "nav-folder-title"); + attr(div7, "class", "staged nav-folder"); + toggle_class(div7, "is-collapsed", !ctx[13]); + attr(div8, "class", "nav-folder-collapse-indicator collapse-icon"); + attr(div9, "class", "nav-folder-title-content"); + attr(div10, "data-icon", "undo"); + attr(div10, "aria-label", "Discard"); + attr(div10, "class", "clickable-icon svelte-fnxzfa"); + attr(div11, "data-icon", "plus"); + attr(div11, "aria-label", "Stage"); + attr(div11, "class", "clickable-icon svelte-fnxzfa"); + attr(div12, "class", "buttons svelte-fnxzfa"); + attr(div13, "class", "files-count svelte-fnxzfa"); + attr(div14, "class", "tools svelte-fnxzfa"); + attr(div15, "class", "nav-folder-title"); + attr(div16, "class", "changes nav-folder"); + toggle_class(div16, "is-collapsed", !ctx[12]); + attr(div17, "class", "nav-folder-children"); + attr(div18, "class", "nav-folder mod-root"); }, m(target, anchor) { - insert(target, div3, anchor); - append2(div3, div2); - append2(div2, div1); - append2(div2, t2); - append2(div2, span1); - append2(span1, t3); - append2(div3, t4); - if (if_block0) - if_block0.m(div3, null); - insert(target, t5, anchor); - insert(target, div7, anchor); + insert(target, div18, anchor); + append2(div18, div17); + append2(div17, div7); append2(div7, div6); + append2(div6, div0); + append2(div6, t0); + append2(div6, div1); + append2(div6, t2); append2(div6, div5); - append2(div6, t8); - append2(div6, span3); - append2(span3, t9); - append2(div7, t10); + append2(div5, div3); + append2(div3, div2); + ctx[34](div2); + append2(div5, t3); + append2(div5, div4); + append2(div4, t4); + append2(div7, t5); + if (if_block0) + if_block0.m(div7, null); + append2(div17, t6); + append2(div17, div16); + append2(div16, div15); + append2(div15, div8); + append2(div15, t7); + append2(div15, div9); + append2(div15, t9); + append2(div15, div14); + append2(div14, div12); + append2(div12, div10); + append2(div12, t10); + append2(div12, div11); + ctx[39](div11); + append2(div14, t11); + append2(div14, div13); + append2(div13, t12); + append2(div16, t13); if (if_block1) - if_block1.m(div7, null); - insert(target, t11, anchor); + if_block1.m(div16, null); + append2(div17, t14); if (if_block2) - if_block2.m(target, anchor); - insert(target, if_block2_anchor, anchor); + if_block2.m(div17, null); current = true; if (!mounted) { dispose = [ - listen(div2, "click", ctx[30]), - listen(div6, "click", ctx[31]) + listen(div0, "click", ctx[32]), + listen(div1, "click", ctx[33]), + listen(div2, "click", ctx[18]), + listen(div6, "click", self2(ctx[35])), + listen(div8, "click", ctx[36]), + listen(div9, "click", ctx[37]), + listen(div10, "click", ctx[38]), + listen(div11, "click", ctx[17]), + listen(div15, "click", self2(ctx[40])) ]; mounted = true; } }, p(ctx2, dirty) { - if ((!current || dirty[0] & 32) && t3_value !== (t3_value = ctx2[5].staged.length + "")) - set_data(t3, t3_value); - if (!current || dirty[0] & 8192) { - toggle_class(div2, "open", ctx2[13]); - } + if ((!current || dirty[0] & 64) && t4_value !== (t4_value = ctx2[6].staged.length + "")) + set_data(t4, t4_value); if (ctx2[13]) { if (if_block0) { if_block0.p(ctx2, dirty); @@ -28452,7 +29053,7 @@ function create_if_block4(ctx) { if_block0 = create_if_block_6(ctx2); if_block0.c(); transition_in(if_block0, 1); - if_block0.m(div3, null); + if_block0.m(div7, null); } } else if (if_block0) { group_outros(); @@ -28461,11 +29062,11 @@ function create_if_block4(ctx) { }); check_outros(); } - if ((!current || dirty[0] & 32) && t9_value !== (t9_value = ctx2[5].changed.length + "")) - set_data(t9, t9_value); - if (!current || dirty[0] & 4096) { - toggle_class(div6, "open", ctx2[12]); + if (!current || dirty[0] & 8192) { + toggle_class(div7, "is-collapsed", !ctx2[13]); } + if ((!current || dirty[0] & 64) && t12_value !== (t12_value = ctx2[6].changed.length + "")) + set_data(t12, t12_value); if (ctx2[12]) { if (if_block1) { if_block1.p(ctx2, dirty); @@ -28476,7 +29077,7 @@ function create_if_block4(ctx) { if_block1 = create_if_block_42(ctx2); if_block1.c(); transition_in(if_block1, 1); - if_block1.m(div7, null); + if_block1.m(div16, null); } } else if (if_block1) { group_outros(); @@ -28485,17 +29086,20 @@ function create_if_block4(ctx) { }); check_outros(); } - if (ctx2[6].length > 0) { + if (!current || dirty[0] & 4096) { + toggle_class(div16, "is-collapsed", !ctx2[12]); + } + if (ctx2[7].length > 0) { if (if_block2) { if_block2.p(ctx2, dirty); - if (dirty[0] & 64) { + if (dirty[0] & 128) { transition_in(if_block2, 1); } } else { if_block2 = create_if_block_12(ctx2); if_block2.c(); transition_in(if_block2, 1); - if_block2.m(if_block2_anchor.parentNode, if_block2_anchor); + if_block2.m(div17, null); } } else if (if_block2) { group_outros(); @@ -28521,21 +29125,15 @@ function create_if_block4(ctx) { }, d(detaching) { if (detaching) - detach(div3); + detach(div18); + ctx[34](null); if (if_block0) if_block0.d(); - if (detaching) - detach(t5); - if (detaching) - detach(div7); + ctx[39](null); if (if_block1) if_block1.d(); - if (detaching) - detach(t11); if (if_block2) - if_block2.d(detaching); - if (detaching) - detach(if_block2_anchor); + if_block2.d(); mounted = false; run_all(dispose); } @@ -28550,7 +29148,7 @@ function create_if_block_6(ctx) { const if_block_creators = [create_if_block_7, create_else_block_2]; const if_blocks = []; function select_block_type(ctx2, dirty) { - if (ctx2[2]) + if (ctx2[3]) return 0; return 1; } @@ -28560,7 +29158,7 @@ function create_if_block_6(ctx) { c() { div = element("div"); if_block.c(); - attr(div, "class", "file-view svelte-1f0ksxd"); + attr(div, "class", "nav-folder-children"); }, m(target, anchor) { insert(target, div, anchor); @@ -28623,7 +29221,7 @@ function create_if_block_6(ctx) { function create_else_block_2(ctx) { let each_1_anchor; let current; - let each_value_2 = ctx[5].staged; + let each_value_2 = ctx[6].staged; let each_blocks = []; for (let i = 0; i < each_value_2.length; i += 1) { each_blocks[i] = create_each_block_2(get_each_context_2(ctx, each_value_2, i)); @@ -28646,8 +29244,8 @@ function create_else_block_2(ctx) { current = true; }, p(ctx2, dirty) { - if (dirty[0] & 35) { - each_value_2 = ctx2[5].staged; + if (dirty[0] & 67) { + each_value_2 = ctx2[6].staged; let i; for (i = 0; i < each_value_2.length; i += 1) { const child_ctx = get_each_context_2(ctx2, each_value_2, i); @@ -28740,7 +29338,7 @@ function create_each_block_2(ctx) { let current; stagedfilecomponent = new stagedFileComponent_default({ props: { - change: ctx[39], + change: ctx[48], view: ctx[1], manager: ctx[0].gitManager } @@ -28755,8 +29353,8 @@ function create_each_block_2(ctx) { }, p(ctx2, dirty) { const stagedfilecomponent_changes = {}; - if (dirty[0] & 32) - stagedfilecomponent_changes.change = ctx2[39]; + if (dirty[0] & 64) + stagedfilecomponent_changes.change = ctx2[48]; if (dirty[0] & 2) stagedfilecomponent_changes.view = ctx2[1]; if (dirty[0] & 1) @@ -28784,10 +29382,10 @@ function create_if_block_42(ctx) { let if_block; let div_transition; let current; - const if_block_creators = [create_if_block_5, create_else_block_1]; + const if_block_creators = [create_if_block_52, create_else_block_12]; const if_blocks = []; function select_block_type_1(ctx2, dirty) { - if (ctx2[2]) + if (ctx2[3]) return 0; return 1; } @@ -28797,7 +29395,7 @@ function create_if_block_42(ctx) { c() { div = element("div"); if_block.c(); - attr(div, "class", "file-view svelte-1f0ksxd"); + attr(div, "class", "nav-folder-children"); }, m(target, anchor) { insert(target, div, anchor); @@ -28857,10 +29455,10 @@ function create_if_block_42(ctx) { } }; } -function create_else_block_1(ctx) { +function create_else_block_12(ctx) { let each_1_anchor; let current; - let each_value_1 = ctx[5].changed; + let each_value_1 = ctx[6].changed; let each_blocks = []; for (let i = 0; i < each_value_1.length; i += 1) { each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); @@ -28883,8 +29481,8 @@ function create_else_block_1(ctx) { current = true; }, p(ctx2, dirty) { - if (dirty[0] & 35) { - each_value_1 = ctx2[5].changed; + if (dirty[0] & 67) { + each_value_1 = ctx2[6].changed; let i; for (i = 0; i < each_value_1.length; i += 1) { const child_ctx = get_each_context_1(ctx2, each_value_1, i); @@ -28927,7 +29525,7 @@ function create_else_block_1(ctx) { } }; } -function create_if_block_5(ctx) { +function create_if_block_52(ctx) { let treecomponent; let current; treecomponent = new treeComponent_default({ @@ -28977,10 +29575,9 @@ function create_each_block_1(ctx) { let current; filecomponent = new fileComponent_default({ props: { - change: ctx[34], + change: ctx[43], view: ctx[1], - manager: ctx[0].gitManager, - workspace: ctx[0].app.workspace + manager: ctx[0].gitManager } }); filecomponent.$on("git-refresh", triggerRefresh); @@ -28994,14 +29591,12 @@ function create_each_block_1(ctx) { }, p(ctx2, dirty) { const filecomponent_changes = {}; - if (dirty[0] & 32) - filecomponent_changes.change = ctx2[34]; + if (dirty[0] & 64) + filecomponent_changes.change = ctx2[43]; if (dirty[0] & 2) filecomponent_changes.view = ctx2[1]; if (dirty[0] & 1) filecomponent_changes.manager = ctx2[0].gitManager; - if (dirty[0] & 1) - filecomponent_changes.workspace = ctx2[0].app.workspace; filecomponent.$set(filecomponent_changes); }, i(local) { @@ -29022,10 +29617,12 @@ function create_each_block_1(ctx) { function create_if_block_12(ctx) { let div3; let div2; + let div0; + let t0; let div1; let t2; - let span1; - let t3_value = ctx[6].length + ""; + let span; + let t3_value = ctx[7].length + ""; let t3; let t4; let current; @@ -29036,43 +29633,45 @@ function create_if_block_12(ctx) { c() { div3 = element("div"); div2 = element("div"); + div0 = element("div"); + div0.innerHTML = ``; + t0 = space(); div1 = element("div"); - div1.innerHTML = `
- Recently Pulled Changes`; + div1.textContent = "Recently Pulled Files"; t2 = space(); - span1 = element("span"); + span = element("span"); t3 = text(t3_value); t4 = space(); if (if_block) if_block.c(); - attr(div1, "class", "svelte-1f0ksxd"); - attr(span1, "class", "tree-item-flair"); - attr(div2, "class", "opener tree-item-self is-clickable svelte-1f0ksxd"); - toggle_class(div2, "open", ctx[14]); - attr(div3, "class", "pulled"); + attr(div0, "class", "nav-folder-collapse-indicator collapse-icon"); + attr(div1, "class", "nav-folder-title-content"); + attr(span, "class", "tree-item-flair svelte-fnxzfa"); + attr(div2, "class", "nav-folder-title"); + attr(div3, "class", "pulled nav-folder"); + toggle_class(div3, "is-collapsed", !ctx[14]); }, m(target, anchor) { insert(target, div3, anchor); append2(div3, div2); + append2(div2, div0); + append2(div2, t0); append2(div2, div1); append2(div2, t2); - append2(div2, span1); - append2(span1, t3); + append2(div2, span); + append2(span, t3); append2(div3, t4); if (if_block) if_block.m(div3, null); current = true; if (!mounted) { - dispose = listen(div2, "click", ctx[32]); + dispose = listen(div2, "click", ctx[41]); mounted = true; } }, p(ctx2, dirty) { - if ((!current || dirty[0] & 64) && t3_value !== (t3_value = ctx2[6].length + "")) + if ((!current || dirty[0] & 128) && t3_value !== (t3_value = ctx2[7].length + "")) set_data(t3, t3_value); - if (!current || dirty[0] & 16384) { - toggle_class(div2, "open", ctx2[14]); - } if (ctx2[14]) { if (if_block) { if_block.p(ctx2, dirty); @@ -29092,6 +29691,9 @@ function create_if_block_12(ctx) { }); check_outros(); } + if (!current || dirty[0] & 16384) { + toggle_class(div3, "is-collapsed", !ctx2[14]); + } }, i(local) { if (current) @@ -29122,7 +29724,7 @@ function create_if_block_22(ctx) { const if_block_creators = [create_if_block_32, create_else_block2]; const if_blocks = []; function select_block_type_2(ctx2, dirty) { - if (ctx2[2]) + if (ctx2[3]) return 0; return 1; } @@ -29132,7 +29734,7 @@ function create_if_block_22(ctx) { c() { div = element("div"); if_block.c(); - attr(div, "class", "file-view svelte-1f0ksxd"); + attr(div, "class", "nav-folder-children"); }, m(target, anchor) { insert(target, div, anchor); @@ -29195,7 +29797,7 @@ function create_if_block_22(ctx) { function create_else_block2(ctx) { let each_1_anchor; let current; - let each_value = ctx[6]; + let each_value = ctx[7]; let each_blocks = []; for (let i = 0; i < each_value.length; i += 1) { each_blocks[i] = create_each_block2(get_each_context2(ctx, each_value, i)); @@ -29218,8 +29820,8 @@ function create_else_block2(ctx) { current = true; }, p(ctx2, dirty) { - if (dirty[0] & 66) { - each_value = ctx2[6]; + if (dirty[0] & 130) { + each_value = ctx2[7]; let i; for (i = 0; i < each_value.length; i += 1) { const child_ctx = get_each_context2(ctx2, each_value, i); @@ -29312,7 +29914,7 @@ function create_each_block2(ctx) { let current; pulledfilecomponent = new pulledFileComponent_default({ props: { - change: ctx[34], + change: ctx[43], view: ctx[1] } }); @@ -29327,8 +29929,8 @@ function create_each_block2(ctx) { }, p(ctx2, dirty) { const pulledfilecomponent_changes = {}; - if (dirty[0] & 64) - pulledfilecomponent_changes.change = ctx2[34]; + if (dirty[0] & 128) + pulledfilecomponent_changes.change = ctx2[43]; if (dirty[0] & 2) pulledfilecomponent_changes.view = ctx2[1]; pulledfilecomponent.$set(pulledfilecomponent_changes); @@ -29350,8 +29952,8 @@ function create_each_block2(ctx) { } function create_fragment5(ctx) { let main; - let div9; - let div6; + let div8; + let div7; let div0; let t0; let div1; @@ -29364,9 +29966,9 @@ function create_fragment5(ctx) { let t4; let div5; let t5; - let div7; + let div6; let t6; - let div8; + let div9; let textarea; let t7; let t8; @@ -29374,13 +29976,13 @@ function create_fragment5(ctx) { let current; let mounted; let dispose; - let if_block0 = ctx[7] && create_if_block_8(ctx); - let if_block1 = ctx[5] && create_if_block4(ctx); + let if_block0 = ctx[2] && create_if_block_8(ctx); + let if_block1 = ctx[6] && ctx[10] && ctx[9] && create_if_block4(ctx); return { c() { main = element("main"); - div9 = element("div"); - div6 = element("div"); + div8 = element("div"); + div7 = element("div"); div0 = element("div"); t0 = space(); div1 = element("div"); @@ -29393,9 +29995,9 @@ function create_fragment5(ctx) { t4 = space(); div5 = element("div"); t5 = space(); - div7 = element("div"); + div6 = element("div"); t6 = space(); - div8 = element("div"); + div9 = element("div"); textarea = element("textarea"); t7 = space(); if (if_block0) @@ -29406,73 +30008,76 @@ function create_fragment5(ctx) { if_block1.c(); attr(div0, "id", "commit-btn"); attr(div0, "data-icon", "check"); - attr(div0, "class", "nav-action-button"); + attr(div0, "class", "clickable-icon nav-action-button"); attr(div0, "aria-label", "Commit"); attr(div1, "id", "stage-all"); - attr(div1, "class", "nav-action-button"); + attr(div1, "class", "clickable-icon nav-action-button"); attr(div1, "data-icon", "plus-circle"); attr(div1, "aria-label", "Stage all"); attr(div2, "id", "unstage-all"); - attr(div2, "class", "nav-action-button"); + attr(div2, "class", "clickable-icon nav-action-button"); attr(div2, "data-icon", "minus-circle"); attr(div2, "aria-label", "Unstage all"); attr(div3, "id", "push"); - attr(div3, "class", "nav-action-button"); + attr(div3, "class", "clickable-icon nav-action-button"); attr(div3, "data-icon", "upload"); attr(div3, "aria-label", "Push"); attr(div4, "id", "pull"); - attr(div4, "class", "nav-action-button"); + attr(div4, "class", "clickable-icon nav-action-button"); attr(div4, "data-icon", "download"); attr(div4, "aria-label", "Pull"); attr(div5, "id", "layoutChange"); - attr(div5, "class", "nav-action-button"); + attr(div5, "class", "clickable-icon nav-action-button"); attr(div5, "aria-label", "Change Layout"); - attr(div6, "class", "group svelte-1f0ksxd"); - attr(div7, "id", "refresh"); - attr(div7, "class", "nav-action-button"); - attr(div7, "data-icon", "refresh-cw"); - attr(div7, "aria-label", "Refresh"); - toggle_class(div7, "loading", ctx[4]); - attr(textarea, "class", "commit-msg svelte-1f0ksxd"); + attr(div6, "id", "refresh"); + attr(div6, "class", "clickable-icon nav-action-button"); + attr(div6, "data-icon", "refresh-cw"); + attr(div6, "aria-label", "Refresh"); + set_style(div6, "margin", "1px"); + toggle_class(div6, "loading", ctx[5]); + attr(div7, "class", "nav-buttons-container"); + attr(div8, "class", "nav-header"); + attr(textarea, "rows", ctx[15]); + attr(textarea, "class", "commit-msg-input svelte-fnxzfa"); attr(textarea, "type", "text"); attr(textarea, "spellcheck", "true"); attr(textarea, "placeholder", "Commit Message"); - attr(div8, "class", "search-input-container svelte-1f0ksxd"); - attr(div9, "class", "nav-buttons-container svelte-1f0ksxd"); - attr(div10, "class", "git-view-body svelte-1f0ksxd"); - attr(main, "class", "svelte-1f0ksxd"); + attr(div9, "class", "git-commit-msg svelte-fnxzfa"); + attr(div10, "class", "nav-files-container"); + set_style(div10, "position", "relative"); + attr(main, "class", "svelte-fnxzfa"); }, m(target, anchor) { insert(target, main, anchor); + append2(main, div8); + append2(div8, div7); + append2(div7, div0); + ctx[22](div0); + append2(div7, t0); + append2(div7, div1); + ctx[23](div1); + append2(div7, t1); + append2(div7, div2); + ctx[24](div2); + append2(div7, t2); + append2(div7, div3); + ctx[25](div3); + append2(div7, t3); + append2(div7, div4); + ctx[26](div4); + append2(div7, t4); + append2(div7, div5); + ctx[27](div5); + append2(div7, t5); + append2(div7, div6); + ctx[29](div6); + append2(main, t6); append2(main, div9); - append2(div9, div6); - append2(div6, div0); - ctx[20](div0); - append2(div6, t0); - append2(div6, div1); - ctx[21](div1); - append2(div6, t1); - append2(div6, div2); - ctx[22](div2); - append2(div6, t2); - append2(div6, div3); - ctx[23](div3); - append2(div6, t3); - append2(div6, div4); - ctx[24](div4); - append2(div6, t4); - append2(div6, div5); - ctx[25](div5); - append2(div9, t5); - append2(div9, div7); - ctx[27](div7); - append2(div9, t6); - append2(div9, div8); - append2(div8, textarea); - set_input_value(textarea, ctx[7]); - append2(div8, t7); + append2(div9, textarea); + set_input_value(textarea, ctx[2]); + append2(div9, t7); if (if_block0) - if_block0.m(div8, null); + if_block0.m(div9, null); append2(main, t8); append2(main, div10); if (if_block1) @@ -29480,41 +30085,44 @@ function create_fragment5(ctx) { current = true; if (!mounted) { dispose = [ - listen(div0, "click", ctx[15]), - listen(div1, "click", ctx[16]), - listen(div2, "click", ctx[17]), - listen(div3, "click", ctx[18]), - listen(div4, "click", ctx[19]), - listen(div5, "click", ctx[26]), - listen(div7, "click", triggerRefresh), - listen(textarea, "input", ctx[28]) + listen(div0, "click", ctx[16]), + listen(div1, "click", ctx[17]), + listen(div2, "click", ctx[18]), + listen(div3, "click", ctx[19]), + listen(div4, "click", ctx[20]), + listen(div5, "click", ctx[28]), + listen(div6, "click", triggerRefresh), + listen(textarea, "input", ctx[30]) ]; mounted = true; } }, p(ctx2, dirty) { - if (!current || dirty[0] & 16) { - toggle_class(div7, "loading", ctx2[4]); + if (!current || dirty[0] & 32) { + toggle_class(div6, "loading", ctx2[5]); } - if (dirty[0] & 128) { - set_input_value(textarea, ctx2[7]); + if (!current || dirty[0] & 32768) { + attr(textarea, "rows", ctx2[15]); } - if (ctx2[7]) { + if (dirty[0] & 4) { + set_input_value(textarea, ctx2[2]); + } + if (ctx2[2]) { if (if_block0) { if_block0.p(ctx2, dirty); } else { if_block0 = create_if_block_8(ctx2); if_block0.c(); - if_block0.m(div8, null); + if_block0.m(div9, null); } } else if (if_block0) { if_block0.d(1); if_block0 = null; } - if (ctx2[5]) { + if (ctx2[6] && ctx2[10] && ctx2[9]) { if (if_block1) { if_block1.p(ctx2, dirty); - if (dirty[0] & 32) { + if (dirty[0] & 1600) { transition_in(if_block1, 1); } } else { @@ -29544,13 +30152,13 @@ function create_fragment5(ctx) { d(detaching) { if (detaching) detach(main); - ctx[20](null); - ctx[21](null); ctx[22](null); ctx[23](null); ctx[24](null); ctx[25](null); + ctx[26](null); ctx[27](null); + ctx[29](null); if (if_block0) if_block0.d(); if (if_block1) @@ -29564,6 +30172,7 @@ function triggerRefresh() { dispatchEvent(new CustomEvent("git-refresh")); } function instance5($$self, $$props, $$invalidate) { + let rows; let { plugin } = $$props; let { view } = $$props; let loading; @@ -29582,51 +30191,64 @@ function instance5($$self, $$props, $$invalidate) { addEventListener("git-view-refresh", refresh); plugin.app.workspace.onLayoutReady(() => { window.setTimeout(() => { - buttons.forEach((btn) => (0, import_obsidian20.setIcon)(btn, btn.getAttr("data-icon"), 16)); - (0, import_obsidian20.setIcon)(layoutBtn, showTree ? "list" : "folder", 16); + buttons.forEach((btn) => (0, import_obsidian21.setIcon)(btn, btn.getAttr("data-icon"), 16)); + (0, import_obsidian21.setIcon)(layoutBtn, showTree ? "list" : "folder", 16); }, 0); }); onDestroy(() => { removeEventListener("git-view-refresh", refresh); }); async function commit2() { - $$invalidate(4, loading = true); - if (await plugin.hasTooBigFiles(status2.staged)) { - plugin.setState(PluginState.idle); - return false; - } - plugin.gitManager.commit(commitMessage).then(() => { - if (commitMessage !== plugin.settings.commitMessage) { - $$invalidate(7, commitMessage = ""); + $$invalidate(5, loading = true); + if (status2) { + if (await plugin.hasTooBigFiles(status2.staged)) { + plugin.setState(PluginState.idle); + return false; } - }).finally(triggerRefresh); + plugin.gitManager.commit(commitMessage).then(() => { + if (commitMessage !== plugin.settings.commitMessage) { + $$invalidate(2, commitMessage = ""); + } + }).finally(triggerRefresh); + } } async function refresh() { if (!plugin.gitReady) { - $$invalidate(5, status2 = void 0); + $$invalidate(6, status2 = void 0); return; } - $$invalidate(5, status2 = plugin.cachedStatus); + $$invalidate(6, status2 = plugin.cachedStatus); if (plugin.lastPulledFiles && plugin.lastPulledFiles != lastPulledFiles) { - $$invalidate(6, lastPulledFiles = plugin.lastPulledFiles); + $$invalidate(7, lastPulledFiles = plugin.lastPulledFiles); $$invalidate(11, lastPulledFilesHierarchy = { title: "", + path: "", + vaultPath: "", children: plugin.gitManager.getTreeStructure(lastPulledFiles) }); } if (status2) { + const sort = (a, b) => { + return a.vault_path.split("/").last().localeCompare(b.vault_path.split("/").last()); + }; + status2.changed.sort(sort); + status2.staged.sort(sort); if (status2.changed.length + status2.staged.length > 500) { - $$invalidate(5, status2 = void 0); + $$invalidate(6, status2 = void 0); if (!plugin.loading) { plugin.displayError("Too many changes to display"); } } else { $$invalidate(9, changeHierarchy = { title: "", + path: "", + vaultPath: "", children: plugin.gitManager.getTreeStructure(status2.changed) }); $$invalidate(10, stagedHierarchy = { title: "", + path: "", + vaultPath: "", children: plugin.gitManager.getTreeStructure(status2.staged) }); } @@ -29634,26 +30256,33 @@ function instance5($$self, $$props, $$invalidate) { $$invalidate(9, changeHierarchy = void 0); $$invalidate(10, stagedHierarchy = void 0); } - $$invalidate(4, loading = plugin.loading); + $$invalidate(5, loading = plugin.loading); } function stageAll() { - $$invalidate(4, loading = true); + $$invalidate(5, loading = true); plugin.gitManager.stageAll({ status: status2 }).finally(triggerRefresh); } function unstageAll() { - $$invalidate(4, loading = true); + $$invalidate(5, loading = true); plugin.gitManager.unstageAll({ status: status2 }).finally(triggerRefresh); } function push2() { - $$invalidate(4, loading = true); - if (ready) { - plugin.push().finally(triggerRefresh); - } + $$invalidate(5, loading = true); + plugin.push().finally(triggerRefresh); } function pull2() { - $$invalidate(4, loading = true); + $$invalidate(5, loading = true); plugin.pullChangesFromRemote().finally(triggerRefresh); } + function discard() { + new DiscardModal(view.app, false, plugin.gitManager.getVaultPath("/")).myOpen().then((shouldDiscard) => { + if (shouldDiscard === true) { + plugin.gitManager.discardAll({ status: plugin.cachedStatus }).finally(() => { + dispatchEvent(new CustomEvent("git-refresh")); + }); + } + }); + } function div0_binding($$value) { binding_callbacks[$$value ? "unshift" : "push"](() => { buttons[0] = $$value; @@ -29687,15 +30316,15 @@ function instance5($$self, $$props, $$invalidate) { function div5_binding($$value) { binding_callbacks[$$value ? "unshift" : "push"](() => { layoutBtn = $$value; - $$invalidate(3, layoutBtn); + $$invalidate(4, layoutBtn); }); } const click_handler = () => { - $$invalidate(2, showTree = !showTree); + $$invalidate(3, showTree = !showTree); $$invalidate(0, plugin.settings.treeStructure = showTree, plugin); plugin.saveSettings(); }; - function div7_binding($$value) { + function div6_binding($$value) { binding_callbacks[$$value ? "unshift" : "push"](() => { buttons[6] = $$value; $$invalidate(8, buttons); @@ -29703,12 +30332,29 @@ function instance5($$self, $$props, $$invalidate) { } function textarea_input_handler() { commitMessage = this.value; - $$invalidate(7, commitMessage); + $$invalidate(2, commitMessage); } - const click_handler_1 = () => $$invalidate(7, commitMessage = ""); + const click_handler_1 = () => $$invalidate(2, commitMessage = ""); const click_handler_2 = () => $$invalidate(13, stagedOpen = !stagedOpen); - const click_handler_3 = () => $$invalidate(12, changesOpen = !changesOpen); - const click_handler_4 = () => $$invalidate(14, lastPulledFilesOpen = !lastPulledFilesOpen); + const click_handler_3 = () => $$invalidate(13, stagedOpen = !stagedOpen); + function div2_binding_1($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + buttons[8] = $$value; + $$invalidate(8, buttons); + }); + } + const click_handler_4 = () => $$invalidate(13, stagedOpen = !stagedOpen); + const click_handler_5 = () => $$invalidate(12, changesOpen = !changesOpen); + const click_handler_6 = () => $$invalidate(12, changesOpen = !changesOpen); + const click_handler_7 = () => discard(); + function div11_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + buttons[9] = $$value; + $$invalidate(8, buttons); + }); + } + const click_handler_8 = () => $$invalidate(12, changesOpen = !changesOpen); + const click_handler_9 = () => $$invalidate(14, lastPulledFilesOpen = !lastPulledFilesOpen); $$self.$$set = ($$props2) => { if ("plugin" in $$props2) $$invalidate(0, plugin = $$props2.plugin); @@ -29716,24 +30362,28 @@ function instance5($$self, $$props, $$invalidate) { $$invalidate(1, view = $$props2.view); }; $$self.$$.update = () => { - if ($$self.$$.dirty[0] & 12) { + if ($$self.$$.dirty[0] & 24) { $: { if (layoutBtn) { layoutBtn.empty(); - (0, import_obsidian20.setIcon)(layoutBtn, showTree ? "list" : "folder", 16); + (0, import_obsidian21.setIcon)(layoutBtn, showTree ? "list" : "folder", 16); } } } + if ($$self.$$.dirty[0] & 4) { + $: + $$invalidate(15, rows = (commitMessage.match(/\n/g) || []).length + 1 || 1); + } }; return [ plugin, view, + commitMessage, showTree, layoutBtn, loading, status2, lastPulledFiles, - commitMessage, buttons, changeHierarchy, stagedHierarchy, @@ -29741,11 +30391,13 @@ function instance5($$self, $$props, $$invalidate) { changesOpen, stagedOpen, lastPulledFilesOpen, + rows, commit2, stageAll, unstageAll, push2, pull2, + discard, div0_binding, div1_binding, div2_binding, @@ -29753,12 +30405,19 @@ function instance5($$self, $$props, $$invalidate) { div4_binding, div5_binding, click_handler, - div7_binding, + div6_binding, textarea_input_handler, click_handler_1, click_handler_2, click_handler_3, - click_handler_4 + div2_binding_1, + click_handler_4, + click_handler_5, + click_handler_6, + click_handler_7, + div11_binding, + click_handler_8, + click_handler_9 ]; } var GitView = class extends SvelteComponent { @@ -29770,7 +30429,7 @@ var GitView = class extends SvelteComponent { var gitView_default = GitView; // src/ui/sidebar/sidebarView.ts -var GitView2 = class extends import_obsidian21.ItemView { +var GitView2 = class extends import_obsidian22.ItemView { constructor(leaf, plugin) { super(leaf); this.plugin = plugin; @@ -29800,8 +30459,33 @@ var GitView2 = class extends import_obsidian21.ItemView { } }; +// src/ui/statusBar/branchStatusBar.ts +init_polyfill_buffer(); +var BranchStatusBar = class { + constructor(statusBarEl, plugin) { + this.statusBarEl = statusBarEl; + this.plugin = plugin; + this.statusBarEl.addClass("mod-clickable"); + this.statusBarEl.onClickEvent((e) => { + this.plugin.switchBranch(); + }); + } + async display() { + if (this.plugin.gitReady) { + const branchInfo = await this.plugin.gitManager.branchInfo(); + if (branchInfo.current != void 0) { + this.statusBarEl.setText(branchInfo.current); + } else { + this.statusBarEl.empty(); + } + } else { + this.statusBarEl.empty(); + } + } +}; + // src/main.ts -var ObsidianGit = class extends import_obsidian22.Plugin { +var ObsidianGit = class extends import_obsidian23.Plugin { constructor() { super(...arguments); this.gitReady = false; @@ -29832,6 +30516,7 @@ var ObsidianGit = class extends import_obsidian22.Plugin { async onload() { console.log("loading " + this.manifest.name + " plugin"); this.localStorage = new LocalStorageSettings(this); + this.localStorage.migrate(); await this.loadSettings(); this.migrateSettings(); this.addSettingTab(new ObsidianGitSettingsTab(this.app, this)); @@ -29856,11 +30541,15 @@ var ObsidianGit = class extends import_obsidian22.Plugin { id: "edit-gitignore", name: "Edit .gitignore", callback: async () => { - const content = await this.app.vault.adapter.read(this.gitManager.getVaultPath(".gitignore")); + const path2 = this.gitManager.getVaultPath(".gitignore"); + if (!await this.app.vault.adapter.exists(path2)) { + this.app.vault.adapter.write(path2, ""); + } + const content = await this.app.vault.adapter.read(path2); const modal = new IgnoreModal(this.app, content); const res = await modal.open(); if (res !== void 0) { - await this.app.vault.adapter.write(this.gitManager.getVaultPath(".gitignore"), res); + await this.app.vault.adapter.write(path2, res); this.refresh(); } } @@ -29869,20 +30558,31 @@ var ObsidianGit = class extends import_obsidian22.Plugin { id: "open-git-view", name: "Open source control view", callback: async () => { - if (this.app.workspace.getLeavesOfType(GIT_VIEW_CONFIG.type).length === 0) { - await this.app.workspace.getRightLeaf(false).setViewState({ + const leafs = this.app.workspace.getLeavesOfType(GIT_VIEW_CONFIG.type); + let leaf; + if (leafs.length === 0) { + leaf = this.app.workspace.getRightLeaf(false); + await leaf.setViewState({ type: GIT_VIEW_CONFIG.type }); + } else { + leaf = leafs.first(); } - this.app.workspace.revealLeaf(this.app.workspace.getLeavesOfType(GIT_VIEW_CONFIG.type).first()); + this.app.workspace.revealLeaf(leaf); dispatchEvent(new CustomEvent("git-refresh")); } }); this.addCommand({ id: "open-diff-view", name: "Open diff view", - editorCallback: async (editor, view) => { - getNewLeaf().setViewState({ type: DIFF_VIEW_CONFIG.type, state: { staged: false, file: view.file.path } }); + checkCallback: (checking) => { + var _a2; + const file = this.app.workspace.getActiveFile(); + if (checking) { + return file !== null; + } else { + (_a2 = getNewLeaf()) == null ? void 0 : _a2.setViewState({ type: DIFF_VIEW_CONFIG.type, state: { staged: false, file: file.path } }); + } } }); this.addCommand({ @@ -29906,7 +30606,7 @@ var ObsidianGit = class extends import_obsidian22.Plugin { checkCallback: (checking) => { const file = app.workspace.getActiveFile(); if (checking) { - return file !== void 0; + return file !== null; } else { app.vault.adapter.append(this.gitManager.getVaultPath(".gitignore"), "\n" + this.gitManager.getPath(file.path, true)).then(() => { this.refresh(); @@ -29961,10 +30661,11 @@ var ObsidianGit = class extends import_obsidian22.Plugin { id: "stage-current-file", name: "Stage current file", checkCallback: (checking) => { + const file = this.app.workspace.getActiveFile(); if (checking) { - return this.app.workspace.getActiveFile() !== null; + return file !== null; } else { - this.promiseQueue.addTask(() => this.stageCurrentFile()); + this.promiseQueue.addTask(() => this.stageFile(file)); } } }); @@ -29972,10 +30673,11 @@ var ObsidianGit = class extends import_obsidian22.Plugin { id: "unstage-current-file", name: "Unstage current file", checkCallback: (checking) => { + const file = this.app.workspace.getActiveFile(); if (checking) { - return this.app.workspace.getActiveFile() !== null; + return file !== null; } else { - this.promiseQueue.addTask(() => this.unstageCurrentFile()); + this.promiseQueue.addTask(() => this.unstageFile(file)); } } }); @@ -29995,16 +30697,16 @@ var ObsidianGit = class extends import_obsidian22.Plugin { callback: async () => { const repoExists = await this.app.vault.adapter.exists(`${this.settings.basePath}/.git`); if (repoExists) { - const modal = new GeneralModal(this.app, ["NO", "YES"], "Do you really want to delete the repository (.git directory)? This action cannot be undone.", false, true); + const modal = new GeneralModal({ options: ["NO", "YES"], placeholder: "Do you really want to delete the repository (.git directory)? This action cannot be undone.", onlySelection: true }); const shouldDelete = await modal.open() === "YES"; if (shouldDelete) { await this.app.vault.adapter.rmdir(`${this.settings.basePath}/.git`, true); - new import_obsidian22.Notice("Successfully deleted repository. Reloading plugin..."); + new import_obsidian23.Notice("Successfully deleted repository. Reloading plugin..."); this.unloadPlugin(); this.init(); } } else { - new import_obsidian22.Notice("No repository found"); + new import_obsidian23.Notice("No repository found"); } } }); @@ -30033,20 +30735,52 @@ var ObsidianGit = class extends import_obsidian22.Plugin { new ChangedFilesModal(this, status2.changed).open(); } }); + this.addCommand({ + id: "switch-branch", + name: "Switch branch", + callback: () => { + this.switchBranch(); + } + }); + this.addCommand({ + id: "create-branch", + name: "Create new branch", + callback: () => { + this.createBranch(); + } + }); + this.addCommand({ + id: "delete-branch", + name: "Delete branch", + callback: () => { + this.deleteBranch(); + } + }); this.registerEvent(this.app.workspace.on("file-menu", (menu, file, source) => { this.handleFileMenu(menu, file, source); })); if (this.settings.showStatusBar) { - let statusBarEl = this.addStatusBarItem(); + const statusBarEl = this.addStatusBarItem(); this.statusBar = new StatusBar(statusBarEl, this); - this.registerInterval(window.setInterval(() => this.statusBar.display(), 1e3)); + this.registerInterval(window.setInterval(() => { + var _a2; + return (_a2 = this.statusBar) == null ? void 0 : _a2.display(); + }, 1e3)); + } + if (import_obsidian23.Platform.isDesktop && this.settings.showBranchStatusBar) { + const branchStatusBarEl = this.addStatusBarItem(); + this.branchBar = new BranchStatusBar(branchStatusBarEl, this); + this.registerInterval(window.setInterval(() => { + var _a2; + return (_a2 = this.branchBar) == null ? void 0 : _a2.display(); + }, 6e4)); } this.app.workspace.onLayoutReady(() => this.init()); } setRefreshDebouncer() { var _a2; (_a2 = this.debRefresh) == null ? void 0 : _a2.cancel(); - this.debRefresh = (0, import_obsidian22.debounce)(() => { + this.debRefresh = (0, import_obsidian23.debounce)(() => { if (this.settings.refreshSourceControl) { this.refresh(); } @@ -30054,13 +30788,13 @@ var ObsidianGit = class extends import_obsidian22.Plugin { } async showNotices() { const length = 1e4; - if (this.manifest.id === "obsidian-git" && import_obsidian22.Platform.isDesktopApp && !this.settings.showedMobileNotice) { - new import_obsidian22.Notice("Obsidian Git is now available on mobile! Please read the plugin's README for more information.", length); + if (this.manifest.id === "obsidian-git" && import_obsidian23.Platform.isDesktopApp && !this.settings.showedMobileNotice) { + new import_obsidian23.Notice("Obsidian Git is now available on mobile! Please read the plugin's README for more information.", length); this.settings.showedMobileNotice = true; await this.saveSettings(); } if (this.manifest.id === "obsidian-git-isomorphic") { - new import_obsidian22.Notice("Obsidian Git Mobile is now deprecated. Please uninstall it and install Obsidian Git instead.", length); + new import_obsidian23.Notice("Obsidian Git Mobile is now deprecated. Please uninstall it and install Obsidian Git instead.", length); } } handleFileMenu(menu, file, source) { @@ -30075,7 +30809,7 @@ var ObsidianGit = class extends import_obsidian22.Plugin { menu.addItem((item) => { item.setTitle(`Git: Stage`).setIcon("plus-circle").setSection("action").onClick((_) => { this.promiseQueue.addTask(async () => { - if (file instanceof import_obsidian22.TFile) { + if (file instanceof import_obsidian23.TFile) { await this.gitManager.stage(file.path, true); } else { await this.gitManager.stageAll({ dir: this.gitManager.getPath(file.path, true) }); @@ -30087,7 +30821,7 @@ var ObsidianGit = class extends import_obsidian22.Plugin { menu.addItem((item) => { item.setTitle(`Git: Unstage`).setIcon("minus-circle").setSection("action").onClick((_) => { this.promiseQueue.addTask(async () => { - if (file instanceof import_obsidian22.TFile) { + if (file instanceof import_obsidian23.TFile) { await this.gitManager.unstage(file.path, true); } else { await this.gitManager.unstageAll({ dir: this.gitManager.getPath(file.path, true) }); @@ -30097,20 +30831,20 @@ var ObsidianGit = class extends import_obsidian22.Plugin { }); }); } - migrateSettings() { + async migrateSettings() { if (this.settings.mergeOnPull != void 0) { this.settings.syncMethod = this.settings.mergeOnPull ? "merge" : "rebase"; this.settings.mergeOnPull = void 0; - return this.saveSettings(); + await this.saveSettings(); } if (this.settings.autoCommitMessage === void 0) { this.settings.autoCommitMessage = this.settings.commitMessage; - this.saveSettings(); + await this.saveSettings(); } if (this.settings.gitPath != void 0) { this.localStorage.setGitPath(this.settings.gitPath); this.settings.gitPath = void 0; - this.saveSettings(); + await this.saveSettings(); } } unloadPlugin() { @@ -30128,8 +30862,6 @@ var ObsidianGit = class extends import_obsidian22.Plugin { } async onunload() { this.app.workspace.unregisterHoverLinkSource(GIT_VIEW_CONFIG.type); - this.app.workspace.detachLeavesOfType(GIT_VIEW_CONFIG.type); - this.app.workspace.detachLeavesOfType(DIFF_VIEW_CONFIG.type); this.unloadPlugin(); console.log("unloading " + this.manifest.name + " plugin"); } @@ -30161,9 +30893,10 @@ var ObsidianGit = class extends import_obsidian22.Plugin { }; } async init() { + var _a2; this.showNotices(); try { - if (import_obsidian22.Platform.isDesktopApp) { + if (import_obsidian23.Platform.isDesktopApp) { this.gitManager = new SimpleGit(this); await this.gitManager.setGitInstance(); } else { @@ -30175,7 +30908,7 @@ var ObsidianGit = class extends import_obsidian22.Plugin { this.displayError("Cannot run git command"); break; case "missing-repo": - new import_obsidian22.Notice("Can't find a valid git repository. Please create one via the given command or clone an existing repo."); + new import_obsidian23.Notice("Can't find a valid git repository. Please create one via the given command or clone an existing repo."); break; case "valid": this.gitReady = true; @@ -30196,6 +30929,7 @@ var ObsidianGit = class extends import_obsidian22.Plugin { this.registerEvent(this.deleteEvent); this.registerEvent(this.createEvent); this.registerEvent(this.renameEvent); + (_a2 = this.branchBar) == null ? void 0 : _a2.display(); dispatchEvent(new CustomEvent("git-refresh")); if (this.settings.autoPullOnBoot) { this.promiseQueue.addTask(() => this.pullChangesFromRemote()); @@ -30227,45 +30961,49 @@ var ObsidianGit = class extends import_obsidian22.Plugin { } async createNewRepo() { await this.gitManager.init(); - new import_obsidian22.Notice("Initialized new repo"); + new import_obsidian23.Notice("Initialized new repo"); await this.init(); } async cloneNewRepo() { - const modal = new GeneralModal(this.app, [], "Enter remote URL"); + const modal = new GeneralModal({ placeholder: "Enter remote URL" }); const url = await modal.open(); if (url) { const confirmOption = "Vault Root"; - let dir = await new GeneralModal(this.app, [confirmOption], "Enter directory for clone. It needs to be empty or not existent.", this.gitManager instanceof IsomorphicGit).open(); + let dir = await new GeneralModal({ + options: [confirmOption], + placeholder: "Enter directory for clone. It needs to be empty or not existent.", + allowEmpty: this.gitManager instanceof IsomorphicGit + }).open(); if (dir !== void 0) { if (dir === confirmOption) { dir = "."; } - dir = (0, import_obsidian22.normalizePath)(dir); + dir = (0, import_obsidian23.normalizePath)(dir); if (dir === "/") { dir = "."; } if (dir === ".") { - const modal2 = new GeneralModal(this.app, ["NO", "YES"], `Does your remote repo contain a ${app.vault.configDir} directory at the root?`, false, true); + const modal2 = new GeneralModal({ options: ["NO", "YES"], placeholder: `Does your remote repo contain a ${app.vault.configDir} directory at the root?`, onlySelection: true }); const containsConflictDir = await modal2.open(); if (containsConflictDir === void 0) { - new import_obsidian22.Notice("Aborted clone"); + new import_obsidian23.Notice("Aborted clone"); return; } else if (containsConflictDir === "YES") { const confirmOption2 = "DELETE ALL YOUR LOCAL CONFIG AND PLUGINS"; - const modal3 = new GeneralModal(this.app, ["Abort clone", confirmOption2], `To avoid conflicts, the local ${app.vault.configDir} directory needs to be deleted.`, false, true); + const modal3 = new GeneralModal({ options: ["Abort clone", confirmOption2], placeholder: `To avoid conflicts, the local ${app.vault.configDir} directory needs to be deleted.`, onlySelection: true }); const shouldDelete = await modal3.open() === confirmOption2; if (shouldDelete) { await this.app.vault.adapter.rmdir(app.vault.configDir, true); } else { - new import_obsidian22.Notice("Aborted clone"); + new import_obsidian23.Notice("Aborted clone"); return; } } } - new import_obsidian22.Notice(`Cloning new repo into "${dir}"`); + new import_obsidian23.Notice(`Cloning new repo into "${dir}"`); await this.gitManager.clone(url, dir); - new import_obsidian22.Notice("Cloned new repo."); - new import_obsidian22.Notice("Please restart Obsidian"); + new import_obsidian23.Notice("Cloned new repo."); + new import_obsidian23.Notice("Please restart Obsidian"); if (dir && dir !== ".") { this.settings.basePath = dir; this.saveSettings(); @@ -30300,11 +31038,14 @@ var ObsidianGit = class extends import_obsidian22.Plugin { async createBackup(fromAutoBackup, requestCustomMessage = false) { if (!await this.isAllInitialized()) return; + if (this.settings.syncMethod == "reset" && this.settings.pullBeforePush) { + await this.pull(); + } if (!await this.commit(fromAutoBackup, requestCustomMessage)) return; if (!this.settings.disablePush) { if (await this.gitManager.canPush()) { - if (this.settings.pullBeforePush) { + if (this.settings.syncMethod != "reset" && this.settings.pullBeforePush) { await this.pull(); } await this.push(); @@ -30323,21 +31064,23 @@ var ObsidianGit = class extends import_obsidian22.Plugin { let unstagedFiles; if (this.gitManager instanceof SimpleGit) { const file = this.app.vault.getAbstractFileByPath(this.conflictOutputFile); - await this.app.vault.delete(file); + if (file != null) + await this.app.vault.delete(file); status2 = await this.updateCachedStatus(); if (fromAutoBackup && status2.conflicted.length > 0) { this.displayError(`Did not commit, because you have ${status2.conflicted.length} conflict ${status2.conflicted.length > 1 ? "files" : "file"}. Please resolve them and commit per command.`); this.handleConflict(status2.conflicted); - return; + return false; } changedFiles = [...status2.changed, ...status2.staged]; } else if (fromAutoBackup && hadConflict) { this.setState(PluginState.conflicted); this.displayError(`Did not commit, because you have conflict files. Please resolve them and commit per command.`); - return; + return false; } else if (hadConflict) { const file = this.app.vault.getAbstractFileByPath(this.conflictOutputFile); - await this.app.vault.delete(file); + if (file != null) + await this.app.vault.delete(file); status2 = await this.updateCachedStatus(); changedFiles = [...status2.changed, ...status2.staged]; } else { @@ -30356,7 +31099,7 @@ var ObsidianGit = class extends import_obsidian22.Plugin { let commitMessage = fromAutoBackup ? this.settings.autoCommitMessage : this.settings.commitMessage; if (fromAutoBackup && this.settings.customMessageOnAutoBackup || requestCustomMessage) { if (!this.settings.disablePopups && fromAutoBackup) { - new import_obsidian22.Notice("Auto backup: Please enter a custom commit message. Leave empty to abort"); + new import_obsidian23.Notice("Auto backup: Please enter a custom commit message. Leave empty to abort"); } const tempMessage = await new CustomMessageModal(this, true).open(); if (tempMessage != void 0 && tempMessage != "" && tempMessage != "...") { @@ -30391,10 +31134,10 @@ var ObsidianGit = class extends import_obsidian22.Plugin { const remote = (_a2 = branchInfo.tracking) == null ? void 0 : _a2.split("/")[0]; if (remote) { const remoteUrl = await this.gitManager.getRemoteUrl(remote); - if (remoteUrl.includes("github.com")) { + if (remoteUrl == null ? void 0 : remoteUrl.includes("github.com")) { const tooBigFiles = files.filter((f) => { const file = this.app.vault.getAbstractFileByPath(f.vault_path); - if (file instanceof import_obsidian22.TFile) { + if (file instanceof import_obsidian23.TFile) { return file.stat.size >= 1e8; } return false; @@ -30446,7 +31189,7 @@ var ObsidianGit = class extends import_obsidian22.Plugin { if (!await this.remotesAreSet()) { return false; } - const pulledFiles = await this.gitManager.pull(); + const pulledFiles = await this.gitManager.pull() || []; this.offlineMode = false; if (pulledFiles.length > 0) { this.displayMessage(`Pulled ${pulledFiles.length} ${pulledFiles.length > 1 ? "files" : "file"} from remote`); @@ -30454,29 +31197,75 @@ var ObsidianGit = class extends import_obsidian22.Plugin { } return pulledFiles.length != 0; } - async stageCurrentFile() { + async stageFile(file) { if (!await this.isAllInitialized()) return false; - const file = this.app.workspace.getActiveFile(); await this.gitManager.stage(file.path, true); this.displayMessage(`Staged ${file.path}`); dispatchEvent(new CustomEvent("git-refresh")); this.setState(PluginState.idle); return true; } - async unstageCurrentFile() { + async unstageFile(file) { if (!await this.isAllInitialized()) return false; - const file = this.app.workspace.getActiveFile(); await this.gitManager.unstage(file.path, true); this.displayMessage(`Unstaged ${file.path}`); dispatchEvent(new CustomEvent("git-refresh")); this.setState(PluginState.idle); return true; } + async switchBranch() { + var _a2; + if (!await this.isAllInitialized()) + return; + const branchInfo = await this.gitManager.branchInfo(); + const selectedBranch = await new BranchModal(branchInfo.branches).open(); + if (selectedBranch != void 0) { + await this.gitManager.checkout(selectedBranch); + this.displayMessage(`Switched to ${selectedBranch}`); + (_a2 = this.branchBar) == null ? void 0 : _a2.display(); + return selectedBranch; + } + } + async createBranch() { + var _a2; + if (!await this.isAllInitialized()) + return; + const newBranch = await new GeneralModal({ placeholder: "Create new branch" }).open(); + if (newBranch != void 0) { + await this.gitManager.createBranch(newBranch); + this.displayMessage(`Created new branch ${newBranch}`); + (_a2 = this.branchBar) == null ? void 0 : _a2.display(); + return newBranch; + } + } + async deleteBranch() { + var _a2; + if (!await this.isAllInitialized()) + return; + const branchInfo = await this.gitManager.branchInfo(); + if (branchInfo.current) + branchInfo.branches.remove(branchInfo.current); + const branch2 = await new GeneralModal({ options: branchInfo.branches, placeholder: "Delete branch", onlySelection: true }).open(); + if (branch2 != void 0) { + let force = false; + if (!await this.gitManager.branchIsMerged(branch2)) { + const forceAnswer = await new GeneralModal({ options: ["YES", "NO"], placeholder: "This branch isn't merged into HEAD. Force delete?", onlySelection: true }).open(); + if (forceAnswer !== "YES") { + return; + } + force = forceAnswer === "YES"; + } + await this.gitManager.deleteBranch(branch2, force); + this.displayMessage(`Deleted branch ${branch2}`); + (_a2 = this.branchBar) == null ? void 0 : _a2.display(); + return branch2; + } + } async remotesAreSet() { if (!(await this.gitManager.branchInfo()).tracking) { - new import_obsidian22.Notice("No upstream branch is set. Please select one."); + new import_obsidian23.Notice("No upstream branch is set. Please select one."); const remoteBranch = await this.selectRemoteBranch(); if (remoteBranch == void 0) { this.displayError("Aborted. No upstream-branch is set!", 1e4); @@ -30496,7 +31285,7 @@ var ObsidianGit = class extends import_obsidian22.Plugin { this.doAutoBackup(); } else { this.onFileModifyEventRef = this.app.vault.on("modify", () => this.autoBackupDebouncer()); - this.autoBackupDebouncer = (0, import_obsidian22.debounce)(() => this.doAutoBackup(), time, true); + this.autoBackupDebouncer = (0, import_obsidian23.debounce)(() => this.doAutoBackup(), time, true); } } else { this.timeoutIDBackup = window.setTimeout(() => this.doAutoBackup(), time); @@ -30572,7 +31361,7 @@ var ObsidianGit = class extends import_obsidian22.Plugin { "Please resolve them and commit per command (This file will be deleted before the commit).", ...conflicted.map((e) => { const file = this.app.vault.getAbstractFileByPath(e); - if (file instanceof import_obsidian22.TFile) { + if (file instanceof import_obsidian23.TFile) { const link = this.app.metadataCache.fileToLinktext(file, "/"); return `- [[${link}]]`; } else { @@ -30587,10 +31376,14 @@ var ObsidianGit = class extends import_obsidian22.Plugin { if (!await this.isAllInitialized()) return; const remotes = await this.gitManager.getRemotes(); - const nameModal = new GeneralModal(this.app, remotes, "Select or create a new remote by typing its name and selecting it"); + const nameModal = new GeneralModal({ + options: remotes, + placeholder: "Select or create a new remote by typing its name and selecting it" + }); const remoteName = await nameModal.open(); if (remoteName) { - const urlModal = new GeneralModal(this.app, [], "Enter the remote URL"); + const oldUrl = await this.gitManager.getRemoteUrl(remoteName); + const urlModal = new GeneralModal({ initialValue: oldUrl }); const remoteURL = await urlModal.open(); if (remoteURL) { await this.gitManager.setRemote(remoteName, remoteURL); @@ -30607,13 +31400,13 @@ var ObsidianGit = class extends import_obsidian22.Plugin { remotes = await this.gitManager.getRemotes(); } } - const nameModal = new GeneralModal(this.app, remotes, "Select or create a new remote by typing its name and selecting it"); + const nameModal = new GeneralModal({ options: remotes, placeholder: "Select or create a new remote by typing its name and selecting it" }); const remoteName = selectedRemote != null ? selectedRemote : await nameModal.open(); if (remoteName) { this.displayMessage("Fetching remote branches"); await this.gitManager.fetch(remoteName); const branches = await this.gitManager.getRemoteBranches(remoteName); - const branchModal = new GeneralModal(this.app, branches, "Select or create a new remote branch by typing its name and selecting it"); + const branchModal = new GeneralModal({ options: branches, placeholder: "Select or create a new remote branch by typing its name and selecting it" }); return await branchModal.open(); } } @@ -30621,7 +31414,7 @@ var ObsidianGit = class extends import_obsidian22.Plugin { if (!await this.isAllInitialized()) return; const remotes = await this.gitManager.getRemotes(); - const nameModal = new GeneralModal(this.app, remotes, "Select a remote"); + const nameModal = new GeneralModal({ options: remotes, placeholder: "Select a remote" }); const remoteName = await nameModal.open(); if (remoteName) { this.gitManager.removeRemote(remoteName); @@ -30645,18 +31438,18 @@ var ObsidianGit = class extends import_obsidian22.Plugin { var _a2; (_a2 = this.statusBar) == null ? void 0 : _a2.displayMessage(message.toLowerCase(), timeout); if (!this.settings.disablePopups) { - new import_obsidian22.Notice(message, 5 * 1e3); + new import_obsidian23.Notice(message, 5 * 1e3); } console.log(`git obsidian message: ${message}`); } displayError(message, timeout = 10 * 1e3) { var _a2; if (message instanceof Errors.UserCanceledError) { - new import_obsidian22.Notice("Aborted"); + new import_obsidian23.Notice("Aborted"); return; } message = message.toString(); - new import_obsidian22.Notice(message, timeout); + new import_obsidian23.Notice(message, timeout); console.log(`git obsidian error: ${message}`); (_a2 = this.statusBar) == null ? void 0 : _a2.displayMessage(message.toLowerCase(), timeout); } diff --git a/notes/.obsidian/plugins/obsidian-git/manifest.json b/notes/.obsidian/plugins/obsidian-git/manifest.json index 5193712..949c98e 100644 --- a/notes/.obsidian/plugins/obsidian-git/manifest.json +++ b/notes/.obsidian/plugins/obsidian-git/manifest.json @@ -4,5 +4,5 @@ "description": "Backup your vault with Git.", "isDesktopOnly": false, "js": "main.js", - "version": "2.1.1" + "version": "2.8.0" } diff --git a/notes/.obsidian/plugins/obsidian-git/styles.css b/notes/.obsidian/plugins/obsidian-git/styles.css index e283d44..e496c17 100644 --- a/notes/.obsidian/plugins/obsidian-git/styles.css +++ b/notes/.obsidian/plugins/obsidian-git/styles.css @@ -1,465 +1,474 @@ @keyframes loading { - 0% { - transform: rotate(0deg); - } + 0% { + transform: rotate(0deg); + } - 100% { - transform: rotate(360deg); - } + 100% { + transform: rotate(360deg); + } +} + +.workspace-leaf-content[data-type='git-view'] .view-content { + padding: 0; } .loading>svg { - animation: 2s linear infinite loading; - transform-origin: 50% 50%; - display: inline-block; + animation: 2s linear infinite loading; + transform-origin: 50% 50%; + display: inline-block; } .obsidian-git-center { - margin: auto; - width: 50%; + margin: auto; + text-align: center; + width: 50%; } .obsidian-git-textarea { - display: block; - margin-left: auto; - margin-right: auto; + display: block; + margin-left: auto; + margin-right: auto; } .obsidian-git-center-button { - display: block; - margin: 20px auto; + display: block; + margin: 20px auto; } .tooltip.mod-left { - overflow-wrap: break-word; + overflow-wrap: break-word; } .tooltip.mod-right { - overflow-wrap: break-word; + overflow-wrap: break-word; } .obsidian-git-shortcuts { - margin: 10px; + margin: 10px; } .diff-err { - height: 100%; - display: flex; - justify-content: center; - flex-direction: column; - align-items: center; + height: 100%; + display: flex; + justify-content: center; + flex-direction: column; + align-items: center; } .diff-err-sign { - font-size: 2em; + font-size: 2em; } .workspace-leaf-content[data-type="diff-view"] .d2h-d-none { - display: none; + display: none; } .workspace-leaf-content[data-type="diff-view"] .d2h-wrapper { - text-align: left; + text-align: left; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-header { - background-color: var(--background-primary); - border-bottom: 1px solid var(--interactive-accent); - font-family: var(--font-monospace); - height: 35px; - padding: 5px 10px; + background-color: var(--background-primary); + border-bottom: 1px solid var(--interactive-accent); + font-family: var(--font-monospace); + height: 35px; + padding: 5px 10px; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-header, .workspace-leaf-content[data-type="diff-view"] .d2h-file-stats { - display: -webkit-box; - display: -ms-flexbox; - display: flex; + display: -webkit-box; + display: -ms-flexbox; + display: flex; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-stats { - font-size: 14px; - margin-left: auto; + font-size: 14px; + margin-left: auto; } .workspace-leaf-content[data-type="diff-view"] .d2h-lines-added { - border: 1px solid #b4e2b4; - border-radius: 5px 0 0 5px; - color: #399839; - padding: 2px; - text-align: right; - vertical-align: middle; + border: 1px solid #b4e2b4; + border-radius: 5px 0 0 5px; + color: #399839; + padding: 2px; + text-align: right; + vertical-align: middle; } .workspace-leaf-content[data-type="diff-view"] .d2h-lines-deleted { - border: 1px solid #e9aeae; - border-radius: 0 5px 5px 0; - color: #c33; - margin-left: 1px; - padding: 2px; - text-align: left; - vertical-align: middle; + border: 1px solid #e9aeae; + border-radius: 0 5px 5px 0; + color: #c33; + margin-left: 1px; + padding: 2px; + text-align: left; + vertical-align: middle; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-name-wrapper { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - font-size: 15px; - width: 100%; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + font-size: 15px; + width: 100%; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-name { - overflow-x: hidden; - text-overflow: ellipsis; - white-space: nowrap; + overflow-x: hidden; + text-overflow: ellipsis; + white-space: nowrap; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-wrapper { - border: 1px solid var(--background-modifier-border); - border-radius: 3px; - margin-bottom: 1em; + border: 1px solid var(--background-modifier-border); + border-radius: 3px; + margin-bottom: 1em; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse { - -webkit-box-pack: end; - -ms-flex-pack: end; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - border: 1px solid var(--background-modifier-border); - border-radius: 3px; - cursor: pointer; - display: none; - font-size: 12px; - justify-content: flex-end; - padding: 4px 8px; + -webkit-box-pack: end; + -ms-flex-pack: end; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + border: 1px solid var(--background-modifier-border); + border-radius: 3px; + cursor: pointer; + display: none; + font-size: 12px; + justify-content: flex-end; + padding: 4px 8px; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse.d2h-selected { - background-color: #c8e1ff; + background-color: #c8e1ff; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse-input { - margin: 0 4px 0 0; + margin: 0 4px 0 0; } .workspace-leaf-content[data-type="diff-view"] .d2h-diff-table { - border-collapse: collapse; - font-family: Menlo, Consolas, monospace; - font-size: 13px; - width: 100%; + border-collapse: collapse; + font-family: Menlo, Consolas, monospace; + font-size: 13px; + width: 100%; } .workspace-leaf-content[data-type="diff-view"] .d2h-files-diff { - width: 100%; + width: 100%; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff { - overflow-y: hidden; + overflow-y: hidden; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-side-diff { - display: inline-block; - margin-bottom: -8px; - margin-right: -4px; - overflow-x: scroll; - overflow-y: hidden; - width: 50%; + display: inline-block; + margin-bottom: -8px; + margin-right: -4px; + overflow-x: scroll; + overflow-y: hidden; + width: 50%; } .workspace-leaf-content[data-type="diff-view"] .d2h-code-line { - padding: 0 8em; + padding: 0 8em; } .workspace-leaf-content[data-type="diff-view"] .d2h-code-line, .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line { - display: inline-block; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - white-space: nowrap; - width: 100%; + display: inline-block; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + white-space: nowrap; + width: 100%; } .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line { - padding: 0 4.5em; + padding: 0 4.5em; } .workspace-leaf-content[data-type="diff-view"] .d2h-code-line-ctn { - word-wrap: normal; - background: none; - display: inline-block; - padding: 0; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; - vertical-align: middle; - white-space: pre; - width: 100%; + word-wrap: normal; + background: none; + display: inline-block; + padding: 0; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + vertical-align: middle; + white-space: pre; + width: 100%; } .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del, .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del { - background-color: #ffb6ba; + background-color: #ffb6ba; } .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del, .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del { - background-color: #8d232881; + background-color: #8d232881; } .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del, .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins, .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del, .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins { - border-radius: 0.2em; - display: inline-block; - margin-top: -1px; - text-decoration: none; - vertical-align: middle; + border-radius: 0.2em; + display: inline-block; + margin-top: -1px; + text-decoration: none; + vertical-align: middle; } .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins, .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins { - background-color: #97f295; - text-align: left; + background-color: #97f295; + text-align: left; } .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins, .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins { - background-color: #1d921996; - text-align: left; + background-color: #1d921996; + text-align: left; } .workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix { - word-wrap: normal; - background: none; - display: inline; - padding: 0; - white-space: pre; + word-wrap: normal; + background: none; + display: inline; + padding: 0; + white-space: pre; } .workspace-leaf-content[data-type="diff-view"] .line-num1 { - float: left; + float: left; } .workspace-leaf-content[data-type="diff-view"] .line-num1, .workspace-leaf-content[data-type="diff-view"] .line-num2 { - -webkit-box-sizing: border-box; - box-sizing: border-box; - overflow: hidden; - padding: 0 0.5em; - text-overflow: ellipsis; - width: 3.5em; + -webkit-box-sizing: border-box; + box-sizing: border-box; + overflow: hidden; + padding: 0 0.5em; + text-overflow: ellipsis; + width: 3.5em; } .workspace-leaf-content[data-type="diff-view"] .line-num2 { - float: right; + float: right; } .workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber { - background-color: var(--background-primary); - border: solid var(--background-modifier-border); - border-width: 0 1px; - -webkit-box-sizing: border-box; - box-sizing: border-box; - color: var(--text-muted); - cursor: pointer; - display: inline-block; - position: absolute; - text-align: right; - width: 7.5em; + background-color: var(--background-primary); + border: solid var(--background-modifier-border); + border-width: 0 1px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: var(--text-muted); + cursor: pointer; + display: inline-block; + position: absolute; + text-align: right; + width: 7.5em; } .workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber:after { - content: "\200b"; + content: "\200b"; } .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber { - background-color: var(--background-primary); - border: solid var(--background-modifier-border); - border-width: 0 1px; - -webkit-box-sizing: border-box; - box-sizing: border-box; - color: var(--text-muted); - cursor: pointer; - display: inline-block; - overflow: hidden; - padding: 0 0.5em; - position: absolute; - text-align: right; - text-overflow: ellipsis; - width: 4em; + background-color: var(--background-primary); + border: solid var(--background-modifier-border); + border-width: 0 1px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: var(--text-muted); + cursor: pointer; + display: inline-block; + overflow: hidden; + padding: 0 0.5em; + position: absolute; + text-align: right; + text-overflow: ellipsis; + width: 4em; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-diff-tbody tr { + position: relative; } .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber:after { - content: "\200b"; + content: "\200b"; } .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-emptyplaceholder, .workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder { - background-color: var(--background-primary); - border-color: var(--background-modifier-border); + background-color: var(--background-primary); + border-color: var(--background-modifier-border); } .workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix, .workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber, .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber, .workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } .workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber, .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber { - direction: rtl; + direction: rtl; } .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-del { - background-color: #fee8e9; - border-color: #e9aeae; + background-color: #fee8e9; + border-color: #e9aeae; } .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-ins { - background-color: #dfd; - border-color: #b4e2b4; + background-color: #dfd; + border-color: #b4e2b4; } .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-del { - background-color: #521b1d83; - border-color: #691d1d73; + background-color: #521b1d83; + border-color: #691d1d73; } .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-ins { - background-color: rgba(30, 71, 30, 0.5); - border-color: #13501381; + background-color: rgba(30, 71, 30, 0.5); + border-color: #13501381; } .workspace-leaf-content[data-type="diff-view"] .d2h-info { - background-color: var(--background-primary); - border-color: var(--background-modifier-border); - color: var(--text-normal); + background-color: var(--background-primary); + border-color: var(--background-modifier-border); + color: var(--text-normal); } .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-del.d2h-change { - background-color: #fdf2d0; + background-color: #fdf2d0; } .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-del.d2h-change { - background-color: #55492480; + background-color: #55492480; } .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-ins.d2h-change { - background-color: #ded; + background-color: #ded; } .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-ins.d2h-change { - background-color: rgba(37, 78, 37, 0.418); + background-color: rgba(37, 78, 37, 0.418); } .workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper { - margin-bottom: 10px; + margin-bottom: 10px; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper a { - color: #3572b0; - text-decoration: none; + color: #3572b0; + text-decoration: none; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper a:visited { - color: #3572b0; + color: #3572b0; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-list-header { - text-align: left; + text-align: left; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-list-title { - font-weight: 700; + font-weight: 700; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-list-line { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - text-align: left; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + text-align: left; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-list { - display: block; - list-style: none; - margin: 0; - padding: 0; + display: block; + list-style: none; + margin: 0; + padding: 0; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-list>li { - border-bottom: 1px solid var(--background-modifier-border); - margin: 0; - padding: 5px 10px; + border-bottom: 1px solid var(--background-modifier-border); + margin: 0; + padding: 5px 10px; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-list>li:last-child { - border-bottom: none; + border-bottom: none; } .workspace-leaf-content[data-type="diff-view"] .d2h-file-switch { - cursor: pointer; - display: none; - font-size: 10px; + cursor: pointer; + display: none; + font-size: 10px; } .workspace-leaf-content[data-type="diff-view"] .d2h-icon { - fill: currentColor; - margin-right: 10px; - vertical-align: middle; + fill: currentColor; + margin-right: 10px; + vertical-align: middle; } .workspace-leaf-content[data-type="diff-view"] .d2h-deleted { - color: #c33; + color: #c33; } .workspace-leaf-content[data-type="diff-view"] .d2h-added { - color: #399839; + color: #399839; } .workspace-leaf-content[data-type="diff-view"] .d2h-changed { - color: #d0b44c; + color: #d0b44c; } .workspace-leaf-content[data-type="diff-view"] .d2h-moved { - color: #3572b0; + color: #3572b0; } .workspace-leaf-content[data-type="diff-view"] .d2h-tag { - background-color: var(--background-primary); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - font-size: 10px; - margin-left: 5px; - padding: 0 2px; + background-color: var(--background-primary); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + font-size: 10px; + margin-left: 5px; + padding: 0 2px; } .workspace-leaf-content[data-type="diff-view"] .d2h-deleted-tag { - border: 2px solid #c33; + border: 2px solid #c33; } .workspace-leaf-content[data-type="diff-view"] .d2h-added-tag { - border: 1px solid #399839; + border: 1px solid #399839; } .workspace-leaf-content[data-type="diff-view"] .d2h-changed-tag { - border: 1px solid #d0b44c; + border: 1px solid #d0b44c; } .workspace-leaf-content[data-type="diff-view"] .d2h-moved-tag { - border: 1px solid #3572b0; + border: 1px solid #3572b0; } \ No newline at end of file diff --git a/notes/.obsidian/plugins/obsidian-icon-folder/main.js b/notes/.obsidian/plugins/obsidian-icon-folder/main.js index 8e8e313..408e876 100644 --- a/notes/.obsidian/plugins/obsidian-icon-folder/main.js +++ b/notes/.obsidian/plugins/obsidian-icon-folder/main.js @@ -371,7 +371,6 @@ const getEnabledIcons = (plugin) => { * @returns {string} The svg with the customized css settings. */ const customizeIconStyle = (plugin, icon, el) => { - var _a, _b, _c, _d; // Allow custom font size const widthRe = new RegExp(/width="\d+(px)?"/); const heightRe = new RegExp(/height="\d+(px)?"/); @@ -384,8 +383,15 @@ const customizeIconStyle = (plugin, icon, el) => { // Allow custom icon color. icon = colorizeIcon(icon, plugin.getSettings().iconColor); // Change margin of icon + const margin = plugin.getSettings().extraMargin; + const normalizedMargin = { + top: margin.top !== undefined ? margin.top : 4, + right: margin.right !== undefined ? margin.right : 4, + left: margin.left !== undefined ? margin.left : 4, + bottom: margin.bottom !== undefined ? margin.bottom : 4, + }; if (plugin.getSettings().extraMargin) { - el.style.margin = `${(_a = plugin.getSettings().extraMargin.top) !== null && _a !== void 0 ? _a : 2}px ${(_b = plugin.getSettings().extraMargin.right) !== null && _b !== void 0 ? _b : 2}px ${(_c = plugin.getSettings().extraMargin.bottom) !== null && _c !== void 0 ? _c : 2}px ${(_d = plugin.getSettings().extraMargin.left) !== null && _d !== void 0 ? _d : 2}px`; + el.style.margin = `${normalizedMargin.top}px ${normalizedMargin.right}px ${normalizedMargin.bottom}px ${normalizedMargin.left}px`; } return icon; }; @@ -1058,10 +1064,10 @@ const DEFAULT_SETTINGS = { recentlyUsedIconsSize: 5, rules: [], extraMargin: { - top: 2, - right: 2, - bottom: 2, - left: 2, + top: 0, + right: 4, + bottom: 0, + left: 0, }, }; @@ -1557,6 +1563,13 @@ var iconPacks = { path: '', downloadLink: 'https://github.com/FlorianWoelki/obsidian-icon-folder/raw/main/iconPacks/icon-brew.zip', }, + /* https://simpleicons.org/ */ + simpleIcons: { + name: 'simple-icons', + displayName: 'Simple Icons', + path: 'icons', + downloadLink: 'https://github.com/simple-icons/simple-icons/archive/refs/tags/7.15.0.zip', + }, }; var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; @@ -2154,4 +2167,4 @@ class IconFolderPlugin extends obsidian.Plugin { } module.exports = IconFolderPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9NZXRhRGF0YS50cyIsInNyYy9pY29uUGFja01hbmFnZXIudHMiLCJub2RlX21vZHVsZXMvdHdlbW9qaS9kaXN0L3R3ZW1vamkuZXNtLmpzIiwic3JjL3V0aWwudHMiLCJzcmMvaWNvbnNQaWNrZXJNb2RhbC50cyIsInNyYy9zZXR0aW5ncy50cyIsInNyYy9taWdyYXRpb24udHMiLCJzcmMvc2V0dGluZ3NUYWIvaWNvbkZvbGRlclNldHRpbmcudHMiLCJzcmMvc2V0dGluZ3NUYWIvY3VzdG9tSWNvblBhY2sudHMiLCJzcmMvY29sb3JQaWNrZXJDb21wb25lbnQudHMiLCJzcmMvc2V0dGluZ3NUYWIvY3VzdG9tSWNvblJ1bGUudHMiLCJzcmMvc2V0dGluZ3NUYWIvZXh0cmFNYXJnaW4udHMiLCJzcmMvc2V0dGluZ3NUYWIvaWNvbkNvbG9yLnRzIiwic3JjL3NldHRpbmdzVGFiL2ljb25Gb250U2l6ZS50cyIsInNyYy9zZXR0aW5nc1RhYi9pY29uUGFja3NQYXRoLnRzIiwic3JjL2ljb25QYWNrcy50cyIsIm5vZGVfbW9kdWxlcy9qc3ppcC9kaXN0L2pzemlwLm1pbi5qcyIsInNyYy96aXBVdGlsLnRzIiwic3JjL2ljb25QYWNrQnJvd3Nlck1vZGFsLnRzIiwic3JjL3NldHRpbmdzVGFiL3ByZWRlZmluZWRJY29uUGFja3MudHMiLCJzcmMvc2V0dGluZ3NUYWIvcmVjZW50bHlVc2VkSWNvbnMudHMiLCJzcmMvc2V0dGluZ3NUYWIvaW5kZXgudHMiLCJub2RlX21vZHVsZXMvbW9ua2V5LWFyb3VuZC9tanMvaW5kZXguanMiLCJzcmMvQHR5cGVzL2ludGVybmFsUGx1Z2luSW5qZWN0b3IudHMiLCJzcmMvaW50ZXJuYWxQbHVnaW5zL3N0YXJyZWQudHMiLCJzcmMvbWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6bnVsbCwibmFtZXMiOlsiTm90aWNlIiwiaWNvblBhY2tzIiwiRnV6enlTdWdnZXN0TW9kYWwiLCJTZXR0aW5nIiwiVmFsdWVDb21wb25lbnQiLCJEcm9wZG93bkNvbXBvbmVudCIsIlNsaWRlckNvbXBvbmVudCIsInJlcXVpcmUiLCJnbG9iYWwiLCJyZXF1ZXN0VXJsIiwiSlNaaXAiLCJQbHVnaW5TZXR0aW5nVGFiIiwiUGx1Z2luIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdURBO0FBQ08sU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0FBQzdELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUN0RyxRQUFR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QVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMscXZZQUFxdlksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsNkRBQTZELENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxPQUFPLENBQUMsU0FBUyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLHdCQUF3QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBQyxDQUFDLEtBQUssR0FBRyxRQUFRLEdBQUcsQ0FBQyxFQUFFLEVBQUUsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsT0FBTyxPQUFPLENBQUMsU0FBUyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLHNCQUFzQixFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxRQUFRLElBQUksTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLFFBQVEsSUFBSSxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsVUFBVSxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLE9BQU8sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxTQUFTLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxHQUFHLEdBQUcsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBQyxDQUFDLE9BQU0sQ0FBQyxPQUFPLElBQUksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsU0FBUyxXQUFXLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTs7QUNNN2hoQjs7Ozs7Ozs7QUFRRztBQUNJLE1BQU0sZUFBZSxHQUFHLENBQUMsTUFBd0IsS0FBWTtBQUNsRSxJQUFpQixNQUFNLENBQUMsV0FBVyxHQUFHO0FBQ3RDOzs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JHO0lBRUgsT0FBTyxxQkFBcUIsRUFBRSxDQUFDO0FBQ2pDLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7OztBQVdHO0FBQ0ksTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE1BQXdCLEVBQUUsSUFBWSxFQUFFLEVBQWUsS0FBWTs7O0FBRXBHLElBQUEsTUFBTSxPQUFPLEdBQUcsSUFBSSxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUMvQyxJQUFBLE1BQU0sUUFBUSxHQUFHLElBQUksTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDakQsSUFBQSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDdkIsUUFBQSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQSxPQUFBLEVBQVUsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQSxHQUFBLENBQUssQ0FBQyxDQUFDO0FBQzVFLEtBQUE7QUFDRCxJQUFBLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUN4QixRQUFBLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFBLFFBQUEsRUFBVyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFBLEdBQUEsQ0FBSyxDQUFDLENBQUM7QUFDOUUsS0FBQTs7QUFHRCxJQUFBLElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQzs7QUFHMUQsSUFBQSxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUU7UUFDcEMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFBLEVBQUEsR0FBQSxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsTUFBSSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBQSxDQUFDLENBQzVELEdBQUEsRUFBQSxDQUFBLEVBQUEsR0FBQSxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssbUNBQUksQ0FDNUMsQ0FBQSxHQUFBLEVBQU0sQ0FBQSxFQUFBLEdBQUEsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLE1BQUksSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLEdBQUEsQ0FBQyxNQUFNLENBQUEsRUFBQSxHQUFBLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FB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QixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU9BLGVBQU8sRUFBRUEsZUFBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1FQUFtRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxVQUFVLEVBQUUsV0FBVyxFQUFFLE9BQU8sV0FBVyxFQUFFLFdBQVcsRUFBRSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdHQUFnRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsT0FBTyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLDRFQUE0RSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLDRFQUE0RSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsbUNBQW1DLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFFBQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsY0FBYyxHQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQ0FBcUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsT0FBTyxXQUFXLEVBQUUsV0FBVyxFQUFFLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFNBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFNLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxZQUFZLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFlBQVksV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLDRFQUE0RSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsaUNBQWlDLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixHQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsK0JBQStCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFv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QyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLG9JQUFvSSxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsNEJBQTRCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLGNBQWMsR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxZQUFZLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxFQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRSxFQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPQyxjQUFNLENBQUNBLGNBQU0sQ0FBQyxXQUFXLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUcsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sVUFBVSxFQUFFLFdBQVcsRUFBRSxPQUFPLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxxQ0FBb0MsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsR0FBRyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLHFDQUFvQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUMsRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksY0FBYyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU9BLGNBQU0sQ0FBQ0EsY0FBTSxDQUFDLFdBQVcsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFB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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9NZXRhRGF0YS50cyIsInNyYy9pY29uUGFja01hbmFnZXIudHMiLCJub2RlX21vZHVsZXMvdHdlbW9qaS9kaXN0L3R3ZW1vamkuZXNtLmpzIiwic3JjL3V0aWwudHMiLCJzcmMvaWNvbnNQaWNrZXJNb2RhbC50cyIsInNyYy9zZXR0aW5ncy50cyIsInNyYy9taWdyYXRpb24udHMiLCJzcmMvc2V0dGluZ3NUYWIvaWNvbkZvbGRlclNldHRpbmcudHMiLCJzcmMvc2V0dGluZ3NUYWIvY3VzdG9tSWNvblBhY2sudHMiLCJzcmMvY29sb3JQaWNrZXJDb21wb25lbnQudHMiLCJzcmMvc2V0dGluZ3NUYWIvY3VzdG9tSWNvblJ1bGUudHMiLCJzcmMvc2V0dGluZ3NUYWIvZXh0cmFNYXJnaW4udHMiLCJzcmMvc2V0dGluZ3NUYWIvaWNvbkNvbG9yLnRzIiwic3JjL3NldHRpbmdzVGFiL2ljb25Gb250U2l6ZS50cyIsInNyYy9zZXR0aW5nc1RhYi9pY29uUGFja3NQYXRoLnRzIiwic3JjL2ljb25QYWNrcy50cyIsIm5vZGVfbW9kdWxlcy9qc3ppcC9kaXN0L2pzemlwLm1pbi5qcyIsInNyYy96aXBVdGlsLnRzIiwic3JjL2ljb25QYWNrQnJvd3Nlck1vZGFsLnRzIiwic3JjL3NldHRpbmdzVGFiL3ByZWRlZmluZWRJY29uUGFja3MudHMiLCJzcmMvc2V0dGluZ3NUYWIvcmVjZW50bHlVc2VkSWNvbnMudHMiLCJzcmMvc2V0dGluZ3NUYWIvaW5kZXgudHMiLCJub2RlX21vZHVsZXMvbW9ua2V5LWFyb3VuZC9tanMvaW5kZXguanMiLCJzcmMvQHR5cGVzL2ludGVybmFsUGx1Z2luSW5qZWN0b3IudHMiLCJzcmMvaW50ZXJuYWxQbHVnaW5zL3N0YXJyZWQudHMiLCJzcmMvbWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6bnVsbCwibmFtZXMiOlsiTm90aWNlIiwiaWNvblBhY2tzIiwiRnV6enlTdWdnZXN0TW9kYWwiLCJTZXR0aW5nIiwiVmFsdWVDb21wb25lbnQiLCJEcm9wZG93bkNvbXBvbmVudCIsIlNsaWRlckNvbXBvbmVudCIsInJlcXVpcmUiLCJnbG9iYWwiLCJyZXF1ZXN0VXJsIiwiSlNaaXAiLCJQbHVnaW5TZXR0aW5nVGFiIiwiUGx1Z2luIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdURBO0FBQ08sU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0FBQzdELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUN0RyxRQUFR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QVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMscXZZQUFxdlksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsNkRBQTZELENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxPQUFPLENBQUMsU0FBUyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLHdCQUF3QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBQyxDQUFDLEtBQUssR0FBRyxRQUFRLEdBQUcsQ0FBQyxFQUFFLEVBQUUsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsT0FBTyxPQUFPLENBQUMsU0FBUyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLHNCQUFzQixFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxRQUFRLElBQUksTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLFFBQVEsSUFBSSxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsVUFBVSxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLE9BQU8sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxTQUFTLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxHQUFHLEdBQUcsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBQyxDQUFDLE9BQU0sQ0FBQyxPQUFPLElBQUksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsU0FBUyxXQUFXLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTs7QUNNN2hoQjs7Ozs7Ozs7QUFRRztBQUNJLE1BQU0sZUFBZSxHQUFHLENBQUMsTUFBd0IsS0FBWTtBQUNsRSxJQUFpQixNQUFNLENBQUMsV0FBVyxHQUFHO0FBQ3RDOzs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JHO0lBRUgsT0FBTyxxQkFBcUIsRUFBRSxDQUFDO0FBQ2pDLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7OztBQVdHO0FBQ0ksTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE1BQXdCLEVBQUUsSUFBWSxFQUFFLEVBQWUsS0FBWTs7QUFFcEcsSUFBQSxNQUFNLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQy9DLElBQUEsTUFBTSxRQUFRLEdBQUcsSUFBSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUNqRCxJQUFBLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUN2QixRQUFBLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBLE9BQUEsRUFBVSxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFBLEdBQUEsQ0FBSyxDQUFDLENBQUM7QUFDNUUsS0FBQTtBQUNELElBQUEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQ3hCLFFBQUEsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUEsUUFBQSxFQUFXLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUEsR0FBQSxDQUFLLENBQUMsQ0FBQztBQUM5RSxLQUFBOztBQUdELElBQUEsSUFBSSxHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDOztJQUcxRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxDQUFDO0FBQ2hELElBQUEsTUFBTSxnQkFBZ0IsR0FBRztBQUN2QixRQUFBLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxLQUFLLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDOUMsUUFBQSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssS0FBSyxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDO0FBQ3BELFFBQUEsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEtBQUssU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNqRCxRQUFBLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxLQUFLLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUM7S0FDeEQsQ0FBQztBQUNGLElBQUEsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxFQUFFO1FBQ3BDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUcsRUFBQSxnQkFBZ0IsQ0FBQyxHQUFHLENBQU0sR0FBQSxFQUFBLGdCQUFnQixDQUFDLEtBQUssQ0FBQSxHQUFBLEVBQU0sZ0JBQWdCLENBQUMsTUFBTSxNQUFNLGdCQUFnQixDQUFDLElBQUksQ0FBQSxFQUFBLENBQUksQ0FBQztBQUNuSSxLQUFBO0FBRUQsSUFBQSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBWSxFQUFFLENBQXFCLEVBQUUsSUFBQSxHQUEwQixNQUFNLEtBQVk7SUFDckcsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDaEcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxJQUFJLFVBQVUsSUFBSSxDQUFDLEVBQUU7QUFDbkIsUUFBQSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxLQUFJO0FBQzNCLFlBQUEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUM3RCxnQkFBQSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBRyxFQUFBLElBQUksS0FBSyxDQUFDLEtBQUEsSUFBQSxJQUFELENBQUMsS0FBRCxLQUFBLENBQUEsR0FBQSxDQUFDLEdBQUksY0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDaEUsYUFBQTtpQkFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDdEQsSUFBSSxHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLGFBQUE7QUFDSCxTQUFDLENBQUMsQ0FBQztBQUNKLEtBQUE7QUFFRCxJQUFBLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0FBUUc7QUFDSSxNQUFNLGFBQWEsR0FBRyxDQUMzQixNQUF3QixFQUN4QixJQUEyQyxFQUMzQyx1QkFBOEMsRUFDOUMsUUFBcUIsS0FDYjtBQUNSLElBQUEsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQzVFLElBQUEsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksS0FBSTtRQUNyQyxJQUFJLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbEQsT0FBTztBQUNSLFNBQUE7QUFFRCxRQUFBLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7O1FBRy9DLE1BQU0sbUJBQW1CLEdBQTRCLEVBQUUsQ0FBQztRQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSTtBQUN0QixZQUFBLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNuQyxTQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsS0FBSTtZQUNqQyxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN2RCxZQUFBLElBQUksUUFBUSxFQUFFO0FBQ1osZ0JBQUEsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztBQUNqQyxnQkFBQSxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDOztBQUczQyxnQkFBQSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDbEUsb0JBQUEsTUFBTSxRQUFRLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO0FBQ3BFLG9CQUFBLElBQUksUUFBUSxFQUFFO3dCQUNaLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUN6RSx3QkFBQSxJQUFJLFlBQVksRUFBRTs0QkFDaEIsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3ZCLHlCQUFBO0FBRUQsd0JBQUEsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3JDLHdCQUFBLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7QUFFcEQsd0JBQUEsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUU3Qyx3QkFBQSxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUM5QyxxQkFBQTtvQkFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFO3dCQUN0RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNuRix3QkFBQSxNQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUM7QUFDbEQsd0JBQUEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSTtBQUNsQiw0QkFBQSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2hDLGdDQUFBLE1BQU0sbUJBQW1CLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dDQUNoRSxNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFDN0YsZ0NBQUEsSUFBSSxZQUFZLEVBQUU7b0NBQ2hCLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUN2QixpQ0FBQTtnQ0FFRCxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDekQsZ0NBQUEsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUVwRCxnQ0FBQSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0NBRXhELG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3RGLDZCQUFBO0FBQ0gseUJBQUMsQ0FBQyxDQUFDO0FBQ0oscUJBQUE7QUFDRixpQkFBQTtBQUNGLGFBQUE7QUFDSCxTQUFDLENBQUMsQ0FBQztBQUVILFFBQUEsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQWdCLEVBQUUsSUFBbUIsS0FBSTtBQUNsRSxZQUFBLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4RCxZQUFBLElBQUksUUFBUSxFQUFFO0FBQ1osZ0JBQUEsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztBQUNqQyxnQkFBQSxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO2dCQUMzQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLDRCQUE0QixDQUFDLENBQUM7Z0JBQ3pFLElBQUksQ0FBQyxZQUFZLEVBQUU7QUFDakIsb0JBQUEsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3JDLG9CQUFBLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7QUFFcEQsb0JBQUEsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUUxRCxvQkFBQSxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUM5QyxpQkFBQTtBQUNGLGFBQUE7QUFDSCxTQUFDLENBQUM7O1FBR0YsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUk7WUFDMUMsSUFBSTs7Z0JBRUYsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDLGdCQUFBLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUMsT0FBTyxDQUFDLENBQU8sSUFBSSxLQUFJLFNBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxhQUFBO29CQUMxRCxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDO0FBQ3ZFLG9CQUFBLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksa0JBQWtCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFO0FBQ2hFLHdCQUFBLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMvQixxQkFBQTtpQkFDRixDQUFBLENBQUMsQ0FBQztBQUNKLGFBQUE7WUFBQyxPQUFNLEVBQUEsRUFBQTs7QUFFTixnQkFBQSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFPLElBQUksS0FBSSxTQUFBLENBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsYUFBQTtvQkFDMUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQztBQUN2RSxvQkFBQSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUU7QUFDdkUsd0JBQUEsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9CLHFCQUFBO2lCQUNGLENBQUEsQ0FBQyxDQUFDO0FBQ0osYUFBQTtBQUNILFNBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBQSxJQUFJLFFBQVEsRUFBRTtBQUNaLFlBQUEsUUFBUSxFQUFFLENBQUM7QUFDWixTQUFBO0FBQ0gsS0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFSyxNQUFNLHdCQUF3QixHQUFHLENBQ3RDLE1BQXdCLEVBQ3hCLHVCQUE4QyxFQUM5QyxRQUFnQixFQUNoQixRQUFnQixLQUNSO0FBQ1IsSUFBQSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDNUUsSUFBQSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxLQUFJO1FBQ3JDLElBQUksdUJBQXVCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsRCxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN2RCxZQUFBLElBQUksUUFBUSxFQUFFO2dCQUNaLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDOUMsZ0JBQUEsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUVwRCxnQkFBQSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUU3QyxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ2hFLGFBQUE7QUFDRixTQUFBO0FBQ0gsS0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFSyxNQUFNLHdCQUF3QixHQUFHLENBQUMsTUFBd0IsRUFBRSxJQUFXLEtBQVU7SUFDdEYsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM5QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDekQsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUU7UUFDNUMsT0FBTztBQUNSLEtBQUE7QUFFRCxJQUFBLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUE2QixDQUFDO0lBQzFELElBQUksQ0FBQyxjQUFjLEVBQUU7UUFDbkIsT0FBTztBQUNSLEtBQUE7SUFFRCxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDakUsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDMUMsT0FBTztBQUNSLEtBQUE7QUFFRCxJQUFBLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLFFBQVEsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEUsSUFBSSxDQUFDLFNBQVMsRUFBRTtRQUNkLE1BQU0sY0FBYyxHQUNsQix5T0FBeU8sQ0FBQztBQUM1TyxRQUFBLElBQUksQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDO1FBQ2hDLE9BQU87QUFDUixLQUFBO0FBRUQsSUFBQSxNQUFNLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUNoQyxJQUFBLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFO1FBQ2hDLE9BQU87QUFDUixLQUFBO0FBRUQsSUFBQSxNQUFNLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUNuQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxFQUN6QyxRQUFRLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQ3ZDLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRjs7Ozs7O0FBTUc7QUFDSSxNQUFNLGdCQUFnQixHQUFHLENBQUMsTUFBd0IsS0FBVTtJQUNqRSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQzlDLElBQUEsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQzVFLElBQUEsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksS0FBSTtRQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSTtZQUNyQixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRCxZQUFBLElBQUksUUFBUSxFQUFFO0FBQ1osZ0JBQUEsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDakMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyw0QkFBNEIsQ0FBZ0IsQ0FBQztBQUNwRixnQkFBQSxRQUFRLENBQUMsU0FBUyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQy9FLGFBQUE7QUFDSCxTQUFDLENBQUMsQ0FBQztBQUNMLEtBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUY7Ozs7O0FBS0c7QUFDSSxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFnQixLQUFVO0FBQ3BFLElBQUEsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFGLElBQUEsSUFBQSxFQUFFLGNBQUYsRUFBRSxHQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQSxZQUFBLEVBQWUsSUFBSSxDQUFBLEVBQUEsQ0FBSSxDQUFDLENBQUM7SUFDbkUsSUFBSSxDQUFDLElBQUksRUFBRTtBQUNULFFBQUEsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RCxPQUFPO0FBQ1IsS0FBQTtJQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNsRSxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ2IsT0FBTztBQUNSLEtBQUE7SUFFRCxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBRUssTUFBTSxVQUFVLEdBQUcsQ0FBQyxNQUF3QixFQUFFLElBQW1CLEtBQUk7O0lBRTFFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQU8sSUFBSSxLQUFJLFNBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxhQUFBO0FBQ2hELFFBQUEsdUJBQXVCLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztLQUM3QyxDQUFBLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGOzs7Ozs7QUFNRztBQUNJLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxJQUFnQixFQUFFLElBQVksS0FBYTtJQUNsRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ25DLElBQUk7O1FBRUYsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDLFFBQUEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3JCLFlBQUEsT0FBTyxJQUFJLENBQUM7QUFDYixTQUFBO0FBQ0YsS0FBQTtJQUFDLE9BQU0sRUFBQSxFQUFBOztRQUVOLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDNUIsWUFBQSxPQUFPLElBQUksQ0FBQztBQUNiLFNBQUE7QUFDRixLQUFBO0FBRUQsSUFBQSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGOzs7OztBQUtHO0FBQ0ksTUFBTSw0QkFBNEIsR0FBRyxDQUFDLE1BQXdCLEVBQUUsSUFBZ0IsS0FBVTtBQUMvRixJQUFBLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQ2hFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLFVBQVUsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLENBQ3RELENBQUM7SUFFRixNQUFNLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBTyxZQUFZLEtBQUksU0FBQSxDQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLGFBQUE7UUFDakUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFJLFNBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxhQUFBO0FBQ3ZDLFlBQUEsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDO1lBQ2xFLE1BQU0sUUFBUSxHQUNaLE9BQU8sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVE7a0JBQ3JDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQXNCLENBQUMsUUFBUTtrQkFDckQsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLE1BQU0seUJBQXlCLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFFBQVEsS0FBSyxNQUFNLENBQUMsQ0FBQztBQUVoSCxZQUFBLE1BQU0sWUFBWSxHQUFHLFFBQVEsSUFBSSx5QkFBeUIsQ0FBQztBQUMzRCxZQUFBLElBQUksQ0FBQyxZQUFZLElBQUksd0JBQXdCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLGtCQUFrQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRTtBQUMvRixnQkFBQSxhQUFhLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QyxhQUFBO1NBQ0YsQ0FBQSxDQUFDLENBQUM7S0FDSixDQUFBLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVLLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxNQUF3QixFQUFFLElBQWdCLEtBQVU7SUFDMUYsSUFBSTs7UUFFRixNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEMsUUFBQSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFPLElBQUksS0FBSSxTQUFBLENBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsYUFBQTtZQUMxRCxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDO0FBQ3ZFLFlBQUEsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUU7QUFDaEUsZ0JBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BELGFBQUE7U0FDRixDQUFBLENBQUMsQ0FBQztBQUNKLEtBQUE7SUFBQyxPQUFNLEVBQUEsRUFBQTs7QUFFTixRQUFBLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUMsT0FBTyxDQUFDLENBQU8sSUFBSSxLQUFJLFNBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxhQUFBO1lBQzFELE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUM7QUFDdkUsWUFBQSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUU7QUFDdkUsZ0JBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BELGFBQUE7U0FDRixDQUFBLENBQUMsQ0FBQztBQUNKLEtBQUE7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUFHLENBQUMsSUFBZ0IsRUFBRSxRQUEyQixLQUFhO0FBQ3BGLElBQUEsUUFDRSxJQUFJLENBQUMsR0FBRyxLQUFLLFlBQVk7U0FDeEIsSUFBSSxDQUFDLEdBQUcsS0FBSyxPQUFPLElBQUksUUFBUSxLQUFLLE1BQU0sQ0FBQztTQUM1QyxJQUFJLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxRQUFRLEtBQUssUUFBUSxDQUFDLEVBQ2pEO0FBQ0osQ0FBQyxDQUFDO0FBRUY7Ozs7OztBQU1HO0FBQ0ksTUFBTSx1QkFBdUIsR0FBRyxDQUNyQyxNQUF3QixFQUN4QixJQUFnQixFQUNoQixJQUFvQixLQUNILFNBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxhQUFBO0lBQ2pCLElBQUk7O1FBRUYsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDLFFBQUEsSUFBSSxJQUFJLEVBQUU7WUFDUixNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDO0FBQ3ZFLFlBQUEsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUU7QUFDaEUsZ0JBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BELGFBQUE7QUFDRixTQUFBO0FBQU0sYUFBQTtZQUNMLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFPLFlBQVksS0FBSSxTQUFBLENBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsYUFBQTtnQkFDakUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3JELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsS0FBSSxTQUFBLENBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsYUFBQTtBQUN2QyxvQkFBQSxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUM7QUFDbEUsb0JBQUEsSUFBSSxRQUFRLEVBQUU7d0JBQ1osTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN2Qyx3QkFBQSxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksa0JBQWtCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFO0FBQy9ELDRCQUFBLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7QUFDakMsNEJBQUEsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQzs0QkFDM0MsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDOzRCQUN6RSxJQUFJLENBQUMsWUFBWSxFQUFFO0FBQ2pCLGdDQUFBLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNyQyxnQ0FBQSxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO2dDQUVwRCxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztBQUU5QyxnQ0FBQSxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUM5Qyw2QkFBQTtBQUNGLHlCQUFBO0FBQ0YscUJBQUE7aUJBQ0YsQ0FBQSxDQUFDLENBQUM7YUFDSixDQUFBLENBQUMsQ0FBQztBQUNKLFNBQUE7QUFDRixLQUFBO0lBQUMsT0FBTSxFQUFBLEVBQUE7O0FBRU4sUUFBQSxJQUFJLElBQUksRUFBRTtZQUNSLE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUM7QUFDdkUsWUFBQSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUU7QUFDdkUsZ0JBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BELGFBQUE7QUFDRixTQUFBO0FBQU0sYUFBQTtBQUNMLFlBQUEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBTyxJQUFJLEtBQUksU0FBQSxDQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLGFBQUE7Z0JBQzFELE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUM7QUFDdkUsZ0JBQUEsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksa0JBQWtCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFO0FBQ3ZFLG9CQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwRCxpQkFBQTthQUNGLENBQUEsQ0FBQyxDQUFDO0FBQ0osU0FBQTtBQUNGLEtBQUE7QUFDSCxDQUFDLENBQUEsQ0FBQztBQUVGOzs7Ozs7OztBQVFHO0FBQ0ksTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUF3QixFQUFFLElBQVksRUFBRSxJQUFZLEVBQUUsS0FBYyxLQUFVO0FBQ3JHLElBQUEsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDMUIsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JCLEtBQUE7SUFFRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQWUsWUFBQSxFQUFBLElBQUksQ0FBSSxFQUFBLENBQUEsQ0FBQyxDQUFDO0lBQzdELElBQUksQ0FBQyxJQUFJLEVBQUU7QUFDVCxRQUFBLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEQsT0FBTztBQUNSLEtBQUE7SUFFRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDaEUsSUFBSSxDQUFDLFNBQVMsRUFBRTtBQUNkLFFBQUEsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUMsU0FBUyxFQUFFO0FBQ2QsWUFBQSxPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFDOUMsT0FBTztBQUNSLFNBQUE7QUFDRixLQUFBOztJQUdELE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0FBQ2pGLElBQUEsSUFBSSx1QkFBdUIsRUFBRTtRQUMzQix1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQyxLQUFBO0lBRUQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQyxJQUFBLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFFcEQsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFaEQsSUFBQSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN6QyxDQUFDLENBQUM7QUFFRjs7Ozs7OztBQU9HO0FBQ0ksTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQXdCLEVBQUUsSUFBWSxFQUFFLElBQWlCLEVBQUUsS0FBYyxLQUFVO0FBQ2xILElBQUEsTUFBTSxrQkFBa0IsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEQsTUFBTSxZQUFZLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztBQUVySCxJQUFBLElBQUksWUFBWSxFQUFFO1FBQ2hCLElBQUksV0FBVyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDakUsUUFBQSxJQUFJLEtBQUssRUFBRTtBQUNULFlBQUEsV0FBVyxHQUFHLFlBQVksQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDakQsU0FBQTtBQUNELFFBQUEsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUM7QUFDOUIsS0FBQTtBQUFNLFNBQUE7QUFDTCxRQUFBLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFO0FBQ2hDLFlBQUEsTUFBTSxFQUFFLEtBQUs7QUFDYixZQUFBLEdBQUcsRUFBRSxNQUFNO0FBQ1gsWUFBQSxVQUFVLEVBQUUsT0FBTztBQUNqQixnQkFBQSxLQUFLLEVBQUUsTUFBTTtBQUNiLGdCQUFBLE1BQU0sRUFBRSxNQUFNO2FBQ2YsQ0FBQztBQUNILFNBQUEsQ0FBUSxDQUFDO1FBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFELEtBQUE7QUFDSCxDQUFDLENBQUM7QUFFRjs7Ozs7O0FBTUc7QUFDSSxNQUFNLHVCQUF1QixHQUFHLENBQUMsTUFBd0IsRUFBRSxVQUFrQixLQUFVO0lBQzVGLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM1QyxJQUFBLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFO1FBQ3pDLE9BQU87QUFDUixLQUFBOztJQUdELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ3JGLElBQUEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSTtRQUNsQixJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDNUIsWUFBQSxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCLFlBQUEsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQyxTQUFBO1FBRUQsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFHLE1BQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUM1RCxLQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGOzs7Ozs7QUFNRztBQUNJLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxNQUF3QixFQUFFLFVBQWtCLEtBQVU7SUFDL0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzVDLElBQUEsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUU7UUFDekMsT0FBTztBQUNSLEtBQUE7O0lBR0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDckYsSUFBQSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFJOztRQUVsQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUM3QixZQUFBLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsWUFBQSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLFNBQUE7QUFDSCxLQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVLLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBVyxLQUFhO0FBQzlDLElBQUEsTUFBTSxNQUFNLEdBQUc7QUFDYixRQUFBLGttQkFBa21CO0tBQ25tQixDQUFDO0lBRUYsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtBQUMvQixRQUFBLE9BQU8sSUFBSSxDQUFDO0FBQ2IsS0FBQTtBQUFNLFNBQUE7QUFDTCxRQUFBLE9BQU8sS0FBSyxDQUFDO0FBQ2QsS0FBQTtBQUNILENBQUMsQ0FBQztBQUVLLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBd0IsS0FBYztJQUNuRSxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7QUFFNUIsSUFBQSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFJO1FBQ3hELElBQUksR0FBRyxLQUFLLFVBQVUsRUFBRTtBQUN0QixZQUFBLE1BQU0sS0FBSyxHQUFJLEtBQTRCLENBQUMsS0FBSyxDQUFDO0FBQ2xELFlBQUEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQWdCLEtBQUk7QUFDakMsZ0JBQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDdkIsb0JBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEIsaUJBQUE7QUFDSCxhQUFDLENBQUMsQ0FBQztBQUNKLFNBQUE7QUFBTSxhQUFBLElBQUksR0FBRyxLQUFLLFVBQVUsSUFBSSxHQUFHLEtBQUssVUFBVSxFQUFFO1lBQ25ELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2hELGdCQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEIsYUFBQTtBQUFNLGlCQUFBLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO2dCQUNwQyxNQUFNLENBQUMsR0FBRyxLQUF5QixDQUFDO0FBQ3BDLGdCQUFBLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQy9DLG9CQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLGlCQUFBO0FBQ0QsZ0JBQUEsSUFBSSxDQUFDLENBQUMsZUFBZSxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUU7QUFDN0Qsb0JBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDaEMsaUJBQUE7QUFDRixhQUFBO0FBQ0YsU0FBQTtBQUNILEtBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBQSxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFSyxNQUFNLFlBQVksR0FBRyxDQUFPLElBQVUsS0FBcUIsU0FBQSxDQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLGFBQUE7SUFDaEUsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sS0FBSTtBQUNwRCxRQUFBLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7QUFDaEMsUUFBQSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNqQyxRQUFBLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxXQUFXLEtBQUssT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBZ0IsQ0FBQyxDQUFDO0FBQ2hGLEtBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBQSxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUEsQ0FBQztBQUVLLE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBd0IsRUFBRSxRQUFnQixLQUF3Qjs7QUFDOUYsSUFBQSxJQUFJLFFBQVEsS0FBSyxVQUFVLElBQUksUUFBUSxLQUFLLFVBQVUsRUFBRTtRQUN0RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDaEQsWUFBQSxPQUFPLEtBQUssQ0FBQztBQUNkLFNBQUE7QUFBTSxhQUFBLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQ3BDLE1BQU0sQ0FBQyxHQUFHLEtBQXlCLENBQUM7QUFDcEMsWUFBQSxJQUFJLENBQUMsQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDL0MsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQ25CLGFBQUE7QUFDRCxZQUFBLElBQUksQ0FBQyxDQUFDLGVBQWUsS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFO2dCQUM3RCxPQUFPLENBQUMsQ0FBQyxlQUFlLENBQUM7QUFDMUIsYUFBQTtBQUNGLFNBQUE7QUFDRixLQUFBO0FBRUQsSUFBQSxNQUFNLEtBQUssR0FBRyxDQUFDLEVBQUEsR0FBQSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUF3QixNQUFFLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFBLEtBQUssQ0FBQztJQUMxRSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBZ0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksd0JBQXdCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDL0csSUFBQSxJQUFJLElBQUksRUFBRTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztBQUNsQixLQUFBO0FBRUQsSUFBQSxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFSyxNQUFNLHNCQUFzQixHQUFHLENBQUMsTUFBd0IsS0FBSTtJQUNqRSxNQUFNLE1BQU0sR0FBcUMsRUFBRSxDQUFDO0FBQ3BELElBQUEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQXNDLEtBQUk7QUFDN0YsUUFBQSxJQUFJLEdBQUcsS0FBSyxVQUFVLElBQUksR0FBRyxLQUFLLFVBQVUsRUFBRTtBQUM1QyxZQUFBLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO0FBQzdCLGdCQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztvQkFDNUIsT0FBTztBQUNSLGlCQUFBO0FBQ0YsYUFBQTtBQUVELFlBQUEsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7QUFDN0IsZ0JBQUEsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDdkQsb0JBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7b0JBQzVDLE9BQU87QUFDUixpQkFBQTtBQUNELGdCQUFBLElBQUksS0FBSyxDQUFDLGVBQWUsS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFFO0FBQ3JFLG9CQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO29CQUNuRCxPQUFPO0FBQ1IsaUJBQUE7QUFDRixhQUFBO0FBQ0YsU0FBQTtBQUNILEtBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBQSxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDOztBQzFxQm9CLE1BQUEsZ0JBQWlCLFNBQVFDLDBCQUFzQixDQUFBO0FBV2xFLElBQUEsV0FBQSxDQUFZLEdBQVEsRUFBRSxNQUF3QixFQUFFLElBQVksRUFBQTtRQUMxRCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFOTCxJQUFXLENBQUEsV0FBQSxHQUFXLENBQUMsQ0FBQztBQU85QixRQUFBLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQ3JCLFFBQUEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakIsUUFBQSxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUVqQixNQUFNLHdCQUF3QixHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUM3RSxRQUFBLElBQUksQ0FBQyxpQkFBaUIsR0FBRyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEtBQUk7QUFDOUUsWUFBQSxPQUFPLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsQyxTQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFFbkUsSUFBSSxDQUFDLFlBQVksR0FBSSxJQUFJLENBQUMsS0FBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUM7S0FDdkY7SUFFRCxjQUFjLEdBQUE7UUFDWixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDdkIsUUFBQSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUNwQyxRQUFBLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQ3JCLFlBQUEsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBRS9CLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUMxRCxZQUFBLGNBQWMsQ0FBQyxTQUFTLEdBQUcscURBQXFELENBQUM7QUFDakYsWUFBQSxjQUFjLENBQUMsV0FBVyxHQUFHLG1CQUFtQixDQUFDO1lBQ2pELGNBQWMsQ0FBQyxTQUFTLElBQUksQ0FBa0QsK0NBQUEsRUFBQSxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBLE1BQUEsQ0FBUSxDQUFDO0FBRTlHLFlBQUEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFLO0FBQ3RCLGdCQUFBLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0IsYUFBQyxDQUFDLENBQUM7QUFFSCxZQUFBLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsTUFBSztBQUM1QyxnQkFBQSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9CLGFBQUMsQ0FBQyxDQUFDO0FBQ0gsWUFBQSxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3BELFNBQUE7S0FDRjtBQUVPLElBQUEsYUFBYSxDQUFDLFFBQWdCLEVBQUE7QUFDcEMsUUFBQSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztLQUNkO0lBRUQsTUFBTSxHQUFBO1FBQ0osS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ2hCO0lBRUQsT0FBTyxHQUFBO0FBQ0wsUUFBQSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQzNCLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztLQUNuQjtBQUVELElBQUEsV0FBVyxDQUFDLElBQVUsRUFBQTtRQUNwQixPQUFPLENBQUEsRUFBRyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUM7S0FDeEM7SUFFRCxRQUFRLEdBQUE7UUFDTixNQUFNLFFBQVEsR0FBVyxFQUFFLENBQUM7UUFFNUIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQ25DLFlBQUEsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsS0FBSTtBQUMxQyxnQkFBQSxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzVDLFFBQVEsQ0FBQyxJQUFJLENBQUM7QUFDWixvQkFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7b0JBQ3BDLE1BQU0sRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUM7QUFDekMsb0JBQUEsV0FBVyxFQUFFLFFBQVE7QUFDdEIsaUJBQUEsQ0FBQyxDQUFDO0FBQ0wsYUFBQyxDQUFDLENBQUM7QUFDSixTQUFBO1FBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQy9DLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtBQUNuQixnQkFBQSxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSTtBQUNyQyxhQUFBLENBQUMsQ0FBQztBQUNKLFNBQUE7QUFFRCxRQUFBLE9BQU8sUUFBUSxDQUFDO0tBQ2pCO0FBRUQsSUFBQSxZQUFZLENBQUMsSUFBbUIsRUFBQTtBQUM5QixRQUFBLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO0FBQzVCLFlBQUEsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDcEQsU0FBQTtBQUFNLGFBQUE7WUFDTCxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3hDLFNBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVDO0lBRUQsZ0JBQWdCLENBQUMsSUFBc0IsRUFBRSxFQUFlLEVBQUE7QUFDdEQsUUFBQSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRWpDLFFBQUEsSUFBSSxlQUFlLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUMvQyxZQUFBLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEdBQUcsc0VBQXNFLENBQUM7WUFDMUcsT0FBTztBQUNSLFNBQUE7O0FBR0QsUUFBQSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDMUUsWUFBQSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssQ0FBQyxFQUFFO2dCQUMxQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDdkQsZ0JBQUEsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsa0NBQWtDLENBQUMsQ0FBQztBQUM5RCxnQkFBQSxXQUFXLENBQUMsU0FBUyxHQUFHLHNCQUFzQixDQUFDO0FBQy9DLGdCQUFBLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDN0MsYUFBQTtpQkFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRTtnQkFDN0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNqRCxnQkFBQSxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0FBQzlELGdCQUFBLFdBQVcsQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDO0FBQ3JDLGdCQUFBLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDeEQsYUFBQTtBQUNGLFNBQUE7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFO0FBQzlDLFlBQUEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDdkMsU0FBQTtBQUVELFFBQUEsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7QUFDaEMsWUFBQSxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDakUsWUFBQSxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDMUIsRUFBRSxDQUFDLFNBQVMsR0FBRyxDQUFvRSxpRUFBQSxFQUFBLE9BQU8sQ0FBQyxLQUFLLENBQzlGLGFBQWEsQ0FDZCxDQUFBLE1BQUEsQ0FBUSxDQUFDO0FBQ1gsYUFBQTtBQUFNLGlCQUFBO2dCQUNMLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQSxLQUFBLEVBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBd0QscURBQUEsRUFBQSxvQkFBb0IsQ0FDN0csSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNmLENBQUEsTUFBQSxDQUFRLENBQUM7QUFDWCxhQUFBO0FBQ0YsU0FBQTtBQUVELFFBQUEsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7S0FDcEI7QUFFTyxJQUFBLGFBQWEsQ0FBQyxJQUFnQixFQUFBO1FBQ25DLElBQUksQ0FBQyxLQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7S0FDMUU7SUFFTyxhQUFhLEdBQUE7UUFDbkIsT0FBUSxJQUFJLENBQUMsS0FBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUM7S0FDMUU7QUFDRjs7QUNoSk0sTUFBTSxnQkFBZ0IsR0FBdUI7QUFDbEQsSUFBQSxRQUFRLEVBQUUsS0FBSztBQUNmLElBQUEsYUFBYSxFQUFFLDhDQUE4QztBQUM3RCxJQUFBLFFBQVEsRUFBRSxFQUFFO0FBQ1osSUFBQSxTQUFTLEVBQUUsSUFBSTtBQUNmLElBQUEsaUJBQWlCLEVBQUUsRUFBRTtBQUNyQixJQUFBLHFCQUFxQixFQUFFLENBQUM7QUFDeEIsSUFBQSxLQUFLLEVBQUUsRUFBRTtBQUNULElBQUEsV0FBVyxFQUFFO0FBQ1gsUUFBQSxHQUFHLEVBQUUsQ0FBQztBQUNOLFFBQUEsS0FBSyxFQUFFLENBQUM7QUFDUixRQUFBLE1BQU0sRUFBRSxDQUFDO0FBQ1QsUUFBQSxJQUFJLEVBQUUsQ0FBQztBQUNSLEtBQUE7Q0FDRjs7QUNwQ0QsTUFBTSxZQUFZLEdBQUc7QUFDbkIsSUFBQTtBQUNFLFFBQUEsaUJBQWlCLEVBQUUsSUFBSTtBQUN2QixRQUFBLFVBQVUsRUFBRSxRQUFRO0FBQ3BCLFFBQUEsY0FBYyxFQUFFLEtBQUs7QUFDdEIsS0FBQTtBQUNELElBQUE7QUFDRSxRQUFBLGlCQUFpQixFQUFFLElBQUk7QUFDdkIsUUFBQSxVQUFVLEVBQUUsTUFBTTtBQUNsQixRQUFBLGNBQWMsRUFBRSxLQUFLO0FBQ3RCLEtBQUE7QUFDRCxJQUFBO0FBQ0UsUUFBQSxpQkFBaUIsRUFBRSxJQUFJO0FBQ3ZCLFFBQUEsVUFBVSxFQUFFLE1BQU07QUFDbEIsUUFBQSxjQUFjLEVBQUUsS0FBSztBQUN0QixLQUFBO0NBQ0YsQ0FBQztBQUVLLE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBd0IsS0FBSTtBQUN2RCxJQUFBLE1BQU0sSUFBSSxHQUFRLE1BQUEsQ0FBQSxNQUFBLENBQUEsRUFBQSxFQUFBLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBRSxDQUFDO0FBQ3JDLElBQUEsTUFBTSxPQUFPLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFL0MsSUFBQSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxLQUFJO0FBQ3hCLFFBQUEsSUFBSSxLQUFLLEVBQUU7QUFDVCxZQUFBLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDO0FBRTdCLFlBQUEsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FDakMsQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLGlCQUFpQixJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUM3RyxDQUFDO0FBRUYsWUFBQSxJQUFJLFNBQVMsRUFBRTtnQkFDYixJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ1Asb0JBQUEsU0FBUyxDQUFDLGNBQWM7QUFDeEIsd0JBQUEsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDNUYsYUFBQTtBQUNGLFNBQUE7QUFDSCxLQUFDLENBQUMsQ0FBQztBQUVILElBQUEsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDOztBQ3hDYSxNQUFnQixpQkFBaUIsQ0FBQTtJQUk3QyxXQUFZLENBQUEsTUFBd0IsRUFBRSxXQUF3QixFQUFBO0FBQzVELFFBQUEsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckIsUUFBQSxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztLQUNoQztBQUdGOztBQ0tvQixNQUFBLHFCQUFzQixTQUFRLGlCQUFpQixDQUFBO0FBT2xFLElBQUEsV0FBQSxDQUFZLE1BQXdCLEVBQUUsV0FBd0IsRUFBRSxjQUEwQixFQUFBO0FBQ3hGLFFBQUEsS0FBSyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztBQUMzQixRQUFBLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyRCxRQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztBQUM5QyxRQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxHQUFHLDBCQUEwQixDQUFDO0tBQzdEO0FBRU8sSUFBQSxxQkFBcUIsQ0FBQyxLQUFhLEVBQUE7UUFDekMsT0FBTyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztLQUNoRDtBQUVPLElBQUEsZUFBZSxDQUFDLEtBQVksRUFBQTtRQUNsQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0tBQ3pCO0FBRU8sSUFBQSxTQUFTLENBQUMsRUFBZSxFQUFBO0FBQy9CLFFBQUEsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUU5QixRQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7QUFDM0IsWUFBQSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUNyQyxZQUFBLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7QUFDbEQsWUFBQSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0FBQzdCLFNBQUE7S0FDRjtJQUVPLFdBQVcsQ0FBQyxNQUFtQixFQUFFLEVBQWUsRUFBQTtRQUN0RCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssTUFBTSxFQUFFO1lBQy9ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLCtCQUErQixDQUFDLENBQUM7QUFDekUsWUFBQSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO0FBQ3BDLFNBQUE7QUFFRCxRQUFBLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDOUIsUUFBQSxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxNQUFLO1lBQ2hDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO0FBQzFCLGdCQUFBLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ3JDLGdCQUFBLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLCtCQUErQixDQUFDLENBQUM7QUFDckQsZ0JBQUEsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztBQUNwQyxhQUFBO1NBQ0YsRUFBRSxHQUFHLENBQUMsQ0FBQztLQUNUO0lBRU0sT0FBTyxHQUFBO0FBQ1osUUFBQSxJQUFJQyxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDMUIsT0FBTyxDQUFDLHNCQUFzQixDQUFDO2FBQy9CLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQztBQUNqQyxhQUFBLE9BQU8sQ0FBQyxDQUFDLElBQUksS0FBSTtBQUNoQixZQUFBLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUMzQyxZQUFBLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0FBQzVCLFNBQUMsQ0FBQztBQUNELGFBQUEsU0FBUyxDQUFDLENBQUMsR0FBRyxLQUFJO0FBQ2pCLFlBQUEsR0FBRyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNuQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO0FBQ3ZDLFlBQUEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFXLFNBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsYUFBQTtnQkFDckIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUMzQyxnQkFBQSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO29CQUNyQixPQUFPO0FBQ1IsaUJBQUE7QUFFRCxnQkFBQSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUVqRixJQUFJLE1BQU0saUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsRUFBRTtBQUN4RCxvQkFBQSxJQUFJSCxlQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztvQkFDeEMsT0FBTztBQUNSLGlCQUFBO2dCQUVELE1BQU0sdUJBQXVCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztBQUMzRCxnQkFBQSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3RCLGdCQUFBLElBQUlBLGVBQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO2FBQy9DLENBQUEsQ0FBQyxDQUFDO0FBQ0wsU0FBQyxDQUFDLENBQUM7QUFFTCxRQUFBLGVBQWUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsS0FBSTtZQUNyQyxNQUFNLGVBQWUsR0FBRyxJQUFJRyxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7QUFDbEQsaUJBQUEsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7aUJBQ3RCLE9BQU8sQ0FBQyxnQkFBZ0IsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUUsQ0FBQSxDQUFDLENBQUM7QUFDcEQsWUFBQSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxLQUFJO0FBQ2hDLGdCQUFBLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDM0IsZ0JBQUEsR0FBRyxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQ3ZDLGdCQUFBLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBVyxTQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLGFBQUE7QUFDckIsb0JBQUEsSUFBSUgsZUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7b0JBQ3RDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUN0QyxvQkFBQSxNQUFNLEtBQUssR0FBRyxNQUFNLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBRyxFQUFBLE9BQU8sRUFBRSxDQUFJLENBQUEsRUFBQSxRQUFRLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ3RGLG9CQUFBLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3JDLHdCQUFBLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDMUIsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMzQyx3QkFBQSxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUNoRSxNQUFNLFdBQVcsR0FBRyxJQUFJO0FBQ3JCLDZCQUFBLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSx1QkFBdUIsQ0FBQztBQUNsRCw2QkFBQSxPQUFPLENBQUMsY0FBYyxFQUFFLHFCQUFxQixDQUFDLENBQUM7QUFFbEQsd0JBQUEsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7d0JBQ2pFLE1BQU0saUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQzt3QkFFL0MsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDekQscUJBQUE7QUFDRCxvQkFBQSxJQUFJQSxlQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQzs7b0JBR3hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFJLFNBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsYUFBQTtBQUM3RCx3QkFBQSxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMxRSx3QkFBQSxJQUFJLGFBQWEsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUU7NEJBQzFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDakIsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdCLHlCQUFBO3FCQUNGLENBQUEsQ0FBQyxDQUFDO2lCQUNKLENBQUEsQ0FBQyxDQUFDO0FBQ0wsYUFBQyxDQUFDLENBQUM7QUFDSCxZQUFBLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEtBQUk7QUFDaEMsZ0JBQUEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMxQixnQkFBQSxHQUFHLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzlCLGdCQUFBLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBVyxTQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLGFBQUE7b0JBQ3JCLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckQsb0JBQUEsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDMUMsb0JBQUEsWUFBWSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDbEQsb0JBQUEsWUFBWSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7b0JBQzVDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNyQixvQkFBQSxZQUFZLENBQUMsUUFBUSxHQUFHLENBQU8sQ0FBQyxLQUFJLFNBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsYUFBQTtBQUNsQyx3QkFBQSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBMEIsQ0FBQztBQUM1Qyx3QkFBQSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7NEJBQzVDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFTLENBQUM7QUFDckMsNEJBQUEsTUFBTSxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekMsNEJBQUEsTUFBTSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7NEJBQ2pFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNyRCw0QkFBQSxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUEsYUFBQSxFQUFnQixRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDeEYseUJBQUE7QUFDRCx3QkFBQSxJQUFJQSxlQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUMxQyxxQkFBQyxDQUFBLENBQUM7aUJBQ0gsQ0FBQSxDQUFDLENBQUM7QUFDTCxhQUFDLENBQUMsQ0FBQztBQUNILFlBQUEsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsS0FBSTtBQUNoQyxnQkFBQSxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JCLGdCQUFBLEdBQUcsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUN2QyxnQkFBQSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQVcsU0FBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxhQUFBO29CQUNyQixNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDakQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3RCLG9CQUFBLElBQUlBLGVBQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO2lCQUMvQyxDQUFBLENBQUMsQ0FBQztBQUNMLGFBQUMsQ0FBQyxDQUFDO0FBRUgsWUFBQSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSTtBQUMvRCxnQkFBQSxlQUFlLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2pGLGFBQUMsQ0FBQyxDQUFDO1lBQ0gsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxLQUFJO2dCQUMxQyxlQUFlLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzVHLGFBQUMsQ0FBQyxDQUFDO1lBQ0gsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxLQUFJO2dCQUN0QyxlQUFlLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUN4QyxLQUFLLEVBQ0wsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBNEIsRUFBRSxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQzFGLEtBQUssQ0FDTixDQUFDO0FBQ0osYUFBQyxDQUFDLENBQUM7WUFDSCxlQUFlLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUN4QyxNQUFNLEVBQ04sQ0FBTyxLQUFLLEtBQUksU0FBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxhQUFBO0FBQ2QsZ0JBQUEsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7Z0JBQ3ZDLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztBQUN2QixnQkFBQSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNyQyxvQkFBQSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEIsb0JBQUEsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGVBQWUsRUFBRTt3QkFDakMsSUFBSUEsZUFBTSxDQUFDLENBQVEsS0FBQSxFQUFBLElBQUksQ0FBQyxJQUFJLENBQUEsbUJBQUEsQ0FBcUIsQ0FBQyxDQUFDO3dCQUNuRCxTQUFTO0FBQ1YscUJBQUE7b0JBRUQsVUFBVSxHQUFHLElBQUksQ0FBQztBQUNsQixvQkFBQSxNQUFNLE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QyxvQkFBQSxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDakUsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3JELG9CQUFBLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQSxhQUFBLEVBQWdCLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUN4RixpQkFBQTtBQUVELGdCQUFBLElBQUksVUFBVSxFQUFFO0FBQ2Qsb0JBQUEsSUFBSUEsZUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7QUFDekMsaUJBQUE7QUFDSCxhQUFDLENBQUEsRUFDRCxLQUFLLENBQ04sQ0FBQztBQUNKLFNBQUMsQ0FBQyxDQUFDO0tBQ0o7QUFDRjs7QUM5TUssTUFBTyxvQkFBcUIsU0FBUUksdUJBQXNCLENBQUE7QUFLOUQsSUFBQSxXQUFBLENBQVksV0FBd0IsRUFBQTtBQUNsQyxRQUFBLEtBQUssRUFBRSxDQUFDO1FBTEYsSUFBSyxDQUFBLEtBQUEsR0FBVyxTQUFTLENBQUM7QUFNaEMsUUFBQSxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUUvQixJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0MsUUFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7QUFDNUIsUUFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRywyQkFBMkIsQ0FBQztRQUNyRCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztLQUNoRTtBQUVELElBQUEsUUFBUSxDQUFDLFFBQWlDLEVBQUE7UUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsTUFBSztZQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEMsWUFBQSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFDNUIsU0FBQyxDQUFDLENBQUM7QUFDSCxRQUFBLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxRQUFRLEdBQUE7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDbkI7QUFFRCxJQUFBLFFBQVEsQ0FBQyxLQUFhLEVBQUE7QUFDcEIsUUFBQSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNuQixRQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUMzQixRQUFBLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxLQUFLLEdBQUE7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDM0MsUUFBQSxPQUFPLElBQUksQ0FBQztLQUNiO0FBQ0Y7O0FDL0JvQixNQUFBLHFCQUFzQixTQUFRLGlCQUFpQixDQUFBO0FBS2xFLElBQUEsV0FBQSxDQUFZLE1BQXdCLEVBQUUsV0FBd0IsRUFBRSxHQUFRLEVBQUUsY0FBMEIsRUFBQTtBQUNsRyxRQUFBLEtBQUssQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDM0IsUUFBQSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNmLFFBQUEsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7S0FDdEM7SUFFTSxPQUFPLEdBQUE7QUFDWixRQUFBLElBQUlELGdCQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUMxQixPQUFPLENBQUMsZUFBZSxDQUFDO2FBQ3hCLE9BQU8sQ0FBQyxpREFBaUQsQ0FBQztBQUMxRCxhQUFBLE9BQU8sQ0FBQyxDQUFDLElBQUksS0FBSTtBQUNoQixZQUFBLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUM5QyxZQUFBLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0FBQzVCLFNBQUMsQ0FBQztBQUNELGFBQUEsU0FBUyxDQUFDLENBQUMsR0FBRyxLQUFJO0FBQ2pCLFlBQUEsR0FBRyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNqQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO0FBQ3ZDLFlBQUEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFXLFNBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsYUFBQTtnQkFDckIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQzlDLE9BQU87QUFDUixpQkFBQTtBQUVELGdCQUFBLE1BQU0sS0FBSyxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzlELGdCQUFBLEtBQUssQ0FBQyxZQUFZLEdBQUcsQ0FBTyxJQUFJLEtBQUksU0FBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxhQUFBO29CQUNsQyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7QUFDZCxvQkFBQSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtBQUM1Qix3QkFBQSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztBQUN6QixxQkFBQTtBQUFNLHlCQUFBO3dCQUNMLElBQUksR0FBRyxJQUFJLENBQUM7QUFDYixxQkFBQTtBQUVELG9CQUFBLE1BQU0sSUFBSSxHQUFlLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQztvQkFDMUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdFLG9CQUFBLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO29CQUV2QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDdEIsb0JBQUEsSUFBSUgsZUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDL0Isb0JBQUEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBRWhDLE1BQU0sdUJBQXVCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNuRCxpQkFBQyxDQUFBLENBQUM7Z0JBQ0YsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2QsQ0FBQSxDQUFDLENBQUM7QUFDTCxTQUFDLENBQUMsQ0FBQztBQUVMLFFBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFJOztZQUMvQyxNQUFNLGFBQWEsR0FBRyxJQUFJRyxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFTLE1BQUEsRUFBQSxJQUFJLENBQUMsSUFBSSxDQUFFLENBQUEsQ0FBQyxDQUFDO1lBRXJHLE1BQU0sV0FBVyxHQUFHLElBQUksb0JBQW9CLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztBQUNsRSxpQkFBQSxRQUFRLENBQUMsQ0FBQSxFQUFBLEdBQUEsSUFBSSxDQUFDLEtBQUssTUFBQSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBSSxTQUFTLENBQUM7QUFDakMsaUJBQUEsUUFBUSxDQUFDLENBQU8sS0FBSyxLQUFJLFNBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsYUFBQTtBQUN4QixnQkFBQSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNuQixnQkFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztBQUV2QyxnQkFBQSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQzVDLENBQUEsQ0FBQyxDQUFDO0FBQ0wsWUFBQSxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUUzQyxZQUFBLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEtBQUk7O2dCQUM5QixNQUFNLEtBQUssR0FBb0IsQ0FBQSxFQUFBLEdBQUEsSUFBSSxDQUFDLEdBQUcsTUFBQSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBSSxZQUFZLENBQUM7Z0JBQ3hELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtBQUN2QixvQkFBQSxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZCLGlCQUFBO3FCQUFNLElBQUksS0FBSyxLQUFLLE9BQU8sRUFBRTtBQUM1QixvQkFBQSxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3pCLGlCQUFBO0FBQU0scUJBQUE7QUFDTCxvQkFBQSxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzFCLGlCQUFBO0FBRUQsZ0JBQUEsR0FBRyxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsS0FBSyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBRS9DLGdCQUFBLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBVyxTQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLGFBQUE7b0JBQ3JCLDRCQUE0QixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQSxNQUFBLENBQUEsTUFBQSxDQUFBLEVBQUEsRUFBTyxJQUFJLENBQUEsRUFBQSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUEsQ0FBQSxDQUFHLENBQUM7b0JBRW5FLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtBQUN2Qix3QkFBQSxJQUFJLENBQUMsR0FBRyxHQUFHLFlBQVksQ0FBQztBQUN6QixxQkFBQTt5QkFBTSxJQUFJLEtBQUssS0FBSyxPQUFPLEVBQUU7QUFDNUIsd0JBQUEsSUFBSSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUM7QUFDdEIscUJBQUE7QUFBTSx5QkFBQTtBQUNMLHdCQUFBLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDO0FBQ3BCLHFCQUFBO29CQUVELE1BQU0sdUJBQXVCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVqRCxvQkFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztvQkFDdkMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBRXRCLG9CQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFPLFlBQVksS0FBSSxTQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLGFBQUE7d0JBQzdELE1BQU0sdUJBQXVCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztxQkFDMUQsQ0FBQSxDQUFDLENBQUM7aUJBQ0osQ0FBQSxDQUFDLENBQUM7QUFDTCxhQUFDLENBQUMsQ0FBQztBQUVILFlBQUEsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsS0FBSTtBQUM5QixnQkFBQSxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JCLGdCQUFBLEdBQUcsQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUN6QyxnQkFBQSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQVcsU0FBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxhQUFBO0FBQ3JCLG9CQUFBLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNO0FBQ3pCLHlCQUFBLFdBQVcsRUFBRTtBQUNiLHlCQUFBLEtBQUssQ0FBQyxNQUFNLENBQ1gsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUNqRyxDQUFDO29CQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztBQUMzQyxvQkFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztvQkFFdkMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3RCLG9CQUFBLElBQUlILGVBQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBRW5DLG9CQUFBLDRCQUE0QixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ2hELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4RixvQkFBQSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQU8sWUFBWSxLQUFJLFNBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsYUFBQTt3QkFDM0MsTUFBTSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO3FCQUMxRCxDQUFBLENBQUMsQ0FBQztpQkFDSixDQUFBLENBQUMsQ0FBQztBQUNMLGFBQUMsQ0FBQyxDQUFDO0FBQ0wsU0FBQyxDQUFDLENBQUM7S0FDSjtBQUNGOztBQzVIb0IsTUFBQSxrQkFBbUIsU0FBUSxpQkFBaUIsQ0FBQTtJQUN4RCxPQUFPLEdBQUE7O1FBQ1osTUFBTSxrQkFBa0IsR0FBRyxJQUFJRyxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDckQsT0FBTyxDQUFDLDBCQUEwQixDQUFDO2FBQ25DLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQzthQUMxQyxRQUFRLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUU1QyxNQUFNLG1CQUFtQixHQUFHLElBQUlFLDBCQUFpQixDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUN6RixZQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsWUFBQSxLQUFLLEVBQUUsT0FBTztBQUNkLFlBQUEsTUFBTSxFQUFFLFFBQVE7QUFDaEIsWUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNnQyxTQUFBLENBQUMsQ0FBQztRQUVoRCxNQUFNLGlCQUFpQixHQUFHLElBQUlDLHdCQUFlLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDO0FBQ3hFLGFBQUEsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ25CLGFBQUEsaUJBQWlCLEVBQUU7QUFDbkIsYUFBQSxRQUFRLENBQUMsQ0FBQSxFQUFBLEdBQUEsQ0FBQSxFQUFBLEdBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLE1BQUEsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUUsR0FBRyxNQUFBLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFJLENBQUMsQ0FBQztBQUN6RCxhQUFBLFFBQVEsQ0FBQyxDQUFPLEdBQUcsS0FBSSxTQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLGFBQUE7QUFDdEIsWUFBQSxNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxRQUFRLEVBQStCLENBQUM7WUFDbEYsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRTtBQUN6QyxnQkFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDNUQsYUFBQTtBQUFNLGlCQUFBO0FBQ0wsZ0JBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEdBQUc7b0JBQ3RDLENBQUMsYUFBYSxHQUFHLEdBQUc7aUJBQ3JCLENBQUM7QUFDSCxhQUFBO0FBQ0QsWUFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztBQUV2QyxZQUFBLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMvQixDQUFBLENBQUMsQ0FBQztBQUVMLFFBQUEsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBOEIsS0FBSTs7WUFDOUQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRTtBQUN6QyxnQkFBQSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBSSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBQSxDQUFDLENBQUMsQ0FBQztBQUM3RSxhQUFBO0FBQU0saUJBQUE7QUFDTCxnQkFBQSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0IsYUFBQTtBQUNILFNBQUMsQ0FBQyxDQUFDO1FBRUgsa0JBQWtCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0tBQzVFO0FBQ0Y7O0FDMUNvQixNQUFBLGdCQUFpQixTQUFRLGlCQUFpQixDQUFBO0lBQ3RELE9BQU8sR0FBQTs7UUFDWixNQUFNLGtCQUFrQixHQUFHLElBQUlILGdCQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUNyRCxPQUFPLENBQUMsWUFBWSxDQUFDO2FBQ3JCLE9BQU8sQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sV0FBVyxHQUFHLElBQUksb0JBQW9CLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDO0FBQ3ZFLGFBQUEsUUFBUSxDQUFDLENBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLFNBQVMsQ0FBQztBQUMxRCxhQUFBLFFBQVEsQ0FBQyxDQUFPLEtBQUssS0FBSSxTQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLGFBQUE7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBQzVDLFlBQUEsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLENBQUM7QUFFdkMsWUFBQSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDL0IsQ0FBQSxDQUFDLENBQUM7QUFFTCxRQUFBLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sS0FBSTtZQUN0QyxNQUFNO2lCQUNILGFBQWEsQ0FBQyxTQUFTLENBQUM7aUJBQ3hCLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQztpQkFDMUMsT0FBTyxDQUFDLE1BQVcsU0FBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxhQUFBO0FBQ2xCLGdCQUFBLFdBQVcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztBQUMzQyxnQkFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztBQUV2QyxnQkFBQSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDL0IsQ0FBQSxDQUFDLENBQUM7QUFDUCxTQUFDLENBQUMsQ0FBQztRQUVILGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDekQ7QUFDRjs7QUM3Qm9CLE1BQUEsbUJBQW9CLFNBQVEsaUJBQWlCLENBQUE7SUFDekQsT0FBTyxHQUFBO0FBQ1osUUFBQSxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDMUIsT0FBTyxDQUFDLDRCQUE0QixDQUFDO2FBQ3JDLE9BQU8sQ0FBQyw4Q0FBOEMsQ0FBQztBQUN2RCxhQUFBLFNBQVMsQ0FBQyxDQUFDLE1BQU0sS0FBSTs7WUFDcEIsTUFBTTtBQUNILGlCQUFBLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNwQixpQkFBQSxpQkFBaUIsRUFBRTtBQUNuQixpQkFBQSxRQUFRLENBQUMsQ0FBQSxFQUFBLEdBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLE1BQUEsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLEdBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDO0FBQ3pFLGlCQUFBLFFBQVEsQ0FBQyxDQUFPLEdBQUcsS0FBSSxTQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLGFBQUE7Z0JBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztBQUN6QyxnQkFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztBQUV2QyxnQkFBQSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDL0IsQ0FBQSxDQUFDLENBQUM7QUFDUCxTQUFDLENBQUMsQ0FBQztLQUNOO0FBQ0Y7O0FDbkJvQixNQUFBLG9CQUFxQixTQUFRLGlCQUFpQixDQUFBO0lBRzFELE9BQU8sR0FBQTtRQUNaLE1BQU0sb0JBQW9CLEdBQUcsSUFBSUEsZ0JBQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3ZELE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQzthQUNqQyxPQUFPLENBQUMsMkNBQTJDLENBQUMsQ0FBQztBQUV4RCxRQUFBLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksS0FBSTtBQUNwQyxZQUFBLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7QUFDckMsWUFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDekQsU0FBQyxDQUFDLENBQUM7QUFFSCxRQUFBLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsS0FBSTtBQUNyQyxZQUFBLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztBQUN2QyxZQUFBLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBVyxTQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLGFBQUE7Z0JBQ3JCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDekQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxhQUFhLENBQUM7Z0JBRXhELElBQUksT0FBTyxLQUFLLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsRUFBRTtvQkFDeEQsT0FBTztBQUNSLGlCQUFBO0FBRUQsZ0JBQUEsSUFBSUgsZUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQ3BDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNqQixnQkFBQSxNQUFNLHNCQUFzQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDMUMsTUFBTSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFFN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDO0FBQ2xELGdCQUFBLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0FBQ3ZDLGdCQUFBLElBQUlBLGVBQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2FBQ3JDLENBQUEsQ0FBQyxDQUFDO0FBQ0wsU0FBQyxDQUFDLENBQUM7S0FDSjtBQUNGOztBQ2hDRCxnQkFBZTtBQUNiLElBQUEsUUFBUSxFQUFFO0FBQ1IsUUFBQSxJQUFJLEVBQUUscUJBQXFCO0FBQzNCLFFBQUEsV0FBVyxFQUFFLG9CQUFvQjtBQUNqQyxRQUFBLElBQUksRUFBRSx5Q0FBeUM7QUFDL0MsUUFBQSxZQUFZLEVBQUUsb0dBQW9HO0FBQ25ILEtBQUE7QUFDRCxJQUFBLFNBQVMsRUFBRTtBQUNULFFBQUEsSUFBSSxFQUFFLHNCQUFzQjtBQUM1QixRQUFBLFdBQVcsRUFBRSxxQkFBcUI7QUFDbEMsUUFBQSxJQUFJLEVBQUUsMENBQTBDO0FBQ2hELFFBQUEsWUFBWSxFQUFFLG9HQUFvRztBQUNuSCxLQUFBO0FBQ0QsSUFBQSxPQUFPLEVBQUU7QUFDUCxRQUFBLElBQUksRUFBRSxvQkFBb0I7QUFDMUIsUUFBQSxXQUFXLEVBQUUsbUJBQW1CO0FBQ2hDLFFBQUEsSUFBSSxFQUFFLHdDQUF3QztBQUM5QyxRQUFBLFlBQVksRUFBRSxvR0FBb0c7QUFDbkgsS0FBQTtBQUNELElBQUEsVUFBVSxFQUFFO0FBQ1YsUUFBQSxJQUFJLEVBQUUsYUFBYTtBQUNuQixRQUFBLFdBQVcsRUFBRSxhQUFhO0FBQzFCLFFBQUEsSUFBSSxFQUFFLEVBQUU7QUFDUixRQUFBLFlBQVksRUFBRSw2RkFBNkY7QUFDNUcsS0FBQTtBQUNELElBQUEsUUFBUSxFQUFFO0FBQ1IsUUFBQSxJQUFJLEVBQUUsV0FBVztBQUNqQixRQUFBLFdBQVcsRUFBRSxXQUFXO0FBQ3hCLFFBQUEsSUFBSSxFQUFFLEVBQUU7QUFDUixRQUFBLFlBQVksRUFBRSx3RkFBd0Y7QUFDdkcsS0FBQTs7QUFFRCxJQUFBLFdBQVcsRUFBRTtBQUNYLFFBQUEsSUFBSSxFQUFFLGNBQWM7QUFDcEIsUUFBQSxXQUFXLEVBQUUsY0FBYztBQUMzQixRQUFBLElBQUksRUFBRSxPQUFPO0FBQ2IsUUFBQSxZQUFZLEVBQUUsMkVBQTJFO0FBQzFGLEtBQUE7Q0FDNkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDakNoQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQXlELE1BQWUsQ0FBQSxPQUFBLENBQUEsQ0FBQyxFQUFFLENBQW9MLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPTyxlQUFPLEVBQUVBLGVBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPQSxlQUFPLEVBQUVBLGVBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sVUFBVSxFQUFFLFdBQVcsRUFBRSxPQUFPLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsc0NBQXNDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnR0FBZ0csQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLG1DQUFtQyxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxDQUFDLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsK0JBQStCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxRQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLGNBQWMsR0FBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUNBQXFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksWUFBWSxDQUFDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGtDQUFrQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLE9BQU8sV0FBVyxFQUFFLFdBQVcsRUFBRSxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxTQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsWUFBWSxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxZQUFZLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLGlDQUFpQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsR0FBRSxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUs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QixDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLDRCQUE0QixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsb0JBQW9C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LEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsNEVBQTRFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsRUFBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxFQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUUsRUFBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBT0MsY0FBTSxDQUFDQSxjQUFNLENBQUMsV0FBVyxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksU0FBUyxDQUFDLDZCQUE2QixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFHLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLFVBQVUsRUFBRSxXQUFXLEVBQUUsT0FBTyxXQUFXLEVBQUUsV0FBVyxFQUFFLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMscUNBQW9DLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLEtBQUssR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxxQ0FBb0MsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLGNBQWMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElB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 diff --git a/notes/.obsidian/plugins/obsidian-icon-folder/manifest.json b/notes/.obsidian/plugins/obsidian-icon-folder/manifest.json index edbd581..832a370 100644 --- a/notes/.obsidian/plugins/obsidian-icon-folder/manifest.json +++ b/notes/.obsidian/plugins/obsidian-icon-folder/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-icon-folder", "name": "Icon Folder", - "version": "1.3.4", + "version": "1.3.5", "minAppVersion": "0.9.12", "description": "This plugin allows to add an emoji or an icon to a folder or file.", "author": "Florian Woelki", diff --git a/notes/.obsidian/plugins/obsidian-icon-folder/styles.css b/notes/.obsidian/plugins/obsidian-icon-folder/styles.css index c8f391f..ef96fff 100644 --- a/notes/.obsidian/plugins/obsidian-icon-folder/styles.css +++ b/notes/.obsidian/plugins/obsidian-icon-folder/styles.css @@ -1,11 +1,16 @@ .obsidian-icon-folder-icon { border: 1px solid transparent; - margin: 2px 2px 2px 2px; + margin: 0px 4px 0px 0px; display: flex; align-self: center; margin: auto 0; } +.nav-folder-title, +.nav-file-title { + align-items: center; +} + .obsidian-icon-folder-setting .setting-item-control .dropdown { margin-right: 12px; } diff --git a/notes/.obsidian/plugins/obsidian-kanban/main.js b/notes/.obsidian/plugins/obsidian-kanban/main.js index 8a366a3..23a1347 100644 --- a/notes/.obsidian/plugins/obsidian-kanban/main.js +++ b/notes/.obsidian/plugins/obsidian-kanban/main.js @@ -7,74 +7,74 @@ const cancelAnimationFrame = (id) => activeWindow.cancelAnimationFrame(id); const setTimeout = (...args) => activeWindow.setTimeout(...args); const clearTimeout = (id) => activeWindow.clearTimeout(id); -var UE=Object.create;var eo=Object.defineProperty;var WE=Object.getOwnPropertyDescriptor;var VE=Object.getOwnPropertyNames;var zE=Object.getPrototypeOf,jE=Object.prototype.hasOwnProperty;var kf=e=>eo(e,"__esModule",{value:!0});var El=(e,t)=>()=>(e&&(t=e(e=0)),t);var ft=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),zi=(e,t)=>{kf(e);for(var r in t)eo(e,r,{get:t[r],enumerable:!0})},qE=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of VE(t))!jE.call(e,n)&&n!=="default"&&eo(e,n,{get:()=>t[n],enumerable:!(r=WE(t,n))||r.enumerable});return e},ge=e=>qE(kf(eo(e!=null?UE(zE(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);function Wn(e,t){for(var r in t)e[r]=t[r];return e}function Mf(e){var t=e.parentNode;t&&t.removeChild(e)}function g(e,t,r){var n,i,a,o={};for(a in t)a=="key"?n=t[a]:a=="ref"?i=t[a]:o[a]=t[a];if(arguments.length>2&&(o.children=arguments.length>3?ji.call(arguments,2):r),typeof e=="function"&&e.defaultProps!=null)for(a in e.defaultProps)o[a]===void 0&&(o[a]=e.defaultProps[a]);return Yi(e,o,n,i,null)}function Yi(e,t,r,n,i){var a={type:e,props:t,key:r,ref:n,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:i??++Sf};return i==null&&fe.vnode!=null&&fe.vnode(a),a}function ei(){return{current:null}}function S(e){return e.children}function pt(e,t){this.props=e,this.context=t}function ti(e,t){if(t==null)return e.__?ti(e.__,e.__.__k.indexOf(e)+1):null;for(var r;t0?Yi(p.type,p.props,p.key,null,p.__v):p)!=null){if(p.__=r,p.__b=r.__b+1,(f=x[c])===null||f&&p.key==f.key&&p.type===f.type)x[c]=void 0;else for(d=0;d2&&(o.children=arguments.length>3?ji.call(arguments,2):r),Yi(e.type,o,n||e.key,i||e.ref,null)}function ni(e,t){var r={__c:t="__cC"+Tf++,__:e,Consumer:function(n,i){return n.children(i)},Provider:function(n){var i,a;return this.getChildContext||(i=[],(a={})[t]=this,this.getChildContext=function(){return a},this.shouldComponentUpdate=function(o){this.props.value!==o.value&&i.some(xl)},this.sub=function(o){i.push(o);var s=o.componentWillUnmount;o.componentWillUnmount=function(){i.splice(i.indexOf(o),1),s&&s.call(o)}}),n.children}};return r.Provider.__=r.Consumer.contextType=r}var ji,fe,Sf,YE,qi,_f,Cf,Tf,to,Df,JE,Mr=El(()=>{h();to={},Df=[],JE=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;ji=Df.slice,fe={__e:function(e,t,r,n){for(var i,a,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((a=i.constructor)&&a.getDerivedStateFromError!=null&&(i.setState(a.getDerivedStateFromError(e)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(e,n||{}),o=i.__d),o)return i.__E=i}catch(s){e=s}throw e}},Sf=0,YE=function(e){return e!=null&&e.constructor===void 0},pt.prototype.setState=function(e,t){var r;r=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=Wn({},this.state),typeof e=="function"&&(e=e(Wn({},r),this.props)),e&&Wn(r,e),e!=null&&this.__v&&(t&&this.__h.push(t),xl(this))},pt.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),xl(this))},pt.prototype.render=S,qi=[],_f=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,no.__r=0,Tf=0});var h=El(()=>{Mr()});var xt=ft((An,fp)=>{h();"use strict";Object.defineProperty(An,"__esModule",{value:!0});function _n(e){return typeof e=="object"&&!("toString"in e)?Object.prototype.toString.call(e).slice(8,-1):e}var _x=typeof process=="object"&&!0;function pn(e,t){if(!e)throw _x?new Error("Invariant failed"):new Error(t())}An.invariant=pn;var Il=Object.prototype.hasOwnProperty,Cx=Array.prototype.splice,Tx=Object.prototype.toString;function Ar(e){return Tx.call(e).slice(8,-1)}var fo=Object.assign||function(e,t){return Al(t).forEach(function(r){Il.call(t,r)&&(e[r]=t[r])}),e},Al=typeof Object.getOwnPropertySymbols=="function"?function(e){return Object.keys(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.keys(e)};function ur(e){return Array.isArray(e)?fo(e.constructor(e.length),e):Ar(e)==="Map"?new Map(e):Ar(e)==="Set"?new Set(e):e&&typeof e=="object"?fo(Object.create(Object.getPrototypeOf(e)),e):e}var lp=function(){function e(){this.commands=fo({},Dx),this.update=this.update.bind(this),this.update.extend=this.extend=this.extend.bind(this),this.update.isEquals=function(t,r){return t===r},this.update.newContext=function(){return new e().update}}return Object.defineProperty(e.prototype,"isEquals",{get:function(){return this.update.isEquals},set:function(t){this.update.isEquals=t},enumerable:!0,configurable:!0}),e.prototype.extend=function(t,r){this.commands[t]=r},e.prototype.update=function(t,r){var n=this,i=typeof r=="function"?{$apply:r}:r;Array.isArray(t)&&Array.isArray(i)||pn(!Array.isArray(i),function(){return"update(): You provided an invalid spec to update(). The spec may not contain an array except as the value of $set, $push, $unshift, $splice or any custom command allowing an array value."}),pn(typeof i=="object"&&i!==null,function(){return"update(): You provided an invalid spec to update(). The spec and every included key path must be plain objects containing one of the "+("following commands: "+Object.keys(n.commands).join(", ")+".")});var a=t;return Al(i).forEach(function(o){if(Il.call(n.commands,o)){var s=t===a;a=n.commands[o](i[o],a,i,t),s&&n.isEquals(a,t)&&(a=t)}else{var u=Ar(t)==="Map"?n.update(t.get(o),i[o]):n.update(t[o],i[o]),l=Ar(a)==="Map"?a.get(o):a[o];(!n.isEquals(u,l)||typeof u=="undefined"&&!Il.call(t,o))&&(a===t&&(a=ur(t)),Ar(a)==="Map"?a.set(o,u):a[o]=u)}}),a},e}();An.Context=lp;var Dx={$push:function(e,t,r){return cp(t,r,"$push"),e.length?t.concat(e):t},$unshift:function(e,t,r){return cp(t,r,"$unshift"),e.length?e.concat(t):t},$splice:function(e,t,r,n){return Mx(t,r),e.forEach(function(i){up(i),t===n&&i.length&&(t=ur(n)),Cx.apply(t,i)}),t},$set:function(e,t,r){return Ax(r),e},$toggle:function(e,t){Zi(e,"$toggle");var r=e.length?ur(t):t;return e.forEach(function(n){r[n]=!t[n]}),r},$unset:function(e,t,r,n){return Zi(e,"$unset"),e.forEach(function(i){Object.hasOwnProperty.call(t,i)&&(t===n&&(t=ur(n)),delete t[i])}),t},$add:function(e,t,r,n){return dp(t,"$add"),Zi(e,"$add"),Ar(t)==="Map"?e.forEach(function(i){var a=i[0],o=i[1];t===n&&t.get(a)!==o&&(t=ur(n)),t.set(a,o)}):e.forEach(function(i){t===n&&!t.has(i)&&(t=ur(n)),t.add(i)}),t},$remove:function(e,t,r,n){return dp(t,"$remove"),Zi(e,"$remove"),e.forEach(function(i){t===n&&t.has(i)&&(t=ur(n)),t.delete(i)}),t},$merge:function(e,t,r,n){return Lx(t,e),Al(e).forEach(function(i){e[i]!==t[i]&&(t===n&&(t=ur(n)),t[i]=e[i])}),t},$apply:function(e,t){return Ix(e),e(t)}},Ll=new lp;An.isEquals=Ll.update.isEquals;An.extend=Ll.extend;An.default=Ll.update;An.default.default=fp.exports=fo(An.default,An);function cp(e,t,r){pn(Array.isArray(e),function(){return"update(): expected target of "+_n(r)+" to be an array; got "+_n(e)+"."}),Zi(t[r],r)}function Zi(e,t){pn(Array.isArray(e),function(){return"update(): expected spec of "+_n(t)+" to be an array; got "+_n(e)+". Did you forget to wrap your parameter in an array?"})}function Mx(e,t){pn(Array.isArray(e),function(){return"Expected $splice target to be an array; got "+_n(e)}),up(t.$splice)}function up(e){pn(Array.isArray(e),function(){return"update(): expected spec of $splice to be an array of arrays; got "+_n(e)+". Did you forget to wrap your parameters in an array?"})}function Ix(e){pn(typeof e=="function",function(){return"update(): expected spec of $apply to be a function; got "+_n(e)+"."})}function Ax(e){pn(Object.keys(e).length===1,function(){return"Cannot have more than one key in an object with $set"})}function Lx(e,t){pn(t&&typeof t=="object",function(){return"update(): $merge expects a spec of type 'object'; got "+_n(t)}),pn(e&&typeof e=="object",function(){return"update(): $merge expects a target of type 'object'; got "+_n(e)})}function dp(e,t){var r=Ar(e);pn(r==="Map"||r==="Set",function(){return"update(): "+_n(t)+" expects a target of type Set or Map; got "+_n(r)})}});var gp=ft((jD,mp)=>{h();"use strict";var Px=function(t){return Fx(t)&&!Nx(t)};function Fx(e){return!!e&&typeof e=="object"}function Nx(e){var t=Object.prototype.toString.call(e);return t==="[object RegExp]"||t==="[object Date]"||Hx(e)}var Ox=typeof Symbol=="function"&&Symbol.for,Rx=Ox?Symbol.for("react.element"):60103;function Hx(e){return e.$$typeof===Rx}function Bx(e){return Array.isArray(e)?[]:{}}function ea(e,t){return t.clone!==!1&&t.isMergeableObject(e)?oi(Bx(e),e,t):e}function Kx(e,t,r){return e.concat(t).map(function(n){return ea(n,r)})}function $x(e,t){if(!t.customMerge)return oi;var r=t.customMerge(e);return typeof r=="function"?r:oi}function Ux(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return e.propertyIsEnumerable(t)}):[]}function pp(e){return Object.keys(e).concat(Ux(e))}function hp(e,t){try{return t in e}catch(r){return!1}}function Wx(e,t){return hp(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function Vx(e,t,r){var n={};return r.isMergeableObject(e)&&pp(e).forEach(function(i){n[i]=ea(e[i],r)}),pp(t).forEach(function(i){Wx(e,i)||(hp(e,i)&&r.isMergeableObject(t[i])?n[i]=$x(i,r)(e[i],t[i],r):n[i]=ea(t[i],r))}),n}function oi(e,t,r){r=r||{},r.arrayMerge=r.arrayMerge||Kx,r.isMergeableObject=r.isMergeableObject||Px,r.cloneUnlessOtherwiseSpecified=ea;var n=Array.isArray(t),i=Array.isArray(e),a=n===i;return a?n?r.arrayMerge(e,t,r):Vx(e,t,r):ea(t,r)}oi.all=function(t,r){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(n,i){return oi(n,i,r)},{})};var zx=oi;mp.exports=zx});var Eo=ft(rt=>{h();"use strict";var Wl=32;rt.INT_BITS=Wl;rt.INT_MAX=2147483647;rt.INT_MIN=-1<0)-(e<0)};rt.abs=function(e){var t=e>>Wl-1;return(e^t)-t};rt.min=function(e,t){return t^(e^t)&-(e65535)<<4,e>>>=t,r=(e>255)<<3,e>>>=r,t|=r,r=(e>15)<<2,e>>>=r,t|=r,r=(e>3)<<1,e>>>=r,t|=r,t|e>>1};rt.log10=function(e){return e>=1e9?9:e>=1e8?8:e>=1e7?7:e>=1e6?6:e>=1e5?5:e>=1e4?4:e>=1e3?3:e>=100?2:e>=10?1:0};rt.popCount=function(e){return e=e-(e>>>1&1431655765),e=(e&858993459)+(e>>>2&858993459),(e+(e>>>4)&252645135)*16843009>>>24};function Lp(e){var t=32;return e&=-e,e&&t--,e&65535&&(t-=16),e&16711935&&(t-=8),e&252645135&&(t-=4),e&858993459&&(t-=2),e&1431655765&&(t-=1),t}rt.countTrailingZeros=Lp;rt.nextPow2=function(e){return e+=e===0,--e,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e+1};rt.prevPow2=function(e){return e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e-(e>>>1)};rt.parity=function(e){return e^=e>>>16,e^=e>>>8,e^=e>>>4,e&=15,27030>>>e&1};var sa=new Array(256);(function(e){for(var t=0;t<256;++t){var r=t,n=t,i=7;for(r>>>=1;r;r>>>=1)n<<=1,n|=r&1,--i;e[t]=n<>>8&255]<<16|sa[e>>>16&255]<<8|sa[e>>>24&255]};rt.interleave2=function(e,t){return e&=65535,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t&=65535,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1};rt.deinterleave2=function(e,t){return e=e>>>t&1431655765,e=(e|e>>>1)&858993459,e=(e|e>>>2)&252645135,e=(e|e>>>4)&16711935,e=(e|e>>>16)&65535,e<<16>>16};rt.interleave3=function(e,t,r){return e&=1023,e=(e|e<<16)&4278190335,e=(e|e<<8)&251719695,e=(e|e<<4)&3272356035,e=(e|e<<2)&1227133513,t&=1023,t=(t|t<<16)&4278190335,t=(t|t<<8)&251719695,t=(t|t<<4)&3272356035,t=(t|t<<2)&1227133513,e|=t<<1,r&=1023,r=(r|r<<16)&4278190335,r=(r|r<<8)&251719695,r=(r|r<<4)&3272356035,r=(r|r<<2)&1227133513,e|r<<2};rt.deinterleave3=function(e,t){return e=e>>>t&1227133513,e=(e|e>>>2)&3272356035,e=(e|e>>>4)&251719695,e=(e|e>>>8)&4278190335,e=(e|e>>>16)&1023,e<<22>>22};rt.nextCombination=function(e){var t=e|e-1;return t+1|(~t&-~t)-1>>>Lp(e)+1}});var Np=ft((_M,Fp)=>{h();"use strict";function Pp(e,t,r){var n=e[r]|0;if(n<=0)return[];var i=new Array(n),a;if(r===e.length-1)for(a=0;a0)return nk(e|0,t);break;case"object":if(typeof e.length=="number")return Pp(e,t,0);break}return[]}Fp.exports=rk});var th={};zi(th,{Buffer:()=>ne,INSPECT_MAX_BYTES:()=>Kp,SlowBuffer:()=>hk,isBuffer:()=>Zp,kMaxLength:()=>ck});function Op(){Vl=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,r=e.length;t0)throw new Error("Invalid string. Length must be a multiple of 4");a=e[s-2]==="="?2:e[s-1]==="="?1:0,o=new ik(s*3/4-a),n=a>0?s-4:s;var u=0;for(t=0,r=0;t>16&255,o[u++]=i>>8&255,o[u++]=i&255;return a===2?(i=hn[e.charCodeAt(t)]<<2|hn[e.charCodeAt(t+1)]>>4,o[u++]=i&255):a===1&&(i=hn[e.charCodeAt(t)]<<10|hn[e.charCodeAt(t+1)]<<4|hn[e.charCodeAt(t+2)]>>2,o[u++]=i>>8&255,o[u++]=i&255),o}function ok(e){return Fn[e>>18&63]+Fn[e>>12&63]+Fn[e>>6&63]+Fn[e&63]}function sk(e,t,r){for(var n,i=[],a=t;au?u:s+o));return n===1?(t=e[r-1],i+=Fn[t>>2],i+=Fn[t<<4&63],i+="=="):n===2&&(t=(e[r-2]<<8)+e[r-1],i+=Fn[t>>10],i+=Fn[t>>4&63],i+=Fn[t<<2&63],i+="="),a.push(i),a.join("")}function xo(e,t,r,n,i){var a,o,s=i*8-n-1,u=(1<>1,c=-7,d=r?i-1:0,f=r?-1:1,p=e[t+d];for(d+=f,a=p&(1<<-c)-1,p>>=-c,c+=s;c>0;a=a*256+e[t+d],d+=f,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=n;c>0;o=o*256+e[t+d],d+=f,c-=8);if(a===0)a=1-l;else{if(a===u)return o?NaN:(p?-1:1)*(1/0);o=o+Math.pow(2,n),a=a-l}return(p?-1:1)*o*Math.pow(2,a-n)}function Hp(e,t,r,n,i,a){var o,s,u,l=a*8-i-1,c=(1<>1,f=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,m=n?1:-1,y=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=c):(o=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-o))<1&&(o--,u*=2),o+d>=1?t+=f/u:t+=f*Math.pow(2,1-d),t*u>=2&&(o++,u/=2),o+d>=c?(s=0,o=c):o+d>=1?(s=(t*u-1)*Math.pow(2,i),o=o+d):(s=t*Math.pow(2,d-1)*Math.pow(2,i),o=0));i>=8;e[r+p]=s&255,p+=m,s/=256,i-=8);for(o=o<0;e[r+p]=o&255,p+=m,o/=256,l-=8);e[r+p-m]|=y*128}function ko(){return ne.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function zn(e,t){if(ko()=ko())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+ko().toString(16)+" bytes");return e|0}function hk(e){return+e!=e&&(e=0),ne.alloc(+e)}function Nn(e){return!!(e!=null&&e._isBuffer)}function Wp(e,t){if(Nn(e))return e.length;if(typeof ArrayBuffer!="undefined"&&typeof ArrayBuffer.isView=="function"&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;typeof e!="string"&&(e=""+e);var r=e.length;if(r===0)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return Co(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return Xp(e).length;default:if(n)return Co(e).length;t=(""+t).toLowerCase(),n=!0}}function mk(e,t,r){var n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,t>>>=0,r<=t))return"";for(e||(e="utf8");;)switch(e){case"hex":return _k(this,t,r);case"utf8":case"utf-8":return qp(this,t,r);case"ascii":return kk(this,t,r);case"latin1":case"binary":return Sk(this,t,r);case"base64":return Ek(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ck(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function Pr(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function Vp(e,t,r,n,i){if(e.length===0)return-1;if(typeof r=="string"?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0)if(i)r=0;else return-1;if(typeof t=="string"&&(t=ne.from(t,n)),Nn(t))return t.length===0?-1:zp(e,t,r,n,i);if(typeof t=="number")return t=t&255,ne.TYPED_ARRAY_SUPPORT&&typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):zp(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function zp(e,t,r,n,i){var a=1,o=e.length,s=t.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;a=2,o/=2,s/=2,r/=2}function u(p,m){return a===1?p[m]:p.readUInt16BE(m*a)}var l;if(i){var c=-1;for(l=r;lo&&(r=o-s),l=r;l>=0;l--){for(var d=!0,f=0;fi&&(n=i)):n=i;var a=t.length;if(a%2!=0)throw new TypeError("Invalid hex string");n>a/2&&(n=a/2);for(var o=0;o239?4:a>223?3:a>191?2:1;if(i+s<=r){var u,l,c,d;switch(s){case 1:a<128&&(o=a);break;case 2:u=e[i+1],(u&192)==128&&(d=(a&31)<<6|u&63,d>127&&(o=d));break;case 3:u=e[i+1],l=e[i+2],(u&192)==128&&(l&192)==128&&(d=(a&15)<<12|(u&63)<<6|l&63,d>2047&&(d<55296||d>57343)&&(o=d));break;case 4:u=e[i+1],l=e[i+2],c=e[i+3],(u&192)==128&&(l&192)==128&&(c&192)==128&&(d=(a&15)<<18|(u&63)<<12|(l&63)<<6|c&63,d>65535&&d<1114112&&(o=d))}}o===null?(o=65533,s=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|o&1023),n.push(o),i+=s}return xk(n)}function xk(e){var t=e.length;if(t<=Yp)return String.fromCharCode.apply(String,e);for(var r="",n=0;nn)&&(r=n);for(var i="",a=t;ar)throw new RangeError("Trying to access beyond buffer length")}function Zt(e,t,r,n,i,a){if(!Nn(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function So(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,a=Math.min(e.length-r,2);i>>(n?i:1-i)*8}function _o(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,a=Math.min(e.length-r,4);i>>(n?i:3-i)*8&255}function Jp(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function Gp(e,t,r,n,i){return i||Jp(e,t,r,4),Hp(e,t,r,n,23,4),r+4}function Qp(e,t,r,n,i){return i||Jp(e,t,r,8),Hp(e,t,r,n,52,8),r+8}function Dk(e){if(e=Mk(e).replace(Tk,""),e.length<2)return"";for(;e.length%4!=0;)e=e+"=";return e}function Mk(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function Ik(e){return e<16?"0"+e.toString(16):e.toString(16)}function Co(e,t){t=t||1/0;for(var r,n=e.length,i=null,a=[],o=0;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}else if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,r&63|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return a}function Ak(e){for(var t=[],r=0;r>8,i=r%256,a.push(i),a.push(n);return a}function Xp(e){return ak(Dk(e))}function To(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function Pk(e){return e!==e}function Zp(e){return e!=null&&(!!e._isBuffer||eh(e)||Fk(e))}function eh(e){return!!e.constructor&&typeof e.constructor.isBuffer=="function"&&e.constructor.isBuffer(e)}function Fk(e){return typeof e.readFloatLE=="function"&&typeof e.slice=="function"&&eh(e.slice(0,0))}var Fn,hn,ik,Vl,lk,Bp,Kp,ck,Yp,Tk,nh=El(()=>{h();Fn=[],hn=[],ik=typeof Uint8Array!="undefined"?Uint8Array:Array,Vl=!1;lk={}.toString,Bp=Array.isArray||function(e){return lk.call(e)=="[object Array]"};Kp=50;ne.TYPED_ARRAY_SUPPORT=window.TYPED_ARRAY_SUPPORT!==void 0?window.TYPED_ARRAY_SUPPORT:!0;ck=ko();ne.poolSize=8192;ne._augment=function(e){return e.__proto__=ne.prototype,e};ne.from=function(e,t,r){return $p(null,e,t,r)};ne.TYPED_ARRAY_SUPPORT&&(ne.prototype.__proto__=Uint8Array.prototype,ne.__proto__=Uint8Array);ne.alloc=function(e,t,r){return uk(null,e,t,r)};ne.allocUnsafe=function(e){return zl(null,e)};ne.allocUnsafeSlow=function(e){return zl(null,e)};ne.isBuffer=Zp;ne.compare=function(t,r){if(!Nn(t)||!Nn(r))throw new TypeError("Arguments must be Buffers");if(t===r)return 0;for(var n=t.length,i=r.length,a=0,o=Math.min(n,i);a0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""};ne.prototype.compare=function(t,r,n,i,a){if(!Nn(t))throw new TypeError("Argument must be a Buffer");if(r===void 0&&(r=0),n===void 0&&(n=t?t.length:0),i===void 0&&(i=0),a===void 0&&(a=this.length),r<0||n>t.length||i<0||a>this.length)throw new RangeError("out of range index");if(i>=a&&r>=n)return 0;if(i>=a)return-1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,a>>>=0,this===t)return 0;for(var o=a-i,s=n-r,u=Math.min(o,s),l=this.slice(i,a),c=t.slice(r,n),d=0;da)&&(n=a),t.length>0&&(n<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var o=!1;;)switch(i){case"hex":return gk(this,t,r,n);case"utf8":case"utf-8":return vk(this,t,r,n);case"ascii":return jp(this,t,r,n);case"latin1":case"binary":return yk(this,t,r,n);case"base64":return bk(this,t,r,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return wk(this,t,r,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}};ne.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};Yp=4096;ne.prototype.slice=function(t,r){var n=this.length;t=~~t,r=r===void 0?n:~~r,t<0?(t+=n,t<0&&(t=0)):t>n&&(t=n),r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),r0&&(a*=256);)i+=this[t+--r]*a;return i};ne.prototype.readUInt8=function(t,r){return r||St(t,1,this.length),this[t]};ne.prototype.readUInt16LE=function(t,r){return r||St(t,2,this.length),this[t]|this[t+1]<<8};ne.prototype.readUInt16BE=function(t,r){return r||St(t,2,this.length),this[t]<<8|this[t+1]};ne.prototype.readUInt32LE=function(t,r){return r||St(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+this[t+3]*16777216};ne.prototype.readUInt32BE=function(t,r){return r||St(t,4,this.length),this[t]*16777216+(this[t+1]<<16|this[t+2]<<8|this[t+3])};ne.prototype.readIntLE=function(t,r,n){t=t|0,r=r|0,n||St(t,r,this.length);for(var i=this[t],a=1,o=0;++o=a&&(i-=Math.pow(2,8*r)),i};ne.prototype.readIntBE=function(t,r,n){t=t|0,r=r|0,n||St(t,r,this.length);for(var i=r,a=1,o=this[t+--i];i>0&&(a*=256);)o+=this[t+--i]*a;return a*=128,o>=a&&(o-=Math.pow(2,8*r)),o};ne.prototype.readInt8=function(t,r){return r||St(t,1,this.length),this[t]&128?(255-this[t]+1)*-1:this[t]};ne.prototype.readInt16LE=function(t,r){r||St(t,2,this.length);var n=this[t]|this[t+1]<<8;return n&32768?n|4294901760:n};ne.prototype.readInt16BE=function(t,r){r||St(t,2,this.length);var n=this[t+1]|this[t]<<8;return n&32768?n|4294901760:n};ne.prototype.readInt32LE=function(t,r){return r||St(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24};ne.prototype.readInt32BE=function(t,r){return r||St(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]};ne.prototype.readFloatLE=function(t,r){return r||St(t,4,this.length),xo(this,t,!0,23,4)};ne.prototype.readFloatBE=function(t,r){return r||St(t,4,this.length),xo(this,t,!1,23,4)};ne.prototype.readDoubleLE=function(t,r){return r||St(t,8,this.length),xo(this,t,!0,52,8)};ne.prototype.readDoubleBE=function(t,r){return r||St(t,8,this.length),xo(this,t,!1,52,8)};ne.prototype.writeUIntLE=function(t,r,n,i){if(t=+t,r=r|0,n=n|0,!i){var a=Math.pow(2,8*n)-1;Zt(this,t,r,n,a,0)}var o=1,s=0;for(this[r]=t&255;++s=0&&(s*=256);)this[r+o]=t/s&255;return r+n};ne.prototype.writeUInt8=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,1,255,0),ne.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[r]=t&255,r+1};ne.prototype.writeUInt16LE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,2,65535,0),ne.TYPED_ARRAY_SUPPORT?(this[r]=t&255,this[r+1]=t>>>8):So(this,t,r,!0),r+2};ne.prototype.writeUInt16BE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,2,65535,0),ne.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=t&255):So(this,t,r,!1),r+2};ne.prototype.writeUInt32LE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,4,4294967295,0),ne.TYPED_ARRAY_SUPPORT?(this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=t&255):_o(this,t,r,!0),r+4};ne.prototype.writeUInt32BE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,4,4294967295,0),ne.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255):_o(this,t,r,!1),r+4};ne.prototype.writeIntLE=function(t,r,n,i){if(t=+t,r=r|0,!i){var a=Math.pow(2,8*n-1);Zt(this,t,r,n,a-1,-a)}var o=0,s=1,u=0;for(this[r]=t&255;++o>0)-u&255;return r+n};ne.prototype.writeIntBE=function(t,r,n,i){if(t=+t,r=r|0,!i){var a=Math.pow(2,8*n-1);Zt(this,t,r,n,a-1,-a)}var o=n-1,s=1,u=0;for(this[r+o]=t&255;--o>=0&&(s*=256);)t<0&&u===0&&this[r+o+1]!==0&&(u=1),this[r+o]=(t/s>>0)-u&255;return r+n};ne.prototype.writeInt8=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,1,127,-128),ne.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[r]=t&255,r+1};ne.prototype.writeInt16LE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,2,32767,-32768),ne.TYPED_ARRAY_SUPPORT?(this[r]=t&255,this[r+1]=t>>>8):So(this,t,r,!0),r+2};ne.prototype.writeInt16BE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,2,32767,-32768),ne.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=t&255):So(this,t,r,!1),r+2};ne.prototype.writeInt32LE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,4,2147483647,-2147483648),ne.TYPED_ARRAY_SUPPORT?(this[r]=t&255,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24):_o(this,t,r,!0),r+4};ne.prototype.writeInt32BE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),ne.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255):_o(this,t,r,!1),r+4};ne.prototype.writeFloatLE=function(t,r,n){return Gp(this,t,r,!0,n)};ne.prototype.writeFloatBE=function(t,r,n){return Gp(this,t,r,!1,n)};ne.prototype.writeDoubleLE=function(t,r,n){return Qp(this,t,r,!0,n)};ne.prototype.writeDoubleBE=function(t,r,n){return Qp(this,t,r,!1,n)};ne.prototype.copy=function(t,r,n,i){if(n||(n=0),!i&&i!==0&&(i=this.length),r>=t.length&&(r=t.length),r||(r=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-r=0;--o)t[o+r]=this[o+n];else if(a<1e3||!ne.TYPED_ARRAY_SUPPORT)for(o=0;o>>0,n=n===void 0?this.length:n>>>0,t||(t=0);var o;if(typeof t=="number")for(o=r;o{h();var Fr=(nh(),th);if(Fr&&Fr.default){Do.exports=Fr.default;for(let e in Fr)Do.exports[e]=Fr[e]}else Fr&&(Do.exports=Fr)});var Ao=ft(He=>{h();"use strict";var mr=Eo(),Mt=Np(),ih=rh().Buffer;window.__TYPEDARRAY_POOL||(window.__TYPEDARRAY_POOL={UINT8:Mt([32,0]),UINT16:Mt([32,0]),UINT32:Mt([32,0]),BIGUINT64:Mt([32,0]),INT8:Mt([32,0]),INT16:Mt([32,0]),INT32:Mt([32,0]),BIGINT64:Mt([32,0]),FLOAT:Mt([32,0]),DOUBLE:Mt([32,0]),DATA:Mt([32,0]),UINT8C:Mt([32,0]),BUFFER:Mt([32,0])});var Nk=typeof Uint8ClampedArray!="undefined",Ok=typeof BigUint64Array!="undefined",Rk=typeof BigInt64Array!="undefined",st=window.__TYPEDARRAY_POOL;st.UINT8C||(st.UINT8C=Mt([32,0]));st.BIGUINT64||(st.BIGUINT64=Mt([32,0]));st.BIGINT64||(st.BIGINT64=Mt([32,0]));st.BUFFER||(st.BUFFER=Mt([32,0]));var Mo=st.DATA,Io=st.BUFFER;He.free=function(t){if(ih.isBuffer(t))Io[mr.log2(t.length)].push(t);else{if(Object.prototype.toString.call(t)!=="[object ArrayBuffer]"&&(t=t.buffer),!t)return;var r=t.length||t.byteLength,n=mr.log2(r)|0;Mo[n].push(t)}};function ah(e){if(!!e){var t=e.length||e.byteLength,r=mr.log2(t);Mo[r].push(e)}}function Hk(e){ah(e.buffer)}He.freeUint8=He.freeUint16=He.freeUint32=He.freeBigUint64=He.freeInt8=He.freeInt16=He.freeInt32=He.freeBigInt64=He.freeFloat32=He.freeFloat=He.freeFloat64=He.freeDouble=He.freeUint8Clamped=He.freeDataView=Hk;He.freeArrayBuffer=ah;He.freeBuffer=function(t){Io[mr.log2(t.length)].push(t)};He.malloc=function(t,r){if(r===void 0||r==="arraybuffer")return en(t);switch(r){case"uint8":return Yl(t);case"uint16":return oh(t);case"uint32":return sh(t);case"int8":return lh(t);case"int16":return ch(t);case"int32":return uh(t);case"float":case"float32":return dh(t);case"double":case"float64":return fh(t);case"uint8_clamped":return ph(t);case"bigint64":return mh(t);case"biguint64":return hh(t);case"buffer":return vh(t);case"data":case"dataview":return gh(t);default:return null}return null};function en(e){var e=mr.nextPow2(e),t=mr.log2(e),r=Mo[t];return r.length>0?r.pop():new ArrayBuffer(e)}He.mallocArrayBuffer=en;function Yl(e){return new Uint8Array(en(e),0,e)}He.mallocUint8=Yl;function oh(e){return new Uint16Array(en(2*e),0,e)}He.mallocUint16=oh;function sh(e){return new Uint32Array(en(4*e),0,e)}He.mallocUint32=sh;function lh(e){return new Int8Array(en(e),0,e)}He.mallocInt8=lh;function ch(e){return new Int16Array(en(2*e),0,e)}He.mallocInt16=ch;function uh(e){return new Int32Array(en(4*e),0,e)}He.mallocInt32=uh;function dh(e){return new Float32Array(en(4*e),0,e)}He.mallocFloat32=He.mallocFloat=dh;function fh(e){return new Float64Array(en(8*e),0,e)}He.mallocFloat64=He.mallocDouble=fh;function ph(e){return Nk?new Uint8ClampedArray(en(e),0,e):Yl(e)}He.mallocUint8Clamped=ph;function hh(e){return Ok?new BigUint64Array(en(8*e),0,e):null}He.mallocBigUint64=hh;function mh(e){return Rk?new BigInt64Array(en(8*e),0,e):null}He.mallocBigInt64=mh;function gh(e){return new DataView(en(e),0,e)}He.mallocDataView=gh;function vh(e){e=mr.nextPow2(e);var t=mr.log2(e),r=Io[t];return r.length>0?r.pop():new ih(e)}He.mallocBuffer=vh;He.clearCache=function(){for(var t=0;t<32;++t)st.UINT8[t].length=0,st.UINT16[t].length=0,st.UINT32[t].length=0,st.INT8[t].length=0,st.INT16[t].length=0,st.INT32[t].length=0,st.FLOAT[t].length=0,st.DOUBLE[t].length=0,st.BIGUINT64[t].length=0,st.BIGINT64[t].length=0,st.UINT8C[t].length=0,Mo[t].length=0,Io[t].length=0}});var xh=ft((DM,Eh)=>{h();"use strict";Eh.exports=Bk;var Lo=32;function Bk(e,t){t<=4*Lo?Po(0,t-1,e):No(0,t-1,e)}function Po(e,t,r){for(var n=2*(e+1),i=e+1;i<=t;++i){for(var a=r[n++],o=r[n++],s=i,u=n-2;s-- >e;){var l=r[u-2],c=r[u-1];if(lr[t+1]:!0}function Fo(e,t,r,n){e*=2;var i=n[e];return i>1,s=o-n,u=o+n,l=i,c=s,d=o,f=u,p=a,m=e+1,y=t-1,b=0;jn(l,c,r)&&(b=l,l=c,c=b),jn(f,p,r)&&(b=f,f=p,p=b),jn(l,d,r)&&(b=l,l=d,d=b),jn(c,d,r)&&(b=c,c=d,d=b),jn(l,f,r)&&(b=l,l=f,f=b),jn(d,f,r)&&(b=d,d=f,f=b),jn(c,p,r)&&(b=c,c=p,p=b),jn(c,d,r)&&(b=c,c=d,d=b),jn(f,p,r)&&(b=f,f=p,p=b);for(var x=r[2*c],D=r[2*c+1],C=r[2*f],A=r[2*f+1],N=2*l,T=2*d,O=2*p,W=2*i,z=2*o,ee=2*a,Z=0;Z<2;++Z){var le=r[N+Z],X=r[T+Z],G=r[O+Z];r[W+Z]=le,r[z+Z]=X,r[ee+Z]=G}bh(s,e,r),bh(u,t,r);for(var re=m;re<=y;++re)if(Fo(re,x,D,r))re!==m&&yh(re,m,r),++m;else if(!Fo(re,C,A,r))for(;;)if(Fo(y,C,A,r)){Fo(y,x,D,r)?(Kk(re,m,y,r),++m,--y):(yh(re,y,r),--y);break}else{if(--y{h();"use strict";kh.exports={init:Uk,sweepBipartite:Wk,sweepComplete:Vk,scanBipartite:zk,scanComplete:jk};var lt=Ao(),$k=Eo(),Oo=xh(),sn=1<<28,Nr=1024,It=lt.mallocInt32(Nr),qn=lt.mallocInt32(Nr),Yn=lt.mallocInt32(Nr),Or=lt.mallocInt32(Nr),ui=lt.mallocInt32(Nr),la=lt.mallocInt32(Nr),Te=lt.mallocDouble(Nr*8);function Uk(e){var t=$k.nextPow2(e);It.length>>1;Oo(Te,D);for(var C=0,A=0,m=0;m=sn)N=N-sn|0,di(Yn,Or,A--,N);else if(N>=0)di(It,qn,C--,N);else if(N<=-sn){N=-N-sn|0;for(var T=0;T>>1;Oo(Te,D);for(var C=0,A=0,N=0,m=0;m>1==Te[2*m+3]>>1&&(O=2,m+=1),T<0){for(var W=-(T>>1)-1,z=0;z>1)-1;O===0?di(It,qn,C--,W):O===1?di(Yn,Or,A--,W):O===2&&di(ui,la,N--,W)}}}function zk(e,t,r,n,i,a,o,s,u,l,c,d){var f=0,p=2*e,m=t,y=t+e,b=1,x=1;n?x=sn:b=sn;for(var D=i;D>>1;Oo(Te,T);for(var O=0,D=0;D=sn?(z=!n,C-=sn):(z=!!n,C-=1),z)fi(It,qn,O++,C);else{var ee=d[C],Z=p*C,le=c[Z+t+1],X=c[Z+t+1+e];e:for(var G=0;G>>1;Oo(Te,C);for(var A=0,y=0;y=sn)It[A++]=b-sn;else{b-=1;var T=c[b],O=f*b,W=l[O+t+1],z=l[O+t+1+e];e:for(var ee=0;ee=0;--ee)if(It[ee]===b){for(var G=ee+1;G{h();"use strict";var Rr="d",pi="ax",Sh="vv",Gl="fp",ca="es",Ro="rs",Ql="re",ua="rb",_h="ri",hi="rp",Ho="bs",Xl="be",da="bb",Ch="bi",mi="bp",Zl="rv",ec="Q",tc=[Rr,pi,Sh,Ro,Ql,ua,_h,Ho,Xl,da,Ch];function qk(e,t,r){var n="bruteForce"+(e?"Red":"Blue")+(t?"Flip":"")+(r?"Full":""),i=["function ",n,"(",tc.join(),"){","var ",ca,"=2*",Rr,";"],a="for(var i="+Ro+","+hi+"="+ca+"*"+Ro+";i<"+Ql+";++i,"+hi+"+="+ca+"){var x0="+ua+"["+pi+"+"+hi+"],x1="+ua+"["+pi+"+"+hi+"+"+Rr+"],xi="+_h+"[i];",o="for(var j="+Ho+","+mi+"="+ca+"*"+Ho+";j<"+Xl+";++j,"+mi+"+="+ca+"){var y0="+da+"["+pi+"+"+mi+"],"+(r?"y1="+da+"["+pi+"+"+mi+"+"+Rr+"],":"")+"yi="+Ch+"[j];";return e?i.push(a,ec,":",o):i.push(o,ec,":",a),r?i.push("if(y1"+Xl+"-"+Ho+"){"),e?(a(!0,!1),i.push("}else{"),a(!1,!1)):(i.push("if("+Gl+"){"),a(!0,!0),i.push("}else{"),a(!0,!1),i.push("}}else{if("+Gl+"){"),a(!1,!0),i.push("}else{"),a(!1,!1),i.push("}")),i.push("}}return "+t);var o=r.join("")+i.join(""),s=new Function(o);return s()}nc.partial=Th(!1);nc.full=Th(!0)});var rc=ft((AM,Mh)=>{h();"use strict";Mh.exports=Jk;var Yk="for(var j=2*a,k=j*c,l=k,m=c,n=b,o=a+b,p=c;d>p;++p,k+=j){var _;if($)if(m===p)m+=1,l+=j;else{for(var s=0;j>s;++s){var t=e[k+s];e[k+s]=e[l],e[l++]=t}var u=f[p];f[p]=f[m],f[m++]=u}}return m";function Jk(e,t){var r="abcdef".split("").concat(t),n=[];return e.indexOf("lo")>=0&&n.push("lo=e[k+n]"),e.indexOf("hi")>=0&&n.push("hi=e[k+o]"),r.push(Yk.replace("_",n.join()).replace("$",e)),Function.apply(void 0,r)}});var Lh=ft((LM,Ah)=>{h();"use strict";Ah.exports=Zk;var Gk=rc(),Ih=Gk("lor&&i[d+t]>l;--c,d-=o){for(var f=d,p=d+o,m=0;m>>1,l=2*e,c=u,d=i[l*u+t];o=b?(c=y,d=b):m>=D?(c=p,d=m):(c=x,d=D):b>=D?(c=y,d=b):D>=m?(c=p,d=m):(c=x,d=D);for(var C=l*(s-1),A=l*c,N=0;N{h();"use strict";Hh.exports=f0;var gi=Ao(),ic=Eo(),Ph=Dh(),e0=Ph.partial,t0=Ph.full,gr=Jl(),n0=Lh(),vi=rc(),Fh=128,r0=1<<22,i0=1<<22,a0=vi("!(lo>=p0)&&!(p1>=hi)",["p0","p1"]),Nh=vi("lo===p0",["p0"]),o0=vi("lo0;){l-=1;var f=l*ac,p=jt[f],m=jt[f+1],y=jt[f+2],b=jt[f+3],x=jt[f+4],D=jt[f+5],C=l*oc,A=Hr[C],N=Hr[C+1],T=D&1,O=!!(D&16),W=i,z=a,ee=s,Z=u;if(T&&(W=s,z=u,ee=i,Z=a),!(D&2&&(y=o0(e,p,m,y,W,z,N),m>=y))&&!(D&4&&(m=s0(e,p,m,y,W,z,A),m>=y))){var le=y-m,X=x-b;if(O){if(e*le*(le+X){h();"use strict";Uh.exports=v0;var vr=Ao(),Bo=Jl(),p0=Bh();function h0(e,t){for(var r=0;r>>1;if(!(o<=0)){var s,u=vr.mallocDouble(2*o*i),l=vr.mallocInt32(i);if(i=Kh(e,o,u,l),i>0){if(o===1&&n)Bo.init(i),s=Bo.sweepComplete(o,r,0,i,u,l,0,i,u,l);else{var c=vr.mallocDouble(2*o*a),d=vr.mallocInt32(a);a=Kh(t,o,c,d),a>0&&(Bo.init(i+a),o===1?s=Bo.sweepBipartite(o,r,0,i,u,l,0,a,c,d):s=p0(o,r,n,i,u,l,a,c,d),vr.free(c),vr.free(d))}vr.free(u),vr.free(l)}return s}}}var fa;function $h(e,t){fa.push([e,t])}function m0(e){return fa=[],Ko(e,e,$h,!0),fa}function g0(e,t){return fa=[],Ko(e,t,$h,!1),fa}function v0(e,t,r){var n;switch(arguments.length){case 1:return m0(e);case 2:return typeof t=="function"?Ko(e,e,t,!0):g0(e,t);case 3:return Ko(e,t,r,!1);default:throw new Error("box-intersect: Invalid arguments")}}});var dm=ft((NM,Wo)=>{h();var Vh,zh,jh,qh,Yh,Jh,Gh,Qh,Xh,$o,sc,Zh,em,tm,yi,nm,rm,im,am,om,sm,lm,cm,um,Uo;(function(e){var t=typeof window=="object"?window:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(n){e(r(t,r(n)))}):typeof Wo=="object"&&typeof Wo.exports=="object"?e(r(t,r(Wo.exports))):e(r(t));function r(n,i){return n!==t&&(typeof Object.create=="function"?Object.defineProperty(n,"__esModule",{value:!0}):n.__esModule=!0),function(a,o){return n[a]=i?i(a,o):o}}})(function(e){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])};Vh=function(n,i){if(typeof i!="function"&&i!==null)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");t(n,i);function a(){this.constructor=n}n.prototype=i===null?Object.create(i):(a.prototype=i.prototype,new a)},zh=Object.assign||function(n){for(var i,a=1,o=arguments.length;a=0;c--)(l=n[c])&&(u=(s<3?l(u):s>3?l(i,a,u):l(i,a))||u);return s>3&&u&&Object.defineProperty(i,a,u),u},Yh=function(n,i){return function(a,o){i(a,o,n)}},Jh=function(n,i){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,i)},Gh=function(n,i,a,o){function s(u){return u instanceof a?u:new a(function(l){l(u)})}return new(a||(a=Promise))(function(u,l){function c(p){try{f(o.next(p))}catch(m){l(m)}}function d(p){try{f(o.throw(p))}catch(m){l(m)}}function f(p){p.done?u(p.value):s(p.value).then(c,d)}f((o=o.apply(n,i||[])).next())})},Qh=function(n,i){var a={label:0,sent:function(){if(u[0]&1)throw u[1];return u[1]},trys:[],ops:[]},o,s,u,l;return l={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(f){return function(p){return d([f,p])}}function d(f){if(o)throw new TypeError("Generator is already executing.");for(;a;)try{if(o=1,s&&(u=f[0]&2?s.return:f[0]?s.throw||((u=s.return)&&u.call(s),0):s.next)&&!(u=u.call(s,f[1])).done)return u;switch(s=0,u&&(f=[f[0]&2,u.value]),f[0]){case 0:case 1:u=f;break;case 4:return a.label++,{value:f[1],done:!1};case 5:a.label++,s=f[1],f=[0];continue;case 7:f=a.ops.pop(),a.trys.pop();continue;default:if(u=a.trys,!(u=u.length>0&&u[u.length-1])&&(f[0]===6||f[0]===2)){a=0;continue}if(f[0]===3&&(!u||f[1]>u[0]&&f[1]=n.length&&(n=void 0),{value:n&&n[o++],done:!n}}};throw new TypeError(i?"Object is not iterable.":"Symbol.iterator is not defined.")},sc=function(n,i){var a=typeof Symbol=="function"&&n[Symbol.iterator];if(!a)return n;var o=a.call(n),s,u=[],l;try{for(;(i===void 0||i-- >0)&&!(s=o.next()).done;)u.push(s.value)}catch(c){l={error:c}}finally{try{s&&!s.done&&(a=o.return)&&a.call(o)}finally{if(l)throw l.error}}return u},Zh=function(){for(var n=[],i=0;i1||c(y,b)})})}function c(y,b){try{d(o[y](b))}catch(x){m(u[0][3],x)}}function d(y){y.value instanceof yi?Promise.resolve(y.value.v).then(f,p):m(u[0][2],y)}function f(y){c("next",y)}function p(y){c("throw",y)}function m(y,b){y(b),u.shift(),u.length&&c(u[0][0],u[0][1])}},rm=function(n){var i,a;return i={},o("next"),o("throw",function(s){throw s}),o("return"),i[Symbol.iterator]=function(){return this},i;function o(s,u){i[s]=n[s]?function(l){return(a=!a)?{value:yi(n[s](l)),done:s==="return"}:u?u(l):l}:u}},im=function(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=n[Symbol.asyncIterator],a;return i?i.call(n):(n=typeof $o=="function"?$o(n):n[Symbol.iterator](),a={},o("next"),o("throw"),o("return"),a[Symbol.asyncIterator]=function(){return this},a);function o(u){a[u]=n[u]&&function(l){return new Promise(function(c,d){l=n[u](l),s(c,d,l.done,l.value)})}}function s(u,l,c,d){Promise.resolve(d).then(function(f){u({value:f,done:c})},l)}},am=function(n,i){return Object.defineProperty?Object.defineProperty(n,"raw",{value:i}):n.raw=i,n};var r=Object.create?function(n,i){Object.defineProperty(n,"default",{enumerable:!0,value:i})}:function(n,i){n.default=i};om=function(n){if(n&&n.__esModule)return n;var i={};if(n!=null)for(var a in n)a!=="default"&&Object.prototype.hasOwnProperty.call(n,a)&&Uo(i,n,a);return r(i,n),i},sm=function(n){return n&&n.__esModule?n:{default:n}},lm=function(n,i,a,o){if(a==="a"&&!o)throw new TypeError("Private accessor was defined without a getter");if(typeof i=="function"?n!==i||!o:!i.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return a==="m"?o:a==="a"?o.call(n):o?o.value:i.get(n)},cm=function(n,i,a,o,s){if(o==="m")throw new TypeError("Private method is not writable");if(o==="a"&&!s)throw new TypeError("Private accessor was defined without a setter");if(typeof i=="function"?n!==i||!s:!i.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return o==="a"?s.call(n,a):s?s.value=a:i.set(n,a),a},um=function(n,i){if(i===null||typeof i!="object"&&typeof i!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof n=="function"?i===n:n.has(i)},e("__extends",Vh),e("__assign",zh),e("__rest",jh),e("__decorate",qh),e("__param",Yh),e("__metadata",Jh),e("__awaiter",Gh),e("__generator",Qh),e("__exportStar",Xh),e("__createBinding",Uo),e("__values",$o),e("__read",sc),e("__spread",Zh),e("__spreadArrays",em),e("__spreadArray",tm),e("__await",yi),e("__asyncGenerator",nm),e("__asyncDelegator",rm),e("__asyncValues",im),e("__makeTemplateObject",am),e("__importStar",om),e("__importDefault",sm),e("__classPrivateFieldGet",lm),e("__classPrivateFieldSet",cm),e("__classPrivateFieldIn",um)})});var fc=ft(Le=>{h();"use strict";Object.defineProperty(Le,"__esModule",{value:!0});var tt=require("obsidian"),uc="YYYY-MM-DD",dc="gggg-[W]ww",ym="YYYY-MM",bm="YYYY-[Q]Q",wm="YYYY";function ha(e){let t=window.app.plugins.getPlugin("periodic-notes");return t&&t.settings?.[e]?.enabled}function ma(){try{let{internalPlugins:e,plugins:t}=window.app;if(ha("daily")){let{format:a,folder:o,template:s}=t.getPlugin("periodic-notes")?.settings?.daily||{};return{format:a||uc,folder:o?.trim()||"",template:s?.trim()||""}}let{folder:r,format:n,template:i}=e.getPluginById("daily-notes")?.instance?.options||{};return{format:n||uc,folder:r?.trim()||"",template:i?.trim()||""}}catch(e){console.info("No custom daily note settings found!",e)}}function ga(){try{let e=window.app.plugins,t=e.getPlugin("calendar")?.options,r=e.getPlugin("periodic-notes")?.settings?.weekly;if(ha("weekly"))return{format:r.format||dc,folder:r.folder?.trim()||"",template:r.template?.trim()||""};let n=t||{};return{format:n.weeklyNoteFormat||dc,folder:n.weeklyNoteFolder?.trim()||"",template:n.weeklyNoteTemplate?.trim()||""}}catch(e){console.info("No custom weekly note settings found!",e)}}function va(){let e=window.app.plugins;try{let t=ha("monthly")&&e.getPlugin("periodic-notes")?.settings?.monthly||{};return{format:t.format||ym,folder:t.folder?.trim()||"",template:t.template?.trim()||""}}catch(t){console.info("No custom monthly note settings found!",t)}}function ya(){let e=window.app.plugins;try{let t=ha("quarterly")&&e.getPlugin("periodic-notes")?.settings?.quarterly||{};return{format:t.format||bm,folder:t.folder?.trim()||"",template:t.template?.trim()||""}}catch(t){console.info("No custom quarterly note settings found!",t)}}function ba(){let e=window.app.plugins;try{let t=ha("yearly")&&e.getPlugin("periodic-notes")?.settings?.yearly||{};return{format:t.format||wm,folder:t.folder?.trim()||"",template:t.template?.trim()||""}}catch(t){console.info("No custom yearly note settings found!",t)}}function Em(...e){let t=[];for(let n=0,i=e.length;n{let D=n(),C=e.clone().set({hour:D.get("hour"),minute:D.get("minute"),second:D.get("second")});return m&&C.add(parseInt(y,10),b),x?C.format(x.substring(1).trim()):C.format(a)}).replace(/{{\s*yesterday\s*}}/gi,e.clone().subtract(1,"day").format(a)).replace(/{{\s*tomorrow\s*}}/gi,e.clone().add(1,"d").format(a)));return t.foldManager.save(d,u),d}catch(d){console.error(`Failed to create file: '${c}'`,d),new tt.Notice("Unable to create new file.")}}function L0(e,t){return t[Tn(e,"day")]??null}function P0(){let{vault:e}=window.app,{folder:t}=ma(),r=e.getAbstractFileByPath(tt.normalizePath(t));if(!r)throw new Sm("Failed to find daily notes folder");let n={};return tt.Vault.recurseChildren(r,i=>{if(i instanceof tt.TFile){let a=xi(i,"day");if(a){let o=Tn(a,"day");n[o]=i}}}),n}var Cm=class extends Error{};function F0(){let{moment:e}=window,t=e.localeData()._week.dow,r=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];for(;t;)r.push(r.shift()),t--;return r}function N0(e){return F0().indexOf(e.toLowerCase())}async function Tm(e){let{vault:t}=window.app,{template:r,format:n,folder:i}=ga(),[a,o]=await Ei(r),s=e.format(n),u=await wa(i,s);try{let l=await t.create(u,a.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(c,d,f,p,m,y)=>{let b=window.moment(),x=e.clone().set({hour:b.get("hour"),minute:b.get("minute"),second:b.get("second")});return f&&x.add(parseInt(p,10),m),y?x.format(y.substring(1).trim()):x.format(n)}).replace(/{{\s*title\s*}}/gi,s).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*(sunday|monday|tuesday|wednesday|thursday|friday|saturday)\s*:(.*?)}}/gi,(c,d,f)=>{let p=N0(d);return e.weekday(p).format(f.trim())}));return window.app.foldManager.save(l,o),l}catch(l){console.error(`Failed to create file: '${u}'`,l),new tt.Notice("Unable to create new file.")}}function O0(e,t){return t[Tn(e,"week")]??null}function R0(){let e={};if(!Lm())return e;let{vault:t}=window.app,{folder:r}=ga(),n=t.getAbstractFileByPath(tt.normalizePath(r));if(!n)throw new Cm("Failed to find weekly notes folder");return tt.Vault.recurseChildren(n,i=>{if(i instanceof tt.TFile){let a=xi(i,"week");if(a){let o=Tn(a,"week");e[o]=i}}}),e}var Dm=class extends Error{};async function Mm(e){let{vault:t}=window.app,{template:r,format:n,folder:i}=va(),[a,o]=await Ei(r),s=e.format(n),u=await wa(i,s);try{let l=await t.create(u,a.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(c,d,f,p,m,y)=>{let b=window.moment(),x=e.clone().set({hour:b.get("hour"),minute:b.get("minute"),second:b.get("second")});return f&&x.add(parseInt(p,10),m),y?x.format(y.substring(1).trim()):x.format(n)}).replace(/{{\s*date\s*}}/gi,s).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,s));return window.app.foldManager.save(l,o),l}catch(l){console.error(`Failed to create file: '${u}'`,l),new tt.Notice("Unable to create new file.")}}function H0(e,t){return t[Tn(e,"month")]??null}function B0(){let e={};if(!Pm())return e;let{vault:t}=window.app,{folder:r}=va(),n=t.getAbstractFileByPath(tt.normalizePath(r));if(!n)throw new Dm("Failed to find monthly notes folder");return tt.Vault.recurseChildren(n,i=>{if(i instanceof tt.TFile){let a=xi(i,"month");if(a){let o=Tn(a,"month");e[o]=i}}}),e}var Im=class extends Error{};async function K0(e){let{vault:t}=window.app,{template:r,format:n,folder:i}=ya(),[a,o]=await Ei(r),s=e.format(n),u=await wa(i,s);try{let l=await t.create(u,a.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(c,d,f,p,m,y)=>{let b=window.moment(),x=e.clone().set({hour:b.get("hour"),minute:b.get("minute"),second:b.get("second")});return f&&x.add(parseInt(p,10),m),y?x.format(y.substring(1).trim()):x.format(n)}).replace(/{{\s*date\s*}}/gi,s).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,s));return window.app.foldManager.save(l,o),l}catch(l){console.error(`Failed to create file: '${u}'`,l),new tt.Notice("Unable to create new file.")}}function $0(e,t){return t[Tn(e,"quarter")]??null}function U0(){let e={};if(!Fm())return e;let{vault:t}=window.app,{folder:r}=ya(),n=t.getAbstractFileByPath(tt.normalizePath(r));if(!n)throw new Im("Failed to find quarterly notes folder");return tt.Vault.recurseChildren(n,i=>{if(i instanceof tt.TFile){let a=xi(i,"quarter");if(a){let o=Tn(a,"quarter");e[o]=i}}}),e}var Am=class extends Error{};async function W0(e){let{vault:t}=window.app,{template:r,format:n,folder:i}=ba(),[a,o]=await Ei(r),s=e.format(n),u=await wa(i,s);try{let l=await t.create(u,a.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(c,d,f,p,m,y)=>{let b=window.moment(),x=e.clone().set({hour:b.get("hour"),minute:b.get("minute"),second:b.get("second")});return f&&x.add(parseInt(p,10),m),y?x.format(y.substring(1).trim()):x.format(n)}).replace(/{{\s*date\s*}}/gi,s).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,s));return window.app.foldManager.save(l,o),l}catch(l){console.error(`Failed to create file: '${u}'`,l),new tt.Notice("Unable to create new file.")}}function V0(e,t){return t[Tn(e,"year")]??null}function z0(){let e={};if(!Nm())return e;let{vault:t}=window.app,{folder:r}=ba(),n=t.getAbstractFileByPath(tt.normalizePath(r));if(!n)throw new Am("Failed to find yearly notes folder");return tt.Vault.recurseChildren(n,i=>{if(i instanceof tt.TFile){let a=xi(i,"year");if(a){let o=Tn(a,"year");e[o]=i}}}),e}function j0(){let{app:e}=window,t=e.internalPlugins.plugins["daily-notes"];if(t&&t.enabled)return!0;let r=e.plugins.getPlugin("periodic-notes");return r&&r.settings?.daily?.enabled}function Lm(){let{app:e}=window;if(e.plugins.getPlugin("calendar"))return!0;let t=e.plugins.getPlugin("periodic-notes");return t&&t.settings?.weekly?.enabled}function Pm(){let{app:e}=window,t=e.plugins.getPlugin("periodic-notes");return t&&t.settings?.monthly?.enabled}function Fm(){let{app:e}=window,t=e.plugins.getPlugin("periodic-notes");return t&&t.settings?.quarterly?.enabled}function Nm(){let{app:e}=window,t=e.plugins.getPlugin("periodic-notes");return t&&t.settings?.yearly?.enabled}function q0(e){return{day:ma,week:ga,month:va,quarter:ya,year:ba}[e]()}function Y0(e,t){return{day:_m,month:Mm,week:Tm}[e](t)}Le.DEFAULT_DAILY_NOTE_FORMAT=uc;Le.DEFAULT_MONTHLY_NOTE_FORMAT=ym;Le.DEFAULT_QUARTERLY_NOTE_FORMAT=bm;Le.DEFAULT_WEEKLY_NOTE_FORMAT=dc;Le.DEFAULT_YEARLY_NOTE_FORMAT=wm;Le.appHasDailyNotesPluginLoaded=j0;Le.appHasMonthlyNotesPluginLoaded=Pm;Le.appHasQuarterlyNotesPluginLoaded=Fm;Le.appHasWeeklyNotesPluginLoaded=Lm;Le.appHasYearlyNotesPluginLoaded=Nm;Le.createDailyNote=_m;Le.createMonthlyNote=Mm;Le.createPeriodicNote=Y0;Le.createQuarterlyNote=K0;Le.createWeeklyNote=Tm;Le.createYearlyNote=W0;Le.getAllDailyNotes=P0;Le.getAllMonthlyNotes=B0;Le.getAllQuarterlyNotes=U0;Le.getAllWeeklyNotes=R0;Le.getAllYearlyNotes=z0;Le.getDailyNote=L0;Le.getDailyNoteSettings=ma;Le.getDateFromFile=xi;Le.getDateFromPath=A0;Le.getDateUID=Tn;Le.getMonthlyNote=H0;Le.getMonthlyNoteSettings=va;Le.getPeriodicNoteSettings=q0;Le.getQuarterlyNote=$0;Le.getQuarterlyNoteSettings=ya;Le.getTemplateInfo=Ei;Le.getWeeklyNote=O0;Le.getWeeklyNoteSettings=ga;Le.getYearlyNote=V0;Le.getYearlyNoteSettings=ba});var Ta=ft((iO,Yu)=>{h();"use strict";var r_=Object.prototype.hasOwnProperty,qt="~";function Ca(){}Object.create&&(Ca.prototype=Object.create(null),new Ca().__proto__||(qt=!1));function i_(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function oy(e,t,r,n,i){if(typeof r!="function")throw new TypeError("The listener must be a function");var a=new i_(r,n||e,i),o=qt?qt+t:t;return e._events[o]?e._events[o].fn?e._events[o]=[e._events[o],a]:e._events[o].push(a):(e._events[o]=a,e._eventsCount++),e}function Es(e,t){--e._eventsCount==0?e._events=new Ca:delete e._events[t]}function $t(){this._events=new Ca,this._eventsCount=0}$t.prototype.eventNames=function(){var t=[],r,n;if(this._eventsCount===0)return t;for(n in r=this._events)r_.call(r,n)&&t.push(qt?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(r)):t};$t.prototype.listeners=function(t){var r=qt?qt+t:t,n=this._events[r];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,a=n.length,o=new Array(a);i{h();(function(e,t){typeof sd=="object"&&typeof ld!="undefined"?ld.exports=t():typeof define=="function"&&define.amd?define(t):e.Mark=t()})(sd,function(){"use strict";var e=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(s){return typeof s}:function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},t=function(s,u){if(!(s instanceof u))throw new TypeError("Cannot call a class as a function")},r=function(){function s(u,l){for(var c=0;c1&&arguments[1]!==void 0?arguments[1]:!0,c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],d=arguments.length>3&&arguments[3]!==void 0?arguments[3]:5e3;t(this,s),this.ctx=u,this.iframes=l,this.exclude=c,this.iframesTimeout=d}return r(s,[{key:"getContexts",value:function(){var l=void 0,c=[];return typeof this.ctx=="undefined"||!this.ctx?l=[]:NodeList.prototype.isPrototypeOf(this.ctx)?l=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?l=this.ctx:typeof this.ctx=="string"?l=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):l=[this.ctx],l.forEach(function(d){var f=c.filter(function(p){return p.contains(d)}).length>0;c.indexOf(d)===-1&&!f&&c.push(d)}),c}},{key:"getIframeContents",value:function(l,c){var d=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},f=void 0;try{var p=l.contentWindow;if(f=p.document,!p||!f)throw new Error("iframe inaccessible")}catch(m){d()}f&&c(f)}},{key:"isIframeBlank",value:function(l){var c="about:blank",d=l.getAttribute("src").trim(),f=l.contentWindow.location.href;return f===c&&d!==c&&d}},{key:"observeIframeLoad",value:function(l,c,d){var f=this,p=!1,m=null,y=function b(){if(!p){p=!0,clearTimeout(m);try{f.isIframeBlank(l)||(l.removeEventListener("load",b),f.getIframeContents(l,c,d))}catch(x){d()}}};l.addEventListener("load",y),m=setTimeout(y,this.iframesTimeout)}},{key:"onIframeReady",value:function(l,c,d){try{l.contentWindow.document.readyState==="complete"?this.isIframeBlank(l)?this.observeIframeLoad(l,c,d):this.getIframeContents(l,c,d):this.observeIframeLoad(l,c,d)}catch(f){d()}}},{key:"waitForIframes",value:function(l,c){var d=this,f=0;this.forEachIframe(l,function(){return!0},function(p){f++,d.waitForIframes(p.querySelector("html"),function(){--f||c()})},function(p){p||c()})}},{key:"forEachIframe",value:function(l,c,d){var f=this,p=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){},m=l.querySelectorAll("iframe"),y=m.length,b=0;m=Array.prototype.slice.call(m);var x=function(){--y<=0&&p(b)};y||x(),m.forEach(function(D){s.matches(D,f.exclude)?x():f.onIframeReady(D,function(C){c(D)&&(b++,d(C)),x()},x)})}},{key:"createIterator",value:function(l,c,d){return document.createNodeIterator(l,c,d,!1)}},{key:"createInstanceOnIframe",value:function(l){return new s(l.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(l,c,d){var f=l.compareDocumentPosition(d),p=Node.DOCUMENT_POSITION_PRECEDING;if(f&p)if(c!==null){var m=c.compareDocumentPosition(d),y=Node.DOCUMENT_POSITION_FOLLOWING;if(m&y)return!0}else return!0;return!1}},{key:"getIteratorNode",value:function(l){var c=l.previousNode(),d=void 0;return c===null?d=l.nextNode():d=l.nextNode()&&l.nextNode(),{prevNode:c,node:d}}},{key:"checkIframeFilter",value:function(l,c,d,f){var p=!1,m=!1;return f.forEach(function(y,b){y.val===d&&(p=b,m=y.handled)}),this.compareNodeIframe(l,c,d)?(p===!1&&!m?f.push({val:d,handled:!0}):p!==!1&&!m&&(f[p].handled=!0),!0):(p===!1&&f.push({val:d,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(l,c,d,f){var p=this;l.forEach(function(m){m.handled||p.getIframeContents(m.val,function(y){p.createInstanceOnIframe(y).forEachNode(c,d,f)})})}},{key:"iterateThroughNodes",value:function(l,c,d,f,p){for(var m=this,y=this.createIterator(c,l,f),b=[],x=[],D=void 0,C=void 0,A=function(){var T=m.getIteratorNode(y);return C=T.prevNode,D=T.node,D};A();)this.iframes&&this.forEachIframe(c,function(N){return m.checkIframeFilter(D,C,N,b)},function(N){m.createInstanceOnIframe(N).forEachNode(l,function(T){return x.push(T)},f)}),x.push(D);x.forEach(function(N){d(N)}),this.iframes&&this.handleOpenIframes(b,l,d,f),p()}},{key:"forEachNode",value:function(l,c,d){var f=this,p=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){},m=this.getContexts(),y=m.length;y||p(),m.forEach(function(b){var x=function(){f.iterateThroughNodes(l,b,c,d,function(){--y<=0&&p()})};f.iframes?f.waitForIframes(b,x):x()})}}],[{key:"matches",value:function(l,c){var d=typeof c=="string"?[c]:c,f=l.matches||l.matchesSelector||l.msMatchesSelector||l.mozMatchesSelector||l.oMatchesSelector||l.webkitMatchesSelector;if(f){var p=!1;return d.every(function(m){return f.call(l,m)?(p=!0,!1):!0}),p}else return!1}}]),s}(),a=function(){function s(u){t(this,s),this.ctx=u,this.ie=!1;var l=window.navigator.userAgent;(l.indexOf("MSIE")>-1||l.indexOf("Trident")>-1)&&(this.ie=!0)}return r(s,[{key:"log",value:function(l){var c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"debug",d=this.opt.log;!this.opt.debug||(typeof d=="undefined"?"undefined":e(d))==="object"&&typeof d[c]=="function"&&d[c]("mark.js: "+l)}},{key:"escapeStr",value:function(l){return l.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(l){return this.opt.wildcards!=="disabled"&&(l=this.setupWildcardsRegExp(l)),l=this.escapeStr(l),Object.keys(this.opt.synonyms).length&&(l=this.createSynonymsRegExp(l)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(l=this.setupIgnoreJoinersRegExp(l)),this.opt.diacritics&&(l=this.createDiacriticsRegExp(l)),l=this.createMergedBlanksRegExp(l),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(l=this.createJoinersRegExp(l)),this.opt.wildcards!=="disabled"&&(l=this.createWildcardsRegExp(l)),l=this.createAccuracyRegExp(l),l}},{key:"createSynonymsRegExp",value:function(l){var c=this.opt.synonyms,d=this.opt.caseSensitive?"":"i",f=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var p in c)if(c.hasOwnProperty(p)){var m=c[p],y=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(p):this.escapeStr(p),b=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(m):this.escapeStr(m);y!==""&&b!==""&&(l=l.replace(new RegExp("("+this.escapeStr(y)+"|"+this.escapeStr(b)+")","gm"+d),f+("("+this.processSynomyms(y)+"|")+(this.processSynomyms(b)+")")+f))}return l}},{key:"processSynomyms",value:function(l){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(l=this.setupIgnoreJoinersRegExp(l)),l}},{key:"setupWildcardsRegExp",value:function(l){return l=l.replace(/(?:\\)*\?/g,function(c){return c.charAt(0)==="\\"?"?":""}),l.replace(/(?:\\)*\*/g,function(c){return c.charAt(0)==="\\"?"*":""})}},{key:"createWildcardsRegExp",value:function(l){var c=this.opt.wildcards==="withSpaces";return l.replace(/\u0001/g,c?"[\\S\\s]?":"\\S?").replace(/\u0002/g,c?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(l){return l.replace(/[^(|)\\]/g,function(c,d,f){var p=f.charAt(d+1);return/[(|)\\]/.test(p)||p===""?c:c+"\0"})}},{key:"createJoinersRegExp",value:function(l){var c=[],d=this.opt.ignorePunctuation;return Array.isArray(d)&&d.length&&c.push(this.escapeStr(d.join(""))),this.opt.ignoreJoiners&&c.push("\\u00ad\\u200b\\u200c\\u200d"),c.length?l.split(/\u0000+/).join("["+c.join("")+"]*"):l}},{key:"createDiacriticsRegExp",value:function(l){var c=this.opt.caseSensitive?"":"i",d=this.opt.caseSensitive?["a\xE0\xE1\u1EA3\xE3\u1EA1\u0103\u1EB1\u1EAF\u1EB3\u1EB5\u1EB7\xE2\u1EA7\u1EA5\u1EA9\u1EAB\u1EAD\xE4\xE5\u0101\u0105","A\xC0\xC1\u1EA2\xC3\u1EA0\u0102\u1EB0\u1EAE\u1EB2\u1EB4\u1EB6\xC2\u1EA6\u1EA4\u1EA8\u1EAA\u1EAC\xC4\xC5\u0100\u0104","c\xE7\u0107\u010D","C\xC7\u0106\u010C","d\u0111\u010F","D\u0110\u010E","e\xE8\xE9\u1EBB\u1EBD\u1EB9\xEA\u1EC1\u1EBF\u1EC3\u1EC5\u1EC7\xEB\u011B\u0113\u0119","E\xC8\xC9\u1EBA\u1EBC\u1EB8\xCA\u1EC0\u1EBE\u1EC2\u1EC4\u1EC6\xCB\u011A\u0112\u0118","i\xEC\xED\u1EC9\u0129\u1ECB\xEE\xEF\u012B","I\xCC\xCD\u1EC8\u0128\u1ECA\xCE\xCF\u012A","l\u0142","L\u0141","n\xF1\u0148\u0144","N\xD1\u0147\u0143","o\xF2\xF3\u1ECF\xF5\u1ECD\xF4\u1ED3\u1ED1\u1ED5\u1ED7\u1ED9\u01A1\u1EDF\u1EE1\u1EDB\u1EDD\u1EE3\xF6\xF8\u014D","O\xD2\xD3\u1ECE\xD5\u1ECC\xD4\u1ED2\u1ED0\u1ED4\u1ED6\u1ED8\u01A0\u1EDE\u1EE0\u1EDA\u1EDC\u1EE2\xD6\xD8\u014C","r\u0159","R\u0158","s\u0161\u015B\u0219\u015F","S\u0160\u015A\u0218\u015E","t\u0165\u021B\u0163","T\u0164\u021A\u0162","u\xF9\xFA\u1EE7\u0169\u1EE5\u01B0\u1EEB\u1EE9\u1EED\u1EEF\u1EF1\xFB\xFC\u016F\u016B","U\xD9\xDA\u1EE6\u0168\u1EE4\u01AF\u1EEA\u1EE8\u1EEC\u1EEE\u1EF0\xDB\xDC\u016E\u016A","y\xFD\u1EF3\u1EF7\u1EF9\u1EF5\xFF","Y\xDD\u1EF2\u1EF6\u1EF8\u1EF4\u0178","z\u017E\u017C\u017A","Z\u017D\u017B\u0179"]:["a\xE0\xE1\u1EA3\xE3\u1EA1\u0103\u1EB1\u1EAF\u1EB3\u1EB5\u1EB7\xE2\u1EA7\u1EA5\u1EA9\u1EAB\u1EAD\xE4\xE5\u0101\u0105A\xC0\xC1\u1EA2\xC3\u1EA0\u0102\u1EB0\u1EAE\u1EB2\u1EB4\u1EB6\xC2\u1EA6\u1EA4\u1EA8\u1EAA\u1EAC\xC4\xC5\u0100\u0104","c\xE7\u0107\u010DC\xC7\u0106\u010C","d\u0111\u010FD\u0110\u010E","e\xE8\xE9\u1EBB\u1EBD\u1EB9\xEA\u1EC1\u1EBF\u1EC3\u1EC5\u1EC7\xEB\u011B\u0113\u0119E\xC8\xC9\u1EBA\u1EBC\u1EB8\xCA\u1EC0\u1EBE\u1EC2\u1EC4\u1EC6\xCB\u011A\u0112\u0118","i\xEC\xED\u1EC9\u0129\u1ECB\xEE\xEF\u012BI\xCC\xCD\u1EC8\u0128\u1ECA\xCE\xCF\u012A","l\u0142L\u0141","n\xF1\u0148\u0144N\xD1\u0147\u0143","o\xF2\xF3\u1ECF\xF5\u1ECD\xF4\u1ED3\u1ED1\u1ED5\u1ED7\u1ED9\u01A1\u1EDF\u1EE1\u1EDB\u1EDD\u1EE3\xF6\xF8\u014DO\xD2\xD3\u1ECE\xD5\u1ECC\xD4\u1ED2\u1ED0\u1ED4\u1ED6\u1ED8\u01A0\u1EDE\u1EE0\u1EDA\u1EDC\u1EE2\xD6\xD8\u014C","r\u0159R\u0158","s\u0161\u015B\u0219\u015FS\u0160\u015A\u0218\u015E","t\u0165\u021B\u0163T\u0164\u021A\u0162","u\xF9\xFA\u1EE7\u0169\u1EE5\u01B0\u1EEB\u1EE9\u1EED\u1EEF\u1EF1\xFB\xFC\u016F\u016BU\xD9\xDA\u1EE6\u0168\u1EE4\u01AF\u1EEA\u1EE8\u1EEC\u1EEE\u1EF0\xDB\xDC\u016E\u016A","y\xFD\u1EF3\u1EF7\u1EF9\u1EF5\xFFY\xDD\u1EF2\u1EF6\u1EF8\u1EF4\u0178","z\u017E\u017C\u017AZ\u017D\u017B\u0179"],f=[];return l.split("").forEach(function(p){d.every(function(m){if(m.indexOf(p)!==-1){if(f.indexOf(m)>-1)return!1;l=l.replace(new RegExp("["+m+"]","gm"+c),"["+m+"]"),f.push(m)}return!0})}),l}},{key:"createMergedBlanksRegExp",value:function(l){return l.replace(/[\s]+/gmi,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(l){var c=this,d="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xA1\xBF",f=this.opt.accuracy,p=typeof f=="string"?f:f.value,m=typeof f=="string"?[]:f.limiters,y="";switch(m.forEach(function(b){y+="|"+c.escapeStr(b)}),p){case"partially":default:return"()("+l+")";case"complementary":return y="\\s"+(y||this.escapeStr(d)),"()([^"+y+"]*"+l+"[^"+y+"]*)";case"exactly":return"(^|\\s"+y+")("+l+")(?=$|\\s"+y+")"}}},{key:"getSeparatedKeywords",value:function(l){var c=this,d=[];return l.forEach(function(f){c.opt.separateWordSearch?f.split(" ").forEach(function(p){p.trim()&&d.indexOf(p)===-1&&d.push(p)}):f.trim()&&d.indexOf(f)===-1&&d.push(f)}),{keywords:d.sort(function(f,p){return p.length-f.length}),length:d.length}}},{key:"isNumeric",value:function(l){return Number(parseFloat(l))==l}},{key:"checkRanges",value:function(l){var c=this;if(!Array.isArray(l)||Object.prototype.toString.call(l[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(l),[];var d=[],f=0;return l.sort(function(p,m){return p.start-m.start}).forEach(function(p){var m=c.callNoMatchOnInvalidRanges(p,f),y=m.start,b=m.end,x=m.valid;x&&(p.start=y,p.length=b-y,d.push(p),f=b)}),d}},{key:"callNoMatchOnInvalidRanges",value:function(l,c){var d=void 0,f=void 0,p=!1;return l&&typeof l.start!="undefined"?(d=parseInt(l.start,10),f=d+parseInt(l.length,10),this.isNumeric(l.start)&&this.isNumeric(l.length)&&f-c>0&&f-d>0?p=!0:(this.log("Ignoring invalid or overlapping range: "+(""+JSON.stringify(l))),this.opt.noMatch(l))):(this.log("Ignoring invalid range: "+JSON.stringify(l)),this.opt.noMatch(l)),{start:d,end:f,valid:p}}},{key:"checkWhitespaceRanges",value:function(l,c,d){var f=void 0,p=!0,m=d.length,y=c-m,b=parseInt(l.start,10)-y;return b=b>m?m:b,f=b+parseInt(l.length,10),f>m&&(f=m,this.log("End range automatically set to the max value of "+m)),b<0||f-b<0||b>m||f>m?(p=!1,this.log("Invalid range: "+JSON.stringify(l)),this.opt.noMatch(l)):d.substring(b,f).replace(/\s+/g,"")===""&&(p=!1,this.log("Skipping whitespace only range: "+JSON.stringify(l)),this.opt.noMatch(l)),{start:b,end:f,valid:p}}},{key:"getTextNodes",value:function(l){var c=this,d="",f=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,function(p){f.push({start:d.length,end:(d+=p.textContent).length,node:p})},function(p){return c.matchesExclude(p.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},function(){l({value:d,nodes:f})})}},{key:"matchesExclude",value:function(l){return i.matches(l,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(l,c,d){var f=this.opt.element?this.opt.element:"mark",p=l.splitText(c),m=p.splitText(d-c),y=document.createElement(f);return y.setAttribute("data-markjs","true"),this.opt.className&&y.setAttribute("class",this.opt.className),y.textContent=p.textContent,p.parentNode.replaceChild(y,p),m}},{key:"wrapRangeInMappedTextNode",value:function(l,c,d,f,p){var m=this;l.nodes.every(function(y,b){var x=l.nodes[b+1];if(typeof x=="undefined"||x.start>c){if(!f(y.node))return!1;var D=c-y.start,C=(d>y.end?y.end:d)-y.start,A=l.value.substr(0,y.start),N=l.value.substr(C+y.start);if(y.node=m.wrapRangeInTextNode(y.node,D,C),l.value=A+N,l.nodes.forEach(function(T,O){O>=b&&(l.nodes[O].start>0&&O!==b&&(l.nodes[O].start-=C),l.nodes[O].end-=C)}),d-=C,p(y.node.previousSibling,y.start),d>y.end)c=y.end;else return!1}return!0})}},{key:"wrapMatches",value:function(l,c,d,f,p){var m=this,y=c===0?0:c+1;this.getTextNodes(function(b){b.nodes.forEach(function(x){x=x.node;for(var D=void 0;(D=l.exec(x.textContent))!==null&&D[y]!=="";)if(!!d(D[y],x)){var C=D.index;if(y!==0)for(var A=1;A{h();(function(t,r){typeof Bs=="object"&&typeof Sd=="object"?Sd.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Bs=="object"?Bs.Choices=r():t.Choices=r()})(window,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{enumerable:!0,get:a})},r.r=function(n){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},r.t=function(n,i){if(i&1&&(n=r(n)),i&8||i&4&&typeof n=="object"&&n&&n.__esModule)return n;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:n}),i&2&&typeof n!="string")for(var o in n)r.d(a,o,function(s){return n[s]}.bind(null,o));return a},r.n=function(n){var i=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="/public/assets/scripts/",r(r.s=4)}([function(e,t,r){"use strict";var n=function(A){return i(A)&&!a(A)};function i(C){return!!C&&typeof C=="object"}function a(C){var A=Object.prototype.toString.call(C);return A==="[object RegExp]"||A==="[object Date]"||u(C)}var o=typeof Symbol=="function"&&Symbol.for,s=o?Symbol.for("react.element"):60103;function u(C){return C.$$typeof===s}function l(C){return Array.isArray(C)?[]:{}}function c(C,A){return A.clone!==!1&&A.isMergeableObject(C)?x(l(C),C,A):C}function d(C,A,N){return C.concat(A).map(function(T){return c(T,N)})}function f(C,A){if(!A.customMerge)return x;var N=A.customMerge(C);return typeof N=="function"?N:x}function p(C){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(C).filter(function(A){return C.propertyIsEnumerable(A)}):[]}function m(C){return Object.keys(C).concat(p(C))}function y(C,A){try{return A in C&&!(Object.hasOwnProperty.call(C,A)&&Object.propertyIsEnumerable.call(C,A))}catch(N){return!1}}function b(C,A,N){var T={};return N.isMergeableObject(C)&&m(C).forEach(function(O){T[O]=c(C[O],N)}),m(A).forEach(function(O){y(C,O)||(!N.isMergeableObject(A[O])||!C[O]?T[O]=c(A[O],N):T[O]=f(O,N)(C[O],A[O],N))}),T}function x(C,A,N){N=N||{},N.arrayMerge=N.arrayMerge||d,N.isMergeableObject=N.isMergeableObject||n,N.cloneUnlessOtherwiseSpecified=c;var T=Array.isArray(A),O=Array.isArray(C),W=T===O;return W?T?N.arrayMerge(C,A,N):b(C,A,N):c(A,N)}x.all=function(A,N){if(!Array.isArray(A))throw new Error("first argument should be an array");return A.reduce(function(T,O){return x(T,O,N)},{})};var D=x;e.exports=D},function(e,t,r){"use strict";(function(n,i){var a=r(3),o;typeof self!="undefined"?o=self:typeof window!="undefined"?o=window:typeof n!="undefined"?o=n:o=i;var s=Object(a.a)(o);t.a=s}).call(this,r(5),r(6)(e))},function(e,t,r){(function(n,i){e.exports=i()})(this,function(){return function(n){var i={};function a(o){if(i[o])return i[o].exports;var s=i[o]={i:o,l:!1,exports:{}};return n[o].call(s.exports,s,s.exports,a),s.l=!0,s.exports}return a.m=n,a.c=i,a.d=function(o,s,u){a.o(o,s)||Object.defineProperty(o,s,{enumerable:!0,get:u})},a.r=function(o){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})},a.t=function(o,s){if(1&s&&(o=a(o)),8&s||4&s&&typeof o=="object"&&o&&o.__esModule)return o;var u=Object.create(null);if(a.r(u),Object.defineProperty(u,"default",{enumerable:!0,value:o}),2&s&&typeof o!="string")for(var l in o)a.d(u,l,function(c){return o[c]}.bind(null,l));return u},a.n=function(o){var s=o&&o.__esModule?function(){return o.default}:function(){return o};return a.d(s,"a",s),s},a.o=function(o,s){return Object.prototype.hasOwnProperty.call(o,s)},a.p="",a(a.s=1)}([function(n,i){n.exports=function(a){return Array.isArray?Array.isArray(a):Object.prototype.toString.call(a)==="[object Array]"}},function(n,i,a){function o(f){return(o=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(p){return typeof p}:function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p})(f)}function s(f,p){for(var m=0;m1&&arguments[1]!==void 0?arguments[1]:{limit:!1};this._log(`--------- -Search pattern: "`.concat(b,'"'));var D=this._prepareSearchers(b),C=D.tokenSearchers,A=D.fullSearcher,N=this._search(C,A),T=N.weights,O=N.results;return this._computeScore(T,O),this.options.shouldSort&&this._sort(O),x.limit&&typeof x.limit=="number"&&(O=O.slice(0,x.limit)),this._format(O)}},{key:"_prepareSearchers",value:function(){var b=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",x=[];if(this.options.tokenize)for(var D=b.split(this.options.tokenSeparator),C=0,A=D.length;C0&&arguments[0]!==void 0?arguments[0]:[],x=arguments.length>1?arguments[1]:void 0,D=this.list,C={},A=[];if(typeof D[0]=="string"){for(var N=0,T=D.length;N1)throw new Error("Key weight has to be > 0 and <= 1");X=X.name}else O[X]={weight:1};this._analyze({key:X,value:this.options.getFn(ee,X),record:ee,index:W},{resultMap:C,results:A,tokenSearchers:b,fullSearcher:x})}return{weights:O,results:A}}},{key:"_analyze",value:function(b,x){var D=b.key,C=b.arrayIndex,A=C===void 0?-1:C,N=b.value,T=b.record,O=b.index,W=x.tokenSearchers,z=W===void 0?[]:W,ee=x.fullSearcher,Z=ee===void 0?[]:ee,le=x.resultMap,X=le===void 0?{}:le,G=x.results,re=G===void 0?[]:G;if(N!=null){var pe=!1,he=-1,ve=0;if(typeof N=="string"){this._log(` -Key: `.concat(D===""?"-":D));var be=Z.search(N);if(this._log('Full text: "'.concat(N,'", score: ').concat(be.score)),this.options.tokenize){for(var De=N.split(this.options.tokenSeparator),L=[],P=0;P-1&&(Ue=(Ue+he)/2),this._log("Score average:",Ue);var ut=!this.options.tokenize||!this.options.matchAllTokens||ve>=z.length;if(this._log(` -Check Matches: `.concat(ut)),(pe||be.isMatch)&&ut){var vt=X[O];vt?vt.output.push({key:D,arrayIndex:A,value:N,score:Ue,matchedIndices:be.matchedIndices}):(X[O]={item:T,output:[{key:D,arrayIndex:A,value:N,score:Ue,matchedIndices:be.matchedIndices}]},re.push(X[O]))}}else if(c(N))for(var Nt=0,Bn=N.length;Ntro(e,"__esModule",{value:!0});var Dl=(e,t)=>()=>(e&&(t=e(e=0)),t);var pt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),qi=(e,t)=>{If(e);for(var r in t)ro(e,r,{get:t[r],enumerable:!0})},ek=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of QE(t))!ZE.call(e,n)&&n!=="default"&&ro(e,n,{get:()=>t[n],enumerable:!(r=GE(t,n))||r.enumerable});return e},me=e=>ek(If(ro(e!=null?JE(XE(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);function Vn(e,t){for(var r in t)e[r]=t[r];return e}function Of(e){var t=e.parentNode;t&&t.removeChild(e)}function h(e,t,r){var n,i,a,o={};for(a in t)a=="key"?n=t[a]:a=="ref"?i=t[a]:o[a]=t[a];if(arguments.length>2&&(o.children=arguments.length>3?Yi.call(arguments,2):r),typeof e=="function"&&e.defaultProps!=null)for(a in e.defaultProps)o[a]===void 0&&(o[a]=e.defaultProps[a]);return Gi(e,o,n,i,null)}function Gi(e,t,r,n,i){var a={type:e,props:t,key:r,ref:n,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:i??++Af};return i==null&&fe.vnode!=null&&fe.vnode(a),a}function ri(){return{current:null}}function S(e){return e.children}function ht(e,t){this.props=e,this.context=t}function ii(e,t){if(t==null)return e.__?ii(e.__,e.__.__k.indexOf(e)+1):null;for(var r;t0?Gi(p.type,p.props,p.key,null,p.__v):p)!=null){if(p.__=r,p.__b=r.__b+1,(f=x[c])===null||f&&p.key==f.key&&p.type===f.type)x[c]=void 0;else for(d=0;d2&&(o.children=arguments.length>3?Yi.call(arguments,2):r),Gi(e.type,o,n||e.key,i||e.ref,null)}function ai(e,t){var r={__c:t="__cC"+Ff++,__:e,Consumer:function(n,i){return n.children(i)},Provider:function(n){var i,a;return this.getChildContext||(i=[],(a={})[t]=this,this.getChildContext=function(){return a},this.shouldComponentUpdate=function(o){this.props.value!==o.value&&i.some(Tl)},this.sub=function(o){i.push(o);var s=o.componentWillUnmount;o.componentWillUnmount=function(){i.splice(i.indexOf(o),1),s&&s.call(o)}}),n.children}};return r.Provider.__=r.Consumer.contextType=r}var Yi,fe,Af,tk,Ji,Lf,Pf,Ff,io,Nf,nk,Ar=Dl(()=>{m();io={},Nf=[],nk=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;Yi=Nf.slice,fe={__e:function(e,t,r,n){for(var i,a,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((a=i.constructor)&&a.getDerivedStateFromError!=null&&(i.setState(a.getDerivedStateFromError(e)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(e,n||{}),o=i.__d),o)return i.__E=i}catch(s){e=s}throw e}},Af=0,tk=function(e){return e!=null&&e.constructor===void 0},ht.prototype.setState=function(e,t){var r;r=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=Vn({},this.state),typeof e=="function"&&(e=e(Vn({},r),this.props)),e&&Vn(r,e),e!=null&&this.__v&&(t&&this.__h.push(t),Tl(this))},ht.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Tl(this))},ht.prototype.render=S,Ji=[],Lf=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,ao.__r=0,Ff=0});var m=Dl(()=>{Ar()});var Et=pt((An,bp)=>{m();"use strict";Object.defineProperty(An,"__esModule",{value:!0});function _n(e){return typeof e=="object"&&!("toString"in e)?Object.prototype.toString.call(e).slice(8,-1):e}var Lk=typeof process=="object"&&!0;function pn(e,t){if(!e)throw Lk?new Error("Invariant failed"):new Error(t())}An.invariant=pn;var Ol=Object.prototype.hasOwnProperty,Pk=Array.prototype.splice,Fk=Object.prototype.toString;function Pr(e){return Fk.call(e).slice(8,-1)}var mo=Object.assign||function(e,t){return Rl(t).forEach(function(r){Ol.call(t,r)&&(e[r]=t[r])}),e},Rl=typeof Object.getOwnPropertySymbols=="function"?function(e){return Object.keys(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.keys(e)};function dr(e){return Array.isArray(e)?mo(e.constructor(e.length),e):Pr(e)==="Map"?new Map(e):Pr(e)==="Set"?new Set(e):e&&typeof e=="object"?mo(Object.create(Object.getPrototypeOf(e)),e):e}var mp=function(){function e(){this.commands=mo({},Nk),this.update=this.update.bind(this),this.update.extend=this.extend=this.extend.bind(this),this.update.isEquals=function(t,r){return t===r},this.update.newContext=function(){return new e().update}}return Object.defineProperty(e.prototype,"isEquals",{get:function(){return this.update.isEquals},set:function(t){this.update.isEquals=t},enumerable:!0,configurable:!0}),e.prototype.extend=function(t,r){this.commands[t]=r},e.prototype.update=function(t,r){var n=this,i=typeof r=="function"?{$apply:r}:r;Array.isArray(t)&&Array.isArray(i)||pn(!Array.isArray(i),function(){return"update(): You provided an invalid spec to update(). The spec may not contain an array except as the value of $set, $push, $unshift, $splice or any custom command allowing an array value."}),pn(typeof i=="object"&&i!==null,function(){return"update(): You provided an invalid spec to update(). The spec and every included key path must be plain objects containing one of the "+("following commands: "+Object.keys(n.commands).join(", ")+".")});var a=t;return Rl(i).forEach(function(o){if(Ol.call(n.commands,o)){var s=t===a;a=n.commands[o](i[o],a,i,t),s&&n.isEquals(a,t)&&(a=t)}else{var u=Pr(t)==="Map"?n.update(t.get(o),i[o]):n.update(t[o],i[o]),l=Pr(a)==="Map"?a.get(o):a[o];(!n.isEquals(u,l)||typeof u=="undefined"&&!Ol.call(t,o))&&(a===t&&(a=dr(t)),Pr(a)==="Map"?a.set(o,u):a[o]=u)}}),a},e}();An.Context=mp;var Nk={$push:function(e,t,r){return gp(t,r,"$push"),e.length?t.concat(e):t},$unshift:function(e,t,r){return gp(t,r,"$unshift"),e.length?e.concat(t):t},$splice:function(e,t,r,n){return Ok(t,r),e.forEach(function(i){vp(i),t===n&&i.length&&(t=dr(n)),Pk.apply(t,i)}),t},$set:function(e,t,r){return Hk(r),e},$toggle:function(e,t){ta(e,"$toggle");var r=e.length?dr(t):t;return e.forEach(function(n){r[n]=!t[n]}),r},$unset:function(e,t,r,n){return ta(e,"$unset"),e.forEach(function(i){Object.hasOwnProperty.call(t,i)&&(t===n&&(t=dr(n)),delete t[i])}),t},$add:function(e,t,r,n){return yp(t,"$add"),ta(e,"$add"),Pr(t)==="Map"?e.forEach(function(i){var a=i[0],o=i[1];t===n&&t.get(a)!==o&&(t=dr(n)),t.set(a,o)}):e.forEach(function(i){t===n&&!t.has(i)&&(t=dr(n)),t.add(i)}),t},$remove:function(e,t,r,n){return yp(t,"$remove"),ta(e,"$remove"),e.forEach(function(i){t===n&&t.has(i)&&(t=dr(n)),t.delete(i)}),t},$merge:function(e,t,r,n){return Bk(t,e),Rl(e).forEach(function(i){e[i]!==t[i]&&(t===n&&(t=dr(n)),t[i]=e[i])}),t},$apply:function(e,t){return Rk(e),e(t)}},Hl=new mp;An.isEquals=Hl.update.isEquals;An.extend=Hl.extend;An.default=Hl.update;An.default.default=bp.exports=mo(An.default,An);function gp(e,t,r){pn(Array.isArray(e),function(){return"update(): expected target of "+_n(r)+" to be an array; got "+_n(e)+"."}),ta(t[r],r)}function ta(e,t){pn(Array.isArray(e),function(){return"update(): expected spec of "+_n(t)+" to be an array; got "+_n(e)+". Did you forget to wrap your parameter in an array?"})}function Ok(e,t){pn(Array.isArray(e),function(){return"Expected $splice target to be an array; got "+_n(e)}),vp(t.$splice)}function vp(e){pn(Array.isArray(e),function(){return"update(): expected spec of $splice to be an array of arrays; got "+_n(e)+". Did you forget to wrap your parameters in an array?"})}function Rk(e){pn(typeof e=="function",function(){return"update(): expected spec of $apply to be a function; got "+_n(e)+"."})}function Hk(e){pn(Object.keys(e).length===1,function(){return"Cannot have more than one key in an object with $set"})}function Bk(e,t){pn(t&&typeof t=="object",function(){return"update(): $merge expects a spec of type 'object'; got "+_n(t)}),pn(e&&typeof e=="object",function(){return"update(): $merge expects a target of type 'object'; got "+_n(e)})}function yp(e,t){var r=Pr(e);pn(r==="Map"||r==="Set",function(){return"update(): "+_n(t)+" expects a target of type Set or Map; got "+_n(r)})}});var xp=pt((eM,kp)=>{m();"use strict";var Kk=function(t){return $k(t)&&!Uk(t)};function $k(e){return!!e&&typeof e=="object"}function Uk(e){var t=Object.prototype.toString.call(e);return t==="[object RegExp]"||t==="[object Date]"||zk(e)}var Vk=typeof Symbol=="function"&&Symbol.for,Wk=Vk?Symbol.for("react.element"):60103;function zk(e){return e.$$typeof===Wk}function jk(e){return Array.isArray(e)?[]:{}}function na(e,t){return t.clone!==!1&&t.isMergeableObject(e)?li(jk(e),e,t):e}function qk(e,t,r){return e.concat(t).map(function(n){return na(n,r)})}function Yk(e,t){if(!t.customMerge)return li;var r=t.customMerge(e);return typeof r=="function"?r:li}function Jk(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return e.propertyIsEnumerable(t)}):[]}function wp(e){return Object.keys(e).concat(Jk(e))}function Ep(e,t){try{return t in e}catch(r){return!1}}function Gk(e,t){return Ep(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function Qk(e,t,r){var n={};return r.isMergeableObject(e)&&wp(e).forEach(function(i){n[i]=na(e[i],r)}),wp(t).forEach(function(i){Gk(e,i)||(Ep(e,i)&&r.isMergeableObject(t[i])?n[i]=Yk(i,r)(e[i],t[i],r):n[i]=na(t[i],r))}),n}function li(e,t,r){r=r||{},r.arrayMerge=r.arrayMerge||qk,r.isMergeableObject=r.isMergeableObject||Kk,r.cloneUnlessOtherwiseSpecified=na;var n=Array.isArray(t),i=Array.isArray(e),a=n===i;return a?n?r.arrayMerge(e,t,r):Qk(e,t,r):na(t,r)}li.all=function(t,r){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(n,i){return li(n,i,r)},{})};var Xk=li;kp.exports=Xk});var _o=pt(it=>{m();"use strict";var Jl=32;it.INT_BITS=Jl;it.INT_MAX=2147483647;it.INT_MIN=-1<0)-(e<0)};it.abs=function(e){var t=e>>Jl-1;return(e^t)-t};it.min=function(e,t){return t^(e^t)&-(e65535)<<4,e>>>=t,r=(e>255)<<3,e>>>=r,t|=r,r=(e>15)<<2,e>>>=r,t|=r,r=(e>3)<<1,e>>>=r,t|=r,t|e>>1};it.log10=function(e){return e>=1e9?9:e>=1e8?8:e>=1e7?7:e>=1e6?6:e>=1e5?5:e>=1e4?4:e>=1e3?3:e>=100?2:e>=10?1:0};it.popCount=function(e){return e=e-(e>>>1&1431655765),e=(e&858993459)+(e>>>2&858993459),(e+(e>>>4)&252645135)*16843009>>>24};function Hp(e){var t=32;return e&=-e,e&&t--,e&65535&&(t-=16),e&16711935&&(t-=8),e&252645135&&(t-=4),e&858993459&&(t-=2),e&1431655765&&(t-=1),t}it.countTrailingZeros=Hp;it.nextPow2=function(e){return e+=e===0,--e,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e+1};it.prevPow2=function(e){return e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e-(e>>>1)};it.parity=function(e){return e^=e>>>16,e^=e>>>8,e^=e>>>4,e&=15,27030>>>e&1};var ca=new Array(256);(function(e){for(var t=0;t<256;++t){var r=t,n=t,i=7;for(r>>>=1;r;r>>>=1)n<<=1,n|=r&1,--i;e[t]=n<>>8&255]<<16|ca[e>>>16&255]<<8|ca[e>>>24&255]};it.interleave2=function(e,t){return e&=65535,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t&=65535,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1};it.deinterleave2=function(e,t){return e=e>>>t&1431655765,e=(e|e>>>1)&858993459,e=(e|e>>>2)&252645135,e=(e|e>>>4)&16711935,e=(e|e>>>16)&65535,e<<16>>16};it.interleave3=function(e,t,r){return e&=1023,e=(e|e<<16)&4278190335,e=(e|e<<8)&251719695,e=(e|e<<4)&3272356035,e=(e|e<<2)&1227133513,t&=1023,t=(t|t<<16)&4278190335,t=(t|t<<8)&251719695,t=(t|t<<4)&3272356035,t=(t|t<<2)&1227133513,e|=t<<1,r&=1023,r=(r|r<<16)&4278190335,r=(r|r<<8)&251719695,r=(r|r<<4)&3272356035,r=(r|r<<2)&1227133513,e|r<<2};it.deinterleave3=function(e,t){return e=e>>>t&1227133513,e=(e|e>>>2)&3272356035,e=(e|e>>>4)&251719695,e=(e|e>>>8)&4278190335,e=(e|e>>>16)&1023,e<<22>>22};it.nextCombination=function(e){var t=e|e-1;return t+1|(~t&-~t)-1>>>Hp(e)+1}});var $p=pt((PM,Kp)=>{m();"use strict";function Bp(e,t,r){var n=e[r]|0;if(n<=0)return[];var i=new Array(n),a;if(r===e.length-1)for(a=0;a0)return cx(e|0,t);break;case"object":if(typeof e.length=="number")return Bp(e,t,0);break}return[]}Kp.exports=ux});var sh={};qi(sh,{Buffer:()=>ne,INSPECT_MAX_BYTES:()=>jp,SlowBuffer:()=>Ex,isBuffer:()=>ah,kMaxLength:()=>gx});function Up(){Gl=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,r=e.length;t0)throw new Error("Invalid string. Length must be a multiple of 4");a=e[s-2]==="="?2:e[s-1]==="="?1:0,o=new dx(s*3/4-a),n=a>0?s-4:s;var u=0;for(t=0,r=0;t>16&255,o[u++]=i>>8&255,o[u++]=i&255;return a===2?(i=hn[e.charCodeAt(t)]<<2|hn[e.charCodeAt(t+1)]>>4,o[u++]=i&255):a===1&&(i=hn[e.charCodeAt(t)]<<10|hn[e.charCodeAt(t+1)]<<4|hn[e.charCodeAt(t+2)]>>2,o[u++]=i>>8&255,o[u++]=i&255),o}function px(e){return Fn[e>>18&63]+Fn[e>>12&63]+Fn[e>>6&63]+Fn[e&63]}function hx(e,t,r){for(var n,i=[],a=t;au?u:s+o));return n===1?(t=e[r-1],i+=Fn[t>>2],i+=Fn[t<<4&63],i+="=="):n===2&&(t=(e[r-2]<<8)+e[r-1],i+=Fn[t>>10],i+=Fn[t>>4&63],i+=Fn[t<<2&63],i+="="),a.push(i),a.join("")}function Co(e,t,r,n,i){var a,o,s=i*8-n-1,u=(1<>1,c=-7,d=r?i-1:0,f=r?-1:1,p=e[t+d];for(d+=f,a=p&(1<<-c)-1,p>>=-c,c+=s;c>0;a=a*256+e[t+d],d+=f,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=n;c>0;o=o*256+e[t+d],d+=f,c-=8);if(a===0)a=1-l;else{if(a===u)return o?NaN:(p?-1:1)*(1/0);o=o+Math.pow(2,n),a=a-l}return(p?-1:1)*o*Math.pow(2,a-n)}function Wp(e,t,r,n,i,a){var o,s,u,l=a*8-i-1,c=(1<>1,f=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,g=n?1:-1,y=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=c):(o=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-o))<1&&(o--,u*=2),o+d>=1?t+=f/u:t+=f*Math.pow(2,1-d),t*u>=2&&(o++,u/=2),o+d>=c?(s=0,o=c):o+d>=1?(s=(t*u-1)*Math.pow(2,i),o=o+d):(s=t*Math.pow(2,d-1)*Math.pow(2,i),o=0));i>=8;e[r+p]=s&255,p+=g,s/=256,i-=8);for(o=o<0;e[r+p]=o&255,p+=g,o/=256,l-=8);e[r+p-g]|=y*128}function Do(){return ne.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function zn(e,t){if(Do()=Do())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Do().toString(16)+" bytes");return e|0}function Ex(e){return+e!=e&&(e=0),ne.alloc(+e)}function Nn(e){return!!(e!=null&&e._isBuffer)}function Jp(e,t){if(Nn(e))return e.length;if(typeof ArrayBuffer!="undefined"&&typeof ArrayBuffer.isView=="function"&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;typeof e!="string"&&(e=""+e);var r=e.length;if(r===0)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return Io(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return ih(e).length;default:if(n)return Io(e).length;t=(""+t).toLowerCase(),n=!0}}function kx(e,t,r){var n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,t>>>=0,r<=t))return"";for(e||(e="utf8");;)switch(e){case"hex":return Lx(this,t,r);case"utf8":case"utf-8":return Zp(this,t,r);case"ascii":return Ix(this,t,r);case"latin1":case"binary":return Ax(this,t,r);case"base64":return Tx(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Px(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function Or(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function Gp(e,t,r,n,i){if(e.length===0)return-1;if(typeof r=="string"?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0)if(i)r=0;else return-1;if(typeof t=="string"&&(t=ne.from(t,n)),Nn(t))return t.length===0?-1:Qp(e,t,r,n,i);if(typeof t=="number")return t=t&255,ne.TYPED_ARRAY_SUPPORT&&typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):Qp(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function Qp(e,t,r,n,i){var a=1,o=e.length,s=t.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;a=2,o/=2,s/=2,r/=2}function u(p,g){return a===1?p[g]:p.readUInt16BE(g*a)}var l;if(i){var c=-1;for(l=r;lo&&(r=o-s),l=r;l>=0;l--){for(var d=!0,f=0;fi&&(n=i)):n=i;var a=t.length;if(a%2!=0)throw new TypeError("Invalid hex string");n>a/2&&(n=a/2);for(var o=0;o239?4:a>223?3:a>191?2:1;if(i+s<=r){var u,l,c,d;switch(s){case 1:a<128&&(o=a);break;case 2:u=e[i+1],(u&192)==128&&(d=(a&31)<<6|u&63,d>127&&(o=d));break;case 3:u=e[i+1],l=e[i+2],(u&192)==128&&(l&192)==128&&(d=(a&15)<<12|(u&63)<<6|l&63,d>2047&&(d<55296||d>57343)&&(o=d));break;case 4:u=e[i+1],l=e[i+2],c=e[i+3],(u&192)==128&&(l&192)==128&&(c&192)==128&&(d=(a&15)<<18|(u&63)<<12|(l&63)<<6|c&63,d>65535&&d<1114112&&(o=d))}}o===null?(o=65533,s=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|o&1023),n.push(o),i+=s}return Mx(n)}function Mx(e){var t=e.length;if(t<=eh)return String.fromCharCode.apply(String,e);for(var r="",n=0;nn)&&(r=n);for(var i="",a=t;ar)throw new RangeError("Trying to access beyond buffer length")}function Zt(e,t,r,n,i,a){if(!Nn(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function To(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,a=Math.min(e.length-r,2);i>>(n?i:1-i)*8}function Mo(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,a=Math.min(e.length-r,4);i>>(n?i:3-i)*8&255}function th(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function nh(e,t,r,n,i){return i||th(e,t,r,4),Wp(e,t,r,n,23,4),r+4}function rh(e,t,r,n,i){return i||th(e,t,r,8),Wp(e,t,r,n,52,8),r+8}function Nx(e){if(e=Ox(e).replace(Fx,""),e.length<2)return"";for(;e.length%4!=0;)e=e+"=";return e}function Ox(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function Rx(e){return e<16?"0"+e.toString(16):e.toString(16)}function Io(e,t){t=t||1/0;for(var r,n=e.length,i=null,a=[],o=0;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}else if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,r&63|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return a}function Hx(e){for(var t=[],r=0;r>8,i=r%256,a.push(i),a.push(n);return a}function ih(e){return fx(Nx(e))}function Ao(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function Kx(e){return e!==e}function ah(e){return e!=null&&(!!e._isBuffer||oh(e)||$x(e))}function oh(e){return!!e.constructor&&typeof e.constructor.isBuffer=="function"&&e.constructor.isBuffer(e)}function $x(e){return typeof e.readFloatLE=="function"&&typeof e.slice=="function"&&oh(e.slice(0,0))}var Fn,hn,dx,Gl,mx,zp,jp,gx,eh,Fx,lh=Dl(()=>{m();Fn=[],hn=[],dx=typeof Uint8Array!="undefined"?Uint8Array:Array,Gl=!1;mx={}.toString,zp=Array.isArray||function(e){return mx.call(e)=="[object Array]"};jp=50;ne.TYPED_ARRAY_SUPPORT=window.TYPED_ARRAY_SUPPORT!==void 0?window.TYPED_ARRAY_SUPPORT:!0;gx=Do();ne.poolSize=8192;ne._augment=function(e){return e.__proto__=ne.prototype,e};ne.from=function(e,t,r){return qp(null,e,t,r)};ne.TYPED_ARRAY_SUPPORT&&(ne.prototype.__proto__=Uint8Array.prototype,ne.__proto__=Uint8Array);ne.alloc=function(e,t,r){return vx(null,e,t,r)};ne.allocUnsafe=function(e){return Ql(null,e)};ne.allocUnsafeSlow=function(e){return Ql(null,e)};ne.isBuffer=ah;ne.compare=function(t,r){if(!Nn(t)||!Nn(r))throw new TypeError("Arguments must be Buffers");if(t===r)return 0;for(var n=t.length,i=r.length,a=0,o=Math.min(n,i);a0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""};ne.prototype.compare=function(t,r,n,i,a){if(!Nn(t))throw new TypeError("Argument must be a Buffer");if(r===void 0&&(r=0),n===void 0&&(n=t?t.length:0),i===void 0&&(i=0),a===void 0&&(a=this.length),r<0||n>t.length||i<0||a>this.length)throw new RangeError("out of range index");if(i>=a&&r>=n)return 0;if(i>=a)return-1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,a>>>=0,this===t)return 0;for(var o=a-i,s=n-r,u=Math.min(o,s),l=this.slice(i,a),c=t.slice(r,n),d=0;da)&&(n=a),t.length>0&&(n<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var o=!1;;)switch(i){case"hex":return xx(this,t,r,n);case"utf8":case"utf-8":return Sx(this,t,r,n);case"ascii":return Xp(this,t,r,n);case"latin1":case"binary":return _x(this,t,r,n);case"base64":return Cx(this,t,r,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Dx(this,t,r,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}};ne.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};eh=4096;ne.prototype.slice=function(t,r){var n=this.length;t=~~t,r=r===void 0?n:~~r,t<0?(t+=n,t<0&&(t=0)):t>n&&(t=n),r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),r0&&(a*=256);)i+=this[t+--r]*a;return i};ne.prototype.readUInt8=function(t,r){return r||St(t,1,this.length),this[t]};ne.prototype.readUInt16LE=function(t,r){return r||St(t,2,this.length),this[t]|this[t+1]<<8};ne.prototype.readUInt16BE=function(t,r){return r||St(t,2,this.length),this[t]<<8|this[t+1]};ne.prototype.readUInt32LE=function(t,r){return r||St(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+this[t+3]*16777216};ne.prototype.readUInt32BE=function(t,r){return r||St(t,4,this.length),this[t]*16777216+(this[t+1]<<16|this[t+2]<<8|this[t+3])};ne.prototype.readIntLE=function(t,r,n){t=t|0,r=r|0,n||St(t,r,this.length);for(var i=this[t],a=1,o=0;++o=a&&(i-=Math.pow(2,8*r)),i};ne.prototype.readIntBE=function(t,r,n){t=t|0,r=r|0,n||St(t,r,this.length);for(var i=r,a=1,o=this[t+--i];i>0&&(a*=256);)o+=this[t+--i]*a;return a*=128,o>=a&&(o-=Math.pow(2,8*r)),o};ne.prototype.readInt8=function(t,r){return r||St(t,1,this.length),this[t]&128?(255-this[t]+1)*-1:this[t]};ne.prototype.readInt16LE=function(t,r){r||St(t,2,this.length);var n=this[t]|this[t+1]<<8;return n&32768?n|4294901760:n};ne.prototype.readInt16BE=function(t,r){r||St(t,2,this.length);var n=this[t+1]|this[t]<<8;return n&32768?n|4294901760:n};ne.prototype.readInt32LE=function(t,r){return r||St(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24};ne.prototype.readInt32BE=function(t,r){return r||St(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]};ne.prototype.readFloatLE=function(t,r){return r||St(t,4,this.length),Co(this,t,!0,23,4)};ne.prototype.readFloatBE=function(t,r){return r||St(t,4,this.length),Co(this,t,!1,23,4)};ne.prototype.readDoubleLE=function(t,r){return r||St(t,8,this.length),Co(this,t,!0,52,8)};ne.prototype.readDoubleBE=function(t,r){return r||St(t,8,this.length),Co(this,t,!1,52,8)};ne.prototype.writeUIntLE=function(t,r,n,i){if(t=+t,r=r|0,n=n|0,!i){var a=Math.pow(2,8*n)-1;Zt(this,t,r,n,a,0)}var o=1,s=0;for(this[r]=t&255;++s=0&&(s*=256);)this[r+o]=t/s&255;return r+n};ne.prototype.writeUInt8=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,1,255,0),ne.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[r]=t&255,r+1};ne.prototype.writeUInt16LE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,2,65535,0),ne.TYPED_ARRAY_SUPPORT?(this[r]=t&255,this[r+1]=t>>>8):To(this,t,r,!0),r+2};ne.prototype.writeUInt16BE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,2,65535,0),ne.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=t&255):To(this,t,r,!1),r+2};ne.prototype.writeUInt32LE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,4,4294967295,0),ne.TYPED_ARRAY_SUPPORT?(this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=t&255):Mo(this,t,r,!0),r+4};ne.prototype.writeUInt32BE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,4,4294967295,0),ne.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255):Mo(this,t,r,!1),r+4};ne.prototype.writeIntLE=function(t,r,n,i){if(t=+t,r=r|0,!i){var a=Math.pow(2,8*n-1);Zt(this,t,r,n,a-1,-a)}var o=0,s=1,u=0;for(this[r]=t&255;++o>0)-u&255;return r+n};ne.prototype.writeIntBE=function(t,r,n,i){if(t=+t,r=r|0,!i){var a=Math.pow(2,8*n-1);Zt(this,t,r,n,a-1,-a)}var o=n-1,s=1,u=0;for(this[r+o]=t&255;--o>=0&&(s*=256);)t<0&&u===0&&this[r+o+1]!==0&&(u=1),this[r+o]=(t/s>>0)-u&255;return r+n};ne.prototype.writeInt8=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,1,127,-128),ne.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[r]=t&255,r+1};ne.prototype.writeInt16LE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,2,32767,-32768),ne.TYPED_ARRAY_SUPPORT?(this[r]=t&255,this[r+1]=t>>>8):To(this,t,r,!0),r+2};ne.prototype.writeInt16BE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,2,32767,-32768),ne.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=t&255):To(this,t,r,!1),r+2};ne.prototype.writeInt32LE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,4,2147483647,-2147483648),ne.TYPED_ARRAY_SUPPORT?(this[r]=t&255,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24):Mo(this,t,r,!0),r+4};ne.prototype.writeInt32BE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),ne.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255):Mo(this,t,r,!1),r+4};ne.prototype.writeFloatLE=function(t,r,n){return nh(this,t,r,!0,n)};ne.prototype.writeFloatBE=function(t,r,n){return nh(this,t,r,!1,n)};ne.prototype.writeDoubleLE=function(t,r,n){return rh(this,t,r,!0,n)};ne.prototype.writeDoubleBE=function(t,r,n){return rh(this,t,r,!1,n)};ne.prototype.copy=function(t,r,n,i){if(n||(n=0),!i&&i!==0&&(i=this.length),r>=t.length&&(r=t.length),r||(r=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-r=0;--o)t[o+r]=this[o+n];else if(a<1e3||!ne.TYPED_ARRAY_SUPPORT)for(o=0;o>>0,n=n===void 0?this.length:n>>>0,t||(t=0);var o;if(typeof t=="number")for(o=r;o{m();var Rr=(lh(),sh);if(Rr&&Rr.default){Lo.exports=Rr.default;for(let e in Rr)Lo.exports[e]=Rr[e]}else Rr&&(Lo.exports=Rr)});var No=pt(He=>{m();"use strict";var vr=_o(),It=$p(),uh=ch().Buffer;window.__TYPEDARRAY_POOL||(window.__TYPEDARRAY_POOL={UINT8:It([32,0]),UINT16:It([32,0]),UINT32:It([32,0]),BIGUINT64:It([32,0]),INT8:It([32,0]),INT16:It([32,0]),INT32:It([32,0]),BIGINT64:It([32,0]),FLOAT:It([32,0]),DOUBLE:It([32,0]),DATA:It([32,0]),UINT8C:It([32,0]),BUFFER:It([32,0])});var Ux=typeof Uint8ClampedArray!="undefined",Vx=typeof BigUint64Array!="undefined",Wx=typeof BigInt64Array!="undefined",lt=window.__TYPEDARRAY_POOL;lt.UINT8C||(lt.UINT8C=It([32,0]));lt.BIGUINT64||(lt.BIGUINT64=It([32,0]));lt.BIGINT64||(lt.BIGINT64=It([32,0]));lt.BUFFER||(lt.BUFFER=It([32,0]));var Po=lt.DATA,Fo=lt.BUFFER;He.free=function(t){if(uh.isBuffer(t))Fo[vr.log2(t.length)].push(t);else{if(Object.prototype.toString.call(t)!=="[object ArrayBuffer]"&&(t=t.buffer),!t)return;var r=t.length||t.byteLength,n=vr.log2(r)|0;Po[n].push(t)}};function dh(e){if(!!e){var t=e.length||e.byteLength,r=vr.log2(t);Po[r].push(e)}}function zx(e){dh(e.buffer)}He.freeUint8=He.freeUint16=He.freeUint32=He.freeBigUint64=He.freeInt8=He.freeInt16=He.freeInt32=He.freeBigInt64=He.freeFloat32=He.freeFloat=He.freeFloat64=He.freeDouble=He.freeUint8Clamped=He.freeDataView=zx;He.freeArrayBuffer=dh;He.freeBuffer=function(t){Fo[vr.log2(t.length)].push(t)};He.malloc=function(t,r){if(r===void 0||r==="arraybuffer")return en(t);switch(r){case"uint8":return ec(t);case"uint16":return fh(t);case"uint32":return ph(t);case"int8":return hh(t);case"int16":return mh(t);case"int32":return gh(t);case"float":case"float32":return vh(t);case"double":case"float64":return yh(t);case"uint8_clamped":return bh(t);case"bigint64":return Eh(t);case"biguint64":return wh(t);case"buffer":return xh(t);case"data":case"dataview":return kh(t);default:return null}return null};function en(e){var e=vr.nextPow2(e),t=vr.log2(e),r=Po[t];return r.length>0?r.pop():new ArrayBuffer(e)}He.mallocArrayBuffer=en;function ec(e){return new Uint8Array(en(e),0,e)}He.mallocUint8=ec;function fh(e){return new Uint16Array(en(2*e),0,e)}He.mallocUint16=fh;function ph(e){return new Uint32Array(en(4*e),0,e)}He.mallocUint32=ph;function hh(e){return new Int8Array(en(e),0,e)}He.mallocInt8=hh;function mh(e){return new Int16Array(en(2*e),0,e)}He.mallocInt16=mh;function gh(e){return new Int32Array(en(4*e),0,e)}He.mallocInt32=gh;function vh(e){return new Float32Array(en(4*e),0,e)}He.mallocFloat32=He.mallocFloat=vh;function yh(e){return new Float64Array(en(8*e),0,e)}He.mallocFloat64=He.mallocDouble=yh;function bh(e){return Ux?new Uint8ClampedArray(en(e),0,e):ec(e)}He.mallocUint8Clamped=bh;function wh(e){return Vx?new BigUint64Array(en(8*e),0,e):null}He.mallocBigUint64=wh;function Eh(e){return Wx?new BigInt64Array(en(8*e),0,e):null}He.mallocBigInt64=Eh;function kh(e){return new DataView(en(e),0,e)}He.mallocDataView=kh;function xh(e){e=vr.nextPow2(e);var t=vr.log2(e),r=Fo[t];return r.length>0?r.pop():new uh(e)}He.mallocBuffer=xh;He.clearCache=function(){for(var t=0;t<32;++t)lt.UINT8[t].length=0,lt.UINT16[t].length=0,lt.UINT32[t].length=0,lt.INT8[t].length=0,lt.INT16[t].length=0,lt.INT32[t].length=0,lt.FLOAT[t].length=0,lt.DOUBLE[t].length=0,lt.BIGUINT64[t].length=0,lt.BIGINT64[t].length=0,lt.UINT8C[t].length=0,Po[t].length=0,Fo[t].length=0}});var Th=pt((OM,Dh)=>{m();"use strict";Dh.exports=jx;var Oo=32;function jx(e,t){t<=4*Oo?Ro(0,t-1,e):Bo(0,t-1,e)}function Ro(e,t,r){for(var n=2*(e+1),i=e+1;i<=t;++i){for(var a=r[n++],o=r[n++],s=i,u=n-2;s-- >e;){var l=r[u-2],c=r[u-1];if(lr[t+1]:!0}function Ho(e,t,r,n){e*=2;var i=n[e];return i>1,s=o-n,u=o+n,l=i,c=s,d=o,f=u,p=a,g=e+1,y=t-1,b=0;jn(l,c,r)&&(b=l,l=c,c=b),jn(f,p,r)&&(b=f,f=p,p=b),jn(l,d,r)&&(b=l,l=d,d=b),jn(c,d,r)&&(b=c,c=d,d=b),jn(l,f,r)&&(b=l,l=f,f=b),jn(d,f,r)&&(b=d,d=f,f=b),jn(c,p,r)&&(b=c,c=p,p=b),jn(c,d,r)&&(b=c,c=d,d=b),jn(f,p,r)&&(b=f,f=p,p=b);for(var x=r[2*c],T=r[2*c+1],C=r[2*f],A=r[2*f+1],H=2*l,D=2*d,K=2*p,z=2*i,U=2*o,Z=2*a,J=0;J<2;++J){var se=r[H+J],G=r[D+J],Q=r[K+J];r[z+J]=se,r[U+J]=G,r[Z+J]=Q}_h(s,e,r),_h(u,t,r);for(var ie=g;ie<=y;++ie)if(Ho(ie,x,T,r))ie!==g&&Sh(ie,g,r),++g;else if(!Ho(ie,C,A,r))for(;;)if(Ho(y,C,A,r)){Ho(y,x,T,r)?(qx(ie,g,y,r),++g,--y):(Sh(ie,y,r),--y);break}else{if(--y{m();"use strict";Mh.exports={init:Jx,sweepBipartite:Gx,sweepComplete:Qx,scanBipartite:Xx,scanComplete:Zx};var ct=No(),Yx=_o(),Ko=Th(),sn=1<<28,Hr=1024,At=ct.mallocInt32(Hr),qn=ct.mallocInt32(Hr),Yn=ct.mallocInt32(Hr),Br=ct.mallocInt32(Hr),fi=ct.mallocInt32(Hr),ua=ct.mallocInt32(Hr),De=ct.mallocDouble(Hr*8);function Jx(e){var t=Yx.nextPow2(e);At.length>>1;Ko(De,T);for(var C=0,A=0,g=0;g=sn)H=H-sn|0,pi(Yn,Br,A--,H);else if(H>=0)pi(At,qn,C--,H);else if(H<=-sn){H=-H-sn|0;for(var D=0;D>>1;Ko(De,T);for(var C=0,A=0,H=0,g=0;g>1==De[2*g+3]>>1&&(K=2,g+=1),D<0){for(var z=-(D>>1)-1,U=0;U>1)-1;K===0?pi(At,qn,C--,z):K===1?pi(Yn,Br,A--,z):K===2&&pi(fi,ua,H--,z)}}}function Xx(e,t,r,n,i,a,o,s,u,l,c,d){var f=0,p=2*e,g=t,y=t+e,b=1,x=1;n?x=sn:b=sn;for(var T=i;T>>1;Ko(De,D);for(var K=0,T=0;T=sn?(U=!n,C-=sn):(U=!!n,C-=1),U)hi(At,qn,K++,C);else{var Z=d[C],J=p*C,se=c[J+t+1],G=c[J+t+1+e];e:for(var Q=0;Q>>1;Ko(De,C);for(var A=0,y=0;y=sn)At[A++]=b-sn;else{b-=1;var D=c[b],K=f*b,z=l[K+t+1],U=l[K+t+1+e];e:for(var Z=0;Z=0;--Z)if(At[Z]===b){for(var Q=Z+1;Q{m();"use strict";var Kr="d",mi="ax",Ih="vv",nc="fp",da="es",$o="rs",rc="re",fa="rb",Ah="ri",gi="rp",Uo="bs",ic="be",pa="bb",Lh="bi",vi="bp",ac="rv",oc="Q",sc=[Kr,mi,Ih,$o,rc,fa,Ah,Uo,ic,pa,Lh];function e0(e,t,r){var n="bruteForce"+(e?"Red":"Blue")+(t?"Flip":"")+(r?"Full":""),i=["function ",n,"(",sc.join(),"){","var ",da,"=2*",Kr,";"],a="for(var i="+$o+","+gi+"="+da+"*"+$o+";i<"+rc+";++i,"+gi+"+="+da+"){var x0="+fa+"["+mi+"+"+gi+"],x1="+fa+"["+mi+"+"+gi+"+"+Kr+"],xi="+Ah+"[i];",o="for(var j="+Uo+","+vi+"="+da+"*"+Uo+";j<"+ic+";++j,"+vi+"+="+da+"){var y0="+pa+"["+mi+"+"+vi+"],"+(r?"y1="+pa+"["+mi+"+"+vi+"+"+Kr+"],":"")+"yi="+Lh+"[j];";return e?i.push(a,oc,":",o):i.push(o,oc,":",a),r?i.push("if(y1"+ic+"-"+Uo+"){"),e?(a(!0,!1),i.push("}else{"),a(!1,!1)):(i.push("if("+nc+"){"),a(!0,!0),i.push("}else{"),a(!0,!1),i.push("}}else{if("+nc+"){"),a(!1,!0),i.push("}else{"),a(!1,!1),i.push("}")),i.push("}}return "+t);var o=r.join("")+i.join(""),s=new Function(o);return s()}lc.partial=Ph(!1);lc.full=Ph(!0)});var cc=pt((BM,Nh)=>{m();"use strict";Nh.exports=n0;var t0="for(var j=2*a,k=j*c,l=k,m=c,n=b,o=a+b,p=c;d>p;++p,k+=j){var _;if($)if(m===p)m+=1,l+=j;else{for(var s=0;j>s;++s){var t=e[k+s];e[k+s]=e[l],e[l++]=t}var u=f[p];f[p]=f[m],f[m++]=u}}return m";function n0(e,t){var r="abcdef".split("").concat(t),n=[];return e.indexOf("lo")>=0&&n.push("lo=e[k+n]"),e.indexOf("hi")>=0&&n.push("hi=e[k+o]"),r.push(t0.replace("_",n.join()).replace("$",e)),Function.apply(void 0,r)}});var Hh=pt((KM,Rh)=>{m();"use strict";Rh.exports=o0;var r0=cc(),Oh=r0("lor&&i[d+t]>l;--c,d-=o){for(var f=d,p=d+o,g=0;g>>1,l=2*e,c=u,d=i[l*u+t];o=b?(c=y,d=b):g>=T?(c=p,d=g):(c=x,d=T):b>=T?(c=y,d=b):T>=g?(c=p,d=g):(c=x,d=T);for(var C=l*(s-1),A=l*c,H=0;H{m();"use strict";Wh.exports=b0;var yi=No(),uc=_o(),Bh=Fh(),s0=Bh.partial,l0=Bh.full,yr=tc(),c0=Hh(),bi=cc(),Kh=128,u0=1<<22,d0=1<<22,f0=bi("!(lo>=p0)&&!(p1>=hi)",["p0","p1"]),$h=bi("lo===p0",["p0"]),p0=bi("lo0;){l-=1;var f=l*dc,p=jt[f],g=jt[f+1],y=jt[f+2],b=jt[f+3],x=jt[f+4],T=jt[f+5],C=l*fc,A=$r[C],H=$r[C+1],D=T&1,K=!!(T&16),z=i,U=a,Z=s,J=u;if(D&&(z=s,U=u,Z=i,J=a),!(T&2&&(y=p0(e,p,g,y,z,U,H),g>=y))&&!(T&4&&(g=h0(e,p,g,y,z,U,A),g>=y))){var se=y-g,G=x-b;if(K){if(e*se*(se+G){m();"use strict";Yh.exports=S0;var br=No(),Vo=tc(),w0=zh();function E0(e,t){for(var r=0;r>>1;if(!(o<=0)){var s,u=br.mallocDouble(2*o*i),l=br.mallocInt32(i);if(i=jh(e,o,u,l),i>0){if(o===1&&n)Vo.init(i),s=Vo.sweepComplete(o,r,0,i,u,l,0,i,u,l);else{var c=br.mallocDouble(2*o*a),d=br.mallocInt32(a);a=jh(t,o,c,d),a>0&&(Vo.init(i+a),o===1?s=Vo.sweepBipartite(o,r,0,i,u,l,0,a,c,d):s=w0(o,r,n,i,u,l,a,c,d),br.free(c),br.free(d))}br.free(u),br.free(l)}return s}}}var ha;function qh(e,t){ha.push([e,t])}function k0(e){return ha=[],Wo(e,e,qh,!0),ha}function x0(e,t){return ha=[],Wo(e,t,qh,!1),ha}function S0(e,t,r){var n;switch(arguments.length){case 1:return k0(e);case 2:return typeof t=="function"?Wo(e,e,t,!0):x0(e,t);case 3:return Wo(e,t,r,!1);default:throw new Error("box-intersect: Invalid arguments")}}});var vm=pt((VM,qo)=>{m();var Gh,Qh,Xh,Zh,em,tm,nm,rm,im,zo,pc,am,om,sm,wi,lm,cm,um,dm,fm,pm,hm,mm,gm,jo;(function(e){var t=typeof window=="object"?window:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(n){e(r(t,r(n)))}):typeof qo=="object"&&typeof qo.exports=="object"?e(r(t,r(qo.exports))):e(r(t));function r(n,i){return n!==t&&(typeof Object.create=="function"?Object.defineProperty(n,"__esModule",{value:!0}):n.__esModule=!0),function(a,o){return n[a]=i?i(a,o):o}}})(function(e){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])};Gh=function(n,i){if(typeof i!="function"&&i!==null)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");t(n,i);function a(){this.constructor=n}n.prototype=i===null?Object.create(i):(a.prototype=i.prototype,new a)},Qh=Object.assign||function(n){for(var i,a=1,o=arguments.length;a=0;c--)(l=n[c])&&(u=(s<3?l(u):s>3?l(i,a,u):l(i,a))||u);return s>3&&u&&Object.defineProperty(i,a,u),u},em=function(n,i){return function(a,o){i(a,o,n)}},tm=function(n,i){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,i)},nm=function(n,i,a,o){function s(u){return u instanceof a?u:new a(function(l){l(u)})}return new(a||(a=Promise))(function(u,l){function c(p){try{f(o.next(p))}catch(g){l(g)}}function d(p){try{f(o.throw(p))}catch(g){l(g)}}function f(p){p.done?u(p.value):s(p.value).then(c,d)}f((o=o.apply(n,i||[])).next())})},rm=function(n,i){var a={label:0,sent:function(){if(u[0]&1)throw u[1];return u[1]},trys:[],ops:[]},o,s,u,l;return l={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(f){return function(p){return d([f,p])}}function d(f){if(o)throw new TypeError("Generator is already executing.");for(;a;)try{if(o=1,s&&(u=f[0]&2?s.return:f[0]?s.throw||((u=s.return)&&u.call(s),0):s.next)&&!(u=u.call(s,f[1])).done)return u;switch(s=0,u&&(f=[f[0]&2,u.value]),f[0]){case 0:case 1:u=f;break;case 4:return a.label++,{value:f[1],done:!1};case 5:a.label++,s=f[1],f=[0];continue;case 7:f=a.ops.pop(),a.trys.pop();continue;default:if(u=a.trys,!(u=u.length>0&&u[u.length-1])&&(f[0]===6||f[0]===2)){a=0;continue}if(f[0]===3&&(!u||f[1]>u[0]&&f[1]=n.length&&(n=void 0),{value:n&&n[o++],done:!n}}};throw new TypeError(i?"Object is not iterable.":"Symbol.iterator is not defined.")},pc=function(n,i){var a=typeof Symbol=="function"&&n[Symbol.iterator];if(!a)return n;var o=a.call(n),s,u=[],l;try{for(;(i===void 0||i-- >0)&&!(s=o.next()).done;)u.push(s.value)}catch(c){l={error:c}}finally{try{s&&!s.done&&(a=o.return)&&a.call(o)}finally{if(l)throw l.error}}return u},am=function(){for(var n=[],i=0;i1||c(y,b)})})}function c(y,b){try{d(o[y](b))}catch(x){g(u[0][3],x)}}function d(y){y.value instanceof wi?Promise.resolve(y.value.v).then(f,p):g(u[0][2],y)}function f(y){c("next",y)}function p(y){c("throw",y)}function g(y,b){y(b),u.shift(),u.length&&c(u[0][0],u[0][1])}},cm=function(n){var i,a;return i={},o("next"),o("throw",function(s){throw s}),o("return"),i[Symbol.iterator]=function(){return this},i;function o(s,u){i[s]=n[s]?function(l){return(a=!a)?{value:wi(n[s](l)),done:s==="return"}:u?u(l):l}:u}},um=function(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=n[Symbol.asyncIterator],a;return i?i.call(n):(n=typeof zo=="function"?zo(n):n[Symbol.iterator](),a={},o("next"),o("throw"),o("return"),a[Symbol.asyncIterator]=function(){return this},a);function o(u){a[u]=n[u]&&function(l){return new Promise(function(c,d){l=n[u](l),s(c,d,l.done,l.value)})}}function s(u,l,c,d){Promise.resolve(d).then(function(f){u({value:f,done:c})},l)}},dm=function(n,i){return Object.defineProperty?Object.defineProperty(n,"raw",{value:i}):n.raw=i,n};var r=Object.create?function(n,i){Object.defineProperty(n,"default",{enumerable:!0,value:i})}:function(n,i){n.default=i};fm=function(n){if(n&&n.__esModule)return n;var i={};if(n!=null)for(var a in n)a!=="default"&&Object.prototype.hasOwnProperty.call(n,a)&&jo(i,n,a);return r(i,n),i},pm=function(n){return n&&n.__esModule?n:{default:n}},hm=function(n,i,a,o){if(a==="a"&&!o)throw new TypeError("Private accessor was defined without a getter");if(typeof i=="function"?n!==i||!o:!i.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return a==="m"?o:a==="a"?o.call(n):o?o.value:i.get(n)},mm=function(n,i,a,o,s){if(o==="m")throw new TypeError("Private method is not writable");if(o==="a"&&!s)throw new TypeError("Private accessor was defined without a setter");if(typeof i=="function"?n!==i||!s:!i.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return o==="a"?s.call(n,a):s?s.value=a:i.set(n,a),a},gm=function(n,i){if(i===null||typeof i!="object"&&typeof i!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof n=="function"?i===n:n.has(i)},e("__extends",Gh),e("__assign",Qh),e("__rest",Xh),e("__decorate",Zh),e("__param",em),e("__metadata",tm),e("__awaiter",nm),e("__generator",rm),e("__exportStar",im),e("__createBinding",jo),e("__values",zo),e("__read",pc),e("__spread",am),e("__spreadArrays",om),e("__spreadArray",sm),e("__await",wi),e("__asyncGenerator",lm),e("__asyncDelegator",cm),e("__asyncValues",um),e("__makeTemplateObject",dm),e("__importStar",fm),e("__importDefault",pm),e("__classPrivateFieldGet",hm),e("__classPrivateFieldSet",mm),e("__classPrivateFieldIn",gm)})});var yc=pt(Pe=>{m();"use strict";Object.defineProperty(Pe,"__esModule",{value:!0});var nt=require("obsidian"),gc="YYYY-MM-DD",vc="gggg-[W]ww",Sm="YYYY-MM",_m="YYYY-[Q]Q",Cm="YYYY";function ga(e){let t=window.app.plugins.getPlugin("periodic-notes");return t&&t.settings?.[e]?.enabled}function va(){try{let{internalPlugins:e,plugins:t}=window.app;if(ga("daily")){let{format:a,folder:o,template:s}=t.getPlugin("periodic-notes")?.settings?.daily||{};return{format:a||gc,folder:o?.trim()||"",template:s?.trim()||""}}let{folder:r,format:n,template:i}=e.getPluginById("daily-notes")?.instance?.options||{};return{format:n||gc,folder:r?.trim()||"",template:i?.trim()||""}}catch(e){console.info("No custom daily note settings found!",e)}}function ya(){try{let e=window.app.plugins,t=e.getPlugin("calendar")?.options,r=e.getPlugin("periodic-notes")?.settings?.weekly;if(ga("weekly"))return{format:r.format||vc,folder:r.folder?.trim()||"",template:r.template?.trim()||""};let n=t||{};return{format:n.weeklyNoteFormat||vc,folder:n.weeklyNoteFolder?.trim()||"",template:n.weeklyNoteTemplate?.trim()||""}}catch(e){console.info("No custom weekly note settings found!",e)}}function ba(){let e=window.app.plugins;try{let t=ga("monthly")&&e.getPlugin("periodic-notes")?.settings?.monthly||{};return{format:t.format||Sm,folder:t.folder?.trim()||"",template:t.template?.trim()||""}}catch(t){console.info("No custom monthly note settings found!",t)}}function wa(){let e=window.app.plugins;try{let t=ga("quarterly")&&e.getPlugin("periodic-notes")?.settings?.quarterly||{};return{format:t.format||_m,folder:t.folder?.trim()||"",template:t.template?.trim()||""}}catch(t){console.info("No custom quarterly note settings found!",t)}}function Ea(){let e=window.app.plugins;try{let t=ga("yearly")&&e.getPlugin("periodic-notes")?.settings?.yearly||{};return{format:t.format||Cm,folder:t.folder?.trim()||"",template:t.template?.trim()||""}}catch(t){console.info("No custom yearly note settings found!",t)}}function Dm(...e){let t=[];for(let n=0,i=e.length;n{let T=n(),C=e.clone().set({hour:T.get("hour"),minute:T.get("minute"),second:T.get("second")});return g&&C.add(parseInt(y,10),b),x?C.format(x.substring(1).trim()):C.format(a)}).replace(/{{\s*yesterday\s*}}/gi,e.clone().subtract(1,"day").format(a)).replace(/{{\s*tomorrow\s*}}/gi,e.clone().add(1,"d").format(a)));return t.foldManager.save(d,u),d}catch(d){console.error(`Failed to create file: '${c}'`,d),new nt.Notice("Unable to create new file.")}}function B0(e,t){return t[Dn(e,"day")]??null}function K0(){let{vault:e}=window.app,{folder:t}=va(),r=e.getAbstractFileByPath(nt.normalizePath(t));if(!r)throw new Im("Failed to find daily notes folder");let n={};return nt.Vault.recurseChildren(r,i=>{if(i instanceof nt.TFile){let a=Si(i,"day");if(a){let o=Dn(a,"day");n[o]=i}}}),n}var Lm=class extends Error{};function $0(){let{moment:e}=window,t=e.localeData()._week.dow,r=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];for(;t;)r.push(r.shift()),t--;return r}function U0(e){return $0().indexOf(e.toLowerCase())}async function Pm(e){let{vault:t}=window.app,{template:r,format:n,folder:i}=ya(),[a,o]=await xi(r),s=e.format(n),u=await ka(i,s);try{let l=await t.create(u,a.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(c,d,f,p,g,y)=>{let b=window.moment(),x=e.clone().set({hour:b.get("hour"),minute:b.get("minute"),second:b.get("second")});return f&&x.add(parseInt(p,10),g),y?x.format(y.substring(1).trim()):x.format(n)}).replace(/{{\s*title\s*}}/gi,s).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*(sunday|monday|tuesday|wednesday|thursday|friday|saturday)\s*:(.*?)}}/gi,(c,d,f)=>{let p=U0(d);return e.weekday(p).format(f.trim())}));return window.app.foldManager.save(l,o),l}catch(l){console.error(`Failed to create file: '${u}'`,l),new nt.Notice("Unable to create new file.")}}function V0(e,t){return t[Dn(e,"week")]??null}function W0(){let e={};if(!Hm())return e;let{vault:t}=window.app,{folder:r}=ya(),n=t.getAbstractFileByPath(nt.normalizePath(r));if(!n)throw new Lm("Failed to find weekly notes folder");return nt.Vault.recurseChildren(n,i=>{if(i instanceof nt.TFile){let a=Si(i,"week");if(a){let o=Dn(a,"week");e[o]=i}}}),e}var Fm=class extends Error{};async function Nm(e){let{vault:t}=window.app,{template:r,format:n,folder:i}=ba(),[a,o]=await xi(r),s=e.format(n),u=await ka(i,s);try{let l=await t.create(u,a.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(c,d,f,p,g,y)=>{let b=window.moment(),x=e.clone().set({hour:b.get("hour"),minute:b.get("minute"),second:b.get("second")});return f&&x.add(parseInt(p,10),g),y?x.format(y.substring(1).trim()):x.format(n)}).replace(/{{\s*date\s*}}/gi,s).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,s));return window.app.foldManager.save(l,o),l}catch(l){console.error(`Failed to create file: '${u}'`,l),new nt.Notice("Unable to create new file.")}}function z0(e,t){return t[Dn(e,"month")]??null}function j0(){let e={};if(!Bm())return e;let{vault:t}=window.app,{folder:r}=ba(),n=t.getAbstractFileByPath(nt.normalizePath(r));if(!n)throw new Fm("Failed to find monthly notes folder");return nt.Vault.recurseChildren(n,i=>{if(i instanceof nt.TFile){let a=Si(i,"month");if(a){let o=Dn(a,"month");e[o]=i}}}),e}var Om=class extends Error{};async function q0(e){let{vault:t}=window.app,{template:r,format:n,folder:i}=wa(),[a,o]=await xi(r),s=e.format(n),u=await ka(i,s);try{let l=await t.create(u,a.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(c,d,f,p,g,y)=>{let b=window.moment(),x=e.clone().set({hour:b.get("hour"),minute:b.get("minute"),second:b.get("second")});return f&&x.add(parseInt(p,10),g),y?x.format(y.substring(1).trim()):x.format(n)}).replace(/{{\s*date\s*}}/gi,s).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,s));return window.app.foldManager.save(l,o),l}catch(l){console.error(`Failed to create file: '${u}'`,l),new nt.Notice("Unable to create new file.")}}function Y0(e,t){return t[Dn(e,"quarter")]??null}function J0(){let e={};if(!Km())return e;let{vault:t}=window.app,{folder:r}=wa(),n=t.getAbstractFileByPath(nt.normalizePath(r));if(!n)throw new Om("Failed to find quarterly notes folder");return nt.Vault.recurseChildren(n,i=>{if(i instanceof nt.TFile){let a=Si(i,"quarter");if(a){let o=Dn(a,"quarter");e[o]=i}}}),e}var Rm=class extends Error{};async function G0(e){let{vault:t}=window.app,{template:r,format:n,folder:i}=Ea(),[a,o]=await xi(r),s=e.format(n),u=await ka(i,s);try{let l=await t.create(u,a.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(c,d,f,p,g,y)=>{let b=window.moment(),x=e.clone().set({hour:b.get("hour"),minute:b.get("minute"),second:b.get("second")});return f&&x.add(parseInt(p,10),g),y?x.format(y.substring(1).trim()):x.format(n)}).replace(/{{\s*date\s*}}/gi,s).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,s));return window.app.foldManager.save(l,o),l}catch(l){console.error(`Failed to create file: '${u}'`,l),new nt.Notice("Unable to create new file.")}}function Q0(e,t){return t[Dn(e,"year")]??null}function X0(){let e={};if(!$m())return e;let{vault:t}=window.app,{folder:r}=Ea(),n=t.getAbstractFileByPath(nt.normalizePath(r));if(!n)throw new Rm("Failed to find yearly notes folder");return nt.Vault.recurseChildren(n,i=>{if(i instanceof nt.TFile){let a=Si(i,"year");if(a){let o=Dn(a,"year");e[o]=i}}}),e}function Z0(){let{app:e}=window,t=e.internalPlugins.plugins["daily-notes"];if(t&&t.enabled)return!0;let r=e.plugins.getPlugin("periodic-notes");return r&&r.settings?.daily?.enabled}function Hm(){let{app:e}=window;if(e.plugins.getPlugin("calendar"))return!0;let t=e.plugins.getPlugin("periodic-notes");return t&&t.settings?.weekly?.enabled}function Bm(){let{app:e}=window,t=e.plugins.getPlugin("periodic-notes");return t&&t.settings?.monthly?.enabled}function Km(){let{app:e}=window,t=e.plugins.getPlugin("periodic-notes");return t&&t.settings?.quarterly?.enabled}function $m(){let{app:e}=window,t=e.plugins.getPlugin("periodic-notes");return t&&t.settings?.yearly?.enabled}function eS(e){return{day:va,week:ya,month:ba,quarter:wa,year:Ea}[e]()}function tS(e,t){return{day:Am,month:Nm,week:Pm}[e](t)}Pe.DEFAULT_DAILY_NOTE_FORMAT=gc;Pe.DEFAULT_MONTHLY_NOTE_FORMAT=Sm;Pe.DEFAULT_QUARTERLY_NOTE_FORMAT=_m;Pe.DEFAULT_WEEKLY_NOTE_FORMAT=vc;Pe.DEFAULT_YEARLY_NOTE_FORMAT=Cm;Pe.appHasDailyNotesPluginLoaded=Z0;Pe.appHasMonthlyNotesPluginLoaded=Bm;Pe.appHasQuarterlyNotesPluginLoaded=Km;Pe.appHasWeeklyNotesPluginLoaded=Hm;Pe.appHasYearlyNotesPluginLoaded=$m;Pe.createDailyNote=Am;Pe.createMonthlyNote=Nm;Pe.createPeriodicNote=tS;Pe.createQuarterlyNote=q0;Pe.createWeeklyNote=Pm;Pe.createYearlyNote=G0;Pe.getAllDailyNotes=K0;Pe.getAllMonthlyNotes=j0;Pe.getAllQuarterlyNotes=J0;Pe.getAllWeeklyNotes=W0;Pe.getAllYearlyNotes=X0;Pe.getDailyNote=B0;Pe.getDailyNoteSettings=va;Pe.getDateFromFile=Si;Pe.getDateFromPath=H0;Pe.getDateUID=Dn;Pe.getMonthlyNote=z0;Pe.getMonthlyNoteSettings=ba;Pe.getPeriodicNoteSettings=eS;Pe.getQuarterlyNote=Y0;Pe.getQuarterlyNoteSettings=wa;Pe.getTemplateInfo=xi;Pe.getWeeklyNote=V0;Pe.getWeeklyNoteSettings=ya;Pe.getYearlyNote=Q0;Pe.getYearlyNoteSettings=Ea});var Ma=pt((fO,ed)=>{m();"use strict";var u_=Object.prototype.hasOwnProperty,qt="~";function Ta(){}Object.create&&(Ta.prototype=Object.create(null),new Ta().__proto__||(qt=!1));function d_(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function fy(e,t,r,n,i){if(typeof r!="function")throw new TypeError("The listener must be a function");var a=new d_(r,n||e,i),o=qt?qt+t:t;return e._events[o]?e._events[o].fn?e._events[o]=[e._events[o],a]:e._events[o].push(a):(e._events[o]=a,e._eventsCount++),e}function Cs(e,t){--e._eventsCount==0?e._events=new Ta:delete e._events[t]}function $t(){this._events=new Ta,this._eventsCount=0}$t.prototype.eventNames=function(){var t=[],r,n;if(this._eventsCount===0)return t;for(n in r=this._events)u_.call(r,n)&&t.push(qt?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(r)):t};$t.prototype.listeners=function(t){var r=qt?qt+t:t,n=this._events[r];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,a=n.length,o=new Array(a);i{m();(function(e,t){typeof pd=="object"&&typeof hd!="undefined"?hd.exports=t():typeof define=="function"&&define.amd?define(t):e.Mark=t()})(pd,function(){"use strict";var e=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(s){return typeof s}:function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},t=function(s,u){if(!(s instanceof u))throw new TypeError("Cannot call a class as a function")},r=function(){function s(u,l){for(var c=0;c1&&arguments[1]!==void 0?arguments[1]:!0,c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],d=arguments.length>3&&arguments[3]!==void 0?arguments[3]:5e3;t(this,s),this.ctx=u,this.iframes=l,this.exclude=c,this.iframesTimeout=d}return r(s,[{key:"getContexts",value:function(){var l=void 0,c=[];return typeof this.ctx=="undefined"||!this.ctx?l=[]:NodeList.prototype.isPrototypeOf(this.ctx)?l=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?l=this.ctx:typeof this.ctx=="string"?l=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):l=[this.ctx],l.forEach(function(d){var f=c.filter(function(p){return p.contains(d)}).length>0;c.indexOf(d)===-1&&!f&&c.push(d)}),c}},{key:"getIframeContents",value:function(l,c){var d=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},f=void 0;try{var p=l.contentWindow;if(f=p.document,!p||!f)throw new Error("iframe inaccessible")}catch(g){d()}f&&c(f)}},{key:"isIframeBlank",value:function(l){var c="about:blank",d=l.getAttribute("src").trim(),f=l.contentWindow.location.href;return f===c&&d!==c&&d}},{key:"observeIframeLoad",value:function(l,c,d){var f=this,p=!1,g=null,y=function b(){if(!p){p=!0,clearTimeout(g);try{f.isIframeBlank(l)||(l.removeEventListener("load",b),f.getIframeContents(l,c,d))}catch(x){d()}}};l.addEventListener("load",y),g=setTimeout(y,this.iframesTimeout)}},{key:"onIframeReady",value:function(l,c,d){try{l.contentWindow.document.readyState==="complete"?this.isIframeBlank(l)?this.observeIframeLoad(l,c,d):this.getIframeContents(l,c,d):this.observeIframeLoad(l,c,d)}catch(f){d()}}},{key:"waitForIframes",value:function(l,c){var d=this,f=0;this.forEachIframe(l,function(){return!0},function(p){f++,d.waitForIframes(p.querySelector("html"),function(){--f||c()})},function(p){p||c()})}},{key:"forEachIframe",value:function(l,c,d){var f=this,p=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){},g=l.querySelectorAll("iframe"),y=g.length,b=0;g=Array.prototype.slice.call(g);var x=function(){--y<=0&&p(b)};y||x(),g.forEach(function(T){s.matches(T,f.exclude)?x():f.onIframeReady(T,function(C){c(T)&&(b++,d(C)),x()},x)})}},{key:"createIterator",value:function(l,c,d){return document.createNodeIterator(l,c,d,!1)}},{key:"createInstanceOnIframe",value:function(l){return new s(l.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(l,c,d){var f=l.compareDocumentPosition(d),p=Node.DOCUMENT_POSITION_PRECEDING;if(f&p)if(c!==null){var g=c.compareDocumentPosition(d),y=Node.DOCUMENT_POSITION_FOLLOWING;if(g&y)return!0}else return!0;return!1}},{key:"getIteratorNode",value:function(l){var c=l.previousNode(),d=void 0;return c===null?d=l.nextNode():d=l.nextNode()&&l.nextNode(),{prevNode:c,node:d}}},{key:"checkIframeFilter",value:function(l,c,d,f){var p=!1,g=!1;return f.forEach(function(y,b){y.val===d&&(p=b,g=y.handled)}),this.compareNodeIframe(l,c,d)?(p===!1&&!g?f.push({val:d,handled:!0}):p!==!1&&!g&&(f[p].handled=!0),!0):(p===!1&&f.push({val:d,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(l,c,d,f){var p=this;l.forEach(function(g){g.handled||p.getIframeContents(g.val,function(y){p.createInstanceOnIframe(y).forEachNode(c,d,f)})})}},{key:"iterateThroughNodes",value:function(l,c,d,f,p){for(var g=this,y=this.createIterator(c,l,f),b=[],x=[],T=void 0,C=void 0,A=function(){var D=g.getIteratorNode(y);return C=D.prevNode,T=D.node,T};A();)this.iframes&&this.forEachIframe(c,function(H){return g.checkIframeFilter(T,C,H,b)},function(H){g.createInstanceOnIframe(H).forEachNode(l,function(D){return x.push(D)},f)}),x.push(T);x.forEach(function(H){d(H)}),this.iframes&&this.handleOpenIframes(b,l,d,f),p()}},{key:"forEachNode",value:function(l,c,d){var f=this,p=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){},g=this.getContexts(),y=g.length;y||p(),g.forEach(function(b){var x=function(){f.iterateThroughNodes(l,b,c,d,function(){--y<=0&&p()})};f.iframes?f.waitForIframes(b,x):x()})}}],[{key:"matches",value:function(l,c){var d=typeof c=="string"?[c]:c,f=l.matches||l.matchesSelector||l.msMatchesSelector||l.mozMatchesSelector||l.oMatchesSelector||l.webkitMatchesSelector;if(f){var p=!1;return d.every(function(g){return f.call(l,g)?(p=!0,!1):!0}),p}else return!1}}]),s}(),a=function(){function s(u){t(this,s),this.ctx=u,this.ie=!1;var l=window.navigator.userAgent;(l.indexOf("MSIE")>-1||l.indexOf("Trident")>-1)&&(this.ie=!0)}return r(s,[{key:"log",value:function(l){var c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"debug",d=this.opt.log;!this.opt.debug||(typeof d=="undefined"?"undefined":e(d))==="object"&&typeof d[c]=="function"&&d[c]("mark.js: "+l)}},{key:"escapeStr",value:function(l){return l.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(l){return this.opt.wildcards!=="disabled"&&(l=this.setupWildcardsRegExp(l)),l=this.escapeStr(l),Object.keys(this.opt.synonyms).length&&(l=this.createSynonymsRegExp(l)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(l=this.setupIgnoreJoinersRegExp(l)),this.opt.diacritics&&(l=this.createDiacriticsRegExp(l)),l=this.createMergedBlanksRegExp(l),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(l=this.createJoinersRegExp(l)),this.opt.wildcards!=="disabled"&&(l=this.createWildcardsRegExp(l)),l=this.createAccuracyRegExp(l),l}},{key:"createSynonymsRegExp",value:function(l){var c=this.opt.synonyms,d=this.opt.caseSensitive?"":"i",f=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var p in c)if(c.hasOwnProperty(p)){var g=c[p],y=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(p):this.escapeStr(p),b=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(g):this.escapeStr(g);y!==""&&b!==""&&(l=l.replace(new RegExp("("+this.escapeStr(y)+"|"+this.escapeStr(b)+")","gm"+d),f+("("+this.processSynomyms(y)+"|")+(this.processSynomyms(b)+")")+f))}return l}},{key:"processSynomyms",value:function(l){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(l=this.setupIgnoreJoinersRegExp(l)),l}},{key:"setupWildcardsRegExp",value:function(l){return l=l.replace(/(?:\\)*\?/g,function(c){return c.charAt(0)==="\\"?"?":""}),l.replace(/(?:\\)*\*/g,function(c){return c.charAt(0)==="\\"?"*":""})}},{key:"createWildcardsRegExp",value:function(l){var c=this.opt.wildcards==="withSpaces";return l.replace(/\u0001/g,c?"[\\S\\s]?":"\\S?").replace(/\u0002/g,c?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(l){return l.replace(/[^(|)\\]/g,function(c,d,f){var p=f.charAt(d+1);return/[(|)\\]/.test(p)||p===""?c:c+"\0"})}},{key:"createJoinersRegExp",value:function(l){var c=[],d=this.opt.ignorePunctuation;return Array.isArray(d)&&d.length&&c.push(this.escapeStr(d.join(""))),this.opt.ignoreJoiners&&c.push("\\u00ad\\u200b\\u200c\\u200d"),c.length?l.split(/\u0000+/).join("["+c.join("")+"]*"):l}},{key:"createDiacriticsRegExp",value:function(l){var c=this.opt.caseSensitive?"":"i",d=this.opt.caseSensitive?["a\xE0\xE1\u1EA3\xE3\u1EA1\u0103\u1EB1\u1EAF\u1EB3\u1EB5\u1EB7\xE2\u1EA7\u1EA5\u1EA9\u1EAB\u1EAD\xE4\xE5\u0101\u0105","A\xC0\xC1\u1EA2\xC3\u1EA0\u0102\u1EB0\u1EAE\u1EB2\u1EB4\u1EB6\xC2\u1EA6\u1EA4\u1EA8\u1EAA\u1EAC\xC4\xC5\u0100\u0104","c\xE7\u0107\u010D","C\xC7\u0106\u010C","d\u0111\u010F","D\u0110\u010E","e\xE8\xE9\u1EBB\u1EBD\u1EB9\xEA\u1EC1\u1EBF\u1EC3\u1EC5\u1EC7\xEB\u011B\u0113\u0119","E\xC8\xC9\u1EBA\u1EBC\u1EB8\xCA\u1EC0\u1EBE\u1EC2\u1EC4\u1EC6\xCB\u011A\u0112\u0118","i\xEC\xED\u1EC9\u0129\u1ECB\xEE\xEF\u012B","I\xCC\xCD\u1EC8\u0128\u1ECA\xCE\xCF\u012A","l\u0142","L\u0141","n\xF1\u0148\u0144","N\xD1\u0147\u0143","o\xF2\xF3\u1ECF\xF5\u1ECD\xF4\u1ED3\u1ED1\u1ED5\u1ED7\u1ED9\u01A1\u1EDF\u1EE1\u1EDB\u1EDD\u1EE3\xF6\xF8\u014D","O\xD2\xD3\u1ECE\xD5\u1ECC\xD4\u1ED2\u1ED0\u1ED4\u1ED6\u1ED8\u01A0\u1EDE\u1EE0\u1EDA\u1EDC\u1EE2\xD6\xD8\u014C","r\u0159","R\u0158","s\u0161\u015B\u0219\u015F","S\u0160\u015A\u0218\u015E","t\u0165\u021B\u0163","T\u0164\u021A\u0162","u\xF9\xFA\u1EE7\u0169\u1EE5\u01B0\u1EEB\u1EE9\u1EED\u1EEF\u1EF1\xFB\xFC\u016F\u016B","U\xD9\xDA\u1EE6\u0168\u1EE4\u01AF\u1EEA\u1EE8\u1EEC\u1EEE\u1EF0\xDB\xDC\u016E\u016A","y\xFD\u1EF3\u1EF7\u1EF9\u1EF5\xFF","Y\xDD\u1EF2\u1EF6\u1EF8\u1EF4\u0178","z\u017E\u017C\u017A","Z\u017D\u017B\u0179"]:["a\xE0\xE1\u1EA3\xE3\u1EA1\u0103\u1EB1\u1EAF\u1EB3\u1EB5\u1EB7\xE2\u1EA7\u1EA5\u1EA9\u1EAB\u1EAD\xE4\xE5\u0101\u0105A\xC0\xC1\u1EA2\xC3\u1EA0\u0102\u1EB0\u1EAE\u1EB2\u1EB4\u1EB6\xC2\u1EA6\u1EA4\u1EA8\u1EAA\u1EAC\xC4\xC5\u0100\u0104","c\xE7\u0107\u010DC\xC7\u0106\u010C","d\u0111\u010FD\u0110\u010E","e\xE8\xE9\u1EBB\u1EBD\u1EB9\xEA\u1EC1\u1EBF\u1EC3\u1EC5\u1EC7\xEB\u011B\u0113\u0119E\xC8\xC9\u1EBA\u1EBC\u1EB8\xCA\u1EC0\u1EBE\u1EC2\u1EC4\u1EC6\xCB\u011A\u0112\u0118","i\xEC\xED\u1EC9\u0129\u1ECB\xEE\xEF\u012BI\xCC\xCD\u1EC8\u0128\u1ECA\xCE\xCF\u012A","l\u0142L\u0141","n\xF1\u0148\u0144N\xD1\u0147\u0143","o\xF2\xF3\u1ECF\xF5\u1ECD\xF4\u1ED3\u1ED1\u1ED5\u1ED7\u1ED9\u01A1\u1EDF\u1EE1\u1EDB\u1EDD\u1EE3\xF6\xF8\u014DO\xD2\xD3\u1ECE\xD5\u1ECC\xD4\u1ED2\u1ED0\u1ED4\u1ED6\u1ED8\u01A0\u1EDE\u1EE0\u1EDA\u1EDC\u1EE2\xD6\xD8\u014C","r\u0159R\u0158","s\u0161\u015B\u0219\u015FS\u0160\u015A\u0218\u015E","t\u0165\u021B\u0163T\u0164\u021A\u0162","u\xF9\xFA\u1EE7\u0169\u1EE5\u01B0\u1EEB\u1EE9\u1EED\u1EEF\u1EF1\xFB\xFC\u016F\u016BU\xD9\xDA\u1EE6\u0168\u1EE4\u01AF\u1EEA\u1EE8\u1EEC\u1EEE\u1EF0\xDB\xDC\u016E\u016A","y\xFD\u1EF3\u1EF7\u1EF9\u1EF5\xFFY\xDD\u1EF2\u1EF6\u1EF8\u1EF4\u0178","z\u017E\u017C\u017AZ\u017D\u017B\u0179"],f=[];return l.split("").forEach(function(p){d.every(function(g){if(g.indexOf(p)!==-1){if(f.indexOf(g)>-1)return!1;l=l.replace(new RegExp("["+g+"]","gm"+c),"["+g+"]"),f.push(g)}return!0})}),l}},{key:"createMergedBlanksRegExp",value:function(l){return l.replace(/[\s]+/gmi,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(l){var c=this,d="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xA1\xBF",f=this.opt.accuracy,p=typeof f=="string"?f:f.value,g=typeof f=="string"?[]:f.limiters,y="";switch(g.forEach(function(b){y+="|"+c.escapeStr(b)}),p){case"partially":default:return"()("+l+")";case"complementary":return y="\\s"+(y||this.escapeStr(d)),"()([^"+y+"]*"+l+"[^"+y+"]*)";case"exactly":return"(^|\\s"+y+")("+l+")(?=$|\\s"+y+")"}}},{key:"getSeparatedKeywords",value:function(l){var c=this,d=[];return l.forEach(function(f){c.opt.separateWordSearch?f.split(" ").forEach(function(p){p.trim()&&d.indexOf(p)===-1&&d.push(p)}):f.trim()&&d.indexOf(f)===-1&&d.push(f)}),{keywords:d.sort(function(f,p){return p.length-f.length}),length:d.length}}},{key:"isNumeric",value:function(l){return Number(parseFloat(l))==l}},{key:"checkRanges",value:function(l){var c=this;if(!Array.isArray(l)||Object.prototype.toString.call(l[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(l),[];var d=[],f=0;return l.sort(function(p,g){return p.start-g.start}).forEach(function(p){var g=c.callNoMatchOnInvalidRanges(p,f),y=g.start,b=g.end,x=g.valid;x&&(p.start=y,p.length=b-y,d.push(p),f=b)}),d}},{key:"callNoMatchOnInvalidRanges",value:function(l,c){var d=void 0,f=void 0,p=!1;return l&&typeof l.start!="undefined"?(d=parseInt(l.start,10),f=d+parseInt(l.length,10),this.isNumeric(l.start)&&this.isNumeric(l.length)&&f-c>0&&f-d>0?p=!0:(this.log("Ignoring invalid or overlapping range: "+(""+JSON.stringify(l))),this.opt.noMatch(l))):(this.log("Ignoring invalid range: "+JSON.stringify(l)),this.opt.noMatch(l)),{start:d,end:f,valid:p}}},{key:"checkWhitespaceRanges",value:function(l,c,d){var f=void 0,p=!0,g=d.length,y=c-g,b=parseInt(l.start,10)-y;return b=b>g?g:b,f=b+parseInt(l.length,10),f>g&&(f=g,this.log("End range automatically set to the max value of "+g)),b<0||f-b<0||b>g||f>g?(p=!1,this.log("Invalid range: "+JSON.stringify(l)),this.opt.noMatch(l)):d.substring(b,f).replace(/\s+/g,"")===""&&(p=!1,this.log("Skipping whitespace only range: "+JSON.stringify(l)),this.opt.noMatch(l)),{start:b,end:f,valid:p}}},{key:"getTextNodes",value:function(l){var c=this,d="",f=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,function(p){f.push({start:d.length,end:(d+=p.textContent).length,node:p})},function(p){return c.matchesExclude(p.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},function(){l({value:d,nodes:f})})}},{key:"matchesExclude",value:function(l){return i.matches(l,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(l,c,d){var f=this.opt.element?this.opt.element:"mark",p=l.splitText(c),g=p.splitText(d-c),y=document.createElement(f);return y.setAttribute("data-markjs","true"),this.opt.className&&y.setAttribute("class",this.opt.className),y.textContent=p.textContent,p.parentNode.replaceChild(y,p),g}},{key:"wrapRangeInMappedTextNode",value:function(l,c,d,f,p){var g=this;l.nodes.every(function(y,b){var x=l.nodes[b+1];if(typeof x=="undefined"||x.start>c){if(!f(y.node))return!1;var T=c-y.start,C=(d>y.end?y.end:d)-y.start,A=l.value.substr(0,y.start),H=l.value.substr(C+y.start);if(y.node=g.wrapRangeInTextNode(y.node,T,C),l.value=A+H,l.nodes.forEach(function(D,K){K>=b&&(l.nodes[K].start>0&&K!==b&&(l.nodes[K].start-=C),l.nodes[K].end-=C)}),d-=C,p(y.node.previousSibling,y.start),d>y.end)c=y.end;else return!1}return!0})}},{key:"wrapMatches",value:function(l,c,d,f,p){var g=this,y=c===0?0:c+1;this.getTextNodes(function(b){b.nodes.forEach(function(x){x=x.node;for(var T=void 0;(T=l.exec(x.textContent))!==null&&T[y]!=="";)if(!!d(T[y],x)){var C=T.index;if(y!==0)for(var A=1;A{m();(function(t,r){typeof Ws=="object"&&typeof Id=="object"?Id.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Ws=="object"?Ws.Choices=r():t.Choices=r()})(window,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{enumerable:!0,get:a})},r.r=function(n){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},r.t=function(n,i){if(i&1&&(n=r(n)),i&8||i&4&&typeof n=="object"&&n&&n.__esModule)return n;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:n}),i&2&&typeof n!="string")for(var o in n)r.d(a,o,function(s){return n[s]}.bind(null,o));return a},r.n=function(n){var i=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="/public/assets/scripts/",r(r.s=4)}([function(e,t,r){"use strict";var n=function(A){return i(A)&&!a(A)};function i(C){return!!C&&typeof C=="object"}function a(C){var A=Object.prototype.toString.call(C);return A==="[object RegExp]"||A==="[object Date]"||u(C)}var o=typeof Symbol=="function"&&Symbol.for,s=o?Symbol.for("react.element"):60103;function u(C){return C.$$typeof===s}function l(C){return Array.isArray(C)?[]:{}}function c(C,A){return A.clone!==!1&&A.isMergeableObject(C)?x(l(C),C,A):C}function d(C,A,H){return C.concat(A).map(function(D){return c(D,H)})}function f(C,A){if(!A.customMerge)return x;var H=A.customMerge(C);return typeof H=="function"?H:x}function p(C){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(C).filter(function(A){return C.propertyIsEnumerable(A)}):[]}function g(C){return Object.keys(C).concat(p(C))}function y(C,A){try{return A in C&&!(Object.hasOwnProperty.call(C,A)&&Object.propertyIsEnumerable.call(C,A))}catch(H){return!1}}function b(C,A,H){var D={};return H.isMergeableObject(C)&&g(C).forEach(function(K){D[K]=c(C[K],H)}),g(A).forEach(function(K){y(C,K)||(!H.isMergeableObject(A[K])||!C[K]?D[K]=c(A[K],H):D[K]=f(K,H)(C[K],A[K],H))}),D}function x(C,A,H){H=H||{},H.arrayMerge=H.arrayMerge||d,H.isMergeableObject=H.isMergeableObject||n,H.cloneUnlessOtherwiseSpecified=c;var D=Array.isArray(A),K=Array.isArray(C),z=D===K;return z?D?H.arrayMerge(C,A,H):b(C,A,H):c(A,H)}x.all=function(A,H){if(!Array.isArray(A))throw new Error("first argument should be an array");return A.reduce(function(D,K){return x(D,K,H)},{})};var T=x;e.exports=T},function(e,t,r){"use strict";(function(n,i){var a=r(3),o;typeof self!="undefined"?o=self:typeof window!="undefined"?o=window:typeof n!="undefined"?o=n:o=i;var s=Object(a.a)(o);t.a=s}).call(this,r(5),r(6)(e))},function(e,t,r){(function(n,i){e.exports=i()})(this,function(){return function(n){var i={};function a(o){if(i[o])return i[o].exports;var s=i[o]={i:o,l:!1,exports:{}};return n[o].call(s.exports,s,s.exports,a),s.l=!0,s.exports}return a.m=n,a.c=i,a.d=function(o,s,u){a.o(o,s)||Object.defineProperty(o,s,{enumerable:!0,get:u})},a.r=function(o){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})},a.t=function(o,s){if(1&s&&(o=a(o)),8&s||4&s&&typeof o=="object"&&o&&o.__esModule)return o;var u=Object.create(null);if(a.r(u),Object.defineProperty(u,"default",{enumerable:!0,value:o}),2&s&&typeof o!="string")for(var l in o)a.d(u,l,function(c){return o[c]}.bind(null,l));return u},a.n=function(o){var s=o&&o.__esModule?function(){return o.default}:function(){return o};return a.d(s,"a",s),s},a.o=function(o,s){return Object.prototype.hasOwnProperty.call(o,s)},a.p="",a(a.s=1)}([function(n,i){n.exports=function(a){return Array.isArray?Array.isArray(a):Object.prototype.toString.call(a)==="[object Array]"}},function(n,i,a){function o(f){return(o=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(p){return typeof p}:function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p})(f)}function s(f,p){for(var g=0;g1&&arguments[1]!==void 0?arguments[1]:{limit:!1};this._log(`--------- +Search pattern: "`.concat(b,'"'));var T=this._prepareSearchers(b),C=T.tokenSearchers,A=T.fullSearcher,H=this._search(C,A),D=H.weights,K=H.results;return this._computeScore(D,K),this.options.shouldSort&&this._sort(K),x.limit&&typeof x.limit=="number"&&(K=K.slice(0,x.limit)),this._format(K)}},{key:"_prepareSearchers",value:function(){var b=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",x=[];if(this.options.tokenize)for(var T=b.split(this.options.tokenSeparator),C=0,A=T.length;C0&&arguments[0]!==void 0?arguments[0]:[],x=arguments.length>1?arguments[1]:void 0,T=this.list,C={},A=[];if(typeof T[0]=="string"){for(var H=0,D=T.length;H1)throw new Error("Key weight has to be > 0 and <= 1");G=G.name}else K[G]={weight:1};this._analyze({key:G,value:this.options.getFn(Z,G),record:Z,index:z},{resultMap:C,results:A,tokenSearchers:b,fullSearcher:x})}return{weights:K,results:A}}},{key:"_analyze",value:function(b,x){var T=b.key,C=b.arrayIndex,A=C===void 0?-1:C,H=b.value,D=b.record,K=b.index,z=x.tokenSearchers,U=z===void 0?[]:z,Z=x.fullSearcher,J=Z===void 0?[]:Z,se=x.resultMap,G=se===void 0?{}:se,Q=x.results,ie=Q===void 0?[]:Q;if(H!=null){var he=!1,pe=-1,ge=0;if(typeof H=="string"){this._log(` +Key: `.concat(T===""?"-":T));var be=J.search(H);if(this._log('Full text: "'.concat(H,'", score: ').concat(be.score)),this.options.tokenize){for(var Te=H.split(this.options.tokenSeparator),F=[],N=0;N-1&&(Ue=(Ue+pe)/2),this._log("Score average:",Ue);var dt=!this.options.tokenize||!this.options.matchAllTokens||ge>=U.length;if(this._log(` +Check Matches: `.concat(dt)),(he||be.isMatch)&&dt){var vt=G[K];vt?vt.output.push({key:T,arrayIndex:A,value:H,score:Ue,matchedIndices:be.matchedIndices}):(G[K]={item:D,output:[{key:T,arrayIndex:A,value:H,score:Ue,matchedIndices:be.matchedIndices}]},ie.push(G[K]))}}else if(c(H))for(var Ot=0,Bn=H.length;Ot-1&&(pe.arrayIndex=re.arrayIndex),Z.matches.push(pe)}}}),this.options.includeScore&&C.push(function(ee,Z){Z.score=ee.score});for(var A=0,N=b.length;Ax)return s(y,this.pattern,D);var C=this.options,A=C.location,N=C.distance,T=C.threshold,O=C.findAllMatches,W=C.minMatchCharLength;return u(y,this.pattern,this.patternAlphabet,{location:A,distance:N,threshold:T,findAllMatches:O,minMatchCharLength:W})}}])&&o(f.prototype,p),m&&o(f,m),d}();n.exports=c},function(n,i){var a=/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;n.exports=function(o,s){var u=arguments.length>2&&arguments[2]!==void 0?arguments[2]:/ +/g,l=new RegExp(s.replace(a,"\\$&").replace(u,"|")),c=o.match(l),d=!!c,f=[];if(d)for(var p=0,m=c.length;p=P;V-=1){var j=V-1,q=c[u.charAt(j)];if(q&&(Z[j]=1),Je[V]=(Je[V+1]<<1|1)&q,be!==0&&(Je[V]|=(re[V+1]|re[V])<<1|1|re[V+1]),Je[V]&ve&&(pe=o(l,{errors:be,currentLocation:j,expectedLocation:T,distance:y}))<=W){if(W=pe,(z=j)<=T)break;P=Math.max(1,2*T-z)}}if(o(l,{errors:be+1,currentLocation:T,expectedLocation:T,distance:y})>W)break;re=Je}return{isMatch:z>=0,score:pe===0?.001:pe,matchedIndices:s(Z,N)}}},function(n,i){n.exports=function(a,o){var s=o.errors,u=s===void 0?0:s,l=o.currentLocation,c=l===void 0?0:l,d=o.expectedLocation,f=d===void 0?0:d,p=o.distance,m=p===void 0?100:p,y=u/a.length,b=Math.abs(f-c);return m?y+b/m:b?1:y}},function(n,i){n.exports=function(){for(var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,s=[],u=-1,l=-1,c=0,d=a.length;c=o&&s.push([u,l]),u=-1)}return a[c-1]&&c-u>=o&&s.push([u,c-1]),s}},function(n,i){n.exports=function(a){for(var o={},s=a.length,u=0;u0)return"Unexpected "+(H.length>1?"keys":"key")+" "+('"'+H.join('", "')+'" found in '+I+". ")+"Expected to find one of the known reducer keys instead: "+('"'+k.join('", "')+'". Unexpected keys will be ignored.')}function y(R){Object.keys(R).forEach(function(w){var E=R[w],v=E(void 0,{type:l.INIT});if(typeof v=="undefined")throw new Error('Reducer "'+w+`" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);if(typeof E(void 0,{type:l.PROBE_UNKNOWN_ACTION()})=="undefined")throw new Error('Reducer "'+w+'" returned undefined when probed with a random type. '+("Don't try to handle "+l.INIT+' or other actions in "redux/*" ')+"namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.")})}function b(R){for(var w=Object.keys(R),E={},v=0;v-1?R.map(function(E){var v=E;return v.id===parseInt(w.choiceId,10)&&(v.selected=!0),v}):R;case"REMOVE_ITEM":return w.choiceId>-1?R.map(function(E){var v=E;return v.id===parseInt(w.choiceId,10)&&(v.selected=!1),v}):R;case"FILTER_CHOICES":return R.map(function(E){var v=E;return v.active=w.results.some(function(k){var I=k.item,H=k.score;return I.id===v.id?(v.score=H,!0):!1}),v});case"ACTIVATE_CHOICES":return R.map(function(E){var v=E;return v.active=w.active,v});case"CLEAR_CHOICES":return X;default:return R}}var re={loading:!1},pe=function(w,E){switch(w===void 0&&(w=re),E.type){case"SET_IS_LOADING":return{loading:E.isLoading};default:return w}},he=pe,ve=function(w,E){return Math.floor(Math.random()*(E-w)+w)},be=function(w){return Array.from({length:w},function(){return ve(0,36).toString(36)}).join("")},De=function(w,E){var v=w.id||w.name&&w.name+"-"+be(2)||be(4);return v=v.replace(/(:|\.|\[|\]|,)/g,""),v=E+"-"+v,v},L=function(w){return Object.prototype.toString.call(w).slice(8,-1)},P=function(w,E){return E!=null&&L(E)===w},ct=function(w,E){return E===void 0&&(E=document.createElement("div")),w.nextSibling?w.parentNode.insertBefore(E,w.nextSibling):w.parentNode.appendChild(E),E.appendChild(w)},Je=function(w,E,v){if(v===void 0&&(v=1),!(!(w instanceof Element)||typeof E!="string")){for(var k=(v>0?"next":"previous")+"ElementSibling",I=w[k];I;){if(I.matches(E))return I;I=I[k]}return I}},V=function(w,E,v){if(v===void 0&&(v=1),!w)return!1;var k;return v>0?k=E.scrollTop+E.offsetHeight>=w.offsetTop+w.offsetHeight:k=w.offsetTop>=E.scrollTop,k},j=function(w){return typeof w!="string"?w:w.replace(/&/g,"&").replace(/>/g,"&rt;").replace(/"'+j(w)+'"'},maxItemText:function(w){return"Only "+w+" values can be added"},valueComparer:function(w,E){return w===E},fuseOptions:{includeScore:!0},callbackOnInit:null,callbackOnCreateTemplates:null,classNames:Xr},Ot={showDropdown:"showDropdown",hideDropdown:"hideDropdown",change:"change",choice:"choice",search:"search",addItem:"addItem",removeItem:"removeItem",highlightItem:"highlightItem",highlightChoice:"highlightChoice"},Vt={ADD_CHOICE:"ADD_CHOICE",FILTER_CHOICES:"FILTER_CHOICES",ACTIVATE_CHOICES:"ACTIVATE_CHOICES",CLEAR_CHOICES:"CLEAR_CHOICES",ADD_GROUP:"ADD_GROUP",ADD_ITEM:"ADD_ITEM",REMOVE_ITEM:"REMOVE_ITEM",HIGHLIGHT_ITEM:"HIGHLIGHT_ITEM",CLEAR_ALL:"CLEAR_ALL"},yt={BACK_KEY:46,DELETE_KEY:8,ENTER_KEY:13,A_KEY:65,ESC_KEY:27,UP_KEY:38,DOWN_KEY:40,PAGE_UP_KEY:33,PAGE_DOWN_KEY:34},Y="text",oe="select-one",Ee="select-multiple",ze=4,Tt=function(){function R(E){var v=E.element,k=E.type,I=E.classNames,H=E.position;this.element=v,this.classNames=I,this.type=k,this.position=H,this.isOpen=!1,this.isFlipped=!1,this.isFocussed=!1,this.isDisabled=!1,this.isLoading=!1,this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this)}var w=R.prototype;return w.addEventListeners=function(){this.element.addEventListener("focus",this._onFocus),this.element.addEventListener("blur",this._onBlur)},w.removeEventListeners=function(){this.element.removeEventListener("focus",this._onFocus),this.element.removeEventListener("blur",this._onBlur)},w.shouldFlip=function(v){if(typeof v!="number")return!1;var k=!1;return this.position==="auto"?k=!window.matchMedia("(min-height: "+(v+1)+"px)").matches:this.position==="top"&&(k=!0),k},w.setActiveDescendant=function(v){this.element.setAttribute("aria-activedescendant",v)},w.removeActiveDescendant=function(){this.element.removeAttribute("aria-activedescendant")},w.open=function(v){this.element.classList.add(this.classNames.openState),this.element.setAttribute("aria-expanded","true"),this.isOpen=!0,this.shouldFlip(v)&&(this.element.classList.add(this.classNames.flippedState),this.isFlipped=!0)},w.close=function(){this.element.classList.remove(this.classNames.openState),this.element.setAttribute("aria-expanded","false"),this.removeActiveDescendant(),this.isOpen=!1,this.isFlipped&&(this.element.classList.remove(this.classNames.flippedState),this.isFlipped=!1)},w.focus=function(){this.isFocussed||this.element.focus()},w.addFocusState=function(){this.element.classList.add(this.classNames.focusState)},w.removeFocusState=function(){this.element.classList.remove(this.classNames.focusState)},w.enable=function(){this.element.classList.remove(this.classNames.disabledState),this.element.removeAttribute("aria-disabled"),this.type===oe&&this.element.setAttribute("tabindex","0"),this.isDisabled=!1},w.disable=function(){this.element.classList.add(this.classNames.disabledState),this.element.setAttribute("aria-disabled","true"),this.type===oe&&this.element.setAttribute("tabindex","-1"),this.isDisabled=!0},w.wrap=function(v){ct(v,this.element)},w.unwrap=function(v){this.element.parentNode.insertBefore(v,this.element),this.element.parentNode.removeChild(this.element)},w.addLoadingState=function(){this.element.classList.add(this.classNames.loadingState),this.element.setAttribute("aria-busy","true"),this.isLoading=!0},w.removeLoadingState=function(){this.element.classList.remove(this.classNames.loadingState),this.element.removeAttribute("aria-busy"),this.isLoading=!1},w._onFocus=function(){this.isFocussed=!0},w._onBlur=function(){this.isFocussed=!1},R}();function En(R,w){for(var E=0;E0?this.element.scrollTop+ae-U:v.offsetTop;requestAnimationFrame(function(){I._animateScroll(de,k)})}},w._scrollDown=function(v,k,I){var H=(I-v)/k,U=H>1?H:1;this.element.scrollTop=v+U},w._scrollUp=function(v,k,I){var H=(v-I)/k,U=H>1?H:1;this.element.scrollTop=v-U},w._animateScroll=function(v,k){var I=this,H=ze,U=this.element.scrollTop,J=!1;k>0?(this._scrollDown(U,H,v),Uv&&(J=!0)),J&&requestAnimationFrame(function(){I._animateScroll(v,k)})},R}();function fn(R,w){for(var E=0;E0?"treeitem":"option"),Object.assign(Oe.dataset,{choice:"",id:de,value:xe,selectText:v}),Ce?(Oe.classList.add(J),Oe.dataset.choiceDisabled="",Oe.setAttribute("aria-disabled","true")):(Oe.classList.add(H),Oe.dataset.choiceSelectable=""),Oe},input:function(w,E){var v=w.input,k=w.inputCloned,I=Object.assign(document.createElement("input"),{type:"text",className:v+" "+k,autocomplete:"off",autocapitalize:"off",spellcheck:!1});return I.setAttribute("role","textbox"),I.setAttribute("aria-autocomplete","list"),I.setAttribute("aria-label",E),I},dropdown:function(w){var E=w.list,v=w.listDropdown,k=document.createElement("div");return k.classList.add(E,v),k.setAttribute("aria-expanded","false"),k},notice:function(w,E,v){var k=w.item,I=w.itemChoice,H=w.noResults,U=w.noChoices;v===void 0&&(v="");var J=[k,I];return v==="no-choices"?J.push(U):v==="no-results"&&J.push(H),Object.assign(document.createElement("div"),{innerHTML:E,className:J.join(" ")})},option:function(w){var E=w.label,v=w.value,k=w.customProperties,I=w.active,H=w.disabled,U=new Option(E,v,!1,I);return k&&(U.dataset.customProperties=k),U.disabled=H,U}},se=Q,ie=function(w){var E=w.value,v=w.label,k=w.id,I=w.groupId,H=w.disabled,U=w.elementId,J=w.customProperties,ae=w.placeholder,de=w.keyCode;return{type:Vt.ADD_CHOICE,value:E,label:v,id:k,groupId:I,disabled:H,elementId:U,customProperties:J,placeholder:ae,keyCode:de}},me=function(w){return{type:Vt.FILTER_CHOICES,results:w}},ue=function(w){return w===void 0&&(w=!0),{type:Vt.ACTIVATE_CHOICES,active:w}},Pe=function(){return{type:Vt.CLEAR_CHOICES}},Fe=function(w){var E=w.value,v=w.label,k=w.id,I=w.choiceId,H=w.groupId,U=w.customProperties,J=w.placeholder,ae=w.keyCode;return{type:Vt.ADD_ITEM,value:E,label:v,id:k,choiceId:I,groupId:H,customProperties:U,placeholder:J,keyCode:ae}},Me=function(w,E){return{type:Vt.REMOVE_ITEM,id:w,choiceId:E}},Qt=function(w,E){return{type:Vt.HIGHLIGHT_ITEM,id:w,highlighted:E}},bt=function(w){var E=w.value,v=w.id,k=w.active,I=w.disabled;return{type:Vt.ADD_GROUP,value:E,id:v,active:k,disabled:I}},ar=function(){return{type:"CLEAR_ALL"}},or=function(w){return{type:"RESET_TO",state:w}},Wi=function(w){return{type:"SET_IS_LOADING",isLoading:w}};function Za(R,w){for(var E=0;E=0?this._store.getGroupById(U):null;return this._store.dispatch(Qt(I,!0)),k&&this.passedElement.triggerEvent(Ot.highlightItem,{id:I,value:ae,label:xe,groupValue:ye&&ye.value?ye.value:null}),this},w.unhighlightItem=function(v){if(!v)return this;var k=v.id,I=v.groupId,H=I===void 0?-1:I,U=v.value,J=U===void 0?"":U,ae=v.label,de=ae===void 0?"":ae,xe=H>=0?this._store.getGroupById(H):null;return this._store.dispatch(Qt(k,!1)),this.passedElement.triggerEvent(Ot.highlightItem,{id:k,value:J,label:de,groupValue:xe&&xe.value?xe.value:null}),this},w.highlightAll=function(){var v=this;return this._store.items.forEach(function(k){return v.highlightItem(k)}),this},w.unhighlightAll=function(){var v=this;return this._store.items.forEach(function(k){return v.unhighlightItem(k)}),this},w.removeActiveItemsByValue=function(v){var k=this;return this._store.activeItems.filter(function(I){return I.value===v}).forEach(function(I){return k._removeItem(I)}),this},w.removeActiveItems=function(v){var k=this;return this._store.activeItems.filter(function(I){var H=I.id;return H!==v}).forEach(function(I){return k._removeItem(I)}),this},w.removeHighlightedItems=function(v){var k=this;return v===void 0&&(v=!1),this._store.highlightedActiveItems.forEach(function(I){k._removeItem(I),v&&k._triggerChange(I.value)}),this},w.showDropdown=function(v){var k=this;return this.dropdown.isActive?this:(requestAnimationFrame(function(){k.dropdown.show(),k.containerOuter.open(k.dropdown.distanceFromTopWindow),!v&&k._canSearch&&k.input.focus(),k.passedElement.triggerEvent(Ot.showDropdown,{})}),this)},w.hideDropdown=function(v){var k=this;return this.dropdown.isActive?(requestAnimationFrame(function(){k.dropdown.hide(),k.containerOuter.close(),!v&&k._canSearch&&(k.input.removeActiveDescendant(),k.input.blur()),k.passedElement.triggerEvent(Ot.hideDropdown,{})}),this):this},w.getValue=function(v){v===void 0&&(v=!1);var k=this._store.activeItems.reduce(function(I,H){var U=v?H.value:H;return I.push(U),I},[]);return this._isSelectOneElement?k[0]:k},w.setValue=function(v){var k=this;return this.initialised?(v.forEach(function(I){return k._setChoiceOrItem(I)}),this):this},w.setChoiceByValue=function(v){var k=this;if(!this.initialised||this._isTextElement)return this;var I=Array.isArray(v)?v:[v];return I.forEach(function(H){return k._findAndSelectChoiceByValue(H)}),this},w.setChoices=function(v,k,I,H){var U=this;if(v===void 0&&(v=[]),k===void 0&&(k="value"),I===void 0&&(I="label"),H===void 0&&(H=!1),!this.initialised)throw new ReferenceError("setChoices was called on a non-initialized instance of Choices");if(!this._isSelectElement)throw new TypeError("setChoices can't be used with INPUT based Choices");if(typeof k!="string"||!k)throw new TypeError("value parameter must be a name of 'value' field in passed objects");if(H&&this.clearChoices(),typeof v=="function"){var J=v(this);if(typeof Promise=="function"&&J instanceof Promise)return new Promise(function(ae){return requestAnimationFrame(ae)}).then(function(){return U._handleLoadingState(!0)}).then(function(){return J}).then(function(ae){return U.setChoices(ae,k,I,H)}).catch(function(ae){U.config.silent||console.error(ae)}).then(function(){return U._handleLoadingState(!1)}).then(function(){return U});if(!Array.isArray(J))throw new TypeError(".setChoices first argument function must return either array of choices or Promise, got: "+typeof J);return this.setChoices(J,k,I,!1)}if(!Array.isArray(v))throw new TypeError(".setChoices must be called either with array of choices with a function resulting into Promise of array of choices");return this.containerOuter.removeLoadingState(),this._startLoading(),v.forEach(function(ae){ae.choices?U._addGroup({id:parseInt(ae.id,10)||null,group:ae,valueKey:k,labelKey:I}):U._addChoice({value:ae[k],label:ae[I],isSelected:ae.selected,isDisabled:ae.disabled,customProperties:ae.customProperties,placeholder:ae.placeholder})}),this._stopLoading(),this},w.clearChoices=function(){return this._store.dispatch(Pe()),this},w.clearStore=function(){return this._store.dispatch(ar()),this},w.clearInput=function(){var v=!this._isSelectOneElement;return this.input.clear(v),!this._isTextElement&&this._canSearch&&(this._isSearching=!1,this._store.dispatch(ue(!0))),this},w._render=function(){if(!this._store.isLoading()){this._currentState=this._store.state;var v=this._currentState.choices!==this._prevState.choices||this._currentState.groups!==this._prevState.groups||this._currentState.items!==this._prevState.items,k=this._isSelectElement,I=this._currentState.items!==this._prevState.items;!v||(k&&this._renderChoices(),I&&this._renderItems(),this._prevState=this._currentState)}},w._renderChoices=function(){var v=this,k=this._store,I=k.activeGroups,H=k.activeChoices,U=document.createDocumentFragment();if(this.choiceList.clear(),this.config.resetScrollPosition&&requestAnimationFrame(function(){return v.choiceList.scrollToTop()}),I.length>=1&&!this._isSearching){var J=H.filter(function(Ie){return Ie.placeholder===!0&&Ie.groupId===-1});J.length>=1&&(U=this._createChoicesFragment(J,U)),U=this._createGroupsFragment(I,H,U)}else H.length>=1&&(U=this._createChoicesFragment(H,U));if(U.childNodes&&U.childNodes.length>0){var ae=this._store.activeItems,de=this._canAddItem(ae,this.input.value);de.response?(this.choiceList.append(U),this._highlightChoice()):this.choiceList.append(this._getTemplate("notice",de.notice))}else{var xe,ye;this._isSearching?(ye=typeof this.config.noResultsText=="function"?this.config.noResultsText():this.config.noResultsText,xe=this._getTemplate("notice",ye,"no-results")):(ye=typeof this.config.noChoicesText=="function"?this.config.noChoicesText():this.config.noChoicesText,xe=this._getTemplate("notice",ye,"no-choices")),this.choiceList.append(xe)}},w._renderItems=function(){var v=this._store.activeItems||[];this.itemList.clear();var k=this._createItemsFragment(v);k.childNodes&&this.itemList.append(k)},w._createGroupsFragment=function(v,k,I){var H=this;I===void 0&&(I=document.createDocumentFragment());var U=function(ae){return k.filter(function(de){return H._isSelectOneElement?de.groupId===ae.id:de.groupId===ae.id&&(H.config.renderSelectedChoices==="always"||!de.selected)})};return this.config.shouldSort&&v.sort(this.config.sorter),v.forEach(function(J){var ae=U(J);if(ae.length>=1){var de=H._getTemplate("choiceGroup",J);I.appendChild(de),H._createChoicesFragment(ae,I,!0)}}),I},w._createChoicesFragment=function(v,k,I){var H=this;k===void 0&&(k=document.createDocumentFragment()),I===void 0&&(I=!1);var U=this.config,J=U.renderSelectedChoices,ae=U.searchResultLimit,de=U.renderChoiceLimit,xe=this._isSearching?we:this.config.sorter,ye=function(zt){var Tr=J==="auto"?H._isSelectOneElement||!zt.selected:!0;if(Tr){var Dr=H._getTemplate("choice",zt,H.config.itemSelectText);k.appendChild(Dr)}},Ie=v;J==="auto"&&!this._isSelectOneElement&&(Ie=v.filter(function(Rt){return!Rt.selected}));var Ne=Ie.reduce(function(Rt,zt){return zt.placeholder?Rt.placeholderChoices.push(zt):Rt.normalChoices.push(zt),Rt},{placeholderChoices:[],normalChoices:[]}),Ce=Ne.placeholderChoices,Ke=Ne.normalChoices;(this.config.shouldSort||this._isSearching)&&Ke.sort(xe);var Ae=Ie.length,Oe=this._isSelectOneElement?[].concat(Ce,Ke):Ke;this._isSearching?Ae=ae:de&&de>0&&!I&&(Ae=de);for(var dt=0;dt=H){var ae=U?this._searchChoices(v):0;this.passedElement.triggerEvent(Ot.search,{value:v,resultCount:ae})}else J&&(this._isSearching=!1,this._store.dispatch(ue(!0)))}},w._canAddItem=function(v,k){var I=!0,H=typeof this.config.addItemText=="function"?this.config.addItemText(k):this.config.addItemText;if(!this._isSelectOneElement){var U=Ue(v,k);this.config.maxItemCount>0&&this.config.maxItemCount<=v.length&&(I=!1,H=typeof this.config.maxItemText=="function"?this.config.maxItemText(this.config.maxItemCount):this.config.maxItemText),!this.config.duplicateItemsAllowed&&U&&I&&(I=!1,H=typeof this.config.uniqueItemText=="function"?this.config.uniqueItemText(k):this.config.uniqueItemText),this._isTextElement&&this.config.addItems&&I&&typeof this.config.addItemFilter=="function"&&!this.config.addItemFilter(k)&&(I=!1,H=typeof this.config.customAddItemText=="function"?this.config.customAddItemText(k):this.config.customAddItemText)}return{response:I,notice:H}},w._searchChoices=function(v){var k=typeof v=="string"?v.trim():v,I=typeof this._currentValue=="string"?this._currentValue.trim():this._currentValue;if(k.length<1&&k===I+" ")return 0;var H=this._store.searchableChoices,U=k,J=[].concat(this.config.searchFields),ae=Object.assign(this.config.fuseOptions,{keys:J}),de=new i.a(H,ae),xe=de.search(U);return this._currentValue=k,this._highlightPosition=0,this._isSearching=!0,this._store.dispatch(me(xe)),xe.length},w._addEventListeners=function(){var v=document,k=v.documentElement;k.addEventListener("touchend",this._onTouchEnd,!0),this.containerOuter.element.addEventListener("keydown",this._onKeyDown,!0),this.containerOuter.element.addEventListener("mousedown",this._onMouseDown,!0),k.addEventListener("click",this._onClick,{passive:!0}),k.addEventListener("touchmove",this._onTouchMove,{passive:!0}),this.dropdown.element.addEventListener("mouseover",this._onMouseOver,{passive:!0}),this._isSelectOneElement&&(this.containerOuter.element.addEventListener("focus",this._onFocus,{passive:!0}),this.containerOuter.element.addEventListener("blur",this._onBlur,{passive:!0})),this.input.element.addEventListener("keyup",this._onKeyUp,{passive:!0}),this.input.element.addEventListener("focus",this._onFocus,{passive:!0}),this.input.element.addEventListener("blur",this._onBlur,{passive:!0}),this.input.element.form&&this.input.element.form.addEventListener("reset",this._onFormReset,{passive:!0}),this.input.addEventListeners()},w._removeEventListeners=function(){var v=document,k=v.documentElement;k.removeEventListener("touchend",this._onTouchEnd,!0),this.containerOuter.element.removeEventListener("keydown",this._onKeyDown,!0),this.containerOuter.element.removeEventListener("mousedown",this._onMouseDown,!0),k.removeEventListener("click",this._onClick),k.removeEventListener("touchmove",this._onTouchMove),this.dropdown.element.removeEventListener("mouseover",this._onMouseOver),this._isSelectOneElement&&(this.containerOuter.element.removeEventListener("focus",this._onFocus),this.containerOuter.element.removeEventListener("blur",this._onBlur)),this.input.element.removeEventListener("keyup",this._onKeyUp),this.input.element.removeEventListener("focus",this._onFocus),this.input.element.removeEventListener("blur",this._onBlur),this.input.element.form&&this.input.element.form.removeEventListener("reset",this._onFormReset),this.input.removeEventListeners()},w._onKeyDown=function(v){var k,I=v.target,H=v.keyCode,U=v.ctrlKey,J=v.metaKey,ae=this._store.activeItems,de=this.input.isFocussed,xe=this.dropdown.isActive,ye=this.itemList.hasChildren(),Ie=String.fromCharCode(H),Ne=yt.BACK_KEY,Ce=yt.DELETE_KEY,Ke=yt.ENTER_KEY,Ae=yt.A_KEY,Oe=yt.ESC_KEY,dt=yt.UP_KEY,Rt=yt.DOWN_KEY,zt=yt.PAGE_UP_KEY,Tr=yt.PAGE_DOWN_KEY,Dr=U||J;!this._isTextElement&&/[a-zA-Z0-9-_ ]/.test(Ie)&&this.showDropdown();var Zr=(k={},k[Ae]=this._onAKey,k[Ke]=this._onEnterKey,k[Oe]=this._onEscapeKey,k[dt]=this._onDirectionKey,k[zt]=this._onDirectionKey,k[Rt]=this._onDirectionKey,k[Tr]=this._onDirectionKey,k[Ce]=this._onDeleteKey,k[Ne]=this._onDeleteKey,k);Zr[H]&&Zr[H]({event:v,target:I,keyCode:H,metaKey:J,activeItems:ae,hasFocusedInput:de,hasActiveDropdown:xe,hasItems:ye,hasCtrlDownKeyPressed:Dr})},w._onKeyUp=function(v){var k=v.target,I=v.keyCode,H=this.input.value,U=this._store.activeItems,J=this._canAddItem(U,H),ae=yt.BACK_KEY,de=yt.DELETE_KEY;if(this._isTextElement){var xe=J.notice&&H;if(xe){var ye=this._getTemplate("notice",J.notice);this.dropdown.element.innerHTML=ye.outerHTML,this.showDropdown(!0)}else this.hideDropdown(!0)}else{var Ie=(I===ae||I===de)&&!k.value,Ne=!this._isTextElement&&this._isSearching,Ce=this._canSearch&&J.response;Ie&&Ne?(this._isSearching=!1,this._store.dispatch(ue(!0))):Ce&&this._handleSearch(this.input.value)}this._canSearch=this.config.searchEnabled},w._onAKey=function(v){var k=v.hasItems,I=v.hasCtrlDownKeyPressed;if(I&&k){this._canSearch=!1;var H=this.config.removeItems&&!this.input.value&&this.input.element===document.activeElement;H&&this.highlightAll()}},w._onEnterKey=function(v){var k=v.event,I=v.target,H=v.activeItems,U=v.hasActiveDropdown,J=yt.ENTER_KEY,ae=I.hasAttribute("data-button");if(this._isTextElement&&I.value){var de=this.input.value,xe=this._canAddItem(H,de);xe.response&&(this.hideDropdown(!0),this._addItem({value:de}),this._triggerChange(de),this.clearInput())}if(ae&&(this._handleButtonAction(H,I),k.preventDefault()),U){var ye=this.dropdown.getChild("."+this.config.classNames.highlightedState);ye&&(H[0]&&(H[0].keyCode=J),this._handleChoiceAction(H,ye)),k.preventDefault()}else this._isSelectOneElement&&(this.showDropdown(),k.preventDefault())},w._onEscapeKey=function(v){var k=v.hasActiveDropdown;k&&(this.hideDropdown(!0),this.containerOuter.focus())},w._onDirectionKey=function(v){var k=v.event,I=v.hasActiveDropdown,H=v.keyCode,U=v.metaKey,J=yt.DOWN_KEY,ae=yt.PAGE_UP_KEY,de=yt.PAGE_DOWN_KEY;if(I||this._isSelectOneElement){this.showDropdown(),this._canSearch=!1;var xe=H===J||H===de?1:-1,ye=U||H===de||H===ae,Ie="[data-choice-selectable]",Ne;if(ye)xe>0?Ne=this.dropdown.element.querySelector(Ie+":last-of-type"):Ne=this.dropdown.element.querySelector(Ie);else{var Ce=this.dropdown.element.querySelector("."+this.config.classNames.highlightedState);Ce?Ne=Je(Ce,Ie,xe):Ne=this.dropdown.element.querySelector(Ie)}Ne&&(V(Ne,this.choiceList.element,xe)||this.choiceList.scrollToChildElement(Ne,xe),this._highlightChoice(Ne)),k.preventDefault()}},w._onDeleteKey=function(v){var k=v.event,I=v.target,H=v.hasFocusedInput,U=v.activeItems;H&&!I.value&&!this._isSelectOneElement&&(this._handleBackspace(U),k.preventDefault())},w._onTouchMove=function(){this._wasTap&&(this._wasTap=!1)},w._onTouchEnd=function(v){var k=v||v.touches[0],I=k.target,H=this._wasTap&&this.containerOuter.element.contains(I);if(H){var U=I===this.containerOuter.element||I===this.containerInner.element;U&&(this._isTextElement?this.input.focus():this._isSelectMultipleElement&&this.showDropdown()),v.stopPropagation()}this._wasTap=!0},w._onMouseDown=function(v){var k=v.target;if(k instanceof HTMLElement){if(Vi&&this.choiceList.element.contains(k)){var I=this.choiceList.element.firstElementChild,H=this._direction==="ltr"?v.offsetX>=I.offsetWidth:v.offsetX0;H&&this.unhighlightAll(),this.containerOuter.removeFocusState(),this.hideDropdown(!0)}},w._onFocus=function(v){var k=this,I,H=v.target,U=this.containerOuter.element.contains(H);if(!!U){var J=(I={},I[Y]=function(){H===k.input.element&&k.containerOuter.addFocusState()},I[oe]=function(){k.containerOuter.addFocusState(),H===k.input.element&&k.showDropdown(!0)},I[Ee]=function(){H===k.input.element&&(k.showDropdown(!0),k.containerOuter.addFocusState())},I);J[this.passedElement.element.type]()}},w._onBlur=function(v){var k=this,I=v.target,H=this.containerOuter.element.contains(I);if(H&&!this._isScrollingOnIe){var U,J=this._store.activeItems,ae=J.some(function(xe){return xe.highlighted}),de=(U={},U[Y]=function(){I===k.input.element&&(k.containerOuter.removeFocusState(),ae&&k.unhighlightAll(),k.hideDropdown(!0))},U[oe]=function(){k.containerOuter.removeFocusState(),(I===k.input.element||I===k.containerOuter.element&&!k._canSearch)&&k.hideDropdown(!0)},U[Ee]=function(){I===k.input.element&&(k.containerOuter.removeFocusState(),k.hideDropdown(!0),ae&&k.unhighlightAll())},U);de[this.passedElement.element.type]()}else this._isScrollingOnIe=!1,this.input.element.focus()},w._onFormReset=function(){this._store.dispatch(or(this._initialState))},w._highlightChoice=function(v){var k=this;v===void 0&&(v=null);var I=Array.from(this.dropdown.element.querySelectorAll("[data-choice-selectable]"));if(!!I.length){var H=v,U=Array.from(this.dropdown.element.querySelectorAll("."+this.config.classNames.highlightedState));U.forEach(function(J){J.classList.remove(k.config.classNames.highlightedState),J.setAttribute("aria-selected","false")}),H?this._highlightPosition=I.indexOf(H):(I.length>this._highlightPosition?H=I[this._highlightPosition]:H=I[I.length-1],H||(H=I[0])),H.classList.add(this.config.classNames.highlightedState),H.setAttribute("aria-selected","true"),this.passedElement.triggerEvent(Ot.highlightChoice,{el:H}),this.dropdown.isActive&&(this.input.setActiveDescendant(H.id),this.containerOuter.setActiveDescendant(H.id))}},w._addItem=function(v){var k=v.value,I=v.label,H=I===void 0?null:I,U=v.choiceId,J=U===void 0?-1:U,ae=v.groupId,de=ae===void 0?-1:ae,xe=v.customProperties,ye=xe===void 0?null:xe,Ie=v.placeholder,Ne=Ie===void 0?!1:Ie,Ce=v.keyCode,Ke=Ce===void 0?null:Ce,Ae=typeof k=="string"?k.trim():k,Oe=Ke,dt=ye,Rt=this._store.items,zt=H||Ae,Tr=J||-1,Dr=de>=0?this._store.getGroupById(de):null,Zr=Rt?Rt.length+1:1;return this.config.prependValue&&(Ae=this.config.prependValue+Ae.toString()),this.config.appendValue&&(Ae+=this.config.appendValue.toString()),this._store.dispatch(Fe({value:Ae,label:zt,id:Zr,choiceId:Tr,groupId:de,customProperties:ye,placeholder:Ne,keyCode:Oe})),this._isSelectOneElement&&this.removeActiveItems(Zr),this.passedElement.triggerEvent(Ot.addItem,{id:Zr,value:Ae,label:zt,customProperties:dt,groupValue:Dr&&Dr.value?Dr.value:void 0,keyCode:Oe}),this},w._removeItem=function(v){if(!v||!P("Object",v))return this;var k=v.id,I=v.value,H=v.label,U=v.choiceId,J=v.groupId,ae=J>=0?this._store.getGroupById(J):null;return this._store.dispatch(Me(k,U)),ae&&ae.value?this.passedElement.triggerEvent(Ot.removeItem,{id:k,value:I,label:H,groupValue:ae.value}):this.passedElement.triggerEvent(Ot.removeItem,{id:k,value:I,label:H}),this},w._addChoice=function(v){var k=v.value,I=v.label,H=I===void 0?null:I,U=v.isSelected,J=U===void 0?!1:U,ae=v.isDisabled,de=ae===void 0?!1:ae,xe=v.groupId,ye=xe===void 0?-1:xe,Ie=v.customProperties,Ne=Ie===void 0?null:Ie,Ce=v.placeholder,Ke=Ce===void 0?!1:Ce,Ae=v.keyCode,Oe=Ae===void 0?null:Ae;if(!(typeof k=="undefined"||k===null)){var dt=this._store.choices,Rt=H||k,zt=dt?dt.length+1:1,Tr=this._baseId+"-"+this._idNames.itemChoice+"-"+zt;this._store.dispatch(ie({id:zt,groupId:ye,elementId:Tr,value:k,label:Rt,disabled:de,customProperties:Ne,placeholder:Ke,keyCode:Oe})),J&&this._addItem({value:k,label:Rt,choiceId:zt,customProperties:Ne,placeholder:Ke,keyCode:Oe})}},w._addGroup=function(v){var k=this,I=v.group,H=v.id,U=v.valueKey,J=U===void 0?"value":U,ae=v.labelKey,de=ae===void 0?"label":ae,xe=P("Object",I)?I.choices:Array.from(I.getElementsByTagName("OPTION")),ye=H||Math.floor(new Date().valueOf()*Math.random()),Ie=I.disabled?I.disabled:!1;if(xe){this._store.dispatch(bt({value:I.label,id:ye,active:!0,disabled:Ie}));var Ne=function(Ke){var Ae=Ke.disabled||Ke.parentNode&&Ke.parentNode.disabled;k._addChoice({value:Ke[J],label:P("Object",Ke)?Ke[de]:Ke.innerHTML,isSelected:Ke.selected,isDisabled:Ae,groupId:ye,customProperties:Ke.customProperties,placeholder:Ke.placeholder})};xe.forEach(Ne)}else this._store.dispatch(bt({value:I.label,id:I.id,active:!1,disabled:I.disabled}))},w._getTemplate=function(v){var k;if(!v)return null;for(var I=this.config.classNames,H=arguments.length,U=new Array(H>1?H-1:0),J=1;J{h();(function(e,t){typeof tl=="object"&&typeof Dw!="undefined"?t(tl):typeof define=="function"&&define.amd?define(["exports"],t):(e=typeof globalThis!="undefined"?globalThis:e||self,t(e.immutableJSONPatch={}))})(tl,function(e){"use strict";function t(V){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?t=function(q){return typeof q}:t=function(q){return q&&typeof Symbol=="function"&&q.constructor===Symbol&&q!==Symbol.prototype?"symbol":typeof q},t(V)}function r(V,j){return JSON.stringify(V)===JSON.stringify(j)}function n(V,j){return V===j}function i(V){return V.slice(0,V.length-1)}function a(V){return V[V.length-1]}function o(V,j){var q=arguments.length>2&&arguments[2]!==void 0?arguments[2]:n;if(V.length3&&arguments[3]!==void 0?arguments[3]:!1;if(j.length===0)return q;var we=j[0],ke=y(V?V[we]:void 0,j.slice(1),q,te);if(!s(V))if(te){var Ue=typeof we=="number"?[]:{};return Ue[we]=ke,Ue}else throw new Error("Path does not exist");return p(V,we,ke)}function b(V,j,q){if(j.length===0)return q(V);if(!s(V))throw new Error("Path doesn't exist");var te=j[0],we=b(V[te],j.slice(1),q);return p(V,te,we)}function x(V,j){if(j.length===0)return V;if(!s(V))throw new Error("Path does not exist");if(j.length===1){var q=j[0];if(q in V){var te=f(V);return Array.isArray(te)?te.splice(q,1):delete te[q],te}else return V}var we=j[0],ke=x(V[we],j.slice(1));return p(V,we,ke)}function D(V,j,q){var te=j.slice(0,j.length-1),we=j[j.length-1];return b(V,te,function(ke){if(!Array.isArray(ke))throw new TypeError("Array expected at path "+JSON.stringify(te));var Ue=f(ke);return Ue.splice(we,0,q),Ue})}function C(V,j){return V===void 0?!1:j.length===0?!0:C(V[j[0]],j.slice(1))}function A(V){var j=V.split("/");return j.shift(),j.map(function(q){return q.replace(/~1/g,"/").replace(/~0/g,"~")})}function N(V){return V.map(function(j){return"/"+String(j).replace(/~/g,"~0").replace(/\//g,"~1")}).join("")}function T(V,j,q){for(var te=V,we=0;we{h();(function(){var e;typeof pf!="undefined"?e=pf.exports=n:e=function(){return this||(0,eval)("this")}(),e.format=n,e.vsprintf=r,typeof console!="undefined"&&typeof console.log=="function"&&(e.printf=t);function t(){console.log(n.apply(null,arguments))}function r(i,a){return n.apply(null,[i].concat(a))}function n(i){for(var a=1,o=[].slice.call(arguments),s=0,u=i.length,l="",c,d=!1,f,p,m=!1,y,b=function(){return o[a++]},x=function(){for(var D="";/\d/.test(i[s]);)D+=i[s++],c=i[s];return D.length>0?parseInt(D):null};sEf});h();h();function Sl(e,t){let r=Object.keys(t).map(n=>ZE(e,n,t[n]));return r.length===1?r[0]:function(){r.forEach(n=>n())}}function ZE(e,t,r){let n=e[t],i=e.hasOwnProperty(t),a=r(n);return n&&Object.setPrototypeOf(a,n),Object.setPrototypeOf(o,a),e[t]=o,s;function o(...u){return a===n&&e[t]===o&&s(),a.apply(this,u)}function s(){e[t]===o&&(i?e[t]=n:delete e[t]),a!==n&&(a=n,Object.setPrototypeOf(o,n||Function))}}var Ct=ge(require("obsidian"));h();h();Mr();var ri,Et,_l,Kf,ii=0,$f=[],ao=[],Uf=fe.__b,Wf=fe.__r,Vf=fe.diffed,zf=fe.__c,jf=fe.unmount;function Gi(e,t){fe.__h&&fe.__h(Et,e,ii||t),ii=0;var r=Et.__H||(Et.__H={__:[],__h:[]});return e>=r.__.length&&r.__.push({__V:ao}),r.__[e]}function sr(e){return ii=1,Qi(Yf,e)}function Qi(e,t,r){var n=Gi(ri++,2);return n.t=e,n.__c||(n.__=[r?r(t):Yf(void 0,t),function(i){var a=n.t(n.__[0],i);n.__[0]!==a&&(n.__=[a,n.__[1]],n.__c.setState({}))}],n.__c=Et),n.__}function Sn(e,t){var r=Gi(ri++,3);!fe.__s&&Tl(r.__H,t)&&(r.__=e,r.u=t,Et.__H.__h.push(r))}function Ir(e,t){var r=Gi(ri++,4);!fe.__s&&Tl(r.__H,t)&&(r.__=e,r.u=t,Et.__h.push(r))}function Xt(e){return ii=5,lr(function(){return{current:e}},[])}function oo(e,t,r){ii=6,Ir(function(){return typeof e=="function"?(e(t()),function(){return e(null)}):e?(e.current=t(),function(){return e.current=null}):void 0},r==null?r:r.concat(e))}function lr(e,t){var r=Gi(ri++,7);return Tl(r.__H,t)?(r.__V=e(),r.u=t,r.__h=e,r.__V):r.__}function cr(e,t){return ii=8,lr(function(){return e},t)}function so(e){var t=Et.context[e.__c],r=Gi(ri++,9);return r.c=e,t?(r.__==null&&(r.__=!0,t.sub(Et)),t.props.value):e.__}function lo(e,t){fe.useDebugValue&&fe.useDebugValue(t?t(e):e)}function ex(){for(var e;e=$f.shift();)if(e.__P)try{e.__H.__h.forEach(co),e.__H.__h.forEach(Cl),e.__H.__h=[]}catch(t){e.__H.__h=[],fe.__e(t,e.__v)}}fe.__b=function(e){Et=null,Uf&&Uf(e)},fe.__r=function(e){Wf&&Wf(e),ri=0;var t=(Et=e.__c).__H;t&&(_l===Et?(t.__h=[],Et.__h=[],t.__.forEach(function(r){r.__V=ao,r.u=void 0})):(t.__h.forEach(co),t.__h.forEach(Cl),t.__h=[])),_l=Et},fe.diffed=function(e){Vf&&Vf(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&($f.push(t)!==1&&Kf===fe.requestAnimationFrame||((Kf=fe.requestAnimationFrame)||function(r){var n,i=function(){clearTimeout(a),qf&&cancelAnimationFrame(n),setTimeout(r)},a=setTimeout(i,100);qf&&(n=requestAnimationFrame(i))})(ex)),t.__H.__.forEach(function(r){r.u&&(r.__H=r.u),r.__V!==ao&&(r.__=r.__V),r.u=void 0,r.__V=ao})),_l=Et=null},fe.__c=function(e,t){t.some(function(r){try{r.__h.forEach(co),r.__h=r.__h.filter(function(n){return!n.__||Cl(n)})}catch(n){t.some(function(i){i.__h&&(i.__h=[])}),t=[],fe.__e(n,r.__v)}}),zf&&zf(e,t)},fe.unmount=function(e){jf&&jf(e);var t,r=e.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{co(n)}catch(i){t=i}}),t&&fe.__e(t,r.__v))};var qf=typeof requestAnimationFrame=="function";function co(e){var t=Et,r=e.__c;typeof r=="function"&&(e.__c=void 0,r()),Et=t}function Cl(e){var t=Et;e.__c=e.__(),Et=t}function Tl(e,t){return!e||e.length!==t.length||t.some(function(r,n){return r!==e[n]})}function Yf(e,t){return typeof t=="function"?t(e):t}Mr();Mr();function Jf(e,t){for(var r in t)e[r]=t[r];return e}function Dl(e,t){for(var r in e)if(r!=="__source"&&!(r in t))return!0;for(var n in t)if(n!=="__source"&&e[n]!==t[n])return!0;return!1}function Ml(e){this.props=e}function tx(e,t){function r(i){var a=this.props.ref,o=a==i.ref;return!o&&a&&(a.call?a(null):a.current=null),t?!t(this.props,i)||!o:Dl(this.props,i)}function n(i){return this.shouldComponentUpdate=r,g(e,i)}return n.displayName="Memo("+(e.displayName||e.name)+")",n.prototype.isReactComponent=!0,n.__f=!0,n}(Ml.prototype=new pt).isPureReactComponent=!0,Ml.prototype.shouldComponentUpdate=function(e,t){return Dl(this.props,e)||Dl(this.state,t)};var Gf=fe.__b;fe.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Gf&&Gf(e)};var nx=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function rx(e){function t(r){var n=Jf({},r);return delete n.ref,e(n,r.ref||null)}return t.$$typeof=nx,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var Qf=function(e,t){return e==null?null:wt(wt(e).map(t))},ix={map:Qf,forEach:Qf,count:function(e){return e?wt(e).length:0},only:function(e){var t=wt(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:wt},ax=fe.__e;fe.__e=function(e,t,r,n){if(e.then){for(var i,a=t;a=a.__;)if((i=a.__c)&&i.__c)return t.__e==null&&(t.__e=r.__e,t.__k=r.__k),i.__c(e,t)}ax(e,t,r,n)};var Xf=fe.unmount;function uo(){this.__u=0,this.t=null,this.__b=null}function Zf(e){var t=e.__.__c;return t&&t.__e&&t.__e(e)}function ox(e){var t,r,n;function i(a){if(t||(t=e()).then(function(o){r=o.default||o},function(o){n=o}),n)throw n;if(!r)throw t;return g(r,a)}return i.displayName="Lazy",i.__f=!0,i}function Xi(){this.u=null,this.o=null}fe.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&e.__h===!0&&(e.type=null),Xf&&Xf(e)},(uo.prototype=new pt).__c=function(e,t){var r=t.__c,n=this;n.t==null&&(n.t=[]),n.t.push(r);var i=Zf(n.__v),a=!1,o=function(){a||(a=!0,r.__R=null,i?i(s):s())};r.__R=o;var s=function(){if(!--n.__u){if(n.state.__e){var l=n.state.__e;n.__v.__k[0]=function d(f,p,m){return f&&(f.__v=null,f.__k=f.__k&&f.__k.map(function(y){return d(y,p,m)}),f.__c&&f.__c.__P===p&&(f.__e&&m.insertBefore(f.__e,f.__d),f.__c.__e=!0,f.__c.__P=m)),f}(l,l.__c.__P,l.__c.__O)}var c;for(n.setState({__e:n.__b=null});c=n.t.pop();)c.forceUpdate()}},u=t.__h===!0;n.__u++||u||n.setState({__e:n.__b=n.__v.__k[0]}),e.then(o,o)},uo.prototype.componentWillUnmount=function(){this.t=[]},uo.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var r=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=function a(o,s,u){return o&&(o.__c&&o.__c.__H&&(o.__c.__H.__.forEach(function(l){typeof l.__c=="function"&&l.__c()}),o.__c.__H=null),(o=Jf({},o)).__c!=null&&(o.__c.__P===u&&(o.__c.__P=s),o.__c=null),o.__k=o.__k&&o.__k.map(function(l){return a(l,s,u)})),o}(this.__b,r,n.__O=n.__P)}this.__b=null}var i=t.__e&&g(S,null,e.fallback);return i&&(i.__h=null),[g(S,null,t.__e?null:e.children),i]};var ep=function(e,t,r){if(++r[1]===r[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(r=e.u;r;){for(;r.length>3;)r.pop()();if(r[1]>>1,1),t.i.removeChild(n)}}),kn(g(sx,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function cx(e,t){var r=g(lx,{__v:e,i:t});return r.containerInfo=t,r}(Xi.prototype=new pt).__e=function(e){var t=this,r=Zf(t.__v),n=t.o.get(e);return n[0]++,function(i){var a=function(){t.props.revealOrder?(n.push(i),ep(t,e,n)):i()};r?r(a):a()}},Xi.prototype.render=function(e){this.u=null,this.o=new Map;var t=wt(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var r=t.length;r--;)this.o.set(t[r],this.u=[1,0,this.u]);return e.children},Xi.prototype.componentDidUpdate=Xi.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,r){ep(e,r,t)})};var tp=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.element")||60103,ux=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|shape|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,dx=typeof document!="undefined",fx=function(e){return(typeof Symbol!="undefined"&&typeof Symbol()=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(e)};function px(e,t,r){return t.__k==null&&(t.textContent=""),kn(e,t),typeof r=="function"&&r(),e?e.__c:null}function hx(e,t,r){return Ji(e,t),typeof r=="function"&&r(),e?e.__c:null}pt.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(pt.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var np=fe.event;function mx(){}function gx(){return this.cancelBubble}function vx(){return this.defaultPrevented}fe.event=function(e){return np&&(e=np(e)),e.persist=mx,e.isPropagationStopped=gx,e.isDefaultPrevented=vx,e.nativeEvent=e};var rp,ip={configurable:!0,get:function(){return this.class}},ap=fe.vnode;fe.vnode=function(e){var t=e.type,r=e.props,n=r;if(typeof t=="string"){var i=t.indexOf("-")===-1;for(var a in n={},r){var o=r[a];dx&&a==="children"&&t==="noscript"||a==="value"&&"defaultValue"in r&&o==null||(a==="defaultValue"&&"value"in r&&r.value==null?a="value":a==="download"&&o===!0?o="":/ondoubleclick/i.test(a)?a="ondblclick":/^onchange(textarea|input)/i.test(a+t)&&!fx(r.type)?a="oninput":/^onfocus$/i.test(a)?a="onfocusin":/^onblur$/i.test(a)?a="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(a)?a=a.toLowerCase():i&&ux.test(a)?a=a.replace(/[A-Z0-9]/,"-$&").toLowerCase():o===null&&(o=void 0),/^oninput$/i.test(a)&&(a=a.toLowerCase(),n[a]&&(a="oninputCapture")),n[a]=o)}t=="select"&&n.multiple&&Array.isArray(n.value)&&(n.value=wt(r.children).forEach(function(s){s.props.selected=n.value.indexOf(s.props.value)!=-1})),t=="select"&&n.defaultValue!=null&&(n.value=wt(r.children).forEach(function(s){s.props.selected=n.multiple?n.defaultValue.indexOf(s.props.value)!=-1:n.defaultValue==s.props.value})),e.props=n,r.class!=r.className&&(ip.enumerable="className"in r,r.className!=null&&(n.class=r.className),Object.defineProperty(n,"className",ip))}e.$$typeof=tp,ap&&ap(e)};var op=fe.__r;fe.__r=function(e){op&&op(e),rp=e.__c};var yx={ReactCurrentDispatcher:{current:{readContext:function(e){return rp.__n[e.__c].props.value}}}};function bx(e){return g.bind(null,e)}function sp(e){return!!e&&e.$$typeof===tp}function wx(e){return sp(e)?io.apply(null,arguments):e}function Ex(e){return!!e.__k&&(kn(null,e),!0)}function xx(e){return e&&(e.base||e.nodeType===1&&e)||null}var kx=function(e,t){return e(t)},Sx=function(e,t){return e(t)};var F={useState:sr,useReducer:Qi,useEffect:Sn,useLayoutEffect:Ir,useRef:Xt,useImperativeHandle:oo,useMemo:lr,useCallback:cr,useContext:so,useDebugValue:lo,version:"17.0.2",Children:ix,render:px,hydrate:hx,unmountComponentAtNode:Ex,createPortal:cx,createElement:g,createContext:ni,createFactory:bx,cloneElement:wx,createRef:ei,Fragment:S,isValidElement:sp,findDOMNode:xx,Component:pt,PureComponent:Ml,memo:tx,forwardRef:rx,flushSync:Sx,unstable_batchedUpdates:kx,StrictMode:S,Suspense:uo,SuspenseList:Xi,lazy:ox,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:yx};h();function Ze(e){return e.win}function ai(e){return e.doc.body}h();var Ob=ge(xt());h();var Ve=F.createContext(null),po=F.createContext(null);h();var Sp=ge(xt()),mo=ge(require("obsidian"));h();var bp=ge(gp()),dr=ge(xt());h();function vp(e){return Object.prototype.toString.call(e)==="[object Object]"}function yp(e){var t,r;return vp(e)===!1?!1:(t=e.constructor,t===void 0?!0:(r=t.prototype,!(vp(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}h();function jx(e,t){return e.length!==t.length?!1:e.every((r,n,i)=>n===i.length-1?r!==t[n]:r===t[n])}function qx(e,t){return e.length===t.length&&e.every((r,n)=>r===t[n])}var an;(function(i){i[i.Before=0]="Before",i[i.After=1]="After",i[i.Self=2]="Self",i[i.NotSiblings=3]="NotSiblings"})(an||(an={}));function ta(e,t){if(qx(e,t))return 2;if(!jx(e,t))return 3;let r=e.length-1;return e[r]=0;n--)r={children:{[e[n]]:r}};return r}function na(e,t){let r=t;for(let n=e.length-2;n>=0;n--)r={children:{[e[n]]:r}};return r}function wp(e){return na(e,{children:{$splice:[[e[e.length-1],1]]}})}function Ep(e,t,r=0){return na(e,{children:{$splice:[[e[e.length-1]+r,0,...t]]}})}function Jx(e,t){return na(e,{children:{$push:t}})}function Gx(e,t){return na(e,{children:{$unshift:t}})}function xp(e,t,r,n){let i=n?n(ht(e,t)):ht(e,t),o=ta(t,r)===an.After?-1:0,s=wp(t),u=Ep(r,[i],o),l=(0,bp.default)(s,u,{isMergeableObject:d=>yp(d)||Array.isArray(d)});return(0,dr.default)(e,l)}function Lr(e,t){return(0,dr.default)(e,wp(t))}function fr(e,t,r){return(0,dr.default)(e,Ep(t,r))}function Pl(e,t,r){return(0,dr.default)(e,Jx(t,r))}function kp(e,t,r){return(0,dr.default)(e,Gx(t,r))}function ho(e,t,r){return(0,dr.default)(e,Yx(t,r))}function Fl(e,t,r){return(0,dr.default)(e,na(t,r))}var Nl="kanban-plugin";function si(){}function $(e){return`${Nl}__${e}`}function Re(e=9){return Math.random().toString(36).slice(2,2+e)}function Ol(e,t,r,n,i){var l,c;let a=ht(e,t.slice(0,-1)),o=ht(r,n.slice(0,-1)),s=(l=a==null?void 0:a.data)==null?void 0:l.shouldMarkItemsComplete,u=(c=o==null?void 0:o.data)==null?void 0:c.shouldMarkItemsComplete;return!s&&!u||u===!!i.data.isComplete?i:(0,Sp.default)(i,{data:{isComplete:{$set:u}}})}function go(){let e=F.useRef(!1);return{oncompositionstart:()=>{e.current=!0},oncompositionend:()=>{e.current=!1},getShouldIMEBlockAction:()=>e.current}}var Qx=/<%/;async function _p(e,t){let r=t?e.app.vault.getAbstractFileByPath(t):null;if(r&&r instanceof mo.TFile){let n=app.workspace.getActiveViewOfType(mo.MarkdownView);try{(n==null?void 0:n.getMode())!=="source"&&await n.setState({...n.getState(),mode:"source"},{});let{templatesEnabled:i,templaterEnabled:a,templatesPlugin:o,templaterPlugin:s}=Rl(e.app),u=await e.app.vault.read(r);if(i&&a)return Qx.test(u)?await s.append_template_to_active_file(r):await o.instance.insertTemplate(r);if(i)return await o.instance.insertTemplate(r);if(a)return await s.append_template_to_active_file(r);await e.app.vault.modify(e.app.workspace.getActiveFile(),u)}catch(i){console.error(i),e.setError(i)}}}function li(e){var s,u,l,c,d;let t=e.internalPlugins.plugins,r=(s=t["daily-notes"])==null?void 0:s.enabled,n=(u=t["daily-notes"])==null?void 0:u.instance.options.format,i=(l=e.plugins.plugins["nldates-obsidian"])==null?void 0:l.settings.format,a=(c=t.templates)==null?void 0:c.enabled,o=(d=t.templates)==null?void 0:d.instance.options.dateFormat;return r&&n||i||a&&o||"YYYY-MM-DD"}function ra(e){var a,o,s;let t=e.internalPlugins.plugins,r=(a=e.plugins.plugins["nldates-obsidian"])==null?void 0:a.settings.timeFormat,n=(o=t.templates)==null?void 0:o.enabled,i=(s=t.templates)==null?void 0:s.instance.options.timeFormat;return r||n&&i||"HH:mm"}var Cp=/[\\^$.*+?()[\]{}|]/g,Xx=RegExp(Cp.source);function Ln(e){return e&&Xx.test(e)?e.replace(Cp,"\\$&"):e||""}function Rl(e){var s;let t=e.internalPlugins.plugins.templates,r=t.enabled,n=e.plugins.plugins["templater-obsidian"],i=e.plugins.enabledPlugins.has("templater-obsidian"),a=n&&((s=this.app.plugins.plugins["templater-obsidian"].settings)==null?void 0:s.empty_file_template),o=r?t.instance.options.folder:n?n.settings.template_folder:void 0;return{templatesPlugin:t,templatesEnabled:r,templaterPlugin:n==null?void 0:n.templater,templaterEnabled:i,templaterEmptyFileTemplate:a,templateFolder:o}}h();h();function mt(e){if(typeof e=="string"||typeof e=="number")return""+e;let t="";if(Array.isArray(e))for(let r=0,n;r{n.has(t)&&(n.delete(t),n.size===0&&r.push(i))}),r.forEach(n=>{this.idScopes.delete(n),this.scrollStates.delete(n)})}};var kt=F.createContext(null),pr=F.createContext(""),aa=F.createContext(null),oa=F.createContext(new ia),vo=F.createContext(null),yo=F.createContext(null);h();h();h();var Tp={bottom:0,height:0,left:0,right:0,top:0,width:0,x:0,y:0,toJSON(){}},Dp=[0,0,0,0];function Xe(e){return e===void 0?0:e}function bo(e,t,r,n){return[e.left+Xe(t==null?void 0:t.x)+Xe(r==null?void 0:r.x)-Xe(n==null?void 0:n.x),e.top+Xe(t==null?void 0:t.y)+Xe(r==null?void 0:r.y)-Xe(n==null?void 0:n.y),e.left+e.width+Xe(t==null?void 0:t.x)+Xe(r==null?void 0:r.x)-Xe(n==null?void 0:n.x),e.top+e.height+Xe(t==null?void 0:t.y)+Xe(r==null?void 0:r.y)-Xe(n==null?void 0:n.y)]}function Hl(e,t,r,n){let i=bo(e,t,r,null);return n==="top"?(i[3]=i[1]+35,i):n==="right"?(i[0]=i[0]+e.width-35,i):n==="bottom"?(i[1]=i[1]+e.height-35,i):(i[2]=i[0]+35,i)}function wo(e,t,r,n,i,a){return[e-Xe(i==null?void 0:i.x)-Xe(a==null?void 0:a.x),t-Xe(i==null?void 0:i.y)-Xe(a==null?void 0:a.y),r-Xe(i==null?void 0:i.x)-Xe(a==null?void 0:a.x),n-Xe(i==null?void 0:i.y)-Xe(a==null?void 0:a.y)]}var Zx=e=>ek(e,(t,r)=>t{if(o.entityId===r)return 1/0;let s=o.getHitbox(),u=Ip(s)[0],l=tk(t),c=o.getData().sortAxis==="horizontal"?"x":"y",d=l[c]>n[c]?1e3:0;return ci(u,n)+d}),a=Zx(i);return e[a]?e[a]:null}function Kl(e){let{scrollLeft:t,scrollTop:r,scrollWidth:n,scrollHeight:i,offsetWidth:a,offsetHeight:o}=e,s=t,u=r,l=n-a,c=i-o;return{x:s,y:u,maxX:Math.max(l,0),maxY:Math.max(c,0)}}function Ap(e,t,r){let n=Math.trunc((r.x-t.x)*100)/100,i=Math.trunc((r.y-t.y)*100)/100;return[e[0]+n,e[1]+i,e[2]+n,e[3]+i]}function $l(e,t=[0,0,0,0]){let r=e[0]-t[0],n=e[1]-t[1],i=e[2]+t[2],o=e[3]+t[3]-n;return{width:i-r,height:o}}var Ul=class{constructor(t,r,n,i,a,o,s,u,l,c){this.isVisible=!1;this.id=n,this.instanceId=Re(),this.scopeId=r,this.entityId=`${r}-${n}`,this.dndManager=t,this.index=i,this.children=new Map,this.parent=a,this.scrollParent=o,this.getEntityData=c,this.sortManager=s,this.pollForNodes(u,l)}pollForNodes(t,r){!t()||!r()?this.dndManager.win.requestAnimationFrame(()=>this.pollForNodes(t,r)):this.initNodes(t(),r())}initNodes(t,r){var n,i;if(this.entityNode=t,this.measureNode=r,r.dataset.hitboxid=this.entityId,(n=this.sortManager)==null||n.registerSortable(this.entityId,this.getEntity(Tp),t,r),this.scrollParent)this.scrollParent.registerObserverHandler(this.entityId,r,a=>{var s,u;let o=Ze(a.target);if(a.isIntersecting){let l=this.getEntity(a.boundingClientRect);(s=this.parent)==null||s.children.set(this.entityId,{entity:l,manager:this}),this.dndManager.observeResize(r),(!this.parent||this.parent.isVisible)&&(this.dndManager.registerHitboxEntity(this.entityId,l,o),this.children.forEach((c,d)=>{this.dndManager.registerHitboxEntity(d,c.entity,o)}),this.setVisibility(!0))}else this.dndManager.unregisterHitboxEntity(this.entityId,o),this.children.forEach((l,c)=>{this.dndManager.unregisterHitboxEntity(c,o)}),(u=this.parent)==null||u.children.delete(this.entityId),this.dndManager.unobserveResize(r),this.setVisibility(!1)});else{let a=this.getEntity(r.getBoundingClientRect());this.dndManager.observeResize(r),this.dndManager.registerHitboxEntity(this.entityId,a,Ze(t)),(i=this.parent)==null||i.children.set(this.entityId,{entity:a,manager:this}),this.setVisibility(!0)}}setVisibility(t){this.isVisible=t,this.children.forEach(r=>{r.manager.setVisibility(t)})}destroy(){var t,r,n;this.dndManager.unobserveResize(this.measureNode),(t=this.sortManager)==null||t.unregisterSortable(this.entityId),(r=this.scrollParent)==null||r.unregisterObserverHandler(this.entityId,this.measureNode),this.entityNode&&this.dndManager.unregisterHitboxEntity(this.entityId,Ze(this.entityNode)),(n=this.parent)==null||n.children.delete(this.entityId)}getPath(){var t;return[...((t=this.parent)==null?void 0:t.getPath())||[],this.index]}getEntity(t){var n,i;let r=this;return{scopeId:this.scopeId,entityId:this.entityId,initial:bo(t,((n=r.scrollParent)==null?void 0:n.scrollState)||on,((i=r.scrollParent)==null?void 0:i.getScrollShift())||Pn,null),getParentScrollState(){var a;return((a=r.scrollParent)==null?void 0:a.scrollState)||on},getParentScrollShift(){var a;return((a=r.scrollParent)==null?void 0:a.getScrollShift())||Pn},recalcInitial(){var a,o;this.initial=bo(r.measureNode.getBoundingClientRect(),((a=r.scrollParent)==null?void 0:a.scrollState)||on,((o=r.scrollParent)==null?void 0:o.getScrollShift())||Pn,null)},getHitbox(){return wo(this.initial[0],this.initial[1],this.initial[2],this.initial[3],this.getParentScrollState(),this.getParentScrollShift())},getPath(){return r.getPath()},getData(){var a;return{...r.getEntityData(),sortAxis:(a=r.sortManager)==null?void 0:a.axis,win:Ze(r.measureNode)}}}}};var hr=F.memo(function({id:t,index:r,elementRef:n,measureRef:i,children:a,data:o}){let s=F.useContext(kt),u=F.useContext(vo),l=F.useContext(pr),c=F.useContext(yo),d=F.useContext(aa),f=F.useRef(o),p=F.useRef();f.current=o;let m=F.useMemo(()=>{if(s){p.current&&p.current.destroy();let y=new Ul(s,l,t,r,c,d,u,()=>n.current,()=>i.current,()=>f.current);return p.current=y,y}return null},[t,r,s,l,c,d,u]);return F.useEffect(()=>()=>{var y;return(y=p.current)==null?void 0:y.destroy()},[]),m?g(yo.Provider,{value:m},a):null});function Vn(e){let t=F.useContext(yo),r=(t==null?void 0:t.getPath())||[];return e!==void 0&&r.push(e),F.useMemo(()=>r,r)}h();var Du=ge(Wh());h();h();h();h();var fm=ge(dm()),{__extends:OM,__assign:RM,__rest:HM,__decorate:BM,__param:KM,__metadata:$M,__awaiter:bi,__generator:wi,__exportStar:UM,__createBinding:WM,__values:VM,__read:zM,__spread:pm,__spreadArrays:jM,__spreadArray:qM,__await:YM,__asyncGenerator:JM,__asyncDelegator:GM,__asyncValues:QM,__makeTemplateObject:XM,__importStar:ZM,__importDefault:eI,__classPrivateFieldGet:tI,__classPrivateFieldSet:nI,__classPrivateFieldIn:rI}=fm.default;h();var y0=new Map([["avi","video/avi"],["gif","image/gif"],["ico","image/x-icon"],["jpeg","image/jpeg"],["jpg","image/jpeg"],["mkv","video/x-matroska"],["mov","video/quicktime"],["mp4","video/mp4"],["pdf","application/pdf"],["png","image/png"],["zip","application/zip"],["doc","application/msword"],["docx","application/vnd.openxmlformats-officedocument.wordprocessingml.document"]]);function pa(e,t){var r=b0(e);if(typeof r.path!="string"){var n=e.webkitRelativePath;Object.defineProperty(r,"path",{value:typeof t=="string"?t:typeof n=="string"&&n.length>0?n:e.name,writable:!1,configurable:!1,enumerable:!0})}return r}function b0(e){var t=e.name,r=t&&t.lastIndexOf(".")!==-1;if(r&&!e.type){var n=t.split(".").pop().toLowerCase(),i=y0.get(n);i&&Object.defineProperty(e,"type",{value:i,writable:!1,configurable:!1,enumerable:!0})}return e}var w0=[".DS_Store","Thumbs.db"];function lc(e){return bi(this,void 0,void 0,function(){return wi(this,function(t){return[2,E0(e)&&e.dataTransfer?S0(e.dataTransfer,e.type):x0(e)]})})}function E0(e){return!!e.dataTransfer}function x0(e){var t=k0(e.target)?e.target.files?cc(e.target.files):[]:[];return t.map(function(r){return pa(r)})}function k0(e){return e!==null}function S0(e,t){return bi(this,void 0,void 0,function(){var r,n;return wi(this,function(i){switch(i.label){case 0:return e.items?(r=cc(e.items).filter(function(a){return a.kind==="file"}),t!=="drop"?[2,r]:[4,Promise.all(r.map(_0))]):[3,2];case 1:return n=i.sent(),[2,hm(mm(n))];case 2:return[2,hm(cc(e.files).map(function(a){return pa(a)}))]}})})}function hm(e){return e.filter(function(t){return w0.indexOf(t.name)===-1})}function cc(e){for(var t=[],r=0;r".",rangeSeparator:" - ",weekAbbreviation:"Hf",scrollTitle:"Art\u0131rmaq \xFC\xE7\xFCn s\xFCr\xFC\u015Fd\xFCr\xFCn",toggleTitle:"A\xE7 / Ba\u011Fla",amPM:["G\u018F","GS"],time_24hr:!0};$m.l10ns.az=gc;var yI=$m.l10ns;h();var Um=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},vc={weekdays:{shorthand:["\u041D\u0434","\u041F\u043D","\u0410\u045E","\u0421\u0440","\u0427\u0446","\u041F\u0442","\u0421\u0431"],longhand:["\u041D\u044F\u0434\u0437\u0435\u043B\u044F","\u041F\u0430\u043D\u044F\u0434\u0437\u0435\u043B\u0430\u043A","\u0410\u045E\u0442\u043E\u0440\u0430\u043A","\u0421\u0435\u0440\u0430\u0434\u0430","\u0427\u0430\u0446\u0432\u0435\u0440","\u041F\u044F\u0442\u043D\u0456\u0446\u0430","\u0421\u0443\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u0421\u0442\u0443","\u041B\u044E\u0442","\u0421\u0430\u043A","\u041A\u0440\u0430","\u0422\u0440\u0430","\u0427\u044D\u0440","\u041B\u0456\u043F","\u0416\u043D\u0456","\u0412\u0435\u0440","\u041A\u0430\u0441","\u041B\u0456\u0441","\u0421\u043D\u0435"],longhand:["\u0421\u0442\u0443\u0434\u0437\u0435\u043D\u044C","\u041B\u044E\u0442\u044B","\u0421\u0430\u043A\u0430\u0432\u0456\u043A","\u041A\u0440\u0430\u0441\u0430\u0432\u0456\u043A","\u0422\u0440\u0430\u0432\u0435\u043D\u044C","\u0427\u044D\u0440\u0432\u0435\u043D\u044C","\u041B\u0456\u043F\u0435\u043D\u044C","\u0416\u043D\u0456\u0432\u0435\u043D\u044C","\u0412\u0435\u0440\u0430\u0441\u0435\u043D\u044C","\u041A\u0430\u0441\u0442\u0440\u044B\u0447\u043D\u0456\u043A","\u041B\u0456\u0441\u0442\u0430\u043F\u0430\u0434","\u0421\u043D\u0435\u0436\u0430\u043D\u044C"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u0422\u044B\u0434.",scrollTitle:"\u041F\u0440\u0430\u043A\u0440\u0443\u0446\u0456\u0446\u0435 \u0434\u043B\u044F \u043F\u0430\u0432\u0435\u043B\u0456\u0447\u044D\u043D\u043D\u044F",toggleTitle:"\u041D\u0430\u0446\u0456\u0441\u043D\u0456\u0446\u0435 \u0434\u043B\u044F \u043F\u0435\u0440\u0430\u043A\u043B\u044E\u0447\u044D\u043D\u043D\u044F",amPM:["\u0414\u041F","\u041F\u041F"],yearAriaLabel:"\u0413\u043E\u0434",time_24hr:!0};Um.l10ns.be=vc;var wI=Um.l10ns;h();var Wm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},yc={weekdays:{shorthand:["\u041D\u0434","\u041F\u043D","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041F\u0442","\u0421\u0431"],longhand:["\u041D\u0435\u0434\u0435\u043B\u044F","\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u043D\u0438\u043A","\u0412\u0442\u043E\u0440\u043D\u0438\u043A","\u0421\u0440\u044F\u0434\u0430","\u0427\u0435\u0442\u0432\u044A\u0440\u0442\u044A\u043A","\u041F\u0435\u0442\u044A\u043A","\u0421\u044A\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u042F\u043D\u0443","\u0424\u0435\u0432","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440","\u041C\u0430\u0439","\u042E\u043D\u0438","\u042E\u043B\u0438","\u0410\u0432\u0433","\u0421\u0435\u043F","\u041E\u043A\u0442","\u041D\u043E\u0435","\u0414\u0435\u043A"],longhand:["\u042F\u043D\u0443\u0430\u0440\u0438","\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0438\u043B","\u041C\u0430\u0439","\u042E\u043D\u0438","\u042E\u043B\u0438","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043F\u0442\u0435\u043C\u0432\u0440\u0438","\u041E\u043A\u0442\u043E\u043C\u0432\u0440\u0438","\u041D\u043E\u0435\u043C\u0432\u0440\u0438","\u0414\u0435\u043A\u0435\u043C\u0432\u0440\u0438"]},time_24hr:!0,firstDayOfWeek:1};Wm.l10ns.bg=yc;var xI=Wm.l10ns;h();var Vm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},bc={weekdays:{shorthand:["\u09B0\u09AC\u09BF","\u09B8\u09CB\u09AE","\u09AE\u0999\u09CD\u0997\u09B2","\u09AC\u09C1\u09A7","\u09AC\u09C3\u09B9\u09B8\u09CD\u09AA\u09A4\u09BF","\u09B6\u09C1\u0995\u09CD\u09B0","\u09B6\u09A8\u09BF"],longhand:["\u09B0\u09AC\u09BF\u09AC\u09BE\u09B0","\u09B8\u09CB\u09AE\u09AC\u09BE\u09B0","\u09AE\u0999\u09CD\u0997\u09B2\u09AC\u09BE\u09B0","\u09AC\u09C1\u09A7\u09AC\u09BE\u09B0","\u09AC\u09C3\u09B9\u09B8\u09CD\u09AA\u09A4\u09BF\u09AC\u09BE\u09B0","\u09B6\u09C1\u0995\u09CD\u09B0\u09AC\u09BE\u09B0","\u09B6\u09A8\u09BF\u09AC\u09BE\u09B0"]},months:{shorthand:["\u099C\u09BE\u09A8\u09C1","\u09AB\u09C7\u09AC\u09CD\u09B0\u09C1","\u09AE\u09BE\u09B0\u09CD\u099A","\u098F\u09AA\u09CD\u09B0\u09BF\u09B2","\u09AE\u09C7","\u099C\u09C1\u09A8","\u099C\u09C1\u09B2\u09BE\u0987","\u0986\u0997","\u09B8\u09C7\u09AA\u09CD\u099F\u09C7","\u0985\u0995\u09CD\u099F\u09CB","\u09A8\u09AD\u09C7","\u09A1\u09BF\u09B8\u09C7"],longhand:["\u099C\u09BE\u09A8\u09C1\u09AF\u09BC\u09BE\u09B0\u09C0","\u09AB\u09C7\u09AC\u09CD\u09B0\u09C1\u09AF\u09BC\u09BE\u09B0\u09C0","\u09AE\u09BE\u09B0\u09CD\u099A","\u098F\u09AA\u09CD\u09B0\u09BF\u09B2","\u09AE\u09C7","\u099C\u09C1\u09A8","\u099C\u09C1\u09B2\u09BE\u0987","\u0986\u0997\u09B8\u09CD\u099F","\u09B8\u09C7\u09AA\u09CD\u099F\u09C7\u09AE\u09CD\u09AC\u09B0","\u0985\u0995\u09CD\u099F\u09CB\u09AC\u09B0","\u09A8\u09AD\u09C7\u09AE\u09CD\u09AC\u09B0","\u09A1\u09BF\u09B8\u09C7\u09AE\u09CD\u09AC\u09B0"]}};Vm.l10ns.bn=bc;var SI=Vm.l10ns;h();var zm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},wc={firstDayOfWeek:1,weekdays:{shorthand:["Ned","Pon","Uto","Sri","\u010Cet","Pet","Sub"],longhand:["Nedjelja","Ponedjeljak","Utorak","Srijeda","\u010Cetvrtak","Petak","Subota"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],longhand:["Januar","Februar","Mart","April","Maj","Juni","Juli","Avgust","Septembar","Oktobar","Novembar","Decembar"]},time_24hr:!0};zm.l10ns.bs=wc;var CI=zm.l10ns;h();var Ec=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},jo={weekdays:{shorthand:["Dg","Dl","Dt","Dc","Dj","Dv","Ds"],longhand:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"]},months:{shorthand:["Gen","Febr","Mar\xE7","Abr","Maig","Juny","Jul","Ag","Set","Oct","Nov","Des"],longhand:["Gener","Febrer","Mar\xE7","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"]},ordinal:e=>{let t=e%100;if(t>3&&t<21)return"\xE8";switch(t%10){case 1:return"r";case 2:return"n";case 3:return"r";case 4:return"t";default:return"\xE8"}},firstDayOfWeek:1,rangeSeparator:" a ",time_24hr:!0};Ec.l10ns.cat=Ec.l10ns.ca=jo;var DI=Ec.l10ns;h();var jm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},xc={weekdays:{shorthand:["\u06CC\u06D5\u06A9\u0634\u06D5\u0645\u0645\u06D5","\u062F\u0648\u0648\u0634\u06D5\u0645\u0645\u06D5","\u0633\u06CE\u0634\u06D5\u0645\u0645\u06D5","\u0686\u0648\u0627\u0631\u0634\u06D5\u0645\u0645\u06D5","\u067E\u06CE\u0646\u062C\u0634\u06D5\u0645\u0645\u06D5","\u0647\u06D5\u06CC\u0646\u06CC","\u0634\u06D5\u0645\u0645\u06D5"],longhand:["\u06CC\u06D5\u06A9\u0634\u06D5\u0645\u0645\u06D5","\u062F\u0648\u0648\u0634\u06D5\u0645\u0645\u06D5","\u0633\u06CE\u0634\u06D5\u0645\u0645\u06D5","\u0686\u0648\u0627\u0631\u0634\u06D5\u0645\u0645\u06D5","\u067E\u06CE\u0646\u062C\u0634\u06D5\u0645\u0645\u06D5","\u0647\u06D5\u06CC\u0646\u06CC","\u0634\u06D5\u0645\u0645\u06D5"]},months:{shorthand:["\u0695\u06CE\u0628\u06D5\u0646\u062F\u0627\u0646","\u0695\u06D5\u0634\u06D5\u0645\u06D5","\u0646\u06D5\u0648\u0631\u06C6\u0632","\u06AF\u0648\u06B5\u0627\u0646","\u062C\u06C6\u0632\u06D5\u0631\u062F\u0627\u0646","\u067E\u0648\u0648\u0634\u067E\u06D5\u0695","\u06AF\u06D5\u0644\u0627\u0648\u06CE\u0698","\u062E\u06D5\u0631\u0645\u0627\u0646\u0627\u0646","\u0695\u06D5\u0632\u0628\u06D5\u0631","\u06AF\u06D5\u06B5\u0627\u0695\u06CE\u0632\u0627\u0646","\u0633\u06D5\u0631\u0645\u0627\u0648\u06D5\u0632","\u0628\u06D5\u0641\u0631\u0627\u0646\u0628\u0627\u0631"],longhand:["\u0695\u06CE\u0628\u06D5\u0646\u062F\u0627\u0646","\u0695\u06D5\u0634\u06D5\u0645\u06D5","\u0646\u06D5\u0648\u0631\u06C6\u0632","\u06AF\u0648\u06B5\u0627\u0646","\u062C\u06C6\u0632\u06D5\u0631\u062F\u0627\u0646","\u067E\u0648\u0648\u0634\u067E\u06D5\u0695","\u06AF\u06D5\u0644\u0627\u0648\u06CE\u0698","\u062E\u06D5\u0631\u0645\u0627\u0646\u0627\u0646","\u0695\u06D5\u0632\u0628\u06D5\u0631","\u06AF\u06D5\u06B5\u0627\u0695\u06CE\u0632\u0627\u0646","\u0633\u06D5\u0631\u0645\u0627\u0648\u06D5\u0632","\u0628\u06D5\u0641\u0631\u0627\u0646\u0628\u0627\u0631"]},firstDayOfWeek:6,ordinal:()=>""};jm.l10ns.ckb=xc;var II=jm.l10ns;h();var qm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},kc={weekdays:{shorthand:["Ne","Po","\xDAt","St","\u010Ct","P\xE1","So"],longhand:["Ned\u011Ble","Pond\u011Bl\xED","\xDAter\xFD","St\u0159eda","\u010Ctvrtek","P\xE1tek","Sobota"]},months:{shorthand:["Led","\xDAn","B\u0159e","Dub","Kv\u011B","\u010Cer","\u010Cvc","Srp","Z\xE1\u0159","\u0158\xEDj","Lis","Pro"],longhand:["Leden","\xDAnor","B\u0159ezen","Duben","Kv\u011Bten","\u010Cerven","\u010Cervenec","Srpen","Z\xE1\u0159\xED","\u0158\xEDjen","Listopad","Prosinec"]},firstDayOfWeek:1,ordinal:function(){return"."},rangeSeparator:" do ",weekAbbreviation:"T\xFDd.",scrollTitle:"Rolujte pro zm\u011Bnu",toggleTitle:"P\u0159epnout dopoledne/odpoledne",amPM:["dop.","odp."],yearAriaLabel:"Rok",time_24hr:!0};qm.l10ns.cs=kc;var LI=qm.l10ns;h();var Ym=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Sc={weekdays:{shorthand:["Sul","Llun","Maw","Mer","Iau","Gwe","Sad"],longhand:["Dydd Sul","Dydd Llun","Dydd Mawrth","Dydd Mercher","Dydd Iau","Dydd Gwener","Dydd Sadwrn"]},months:{shorthand:["Ion","Chwef","Maw","Ebr","Mai","Meh","Gorff","Awst","Medi","Hyd","Tach","Rhag"],longhand:["Ionawr","Chwefror","Mawrth","Ebrill","Mai","Mehefin","Gorffennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"]},firstDayOfWeek:1,ordinal:e=>e===1?"af":e===2?"ail":e===3||e===4?"ydd":e===5||e===6?"ed":e>=7&&e<=10||e==12||e==15||e==18||e==20?"fed":e==11||e==13||e==14||e==16||e==17||e==19?"eg":e>=21&&e<=39?"ain":"",time_24hr:!0};Ym.l10ns.cy=Sc;var FI=Ym.l10ns;h();var Jm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},_c={weekdays:{shorthand:["s\xF8n","man","tir","ons","tors","fre","l\xF8r"],longhand:["s\xF8ndag","mandag","tirsdag","onsdag","torsdag","fredag","l\xF8rdag"]},months:{shorthand:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],longhand:["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"]},ordinal:()=>".",firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"uge",time_24hr:!0};Jm.l10ns.da=_c;var OI=Jm.l10ns;h();var Gm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Cc={weekdays:{shorthand:["So","Mo","Di","Mi","Do","Fr","Sa"],longhand:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},months:{shorthand:["Jan","Feb","M\xE4r","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],longhand:["Januar","Februar","M\xE4rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]},firstDayOfWeek:1,weekAbbreviation:"KW",rangeSeparator:" bis ",scrollTitle:"Zum \xC4ndern scrollen",toggleTitle:"Zum Umschalten klicken",time_24hr:!0};Gm.l10ns.de=Cc;var HI=Gm.l10ns;h();var Br={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:e=>{let t=e%100;if(t>3&&t<21)return"th";switch(t%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1},qo=Br;h();var Qm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Tc={firstDayOfWeek:1,rangeSeparator:" \u011Dis ",weekAbbreviation:"Sem",scrollTitle:"Rulumu por pligrandigi la valoron",toggleTitle:"Klaku por \u015Dalti",weekdays:{shorthand:["Dim","Lun","Mar","Mer","\u0134a\u016D","Ven","Sab"],longhand:["diman\u0109o","lundo","mardo","merkredo","\u0135a\u016Ddo","vendredo","sabato"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","A\u016Dg","Sep","Okt","Nov","Dec"],longhand:["januaro","februaro","marto","aprilo","majo","junio","julio","a\u016Dgusto","septembro","oktobro","novembro","decembro"]},ordinal:()=>"-a",time_24hr:!0};Qm.l10ns.eo=Tc;var $I=Qm.l10ns;h();var Xm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Dc={weekdays:{shorthand:["Dom","Lun","Mar","Mi\xE9","Jue","Vie","S\xE1b"],longhand:["Domingo","Lunes","Martes","Mi\xE9rcoles","Jueves","Viernes","S\xE1bado"]},months:{shorthand:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],longhand:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"]},ordinal:()=>"\xBA",firstDayOfWeek:1,rangeSeparator:" a ",time_24hr:!0};Xm.l10ns.es=Dc;var WI=Xm.l10ns;h();var Zm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Mc={weekdays:{shorthand:["P","E","T","K","N","R","L"],longhand:["P\xFChap\xE4ev","Esmasp\xE4ev","Teisip\xE4ev","Kolmap\xE4ev","Neljap\xE4ev","Reede","Laup\xE4ev"]},months:{shorthand:["Jaan","Veebr","M\xE4rts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],longhand:["Jaanuar","Veebruar","M\xE4rts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"]},firstDayOfWeek:1,ordinal:function(){return"."},weekAbbreviation:"N\xE4d",rangeSeparator:" kuni ",scrollTitle:"Keri, et suurendada",toggleTitle:"Kl\xF5psa, et vahetada",time_24hr:!0};Zm.l10ns.et=Mc;var zI=Zm.l10ns;h();var eg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Ic={weekdays:{shorthand:["\u06CC\u06A9","\u062F\u0648","\u0633\u0647","\u0686\u0647\u0627\u0631","\u067E\u0646\u062C","\u062C\u0645\u0639\u0647","\u0634\u0646\u0628\u0647"],longhand:["\u06CC\u06A9\u200C\u0634\u0646\u0628\u0647","\u062F\u0648\u0634\u0646\u0628\u0647","\u0633\u0647\u200C\u0634\u0646\u0628\u0647","\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647","\u067E\u0646\u0686\u200C\u0634\u0646\u0628\u0647","\u062C\u0645\u0639\u0647","\u0634\u0646\u0628\u0647"]},months:{shorthand:["\u0698\u0627\u0646\u0648\u06CC\u0647","\u0641\u0648\u0631\u06CC\u0647","\u0645\u0627\u0631\u0633","\u0622\u0648\u0631\u06CC\u0644","\u0645\u0647","\u0698\u0648\u0626\u0646","\u0698\u0648\u0626\u06CC\u0647","\u0627\u0648\u062A","\u0633\u067E\u062A\u0627\u0645\u0628\u0631","\u0627\u06A9\u062A\u0628\u0631","\u0646\u0648\u0627\u0645\u0628\u0631","\u062F\u0633\u0627\u0645\u0628\u0631"],longhand:["\u0698\u0627\u0646\u0648\u06CC\u0647","\u0641\u0648\u0631\u06CC\u0647","\u0645\u0627\u0631\u0633","\u0622\u0648\u0631\u06CC\u0644","\u0645\u0647","\u0698\u0648\u0626\u0646","\u0698\u0648\u0626\u06CC\u0647","\u0627\u0648\u062A","\u0633\u067E\u062A\u0627\u0645\u0628\u0631","\u0627\u06A9\u062A\u0628\u0631","\u0646\u0648\u0627\u0645\u0628\u0631","\u062F\u0633\u0627\u0645\u0628\u0631"]},firstDayOfWeek:6,ordinal:()=>""};eg.l10ns.fa=Ic;var qI=eg.l10ns;h();var tg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Ac={firstDayOfWeek:1,weekdays:{shorthand:["su","ma","ti","ke","to","pe","la"],longhand:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"]},months:{shorthand:["tammi","helmi","maalis","huhti","touko","kes\xE4","hein\xE4","elo","syys","loka","marras","joulu"],longhand:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kes\xE4kuu","hein\xE4kuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"]},ordinal:()=>".",time_24hr:!0};tg.l10ns.fi=Ac;var JI=tg.l10ns;h();var ng=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Lc={weekdays:{shorthand:["Sun","M\xE1n","T\xFDs","Mik","H\xF3s","Fr\xED","Ley"],longhand:["Sunnudagur","M\xE1nadagur","T\xFDsdagur","Mikudagur","H\xF3sdagur","Fr\xEDggjadagur","Leygardagur"]},months:{shorthand:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],longhand:["Januar","Februar","Mars","Apr\xEDl","Mai","Juni","Juli","August","Septembur","Oktobur","Novembur","Desembur"]},ordinal:()=>".",firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"vika",scrollTitle:"Rulla fyri at broyta",toggleTitle:"Tr\xFDst fyri at skifta",yearAriaLabel:"\xC1r",time_24hr:!0};ng.l10ns.fo=Lc;var QI=ng.l10ns;h();var rg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Pc={firstDayOfWeek:1,weekdays:{shorthand:["dim","lun","mar","mer","jeu","ven","sam"],longhand:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},months:{shorthand:["janv","f\xE9vr","mars","avr","mai","juin","juil","ao\xFBt","sept","oct","nov","d\xE9c"],longhand:["janvier","f\xE9vrier","mars","avril","mai","juin","juillet","ao\xFBt","septembre","octobre","novembre","d\xE9cembre"]},ordinal:e=>e>1?"":"er",rangeSeparator:" au ",weekAbbreviation:"Sem",scrollTitle:"D\xE9filer pour augmenter la valeur",toggleTitle:"Cliquer pour basculer",time_24hr:!0};rg.l10ns.fr=Pc;var ZI=rg.l10ns;h();var ig=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Fc={weekdays:{shorthand:["\u039A\u03C5","\u0394\u03B5","\u03A4\u03C1","\u03A4\u03B5","\u03A0\u03AD","\u03A0\u03B1","\u03A3\u03AC"],longhand:["\u039A\u03C5\u03C1\u03B9\u03B1\u03BA\u03AE","\u0394\u03B5\u03C5\u03C4\u03AD\u03C1\u03B1","\u03A4\u03C1\u03AF\u03C4\u03B7","\u03A4\u03B5\u03C4\u03AC\u03C1\u03C4\u03B7","\u03A0\u03AD\u03BC\u03C0\u03C4\u03B7","\u03A0\u03B1\u03C1\u03B1\u03C3\u03BA\u03B5\u03C5\u03AE","\u03A3\u03AC\u03B2\u03B2\u03B1\u03C4\u03BF"]},months:{shorthand:["\u0399\u03B1\u03BD","\u03A6\u03B5\u03B2","\u039C\u03AC\u03C1","\u0391\u03C0\u03C1","\u039C\u03AC\u03B9","\u0399\u03BF\u03CD\u03BD","\u0399\u03BF\u03CD\u03BB","\u0391\u03CD\u03B3","\u03A3\u03B5\u03C0","\u039F\u03BA\u03C4","\u039D\u03BF\u03AD","\u0394\u03B5\u03BA"],longhand:["\u0399\u03B1\u03BD\u03BF\u03C5\u03AC\u03C1\u03B9\u03BF\u03C2","\u03A6\u03B5\u03B2\u03C1\u03BF\u03C5\u03AC\u03C1\u03B9\u03BF\u03C2","\u039C\u03AC\u03C1\u03C4\u03B9\u03BF\u03C2","\u0391\u03C0\u03C1\u03AF\u03BB\u03B9\u03BF\u03C2","\u039C\u03AC\u03B9\u03BF\u03C2","\u0399\u03BF\u03CD\u03BD\u03B9\u03BF\u03C2","\u0399\u03BF\u03CD\u03BB\u03B9\u03BF\u03C2","\u0391\u03CD\u03B3\u03BF\u03C5\u03C3\u03C4\u03BF\u03C2","\u03A3\u03B5\u03C0\u03C4\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2","\u039F\u03BA\u03C4\u03CE\u03B2\u03C1\u03B9\u03BF\u03C2","\u039D\u03BF\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2","\u0394\u03B5\u03BA\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2"]},firstDayOfWeek:1,ordinal:function(){return""},weekAbbreviation:"\u0395\u03B2\u03B4",rangeSeparator:" \u03AD\u03C9\u03C2 ",scrollTitle:"\u039C\u03B5\u03C4\u03B1\u03BA\u03C5\u03BB\u03AE\u03C3\u03C4\u03B5 \u03B3\u03B9\u03B1 \u03C0\u03C1\u03BF\u03C3\u03B1\u03CD\u03BE\u03B7\u03C3\u03B7",toggleTitle:"\u039A\u03AC\u03BD\u03C4\u03B5 \u03BA\u03BB\u03B9\u03BA \u03B3\u03B9\u03B1 \u03B1\u03BB\u03BB\u03B1\u03B3\u03AE",amPM:["\u03A0\u039C","\u039C\u039C"],yearAriaLabel:"\u03C7\u03C1\u03CC\u03BD\u03BF\u03C2",monthAriaLabel:"\u03BC\u03AE\u03BD\u03B1\u03C2",hourAriaLabel:"\u03CE\u03C1\u03B1",minuteAriaLabel:"\u03BB\u03B5\u03C0\u03C4\u03CC"};ig.l10ns.gr=Fc;var tA=ig.l10ns;h();var ag=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Nc={weekdays:{shorthand:["\u05D0","\u05D1","\u05D2","\u05D3","\u05D4","\u05D5","\u05E9"],longhand:["\u05E8\u05D0\u05E9\u05D5\u05DF","\u05E9\u05E0\u05D9","\u05E9\u05DC\u05D9\u05E9\u05D9","\u05E8\u05D1\u05D9\u05E2\u05D9","\u05D7\u05DE\u05D9\u05E9\u05D9","\u05E9\u05D9\u05E9\u05D9","\u05E9\u05D1\u05EA"]},months:{shorthand:["\u05D9\u05E0\u05D5\u05F3","\u05E4\u05D1\u05E8\u05F3","\u05DE\u05E8\u05E5","\u05D0\u05E4\u05E8\u05F3","\u05DE\u05D0\u05D9","\u05D9\u05D5\u05E0\u05D9","\u05D9\u05D5\u05DC\u05D9","\u05D0\u05D5\u05D2\u05F3","\u05E1\u05E4\u05D8\u05F3","\u05D0\u05D5\u05E7\u05F3","\u05E0\u05D5\u05D1\u05F3","\u05D3\u05E6\u05DE\u05F3"],longhand:["\u05D9\u05E0\u05D5\u05D0\u05E8","\u05E4\u05D1\u05E8\u05D5\u05D0\u05E8","\u05DE\u05E8\u05E5","\u05D0\u05E4\u05E8\u05D9\u05DC","\u05DE\u05D0\u05D9","\u05D9\u05D5\u05E0\u05D9","\u05D9\u05D5\u05DC\u05D9","\u05D0\u05D5\u05D2\u05D5\u05E1\u05D8","\u05E1\u05E4\u05D8\u05DE\u05D1\u05E8","\u05D0\u05D5\u05E7\u05D8\u05D5\u05D1\u05E8","\u05E0\u05D5\u05D1\u05DE\u05D1\u05E8","\u05D3\u05E6\u05DE\u05D1\u05E8"]},rangeSeparator:" \u05D0\u05DC ",time_24hr:!0};ag.l10ns.he=Nc;var rA=ag.l10ns;h();var og=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Oc={weekdays:{shorthand:["\u0930\u0935\u093F","\u0938\u094B\u092E","\u092E\u0902\u0917\u0932","\u092C\u0941\u0927","\u0917\u0941\u0930\u0941","\u0936\u0941\u0915\u094D\u0930","\u0936\u0928\u093F"],longhand:["\u0930\u0935\u093F\u0935\u093E\u0930","\u0938\u094B\u092E\u0935\u093E\u0930","\u092E\u0902\u0917\u0932\u0935\u093E\u0930","\u092C\u0941\u0927\u0935\u093E\u0930","\u0917\u0941\u0930\u0941\u0935\u093E\u0930","\u0936\u0941\u0915\u094D\u0930\u0935\u093E\u0930","\u0936\u0928\u093F\u0935\u093E\u0930"]},months:{shorthand:["\u091C\u0928","\u092B\u0930","\u092E\u093E\u0930\u094D\u091A","\u0905\u092A\u094D\u0930\u0947\u0932","\u092E\u0908","\u091C\u0942\u0928","\u091C\u0942\u0932\u093E\u0908","\u0905\u0917","\u0938\u093F\u0924","\u0905\u0915\u094D\u091F","\u0928\u0935","\u0926\u093F"],longhand:["\u091C\u0928\u0935\u0930\u0940 ","\u092B\u0930\u0935\u0930\u0940","\u092E\u093E\u0930\u094D\u091A","\u0905\u092A\u094D\u0930\u0947\u0932","\u092E\u0908","\u091C\u0942\u0928","\u091C\u0942\u0932\u093E\u0908","\u0905\u0917\u0938\u094D\u0924 ","\u0938\u093F\u0924\u092E\u094D\u092C\u0930","\u0905\u0915\u094D\u091F\u0942\u092C\u0930","\u0928\u0935\u092E\u094D\u092C\u0930","\u0926\u093F\u0938\u092E\u094D\u092C\u0930"]}};og.l10ns.hi=Oc;var aA=og.l10ns;h();var sg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Rc={firstDayOfWeek:1,weekdays:{shorthand:["Ned","Pon","Uto","Sri","\u010Cet","Pet","Sub"],longhand:["Nedjelja","Ponedjeljak","Utorak","Srijeda","\u010Cetvrtak","Petak","Subota"]},months:{shorthand:["Sij","Velj","O\u017Eu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],longhand:["Sije\u010Danj","Velja\u010Da","O\u017Eujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"]},time_24hr:!0};sg.l10ns.hr=Rc;var sA=sg.l10ns;h();var lg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Hc={firstDayOfWeek:1,weekdays:{shorthand:["V","H","K","Sz","Cs","P","Szo"],longhand:["Vas\xE1rnap","H\xE9tf\u0151","Kedd","Szerda","Cs\xFCt\xF6rt\xF6k","P\xE9ntek","Szombat"]},months:{shorthand:["Jan","Feb","M\xE1r","\xC1pr","M\xE1j","J\xFAn","J\xFAl","Aug","Szep","Okt","Nov","Dec"],longhand:["Janu\xE1r","Febru\xE1r","M\xE1rcius","\xC1prilis","M\xE1jus","J\xFAnius","J\xFAlius","Augusztus","Szeptember","Okt\xF3ber","November","December"]},ordinal:function(){return"."},weekAbbreviation:"H\xE9t",scrollTitle:"G\xF6rgessen",toggleTitle:"Kattintson a v\xE1lt\xE1shoz",rangeSeparator:" - ",time_24hr:!0};lg.l10ns.hu=Hc;var cA=lg.l10ns;h();var cg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Bc={weekdays:{shorthand:["\u053F\u056B\u0580","\u0535\u0580\u056F","\u0535\u0580\u0584","\u0549\u0580\u0584","\u0540\u0576\u0563","\u0548\u0582\u0580\u0562","\u0547\u0562\u0569"],longhand:["\u053F\u056B\u0580\u0561\u056F\u056B","\u0535\u056F\u0578\u0582\u0577\u0561\u0562\u0569\u056B","\u0535\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056B","\u0549\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056B","\u0540\u056B\u0576\u0563\u0577\u0561\u0562\u0569\u056B","\u0548\u0582\u0580\u0562\u0561\u0569","\u0547\u0561\u0562\u0561\u0569"]},months:{shorthand:["\u0540\u0576\u057E","\u0553\u057F\u0580","\u0544\u0561\u0580","\u0531\u057A\u0580","\u0544\u0561\u0575","\u0540\u0576\u057D","\u0540\u056C\u057D","\u0555\u0563\u057D","\u054D\u0565\u057A","\u0540\u0578\u056F","\u0546\u0574\u0562","\u0534\u0565\u056F"],longhand:["\u0540\u0578\u0582\u0576\u057E\u0561\u0580","\u0553\u0565\u057F\u0580\u057E\u0561\u0580","\u0544\u0561\u0580\u057F","\u0531\u057A\u0580\u056B\u056C","\u0544\u0561\u0575\u056B\u057D","\u0540\u0578\u0582\u0576\u056B\u057D","\u0540\u0578\u0582\u056C\u056B\u057D","\u0555\u0563\u0578\u057D\u057F\u0578\u057D","\u054D\u0565\u057A\u057F\u0565\u0574\u0562\u0565\u0580","\u0540\u0578\u056F\u057F\u0565\u0574\u0562\u0565\u0580","\u0546\u0578\u0575\u0565\u0574\u0562\u0565\u0580","\u0534\u0565\u056F\u057F\u0565\u0574\u0562\u0565\u0580"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u0547\u0532\u054F",scrollTitle:"\u0548\u056C\u0578\u0580\u0565\u0584\u055D \u0574\u0565\u056E\u0561\u0581\u0576\u0565\u056C\u0578\u0582 \u0570\u0561\u0574\u0561\u0580",toggleTitle:"\u054D\u0565\u0572\u0574\u0565\u0584\u055D \u0583\u0578\u056D\u0565\u056C\u0578\u0582 \u0570\u0561\u0574\u0561\u0580",amPM:["\u0544\u053F","\u053F\u0540"],yearAriaLabel:"\u054F\u0561\u0580\u056B",monthAriaLabel:"\u0531\u0574\u056B\u057D",hourAriaLabel:"\u053A\u0561\u0574",minuteAriaLabel:"\u0550\u0578\u057A\u0565",time_24hr:!0};cg.l10ns.hy=Bc;var dA=cg.l10ns;h();var ug=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Kc={weekdays:{shorthand:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],longhand:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},months:{shorthand:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agu","Sep","Okt","Nov","Des"],longhand:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"]},firstDayOfWeek:1,ordinal:()=>"",time_24hr:!0,rangeSeparator:" - "};ug.l10ns.id=Kc;var pA=ug.l10ns;h();var dg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},$c={weekdays:{shorthand:["Sun","M\xE1n","\xDEri","Mi\xF0","Fim","F\xF6s","Lau"],longhand:["Sunnudagur","M\xE1nudagur","\xDEri\xF0judagur","Mi\xF0vikudagur","Fimmtudagur","F\xF6studagur","Laugardagur"]},months:{shorthand:["Jan","Feb","Mar","Apr","Ma\xED","J\xFAn","J\xFAl","\xC1g\xFA","Sep","Okt","N\xF3v","Des"],longhand:["Jan\xFAar","Febr\xFAar","Mars","Apr\xEDl","Ma\xED","J\xFAn\xED","J\xFAl\xED","\xC1g\xFAst","September","Okt\xF3ber","N\xF3vember","Desember"]},ordinal:()=>".",firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"vika",yearAriaLabel:"\xC1r",time_24hr:!0};dg.l10ns.is=$c;var mA=dg.l10ns;h();var fg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Uc={weekdays:{shorthand:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],longhand:["Domenica","Luned\xEC","Marted\xEC","Mercoled\xEC","Gioved\xEC","Venerd\xEC","Sabato"]},months:{shorthand:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],longhand:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"]},firstDayOfWeek:1,ordinal:()=>"\xB0",rangeSeparator:" al ",weekAbbreviation:"Se",scrollTitle:"Scrolla per aumentare",toggleTitle:"Clicca per cambiare",time_24hr:!0};fg.l10ns.it=Uc;var vA=fg.l10ns;h();var pg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Wc={weekdays:{shorthand:["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"],longhand:["\u65E5\u66DC\u65E5","\u6708\u66DC\u65E5","\u706B\u66DC\u65E5","\u6C34\u66DC\u65E5","\u6728\u66DC\u65E5","\u91D1\u66DC\u65E5","\u571F\u66DC\u65E5"]},months:{shorthand:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],longhand:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"]},time_24hr:!0,rangeSeparator:" \u304B\u3089 ",monthAriaLabel:"\u6708",amPM:["\u5348\u524D","\u5348\u5F8C"],yearAriaLabel:"\u5E74",hourAriaLabel:"\u6642\u9593",minuteAriaLabel:"\u5206"};pg.l10ns.ja=Wc;var bA=pg.l10ns;h();var hg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Vc={weekdays:{shorthand:["\u10D9\u10D5","\u10DD\u10E0","\u10E1\u10D0","\u10DD\u10D7","\u10EE\u10E3","\u10DE\u10D0","\u10E8\u10D0"],longhand:["\u10D9\u10D5\u10D8\u10E0\u10D0","\u10DD\u10E0\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10E1\u10D0\u10DB\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10DD\u10D7\u10EE\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10EE\u10E3\u10D7\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10DE\u10D0\u10E0\u10D0\u10E1\u10D9\u10D4\u10D5\u10D8","\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8"]},months:{shorthand:["\u10D8\u10D0\u10DC","\u10D7\u10D4\u10D1","\u10DB\u10D0\u10E0","\u10D0\u10DE\u10E0","\u10DB\u10D0\u10D8","\u10D8\u10D5\u10DC","\u10D8\u10D5\u10DA","\u10D0\u10D2\u10D5","\u10E1\u10D4\u10E5","\u10DD\u10E5\u10E2","\u10DC\u10DD\u10D4","\u10D3\u10D4\u10D9"],longhand:["\u10D8\u10D0\u10DC\u10D5\u10D0\u10E0\u10D8","\u10D7\u10D4\u10D1\u10D4\u10E0\u10D5\u10D0\u10DA\u10D8","\u10DB\u10D0\u10E0\u10E2\u10D8","\u10D0\u10DE\u10E0\u10D8\u10DA\u10D8","\u10DB\u10D0\u10D8\u10E1\u10D8","\u10D8\u10D5\u10DC\u10D8\u10E1\u10D8","\u10D8\u10D5\u10DA\u10D8\u10E1\u10D8","\u10D0\u10D2\u10D5\u10D8\u10E1\u10E2\u10DD","\u10E1\u10D4\u10E5\u10E2\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8","\u10DD\u10E5\u10E2\u10DD\u10DB\u10D1\u10D4\u10E0\u10D8","\u10DC\u10DD\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8","\u10D3\u10D4\u10D9\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u10D9\u10D5.",scrollTitle:"\u10D3\u10D0\u10E1\u10E5\u10E0\u10DD\u10DA\u10D4\u10D7 \u10D2\u10D0\u10E1\u10D0\u10D3\u10D8\u10D3\u10D4\u10D1\u10DA\u10D0\u10D3",toggleTitle:"\u10D3\u10D0\u10D0\u10D9\u10DA\u10D8\u10D9\u10D4\u10D7 \u10D2\u10D0\u10D3\u10D0\u10E0\u10D7\u10D5\u10D8\u10E1\u10D7\u10D5\u10D8\u10E1",amPM:["AM","PM"],yearAriaLabel:"\u10EC\u10D4\u10DA\u10D8",time_24hr:!0};hg.l10ns.ka=Vc;var EA=hg.l10ns;h();var mg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},zc={weekdays:{shorthand:["\u17A2\u17B6\u1791\u17B7\u178F\u17D2\u1799","\u1785\u1793\u17D2\u1791","\u17A2\u1784\u17D2\u1782\u17B6\u179A","\u1796\u17BB\u1792","\u1796\u17D2\u179A\u17A0\u179F.","\u179F\u17BB\u1780\u17D2\u179A","\u179F\u17C5\u179A\u17CD"],longhand:["\u17A2\u17B6\u1791\u17B7\u178F\u17D2\u1799","\u1785\u1793\u17D2\u1791","\u17A2\u1784\u17D2\u1782\u17B6\u179A","\u1796\u17BB\u1792","\u1796\u17D2\u179A\u17A0\u179F\u17D2\u1794\u178F\u17B7\u17CD","\u179F\u17BB\u1780\u17D2\u179A","\u179F\u17C5\u179A\u17CD"]},months:{shorthand:["\u1798\u1780\u179A\u17B6","\u1780\u17BB\u1798\u17D2\u1797\u17C7","\u1798\u17B8\u1793\u17B6","\u1798\u17C1\u179F\u17B6","\u17A7\u179F\u1797\u17B6","\u1798\u17B7\u1790\u17BB\u1793\u17B6","\u1780\u1780\u17D2\u1780\u178A\u17B6","\u179F\u17B8\u17A0\u17B6","\u1780\u1789\u17D2\u1789\u17B6","\u178F\u17BB\u179B\u17B6","\u179C\u17B7\u1785\u17D2\u1786\u17B7\u1780\u17B6","\u1792\u17D2\u1793\u17BC"],longhand:["\u1798\u1780\u179A\u17B6","\u1780\u17BB\u1798\u17D2\u1797\u17C7","\u1798\u17B8\u1793\u17B6","\u1798\u17C1\u179F\u17B6","\u17A7\u179F\u1797\u17B6","\u1798\u17B7\u1790\u17BB\u1793\u17B6","\u1780\u1780\u17D2\u1780\u178A\u17B6","\u179F\u17B8\u17A0\u17B6","\u1780\u1789\u17D2\u1789\u17B6","\u178F\u17BB\u179B\u17B6","\u179C\u17B7\u1785\u17D2\u1786\u17B7\u1780\u17B6","\u1792\u17D2\u1793\u17BC"]},ordinal:()=>"",firstDayOfWeek:1,rangeSeparator:" \u178A\u179B\u17CB ",weekAbbreviation:"\u179F\u1794\u17D2\u178F\u17B6\u17A0\u17CD",scrollTitle:"\u179A\u17C6\u1780\u17B7\u179B\u178A\u17BE\u1798\u17D2\u1794\u17B8\u1794\u1784\u17D2\u1780\u17BE\u1793",toggleTitle:"\u1785\u17BB\u1785\u178A\u17BE\u1798\u17D2\u1794\u17B8\u1795\u17D2\u179B\u17B6\u179F\u17CB\u1794\u17D2\u178A\u17BC\u179A",yearAriaLabel:"\u1786\u17D2\u1793\u17B6\u17C6",time_24hr:!0};mg.l10ns.km=zc;var kA=mg.l10ns;h();var gg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},jc={weekdays:{shorthand:["\uC77C","\uC6D4","\uD654","\uC218","\uBAA9","\uAE08","\uD1A0"],longhand:["\uC77C\uC694\uC77C","\uC6D4\uC694\uC77C","\uD654\uC694\uC77C","\uC218\uC694\uC77C","\uBAA9\uC694\uC77C","\uAE08\uC694\uC77C","\uD1A0\uC694\uC77C"]},months:{shorthand:["1\uC6D4","2\uC6D4","3\uC6D4","4\uC6D4","5\uC6D4","6\uC6D4","7\uC6D4","8\uC6D4","9\uC6D4","10\uC6D4","11\uC6D4","12\uC6D4"],longhand:["1\uC6D4","2\uC6D4","3\uC6D4","4\uC6D4","5\uC6D4","6\uC6D4","7\uC6D4","8\uC6D4","9\uC6D4","10\uC6D4","11\uC6D4","12\uC6D4"]},ordinal:()=>"\uC77C",rangeSeparator:" ~ ",amPM:["\uC624\uC804","\uC624\uD6C4"]};gg.l10ns.ko=jc;var _A=gg.l10ns;h();var vg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},qc={weekdays:{shorthand:["\u0416\u0441","\u0414\u0441","\u0421c","\u0421\u0440","\u0411\u0441","\u0416\u043C","\u0421\u0431"],longhand:["\u0416\u0435\u043A\u0441\u0435\u043D\u0431i","\u0414\u04AF\u0439\u0441\u0435\u043D\u0431i","\u0421\u0435\u0439\u0441\u0435\u043D\u0431i","\u0421\u04D9\u0440\u0441\u0435\u043D\u0431i","\u0411\u0435\u0439\u0441\u0435\u043D\u0431i","\u0416\u04B1\u043C\u0430","\u0421\u0435\u043D\u0431i"]},months:{shorthand:["\u049A\u0430\u04A3","\u0410\u049B\u043F","\u041D\u0430\u0443","\u0421\u04D9\u0443","\u041C\u0430\u043C","\u041C\u0430\u0443","\u0428i\u043B","\u0422\u0430\u043C","\u049A\u044B\u0440","\u049A\u0430\u0437","\u049A\u0430\u0440","\u0416\u0435\u043B"],longhand:["\u049A\u0430\u04A3\u0442\u0430\u0440","\u0410\u049B\u043F\u0430\u043D","\u041D\u0430\u0443\u0440\u044B\u0437","\u0421\u04D9\u0443i\u0440","\u041C\u0430\u043C\u044B\u0440","\u041C\u0430\u0443\u0441\u044B\u043C","\u0428i\u043B\u0434\u0435","\u0422\u0430\u043C\u044B\u0437","\u049A\u044B\u0440\u043A\u04AF\u0439\u0435\u043A","\u049A\u0430\u0437\u0430\u043D","\u049A\u0430\u0440\u0430\u0448\u0430","\u0416\u0435\u043B\u0442\u043E\u049B\u0441\u0430\u043D"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u0410\u043F\u0442\u0430",scrollTitle:"\u04AE\u043B\u043A\u0435\u0439\u0442\u0443 \u04AF\u0448\u0456\u043D \u0430\u0439\u043D\u0430\u043B\u0434\u044B\u0440\u044B\u04A3\u044B\u0437",toggleTitle:"\u0410\u0443\u044B\u0441\u0442\u044B\u0440\u0443 \u04AF\u0448\u0456\u043D \u0431\u0430\u0441\u044B\u04A3\u044B\u0437",amPM:["\u0422\u0414","\u0422\u041A"],yearAriaLabel:"\u0416\u044B\u043B"};vg.l10ns.kz=qc;var TA=vg.l10ns;h();var yg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Yc={weekdays:{shorthand:["S","Pr","A","T","K","Pn","\u0160"],longhand:["Sekmadienis","Pirmadienis","Antradienis","Tre\u010Diadienis","Ketvirtadienis","Penktadienis","\u0160e\u0161tadienis"]},months:{shorthand:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rgp","Rgs","Spl","Lap","Grd"],longhand:["Sausis","Vasaris","Kovas","Balandis","Gegu\u017E\u0117","Bir\u017Eelis","Liepa","Rugpju\u0304tis","Rugse\u0307jis","Spalis","Lapkritis","Gruodis"]},firstDayOfWeek:1,ordinal:function(){return"-a"},rangeSeparator:" iki ",weekAbbreviation:"Sav",scrollTitle:"Keisti laik\u0105 pel\u0117s rateliu",toggleTitle:"Perjungti laiko format\u0105",time_24hr:!0};yg.l10ns.lt=Yc;var MA=yg.l10ns;h();var bg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Jc={firstDayOfWeek:1,weekdays:{shorthand:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],longhand:["Sv\u0113tdiena","Pirmdiena","Otrdiena","Tre\u0161diena","Ceturtdiena","Piektdiena","Sestdiena"]},months:{shorthand:["Jan","Feb","Mar","Apr","Mai","J\u016Bn","J\u016Bl","Aug","Sep","Okt","Nov","Dec"],longhand:["Janv\u0101ris","Febru\u0101ris","Marts","Apr\u012Blis","Maijs","J\u016Bnijs","J\u016Blijs","Augusts","Septembris","Oktobris","Novembris","Decembris"]},rangeSeparator:" l\u012Bdz ",time_24hr:!0};bg.l10ns.lv=Jc;var AA=bg.l10ns;h();var wg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Gc={weekdays:{shorthand:["\u041D\u0435","\u041F\u043E","\u0412\u0442","\u0421\u0440","\u0427\u0435","\u041F\u0435","\u0421\u0430"],longhand:["\u041D\u0435\u0434\u0435\u043B\u0430","\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u043D\u0438\u043A","\u0412\u0442\u043E\u0440\u043D\u0438\u043A","\u0421\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0440\u0442\u043E\u043A","\u041F\u0435\u0442\u043E\u043A","\u0421\u0430\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u0408\u0430\u043D","\u0424\u0435\u0432","\u041C\u0430\u0440","\u0410\u043F\u0440","\u041C\u0430\u0458","\u0408\u0443\u043D","\u0408\u0443\u043B","\u0410\u0432\u0433","\u0421\u0435\u043F","\u041E\u043A\u0442","\u041D\u043E\u0435","\u0414\u0435\u043A"],longhand:["\u0408\u0430\u043D\u0443\u0430\u0440\u0438","\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0438\u043B","\u041C\u0430\u0458","\u0408\u0443\u043D\u0438","\u0408\u0443\u043B\u0438","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043F\u0442\u0435\u043C\u0432\u0440\u0438","\u041E\u043A\u0442\u043E\u043C\u0432\u0440\u0438","\u041D\u043E\u0435\u043C\u0432\u0440\u0438","\u0414\u0435\u043A\u0435\u043C\u0432\u0440\u0438"]},firstDayOfWeek:1,weekAbbreviation:"\u041D\u0435\u0434.",rangeSeparator:" \u0434\u043E ",time_24hr:!0};wg.l10ns.mk=Gc;var PA=wg.l10ns;h();var Eg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Qc={firstDayOfWeek:1,weekdays:{shorthand:["\u0414\u0430","\u041C\u044F","\u041B\u0445","\u041F\u04AF","\u0411\u0430","\u0411\u044F","\u041D\u044F"],longhand:["\u0414\u0430\u0432\u0430\u0430","\u041C\u044F\u0433\u043C\u0430\u0440","\u041B\u0445\u0430\u0433\u0432\u0430","\u041F\u04AF\u0440\u044D\u0432","\u0411\u0430\u0430\u0441\u0430\u043D","\u0411\u044F\u043C\u0431\u0430","\u041D\u044F\u043C"]},months:{shorthand:["1-\u0440 \u0441\u0430\u0440","2-\u0440 \u0441\u0430\u0440","3-\u0440 \u0441\u0430\u0440","4-\u0440 \u0441\u0430\u0440","5-\u0440 \u0441\u0430\u0440","6-\u0440 \u0441\u0430\u0440","7-\u0440 \u0441\u0430\u0440","8-\u0440 \u0441\u0430\u0440","9-\u0440 \u0441\u0430\u0440","10-\u0440 \u0441\u0430\u0440","11-\u0440 \u0441\u0430\u0440","12-\u0440 \u0441\u0430\u0440"],longhand:["\u041D\u044D\u0433\u0434\u04AF\u0433\u044D\u044D\u0440 \u0441\u0430\u0440","\u0425\u043E\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0414\u04E9\u0440\u04E9\u0432\u0434\u04AF\u0433\u044D\u044D\u0440 \u0441\u0430\u0440","\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0417\u0443\u0440\u0433\u0430\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0414\u043E\u043B\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u041D\u0430\u0439\u043C\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0415\u0441\u0434\u04AF\u0433\u044D\u044D\u0440 \u0441\u0430\u0440","\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0410\u0440\u0432\u0430\u043D\u043D\u044D\u0433\u0434\u04AF\u0433\u044D\u044D\u0440 \u0441\u0430\u0440","\u0410\u0440\u0432\u0430\u043D\u0445\u043E\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440"]},rangeSeparator:"-\u0441 ",time_24hr:!0};Eg.l10ns.mn=Qc;var NA=Eg.l10ns;h();var J0=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},xg={weekdays:{shorthand:["Aha","Isn","Sel","Rab","Kha","Jum","Sab"],longhand:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"]},months:{shorthand:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],longhand:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"]},firstDayOfWeek:1,ordinal:()=>""},RA=J0.l10ns;h();var kg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Xc={weekdays:{shorthand:["\u1014\u103D\u1031","\u101C\u102C","\u1002\u102B","\u101F\u1030\u1038","\u1000\u103C\u102C","\u101E\u1031\u102C","\u1014\u1031"],longhand:["\u1010\u1014\u1004\u103A\u1039\u1002\u1014\u103D\u1031","\u1010\u1014\u1004\u103A\u1039\u101C\u102C","\u1021\u1004\u103A\u1039\u1002\u102B","\u1017\u102F\u1012\u1039\u1013\u101F\u1030\u1038","\u1000\u103C\u102C\u101E\u1015\u1010\u1031\u1038","\u101E\u1031\u102C\u1000\u103C\u102C","\u1005\u1014\u1031"]},months:{shorthand:["\u1007\u1014\u103A","\u1016\u1031","\u1019\u1010\u103A","\u1015\u103C\u102E","\u1019\u1031","\u1007\u103D\u1014\u103A","\u101C\u102D\u102F\u1004\u103A","\u101E\u103C","\u1005\u1000\u103A","\u1021\u1031\u102C\u1000\u103A","\u1014\u102D\u102F","\u1012\u102E"],longhand:["\u1007\u1014\u103A\u1014\u101D\u102B\u101B\u102E","\u1016\u1031\u1016\u1031\u102C\u103A\u101D\u102B\u101B\u102E","\u1019\u1010\u103A","\u1027\u1015\u103C\u102E","\u1019\u1031","\u1007\u103D\u1014\u103A","\u1007\u1030\u101C\u102D\u102F\u1004\u103A","\u101E\u103C\u1002\u102F\u1010\u103A","\u1005\u1000\u103A\u1010\u1004\u103A\u1018\u102C","\u1021\u1031\u102C\u1000\u103A\u1010\u102D\u102F\u1018\u102C","\u1014\u102D\u102F\u101D\u1004\u103A\u1018\u102C","\u1012\u102E\u1007\u1004\u103A\u1018\u102C"]},firstDayOfWeek:1,ordinal:()=>"",time_24hr:!0};kg.l10ns.my=Xc;var BA=kg.l10ns;h();var Sg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Zc={weekdays:{shorthand:["zo","ma","di","wo","do","vr","za"],longhand:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]},months:{shorthand:["jan","feb","mrt","apr","mei","jun","jul","aug","sept","okt","nov","dec"],longhand:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"]},firstDayOfWeek:1,weekAbbreviation:"wk",rangeSeparator:" t/m ",scrollTitle:"Scroll voor volgende / vorige",toggleTitle:"Klik om te wisselen",time_24hr:!0,ordinal:e=>e===1||e===8||e>=20?"ste":"de"};Sg.l10ns.nl=Zc;var $A=Sg.l10ns;h();var _g=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},eu={weekdays:{shorthand:["S\xF8.","M\xE5.","Ty.","On.","To.","Fr.","La."],longhand:["S\xF8ndag","M\xE5ndag","Tysdag","Onsdag","Torsdag","Fredag","Laurdag"]},months:{shorthand:["Jan","Feb","Mars","Apr","Mai","Juni","Juli","Aug","Sep","Okt","Nov","Des"],longhand:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"]},firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"Veke",scrollTitle:"Scroll for \xE5 endre",toggleTitle:"Klikk for \xE5 veksle",time_24hr:!0,ordinal:()=>"."};_g.l10ns.nn=eu;var WA=_g.l10ns;h();var Cg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},tu={weekdays:{shorthand:["S\xF8n","Man","Tir","Ons","Tor","Fre","L\xF8r"],longhand:["S\xF8ndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","L\xF8rdag"]},months:{shorthand:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],longhand:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"]},firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"Uke",scrollTitle:"Scroll for \xE5 endre",toggleTitle:"Klikk for \xE5 veksle",time_24hr:!0,ordinal:()=>"."};Cg.l10ns.no=tu;var zA=Cg.l10ns;h();var Tg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},nu={weekdays:{shorthand:["\u0A10\u0A24","\u0A38\u0A4B\u0A2E","\u0A2E\u0A70\u0A17\u0A32","\u0A2C\u0A41\u0A71\u0A27","\u0A35\u0A40\u0A30","\u0A38\u0A3C\u0A41\u0A71\u0A15\u0A30","\u0A38\u0A3C\u0A28\u0A3F\u0A71\u0A1A\u0A30"],longhand:["\u0A10\u0A24\u0A35\u0A3E\u0A30","\u0A38\u0A4B\u0A2E\u0A35\u0A3E\u0A30","\u0A2E\u0A70\u0A17\u0A32\u0A35\u0A3E\u0A30","\u0A2C\u0A41\u0A71\u0A27\u0A35\u0A3E\u0A30","\u0A35\u0A40\u0A30\u0A35\u0A3E\u0A30","\u0A38\u0A3C\u0A41\u0A71\u0A15\u0A30\u0A35\u0A3E\u0A30","\u0A38\u0A3C\u0A28\u0A3F\u0A71\u0A1A\u0A30\u0A35\u0A3E\u0A30"]},months:{shorthand:["\u0A1C\u0A28","\u0A2B\u0A3C\u0A30","\u0A2E\u0A3E\u0A30","\u0A05\u0A2A\u0A4D\u0A30\u0A48","\u0A2E\u0A08","\u0A1C\u0A42\u0A28","\u0A1C\u0A41\u0A32\u0A3E","\u0A05\u0A17","\u0A38\u0A24\u0A70","\u0A05\u0A15","\u0A28\u0A35\u0A70","\u0A26\u0A38\u0A70"],longhand:["\u0A1C\u0A28\u0A35\u0A30\u0A40","\u0A2B\u0A3C\u0A30\u0A35\u0A30\u0A40","\u0A2E\u0A3E\u0A30\u0A1A","\u0A05\u0A2A\u0A4D\u0A30\u0A48\u0A32","\u0A2E\u0A08","\u0A1C\u0A42\u0A28","\u0A1C\u0A41\u0A32\u0A3E\u0A08","\u0A05\u0A17\u0A38\u0A24","\u0A38\u0A24\u0A70\u0A2C\u0A30","\u0A05\u0A15\u0A24\u0A42\u0A2C\u0A30","\u0A28\u0A35\u0A70\u0A2C\u0A30","\u0A26\u0A38\u0A70\u0A2C\u0A30"]},time_24hr:!0};Tg.l10ns.pa=nu;var qA=Tg.l10ns;h();var Dg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},ru={weekdays:{shorthand:["Nd","Pn","Wt","\u015Ar","Cz","Pt","So"],longhand:["Niedziela","Poniedzia\u0142ek","Wtorek","\u015Aroda","Czwartek","Pi\u0105tek","Sobota"]},months:{shorthand:["Sty","Lut","Mar","Kwi","Maj","Cze","Lip","Sie","Wrz","Pa\u017A","Lis","Gru"],longhand:["Stycze\u0144","Luty","Marzec","Kwiecie\u0144","Maj","Czerwiec","Lipiec","Sierpie\u0144","Wrzesie\u0144","Pa\u017Adziernik","Listopad","Grudzie\u0144"]},rangeSeparator:" do ",weekAbbreviation:"tydz.",scrollTitle:"Przewi\u0144, aby zwi\u0119kszy\u0107",toggleTitle:"Kliknij, aby prze\u0142\u0105czy\u0107",firstDayOfWeek:1,time_24hr:!0,ordinal:()=>"."};Dg.l10ns.pl=ru;var JA=Dg.l10ns;h();var Mg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},iu={weekdays:{shorthand:["Dom","Seg","Ter","Qua","Qui","Sex","S\xE1b"],longhand:["Domingo","Segunda-feira","Ter\xE7a-feira","Quarta-feira","Quinta-feira","Sexta-feira","S\xE1bado"]},months:{shorthand:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],longhand:["Janeiro","Fevereiro","Mar\xE7o","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"]},rangeSeparator:" at\xE9 ",time_24hr:!0};Mg.l10ns.pt=iu;var QA=Mg.l10ns;h();var Ig=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},au={weekdays:{shorthand:["Dum","Lun","Mar","Mie","Joi","Vin","S\xE2m"],longhand:["Duminic\u0103","Luni","Mar\u021Bi","Miercuri","Joi","Vineri","S\xE2mb\u0103t\u0103"]},months:{shorthand:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Noi","Dec"],longhand:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"]},firstDayOfWeek:1,time_24hr:!0,ordinal:()=>""};Ig.l10ns.ro=au;var ZA=Ig.l10ns;h();var Ag=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},ou={weekdays:{shorthand:["\u0412\u0441","\u041F\u043D","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041F\u0442","\u0421\u0431"],longhand:["\u0412\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435","\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A","\u0412\u0442\u043E\u0440\u043D\u0438\u043A","\u0421\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0435\u0440\u0433","\u041F\u044F\u0442\u043D\u0438\u0446\u0430","\u0421\u0443\u0431\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u042F\u043D\u0432","\u0424\u0435\u0432","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440","\u041C\u0430\u0439","\u0418\u044E\u043D\u044C","\u0418\u044E\u043B\u044C","\u0410\u0432\u0433","\u0421\u0435\u043D","\u041E\u043A\u0442","\u041D\u043E\u044F","\u0414\u0435\u043A"],longhand:["\u042F\u043D\u0432\u0430\u0440\u044C","\u0424\u0435\u0432\u0440\u0430\u043B\u044C","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0435\u043B\u044C","\u041C\u0430\u0439","\u0418\u044E\u043D\u044C","\u0418\u044E\u043B\u044C","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C","\u041E\u043A\u0442\u044F\u0431\u0440\u044C","\u041D\u043E\u044F\u0431\u0440\u044C","\u0414\u0435\u043A\u0430\u0431\u0440\u044C"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u041D\u0435\u0434.",scrollTitle:"\u041F\u0440\u043E\u043A\u0440\u0443\u0442\u0438\u0442\u0435 \u0434\u043B\u044F \u0443\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u044F",toggleTitle:"\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F",amPM:["\u0414\u041F","\u041F\u041F"],yearAriaLabel:"\u0413\u043E\u0434",time_24hr:!0};Ag.l10ns.ru=ou;var tL=Ag.l10ns;h();var Lg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},su={weekdays:{shorthand:["\u0D89","\u0DC3","\u0D85","\u0DB6","\u0DB6\u0DCA\u200D\u0DBB","\u0DC3\u0DD2","\u0DC3\u0DD9"],longhand:["\u0D89\u0DBB\u0DD2\u0DAF\u0DCF","\u0DC3\u0DB3\u0DD4\u0DAF\u0DCF","\u0D85\u0D9F\u0DC4\u0DBB\u0DD4\u0DC0\u0DCF\u0DAF\u0DCF","\u0DB6\u0DAF\u0DCF\u0DAF\u0DCF","\u0DB6\u0DCA\u200D\u0DBB\u0DC4\u0DC3\u0DCA\u0DB4\u0DAD\u0DD2\u0DB1\u0DCA\u0DAF\u0DCF","\u0DC3\u0DD2\u0D9A\u0DD4\u0DBB\u0DCF\u0DAF\u0DCF","\u0DC3\u0DD9\u0DB1\u0DC3\u0DD4\u0DBB\u0DCF\u0DAF\u0DCF"]},months:{shorthand:["\u0DA2\u0DB1","\u0DB4\u0DD9\u0DB6","\u0DB8\u0DCF\u0DBB\u0DCA","\u0D85\u0DB4\u0DCA\u200D\u0DBB\u0DDA","\u0DB8\u0DD0\u0DBA\u0DD2","\u0DA2\u0DD4\u0DB1\u0DD2","\u0DA2\u0DD6\u0DBD\u0DD2","\u0D85\u0D9C\u0DDD","\u0DC3\u0DD0\u0DB4\u0DCA","\u0D94\u0D9A\u0DCA","\u0DB1\u0DDC\u0DC0\u0DD0","\u0DAF\u0DD9\u0DC3\u0DD0"],longhand:["\u0DA2\u0DB1\u0DC0\u0DCF\u0DBB\u0DD2","\u0DB4\u0DD9\u0DB6\u0DBB\u0DC0\u0DCF\u0DBB\u0DD2","\u0DB8\u0DCF\u0DBB\u0DCA\u0DAD\u0DD4","\u0D85\u0DB4\u0DCA\u200D\u0DBB\u0DDA\u0DBD\u0DCA","\u0DB8\u0DD0\u0DBA\u0DD2","\u0DA2\u0DD4\u0DB1\u0DD2","\u0DA2\u0DD6\u0DBD\u0DD2","\u0D85\u0D9C\u0DDD\u0DC3\u0DCA\u0DAD\u0DD4","\u0DC3\u0DD0\u0DB4\u0DCA\u0DAD\u0DD0\u0DB8\u0DCA\u0DB6\u0DBB\u0DCA","\u0D94\u0D9A\u0DCA\u0DAD\u0DDD\u0DB6\u0DBB\u0DCA","\u0DB1\u0DDC\u0DC0\u0DD0\u0DB8\u0DCA\u0DB6\u0DBB\u0DCA","\u0DAF\u0DD9\u0DC3\u0DD0\u0DB8\u0DCA\u0DB6\u0DBB\u0DCA"]},time_24hr:!0};Lg.l10ns.si=su;var rL=Lg.l10ns;h();var Pg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},lu={weekdays:{shorthand:["Ned","Pon","Ut","Str","\u0160tv","Pia","Sob"],longhand:["Nede\u013Ea","Pondelok","Utorok","Streda","\u0160tvrtok","Piatok","Sobota"]},months:{shorthand:["Jan","Feb","Mar","Apr","M\xE1j","J\xFAn","J\xFAl","Aug","Sep","Okt","Nov","Dec"],longhand:["Janu\xE1r","Febru\xE1r","Marec","Apr\xEDl","M\xE1j","J\xFAn","J\xFAl","August","September","Okt\xF3ber","November","December"]},firstDayOfWeek:1,rangeSeparator:" do ",time_24hr:!0,ordinal:function(){return"."}};Pg.l10ns.sk=lu;var aL=Pg.l10ns;h();var Fg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},cu={weekdays:{shorthand:["Ned","Pon","Tor","Sre","\u010Cet","Pet","Sob"],longhand:["Nedelja","Ponedeljek","Torek","Sreda","\u010Cetrtek","Petek","Sobota"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],longhand:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"]},firstDayOfWeek:1,rangeSeparator:" do ",time_24hr:!0,ordinal:function(){return"."}};Fg.l10ns.sl=cu;var sL=Fg.l10ns;h();var Ng=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},uu={weekdays:{shorthand:["Di","H\xEB","Ma","M\xEB","En","Pr","Sh"],longhand:["E Diel","E H\xEBn\xEB","E Mart\xEB","E M\xEBrkur\xEB","E Enjte","E Premte","E Shtun\xEB"]},months:{shorthand:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gus","Sht","Tet","N\xEBn","Dhj"],longhand:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","N\xEBntor","Dhjetor"]},firstDayOfWeek:1,rangeSeparator:" deri ",weekAbbreviation:"Java",yearAriaLabel:"Viti",monthAriaLabel:"Muaji",hourAriaLabel:"Ora",minuteAriaLabel:"Minuta",time_24hr:!0};Ng.l10ns.sq=uu;var cL=Ng.l10ns;h();var Og=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},du={weekdays:{shorthand:["Ned","Pon","Uto","Sre","\u010Cet","Pet","Sub"],longhand:["Nedelja","Ponedeljak","Utorak","Sreda","\u010Cetvrtak","Petak","Subota"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],longhand:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"]},firstDayOfWeek:1,weekAbbreviation:"Ned.",rangeSeparator:" do ",time_24hr:!0};Og.l10ns.sr=du;var dL=Og.l10ns;h();var Rg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},fu={firstDayOfWeek:1,weekAbbreviation:"v",weekdays:{shorthand:["s\xF6n","m\xE5n","tis","ons","tor","fre","l\xF6r"],longhand:["s\xF6ndag","m\xE5ndag","tisdag","onsdag","torsdag","fredag","l\xF6rdag"]},months:{shorthand:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],longhand:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"]},rangeSeparator:" till ",time_24hr:!0,ordinal:()=>"."};Rg.l10ns.sv=fu;var pL=Rg.l10ns;h();var Hg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},pu={weekdays:{shorthand:["\u0E2D\u0E32","\u0E08","\u0E2D","\u0E1E","\u0E1E\u0E24","\u0E28","\u0E2A"],longhand:["\u0E2D\u0E32\u0E17\u0E34\u0E15\u0E22\u0E4C","\u0E08\u0E31\u0E19\u0E17\u0E23\u0E4C","\u0E2D\u0E31\u0E07\u0E04\u0E32\u0E23","\u0E1E\u0E38\u0E18","\u0E1E\u0E24\u0E2B\u0E31\u0E2A\u0E1A\u0E14\u0E35","\u0E28\u0E38\u0E01\u0E23\u0E4C","\u0E40\u0E2A\u0E32\u0E23\u0E4C"]},months:{shorthand:["\u0E21.\u0E04.","\u0E01.\u0E1E.","\u0E21\u0E35.\u0E04.","\u0E40\u0E21.\u0E22.","\u0E1E.\u0E04.","\u0E21\u0E34.\u0E22.","\u0E01.\u0E04.","\u0E2A.\u0E04.","\u0E01.\u0E22.","\u0E15.\u0E04.","\u0E1E.\u0E22.","\u0E18.\u0E04."],longhand:["\u0E21\u0E01\u0E23\u0E32\u0E04\u0E21","\u0E01\u0E38\u0E21\u0E20\u0E32\u0E1E\u0E31\u0E19\u0E18\u0E4C","\u0E21\u0E35\u0E19\u0E32\u0E04\u0E21","\u0E40\u0E21\u0E29\u0E32\u0E22\u0E19","\u0E1E\u0E24\u0E29\u0E20\u0E32\u0E04\u0E21","\u0E21\u0E34\u0E16\u0E38\u0E19\u0E32\u0E22\u0E19","\u0E01\u0E23\u0E01\u0E0E\u0E32\u0E04\u0E21","\u0E2A\u0E34\u0E07\u0E2B\u0E32\u0E04\u0E21","\u0E01\u0E31\u0E19\u0E22\u0E32\u0E22\u0E19","\u0E15\u0E38\u0E25\u0E32\u0E04\u0E21","\u0E1E\u0E24\u0E28\u0E08\u0E34\u0E01\u0E32\u0E22\u0E19","\u0E18\u0E31\u0E19\u0E27\u0E32\u0E04\u0E21"]},firstDayOfWeek:1,rangeSeparator:" \u0E16\u0E36\u0E07 ",scrollTitle:"\u0E40\u0E25\u0E37\u0E48\u0E2D\u0E19\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E2B\u0E23\u0E37\u0E2D\u0E25\u0E14",toggleTitle:"\u0E04\u0E25\u0E34\u0E01\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19",time_24hr:!0,ordinal:()=>""};Hg.l10ns.th=pu;var mL=Hg.l10ns;h();var Bg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},hu={weekdays:{shorthand:["Paz","Pzt","Sal","\xC7ar","Per","Cum","Cmt"],longhand:["Pazar","Pazartesi","Sal\u0131","\xC7ar\u015Famba","Per\u015Fembe","Cuma","Cumartesi"]},months:{shorthand:["Oca","\u015Eub","Mar","Nis","May","Haz","Tem","A\u011Fu","Eyl","Eki","Kas","Ara"],longhand:["Ocak","\u015Eubat","Mart","Nisan","May\u0131s","Haziran","Temmuz","A\u011Fustos","Eyl\xFCl","Ekim","Kas\u0131m","Aral\u0131k"]},firstDayOfWeek:1,ordinal:()=>".",rangeSeparator:" - ",weekAbbreviation:"Hf",scrollTitle:"Art\u0131rmak i\xE7in kayd\u0131r\u0131n",toggleTitle:"A\xE7/Kapa",amPM:["\xD6\xD6","\xD6S"],time_24hr:!0};Bg.l10ns.tr=hu;var vL=Bg.l10ns;h();var Kg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},mu={firstDayOfWeek:1,weekdays:{shorthand:["\u041D\u0434","\u041F\u043D","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041F\u0442","\u0421\u0431"],longhand:["\u041D\u0435\u0434\u0456\u043B\u044F","\u041F\u043E\u043D\u0435\u0434\u0456\u043B\u043E\u043A","\u0412\u0456\u0432\u0442\u043E\u0440\u043E\u043A","\u0421\u0435\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0435\u0440","\u041F'\u044F\u0442\u043D\u0438\u0446\u044F","\u0421\u0443\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u0421\u0456\u0447","\u041B\u044E\u0442","\u0411\u0435\u0440","\u041A\u0432\u0456","\u0422\u0440\u0430","\u0427\u0435\u0440","\u041B\u0438\u043F","\u0421\u0435\u0440","\u0412\u0435\u0440","\u0416\u043E\u0432","\u041B\u0438\u0441","\u0413\u0440\u0443"],longhand:["\u0421\u0456\u0447\u0435\u043D\u044C","\u041B\u044E\u0442\u0438\u0439","\u0411\u0435\u0440\u0435\u0437\u0435\u043D\u044C","\u041A\u0432\u0456\u0442\u0435\u043D\u044C","\u0422\u0440\u0430\u0432\u0435\u043D\u044C","\u0427\u0435\u0440\u0432\u0435\u043D\u044C","\u041B\u0438\u043F\u0435\u043D\u044C","\u0421\u0435\u0440\u043F\u0435\u043D\u044C","\u0412\u0435\u0440\u0435\u0441\u0435\u043D\u044C","\u0416\u043E\u0432\u0442\u0435\u043D\u044C","\u041B\u0438\u0441\u0442\u043E\u043F\u0430\u0434","\u0413\u0440\u0443\u0434\u0435\u043D\u044C"]},time_24hr:!0};Kg.l10ns.uk=mu;var bL=Kg.l10ns;h();var $g=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},gu={weekdays:{shorthand:["\u042F\u043A\u0448","\u0414\u0443\u0448","\u0421\u0435\u0448","\u0427\u043E\u0440","\u041F\u0430\u0439","\u0416\u0443\u043C","\u0428\u0430\u043D"],longhand:["\u042F\u043A\u0448\u0430\u043D\u0431\u0430","\u0414\u0443\u0448\u0430\u043D\u0431\u0430","\u0421\u0435\u0448\u0430\u043D\u0431\u0430","\u0427\u043E\u0440\u0448\u0430\u043D\u0431\u0430","\u041F\u0430\u0439\u0448\u0430\u043D\u0431\u0430","\u0416\u0443\u043C\u0430","\u0428\u0430\u043D\u0431\u0430"]},months:{shorthand:["\u042F\u043D\u0432","\u0424\u0435\u0432","\u041C\u0430\u0440","\u0410\u043F\u0440","\u041C\u0430\u0439","\u0418\u044E\u043D","\u0418\u044E\u043B","\u0410\u0432\u0433","\u0421\u0435\u043D","\u041E\u043A\u0442","\u041D\u043E\u044F","\u0414\u0435\u043A"],longhand:["\u042F\u043D\u0432\u0430\u0440","\u0424\u0435\u0432\u0440\u0430\u043B","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0435\u043B","\u041C\u0430\u0439","\u0418\u044E\u043D","\u0418\u044E\u043B","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043D\u0442\u044F\u0431\u0440","\u041E\u043A\u0442\u044F\u0431\u0440","\u041D\u043E\u044F\u0431\u0440","\u0414\u0435\u043A\u0430\u0431\u0440"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u04B2\u0430\u0444\u0442\u0430",scrollTitle:"\u041A\u0430\u0442\u0442\u0430\u043B\u0430\u0448\u0442\u0438\u0440\u0438\u0448 \u0443\u0447\u0443\u043D \u0430\u0439\u043B\u0430\u043D\u0442\u0438\u0440\u0438\u043D\u0433",toggleTitle:"\u040E\u0442\u0438\u0448 \u0443\u0447\u0443\u043D \u0431\u043E\u0441\u0438\u043D\u0433",amPM:["AM","PM"],yearAriaLabel:"\u0419\u0438\u043B",time_24hr:!0};$g.l10ns.uz=gu;var EL=$g.l10ns;h();var Ug=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},vu={weekdays:{shorthand:["Ya","Du","Se","Cho","Pa","Ju","Sha"],longhand:["Yakshanba","Dushanba","Seshanba","Chorshanba","Payshanba","Juma","Shanba"]},months:{shorthand:["Yan","Fev","Mar","Apr","May","Iyun","Iyul","Avg","Sen","Okt","Noy","Dek"],longhand:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avgust","Sentabr","Oktabr","Noyabr","Dekabr"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"Hafta",scrollTitle:"Kattalashtirish uchun aylantiring",toggleTitle:"O\u2018tish uchun bosing",amPM:["AM","PM"],yearAriaLabel:"Yil",time_24hr:!0};Ug.l10ns.uz_latn=vu;var kL=Ug.l10ns;h();var Wg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},yu={weekdays:{shorthand:["CN","T2","T3","T4","T5","T6","T7"],longhand:["Ch\u1EE7 nh\u1EADt","Th\u1EE9 hai","Th\u1EE9 ba","Th\u1EE9 t\u01B0","Th\u1EE9 n\u0103m","Th\u1EE9 s\xE1u","Th\u1EE9 b\u1EA3y"]},months:{shorthand:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],longhand:["Th\xE1ng m\u1ED9t","Th\xE1ng hai","Th\xE1ng ba","Th\xE1ng t\u01B0","Th\xE1ng n\u0103m","Th\xE1ng s\xE1u","Th\xE1ng b\u1EA3y","Th\xE1ng t\xE1m","Th\xE1ng ch\xEDn","Th\xE1ng m\u01B0\u1EDDi","Th\xE1ng m\u01B0\u1EDDi m\u1ED9t","Th\xE1ng m\u01B0\u1EDDi hai"]},firstDayOfWeek:1,rangeSeparator:" \u0111\u1EBFn "};Wg.l10ns.vn=yu;var _L=Wg.l10ns;h();var Vg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},bu={weekdays:{shorthand:["\u5468\u65E5","\u5468\u4E00","\u5468\u4E8C","\u5468\u4E09","\u5468\u56DB","\u5468\u4E94","\u5468\u516D"],longhand:["\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"]},months:{shorthand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],longhand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"]},rangeSeparator:" \u81F3 ",weekAbbreviation:"\u5468",scrollTitle:"\u6EDA\u52A8\u5207\u6362",toggleTitle:"\u70B9\u51FB\u5207\u6362 12/24 \u5C0F\u65F6\u65F6\u5236"};Vg.l10ns.zh=bu;var TL=Vg.l10ns;h();var zg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},wu={weekdays:{shorthand:["\u9031\u65E5","\u9031\u4E00","\u9031\u4E8C","\u9031\u4E09","\u9031\u56DB","\u9031\u4E94","\u9031\u516D"],longhand:["\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"]},months:{shorthand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],longhand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"]},rangeSeparator:" \u81F3 ",weekAbbreviation:"\u9031",scrollTitle:"\u6EFE\u52D5\u5207\u63DB",toggleTitle:"\u9EDE\u64CA\u5207\u63DB 12/24 \u5C0F\u6642\u6642\u5236"};zg.l10ns.zh_tw=wu;var ML=zg.l10ns;var G0={ar:hc,at:mc,az:gc,be:vc,bg:yc,bn:bc,bs:wc,ca:jo,ckb:xc,cat:jo,cs:kc,cy:Sc,da:_c,de:Cc,default:{...Br},en:Br,eo:Tc,es:Dc,et:Mc,fa:Ic,fi:Ac,fo:Lc,fr:Pc,gr:Fc,he:Nc,hi:Oc,hr:Rc,hu:Hc,hy:Bc,id:Kc,is:$c,it:Uc,ja:Wc,ka:Vc,ko:jc,km:zc,kz:qc,lt:Yc,lv:Jc,mk:Gc,mn:Qc,ms:xg,my:Xc,nl:Zc,nn:eu,no:tu,pa:nu,pl:ru,pt:iu,ro:au,ru:ou,si:su,sk:lu,sl:cu,sq:uu,sr:du,sv:fu,th:pu,tr:hu,uk:mu,vn:yu,zh:bu,zh_tw:wu,uz:gu,uz_latn:vu},et=G0;var qg={ar:et.ar,cs:et.cs,da:et.da,de:et.de,en:et.en,"en-gb":et.en,es:et.es,fr:et.fr,hi:et.hi,id:et.id,it:et.it,ja:et.ja,ko:et.ko,nl:et.nl,nn:et.no,pl:et.pl,pt:et.pt,"pt-br":et.pt,ro:et.ro,ru:et.ru,tr:et.tr,"zh-cn":et.zh,"zh-tw":et.zh_tw},Q0=qg[jg.moment.locale()];function Yo(e){let t=e==null?void 0:e.getSetting("date-picker-week-start"),r=Q0||qg.en;return t?{...r,firstDayOfWeek:t}:r}h();h();var Jo=["onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition"],yr={_disable:[],allowInput:!1,allowInvalidPreload:!1,altFormat:"F j, Y",altInput:!1,altInputClass:"form-control input",animate:typeof window=="object"&&window.navigator.userAgent.indexOf("MSIE")===-1,ariaDateFormat:"F j, Y",autoFillDefaultTime:!0,clickOpens:!0,closeOnSelect:!0,conjunction:", ",dateFormat:"Y-m-d",defaultHour:12,defaultMinute:0,defaultSeconds:0,disable:[],disableMobile:!1,enableSeconds:!1,enableTime:!1,errorHandler:e=>typeof console!="undefined"&&console.warn(e),getWeek:e=>{let t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);let r=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-r.getTime())/864e5-3+(r.getDay()+6)%7)/7)},hourIncrement:1,ignoredFocusElements:[],inline:!1,locale:"default",minuteIncrement:5,mode:"single",monthSelectorType:"dropdown",nextArrow:"",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1,win:window};h();var Ht=(e,t=2)=>`000${e}`.slice(t*-1),tn=e=>e===!0?1:0;function Eu(e,t,r){let n;return function(){let i=arguments;r.clearTimeout(n),n=r.setTimeout(()=>e.apply(this,i),t)}}var Go=e=>Array.isArray(e)?e:[e];h();h();var xu=()=>{},xa=(e,t,r)=>r.months[t?"shorthand":"longhand"][e],Yg={D:xu,F:function(e,t,r){e.setMonth(r.months.longhand.indexOf(t))},G:(e,t)=>{e.setHours((e.getHours()>=12?12:0)+parseFloat(t))},H:(e,t)=>{e.setHours(parseFloat(t))},J:(e,t)=>{e.setDate(parseFloat(t))},K:(e,t,r)=>{e.setHours(e.getHours()%12+12*tn(new RegExp(r.amPM[1],"i").test(t)))},M:function(e,t,r){e.setMonth(r.months.shorthand.indexOf(t))},S:(e,t)=>{e.setSeconds(parseFloat(t))},U:(e,t)=>new Date(parseFloat(t)*1e3),W:function(e,t,r){let n=parseInt(t),i=new Date(e.getFullYear(),0,2+(n-1)*7,0,0,0,0);return i.setDate(i.getDate()-i.getDay()+r.firstDayOfWeek),i},Y:(e,t)=>{e.setFullYear(parseFloat(t))},Z:(e,t)=>new Date(t),d:(e,t)=>{e.setDate(parseFloat(t))},h:(e,t)=>{e.setHours((e.getHours()>=12?12:0)+parseFloat(t))},i:(e,t)=>{e.setMinutes(parseFloat(t))},j:(e,t)=>{e.setDate(parseFloat(t))},l:xu,m:(e,t)=>{e.setMonth(parseFloat(t)-1)},n:(e,t)=>{e.setMonth(parseFloat(t)-1)},s:(e,t)=>{e.setSeconds(parseFloat(t))},u:(e,t)=>new Date(parseFloat(t)),w:xu,y:(e,t)=>{e.setFullYear(2e3+parseFloat(t))}},Jn={D:"",F:"",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},ki={Z:e=>e.toISOString(),D:function(e,t,r){return t.weekdays.shorthand[ki.w(e,t,r)]},F:function(e,t,r){return xa(ki.n(e,t,r)-1,!1,t)},G:function(e,t,r){return Ht(ki.h(e,t,r))},H:e=>Ht(e.getHours()),J:function(e,t){return t.ordinal!==void 0?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:(e,t)=>t.amPM[tn(e.getHours()>11)],M:function(e,t){return xa(e.getMonth(),!0,t)},S:e=>Ht(e.getSeconds()),U:e=>e.getTime()/1e3,W:function(e,t,r){return r.getWeek(e)},Y:e=>Ht(e.getFullYear(),4),d:e=>Ht(e.getDate()),h:e=>e.getHours()%12?e.getHours()%12:12,i:e=>Ht(e.getMinutes()),j:e=>e.getDate(),l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:e=>Ht(e.getMonth()+1),n:e=>e.getMonth()+1,s:e=>e.getSeconds(),u:e=>e.getTime(),w:e=>e.getDay(),y:e=>String(e.getFullYear()).substring(2)};var ku=({config:e=yr,l10n:t=Br,isMobile:r=!1})=>(n,i,a)=>{let o=a||t;return e.formatDate!==void 0&&!r?e.formatDate(n,i,o):i.split("").map((s,u,l)=>ki[s]&&l[u-1]!=="\\"?ki[s](n,o,e):s!=="\\"?s:"").join("")},Qo=({config:e=yr,l10n:t=Br})=>(r,n,i,a)=>{if(r!==0&&!r)return;let o=a||t,s,u=r;if(r.getDate)s=new Date(r.getTime());else if(typeof r!="string"&&r.toFixed!==void 0)s=new Date(r);else if(typeof r=="string"){let l=n||(e||yr).dateFormat,c=String(r).trim();if(c==="today")s=new Date,i=!0;else if(e&&e.parseDate)s=e.parseDate(r,l);else if(/Z$/.test(c)||/GMT$/.test(c))s=new Date(r);else{let d,f=[];for(let p=0,m=0,y="";ps=p(s,m,o)||s),s=d?s:void 0}}if(!(s.getDate&&!isNaN(s.getTime()))){e.errorHandler(new Error(`Invalid date provided: ${u}`));return}return i===!0&&s.setHours(0,0,0,0),s};function nn(e,t,r=!0){return r!==!1?new Date(e.getTime()).setHours(0,0,0,0)-new Date(t.getTime()).setHours(0,0,0,0):e.getTime()-t.getTime()}var Jg=(e,t,r)=>e>Math.min(t,r)&&ee*3600+t*60+r,Gg=e=>{let t=Math.floor(e/3600),r=(e-t*3600)/60;return[t,r,e-t*3600-r*60]},Qg={DAY:864e5};function Zo(e){let t=e.defaultHour,r=e.defaultMinute,n=e.defaultSeconds;if(e.minDate!==void 0){let i=e.minDate.getHours(),a=e.minDate.getMinutes(),o=e.minDate.getSeconds();t=0?new Date:new Date(n.config.minDate.getTime()),Q=Zo(n.config);K.setHours(Q.hours,Q.minutes,Q.seconds,K.getMilliseconds()),n.selectedDates=[K],n.latestSelectedDateObj=K}_!==void 0&&_.type!=="blur"&&Xa(_);let M=n._input.value;f(),xn(),n._input.value!==M&&n._debouncedChange()}function c(_,M){return _%12+12*tn(M===n.l10n.amPM[1])}function d(_){switch(_%24){case 0:case 12:return 12;default:return _%12}}function f(){if(n.hourElement===void 0||n.minuteElement===void 0)return;let _=(parseInt(n.hourElement.value.slice(-2),10)||0)%24,M=(parseInt(n.minuteElement.value,10)||0)%60,K=n.secondElement!==void 0?(parseInt(n.secondElement.value,10)||0)%60:0;n.amPM!==void 0&&(_=c(_,n.amPM.textContent));let Q=n.config.minTime!==void 0||n.config.minDate&&n.minDateHasTime&&n.latestSelectedDateObj&&nn(n.latestSelectedDateObj,n.config.minDate,!0)===0,se=n.config.maxTime!==void 0||n.config.maxDate&&n.maxDateHasTime&&n.latestSelectedDateObj&&nn(n.latestSelectedDateObj,n.config.maxDate,!0)===0;if(n.config.maxTime!==void 0&&n.config.minTime!==void 0&&n.config.minTime>n.config.maxTime){let ie=Xo(n.config.minTime.getHours(),n.config.minTime.getMinutes(),n.config.minTime.getSeconds()),me=Xo(n.config.maxTime.getHours(),n.config.maxTime.getMinutes(),n.config.maxTime.getSeconds()),ue=Xo(_,M,K);if(ue>me&&ue=12)]),n.secondElement!==void 0&&(n.secondElement.value=Ht(K)))}function y(_){let M=rn(_),K=parseInt(M.value)+(_.delta||0);(K/1e3>1||_.key==="Enter"&&!/[^\d]/.test(K.toString()))&&te(K)}function b(_,M,K,Q){if(Array.isArray(M))return M.forEach(se=>b(_,se,K,Q));if(Array.isArray(_))return _.forEach(se=>b(se,M,K,Q));_.addEventListener(M,K,Q),n._handlers.push({remove:()=>_.removeEventListener(M,K,Q)})}function x(){We("onChange")}function D(){if(n.config.wrap&&["open","close","toggle","clear"].forEach(M=>{Array.prototype.forEach.call(n.element.querySelectorAll(`[data-${M}]`),K=>b(K,"click",n[M]))}),n.isMobile){qe();return}let _=Eu(Nt,50,r);if(n._debouncedChange=Eu(x,X0,r),n.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&b(n.daysContainer,"mouseover",M=>{n.config.mode==="range"&&vt(rn(M))}),b(n._input,"keydown",ut),n.calendarContainer!==void 0&&b(n.calendarContainer,"keydown",ut),!n.config.inline&&!n.config.static&&b(r,"resize",_),r.ontouchstart!==void 0?b(r.document,"touchstart",q):b(r.document,"mousedown",q),b(r.document,"focus",q,{capture:!0}),n.config.clickOpens===!0&&(b(n._input,"focus",n.open),b(n._input,"click",n.open)),n.daysContainer!==void 0&&(b(n.monthNav,"click",yl),b(n.monthNav,["keyup","increment"],y),b(n.daysContainer,"click",Ot)),n.timeContainer!==void 0&&n.minuteElement!==void 0&&n.hourElement!==void 0){let M=K=>rn(K).select();b(n.timeContainer,["increment"],l),b(n.timeContainer,"blur",l,{capture:!0}),b(n.timeContainer,"click",A),b([n.hourElement,n.minuteElement],["focus","click"],M),n.secondElement!==void 0&&b(n.secondElement,"focus",()=>n.secondElement&&n.secondElement.select()),n.amPM!==void 0&&b(n.amPM,"click",K=>{l(K)})}n.config.allowInput&&b(n._input,"blur",Ue)}function C(_,M){let K=_!==void 0?n.parseDate(_):n.latestSelectedDateObj||(n.config.minDate&&n.config.minDate>n.now?n.config.minDate:n.config.maxDate&&n.config.maxDate1),n.calendarContainer.appendChild(_);let M=n.config.appendTo!==void 0&&n.config.appendTo.nodeType!==void 0;if((n.config.inline||n.config.static)&&(n.calendarContainer.classList.add(n.config.inline?"inline":"static"),n.config.inline&&(!M&&n.element.parentNode?n.element.parentNode.insertBefore(n.calendarContainer,n._input.nextSibling):n.config.appendTo!==void 0&&n.config.appendTo.appendChild(n.calendarContainer)),n.config.static)){let K=je(r.document,"div","flatpickr-wrapper");n.element.parentNode&&n.element.parentNode.insertBefore(K,n.element),K.appendChild(n.element),n.altInput&&K.appendChild(n.altInput),K.appendChild(n.calendarContainer)}!n.config.static&&!n.config.inline&&(n.config.appendTo!==void 0?n.config.appendTo:r.document.body).appendChild(n.calendarContainer)}function O(_,M,K,Q){let se=we(M,!0),ie=je(r.document,"span",_,M.getDate().toString());return ie.dateObj=M,ie.$i=Q,ie.setAttribute("aria-label",n.formatDate(M,n.config.ariaDateFormat)),_.indexOf("hidden")===-1&&nn(M,n.now)===0&&(n.todayDateElem=ie,ie.classList.add("today"),ie.setAttribute("aria-current","date")),se?(ie.tabIndex=-1,Ye(M)&&(ie.classList.add("selected"),n.selectedDateElem=ie,n.config.mode==="range"&&(Bt(ie,"startRange",n.selectedDates[0]&&nn(M,n.selectedDates[0],!0)===0),Bt(ie,"endRange",n.selectedDates[1]&&nn(M,n.selectedDates[1],!0)===0),_==="nextMonthDay"&&ie.classList.add("inRange")))):ie.classList.add("flatpickr-disabled"),n.config.mode==="range"&&ir(M)&&!Ye(M)&&ie.classList.add("inRange"),n.weekNumbers&&n.config.showMonths===1&&_!=="prevMonthDay"&&Q%7==6&&n.weekNumbers.insertAdjacentHTML("beforeend",""+n.config.getWeek(M)+""),We("onDayCreate",ie),ie}function W(_){_.focus(),n.config.mode==="range"&&vt(_)}function z(_){let M=_>0?0:n.config.showMonths-1,K=_>0?n.config.showMonths:-1;for(let Q=M;Q!=K;Q+=_){let se=n.daysContainer.children[Q],ie=_>0?0:se.children.length-1,me=_>0?se.children.length:-1;for(let ue=ie;ue!=me;ue+=_){let Pe=se.children[ue];if(Pe.className.indexOf("hidden")===-1&&we(Pe.dateObj))return Pe}}}function ee(_,M){let K=_.className.indexOf("Month")===-1?_.dateObj.getMonth():n.currentMonth,Q=M>0?n.config.showMonths:-1,se=M>0?1:-1;for(let ie=K-n.currentMonth;ie!=Q;ie+=se){let me=n.daysContainer.children[ie],ue=K-n.currentMonth===ie?_.$i+M:M<0?me.children.length-1:0,Pe=me.children.length;for(let Fe=ue;Fe>=0&&Fe0?Pe:-1);Fe+=se){let Me=me.children[Fe];if(Me.className.indexOf("hidden")===-1&&we(Me.dateObj)&&Math.abs(_.$i-Fe)>=Math.abs(M))return W(Me)}}n.changeMonth(se),Z(z(se),0)}function Z(_,M){let K=o(),Q=ke(K||n.element.doc.body),se=_!==void 0?_:Q?K:n.selectedDateElem!==void 0&&ke(n.selectedDateElem)?n.selectedDateElem:n.todayDateElem!==void 0&&ke(n.todayDateElem)?n.todayDateElem:z(M>0?1:-1);se===void 0?n._input.focus():Q?ee(se,M):W(se)}function le(_,M){let K=(new Date(_,M,1).getDay()-n.l10n.firstDayOfWeek+7)%7,Q=n.utils.getDaysInMonth((M-1+12)%12,_),se=n.utils.getDaysInMonth(M,_),ie=r.document.createDocumentFragment(),me=n.config.showMonths>1,ue=me?"prevMonthDay hidden":"prevMonthDay",Pe=me?"nextMonthDay hidden":"nextMonthDay",Fe=Q+1-K,Me=0;for(;Fe<=Q;Fe++,Me++)ie.appendChild(O(`flatpickr-day ${ue}`,new Date(_,M-1,Fe),Fe,Me));for(Fe=1;Fe<=se;Fe++,Me++)ie.appendChild(O("flatpickr-day",new Date(_,M,Fe),Fe,Me));for(let bt=se+1;bt<=42-K&&(n.config.showMonths===1||Me%7!=0);bt++,Me++)ie.appendChild(O(`flatpickr-day ${Pe}`,new Date(_,M+1,bt%se),bt,Me));let Qt=je(r.document,"div","dayContainer");return Qt.appendChild(ie),Qt}function X(){if(n.daysContainer===void 0)return;ka(n.daysContainer),n.weekNumbers&&ka(n.weekNumbers);let _=n.element.doc.createDocumentFragment();for(let M=0;M1||n.config.monthSelectorType!=="dropdown")return;let _=function(M){return n.config.minDate!==void 0&&n.currentYear===n.config.minDate.getFullYear()&&Mn.config.maxDate.getMonth())};n.monthsDropdownContainer.tabIndex=-1,n.monthsDropdownContainer.innerHTML="";for(let M=0;M<12;M++){if(!_(M))continue;let K=je(r.document,"option","flatpickr-monthDropdown-month");K.value=new Date(n.currentYear,M).getMonth().toString(),K.textContent=xa(M,n.config.shorthandCurrentMonth,n.l10n),K.tabIndex=-1,n.currentMonth===M&&(K.selected=!0),n.monthsDropdownContainer.appendChild(K)}}function re(){let _=je(r.document,"div","flatpickr-month"),M=r.document.createDocumentFragment(),K;n.config.showMonths>1||n.config.monthSelectorType==="static"?K=je(r.document,"span","cur-month"):(n.monthsDropdownContainer=je(r.document,"select","flatpickr-monthDropdown-months"),n.monthsDropdownContainer.setAttribute("aria-label",n.l10n.monthAriaLabel),b(n.monthsDropdownContainer,"change",me=>{let ue=rn(me),Pe=parseInt(ue.value,10);n.changeMonth(Pe-n.currentMonth),We("onMonthChange")}),G(),K=n.monthsDropdownContainer);let Q=Sa(r.document,"cur-year",{tabindex:"-1"}),se=Q.getElementsByTagName("input")[0];se.setAttribute("aria-label",n.l10n.yearAriaLabel),n.config.minDate&&se.setAttribute("min",n.config.minDate.getFullYear().toString()),n.config.maxDate&&(se.setAttribute("max",n.config.maxDate.getFullYear().toString()),se.disabled=!!n.config.minDate&&n.config.minDate.getFullYear()===n.config.maxDate.getFullYear());let ie=je(r.document,"div","flatpickr-current-month");return ie.appendChild(K),ie.appendChild(Q),M.appendChild(ie),_.appendChild(M),{container:_,yearElement:se,monthElement:K}}function pe(){ka(n.monthNav),n.monthNav.appendChild(n.prevMonthNav),n.config.showMonths&&(n.yearElements=[],n.monthElements=[]);for(let _=n.config.showMonths;_--;){let M=re();n.yearElements.push(M.yearElement),n.monthElements.push(M.monthElement),n.monthNav.appendChild(M.container)}n.monthNav.appendChild(n.nextMonthNav)}function he(){return n.monthNav=je(r.document,"div","flatpickr-months"),n.yearElements=[],n.monthElements=[],n.prevMonthNav=je(r.document,"span","flatpickr-prev-month"),n.prevMonthNav.innerHTML=n.config.prevArrow,n.nextMonthNav=je(r.document,"span","flatpickr-next-month"),n.nextMonthNav.innerHTML=n.config.nextArrow,pe(),Object.defineProperty(n,"_hidePrevMonthArrow",{get:()=>n.__hidePrevMonthArrow,set(_){n.__hidePrevMonthArrow!==_&&(Bt(n.prevMonthNav,"flatpickr-disabled",_),n.__hidePrevMonthArrow=_)}}),Object.defineProperty(n,"_hideNextMonthArrow",{get:()=>n.__hideNextMonthArrow,set(_){n.__hideNextMonthArrow!==_&&(Bt(n.nextMonthNav,"flatpickr-disabled",_),n.__hideNextMonthArrow=_)}}),n.currentYearElement=n.yearElements[0],Dt(),n.monthNav}function ve(){n.calendarContainer.classList.add("hasTime"),n.config.noCalendar&&n.calendarContainer.classList.add("noCalendar");let _=Zo(n.config);n.timeContainer=je(r.document,"div","flatpickr-time"),n.timeContainer.tabIndex=-1;let M=je(r.document,"span","flatpickr-time-separator",":"),K=Sa(r.document,"flatpickr-hour",{"aria-label":n.l10n.hourAriaLabel});n.hourElement=K.getElementsByTagName("input")[0];let Q=Sa(r.document,"flatpickr-minute",{"aria-label":n.l10n.minuteAriaLabel});if(n.minuteElement=Q.getElementsByTagName("input")[0],n.hourElement.tabIndex=n.minuteElement.tabIndex=-1,n.hourElement.value=Ht(n.latestSelectedDateObj?n.latestSelectedDateObj.getHours():n.config.time_24hr?_.hours:d(_.hours)),n.minuteElement.value=Ht(n.latestSelectedDateObj?n.latestSelectedDateObj.getMinutes():_.minutes),n.hourElement.setAttribute("step",n.config.hourIncrement.toString()),n.minuteElement.setAttribute("step",n.config.minuteIncrement.toString()),n.hourElement.setAttribute("min",n.config.time_24hr?"0":"1"),n.hourElement.setAttribute("max",n.config.time_24hr?"23":"12"),n.hourElement.setAttribute("maxlength","2"),n.minuteElement.setAttribute("min","0"),n.minuteElement.setAttribute("max","59"),n.minuteElement.setAttribute("maxlength","2"),n.timeContainer.appendChild(K),n.timeContainer.appendChild(M),n.timeContainer.appendChild(Q),n.config.time_24hr&&n.timeContainer.classList.add("time24hr"),n.config.enableSeconds){n.timeContainer.classList.add("hasSeconds");let se=Sa(r.document,"flatpickr-second");n.secondElement=se.getElementsByTagName("input")[0],n.secondElement.value=Ht(n.latestSelectedDateObj?n.latestSelectedDateObj.getSeconds():_.seconds),n.secondElement.setAttribute("step",n.minuteElement.getAttribute("step")),n.secondElement.setAttribute("min","0"),n.secondElement.setAttribute("max","59"),n.secondElement.setAttribute("maxlength","2"),n.timeContainer.appendChild(je(r.document,"span","flatpickr-time-separator",":")),n.timeContainer.appendChild(se)}return n.config.time_24hr||(n.amPM=je(r.document,"span","flatpickr-am-pm",n.l10n.amPM[tn((n.latestSelectedDateObj?n.hourElement.value:n.config.defaultHour)>11)]),n.amPM.title=n.l10n.toggleTitle,n.amPM.tabIndex=-1,n.timeContainer.appendChild(n.amPM)),n.timeContainer}function be(){n.weekdayContainer?ka(n.weekdayContainer):n.weekdayContainer=je(r.document,"div","flatpickr-weekdays");for(let _=n.config.showMonths;_--;){let M=je(r.document,"div","flatpickr-weekdaycontainer");n.weekdayContainer.appendChild(M)}return De(),n.weekdayContainer}function De(){if(!n.weekdayContainer)return;let _=n.l10n.firstDayOfWeek,M=[...n.l10n.weekdays.shorthand];_>0&&_-1&&(he.arrayIndex=ie.arrayIndex),J.matches.push(he)}}}),this.options.includeScore&&C.push(function(Z,J){J.score=Z.score});for(var A=0,H=b.length;Ax)return s(y,this.pattern,T);var C=this.options,A=C.location,H=C.distance,D=C.threshold,K=C.findAllMatches,z=C.minMatchCharLength;return u(y,this.pattern,this.patternAlphabet,{location:A,distance:H,threshold:D,findAllMatches:K,minMatchCharLength:z})}}])&&o(f.prototype,p),g&&o(f,g),d}();n.exports=c},function(n,i){var a=/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;n.exports=function(o,s){var u=arguments.length>2&&arguments[2]!==void 0?arguments[2]:/ +/g,l=new RegExp(s.replace(a,"\\$&").replace(u,"|")),c=o.match(l),d=!!c,f=[];if(d)for(var p=0,g=c.length;p=N;W-=1){var j=W-1,q=c[u.charAt(j)];if(q&&(J[j]=1),Ge[W]=(Ge[W+1]<<1|1)&q,be!==0&&(Ge[W]|=(ie[W+1]|ie[W])<<1|1|ie[W+1]),Ge[W]&ge&&(he=o(l,{errors:be,currentLocation:j,expectedLocation:D,distance:y}))<=z){if(z=he,(U=j)<=D)break;N=Math.max(1,2*D-U)}}if(o(l,{errors:be+1,currentLocation:D,expectedLocation:D,distance:y})>z)break;ie=Ge}return{isMatch:U>=0,score:he===0?.001:he,matchedIndices:s(J,H)}}},function(n,i){n.exports=function(a,o){var s=o.errors,u=s===void 0?0:s,l=o.currentLocation,c=l===void 0?0:l,d=o.expectedLocation,f=d===void 0?0:d,p=o.distance,g=p===void 0?100:p,y=u/a.length,b=Math.abs(f-c);return g?y+b/g:b?1:y}},function(n,i){n.exports=function(){for(var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,s=[],u=-1,l=-1,c=0,d=a.length;c=o&&s.push([u,l]),u=-1)}return a[c-1]&&c-u>=o&&s.push([u,c-1]),s}},function(n,i){n.exports=function(a){for(var o={},s=a.length,u=0;u0)return"Unexpected "+(R.length>1?"keys":"key")+" "+('"'+R.join('", "')+'" found in '+I+". ")+"Expected to find one of the known reducer keys instead: "+('"'+k.join('", "')+'". Unexpected keys will be ignored.')}function y(O){Object.keys(O).forEach(function(w){var E=O[w],v=E(void 0,{type:l.INIT});if(typeof v=="undefined")throw new Error('Reducer "'+w+`" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);if(typeof E(void 0,{type:l.PROBE_UNKNOWN_ACTION()})=="undefined")throw new Error('Reducer "'+w+'" returned undefined when probed with a random type. '+("Don't try to handle "+l.INIT+' or other actions in "redux/*" ')+"namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.")})}function b(O){for(var w=Object.keys(O),E={},v=0;v-1?O.map(function(E){var v=E;return v.id===parseInt(w.choiceId,10)&&(v.selected=!0),v}):O;case"REMOVE_ITEM":return w.choiceId>-1?O.map(function(E){var v=E;return v.id===parseInt(w.choiceId,10)&&(v.selected=!1),v}):O;case"FILTER_CHOICES":return O.map(function(E){var v=E;return v.active=w.results.some(function(k){var I=k.item,R=k.score;return I.id===v.id?(v.score=R,!0):!1}),v});case"ACTIVATE_CHOICES":return O.map(function(E){var v=E;return v.active=w.active,v});case"CLEAR_CHOICES":return G;default:return O}}var ie={loading:!1},he=function(w,E){switch(w===void 0&&(w=ie),E.type){case"SET_IS_LOADING":return{loading:E.isLoading};default:return w}},pe=he,ge=function(w,E){return Math.floor(Math.random()*(E-w)+w)},be=function(w){return Array.from({length:w},function(){return ge(0,36).toString(36)}).join("")},Te=function(w,E){var v=w.id||w.name&&w.name+"-"+be(2)||be(4);return v=v.replace(/(:|\.|\[|\]|,)/g,""),v=E+"-"+v,v},F=function(w){return Object.prototype.toString.call(w).slice(8,-1)},N=function(w,E){return E!=null&&F(E)===w},ut=function(w,E){return E===void 0&&(E=document.createElement("div")),w.nextSibling?w.parentNode.insertBefore(E,w.nextSibling):w.parentNode.appendChild(E),E.appendChild(w)},Ge=function(w,E,v){if(v===void 0&&(v=1),!(!(w instanceof Element)||typeof E!="string")){for(var k=(v>0?"next":"previous")+"ElementSibling",I=w[k];I;){if(I.matches(E))return I;I=I[k]}return I}},W=function(w,E,v){if(v===void 0&&(v=1),!w)return!1;var k;return v>0?k=E.scrollTop+E.offsetHeight>=w.offsetTop+w.offsetHeight:k=w.offsetTop>=E.scrollTop,k},j=function(w){return typeof w!="string"?w:w.replace(/&/g,"&").replace(/>/g,"&rt;").replace(/"'+j(w)+'"'},maxItemText:function(w){return"Only "+w+" values can be added"},valueComparer:function(w,E){return w===E},fuseOptions:{includeScore:!0},callbackOnInit:null,callbackOnCreateTemplates:null,classNames:ti},Rt={showDropdown:"showDropdown",hideDropdown:"hideDropdown",change:"change",choice:"choice",search:"search",addItem:"addItem",removeItem:"removeItem",highlightItem:"highlightItem",highlightChoice:"highlightChoice"},Wt={ADD_CHOICE:"ADD_CHOICE",FILTER_CHOICES:"FILTER_CHOICES",ACTIVATE_CHOICES:"ACTIVATE_CHOICES",CLEAR_CHOICES:"CLEAR_CHOICES",ADD_GROUP:"ADD_GROUP",ADD_ITEM:"ADD_ITEM",REMOVE_ITEM:"REMOVE_ITEM",HIGHLIGHT_ITEM:"HIGHLIGHT_ITEM",CLEAR_ALL:"CLEAR_ALL"},yt={BACK_KEY:46,DELETE_KEY:8,ENTER_KEY:13,A_KEY:65,ESC_KEY:27,UP_KEY:38,DOWN_KEY:40,PAGE_UP_KEY:33,PAGE_DOWN_KEY:34},Y="text",oe="select-one",Ee="select-multiple",ze=4,Tt=function(){function O(E){var v=E.element,k=E.type,I=E.classNames,R=E.position;this.element=v,this.classNames=I,this.type=k,this.position=R,this.isOpen=!1,this.isFlipped=!1,this.isFocussed=!1,this.isDisabled=!1,this.isLoading=!1,this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this)}var w=O.prototype;return w.addEventListeners=function(){this.element.addEventListener("focus",this._onFocus),this.element.addEventListener("blur",this._onBlur)},w.removeEventListeners=function(){this.element.removeEventListener("focus",this._onFocus),this.element.removeEventListener("blur",this._onBlur)},w.shouldFlip=function(v){if(typeof v!="number")return!1;var k=!1;return this.position==="auto"?k=!window.matchMedia("(min-height: "+(v+1)+"px)").matches:this.position==="top"&&(k=!0),k},w.setActiveDescendant=function(v){this.element.setAttribute("aria-activedescendant",v)},w.removeActiveDescendant=function(){this.element.removeAttribute("aria-activedescendant")},w.open=function(v){this.element.classList.add(this.classNames.openState),this.element.setAttribute("aria-expanded","true"),this.isOpen=!0,this.shouldFlip(v)&&(this.element.classList.add(this.classNames.flippedState),this.isFlipped=!0)},w.close=function(){this.element.classList.remove(this.classNames.openState),this.element.setAttribute("aria-expanded","false"),this.removeActiveDescendant(),this.isOpen=!1,this.isFlipped&&(this.element.classList.remove(this.classNames.flippedState),this.isFlipped=!1)},w.focus=function(){this.isFocussed||this.element.focus()},w.addFocusState=function(){this.element.classList.add(this.classNames.focusState)},w.removeFocusState=function(){this.element.classList.remove(this.classNames.focusState)},w.enable=function(){this.element.classList.remove(this.classNames.disabledState),this.element.removeAttribute("aria-disabled"),this.type===oe&&this.element.setAttribute("tabindex","0"),this.isDisabled=!1},w.disable=function(){this.element.classList.add(this.classNames.disabledState),this.element.setAttribute("aria-disabled","true"),this.type===oe&&this.element.setAttribute("tabindex","-1"),this.isDisabled=!0},w.wrap=function(v){ut(v,this.element)},w.unwrap=function(v){this.element.parentNode.insertBefore(v,this.element),this.element.parentNode.removeChild(this.element)},w.addLoadingState=function(){this.element.classList.add(this.classNames.loadingState),this.element.setAttribute("aria-busy","true"),this.isLoading=!0},w.removeLoadingState=function(){this.element.classList.remove(this.classNames.loadingState),this.element.removeAttribute("aria-busy"),this.isLoading=!1},w._onFocus=function(){this.isFocussed=!0},w._onBlur=function(){this.isFocussed=!1},O}();function En(O,w){for(var E=0;E0?this.element.scrollTop+ae-V:v.offsetTop;requestAnimationFrame(function(){I._animateScroll(de,k)})}},w._scrollDown=function(v,k,I){var R=(I-v)/k,V=R>1?R:1;this.element.scrollTop=v+V},w._scrollUp=function(v,k,I){var R=(v-I)/k,V=R>1?R:1;this.element.scrollTop=v-V},w._animateScroll=function(v,k){var I=this,R=ze,V=this.element.scrollTop,X=!1;k>0?(this._scrollDown(V,R,v),Vv&&(X=!0)),X&&requestAnimationFrame(function(){I._animateScroll(v,k)})},O}();function fn(O,w){for(var E=0;E0?"treeitem":"option"),Object.assign(Re.dataset,{choice:"",id:de,value:ke,selectText:v}),Ce?(Re.classList.add(X),Re.dataset.choiceDisabled="",Re.setAttribute("aria-disabled","true")):(Re.classList.add(R),Re.dataset.choiceSelectable=""),Re},input:function(w,E){var v=w.input,k=w.inputCloned,I=Object.assign(document.createElement("input"),{type:"text",className:v+" "+k,autocomplete:"off",autocapitalize:"off",spellcheck:!1});return I.setAttribute("role","textbox"),I.setAttribute("aria-autocomplete","list"),I.setAttribute("aria-label",E),I},dropdown:function(w){var E=w.list,v=w.listDropdown,k=document.createElement("div");return k.classList.add(E,v),k.setAttribute("aria-expanded","false"),k},notice:function(w,E,v){var k=w.item,I=w.itemChoice,R=w.noResults,V=w.noChoices;v===void 0&&(v="");var X=[k,I];return v==="no-choices"?X.push(V):v==="no-results"&&X.push(R),Object.assign(document.createElement("div"),{innerHTML:E,className:X.join(" ")})},option:function(w){var E=w.label,v=w.value,k=w.customProperties,I=w.active,R=w.disabled,V=new Option(E,v,!1,I);return k&&(V.dataset.customProperties=k),V.disabled=R,V}},le=ee,re=function(w){var E=w.value,v=w.label,k=w.id,I=w.groupId,R=w.disabled,V=w.elementId,X=w.customProperties,ae=w.placeholder,de=w.keyCode;return{type:Wt.ADD_CHOICE,value:E,label:v,id:k,groupId:I,disabled:R,elementId:V,customProperties:X,placeholder:ae,keyCode:de}},ve=function(w){return{type:Wt.FILTER_CHOICES,results:w}},ue=function(w){return w===void 0&&(w=!0),{type:Wt.ACTIVATE_CHOICES,active:w}},Fe=function(){return{type:Wt.CLEAR_CHOICES}},Ne=function(w){var E=w.value,v=w.label,k=w.id,I=w.choiceId,R=w.groupId,V=w.customProperties,X=w.placeholder,ae=w.keyCode;return{type:Wt.ADD_ITEM,value:E,label:v,id:k,choiceId:I,groupId:R,customProperties:V,placeholder:X,keyCode:ae}},Me=function(w,E){return{type:Wt.REMOVE_ITEM,id:w,choiceId:E}},Qt=function(w,E){return{type:Wt.HIGHLIGHT_ITEM,id:w,highlighted:E}},bt=function(w){var E=w.value,v=w.id,k=w.active,I=w.disabled;return{type:Wt.ADD_GROUP,value:E,id:v,active:k,disabled:I}},ar=function(){return{type:"CLEAR_ALL"}},or=function(w){return{type:"RESET_TO",state:w}},zi=function(w){return{type:"SET_IS_LOADING",isLoading:w}};function no(O,w){for(var E=0;E=0?this._store.getGroupById(V):null;return this._store.dispatch(Qt(I,!0)),k&&this.passedElement.triggerEvent(Rt.highlightItem,{id:I,value:ae,label:ke,groupValue:ye&&ye.value?ye.value:null}),this},w.unhighlightItem=function(v){if(!v)return this;var k=v.id,I=v.groupId,R=I===void 0?-1:I,V=v.value,X=V===void 0?"":V,ae=v.label,de=ae===void 0?"":ae,ke=R>=0?this._store.getGroupById(R):null;return this._store.dispatch(Qt(k,!1)),this.passedElement.triggerEvent(Rt.highlightItem,{id:k,value:X,label:de,groupValue:ke&&ke.value?ke.value:null}),this},w.highlightAll=function(){var v=this;return this._store.items.forEach(function(k){return v.highlightItem(k)}),this},w.unhighlightAll=function(){var v=this;return this._store.items.forEach(function(k){return v.unhighlightItem(k)}),this},w.removeActiveItemsByValue=function(v){var k=this;return this._store.activeItems.filter(function(I){return I.value===v}).forEach(function(I){return k._removeItem(I)}),this},w.removeActiveItems=function(v){var k=this;return this._store.activeItems.filter(function(I){var R=I.id;return R!==v}).forEach(function(I){return k._removeItem(I)}),this},w.removeHighlightedItems=function(v){var k=this;return v===void 0&&(v=!1),this._store.highlightedActiveItems.forEach(function(I){k._removeItem(I),v&&k._triggerChange(I.value)}),this},w.showDropdown=function(v){var k=this;return this.dropdown.isActive?this:(requestAnimationFrame(function(){k.dropdown.show(),k.containerOuter.open(k.dropdown.distanceFromTopWindow),!v&&k._canSearch&&k.input.focus(),k.passedElement.triggerEvent(Rt.showDropdown,{})}),this)},w.hideDropdown=function(v){var k=this;return this.dropdown.isActive?(requestAnimationFrame(function(){k.dropdown.hide(),k.containerOuter.close(),!v&&k._canSearch&&(k.input.removeActiveDescendant(),k.input.blur()),k.passedElement.triggerEvent(Rt.hideDropdown,{})}),this):this},w.getValue=function(v){v===void 0&&(v=!1);var k=this._store.activeItems.reduce(function(I,R){var V=v?R.value:R;return I.push(V),I},[]);return this._isSelectOneElement?k[0]:k},w.setValue=function(v){var k=this;return this.initialised?(v.forEach(function(I){return k._setChoiceOrItem(I)}),this):this},w.setChoiceByValue=function(v){var k=this;if(!this.initialised||this._isTextElement)return this;var I=Array.isArray(v)?v:[v];return I.forEach(function(R){return k._findAndSelectChoiceByValue(R)}),this},w.setChoices=function(v,k,I,R){var V=this;if(v===void 0&&(v=[]),k===void 0&&(k="value"),I===void 0&&(I="label"),R===void 0&&(R=!1),!this.initialised)throw new ReferenceError("setChoices was called on a non-initialized instance of Choices");if(!this._isSelectElement)throw new TypeError("setChoices can't be used with INPUT based Choices");if(typeof k!="string"||!k)throw new TypeError("value parameter must be a name of 'value' field in passed objects");if(R&&this.clearChoices(),typeof v=="function"){var X=v(this);if(typeof Promise=="function"&&X instanceof Promise)return new Promise(function(ae){return requestAnimationFrame(ae)}).then(function(){return V._handleLoadingState(!0)}).then(function(){return X}).then(function(ae){return V.setChoices(ae,k,I,R)}).catch(function(ae){V.config.silent||console.error(ae)}).then(function(){return V._handleLoadingState(!1)}).then(function(){return V});if(!Array.isArray(X))throw new TypeError(".setChoices first argument function must return either array of choices or Promise, got: "+typeof X);return this.setChoices(X,k,I,!1)}if(!Array.isArray(v))throw new TypeError(".setChoices must be called either with array of choices with a function resulting into Promise of array of choices");return this.containerOuter.removeLoadingState(),this._startLoading(),v.forEach(function(ae){ae.choices?V._addGroup({id:parseInt(ae.id,10)||null,group:ae,valueKey:k,labelKey:I}):V._addChoice({value:ae[k],label:ae[I],isSelected:ae.selected,isDisabled:ae.disabled,customProperties:ae.customProperties,placeholder:ae.placeholder})}),this._stopLoading(),this},w.clearChoices=function(){return this._store.dispatch(Fe()),this},w.clearStore=function(){return this._store.dispatch(ar()),this},w.clearInput=function(){var v=!this._isSelectOneElement;return this.input.clear(v),!this._isTextElement&&this._canSearch&&(this._isSearching=!1,this._store.dispatch(ue(!0))),this},w._render=function(){if(!this._store.isLoading()){this._currentState=this._store.state;var v=this._currentState.choices!==this._prevState.choices||this._currentState.groups!==this._prevState.groups||this._currentState.items!==this._prevState.items,k=this._isSelectElement,I=this._currentState.items!==this._prevState.items;!v||(k&&this._renderChoices(),I&&this._renderItems(),this._prevState=this._currentState)}},w._renderChoices=function(){var v=this,k=this._store,I=k.activeGroups,R=k.activeChoices,V=document.createDocumentFragment();if(this.choiceList.clear(),this.config.resetScrollPosition&&requestAnimationFrame(function(){return v.choiceList.scrollToTop()}),I.length>=1&&!this._isSearching){var X=R.filter(function(Ie){return Ie.placeholder===!0&&Ie.groupId===-1});X.length>=1&&(V=this._createChoicesFragment(X,V)),V=this._createGroupsFragment(I,R,V)}else R.length>=1&&(V=this._createChoicesFragment(R,V));if(V.childNodes&&V.childNodes.length>0){var ae=this._store.activeItems,de=this._canAddItem(ae,this.input.value);de.response?(this.choiceList.append(V),this._highlightChoice()):this.choiceList.append(this._getTemplate("notice",de.notice))}else{var ke,ye;this._isSearching?(ye=typeof this.config.noResultsText=="function"?this.config.noResultsText():this.config.noResultsText,ke=this._getTemplate("notice",ye,"no-results")):(ye=typeof this.config.noChoicesText=="function"?this.config.noChoicesText():this.config.noChoicesText,ke=this._getTemplate("notice",ye,"no-choices")),this.choiceList.append(ke)}},w._renderItems=function(){var v=this._store.activeItems||[];this.itemList.clear();var k=this._createItemsFragment(v);k.childNodes&&this.itemList.append(k)},w._createGroupsFragment=function(v,k,I){var R=this;I===void 0&&(I=document.createDocumentFragment());var V=function(ae){return k.filter(function(de){return R._isSelectOneElement?de.groupId===ae.id:de.groupId===ae.id&&(R.config.renderSelectedChoices==="always"||!de.selected)})};return this.config.shouldSort&&v.sort(this.config.sorter),v.forEach(function(X){var ae=V(X);if(ae.length>=1){var de=R._getTemplate("choiceGroup",X);I.appendChild(de),R._createChoicesFragment(ae,I,!0)}}),I},w._createChoicesFragment=function(v,k,I){var R=this;k===void 0&&(k=document.createDocumentFragment()),I===void 0&&(I=!1);var V=this.config,X=V.renderSelectedChoices,ae=V.searchResultLimit,de=V.renderChoiceLimit,ke=this._isSearching?we:this.config.sorter,ye=function(zt){var Mr=X==="auto"?R._isSelectOneElement||!zt.selected:!0;if(Mr){var Ir=R._getTemplate("choice",zt,R.config.itemSelectText);k.appendChild(Ir)}},Ie=v;X==="auto"&&!this._isSelectOneElement&&(Ie=v.filter(function(Ht){return!Ht.selected}));var Oe=Ie.reduce(function(Ht,zt){return zt.placeholder?Ht.placeholderChoices.push(zt):Ht.normalChoices.push(zt),Ht},{placeholderChoices:[],normalChoices:[]}),Ce=Oe.placeholderChoices,$e=Oe.normalChoices;(this.config.shouldSort||this._isSearching)&&$e.sort(ke);var Le=Ie.length,Re=this._isSelectOneElement?[].concat(Ce,$e):$e;this._isSearching?Le=ae:de&&de>0&&!I&&(Le=de);for(var ft=0;ft=R){var ae=V?this._searchChoices(v):0;this.passedElement.triggerEvent(Rt.search,{value:v,resultCount:ae})}else X&&(this._isSearching=!1,this._store.dispatch(ue(!0)))}},w._canAddItem=function(v,k){var I=!0,R=typeof this.config.addItemText=="function"?this.config.addItemText(k):this.config.addItemText;if(!this._isSelectOneElement){var V=Ue(v,k);this.config.maxItemCount>0&&this.config.maxItemCount<=v.length&&(I=!1,R=typeof this.config.maxItemText=="function"?this.config.maxItemText(this.config.maxItemCount):this.config.maxItemText),!this.config.duplicateItemsAllowed&&V&&I&&(I=!1,R=typeof this.config.uniqueItemText=="function"?this.config.uniqueItemText(k):this.config.uniqueItemText),this._isTextElement&&this.config.addItems&&I&&typeof this.config.addItemFilter=="function"&&!this.config.addItemFilter(k)&&(I=!1,R=typeof this.config.customAddItemText=="function"?this.config.customAddItemText(k):this.config.customAddItemText)}return{response:I,notice:R}},w._searchChoices=function(v){var k=typeof v=="string"?v.trim():v,I=typeof this._currentValue=="string"?this._currentValue.trim():this._currentValue;if(k.length<1&&k===I+" ")return 0;var R=this._store.searchableChoices,V=k,X=[].concat(this.config.searchFields),ae=Object.assign(this.config.fuseOptions,{keys:X}),de=new i.a(R,ae),ke=de.search(V);return this._currentValue=k,this._highlightPosition=0,this._isSearching=!0,this._store.dispatch(ve(ke)),ke.length},w._addEventListeners=function(){var v=document,k=v.documentElement;k.addEventListener("touchend",this._onTouchEnd,!0),this.containerOuter.element.addEventListener("keydown",this._onKeyDown,!0),this.containerOuter.element.addEventListener("mousedown",this._onMouseDown,!0),k.addEventListener("click",this._onClick,{passive:!0}),k.addEventListener("touchmove",this._onTouchMove,{passive:!0}),this.dropdown.element.addEventListener("mouseover",this._onMouseOver,{passive:!0}),this._isSelectOneElement&&(this.containerOuter.element.addEventListener("focus",this._onFocus,{passive:!0}),this.containerOuter.element.addEventListener("blur",this._onBlur,{passive:!0})),this.input.element.addEventListener("keyup",this._onKeyUp,{passive:!0}),this.input.element.addEventListener("focus",this._onFocus,{passive:!0}),this.input.element.addEventListener("blur",this._onBlur,{passive:!0}),this.input.element.form&&this.input.element.form.addEventListener("reset",this._onFormReset,{passive:!0}),this.input.addEventListeners()},w._removeEventListeners=function(){var v=document,k=v.documentElement;k.removeEventListener("touchend",this._onTouchEnd,!0),this.containerOuter.element.removeEventListener("keydown",this._onKeyDown,!0),this.containerOuter.element.removeEventListener("mousedown",this._onMouseDown,!0),k.removeEventListener("click",this._onClick),k.removeEventListener("touchmove",this._onTouchMove),this.dropdown.element.removeEventListener("mouseover",this._onMouseOver),this._isSelectOneElement&&(this.containerOuter.element.removeEventListener("focus",this._onFocus),this.containerOuter.element.removeEventListener("blur",this._onBlur)),this.input.element.removeEventListener("keyup",this._onKeyUp),this.input.element.removeEventListener("focus",this._onFocus),this.input.element.removeEventListener("blur",this._onBlur),this.input.element.form&&this.input.element.form.removeEventListener("reset",this._onFormReset),this.input.removeEventListeners()},w._onKeyDown=function(v){var k,I=v.target,R=v.keyCode,V=v.ctrlKey,X=v.metaKey,ae=this._store.activeItems,de=this.input.isFocussed,ke=this.dropdown.isActive,ye=this.itemList.hasChildren(),Ie=String.fromCharCode(R),Oe=yt.BACK_KEY,Ce=yt.DELETE_KEY,$e=yt.ENTER_KEY,Le=yt.A_KEY,Re=yt.ESC_KEY,ft=yt.UP_KEY,Ht=yt.DOWN_KEY,zt=yt.PAGE_UP_KEY,Mr=yt.PAGE_DOWN_KEY,Ir=V||X;!this._isTextElement&&/[a-zA-Z0-9-_ ]/.test(Ie)&&this.showDropdown();var ni=(k={},k[Le]=this._onAKey,k[$e]=this._onEnterKey,k[Re]=this._onEscapeKey,k[ft]=this._onDirectionKey,k[zt]=this._onDirectionKey,k[Ht]=this._onDirectionKey,k[Mr]=this._onDirectionKey,k[Ce]=this._onDeleteKey,k[Oe]=this._onDeleteKey,k);ni[R]&&ni[R]({event:v,target:I,keyCode:R,metaKey:X,activeItems:ae,hasFocusedInput:de,hasActiveDropdown:ke,hasItems:ye,hasCtrlDownKeyPressed:Ir})},w._onKeyUp=function(v){var k=v.target,I=v.keyCode,R=this.input.value,V=this._store.activeItems,X=this._canAddItem(V,R),ae=yt.BACK_KEY,de=yt.DELETE_KEY;if(this._isTextElement){var ke=X.notice&&R;if(ke){var ye=this._getTemplate("notice",X.notice);this.dropdown.element.innerHTML=ye.outerHTML,this.showDropdown(!0)}else this.hideDropdown(!0)}else{var Ie=(I===ae||I===de)&&!k.value,Oe=!this._isTextElement&&this._isSearching,Ce=this._canSearch&&X.response;Ie&&Oe?(this._isSearching=!1,this._store.dispatch(ue(!0))):Ce&&this._handleSearch(this.input.value)}this._canSearch=this.config.searchEnabled},w._onAKey=function(v){var k=v.hasItems,I=v.hasCtrlDownKeyPressed;if(I&&k){this._canSearch=!1;var R=this.config.removeItems&&!this.input.value&&this.input.element===document.activeElement;R&&this.highlightAll()}},w._onEnterKey=function(v){var k=v.event,I=v.target,R=v.activeItems,V=v.hasActiveDropdown,X=yt.ENTER_KEY,ae=I.hasAttribute("data-button");if(this._isTextElement&&I.value){var de=this.input.value,ke=this._canAddItem(R,de);ke.response&&(this.hideDropdown(!0),this._addItem({value:de}),this._triggerChange(de),this.clearInput())}if(ae&&(this._handleButtonAction(R,I),k.preventDefault()),V){var ye=this.dropdown.getChild("."+this.config.classNames.highlightedState);ye&&(R[0]&&(R[0].keyCode=X),this._handleChoiceAction(R,ye)),k.preventDefault()}else this._isSelectOneElement&&(this.showDropdown(),k.preventDefault())},w._onEscapeKey=function(v){var k=v.hasActiveDropdown;k&&(this.hideDropdown(!0),this.containerOuter.focus())},w._onDirectionKey=function(v){var k=v.event,I=v.hasActiveDropdown,R=v.keyCode,V=v.metaKey,X=yt.DOWN_KEY,ae=yt.PAGE_UP_KEY,de=yt.PAGE_DOWN_KEY;if(I||this._isSelectOneElement){this.showDropdown(),this._canSearch=!1;var ke=R===X||R===de?1:-1,ye=V||R===de||R===ae,Ie="[data-choice-selectable]",Oe;if(ye)ke>0?Oe=this.dropdown.element.querySelector(Ie+":last-of-type"):Oe=this.dropdown.element.querySelector(Ie);else{var Ce=this.dropdown.element.querySelector("."+this.config.classNames.highlightedState);Ce?Oe=Ge(Ce,Ie,ke):Oe=this.dropdown.element.querySelector(Ie)}Oe&&(W(Oe,this.choiceList.element,ke)||this.choiceList.scrollToChildElement(Oe,ke),this._highlightChoice(Oe)),k.preventDefault()}},w._onDeleteKey=function(v){var k=v.event,I=v.target,R=v.hasFocusedInput,V=v.activeItems;R&&!I.value&&!this._isSelectOneElement&&(this._handleBackspace(V),k.preventDefault())},w._onTouchMove=function(){this._wasTap&&(this._wasTap=!1)},w._onTouchEnd=function(v){var k=v||v.touches[0],I=k.target,R=this._wasTap&&this.containerOuter.element.contains(I);if(R){var V=I===this.containerOuter.element||I===this.containerInner.element;V&&(this._isTextElement?this.input.focus():this._isSelectMultipleElement&&this.showDropdown()),v.stopPropagation()}this._wasTap=!0},w._onMouseDown=function(v){var k=v.target;if(k instanceof HTMLElement){if(ji&&this.choiceList.element.contains(k)){var I=this.choiceList.element.firstElementChild,R=this._direction==="ltr"?v.offsetX>=I.offsetWidth:v.offsetX0;R&&this.unhighlightAll(),this.containerOuter.removeFocusState(),this.hideDropdown(!0)}},w._onFocus=function(v){var k=this,I,R=v.target,V=this.containerOuter.element.contains(R);if(!!V){var X=(I={},I[Y]=function(){R===k.input.element&&k.containerOuter.addFocusState()},I[oe]=function(){k.containerOuter.addFocusState(),R===k.input.element&&k.showDropdown(!0)},I[Ee]=function(){R===k.input.element&&(k.showDropdown(!0),k.containerOuter.addFocusState())},I);X[this.passedElement.element.type]()}},w._onBlur=function(v){var k=this,I=v.target,R=this.containerOuter.element.contains(I);if(R&&!this._isScrollingOnIe){var V,X=this._store.activeItems,ae=X.some(function(ke){return ke.highlighted}),de=(V={},V[Y]=function(){I===k.input.element&&(k.containerOuter.removeFocusState(),ae&&k.unhighlightAll(),k.hideDropdown(!0))},V[oe]=function(){k.containerOuter.removeFocusState(),(I===k.input.element||I===k.containerOuter.element&&!k._canSearch)&&k.hideDropdown(!0)},V[Ee]=function(){I===k.input.element&&(k.containerOuter.removeFocusState(),k.hideDropdown(!0),ae&&k.unhighlightAll())},V);de[this.passedElement.element.type]()}else this._isScrollingOnIe=!1,this.input.element.focus()},w._onFormReset=function(){this._store.dispatch(or(this._initialState))},w._highlightChoice=function(v){var k=this;v===void 0&&(v=null);var I=Array.from(this.dropdown.element.querySelectorAll("[data-choice-selectable]"));if(!!I.length){var R=v,V=Array.from(this.dropdown.element.querySelectorAll("."+this.config.classNames.highlightedState));V.forEach(function(X){X.classList.remove(k.config.classNames.highlightedState),X.setAttribute("aria-selected","false")}),R?this._highlightPosition=I.indexOf(R):(I.length>this._highlightPosition?R=I[this._highlightPosition]:R=I[I.length-1],R||(R=I[0])),R.classList.add(this.config.classNames.highlightedState),R.setAttribute("aria-selected","true"),this.passedElement.triggerEvent(Rt.highlightChoice,{el:R}),this.dropdown.isActive&&(this.input.setActiveDescendant(R.id),this.containerOuter.setActiveDescendant(R.id))}},w._addItem=function(v){var k=v.value,I=v.label,R=I===void 0?null:I,V=v.choiceId,X=V===void 0?-1:V,ae=v.groupId,de=ae===void 0?-1:ae,ke=v.customProperties,ye=ke===void 0?null:ke,Ie=v.placeholder,Oe=Ie===void 0?!1:Ie,Ce=v.keyCode,$e=Ce===void 0?null:Ce,Le=typeof k=="string"?k.trim():k,Re=$e,ft=ye,Ht=this._store.items,zt=R||Le,Mr=X||-1,Ir=de>=0?this._store.getGroupById(de):null,ni=Ht?Ht.length+1:1;return this.config.prependValue&&(Le=this.config.prependValue+Le.toString()),this.config.appendValue&&(Le+=this.config.appendValue.toString()),this._store.dispatch(Ne({value:Le,label:zt,id:ni,choiceId:Mr,groupId:de,customProperties:ye,placeholder:Oe,keyCode:Re})),this._isSelectOneElement&&this.removeActiveItems(ni),this.passedElement.triggerEvent(Rt.addItem,{id:ni,value:Le,label:zt,customProperties:ft,groupValue:Ir&&Ir.value?Ir.value:void 0,keyCode:Re}),this},w._removeItem=function(v){if(!v||!N("Object",v))return this;var k=v.id,I=v.value,R=v.label,V=v.choiceId,X=v.groupId,ae=X>=0?this._store.getGroupById(X):null;return this._store.dispatch(Me(k,V)),ae&&ae.value?this.passedElement.triggerEvent(Rt.removeItem,{id:k,value:I,label:R,groupValue:ae.value}):this.passedElement.triggerEvent(Rt.removeItem,{id:k,value:I,label:R}),this},w._addChoice=function(v){var k=v.value,I=v.label,R=I===void 0?null:I,V=v.isSelected,X=V===void 0?!1:V,ae=v.isDisabled,de=ae===void 0?!1:ae,ke=v.groupId,ye=ke===void 0?-1:ke,Ie=v.customProperties,Oe=Ie===void 0?null:Ie,Ce=v.placeholder,$e=Ce===void 0?!1:Ce,Le=v.keyCode,Re=Le===void 0?null:Le;if(!(typeof k=="undefined"||k===null)){var ft=this._store.choices,Ht=R||k,zt=ft?ft.length+1:1,Mr=this._baseId+"-"+this._idNames.itemChoice+"-"+zt;this._store.dispatch(re({id:zt,groupId:ye,elementId:Mr,value:k,label:Ht,disabled:de,customProperties:Oe,placeholder:$e,keyCode:Re})),X&&this._addItem({value:k,label:Ht,choiceId:zt,customProperties:Oe,placeholder:$e,keyCode:Re})}},w._addGroup=function(v){var k=this,I=v.group,R=v.id,V=v.valueKey,X=V===void 0?"value":V,ae=v.labelKey,de=ae===void 0?"label":ae,ke=N("Object",I)?I.choices:Array.from(I.getElementsByTagName("OPTION")),ye=R||Math.floor(new Date().valueOf()*Math.random()),Ie=I.disabled?I.disabled:!1;if(ke){this._store.dispatch(bt({value:I.label,id:ye,active:!0,disabled:Ie}));var Oe=function($e){var Le=$e.disabled||$e.parentNode&&$e.parentNode.disabled;k._addChoice({value:$e[X],label:N("Object",$e)?$e[de]:$e.innerHTML,isSelected:$e.selected,isDisabled:Le,groupId:ye,customProperties:$e.customProperties,placeholder:$e.placeholder})};ke.forEach(Oe)}else this._store.dispatch(bt({value:I.label,id:I.id,active:!1,disabled:I.disabled}))},w._getTemplate=function(v){var k;if(!v)return null;for(var I=this.config.classNames,R=arguments.length,V=new Array(R>1?R-1:0),X=1;X{m();(function(e,t){typeof sl=="object"&&typeof Nw!="undefined"?t(sl):typeof define=="function"&&define.amd?define(["exports"],t):(e=typeof globalThis!="undefined"?globalThis:e||self,t(e.immutableJSONPatch={}))})(sl,function(e){"use strict";function t(W){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?t=function(q){return typeof q}:t=function(q){return q&&typeof Symbol=="function"&&q.constructor===Symbol&&q!==Symbol.prototype?"symbol":typeof q},t(W)}function r(W,j){return JSON.stringify(W)===JSON.stringify(j)}function n(W,j){return W===j}function i(W){return W.slice(0,W.length-1)}function a(W){return W[W.length-1]}function o(W,j){var q=arguments.length>2&&arguments[2]!==void 0?arguments[2]:n;if(W.length3&&arguments[3]!==void 0?arguments[3]:!1;if(j.length===0)return q;var we=j[0],xe=y(W?W[we]:void 0,j.slice(1),q,te);if(!s(W))if(te){var Ue=typeof we=="number"?[]:{};return Ue[we]=xe,Ue}else throw new Error("Path does not exist");return p(W,we,xe)}function b(W,j,q){if(j.length===0)return q(W);if(!s(W))throw new Error("Path doesn't exist");var te=j[0],we=b(W[te],j.slice(1),q);return p(W,te,we)}function x(W,j){if(j.length===0)return W;if(!s(W))throw new Error("Path does not exist");if(j.length===1){var q=j[0];if(q in W){var te=f(W);return Array.isArray(te)?te.splice(q,1):delete te[q],te}else return W}var we=j[0],xe=x(W[we],j.slice(1));return p(W,we,xe)}function T(W,j,q){var te=j.slice(0,j.length-1),we=j[j.length-1];return b(W,te,function(xe){if(!Array.isArray(xe))throw new TypeError("Array expected at path "+JSON.stringify(te));var Ue=f(xe);return Ue.splice(we,0,q),Ue})}function C(W,j){return W===void 0?!1:j.length===0?!0:C(W[j[0]],j.slice(1))}function A(W){var j=W.split("/");return j.shift(),j.map(function(q){return q.replace(/~1/g,"/").replace(/~0/g,"~")})}function H(W){return W.map(function(j){return"/"+String(j).replace(/~/g,"~0").replace(/\//g,"~1")}).join("")}function D(W,j,q){for(var te=W,we=0;we{m();(function(){var e;typeof wf!="undefined"?e=wf.exports=n:e=function(){return this||(0,eval)("this")}(),e.format=n,e.vsprintf=r,typeof console!="undefined"&&typeof console.log=="function"&&(e.printf=t);function t(){console.log(n.apply(null,arguments))}function r(i,a){return n.apply(null,[i].concat(a))}function n(i){for(var a=1,o=[].slice.call(arguments),s=0,u=i.length,l="",c,d=!1,f,p,g=!1,y,b=function(){return o[a++]},x=function(){for(var T="";/\d/.test(i[s]);)T+=i[s++],c=i[s];return T.length>0?parseInt(T):null};sTf});m();m();function Il(e,t){let r=Object.keys(t).map(n=>ok(e,n,t[n]));return r.length===1?r[0]:function(){r.forEach(n=>n())}}function ok(e,t,r){let n=e[t],i=e.hasOwnProperty(t),a=r(n);return n&&Object.setPrototypeOf(a,n),Object.setPrototypeOf(o,a),e[t]=o,s;function o(...u){return a===n&&e[t]===o&&s(),a.apply(this,u)}function s(){e[t]===o&&(i?e[t]=n:delete e[t]),a!==n&&(a=n,Object.setPrototypeOf(o,n||Function))}}var Dt=me(require("obsidian"));m();m();Ar();var oi,kt,Al,qf,si=0,Yf=[],lo=[],Jf=fe.__b,Gf=fe.__r,Qf=fe.diffed,Xf=fe.__c,Zf=fe.unmount;function Xi(e,t){fe.__h&&fe.__h(kt,e,si||t),si=0;var r=kt.__H||(kt.__H={__:[],__h:[]});return e>=r.__.length&&r.__.push({__V:lo}),r.__[e]}function sr(e){return si=1,Zi(tp,e)}function Zi(e,t,r){var n=Xi(oi++,2);return n.t=e,n.__c||(n.__=[r?r(t):tp(void 0,t),function(i){var a=n.t(n.__[0],i);n.__[0]!==a&&(n.__=[a,n.__[1]],n.__c.setState({}))}],n.__c=kt),n.__}function Sn(e,t){var r=Xi(oi++,3);!fe.__s&&Pl(r.__H,t)&&(r.__=e,r.u=t,kt.__H.__h.push(r))}function Lr(e,t){var r=Xi(oi++,4);!fe.__s&&Pl(r.__H,t)&&(r.__=e,r.u=t,kt.__h.push(r))}function Xt(e){return si=5,lr(function(){return{current:e}},[])}function co(e,t,r){si=6,Lr(function(){return typeof e=="function"?(e(t()),function(){return e(null)}):e?(e.current=t(),function(){return e.current=null}):void 0},r==null?r:r.concat(e))}function lr(e,t){var r=Xi(oi++,7);return Pl(r.__H,t)?(r.__V=e(),r.u=t,r.__h=e,r.__V):r.__}function cr(e,t){return si=8,lr(function(){return e},t)}function uo(e){var t=kt.context[e.__c],r=Xi(oi++,9);return r.c=e,t?(r.__==null&&(r.__=!0,t.sub(kt)),t.props.value):e.__}function fo(e,t){fe.useDebugValue&&fe.useDebugValue(t?t(e):e)}function sk(){for(var e;e=Yf.shift();)if(e.__P)try{e.__H.__h.forEach(po),e.__H.__h.forEach(Ll),e.__H.__h=[]}catch(t){e.__H.__h=[],fe.__e(t,e.__v)}}fe.__b=function(e){kt=null,Jf&&Jf(e)},fe.__r=function(e){Gf&&Gf(e),oi=0;var t=(kt=e.__c).__H;t&&(Al===kt?(t.__h=[],kt.__h=[],t.__.forEach(function(r){r.__V=lo,r.u=void 0})):(t.__h.forEach(po),t.__h.forEach(Ll),t.__h=[])),Al=kt},fe.diffed=function(e){Qf&&Qf(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(Yf.push(t)!==1&&qf===fe.requestAnimationFrame||((qf=fe.requestAnimationFrame)||function(r){var n,i=function(){clearTimeout(a),ep&&cancelAnimationFrame(n),setTimeout(r)},a=setTimeout(i,100);ep&&(n=requestAnimationFrame(i))})(sk)),t.__H.__.forEach(function(r){r.u&&(r.__H=r.u),r.__V!==lo&&(r.__=r.__V),r.u=void 0,r.__V=lo})),Al=kt=null},fe.__c=function(e,t){t.some(function(r){try{r.__h.forEach(po),r.__h=r.__h.filter(function(n){return!n.__||Ll(n)})}catch(n){t.some(function(i){i.__h&&(i.__h=[])}),t=[],fe.__e(n,r.__v)}}),Xf&&Xf(e,t)},fe.unmount=function(e){Zf&&Zf(e);var t,r=e.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{po(n)}catch(i){t=i}}),t&&fe.__e(t,r.__v))};var ep=typeof requestAnimationFrame=="function";function po(e){var t=kt,r=e.__c;typeof r=="function"&&(e.__c=void 0,r()),kt=t}function Ll(e){var t=kt;e.__c=e.__(),kt=t}function Pl(e,t){return!e||e.length!==t.length||t.some(function(r,n){return r!==e[n]})}function tp(e,t){return typeof t=="function"?t(e):t}Ar();Ar();function np(e,t){for(var r in t)e[r]=t[r];return e}function Fl(e,t){for(var r in e)if(r!=="__source"&&!(r in t))return!0;for(var n in t)if(n!=="__source"&&e[n]!==t[n])return!0;return!1}function Nl(e){this.props=e}function lk(e,t){function r(i){var a=this.props.ref,o=a==i.ref;return!o&&a&&(a.call?a(null):a.current=null),t?!t(this.props,i)||!o:Fl(this.props,i)}function n(i){return this.shouldComponentUpdate=r,h(e,i)}return n.displayName="Memo("+(e.displayName||e.name)+")",n.prototype.isReactComponent=!0,n.__f=!0,n}(Nl.prototype=new ht).isPureReactComponent=!0,Nl.prototype.shouldComponentUpdate=function(e,t){return Fl(this.props,e)||Fl(this.state,t)};var rp=fe.__b;fe.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),rp&&rp(e)};var ck=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function uk(e){function t(r){var n=np({},r);return delete n.ref,e(n,r.ref||null)}return t.$$typeof=ck,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var ip=function(e,t){return e==null?null:wt(wt(e).map(t))},dk={map:ip,forEach:ip,count:function(e){return e?wt(e).length:0},only:function(e){var t=wt(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:wt},fk=fe.__e;fe.__e=function(e,t,r,n){if(e.then){for(var i,a=t;a=a.__;)if((i=a.__c)&&i.__c)return t.__e==null&&(t.__e=r.__e,t.__k=r.__k),i.__c(e,t)}fk(e,t,r,n)};var ap=fe.unmount;function ho(){this.__u=0,this.t=null,this.__b=null}function op(e){var t=e.__.__c;return t&&t.__e&&t.__e(e)}function pk(e){var t,r,n;function i(a){if(t||(t=e()).then(function(o){r=o.default||o},function(o){n=o}),n)throw n;if(!r)throw t;return h(r,a)}return i.displayName="Lazy",i.__f=!0,i}function ea(){this.u=null,this.o=null}fe.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&e.__h===!0&&(e.type=null),ap&&ap(e)},(ho.prototype=new ht).__c=function(e,t){var r=t.__c,n=this;n.t==null&&(n.t=[]),n.t.push(r);var i=op(n.__v),a=!1,o=function(){a||(a=!0,r.__R=null,i?i(s):s())};r.__R=o;var s=function(){if(!--n.__u){if(n.state.__e){var l=n.state.__e;n.__v.__k[0]=function d(f,p,g){return f&&(f.__v=null,f.__k=f.__k&&f.__k.map(function(y){return d(y,p,g)}),f.__c&&f.__c.__P===p&&(f.__e&&g.insertBefore(f.__e,f.__d),f.__c.__e=!0,f.__c.__P=g)),f}(l,l.__c.__P,l.__c.__O)}var c;for(n.setState({__e:n.__b=null});c=n.t.pop();)c.forceUpdate()}},u=t.__h===!0;n.__u++||u||n.setState({__e:n.__b=n.__v.__k[0]}),e.then(o,o)},ho.prototype.componentWillUnmount=function(){this.t=[]},ho.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var r=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=function a(o,s,u){return o&&(o.__c&&o.__c.__H&&(o.__c.__H.__.forEach(function(l){typeof l.__c=="function"&&l.__c()}),o.__c.__H=null),(o=np({},o)).__c!=null&&(o.__c.__P===u&&(o.__c.__P=s),o.__c=null),o.__k=o.__k&&o.__k.map(function(l){return a(l,s,u)})),o}(this.__b,r,n.__O=n.__P)}this.__b=null}var i=t.__e&&h(S,null,e.fallback);return i&&(i.__h=null),[h(S,null,t.__e?null:e.children),i]};var sp=function(e,t,r){if(++r[1]===r[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(r=e.u;r;){for(;r.length>3;)r.pop()();if(r[1]>>1,1),t.i.removeChild(n)}}),xn(h(hk,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function gk(e,t){var r=h(mk,{__v:e,i:t});return r.containerInfo=t,r}(ea.prototype=new ht).__e=function(e){var t=this,r=op(t.__v),n=t.o.get(e);return n[0]++,function(i){var a=function(){t.props.revealOrder?(n.push(i),sp(t,e,n)):i()};r?r(a):a()}},ea.prototype.render=function(e){this.u=null,this.o=new Map;var t=wt(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var r=t.length;r--;)this.o.set(t[r],this.u=[1,0,this.u]);return e.children},ea.prototype.componentDidUpdate=ea.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,r){sp(e,r,t)})};var lp=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.element")||60103,vk=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|shape|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,yk=typeof document!="undefined",bk=function(e){return(typeof Symbol!="undefined"&&typeof Symbol()=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(e)};function wk(e,t,r){return t.__k==null&&(t.textContent=""),xn(e,t),typeof r=="function"&&r(),e?e.__c:null}function Ek(e,t,r){return Qi(e,t),typeof r=="function"&&r(),e?e.__c:null}ht.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(ht.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var cp=fe.event;function kk(){}function xk(){return this.cancelBubble}function Sk(){return this.defaultPrevented}fe.event=function(e){return cp&&(e=cp(e)),e.persist=kk,e.isPropagationStopped=xk,e.isDefaultPrevented=Sk,e.nativeEvent=e};var up,dp={configurable:!0,get:function(){return this.class}},fp=fe.vnode;fe.vnode=function(e){var t=e.type,r=e.props,n=r;if(typeof t=="string"){var i=t.indexOf("-")===-1;for(var a in n={},r){var o=r[a];yk&&a==="children"&&t==="noscript"||a==="value"&&"defaultValue"in r&&o==null||(a==="defaultValue"&&"value"in r&&r.value==null?a="value":a==="download"&&o===!0?o="":/ondoubleclick/i.test(a)?a="ondblclick":/^onchange(textarea|input)/i.test(a+t)&&!bk(r.type)?a="oninput":/^onfocus$/i.test(a)?a="onfocusin":/^onblur$/i.test(a)?a="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(a)?a=a.toLowerCase():i&&vk.test(a)?a=a.replace(/[A-Z0-9]/,"-$&").toLowerCase():o===null&&(o=void 0),/^oninput$/i.test(a)&&(a=a.toLowerCase(),n[a]&&(a="oninputCapture")),n[a]=o)}t=="select"&&n.multiple&&Array.isArray(n.value)&&(n.value=wt(r.children).forEach(function(s){s.props.selected=n.value.indexOf(s.props.value)!=-1})),t=="select"&&n.defaultValue!=null&&(n.value=wt(r.children).forEach(function(s){s.props.selected=n.multiple?n.defaultValue.indexOf(s.props.value)!=-1:n.defaultValue==s.props.value})),e.props=n,r.class!=r.className&&(dp.enumerable="className"in r,r.className!=null&&(n.class=r.className),Object.defineProperty(n,"className",dp))}e.$$typeof=lp,fp&&fp(e)};var pp=fe.__r;fe.__r=function(e){pp&&pp(e),up=e.__c};var _k={ReactCurrentDispatcher:{current:{readContext:function(e){return up.__n[e.__c].props.value}}}};function Ck(e){return h.bind(null,e)}function hp(e){return!!e&&e.$$typeof===lp}function Dk(e){return hp(e)?so.apply(null,arguments):e}function Tk(e){return!!e.__k&&(xn(null,e),!0)}function Mk(e){return e&&(e.base||e.nodeType===1&&e)||null}var Ik=function(e,t){return e(t)},Ak=function(e,t){return e(t)};var P={useState:sr,useReducer:Zi,useEffect:Sn,useLayoutEffect:Lr,useRef:Xt,useImperativeHandle:co,useMemo:lr,useCallback:cr,useContext:uo,useDebugValue:fo,version:"17.0.2",Children:dk,render:wk,hydrate:Ek,unmountComponentAtNode:Tk,createPortal:gk,createElement:h,createContext:ai,createFactory:Ck,cloneElement:Dk,createRef:ri,Fragment:S,isValidElement:hp,findDOMNode:Mk,Component:ht,PureComponent:Nl,memo:lk,forwardRef:uk,flushSync:Ak,unstable_batchedUpdates:Ik,StrictMode:S,Suspense:ho,SuspenseList:ea,lazy:pk,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:_k};m();function Ze(e){return e.win}function ur(e){return e.doc.body}m();var Ub=me(Et());m();var We=P.createContext(null),go=P.createContext(null);m();var Ip=me(Et()),hr=me(require("obsidian"));m();var Cp=me(xp()),fr=me(Et());m();function Sp(e){return Object.prototype.toString.call(e)==="[object Object]"}function _p(e){var t,r;return Sp(e)===!1?!1:(t=e.constructor,t===void 0?!0:(r=t.prototype,!(Sp(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}m();function Zk(e,t){return e.length!==t.length?!1:e.every((r,n,i)=>n===i.length-1?r!==t[n]:r===t[n])}function ex(e,t){return e.length===t.length&&e.every((r,n)=>r===t[n])}var an;(function(i){i[i.Before=0]="Before",i[i.After=1]="After",i[i.Self=2]="Self",i[i.NotSiblings=3]="NotSiblings"})(an||(an={}));function ra(e,t){if(ex(e,t))return 2;if(!Zk(e,t))return 3;let r=e.length-1;return e[r]=0;n--)r={children:{[e[n]]:r}};return r}function ia(e,t){let r=t;for(let n=e.length-2;n>=0;n--)r={children:{[e[n]]:r}};return r}function Dp(e){return ia(e,{children:{$splice:[[e[e.length-1],1]]}})}function Tp(e,t,r=0){return ia(e,{children:{$splice:[[e[e.length-1]+r,0,...t]]}})}function nx(e,t){return ia(e,{children:{$push:t}})}function rx(e,t){return ia(e,{children:{$unshift:t}})}function aa(e,t,r,n){let i=n?n(mt(e,t)):mt(e,t),o=ra(t,r)===an.After?-1:0,s=Dp(t),u=Tp(r,[i],o),l=(0,Cp.default)(s,u,{isMergeableObject:d=>_p(d)||Array.isArray(d)});return(0,fr.default)(e,l)}function Fr(e,t){return(0,fr.default)(e,Dp(t))}function pr(e,t,r){return(0,fr.default)(e,Tp(t,r))}function Bl(e,t,r){return(0,fr.default)(e,nx(t,r))}function Mp(e,t,r){return(0,fr.default)(e,rx(t,r))}function vo(e,t,r){return(0,fr.default)(e,tx(t,r))}function Kl(e,t,r){return(0,fr.default)(e,ia(t,r))}var $l="kanban-plugin";function ci(){}function B(e){return`${$l}__${e}`}function Ae(e=9){return Math.random().toString(36).slice(2,2+e)}function Ul(e,t,r,n,i){var l,c;let a=mt(e,t.slice(0,-1)),o=mt(r,n.slice(0,-1)),s=(l=a==null?void 0:a.data)==null?void 0:l.shouldMarkItemsComplete,u=(c=o==null?void 0:o.data)==null?void 0:c.shouldMarkItemsComplete;return!s&&!u||u===!!i.data.isComplete?i:(0,Ip.default)(i,{data:{isComplete:{$set:u}}})}function yo(){let e=P.useRef(!1);return{oncompositionstart:()=>{e.current=!0},oncompositionend:()=>{e.current=!1},getShouldIMEBlockAction:()=>e.current}}var ix=/<%/;async function Ap(e,t){let r=t?e.app.vault.getAbstractFileByPath(t):null;if(r&&r instanceof hr.TFile){let n=app.workspace.getActiveViewOfType(hr.MarkdownView);try{(n==null?void 0:n.getMode())!=="source"&&await n.setState({...n.getState(),mode:"source"},{});let{templatesEnabled:i,templaterEnabled:a,templatesPlugin:o,templaterPlugin:s}=Vl(e.app),u=await e.app.vault.read(r);if(i&&a)return ix.test(u)?await s.append_template_to_active_file(r):await o.instance.insertTemplate(r);if(i)return await o.instance.insertTemplate(r);if(a)return await s.append_template_to_active_file(r);await e.app.vault.modify(e.app.workspace.getActiveFile(),u)}catch(i){console.error(i),e.setError(i)}}}function Nr(e){var s,u,l,c,d;let t=e.internalPlugins.plugins,r=(s=t["daily-notes"])==null?void 0:s.enabled,n=(u=t["daily-notes"])==null?void 0:u.instance.options.format,i=(l=e.plugins.plugins["nldates-obsidian"])==null?void 0:l.settings.format,a=(c=t.templates)==null?void 0:c.enabled,o=(d=t.templates)==null?void 0:d.instance.options.dateFormat;return r&&n||i||a&&o||"YYYY-MM-DD"}function ui(e){var a,o,s;let t=e.internalPlugins.plugins,r=(a=e.plugins.plugins["nldates-obsidian"])==null?void 0:a.settings.timeFormat,n=(o=t.templates)==null?void 0:o.enabled,i=(s=t.templates)==null?void 0:s.instance.options.timeFormat;return r||n&&i||"HH:mm"}var Lp=/[\\^$.*+?()[\]{}|]/g,ax=RegExp(Lp.source);function Ln(e){return e&&ax.test(e)?e.replace(Lp,"\\$&"):e||""}function Vl(e){var s;let t=e.internalPlugins.plugins.templates,r=t.enabled,n=e.plugins.plugins["templater-obsidian"],i=e.plugins.enabledPlugins.has("templater-obsidian"),a=n&&((s=this.app.plugins.plugins["templater-obsidian"].settings)==null?void 0:s.empty_file_template),o=r?t.instance.options.folder:n?n.settings.template_folder:void 0;return{templatesPlugin:t,templatesEnabled:r,templaterPlugin:n==null?void 0:n.templater,templaterEnabled:i,templaterEmptyFileTemplate:a,templateFolder:o}}function bo(e){let r=(e.getSetting("tag-colors")||[]).reduce((n,i)=>(i.tagKey&&(n[i.tagKey]=i),n),{});return n=>r[n]?r[n]:null}function wo(e){let r=(e.getSetting("date-colors")||[]).map(i=>{if(i.isToday)return["today",i];if(i.isBefore)return["before",i];if(i.isAfter)return["after",i];let a=i.direction==="after"?1:-1,o=(0,hr.moment)();return o.add(i.distance*a,i.unit),[o,i]}),n=(0,hr.moment)();return r.sort((i,a)=>i[0]==="today"?typeof a[0]=="string"?-1:a[0].isSame(n,"day")?1:-1:a[0]==="today"?typeof i[0]=="string"?1:i[0].isSame(n,"day")?-1:1:i[0]==="after"||i[0]==="before"?1:a[0]==="after"||a[0]==="before"||i[0].isBefore(a[0])?-1:1),i=>{let a=(0,hr.moment)(),o=r.find(s=>{let u=s[1];if(u.isToday)return i.isSame(a,"day");if(u.isAfter)return i.isAfter(a);if(u.isBefore)return i.isBefore(a);let l="days";return u.unit==="hours"&&(l="hours"),u.direction==="before"?i.isBetween(s[0],a,l,"[]"):i.isBetween(a,s[0],l,"[]")});return o?o[1]:null}}m();m();function et(e){if(typeof e=="string"||typeof e=="number")return""+e;let t="";if(Array.isArray(e))for(let r=0,n;r{n.has(t)&&(n.delete(t),n.size===0&&r.push(i))}),r.forEach(n=>{this.idScopes.delete(n),this.scrollStates.delete(n)})}};var xt=P.createContext(null),mr=P.createContext(""),sa=P.createContext(null),la=P.createContext(new oa),Eo=P.createContext(null),ko=P.createContext(null);m();m();m();var Pp={bottom:0,height:0,left:0,right:0,top:0,width:0,x:0,y:0,toJSON(){}},Fp=[0,0,0,0];function Xe(e){return e===void 0?0:e}function xo(e,t,r,n){return[e.left+Xe(t==null?void 0:t.x)+Xe(r==null?void 0:r.x)-Xe(n==null?void 0:n.x),e.top+Xe(t==null?void 0:t.y)+Xe(r==null?void 0:r.y)-Xe(n==null?void 0:n.y),e.left+e.width+Xe(t==null?void 0:t.x)+Xe(r==null?void 0:r.x)-Xe(n==null?void 0:n.x),e.top+e.height+Xe(t==null?void 0:t.y)+Xe(r==null?void 0:r.y)-Xe(n==null?void 0:n.y)]}function Wl(e,t,r,n){let i=xo(e,t,r,null);return n==="top"?(i[3]=i[1]+35,i):n==="right"?(i[0]=i[0]+e.width-35,i):n==="bottom"?(i[1]=i[1]+e.height-35,i):(i[2]=i[0]+35,i)}function So(e,t,r,n,i,a){return[e-Xe(i==null?void 0:i.x)-Xe(a==null?void 0:a.x),t-Xe(i==null?void 0:i.y)-Xe(a==null?void 0:a.y),r-Xe(i==null?void 0:i.x)-Xe(a==null?void 0:a.x),n-Xe(i==null?void 0:i.y)-Xe(a==null?void 0:a.y)]}var ox=e=>sx(e,(t,r)=>t{if(o.entityId===r)return 1/0;let s=o.getHitbox(),u=Op(s)[0],l=lx(t),c=o.getData().sortAxis==="horizontal"?"x":"y",d=l[c]>n[c]?1e3:0;return di(u,n)+d}),a=ox(i);return e[a]?e[a]:null}function jl(e){let{scrollLeft:t,scrollTop:r,scrollWidth:n,scrollHeight:i,offsetWidth:a,offsetHeight:o}=e,s=t,u=r,l=n-a,c=i-o;return{x:s,y:u,maxX:Math.max(l,0),maxY:Math.max(c,0)}}function Rp(e,t,r){let n=Math.trunc((r.x-t.x)*100)/100,i=Math.trunc((r.y-t.y)*100)/100;return[e[0]+n,e[1]+i,e[2]+n,e[3]+i]}function ql(e,t=[0,0,0,0]){let r=e[0]-t[0],n=e[1]-t[1],i=e[2]+t[2],o=e[3]+t[3]-n;return{width:i-r,height:o}}var Yl=class{constructor(t,r,n,i,a,o,s,u,l,c){this.isVisible=!1;this.id=n,this.instanceId=Ae(),this.scopeId=r,this.entityId=`${r}-${n}`,this.dndManager=t,this.index=i,this.children=new Map,this.parent=a,this.scrollParent=o,this.getEntityData=c,this.sortManager=s,this.pollForNodes(u,l)}pollForNodes(t,r){!t()||!r()?this.dndManager.win.requestAnimationFrame(()=>this.pollForNodes(t,r)):this.initNodes(t(),r())}initNodes(t,r){var n,i;if(this.entityNode=t,this.measureNode=r,r.dataset.hitboxid=this.entityId,(n=this.sortManager)==null||n.registerSortable(this.entityId,this.getEntity(Pp),t,r),this.scrollParent)this.scrollParent.registerObserverHandler(this.entityId,r,a=>{var s,u;let o=Ze(a.target);if(a.isIntersecting){let l=this.getEntity(a.boundingClientRect);(s=this.parent)==null||s.children.set(this.entityId,{entity:l,manager:this}),this.dndManager.observeResize(r),(!this.parent||this.parent.isVisible)&&(this.dndManager.registerHitboxEntity(this.entityId,l,o),this.children.forEach((c,d)=>{this.dndManager.registerHitboxEntity(d,c.entity,o)}),this.setVisibility(!0))}else this.dndManager.unregisterHitboxEntity(this.entityId,o),this.children.forEach((l,c)=>{this.dndManager.unregisterHitboxEntity(c,o)}),(u=this.parent)==null||u.children.delete(this.entityId),this.dndManager.unobserveResize(r),this.setVisibility(!1)});else{let a=this.getEntity(r.getBoundingClientRect());this.dndManager.observeResize(r),this.dndManager.registerHitboxEntity(this.entityId,a,Ze(t)),(i=this.parent)==null||i.children.set(this.entityId,{entity:a,manager:this}),this.setVisibility(!0)}}setVisibility(t){this.isVisible=t,this.children.forEach(r=>{r.manager.setVisibility(t)})}destroy(){var t,r,n;this.dndManager.unobserveResize(this.measureNode),(t=this.sortManager)==null||t.unregisterSortable(this.entityId),(r=this.scrollParent)==null||r.unregisterObserverHandler(this.entityId,this.measureNode),this.entityNode&&this.dndManager.unregisterHitboxEntity(this.entityId,Ze(this.entityNode)),(n=this.parent)==null||n.children.delete(this.entityId)}getPath(){var t;return[...((t=this.parent)==null?void 0:t.getPath())||[],this.index]}getEntity(t){var n,i;let r=this;return{scopeId:this.scopeId,entityId:this.entityId,initial:xo(t,((n=r.scrollParent)==null?void 0:n.scrollState)||on,((i=r.scrollParent)==null?void 0:i.getScrollShift())||Pn,null),getParentScrollState(){var a;return((a=r.scrollParent)==null?void 0:a.scrollState)||on},getParentScrollShift(){var a;return((a=r.scrollParent)==null?void 0:a.getScrollShift())||Pn},recalcInitial(){var a,o;this.initial=xo(r.measureNode.getBoundingClientRect(),((a=r.scrollParent)==null?void 0:a.scrollState)||on,((o=r.scrollParent)==null?void 0:o.getScrollShift())||Pn,null)},getHitbox(){return So(this.initial[0],this.initial[1],this.initial[2],this.initial[3],this.getParentScrollState(),this.getParentScrollShift())},getPath(){return r.getPath()},getData(){var a;return{...r.getEntityData(),sortAxis:(a=r.sortManager)==null?void 0:a.axis,win:Ze(r.measureNode)}}}}};var gr=P.memo(function({id:t,index:r,elementRef:n,measureRef:i,children:a,data:o}){let s=P.useContext(xt),u=P.useContext(Eo),l=P.useContext(mr),c=P.useContext(ko),d=P.useContext(sa),f=P.useRef(o),p=P.useRef();f.current=o;let g=P.useMemo(()=>{if(s){p.current&&p.current.destroy();let y=new Yl(s,l,t,r,c,d,u,()=>n.current,()=>i.current,()=>f.current);return p.current=y,y}return null},[t,r,s,l,c,d,u]);return P.useEffect(()=>()=>{var y;return(y=p.current)==null?void 0:y.destroy()},[]),g?h(ko.Provider,{value:g},a):null});function Wn(e){let t=P.useContext(ko),r=(t==null?void 0:t.getPath())||[];return e!==void 0&&r.push(e),P.useMemo(()=>r,r)}m();var Fu=me(Jh());m();m();m();m();var ym=me(vm()),{__extends:WM,__assign:zM,__rest:jM,__decorate:qM,__param:YM,__metadata:JM,__awaiter:Ei,__generator:ki,__exportStar:GM,__createBinding:QM,__values:XM,__read:ZM,__spread:bm,__spreadArrays:eI,__spreadArray:tI,__await:nI,__asyncGenerator:rI,__asyncDelegator:iI,__asyncValues:aI,__makeTemplateObject:oI,__importStar:sI,__importDefault:lI,__classPrivateFieldGet:cI,__classPrivateFieldSet:uI,__classPrivateFieldIn:dI}=ym.default;m();var _0=new Map([["avi","video/avi"],["gif","image/gif"],["ico","image/x-icon"],["jpeg","image/jpeg"],["jpg","image/jpeg"],["mkv","video/x-matroska"],["mov","video/quicktime"],["mp4","video/mp4"],["pdf","application/pdf"],["png","image/png"],["zip","application/zip"],["doc","application/msword"],["docx","application/vnd.openxmlformats-officedocument.wordprocessingml.document"]]);function ma(e,t){var r=C0(e);if(typeof r.path!="string"){var n=e.webkitRelativePath;Object.defineProperty(r,"path",{value:typeof t=="string"?t:typeof n=="string"&&n.length>0?n:e.name,writable:!1,configurable:!1,enumerable:!0})}return r}function C0(e){var t=e.name,r=t&&t.lastIndexOf(".")!==-1;if(r&&!e.type){var n=t.split(".").pop().toLowerCase(),i=_0.get(n);i&&Object.defineProperty(e,"type",{value:i,writable:!1,configurable:!1,enumerable:!0})}return e}var D0=[".DS_Store","Thumbs.db"];function hc(e){return Ei(this,void 0,void 0,function(){return ki(this,function(t){return[2,T0(e)&&e.dataTransfer?A0(e.dataTransfer,e.type):M0(e)]})})}function T0(e){return!!e.dataTransfer}function M0(e){var t=I0(e.target)?e.target.files?mc(e.target.files):[]:[];return t.map(function(r){return ma(r)})}function I0(e){return e!==null}function A0(e,t){return Ei(this,void 0,void 0,function(){var r,n;return ki(this,function(i){switch(i.label){case 0:return e.items?(r=mc(e.items).filter(function(a){return a.kind==="file"}),t!=="drop"?[2,r]:[4,Promise.all(r.map(L0))]):[3,2];case 1:return n=i.sent(),[2,wm(Em(n))];case 2:return[2,wm(mc(e.files).map(function(a){return ma(a)}))]}})})}function wm(e){return e.filter(function(t){return D0.indexOf(t.name)===-1})}function mc(e){for(var t=[],r=0;r".",rangeSeparator:" - ",weekAbbreviation:"Hf",scrollTitle:"Art\u0131rmaq \xFC\xE7\xFCn s\xFCr\xFC\u015Fd\xFCr\xFCn",toggleTitle:"A\xE7 / Ba\u011Fla",amPM:["G\u018F","GS"],time_24hr:!0};qm.l10ns.az=kc;var CI=qm.l10ns;m();var Ym=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},xc={weekdays:{shorthand:["\u041D\u0434","\u041F\u043D","\u0410\u045E","\u0421\u0440","\u0427\u0446","\u041F\u0442","\u0421\u0431"],longhand:["\u041D\u044F\u0434\u0437\u0435\u043B\u044F","\u041F\u0430\u043D\u044F\u0434\u0437\u0435\u043B\u0430\u043A","\u0410\u045E\u0442\u043E\u0440\u0430\u043A","\u0421\u0435\u0440\u0430\u0434\u0430","\u0427\u0430\u0446\u0432\u0435\u0440","\u041F\u044F\u0442\u043D\u0456\u0446\u0430","\u0421\u0443\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u0421\u0442\u0443","\u041B\u044E\u0442","\u0421\u0430\u043A","\u041A\u0440\u0430","\u0422\u0440\u0430","\u0427\u044D\u0440","\u041B\u0456\u043F","\u0416\u043D\u0456","\u0412\u0435\u0440","\u041A\u0430\u0441","\u041B\u0456\u0441","\u0421\u043D\u0435"],longhand:["\u0421\u0442\u0443\u0434\u0437\u0435\u043D\u044C","\u041B\u044E\u0442\u044B","\u0421\u0430\u043A\u0430\u0432\u0456\u043A","\u041A\u0440\u0430\u0441\u0430\u0432\u0456\u043A","\u0422\u0440\u0430\u0432\u0435\u043D\u044C","\u0427\u044D\u0440\u0432\u0435\u043D\u044C","\u041B\u0456\u043F\u0435\u043D\u044C","\u0416\u043D\u0456\u0432\u0435\u043D\u044C","\u0412\u0435\u0440\u0430\u0441\u0435\u043D\u044C","\u041A\u0430\u0441\u0442\u0440\u044B\u0447\u043D\u0456\u043A","\u041B\u0456\u0441\u0442\u0430\u043F\u0430\u0434","\u0421\u043D\u0435\u0436\u0430\u043D\u044C"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u0422\u044B\u0434.",scrollTitle:"\u041F\u0440\u0430\u043A\u0440\u0443\u0446\u0456\u0446\u0435 \u0434\u043B\u044F \u043F\u0430\u0432\u0435\u043B\u0456\u0447\u044D\u043D\u043D\u044F",toggleTitle:"\u041D\u0430\u0446\u0456\u0441\u043D\u0456\u0446\u0435 \u0434\u043B\u044F \u043F\u0435\u0440\u0430\u043A\u043B\u044E\u0447\u044D\u043D\u043D\u044F",amPM:["\u0414\u041F","\u041F\u041F"],yearAriaLabel:"\u0413\u043E\u0434",time_24hr:!0};Ym.l10ns.be=xc;var TI=Ym.l10ns;m();var Jm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Sc={weekdays:{shorthand:["\u041D\u0434","\u041F\u043D","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041F\u0442","\u0421\u0431"],longhand:["\u041D\u0435\u0434\u0435\u043B\u044F","\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u043D\u0438\u043A","\u0412\u0442\u043E\u0440\u043D\u0438\u043A","\u0421\u0440\u044F\u0434\u0430","\u0427\u0435\u0442\u0432\u044A\u0440\u0442\u044A\u043A","\u041F\u0435\u0442\u044A\u043A","\u0421\u044A\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u042F\u043D\u0443","\u0424\u0435\u0432","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440","\u041C\u0430\u0439","\u042E\u043D\u0438","\u042E\u043B\u0438","\u0410\u0432\u0433","\u0421\u0435\u043F","\u041E\u043A\u0442","\u041D\u043E\u0435","\u0414\u0435\u043A"],longhand:["\u042F\u043D\u0443\u0430\u0440\u0438","\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0438\u043B","\u041C\u0430\u0439","\u042E\u043D\u0438","\u042E\u043B\u0438","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043F\u0442\u0435\u043C\u0432\u0440\u0438","\u041E\u043A\u0442\u043E\u043C\u0432\u0440\u0438","\u041D\u043E\u0435\u043C\u0432\u0440\u0438","\u0414\u0435\u043A\u0435\u043C\u0432\u0440\u0438"]},time_24hr:!0,firstDayOfWeek:1};Jm.l10ns.bg=Sc;var II=Jm.l10ns;m();var Gm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},_c={weekdays:{shorthand:["\u09B0\u09AC\u09BF","\u09B8\u09CB\u09AE","\u09AE\u0999\u09CD\u0997\u09B2","\u09AC\u09C1\u09A7","\u09AC\u09C3\u09B9\u09B8\u09CD\u09AA\u09A4\u09BF","\u09B6\u09C1\u0995\u09CD\u09B0","\u09B6\u09A8\u09BF"],longhand:["\u09B0\u09AC\u09BF\u09AC\u09BE\u09B0","\u09B8\u09CB\u09AE\u09AC\u09BE\u09B0","\u09AE\u0999\u09CD\u0997\u09B2\u09AC\u09BE\u09B0","\u09AC\u09C1\u09A7\u09AC\u09BE\u09B0","\u09AC\u09C3\u09B9\u09B8\u09CD\u09AA\u09A4\u09BF\u09AC\u09BE\u09B0","\u09B6\u09C1\u0995\u09CD\u09B0\u09AC\u09BE\u09B0","\u09B6\u09A8\u09BF\u09AC\u09BE\u09B0"]},months:{shorthand:["\u099C\u09BE\u09A8\u09C1","\u09AB\u09C7\u09AC\u09CD\u09B0\u09C1","\u09AE\u09BE\u09B0\u09CD\u099A","\u098F\u09AA\u09CD\u09B0\u09BF\u09B2","\u09AE\u09C7","\u099C\u09C1\u09A8","\u099C\u09C1\u09B2\u09BE\u0987","\u0986\u0997","\u09B8\u09C7\u09AA\u09CD\u099F\u09C7","\u0985\u0995\u09CD\u099F\u09CB","\u09A8\u09AD\u09C7","\u09A1\u09BF\u09B8\u09C7"],longhand:["\u099C\u09BE\u09A8\u09C1\u09AF\u09BC\u09BE\u09B0\u09C0","\u09AB\u09C7\u09AC\u09CD\u09B0\u09C1\u09AF\u09BC\u09BE\u09B0\u09C0","\u09AE\u09BE\u09B0\u09CD\u099A","\u098F\u09AA\u09CD\u09B0\u09BF\u09B2","\u09AE\u09C7","\u099C\u09C1\u09A8","\u099C\u09C1\u09B2\u09BE\u0987","\u0986\u0997\u09B8\u09CD\u099F","\u09B8\u09C7\u09AA\u09CD\u099F\u09C7\u09AE\u09CD\u09AC\u09B0","\u0985\u0995\u09CD\u099F\u09CB\u09AC\u09B0","\u09A8\u09AD\u09C7\u09AE\u09CD\u09AC\u09B0","\u09A1\u09BF\u09B8\u09C7\u09AE\u09CD\u09AC\u09B0"]}};Gm.l10ns.bn=_c;var LI=Gm.l10ns;m();var Qm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Cc={firstDayOfWeek:1,weekdays:{shorthand:["Ned","Pon","Uto","Sri","\u010Cet","Pet","Sub"],longhand:["Nedjelja","Ponedjeljak","Utorak","Srijeda","\u010Cetvrtak","Petak","Subota"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],longhand:["Januar","Februar","Mart","April","Maj","Juni","Juli","Avgust","Septembar","Oktobar","Novembar","Decembar"]},time_24hr:!0};Qm.l10ns.bs=Cc;var FI=Qm.l10ns;m();var Dc=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Go={weekdays:{shorthand:["Dg","Dl","Dt","Dc","Dj","Dv","Ds"],longhand:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"]},months:{shorthand:["Gen","Febr","Mar\xE7","Abr","Maig","Juny","Jul","Ag","Set","Oct","Nov","Des"],longhand:["Gener","Febrer","Mar\xE7","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"]},ordinal:e=>{let t=e%100;if(t>3&&t<21)return"\xE8";switch(t%10){case 1:return"r";case 2:return"n";case 3:return"r";case 4:return"t";default:return"\xE8"}},firstDayOfWeek:1,rangeSeparator:" a ",time_24hr:!0};Dc.l10ns.cat=Dc.l10ns.ca=Go;var OI=Dc.l10ns;m();var Xm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Tc={weekdays:{shorthand:["\u06CC\u06D5\u06A9\u0634\u06D5\u0645\u0645\u06D5","\u062F\u0648\u0648\u0634\u06D5\u0645\u0645\u06D5","\u0633\u06CE\u0634\u06D5\u0645\u0645\u06D5","\u0686\u0648\u0627\u0631\u0634\u06D5\u0645\u0645\u06D5","\u067E\u06CE\u0646\u062C\u0634\u06D5\u0645\u0645\u06D5","\u0647\u06D5\u06CC\u0646\u06CC","\u0634\u06D5\u0645\u0645\u06D5"],longhand:["\u06CC\u06D5\u06A9\u0634\u06D5\u0645\u0645\u06D5","\u062F\u0648\u0648\u0634\u06D5\u0645\u0645\u06D5","\u0633\u06CE\u0634\u06D5\u0645\u0645\u06D5","\u0686\u0648\u0627\u0631\u0634\u06D5\u0645\u0645\u06D5","\u067E\u06CE\u0646\u062C\u0634\u06D5\u0645\u0645\u06D5","\u0647\u06D5\u06CC\u0646\u06CC","\u0634\u06D5\u0645\u0645\u06D5"]},months:{shorthand:["\u0695\u06CE\u0628\u06D5\u0646\u062F\u0627\u0646","\u0695\u06D5\u0634\u06D5\u0645\u06D5","\u0646\u06D5\u0648\u0631\u06C6\u0632","\u06AF\u0648\u06B5\u0627\u0646","\u062C\u06C6\u0632\u06D5\u0631\u062F\u0627\u0646","\u067E\u0648\u0648\u0634\u067E\u06D5\u0695","\u06AF\u06D5\u0644\u0627\u0648\u06CE\u0698","\u062E\u06D5\u0631\u0645\u0627\u0646\u0627\u0646","\u0695\u06D5\u0632\u0628\u06D5\u0631","\u06AF\u06D5\u06B5\u0627\u0695\u06CE\u0632\u0627\u0646","\u0633\u06D5\u0631\u0645\u0627\u0648\u06D5\u0632","\u0628\u06D5\u0641\u0631\u0627\u0646\u0628\u0627\u0631"],longhand:["\u0695\u06CE\u0628\u06D5\u0646\u062F\u0627\u0646","\u0695\u06D5\u0634\u06D5\u0645\u06D5","\u0646\u06D5\u0648\u0631\u06C6\u0632","\u06AF\u0648\u06B5\u0627\u0646","\u062C\u06C6\u0632\u06D5\u0631\u062F\u0627\u0646","\u067E\u0648\u0648\u0634\u067E\u06D5\u0695","\u06AF\u06D5\u0644\u0627\u0648\u06CE\u0698","\u062E\u06D5\u0631\u0645\u0627\u0646\u0627\u0646","\u0695\u06D5\u0632\u0628\u06D5\u0631","\u06AF\u06D5\u06B5\u0627\u0695\u06CE\u0632\u0627\u0646","\u0633\u06D5\u0631\u0645\u0627\u0648\u06D5\u0632","\u0628\u06D5\u0641\u0631\u0627\u0646\u0628\u0627\u0631"]},firstDayOfWeek:6,ordinal:()=>""};Xm.l10ns.ckb=Tc;var HI=Xm.l10ns;m();var Zm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Mc={weekdays:{shorthand:["Ne","Po","\xDAt","St","\u010Ct","P\xE1","So"],longhand:["Ned\u011Ble","Pond\u011Bl\xED","\xDAter\xFD","St\u0159eda","\u010Ctvrtek","P\xE1tek","Sobota"]},months:{shorthand:["Led","\xDAn","B\u0159e","Dub","Kv\u011B","\u010Cer","\u010Cvc","Srp","Z\xE1\u0159","\u0158\xEDj","Lis","Pro"],longhand:["Leden","\xDAnor","B\u0159ezen","Duben","Kv\u011Bten","\u010Cerven","\u010Cervenec","Srpen","Z\xE1\u0159\xED","\u0158\xEDjen","Listopad","Prosinec"]},firstDayOfWeek:1,ordinal:function(){return"."},rangeSeparator:" do ",weekAbbreviation:"T\xFDd.",scrollTitle:"Rolujte pro zm\u011Bnu",toggleTitle:"P\u0159epnout dopoledne/odpoledne",amPM:["dop.","odp."],yearAriaLabel:"Rok",time_24hr:!0};Zm.l10ns.cs=Mc;var KI=Zm.l10ns;m();var eg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Ic={weekdays:{shorthand:["Sul","Llun","Maw","Mer","Iau","Gwe","Sad"],longhand:["Dydd Sul","Dydd Llun","Dydd Mawrth","Dydd Mercher","Dydd Iau","Dydd Gwener","Dydd Sadwrn"]},months:{shorthand:["Ion","Chwef","Maw","Ebr","Mai","Meh","Gorff","Awst","Medi","Hyd","Tach","Rhag"],longhand:["Ionawr","Chwefror","Mawrth","Ebrill","Mai","Mehefin","Gorffennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"]},firstDayOfWeek:1,ordinal:e=>e===1?"af":e===2?"ail":e===3||e===4?"ydd":e===5||e===6?"ed":e>=7&&e<=10||e==12||e==15||e==18||e==20?"fed":e==11||e==13||e==14||e==16||e==17||e==19?"eg":e>=21&&e<=39?"ain":"",time_24hr:!0};eg.l10ns.cy=Ic;var UI=eg.l10ns;m();var tg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Ac={weekdays:{shorthand:["s\xF8n","man","tir","ons","tors","fre","l\xF8r"],longhand:["s\xF8ndag","mandag","tirsdag","onsdag","torsdag","fredag","l\xF8rdag"]},months:{shorthand:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],longhand:["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"]},ordinal:()=>".",firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"uge",time_24hr:!0};tg.l10ns.da=Ac;var WI=tg.l10ns;m();var ng=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Lc={weekdays:{shorthand:["So","Mo","Di","Mi","Do","Fr","Sa"],longhand:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},months:{shorthand:["Jan","Feb","M\xE4r","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],longhand:["Januar","Februar","M\xE4rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]},firstDayOfWeek:1,weekAbbreviation:"KW",rangeSeparator:" bis ",scrollTitle:"Zum \xC4ndern scrollen",toggleTitle:"Zum Umschalten klicken",time_24hr:!0};ng.l10ns.de=Lc;var jI=ng.l10ns;m();var Ur={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:e=>{let t=e%100;if(t>3&&t<21)return"th";switch(t%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1},Qo=Ur;m();var rg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Pc={firstDayOfWeek:1,rangeSeparator:" \u011Dis ",weekAbbreviation:"Sem",scrollTitle:"Rulumu por pligrandigi la valoron",toggleTitle:"Klaku por \u015Dalti",weekdays:{shorthand:["Dim","Lun","Mar","Mer","\u0134a\u016D","Ven","Sab"],longhand:["diman\u0109o","lundo","mardo","merkredo","\u0135a\u016Ddo","vendredo","sabato"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","A\u016Dg","Sep","Okt","Nov","Dec"],longhand:["januaro","februaro","marto","aprilo","majo","junio","julio","a\u016Dgusto","septembro","oktobro","novembro","decembro"]},ordinal:()=>"-a",time_24hr:!0};rg.l10ns.eo=Pc;var JI=rg.l10ns;m();var ig=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Fc={weekdays:{shorthand:["Dom","Lun","Mar","Mi\xE9","Jue","Vie","S\xE1b"],longhand:["Domingo","Lunes","Martes","Mi\xE9rcoles","Jueves","Viernes","S\xE1bado"]},months:{shorthand:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],longhand:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"]},ordinal:()=>"\xBA",firstDayOfWeek:1,rangeSeparator:" a ",time_24hr:!0};ig.l10ns.es=Fc;var QI=ig.l10ns;m();var ag=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Nc={weekdays:{shorthand:["P","E","T","K","N","R","L"],longhand:["P\xFChap\xE4ev","Esmasp\xE4ev","Teisip\xE4ev","Kolmap\xE4ev","Neljap\xE4ev","Reede","Laup\xE4ev"]},months:{shorthand:["Jaan","Veebr","M\xE4rts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],longhand:["Jaanuar","Veebruar","M\xE4rts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"]},firstDayOfWeek:1,ordinal:function(){return"."},weekAbbreviation:"N\xE4d",rangeSeparator:" kuni ",scrollTitle:"Keri, et suurendada",toggleTitle:"Kl\xF5psa, et vahetada",time_24hr:!0};ag.l10ns.et=Nc;var ZI=ag.l10ns;m();var og=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Oc={weekdays:{shorthand:["\u06CC\u06A9","\u062F\u0648","\u0633\u0647","\u0686\u0647\u0627\u0631","\u067E\u0646\u062C","\u062C\u0645\u0639\u0647","\u0634\u0646\u0628\u0647"],longhand:["\u06CC\u06A9\u200C\u0634\u0646\u0628\u0647","\u062F\u0648\u0634\u0646\u0628\u0647","\u0633\u0647\u200C\u0634\u0646\u0628\u0647","\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647","\u067E\u0646\u0686\u200C\u0634\u0646\u0628\u0647","\u062C\u0645\u0639\u0647","\u0634\u0646\u0628\u0647"]},months:{shorthand:["\u0698\u0627\u0646\u0648\u06CC\u0647","\u0641\u0648\u0631\u06CC\u0647","\u0645\u0627\u0631\u0633","\u0622\u0648\u0631\u06CC\u0644","\u0645\u0647","\u0698\u0648\u0626\u0646","\u0698\u0648\u0626\u06CC\u0647","\u0627\u0648\u062A","\u0633\u067E\u062A\u0627\u0645\u0628\u0631","\u0627\u06A9\u062A\u0628\u0631","\u0646\u0648\u0627\u0645\u0628\u0631","\u062F\u0633\u0627\u0645\u0628\u0631"],longhand:["\u0698\u0627\u0646\u0648\u06CC\u0647","\u0641\u0648\u0631\u06CC\u0647","\u0645\u0627\u0631\u0633","\u0622\u0648\u0631\u06CC\u0644","\u0645\u0647","\u0698\u0648\u0626\u0646","\u0698\u0648\u0626\u06CC\u0647","\u0627\u0648\u062A","\u0633\u067E\u062A\u0627\u0645\u0628\u0631","\u0627\u06A9\u062A\u0628\u0631","\u0646\u0648\u0627\u0645\u0628\u0631","\u062F\u0633\u0627\u0645\u0628\u0631"]},firstDayOfWeek:6,ordinal:()=>""};og.l10ns.fa=Oc;var tA=og.l10ns;m();var sg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Rc={firstDayOfWeek:1,weekdays:{shorthand:["su","ma","ti","ke","to","pe","la"],longhand:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"]},months:{shorthand:["tammi","helmi","maalis","huhti","touko","kes\xE4","hein\xE4","elo","syys","loka","marras","joulu"],longhand:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kes\xE4kuu","hein\xE4kuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"]},ordinal:()=>".",time_24hr:!0};sg.l10ns.fi=Rc;var rA=sg.l10ns;m();var lg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Hc={weekdays:{shorthand:["Sun","M\xE1n","T\xFDs","Mik","H\xF3s","Fr\xED","Ley"],longhand:["Sunnudagur","M\xE1nadagur","T\xFDsdagur","Mikudagur","H\xF3sdagur","Fr\xEDggjadagur","Leygardagur"]},months:{shorthand:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],longhand:["Januar","Februar","Mars","Apr\xEDl","Mai","Juni","Juli","August","Septembur","Oktobur","Novembur","Desembur"]},ordinal:()=>".",firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"vika",scrollTitle:"Rulla fyri at broyta",toggleTitle:"Tr\xFDst fyri at skifta",yearAriaLabel:"\xC1r",time_24hr:!0};lg.l10ns.fo=Hc;var aA=lg.l10ns;m();var cg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Bc={firstDayOfWeek:1,weekdays:{shorthand:["dim","lun","mar","mer","jeu","ven","sam"],longhand:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},months:{shorthand:["janv","f\xE9vr","mars","avr","mai","juin","juil","ao\xFBt","sept","oct","nov","d\xE9c"],longhand:["janvier","f\xE9vrier","mars","avril","mai","juin","juillet","ao\xFBt","septembre","octobre","novembre","d\xE9cembre"]},ordinal:e=>e>1?"":"er",rangeSeparator:" au ",weekAbbreviation:"Sem",scrollTitle:"D\xE9filer pour augmenter la valeur",toggleTitle:"Cliquer pour basculer",time_24hr:!0};cg.l10ns.fr=Bc;var sA=cg.l10ns;m();var ug=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Kc={weekdays:{shorthand:["\u039A\u03C5","\u0394\u03B5","\u03A4\u03C1","\u03A4\u03B5","\u03A0\u03AD","\u03A0\u03B1","\u03A3\u03AC"],longhand:["\u039A\u03C5\u03C1\u03B9\u03B1\u03BA\u03AE","\u0394\u03B5\u03C5\u03C4\u03AD\u03C1\u03B1","\u03A4\u03C1\u03AF\u03C4\u03B7","\u03A4\u03B5\u03C4\u03AC\u03C1\u03C4\u03B7","\u03A0\u03AD\u03BC\u03C0\u03C4\u03B7","\u03A0\u03B1\u03C1\u03B1\u03C3\u03BA\u03B5\u03C5\u03AE","\u03A3\u03AC\u03B2\u03B2\u03B1\u03C4\u03BF"]},months:{shorthand:["\u0399\u03B1\u03BD","\u03A6\u03B5\u03B2","\u039C\u03AC\u03C1","\u0391\u03C0\u03C1","\u039C\u03AC\u03B9","\u0399\u03BF\u03CD\u03BD","\u0399\u03BF\u03CD\u03BB","\u0391\u03CD\u03B3","\u03A3\u03B5\u03C0","\u039F\u03BA\u03C4","\u039D\u03BF\u03AD","\u0394\u03B5\u03BA"],longhand:["\u0399\u03B1\u03BD\u03BF\u03C5\u03AC\u03C1\u03B9\u03BF\u03C2","\u03A6\u03B5\u03B2\u03C1\u03BF\u03C5\u03AC\u03C1\u03B9\u03BF\u03C2","\u039C\u03AC\u03C1\u03C4\u03B9\u03BF\u03C2","\u0391\u03C0\u03C1\u03AF\u03BB\u03B9\u03BF\u03C2","\u039C\u03AC\u03B9\u03BF\u03C2","\u0399\u03BF\u03CD\u03BD\u03B9\u03BF\u03C2","\u0399\u03BF\u03CD\u03BB\u03B9\u03BF\u03C2","\u0391\u03CD\u03B3\u03BF\u03C5\u03C3\u03C4\u03BF\u03C2","\u03A3\u03B5\u03C0\u03C4\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2","\u039F\u03BA\u03C4\u03CE\u03B2\u03C1\u03B9\u03BF\u03C2","\u039D\u03BF\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2","\u0394\u03B5\u03BA\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2"]},firstDayOfWeek:1,ordinal:function(){return""},weekAbbreviation:"\u0395\u03B2\u03B4",rangeSeparator:" \u03AD\u03C9\u03C2 ",scrollTitle:"\u039C\u03B5\u03C4\u03B1\u03BA\u03C5\u03BB\u03AE\u03C3\u03C4\u03B5 \u03B3\u03B9\u03B1 \u03C0\u03C1\u03BF\u03C3\u03B1\u03CD\u03BE\u03B7\u03C3\u03B7",toggleTitle:"\u039A\u03AC\u03BD\u03C4\u03B5 \u03BA\u03BB\u03B9\u03BA \u03B3\u03B9\u03B1 \u03B1\u03BB\u03BB\u03B1\u03B3\u03AE",amPM:["\u03A0\u039C","\u039C\u039C"],yearAriaLabel:"\u03C7\u03C1\u03CC\u03BD\u03BF\u03C2",monthAriaLabel:"\u03BC\u03AE\u03BD\u03B1\u03C2",hourAriaLabel:"\u03CE\u03C1\u03B1",minuteAriaLabel:"\u03BB\u03B5\u03C0\u03C4\u03CC"};ug.l10ns.gr=Kc;var cA=ug.l10ns;m();var dg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},$c={weekdays:{shorthand:["\u05D0","\u05D1","\u05D2","\u05D3","\u05D4","\u05D5","\u05E9"],longhand:["\u05E8\u05D0\u05E9\u05D5\u05DF","\u05E9\u05E0\u05D9","\u05E9\u05DC\u05D9\u05E9\u05D9","\u05E8\u05D1\u05D9\u05E2\u05D9","\u05D7\u05DE\u05D9\u05E9\u05D9","\u05E9\u05D9\u05E9\u05D9","\u05E9\u05D1\u05EA"]},months:{shorthand:["\u05D9\u05E0\u05D5\u05F3","\u05E4\u05D1\u05E8\u05F3","\u05DE\u05E8\u05E5","\u05D0\u05E4\u05E8\u05F3","\u05DE\u05D0\u05D9","\u05D9\u05D5\u05E0\u05D9","\u05D9\u05D5\u05DC\u05D9","\u05D0\u05D5\u05D2\u05F3","\u05E1\u05E4\u05D8\u05F3","\u05D0\u05D5\u05E7\u05F3","\u05E0\u05D5\u05D1\u05F3","\u05D3\u05E6\u05DE\u05F3"],longhand:["\u05D9\u05E0\u05D5\u05D0\u05E8","\u05E4\u05D1\u05E8\u05D5\u05D0\u05E8","\u05DE\u05E8\u05E5","\u05D0\u05E4\u05E8\u05D9\u05DC","\u05DE\u05D0\u05D9","\u05D9\u05D5\u05E0\u05D9","\u05D9\u05D5\u05DC\u05D9","\u05D0\u05D5\u05D2\u05D5\u05E1\u05D8","\u05E1\u05E4\u05D8\u05DE\u05D1\u05E8","\u05D0\u05D5\u05E7\u05D8\u05D5\u05D1\u05E8","\u05E0\u05D5\u05D1\u05DE\u05D1\u05E8","\u05D3\u05E6\u05DE\u05D1\u05E8"]},rangeSeparator:" \u05D0\u05DC ",time_24hr:!0};dg.l10ns.he=$c;var dA=dg.l10ns;m();var fg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Uc={weekdays:{shorthand:["\u0930\u0935\u093F","\u0938\u094B\u092E","\u092E\u0902\u0917\u0932","\u092C\u0941\u0927","\u0917\u0941\u0930\u0941","\u0936\u0941\u0915\u094D\u0930","\u0936\u0928\u093F"],longhand:["\u0930\u0935\u093F\u0935\u093E\u0930","\u0938\u094B\u092E\u0935\u093E\u0930","\u092E\u0902\u0917\u0932\u0935\u093E\u0930","\u092C\u0941\u0927\u0935\u093E\u0930","\u0917\u0941\u0930\u0941\u0935\u093E\u0930","\u0936\u0941\u0915\u094D\u0930\u0935\u093E\u0930","\u0936\u0928\u093F\u0935\u093E\u0930"]},months:{shorthand:["\u091C\u0928","\u092B\u0930","\u092E\u093E\u0930\u094D\u091A","\u0905\u092A\u094D\u0930\u0947\u0932","\u092E\u0908","\u091C\u0942\u0928","\u091C\u0942\u0932\u093E\u0908","\u0905\u0917","\u0938\u093F\u0924","\u0905\u0915\u094D\u091F","\u0928\u0935","\u0926\u093F"],longhand:["\u091C\u0928\u0935\u0930\u0940 ","\u092B\u0930\u0935\u0930\u0940","\u092E\u093E\u0930\u094D\u091A","\u0905\u092A\u094D\u0930\u0947\u0932","\u092E\u0908","\u091C\u0942\u0928","\u091C\u0942\u0932\u093E\u0908","\u0905\u0917\u0938\u094D\u0924 ","\u0938\u093F\u0924\u092E\u094D\u092C\u0930","\u0905\u0915\u094D\u091F\u0942\u092C\u0930","\u0928\u0935\u092E\u094D\u092C\u0930","\u0926\u093F\u0938\u092E\u094D\u092C\u0930"]}};fg.l10ns.hi=Uc;var pA=fg.l10ns;m();var pg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Vc={firstDayOfWeek:1,weekdays:{shorthand:["Ned","Pon","Uto","Sri","\u010Cet","Pet","Sub"],longhand:["Nedjelja","Ponedjeljak","Utorak","Srijeda","\u010Cetvrtak","Petak","Subota"]},months:{shorthand:["Sij","Velj","O\u017Eu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],longhand:["Sije\u010Danj","Velja\u010Da","O\u017Eujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"]},time_24hr:!0};pg.l10ns.hr=Vc;var mA=pg.l10ns;m();var hg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Wc={firstDayOfWeek:1,weekdays:{shorthand:["V","H","K","Sz","Cs","P","Szo"],longhand:["Vas\xE1rnap","H\xE9tf\u0151","Kedd","Szerda","Cs\xFCt\xF6rt\xF6k","P\xE9ntek","Szombat"]},months:{shorthand:["Jan","Feb","M\xE1r","\xC1pr","M\xE1j","J\xFAn","J\xFAl","Aug","Szep","Okt","Nov","Dec"],longhand:["Janu\xE1r","Febru\xE1r","M\xE1rcius","\xC1prilis","M\xE1jus","J\xFAnius","J\xFAlius","Augusztus","Szeptember","Okt\xF3ber","November","December"]},ordinal:function(){return"."},weekAbbreviation:"H\xE9t",scrollTitle:"G\xF6rgessen",toggleTitle:"Kattintson a v\xE1lt\xE1shoz",rangeSeparator:" - ",time_24hr:!0};hg.l10ns.hu=Wc;var vA=hg.l10ns;m();var mg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},zc={weekdays:{shorthand:["\u053F\u056B\u0580","\u0535\u0580\u056F","\u0535\u0580\u0584","\u0549\u0580\u0584","\u0540\u0576\u0563","\u0548\u0582\u0580\u0562","\u0547\u0562\u0569"],longhand:["\u053F\u056B\u0580\u0561\u056F\u056B","\u0535\u056F\u0578\u0582\u0577\u0561\u0562\u0569\u056B","\u0535\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056B","\u0549\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056B","\u0540\u056B\u0576\u0563\u0577\u0561\u0562\u0569\u056B","\u0548\u0582\u0580\u0562\u0561\u0569","\u0547\u0561\u0562\u0561\u0569"]},months:{shorthand:["\u0540\u0576\u057E","\u0553\u057F\u0580","\u0544\u0561\u0580","\u0531\u057A\u0580","\u0544\u0561\u0575","\u0540\u0576\u057D","\u0540\u056C\u057D","\u0555\u0563\u057D","\u054D\u0565\u057A","\u0540\u0578\u056F","\u0546\u0574\u0562","\u0534\u0565\u056F"],longhand:["\u0540\u0578\u0582\u0576\u057E\u0561\u0580","\u0553\u0565\u057F\u0580\u057E\u0561\u0580","\u0544\u0561\u0580\u057F","\u0531\u057A\u0580\u056B\u056C","\u0544\u0561\u0575\u056B\u057D","\u0540\u0578\u0582\u0576\u056B\u057D","\u0540\u0578\u0582\u056C\u056B\u057D","\u0555\u0563\u0578\u057D\u057F\u0578\u057D","\u054D\u0565\u057A\u057F\u0565\u0574\u0562\u0565\u0580","\u0540\u0578\u056F\u057F\u0565\u0574\u0562\u0565\u0580","\u0546\u0578\u0575\u0565\u0574\u0562\u0565\u0580","\u0534\u0565\u056F\u057F\u0565\u0574\u0562\u0565\u0580"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u0547\u0532\u054F",scrollTitle:"\u0548\u056C\u0578\u0580\u0565\u0584\u055D \u0574\u0565\u056E\u0561\u0581\u0576\u0565\u056C\u0578\u0582 \u0570\u0561\u0574\u0561\u0580",toggleTitle:"\u054D\u0565\u0572\u0574\u0565\u0584\u055D \u0583\u0578\u056D\u0565\u056C\u0578\u0582 \u0570\u0561\u0574\u0561\u0580",amPM:["\u0544\u053F","\u053F\u0540"],yearAriaLabel:"\u054F\u0561\u0580\u056B",monthAriaLabel:"\u0531\u0574\u056B\u057D",hourAriaLabel:"\u053A\u0561\u0574",minuteAriaLabel:"\u0550\u0578\u057A\u0565",time_24hr:!0};mg.l10ns.hy=zc;var bA=mg.l10ns;m();var gg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},jc={weekdays:{shorthand:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],longhand:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},months:{shorthand:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agu","Sep","Okt","Nov","Des"],longhand:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"]},firstDayOfWeek:1,ordinal:()=>"",time_24hr:!0,rangeSeparator:" - "};gg.l10ns.id=jc;var EA=gg.l10ns;m();var vg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},qc={weekdays:{shorthand:["Sun","M\xE1n","\xDEri","Mi\xF0","Fim","F\xF6s","Lau"],longhand:["Sunnudagur","M\xE1nudagur","\xDEri\xF0judagur","Mi\xF0vikudagur","Fimmtudagur","F\xF6studagur","Laugardagur"]},months:{shorthand:["Jan","Feb","Mar","Apr","Ma\xED","J\xFAn","J\xFAl","\xC1g\xFA","Sep","Okt","N\xF3v","Des"],longhand:["Jan\xFAar","Febr\xFAar","Mars","Apr\xEDl","Ma\xED","J\xFAn\xED","J\xFAl\xED","\xC1g\xFAst","September","Okt\xF3ber","N\xF3vember","Desember"]},ordinal:()=>".",firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"vika",yearAriaLabel:"\xC1r",time_24hr:!0};vg.l10ns.is=qc;var xA=vg.l10ns;m();var yg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Yc={weekdays:{shorthand:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],longhand:["Domenica","Luned\xEC","Marted\xEC","Mercoled\xEC","Gioved\xEC","Venerd\xEC","Sabato"]},months:{shorthand:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],longhand:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"]},firstDayOfWeek:1,ordinal:()=>"\xB0",rangeSeparator:" al ",weekAbbreviation:"Se",scrollTitle:"Scrolla per aumentare",toggleTitle:"Clicca per cambiare",time_24hr:!0};yg.l10ns.it=Yc;var _A=yg.l10ns;m();var bg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Jc={weekdays:{shorthand:["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"],longhand:["\u65E5\u66DC\u65E5","\u6708\u66DC\u65E5","\u706B\u66DC\u65E5","\u6C34\u66DC\u65E5","\u6728\u66DC\u65E5","\u91D1\u66DC\u65E5","\u571F\u66DC\u65E5"]},months:{shorthand:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],longhand:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"]},time_24hr:!0,rangeSeparator:" \u304B\u3089 ",monthAriaLabel:"\u6708",amPM:["\u5348\u524D","\u5348\u5F8C"],yearAriaLabel:"\u5E74",hourAriaLabel:"\u6642\u9593",minuteAriaLabel:"\u5206"};bg.l10ns.ja=Jc;var DA=bg.l10ns;m();var wg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Gc={weekdays:{shorthand:["\u10D9\u10D5","\u10DD\u10E0","\u10E1\u10D0","\u10DD\u10D7","\u10EE\u10E3","\u10DE\u10D0","\u10E8\u10D0"],longhand:["\u10D9\u10D5\u10D8\u10E0\u10D0","\u10DD\u10E0\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10E1\u10D0\u10DB\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10DD\u10D7\u10EE\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10EE\u10E3\u10D7\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10DE\u10D0\u10E0\u10D0\u10E1\u10D9\u10D4\u10D5\u10D8","\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8"]},months:{shorthand:["\u10D8\u10D0\u10DC","\u10D7\u10D4\u10D1","\u10DB\u10D0\u10E0","\u10D0\u10DE\u10E0","\u10DB\u10D0\u10D8","\u10D8\u10D5\u10DC","\u10D8\u10D5\u10DA","\u10D0\u10D2\u10D5","\u10E1\u10D4\u10E5","\u10DD\u10E5\u10E2","\u10DC\u10DD\u10D4","\u10D3\u10D4\u10D9"],longhand:["\u10D8\u10D0\u10DC\u10D5\u10D0\u10E0\u10D8","\u10D7\u10D4\u10D1\u10D4\u10E0\u10D5\u10D0\u10DA\u10D8","\u10DB\u10D0\u10E0\u10E2\u10D8","\u10D0\u10DE\u10E0\u10D8\u10DA\u10D8","\u10DB\u10D0\u10D8\u10E1\u10D8","\u10D8\u10D5\u10DC\u10D8\u10E1\u10D8","\u10D8\u10D5\u10DA\u10D8\u10E1\u10D8","\u10D0\u10D2\u10D5\u10D8\u10E1\u10E2\u10DD","\u10E1\u10D4\u10E5\u10E2\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8","\u10DD\u10E5\u10E2\u10DD\u10DB\u10D1\u10D4\u10E0\u10D8","\u10DC\u10DD\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8","\u10D3\u10D4\u10D9\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u10D9\u10D5.",scrollTitle:"\u10D3\u10D0\u10E1\u10E5\u10E0\u10DD\u10DA\u10D4\u10D7 \u10D2\u10D0\u10E1\u10D0\u10D3\u10D8\u10D3\u10D4\u10D1\u10DA\u10D0\u10D3",toggleTitle:"\u10D3\u10D0\u10D0\u10D9\u10DA\u10D8\u10D9\u10D4\u10D7 \u10D2\u10D0\u10D3\u10D0\u10E0\u10D7\u10D5\u10D8\u10E1\u10D7\u10D5\u10D8\u10E1",amPM:["AM","PM"],yearAriaLabel:"\u10EC\u10D4\u10DA\u10D8",time_24hr:!0};wg.l10ns.ka=Gc;var MA=wg.l10ns;m();var Eg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Qc={weekdays:{shorthand:["\u17A2\u17B6\u1791\u17B7\u178F\u17D2\u1799","\u1785\u1793\u17D2\u1791","\u17A2\u1784\u17D2\u1782\u17B6\u179A","\u1796\u17BB\u1792","\u1796\u17D2\u179A\u17A0\u179F.","\u179F\u17BB\u1780\u17D2\u179A","\u179F\u17C5\u179A\u17CD"],longhand:["\u17A2\u17B6\u1791\u17B7\u178F\u17D2\u1799","\u1785\u1793\u17D2\u1791","\u17A2\u1784\u17D2\u1782\u17B6\u179A","\u1796\u17BB\u1792","\u1796\u17D2\u179A\u17A0\u179F\u17D2\u1794\u178F\u17B7\u17CD","\u179F\u17BB\u1780\u17D2\u179A","\u179F\u17C5\u179A\u17CD"]},months:{shorthand:["\u1798\u1780\u179A\u17B6","\u1780\u17BB\u1798\u17D2\u1797\u17C7","\u1798\u17B8\u1793\u17B6","\u1798\u17C1\u179F\u17B6","\u17A7\u179F\u1797\u17B6","\u1798\u17B7\u1790\u17BB\u1793\u17B6","\u1780\u1780\u17D2\u1780\u178A\u17B6","\u179F\u17B8\u17A0\u17B6","\u1780\u1789\u17D2\u1789\u17B6","\u178F\u17BB\u179B\u17B6","\u179C\u17B7\u1785\u17D2\u1786\u17B7\u1780\u17B6","\u1792\u17D2\u1793\u17BC"],longhand:["\u1798\u1780\u179A\u17B6","\u1780\u17BB\u1798\u17D2\u1797\u17C7","\u1798\u17B8\u1793\u17B6","\u1798\u17C1\u179F\u17B6","\u17A7\u179F\u1797\u17B6","\u1798\u17B7\u1790\u17BB\u1793\u17B6","\u1780\u1780\u17D2\u1780\u178A\u17B6","\u179F\u17B8\u17A0\u17B6","\u1780\u1789\u17D2\u1789\u17B6","\u178F\u17BB\u179B\u17B6","\u179C\u17B7\u1785\u17D2\u1786\u17B7\u1780\u17B6","\u1792\u17D2\u1793\u17BC"]},ordinal:()=>"",firstDayOfWeek:1,rangeSeparator:" \u178A\u179B\u17CB ",weekAbbreviation:"\u179F\u1794\u17D2\u178F\u17B6\u17A0\u17CD",scrollTitle:"\u179A\u17C6\u1780\u17B7\u179B\u178A\u17BE\u1798\u17D2\u1794\u17B8\u1794\u1784\u17D2\u1780\u17BE\u1793",toggleTitle:"\u1785\u17BB\u1785\u178A\u17BE\u1798\u17D2\u1794\u17B8\u1795\u17D2\u179B\u17B6\u179F\u17CB\u1794\u17D2\u178A\u17BC\u179A",yearAriaLabel:"\u1786\u17D2\u1793\u17B6\u17C6",time_24hr:!0};Eg.l10ns.km=Qc;var AA=Eg.l10ns;m();var kg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Xc={weekdays:{shorthand:["\uC77C","\uC6D4","\uD654","\uC218","\uBAA9","\uAE08","\uD1A0"],longhand:["\uC77C\uC694\uC77C","\uC6D4\uC694\uC77C","\uD654\uC694\uC77C","\uC218\uC694\uC77C","\uBAA9\uC694\uC77C","\uAE08\uC694\uC77C","\uD1A0\uC694\uC77C"]},months:{shorthand:["1\uC6D4","2\uC6D4","3\uC6D4","4\uC6D4","5\uC6D4","6\uC6D4","7\uC6D4","8\uC6D4","9\uC6D4","10\uC6D4","11\uC6D4","12\uC6D4"],longhand:["1\uC6D4","2\uC6D4","3\uC6D4","4\uC6D4","5\uC6D4","6\uC6D4","7\uC6D4","8\uC6D4","9\uC6D4","10\uC6D4","11\uC6D4","12\uC6D4"]},ordinal:()=>"\uC77C",rangeSeparator:" ~ ",amPM:["\uC624\uC804","\uC624\uD6C4"]};kg.l10ns.ko=Xc;var PA=kg.l10ns;m();var xg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Zc={weekdays:{shorthand:["\u0416\u0441","\u0414\u0441","\u0421c","\u0421\u0440","\u0411\u0441","\u0416\u043C","\u0421\u0431"],longhand:["\u0416\u0435\u043A\u0441\u0435\u043D\u0431i","\u0414\u04AF\u0439\u0441\u0435\u043D\u0431i","\u0421\u0435\u0439\u0441\u0435\u043D\u0431i","\u0421\u04D9\u0440\u0441\u0435\u043D\u0431i","\u0411\u0435\u0439\u0441\u0435\u043D\u0431i","\u0416\u04B1\u043C\u0430","\u0421\u0435\u043D\u0431i"]},months:{shorthand:["\u049A\u0430\u04A3","\u0410\u049B\u043F","\u041D\u0430\u0443","\u0421\u04D9\u0443","\u041C\u0430\u043C","\u041C\u0430\u0443","\u0428i\u043B","\u0422\u0430\u043C","\u049A\u044B\u0440","\u049A\u0430\u0437","\u049A\u0430\u0440","\u0416\u0435\u043B"],longhand:["\u049A\u0430\u04A3\u0442\u0430\u0440","\u0410\u049B\u043F\u0430\u043D","\u041D\u0430\u0443\u0440\u044B\u0437","\u0421\u04D9\u0443i\u0440","\u041C\u0430\u043C\u044B\u0440","\u041C\u0430\u0443\u0441\u044B\u043C","\u0428i\u043B\u0434\u0435","\u0422\u0430\u043C\u044B\u0437","\u049A\u044B\u0440\u043A\u04AF\u0439\u0435\u043A","\u049A\u0430\u0437\u0430\u043D","\u049A\u0430\u0440\u0430\u0448\u0430","\u0416\u0435\u043B\u0442\u043E\u049B\u0441\u0430\u043D"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u0410\u043F\u0442\u0430",scrollTitle:"\u04AE\u043B\u043A\u0435\u0439\u0442\u0443 \u04AF\u0448\u0456\u043D \u0430\u0439\u043D\u0430\u043B\u0434\u044B\u0440\u044B\u04A3\u044B\u0437",toggleTitle:"\u0410\u0443\u044B\u0441\u0442\u044B\u0440\u0443 \u04AF\u0448\u0456\u043D \u0431\u0430\u0441\u044B\u04A3\u044B\u0437",amPM:["\u0422\u0414","\u0422\u041A"],yearAriaLabel:"\u0416\u044B\u043B"};xg.l10ns.kz=Zc;var NA=xg.l10ns;m();var Sg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},eu={weekdays:{shorthand:["S","Pr","A","T","K","Pn","\u0160"],longhand:["Sekmadienis","Pirmadienis","Antradienis","Tre\u010Diadienis","Ketvirtadienis","Penktadienis","\u0160e\u0161tadienis"]},months:{shorthand:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rgp","Rgs","Spl","Lap","Grd"],longhand:["Sausis","Vasaris","Kovas","Balandis","Gegu\u017E\u0117","Bir\u017Eelis","Liepa","Rugpju\u0304tis","Rugse\u0307jis","Spalis","Lapkritis","Gruodis"]},firstDayOfWeek:1,ordinal:function(){return"-a"},rangeSeparator:" iki ",weekAbbreviation:"Sav",scrollTitle:"Keisti laik\u0105 pel\u0117s rateliu",toggleTitle:"Perjungti laiko format\u0105",time_24hr:!0};Sg.l10ns.lt=eu;var RA=Sg.l10ns;m();var _g=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},tu={firstDayOfWeek:1,weekdays:{shorthand:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],longhand:["Sv\u0113tdiena","Pirmdiena","Otrdiena","Tre\u0161diena","Ceturtdiena","Piektdiena","Sestdiena"]},months:{shorthand:["Jan","Feb","Mar","Apr","Mai","J\u016Bn","J\u016Bl","Aug","Sep","Okt","Nov","Dec"],longhand:["Janv\u0101ris","Febru\u0101ris","Marts","Apr\u012Blis","Maijs","J\u016Bnijs","J\u016Blijs","Augusts","Septembris","Oktobris","Novembris","Decembris"]},rangeSeparator:" l\u012Bdz ",time_24hr:!0};_g.l10ns.lv=tu;var BA=_g.l10ns;m();var Cg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},nu={weekdays:{shorthand:["\u041D\u0435","\u041F\u043E","\u0412\u0442","\u0421\u0440","\u0427\u0435","\u041F\u0435","\u0421\u0430"],longhand:["\u041D\u0435\u0434\u0435\u043B\u0430","\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u043D\u0438\u043A","\u0412\u0442\u043E\u0440\u043D\u0438\u043A","\u0421\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0440\u0442\u043E\u043A","\u041F\u0435\u0442\u043E\u043A","\u0421\u0430\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u0408\u0430\u043D","\u0424\u0435\u0432","\u041C\u0430\u0440","\u0410\u043F\u0440","\u041C\u0430\u0458","\u0408\u0443\u043D","\u0408\u0443\u043B","\u0410\u0432\u0433","\u0421\u0435\u043F","\u041E\u043A\u0442","\u041D\u043E\u0435","\u0414\u0435\u043A"],longhand:["\u0408\u0430\u043D\u0443\u0430\u0440\u0438","\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0438\u043B","\u041C\u0430\u0458","\u0408\u0443\u043D\u0438","\u0408\u0443\u043B\u0438","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043F\u0442\u0435\u043C\u0432\u0440\u0438","\u041E\u043A\u0442\u043E\u043C\u0432\u0440\u0438","\u041D\u043E\u0435\u043C\u0432\u0440\u0438","\u0414\u0435\u043A\u0435\u043C\u0432\u0440\u0438"]},firstDayOfWeek:1,weekAbbreviation:"\u041D\u0435\u0434.",rangeSeparator:" \u0434\u043E ",time_24hr:!0};Cg.l10ns.mk=nu;var $A=Cg.l10ns;m();var Dg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},ru={firstDayOfWeek:1,weekdays:{shorthand:["\u0414\u0430","\u041C\u044F","\u041B\u0445","\u041F\u04AF","\u0411\u0430","\u0411\u044F","\u041D\u044F"],longhand:["\u0414\u0430\u0432\u0430\u0430","\u041C\u044F\u0433\u043C\u0430\u0440","\u041B\u0445\u0430\u0433\u0432\u0430","\u041F\u04AF\u0440\u044D\u0432","\u0411\u0430\u0430\u0441\u0430\u043D","\u0411\u044F\u043C\u0431\u0430","\u041D\u044F\u043C"]},months:{shorthand:["1-\u0440 \u0441\u0430\u0440","2-\u0440 \u0441\u0430\u0440","3-\u0440 \u0441\u0430\u0440","4-\u0440 \u0441\u0430\u0440","5-\u0440 \u0441\u0430\u0440","6-\u0440 \u0441\u0430\u0440","7-\u0440 \u0441\u0430\u0440","8-\u0440 \u0441\u0430\u0440","9-\u0440 \u0441\u0430\u0440","10-\u0440 \u0441\u0430\u0440","11-\u0440 \u0441\u0430\u0440","12-\u0440 \u0441\u0430\u0440"],longhand:["\u041D\u044D\u0433\u0434\u04AF\u0433\u044D\u044D\u0440 \u0441\u0430\u0440","\u0425\u043E\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0414\u04E9\u0440\u04E9\u0432\u0434\u04AF\u0433\u044D\u044D\u0440 \u0441\u0430\u0440","\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0417\u0443\u0440\u0433\u0430\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0414\u043E\u043B\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u041D\u0430\u0439\u043C\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0415\u0441\u0434\u04AF\u0433\u044D\u044D\u0440 \u0441\u0430\u0440","\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0410\u0440\u0432\u0430\u043D\u043D\u044D\u0433\u0434\u04AF\u0433\u044D\u044D\u0440 \u0441\u0430\u0440","\u0410\u0440\u0432\u0430\u043D\u0445\u043E\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440"]},rangeSeparator:"-\u0441 ",time_24hr:!0};Dg.l10ns.mn=ru;var VA=Dg.l10ns;m();var nS=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Tg={weekdays:{shorthand:["Aha","Isn","Sel","Rab","Kha","Jum","Sab"],longhand:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"]},months:{shorthand:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],longhand:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"]},firstDayOfWeek:1,ordinal:()=>""},zA=nS.l10ns;m();var Mg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},iu={weekdays:{shorthand:["\u1014\u103D\u1031","\u101C\u102C","\u1002\u102B","\u101F\u1030\u1038","\u1000\u103C\u102C","\u101E\u1031\u102C","\u1014\u1031"],longhand:["\u1010\u1014\u1004\u103A\u1039\u1002\u1014\u103D\u1031","\u1010\u1014\u1004\u103A\u1039\u101C\u102C","\u1021\u1004\u103A\u1039\u1002\u102B","\u1017\u102F\u1012\u1039\u1013\u101F\u1030\u1038","\u1000\u103C\u102C\u101E\u1015\u1010\u1031\u1038","\u101E\u1031\u102C\u1000\u103C\u102C","\u1005\u1014\u1031"]},months:{shorthand:["\u1007\u1014\u103A","\u1016\u1031","\u1019\u1010\u103A","\u1015\u103C\u102E","\u1019\u1031","\u1007\u103D\u1014\u103A","\u101C\u102D\u102F\u1004\u103A","\u101E\u103C","\u1005\u1000\u103A","\u1021\u1031\u102C\u1000\u103A","\u1014\u102D\u102F","\u1012\u102E"],longhand:["\u1007\u1014\u103A\u1014\u101D\u102B\u101B\u102E","\u1016\u1031\u1016\u1031\u102C\u103A\u101D\u102B\u101B\u102E","\u1019\u1010\u103A","\u1027\u1015\u103C\u102E","\u1019\u1031","\u1007\u103D\u1014\u103A","\u1007\u1030\u101C\u102D\u102F\u1004\u103A","\u101E\u103C\u1002\u102F\u1010\u103A","\u1005\u1000\u103A\u1010\u1004\u103A\u1018\u102C","\u1021\u1031\u102C\u1000\u103A\u1010\u102D\u102F\u1018\u102C","\u1014\u102D\u102F\u101D\u1004\u103A\u1018\u102C","\u1012\u102E\u1007\u1004\u103A\u1018\u102C"]},firstDayOfWeek:1,ordinal:()=>"",time_24hr:!0};Mg.l10ns.my=iu;var qA=Mg.l10ns;m();var Ig=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},au={weekdays:{shorthand:["zo","ma","di","wo","do","vr","za"],longhand:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]},months:{shorthand:["jan","feb","mrt","apr","mei","jun","jul","aug","sept","okt","nov","dec"],longhand:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"]},firstDayOfWeek:1,weekAbbreviation:"wk",rangeSeparator:" t/m ",scrollTitle:"Scroll voor volgende / vorige",toggleTitle:"Klik om te wisselen",time_24hr:!0,ordinal:e=>e===1||e===8||e>=20?"ste":"de"};Ig.l10ns.nl=au;var JA=Ig.l10ns;m();var Ag=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},ou={weekdays:{shorthand:["S\xF8.","M\xE5.","Ty.","On.","To.","Fr.","La."],longhand:["S\xF8ndag","M\xE5ndag","Tysdag","Onsdag","Torsdag","Fredag","Laurdag"]},months:{shorthand:["Jan","Feb","Mars","Apr","Mai","Juni","Juli","Aug","Sep","Okt","Nov","Des"],longhand:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"]},firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"Veke",scrollTitle:"Scroll for \xE5 endre",toggleTitle:"Klikk for \xE5 veksle",time_24hr:!0,ordinal:()=>"."};Ag.l10ns.nn=ou;var QA=Ag.l10ns;m();var Lg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},su={weekdays:{shorthand:["S\xF8n","Man","Tir","Ons","Tor","Fre","L\xF8r"],longhand:["S\xF8ndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","L\xF8rdag"]},months:{shorthand:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],longhand:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"]},firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"Uke",scrollTitle:"Scroll for \xE5 endre",toggleTitle:"Klikk for \xE5 veksle",time_24hr:!0,ordinal:()=>"."};Lg.l10ns.no=su;var ZA=Lg.l10ns;m();var Pg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},lu={weekdays:{shorthand:["\u0A10\u0A24","\u0A38\u0A4B\u0A2E","\u0A2E\u0A70\u0A17\u0A32","\u0A2C\u0A41\u0A71\u0A27","\u0A35\u0A40\u0A30","\u0A38\u0A3C\u0A41\u0A71\u0A15\u0A30","\u0A38\u0A3C\u0A28\u0A3F\u0A71\u0A1A\u0A30"],longhand:["\u0A10\u0A24\u0A35\u0A3E\u0A30","\u0A38\u0A4B\u0A2E\u0A35\u0A3E\u0A30","\u0A2E\u0A70\u0A17\u0A32\u0A35\u0A3E\u0A30","\u0A2C\u0A41\u0A71\u0A27\u0A35\u0A3E\u0A30","\u0A35\u0A40\u0A30\u0A35\u0A3E\u0A30","\u0A38\u0A3C\u0A41\u0A71\u0A15\u0A30\u0A35\u0A3E\u0A30","\u0A38\u0A3C\u0A28\u0A3F\u0A71\u0A1A\u0A30\u0A35\u0A3E\u0A30"]},months:{shorthand:["\u0A1C\u0A28","\u0A2B\u0A3C\u0A30","\u0A2E\u0A3E\u0A30","\u0A05\u0A2A\u0A4D\u0A30\u0A48","\u0A2E\u0A08","\u0A1C\u0A42\u0A28","\u0A1C\u0A41\u0A32\u0A3E","\u0A05\u0A17","\u0A38\u0A24\u0A70","\u0A05\u0A15","\u0A28\u0A35\u0A70","\u0A26\u0A38\u0A70"],longhand:["\u0A1C\u0A28\u0A35\u0A30\u0A40","\u0A2B\u0A3C\u0A30\u0A35\u0A30\u0A40","\u0A2E\u0A3E\u0A30\u0A1A","\u0A05\u0A2A\u0A4D\u0A30\u0A48\u0A32","\u0A2E\u0A08","\u0A1C\u0A42\u0A28","\u0A1C\u0A41\u0A32\u0A3E\u0A08","\u0A05\u0A17\u0A38\u0A24","\u0A38\u0A24\u0A70\u0A2C\u0A30","\u0A05\u0A15\u0A24\u0A42\u0A2C\u0A30","\u0A28\u0A35\u0A70\u0A2C\u0A30","\u0A26\u0A38\u0A70\u0A2C\u0A30"]},time_24hr:!0};Pg.l10ns.pa=lu;var tL=Pg.l10ns;m();var Fg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},cu={weekdays:{shorthand:["Nd","Pn","Wt","\u015Ar","Cz","Pt","So"],longhand:["Niedziela","Poniedzia\u0142ek","Wtorek","\u015Aroda","Czwartek","Pi\u0105tek","Sobota"]},months:{shorthand:["Sty","Lut","Mar","Kwi","Maj","Cze","Lip","Sie","Wrz","Pa\u017A","Lis","Gru"],longhand:["Stycze\u0144","Luty","Marzec","Kwiecie\u0144","Maj","Czerwiec","Lipiec","Sierpie\u0144","Wrzesie\u0144","Pa\u017Adziernik","Listopad","Grudzie\u0144"]},rangeSeparator:" do ",weekAbbreviation:"tydz.",scrollTitle:"Przewi\u0144, aby zwi\u0119kszy\u0107",toggleTitle:"Kliknij, aby prze\u0142\u0105czy\u0107",firstDayOfWeek:1,time_24hr:!0,ordinal:()=>"."};Fg.l10ns.pl=cu;var rL=Fg.l10ns;m();var Ng=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},uu={weekdays:{shorthand:["Dom","Seg","Ter","Qua","Qui","Sex","S\xE1b"],longhand:["Domingo","Segunda-feira","Ter\xE7a-feira","Quarta-feira","Quinta-feira","Sexta-feira","S\xE1bado"]},months:{shorthand:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],longhand:["Janeiro","Fevereiro","Mar\xE7o","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"]},rangeSeparator:" at\xE9 ",time_24hr:!0};Ng.l10ns.pt=uu;var aL=Ng.l10ns;m();var Og=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},du={weekdays:{shorthand:["Dum","Lun","Mar","Mie","Joi","Vin","S\xE2m"],longhand:["Duminic\u0103","Luni","Mar\u021Bi","Miercuri","Joi","Vineri","S\xE2mb\u0103t\u0103"]},months:{shorthand:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Noi","Dec"],longhand:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"]},firstDayOfWeek:1,time_24hr:!0,ordinal:()=>""};Og.l10ns.ro=du;var sL=Og.l10ns;m();var Rg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},fu={weekdays:{shorthand:["\u0412\u0441","\u041F\u043D","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041F\u0442","\u0421\u0431"],longhand:["\u0412\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435","\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A","\u0412\u0442\u043E\u0440\u043D\u0438\u043A","\u0421\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0435\u0440\u0433","\u041F\u044F\u0442\u043D\u0438\u0446\u0430","\u0421\u0443\u0431\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u042F\u043D\u0432","\u0424\u0435\u0432","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440","\u041C\u0430\u0439","\u0418\u044E\u043D\u044C","\u0418\u044E\u043B\u044C","\u0410\u0432\u0433","\u0421\u0435\u043D","\u041E\u043A\u0442","\u041D\u043E\u044F","\u0414\u0435\u043A"],longhand:["\u042F\u043D\u0432\u0430\u0440\u044C","\u0424\u0435\u0432\u0440\u0430\u043B\u044C","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0435\u043B\u044C","\u041C\u0430\u0439","\u0418\u044E\u043D\u044C","\u0418\u044E\u043B\u044C","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C","\u041E\u043A\u0442\u044F\u0431\u0440\u044C","\u041D\u043E\u044F\u0431\u0440\u044C","\u0414\u0435\u043A\u0430\u0431\u0440\u044C"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u041D\u0435\u0434.",scrollTitle:"\u041F\u0440\u043E\u043A\u0440\u0443\u0442\u0438\u0442\u0435 \u0434\u043B\u044F \u0443\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u044F",toggleTitle:"\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F",amPM:["\u0414\u041F","\u041F\u041F"],yearAriaLabel:"\u0413\u043E\u0434",time_24hr:!0};Rg.l10ns.ru=fu;var cL=Rg.l10ns;m();var Hg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},pu={weekdays:{shorthand:["\u0D89","\u0DC3","\u0D85","\u0DB6","\u0DB6\u0DCA\u200D\u0DBB","\u0DC3\u0DD2","\u0DC3\u0DD9"],longhand:["\u0D89\u0DBB\u0DD2\u0DAF\u0DCF","\u0DC3\u0DB3\u0DD4\u0DAF\u0DCF","\u0D85\u0D9F\u0DC4\u0DBB\u0DD4\u0DC0\u0DCF\u0DAF\u0DCF","\u0DB6\u0DAF\u0DCF\u0DAF\u0DCF","\u0DB6\u0DCA\u200D\u0DBB\u0DC4\u0DC3\u0DCA\u0DB4\u0DAD\u0DD2\u0DB1\u0DCA\u0DAF\u0DCF","\u0DC3\u0DD2\u0D9A\u0DD4\u0DBB\u0DCF\u0DAF\u0DCF","\u0DC3\u0DD9\u0DB1\u0DC3\u0DD4\u0DBB\u0DCF\u0DAF\u0DCF"]},months:{shorthand:["\u0DA2\u0DB1","\u0DB4\u0DD9\u0DB6","\u0DB8\u0DCF\u0DBB\u0DCA","\u0D85\u0DB4\u0DCA\u200D\u0DBB\u0DDA","\u0DB8\u0DD0\u0DBA\u0DD2","\u0DA2\u0DD4\u0DB1\u0DD2","\u0DA2\u0DD6\u0DBD\u0DD2","\u0D85\u0D9C\u0DDD","\u0DC3\u0DD0\u0DB4\u0DCA","\u0D94\u0D9A\u0DCA","\u0DB1\u0DDC\u0DC0\u0DD0","\u0DAF\u0DD9\u0DC3\u0DD0"],longhand:["\u0DA2\u0DB1\u0DC0\u0DCF\u0DBB\u0DD2","\u0DB4\u0DD9\u0DB6\u0DBB\u0DC0\u0DCF\u0DBB\u0DD2","\u0DB8\u0DCF\u0DBB\u0DCA\u0DAD\u0DD4","\u0D85\u0DB4\u0DCA\u200D\u0DBB\u0DDA\u0DBD\u0DCA","\u0DB8\u0DD0\u0DBA\u0DD2","\u0DA2\u0DD4\u0DB1\u0DD2","\u0DA2\u0DD6\u0DBD\u0DD2","\u0D85\u0D9C\u0DDD\u0DC3\u0DCA\u0DAD\u0DD4","\u0DC3\u0DD0\u0DB4\u0DCA\u0DAD\u0DD0\u0DB8\u0DCA\u0DB6\u0DBB\u0DCA","\u0D94\u0D9A\u0DCA\u0DAD\u0DDD\u0DB6\u0DBB\u0DCA","\u0DB1\u0DDC\u0DC0\u0DD0\u0DB8\u0DCA\u0DB6\u0DBB\u0DCA","\u0DAF\u0DD9\u0DC3\u0DD0\u0DB8\u0DCA\u0DB6\u0DBB\u0DCA"]},time_24hr:!0};Hg.l10ns.si=pu;var dL=Hg.l10ns;m();var Bg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},hu={weekdays:{shorthand:["Ned","Pon","Ut","Str","\u0160tv","Pia","Sob"],longhand:["Nede\u013Ea","Pondelok","Utorok","Streda","\u0160tvrtok","Piatok","Sobota"]},months:{shorthand:["Jan","Feb","Mar","Apr","M\xE1j","J\xFAn","J\xFAl","Aug","Sep","Okt","Nov","Dec"],longhand:["Janu\xE1r","Febru\xE1r","Marec","Apr\xEDl","M\xE1j","J\xFAn","J\xFAl","August","September","Okt\xF3ber","November","December"]},firstDayOfWeek:1,rangeSeparator:" do ",time_24hr:!0,ordinal:function(){return"."}};Bg.l10ns.sk=hu;var pL=Bg.l10ns;m();var Kg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},mu={weekdays:{shorthand:["Ned","Pon","Tor","Sre","\u010Cet","Pet","Sob"],longhand:["Nedelja","Ponedeljek","Torek","Sreda","\u010Cetrtek","Petek","Sobota"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],longhand:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"]},firstDayOfWeek:1,rangeSeparator:" do ",time_24hr:!0,ordinal:function(){return"."}};Kg.l10ns.sl=mu;var mL=Kg.l10ns;m();var $g=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},gu={weekdays:{shorthand:["Di","H\xEB","Ma","M\xEB","En","Pr","Sh"],longhand:["E Diel","E H\xEBn\xEB","E Mart\xEB","E M\xEBrkur\xEB","E Enjte","E Premte","E Shtun\xEB"]},months:{shorthand:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gus","Sht","Tet","N\xEBn","Dhj"],longhand:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","N\xEBntor","Dhjetor"]},firstDayOfWeek:1,rangeSeparator:" deri ",weekAbbreviation:"Java",yearAriaLabel:"Viti",monthAriaLabel:"Muaji",hourAriaLabel:"Ora",minuteAriaLabel:"Minuta",time_24hr:!0};$g.l10ns.sq=gu;var vL=$g.l10ns;m();var Ug=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},vu={weekdays:{shorthand:["Ned","Pon","Uto","Sre","\u010Cet","Pet","Sub"],longhand:["Nedelja","Ponedeljak","Utorak","Sreda","\u010Cetvrtak","Petak","Subota"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],longhand:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"]},firstDayOfWeek:1,weekAbbreviation:"Ned.",rangeSeparator:" do ",time_24hr:!0};Ug.l10ns.sr=vu;var bL=Ug.l10ns;m();var Vg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},yu={firstDayOfWeek:1,weekAbbreviation:"v",weekdays:{shorthand:["s\xF6n","m\xE5n","tis","ons","tor","fre","l\xF6r"],longhand:["s\xF6ndag","m\xE5ndag","tisdag","onsdag","torsdag","fredag","l\xF6rdag"]},months:{shorthand:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],longhand:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"]},rangeSeparator:" till ",time_24hr:!0,ordinal:()=>"."};Vg.l10ns.sv=yu;var EL=Vg.l10ns;m();var Wg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},bu={weekdays:{shorthand:["\u0E2D\u0E32","\u0E08","\u0E2D","\u0E1E","\u0E1E\u0E24","\u0E28","\u0E2A"],longhand:["\u0E2D\u0E32\u0E17\u0E34\u0E15\u0E22\u0E4C","\u0E08\u0E31\u0E19\u0E17\u0E23\u0E4C","\u0E2D\u0E31\u0E07\u0E04\u0E32\u0E23","\u0E1E\u0E38\u0E18","\u0E1E\u0E24\u0E2B\u0E31\u0E2A\u0E1A\u0E14\u0E35","\u0E28\u0E38\u0E01\u0E23\u0E4C","\u0E40\u0E2A\u0E32\u0E23\u0E4C"]},months:{shorthand:["\u0E21.\u0E04.","\u0E01.\u0E1E.","\u0E21\u0E35.\u0E04.","\u0E40\u0E21.\u0E22.","\u0E1E.\u0E04.","\u0E21\u0E34.\u0E22.","\u0E01.\u0E04.","\u0E2A.\u0E04.","\u0E01.\u0E22.","\u0E15.\u0E04.","\u0E1E.\u0E22.","\u0E18.\u0E04."],longhand:["\u0E21\u0E01\u0E23\u0E32\u0E04\u0E21","\u0E01\u0E38\u0E21\u0E20\u0E32\u0E1E\u0E31\u0E19\u0E18\u0E4C","\u0E21\u0E35\u0E19\u0E32\u0E04\u0E21","\u0E40\u0E21\u0E29\u0E32\u0E22\u0E19","\u0E1E\u0E24\u0E29\u0E20\u0E32\u0E04\u0E21","\u0E21\u0E34\u0E16\u0E38\u0E19\u0E32\u0E22\u0E19","\u0E01\u0E23\u0E01\u0E0E\u0E32\u0E04\u0E21","\u0E2A\u0E34\u0E07\u0E2B\u0E32\u0E04\u0E21","\u0E01\u0E31\u0E19\u0E22\u0E32\u0E22\u0E19","\u0E15\u0E38\u0E25\u0E32\u0E04\u0E21","\u0E1E\u0E24\u0E28\u0E08\u0E34\u0E01\u0E32\u0E22\u0E19","\u0E18\u0E31\u0E19\u0E27\u0E32\u0E04\u0E21"]},firstDayOfWeek:1,rangeSeparator:" \u0E16\u0E36\u0E07 ",scrollTitle:"\u0E40\u0E25\u0E37\u0E48\u0E2D\u0E19\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E2B\u0E23\u0E37\u0E2D\u0E25\u0E14",toggleTitle:"\u0E04\u0E25\u0E34\u0E01\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19",time_24hr:!0,ordinal:()=>""};Wg.l10ns.th=bu;var xL=Wg.l10ns;m();var zg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},wu={weekdays:{shorthand:["Paz","Pzt","Sal","\xC7ar","Per","Cum","Cmt"],longhand:["Pazar","Pazartesi","Sal\u0131","\xC7ar\u015Famba","Per\u015Fembe","Cuma","Cumartesi"]},months:{shorthand:["Oca","\u015Eub","Mar","Nis","May","Haz","Tem","A\u011Fu","Eyl","Eki","Kas","Ara"],longhand:["Ocak","\u015Eubat","Mart","Nisan","May\u0131s","Haziran","Temmuz","A\u011Fustos","Eyl\xFCl","Ekim","Kas\u0131m","Aral\u0131k"]},firstDayOfWeek:1,ordinal:()=>".",rangeSeparator:" - ",weekAbbreviation:"Hf",scrollTitle:"Art\u0131rmak i\xE7in kayd\u0131r\u0131n",toggleTitle:"A\xE7/Kapa",amPM:["\xD6\xD6","\xD6S"],time_24hr:!0};zg.l10ns.tr=wu;var _L=zg.l10ns;m();var jg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Eu={firstDayOfWeek:1,weekdays:{shorthand:["\u041D\u0434","\u041F\u043D","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041F\u0442","\u0421\u0431"],longhand:["\u041D\u0435\u0434\u0456\u043B\u044F","\u041F\u043E\u043D\u0435\u0434\u0456\u043B\u043E\u043A","\u0412\u0456\u0432\u0442\u043E\u0440\u043E\u043A","\u0421\u0435\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0435\u0440","\u041F'\u044F\u0442\u043D\u0438\u0446\u044F","\u0421\u0443\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u0421\u0456\u0447","\u041B\u044E\u0442","\u0411\u0435\u0440","\u041A\u0432\u0456","\u0422\u0440\u0430","\u0427\u0435\u0440","\u041B\u0438\u043F","\u0421\u0435\u0440","\u0412\u0435\u0440","\u0416\u043E\u0432","\u041B\u0438\u0441","\u0413\u0440\u0443"],longhand:["\u0421\u0456\u0447\u0435\u043D\u044C","\u041B\u044E\u0442\u0438\u0439","\u0411\u0435\u0440\u0435\u0437\u0435\u043D\u044C","\u041A\u0432\u0456\u0442\u0435\u043D\u044C","\u0422\u0440\u0430\u0432\u0435\u043D\u044C","\u0427\u0435\u0440\u0432\u0435\u043D\u044C","\u041B\u0438\u043F\u0435\u043D\u044C","\u0421\u0435\u0440\u043F\u0435\u043D\u044C","\u0412\u0435\u0440\u0435\u0441\u0435\u043D\u044C","\u0416\u043E\u0432\u0442\u0435\u043D\u044C","\u041B\u0438\u0441\u0442\u043E\u043F\u0430\u0434","\u0413\u0440\u0443\u0434\u0435\u043D\u044C"]},time_24hr:!0};jg.l10ns.uk=Eu;var DL=jg.l10ns;m();var qg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},ku={weekdays:{shorthand:["\u042F\u043A\u0448","\u0414\u0443\u0448","\u0421\u0435\u0448","\u0427\u043E\u0440","\u041F\u0430\u0439","\u0416\u0443\u043C","\u0428\u0430\u043D"],longhand:["\u042F\u043A\u0448\u0430\u043D\u0431\u0430","\u0414\u0443\u0448\u0430\u043D\u0431\u0430","\u0421\u0435\u0448\u0430\u043D\u0431\u0430","\u0427\u043E\u0440\u0448\u0430\u043D\u0431\u0430","\u041F\u0430\u0439\u0448\u0430\u043D\u0431\u0430","\u0416\u0443\u043C\u0430","\u0428\u0430\u043D\u0431\u0430"]},months:{shorthand:["\u042F\u043D\u0432","\u0424\u0435\u0432","\u041C\u0430\u0440","\u0410\u043F\u0440","\u041C\u0430\u0439","\u0418\u044E\u043D","\u0418\u044E\u043B","\u0410\u0432\u0433","\u0421\u0435\u043D","\u041E\u043A\u0442","\u041D\u043E\u044F","\u0414\u0435\u043A"],longhand:["\u042F\u043D\u0432\u0430\u0440","\u0424\u0435\u0432\u0440\u0430\u043B","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0435\u043B","\u041C\u0430\u0439","\u0418\u044E\u043D","\u0418\u044E\u043B","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043D\u0442\u044F\u0431\u0440","\u041E\u043A\u0442\u044F\u0431\u0440","\u041D\u043E\u044F\u0431\u0440","\u0414\u0435\u043A\u0430\u0431\u0440"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u04B2\u0430\u0444\u0442\u0430",scrollTitle:"\u041A\u0430\u0442\u0442\u0430\u043B\u0430\u0448\u0442\u0438\u0440\u0438\u0448 \u0443\u0447\u0443\u043D \u0430\u0439\u043B\u0430\u043D\u0442\u0438\u0440\u0438\u043D\u0433",toggleTitle:"\u040E\u0442\u0438\u0448 \u0443\u0447\u0443\u043D \u0431\u043E\u0441\u0438\u043D\u0433",amPM:["AM","PM"],yearAriaLabel:"\u0419\u0438\u043B",time_24hr:!0};qg.l10ns.uz=ku;var ML=qg.l10ns;m();var Yg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},xu={weekdays:{shorthand:["Ya","Du","Se","Cho","Pa","Ju","Sha"],longhand:["Yakshanba","Dushanba","Seshanba","Chorshanba","Payshanba","Juma","Shanba"]},months:{shorthand:["Yan","Fev","Mar","Apr","May","Iyun","Iyul","Avg","Sen","Okt","Noy","Dek"],longhand:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avgust","Sentabr","Oktabr","Noyabr","Dekabr"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"Hafta",scrollTitle:"Kattalashtirish uchun aylantiring",toggleTitle:"O\u2018tish uchun bosing",amPM:["AM","PM"],yearAriaLabel:"Yil",time_24hr:!0};Yg.l10ns.uz_latn=xu;var AL=Yg.l10ns;m();var Jg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Su={weekdays:{shorthand:["CN","T2","T3","T4","T5","T6","T7"],longhand:["Ch\u1EE7 nh\u1EADt","Th\u1EE9 hai","Th\u1EE9 ba","Th\u1EE9 t\u01B0","Th\u1EE9 n\u0103m","Th\u1EE9 s\xE1u","Th\u1EE9 b\u1EA3y"]},months:{shorthand:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],longhand:["Th\xE1ng m\u1ED9t","Th\xE1ng hai","Th\xE1ng ba","Th\xE1ng t\u01B0","Th\xE1ng n\u0103m","Th\xE1ng s\xE1u","Th\xE1ng b\u1EA3y","Th\xE1ng t\xE1m","Th\xE1ng ch\xEDn","Th\xE1ng m\u01B0\u1EDDi","Th\xE1ng m\u01B0\u1EDDi m\u1ED9t","Th\xE1ng m\u01B0\u1EDDi hai"]},firstDayOfWeek:1,rangeSeparator:" \u0111\u1EBFn "};Jg.l10ns.vn=Su;var PL=Jg.l10ns;m();var Gg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},_u={weekdays:{shorthand:["\u5468\u65E5","\u5468\u4E00","\u5468\u4E8C","\u5468\u4E09","\u5468\u56DB","\u5468\u4E94","\u5468\u516D"],longhand:["\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"]},months:{shorthand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],longhand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"]},rangeSeparator:" \u81F3 ",weekAbbreviation:"\u5468",scrollTitle:"\u6EDA\u52A8\u5207\u6362",toggleTitle:"\u70B9\u51FB\u5207\u6362 12/24 \u5C0F\u65F6\u65F6\u5236"};Gg.l10ns.zh=_u;var NL=Gg.l10ns;m();var Qg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Cu={weekdays:{shorthand:["\u9031\u65E5","\u9031\u4E00","\u9031\u4E8C","\u9031\u4E09","\u9031\u56DB","\u9031\u4E94","\u9031\u516D"],longhand:["\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"]},months:{shorthand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],longhand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"]},rangeSeparator:" \u81F3 ",weekAbbreviation:"\u9031",scrollTitle:"\u6EFE\u52D5\u5207\u63DB",toggleTitle:"\u9EDE\u64CA\u5207\u63DB 12/24 \u5C0F\u6642\u6642\u5236"};Qg.l10ns.zh_tw=Cu;var RL=Qg.l10ns;var rS={ar:wc,at:Ec,az:kc,be:xc,bg:Sc,bn:_c,bs:Cc,ca:Go,ckb:Tc,cat:Go,cs:Mc,cy:Ic,da:Ac,de:Lc,default:{...Ur},en:Ur,eo:Pc,es:Fc,et:Nc,fa:Oc,fi:Rc,fo:Hc,fr:Bc,gr:Kc,he:$c,hi:Uc,hr:Vc,hu:Wc,hy:zc,id:jc,is:qc,it:Yc,ja:Jc,ka:Gc,ko:Xc,km:Qc,kz:Zc,lt:eu,lv:tu,mk:nu,mn:ru,ms:Tg,my:iu,nl:au,nn:ou,no:su,pa:lu,pl:cu,pt:uu,ro:du,ru:fu,si:pu,sk:hu,sl:mu,sq:gu,sr:vu,sv:yu,th:bu,tr:wu,uk:Eu,vn:Su,zh:_u,zh_tw:Cu,uz:ku,uz_latn:xu},tt=rS;var Zg={ar:tt.ar,cs:tt.cs,da:tt.da,de:tt.de,en:tt.en,"en-gb":tt.en,es:tt.es,fr:tt.fr,hi:tt.hi,id:tt.id,it:tt.it,ja:tt.ja,ko:tt.ko,nl:tt.nl,nn:tt.no,pl:tt.pl,pt:tt.pt,"pt-br":tt.pt,ro:tt.ro,ru:tt.ru,tr:tt.tr,"zh-cn":tt.zh,"zh-tw":tt.zh_tw},iS=Zg[Xg.moment.locale()];function Xo(e){let t=e==null?void 0:e.getSetting("date-picker-week-start"),r=iS||Zg.en;return t?{...r,firstDayOfWeek:t}:r}m();m();var Zo=["onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition"],wr={_disable:[],allowInput:!1,allowInvalidPreload:!1,altFormat:"F j, Y",altInput:!1,altInputClass:"form-control input",animate:typeof window=="object"&&window.navigator.userAgent.indexOf("MSIE")===-1,ariaDateFormat:"F j, Y",autoFillDefaultTime:!0,clickOpens:!0,closeOnSelect:!0,conjunction:", ",dateFormat:"Y-m-d",defaultHour:12,defaultMinute:0,defaultSeconds:0,disable:[],disableMobile:!1,enableSeconds:!1,enableTime:!1,errorHandler:e=>typeof console!="undefined"&&console.warn(e),getWeek:e=>{let t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);let r=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-r.getTime())/864e5-3+(r.getDay()+6)%7)/7)},hourIncrement:1,ignoredFocusElements:[],inline:!1,locale:"default",minuteIncrement:5,mode:"single",monthSelectorType:"dropdown",nextArrow:"",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1,win:window};m();var Bt=(e,t=2)=>`000${e}`.slice(t*-1),tn=e=>e===!0?1:0;function Du(e,t,r){let n;return function(){let i=arguments;r.clearTimeout(n),n=r.setTimeout(()=>e.apply(this,i),t)}}var es=e=>Array.isArray(e)?e:[e];m();m();var Tu=()=>{},Sa=(e,t,r)=>r.months[t?"shorthand":"longhand"][e],ev={D:Tu,F:function(e,t,r){e.setMonth(r.months.longhand.indexOf(t))},G:(e,t)=>{e.setHours((e.getHours()>=12?12:0)+parseFloat(t))},H:(e,t)=>{e.setHours(parseFloat(t))},J:(e,t)=>{e.setDate(parseFloat(t))},K:(e,t,r)=>{e.setHours(e.getHours()%12+12*tn(new RegExp(r.amPM[1],"i").test(t)))},M:function(e,t,r){e.setMonth(r.months.shorthand.indexOf(t))},S:(e,t)=>{e.setSeconds(parseFloat(t))},U:(e,t)=>new Date(parseFloat(t)*1e3),W:function(e,t,r){let n=parseInt(t),i=new Date(e.getFullYear(),0,2+(n-1)*7,0,0,0,0);return i.setDate(i.getDate()-i.getDay()+r.firstDayOfWeek),i},Y:(e,t)=>{e.setFullYear(parseFloat(t))},Z:(e,t)=>new Date(t),d:(e,t)=>{e.setDate(parseFloat(t))},h:(e,t)=>{e.setHours((e.getHours()>=12?12:0)+parseFloat(t))},i:(e,t)=>{e.setMinutes(parseFloat(t))},j:(e,t)=>{e.setDate(parseFloat(t))},l:Tu,m:(e,t)=>{e.setMonth(parseFloat(t)-1)},n:(e,t)=>{e.setMonth(parseFloat(t)-1)},s:(e,t)=>{e.setSeconds(parseFloat(t))},u:(e,t)=>new Date(parseFloat(t)),w:Tu,y:(e,t)=>{e.setFullYear(2e3+parseFloat(t))}},Jn={D:"",F:"",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},_i={Z:e=>e.toISOString(),D:function(e,t,r){return t.weekdays.shorthand[_i.w(e,t,r)]},F:function(e,t,r){return Sa(_i.n(e,t,r)-1,!1,t)},G:function(e,t,r){return Bt(_i.h(e,t,r))},H:e=>Bt(e.getHours()),J:function(e,t){return t.ordinal!==void 0?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:(e,t)=>t.amPM[tn(e.getHours()>11)],M:function(e,t){return Sa(e.getMonth(),!0,t)},S:e=>Bt(e.getSeconds()),U:e=>e.getTime()/1e3,W:function(e,t,r){return r.getWeek(e)},Y:e=>Bt(e.getFullYear(),4),d:e=>Bt(e.getDate()),h:e=>e.getHours()%12?e.getHours()%12:12,i:e=>Bt(e.getMinutes()),j:e=>e.getDate(),l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:e=>Bt(e.getMonth()+1),n:e=>e.getMonth()+1,s:e=>e.getSeconds(),u:e=>e.getTime(),w:e=>e.getDay(),y:e=>String(e.getFullYear()).substring(2)};var Mu=({config:e=wr,l10n:t=Ur,isMobile:r=!1})=>(n,i,a)=>{let o=a||t;return e.formatDate!==void 0&&!r?e.formatDate(n,i,o):i.split("").map((s,u,l)=>_i[s]&&l[u-1]!=="\\"?_i[s](n,o,e):s!=="\\"?s:"").join("")},ts=({config:e=wr,l10n:t=Ur})=>(r,n,i,a)=>{if(r!==0&&!r)return;let o=a||t,s,u=r;if(r.getDate)s=new Date(r.getTime());else if(typeof r!="string"&&r.toFixed!==void 0)s=new Date(r);else if(typeof r=="string"){let l=n||(e||wr).dateFormat,c=String(r).trim();if(c==="today")s=new Date,i=!0;else if(e&&e.parseDate)s=e.parseDate(r,l);else if(/Z$/.test(c)||/GMT$/.test(c))s=new Date(r);else{let d,f=[];for(let p=0,g=0,y="";ps=p(s,g,o)||s),s=d?s:void 0}}if(!(s.getDate&&!isNaN(s.getTime()))){e.errorHandler(new Error(`Invalid date provided: ${u}`));return}return i===!0&&s.setHours(0,0,0,0),s};function nn(e,t,r=!0){return r!==!1?new Date(e.getTime()).setHours(0,0,0,0)-new Date(t.getTime()).setHours(0,0,0,0):e.getTime()-t.getTime()}var tv=(e,t,r)=>e>Math.min(t,r)&&ee*3600+t*60+r,nv=e=>{let t=Math.floor(e/3600),r=(e-t*3600)/60;return[t,r,e-t*3600-r*60]},rv={DAY:864e5};function rs(e){let t=e.defaultHour,r=e.defaultMinute,n=e.defaultSeconds;if(e.minDate!==void 0){let i=e.minDate.getHours(),a=e.minDate.getMinutes(),o=e.minDate.getSeconds();t=0?new Date:new Date(n.config.minDate.getTime()),ee=rs(n.config);$.setHours(ee.hours,ee.minutes,ee.seconds,$.getMilliseconds()),n.selectedDates=[$],n.latestSelectedDateObj=$}_!==void 0&&_.type!=="blur"&&to(_);let M=n._input.value;f(),kn(),n._input.value!==M&&n._debouncedChange()}function c(_,M){return _%12+12*tn(M===n.l10n.amPM[1])}function d(_){switch(_%24){case 0:case 12:return 12;default:return _%12}}function f(){if(n.hourElement===void 0||n.minuteElement===void 0)return;let _=(parseInt(n.hourElement.value.slice(-2),10)||0)%24,M=(parseInt(n.minuteElement.value,10)||0)%60,$=n.secondElement!==void 0?(parseInt(n.secondElement.value,10)||0)%60:0;n.amPM!==void 0&&(_=c(_,n.amPM.textContent));let ee=n.config.minTime!==void 0||n.config.minDate&&n.minDateHasTime&&n.latestSelectedDateObj&&nn(n.latestSelectedDateObj,n.config.minDate,!0)===0,le=n.config.maxTime!==void 0||n.config.maxDate&&n.maxDateHasTime&&n.latestSelectedDateObj&&nn(n.latestSelectedDateObj,n.config.maxDate,!0)===0;if(n.config.maxTime!==void 0&&n.config.minTime!==void 0&&n.config.minTime>n.config.maxTime){let re=ns(n.config.minTime.getHours(),n.config.minTime.getMinutes(),n.config.minTime.getSeconds()),ve=ns(n.config.maxTime.getHours(),n.config.maxTime.getMinutes(),n.config.maxTime.getSeconds()),ue=ns(_,M,$);if(ue>ve&&ue=12)]),n.secondElement!==void 0&&(n.secondElement.value=Bt($)))}function y(_){let M=rn(_),$=parseInt(M.value)+(_.delta||0);($/1e3>1||_.key==="Enter"&&!/[^\d]/.test($.toString()))&&te($)}function b(_,M,$,ee){if(Array.isArray(M))return M.forEach(le=>b(_,le,$,ee));if(Array.isArray(_))return _.forEach(le=>b(le,M,$,ee));_.addEventListener(M,$,ee),n._handlers.push({remove:()=>_.removeEventListener(M,$,ee)})}function x(){Ve("onChange")}function T(){if(n.config.wrap&&["open","close","toggle","clear"].forEach(M=>{Array.prototype.forEach.call(n.element.querySelectorAll(`[data-${M}]`),$=>b($,"click",n[M]))}),n.isMobile){qe();return}let _=Du(Ot,50,r);if(n._debouncedChange=Du(x,aS,r),n.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&b(n.daysContainer,"mouseover",M=>{n.config.mode==="range"&&vt(rn(M))}),b(n._input,"keydown",dt),n.calendarContainer!==void 0&&b(n.calendarContainer,"keydown",dt),!n.config.inline&&!n.config.static&&b(r,"resize",_),r.ontouchstart!==void 0?b(r.document,"touchstart",q):b(r.document,"mousedown",q),b(r.document,"focus",q,{capture:!0}),n.config.clickOpens===!0&&(b(n._input,"focus",n.open),b(n._input,"click",n.open)),n.daysContainer!==void 0&&(b(n.monthNav,"click",Sl),b(n.monthNav,["keyup","increment"],y),b(n.daysContainer,"click",Rt)),n.timeContainer!==void 0&&n.minuteElement!==void 0&&n.hourElement!==void 0){let M=$=>rn($).select();b(n.timeContainer,["increment"],l),b(n.timeContainer,"blur",l,{capture:!0}),b(n.timeContainer,"click",A),b([n.hourElement,n.minuteElement],["focus","click"],M),n.secondElement!==void 0&&b(n.secondElement,"focus",()=>n.secondElement&&n.secondElement.select()),n.amPM!==void 0&&b(n.amPM,"click",$=>{l($)})}n.config.allowInput&&b(n._input,"blur",Ue)}function C(_,M){let $=_!==void 0?n.parseDate(_):n.latestSelectedDateObj||(n.config.minDate&&n.config.minDate>n.now?n.config.minDate:n.config.maxDate&&n.config.maxDate1),n.calendarContainer.appendChild(_);let M=n.config.appendTo!==void 0&&n.config.appendTo.nodeType!==void 0;if((n.config.inline||n.config.static)&&(n.calendarContainer.classList.add(n.config.inline?"inline":"static"),n.config.inline&&(!M&&n.element.parentNode?n.element.parentNode.insertBefore(n.calendarContainer,n._input.nextSibling):n.config.appendTo!==void 0&&n.config.appendTo.appendChild(n.calendarContainer)),n.config.static)){let $=je(r.document,"div","flatpickr-wrapper");n.element.parentNode&&n.element.parentNode.insertBefore($,n.element),$.appendChild(n.element),n.altInput&&$.appendChild(n.altInput),$.appendChild(n.calendarContainer)}!n.config.static&&!n.config.inline&&(n.config.appendTo!==void 0?n.config.appendTo:r.document.body).appendChild(n.calendarContainer)}function K(_,M,$,ee){let le=we(M,!0),re=je(r.document,"span",_,M.getDate().toString());return re.dateObj=M,re.$i=ee,re.setAttribute("aria-label",n.formatDate(M,n.config.ariaDateFormat)),_.indexOf("hidden")===-1&&nn(M,n.now)===0&&(n.todayDateElem=re,re.classList.add("today"),re.setAttribute("aria-current","date")),le?(re.tabIndex=-1,Ye(M)&&(re.classList.add("selected"),n.selectedDateElem=re,n.config.mode==="range"&&(Kt(re,"startRange",n.selectedDates[0]&&nn(M,n.selectedDates[0],!0)===0),Kt(re,"endRange",n.selectedDates[1]&&nn(M,n.selectedDates[1],!0)===0),_==="nextMonthDay"&&re.classList.add("inRange")))):re.classList.add("flatpickr-disabled"),n.config.mode==="range"&&ir(M)&&!Ye(M)&&re.classList.add("inRange"),n.weekNumbers&&n.config.showMonths===1&&_!=="prevMonthDay"&&ee%7==6&&n.weekNumbers.insertAdjacentHTML("beforeend",""+n.config.getWeek(M)+""),Ve("onDayCreate",re),re}function z(_){_.focus(),n.config.mode==="range"&&vt(_)}function U(_){let M=_>0?0:n.config.showMonths-1,$=_>0?n.config.showMonths:-1;for(let ee=M;ee!=$;ee+=_){let le=n.daysContainer.children[ee],re=_>0?0:le.children.length-1,ve=_>0?le.children.length:-1;for(let ue=re;ue!=ve;ue+=_){let Fe=le.children[ue];if(Fe.className.indexOf("hidden")===-1&&we(Fe.dateObj))return Fe}}}function Z(_,M){let $=_.className.indexOf("Month")===-1?_.dateObj.getMonth():n.currentMonth,ee=M>0?n.config.showMonths:-1,le=M>0?1:-1;for(let re=$-n.currentMonth;re!=ee;re+=le){let ve=n.daysContainer.children[re],ue=$-n.currentMonth===re?_.$i+M:M<0?ve.children.length-1:0,Fe=ve.children.length;for(let Ne=ue;Ne>=0&&Ne0?Fe:-1);Ne+=le){let Me=ve.children[Ne];if(Me.className.indexOf("hidden")===-1&&we(Me.dateObj)&&Math.abs(_.$i-Ne)>=Math.abs(M))return z(Me)}}n.changeMonth(le),J(U(le),0)}function J(_,M){let $=o(),ee=xe($||n.element.doc.body),le=_!==void 0?_:ee?$:n.selectedDateElem!==void 0&&xe(n.selectedDateElem)?n.selectedDateElem:n.todayDateElem!==void 0&&xe(n.todayDateElem)?n.todayDateElem:U(M>0?1:-1);le===void 0?n._input.focus():ee?Z(le,M):z(le)}function se(_,M){let $=(new Date(_,M,1).getDay()-n.l10n.firstDayOfWeek+7)%7,ee=n.utils.getDaysInMonth((M-1+12)%12,_),le=n.utils.getDaysInMonth(M,_),re=r.document.createDocumentFragment(),ve=n.config.showMonths>1,ue=ve?"prevMonthDay hidden":"prevMonthDay",Fe=ve?"nextMonthDay hidden":"nextMonthDay",Ne=ee+1-$,Me=0;for(;Ne<=ee;Ne++,Me++)re.appendChild(K(`flatpickr-day ${ue}`,new Date(_,M-1,Ne),Ne,Me));for(Ne=1;Ne<=le;Ne++,Me++)re.appendChild(K("flatpickr-day",new Date(_,M,Ne),Ne,Me));for(let bt=le+1;bt<=42-$&&(n.config.showMonths===1||Me%7!=0);bt++,Me++)re.appendChild(K(`flatpickr-day ${Fe}`,new Date(_,M+1,bt%le),bt,Me));let Qt=je(r.document,"div","dayContainer");return Qt.appendChild(re),Qt}function G(){if(n.daysContainer===void 0)return;_a(n.daysContainer),n.weekNumbers&&_a(n.weekNumbers);let _=n.element.doc.createDocumentFragment();for(let M=0;M1||n.config.monthSelectorType!=="dropdown")return;let _=function(M){return n.config.minDate!==void 0&&n.currentYear===n.config.minDate.getFullYear()&&Mn.config.maxDate.getMonth())};n.monthsDropdownContainer.tabIndex=-1,n.monthsDropdownContainer.innerHTML="";for(let M=0;M<12;M++){if(!_(M))continue;let $=je(r.document,"option","flatpickr-monthDropdown-month");$.value=new Date(n.currentYear,M).getMonth().toString(),$.textContent=Sa(M,n.config.shorthandCurrentMonth,n.l10n),$.tabIndex=-1,n.currentMonth===M&&($.selected=!0),n.monthsDropdownContainer.appendChild($)}}function ie(){let _=je(r.document,"div","flatpickr-month"),M=r.document.createDocumentFragment(),$;n.config.showMonths>1||n.config.monthSelectorType==="static"?$=je(r.document,"span","cur-month"):(n.monthsDropdownContainer=je(r.document,"select","flatpickr-monthDropdown-months"),n.monthsDropdownContainer.setAttribute("aria-label",n.l10n.monthAriaLabel),b(n.monthsDropdownContainer,"change",ve=>{let ue=rn(ve),Fe=parseInt(ue.value,10);n.changeMonth(Fe-n.currentMonth),Ve("onMonthChange")}),Q(),$=n.monthsDropdownContainer);let ee=Ca(r.document,"cur-year",{tabindex:"-1"}),le=ee.getElementsByTagName("input")[0];le.setAttribute("aria-label",n.l10n.yearAriaLabel),n.config.minDate&&le.setAttribute("min",n.config.minDate.getFullYear().toString()),n.config.maxDate&&(le.setAttribute("max",n.config.maxDate.getFullYear().toString()),le.disabled=!!n.config.minDate&&n.config.minDate.getFullYear()===n.config.maxDate.getFullYear());let re=je(r.document,"div","flatpickr-current-month");return re.appendChild($),re.appendChild(ee),M.appendChild(re),_.appendChild(M),{container:_,yearElement:le,monthElement:$}}function he(){_a(n.monthNav),n.monthNav.appendChild(n.prevMonthNav),n.config.showMonths&&(n.yearElements=[],n.monthElements=[]);for(let _=n.config.showMonths;_--;){let M=ie();n.yearElements.push(M.yearElement),n.monthElements.push(M.monthElement),n.monthNav.appendChild(M.container)}n.monthNav.appendChild(n.nextMonthNav)}function pe(){return n.monthNav=je(r.document,"div","flatpickr-months"),n.yearElements=[],n.monthElements=[],n.prevMonthNav=je(r.document,"span","flatpickr-prev-month"),n.prevMonthNav.innerHTML=n.config.prevArrow,n.nextMonthNav=je(r.document,"span","flatpickr-next-month"),n.nextMonthNav.innerHTML=n.config.nextArrow,he(),Object.defineProperty(n,"_hidePrevMonthArrow",{get:()=>n.__hidePrevMonthArrow,set(_){n.__hidePrevMonthArrow!==_&&(Kt(n.prevMonthNav,"flatpickr-disabled",_),n.__hidePrevMonthArrow=_)}}),Object.defineProperty(n,"_hideNextMonthArrow",{get:()=>n.__hideNextMonthArrow,set(_){n.__hideNextMonthArrow!==_&&(Kt(n.nextMonthNav,"flatpickr-disabled",_),n.__hideNextMonthArrow=_)}}),n.currentYearElement=n.yearElements[0],Mt(),n.monthNav}function ge(){n.calendarContainer.classList.add("hasTime"),n.config.noCalendar&&n.calendarContainer.classList.add("noCalendar");let _=rs(n.config);n.timeContainer=je(r.document,"div","flatpickr-time"),n.timeContainer.tabIndex=-1;let M=je(r.document,"span","flatpickr-time-separator",":"),$=Ca(r.document,"flatpickr-hour",{"aria-label":n.l10n.hourAriaLabel});n.hourElement=$.getElementsByTagName("input")[0];let ee=Ca(r.document,"flatpickr-minute",{"aria-label":n.l10n.minuteAriaLabel});if(n.minuteElement=ee.getElementsByTagName("input")[0],n.hourElement.tabIndex=n.minuteElement.tabIndex=-1,n.hourElement.value=Bt(n.latestSelectedDateObj?n.latestSelectedDateObj.getHours():n.config.time_24hr?_.hours:d(_.hours)),n.minuteElement.value=Bt(n.latestSelectedDateObj?n.latestSelectedDateObj.getMinutes():_.minutes),n.hourElement.setAttribute("step",n.config.hourIncrement.toString()),n.minuteElement.setAttribute("step",n.config.minuteIncrement.toString()),n.hourElement.setAttribute("min",n.config.time_24hr?"0":"1"),n.hourElement.setAttribute("max",n.config.time_24hr?"23":"12"),n.hourElement.setAttribute("maxlength","2"),n.minuteElement.setAttribute("min","0"),n.minuteElement.setAttribute("max","59"),n.minuteElement.setAttribute("maxlength","2"),n.timeContainer.appendChild($),n.timeContainer.appendChild(M),n.timeContainer.appendChild(ee),n.config.time_24hr&&n.timeContainer.classList.add("time24hr"),n.config.enableSeconds){n.timeContainer.classList.add("hasSeconds");let le=Ca(r.document,"flatpickr-second");n.secondElement=le.getElementsByTagName("input")[0],n.secondElement.value=Bt(n.latestSelectedDateObj?n.latestSelectedDateObj.getSeconds():_.seconds),n.secondElement.setAttribute("step",n.minuteElement.getAttribute("step")),n.secondElement.setAttribute("min","0"),n.secondElement.setAttribute("max","59"),n.secondElement.setAttribute("maxlength","2"),n.timeContainer.appendChild(je(r.document,"span","flatpickr-time-separator",":")),n.timeContainer.appendChild(le)}return n.config.time_24hr||(n.amPM=je(r.document,"span","flatpickr-am-pm",n.l10n.amPM[tn((n.latestSelectedDateObj?n.hourElement.value:n.config.defaultHour)>11)]),n.amPM.title=n.l10n.toggleTitle,n.amPM.tabIndex=-1,n.timeContainer.appendChild(n.amPM)),n.timeContainer}function be(){n.weekdayContainer?_a(n.weekdayContainer):n.weekdayContainer=je(r.document,"div","flatpickr-weekdays");for(let _=n.config.showMonths;_--;){let M=je(r.document,"div","flatpickr-weekdaycontainer");n.weekdayContainer.appendChild(M)}return Te(),n.weekdayContainer}function Te(){if(!n.weekdayContainer)return;let _=n.l10n.firstDayOfWeek,M=[...n.l10n.weekdays.shorthand];_>0&&_ ${M.join("")} - `}function L(){n.calendarContainer.classList.add("hasWeeks");let _=je(r.document,"div","flatpickr-weekwrapper");_.appendChild(je(r.document,"span","flatpickr-weekday",n.l10n.weekAbbreviation));let M=je(r.document,"div","flatpickr-weeks");return _.appendChild(M),{weekWrapper:_,weekNumbers:M}}function P(_,M=!0){let K=M?_:_-n.currentMonth;K<0&&n._hidePrevMonthArrow===!0||K>0&&n._hideNextMonthArrow===!0||(n.currentMonth+=K,(n.currentMonth<0||n.currentMonth>11)&&(n.currentYear+=n.currentMonth>11?1:-1,n.currentMonth=(n.currentMonth+12)%12,We("onYearChange"),G()),X(),We("onMonthChange"),Dt())}function ct(_=!0,M=!0){if(n.input.value="",n.altInput!==void 0&&(n.altInput.value=""),n.mobileInput!==void 0&&(n.mobileInput.value=""),n.selectedDates=[],n.latestSelectedDateObj=void 0,M===!0&&(n.currentYear=n._initialDate.getFullYear(),n.currentMonth=n._initialDate.getMonth()),n.config.enableTime===!0){let{hours:K,minutes:Q,seconds:se}=Zo(n.config);m(K,Q,se)}n.redraw(),_&&We("onChange")}function Je(){n.isOpen=!1,n.isMobile||(n.calendarContainer!==void 0&&n.calendarContainer.classList.remove("open"),n._input!==void 0&&n._input.classList.remove("active")),We("onClose")}function V(){n.config!==void 0&&We("onDestroy");for(let _=n._handlers.length;_--;)n._handlers[_].remove();if(n._handlers=[],n.mobileInput)n.mobileInput.parentNode&&n.mobileInput.parentNode.removeChild(n.mobileInput),n.mobileInput=void 0;else if(n.calendarContainer&&n.calendarContainer.parentNode)if(n.config.static&&n.calendarContainer.parentNode){let _=n.calendarContainer.parentNode;if(_.lastChild&&_.removeChild(_.lastChild),_.parentNode){for(;_.firstChild;)_.parentNode.insertBefore(_.firstChild,_);_.parentNode.removeChild(_)}}else n.calendarContainer.parentNode.removeChild(n.calendarContainer);n.altInput&&(n.input.type="text",n.altInput.parentNode&&n.altInput.parentNode.removeChild(n.altInput),delete n.altInput),n.input&&(n.input.type=n.input._type,n.input.classList.remove("flatpickr-input"),n.input.removeAttribute("readonly")),["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(_=>{try{delete n[_]}catch(M){}})}function j(_){return n.calendarContainer.contains(_)}function q(_){if(n.isOpen&&!n.config.inline){let M=rn(_),K=j(M),se=!(M===n.input||M===n.altInput||n.element.contains(M)||_.path&&_.path.indexOf&&(~_.path.indexOf(n.input)||~_.path.indexOf(n.altInput)))&&!K&&!j(_.relatedTarget),ie=!n.config.ignoredFocusElements.some(me=>me.contains(M));se&&ie&&(n.config.allowInput&&n.setDate(n._input.value,!1,n.config.altInput?n.config.altFormat:n.config.dateFormat),n.timeContainer!==void 0&&n.minuteElement!==void 0&&n.hourElement!==void 0&&n.input.value!==""&&n.input.value!==void 0&&l(),n.close(),n.config&&n.config.mode==="range"&&n.selectedDates.length===1&&n.clear(!1))}}function te(_){if(!_||n.config.minDate&&_n.config.maxDate.getFullYear())return;let M=_,K=n.currentYear!==M;n.currentYear=M||n.currentYear,n.config.maxDate&&n.currentYear===n.config.maxDate.getFullYear()?n.currentMonth=Math.min(n.config.maxDate.getMonth(),n.currentMonth):n.config.minDate&&n.currentYear===n.config.minDate.getFullYear()&&(n.currentMonth=Math.max(n.config.minDate.getMonth(),n.currentMonth)),K&&(n.redraw(),We("onYearChange"),G())}function we(_,M=!0){var ie;let K=n.parseDate(_,void 0,M);if(n.config.minDate&&K&&nn(K,n.config.minDate,M!==void 0?M:!n.minDateHasTime)<0||n.config.maxDate&&K&&nn(K,n.config.maxDate,M!==void 0?M:!n.maxDateHasTime)>0)return!1;if(!n.config.enable&&n.config.disable.length===0)return!0;if(K===void 0)return!1;let Q=!!n.config.enable,se=(ie=n.config.enable)!=null?ie:n.config.disable;for(let me=0,ue;me=ue.from.getTime()&&K.getTime()<=ue.to.getTime())return Q}return!Q}function ke(_){return n.daysContainer!==void 0?_.className.indexOf("hidden")===-1&&_.className.indexOf("flatpickr-disabled")===-1&&n.daysContainer.contains(_):!1}function Ue(_){let M=_.target===n._input,K=n._input.value.trimEnd()!==Ui();M&&K&&!(_.relatedTarget&&j(_.relatedTarget))&&n.setDate(n._input.value,!0,_.target===n.altInput?n.config.altFormat:n.config.dateFormat)}function ut(_){let M=rn(_),K=n.config.wrap?e.contains(M):M===n._input,Q=n.config.allowInput,se=n.isOpen&&(!Q||!K),ie=n.config.inline&&K&&!Q;if(_.keyCode===13&&K){if(Q)return n.setDate(n._input.value,!0,M===n.altInput?n.config.altFormat:n.config.dateFormat),n.close(),M.blur();n.open()}else if(j(M)||se||ie){let me=!!n.timeContainer&&n.timeContainer.contains(M);switch(_.keyCode){case 13:me?(_.preventDefault(),l(),rr()):Ot(_);break;case 27:_.preventDefault(),rr();break;case 8:case 46:K&&!n.config.allowInput&&(_.preventDefault(),n.clear());break;case 37:case 39:if(!me&&!K){_.preventDefault();let ue=o();if(n.daysContainer!==void 0&&(Q===!1||ue&&ke(ue))){let Pe=_.keyCode===39?1:-1;_.ctrlKey?(_.stopPropagation(),P(Pe),Z(z(1),0)):Z(void 0,Pe)}}else n.hourElement&&n.hourElement.focus();break;case 38:case 40:{_.preventDefault();let ue=_.keyCode===40?1:-1;n.daysContainer&&M.$i!==void 0||M===n.input||M===n.altInput?_.ctrlKey?(_.stopPropagation(),te(n.currentYear-ue),Z(z(1),0)):me||Z(void 0,ue*7):M===n.currentYearElement?te(n.currentYear-ue):n.config.enableTime&&(!me&&n.hourElement&&n.hourElement.focus(),l(_),n._debouncedChange());break}case 9:if(me){let ue=[n.hourElement,n.minuteElement,n.secondElement,n.amPM].concat(n.pluginElements).filter(Fe=>Fe),Pe=ue.indexOf(M);if(Pe!==-1){let Fe=ue[Pe+(_.shiftKey?-1:1)];_.preventDefault(),(Fe||n._input).focus()}}else!n.config.noCalendar&&n.daysContainer&&n.daysContainer.contains(M)&&_.shiftKey&&(_.preventDefault(),n._input.focus());break;default:break}}if(n.amPM!==void 0&&M===n.amPM)switch(_.key){case n.l10n.amPM[0].charAt(0):case n.l10n.amPM[0].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[0],f(),xn();break;case n.l10n.amPM[1].charAt(0):case n.l10n.amPM[1].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[1],f(),xn();break}(K||j(M))&&We("onKeyDown",_)}function vt(_,M="flatpickr-day"){if(n.selectedDates.length!==1||_&&(!_.classList.contains(M)||_.classList.contains("flatpickr-disabled")))return;let K=_?_.dateObj.getTime():n.days.firstElementChild.dateObj.getTime(),Q=n.parseDate(n.selectedDates[0],void 0,!0).getTime(),se=Math.min(K,n.selectedDates[0].getTime()),ie=Math.max(K,n.selectedDates[0].getTime()),me=!1,ue=0,Pe=0;for(let Me=se;Mese&&Meue)?ue=Me:Me>Q&&(!Pe||Me .${M}`)).forEach(Me=>{let bt=Me.dateObj.getTime(),ar=ue>0&&bt0&&bt>Pe;if(ar){Me.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(or=>{Me.classList.remove(or)});return}else if(me&&!ar)return;["startRange","inRange","endRange","notAllowed"].forEach(or=>{Me.classList.remove(or)}),_!==void 0&&(_.classList.add(K<=n.selectedDates[0].getTime()?"startRange":"endRange"),QK&&bt===Q&&Me.classList.add("endRange"),bt>=ue&&(Pe===0||bt<=Pe)&&Jg(bt,Q,K)&&Me.classList.add("inRange"))})}function Nt(){n.isOpen&&!n.config.static&&!n.config.inline&&Un()}function Bn(_,M=n._positionElement){if(n.isMobile===!0){if(_){_.preventDefault();let Q=rn(_);Q&&Q.blur()}n.mobileInput!==void 0&&(n.mobileInput.focus(),n.mobileInput.click()),We("onOpen");return}else if(n._input.disabled||n.config.inline)return;let K=n.isOpen;n.isOpen=!0,K||(n.calendarContainer.classList.add("open"),n._input.classList.add("active"),We("onOpen"),Un(M)),n.config.enableTime===!0&&n.config.noCalendar===!0&&n.config.allowInput===!1&&(_===void 0||!n.timeContainer.contains(_.relatedTarget))&&r.setTimeout(()=>n.hourElement.select(),50)}function Kn(_){return M=>{let K=n.config[`_${_}Date`]=n.parseDate(M,n.config.dateFormat),Q=n.config[`_${_==="min"?"max":"min"}Date`];K!==void 0&&(n[_==="min"?"minDateHasTime":"maxDateHasTime"]=K.getHours()>0||K.getMinutes()>0||K.getSeconds()>0),n.selectedDates&&(n.selectedDates=n.selectedDates.filter(se=>we(se)),!n.selectedDates.length&&_==="min"&&p(K),xn()),n.daysContainer&&(Xr(),K!==void 0?n.currentYearElement[_]=K.getFullYear().toString():n.currentYearElement.removeAttribute(_),n.currentYearElement.disabled=!!Q&&K!==void 0&&Q.getFullYear()===K.getFullYear())}}function $n(){let _=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],M={...JSON.parse(JSON.stringify(e.dataset||{})),...t},K={};n.config.parseDate=M.parseDate,n.config.formatDate=M.formatDate,Object.defineProperty(n.config,"enable",{get:()=>n.config._enable,set:ie=>{n.config._enable=Ee(ie)}}),Object.defineProperty(n.config,"disable",{get:()=>n.config._disable,set:ie=>{n.config._disable=Ee(ie)}});let Q=M.mode==="time";if(!M.dateFormat&&(M.enableTime||Q)){let ie=gt.defaultConfig.dateFormat||yr.dateFormat;K.dateFormat=M.noCalendar||Q?"H:i"+(M.enableSeconds?":S":""):ie+" H:i"+(M.enableSeconds?":S":"")}if(M.altInput&&(M.enableTime||Q)&&!M.altFormat){let ie=gt.defaultConfig.altFormat||yr.altFormat;K.altFormat=M.noCalendar||Q?"h:i"+(M.enableSeconds?":S K":" K"):ie+` h:i${M.enableSeconds?":S":""} K`}Object.defineProperty(n.config,"minDate",{get:()=>n.config._minDate,set:Kn("min")}),Object.defineProperty(n.config,"maxDate",{get:()=>n.config._maxDate,set:Kn("max")});let se=ie=>me=>{n.config[ie==="min"?"_minTime":"_maxTime"]=n.parseDate(me,"H:i:S")};Object.defineProperty(n.config,"minTime",{get:()=>n.config._minTime,set:se("min")}),Object.defineProperty(n.config,"maxTime",{get:()=>n.config._maxTime,set:se("max")}),M.mode==="time"&&(n.config.noCalendar=!0,n.config.enableTime=!0),Object.assign(n.config,K,M);for(let ie=0;ie<_.length;ie++)n.config[_[ie]]=n.config[_[ie]]===!0||n.config[_[ie]]==="true";Jo.filter(ie=>n.config[ie]!==void 0).forEach(ie=>{n.config[ie]=Go(n.config[ie]||[]).map(s)}),n.isMobile=!n.config.disableMobile&&!n.config.inline&&n.config.mode==="single"&&!n.config.disable.length&&!n.config.enable&&!n.config.weekNumbers&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);for(let ie=0;ie-1?n.config[ue]=Go(me[ue]).map(s).concat(n.config[ue]):typeof M[ue]=="undefined"&&(n.config[ue]=me[ue])}M.altInputClass||(n.config.altInputClass=bn().className+" "+n.config.altInputClass),We("onParseConfig")}function bn(){return n.config.wrap?e.querySelector("[data-input]"):e}function wn(){typeof n.config.locale!="object"&&typeof gt.l10ns[n.config.locale]=="undefined"&&n.config.errorHandler(new Error(`flatpickr: invalid locale ${n.config.locale}`)),n.l10n={...gt.l10ns.default,...typeof n.config.locale=="object"?n.config.locale:n.config.locale!=="default"?gt.l10ns[n.config.locale]:void 0},Jn.D=`(${n.l10n.weekdays.shorthand.join("|")})`,Jn.l=`(${n.l10n.weekdays.longhand.join("|")})`,Jn.M=`(${n.l10n.months.shorthand.join("|")})`,Jn.F=`(${n.l10n.months.longhand.join("|")})`,Jn.K=`(${n.l10n.amPM[0]}|${n.l10n.amPM[1]}|${n.l10n.amPM[0].toLowerCase()}|${n.l10n.amPM[1].toLowerCase()})`,{...t,...JSON.parse(JSON.stringify(e.dataset||{}))}.time_24hr===void 0&>.defaultConfig.time_24hr===void 0&&(n.config.time_24hr=n.l10n.time_24hr),n.formatDate=ku(n),n.parseDate=Qo({config:n.config,l10n:n.l10n})}function Un(_){if(typeof n.config.position=="function")return void n.config.position(n,_);if(n.calendarContainer===void 0)return;We("onPreCalendarPosition");let M=_||n._positionElement,K=Array.prototype.reduce.call(n.calendarContainer.children,(Cr,Vi)=>Cr+Vi.offsetHeight,0),Q=n.calendarContainer.offsetWidth,se=n.config.position.split(" "),ie=se[0],me=se.length>1?se[1]:null,ue=M.getBoundingClientRect(),Pe=r.innerHeight-ue.bottom,Fe=ie==="above"||ie!=="below"&&PeK,Me=r.pageYOffset+ue.top+(Fe?-K-2:M.offsetHeight+2);if(Bt(n.calendarContainer,"arrowTop",!Fe),Bt(n.calendarContainer,"arrowBottom",Fe),n.config.inline)return;let Qt=r.pageXOffset+ue.left,bt=!1,ar=!1;me==="center"?(Qt-=(Q-ue.width)/2,bt=!0):me==="right"&&(Qt-=Q-ue.width,ar=!0),Bt(n.calendarContainer,"arrowLeft",!bt&&!ar),Bt(n.calendarContainer,"arrowCenter",bt),Bt(n.calendarContainer,"arrowRight",ar);let or=r.document.body.offsetWidth-(r.pageXOffset+ue.right),Wi=Qt+Q>r.document.body.offsetWidth,Za=or+Q>r.document.body.offsetWidth;if(Bt(n.calendarContainer,"rightMost",Wi),!n.config.static)if(n.calendarContainer.style.top=`${Me}px`,!Wi)n.calendarContainer.style.left=`${Qt}px`,n.calendarContainer.style.right="auto";else if(!Za)n.calendarContainer.style.left="auto",n.calendarContainer.style.right=`${or}px`;else{let Cr=Gr();if(Cr===void 0)return;let Vi=r.document.body.offsetWidth,bl=Math.max(0,Vi/2-Q/2),wl=".flatpickr-calendar.centerMost:before",xf=".flatpickr-calendar.centerMost:after",R=Cr.cssRules.length,w=`{left:${ue.left}px;right:auto;}`;Bt(n.calendarContainer,"rightMost",!1),Bt(n.calendarContainer,"centerMost",!0),Cr.insertRule(`${wl},${xf}${w}`,R),n.calendarContainer.style.left=`${bl}px`,n.calendarContainer.style.right="auto"}}function Gr(){let _=null;for(let M=0;Mme.classList&&me.classList.contains("flatpickr-day")&&!me.classList.contains("flatpickr-disabled")&&!me.classList.contains("notAllowed"),K=Su(rn(_),M);if(K===void 0)return;let Q=K,se=n.latestSelectedDateObj=new Date(Q.dateObj.getTime()),ie=(se.getMonth()n.currentMonth+n.config.showMonths-1)&&n.config.mode!=="range";if(n.selectedDateElem=Q,n.config.mode==="single")n.selectedDates=[se];else if(n.config.mode==="multiple"){let me=Ye(se);me?n.selectedDates.splice(parseInt(me),1):n.selectedDates.push(se)}else n.config.mode==="range"&&(n.selectedDates.length===2&&n.clear(!1,!1),n.latestSelectedDateObj=se,n.selectedDates.push(se),nn(se,n.selectedDates[0],!0)!==0&&n.selectedDates.sort((me,ue)=>me.getTime()-ue.getTime()));if(f(),ie){let me=n.currentYear!==se.getFullYear();n.currentYear=se.getFullYear(),n.currentMonth=se.getMonth(),me&&(We("onYearChange"),G()),We("onMonthChange")}if(Dt(),X(),xn(),!ie&&n.config.mode!=="range"&&n.config.showMonths===1?W(Q):n.selectedDateElem!==void 0&&n.hourElement===void 0&&n.selectedDateElem&&n.selectedDateElem.focus(),n.hourElement!==void 0&&n.hourElement!==void 0&&n.hourElement.focus(),n.config.closeOnSelect){let me=n.config.mode==="single"&&!n.config.enableTime,ue=n.config.mode==="range"&&n.selectedDates.length===2&&!n.config.enableTime;(me||ue)&&rr()}x()}let Vt={locale:[wn,De],showMonths:[pe,u,be],minDate:[C],maxDate:[C],positionElement:[En],clickOpens:[()=>{n.config.clickOpens===!0?(b(n._input,"focus",n.open),b(n._input,"click",n.open)):(n._input.removeEventListener("focus",n.open),n._input.removeEventListener("click",n.open))}]};function yt(_,M){if(_!==null&&typeof _=="object"){Object.assign(n.config,_);for(let K in _)Vt[K]!==void 0&&Vt[K].forEach(Q=>Q())}else n.config[_]=M,Vt[_]!==void 0?Vt[_].forEach(K=>K()):Jo.indexOf(_)>-1&&(n.config[_]=Go(M));n.redraw(),xn(!0)}function Y(_,M){let K=[];if(Array.isArray(_))K=_.map(Q=>n.parseDate(Q,M));else if(_.getDate||typeof _=="number")K=[n.parseDate(_,M)];else if(typeof _=="string")switch(n.config.mode){case"single":case"time":K=[n.parseDate(_,M)];break;case"multiple":K=_.split(n.config.conjunction).map(Q=>n.parseDate(Q,M));break;case"range":K=_.split(n.l10n.rangeSeparator).map(Q=>n.parseDate(Q,M));break;default:break}else n.config.errorHandler(new Error(`Invalid date supplied: ${JSON.stringify(_)}`));n.selectedDates=n.config.allowInvalidPreload?K:K.filter(Q=>Q.getDate&&we(Q,!1)),n.config.mode==="range"&&n.selectedDates.sort((Q,se)=>Q.getTime()-se.getTime())}function oe(_,M=!1,K=n.config.dateFormat){if(_!==0&&!_||Array.isArray(_)&&_.length===0)return n.clear(M);Y(_,K),n.latestSelectedDateObj=n.selectedDates[n.selectedDates.length-1],n.redraw(),C(void 0,M),p(),n.selectedDates.length===0&&n.clear(!1),xn(M),M&&We("onChange")}function Ee(_){return _.slice().map(M=>typeof M=="string"||typeof M=="number"||M.getDate?n.parseDate(M,void 0,!0):M&&typeof M=="object"&&M.from&&M.to?{from:n.parseDate(M.from,void 0),to:n.parseDate(M.to,void 0)}:M).filter(M=>M)}function ze(){n.selectedDates=[],n.now=n.parseDate(n.config.now)||new Date;let _=n.config.defaultDate||((n.input.nodeName==="INPUT"||n.input.nodeName==="TEXTAREA")&&n.input.placeholder&&n.input.value===n.input.placeholder?null:n.input.value);_&&Y(_,n.config.dateFormat),n._initialDate=n.selectedDates.length>0?n.selectedDates[0]:n.config.minDate&&n.config.minDate.getTime()>n.now.getTime()?n.config.minDate:n.config.maxDate&&n.config.maxDate.getTime()0&&(n.latestSelectedDateObj=n.selectedDates[0]),n.config.minTime!==void 0&&(n.config.minTime=n.parseDate(n.config.minTime,"H:i")),n.config.maxTime!==void 0&&(n.config.maxTime=n.parseDate(n.config.maxTime,"H:i")),n.minDateHasTime=!!n.config.minDate&&(n.config.minDate.getHours()>0||n.config.minDate.getMinutes()>0||n.config.minDate.getSeconds()>0),n.maxDateHasTime=!!n.config.maxDate&&(n.config.maxDate.getHours()>0||n.config.maxDate.getMinutes()>0||n.config.maxDate.getSeconds()>0)}function Tt(){if(n.input=bn(),!n.input){n.config.errorHandler(new Error("Invalid input element specified"));return}n.input._type=n.input.type,n.input.type="text",n.input.classList.add("flatpickr-input"),n._input=n.input,n.config.altInput&&(n.altInput=je(r.document,n.input.nodeName,n.config.altInputClass),n._input=n.altInput,n.altInput.placeholder=n.input.placeholder,n.altInput.disabled=n.input.disabled,n.altInput.required=n.input.required,n.altInput.tabIndex=n.input.tabIndex,n.altInput.type="text",n.input.setAttribute("type","hidden"),!n.config.static&&n.input.parentNode&&n.input.parentNode.insertBefore(n.altInput,n.input.nextSibling)),n.config.allowInput||n._input.setAttribute("readonly","readonly"),En()}function En(){n._positionElement=n.config.positionElement||n._input}function qe(){let _=n.config.enableTime?n.config.noCalendar?"time":"datetime-local":"date";n.mobileInput=je(r.document,"input",n.input.className+" flatpickr-mobile"),n.mobileInput.tabIndex=1,n.mobileInput.type=_,n.mobileInput.disabled=n.input.disabled,n.mobileInput.required=n.input.required,n.mobileInput.placeholder=n.input.placeholder,n.mobileFormatStr=_==="datetime-local"?"Y-m-d\\TH:i:S":_==="date"?"Y-m-d":"H:i:S",n.selectedDates.length>0&&(n.mobileInput.defaultValue=n.mobileInput.value=n.formatDate(n.selectedDates[0],n.mobileFormatStr)),n.config.minDate&&(n.mobileInput.min=n.formatDate(n.config.minDate,"Y-m-d")),n.config.maxDate&&(n.mobileInput.max=n.formatDate(n.config.maxDate,"Y-m-d")),n.input.getAttribute("step")&&(n.mobileInput.step=String(n.input.getAttribute("step"))),n.input.type="hidden",n.altInput!==void 0&&(n.altInput.type="hidden");try{n.input.parentNode&&n.input.parentNode.insertBefore(n.mobileInput,n.input.nextSibling)}catch(M){}b(n.mobileInput,"change",M=>{n.setDate(rn(M).value,!1,n.mobileFormatStr),We("onChange"),We("onClose")})}function ot(_){if(n.isOpen===!0)return n.close();n.open(_)}function We(_,M){if(n.config===void 0)return;let K=n.config[_];if(K!==void 0&&K.length>0)for(let Q=0;K[Q]&&Q=0&&nn(_,n.selectedDates[1])<=0}function Dt(){n.config.noCalendar||n.isMobile||!n.monthNav||(n.yearElements.forEach((_,M)=>{let K=new Date(n.currentYear,n.currentMonth,1);K.setMonth(n.currentMonth+M),n.config.showMonths>1||n.config.monthSelectorType==="static"?n.monthElements[M].textContent=xa(K.getMonth(),n.config.shorthandCurrentMonth,n.l10n)+" ":n.monthsDropdownContainer.value=K.getMonth().toString(),_.value=K.getFullYear().toString()}),n._hidePrevMonthArrow=n.config.minDate!==void 0&&(n.currentYear===n.config.minDate.getFullYear()?n.currentMonth<=n.config.minDate.getMonth():n.currentYearn.config.maxDate.getMonth():n.currentYear>n.config.maxDate.getFullYear()))}function Ui(_){let M=_||(n.config.altInput?n.config.altFormat:n.config.dateFormat);return n.selectedDates.map(K=>n.formatDate(K,M)).filter((K,Q,se)=>n.config.mode!=="range"||n.config.enableTime||se.indexOf(K)===Q).join(n.config.mode!=="range"?n.config.conjunction:n.l10n.rangeSeparator)}function xn(_=!0){n.mobileInput!==void 0&&n.mobileFormatStr&&(n.mobileInput.value=n.latestSelectedDateObj!==void 0?n.formatDate(n.latestSelectedDateObj,n.mobileFormatStr):""),n.input.value=Ui(n.config.dateFormat),n.altInput!==void 0&&(n.altInput.value=Ui(n.config.altFormat)),_!==!1&&We("onValueUpdate")}function yl(_){let M=rn(_),K=n.prevMonthNav.contains(M),Q=n.nextMonthNav.contains(M);K||Q?P(K?-1:1):n.yearElements.indexOf(M)>=0?M.select():M.classList.contains("arrowUp")?n.changeYear(n.currentYear+1):M.classList.contains("arrowDown")&&n.changeYear(n.currentYear-1)}function Xa(_){_.preventDefault();let M=_.type==="keydown",K=rn(_),Q=K;n.amPM!==void 0&&K===n.amPM&&(n.amPM.textContent=n.l10n.amPM[tn(n.amPM.textContent===n.l10n.amPM[0])]);let se=parseFloat(Q.getAttribute("min")),ie=parseFloat(Q.getAttribute("max")),me=parseFloat(Q.getAttribute("step")),ue=parseInt(Q.value,10),Pe=_.delta||(M?_.which===38?1:-1:0),Fe=ue+me*Pe;if(typeof Q.value!="undefined"&&Q.value.length===2){let Me=Q===n.hourElement,Qt=Q===n.minuteElement;Feie&&(Fe=Q===n.hourElement?Fe-ie-tn(!n.amPM):se,Qt&&N(void 0,1,n.hourElement)),n.amPM&&Me&&(me===1?Fe+ue===23:Math.abs(Fe-ue)>me)&&(n.amPM.textContent=n.l10n.amPM[tn(n.amPM.textContent===n.l10n.amPM[0])]),Q.value=Ht(Fe)}}return a(),n}function es(e,t){let r=Array.prototype.slice.call(e).filter(i=>i.onClickEvent),n=[];for(let i=0;i{gt.l10ns.default={...gt.l10ns.default,...e}};gt.setDefaults=e=>{gt.defaultConfig={...gt.defaultConfig,...e}};gt.parseDate=Qo({});gt.formatDate=ku({});gt.compareDates=nn;typeof jQuery!="undefined"&&typeof jQuery.fn!="undefined"&&(jQuery.fn.flatpickr=function(e){return es(this,e)});Date.prototype.fp_incr=function(e){return new Date(this.getFullYear(),this.getMonth(),this.getDate()+(typeof e=="string"?parseInt(e,10):e))};typeof window!="undefined"&&(window.flatpickr=gt);var ts=gt;function ns(e,t,r,n,i){return e.document.body.createDiv({cls:`${$("date-picker")} ${$("ignore-click-outside")}`},a=>{a.style.left=`${r.x||0}px`,a.style.top=`${r.y||0}px`,a.createEl("input",{type:"text"},o=>{a.win.setTimeout(()=>{let s=null,u=d=>{d.target instanceof d.view.HTMLElement&&d.target.closest(`.${$("date-picker")}`)===null&&c()},l=d=>{d.key==="Escape"&&c()},c=()=>{s.destroy(),a.remove(),e.document.body.removeEventListener("click",u),e.document.removeEventListener("keydown",l)};s=ts(o,{locale:Yo(t),defaultDate:i,inline:!0,onChange:d=>{n(d),c()},win:e}),a.win.setTimeout(()=>{let d=a.clientHeight,f=a.clientWidth;r.y+d>e.innerHeight&&(a.style.top=`${(r.y||0)-d}px`),r.x+f>e.innerWidth&&(a.style.left=`${(r.x||0)-f}px`)}),e.document.body.addEventListener("click",u),e.document.addEventListener("keydown",l)})})})}function rs({stateManager:e,boardModifiers:t,item:r,hasDate:n,path:i}){let a=e.getSetting("date-format"),o=e.getSetting("link-date-to-daily-note"),s=e.getSetting("date-trigger"),u=o?"(?:\\[[^\\]]+\\]\\([^)]+\\)|\\[\\[[^\\]]+\\]\\])":"{[^}]+}",l=new RegExp(`(^|\\s)${Ln(s)}${u}`);return c=>{let d=c[0],f=(0,nt.moment)(d).format(a),p=o?Vo(e.app,f):`{${f}}`,m=r.data.titleRaw;n?m=r.data.titleRaw.replace(l,`$1${s}${p}`):m=`${r.data.titleRaw} ${s}${p}`,e.updateItemContent(r,m).then(y=>{t.updateItem(i,y)}).catch(y=>{e.setError(y),console.error(y)})}}function _u(e){let t=e.getSetting("time-format"),r=[];for(let n=0;n<24;n++)r.push((0,nt.moment)({hour:n}).format(t)),r.push((0,nt.moment)({hour:n,minute:15}).format(t)),r.push((0,nt.moment)({hour:n,minute:30}).format(t)),r.push((0,nt.moment)({hour:n,minute:45}).format(t));return r}function is(e,t,r,n,i){let a=$("time-picker"),o=t.getSetting("time-format"),s=i==null?void 0:i.format(o);e.document.body.createDiv({cls:`${a} ${$("ignore-click-outside")}`},u=>{let l=_u(t),c=b=>{b.target instanceof b.view.HTMLElement&&b.target.hasClass($("time-picker-item"))&&b.target.dataset.value&&(n(b.target.dataset.value),p())},d=b=>{b.target instanceof b.view.HTMLElement&&b.target.closest(`.${a}`)===null&&p()},f=b=>{b.key==="Escape"&&p()},p=()=>{u.remove(),u.removeEventListener("click",c),e.document.body.removeEventListener("click",d),e.document.removeEventListener("keydown",f)};u.style.left=`${r.x||0}px`,u.style.top=`${r.y||0}px`;let m=null,y=null;l.forEach((b,x)=>{let D=b===s;u.createDiv({cls:`${$("time-picker-item")} ${D?"is-selected":""}`,text:b},C=>{C.createEl("span",{cls:$("time-picker-check"),prepend:!0},A=>{(0,nt.setIcon)(A,"checkmark")}),x%4==0&&C.addClass("is-hour"),C.dataset.value=b,D&&(m=C),x===Math.floor(l.length/2)&&(y=C)})}),u.win.setTimeout(()=>{var D;let b=u.clientHeight,x=u.clientWidth;r.y+b>e.innerHeight&&(u.style.top=`${(r.y||0)-b}px`),r.x+x>e.innerWidth&&(u.style.left=`${(r.x||0)-x}px`),(D=m||y)==null||D.scrollIntoView({block:"center",inline:"nearest"}),u.addEventListener("click",c),e.document.body.addEventListener("click",d),e.document.addEventListener("keydown",f)})})}function as({stateManager:e,boardModifiers:t,item:r,hasTime:n,path:i}){let a=e.getSetting("time-trigger"),o=new RegExp(`(^|\\s)${Ln(a)}{([^}]+)}`);return s=>{let u=r.data.titleRaw;n?u=r.data.titleRaw.replace(o,`$1${a}{${s}}`):u=`${r.data.titleRaw} ${a}{${s}}`,e.updateItemContent(r,u).then(l=>{t.updateItem(i,l)}).catch(l=>{e.setError(l),console.error(l)})}}function Xg(e){let t=e.data.metadata.date,r=[];t&&(t.isSame(new Date,"day")&&r.push("is-today"),t.isAfter(new Date,"day")&&r.push("is-future"),t.isBefore(new Date,"day")&&r.push("is-past")),e.data.isComplete&&r.push("is-complete");for(let n of e.data.metadata.tags)r.push(`has-tag-${n.slice(1)}`);return r}function Kr(e,t,r,n){return e.app.fileManager.generateMarkdownLink(t,r,n)}function eS(e,t,r){return nt.htmlToMarkdown?(0,nt.htmlToMarkdown)(r):nt.MarkdownSourceView.prototype.handleDataTransfer.call({app:e.app},t)}function tS(e){return e.replace(/^\[(.*)\]\(app:\/\/obsidian.md\/(.*)\)$/,"[$1]($2)")}function Cu(e){var r;let t=e.require("electron").remote.clipboard;if(process.platform==="darwin"){if(t.has("NSFilenamesPboardType"))return((r=t.read("NSFilenamesPboardType").match(/.*<\/string>/g))==null?void 0:r.map(n=>n.replace(/|<\/string>/g,"")))||[];{let n=t.readImage("clipboard");return n.isEmpty()?[t.read("public.file-url").replace("file://","")].filter(i=>i):[{buffer:n.toPNG(),mimeType:"image/png",originalName:`Pasted image ${(0,nt.moment)().format("YYYYMMDDHHmmss")}.png`}]}}else if(t.has("CF_HDROP")){let n=t.read("CF_HDROP")||"",i=[...n].filter((o,s)=>n.charCodeAt(s)!==0).join("").replace(/\\/g,"\\"),a=i.match(/[a-zA-Z]:\\/);if(a){let o=i.indexOf(a[0]);return o!==0&&(i=i.slice(o)),i.split(a[0]).filter(s=>s).map(s=>a+s)}}else{let n=t.readImage("clipboard");return n.isEmpty()?[t.readBuffer("FileNameW").toString("ucs2").replace(RegExp(String.fromCharCode(0),"g"),"")].filter(i=>i):[{buffer:n.toPNG(),mimeType:"image/png",originalName:`Pasted image ${(0,nt.moment)().format("YYYYMMDDHHmmss")}.png`}]}return null}function nS(e){return e.split("\\").pop().split("/").pop()}async function rS(e,t,r,n){let i=await e.app.vault.getAvailablePathForAttachments(t,r,e.file),a=await e.app.vault.createBinary(i,n);return Kr(e,a,e.file.path)}async function iS(e,t){let r=Cu(t);if(!r||r.length===0)return null;let n=t.require("fs/promises"),i=t.require("path");return(await Promise.all(r.map(async a=>{if(typeof a=="string"){let s=nS(a).split("."),u=s.pop(),l=s.join("."),c=await e.app.vault.getAvailablePathForAttachments(l,u,e.file),d=e.app.vault.adapter.basePath;await n.copyFile(a,i.join(d,c)),await new Promise(p=>t.setTimeout(p,50));let f=e.app.vault.getAbstractFileByPath(c);return Kr(e,f,e.file.path)}else{let o=a.originalName.split("."),s=o.pop(),u=o.join(".");return await rS(e,u,s,a.buffer)}}))).filter(a=>a)}function Zg(e,t,r){return Promise.all(t.map(n=>{let i=n.name.split("."),a=i.pop(),o=i.join(".");if(r){switch(n.type){case"text/jpg":a="jpg";break;case"text/jpeg":a="jpeg";break;case"text/png":a="png";break}o="Pasted image "+(0,nt.moment)().format("YYYYMMDDHHmmss")}return new Promise((s,u)=>{let l=new FileReader;l.onload=async c=>{try{let d=await e.app.vault.getAvailablePathForAttachments(o,a,e.file),f=await e.app.vault.createBinary(d,c.target.result);s(Kr(e,f,e.file.path))}catch(d){console.error(d),u(d)}},l.readAsArrayBuffer(n)})}))}async function aS(e,t,r){let n=!t.view,i=n?e.getAView().isShiftPressed:!1,a=n?t.clipboardData:t.dataTransfer,o=n&&nt.Platform.isDesktopApp?r.require("electron").remote.clipboard:null,s=o?o.availableFormats():[];if(n){if(n&&!i&&!s.includes("text/rtf")){if(nt.Platform.isDesktopApp){let m=await iS(e,r);if(m==null?void 0:m.length)return m}let f=[],p=t.clipboardData.items;for(let m in p){let y=p[m];y.kind==="file"&&f.push(y.getAsFile())}if(f.length)return await Zg(e,f,!0)}}else{let f=await lc(t);if(f.length)return await Zg(e,f)}let u=a.getData("text/html"),l=a.getData("text/plain"),c=a.getData("text/uri-list"),d=i?l||u:eS(e,a,u);return[tS(d||c||l||u||"").trim()]}async function os(e,t,r){let n=e.app.dragManager.draggable,i=t.view?t.dataTransfer:t.clipboardData;switch(n==null?void 0:n.type){case"file":return[Kr(e,n.file,e.file.path)];case"files":return n.files.map(a=>Kr(e,a,e.file.path));case"folder":return n.file.children.map(a=>a instanceof nt.TFolder?null:Kr(e,a,e.file.path)).filter(a=>a);case"link":{let a=n.file?Kr(e,n.file,(0,nt.parseLinktext)(n.linktext).subpath):`[[${n.linktext}]]`,o=new DOMParser().parseFromString(i.getData("text/html"),"text/html").documentElement.textContent;return a=a.replace(/]]$/,`|${o}]]`).replace(/^\[[^\]].+]\(/,`[${o}](`),[a]}default:return await aS(e,t,r)}}h();function ss(e,t){let r,n,i=(...a)=>{r=a,!n&&(n=e.requestAnimationFrame(()=>{n=null,t(...r)}))};return i.cancel=()=>{!n||(e.cancelAnimationFrame(n),n=null)},i}var ev={outOfTheWay:"cubic-bezier(0.2, 0, 0, 1)",drop:"cubic-bezier(.2,1,.1,1)"};var Si={outOfTheWay:200,minDropTime:330,maxDropTime:550},br=`${Si.outOfTheWay}ms ${ev.outOfTheWay}`;var ln={none:"none",fluid:`opacity ${br}`,snap:`transform ${br}, opacity ${br}`,drop:e=>{let t=`${e}ms ${ev.drop}`;return`transform ${t}, opacity ${t}`},outOfTheWay:`transform ${br}`,placeholder:`height ${br}, width ${br}, margin ${br}, border-color ${br}`},oS=(e,t)=>e.x===t.x&&e.y===t.y,sS={x:0,y:0},tv=e=>oS(e,sS)?void 0:`translate(${e.x}px, ${e.y}px)`,nv={moveTo:tv,drop:e=>tv(e)},lS=Si.maxDropTime-Si.minDropTime,rv=1500,cS=.6;function _i({position:e,destination:t,isCancel:r}){let n=ci(e,t);if(n<=0)return Si.minDropTime;if(n>=rv)return Si.maxDropTime;let i=n/rv,a=Si.minDropTime+lS*i,o=r?a*cS:a;return Math.round(o)}function Dn(e,t,r){e.style.getPropertyValue(t)!==r&&e.style.setProperty(t,r)}function ls(e,t){e.style.getPropertyValue(t)&&e.style.removeProperty(t)}h();h();var Mn;(function(i){i[i.TitleAsc=0]="TitleAsc",i[i.TitleDsc=1]="TitleDsc",i[i.DateAsc=2]="DateAsc",i[i.DateDsc=3]="DateDsc"})(Mn||(Mn={}));var Ge={Item:"item",Lane:"lane",Board:"board",MetadataSetting:"metadata-setting",TagColorSetting:"tag-color"},cs={accepts:[Ge.Item],type:Ge.Item,children:[]},wr={accepts:[Ge.Lane],type:Ge.Lane},us={accepts:[],type:Ge.Board},ds={accepts:[Ge.MetadataSetting],type:Ge.MetadataSetting,children:[]},fs={accepts:[],type:Ge.TagColorSetting,children:[]};function Tu(e,t,r,n,i){let a="htmldnd",o=Re(),s=e-75,u=e+75,l=t-25,c=t+25;return{scopeId:a,entityId:`${a}-${o}`,initial:[s,l,u,c],getParentScrollState(){return on},getParentScrollShift(){return Pn},recalcInitial(){},getHitbox(){return this.initial},getPath(){return[]},getData(){return{viewId:n,type:Ge.Item,id:o,content:r,accepts:[],win:i}}}}var Mu=class{constructor(t,r,n,i){this.isHTMLDragging=!1;this.dragOverTimeout=0;this.win=t,this.hitboxEntities=n,this.scrollEntities=i,this.emitter=r}getDragEventData(){return{dragEntity:this.dragEntity,dragEntityId:this.dragEntityId,dragEntityMargin:this.dragEntityMargin,dragOrigin:this.dragOrigin,dragOriginHitbox:this.dragOriginHitbox,dragPosition:this.dragPosition,primaryIntersection:this.primaryIntersection,scrollIntersection:this.scrollIntersection}}dragStart(t,r){var a;let n=(r==null?void 0:r.dataset.hitboxid)||t.currentTarget.dataset.hitboxid;if(!n)return;let i=getComputedStyle(r||t.currentTarget);this.dragEntityId=n,this.dragOrigin={x:t.pageX,y:t.pageY},this.dragPosition={x:t.pageX,y:t.pageY},this.dragEntity=this.hitboxEntities.get(n),this.dragOriginHitbox=(a=this.dragEntity)==null?void 0:a.getHitbox(),this.dragEntityMargin=[parseFloat(i.marginLeft)||0,parseFloat(i.marginTop)||0,parseFloat(i.marginRight)||0,parseFloat(i.marginBottom)||0],this.emitter.emit("dragStart",this.getDragEventData())}dragStartHTML(t,r){this.isHTMLDragging=!0;let n=Tu(t.pageX,t.pageY,[],r,t.view);this.dragEntityId=n.entityId,this.dragOrigin={x:t.pageX,y:t.pageY},this.dragPosition={x:t.pageX,y:t.pageY},this.dragEntity=n,this.dragOriginHitbox=n.getHitbox(),this.dragEntityMargin=[0,0,0,0],this.emitter.emit("dragStart",this.getDragEventData())}dragMove(t){this.dragPosition={x:t.pageX,y:t.pageY},this.emitter.emit("dragMove",this.getDragEventData()),this.calculateDragIntersect()}dragMoveHTML(t){this.dragPosition={x:t.pageX,y:t.pageY},this.emitter.emit("dragMove",this.getDragEventData()),this.calculateDragIntersect()}dragEnd(t){this.emitter.emit("dragEnd",this.getDragEventData()),this.dragEntityMargin=void 0,this.dragEntity=void 0,this.dragEntityId=void 0,this.dragOrigin=void 0,this.dragOriginHitbox=void 0,this.dragPosition=void 0,this.scrollIntersection=void 0,this.primaryIntersection=void 0}dragEndHTML(t,r,n,i){this.isHTMLDragging=!1,i||(this.dragEntity=Tu(t.pageX,t.pageY,n,r,t.view),this.emitter.emit("dragEnd",this.getDragEventData())),this.dragEntityMargin=void 0,this.dragEntity=void 0,this.dragEntityId=void 0,this.dragOrigin=void 0,this.dragOriginHitbox=void 0,this.dragPosition=void 0,this.scrollIntersection=void 0,this.primaryIntersection=void 0,i&&this.emitter.emit("dragEnd",this.getDragEventData())}onHTMLDragLeave(t){this.win.clearTimeout(this.dragOverTimeout),this.dragOverTimeout=this.win.setTimeout(t,351)}calculateDragIntersect(){if(!this.dragEntity||!this.dragPosition||!this.dragOrigin||!this.dragOriginHitbox)return;let{type:t,win:r}=this.dragEntity.getData(),n=[],i=[],a=[],o=[];if(this.hitboxEntities.forEach(l=>{let c=l.getData();r===c.win&&c.accepts.includes(t)&&(n.push(l),i.push(l.getHitbox()))}),this.scrollEntities.forEach(l=>{let c=l.getData();r===c.win&&c.accepts.includes(t)&&(a.push(l),o.push(l.getHitbox()))}),n.length===0&&a.length===0)return;let s=Ap(this.dragOriginHitbox,this.dragOrigin,this.dragPosition);this.handleScrollIntersect(s,this.dragEntity.entityId,o,a)||this.handleHitboxIntersect(s,this.dragEntity.entityId,i,n)}handleScrollIntersect(t,r,n,i){let a=(0,Du.default)([t],n).map(s=>i[s[1]]),o=Mp(a,t,r);if(this.scrollIntersection&&(!o||o[0]!==this.scrollIntersection[0])){let[s,u]=this.scrollIntersection,l=s.getData(),c=s.entityId,d=l.side;this.emitter.emit("endDragScroll",{...this.getDragEventData(),scrollEntity:s,scrollEntityId:c,scrollEntitySide:d,scrollStrength:u},c),this.scrollIntersection=void 0}if(o&&(!this.scrollIntersection||this.scrollIntersection[0]!==o[0])){let[s,u]=o,l=s.getData(),c=s.entityId,d=l.side;this.emitter.emit("beginDragScroll",{...this.getDragEventData(),scrollEntity:s,scrollEntityId:c,scrollEntitySide:d,scrollStrength:u},c),this.scrollIntersection=o}else if(o&&this.scrollIntersection&&o[0]===this.scrollIntersection[0]){let[s,u]=o,l=s.getData(),c=s.entityId,d=l.side;this.emitter.emit("updateDragScroll",{...this.getDragEventData(),scrollEntity:s,scrollEntityId:c,scrollEntitySide:d,scrollStrength:u},c),this.scrollIntersection=o}return!!o}handleHitboxIntersect(t,r,n,i){let a=(0,Du.default)([t],n).map(s=>i[s[1]]),o=Bl(a,t,r);this.primaryIntersection&&this.primaryIntersection!==o&&(this.emitter.emit("dragLeave",this.getDragEventData(),this.primaryIntersection.entityId),this.primaryIntersection=void 0),o&&this.primaryIntersection!==o&&(this.emitter.emit("dragEnter",{...this.getDragEventData(),primaryIntersection:o},o.entityId),this.primaryIntersection=o)}},Ci=e=>{e.preventDefault(),e.stopPropagation()};function Ti(e,t){let r=F.useContext(kt);F.useEffect(()=>{let n=e.current,i=t.current;if(!r||!n||!i)return;let a=s=>{if(s.defaultPrevented||s.target.dataset.ignoreDrag||s.button!==0&&s.buttons!==1)return;let u=s.view,l=["pen","touch"].includes(s.pointerType);l||(s.stopPropagation(),s.preventDefault());let c=s,d={x:s.pageX,y:s.pageY},f=!1,p=0;l&&(u.addEventListener("contextmenu",Ci,!0),p=u.setTimeout(()=>{r.dragManager.dragStart(c,n),f=!0,u.addEventListener("touchmove",Ci,{passive:!1})},500));let m=ss(u,b=>{l?f?r.dragManager.dragMove(b):ci(d,{x:b.pageX,y:b.pageY})>5&&(u.clearTimeout(p),u.removeEventListener("touchmove",Ci),u.removeEventListener("contextmenu",Ci,!0),u.removeEventListener("pointermove",m),u.removeEventListener("pointerup",y),u.removeEventListener("pointercancel",y)):f?r.dragManager.dragMove(b):ci(d,{x:b.pageX,y:b.pageY})>5&&(r.dragManager.dragStart(c,n),f=!0)}),y=b=>{u.clearTimeout(p),f=!1,r.dragManager.dragEnd(b),u.removeEventListener("pointermove",m),u.removeEventListener("pointerup",y),u.removeEventListener("pointercancel",y),l&&(u.removeEventListener("contextmenu",Ci,!0),u.removeEventListener("touchmove",Ci))};u.addEventListener("pointermove",m),u.addEventListener("pointerup",y),u.addEventListener("pointercancel",y)},o=s=>{s.stopPropagation()};return i.addEventListener("pointerdown",a),i.addEventListener("touchstart",o),()=>{i.removeEventListener("pointerdown",a),i.removeEventListener("touchstart",o)}},[e,t,r])}function iv(e){let t=F.useContext(kt),r=F.useCallback(i=>{t.dragManager.isHTMLDragging?(i.preventDefault(),t.dragManager.dragMoveHTML(i)):t.dragManager.dragStartHTML(i,e.getAView().id),t.dragManager.onHTMLDragLeave(()=>{t.dragManager.dragEndHTML(i,e.getAView().id,[],!0)})},[t,e]),n=F.useCallback(async i=>{t.dragManager.dragEndHTML(i,e.getAView().id,await os(e,i,activeWindow),!1)},[t,e]);return{onDragOver:r,onDrop:n}}h();var ov=ge(xt());h();var av=ge(require("obsidian"));function Kt({name:e,className:t}){return g("span",{"data-icon":e,className:`${$("icon")} ${t||""}`,ref:r=>{r&&(0,av.setIcon)(r,e)}})}var sv=F.memo(function({shouldMarkItemsComplete:t,path:r,item:n,stateManager:i,boardModifiers:a}){let o=i.useSetting("show-checkboxes"),[s,u]=F.useState(!1),[l,c]=F.useState(!1);return F.useEffect(()=>{if(l){let d=f=>{f.metaKey||f.ctrlKey?u(!0):u(!1)};return window.addEventListener("keydown",d),window.addEventListener("keyup",d),()=>{window.removeEventListener("keydown",d),window.removeEventListener("keyup",d)}}},[l]),t||o?g("div",{onMouseEnter:d=>{c(!0),(d.ctrlKey||d.metaKey)&&u(!0)},onMouseLeave:()=>{c(!1),s&&u(!1)},className:$("item-prefix-button-wrapper")},o&&!s&&g("input",{onChange:()=>{a.updateItem(r,(0,ov.default)(n,{data:{$toggle:["isComplete"]}}))},type:"checkbox",className:"task-list-item-checkbox",checked:!!n.data.isComplete}),(s||!o&&t)&&g("button",{onClick:()=>{a.archiveItem(r)},className:$("item-prefix-button"),"aria-label":s?void 0:"Archive card"},g(Kt,{name:"sheets-in-box"}))):null});h();var $y=ge(require("obsidian"));h();var cv=ge(require("obsidian"));h();var Iu;function lv(e){if(e.nodeName!=="TEXTAREA")return!1;if(typeof Iu=="undefined"){let t=e.doc.createElement("textarea");t.value=1,Iu=!!t.firstChild}return Iu}function _a(e,t){var i;e.focus();let r=e.doc;if(!r.execCommand("insertText",!1,t)){let a=e.selectionStart,o=e.selectionEnd;if(typeof e.setRangeText=="function")e.setRangeText(t);else{let u=r.createRange(),l=r.createTextNode(t);if(lv(e)){let c=e.firstChild;if(!c)e.appendChild(l);else{let d=0,f=null,p=null;for(;c&&(f===null||p===null);){let m=((i=c.nodeValue)==null?void 0:i.length)||0;a>=d&&a<=d+m&&u.setStart(f=c,a-d),o>=d&&o<=d+m&&u.setEnd(p=c,o-d),d+=m,c=c.nextSibling}a!==o&&u.deleteContents()}}if(lv(e)&&u.commonAncestorContainer.nodeName==="#text")u.insertNode(l);else{let c=e.value;e.value=c.slice(0,a)+t+c.slice(o)}}e.setSelectionRange(a+t.length,a+t.length);let s=r.createEvent("UIEvent");s.initEvent("input",!0,!1),e.dispatchEvent(s)}}var Au=e=>e.charCodeAt(0)===10,uv=e=>e===" "||Au(e);function uS(e,t,r){if(!e)throw Error("Argument 'text' should be truthy");let n=0,i=e.length;for(let a=t;a-1>-1;a--)if(Au(e[a-1])){n=a;break}for(let a=r===void 0?t:r;a-1;a--)if(uv(e[a-1])){n=a;break}for(let a=r===void 0?t:r;a0&&e.value[a.selection.start-1]!==" ")return!1;if(a.selection.end===a.selection.start){let s=At(e,`${r}`);return Lt(e,{start:s.selection.end-1-a.selectedText.length,end:s.selection.end-1}),!1}let o=At(e,`${t}${a.selectedText}${r}`);return Lt(e,{start:o.selection.end-1-a.selectedText.length,end:o.selection.end-1}),!0}function ps(e,t,r,n){let i=On(e),a=Di({text:i.text,selection:i.selection}),o=Lt(e,a),s=t.test(o.selectedText)?n(o.selectedText):r(o.selectedText),u=At(e,s);Lt(e,{start:o.selection.start,end:u.selection.end})}function hs(e,t){var r;if(t.types.includes("text/uri-list")||["file","files","link","folder"].includes((r=e.app.dragManager.draggable)==null?void 0:r.type))return"link";if(t.types.includes("text/html")||t.types.includes("text/plain"))return"copy"}async function ms(e,t,r){let n=e.clipboardData.getData("text/html"),i=e.clipboardData.types.includes("Files"),a=cv.Platform.isDesktopApp?Cu(r):null,o=n||i||(a==null?void 0:a.length)>0;o&&e.preventDefault();try{let s=await os(t,e,r);if(o){let u=e.target,l=s.join(` -`);At(u,l)}}catch(s){console.error(s),t.setError(s)}}h();var od=ge(require("obsidian"));h();h();var dv={};h();var fv={};h();var pv={};h();var hv={"Open as kanban board":"\xD6ffne als Kanban-Board","Create new board":"Erstelle ein neues Board","Archive completed cards in active board":"Archiviere fertiggestellte Karten im aktiven Board","Error: current file is not a Kanban board":"Fehler: Momentan ge\xF6ffnete Datei ist kein Kanban-Board","Convert empty note to Kanban":"Konvertiere leere Notiz in ein Kanban-Board","Error: cannot create Kanban, the current note is not empty":"Fehler: Kanban konnte nicht erstellt werden, momentan ge\xF6ffnete Datei ist nicht leer","New kanban board":"Neues Kanban-Board","Untitled Kanban":"Unbenanntes Kanban","Toggle between Kanban and markdown mode":"Wechsle zwischen Kanban und Markdown Modus","Open as markdown":"\xD6ffne als Markdown","Open board settings":"\xD6ffne Board-Einstellungen","Archive completed cards":"Archiviere fertiggestellte Karten","Something went wrong":"Etwas ist schief gelaufen","You may wish to open as markdown and inspect or edit the file.":"Du kannst die Datei im Markdown Modus \xF6ffnen und \xFCberpr\xFCfen oder bearbeiten.","Are you sure you want to archive all completed cards on this board?":"Bist du dir sicher, dass du alle fertiggestellten Karten des Boards archivieren m\xF6chtest?",Complete:"Fertiggestellt",Archive:"Archiv","Invalid Kanban file: problems parsing frontmatter":"Fehlerhafte Kanban Datei: Probleme beim Parsen des Frontmatters","I don't know how to interpret this line:":"Ich wei\xDF nicht, wie ich diese Zeile interpretieren soll:",Untitled:"Unbenannt","Note: No template plugins are currently enabled.":"Beachte: Keine Template-Plugins sind derzeit aktiviert.",default:"Standard","Search...":"Suche...","These settings will take precedence over the default Kanban board settings.":"Diese Einstellung wird Vorrang vor der standard Kanban-Board Einstellung haben. ","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"Stelle standard Kanban-Board Einstellungen ein. Einstellungen k\xF6nnen auf einer Board-f\xFCr-Board Basis \xFCberschrieben werden.","Note template":"Notiz Vorlage","This template will be used when creating new notes from Kanban cards.":"Diese Vorlage wird beim Erstellen neuer Notizen aus Kanban-Karten verwendet.","No template":"Keine Vorlage","Note folder":"Notiz Ordner","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"Notizen, welche aus einer Kanban-Karte erstellt wurden, werden in diesem Ordner platziert. Falls leer, werden die Einstellungen des Vaults verwendet.","Default folder":"Standard Ordner","Lane width":"Schienen Breite","Enter a number to set the lane width in pixels.":"Gebe ein Zahl ein, um die Schienen Breite in Pixeln einzustellen.","Maximum number of archived cards":"Maximale Anzahl archivierter Karten.","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"Archivierte Karten k\xF6nnen im Markdown-Modus betrachtet werden. Diese Einstellung wird alte Karten l\xF6schen, sobald das Limit erreicht wird. Eine Einstellung von -1 setzt das Archiv auf eine unendliche Gr\xF6\xDFe.","Display card checkbox":"Zeige Karten Checkbox","When toggled, a checkbox will be displayed with each card":"Wenn aktiviert, wird eine Checkbox mit jeder Karte angezeigt.","Reset to default":"Zur\xFCcksetzen","Date & Time":"Datum & Uhrzeit","Date trigger":"Datums Ausl\xF6ser","When this is typed, it will trigger the date selector":"Wenn dies eingegeben wird, dann wird die Datumsauswahl angezeigt","Time trigger":"Uhrzeit Ausl\xF6ser","When this is typed, it will trigger the time selector":"Wenn dies eingegeben wird, dann wird die Uhrzeitsauswahl angezeigt","Date format":"Format des Datums","This format will be used when saving dates in markdown.":"Dieses Format wird verwendet, wenn ein Datum in Markdown gespeichert wird.","For more syntax, refer to":"F\xFCr mehr Syntax Informationen siehe","format reference":"Formatvorlage","Your current syntax looks like this":"Dein momentanes Format sieht so aus","Time format":"Format der Uhrzeit","Date display format":"Format der Datums Anzeige","This format will be used when displaying dates in Kanban cards.":"Dieses Format wird verwendet, wenn ein Datum in einer Kanban-Karte angezeigt wird.","Show relative date":"Zeige relatives Datum","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"Wenn aktiviert, wird die Zeitspanne zwischen Heute und dem Datum angezeigt. Zum Beispiel: 'In 3 Tagen', 'Vor einem Monat'","Hide card display dates":"Verstecke Karten Datum","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"Wenn aktiviert, werden formatierte Daten nicht auf der Karte angezeigt. Relative Daten werden dennoch angezeigt, solange sie aktiviert sind.","Hide dates in card titles":"Verstecke Daten im Titel der Karte","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"Wenn aktiviert, werden Daten nicht im Titel der Karte angezeigt. Dies verhindert, dass Daten im Titel neu erstellter Notizen vorhanden sind.","Link dates to daily notes":"Verbinde Daten zu Daily Notes","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"Wenn aktiviert, werden Daten mit Daily Notes verbunden. Zum Beispiel [[26.4.2021]]","Add date and time to archived cards":"F\xFCge Datum und Uhrzeit zu archivierten Notizen hinzu","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"Wenn aktiviert, wird das momentane Datum und die momentane Zeit am Anfang einer Karte hinzugef\xFCgt, wenn sie archiviert wird. Zum Beispiel: - [ ] 14.05.2021 10:00 Mein Karten Titel","Archive date/time separator":"Datum/Uhrzeit Trenner f\xFCr das Archiv","This will be used to separate the archived date/time from the title":"Dies wird verwendet, um das Datum und die Uhrzeit archivierter Karten vom Titel zu trennen","Archive date/time format":"Format des Datums und der Uhrzeit f\xFCr das Archiv","Kanban Plugin":"Kanban Erweiterung","New line trigger":"Taste f\xFCr neue Zeile","Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lanes.":"W\xE4hle aus ob Enter oder Umschalttaste+Enter eine neue Zeile erstellen soll. Das Gegenteil kannst du verwenden um die Karte zu erstellen oder das bearbeiten der Karte oder Schiene zu beenden.","Shift + Enter":"Umschalttaste + Enter",Enter:"Enter","Prepend / append new cards":"Neue Karten voranf\xFCgen / anh\xE4ngen","This setting controls whether new cards are added to the beginning or end of the list.":"Diese Einstellung gibt an ob neue Karten am Anfang oder am Ende einer Liste hinzugef\xFCgt werden.",Prepend:"Voranf\xFCgen",Append:"Anh\xE4ngen","Hide tags in card titles":"Ausblenden von Tags in Kartentiteln","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"Ist diese Einstellung an, so werden Tags im Kartentitel nicht angezeigt. Dadurch wird verhindert, dass Tags beim Erstellen neuer Notizen in den Titel aufgenommen werden.","Hide card display tags":"Ausblenden von Kartenanzeige-Tags","When toggled, tags will not be displayed below the card title.":"Ist diese Einstellung an, werden Tags nicht unter dem Kartentitel angezeigt.","Linked Page Metadata":"Metadaten f\xFCr verkn\xFCpfte (verlinkte) Notizen","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"Zeigen Sie Metadaten f\xFCr die erste Notiz an, die innerhalb einer Karte verkn\xFCpft ist. Geben Sie an, welche Metadatenschl\xFCssel unten angezeigt werden sollen. Ein optionales Label kann hinzugef\xFCgt werden, es kann aber auch vollst\xE4ndig ausgeblendet werden.","Metadata key":"Metadatenschl\xFCssel","Display label":"Anzeigelabel","Hide label":"Label ausblenden","Drag to rearrange":"Zum Neuanordnen ziehen",Delete:"L\xF6schen","Add key":"Schl\xFCssel hinzuf\xFCgen","Field contains markdown":"Feld beinhaltet Markdown","More options":"Mehr optionen",Cancel:"Abbrechen",today:"heute",yesterday:"gestern",tomorrow:"morgen","Change date":"Ver\xE4ndere Datum","Change time":"Ver\xE4ndere Uhrzeit","Card title...":"Karten Titel...","Add card":"Karte hinzuf\xFCgen","Add a card":"F\xFCge eine Karte hinzu","Edit card":"Karte editieren","New note from card":"Neue Notiz aus Karte erstellen","Archive card":"Karte archivieren","Delete card":"Karte l\xF6schen","Edit date":"Datum editieren","Add date":"Datum hinzuf\xFCgen","Remove date":"Datum entfernen","Edit time":"Karte editieren","Add time":"Uhrzeit hinzuf\xFCgen","Remove time":"Uhrzeit entfernen","Duplicate card":"Karte duplizieren","Enter list title...":"Listen Titel eingeben..","Mark cards in this list as complete":"Markiere Karten in dieser Liste als fertiggestellt","Add list":"Liste hinzuf\xFCgen","Add a list":"F\xFCge eine Liste hinzu","Move list":"Liste verschieben",Close:"Schlie\xDFen","Are you sure you want to delete this list and all its cards?":"Bist du dir sicher, dass du diese Liste und alle ihre Karten l\xF6schen m\xF6chtest?","Yes, delete list":"Ja, l\xF6sche diese Liste","Are you sure you want to archive this list and all its cards?":"Bist du dir sicher, dass du diese Liste und alle ihre Karten archivieren m\xF6chtest?","Yes, archive list":"Ja, archiviere diese Liste","Are you sure you want to archive all cards in this list?":"Bist du dir sicher, dass du alle Karten in dieser Liste archivieren m\xF6chtest?","Yes, archive cards":"Ja, archiviere Karten","Edit list":"Editiere Liste","Archive cards":"Archiviere Karten","Archive list":"Archiviere List","Delete list":"L\xF6sche Liste"};h();var Lu={"Open as kanban board":"Open as kanban board","Create new board":"Create new board","Archive completed cards in active board":"Archive completed cards in active board","Error: current file is not a Kanban board":"Error: current file is not a Kanban board","Convert empty note to Kanban":"Convert empty note to Kanban","Error: cannot create Kanban, the current note is not empty":"Error: cannot create Kanban, the current note is not empty","New kanban board":"New kanban board","Untitled Kanban":"Untitled Kanban","Toggle between Kanban and markdown mode":"Toggle between Kanban and markdown mode","Open as markdown":"Open as markdown","Open board settings":"Open board settings","Archive completed cards":"Archive completed cards","Something went wrong":"Something went wrong","You may wish to open as markdown and inspect or edit the file.":"You may wish to open as markdown and inspect or edit the file.","Are you sure you want to archive all completed cards on this board?":"Are you sure you want to archive all completed cards on this board?",Complete:"Complete",Archive:"Archive","Invalid Kanban file: problems parsing frontmatter":"Invalid Kanban file: problems parsing frontmatter","I don't know how to interpret this line:":"I don't know how to interpret this line:",Untitled:"Untitled","Note: No template plugins are currently enabled.":"Note: No template plugins are currently enabled.",default:"default","Search...":"Search...","New line trigger":"New line trigger","Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lists.":"Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lists.","Shift + Enter":"Shift + Enter",Enter:"Enter","Prepend / append new cards":"Prepend / append new cards","This setting controls whether new cards are added to the beginning or end of the list.":"This setting controls whether new cards are added to the beginning or end of the list.",Prepend:"Prepend","Prepend (compact)":"Prepend (compact)",Append:"Append","These settings will take precedence over the default Kanban board settings.":"These settings will take precedence over the default Kanban board settings.","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.","Note template":"Note template","This template will be used when creating new notes from Kanban cards.":"This template will be used when creating new notes from Kanban cards.","No template":"No template","Note folder":"Note folder","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.","Default folder":"Default folder","List width":"List width","Enter a number to set the list width in pixels.":"Enter a number to set the list width in pixels.","Maximum number of archived cards":"Maximum number of archived cards","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.","Display card checkbox":"Display card checkbox","When toggled, a checkbox will be displayed with each card":"When toggled, a checkbox will be displayed with each card","Reset to default":"Reset to default","Date & Time":"Date & Time","Date trigger":"Date trigger","When this is typed, it will trigger the date selector":"When this is typed, it will trigger the date selector","Time trigger":"Time trigger","When this is typed, it will trigger the time selector":"When this is typed, it will trigger the time selector","Date format":"Date format","This format will be used when saving dates in markdown.":"This format will be used when saving dates in markdown.","For more syntax, refer to":"For more syntax, refer to","format reference":"format reference","Your current syntax looks like this":"Your current syntax looks like this","Time format":"Time format","Date display format":"Date display format","This format will be used when displaying dates in Kanban cards.":"This format will be used when displaying dates in Kanban cards.","Show relative date":"Show relative date","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'","Hide card display dates":"Hide card display dates","Hide card counts in list titles":"Hide card counts in list titles","When toggled, card counts are hidden from the list title":"When toggled, card counts are hidden from the list title","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.","Hide dates in card titles":"Hide dates in card titles","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.","Link dates to daily notes":"Link dates to daily notes","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"When toggled, dates will link to daily notes. Eg. [[2021-04-26]]","Add date and time to archived cards":"Add date and time to archived cards","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title","Archive date/time separator":"Archive date/time separator","This will be used to separate the archived date/time from the title":"This will be used to separate the archived date/time from the title","Archive date/time format":"Archive date/time format","Kanban Plugin":"Kanban Plugin","Hide tags in card titles":"Hide tags in card titles","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.","Hide card display tags":"Hide card display tags","When toggled, tags will not be displayed below the card title.":"When toggled, tags will not be displayed below the card title.","Display tag colors":"Display tag colors","Set colors for the tags displayed below the card title.":"Set colors for the tags displayed below the card title.","Linked Page Metadata":"Linked Page Metadata","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.","Board Header Buttons":"Board Header Buttons","Calendar: first day of week":"Calendar: first day of week","Override which day is used as the start of the week":"Override which day is used as the start of the week",Sunday:"Sunday",Monday:"Monday",Tuesday:"Tuesday",Wednesday:"Wednesday",Thursday:"Thursday",Friday:"Friday",Saturday:"Saturday","Background color":"Background color",Tag:"Tag","Text color":"Text color","Metadata key":"Metadata key","Display label":"Display label","Hide label":"Hide label","Drag to rearrange":"Drag to rearrange",Delete:"Delete","Add key":"Add key","Field contains markdown":"Field contains markdown","Add tag color":"Add tag color","More options":"More options",Cancel:"Cancel",today:"today",yesterday:"yesterday",tomorrow:"tomorrow","Change date":"Change date","Change time":"Change time","Card title...":"Card title...","Add card":"Add card","Add a card":"Add a card","Edit card":"Edit card","New note from card":"New note from card","Archive card":"Archive card","Delete card":"Delete card","Edit date":"Edit date","Add date":"Add date","Remove date":"Remove date","Edit time":"Edit time","Add time":"Add time","Remove time":"Remove time","Duplicate card":"Duplicate card","Split card":"Split card","Copy link to card":"Copy link to card","Insert card before":"Insert card before","Insert card after":"Insert card after","Add label":"Add label","Enter list title...":"Enter list title...","Mark cards in this list as complete":"Mark cards in this list as complete","Add list":"Add list","Add a list":"Add a list","Move list":"Move list",Close:"Close","Are you sure you want to delete this list and all its cards?":"Are you sure you want to delete this list and all its cards?","Yes, delete list":"Yes, delete list","Are you sure you want to archive this list and all its cards?":"Are you sure you want to archive this list and all its cards?","Yes, archive list":"Yes, archive list","Are you sure you want to archive all cards in this list?":"Are you sure you want to archive all cards in this list?","Yes, archive cards":"Yes, archive cards","Edit list":"Edit list","Archive cards":"Archive cards","Archive list":"Archive list","Delete list":"Delete list","Insert list before":"Insert list before","Insert list after":"Insert list after","Sort by card text":"Sort by card text","Sort by date":"Sort by date","Unable to find":"Unable to find","Open in default app":"Open in default app",Submit:"Submit"};h();var mv={};h();var gv={};h();var vv={};h();var yv={};h();var bv={"Open as kanban board":"Apri come bacheca Kanban","Create new board":"Crea nuova bacheca","Archive completed cards in active board":"Archivia schede completate nella bacheca attiva","Error: current file is not a Kanban board":"Errore: il file corrente non \xE8 una bacheca Kanban","Convert empty note to Kanban":"Converti nota vuota in Kanban","Error: cannot create Kanban, the current note is not empty":"Errore: Impossibile creare Kanban, la nota corrente non \xE8 vuota","New kanban board":"Nuova bacheca Kanban","Untitled Kanban":"Kanban senza titolo","Open as markdown":"Apri come markdown","Open board settings":"Apri impostazioni bacheca","Archive completed cards":"Archivia schede completate",Complete:"Completato",Archive:"Archivio","Note: No template plugins are currently enabled.":"Nota: Nessun plugin dei modelli attualmente abilitato.",default:"predefinito","Search...":"Ricerca...","These settings will take precedence over the default Kanban board settings.":"Queste impostazioni avranno la precedenza sulle impostazioni predefinite della bacheca Kanban.","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"Impostazioni predefinite della bacheca Kanban. Le impostazioni possono essere sovrascritte per ogni bacheca.","Note template":"Nota modello","This template will be used when creating new notes from Kanban cards.":"Questo modello verr\xE0 utilizzato durante la creazione di nuove note dalle schede Kanban.","No template":"Nessun modello","Note folder":"Cartella delle note","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"Le note create dalle schede Kanban verranno inserite in questa cartella. Se vuota, verranno inserite nella posizione predefinita del vault.","Default folder":"Cartella predefinita","Lane width":"Larghezza colonna","Enter a number to set the lane width in pixels.":"Inserire un numero per impostare la larghezza della colonna in pixel.","Maximum number of archived cards":"Numero massimo di schede archiviate","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"Le schede archiviate possono essere visualizzate in modalit\xE0 Markdown. Le vecchie schede verranno rimosse una volta raggiunto il limite. Impostando il valore -1 il numero di schede archiviate sar\xE0 illimitato.","Display card checkbox":"Mostra casella di controllo","When toggled, a checkbox will be displayed with each card":"Se attiva, verr\xE0 visualizzata una casella di controllo per ogni scheda","Reset to default":"Ripristina predefiniti","Date & Time":"Data e ora","Date trigger":"Selettore data","When this is typed, it will trigger the date selector":"Digitando questo, verr\xE0 attivato il selettore della data","Time trigger":"Selettore ora","When this is typed, it will trigger the time selector":"Digitando questo, verr\xE0 attivato il selettore dell'ora","Date format":"Formato data","This format will be used when saving dates in markdown.":"Formato utilizzato per il salvataggio delle date in Markdown.","For more syntax, refer to":"Per maggiori informazioni, vedere","format reference":"formato di riferimento","Your current syntax looks like this":"Formato corrente","Time format":"Formato ora","Date display format":"Formato visualizzazione data","This format will be used when displaying dates in Kanban cards.":"Formato utilizzato per visualizzare le date nelle schede Kanban.","Show relative date":"Mostra data relativa","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"Se attiva, le schede indicheranno la distanza tra la data odierna e la data della scheda. eg. 'Tra 3 giorni', 'Un mese fa'","Hide card display dates":"Hide card display dates","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"Se attiva, la data non verr\xE0 mostrata sulla scheda. Le date relative verranno comunque mostrate se sono state abilitate.","Hide dates in card titles":"Nascondi date nei titoli delle schede","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"Se attiva, la data non verr\xE0 mostrata nei titoli delle schede. Questo impedisce alle date di essere incluse quando vengono create nuove note.","Link dates to daily notes":"Collega date alle Note del giorno","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"Se attiva, le date verranno collegate alle Note del giorno. Eg. [[2021-04-26]]","Add date and time to archived cards":"Aggiungi data e ora alle schede archiviate","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"Se attiva, la data e l'ora corrente verranno aggiunte all'inizio della scheda quando viene archiviata. Eg. - [ ] 2021-05-14 10:00am Mia scheda","Archive date/time separator":"Separatore data/ora dell'archivio","This will be used to separate the archived date/time from the title":"Verr\xE0 usato per separare data e ora dell'archiviazione dal titolo","Archive date/time format":"Formato data/ora dell'archivio","Kanban Plugin":"Plugin Kanban","More options":"Altre opzioni",Cancel:"Annulla",today:"oggi",yesterday:"ieri",tomorrow:"domani","Change date":"Modifica data","Change time":"Modifica ora","Card title...":"Titolo elemento...","Add card":"Aggiungi elemento","Add a card":"Aggiungi un'altra scheda","Edit card":"Modifica scheda","New note from card":"Nuova nota da scheda","Archive card":"Archivia scheda","Delete card":"Elimina scheda","Edit date":"Modifica data","Add date":"Aggiungi data","Remove date":"Rimuovi data","Edit time":"Modifica ora","Add time":"Aggiungi ora","Remove time":"Rimuovi ora","Enter list title...":"Inserisci titolo lista...","Mark cards in this list as complete":"Segna elementi della lista come completati","Add list":"Aggiungi lista","Add a list":"Aggiungi un'altra lista","Move list":"Sposta lista",Close:"Chiudi","Are you sure you want to delete this list and all its cards?":"Cancellare questa lista e tutte le sue schede?","Yes, delete list":"Cancella lista","Are you sure you want to archive this list and all its cards?":"Archiviare questa lista e tutte le sue schede?","Yes, archive list":"Archivia lista","Are you sure you want to archive all cards in this list?":"Archiviare tutte le schede in questa lista?","Yes, archive cards":"Archivia schede","Edit list":"Modifica lista","Archive cards":"Archivia schede","Archive list":"Archivia lista","Delete list":"Cancella lista"};h();var wv={"Open as kanban board":"\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u3068\u3057\u3066\u958B\u304F","Create new board":"\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u3092\u65B0\u898F\u4F5C\u6210","Archive completed cards in active board":"\u30A2\u30AF\u30C6\u30A3\u30D6\u30DC\u30FC\u30C9\u306E\u5B8C\u4E86\u3057\u305F\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Error: current file is not a Kanban board":"\u30A8\u30E9\u30FC: \u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093","Convert empty note to Kanban":"\u7A7A\u306E\u30CE\u30FC\u30C8\u3092\u30AB\u30F3\u30D0\u30F3\u306B\u5909\u63DB","Error: cannot create Kanban, the current note is not empty":"\u30A8\u30E9\u30FC: \u73FE\u5728\u958B\u3044\u3066\u3044\u308B\u30CE\u30FC\u30C8\u306F\u7A7A\u3067\u3042\u308A\u3001\u30AB\u30F3\u30D0\u30F3\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093","New kanban board":"\u65B0\u898F\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9","Untitled Kanban":"\u7121\u984C\u306E\u30AB\u30F3\u30D0\u30F3","Toggle between Kanban and markdown mode":"\u30AB\u30F3\u30D0\u30F3\u3068\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u306E\u30E2\u30FC\u30C9\u3092\u5207\u308A\u66FF\u3048\u308B","Open as markdown":"\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u3068\u3057\u3066\u958B\u304F","Open board settings":"\u30DC\u30FC\u30C9\u8A2D\u5B9A\u3092\u958B\u304F","Archive completed cards":"\u5B8C\u4E86\u3057\u305F\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Something went wrong":"\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F","You may wish to open as markdown and inspect or edit the file.":"\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u3068\u3057\u3066\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u3044\u3066\u8ABF\u67FB\u3059\u308B\u304B\u7DE8\u96C6\u3059\u308B\u3053\u3068\u3092\u304A\u3059\u3059\u3081\u3057\u307E\u3059\u3002","Are you sure you want to archive all completed cards on this board?":"\u3053\u306E\u30DC\u30FC\u30C9\u306B\u542B\u307E\u308C\u308B\u3059\u3079\u3066\u306E\u5B8C\u4E86\u3057\u305F\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059\u304B\uFF1F",Complete:"\u5B8C\u4E86",Archive:"\u30A2\u30FC\u30AB\u30A4\u30D6","Invalid Kanban file: problems parsing frontmatter":"\u7121\u52B9\u306A\u30AB\u30F3\u30D0\u30F3\u30D5\u30A1\u30A4\u30EB: \u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u306E\u30D1\u30FC\u30B9\u306B\u554F\u984C\u304C\u3042\u308A\u307E\u3059","I don't know how to interpret this line:":"\u3053\u306E\u884C\u3092\u3069\u3046\u89E3\u91C8\u3059\u308C\u3070\u3088\u3044\u304B\u5206\u304B\u308A\u307E\u305B\u3093",Untitled:"\u7121\u984C","Note: No template plugins are currently enabled.":"\u30CE\u30FC\u30C8: \u73FE\u5728\u3001\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u7121\u52B9\u5316\u3055\u308C\u3066\u3044\u307E\u3059",default:"\u30C7\u30D5\u30A9\u30EB\u30C8","Search...":"\u691C\u7D22\u2026","New line trigger":"\u6539\u884C\u30C8\u30EA\u30AC\u30FC","Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lanes.":"\u6539\u884C\u306B\u4F7F\u3046\u30AD\u30FC\u3068\u3057\u3066Enter\u304BShift+Enter\u306E\u3069\u3061\u3089\u3092\u4F7F\u3046\u304B\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u9078\u629E\u3057\u306A\u304B\u3063\u305F\u65B9\u306E\u30AD\u30FC\u306F\u30AB\u30FC\u30C9\u3068\u30EC\u30FC\u30F3\u306E\u4F5C\u6210\u3068\u7DE8\u96C6\u5B8C\u4E86\u306E\u30C8\u30EA\u30AC\u30FC\u3068\u306A\u308A\u307E\u3059\u3002","Shift + Enter":"Shift + Enter",Enter:"Enter","Prepend / append new cards":"\u5148\u982D\u307E\u305F\u306F\u672B\u5C3E\u306B\u65B0\u898F\u30AB\u30FC\u30C9\u3092\u8FFD\u52A0\u3059\u308B","This setting controls whether new cards are added to the beginning or end of the list.":"\u3053\u306E\u8A2D\u5B9A\u306B\u3088\u3063\u3066\u65B0\u898F\u30AB\u30FC\u30C9\u3092\u30EA\u30B9\u30C8\u306E\u5148\u982D\u307E\u305F\u306F\u672B\u5C3E\u306B\u8FFD\u52A0\u3059\u308B\u304B\u3092\u6C7A\u3081\u307E\u3059\u3002",Prepend:"\u5148\u982D\u306B\u8FFD\u52A0","Prepend (compact)":"\u5148\u982D\u306B\u8FFD\u52A0(\u30B3\u30F3\u30D1\u30AF\u30C8)",Append:"\u672B\u5C3E\u306B\u8FFD\u52A0","These settings will take precedence over the default Kanban board settings.":"\u3053\u308C\u3089\u306E\u8A2D\u5B9A\u306F\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30AB\u30F3\u30D0\u30F3\u8A2D\u5B9A\u3088\u308A\u512A\u5148\u3055\u308C\u307E\u3059\u3002","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u8A2D\u5B9A\u3092\u30BB\u30C3\u30C8\u3057\u307E\u3059\u3002\u3053\u306E\u8A2D\u5B9A\u306F\u30DC\u30FC\u30C9\u6BCE\u306B\u4E0A\u66F8\u304D\u3067\u304D\u307E\u3059\u3002","Note template":"\u30CE\u30FC\u30C8\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8","This template will be used when creating new notes from Kanban cards.":"\u3053\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F\u30AB\u30F3\u30D0\u30F3\u30AB\u30FC\u30C9\u304B\u3089\u30CE\u30FC\u30C8\u3092\u65B0\u898F\u4F5C\u6210\u3057\u305F\u969B\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","No template":"\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u3042\u308A\u307E\u305B\u3093","Note folder":"\u30CE\u30FC\u30C8\u30D5\u30A9\u30EB\u30C0","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"\u30AB\u30F3\u30D0\u30F3\u30AB\u30FC\u30C9\u304B\u3089\u4F5C\u6210\u3055\u308C\u305F\u30CE\u30FC\u30C8\u306F\u3053\u306E\u30D5\u30A9\u30EB\u30C0\u5185\u306B\u7F6E\u304B\u308C\u307E\u3059\u3002\u30D6\u30E9\u30F3\u30AF\u306E\u5834\u5408\u306B\u306F\u3001\u3053\u306E\u4FDD\u7BA1\u5EAB\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30ED\u30B1\u30FC\u30B7\u30E7\u30F3\u306B\u7F6E\u304B\u308C\u307E\u3059\u3002","Default folder":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A9\u30EB\u30C0","Lane width":"\u30EC\u30FC\u30F3\u306E\u5E45","Enter a number to set the lane width in pixels.":"\u30EC\u30FC\u30F3\u306E\u5E45\u3092\u30D4\u30AF\u30BB\u30EB\u5358\u4F4D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Maximum number of archived cards":"\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u30AB\u30FC\u30C9\u306E\u6700\u5927\u6570","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u30AB\u30FC\u30C9\u306F\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u30E2\u30FC\u30C9\u3067\u95B2\u89A7\u3067\u304D\u307E\u3059\u3002\u3053\u306E\u8A2D\u5B9A\u306B\u3088\u308A\u6307\u5B9A\u3055\u308C\u305F\u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u9650\u754C\u6570\u307E\u3067\u9054\u3057\u305F\u969B\u306B\u306F\u53E4\u3044\u30AB\u30FC\u30C9\u3092\u524A\u9664\u3057\u307E\u3059\u3002\u3053\u306E\u5024\u3092-1\u306B\u8A2D\u5B9A\u3059\u308B\u3068\u30DC\u30FC\u30C9\u306E\u30A2\u30FC\u30AB\u30A4\u30D6\u9650\u754C\u3092\u7121\u9650\u306B\u3057\u307E\u3059\u3002","Display card checkbox":"\u30AB\u30FC\u30C9\u306E\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u8868\u793A","When toggled, a checkbox will be displayed with each card":"\u6709\u52B9\u5316\u3059\u308B\u3068\u5404\u30AB\u30FC\u30C9\u306E\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","Reset to default":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u30EA\u30BB\u30C3\u30C8","Date & Time":"\u65E5\u4ED8\u3068\u6642\u9593","Date trigger":"\u65E5\u4ED8\u30C8\u30EA\u30AC\u30FC","When this is typed, it will trigger the date selector":"\u3053\u306E\u8A2D\u5B9A\u306B\u5165\u529B\u3055\u308C\u305F\u6587\u5B57\u5217\u3067\u65E5\u4ED8\u30BB\u30EC\u30AF\u30BF\u30FC\u3092\u30C8\u30EA\u30AC\u30FC\u3057\u307E\u3059\u3002","Time trigger":"\u6642\u9593\u30C8\u30EA\u30AC\u30FC","When this is typed, it will trigger the time selector":"\u3053\u306E\u8A2D\u5B9A\u306B\u5165\u529B\u3055\u308C\u305F\u6587\u5B57\u5217\u3067\u6642\u9593\u30BB\u30EC\u30AF\u30BF\u30FC\u3092\u30C8\u30EA\u30AC\u30FC\u3057\u307E\u3059\u3002","Date format":"\u65E5\u4ED8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","This format will be used when saving dates in markdown.":"\u3053\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306F\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u3067\u65E5\u4ED8\u304C\u4FDD\u5B58\u3055\u308C\u308B\u969B\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","For more syntax, refer to":"\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u306B\u3064\u3044\u3066\u306F\u3053\u3061\u3089\u3092\u53C2\u7167:","format reference":"\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9","Your current syntax looks like this":"\u73FE\u5728\u306E\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u306F\u6B21\u306E\u3088\u3046\u306B\u898B\u3048\u307E\u3059","Time format":"\u6642\u9593\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","Date display format":"\u65E5\u4ED8\u8868\u793A\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","This format will be used when displaying dates in Kanban cards.":"\u3053\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306F\u30AB\u30F3\u30D0\u30F3\u30AB\u30FC\u30C9\u5185\u306B\u3066\u65E5\u4ED8\u306E\u8868\u793A\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","Show relative date":"\u76F8\u5BFE\u65E5\u4ED8\u3092\u8868\u793A","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u306E\u65E5\u4ED8\u3068\u4ECA\u65E5\u306E\u9593\u306E\u65E5\u6570\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\u4F8B: '3\u65E5\u5F8C', '1\u30F6\u6708\u524D'","Hide card display dates":"\u30AB\u30FC\u30C9\u306B\u8868\u793A\u3055\u308C\u308B\u65E5\u4ED8\u3092\u96A0\u3059","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u4E0A\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3055\u308C\u305F\u65E5\u4ED8\u304C\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059\u3002\u6709\u52B9\u5316\u3055\u308C\u305F\u5834\u5408\u306B\u306F\u76F8\u5BFE\u65E5\u4ED8\u306F\u8868\u793A\u3055\u308C\u307E\u307E\u3068\u306A\u308A\u307E\u3059\u3002","Hide dates in card titles":"\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306E\u65E5\u4ED8\u3092\u96A0\u3059","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306E\u65E5\u4ED8\u304C\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059\u3002\u3053\u308C\u306F\u65B0\u898F\u30CE\u30FC\u30C8\u3092\u4F5C\u6210\u3057\u305F\u969B\u306B\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306B\u65E5\u4ED8\u304C\u542B\u307E\u308C\u308B\u306E\u3092\u9632\u304E\u307E\u3059\u3002","Link dates to daily notes":"\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306B\u65E5\u4ED8\u3092\u30EA\u30F3\u30AF","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"\u6709\u52B9\u5316\u3059\u308B\u3068\u65E5\u4ED8\u304C\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306B\u30EA\u30F3\u30AF\u3055\u308C\u307E\u3059\u3002 \u4F8B: [[2021-04-26]]","Add date and time to archived cards":"\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u30AB\u30FC\u30C9\u306B\u65E5\u4ED8\u3068\u6642\u9593\u3092\u8FFD\u52A0","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u304C\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u969B\u306B\u73FE\u5728\u306E\u65E5\u4ED8\u3068\u6642\u9593\u304C\u30AB\u30FC\u30C9\u306E\u6700\u521D\u306B\u8FFD\u8A18\u3055\u308C\u308B\u3088\u3046\u306B\u306A\u308A\u307E\u3059\u3002\u4F8B: - [ ] 2021-05-14 10:00am \u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB","Archive date/time separator":"\u65E5\u4ED8\u30FB\u6642\u9593\u30BB\u30D1\u30EC\u30FC\u30BF\u30FC\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","This will be used to separate the archived date/time from the title":"\u3053\u308C\u306F\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u65E5\u4ED8\u30FB\u6642\u9593\u3092\u30BF\u30A4\u30C8\u30EB\u304B\u3089\u5206\u96E2\u3059\u308B\u306E\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","Archive date/time format":"\u65E5\u4ED8\u30FB\u6642\u9593\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Kanban Plugin":"\u30AB\u30F3\u30D0\u30F3\u30D7\u30E9\u30B0\u30A4\u30F3","Hide tags in card titles":"\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u5185\u306E\u30BF\u30B0\u3092\u96A0\u3059","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u5185\u306E\u30BF\u30B0\u304C\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059\u3002\u3053\u308C\u306F\u65B0\u898F\u30CE\u30FC\u30C8\u3092\u4F5C\u6210\u3057\u305F\u969B\u306B\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306B\u30BF\u30B0\u304C\u542B\u307E\u308C\u308B\u306E\u3092\u9632\u304E\u307E\u3059\u3002","Hide card display tags":"\u30AB\u30FC\u30C9\u306B\u8868\u793A\u3055\u308C\u308B\u30BF\u30B0\u3092\u96A0\u3059","When toggled, tags will not be displayed below the card title.":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306E\u4E0B\u306E\u30BF\u30B0\u304C\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059\u3002","Linked Page Metadata":"\u30EA\u30F3\u30AF\u3055\u308C\u305F\u30DA\u30FC\u30B8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"\u30AB\u30FC\u30C9\u5185\u3067\u30EA\u30F3\u30AF\u3055\u308C\u3066\u3044\u308B\u6700\u521D\u306E\u30CE\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u4E0B\u306B\u8868\u793A\u3059\u308B\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u30AD\u30FC\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\u3057\u3066\u30E9\u30D9\u30EB\u306E\u4ED8\u4E0E\u304C\u53EF\u80FD\u3067\u3042\u308A\u3001\u30E9\u30D9\u30EB\u306F\u5B8C\u5168\u306B\u975E\u8868\u793A\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002","Board Header Buttons":"\u30DC\u30FC\u30C9\u306E\u30D8\u30C3\u30C0\u30FC\u30DC\u30BF\u30F3","Calendar: first day of week":"\u30AB\u30EC\u30F3\u30C0\u30FC: \u9031\u306E\u59CB\u307E\u308A","Override which day is used as the start of the week":"\u9031\u306E\u59CB\u307E\u308A\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u66DC\u65E5\u3092\u5909\u66F4\u3057\u307E\u3059\u3002",Sunday:"\u65E5\u66DC\u65E5",Monday:"\u6708\u66DC\u65E5",Tuesday:"\u706B\u66DC\u65E5",Wednesday:"\u6C34\u66DC\u65E5",Thursday:"\u6728\u66DC\u65E5",Friday:"\u91D1\u66DC\u65E5",Saturday:"\u571F\u66DC\u65E5","Metadata key":"\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u30AD\u30FC","Display label":"\u30E9\u30D9\u30EB\u3092\u8868\u793A","Hide label":"\u30E9\u30D9\u30EB\u3092\u96A0\u3059","Drag to rearrange":"\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u4E26\u3079\u66FF\u3048\u308B",Delete:"\u524A\u9664","Add key":"\u30AD\u30FC\u3092\u8FFD\u52A0","Field contains markdown":"\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u3092\u542B\u307F\u307E\u3059","More options":"\u4ED6\u306E\u30AA\u30D7\u30B7\u30E7\u30F3",Cancel:"\u30AD\u30E3\u30F3\u30BB\u30EB",today:"\u4ECA\u65E5",yesterday:"\u6628\u65E5",tomorrow:"\u660E\u65E5","Change date":"\u65E5\u4ED8\u3092\u5909\u66F4","Change time":"\u6642\u9593\u3092\u5909\u66F4","Card title...":"\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u2026","Add card":"\u30AB\u30FC\u30C9\u3092\u8FFD\u52A0","Add a card":"\u30AB\u30FC\u30C9\u3092\u8FFD\u52A0","Edit card":"\u30AB\u30FC\u30C9\u3092\u7DE8\u96C6","New note from card":"\u30AB\u30FC\u30C9\u304B\u3089\u30CE\u30FC\u30C8\u3092\u65B0\u898F\u4F5C\u6210","Archive card":"\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Delete card":"\u30AB\u30FC\u30C9\u3092\u524A\u9664","Edit date":"\u65E5\u4ED8\u3092\u7DE8\u96C6","Add date":"\u65E5\u4ED8\u3092\u8FFD\u52A0","Remove date":"\u65E5\u4ED8\u3092\u524A\u9664","Edit time":"\u6642\u9593\u3092\u7DE8\u96C6","Add time":"\u6642\u9593\u3092\u8FFD\u52A0","Remove time":"\u6642\u9593\u3092\u524A\u9664","Duplicate card":"\u30AB\u30FC\u30C9\u3092\u8907\u88FD","Split card":"\u30AB\u30FC\u30C9\u3092\u5206\u5272","Copy link to card":"\u30AB\u30FC\u30C9\u3078\u306E\u30EA\u30F3\u30AF\u3092\u30B3\u30D4\u30FC","Enter list title...":"\u30EA\u30B9\u30C8\u30BF\u30A4\u30C8\u30EB\u3092\u7DE8\u96C6\u2026","Mark cards in this list as complete":"\u3053\u306E\u30EA\u30B9\u30C8\u306B\u542B\u307E\u308C\u308B\u30AB\u30FC\u30C9\u3092\u5B8C\u4E86\u3068\u3057\u3066\u30DE\u30FC\u30AF\u3059\u308B","Add list":"\u30EA\u30B9\u30C8\u3092\u8FFD\u52A0","Add a list":"\u30EA\u30B9\u30C8\u3092\u8FFD\u52A0","Move list":"\u30EA\u30B9\u30C8\u3092\u79FB\u52D5",Close:"\u9589\u3058\u308B","Are you sure you want to delete this list and all its cards?":"\u3053\u306E\u30EA\u30B9\u30C8\u3068\u542B\u307E\u308C\u308B\u3059\u3079\u3066\u306E\u30AB\u30FC\u30C9\u3092\u524A\u9664\u3057\u307E\u3059\u304B\b\uFF1F","Yes, delete list":"\u306F\u3044\u3001\u30EA\u30B9\u30C8\u3092\u524A\u9664\u3057\u307E\u3059","Are you sure you want to archive this list and all its cards?":"\u3053\u306E\u30EA\u30B9\u30C8\u3068\u542B\u307E\u308C\u308B\u3059\u3079\u3066\u306E\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059\u304B\uFF1F","Yes, archive list":"\u306F\u3044\u3001\u30EA\u30B9\u30C8\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059","Are you sure you want to archive all cards in this list?":"\u3053\u306E\u30EA\u30B9\u30C8\u306B\u542B\u307E\u308C\u308B\u3059\u3079\u3066\u306E\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059\u304B\uFF1F","Yes, archive cards":"\u306F\u3044\u3001\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059","Edit list":"\u30EA\u30B9\u30C8\u3092\u7DE8\u96C6","Archive cards":"\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Archive list":"\u30EA\u30B9\u30C8\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Delete list":"\u30EA\u30B9\u30C8\u3092\u524A\u9664","Unable to find":"\u898B\u3064\u304B\u308A\u307E\u305B\u3093","Open in default app":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30A2\u30D7\u30EA\u3067\u958B\u304F"};h();var Ev={};h();var xv={};h();var kv={};h();var Sv={};h();var _v={};h();var Cv={"Open as Kanban board":"Abrir como quadro Kanban","Create new board":"Criar um novo quadro","Archive completed cards in active board":"Arquivar cart\xF5es conclu\xEDdos no quadro ativo","Error: current file is not a Kanban board":"Erro: o arquivo atual n\xE3o \xE9 um quadro Kanban","Convert empty note to Kanban":"Converter nota vazia em Kanban","Error: cannot create Kanban, the current note is not empty":"Erro: n\xE3o \xE9 poss\xEDvel criar o quadro Kanban, a nota atual n\xE3o est\xE1 vazia","New Kanban board":"Novo quadro Kanban","Untitled Kanban":"Kanban sem t\xEDtulo","Toggle between Kanban and markdown mode":"Alternar entre os modos Kanban e Markdown","Open as markdown":"Abrir como markdown","Open board settings":"Abrir configura\xE7\xF5es do quadro Kanban","Archive completed cards":"Arquivar cart\xF5es conclu\xEDdos",Complete:"Conclu\xEDdo",Archive:"Arquivado","Note: No template plugins are currently enabled.":"Nota: N\xE3o h\xE1 plug-ins de modelo habilitados no momento.",default:"padr\xE3o","Search...":"Pesquisar...","These settings will take precedence over the default Kanban board settings.":"Essas configura\xE7\xF5es sobrescrever\xE3o as configura\xE7\xF5es padr\xE3o do quadro Kanban","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"Defina as configura\xE7\xF5es padr\xE3o do quadro Kanban. Cada quadro Kanban pode ter sua pr\xF3pria configura\xE7\xE3o.","Note template":"Modelo de nota","This template will be used when creating new notes from Kanban cards.":"Este modelo ser\xE1 usado quando uma nova nota Kanban for criada.","No template":"Sem modelo","Note folder":"Pasta de notas","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"As notas criadas pelos links dos cart\xF5es Kanban ser\xE3o colocadas nesta pasta. Se estiver em branco, ser\xE3o colocadas no local configurado como padr\xE3o deste cofre.","Default folder":"Pasta padr\xE3o","Lane width":"Largura das listas","Enter a number to set the lane width in pixels.":"Insira um n\xFAmero para definir a largura das listas em pixels.","Maximum number of archived cards":"Quantidade m\xE1xima de cart\xF5es arquivados","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"Os cart\xF5es arquivados podem ser vistos no modo Markdown. Esta configura\xE7\xE3o excluir\xE1 os cart\xF5es antigos assim que o limite for atingido. Inserir o valor -1 retira o limite para cart\xF5es arquivados.","Display card checkbox":"Exibe uma caixa de sele\xE7\xE3o do cart\xE3o","When toggled, a checkbox will be displayed with each card":"Quando ativada, uma caixa de sele\xE7\xE3o ser\xE1 exibida em cada cart\xE3o.","Reset to default":"Redefinir configura\xE7\xF5es padr\xE3o","Date & Time":"Data e Hora","Date trigger":"Gatilho de data","When this is typed, it will trigger the date selector":"Quando este caractere \xE9 digitado, o seletor de data \xE9 exibido.","Time trigger":"Gatilho de hora","When this is typed, it will trigger the time selector":"Quando este caractere \xE9 digitado, o seletor de hora \xE9 exibido.","Date format":"Formado da data","This format will be used when saving dates in markdown.":"Este formato ser\xE1 usado quando datas forem armazenadas no Markdown.","For more syntax, refer to":"Para mais informa\xE7\xF5es sobre esta sintaxe, consulte os","format reference":"modelos de formato.","Your current syntax looks like this":"Sua atual sintaxe est\xE1 assim","Time format":"Formato da hora","Date display format":"Formato de exibi\xE7\xE3o da data","This format will be used when displaying dates in Kanban cards.":"Este ser\xE1 o formato das datas exibido nos cart\xF5es do Kanban.","Show relative date":"Exibir datas relativas","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"Ao ativar, os cart\xF5es exibir\xE3o o intervalo de tempo entre hoje e a data do cart\xE3o: Ex.: 'Em 3 dias', 'Um m\xEAs atr\xE1s'","Hide card display dates":"Ocultar datas dos cart\xF5es","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"Ao ativar, as datas formatadas n\xE3o ser\xE3o exibidas no cart\xE3o. As datas relativas ainda ser\xE3o exibidas se estiverem ativadas.","Hide dates in card titles":"Ocultar datas dos t\xEDtulos dos cart\xF5es","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"Ao ativar, as datas ser\xE3o t\xEDtulos de cart\xF5es ocultos. Evita que datas sejam inclu\xEDdas no t\xEDtulo ao criar novas notas.","Link dates to daily notes":"Vincular datas a notas di\xE1rias","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"Ao ativar, as datas ser\xE3o vinculadas \xE0s notas di\xE1rias. Ex.: [[2021-04-26]]","Add date and time to archived cards":"Adicionar data e hora aos cart\xF5es arquivados","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"Quando ativada, a data e a hora atuais ser\xE3o adicionadas ao in\xEDcio de um cart\xE3o quando ele for arquivado. Ex.: - [] 2021-05-14 10:00 T\xEDtulo do meu cart\xE3o","Archive date/time separator":"Separador de data/hora do arquivo","This will be used to separate the archived date/time from the title":"Isso ser\xE1 usado para separar a data/hora arquivada do t\xEDtulo.","Archive date/time format":"Formato de data/hora do arquivo","Kanban Plugin":"Plugin Kanban","Hide tags in card titles":"Ocultar \u2018tags\u2019 nos t\xEDtulos dos cart\xF5es","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"Quando ativada, as \u2018tags\u2019 n\xE3o ser\xE3o exibidas nos t\xEDtulos de cartas. Isso impedir\xE1 que as \u2018tags\u2019 sejam inclu\xEDdas no t\xEDtulo ao criar novas notas.","Hide card display tags":"Ocultar \u2018tags\u2019 de exibi\xE7\xE3o de cart\xE3o","When toggled, tags will not be displayed below the card title.":"Quando ativada, as \u2018tags\u2019 n\xE3o ser\xE3o exibidas abaixo do t\xEDtulo do cart\xE3o.","Linked Page Metadata":"Metadados de p\xE1ginas 'lincadas'","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"Exibe metadados para a primeira nota 'lincada' em um cart\xE3o. Especifique abaixo quais metadados ser\xE3o exibidos. Um r\xF3tulo opcional pode ser fornecido e os r\xF3tulos podem ser ocultados completamente.","Metadata key":"Metadado","Display label":"Descri\xE7\xE3o personalizada","Hide label":"Ocultar","Drag to rearrange":"Arraste para reorganizar",Delete:"Excluir","Add key":"Adicionar metadado","More options":"Mais op\xE7\xF5es",Cancel:"Cancelar",today:"hoje",yesterday:"ontem",tomorrow:"amanh\xE3","Change date":"Alterar data","Change time":"Mudar hora","Card title...":"T\xEDtulo do item...","Add card":"Adicionar Item","Add a card":"Adicione um cart\xE3o","Edit card":"Editar cart\xE3o","New note from card":"Nova nota do cart\xE3o","Archive card":"Arquivar cart\xE3o","Delete card":"Excluir cart\xE3o","Edit date":"Editar data","Add date":"Adicionar data","Remove date":"Remover data","Edit time":"Editar hora","Add time":"Adicionar hora","Remove time":"Remover hora","Duplicate card":"Duplicate card","Enter list title...":"Insira o t\xEDtulo da lista...","Mark cards in this list as complete":"Marcar os itens nesta lista como conclu\xEDdos","Add list":"Adicionar lista","Add a list":"Adicionar uma lista","Move list":"Mover lista",Close:"Fechar","Are you sure you want to delete this list and all its cards?":"Tem certeza de que deseja excluir esta lista e todos os seus cart\xF5es?","Yes, delete list":"Sim, excluir esta lista","Are you sure you want to archive this list and all its cards?":"Tem certeza de que deseja arquivar esta lista e todos os seus cart\xF5es?","Yes, archive list":"Sim, arquivar esta lista","Are you sure you want to archive all cards in this list?":"Tem certeza de que deseja arquivar todos os cart\xF5es desta lista?","Yes, archive cards":"Sim, arquivar cart\xF5es","Edit list":"Editar lista","Archive cards":"Arquivar cart\xF5es","Archive list":"Arquivar lista","Delete list":"Excluir lista"};h();var Tv={};h();var Dv={};h();var Mv={};h();var gs={};h();var Iv={"Open as kanban board":"\u6253\u5F00\u4E3A\u770B\u677F","Create new board":"\u521B\u5EFA\u65B0\u770B\u677F","Archive completed cards in active board":"\u5728\u5F53\u524D\u770B\u677F\u4E2D\u5F52\u6863\u5DF2\u5B8C\u6210\u5361\u7247","Error: current file is not a Kanban board":"\u9519\u8BEF\uFF1A\u5F53\u524D\u6587\u4EF6\u4E0D\u662F\u770B\u677F\u6587\u4EF6","Convert empty note to Kanban":"\u8F6C\u6362\u7A7A\u767D\u7B14\u8BB0\u4E3A\u770B\u677F","Error: cannot create Kanban, the current note is not empty":"\u9519\u8BEF\uFF1A\u65E0\u6CD5\u8F6C\u6362\u5F53\u524D\u6587\u4EF6\uFF0C\u5F53\u524D\u7B14\u8BB0\u4E0D\u662F\u7A7A\u767D\u7B14\u8BB0","New kanban board":"\u65B0\u770B\u677F","Untitled Kanban":"\u672A\u547D\u540D\u770B\u677F","Toggle between Kanban and markdown mode":"\u5728\u770B\u677F\u548C Markdown \u6A21\u5F0F\u4E4B\u95F4\u8FDB\u884C\u5207\u6362","Open as markdown":"\u6253\u5F00\u4E3A Markdown \u6587\u4EF6","Open board settings":"\u6253\u5F00\u770B\u677F\u8BBE\u7F6E","Archive completed cards":"\u5F52\u6863\u5DF2\u5B8C\u6210\u5361\u7247","Something went wrong":"\u51FA\u4E86\u70B9\u95EE\u9898","You may wish to open as markdown and inspect or edit the file.":"\u4F60\u53EF\u80FD\u5E0C\u671B\u4EE5 Markdown \u65B9\u5F0F\u6253\u5F00\uFF0C\u5E76\u68C0\u67E5\u6216\u7F16\u8F91\u8BE5\u6587\u4EF6\u3002","Are you sure you want to archive all completed cards on this board?":"\u4F60\u786E\u5B9A\u8981\u5C06\u8FD9\u4E2A\u677F\u5757\u4E0A\u6240\u6709\u5DF2\u5B8C\u6210\u7684\u5361\u7247\u5F52\u6863\u5417\uFF1F",Complete:"\u5B8C\u6210",Archive:"\u5F52\u6863","Invalid Kanban file: problems parsing frontmatter":"\u65E0\u6548\u7684\u770B\u677F\u6587\u4EF6\uFF1A\u89E3\u6790 frontmatter \u65F6\u51FA\u73B0\u95EE\u9898","I don't know how to interpret this line:":"\u6211\u4E0D\u77E5\u9053\u5982\u4F55\u89E3\u8BFB\u8FD9\u53E5\u8BDD\uFF1A",Untitled:"\u672A\u547D\u540D","Note: No template plugins are currently enabled.":"\u6CE8\u610F\uFF1A\u5F53\u524D\u6CA1\u6709\u542F\u7528\u6A21\u677F\u63D2\u4EF6",default:"\u9ED8\u8BA4","Search...":"\u641C\u7D22\u2026\u2026","New line trigger":"\u6362\u884C\u89E6\u53D1\u5668","Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lists.":"\u9009\u62E9 Enter \u6216\u662F Shift+Enter \u6765\u521B\u5EFA\u65B0\u884C, \u672A\u9009\u7528\u7684\u5FEB\u6377\u952E\u5C06\u88AB\u7528\u4E8E\u521B\u5EFA\u5361\u7247\u548C\u5217\uFF0C\u4EE5\u53CA\u5B8C\u6210\u5361\u7247\u3001\u5217\u7684\u7F16\u8F91\u3002","Shift + Enter":"Shift + Enter",Enter:"Enter","Prepend / append new cards":"\u8FFD\u52A0\u65B0\u5361\u7247","This setting controls whether new cards are added to the beginning or end of the list.":"\u8BBE\u7F6E\u65B0\u5361\u7247\u8FFD\u52A0\u5230\u5217\u5934\u90E8\u6216\u5C3E\u90E8\u3002",Prepend:"\u5934\u90E8","Prepend (compact)":"\u5934\u90E8 (\u7D27\u51D1)",Append:"\u5C3E\u90E8","These settings will take precedence over the default Kanban board settings.":"\u5F53\u524D\u770B\u677F\u8BBE\u7F6E\u5C06\u4F1A\u8986\u76D6\u9ED8\u8BA4\u7684\u770B\u677F\u8BBE\u7F6E\u3002","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"\u66F4\u6539\u9ED8\u8BA4\u7684\u770B\u677F\u8BBE\u7F6E\u3002\u4E3A\u6BCF\u4E2A\u770B\u677F\u5355\u72EC\u8FDB\u884C\u8BBE\u7F6E\u5C06\u8986\u76D6\u9ED8\u8BA4\u8BBE\u7F6E\u3002","Note template":"\u7B14\u8BB0\u6A21\u677F","This template will be used when creating new notes from Kanban cards.":"\u4ECE\u770B\u677F\u5361\u7247\u521B\u5EFA\u65B0\u7B14\u8BB0\u65F6\u4F1A\u4F7F\u7528\u8BE5\u6A21\u677F\u3002","No template":"\u6CA1\u6709\u6A21\u677F","Note folder":"\u7B14\u8BB0\u5B58\u653E\u4F4D\u7F6E","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"\u4ECE\u770B\u677F\u5361\u7247\u521B\u5EFA\u7684\u7B14\u8BB0\u4F1A\u653E\u7F6E\u5230\u8BE5\u6587\u4EF6\u5939\u4E2D\u3002\u5982\u679C\u4E3A\u7A7A\uFF0C\u7B14\u8BB0\u5C06\u4F1A\u653E\u7F6E\u5230 Obsidian \u7684\u9ED8\u8BA4\u6587\u4EF6\u5B58\u653E\u4F4D\u7F6E\u3002","Default folder":"\u9ED8\u8BA4\u6587\u4EF6\u5939","List width":"\u5217\u5BBD","Enter a number to set the list width in pixels.":"\u8F93\u5165\u4E00\u4E2A\u50CF\u7D20\u503C\u6765\u8BBE\u7F6E\u5217\u7684\u5BBD\u5EA6","Maximum number of archived cards":"\u5355\u4E2A\u770B\u677F\u5185\u5DF2\u5F52\u6863\u5361\u7247\u7684\u6700\u5927\u6570\u91CF","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"\u5DF2\u5F52\u6863\u5361\u7247\u53EF\u4EE5\u5728 Markdown \u6A21\u5F0F\u4E0B\u67E5\u770B\u3002\u8BE5\u8BBE\u7F6E\u5C06\u4F7F\u5DF2\u5F52\u6863\u5361\u7247\u5728\u8FBE\u5230\u6700\u5927\u6570\u91CF\u65F6\u5220\u9664\u65E7\u5361\u3002\u8BBE\u7F6E\u4E3A -1 \u53EF\u4EE5\u6C38\u4E45\u4FDD\u7559\u6240\u6709\u5F52\u6863\u5361\u7247\u3002","Display card checkbox":"\u5C55\u793A\u5361\u7247\u590D\u9009\u6846","When toggled, a checkbox will be displayed with each card":"\u6253\u5F00\u65F6\uFF0C\u590D\u9009\u6846\u4F1A\u51FA\u73B0\u5728\u6BCF\u5F20\u5361\u7247\u4E0A","Reset to default":"\u8FD8\u539F\u521D\u59CB\u8BBE\u7F6E","Date & Time":"\u65E5\u671F\u548C\u65F6\u95F4","Date trigger":"\u65E5\u671F\u89E6\u53D1\u6307\u4EE4","When this is typed, it will trigger the date selector":"\u5F53\u5728\u770B\u677F\u5361\u7247\u4E2D\u8F93\u5165\u8FD9\u4E2A\u65F6\uFF0C\u4F1A\u89E6\u53D1\u4E00\u4E2A\u65E5\u671F\u9009\u62E9\u5668","Time trigger":"\u65F6\u95F4\u89E6\u53D1\u6307\u4EE4","When this is typed, it will trigger the time selector":"\u5F53\u5728\u770B\u677F\u5361\u7247\u4E2D\u8F93\u5165\u8FD9\u4E2A\u65F6\uFF0C\u4F1A\u89E6\u53D1\u4E00\u4E2A\u65F6\u95F4\u9009\u62E9\u5668","Date format":"\u65E5\u671F\u683C\u5F0F","This format will be used when saving dates in markdown.":"\u8FD9\u4E2A\u683C\u5F0F\u4F1A\u5728\u65E5\u671F\u4FDD\u5B58\u5230 Markdown \u683C\u5F0F\u65F6\u4F7F\u7528\u3002","For more syntax, refer to":"\u66F4\u591A\u683C\u5F0F\uFF0C\u8BF7\u67E5\u770B","format reference":"\u683C\u5F0F\u53C2\u8003","Your current syntax looks like this":"\u4F60\u5F53\u524D\u8BBE\u7F6E\u7684\u683C\u5F0F\u4F1A\u662F","Time format":"\u65F6\u95F4\u683C\u5F0F","Date display format":"\u65E5\u671F\u5C55\u793A\u683C\u5F0F","This format will be used when displaying dates in Kanban cards.":"\u770B\u677F\u5361\u7247\u4F1A\u4EE5\u8BE5\u683C\u5F0F\u5C55\u793A\u65E5\u671F\u3002","Show relative date":"\u5C55\u793A\u76F8\u5BF9\u65E5\u671F","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"\u6253\u5F00\u65F6\uFF0C\u5361\u7247\u4F1A\u5C55\u793A\u5176\u6240\u8BBE\u65E5\u671F\u4E0E\u5F53\u524D\u65E5\u671F\u7684\u5DEE\u503C\uFF0C\u4F8B\u5982\u201C3\u5929\u5185\u201D\u201C\u4E00\u4E2A\u6708\u524D\u201D\u7B49","Hide card display dates":"\u9690\u85CF\u5361\u7247\u65E5\u671F","Hide card counts in list titles":"\u5728\u5217\u6807\u9898\u4E0A\u9690\u85CF\u5361\u7247\u8BA1\u6570","When toggled, card counts are hidden from the list title":"\u6253\u5F00\u65F6\uFF0C\u5217\u6807\u9898\u4E0A\u7684\u5361\u7247\u8BA1\u6570\u5C06\u9690\u85CF","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"\u6253\u5F00\u65F6\uFF0C\u683C\u5F0F\u5316\u65E5\u671F\u4E0D\u4F1A\u5728\u5361\u7247\u4E0A\u5C55\u793A\u3002\u5982\u679C\u5F00\u542F\u4E86\u76F8\u5BF9\u65E5\u671F\u529F\u80FD\uFF0C\u76F8\u5BF9\u65E5\u671F\u8FD8\u662F\u4F1A\u7EE7\u7EED\u5C55\u793A\u3002","Hide dates in card titles":"\u5728\u5361\u7247\u6807\u9898\u4E2D\u9690\u85CF\u65E5\u671F","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"\u6253\u5F00\u65F6\uFF0C\u5361\u7247\u6807\u9898\u4E2D\u7684\u65E5\u671F\u5C06\u4F1A\u9690\u85CF\u3002\u5F53\u57FA\u4E8E\u5361\u7247\u521B\u5EFA\u65B0\u7B14\u8BB0\u65F6\u53EF\u4EE5\u907F\u514D\u65E5\u671F\u6DF7\u6742\u5176\u4E2D\u3002","Link dates to daily notes":"\u94FE\u63A5\u65E5\u671F\u5230\u65E5\u8BB0","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"\u6253\u5F00\u65F6\uFF0C\u65E5\u671F\u4F1A\u81EA\u52A8\u94FE\u63A5\u5230\u65E5\u8BB0\u9875\u9762\uFF0C\u4F8B\u5982[[2021-04-26]]","Add date and time to archived cards":"\u6DFB\u52A0\u65E5\u671F\u548C\u65F6\u95F4\u5230\u5F52\u6863\u5361\u7247","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"\u6253\u5F00\u65F6\uFF0C\u5F53\u524D\u65E5\u671F\u548C\u65F6\u95F4\u4F1A\u88AB\u6DFB\u52A0\u5230\u5F52\u6863\u5361\u7247\u7684 frontmatter \u4E0A\uFF0C\u4F8B\u5982\u201C- [ ] 2021-05-14 10:00am \u6211\u7684\u5361\u7247\u6807\u9898\u201D","Archive date/time separator":"\u5F52\u6863\u65E5\u671F\u6216\u65F6\u95F4\u5206\u9694\u7B26Archive date/time separator","This will be used to separate the archived date/time from the title":"\u7528\u4E8E\u5206\u9694\u6807\u9898\u4E0E\u5F52\u6863\u5361\u7247\u7684\u65E5\u671F\u6216\u65F6\u95F4","Archive date/time format":"\u5F52\u6863\u65E5\u671F\u6216\u65F6\u95F4\u683C\u5F0F","Kanban Plugin":"\u770B\u677F\u63D2\u4EF6","Hide tags in card titles":"\u9690\u85CF\u5361\u7247\u6807\u9898\u4E2D\u7684\u6807\u7B7E","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"\u6253\u5F00\u65F6\uFF0C\u5361\u7247\u6807\u9898\u4E2D\u7684\u6807\u7B7E\u5C06\u4F1A\u88AB\u9690\u85CF\u3002\u5F53\u57FA\u4E8E\u5361\u7247\u521B\u5EFA\u65B0\u7B14\u8BB0\u65F6\u53EF\u4EE5\u907F\u514D\u6807\u7B7E\u6DF7\u6742\u5176\u4E2D\u3002","Hide card display tags":"\u9690\u85CF\u5361\u7247\u4E0A\u7684\u6807\u7B7E","When toggled, tags will not be displayed below the card title.":"\u6253\u5F00\u65F6\uFF0C\u5361\u7247\u6807\u9898\u4E0B\u65B9\u7684\u6807\u7B7E\u5C06\u4E0D\u4F1A\u5C55\u793A\u3002","Linked Page Metadata":"\u8FDE\u63A5\u7684\u9875\u9762\u5143\u6570\u636E","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"\u5C55\u793A\u5361\u7247\u4E2D\u7B2C\u4E00\u4E2A\u8FDE\u63A5\u6240\u5BF9\u5E94\u7684\u7B14\u8BB0\u5143\u6570\u636E\u3002\u8BF7\u5728\u4E0B\u65B9\u6307\u5B9A\u54EA\u4E9B\u5143\u6570\u636E\u53EF\u4EE5\u5C55\u793A\u3002\u4F60\u53EF\u4EE5\u9009\u62E9\u5C55\u793A\u54EA\u4E9B\u6807\u5FD7\uFF0C\u6240\u6709\u6807\u5FD7\u90FD\u53EF\u4EE5\u88AB\u9690\u85CF\u3002","Board Header Buttons":"\u677F\u5934\u6309\u94AE","Calendar: first day of week":"\u65E5\u5386\uFF1A\u4E00\u5468\u7684\u7B2C\u4E00\u5929","Override which day is used as the start of the week":"\u8BBE\u7F6E\u54EA\u4E00\u5929\u4F5C\u4E3A\u4E00\u5468\u7684\u5F00\u59CB",Sunday:"\u5468\u65E5",Monday:"\u5468\u4E00",Tuesday:"\u5468\u4E8C",Wednesday:"\u5468\u4E09",Thursday:"\u5468\u56DB",Friday:"\u5468\u4E94",Saturday:"\u5468\u516D","Metadata key":"\u5143\u6570\u636E\u53C2\u6570\u540D","Display label":"\u5C55\u793A\u6807\u5FD7","Hide label":"\u9690\u85CF\u6807\u5FD7","Drag to rearrange":"\u62D6\u52A8\u4EE5\u91CD\u6392\u987A\u5E8F",Delete:"\u5220\u9664","Add key":"\u6DFB\u52A0\u53C2\u6570\u540D","Field contains markdown":"\u5B57\u6BB5\u5305\u542B Markdown","More options":"\u66F4\u591A\u9009\u9879",Cancel:"\u53D6\u6D88",today:"\u4ECA\u5929",yesterday:"\u6628\u5929",tomorrow:"\u660E\u5929","Change date":"\u66F4\u6539\u65E5\u671F","Change time":"\u66F4\u6539\u65F6\u95F4","Card title...":"\u5361\u7247\u6807\u9898\u2026\u2026","Add card":"\u6DFB\u52A0","Add a card":"\u6DFB\u52A0\u5361\u7247","Edit card":"\u7F16\u8F91\u5361\u7247","New note from card":"\u4ECE\u5361\u7247\u65B0\u5EFA\u7B14\u8BB0","Archive card":"\u5F52\u6863\u5361\u7247","Delete card":"\u5220\u9664\u5361\u7247","Edit date":"\u7F16\u8F91\u65E5\u671F","Add date":"\u6DFB\u52A0\u65E5\u671F","Remove date":"\u79FB\u9664\u65E5\u671F","Edit time":"\u7F16\u8F91\u65F6\u95F4","Add time":"\u6DFB\u52A0\u65F6\u95F4","Remove time":"\u79FB\u9664\u65F6\u95F4","Duplicate card":"\u590D\u5236\u5361\u7247","Split card":"\u5206\u79BB\u5361\u7247","Copy link to card":"\u590D\u5236\u94FE\u63A5\u81F3\u5361\u7247","Insert card before":"\u5728\u4E0A\u65B9\u63D2\u5165\u5361\u7247","Insert card after":"\u5728\u4E0B\u65B9\u63D2\u5165\u5361\u7247","Enter list title...":"\u8F93\u5165\u65B0\u7684\u5217\u6807\u9898\u2026\u2026","Mark cards in this list as complete":"\u5C06\u8BE5\u5217\u8BBE\u7F6E\u4E3A\u5B8C\u6210\u5217","Add list":"\u6DFB\u52A0","Add a list":"\u6DFB\u52A0\u5217","Move list":"\u79FB\u52A8\u5217",Close:"\u5173\u95ED","Are you sure you want to delete this list and all its cards?":"\u4F60\u786E\u5B9A\u4F60\u8981\u5220\u9664\u6574\u5217\u4EE5\u53CA\u8BE5\u5217\u4E0B\u6240\u6709\u5361\u7247\u5417\uFF1F","Yes, delete list":"\u662F\uFF0C\u5220\u9664\u5217","Are you sure you want to archive this list and all its cards?":"\u4F60\u786E\u5B9A\u4F60\u8981\u5F52\u6863\u6574\u5217\u4EE5\u53CA\u8BE5\u5217\u4E0B\u6240\u6709\u5361\u7247\u5417\uFF1F","Yes, archive list":"\u662F, \u5F52\u6863\u5217","Are you sure you want to archive all cards in this list?":"\u4F60\u786E\u8BA4\u4F60\u8981\u5F52\u6863\u5F53\u524D\u5217\u7684\u6240\u6709\u5361\u7247\u5417\uFF1F","Yes, archive cards":"\u662F\uFF0C\u5F52\u6863\u6240\u6709\u5361\u7247","Edit list":"\u7F16\u8F91\u5217","Archive cards":"\u5F52\u6863\u5361\u7247","Archive list":"\u5F52\u6863\u5217","Delete list":"\u5220\u9664\u5217","Insert list before":"\u5728\u4E0A\u65B9\u63D2\u5165\u5217","Insert list after":"\u5728\u4E0B\u65B9\u63D2\u5165\u5217","Sort by card text":"\u4EE5\u5361\u7247\u6587\u672C\u6392\u5E8F","Sort by date":"\u4EE5\u65E5\u671F\u6392\u5E8F","Unable to find":"\u65E0\u6CD5\u627E\u5230","Open in default app":"\u5728\u9ED8\u8BA4\u5E94\u7528\u4E2D\u6253\u5F00",Submit:"\u63D0\u4EA4"};h();var Av={};var pS={ar:dv,cz:fv,da:pv,de:hv,en:Lu,es:mv,fr:gv,hi:vv,id:yv,it:bv,ja:wv,ko:Ev,nl:xv,no:kv,pl:Sv,"pt-BR":Cv,pt:_v,ro:Tv,ru:Dv,sq:Mv,tr:gs,uk:gs,"zh-TW":Av,zh:Iv},Lv=window.localStorage.getItem("language"),Pu=pS[Lv||"en"];function B(e){return Pu||console.error("Error: kanban locale not found",Lv),Pu&&Pu[e]||Lu[e]}h();h();function Gn(e){return Array.isArray?Array.isArray(e):Nv(e)==="[object Array]"}var hS=1/0;function mS(e){if(typeof e=="string")return e;let t=e+"";return t=="0"&&1/e==-hS?"-0":t}function gS(e){return e==null?"":mS(e)}function Rn(e){return typeof e=="string"}function Pv(e){return typeof e=="number"}function vS(e){return e===!0||e===!1||yS(e)&&Nv(e)=="[object Boolean]"}function Fv(e){return typeof e=="object"}function yS(e){return Fv(e)&&e!==null}function un(e){return e!=null}function Fu(e){return!e.trim().length}function Nv(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var bS="Incorrect 'index' type",wS=e=>`Invalid value for key ${e}`,ES=e=>`Pattern length exceeds max of ${e}.`,xS=e=>`Missing ${e} property in key`,kS=e=>`Property 'weight' in key '${e}' must be a positive integer`,Ov=Object.prototype.hasOwnProperty,Rv=class{constructor(t){this._keys=[],this._keyMap={};let r=0;t.forEach(n=>{let i=Hv(n);r+=i.weight,this._keys.push(i),this._keyMap[i.id]=i,r+=i.weight}),this._keys.forEach(n=>{n.weight/=r})}get(t){return this._keyMap[t]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}};function Hv(e){let t=null,r=null,n=null,i=1,a=null;if(Rn(e)||Gn(e))n=e,t=Bv(e),r=Nu(e);else{if(!Ov.call(e,"name"))throw new Error(xS("name"));let o=e.name;if(n=o,Ov.call(e,"weight")&&(i=e.weight,i<=0))throw new Error(kS(o));t=Bv(o),r=Nu(o),a=e.getFn}return{path:t,id:r,weight:i,src:n,getFn:a}}function Bv(e){return Gn(e)?e:e.split(".")}function Nu(e){return Gn(e)?e.join("."):e}function SS(e,t){let r=[],n=!1,i=(a,o,s)=>{if(!!un(a))if(!o[s])r.push(a);else{let u=o[s],l=a[u];if(!un(l))return;if(s===o.length-1&&(Rn(l)||Pv(l)||vS(l)))r.push(gS(l));else if(Gn(l)){n=!0;for(let c=0,d=l.length;ce.score===t.score?e.idx{this._keysMap[r.id]=n})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,Rn(this.docs[0])?this.docs.forEach((t,r)=>{this._addString(t,r)}):this.docs.forEach((t,r)=>{this._addObject(t,r)}),this.norm.clear())}add(t){let r=this.size();Rn(t)?this._addString(t,r):this._addObject(t,r)}removeAt(t){this.records.splice(t,1);for(let r=t,n=this.size();r{let o=i.getFn?i.getFn(t):this.getFn(t,i.path);if(!!un(o)){if(Gn(o)){let s=[],u=[{nestedArrIndex:-1,value:o}];for(;u.length;){let{nestedArrIndex:l,value:c}=u.pop();if(!!un(c))if(Rn(c)&&!Fu(c)){let d={v:c,i:l,n:this.norm.get(c)};s.push(d)}else Gn(c)&&c.forEach((d,f)=>{u.push({nestedArrIndex:f,value:d})})}n.$[a]=s}else if(Rn(o)&&!Fu(o)){let s={v:o,n:this.norm.get(o)};n.$[a]=s}}}),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}};function Kv(e,t,{getFn:r=_e.getFn,fieldNormWeight:n=_e.fieldNormWeight}={}){let i=new vs({getFn:r,fieldNormWeight:n});return i.setKeys(e.map(Hv)),i.setSources(t),i.create(),i}function AS(e,{getFn:t=_e.getFn,fieldNormWeight:r=_e.fieldNormWeight}={}){let{keys:n,records:i}=e,a=new vs({getFn:t,fieldNormWeight:r});return a.setKeys(n),a.setIndexRecords(i),a}function ys(e,{errors:t=0,currentLocation:r=0,expectedLocation:n=0,distance:i=_e.distance,ignoreLocation:a=_e.ignoreLocation}={}){let o=t/e.length;if(a)return o;let s=Math.abs(n-r);return i?o+s/i:s?1:o}function LS(e=[],t=_e.minMatchCharLength){let r=[],n=-1,i=-1,a=0;for(let o=e.length;a=t&&r.push([n,i]),n=-1)}return e[a-1]&&a-n>=t&&r.push([n,a-1]),r}var $r=32;function PS(e,t,r,{location:n=_e.location,distance:i=_e.distance,threshold:a=_e.threshold,findAllMatches:o=_e.findAllMatches,minMatchCharLength:s=_e.minMatchCharLength,includeMatches:u=_e.includeMatches,ignoreLocation:l=_e.ignoreLocation}={}){if(t.length>$r)throw new Error(ES($r));let c=t.length,d=e.length,f=Math.max(0,Math.min(n,d)),p=a,m=f,y=s>1||u,b=y?Array(d):[],x;for(;(x=e.indexOf(t,m))>-1;){let O=ys(t,{currentLocation:x,expectedLocation:f,distance:i,ignoreLocation:l});if(p=Math.min(O,p),m=x+c,y){let W=0;for(;W=ee;G-=1){let re=G-1,pe=r[e.charAt(re)];if(y&&(b[re]=+!!pe),le[G]=(le[G+1]<<1|1)&pe,O&&(le[G]|=(D[G+1]|D[G])<<1|1|D[G+1]),le[G]&N&&(C=ys(t,{errors:O,currentLocation:re,expectedLocation:f,distance:i,ignoreLocation:l}),C<=p)){if(p=C,m=re,m<=f)break;ee=Math.max(1,2*f-m)}}if(ys(t,{errors:O+1,currentLocation:f,expectedLocation:f,distance:i,ignoreLocation:l})>p)break;D=le}let T={isMatch:m>=0,score:Math.max(.001,C)};if(y){let O=LS(b,s);O.length?u&&(T.indices=O):T.isMatch=!1}return T}function FS(e){let t={};for(let r=0,n=e.length;r{this.chunks.push({pattern:f,alphabet:FS(f),startIndex:p})},d=this.pattern.length;if(d>$r){let f=0,p=d%$r,m=d-p;for(;f{let{isMatch:x,score:D,indices:C}=PS(t,m,y,{location:i+b,distance:a,threshold:o,findAllMatches:s,minMatchCharLength:u,includeMatches:n,ignoreLocation:l});x&&(f=!0),d+=D,x&&C&&(c=[...c,...C])});let p={isMatch:f,score:f?d/this.chunks.length:1};return f&&n&&(p.indices=c),p}},Qn=class{constructor(t){this.pattern=t}static isMultiMatch(t){return $v(t,this.multiRegex)}static isSingleMatch(t){return $v(t,this.singleRegex)}search(){}};function $v(e,t){let r=e.match(t);return r?r[1]:null}var Uv=class extends Qn{constructor(t){super(t)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(t){let r=t===this.pattern;return{isMatch:r,score:r?0:1,indices:[0,this.pattern.length-1]}}},Wv=class extends Qn{constructor(t){super(t)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(t){let n=t.indexOf(this.pattern)===-1;return{isMatch:n,score:n?0:1,indices:[0,t.length-1]}}},Vv=class extends Qn{constructor(t){super(t)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(t){let r=t.startsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[0,this.pattern.length-1]}}},zv=class extends Qn{constructor(t){super(t)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(t){let r=!t.startsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[0,t.length-1]}}},jv=class extends Qn{constructor(t){super(t)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(t){let r=t.endsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[t.length-this.pattern.length,t.length-1]}}},qv=class extends Qn{constructor(t){super(t)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(t){let r=!t.endsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[0,t.length-1]}}},Ru=class extends Qn{constructor(t,{location:r=_e.location,threshold:n=_e.threshold,distance:i=_e.distance,includeMatches:a=_e.includeMatches,findAllMatches:o=_e.findAllMatches,minMatchCharLength:s=_e.minMatchCharLength,isCaseSensitive:u=_e.isCaseSensitive,ignoreLocation:l=_e.ignoreLocation}={}){super(t);this._bitapSearch=new Ou(t,{location:r,threshold:n,distance:i,includeMatches:a,findAllMatches:o,minMatchCharLength:s,isCaseSensitive:u,ignoreLocation:l})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(t){return this._bitapSearch.searchIn(t)}},Hu=class extends Qn{constructor(t){super(t)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(t){let r=0,n,i=[],a=this.pattern.length;for(;(n=t.indexOf(this.pattern,r))>-1;)r=n+a,i.push([n,r-1]);let o=!!i.length;return{isMatch:o,score:o?0:1,indices:i}}},Bu=[Uv,Hu,Vv,zv,qv,jv,Wv,Ru],Yv=Bu.length,NS=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,OS="|";function RS(e,t={}){return e.split(OS).map(r=>{let n=r.trim().split(NS).filter(a=>a&&!!a.trim()),i=[];for(let a=0,o=n.length;a!!(e[bs.AND]||e[bs.OR]),KS=e=>!!e[Uu.PATH],$S=e=>!Gn(e)&&Fv(e)&&!Wu(e),Gv=e=>({[bs.AND]:Object.keys(e).map(t=>({[t]:e[t]}))});function Qv(e,t,{auto:r=!0}={}){let n=i=>{let a=Object.keys(i),o=KS(i);if(!o&&a.length>1&&!Wu(i))return n(Gv(i));if($S(i)){let u=o?i[Uu.PATH]:a[0],l=o?i[Uu.PATTERN]:i[u];if(!Rn(l))throw new Error(wS(u));let c={keyId:Nu(u),pattern:l};return r&&(c.searcher=$u(l,t)),c}let s={children:[],operator:a[0]};return a.forEach(u=>{let l=i[u];Gn(l)&&l.forEach(c=>{s.children.push(n(c))})}),s};return Wu(e)||(e=Gv(e)),n(e)}function US(e,{ignoreFieldNorm:t=_e.ignoreFieldNorm}){e.forEach(r=>{let n=1;r.matches.forEach(({key:i,norm:a,score:o})=>{let s=i?i.weight:null;n*=Math.pow(o===0&&s?Number.EPSILON:o,(s||1)*(t?1:a))}),r.score=n})}function WS(e,t){let r=e.matches;t.matches=[],!!un(r)&&r.forEach(n=>{if(!un(n.indices)||!n.indices.length)return;let{indices:i,value:a}=n,o={indices:i,value:a};n.key&&(o.key=n.key.src),n.idx>-1&&(o.refIndex=n.idx),t.matches.push(o)})}function VS(e,t){t.score=e.score}function zS(e,t,{includeMatches:r=_e.includeMatches,includeScore:n=_e.includeScore}={}){let i=[];return r&&i.push(WS),n&&i.push(VS),e.map(a=>{let{idx:o}=a,s={item:t[o],refIndex:o};return i.length&&i.forEach(u=>{u(a,s)}),s})}var mn=class{constructor(t,r={},n){this.options={..._e,...r},this.options.useExtendedSearch,this._keyStore=new Rv(this.options.keys),this.setCollection(t,n)}setCollection(t,r){if(this._docs=t,r&&!(r instanceof vs))throw new Error(bS);this._myIndex=r||Kv(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(t){!un(t)||(this._docs.push(t),this._myIndex.add(t))}remove(t=()=>!1){let r=[];for(let n=0,i=this._docs.length;n-1&&(u=u.slice(0,r)),zS(u,this._docs,{includeMatches:n,includeScore:i})}_searchStringList(t){let r=$u(t,this.options),{records:n}=this._myIndex,i=[];return n.forEach(({v:a,i:o,n:s})=>{if(!un(a))return;let{isMatch:u,score:l,indices:c}=r.searchIn(a);u&&i.push({item:a,idx:o,matches:[{score:l,value:a,norm:s,indices:c}]})}),i}_searchLogical(t){let r=Qv(t,this.options),n=(s,u,l)=>{if(!s.children){let{keyId:d,searcher:f}=s,p=this._findMatches({key:this._keyStore.get(d),value:this._myIndex.getValueForItemAtKeyId(u,d),searcher:f});return p&&p.length?[{idx:l,item:u,matches:p}]:[]}let c=[];for(let d=0,f=s.children.length;d{if(un(s)){let l=n(r,s,u);l.length&&(a[u]||(a[u]={idx:u,item:s,matches:[]},o.push(a[u])),l.forEach(({matches:c})=>{a[u].matches.push(...c)}))}}),o}_searchObjectList(t){let r=$u(t,this.options),{keys:n,records:i}=this._myIndex,a=[];return i.forEach(({$:o,i:s})=>{if(!un(o))return;let u=[];n.forEach((l,c)=>{u.push(...this._findMatches({key:l,value:o[c],searcher:r}))}),u.length&&a.push({idx:s,item:o,matches:u})}),a}_findMatches({key:t,value:r,searcher:n}){if(!un(r))return[];let i=[];if(Gn(r))r.forEach(({v:a,i:o,n:s})=>{if(!un(a))return;let{isMatch:u,score:l,indices:c}=n.searchIn(a);u&&i.push({score:l,key:t,value:a,idx:o,norm:s,indices:c})});else{let{v:a,n:o}=r,{isMatch:s,score:u,indices:l}=n.searchIn(a);s&&i.push({score:u,key:t,value:a,norm:o,indices:l})}return i}};mn.version="6.6.2";mn.createIndex=Kv;mn.parseIndex=AS;mn.config=_e;mn.parseQuery=Qv;BS(Jv);var yy=ge(require("obsidian"));h();var Xv=ge(require("obsidian"));function ws(e,t,r){let n=r.getSetting("date-format"),i=r.getSetting("link-date-to-daily-note"),a=(0,Xv.moment)(e).format(n),o=i?Vo(r.app,a):`{${a}}`;At(t.current,o),t.current.focus()}function Zv({div:e,inputRef:t,cb:r,stateManager:n}){e.createEl("input",{type:"text"},i=>{e.win.setTimeout(()=>r(ts(i,{now:new Date,locale:Yo(n),inline:!0,onChange:a=>{ws(a[0],t,n)},win:i.win})))})}function Vu(e,t){let r=t.clientHeight,n=t.clientWidth,i=Ze(t);e.top+r>i.innerHeight&&(t.style.top=`${(e.clientTop||0)-r}px`),e.left+n>i.innerWidth&&(t.style.left=`${(e.left||0)-n}px`)}function ey(e){let t=e.getSetting("time-trigger"),r=new RegExp(`\\B${Ln(t)}{?([^}]*)$`),n=_u(e);return{id:"time",match:r,index:1,search:(i,a)=>{a(i?n.filter(o=>o.startsWith(i)):n)},template:i=>i,replace:i=>`${t}{${i}} `}}function ty(e){let t=e.month(),r=e.clone().startOf("month").weekday(0),n=e.diff(r,"week");e.subtract(1,"month").startOf("month").weekday(6).add(n,"week");let i=e.month();for(;t===i;)e.subtract(1,"week"),i=e.month();return e}function ny(e){let t=e.month(),r=e.clone().startOf("month").weekday(6),n=e.diff(r,"week");e.add(1,"month").startOf("month").weekday(0).add(n,"week");let i=e.month();for(;t===i;)e.add(1,"week"),i=e.month();return e}h();var ry=ge(require("obsidian"));var jS=/\B\[\[([^\]]*)$/,qS=/\B!\[\[([^\]]*)$/,YS=/\B\[\[([^#\]]+)#([^\]]*)$/,JS=/\B!\[\[([^#\]]+)#([^\]]*)$/,GS=/\B\[\[([^#\]]+)#?\^([^\]]*)$/,QS=/\B!\[\[([^#\]]+)#?\^([^\]]*)$/;function XS(e,t,r,n){let i=e.document.body.createDiv($("file-suggestion-wrapper"));i.detach(),(0,ry.setIcon)(i.createDiv($("file-suggestion-icon")),"forward-arrow",12),i.createDiv({},o=>{o.createDiv({cls:$("file-suggestion-title"),text:n.item.alias}),o.createDiv({cls:$("file-suggestion-subtitle"),text:t.app.metadataCache.fileToLinktext(n.item.file,r)})});let a=i.outerHTML;return i.remove(),i=null,a}function zu(e,t,r,n,i,a,o){return{id:`link-${o?"embed":"normal"}`,match:o?qS:jS,index:1,template:s=>s.item.file===null?`${s.item.path.split("|").pop()||s.item.path}`:s.item.alias?XS(e,i,n,s):i.app.metadataCache.fileToLinktext(s.item.file,n),search:(s,u)=>{if(!s)u(t.slice(0,10).map((l,c)=>({item:l,refIndex:c})));else{let l=s.split("|"),c=l.length>1,d=l[0],f=c?l.slice(1).join("|"):null,p=s;c&&(p={"file.basename":d,alias:f}),u([{item:{file:null,path:s,alias:""},refIndex:-1},...r.search(p)])}},replace:s=>{let u=[];o&&s.item.file.extension==="md"&&u.push("!"),s.item.file===null?u.push(`[[${s.item.path}]]`):u.push(i.app.fileManager.generateMarkdownLink(s.item.file,i.file.path,void 0,s.item.alias));let l=!!i.app.vault.getConfig("useMarkdownLinks");return a&&!l&&(u[u.length-1]=u[u.length-1].slice(0,-2)),u.join("")}}}function ZS(e,t,r,n){var u;if(!r)return[];let i=r.split("|"),a=e.metadataCache.getFirstLinkpathDest(i[0],t);if(!a)return[];let o=e.metadataCache.getFileCache(a);if(!o||!((u=o.headings)==null?void 0:u.length))return[];let s=o.headings.map(l=>({file:a,heading:l.heading,alias:i[1]||""}));return n?new mn(s,{keys:["heading"]}).search(n):s.map((l,c)=>({item:l,refIndex:c}))}function ju(e,t,r,n){return{id:`heading-${n?"embed":"normal"}`,match:n?JS:YS,index:1,template:i=>i.item.heading,search:(i,a,o)=>{a(ZS(t.app,e,o[1],o[2]))},replace:i=>{let a=[];n&&i.item.file.extension==="md"&&a.push("!"),a.push(t.app.fileManager.generateMarkdownLink(i.item.file,t.file.path,"#"+i.item.heading,i.item.alias));let o=!!t.app.vault.getConfig("useMarkdownLinks");return r&&!o?a[a.length-1]=a[a.length-1].slice(0,-2):!r&&!o&&a.push("]] "),a.join("")}}}var iy=class{constructor(){this.running=!1;this.cancelled=!1}start(){this.running=!0}stop(){this.running=!1}cancel(){this.stop(),this.cancelled=!0}isRunning(){return this.running}isCancelled(){return this.cancelled}};async function e_(e,t,r,n,i){var u;if(!r)return i([]);let a=r.split("|"),o=e.metadataCache.getFirstLinkpathDest(a[0],t);if(!o)return i([]);let s=e.metadataCache.getFileCache(o);if(!s||!((u=s.sections)==null?void 0:u.length))return i([]);try{let l=await e.metadataCache.blockCache.getForFile(new iy,o);if(!(l==null?void 0:l.blocks))return i([]);let c=l.blocks.map(d=>d.node.type==="heading"?null:{file:o,searchString:d.display,blockId:d.node.id,block:{type:d.node.type,start:d.node.position.start.offset,end:d.node.position.end.offset},alias:a[1]||""}).filter(d=>d);i(n?new mn(c,{keys:["searchString","blockId"]}).search(n):c.map((d,f)=>({item:d,refIndex:f})))}catch(l){i([])}}function t_(e){return["blockquote","code","table","comment","footnoteDefinition"].includes(e)}function qu(e,t,r,n){return{id:`block-${n?"embed":"normal"}`,match:n?QS:GS,index:1,template:i=>i.item.blockId?`
${i.item.searchString}
${i.item.blockId}
`:i.item.searchString,search:(i,a,o)=>{e_(t.app,e,o[1],o[2],a)},replace:i=>{let a=[];n&&i.item.file.extension==="md"&&a.push("!");let o="#^";if(i.item.blockId)o+=i.item.blockId;else{let u=Re(),l=t_(i.item.block.type)?` + `}function F(){n.calendarContainer.classList.add("hasWeeks");let _=je(r.document,"div","flatpickr-weekwrapper");_.appendChild(je(r.document,"span","flatpickr-weekday",n.l10n.weekAbbreviation));let M=je(r.document,"div","flatpickr-weeks");return _.appendChild(M),{weekWrapper:_,weekNumbers:M}}function N(_,M=!0){let $=M?_:_-n.currentMonth;$<0&&n._hidePrevMonthArrow===!0||$>0&&n._hideNextMonthArrow===!0||(n.currentMonth+=$,(n.currentMonth<0||n.currentMonth>11)&&(n.currentYear+=n.currentMonth>11?1:-1,n.currentMonth=(n.currentMonth+12)%12,Ve("onYearChange"),Q()),G(),Ve("onMonthChange"),Mt())}function ut(_=!0,M=!0){if(n.input.value="",n.altInput!==void 0&&(n.altInput.value=""),n.mobileInput!==void 0&&(n.mobileInput.value=""),n.selectedDates=[],n.latestSelectedDateObj=void 0,M===!0&&(n.currentYear=n._initialDate.getFullYear(),n.currentMonth=n._initialDate.getMonth()),n.config.enableTime===!0){let{hours:$,minutes:ee,seconds:le}=rs(n.config);g($,ee,le)}n.redraw(),_&&Ve("onChange")}function Ge(){n.isOpen=!1,n.isMobile||(n.calendarContainer!==void 0&&n.calendarContainer.classList.remove("open"),n._input!==void 0&&n._input.classList.remove("active")),Ve("onClose")}function W(){n.config!==void 0&&Ve("onDestroy");for(let _=n._handlers.length;_--;)n._handlers[_].remove();if(n._handlers=[],n.mobileInput)n.mobileInput.parentNode&&n.mobileInput.parentNode.removeChild(n.mobileInput),n.mobileInput=void 0;else if(n.calendarContainer&&n.calendarContainer.parentNode)if(n.config.static&&n.calendarContainer.parentNode){let _=n.calendarContainer.parentNode;if(_.lastChild&&_.removeChild(_.lastChild),_.parentNode){for(;_.firstChild;)_.parentNode.insertBefore(_.firstChild,_);_.parentNode.removeChild(_)}}else n.calendarContainer.parentNode.removeChild(n.calendarContainer);n.altInput&&(n.input.type="text",n.altInput.parentNode&&n.altInput.parentNode.removeChild(n.altInput),delete n.altInput),n.input&&(n.input.type=n.input._type,n.input.classList.remove("flatpickr-input"),n.input.removeAttribute("readonly")),["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(_=>{try{delete n[_]}catch(M){}})}function j(_){return n.calendarContainer.contains(_)}function q(_){if(n.isOpen&&!n.config.inline){let M=rn(_),$=j(M),le=!(M===n.input||M===n.altInput||n.element.contains(M)||_.path&&_.path.indexOf&&(~_.path.indexOf(n.input)||~_.path.indexOf(n.altInput)))&&!$&&!j(_.relatedTarget),re=!n.config.ignoredFocusElements.some(ve=>ve.contains(M));le&&re&&(n.config.allowInput&&n.setDate(n._input.value,!1,n.config.altInput?n.config.altFormat:n.config.dateFormat),n.timeContainer!==void 0&&n.minuteElement!==void 0&&n.hourElement!==void 0&&n.input.value!==""&&n.input.value!==void 0&&l(),n.close(),n.config&&n.config.mode==="range"&&n.selectedDates.length===1&&n.clear(!1))}}function te(_){if(!_||n.config.minDate&&_n.config.maxDate.getFullYear())return;let M=_,$=n.currentYear!==M;n.currentYear=M||n.currentYear,n.config.maxDate&&n.currentYear===n.config.maxDate.getFullYear()?n.currentMonth=Math.min(n.config.maxDate.getMonth(),n.currentMonth):n.config.minDate&&n.currentYear===n.config.minDate.getFullYear()&&(n.currentMonth=Math.max(n.config.minDate.getMonth(),n.currentMonth)),$&&(n.redraw(),Ve("onYearChange"),Q())}function we(_,M=!0){var re;let $=n.parseDate(_,void 0,M);if(n.config.minDate&&$&&nn($,n.config.minDate,M!==void 0?M:!n.minDateHasTime)<0||n.config.maxDate&&$&&nn($,n.config.maxDate,M!==void 0?M:!n.maxDateHasTime)>0)return!1;if(!n.config.enable&&n.config.disable.length===0)return!0;if($===void 0)return!1;let ee=!!n.config.enable,le=(re=n.config.enable)!=null?re:n.config.disable;for(let ve=0,ue;ve=ue.from.getTime()&&$.getTime()<=ue.to.getTime())return ee}return!ee}function xe(_){return n.daysContainer!==void 0?_.className.indexOf("hidden")===-1&&_.className.indexOf("flatpickr-disabled")===-1&&n.daysContainer.contains(_):!1}function Ue(_){let M=_.target===n._input,$=n._input.value.trimEnd()!==Wi();M&&$&&!(_.relatedTarget&&j(_.relatedTarget))&&n.setDate(n._input.value,!0,_.target===n.altInput?n.config.altFormat:n.config.dateFormat)}function dt(_){let M=rn(_),$=n.config.wrap?e.contains(M):M===n._input,ee=n.config.allowInput,le=n.isOpen&&(!ee||!$),re=n.config.inline&&$&&!ee;if(_.keyCode===13&&$){if(ee)return n.setDate(n._input.value,!0,M===n.altInput?n.config.altFormat:n.config.dateFormat),n.close(),M.blur();n.open()}else if(j(M)||le||re){let ve=!!n.timeContainer&&n.timeContainer.contains(M);switch(_.keyCode){case 13:ve?(_.preventDefault(),l(),rr()):Rt(_);break;case 27:_.preventDefault(),rr();break;case 8:case 46:$&&!n.config.allowInput&&(_.preventDefault(),n.clear());break;case 37:case 39:if(!ve&&!$){_.preventDefault();let ue=o();if(n.daysContainer!==void 0&&(ee===!1||ue&&xe(ue))){let Fe=_.keyCode===39?1:-1;_.ctrlKey?(_.stopPropagation(),N(Fe),J(U(1),0)):J(void 0,Fe)}}else n.hourElement&&n.hourElement.focus();break;case 38:case 40:{_.preventDefault();let ue=_.keyCode===40?1:-1;n.daysContainer&&M.$i!==void 0||M===n.input||M===n.altInput?_.ctrlKey?(_.stopPropagation(),te(n.currentYear-ue),J(U(1),0)):ve||J(void 0,ue*7):M===n.currentYearElement?te(n.currentYear-ue):n.config.enableTime&&(!ve&&n.hourElement&&n.hourElement.focus(),l(_),n._debouncedChange());break}case 9:if(ve){let ue=[n.hourElement,n.minuteElement,n.secondElement,n.amPM].concat(n.pluginElements).filter(Ne=>Ne),Fe=ue.indexOf(M);if(Fe!==-1){let Ne=ue[Fe+(_.shiftKey?-1:1)];_.preventDefault(),(Ne||n._input).focus()}}else!n.config.noCalendar&&n.daysContainer&&n.daysContainer.contains(M)&&_.shiftKey&&(_.preventDefault(),n._input.focus());break;default:break}}if(n.amPM!==void 0&&M===n.amPM)switch(_.key){case n.l10n.amPM[0].charAt(0):case n.l10n.amPM[0].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[0],f(),kn();break;case n.l10n.amPM[1].charAt(0):case n.l10n.amPM[1].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[1],f(),kn();break}($||j(M))&&Ve("onKeyDown",_)}function vt(_,M="flatpickr-day"){if(n.selectedDates.length!==1||_&&(!_.classList.contains(M)||_.classList.contains("flatpickr-disabled")))return;let $=_?_.dateObj.getTime():n.days.firstElementChild.dateObj.getTime(),ee=n.parseDate(n.selectedDates[0],void 0,!0).getTime(),le=Math.min($,n.selectedDates[0].getTime()),re=Math.max($,n.selectedDates[0].getTime()),ve=!1,ue=0,Fe=0;for(let Me=le;Mele&&Meue)?ue=Me:Me>ee&&(!Fe||Me .${M}`)).forEach(Me=>{let bt=Me.dateObj.getTime(),ar=ue>0&&bt0&&bt>Fe;if(ar){Me.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(or=>{Me.classList.remove(or)});return}else if(ve&&!ar)return;["startRange","inRange","endRange","notAllowed"].forEach(or=>{Me.classList.remove(or)}),_!==void 0&&(_.classList.add($<=n.selectedDates[0].getTime()?"startRange":"endRange"),ee<$&&bt===ee?Me.classList.add("startRange"):ee>$&&bt===ee&&Me.classList.add("endRange"),bt>=ue&&(Fe===0||bt<=Fe)&&tv(bt,ee,$)&&Me.classList.add("inRange"))})}function Ot(){n.isOpen&&!n.config.static&&!n.config.inline&&Un()}function Bn(_,M=n._positionElement){if(n.isMobile===!0){if(_){_.preventDefault();let ee=rn(_);ee&&ee.blur()}n.mobileInput!==void 0&&(n.mobileInput.focus(),n.mobileInput.click()),Ve("onOpen");return}else if(n._input.disabled||n.config.inline)return;let $=n.isOpen;n.isOpen=!0,$||(n.calendarContainer.classList.add("open"),n._input.classList.add("active"),Ve("onOpen"),Un(M)),n.config.enableTime===!0&&n.config.noCalendar===!0&&n.config.allowInput===!1&&(_===void 0||!n.timeContainer.contains(_.relatedTarget))&&r.setTimeout(()=>n.hourElement.select(),50)}function Kn(_){return M=>{let $=n.config[`_${_}Date`]=n.parseDate(M,n.config.dateFormat),ee=n.config[`_${_==="min"?"max":"min"}Date`];$!==void 0&&(n[_==="min"?"minDateHasTime":"maxDateHasTime"]=$.getHours()>0||$.getMinutes()>0||$.getSeconds()>0),n.selectedDates&&(n.selectedDates=n.selectedDates.filter(le=>we(le)),!n.selectedDates.length&&_==="min"&&p($),kn()),n.daysContainer&&(ti(),$!==void 0?n.currentYearElement[_]=$.getFullYear().toString():n.currentYearElement.removeAttribute(_),n.currentYearElement.disabled=!!ee&&$!==void 0&&ee.getFullYear()===$.getFullYear())}}function $n(){let _=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],M={...JSON.parse(JSON.stringify(e.dataset||{})),...t},$={};n.config.parseDate=M.parseDate,n.config.formatDate=M.formatDate,Object.defineProperty(n.config,"enable",{get:()=>n.config._enable,set:re=>{n.config._enable=Ee(re)}}),Object.defineProperty(n.config,"disable",{get:()=>n.config._disable,set:re=>{n.config._disable=Ee(re)}});let ee=M.mode==="time";if(!M.dateFormat&&(M.enableTime||ee)){let re=gt.defaultConfig.dateFormat||wr.dateFormat;$.dateFormat=M.noCalendar||ee?"H:i"+(M.enableSeconds?":S":""):re+" H:i"+(M.enableSeconds?":S":"")}if(M.altInput&&(M.enableTime||ee)&&!M.altFormat){let re=gt.defaultConfig.altFormat||wr.altFormat;$.altFormat=M.noCalendar||ee?"h:i"+(M.enableSeconds?":S K":" K"):re+` h:i${M.enableSeconds?":S":""} K`}Object.defineProperty(n.config,"minDate",{get:()=>n.config._minDate,set:Kn("min")}),Object.defineProperty(n.config,"maxDate",{get:()=>n.config._maxDate,set:Kn("max")});let le=re=>ve=>{n.config[re==="min"?"_minTime":"_maxTime"]=n.parseDate(ve,"H:i:S")};Object.defineProperty(n.config,"minTime",{get:()=>n.config._minTime,set:le("min")}),Object.defineProperty(n.config,"maxTime",{get:()=>n.config._maxTime,set:le("max")}),M.mode==="time"&&(n.config.noCalendar=!0,n.config.enableTime=!0),Object.assign(n.config,$,M);for(let re=0;re<_.length;re++)n.config[_[re]]=n.config[_[re]]===!0||n.config[_[re]]==="true";Zo.filter(re=>n.config[re]!==void 0).forEach(re=>{n.config[re]=es(n.config[re]||[]).map(s)}),n.isMobile=!n.config.disableMobile&&!n.config.inline&&n.config.mode==="single"&&!n.config.disable.length&&!n.config.enable&&!n.config.weekNumbers&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);for(let re=0;re-1?n.config[ue]=es(ve[ue]).map(s).concat(n.config[ue]):typeof M[ue]=="undefined"&&(n.config[ue]=ve[ue])}M.altInputClass||(n.config.altInputClass=bn().className+" "+n.config.altInputClass),Ve("onParseConfig")}function bn(){return n.config.wrap?e.querySelector("[data-input]"):e}function wn(){typeof n.config.locale!="object"&&typeof gt.l10ns[n.config.locale]=="undefined"&&n.config.errorHandler(new Error(`flatpickr: invalid locale ${n.config.locale}`)),n.l10n={...gt.l10ns.default,...typeof n.config.locale=="object"?n.config.locale:n.config.locale!=="default"?gt.l10ns[n.config.locale]:void 0},Jn.D=`(${n.l10n.weekdays.shorthand.join("|")})`,Jn.l=`(${n.l10n.weekdays.longhand.join("|")})`,Jn.M=`(${n.l10n.months.shorthand.join("|")})`,Jn.F=`(${n.l10n.months.longhand.join("|")})`,Jn.K=`(${n.l10n.amPM[0]}|${n.l10n.amPM[1]}|${n.l10n.amPM[0].toLowerCase()}|${n.l10n.amPM[1].toLowerCase()})`,{...t,...JSON.parse(JSON.stringify(e.dataset||{}))}.time_24hr===void 0&>.defaultConfig.time_24hr===void 0&&(n.config.time_24hr=n.l10n.time_24hr),n.formatDate=Mu(n),n.parseDate=ts({config:n.config,l10n:n.l10n})}function Un(_){if(typeof n.config.position=="function")return void n.config.position(n,_);if(n.calendarContainer===void 0)return;Ve("onPreCalendarPosition");let M=_||n._positionElement,$=Array.prototype.reduce.call(n.calendarContainer.children,(Tr,ji)=>Tr+ji.offsetHeight,0),ee=n.calendarContainer.offsetWidth,le=n.config.position.split(" "),re=le[0],ve=le.length>1?le[1]:null,ue=M.getBoundingClientRect(),Fe=r.innerHeight-ue.bottom,Ne=re==="above"||re!=="below"&&Fe<$&&ue.top>$,Me=r.pageYOffset+ue.top+(Ne?-$-2:M.offsetHeight+2);if(Kt(n.calendarContainer,"arrowTop",!Ne),Kt(n.calendarContainer,"arrowBottom",Ne),n.config.inline)return;let Qt=r.pageXOffset+ue.left,bt=!1,ar=!1;ve==="center"?(Qt-=(ee-ue.width)/2,bt=!0):ve==="right"&&(Qt-=ee-ue.width,ar=!0),Kt(n.calendarContainer,"arrowLeft",!bt&&!ar),Kt(n.calendarContainer,"arrowCenter",bt),Kt(n.calendarContainer,"arrowRight",ar);let or=r.document.body.offsetWidth-(r.pageXOffset+ue.right),zi=Qt+ee>r.document.body.offsetWidth,no=or+ee>r.document.body.offsetWidth;if(Kt(n.calendarContainer,"rightMost",zi),!n.config.static)if(n.calendarContainer.style.top=`${Me}px`,!zi)n.calendarContainer.style.left=`${Qt}px`,n.calendarContainer.style.right="auto";else if(!no)n.calendarContainer.style.left="auto",n.calendarContainer.style.right=`${or}px`;else{let Tr=Zr();if(Tr===void 0)return;let ji=r.document.body.offsetWidth,_l=Math.max(0,ji/2-ee/2),Cl=".flatpickr-calendar.centerMost:before",Mf=".flatpickr-calendar.centerMost:after",O=Tr.cssRules.length,w=`{left:${ue.left}px;right:auto;}`;Kt(n.calendarContainer,"rightMost",!1),Kt(n.calendarContainer,"centerMost",!0),Tr.insertRule(`${Cl},${Mf}${w}`,O),n.calendarContainer.style.left=`${_l}px`,n.calendarContainer.style.right="auto"}}function Zr(){let _=null;for(let M=0;Mve.classList&&ve.classList.contains("flatpickr-day")&&!ve.classList.contains("flatpickr-disabled")&&!ve.classList.contains("notAllowed"),$=Iu(rn(_),M);if($===void 0)return;let ee=$,le=n.latestSelectedDateObj=new Date(ee.dateObj.getTime()),re=(le.getMonth()n.currentMonth+n.config.showMonths-1)&&n.config.mode!=="range";if(n.selectedDateElem=ee,n.config.mode==="single")n.selectedDates=[le];else if(n.config.mode==="multiple"){let ve=Ye(le);ve?n.selectedDates.splice(parseInt(ve),1):n.selectedDates.push(le)}else n.config.mode==="range"&&(n.selectedDates.length===2&&n.clear(!1,!1),n.latestSelectedDateObj=le,n.selectedDates.push(le),nn(le,n.selectedDates[0],!0)!==0&&n.selectedDates.sort((ve,ue)=>ve.getTime()-ue.getTime()));if(f(),re){let ve=n.currentYear!==le.getFullYear();n.currentYear=le.getFullYear(),n.currentMonth=le.getMonth(),ve&&(Ve("onYearChange"),Q()),Ve("onMonthChange")}if(Mt(),G(),kn(),!re&&n.config.mode!=="range"&&n.config.showMonths===1?z(ee):n.selectedDateElem!==void 0&&n.hourElement===void 0&&n.selectedDateElem&&n.selectedDateElem.focus(),n.hourElement!==void 0&&n.hourElement!==void 0&&n.hourElement.focus(),n.config.closeOnSelect){let ve=n.config.mode==="single"&&!n.config.enableTime,ue=n.config.mode==="range"&&n.selectedDates.length===2&&!n.config.enableTime;(ve||ue)&&rr()}x()}let Wt={locale:[wn,Te],showMonths:[he,u,be],minDate:[C],maxDate:[C],positionElement:[En],clickOpens:[()=>{n.config.clickOpens===!0?(b(n._input,"focus",n.open),b(n._input,"click",n.open)):(n._input.removeEventListener("focus",n.open),n._input.removeEventListener("click",n.open))}]};function yt(_,M){if(_!==null&&typeof _=="object"){Object.assign(n.config,_);for(let $ in _)Wt[$]!==void 0&&Wt[$].forEach(ee=>ee())}else n.config[_]=M,Wt[_]!==void 0?Wt[_].forEach($=>$()):Zo.indexOf(_)>-1&&(n.config[_]=es(M));n.redraw(),kn(!0)}function Y(_,M){let $=[];if(Array.isArray(_))$=_.map(ee=>n.parseDate(ee,M));else if(_.getDate||typeof _=="number")$=[n.parseDate(_,M)];else if(typeof _=="string")switch(n.config.mode){case"single":case"time":$=[n.parseDate(_,M)];break;case"multiple":$=_.split(n.config.conjunction).map(ee=>n.parseDate(ee,M));break;case"range":$=_.split(n.l10n.rangeSeparator).map(ee=>n.parseDate(ee,M));break;default:break}else n.config.errorHandler(new Error(`Invalid date supplied: ${JSON.stringify(_)}`));n.selectedDates=n.config.allowInvalidPreload?$:$.filter(ee=>ee.getDate&&we(ee,!1)),n.config.mode==="range"&&n.selectedDates.sort((ee,le)=>ee.getTime()-le.getTime())}function oe(_,M=!1,$=n.config.dateFormat){if(_!==0&&!_||Array.isArray(_)&&_.length===0)return n.clear(M);Y(_,$),n.latestSelectedDateObj=n.selectedDates[n.selectedDates.length-1],n.redraw(),C(void 0,M),p(),n.selectedDates.length===0&&n.clear(!1),kn(M),M&&Ve("onChange")}function Ee(_){return _.slice().map(M=>typeof M=="string"||typeof M=="number"||M.getDate?n.parseDate(M,void 0,!0):M&&typeof M=="object"&&M.from&&M.to?{from:n.parseDate(M.from,void 0),to:n.parseDate(M.to,void 0)}:M).filter(M=>M)}function ze(){n.selectedDates=[],n.now=n.parseDate(n.config.now)||new Date;let _=n.config.defaultDate||((n.input.nodeName==="INPUT"||n.input.nodeName==="TEXTAREA")&&n.input.placeholder&&n.input.value===n.input.placeholder?null:n.input.value);_&&Y(_,n.config.dateFormat),n._initialDate=n.selectedDates.length>0?n.selectedDates[0]:n.config.minDate&&n.config.minDate.getTime()>n.now.getTime()?n.config.minDate:n.config.maxDate&&n.config.maxDate.getTime()0&&(n.latestSelectedDateObj=n.selectedDates[0]),n.config.minTime!==void 0&&(n.config.minTime=n.parseDate(n.config.minTime,"H:i")),n.config.maxTime!==void 0&&(n.config.maxTime=n.parseDate(n.config.maxTime,"H:i")),n.minDateHasTime=!!n.config.minDate&&(n.config.minDate.getHours()>0||n.config.minDate.getMinutes()>0||n.config.minDate.getSeconds()>0),n.maxDateHasTime=!!n.config.maxDate&&(n.config.maxDate.getHours()>0||n.config.maxDate.getMinutes()>0||n.config.maxDate.getSeconds()>0)}function Tt(){if(n.input=bn(),!n.input){n.config.errorHandler(new Error("Invalid input element specified"));return}n.input._type=n.input.type,n.input.type="text",n.input.classList.add("flatpickr-input"),n._input=n.input,n.config.altInput&&(n.altInput=je(r.document,n.input.nodeName,n.config.altInputClass),n._input=n.altInput,n.altInput.placeholder=n.input.placeholder,n.altInput.disabled=n.input.disabled,n.altInput.required=n.input.required,n.altInput.tabIndex=n.input.tabIndex,n.altInput.type="text",n.input.setAttribute("type","hidden"),!n.config.static&&n.input.parentNode&&n.input.parentNode.insertBefore(n.altInput,n.input.nextSibling)),n.config.allowInput||n._input.setAttribute("readonly","readonly"),En()}function En(){n._positionElement=n.config.positionElement||n._input}function qe(){let _=n.config.enableTime?n.config.noCalendar?"time":"datetime-local":"date";n.mobileInput=je(r.document,"input",n.input.className+" flatpickr-mobile"),n.mobileInput.tabIndex=1,n.mobileInput.type=_,n.mobileInput.disabled=n.input.disabled,n.mobileInput.required=n.input.required,n.mobileInput.placeholder=n.input.placeholder,n.mobileFormatStr=_==="datetime-local"?"Y-m-d\\TH:i:S":_==="date"?"Y-m-d":"H:i:S",n.selectedDates.length>0&&(n.mobileInput.defaultValue=n.mobileInput.value=n.formatDate(n.selectedDates[0],n.mobileFormatStr)),n.config.minDate&&(n.mobileInput.min=n.formatDate(n.config.minDate,"Y-m-d")),n.config.maxDate&&(n.mobileInput.max=n.formatDate(n.config.maxDate,"Y-m-d")),n.input.getAttribute("step")&&(n.mobileInput.step=String(n.input.getAttribute("step"))),n.input.type="hidden",n.altInput!==void 0&&(n.altInput.type="hidden");try{n.input.parentNode&&n.input.parentNode.insertBefore(n.mobileInput,n.input.nextSibling)}catch(M){}b(n.mobileInput,"change",M=>{n.setDate(rn(M).value,!1,n.mobileFormatStr),Ve("onChange"),Ve("onClose")})}function st(_){if(n.isOpen===!0)return n.close();n.open(_)}function Ve(_,M){if(n.config===void 0)return;let $=n.config[_];if($!==void 0&&$.length>0)for(let ee=0;$[ee]&&ee<$.length;ee++)$[ee](n.selectedDates,n.input.value,n,M);_==="onChange"&&(n.input.dispatchEvent(fn("change")),n.input.dispatchEvent(fn("input")))}function fn(_){let M=r.document.createEvent("Event");return M.initEvent(_,!0,!0),M}function Ye(_){for(let M=0;M=0&&nn(_,n.selectedDates[1])<=0}function Mt(){n.config.noCalendar||n.isMobile||!n.monthNav||(n.yearElements.forEach((_,M)=>{let $=new Date(n.currentYear,n.currentMonth,1);$.setMonth(n.currentMonth+M),n.config.showMonths>1||n.config.monthSelectorType==="static"?n.monthElements[M].textContent=Sa($.getMonth(),n.config.shorthandCurrentMonth,n.l10n)+" ":n.monthsDropdownContainer.value=$.getMonth().toString(),_.value=$.getFullYear().toString()}),n._hidePrevMonthArrow=n.config.minDate!==void 0&&(n.currentYear===n.config.minDate.getFullYear()?n.currentMonth<=n.config.minDate.getMonth():n.currentYearn.config.maxDate.getMonth():n.currentYear>n.config.maxDate.getFullYear()))}function Wi(_){let M=_||(n.config.altInput?n.config.altFormat:n.config.dateFormat);return n.selectedDates.map($=>n.formatDate($,M)).filter(($,ee,le)=>n.config.mode!=="range"||n.config.enableTime||le.indexOf($)===ee).join(n.config.mode!=="range"?n.config.conjunction:n.l10n.rangeSeparator)}function kn(_=!0){n.mobileInput!==void 0&&n.mobileFormatStr&&(n.mobileInput.value=n.latestSelectedDateObj!==void 0?n.formatDate(n.latestSelectedDateObj,n.mobileFormatStr):""),n.input.value=Wi(n.config.dateFormat),n.altInput!==void 0&&(n.altInput.value=Wi(n.config.altFormat)),_!==!1&&Ve("onValueUpdate")}function Sl(_){let M=rn(_),$=n.prevMonthNav.contains(M),ee=n.nextMonthNav.contains(M);$||ee?N($?-1:1):n.yearElements.indexOf(M)>=0?M.select():M.classList.contains("arrowUp")?n.changeYear(n.currentYear+1):M.classList.contains("arrowDown")&&n.changeYear(n.currentYear-1)}function to(_){_.preventDefault();let M=_.type==="keydown",$=rn(_),ee=$;n.amPM!==void 0&&$===n.amPM&&(n.amPM.textContent=n.l10n.amPM[tn(n.amPM.textContent===n.l10n.amPM[0])]);let le=parseFloat(ee.getAttribute("min")),re=parseFloat(ee.getAttribute("max")),ve=parseFloat(ee.getAttribute("step")),ue=parseInt(ee.value,10),Fe=_.delta||(M?_.which===38?1:-1:0),Ne=ue+ve*Fe;if(typeof ee.value!="undefined"&&ee.value.length===2){let Me=ee===n.hourElement,Qt=ee===n.minuteElement;Nere&&(Ne=ee===n.hourElement?Ne-re-tn(!n.amPM):le,Qt&&H(void 0,1,n.hourElement)),n.amPM&&Me&&(ve===1?Ne+ue===23:Math.abs(Ne-ue)>ve)&&(n.amPM.textContent=n.l10n.amPM[tn(n.amPM.textContent===n.l10n.amPM[0])]),ee.value=Bt(Ne)}}return a(),n}function is(e,t){let r=Array.prototype.slice.call(e).filter(i=>i.onClickEvent),n=[];for(let i=0;i{gt.l10ns.default={...gt.l10ns.default,...e}};gt.setDefaults=e=>{gt.defaultConfig={...gt.defaultConfig,...e}};gt.parseDate=ts({});gt.formatDate=Mu({});gt.compareDates=nn;typeof jQuery!="undefined"&&typeof jQuery.fn!="undefined"&&(jQuery.fn.flatpickr=function(e){return is(this,e)});Date.prototype.fp_incr=function(e){return new Date(this.getFullYear(),this.getMonth(),this.getDate()+(typeof e=="string"?parseInt(e,10):e))};typeof window!="undefined"&&(window.flatpickr=gt);var as=gt;function os(e,t,r,n,i){return e.document.body.createDiv({cls:`${B("date-picker")} ${B("ignore-click-outside")}`},a=>{a.style.left=`${r.x||0}px`,a.style.top=`${r.y||0}px`,a.createEl("input",{type:"text"},o=>{a.win.setTimeout(()=>{let s=null,u=d=>{d.target instanceof d.view.HTMLElement&&d.target.closest(`.${B("date-picker")}`)===null&&c()},l=d=>{d.key==="Escape"&&c()},c=()=>{s.destroy(),a.remove(),e.document.body.removeEventListener("click",u),e.document.removeEventListener("keydown",l)};s=as(o,{locale:Xo(t),defaultDate:i,inline:!0,onChange:d=>{n(d),c()},win:e}),a.win.setTimeout(()=>{let d=a.clientHeight,f=a.clientWidth;r.y+d>e.innerHeight&&(a.style.top=`${(r.y||0)-d}px`),r.x+f>e.innerWidth&&(a.style.left=`${(r.x||0)-f}px`)}),e.document.body.addEventListener("click",u),e.document.addEventListener("keydown",l)})})})}function ss({stateManager:e,boardModifiers:t,item:r,hasDate:n,path:i}){let a=e.getSetting("date-format"),o=e.getSetting("link-date-to-daily-note"),s=e.getSetting("date-trigger"),u=o?"(?:\\[[^\\]]+\\]\\([^)]+\\)|\\[\\[[^\\]]+\\]\\])":"{[^}]+}",l=new RegExp(`(^|\\s)${Ln(s)}${u}`);return c=>{let d=c[0],f=(0,rt.moment)(d).format(a),p=o?Yo(e.app,f):`{${f}}`,g=r.data.titleRaw;n?g=r.data.titleRaw.replace(l,`$1${s}${p}`):g=`${r.data.titleRaw} ${s}${p}`,e.updateItemContent(r,g).then(y=>{t.updateItem(i,y)}).catch(y=>{e.setError(y),console.error(y)})}}function Au(e){let t=e.getSetting("time-format"),r=[];for(let n=0;n<24;n++)r.push((0,rt.moment)({hour:n}).format(t)),r.push((0,rt.moment)({hour:n,minute:15}).format(t)),r.push((0,rt.moment)({hour:n,minute:30}).format(t)),r.push((0,rt.moment)({hour:n,minute:45}).format(t));return r}function ls(e,t,r,n,i){let a=B("time-picker"),o=t.getSetting("time-format"),s=i==null?void 0:i.format(o);e.document.body.createDiv({cls:`${a} ${B("ignore-click-outside")}`},u=>{let l=Au(t),c=b=>{b.target instanceof b.view.HTMLElement&&b.target.hasClass(B("time-picker-item"))&&b.target.dataset.value&&(n(b.target.dataset.value),p())},d=b=>{b.target instanceof b.view.HTMLElement&&b.target.closest(`.${a}`)===null&&p()},f=b=>{b.key==="Escape"&&p()},p=()=>{u.remove(),u.removeEventListener("click",c),e.document.body.removeEventListener("click",d),e.document.removeEventListener("keydown",f)};u.style.left=`${r.x||0}px`,u.style.top=`${r.y||0}px`;let g=null,y=null;l.forEach((b,x)=>{let T=b===s;u.createDiv({cls:`${B("time-picker-item")} ${T?"is-selected":""}`,text:b},C=>{C.createEl("span",{cls:B("time-picker-check"),prepend:!0},A=>{(0,rt.setIcon)(A,"lucide-check")}),x%4==0&&C.addClass("is-hour"),C.dataset.value=b,T&&(g=C),x===Math.floor(l.length/2)&&(y=C)})}),u.win.setTimeout(()=>{var T;let b=u.clientHeight,x=u.clientWidth;r.y+b>e.innerHeight&&(u.style.top=`${(r.y||0)-b}px`),r.x+x>e.innerWidth&&(u.style.left=`${(r.x||0)-x}px`),(T=g||y)==null||T.scrollIntoView({block:"center",inline:"nearest"}),u.addEventListener("click",c),e.document.body.addEventListener("click",d),e.document.addEventListener("keydown",f)})})}function cs({stateManager:e,boardModifiers:t,item:r,hasTime:n,path:i}){let a=e.getSetting("time-trigger"),o=new RegExp(`(^|\\s)${Ln(a)}{([^}]+)}`);return s=>{let u=r.data.titleRaw;n?u=r.data.titleRaw.replace(o,`$1${a}{${s}}`):u=`${r.data.titleRaw} ${a}{${s}}`,e.updateItemContent(r,u).then(l=>{t.updateItem(i,l)}).catch(l=>{e.setError(l),console.error(l)})}}function iv(e){let t=e.data.metadata.date,r=[];t&&(t.isSame(new Date,"day")&&r.push("is-today"),t.isAfter(new Date,"day")&&r.push("is-future"),t.isBefore(new Date,"day")&&r.push("is-past")),e.data.isComplete&&r.push("is-complete");for(let n of e.data.metadata.tags)r.push(`has-tag-${n.slice(1)}`);return r}function Vr(e,t,r,n){return e.app.fileManager.generateMarkdownLink(t,r,n)}function sS(e,t,r){return rt.htmlToMarkdown?(0,rt.htmlToMarkdown)(r):rt.MarkdownSourceView.prototype.handleDataTransfer.call({app:e.app},t)}function lS(e){return e.replace(/^\[(.*)\]\(app:\/\/obsidian.md\/(.*)\)$/,"[$1]($2)")}function Lu(e){var r;let t=e.require("electron").remote.clipboard;if(process.platform==="darwin"){if(t.has("NSFilenamesPboardType"))return((r=t.read("NSFilenamesPboardType").match(/.*<\/string>/g))==null?void 0:r.map(n=>n.replace(/|<\/string>/g,"")))||[];{let n=t.readImage("clipboard");return n.isEmpty()?[t.read("public.file-url").replace("file://","")].filter(i=>i):[{buffer:n.toPNG(),mimeType:"image/png",originalName:`Pasted image ${(0,rt.moment)().format("YYYYMMDDHHmmss")}.png`}]}}else if(t.has("CF_HDROP")){let n=t.read("CF_HDROP")||"",i=[...n].filter((o,s)=>n.charCodeAt(s)!==0).join("").replace(/\\/g,"\\"),a=i.match(/[a-zA-Z]:\\/);if(a){let o=i.indexOf(a[0]);return o!==0&&(i=i.slice(o)),i.split(a[0]).filter(s=>s).map(s=>a+s)}}else{let n=t.readImage("clipboard");return n.isEmpty()?[t.readBuffer("FileNameW").toString("ucs2").replace(RegExp(String.fromCharCode(0),"g"),"")].filter(i=>i):[{buffer:n.toPNG(),mimeType:"image/png",originalName:`Pasted image ${(0,rt.moment)().format("YYYYMMDDHHmmss")}.png`}]}return null}function cS(e){return e.split("\\").pop().split("/").pop()}async function uS(e,t,r,n){let i=await e.app.vault.getAvailablePathForAttachments(t,r,e.file),a=await e.app.vault.createBinary(i,n);return Vr(e,a,e.file.path)}async function dS(e,t){let r=Lu(t);if(!r||r.length===0)return null;let n=t.require("fs/promises"),i=t.require("path");return(await Promise.all(r.map(async a=>{if(typeof a=="string"){let s=cS(a).split("."),u=s.pop(),l=s.join("."),c=await e.app.vault.getAvailablePathForAttachments(l,u,e.file),d=e.app.vault.adapter.basePath;await n.copyFile(a,i.join(d,c)),await new Promise(p=>t.setTimeout(p,50));let f=e.app.vault.getAbstractFileByPath(c);return Vr(e,f,e.file.path)}else{let o=a.originalName.split("."),s=o.pop(),u=o.join(".");return await uS(e,u,s,a.buffer)}}))).filter(a=>a)}function av(e,t,r){return Promise.all(t.map(n=>{let i=n.name.split("."),a=i.pop(),o=i.join(".");if(r){switch(n.type){case"text/jpg":a="jpg";break;case"text/jpeg":a="jpeg";break;case"text/png":a="png";break}o="Pasted image "+(0,rt.moment)().format("YYYYMMDDHHmmss")}return new Promise((s,u)=>{let l=new FileReader;l.onload=async c=>{try{let d=await e.app.vault.getAvailablePathForAttachments(o,a,e.file),f=await e.app.vault.createBinary(d,c.target.result);s(Vr(e,f,e.file.path))}catch(d){console.error(d),u(d)}},l.readAsArrayBuffer(n)})}))}async function fS(e,t,r){let n=!t.view,i=n?e.getAView().isShiftPressed:!1,a=n?t.clipboardData:t.dataTransfer,o=n&&rt.Platform.isDesktopApp?r.require("electron").remote.clipboard:null,s=o?o.availableFormats():[];if(n){if(n&&!i&&!s.includes("text/rtf")){if(rt.Platform.isDesktopApp){let g=await dS(e,r);if(g==null?void 0:g.length)return g}let f=[],p=t.clipboardData.items;for(let g in p){let y=p[g];y.kind==="file"&&f.push(y.getAsFile())}if(f.length)return await av(e,f,!0)}}else{let f=await hc(t);if(f.length)return await av(e,f)}let u=a.getData("text/html"),l=a.getData("text/plain"),c=a.getData("text/uri-list"),d=i?l||u:sS(e,a,u);return[lS(d||c||l||u||"").trim()]}async function us(e,t,r){let n=e.app.dragManager.draggable,i=t.view?t.dataTransfer:t.clipboardData;switch(n==null?void 0:n.type){case"file":return[Vr(e,n.file,e.file.path)];case"files":return n.files.map(a=>Vr(e,a,e.file.path));case"folder":return n.file.children.map(a=>a instanceof rt.TFolder?null:Vr(e,a,e.file.path)).filter(a=>a);case"link":{let a=n.file?Vr(e,n.file,(0,rt.parseLinktext)(n.linktext).subpath):`[[${n.linktext}]]`,o=new DOMParser().parseFromString(i.getData("text/html"),"text/html").documentElement.textContent;return a=a.replace(/]]$/,`|${o}]]`).replace(/^\[[^\]].+]\(/,`[${o}](`),[a]}default:return await fS(e,t,r)}}m();function ds(e,t){let r,n,i=(...a)=>{r=a,!n&&(n=e.requestAnimationFrame(()=>{n=null,t(...r)}))};return i.cancel=()=>{!n||(e.cancelAnimationFrame(n),n=null)},i}var ov={outOfTheWay:"cubic-bezier(0.2, 0, 0, 1)",drop:"cubic-bezier(.2,1,.1,1)"};var Ci={outOfTheWay:200,minDropTime:330,maxDropTime:550},Er=`${Ci.outOfTheWay}ms ${ov.outOfTheWay}`;var ln={none:"none",fluid:`opacity ${Er}`,snap:`transform ${Er}, opacity ${Er}`,drop:e=>{let t=`${e}ms ${ov.drop}`;return`transform ${t}, opacity ${t}`},outOfTheWay:`transform ${Er}`,placeholder:`height ${Er}, width ${Er}, margin ${Er}, border-color ${Er}`},pS=(e,t)=>e.x===t.x&&e.y===t.y,hS={x:0,y:0},sv=e=>pS(e,hS)?void 0:`translate(${e.x}px, ${e.y}px)`,lv={moveTo:sv,drop:e=>sv(e)},mS=Ci.maxDropTime-Ci.minDropTime,cv=1500,gS=.6;function Di({position:e,destination:t,isCancel:r}){let n=di(e,t);if(n<=0)return Ci.minDropTime;if(n>=cv)return Ci.maxDropTime;let i=n/cv,a=Ci.minDropTime+mS*i,o=r?a*gS:a;return Math.round(o)}function Tn(e,t,r){e.style.getPropertyValue(t)!==r&&e.style.setProperty(t,r)}function fs(e,t){e.style.getPropertyValue(t)&&e.style.removeProperty(t)}m();m();var Mn;(function(i){i[i.TitleAsc=0]="TitleAsc",i[i.TitleDsc=1]="TitleDsc",i[i.DateAsc=2]="DateAsc",i[i.DateDsc=3]="DateDsc"})(Mn||(Mn={}));var Je={Item:"item",Lane:"lane",Board:"board",MetadataSetting:"metadata-setting",TagColorSetting:"tag-color",DateColorSetting:"date-color"},ps={accepts:[Je.Item],type:Je.Item,children:[]},kr={accepts:[Je.Lane],type:Je.Lane},hs={accepts:[],type:Je.Board},ms={accepts:[Je.MetadataSetting],type:Je.MetadataSetting,children:[]},gs={accepts:[],type:Je.TagColorSetting,children:[]},vs={accepts:[],type:Je.DateColorSetting,children:[]};function Pu(e,t,r,n,i){let a="htmldnd",o=Ae(),s=e-75,u=e+75,l=t-25,c=t+25;return{scopeId:a,entityId:`${a}-${o}`,initial:[s,l,u,c],getParentScrollState(){return on},getParentScrollShift(){return Pn},recalcInitial(){},getHitbox(){return this.initial},getPath(){return[]},getData(){return{viewId:n,type:Je.Item,id:o,content:r,accepts:[],win:i}}}}var Nu=class{constructor(t,r,n,i){this.isHTMLDragging=!1;this.dragOverTimeout=0;this.win=t,this.hitboxEntities=n,this.scrollEntities=i,this.emitter=r}getDragEventData(){return{dragEntity:this.dragEntity,dragEntityId:this.dragEntityId,dragEntityMargin:this.dragEntityMargin,dragOrigin:this.dragOrigin,dragOriginHitbox:this.dragOriginHitbox,dragPosition:this.dragPosition,primaryIntersection:this.primaryIntersection,scrollIntersection:this.scrollIntersection}}dragStart(t,r){var a;let n=(r==null?void 0:r.dataset.hitboxid)||t.currentTarget.dataset.hitboxid;if(!n)return;let i=getComputedStyle(r||t.currentTarget);this.dragEntityId=n,this.dragOrigin={x:t.pageX,y:t.pageY},this.dragPosition={x:t.pageX,y:t.pageY},this.dragEntity=this.hitboxEntities.get(n),this.dragOriginHitbox=(a=this.dragEntity)==null?void 0:a.getHitbox(),this.dragEntityMargin=[parseFloat(i.marginLeft)||0,parseFloat(i.marginTop)||0,parseFloat(i.marginRight)||0,parseFloat(i.marginBottom)||0],this.emitter.emit("dragStart",this.getDragEventData())}dragStartHTML(t,r){this.isHTMLDragging=!0;let n=Pu(t.pageX,t.pageY,[],r,t.view);this.dragEntityId=n.entityId,this.dragOrigin={x:t.pageX,y:t.pageY},this.dragPosition={x:t.pageX,y:t.pageY},this.dragEntity=n,this.dragOriginHitbox=n.getHitbox(),this.dragEntityMargin=[0,0,0,0],this.emitter.emit("dragStart",this.getDragEventData())}dragMove(t){this.dragPosition={x:t.pageX,y:t.pageY},this.emitter.emit("dragMove",this.getDragEventData()),this.calculateDragIntersect()}dragMoveHTML(t){this.dragPosition={x:t.pageX,y:t.pageY},this.emitter.emit("dragMove",this.getDragEventData()),this.calculateDragIntersect()}dragEnd(t){this.emitter.emit("dragEnd",this.getDragEventData()),this.dragEntityMargin=void 0,this.dragEntity=void 0,this.dragEntityId=void 0,this.dragOrigin=void 0,this.dragOriginHitbox=void 0,this.dragPosition=void 0,this.scrollIntersection=void 0,this.primaryIntersection=void 0}dragEndHTML(t,r,n,i){this.isHTMLDragging=!1,i||(this.dragEntity=Pu(t.pageX,t.pageY,n,r,t.view),this.emitter.emit("dragEnd",this.getDragEventData())),this.dragEntityMargin=void 0,this.dragEntity=void 0,this.dragEntityId=void 0,this.dragOrigin=void 0,this.dragOriginHitbox=void 0,this.dragPosition=void 0,this.scrollIntersection=void 0,this.primaryIntersection=void 0,i&&this.emitter.emit("dragEnd",this.getDragEventData())}onHTMLDragLeave(t){this.win.clearTimeout(this.dragOverTimeout),this.dragOverTimeout=this.win.setTimeout(t,351)}calculateDragIntersect(){if(!this.dragEntity||!this.dragPosition||!this.dragOrigin||!this.dragOriginHitbox)return;let{type:t,win:r}=this.dragEntity.getData(),n=[],i=[],a=[],o=[];if(this.hitboxEntities.forEach(l=>{let c=l.getData();r===c.win&&c.accepts.includes(t)&&(n.push(l),i.push(l.getHitbox()))}),this.scrollEntities.forEach(l=>{let c=l.getData();r===c.win&&c.accepts.includes(t)&&(a.push(l),o.push(l.getHitbox()))}),n.length===0&&a.length===0)return;let s=Rp(this.dragOriginHitbox,this.dragOrigin,this.dragPosition);this.handleScrollIntersect(s,this.dragEntity.entityId,o,a)||this.handleHitboxIntersect(s,this.dragEntity.entityId,i,n)}handleScrollIntersect(t,r,n,i){let a=(0,Fu.default)([t],n).map(s=>i[s[1]]),o=Np(a,t,r);if(this.scrollIntersection&&(!o||o[0]!==this.scrollIntersection[0])){let[s,u]=this.scrollIntersection,l=s.getData(),c=s.entityId,d=l.side;this.emitter.emit("endDragScroll",{...this.getDragEventData(),scrollEntity:s,scrollEntityId:c,scrollEntitySide:d,scrollStrength:u},c),this.scrollIntersection=void 0}if(o&&(!this.scrollIntersection||this.scrollIntersection[0]!==o[0])){let[s,u]=o,l=s.getData(),c=s.entityId,d=l.side;this.emitter.emit("beginDragScroll",{...this.getDragEventData(),scrollEntity:s,scrollEntityId:c,scrollEntitySide:d,scrollStrength:u},c),this.scrollIntersection=o}else if(o&&this.scrollIntersection&&o[0]===this.scrollIntersection[0]){let[s,u]=o,l=s.getData(),c=s.entityId,d=l.side;this.emitter.emit("updateDragScroll",{...this.getDragEventData(),scrollEntity:s,scrollEntityId:c,scrollEntitySide:d,scrollStrength:u},c),this.scrollIntersection=o}return!!o}handleHitboxIntersect(t,r,n,i){let a=(0,Fu.default)([t],n).map(s=>i[s[1]]),o=zl(a,t,r);this.primaryIntersection&&this.primaryIntersection!==o&&(this.emitter.emit("dragLeave",this.getDragEventData(),this.primaryIntersection.entityId),this.primaryIntersection=void 0),o&&this.primaryIntersection!==o&&(this.emitter.emit("dragEnter",{...this.getDragEventData(),primaryIntersection:o},o.entityId),this.primaryIntersection=o)}},Ti=e=>{e.preventDefault(),e.stopPropagation()};function Mi(e,t){let r=P.useContext(xt);P.useEffect(()=>{let n=e.current,i=t.current;if(!r||!n||!i)return;let a=s=>{if(s.defaultPrevented||s.target.dataset.ignoreDrag||s.button!==0&&s.buttons!==1)return;let u=s.view,l=["pen","touch"].includes(s.pointerType);l||(s.stopPropagation(),s.preventDefault());let c=s,d={x:s.pageX,y:s.pageY},f=!1,p=0;l&&(u.addEventListener("contextmenu",Ti,!0),p=u.setTimeout(()=>{r.dragManager.dragStart(c,n),f=!0,u.addEventListener("touchmove",Ti,{passive:!1})},500));let g=ds(u,b=>{l?f?r.dragManager.dragMove(b):di(d,{x:b.pageX,y:b.pageY})>5&&(u.clearTimeout(p),u.removeEventListener("touchmove",Ti),u.removeEventListener("contextmenu",Ti,!0),u.removeEventListener("pointermove",g),u.removeEventListener("pointerup",y),u.removeEventListener("pointercancel",y)):f?r.dragManager.dragMove(b):di(d,{x:b.pageX,y:b.pageY})>5&&(r.dragManager.dragStart(c,n),f=!0)}),y=b=>{u.clearTimeout(p),f=!1,r.dragManager.dragEnd(b),u.removeEventListener("pointermove",g),u.removeEventListener("pointerup",y),u.removeEventListener("pointercancel",y),l&&(u.removeEventListener("contextmenu",Ti,!0),u.removeEventListener("touchmove",Ti))};u.addEventListener("pointermove",g),u.addEventListener("pointerup",y),u.addEventListener("pointercancel",y)},o=s=>{s.stopPropagation()};return i.addEventListener("pointerdown",a),i.addEventListener("touchstart",o),()=>{i.removeEventListener("pointerdown",a),i.removeEventListener("touchstart",o)}},[e,t,r])}function uv(e){let t=P.useContext(xt),r=P.useCallback(i=>{t.dragManager.isHTMLDragging?(i.preventDefault(),t.dragManager.dragMoveHTML(i)):t.dragManager.dragStartHTML(i,e.getAView().id),t.dragManager.onHTMLDragLeave(()=>{t.dragManager.dragEndHTML(i,e.getAView().id,[],!0)})},[t,e]),n=P.useCallback(async i=>{t.dragManager.dragEndHTML(i,e.getAView().id,await us(e,i,activeWindow),!1)},[t,e]);return{onDragOver:r,onDrop:n}}m();var fv=me(Et());m();var dv=me(require("obsidian"));function _t({name:e,className:t}){return h("span",{"data-icon":e,className:`${B("icon")} ${t||""}`,ref:r=>{r&&(0,dv.setIcon)(r,e)}})}var pv=P.memo(function({shouldMarkItemsComplete:t,path:r,item:n,stateManager:i,boardModifiers:a}){let o=i.useSetting("show-checkboxes"),[s,u]=P.useState(!1),[l,c]=P.useState(!1);return P.useEffect(()=>{if(l){let d=f=>{f.metaKey||f.ctrlKey?u(!0):u(!1)};return window.addEventListener("keydown",d),window.addEventListener("keyup",d),()=>{window.removeEventListener("keydown",d),window.removeEventListener("keyup",d)}}},[l]),t||o?h("div",{onMouseEnter:d=>{c(!0),(d.ctrlKey||d.metaKey)&&u(!0)},onMouseLeave:()=>{c(!1),s&&u(!1)},className:B("item-prefix-button-wrapper")},o&&!s&&h("input",{onChange:()=>{a.updateItem(r,(0,fv.default)(n,{data:{$toggle:["isComplete"]}}))},type:"checkbox",className:"task-list-item-checkbox",checked:!!n.data.isComplete}),(s||!o&&t)&&h("a",{onClick:()=>{a.archiveItem(r)},className:`${B("item-prefix-button")} clickable-icon`,"aria-label":s?void 0:"Archive card"},h(_t,{name:"sheets-in-box"}))):null});m();var qy=me(require("obsidian"));m();var mv=me(require("obsidian"));m();var Ou;function hv(e){if(e.nodeName!=="TEXTAREA")return!1;if(typeof Ou=="undefined"){let t=e.doc.createElement("textarea");t.value=1,Ou=!!t.firstChild}return Ou}function Da(e,t){var i;e.focus();let r=e.doc;if(!r.execCommand("insertText",!1,t)){let a=e.selectionStart,o=e.selectionEnd;if(typeof e.setRangeText=="function")e.setRangeText(t);else{let u=r.createRange(),l=r.createTextNode(t);if(hv(e)){let c=e.firstChild;if(!c)e.appendChild(l);else{let d=0,f=null,p=null;for(;c&&(f===null||p===null);){let g=((i=c.nodeValue)==null?void 0:i.length)||0;a>=d&&a<=d+g&&u.setStart(f=c,a-d),o>=d&&o<=d+g&&u.setEnd(p=c,o-d),d+=g,c=c.nextSibling}a!==o&&u.deleteContents()}}if(hv(e)&&u.commonAncestorContainer.nodeName==="#text")u.insertNode(l);else{let c=e.value;e.value=c.slice(0,a)+t+c.slice(o)}}e.setSelectionRange(a+t.length,a+t.length);let s=r.createEvent("UIEvent");s.initEvent("input",!0,!1),e.dispatchEvent(s)}}var Ru=e=>e.charCodeAt(0)===10,gv=e=>e===" "||Ru(e);function vS(e,t,r){if(!e)throw Error("Argument 'text' should be truthy");let n=0,i=e.length;for(let a=t;a-1>-1;a--)if(Ru(e[a-1])){n=a;break}for(let a=r===void 0?t:r;a-1;a--)if(gv(e[a-1])){n=a;break}for(let a=r===void 0?t:r;a0&&e.value[a.selection.start-1]!==" ")return!1;if(a.selection.end===a.selection.start){let s=Lt(e,`${r}`);return Pt(e,{start:s.selection.end-1-a.selectedText.length,end:s.selection.end-1}),!1}let o=Lt(e,`${t}${a.selectedText}${r}`);return Pt(e,{start:o.selection.end-1-a.selectedText.length,end:o.selection.end-1}),!0}function ys(e,t,r,n){let i=On(e),a=Ii({text:i.text,selection:i.selection}),o=Pt(e,a),s=t.test(o.selectedText)?n(o.selectedText):r(o.selectedText),u=Lt(e,s);Pt(e,{start:o.selection.start,end:u.selection.end})}function bs(e,t){var r;if(t.types.includes("text/uri-list")||["file","files","link","folder"].includes((r=e.app.dragManager.draggable)==null?void 0:r.type))return"link";if(t.types.includes("text/html")||t.types.includes("text/plain"))return"copy"}async function ws(e,t,r){let n=e.clipboardData.getData("text/html"),i=e.clipboardData.types.includes("Files"),a=mv.Platform.isDesktopApp?Lu(r):null,o=n||i||(a==null?void 0:a.length)>0;o&&e.preventDefault();try{let s=await us(t,e,r);if(o){let u=e.target,l=s.join(` +`);Lt(u,l)}}catch(s){console.error(s),t.setError(s)}}m();var fd=me(require("obsidian"));m();m();var vv={};m();var yv={};m();var bv={};m();var wv={"Open as kanban board":"\xD6ffne als Kanban-Board","Create new board":"Erstelle ein neues Board","Archive completed cards in active board":"Archiviere fertiggestellte Karten im aktiven Board","Error: current file is not a Kanban board":"Fehler: Momentan ge\xF6ffnete Datei ist kein Kanban-Board","Convert empty note to Kanban":"Konvertiere leere Notiz in ein Kanban-Board","Error: cannot create Kanban, the current note is not empty":"Fehler: Kanban konnte nicht erstellt werden, momentan ge\xF6ffnete Datei ist nicht leer","New kanban board":"Neues Kanban-Board","Untitled Kanban":"Unbenanntes Kanban","Toggle between Kanban and markdown mode":"Wechsle zwischen Kanban und Markdown Modus","Open as markdown":"\xD6ffne als Markdown","Open board settings":"\xD6ffne Board-Einstellungen","Archive completed cards":"Archiviere fertiggestellte Karten","Something went wrong":"Etwas ist schief gelaufen","You may wish to open as markdown and inspect or edit the file.":"Du kannst die Datei im Markdown Modus \xF6ffnen und \xFCberpr\xFCfen oder bearbeiten.","Are you sure you want to archive all completed cards on this board?":"Bist du dir sicher, dass du alle fertiggestellten Karten des Boards archivieren m\xF6chtest?",Complete:"Fertiggestellt",Archive:"Archiv","Invalid Kanban file: problems parsing frontmatter":"Fehlerhafte Kanban Datei: Probleme beim Parsen des Frontmatters","I don't know how to interpret this line:":"Ich wei\xDF nicht, wie ich diese Zeile interpretieren soll:",Untitled:"Unbenannt","Note: No template plugins are currently enabled.":"Beachte: Keine Template-Plugins sind derzeit aktiviert.",default:"Standard","Search...":"Suche...","These settings will take precedence over the default Kanban board settings.":"Diese Einstellung wird Vorrang vor der standard Kanban-Board Einstellung haben. ","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"Stelle standard Kanban-Board Einstellungen ein. Einstellungen k\xF6nnen auf einer Board-f\xFCr-Board Basis \xFCberschrieben werden.","Note template":"Notiz Vorlage","This template will be used when creating new notes from Kanban cards.":"Diese Vorlage wird beim Erstellen neuer Notizen aus Kanban-Karten verwendet.","No template":"Keine Vorlage","Note folder":"Notiz Ordner","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"Notizen, welche aus einer Kanban-Karte erstellt wurden, werden in diesem Ordner platziert. Falls leer, werden die Einstellungen des Vaults verwendet.","Default folder":"Standard Ordner","Lane width":"Schienen Breite","Enter a number to set the lane width in pixels.":"Gebe ein Zahl ein, um die Schienen Breite in Pixeln einzustellen.","Maximum number of archived cards":"Maximale Anzahl archivierter Karten.","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"Archivierte Karten k\xF6nnen im Markdown-Modus betrachtet werden. Diese Einstellung wird alte Karten l\xF6schen, sobald das Limit erreicht wird. Eine Einstellung von -1 setzt das Archiv auf eine unendliche Gr\xF6\xDFe.","Display card checkbox":"Zeige Karten Checkbox","When toggled, a checkbox will be displayed with each card":"Wenn aktiviert, wird eine Checkbox mit jeder Karte angezeigt.","Reset to default":"Zur\xFCcksetzen","Date & Time":"Datum & Uhrzeit","Date trigger":"Datums Ausl\xF6ser","When this is typed, it will trigger the date selector":"Wenn dies eingegeben wird, dann wird die Datumsauswahl angezeigt","Time trigger":"Uhrzeit Ausl\xF6ser","When this is typed, it will trigger the time selector":"Wenn dies eingegeben wird, dann wird die Uhrzeitsauswahl angezeigt","Date format":"Format des Datums","This format will be used when saving dates in markdown.":"Dieses Format wird verwendet, wenn ein Datum in Markdown gespeichert wird.","For more syntax, refer to":"F\xFCr mehr Syntax Informationen siehe","format reference":"Formatvorlage","Your current syntax looks like this":"Dein momentanes Format sieht so aus","Time format":"Format der Uhrzeit","Date display format":"Format der Datums Anzeige","This format will be used when displaying dates in Kanban cards.":"Dieses Format wird verwendet, wenn ein Datum in einer Kanban-Karte angezeigt wird.","Show relative date":"Zeige relatives Datum","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"Wenn aktiviert, wird die Zeitspanne zwischen Heute und dem Datum angezeigt. Zum Beispiel: 'In 3 Tagen', 'Vor einem Monat'","Hide card display dates":"Verstecke Karten Datum","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"Wenn aktiviert, werden formatierte Daten nicht auf der Karte angezeigt. Relative Daten werden dennoch angezeigt, solange sie aktiviert sind.","Hide dates in card titles":"Verstecke Daten im Titel der Karte","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"Wenn aktiviert, werden Daten nicht im Titel der Karte angezeigt. Dies verhindert, dass Daten im Titel neu erstellter Notizen vorhanden sind.","Link dates to daily notes":"Verbinde Daten zu Daily Notes","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"Wenn aktiviert, werden Daten mit Daily Notes verbunden. Zum Beispiel [[26.4.2021]]","Add date and time to archived cards":"F\xFCge Datum und Uhrzeit zu archivierten Notizen hinzu","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"Wenn aktiviert, wird das momentane Datum und die momentane Zeit am Anfang einer Karte hinzugef\xFCgt, wenn sie archiviert wird. Zum Beispiel: - [ ] 14.05.2021 10:00 Mein Karten Titel","Archive date/time separator":"Datum/Uhrzeit Trenner f\xFCr das Archiv","This will be used to separate the archived date/time from the title":"Dies wird verwendet, um das Datum und die Uhrzeit archivierter Karten vom Titel zu trennen","Archive date/time format":"Format des Datums und der Uhrzeit f\xFCr das Archiv","Kanban Plugin":"Kanban Erweiterung","New line trigger":"Taste f\xFCr neue Zeile","Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lanes.":"W\xE4hle aus ob Enter oder Umschalttaste+Enter eine neue Zeile erstellen soll. Das Gegenteil kannst du verwenden um die Karte zu erstellen oder das bearbeiten der Karte oder Schiene zu beenden.","Shift + Enter":"Umschalttaste + Enter",Enter:"Enter","Prepend / append new cards":"Neue Karten voranf\xFCgen / anh\xE4ngen","This setting controls whether new cards are added to the beginning or end of the list.":"Diese Einstellung gibt an ob neue Karten am Anfang oder am Ende einer Liste hinzugef\xFCgt werden.",Prepend:"Voranf\xFCgen",Append:"Anh\xE4ngen","Hide tags in card titles":"Ausblenden von Tags in Kartentiteln","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"Ist diese Einstellung an, so werden Tags im Kartentitel nicht angezeigt. Dadurch wird verhindert, dass Tags beim Erstellen neuer Notizen in den Titel aufgenommen werden.","Hide card display tags":"Ausblenden von Kartenanzeige-Tags","When toggled, tags will not be displayed below the card title.":"Ist diese Einstellung an, werden Tags nicht unter dem Kartentitel angezeigt.","Linked Page Metadata":"Metadaten f\xFCr verkn\xFCpfte (verlinkte) Notizen","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"Zeigen Sie Metadaten f\xFCr die erste Notiz an, die innerhalb einer Karte verkn\xFCpft ist. Geben Sie an, welche Metadatenschl\xFCssel unten angezeigt werden sollen. Ein optionales Label kann hinzugef\xFCgt werden, es kann aber auch vollst\xE4ndig ausgeblendet werden.","Metadata key":"Metadatenschl\xFCssel","Display label":"Anzeigelabel","Hide label":"Label ausblenden","Drag to rearrange":"Zum Neuanordnen ziehen",Delete:"L\xF6schen","Add key":"Schl\xFCssel hinzuf\xFCgen","Field contains markdown":"Feld beinhaltet Markdown","More options":"Mehr optionen",Cancel:"Abbrechen",today:"heute",yesterday:"gestern",tomorrow:"morgen","Change date":"Ver\xE4ndere Datum","Change time":"Ver\xE4ndere Uhrzeit","Card title...":"Karten Titel...","Add card":"Karte hinzuf\xFCgen","Add a card":"F\xFCge eine Karte hinzu","Edit card":"Karte editieren","New note from card":"Neue Notiz aus Karte erstellen","Archive card":"Karte archivieren","Delete card":"Karte l\xF6schen","Edit date":"Datum editieren","Add date":"Datum hinzuf\xFCgen","Remove date":"Datum entfernen","Edit time":"Karte editieren","Add time":"Uhrzeit hinzuf\xFCgen","Remove time":"Uhrzeit entfernen","Duplicate card":"Karte duplizieren","Enter list title...":"Listen Titel eingeben..","Mark cards in this list as complete":"Markiere Karten in dieser Liste als fertiggestellt","Add list":"Liste hinzuf\xFCgen","Add a list":"F\xFCge eine Liste hinzu","Move list":"Liste verschieben",Close:"Schlie\xDFen","Are you sure you want to delete this list and all its cards?":"Bist du dir sicher, dass du diese Liste und alle ihre Karten l\xF6schen m\xF6chtest?","Yes, delete list":"Ja, l\xF6sche diese Liste","Are you sure you want to archive this list and all its cards?":"Bist du dir sicher, dass du diese Liste und alle ihre Karten archivieren m\xF6chtest?","Yes, archive list":"Ja, archiviere diese Liste","Are you sure you want to archive all cards in this list?":"Bist du dir sicher, dass du alle Karten in dieser Liste archivieren m\xF6chtest?","Yes, archive cards":"Ja, archiviere Karten","Edit list":"Editiere Liste","Archive cards":"Archiviere Karten","Archive list":"Archiviere List","Delete list":"L\xF6sche Liste"};m();var Hu={"Open as kanban board":"Open as kanban board","Create new board":"Create new board","Archive completed cards in active board":"Archive completed cards in active board","Error: current file is not a Kanban board":"Error: current file is not a Kanban board","Convert empty note to Kanban":"Convert empty note to Kanban","Error: cannot create Kanban, the current note is not empty":"Error: cannot create Kanban, the current note is not empty","New kanban board":"New kanban board","Untitled Kanban":"Untitled Kanban","Toggle between Kanban and markdown mode":"Toggle between Kanban and markdown mode","Open as markdown":"Open as markdown","Open board settings":"Open board settings","Archive completed cards":"Archive completed cards","Something went wrong":"Something went wrong","You may wish to open as markdown and inspect or edit the file.":"You may wish to open as markdown and inspect or edit the file.","Are you sure you want to archive all completed cards on this board?":"Are you sure you want to archive all completed cards on this board?",Complete:"Complete",Archive:"Archive","Invalid Kanban file: problems parsing frontmatter":"Invalid Kanban file: problems parsing frontmatter","I don't know how to interpret this line:":"I don't know how to interpret this line:",Untitled:"Untitled","Note: No template plugins are currently enabled.":"Note: No template plugins are currently enabled.",default:"default","Search...":"Search...","New line trigger":"New line trigger","Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lists.":"Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lists.","Shift + Enter":"Shift + Enter",Enter:"Enter","Prepend / append new cards":"Prepend / append new cards","This setting controls whether new cards are added to the beginning or end of the list.":"This setting controls whether new cards are added to the beginning or end of the list.",Prepend:"Prepend","Prepend (compact)":"Prepend (compact)",Append:"Append","These settings will take precedence over the default Kanban board settings.":"These settings will take precedence over the default Kanban board settings.","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.","Note template":"Note template","This template will be used when creating new notes from Kanban cards.":"This template will be used when creating new notes from Kanban cards.","No template":"No template","Note folder":"Note folder","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.","Default folder":"Default folder","List width":"List width","Enter a number to set the list width in pixels.":"Enter a number to set the list width in pixels.","Maximum number of archived cards":"Maximum number of archived cards","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.","Display card checkbox":"Display card checkbox","When toggled, a checkbox will be displayed with each card":"When toggled, a checkbox will be displayed with each card","Reset to default":"Reset to default","Date & Time":"Date & Time","Date trigger":"Date trigger","When this is typed, it will trigger the date selector":"When this is typed, it will trigger the date selector","Time trigger":"Time trigger","When this is typed, it will trigger the time selector":"When this is typed, it will trigger the time selector","Date format":"Date format","This format will be used when saving dates in markdown.":"This format will be used when saving dates in markdown.","For more syntax, refer to":"For more syntax, refer to","format reference":"format reference","Your current syntax looks like this":"Your current syntax looks like this","Time format":"Time format","Date display format":"Date display format","This format will be used when displaying dates in Kanban cards.":"This format will be used when displaying dates in Kanban cards.","Show relative date":"Show relative date","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'","Hide card display dates":"Hide card display dates","Hide card counts in list titles":"Hide card counts in list titles","When toggled, card counts are hidden from the list title":"When toggled, card counts are hidden from the list title","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.","Hide dates in card titles":"Hide dates in card titles","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.","Link dates to daily notes":"Link dates to daily notes","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"When toggled, dates will link to daily notes. Eg. [[2021-04-26]]","Add date and time to archived cards":"Add date and time to archived cards","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title","Archive date/time separator":"Archive date/time separator","This will be used to separate the archived date/time from the title":"This will be used to separate the archived date/time from the title","Archive date/time format":"Archive date/time format","Kanban Plugin":"Kanban Plugin","Hide tags in card titles":"Hide tags in card titles","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.","Hide card display tags":"Hide card display tags","When toggled, tags will not be displayed below the card title.":"When toggled, tags will not be displayed below the card title.","Display tag colors":"Display tag colors","Set colors for the tags displayed below the card title.":"Set colors for the tags displayed below the card title.","Linked Page Metadata":"Linked Page Metadata","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.","Board Header Buttons":"Board Header Buttons","Calendar: first day of week":"Calendar: first day of week","Override which day is used as the start of the week":"Override which day is used as the start of the week",Sunday:"Sunday",Monday:"Monday",Tuesday:"Tuesday",Wednesday:"Wednesday",Thursday:"Thursday",Friday:"Friday",Saturday:"Saturday","Background color":"Background color",Tag:"Tag","Text color":"Text color","Date is":"Date is",Today:"Today","After now":"After now","Before now":"Before now","Between now and":"Between now and","Display date colors":"Display date colors","Set colors for the date displayed below the card based on the rules below":"Set colors for the date displayed below the card based on the rules below","Add date color":"Add date color","Metadata key":"Metadata key","Display label":"Display label","Hide label":"Hide label","Drag to rearrange":"Drag to rearrange",Delete:"Delete","Add key":"Add key","Field contains markdown":"Field contains markdown","Add tag color":"Add tag color","More options":"More options",Cancel:"Cancel",today:"today",yesterday:"yesterday",tomorrow:"tomorrow","Change date":"Change date","Change time":"Change time","Card title...":"Card title...","Add card":"Add card","Add a card":"Add a card","Edit card":"Edit card","New note from card":"New note from card","Archive card":"Archive card","Delete card":"Delete card","Edit date":"Edit date","Add date":"Add date","Remove date":"Remove date","Edit time":"Edit time","Add time":"Add time","Remove time":"Remove time","Duplicate card":"Duplicate card","Split card":"Split card","Copy link to card":"Copy link to card","Insert card before":"Insert card before","Insert card after":"Insert card after","Add label":"Add label","Move to top":"Move to top","Move to bottom":"Move to bottom","Enter list title...":"Enter list title...","Mark cards in this list as complete":"Mark cards in this list as complete","Add list":"Add list","Add a list":"Add a list","Move list":"Move list",Close:"Close","Are you sure you want to delete this list and all its cards?":"Are you sure you want to delete this list and all its cards?","Yes, delete list":"Yes, delete list","Are you sure you want to archive this list and all its cards?":"Are you sure you want to archive this list and all its cards?","Yes, archive list":"Yes, archive list","Are you sure you want to archive all cards in this list?":"Are you sure you want to archive all cards in this list?","Yes, archive cards":"Yes, archive cards","Edit list":"Edit list","Archive cards":"Archive cards","Archive list":"Archive list","Delete list":"Delete list","Insert list before":"Insert list before","Insert list after":"Insert list after","Sort by card text":"Sort by card text","Sort by date":"Sort by date","Unable to find":"Unable to find","Open in default app":"Open in default app",Submit:"Submit"};m();var Ev={};m();var kv={};m();var xv={};m();var Sv={};m();var _v={"Open as kanban board":"Apri come bacheca Kanban","Create new board":"Crea nuova bacheca","Archive completed cards in active board":"Archivia schede completate nella bacheca attiva","Error: current file is not a Kanban board":"Errore: il file corrente non \xE8 una bacheca Kanban","Convert empty note to Kanban":"Converti nota vuota in Kanban","Error: cannot create Kanban, the current note is not empty":"Errore: Impossibile creare Kanban, la nota corrente non \xE8 vuota","New kanban board":"Nuova bacheca Kanban","Untitled Kanban":"Kanban senza titolo","Open as markdown":"Apri come markdown","Open board settings":"Apri impostazioni bacheca","Archive completed cards":"Archivia schede completate",Complete:"Completato",Archive:"Archivio","Note: No template plugins are currently enabled.":"Nota: Nessun plugin dei modelli attualmente abilitato.",default:"predefinito","Search...":"Ricerca...","These settings will take precedence over the default Kanban board settings.":"Queste impostazioni avranno la precedenza sulle impostazioni predefinite della bacheca Kanban.","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"Impostazioni predefinite della bacheca Kanban. Le impostazioni possono essere sovrascritte per ogni bacheca.","Note template":"Nota modello","This template will be used when creating new notes from Kanban cards.":"Questo modello verr\xE0 utilizzato durante la creazione di nuove note dalle schede Kanban.","No template":"Nessun modello","Note folder":"Cartella delle note","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"Le note create dalle schede Kanban verranno inserite in questa cartella. Se vuota, verranno inserite nella posizione predefinita del vault.","Default folder":"Cartella predefinita","Lane width":"Larghezza colonna","Enter a number to set the lane width in pixels.":"Inserire un numero per impostare la larghezza della colonna in pixel.","Maximum number of archived cards":"Numero massimo di schede archiviate","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"Le schede archiviate possono essere visualizzate in modalit\xE0 Markdown. Le vecchie schede verranno rimosse una volta raggiunto il limite. Impostando il valore -1 il numero di schede archiviate sar\xE0 illimitato.","Display card checkbox":"Mostra casella di controllo","When toggled, a checkbox will be displayed with each card":"Se attiva, verr\xE0 visualizzata una casella di controllo per ogni scheda","Reset to default":"Ripristina predefiniti","Date & Time":"Data e ora","Date trigger":"Selettore data","When this is typed, it will trigger the date selector":"Digitando questo, verr\xE0 attivato il selettore della data","Time trigger":"Selettore ora","When this is typed, it will trigger the time selector":"Digitando questo, verr\xE0 attivato il selettore dell'ora","Date format":"Formato data","This format will be used when saving dates in markdown.":"Formato utilizzato per il salvataggio delle date in Markdown.","For more syntax, refer to":"Per maggiori informazioni, vedere","format reference":"formato di riferimento","Your current syntax looks like this":"Formato corrente","Time format":"Formato ora","Date display format":"Formato visualizzazione data","This format will be used when displaying dates in Kanban cards.":"Formato utilizzato per visualizzare le date nelle schede Kanban.","Show relative date":"Mostra data relativa","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"Se attiva, le schede indicheranno la distanza tra la data odierna e la data della scheda. eg. 'Tra 3 giorni', 'Un mese fa'","Hide card display dates":"Hide card display dates","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"Se attiva, la data non verr\xE0 mostrata sulla scheda. Le date relative verranno comunque mostrate se sono state abilitate.","Hide dates in card titles":"Nascondi date nei titoli delle schede","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"Se attiva, la data non verr\xE0 mostrata nei titoli delle schede. Questo impedisce alle date di essere incluse quando vengono create nuove note.","Link dates to daily notes":"Collega date alle Note del giorno","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"Se attiva, le date verranno collegate alle Note del giorno. Eg. [[2021-04-26]]","Add date and time to archived cards":"Aggiungi data e ora alle schede archiviate","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"Se attiva, la data e l'ora corrente verranno aggiunte all'inizio della scheda quando viene archiviata. Eg. - [ ] 2021-05-14 10:00am Mia scheda","Archive date/time separator":"Separatore data/ora dell'archivio","This will be used to separate the archived date/time from the title":"Verr\xE0 usato per separare data e ora dell'archiviazione dal titolo","Archive date/time format":"Formato data/ora dell'archivio","Kanban Plugin":"Plugin Kanban","More options":"Altre opzioni",Cancel:"Annulla",today:"oggi",yesterday:"ieri",tomorrow:"domani","Change date":"Modifica data","Change time":"Modifica ora","Card title...":"Titolo elemento...","Add card":"Aggiungi elemento","Add a card":"Aggiungi un'altra scheda","Edit card":"Modifica scheda","New note from card":"Nuova nota da scheda","Archive card":"Archivia scheda","Delete card":"Elimina scheda","Edit date":"Modifica data","Add date":"Aggiungi data","Remove date":"Rimuovi data","Edit time":"Modifica ora","Add time":"Aggiungi ora","Remove time":"Rimuovi ora","Enter list title...":"Inserisci titolo lista...","Mark cards in this list as complete":"Segna elementi della lista come completati","Add list":"Aggiungi lista","Add a list":"Aggiungi un'altra lista","Move list":"Sposta lista",Close:"Chiudi","Are you sure you want to delete this list and all its cards?":"Cancellare questa lista e tutte le sue schede?","Yes, delete list":"Cancella lista","Are you sure you want to archive this list and all its cards?":"Archiviare questa lista e tutte le sue schede?","Yes, archive list":"Archivia lista","Are you sure you want to archive all cards in this list?":"Archiviare tutte le schede in questa lista?","Yes, archive cards":"Archivia schede","Edit list":"Modifica lista","Archive cards":"Archivia schede","Archive list":"Archivia lista","Delete list":"Cancella lista"};m();var Cv={"Open as kanban board":"\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u3068\u3057\u3066\u958B\u304F","Create new board":"\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u3092\u65B0\u898F\u4F5C\u6210","Archive completed cards in active board":"\u30A2\u30AF\u30C6\u30A3\u30D6\u30DC\u30FC\u30C9\u306E\u5B8C\u4E86\u3057\u305F\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Error: current file is not a Kanban board":"\u30A8\u30E9\u30FC: \u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093","Convert empty note to Kanban":"\u7A7A\u306E\u30CE\u30FC\u30C8\u3092\u30AB\u30F3\u30D0\u30F3\u306B\u5909\u63DB","Error: cannot create Kanban, the current note is not empty":"\u30A8\u30E9\u30FC: \u73FE\u5728\u958B\u3044\u3066\u3044\u308B\u30CE\u30FC\u30C8\u306F\u7A7A\u3067\u3042\u308A\u3001\u30AB\u30F3\u30D0\u30F3\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093","New kanban board":"\u65B0\u898F\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9","Untitled Kanban":"\u7121\u984C\u306E\u30AB\u30F3\u30D0\u30F3","Toggle between Kanban and markdown mode":"\u30AB\u30F3\u30D0\u30F3\u3068\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u306E\u30E2\u30FC\u30C9\u3092\u5207\u308A\u66FF\u3048\u308B","Open as markdown":"\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u3068\u3057\u3066\u958B\u304F","Open board settings":"\u30DC\u30FC\u30C9\u8A2D\u5B9A\u3092\u958B\u304F","Archive completed cards":"\u5B8C\u4E86\u3057\u305F\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Something went wrong":"\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F","You may wish to open as markdown and inspect or edit the file.":"\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u3068\u3057\u3066\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u3044\u3066\u8ABF\u67FB\u3059\u308B\u304B\u7DE8\u96C6\u3059\u308B\u3053\u3068\u3092\u304A\u3059\u3059\u3081\u3057\u307E\u3059\u3002","Are you sure you want to archive all completed cards on this board?":"\u3053\u306E\u30DC\u30FC\u30C9\u306B\u542B\u307E\u308C\u308B\u3059\u3079\u3066\u306E\u5B8C\u4E86\u3057\u305F\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059\u304B\uFF1F",Complete:"\u5B8C\u4E86",Archive:"\u30A2\u30FC\u30AB\u30A4\u30D6","Invalid Kanban file: problems parsing frontmatter":"\u7121\u52B9\u306A\u30AB\u30F3\u30D0\u30F3\u30D5\u30A1\u30A4\u30EB: \u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u306E\u30D1\u30FC\u30B9\u306B\u554F\u984C\u304C\u3042\u308A\u307E\u3059","I don't know how to interpret this line:":"\u3053\u306E\u884C\u3092\u3069\u3046\u89E3\u91C8\u3059\u308C\u3070\u3088\u3044\u304B\u5206\u304B\u308A\u307E\u305B\u3093",Untitled:"\u7121\u984C","Note: No template plugins are currently enabled.":"\u30CE\u30FC\u30C8: \u73FE\u5728\u3001\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u7121\u52B9\u5316\u3055\u308C\u3066\u3044\u307E\u3059",default:"\u30C7\u30D5\u30A9\u30EB\u30C8","Search...":"\u691C\u7D22\u2026","New line trigger":"\u6539\u884C\u30C8\u30EA\u30AC\u30FC","Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lanes.":"\u6539\u884C\u306B\u4F7F\u3046\u30AD\u30FC\u3068\u3057\u3066Enter\u304BShift+Enter\u306E\u3069\u3061\u3089\u3092\u4F7F\u3046\u304B\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u9078\u629E\u3057\u306A\u304B\u3063\u305F\u65B9\u306E\u30AD\u30FC\u306F\u30AB\u30FC\u30C9\u3068\u30EC\u30FC\u30F3\u306E\u4F5C\u6210\u3068\u7DE8\u96C6\u5B8C\u4E86\u306E\u30C8\u30EA\u30AC\u30FC\u3068\u306A\u308A\u307E\u3059\u3002","Shift + Enter":"Shift + Enter",Enter:"Enter","Prepend / append new cards":"\u5148\u982D\u307E\u305F\u306F\u672B\u5C3E\u306B\u65B0\u898F\u30AB\u30FC\u30C9\u3092\u8FFD\u52A0\u3059\u308B","This setting controls whether new cards are added to the beginning or end of the list.":"\u3053\u306E\u8A2D\u5B9A\u306B\u3088\u3063\u3066\u65B0\u898F\u30AB\u30FC\u30C9\u3092\u30EA\u30B9\u30C8\u306E\u5148\u982D\u307E\u305F\u306F\u672B\u5C3E\u306B\u8FFD\u52A0\u3059\u308B\u304B\u3092\u6C7A\u3081\u307E\u3059\u3002",Prepend:"\u5148\u982D\u306B\u8FFD\u52A0","Prepend (compact)":"\u5148\u982D\u306B\u8FFD\u52A0(\u30B3\u30F3\u30D1\u30AF\u30C8)",Append:"\u672B\u5C3E\u306B\u8FFD\u52A0","These settings will take precedence over the default Kanban board settings.":"\u3053\u308C\u3089\u306E\u8A2D\u5B9A\u306F\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30AB\u30F3\u30D0\u30F3\u8A2D\u5B9A\u3088\u308A\u512A\u5148\u3055\u308C\u307E\u3059\u3002","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u8A2D\u5B9A\u3092\u30BB\u30C3\u30C8\u3057\u307E\u3059\u3002\u3053\u306E\u8A2D\u5B9A\u306F\u30DC\u30FC\u30C9\u6BCE\u306B\u4E0A\u66F8\u304D\u3067\u304D\u307E\u3059\u3002","Note template":"\u30CE\u30FC\u30C8\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8","This template will be used when creating new notes from Kanban cards.":"\u3053\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F\u30AB\u30F3\u30D0\u30F3\u30AB\u30FC\u30C9\u304B\u3089\u30CE\u30FC\u30C8\u3092\u65B0\u898F\u4F5C\u6210\u3057\u305F\u969B\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","No template":"\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u3042\u308A\u307E\u305B\u3093","Note folder":"\u30CE\u30FC\u30C8\u30D5\u30A9\u30EB\u30C0","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"\u30AB\u30F3\u30D0\u30F3\u30AB\u30FC\u30C9\u304B\u3089\u4F5C\u6210\u3055\u308C\u305F\u30CE\u30FC\u30C8\u306F\u3053\u306E\u30D5\u30A9\u30EB\u30C0\u5185\u306B\u7F6E\u304B\u308C\u307E\u3059\u3002\u30D6\u30E9\u30F3\u30AF\u306E\u5834\u5408\u306B\u306F\u3001\u3053\u306E\u4FDD\u7BA1\u5EAB\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30ED\u30B1\u30FC\u30B7\u30E7\u30F3\u306B\u7F6E\u304B\u308C\u307E\u3059\u3002","Default folder":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A9\u30EB\u30C0","Lane width":"\u30EC\u30FC\u30F3\u306E\u5E45","Enter a number to set the lane width in pixels.":"\u30EC\u30FC\u30F3\u306E\u5E45\u3092\u30D4\u30AF\u30BB\u30EB\u5358\u4F4D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Maximum number of archived cards":"\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u30AB\u30FC\u30C9\u306E\u6700\u5927\u6570","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u30AB\u30FC\u30C9\u306F\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u30E2\u30FC\u30C9\u3067\u95B2\u89A7\u3067\u304D\u307E\u3059\u3002\u3053\u306E\u8A2D\u5B9A\u306B\u3088\u308A\u6307\u5B9A\u3055\u308C\u305F\u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u9650\u754C\u6570\u307E\u3067\u9054\u3057\u305F\u969B\u306B\u306F\u53E4\u3044\u30AB\u30FC\u30C9\u3092\u524A\u9664\u3057\u307E\u3059\u3002\u3053\u306E\u5024\u3092-1\u306B\u8A2D\u5B9A\u3059\u308B\u3068\u30DC\u30FC\u30C9\u306E\u30A2\u30FC\u30AB\u30A4\u30D6\u9650\u754C\u3092\u7121\u9650\u306B\u3057\u307E\u3059\u3002","Display card checkbox":"\u30AB\u30FC\u30C9\u306E\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u8868\u793A","When toggled, a checkbox will be displayed with each card":"\u6709\u52B9\u5316\u3059\u308B\u3068\u5404\u30AB\u30FC\u30C9\u306E\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","Reset to default":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u30EA\u30BB\u30C3\u30C8","Date & Time":"\u65E5\u4ED8\u3068\u6642\u9593","Date trigger":"\u65E5\u4ED8\u30C8\u30EA\u30AC\u30FC","When this is typed, it will trigger the date selector":"\u3053\u306E\u8A2D\u5B9A\u306B\u5165\u529B\u3055\u308C\u305F\u6587\u5B57\u5217\u3067\u65E5\u4ED8\u30BB\u30EC\u30AF\u30BF\u30FC\u3092\u30C8\u30EA\u30AC\u30FC\u3057\u307E\u3059\u3002","Time trigger":"\u6642\u9593\u30C8\u30EA\u30AC\u30FC","When this is typed, it will trigger the time selector":"\u3053\u306E\u8A2D\u5B9A\u306B\u5165\u529B\u3055\u308C\u305F\u6587\u5B57\u5217\u3067\u6642\u9593\u30BB\u30EC\u30AF\u30BF\u30FC\u3092\u30C8\u30EA\u30AC\u30FC\u3057\u307E\u3059\u3002","Date format":"\u65E5\u4ED8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","This format will be used when saving dates in markdown.":"\u3053\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306F\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u3067\u65E5\u4ED8\u304C\u4FDD\u5B58\u3055\u308C\u308B\u969B\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","For more syntax, refer to":"\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u306B\u3064\u3044\u3066\u306F\u3053\u3061\u3089\u3092\u53C2\u7167:","format reference":"\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9","Your current syntax looks like this":"\u73FE\u5728\u306E\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u306F\u6B21\u306E\u3088\u3046\u306B\u898B\u3048\u307E\u3059","Time format":"\u6642\u9593\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","Date display format":"\u65E5\u4ED8\u8868\u793A\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","This format will be used when displaying dates in Kanban cards.":"\u3053\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306F\u30AB\u30F3\u30D0\u30F3\u30AB\u30FC\u30C9\u5185\u306B\u3066\u65E5\u4ED8\u306E\u8868\u793A\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","Show relative date":"\u76F8\u5BFE\u65E5\u4ED8\u3092\u8868\u793A","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u306E\u65E5\u4ED8\u3068\u4ECA\u65E5\u306E\u9593\u306E\u65E5\u6570\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\u4F8B: '3\u65E5\u5F8C', '1\u30F6\u6708\u524D'","Hide card display dates":"\u30AB\u30FC\u30C9\u306B\u8868\u793A\u3055\u308C\u308B\u65E5\u4ED8\u3092\u96A0\u3059","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u4E0A\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3055\u308C\u305F\u65E5\u4ED8\u304C\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059\u3002\u6709\u52B9\u5316\u3055\u308C\u305F\u5834\u5408\u306B\u306F\u76F8\u5BFE\u65E5\u4ED8\u306F\u8868\u793A\u3055\u308C\u307E\u307E\u3068\u306A\u308A\u307E\u3059\u3002","Hide dates in card titles":"\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306E\u65E5\u4ED8\u3092\u96A0\u3059","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306E\u65E5\u4ED8\u304C\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059\u3002\u3053\u308C\u306F\u65B0\u898F\u30CE\u30FC\u30C8\u3092\u4F5C\u6210\u3057\u305F\u969B\u306B\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306B\u65E5\u4ED8\u304C\u542B\u307E\u308C\u308B\u306E\u3092\u9632\u304E\u307E\u3059\u3002","Link dates to daily notes":"\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306B\u65E5\u4ED8\u3092\u30EA\u30F3\u30AF","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"\u6709\u52B9\u5316\u3059\u308B\u3068\u65E5\u4ED8\u304C\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306B\u30EA\u30F3\u30AF\u3055\u308C\u307E\u3059\u3002 \u4F8B: [[2021-04-26]]","Add date and time to archived cards":"\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u30AB\u30FC\u30C9\u306B\u65E5\u4ED8\u3068\u6642\u9593\u3092\u8FFD\u52A0","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u304C\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u969B\u306B\u73FE\u5728\u306E\u65E5\u4ED8\u3068\u6642\u9593\u304C\u30AB\u30FC\u30C9\u306E\u6700\u521D\u306B\u8FFD\u8A18\u3055\u308C\u308B\u3088\u3046\u306B\u306A\u308A\u307E\u3059\u3002\u4F8B: - [ ] 2021-05-14 10:00am \u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB","Archive date/time separator":"\u65E5\u4ED8\u30FB\u6642\u9593\u30BB\u30D1\u30EC\u30FC\u30BF\u30FC\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","This will be used to separate the archived date/time from the title":"\u3053\u308C\u306F\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u65E5\u4ED8\u30FB\u6642\u9593\u3092\u30BF\u30A4\u30C8\u30EB\u304B\u3089\u5206\u96E2\u3059\u308B\u306E\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","Archive date/time format":"\u65E5\u4ED8\u30FB\u6642\u9593\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Kanban Plugin":"\u30AB\u30F3\u30D0\u30F3\u30D7\u30E9\u30B0\u30A4\u30F3","Hide tags in card titles":"\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u5185\u306E\u30BF\u30B0\u3092\u96A0\u3059","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u5185\u306E\u30BF\u30B0\u304C\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059\u3002\u3053\u308C\u306F\u65B0\u898F\u30CE\u30FC\u30C8\u3092\u4F5C\u6210\u3057\u305F\u969B\u306B\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306B\u30BF\u30B0\u304C\u542B\u307E\u308C\u308B\u306E\u3092\u9632\u304E\u307E\u3059\u3002","Hide card display tags":"\u30AB\u30FC\u30C9\u306B\u8868\u793A\u3055\u308C\u308B\u30BF\u30B0\u3092\u96A0\u3059","When toggled, tags will not be displayed below the card title.":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306E\u4E0B\u306E\u30BF\u30B0\u304C\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059\u3002","Linked Page Metadata":"\u30EA\u30F3\u30AF\u3055\u308C\u305F\u30DA\u30FC\u30B8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"\u30AB\u30FC\u30C9\u5185\u3067\u30EA\u30F3\u30AF\u3055\u308C\u3066\u3044\u308B\u6700\u521D\u306E\u30CE\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u4E0B\u306B\u8868\u793A\u3059\u308B\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u30AD\u30FC\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\u3057\u3066\u30E9\u30D9\u30EB\u306E\u4ED8\u4E0E\u304C\u53EF\u80FD\u3067\u3042\u308A\u3001\u30E9\u30D9\u30EB\u306F\u5B8C\u5168\u306B\u975E\u8868\u793A\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002","Board Header Buttons":"\u30DC\u30FC\u30C9\u306E\u30D8\u30C3\u30C0\u30FC\u30DC\u30BF\u30F3","Calendar: first day of week":"\u30AB\u30EC\u30F3\u30C0\u30FC: \u9031\u306E\u59CB\u307E\u308A","Override which day is used as the start of the week":"\u9031\u306E\u59CB\u307E\u308A\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u66DC\u65E5\u3092\u5909\u66F4\u3057\u307E\u3059\u3002",Sunday:"\u65E5\u66DC\u65E5",Monday:"\u6708\u66DC\u65E5",Tuesday:"\u706B\u66DC\u65E5",Wednesday:"\u6C34\u66DC\u65E5",Thursday:"\u6728\u66DC\u65E5",Friday:"\u91D1\u66DC\u65E5",Saturday:"\u571F\u66DC\u65E5","Metadata key":"\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u30AD\u30FC","Display label":"\u30E9\u30D9\u30EB\u3092\u8868\u793A","Hide label":"\u30E9\u30D9\u30EB\u3092\u96A0\u3059","Drag to rearrange":"\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u4E26\u3079\u66FF\u3048\u308B",Delete:"\u524A\u9664","Add key":"\u30AD\u30FC\u3092\u8FFD\u52A0","Field contains markdown":"\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u3092\u542B\u307F\u307E\u3059","More options":"\u4ED6\u306E\u30AA\u30D7\u30B7\u30E7\u30F3",Cancel:"\u30AD\u30E3\u30F3\u30BB\u30EB",today:"\u4ECA\u65E5",yesterday:"\u6628\u65E5",tomorrow:"\u660E\u65E5","Change date":"\u65E5\u4ED8\u3092\u5909\u66F4","Change time":"\u6642\u9593\u3092\u5909\u66F4","Card title...":"\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u2026","Add card":"\u30AB\u30FC\u30C9\u3092\u8FFD\u52A0","Add a card":"\u30AB\u30FC\u30C9\u3092\u8FFD\u52A0","Edit card":"\u30AB\u30FC\u30C9\u3092\u7DE8\u96C6","New note from card":"\u30AB\u30FC\u30C9\u304B\u3089\u30CE\u30FC\u30C8\u3092\u65B0\u898F\u4F5C\u6210","Archive card":"\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Delete card":"\u30AB\u30FC\u30C9\u3092\u524A\u9664","Edit date":"\u65E5\u4ED8\u3092\u7DE8\u96C6","Add date":"\u65E5\u4ED8\u3092\u8FFD\u52A0","Remove date":"\u65E5\u4ED8\u3092\u524A\u9664","Edit time":"\u6642\u9593\u3092\u7DE8\u96C6","Add time":"\u6642\u9593\u3092\u8FFD\u52A0","Remove time":"\u6642\u9593\u3092\u524A\u9664","Duplicate card":"\u30AB\u30FC\u30C9\u3092\u8907\u88FD","Split card":"\u30AB\u30FC\u30C9\u3092\u5206\u5272","Copy link to card":"\u30AB\u30FC\u30C9\u3078\u306E\u30EA\u30F3\u30AF\u3092\u30B3\u30D4\u30FC","Enter list title...":"\u30EA\u30B9\u30C8\u30BF\u30A4\u30C8\u30EB\u3092\u7DE8\u96C6\u2026","Mark cards in this list as complete":"\u3053\u306E\u30EA\u30B9\u30C8\u306B\u542B\u307E\u308C\u308B\u30AB\u30FC\u30C9\u3092\u5B8C\u4E86\u3068\u3057\u3066\u30DE\u30FC\u30AF\u3059\u308B","Add list":"\u30EA\u30B9\u30C8\u3092\u8FFD\u52A0","Add a list":"\u30EA\u30B9\u30C8\u3092\u8FFD\u52A0","Move list":"\u30EA\u30B9\u30C8\u3092\u79FB\u52D5",Close:"\u9589\u3058\u308B","Are you sure you want to delete this list and all its cards?":"\u3053\u306E\u30EA\u30B9\u30C8\u3068\u542B\u307E\u308C\u308B\u3059\u3079\u3066\u306E\u30AB\u30FC\u30C9\u3092\u524A\u9664\u3057\u307E\u3059\u304B\b\uFF1F","Yes, delete list":"\u306F\u3044\u3001\u30EA\u30B9\u30C8\u3092\u524A\u9664\u3057\u307E\u3059","Are you sure you want to archive this list and all its cards?":"\u3053\u306E\u30EA\u30B9\u30C8\u3068\u542B\u307E\u308C\u308B\u3059\u3079\u3066\u306E\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059\u304B\uFF1F","Yes, archive list":"\u306F\u3044\u3001\u30EA\u30B9\u30C8\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059","Are you sure you want to archive all cards in this list?":"\u3053\u306E\u30EA\u30B9\u30C8\u306B\u542B\u307E\u308C\u308B\u3059\u3079\u3066\u306E\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059\u304B\uFF1F","Yes, archive cards":"\u306F\u3044\u3001\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059","Edit list":"\u30EA\u30B9\u30C8\u3092\u7DE8\u96C6","Archive cards":"\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Archive list":"\u30EA\u30B9\u30C8\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Delete list":"\u30EA\u30B9\u30C8\u3092\u524A\u9664","Unable to find":"\u898B\u3064\u304B\u308A\u307E\u305B\u3093","Open in default app":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30A2\u30D7\u30EA\u3067\u958B\u304F"};m();var Dv={};m();var Tv={};m();var Mv={};m();var Iv={};m();var Av={};m();var Lv={"Open as Kanban board":"Abrir como quadro Kanban","Create new board":"Criar um novo quadro","Archive completed cards in active board":"Arquivar cart\xF5es conclu\xEDdos no quadro ativo","Error: current file is not a Kanban board":"Erro: o arquivo atual n\xE3o \xE9 um quadro Kanban","Convert empty note to Kanban":"Converter nota vazia em Kanban","Error: cannot create Kanban, the current note is not empty":"Erro: n\xE3o \xE9 poss\xEDvel criar o quadro Kanban, a nota atual n\xE3o est\xE1 vazia","New Kanban board":"Novo quadro Kanban","Untitled Kanban":"Kanban sem t\xEDtulo","Toggle between Kanban and markdown mode":"Alternar entre os modos Kanban e Markdown","Open as markdown":"Abrir como markdown","Open board settings":"Abrir configura\xE7\xF5es do quadro Kanban","Archive completed cards":"Arquivar cart\xF5es conclu\xEDdos",Complete:"Conclu\xEDdo",Archive:"Arquivado","Note: No template plugins are currently enabled.":"Nota: N\xE3o h\xE1 plug-ins de modelo habilitados no momento.",default:"padr\xE3o","Search...":"Pesquisar...","These settings will take precedence over the default Kanban board settings.":"Essas configura\xE7\xF5es sobrescrever\xE3o as configura\xE7\xF5es padr\xE3o do quadro Kanban","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"Defina as configura\xE7\xF5es padr\xE3o do quadro Kanban. Cada quadro Kanban pode ter sua pr\xF3pria configura\xE7\xE3o.","Note template":"Modelo de nota","This template will be used when creating new notes from Kanban cards.":"Este modelo ser\xE1 usado quando uma nova nota Kanban for criada.","No template":"Sem modelo","Note folder":"Pasta de notas","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"As notas criadas pelos links dos cart\xF5es Kanban ser\xE3o colocadas nesta pasta. Se estiver em branco, ser\xE3o colocadas no local configurado como padr\xE3o deste cofre.","Default folder":"Pasta padr\xE3o","Lane width":"Largura das listas","Enter a number to set the lane width in pixels.":"Insira um n\xFAmero para definir a largura das listas em pixels.","Maximum number of archived cards":"Quantidade m\xE1xima de cart\xF5es arquivados","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"Os cart\xF5es arquivados podem ser vistos no modo Markdown. Esta configura\xE7\xE3o excluir\xE1 os cart\xF5es antigos assim que o limite for atingido. Inserir o valor -1 retira o limite para cart\xF5es arquivados.","Display card checkbox":"Exibe uma caixa de sele\xE7\xE3o do cart\xE3o","When toggled, a checkbox will be displayed with each card":"Quando ativada, uma caixa de sele\xE7\xE3o ser\xE1 exibida em cada cart\xE3o.","Reset to default":"Redefinir configura\xE7\xF5es padr\xE3o","Date & Time":"Data e Hora","Date trigger":"Gatilho de data","When this is typed, it will trigger the date selector":"Quando este caractere \xE9 digitado, o seletor de data \xE9 exibido.","Time trigger":"Gatilho de hora","When this is typed, it will trigger the time selector":"Quando este caractere \xE9 digitado, o seletor de hora \xE9 exibido.","Date format":"Formado da data","This format will be used when saving dates in markdown.":"Este formato ser\xE1 usado quando datas forem armazenadas no Markdown.","For more syntax, refer to":"Para mais informa\xE7\xF5es sobre esta sintaxe, consulte os","format reference":"modelos de formato.","Your current syntax looks like this":"Sua atual sintaxe est\xE1 assim","Time format":"Formato da hora","Date display format":"Formato de exibi\xE7\xE3o da data","This format will be used when displaying dates in Kanban cards.":"Este ser\xE1 o formato das datas exibido nos cart\xF5es do Kanban.","Show relative date":"Exibir datas relativas","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"Ao ativar, os cart\xF5es exibir\xE3o o intervalo de tempo entre hoje e a data do cart\xE3o: Ex.: 'Em 3 dias', 'Um m\xEAs atr\xE1s'","Hide card display dates":"Ocultar datas dos cart\xF5es","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"Ao ativar, as datas formatadas n\xE3o ser\xE3o exibidas no cart\xE3o. As datas relativas ainda ser\xE3o exibidas se estiverem ativadas.","Hide dates in card titles":"Ocultar datas dos t\xEDtulos dos cart\xF5es","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"Ao ativar, as datas ser\xE3o t\xEDtulos de cart\xF5es ocultos. Evita que datas sejam inclu\xEDdas no t\xEDtulo ao criar novas notas.","Link dates to daily notes":"Vincular datas a notas di\xE1rias","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"Ao ativar, as datas ser\xE3o vinculadas \xE0s notas di\xE1rias. Ex.: [[2021-04-26]]","Add date and time to archived cards":"Adicionar data e hora aos cart\xF5es arquivados","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"Quando ativada, a data e a hora atuais ser\xE3o adicionadas ao in\xEDcio de um cart\xE3o quando ele for arquivado. Ex.: - [] 2021-05-14 10:00 T\xEDtulo do meu cart\xE3o","Archive date/time separator":"Separador de data/hora do arquivo","This will be used to separate the archived date/time from the title":"Isso ser\xE1 usado para separar a data/hora arquivada do t\xEDtulo.","Archive date/time format":"Formato de data/hora do arquivo","Kanban Plugin":"Plugin Kanban","Hide tags in card titles":"Ocultar \u2018tags\u2019 nos t\xEDtulos dos cart\xF5es","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"Quando ativada, as \u2018tags\u2019 n\xE3o ser\xE3o exibidas nos t\xEDtulos de cartas. Isso impedir\xE1 que as \u2018tags\u2019 sejam inclu\xEDdas no t\xEDtulo ao criar novas notas.","Hide card display tags":"Ocultar \u2018tags\u2019 de exibi\xE7\xE3o de cart\xE3o","When toggled, tags will not be displayed below the card title.":"Quando ativada, as \u2018tags\u2019 n\xE3o ser\xE3o exibidas abaixo do t\xEDtulo do cart\xE3o.","Linked Page Metadata":"Metadados de p\xE1ginas 'lincadas'","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"Exibe metadados para a primeira nota 'lincada' em um cart\xE3o. Especifique abaixo quais metadados ser\xE3o exibidos. Um r\xF3tulo opcional pode ser fornecido e os r\xF3tulos podem ser ocultados completamente.","Metadata key":"Metadado","Display label":"Descri\xE7\xE3o personalizada","Hide label":"Ocultar","Drag to rearrange":"Arraste para reorganizar",Delete:"Excluir","Add key":"Adicionar metadado","More options":"Mais op\xE7\xF5es",Cancel:"Cancelar",today:"hoje",yesterday:"ontem",tomorrow:"amanh\xE3","Change date":"Alterar data","Change time":"Mudar hora","Card title...":"T\xEDtulo do item...","Add card":"Adicionar Item","Add a card":"Adicione um cart\xE3o","Edit card":"Editar cart\xE3o","New note from card":"Nova nota do cart\xE3o","Archive card":"Arquivar cart\xE3o","Delete card":"Excluir cart\xE3o","Edit date":"Editar data","Add date":"Adicionar data","Remove date":"Remover data","Edit time":"Editar hora","Add time":"Adicionar hora","Remove time":"Remover hora","Duplicate card":"Duplicate card","Enter list title...":"Insira o t\xEDtulo da lista...","Mark cards in this list as complete":"Marcar os itens nesta lista como conclu\xEDdos","Add list":"Adicionar lista","Add a list":"Adicionar uma lista","Move list":"Mover lista",Close:"Fechar","Are you sure you want to delete this list and all its cards?":"Tem certeza de que deseja excluir esta lista e todos os seus cart\xF5es?","Yes, delete list":"Sim, excluir esta lista","Are you sure you want to archive this list and all its cards?":"Tem certeza de que deseja arquivar esta lista e todos os seus cart\xF5es?","Yes, archive list":"Sim, arquivar esta lista","Are you sure you want to archive all cards in this list?":"Tem certeza de que deseja arquivar todos os cart\xF5es desta lista?","Yes, archive cards":"Sim, arquivar cart\xF5es","Edit list":"Editar lista","Archive cards":"Arquivar cart\xF5es","Archive list":"Arquivar lista","Delete list":"Excluir lista"};m();var Pv={};m();var Fv={};m();var Nv={};m();var Es={};m();var Ov={"Open as kanban board":"\u6253\u5F00\u4E3A\u770B\u677F","Create new board":"\u521B\u5EFA\u65B0\u770B\u677F","Archive completed cards in active board":"\u5728\u5F53\u524D\u770B\u677F\u4E2D\u5F52\u6863\u5DF2\u5B8C\u6210\u5361\u7247","Error: current file is not a Kanban board":"\u9519\u8BEF\uFF1A\u5F53\u524D\u6587\u4EF6\u4E0D\u662F\u770B\u677F\u6587\u4EF6","Convert empty note to Kanban":"\u8F6C\u6362\u7A7A\u767D\u7B14\u8BB0\u4E3A\u770B\u677F","Error: cannot create Kanban, the current note is not empty":"\u9519\u8BEF\uFF1A\u65E0\u6CD5\u8F6C\u6362\u5F53\u524D\u6587\u4EF6\uFF0C\u5F53\u524D\u7B14\u8BB0\u4E0D\u662F\u7A7A\u767D\u7B14\u8BB0","New kanban board":"\u65B0\u770B\u677F","Untitled Kanban":"\u672A\u547D\u540D\u770B\u677F","Toggle between Kanban and markdown mode":"\u5728\u770B\u677F\u548C Markdown \u6A21\u5F0F\u4E4B\u95F4\u8FDB\u884C\u5207\u6362","Open as markdown":"\u6253\u5F00\u4E3A Markdown \u6587\u4EF6","Open board settings":"\u6253\u5F00\u770B\u677F\u8BBE\u7F6E","Archive completed cards":"\u5F52\u6863\u5DF2\u5B8C\u6210\u5361\u7247","Something went wrong":"\u51FA\u4E86\u70B9\u95EE\u9898","You may wish to open as markdown and inspect or edit the file.":"\u4F60\u53EF\u80FD\u5E0C\u671B\u4EE5 Markdown \u65B9\u5F0F\u6253\u5F00\uFF0C\u5E76\u68C0\u67E5\u6216\u7F16\u8F91\u8BE5\u6587\u4EF6\u3002","Are you sure you want to archive all completed cards on this board?":"\u4F60\u786E\u5B9A\u8981\u5C06\u8FD9\u4E2A\u677F\u5757\u4E0A\u6240\u6709\u5DF2\u5B8C\u6210\u7684\u5361\u7247\u5F52\u6863\u5417\uFF1F",Complete:"\u5B8C\u6210",Archive:"\u5F52\u6863","Invalid Kanban file: problems parsing frontmatter":"\u65E0\u6548\u7684\u770B\u677F\u6587\u4EF6\uFF1A\u89E3\u6790 frontmatter \u65F6\u51FA\u73B0\u95EE\u9898","I don't know how to interpret this line:":"\u6211\u4E0D\u77E5\u9053\u5982\u4F55\u89E3\u8BFB\u8FD9\u53E5\u8BDD\uFF1A",Untitled:"\u672A\u547D\u540D","Note: No template plugins are currently enabled.":"\u6CE8\u610F\uFF1A\u5F53\u524D\u6CA1\u6709\u542F\u7528\u6A21\u677F\u63D2\u4EF6",default:"\u9ED8\u8BA4","Search...":"\u641C\u7D22\u2026\u2026","New line trigger":"\u6362\u884C\u89E6\u53D1\u5668","Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lists.":"\u9009\u62E9 Enter \u6216\u662F Shift+Enter \u6765\u521B\u5EFA\u65B0\u884C, \u672A\u9009\u7528\u7684\u5FEB\u6377\u952E\u5C06\u88AB\u7528\u4E8E\u521B\u5EFA\u5361\u7247\u548C\u5217\uFF0C\u4EE5\u53CA\u5B8C\u6210\u5361\u7247\u3001\u5217\u7684\u7F16\u8F91\u3002","Shift + Enter":"Shift + Enter",Enter:"Enter","Prepend / append new cards":"\u8FFD\u52A0\u65B0\u5361\u7247","This setting controls whether new cards are added to the beginning or end of the list.":"\u8BBE\u7F6E\u65B0\u5361\u7247\u8FFD\u52A0\u5230\u5217\u5934\u90E8\u6216\u5C3E\u90E8\u3002",Prepend:"\u5934\u90E8","Prepend (compact)":"\u5934\u90E8 (\u7D27\u51D1)",Append:"\u5C3E\u90E8","These settings will take precedence over the default Kanban board settings.":"\u5F53\u524D\u770B\u677F\u8BBE\u7F6E\u5C06\u4F1A\u8986\u76D6\u9ED8\u8BA4\u7684\u770B\u677F\u8BBE\u7F6E\u3002","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"\u66F4\u6539\u9ED8\u8BA4\u7684\u770B\u677F\u8BBE\u7F6E\u3002\u4E3A\u6BCF\u4E2A\u770B\u677F\u5355\u72EC\u8FDB\u884C\u8BBE\u7F6E\u5C06\u8986\u76D6\u9ED8\u8BA4\u8BBE\u7F6E\u3002","Note template":"\u7B14\u8BB0\u6A21\u677F","This template will be used when creating new notes from Kanban cards.":"\u4ECE\u770B\u677F\u5361\u7247\u521B\u5EFA\u65B0\u7B14\u8BB0\u65F6\u4F1A\u4F7F\u7528\u8BE5\u6A21\u677F\u3002","No template":"\u6CA1\u6709\u6A21\u677F","Note folder":"\u7B14\u8BB0\u5B58\u653E\u4F4D\u7F6E","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"\u4ECE\u770B\u677F\u5361\u7247\u521B\u5EFA\u7684\u7B14\u8BB0\u4F1A\u653E\u7F6E\u5230\u8BE5\u6587\u4EF6\u5939\u4E2D\u3002\u5982\u679C\u4E3A\u7A7A\uFF0C\u7B14\u8BB0\u5C06\u4F1A\u653E\u7F6E\u5230 Obsidian \u7684\u9ED8\u8BA4\u6587\u4EF6\u5B58\u653E\u4F4D\u7F6E\u3002","Default folder":"\u9ED8\u8BA4\u6587\u4EF6\u5939","List width":"\u5217\u5BBD","Enter a number to set the list width in pixels.":"\u8F93\u5165\u4E00\u4E2A\u50CF\u7D20\u503C\u6765\u8BBE\u7F6E\u5217\u7684\u5BBD\u5EA6","Maximum number of archived cards":"\u5355\u4E2A\u770B\u677F\u5185\u5DF2\u5F52\u6863\u5361\u7247\u7684\u6700\u5927\u6570\u91CF","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"\u5DF2\u5F52\u6863\u5361\u7247\u53EF\u4EE5\u5728 Markdown \u6A21\u5F0F\u4E0B\u67E5\u770B\u3002\u8BE5\u8BBE\u7F6E\u5C06\u4F7F\u5DF2\u5F52\u6863\u5361\u7247\u5728\u8FBE\u5230\u6700\u5927\u6570\u91CF\u65F6\u5220\u9664\u65E7\u5361\u3002\u8BBE\u7F6E\u4E3A -1 \u53EF\u4EE5\u6C38\u4E45\u4FDD\u7559\u6240\u6709\u5F52\u6863\u5361\u7247\u3002","Display card checkbox":"\u5C55\u793A\u5361\u7247\u590D\u9009\u6846","When toggled, a checkbox will be displayed with each card":"\u6253\u5F00\u65F6\uFF0C\u590D\u9009\u6846\u4F1A\u51FA\u73B0\u5728\u6BCF\u5F20\u5361\u7247\u4E0A","Reset to default":"\u8FD8\u539F\u521D\u59CB\u8BBE\u7F6E","Date & Time":"\u65E5\u671F\u548C\u65F6\u95F4","Date trigger":"\u65E5\u671F\u89E6\u53D1\u6307\u4EE4","When this is typed, it will trigger the date selector":"\u5F53\u5728\u770B\u677F\u5361\u7247\u4E2D\u8F93\u5165\u8FD9\u4E2A\u65F6\uFF0C\u4F1A\u89E6\u53D1\u4E00\u4E2A\u65E5\u671F\u9009\u62E9\u5668","Time trigger":"\u65F6\u95F4\u89E6\u53D1\u6307\u4EE4","When this is typed, it will trigger the time selector":"\u5F53\u5728\u770B\u677F\u5361\u7247\u4E2D\u8F93\u5165\u8FD9\u4E2A\u65F6\uFF0C\u4F1A\u89E6\u53D1\u4E00\u4E2A\u65F6\u95F4\u9009\u62E9\u5668","Date format":"\u65E5\u671F\u683C\u5F0F","This format will be used when saving dates in markdown.":"\u8FD9\u4E2A\u683C\u5F0F\u4F1A\u5728\u65E5\u671F\u4FDD\u5B58\u5230 Markdown \u683C\u5F0F\u65F6\u4F7F\u7528\u3002","For more syntax, refer to":"\u66F4\u591A\u683C\u5F0F\uFF0C\u8BF7\u67E5\u770B","format reference":"\u683C\u5F0F\u53C2\u8003","Your current syntax looks like this":"\u4F60\u5F53\u524D\u8BBE\u7F6E\u7684\u683C\u5F0F\u4F1A\u662F","Time format":"\u65F6\u95F4\u683C\u5F0F","Date display format":"\u65E5\u671F\u5C55\u793A\u683C\u5F0F","This format will be used when displaying dates in Kanban cards.":"\u770B\u677F\u5361\u7247\u4F1A\u4EE5\u8BE5\u683C\u5F0F\u5C55\u793A\u65E5\u671F\u3002","Show relative date":"\u5C55\u793A\u76F8\u5BF9\u65E5\u671F","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"\u6253\u5F00\u65F6\uFF0C\u5361\u7247\u4F1A\u5C55\u793A\u5176\u6240\u8BBE\u65E5\u671F\u4E0E\u5F53\u524D\u65E5\u671F\u7684\u5DEE\u503C\uFF0C\u4F8B\u5982\u201C3\u5929\u5185\u201D\u201C\u4E00\u4E2A\u6708\u524D\u201D\u7B49","Hide card display dates":"\u9690\u85CF\u5361\u7247\u65E5\u671F","Hide card counts in list titles":"\u5728\u5217\u6807\u9898\u4E0A\u9690\u85CF\u5361\u7247\u8BA1\u6570","When toggled, card counts are hidden from the list title":"\u6253\u5F00\u65F6\uFF0C\u5217\u6807\u9898\u4E0A\u7684\u5361\u7247\u8BA1\u6570\u5C06\u9690\u85CF","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"\u6253\u5F00\u65F6\uFF0C\u683C\u5F0F\u5316\u65E5\u671F\u4E0D\u4F1A\u5728\u5361\u7247\u4E0A\u5C55\u793A\u3002\u5982\u679C\u5F00\u542F\u4E86\u76F8\u5BF9\u65E5\u671F\u529F\u80FD\uFF0C\u76F8\u5BF9\u65E5\u671F\u8FD8\u662F\u4F1A\u7EE7\u7EED\u5C55\u793A\u3002","Hide dates in card titles":"\u5728\u5361\u7247\u6807\u9898\u4E2D\u9690\u85CF\u65E5\u671F","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"\u6253\u5F00\u65F6\uFF0C\u5361\u7247\u6807\u9898\u4E2D\u7684\u65E5\u671F\u5C06\u4F1A\u9690\u85CF\u3002\u5F53\u57FA\u4E8E\u5361\u7247\u521B\u5EFA\u65B0\u7B14\u8BB0\u65F6\u53EF\u4EE5\u907F\u514D\u65E5\u671F\u6DF7\u6742\u5176\u4E2D\u3002","Link dates to daily notes":"\u94FE\u63A5\u65E5\u671F\u5230\u65E5\u8BB0","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"\u6253\u5F00\u65F6\uFF0C\u65E5\u671F\u4F1A\u81EA\u52A8\u94FE\u63A5\u5230\u65E5\u8BB0\u9875\u9762\uFF0C\u4F8B\u5982[[2021-04-26]]","Add date and time to archived cards":"\u6DFB\u52A0\u65E5\u671F\u548C\u65F6\u95F4\u5230\u5F52\u6863\u5361\u7247","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"\u6253\u5F00\u65F6\uFF0C\u5F53\u524D\u65E5\u671F\u548C\u65F6\u95F4\u4F1A\u88AB\u6DFB\u52A0\u5230\u5F52\u6863\u5361\u7247\u7684 frontmatter \u4E0A\uFF0C\u4F8B\u5982\u201C- [ ] 2021-05-14 10:00am \u6211\u7684\u5361\u7247\u6807\u9898\u201D","Archive date/time separator":"\u5F52\u6863\u65E5\u671F\u6216\u65F6\u95F4\u5206\u9694\u7B26Archive date/time separator","This will be used to separate the archived date/time from the title":"\u7528\u4E8E\u5206\u9694\u6807\u9898\u4E0E\u5F52\u6863\u5361\u7247\u7684\u65E5\u671F\u6216\u65F6\u95F4","Archive date/time format":"\u5F52\u6863\u65E5\u671F\u6216\u65F6\u95F4\u683C\u5F0F","Kanban Plugin":"\u770B\u677F\u63D2\u4EF6","Hide tags in card titles":"\u9690\u85CF\u5361\u7247\u6807\u9898\u4E2D\u7684\u6807\u7B7E","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"\u6253\u5F00\u65F6\uFF0C\u5361\u7247\u6807\u9898\u4E2D\u7684\u6807\u7B7E\u5C06\u4F1A\u88AB\u9690\u85CF\u3002\u5F53\u57FA\u4E8E\u5361\u7247\u521B\u5EFA\u65B0\u7B14\u8BB0\u65F6\u53EF\u4EE5\u907F\u514D\u6807\u7B7E\u6DF7\u6742\u5176\u4E2D\u3002","Hide card display tags":"\u9690\u85CF\u5361\u7247\u4E0A\u7684\u6807\u7B7E","When toggled, tags will not be displayed below the card title.":"\u6253\u5F00\u65F6\uFF0C\u5361\u7247\u6807\u9898\u4E0B\u65B9\u7684\u6807\u7B7E\u5C06\u4E0D\u4F1A\u5C55\u793A\u3002","Linked Page Metadata":"\u8FDE\u63A5\u7684\u9875\u9762\u5143\u6570\u636E","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"\u5C55\u793A\u5361\u7247\u4E2D\u7B2C\u4E00\u4E2A\u8FDE\u63A5\u6240\u5BF9\u5E94\u7684\u7B14\u8BB0\u5143\u6570\u636E\u3002\u8BF7\u5728\u4E0B\u65B9\u6307\u5B9A\u54EA\u4E9B\u5143\u6570\u636E\u53EF\u4EE5\u5C55\u793A\u3002\u4F60\u53EF\u4EE5\u9009\u62E9\u5C55\u793A\u54EA\u4E9B\u6807\u5FD7\uFF0C\u6240\u6709\u6807\u5FD7\u90FD\u53EF\u4EE5\u88AB\u9690\u85CF\u3002","Board Header Buttons":"\u677F\u5934\u6309\u94AE","Calendar: first day of week":"\u65E5\u5386\uFF1A\u4E00\u5468\u7684\u7B2C\u4E00\u5929","Override which day is used as the start of the week":"\u8BBE\u7F6E\u54EA\u4E00\u5929\u4F5C\u4E3A\u4E00\u5468\u7684\u5F00\u59CB",Sunday:"\u5468\u65E5",Monday:"\u5468\u4E00",Tuesday:"\u5468\u4E8C",Wednesday:"\u5468\u4E09",Thursday:"\u5468\u56DB",Friday:"\u5468\u4E94",Saturday:"\u5468\u516D","Metadata key":"\u5143\u6570\u636E\u53C2\u6570\u540D","Display label":"\u5C55\u793A\u6807\u5FD7","Hide label":"\u9690\u85CF\u6807\u5FD7","Drag to rearrange":"\u62D6\u52A8\u4EE5\u91CD\u6392\u987A\u5E8F",Delete:"\u5220\u9664","Add key":"\u6DFB\u52A0\u53C2\u6570\u540D","Field contains markdown":"\u5B57\u6BB5\u5305\u542B Markdown","More options":"\u66F4\u591A\u9009\u9879",Cancel:"\u53D6\u6D88",today:"\u4ECA\u5929",yesterday:"\u6628\u5929",tomorrow:"\u660E\u5929","Change date":"\u66F4\u6539\u65E5\u671F","Change time":"\u66F4\u6539\u65F6\u95F4","Card title...":"\u5361\u7247\u6807\u9898\u2026\u2026","Add card":"\u6DFB\u52A0","Add a card":"\u6DFB\u52A0\u5361\u7247","Edit card":"\u7F16\u8F91\u5361\u7247","New note from card":"\u4ECE\u5361\u7247\u65B0\u5EFA\u7B14\u8BB0","Archive card":"\u5F52\u6863\u5361\u7247","Delete card":"\u5220\u9664\u5361\u7247","Edit date":"\u7F16\u8F91\u65E5\u671F","Add date":"\u6DFB\u52A0\u65E5\u671F","Remove date":"\u79FB\u9664\u65E5\u671F","Edit time":"\u7F16\u8F91\u65F6\u95F4","Add time":"\u6DFB\u52A0\u65F6\u95F4","Remove time":"\u79FB\u9664\u65F6\u95F4","Duplicate card":"\u590D\u5236\u5361\u7247","Split card":"\u5206\u79BB\u5361\u7247","Copy link to card":"\u590D\u5236\u94FE\u63A5\u81F3\u5361\u7247","Insert card before":"\u5728\u4E0A\u65B9\u63D2\u5165\u5361\u7247","Insert card after":"\u5728\u4E0B\u65B9\u63D2\u5165\u5361\u7247","Move to top":"\u79FB\u5230\u9876\u90E8","Move to bottom":"\u79FB\u81F3\u5E95\u90E8","Enter list title...":"\u8F93\u5165\u65B0\u7684\u5217\u6807\u9898\u2026\u2026","Mark cards in this list as complete":"\u5C06\u8BE5\u5217\u8BBE\u7F6E\u4E3A\u5B8C\u6210\u5217","Add list":"\u6DFB\u52A0","Add a list":"\u6DFB\u52A0\u5217","Move list":"\u79FB\u52A8\u5217",Close:"\u5173\u95ED","Are you sure you want to delete this list and all its cards?":"\u4F60\u786E\u5B9A\u4F60\u8981\u5220\u9664\u6574\u5217\u4EE5\u53CA\u8BE5\u5217\u4E0B\u6240\u6709\u5361\u7247\u5417\uFF1F","Yes, delete list":"\u662F\uFF0C\u5220\u9664\u5217","Are you sure you want to archive this list and all its cards?":"\u4F60\u786E\u5B9A\u4F60\u8981\u5F52\u6863\u6574\u5217\u4EE5\u53CA\u8BE5\u5217\u4E0B\u6240\u6709\u5361\u7247\u5417\uFF1F","Yes, archive list":"\u662F, \u5F52\u6863\u5217","Are you sure you want to archive all cards in this list?":"\u4F60\u786E\u8BA4\u4F60\u8981\u5F52\u6863\u5F53\u524D\u5217\u7684\u6240\u6709\u5361\u7247\u5417\uFF1F","Yes, archive cards":"\u662F\uFF0C\u5F52\u6863\u6240\u6709\u5361\u7247","Edit list":"\u7F16\u8F91\u5217","Archive cards":"\u5F52\u6863\u5361\u7247","Archive list":"\u5F52\u6863\u5217","Delete list":"\u5220\u9664\u5217","Insert list before":"\u5728\u4E0A\u65B9\u63D2\u5165\u5217","Insert list after":"\u5728\u4E0B\u65B9\u63D2\u5165\u5217","Sort by card text":"\u4EE5\u5361\u7247\u6587\u672C\u6392\u5E8F","Sort by date":"\u4EE5\u65E5\u671F\u6392\u5E8F","Unable to find":"\u65E0\u6CD5\u627E\u5230","Open in default app":"\u5728\u9ED8\u8BA4\u5E94\u7528\u4E2D\u6253\u5F00",Submit:"\u63D0\u4EA4"};m();var Rv={};var wS={ar:vv,cz:yv,da:bv,de:wv,en:Hu,es:Ev,fr:kv,hi:xv,id:Sv,it:_v,ja:Cv,ko:Dv,nl:Tv,no:Mv,pl:Iv,"pt-BR":Lv,pt:Av,ro:Pv,ru:Fv,sq:Nv,tr:Es,uk:Es,"zh-TW":Rv,zh:Ov},Hv=window.localStorage.getItem("language"),Bu=wS[Hv||"en"];function L(e){return Bu||console.error("Error: kanban locale not found",Hv),Bu&&Bu[e]||Hu[e]}m();m();function Gn(e){return Array.isArray?Array.isArray(e):$v(e)==="[object Array]"}var ES=1/0;function kS(e){if(typeof e=="string")return e;let t=e+"";return t=="0"&&1/e==-ES?"-0":t}function xS(e){return e==null?"":kS(e)}function Rn(e){return typeof e=="string"}function Bv(e){return typeof e=="number"}function SS(e){return e===!0||e===!1||_S(e)&&$v(e)=="[object Boolean]"}function Kv(e){return typeof e=="object"}function _S(e){return Kv(e)&&e!==null}function un(e){return e!=null}function Ku(e){return!e.trim().length}function $v(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var CS="Incorrect 'index' type",DS=e=>`Invalid value for key ${e}`,TS=e=>`Pattern length exceeds max of ${e}.`,MS=e=>`Missing ${e} property in key`,IS=e=>`Property 'weight' in key '${e}' must be a positive integer`,Uv=Object.prototype.hasOwnProperty,Vv=class{constructor(t){this._keys=[],this._keyMap={};let r=0;t.forEach(n=>{let i=Wv(n);r+=i.weight,this._keys.push(i),this._keyMap[i.id]=i,r+=i.weight}),this._keys.forEach(n=>{n.weight/=r})}get(t){return this._keyMap[t]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}};function Wv(e){let t=null,r=null,n=null,i=1,a=null;if(Rn(e)||Gn(e))n=e,t=zv(e),r=$u(e);else{if(!Uv.call(e,"name"))throw new Error(MS("name"));let o=e.name;if(n=o,Uv.call(e,"weight")&&(i=e.weight,i<=0))throw new Error(IS(o));t=zv(o),r=$u(o),a=e.getFn}return{path:t,id:r,weight:i,src:n,getFn:a}}function zv(e){return Gn(e)?e:e.split(".")}function $u(e){return Gn(e)?e.join("."):e}function AS(e,t){let r=[],n=!1,i=(a,o,s)=>{if(!!un(a))if(!o[s])r.push(a);else{let u=o[s],l=a[u];if(!un(l))return;if(s===o.length-1&&(Rn(l)||Bv(l)||SS(l)))r.push(xS(l));else if(Gn(l)){n=!0;for(let c=0,d=l.length;ce.score===t.score?e.idx{this._keysMap[r.id]=n})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,Rn(this.docs[0])?this.docs.forEach((t,r)=>{this._addString(t,r)}):this.docs.forEach((t,r)=>{this._addObject(t,r)}),this.norm.clear())}add(t){let r=this.size();Rn(t)?this._addString(t,r):this._addObject(t,r)}removeAt(t){this.records.splice(t,1);for(let r=t,n=this.size();r{let o=i.getFn?i.getFn(t):this.getFn(t,i.path);if(!!un(o)){if(Gn(o)){let s=[],u=[{nestedArrIndex:-1,value:o}];for(;u.length;){let{nestedArrIndex:l,value:c}=u.pop();if(!!un(c))if(Rn(c)&&!Ku(c)){let d={v:c,i:l,n:this.norm.get(c)};s.push(d)}else Gn(c)&&c.forEach((d,f)=>{u.push({nestedArrIndex:f,value:d})})}n.$[a]=s}else if(Rn(o)&&!Ku(o)){let s={v:o,n:this.norm.get(o)};n.$[a]=s}}}),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}};function jv(e,t,{getFn:r=_e.getFn,fieldNormWeight:n=_e.fieldNormWeight}={}){let i=new ks({getFn:r,fieldNormWeight:n});return i.setKeys(e.map(Wv)),i.setSources(t),i.create(),i}function HS(e,{getFn:t=_e.getFn,fieldNormWeight:r=_e.fieldNormWeight}={}){let{keys:n,records:i}=e,a=new ks({getFn:t,fieldNormWeight:r});return a.setKeys(n),a.setIndexRecords(i),a}function xs(e,{errors:t=0,currentLocation:r=0,expectedLocation:n=0,distance:i=_e.distance,ignoreLocation:a=_e.ignoreLocation}={}){let o=t/e.length;if(a)return o;let s=Math.abs(n-r);return i?o+s/i:s?1:o}function BS(e=[],t=_e.minMatchCharLength){let r=[],n=-1,i=-1,a=0;for(let o=e.length;a=t&&r.push([n,i]),n=-1)}return e[a-1]&&a-n>=t&&r.push([n,a-1]),r}var Wr=32;function KS(e,t,r,{location:n=_e.location,distance:i=_e.distance,threshold:a=_e.threshold,findAllMatches:o=_e.findAllMatches,minMatchCharLength:s=_e.minMatchCharLength,includeMatches:u=_e.includeMatches,ignoreLocation:l=_e.ignoreLocation}={}){if(t.length>Wr)throw new Error(TS(Wr));let c=t.length,d=e.length,f=Math.max(0,Math.min(n,d)),p=a,g=f,y=s>1||u,b=y?Array(d):[],x;for(;(x=e.indexOf(t,g))>-1;){let K=xs(t,{currentLocation:x,expectedLocation:f,distance:i,ignoreLocation:l});if(p=Math.min(K,p),g=x+c,y){let z=0;for(;z=Z;Q-=1){let ie=Q-1,he=r[e.charAt(ie)];if(y&&(b[ie]=+!!he),se[Q]=(se[Q+1]<<1|1)&he,K&&(se[Q]|=(T[Q+1]|T[Q])<<1|1|T[Q+1]),se[Q]&H&&(C=xs(t,{errors:K,currentLocation:ie,expectedLocation:f,distance:i,ignoreLocation:l}),C<=p)){if(p=C,g=ie,g<=f)break;Z=Math.max(1,2*f-g)}}if(xs(t,{errors:K+1,currentLocation:f,expectedLocation:f,distance:i,ignoreLocation:l})>p)break;T=se}let D={isMatch:g>=0,score:Math.max(.001,C)};if(y){let K=BS(b,s);K.length?u&&(D.indices=K):D.isMatch=!1}return D}function $S(e){let t={};for(let r=0,n=e.length;r{this.chunks.push({pattern:f,alphabet:$S(f),startIndex:p})},d=this.pattern.length;if(d>Wr){let f=0,p=d%Wr,g=d-p;for(;f{let{isMatch:x,score:T,indices:C}=KS(t,g,y,{location:i+b,distance:a,threshold:o,findAllMatches:s,minMatchCharLength:u,includeMatches:n,ignoreLocation:l});x&&(f=!0),d+=T,x&&C&&(c=[...c,...C])});let p={isMatch:f,score:f?d/this.chunks.length:1};return f&&n&&(p.indices=c),p}},Qn=class{constructor(t){this.pattern=t}static isMultiMatch(t){return qv(t,this.multiRegex)}static isSingleMatch(t){return qv(t,this.singleRegex)}search(){}};function qv(e,t){let r=e.match(t);return r?r[1]:null}var Yv=class extends Qn{constructor(t){super(t)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(t){let r=t===this.pattern;return{isMatch:r,score:r?0:1,indices:[0,this.pattern.length-1]}}},Jv=class extends Qn{constructor(t){super(t)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(t){let n=t.indexOf(this.pattern)===-1;return{isMatch:n,score:n?0:1,indices:[0,t.length-1]}}},Gv=class extends Qn{constructor(t){super(t)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(t){let r=t.startsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[0,this.pattern.length-1]}}},Qv=class extends Qn{constructor(t){super(t)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(t){let r=!t.startsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[0,t.length-1]}}},Xv=class extends Qn{constructor(t){super(t)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(t){let r=t.endsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[t.length-this.pattern.length,t.length-1]}}},Zv=class extends Qn{constructor(t){super(t)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(t){let r=!t.endsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[0,t.length-1]}}},Vu=class extends Qn{constructor(t,{location:r=_e.location,threshold:n=_e.threshold,distance:i=_e.distance,includeMatches:a=_e.includeMatches,findAllMatches:o=_e.findAllMatches,minMatchCharLength:s=_e.minMatchCharLength,isCaseSensitive:u=_e.isCaseSensitive,ignoreLocation:l=_e.ignoreLocation}={}){super(t);this._bitapSearch=new Uu(t,{location:r,threshold:n,distance:i,includeMatches:a,findAllMatches:o,minMatchCharLength:s,isCaseSensitive:u,ignoreLocation:l})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(t){return this._bitapSearch.searchIn(t)}},Wu=class extends Qn{constructor(t){super(t)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(t){let r=0,n,i=[],a=this.pattern.length;for(;(n=t.indexOf(this.pattern,r))>-1;)r=n+a,i.push([n,r-1]);let o=!!i.length;return{isMatch:o,score:o?0:1,indices:i}}},zu=[Yv,Wu,Gv,Qv,Zv,Xv,Jv,Vu],ey=zu.length,US=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,VS="|";function WS(e,t={}){return e.split(VS).map(r=>{let n=r.trim().split(US).filter(a=>a&&!!a.trim()),i=[];for(let a=0,o=n.length;a!!(e[Ss.AND]||e[Ss.OR]),qS=e=>!!e[Yu.PATH],YS=e=>!Gn(e)&&Kv(e)&&!Ju(e),ny=e=>({[Ss.AND]:Object.keys(e).map(t=>({[t]:e[t]}))});function ry(e,t,{auto:r=!0}={}){let n=i=>{let a=Object.keys(i),o=qS(i);if(!o&&a.length>1&&!Ju(i))return n(ny(i));if(YS(i)){let u=o?i[Yu.PATH]:a[0],l=o?i[Yu.PATTERN]:i[u];if(!Rn(l))throw new Error(DS(u));let c={keyId:$u(u),pattern:l};return r&&(c.searcher=qu(l,t)),c}let s={children:[],operator:a[0]};return a.forEach(u=>{let l=i[u];Gn(l)&&l.forEach(c=>{s.children.push(n(c))})}),s};return Ju(e)||(e=ny(e)),n(e)}function JS(e,{ignoreFieldNorm:t=_e.ignoreFieldNorm}){e.forEach(r=>{let n=1;r.matches.forEach(({key:i,norm:a,score:o})=>{let s=i?i.weight:null;n*=Math.pow(o===0&&s?Number.EPSILON:o,(s||1)*(t?1:a))}),r.score=n})}function GS(e,t){let r=e.matches;t.matches=[],!!un(r)&&r.forEach(n=>{if(!un(n.indices)||!n.indices.length)return;let{indices:i,value:a}=n,o={indices:i,value:a};n.key&&(o.key=n.key.src),n.idx>-1&&(o.refIndex=n.idx),t.matches.push(o)})}function QS(e,t){t.score=e.score}function XS(e,t,{includeMatches:r=_e.includeMatches,includeScore:n=_e.includeScore}={}){let i=[];return r&&i.push(GS),n&&i.push(QS),e.map(a=>{let{idx:o}=a,s={item:t[o],refIndex:o};return i.length&&i.forEach(u=>{u(a,s)}),s})}var mn=class{constructor(t,r={},n){this.options={..._e,...r},this.options.useExtendedSearch,this._keyStore=new Vv(this.options.keys),this.setCollection(t,n)}setCollection(t,r){if(this._docs=t,r&&!(r instanceof ks))throw new Error(CS);this._myIndex=r||jv(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(t){!un(t)||(this._docs.push(t),this._myIndex.add(t))}remove(t=()=>!1){let r=[];for(let n=0,i=this._docs.length;n-1&&(u=u.slice(0,r)),XS(u,this._docs,{includeMatches:n,includeScore:i})}_searchStringList(t){let r=qu(t,this.options),{records:n}=this._myIndex,i=[];return n.forEach(({v:a,i:o,n:s})=>{if(!un(a))return;let{isMatch:u,score:l,indices:c}=r.searchIn(a);u&&i.push({item:a,idx:o,matches:[{score:l,value:a,norm:s,indices:c}]})}),i}_searchLogical(t){let r=ry(t,this.options),n=(s,u,l)=>{if(!s.children){let{keyId:d,searcher:f}=s,p=this._findMatches({key:this._keyStore.get(d),value:this._myIndex.getValueForItemAtKeyId(u,d),searcher:f});return p&&p.length?[{idx:l,item:u,matches:p}]:[]}let c=[];for(let d=0,f=s.children.length;d{if(un(s)){let l=n(r,s,u);l.length&&(a[u]||(a[u]={idx:u,item:s,matches:[]},o.push(a[u])),l.forEach(({matches:c})=>{a[u].matches.push(...c)}))}}),o}_searchObjectList(t){let r=qu(t,this.options),{keys:n,records:i}=this._myIndex,a=[];return i.forEach(({$:o,i:s})=>{if(!un(o))return;let u=[];n.forEach((l,c)=>{u.push(...this._findMatches({key:l,value:o[c],searcher:r}))}),u.length&&a.push({idx:s,item:o,matches:u})}),a}_findMatches({key:t,value:r,searcher:n}){if(!un(r))return[];let i=[];if(Gn(r))r.forEach(({v:a,i:o,n:s})=>{if(!un(a))return;let{isMatch:u,score:l,indices:c}=n.searchIn(a);u&&i.push({score:l,key:t,value:a,idx:o,norm:s,indices:c})});else{let{v:a,n:o}=r,{isMatch:s,score:u,indices:l}=n.searchIn(a);s&&i.push({score:u,key:t,value:a,norm:o,indices:l})}return i}};mn.version="6.6.2";mn.createIndex=jv;mn.parseIndex=HS;mn.config=_e;mn.parseQuery=ry;jS(ty);var Sy=me(require("obsidian"));m();var iy=me(require("obsidian"));function _s(e,t,r){let n=r.getSetting("date-format"),i=r.getSetting("link-date-to-daily-note"),a=(0,iy.moment)(e).format(n),o=i?Yo(r.app,a):`{${a}}`;Lt(t.current,o),t.current.focus()}function ay({div:e,inputRef:t,cb:r,stateManager:n}){e.createEl("input",{type:"text"},i=>{e.win.setTimeout(()=>r(as(i,{now:new Date,locale:Xo(n),inline:!0,onChange:a=>{_s(a[0],t,n)},win:i.win})))})}function Gu(e,t){let r=t.clientHeight,n=t.clientWidth,i=Ze(t);e.top+r>i.innerHeight&&(t.style.top=`${(e.clientTop||0)-r}px`),e.left+n>i.innerWidth&&(t.style.left=`${(e.left||0)-n}px`)}function oy(e){let t=e.getSetting("time-trigger"),r=new RegExp(`\\B${Ln(t)}{?([^}]*)$`),n=Au(e);return{id:"time",match:r,index:1,search:(i,a)=>{a(i?n.filter(o=>o.startsWith(i)):n)},template:i=>i,replace:i=>`${t}{${i}} `}}function sy(e){let t=e.month(),r=e.clone().startOf("month").weekday(0),n=e.diff(r,"week");e.subtract(1,"month").startOf("month").weekday(6).add(n,"week");let i=e.month();for(;t===i;)e.subtract(1,"week"),i=e.month();return e}function ly(e){let t=e.month(),r=e.clone().startOf("month").weekday(6),n=e.diff(r,"week");e.add(1,"month").startOf("month").weekday(0).add(n,"week");let i=e.month();for(;t===i;)e.add(1,"week"),i=e.month();return e}m();var cy=me(require("obsidian"));var ZS=/\B\[\[([^\]]*)$/,e_=/\B!\[\[([^\]]*)$/,t_=/\B\[\[([^#\]]+)#([^\]]*)$/,n_=/\B!\[\[([^#\]]+)#([^\]]*)$/,r_=/\B\[\[([^#\]]+)#?\^([^\]]*)$/,i_=/\B!\[\[([^#\]]+)#?\^([^\]]*)$/;function a_(e,t,r,n){let i=e.document.body.createDiv(B("file-suggestion-wrapper"));i.detach(),(0,cy.setIcon)(i.createDiv(B("file-suggestion-icon")),"lucide-forward",12),i.createDiv({},o=>{o.createDiv({cls:B("file-suggestion-title"),text:n.item.alias}),o.createDiv({cls:B("file-suggestion-subtitle"),text:t.app.metadataCache.fileToLinktext(n.item.file,r)})});let a=i.outerHTML;return i.remove(),i=null,a}function Qu(e,t,r,n,i,a,o){return{id:`link-${o?"embed":"normal"}`,match:o?e_:ZS,index:1,template:s=>s.item.file===null?`${s.item.path.split("|").pop()||s.item.path}`:s.item.alias?a_(e,i,n,s):i.app.metadataCache.fileToLinktext(s.item.file,n),search:(s,u)=>{if(!s)u(t.slice(0,10).map((l,c)=>({item:l,refIndex:c})));else{let l=s.split("|"),c=l.length>1,d=l[0],f=c?l.slice(1).join("|"):null,p=s;c&&(p={"file.basename":d,alias:f}),u([{item:{file:null,path:s,alias:""},refIndex:-1},...r.search(p)])}},replace:s=>{let u=[];o&&s.item.file.extension==="md"&&u.push("!"),s.item.file===null?u.push(`[[${s.item.path}]]`):u.push(i.app.fileManager.generateMarkdownLink(s.item.file,i.file.path,void 0,s.item.alias));let l=!!i.app.vault.getConfig("useMarkdownLinks");return a&&!l&&(u[u.length-1]=u[u.length-1].slice(0,-2)),u.join("")}}}function o_(e,t,r,n){var u;if(!r)return[];let i=r.split("|"),a=e.metadataCache.getFirstLinkpathDest(i[0],t);if(!a)return[];let o=e.metadataCache.getFileCache(a);if(!o||!((u=o.headings)==null?void 0:u.length))return[];let s=o.headings.map(l=>({file:a,heading:l.heading,alias:i[1]||""}));return n?new mn(s,{keys:["heading"]}).search(n):s.map((l,c)=>({item:l,refIndex:c}))}function Xu(e,t,r,n){return{id:`heading-${n?"embed":"normal"}`,match:n?n_:t_,index:1,template:i=>i.item.heading,search:(i,a,o)=>{a(o_(t.app,e,o[1],o[2]))},replace:i=>{let a=[];n&&i.item.file.extension==="md"&&a.push("!"),a.push(t.app.fileManager.generateMarkdownLink(i.item.file,t.file.path,"#"+i.item.heading,i.item.alias));let o=!!t.app.vault.getConfig("useMarkdownLinks");return r&&!o?a[a.length-1]=a[a.length-1].slice(0,-2):!r&&!o&&a.push("]] "),a.join("")}}}var uy=class{constructor(){this.running=!1;this.cancelled=!1}start(){this.running=!0}stop(){this.running=!1}cancel(){this.stop(),this.cancelled=!0}isRunning(){return this.running}isCancelled(){return this.cancelled}};async function s_(e,t,r,n,i){var u;if(!r)return i([]);let a=r.split("|"),o=e.metadataCache.getFirstLinkpathDest(a[0],t);if(!o)return i([]);let s=e.metadataCache.getFileCache(o);if(!s||!((u=s.sections)==null?void 0:u.length))return i([]);try{let l=await e.metadataCache.blockCache.getForFile(new uy,o);if(!(l==null?void 0:l.blocks))return i([]);let c=l.blocks.map(d=>d.node.type==="heading"?null:{file:o,searchString:d.display,blockId:d.node.id,block:{type:d.node.type,start:d.node.position.start.offset,end:d.node.position.end.offset},alias:a[1]||""}).filter(d=>d);i(n?new mn(c,{keys:["searchString","blockId"]}).search(n):c.map((d,f)=>({item:d,refIndex:f})))}catch(l){i([])}}function l_(e){return["blockquote","code","table","comment","footnoteDefinition"].includes(e)}function Zu(e,t,r,n){return{id:`block-${n?"embed":"normal"}`,match:n?i_:r_,index:1,template:i=>i.item.blockId?`
${i.item.searchString}
${i.item.blockId}
`:i.item.searchString,search:(i,a,o)=>{s_(t.app,e,o[1],o[2],a)},replace:i=>{let a=[];n&&i.item.file.extension==="md"&&a.push("!");let o="#^";if(i.item.blockId)o+=i.item.blockId;else{let u=Ae(),l=l_(i.item.block.type)?` -`:" ";t.app.vault.cachedRead(i.item.file).then(c=>{let d=`${c.slice(0,i.item.block.end)}${l}^${u}${c.slice(i.item.block.end)}`;t.app.vault.modify(i.item.file,d)}).catch(c=>{t.setError(c),console.error(c)}),o+=u}a.push(t.app.fileManager.generateMarkdownLink(i.item.file,t.file.path,o,i.item.alias));let s=!!t.app.vault.getConfig("useMarkdownLinks");return r&&!s?a[a.length-1]=a[a.length-1].slice(0,-2):!r&&!s&&a.push("]] "),a.join("")}}}h();var n_=/\B#([^\s]*)?$/;function ay(e,t){return{id:"tag",match:n_,index:1,search:(r,n)=>{n(r?[{item:`#${r}`,refIndex:-1},...t.search(r,{limit:50})]:e.slice(0,50).map((i,a)=>({item:i,refIndex:a})))},template:r=>r.item,replace:r=>`${r.item.replace(/<\/?em>/g,"")} `}}h();h();var sy=ge(Ta());h();h();var a_=/\$&/g,o_=/\$(\d)/g,Ju=class{constructor(t,r,n){this.data=t;this.term=r;this.strategy=n}getReplacementData(t){let r=this.strategy.replace(this.data);if(r==null)return null;let n="";Array.isArray(r)&&(n=r[1],r=r[0]);let i=this.strategy.match(t);if(i==null||i.index==null)return null;let a=r.replace(a_,i[0]).replace(o_,(o,s)=>i[parseInt(s)]);return{start:i.index,end:i.index+i[0].length,beforeCursor:a,afterCursor:n}}replace(t,r){let n=this.getReplacementData(t);if(n!==null)return r=n.afterCursor+r,[[t.slice(0,n.start),n.beforeCursor,t.slice(n.end)].join(""),r]}render(){return this.strategy.renderTemplate(this.data,this.term)}getStrategyId(){return this.strategy.getId()}};var s_=1,Gu=class{constructor(t){this.props=t;this.cache={}}destroy(){return this.cache={},this}replace(t){return this.props.replace(t)}execute(t,r){var a;let n=this.matchWithContext(t);if(!n)return!1;let i=n[(a=this.props.index)!=null?a:s_];return this.search(i,o=>{r(o.map(s=>new Ju(s,i,this)))},n),!0}renderTemplate(t,r){if(this.props.template)return this.props.template(t,r);if(typeof t=="string")return t;throw new Error(`Unexpected render data type: ${typeof t}. Please implement template parameter by yourself`)}getId(){return this.props.id||null}match(t){return typeof this.props.match=="function"?this.props.match(t):t.match(this.props.match)}search(t,r,n){this.props.cache?this.searchWithCach(t,r,n):this.props.search(t,r,n)}matchWithContext(t){let r=this.context(t);return r===!1?null:this.match(r===!0?t:r)}context(t){return this.props.context?this.props.context(t):!0}searchWithCach(t,r,n){this.cache[t]!=null?r(this.cache[t]):this.props.search(t,i=>{this.cache[t]=i,r(i)},n)}};var Qu=class extends sy.EventEmitter{constructor(t){super();this.handleQueryResult=t=>{this.emit("hit",{searchResults:t})};this.strategies=t.map(r=>new Gu(r))}destroy(){return this.strategies.forEach(t=>t.destroy()),this}run(t){for(let r of this.strategies)if(r.execute(t,this.handleQueryResult))return;this.handleQueryResult([])}};h();var ly=ge(Ta());h();var l_=typeof window!="undefined"&&!!window.CustomEvent,Ut=(e,t,r)=>{if(l_)return new CustomEvent(t,r);let n=e.createEvent("CustomEvent");return n.initCustomEvent(t,!1,(r==null?void 0:r.cancelable)||!1,(r==null?void 0:r.detail)||void 0),n};var c_=10,u_="auto",d_="dropdown-menu textcomplete-dropdown",cy="textcomplete-item",f_=`${cy} active`,Da=class extends ly.EventEmitter{constructor(t,r){super();this.el=t;this.option=r;this.shown=!1;this.items=[];this.activeIndex=null}static create(t){let r=t.parent||window.document.body,i=r.doc.createElement("ul");return i.className=t.className||d_,Object.assign(i.style,{display:"none",position:"absolute",zIndex:"1000"},t.style),r==null||r.appendChild(i),new Da(i,t)}render(t,r){let n=Ut(this.el.doc,"render",{cancelable:!0});return this.emit("render",n),n.defaultPrevented?this:(this.clear(),t.length===0?this.hide():(this.items=t.slice(0,this.option.maxCount||c_).map((i,a)=>{var o;return new uy(this,a,i,((o=this.option)==null?void 0:o.item)||{})}),this.setStrategyId(t[0]).renderEdge(t,"header").renderItems().renderEdge(t,"footer").show().setOffset(r).activate(0),this.emit("rendered",Ut(this.el.doc,"rendered")),this))}destroy(){var t;return this.clear(),(t=this.el.parentNode)==null||t.removeChild(this.el),this}select(t){let r={searchResult:t.searchResult},n=Ut(this.el.doc,"select",{cancelable:!0,detail:r});return this.emit("select",n),n.defaultPrevented?this:(this.hide(),this.emit("selected",Ut(this.el.doc,"selected",{detail:r})),this)}show(){if(!this.shown){let t=Ut(this.el.doc,"show",{cancelable:!0});if(this.emit("show",t),t.defaultPrevented)return this;this.el.style.display="block",this.shown=!0,this.emit("shown",Ut(this.el.doc,"shown"))}return this}hide(){if(this.shown){let t=Ut(this.el.doc,"hide",{cancelable:!0});if(this.emit("hide",t),t.defaultPrevented)return this;this.el.style.display="none",this.shown=!1,this.clear(),this.emit("hidden",Ut(this.el.doc,"hidden"))}return this}clear(){return this.items.forEach(t=>t.destroy()),this.items=[],this.el.innerHTML="",this.activeIndex=null,this}up(t){return this.shown?this.moveActiveItem("prev",t):this}down(t){return this.shown?this.moveActiveItem("next",t):this}moveActiveItem(t,r){if(this.activeIndex!=null){let n=t==="next"?this.getNextActiveIndex():this.getPrevActiveIndex();n!=null&&(this.activate(n),r.preventDefault())}return this}activate(t){return this.activeIndex!==t&&(this.activeIndex!=null&&this.items[this.activeIndex].deactivate(),this.activeIndex=t,this.items[t].activate()),this}isShown(){return this.shown}getActiveItem(){return this.activeIndex!=null?this.items[this.activeIndex]:null}setOffset(t){let n=this.el.doc.documentElement;if(n){let i=this.el.offsetWidth;if(t.left){let s=this.option.dynamicWidth?n.scrollWidth:n.clientWidth;t.left+i>s&&(t.left=s-i),this.el.style.left=`${t.left}px`}else t.right&&(t.right-i<0&&(t.right=0),this.el.style.right=`${t.right}px`);let a=!1,o=this.option.placement||u_;if(o==="auto"){let s=this.el.clientHeight;a=t.clientTop!=null&&t.clientTop+s>n.clientHeight}o==="top"||a?(this.el.style.bottom=`${n.clientHeight-t.top+t.lineHeight}px`,this.el.style.top="auto"):(this.el.style.top=`${t.top}px`,this.el.style.bottom="auto")}return this}getNextActiveIndex(){if(this.activeIndex==null)throw new Error;return this.activeIndexo.data)):n||"",this.el.appendChild(a),this}},uy=class{constructor(t,r,n,i){this.dropdown=t;this.index=r;this.searchResult=n;this.props=i;this.active=!1;this.onClick=t=>{t.preventDefault(),this.dropdown.select(this)};this.className=this.props.className||cy,this.activeClassName=this.props.activeClassName||f_;let a=t.el.doc,o=a.createElement("li");o.className=this.active?this.activeClassName:this.className;let s=a.createElement("span");s.tabIndex=-1,s.innerHTML=this.searchResult.render(),o.appendChild(s),o.addEventListener("mousedown",this.onClick),o.addEventListener("touchstart",this.onClick),this.el=o}destroy(){var r;let t=this.el;return(r=t.parentNode)==null||r.removeChild(t),t.removeEventListener("mousedown",this.onClick,!1),t.removeEventListener("touchstart",this.onClick,!1),this}activate(){return this.active||(this.active=!0,this.el.className=this.activeClassName,this.dropdown.el.scrollTop=this.el.offsetTop),this}deactivate(){return this.active&&(this.active=!1,this.el.className=this.className),this}};h();var dy=ge(Ta());var Xu=class extends dy.EventEmitter{destroy(){return this}applySearchResult(t){throw new Error("Not implemented.")}getCursorOffset(){throw new Error("Not implemented.")}getBeforeCursor(){throw new Error("Not implemented.")}emitMoveEvent(t){let r=Ut(activeDocument,"move",{cancelable:!0,detail:{code:t}});return this.emit("move",r),r}emitEnterEvent(){let t=Ut(activeDocument,"enter",{cancelable:!0});return this.emit("enter",t),t}emitChangeEvent(){let t=Ut(activeDocument,"change",{detail:{beforeCursor:this.getBeforeCursor()}});return this.emit("change",t),t}emitEscEvent(){let t=Ut(activeDocument,"esc",{cancelable:!0});return this.emit("esc",t),t}getCode(t){return t.keyCode===9||t.keyCode===13?"ENTER":t.keyCode===27?"ESC":t.keyCode===38?"UP":t.keyCode===40||t.keyCode===78&&t.ctrlKey?"DOWN":t.keyCode===80&&t.ctrlKey?"UP":"OTHER"}};h();var fy=ge(Ta());var p_=["show","shown","render","rendered","selected","hidden","hide"],Zu=class extends fy.EventEmitter{constructor(t,r,n){super();this.editor=t;this.isQueryInFlight=!1;this.nextPendingQuery=null;this.handleHit=({searchResults:t})=>{t.length?this.dropdown.render(t,this.editor.getCursorOffset()):this.dropdown.hide(),this.isQueryInFlight=!1,this.nextPendingQuery!==null&&this.trigger(this.nextPendingQuery)};this.handleMove=t=>{t.detail.code==="UP"?this.dropdown.up(t):this.dropdown.down(t)};this.handleEnter=t=>{let r=this.dropdown.getActiveItem();r?(this.dropdown.select(r),t.preventDefault()):this.dropdown.hide()};this.handleEsc=t=>{this.dropdown.isShown()&&(this.dropdown.hide(),t.preventDefault())};this.handleChange=t=>{t.detail.beforeCursor!=null?this.trigger(t.detail.beforeCursor):this.dropdown.hide()};this.handleSelect=t=>{this.emit("select",t),t.defaultPrevented||this.editor.applySearchResult(t.detail.searchResult)};this.handleResize=()=>{this.dropdown.isShown()&&this.dropdown.setOffset(this.editor.getCursorOffset())};this.completer=new Qu(r),this.dropdown=Da.create((n==null?void 0:n.dropdown)||{}),this.startListening()}destroy(t=!0){return this.completer.destroy(),this.dropdown.destroy(),t&&this.editor.destroy(),this.stopListening(),this}isShown(){return this.dropdown.isShown()}hide(){return this.dropdown.hide(),this}trigger(t){return this.isQueryInFlight?this.nextPendingQuery=t:(this.isQueryInFlight=!0,this.nextPendingQuery=null,this.completer.run(t)),this}startListening(){var t;this.editor.on("move",this.handleMove).on("enter",this.handleEnter).on("esc",this.handleEsc).on("change",this.handleChange),this.dropdown.on("select",this.handleSelect);for(let r of p_)this.dropdown.on(r,n=>this.emit(r,n));this.completer.on("hit",this.handleHit),(t=Ze(this.dropdown.el))==null||t.addEventListener("resize",this.handleResize)}stopListening(){var t;(t=Ze(this.dropdown.el))==null||t.removeEventListener("resize",this.handleResize),this.completer.removeAllListeners(),this.dropdown.removeAllListeners(),this.editor.removeListener("move",this.handleMove).removeListener("enter",this.handleEnter).removeListener("esc",this.handleEsc).removeListener("change",this.handleChange)}};h();h();h();h();var py=e=>{let t=e.getBoundingClientRect(),r=e.doc;if(r==null)throw new Error("Given element does not belong to document");let{defaultView:n,documentElement:i}=r;if(n==null)throw new Error("Given element does not belong to window");let a={top:t.top+n.pageYOffset,left:t.left+n.pageXOffset};return i&&(a.top-=i.clientTop,a.left-=i.clientLeft),a};h();var h_="0".charCodeAt(0),m_="9".charCodeAt(0),hy=e=>h_<=e&&e<=m_,my=e=>{let t=getComputedStyle(e),r=t.lineHeight;if(hy(r.charCodeAt(0))){let n=parseFloat(r);return hy(r.charCodeAt(r.length-1))?n*parseFloat(t.fontSize):n}return g_(e.doc,e.nodeName,t)},g_=(e,t,r)=>{let n=e.body;if(!n)return 0;let i=e.createElement(t);i.innerHTML=" ",Object.assign(i.style,{fontSize:r.fontSize,fontFamily:r.fontFamily,padding:"0"}),n.appendChild(i),i.instanceOf(HTMLTextAreaElement)&&(i.rows=1);let a=i.offsetHeight;return n.removeChild(i),a};h();h();function gy(e,t,r){let n=e.doc,i=e.value,a=t+(r||""),o=n.activeElement,s=0,u=0;for(;s=0&&a.length-u-1>=0&&i[i.length-u-1]===a[a.length-u-1];)u++;s=Math.min(s,Math.min(i.length,a.length)-u),e.setSelectionRange(s,i.length-u);let l=a.substring(s,a.length-u);if(e.focus(),!n.execCommand("insertText",!1,l)){e.value=a;let c=n.createEvent("Event");c.initEvent("input",!0,!0),e.dispatchEvent(c)}return e.setSelectionRange(t.length,t.length),o.focus(),e}h();var v_=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","MozTabSize"];function vy(e,t){let r=e.doc,n=e.win,i=r.createElement("div");i.id="input-textarea-caret-position-mirror-div",r.body.appendChild(i);let a=i.style,o=n.getComputedStyle(e);a.whiteSpace="pre-wrap",a.position="absolute",v_.forEach(l=>{a[l]=o[l]}),a.overflow="hidden",i.textContent=e.value.substring(0,t);let s=r.createElement("span");s.textContent=e.value.substring(t)||".",i.appendChild(s);let u={top:s.offsetTop+parseInt(o.borderTopWidth),left:s.offsetLeft+parseInt(o.borderLeftWidth),height:parseInt(o.lineHeight)};return r.body.removeChild(i),u}var xs=class extends Xu{constructor(t){super();this.el=t;this.onInput=()=>{this.emitChangeEvent()};this.onKeydown=t=>{let r=this.getCode(t),n;r==="UP"||r==="DOWN"?n=this.emitMoveEvent(r):r==="ENTER"?n=this.emitEnterEvent():r==="ESC"&&(n=this.emitEscEvent()),n&&n.defaultPrevented&&t.preventDefault()};this.startListening()}destroy(){return super.destroy(),this.stopListening(),this}applySearchResult(t){let r=this.getBeforeCursor();if(r!=null){let n=t.replace(r,this.getAfterCursor());this.el.focus(),Array.isArray(n)&&(gy(this.el,n[0],n[1]),this.el&&this.el.dispatchEvent(Ut(this.el.doc,"input")))}}getCursorOffset(){let t=py(this.el),r=this.getElScroll(),n=this.getCursorPosition(),i=my(this.el),a=t.top-r.top+n.top+i,o=t.left-r.left+n.left,s=this.el.getBoundingClientRect().top,u=this.el.doc;if(this.el.dir!=="rtl")return{top:a,left:o,lineHeight:i,clientTop:s};{let l=u.documentElement?u.documentElement.clientWidth-o:0;return{top:a,right:l,lineHeight:i,clientTop:s}}}getBeforeCursor(){return this.el.selectionStart!==this.el.selectionEnd?null:this.el.value.slice(0,this.el.selectionEnd)}getAfterCursor(){return this.el.value.slice(this.el.selectionEnd)}getElScroll(){return{top:this.el.scrollTop,left:this.el.scrollLeft}}getCursorPosition(){return vy(this.el,this.el.selectionEnd)}startListening(){this.el.addEventListener("input",this.onInput),this.el.addEventListener("keydown",this.onKeydown)}stopListening(){this.el.removeEventListener("input",this.onInput),this.el.removeEventListener("keydown",this.onKeydown)}};function y_({inputRef:e,isAutocompleteVisibleRef:t,obsidianContext:r,excludeDatePicker:n}){let{stateManager:i,filePath:a,view:o}=r,s=null,u=null,l=i.getSetting("date-trigger"),c=new RegExp(`(?:^|\\s)${Ln(l)}$`),d=Object.keys(i.app.metadataCache.getTags()).sort(),f=new mn(d),p=i.app.metadataCache.getLinkSuggestions().filter(N=>!!N.file),m=new mn(p,{keys:["file.basename","alias"]}),y=o.app.vault.getConfig("autoPairBrackets"),b=[ay(d,f),qu(a,i,y,!0),qu(a,i,y,!1),ju(a,i,y,!0),ju(a,i,y,!1),zu(o.getWindow(),p,m,a,i,y,!0),zu(o.getWindow(),p,m,a,i,y,!1)];n||b.push(ey(i));let x=new xs(e.current),D=new Zu(x,b,{dropdown:{parent:ai(e.current),maxCount:96,className:`${$("autocomplete")} ${$("ignore-click-outside")}`,rotate:!0,item:{className:`${$("autocomplete-item")} ${$("ignore-click-outside")}`,activeClassName:`${$("autocomplete-item-active")} ${$("ignore-click-outside")}`}}}),C=()=>{D.isShown()||(t.current=!1);let N=s.win;u.destroy(),s.remove(),N.setTimeout(()=>{s=null})};D.on("show",()=>{t.current=!0}),D.on("hidden",()=>{t.current=!1});let A;if(!n){A=T=>{if(D.isShown&&["#","^"].contains(T.key)){let W=D.dropdown.getActiveItem(),z=W==null?void 0:W.searchResult;if(z&&z.strategy.props.id.startsWith("link")){T.preventDefault(),x.applySearchResult(z),At(e.current,T.key==="^"?"#^":"#");return}}if(!s)return;if(T.key==="Enter"){T.preventDefault();let W=u.selectedDates;return W.length?ws(W[0],e,i):ws(new Date,e,i),C()}if(T.key==="Escape")return T.preventDefault(),C();let O=(0,yy.moment)(u.selectedDates[0]||new Date);if(T.key==="ArrowRight"){T.preventDefault(),O.weekday()===6?u.setDate(ny(O).toDate(),!1):u.setDate(O.add(1,"day").toDate(),!1);return}if(T.key==="ArrowLeft"){T.preventDefault(),O.weekday()===0?u.setDate(ty(O).toDate(),!1):u.setDate(O.subtract(1,"day").toDate(),!1);return}if(T.key==="ArrowUp"){T.preventDefault(),u.setDate(O.subtract(1,"week").toDate(),!1);return}if(T.key==="ArrowDown"){T.preventDefault(),u.setDate(O.add(1,"week").toDate(),!1);return}},e.current.addEventListener("keydown",A);let N=e.current.doc;x.on("change",T=>{let O=T.detail.beforeCursor;if(O&&c.test(O)){let W=x.getCursorOffset();s?(s.style.left=`${W.left||0}px`,s.style.top=`${W.top||0}px`,Vu(W,s)):s=N.body.createDiv({cls:`${$("date-picker")} ${$("ignore-click-outside")}`},z=>{z.style.left=`${W.left||0}px`,z.style.top=`${W.top||0}px`,Zv({div:z,inputRef:e,stateManager:i,cb:ee=>{u=ee,t.current=!0,Vu(W,s)}})})}else s&&C()})}return()=>{!n&&e.current&&e.current.removeEventListener("keydown",A),s&&C(),D.destroy(),x.destroy()}}function by({isInputVisible:e,onEnter:t,onEscape:r,onKeyDown:n,excludeDatePicker:i}){let a=F.useContext(Ve),o=F.useRef(!1),s=F.useRef(),{oncompositionstart:u,oncompositionend:l,getShouldIMEBlockAction:c}=go();return F.useEffect(()=>{let d=s.current;if(e&&d)return d.focus(),d.selectionStart=d.selectionEnd=d.value.length,y_({inputRef:s,isAutocompleteVisibleRef:o,obsidianContext:a,excludeDatePicker:i})},[e]),{ref:s,oncompositionstart:u,oncompositionend:l,onKeyDownCapture:d=>{c()||o.current||n(d)||(d.key==="Enter"?t&&t(d):d.key==="Escape"&&r&&r(d))}}}h();var wy=/^[*_]{2}(.+)[*_]{2}$/;function b_(e){return e.replace(wy,"$1")}var Ey=/^[*_]{1}(.+)[*_]{1}$/;function w_(e){return e.replace(Ey,"$1")}var xy=/^`{1}(.+)`{1}$/;function E_(e){return e.replace(xy,"$1")}var ky=/^={2}(.+)={2}$/;function x_(e){return e.replace(ky,"$1")}var Sy=/^~{2}(.+)~{2}$/;function k_(e){return e.replace(Sy,"$1")}var S_=/^(?:>.+?(?:[\r\n]|$))+$/;function __(e){return e.split(` +`:" ";t.app.vault.cachedRead(i.item.file).then(c=>{let d=`${c.slice(0,i.item.block.end)}${l}^${u}${c.slice(i.item.block.end)}`;t.app.vault.modify(i.item.file,d)}).catch(c=>{t.setError(c),console.error(c)}),o+=u}a.push(t.app.fileManager.generateMarkdownLink(i.item.file,t.file.path,o,i.item.alias));let s=!!t.app.vault.getConfig("useMarkdownLinks");return r&&!s?a[a.length-1]=a[a.length-1].slice(0,-2):!r&&!s&&a.push("]] "),a.join("")}}}m();var c_=/\B#([^\s]*)?$/;function dy(e,t){return{id:"tag",match:c_,index:1,search:(r,n)=>{n(r?[{item:`#${r}`,refIndex:-1},...t.search(r,{limit:50})]:e.slice(0,50).map((i,a)=>({item:i,refIndex:a})))},template:r=>r.item,replace:r=>`${r.item.replace(/<\/?em>/g,"")} `}}m();m();var py=me(Ma());m();m();var f_=/\$&/g,p_=/\$(\d)/g,td=class{constructor(t,r,n){this.data=t;this.term=r;this.strategy=n}getReplacementData(t){let r=this.strategy.replace(this.data);if(r==null)return null;let n="";Array.isArray(r)&&(n=r[1],r=r[0]);let i=this.strategy.match(t);if(i==null||i.index==null)return null;let a=r.replace(f_,i[0]).replace(p_,(o,s)=>i[parseInt(s)]);return{start:i.index,end:i.index+i[0].length,beforeCursor:a,afterCursor:n}}replace(t,r){let n=this.getReplacementData(t);if(n!==null)return r=n.afterCursor+r,[[t.slice(0,n.start),n.beforeCursor,t.slice(n.end)].join(""),r]}render(){return this.strategy.renderTemplate(this.data,this.term)}getStrategyId(){return this.strategy.getId()}};var h_=1,nd=class{constructor(t){this.props=t;this.cache={}}destroy(){return this.cache={},this}replace(t){return this.props.replace(t)}execute(t,r){var a;let n=this.matchWithContext(t);if(!n)return!1;let i=n[(a=this.props.index)!=null?a:h_];return this.search(i,o=>{r(o.map(s=>new td(s,i,this)))},n),!0}renderTemplate(t,r){if(this.props.template)return this.props.template(t,r);if(typeof t=="string")return t;throw new Error(`Unexpected render data type: ${typeof t}. Please implement template parameter by yourself`)}getId(){return this.props.id||null}match(t){return typeof this.props.match=="function"?this.props.match(t):t.match(this.props.match)}search(t,r,n){this.props.cache?this.searchWithCach(t,r,n):this.props.search(t,r,n)}matchWithContext(t){let r=this.context(t);return r===!1?null:this.match(r===!0?t:r)}context(t){return this.props.context?this.props.context(t):!0}searchWithCach(t,r,n){this.cache[t]!=null?r(this.cache[t]):this.props.search(t,i=>{this.cache[t]=i,r(i)},n)}};var rd=class extends py.EventEmitter{constructor(t){super();this.handleQueryResult=t=>{this.emit("hit",{searchResults:t})};this.strategies=t.map(r=>new nd(r))}destroy(){return this.strategies.forEach(t=>t.destroy()),this}run(t){for(let r of this.strategies)if(r.execute(t,this.handleQueryResult))return;this.handleQueryResult([])}};m();var hy=me(Ma());m();var m_=typeof window!="undefined"&&!!window.CustomEvent,Ut=(e,t,r)=>{if(m_)return new CustomEvent(t,r);let n=e.createEvent("CustomEvent");return n.initCustomEvent(t,!1,(r==null?void 0:r.cancelable)||!1,(r==null?void 0:r.detail)||void 0),n};var g_=10,v_="auto",y_="dropdown-menu textcomplete-dropdown",my="textcomplete-item",b_=`${my} active`,Ia=class extends hy.EventEmitter{constructor(t,r){super();this.el=t;this.option=r;this.shown=!1;this.items=[];this.activeIndex=null}static create(t){let r=t.parent||window.document.body,i=r.doc.createElement("ul");return i.className=t.className||y_,Object.assign(i.style,{display:"none",position:"absolute",zIndex:"1000"},t.style),r==null||r.appendChild(i),new Ia(i,t)}render(t,r){let n=Ut(this.el.doc,"render",{cancelable:!0});return this.emit("render",n),n.defaultPrevented?this:(this.clear(),t.length===0?this.hide():(this.items=t.slice(0,this.option.maxCount||g_).map((i,a)=>{var o;return new gy(this,a,i,((o=this.option)==null?void 0:o.item)||{})}),this.setStrategyId(t[0]).renderEdge(t,"header").renderItems().renderEdge(t,"footer").show().setOffset(r).activate(0),this.emit("rendered",Ut(this.el.doc,"rendered")),this))}destroy(){var t;return this.clear(),(t=this.el.parentNode)==null||t.removeChild(this.el),this}select(t){let r={searchResult:t.searchResult},n=Ut(this.el.doc,"select",{cancelable:!0,detail:r});return this.emit("select",n),n.defaultPrevented?this:(this.hide(),this.emit("selected",Ut(this.el.doc,"selected",{detail:r})),this)}show(){if(!this.shown){let t=Ut(this.el.doc,"show",{cancelable:!0});if(this.emit("show",t),t.defaultPrevented)return this;this.el.style.display="block",this.shown=!0,this.emit("shown",Ut(this.el.doc,"shown"))}return this}hide(){if(this.shown){let t=Ut(this.el.doc,"hide",{cancelable:!0});if(this.emit("hide",t),t.defaultPrevented)return this;this.el.style.display="none",this.shown=!1,this.clear(),this.emit("hidden",Ut(this.el.doc,"hidden"))}return this}clear(){return this.items.forEach(t=>t.destroy()),this.items=[],this.el.innerHTML="",this.activeIndex=null,this}up(t){return this.shown?this.moveActiveItem("prev",t):this}down(t){return this.shown?this.moveActiveItem("next",t):this}moveActiveItem(t,r){if(this.activeIndex!=null){let n=t==="next"?this.getNextActiveIndex():this.getPrevActiveIndex();n!=null&&(this.activate(n),r.preventDefault())}return this}activate(t){return this.activeIndex!==t&&(this.activeIndex!=null&&this.items[this.activeIndex].deactivate(),this.activeIndex=t,this.items[t].activate()),this}isShown(){return this.shown}getActiveItem(){return this.activeIndex!=null?this.items[this.activeIndex]:null}setOffset(t){let n=this.el.doc.documentElement;if(n){let i=this.el.offsetWidth;if(t.left){let s=this.option.dynamicWidth?n.scrollWidth:n.clientWidth;t.left+i>s&&(t.left=s-i),this.el.style.left=`${t.left}px`}else t.right&&(t.right-i<0&&(t.right=0),this.el.style.right=`${t.right}px`);let a=!1,o=this.option.placement||v_;if(o==="auto"){let s=this.el.clientHeight;a=t.clientTop!=null&&t.clientTop+s>n.clientHeight}o==="top"||a?(this.el.style.bottom=`${n.clientHeight-t.top+t.lineHeight}px`,this.el.style.top="auto"):(this.el.style.top=`${t.top}px`,this.el.style.bottom="auto")}return this}getNextActiveIndex(){if(this.activeIndex==null)throw new Error;return this.activeIndexo.data)):n||"",this.el.appendChild(a),this}},gy=class{constructor(t,r,n,i){this.dropdown=t;this.index=r;this.searchResult=n;this.props=i;this.active=!1;this.onClick=t=>{t.preventDefault(),this.dropdown.select(this)};this.className=this.props.className||my,this.activeClassName=this.props.activeClassName||b_;let a=t.el.doc,o=a.createElement("li");o.className=this.active?this.activeClassName:this.className;let s=a.createElement("span");s.tabIndex=-1,s.innerHTML=this.searchResult.render(),o.appendChild(s),o.addEventListener("mousedown",this.onClick),o.addEventListener("touchstart",this.onClick),this.el=o}destroy(){var r;let t=this.el;return(r=t.parentNode)==null||r.removeChild(t),t.removeEventListener("mousedown",this.onClick,!1),t.removeEventListener("touchstart",this.onClick,!1),this}activate(){return this.active||(this.active=!0,this.el.className=this.activeClassName,this.dropdown.el.scrollTop=this.el.offsetTop),this}deactivate(){return this.active&&(this.active=!1,this.el.className=this.className),this}};m();var vy=me(Ma());var id=class extends vy.EventEmitter{destroy(){return this}applySearchResult(t){throw new Error("Not implemented.")}getCursorOffset(){throw new Error("Not implemented.")}getBeforeCursor(){throw new Error("Not implemented.")}emitMoveEvent(t){let r=Ut(activeDocument,"move",{cancelable:!0,detail:{code:t}});return this.emit("move",r),r}emitEnterEvent(){let t=Ut(activeDocument,"enter",{cancelable:!0});return this.emit("enter",t),t}emitChangeEvent(){let t=Ut(activeDocument,"change",{detail:{beforeCursor:this.getBeforeCursor()}});return this.emit("change",t),t}emitEscEvent(){let t=Ut(activeDocument,"esc",{cancelable:!0});return this.emit("esc",t),t}getCode(t){return t.keyCode===9||t.keyCode===13?"ENTER":t.keyCode===27?"ESC":t.keyCode===38?"UP":t.keyCode===40||t.keyCode===78&&t.ctrlKey?"DOWN":t.keyCode===80&&t.ctrlKey?"UP":"OTHER"}};m();var yy=me(Ma());var w_=["show","shown","render","rendered","selected","hidden","hide"],ad=class extends yy.EventEmitter{constructor(t,r,n){super();this.editor=t;this.isQueryInFlight=!1;this.nextPendingQuery=null;this.handleHit=({searchResults:t})=>{t.length?this.dropdown.render(t,this.editor.getCursorOffset()):this.dropdown.hide(),this.isQueryInFlight=!1,this.nextPendingQuery!==null&&this.trigger(this.nextPendingQuery)};this.handleMove=t=>{t.detail.code==="UP"?this.dropdown.up(t):this.dropdown.down(t)};this.handleEnter=t=>{let r=this.dropdown.getActiveItem();r?(this.dropdown.select(r),t.preventDefault()):this.dropdown.hide()};this.handleEsc=t=>{this.dropdown.isShown()&&(this.dropdown.hide(),t.preventDefault())};this.handleChange=t=>{t.detail.beforeCursor!=null?this.trigger(t.detail.beforeCursor):this.dropdown.hide()};this.handleSelect=t=>{this.emit("select",t),t.defaultPrevented||this.editor.applySearchResult(t.detail.searchResult)};this.handleResize=()=>{this.dropdown.isShown()&&this.dropdown.setOffset(this.editor.getCursorOffset())};this.completer=new rd(r),this.dropdown=Ia.create((n==null?void 0:n.dropdown)||{}),this.startListening()}destroy(t=!0){return this.completer.destroy(),this.dropdown.destroy(),t&&this.editor.destroy(),this.stopListening(),this}isShown(){return this.dropdown.isShown()}hide(){return this.dropdown.hide(),this}trigger(t){return this.isQueryInFlight?this.nextPendingQuery=t:(this.isQueryInFlight=!0,this.nextPendingQuery=null,this.completer.run(t)),this}startListening(){var t;this.editor.on("move",this.handleMove).on("enter",this.handleEnter).on("esc",this.handleEsc).on("change",this.handleChange),this.dropdown.on("select",this.handleSelect);for(let r of w_)this.dropdown.on(r,n=>this.emit(r,n));this.completer.on("hit",this.handleHit),(t=Ze(this.dropdown.el))==null||t.addEventListener("resize",this.handleResize)}stopListening(){var t;(t=Ze(this.dropdown.el))==null||t.removeEventListener("resize",this.handleResize),this.completer.removeAllListeners(),this.dropdown.removeAllListeners(),this.editor.removeListener("move",this.handleMove).removeListener("enter",this.handleEnter).removeListener("esc",this.handleEsc).removeListener("change",this.handleChange)}};m();m();m();m();var by=e=>{let t=e.getBoundingClientRect(),r=e.doc;if(r==null)throw new Error("Given element does not belong to document");let{defaultView:n,documentElement:i}=r;if(n==null)throw new Error("Given element does not belong to window");let a={top:t.top+n.pageYOffset,left:t.left+n.pageXOffset};return i&&(a.top-=i.clientTop,a.left-=i.clientLeft),a};m();var E_="0".charCodeAt(0),k_="9".charCodeAt(0),wy=e=>E_<=e&&e<=k_,Ey=e=>{let t=getComputedStyle(e),r=t.lineHeight;if(wy(r.charCodeAt(0))){let n=parseFloat(r);return wy(r.charCodeAt(r.length-1))?n*parseFloat(t.fontSize):n}return x_(e.doc,e.nodeName,t)},x_=(e,t,r)=>{let n=e.body;if(!n)return 0;let i=e.createElement(t);i.innerHTML=" ",Object.assign(i.style,{fontSize:r.fontSize,fontFamily:r.fontFamily,padding:"0"}),n.appendChild(i),i.instanceOf(HTMLTextAreaElement)&&(i.rows=1);let a=i.offsetHeight;return n.removeChild(i),a};m();m();function ky(e,t,r){let n=e.doc,i=e.value,a=t+(r||""),o=n.activeElement,s=0,u=0;for(;s=0&&a.length-u-1>=0&&i[i.length-u-1]===a[a.length-u-1];)u++;s=Math.min(s,Math.min(i.length,a.length)-u),e.setSelectionRange(s,i.length-u);let l=a.substring(s,a.length-u);if(e.focus(),!n.execCommand("insertText",!1,l)){e.value=a;let c=n.createEvent("Event");c.initEvent("input",!0,!0),e.dispatchEvent(c)}return e.setSelectionRange(t.length,t.length),o.focus(),e}m();var S_=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","MozTabSize"];function xy(e,t){let r=e.doc,n=e.win,i=r.createElement("div");i.id="input-textarea-caret-position-mirror-div",r.body.appendChild(i);let a=i.style,o=n.getComputedStyle(e);a.whiteSpace="pre-wrap",a.position="absolute",S_.forEach(l=>{a[l]=o[l]}),a.overflow="hidden",i.textContent=e.value.substring(0,t);let s=r.createElement("span");s.textContent=e.value.substring(t)||".",i.appendChild(s);let u={top:s.offsetTop+parseInt(o.borderTopWidth),left:s.offsetLeft+parseInt(o.borderLeftWidth),height:parseInt(o.lineHeight)};return r.body.removeChild(i),u}var Ds=class extends id{constructor(t){super();this.el=t;this.onInput=()=>{this.emitChangeEvent()};this.onKeydown=t=>{let r=this.getCode(t),n;r==="UP"||r==="DOWN"?n=this.emitMoveEvent(r):r==="ENTER"?n=this.emitEnterEvent():r==="ESC"&&(n=this.emitEscEvent()),n&&n.defaultPrevented&&t.preventDefault()};this.startListening()}destroy(){return super.destroy(),this.stopListening(),this}applySearchResult(t){let r=this.getBeforeCursor();if(r!=null){let n=t.replace(r,this.getAfterCursor());this.el.focus(),Array.isArray(n)&&(ky(this.el,n[0],n[1]),this.el&&this.el.dispatchEvent(Ut(this.el.doc,"input")))}}getCursorOffset(){let t=by(this.el),r=this.getElScroll(),n=this.getCursorPosition(),i=Ey(this.el),a=t.top-r.top+n.top+i,o=t.left-r.left+n.left,s=this.el.getBoundingClientRect().top,u=this.el.doc;if(this.el.dir!=="rtl")return{top:a,left:o,lineHeight:i,clientTop:s};{let l=u.documentElement?u.documentElement.clientWidth-o:0;return{top:a,right:l,lineHeight:i,clientTop:s}}}getBeforeCursor(){return this.el.selectionStart!==this.el.selectionEnd?null:this.el.value.slice(0,this.el.selectionEnd)}getAfterCursor(){return this.el.value.slice(this.el.selectionEnd)}getElScroll(){return{top:this.el.scrollTop,left:this.el.scrollLeft}}getCursorPosition(){return xy(this.el,this.el.selectionEnd)}startListening(){this.el.addEventListener("input",this.onInput),this.el.addEventListener("keydown",this.onKeydown)}stopListening(){this.el.removeEventListener("input",this.onInput),this.el.removeEventListener("keydown",this.onKeydown)}};function __({inputRef:e,isAutocompleteVisibleRef:t,obsidianContext:r,excludeDatePicker:n}){let{stateManager:i,filePath:a,view:o}=r,s=null,u=null,l=i.getSetting("date-trigger"),c=new RegExp(`(?:^|\\s)${Ln(l)}$`),d=Object.keys(i.app.metadataCache.getTags()).sort(),f=new mn(d),p=i.app.metadataCache.getLinkSuggestions().filter(H=>!!H.file),g=new mn(p,{keys:["file.basename","alias"]}),y=o.app.vault.getConfig("autoPairBrackets"),b=[dy(d,f),Zu(a,i,y,!0),Zu(a,i,y,!1),Xu(a,i,y,!0),Xu(a,i,y,!1),Qu(o.getWindow(),p,g,a,i,y,!0),Qu(o.getWindow(),p,g,a,i,y,!1)];n||b.push(oy(i));let x=new Ds(e.current),T=new ad(x,b,{dropdown:{parent:ur(e.current),maxCount:96,className:`${B("autocomplete")} ${B("ignore-click-outside")}`,rotate:!0,item:{className:`${B("autocomplete-item")} ${B("ignore-click-outside")}`,activeClassName:`${B("autocomplete-item-active")} ${B("ignore-click-outside")}`}}}),C=()=>{T.isShown()||(t.current=!1);let H=s.win;u.destroy(),s.remove(),H.setTimeout(()=>{s=null})};T.on("show",()=>{t.current=!0}),T.on("hidden",()=>{t.current=!1});let A;if(!n){A=D=>{if(T.isShown&&["#","^"].contains(D.key)){let z=T.dropdown.getActiveItem(),U=z==null?void 0:z.searchResult;if(U&&U.strategy.props.id.startsWith("link")){D.preventDefault(),x.applySearchResult(U),Lt(e.current,D.key==="^"?"#^":"#");return}}if(!s)return;if(D.key==="Enter"){D.preventDefault();let z=u.selectedDates;return z.length?_s(z[0],e,i):_s(new Date,e,i),C()}if(D.key==="Escape")return D.preventDefault(),C();let K=(0,Sy.moment)(u.selectedDates[0]||new Date);if(D.key==="ArrowRight"){D.preventDefault(),K.weekday()===6?u.setDate(ly(K).toDate(),!1):u.setDate(K.add(1,"day").toDate(),!1);return}if(D.key==="ArrowLeft"){D.preventDefault(),K.weekday()===0?u.setDate(sy(K).toDate(),!1):u.setDate(K.subtract(1,"day").toDate(),!1);return}if(D.key==="ArrowUp"){D.preventDefault(),u.setDate(K.subtract(1,"week").toDate(),!1);return}if(D.key==="ArrowDown"){D.preventDefault(),u.setDate(K.add(1,"week").toDate(),!1);return}},e.current.addEventListener("keydown",A);let H=e.current.doc;x.on("change",D=>{let K=D.detail.beforeCursor;if(K&&c.test(K)){let z=x.getCursorOffset();s?(s.style.left=`${z.left||0}px`,s.style.top=`${z.top||0}px`,Gu(z,s)):s=H.body.createDiv({cls:`${B("date-picker")} ${B("ignore-click-outside")}`},U=>{U.style.left=`${z.left||0}px`,U.style.top=`${z.top||0}px`,ay({div:U,inputRef:e,stateManager:i,cb:Z=>{u=Z,t.current=!0,Gu(z,s)}})})}else s&&C()})}return()=>{!n&&e.current&&e.current.removeEventListener("keydown",A),s&&C(),T.destroy(),x.destroy()}}function _y({isInputVisible:e,onEnter:t,onEscape:r,onKeyDown:n,excludeDatePicker:i}){let a=P.useContext(We),o=P.useRef(!1),s=P.useRef(),{oncompositionstart:u,oncompositionend:l,getShouldIMEBlockAction:c}=yo();return P.useEffect(()=>{let d=s.current;if(e&&d)return d.focus(),d.selectionStart=d.selectionEnd=d.value.length,__({inputRef:s,isAutocompleteVisibleRef:o,obsidianContext:a,excludeDatePicker:i})},[e]),{ref:s,oncompositionstart:u,oncompositionend:l,onKeyDownCapture:d=>{c()||o.current||n(d)||(d.key==="Enter"?t&&t(d):d.key==="Escape"&&r&&r(d))}}}m();var Cy=/^[*_]{2}(.+)[*_]{2}$/;function C_(e){return e.replace(Cy,"$1")}var Dy=/^[*_]{1}(.+)[*_]{1}$/;function D_(e){return e.replace(Dy,"$1")}var Ty=/^`{1}(.+)`{1}$/;function T_(e){return e.replace(Ty,"$1")}var My=/^={2}(.+)={2}$/;function M_(e){return e.replace(My,"$1")}var Iy=/^~{2}(.+)~{2}$/;function I_(e){return e.replace(Iy,"$1")}var A_=/^(?:>.+?(?:[\r\n]|$))+$/;function L_(e){return e.split(` `).map(r=>r[0]===">"?r:`> ${r}`).join(` -`)}function C_(e){return e.split(` -`).map(r=>r[0]!==">"?r:r.replace(/^>+\s*/,"")).join(` -`)}var Ma=/^(?:\s*\d+[.)]\s+.*?(?:[\r\n]|$))+$/,ed=/^(?:\s*\d+[.)]\s+\[\s+\]\s+.*?(?:[\r\n]|$))+$/,td=/^(?:\s*\d+[.)]\s+\[[^\]\s]+\]\s+.*?(?:[\r\n]|$))+$/;function T_(e){return e.match(/^\s*/)[0].length}function D_(e){return parseInt(e.match(/^\s*(\d+)/)[1],10)}function M_(e){let t=[0],r=0;return e.split(` -`).map(n=>{let i=T_(n);if(i>r?t.push(0):iMa.test(t)?t.replace(/^(\s*)\d+[.)]\s+/,"$1"):t).join(` -`)}var Ia=/^(?:\s*[-*+]\s+.*?(?:[\r\n]|$))+$/,nd=/^(?:\s*[-*+]\s+\[\s+\]\s+.*?(?:[\r\n]|$))+$/,rd=/^(?:\s*[-*+]\s+\[[^\]\s]+\]\s+.*?(?:[\r\n]|$))+$/;function _y(e){return e.split(` -`).map(r=>Ia.test(r)?r:r.replace(/^(\s*)/,"$1- ")).join(` -`)}function A_(e){return e.split(` -`).map(t=>nd.test(t)||rd.test(t)?t:t.replace(/^(\s*[-*+]\s+)/,"$1[ ] ")).join(` -`)}function L_(e){return e.split(` -`).map(t=>ed.test(t)||td.test(t)?t:t.replace(/^(\s*\d+[.)]\s+)/,"$1[ ] ")).join(` `)}function P_(e){return e.split(` -`).map(t=>nd.test(t)?t:t.replace(/^(\s*[-*+]\s+)\[[^\]]\]/,"$1[ ]")).join(` -`)}function F_(e){return e.split(` -`).map(t=>ed.test(t)?t:t.replace(/^(\s*\d+[.)]\s+)\[[^\]]{1}\]/,"$1[ ]")).join(` -`)}function N_(e){return e.split(` -`).map(t=>rd.test(t)?t:t.replace(/^(\s*[-*+]\s+)\[\s\]/,"$1[x]")).join(` -`)}function O_(e){return e.split(` -`).map(t=>td.test(t)?t:t.replace(/^(\s*\d+[.)]\s+)\[\s\]/,"$1[x]")).join(` +`).map(r=>r[0]!==">"?r:r.replace(/^>+\s*/,"")).join(` +`)}var Aa=/^(?:\s*\d+[.)]\s+.*?(?:[\r\n]|$))+$/,od=/^(?:\s*\d+[.)]\s+\[\s+\]\s+.*?(?:[\r\n]|$))+$/,sd=/^(?:\s*\d+[.)]\s+\[[^\]\s]+\]\s+.*?(?:[\r\n]|$))+$/;function F_(e){return e.match(/^\s*/)[0].length}function N_(e){return parseInt(e.match(/^\s*(\d+)/)[1],10)}function O_(e){let t=[0],r=0;return e.split(` +`).map(n=>{let i=F_(n);if(i>r?t.push(0):iIa.test(r)?r.replace(/^(\s*)[-+*]\s+/,"$1"):r).join(` -`)}var Cy={"editor:toggle-bold":e=>{Mi(e,wy,b_,"**")},"editor:toggle-code":e=>{Mi(e,xy,E_,"`")},"editor:toggle-italics":e=>{Mi(e,Ey,w_,"*")},"editor:toggle-highlight":e=>{Mi(e,ky,x_,"==")},"editor:toggle-strikethrough":e=>{Mi(e,Sy,k_,"~~")},"editor:toggle-blockquote":e=>{ps(e,S_,__,C_)},"editor:toggle-bullet-list":e=>{ps(e,Ia,_y,R_)},"editor:toggle-numbered-list":e=>{ps(e,Ma,M_,I_)},"editor:toggle-checklist-status":e=>{let t=On(e),r=t.selection.end===t.selection.start,n=Di({text:t.text,selection:t.selection}),i=Lt(e,n),a=i.selectedText,o=Ia.test(a),s=Ma.test(a);!o&&!s?a=_y(a):o?nd.test(a)?a=N_(a):rd.test(a)?a=P_(a):a=A_(a):ed.test(a)?a=O_(a):td.test(a)?a=F_(a):a=L_(a);let u=At(e,a);if(r){let l=a.length-i.selectedText.length;Lt(e,{start:t.selection.start+l,end:t.selection.end+l})}else Lt(e,{start:i.selection.start,end:u.selection.end})}},id={"(":e=>cn(e,"(",")",!1),"[":e=>cn(e,"[","]",!1,!0),"{":e=>cn(e,"{","}",!1),"'":e=>cn(e,"'","'",!1),'"':e=>cn(e,'"','"',!1)},ad={"*":e=>cn(e,"*","*",!1),_:e=>cn(e,"_","_",!1),"`":e=>cn(e,"`","`",!1),"=":e=>cn(e,"=","=",!0),"~":e=>cn(e,"~","~",!0),$:e=>cn(e,"$","$",!0),"%":e=>cn(e,"%","%",!0)},H_={"(":")","[":"]","{":"}","'":"'",'"':'"',"*":"*",_:"_","`":"`","=":"=","~":"~",$:"$","%":"%"};function Ty(e,t){let r=On(e);if(r.selection.end!==r.selection.start||r.selection.end===r.text.length)return!1;let n=r.text[r.selection.end-1],i=r.text[r.selection.end];if(t[n]&&i===H_[n])return Lt(e,{start:r.selection.end,end:r.selection.end+1}),At(e,""),!0}function Dy(e){return Ty(e,id)}function My(e){return Ty(e,ad)}function B_(e,t,r){let n=t?" ":" ".repeat(r);return e.split(` +`).map(t=>Aa.test(t)?t.replace(/^(\s*)\d+[.)]\s+/,"$1"):t).join(` +`)}var La=/^(?:\s*[-*+]\s+.*?(?:[\r\n]|$))+$/,ld=/^(?:\s*[-*+]\s+\[\s+\]\s+.*?(?:[\r\n]|$))+$/,cd=/^(?:\s*[-*+]\s+\[[^\]\s]+\]\s+.*?(?:[\r\n]|$))+$/;function Ay(e){return e.split(` +`).map(r=>La.test(r)?r:r.replace(/^(\s*)/,"$1- ")).join(` +`)}function H_(e){return e.split(` +`).map(t=>ld.test(t)||cd.test(t)?t:t.replace(/^(\s*[-*+]\s+)/,"$1[ ] ")).join(` +`)}function B_(e){return e.split(` +`).map(t=>od.test(t)||sd.test(t)?t:t.replace(/^(\s*\d+[.)]\s+)/,"$1[ ] ")).join(` +`)}function K_(e){return e.split(` +`).map(t=>ld.test(t)?t:t.replace(/^(\s*[-*+]\s+)\[[^\]]\]/,"$1[ ]")).join(` +`)}function $_(e){return e.split(` +`).map(t=>od.test(t)?t:t.replace(/^(\s*\d+[.)]\s+)\[[^\]]{1}\]/,"$1[ ]")).join(` +`)}function U_(e){return e.split(` +`).map(t=>cd.test(t)?t:t.replace(/^(\s*[-*+]\s+)\[\s\]/,"$1[x]")).join(` +`)}function V_(e){return e.split(` +`).map(t=>sd.test(t)?t:t.replace(/^(\s*\d+[.)]\s+)\[\s\]/,"$1[x]")).join(` +`)}function W_(e){return e.split(` +`).map(r=>La.test(r)?r.replace(/^(\s*)[-+*]\s+/,"$1"):r).join(` +`)}var Ly={"editor:toggle-bold":e=>{Ai(e,Cy,C_,"**")},"editor:toggle-code":e=>{Ai(e,Ty,T_,"`")},"editor:toggle-italics":e=>{Ai(e,Dy,D_,"*")},"editor:toggle-highlight":e=>{Ai(e,My,M_,"==")},"editor:toggle-strikethrough":e=>{Ai(e,Iy,I_,"~~")},"editor:toggle-blockquote":e=>{ys(e,A_,L_,P_)},"editor:toggle-bullet-list":e=>{ys(e,La,Ay,W_)},"editor:toggle-numbered-list":e=>{ys(e,Aa,O_,R_)},"editor:toggle-checklist-status":e=>{let t=On(e),r=t.selection.end===t.selection.start,n=Ii({text:t.text,selection:t.selection}),i=Pt(e,n),a=i.selectedText,o=La.test(a),s=Aa.test(a);!o&&!s?a=Ay(a):o?ld.test(a)?a=U_(a):cd.test(a)?a=K_(a):a=H_(a):od.test(a)?a=V_(a):sd.test(a)?a=$_(a):a=B_(a);let u=Lt(e,a);if(r){let l=a.length-i.selectedText.length;Pt(e,{start:t.selection.start+l,end:t.selection.end+l})}else Pt(e,{start:i.selection.start,end:u.selection.end})}},ud={"(":e=>cn(e,"(",")",!1),"[":e=>cn(e,"[","]",!1,!0),"{":e=>cn(e,"{","}",!1),"'":e=>cn(e,"'","'",!1),'"':e=>cn(e,'"','"',!1)},dd={"*":e=>cn(e,"*","*",!1),_:e=>cn(e,"_","_",!1),"`":e=>cn(e,"`","`",!1),"=":e=>cn(e,"=","=",!0),"~":e=>cn(e,"~","~",!0),$:e=>cn(e,"$","$",!0),"%":e=>cn(e,"%","%",!0)},z_={"(":")","[":"]","{":"}","'":"'",'"':'"',"*":"*",_:"_","`":"`","=":"=","~":"~",$:"$","%":"%"};function Py(e,t){let r=On(e);if(r.selection.end!==r.selection.start||r.selection.end===r.text.length)return!1;let n=r.text[r.selection.end-1],i=r.text[r.selection.end];if(t[n]&&i===z_[n])return Pt(e,{start:r.selection.end,end:r.selection.end+1}),Lt(e,""),!0}function Fy(e){return Py(e,ud)}function Ny(e){return Py(e,dd)}function j_(e,t,r){let n=t?" ":" ".repeat(r);return e.split(` `).map(i=>n+i).join(` -`)}function K_(e,t,r){let n=t?"\\t":" ".repeat(r),i=new RegExp(`^${n}`);return e.split(` +`)}function q_(e,t,r){let n=t?"\\t":" ".repeat(r),i=new RegExp(`^${n}`);return e.split(` `).map(a=>i.test(a)?a.replace(i,""):a).join(` -`)}function Iy(e,t,r,n){let i=On(e);if(t){let l=Di(i),c=Lt(e,l);if(At(e,K_(c.selectedText,r,n)),i.selection.start===i.selection.end){let d=r?1:n;Lt(e,{start:i.selection.start-d,end:i.selection.end-d})}return!0}let a=Di(i),o=Lt(e,a),u=B_(o.selectedText,r,n).replace(/^(\s*)(\d+)([.)]\s)/,(l,c,d,f)=>`${c}1${f}`);return At(e,u),!0}function Ay(e){let t=On(e);if(t.selection.start!==t.selection.end)return!1;let r=Di(t),n=e.value.slice(r.start,t.selection.end),i=e.value.slice(r.start,r.end);if(/^(\s*[-*+]\s+(?:\[[^\]]\]\s*)?)$/.test(i))return Lt(e,{start:r.start-1,end:r.end}),At(e,` -`),!0;if(/^(\s*\d[.)]\s+(?:\[[^\]]\]\s*)?)$/.test(i))return Lt(e,{start:r.start-1,end:r.end}),At(e,` -`),!0;if(Ia.test(n)){let a=n.match(/^(\s*[-*+]\s+(?:\[[^\]]\]\s*)?)/)[1];return _a(e,` -${a.replace(/^(\s*[-*+]\s+)\[[^\]]\]/,"$1[ ]")}`),!0}if(Ma.test(n)){let s=n.match(/^(\s*\d+[.)]\s+(?:\[[^\]]\]\s*)?)/)[1].replace(/^(\s*\d+[.)]\s+)\[[^\]]\]/,"$1[ ]").replace(/^(\s*)(\d+)/,(u,l,c)=>`${l}${parseInt(c)+1}`);return _a(e,` -${s}`),!0}return!1}function Xn(e,t){return od.Platform.isMobile?e.key==="Enter"&&!0:t.getSetting("new-line-trigger")==="enter"?e.key==="Enter"&&!(e.shiftKey||e.metaKey||e.ctrlKey):e.key==="Enter"&&e.shiftKey}var Er=F.forwardRef(function({onEnter:t,onEscape:r,onSubmit:n,...i},a){let{view:o,stateManager:s}=F.useContext(Ve),u=app.vault.getConfig("autoPairMarkdown"),l=app.vault.getConfig("autoPairBrackets"),c=app.vault.getConfig("useTab"),d=app.vault.getConfig("tabSize"),f=!!app.vault.getConfig("useMarkdownLinks"),p=by({isInputVisible:!0,onEnter:t,onEscape:r,onKeyDown:m=>{if(m.key==="Backspace"){let y=Dy(m.target);return y||My(m.target)}if(Xn(m,s)){let y=Ay(m.target);if(y)return m.preventDefault(),y}if(m.key==="Tab")return m.preventDefault(),Iy(m.target,m.shiftKey,c,d);if(u){let y=ad[m.key];if(y&&y(m.target))return m.preventDefault(),!0}if(l){if(f&&m.key==="[")return!1;let y=id[m.key];if(y&&y(m.target))return m.preventDefault(),!0}return!1}});return F.useEffect(()=>{let m=y=>{let b=Cy[y];b&&b(p.ref.current)};return o.emitter.on("hotkey",m),()=>{o.emitter.off("hotkey",m)}},[o]),g(S,null,g("div",{"data-replicated-value":i.value,className:$("grow-wrap")},g("textarea",{"data-ignore-drag":!0,rows:1,className:$("item-input"),...i,...p,ref:m=>{p.ref.current=m,a&&typeof a=="function"?a(m):a&&(a.current=m)}})),od.Platform.isMobile&&g("button",{onPointerDown:n,className:$("item-submit-button")},B("Submit")))});h();var cd=ge(Ly());h();var xr=ge(require("obsidian"));var $_=["bmp","png","jpg","jpeg","gif","svg"],U_=["mp3","wav","m4a","3gp","flac","ogg","oga"],W_=["mp4","webm","ogv"],V_=/\u00A0/g,z_=/[!"#$%&()*+,.:;<=>?@^`{|}~/[\]\\]/g;function Py(e){return e.replace(z_," ").replace(/\s+/g," ").trim()}function Ur(e){let r=e.replace(V_," ").normalize("NFC").split(/\|(.*)/),n=r[0].split(/#(.*)/);return{root:n[0],subpath:n[1]?"#"+n[1]:"",alias:r[1]||""}}function j_(e,t){if(!e||!t)return null;let r=t.split("#").filter(l=>!!l);if(!r||r.length===0)return null;if(r.length===1){let l=r[0];if(l.startsWith("^")){let c=l.slice(1).toLowerCase(),d=e.blocks;if(d&&d[c]){let f=d[c];return{type:"block",block:f,start:f.position.start.offset,end:f.position.end.offset,startLine:f.position.start.line,endLine:f.position.end.line}}else return null}}let n=e.headings;if(!n||n.length===0)return null;let i=0,a=0,o=0,s=null,u=null;for(;ao&&Py(l.heading).toLowerCase()===Py(r[i]).toLowerCase()&&(i++,o=l.level,i===r.length&&(s=l))}return s?{type:"heading",current:s,next:u,start:s.position.start.offset,end:u?u.position.start.offset:null,startLine:s.position.start.line,endLine:u?u.position.end.line:null}:null}function q_(e){e.querySelectorAll(".task-list-item-checkbox").forEach((r,n)=>{r.dataset.checkboxIndex=n.toString()})}function Y_(e,t){e.querySelectorAll(".internal-link").forEach(n=>{let i=Ur(n.getAttr("href"));t.app.metadataCache.getFirstLinkpathDest(i.root,t.file.path)||n.addClass("is-unresolved")})}function J_(e,t,r){e.empty(),e.createEl("img",{attr:{src:r.app.vault.getResourcePath(t)}},n=>{e.hasAttribute("width")&&n.setAttribute("width",e.getAttribute("width")),e.hasAttribute("height")&&n.setAttribute("height",e.getAttribute("height")),e.hasAttribute("alt")&&n.setAttribute("alt",e.getAttribute("alt"))}),e.addClasses(["image-embed","is-loaded"])}function Fy(e,t,r){e.empty(),e.createEl("audio",{attr:{controls:"",src:r.app.vault.getResourcePath(t)}}),e.addClasses(["media-embed","is-loaded"])}function G_(e,t,r){e.empty(),e.createEl("video",{attr:{controls:"",src:r.app.vault.getResourcePath(t)}},n=>{let i=()=>{n.removeEventListener("loadedmetadata",i),n.videoWidth===0&&n.videoHeight===0&&(e.empty(),Fy(e,t,r))};n.addEventListener("loadedmetadata",i)}),e.addClasses(["media-embed","is-loaded"])}async function Ny(e,t,r){let n=r.app.metadataCache.getFileCache(e);if(!n)return null;let i=await r.app.vault.cachedRead(e);if(!t.subpath)return{markdown:i,boundary:null};let a=j_(n,t.subpath);if(a)return{markdown:i.substring(a.start,a.end===null?void 0:a.end),boundary:a};if(t.subpath)return{markdown:`${B("Unable to find")} ${t.root}${t.subpath}`,boundary:null}}function Oy(e,t,r,n){r.getWindow().setTimeout(async()=>{if(!r.plugin.windowRegistry.has(r.getWindow()))return;if(r.plugin.windowRegistry.get(r.getWindow()).viewMap.has(r.id)){let{markdown:a}=await Ny(e,t,r);if(!a)return;a.startsWith(B("Unable to find"))?n>0&&Oy(e,t,r,--n):r.plugin.stateManagers.forEach(o=>{o.onFileMetadataChange()})}},2e3)}async function Q_(e,t,r,n,i){var u;let{markdown:a,boundary:o}=await Ny(t,r,n);if(!a)return;e.empty();let s=e.createDiv();if(s.addClasses(["markdown-preview-view",$("markdown-preview-view")]),s.createDiv($("embed-link-wrapper"),l=>{l.createEl("a",{href:e.getAttr("src")||t.basename,cls:`internal-link ${$("embed-link")}`},c=>{(0,xr.setIcon)(c,"link"),c.setAttr("aria-label",t.basename)})}),await xr.MarkdownRenderer.renderMarkdown(a,s.createDiv(),t.path,n),e.addClass("is-loaded"),a.startsWith(B("Unable to find"))&&r.subpath&&r.subpath!=="#")Oy(t,r,n,4);else{let l=e.findAll(".task-list-item-checkbox");(l==null?void 0:l.length)&&((u=app.metadataCache.getFileCache(t).listItems)==null||u.filter(d=>o?d.position.start.line>=o.startLine&&d.position.end.line<=o.endLine:!0).forEach((d,f)=>{l[f]&&(l[f].dataset.oStart=d.position.start.offset.toString(),l[f].dataset.oEnd=d.position.end.offset.toString(),l[f].dataset.src=t.path)}))}i>0&&await Ry(s,n,--i)}function X_(e,t){e.addClass("is-loaded"),e.empty(),e.createEl("a",{cls:"file-link",href:e.getAttribute("src"),text:t.name},r=>{r.setAttribute("aria-label",B("Open in default app")),r.createSpan({},n=>(0,xr.setIcon)(n,"open-elsewhere-glyph"))})}function Ry(e,t,r){return Promise.all(e.findAll(".internal-embed").map(async n=>{let i=n.getAttribute("src"),a=Ur(i),o=typeof i=="string"&&t.app.metadataCache.getFirstLinkpathDest(a.root,t.file.path);if(o instanceof xr.TFile)return $_.contains(o.extension)?J_(n,o,t):U_.contains(o.extension)?Fy(n,o,t):W_.contains(o.extension)?G_(n,o,t):o.extension==="md"?await Q_(n,o,a,t,r):X_(n,o)}))}async function Aa(e,t){let r=e.getWindow().document.body.createDiv();r.detach();try{await xr.MarkdownRenderer.renderMarkdown(t,r,e.file.path,e),q_(r),Y_(r,e),await Ry(r,e,5)}catch(n){console.error(n)}return r}function ud(e,t){!t||!e||(e&&!e.firstChild?e.appendChild(t):e.firstChild&&e.firstChild!==t&&e.replaceChild(t,e.firstChild))}var La=F.memo(function({className:t,markdownString:r,searchQuery:n,...i}){let{stateManager:a}=F.useContext(Ve),o=F.useRef(),s=F.useRef(),u=F.useRef();return F.useEffect(()=>{Aa(a.getAView(),r).then(l=>{s.current=l,u.current=new cd.default(l),o.current&&ud(o.current,l)}).catch(l=>{a.setError(l),console.error(l)})},[a,r]),F.useEffect(()=>{var l,c;(l=u.current)==null||l.unmark(),n&&n.trim()&&((c=u.current)==null||c.mark(n))},[n]),g("div",{ref:l=>{o.current=l,ud(l,s.current)},className:mt(["markdown-preview-view",$("markdown-preview-view"),t]),...i})}),Hy=F.memo(function({dom:t,className:r,searchQuery:n,...i}){let{stateManager:a}=F.useContext(Ve),o=F.useMemo(()=>t.cloneNode(!0),[t,a]),s=F.useMemo(()=>new cd.default(o),[o]);return F.useEffect(()=>{s.unmark(),n&&n.trim()&&s.mark(n)},[s,n]),g("div",{ref:u=>{ud(u,o)},className:mt(["markdown-preview-view",$("markdown-preview-view"),r]),...i})});h();var Pa=ge(require("obsidian"));function Z_(e,t){if(t)return t.from((0,Pa.moment)());let r=(0,Pa.moment)().startOf("day");if(r.isSame(e,"day"))return B("today");let n=e.diff(r,"day");return n===-1?B("yesterday"):n===1?B("tomorrow"):e.from(r)}function By({item:e,stateManager:t}){if(!t.useSetting("show-relative-date")||!e.data.metadata.date)return null;let n=Z_(e.data.metadata.date,e.data.metadata.time);return g("span",{className:$("item-metadata-date-relative")},n)}function Ky({item:e,stateManager:t,filePath:r,onEditDate:n,onEditTime:i}){let a=t.useSetting("hide-date-display"),o=t.useSetting("date-format"),s=t.useSetting("time-format"),u=t.useSetting("date-display-format"),l=t.useSetting("link-date-to-daily-note");if(a||!e.data.metadata.date)return null;let c=e.data.metadata.date.format(o);if(!c)return null;let d=!!e.data.metadata.time,f=e.data.metadata.date.format(u),p=d?e.data.metadata.time.format(s):null,m=c?(0,Pa.getLinkpath)(c):null,y=c?t.app.metadataCache.getFirstLinkpathDest(m,r):null,b=m&&l?g("a",{href:m,"data-href":m,className:`internal-link ${y?"":"is-unresolved"}`,target:"blank",rel:"noopener"},f):f,x={};return l||(x["aria-label"]=B("Change date"),x.onClick=n),g("span",{"aria-label":"hello",className:$("item-metadata-date-wrapper")},g("span",{...x,className:`${$("item-metadata-date")} ${l?"":"is-button"}`},b)," ",d&&g("span",{onClick:i,className:`${$("item-metadata-time")} is-button`,"aria-label":B("Change time")},p))}function eC(e){let{stateManager:t,boardModifiers:r}=F.useContext(Ve),n=Vn();return F.useMemo(()=>({onEditDate:o=>{var s;ns(o.view,t,{x:o.clientX,y:o.clientY},rs({stateManager:t,boardModifiers:r,item:e,hasDate:!0,path:n}),(s=e.data.metadata.date)==null?void 0:s.toDate())},onEditTime:o=>{is(o.view,t,{x:o.clientX,y:o.clientY},as({stateManager:t,boardModifiers:r,item:e,hasTime:!0,path:n}),e.data.metadata.time)}}),[r,n,e,t])}function tC(e){return(e.useSetting("tag-colors")||[]).reduce((r,n)=>(n.tagKey&&(r[n.tagKey]=n),r),{})}function nC(e,t){let r=0;return e.replace(/^(\s*[-+*]\s+?\[)([^\]])(\]\s+)/gm,(n,i,a,o)=>{let s=n;return r===t&&(a===" "?s=`${i}x${o}`:s=`${i} ${o}`),r++,s})}async function rC(e){let t=app.vault.getAbstractFileByPath(e.dataset.src);if(!(t instanceof $y.TFile))return;let r=await app.vault.cachedRead(t),n=parseInt(e.dataset.oStart),i=parseInt(e.dataset.oEnd),o=r.substring(n,i).replace(/^(.+?)\[(.)\](.+)$/,(s,u,l,c)=>l!==" "?(e.parentElement.removeClass("is-checked"),e.parentElement.dataset.task="",`${u}[ ]${c}`):(e.parentElement.addClass("is-checked"),e.parentElement.dataset.task="x",`${u}[x]${c}`));await app.vault.modify(t,`${r.substring(0,n)}${o}${r.substring(i)}`)}var Uy=F.memo(function({item:t,isEditing:r,setIsEditing:n,searchQuery:i}){var A;let[a,o]=F.useState(t.data.titleRaw),{stateManager:s,filePath:u,boardModifiers:l,view:c}=F.useContext(Ve),d=s.useSetting("hide-tags-display"),f=tC(s),p=Vn(),{onEditDate:m,onEditTime:y}=eC(t);F.useEffect(()=>{r&&o(t.data.titleRaw)},[r]);let b=F.useCallback(N=>{if(!Xn(N,s))return N.preventDefault(),s.updateItemContent(t,a).then(T=>{l.updateItem(p,T)}).catch(T=>{s.setError(T),console.error(T)}),n(!1),!0},[s,a,t,p]),x=F.useCallback(()=>{s.updateItemContent(t,a).then(N=>{l.updateItem(p,N)}).catch(N=>{s.setError(N),console.error(N)}),n(!1)},[s,a,t,p]),D=F.useCallback(()=>(n(!1),o(t.data.titleRaw),!0),[t]),C=F.useCallback(N=>{let T=N.target;if(T.hasClass("task-list-item-checkbox")){if(T.dataset.src)return rC(T);let O=parseInt(T.dataset.checkboxIndex,10);s.updateItemContent(t,nC(t.data.titleRaw,O)).then(W=>{l.updateItem(p,W)}).catch(W=>{s.setError(W),console.error(W)})}},[p,l,s,t]);return r?g("div",{className:$("item-input-wrapper")},g(Er,{className:$("item-input"),onChange:N=>o(N.target.value),onEnter:b,onEscape:D,onSubmit:x,value:a,onPaste:N=>{ms(N,s,c.getWindow())}})):g("div",{className:$("item-title")},g(Hy,{className:$("item-markdown"),dom:t.data.dom,searchQuery:i,onPointerDown:C}),g("div",{className:$("item-metadata")},g(By,{item:t,stateManager:s}),g(Ky,{item:t,stateManager:s,filePath:u,onEditDate:m,onEditTime:y}),!d&&!!((A=t.data.metadata.tags)==null?void 0:A.length)&&g("div",{className:$("item-tags")},t.data.metadata.tags.map((N,T)=>g("a",{href:N,key:T,className:`tag ${$("item-tag")} ${N.toLocaleLowerCase().contains(i)?"is-search-match":""}`,style:!!f[N]&&{"--tag-color":f[N].color,"--tag-background-color":f[N].backgroundColor}},g("span",null,N[0]),N.slice(1))))))});h();var ks=ge(require("obsidian"));var iC=/[\\/:"*?<>|]+/g,aC=/!?\[\[([^\]]*)\.[^\]]+\]\]/g,oC=/!?\[\[([^\]]*)\]\]/g,sC=/!?\[([^\]]*)\]\([^)]*\)/g;function Wy({setIsEditing:e,item:t,path:r,boardModifiers:n,stateManager:i}){return F.useCallback((a,o)=>{if(o)app.workspace.onLinkContextMenu(a,(0,ks.getLinkpath)(o),i.file.path);else{let s={x:a.clientX,y:a.clientY},u=!!t.data.metadata.date,l=!!t.data.metadata.time,c=new ks.Menu().addItem(d=>{d.setIcon("pencil").setTitle(B("Edit card")).onClick(()=>e(!0))});c.addItem(d=>{d.setIcon("create-new").setTitle(B("New note from card")).onClick(async()=>{let f=t.data.title.split(` -`)[0].trim(),p=f.replace(aC,"$1").replace(oC,"$1").replace(sC,"$1").replace(iC," ").trim(),m=i.getSetting("new-note-folder"),y=i.getSetting("new-note-template"),b=m?i.app.vault.getAbstractFileByPath(m):i.app.fileManager.getNewFileParent(i.file.path),x=await i.app.fileManager.createNewMarkdownFile(b,p),D=i.app.workspace.splitActiveLeaf();await D.openFile(x),i.app.workspace.setActiveLeaf(D,!1,!0),await _p(i,y);let C=t.data.titleRaw.replace(f,i.app.fileManager.generateMarkdownLink(x,i.file.path));i.updateItemContent(t,C).then(A=>{n.updateItem(r,A)}).catch(A=>{i.setError(A),console.error(A)})})}).addItem(d=>{d.setIcon("links-coming-in").setTitle(B("Copy link to card")).onClick(()=>{if(t.data.blockId)navigator.clipboard.writeText(`${this.app.fileManager.generateMarkdownLink(i.file,"","#^"+t.data.blockId)}`);else{let f=Re(6);navigator.clipboard.writeText(`${this.app.fileManager.generateMarkdownLink(i.file,"","#^"+f)}`),i.updateItemContent(t,`${t.data.titleRaw} ^${f}`).then(p=>{n.updateItem(r,p)}).catch(p=>{i.setError(p),console.error(p)})}})}).addSeparator(),/\n/.test(t.data.titleRaw)&&c.addItem(d=>{d.setIcon("split").setTitle(B("Split card")).onClick(async()=>{let f=t.data.titleRaw.split(/[\r\n]+/g).map(m=>m.trim()),p=await Promise.all(f.map(m=>i.getNewItem(m)));n.splitItem(r,p)})}),c.addItem(d=>{d.setIcon("documents").setTitle(B("Duplicate card")).onClick(()=>n.duplicateEntity(r))}).addItem(d=>{d.setIcon("plus-with-circle").setTitle(B("Insert card before")).onClick(async()=>n.insertItems(r,[await i.getNewItem("",!1,!0)]))}).addItem(d=>{d.setIcon("plus-with-circle").setTitle(B("Insert card after")).onClick(async()=>{let f=[...r];f[f.length-1]=f[f.length-1]+1,n.insertItems(f,[await i.getNewItem("",!1,!0)])})}).addItem(d=>{d.setIcon("sheets-in-box").setTitle(B("Archive card")).onClick(()=>n.archiveItem(r))}).addItem(d=>{d.setIcon("trash").setTitle(B("Delete card")).onClick(()=>n.deleteEntity(r))}).addSeparator().addItem(d=>{d.setIcon("calendar-with-checkmark").setTitle(u?B("Edit date"):B("Add date")).onClick(()=>{var f;ns(a.view,i,s,rs({stateManager:i,boardModifiers:n,item:t,hasDate:u,path:r}),(f=t.data.metadata.date)==null?void 0:f.toDate())})}),u&&(c.addItem(d=>{d.setIcon("cross").setTitle(B("Remove date")).onClick(()=>{let f=i.getSetting("link-date-to-daily-note"),p=i.getSetting("date-trigger"),m=f?"(?:\\[[^\\]]+\\]\\([^\\)]+\\)|\\[\\[[^\\]]+\\]\\])":"{[^}]+}",y=new RegExp(`(^|\\s)${Ln(p)}${m}`),b=t.data.titleRaw.replace(y,"").trim();i.updateItemContent(t,b).then(x=>{n.updateItem(r,x)}).catch(x=>{i.setError(x),console.error(x)})})}),c.addItem(d=>{d.setIcon("clock").setTitle(l?B("Edit time"):B("Add time")).onClick(()=>{is(a.view,i,s,as({stateManager:i,boardModifiers:n,item:t,hasTime:l,path:r}),t.data.metadata.time)})}),l&&c.addItem(d=>{d.setIcon("cross").setTitle(B("Remove time")).onClick(()=>{let f=i.getSetting("time-trigger"),p=new RegExp(`(^|\\s)${Ln(f)}{([^}]+)}`),m=t.data.titleRaw.replace(p,"").trim();i.updateItemContent(t,m).then(y=>{n.updateItem(r,y)}).catch(y=>{i.setError(y),console.error(y)})})})),c.showAtPosition(s)}},[e,t,r,n,i])}h();var Vy=F.memo(function({isEditing:t,setIsEditing:r,showMenu:n}){let i=F.useMemo(()=>t?{"data-ignore-drag":!0}:{},[t]);return g("div",{...i,className:$("item-postfix-button-wrapper")},t?g("button",{"data-ignore-drag":!0,onPointerDown:a=>{a.preventDefault()},onClick:()=>{r(!1)},className:`${$("item-postfix-button")} is-enabled`,"aria-label":B("Cancel")},g(Kt,{name:"cross"})):g("button",{"data-ignore-drag":!0,onPointerDown:a=>a.preventDefault(),onClick:n,className:$("item-postfix-button"),"aria-label":B("More options")},g(Kt,{name:"vertical-three-dots"})))});h();var Ss=ge(require("obsidian"));function zy({item:e,isSettingsVisible:t,searchQuery:r}){return t||!e.data.metadata.fileMetadata?null:g("div",{className:$("item-metadata-wrapper")},g(cC,{metadata:e.data.metadata.fileMetadata,order:e.data.metadata.fileMetadataOrder,searchQuery:r}))}function jy(e,t){if(e.ts){let r=t.getSetting("date-display-format");return(0,Ss.moment)(e.ts).format(r)}return null}function qy(e,t){if(!e.path)return null;let r=app.vault.getAbstractFileByPath(e.path);if(r&&r instanceof Ss.TFile){let n=app.fileManager.generateMarkdownLink(r,t.file.path,e.subpath,e.display);return`${e.embed&&n[0]!=="!"?"!":""}${n}`}return`${e.embed?"!":""}[[${e.path}${e.display?`|${e.display}`:""}]]`}function lC({data:e,searchQuery:t}){let{view:r,stateManager:n}=F.useContext(Ve);if(Array.isArray(e.value))return g("span",{className:$("meta-value")},e.value.map((s,u,l)=>{let c=`${s}`,d=typeof s=="object"&&!Array.isArray(s)&&(jy(s,n)||qy(s,r)),f=c.toLocaleLowerCase().contains(t);return g(S,null,d||e.containsMarkdown?g(La,{className:"inline",markdownString:d||c,searchQuery:t}):f?g("span",{className:"is-search-match"},c):c,u{let a=t[i];return g("tr",{key:i,className:$("meta-row")},!a.shouldHideLabel&&g("td",{className:`${$("meta-key")} ${(a.label||i).toLocaleLowerCase().contains(n)?"is-search-match":""}`,"data-key":i},g("span",null,a.label||i)),g("td",{colSpan:a.shouldHideLabel?2:1,className:$("meta-value-wrapper"),"data-value":Array.isArray(a.value)?a.value.join(", "):`${a.value}`},i==="tags"?a.value.map((o,s)=>g("a",{href:o,key:s,className:`tag ${$("item-tag")} ${o.toLocaleLowerCase().contains(n)?"is-search-match":""}`},g("span",null,o[0]),o.slice(1))):g(lC,{data:a,searchQuery:n})))})))});var Yy=F.memo(function({item:t,shouldMarkItemsComplete:r,isMatch:n,searchQuery:i}){let{stateManager:a,boardModifiers:o}=F.useContext(Ve),[s,u]=F.useState(!1),l=F.useContext(kt);F.useEffect(()=>{let y=()=>{s&&u(!1)};return l.dragManager.emitter.on("dragStart",y),()=>{l.dragManager.emitter.off("dragStart",y)}},[l,s]),F.useEffect(()=>{t.data.forceEditMode&&u(!0)},[t.data.forceEditMode]);let c=Vn(),d=Wy({boardModifiers:o,item:t,setIsEditing:u,stateManager:a,path:c}),f=F.useCallback(y=>{if(y.target instanceof y.view.HTMLTextAreaElement)return;y.preventDefault(),y.stopPropagation();let b=y.target instanceof y.view.HTMLAnchorElement&&y.target.hasClass("internal-link")?y.target.dataset.href:void 0;d(y,b)},[d]),p=F.useCallback(()=>{u(!0)},[u]),m=F.useMemo(()=>s?{"data-ignore-drag":!0}:{},[s]);return g("div",{onContextMenu:f,onDblClick:p,className:$("item-content-wrapper"),...m},g("div",{className:$("item-title-wrapper"),...m},g(sv,{boardModifiers:o,item:t,path:c,shouldMarkItemsComplete:r,stateManager:a}),g(Uy,{isEditing:s,item:t,searchQuery:n?i:void 0,setIsEditing:u}),g(Vy,{isEditing:s,setIsEditing:u,showMenu:d})),g(zy,{searchQuery:n?i:void 0,isSettingsVisible:s,item:t}))}),dd=F.memo(function(t){let r=F.useRef(null),n=F.useRef(null),i=F.useContext(po),{itemIndex:a,...o}=t;Ti(n,n);let s=i?o.item.data.titleSearch.contains(i):!1,u=Xg(o.item);return i&&(s?u.push("is-search-hit"):u.push("is-search-miss")),g("div",{ref:n,className:$("item-wrapper")},g("div",{ref:r,className:mt([$("item"),...u])},t.isStatic?g(Yy,{...o,isMatch:s,searchQuery:i}):g(hr,{elementRef:r,measureRef:n,id:t.item.id,index:a,data:t.item},g(Yy,{...o,isMatch:s,searchQuery:i}))))}),Jy=F.memo(function({isStatic:t,items:r,shouldMarkItemsComplete:n}){return g(S,null,r.map((i,a)=>g(dd,{key:i.id,item:i,itemIndex:a,shouldMarkItemsComplete:n,isStatic:t})))});h();h();var uC=function(e,t,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function s(c){try{l(n.next(c))}catch(d){o(d)}}function u(c){try{l(n.throw(c))}catch(d){o(d)}}function l(c){c.done?a(c.value):i(c.value).then(s,u)}l((n=n.apply(e,t||[])).next())})};function _s(e){let t=0,r=0,n=e;do t+=n.offsetTop||0,r+=n.offsetLeft||0,n=n.offsetParent;while(n);return{top:t,left:r}}var Gy=class{constructor(t){this.element=t}getHorizontalScroll(){return this.element.scrollLeft}getVerticalScroll(){return this.element.scrollTop}getMaxHorizontalScroll(){return this.element.scrollWidth-this.element.clientWidth}getMaxVerticalScroll(){return this.element.scrollHeight-this.element.clientHeight}getHorizontalElementScrollOffset(t,r){return _s(t).left-_s(r).left}getVerticalElementScrollOffset(t,r){return _s(t).top-_s(r).top}scrollTo(t,r){this.element.scrollLeft=t,this.element.scrollTop=r}},Qy=class{constructor(){this.element=window}getHorizontalScroll(){return window.scrollX||document.documentElement.scrollLeft}getVerticalScroll(){return window.scrollY||document.documentElement.scrollTop}getMaxHorizontalScroll(){return Math.max(document.body.scrollWidth,document.documentElement.scrollWidth,document.body.offsetWidth,document.documentElement.offsetWidth,document.body.clientWidth,document.documentElement.clientWidth)-window.innerWidth}getMaxVerticalScroll(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)-window.innerHeight}getHorizontalElementScrollOffset(t){return(window.scrollX||document.documentElement.scrollLeft)+t.getBoundingClientRect().left}getVerticalElementScrollOffset(t){return(window.scrollY||document.documentElement.scrollTop)+t.getBoundingClientRect().top}scrollTo(t,r){window.scrollTo(t,r)}},Zn={elements:[],cancelMethods:[],add:(e,t)=>{Zn.elements.push(e),Zn.cancelMethods.push(t)},remove:(e,t)=>{let r=Zn.elements.indexOf(e);r>-1&&(t&&Zn.cancelMethods[r](),Zn.elements.splice(r,1),Zn.cancelMethods.splice(r,1))}},Xy=typeof window!="undefined",dC={cancelOnUserAction:!0,easing:e=>--e*e*e+1,elementToScroll:Xy?window:null,horizontalOffset:0,maxDuration:3e3,minDuration:250,speed:500,verticalOffset:0};function fC(e,t={}){return uC(this,void 0,void 0,function*(){if(Xy){if(!window.Promise)throw"Browser doesn't support Promises, and animated-scroll-to depends on it, please provide a polyfill."}else return new Promise(A=>{A(!1)});let r,n,i,a=Object.assign(Object.assign({},dC),t),o=a.elementToScroll===window,s=!!a.elementToScroll.nodeName;if(!o&&!s)throw"Element to scroll needs to be either window or DOM element.";let u=o?document.documentElement:a.elementToScroll;getComputedStyle(u).getPropertyValue("scroll-behavior")==="smooth"&&console.warn(`${u.tagName} has "scroll-behavior: smooth" which can mess up with animated-scroll-to's animations`);let c=o?new Qy:new Gy(a.elementToScroll);if(e instanceof Element){if(i=e,s&&(!a.elementToScroll.contains(i)||a.elementToScroll.isSameNode(i)))throw"options.elementToScroll has to be a parent of scrollToElement";r=c.getHorizontalElementScrollOffset(i,a.elementToScroll),n=c.getVerticalElementScrollOffset(i,a.elementToScroll)}else if(typeof e=="number")r=c.getHorizontalScroll(),n=e;else if(Array.isArray(e)&&e.length===2)r=e[0]===null?c.getHorizontalScroll():e[0],n=e[1]===null?c.getVerticalScroll():e[1];else throw`Wrong function signature. Check documentation. +`)}function Oy(e,t,r,n){let i=On(e);if(t){let l=Ii(i),c=Pt(e,l);if(Lt(e,q_(c.selectedText,r,n)),i.selection.start===i.selection.end){let d=r?1:n;Pt(e,{start:i.selection.start-d,end:i.selection.end-d})}return!0}let a=Ii(i),o=Pt(e,a),u=j_(o.selectedText,r,n).replace(/^(\s*)(\d+)([.)]\s)/,(l,c,d,f)=>`${c}1${f}`);return Lt(e,u),!0}function Ry(e){let t=On(e);if(t.selection.start!==t.selection.end)return!1;let r=Ii(t),n=e.value.slice(r.start,t.selection.end),i=e.value.slice(r.start,r.end);if(/^(\s*[-*+]\s+(?:\[[^\]]\]\s*)?)$/.test(i))return Pt(e,{start:r.start-1,end:r.end}),Lt(e,` +`),!0;if(/^(\s*\d[.)]\s+(?:\[[^\]]\]\s*)?)$/.test(i))return Pt(e,{start:r.start-1,end:r.end}),Lt(e,` +`),!0;if(La.test(n)){let a=n.match(/^(\s*[-*+]\s+(?:\[[^\]]\]\s*)?)/)[1];return Da(e,` +${a.replace(/^(\s*[-*+]\s+)\[[^\]]\]/,"$1[ ]")}`),!0}if(Aa.test(n)){let s=n.match(/^(\s*\d+[.)]\s+(?:\[[^\]]\]\s*)?)/)[1].replace(/^(\s*\d+[.)]\s+)\[[^\]]\]/,"$1[ ]").replace(/^(\s*)(\d+)/,(u,l,c)=>`${l}${parseInt(c)+1}`);return Da(e,` +${s}`),!0}return!1}function Xn(e,t){return fd.Platform.isMobile?e.key==="Enter"&&!0:t.getSetting("new-line-trigger")==="enter"?e.key==="Enter"&&!(e.shiftKey||e.metaKey||e.ctrlKey):e.key==="Enter"&&e.shiftKey}var xr=P.forwardRef(function({onEnter:t,onEscape:r,onSubmit:n,...i},a){let{view:o,stateManager:s}=P.useContext(We),u=app.vault.getConfig("autoPairMarkdown"),l=app.vault.getConfig("autoPairBrackets"),c=app.vault.getConfig("useTab"),d=app.vault.getConfig("tabSize"),f=!!app.vault.getConfig("useMarkdownLinks"),p=_y({isInputVisible:!0,onEnter:t,onEscape:r,onKeyDown:g=>{if(g.key==="Backspace"){let y=Fy(g.target);return y||Ny(g.target)}if(Xn(g,s)){let y=Ry(g.target);if(y)return g.preventDefault(),y}if(g.key==="Tab")return g.preventDefault(),Oy(g.target,g.shiftKey,c,d);if(u){let y=dd[g.key];if(y&&y(g.target))return g.preventDefault(),!0}if(l){if(f&&g.key==="[")return!1;let y=ud[g.key];if(y&&y(g.target))return g.preventDefault(),!0}return!1}});return P.useEffect(()=>{let g=y=>{let b=Ly[y];b&&b(p.ref.current)};return o.emitter.on("hotkey",g),()=>{o.emitter.off("hotkey",g)}},[o]),h(S,null,h("div",{"data-replicated-value":i.value,className:B("grow-wrap")},h("textarea",{"data-ignore-drag":!0,rows:1,className:B("item-input"),...i,...p,ref:g=>{p.ref.current=g,a&&typeof a=="function"?a(g):a&&(a.current=g)}})),fd.Platform.isMobile&&h("button",{onPointerDown:n,className:B("item-submit-button")},L("Submit")))});m();var md=me(Hy());m();var Sr=me(require("obsidian"));var Y_=["bmp","png","jpg","jpeg","gif","svg"],J_=["mp3","wav","m4a","3gp","flac","ogg","oga"],G_=["mp4","webm","ogv"],Q_=/\u00A0/g,X_=/[!"#$%&()*+,.:;<=>?@^`{|}~/[\]\\]/g;function By(e){return e.replace(X_," ").replace(/\s+/g," ").trim()}function zr(e){let r=e.replace(Q_," ").normalize("NFC").split(/\|(.*)/),n=r[0].split(/#(.*)/);return{root:n[0],subpath:n[1]?"#"+n[1]:"",alias:r[1]||""}}function Z_(e,t){if(!e||!t)return null;let r=t.split("#").filter(l=>!!l);if(!r||r.length===0)return null;if(r.length===1){let l=r[0];if(l.startsWith("^")){let c=l.slice(1).toLowerCase(),d=e.blocks;if(d&&d[c]){let f=d[c];return{type:"block",block:f,start:f.position.start.offset,end:f.position.end.offset,startLine:f.position.start.line,endLine:f.position.end.line}}else return null}}let n=e.headings;if(!n||n.length===0)return null;let i=0,a=0,o=0,s=null,u=null;for(;ao&&By(l.heading).toLowerCase()===By(r[i]).toLowerCase()&&(i++,o=l.level,i===r.length&&(s=l))}return s?{type:"heading",current:s,next:u,start:s.position.start.offset,end:u?u.position.start.offset:null,startLine:s.position.start.line,endLine:u?u.position.end.line:null}:null}function eC(e){e.querySelectorAll(".task-list-item-checkbox").forEach((r,n)=>{r.dataset.checkboxIndex=n.toString()})}function tC(e,t){e.querySelectorAll(".internal-link").forEach(n=>{let i=zr(n.getAttr("href"));t.app.metadataCache.getFirstLinkpathDest(i.root,t.file.path)||n.addClass("is-unresolved")})}function nC(e,t,r){e.empty(),e.createEl("img",{attr:{src:r.app.vault.getResourcePath(t)}},n=>{e.hasAttribute("width")&&n.setAttribute("width",e.getAttribute("width")),e.hasAttribute("height")&&n.setAttribute("height",e.getAttribute("height")),e.hasAttribute("alt")&&n.setAttribute("alt",e.getAttribute("alt"))}),e.addClasses(["image-embed","is-loaded"])}function Ky(e,t,r){e.empty(),e.createEl("audio",{attr:{controls:"",src:r.app.vault.getResourcePath(t)}}),e.addClasses(["media-embed","is-loaded"])}function rC(e,t,r){e.empty(),e.createEl("video",{attr:{controls:"",src:r.app.vault.getResourcePath(t)}},n=>{let i=()=>{n.removeEventListener("loadedmetadata",i),n.videoWidth===0&&n.videoHeight===0&&(e.empty(),Ky(e,t,r))};n.addEventListener("loadedmetadata",i)}),e.addClasses(["media-embed","is-loaded"])}async function $y(e,t,r){let n=r.app.metadataCache.getFileCache(e);if(!n)return null;let i=await r.app.vault.cachedRead(e);if(!t.subpath)return{markdown:i,boundary:null};let a=Z_(n,t.subpath);if(a)return{markdown:i.substring(a.start,a.end===null?void 0:a.end),boundary:a};if(t.subpath)return{markdown:`${L("Unable to find")} ${t.root}${t.subpath}`,boundary:null}}function Uy(e,t,r,n){r.getWindow().setTimeout(async()=>{if(!r.plugin.windowRegistry.has(r.getWindow()))return;if(r.plugin.windowRegistry.get(r.getWindow()).viewMap.has(r.id)){let{markdown:a}=await $y(e,t,r);if(!a)return;a.startsWith(L("Unable to find"))?n>0&&Uy(e,t,r,--n):r.plugin.stateManagers.forEach(o=>{o.onFileMetadataChange()})}},2e3)}async function iC(e,t,r,n,i){var u;let{markdown:a,boundary:o}=await $y(t,r,n);if(!a)return;e.empty();let s=e.createDiv();if(s.addClasses(["markdown-preview-view",B("markdown-preview-view")]),s.createDiv(B("embed-link-wrapper"),l=>{l.createEl("a",{href:e.getAttr("src")||t.basename,cls:`internal-link ${B("embed-link")}`},c=>{(0,Sr.setIcon)(c,"link"),c.setAttr("aria-label",t.basename)})}),await Sr.MarkdownRenderer.renderMarkdown(a,s.createDiv(),t.path,n),e.addClass("is-loaded"),a.startsWith(L("Unable to find"))&&r.subpath&&r.subpath!=="#")Uy(t,r,n,4);else{let l=e.findAll(".task-list-item-checkbox");(l==null?void 0:l.length)&&((u=app.metadataCache.getFileCache(t).listItems)==null||u.filter(d=>o?d.position.start.line>=o.startLine&&d.position.end.line<=o.endLine:!0).forEach((d,f)=>{l[f]&&(l[f].dataset.oStart=d.position.start.offset.toString(),l[f].dataset.oEnd=d.position.end.offset.toString(),l[f].dataset.src=t.path)}))}i>0&&await Vy(s,n,--i)}function aC(e,t){e.addClass("is-loaded"),e.empty(),e.createEl("a",{cls:"file-link",href:e.getAttribute("src"),text:t.name},r=>{r.setAttribute("aria-label",L("Open in default app")),r.createSpan({},n=>(0,Sr.setIcon)(n,"lucide-arrow-up-right"))})}function Vy(e,t,r){return Promise.all(e.findAll(".internal-embed").map(async n=>{let i=n.getAttribute("src"),a=zr(i),o=typeof i=="string"&&t.app.metadataCache.getFirstLinkpathDest(a.root,t.file.path);if(o instanceof Sr.TFile)return Y_.contains(o.extension)?nC(n,o,t):J_.contains(o.extension)?Ky(n,o,t):G_.contains(o.extension)?rC(n,o,t):o.extension==="md"?await iC(n,o,a,t,r):aC(n,o)}))}async function Pa(e,t){let r=e.getWindow().document.body.createDiv();r.detach();try{await Sr.MarkdownRenderer.renderMarkdown(t,r,e.file.path,e),eC(r),tC(r,e),await Vy(r,e,5)}catch(n){console.error(n)}return r}function gd(e,t){!t||!e||(e&&!e.firstChild?e.appendChild(t):e.firstChild&&e.firstChild!==t&&e.replaceChild(t,e.firstChild))}var Fa=P.memo(function({className:t,markdownString:r,searchQuery:n,...i}){let{stateManager:a}=P.useContext(We),o=P.useRef(),s=P.useRef(),u=P.useRef();return P.useEffect(()=>{Pa(a.getAView(),r).then(l=>{s.current=l,u.current=new md.default(l),o.current&&gd(o.current,l)}).catch(l=>{a.setError(l),console.error(l)})},[a,r]),P.useEffect(()=>{var l,c;(l=u.current)==null||l.unmark(),n&&n.trim()&&((c=u.current)==null||c.mark(n))},[n]),h("div",{ref:l=>{o.current=l,gd(l,s.current)},className:et(["markdown-preview-view",B("markdown-preview-view"),t]),...i})}),Wy=P.memo(function({dom:t,className:r,searchQuery:n,...i}){let{stateManager:a}=P.useContext(We),o=P.useMemo(()=>t?t.cloneNode(!0):createDiv(),[t,a]),s=P.useMemo(()=>new md.default(o),[o]);return P.useEffect(()=>{s.unmark(),n&&n.trim()&&s.mark(n)},[s,n]),h("div",{ref:u=>{gd(u,o)},className:et(["markdown-preview-view",B("markdown-preview-view"),r]),...i})});m();var Na=me(require("obsidian"));function oC(e,t){if(t)return t.from((0,Na.moment)());let r=(0,Na.moment)().startOf("day");if(r.isSame(e,"day"))return L("today");let n=e.diff(r,"day");return n===-1?L("yesterday"):n===1?L("tomorrow"):e.from(r)}function zy({item:e,stateManager:t}){if(!t.useSetting("show-relative-date")||!e.data.metadata.date)return null;let n=oC(e.data.metadata.date,e.data.metadata.time);return h("span",{className:B("item-metadata-date-relative")},n)}function jy({item:e,stateManager:t,filePath:r,onEditDate:n,onEditTime:i,getDateColor:a}){let o=t.useSetting("hide-date-display"),s=t.useSetting("date-format"),u=t.useSetting("time-format"),l=t.useSetting("date-display-format"),c=t.useSetting("link-date-to-daily-note"),d=P.useMemo(()=>e.data.metadata.date?a(e.data.metadata.date):null,[e.data.metadata.date,a]);if(o||!e.data.metadata.date)return null;let f=e.data.metadata.date.format(s);if(!f)return null;let p=!!e.data.metadata.time,g=e.data.metadata.date.format(l),y=p?e.data.metadata.time.format(u):null,b=f?(0,Na.getLinkpath)(f):null,x=f?t.app.metadataCache.getFirstLinkpathDest(b,r):null,T=b&&c?h("a",{href:b,"data-href":b,className:`internal-link ${x?"":"is-unresolved"}`,target:"blank",rel:"noopener"},g):g,C={};return c||(C["aria-label"]=L("Change date"),C.onClick=n),h("span",{style:d&&{"--date-color":d.color,"--date-background-color":d.backgroundColor},className:et([B("item-metadata-date-wrapper"),{"has-background":!!(d==null?void 0:d.backgroundColor)}])},h("span",{...C,className:`${B("item-metadata-date")} ${c?"":"is-button"}`},T)," ",p&&h("span",{onClick:i,className:`${B("item-metadata-time")} is-button`,"aria-label":L("Change time")},y))}function sC(e){let{stateManager:t,boardModifiers:r}=P.useContext(We),n=Wn();return P.useMemo(()=>({onEditDate:o=>{var s;os(o.view,t,{x:o.clientX,y:o.clientY},ss({stateManager:t,boardModifiers:r,item:e,hasDate:!0,path:n}),(s=e.data.metadata.date)==null?void 0:s.toDate())},onEditTime:o=>{ls(o.view,t,{x:o.clientX,y:o.clientY},cs({stateManager:t,boardModifiers:r,item:e,hasTime:!0,path:n}),e.data.metadata.time)}}),[r,n,e,t])}function lC(e,t){let r=0;return e.replace(/^(\s*[-+*]\s+?\[)([^\]])(\]\s+)/gm,(n,i,a,o)=>{let s=n;return r===t&&(a===" "?s=`${i}x${o}`:s=`${i} ${o}`),r++,s})}async function cC(e){let t=app.vault.getAbstractFileByPath(e.dataset.src);if(!(t instanceof qy.TFile))return;let r=await app.vault.cachedRead(t),n=parseInt(e.dataset.oStart),i=parseInt(e.dataset.oEnd),o=r.substring(n,i).replace(/^(.+?)\[(.)\](.+)$/,(s,u,l,c)=>l!==" "?(e.parentElement.removeClass("is-checked"),e.parentElement.dataset.task="",`${u}[ ]${c}`):(e.parentElement.addClass("is-checked"),e.parentElement.dataset.task="x",`${u}[x]${c}`));await app.vault.modify(t,`${r.substring(0,n)}${o}${r.substring(i)}`)}var Yy=P.memo(function({item:t,isEditing:r,setIsEditing:n,searchQuery:i}){var H;let[a,o]=P.useState(t.data.titleRaw),{stateManager:s,filePath:u,boardModifiers:l,view:c,getTagColor:d,getDateColor:f}=P.useContext(We),p=s.useSetting("hide-tags-display"),g=Wn(),{onEditDate:y,onEditTime:b}=sC(t);P.useEffect(()=>{r&&o(t.data.titleRaw)},[r]);let x=P.useCallback(D=>{if(!Xn(D,s))return D.preventDefault(),s.updateItemContent(t,a).then(K=>{l.updateItem(g,K)}).catch(K=>{s.setError(K),console.error(K)}),n(!1),!0},[s,a,t,g]),T=P.useCallback(()=>{s.updateItemContent(t,a).then(D=>{l.updateItem(g,D)}).catch(D=>{s.setError(D),console.error(D)}),n(!1)},[s,a,t,g]),C=P.useCallback(()=>(n(!1),o(t.data.titleRaw),!0),[t]),A=P.useCallback(D=>{let K=D.target;if(K.hasClass("task-list-item-checkbox")){if(K.dataset.src)return cC(K);let z=parseInt(K.dataset.checkboxIndex,10);s.updateItemContent(t,lC(t.data.titleRaw,z)).then(U=>{l.updateItem(g,U)}).catch(U=>{s.setError(U),console.error(U)})}},[g,l,s,t]);return r?h("div",{className:B("item-input-wrapper")},h(xr,{className:B("item-input"),onChange:D=>o(D.target.value),onEnter:x,onEscape:C,onSubmit:T,value:a,onPaste:D=>{ws(D,s,c.getWindow())}})):h("div",{className:B("item-title")},h(Wy,{className:B("item-markdown"),dom:t.data.dom,searchQuery:i,onPointerDown:A}),h("div",{className:B("item-metadata")},h(zy,{item:t,stateManager:s}),h(jy,{item:t,stateManager:s,filePath:u,onEditDate:y,onEditTime:b,getDateColor:f}),!p&&!!((H=t.data.metadata.tags)==null?void 0:H.length)&&h("div",{className:B("item-tags")},t.data.metadata.tags.map((D,K)=>{let z=d(D);return h("a",{href:D,key:K,className:`tag ${B("item-tag")} ${D.toLocaleLowerCase().contains(i)?"is-search-match":""}`,style:z&&{"--tag-color":z.color,"--tag-background-color":z.backgroundColor}},h("span",null,D[0]),D.slice(1))}))))});m();var Ts=me(require("obsidian"));var uC=/[\\/:"*?<>|]+/g,dC=/!?\[\[([^\]]*)\.[^\]]+\]\]/g,fC=/!?\[\[([^\]]*)\]\]/g,pC=/!?\[([^\]]*)\]\([^)]*\)/g;function Jy({setIsEditing:e,item:t,path:r,boardModifiers:n,stateManager:i}){return P.useCallback((a,o)=>{if(o)app.workspace.onLinkContextMenu(a,(0,Ts.getLinkpath)(o),i.file.path);else{let s={x:a.clientX,y:a.clientY},u=!!t.data.metadata.date,l=!!t.data.metadata.time,c=new Ts.Menu().addItem(d=>{d.setIcon("lucide-edit").setTitle(L("Edit card")).onClick(()=>e(!0))});c.addItem(d=>{d.setIcon("lucide-file-plus-2").setTitle(L("New note from card")).onClick(async()=>{let f=t.data.title.split(` +`)[0].trim(),p=f.replace(dC,"$1").replace(fC,"$1").replace(pC,"$1").replace(uC," ").trim(),g=i.getSetting("new-note-folder"),y=i.getSetting("new-note-template"),b=g?i.app.vault.getAbstractFileByPath(g):i.app.fileManager.getNewFileParent(i.file.path),x=await i.app.fileManager.createNewMarkdownFile(b,p),T=i.app.workspace.splitActiveLeaf();await T.openFile(x),i.app.workspace.setActiveLeaf(T,!1,!0),await Ap(i,y);let C=t.data.titleRaw.replace(f,i.app.fileManager.generateMarkdownLink(x,i.file.path));i.updateItemContent(t,C).then(A=>{n.updateItem(r,A)}).catch(A=>{i.setError(A),console.error(A)})})}).addItem(d=>{d.setIcon("lucide-link").setTitle(L("Copy link to card")).onClick(()=>{if(t.data.blockId)navigator.clipboard.writeText(`${this.app.fileManager.generateMarkdownLink(i.file,"","#^"+t.data.blockId)}`);else{let f=Ae(6);navigator.clipboard.writeText(`${this.app.fileManager.generateMarkdownLink(i.file,"","#^"+f)}`),i.updateItemContent(t,`${t.data.titleRaw} ^${f}`).then(p=>{n.updateItem(r,p)}).catch(p=>{i.setError(p),console.error(p)})}})}).addSeparator(),/\n/.test(t.data.titleRaw)&&c.addItem(d=>{d.setIcon("lucide-wrap-text").setTitle(L("Split card")).onClick(async()=>{let f=t.data.titleRaw.split(/[\r\n]+/g).map(g=>g.trim()),p=await Promise.all(f.map(g=>i.getNewItem(g)));n.splitItem(r,p)})}),c.addItem(d=>{d.setIcon("lucide-copy").setTitle(L("Duplicate card")).onClick(()=>n.duplicateEntity(r))}).addItem(d=>{d.setIcon("lucide-list-start").setTitle(L("Insert card before")).onClick(async()=>n.insertItems(r,[await i.getNewItem("",!1,!0)]))}).addItem(d=>{d.setIcon("lucide-list-end").setTitle(L("Insert card after")).onClick(async()=>{let f=[...r];f[f.length-1]=f[f.length-1]+1,n.insertItems(f,[await i.getNewItem("",!1,!0)])})}).addItem(d=>{d.setIcon("lucide-arrow-up").setTitle(L("Move to top")).onClick(()=>n.moveItemToTop(r))}).addItem(d=>{d.setIcon("lucide-arrow-down").setTitle(L("Move to bottom")).onClick(()=>n.moveItemToBottom(r))}).addItem(d=>{d.setIcon("lucide-archive").setTitle(L("Archive card")).onClick(()=>n.archiveItem(r))}).addItem(d=>{d.setIcon("lucide-trash-2").setTitle(L("Delete card")).onClick(()=>n.deleteEntity(r))}).addSeparator().addItem(d=>{d.setIcon("lucide-calendar-check").setTitle(u?L("Edit date"):L("Add date")).onClick(()=>{var f;os(a.view,i,s,ss({stateManager:i,boardModifiers:n,item:t,hasDate:u,path:r}),(f=t.data.metadata.date)==null?void 0:f.toDate())})}),u&&(c.addItem(d=>{d.setIcon("lucide-x").setTitle(L("Remove date")).onClick(()=>{let f=i.getSetting("link-date-to-daily-note"),p=i.getSetting("date-trigger"),g=f?"(?:\\[[^\\]]+\\]\\([^\\)]+\\)|\\[\\[[^\\]]+\\]\\])":"{[^}]+}",y=new RegExp(`(^|\\s)${Ln(p)}${g}`),b=t.data.titleRaw.replace(y,"").trim();i.updateItemContent(t,b).then(x=>{n.updateItem(r,x)}).catch(x=>{i.setError(x),console.error(x)})})}),c.addItem(d=>{d.setIcon("lucide-clock").setTitle(l?L("Edit time"):L("Add time")).onClick(()=>{ls(a.view,i,s,cs({stateManager:i,boardModifiers:n,item:t,hasTime:l,path:r}),t.data.metadata.time)})}),l&&c.addItem(d=>{d.setIcon("lucide-x").setTitle(L("Remove time")).onClick(()=>{let f=i.getSetting("time-trigger"),p=new RegExp(`(^|\\s)${Ln(f)}{([^}]+)}`),g=t.data.titleRaw.replace(p,"").trim();i.updateItemContent(t,g).then(y=>{n.updateItem(r,y)}).catch(y=>{i.setError(y),console.error(y)})})})),c.showAtPosition(s)}},[e,t,r,n,i])}m();var Gy=P.memo(function({isEditing:t,setIsEditing:r,showMenu:n}){let i=P.useMemo(()=>t?{"data-ignore-drag":!0}:{},[t]);return h("div",{...i,className:B("item-postfix-button-wrapper")},t?h("a",{"data-ignore-drag":!0,onPointerDown:a=>{a.preventDefault()},onClick:()=>{r(!1)},className:`${B("item-postfix-button")} is-enabled clickable-icon`,"aria-label":L("Cancel")},h(_t,{name:"lucide-x"})):h("a",{"data-ignore-drag":!0,onPointerDown:a=>a.preventDefault(),onClick:n,className:`${B("item-postfix-button")} clickable-icon`,"aria-label":L("More options")},h(_t,{name:"lucide-more-vertical"})))});m();var Ms=me(require("obsidian"));function Qy({item:e,isSettingsVisible:t,searchQuery:r}){return t||!e.data.metadata.fileMetadata?null:h("div",{className:B("item-metadata-wrapper")},h(mC,{metadata:e.data.metadata.fileMetadata,order:e.data.metadata.fileMetadataOrder,searchQuery:r}))}function Xy(e,t){if(e.ts){let r=t.getSetting("date-display-format");return(0,Ms.moment)(e.ts).format(r)}return null}function Zy(e,t){if(!e.path)return null;let r=app.vault.getAbstractFileByPath(e.path);if(r&&r instanceof Ms.TFile){let n=app.fileManager.generateMarkdownLink(r,t.file.path,e.subpath,e.display);return`${e.embed&&n[0]!=="!"?"!":""}${n}`}return`${e.embed?"!":""}[[${e.path}${e.display?`|${e.display}`:""}]]`}function hC({data:e,searchQuery:t}){let{view:r,stateManager:n}=P.useContext(We);if(Array.isArray(e.value))return h("span",{className:B("meta-value")},e.value.map((s,u,l)=>{let c=`${s}`,d=typeof s=="object"&&!Array.isArray(s)&&(Xy(s,n)||Zy(s,r)),f=c.toLocaleLowerCase().contains(t);return h(S,null,d||e.containsMarkdown?h(Fa,{className:"inline",markdownString:d||c,searchQuery:t}):f?h("span",{className:"is-search-match"},c):c,u{let a=t[i];return h("tr",{key:i,className:B("meta-row")},!a.shouldHideLabel&&h("td",{className:`${B("meta-key")} ${(a.label||i).toLocaleLowerCase().contains(n)?"is-search-match":""}`,"data-key":i},h("span",null,a.label||i)),h("td",{colSpan:a.shouldHideLabel?2:1,className:B("meta-value-wrapper"),"data-value":Array.isArray(a.value)?a.value.join(", "):`${a.value}`},i==="tags"?a.value.map((o,s)=>h("a",{href:o,key:s,className:`tag ${B("item-tag")} ${o.toLocaleLowerCase().contains(n)?"is-search-match":""}`},h("span",null,o[0]),o.slice(1))):h(hC,{data:a,searchQuery:n})))})))});var eb=P.memo(function({item:t,shouldMarkItemsComplete:r,isMatch:n,searchQuery:i}){let{stateManager:a,boardModifiers:o}=P.useContext(We),[s,u]=P.useState(!1),l=P.useContext(xt);P.useEffect(()=>{let y=()=>{s&&u(!1)};return l.dragManager.emitter.on("dragStart",y),()=>{l.dragManager.emitter.off("dragStart",y)}},[l,s]),P.useEffect(()=>{t.data.forceEditMode&&u(!0)},[t.data.forceEditMode]);let c=Wn(),d=Jy({boardModifiers:o,item:t,setIsEditing:u,stateManager:a,path:c}),f=P.useCallback(y=>{if(y.target instanceof y.view.HTMLTextAreaElement)return;y.preventDefault(),y.stopPropagation();let b=y.target instanceof y.view.HTMLAnchorElement&&y.target.hasClass("internal-link")?y.target.dataset.href:void 0;d(y,b)},[d]),p=P.useCallback(()=>{u(!0)},[u]),g=P.useMemo(()=>s?{"data-ignore-drag":!0}:{},[s]);return h("div",{onContextMenu:f,onDblClick:p,className:B("item-content-wrapper"),...g},h("div",{className:B("item-title-wrapper"),...g},h(pv,{boardModifiers:o,item:t,path:c,shouldMarkItemsComplete:r,stateManager:a}),h(Yy,{isEditing:s,item:t,searchQuery:n?i:void 0,setIsEditing:u}),h(Gy,{isEditing:s,setIsEditing:u,showMenu:d})),h(Qy,{searchQuery:n?i:void 0,isSettingsVisible:s,item:t}))}),vd=P.memo(function(t){let r=P.useRef(null),n=P.useRef(null),i=P.useContext(go),{itemIndex:a,...o}=t;Mi(n,n);let s=i?o.item.data.titleSearch.contains(i):!1,u=iv(o.item);return i&&(s?u.push("is-search-hit"):u.push("is-search-miss")),h("div",{ref:n,className:B("item-wrapper")},h("div",{ref:r,className:et([B("item"),...u])},t.isStatic?h(eb,{...o,isMatch:s,searchQuery:i}):h(gr,{elementRef:r,measureRef:n,id:t.item.id,index:a,data:t.item},h(eb,{...o,isMatch:s,searchQuery:i}))))}),tb=P.memo(function({isStatic:t,items:r,shouldMarkItemsComplete:n}){return h(S,null,r.map((i,a)=>h(vd,{key:i.id,item:i,itemIndex:a,shouldMarkItemsComplete:n,isStatic:t})))});m();m();var gC=function(e,t,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function s(c){try{l(n.next(c))}catch(d){o(d)}}function u(c){try{l(n.throw(c))}catch(d){o(d)}}function l(c){c.done?a(c.value):i(c.value).then(s,u)}l((n=n.apply(e,t||[])).next())})};function Is(e){let t=0,r=0,n=e;do t+=n.offsetTop||0,r+=n.offsetLeft||0,n=n.offsetParent;while(n);return{top:t,left:r}}var nb=class{constructor(t){this.element=t}getHorizontalScroll(){return this.element.scrollLeft}getVerticalScroll(){return this.element.scrollTop}getMaxHorizontalScroll(){return this.element.scrollWidth-this.element.clientWidth}getMaxVerticalScroll(){return this.element.scrollHeight-this.element.clientHeight}getHorizontalElementScrollOffset(t,r){return Is(t).left-Is(r).left}getVerticalElementScrollOffset(t,r){return Is(t).top-Is(r).top}scrollTo(t,r){this.element.scrollLeft=t,this.element.scrollTop=r}},rb=class{constructor(){this.element=window}getHorizontalScroll(){return window.scrollX||document.documentElement.scrollLeft}getVerticalScroll(){return window.scrollY||document.documentElement.scrollTop}getMaxHorizontalScroll(){return Math.max(document.body.scrollWidth,document.documentElement.scrollWidth,document.body.offsetWidth,document.documentElement.offsetWidth,document.body.clientWidth,document.documentElement.clientWidth)-window.innerWidth}getMaxVerticalScroll(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)-window.innerHeight}getHorizontalElementScrollOffset(t){return(window.scrollX||document.documentElement.scrollLeft)+t.getBoundingClientRect().left}getVerticalElementScrollOffset(t){return(window.scrollY||document.documentElement.scrollTop)+t.getBoundingClientRect().top}scrollTo(t,r){window.scrollTo(t,r)}},Zn={elements:[],cancelMethods:[],add:(e,t)=>{Zn.elements.push(e),Zn.cancelMethods.push(t)},remove:(e,t)=>{let r=Zn.elements.indexOf(e);r>-1&&(t&&Zn.cancelMethods[r](),Zn.elements.splice(r,1),Zn.cancelMethods.splice(r,1))}},ib=typeof window!="undefined",vC={cancelOnUserAction:!0,easing:e=>--e*e*e+1,elementToScroll:ib?window:null,horizontalOffset:0,maxDuration:3e3,minDuration:250,speed:500,verticalOffset:0};function yC(e,t={}){return gC(this,void 0,void 0,function*(){if(ib){if(!window.Promise)throw"Browser doesn't support Promises, and animated-scroll-to depends on it, please provide a polyfill."}else return new Promise(A=>{A(!1)});let r,n,i,a=Object.assign(Object.assign({},vC),t),o=a.elementToScroll===window,s=!!a.elementToScroll.nodeName;if(!o&&!s)throw"Element to scroll needs to be either window or DOM element.";let u=o?document.documentElement:a.elementToScroll;getComputedStyle(u).getPropertyValue("scroll-behavior")==="smooth"&&console.warn(`${u.tagName} has "scroll-behavior: smooth" which can mess up with animated-scroll-to's animations`);let c=o?new rb:new nb(a.elementToScroll);if(e instanceof Element){if(i=e,s&&(!a.elementToScroll.contains(i)||a.elementToScroll.isSameNode(i)))throw"options.elementToScroll has to be a parent of scrollToElement";r=c.getHorizontalElementScrollOffset(i,a.elementToScroll),n=c.getVerticalElementScrollOffset(i,a.elementToScroll)}else if(typeof e=="number")r=c.getHorizontalScroll(),n=e;else if(Array.isArray(e)&&e.length===2)r=e[0]===null?c.getHorizontalScroll():e[0],n=e[1]===null?c.getVerticalScroll():e[1];else throw`Wrong function signature. Check documentation. Available method signatures are: animateScrollTo(y:number, options) animateScrollTo([x:number | null, y:number | null], options) - animateScrollTo(scrollToElement:Element, options)`;r+=a.horizontalOffset,n+=a.verticalOffset;let d=c.getMaxHorizontalScroll(),f=c.getHorizontalScroll();r>d&&(r=d);let p=r-f,m=c.getMaxVerticalScroll(),y=c.getVerticalScroll();n>m&&(n=m);let b=n-y,x=Math.abs(Math.round(p/1e3*a.speed)),D=Math.abs(Math.round(b/1e3*a.speed)),C=x>D?x:D;return Ca.maxDuration&&(C=a.maxDuration),new Promise((A,N)=>{p===0&&b===0&&A(!0),Zn.remove(c.element,!0);let T,O=()=>{le(),cancelAnimationFrame(T),A(!1)};Zn.add(c.element,O);let W=re=>re.preventDefault(),z=a.cancelOnUserAction?O:W,ee=a.cancelOnUserAction?{passive:!0}:{passive:!1},Z=["wheel","touchstart","keydown","mousedown"],le=()=>{Z.forEach(re=>{c.element.removeEventListener(re,z,ee)})};Z.forEach(re=>{c.element.addEventListener(re,z,ee)});let X=Date.now(),G=()=>{var re=Date.now()-X,pe=re/C;let he=Math.round(f+p*a.easing(pe)),ve=Math.round(y+b*a.easing(pe));re{this.activeScroll.size===0&&(this.scrollState=Kl(this.scrollEl),this.handleEntityRegistration())};this.onDragEnd=()=>{this.activeScroll.clear()};this.handleBeginDragScroll=({scrollEntitySide:t,scrollStrength:r})=>{this.isDoneScrolling(t)||(this.activeScroll.set(t,r),this.handleDragScroll())};this.handleUpdateDragScroll=({scrollEntitySide:t,scrollStrength:r})=>{this.isDoneScrolling(t)||this.activeScroll.set(t,r)};this.handleEndDragScroll=({scrollEntitySide:t})=>{this.activeScroll.delete(t)};this.dndManager=t,this.instanceId=Re(),this.scopeId=r,this.triggerTypes=n,this.scrollState=on,this.parent=i,this.activeScroll=new Map,this.pollForNodes(a)}pollForNodes(t){!t()||this.parent&&!this.parent.observerHandlers?this.dndManager.win.requestAnimationFrame(()=>this.pollForNodes(t)):this.initNodes(t())}initNodes(t){this.scrollEl=t,this.scrollEl.dataset.hitboxid=this.instanceId,this.scrollEl.dataset.scrollid=this.instanceId,this.top=this.createScrollEntity("top"),this.right=this.createScrollEntity("right"),this.bottom=this.createScrollEntity("bottom"),this.left=this.createScrollEntity("left"),this.bindScrollHandlers(),this.observerHandlers=new Map,this.observer=new IntersectionObserver(r=>{r.forEach(n=>{var a;let i=(a=n.target.dataset)==null?void 0:a.hitboxid;if(i&&this.observerHandlers.has(i)){let o=this.observerHandlers.get(i);o&&o(n)}})},{root:t,threshold:.1}),this.scrollEl.addEventListener("scroll",this.onScroll,{passive:!0,capture:!1}),this.dndManager.emitter.on("scrollResize",this.onScroll),this.scrollEl.win.setTimeout(()=>{this.onScroll()}),this.dndManager.observeResize(this.scrollEl),this.parent?this.parent.registerObserverHandler(this.instanceId,this.scrollEl,r=>{r.isIntersecting?this.handleEntityRegistration():this.handleEntityUnregistration()}):this.handleEntityRegistration()}destroy(){var t;this.handleEntityUnregistration(),this.observer.disconnect(),this.unbindScrollHandlers(),this.scrollEl.removeEventListener("scroll",this.onScroll),this.dndManager.emitter.off("scrollResize",this.onScroll),(t=this.parent)==null||t.unregisterObserverHandler(this.instanceId,this.scrollEl),this.dndManager.unobserveResize(this.scrollEl)}handleEntityRegistration(){Ds.forEach(t=>{let r=Ze(this.scrollEl),n=this.getId(t),i=this.dndManager.scrollEntities.has(n),a=this.isDoneScrolling(t);!a&&!i?this.dndManager.registerScrollEntity(n,this[t],r):a&&i&&this.dndManager.unregisterScrollEntity(n,r)})}handleEntityUnregistration(){Ds.forEach(t=>{let r=Ze(this.scrollEl),n=this.getId(t);this.dndManager.unregisterScrollEntity(n,r)})}registerObserverHandler(t,r,n){this.observerHandlers.set(t,n),this.observer.observe(r)}unregisterObserverHandler(t,r){this.observerHandlers.delete(t),this.observer.unobserve(r)}bindScrollHandlers(){Ds.forEach(t=>{let r=this.getId(t);this.dndManager.dragManager.emitter.on("beginDragScroll",this.handleBeginDragScroll,r),this.dndManager.dragManager.emitter.on("updateDragScroll",this.handleUpdateDragScroll,r),this.dndManager.dragManager.emitter.on("endDragScroll",this.handleEndDragScroll,r),this.dndManager.dragManager.emitter.on("dragEnd",this.onDragEnd)})}unbindScrollHandlers(){Ds.forEach(t=>{let r=this.getId(t);this.dndManager.dragManager.emitter.off("beginDragScroll",this.handleBeginDragScroll,r),this.dndManager.dragManager.emitter.off("updateDragScroll",this.handleUpdateDragScroll,r),this.dndManager.dragManager.emitter.off("endDragScroll",this.handleEndDragScroll,r),this.dndManager.dragManager.emitter.off("dragEnd",this.onDragEnd)})}isDoneScrolling(t){switch(t){case"top":return this.scrollState.y===0;case"right":return this.scrollState.x===this.scrollState.maxX;case"bottom":return this.scrollState.y===this.scrollState.maxY;case"left":return this.scrollState.x===0}}handleDragScroll(){this.activeScroll.size!==0&&this.scrollEl.win.requestAnimationFrame(()=>{let t={left:0,top:0};this.activeScroll.forEach((r,n)=>{if(this.isDoneScrolling(n))return this.activeScroll.delete(n);let i=["left","right"].includes(n)?"left":"top",a=["right","bottom"].includes(n);t[i]=a?Math.max(Ts-Ts*r/35,0):Math.min(-Ts+Ts*r/35,0)}),this.scrollEl.scrollBy(t),this.scrollState=Kl(this.scrollEl),this.handleEntityRegistration(),this.handleDragScroll()})}getId(t){return`${this.instanceId}-${t}`}getPath(t){var r,n,i,a;switch(t){case"right":return[...((r=this.parent)==null?void 0:r.getPath())||[],1];case"bottom":return[...((n=this.parent)==null?void 0:n.getPath())||[],2];case"left":return[...((i=this.parent)==null?void 0:i.getPath())||[],3]}return[...((a=this.parent)==null?void 0:a.getPath())||[],0]}getScrollShift(){var r,n,i;let t=(r=this.parent)==null?void 0:r.getScrollShift();return{x:Xe((n=this.parent)==null?void 0:n.scrollState.x)+Xe(t==null?void 0:t.x),y:Xe((i=this.parent)==null?void 0:i.scrollState.y)+Xe(t==null?void 0:t.y)}}createScrollEntity(t){var n,i;let r=this;return{scopeId:this.scopeId,entityId:r.getId(t),initial:Hl(this.scrollEl.getBoundingClientRect(),((n=this.parent)==null?void 0:n.scrollState)||on,((i=this.parent)==null?void 0:i.getScrollShift())||Pn,t),getParentScrollState(){var a;return((a=r.parent)==null?void 0:a.scrollState)||on},getParentScrollShift(){var a;return((a=r.parent)==null?void 0:a.getScrollShift())||Pn},recalcInitial(){var a,o;this.initial=Hl(r.scrollEl.getBoundingClientRect(),((a=r.parent)==null?void 0:a.scrollState)||on,((o=r.parent)==null?void 0:o.getScrollShift())||Pn,t)},getHitbox(){return wo(this.initial[0],this.initial[1],this.initial[2],this.initial[3],this.getParentScrollState(),this.getParentScrollShift())},getPath(){return r.getPath(t)},getData(){return{id:r.getId(t),type:pC,side:t,accepts:r.triggerTypes||[],scrollContainer:r.scrollEl,win:Ze(r.scrollEl)}}}}};function Zy({scrollRef:e,triggerTypes:t,children:r}){let n=F.useContext(kt),i=F.useContext(pr),a=F.useContext(aa),o=F.useRef(),s=F.useMemo(()=>{if(n){o.current&&o.current.destroy();let u=new fd(n,i,t||[],a,()=>e.current);return o.current=u,u}return null},[n,i,e,t,a]);return F.useEffect(()=>()=>{var u;return(u=o.current)==null?void 0:u.destroy()},[]),s?g(aa.Provider,{value:s},r):null}h();function eb({children:e}){let t=F.useMemo(()=>new ia,[]);return g(oa.Provider,{value:t},e)}function tb(e,t){let r=F.useContext(pr),n=F.useRef(null),i=F.useContext(oa),a=o=>{n.current=o,n.current&&o.win.requestAnimationFrame(()=>{let s=i.getScrollState(e);s&&(s.x!==0||s.y!==0)&&(n.current.scrollLeft=s.x,n.current.scrollTop=s.y)})};return F.useEffect(()=>{let o=n.current;if(!o)return;let s=ss(o.win,u=>{let l=u.target;i.setScrollState(r,e,{x:l.scrollLeft,y:l.scrollTop})});return o.addEventListener("scroll",s),()=>{o.removeEventListener("scroll",s)}},[i,e,t]),{setRef:a,scrollRef:n}}function Ms({className:e,children:t,triggerTypes:r,isStatic:n,id:i,index:a}){let{setRef:o,scrollRef:s}=tb(i,a);return g("div",{ref:o,className:mt([e,$("scroll-container")])},n?t:g(Zy,{scrollRef:s,triggerTypes:r},t))}h();h();var pd={width:0,height:0},hC=100,hd=class{constructor(t,r,n){this.hitboxDimensions=pd;this.handleDragStart=({dragEntity:t,dragEntityMargin:r,dragOriginHitbox:n})=>{let i=t==null?void 0:t.entityId,a=i?this.sortables.has(i):null;!t||!a||!n||(this.setSortState(!0),this.hitboxDimensions=$l(n,r),this.activatePlaceholder(this.hitboxDimensions,ln.none),this.sortables.forEach(([o,s,u])=>{let l=ta(t.getPath(),o.getPath()),c=o.entityId;if(l===an.Self)return this.hidden.add(c),this.hideDraggingEntity(u);l===an.After&&(this.shifted.has(c)||this.shifted.add(c),this.shiftEl(s,ln.none,this.hitboxDimensions))}))};this.dragEndTimeout=0;this.handleDragEnd=({primaryIntersection:t,dragPosition:r,dragOriginHitbox:n,dragEntity:i})=>{if(!this.isSorting||!r||!n||!i){if(!t&&i&&this.sortables.has(i.entityId))return this.resetSelf({maintainHidden:!1});if(t&&i){let s=(t==null?void 0:t.getHitbox())||n,u=_i({position:r,destination:{x:s[0],y:s[1]}});return this.dndManager.win.setTimeout(()=>{this.resetSelf({maintainHidden:!1})},u)}return this.resetSelf({maintainHidden:!0})}this.dndManager.win.clearTimeout(this.dragEnterTimeout),this.dndManager.win.clearTimeout(this.dragLeaveTimeout),this.dndManager.win.clearTimeout(this.dragEndTimeout);let a=(t==null?void 0:t.getHitbox())||n,o=i.scopeId==="htmldnd"?0:_i({position:r,destination:{x:a[0],y:a[1]}});this.dragEndTimeout=this.dndManager.win.setTimeout(()=>{let s=i.entityId.split(":::").pop(),u=t==null?void 0:t.entityId.split(":::").pop();t&&this.sortables.has(t.entityId)&&u!==s&&this.dndManager.onDrop(i,t),this.resetSelf({maintainHidden:!1,shiftTransition:ln.none,placeholderTransition:ln.none})},o),this.hitboxDimensions=pd};this.dragEnterTimeout=0;this.handleDragEnter=({dragEntity:t,dragEntityMargin:r,dragOriginHitbox:n,primaryIntersection:i})=>{let a=i==null?void 0:i.entityId,o=a?this.sortables.has(a):null;if(!t||!i||!o||!n){!o&&this.isSorting&&this.resetSelf({maintainHidden:!0,maintainPlaceholder:!0});return}t.entityId!==i.entityId&&(this.dndManager.win.clearTimeout(this.dragLeaveTimeout),this.dndManager.win.clearTimeout(this.dragEnterTimeout),this.dragEnterTimeout=this.dndManager.win.setTimeout(()=>{this.setSortState(!0),this.hitboxDimensions=$l(n,r),this.activatePlaceholder(this.hitboxDimensions,ln.placeholder),this.sortables.forEach(([s,u])=>{let l=ta(i.getPath(),s.getPath()),c=s.entityId;!this.hidden.has(c)&&(l===an.Self||l===an.After)?this.shifted.has(c)||(this.shifted.add(c),this.shiftEl(u,ln.outOfTheWay,this.hitboxDimensions)):this.shifted.has(c)&&(this.shifted.delete(c),this.resetEl(u))})},10))};this.dragLeaveTimeout=0;this.handleDragLeave=()=>{!this.isSorting||(this.dndManager.win.clearTimeout(this.dragLeaveTimeout),this.dndManager.win.clearTimeout(this.dragEnterTimeout),this.dragLeaveTimeout=this.dndManager.win.setTimeout(()=>{this.resetSelf({maintainHidden:!0,maintainPlaceholder:!0})},hC),this.hitboxDimensions=pd)};this.instanceId=Re(),this.dndManager=t,this.sortables=new Map,this.shifted=new Set,this.hidden=new Set,this.isSorting=!1,this.axis=r,this.placeholder=null,this.sortListeners=n?[n]:[],t.dragManager.emitter.on("dragStart",this.handleDragStart),t.dragManager.emitter.on("dragEnd",this.handleDragEnd),t.dragManager.emitter.on("dragEnter",this.handleDragEnter),t.dragManager.emitter.on("dragLeave",this.handleDragLeave)}destroy(){this.dndManager.win.clearTimeout(this.dragLeaveTimeout),this.dndManager.win.clearTimeout(this.dragEndTimeout),this.dndManager.dragManager.emitter.off("dragStart",this.handleDragStart),this.dndManager.dragManager.emitter.off("dragEnd",this.handleDragEnd),this.dndManager.dragManager.emitter.off("dragEnter",this.handleDragEnter),this.dndManager.dragManager.emitter.off("dragLeave",this.handleDragLeave)}registerSortable(t,r,n,i){let a=r.getData().type==="placeholder";this.sortables.set(t,[r,n,i]),a?(this.placeholder=[r,n,i],i.dataset.axis=this.axis,Dn(i,"transition",ln.none)):Dn(n,"transition",ln.none)}unregisterSortable(t){this.sortables.delete(t)}resetSelf({maintainHidden:t,maintainPlaceholder:r,shiftTransition:n,placeholderTransition:i}){this.isSorting&&this.setSortState(!1),this.isPlaceholderActive&&!r&&this.deactivatePlaceholder(i),this.shifted.size>0&&(this.shifted.forEach(a=>{if(this.sortables.has(a)){let[,o]=this.sortables.get(a);this.resetEl(o,n)}}),this.shifted.clear()),!t&&this.hidden.size>0&&(this.hidden.forEach(a=>{if(this.sortables.has(a)){let[,,o]=this.sortables.get(a);this.resetEl(o,n)}}),this.hidden.clear())}activatePlaceholder(t,r){if(this.placeholder){let n=this.axis==="horizontal",[,,i]=this.placeholder;Dn(i,"transition",r),Dn(i,n?"width":"height",`${n?t.width:t.height}px`),this.isPlaceholderActive=!0}}deactivatePlaceholder(t=ln.placeholder){if(this.placeholder){let[,,r]=this.placeholder;Dn(r,"transition",t),ls(r,"width"),ls(r,"height"),this.isPlaceholderActive=!1}}hideDraggingEntity(t){Dn(t,"display","none")}shiftEl(t,r,n){let i=this.axis==="horizontal"?`translate3d(${n.width}px, 0, 0)`:`translate3d(0, ${n.height}px, 0)`;Dn(t,"transition",r),Dn(t,"transform",i)}resetEl(t,r=ln.outOfTheWay){Dn(t,"transition",r),Dn(t,"transform","translate3d(0, 0, 0)"),ls(t,"display")}addSortNotifier(t){this.sortListeners.push(t)}removeSortNotifier(t){this.sortListeners=this.sortListeners.filter(r=>r!==t)}setSortState(t){this.isSorting!==t&&(this.isSorting=t,this.sortListeners.forEach(r=>r(t)))}};function Ii({axis:e,children:t,onSortChange:r}){let n=F.useContext(kt),i=F.useRef(),a=F.useMemo(()=>{if(n){i.current&&i.current.destroy();let o=new hd(n,e,r);return i.current=o,o}return null},[n,e,r]);return F.useEffect(()=>()=>{var o;return(o=i.current)==null?void 0:o.destroy()},[]),a?g(vo.Provider,{value:a},t):null}h();function Ai({index:e,accepts:t,className:r,isStatic:n}){let i=F.useRef(null),a=F.useRef(null),o=F.useMemo(()=>({id:Re(),type:"placeholder",accepts:t}),t);return g("div",{ref:a,className:mt([r,$("placeholder")])},g("div",{ref:i},!n&&g(hr,{elementRef:i,measureRef:a,id:o.id,index:e,data:o})))}h();h();h();Mr();Mr();function nb(e,t){for(var r in t)e[r]=t[r];return e}function md(e,t){for(var r in e)if(r!=="__source"&&!(r in t))return!0;for(var n in t)if(n!=="__source"&&e[n]!==t[n])return!0;return!1}function gd(e){this.props=e}function mC(e,t){function r(i){var a=this.props.ref,o=a==i.ref;return!o&&a&&(a.call?a(null):a.current=null),t?!t(this.props,i)||!o:md(this.props,i)}function n(i){return this.shouldComponentUpdate=r,g(e,i)}return n.displayName="Memo("+(e.displayName||e.name)+")",n.prototype.isReactComponent=!0,n.__f=!0,n}(gd.prototype=new pt).isPureReactComponent=!0,gd.prototype.shouldComponentUpdate=function(e,t){return md(this.props,e)||md(this.state,t)};var rb=fe.__b;fe.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),rb&&rb(e)};var gC=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function vC(e){function t(r){var n=nb({},r);return delete n.ref,e(n,r.ref||null)}return t.$$typeof=gC,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var ib=function(e,t){return e==null?null:wt(wt(e).map(t))},yC={map:ib,forEach:ib,count:function(e){return e?wt(e).length:0},only:function(e){var t=wt(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:wt},bC=fe.__e;fe.__e=function(e,t,r,n){if(e.then){for(var i,a=t;a=a.__;)if((i=a.__c)&&i.__c)return t.__e==null&&(t.__e=r.__e,t.__k=r.__k),i.__c(e,t)}bC(e,t,r,n)};var ab=fe.unmount;function Is(){this.__u=0,this.t=null,this.__b=null}function ob(e){var t=e.__.__c;return t&&t.__e&&t.__e(e)}function wC(e){var t,r,n;function i(a){if(t||(t=e()).then(function(o){r=o.default||o},function(o){n=o}),n)throw n;if(!r)throw t;return g(r,a)}return i.displayName="Lazy",i.__f=!0,i}function Fa(){this.u=null,this.o=null}fe.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&e.__h===!0&&(e.type=null),ab&&ab(e)},(Is.prototype=new pt).__c=function(e,t){var r=t.__c,n=this;n.t==null&&(n.t=[]),n.t.push(r);var i=ob(n.__v),a=!1,o=function(){a||(a=!0,r.__R=null,i?i(s):s())};r.__R=o;var s=function(){if(!--n.__u){if(n.state.__e){var l=n.state.__e;n.__v.__k[0]=function d(f,p,m){return f&&(f.__v=null,f.__k=f.__k&&f.__k.map(function(y){return d(y,p,m)}),f.__c&&f.__c.__P===p&&(f.__e&&m.insertBefore(f.__e,f.__d),f.__c.__e=!0,f.__c.__P=m)),f}(l,l.__c.__P,l.__c.__O)}var c;for(n.setState({__e:n.__b=null});c=n.t.pop();)c.forceUpdate()}},u=t.__h===!0;n.__u++||u||n.setState({__e:n.__b=n.__v.__k[0]}),e.then(o,o)},Is.prototype.componentWillUnmount=function(){this.t=[]},Is.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var r=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=function a(o,s,u){return o&&(o.__c&&o.__c.__H&&(o.__c.__H.__.forEach(function(l){typeof l.__c=="function"&&l.__c()}),o.__c.__H=null),(o=nb({},o)).__c!=null&&(o.__c.__P===u&&(o.__c.__P=s),o.__c=null),o.__k=o.__k&&o.__k.map(function(l){return a(l,s,u)})),o}(this.__b,r,n.__O=n.__P)}this.__b=null}var i=t.__e&&g(S,null,e.fallback);return i&&(i.__h=null),[g(S,null,t.__e?null:e.children),i]};var sb=function(e,t,r){if(++r[1]===r[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(r=e.u;r;){for(;r.length>3;)r.pop()();if(r[1]>>1,1),t.i.removeChild(n)}}),kn(g(EC,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function kC(e,t){var r=g(xC,{__v:e,i:t});return r.containerInfo=t,r}(Fa.prototype=new pt).__e=function(e){var t=this,r=ob(t.__v),n=t.o.get(e);return n[0]++,function(i){var a=function(){t.props.revealOrder?(n.push(i),sb(t,e,n)):i()};r?r(a):a()}},Fa.prototype.render=function(e){this.u=null,this.o=new Map;var t=wt(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var r=t.length;r--;)this.o.set(t[r],this.u=[1,0,this.u]);return e.children},Fa.prototype.componentDidUpdate=Fa.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,r){sb(e,r,t)})};var lb=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.element")||60103,SC=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|shape|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,_C=typeof document!="undefined",CC=function(e){return(typeof Symbol!="undefined"&&typeof Symbol()=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(e)};function TC(e,t,r){return t.__k==null&&(t.textContent=""),kn(e,t),typeof r=="function"&&r(),e?e.__c:null}function DC(e,t,r){return Ji(e,t),typeof r=="function"&&r(),e?e.__c:null}pt.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(pt.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var cb=fe.event;function MC(){}function IC(){return this.cancelBubble}function AC(){return this.defaultPrevented}fe.event=function(e){return cb&&(e=cb(e)),e.persist=MC,e.isPropagationStopped=IC,e.isDefaultPrevented=AC,e.nativeEvent=e};var ub,db={configurable:!0,get:function(){return this.class}},fb=fe.vnode;fe.vnode=function(e){var t=e.type,r=e.props,n=r;if(typeof t=="string"){var i=t.indexOf("-")===-1;for(var a in n={},r){var o=r[a];_C&&a==="children"&&t==="noscript"||a==="value"&&"defaultValue"in r&&o==null||(a==="defaultValue"&&"value"in r&&r.value==null?a="value":a==="download"&&o===!0?o="":/ondoubleclick/i.test(a)?a="ondblclick":/^onchange(textarea|input)/i.test(a+t)&&!CC(r.type)?a="oninput":/^onfocus$/i.test(a)?a="onfocusin":/^onblur$/i.test(a)?a="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(a)?a=a.toLowerCase():i&&SC.test(a)?a=a.replace(/[A-Z0-9]/,"-$&").toLowerCase():o===null&&(o=void 0),/^oninput$/i.test(a)&&(a=a.toLowerCase(),n[a]&&(a="oninputCapture")),n[a]=o)}t=="select"&&n.multiple&&Array.isArray(n.value)&&(n.value=wt(r.children).forEach(function(s){s.props.selected=n.value.indexOf(s.props.value)!=-1})),t=="select"&&n.defaultValue!=null&&(n.value=wt(r.children).forEach(function(s){s.props.selected=n.multiple?n.defaultValue.indexOf(s.props.value)!=-1:n.defaultValue==s.props.value})),e.props=n,r.class!=r.className&&(db.enumerable="className"in r,r.className!=null&&(n.class=r.className),Object.defineProperty(n,"className",db))}e.$$typeof=lb,fb&&fb(e)};var pb=fe.__r;fe.__r=function(e){pb&&pb(e),ub=e.__c};var LC={ReactCurrentDispatcher:{current:{readContext:function(e){return ub.__n[e.__c].props.value}}}};function PC(e){return g.bind(null,e)}function hb(e){return!!e&&e.$$typeof===lb}function FC(e){return hb(e)?io.apply(null,arguments):e}function NC(e){return!!e.__k&&(kn(null,e),!0)}function OC(e){return e&&(e.base||e.nodeType===1&&e)||null}var RC=function(e,t){return e(t)},HC=function(e,t){return e(t)};var it={useState:sr,useReducer:Qi,useEffect:Sn,useLayoutEffect:Ir,useRef:Xt,useImperativeHandle:oo,useMemo:lr,useCallback:cr,useContext:so,useDebugValue:lo,version:"17.0.2",Children:yC,render:TC,hydrate:DC,unmountComponentAtNode:NC,createPortal:kC,createElement:g,createContext:ni,createFactory:PC,cloneElement:FC,createRef:ei,Fragment:S,isValidElement:hb,findDOMNode:OC,Component:pt,PureComponent:gd,memo:mC,forwardRef:vC,flushSync:HC,unstable_batchedUpdates:RC,StrictMode:S,Suspense:Is,SuspenseList:Fa,lazy:wC,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:LC};var BC=function(){if(typeof window=="undefined"||typeof window.addEventListener!="function")return!1;var e=!1,t=Object.defineProperty({},"passive",{get:function(){e=!0}}),r=function(){return null};return window.addEventListener("test",r,t),window.removeEventListener("test",r,t),e},KC="ignore-onclickoutside",mb=function(t,r){var n;return(n=t.classList)==null?void 0:n.contains(r)},gb=function(t,r){for(var n=t.target||t;n;){if(Array.isArray(r)){if(r.some(function(i){return mb(n,i)}))return!0}else if(mb(n,r))return!0;n=n.parentElement}return!1},$C=function(t){return document.documentElement.clientWidth<=t.clientX||document.documentElement.clientHeight<=t.clientY},vb=function(t){return t.includes("touch")&&BC()?{passive:!0}:!1},UC=function(t,r){var n=r===void 0?{}:r,i=n.refs,a=n.disabled,o=n.eventTypes,s=o===void 0?["mousedown","touchstart"]:o,u=n.excludeScrollbar,l=n.ignoreClass,c=l===void 0?KC:l,d=n.detectIFrame,f=d===void 0?!0:d,p=sr([]),m=p[0],y=p[1],b=Xt(t);b.current=t;var x=cr(function(D){return y(function(C){return[].concat(C,[{current:D}])})},[]);return Sn(function(){if(!(!(i!=null&&i.length)&&!m.length)){var D=function(){var O=[];return(i||m).forEach(function(W){var z=W.current;return z&&O.push(z)}),O},C=function(O){!gb(O,c)&&!(u&&$C(O))&&D().every(function(W){return!W.contains(O.target)})&&b.current(O)},A=function(O){return setTimeout(function(){var W=document,z=W.activeElement;(z==null?void 0:z.tagName)==="IFRAME"&&!gb(z,c)&&!D().includes(z)&&b.current(O)},0)},N=function(){s.forEach(function(O){return document.removeEventListener(O,C,vb(O))}),f&&window.removeEventListener("blur",A)};if(a){N();return}return s.forEach(function(T){return document.addEventListener(T,C,vb(T))}),f&&window.addEventListener("blur",A),function(){return N()}}},[m,c,u,a,f,JSON.stringify(s)]),x},Li=UC;function vd({addItems:e,isInputVisible:t,setIsInputVisible:r,hideButton:n}){let[i,a]=F.useState(""),{stateManager:o,view:s}=F.useContext(Ve),u=F.useRef(),l=Li(()=>{r(!1)},{ignoreClass:$("ignore-click-outside")}),c=F.useCallback(()=>{a(""),r(!1)},[]),d=async m=>{try{e(await Promise.all(m.map(y=>o.getNewItem(y))))}catch(y){o.setError(y)}},f=m=>{if(!Xn(m,o)){m.preventDefault();let y=i.trim();y&&(d([y]),a(""))}},p=()=>{let m=i.trim();m&&(d([m]),a(""))};return t?g("div",{className:$("item-form"),ref:l},g("div",{className:$("item-input-wrapper")},g(Er,{ref:u,className:$("item-input"),placeholder:B("Card title..."),onEnter:f,onEscape:c,onSubmit:p,value:i,onChange:m=>{a(m.target.value)},onPaste:m=>{ms(m,o,s.getWindow())}}))):n?null:g("div",{className:$("item-button-wrapper")},g("button",{className:$("new-item-button"),onClick:()=>r(!0),onDragOver:m=>{hs(o,m.dataTransfer)&&r(!0)}},g("span",{className:$("item-button-plus")},"+")," ",B("Add a card")))}h();var Db=ge(xt());h();function As(e,t){let r=t.end-t.start;return e.slice(0,t.start)+"\0".repeat(r)+e.slice(t.end)}function yb(e){return e.replace(/\s*\0+\s*/g," ").trim()}function Na(e){return e.trim().replace(/(\r\n|\n)/g,"
")}function Ls(e){return e.replace(/
/g,` -`).trim()}function Wr(e){e=Ls(e);let t=e.match(/^(.*?)\s*\((\d+)\)$/);return t==null?{title:e,maxItems:0}:{title:t[1],maxItems:Number(t[2])}}h();function bb(e){return g("svg",{...e,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16"},g("path",{fill:"currentColor",d:"M5 3h2v2H5zm0 4h2v2H5zm0 4h2v2H5zm4-8h2v2H9zm0 4h2v2H9zm0 4h2v2H9z"}))}h();var yd=ge(xt()),wb=ge(require("obsidian"));var Eb={delete:{description:B("Are you sure you want to delete this list and all its cards?"),confirm:B("Yes, delete list")},archive:{description:B("Are you sure you want to archive this list and all its cards?"),confirm:B("Yes, archive list")},"archive-items":{description:B("Are you sure you want to archive all cards in this list?"),confirm:B("Yes, archive cards")}};function xb({action:e,cancel:t,onAction:r,lane:n}){return F.useEffect(()=>{e&&n.children.length===0&&r()},[e,n.children.length]),!e||e&&n.children.length===0?null:g("div",{className:$("action-confirm-wrapper")},g("div",{className:$("action-confirm-text")},Eb[e].description),g("div",null,g("button",{onClick:r,className:$("confirm-action-button")},Eb[e].confirm),g("button",{onClick:t,className:$("cancel-action-button")},"Cancel")))}function kb({setIsEditing:e,path:t,lane:r}){let{stateManager:n,boardModifiers:i}=F.useContext(Ve),[a,o]=F.useState(null);return{settingsMenu:F.useMemo(()=>new wb.Menu().addItem(u=>{u.setIcon("pencil").setTitle(B("Edit list")).onClick(()=>e(!0))}).addItem(u=>{u.setIcon("documents").setTitle(B("Archive cards")).onClick(()=>o("archive-items"))}).addSeparator().addItem(u=>{u.setIcon("up-and-down-arrows").setTitle(B("Sort by card text")).onClick(()=>{let l=r.children.slice(),c=r.data.sorted===Mn.TitleAsc;l.sort((d,f)=>c?f.data.titleSearch.localeCompare(d.data.titleSearch):d.data.titleSearch.localeCompare(f.data.titleSearch)),i.updateLane(t,(0,yd.default)(r,{children:{$set:l},data:{sorted:{$set:r.data.sorted===Mn.TitleAsc?Mn.TitleDsc:Mn.TitleAsc}}}))})}).addItem(u=>{u.setIcon("up-and-down-arrows").setTitle(B("Sort by date")).onClick(()=>{let l=r.children.slice(),c=r.data.sorted===Mn.DateAsc?-1:1;l.sort((d,f)=>{let p=d.data.metadata.time||d.data.metadata.date,m=f.data.metadata.time||f.data.metadata.date;return p&&!m?-1*c:m&&!p?1*c:!p&&!m?0:(p.isBefore(m)?-1:1)*c}),i.updateLane(t,(0,yd.default)(r,{children:{$set:l},data:{sorted:{$set:r.data.sorted===Mn.DateAsc?Mn.DateDsc:Mn.DateAsc}}}))})}).addSeparator().addItem(u=>{u.setIcon("plus-with-circle").setTitle(B("Insert list before")).onClick(()=>i.insertLane(t,{...wr,id:Re(),children:[],data:{title:"",shouldMarkItemsComplete:!1,forceEditMode:!0}}))}).addItem(u=>{u.setIcon("plus-with-circle").setTitle(B("Insert list after")).onClick(()=>{let l=[...t];l[l.length-1]=l[l.length-1]+1,i.insertLane(l,{...wr,id:Re(),children:[],data:{title:"",shouldMarkItemsComplete:!1,forceEditMode:!0}})})}).addSeparator().addItem(u=>{u.setIcon("sheets-in-box").setTitle(B("Archive list")).onClick(()=>o("archive"))}).addItem(u=>{u.setIcon("trash").setTitle(B("Delete list")).onClick(()=>o("delete"))}),[n,o,t,r]),confirmAction:a,setConfirmAction:o}}h();var Sb=ge(xt());function _b({lane:e,lanePath:t}){let{boardModifiers:r}=F.useContext(Ve);return g("div",{className:$("lane-setting-wrapper")},g("div",{className:$("checkbox-wrapper")},g("div",{className:$("checkbox-label")},B("Mark cards in this list as complete")),g("div",{onClick:()=>r.updateLane(t,(0,Sb.default)(e,{data:{$toggle:["shouldMarkItemsComplete"]}})),className:`checkbox-container ${e.data.shouldMarkItemsComplete?"is-enabled":""}`})))}h();var Cb=ge(require("obsidian"));function Tb({itemCount:e,maxItems:t,isEditing:r,setIsEditing:n,title:i,onChange:a}){let{stateManager:o}=F.useContext(Ve),s=F.useRef(),u=o.getSetting("hide-card-count"),l=p=>{Xn(p,o)||(p.preventDefault(),r&&n(!1))},c=()=>{r&&n(!1)},d=()=>{r&&n(!1)};F.useEffect(()=>{if(r&&s.current){let p=s.current;s.current.focus(),p.selectionStart=p.selectionEnd=p.value.length}},[r]);let f=[$("lane-title-count")];return t&&t{p.preventDefault(),p.stopPropagation();let m=p.target instanceof p.view.HTMLAnchorElement&&p.target.hasClass("internal-link")?p.target.dataset.href:void 0;m&&o.app.workspace.onLinkContextMenu(p,(0,Cb.getLinkpath)(m),o.file.path)}},g(La,{markdownString:i})))),!r&&!u&&g("div",{className:mt(f)},e,t>0&&g(S,null,g("span",{className:$("lane-title-count-separator")},"/"),g("span",{className:$("lane-title-count-limit")},t))))}var Mb=F.memo(function({lane:t,laneIndex:r,dragHandleRef:n,setIsItemInputVisible:i}){let{boardModifiers:a,stateManager:o}=F.useContext(Ve),[s,u]=F.useState(!1),l=Vn(r),{settingsMenu:c,confirmAction:d,setConfirmAction:f}=kb({setIsEditing:u,path:l,lane:t});return F.useEffect(()=>{t.data.forceEditMode&&u(!0)},[t.data.forceEditMode]),g(S,null,g("div",{onDblClick:()=>u(!0),className:$("lane-header-wrapper")},g("div",{className:$("lane-grip"),ref:n},g(bb,null)),g(Tb,{isEditing:s,setIsEditing:u,itemCount:t.children.length,maxItems:t.data.maxItems,title:t.data.title,onChange:p=>{let{title:m,maxItems:y}=Wr(p.target.value);a.updateLane(l,(0,Db.default)(t,{data:{title:{$set:m},maxItems:{$set:y}}}))}}),g("div",{className:$("lane-settings-button-wrapper")},s?g("button",{onClick:()=>{u(!1)},"aria-label":"Close",className:`${$("lane-settings-button")} is-enabled`},g(Kt,{name:"cross"})):g(S,null,i&&g("button",{"aria-label":B("Add a card"),className:$("lane-settings-button"),onClick:()=>{i(!0)},onDragOver:p=>{hs(o,p.dataTransfer)&&i(!0)}},g(Kt,{name:"plus-with-circle"})),g("button",{"aria-label":B("More options"),className:$("lane-settings-button"),onClick:p=>{c.showAtPosition({x:p.clientX,y:p.clientY})}},g(Kt,{name:"vertical-three-dots"}))))),s&&g(_b,{lane:t,lanePath:l}),d&&g(xb,{lane:t,action:d,onAction:()=>{switch(d){case"archive":a.archiveLane(l);break;case"archive-items":a.archiveLaneItems(l);break;case"delete":a.deleteEntity(l);break}f(null)},cancel:()=>f(null)}))});var Ab=[Ge.Item],bd=F.memo(function({isStatic:t,lane:r,laneIndex:n}){let{stateManager:i,boardModifiers:a,view:o}=F.useContext(Ve),[s,u]=F.useState(!1),l=Vn(n),c=i.useSetting("lane-width"),d=i.useSetting("new-card-insertion-method"),f=!!r.data.shouldMarkItemsComplete,p=c?{width:`${c}px`}:void 0,m=F.useRef(null),y=F.useRef(null),b=F.useRef(null),[x,D]=F.useState(!1),C=d==="prepend-compact",A=C||d==="prepend";Ti(y,b);let N=W=>{a[A?"prependItems":"appendItems"]([...l,r.children.length-1],W.map(z=>(0,Ib.default)(z,{data:{isComplete:{$set:f}}}))),o.getWindow().setTimeout(()=>{var ee;let z=(ee=m.current)==null?void 0:ee.getElementsByClassName($("lane-items"));z.length&&Cs([0,A?0:z[0].scrollHeight],{elementToScroll:z[0],speed:200,minDuration:150,easing:Z=>Z===1?1:1-Math.pow(2,-10*Z)})})},T=g(S,null,g(Jy,{items:r.children,isStatic:t,shouldMarkItemsComplete:f}),g(Ai,{accepts:Ab,index:r.children.length,isStatic:t})),O=g(Ms,{id:r.id,index:n,className:mt([$("lane-items"),$("vertical")]),triggerTypes:Ab,isStatic:t},t?T:g(Ii,{onSortChange:D,axis:"vertical"},T));return g("div",{ref:y,className:mt([$("lane-wrapper"),{"is-sorting":x}]),style:p},g("div",{"data-count":r.children.length,ref:m,className:mt([$("lane"),{"will-prepend":A}])},g(Mb,{dragHandleRef:b,laneIndex:n,lane:r,setIsItemInputVisible:C?u:void 0}),A&&g(vd,{addItems:N,hideButton:C,isInputVisible:s,setIsInputVisible:u}),t?O:g(hr,{elementRef:m,measureRef:y,id:r.id,index:n,data:r},O),!A&&g(vd,{addItems:N,isInputVisible:s,setIsInputVisible:u})))}),Lb=F.memo(function({lanes:t}){return g(S,null,t.map((r,n)=>g(bd,{lane:r,laneIndex:n,key:r.id})))});h();h();var Pb=ge(require("obsidian"));h();function Ps(){return{events:{},emit(e,t,r){let n=`${String(e)}${r||""}`,i=this.events[e],a=this.events[n];if(!i&&!a){console.warn("Event emitted with no handler",e,r);return}r&&a&&a.forEach(o=>o(t)),i&&i.forEach(o=>o(t))},on(e,t,r){let n=`${String(e)}${r||""}`,i=this.events[n];return i||(this.events[n]=i=[]),i.push(t),()=>this.off(e,t,r)},off(e,t,r){let n=`${String(e)}${r||""}`,i=this.events[n];i&&(i.splice(i.indexOf(t)>>>0,1),i.length===0&&delete this.events[n])}}}var wd=class{constructor(t,r){this.scrollResizeDebounce=0;this.handleResize=t=>{let r=!1;t.forEach(n=>{let i=Ze(n.target);this.win===i&&(r=!0,n.target.dataset.scrollid&&(this.win.clearTimeout(this.scrollResizeDebounce),this.scrollResizeDebounce=this.win.setTimeout(()=>{var a;((a=this.emitter.events.scrollResize)==null?void 0:a.length)&&this.emitter.emit("scrollResize",null)},50)))}),!!r&&(this.hitboxEntities.forEach(n=>{n.recalcInitial()}),this.scrollEntities.forEach(n=>{n.recalcInitial()}))};this.win=t,this.emitter=Ps(),this.hitboxEntities=new Map,this.scrollEntities=new Map,this.onDrop=r,this.resizeObserver=new ResizeObserver((0,Pb.debounce)(this.handleResize,100,!0)),this.dragManager=new Mu(t,this.emitter,this.hitboxEntities,this.scrollEntities)}destroy(){this.resizeObserver.disconnect()}observeResize(t){this.resizeObserver.observe(t,{box:"border-box"})}unobserveResize(t){this.resizeObserver.unobserve(t)}registerHitboxEntity(t,r,n){n===this.win&&this.hitboxEntities.set(t,r)}registerScrollEntity(t,r,n){n===this.win&&this.scrollEntities.set(t,r)}unregisterHitboxEntity(t,r){r===this.win&&this.hitboxEntities.delete(t)}unregisterScrollEntity(t,r){r===this.win&&this.scrollEntities.delete(t)}};function Fs({win:e,children:t,onDrop:r}){let n=F.useRef(r);n.current=r;let i=F.useMemo(()=>new wd(e,(a,o)=>n.current(a,o)),[]);return F.useEffect(()=>()=>{i.destroy()},[i]),g(kt.Provider,{value:i},g(eb,null,t))}h();function Ed(e,t,r,n,i,a){let o=[r[0]-n[0],r[1]-n[1],r[2]+n[2],r[3]+n[3]];return{transform:a||`translate3d(${e.x-t.x+o[0]}px, ${e.y-t.y+o[1]}px, 0px)`,width:`${o[2]-o[0]}px`,height:`${o[3]-o[1]}px`,transition:i}}function Ns({children:e}){let t=F.useContext(kt),[r,n]=F.useState(),[i,a]=F.useState();return F.useEffect(()=>{if(!t)return;let o=Dp,s=({dragEntity:c,dragOrigin:d,dragPosition:f,dragEntityMargin:p})=>{!c||!f||!d||(o=c.getHitbox(),n(c),a(Ed(f,d,o,p)))},u=({dragOrigin:c,dragPosition:d,dragEntityMargin:f})=>{!d||!c||a(Ed(d,c,o,f))},l=({dragOrigin:c,primaryIntersection:d,dragPosition:f,dragEntityMargin:p})=>{if(d&&f&&c){let m=d.getHitbox(),y={x:m[0],y:m[1]},b=_i({position:f,destination:y}),x=ln.drop(b),D=nv.drop(y);a(Ed(f,c,o,p,x,D)),activeWindow.setTimeout(()=>{n(void 0),a(void 0)},b)}else n(void 0),a(void 0)};return t.dragManager.emitter.on("dragStart",s),t.dragManager.emitter.on("dragMove",u),t.dragManager.emitter.on("dragEnd",l),()=>{t.dragManager.emitter.off("dragStart",s),t.dragManager.emitter.off("dragMove",u),t.dragManager.emitter.off("dragEnd",l)}},[t]),!r||!i?null:F.createPortal(e(r,i),r.getData().win.document.body)}function Fb(){let e=F.useContext(kt),[t,r]=F.useState(!1);return F.useEffect(()=>{let n=()=>{r(!0)},i=({primaryIntersection:a,dragPosition:o})=>{let s=(a==null?void 0:a.getHitbox())||[0,0],u={x:s[0],y:s[1]},l=_i({position:o||u,destination:u});activeWindow.setTimeout(()=>{r(!1)},l)};return e.dragManager.emitter.on("dragStart",n),e.dragManager.emitter.on("dragEnd",i),()=>{e.dragManager.emitter.off("dragStart",n),e.dragManager.emitter.off("dragEnd",i)}},[e]),t}h();var Oa=ge(xt()),Nb=ge(require("obsidian"));function Os(e){let t=r=>{let n=e.getSetting("prepend-archive-format"),i=e.getSetting("prepend-archive-separator"),a=[(0,Nb.moment)().format(n)];i&&a.push(i),a.push(r.data.titleRaw);let o=a.join(" ");return e.updateItemContent(r,o)};return{appendItems:(r,n)=>{n.forEach(i=>e.app.workspace.trigger("kanban:card-added",e.file,i)),e.setState(i=>Pl(i,r,n))},prependItems:(r,n)=>{n.forEach(i=>e.app.workspace.trigger("kanban:card-added",e.file,i)),e.setState(i=>kp(i,r,n))},insertItems:(r,n)=>{n.forEach(i=>e.app.workspace.trigger("kanban:card-added",e.file,i)),e.setState(i=>fr(i,r,n))},splitItem:(r,n)=>{n.forEach(i=>e.app.workspace.trigger("kanban:card-added",e.file,i)),e.setState(i=>fr(Lr(i,r),r,n))},addLane:r=>{e.app.workspace.trigger("kanban:lane-added",e.file,r),e.setState(n=>Pl(n,[],[r]))},insertLane:(r,n)=>{e.app.workspace.trigger("kanban:lane-added",e.file,n),e.setState(i=>fr(i,r,[n]))},updateLane:(r,n)=>{e.app.workspace.trigger("kanban:lane-updated",e.file,n),e.setState(i=>Fl(i,r,{children:{[r[r.length-1]]:{$set:n}}}))},archiveLane:r=>{e.setState(async n=>{let i=ht(n,r),a=i.children;e.app.workspace.trigger("kanban:lane-archived",e.file,i);try{return(0,Oa.default)(Lr(n,r),{data:{archive:{$unshift:e.getSetting("prepend-archive-date")?await Promise.all(a.map(t)):a}}})}catch(o){return e.setError(o),n}})},archiveLaneItems:r=>{e.setState(async n=>{let a=ht(n,r).children;e.app.workspace.trigger("kanban:lane-cards-archived",e.file,a);try{return(0,Oa.default)(ho(n,r,{children:{$set:[]}}),{data:{archive:{$unshift:e.getSetting("prepend-archive-date")?await Promise.all(a.map(t)):a}}})}catch(o){return e.setError(o),n}})},deleteEntity:r=>{e.setState(n=>{let i=ht(n,r);return e.app.workspace.trigger(`kanban:${i.type}-deleted`,e.file,i),Lr(n,r)})},updateItem:(r,n)=>{e.setState(i=>{let a=ht(i,r);return e.app.workspace.trigger("kanban:card-updated",e.file,a,n),Fl(i,r,{children:{[r[r.length-1]]:{$set:n}}})})},archiveItem:r=>{e.setState(async n=>{let i=ht(n,r);e.app.workspace.trigger("kanban:card-archived",e.file,r,i);try{return(0,Oa.default)(Lr(n,r),{data:{archive:{$push:[e.getSetting("prepend-archive-date")?await t(i):i]}}})}catch(a){return e.setError(a),n}})},duplicateEntity:r=>{e.setState(n=>{let i=ht(n,r);e.app.workspace.trigger(`kanban:${i.type}-duplicated`,e.file,r,i);let a=(0,Oa.default)(i,{id:{$set:Re()}});return fr(n,r,[a])})}}}function Rb(e,t){return g(VC,{win:e,plugin:t})}var WC=F.memo(function({view:t}){return F.createPortal(t.getPortal(),t.contentEl)});function VC({win:e,plugin:t}){let r=t.useViewState(e),n=r.map(a=>g(WC,{key:a.id,view:a})),i=F.useCallback((a,o)=>{if(!a||!o)return;if(a.scopeId==="htmldnd"){let y=a.getData(),b=t.getStateManagerFromViewID(y.viewId,y.win),x=o.getPath(),D=ht(b.state,x.slice(0,-1));(A=>Promise.all(A.map(N=>b.getNewItem(N))))(y.content).then(A=>{let N=A.map(T=>{var O;return(0,Ob.default)(T,{data:{isComplete:{$set:!!((O=D==null?void 0:D.data)==null?void 0:O.shouldMarkItemsComplete)}}})});return b.setState(T=>fr(T,x,N))}).catch(A=>{b.setError(A),console.error(A)});return}let s=a.getPath(),u=o.getPath(),[,l]=a.scopeId.split(":::"),[,c]=o.scopeId.split(":::"),d=a.getData(),f=o.getData();if(l===c){let y=t.getStateManagerFromViewID(a.scopeId,d.win);return t.app.workspace.trigger("kanban:card-moved",y.file,s,u,d),y.setState(b=>{var N;let x=!1,D=xp(b,s,u,T=>T.type===Ge.Item?(x=!0,Ol(b,s,b,u,T)):T);if(!x)return D;let C=u.slice(0,-1),A=ht(b,C);return((N=A==null?void 0:A.data)==null?void 0:N.sorted)!==void 0?ho(D,C,{data:{$unset:["sorted"]}}):D})}let p=t.getStateManagerFromViewID(a.scopeId,d.win),m=t.getStateManagerFromViewID(o.scopeId,f.win);p.setState(y=>{let b=ht(y,s);return m.setState(x=>{let D=b.type===Ge.Item?Ol(y,s,x,u,b):b;return fr(x,u,[D])}),Lr(y,s)})},[r]);if(n.length)return g(Fs,{win:e,onDrop:i},n,g(Ns,null,(a,o)=>{let[s,u]=F.useMemo(()=>{if(a.scopeId==="htmldnd")return[null,null];let l=a.getData(),c=t.getKanbanView(a.scopeId,l.win),d=t.stateManagers.get(c.file),f=ht(d.state,a.getPath()),p=Os(d),m=c.file.path;return[f,{view:c,stateManager:d,boardModifiers:p,filePath:m}]},[a]);return(s==null?void 0:s.type)===Ge.Lane?g(Ve.Provider,{value:u},g("div",{className:$("drag-container"),style:o},g(bd,{lane:s,laneIndex:0,isStatic:!0}))):(s==null?void 0:s.type)===Ge.Item?g(Ve.Provider,{value:u},g("div",{className:$("drag-container"),style:o},g(dd,{item:s,itemIndex:0,isStatic:!0}))):g("div",null)}))}h();var Rd=ge(xt()),_w=ge(require("obsidian"));h();var jb=ge(xt()),qb=ge(require("obsidian")),Hs=ge(fc());h();function Rs({id:e,children:t}){let r=F.useContext(oa),n=F.useMemo(()=>e||Re(),[e]);return F.useEffect(()=>()=>{r.unmountScope(e)},[e]),g(pr.Provider,{value:n},t)}h();var gn="kanban-plugin",Hb;(function(t){t[t.List=0]="List"})(Hb||(Hb={}));var Bb=`**${B("Complete")}**`,Kb="***",xd=["---","",`${gn}: basic`,"","---","",""].join(` -`);function $b(e){return["","","%% kanban:settings","```",JSON.stringify(e),"```","%%"].join(` -`)}function Ub(e,t,r){let n=e.innerText.trim();if((t==null?void 0:t.length)&&(n+=" "+t.join(" ")),r){let i=Object.keys(r).join(" "),a=Object.values(r).map(o=>Array.isArray(o.value)?o.value.join(" "):o.value.toString()).join(" ");n+=" "+i+" "+a}return n.toLocaleLowerCase()}function zC(e,t,r){var n,i,a;if(e.plugins.enabledPlugins.has("dataview")&&((a=(i=(n=e.plugins)==null?void 0:n.plugins)==null?void 0:i.dataview)==null?void 0:a.api))return e.plugins.plugins.dataview.api.page(t.path,r.path)}function Wb(e,t){if(!e)return null;if(e[t])return e[t];let r=t.split("."),n=e;for(let i of r)if(typeof n=="object"&&i in n)n=n[i];else{n=null;break}return n}function kd(e,t){let r=e.getSetting("metadata-keys");if(!r.length)return{};if(!t)return{};let n=e.app.metadataCache.getFileCache(t),i=zC(e.app,t,e.file);if(!n&&!i)return{};let a={},o={},s={},u=[],l=!1;return r.forEach(c=>{var p;if(s[c.metadataKey])return;if(s[c.metadataKey]=!0,c.metadataKey==="tags"){let m=(n==null?void 0:n.tags)||[];if(Array.isArray((p=n==null?void 0:n.frontmatter)==null?void 0:p.tags)&&(m=[].concat(m,n.frontmatter.tags.map(y=>({tag:`#${y}`})))),(m==null?void 0:m.length)===0)return;u.push(c.metadataKey),a.tags={...c,value:m.map(y=>y.tag).filter(y=>o[y]?!1:(o[y]=!0,!0))},l=!0;return}let d=Wb(n==null?void 0:n.frontmatter,c.metadataKey),f=Wb(i,c.metadataKey);if(d)u.push(c.metadataKey),a[c.metadataKey]={...c,value:d},l=!0;else if(f){let m=i[c.metadataKey],y=m.values||m.val||m;if(y===m&&typeof y=="object")y={...m};else if(!Array.isArray(y)&&typeof y!="string"&&typeof y!="number")return;u.push(c.metadataKey),a[c.metadataKey]={...c,value:y},l=!0}}),{fileMetadata:l?a:void 0,fileMetadataOrder:u}}function Vb(e,t){return!e&&t?!0:!["metadata-keys","date-trigger","time-trigger","link-date-to-daily-note","date-format","time-format","hide-date-in-title","hide-tags-in-title","hide-card-count"].every(n=>e[n]===t[n])}h();function zb({onNewLane:e,closeLaneForm:t}){let{boardModifiers:r,stateManager:n}=F.useContext(Ve),[i,a]=F.useState(!1),[o,s]=F.useState(""),u=F.useRef(),l=Li(()=>{t()},{ignoreClass:$("ignore-click-outside")});F.useLayoutEffect(()=>{var d;(d=u.current)==null||d.focus()},[]);let c=()=>{r.addLane({...wr,id:Re(),children:[],data:{...Wr(o),shouldMarkItemsComplete:i}}),s(""),a(!1),e()};return g("div",{ref:l,className:$("lane-form-wrapper")},g("div",{className:$("lane-input-wrapper")},g(Er,{ref:u,className:$("lane-input"),onChange:d=>s(d.target.value),onEnter:d=>{Xn(d,n)||(d.preventDefault(),c())},onSubmit:()=>{c()},onEscape:t,value:o})),g("div",{className:$("checkbox-wrapper")},g("div",{className:$("checkbox-label")},B("Mark cards in this list as complete")),g("div",{onClick:()=>a(!i),className:`checkbox-container ${i?"is-enabled":""}`})),g("div",{className:$("lane-input-actions")},g("button",{className:$("lane-action-add"),onClick:c},B("Add list")),g("button",{className:$("lane-action-cancel"),onClick:t},B("Cancel"))))}var jC=[Ge.Item,Ge.Lane],qC=[Ge.Lane],Yb=({view:e,stateManager:t})=>{let r=t.useState(),n=Fb(),i=F.useRef(null),a=F.useRef(null),[o,s]=F.useState(""),[u,l]=F.useState(!1),[c,d]=F.useState(""),[f,p]=F.useState((r==null?void 0:r.children.length)===0),m=t.file.path,y=t.useSetting("max-archive-size"),b=F.useCallback(()=>{(r==null?void 0:r.children.length)>0&&p(!1)},[r==null?void 0:r.children.length]);F.useEffect(()=>{(r==null?void 0:r.children.length)===0&&!t.hasError()&&p(!0)},[r==null?void 0:r.children.length,t]);let x=F.useCallback(()=>{var O;(O=i.current)==null||O.win.setTimeout(()=>{var z;let W=(z=i.current)==null?void 0:z.getElementsByClassName($("board"));(W==null?void 0:W.length)&&Cs([W[0].scrollWidth,0],{elementToScroll:W[0],speed:300,minDuration:150,easing:ee=>ee===1?1:1-Math.pow(2,-10*ee)})})},[]);F.useEffect(()=>{let O=z=>{z==="editor:open-search"&&l(ee=>!ee)},W=()=>{p(!0)};return e.emitter.on("hotkey",O),e.emitter.on("showLaneForm",W),()=>{e.emitter.off("hotkey",O),e.emitter.off("showLaneForm",W)}},[e]),F.useEffect(()=>{var O;u&&((O=a.current)==null||O.focus())},[u]),F.useEffect(()=>{let O=e.getWindow(),W=o.trim(),z;return W?z=O.setTimeout(()=>{d(W)},250):d(""),()=>{O.clearTimeout(z)}},[o,e]),F.useEffect(()=>{y===void 0||y===-1||typeof y=="number"&&(r==null?void 0:r.data.archive.length)>y&&t.setState(O=>(0,jb.default)(O,{data:{archive:{$set:O.data.archive.slice(y*-1)}}}))},[r==null?void 0:r.data.archive.length,y]);let D=F.useMemo(()=>Os(t),[t]),C=F.useCallback(O=>{let W=O.target;W.tagName==="A"&&W.hasClass("internal-link")&&e.app.workspace.trigger("hover-link",{event:O,source:gn,hoverParent:e,targetEl:W,linktext:W.getAttr("href"),sourcePath:e.file.path})},[e]),A=F.useCallback(async O=>{if(O.type==="auxclick"||O.button===2)return;let W=O.target,z=W.tagName==="A"?W:W.closest("a");if(!!z){if(z.hasClass("file-link")){O.preventDefault();let ee=z.getAttribute("href"),Z=Ur(ee),le=typeof ee=="string"&&e.app.metadataCache.getFirstLinkpathDest(Z.root,e.file.path);if(!le)return;t.app.openWithDefaultApp(le.path);return}if(z.hasClass("internal-link")){O.preventDefault();let ee=z.getAttr("href"),Z=O.button===1||O.ctrlKey||O.metaKey;if(z.hasClass("is-unresolved")&&(0,Hs.appHasDailyNotesPluginLoaded)()){let X=t.getSetting("date-format"),G=(0,qb.moment)(ee,X,!0);if(G.isValid()){try{let re=await(0,Hs.createDailyNote)(G);await(Z?app.workspace.getLeaf(!0):app.workspace.getLeaf(!1)).openFile(re,{active:!0})}catch(re){console.error(re),t.setError(re)}return}}t.app.workspace.openLinkText(ee,m,Z);return}if(z.hasClass("tag")){O.preventDefault(),t.app.internalPlugins.getPluginById("global-search").instance.openGlobalSearch(`tag:${z.getAttr("href")}`);return}z.hasClass("external-link")&&(O.preventDefault(),window.open(z.getAttr("href"),"_blank"))}},[t,m]),N=F.useMemo(()=>({view:e,stateManager:t,boardModifiers:D,filePath:m}),[e,t,D,m]),T=iv(t);return r==null?g("div",{className:$("loading")},g("div",{className:"sk-pulse"})):r.data.errors.length>0?g("div",null,g("div",null,"Error:"),r.data.errors.map((O,W)=>g("div",{key:W},g("div",null,O.description),g("pre",null,O.stack)))):g(Rs,{id:e.id},g(Ve.Provider,{value:N},g(po.Provider,{value:c?c.toLocaleLowerCase():null},g("div",{ref:i,className:mt([Nl,{"something-is-dragging":n}]),onMouseOver:C,onPointerDown:A,onClick:A,onAuxClick:A,...T},(f||r.children.length===0)&&g(zb,{onNewLane:x,closeLaneForm:b}),u&&g("div",{className:$("search-wrapper")},g("input",{ref:a,value:o,onChange:O=>{s(O.target.value)},onKeyDown:O=>{O.key==="Escape"&&(s(""),d(""),O.target.blur(),l(!1))},type:"text",className:$("filter-input"),placeholder:B("Search...")}),g("button",{className:$("search-cancel-button"),onClick:()=>{s(""),d(""),l(!1)},"aria-label":B("Cancel")},g(Kt,{name:"cross"}))),g(Ms,{id:e.id,className:mt([$("board"),$("horizontal"),{"is-adding-lane":f}]),triggerTypes:jC},g("div",null,g(Ii,{axis:"horizontal"},g(Lb,{lanes:r.children}),g(Ai,{className:$("lane-placeholder"),accepts:qC,index:r.children.length}))))))))};h();var xw=ge(xt()),$e=ge(require("obsidian"));h();var Gb=ge(Jb()),Ks=ge(xt()),kr=ge(require("obsidian"));var $s="@",Us="@@";function YC(e){let t=[];return kr.Vault.recurseChildren(e.vault.getRoot(),r=>{r instanceof kr.TFolder&&t.push({value:r.path,label:r.path,selected:!1,disabled:!1})}),t}function JC(e,t){let r=[],n=t?e.vault.getAbstractFileByPath(t):null;return(!n||!(n instanceof kr.TFolder))&&(n=e.vault.getRoot()),kr.Vault.recurseChildren(n,i=>{i instanceof kr.TFile&&r.push({value:i.path,label:i.basename,selected:!1,disabled:!1})}),r}function Qb(e){let{templateFolder:t,templatesEnabled:r,templaterPlugin:n}=Rl(e),i=JC(e,t),a=YC(e),o="";return!r&&!n&&(o=B("Note: No template plugins are currently enabled.")),{templateFiles:i,vaultFolders:a,templateWarning:o}}function _d({choices:e,key:t,warningText:r,local:n,placeHolderStr:i,manager:a}){return o=>{o.controlEl.createEl("select",{},s=>{s.win.setTimeout(()=>{let u=e,[l,c]=a.getSetting(t,n);if(c){let p=e.findIndex(y=>y.value===c),m=e[p];u=(0,Ks.default)(u,{$splice:[[p,1]],$unshift:[(0,Ks.default)(m,{placeholder:{$set:!0},value:{$set:""},label:{$apply:y=>`${y} (${B("default")})`}})]})}else u=(0,Ks.default)(u,{$unshift:[{placeholder:!0,value:"",label:i,selected:!1,disabled:!1}]});let d=new Gb.default(s,{placeholder:!0,position:"bottom",searchPlaceholderValue:B("Search..."),searchEnabled:u.length>10,choices:u}).setChoiceByValue("");l&&typeof l=="string"&&d.setChoiceByValue(l);let f=p=>{let m=p.detail.value;m?a.applySettingsUpdate({[t]:{$set:m}}):a.applySettingsUpdate({$unset:[t]})};s.addEventListener("change",f),a.cleanupFns.push(()=>{d.destroy(),s.removeEventListener("change",f)})}),r&&o.descEl.createDiv({},u=>{u.createEl("strong",{text:r})})})}}h();var Vr=ge(xt());function Xb({isStatic:e,itemIndex:t,item:r,toggleShouldHideLabel:n,toggleContainsMarkdown:i,deleteKey:a,updateKey:o,updateLabel:s}){let u=F.useRef(null),l=F.useRef(null),c=F.useRef(null);Ti(l,c);let d=g("div",{className:$("setting-controls-wrapper")},g("div",{className:$("setting-input-wrapper")},g("div",null,g("div",{className:$("setting-item-label")},B("Metadata key")),g("input",{type:"text",value:r.data.metadataKey,onChange:f=>o(f.target.value)})),g("div",null,g("div",{className:$("setting-item-label")},B("Display label")),g("input",{type:"text",value:r.data.label,onChange:f=>s(f.target.value)}))),g("div",{className:$("setting-toggle-wrapper")},g("div",null,g("div",{className:`checkbox-container ${r.data.shouldHideLabel?"is-enabled":""}`,onClick:n,"aria-label":B("Hide label")}),g("div",{className:$("setting-item-label")},B("Hide label"))),g("div",null,g("div",{className:`checkbox-container ${r.data.containsMarkdown?"is-enabled":""}`,onClick:i,"aria-label":B("Field contains markdown")}),g("div",{className:$("setting-item-label")},B("Field contains markdown")))));return g("div",{ref:l,className:$("setting-item-wrapper")},g("div",{ref:u,className:$("setting-item")},e?d:g(hr,{elementRef:u,measureRef:l,id:r.id,index:t,data:r},d),g("div",{className:$("setting-button-wrapper")},g("div",{onClick:a,"aria-label":B("Delete")},g(Kt,{name:"cross"})),g("div",{className:"mobile-option-setting-drag-icon","aria-label":B("Drag to rearrange"),ref:c},g(Kt,{name:"three-horizontal-bars"})))))}function GC({onChange:e,inputValue:t,keys:r,setKeys:n}){let i=a=>{e(a),n(a)};return{updateKey:a=>o=>{i((0,Vr.default)(r,{[a]:{data:{metadataKey:{$set:o}}}}))},updateLabel:a=>o=>{i((0,Vr.default)(r,{[a]:{data:{label:{$set:o}}}}))},toggleShouldHideLabel:a=>()=>{i((0,Vr.default)(r,{[a]:{data:{$toggle:["shouldHideLabel"]}}}))},toggleContainsMarkdown:a=>()=>{i((0,Vr.default)(r,{[a]:{data:{$toggle:["containsMarkdown"]}}}))},deleteKey:a=>()=>{i((0,Vr.default)(r,{$splice:[[a,1]]}))},newKey:()=>{i((0,Vr.default)(r,{$push:[{...ds,id:Re(),data:{metadataKey:t,label:"",shouldHideLabel:!1,containsMarkdown:!1}}]}))},moveKey:(a,o)=>{let s=a.getPath(),u=o.getPath(),l=s[s.length-1],c=u[u.length-1];if(l===c)return;let d=r.slice(),[f]=d.splice(l,1);d.splice(c,0,f),i(d)}}}var QC=[Ge.MetadataSetting];function XC({keys:e,portalContainer:t}){return F.createPortal(g(Ns,null,(r,n)=>{let a=r.getPath()[0],o=e[a];return g("div",{className:$("drag-container"),style:n},g(Xb,{item:o,itemIndex:a,updateKey:si,updateLabel:si,toggleShouldHideLabel:si,toggleContainsMarkdown:si,deleteKey:si,isStatic:!0}))}),t)}function ZC({scrollEl:e}){let t=F.useContext(kt);return F.useEffect(()=>{let r=0,n=()=>{e.win.clearTimeout(r),r=e.win.setTimeout(()=>{t.hitboxEntities.forEach(i=>{i.recalcInitial()})},100)};return e.addEventListener("scroll",n,{passive:!0,capture:!1}),()=>{e.removeEventListener("scroll",n)}},[e,t]),null}function e1(e){let[t,r]=F.useState(e.dataKeys),[n,i]=F.useState(""),{getShouldIMEBlockAction:a,...o}=go(),s=Ze(e.scrollEl),{updateKey:u,updateLabel:l,toggleShouldHideLabel:c,toggleContainsMarkdown:d,deleteKey:f,newKey:p,moveKey:m}=GC({onChange:e.onChange,inputValue:n,keys:t,setKeys:r,win:s});return g(S,null,g(Fs,{win:s,onDrop:m},g(ZC,{scrollEl:e.scrollEl}),g(Rs,null,g(Ii,{axis:"vertical"},t.map((y,b)=>g(Xb,{key:y.id,item:y,itemIndex:b,updateKey:u(b),updateLabel:l(b),toggleShouldHideLabel:c(b),toggleContainsMarkdown:d(b),deleteKey:f(b)})),g(Ai,{accepts:QC,index:t.length}))),g(XC,{keys:t,portalContainer:e.portalContainer})),g("div",{className:$("setting-key-input-wrapper")},g("input",{placeholder:B("Metadata key"),type:"text",value:n,onChange:y=>i(y.target.value),onKeyDown:y=>{if(!a()){if(y.key==="Enter"){p(),i("");let b=y.target;b.win.setTimeout(()=>{b.scrollIntoView()});return}y.key==="Escape"&&(i(""),y.target.blur())}},...o}),g("button",{onClick:y=>{p(),i("");let b=y.target;b.win.setTimeout(()=>{b.scrollIntoView()})}},B("Add key"))))}function Zb(e,t,r,n){F.render(g(e1,{dataKeys:r,scrollEl:t,onChange:n,portalContainer:ai(e)}),e)}function ew(e){F.unmountComponentAtNode(e)}h();h();var t1={grad:.9,turn:360,rad:360/(2*Math.PI)},er=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},_t=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},vn=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e>t?e:t},tw=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},nw=function(e){return{r:vn(e.r,0,255),g:vn(e.g,0,255),b:vn(e.b,0,255),a:vn(e.a)}},Cd=function(e){return{r:_t(e.r),g:_t(e.g),b:_t(e.b),a:_t(e.a,3)}},n1=/^#([0-9a-f]{3,8})$/i,Ws=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},rw=function(e){var t=e.r,r=e.g,n=e.b,i=e.a,a=Math.max(t,r,n),o=a-Math.min(t,r,n),s=o?a===t?(r-n)/o:a===r?2+(n-t)/o:4+(t-r)/o:0;return{h:60*(s<0?s+6:s),s:a?o/a*100:0,v:a/255*100,a:i}},iw=function(e){var t=e.h,r=e.s,n=e.v,i=e.a;t=t/360*6,r/=100,n/=100;var a=Math.floor(t),o=n*(1-r),s=n*(1-(t-a)*r),u=n*(1-(1-t+a)*r),l=a%6;return{r:255*[n,s,o,o,u,n][l],g:255*[u,n,n,s,o,o][l],b:255*[o,o,u,n,n,s][l],a:i}},aw=function(e){return{h:tw(e.h),s:vn(e.s,0,100),l:vn(e.l,0,100),a:vn(e.a)}},ow=function(e){return{h:_t(e.h),s:_t(e.s),l:_t(e.l),a:_t(e.a,3)}},sw=function(e){return iw((r=(t=e).s,{h:t.h,s:(r*=((n=t.l)<50?n:100-n)/100)>0?2*r/(n+r)*100:0,v:n+r,a:t.a}));var t,r,n},Ra=function(e){return{h:(t=rw(e)).h,s:(i=(200-(r=t.s))*(n=t.v)/100)>0&&i<200?r*n/100/(i<=100?i:200-i)*100:0,l:i/2,a:t.a};var t,r,n,i},r1=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,i1=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,a1=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,o1=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,lw={string:[[function(e){var t=n1.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?_t(parseInt(e[3]+e[3],16)/255,2):1}:e.length===6||e.length===8?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:e.length===8?_t(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=a1.exec(e)||o1.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:nw({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(e){var t=r1.exec(e)||i1.exec(e);if(!t)return null;var r,n,i=aw({h:(r=t[1],n=t[2],n===void 0&&(n="deg"),Number(r)*(t1[n]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return sw(i)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,n=e.b,i=e.a,a=i===void 0?1:i;return er(t)&&er(r)&&er(n)?nw({r:Number(t),g:Number(r),b:Number(n),a:Number(a)}):null},"rgb"],[function(e){var t=e.h,r=e.s,n=e.l,i=e.a,a=i===void 0?1:i;if(!er(t)||!er(r)||!er(n))return null;var o=aw({h:Number(t),s:Number(r),l:Number(n),a:Number(a)});return sw(o)},"hsl"],[function(e){var t=e.h,r=e.s,n=e.v,i=e.a,a=i===void 0?1:i;if(!er(t)||!er(r)||!er(n))return null;var o=function(s){return{h:tw(s.h),s:vn(s.s,0,100),v:vn(s.v,0,100),a:vn(s.a)}}({h:Number(t),s:Number(r),v:Number(n),a:Number(a)});return iw(o)},"hsv"]]},cw=function(e,t){for(var r=0;r=.5},e.prototype.toHex=function(){return t=Cd(this.rgba),r=t.r,n=t.g,i=t.b,o=(a=t.a)<1?Ws(_t(255*a)):"","#"+Ws(r)+Ws(n)+Ws(i)+o;var t,r,n,i,a,o},e.prototype.toRgb=function(){return Cd(this.rgba)},e.prototype.toRgbString=function(){return t=Cd(this.rgba),r=t.r,n=t.g,i=t.b,(a=t.a)<1?"rgba("+r+", "+n+", "+i+", "+a+")":"rgb("+r+", "+n+", "+i+")";var t,r,n,i,a},e.prototype.toHsl=function(){return ow(Ra(this.rgba))},e.prototype.toHslString=function(){return t=ow(Ra(this.rgba)),r=t.h,n=t.s,i=t.l,(a=t.a)<1?"hsla("+r+", "+n+"%, "+i+"%, "+a+")":"hsl("+r+", "+n+"%, "+i+"%)";var t,r,n,i,a},e.prototype.toHsv=function(){return t=rw(this.rgba),{h:_t(t.h),s:_t(t.s),v:_t(t.v),a:_t(t.a,3)};var t},e.prototype.invert=function(){return In({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},e.prototype.saturate=function(t){return t===void 0&&(t=.1),In(Td(this.rgba,t))},e.prototype.desaturate=function(t){return t===void 0&&(t=.1),In(Td(this.rgba,-t))},e.prototype.grayscale=function(){return In(Td(this.rgba,-1))},e.prototype.lighten=function(t){return t===void 0&&(t=.1),In(uw(this.rgba,t))},e.prototype.darken=function(t){return t===void 0&&(t=.1),In(uw(this.rgba,-t))},e.prototype.rotate=function(t){return t===void 0&&(t=15),this.hue(this.hue()+t)},e.prototype.alpha=function(t){return typeof t=="number"?In({r:(r=this.rgba).r,g:r.g,b:r.b,a:t}):_t(this.rgba.a,3);var r},e.prototype.hue=function(t){var r=Ra(this.rgba);return typeof t=="number"?In({h:t,s:r.s,l:r.l,a:r.a}):_t(r.h)},e.prototype.isEqual=function(t){return this.toHex()===In(t).toHex()},e}(),In=function(e){return e instanceof dw?e:new dw(e)};var js=ge(xt());h();function Vs(){return(Vs=Object.assign||function(e){for(var t=1;t=0||(i[r]=e[r]);return i}function Md(e){var t=Xt(e),r=Xt(function(n){t.current&&t.current(n)});return t.current=e,r.current}var Pi=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e0:b.buttons>0)&&i.current?a(pw(i.current,b,s.current)):y(!1)},m=function(){return y(!1)};function y(b){var x=u.current,D=Id(i.current),C=b?D.addEventListener:D.removeEventListener;C(x?"touchmove":"mousemove",p),C(x?"touchend":"mouseup",m)}return[function(b){var x=b.nativeEvent,D=i.current;if(D&&(hw(x),!function(A,N){return N&&!Ha(A)}(x,u.current)&&D)){if(Ha(x)){u.current=!0;var C=x.changedTouches||[];C.length&&(s.current=C[0].identifier)}D.focus(),a(pw(D,x,s.current)),y(!0)}},function(b){var x=b.which||b.keyCode;x<37||x>40||(b.preventDefault(),o({left:x===39?.05:x===37?-.05:0,top:x===40?.05:x===38?-.05:0}))},y]},[o,a]),c=l[0],d=l[1],f=l[2];return Sn(function(){return f},[f]),it.createElement("div",Vs({},n,{onTouchStart:c,onMouseDown:c,className:"react-colorful__interactive",ref:i,onKeyDown:d,tabIndex:0,role:"slider"}))}),zs=function(e){return e.filter(Boolean).join(" ")},Ld=function(e){var t=e.color,r=e.left,n=e.top,i=n===void 0?.5:n,a=zs(["react-colorful__pointer",e.className]);return it.createElement("div",{className:a,style:{top:100*i+"%",left:100*r+"%"}},it.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}}))},Yt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r},t$={grad:.9,turn:360,rad:360/(2*Math.PI)};var mw=function(e){var t=e.s,r=e.v,n=e.a,i=(200-t)*r/100;return{h:Yt(e.h),s:Yt(i>0&&i<200?t*r/100/(i<=100?i:200-i)*100:0),l:Yt(i/2),a:Yt(n,2)}},Pd=function(e){var t=mw(e);return"hsl("+t.h+", "+t.s+"%, "+t.l+"%)"},Fd=function(e){var t=mw(e);return"hsla("+t.h+", "+t.s+"%, "+t.l+"%, "+t.a+")"},l1=function(e){var t=e.h,r=e.s,n=e.v,i=e.a;t=t/360*6,r/=100,n/=100;var a=Math.floor(t),o=n*(1-r),s=n*(1-(t-a)*r),u=n*(1-(1-t+a)*r),l=a%6;return{r:Yt(255*[n,s,o,o,u,n][l]),g:Yt(255*[u,n,n,s,o,o][l]),b:Yt(255*[o,o,u,n,n,s][l]),a:Yt(i,2)}};var c1=function(e){var t=/rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return t?u1({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):{h:0,s:0,v:0,a:1}};var u1=function(e){var t=e.r,r=e.g,n=e.b,i=e.a,a=Math.max(t,r,n),o=a-Math.min(t,r,n),s=o?a===t?(r-n)/o:a===r?2+(n-t)/o:4+(t-r)/o:0;return{h:Yt(60*(s<0?s+6:s)),s:Yt(a?o/a*100:0),v:Yt(a/255*100),a:i}};var d1=it.memo(function(e){var t=e.hue,r=e.onChange,n=zs(["react-colorful__hue",e.className]);return it.createElement("div",{className:n},it.createElement(Ad,{onMove:function(i){r({h:360*i.left})},onKey:function(i){r({h:Pi(t+360*i.left,0,360)})},"aria-label":"Hue","aria-valuenow":Yt(t),"aria-valuemax":"360","aria-valuemin":"0"},it.createElement(Ld,{className:"react-colorful__hue-pointer",left:t/360,color:Pd({h:t,s:100,v:100,a:1})})))}),f1=it.memo(function(e){var t=e.hsva,r=e.onChange,n={backgroundColor:Pd({h:t.h,s:100,v:100,a:1})};return it.createElement("div",{className:"react-colorful__saturation",style:n},it.createElement(Ad,{onMove:function(i){r({s:100*i.left,v:100-100*i.top})},onKey:function(i){r({s:Pi(t.s+100*i.left,0,100),v:Pi(t.v-100*i.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+Yt(t.s)+"%, Brightness "+Yt(t.v)+"%"},it.createElement(Ld,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:Pd(t)})))}),p1=function(e,t){if(e===t)return!0;for(var r in e)if(e[r]!==t[r])return!1;return!0},h1=function(e,t){return e.replace(/\s/g,"")===t.replace(/\s/g,"")};function m1(e,t,r){var n=Md(r),i=sr(function(){return e.toHsva(t)}),a=i[0],o=i[1],s=Xt({color:t,hsva:a});Sn(function(){if(!e.equal(t,s.current.color)){var l=e.toHsva(t);s.current={hsva:l,color:t},o(l)}},[t,e]),Sn(function(){var l;p1(a,s.current.hsva)||e.equal(l=e.fromHsva(a),s.current.color)||(s.current={hsva:a,color:l},n(l))},[a,e,n]);var u=cr(function(l){o(function(c){return Object.assign({},c,l)})},[]);return[a,u]}var g1,v1=typeof window!="undefined"?Ir:Sn,y1=function(){return g1||(typeof __webpack_nonce__!="undefined"?__webpack_nonce__:void 0)};var gw=new Map,b1=function(e){v1(function(){var t=e.current?e.current.ownerDocument:document;if(t!==void 0&&!gw.has(t)){var r=t.createElement("style");r.innerHTML=`.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`,gw.set(t,r);var n=y1();n&&r.setAttribute("nonce",n),t.head.appendChild(r)}},[])};var w1=function(e){var t=e.className,r=e.hsva,n=e.onChange,i={backgroundImage:"linear-gradient(90deg, "+Fd(Object.assign({},r,{a:0}))+", "+Fd(Object.assign({},r,{a:1}))+")"},a=zs(["react-colorful__alpha",t]),o=Yt(100*r.a);return it.createElement("div",{className:a},it.createElement("div",{className:"react-colorful__alpha-gradient",style:i}),it.createElement(Ad,{onMove:function(s){n({a:s.left})},onKey:function(s){n({a:Pi(r.a+s.left)})},"aria-label":"Alpha","aria-valuetext":o+"%","aria-valuenow":o,"aria-valuemin":"0","aria-valuemax":"100"},it.createElement(Ld,{className:"react-colorful__alpha-pointer",left:r.a,color:Fd(r)})))},E1=function(e){var t=e.className,r=e.colorModel,n=e.color,i=n===void 0?r.defaultColor:n,a=e.onChange,o=fw(e,["className","colorModel","color","onChange"]),s=Xt(null);b1(s);var u=m1(r,i,a),l=u[0],c=u[1],d=zs(["react-colorful",t]);return it.createElement("div",Vs({},o,{ref:s,className:d}),it.createElement(f1,{hsva:l,onChange:c}),it.createElement(d1,{hue:l.h,onChange:c}),it.createElement(w1,{hsva:l,onChange:c,className:"react-colorful__last-control"}))};var x1={defaultColor:"rgba(0, 0, 0, 1)",toHsva:c1,fromHsva:function(e){var t=l1(e);return"rgba("+t.r+", "+t.g+", "+t.b+", "+t.a+")"},equal:h1},vw=function(e){return it.createElement(E1,Vs({},e,{colorModel:x1}))};function yw(e){let t=In(e);if(!t.isValid())return null;let r=t.toRgb();return{rgba:`rgba(${r.r}, ${r.g}, ${r.b}, ${r.a})`,hexa:t.toHex()}}function bw({color:e,setColor:t,defaultColor:r}){let[n,i]=F.useState(e||r),[a,o]=F.useState(e||r),[s,u]=F.useState(!1),l=F.useCallback(d=>{let f=yw(d||r);f&&(o(f.hexa),i(f.rgba),t(f.rgba))},[t]);F.useEffect(()=>{if(!e||!r)return;let d=yw(e||r);d&&(i(d.rgba),o(d.hexa))},[]);let c=Li(()=>{u(!1)});return g("div",{ref:c,className:$("color-picker-wrapper")},s&&g("div",{className:$("color-picker")},g(vw,{color:n,onChange:l})),g("input",{type:"text",value:a,onChange:d=>l(d.target.value),onFocus:()=>{u(!0)}}))}function k1({tagColorKey:e,deleteKey:t,updateKey:r,defaultColors:n}){return g("div",{className:$("setting-item-wrapper")},g("div",{className:$("setting-item")},g("div",{className:`${$("setting-controls-wrapper")} ${$("tag-color-input")}`},g("div",{className:$("setting-input-wrapper")},g("div",null,g("div",{className:$("setting-item-label")},B("Tag")),g("input",{type:"text",placeholder:"#tag",value:e.tagKey,onChange:i=>{r(i.currentTarget.value,e.color,e.backgroundColor)}})),g("div",null,g("div",{className:$("setting-item-label")},B("Background color")),g(bw,{color:e.backgroundColor,setColor:i=>{r(e.tagKey,e.color,i)},defaultColor:n.backgroundColor})),g("div",null,g("div",{className:$("setting-item-label")},B("Text color")),g(bw,{color:e.color,setColor:i=>{r(e.tagKey,i,e.backgroundColor)},defaultColor:n.color}))),g("div",{className:$("setting-toggle-wrapper")},g("div",null,g("div",{className:$("item-tags")},g("a",{className:`tag ${$("item-tag")}`},"#tag1"),g("a",{className:`tag ${$("item-tag")}`,style:{"--tag-color":e.color,"--tag-background-color":e.backgroundColor}},e.tagKey),g("a",{className:`tag ${$("item-tag")}`},"#tag2"))))),g("div",{className:$("setting-button-wrapper")},g("div",{onClick:t,"aria-label":B("Delete")},g(Kt,{name:"cross"})))))}function S1({dataKeys:e,onChange:t}){let[r,n]=F.useState(e),i=F.useMemo(()=>{let l=createDiv($("item-tags")),c=l.createEl("a",$("item-tag"));l.style.position="absolute",l.style.visibility="hidden",activeDocument.body.append(l);let d=activeWindow.getComputedStyle(c),f=d.getPropertyValue("color").trim(),p=d.getPropertyValue("background-color").trim();return l.remove(),{color:f,backgroundColor:p}},[]),a=l=>{t(l),n(l)},o=()=>{a((0,js.default)(r,{$push:[{...fs,id:Re(),data:{tagKey:"",color:"",backgroundColor:""}}]}))},s=l=>{a((0,js.default)(r,{$splice:[[l,1]]}))},u=l=>(c,d,f)=>{a((0,js.default)(r,{[l]:{data:{tagKey:{$set:c},color:{$set:d},backgroundColor:{$set:f}}}}))};return g("div",{className:$("tag-color-input-wrapper")},g("div",{className:"setting-item-info"},g("div",{className:"setting-item-name"},B("Display tag colors")),g("div",{className:"setting-item-description"},B("Set colors for the tags displayed below the card title."))),r.map((l,c)=>g(k1,{key:l.id,tagColorKey:l.data,deleteKey:()=>s(c),updateKey:u(c),defaultColors:i})),g("button",{className:$("add-tag-color-button"),onClick:()=>{o()}},B("Add tag color")))}function ww(e,t,r){F.render(g(S1,{dataKeys:t,onChange:r,portalContainer:ai(e)}),e)}function Ew(e){F.unmountComponentAtNode(e)}var kw=/^\d+(?:\.\d+)?$/,Sw={[gn]:!0,"date-display-format":!0,"date-format":!0,"date-picker-week-start":!0,"date-time-display-format":!0,"date-trigger":!0,"hide-card-count":!0,"hide-date-display":!0,"hide-date-in-title":!0,"hide-tags-display":!0,"hide-tags-in-title":!0,"lane-width":!0,"link-date-to-daily-note":!0,"max-archive-size":!0,"metadata-keys":!0,"new-card-insertion-method":!0,"new-line-trigger":!0,"new-note-folder":!0,"new-note-template":!0,"prepend-archive-date":!0,"prepend-archive-format":!0,"prepend-archive-separator":!0,"show-checkboxes":!0,"show-relative-date":!0,"time-format":!0,"time-trigger":!0,"show-add-list":!0,"show-archive-all":!0,"show-view-as-markdown":!0,"show-board-settings":!0,"show-search":!0,"tag-colors":!0},Nd=class{constructor(t,r,n){this.cleanupFns=[];this.applyDebounceTimer=0;this.app=t.app,this.plugin=t,this.config=r,this.settings=n}applySettingsUpdate(t){this.win.clearTimeout(this.applyDebounceTimer),this.applyDebounceTimer=this.win.setTimeout(()=>{this.settings=(0,xw.default)(this.settings,t),this.config.onSettingsChange(this.settings)},200)}getSetting(t,r){return r?[this.settings[t],this.plugin.settings[t]]:[this.settings[t],null]}constructUI(t,r,n){this.win=t.win;let{templateFiles:i,vaultFolders:a,templateWarning:o}=Qb(this.app);t.createEl("h3",{text:r}),n?t.createEl("p",{text:B("These settings will take precedence over the default Kanban board settings.")}):t.createEl("p",{text:B("Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.")}),new $e.Setting(t).setName(B("New line trigger")).setDesc(B("Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lists.")).addDropdown(s=>{s.addOption("shift-enter",B("Shift + Enter")),s.addOption("enter",B("Enter"));let[u,l]=this.getSetting("new-line-trigger",n);s.setValue(u||l||"shift-enter"),s.onChange(c=>{this.applySettingsUpdate({"new-line-trigger":{$set:c}})})}),new $e.Setting(t).setName(B("Prepend / append new cards")).setDesc(B("This setting controls whether new cards are added to the beginning or end of the list.")).addDropdown(s=>{s.addOption("prepend",B("Prepend")),s.addOption("prepend-compact",B("Prepend (compact)")),s.addOption("append",B("Append"));let[u,l]=this.getSetting("new-card-insertion-method",n);s.setValue(u||l||"append"),s.onChange(c=>{this.applySettingsUpdate({"new-card-insertion-method":{$set:c}})})}),new $e.Setting(t).setName(B("Note template")).setDesc(B("This template will be used when creating new notes from Kanban cards.")).then(_d({choices:i,key:"new-note-template",warningText:o,local:n,placeHolderStr:B("No template"),manager:this})),new $e.Setting(t).setName(B("Note folder")).setDesc(B("Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.")).then(_d({choices:a,key:"new-note-folder",local:n,placeHolderStr:B("Default folder"),manager:this})),new $e.Setting(t).setName(B("Hide card counts in list titles")).setDesc(B("When toggled, card counts are hidden from the list title")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-card-count",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-card-count":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-card-count",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-card-count"]})})})}),new $e.Setting(t).setName(B("List width")).setDesc(B("Enter a number to set the list width in pixels.")).addText(s=>{let[u,l]=this.getSetting("lane-width",n);s.inputEl.setAttr("type","number"),s.inputEl.placeholder=`${l||"272"} (default)`,s.inputEl.value=u?u.toString():"",s.onChange(c=>{if(c&&kw.test(c)){s.inputEl.removeClass("error"),this.applySettingsUpdate({"lane-width":{$set:parseInt(c)}});return}c&&s.inputEl.addClass("error"),this.applySettingsUpdate({$unset:["lane-width"]})})}),new $e.Setting(t).setName(B("Maximum number of archived cards")).setDesc(B("Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.")).addText(s=>{let[u,l]=this.getSetting("max-archive-size",n);s.inputEl.setAttr("type","number"),s.inputEl.placeholder=`${l||"-1"} (default)`,s.inputEl.value=u?u.toString():"",s.onChange(c=>{if(c&&kw.test(c)){s.inputEl.removeClass("error"),this.applySettingsUpdate({"max-archive-size":{$set:parseInt(c)}});return}c&&s.inputEl.addClass("error"),this.applySettingsUpdate({$unset:["max-archive-size"]})})}),new $e.Setting(t).setName(B("Display card checkbox")).setDesc(B("When toggled, a checkbox will be displayed with each card")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-checkboxes",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"show-checkboxes":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-checkboxes",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-checkboxes"]})})})}),new $e.Setting(t).setName(B("Hide tags in card titles")).setDesc(B("When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-tags-in-title",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-tags-in-title":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-tags-in-title",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-tags-in-title"]})})})}),new $e.Setting(t).setName(B("Hide card display tags")).setDesc(B("When toggled, tags will not be displayed below the card title.")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-tags-display",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-tags-display":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-tags-display",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-tags-display"]})})})}),new $e.Setting(t).setName(B("Display tag colors")).setDesc(B("Set colors for the tags displayed below the card title.")).then(s=>{let[u]=this.getSetting("tag-colors",n),l=(u||[]).map(c=>({...fs,id:Re(),data:c}));ww(s.settingEl,l,c=>this.applySettingsUpdate({"tag-colors":{$set:c.map(d=>d.data)}})),this.cleanupFns.push(()=>{s.settingEl&&Ew(s.settingEl)})}),t.createEl("h4",{text:B("Board Header Buttons")}),new $e.Setting(t).setName(B("Add a list")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-add-list",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-add-list":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-add-list",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-add-list"]})})})}),new $e.Setting(t).setName(B("Archive completed cards")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-archive-all",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-archive-all":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-archive-all",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-archive-all"]})})})}),new $e.Setting(t).setName(B("Open as markdown")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-view-as-markdown",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-view-as-markdown":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-view-as-markdown",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-view-as-markdown"]})})})}),new $e.Setting(t).setName(B("Open board settings")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-board-settings",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-board-settings":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-board-settings",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-board-settings"]})})})}),new $e.Setting(t).setName(B("Search...")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-search",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-search":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-search",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-search"]})})})}),t.createEl("h4",{text:B("Date & Time")}),new $e.Setting(t).setName(B("Date trigger")).setDesc(B("When this is typed, it will trigger the date selector")).addText(s=>{let[u,l]=this.getSetting("date-trigger",n);(u||l)&&s.setValue(u||l),s.setPlaceholder(l||$s),s.onChange(c=>{c?this.applySettingsUpdate({"date-trigger":{$set:c}}):this.applySettingsUpdate({$unset:["date-trigger"]})})}),new $e.Setting(t).setName(B("Time trigger")).setDesc(B("When this is typed, it will trigger the time selector")).addText(s=>{let[u,l]=this.getSetting("time-trigger",n);(u||l)&&s.setValue(u||l),s.setPlaceholder(l||Us),s.onChange(c=>{c?this.applySettingsUpdate({"time-trigger":{$set:c}}):this.applySettingsUpdate({$unset:["time-trigger"]})})}),new $e.Setting(t).setName(B("Date format")).then(s=>{s.addMomentFormat(u=>{s.descEl.appendChild(createFragment(f=>{f.appendText(B("This format will be used when saving dates in markdown.")),f.createEl("br"),f.appendText(B("For more syntax, refer to")+" "),f.createEl("a",{text:B("format reference"),href:"https://momentjs.com/docs/#/displaying/format/"},p=>{p.setAttr("target","_blank")}),f.createEl("br"),f.appendText(B("Your current syntax looks like this")+": "),u.setSampleEl(f.createEl("b",{cls:"u-pop"})),f.createEl("br")}));let[l,c]=this.getSetting("date-format",n),d=li(this.app);u.setPlaceholder(d),u.setDefaultFormat(d),(l||c)&&u.setValue(l||c),u.onChange(f=>{f?this.applySettingsUpdate({"date-format":{$set:f}}):this.applySettingsUpdate({$unset:["date-format"]})})})}),new $e.Setting(t).setName(B("Time format")).then(s=>{s.addMomentFormat(u=>{s.descEl.appendChild(createFragment(f=>{f.appendText(B("For more syntax, refer to")+" "),f.createEl("a",{text:B("format reference"),href:"https://momentjs.com/docs/#/displaying/format/"},p=>{p.setAttr("target","_blank")}),f.createEl("br"),f.appendText(B("Your current syntax looks like this")+": "),u.setSampleEl(f.createEl("b",{cls:"u-pop"})),f.createEl("br")}));let[l,c]=this.getSetting("time-format",n),d=ra(this.app);u.setPlaceholder(d),u.setDefaultFormat(d),(l||c)&&u.setValue(l||c),u.onChange(f=>{f?this.applySettingsUpdate({"time-format":{$set:f}}):this.applySettingsUpdate({$unset:["time-format"]})})})}),new $e.Setting(t).setName(B("Date display format")).then(s=>{s.addMomentFormat(u=>{s.descEl.appendChild(createFragment(f=>{f.appendText(B("This format will be used when displaying dates in Kanban cards.")),f.createEl("br"),f.appendText(B("For more syntax, refer to")+" "),f.createEl("a",{text:B("format reference"),href:"https://momentjs.com/docs/#/displaying/format/"},p=>{p.setAttr("target","_blank")}),f.createEl("br"),f.appendText(B("Your current syntax looks like this")+": "),u.setSampleEl(f.createEl("b",{cls:"u-pop"})),f.createEl("br")}));let[l,c]=this.getSetting("date-display-format",n),d=li(this.app);u.setPlaceholder(d),u.setDefaultFormat(d),(l||c)&&u.setValue(l||c),u.onChange(f=>{f?this.applySettingsUpdate({"date-display-format":{$set:f}}):this.applySettingsUpdate({$unset:["date-display-format"]})})})}),new $e.Setting(t).setName(B("Show relative date")).setDesc(B("When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-relative-date",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"show-relative-date":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-relative-date",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-relative-date"]})})})}),new $e.Setting(t).setName(B("Hide card display dates")).setDesc(B("When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-date-display",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-date-display":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-date-display",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-date-display"]})})})}),new $e.Setting(t).setName(B("Hide dates in card titles")).setDesc(B("When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-date-in-title",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-date-in-title":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-date-in-title",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-date-in-title"]})})})}),new $e.Setting(t).setName(B("Link dates to daily notes")).setDesc(B("When toggled, dates will link to daily notes. Eg. [[2021-04-26]]")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("link-date-to-daily-note",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"link-date-to-daily-note":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("link-date-to-daily-note",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["link-date-to-daily-note"]})})})}),new $e.Setting(t).setName(B("Add date and time to archived cards")).setDesc(B("When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("prepend-archive-date",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"prepend-archive-date":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("prepend-archive-date",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["prepend-archive-date"]})})})}),new $e.Setting(t).setName(B("Archive date/time separator")).setDesc(B("This will be used to separate the archived date/time from the title")).addText(s=>{let[u,l]=this.getSetting("prepend-archive-separator",n);s.inputEl.placeholder=l?`${l} (default)`:"",s.inputEl.value=u||"",s.onChange(c=>{if(c){this.applySettingsUpdate({"prepend-archive-separator":{$set:c}});return}this.applySettingsUpdate({$unset:["prepend-archive-separator"]})})}),new $e.Setting(t).setName(B("Archive date/time format")).then(s=>{s.addMomentFormat(u=>{s.descEl.appendChild(createFragment(D=>{D.appendText(B("For more syntax, refer to")+" "),D.createEl("a",{text:B("format reference"),href:"https://momentjs.com/docs/#/displaying/format/"},C=>{C.setAttr("target","_blank")}),D.createEl("br"),D.appendText(B("Your current syntax looks like this")+": "),u.setSampleEl(D.createEl("b",{cls:"u-pop"})),D.createEl("br")}));let[l,c]=this.getSetting("prepend-archive-format",n),[d,f]=this.getSetting("date-format",n),p=d||f||li(this.app),[m,y]=this.getSetting("time-format",n),b=m||y||ra(this.app),x=`${p} ${b}`;u.setPlaceholder(x),u.setDefaultFormat(x),(l||c)&&u.setValue(l||c),u.onChange(D=>{D?this.applySettingsUpdate({"prepend-archive-format":{$set:D}}):this.applySettingsUpdate({$unset:["prepend-archive-format"]})})})}),new $e.Setting(t).setName(B("Calendar: first day of week")).setDesc(B("Override which day is used as the start of the week")).addDropdown(s=>{s.addOption("",B("default")),s.addOption("0",B("Sunday")),s.addOption("1",B("Monday")),s.addOption("2",B("Tuesday")),s.addOption("3",B("Wednesday")),s.addOption("4",B("Thursday")),s.addOption("5",B("Friday")),s.addOption("6",B("Saturday"));let[u,l]=this.getSetting("date-picker-week-start",n);s.setValue((u==null?void 0:u.toString())||(l==null?void 0:l.toString())||""),s.onChange(c=>{c?this.applySettingsUpdate({"date-picker-week-start":{$set:Number(c)}}):this.applySettingsUpdate({$unset:["date-picker-week-start"]})})}),t.createEl("br"),t.createEl("h4",{text:B("Linked Page Metadata")}),t.createEl("p",{cls:$("metadata-setting-desc"),text:B("Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.")}),new $e.Setting(t).then(s=>{s.settingEl.addClass($("draggable-setting-container"));let[u]=this.getSetting("metadata-keys",n),l=(u||[]).map(c=>({...ds,id:Re(),data:c,win:Ze(t)}));Zb(s.settingEl,t,l,c=>this.applySettingsUpdate({"metadata-keys":{$set:c.map(d=>d.data)}})),this.cleanupFns.push(()=>{s.settingEl&&ew(s.settingEl)})})}cleanUp(){this.win=null,this.cleanupFns.forEach(t=>t()),this.cleanupFns=[]}},qs=class extends $e.Modal{constructor(t,r,n){super(t.app);this.view=t,this.settingsManager=new Nd(t.plugin,r,n)}onOpen(){let{contentEl:t,modalEl:r}=this;r.addClass($("board-settings-modal")),this.settingsManager.constructUI(t,this.view.file.basename,!0)}onClose(){let{contentEl:t}=this;this.settingsManager.cleanUp(),t.empty()}},Od=class extends $e.PluginSettingTab{constructor(t,r){super(t.app,t);this.plugin=t,this.settingsManager=new Nd(t,r,t.settings)}display(){let{containerEl:t}=this;t.empty(),t.addClass($("board-settings-modal")),this.settingsManager.constructUI(t,B("Kanban Plugin"),!1)}};var yn="kanban",Ba="blocks",tr=class extends _w.TextFileView{constructor(t,r){super(t);this.actionButtons={};this.plugin=r,this.emitter=Ps(),this.emitter.on("hotkey",n=>{switch(n){case"daily-notes:goto-prev":{Rm(this.app,this.file);break}case"daily-notes:goto-next":{Om(this.app,this.file);break}}}),this.register(this.containerEl.onWindowMigrated(()=>{this.plugin.removeView(this),this.plugin.addView(this,this.data,this.isPrimary)}))}get isPrimary(){var t;return((t=this.plugin.getStateManager(this.file))==null?void 0:t.getAView())===this}get id(){var t;return`${this.leaf.id}:::${(t=this.file)==null?void 0:t.path}`}get isShiftPressed(){return this.plugin.isShiftPressed}setBoard(t,r=!0){this.plugin.stateManagers.get(this.file).setState(t,r)}getBoard(){return this.plugin.stateManagers.get(this.file).state}getViewType(){return yn}getIcon(){return Ba}getDisplayText(){var t;return((t=this.file)==null?void 0:t.basename)||"Kanban"}getWindow(){return Ze(this.containerEl)}async onLoadFile(t){try{return await super.onLoadFile(t)}catch(r){throw this.plugin.stateManagers.get(this.file).setError(r),r}}destroy(){this.plugin.removeView(this),Object.values(this.actionButtons).forEach(t=>t.remove()),this.actionButtons={}}async onClose(){this.destroy()}async onUnloadFile(t){return this.destroy(),await super.onUnloadFile(t)}handleRename(t,r){this.file.path===t&&this.plugin.handleViewFileRename(this,r)}requestSaveToDisk(t){this.data!==t&&this.isPrimary?(this.data=t,this.requestSave()):this.data=t}getViewData(){return this.data}setViewData(t,r){if(!Hm(t)){this.plugin.kanbanFileModes[this.leaf.id||this.file.path]="markdown",this.plugin.removeView(this),this.plugin.setMarkdownView(this.leaf,!1);return}this.plugin.addView(this,t,!r&&this.isPrimary)}getPortal(){let t=this.plugin.stateManagers.get(this.file);return g(Yb,{stateManager:t,view:this})}onPaneMenu(t,r,n=!0){if(r!=="more-options"){super.onPaneMenu(t,r);return}t.addItem(i=>{i.setTitle(B("Open as markdown")).setIcon("document").setSection("pane").onClick(()=>{this.plugin.kanbanFileModes[this.leaf.id||this.file.path]="markdown",this.plugin.setMarkdownView(this.leaf)})}).addItem(i=>{i.setTitle(B("Open board settings")).setIcon("gear").setSection("pane").onClick(()=>{let a=this.plugin.stateManagers.get(this.file),o=a.state;new qs(this,{onSettingsChange:s=>{let u=(0,Rd.default)(o,{data:{settings:{$set:s}}});a.setState(u)}},o.data.settings).open()})}).addItem(i=>{i.setTitle(B("Archive completed cards")).setIcon("sheets-in-box").setSection("pane").onClick(()=>{this.plugin.stateManagers.get(this.file).archiveCompletedCards()})}),n&&super.onPaneMenu(t,r)}initHeaderButtons(){let t=this.plugin.getStateManager(this.file);if(!!t)if(t.getSetting("show-board-settings")&&!this.actionButtons["show-board-settings"]?this.actionButtons["show-board-settings"]=this.addAction("gear",B("Open board settings"),()=>{let r=this.plugin.stateManagers.get(this.file),n=r.state;new qs(this,{onSettingsChange:i=>{let a=(0,Rd.default)(n,{data:{settings:{$set:i}}});r.setState(a)}},n.data.settings).open()}):!t.getSetting("show-board-settings")&&this.actionButtons["show-board-settings"]&&(this.actionButtons["show-board-settings"].remove(),delete this.actionButtons["show-board-settings"]),t.getSetting("show-search")&&!this.actionButtons["show-search"]?this.actionButtons["show-search"]=this.addAction("search",B("Search..."),()=>{this.emitter.emit("hotkey","editor:open-search")}):!t.getSetting("show-search")&&this.actionButtons["show-search"]&&(this.actionButtons["show-search"].remove(),delete this.actionButtons["show-search"]),t.getSetting("show-view-as-markdown")&&!this.actionButtons["show-view-as-markdown"]?this.actionButtons["show-view-as-markdown"]=this.addAction("document",B("Open as markdown"),()=>{this.plugin.kanbanFileModes[this.leaf.id||this.file.path]="markdown",this.plugin.setMarkdownView(this.leaf)}):!t.getSetting("show-view-as-markdown")&&this.actionButtons["show-view-as-markdown"]&&(this.actionButtons["show-view-as-markdown"].remove(),delete this.actionButtons["show-view-as-markdown"]),t.getSetting("show-archive-all")&&!this.actionButtons["show-archive-all"]?this.actionButtons["show-archive-all"]=this.addAction("sheets-in-box",B("Archive completed cards"),()=>{this.plugin.stateManagers.get(this.file).archiveCompletedCards()}):!t.getSetting("show-archive-all")&&this.actionButtons["show-archive-all"]&&(this.actionButtons["show-archive-all"].remove(),delete this.actionButtons["show-archive-all"]),t.getSetting("show-add-list")&&!this.actionButtons["show-add-list"]){let r=this.addAction("plus-with-circle",B("Add a list"),()=>{this.emitter.emit("showLaneForm",void 0)});r.addClass($("ignore-click-outside")),this.actionButtons["show-add-list"]=r}else!t.getSetting("show-add-list")&&this.actionButtons["show-add-list"]&&(this.actionButtons["show-add-list"].remove(),delete this.actionButtons["show-add-list"])}clear(){}};h();var $i=ge(xt()),$E=ge(require("obsidian"));h();h();var Hd={};zi(Hd,{JsonPatchError:()=>at,_areEquals:()=>Ua,applyOperation:()=>zr,applyPatch:()=>Zs,applyReducer:()=>M1,deepClone:()=>T1,getValueByPointer:()=>Xs,validate:()=>Tw,validator:()=>el});h();h();var _1=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)i.hasOwnProperty(a)&&(n[a]=i[a])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),C1=Object.prototype.hasOwnProperty;function Ys(e,t){return C1.call(e,t)}function Js(e){if(Array.isArray(e)){for(var t=new Array(e.length),r=0;r=48&&n<=57){t++;continue}return!1}return!0}function Hn(e){return e.indexOf("/")===-1&&e.indexOf("~")===-1?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}function Ka(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function Qs(e){if(e===void 0)return!0;if(e){if(Array.isArray(e)){for(var t=0,r=e.length;t0&&u[c-1]=="constructor"))throw new TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(r&&f===void 0&&(l[p]===void 0?f=u.slice(0,c).join("/"):c==d-1&&(f=t.path),f!==void 0&&m(t,0,e,f)),c++,Array.isArray(l)){if(p==="-")p=l.length;else{if(r&&!Gs(p))throw new at("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",a,t,e);Gs(p)&&(p=~~p)}if(c>=d){if(r&&t.op==="add"&&p>l.length)throw new at("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",a,t,e);var o=D1[t.op].call(t,l,p,e);if(o.test===!1)throw new at("Test operation failed","TEST_OPERATION_FAILED",a,t,e);return o}}else if(c>=d){var o=Fi[t.op].call(t,l,p,e);if(o.test===!1)throw new at("Test operation failed","TEST_OPERATION_FAILED",a,t,e);return o}if(l=l[p],r&&c0)throw new at('Operation `path` property must start with "/"',"OPERATION_PATH_INVALID",t,e,r);if((e.op==="move"||e.op==="copy")&&typeof e.from!="string")throw new at("Operation `from` property is not present (applicable in `move` and `copy` operations)","OPERATION_FROM_REQUIRED",t,e,r);if((e.op==="add"||e.op==="replace"||e.op==="test")&&e.value===void 0)throw new at("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_REQUIRED",t,e,r);if((e.op==="add"||e.op==="replace"||e.op==="test")&&Qs(e.value))throw new at("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED",t,e,r);if(r){if(e.op=="add"){var i=e.path.split("/").length,a=n.split("/").length;if(i!==a+1&&i!==a)throw new at("Cannot perform an `add` operation at the desired path","OPERATION_PATH_CANNOT_ADD",t,e,r)}else if(e.op==="replace"||e.op==="remove"||e.op==="_get"){if(e.path!==n)throw new at("Cannot perform the operation at a path that does not exist","OPERATION_PATH_UNRESOLVABLE",t,e,r)}else if(e.op==="move"||e.op==="copy"){var o={op:"_get",path:e.from,value:void 0},s=Tw([o],r);if(s&&s.name==="OPERATION_PATH_UNRESOLVABLE")throw new at("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",t,e,r)}}}else throw new at("Operation `op` property is not one of operations defined in RFC-6902","OPERATION_OP_INVALID",t,e,r)}function Tw(e,t,r){try{if(!Array.isArray(e))throw new at("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(t)Zs(Pt(t),Pt(e),r||!0);else{r=r||el;for(var n=0;nUd,generate:()=>Kd,observe:()=>O1,unobserve:()=>N1});h();var Bd=new WeakMap,I1=function(){function e(t){this.observers=new Map,this.obj=t}return e}(),A1=function(){function e(t,r){this.callback=t,this.observer=r}return e}();function L1(e){return Bd.get(e)}function P1(e,t){return e.observers.get(t)}function F1(e,t){e.observers.delete(t.callback)}function N1(e,t){t.unobserve()}function O1(e,t){var r=[],n,i=L1(e);if(!i)i=new I1(e),Bd.set(e,i);else{var a=P1(i,t);n=a&&a.observer}if(n)return n;if(n={},i.value=Pt(e),t){n.callback=t,n.next=null;var o=function(){Kd(n)},s=function(){clearTimeout(n.next),n.next=setTimeout(o)};typeof window!="undefined"&&(window.addEventListener("mouseup",s),window.addEventListener("keyup",s),window.addEventListener("mousedown",s),window.addEventListener("keydown",s),window.addEventListener("change",s))}return n.patches=r,n.object=e,n.unobserve=function(){Kd(n),clearTimeout(n.next),F1(i,n),typeof window!="undefined"&&(window.removeEventListener("mouseup",s),window.removeEventListener("keyup",s),window.removeEventListener("mousedown",s),window.removeEventListener("keydown",s),window.removeEventListener("change",s))},i.observers.set(t,new A1(t,n)),n}function Kd(e,t){t===void 0&&(t=!1);var r=Bd.get(e.object);$d(r.value,e.object,e.patches,"",t),e.patches.length&&Zs(r.value,e.patches);var n=e.patches;return n.length>0&&(e.patches=[],e.callback&&e.callback(n)),n}function $d(e,t,r,n,i){if(t!==e){typeof t.toJSON=="function"&&(t=t.toJSON());for(var a=Js(t),o=Js(e),s=!1,u=!1,l=o.length-1;l>=0;l--){var c=o[l],d=e[c];if(Ys(t,c)&&!(t[c]===void 0&&d!==void 0&&Array.isArray(t)===!1)){var f=t[c];typeof d=="object"&&d!=null&&typeof f=="object"&&f!=null&&Array.isArray(d)===Array.isArray(f)?$d(d,f,r,n+"/"+Hn(c),i):d!==f&&(s=!0,i&&r.push({op:"test",path:n+"/"+Hn(c),value:Pt(d)}),r.push({op:"replace",path:n+"/"+Hn(c),value:Pt(f)}))}else Array.isArray(e)===Array.isArray(t)?(i&&r.push({op:"test",path:n+"/"+Hn(c),value:Pt(d)}),r.push({op:"remove",path:n+"/"+Hn(c)}),u=!0):(i&&r.push({op:"test",path:n,value:e}),r.push({op:"replace",path:n,value:t}),s=!0)}if(!(!u&&a.length==o.length))for(var l=0;l":""))+")"})),f;function f(){let p=[],m,y,b;if((!t||i(s,u,l[l.length-1]||null))&&(p=$1(r(s,l)),p[0]===zd))return p;if(s.children&&p[0]!==Fw)for(y=(n?s.children.length:-1)+a,b=l.concat(s);y>-1&&y!0){for(let i=t+1,a=e.length;i{try{await Bw(e,r),await Promise.all(r.children.map(n=>Va(e,n)))}catch(n){throw e.setError(n),n}}))}catch(r){throw e.setError(r),r}return t}function U1(e){return(e.op==="add"||e.op==="replace")&&["/title","/titleRaw","/dateStr","/timeStr",/\d$/,/\/fileAccessor\/.+$/].some(t=>typeof t=="string"?e.path.endsWith(t):t.test(e.path))}async function $w(e,t,r){let n={},i=r.reduce((a,o)=>{if(!U1(o))return a;let s=o.path.split("/").reduce((l,c)=>(/\d+/.test(c)&&l.push(Number(c)),l),[]),u=s.join(",");return n[u]||(n[u]=!0,a.push(s)),a},[]);try{await Promise.all(i.map(a=>{let o=ht(t,a);if(o.type===Ge.Lane)return Bw(e,o);if(o.type===Ge.Item)return Va(e,o)}))}catch(a){throw e.setError(a),a}return t}h();h();h();h();h();h();function Ft(e,t,r,n){let i=e.length,a=0,o;if(t<0?t=-t>i?0:i+t:t=t>i?i:t,r=r>0?r:0,n.length<1e4)o=Array.from(n),o.unshift(t,r),[].splice.apply(e,o);else for(r&&[].splice.apply(e,[t,r]);a0?(Ft(e,e.length,0,t),e):t}var Uw={}.hasOwnProperty;function Ww(e){let t={},r=-1;for(;++ro))return;let O=t.events.length,W=O,z,ee;for(;W--;)if(t.events[W][0]==="exit"&&t.events[W][1].type==="chunkFlow"){if(z){ee=t.events[W][1].end;break}z=!0}for(x(n),T=O;TC;){let N=r[A];t.containerState=N[1],N[0].exit.call(t,e)}r.length=C}function D(){i.write([null]),a=void 0,i=void 0,t.containerState._closeFlow=void 0}}function q1(e,t,r){return Se(e,e.attempt(this.parser.constructs.document,t,r),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}h();h();h();h();function Gd(e){if(e===null||Qe(e)||qw(e))return 1;if(Yw(e))return 2}h();function Ni(e,t,r){let n=[],i=-1;for(;++i1&&e[r][1].end.offset-e[r][1].start.offset>1?2:1;let d=Object.assign({},e[n][1].end),f=Object.assign({},e[r][1].start);Xw(d,-u),Xw(f,u),o={type:u>1?"strongSequence":"emphasisSequence",start:d,end:Object.assign({},e[n][1].end)},s={type:u>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[r][1].start),end:f},a={type:u>1?"strongText":"emphasisText",start:Object.assign({},e[n][1].end),end:Object.assign({},e[r][1].start)},i={type:u>1?"strong":"emphasis",start:Object.assign({},o.start),end:Object.assign({},s.end)},e[n][1].end=Object.assign({},o.start),e[r][1].start=Object.assign({},s.end),l=[],e[n][1].end.offset-e[n][1].start.offset&&(l=Jt(l,[["enter",e[n][1],t],["exit",e[n][1],t]])),l=Jt(l,[["enter",i,t],["enter",o,t],["exit",o,t],["enter",a,t]]),l=Jt(l,Ni(t.parser.constructs.insideSpan.null,e.slice(n+1,r),t)),l=Jt(l,[["exit",a,t],["enter",s,t],["exit",s,t],["exit",i,t]]),e[r][1].end.offset-e[r][1].start.offset?(c=2,l=Jt(l,[["enter",e[r][1],t],["exit",e[r][1],t]])):c=0,Ft(e,n-1,r-n+3,l),r=n+l.length-c-2;break}}for(r=-1;++r",Gamma:"\u0393",Gammad:"\u03DC",Gbreve:"\u011E",Gcedil:"\u0122",Gcirc:"\u011C",Gcy:"\u0413",Gdot:"\u0120",Gfr:"\u{1D50A}",Gg:"\u22D9",Gopf:"\u{1D53E}",GreaterEqual:"\u2265",GreaterEqualLess:"\u22DB",GreaterFullEqual:"\u2267",GreaterGreater:"\u2AA2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2A7E",GreaterTilde:"\u2273",Gscr:"\u{1D4A2}",Gt:"\u226B",HARDcy:"\u042A",Hacek:"\u02C7",Hat:"^",Hcirc:"\u0124",Hfr:"\u210C",HilbertSpace:"\u210B",Hopf:"\u210D",HorizontalLine:"\u2500",Hscr:"\u210B",Hstrok:"\u0126",HumpDownHump:"\u224E",HumpEqual:"\u224F",IEcy:"\u0415",IJlig:"\u0132",IOcy:"\u0401",Iacute:"\xCD",Icirc:"\xCE",Icy:"\u0418",Idot:"\u0130",Ifr:"\u2111",Igrave:"\xCC",Im:"\u2111",Imacr:"\u012A",ImaginaryI:"\u2148",Implies:"\u21D2",Int:"\u222C",Integral:"\u222B",Intersection:"\u22C2",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",Iogon:"\u012E",Iopf:"\u{1D540}",Iota:"\u0399",Iscr:"\u2110",Itilde:"\u0128",Iukcy:"\u0406",Iuml:"\xCF",Jcirc:"\u0134",Jcy:"\u0419",Jfr:"\u{1D50D}",Jopf:"\u{1D541}",Jscr:"\u{1D4A5}",Jsercy:"\u0408",Jukcy:"\u0404",KHcy:"\u0425",KJcy:"\u040C",Kappa:"\u039A",Kcedil:"\u0136",Kcy:"\u041A",Kfr:"\u{1D50E}",Kopf:"\u{1D542}",Kscr:"\u{1D4A6}",LJcy:"\u0409",LT:"<",Lacute:"\u0139",Lambda:"\u039B",Lang:"\u27EA",Laplacetrf:"\u2112",Larr:"\u219E",Lcaron:"\u013D",Lcedil:"\u013B",Lcy:"\u041B",LeftAngleBracket:"\u27E8",LeftArrow:"\u2190",LeftArrowBar:"\u21E4",LeftArrowRightArrow:"\u21C6",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27E6",LeftDownTeeVector:"\u2961",LeftDownVector:"\u21C3",LeftDownVectorBar:"\u2959",LeftFloor:"\u230A",LeftRightArrow:"\u2194",LeftRightVector:"\u294E",LeftTee:"\u22A3",LeftTeeArrow:"\u21A4",LeftTeeVector:"\u295A",LeftTriangle:"\u22B2",LeftTriangleBar:"\u29CF",LeftTriangleEqual:"\u22B4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVector:"\u21BF",LeftUpVectorBar:"\u2958",LeftVector:"\u21BC",LeftVectorBar:"\u2952",Leftarrow:"\u21D0",Leftrightarrow:"\u21D4",LessEqualGreater:"\u22DA",LessFullEqual:"\u2266",LessGreater:"\u2276",LessLess:"\u2AA1",LessSlantEqual:"\u2A7D",LessTilde:"\u2272",Lfr:"\u{1D50F}",Ll:"\u22D8",Lleftarrow:"\u21DA",Lmidot:"\u013F",LongLeftArrow:"\u27F5",LongLeftRightArrow:"\u27F7",LongRightArrow:"\u27F6",Longleftarrow:"\u27F8",Longleftrightarrow:"\u27FA",Longrightarrow:"\u27F9",Lopf:"\u{1D543}",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",Lscr:"\u2112",Lsh:"\u21B0",Lstrok:"\u0141",Lt:"\u226A",Map:"\u2905",Mcy:"\u041C",MediumSpace:"\u205F",Mellintrf:"\u2133",Mfr:"\u{1D510}",MinusPlus:"\u2213",Mopf:"\u{1D544}",Mscr:"\u2133",Mu:"\u039C",NJcy:"\u040A",Nacute:"\u0143",Ncaron:"\u0147",Ncedil:"\u0145",Ncy:"\u041D",NegativeMediumSpace:"\u200B",NegativeThickSpace:"\u200B",NegativeThinSpace:"\u200B",NegativeVeryThinSpace:"\u200B",NestedGreaterGreater:"\u226B",NestedLessLess:"\u226A",NewLine:` -`,Nfr:"\u{1D511}",NoBreak:"\u2060",NonBreakingSpace:"\xA0",Nopf:"\u2115",Not:"\u2AEC",NotCongruent:"\u2262",NotCupCap:"\u226D",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226F",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226B\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2A7E\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224E\u0338",NotHumpEqual:"\u224F\u0338",NotLeftTriangle:"\u22EA",NotLeftTriangleBar:"\u29CF\u0338",NotLeftTriangleEqual:"\u22EC",NotLess:"\u226E",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226A\u0338",NotLessSlantEqual:"\u2A7D\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2AA2\u0338",NotNestedLessLess:"\u2AA1\u0338",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2AAF\u0338",NotPrecedesSlantEqual:"\u22E0",NotReverseElement:"\u220C",NotRightTriangle:"\u22EB",NotRightTriangleBar:"\u29D0\u0338",NotRightTriangleEqual:"\u22ED",NotSquareSubset:"\u228F\u0338",NotSquareSubsetEqual:"\u22E2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22E3",NotSubset:"\u2282\u20D2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2AB0\u0338",NotSucceedsSlantEqual:"\u22E1",NotSucceedsTilde:"\u227F\u0338",NotSuperset:"\u2283\u20D2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",Nscr:"\u{1D4A9}",Ntilde:"\xD1",Nu:"\u039D",OElig:"\u0152",Oacute:"\xD3",Ocirc:"\xD4",Ocy:"\u041E",Odblac:"\u0150",Ofr:"\u{1D512}",Ograve:"\xD2",Omacr:"\u014C",Omega:"\u03A9",Omicron:"\u039F",Oopf:"\u{1D546}",OpenCurlyDoubleQuote:"\u201C",OpenCurlyQuote:"\u2018",Or:"\u2A54",Oscr:"\u{1D4AA}",Oslash:"\xD8",Otilde:"\xD5",Otimes:"\u2A37",Ouml:"\xD6",OverBar:"\u203E",OverBrace:"\u23DE",OverBracket:"\u23B4",OverParenthesis:"\u23DC",PartialD:"\u2202",Pcy:"\u041F",Pfr:"\u{1D513}",Phi:"\u03A6",Pi:"\u03A0",PlusMinus:"\xB1",Poincareplane:"\u210C",Popf:"\u2119",Pr:"\u2ABB",Precedes:"\u227A",PrecedesEqual:"\u2AAF",PrecedesSlantEqual:"\u227C",PrecedesTilde:"\u227E",Prime:"\u2033",Product:"\u220F",Proportion:"\u2237",Proportional:"\u221D",Pscr:"\u{1D4AB}",Psi:"\u03A8",QUOT:'"',Qfr:"\u{1D514}",Qopf:"\u211A",Qscr:"\u{1D4AC}",RBarr:"\u2910",REG:"\xAE",Racute:"\u0154",Rang:"\u27EB",Rarr:"\u21A0",Rarrtl:"\u2916",Rcaron:"\u0158",Rcedil:"\u0156",Rcy:"\u0420",Re:"\u211C",ReverseElement:"\u220B",ReverseEquilibrium:"\u21CB",ReverseUpEquilibrium:"\u296F",Rfr:"\u211C",Rho:"\u03A1",RightAngleBracket:"\u27E9",RightArrow:"\u2192",RightArrowBar:"\u21E5",RightArrowLeftArrow:"\u21C4",RightCeiling:"\u2309",RightDoubleBracket:"\u27E7",RightDownTeeVector:"\u295D",RightDownVector:"\u21C2",RightDownVectorBar:"\u2955",RightFloor:"\u230B",RightTee:"\u22A2",RightTeeArrow:"\u21A6",RightTeeVector:"\u295B",RightTriangle:"\u22B3",RightTriangleBar:"\u29D0",RightTriangleEqual:"\u22B5",RightUpDownVector:"\u294F",RightUpTeeVector:"\u295C",RightUpVector:"\u21BE",RightUpVectorBar:"\u2954",RightVector:"\u21C0",RightVectorBar:"\u2953",Rightarrow:"\u21D2",Ropf:"\u211D",RoundImplies:"\u2970",Rrightarrow:"\u21DB",Rscr:"\u211B",Rsh:"\u21B1",RuleDelayed:"\u29F4",SHCHcy:"\u0429",SHcy:"\u0428",SOFTcy:"\u042C",Sacute:"\u015A",Sc:"\u2ABC",Scaron:"\u0160",Scedil:"\u015E",Scirc:"\u015C",Scy:"\u0421",Sfr:"\u{1D516}",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",Sigma:"\u03A3",SmallCircle:"\u2218",Sopf:"\u{1D54A}",Sqrt:"\u221A",Square:"\u25A1",SquareIntersection:"\u2293",SquareSubset:"\u228F",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",Sscr:"\u{1D4AE}",Star:"\u22C6",Sub:"\u22D0",Subset:"\u22D0",SubsetEqual:"\u2286",Succeeds:"\u227B",SucceedsEqual:"\u2AB0",SucceedsSlantEqual:"\u227D",SucceedsTilde:"\u227F",SuchThat:"\u220B",Sum:"\u2211",Sup:"\u22D1",Superset:"\u2283",SupersetEqual:"\u2287",Supset:"\u22D1",THORN:"\xDE",TRADE:"\u2122",TSHcy:"\u040B",TScy:"\u0426",Tab:" ",Tau:"\u03A4",Tcaron:"\u0164",Tcedil:"\u0162",Tcy:"\u0422",Tfr:"\u{1D517}",Therefore:"\u2234",Theta:"\u0398",ThickSpace:"\u205F\u200A",ThinSpace:"\u2009",Tilde:"\u223C",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",Topf:"\u{1D54B}",TripleDot:"\u20DB",Tscr:"\u{1D4AF}",Tstrok:"\u0166",Uacute:"\xDA",Uarr:"\u219F",Uarrocir:"\u2949",Ubrcy:"\u040E",Ubreve:"\u016C",Ucirc:"\xDB",Ucy:"\u0423",Udblac:"\u0170",Ufr:"\u{1D518}",Ugrave:"\xD9",Umacr:"\u016A",UnderBar:"_",UnderBrace:"\u23DF",UnderBracket:"\u23B5",UnderParenthesis:"\u23DD",Union:"\u22C3",UnionPlus:"\u228E",Uogon:"\u0172",Uopf:"\u{1D54C}",UpArrow:"\u2191",UpArrowBar:"\u2912",UpArrowDownArrow:"\u21C5",UpDownArrow:"\u2195",UpEquilibrium:"\u296E",UpTee:"\u22A5",UpTeeArrow:"\u21A5",Uparrow:"\u21D1",Updownarrow:"\u21D5",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",Upsi:"\u03D2",Upsilon:"\u03A5",Uring:"\u016E",Uscr:"\u{1D4B0}",Utilde:"\u0168",Uuml:"\xDC",VDash:"\u22AB",Vbar:"\u2AEB",Vcy:"\u0412",Vdash:"\u22A9",Vdashl:"\u2AE6",Vee:"\u22C1",Verbar:"\u2016",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200A",Vfr:"\u{1D519}",Vopf:"\u{1D54D}",Vscr:"\u{1D4B1}",Vvdash:"\u22AA",Wcirc:"\u0174",Wedge:"\u22C0",Wfr:"\u{1D51A}",Wopf:"\u{1D54E}",Wscr:"\u{1D4B2}",Xfr:"\u{1D51B}",Xi:"\u039E",Xopf:"\u{1D54F}",Xscr:"\u{1D4B3}",YAcy:"\u042F",YIcy:"\u0407",YUcy:"\u042E",Yacute:"\xDD",Ycirc:"\u0176",Ycy:"\u042B",Yfr:"\u{1D51C}",Yopf:"\u{1D550}",Yscr:"\u{1D4B4}",Yuml:"\u0178",ZHcy:"\u0416",Zacute:"\u0179",Zcaron:"\u017D",Zcy:"\u0417",Zdot:"\u017B",ZeroWidthSpace:"\u200B",Zeta:"\u0396",Zfr:"\u2128",Zopf:"\u2124",Zscr:"\u{1D4B5}",aacute:"\xE1",abreve:"\u0103",ac:"\u223E",acE:"\u223E\u0333",acd:"\u223F",acirc:"\xE2",acute:"\xB4",acy:"\u0430",aelig:"\xE6",af:"\u2061",afr:"\u{1D51E}",agrave:"\xE0",alefsym:"\u2135",aleph:"\u2135",alpha:"\u03B1",amacr:"\u0101",amalg:"\u2A3F",amp:"&",and:"\u2227",andand:"\u2A55",andd:"\u2A5C",andslope:"\u2A58",andv:"\u2A5A",ang:"\u2220",ange:"\u29A4",angle:"\u2220",angmsd:"\u2221",angmsdaa:"\u29A8",angmsdab:"\u29A9",angmsdac:"\u29AA",angmsdad:"\u29AB",angmsdae:"\u29AC",angmsdaf:"\u29AD",angmsdag:"\u29AE",angmsdah:"\u29AF",angrt:"\u221F",angrtvb:"\u22BE",angrtvbd:"\u299D",angsph:"\u2222",angst:"\xC5",angzarr:"\u237C",aogon:"\u0105",aopf:"\u{1D552}",ap:"\u2248",apE:"\u2A70",apacir:"\u2A6F",ape:"\u224A",apid:"\u224B",apos:"'",approx:"\u2248",approxeq:"\u224A",aring:"\xE5",ascr:"\u{1D4B6}",ast:"*",asymp:"\u2248",asympeq:"\u224D",atilde:"\xE3",auml:"\xE4",awconint:"\u2233",awint:"\u2A11",bNot:"\u2AED",backcong:"\u224C",backepsilon:"\u03F6",backprime:"\u2035",backsim:"\u223D",backsimeq:"\u22CD",barvee:"\u22BD",barwed:"\u2305",barwedge:"\u2305",bbrk:"\u23B5",bbrktbrk:"\u23B6",bcong:"\u224C",bcy:"\u0431",bdquo:"\u201E",becaus:"\u2235",because:"\u2235",bemptyv:"\u29B0",bepsi:"\u03F6",bernou:"\u212C",beta:"\u03B2",beth:"\u2136",between:"\u226C",bfr:"\u{1D51F}",bigcap:"\u22C2",bigcirc:"\u25EF",bigcup:"\u22C3",bigodot:"\u2A00",bigoplus:"\u2A01",bigotimes:"\u2A02",bigsqcup:"\u2A06",bigstar:"\u2605",bigtriangledown:"\u25BD",bigtriangleup:"\u25B3",biguplus:"\u2A04",bigvee:"\u22C1",bigwedge:"\u22C0",bkarow:"\u290D",blacklozenge:"\u29EB",blacksquare:"\u25AA",blacktriangle:"\u25B4",blacktriangledown:"\u25BE",blacktriangleleft:"\u25C2",blacktriangleright:"\u25B8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20E5",bnequiv:"\u2261\u20E5",bnot:"\u2310",bopf:"\u{1D553}",bot:"\u22A5",bottom:"\u22A5",bowtie:"\u22C8",boxDL:"\u2557",boxDR:"\u2554",boxDl:"\u2556",boxDr:"\u2553",boxH:"\u2550",boxHD:"\u2566",boxHU:"\u2569",boxHd:"\u2564",boxHu:"\u2567",boxUL:"\u255D",boxUR:"\u255A",boxUl:"\u255C",boxUr:"\u2559",boxV:"\u2551",boxVH:"\u256C",boxVL:"\u2563",boxVR:"\u2560",boxVh:"\u256B",boxVl:"\u2562",boxVr:"\u255F",boxbox:"\u29C9",boxdL:"\u2555",boxdR:"\u2552",boxdl:"\u2510",boxdr:"\u250C",boxh:"\u2500",boxhD:"\u2565",boxhU:"\u2568",boxhd:"\u252C",boxhu:"\u2534",boxminus:"\u229F",boxplus:"\u229E",boxtimes:"\u22A0",boxuL:"\u255B",boxuR:"\u2558",boxul:"\u2518",boxur:"\u2514",boxv:"\u2502",boxvH:"\u256A",boxvL:"\u2561",boxvR:"\u255E",boxvh:"\u253C",boxvl:"\u2524",boxvr:"\u251C",bprime:"\u2035",breve:"\u02D8",brvbar:"\xA6",bscr:"\u{1D4B7}",bsemi:"\u204F",bsim:"\u223D",bsime:"\u22CD",bsol:"\\",bsolb:"\u29C5",bsolhsub:"\u27C8",bull:"\u2022",bullet:"\u2022",bump:"\u224E",bumpE:"\u2AAE",bumpe:"\u224F",bumpeq:"\u224F",cacute:"\u0107",cap:"\u2229",capand:"\u2A44",capbrcup:"\u2A49",capcap:"\u2A4B",capcup:"\u2A47",capdot:"\u2A40",caps:"\u2229\uFE00",caret:"\u2041",caron:"\u02C7",ccaps:"\u2A4D",ccaron:"\u010D",ccedil:"\xE7",ccirc:"\u0109",ccups:"\u2A4C",ccupssm:"\u2A50",cdot:"\u010B",cedil:"\xB8",cemptyv:"\u29B2",cent:"\xA2",centerdot:"\xB7",cfr:"\u{1D520}",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",chi:"\u03C7",cir:"\u25CB",cirE:"\u29C3",circ:"\u02C6",circeq:"\u2257",circlearrowleft:"\u21BA",circlearrowright:"\u21BB",circledR:"\xAE",circledS:"\u24C8",circledast:"\u229B",circledcirc:"\u229A",circleddash:"\u229D",cire:"\u2257",cirfnint:"\u2A10",cirmid:"\u2AEF",cirscir:"\u29C2",clubs:"\u2663",clubsuit:"\u2663",colon:":",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2A6D",conint:"\u222E",copf:"\u{1D554}",coprod:"\u2210",copy:"\xA9",copysr:"\u2117",crarr:"\u21B5",cross:"\u2717",cscr:"\u{1D4B8}",csub:"\u2ACF",csube:"\u2AD1",csup:"\u2AD0",csupe:"\u2AD2",ctdot:"\u22EF",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22DE",cuesc:"\u22DF",cularr:"\u21B6",cularrp:"\u293D",cup:"\u222A",cupbrcap:"\u2A48",cupcap:"\u2A46",cupcup:"\u2A4A",cupdot:"\u228D",cupor:"\u2A45",cups:"\u222A\uFE00",curarr:"\u21B7",curarrm:"\u293C",curlyeqprec:"\u22DE",curlyeqsucc:"\u22DF",curlyvee:"\u22CE",curlywedge:"\u22CF",curren:"\xA4",curvearrowleft:"\u21B6",curvearrowright:"\u21B7",cuvee:"\u22CE",cuwed:"\u22CF",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232D",dArr:"\u21D3",dHar:"\u2965",dagger:"\u2020",daleth:"\u2138",darr:"\u2193",dash:"\u2010",dashv:"\u22A3",dbkarow:"\u290F",dblac:"\u02DD",dcaron:"\u010F",dcy:"\u0434",dd:"\u2146",ddagger:"\u2021",ddarr:"\u21CA",ddotseq:"\u2A77",deg:"\xB0",delta:"\u03B4",demptyv:"\u29B1",dfisht:"\u297F",dfr:"\u{1D521}",dharl:"\u21C3",dharr:"\u21C2",diam:"\u22C4",diamond:"\u22C4",diamondsuit:"\u2666",diams:"\u2666",die:"\xA8",digamma:"\u03DD",disin:"\u22F2",div:"\xF7",divide:"\xF7",divideontimes:"\u22C7",divonx:"\u22C7",djcy:"\u0452",dlcorn:"\u231E",dlcrop:"\u230D",dollar:"$",dopf:"\u{1D555}",dot:"\u02D9",doteq:"\u2250",doteqdot:"\u2251",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22A1",doublebarwedge:"\u2306",downarrow:"\u2193",downdownarrows:"\u21CA",downharpoonleft:"\u21C3",downharpoonright:"\u21C2",drbkarow:"\u2910",drcorn:"\u231F",drcrop:"\u230C",dscr:"\u{1D4B9}",dscy:"\u0455",dsol:"\u29F6",dstrok:"\u0111",dtdot:"\u22F1",dtri:"\u25BF",dtrif:"\u25BE",duarr:"\u21F5",duhar:"\u296F",dwangle:"\u29A6",dzcy:"\u045F",dzigrarr:"\u27FF",eDDot:"\u2A77",eDot:"\u2251",eacute:"\xE9",easter:"\u2A6E",ecaron:"\u011B",ecir:"\u2256",ecirc:"\xEA",ecolon:"\u2255",ecy:"\u044D",edot:"\u0117",ee:"\u2147",efDot:"\u2252",efr:"\u{1D522}",eg:"\u2A9A",egrave:"\xE8",egs:"\u2A96",egsdot:"\u2A98",el:"\u2A99",elinters:"\u23E7",ell:"\u2113",els:"\u2A95",elsdot:"\u2A97",emacr:"\u0113",empty:"\u2205",emptyset:"\u2205",emptyv:"\u2205",emsp13:"\u2004",emsp14:"\u2005",emsp:"\u2003",eng:"\u014B",ensp:"\u2002",eogon:"\u0119",eopf:"\u{1D556}",epar:"\u22D5",eparsl:"\u29E3",eplus:"\u2A71",epsi:"\u03B5",epsilon:"\u03B5",epsiv:"\u03F5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2A96",eqslantless:"\u2A95",equals:"=",equest:"\u225F",equiv:"\u2261",equivDD:"\u2A78",eqvparsl:"\u29E5",erDot:"\u2253",erarr:"\u2971",escr:"\u212F",esdot:"\u2250",esim:"\u2242",eta:"\u03B7",eth:"\xF0",euml:"\xEB",euro:"\u20AC",excl:"!",exist:"\u2203",expectation:"\u2130",exponentiale:"\u2147",fallingdotseq:"\u2252",fcy:"\u0444",female:"\u2640",ffilig:"\uFB03",fflig:"\uFB00",ffllig:"\uFB04",ffr:"\u{1D523}",filig:"\uFB01",fjlig:"fj",flat:"\u266D",fllig:"\uFB02",fltns:"\u25B1",fnof:"\u0192",fopf:"\u{1D557}",forall:"\u2200",fork:"\u22D4",forkv:"\u2AD9",fpartint:"\u2A0D",frac12:"\xBD",frac13:"\u2153",frac14:"\xBC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\xBE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044",frown:"\u2322",fscr:"\u{1D4BB}",gE:"\u2267",gEl:"\u2A8C",gacute:"\u01F5",gamma:"\u03B3",gammad:"\u03DD",gap:"\u2A86",gbreve:"\u011F",gcirc:"\u011D",gcy:"\u0433",gdot:"\u0121",ge:"\u2265",gel:"\u22DB",geq:"\u2265",geqq:"\u2267",geqslant:"\u2A7E",ges:"\u2A7E",gescc:"\u2AA9",gesdot:"\u2A80",gesdoto:"\u2A82",gesdotol:"\u2A84",gesl:"\u22DB\uFE00",gesles:"\u2A94",gfr:"\u{1D524}",gg:"\u226B",ggg:"\u22D9",gimel:"\u2137",gjcy:"\u0453",gl:"\u2277",glE:"\u2A92",gla:"\u2AA5",glj:"\u2AA4",gnE:"\u2269",gnap:"\u2A8A",gnapprox:"\u2A8A",gne:"\u2A88",gneq:"\u2A88",gneqq:"\u2269",gnsim:"\u22E7",gopf:"\u{1D558}",grave:"`",gscr:"\u210A",gsim:"\u2273",gsime:"\u2A8E",gsiml:"\u2A90",gt:">",gtcc:"\u2AA7",gtcir:"\u2A7A",gtdot:"\u22D7",gtlPar:"\u2995",gtquest:"\u2A7C",gtrapprox:"\u2A86",gtrarr:"\u2978",gtrdot:"\u22D7",gtreqless:"\u22DB",gtreqqless:"\u2A8C",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\uFE00",gvnE:"\u2269\uFE00",hArr:"\u21D4",hairsp:"\u200A",half:"\xBD",hamilt:"\u210B",hardcy:"\u044A",harr:"\u2194",harrcir:"\u2948",harrw:"\u21AD",hbar:"\u210F",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22B9",hfr:"\u{1D525}",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21FF",homtht:"\u223B",hookleftarrow:"\u21A9",hookrightarrow:"\u21AA",hopf:"\u{1D559}",horbar:"\u2015",hscr:"\u{1D4BD}",hslash:"\u210F",hstrok:"\u0127",hybull:"\u2043",hyphen:"\u2010",iacute:"\xED",ic:"\u2063",icirc:"\xEE",icy:"\u0438",iecy:"\u0435",iexcl:"\xA1",iff:"\u21D4",ifr:"\u{1D526}",igrave:"\xEC",ii:"\u2148",iiiint:"\u2A0C",iiint:"\u222D",iinfin:"\u29DC",iiota:"\u2129",ijlig:"\u0133",imacr:"\u012B",image:"\u2111",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",imof:"\u22B7",imped:"\u01B5",in:"\u2208",incare:"\u2105",infin:"\u221E",infintie:"\u29DD",inodot:"\u0131",int:"\u222B",intcal:"\u22BA",integers:"\u2124",intercal:"\u22BA",intlarhk:"\u2A17",intprod:"\u2A3C",iocy:"\u0451",iogon:"\u012F",iopf:"\u{1D55A}",iota:"\u03B9",iprod:"\u2A3C",iquest:"\xBF",iscr:"\u{1D4BE}",isin:"\u2208",isinE:"\u22F9",isindot:"\u22F5",isins:"\u22F4",isinsv:"\u22F3",isinv:"\u2208",it:"\u2062",itilde:"\u0129",iukcy:"\u0456",iuml:"\xEF",jcirc:"\u0135",jcy:"\u0439",jfr:"\u{1D527}",jmath:"\u0237",jopf:"\u{1D55B}",jscr:"\u{1D4BF}",jsercy:"\u0458",jukcy:"\u0454",kappa:"\u03BA",kappav:"\u03F0",kcedil:"\u0137",kcy:"\u043A",kfr:"\u{1D528}",kgreen:"\u0138",khcy:"\u0445",kjcy:"\u045C",kopf:"\u{1D55C}",kscr:"\u{1D4C0}",lAarr:"\u21DA",lArr:"\u21D0",lAtail:"\u291B",lBarr:"\u290E",lE:"\u2266",lEg:"\u2A8B",lHar:"\u2962",lacute:"\u013A",laemptyv:"\u29B4",lagran:"\u2112",lambda:"\u03BB",lang:"\u27E8",langd:"\u2991",langle:"\u27E8",lap:"\u2A85",laquo:"\xAB",larr:"\u2190",larrb:"\u21E4",larrbfs:"\u291F",larrfs:"\u291D",larrhk:"\u21A9",larrlp:"\u21AB",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21A2",lat:"\u2AAB",latail:"\u2919",late:"\u2AAD",lates:"\u2AAD\uFE00",lbarr:"\u290C",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298B",lbrksld:"\u298F",lbrkslu:"\u298D",lcaron:"\u013E",lcedil:"\u013C",lceil:"\u2308",lcub:"{",lcy:"\u043B",ldca:"\u2936",ldquo:"\u201C",ldquor:"\u201E",ldrdhar:"\u2967",ldrushar:"\u294B",ldsh:"\u21B2",le:"\u2264",leftarrow:"\u2190",leftarrowtail:"\u21A2",leftharpoondown:"\u21BD",leftharpoonup:"\u21BC",leftleftarrows:"\u21C7",leftrightarrow:"\u2194",leftrightarrows:"\u21C6",leftrightharpoons:"\u21CB",leftrightsquigarrow:"\u21AD",leftthreetimes:"\u22CB",leg:"\u22DA",leq:"\u2264",leqq:"\u2266",leqslant:"\u2A7D",les:"\u2A7D",lescc:"\u2AA8",lesdot:"\u2A7F",lesdoto:"\u2A81",lesdotor:"\u2A83",lesg:"\u22DA\uFE00",lesges:"\u2A93",lessapprox:"\u2A85",lessdot:"\u22D6",lesseqgtr:"\u22DA",lesseqqgtr:"\u2A8B",lessgtr:"\u2276",lesssim:"\u2272",lfisht:"\u297C",lfloor:"\u230A",lfr:"\u{1D529}",lg:"\u2276",lgE:"\u2A91",lhard:"\u21BD",lharu:"\u21BC",lharul:"\u296A",lhblk:"\u2584",ljcy:"\u0459",ll:"\u226A",llarr:"\u21C7",llcorner:"\u231E",llhard:"\u296B",lltri:"\u25FA",lmidot:"\u0140",lmoust:"\u23B0",lmoustache:"\u23B0",lnE:"\u2268",lnap:"\u2A89",lnapprox:"\u2A89",lne:"\u2A87",lneq:"\u2A87",lneqq:"\u2268",lnsim:"\u22E6",loang:"\u27EC",loarr:"\u21FD",lobrk:"\u27E6",longleftarrow:"\u27F5",longleftrightarrow:"\u27F7",longmapsto:"\u27FC",longrightarrow:"\u27F6",looparrowleft:"\u21AB",looparrowright:"\u21AC",lopar:"\u2985",lopf:"\u{1D55D}",loplus:"\u2A2D",lotimes:"\u2A34",lowast:"\u2217",lowbar:"_",loz:"\u25CA",lozenge:"\u25CA",lozf:"\u29EB",lpar:"(",lparlt:"\u2993",lrarr:"\u21C6",lrcorner:"\u231F",lrhar:"\u21CB",lrhard:"\u296D",lrm:"\u200E",lrtri:"\u22BF",lsaquo:"\u2039",lscr:"\u{1D4C1}",lsh:"\u21B0",lsim:"\u2272",lsime:"\u2A8D",lsimg:"\u2A8F",lsqb:"[",lsquo:"\u2018",lsquor:"\u201A",lstrok:"\u0142",lt:"<",ltcc:"\u2AA6",ltcir:"\u2A79",ltdot:"\u22D6",lthree:"\u22CB",ltimes:"\u22C9",ltlarr:"\u2976",ltquest:"\u2A7B",ltrPar:"\u2996",ltri:"\u25C3",ltrie:"\u22B4",ltrif:"\u25C2",lurdshar:"\u294A",luruhar:"\u2966",lvertneqq:"\u2268\uFE00",lvnE:"\u2268\uFE00",mDDot:"\u223A",macr:"\xAF",male:"\u2642",malt:"\u2720",maltese:"\u2720",map:"\u21A6",mapsto:"\u21A6",mapstodown:"\u21A7",mapstoleft:"\u21A4",mapstoup:"\u21A5",marker:"\u25AE",mcomma:"\u2A29",mcy:"\u043C",mdash:"\u2014",measuredangle:"\u2221",mfr:"\u{1D52A}",mho:"\u2127",micro:"\xB5",mid:"\u2223",midast:"*",midcir:"\u2AF0",middot:"\xB7",minus:"\u2212",minusb:"\u229F",minusd:"\u2238",minusdu:"\u2A2A",mlcp:"\u2ADB",mldr:"\u2026",mnplus:"\u2213",models:"\u22A7",mopf:"\u{1D55E}",mp:"\u2213",mscr:"\u{1D4C2}",mstpos:"\u223E",mu:"\u03BC",multimap:"\u22B8",mumap:"\u22B8",nGg:"\u22D9\u0338",nGt:"\u226B\u20D2",nGtv:"\u226B\u0338",nLeftarrow:"\u21CD",nLeftrightarrow:"\u21CE",nLl:"\u22D8\u0338",nLt:"\u226A\u20D2",nLtv:"\u226A\u0338",nRightarrow:"\u21CF",nVDash:"\u22AF",nVdash:"\u22AE",nabla:"\u2207",nacute:"\u0144",nang:"\u2220\u20D2",nap:"\u2249",napE:"\u2A70\u0338",napid:"\u224B\u0338",napos:"\u0149",napprox:"\u2249",natur:"\u266E",natural:"\u266E",naturals:"\u2115",nbsp:"\xA0",nbump:"\u224E\u0338",nbumpe:"\u224F\u0338",ncap:"\u2A43",ncaron:"\u0148",ncedil:"\u0146",ncong:"\u2247",ncongdot:"\u2A6D\u0338",ncup:"\u2A42",ncy:"\u043D",ndash:"\u2013",ne:"\u2260",neArr:"\u21D7",nearhk:"\u2924",nearr:"\u2197",nearrow:"\u2197",nedot:"\u2250\u0338",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",nexist:"\u2204",nexists:"\u2204",nfr:"\u{1D52B}",ngE:"\u2267\u0338",nge:"\u2271",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2A7E\u0338",nges:"\u2A7E\u0338",ngsim:"\u2275",ngt:"\u226F",ngtr:"\u226F",nhArr:"\u21CE",nharr:"\u21AE",nhpar:"\u2AF2",ni:"\u220B",nis:"\u22FC",nisd:"\u22FA",niv:"\u220B",njcy:"\u045A",nlArr:"\u21CD",nlE:"\u2266\u0338",nlarr:"\u219A",nldr:"\u2025",nle:"\u2270",nleftarrow:"\u219A",nleftrightarrow:"\u21AE",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2A7D\u0338",nles:"\u2A7D\u0338",nless:"\u226E",nlsim:"\u2274",nlt:"\u226E",nltri:"\u22EA",nltrie:"\u22EC",nmid:"\u2224",nopf:"\u{1D55F}",not:"\xAC",notin:"\u2209",notinE:"\u22F9\u0338",notindot:"\u22F5\u0338",notinva:"\u2209",notinvb:"\u22F7",notinvc:"\u22F6",notni:"\u220C",notniva:"\u220C",notnivb:"\u22FE",notnivc:"\u22FD",npar:"\u2226",nparallel:"\u2226",nparsl:"\u2AFD\u20E5",npart:"\u2202\u0338",npolint:"\u2A14",npr:"\u2280",nprcue:"\u22E0",npre:"\u2AAF\u0338",nprec:"\u2280",npreceq:"\u2AAF\u0338",nrArr:"\u21CF",nrarr:"\u219B",nrarrc:"\u2933\u0338",nrarrw:"\u219D\u0338",nrightarrow:"\u219B",nrtri:"\u22EB",nrtrie:"\u22ED",nsc:"\u2281",nsccue:"\u22E1",nsce:"\u2AB0\u0338",nscr:"\u{1D4C3}",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22E2",nsqsupe:"\u22E3",nsub:"\u2284",nsubE:"\u2AC5\u0338",nsube:"\u2288",nsubset:"\u2282\u20D2",nsubseteq:"\u2288",nsubseteqq:"\u2AC5\u0338",nsucc:"\u2281",nsucceq:"\u2AB0\u0338",nsup:"\u2285",nsupE:"\u2AC6\u0338",nsupe:"\u2289",nsupset:"\u2283\u20D2",nsupseteq:"\u2289",nsupseteqq:"\u2AC6\u0338",ntgl:"\u2279",ntilde:"\xF1",ntlg:"\u2278",ntriangleleft:"\u22EA",ntrianglelefteq:"\u22EC",ntriangleright:"\u22EB",ntrianglerighteq:"\u22ED",nu:"\u03BD",num:"#",numero:"\u2116",numsp:"\u2007",nvDash:"\u22AD",nvHarr:"\u2904",nvap:"\u224D\u20D2",nvdash:"\u22AC",nvge:"\u2265\u20D2",nvgt:">\u20D2",nvinfin:"\u29DE",nvlArr:"\u2902",nvle:"\u2264\u20D2",nvlt:"<\u20D2",nvltrie:"\u22B4\u20D2",nvrArr:"\u2903",nvrtrie:"\u22B5\u20D2",nvsim:"\u223C\u20D2",nwArr:"\u21D6",nwarhk:"\u2923",nwarr:"\u2196",nwarrow:"\u2196",nwnear:"\u2927",oS:"\u24C8",oacute:"\xF3",oast:"\u229B",ocir:"\u229A",ocirc:"\xF4",ocy:"\u043E",odash:"\u229D",odblac:"\u0151",odiv:"\u2A38",odot:"\u2299",odsold:"\u29BC",oelig:"\u0153",ofcir:"\u29BF",ofr:"\u{1D52C}",ogon:"\u02DB",ograve:"\xF2",ogt:"\u29C1",ohbar:"\u29B5",ohm:"\u03A9",oint:"\u222E",olarr:"\u21BA",olcir:"\u29BE",olcross:"\u29BB",oline:"\u203E",olt:"\u29C0",omacr:"\u014D",omega:"\u03C9",omicron:"\u03BF",omid:"\u29B6",ominus:"\u2296",oopf:"\u{1D560}",opar:"\u29B7",operp:"\u29B9",oplus:"\u2295",or:"\u2228",orarr:"\u21BB",ord:"\u2A5D",order:"\u2134",orderof:"\u2134",ordf:"\xAA",ordm:"\xBA",origof:"\u22B6",oror:"\u2A56",orslope:"\u2A57",orv:"\u2A5B",oscr:"\u2134",oslash:"\xF8",osol:"\u2298",otilde:"\xF5",otimes:"\u2297",otimesas:"\u2A36",ouml:"\xF6",ovbar:"\u233D",par:"\u2225",para:"\xB6",parallel:"\u2225",parsim:"\u2AF3",parsl:"\u2AFD",part:"\u2202",pcy:"\u043F",percnt:"%",period:".",permil:"\u2030",perp:"\u22A5",pertenk:"\u2031",pfr:"\u{1D52D}",phi:"\u03C6",phiv:"\u03D5",phmmat:"\u2133",phone:"\u260E",pi:"\u03C0",pitchfork:"\u22D4",piv:"\u03D6",planck:"\u210F",planckh:"\u210E",plankv:"\u210F",plus:"+",plusacir:"\u2A23",plusb:"\u229E",pluscir:"\u2A22",plusdo:"\u2214",plusdu:"\u2A25",pluse:"\u2A72",plusmn:"\xB1",plussim:"\u2A26",plustwo:"\u2A27",pm:"\xB1",pointint:"\u2A15",popf:"\u{1D561}",pound:"\xA3",pr:"\u227A",prE:"\u2AB3",prap:"\u2AB7",prcue:"\u227C",pre:"\u2AAF",prec:"\u227A",precapprox:"\u2AB7",preccurlyeq:"\u227C",preceq:"\u2AAF",precnapprox:"\u2AB9",precneqq:"\u2AB5",precnsim:"\u22E8",precsim:"\u227E",prime:"\u2032",primes:"\u2119",prnE:"\u2AB5",prnap:"\u2AB9",prnsim:"\u22E8",prod:"\u220F",profalar:"\u232E",profline:"\u2312",profsurf:"\u2313",prop:"\u221D",propto:"\u221D",prsim:"\u227E",prurel:"\u22B0",pscr:"\u{1D4C5}",psi:"\u03C8",puncsp:"\u2008",qfr:"\u{1D52E}",qint:"\u2A0C",qopf:"\u{1D562}",qprime:"\u2057",qscr:"\u{1D4C6}",quaternions:"\u210D",quatint:"\u2A16",quest:"?",questeq:"\u225F",quot:'"',rAarr:"\u21DB",rArr:"\u21D2",rAtail:"\u291C",rBarr:"\u290F",rHar:"\u2964",race:"\u223D\u0331",racute:"\u0155",radic:"\u221A",raemptyv:"\u29B3",rang:"\u27E9",rangd:"\u2992",range:"\u29A5",rangle:"\u27E9",raquo:"\xBB",rarr:"\u2192",rarrap:"\u2975",rarrb:"\u21E5",rarrbfs:"\u2920",rarrc:"\u2933",rarrfs:"\u291E",rarrhk:"\u21AA",rarrlp:"\u21AC",rarrpl:"\u2945",rarrsim:"\u2974",rarrtl:"\u21A3",rarrw:"\u219D",ratail:"\u291A",ratio:"\u2236",rationals:"\u211A",rbarr:"\u290D",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298C",rbrksld:"\u298E",rbrkslu:"\u2990",rcaron:"\u0159",rcedil:"\u0157",rceil:"\u2309",rcub:"}",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201D",rdquor:"\u201D",rdsh:"\u21B3",real:"\u211C",realine:"\u211B",realpart:"\u211C",reals:"\u211D",rect:"\u25AD",reg:"\xAE",rfisht:"\u297D",rfloor:"\u230B",rfr:"\u{1D52F}",rhard:"\u21C1",rharu:"\u21C0",rharul:"\u296C",rho:"\u03C1",rhov:"\u03F1",rightarrow:"\u2192",rightarrowtail:"\u21A3",rightharpoondown:"\u21C1",rightharpoonup:"\u21C0",rightleftarrows:"\u21C4",rightleftharpoons:"\u21CC",rightrightarrows:"\u21C9",rightsquigarrow:"\u219D",rightthreetimes:"\u22CC",ring:"\u02DA",risingdotseq:"\u2253",rlarr:"\u21C4",rlhar:"\u21CC",rlm:"\u200F",rmoust:"\u23B1",rmoustache:"\u23B1",rnmid:"\u2AEE",roang:"\u27ED",roarr:"\u21FE",robrk:"\u27E7",ropar:"\u2986",ropf:"\u{1D563}",roplus:"\u2A2E",rotimes:"\u2A35",rpar:")",rpargt:"\u2994",rppolint:"\u2A12",rrarr:"\u21C9",rsaquo:"\u203A",rscr:"\u{1D4C7}",rsh:"\u21B1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22CC",rtimes:"\u22CA",rtri:"\u25B9",rtrie:"\u22B5",rtrif:"\u25B8",rtriltri:"\u29CE",ruluhar:"\u2968",rx:"\u211E",sacute:"\u015B",sbquo:"\u201A",sc:"\u227B",scE:"\u2AB4",scap:"\u2AB8",scaron:"\u0161",sccue:"\u227D",sce:"\u2AB0",scedil:"\u015F",scirc:"\u015D",scnE:"\u2AB6",scnap:"\u2ABA",scnsim:"\u22E9",scpolint:"\u2A13",scsim:"\u227F",scy:"\u0441",sdot:"\u22C5",sdotb:"\u22A1",sdote:"\u2A66",seArr:"\u21D8",searhk:"\u2925",searr:"\u2198",searrow:"\u2198",sect:"\xA7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",sfr:"\u{1D530}",sfrown:"\u2322",sharp:"\u266F",shchcy:"\u0449",shcy:"\u0448",shortmid:"\u2223",shortparallel:"\u2225",shy:"\xAD",sigma:"\u03C3",sigmaf:"\u03C2",sigmav:"\u03C2",sim:"\u223C",simdot:"\u2A6A",sime:"\u2243",simeq:"\u2243",simg:"\u2A9E",simgE:"\u2AA0",siml:"\u2A9D",simlE:"\u2A9F",simne:"\u2246",simplus:"\u2A24",simrarr:"\u2972",slarr:"\u2190",smallsetminus:"\u2216",smashp:"\u2A33",smeparsl:"\u29E4",smid:"\u2223",smile:"\u2323",smt:"\u2AAA",smte:"\u2AAC",smtes:"\u2AAC\uFE00",softcy:"\u044C",sol:"/",solb:"\u29C4",solbar:"\u233F",sopf:"\u{1D564}",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\uFE00",sqcup:"\u2294",sqcups:"\u2294\uFE00",sqsub:"\u228F",sqsube:"\u2291",sqsubset:"\u228F",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",squ:"\u25A1",square:"\u25A1",squarf:"\u25AA",squf:"\u25AA",srarr:"\u2192",sscr:"\u{1D4C8}",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22C6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03F5",straightphi:"\u03D5",strns:"\xAF",sub:"\u2282",subE:"\u2AC5",subdot:"\u2ABD",sube:"\u2286",subedot:"\u2AC3",submult:"\u2AC1",subnE:"\u2ACB",subne:"\u228A",subplus:"\u2ABF",subrarr:"\u2979",subset:"\u2282",subseteq:"\u2286",subseteqq:"\u2AC5",subsetneq:"\u228A",subsetneqq:"\u2ACB",subsim:"\u2AC7",subsub:"\u2AD5",subsup:"\u2AD3",succ:"\u227B",succapprox:"\u2AB8",succcurlyeq:"\u227D",succeq:"\u2AB0",succnapprox:"\u2ABA",succneqq:"\u2AB6",succnsim:"\u22E9",succsim:"\u227F",sum:"\u2211",sung:"\u266A",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",sup:"\u2283",supE:"\u2AC6",supdot:"\u2ABE",supdsub:"\u2AD8",supe:"\u2287",supedot:"\u2AC4",suphsol:"\u27C9",suphsub:"\u2AD7",suplarr:"\u297B",supmult:"\u2AC2",supnE:"\u2ACC",supne:"\u228B",supplus:"\u2AC0",supset:"\u2283",supseteq:"\u2287",supseteqq:"\u2AC6",supsetneq:"\u228B",supsetneqq:"\u2ACC",supsim:"\u2AC8",supsub:"\u2AD4",supsup:"\u2AD6",swArr:"\u21D9",swarhk:"\u2926",swarr:"\u2199",swarrow:"\u2199",swnwar:"\u292A",szlig:"\xDF",target:"\u2316",tau:"\u03C4",tbrk:"\u23B4",tcaron:"\u0165",tcedil:"\u0163",tcy:"\u0442",tdot:"\u20DB",telrec:"\u2315",tfr:"\u{1D531}",there4:"\u2234",therefore:"\u2234",theta:"\u03B8",thetasym:"\u03D1",thetav:"\u03D1",thickapprox:"\u2248",thicksim:"\u223C",thinsp:"\u2009",thkap:"\u2248",thksim:"\u223C",thorn:"\xFE",tilde:"\u02DC",times:"\xD7",timesb:"\u22A0",timesbar:"\u2A31",timesd:"\u2A30",tint:"\u222D",toea:"\u2928",top:"\u22A4",topbot:"\u2336",topcir:"\u2AF1",topf:"\u{1D565}",topfork:"\u2ADA",tosa:"\u2929",tprime:"\u2034",trade:"\u2122",triangle:"\u25B5",triangledown:"\u25BF",triangleleft:"\u25C3",trianglelefteq:"\u22B4",triangleq:"\u225C",triangleright:"\u25B9",trianglerighteq:"\u22B5",tridot:"\u25EC",trie:"\u225C",triminus:"\u2A3A",triplus:"\u2A39",trisb:"\u29CD",tritime:"\u2A3B",trpezium:"\u23E2",tscr:"\u{1D4C9}",tscy:"\u0446",tshcy:"\u045B",tstrok:"\u0167",twixt:"\u226C",twoheadleftarrow:"\u219E",twoheadrightarrow:"\u21A0",uArr:"\u21D1",uHar:"\u2963",uacute:"\xFA",uarr:"\u2191",ubrcy:"\u045E",ubreve:"\u016D",ucirc:"\xFB",ucy:"\u0443",udarr:"\u21C5",udblac:"\u0171",udhar:"\u296E",ufisht:"\u297E",ufr:"\u{1D532}",ugrave:"\xF9",uharl:"\u21BF",uharr:"\u21BE",uhblk:"\u2580",ulcorn:"\u231C",ulcorner:"\u231C",ulcrop:"\u230F",ultri:"\u25F8",umacr:"\u016B",uml:"\xA8",uogon:"\u0173",uopf:"\u{1D566}",uparrow:"\u2191",updownarrow:"\u2195",upharpoonleft:"\u21BF",upharpoonright:"\u21BE",uplus:"\u228E",upsi:"\u03C5",upsih:"\u03D2",upsilon:"\u03C5",upuparrows:"\u21C8",urcorn:"\u231D",urcorner:"\u231D",urcrop:"\u230E",uring:"\u016F",urtri:"\u25F9",uscr:"\u{1D4CA}",utdot:"\u22F0",utilde:"\u0169",utri:"\u25B5",utrif:"\u25B4",uuarr:"\u21C8",uuml:"\xFC",uwangle:"\u29A7",vArr:"\u21D5",vBar:"\u2AE8",vBarv:"\u2AE9",vDash:"\u22A8",vangrt:"\u299C",varepsilon:"\u03F5",varkappa:"\u03F0",varnothing:"\u2205",varphi:"\u03D5",varpi:"\u03D6",varpropto:"\u221D",varr:"\u2195",varrho:"\u03F1",varsigma:"\u03C2",varsubsetneq:"\u228A\uFE00",varsubsetneqq:"\u2ACB\uFE00",varsupsetneq:"\u228B\uFE00",varsupsetneqq:"\u2ACC\uFE00",vartheta:"\u03D1",vartriangleleft:"\u22B2",vartriangleright:"\u22B3",vcy:"\u0432",vdash:"\u22A2",vee:"\u2228",veebar:"\u22BB",veeeq:"\u225A",vellip:"\u22EE",verbar:"|",vert:"|",vfr:"\u{1D533}",vltri:"\u22B2",vnsub:"\u2282\u20D2",vnsup:"\u2283\u20D2",vopf:"\u{1D567}",vprop:"\u221D",vrtri:"\u22B3",vscr:"\u{1D4CB}",vsubnE:"\u2ACB\uFE00",vsubne:"\u228A\uFE00",vsupnE:"\u2ACC\uFE00",vsupne:"\u228B\uFE00",vzigzag:"\u299A",wcirc:"\u0175",wedbar:"\u2A5F",wedge:"\u2227",wedgeq:"\u2259",weierp:"\u2118",wfr:"\u{1D534}",wopf:"\u{1D568}",wp:"\u2118",wr:"\u2240",wreath:"\u2240",wscr:"\u{1D4CC}",xcap:"\u22C2",xcirc:"\u25EF",xcup:"\u22C3",xdtri:"\u25BD",xfr:"\u{1D535}",xhArr:"\u27FA",xharr:"\u27F7",xi:"\u03BE",xlArr:"\u27F8",xlarr:"\u27F5",xmap:"\u27FC",xnis:"\u22FB",xodot:"\u2A00",xopf:"\u{1D569}",xoplus:"\u2A01",xotime:"\u2A02",xrArr:"\u27F9",xrarr:"\u27F6",xscr:"\u{1D4CD}",xsqcup:"\u2A06",xuplus:"\u2A04",xutri:"\u25B3",xvee:"\u22C1",xwedge:"\u22C0",yacute:"\xFD",yacy:"\u044F",ycirc:"\u0177",ycy:"\u044B",yen:"\xA5",yfr:"\u{1D536}",yicy:"\u0457",yopf:"\u{1D56A}",yscr:"\u{1D4CE}",yucy:"\u044E",yuml:"\xFF",zacute:"\u017A",zcaron:"\u017E",zcy:"\u0437",zdot:"\u017C",zeetrf:"\u2128",zeta:"\u03B6",zfr:"\u{1D537}",zhcy:"\u0436",zigrarr:"\u21DD",zopf:"\u{1D56B}",zscr:"\u{1D4CF}",zwj:"\u200D",zwnj:"\u200C"};var nT={}.hasOwnProperty;function Oi(e){return nT.call(Xd,e)?Xd[e]:!1}var al={name:"characterReference",tokenize:rT};function rT(e,t,r){let n=this,i=0,a,o;return s;function s(d){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(d),e.exit("characterReferenceMarker"),u}function u(d){return d===35?(e.enter("characterReferenceMarkerNumeric"),e.consume(d),e.exit("characterReferenceMarkerNumeric"),l):(e.enter("characterReferenceValue"),a=31,o=Gt,c(d))}function l(d){return d===88||d===120?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(d),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),a=6,o=zw,c):(e.enter("characterReferenceValue"),a=7,o=za,c(d))}function c(d){let f;return d===59&&i?(f=e.exit("characterReferenceValue"),o===Gt&&!Oi(n.sliceSerialize(f))?r(d):(e.enter("characterReferenceMarker"),e.consume(d),e.exit("characterReferenceMarker"),e.exit("characterReference"),t)):o(d)&&i++=4?o(l):r(l)}function o(l){return l===null?u(l):ce(l)?e.attempt(aT,o,u)(l):(e.enter("codeFlowValue"),s(l))}function s(l){return l===null||ce(l)?(e.exit("codeFlowValue"),o(l)):(e.consume(l),s)}function u(l){return e.exit("codeIndented"),t(l)}}function sT(e,t,r){let n=this;return i;function i(o){return n.parser.lazy[n.now().line]?r(o):ce(o)?(e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),i):Se(e,a,"linePrefix",4+1)(o)}function a(o){let s=n.events[n.events.length-1];return s&&s[1].type==="linePrefix"&&s[2].sliceSerialize(s[1],!0).length>=4?t(o):ce(o)?i(o):r(o)}}h();var Zd={name:"codeText",tokenize:uT,resolve:lT,previous:cT};function lT(e){let t=e.length-4,r=3,n,i;if((e[r][1].type==="lineEnding"||e[r][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=r;++n=4?t(o):e.interrupt(n.parser.constructs.flow,r,t)(o)}}h();h();function ll(e,t,r,n,i,a,o,s,u){let l=u||Number.POSITIVE_INFINITY,c=0;return d;function d(x){return x===60?(e.enter(n),e.enter(i),e.enter(a),e.consume(x),e.exit(a),f):x===null||x===41||ja(x)?r(x):(e.enter(n),e.enter(o),e.enter(s),e.enter("chunkString",{contentType:"string"}),y(x))}function f(x){return x===62?(e.enter(a),e.consume(x),e.exit(a),e.exit(i),e.exit(n),t):(e.enter(s),e.enter("chunkString",{contentType:"string"}),p(x))}function p(x){return x===62?(e.exit("chunkString"),e.exit(s),f(x)):x===null||x===60||ce(x)?r(x):(e.consume(x),x===92?m:p)}function m(x){return x===60||x===62||x===92?(e.consume(x),p):p(x)}function y(x){return x===40?++c>l?r(x):(e.consume(x),y):x===41?c--?(e.consume(x),y):(e.exit("chunkString"),e.exit(s),e.exit(o),e.exit(n),t(x)):x===null||Qe(x)?c?r(x):(e.exit("chunkString"),e.exit(s),e.exit(o),e.exit(n),t(x)):ja(x)?r(x):(e.consume(x),x===92?b:y)}function b(x){return x===40||x===41||x===92?(e.consume(x),y):y(x)}}h();function cl(e,t,r,n,i,a){let o=this,s=0,u;return l;function l(p){return e.enter(n),e.enter(i),e.consume(p),e.exit(i),e.enter(a),c}function c(p){return p===null||p===91||p===93&&!u||p===94&&!s&&"_hiddenFootnoteSupport"in o.parser.constructs||s>999?r(p):p===93?(e.exit(a),e.enter(i),e.consume(p),e.exit(i),e.exit(n),t):ce(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),c):(e.enter("chunkString",{contentType:"string"}),d(p))}function d(p){return p===null||p===91||p===93||ce(p)||s++>999?(e.exit("chunkString"),c(p)):(e.consume(p),u=u||!Be(p),p===92?f:d)}function f(p){return p===91||p===92||p===93?(e.consume(p),s++,d):d(p)}}h();function ul(e,t,r,n,i,a){let o;return s;function s(f){return e.enter(n),e.enter(i),e.consume(f),e.exit(i),o=f===40?41:f,u}function u(f){return f===o?(e.enter(i),e.consume(f),e.exit(i),e.exit(n),t):(e.enter(a),l(f))}function l(f){return f===o?(e.exit(a),u(o)):f===null?r(f):ce(f)?(e.enter("lineEnding"),e.consume(f),e.exit("lineEnding"),Se(e,l,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),c(f))}function c(f){return f===o||f===null||ce(f)?(e.exit("chunkString"),l(f)):(e.consume(f),f===92?d:c)}function d(f){return f===o||f===92?(e.consume(f),c):c(f)}}h();function jr(e,t){let r;return n;function n(i){return ce(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),r=!0,n):Be(i)?Se(e,n,r?"linePrefix":"lineSuffix")(i):t(i)}}h();function nr(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var tf={name:"definition",tokenize:vT},gT={tokenize:yT,partial:!0};function vT(e,t,r){let n=this,i;return a;function a(u){return e.enter("definition"),cl.call(n,e,o,r,"definitionLabel","definitionLabelMarker","definitionLabelString")(u)}function o(u){return i=nr(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),u===58?(e.enter("definitionMarker"),e.consume(u),e.exit("definitionMarker"),jr(e,ll(e,e.attempt(gT,Se(e,s,"whitespace"),Se(e,s,"whitespace")),r,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString"))):r(u)}function s(u){return u===null||ce(u)?(e.exit("definition"),n.parser.defined.includes(i)||n.parser.defined.push(i),t(u)):r(u)}}function yT(e,t,r){return n;function n(o){return Qe(o)?jr(e,i)(o):r(o)}function i(o){return o===34||o===39||o===40?ul(e,Se(e,a,"whitespace"),r,"definitionTitle","definitionTitleMarker","definitionTitleString")(o):r(o)}function a(o){return o===null||ce(o)?t(o):r(o)}}h();var nf={name:"hardBreakEscape",tokenize:bT};function bT(e,t,r){return n;function n(a){return e.enter("hardBreakEscape"),e.enter("escapeMarker"),e.consume(a),i}function i(a){return ce(a)?(e.exit("escapeMarker"),e.exit("hardBreakEscape"),t(a)):r(a)}}h();var rf={name:"headingAtx",tokenize:ET,resolve:wT};function wT(e,t){let r=e.length-2,n=3,i,a;return e[n][1].type==="whitespace"&&(n+=2),r-2>n&&e[r][1].type==="whitespace"&&(r-=2),e[r][1].type==="atxHeadingSequence"&&(n===r-1||r-4>n&&e[r-2][1].type==="whitespace")&&(r-=n+1===r?2:4),r>n&&(i={type:"atxHeadingText",start:e[n][1].start,end:e[r][1].end},a={type:"chunkText",start:e[n][1].start,end:e[r][1].end,contentType:"text"},Ft(e,n,r-n+1,[["enter",i,t],["enter",a,t],["exit",a,t],["exit",i,t]])),e}function ET(e,t,r){let n=this,i=0;return a;function a(c){return e.enter("atxHeading"),e.enter("atxHeadingSequence"),o(c)}function o(c){return c===35&&i++<6?(e.consume(c),o):c===null||Qe(c)?(e.exit("atxHeadingSequence"),n.interrupt?t(c):s(c)):r(c)}function s(c){return c===35?(e.enter("atxHeadingSequence"),u(c)):c===null||ce(c)?(e.exit("atxHeading"),t(c)):Be(c)?Se(e,s,"whitespace")(c):(e.enter("atxHeadingText"),l(c))}function u(c){return c===35?(e.consume(c),u):(e.exit("atxHeadingSequence"),s(c))}function l(c){return c===null||c===35||Qe(c)?(e.exit("atxHeadingText"),s(c)):(e.consume(c),l)}}h();h();var Zw=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],af=["pre","script","style","textarea"];var of={name:"htmlFlow",tokenize:ST,resolveTo:kT,concrete:!0},xT={tokenize:_T,partial:!0};function kT(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function ST(e,t,r){let n=this,i,a,o,s,u;return l;function l(P){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(P),c}function c(P){return P===33?(e.consume(P),d):P===47?(e.consume(P),m):P===63?(e.consume(P),i=3,n.interrupt?t:be):dn(P)?(e.consume(P),o=String.fromCharCode(P),a=!0,y):r(P)}function d(P){return P===45?(e.consume(P),i=2,f):P===91?(e.consume(P),i=5,o="CDATA[",s=0,p):dn(P)?(e.consume(P),i=4,n.interrupt?t:be):r(P)}function f(P){return P===45?(e.consume(P),n.interrupt?t:be):r(P)}function p(P){return P===o.charCodeAt(s++)?(e.consume(P),s===o.length?n.interrupt?t:Z:p):r(P)}function m(P){return dn(P)?(e.consume(P),o=String.fromCharCode(P),y):r(P)}function y(P){return P===null||P===47||P===62||Qe(P)?P!==47&&a&&af.includes(o.toLowerCase())?(i=1,n.interrupt?t(P):Z(P)):Zw.includes(o.toLowerCase())?(i=6,P===47?(e.consume(P),b):n.interrupt?t(P):Z(P)):(i=7,n.interrupt&&!n.parser.lazy[n.now().line]?r(P):a?D(P):x(P)):P===45||Gt(P)?(e.consume(P),o+=String.fromCharCode(P),y):r(P)}function b(P){return P===62?(e.consume(P),n.interrupt?t:Z):r(P)}function x(P){return Be(P)?(e.consume(P),x):z(P)}function D(P){return P===47?(e.consume(P),z):P===58||P===95||dn(P)?(e.consume(P),C):Be(P)?(e.consume(P),D):z(P)}function C(P){return P===45||P===46||P===58||P===95||Gt(P)?(e.consume(P),C):A(P)}function A(P){return P===61?(e.consume(P),N):Be(P)?(e.consume(P),A):D(P)}function N(P){return P===null||P===60||P===61||P===62||P===96?r(P):P===34||P===39?(e.consume(P),u=P,T):Be(P)?(e.consume(P),N):(u=null,O(P))}function T(P){return P===null||ce(P)?r(P):P===u?(e.consume(P),W):(e.consume(P),T)}function O(P){return P===null||P===34||P===39||P===60||P===61||P===62||P===96||Qe(P)?A(P):(e.consume(P),O)}function W(P){return P===47||P===62||Be(P)?D(P):r(P)}function z(P){return P===62?(e.consume(P),ee):r(P)}function ee(P){return Be(P)?(e.consume(P),ee):P===null||ce(P)?Z(P):r(P)}function Z(P){return P===45&&i===2?(e.consume(P),re):P===60&&i===1?(e.consume(P),pe):P===62&&i===4?(e.consume(P),De):P===63&&i===3?(e.consume(P),be):P===93&&i===5?(e.consume(P),ve):ce(P)&&(i===6||i===7)?e.check(xT,De,le)(P):P===null||ce(P)?le(P):(e.consume(P),Z)}function le(P){return e.exit("htmlFlowData"),X(P)}function X(P){return P===null?L(P):ce(P)?e.attempt({tokenize:G,partial:!0},X,L)(P):(e.enter("htmlFlowData"),Z(P))}function G(P,ct,Je){return V;function V(q){return P.enter("lineEnding"),P.consume(q),P.exit("lineEnding"),j}function j(q){return n.parser.lazy[n.now().line]?Je(q):ct(q)}}function re(P){return P===45?(e.consume(P),be):Z(P)}function pe(P){return P===47?(e.consume(P),o="",he):Z(P)}function he(P){return P===62&&af.includes(o.toLowerCase())?(e.consume(P),De):dn(P)&&o.length<8?(e.consume(P),o+=String.fromCharCode(P),he):Z(P)}function ve(P){return P===93?(e.consume(P),be):Z(P)}function be(P){return P===62?(e.consume(P),De):P===45&&i===2?(e.consume(P),be):Z(P)}function De(P){return P===null||ce(P)?(e.exit("htmlFlowData"),L(P)):(e.consume(P),De)}function L(P){return e.exit("htmlFlow"),t(P)}}function _T(e,t,r){return n;function n(i){return e.exit("htmlFlowData"),e.enter("lineEndingBlank"),e.consume(i),e.exit("lineEndingBlank"),e.attempt(_r,t,r)}}h();var sf={name:"htmlText",tokenize:CT};function CT(e,t,r){let n=this,i,a,o,s;return u;function u(L){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(L),l}function l(L){return L===33?(e.consume(L),c):L===47?(e.consume(L),O):L===63?(e.consume(L),N):dn(L)?(e.consume(L),ee):r(L)}function c(L){return L===45?(e.consume(L),d):L===91?(e.consume(L),a="CDATA[",o=0,b):dn(L)?(e.consume(L),A):r(L)}function d(L){return L===45?(e.consume(L),f):r(L)}function f(L){return L===null||L===62?r(L):L===45?(e.consume(L),p):m(L)}function p(L){return L===null||L===62?r(L):m(L)}function m(L){return L===null?r(L):L===45?(e.consume(L),y):ce(L)?(s=m,ve(L)):(e.consume(L),m)}function y(L){return L===45?(e.consume(L),De):m(L)}function b(L){return L===a.charCodeAt(o++)?(e.consume(L),o===a.length?x:b):r(L)}function x(L){return L===null?r(L):L===93?(e.consume(L),D):ce(L)?(s=x,ve(L)):(e.consume(L),x)}function D(L){return L===93?(e.consume(L),C):x(L)}function C(L){return L===62?De(L):L===93?(e.consume(L),C):x(L)}function A(L){return L===null||L===62?De(L):ce(L)?(s=A,ve(L)):(e.consume(L),A)}function N(L){return L===null?r(L):L===63?(e.consume(L),T):ce(L)?(s=N,ve(L)):(e.consume(L),N)}function T(L){return L===62?De(L):N(L)}function O(L){return dn(L)?(e.consume(L),W):r(L)}function W(L){return L===45||Gt(L)?(e.consume(L),W):z(L)}function z(L){return ce(L)?(s=z,ve(L)):Be(L)?(e.consume(L),z):De(L)}function ee(L){return L===45||Gt(L)?(e.consume(L),ee):L===47||L===62||Qe(L)?Z(L):r(L)}function Z(L){return L===47?(e.consume(L),De):L===58||L===95||dn(L)?(e.consume(L),le):ce(L)?(s=Z,ve(L)):Be(L)?(e.consume(L),Z):De(L)}function le(L){return L===45||L===46||L===58||L===95||Gt(L)?(e.consume(L),le):X(L)}function X(L){return L===61?(e.consume(L),G):ce(L)?(s=X,ve(L)):Be(L)?(e.consume(L),X):Z(L)}function G(L){return L===null||L===60||L===61||L===62||L===96?r(L):L===34||L===39?(e.consume(L),i=L,re):ce(L)?(s=G,ve(L)):Be(L)?(e.consume(L),G):(e.consume(L),i=void 0,he)}function re(L){return L===i?(e.consume(L),pe):L===null?r(L):ce(L)?(s=re,ve(L)):(e.consume(L),re)}function pe(L){return L===62||L===47||Qe(L)?Z(L):r(L)}function he(L){return L===null||L===34||L===39||L===60||L===61||L===96?r(L):L===62||Qe(L)?Z(L):(e.consume(L),he)}function ve(L){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(L),e.exit("lineEnding"),Se(e,be,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function be(L){return e.enter("htmlTextData"),s(L)}function De(L){return L===62?(e.consume(L),e.exit("htmlTextData"),e.exit("htmlText"),t):r(L)}}h();var qr={name:"labelEnd",tokenize:LT,resolveTo:AT,resolveAll:IT},TT={tokenize:PT},DT={tokenize:FT},MT={tokenize:NT};function IT(e){let t=-1,r;for(;++t-1&&(o[0]=o[0].slice(n)),a>0&&o.push(e[i].slice(0,a))),o}function XT(e,t){let r=-1,n=[],i;for(;++rd&&(r=d);let p=r-f,g=c.getMaxVerticalScroll(),y=c.getVerticalScroll();n>g&&(n=g);let b=n-y,x=Math.abs(Math.round(p/1e3*a.speed)),T=Math.abs(Math.round(b/1e3*a.speed)),C=x>T?x:T;return Ca.maxDuration&&(C=a.maxDuration),new Promise((A,H)=>{p===0&&b===0&&A(!0),Zn.remove(c.element,!0);let D,K=()=>{se(),cancelAnimationFrame(D),A(!1)};Zn.add(c.element,K);let z=ie=>ie.preventDefault(),U=a.cancelOnUserAction?K:z,Z=a.cancelOnUserAction?{passive:!0}:{passive:!1},J=["wheel","touchstart","keydown","mousedown"],se=()=>{J.forEach(ie=>{c.element.removeEventListener(ie,U,Z)})};J.forEach(ie=>{c.element.addEventListener(ie,U,Z)});let G=Date.now(),Q=()=>{var ie=Date.now()-G,he=ie/C;let pe=Math.round(f+p*a.easing(he)),ge=Math.round(y+b*a.easing(he));ie{this.activeScroll.size===0&&(this.scrollState=jl(this.scrollEl),this.handleEntityRegistration())};this.onDragEnd=()=>{this.activeScroll.clear()};this.handleBeginDragScroll=({scrollEntitySide:t,scrollStrength:r})=>{this.isDoneScrolling(t)||(this.activeScroll.set(t,r),this.handleDragScroll())};this.handleUpdateDragScroll=({scrollEntitySide:t,scrollStrength:r})=>{this.isDoneScrolling(t)||this.activeScroll.set(t,r)};this.handleEndDragScroll=({scrollEntitySide:t})=>{this.activeScroll.delete(t)};this.dndManager=t,this.instanceId=Ae(),this.scopeId=r,this.triggerTypes=n,this.scrollState=on,this.parent=i,this.activeScroll=new Map,this.pollForNodes(a)}pollForNodes(t){!t()||this.parent&&!this.parent.observerHandlers?this.dndManager.win.requestAnimationFrame(()=>this.pollForNodes(t)):this.initNodes(t())}initNodes(t){this.scrollEl=t,this.scrollEl.dataset.hitboxid=this.instanceId,this.scrollEl.dataset.scrollid=this.instanceId,this.top=this.createScrollEntity("top"),this.right=this.createScrollEntity("right"),this.bottom=this.createScrollEntity("bottom"),this.left=this.createScrollEntity("left"),this.bindScrollHandlers(),this.observerHandlers=new Map,this.observer=new IntersectionObserver(r=>{r.forEach(n=>{var a;let i=(a=n.target.dataset)==null?void 0:a.hitboxid;if(i&&this.observerHandlers.has(i)){let o=this.observerHandlers.get(i);o&&o(n)}})},{root:t,threshold:.1}),this.scrollEl.addEventListener("scroll",this.onScroll,{passive:!0,capture:!1}),this.dndManager.emitter.on("scrollResize",this.onScroll),this.scrollEl.win.setTimeout(()=>{this.onScroll()}),this.dndManager.observeResize(this.scrollEl),this.parent?this.parent.registerObserverHandler(this.instanceId,this.scrollEl,r=>{r.isIntersecting?this.handleEntityRegistration():this.handleEntityUnregistration()}):this.handleEntityRegistration()}destroy(){var t;this.handleEntityUnregistration(),this.observer.disconnect(),this.unbindScrollHandlers(),this.scrollEl.removeEventListener("scroll",this.onScroll),this.dndManager.emitter.off("scrollResize",this.onScroll),(t=this.parent)==null||t.unregisterObserverHandler(this.instanceId,this.scrollEl),this.dndManager.unobserveResize(this.scrollEl)}handleEntityRegistration(){Ps.forEach(t=>{let r=Ze(this.scrollEl),n=this.getId(t),i=this.dndManager.scrollEntities.has(n),a=this.isDoneScrolling(t);!a&&!i?this.dndManager.registerScrollEntity(n,this[t],r):a&&i&&this.dndManager.unregisterScrollEntity(n,r)})}handleEntityUnregistration(){Ps.forEach(t=>{let r=Ze(this.scrollEl),n=this.getId(t);this.dndManager.unregisterScrollEntity(n,r)})}registerObserverHandler(t,r,n){this.observerHandlers.set(t,n),this.observer.observe(r)}unregisterObserverHandler(t,r){this.observerHandlers.delete(t),this.observer.unobserve(r)}bindScrollHandlers(){Ps.forEach(t=>{let r=this.getId(t);this.dndManager.dragManager.emitter.on("beginDragScroll",this.handleBeginDragScroll,r),this.dndManager.dragManager.emitter.on("updateDragScroll",this.handleUpdateDragScroll,r),this.dndManager.dragManager.emitter.on("endDragScroll",this.handleEndDragScroll,r),this.dndManager.dragManager.emitter.on("dragEnd",this.onDragEnd)})}unbindScrollHandlers(){Ps.forEach(t=>{let r=this.getId(t);this.dndManager.dragManager.emitter.off("beginDragScroll",this.handleBeginDragScroll,r),this.dndManager.dragManager.emitter.off("updateDragScroll",this.handleUpdateDragScroll,r),this.dndManager.dragManager.emitter.off("endDragScroll",this.handleEndDragScroll,r),this.dndManager.dragManager.emitter.off("dragEnd",this.onDragEnd)})}isDoneScrolling(t){switch(t){case"top":return this.scrollState.y===0;case"right":return this.scrollState.x===this.scrollState.maxX;case"bottom":return this.scrollState.y===this.scrollState.maxY;case"left":return this.scrollState.x===0}}handleDragScroll(){this.activeScroll.size!==0&&this.scrollEl.win.requestAnimationFrame(()=>{let t={left:0,top:0};this.activeScroll.forEach((r,n)=>{if(this.isDoneScrolling(n))return this.activeScroll.delete(n);let i=["left","right"].includes(n)?"left":"top",a=["right","bottom"].includes(n);t[i]=a?Math.max(Ls-Ls*r/35,0):Math.min(-Ls+Ls*r/35,0)}),this.scrollEl.scrollBy(t),this.scrollState=jl(this.scrollEl),this.handleEntityRegistration(),this.handleDragScroll()})}getId(t){return`${this.instanceId}-${t}`}getPath(t){var r,n,i,a;switch(t){case"right":return[...((r=this.parent)==null?void 0:r.getPath())||[],1];case"bottom":return[...((n=this.parent)==null?void 0:n.getPath())||[],2];case"left":return[...((i=this.parent)==null?void 0:i.getPath())||[],3]}return[...((a=this.parent)==null?void 0:a.getPath())||[],0]}getScrollShift(){var r,n,i;let t=(r=this.parent)==null?void 0:r.getScrollShift();return{x:Xe((n=this.parent)==null?void 0:n.scrollState.x)+Xe(t==null?void 0:t.x),y:Xe((i=this.parent)==null?void 0:i.scrollState.y)+Xe(t==null?void 0:t.y)}}createScrollEntity(t){var n,i;let r=this;return{scopeId:this.scopeId,entityId:r.getId(t),initial:Wl(this.scrollEl.getBoundingClientRect(),((n=this.parent)==null?void 0:n.scrollState)||on,((i=this.parent)==null?void 0:i.getScrollShift())||Pn,t),getParentScrollState(){var a;return((a=r.parent)==null?void 0:a.scrollState)||on},getParentScrollShift(){var a;return((a=r.parent)==null?void 0:a.getScrollShift())||Pn},recalcInitial(){var a,o;this.initial=Wl(r.scrollEl.getBoundingClientRect(),((a=r.parent)==null?void 0:a.scrollState)||on,((o=r.parent)==null?void 0:o.getScrollShift())||Pn,t)},getHitbox(){return So(this.initial[0],this.initial[1],this.initial[2],this.initial[3],this.getParentScrollState(),this.getParentScrollShift())},getPath(){return r.getPath(t)},getData(){return{id:r.getId(t),type:bC,side:t,accepts:r.triggerTypes||[],scrollContainer:r.scrollEl,win:Ze(r.scrollEl)}}}}};function ab({scrollRef:e,triggerTypes:t,children:r}){let n=P.useContext(xt),i=P.useContext(mr),a=P.useContext(sa),o=P.useRef(),s=P.useMemo(()=>{if(n){o.current&&o.current.destroy();let u=new yd(n,i,t||[],a,()=>e.current);return o.current=u,u}return null},[n,i,e,t,a]);return P.useEffect(()=>()=>{var u;return(u=o.current)==null?void 0:u.destroy()},[]),s?h(sa.Provider,{value:s},r):null}m();function ob({children:e}){let t=P.useMemo(()=>new oa,[]);return h(la.Provider,{value:t},e)}function sb(e,t){let r=P.useContext(mr),n=P.useRef(null),i=P.useContext(la),a=o=>{n.current=o,n.current&&o.win.requestAnimationFrame(()=>{let s=i.getScrollState(e);s&&(s.x!==0||s.y!==0)&&(n.current.scrollLeft=s.x,n.current.scrollTop=s.y)})};return P.useEffect(()=>{let o=n.current;if(!o)return;let s=ds(o.win,u=>{let l=u.target;i.setScrollState(r,e,{x:l.scrollLeft,y:l.scrollTop})});return o.addEventListener("scroll",s),()=>{o.removeEventListener("scroll",s)}},[i,e,t]),{setRef:a,scrollRef:n}}function Fs({className:e,children:t,triggerTypes:r,isStatic:n,id:i,index:a}){let{setRef:o,scrollRef:s}=sb(i,a);return h("div",{ref:o,className:et([e,B("scroll-container")])},n?t:h(ab,{scrollRef:s,triggerTypes:r},t))}m();m();var bd={width:0,height:0},wC=100,wd=class{constructor(t,r,n){this.hitboxDimensions=bd;this.handleDragStart=({dragEntity:t,dragEntityMargin:r,dragOriginHitbox:n})=>{let i=t==null?void 0:t.entityId,a=i?this.sortables.has(i):null;!t||!a||!n||(this.setSortState(!0),this.hitboxDimensions=ql(n,r),this.activatePlaceholder(this.hitboxDimensions,ln.none),this.sortables.forEach(([o,s,u])=>{let l=ra(t.getPath(),o.getPath()),c=o.entityId;if(l===an.Self)return this.hidden.add(c),this.hideDraggingEntity(u);l===an.After&&(this.shifted.has(c)||this.shifted.add(c),this.shiftEl(s,ln.none,this.hitboxDimensions))}))};this.dragEndTimeout=0;this.handleDragEnd=({primaryIntersection:t,dragPosition:r,dragOriginHitbox:n,dragEntity:i})=>{if(!this.isSorting||!r||!n||!i){if(!t&&i&&this.sortables.has(i.entityId))return this.resetSelf({maintainHidden:!1});if(t&&i){let s=(t==null?void 0:t.getHitbox())||n,u=Di({position:r,destination:{x:s[0],y:s[1]}});return this.dndManager.win.setTimeout(()=>{this.resetSelf({maintainHidden:!1})},u)}return this.resetSelf({maintainHidden:!0})}this.dndManager.win.clearTimeout(this.dragEnterTimeout),this.dndManager.win.clearTimeout(this.dragLeaveTimeout),this.dndManager.win.clearTimeout(this.dragEndTimeout);let a=(t==null?void 0:t.getHitbox())||n,o=i.scopeId==="htmldnd"?0:Di({position:r,destination:{x:a[0],y:a[1]}});this.dragEndTimeout=this.dndManager.win.setTimeout(()=>{let s=i.entityId.split(":::").pop(),u=t==null?void 0:t.entityId.split(":::").pop();t&&this.sortables.has(t.entityId)&&u!==s&&this.dndManager.onDrop(i,t),this.resetSelf({maintainHidden:!1,shiftTransition:ln.none,placeholderTransition:ln.none})},o),this.hitboxDimensions=bd};this.dragEnterTimeout=0;this.handleDragEnter=({dragEntity:t,dragEntityMargin:r,dragOriginHitbox:n,primaryIntersection:i})=>{let a=i==null?void 0:i.entityId,o=a?this.sortables.has(a):null;if(!t||!i||!o||!n){!o&&this.isSorting&&this.resetSelf({maintainHidden:!0,maintainPlaceholder:!0});return}t.entityId!==i.entityId&&(this.dndManager.win.clearTimeout(this.dragLeaveTimeout),this.dndManager.win.clearTimeout(this.dragEnterTimeout),this.dragEnterTimeout=this.dndManager.win.setTimeout(()=>{this.setSortState(!0),this.hitboxDimensions=ql(n,r),this.activatePlaceholder(this.hitboxDimensions,ln.placeholder),this.sortables.forEach(([s,u])=>{let l=ra(i.getPath(),s.getPath()),c=s.entityId;!this.hidden.has(c)&&(l===an.Self||l===an.After)?this.shifted.has(c)||(this.shifted.add(c),this.shiftEl(u,ln.outOfTheWay,this.hitboxDimensions)):this.shifted.has(c)&&(this.shifted.delete(c),this.resetEl(u))})},10))};this.dragLeaveTimeout=0;this.handleDragLeave=()=>{!this.isSorting||(this.dndManager.win.clearTimeout(this.dragLeaveTimeout),this.dndManager.win.clearTimeout(this.dragEnterTimeout),this.dragLeaveTimeout=this.dndManager.win.setTimeout(()=>{this.resetSelf({maintainHidden:!0,maintainPlaceholder:!0})},wC),this.hitboxDimensions=bd)};this.instanceId=Ae(),this.dndManager=t,this.sortables=new Map,this.shifted=new Set,this.hidden=new Set,this.isSorting=!1,this.axis=r,this.placeholder=null,this.sortListeners=n?[n]:[],t.dragManager.emitter.on("dragStart",this.handleDragStart),t.dragManager.emitter.on("dragEnd",this.handleDragEnd),t.dragManager.emitter.on("dragEnter",this.handleDragEnter),t.dragManager.emitter.on("dragLeave",this.handleDragLeave)}destroy(){this.dndManager.win.clearTimeout(this.dragLeaveTimeout),this.dndManager.win.clearTimeout(this.dragEndTimeout),this.dndManager.dragManager.emitter.off("dragStart",this.handleDragStart),this.dndManager.dragManager.emitter.off("dragEnd",this.handleDragEnd),this.dndManager.dragManager.emitter.off("dragEnter",this.handleDragEnter),this.dndManager.dragManager.emitter.off("dragLeave",this.handleDragLeave)}registerSortable(t,r,n,i){let a=r.getData().type==="placeholder";this.sortables.set(t,[r,n,i]),a?(this.placeholder=[r,n,i],i.dataset.axis=this.axis,Tn(i,"transition",ln.none)):Tn(n,"transition",ln.none)}unregisterSortable(t){this.sortables.delete(t)}resetSelf({maintainHidden:t,maintainPlaceholder:r,shiftTransition:n,placeholderTransition:i}){this.isSorting&&this.setSortState(!1),this.isPlaceholderActive&&!r&&this.deactivatePlaceholder(i),this.shifted.size>0&&(this.shifted.forEach(a=>{if(this.sortables.has(a)){let[,o]=this.sortables.get(a);this.resetEl(o,n)}}),this.shifted.clear()),!t&&this.hidden.size>0&&(this.hidden.forEach(a=>{if(this.sortables.has(a)){let[,,o]=this.sortables.get(a);this.resetEl(o,n)}}),this.hidden.clear())}activatePlaceholder(t,r){if(this.placeholder){let n=this.axis==="horizontal",[,,i]=this.placeholder;Tn(i,"transition",r),Tn(i,n?"width":"height",`${n?t.width:t.height}px`),this.isPlaceholderActive=!0}}deactivatePlaceholder(t=ln.placeholder){if(this.placeholder){let[,,r]=this.placeholder;Tn(r,"transition",t),fs(r,"width"),fs(r,"height"),this.isPlaceholderActive=!1}}hideDraggingEntity(t){Tn(t,"display","none")}shiftEl(t,r,n){let i=this.axis==="horizontal"?`translate3d(${n.width}px, 0, 0)`:`translate3d(0, ${n.height}px, 0)`;Tn(t,"transition",r),Tn(t,"transform",i)}resetEl(t,r=ln.outOfTheWay){Tn(t,"transition",r),Tn(t,"transform","translate3d(0, 0, 0)"),fs(t,"display")}addSortNotifier(t){this.sortListeners.push(t)}removeSortNotifier(t){this.sortListeners=this.sortListeners.filter(r=>r!==t)}setSortState(t){this.isSorting!==t&&(this.isSorting=t,this.sortListeners.forEach(r=>r(t)))}};function Li({axis:e,children:t,onSortChange:r}){let n=P.useContext(xt),i=P.useRef(),a=P.useMemo(()=>{if(n){i.current&&i.current.destroy();let o=new wd(n,e,r);return i.current=o,o}return null},[n,e,r]);return P.useEffect(()=>()=>{var o;return(o=i.current)==null?void 0:o.destroy()},[]),a?h(Eo.Provider,{value:a},t):null}m();function Pi({index:e,accepts:t,className:r,isStatic:n}){let i=P.useRef(null),a=P.useRef(null),o=P.useMemo(()=>({id:Ae(),type:"placeholder",accepts:t}),t);return h("div",{ref:a,className:et([r,B("placeholder")])},h("div",{ref:i},!n&&h(gr,{elementRef:i,measureRef:a,id:o.id,index:e,data:o})))}m();m();m();Ar();Ar();function lb(e,t){for(var r in t)e[r]=t[r];return e}function Ed(e,t){for(var r in e)if(r!=="__source"&&!(r in t))return!0;for(var n in t)if(n!=="__source"&&e[n]!==t[n])return!0;return!1}function kd(e){this.props=e}function EC(e,t){function r(i){var a=this.props.ref,o=a==i.ref;return!o&&a&&(a.call?a(null):a.current=null),t?!t(this.props,i)||!o:Ed(this.props,i)}function n(i){return this.shouldComponentUpdate=r,h(e,i)}return n.displayName="Memo("+(e.displayName||e.name)+")",n.prototype.isReactComponent=!0,n.__f=!0,n}(kd.prototype=new ht).isPureReactComponent=!0,kd.prototype.shouldComponentUpdate=function(e,t){return Ed(this.props,e)||Ed(this.state,t)};var cb=fe.__b;fe.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),cb&&cb(e)};var kC=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function xC(e){function t(r){var n=lb({},r);return delete n.ref,e(n,r.ref||null)}return t.$$typeof=kC,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var ub=function(e,t){return e==null?null:wt(wt(e).map(t))},SC={map:ub,forEach:ub,count:function(e){return e?wt(e).length:0},only:function(e){var t=wt(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:wt},_C=fe.__e;fe.__e=function(e,t,r,n){if(e.then){for(var i,a=t;a=a.__;)if((i=a.__c)&&i.__c)return t.__e==null&&(t.__e=r.__e,t.__k=r.__k),i.__c(e,t)}_C(e,t,r,n)};var db=fe.unmount;function Ns(){this.__u=0,this.t=null,this.__b=null}function fb(e){var t=e.__.__c;return t&&t.__e&&t.__e(e)}function CC(e){var t,r,n;function i(a){if(t||(t=e()).then(function(o){r=o.default||o},function(o){n=o}),n)throw n;if(!r)throw t;return h(r,a)}return i.displayName="Lazy",i.__f=!0,i}function Oa(){this.u=null,this.o=null}fe.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&e.__h===!0&&(e.type=null),db&&db(e)},(Ns.prototype=new ht).__c=function(e,t){var r=t.__c,n=this;n.t==null&&(n.t=[]),n.t.push(r);var i=fb(n.__v),a=!1,o=function(){a||(a=!0,r.__R=null,i?i(s):s())};r.__R=o;var s=function(){if(!--n.__u){if(n.state.__e){var l=n.state.__e;n.__v.__k[0]=function d(f,p,g){return f&&(f.__v=null,f.__k=f.__k&&f.__k.map(function(y){return d(y,p,g)}),f.__c&&f.__c.__P===p&&(f.__e&&g.insertBefore(f.__e,f.__d),f.__c.__e=!0,f.__c.__P=g)),f}(l,l.__c.__P,l.__c.__O)}var c;for(n.setState({__e:n.__b=null});c=n.t.pop();)c.forceUpdate()}},u=t.__h===!0;n.__u++||u||n.setState({__e:n.__b=n.__v.__k[0]}),e.then(o,o)},Ns.prototype.componentWillUnmount=function(){this.t=[]},Ns.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var r=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=function a(o,s,u){return o&&(o.__c&&o.__c.__H&&(o.__c.__H.__.forEach(function(l){typeof l.__c=="function"&&l.__c()}),o.__c.__H=null),(o=lb({},o)).__c!=null&&(o.__c.__P===u&&(o.__c.__P=s),o.__c=null),o.__k=o.__k&&o.__k.map(function(l){return a(l,s,u)})),o}(this.__b,r,n.__O=n.__P)}this.__b=null}var i=t.__e&&h(S,null,e.fallback);return i&&(i.__h=null),[h(S,null,t.__e?null:e.children),i]};var pb=function(e,t,r){if(++r[1]===r[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(r=e.u;r;){for(;r.length>3;)r.pop()();if(r[1]>>1,1),t.i.removeChild(n)}}),xn(h(DC,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function MC(e,t){var r=h(TC,{__v:e,i:t});return r.containerInfo=t,r}(Oa.prototype=new ht).__e=function(e){var t=this,r=fb(t.__v),n=t.o.get(e);return n[0]++,function(i){var a=function(){t.props.revealOrder?(n.push(i),pb(t,e,n)):i()};r?r(a):a()}},Oa.prototype.render=function(e){this.u=null,this.o=new Map;var t=wt(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var r=t.length;r--;)this.o.set(t[r],this.u=[1,0,this.u]);return e.children},Oa.prototype.componentDidUpdate=Oa.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,r){pb(e,r,t)})};var hb=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.element")||60103,IC=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|shape|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,AC=typeof document!="undefined",LC=function(e){return(typeof Symbol!="undefined"&&typeof Symbol()=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(e)};function PC(e,t,r){return t.__k==null&&(t.textContent=""),xn(e,t),typeof r=="function"&&r(),e?e.__c:null}function FC(e,t,r){return Qi(e,t),typeof r=="function"&&r(),e?e.__c:null}ht.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(ht.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var mb=fe.event;function NC(){}function OC(){return this.cancelBubble}function RC(){return this.defaultPrevented}fe.event=function(e){return mb&&(e=mb(e)),e.persist=NC,e.isPropagationStopped=OC,e.isDefaultPrevented=RC,e.nativeEvent=e};var gb,vb={configurable:!0,get:function(){return this.class}},yb=fe.vnode;fe.vnode=function(e){var t=e.type,r=e.props,n=r;if(typeof t=="string"){var i=t.indexOf("-")===-1;for(var a in n={},r){var o=r[a];AC&&a==="children"&&t==="noscript"||a==="value"&&"defaultValue"in r&&o==null||(a==="defaultValue"&&"value"in r&&r.value==null?a="value":a==="download"&&o===!0?o="":/ondoubleclick/i.test(a)?a="ondblclick":/^onchange(textarea|input)/i.test(a+t)&&!LC(r.type)?a="oninput":/^onfocus$/i.test(a)?a="onfocusin":/^onblur$/i.test(a)?a="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(a)?a=a.toLowerCase():i&&IC.test(a)?a=a.replace(/[A-Z0-9]/,"-$&").toLowerCase():o===null&&(o=void 0),/^oninput$/i.test(a)&&(a=a.toLowerCase(),n[a]&&(a="oninputCapture")),n[a]=o)}t=="select"&&n.multiple&&Array.isArray(n.value)&&(n.value=wt(r.children).forEach(function(s){s.props.selected=n.value.indexOf(s.props.value)!=-1})),t=="select"&&n.defaultValue!=null&&(n.value=wt(r.children).forEach(function(s){s.props.selected=n.multiple?n.defaultValue.indexOf(s.props.value)!=-1:n.defaultValue==s.props.value})),e.props=n,r.class!=r.className&&(vb.enumerable="className"in r,r.className!=null&&(n.class=r.className),Object.defineProperty(n,"className",vb))}e.$$typeof=hb,yb&&yb(e)};var bb=fe.__r;fe.__r=function(e){bb&&bb(e),gb=e.__c};var HC={ReactCurrentDispatcher:{current:{readContext:function(e){return gb.__n[e.__c].props.value}}}};function BC(e){return h.bind(null,e)}function wb(e){return!!e&&e.$$typeof===hb}function KC(e){return wb(e)?so.apply(null,arguments):e}function $C(e){return!!e.__k&&(xn(null,e),!0)}function UC(e){return e&&(e.base||e.nodeType===1&&e)||null}var VC=function(e,t){return e(t)},WC=function(e,t){return e(t)};var at={useState:sr,useReducer:Zi,useEffect:Sn,useLayoutEffect:Lr,useRef:Xt,useImperativeHandle:co,useMemo:lr,useCallback:cr,useContext:uo,useDebugValue:fo,version:"17.0.2",Children:SC,render:PC,hydrate:FC,unmountComponentAtNode:$C,createPortal:MC,createElement:h,createContext:ai,createFactory:BC,cloneElement:KC,createRef:ri,Fragment:S,isValidElement:wb,findDOMNode:UC,Component:ht,PureComponent:kd,memo:EC,forwardRef:xC,flushSync:WC,unstable_batchedUpdates:VC,StrictMode:S,Suspense:Ns,SuspenseList:Oa,lazy:CC,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:HC};var zC=function(){if(typeof window=="undefined"||typeof window.addEventListener!="function")return!1;var e=!1,t=Object.defineProperty({},"passive",{get:function(){e=!0}}),r=function(){return null};return window.addEventListener("test",r,t),window.removeEventListener("test",r,t),e},jC="ignore-onclickoutside",Eb=function(t,r){var n;return(n=t.classList)==null?void 0:n.contains(r)},kb=function(t,r){for(var n=t.target||t;n;){if(Array.isArray(r)){if(r.some(function(i){return Eb(n,i)}))return!0}else if(Eb(n,r))return!0;n=n.parentElement}return!1},qC=function(t){return document.documentElement.clientWidth<=t.clientX||document.documentElement.clientHeight<=t.clientY},xb=function(t){return t.includes("touch")&&zC()?{passive:!0}:!1},YC=function(t,r){var n=r===void 0?{}:r,i=n.refs,a=n.disabled,o=n.eventTypes,s=o===void 0?["mousedown","touchstart"]:o,u=n.excludeScrollbar,l=n.ignoreClass,c=l===void 0?jC:l,d=n.detectIFrame,f=d===void 0?!0:d,p=sr([]),g=p[0],y=p[1],b=Xt(t);b.current=t;var x=cr(function(T){return y(function(C){return[].concat(C,[{current:T}])})},[]);return Sn(function(){if(!(!(i!=null&&i.length)&&!g.length)){var T=function(){var K=[];return(i||g).forEach(function(z){var U=z.current;return U&&K.push(U)}),K},C=function(K){!kb(K,c)&&!(u&&qC(K))&&T().every(function(z){return!z.contains(K.target)})&&b.current(K)},A=function(K){return setTimeout(function(){var z=document,U=z.activeElement;(U==null?void 0:U.tagName)==="IFRAME"&&!kb(U,c)&&!T().includes(U)&&b.current(K)},0)},H=function(){s.forEach(function(K){return document.removeEventListener(K,C,xb(K))}),f&&window.removeEventListener("blur",A)};if(a){H();return}return s.forEach(function(D){return document.addEventListener(D,C,xb(D))}),f&&window.addEventListener("blur",A),function(){return H()}}},[g,c,u,a,f,JSON.stringify(s)]),x},Fi=YC;function xd({addItems:e,isInputVisible:t,setIsInputVisible:r,hideButton:n}){let[i,a]=P.useState(""),{stateManager:o,view:s}=P.useContext(We),u=P.useRef(),l=Fi(()=>{r(!1)},{ignoreClass:B("ignore-click-outside")}),c=P.useCallback(()=>{a(""),r(!1)},[]),d=async g=>{try{e(await Promise.all(g.map(y=>o.getNewItem(y))))}catch(y){o.setError(y)}},f=g=>{if(!Xn(g,o)){g.preventDefault();let y=i.trim();y&&(d([y]),a(""))}},p=()=>{let g=i.trim();g&&(d([g]),a(""))};return t?h("div",{className:B("item-form"),ref:l},h("div",{className:B("item-input-wrapper")},h(xr,{ref:u,className:B("item-input"),placeholder:L("Card title..."),onEnter:f,onEscape:c,onSubmit:p,value:i,onChange:g=>{a(g.target.value)},onPaste:g=>{ws(g,o,s.getWindow())}}))):n?null:h("div",{className:B("item-button-wrapper")},h("button",{className:B("new-item-button"),onClick:()=>r(!0),onDragOver:g=>{bs(o,g.dataTransfer)&&r(!0)}},h("span",{className:B("item-button-plus")},"+")," ",L("Add a card")))}m();var Fb=me(Et());m();function Os(e,t){let r=t.end-t.start;return e.slice(0,t.start)+"\0".repeat(r)+e.slice(t.end)}function Sb(e){return e.replace(/\s*\0+\s*/g," ").trim()}function Ra(e){return e.trim().replace(/(\r\n|\n)/g,"
")}function Rs(e){return e.replace(/
/g,` +`).trim()}function jr(e){e=Rs(e);let t=e.match(/^(.*?)\s*\((\d+)\)$/);return t==null?{title:e,maxItems:0}:{title:t[1],maxItems:Number(t[2])}}m();function _b(e){return h("svg",{...e,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16"},h("path",{fill:"currentColor",d:"M5 3h2v2H5zm0 4h2v2H5zm0 4h2v2H5zm4-8h2v2H9zm0 4h2v2H9zm0 4h2v2H9z"}))}m();var Sd=me(Et()),Cb=me(require("obsidian"));var Db={delete:{description:L("Are you sure you want to delete this list and all its cards?"),confirm:L("Yes, delete list")},archive:{description:L("Are you sure you want to archive this list and all its cards?"),confirm:L("Yes, archive list")},"archive-items":{description:L("Are you sure you want to archive all cards in this list?"),confirm:L("Yes, archive cards")}};function Tb({action:e,cancel:t,onAction:r,lane:n}){return P.useEffect(()=>{e&&n.children.length===0&&r()},[e,n.children.length]),!e||e&&n.children.length===0?null:h("div",{className:B("action-confirm-wrapper")},h("div",{className:B("action-confirm-text")},Db[e].description),h("div",null,h("button",{onClick:r,className:B("confirm-action-button")},Db[e].confirm),h("button",{onClick:t,className:B("cancel-action-button")},"Cancel")))}function Mb({setIsEditing:e,path:t,lane:r}){let{stateManager:n,boardModifiers:i}=P.useContext(We),[a,o]=P.useState(null);return{settingsMenu:P.useMemo(()=>new Cb.Menu().addItem(u=>{u.setIcon("lucide-edit-3").setTitle(L("Edit list")).onClick(()=>e(!0))}).addItem(u=>{u.setIcon("lucide-archive").setTitle(L("Archive cards")).onClick(()=>o("archive-items"))}).addSeparator().addItem(u=>{u.setIcon("lucide-move-vertical").setTitle(L("Sort by card text")).onClick(()=>{let l=r.children.slice(),c=r.data.sorted===Mn.TitleAsc;l.sort((d,f)=>c?f.data.titleSearch.localeCompare(d.data.titleSearch):d.data.titleSearch.localeCompare(f.data.titleSearch)),i.updateLane(t,(0,Sd.default)(r,{children:{$set:l},data:{sorted:{$set:r.data.sorted===Mn.TitleAsc?Mn.TitleDsc:Mn.TitleAsc}}}))})}).addItem(u=>{u.setIcon("lucide-move-vertical").setTitle(L("Sort by date")).onClick(()=>{let l=r.children.slice(),c=r.data.sorted===Mn.DateAsc?-1:1;l.sort((d,f)=>{let p=d.data.metadata.time||d.data.metadata.date,g=f.data.metadata.time||f.data.metadata.date;return p&&!g?-1*c:g&&!p?1*c:!p&&!g?0:(p.isBefore(g)?-1:1)*c}),i.updateLane(t,(0,Sd.default)(r,{children:{$set:l},data:{sorted:{$set:r.data.sorted===Mn.DateAsc?Mn.DateDsc:Mn.DateAsc}}}))})}).addSeparator().addItem(u=>{u.setIcon("corner-left-down").setTitle(L("Insert list before")).onClick(()=>i.insertLane(t,{...kr,id:Ae(),children:[],data:{title:"",shouldMarkItemsComplete:!1,forceEditMode:!0}}))}).addItem(u=>{u.setIcon("lucide-corner-right-down").setTitle(L("Insert list after")).onClick(()=>{let l=[...t];l[l.length-1]=l[l.length-1]+1,i.insertLane(l,{...kr,id:Ae(),children:[],data:{title:"",shouldMarkItemsComplete:!1,forceEditMode:!0}})})}).addSeparator().addItem(u=>{u.setIcon("lucide-archive").setTitle(L("Archive list")).onClick(()=>o("archive"))}).addItem(u=>{u.setIcon("lucide-trash-2").setTitle(L("Delete list")).onClick(()=>o("delete"))}),[n,o,t,r]),confirmAction:a,setConfirmAction:o}}m();var Ib=me(Et());function Ab({lane:e,lanePath:t}){let{boardModifiers:r}=P.useContext(We);return h("div",{className:B("lane-setting-wrapper")},h("div",{className:B("checkbox-wrapper")},h("div",{className:B("checkbox-label")},L("Mark cards in this list as complete")),h("div",{onClick:()=>r.updateLane(t,(0,Ib.default)(e,{data:{$toggle:["shouldMarkItemsComplete"]}})),className:`checkbox-container ${e.data.shouldMarkItemsComplete?"is-enabled":""}`})))}m();var Lb=me(require("obsidian"));function Pb({itemCount:e,maxItems:t,isEditing:r,setIsEditing:n,title:i,onChange:a}){let{stateManager:o}=P.useContext(We),s=P.useRef(),u=o.getSetting("hide-card-count"),l=p=>{Xn(p,o)||(p.preventDefault(),r&&n(!1))},c=()=>{r&&n(!1)},d=()=>{r&&n(!1)};P.useEffect(()=>{if(r&&s.current){let p=s.current;s.current.focus(),p.selectionStart=p.selectionEnd=p.value.length}},[r]);let f=[B("lane-title-count")];return t&&t{p.preventDefault(),p.stopPropagation();let g=p.target instanceof p.view.HTMLAnchorElement&&p.target.hasClass("internal-link")?p.target.dataset.href:void 0;g&&o.app.workspace.onLinkContextMenu(p,(0,Lb.getLinkpath)(g),o.file.path)}},h(Fa,{markdownString:i})))),!r&&!u&&h("div",{className:et(f)},e,t>0&&h(S,null,h("span",{className:B("lane-title-count-separator")},"/"),h("span",{className:B("lane-title-count-limit")},t))))}var Nb=P.memo(function({lane:t,laneIndex:r,dragHandleRef:n,setIsItemInputVisible:i}){let{boardModifiers:a,stateManager:o}=P.useContext(We),[s,u]=P.useState(!1),l=Wn(r),{settingsMenu:c,confirmAction:d,setConfirmAction:f}=Mb({setIsEditing:u,path:l,lane:t});return P.useEffect(()=>{t.data.forceEditMode&&u(!0)},[t.data.forceEditMode]),h(S,null,h("div",{onDblClick:()=>u(!0),className:B("lane-header-wrapper")},h("div",{className:B("lane-grip"),ref:n},h(_b,null)),h(Pb,{isEditing:s,setIsEditing:u,itemCount:t.children.length,maxItems:t.data.maxItems,title:t.data.title,onChange:p=>{let{title:g,maxItems:y}=jr(p.target.value);a.updateLane(l,(0,Fb.default)(t,{data:{title:{$set:g},maxItems:{$set:y}}}))}}),h("div",{className:B("lane-settings-button-wrapper")},s?h("a",{onClick:()=>{u(!1)},"aria-label":L("Close"),className:`${B("lane-settings-button")} is-enabled clickable-icon`},h(_t,{name:"lucide-x"})):h(S,null,i&&h("a",{"aria-label":L("Add a card"),className:`${B("lane-settings-button")} clickable-icon`,onClick:()=>{i(!0)},onDragOver:p=>{bs(o,p.dataTransfer)&&i(!0)}},h(_t,{name:"lucide-plus-circle"})),h("a",{"aria-label":L("More options"),className:`${B("lane-settings-button")} clickable-icon`,onClick:p=>{c.showAtPosition({x:p.clientX,y:p.clientY})}},h(_t,{name:"lucide-more-vertical"}))))),s&&h(Ab,{lane:t,lanePath:l}),d&&h(Tb,{lane:t,action:d,onAction:()=>{switch(d){case"archive":a.archiveLane(l);break;case"archive-items":a.archiveLaneItems(l);break;case"delete":a.deleteEntity(l);break}f(null)},cancel:()=>f(null)}))});var Rb=[Je.Item],_d=P.memo(function({isStatic:t,lane:r,laneIndex:n}){let{stateManager:i,boardModifiers:a,view:o}=P.useContext(We),[s,u]=P.useState(!1),l=Wn(n),c=i.useSetting("lane-width"),d=i.useSetting("new-card-insertion-method"),f=!!r.data.shouldMarkItemsComplete,p=c?{width:`${c}px`}:void 0,g=P.useRef(null),y=P.useRef(null),b=P.useRef(null),[x,T]=P.useState(!1),C=d==="prepend-compact",A=C||d==="prepend";Mi(y,b);let H=z=>{a[A?"prependItems":"appendItems"]([...l,r.children.length-1],z.map(U=>(0,Ob.default)(U,{data:{isComplete:{$set:f}}}))),o.getWindow().setTimeout(()=>{var Z;let U=(Z=g.current)==null?void 0:Z.getElementsByClassName(B("lane-items"));U.length&&As([0,A?0:U[0].scrollHeight],{elementToScroll:U[0],speed:200,minDuration:150,easing:J=>J===1?1:1-Math.pow(2,-10*J)})})},D=h(S,null,h(tb,{items:r.children,isStatic:t,shouldMarkItemsComplete:f}),h(Pi,{accepts:Rb,index:r.children.length,isStatic:t})),K=h(Fs,{id:r.id,index:n,className:et([B("lane-items"),B("vertical")]),triggerTypes:Rb,isStatic:t},t?D:h(Li,{onSortChange:T,axis:"vertical"},D));return h("div",{ref:y,className:et([B("lane-wrapper"),{"is-sorting":x}]),style:p},h("div",{"data-count":r.children.length,ref:g,className:et([B("lane"),{"will-prepend":A}])},h(Nb,{dragHandleRef:b,laneIndex:n,lane:r,setIsItemInputVisible:C?u:void 0}),A&&h(xd,{addItems:H,hideButton:C,isInputVisible:s,setIsInputVisible:u}),t?K:h(gr,{elementRef:g,measureRef:y,id:r.id,index:n,data:r},K),!A&&h(xd,{addItems:H,isInputVisible:s,setIsInputVisible:u})))}),Hb=P.memo(function({lanes:t}){return h(S,null,t.map((r,n)=>h(_d,{lane:r,laneIndex:n,key:r.id})))});m();m();var Bb=me(require("obsidian"));m();function Hs(){return{events:{},emit(e,t,r){let n=`${String(e)}${r||""}`,i=this.events[e],a=this.events[n];if(!i&&!a){console.warn("Event emitted with no handler",e,r);return}r&&a&&a.forEach(o=>o(t)),i&&i.forEach(o=>o(t))},on(e,t,r){let n=`${String(e)}${r||""}`,i=this.events[n];return i||(this.events[n]=i=[]),i.push(t),()=>this.off(e,t,r)},off(e,t,r){let n=`${String(e)}${r||""}`,i=this.events[n];i&&(i.splice(i.indexOf(t)>>>0,1),i.length===0&&delete this.events[n])}}}var Cd=class{constructor(t,r){this.scrollResizeDebounce=0;this.handleResize=t=>{let r=!1;t.forEach(n=>{let i=Ze(n.target);this.win===i&&(r=!0,n.target.dataset.scrollid&&(this.win.clearTimeout(this.scrollResizeDebounce),this.scrollResizeDebounce=this.win.setTimeout(()=>{var a;((a=this.emitter.events.scrollResize)==null?void 0:a.length)&&this.emitter.emit("scrollResize",null)},50)))}),!!r&&(this.hitboxEntities.forEach(n=>{n.recalcInitial()}),this.scrollEntities.forEach(n=>{n.recalcInitial()}))};this.win=t,this.emitter=Hs(),this.hitboxEntities=new Map,this.scrollEntities=new Map,this.onDrop=r,this.resizeObserver=new ResizeObserver((0,Bb.debounce)(this.handleResize,100,!0)),this.dragManager=new Nu(t,this.emitter,this.hitboxEntities,this.scrollEntities)}destroy(){this.resizeObserver.disconnect()}observeResize(t){!t.instanceOf(HTMLElement)||this.resizeObserver.observe(t,{box:"border-box"})}unobserveResize(t){!t.instanceOf(HTMLElement)||this.resizeObserver.unobserve(t)}registerHitboxEntity(t,r,n){n===this.win&&this.hitboxEntities.set(t,r)}registerScrollEntity(t,r,n){n===this.win&&this.scrollEntities.set(t,r)}unregisterHitboxEntity(t,r){r===this.win&&this.hitboxEntities.delete(t)}unregisterScrollEntity(t,r){r===this.win&&this.scrollEntities.delete(t)}};function Bs({win:e,children:t,onDrop:r}){let n=P.useRef(r);n.current=r;let i=P.useMemo(()=>new Cd(e,(a,o)=>n.current(a,o)),[]);return P.useEffect(()=>()=>{i.destroy()},[i]),h(xt.Provider,{value:i},h(ob,null,t))}m();function Dd(e,t,r,n,i,a){let o=[r[0]-n[0],r[1]-n[1],r[2]+n[2],r[3]+n[3]];return{transform:a||`translate3d(${e.x-t.x+o[0]}px, ${e.y-t.y+o[1]}px, 0px)`,width:`${o[2]-o[0]}px`,height:`${o[3]-o[1]}px`,transition:i}}function Ks({children:e}){let t=P.useContext(xt),[r,n]=P.useState(),[i,a]=P.useState();return P.useEffect(()=>{if(!t)return;let o=Fp,s=({dragEntity:c,dragOrigin:d,dragPosition:f,dragEntityMargin:p})=>{!c||!f||!d||(o=c.getHitbox(),n(c),a(Dd(f,d,o,p)))},u=({dragOrigin:c,dragPosition:d,dragEntityMargin:f})=>{!d||!c||a(Dd(d,c,o,f))},l=({dragOrigin:c,primaryIntersection:d,dragPosition:f,dragEntityMargin:p})=>{if(d&&f&&c){let g=d.getHitbox(),y={x:g[0],y:g[1]},b=Di({position:f,destination:y}),x=ln.drop(b),T=lv.drop(y);a(Dd(f,c,o,p,x,T)),activeWindow.setTimeout(()=>{n(void 0),a(void 0)},b)}else n(void 0),a(void 0)};return t.dragManager.emitter.on("dragStart",s),t.dragManager.emitter.on("dragMove",u),t.dragManager.emitter.on("dragEnd",l),()=>{t.dragManager.emitter.off("dragStart",s),t.dragManager.emitter.off("dragMove",u),t.dragManager.emitter.off("dragEnd",l)}},[t]),!r||!i?null:P.createPortal(e(r,i),r.getData().win.document.body)}function Kb(){let e=P.useContext(xt),[t,r]=P.useState(!1);return P.useEffect(()=>{let n=()=>{r(!0)},i=({primaryIntersection:a,dragPosition:o})=>{let s=(a==null?void 0:a.getHitbox())||[0,0],u={x:s[0],y:s[1]},l=Di({position:o||u,destination:u});activeWindow.setTimeout(()=>{r(!1)},l)};return e.dragManager.emitter.on("dragStart",n),e.dragManager.emitter.on("dragEnd",i),()=>{e.dragManager.emitter.off("dragStart",n),e.dragManager.emitter.off("dragEnd",i)}},[e]),t}m();var Ha=me(Et()),$b=me(require("obsidian"));function $s(e){let t=r=>{let n=e.getSetting("prepend-archive-format"),i=e.getSetting("prepend-archive-separator"),a=[(0,$b.moment)().format(n)];i&&a.push(i),a.push(r.data.titleRaw);let o=a.join(" ");return e.updateItemContent(r,o)};return{appendItems:(r,n)=>{n.forEach(i=>e.app.workspace.trigger("kanban:card-added",e.file,i)),e.setState(i=>Bl(i,r,n))},prependItems:(r,n)=>{n.forEach(i=>e.app.workspace.trigger("kanban:card-added",e.file,i)),e.setState(i=>Mp(i,r,n))},insertItems:(r,n)=>{n.forEach(i=>e.app.workspace.trigger("kanban:card-added",e.file,i)),e.setState(i=>pr(i,r,n))},splitItem:(r,n)=>{n.forEach(i=>e.app.workspace.trigger("kanban:card-added",e.file,i)),e.setState(i=>pr(Fr(i,r),r,n))},moveItemToTop:r=>{e.setState(n=>aa(n,r,[r[0],0]))},moveItemToBottom:r=>{e.setState(n=>{let i=r[0],a=n.children[i];return aa(n,r,[i,a.children.length])})},addLane:r=>{e.app.workspace.trigger("kanban:lane-added",e.file,r),e.setState(n=>Bl(n,[],[r]))},insertLane:(r,n)=>{e.app.workspace.trigger("kanban:lane-added",e.file,n),e.setState(i=>pr(i,r,[n]))},updateLane:(r,n)=>{e.app.workspace.trigger("kanban:lane-updated",e.file,n),e.setState(i=>Kl(i,r,{children:{[r[r.length-1]]:{$set:n}}}))},archiveLane:r=>{e.setState(async n=>{let i=mt(n,r),a=i.children;e.app.workspace.trigger("kanban:lane-archived",e.file,i);try{return(0,Ha.default)(Fr(n,r),{data:{archive:{$unshift:e.getSetting("prepend-archive-date")?await Promise.all(a.map(t)):a}}})}catch(o){return e.setError(o),n}})},archiveLaneItems:r=>{e.setState(async n=>{let a=mt(n,r).children;e.app.workspace.trigger("kanban:lane-cards-archived",e.file,a);try{return(0,Ha.default)(vo(n,r,{children:{$set:[]}}),{data:{archive:{$unshift:e.getSetting("prepend-archive-date")?await Promise.all(a.map(t)):a}}})}catch(o){return e.setError(o),n}})},deleteEntity:r=>{e.setState(n=>{let i=mt(n,r);return e.app.workspace.trigger(`kanban:${i.type}-deleted`,e.file,i),Fr(n,r)})},updateItem:(r,n)=>{e.setState(i=>{let a=mt(i,r);return e.app.workspace.trigger("kanban:card-updated",e.file,a,n),Kl(i,r,{children:{[r[r.length-1]]:{$set:n}}})})},archiveItem:r=>{e.setState(async n=>{let i=mt(n,r);e.app.workspace.trigger("kanban:card-archived",e.file,r,i);try{return(0,Ha.default)(Fr(n,r),{data:{archive:{$push:[e.getSetting("prepend-archive-date")?await t(i):i]}}})}catch(a){return e.setError(a),n}})},duplicateEntity:r=>{e.setState(n=>{let i=mt(n,r);e.app.workspace.trigger(`kanban:${i.type}-duplicated`,e.file,r,i);let a=(0,Ha.default)(i,{id:{$set:Ae()}});return pr(n,r,[a])})}}}function Vb(e,t){return h(GC,{win:e,plugin:t})}var JC=P.memo(function({view:t}){return P.createPortal(t.getPortal(),t.contentEl)});function GC({win:e,plugin:t}){let r=t.useViewState(e),n=r.map(a=>h(JC,{key:a.id,view:a})),i=P.useCallback((a,o)=>{if(!a||!o)return;if(a.scopeId==="htmldnd"){let y=a.getData(),b=t.getStateManagerFromViewID(y.viewId,y.win),x=o.getPath(),T=mt(b.state,x.slice(0,-1));(A=>Promise.all(A.map(H=>b.getNewItem(H))))(y.content).then(A=>{let H=A.map(D=>{var K;return(0,Ub.default)(D,{data:{isComplete:{$set:!!((K=T==null?void 0:T.data)==null?void 0:K.shouldMarkItemsComplete)}}})});return b.setState(D=>pr(D,x,H))}).catch(A=>{b.setError(A),console.error(A)});return}let s=a.getPath(),u=o.getPath(),[,l]=a.scopeId.split(":::"),[,c]=o.scopeId.split(":::"),d=a.getData(),f=o.getData();if(l===c){let y=t.getStateManagerFromViewID(a.scopeId,d.win);return t.app.workspace.trigger("kanban:card-moved",y.file,s,u,d),y.setState(b=>{var H;let x=!1,T=aa(b,s,u,D=>D.type===Je.Item?(x=!0,Ul(b,s,b,u,D)):D);if(!x)return T;let C=u.slice(0,-1),A=mt(b,C);return((H=A==null?void 0:A.data)==null?void 0:H.sorted)!==void 0?vo(T,C,{data:{$unset:["sorted"]}}):T})}let p=t.getStateManagerFromViewID(a.scopeId,d.win),g=t.getStateManagerFromViewID(o.scopeId,f.win);p.setState(y=>{let b=mt(y,s);return g.setState(x=>{let T=b.type===Je.Item?Ul(y,s,x,u,b):b;return pr(x,u,[T])}),Fr(y,s)})},[r]);if(n.length)return h(Bs,{win:e,onDrop:i},n,h(Ks,null,(a,o)=>{let[s,u]=P.useMemo(()=>{if(a.scopeId==="htmldnd")return[null,null];let l=a.getData(),c=t.getKanbanView(a.scopeId,l.win),d=t.stateManagers.get(c.file),f=mt(d.state,a.getPath()),p=$s(d),g=c.file.path;return[f,{view:c,stateManager:d,boardModifiers:p,filePath:g,getTagColor:bo(d),getDateColor:wo(d)}]},[a]);return(s==null?void 0:s.type)===Je.Lane?h(We.Provider,{value:u},h("div",{className:B("drag-container"),style:o},h(_d,{lane:s,laneIndex:0,isStatic:!0}))):(s==null?void 0:s.type)===Je.Item?h(We.Provider,{value:u},h("div",{className:B("drag-container"),style:o},h(vd,{item:s,itemIndex:0,isStatic:!0}))):h("div",null)}))}m();var Wd=me(Et()),Lw=me(require("obsidian"));m();var Xb=me(Et()),Zb=me(require("obsidian")),Vs=me(yc());m();function Us({id:e,children:t}){let r=P.useContext(la),n=P.useMemo(()=>e||Ae(),[e]);return P.useEffect(()=>()=>{r.unmountScope(e)},[e]),h(mr.Provider,{value:n},t)}m();var gn="kanban-plugin",Wb;(function(t){t[t.List=0]="List"})(Wb||(Wb={}));var zb=`**${L("Complete")}**`,jb="***",Td=["---","",`${gn}: basic`,"","---","",""].join(` +`);function qb(e){return["","","%% kanban:settings","```",JSON.stringify(e),"```","%%"].join(` +`)}function Yb(e,t,r){let n=e.innerText.trim();if((t==null?void 0:t.length)&&(n+=" "+t.join(" ")),r){let i=Object.keys(r).join(" "),a=Object.values(r).map(o=>Array.isArray(o.value)?o.value.join(" "):o.value.toString()).join(" ");n+=" "+i+" "+a}return n.toLocaleLowerCase()}function QC(e,t,r){var n,i,a;if(e.plugins.enabledPlugins.has("dataview")&&((a=(i=(n=e.plugins)==null?void 0:n.plugins)==null?void 0:i.dataview)==null?void 0:a.api))return e.plugins.plugins.dataview.api.page(t.path,r.path)}function Jb(e,t){if(!e)return null;if(e[t])return e[t];let r=t.split("."),n=e;for(let i of r)if(typeof n=="object"&&i in n)n=n[i];else{n=null;break}return n}function Md(e,t){let r=e.getSetting("metadata-keys");if(!r.length)return{};if(!t)return{};let n=e.app.metadataCache.getFileCache(t),i=QC(e.app,t,e.file);if(!n&&!i)return{};let a={},o={},s={},u=[],l=!1;return r.forEach(c=>{var p;if(s[c.metadataKey])return;if(s[c.metadataKey]=!0,c.metadataKey==="tags"){let g=(n==null?void 0:n.tags)||[];if(Array.isArray((p=n==null?void 0:n.frontmatter)==null?void 0:p.tags)&&(g=[].concat(g,n.frontmatter.tags.map(y=>({tag:`#${y}`})))),(g==null?void 0:g.length)===0)return;u.push(c.metadataKey),a.tags={...c,value:g.map(y=>y.tag).filter(y=>o[y]?!1:(o[y]=!0,!0))},l=!0;return}let d=Jb(n==null?void 0:n.frontmatter,c.metadataKey),f=Jb(i,c.metadataKey);if(d)u.push(c.metadataKey),a[c.metadataKey]={...c,value:d},l=!0;else if(f){let g=i[c.metadataKey],y=g.values||g.val||g;if(y===g&&typeof y=="object")y={...g};else if(!Array.isArray(y)&&typeof y!="string"&&typeof y!="number")return;u.push(c.metadataKey),a[c.metadataKey]={...c,value:y},l=!0}}),{fileMetadata:l?a:void 0,fileMetadataOrder:u}}function Gb(e,t){return!e&&t?!0:!["metadata-keys","date-trigger","time-trigger","link-date-to-daily-note","date-format","time-format","hide-date-in-title","hide-tags-in-title","hide-card-count","tag-colors","date-colors"].every(n=>e[n]===t[n])}m();function Qb({onNewLane:e,closeLaneForm:t}){let{boardModifiers:r,stateManager:n}=P.useContext(We),[i,a]=P.useState(!1),[o,s]=P.useState(""),u=P.useRef(),l=Fi(()=>{t()},{ignoreClass:B("ignore-click-outside")});P.useLayoutEffect(()=>{var d;(d=u.current)==null||d.focus()},[]);let c=()=>{r.addLane({...kr,id:Ae(),children:[],data:{...jr(o),shouldMarkItemsComplete:i}}),s(""),a(!1),e()};return h("div",{ref:l,className:B("lane-form-wrapper")},h("div",{className:B("lane-input-wrapper")},h(xr,{ref:u,className:B("lane-input"),onChange:d=>s(d.target.value),onEnter:d=>{Xn(d,n)||(d.preventDefault(),c())},onSubmit:()=>{c()},onEscape:t,value:o})),h("div",{className:B("checkbox-wrapper")},h("div",{className:B("checkbox-label")},L("Mark cards in this list as complete")),h("div",{onClick:()=>a(!i),className:`checkbox-container ${i?"is-enabled":""}`})),h("div",{className:B("lane-input-actions")},h("button",{className:B("lane-action-add"),onClick:c},L("Add list")),h("button",{className:B("lane-action-cancel"),onClick:t},L("Cancel"))))}var XC=[Je.Item,Je.Lane],ZC=[Je.Lane],ew=({view:e,stateManager:t})=>{let r=t.useState(),n=Kb(),i=P.useRef(null),a=P.useRef(null),[o,s]=P.useState(""),[u,l]=P.useState(!1),[c,d]=P.useState(""),[f,p]=P.useState((r==null?void 0:r.children.length)===0),g=t.file.path,y=t.useSetting("max-archive-size"),b=t.useSetting("date-colors"),x=t.useSetting("tag-colors"),T=P.useCallback(()=>{(r==null?void 0:r.children.length)>0&&p(!1)},[r==null?void 0:r.children.length]);P.useEffect(()=>{(r==null?void 0:r.children.length)===0&&!t.hasError()&&p(!0)},[r==null?void 0:r.children.length,t]);let C=P.useCallback(()=>{var U;(U=i.current)==null||U.win.setTimeout(()=>{var J;let Z=(J=i.current)==null?void 0:J.getElementsByClassName(B("board"));(Z==null?void 0:Z.length)&&As([Z[0].scrollWidth,0],{elementToScroll:Z[0],speed:300,minDuration:150,easing:se=>se===1?1:1-Math.pow(2,-10*se)})})},[]);P.useEffect(()=>{let U=J=>{J==="editor:open-search"&&l(se=>!se)},Z=()=>{p(!0)};return e.emitter.on("hotkey",U),e.emitter.on("showLaneForm",Z),()=>{e.emitter.off("hotkey",U),e.emitter.off("showLaneForm",Z)}},[e]),P.useEffect(()=>{var U;u&&((U=a.current)==null||U.focus())},[u]),P.useEffect(()=>{let U=e.getWindow(),Z=o.trim(),J;return Z?J=U.setTimeout(()=>{d(Z)},250):d(""),()=>{U.clearTimeout(J)}},[o,e]),P.useEffect(()=>{y===void 0||y===-1||typeof y=="number"&&(r==null?void 0:r.data.archive.length)>y&&t.setState(U=>(0,Xb.default)(U,{data:{archive:{$set:U.data.archive.slice(y*-1)}}}))},[r==null?void 0:r.data.archive.length,y]);let A=P.useMemo(()=>$s(t),[t]),H=P.useCallback(U=>{let Z=U.target;Z.tagName==="A"&&Z.hasClass("internal-link")&&e.app.workspace.trigger("hover-link",{event:U,source:gn,hoverParent:e,targetEl:Z,linktext:Z.getAttr("href"),sourcePath:e.file.path})},[e]),D=P.useCallback(async U=>{if(U.type==="auxclick"||U.button===2)return;let Z=U.target,J=Z.tagName==="A"?Z:Z.closest("a");if(!!J){if(J.hasClass("file-link")){U.preventDefault();let se=J.getAttribute("href"),G=zr(se),Q=typeof se=="string"&&e.app.metadataCache.getFirstLinkpathDest(G.root,e.file.path);if(!Q)return;t.app.openWithDefaultApp(Q.path);return}if(J.hasClass("internal-link")){U.preventDefault();let se=J.getAttr("href"),G=U.button===1||U.ctrlKey||U.metaKey;if(J.hasClass("is-unresolved")&&(0,Vs.appHasDailyNotesPluginLoaded)()){let ie=t.getSetting("date-format"),he=(0,Zb.moment)(se,ie,!0);if(he.isValid()){try{let pe=await(0,Vs.createDailyNote)(he);await(G?app.workspace.getLeaf(!0):app.workspace.getLeaf(!1)).openFile(pe,{active:!0})}catch(pe){console.error(pe),t.setError(pe)}return}}t.app.workspace.openLinkText(se,g,G);return}if(J.hasClass("tag")){U.preventDefault(),t.app.internalPlugins.getPluginById("global-search").instance.openGlobalSearch(`tag:${J.getAttr("href")}`);return}J.hasClass("external-link")&&(U.preventDefault(),window.open(J.getAttr("href"),"_blank"))}},[t,g]),K=P.useMemo(()=>({view:e,stateManager:t,boardModifiers:A,filePath:g,getTagColor:bo(t),getDateColor:wo(t)}),[e,t,A,g,b,x]),z=uv(t);return r==null?h("div",{className:B("loading")},h("div",{className:"sk-pulse"})):r.data.errors.length>0?h("div",null,h("div",null,"Error:"),r.data.errors.map((U,Z)=>h("div",{key:Z},h("div",null,U.description),h("pre",null,U.stack)))):h(Us,{id:e.id},h(We.Provider,{value:K},h(go.Provider,{value:c?c.toLocaleLowerCase():null},h("div",{ref:i,className:et([$l,{"something-is-dragging":n}]),onMouseOver:H,onPointerDown:D,onClick:D,onAuxClick:D,...z},(f||r.children.length===0)&&h(Qb,{onNewLane:C,closeLaneForm:T}),u&&h("div",{className:B("search-wrapper")},h("input",{ref:a,value:o,onChange:U=>{s(U.target.value)},onKeyDown:U=>{U.key==="Escape"&&(s(""),d(""),U.target.blur(),l(!1))},type:"text",className:B("filter-input"),placeholder:L("Search...")}),h("a",{className:`${B("search-cancel-button")} clickable-icon`,onClick:()=>{s(""),d(""),l(!1)},"aria-label":L("Cancel")},h(_t,{name:"lucide-x"}))),h(Fs,{id:e.id,className:et([B("board"),B("horizontal"),{"is-adding-lane":f}]),triggerTypes:XC},h("div",null,h(Li,{axis:"horizontal"},h(Hb,{lanes:r.children}),h(Pi,{className:B("lane-placeholder"),accepts:ZC,index:r.children.length}))))))))};m();var Mw=me(Et()),Be=me(require("obsidian"));m();var nw=me(tw()),zs=me(Et()),_r=me(require("obsidian"));var js="@",qs="@@";function eD(e){let t=[];return _r.Vault.recurseChildren(e.vault.getRoot(),r=>{r instanceof _r.TFolder&&t.push({value:r.path,label:r.path,selected:!1,disabled:!1})}),t}function tD(e,t){let r=[],n=t?e.vault.getAbstractFileByPath(t):null;return(!n||!(n instanceof _r.TFolder))&&(n=e.vault.getRoot()),_r.Vault.recurseChildren(n,i=>{i instanceof _r.TFile&&r.push({value:i.path,label:i.basename,selected:!1,disabled:!1})}),r}function rw(e){let{templateFolder:t,templatesEnabled:r,templaterPlugin:n}=Vl(e),i=tD(e,t),a=eD(e),o="";return!r&&!n&&(o=L("Note: No template plugins are currently enabled.")),{templateFiles:i,vaultFolders:a,templateWarning:o}}function Ad({choices:e,key:t,warningText:r,local:n,placeHolderStr:i,manager:a}){return o=>{o.controlEl.createEl("select",{},s=>{s.win.setTimeout(()=>{let u=e,[l,c]=a.getSetting(t,n);if(c){let p=e.findIndex(y=>y.value===c),g=e[p];u=(0,zs.default)(u,{$splice:[[p,1]],$unshift:[(0,zs.default)(g,{placeholder:{$set:!0},value:{$set:""},label:{$apply:y=>`${y} (${L("default")})`}})]})}else u=(0,zs.default)(u,{$unshift:[{placeholder:!0,value:"",label:i,selected:!1,disabled:!1}]});let d=new nw.default(s,{placeholder:!0,position:"bottom",searchPlaceholderValue:L("Search..."),searchEnabled:u.length>10,choices:u}).setChoiceByValue("");l&&typeof l=="string"&&d.setChoiceByValue(l);let f=p=>{let g=p.detail.value;g?a.applySettingsUpdate({[t]:{$set:g}}):a.applySettingsUpdate({$unset:[t]})};s.addEventListener("change",f),a.cleanupFns.push(()=>{d.destroy(),s.removeEventListener("change",f)})}),r&&o.descEl.createDiv({},u=>{u.createEl("strong",{text:r})})})}}m();var qr=me(Et());function iw({isStatic:e,itemIndex:t,item:r,toggleShouldHideLabel:n,toggleContainsMarkdown:i,deleteKey:a,updateKey:o,updateLabel:s}){let u=P.useRef(null),l=P.useRef(null),c=P.useRef(null);Mi(l,c);let d=h("div",{className:B("setting-controls-wrapper")},h("div",{className:B("setting-input-wrapper")},h("div",null,h("div",{className:B("setting-item-label")},L("Metadata key")),h("input",{type:"text",value:r.data.metadataKey,onChange:f=>o(f.target.value)})),h("div",null,h("div",{className:B("setting-item-label")},L("Display label")),h("input",{type:"text",value:r.data.label,onChange:f=>s(f.target.value)}))),h("div",{className:B("setting-toggle-wrapper")},h("div",null,h("div",{className:`checkbox-container ${r.data.shouldHideLabel?"is-enabled":""}`,onClick:n,"aria-label":L("Hide label")}),h("div",{className:B("setting-item-label")},L("Hide label"))),h("div",null,h("div",{className:`checkbox-container ${r.data.containsMarkdown?"is-enabled":""}`,onClick:i,"aria-label":L("Field contains markdown")}),h("div",{className:B("setting-item-label")},L("Field contains markdown")))));return h("div",{ref:l,className:B("setting-item-wrapper")},h("div",{ref:u,className:B("setting-item")},e?d:h(gr,{elementRef:u,measureRef:l,id:r.id,index:t,data:r},d),h("div",{className:B("setting-button-wrapper")},h("div",{className:"clickable-icon",onClick:a,"aria-label":L("Delete")},h(_t,{name:"lucide-trash-2"})),h("div",{className:"mobile-option-setting-drag-icon clickable-icon","aria-label":L("Drag to rearrange"),ref:c},h(_t,{name:"lucide-grip-horizontal"})))))}function nD({onChange:e,inputValue:t,keys:r,setKeys:n}){let i=a=>{e(a),n(a)};return{updateKey:a=>o=>{i((0,qr.default)(r,{[a]:{data:{metadataKey:{$set:o}}}}))},updateLabel:a=>o=>{i((0,qr.default)(r,{[a]:{data:{label:{$set:o}}}}))},toggleShouldHideLabel:a=>()=>{i((0,qr.default)(r,{[a]:{data:{$toggle:["shouldHideLabel"]}}}))},toggleContainsMarkdown:a=>()=>{i((0,qr.default)(r,{[a]:{data:{$toggle:["containsMarkdown"]}}}))},deleteKey:a=>()=>{i((0,qr.default)(r,{$splice:[[a,1]]}))},newKey:()=>{i((0,qr.default)(r,{$push:[{...ms,id:Ae(),data:{metadataKey:t,label:"",shouldHideLabel:!1,containsMarkdown:!1}}]}))},moveKey:(a,o)=>{let s=a.getPath(),u=o.getPath(),l=s[s.length-1],c=u[u.length-1];if(l===c)return;let d=r.slice(),[f]=d.splice(l,1);d.splice(c,0,f),i(d)}}}var rD=[Je.MetadataSetting];function iD({keys:e,portalContainer:t}){return P.createPortal(h(Ks,null,(r,n)=>{let a=r.getPath()[0],o=e[a];return h("div",{className:B("drag-container"),style:n},h(iw,{item:o,itemIndex:a,updateKey:ci,updateLabel:ci,toggleShouldHideLabel:ci,toggleContainsMarkdown:ci,deleteKey:ci,isStatic:!0}))}),t)}function aD({scrollEl:e}){let t=P.useContext(xt);return P.useEffect(()=>{let r=0,n=()=>{e.win.clearTimeout(r),r=e.win.setTimeout(()=>{t.hitboxEntities.forEach(i=>{i.recalcInitial()})},100)};return e.addEventListener("scroll",n,{passive:!0,capture:!1}),()=>{e.removeEventListener("scroll",n)}},[e,t]),null}function oD(e){let[t,r]=P.useState(e.dataKeys),[n,i]=P.useState(""),{getShouldIMEBlockAction:a,...o}=yo(),s=Ze(e.scrollEl),{updateKey:u,updateLabel:l,toggleShouldHideLabel:c,toggleContainsMarkdown:d,deleteKey:f,newKey:p,moveKey:g}=nD({onChange:e.onChange,inputValue:n,keys:t,setKeys:r,win:s});return h(S,null,h(Bs,{win:s,onDrop:g},h(aD,{scrollEl:e.scrollEl}),h(Us,null,h(Li,{axis:"vertical"},t.map((y,b)=>h(iw,{key:y.id,item:y,itemIndex:b,updateKey:u(b),updateLabel:l(b),toggleShouldHideLabel:c(b),toggleContainsMarkdown:d(b),deleteKey:f(b)})),h(Pi,{accepts:rD,index:t.length}))),h(iD,{keys:t,portalContainer:e.portalContainer})),h("div",{className:B("setting-key-input-wrapper")},h("input",{placeholder:L("Metadata key"),type:"text",value:n,onChange:y=>i(y.target.value),onKeyDown:y=>{if(!a()){if(y.key==="Enter"){p(),i("");let b=y.target;b.win.setTimeout(()=>{b.scrollIntoView()});return}y.key==="Escape"&&(i(""),y.target.blur())}},...o}),h("button",{onClick:y=>{p(),i("");let b=y.target;b.win.setTimeout(()=>{b.scrollIntoView()})}},L("Add key"))))}function aw(e,t,r,n){P.render(h(oD,{dataKeys:r,scrollEl:t,onChange:n,portalContainer:ur(e)}),e)}function ow(e){P.unmountComponentAtNode(e)}m();m();var sD={grad:.9,turn:360,rad:360/(2*Math.PI)},er=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},Ct=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},vn=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e>t?e:t},sw=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},lw=function(e){return{r:vn(e.r,0,255),g:vn(e.g,0,255),b:vn(e.b,0,255),a:vn(e.a)}},Ld=function(e){return{r:Ct(e.r),g:Ct(e.g),b:Ct(e.b),a:Ct(e.a,3)}},lD=/^#([0-9a-f]{3,8})$/i,Ys=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},cw=function(e){var t=e.r,r=e.g,n=e.b,i=e.a,a=Math.max(t,r,n),o=a-Math.min(t,r,n),s=o?a===t?(r-n)/o:a===r?2+(n-t)/o:4+(t-r)/o:0;return{h:60*(s<0?s+6:s),s:a?o/a*100:0,v:a/255*100,a:i}},uw=function(e){var t=e.h,r=e.s,n=e.v,i=e.a;t=t/360*6,r/=100,n/=100;var a=Math.floor(t),o=n*(1-r),s=n*(1-(t-a)*r),u=n*(1-(1-t+a)*r),l=a%6;return{r:255*[n,s,o,o,u,n][l],g:255*[u,n,n,s,o,o][l],b:255*[o,o,u,n,n,s][l],a:i}},dw=function(e){return{h:sw(e.h),s:vn(e.s,0,100),l:vn(e.l,0,100),a:vn(e.a)}},fw=function(e){return{h:Ct(e.h),s:Ct(e.s),l:Ct(e.l),a:Ct(e.a,3)}},pw=function(e){return uw((r=(t=e).s,{h:t.h,s:(r*=((n=t.l)<50?n:100-n)/100)>0?2*r/(n+r)*100:0,v:n+r,a:t.a}));var t,r,n},Ba=function(e){return{h:(t=cw(e)).h,s:(i=(200-(r=t.s))*(n=t.v)/100)>0&&i<200?r*n/100/(i<=100?i:200-i)*100:0,l:i/2,a:t.a};var t,r,n,i},cD=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,uD=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,dD=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,fD=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,hw={string:[[function(e){var t=lD.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?Ct(parseInt(e[3]+e[3],16)/255,2):1}:e.length===6||e.length===8?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:e.length===8?Ct(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=dD.exec(e)||fD.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:lw({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(e){var t=cD.exec(e)||uD.exec(e);if(!t)return null;var r,n,i=dw({h:(r=t[1],n=t[2],n===void 0&&(n="deg"),Number(r)*(sD[n]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return pw(i)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,n=e.b,i=e.a,a=i===void 0?1:i;return er(t)&&er(r)&&er(n)?lw({r:Number(t),g:Number(r),b:Number(n),a:Number(a)}):null},"rgb"],[function(e){var t=e.h,r=e.s,n=e.l,i=e.a,a=i===void 0?1:i;if(!er(t)||!er(r)||!er(n))return null;var o=dw({h:Number(t),s:Number(r),l:Number(n),a:Number(a)});return pw(o)},"hsl"],[function(e){var t=e.h,r=e.s,n=e.v,i=e.a,a=i===void 0?1:i;if(!er(t)||!er(r)||!er(n))return null;var o=function(s){return{h:sw(s.h),s:vn(s.s,0,100),v:vn(s.v,0,100),a:vn(s.a)}}({h:Number(t),s:Number(r),v:Number(n),a:Number(a)});return uw(o)},"hsv"]]},mw=function(e,t){for(var r=0;r=.5},e.prototype.toHex=function(){return t=Ld(this.rgba),r=t.r,n=t.g,i=t.b,o=(a=t.a)<1?Ys(Ct(255*a)):"","#"+Ys(r)+Ys(n)+Ys(i)+o;var t,r,n,i,a,o},e.prototype.toRgb=function(){return Ld(this.rgba)},e.prototype.toRgbString=function(){return t=Ld(this.rgba),r=t.r,n=t.g,i=t.b,(a=t.a)<1?"rgba("+r+", "+n+", "+i+", "+a+")":"rgb("+r+", "+n+", "+i+")";var t,r,n,i,a},e.prototype.toHsl=function(){return fw(Ba(this.rgba))},e.prototype.toHslString=function(){return t=fw(Ba(this.rgba)),r=t.h,n=t.s,i=t.l,(a=t.a)<1?"hsla("+r+", "+n+"%, "+i+"%, "+a+")":"hsl("+r+", "+n+"%, "+i+"%)";var t,r,n,i,a},e.prototype.toHsv=function(){return t=cw(this.rgba),{h:Ct(t.h),s:Ct(t.s),v:Ct(t.v),a:Ct(t.a,3)};var t},e.prototype.invert=function(){return In({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},e.prototype.saturate=function(t){return t===void 0&&(t=.1),In(Pd(this.rgba,t))},e.prototype.desaturate=function(t){return t===void 0&&(t=.1),In(Pd(this.rgba,-t))},e.prototype.grayscale=function(){return In(Pd(this.rgba,-1))},e.prototype.lighten=function(t){return t===void 0&&(t=.1),In(gw(this.rgba,t))},e.prototype.darken=function(t){return t===void 0&&(t=.1),In(gw(this.rgba,-t))},e.prototype.rotate=function(t){return t===void 0&&(t=15),this.hue(this.hue()+t)},e.prototype.alpha=function(t){return typeof t=="number"?In({r:(r=this.rgba).r,g:r.g,b:r.b,a:t}):Ct(this.rgba.a,3);var r},e.prototype.hue=function(t){var r=Ba(this.rgba);return typeof t=="number"?In({h:t,s:r.s,l:r.l,a:r.a}):Ct(r.h)},e.prototype.isEqual=function(t){return this.toHex()===In(t).toHex()},e}(),In=function(e){return e instanceof vw?e:new vw(e)};var Qs=me(Et());m();function Js(){return(Js=Object.assign||function(e){for(var t=1;t=0||(i[r]=e[r]);return i}function Nd(e){var t=Xt(e),r=Xt(function(n){t.current&&t.current(n)});return t.current=e,r.current}var Ni=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e0:b.buttons>0)&&i.current?a(bw(i.current,b,s.current)):y(!1)},g=function(){return y(!1)};function y(b){var x=u.current,T=Od(i.current),C=b?T.addEventListener:T.removeEventListener;C(x?"touchmove":"mousemove",p),C(x?"touchend":"mouseup",g)}return[function(b){var x=b.nativeEvent,T=i.current;if(T&&(ww(x),!function(A,H){return H&&!Ka(A)}(x,u.current)&&T)){if(Ka(x)){u.current=!0;var C=x.changedTouches||[];C.length&&(s.current=C[0].identifier)}T.focus(),a(bw(T,x,s.current)),y(!0)}},function(b){var x=b.which||b.keyCode;x<37||x>40||(b.preventDefault(),o({left:x===39?.05:x===37?-.05:0,top:x===40?.05:x===38?-.05:0}))},y]},[o,a]),c=l[0],d=l[1],f=l[2];return Sn(function(){return f},[f]),at.createElement("div",Js({},n,{onTouchStart:c,onMouseDown:c,className:"react-colorful__interactive",ref:i,onKeyDown:d,tabIndex:0,role:"slider"}))}),Gs=function(e){return e.filter(Boolean).join(" ")},Hd=function(e){var t=e.color,r=e.left,n=e.top,i=n===void 0?.5:n,a=Gs(["react-colorful__pointer",e.className]);return at.createElement("div",{className:a,style:{top:100*i+"%",left:100*r+"%"}},at.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}}))},Yt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r},d$={grad:.9,turn:360,rad:360/(2*Math.PI)};var Ew=function(e){var t=e.s,r=e.v,n=e.a,i=(200-t)*r/100;return{h:Yt(e.h),s:Yt(i>0&&i<200?t*r/100/(i<=100?i:200-i)*100:0),l:Yt(i/2),a:Yt(n,2)}},Bd=function(e){var t=Ew(e);return"hsl("+t.h+", "+t.s+"%, "+t.l+"%)"},Kd=function(e){var t=Ew(e);return"hsla("+t.h+", "+t.s+"%, "+t.l+"%, "+t.a+")"},hD=function(e){var t=e.h,r=e.s,n=e.v,i=e.a;t=t/360*6,r/=100,n/=100;var a=Math.floor(t),o=n*(1-r),s=n*(1-(t-a)*r),u=n*(1-(1-t+a)*r),l=a%6;return{r:Yt(255*[n,s,o,o,u,n][l]),g:Yt(255*[u,n,n,s,o,o][l]),b:Yt(255*[o,o,u,n,n,s][l]),a:Yt(i,2)}};var mD=function(e){var t=/rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return t?gD({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):{h:0,s:0,v:0,a:1}};var gD=function(e){var t=e.r,r=e.g,n=e.b,i=e.a,a=Math.max(t,r,n),o=a-Math.min(t,r,n),s=o?a===t?(r-n)/o:a===r?2+(n-t)/o:4+(t-r)/o:0;return{h:Yt(60*(s<0?s+6:s)),s:Yt(a?o/a*100:0),v:Yt(a/255*100),a:i}};var vD=at.memo(function(e){var t=e.hue,r=e.onChange,n=Gs(["react-colorful__hue",e.className]);return at.createElement("div",{className:n},at.createElement(Rd,{onMove:function(i){r({h:360*i.left})},onKey:function(i){r({h:Ni(t+360*i.left,0,360)})},"aria-label":"Hue","aria-valuenow":Yt(t),"aria-valuemax":"360","aria-valuemin":"0"},at.createElement(Hd,{className:"react-colorful__hue-pointer",left:t/360,color:Bd({h:t,s:100,v:100,a:1})})))}),yD=at.memo(function(e){var t=e.hsva,r=e.onChange,n={backgroundColor:Bd({h:t.h,s:100,v:100,a:1})};return at.createElement("div",{className:"react-colorful__saturation",style:n},at.createElement(Rd,{onMove:function(i){r({s:100*i.left,v:100-100*i.top})},onKey:function(i){r({s:Ni(t.s+100*i.left,0,100),v:Ni(t.v-100*i.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+Yt(t.s)+"%, Brightness "+Yt(t.v)+"%"},at.createElement(Hd,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:Bd(t)})))}),bD=function(e,t){if(e===t)return!0;for(var r in e)if(e[r]!==t[r])return!1;return!0},wD=function(e,t){return e.replace(/\s/g,"")===t.replace(/\s/g,"")};function ED(e,t,r){var n=Nd(r),i=sr(function(){return e.toHsva(t)}),a=i[0],o=i[1],s=Xt({color:t,hsva:a});Sn(function(){if(!e.equal(t,s.current.color)){var l=e.toHsva(t);s.current={hsva:l,color:t},o(l)}},[t,e]),Sn(function(){var l;bD(a,s.current.hsva)||e.equal(l=e.fromHsva(a),s.current.color)||(s.current={hsva:a,color:l},n(l))},[a,e,n]);var u=cr(function(l){o(function(c){return Object.assign({},c,l)})},[]);return[a,u]}var kD,xD=typeof window!="undefined"?Lr:Sn,SD=function(){return kD||(typeof __webpack_nonce__!="undefined"?__webpack_nonce__:void 0)};var kw=new Map,_D=function(e){xD(function(){var t=e.current?e.current.ownerDocument:document;if(t!==void 0&&!kw.has(t)){var r=t.createElement("style");r.innerHTML=`.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`,kw.set(t,r);var n=SD();n&&r.setAttribute("nonce",n),t.head.appendChild(r)}},[])};var CD=function(e){var t=e.className,r=e.hsva,n=e.onChange,i={backgroundImage:"linear-gradient(90deg, "+Kd(Object.assign({},r,{a:0}))+", "+Kd(Object.assign({},r,{a:1}))+")"},a=Gs(["react-colorful__alpha",t]),o=Yt(100*r.a);return at.createElement("div",{className:a},at.createElement("div",{className:"react-colorful__alpha-gradient",style:i}),at.createElement(Rd,{onMove:function(s){n({a:s.left})},onKey:function(s){n({a:Ni(r.a+s.left)})},"aria-label":"Alpha","aria-valuetext":o+"%","aria-valuenow":o,"aria-valuemin":"0","aria-valuemax":"100"},at.createElement(Hd,{className:"react-colorful__alpha-pointer",left:r.a,color:Kd(r)})))},DD=function(e){var t=e.className,r=e.colorModel,n=e.color,i=n===void 0?r.defaultColor:n,a=e.onChange,o=yw(e,["className","colorModel","color","onChange"]),s=Xt(null);_D(s);var u=ED(r,i,a),l=u[0],c=u[1],d=Gs(["react-colorful",t]);return at.createElement("div",Js({},o,{ref:s,className:d}),at.createElement(yD,{hsva:l,onChange:c}),at.createElement(vD,{hue:l.h,onChange:c}),at.createElement(CD,{hsva:l,onChange:c,className:"react-colorful__last-control"}))};var TD={defaultColor:"rgba(0, 0, 0, 1)",toHsva:mD,fromHsva:function(e){var t=hD(e);return"rgba("+t.r+", "+t.g+", "+t.b+", "+t.a+")"},equal:wD},xw=function(e){return at.createElement(DD,Js({},e,{colorModel:TD}))};function Sw(e){let t=In(e);if(!t.isValid())return null;let r=t.toRgb();return{rgba:`rgba(${r.r}, ${r.g}, ${r.b}, ${r.a})`,hexa:t.toHex()}}function $a({color:e,setColor:t,defaultColor:r}){let[n,i]=P.useState(e||r),[a,o]=P.useState(e||r),[s,u]=P.useState(!1),l=P.useCallback(d=>{let f=Sw(d||r);f&&(o(f.hexa),i(f.rgba),t(f.rgba))},[t]);P.useEffect(()=>{if(!e||!r)return;let d=Sw(e||r);d&&(i(d.rgba),o(d.hexa))},[]);let c=Fi(()=>{u(!1)});return h("div",{ref:c,className:B("color-picker-wrapper")},s&&h("div",{className:B("color-picker")},h(xw,{color:n,onChange:l})),h("input",{type:"text",value:a,onChange:d=>l(d.target.value),onFocus:()=>{u(!0)}}))}function MD({tagColorKey:e,deleteKey:t,updateKey:r,defaultColors:n}){return h("div",{className:B("setting-item-wrapper")},h("div",{className:B("setting-item")},h("div",{className:`${B("setting-controls-wrapper")} ${B("tag-color-input")}`},h("div",{className:B("setting-input-wrapper")},h("div",null,h("div",{className:B("setting-item-label")},L("Tag")),h("input",{type:"text",placeholder:"#tag",value:e.tagKey,onChange:i=>{r(i.currentTarget.value,e.color,e.backgroundColor)}})),h("div",null,h("div",{className:B("setting-item-label")},L("Background color")),h($a,{color:e.backgroundColor,setColor:i=>{r(e.tagKey,e.color,i)},defaultColor:n.backgroundColor})),h("div",null,h("div",{className:B("setting-item-label")},L("Text color")),h($a,{color:e.color,setColor:i=>{r(e.tagKey,i,e.backgroundColor)},defaultColor:n.color}))),h("div",{className:B("setting-toggle-wrapper")},h("div",null,h("div",{className:B("item-tags")},h("a",{className:`tag ${B("item-tag")}`},"#tag1"),h("a",{className:`tag ${B("item-tag")}`,style:{"--tag-color":e.color,"--tag-background-color":e.backgroundColor}},e.tagKey||"#tag"),h("a",{className:`tag ${B("item-tag")}`},"#tag2"))))),h("div",{className:B("setting-button-wrapper")},h("div",{className:"clickable-icon",onClick:t,"aria-label":L("Delete")},h(_t,{name:"lucide-trash-2"})))))}function ID({dataKeys:e,onChange:t}){let[r,n]=P.useState(e),i=P.useMemo(()=>{let l=createDiv(B("item-tags")),c=l.createEl("a",B("item-tag"));l.style.position="absolute",l.style.visibility="hidden",activeDocument.body.append(l);let d=activeWindow.getComputedStyle(c),f=d.getPropertyValue("color").trim(),p=d.getPropertyValue("background-color").trim();return l.remove(),{color:f,backgroundColor:p}},[]),a=l=>{t(l),n(l)},o=()=>{a((0,Qs.default)(r,{$push:[{...gs,id:Ae(),data:{tagKey:"",color:"",backgroundColor:""}}]}))},s=l=>{a((0,Qs.default)(r,{$splice:[[l,1]]}))},u=l=>(c,d,f)=>{a((0,Qs.default)(r,{[l]:{data:{tagKey:{$set:c},color:{$set:d},backgroundColor:{$set:f}}}}))};return h("div",{className:B("tag-color-input-wrapper")},h("div",{className:"setting-item-info"},h("div",{className:"setting-item-name"},L("Display tag colors")),h("div",{className:"setting-item-description"},L("Set colors for the tags displayed below the card title."))),r.map((l,c)=>h(MD,{key:l.id,tagColorKey:l.data,deleteKey:()=>s(c),updateKey:u(c),defaultColors:i})),h("button",{className:B("add-tag-color-button"),onClick:()=>{o()}},L("Add tag color")))}function _w(e,t,r){P.render(h(ID,{dataKeys:t,onChange:r,portalContainer:ur(e)}),e)}function Cw(e){P.unmountComponentAtNode(e)}m();var Xs=me(Et());var $d=me(require("obsidian"));function AD({dateColorKey:e,deleteKey:t,updateKey:r,defaultColors:n,getTimeFormat:i,getDateFormat:a}){let o="between";return e.isToday&&(o="today"),e.isBefore&&(o="before"),e.isAfter&&(o="after"),h("div",{className:B("setting-item-wrapper")},h("div",{className:B("setting-item")},h("div",{className:`${B("setting-controls-wrapper")} ${B("tag-color-input")}`},h("div",null,h("div",null,h("div",{className:B("setting-item-label")},L("Date is"))),h("div",{className:B("date-color-config")},h("select",{className:"dropdown",defaultValue:o,onChange:s=>{let u={...e};switch(delete u.isAfter,delete u.isBefore,delete u.isToday,s.target.value){case"today":u.isToday=!0;break;case"before":u.isBefore=!0;break;case"after":u.isAfter=!0;break}r(u)}},h("option",{value:"between"},L("Between now and")),h("option",{value:"today"},L("Today")),h("option",{value:"after"},L("After now")),h("option",{value:"before"},L("Before now"))),!e.isToday&&!e.isAfter&&!e.isBefore&&h(S,null,h("input",{type:"number",value:e.distance,onChange:s=>{r({...e,distance:parseInt(s.target.value)})}}),h("select",{className:"dropdown",defaultValue:e.unit,onChange:s=>{r({...e,unit:s.target.value})}},h("option",{value:"hours"},"Hours"),h("option",{value:"days"},"Days"),h("option",{value:"weeks"},"Weeks"),h("option",{value:"months"},"Months")),h("select",{className:"dropdown",defaultValue:e.direction,onChange:s=>{r({...e,direction:s.target.value})}},h("option",{value:"after"},L("After now")),h("option",{value:"before"},L("Before now"))))),h("div",{className:B("date-color-config")},h("div",null,h("div",{className:B("setting-item-label")},L("Background color")),h($a,{color:e.backgroundColor,setColor:s=>{r({...e,backgroundColor:s})},defaultColor:n.backgroundColor})),h("div",null,h("div",{className:B("setting-item-label")},L("Text color")),h($a,{color:e.color,setColor:s=>{r({...e,color:s})},defaultColor:n.color})))),h("div",null,h("div",{className:B("date-color-wrapper")},h("div",{className:B("item-metadata")},h("span",{style:{"--date-color":e.color,"--date-background-color":e.backgroundColor},className:et([B("item-metadata-date-wrapper"),{"has-background":!!(e==null?void 0:e.backgroundColor)}])},h("span",{className:B("item-metadata-date is-button")},(0,$d.moment)().format(a()))," ",h("span",{className:B("item-metadata-time is-button")},(0,$d.moment)().format(i()))))))),h("div",{className:B("setting-button-wrapper")},h("div",{className:"clickable-icon",onClick:t,"aria-label":L("Delete")},h(_t,{name:"lucide-trash-2"})))))}function LD({dataKeys:e,onChange:t,getTimeFormat:r,getDateFormat:n}){let[i,a]=P.useState(e),o=P.useMemo(()=>{let d=createDiv(B("item-metadata")),f=d.createSpan(B("item-metadata-date"));d.style.position="absolute",d.style.visibility="hidden",activeDocument.body.append(d);let p=activeWindow.getComputedStyle(f),g=p.getPropertyValue("color").trim(),y=p.getPropertyValue("background-color").trim();return d.remove(),{color:g,backgroundColor:y}},[]),s=d=>{t(d),a(d)},u=()=>{s((0,Xs.default)(i,{$push:[{...vs,id:Ae(),data:{isToday:!1,distance:1,unit:"days",direction:"after"}}]}))},l=d=>{s((0,Xs.default)(i,{$splice:[[d,1]]}))},c=d=>f=>{s((0,Xs.default)(i,{[d]:{data:{$set:f}}}))};return h("div",{className:B("date-color-input-wrapper")},h("div",{className:"setting-item-info"},h("div",{className:"setting-item-name"},L("Display date colors")),h("div",{className:"setting-item-description"},L("Set colors for the date displayed below the card based on the rules below"))),i.map((d,f)=>h(AD,{key:d.id,dateColorKey:d.data,deleteKey:()=>l(f),updateKey:c(f),defaultColors:o,getTimeFormat:r,getDateFormat:n})),h("button",{className:B("add-tag-color-button"),onClick:u},L("Add date color")))}function Dw(e,t,r,n,i){P.render(h(LD,{dataKeys:t,onChange:r,portalContainer:ur(e),getDateFormat:n,getTimeFormat:i}),e)}function Tw(e){P.unmountComponentAtNode(e)}var Iw=/^\d+(?:\.\d+)?$/,Aw={[gn]:!0,"date-display-format":!0,"date-format":!0,"date-picker-week-start":!0,"date-time-display-format":!0,"date-trigger":!0,"hide-card-count":!0,"hide-date-display":!0,"hide-date-in-title":!0,"hide-tags-display":!0,"hide-tags-in-title":!0,"lane-width":!0,"link-date-to-daily-note":!0,"max-archive-size":!0,"metadata-keys":!0,"new-card-insertion-method":!0,"new-line-trigger":!0,"new-note-folder":!0,"new-note-template":!0,"prepend-archive-date":!0,"prepend-archive-format":!0,"prepend-archive-separator":!0,"show-checkboxes":!0,"show-relative-date":!0,"time-format":!0,"time-trigger":!0,"show-add-list":!0,"show-archive-all":!0,"show-view-as-markdown":!0,"show-board-settings":!0,"show-search":!0,"tag-colors":!0,"date-colors":!0},Ud=class{constructor(t,r,n){this.cleanupFns=[];this.applyDebounceTimer=0;this.app=t.app,this.plugin=t,this.config=r,this.settings=n}applySettingsUpdate(t){this.win.clearTimeout(this.applyDebounceTimer),this.applyDebounceTimer=this.win.setTimeout(()=>{this.settings=(0,Mw.default)(this.settings,t),this.config.onSettingsChange(this.settings)},200)}getSetting(t,r){return r?[this.settings[t],this.plugin.settings[t]]:[this.settings[t],null]}constructUI(t,r,n){this.win=t.win;let{templateFiles:i,vaultFolders:a,templateWarning:o}=rw(this.app);t.createEl("h3",{text:r}),n?t.createEl("p",{text:L("These settings will take precedence over the default Kanban board settings.")}):t.createEl("p",{text:L("Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.")}),new Be.Setting(t).setName(L("New line trigger")).setDesc(L("Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lists.")).addDropdown(s=>{s.addOption("shift-enter",L("Shift + Enter")),s.addOption("enter",L("Enter"));let[u,l]=this.getSetting("new-line-trigger",n);s.setValue(u||l||"shift-enter"),s.onChange(c=>{this.applySettingsUpdate({"new-line-trigger":{$set:c}})})}),new Be.Setting(t).setName(L("Prepend / append new cards")).setDesc(L("This setting controls whether new cards are added to the beginning or end of the list.")).addDropdown(s=>{s.addOption("prepend",L("Prepend")),s.addOption("prepend-compact",L("Prepend (compact)")),s.addOption("append",L("Append"));let[u,l]=this.getSetting("new-card-insertion-method",n);s.setValue(u||l||"append"),s.onChange(c=>{this.applySettingsUpdate({"new-card-insertion-method":{$set:c}})})}),new Be.Setting(t).setName(L("Note template")).setDesc(L("This template will be used when creating new notes from Kanban cards.")).then(Ad({choices:i,key:"new-note-template",warningText:o,local:n,placeHolderStr:L("No template"),manager:this})),new Be.Setting(t).setName(L("Note folder")).setDesc(L("Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.")).then(Ad({choices:a,key:"new-note-folder",local:n,placeHolderStr:L("Default folder"),manager:this})),new Be.Setting(t).setName(L("Hide card counts in list titles")).setDesc(L("When toggled, card counts are hidden from the list title")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-card-count",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-card-count":{$set:f}})})}).addExtraButton(l=>{l.setIcon("lucide-rotate-ccw").setTooltip(L("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-card-count",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-card-count"]})})})}),new Be.Setting(t).setName(L("List width")).setDesc(L("Enter a number to set the list width in pixels.")).addText(s=>{let[u,l]=this.getSetting("lane-width",n);s.inputEl.setAttr("type","number"),s.inputEl.placeholder=`${l||"272"} (default)`,s.inputEl.value=u?u.toString():"",s.onChange(c=>{if(c&&Iw.test(c)){s.inputEl.removeClass("error"),this.applySettingsUpdate({"lane-width":{$set:parseInt(c)}});return}c&&s.inputEl.addClass("error"),this.applySettingsUpdate({$unset:["lane-width"]})})}),new Be.Setting(t).setName(L("Maximum number of archived cards")).setDesc(L("Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.")).addText(s=>{let[u,l]=this.getSetting("max-archive-size",n);s.inputEl.setAttr("type","number"),s.inputEl.placeholder=`${l||"-1"} (default)`,s.inputEl.value=u?u.toString():"",s.onChange(c=>{if(c&&Iw.test(c)){s.inputEl.removeClass("error"),this.applySettingsUpdate({"max-archive-size":{$set:parseInt(c)}});return}c&&s.inputEl.addClass("error"),this.applySettingsUpdate({$unset:["max-archive-size"]})})}),new Be.Setting(t).setName(L("Display card checkbox")).setDesc(L("When toggled, a checkbox will be displayed with each card")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-checkboxes",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"show-checkboxes":{$set:f}})})}).addExtraButton(l=>{l.setIcon("lucide-rotate-ccw").setTooltip(L("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-checkboxes",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-checkboxes"]})})})}),new Be.Setting(t).setName(L("Hide tags in card titles")).setDesc(L("When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-tags-in-title",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-tags-in-title":{$set:f}})})}).addExtraButton(l=>{l.setIcon("lucide-rotate-ccw").setTooltip(L("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-tags-in-title",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-tags-in-title"]})})})}),new Be.Setting(t).setName(L("Hide card display tags")).setDesc(L("When toggled, tags will not be displayed below the card title.")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-tags-display",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-tags-display":{$set:f}})})}).addExtraButton(l=>{l.setIcon("lucide-rotate-ccw").setTooltip(L("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-tags-display",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-tags-display"]})})})}),new Be.Setting(t).setName(L("Display tag colors")).setDesc(L("Set colors for the tags displayed below the card title.")).then(s=>{let[u]=this.getSetting("tag-colors",n),l=(u||[]).map(c=>({...gs,id:Ae(),data:c}));_w(s.settingEl,l,c=>this.applySettingsUpdate({"tag-colors":{$set:c.map(d=>d.data)}})),this.cleanupFns.push(()=>{s.settingEl&&Cw(s.settingEl)})}),t.createEl("h4",{text:L("Board Header Buttons")}),new Be.Setting(t).setName(L("Add a list")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-add-list",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-add-list":{$set:f}})})}).addExtraButton(l=>{l.setIcon("lucide-rotate-ccw").setTooltip(L("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-add-list",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-add-list"]})})})}),new Be.Setting(t).setName(L("Archive completed cards")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-archive-all",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-archive-all":{$set:f}})})}).addExtraButton(l=>{l.setIcon("lucide-rotate-ccw").setTooltip(L("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-archive-all",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-archive-all"]})})})}),new Be.Setting(t).setName(L("Open as markdown")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-view-as-markdown",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-view-as-markdown":{$set:f}})})}).addExtraButton(l=>{l.setIcon("lucide-rotate-ccw").setTooltip(L("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-view-as-markdown",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-view-as-markdown"]})})})}),new Be.Setting(t).setName(L("Open board settings")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-board-settings",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-board-settings":{$set:f}})})}).addExtraButton(l=>{l.setIcon("lucide-rotate-ccw").setTooltip(L("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-board-settings",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-board-settings"]})})})}),new Be.Setting(t).setName(L("Search...")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-search",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-search":{$set:f}})})}).addExtraButton(l=>{l.setIcon("lucide-rotate-ccw").setTooltip(L("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-search",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-search"]})})})}),t.createEl("h4",{text:L("Date & Time")}),new Be.Setting(t).setName(L("Date trigger")).setDesc(L("When this is typed, it will trigger the date selector")).addText(s=>{let[u,l]=this.getSetting("date-trigger",n);(u||l)&&s.setValue(u||l),s.setPlaceholder(l||js),s.onChange(c=>{c?this.applySettingsUpdate({"date-trigger":{$set:c}}):this.applySettingsUpdate({$unset:["date-trigger"]})})}),new Be.Setting(t).setName(L("Time trigger")).setDesc(L("When this is typed, it will trigger the time selector")).addText(s=>{let[u,l]=this.getSetting("time-trigger",n);(u||l)&&s.setValue(u||l),s.setPlaceholder(l||qs),s.onChange(c=>{c?this.applySettingsUpdate({"time-trigger":{$set:c}}):this.applySettingsUpdate({$unset:["time-trigger"]})})}),new Be.Setting(t).setName(L("Date format")).then(s=>{s.addMomentFormat(u=>{s.descEl.appendChild(createFragment(f=>{f.appendText(L("This format will be used when saving dates in markdown.")),f.createEl("br"),f.appendText(L("For more syntax, refer to")+" "),f.createEl("a",{text:L("format reference"),href:"https://momentjs.com/docs/#/displaying/format/"},p=>{p.setAttr("target","_blank")}),f.createEl("br"),f.appendText(L("Your current syntax looks like this")+": "),u.setSampleEl(f.createEl("b",{cls:"u-pop"})),f.createEl("br")}));let[l,c]=this.getSetting("date-format",n),d=Nr(this.app);u.setPlaceholder(d),u.setDefaultFormat(d),(l||c)&&u.setValue(l||c),u.onChange(f=>{f?this.applySettingsUpdate({"date-format":{$set:f}}):this.applySettingsUpdate({$unset:["date-format"]})})})}),new Be.Setting(t).setName(L("Time format")).then(s=>{s.addMomentFormat(u=>{s.descEl.appendChild(createFragment(f=>{f.appendText(L("For more syntax, refer to")+" "),f.createEl("a",{text:L("format reference"),href:"https://momentjs.com/docs/#/displaying/format/"},p=>{p.setAttr("target","_blank")}),f.createEl("br"),f.appendText(L("Your current syntax looks like this")+": "),u.setSampleEl(f.createEl("b",{cls:"u-pop"})),f.createEl("br")}));let[l,c]=this.getSetting("time-format",n),d=ui(this.app);u.setPlaceholder(d),u.setDefaultFormat(d),(l||c)&&u.setValue(l||c),u.onChange(f=>{f?this.applySettingsUpdate({"time-format":{$set:f}}):this.applySettingsUpdate({$unset:["time-format"]})})})}),new Be.Setting(t).setName(L("Date display format")).then(s=>{s.addMomentFormat(u=>{s.descEl.appendChild(createFragment(f=>{f.appendText(L("This format will be used when displaying dates in Kanban cards.")),f.createEl("br"),f.appendText(L("For more syntax, refer to")+" "),f.createEl("a",{text:L("format reference"),href:"https://momentjs.com/docs/#/displaying/format/"},p=>{p.setAttr("target","_blank")}),f.createEl("br"),f.appendText(L("Your current syntax looks like this")+": "),u.setSampleEl(f.createEl("b",{cls:"u-pop"})),f.createEl("br")}));let[l,c]=this.getSetting("date-display-format",n),d=Nr(this.app);u.setPlaceholder(d),u.setDefaultFormat(d),(l||c)&&u.setValue(l||c),u.onChange(f=>{f?this.applySettingsUpdate({"date-display-format":{$set:f}}):this.applySettingsUpdate({$unset:["date-display-format"]})})})}),new Be.Setting(t).setName(L("Show relative date")).setDesc(L("When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-relative-date",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"show-relative-date":{$set:f}})})}).addExtraButton(l=>{l.setIcon("lucide-rotate-ccw").setTooltip(L("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-relative-date",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-relative-date"]})})})}),new Be.Setting(t).setName(L("Hide card display dates")).setDesc(L("When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-date-display",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-date-display":{$set:f}})})}).addExtraButton(l=>{l.setIcon("lucide-rotate-ccw").setTooltip(L("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-date-display",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-date-display"]})})})}),new Be.Setting(t).setName(L("Hide dates in card titles")).setDesc(L("When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-date-in-title",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-date-in-title":{$set:f}})})}).addExtraButton(l=>{l.setIcon("lucide-rotate-ccw").setTooltip(L("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-date-in-title",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-date-in-title"]})})})}),new Be.Setting(t).setName(L("Display date colors")).setDesc(L("Set colors for the date displayed below the card based on the rules below")).then(s=>{let[u]=this.getSetting("date-colors",n),l=(u||[]).map(c=>({...vs,id:Ae(),data:c}));Dw(s.settingEl,l,c=>this.applySettingsUpdate({"date-colors":{$set:c.map(d=>d.data)}}),()=>{let[c,d]=this.getSetting("date-display-format",n),f=Nr(this.app);return c||d||f},()=>{let[c,d]=this.getSetting("time-format",n),f=ui(this.app);return c||d||f}),this.cleanupFns.push(()=>{s.settingEl&&Tw(s.settingEl)})}),new Be.Setting(t).setName(L("Link dates to daily notes")).setDesc(L("When toggled, dates will link to daily notes. Eg. [[2021-04-26]]")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("link-date-to-daily-note",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"link-date-to-daily-note":{$set:f}})})}).addExtraButton(l=>{l.setIcon("lucide-rotate-ccw").setTooltip(L("Reset to default")).onClick(()=>{let[,c]=this.getSetting("link-date-to-daily-note",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["link-date-to-daily-note"]})})})}),new Be.Setting(t).setName(L("Add date and time to archived cards")).setDesc(L("When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("prepend-archive-date",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"prepend-archive-date":{$set:f}})})}).addExtraButton(l=>{l.setIcon("lucide-rotate-ccw").setTooltip(L("Reset to default")).onClick(()=>{let[,c]=this.getSetting("prepend-archive-date",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["prepend-archive-date"]})})})}),new Be.Setting(t).setName(L("Archive date/time separator")).setDesc(L("This will be used to separate the archived date/time from the title")).addText(s=>{let[u,l]=this.getSetting("prepend-archive-separator",n);s.inputEl.placeholder=l?`${l} (default)`:"",s.inputEl.value=u||"",s.onChange(c=>{if(c){this.applySettingsUpdate({"prepend-archive-separator":{$set:c}});return}this.applySettingsUpdate({$unset:["prepend-archive-separator"]})})}),new Be.Setting(t).setName(L("Archive date/time format")).then(s=>{s.addMomentFormat(u=>{s.descEl.appendChild(createFragment(T=>{T.appendText(L("For more syntax, refer to")+" "),T.createEl("a",{text:L("format reference"),href:"https://momentjs.com/docs/#/displaying/format/"},C=>{C.setAttr("target","_blank")}),T.createEl("br"),T.appendText(L("Your current syntax looks like this")+": "),u.setSampleEl(T.createEl("b",{cls:"u-pop"})),T.createEl("br")}));let[l,c]=this.getSetting("prepend-archive-format",n),[d,f]=this.getSetting("date-format",n),p=d||f||Nr(this.app),[g,y]=this.getSetting("time-format",n),b=g||y||ui(this.app),x=`${p} ${b}`;u.setPlaceholder(x),u.setDefaultFormat(x),(l||c)&&u.setValue(l||c),u.onChange(T=>{T?this.applySettingsUpdate({"prepend-archive-format":{$set:T}}):this.applySettingsUpdate({$unset:["prepend-archive-format"]})})})}),new Be.Setting(t).setName(L("Calendar: first day of week")).setDesc(L("Override which day is used as the start of the week")).addDropdown(s=>{s.addOption("",L("default")),s.addOption("0",L("Sunday")),s.addOption("1",L("Monday")),s.addOption("2",L("Tuesday")),s.addOption("3",L("Wednesday")),s.addOption("4",L("Thursday")),s.addOption("5",L("Friday")),s.addOption("6",L("Saturday"));let[u,l]=this.getSetting("date-picker-week-start",n);s.setValue((u==null?void 0:u.toString())||(l==null?void 0:l.toString())||""),s.onChange(c=>{c?this.applySettingsUpdate({"date-picker-week-start":{$set:Number(c)}}):this.applySettingsUpdate({$unset:["date-picker-week-start"]})})}),t.createEl("br"),t.createEl("h4",{text:L("Linked Page Metadata")}),t.createEl("p",{cls:B("metadata-setting-desc"),text:L("Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.")}),new Be.Setting(t).then(s=>{s.settingEl.addClass(B("draggable-setting-container"));let[u]=this.getSetting("metadata-keys",n),l=(u||[]).map(c=>({...ms,id:Ae(),data:c,win:Ze(t)}));aw(s.settingEl,t,l,c=>this.applySettingsUpdate({"metadata-keys":{$set:c.map(d=>d.data)}})),this.cleanupFns.push(()=>{s.settingEl&&ow(s.settingEl)})})}cleanUp(){this.win=null,this.cleanupFns.forEach(t=>t()),this.cleanupFns=[]}},Zs=class extends Be.Modal{constructor(t,r,n){super(t.app);this.view=t,this.settingsManager=new Ud(t.plugin,r,n)}onOpen(){let{contentEl:t,modalEl:r}=this;r.addClass(B("board-settings-modal")),this.settingsManager.constructUI(t,this.view.file.basename,!0)}onClose(){let{contentEl:t}=this;this.settingsManager.cleanUp(),t.empty()}},Vd=class extends Be.PluginSettingTab{constructor(t,r){super(t.app,t);this.plugin=t,this.settingsManager=new Ud(t,r,t.settings)}display(){let{containerEl:t}=this;t.empty(),t.addClass(B("board-settings-modal")),this.settingsManager.constructUI(t,L("Kanban Plugin"),!1)}};var yn="kanban",Ua="lucide-trello",tr=class extends Lw.TextFileView{constructor(t,r){super(t);this.actionButtons={};this.plugin=r,this.emitter=Hs(),this.emitter.on("hotkey",n=>{switch(n){case"daily-notes:goto-prev":{Vm(this.app,this.file);break}case"daily-notes:goto-next":{Um(this.app,this.file);break}}}),this.register(this.containerEl.onWindowMigrated(()=>{this.plugin.removeView(this),this.plugin.addView(this,this.data,this.isPrimary)}))}get isPrimary(){var t;return((t=this.plugin.getStateManager(this.file))==null?void 0:t.getAView())===this}get id(){var t;return`${this.leaf.id}:::${(t=this.file)==null?void 0:t.path}`}get isShiftPressed(){return this.plugin.isShiftPressed}setBoard(t,r=!0){this.plugin.stateManagers.get(this.file).setState(t,r)}getBoard(){return this.plugin.stateManagers.get(this.file).state}getViewType(){return yn}getIcon(){return Ua}getDisplayText(){var t;return((t=this.file)==null?void 0:t.basename)||"Kanban"}getWindow(){return Ze(this.containerEl)}async onLoadFile(t){try{return await super.onLoadFile(t)}catch(r){throw this.plugin.stateManagers.get(this.file).setError(r),r}}destroy(){this.plugin.removeView(this),Object.values(this.actionButtons).forEach(t=>t.remove()),this.actionButtons={}}async onClose(){this.destroy()}async onUnloadFile(t){return this.destroy(),await super.onUnloadFile(t)}handleRename(t,r){this.file.path===t&&this.plugin.handleViewFileRename(this,r)}requestSaveToDisk(t){this.data!==t&&this.isPrimary?(this.data=t,this.requestSave()):this.data=t}getViewData(){return this.data}setViewData(t,r){if(!Wm(t)){this.plugin.kanbanFileModes[this.leaf.id||this.file.path]="markdown",this.plugin.removeView(this),this.plugin.setMarkdownView(this.leaf,!1);return}this.plugin.addView(this,t,!r&&this.isPrimary)}getPortal(){let t=this.plugin.stateManagers.get(this.file);return h(ew,{stateManager:t,view:this})}onPaneMenu(t,r,n=!0){if(r!=="more-options"){super.onPaneMenu(t,r);return}t.addItem(i=>{i.setTitle(L("Open as markdown")).setIcon("lucide-file-text").setSection("pane").onClick(()=>{this.plugin.kanbanFileModes[this.leaf.id||this.file.path]="markdown",this.plugin.setMarkdownView(this.leaf)})}).addItem(i=>{i.setTitle(L("Open board settings")).setIcon("lucide-settings").setSection("pane").onClick(()=>{let a=this.plugin.stateManagers.get(this.file),o=a.state;new Zs(this,{onSettingsChange:s=>{let u=(0,Wd.default)(o,{data:{settings:{$set:s}}});a.setState(u)}},o.data.settings).open()})}).addItem(i=>{i.setTitle(L("Archive completed cards")).setIcon("lucide-archive").setSection("pane").onClick(()=>{this.plugin.stateManagers.get(this.file).archiveCompletedCards()})}),n&&super.onPaneMenu(t,r)}initHeaderButtons(){let t=this.plugin.getStateManager(this.file);if(!!t)if(t.getSetting("show-board-settings")&&!this.actionButtons["show-board-settings"]?this.actionButtons["show-board-settings"]=this.addAction("lucide-settings",L("Open board settings"),()=>{let r=this.plugin.stateManagers.get(this.file),n=r.state;new Zs(this,{onSettingsChange:i=>{let a=(0,Wd.default)(n,{data:{settings:{$set:i}}});r.setState(a)}},n.data.settings).open()}):!t.getSetting("show-board-settings")&&this.actionButtons["show-board-settings"]&&(this.actionButtons["show-board-settings"].remove(),delete this.actionButtons["show-board-settings"]),t.getSetting("show-search")&&!this.actionButtons["show-search"]?this.actionButtons["show-search"]=this.addAction("lucide-search",L("Search..."),()=>{this.emitter.emit("hotkey","editor:open-search")}):!t.getSetting("show-search")&&this.actionButtons["show-search"]&&(this.actionButtons["show-search"].remove(),delete this.actionButtons["show-search"]),t.getSetting("show-view-as-markdown")&&!this.actionButtons["show-view-as-markdown"]?this.actionButtons["show-view-as-markdown"]=this.addAction("lucide-file-text",L("Open as markdown"),()=>{this.plugin.kanbanFileModes[this.leaf.id||this.file.path]="markdown",this.plugin.setMarkdownView(this.leaf)}):!t.getSetting("show-view-as-markdown")&&this.actionButtons["show-view-as-markdown"]&&(this.actionButtons["show-view-as-markdown"].remove(),delete this.actionButtons["show-view-as-markdown"]),t.getSetting("show-archive-all")&&!this.actionButtons["show-archive-all"]?this.actionButtons["show-archive-all"]=this.addAction("lucide-archive",L("Archive completed cards"),()=>{this.plugin.stateManagers.get(this.file).archiveCompletedCards()}):!t.getSetting("show-archive-all")&&this.actionButtons["show-archive-all"]&&(this.actionButtons["show-archive-all"].remove(),delete this.actionButtons["show-archive-all"]),t.getSetting("show-add-list")&&!this.actionButtons["show-add-list"]){let r=this.addAction("lucide-plus-circle",L("Add a list"),()=>{this.emitter.emit("showLaneForm",void 0)});r.addClass(B("ignore-click-outside")),this.actionButtons["show-add-list"]=r}else!t.getSetting("show-add-list")&&this.actionButtons["show-add-list"]&&(this.actionButtons["show-add-list"].remove(),delete this.actionButtons["show-add-list"])}clear(){}};m();var Vi=me(Et()),YE=me(require("obsidian"));m();m();var zd={};qi(zd,{JsonPatchError:()=>ot,_areEquals:()=>za,applyOperation:()=>Yr,applyPatch:()=>al,applyReducer:()=>RD,deepClone:()=>ND,getValueByPointer:()=>il,validate:()=>Fw,validator:()=>ol});m();m();var PD=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)i.hasOwnProperty(a)&&(n[a]=i[a])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),FD=Object.prototype.hasOwnProperty;function el(e,t){return FD.call(e,t)}function tl(e){if(Array.isArray(e)){for(var t=new Array(e.length),r=0;r=48&&n<=57){t++;continue}return!1}return!0}function Hn(e){return e.indexOf("/")===-1&&e.indexOf("~")===-1?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}function Va(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function rl(e){if(e===void 0)return!0;if(e){if(Array.isArray(e)){for(var t=0,r=e.length;t0&&u[c-1]=="constructor"))throw new TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(r&&f===void 0&&(l[p]===void 0?f=u.slice(0,c).join("/"):c==d-1&&(f=t.path),f!==void 0&&g(t,0,e,f)),c++,Array.isArray(l)){if(p==="-")p=l.length;else{if(r&&!nl(p))throw new ot("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",a,t,e);nl(p)&&(p=~~p)}if(c>=d){if(r&&t.op==="add"&&p>l.length)throw new ot("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",a,t,e);var o=OD[t.op].call(t,l,p,e);if(o.test===!1)throw new ot("Test operation failed","TEST_OPERATION_FAILED",a,t,e);return o}}else if(c>=d){var o=Oi[t.op].call(t,l,p,e);if(o.test===!1)throw new ot("Test operation failed","TEST_OPERATION_FAILED",a,t,e);return o}if(l=l[p],r&&c0)throw new ot('Operation `path` property must start with "/"',"OPERATION_PATH_INVALID",t,e,r);if((e.op==="move"||e.op==="copy")&&typeof e.from!="string")throw new ot("Operation `from` property is not present (applicable in `move` and `copy` operations)","OPERATION_FROM_REQUIRED",t,e,r);if((e.op==="add"||e.op==="replace"||e.op==="test")&&e.value===void 0)throw new ot("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_REQUIRED",t,e,r);if((e.op==="add"||e.op==="replace"||e.op==="test")&&rl(e.value))throw new ot("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED",t,e,r);if(r){if(e.op=="add"){var i=e.path.split("/").length,a=n.split("/").length;if(i!==a+1&&i!==a)throw new ot("Cannot perform an `add` operation at the desired path","OPERATION_PATH_CANNOT_ADD",t,e,r)}else if(e.op==="replace"||e.op==="remove"||e.op==="_get"){if(e.path!==n)throw new ot("Cannot perform the operation at a path that does not exist","OPERATION_PATH_UNRESOLVABLE",t,e,r)}else if(e.op==="move"||e.op==="copy"){var o={op:"_get",path:e.from,value:void 0},s=Fw([o],r);if(s&&s.name==="OPERATION_PATH_UNRESOLVABLE")throw new ot("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",t,e,r)}}}else throw new ot("Operation `op` property is not one of operations defined in RFC-6902","OPERATION_OP_INVALID",t,e,r)}function Fw(e,t,r){try{if(!Array.isArray(e))throw new ot("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(t)al(Ft(t),Ft(e),r||!0);else{r=r||ol;for(var n=0;nJd,generate:()=>qd,observe:()=>WD,unobserve:()=>VD});m();var jd=new WeakMap,HD=function(){function e(t){this.observers=new Map,this.obj=t}return e}(),BD=function(){function e(t,r){this.callback=t,this.observer=r}return e}();function KD(e){return jd.get(e)}function $D(e,t){return e.observers.get(t)}function UD(e,t){e.observers.delete(t.callback)}function VD(e,t){t.unobserve()}function WD(e,t){var r=[],n,i=KD(e);if(!i)i=new HD(e),jd.set(e,i);else{var a=$D(i,t);n=a&&a.observer}if(n)return n;if(n={},i.value=Ft(e),t){n.callback=t,n.next=null;var o=function(){qd(n)},s=function(){clearTimeout(n.next),n.next=setTimeout(o)};typeof window!="undefined"&&(window.addEventListener("mouseup",s),window.addEventListener("keyup",s),window.addEventListener("mousedown",s),window.addEventListener("keydown",s),window.addEventListener("change",s))}return n.patches=r,n.object=e,n.unobserve=function(){qd(n),clearTimeout(n.next),UD(i,n),typeof window!="undefined"&&(window.removeEventListener("mouseup",s),window.removeEventListener("keyup",s),window.removeEventListener("mousedown",s),window.removeEventListener("keydown",s),window.removeEventListener("change",s))},i.observers.set(t,new BD(t,n)),n}function qd(e,t){t===void 0&&(t=!1);var r=jd.get(e.object);Yd(r.value,e.object,e.patches,"",t),e.patches.length&&al(r.value,e.patches);var n=e.patches;return n.length>0&&(e.patches=[],e.callback&&e.callback(n)),n}function Yd(e,t,r,n,i){if(t!==e){typeof t.toJSON=="function"&&(t=t.toJSON());for(var a=tl(t),o=tl(e),s=!1,u=!1,l=o.length-1;l>=0;l--){var c=o[l],d=e[c];if(el(t,c)&&!(t[c]===void 0&&d!==void 0&&Array.isArray(t)===!1)){var f=t[c];typeof d=="object"&&d!=null&&typeof f=="object"&&f!=null&&Array.isArray(d)===Array.isArray(f)?Yd(d,f,r,n+"/"+Hn(c),i):d!==f&&(s=!0,i&&r.push({op:"test",path:n+"/"+Hn(c),value:Ft(d)}),r.push({op:"replace",path:n+"/"+Hn(c),value:Ft(f)}))}else Array.isArray(e)===Array.isArray(t)?(i&&r.push({op:"test",path:n+"/"+Hn(c),value:Ft(d)}),r.push({op:"remove",path:n+"/"+Hn(c)}),u=!0):(i&&r.push({op:"test",path:n,value:e}),r.push({op:"replace",path:n,value:t}),s=!0)}if(!(!u&&a.length==o.length))for(var l=0;l":""))+")"})),f;function f(){let p=[],g,y,b;if((!t||i(s,u,l[l.length-1]||null))&&(p=JD(r(s,l)),p[0]===Xd))return p;if(s.children&&p[0]!==$w)for(y=(n?s.children.length:-1)+a,b=l.concat(s);y>-1&&y!0){for(let i=t+1,a=e.length;i{try{await jw(e,r),await Promise.all(r.children.map(n=>qa(e,n)))}catch(n){throw e.setError(n),n}}))}catch(r){throw e.setError(r),r}return t}function GD(e){return(e.op==="add"||e.op==="replace")&&["/title","/titleRaw","/dateStr","/timeStr",/\d$/,/\/fileAccessor\/.+$/].some(t=>typeof t=="string"?e.path.endsWith(t):t.test(e.path))}async function Yw(e,t,r){let n={},i=r.reduce((a,o)=>{if(!GD(o))return a;let s=o.path.split("/").reduce((l,c)=>(/\d+/.test(c)&&l.push(Number(c)),l),[]),u=s.join(",");return n[u]||(n[u]=!0,a.push(s)),a},[]);try{await Promise.all(i.map(a=>{let o=mt(t,a);if(o.type===Je.Lane)return jw(e,o);if(o.type===Je.Item)return qa(e,o)}))}catch(a){throw e.setError(a),a}return t}m();m();m();m();m();m();function Nt(e,t,r,n){let i=e.length,a=0,o;if(t<0?t=-t>i?0:i+t:t=t>i?i:t,r=r>0?r:0,n.length<1e4)o=Array.from(n),o.unshift(t,r),[].splice.apply(e,o);else for(r&&[].splice.apply(e,[t,r]);a0?(Nt(e,e.length,0,t),e):t}var Jw={}.hasOwnProperty;function Gw(e){let t={},r=-1;for(;++ro))return;let K=t.events.length,z=K,U,Z;for(;z--;)if(t.events[z][0]==="exit"&&t.events[z][1].type==="chunkFlow"){if(U){Z=t.events[z][1].end;break}U=!0}for(x(n),D=K;DC;){let H=r[A];t.containerState=H[1],H[0].exit.call(t,e)}r.length=C}function T(){i.write([null]),a=void 0,i=void 0,t.containerState._closeFlow=void 0}}function tT(e,t,r){return Se(e,e.attempt(this.parser.constructs.document,t,r),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}m();m();m();m();function rf(e){if(e===null||Qe(e)||eE(e))return 1;if(tE(e))return 2}m();function Ri(e,t,r){let n=[],i=-1;for(;++i1&&e[r][1].end.offset-e[r][1].start.offset>1?2:1;let d=Object.assign({},e[n][1].end),f=Object.assign({},e[r][1].start);aE(d,-u),aE(f,u),o={type:u>1?"strongSequence":"emphasisSequence",start:d,end:Object.assign({},e[n][1].end)},s={type:u>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[r][1].start),end:f},a={type:u>1?"strongText":"emphasisText",start:Object.assign({},e[n][1].end),end:Object.assign({},e[r][1].start)},i={type:u>1?"strong":"emphasis",start:Object.assign({},o.start),end:Object.assign({},s.end)},e[n][1].end=Object.assign({},o.start),e[r][1].start=Object.assign({},s.end),l=[],e[n][1].end.offset-e[n][1].start.offset&&(l=Jt(l,[["enter",e[n][1],t],["exit",e[n][1],t]])),l=Jt(l,[["enter",i,t],["enter",o,t],["exit",o,t],["enter",a,t]]),l=Jt(l,Ri(t.parser.constructs.insideSpan.null,e.slice(n+1,r),t)),l=Jt(l,[["exit",a,t],["enter",s,t],["exit",s,t],["exit",i,t]]),e[r][1].end.offset-e[r][1].start.offset?(c=2,l=Jt(l,[["enter",e[r][1],t],["exit",e[r][1],t]])):c=0,Nt(e,n-1,r-n+3,l),r=n+l.length-c-2;break}}for(r=-1;++r",Gamma:"\u0393",Gammad:"\u03DC",Gbreve:"\u011E",Gcedil:"\u0122",Gcirc:"\u011C",Gcy:"\u0413",Gdot:"\u0120",Gfr:"\u{1D50A}",Gg:"\u22D9",Gopf:"\u{1D53E}",GreaterEqual:"\u2265",GreaterEqualLess:"\u22DB",GreaterFullEqual:"\u2267",GreaterGreater:"\u2AA2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2A7E",GreaterTilde:"\u2273",Gscr:"\u{1D4A2}",Gt:"\u226B",HARDcy:"\u042A",Hacek:"\u02C7",Hat:"^",Hcirc:"\u0124",Hfr:"\u210C",HilbertSpace:"\u210B",Hopf:"\u210D",HorizontalLine:"\u2500",Hscr:"\u210B",Hstrok:"\u0126",HumpDownHump:"\u224E",HumpEqual:"\u224F",IEcy:"\u0415",IJlig:"\u0132",IOcy:"\u0401",Iacute:"\xCD",Icirc:"\xCE",Icy:"\u0418",Idot:"\u0130",Ifr:"\u2111",Igrave:"\xCC",Im:"\u2111",Imacr:"\u012A",ImaginaryI:"\u2148",Implies:"\u21D2",Int:"\u222C",Integral:"\u222B",Intersection:"\u22C2",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",Iogon:"\u012E",Iopf:"\u{1D540}",Iota:"\u0399",Iscr:"\u2110",Itilde:"\u0128",Iukcy:"\u0406",Iuml:"\xCF",Jcirc:"\u0134",Jcy:"\u0419",Jfr:"\u{1D50D}",Jopf:"\u{1D541}",Jscr:"\u{1D4A5}",Jsercy:"\u0408",Jukcy:"\u0404",KHcy:"\u0425",KJcy:"\u040C",Kappa:"\u039A",Kcedil:"\u0136",Kcy:"\u041A",Kfr:"\u{1D50E}",Kopf:"\u{1D542}",Kscr:"\u{1D4A6}",LJcy:"\u0409",LT:"<",Lacute:"\u0139",Lambda:"\u039B",Lang:"\u27EA",Laplacetrf:"\u2112",Larr:"\u219E",Lcaron:"\u013D",Lcedil:"\u013B",Lcy:"\u041B",LeftAngleBracket:"\u27E8",LeftArrow:"\u2190",LeftArrowBar:"\u21E4",LeftArrowRightArrow:"\u21C6",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27E6",LeftDownTeeVector:"\u2961",LeftDownVector:"\u21C3",LeftDownVectorBar:"\u2959",LeftFloor:"\u230A",LeftRightArrow:"\u2194",LeftRightVector:"\u294E",LeftTee:"\u22A3",LeftTeeArrow:"\u21A4",LeftTeeVector:"\u295A",LeftTriangle:"\u22B2",LeftTriangleBar:"\u29CF",LeftTriangleEqual:"\u22B4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVector:"\u21BF",LeftUpVectorBar:"\u2958",LeftVector:"\u21BC",LeftVectorBar:"\u2952",Leftarrow:"\u21D0",Leftrightarrow:"\u21D4",LessEqualGreater:"\u22DA",LessFullEqual:"\u2266",LessGreater:"\u2276",LessLess:"\u2AA1",LessSlantEqual:"\u2A7D",LessTilde:"\u2272",Lfr:"\u{1D50F}",Ll:"\u22D8",Lleftarrow:"\u21DA",Lmidot:"\u013F",LongLeftArrow:"\u27F5",LongLeftRightArrow:"\u27F7",LongRightArrow:"\u27F6",Longleftarrow:"\u27F8",Longleftrightarrow:"\u27FA",Longrightarrow:"\u27F9",Lopf:"\u{1D543}",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",Lscr:"\u2112",Lsh:"\u21B0",Lstrok:"\u0141",Lt:"\u226A",Map:"\u2905",Mcy:"\u041C",MediumSpace:"\u205F",Mellintrf:"\u2133",Mfr:"\u{1D510}",MinusPlus:"\u2213",Mopf:"\u{1D544}",Mscr:"\u2133",Mu:"\u039C",NJcy:"\u040A",Nacute:"\u0143",Ncaron:"\u0147",Ncedil:"\u0145",Ncy:"\u041D",NegativeMediumSpace:"\u200B",NegativeThickSpace:"\u200B",NegativeThinSpace:"\u200B",NegativeVeryThinSpace:"\u200B",NestedGreaterGreater:"\u226B",NestedLessLess:"\u226A",NewLine:` +`,Nfr:"\u{1D511}",NoBreak:"\u2060",NonBreakingSpace:"\xA0",Nopf:"\u2115",Not:"\u2AEC",NotCongruent:"\u2262",NotCupCap:"\u226D",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226F",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226B\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2A7E\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224E\u0338",NotHumpEqual:"\u224F\u0338",NotLeftTriangle:"\u22EA",NotLeftTriangleBar:"\u29CF\u0338",NotLeftTriangleEqual:"\u22EC",NotLess:"\u226E",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226A\u0338",NotLessSlantEqual:"\u2A7D\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2AA2\u0338",NotNestedLessLess:"\u2AA1\u0338",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2AAF\u0338",NotPrecedesSlantEqual:"\u22E0",NotReverseElement:"\u220C",NotRightTriangle:"\u22EB",NotRightTriangleBar:"\u29D0\u0338",NotRightTriangleEqual:"\u22ED",NotSquareSubset:"\u228F\u0338",NotSquareSubsetEqual:"\u22E2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22E3",NotSubset:"\u2282\u20D2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2AB0\u0338",NotSucceedsSlantEqual:"\u22E1",NotSucceedsTilde:"\u227F\u0338",NotSuperset:"\u2283\u20D2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",Nscr:"\u{1D4A9}",Ntilde:"\xD1",Nu:"\u039D",OElig:"\u0152",Oacute:"\xD3",Ocirc:"\xD4",Ocy:"\u041E",Odblac:"\u0150",Ofr:"\u{1D512}",Ograve:"\xD2",Omacr:"\u014C",Omega:"\u03A9",Omicron:"\u039F",Oopf:"\u{1D546}",OpenCurlyDoubleQuote:"\u201C",OpenCurlyQuote:"\u2018",Or:"\u2A54",Oscr:"\u{1D4AA}",Oslash:"\xD8",Otilde:"\xD5",Otimes:"\u2A37",Ouml:"\xD6",OverBar:"\u203E",OverBrace:"\u23DE",OverBracket:"\u23B4",OverParenthesis:"\u23DC",PartialD:"\u2202",Pcy:"\u041F",Pfr:"\u{1D513}",Phi:"\u03A6",Pi:"\u03A0",PlusMinus:"\xB1",Poincareplane:"\u210C",Popf:"\u2119",Pr:"\u2ABB",Precedes:"\u227A",PrecedesEqual:"\u2AAF",PrecedesSlantEqual:"\u227C",PrecedesTilde:"\u227E",Prime:"\u2033",Product:"\u220F",Proportion:"\u2237",Proportional:"\u221D",Pscr:"\u{1D4AB}",Psi:"\u03A8",QUOT:'"',Qfr:"\u{1D514}",Qopf:"\u211A",Qscr:"\u{1D4AC}",RBarr:"\u2910",REG:"\xAE",Racute:"\u0154",Rang:"\u27EB",Rarr:"\u21A0",Rarrtl:"\u2916",Rcaron:"\u0158",Rcedil:"\u0156",Rcy:"\u0420",Re:"\u211C",ReverseElement:"\u220B",ReverseEquilibrium:"\u21CB",ReverseUpEquilibrium:"\u296F",Rfr:"\u211C",Rho:"\u03A1",RightAngleBracket:"\u27E9",RightArrow:"\u2192",RightArrowBar:"\u21E5",RightArrowLeftArrow:"\u21C4",RightCeiling:"\u2309",RightDoubleBracket:"\u27E7",RightDownTeeVector:"\u295D",RightDownVector:"\u21C2",RightDownVectorBar:"\u2955",RightFloor:"\u230B",RightTee:"\u22A2",RightTeeArrow:"\u21A6",RightTeeVector:"\u295B",RightTriangle:"\u22B3",RightTriangleBar:"\u29D0",RightTriangleEqual:"\u22B5",RightUpDownVector:"\u294F",RightUpTeeVector:"\u295C",RightUpVector:"\u21BE",RightUpVectorBar:"\u2954",RightVector:"\u21C0",RightVectorBar:"\u2953",Rightarrow:"\u21D2",Ropf:"\u211D",RoundImplies:"\u2970",Rrightarrow:"\u21DB",Rscr:"\u211B",Rsh:"\u21B1",RuleDelayed:"\u29F4",SHCHcy:"\u0429",SHcy:"\u0428",SOFTcy:"\u042C",Sacute:"\u015A",Sc:"\u2ABC",Scaron:"\u0160",Scedil:"\u015E",Scirc:"\u015C",Scy:"\u0421",Sfr:"\u{1D516}",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",Sigma:"\u03A3",SmallCircle:"\u2218",Sopf:"\u{1D54A}",Sqrt:"\u221A",Square:"\u25A1",SquareIntersection:"\u2293",SquareSubset:"\u228F",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",Sscr:"\u{1D4AE}",Star:"\u22C6",Sub:"\u22D0",Subset:"\u22D0",SubsetEqual:"\u2286",Succeeds:"\u227B",SucceedsEqual:"\u2AB0",SucceedsSlantEqual:"\u227D",SucceedsTilde:"\u227F",SuchThat:"\u220B",Sum:"\u2211",Sup:"\u22D1",Superset:"\u2283",SupersetEqual:"\u2287",Supset:"\u22D1",THORN:"\xDE",TRADE:"\u2122",TSHcy:"\u040B",TScy:"\u0426",Tab:" ",Tau:"\u03A4",Tcaron:"\u0164",Tcedil:"\u0162",Tcy:"\u0422",Tfr:"\u{1D517}",Therefore:"\u2234",Theta:"\u0398",ThickSpace:"\u205F\u200A",ThinSpace:"\u2009",Tilde:"\u223C",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",Topf:"\u{1D54B}",TripleDot:"\u20DB",Tscr:"\u{1D4AF}",Tstrok:"\u0166",Uacute:"\xDA",Uarr:"\u219F",Uarrocir:"\u2949",Ubrcy:"\u040E",Ubreve:"\u016C",Ucirc:"\xDB",Ucy:"\u0423",Udblac:"\u0170",Ufr:"\u{1D518}",Ugrave:"\xD9",Umacr:"\u016A",UnderBar:"_",UnderBrace:"\u23DF",UnderBracket:"\u23B5",UnderParenthesis:"\u23DD",Union:"\u22C3",UnionPlus:"\u228E",Uogon:"\u0172",Uopf:"\u{1D54C}",UpArrow:"\u2191",UpArrowBar:"\u2912",UpArrowDownArrow:"\u21C5",UpDownArrow:"\u2195",UpEquilibrium:"\u296E",UpTee:"\u22A5",UpTeeArrow:"\u21A5",Uparrow:"\u21D1",Updownarrow:"\u21D5",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",Upsi:"\u03D2",Upsilon:"\u03A5",Uring:"\u016E",Uscr:"\u{1D4B0}",Utilde:"\u0168",Uuml:"\xDC",VDash:"\u22AB",Vbar:"\u2AEB",Vcy:"\u0412",Vdash:"\u22A9",Vdashl:"\u2AE6",Vee:"\u22C1",Verbar:"\u2016",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200A",Vfr:"\u{1D519}",Vopf:"\u{1D54D}",Vscr:"\u{1D4B1}",Vvdash:"\u22AA",Wcirc:"\u0174",Wedge:"\u22C0",Wfr:"\u{1D51A}",Wopf:"\u{1D54E}",Wscr:"\u{1D4B2}",Xfr:"\u{1D51B}",Xi:"\u039E",Xopf:"\u{1D54F}",Xscr:"\u{1D4B3}",YAcy:"\u042F",YIcy:"\u0407",YUcy:"\u042E",Yacute:"\xDD",Ycirc:"\u0176",Ycy:"\u042B",Yfr:"\u{1D51C}",Yopf:"\u{1D550}",Yscr:"\u{1D4B4}",Yuml:"\u0178",ZHcy:"\u0416",Zacute:"\u0179",Zcaron:"\u017D",Zcy:"\u0417",Zdot:"\u017B",ZeroWidthSpace:"\u200B",Zeta:"\u0396",Zfr:"\u2128",Zopf:"\u2124",Zscr:"\u{1D4B5}",aacute:"\xE1",abreve:"\u0103",ac:"\u223E",acE:"\u223E\u0333",acd:"\u223F",acirc:"\xE2",acute:"\xB4",acy:"\u0430",aelig:"\xE6",af:"\u2061",afr:"\u{1D51E}",agrave:"\xE0",alefsym:"\u2135",aleph:"\u2135",alpha:"\u03B1",amacr:"\u0101",amalg:"\u2A3F",amp:"&",and:"\u2227",andand:"\u2A55",andd:"\u2A5C",andslope:"\u2A58",andv:"\u2A5A",ang:"\u2220",ange:"\u29A4",angle:"\u2220",angmsd:"\u2221",angmsdaa:"\u29A8",angmsdab:"\u29A9",angmsdac:"\u29AA",angmsdad:"\u29AB",angmsdae:"\u29AC",angmsdaf:"\u29AD",angmsdag:"\u29AE",angmsdah:"\u29AF",angrt:"\u221F",angrtvb:"\u22BE",angrtvbd:"\u299D",angsph:"\u2222",angst:"\xC5",angzarr:"\u237C",aogon:"\u0105",aopf:"\u{1D552}",ap:"\u2248",apE:"\u2A70",apacir:"\u2A6F",ape:"\u224A",apid:"\u224B",apos:"'",approx:"\u2248",approxeq:"\u224A",aring:"\xE5",ascr:"\u{1D4B6}",ast:"*",asymp:"\u2248",asympeq:"\u224D",atilde:"\xE3",auml:"\xE4",awconint:"\u2233",awint:"\u2A11",bNot:"\u2AED",backcong:"\u224C",backepsilon:"\u03F6",backprime:"\u2035",backsim:"\u223D",backsimeq:"\u22CD",barvee:"\u22BD",barwed:"\u2305",barwedge:"\u2305",bbrk:"\u23B5",bbrktbrk:"\u23B6",bcong:"\u224C",bcy:"\u0431",bdquo:"\u201E",becaus:"\u2235",because:"\u2235",bemptyv:"\u29B0",bepsi:"\u03F6",bernou:"\u212C",beta:"\u03B2",beth:"\u2136",between:"\u226C",bfr:"\u{1D51F}",bigcap:"\u22C2",bigcirc:"\u25EF",bigcup:"\u22C3",bigodot:"\u2A00",bigoplus:"\u2A01",bigotimes:"\u2A02",bigsqcup:"\u2A06",bigstar:"\u2605",bigtriangledown:"\u25BD",bigtriangleup:"\u25B3",biguplus:"\u2A04",bigvee:"\u22C1",bigwedge:"\u22C0",bkarow:"\u290D",blacklozenge:"\u29EB",blacksquare:"\u25AA",blacktriangle:"\u25B4",blacktriangledown:"\u25BE",blacktriangleleft:"\u25C2",blacktriangleright:"\u25B8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20E5",bnequiv:"\u2261\u20E5",bnot:"\u2310",bopf:"\u{1D553}",bot:"\u22A5",bottom:"\u22A5",bowtie:"\u22C8",boxDL:"\u2557",boxDR:"\u2554",boxDl:"\u2556",boxDr:"\u2553",boxH:"\u2550",boxHD:"\u2566",boxHU:"\u2569",boxHd:"\u2564",boxHu:"\u2567",boxUL:"\u255D",boxUR:"\u255A",boxUl:"\u255C",boxUr:"\u2559",boxV:"\u2551",boxVH:"\u256C",boxVL:"\u2563",boxVR:"\u2560",boxVh:"\u256B",boxVl:"\u2562",boxVr:"\u255F",boxbox:"\u29C9",boxdL:"\u2555",boxdR:"\u2552",boxdl:"\u2510",boxdr:"\u250C",boxh:"\u2500",boxhD:"\u2565",boxhU:"\u2568",boxhd:"\u252C",boxhu:"\u2534",boxminus:"\u229F",boxplus:"\u229E",boxtimes:"\u22A0",boxuL:"\u255B",boxuR:"\u2558",boxul:"\u2518",boxur:"\u2514",boxv:"\u2502",boxvH:"\u256A",boxvL:"\u2561",boxvR:"\u255E",boxvh:"\u253C",boxvl:"\u2524",boxvr:"\u251C",bprime:"\u2035",breve:"\u02D8",brvbar:"\xA6",bscr:"\u{1D4B7}",bsemi:"\u204F",bsim:"\u223D",bsime:"\u22CD",bsol:"\\",bsolb:"\u29C5",bsolhsub:"\u27C8",bull:"\u2022",bullet:"\u2022",bump:"\u224E",bumpE:"\u2AAE",bumpe:"\u224F",bumpeq:"\u224F",cacute:"\u0107",cap:"\u2229",capand:"\u2A44",capbrcup:"\u2A49",capcap:"\u2A4B",capcup:"\u2A47",capdot:"\u2A40",caps:"\u2229\uFE00",caret:"\u2041",caron:"\u02C7",ccaps:"\u2A4D",ccaron:"\u010D",ccedil:"\xE7",ccirc:"\u0109",ccups:"\u2A4C",ccupssm:"\u2A50",cdot:"\u010B",cedil:"\xB8",cemptyv:"\u29B2",cent:"\xA2",centerdot:"\xB7",cfr:"\u{1D520}",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",chi:"\u03C7",cir:"\u25CB",cirE:"\u29C3",circ:"\u02C6",circeq:"\u2257",circlearrowleft:"\u21BA",circlearrowright:"\u21BB",circledR:"\xAE",circledS:"\u24C8",circledast:"\u229B",circledcirc:"\u229A",circleddash:"\u229D",cire:"\u2257",cirfnint:"\u2A10",cirmid:"\u2AEF",cirscir:"\u29C2",clubs:"\u2663",clubsuit:"\u2663",colon:":",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2A6D",conint:"\u222E",copf:"\u{1D554}",coprod:"\u2210",copy:"\xA9",copysr:"\u2117",crarr:"\u21B5",cross:"\u2717",cscr:"\u{1D4B8}",csub:"\u2ACF",csube:"\u2AD1",csup:"\u2AD0",csupe:"\u2AD2",ctdot:"\u22EF",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22DE",cuesc:"\u22DF",cularr:"\u21B6",cularrp:"\u293D",cup:"\u222A",cupbrcap:"\u2A48",cupcap:"\u2A46",cupcup:"\u2A4A",cupdot:"\u228D",cupor:"\u2A45",cups:"\u222A\uFE00",curarr:"\u21B7",curarrm:"\u293C",curlyeqprec:"\u22DE",curlyeqsucc:"\u22DF",curlyvee:"\u22CE",curlywedge:"\u22CF",curren:"\xA4",curvearrowleft:"\u21B6",curvearrowright:"\u21B7",cuvee:"\u22CE",cuwed:"\u22CF",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232D",dArr:"\u21D3",dHar:"\u2965",dagger:"\u2020",daleth:"\u2138",darr:"\u2193",dash:"\u2010",dashv:"\u22A3",dbkarow:"\u290F",dblac:"\u02DD",dcaron:"\u010F",dcy:"\u0434",dd:"\u2146",ddagger:"\u2021",ddarr:"\u21CA",ddotseq:"\u2A77",deg:"\xB0",delta:"\u03B4",demptyv:"\u29B1",dfisht:"\u297F",dfr:"\u{1D521}",dharl:"\u21C3",dharr:"\u21C2",diam:"\u22C4",diamond:"\u22C4",diamondsuit:"\u2666",diams:"\u2666",die:"\xA8",digamma:"\u03DD",disin:"\u22F2",div:"\xF7",divide:"\xF7",divideontimes:"\u22C7",divonx:"\u22C7",djcy:"\u0452",dlcorn:"\u231E",dlcrop:"\u230D",dollar:"$",dopf:"\u{1D555}",dot:"\u02D9",doteq:"\u2250",doteqdot:"\u2251",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22A1",doublebarwedge:"\u2306",downarrow:"\u2193",downdownarrows:"\u21CA",downharpoonleft:"\u21C3",downharpoonright:"\u21C2",drbkarow:"\u2910",drcorn:"\u231F",drcrop:"\u230C",dscr:"\u{1D4B9}",dscy:"\u0455",dsol:"\u29F6",dstrok:"\u0111",dtdot:"\u22F1",dtri:"\u25BF",dtrif:"\u25BE",duarr:"\u21F5",duhar:"\u296F",dwangle:"\u29A6",dzcy:"\u045F",dzigrarr:"\u27FF",eDDot:"\u2A77",eDot:"\u2251",eacute:"\xE9",easter:"\u2A6E",ecaron:"\u011B",ecir:"\u2256",ecirc:"\xEA",ecolon:"\u2255",ecy:"\u044D",edot:"\u0117",ee:"\u2147",efDot:"\u2252",efr:"\u{1D522}",eg:"\u2A9A",egrave:"\xE8",egs:"\u2A96",egsdot:"\u2A98",el:"\u2A99",elinters:"\u23E7",ell:"\u2113",els:"\u2A95",elsdot:"\u2A97",emacr:"\u0113",empty:"\u2205",emptyset:"\u2205",emptyv:"\u2205",emsp13:"\u2004",emsp14:"\u2005",emsp:"\u2003",eng:"\u014B",ensp:"\u2002",eogon:"\u0119",eopf:"\u{1D556}",epar:"\u22D5",eparsl:"\u29E3",eplus:"\u2A71",epsi:"\u03B5",epsilon:"\u03B5",epsiv:"\u03F5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2A96",eqslantless:"\u2A95",equals:"=",equest:"\u225F",equiv:"\u2261",equivDD:"\u2A78",eqvparsl:"\u29E5",erDot:"\u2253",erarr:"\u2971",escr:"\u212F",esdot:"\u2250",esim:"\u2242",eta:"\u03B7",eth:"\xF0",euml:"\xEB",euro:"\u20AC",excl:"!",exist:"\u2203",expectation:"\u2130",exponentiale:"\u2147",fallingdotseq:"\u2252",fcy:"\u0444",female:"\u2640",ffilig:"\uFB03",fflig:"\uFB00",ffllig:"\uFB04",ffr:"\u{1D523}",filig:"\uFB01",fjlig:"fj",flat:"\u266D",fllig:"\uFB02",fltns:"\u25B1",fnof:"\u0192",fopf:"\u{1D557}",forall:"\u2200",fork:"\u22D4",forkv:"\u2AD9",fpartint:"\u2A0D",frac12:"\xBD",frac13:"\u2153",frac14:"\xBC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\xBE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044",frown:"\u2322",fscr:"\u{1D4BB}",gE:"\u2267",gEl:"\u2A8C",gacute:"\u01F5",gamma:"\u03B3",gammad:"\u03DD",gap:"\u2A86",gbreve:"\u011F",gcirc:"\u011D",gcy:"\u0433",gdot:"\u0121",ge:"\u2265",gel:"\u22DB",geq:"\u2265",geqq:"\u2267",geqslant:"\u2A7E",ges:"\u2A7E",gescc:"\u2AA9",gesdot:"\u2A80",gesdoto:"\u2A82",gesdotol:"\u2A84",gesl:"\u22DB\uFE00",gesles:"\u2A94",gfr:"\u{1D524}",gg:"\u226B",ggg:"\u22D9",gimel:"\u2137",gjcy:"\u0453",gl:"\u2277",glE:"\u2A92",gla:"\u2AA5",glj:"\u2AA4",gnE:"\u2269",gnap:"\u2A8A",gnapprox:"\u2A8A",gne:"\u2A88",gneq:"\u2A88",gneqq:"\u2269",gnsim:"\u22E7",gopf:"\u{1D558}",grave:"`",gscr:"\u210A",gsim:"\u2273",gsime:"\u2A8E",gsiml:"\u2A90",gt:">",gtcc:"\u2AA7",gtcir:"\u2A7A",gtdot:"\u22D7",gtlPar:"\u2995",gtquest:"\u2A7C",gtrapprox:"\u2A86",gtrarr:"\u2978",gtrdot:"\u22D7",gtreqless:"\u22DB",gtreqqless:"\u2A8C",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\uFE00",gvnE:"\u2269\uFE00",hArr:"\u21D4",hairsp:"\u200A",half:"\xBD",hamilt:"\u210B",hardcy:"\u044A",harr:"\u2194",harrcir:"\u2948",harrw:"\u21AD",hbar:"\u210F",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22B9",hfr:"\u{1D525}",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21FF",homtht:"\u223B",hookleftarrow:"\u21A9",hookrightarrow:"\u21AA",hopf:"\u{1D559}",horbar:"\u2015",hscr:"\u{1D4BD}",hslash:"\u210F",hstrok:"\u0127",hybull:"\u2043",hyphen:"\u2010",iacute:"\xED",ic:"\u2063",icirc:"\xEE",icy:"\u0438",iecy:"\u0435",iexcl:"\xA1",iff:"\u21D4",ifr:"\u{1D526}",igrave:"\xEC",ii:"\u2148",iiiint:"\u2A0C",iiint:"\u222D",iinfin:"\u29DC",iiota:"\u2129",ijlig:"\u0133",imacr:"\u012B",image:"\u2111",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",imof:"\u22B7",imped:"\u01B5",in:"\u2208",incare:"\u2105",infin:"\u221E",infintie:"\u29DD",inodot:"\u0131",int:"\u222B",intcal:"\u22BA",integers:"\u2124",intercal:"\u22BA",intlarhk:"\u2A17",intprod:"\u2A3C",iocy:"\u0451",iogon:"\u012F",iopf:"\u{1D55A}",iota:"\u03B9",iprod:"\u2A3C",iquest:"\xBF",iscr:"\u{1D4BE}",isin:"\u2208",isinE:"\u22F9",isindot:"\u22F5",isins:"\u22F4",isinsv:"\u22F3",isinv:"\u2208",it:"\u2062",itilde:"\u0129",iukcy:"\u0456",iuml:"\xEF",jcirc:"\u0135",jcy:"\u0439",jfr:"\u{1D527}",jmath:"\u0237",jopf:"\u{1D55B}",jscr:"\u{1D4BF}",jsercy:"\u0458",jukcy:"\u0454",kappa:"\u03BA",kappav:"\u03F0",kcedil:"\u0137",kcy:"\u043A",kfr:"\u{1D528}",kgreen:"\u0138",khcy:"\u0445",kjcy:"\u045C",kopf:"\u{1D55C}",kscr:"\u{1D4C0}",lAarr:"\u21DA",lArr:"\u21D0",lAtail:"\u291B",lBarr:"\u290E",lE:"\u2266",lEg:"\u2A8B",lHar:"\u2962",lacute:"\u013A",laemptyv:"\u29B4",lagran:"\u2112",lambda:"\u03BB",lang:"\u27E8",langd:"\u2991",langle:"\u27E8",lap:"\u2A85",laquo:"\xAB",larr:"\u2190",larrb:"\u21E4",larrbfs:"\u291F",larrfs:"\u291D",larrhk:"\u21A9",larrlp:"\u21AB",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21A2",lat:"\u2AAB",latail:"\u2919",late:"\u2AAD",lates:"\u2AAD\uFE00",lbarr:"\u290C",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298B",lbrksld:"\u298F",lbrkslu:"\u298D",lcaron:"\u013E",lcedil:"\u013C",lceil:"\u2308",lcub:"{",lcy:"\u043B",ldca:"\u2936",ldquo:"\u201C",ldquor:"\u201E",ldrdhar:"\u2967",ldrushar:"\u294B",ldsh:"\u21B2",le:"\u2264",leftarrow:"\u2190",leftarrowtail:"\u21A2",leftharpoondown:"\u21BD",leftharpoonup:"\u21BC",leftleftarrows:"\u21C7",leftrightarrow:"\u2194",leftrightarrows:"\u21C6",leftrightharpoons:"\u21CB",leftrightsquigarrow:"\u21AD",leftthreetimes:"\u22CB",leg:"\u22DA",leq:"\u2264",leqq:"\u2266",leqslant:"\u2A7D",les:"\u2A7D",lescc:"\u2AA8",lesdot:"\u2A7F",lesdoto:"\u2A81",lesdotor:"\u2A83",lesg:"\u22DA\uFE00",lesges:"\u2A93",lessapprox:"\u2A85",lessdot:"\u22D6",lesseqgtr:"\u22DA",lesseqqgtr:"\u2A8B",lessgtr:"\u2276",lesssim:"\u2272",lfisht:"\u297C",lfloor:"\u230A",lfr:"\u{1D529}",lg:"\u2276",lgE:"\u2A91",lhard:"\u21BD",lharu:"\u21BC",lharul:"\u296A",lhblk:"\u2584",ljcy:"\u0459",ll:"\u226A",llarr:"\u21C7",llcorner:"\u231E",llhard:"\u296B",lltri:"\u25FA",lmidot:"\u0140",lmoust:"\u23B0",lmoustache:"\u23B0",lnE:"\u2268",lnap:"\u2A89",lnapprox:"\u2A89",lne:"\u2A87",lneq:"\u2A87",lneqq:"\u2268",lnsim:"\u22E6",loang:"\u27EC",loarr:"\u21FD",lobrk:"\u27E6",longleftarrow:"\u27F5",longleftrightarrow:"\u27F7",longmapsto:"\u27FC",longrightarrow:"\u27F6",looparrowleft:"\u21AB",looparrowright:"\u21AC",lopar:"\u2985",lopf:"\u{1D55D}",loplus:"\u2A2D",lotimes:"\u2A34",lowast:"\u2217",lowbar:"_",loz:"\u25CA",lozenge:"\u25CA",lozf:"\u29EB",lpar:"(",lparlt:"\u2993",lrarr:"\u21C6",lrcorner:"\u231F",lrhar:"\u21CB",lrhard:"\u296D",lrm:"\u200E",lrtri:"\u22BF",lsaquo:"\u2039",lscr:"\u{1D4C1}",lsh:"\u21B0",lsim:"\u2272",lsime:"\u2A8D",lsimg:"\u2A8F",lsqb:"[",lsquo:"\u2018",lsquor:"\u201A",lstrok:"\u0142",lt:"<",ltcc:"\u2AA6",ltcir:"\u2A79",ltdot:"\u22D6",lthree:"\u22CB",ltimes:"\u22C9",ltlarr:"\u2976",ltquest:"\u2A7B",ltrPar:"\u2996",ltri:"\u25C3",ltrie:"\u22B4",ltrif:"\u25C2",lurdshar:"\u294A",luruhar:"\u2966",lvertneqq:"\u2268\uFE00",lvnE:"\u2268\uFE00",mDDot:"\u223A",macr:"\xAF",male:"\u2642",malt:"\u2720",maltese:"\u2720",map:"\u21A6",mapsto:"\u21A6",mapstodown:"\u21A7",mapstoleft:"\u21A4",mapstoup:"\u21A5",marker:"\u25AE",mcomma:"\u2A29",mcy:"\u043C",mdash:"\u2014",measuredangle:"\u2221",mfr:"\u{1D52A}",mho:"\u2127",micro:"\xB5",mid:"\u2223",midast:"*",midcir:"\u2AF0",middot:"\xB7",minus:"\u2212",minusb:"\u229F",minusd:"\u2238",minusdu:"\u2A2A",mlcp:"\u2ADB",mldr:"\u2026",mnplus:"\u2213",models:"\u22A7",mopf:"\u{1D55E}",mp:"\u2213",mscr:"\u{1D4C2}",mstpos:"\u223E",mu:"\u03BC",multimap:"\u22B8",mumap:"\u22B8",nGg:"\u22D9\u0338",nGt:"\u226B\u20D2",nGtv:"\u226B\u0338",nLeftarrow:"\u21CD",nLeftrightarrow:"\u21CE",nLl:"\u22D8\u0338",nLt:"\u226A\u20D2",nLtv:"\u226A\u0338",nRightarrow:"\u21CF",nVDash:"\u22AF",nVdash:"\u22AE",nabla:"\u2207",nacute:"\u0144",nang:"\u2220\u20D2",nap:"\u2249",napE:"\u2A70\u0338",napid:"\u224B\u0338",napos:"\u0149",napprox:"\u2249",natur:"\u266E",natural:"\u266E",naturals:"\u2115",nbsp:"\xA0",nbump:"\u224E\u0338",nbumpe:"\u224F\u0338",ncap:"\u2A43",ncaron:"\u0148",ncedil:"\u0146",ncong:"\u2247",ncongdot:"\u2A6D\u0338",ncup:"\u2A42",ncy:"\u043D",ndash:"\u2013",ne:"\u2260",neArr:"\u21D7",nearhk:"\u2924",nearr:"\u2197",nearrow:"\u2197",nedot:"\u2250\u0338",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",nexist:"\u2204",nexists:"\u2204",nfr:"\u{1D52B}",ngE:"\u2267\u0338",nge:"\u2271",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2A7E\u0338",nges:"\u2A7E\u0338",ngsim:"\u2275",ngt:"\u226F",ngtr:"\u226F",nhArr:"\u21CE",nharr:"\u21AE",nhpar:"\u2AF2",ni:"\u220B",nis:"\u22FC",nisd:"\u22FA",niv:"\u220B",njcy:"\u045A",nlArr:"\u21CD",nlE:"\u2266\u0338",nlarr:"\u219A",nldr:"\u2025",nle:"\u2270",nleftarrow:"\u219A",nleftrightarrow:"\u21AE",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2A7D\u0338",nles:"\u2A7D\u0338",nless:"\u226E",nlsim:"\u2274",nlt:"\u226E",nltri:"\u22EA",nltrie:"\u22EC",nmid:"\u2224",nopf:"\u{1D55F}",not:"\xAC",notin:"\u2209",notinE:"\u22F9\u0338",notindot:"\u22F5\u0338",notinva:"\u2209",notinvb:"\u22F7",notinvc:"\u22F6",notni:"\u220C",notniva:"\u220C",notnivb:"\u22FE",notnivc:"\u22FD",npar:"\u2226",nparallel:"\u2226",nparsl:"\u2AFD\u20E5",npart:"\u2202\u0338",npolint:"\u2A14",npr:"\u2280",nprcue:"\u22E0",npre:"\u2AAF\u0338",nprec:"\u2280",npreceq:"\u2AAF\u0338",nrArr:"\u21CF",nrarr:"\u219B",nrarrc:"\u2933\u0338",nrarrw:"\u219D\u0338",nrightarrow:"\u219B",nrtri:"\u22EB",nrtrie:"\u22ED",nsc:"\u2281",nsccue:"\u22E1",nsce:"\u2AB0\u0338",nscr:"\u{1D4C3}",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22E2",nsqsupe:"\u22E3",nsub:"\u2284",nsubE:"\u2AC5\u0338",nsube:"\u2288",nsubset:"\u2282\u20D2",nsubseteq:"\u2288",nsubseteqq:"\u2AC5\u0338",nsucc:"\u2281",nsucceq:"\u2AB0\u0338",nsup:"\u2285",nsupE:"\u2AC6\u0338",nsupe:"\u2289",nsupset:"\u2283\u20D2",nsupseteq:"\u2289",nsupseteqq:"\u2AC6\u0338",ntgl:"\u2279",ntilde:"\xF1",ntlg:"\u2278",ntriangleleft:"\u22EA",ntrianglelefteq:"\u22EC",ntriangleright:"\u22EB",ntrianglerighteq:"\u22ED",nu:"\u03BD",num:"#",numero:"\u2116",numsp:"\u2007",nvDash:"\u22AD",nvHarr:"\u2904",nvap:"\u224D\u20D2",nvdash:"\u22AC",nvge:"\u2265\u20D2",nvgt:">\u20D2",nvinfin:"\u29DE",nvlArr:"\u2902",nvle:"\u2264\u20D2",nvlt:"<\u20D2",nvltrie:"\u22B4\u20D2",nvrArr:"\u2903",nvrtrie:"\u22B5\u20D2",nvsim:"\u223C\u20D2",nwArr:"\u21D6",nwarhk:"\u2923",nwarr:"\u2196",nwarrow:"\u2196",nwnear:"\u2927",oS:"\u24C8",oacute:"\xF3",oast:"\u229B",ocir:"\u229A",ocirc:"\xF4",ocy:"\u043E",odash:"\u229D",odblac:"\u0151",odiv:"\u2A38",odot:"\u2299",odsold:"\u29BC",oelig:"\u0153",ofcir:"\u29BF",ofr:"\u{1D52C}",ogon:"\u02DB",ograve:"\xF2",ogt:"\u29C1",ohbar:"\u29B5",ohm:"\u03A9",oint:"\u222E",olarr:"\u21BA",olcir:"\u29BE",olcross:"\u29BB",oline:"\u203E",olt:"\u29C0",omacr:"\u014D",omega:"\u03C9",omicron:"\u03BF",omid:"\u29B6",ominus:"\u2296",oopf:"\u{1D560}",opar:"\u29B7",operp:"\u29B9",oplus:"\u2295",or:"\u2228",orarr:"\u21BB",ord:"\u2A5D",order:"\u2134",orderof:"\u2134",ordf:"\xAA",ordm:"\xBA",origof:"\u22B6",oror:"\u2A56",orslope:"\u2A57",orv:"\u2A5B",oscr:"\u2134",oslash:"\xF8",osol:"\u2298",otilde:"\xF5",otimes:"\u2297",otimesas:"\u2A36",ouml:"\xF6",ovbar:"\u233D",par:"\u2225",para:"\xB6",parallel:"\u2225",parsim:"\u2AF3",parsl:"\u2AFD",part:"\u2202",pcy:"\u043F",percnt:"%",period:".",permil:"\u2030",perp:"\u22A5",pertenk:"\u2031",pfr:"\u{1D52D}",phi:"\u03C6",phiv:"\u03D5",phmmat:"\u2133",phone:"\u260E",pi:"\u03C0",pitchfork:"\u22D4",piv:"\u03D6",planck:"\u210F",planckh:"\u210E",plankv:"\u210F",plus:"+",plusacir:"\u2A23",plusb:"\u229E",pluscir:"\u2A22",plusdo:"\u2214",plusdu:"\u2A25",pluse:"\u2A72",plusmn:"\xB1",plussim:"\u2A26",plustwo:"\u2A27",pm:"\xB1",pointint:"\u2A15",popf:"\u{1D561}",pound:"\xA3",pr:"\u227A",prE:"\u2AB3",prap:"\u2AB7",prcue:"\u227C",pre:"\u2AAF",prec:"\u227A",precapprox:"\u2AB7",preccurlyeq:"\u227C",preceq:"\u2AAF",precnapprox:"\u2AB9",precneqq:"\u2AB5",precnsim:"\u22E8",precsim:"\u227E",prime:"\u2032",primes:"\u2119",prnE:"\u2AB5",prnap:"\u2AB9",prnsim:"\u22E8",prod:"\u220F",profalar:"\u232E",profline:"\u2312",profsurf:"\u2313",prop:"\u221D",propto:"\u221D",prsim:"\u227E",prurel:"\u22B0",pscr:"\u{1D4C5}",psi:"\u03C8",puncsp:"\u2008",qfr:"\u{1D52E}",qint:"\u2A0C",qopf:"\u{1D562}",qprime:"\u2057",qscr:"\u{1D4C6}",quaternions:"\u210D",quatint:"\u2A16",quest:"?",questeq:"\u225F",quot:'"',rAarr:"\u21DB",rArr:"\u21D2",rAtail:"\u291C",rBarr:"\u290F",rHar:"\u2964",race:"\u223D\u0331",racute:"\u0155",radic:"\u221A",raemptyv:"\u29B3",rang:"\u27E9",rangd:"\u2992",range:"\u29A5",rangle:"\u27E9",raquo:"\xBB",rarr:"\u2192",rarrap:"\u2975",rarrb:"\u21E5",rarrbfs:"\u2920",rarrc:"\u2933",rarrfs:"\u291E",rarrhk:"\u21AA",rarrlp:"\u21AC",rarrpl:"\u2945",rarrsim:"\u2974",rarrtl:"\u21A3",rarrw:"\u219D",ratail:"\u291A",ratio:"\u2236",rationals:"\u211A",rbarr:"\u290D",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298C",rbrksld:"\u298E",rbrkslu:"\u2990",rcaron:"\u0159",rcedil:"\u0157",rceil:"\u2309",rcub:"}",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201D",rdquor:"\u201D",rdsh:"\u21B3",real:"\u211C",realine:"\u211B",realpart:"\u211C",reals:"\u211D",rect:"\u25AD",reg:"\xAE",rfisht:"\u297D",rfloor:"\u230B",rfr:"\u{1D52F}",rhard:"\u21C1",rharu:"\u21C0",rharul:"\u296C",rho:"\u03C1",rhov:"\u03F1",rightarrow:"\u2192",rightarrowtail:"\u21A3",rightharpoondown:"\u21C1",rightharpoonup:"\u21C0",rightleftarrows:"\u21C4",rightleftharpoons:"\u21CC",rightrightarrows:"\u21C9",rightsquigarrow:"\u219D",rightthreetimes:"\u22CC",ring:"\u02DA",risingdotseq:"\u2253",rlarr:"\u21C4",rlhar:"\u21CC",rlm:"\u200F",rmoust:"\u23B1",rmoustache:"\u23B1",rnmid:"\u2AEE",roang:"\u27ED",roarr:"\u21FE",robrk:"\u27E7",ropar:"\u2986",ropf:"\u{1D563}",roplus:"\u2A2E",rotimes:"\u2A35",rpar:")",rpargt:"\u2994",rppolint:"\u2A12",rrarr:"\u21C9",rsaquo:"\u203A",rscr:"\u{1D4C7}",rsh:"\u21B1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22CC",rtimes:"\u22CA",rtri:"\u25B9",rtrie:"\u22B5",rtrif:"\u25B8",rtriltri:"\u29CE",ruluhar:"\u2968",rx:"\u211E",sacute:"\u015B",sbquo:"\u201A",sc:"\u227B",scE:"\u2AB4",scap:"\u2AB8",scaron:"\u0161",sccue:"\u227D",sce:"\u2AB0",scedil:"\u015F",scirc:"\u015D",scnE:"\u2AB6",scnap:"\u2ABA",scnsim:"\u22E9",scpolint:"\u2A13",scsim:"\u227F",scy:"\u0441",sdot:"\u22C5",sdotb:"\u22A1",sdote:"\u2A66",seArr:"\u21D8",searhk:"\u2925",searr:"\u2198",searrow:"\u2198",sect:"\xA7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",sfr:"\u{1D530}",sfrown:"\u2322",sharp:"\u266F",shchcy:"\u0449",shcy:"\u0448",shortmid:"\u2223",shortparallel:"\u2225",shy:"\xAD",sigma:"\u03C3",sigmaf:"\u03C2",sigmav:"\u03C2",sim:"\u223C",simdot:"\u2A6A",sime:"\u2243",simeq:"\u2243",simg:"\u2A9E",simgE:"\u2AA0",siml:"\u2A9D",simlE:"\u2A9F",simne:"\u2246",simplus:"\u2A24",simrarr:"\u2972",slarr:"\u2190",smallsetminus:"\u2216",smashp:"\u2A33",smeparsl:"\u29E4",smid:"\u2223",smile:"\u2323",smt:"\u2AAA",smte:"\u2AAC",smtes:"\u2AAC\uFE00",softcy:"\u044C",sol:"/",solb:"\u29C4",solbar:"\u233F",sopf:"\u{1D564}",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\uFE00",sqcup:"\u2294",sqcups:"\u2294\uFE00",sqsub:"\u228F",sqsube:"\u2291",sqsubset:"\u228F",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",squ:"\u25A1",square:"\u25A1",squarf:"\u25AA",squf:"\u25AA",srarr:"\u2192",sscr:"\u{1D4C8}",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22C6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03F5",straightphi:"\u03D5",strns:"\xAF",sub:"\u2282",subE:"\u2AC5",subdot:"\u2ABD",sube:"\u2286",subedot:"\u2AC3",submult:"\u2AC1",subnE:"\u2ACB",subne:"\u228A",subplus:"\u2ABF",subrarr:"\u2979",subset:"\u2282",subseteq:"\u2286",subseteqq:"\u2AC5",subsetneq:"\u228A",subsetneqq:"\u2ACB",subsim:"\u2AC7",subsub:"\u2AD5",subsup:"\u2AD3",succ:"\u227B",succapprox:"\u2AB8",succcurlyeq:"\u227D",succeq:"\u2AB0",succnapprox:"\u2ABA",succneqq:"\u2AB6",succnsim:"\u22E9",succsim:"\u227F",sum:"\u2211",sung:"\u266A",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",sup:"\u2283",supE:"\u2AC6",supdot:"\u2ABE",supdsub:"\u2AD8",supe:"\u2287",supedot:"\u2AC4",suphsol:"\u27C9",suphsub:"\u2AD7",suplarr:"\u297B",supmult:"\u2AC2",supnE:"\u2ACC",supne:"\u228B",supplus:"\u2AC0",supset:"\u2283",supseteq:"\u2287",supseteqq:"\u2AC6",supsetneq:"\u228B",supsetneqq:"\u2ACC",supsim:"\u2AC8",supsub:"\u2AD4",supsup:"\u2AD6",swArr:"\u21D9",swarhk:"\u2926",swarr:"\u2199",swarrow:"\u2199",swnwar:"\u292A",szlig:"\xDF",target:"\u2316",tau:"\u03C4",tbrk:"\u23B4",tcaron:"\u0165",tcedil:"\u0163",tcy:"\u0442",tdot:"\u20DB",telrec:"\u2315",tfr:"\u{1D531}",there4:"\u2234",therefore:"\u2234",theta:"\u03B8",thetasym:"\u03D1",thetav:"\u03D1",thickapprox:"\u2248",thicksim:"\u223C",thinsp:"\u2009",thkap:"\u2248",thksim:"\u223C",thorn:"\xFE",tilde:"\u02DC",times:"\xD7",timesb:"\u22A0",timesbar:"\u2A31",timesd:"\u2A30",tint:"\u222D",toea:"\u2928",top:"\u22A4",topbot:"\u2336",topcir:"\u2AF1",topf:"\u{1D565}",topfork:"\u2ADA",tosa:"\u2929",tprime:"\u2034",trade:"\u2122",triangle:"\u25B5",triangledown:"\u25BF",triangleleft:"\u25C3",trianglelefteq:"\u22B4",triangleq:"\u225C",triangleright:"\u25B9",trianglerighteq:"\u22B5",tridot:"\u25EC",trie:"\u225C",triminus:"\u2A3A",triplus:"\u2A39",trisb:"\u29CD",tritime:"\u2A3B",trpezium:"\u23E2",tscr:"\u{1D4C9}",tscy:"\u0446",tshcy:"\u045B",tstrok:"\u0167",twixt:"\u226C",twoheadleftarrow:"\u219E",twoheadrightarrow:"\u21A0",uArr:"\u21D1",uHar:"\u2963",uacute:"\xFA",uarr:"\u2191",ubrcy:"\u045E",ubreve:"\u016D",ucirc:"\xFB",ucy:"\u0443",udarr:"\u21C5",udblac:"\u0171",udhar:"\u296E",ufisht:"\u297E",ufr:"\u{1D532}",ugrave:"\xF9",uharl:"\u21BF",uharr:"\u21BE",uhblk:"\u2580",ulcorn:"\u231C",ulcorner:"\u231C",ulcrop:"\u230F",ultri:"\u25F8",umacr:"\u016B",uml:"\xA8",uogon:"\u0173",uopf:"\u{1D566}",uparrow:"\u2191",updownarrow:"\u2195",upharpoonleft:"\u21BF",upharpoonright:"\u21BE",uplus:"\u228E",upsi:"\u03C5",upsih:"\u03D2",upsilon:"\u03C5",upuparrows:"\u21C8",urcorn:"\u231D",urcorner:"\u231D",urcrop:"\u230E",uring:"\u016F",urtri:"\u25F9",uscr:"\u{1D4CA}",utdot:"\u22F0",utilde:"\u0169",utri:"\u25B5",utrif:"\u25B4",uuarr:"\u21C8",uuml:"\xFC",uwangle:"\u29A7",vArr:"\u21D5",vBar:"\u2AE8",vBarv:"\u2AE9",vDash:"\u22A8",vangrt:"\u299C",varepsilon:"\u03F5",varkappa:"\u03F0",varnothing:"\u2205",varphi:"\u03D5",varpi:"\u03D6",varpropto:"\u221D",varr:"\u2195",varrho:"\u03F1",varsigma:"\u03C2",varsubsetneq:"\u228A\uFE00",varsubsetneqq:"\u2ACB\uFE00",varsupsetneq:"\u228B\uFE00",varsupsetneqq:"\u2ACC\uFE00",vartheta:"\u03D1",vartriangleleft:"\u22B2",vartriangleright:"\u22B3",vcy:"\u0432",vdash:"\u22A2",vee:"\u2228",veebar:"\u22BB",veeeq:"\u225A",vellip:"\u22EE",verbar:"|",vert:"|",vfr:"\u{1D533}",vltri:"\u22B2",vnsub:"\u2282\u20D2",vnsup:"\u2283\u20D2",vopf:"\u{1D567}",vprop:"\u221D",vrtri:"\u22B3",vscr:"\u{1D4CB}",vsubnE:"\u2ACB\uFE00",vsubne:"\u228A\uFE00",vsupnE:"\u2ACC\uFE00",vsupne:"\u228B\uFE00",vzigzag:"\u299A",wcirc:"\u0175",wedbar:"\u2A5F",wedge:"\u2227",wedgeq:"\u2259",weierp:"\u2118",wfr:"\u{1D534}",wopf:"\u{1D568}",wp:"\u2118",wr:"\u2240",wreath:"\u2240",wscr:"\u{1D4CC}",xcap:"\u22C2",xcirc:"\u25EF",xcup:"\u22C3",xdtri:"\u25BD",xfr:"\u{1D535}",xhArr:"\u27FA",xharr:"\u27F7",xi:"\u03BE",xlArr:"\u27F8",xlarr:"\u27F5",xmap:"\u27FC",xnis:"\u22FB",xodot:"\u2A00",xopf:"\u{1D569}",xoplus:"\u2A01",xotime:"\u2A02",xrArr:"\u27F9",xrarr:"\u27F6",xscr:"\u{1D4CD}",xsqcup:"\u2A06",xuplus:"\u2A04",xutri:"\u25B3",xvee:"\u22C1",xwedge:"\u22C0",yacute:"\xFD",yacy:"\u044F",ycirc:"\u0177",ycy:"\u044B",yen:"\xA5",yfr:"\u{1D536}",yicy:"\u0457",yopf:"\u{1D56A}",yscr:"\u{1D4CE}",yucy:"\u044E",yuml:"\xFF",zacute:"\u017A",zcaron:"\u017E",zcy:"\u0437",zdot:"\u017C",zeetrf:"\u2128",zeta:"\u03B6",zfr:"\u{1D537}",zhcy:"\u0436",zigrarr:"\u21DD",zopf:"\u{1D56B}",zscr:"\u{1D4CF}",zwj:"\u200D",zwnj:"\u200C"};var uT={}.hasOwnProperty;function Hi(e){return uT.call(of,e)?of[e]:!1}var dl={name:"characterReference",tokenize:dT};function dT(e,t,r){let n=this,i=0,a,o;return s;function s(d){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(d),e.exit("characterReferenceMarker"),u}function u(d){return d===35?(e.enter("characterReferenceMarkerNumeric"),e.consume(d),e.exit("characterReferenceMarkerNumeric"),l):(e.enter("characterReferenceValue"),a=31,o=Gt,c(d))}function l(d){return d===88||d===120?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(d),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),a=6,o=Xw,c):(e.enter("characterReferenceValue"),a=7,o=Ya,c(d))}function c(d){let f;return d===59&&i?(f=e.exit("characterReferenceValue"),o===Gt&&!Hi(n.sliceSerialize(f))?r(d):(e.enter("characterReferenceMarker"),e.consume(d),e.exit("characterReferenceMarker"),e.exit("characterReference"),t)):o(d)&&i++=4?o(l):r(l)}function o(l){return l===null?u(l):ce(l)?e.attempt(pT,o,u)(l):(e.enter("codeFlowValue"),s(l))}function s(l){return l===null||ce(l)?(e.exit("codeFlowValue"),o(l)):(e.consume(l),s)}function u(l){return e.exit("codeIndented"),t(l)}}function mT(e,t,r){let n=this;return i;function i(o){return n.parser.lazy[n.now().line]?r(o):ce(o)?(e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),i):Se(e,a,"linePrefix",4+1)(o)}function a(o){let s=n.events[n.events.length-1];return s&&s[1].type==="linePrefix"&&s[2].sliceSerialize(s[1],!0).length>=4?t(o):ce(o)?i(o):r(o)}}m();var sf={name:"codeText",tokenize:yT,resolve:gT,previous:vT};function gT(e){let t=e.length-4,r=3,n,i;if((e[r][1].type==="lineEnding"||e[r][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=r;++n=4?t(o):e.interrupt(n.parser.constructs.flow,r,t)(o)}}m();m();function hl(e,t,r,n,i,a,o,s,u){let l=u||Number.POSITIVE_INFINITY,c=0;return d;function d(x){return x===60?(e.enter(n),e.enter(i),e.enter(a),e.consume(x),e.exit(a),f):x===null||x===41||Ja(x)?r(x):(e.enter(n),e.enter(o),e.enter(s),e.enter("chunkString",{contentType:"string"}),y(x))}function f(x){return x===62?(e.enter(a),e.consume(x),e.exit(a),e.exit(i),e.exit(n),t):(e.enter(s),e.enter("chunkString",{contentType:"string"}),p(x))}function p(x){return x===62?(e.exit("chunkString"),e.exit(s),f(x)):x===null||x===60||ce(x)?r(x):(e.consume(x),x===92?g:p)}function g(x){return x===60||x===62||x===92?(e.consume(x),p):p(x)}function y(x){return x===40?++c>l?r(x):(e.consume(x),y):x===41?c--?(e.consume(x),y):(e.exit("chunkString"),e.exit(s),e.exit(o),e.exit(n),t(x)):x===null||Qe(x)?c?r(x):(e.exit("chunkString"),e.exit(s),e.exit(o),e.exit(n),t(x)):Ja(x)?r(x):(e.consume(x),x===92?b:y)}function b(x){return x===40||x===41||x===92?(e.consume(x),y):y(x)}}m();function ml(e,t,r,n,i,a){let o=this,s=0,u;return l;function l(p){return e.enter(n),e.enter(i),e.consume(p),e.exit(i),e.enter(a),c}function c(p){return p===null||p===91||p===93&&!u||p===94&&!s&&"_hiddenFootnoteSupport"in o.parser.constructs||s>999?r(p):p===93?(e.exit(a),e.enter(i),e.consume(p),e.exit(i),e.exit(n),t):ce(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),c):(e.enter("chunkString",{contentType:"string"}),d(p))}function d(p){return p===null||p===91||p===93||ce(p)||s++>999?(e.exit("chunkString"),c(p)):(e.consume(p),u=u||!Ke(p),p===92?f:d)}function f(p){return p===91||p===92||p===93?(e.consume(p),s++,d):d(p)}}m();function gl(e,t,r,n,i,a){let o;return s;function s(f){return e.enter(n),e.enter(i),e.consume(f),e.exit(i),o=f===40?41:f,u}function u(f){return f===o?(e.enter(i),e.consume(f),e.exit(i),e.exit(n),t):(e.enter(a),l(f))}function l(f){return f===o?(e.exit(a),u(o)):f===null?r(f):ce(f)?(e.enter("lineEnding"),e.consume(f),e.exit("lineEnding"),Se(e,l,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),c(f))}function c(f){return f===o||f===null||ce(f)?(e.exit("chunkString"),l(f)):(e.consume(f),f===92?d:c)}function d(f){return f===o||f===92?(e.consume(f),c):c(f)}}m();function Jr(e,t){let r;return n;function n(i){return ce(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),r=!0,n):Ke(i)?Se(e,n,r?"linePrefix":"lineSuffix")(i):t(i)}}m();function nr(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var cf={name:"definition",tokenize:_T},ST={tokenize:CT,partial:!0};function _T(e,t,r){let n=this,i;return a;function a(u){return e.enter("definition"),ml.call(n,e,o,r,"definitionLabel","definitionLabelMarker","definitionLabelString")(u)}function o(u){return i=nr(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),u===58?(e.enter("definitionMarker"),e.consume(u),e.exit("definitionMarker"),Jr(e,hl(e,e.attempt(ST,Se(e,s,"whitespace"),Se(e,s,"whitespace")),r,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString"))):r(u)}function s(u){return u===null||ce(u)?(e.exit("definition"),n.parser.defined.includes(i)||n.parser.defined.push(i),t(u)):r(u)}}function CT(e,t,r){return n;function n(o){return Qe(o)?Jr(e,i)(o):r(o)}function i(o){return o===34||o===39||o===40?gl(e,Se(e,a,"whitespace"),r,"definitionTitle","definitionTitleMarker","definitionTitleString")(o):r(o)}function a(o){return o===null||ce(o)?t(o):r(o)}}m();var uf={name:"hardBreakEscape",tokenize:DT};function DT(e,t,r){return n;function n(a){return e.enter("hardBreakEscape"),e.enter("escapeMarker"),e.consume(a),i}function i(a){return ce(a)?(e.exit("escapeMarker"),e.exit("hardBreakEscape"),t(a)):r(a)}}m();var df={name:"headingAtx",tokenize:MT,resolve:TT};function TT(e,t){let r=e.length-2,n=3,i,a;return e[n][1].type==="whitespace"&&(n+=2),r-2>n&&e[r][1].type==="whitespace"&&(r-=2),e[r][1].type==="atxHeadingSequence"&&(n===r-1||r-4>n&&e[r-2][1].type==="whitespace")&&(r-=n+1===r?2:4),r>n&&(i={type:"atxHeadingText",start:e[n][1].start,end:e[r][1].end},a={type:"chunkText",start:e[n][1].start,end:e[r][1].end,contentType:"text"},Nt(e,n,r-n+1,[["enter",i,t],["enter",a,t],["exit",a,t],["exit",i,t]])),e}function MT(e,t,r){let n=this,i=0;return a;function a(c){return e.enter("atxHeading"),e.enter("atxHeadingSequence"),o(c)}function o(c){return c===35&&i++<6?(e.consume(c),o):c===null||Qe(c)?(e.exit("atxHeadingSequence"),n.interrupt?t(c):s(c)):r(c)}function s(c){return c===35?(e.enter("atxHeadingSequence"),u(c)):c===null||ce(c)?(e.exit("atxHeading"),t(c)):Ke(c)?Se(e,s,"whitespace")(c):(e.enter("atxHeadingText"),l(c))}function u(c){return c===35?(e.consume(c),u):(e.exit("atxHeadingSequence"),s(c))}function l(c){return c===null||c===35||Qe(c)?(e.exit("atxHeadingText"),s(c)):(e.consume(c),l)}}m();m();var oE=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],ff=["pre","script","style","textarea"];var pf={name:"htmlFlow",tokenize:LT,resolveTo:AT,concrete:!0},IT={tokenize:PT,partial:!0};function AT(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function LT(e,t,r){let n=this,i,a,o,s,u;return l;function l(N){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(N),c}function c(N){return N===33?(e.consume(N),d):N===47?(e.consume(N),g):N===63?(e.consume(N),i=3,n.interrupt?t:be):dn(N)?(e.consume(N),o=String.fromCharCode(N),a=!0,y):r(N)}function d(N){return N===45?(e.consume(N),i=2,f):N===91?(e.consume(N),i=5,o="CDATA[",s=0,p):dn(N)?(e.consume(N),i=4,n.interrupt?t:be):r(N)}function f(N){return N===45?(e.consume(N),n.interrupt?t:be):r(N)}function p(N){return N===o.charCodeAt(s++)?(e.consume(N),s===o.length?n.interrupt?t:J:p):r(N)}function g(N){return dn(N)?(e.consume(N),o=String.fromCharCode(N),y):r(N)}function y(N){return N===null||N===47||N===62||Qe(N)?N!==47&&a&&ff.includes(o.toLowerCase())?(i=1,n.interrupt?t(N):J(N)):oE.includes(o.toLowerCase())?(i=6,N===47?(e.consume(N),b):n.interrupt?t(N):J(N)):(i=7,n.interrupt&&!n.parser.lazy[n.now().line]?r(N):a?T(N):x(N)):N===45||Gt(N)?(e.consume(N),o+=String.fromCharCode(N),y):r(N)}function b(N){return N===62?(e.consume(N),n.interrupt?t:J):r(N)}function x(N){return Ke(N)?(e.consume(N),x):U(N)}function T(N){return N===47?(e.consume(N),U):N===58||N===95||dn(N)?(e.consume(N),C):Ke(N)?(e.consume(N),T):U(N)}function C(N){return N===45||N===46||N===58||N===95||Gt(N)?(e.consume(N),C):A(N)}function A(N){return N===61?(e.consume(N),H):Ke(N)?(e.consume(N),A):T(N)}function H(N){return N===null||N===60||N===61||N===62||N===96?r(N):N===34||N===39?(e.consume(N),u=N,D):Ke(N)?(e.consume(N),H):(u=null,K(N))}function D(N){return N===null||ce(N)?r(N):N===u?(e.consume(N),z):(e.consume(N),D)}function K(N){return N===null||N===34||N===39||N===60||N===61||N===62||N===96||Qe(N)?A(N):(e.consume(N),K)}function z(N){return N===47||N===62||Ke(N)?T(N):r(N)}function U(N){return N===62?(e.consume(N),Z):r(N)}function Z(N){return Ke(N)?(e.consume(N),Z):N===null||ce(N)?J(N):r(N)}function J(N){return N===45&&i===2?(e.consume(N),ie):N===60&&i===1?(e.consume(N),he):N===62&&i===4?(e.consume(N),Te):N===63&&i===3?(e.consume(N),be):N===93&&i===5?(e.consume(N),ge):ce(N)&&(i===6||i===7)?e.check(IT,Te,se)(N):N===null||ce(N)?se(N):(e.consume(N),J)}function se(N){return e.exit("htmlFlowData"),G(N)}function G(N){return N===null?F(N):ce(N)?e.attempt({tokenize:Q,partial:!0},G,F)(N):(e.enter("htmlFlowData"),J(N))}function Q(N,ut,Ge){return W;function W(q){return N.enter("lineEnding"),N.consume(q),N.exit("lineEnding"),j}function j(q){return n.parser.lazy[n.now().line]?Ge(q):ut(q)}}function ie(N){return N===45?(e.consume(N),be):J(N)}function he(N){return N===47?(e.consume(N),o="",pe):J(N)}function pe(N){return N===62&&ff.includes(o.toLowerCase())?(e.consume(N),Te):dn(N)&&o.length<8?(e.consume(N),o+=String.fromCharCode(N),pe):J(N)}function ge(N){return N===93?(e.consume(N),be):J(N)}function be(N){return N===62?(e.consume(N),Te):N===45&&i===2?(e.consume(N),be):J(N)}function Te(N){return N===null||ce(N)?(e.exit("htmlFlowData"),F(N)):(e.consume(N),Te)}function F(N){return e.exit("htmlFlow"),t(N)}}function PT(e,t,r){return n;function n(i){return e.exit("htmlFlowData"),e.enter("lineEndingBlank"),e.consume(i),e.exit("lineEndingBlank"),e.attempt(Dr,t,r)}}m();var hf={name:"htmlText",tokenize:FT};function FT(e,t,r){let n=this,i,a,o,s;return u;function u(F){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(F),l}function l(F){return F===33?(e.consume(F),c):F===47?(e.consume(F),K):F===63?(e.consume(F),H):dn(F)?(e.consume(F),Z):r(F)}function c(F){return F===45?(e.consume(F),d):F===91?(e.consume(F),a="CDATA[",o=0,b):dn(F)?(e.consume(F),A):r(F)}function d(F){return F===45?(e.consume(F),f):r(F)}function f(F){return F===null||F===62?r(F):F===45?(e.consume(F),p):g(F)}function p(F){return F===null||F===62?r(F):g(F)}function g(F){return F===null?r(F):F===45?(e.consume(F),y):ce(F)?(s=g,ge(F)):(e.consume(F),g)}function y(F){return F===45?(e.consume(F),Te):g(F)}function b(F){return F===a.charCodeAt(o++)?(e.consume(F),o===a.length?x:b):r(F)}function x(F){return F===null?r(F):F===93?(e.consume(F),T):ce(F)?(s=x,ge(F)):(e.consume(F),x)}function T(F){return F===93?(e.consume(F),C):x(F)}function C(F){return F===62?Te(F):F===93?(e.consume(F),C):x(F)}function A(F){return F===null||F===62?Te(F):ce(F)?(s=A,ge(F)):(e.consume(F),A)}function H(F){return F===null?r(F):F===63?(e.consume(F),D):ce(F)?(s=H,ge(F)):(e.consume(F),H)}function D(F){return F===62?Te(F):H(F)}function K(F){return dn(F)?(e.consume(F),z):r(F)}function z(F){return F===45||Gt(F)?(e.consume(F),z):U(F)}function U(F){return ce(F)?(s=U,ge(F)):Ke(F)?(e.consume(F),U):Te(F)}function Z(F){return F===45||Gt(F)?(e.consume(F),Z):F===47||F===62||Qe(F)?J(F):r(F)}function J(F){return F===47?(e.consume(F),Te):F===58||F===95||dn(F)?(e.consume(F),se):ce(F)?(s=J,ge(F)):Ke(F)?(e.consume(F),J):Te(F)}function se(F){return F===45||F===46||F===58||F===95||Gt(F)?(e.consume(F),se):G(F)}function G(F){return F===61?(e.consume(F),Q):ce(F)?(s=G,ge(F)):Ke(F)?(e.consume(F),G):J(F)}function Q(F){return F===null||F===60||F===61||F===62||F===96?r(F):F===34||F===39?(e.consume(F),i=F,ie):ce(F)?(s=Q,ge(F)):Ke(F)?(e.consume(F),Q):(e.consume(F),i=void 0,pe)}function ie(F){return F===i?(e.consume(F),he):F===null?r(F):ce(F)?(s=ie,ge(F)):(e.consume(F),ie)}function he(F){return F===62||F===47||Qe(F)?J(F):r(F)}function pe(F){return F===null||F===34||F===39||F===60||F===61||F===96?r(F):F===62||Qe(F)?J(F):(e.consume(F),pe)}function ge(F){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(F),e.exit("lineEnding"),Se(e,be,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function be(F){return e.enter("htmlTextData"),s(F)}function Te(F){return F===62?(e.consume(F),e.exit("htmlTextData"),e.exit("htmlText"),t):r(F)}}m();var Gr={name:"labelEnd",tokenize:KT,resolveTo:BT,resolveAll:HT},NT={tokenize:$T},OT={tokenize:UT},RT={tokenize:VT};function HT(e){let t=-1,r;for(;++t-1&&(o[0]=o[0].slice(n)),a>0&&o.push(e[i].slice(0,a))),o}function o1(e,t){let r=-1,n=[],i;for(;++roD,contentInitial:()=>eD,disable:()=>sD,document:()=>ZT,flow:()=>nD,flowInitial:()=>tD,insideSpan:()=>aD,string:()=>rD,text:()=>iD});h();var ZT={[42]:Wt,[43]:Wt,[45]:Wt,[48]:Wt,[49]:Wt,[50]:Wt,[51]:Wt,[52]:Wt,[53]:Wt,[54]:Wt,[55]:Wt,[56]:Wt,[57]:Wt,[62]:rl},eD={[91]:tf},tD={[-2]:Ya,[-1]:Ya,[32]:Ya},nD={[35]:rf,[42]:Yr,[45]:[dl,Yr],[60]:of,[61]:dl,[95]:Yr,[96]:ol,[126]:ol},rD={[38]:al,[92]:il},iD={[-5]:Ja,[-4]:Ja,[-3]:Ja,[33]:lf,[38]:al,[42]:qa,[60]:[Qd,sf],[91]:cf,[92]:[nf,il],[93]:qr,[95]:qa,[96]:Zd},aD={null:[qa,tE]},oD={null:[42,95]},sD={null:[]};function sE(e={}){let t=Ww([uf].concat(e.extensions||[])),r={defined:[],lazy:{},constructs:t,content:n(Jw),document:n(Gw),flow:n(eE),string:n(nE),text:n(rE)};return r;function n(i){return a;function a(o){return oE(r,i,o)}}}h();var lE=/[\0\t\n\r]/g;function cE(){let e=1,t="",r=!0,n;return i;function i(a,o,s){let u=[],l,c,d,f,p;for(a=t+a.toString(o),d=0,t="",r&&(a.charCodeAt(0)===65279&&d++,r=void 0);d13&&r<32||r>126&&r<160||r>55295&&r<57344||r>64975&&r<65008||(r&65535)==65535||(r&65535)==65534||r>1114111?"\uFFFD":String.fromCharCode(r)}h();var lD=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function dE(e){return e.replace(lD,cD)}function cD(e,t,r){if(t)return t;if(r.charCodeAt(0)===35){let i=r.charCodeAt(1),a=i===120||i===88;return fl(r.slice(a?2:1),a?16:10)}return Oi(r)||e}h();function Ga(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?fE(e.position):"start"in e||"end"in e?fE(e):"line"in e||"column"in e?df(e):""}function df(e){return pE(e&&e.line)+":"+pE(e&&e.column)}function fE(e){return df(e&&e.start)+"-"+df(e&&e.end)}function pE(e){return e&&typeof e=="number"?e:1}var ff={}.hasOwnProperty,pl=function(e,t,r){return typeof t!="string"&&(r=t,t=void 0),uD(r)(uE(sE(r).document().write(cE()(e,t,!0))))};function uD(e={}){let t=hE({transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:u(Gr),autolinkProtocol:le,autolinkEmail:le,atxHeading:u($n),blockQuote:u(ut),characterEscape:le,characterReference:le,codeFenced:u(vt),codeFencedFenceInfo:l,codeFencedFenceMeta:l,codeIndented:u(vt,l),codeText:u(Nt,l),codeTextData:le,data:le,codeFlowValue:le,definition:u(Bn),definitionDestinationString:l,definitionLabelString:l,definitionTitleString:l,emphasis:u(Kn),hardBreakEscape:u(bn),hardBreakTrailing:u(bn),htmlFlow:u(wn,l),htmlFlowData:le,htmlText:u(wn,l),htmlTextData:le,image:u(Un),label:l,link:u(Gr),listItem:u(Xr),listItemValue:y,listOrdered:u(Qr,m),listUnordered:u(Qr),paragraph:u(rr),reference:j,referenceString:l,resourceDestinationString:l,resourceTitleString:l,setextHeading:u($n),strong:u(Ot),thematicBreak:u(yt)},exit:{atxHeading:d(),atxHeadingSequence:W,autolink:d(),autolinkEmail:Ue,autolinkProtocol:ke,blockQuote:d(),characterEscapeValue:X,characterReferenceMarkerHexadecimal:te,characterReferenceMarkerNumeric:te,characterReferenceValue:we,codeFenced:d(C),codeFencedFence:D,codeFencedFenceInfo:b,codeFencedFenceMeta:x,codeFlowValue:X,codeIndented:d(A),codeText:d(ve),codeTextData:X,data:X,definition:d(),definitionDestinationString:O,definitionLabelString:N,definitionTitleString:T,emphasis:d(),hardBreakEscape:d(re),hardBreakTrailing:d(re),htmlFlow:d(pe),htmlFlowData:X,htmlText:d(he),htmlTextData:X,image:d(De),label:P,labelText:L,lineEnding:G,link:d(be),listItem:d(),listOrdered:d(),listUnordered:d(),paragraph:d(),referenceString:q,resourceDestinationString:ct,resourceTitleString:Je,resource:V,setextHeading:d(Z),setextHeadingLineSequence:ee,setextHeadingText:z,strong:d(),thematicBreak:d()}},e.mdastExtensions||[]),r={};return n;function n(Y){let oe={type:"root",children:[]},Ee=[oe],ze=[],Tt=[],En={stack:Ee,tokenStack:ze,config:t,enter:c,exit:f,buffer:l,resume:p,setData:a,getData:o},qe=-1;for(;++qe0){let ot=ze[ze.length-1];(ot[1]||mE).call(En,void 0,ot[0])}for(oe.position={start:s(Y.length>0?Y[0][1].start:{line:1,column:1,offset:0}),end:s(Y.length>0?Y[Y.length-2][1].end:{line:1,column:1,offset:0})},qe=-1;++qe".charCodeAt(0)?o(m):(i.enter(e),i.enter(`${e}Marker`),d(m))}function d(m){return u===t.length?(i.exit(`${e}Marker`),f(m)):m!==t.charCodeAt(u)?o(m):(i.consume(m),u++,d)}function f(m){return i.enter(`${e}Data`),i.enter(`${e}Target`),p(m)}function p(m){return Qe(m)||"<".charCodeAt(0)===m||"#".charCodeAt(0)===m||m===null?s?(i.exit(`${e}Target`),i.exit(`${e}Data`),i.exit(e),a(m)):o(m):(s=!0,i.consume(m),p)}}let n={tokenize:r};return{text:{[t.charCodeAt(0)]:n}}}function CE(){let e="hashtag";function t(i){this.enter({type:e,value:null},i)}function r(i){let a=this.sliceSerialize(i),o=Ri(this.stack);o.value=a}function n(i){this.exit(i)}return{enter:{[e]:t},exit:{[`${e}Target`]:r,[e]:n}}}h();h();var Ki={carriageReturn:-5,lineFeed:-4,carriageReturnLineFeed:-3,horizontalTab:-2,virtualSpace:-1,eof:null,nul:0,soh:1,stx:2,etx:3,eot:4,enq:5,ack:6,bel:7,bs:8,ht:9,lf:10,vt:11,ff:12,cr:13,so:14,si:15,dle:16,dc1:17,dc2:18,dc3:19,dc4:20,nak:21,syn:22,etb:23,can:24,em:25,sub:26,esc:27,fs:28,gs:29,rs:30,us:31,space:32,exclamationMark:33,quotationMark:34,numberSign:35,dollarSign:36,percentSign:37,ampersand:38,apostrophe:39,leftParenthesis:40,rightParenthesis:41,asterisk:42,plusSign:43,comma:44,dash:45,dot:46,slash:47,digit0:48,digit1:49,digit2:50,digit3:51,digit4:52,digit5:53,digit6:54,digit7:55,digit8:56,digit9:57,colon:58,semicolon:59,lessThan:60,equalsTo:61,greaterThan:62,questionMark:63,atSign:64,uppercaseA:65,uppercaseB:66,uppercaseC:67,uppercaseD:68,uppercaseE:69,uppercaseF:70,uppercaseG:71,uppercaseH:72,uppercaseI:73,uppercaseJ:74,uppercaseK:75,uppercaseL:76,uppercaseM:77,uppercaseN:78,uppercaseO:79,uppercaseP:80,uppercaseQ:81,uppercaseR:82,uppercaseS:83,uppercaseT:84,uppercaseU:85,uppercaseV:86,uppercaseW:87,uppercaseX:88,uppercaseY:89,uppercaseZ:90,leftSquareBracket:91,backslash:92,rightSquareBracket:93,caret:94,underscore:95,graveAccent:96,lowercaseA:97,lowercaseB:98,lowercaseC:99,lowercaseD:100,lowercaseE:101,lowercaseF:102,lowercaseG:103,lowercaseH:104,lowercaseI:105,lowercaseJ:106,lowercaseK:107,lowercaseL:108,lowercaseM:109,lowercaseN:110,lowercaseO:111,lowercaseP:112,lowercaseQ:113,lowercaseR:114,lowercaseS:115,lowercaseT:116,lowercaseU:117,lowercaseV:118,lowercaseW:119,lowercaseX:120,lowercaseY:121,lowercaseZ:122,leftCurlyBrace:123,verticalBar:124,rightCurlyBrace:125,tilde:126,del:127,byteOrderMarker:65279,replacementCharacter:65533};h();var gf={data:"data",whitespace:"whitespace",lineEnding:"lineEnding",lineEndingBlank:"lineEndingBlank",linePrefix:"linePrefix",lineSuffix:"lineSuffix",atxHeading:"atxHeading",atxHeadingSequence:"atxHeadingSequence",atxHeadingText:"atxHeadingText",autolink:"autolink",autolinkEmail:"autolinkEmail",autolinkMarker:"autolinkMarker",autolinkProtocol:"autolinkProtocol",characterEscape:"characterEscape",characterEscapeValue:"characterEscapeValue",characterReference:"characterReference",characterReferenceMarker:"characterReferenceMarker",characterReferenceMarkerNumeric:"characterReferenceMarkerNumeric",characterReferenceMarkerHexadecimal:"characterReferenceMarkerHexadecimal",characterReferenceValue:"characterReferenceValue",codeFenced:"codeFenced",codeFencedFence:"codeFencedFence",codeFencedFenceSequence:"codeFencedFenceSequence",codeFencedFenceInfo:"codeFencedFenceInfo",codeFencedFenceMeta:"codeFencedFenceMeta",codeFlowValue:"codeFlowValue",codeIndented:"codeIndented",codeText:"codeText",codeTextData:"codeTextData",codeTextPadding:"codeTextPadding",codeTextSequence:"codeTextSequence",content:"content",definition:"definition",definitionDestination:"definitionDestination",definitionDestinationLiteral:"definitionDestinationLiteral",definitionDestinationLiteralMarker:"definitionDestinationLiteralMarker",definitionDestinationRaw:"definitionDestinationRaw",definitionDestinationString:"definitionDestinationString",definitionLabel:"definitionLabel",definitionLabelMarker:"definitionLabelMarker",definitionLabelString:"definitionLabelString",definitionMarker:"definitionMarker",definitionTitle:"definitionTitle",definitionTitleMarker:"definitionTitleMarker",definitionTitleString:"definitionTitleString",emphasis:"emphasis",emphasisSequence:"emphasisSequence",emphasisText:"emphasisText",escapeMarker:"escapeMarker",hardBreakEscape:"hardBreakEscape",hardBreakTrailing:"hardBreakTrailing",htmlFlow:"htmlFlow",htmlFlowData:"htmlFlowData",htmlText:"htmlText",htmlTextData:"htmlTextData",image:"image",label:"label",labelText:"labelText",labelLink:"labelLink",labelImage:"labelImage",labelMarker:"labelMarker",labelImageMarker:"labelImageMarker",labelEnd:"labelEnd",link:"link",paragraph:"paragraph",reference:"reference",referenceMarker:"referenceMarker",referenceString:"referenceString",resource:"resource",resourceDestination:"resourceDestination",resourceDestinationLiteral:"resourceDestinationLiteral",resourceDestinationLiteralMarker:"resourceDestinationLiteralMarker",resourceDestinationRaw:"resourceDestinationRaw",resourceDestinationString:"resourceDestinationString",resourceMarker:"resourceMarker",resourceTitle:"resourceTitle",resourceTitleMarker:"resourceTitleMarker",resourceTitleString:"resourceTitleString",setextHeading:"setextHeading",setextHeadingText:"setextHeadingText",setextHeadingLine:"setextHeadingLine",setextHeadingLineSequence:"setextHeadingLineSequence",strong:"strong",strongSequence:"strongSequence",strongText:"strongText",thematicBreak:"thematicBreak",thematicBreakSequence:"thematicBreakSequence",blockQuote:"blockQuote",blockQuotePrefix:"blockQuotePrefix",blockQuoteMarker:"blockQuoteMarker",blockQuotePrefixWhitespace:"blockQuotePrefixWhitespace",listOrdered:"listOrdered",listUnordered:"listUnordered",listItemIndent:"listItemIndent",listItemMarker:"listItemMarker",listItemPrefix:"listItemPrefix",listItemPrefixWhitespace:"listItemPrefixWhitespace",listItemValue:"listItemValue",chunkDocument:"chunkDocument",chunkContent:"chunkContent",chunkFlow:"chunkFlow",chunkText:"chunkText",chunkString:"chunkString"};var gD={tokenize:vD},TE={text:{[Ki.leftSquareBracket]:gD}};function vD(e,t,r){let n=this;return i;function i(s){return n.previous!==Ki.eof||!n._gfmTasklistFirstContentOfListItem?r(s):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(s),e.exit("taskListCheckMarker"),a)}function a(s){return Be(s)?(e.enter("taskListCheckValueUnchecked"),e.consume(s),e.exit("taskListCheckValueUnchecked"),o):s!==Ki.rightSquareBracket?(e.enter("taskListCheckValueChecked"),e.consume(s),e.exit("taskListCheckValueChecked"),o):r(s)}function o(s){return s===Ki.rightSquareBracket?(e.enter("taskListCheckMarker"),e.consume(s),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),e.check({tokenize:yD},t,r)):r(s)}}function yD(e,t,r){let n=this;return Se(e,i,gf.whitespace);function i(a){let o=n.events[n.events.length-1];return o&&o[1].type===gf.whitespace&&a!==Ki.eof&&!Qe(a)?t(a):r(a)}}var DE={exit:{taskListCheckValueChecked:ME,taskListCheckValueUnchecked:ME,paragraph:bD}};function ME(e){let t=this.stack[this.stack.length-2];t.checked=e.type==="taskListCheckValueChecked",t.checkChar=this.sliceSerialize(e)}function bD(e){let t=this.stack[this.stack.length-2],r=this.stack[this.stack.length-1],n=t.children,i=r.children[0],a=-1,o;if(t&&t.type==="listItem"&&typeof t.checked=="boolean"&&i&&i.type==="text"){for(;++a=0;i--){if(!t&&/[`%\n\r]/.test(e[i])){e[i]==="`"&&(r++,r===3&&(t=!0,n=i-1));continue}else if(!t)return{};if(e[i]==="`"&&e[i-1]==="`"&&e[i-2]==="`"&&/[\r\n]/.test(e[i-3]))return JSON.parse(e.slice(i+1,n).trim())}}function AE(e){return[TE,Hi("date",`${e.getSetting("date-trigger")}{`,"}"),Hi("dateLink",`${e.getSetting("date-trigger")}[[`,"]]"),Hi("time",`${e.getSetting("time-trigger")}{`,"}"),Hi("embedWikilink","![[","]]"),Hi("wikilink","[[","]]"),_E(),xE()]}function LE(e){return[DE,Bi("date",(t,r)=>{!t||(r.date=t)}),Bi("dateLink",(t,r)=>{!t||(r.date=t)}),Bi("time",(t,r)=>{!t||(r.time=t)}),Bi("embedWikilink",(t,r)=>{if(!t)return;let n=Ur(t),i=e.app.metadataCache.getFirstLinkpathDest(n.root,e.file.path);r.fileAccessor={target:n.root,isEmbed:!0,stats:i==null?void 0:i.stat}}),Bi("wikilink",(t,r)=>{if(!t)return;let n=Ur(t),i=e.app.metadataCache.getFirstLinkpathDest(n.root,e.file.path);if(r.fileAccessor={target:n.root,isEmbed:!1},i){let a=kd(e,i);r.fileMetadata=a.fileMetadata,r.fileMetadataOrder=a.fileMetadataOrder}}),SE((t,r)=>{if(!t.url||/:\/\//.test(t.url)||!/.md$/.test(t.url))return;let n=e.app.metadataCache.getFirstLinkpathDest(decodeURIComponent(t.url),e.file.path);if(r)t.type="embedLink",t.fileAccessor={target:decodeURIComponent(t.url),isEmbed:!0,stats:n.stat};else if(t.fileAccessor={target:decodeURIComponent(t.url),isEmbed:!1},n){let i=kd(e,n);t.fileMetadata=i.fileMetadata,t.fileMetadataOrder=i.fileMetadataOrder}}),CE(),kE()]}function PE(e,t){let r=wD(t),i={...ED(t)},a={};return Object.keys(r).forEach(o=>{o===gn?(i[o]=r[o],a[o]=r[o]):Sw[o]?i[o]=r[o]:a[o]=r[o]}),e.compileSettings(i),{settings:i,frontmatter:a,ast:pl(t,{extensions:[hf(["yaml"]),...AE(e)],mdastExtensions:[bE(["yaml"]),...LE(e)]})}}function vf(e,t){return pl(t,{extensions:AE(e),mdastExtensions:LE(e)})}function vl(e,t,r){let n=e.getSetting("hide-tags-in-title"),i=e.getSetting("hide-date-in-title"),a=jd(r.children[0]),o=qd(t,a);(o==="[ ]"||o==="[x]")&&(o="");let s=o,u={titleRaw:Ls(o),blockId:void 0,title:"",titleSearch:"",metadata:{dateStr:void 0,date:void 0,time:void 0,timeStr:void 0,tags:[],fileAccessor:void 0,file:void 0,fileMetadata:void 0,fileMetadataOrder:void 0},dom:void 0,isComplete:!!r.checked};return Ow(r,l=>l.type!=="paragraph",l=>{let c=l;if(c.type==="blockid")return u.blockId=c.value,!0;if(c.type==="hashtag")return u.metadata.tags||(u.metadata.tags=[]),u.metadata.tags.push("#"+c.value),n&&(s=As(s,{start:l.position.start.offset-a.start,end:l.position.end.offset-a.start})),!0;if(c.type==="date"||c.type==="dateLink")return u.metadata.dateStr=c.date,i&&(s=As(s,{start:l.position.start.offset-a.start,end:l.position.end.offset-a.start})),!0;if(c.type==="time")return u.metadata.timeStr=c.time,s=As(s,{start:l.position.start.offset-a.start,end:l.position.end.offset-a.start}),!0;if(c.type==="embedWikilink")return u.metadata.fileAccessor=c.fileAccessor,!0;if(c.type==="wikilink"||c.type==="link"&&c.fileAccessor)return u.metadata.fileAccessor=c.fileAccessor,u.metadata.fileMetadata=c.fileMetadata,u.metadata.fileMetadataOrder=c.fileMetadataOrder,!0;if(c.type==="embedLink")return u.metadata.fileAccessor=c.fileAccessor,!0}),u.title=Ls(yb(s)),u}function xD(e,t,r){if(e.type!=="heading"||Wa(e,{includeImageAlt:!1})!==B("Archive"))return!1;let n=Rw(t,r);return n&&n.type==="thematicBreak"}function NE(e,t,r,n,i){let a=[],o=[];return n.children.forEach((s,u)=>{if(s.type==="heading"){let l=xD(s,n.children,u),c=jd(s),d=qd(i,c),f=!1,p=Hw(n.children,u,"list",m=>{if(m.type==="heading")return!1;if(m.type==="paragraph"){let y=Wa(m);if(y.startsWith("%% kanban:settings"))return!1;if(y===B("Complete"))return f=!0,!0}return!0});if(l&&p){o.push(...p.children.map(m=>({...cs,id:Re(),data:vl(e,i,m)})));return}p?a.push({...wr,children:p.children.map(m=>({...cs,id:Re(),data:vl(e,i,m)})),id:Re(),data:{...Wr(d),shouldMarkItemsComplete:f}}):a.push({...wr,children:[],id:Re(),data:{...Wr(d),shouldMarkItemsComplete:f}})}}),{...us,id:e.file.path,children:a,data:{settings:t,frontmatter:r,archive:o,isSearching:!1,errors:[]}}}async function yf(e,t,r){let n=`- [${t.data.isComplete?"x":" "}] ${Na(r)}${t.data.blockId?` ^${t.data.blockId}`:""}`,i=vf(e,n),a=vl(e,n,i.children[0].children[0]),o=(0,gl.default)(t,{data:{$set:a}});try{await Va(e,o)}catch(s){console.error(s)}return o}async function OE(e,t,r,n){let i=`- [${r?"x":" "}] ${Na(t)}`,a=vf(e,i),o=vl(e,i,a.children[0].children[0]);o.forceEditMode=!!n;let s={...cs,id:Re(),data:o};try{await Va(e,s)}catch(u){console.error(u)}return s}async function RE(e,t){try{return(0,gl.default)(t,{children:{$set:await Promise.all(t.children.map(async r=>{try{return(0,gl.default)(r,{children:{$set:await Promise.all(r.children.map(n=>yf(e,n,n.data.titleRaw)))}})}catch(n){throw e.setError(n),n}}))}})}catch(r){throw e.setError(r),r}}function HE(e){return`- [${e.data.isComplete?"x":" "}] ${Na(e.data.titleRaw)}${e.data.blockId?` ^${e.data.blockId}`:""}`}function kD(e){let t=[];return t.push(`## ${Na(zo(e.data.title,e.data.maxItems))}`),t.push(""),e.data.shouldMarkItemsComplete&&t.push(Bb),e.children.forEach(r=>{t.push(HE(r))}),t.push(""),t.push(""),t.push(""),t.join(` -`)}function SD(e){if(e.length){let t=[Kb,"",`## ${B("Archive")}`,""];return e.forEach(r=>{t.push(HE(r))}),t.join(` -`)}return""}function BE(e){let t=e.children.reduce((n,i)=>n+kD(i),"");return["---","",(0,FE.stringifyYaml)(e.data.frontmatter),"---","",""].join(` -`)+t+SD(e.data.archive)+$b(e.data.settings)}var bf=class{constructor(t){this.stateManager=t}newItem(t,r,n){return OE(this.stateManager,t,r,n)}updateItemContent(t,r){return yf(this.stateManager,t,r)}boardToMd(t){return BE(t)}mdToBoard(t){let{ast:r,settings:n,frontmatter:i}=PE(this.stateManager,t),a=NE(this.stateManager,n,i,r,t);if(!this.stateManager.hasError()&&this.stateManager.state){let s=Ud(this.stateManager.state,a).filter(l=>["/id","/dom","/date","/time","/titleSearch","/file"].every(c=>!l.path.endsWith(c))),u=(0,KE.immutableJSONPatch)(this.stateManager.state,s);return $w(this.stateManager,u,s)}return Kw(this.stateManager,a)}reparseBoard(){return RE(this.stateManager,this.stateManager.state)}};var wf=class{constructor(t,r,n,i,a){this.stateReceivers=[];this.settingsNotifiers=new Map;this.viewSet=new Set;this.compiledSettings={};this.newBoardPromise=null;this.getSetting=(t,r)=>r&&r[t]!==void 0?r[t]:this.compiledSettings&&this.compiledSettings[t]!==void 0?this.compiledSettings[t]:this.getSettingRaw(t);this.getSettingRaw=(t,r)=>{var n,i;return r&&r[t]!==void 0?r[t]:((i=(n=this.state)==null?void 0:n.data)==null?void 0:i.settings)&&this.state.data.settings[t]!==void 0?this.state.data.settings[t]:this.getGlobalSetting(t)};this.getGlobalSetting=t=>{let r=this.getGlobalSettings();return r&&r[t]!==void 0?r[t]:null};this.app=t,this.file=r.file,this.onEmpty=i,this.getGlobalSettings=a,this.parser=new bf(this),this.registerView(r,n,!0)}getAView(){return this.viewSet.values().next().value}hasError(){var t,r,n;return!!((n=(r=(t=this.state)==null?void 0:t.data)==null?void 0:r.errors)==null?void 0:n.length)}registerView(t,r,n){this.viewSet.has(t)||(this.viewSet.add(t),t.initHeaderButtons()),n&&(this.newBoardPromise!==null?this.newBoardPromise.then(()=>this.newBoard(r)):this.newBoardPromise=this.newBoard(r).then(()=>{this.newBoardPromise=null}).catch(i=>{console.error(i),this.setError(i)}))}unregisterView(t){this.viewSet.has(t)&&(this.viewSet.delete(t),this.viewSet.size===0&&this.onEmpty())}buildSettingRetrievers(){return{getGlobalSettings:this.getGlobalSettings,getGlobalSetting:this.getGlobalSetting,getSetting:this.getSetting}}async newBoard(t){try{await this.setState(await this.getParsedBoard(t),!1)}catch(r){this.setError(r)}}saveToDisk(){if(this.state.data.errors.length>0)return;let t=this.getAView();if(t){let r=this.parser.boardToMd(this.state);t.requestSaveToDisk(r),this.viewSet.forEach(n=>{n.data=r})}}softRefresh(){this.stateReceivers.forEach(t=>t({...this.state}))}async forceRefresh(){if(this.state)try{this.compileSettings(),this.state=await this.parser.reparseBoard(),this.stateReceivers.forEach(t=>t(this.state)),this.viewSet.forEach(t=>t.initHeaderButtons())}catch(t){console.error(t),this.setError(t)}}async setState(t,r=!0){var n;try{let i=(n=this.state)==null?void 0:n.data.settings,a=typeof t=="function"?await t(this.state):t,o=a==null?void 0:a.data.settings;i&&o&&Vb(i,o)?(this.state=(0,$i.default)(this.state,{data:{settings:{$set:o}}}),this.compileSettings(),this.state=await this.parser.reparseBoard()):(this.state=a,this.compileSettings()),this.viewSet.forEach(s=>s.initHeaderButtons()),r&&this.saveToDisk(),this.stateReceivers.forEach(s=>s(this.state)),i!==o&&o&&this.settingsNotifiers.forEach((s,u)=>{(!i&&o||i[u]!==o[u])&&s.forEach(l=>l())})}catch(i){console.error(i),this.setError(i)}}useState(){let[t,r]=F.useState(this.state);return F.useEffect(()=>(this.stateReceivers.push(n=>{r(n)}),r(this.state),()=>{this.stateReceivers.remove(r)}),[]),t}useSetting(t){let[r,n]=F.useState(this.getSetting(t));return F.useEffect(()=>{let i=()=>{n(this.getSetting(t))};return this.settingsNotifiers.has(t)?this.settingsNotifiers.get(t).push(i):this.settingsNotifiers.set(t,[i]),()=>{this.settingsNotifiers.get(t).remove(i)}},[]),r}compileSettings(t){var s,u,l,c,d;let r=this.getGlobalSetting("metadata-keys")||[],n=this.getSettingRaw("metadata-keys",t)||[],i=this.getSettingRaw("date-format",t)||li(this.app),a=this.getSettingRaw("time-format",t)||ra(this.app),o=this.getSettingRaw("prepend-archive-format",t)||`${i} ${a}`;this.compiledSettings={"date-format":i,"date-display-format":this.getSettingRaw("date-display-format",t)||i,"date-trigger":this.getSettingRaw("date-trigger",t)||$s,"time-format":a,"time-trigger":this.getSettingRaw("time-trigger",t)||Us,"link-date-to-daily-note":this.getSettingRaw("link-date-to-daily-note",t),"hide-date-in-title":this.getSettingRaw("hide-date-in-title",t),"hide-tags-in-title":this.getSettingRaw("hide-tags-in-title",t),"metadata-keys":[...r,...n],"prepend-archive-separator":this.getSettingRaw("prepend-archive-separator")||"","prepend-archive-format":o,"show-add-list":(s=this.getSettingRaw("show-add-list",t))!=null?s:!0,"show-archive-all":(u=this.getSettingRaw("show-archive-all",t))!=null?u:!0,"show-view-as-markdown":(l=this.getSettingRaw("show-view-as-markdown",t))!=null?l:!0,"show-board-settings":(c=this.getSettingRaw("show-board-settings",t))!=null?c:!0,"show-search":(d=this.getSettingRaw("show-search",t))!=null?d:!0}}async getParsedBoard(t){let r=t.trim(),n={...us,id:this.file.path,children:[],data:{archive:[],settings:{"kanban-plugin":"basic"},frontmatter:{},isSearching:!1,errors:[]}};try{r&&(n=await this.parser.mdToBoard(r))}catch(i){console.error(i),n=(0,$i.default)(n,{data:{errors:{$push:[{description:i.toString(),stack:i.stack}]}}})}return n}setError(t){this.setState((0,$i.default)(this.state,{data:{errors:{$push:[{description:t.toString(),stack:t.stack}]}}}),!1)}onFileMetadataChange(){this.reparseBoardFromMd()}async reparseBoardFromMd(){try{this.setState(await this.getParsedBoard(this.getAView().data),!1)}catch(t){console.error(t),this.setError(t)}}async archiveCompletedCards(){let t=this.state,r=[],n=!!this.getSetting("prepend-archive-date"),i=this.getSetting("prepend-archive-separator"),a=this.getSetting("prepend-archive-format"),o=u=>{let l=[(0,$E.moment)().format(a)];i&&l.push(i),l.push(u.data.titleRaw);let c=l.join(" ");return this.parser.updateItemContent(u,c)},s=t.children.map(u=>(0,$i.default)(u,{children:{$set:u.children.filter(l=>((u.data.shouldMarkItemsComplete||l.data.isComplete)&&r.push(l),!l.data.isComplete&&!u.data.shouldMarkItemsComplete))}}));this.app.workspace.trigger("kanban:board-cards-archived",this.file,r);try{this.setState((0,$i.default)(t,{children:{$set:s},data:{archive:{$push:n?await Promise.all(r.map(u=>o(u))):r}}}))}catch(u){this.setError(u)}}getNewItem(t,r,n){return this.parser.newItem(t,r,n)}updateItemContent(t,r){return this.parser.updateItemContent(t,r)}};var Ef=class extends Ct.Plugin{constructor(){super(...arguments);this.settings={};this.kanbanFileModes={};this.stateManagers=new Map;this.windowRegistry=new Map;this._loaded=!1;this.isShiftPressed=!1;this.handleShift=t=>{this.isShiftPressed=t.shiftKey}}async loadSettings(){this.settings=Object.assign({},await this.loadData())}async saveSettings(){await this.saveData(this.settings)}unload(){Promise.all(app.workspace.getLeavesOfType(yn).map(t=>(this.kanbanFileModes[t.id]="markdown",this.setMarkdownView(t)))).then(()=>{super.unload()})}onunload(){this.windowRegistry.forEach((t,r)=>{t.viewStateReceivers.forEach(n=>n([])),this.unmount(r)}),this.unmount(window),this.stateManagers.clear(),this.windowRegistry.clear(),this.kanbanFileModes={},window.removeEventListener("keydown",this.handleShift),window.removeEventListener("keyup",this.handleShift),app.workspace.unregisterHoverLinkSource(gn)}async onload(){var t,r;await this.loadSettings(),this.registerEvent(app.workspace.on("window-open",(n,i)=>{this.mount(i)})),this.registerEvent(app.workspace.on("window-close",(n,i)=>{this.unmount(i)})),this.settingsTab=new Od(this,{onSettingsChange:async n=>{this.settings=n,await this.saveSettings(),this.stateManagers.forEach(i=>{i.forceRefresh()})}}),this.addSettingTab(this.settingsTab),this.registerView(yn,n=>new tr(n,this)),this.registerMonkeyPatches(),this.registerCommands(),this.registerEvents(),this.mount(window),(r=(t=app.workspace.floatingSplit)==null?void 0:t.children)==null||r.forEach(n=>{this.mount(n.win)}),window.addEventListener("keydown",this.handleShift),window.addEventListener("keyup",this.handleShift)}getKanbanViews(t){let r=this.windowRegistry.get(t);return r?Array.from(r.viewMap.values()):[]}getKanbanView(t,r){let n=this.windowRegistry.get(r);if(n==null?void 0:n.viewMap.has(t))return n.viewMap.get(t);for(let i of this.windowRegistry.values())if(i.viewMap.has(t))return i.viewMap.get(t);return null}getStateManager(t){return this.stateManagers.get(t)}getStateManagerFromViewID(t,r){let n=this.getKanbanView(t,r);return n?this.stateManagers.get(n.file):null}useViewState(t){let[r,n]=F.useState(this.getKanbanViews(t));return F.useEffect(()=>{let i=this.windowRegistry.get(t);return i==null||i.viewStateReceivers.push(n),()=>{i==null||i.viewStateReceivers.remove(n)}},[t]),r}addView(t,r,n){let i=t.getWindow(),a=this.windowRegistry.get(i);if(!a)return;a.viewMap.has(t.id)||a.viewMap.set(t.id,t);let o=t.file;this.stateManagers.has(o)?this.stateManagers.get(o).registerView(t,r,n):this.stateManagers.set(o,new wf(this.app,t,r,()=>this.stateManagers.delete(o),()=>this.settings)),a.viewStateReceivers.forEach(s=>s(this.getKanbanViews(i)))}removeView(t){let r=Array.from(this.windowRegistry.entries()).find(([,o])=>o.viewMap.has(t.id),[]);if(!r)return;let[n,i]=r,a=t.file;i.viewMap.has(t.id)&&i.viewMap.delete(t.id),this.stateManagers.has(a)&&(this.stateManagers.get(a).unregisterView(t),i.viewStateReceivers.forEach(o=>o(this.getKanbanViews(n))))}handleViewFileRename(t,r){let n=t.getWindow();if(!this.windowRegistry.has(n))return;let i=this.windowRegistry.get(n),a=`${t.leaf.id}:::${r}`;i.viewMap.has(a)&&i.viewMap.delete(a),i.viewMap.has(t.id)||i.viewMap.set(t.id,t),t.isPrimary&&this.getStateManager(t.file).softRefresh()}mount(t){if(this.windowRegistry.has(t))return;let r=t.document.body.createDiv();this.windowRegistry.set(t,{viewMap:new Map,viewStateReceivers:[],appRoot:r}),F.render(Rb(t,this),r)}unmount(t){if(!this.windowRegistry.has(t))return;let r=this.windowRegistry.get(t);for(let n of r.viewMap.values())n.destroy();F.unmountComponentAtNode(r.appRoot),r.appRoot.remove(),r.viewMap.clear(),r.viewStateReceivers.length=0,r.appRoot=null,this.windowRegistry.delete(t)}async setMarkdownView(t,r=!0){await t.setViewState({type:"markdown",state:t.view.getState(),popstate:!0},{focus:r})}async setKanbanView(t){await t.setViewState({type:yn,state:t.view.getState(),popstate:!0})}async newKanban(t){var n;let r=t||app.fileManager.getNewFileParent(((n=app.workspace.getActiveFile())==null?void 0:n.path)||"");try{let i=await app.fileManager.createNewMarkdownFile(r,B("Untitled Kanban"));await app.vault.modify(i,xd),await app.workspace.getLeaf().setViewState({type:yn,state:{file:i.path}})}catch(i){console.error("Error creating kanban board:",i)}}registerEvents(){this.registerEvent(app.workspace.on("file-menu",(r,n,i,a)=>{if(n instanceof Ct.TFolder){r.addItem(o=>{o.setTitle(B("New kanban board")).setIcon(Ba).onClick(()=>this.newKanban(n))});return}if(!Ct.Platform.isMobile&&n instanceof Ct.TFile&&a&&i==="sidebar-context-menu"&&pc(n)){let o=this.getKanbanViews(Ze(a.view.containerEl)),s=!1;for(let u of o)if(u.file===n){u.onPaneMenu(r,"more-options",!1),s=!0;break}if(!s){r.addItem(u=>{u.setTitle(B("Open as kanban board")).setIcon(Ba).setSection("pane").onClick(()=>{this.kanbanFileModes[a.id||n.path]=yn,this.setKanbanView(a)})});return}}(a==null?void 0:a.view)instanceof Ct.MarkdownView&&n instanceof Ct.TFile&&i==="pane-more-options"&&pc(n)&&r.addItem(o=>{o.setTitle(B("Open as kanban board")).setIcon(Ba).setSection("pane").onClick(()=>{this.kanbanFileModes[a.id||n.path]=yn,this.setKanbanView(a)})})})),this.registerEvent(app.vault.on("rename",(r,n)=>{app.workspace.getLeavesOfType(yn).forEach(a=>{a.view.handleRename(r.path,n)})}));let t=(0,Ct.debounce)(r=>{this.stateManagers.forEach(n=>{n.file!==r&&n.onFileMetadataChange()})},2e3,!0);this.registerEvent(app.vault.on("modify",r=>{r instanceof Ct.TFile&&t(r)})),this.registerEvent(app.metadataCache.on("changed",r=>{t(r)})),this.registerEvent(app.metadataCache.on("dataview:metadata-change",(r,n)=>{t(n)})),this.registerEvent(app.metadataCache.on("dataview:api-ready",()=>{this.stateManagers.forEach(r=>{r.forceRefresh()})})),app.workspace.registerHoverLinkSource(gn,{display:"Kanban",defaultMod:!0})}registerCommands(){this.addCommand({id:"create-new-kanban-board",name:B("Create new board"),callback:()=>this.newKanban()}),this.addCommand({id:"archive-completed-cards",name:B("Archive completed cards in active board"),checkCallback:t=>{let r=app.workspace.getActiveViewOfType(tr);if(!r)return!1;if(t)return!0;this.stateManagers.get(r.file).archiveCompletedCards()}}),this.addCommand({id:"toggle-kanban-view",name:B("Toggle between Kanban and markdown mode"),checkCallback:t=>{let r=app.workspace.getActiveFile();if(!r)return!1;let n=app.metadataCache.getFileCache(r),i=!!(n==null?void 0:n.frontmatter)&&!!n.frontmatter[gn];if(t)return i;let a=app.workspace.getActiveViewOfType(tr);if(a)this.kanbanFileModes[a.leaf.id||r.path]="markdown",this.setMarkdownView(a.leaf);else if(i){let o=app.workspace.getActiveViewOfType(Ct.MarkdownView);o&&(this.kanbanFileModes[o.leaf.id||r.path]=yn,this.setKanbanView(o.leaf))}}}),this.addCommand({id:"convert-to-kanban",name:B("Convert empty note to Kanban"),checkCallback:t=>{let r=app.workspace.getActiveViewOfType(Ct.MarkdownView);if(!r)return!1;let n=r.file.stat.size===0;if(t)return n;n&&app.vault.modify(r.file,xd).then(()=>{this.setKanbanView(r.leaf)}).catch(i=>console.error(i))}}),this.addCommand({id:"add-kanban-lane",name:B("Add a list"),checkCallback:t=>{let r=app.workspace.getActiveViewOfType(tr);if(t)return r&&r instanceof tr;r&&r instanceof tr&&r.emitter.emit("showLaneForm",void 0)}})}registerMonkeyPatches(){let t=this;app.workspace.onLayoutReady(()=>{this.register(Sl(app.commands,{executeCommand(r){return function(n){let i=app.workspace.getActiveViewOfType(tr);return i&&(n==null?void 0:n.id)&&i.emitter.emit("hotkey",n.id),r.call(this,n)}}}))}),this.register(Sl(Ct.WorkspaceLeaf.prototype,{detach(r){return function(){var i;let n=(i=this.view)==null?void 0:i.getState();return(n==null?void 0:n.file)&&t.kanbanFileModes[this.id||n.file]&&delete t.kanbanFileModes[this.id||n.file],r.apply(this)}},setViewState(r){return function(n,...i){var a;if(t._loaded&&n.type==="markdown"&&((a=n.state)==null?void 0:a.file)&&t.kanbanFileModes[this.id||n.state.file]!=="markdown"){let o=t.app.metadataCache.getCache(n.state.file);if((o==null?void 0:o.frontmatter)&&o.frontmatter[gn]){let s={...n,type:yn};return t.kanbanFileModes[n.state.file]=yn,r.apply(this,[s,...i])}}return r.apply(this,[n,...i])}}}))}};0&&(module.exports={}); +`;break}case-2:{o=t?" ":" ";break}case-1:{if(!t&&i)continue;o=" ";break}default:o=String.fromCharCode(a)}i=a===-2,n.push(o)}return n.join("")}var vf={};qi(vf,{attentionMarkers:()=>h1,contentInitial:()=>l1,disable:()=>m1,document:()=>s1,flow:()=>u1,flowInitial:()=>c1,insideSpan:()=>p1,string:()=>d1,text:()=>f1});m();var s1={[42]:Vt,[43]:Vt,[45]:Vt,[48]:Vt,[49]:Vt,[50]:Vt,[51]:Vt,[52]:Vt,[53]:Vt,[54]:Vt,[55]:Vt,[56]:Vt,[57]:Vt,[62]:cl},l1={[91]:cf},c1={[-2]:Qa,[-1]:Qa,[32]:Qa},u1={[35]:df,[42]:Qr,[45]:[vl,Qr],[60]:pf,[61]:vl,[95]:Qr,[96]:fl,[126]:fl},d1={[38]:dl,[92]:ul},f1={[-5]:Xa,[-4]:Xa,[-3]:Xa,[33]:mf,[38]:dl,[42]:Ga,[60]:[af,hf],[91]:gf,[92]:[uf,ul],[93]:Gr,[95]:Ga,[96]:sf},p1={null:[Ga,lE]},h1={null:[42,95]},m1={null:[]};function hE(e={}){let t=Gw([vf].concat(e.extensions||[])),r={defined:[],lazy:{},constructs:t,content:n(nE),document:n(rE),flow:n(sE),string:n(cE),text:n(uE)};return r;function n(i){return a;function a(o){return pE(r,i,o)}}}m();var mE=/[\0\t\n\r]/g;function gE(){let e=1,t="",r=!0,n;return i;function i(a,o,s){let u=[],l,c,d,f,p;for(a=t+a.toString(o),d=0,t="",r&&(a.charCodeAt(0)===65279&&d++,r=void 0);d13&&r<32||r>126&&r<160||r>55295&&r<57344||r>64975&&r<65008||(r&65535)==65535||(r&65535)==65534||r>1114111?"\uFFFD":String.fromCharCode(r)}m();var g1=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function yE(e){return e.replace(g1,v1)}function v1(e,t,r){if(t)return t;if(r.charCodeAt(0)===35){let i=r.charCodeAt(1),a=i===120||i===88;return yl(r.slice(a?2:1),a?16:10)}return Hi(r)||e}m();function Za(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?bE(e.position):"start"in e||"end"in e?bE(e):"line"in e||"column"in e?yf(e):""}function yf(e){return wE(e&&e.line)+":"+wE(e&&e.column)}function bE(e){return yf(e&&e.start)+"-"+yf(e&&e.end)}function wE(e){return e&&typeof e=="number"?e:1}var bf={}.hasOwnProperty,bl=function(e,t,r){return typeof t!="string"&&(r=t,t=void 0),y1(r)(vE(hE(r).document().write(gE()(e,t,!0))))};function y1(e={}){let t=EE({transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:u(Zr),autolinkProtocol:se,autolinkEmail:se,atxHeading:u($n),blockQuote:u(dt),characterEscape:se,characterReference:se,codeFenced:u(vt),codeFencedFenceInfo:l,codeFencedFenceMeta:l,codeIndented:u(vt,l),codeText:u(Ot,l),codeTextData:se,data:se,codeFlowValue:se,definition:u(Bn),definitionDestinationString:l,definitionLabelString:l,definitionTitleString:l,emphasis:u(Kn),hardBreakEscape:u(bn),hardBreakTrailing:u(bn),htmlFlow:u(wn,l),htmlFlowData:se,htmlText:u(wn,l),htmlTextData:se,image:u(Un),label:l,link:u(Zr),listItem:u(ti),listItemValue:y,listOrdered:u(ei,g),listUnordered:u(ei),paragraph:u(rr),reference:j,referenceString:l,resourceDestinationString:l,resourceTitleString:l,setextHeading:u($n),strong:u(Rt),thematicBreak:u(yt)},exit:{atxHeading:d(),atxHeadingSequence:z,autolink:d(),autolinkEmail:Ue,autolinkProtocol:xe,blockQuote:d(),characterEscapeValue:G,characterReferenceMarkerHexadecimal:te,characterReferenceMarkerNumeric:te,characterReferenceValue:we,codeFenced:d(C),codeFencedFence:T,codeFencedFenceInfo:b,codeFencedFenceMeta:x,codeFlowValue:G,codeIndented:d(A),codeText:d(ge),codeTextData:G,data:G,definition:d(),definitionDestinationString:K,definitionLabelString:H,definitionTitleString:D,emphasis:d(),hardBreakEscape:d(ie),hardBreakTrailing:d(ie),htmlFlow:d(he),htmlFlowData:G,htmlText:d(pe),htmlTextData:G,image:d(Te),label:N,labelText:F,lineEnding:Q,link:d(be),listItem:d(),listOrdered:d(),listUnordered:d(),paragraph:d(),referenceString:q,resourceDestinationString:ut,resourceTitleString:Ge,resource:W,setextHeading:d(J),setextHeadingLineSequence:Z,setextHeadingText:U,strong:d(),thematicBreak:d()}},e.mdastExtensions||[]),r={};return n;function n(Y){let oe={type:"root",children:[]},Ee=[oe],ze=[],Tt=[],En={stack:Ee,tokenStack:ze,config:t,enter:c,exit:f,buffer:l,resume:p,setData:a,getData:o},qe=-1;for(;++qe0){let st=ze[ze.length-1];(st[1]||kE).call(En,void 0,st[0])}for(oe.position={start:s(Y.length>0?Y[0][1].start:{line:1,column:1,offset:0}),end:s(Y.length>0?Y[Y.length-2][1].end:{line:1,column:1,offset:0})},qe=-1;++qe".charCodeAt(0)?o(g):(i.enter(e),i.enter(`${e}Marker`),d(g))}function d(g){return u===t.length?(i.exit(`${e}Marker`),f(g)):g!==t.charCodeAt(u)?o(g):(i.consume(g),u++,d)}function f(g){return i.enter(`${e}Data`),i.enter(`${e}Target`),p(g)}function p(g){return Qe(g)||"<".charCodeAt(0)===g||"#".charCodeAt(0)===g||g===null?s?(i.exit(`${e}Target`),i.exit(`${e}Data`),i.exit(e),a(g)):o(g):(s=!0,i.consume(g),p)}}let n={tokenize:r};return{text:{[t.charCodeAt(0)]:n}}}function PE(){let e="hashtag";function t(i){this.enter({type:e,value:null},i)}function r(i){let a=this.sliceSerialize(i),o=Bi(this.stack);o.value=a}function n(i){this.exit(i)}return{enter:{[e]:t},exit:{[`${e}Target`]:r,[e]:n}}}m();m();var Ui={carriageReturn:-5,lineFeed:-4,carriageReturnLineFeed:-3,horizontalTab:-2,virtualSpace:-1,eof:null,nul:0,soh:1,stx:2,etx:3,eot:4,enq:5,ack:6,bel:7,bs:8,ht:9,lf:10,vt:11,ff:12,cr:13,so:14,si:15,dle:16,dc1:17,dc2:18,dc3:19,dc4:20,nak:21,syn:22,etb:23,can:24,em:25,sub:26,esc:27,fs:28,gs:29,rs:30,us:31,space:32,exclamationMark:33,quotationMark:34,numberSign:35,dollarSign:36,percentSign:37,ampersand:38,apostrophe:39,leftParenthesis:40,rightParenthesis:41,asterisk:42,plusSign:43,comma:44,dash:45,dot:46,slash:47,digit0:48,digit1:49,digit2:50,digit3:51,digit4:52,digit5:53,digit6:54,digit7:55,digit8:56,digit9:57,colon:58,semicolon:59,lessThan:60,equalsTo:61,greaterThan:62,questionMark:63,atSign:64,uppercaseA:65,uppercaseB:66,uppercaseC:67,uppercaseD:68,uppercaseE:69,uppercaseF:70,uppercaseG:71,uppercaseH:72,uppercaseI:73,uppercaseJ:74,uppercaseK:75,uppercaseL:76,uppercaseM:77,uppercaseN:78,uppercaseO:79,uppercaseP:80,uppercaseQ:81,uppercaseR:82,uppercaseS:83,uppercaseT:84,uppercaseU:85,uppercaseV:86,uppercaseW:87,uppercaseX:88,uppercaseY:89,uppercaseZ:90,leftSquareBracket:91,backslash:92,rightSquareBracket:93,caret:94,underscore:95,graveAccent:96,lowercaseA:97,lowercaseB:98,lowercaseC:99,lowercaseD:100,lowercaseE:101,lowercaseF:102,lowercaseG:103,lowercaseH:104,lowercaseI:105,lowercaseJ:106,lowercaseK:107,lowercaseL:108,lowercaseM:109,lowercaseN:110,lowercaseO:111,lowercaseP:112,lowercaseQ:113,lowercaseR:114,lowercaseS:115,lowercaseT:116,lowercaseU:117,lowercaseV:118,lowercaseW:119,lowercaseX:120,lowercaseY:121,lowercaseZ:122,leftCurlyBrace:123,verticalBar:124,rightCurlyBrace:125,tilde:126,del:127,byteOrderMarker:65279,replacementCharacter:65533};m();var xf={data:"data",whitespace:"whitespace",lineEnding:"lineEnding",lineEndingBlank:"lineEndingBlank",linePrefix:"linePrefix",lineSuffix:"lineSuffix",atxHeading:"atxHeading",atxHeadingSequence:"atxHeadingSequence",atxHeadingText:"atxHeadingText",autolink:"autolink",autolinkEmail:"autolinkEmail",autolinkMarker:"autolinkMarker",autolinkProtocol:"autolinkProtocol",characterEscape:"characterEscape",characterEscapeValue:"characterEscapeValue",characterReference:"characterReference",characterReferenceMarker:"characterReferenceMarker",characterReferenceMarkerNumeric:"characterReferenceMarkerNumeric",characterReferenceMarkerHexadecimal:"characterReferenceMarkerHexadecimal",characterReferenceValue:"characterReferenceValue",codeFenced:"codeFenced",codeFencedFence:"codeFencedFence",codeFencedFenceSequence:"codeFencedFenceSequence",codeFencedFenceInfo:"codeFencedFenceInfo",codeFencedFenceMeta:"codeFencedFenceMeta",codeFlowValue:"codeFlowValue",codeIndented:"codeIndented",codeText:"codeText",codeTextData:"codeTextData",codeTextPadding:"codeTextPadding",codeTextSequence:"codeTextSequence",content:"content",definition:"definition",definitionDestination:"definitionDestination",definitionDestinationLiteral:"definitionDestinationLiteral",definitionDestinationLiteralMarker:"definitionDestinationLiteralMarker",definitionDestinationRaw:"definitionDestinationRaw",definitionDestinationString:"definitionDestinationString",definitionLabel:"definitionLabel",definitionLabelMarker:"definitionLabelMarker",definitionLabelString:"definitionLabelString",definitionMarker:"definitionMarker",definitionTitle:"definitionTitle",definitionTitleMarker:"definitionTitleMarker",definitionTitleString:"definitionTitleString",emphasis:"emphasis",emphasisSequence:"emphasisSequence",emphasisText:"emphasisText",escapeMarker:"escapeMarker",hardBreakEscape:"hardBreakEscape",hardBreakTrailing:"hardBreakTrailing",htmlFlow:"htmlFlow",htmlFlowData:"htmlFlowData",htmlText:"htmlText",htmlTextData:"htmlTextData",image:"image",label:"label",labelText:"labelText",labelLink:"labelLink",labelImage:"labelImage",labelMarker:"labelMarker",labelImageMarker:"labelImageMarker",labelEnd:"labelEnd",link:"link",paragraph:"paragraph",reference:"reference",referenceMarker:"referenceMarker",referenceString:"referenceString",resource:"resource",resourceDestination:"resourceDestination",resourceDestinationLiteral:"resourceDestinationLiteral",resourceDestinationLiteralMarker:"resourceDestinationLiteralMarker",resourceDestinationRaw:"resourceDestinationRaw",resourceDestinationString:"resourceDestinationString",resourceMarker:"resourceMarker",resourceTitle:"resourceTitle",resourceTitleMarker:"resourceTitleMarker",resourceTitleString:"resourceTitleString",setextHeading:"setextHeading",setextHeadingText:"setextHeadingText",setextHeadingLine:"setextHeadingLine",setextHeadingLineSequence:"setextHeadingLineSequence",strong:"strong",strongSequence:"strongSequence",strongText:"strongText",thematicBreak:"thematicBreak",thematicBreakSequence:"thematicBreakSequence",blockQuote:"blockQuote",blockQuotePrefix:"blockQuotePrefix",blockQuoteMarker:"blockQuoteMarker",blockQuotePrefixWhitespace:"blockQuotePrefixWhitespace",listOrdered:"listOrdered",listUnordered:"listUnordered",listItemIndent:"listItemIndent",listItemMarker:"listItemMarker",listItemPrefix:"listItemPrefix",listItemPrefixWhitespace:"listItemPrefixWhitespace",listItemValue:"listItemValue",chunkDocument:"chunkDocument",chunkContent:"chunkContent",chunkFlow:"chunkFlow",chunkText:"chunkText",chunkString:"chunkString"};var S1={tokenize:_1},FE={text:{[Ui.leftSquareBracket]:S1}};function _1(e,t,r){let n=this;return i;function i(s){return n.previous!==Ui.eof||!n._gfmTasklistFirstContentOfListItem?r(s):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(s),e.exit("taskListCheckMarker"),a)}function a(s){return Ke(s)?(e.enter("taskListCheckValueUnchecked"),e.consume(s),e.exit("taskListCheckValueUnchecked"),o):s!==Ui.rightSquareBracket?(e.enter("taskListCheckValueChecked"),e.consume(s),e.exit("taskListCheckValueChecked"),o):r(s)}function o(s){return s===Ui.rightSquareBracket?(e.enter("taskListCheckMarker"),e.consume(s),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),e.check({tokenize:C1},t,r)):r(s)}}function C1(e,t,r){let n=this;return Se(e,i,xf.whitespace);function i(a){let o=n.events[n.events.length-1];return o&&o[1].type===xf.whitespace&&a!==Ui.eof&&!Qe(a)?t(a):r(a)}}var NE={exit:{taskListCheckValueChecked:OE,taskListCheckValueUnchecked:OE,paragraph:D1}};function OE(e){let t=this.stack[this.stack.length-2];t.checked=e.type==="taskListCheckValueChecked",t.checkChar=this.sliceSerialize(e)}function D1(e){let t=this.stack[this.stack.length-2],r=this.stack[this.stack.length-1],n=t.children,i=r.children[0],a=-1,o;if(t&&t.type==="listItem"&&typeof t.checked=="boolean"&&i&&i.type==="text"){for(;++a=0;i--){if(!t&&/[`%\n\r]/.test(e[i])){e[i]==="`"&&(r++,r===3&&(t=!0,n=i-1));continue}else if(!t)return{};if(e[i]==="`"&&e[i-1]==="`"&&e[i-2]==="`"&&/[\r\n]/.test(e[i-3]))return JSON.parse(e.slice(i+1,n).trim())}}function HE(e){return[FE,Ki("date",`${e.getSetting("date-trigger")}{`,"}"),Ki("dateLink",`${e.getSetting("date-trigger")}[[`,"]]"),Ki("time",`${e.getSetting("time-trigger")}{`,"}"),Ki("embedWikilink","![[","]]"),Ki("wikilink","[[","]]"),LE(),ME()]}function BE(e){return[NE,$i("date",(t,r)=>{!t||(r.date=t)}),$i("dateLink",(t,r)=>{!t||(r.date=t)}),$i("time",(t,r)=>{!t||(r.time=t)}),$i("embedWikilink",(t,r)=>{if(!t)return;let n=zr(t),i=e.app.metadataCache.getFirstLinkpathDest(n.root,e.file.path);r.fileAccessor={target:n.root,isEmbed:!0,stats:i==null?void 0:i.stat}}),$i("wikilink",(t,r)=>{if(!t)return;let n=zr(t),i=e.app.metadataCache.getFirstLinkpathDest(n.root,e.file.path);if(r.fileAccessor={target:n.root,isEmbed:!1},i){let a=Md(e,i);r.fileMetadata=a.fileMetadata,r.fileMetadataOrder=a.fileMetadataOrder}}),AE((t,r)=>{if(!t.url||/:\/\//.test(t.url)||!/.md$/.test(t.url))return;let n=e.app.metadataCache.getFirstLinkpathDest(decodeURIComponent(t.url),e.file.path);if(r)t.type="embedLink",t.fileAccessor={target:decodeURIComponent(t.url),isEmbed:!0,stats:n.stat};else if(t.fileAccessor={target:decodeURIComponent(t.url),isEmbed:!1},n){let i=Md(e,n);t.fileMetadata=i.fileMetadata,t.fileMetadataOrder=i.fileMetadataOrder}}),PE(),IE()]}function KE(e,t){let r=T1(t),i={...M1(t)},a={};return Object.keys(r).forEach(o=>{o===gn?(i[o]=r[o],a[o]=r[o]):Aw[o]?i[o]=r[o]:a[o]=r[o]}),e.compileSettings(i),{settings:i,frontmatter:a,ast:bl(t,{extensions:[Ef(["yaml"]),...HE(e)],mdastExtensions:[CE(["yaml"]),...BE(e)]})}}function Sf(e,t){return bl(t,{extensions:HE(e),mdastExtensions:BE(e)})}function xl(e,t,r){let n=e.getSetting("hide-tags-in-title"),i=e.getSetting("hide-date-in-title"),a=Zd(r.children[0]),o=ef(t,a);(o==="[ ]"||o==="[x]")&&(o="");let s=o,u={titleRaw:Rs(o),blockId:void 0,title:"",titleSearch:"",metadata:{dateStr:void 0,date:void 0,time:void 0,timeStr:void 0,tags:[],fileAccessor:void 0,file:void 0,fileMetadata:void 0,fileMetadataOrder:void 0},dom:void 0,isComplete:!!r.checked};return Vw(r,l=>l.type!=="paragraph",l=>{let c=l;if(c.type==="blockid")return u.blockId=c.value,!0;if(c.type==="hashtag")return u.metadata.tags||(u.metadata.tags=[]),u.metadata.tags.push("#"+c.value),n&&(s=Os(s,{start:l.position.start.offset-a.start,end:l.position.end.offset-a.start})),!0;if(c.type==="date"||c.type==="dateLink")return u.metadata.dateStr=c.date,i&&(s=Os(s,{start:l.position.start.offset-a.start,end:l.position.end.offset-a.start})),!0;if(c.type==="time")return u.metadata.timeStr=c.time,s=Os(s,{start:l.position.start.offset-a.start,end:l.position.end.offset-a.start}),!0;if(c.type==="embedWikilink")return u.metadata.fileAccessor=c.fileAccessor,!0;if(c.type==="wikilink"||c.type==="link"&&c.fileAccessor)return u.metadata.fileAccessor=c.fileAccessor,u.metadata.fileMetadata=c.fileMetadata,u.metadata.fileMetadataOrder=c.fileMetadataOrder,!0;if(c.type==="embedLink")return u.metadata.fileAccessor=c.fileAccessor,!0}),u.title=Rs(Sb(s)),u}function I1(e,t,r){if(e.type!=="heading"||ja(e,{includeImageAlt:!1})!==L("Archive"))return!1;let n=Ww(t,r);return n&&n.type==="thematicBreak"}function UE(e,t,r,n,i){let a=[],o=[];return n.children.forEach((s,u)=>{if(s.type==="heading"){let l=I1(s,n.children,u),c=Zd(s),d=ef(i,c),f=!1,p=zw(n.children,u,"list",g=>{if(g.type==="heading")return!1;if(g.type==="paragraph"){let y=ja(g);if(y.startsWith("%% kanban:settings"))return!1;if(y===L("Complete"))return f=!0,!0}return!0});if(l&&p){o.push(...p.children.map(g=>({...ps,id:Ae(),data:xl(e,i,g)})));return}p?a.push({...kr,children:p.children.map(g=>({...ps,id:Ae(),data:xl(e,i,g)})),id:Ae(),data:{...jr(d),shouldMarkItemsComplete:f}}):a.push({...kr,children:[],id:Ae(),data:{...jr(d),shouldMarkItemsComplete:f}})}}),{...hs,id:e.file.path,children:a,data:{settings:t,frontmatter:r,archive:o,isSearching:!1,errors:[]}}}async function _f(e,t,r){let n=`- [${t.data.isComplete?"x":" "}] ${Ra(r)}${t.data.blockId?` ^${t.data.blockId}`:""}`,i=Sf(e,n),a=xl(e,n,i.children[0].children[0]),o=(0,kl.default)(t,{data:{$set:a}});try{await qa(e,o)}catch(s){console.error(s)}return o}async function VE(e,t,r,n){let i=`- [${r?"x":" "}] ${Ra(t)}`,a=Sf(e,i),o=xl(e,i,a.children[0].children[0]);o.forceEditMode=!!n;let s={...ps,id:Ae(),data:o};try{await qa(e,s)}catch(u){console.error(u)}return s}async function WE(e,t){try{return(0,kl.default)(t,{children:{$set:await Promise.all(t.children.map(async r=>{try{return(0,kl.default)(r,{children:{$set:await Promise.all(r.children.map(n=>_f(e,n,n.data.titleRaw)))}})}catch(n){throw e.setError(n),n}}))}})}catch(r){throw e.setError(r),r}}function zE(e){return`- [${e.data.isComplete?"x":" "}] ${Ra(e.data.titleRaw)}${e.data.blockId?` ^${e.data.blockId}`:""}`}function A1(e){let t=[];return t.push(`## ${Ra(Jo(e.data.title,e.data.maxItems))}`),t.push(""),e.data.shouldMarkItemsComplete&&t.push(zb),e.children.forEach(r=>{t.push(zE(r))}),t.push(""),t.push(""),t.push(""),t.join(` +`)}function L1(e){if(e.length){let t=[jb,"",`## ${L("Archive")}`,""];return e.forEach(r=>{t.push(zE(r))}),t.join(` +`)}return""}function jE(e){let t=e.children.reduce((n,i)=>n+A1(i),"");return["---","",(0,$E.stringifyYaml)(e.data.frontmatter),"---","",""].join(` +`)+t+L1(e.data.archive)+qb(e.data.settings)}var Cf=class{constructor(t){this.stateManager=t}newItem(t,r,n){return VE(this.stateManager,t,r,n)}updateItemContent(t,r){return _f(this.stateManager,t,r)}boardToMd(t){return jE(t)}mdToBoard(t){let{ast:r,settings:n,frontmatter:i}=KE(this.stateManager,t),a=UE(this.stateManager,n,i,r,t);if(!this.stateManager.hasError()&&this.stateManager.state){let s=Jd(this.stateManager.state,a).filter(l=>["/id","/dom","/date","/time","/titleSearch","/file"].every(c=>!l.path.endsWith(c))),u=(0,qE.immutableJSONPatch)(this.stateManager.state,s);return Yw(this.stateManager,u,s)}return qw(this.stateManager,a)}reparseBoard(){return WE(this.stateManager,this.stateManager.state)}};var Df=class{constructor(t,r,n,i,a){this.stateReceivers=[];this.settingsNotifiers=new Map;this.viewSet=new Set;this.compiledSettings={};this.newBoardPromise=null;this.getSetting=(t,r)=>r&&r[t]!==void 0?r[t]:this.compiledSettings&&this.compiledSettings[t]!==void 0?this.compiledSettings[t]:this.getSettingRaw(t);this.getSettingRaw=(t,r)=>{var n,i;return r&&r[t]!==void 0?r[t]:((i=(n=this.state)==null?void 0:n.data)==null?void 0:i.settings)&&this.state.data.settings[t]!==void 0?this.state.data.settings[t]:this.getGlobalSetting(t)};this.getGlobalSetting=t=>{let r=this.getGlobalSettings();return r&&r[t]!==void 0?r[t]:null};this.app=t,this.file=r.file,this.onEmpty=i,this.getGlobalSettings=a,this.parser=new Cf(this),this.registerView(r,n,!0)}getAView(){return this.viewSet.values().next().value}hasError(){var t,r,n;return!!((n=(r=(t=this.state)==null?void 0:t.data)==null?void 0:r.errors)==null?void 0:n.length)}registerView(t,r,n){this.viewSet.has(t)||(this.viewSet.add(t),t.initHeaderButtons()),n&&(this.newBoardPromise!==null?this.newBoardPromise.then(()=>this.newBoard(r)):this.newBoardPromise=this.newBoard(r).then(()=>{this.newBoardPromise=null}).catch(i=>{console.error(i),this.setError(i)}))}unregisterView(t){this.viewSet.has(t)&&(this.viewSet.delete(t),this.viewSet.size===0&&this.onEmpty())}buildSettingRetrievers(){return{getGlobalSettings:this.getGlobalSettings,getGlobalSetting:this.getGlobalSetting,getSetting:this.getSetting}}async newBoard(t){try{await this.setState(await this.getParsedBoard(t),!1)}catch(r){this.setError(r)}}saveToDisk(){if(this.state.data.errors.length>0)return;let t=this.getAView();if(t){let r=this.parser.boardToMd(this.state);t.requestSaveToDisk(r),this.viewSet.forEach(n=>{n.data=r})}}softRefresh(){this.stateReceivers.forEach(t=>t({...this.state}))}async forceRefresh(){if(this.state)try{this.compileSettings(),this.state=await this.parser.reparseBoard(),this.stateReceivers.forEach(t=>t(this.state)),this.settingsNotifiers.forEach(t=>{t.forEach(r=>r())}),this.viewSet.forEach(t=>t.initHeaderButtons())}catch(t){console.error(t),this.setError(t)}}async setState(t,r=!0){var n;try{let i=(n=this.state)==null?void 0:n.data.settings,a=typeof t=="function"?await t(this.state):t,o=a==null?void 0:a.data.settings;i&&o&&Gb(i,o)?(this.state=(0,Vi.default)(this.state,{data:{settings:{$set:o}}}),this.compileSettings(),this.state=await this.parser.reparseBoard()):(this.state=a,this.compileSettings()),this.viewSet.forEach(s=>s.initHeaderButtons()),r&&this.saveToDisk(),this.stateReceivers.forEach(s=>s(this.state)),i!==o&&o&&this.settingsNotifiers.forEach((s,u)=>{(!i&&o||i[u]!==o[u])&&s.forEach(l=>l())})}catch(i){console.error(i),this.setError(i)}}useState(){let[t,r]=P.useState(this.state);return P.useEffect(()=>(this.stateReceivers.push(n=>{r(n)}),r(this.state),()=>{this.stateReceivers.remove(r)}),[]),t}useSetting(t){let[r,n]=P.useState(this.getSetting(t));return P.useEffect(()=>{let i=()=>{n(this.getSetting(t))};return this.settingsNotifiers.has(t)?this.settingsNotifiers.get(t).push(i):this.settingsNotifiers.set(t,[i]),()=>{this.settingsNotifiers.get(t).remove(i)}},[]),r}compileSettings(t){var s,u,l,c,d,f,p;let r=this.getGlobalSetting("metadata-keys")||[],n=this.getSettingRaw("metadata-keys",t)||[],i=this.getSettingRaw("date-format",t)||Nr(this.app),a=this.getSettingRaw("time-format",t)||ui(this.app),o=this.getSettingRaw("prepend-archive-format",t)||`${i} ${a}`;this.compiledSettings={"date-format":i,"date-display-format":this.getSettingRaw("date-display-format",t)||i,"date-trigger":this.getSettingRaw("date-trigger",t)||js,"time-format":a,"time-trigger":this.getSettingRaw("time-trigger",t)||qs,"link-date-to-daily-note":this.getSettingRaw("link-date-to-daily-note",t),"hide-date-in-title":this.getSettingRaw("hide-date-in-title",t),"hide-tags-in-title":this.getSettingRaw("hide-tags-in-title",t),"metadata-keys":[...r,...n],"prepend-archive-separator":this.getSettingRaw("prepend-archive-separator")||"","prepend-archive-format":o,"show-add-list":(s=this.getSettingRaw("show-add-list",t))!=null?s:!0,"show-archive-all":(u=this.getSettingRaw("show-archive-all",t))!=null?u:!0,"show-view-as-markdown":(l=this.getSettingRaw("show-view-as-markdown",t))!=null?l:!0,"show-board-settings":(c=this.getSettingRaw("show-board-settings",t))!=null?c:!0,"show-search":(d=this.getSettingRaw("show-search",t))!=null?d:!0,"tag-colors":(f=this.getSettingRaw("tag-colors",t))!=null?f:[],"date-colors":(p=this.getSettingRaw("date-colors",t))!=null?p:[]}}async getParsedBoard(t){let r=t.trim(),n={...hs,id:this.file.path,children:[],data:{archive:[],settings:{"kanban-plugin":"basic"},frontmatter:{},isSearching:!1,errors:[]}};try{r&&(n=await this.parser.mdToBoard(r))}catch(i){console.error(i),n=(0,Vi.default)(n,{data:{errors:{$push:[{description:i.toString(),stack:i.stack}]}}})}return n}setError(t){this.setState((0,Vi.default)(this.state,{data:{errors:{$push:[{description:t.toString(),stack:t.stack}]}}}),!1)}onFileMetadataChange(){this.reparseBoardFromMd()}async reparseBoardFromMd(){try{this.setState(await this.getParsedBoard(this.getAView().data),!1)}catch(t){console.error(t),this.setError(t)}}async archiveCompletedCards(){let t=this.state,r=[],n=!!this.getSetting("prepend-archive-date"),i=this.getSetting("prepend-archive-separator"),a=this.getSetting("prepend-archive-format"),o=u=>{let l=[(0,YE.moment)().format(a)];i&&l.push(i),l.push(u.data.titleRaw);let c=l.join(" ");return this.parser.updateItemContent(u,c)},s=t.children.map(u=>(0,Vi.default)(u,{children:{$set:u.children.filter(l=>((u.data.shouldMarkItemsComplete||l.data.isComplete)&&r.push(l),!l.data.isComplete&&!u.data.shouldMarkItemsComplete))}}));this.app.workspace.trigger("kanban:board-cards-archived",this.file,r);try{this.setState((0,Vi.default)(t,{children:{$set:s},data:{archive:{$push:n?await Promise.all(r.map(u=>o(u))):r}}}))}catch(u){this.setError(u)}}getNewItem(t,r,n){return this.parser.newItem(t,r,n)}updateItemContent(t,r){return this.parser.updateItemContent(t,r)}};var Tf=class extends Dt.Plugin{constructor(){super(...arguments);this.settings={};this.kanbanFileModes={};this.stateManagers=new Map;this.windowRegistry=new Map;this._loaded=!1;this.isShiftPressed=!1;this.handleShift=t=>{this.isShiftPressed=t.shiftKey}}async loadSettings(){this.settings=Object.assign({},await this.loadData())}async saveSettings(){await this.saveData(this.settings)}unload(){Promise.all(app.workspace.getLeavesOfType(yn).map(t=>(this.kanbanFileModes[t.id]="markdown",this.setMarkdownView(t)))).then(()=>{super.unload()})}onunload(){this.windowRegistry.forEach((t,r)=>{t.viewStateReceivers.forEach(n=>n([])),this.unmount(r)}),this.unmount(window),this.stateManagers.clear(),this.windowRegistry.clear(),this.kanbanFileModes={},window.removeEventListener("keydown",this.handleShift),window.removeEventListener("keyup",this.handleShift),app.workspace.unregisterHoverLinkSource(gn)}async onload(){var t,r;await this.loadSettings(),this.registerEvent(app.workspace.on("window-open",(n,i)=>{this.mount(i)})),this.registerEvent(app.workspace.on("window-close",(n,i)=>{this.unmount(i)})),this.settingsTab=new Vd(this,{onSettingsChange:async n=>{this.settings=n,await this.saveSettings(),this.stateManagers.forEach(i=>{i.forceRefresh()})}}),this.addSettingTab(this.settingsTab),this.registerView(yn,n=>new tr(n,this)),this.registerMonkeyPatches(),this.registerCommands(),this.registerEvents(),this.mount(window),(r=(t=app.workspace.floatingSplit)==null?void 0:t.children)==null||r.forEach(n=>{this.mount(n.win)}),window.addEventListener("keydown",this.handleShift),window.addEventListener("keyup",this.handleShift)}getKanbanViews(t){let r=this.windowRegistry.get(t);return r?Array.from(r.viewMap.values()):[]}getKanbanView(t,r){let n=this.windowRegistry.get(r);if(n==null?void 0:n.viewMap.has(t))return n.viewMap.get(t);for(let i of this.windowRegistry.values())if(i.viewMap.has(t))return i.viewMap.get(t);return null}getStateManager(t){return this.stateManagers.get(t)}getStateManagerFromViewID(t,r){let n=this.getKanbanView(t,r);return n?this.stateManagers.get(n.file):null}useViewState(t){let[r,n]=P.useState(this.getKanbanViews(t));return P.useEffect(()=>{let i=this.windowRegistry.get(t);return i==null||i.viewStateReceivers.push(n),()=>{i==null||i.viewStateReceivers.remove(n)}},[t]),r}addView(t,r,n){let i=t.getWindow(),a=this.windowRegistry.get(i);if(!a)return;a.viewMap.has(t.id)||a.viewMap.set(t.id,t);let o=t.file;this.stateManagers.has(o)?this.stateManagers.get(o).registerView(t,r,n):this.stateManagers.set(o,new Df(this.app,t,r,()=>this.stateManagers.delete(o),()=>this.settings)),a.viewStateReceivers.forEach(s=>s(this.getKanbanViews(i)))}removeView(t){let r=Array.from(this.windowRegistry.entries()).find(([,o])=>o.viewMap.has(t.id),[]);if(!r)return;let[n,i]=r,a=t.file;i.viewMap.has(t.id)&&i.viewMap.delete(t.id),this.stateManagers.has(a)&&(this.stateManagers.get(a).unregisterView(t),i.viewStateReceivers.forEach(o=>o(this.getKanbanViews(n))))}handleViewFileRename(t,r){let n=t.getWindow();if(!this.windowRegistry.has(n))return;let i=this.windowRegistry.get(n),a=`${t.leaf.id}:::${r}`;i.viewMap.has(a)&&i.viewMap.delete(a),i.viewMap.has(t.id)||i.viewMap.set(t.id,t),t.isPrimary&&this.getStateManager(t.file).softRefresh()}mount(t){if(this.windowRegistry.has(t))return;let r=t.document.body.createDiv();this.windowRegistry.set(t,{viewMap:new Map,viewStateReceivers:[],appRoot:r}),P.render(Vb(t,this),r)}unmount(t){if(!this.windowRegistry.has(t))return;let r=this.windowRegistry.get(t);for(let n of r.viewMap.values())n.destroy();P.unmountComponentAtNode(r.appRoot),r.appRoot.remove(),r.viewMap.clear(),r.viewStateReceivers.length=0,r.appRoot=null,this.windowRegistry.delete(t)}async setMarkdownView(t,r=!0){await t.setViewState({type:"markdown",state:t.view.getState(),popstate:!0},{focus:r})}async setKanbanView(t){await t.setViewState({type:yn,state:t.view.getState(),popstate:!0})}async newKanban(t){var n;let r=t||app.fileManager.getNewFileParent(((n=app.workspace.getActiveFile())==null?void 0:n.path)||"");try{let i=await app.fileManager.createNewMarkdownFile(r,L("Untitled Kanban"));await app.vault.modify(i,Td),await app.workspace.getLeaf().setViewState({type:yn,state:{file:i.path}})}catch(i){console.error("Error creating kanban board:",i)}}registerEvents(){this.registerEvent(app.workspace.on("file-menu",(r,n,i,a)=>{if(n instanceof Dt.TFolder){r.addItem(o=>{o.setTitle(L("New kanban board")).setIcon(Ua).onClick(()=>this.newKanban(n))});return}if(!Dt.Platform.isMobile&&n instanceof Dt.TFile&&a&&i==="sidebar-context-menu"&&bc(n)){let o=this.getKanbanViews(Ze(a.view.containerEl)),s=!1;for(let u of o)if(u.file===n){u.onPaneMenu(r,"more-options",!1),s=!0;break}if(!s){r.addItem(u=>{u.setTitle(L("Open as kanban board")).setIcon(Ua).setSection("pane").onClick(()=>{this.kanbanFileModes[a.id||n.path]=yn,this.setKanbanView(a)})});return}}(a==null?void 0:a.view)instanceof Dt.MarkdownView&&n instanceof Dt.TFile&&i==="pane-more-options"&&bc(n)&&r.addItem(o=>{o.setTitle(L("Open as kanban board")).setIcon(Ua).setSection("pane").onClick(()=>{this.kanbanFileModes[a.id||n.path]=yn,this.setKanbanView(a)})})})),this.registerEvent(app.vault.on("rename",(r,n)=>{app.workspace.getLeavesOfType(yn).forEach(a=>{a.view.handleRename(r.path,n)})}));let t=(0,Dt.debounce)(r=>{this.stateManagers.forEach(n=>{n.file!==r&&n.onFileMetadataChange()})},2e3,!0);this.registerEvent(app.vault.on("modify",r=>{r instanceof Dt.TFile&&t(r)})),this.registerEvent(app.metadataCache.on("changed",r=>{t(r)})),this.registerEvent(app.metadataCache.on("dataview:metadata-change",(r,n)=>{t(n)})),this.registerEvent(app.metadataCache.on("dataview:api-ready",()=>{this.stateManagers.forEach(r=>{r.forceRefresh()})})),app.workspace.registerHoverLinkSource(gn,{display:"Kanban",defaultMod:!0})}registerCommands(){this.addCommand({id:"create-new-kanban-board",name:L("Create new board"),callback:()=>this.newKanban()}),this.addCommand({id:"archive-completed-cards",name:L("Archive completed cards in active board"),checkCallback:t=>{let r=app.workspace.getActiveViewOfType(tr);if(!r)return!1;if(t)return!0;this.stateManagers.get(r.file).archiveCompletedCards()}}),this.addCommand({id:"toggle-kanban-view",name:L("Toggle between Kanban and markdown mode"),checkCallback:t=>{let r=app.workspace.getActiveFile();if(!r)return!1;let n=app.metadataCache.getFileCache(r),i=!!(n==null?void 0:n.frontmatter)&&!!n.frontmatter[gn];if(t)return i;let a=app.workspace.getActiveViewOfType(tr);if(a)this.kanbanFileModes[a.leaf.id||r.path]="markdown",this.setMarkdownView(a.leaf);else if(i){let o=app.workspace.getActiveViewOfType(Dt.MarkdownView);o&&(this.kanbanFileModes[o.leaf.id||r.path]=yn,this.setKanbanView(o.leaf))}}}),this.addCommand({id:"convert-to-kanban",name:L("Convert empty note to Kanban"),checkCallback:t=>{let r=app.workspace.getActiveViewOfType(Dt.MarkdownView);if(!r)return!1;let n=r.file.stat.size===0;if(t)return n;n&&app.vault.modify(r.file,Td).then(()=>{this.setKanbanView(r.leaf)}).catch(i=>console.error(i))}}),this.addCommand({id:"add-kanban-lane",name:L("Add a list"),checkCallback:t=>{let r=app.workspace.getActiveViewOfType(tr);if(t)return r&&r instanceof tr;r&&r instanceof tr&&r.emitter.emit("showLaneForm",void 0)}})}registerMonkeyPatches(){let t=this;app.workspace.onLayoutReady(()=>{this.register(Il(app.commands,{executeCommand(r){return function(n){let i=app.workspace.getActiveViewOfType(tr);return i&&(n==null?void 0:n.id)&&i.emitter.emit("hotkey",n.id),r.call(this,n)}}}))}),this.register(Il(Dt.WorkspaceLeaf.prototype,{detach(r){return function(){var i;let n=(i=this.view)==null?void 0:i.getState();return(n==null?void 0:n.file)&&t.kanbanFileModes[this.id||n.file]&&delete t.kanbanFileModes[this.id||n.file],r.apply(this)}},setViewState(r){return function(n,...i){var a;if(t._loaded&&n.type==="markdown"&&((a=n.state)==null?void 0:a.file)&&t.kanbanFileModes[this.id||n.state.file]!=="markdown"){let o=t.app.metadataCache.getCache(n.state.file);if((o==null?void 0:o.frontmatter)&&o.frontmatter[gn]){let s={...n,type:yn};return t.kanbanFileModes[n.state.file]=yn,r.apply(this,[s,...i])}}return r.apply(this,[n,...i])}}}))}};0&&(module.exports={}); /*! * Fuse.js v3.4.5 - Lightweight fuzzy-search (http://fusejs.io) * diff --git a/notes/.obsidian/plugins/obsidian-kanban/manifest.json b/notes/.obsidian/plugins/obsidian-kanban/manifest.json index d52e593..da790ea 100644 --- a/notes/.obsidian/plugins/obsidian-kanban/manifest.json +++ b/notes/.obsidian/plugins/obsidian-kanban/manifest.json @@ -1,8 +1,8 @@ { "id": "obsidian-kanban", "name": "Kanban", - "version": "1.3.20", - "minAppVersion": "0.15.3", + "version": "1.5.1", + "minAppVersion": "1.0.0", "description": "Create markdown-backed Kanban boards in Obsidian.", "author": "mgmeyers", "authorUrl": "https://github.com/mgmeyers/obsidian-kanban", diff --git a/notes/.obsidian/plugins/obsidian-kanban/styles.css b/notes/.obsidian/plugins/obsidian-kanban/styles.css index 66ad646..304274d 100644 --- a/notes/.obsidian/plugins/obsidian-kanban/styles.css +++ b/notes/.obsidian/plugins/obsidian-kanban/styles.css @@ -1 +1 @@ -.choices{position:relative;margin-bottom:24px;font-size:16px}.choices:focus{outline:none}.choices:last-child{margin-bottom:0}.choices.is-disabled .choices__inner,.choices.is-disabled .choices__input{background-color:#eaeaea;cursor:not-allowed;-webkit-user-select:none;-ms-user-select:none;user-select:none}.choices.is-disabled .choices__item{cursor:not-allowed}.choices [hidden]{display:none!important}.choices[data-type*=select-one]{cursor:pointer}.choices[data-type*=select-one] .choices__inner{padding-bottom:7.5px}.choices[data-type*=select-one] .choices__input{display:block;width:100%;padding:10px;border-bottom:1px solid #dddddd;background-color:#fff;margin:0}.choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==);padding:0;background-size:8px;position:absolute;top:50%;right:0;margin-top:-10px;margin-right:25px;height:20px;width:20px;border-radius:10em;opacity:.5}.choices[data-type*=select-one] .choices__button:hover,.choices[data-type*=select-one] .choices__button:focus{opacity:1}.choices[data-type*=select-one] .choices__button:focus{box-shadow:0 0 0 2px #00bcd4}.choices[data-type*=select-one] .choices__item[data-value=""] .choices__button{display:none}.choices[data-type*=select-one]:after{content:"";height:0;width:0;border-style:solid;border-color:#333333 transparent transparent transparent;border-width:5px;position:absolute;right:11.5px;top:50%;margin-top:-2.5px;pointer-events:none}.choices[data-type*=select-one].is-open:after{border-color:transparent transparent #333333 transparent;margin-top:-7.5px}.choices[data-type*=select-one][dir=rtl]:after{left:11.5px;right:auto}.choices[data-type*=select-one][dir=rtl] .choices__button{right:auto;left:0;margin-left:25px;margin-right:0}.choices[data-type*=select-multiple] .choices__inner,.choices[data-type*=text] .choices__inner{cursor:text}.choices[data-type*=select-multiple] .choices__button,.choices[data-type*=text] .choices__button{position:relative;display:inline-block;margin:0 -4px 0 8px;padding-left:16px;border-left:1px solid #008fa1;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==);background-size:8px;width:8px;line-height:1;opacity:.75;border-radius:0}.choices[data-type*=select-multiple] .choices__button:hover,.choices[data-type*=select-multiple] .choices__button:focus,.choices[data-type*=text] .choices__button:hover,.choices[data-type*=text] .choices__button:focus{opacity:1}.choices__inner{display:inline-block;vertical-align:top;width:100%;background-color:#f9f9f9;padding:7.5px 7.5px 3.75px;border:1px solid #dddddd;border-radius:2.5px;font-size:14px;min-height:44px;overflow:hidden}.is-focused .choices__inner,.is-open .choices__inner{border-color:#b7b7b7}.is-open .choices__inner{border-radius:2.5px 2.5px 0 0}.is-flipped.is-open .choices__inner{border-radius:0 0 2.5px 2.5px}.choices__list{margin:0;padding-left:0;list-style:none}.choices__list--single{display:inline-block;padding:4px 16px 4px 4px;width:100%}[dir=rtl] .choices__list--single{padding-right:4px;padding-left:16px}.choices__list--single .choices__item{width:100%}.choices__list--multiple{display:inline}.choices__list--multiple .choices__item{display:inline-block;vertical-align:middle;border-radius:20px;padding:4px 10px;font-size:12px;font-weight:500;margin-right:3.75px;margin-bottom:3.75px;background-color:#00bcd4;border:1px solid #00a5bb;color:#fff;word-break:break-all;box-sizing:border-box}.choices__list--multiple .choices__item[data-deletable]{padding-right:5px}[dir=rtl] .choices__list--multiple .choices__item{margin-right:0;margin-left:3.75px}.choices__list--multiple .choices__item.is-highlighted{background-color:#00a5bb;border:1px solid #008fa1}.is-disabled .choices__list--multiple .choices__item{background-color:#aaa;border:1px solid #919191}.choices__list--dropdown{visibility:hidden;z-index:1;position:absolute;width:100%;background-color:#fff;border:1px solid #dddddd;top:100%;margin-top:-1px;border-bottom-left-radius:2.5px;border-bottom-right-radius:2.5px;overflow:hidden;word-break:break-all;will-change:visibility}.choices__list--dropdown.is-active{visibility:visible}.is-open .choices__list--dropdown{border-color:#b7b7b7}.is-flipped .choices__list--dropdown{top:auto;bottom:100%;margin-top:0;margin-bottom:-1px;border-radius:.25rem .25rem 0 0}.choices__list--dropdown .choices__list{position:relative;max-height:300px;overflow:auto;-webkit-overflow-scrolling:touch;will-change:scroll-position}.choices__list--dropdown .choices__item{position:relative;padding:10px;font-size:14px}[dir=rtl] .choices__list--dropdown .choices__item{text-align:right}@media (min-width: 640px){.choices__list--dropdown .choices__item--selectable{padding-right:100px}.choices__list--dropdown .choices__item--selectable:after{content:attr(data-select-text);font-size:12px;opacity:0;position:absolute;right:10px;top:50%;transform:translateY(-50%)}[dir=rtl] .choices__list--dropdown .choices__item--selectable{text-align:right;padding-left:100px;padding-right:10px}[dir=rtl] .choices__list--dropdown .choices__item--selectable:after{right:auto;left:10px}}.choices__list--dropdown .choices__item--selectable.is-highlighted{background-color:#f2f2f2}.choices__list--dropdown .choices__item--selectable.is-highlighted:after{opacity:.5}.choices__item{cursor:default}.choices__item--selectable{cursor:pointer}.choices__item--disabled{cursor:not-allowed;-webkit-user-select:none;-ms-user-select:none;user-select:none;opacity:.5}.choices__heading{font-weight:600;font-size:12px;padding:10px;border-bottom:1px solid #f7f7f7;color:gray}.choices__button{text-indent:-9999px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background-color:transparent;background-repeat:no-repeat;background-position:center;cursor:pointer}.choices__button:focus{outline:none}.choices__input{display:inline-block;vertical-align:baseline;background-color:#f9f9f9;font-size:14px;margin-bottom:5px;border:0;border-radius:0;max-width:100%;padding:4px 0 4px 2px}.choices__input:focus{outline:0}[dir=rtl] .choices__input{padding-right:2px;padding-left:0}.choices__placeholder{opacity:.5}.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,.08);box-shadow:1px 0 #e6e6e6,-1px 0 #e6e6e6,0 1px #e6e6e6,0 -1px #e6e6e6,0 3px 13px #00000014}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1);animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none!important;box-shadow:none!important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 #e6e6e6,5px 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:"";height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:#000000e6;fill:#000000e6;height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:#000000e6;fill:#000000e6}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:#00000080}.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate(0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\fffd;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:#000000e6}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:#000000e6}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:#00000080;background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:#0000008a;line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate(0);opacity:1}.dayContainer+.dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 #e6e6e6,5px 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:#3939394d;background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:#3939391a}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 #569ff7,5px 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:#3939394d;background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translateY(-20px)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate(0)}}@keyframes fpFadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translateY(-20px)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate(0)}}.workspace-leaf-content[data-type=kanban] .view-content{padding:0}.kanban-plugin{--lane-width: 272px}.kanban-plugin{contain:content;background-color:var(--background-secondary-alt);height:100%;width:100%;position:relative;display:flex;flex-direction:column}.kanban-plugin.something-is-dragging *{pointer-events:none}.kanban-plugin__item button,.kanban-plugin__lane button,.kanban-plugin button{line-height:1;padding:10px 12px;margin:0;transition:.1s color,.1s background-color}.kanban-plugin__search-wrapper{width:100%;position:sticky;top:0;left:0;padding:10px 13px;display:flex;justify-content:flex-end;align-items:center;z-index:2;background-color:var(--background-secondary);border-bottom:1px solid var(--background-modifier-border)}button.kanban-plugin__search-cancel-button{display:flex;line-height:1;padding:6px;border:1px solid var(--background-modifier-border);background:var(--background-secondary-alt);color:var(--text-muted);margin:0 0 0 5px;font-size:16px}button.kanban-plugin__search-cancel-button .kanban-plugin__icon{display:flex}.kanban-plugin__icon{display:inline-block;line-height:1}.kanban-plugin__icon>svg{width:1em;height:1em}.kanban-plugin__board{display:flex;width:100%;height:100%}.kanban-plugin__board>div{display:flex;align-items:flex-start;justify-content:flex-start;padding:1rem;width:fit-content;height:100%}.kanban-plugin__board.is-adding-lane>div{padding-right:calc(250px + 1rem)}.kanban-plugin__lane-wrapper{display:flex;flex-shrink:0;margin-right:10px;max-height:100%;width:var(--lane-width)}.kanban-plugin__lane{width:100%;display:flex;flex-direction:column;background-color:var(--background-secondary);border-radius:6px;border:1px solid var(--background-modifier-border)}.kanban-plugin__placeholder.kanban-plugin__lane-placeholder{height:100%;flex-grow:1;margin-right:5px}.kanban-plugin__lane.is-hidden{display:none}.kanban-plugin__lane button{padding:8px 10px}.kanban-plugin__lane-form-wrapper{position:absolute;top:1rem;right:1rem;width:250px;background-color:var(--background-secondary);border-radius:6px;border:2px solid rgba(var(--interactive-accent-rgb),.7);z-index:var(--layer-popover);box-shadow:0 .5px 1px .5px #0000001a,0 2px 10px #0000001a,0 10px 20px #0000001a}.kanban-plugin__lane-input-wrapper{padding:10px}.kanban-plugin__item-input-actions,.kanban-plugin__lane-input-actions{display:flex;align-items:flex-start;justify-content:flex-start;padding:0 10px 10px}.kanban-plugin__item-input-actions button,.kanban-plugin__lane-input-actions button{display:block;margin-right:5px}.kanban-plugin__item-action-add,.kanban-plugin__lane-action-add{background-color:var(--interactive-accent);color:var(--text-on-accent)}.kanban-plugin__item-action-add:hover,.kanban-plugin__lane-action-add:hover{background-color:var(--interactive-accent-hover)}.kanban-plugin__lane-header-wrapper{padding:10px 11px;display:flex;align-items:center;flex-shrink:0;flex-grow:0;border-bottom:1px solid var(--background-modifier-border)}.will-prepend .kanban-plugin__lane-header-wrapper{border-bottom:none}.kanban-plugin__lane-grip{cursor:grab;flex-grow:0;margin-right:5px;color:var(--text-faint)}.kanban-plugin__lane-grip>svg{display:block;height:1rem}.kanban-plugin__lane-title{font-weight:600;font-size:.875rem;flex-grow:1;width:100%;display:flex;flex-direction:column}.kanban-plugin__lane-title-text{flex-grow:1}div.kanban-plugin__markdown-preview-view>div>*{overflow-wrap:anywhere}div.kanban-plugin__lane-title-count{background-color:var(--background-secondary-alt);border-radius:3px;color:var(--text-muted);display:block;font-size:13px;line-height:1;padding:4px;margin-left:5px}div.kanban-plugin__lane-title-count.wip-exceeded{font-weight:bold;color:var(--text-normal);background-color:rgba(var(--background-modifier-error-rgb),.25)}.kanban-plugin__item button.kanban-plugin__item-prefix-button,.kanban-plugin__item button.kanban-plugin__item-postfix-button,.kanban-plugin__lane button.kanban-plugin__lane-settings-button{font-size:13px;line-height:1;color:var(--text-muted);padding:4px;display:flex;margin-left:5px;background-color:transparent;margin-right:-4px}.kanban-plugin__item button.kanban-plugin__item-prefix-button{margin:4px 7px 4px 0;padding:0}.kanban-plugin__item button.kanban-plugin__item-prefix-button.is-enabled,.kanban-plugin__item button.kanban-plugin__item-postfix-button.is-enabled,.kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled{color:var(--text-accent)}.kanban-plugin__item button.kanban-plugin__item-prefix-button:hover,.kanban-plugin__item button.kanban-plugin__item-postfix-button:hover,.kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{background-color:transparent;color:var(--text-normal)}.kanban-plugin__lane-action-wrapper,.kanban-plugin__item-edit-archive-button,.kanban-plugin__item-settings-actions .kanban-plugin__icon,.kanban-plugin__item-edit-archive-button>.kanban-plugin__icon,.kanban-plugin__item-prefix-button>.kanban-plugin__icon,.kanban-plugin__item-postfix-button>.kanban-plugin__icon,.kanban-plugin__lane-settings-button>.kanban-plugin__icon{display:flex}.kanban-plugin__lane-settings-button-wrapper{display:flex}button.kanban-plugin__lane-settings-button+button.kanban-plugin__lane-settings-button{margin-left:2px}.kanban-plugin__lane-settings-button svg{width:1em;height:1em}.kanban-plugin__lane-items-wrapper{margin:4px;height:100%}.kanban-plugin__lane-items{padding:4px;margin:0 4px;display:flex;flex-direction:column}.kanban-plugin__lane-items>.kanban-plugin__placeholder{flex-grow:1}.kanban-plugin__lane-items>.kanban-plugin__placeholder:only-child{height:2.55em;border:3px dashed rgba(var(--text-muted-rgb),.1);margin-bottom:4px;border-radius:6px;transition:border .2s ease}.is-sorting .kanban-plugin__lane-items>.kanban-plugin__placeholder:only-child{border-color:rgba(var(--interactive-accent-rgb),.6)}.kanban-plugin__lane-items>div{margin-top:4px}.kanban-plugin__item-button-wrapper{border-top:1px solid var(--background-modifier-border);padding:8px;flex-shrink:0;flex-grow:0}.kanban-plugin__lane-header-wrapper+.kanban-plugin__item-button-wrapper{border-top:none;border-bottom:1px solid var(--background-modifier-border);padding:4px 8px 8px}.kanban-plugin__item-button-wrapper>button{text-align:left;width:100%}.kanban-plugin__item-form{border-top:1px solid var(--background-modifier-border);padding:8px}.kanban-plugin__lane-header-wrapper+.kanban-plugin__item-form{border-top:none;border-bottom:1px solid var(--background-modifier-border);padding:4px 8px 8px}.kanban-plugin__item-input-wrapper{display:flex;flex-direction:column}.kanban-plugin button.kanban-plugin__item-submit-button{background-color:var(--background-secondary-alt);flex-grow:0;flex-shrink:1;width:auto;margin-top:5px;line-height:1;font-size:14px}button.kanban-plugin__new-item-button{background-color:transparent;color:var(--text-muted)}.kanban-plugin__new-item-button:hover{color:var(--text-on-accent);background-color:var(--interactive-accent-hover)}.kanban-plugin__item{font-size:.875rem;border:1px solid var(--background-modifier-border);border-radius:6px;overflow:hidden;transition:.3s opacity cubic-bezier(.25,1,.5,1)}.kanban-plugin__drag-container>.kanban-plugin__item-wrapper .kanban-plugin__item{border-color:var(--interactive-accent);box-shadow:0 15px 25px #0003,0 0 0 2px rgba(var(--interactive-accent-rgb),.8)}.kanban-plugin__item.is-search-hit{box-shadow:0 15px 25px #0003,0 0 0 1px var(--background-modifier-border)}.kanban-plugin__item.is-search-miss{font-size:.75rem;opacity:.5}.kanban-plugin__item.is-search-miss .kanban-plugin__item-metadata-wrapper{display:none}.kanban-plugin__item-content-wrapper{background:var(--background-primary)}.kanban-plugin__item-title-wrapper{background:var(--background-primary);display:flex;padding:6px 8px}.kanban-plugin__item-title-wrapper:not(:only-child){border-bottom:1px solid var(--background-modifier-border)}.kanban-plugin__item-title{width:100%;line-height:1.5;overflow:hidden}.kanban-plugin__markdown-preview-view{font-family:var(--font-text, var(--default-font));font-size:.875rem;padding:unset;width:unset;height:unset;position:unset;overflow-y:unset;overflow-wrap:unset;color:unset;user-select:unset;-webkit-user-select:unset}.kanban-plugin__markdown-preview-view p,.kanban-plugin__markdown-preview-view ul,.kanban-plugin__markdown-preview-view ol,.kanban-plugin__markdown-preview-view blockquote{margin-block-start:.66em;margin-block-end:.66em}.kanban-plugin__markdown-preview-view blockquote{margin-inline-start:0;margin-inline-end:0}.kanban-plugin__markdown-preview-view ul ol,.kanban-plugin__markdown-preview-view ol ul,.kanban-plugin__markdown-preview-view ul ul,.kanban-plugin__markdown-preview-view ol ol{margin-block-start:0em;margin-block-end:0em}.kanban-plugin__markdown-preview-view>div>*{overflow-x:auto;overflow-wrap:break-word}.kanban-plugin__markdown-preview-view>div>*:first-child,.kanban-plugin__markdown-preview-view>div>.frontmatter-container+*{margin-top:0}.kanban-plugin__markdown-preview-view>div>*:last-child{margin-bottom:0}.kanban-plugin__markdown-preview-view ul,.kanban-plugin__markdown-preview-view ol{padding-inline-start:24px}.kanban-plugin__meta-value .kanban-plugin__markdown-preview-view p,.kanban-plugin__meta-value .kanban-plugin__markdown-preview-view{font-size:inherit;color:inherit;line-height:inherit}.kanban-plugin__markdown-preview-view.inline p,.kanban-plugin__markdown-preview-view.inline{display:inline-block}.kanban-plugin__markdown-preview-view .frontmatter,.kanban-plugin__markdown-preview-view .frontmatter-container{display:none}.kanban-plugin__markdown-preview-view .file-link span{display:inline-flex;align-items:center;justify-content:center;color:var(--text-faint);margin-left:2px;position:relative;top:3px}.kanban-plugin__embed-link-wrapper{padding:2px;float:right}.kanban-plugin__item-metadata-wrapper:not(:empty){background-color:var(--background-primary-alt);padding:6px 8px}.kanban-plugin__item-metadata:not(:empty){padding-top:5px;font-size:12px;font-weight:500;color:var(--text-muted)}.kanban-plugin__item-metadata>span{display:block}.kanban-plugin__item-metadata .is-button{cursor:pointer}.kanban-plugin__item-metadata .is-button:hover{color:var(--text-normal)}.kanban-plugin__item-metadata-date-relative:first-letter{text-transform:uppercase}.kanban-plugin__item-metadata a{text-decoration:none}.kanban-plugin__item-metadata-time:before{content:" \2022 "}.kanban-plugin__item-metadata-time.is-button:hover:before{color:var(--text-muted)}.kanban-plugin__item-metadata-date-wrapper{padding-top:2px}.kanban-plugin__item-tags:not(:empty){padding-top:2px}.kanban-plugin__item-tag{display:inline-block;margin-right:4px}.kanban-plugin__item-tags .kanban-plugin__item-tag{background-color:var( --tag-background-color, rgba(var(--interactive-accent-rgb), .1) );color:var(--tag-color, var(--text-accent));padding:1px 4px;border-radius:6px;margin:3px 3px 0 0}.kanban-plugin__item-tag.is-search-match,.kanban-plugin__item-tags .kanban-plugin__item-tag.is-search-match{background-color:var(--text-highlight-bg);color:var(--text-normal)}.kanban-plugin__meta-table{width:100%;margin:0;line-height:1.5;font-size:.75rem}.kanban-plugin__meta-table td{vertical-align:top;padding:3px 0;width:10%}.kanban-plugin__meta-table td+td{width:90%}.kanban-plugin__meta-table td:only-child{width:100%}.kanban-plugin__meta-table td.kanban-plugin__meta-key{white-space:nowrap;padding-right:5px;color:var(--text-muted)}.kanban-plugin__meta-table td.kanban-plugin__meta-key.is-search-match>span{background-color:var(--text-highlight-bg);color:var(--text-normal)}.kanban-plugin__meta-value{white-space:pre-wrap;display:flex}.kanban-plugin__meta-value>.is-search-match,.kanban-plugin__meta-value.is-search-match{background-color:var(--text-highlight-bg);color:var(--text-normal)}.kanban-plugin__item-prefix-button-wrapper,.kanban-plugin__item-postfix-button-wrapper{display:flex;flex-grow:0;flex-shrink:0}.kanban-plugin__item-prefix-button-wrapper{flex-direction:column}.kanban-plugin__item-prefix-button-wrapper input[type=checkbox]{margin:4px 7px 4px 0;width:15px;height:15px;filter:hue-rotate(42deg)}.kanban-plugin__item-prefix-button-wrapper input[type=checkbox]+button{margin-top:10px}button.kanban-plugin__item-postfix-button{visibility:hidden;opacity:0;transition:.1s opacity;display:flex;align-self:flex-start}button.kanban-plugin__item-postfix-button.is-enabled,.kanban-plugin__item:hover button.kanban-plugin__item-postfix-button{visibility:visible;opacity:1}.kanban-plugin__item-settings-actions{padding:5px;display:flex}.kanban-plugin__item-settings-actions>button{line-height:1;display:flex;align-items:center;justify-content:center;font-size:.75rem;width:100%}.kanban-plugin__lane-action-wrapper button>.kanban-plugin__icon,.kanban-plugin__item-settings-actions button>.kanban-plugin__icon{margin-right:5px}.kanban-plugin__item-settings-actions>button:first-child,.kanban-plugin__lane-action-wrapper>button:first-child{margin-right:2.5px}.kanban-plugin__item-settings-actions>button:last-child,.kanban-plugin__lane-action-wrapper>button:last-child{margin-left:2.5px}.kanban-plugin__archive-lane-button,.kanban-plugin__item-button-archive{color:var(--text-muted);border:1px solid var(--background-modifier-border)}.kanban-plugin__archive-lane-button:hover,.kanban-plugin__item-button-archive:hover{color:var(--text-normal)}.kanban-plugin__item-button-delete{border:1px solid rgba(var(--background-modifier-error-rgb),.15);color:rgba(var(--background-modifier-error-rgb),1)}.kanban-plugin__item-button-delete:hover{background-color:rgba(var(--background-modifier-error-rgb),.2);color:var(--text-error)}.theme-dark .kanban-plugin__item-button-delete{background-color:transparent;border:1px solid rgba(var(--background-modifier-error-rgb),1);color:var(--text-error)}.theme-dark .kanban-plugin__item-button-delete:hover{background-color:rgba(var(--background-modifier-error-rgb),1);color:var(--text-error)}.kanban-plugin__checkbox-wrapper{border-top:1px solid var(--background-modifier-border);border-bottom:1px solid var(--background-modifier-border);padding:10px;margin-bottom:10px;display:flex;align-items:center}.kanban-plugin__checkbox-wrapper .checkbox-container{flex-shrink:0;flex-grow:0;margin-left:15px}.kanban-plugin__checkbox-label{font-size:.8125rem;line-height:1.4}.kanban-plugin__lane-setting-wrapper>div{border-top:none;border-bottom:none;padding:10px 15px;margin-bottom:0}.kanban-plugin__lane-setting-wrapper>div:last-child{border-bottom:1px solid var(--background-modifier-border);margin-bottom:10px}.kanban-plugin__action-confirm-wrapper{border:1px solid rgba(var(--background-modifier-error-rgb),.2);background-color:rgba(var(--background-modifier-error-rgb),.1);border-radius:4px;padding:10px;margin:5px 10px}.theme-dark .kanban-plugin__action-confirm-wrapper{border:1px solid rgba(var(--background-modifier-error-rgb),1)}.kanban-plugin__delete-lane-button,.kanban-plugin__archive-lane-button{display:flex;align-items:center;justify-content:center;font-size:.75rem;width:50%}.kanban-plugin__delete-lane-button{border:1px solid rgba(var(--background-modifier-error-rgb),.15);color:rgba(var(--background-modifier-error-rgb),1)}.kanban-plugin__delete-lane-button:hover{background-color:rgba(var(--background-modifier-error-rgb),.2);color:var(--text-error)}.theme-dark .kanban-plugin__delete-lane-button{background-color:transparent;border:1px solid rgba(var(--background-modifier-error-rgb),1);color:var(--text-error)}.theme-dark .kanban-plugin__delete-lane-button:hover{background-color:rgba(var(--background-modifier-error-rgb),1);color:var(--text-error)}.kanban-plugin__action-confirm-text{font-size:.875rem;color:var(--text-error);margin-bottom:10px;line-height:1.4}button.kanban-plugin__confirm-action-button{border:1px solid rgba(var(--background-modifier-error-rgb),.2);margin-right:5px;color:var(--text-error)}button.kanban-plugin__confirm-action-button:hover{background-color:rgba(var(--background-modifier-error-rgb),.5)}button.kanban-plugin__cancel-action-button{border:1px solid var(--background-modifier-border)}.kanban-plugin__grow-wrap{width:100%;display:grid}.kanban-plugin__grow-wrap:after{content:attr(data-replicated-value) " ";white-space:pre-wrap;visibility:hidden}.kanban-plugin__grow-wrap>textarea{resize:none;overflow:hidden;tab-size:2}.kanban-plugin__grow-wrap>textarea:focus{border-color:var(--interactive-accent)}.kanban-plugin__grow-wrap>textarea,.kanban-plugin__grow-wrap:after{border:1px solid var(--background-modifier-border);padding:5px 7px;font:inherit;line-height:1.5;grid-area:1 / 1 / 2 / 2;font-size:.875rem;overflow:hidden;overflow-wrap:break-word;white-space:pre-wrap}.kanban-plugin__autocomplete{font-size:.875rem;border:1px solid var(--background-modifier-border);background-color:var(--background-primary);list-style:none;padding:0;margin:0;min-width:20ch;max-width:40ch;max-height:200px;border-radius:6px;box-shadow:0 15px 25px #0003;overflow-x:hidden;overflow-y:auto}.kanban-plugin__autocomplete li{margin:0}.kanban-plugin__autocomplete li em{opacity:.6}.kanban-plugin .textcomplete-footer,.kanban-plugin .textcomplete-header{display:none}.kanban-plugin__autocomplete-item-active,.kanban-plugin__autocomplete-item{border-top:1px solid var(--background-modifier-border);padding:4px 6px;cursor:pointer}.kanban-plugin__autocomplete .textcomplete-header+.kanban-plugin__autocomplete-item,.kanban-plugin__autocomplete .textcomplete-header+.kanban-plugin__autocomplete-item-active{border-top:none}.kanban-plugin__autocomplete-item:hover,.kanban-plugin__autocomplete-item-active{color:var(--text-on-accent);background-color:var(--interactive-accent-hover)}.kanban-plugin__file-suggestion-wrapper{display:flex;line-height:1.2}.kanban-plugin__file-suggestion-icon{flex-shrink:0;flex-grow:0;padding-right:4px}.kanban-plugin__file-suggestion-subtitle{font-size:.875em;color:var(--text-muted)}.kanban-plugin__autocomplete-item:hover .kanban-plugin__file-suggestion-subtitle,.kanban-plugin__autocomplete-item-active .kanban-plugin__file-suggestion-subtitle{color:var(--text-on-accent)}.modal.kanban-plugin__board-settings-modal{max-height:90vh;padding:0;display:flex;flex-direction:column}.modal.kanban-plugin__board-settings-modal .modal-content{padding:30px 50px;height:100%;overflow-y:auto;overflow-x:hidden;margin:0}.kanban-plugin__board-settings-modal .setting-item{flex-wrap:wrap;justify-content:space-between}.kanban-plugin__board-settings-modal .setting-item-info{max-width:400px;min-width:300px;width:50%}.kanban-plugin__board-settings-modal .setting-item-control{min-width:300px;flex-shrink:0}.kanban-plugin__board-settings-modal .choices{width:100%;text-align:left}.kanban-plugin__board-settings-modal .choices[data-type*=select-one] .choices__inner{background-color:var(--background-primary);border-color:var(--background-modifier-border);padding:0;min-height:0}.kanban-plugin__board-settings-modal .choices[data-type*=select-one] .choices__input{background-color:var(--background-primary);border-bottom-color:var(--background-modifier-border);font-size:14px}.kanban-plugin__board-settings-modal .choices__input{border-radius:0;border-top:none;border-left:none;border-right:none}.kanban-plugin__board-settings-modal .choices__list[role=listbox]{overflow-x:hidden}.kanban-plugin__board-settings-modal .choices__list--single{padding:4px 20px 4px 6px}.kanban-plugin__board-settings-modal .is-open .choices__list--dropdown,.kanban-plugin__board-settings-modal .choices__list--dropdown{background-color:var(--background-primary);border-color:var(--background-modifier-border);word-break:normal;max-height:200px;display:flex;flex-direction:column}.kanban-plugin__board-settings-modal .choices__list--dropdown .choices__item--selectable:after{display:none}.kanban-plugin__board-settings-modal .choices__list--dropdown .choices__item--selectable{padding:4px 6px}.kanban-plugin__board-settings-modal .choices__list--dropdown .choices__item.is-highlighted{background-color:var(--background-primary-alt)}.kanban-plugin__board-settings-modal .choices__placeholder{opacity:1;color:var(--text-muted)}.kanban-plugin__board-settings-modal .error{border-color:var(--background-modifier-error-hover)!important}.kanban-plugin__date-picker{position:absolute;z-index:var(--layer-popover);--cell-size: 2.4em}.kanban-plugin__date-picker .flatpickr-input{width:0;height:0;opacity:0;border:none;padding:0;display:block;margin-bottom:-1px}.kanban-plugin__date-picker .flatpickr-current-month{color:var(--text-normal);font-weight:600;font-size:inherit;width:100%;position:static;height:auto;display:flex;align-items:center;justify-content:center;padding:0}.kanban-plugin__date-picker .flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:var(--text-normal)}.kanban-plugin__date-picker .flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:var(--text-normal)}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{fill:currentColor}.kanban-plugin__date-picker .flatpickr-calendar{font-size:13px;overflow:hidden;background-color:var(--background-primary);width:calc(var(--cell-size) * 7 + 8px);box-shadow:0 0 0 1px var(--background-modifier-border),0 15px 25px #0003}.kanban-plugin__date-picker .flatpickr-months{font-size:13px;padding:2px 2px 4px;align-items:center}.kanban-plugin__date-picker .flatpickr-months .flatpickr-current-month input.cur-year,.kanban-plugin__date-picker .flatpickr-months select{border-radius:4px;padding:4px}.kanban-plugin__date-picker .flatpickr-months .numInputWrapper{border-radius:4px}.kanban-plugin__date-picker .flatpickr-months .flatpickr-month{width:100%;height:auto}.kanban-plugin__date-picker .flatpickr-months .flatpickr-prev-month,.kanban-plugin__date-picker .flatpickr-months .flatpickr-next-month{color:var(--text-normal);fill:currentColor;border-radius:4px;display:flex;align-items:center;justify-content:center;line-height:1;height:auto;padding:5px;position:static;flex-shrink:0}.kanban-plugin__date-picker .flatpickr-months .flatpickr-prev-month:hover,.kanban-plugin__date-picker .flatpickr-months .flatpickr-next-month:hover{background-color:var(--background-primary-alt);color:var(--text-normal)}.kanban-plugin__date-picker .flatpickr-months .flatpickr-prev-month:hover svg,.kanban-plugin__date-picker .flatpickr-months .flatpickr-next-month:hover svg{fill:currentColor}.kanban-plugin__date-picker .flatpickr-current-month .flatpickr-monthDropdown-months{color:var(--text-normal);font-weight:inherit;margin-right:5px}.kanban-plugin__date-picker .flatpickr-current-month input.cur-year{color:var(--text-normal);font-weight:inherit}.kanban-plugin__date-picker .flatpickr-weekdays{height:auto;padding:8px 0 12px}.kanban-plugin__date-picker span.flatpickr-weekday{font-weight:400;color:var(--text-muted)}.kanban-plugin__date-picker .flatpickr-innerContainer{padding:4px}.kanban-plugin__date-picker .flatpickr-day{color:var(--text-normal);display:inline-flex;align-items:center;justify-content:center;width:var(--cell-size);height:var(--cell-size);line-height:1;border-radius:6px}.kanban-plugin__date-picker .flatpickr-day.today{border-color:var(--interactive-accent)}.kanban-plugin__date-picker .flatpickr-day.today:hover{color:var(--text-normal);border-color:var(--interactive-accent);background-color:var(--background-primary-alt)}.kanban-plugin__date-picker .flatpickr-day.selected{border-color:var(--interactive-accent);background-color:var(--interactive-accent);color:var(--text-on-accent)}.kanban-plugin__date-picker .flatpickr-day.selected:hover{border-color:var(--interactive-accent);background-color:var(--interactive-accent)}.kanban-plugin__date-picker .flatpickr-days{width:calc(var(--cell-size) * 7)}.kanban-plugin__date-picker .dayContainer{width:calc(var(--cell-size) * 7);min-width:calc(var(--cell-size) * 7);max-width:calc(var(--cell-size) * 7)}.kanban-plugin__date-picker .flatpickr-day.inRange,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay.inRange,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay.inRange,.kanban-plugin__date-picker .flatpickr-day.today.inRange,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay.today.inRange,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay.today.inRange,.kanban-plugin__date-picker .flatpickr-day:hover,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay:hover,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay:hover,.kanban-plugin__date-picker .flatpickr-day:focus,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay:focus,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay:focus{background-color:var(--background-primary-alt);border-color:var(--background-primary-alt)}.kanban-plugin__date-picker .flatpickr-day.flatpickr-disabled,.kanban-plugin__date-picker .flatpickr-day.flatpickr-disabled:hover,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay,.kanban-plugin__date-picker .flatpickr-day.notAllowed,.kanban-plugin__date-picker .flatpickr-day.notAllowed.prevMonthDay,.kanban-plugin__date-picker .flatpickr-day.notAllowed.nextMonthDay{color:var(--text-faint)}.kanban-plugin__time-picker{position:absolute;max-height:250px;overflow:auto;border-radius:4px;border:1px solid var(--background-modifier-border);box-shadow:0 2px 8px var(--background-modifier-box-shadow);background:var(--background-primary);color:var(--text-normal);font-size:14px;z-index:var(--layer-menu)}.kanban-plugin__time-picker-item{display:flex;align-items:center;color:var(--text-muted);cursor:pointer;line-height:1;padding:6px 8px}.kanban-plugin__time-picker-check{visibility:hidden;display:inline-flex;margin-right:5px}.kanban-plugin__time-picker-item.is-hour{color:var(--text-normal);font-weight:600}.kanban-plugin__time-picker-item.is-selected .kanban-plugin__time-picker-check{visibility:visible}.kanban-plugin__time-picker-item:hover,.kanban-plugin__time-picker-item.is-selected{background:var(--background-secondary)}.kanban-plugin mark{background-color:var(--text-highlight-bg)}.kanban-plugin__draggable-setting-container{border-top:0;padding:0;flex-direction:column}.kanban-plugin__draggable-setting-container>div{width:100%;margin-right:0!important}.kanban-plugin__setting-item-wrapper{border-top:1px solid var(--background-modifier-border)}.kanban-plugin__draggable-setting-container>.kanban-plugin__placeholder{border-top:1px solid var(--background-modifier-border)}.kanban-plugin__setting-item{background-color:var(--background-secondary);width:100%;font-size:16px;display:flex;align-items:flex-start;padding:12px;color:var(--text-muted)}.kanban-plugin__drag-container .kanban-plugin__setting-item{border:1px solid rgba(var(--interactive-accent-rgb),.8);box-shadow:0 15px 25px #0003,0 0 0 2px rgba(var(--interactive-accent-rgb),.8)}.kanban-plugin__setting-controls-wrapper{flex-grow:1;flex-shrink:1}.kanban-plugin__setting-input-wrapper{display:flex;flex-wrap:wrap;margin-bottom:1rem}.kanban-plugin__setting-input-wrapper>div{margin-right:10px}.kanban-plugin__setting-toggle-wrapper>div{display:flex;align-items:center;line-height:1;margin-bottom:10px}.kanban-plugin__setting-toggle-wrapper .checkbox-container{margin-right:10px}.kanban-plugin__setting-button-wrapper{display:flex;justify-content:flex-end;flex-grow:1;flex-shrink:0;max-width:25px}.kanban-plugin__setting-button-wrapper>div{margin-left:12px}.kanban-plugin__setting-key-input-wrapper{margin:1rem 0}.kanban-plugin__setting-key-input-wrapper>input{margin-right:10px}.kanban-plugin__tag-color-input-wrapper{display:flex;flex-direction:column;flex-grow:1;gap:1rem}.kanban-plugin__add-tag-color-button{align-self:baseline;margin:0}.kanban-plugin__tag-color-input .kanban-plugin__item-tags{background-color:var(--background-primary);padding:10px;margin:0;border-radius:4px}.kanban-plugin__tag-color-input .kanban-plugin__item-tag{margin-top:0;font-size:13px;font-weight:500;line-height:1.5}.kanban-plugin__metadata-setting-desc{font-size:14px}.kanban-plugin__setting-button-spacer{visibility:hidden}.kanban-plugin__setting-item-label{font-size:12px;font-weight:bold;margin-bottom:5px}.kanban-plugin__setting-toggle-wrapper .kanban-plugin__setting-item-label{margin-bottom:0}.kanban-plugin__hitbox{border:2px dashed tomato}.kanban-plugin__placeholder{flex-grow:0;flex-shrink:0;width:0;height:0;pointer-events:none}.kanban-plugin__placeholder[data-axis=horizontal]{height:100%}.kanban-plugin__placeholder[data-axis=vertical]{width:100%}body:not(.native-scrollbars) .kanban-plugin__scroll-container::-webkit-scrollbar{background-color:transparent;width:16px;height:16px}body:not(.native-scrollbars) .kanban-plugin__scroll-container::-webkit-scrollbar-thumb{border:4px solid transparent;background-clip:content-box}.kanban-plugin__scroll-container{will-change:transform}.kanban-plugin__scroll-container.kanban-plugin__horizontal{overflow-y:hidden;overflow-x:auto}.kanban-plugin__scroll-container.kanban-plugin__vertical{overflow-y:auto;overflow-x:hidden}.kanban-plugin__drag-container{contain:layout size;z-index:10000;pointer-events:none;position:fixed;top:0;left:0}.kanban-plugin__loading{background-color:var(--background-secondary-alt);width:100%;height:100%;display:flex;justify-content:center;align-items:center}.sk-pulse{width:60px;height:60px;background-color:var(--text-faint);border-radius:100%;animation:sk-pulse 1.2s infinite cubic-bezier(.455,.03,.515,.955)}@keyframes sk-pulse{0%{transform:scale(0)}to{transform:scale(1);opacity:0}}.kanban-plugin__color-picker-wrapper{position:relative}.kanban-plugin__color-picker{position:absolute;top:-5px;left:0;transform:translateY(-100%)} +.choices{position:relative;margin-bottom:24px;font-size:16px}.choices:focus{outline:none}.choices:last-child{margin-bottom:0}.choices.is-disabled .choices__inner,.choices.is-disabled .choices__input{background-color:#eaeaea;cursor:not-allowed;-webkit-user-select:none;-ms-user-select:none;user-select:none}.choices.is-disabled .choices__item{cursor:not-allowed}.choices [hidden]{display:none!important}.choices[data-type*=select-one]{cursor:pointer}.choices[data-type*=select-one] .choices__inner{padding-bottom:7.5px}.choices[data-type*=select-one] .choices__input{display:block;width:100%;padding:10px;border-bottom:1px solid #dddddd;background-color:#fff;margin:0}.choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==);padding:0;background-size:8px;position:absolute;top:50%;right:0;margin-top:-10px;margin-right:25px;height:20px;width:20px;border-radius:10em;opacity:.5}.choices[data-type*=select-one] .choices__button:hover,.choices[data-type*=select-one] .choices__button:focus{opacity:1}.choices[data-type*=select-one] .choices__button:focus{box-shadow:0 0 0 2px #00bcd4}.choices[data-type*=select-one] .choices__item[data-value=""] .choices__button{display:none}.choices[data-type*=select-one]:after{content:"";height:0;width:0;border-style:solid;border-color:#333333 transparent transparent transparent;border-width:5px;position:absolute;right:11.5px;top:50%;margin-top:-2.5px;pointer-events:none}.choices[data-type*=select-one].is-open:after{border-color:transparent transparent #333333 transparent;margin-top:-7.5px}.choices[data-type*=select-one][dir=rtl]:after{left:11.5px;right:auto}.choices[data-type*=select-one][dir=rtl] .choices__button{right:auto;left:0;margin-left:25px;margin-right:0}.choices[data-type*=select-multiple] .choices__inner,.choices[data-type*=text] .choices__inner{cursor:text}.choices[data-type*=select-multiple] .choices__button,.choices[data-type*=text] .choices__button{position:relative;display:inline-block;margin:0 -4px 0 8px;padding-left:16px;border-left:1px solid #008fa1;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==);background-size:8px;width:8px;line-height:1;opacity:.75;border-radius:0}.choices[data-type*=select-multiple] .choices__button:hover,.choices[data-type*=select-multiple] .choices__button:focus,.choices[data-type*=text] .choices__button:hover,.choices[data-type*=text] .choices__button:focus{opacity:1}.choices__inner{display:inline-block;vertical-align:top;width:100%;background-color:#f9f9f9;padding:7.5px 7.5px 3.75px;border:1px solid #dddddd;border-radius:2.5px;font-size:14px;min-height:44px;overflow:hidden}.is-focused .choices__inner,.is-open .choices__inner{border-color:#b7b7b7}.is-open .choices__inner{border-radius:2.5px 2.5px 0 0}.is-flipped.is-open .choices__inner{border-radius:0 0 2.5px 2.5px}.choices__list{margin:0;padding-left:0;list-style:none}.choices__list--single{display:inline-block;padding:4px 16px 4px 4px;width:100%}[dir=rtl] .choices__list--single{padding-right:4px;padding-left:16px}.choices__list--single .choices__item{width:100%}.choices__list--multiple{display:inline}.choices__list--multiple .choices__item{display:inline-block;vertical-align:middle;border-radius:20px;padding:4px 10px;font-size:12px;font-weight:500;margin-right:3.75px;margin-bottom:3.75px;background-color:#00bcd4;border:1px solid #00a5bb;color:#fff;word-break:break-all;box-sizing:border-box}.choices__list--multiple .choices__item[data-deletable]{padding-right:5px}[dir=rtl] .choices__list--multiple .choices__item{margin-right:0;margin-left:3.75px}.choices__list--multiple .choices__item.is-highlighted{background-color:#00a5bb;border:1px solid #008fa1}.is-disabled .choices__list--multiple .choices__item{background-color:#aaa;border:1px solid #919191}.choices__list--dropdown{visibility:hidden;z-index:1;position:absolute;width:100%;background-color:#fff;border:1px solid #dddddd;top:100%;margin-top:-1px;border-bottom-left-radius:2.5px;border-bottom-right-radius:2.5px;overflow:hidden;word-break:break-all;will-change:visibility}.choices__list--dropdown.is-active{visibility:visible}.is-open .choices__list--dropdown{border-color:#b7b7b7}.is-flipped .choices__list--dropdown{top:auto;bottom:100%;margin-top:0;margin-bottom:-1px;border-radius:.25rem .25rem 0 0}.choices__list--dropdown .choices__list{position:relative;max-height:300px;overflow:auto;-webkit-overflow-scrolling:touch;will-change:scroll-position}.choices__list--dropdown .choices__item{position:relative;padding:10px;font-size:14px}[dir=rtl] .choices__list--dropdown .choices__item{text-align:right}@media (min-width: 640px){.choices__list--dropdown .choices__item--selectable{padding-right:100px}.choices__list--dropdown .choices__item--selectable:after{content:attr(data-select-text);font-size:12px;opacity:0;position:absolute;right:10px;top:50%;transform:translateY(-50%)}[dir=rtl] .choices__list--dropdown .choices__item--selectable{text-align:right;padding-left:100px;padding-right:10px}[dir=rtl] .choices__list--dropdown .choices__item--selectable:after{right:auto;left:10px}}.choices__list--dropdown .choices__item--selectable.is-highlighted{background-color:#f2f2f2}.choices__list--dropdown .choices__item--selectable.is-highlighted:after{opacity:.5}.choices__item{cursor:default}.choices__item--selectable{cursor:pointer}.choices__item--disabled{cursor:not-allowed;-webkit-user-select:none;-ms-user-select:none;user-select:none;opacity:.5}.choices__heading{font-weight:600;font-size:12px;padding:10px;border-bottom:1px solid #f7f7f7;color:gray}.choices__button{text-indent:-9999px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background-color:transparent;background-repeat:no-repeat;background-position:center;cursor:pointer}.choices__button:focus{outline:none}.choices__input{display:inline-block;vertical-align:baseline;background-color:#f9f9f9;font-size:14px;margin-bottom:5px;border:0;border-radius:0;max-width:100%;padding:4px 0 4px 2px}.choices__input:focus{outline:0}[dir=rtl] .choices__input{padding-right:2px;padding-left:0}.choices__placeholder{opacity:.5}.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,.08);box-shadow:1px 0 #e6e6e6,-1px 0 #e6e6e6,0 1px #e6e6e6,0 -1px #e6e6e6,0 3px 13px #00000014}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1);animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none!important;box-shadow:none!important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 #e6e6e6,5px 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:"";height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:#000000e6;fill:#000000e6;height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:#000000e6;fill:#000000e6}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:#00000080}.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate(0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\fffd;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:#000000e6}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:#000000e6}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:#00000080;background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:#0000008a;line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate(0);opacity:1}.dayContainer+.dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 #e6e6e6,5px 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:#3939394d;background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:#3939391a}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 #569ff7,5px 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:#3939394d;background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translateY(-20px)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate(0)}}@keyframes fpFadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translateY(-20px)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate(0)}}.workspace-leaf-content[data-type=kanban] .view-content{padding:0}.workspace-leaf-content[data-type=kanban]>.view-header{display:flex}.kanban-plugin{--lane-width: 272px}.kanban-plugin{contain:content;height:100%;width:100%;position:relative;display:flex;flex-direction:column}.kanban-plugin.something-is-dragging{cursor:grabbing;cursor:-webkit-grabbing}.kanban-plugin.something-is-dragging *{pointer-events:none}.kanban-plugin__item button,.kanban-plugin__lane button,.kanban-plugin button{line-height:1;padding:10px 12px;margin:0;transition:.1s color,.1s background-color}.kanban-plugin__search-wrapper{width:100%;position:sticky;top:0;left:0;padding:10px 13px;display:flex;justify-content:flex-end;align-items:center;z-index:2;background-color:var(--background-secondary);border-bottom:1px solid var(--background-modifier-border)}button.kanban-plugin__search-cancel-button{display:flex;line-height:1;padding:6px;border:1px solid var(--background-modifier-border);background:var(--background-secondary-alt);color:var(--text-muted);margin:0 0 0 5px;font-size:16px}button.kanban-plugin__search-cancel-button .kanban-plugin__icon{display:flex}.kanban-plugin__icon{display:inline-block;line-height:1}.kanban-plugin__icon>svg{width:1em;height:1em}.kanban-plugin__board{display:flex;width:100%;height:100%}.kanban-plugin__board>div{display:flex;align-items:flex-start;justify-content:flex-start;padding:1rem;width:fit-content;height:100%}.kanban-plugin__board.is-adding-lane>div{padding-right:calc(250px + 1rem)}.kanban-plugin__lane-wrapper{display:flex;flex-shrink:0;margin-right:10px;max-height:100%;width:var(--lane-width)}.kanban-plugin__lane{width:100%;display:flex;flex-direction:column;background-color:var(--background-secondary);border-radius:6px;border:1px solid var(--background-modifier-border)}.kanban-plugin__placeholder.kanban-plugin__lane-placeholder{height:100%;flex-grow:1;margin-right:5px}.kanban-plugin__lane.is-hidden{display:none}.kanban-plugin__lane button{padding:8px 10px}.kanban-plugin__lane-form-wrapper{position:absolute;top:1rem;right:1rem;width:250px;background-color:var(--background-secondary);border-radius:6px;border:2px solid hsla(var(--interactive-accent-hsl),.7);z-index:var(--layer-popover);box-shadow:0 .5px 1px .5px #0000001a,0 2px 10px #0000001a,0 10px 20px #0000001a}.kanban-plugin__lane-input-wrapper{padding:10px}.kanban-plugin__item-input-actions,.kanban-plugin__lane-input-actions{display:flex;align-items:flex-start;justify-content:flex-start;padding:0 10px 10px}.kanban-plugin__item-input-actions button,.kanban-plugin__lane-input-actions button{display:block;margin-right:5px}.kanban-plugin__item-action-add,.kanban-plugin__lane-action-add{background-color:var(--interactive-accent);color:var(--text-on-accent)}.kanban-plugin__item-action-add:hover,.kanban-plugin__lane-action-add:hover{background-color:var(--interactive-accent-hover)}.kanban-plugin__lane-header-wrapper{padding:8px 12px 8px 8px;display:flex;align-items:center;flex-shrink:0;flex-grow:0;border-bottom:1px solid var(--background-modifier-border)}.will-prepend .kanban-plugin__lane-header-wrapper{border-bottom:none}.kanban-plugin__lane-grip{cursor:grab;flex-grow:0;margin-right:5px;color:var(--text-faint)}.kanban-plugin__lane-grip:active{cursor:grabbing}.kanban-plugin__lane-grip>svg{display:block;height:1rem}.kanban-plugin__lane-title{font-weight:600;font-size:.875rem;flex-grow:1;width:100%;display:flex;flex-direction:column}.kanban-plugin__lane-title-text{flex-grow:1}div.kanban-plugin__markdown-preview-view>div>*{overflow-wrap:anywhere}div.kanban-plugin__lane-title-count{border-radius:3px;color:var(--text-muted);display:block;font-size:13px;line-height:1;padding:4px;margin-left:5px}div.kanban-plugin__lane-title-count.wip-exceeded{font-weight:bold;color:var(--text-normal);background-color:rgba(var(--background-modifier-error-rgb),.25)}.kanban-plugin__item button.kanban-plugin__item-prefix-button,.kanban-plugin__item button.kanban-plugin__item-postfix-button,.kanban-plugin__lane button.kanban-plugin__lane-settings-button{font-size:13px;line-height:1;color:var(--text-muted);padding:4px;display:flex;margin-left:5px;background-color:transparent;margin-right:-4px}.kanban-plugin__item button.kanban-plugin__item-prefix-button.is-enabled,.kanban-plugin__item button.kanban-plugin__item-postfix-button.is-enabled,.kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled{color:var(--text-accent)}.kanban-plugin__item button.kanban-plugin__item-prefix-button:hover,.kanban-plugin__item button.kanban-plugin__item-postfix-button:hover,.kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{background-color:transparent;color:var(--text-normal)}.kanban-plugin__item button.kanban-plugin__item-prefix-button{margin:4px 7px 4px 0;padding:0}.kanban-plugin__lane-action-wrapper,.kanban-plugin__item-edit-archive-button,.kanban-plugin__item-settings-actions .kanban-plugin__icon,.kanban-plugin__item-edit-archive-button>.kanban-plugin__icon,.kanban-plugin__item-prefix-button>.kanban-plugin__icon,.kanban-plugin__item-postfix-button>.kanban-plugin__icon,.kanban-plugin__lane-settings-button>.kanban-plugin__icon{display:flex}.kanban-plugin__lane-settings-button-wrapper{display:flex}button.kanban-plugin__lane-settings-button+button.kanban-plugin__lane-settings-button{margin-left:2px}.kanban-plugin__lane-settings-button svg{width:1em;height:1em}.kanban-plugin__lane-items-wrapper{margin:4px;height:100%}.kanban-plugin__lane-items{padding:4px;margin:0 4px;display:flex;flex-direction:column}.kanban-plugin__lane-items>div{margin-top:4px}.kanban-plugin__lane-items>.kanban-plugin__placeholder{flex-grow:1}.kanban-plugin__lane-items>.kanban-plugin__placeholder:only-child{height:2.55em;border:3px dashed rgba(var(--text-muted-rgb),.1);margin-bottom:4px;border-radius:6px;transition:border .2s ease}.is-sorting .kanban-plugin__lane-items>.kanban-plugin__placeholder:only-child{border-color:hsla(var(--interactive-accent-hsl),.6)}.kanban-plugin__item-button-wrapper{border-top:1px solid var(--background-modifier-border);padding:8px;flex-shrink:0;flex-grow:0}.kanban-plugin__item-button-wrapper>button{text-align:left;width:100%}.kanban-plugin__lane-header-wrapper+.kanban-plugin__item-button-wrapper{border-top:none;border-bottom:1px solid var(--background-modifier-border);padding:4px 8px 8px}.kanban-plugin__item-form{border-top:1px solid var(--background-modifier-border);padding:8px}.kanban-plugin__item-form .kanban-plugin__item-input-wrapper{padding:6px 8px;border:1px solid var(--background-modifier-border);background-color:var(--background-primary);border-radius:var(--input-radius);min-height:var(--input-height)}.kanban-plugin__lane-header-wrapper+.kanban-plugin__item-form{border-top:none;border-bottom:1px solid var(--background-modifier-border);padding:4px 8px 8px}.kanban-plugin__item-input-wrapper{display:flex;flex-direction:column;flex-grow:1}.kanban-plugin button.kanban-plugin__item-submit-button{background-color:var(--background-secondary-alt);flex-grow:0;flex-shrink:1;width:auto;margin-top:5px;line-height:1;font-size:14px}button.kanban-plugin__new-item-button{background-color:transparent;color:var(--text-muted)}.kanban-plugin__new-item-button:hover{color:var(--text-on-accent);background-color:var(--interactive-accent-hover)}.kanban-plugin__drag-container>.kanban-plugin__item-wrapper .kanban-plugin__item{border-color:var(--interactive-accent);box-shadow:var(--shadow-s),0 0 0 2px hsla(var(--interactive-accent-hsl),.2)}.kanban-plugin__item{font-size:.875rem;border:1px solid var(--background-modifier-border);border-radius:var(--input-radius);overflow:hidden;transition:.3s opacity cubic-bezier(.25,1,.5,1)}.kanban-plugin__item.is-search-hit{box-shadow:0 15px 25px #0003,0 0 0 1px var(--background-modifier-border)}.kanban-plugin__item.is-search-miss{font-size:.75rem;opacity:.5}.kanban-plugin__item.is-search-miss .kanban-plugin__item-metadata-wrapper{display:none}.kanban-plugin__item-content-wrapper{background:var(--background-primary)}.kanban-plugin__item-title-wrapper{background:var(--background-primary);display:flex;padding:6px 8px;align-items:center}.kanban-plugin__item-title-wrapper:not(:only-child){border-bottom:1px solid var(--background-modifier-border)}.kanban-plugin__item-title{width:100%;line-height:var(--line-height-tight);overflow:hidden}.kanban-plugin__markdown-preview-view{font-family:var(--font-text, var(--default-font));font-size:.875rem;line-height:var(--line-height-tight);padding:unset;width:unset;height:unset;position:unset;overflow-y:unset;overflow-wrap:unset;color:unset;user-select:unset;-webkit-user-select:unset}.kanban-plugin__markdown-preview-view p,.kanban-plugin__markdown-preview-view ul,.kanban-plugin__markdown-preview-view ol,.kanban-plugin__markdown-preview-view blockquote{margin-block-start:.66em;margin-block-end:.66em}.kanban-plugin__markdown-preview-view blockquote{margin-inline-start:0;margin-inline-end:0}.kanban-plugin__markdown-preview-view ul ol,.kanban-plugin__markdown-preview-view ol ul,.kanban-plugin__markdown-preview-view ul ul,.kanban-plugin__markdown-preview-view ol ol{margin-block-start:0em;margin-block-end:0em}.kanban-plugin__markdown-preview-view>div>*{overflow-x:auto;overflow-wrap:break-word}.kanban-plugin__markdown-preview-view>div>*:first-child,.kanban-plugin__markdown-preview-view>div>.frontmatter-container+*{margin-top:0}.kanban-plugin__markdown-preview-view>div>*:last-child{margin-bottom:0}.kanban-plugin__markdown-preview-view ul,.kanban-plugin__markdown-preview-view ol{padding-inline-start:24px}.kanban-plugin__meta-value .kanban-plugin__markdown-preview-view p,.kanban-plugin__meta-value .kanban-plugin__markdown-preview-view{font-size:inherit;color:inherit;line-height:inherit}.kanban-plugin__markdown-preview-view.inline p,.kanban-plugin__markdown-preview-view.inline{display:inline-block}.kanban-plugin__markdown-preview-view .frontmatter,.kanban-plugin__markdown-preview-view .frontmatter-container{display:none}.kanban-plugin__markdown-preview-view .file-link span{display:inline-flex;align-items:center;justify-content:center;color:var(--text-faint);margin-left:2px;position:relative;top:3px}.kanban-plugin__embed-link-wrapper{padding:2px;float:right}.kanban-plugin__item-metadata-wrapper:not(:empty){background-color:var(--background-primary-alt);padding:6px 8px}.kanban-plugin__item-metadata:not(:empty){padding-top:5px;font-size:12px;font-weight:500;color:var(--text-muted)}.kanban-plugin__item-metadata>span{display:block}.kanban-plugin__item-metadata .is-button{cursor:var(--cursor)}.kanban-plugin__item-metadata .is-button:hover{color:var(--text-normal)}.kanban-plugin__item-metadata-date-relative:first-letter{text-transform:uppercase}.kanban-plugin__item-metadata a{text-decoration:none}.kanban-plugin__item-metadata-time:before{content:" \2022 "}.kanban-plugin__item-metadata-time.is-button:hover:before{color:var(--text-muted)}.kanban-plugin__item-tags:not(:empty){padding-top:2px}.kanban-plugin__item-tag{display:inline-block;margin-right:4px}.kanban-plugin__item-tags .kanban-plugin__item-tag{font-size:12px;background-color:var(--tag-background-color, hsla(var(--interactive-accent-hsl), .1));color:var(--tag-color, var(--text-accent));margin:3px 3px 0 0}.kanban-plugin__item-tag.is-search-match,.kanban-plugin__item-tags .kanban-plugin__item-tag.is-search-match{background-color:var(--text-highlight-bg);color:var(--text-normal)}.kanban-plugin__meta-table{width:100%;margin:0;line-height:1.5;font-size:.75rem}.kanban-plugin__meta-table td{vertical-align:top;padding:3px 0;width:10%}.kanban-plugin__meta-table td+td{width:90%}.kanban-plugin__meta-table td:only-child{width:100%}.kanban-plugin__meta-table td.kanban-plugin__meta-key{white-space:nowrap;padding-right:5px;color:var(--text-muted)}.kanban-plugin__meta-table td.kanban-plugin__meta-key.is-search-match>span{background-color:var(--text-highlight-bg);color:var(--text-normal)}.kanban-plugin__meta-value{white-space:pre-wrap;display:flex}.kanban-plugin__meta-value>.is-search-match,.kanban-plugin__meta-value.is-search-match{background-color:var(--text-highlight-bg);color:var(--text-normal)}.kanban-plugin__item-prefix-button-wrapper,.kanban-plugin__item-postfix-button-wrapper{display:flex;flex-grow:0;flex-shrink:0;align-self:start}.kanban-plugin__item-prefix-button-wrapper{flex-direction:column}.kanban-plugin__item-prefix-button-wrapper input[type=checkbox]{margin:4px 7px 4px 0;width:15px;height:15px;filter:hue-rotate(42deg)}.kanban-plugin__item-prefix-button-wrapper input[type=checkbox]+button{margin-top:10px}button.kanban-plugin__item-postfix-button{visibility:hidden;opacity:0;transition:.1s opacity;display:flex;align-self:flex-start}button.kanban-plugin__item-postfix-button.is-enabled,.kanban-plugin__item:hover button.kanban-plugin__item-postfix-button{visibility:visible;opacity:1}.kanban-plugin__item-settings-actions{padding:5px;display:flex}.kanban-plugin__item-settings-actions>button{line-height:1;display:flex;align-items:center;justify-content:center;font-size:.75rem;width:100%}.kanban-plugin__lane-action-wrapper button>.kanban-plugin__icon,.kanban-plugin__item-settings-actions button>.kanban-plugin__icon{margin-right:5px}.kanban-plugin__item-settings-actions>button:first-child,.kanban-plugin__lane-action-wrapper>button:first-child{margin-right:2.5px}.kanban-plugin__item-settings-actions>button:last-child,.kanban-plugin__lane-action-wrapper>button:last-child{margin-left:2.5px}.kanban-plugin__archive-lane-button,.kanban-plugin__item-button-archive{color:var(--text-muted);border:1px solid var(--background-modifier-border)}.kanban-plugin__archive-lane-button:hover,.kanban-plugin__item-button-archive:hover{color:var(--text-normal)}.kanban-plugin__item-button-delete{border:1px solid rgba(var(--background-modifier-error-rgb),.15);color:rgba(var(--background-modifier-error-rgb),1)}.kanban-plugin__item-button-delete:hover{background-color:rgba(var(--background-modifier-error-rgb),.2);color:var(--text-error)}.theme-dark .kanban-plugin__item-button-delete{background-color:transparent;border:1px solid rgba(var(--background-modifier-error-rgb),1);color:var(--text-error)}.theme-dark .kanban-plugin__item-button-delete:hover{background-color:rgba(var(--background-modifier-error-rgb),1);color:var(--text-error)}.kanban-plugin__checkbox-wrapper{border-top:1px solid var(--background-modifier-border);border-bottom:1px solid var(--background-modifier-border);padding:10px;margin-bottom:10px;display:flex;align-items:center}.kanban-plugin__checkbox-wrapper .checkbox-container{flex-shrink:0;flex-grow:0;margin-left:15px}.kanban-plugin__checkbox-label{font-size:.8125rem;line-height:1.4}.kanban-plugin__lane-setting-wrapper>div{border-top:none;border-bottom:none;padding:10px 15px;margin-bottom:0}.kanban-plugin__lane-setting-wrapper>div:last-child{border-bottom:1px solid var(--background-modifier-border);margin-bottom:10px}.kanban-plugin__action-confirm-wrapper{border:1px solid rgba(var(--background-modifier-error-rgb),.2);background-color:rgba(var(--background-modifier-error-rgb),.1);border-radius:4px;padding:10px;margin:5px 10px}.theme-dark .kanban-plugin__action-confirm-wrapper{border:1px solid rgba(var(--background-modifier-error-rgb),1)}.kanban-plugin__delete-lane-button,.kanban-plugin__archive-lane-button{display:flex;align-items:center;justify-content:center;font-size:.75rem;width:50%}.kanban-plugin__delete-lane-button{border:1px solid rgba(var(--background-modifier-error-rgb),.15);color:rgba(var(--background-modifier-error-rgb),1)}.kanban-plugin__delete-lane-button:hover{background-color:rgba(var(--background-modifier-error-rgb),.2);color:var(--text-error)}.theme-dark .kanban-plugin__delete-lane-button{background-color:transparent;border:1px solid rgba(var(--background-modifier-error-rgb),1);color:var(--text-error)}.theme-dark .kanban-plugin__delete-lane-button:hover{background-color:rgba(var(--background-modifier-error-rgb),1);color:var(--text-error)}.kanban-plugin__action-confirm-text{font-size:.875rem;color:var(--text-error);margin-bottom:10px;line-height:1.4}button.kanban-plugin__confirm-action-button{border:1px solid rgba(var(--background-modifier-error-rgb),.2);margin-right:5px;color:var(--text-error)}button.kanban-plugin__confirm-action-button:hover{background-color:rgba(var(--background-modifier-error-rgb),.5)}button.kanban-plugin__cancel-action-button{border:1px solid var(--background-modifier-border)}.kanban-plugin__grow-wrap{width:100%;display:grid}.kanban-plugin__grow-wrap:after{content:attr(data-replicated-value) " ";white-space:pre-wrap;visibility:hidden}.kanban-plugin__grow-wrap>textarea{resize:none;overflow:hidden;tab-size:2}.kanban-plugin__grow-wrap>textarea:focus{border:none;box-shadow:none}.kanban-plugin__grow-wrap>textarea,.kanban-plugin__grow-wrap:after{border:none;border-radius:0;padding:0;font:inherit;line-height:var(--line-height-tight);grid-area:1 / 1 / 2 / 2;font-size:.875rem;overflow:hidden;overflow-wrap:break-word;white-space:pre-wrap}.kanban-plugin__autocomplete{font-size:.875rem;border:1px solid var(--background-modifier-border);background-color:var(--background-primary);list-style:none;padding:0;margin:0;min-width:20ch;max-width:40ch;max-height:200px;border-radius:6px;box-shadow:0 15px 25px #0003;overflow-x:hidden;overflow-y:auto}.kanban-plugin__autocomplete li{margin:0}.kanban-plugin__autocomplete li em{opacity:.6}.kanban-plugin .textcomplete-footer,.kanban-plugin .textcomplete-header{display:none}.kanban-plugin__autocomplete-item-active,.kanban-plugin__autocomplete-item{border-top:1px solid var(--background-modifier-border);padding:4px 6px;cursor:var(--cursor)}.kanban-plugin__autocomplete .textcomplete-header+.kanban-plugin__autocomplete-item,.kanban-plugin__autocomplete .textcomplete-header+.kanban-plugin__autocomplete-item-active{border-top:none}.kanban-plugin__autocomplete-item:hover,.kanban-plugin__autocomplete-item-active{color:var(--text-on-accent);background-color:var(--interactive-accent-hover)}.kanban-plugin__file-suggestion-wrapper{display:flex;line-height:1.2}.kanban-plugin__file-suggestion-icon{flex-shrink:0;flex-grow:0;padding-right:4px}.kanban-plugin__file-suggestion-subtitle{font-size:.875em;color:var(--text-muted)}.kanban-plugin__autocomplete-item:hover .kanban-plugin__file-suggestion-subtitle,.kanban-plugin__autocomplete-item-active .kanban-plugin__file-suggestion-subtitle{color:var(--text-on-accent)}.modal.kanban-plugin__board-settings-modal{width:var(--modal-width);height:var(--modal-height);max-height:var(--modal-max-height);max-width:var(--modal-max-width);padding:0;display:flex;flex-direction:column}.modal.kanban-plugin__board-settings-modal .modal-content{padding:30px 50px;height:100%;overflow-y:auto;overflow-x:hidden;margin:0}.kanban-plugin__board-settings-modal .setting-item{flex-wrap:wrap;justify-content:space-between}.kanban-plugin__board-settings-modal .setting-item-info{max-width:400px;min-width:300px;width:50%}.kanban-plugin__board-settings-modal .setting-item-control{min-width:300px;flex-shrink:0}.kanban-plugin__board-settings-modal .choices{width:100%;text-align:left}.kanban-plugin__board-settings-modal .choices[data-type*=select-one] .choices__inner{background-color:var(--background-primary);border-color:var(--background-modifier-border);padding:0;min-height:0}.kanban-plugin__board-settings-modal .choices[data-type*=select-one] .choices__input{background-color:var(--background-primary);border-bottom-color:var(--background-modifier-border);font-size:14px}.kanban-plugin__board-settings-modal .choices__input{border-radius:0;border-top:none;border-left:none;border-right:none}.kanban-plugin__board-settings-modal .choices__list[role=listbox]{overflow-x:hidden}.kanban-plugin__board-settings-modal .choices__list--single{padding:4px 20px 4px 6px}.kanban-plugin__board-settings-modal .is-open .choices__list--dropdown,.kanban-plugin__board-settings-modal .choices__list--dropdown{background-color:var(--background-primary);border-color:var(--background-modifier-border);word-break:normal;max-height:200px;display:flex;flex-direction:column}.kanban-plugin__board-settings-modal .choices__list--dropdown .choices__item--selectable:after{display:none}.kanban-plugin__board-settings-modal .choices__list--dropdown .choices__item--selectable{padding:4px 6px}.kanban-plugin__board-settings-modal .choices__list--dropdown .choices__item.is-highlighted{background-color:var(--background-primary-alt)}.kanban-plugin__board-settings-modal .choices__placeholder{opacity:1;color:var(--text-muted)}.kanban-plugin__board-settings-modal .error{border-color:var(--background-modifier-error-hover)!important}.kanban-plugin__date-picker{position:absolute;z-index:var(--layer-popover);--cell-size: 2.4em}.kanban-plugin__date-picker .flatpickr-input{width:0;height:0;opacity:0;border:none;padding:0;display:block;margin-bottom:-1px}.kanban-plugin__date-picker .flatpickr-current-month{color:var(--text-normal);font-weight:600;font-size:inherit;width:100%;position:static;height:auto;display:flex;align-items:center;justify-content:center;padding:0}.kanban-plugin__date-picker .flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:var(--text-normal)}.kanban-plugin__date-picker .flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:var(--text-normal)}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{fill:currentColor}.kanban-plugin__date-picker .flatpickr-calendar{font-size:13px;overflow:hidden;background-color:var(--background-primary);width:calc(var(--cell-size) * 7 + 8px);box-shadow:0 0 0 1px var(--background-modifier-border),0 15px 25px #0003}.kanban-plugin__date-picker .flatpickr-months{font-size:13px;padding:2px 2px 4px;align-items:center}.kanban-plugin__date-picker .flatpickr-months .flatpickr-current-month input.cur-year,.kanban-plugin__date-picker .flatpickr-months select{border-radius:4px;padding:4px}.kanban-plugin__date-picker .flatpickr-months .numInputWrapper{border-radius:4px}.kanban-plugin__date-picker .flatpickr-months .flatpickr-month{width:100%;height:auto}.kanban-plugin__date-picker .flatpickr-months .flatpickr-prev-month,.kanban-plugin__date-picker .flatpickr-months .flatpickr-next-month{color:var(--text-normal);fill:currentColor;border-radius:4px;display:flex;align-items:center;justify-content:center;line-height:1;height:auto;padding:5px;position:static;flex-shrink:0}.kanban-plugin__date-picker .flatpickr-months .flatpickr-prev-month:hover,.kanban-plugin__date-picker .flatpickr-months .flatpickr-next-month:hover{background-color:var(--background-primary-alt);color:var(--text-normal)}.kanban-plugin__date-picker .flatpickr-months .flatpickr-prev-month:hover svg,.kanban-plugin__date-picker .flatpickr-months .flatpickr-next-month:hover svg{fill:currentColor}.kanban-plugin__date-picker .flatpickr-current-month .flatpickr-monthDropdown-months{color:var(--text-normal);font-weight:inherit;margin-right:5px}.kanban-plugin__date-picker .flatpickr-current-month input.cur-year{color:var(--text-normal);font-weight:inherit}.kanban-plugin__date-picker .flatpickr-weekdays{height:auto;padding:8px 0 12px}.kanban-plugin__date-picker span.flatpickr-weekday{font-weight:400;color:var(--text-muted)}.kanban-plugin__date-picker .flatpickr-innerContainer{padding:4px}.kanban-plugin__date-picker .flatpickr-day{color:var(--text-normal);display:inline-flex;align-items:center;justify-content:center;width:var(--cell-size);height:var(--cell-size);line-height:1;border-radius:6px}.kanban-plugin__date-picker .flatpickr-day.today{border-color:var(--interactive-accent)}.kanban-plugin__date-picker .flatpickr-day.today:hover{color:var(--text-normal);border-color:var(--interactive-accent);background-color:var(--background-primary-alt)}.kanban-plugin__date-picker .flatpickr-day.selected{border-color:var(--interactive-accent);background-color:var(--interactive-accent);color:var(--text-on-accent)}.kanban-plugin__date-picker .flatpickr-day.selected:hover{border-color:var(--interactive-accent);background-color:var(--interactive-accent)}.kanban-plugin__date-picker .flatpickr-days{width:calc(var(--cell-size) * 7)}.kanban-plugin__date-picker .dayContainer{width:calc(var(--cell-size) * 7);min-width:calc(var(--cell-size) * 7);max-width:calc(var(--cell-size) * 7)}.kanban-plugin__date-picker .flatpickr-day.inRange,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay.inRange,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay.inRange,.kanban-plugin__date-picker .flatpickr-day.today.inRange,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay.today.inRange,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay.today.inRange,.kanban-plugin__date-picker .flatpickr-day:hover,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay:hover,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay:hover,.kanban-plugin__date-picker .flatpickr-day:focus,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay:focus,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay:focus{background-color:var(--background-primary-alt);border-color:var(--background-primary-alt)}.kanban-plugin__date-picker .flatpickr-day.flatpickr-disabled,.kanban-plugin__date-picker .flatpickr-day.flatpickr-disabled:hover,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay,.kanban-plugin__date-picker .flatpickr-day.notAllowed,.kanban-plugin__date-picker .flatpickr-day.notAllowed.prevMonthDay,.kanban-plugin__date-picker .flatpickr-day.notAllowed.nextMonthDay{color:var(--text-faint)}.kanban-plugin__time-picker{position:absolute;max-height:250px;overflow:auto;border-radius:4px;border:1px solid var(--background-modifier-border);box-shadow:0 2px 8px var(--background-modifier-box-shadow);background:var(--background-primary);color:var(--text-normal);font-size:14px;z-index:var(--layer-menu)}.kanban-plugin__time-picker-item{display:flex;align-items:center;color:var(--text-muted);cursor:var(--cursor);line-height:1;padding:6px 8px}.kanban-plugin__time-picker-check{visibility:hidden;display:inline-flex;margin-right:5px}.kanban-plugin__time-picker-item.is-hour{color:var(--text-normal);font-weight:600}.kanban-plugin__time-picker-item.is-selected .kanban-plugin__time-picker-check{visibility:visible}.kanban-plugin__time-picker-item:hover,.kanban-plugin__time-picker-item.is-selected{background:var(--background-secondary)}.kanban-plugin mark{background-color:var(--text-highlight-bg)}.kanban-plugin__draggable-setting-container{border-top:0;padding:0;flex-direction:column}.kanban-plugin__draggable-setting-container>div{width:100%;margin-right:0!important}.kanban-plugin__setting-item-wrapper{border-top:1px solid var(--background-modifier-border)}.kanban-plugin__draggable-setting-container>.kanban-plugin__placeholder{border-top:1px solid var(--background-modifier-border)}.kanban-plugin__setting-item{background-color:var(--background-secondary);width:100%;font-size:16px;display:flex;align-items:flex-start;padding:12px;color:var(--text-muted)}.kanban-plugin__drag-container .kanban-plugin__setting-item{border:1px solid hsla(var(--interactive-accent-hsl),.8);box-shadow:0 15px 25px #0003,0 0 0 2px hsla(var(--interactive-accent-hsl),.8)}.kanban-plugin__setting-controls-wrapper{flex-grow:1;flex-shrink:1}.kanban-plugin__setting-input-wrapper{display:flex;flex-wrap:wrap;margin-bottom:1rem}.kanban-plugin__setting-input-wrapper>div{margin-right:10px}.kanban-plugin__setting-toggle-wrapper>div{display:flex;align-items:center;line-height:1;margin-bottom:10px}.kanban-plugin__setting-toggle-wrapper .checkbox-container{margin-right:10px}.kanban-plugin__setting-button-wrapper{display:flex;justify-content:flex-end;flex-grow:1;flex-shrink:0;max-width:25px}.kanban-plugin__setting-button-wrapper>div{margin-left:12px}.kanban-plugin__setting-key-input-wrapper{margin:1rem 0}.kanban-plugin__setting-key-input-wrapper>input{margin-right:10px}.kanban-plugin__date-color-input-wrapper,.kanban-plugin__tag-color-input-wrapper{display:flex;flex-direction:column;flex-grow:1;gap:1rem}.kanban-plugin__add-tag-color-button{align-self:baseline;margin:0}.kanban-plugin__date-color-wrapper,.kanban-plugin__tag-color-input .kanban-plugin__item-tags{background-color:var(--background-primary);padding:10px;margin:0;border-radius:4px}.kanban-plugin__tag-color-input .kanban-plugin__item-tag{margin-top:0;font-size:13px;font-weight:500;line-height:1.5}.kanban-plugin__item-metadata>.kanban-plugin__item-metadata-date-wrapper .is-button:hover,.kanban-plugin__item-metadata>.kanban-plugin__item-metadata-date-wrapper{display:inline-block;color:var(--date-color, var(--text-muted));line-height:1}.kanban-plugin__item-metadata>.kanban-plugin__item-metadata-date-wrapper.has-background{background-color:var(--date-background-color, transparent);margin-top:4px;border-radius:var(--tag-radius);padding:var(--tag-padding-y) var(--tag-padding-x)}.kanban-plugin__date-color-input-wrapper input[type=number]{width:75px;padding:.6em .8em;height:auto;border-radius:.5em}.kanban-plugin__date-color-input-wrapper .kanban-plugin__setting-item-label{margin-bottom:0}.kanban-plugin__date-color-config{padding:0 0 10px;display:flex;flex-wrap:wrap;gap:5px;align-items:center}.kanban-plugin__date-color-wrapper{display:inline-block;margin-top:10px}.kanban-plugin__date-color-wrapper .kanban-plugin__item-metadata{padding:0}.kanban-plugin__metadata-setting-desc{font-size:14px}.kanban-plugin__setting-button-spacer{visibility:hidden}.kanban-plugin__setting-item-label{font-size:12px;font-weight:bold;margin-bottom:5px}.kanban-plugin__setting-toggle-wrapper .kanban-plugin__setting-item-label{margin-bottom:0}.kanban-plugin__hitbox{border:2px dashed tomato}.kanban-plugin__placeholder{flex-grow:0;flex-shrink:0;width:0;height:0;pointer-events:none}.kanban-plugin__placeholder[data-axis=horizontal]{height:100%}.kanban-plugin__placeholder[data-axis=vertical]{width:100%}body:not(.native-scrollbars) .kanban-plugin__scroll-container::-webkit-scrollbar{background-color:transparent;width:16px;height:16px}body:not(.native-scrollbars) .kanban-plugin__scroll-container::-webkit-scrollbar-thumb{border:4px solid transparent;background-clip:content-box}.kanban-plugin__scroll-container{will-change:transform}.kanban-plugin__scroll-container.kanban-plugin__horizontal{overflow-y:hidden;overflow-x:auto}.kanban-plugin__scroll-container.kanban-plugin__vertical{overflow-y:auto;overflow-x:hidden}.kanban-plugin__drag-container{contain:layout size;z-index:10000;pointer-events:none;position:fixed;top:0;left:0}.kanban-plugin__loading{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.sk-pulse{width:60px;height:60px;background-color:var(--text-faint);border-radius:100%;animation:sk-pulse 1.2s infinite cubic-bezier(.455,.03,.515,.955)}@keyframes sk-pulse{0%{transform:scale(0)}to{transform:scale(1);opacity:0}}.kanban-plugin__color-picker-wrapper{position:relative}.kanban-plugin__color-picker{position:absolute;top:-5px;left:0;transform:translateY(-100%)} diff --git a/notes/.obsidian/plugins/obsidian-linter/data.json b/notes/.obsidian/plugins/obsidian-linter/data.json new file mode 100644 index 0000000..0fa50fd --- /dev/null +++ b/notes/.obsidian/plugins/obsidian-linter/data.json @@ -0,0 +1,15 @@ +{ + "ruleConfigs": {}, + "lintOnSave": false, + "displayChanged": true, + "foldersToIgnore": [], + "linterLocale": "system-default", + "logLevel": 4, + "lintCommands": [], + "commonStyles": { + "aliasArrayStyle": "single-line", + "tagArrayStyle": "single-line", + "minimumNumberOfDollarSignsToBeAMathBlock": 2, + "escapeCharacter": "\"" + } +} \ No newline at end of file diff --git a/notes/.obsidian/plugins/obsidian-linter/main.js b/notes/.obsidian/plugins/obsidian-linter/main.js index a66c429..6f60f9d 100644 --- a/notes/.obsidian/plugins/obsidian-linter/main.js +++ b/notes/.obsidian/plugins/obsidian-linter/main.js @@ -3,158 +3,177 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ -var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDescriptor;var Uc=Object.getOwnPropertyNames;var Gc=Object.getPrototypeOf,Qc=Object.prototype.hasOwnProperty;var Bi=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),al=(e,t)=>{for(var n in t)or(e,n,{get:t[n],enumerable:!0})},ll=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Uc(t))!Qc.call(e,i)&&i!==n&&or(e,i,{get:()=>t[i],enumerable:!(r=sl(t,i))||r.enumerable});return e};var En=(e,t,n)=>(n=e!=null?Wc(Gc(e)):{},ll(t||!e||!e.__esModule?or(n,"default",{value:e,enumerable:!0}):n,e)),Zc=e=>ll(or({},"__esModule",{value:!0}),e),B=(e,t,n,r)=>{for(var i=r>1?void 0:r?sl(t,n):t,o=e.length-1,s;o>=0;o--)(s=e[o])&&(i=(r?s(t,n,i):s(i))||i);return r&&i&&or(t,n,i),i};var ul=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)};var Ze=(e,t,n)=>(ul(e,t,"read from private field"),n?n.call(e):t.get(e)),Ln=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},pl=(e,t,n,r)=>(ul(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n);var ms=Bi((v1,au)=>{au.exports=function(t){return t!=null&&t.constructor!=null&&typeof t.constructor.isBuffer=="function"&&t.constructor.isBuffer(t)}});var gu=Bi((O1,hu)=>{"use strict";var Vi=Object.prototype.hasOwnProperty,du=Object.prototype.toString,lu=Object.defineProperty,uu=Object.getOwnPropertyDescriptor,pu=function(t){return typeof Array.isArray=="function"?Array.isArray(t):du.call(t)==="[object Array]"},cu=function(t){if(!t||du.call(t)!=="[object Object]")return!1;var n=Vi.call(t,"constructor"),r=t.constructor&&t.constructor.prototype&&Vi.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!n&&!r)return!1;var i;for(i in t);return typeof i=="undefined"||Vi.call(t,i)},fu=function(t,n){lu&&n.name==="__proto__"?lu(t,n.name,{enumerable:!0,configurable:!0,value:n.newValue,writable:!0}):t[n.name]=n.newValue},mu=function(t,n){if(n==="__proto__")if(Vi.call(t,n)){if(uu)return uu(t,n).value}else return;return t[n]};hu.exports=function e(){var t,n,r,i,o,s,a=arguments[0],l=1,u=arguments.length,p=!1;for(typeof a=="boolean"&&(p=a,a=arguments[1]||{},l=2),(a==null||typeof a!="object"&&typeof a!="function")&&(a={});l{var M=function(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32},oe=-1,ae=1,U=0;M.Diff=function(e,t){return[e,t]};M.prototype.diff_main=function(e,t,n,r){typeof r=="undefined"&&(this.Diff_Timeout<=0?r=Number.MAX_VALUE:r=new Date().getTime()+this.Diff_Timeout*1e3);var i=r;if(e==null||t==null)throw new Error("Null input. (diff_main)");if(e==t)return e?[new M.Diff(U,e)]:[];typeof n=="undefined"&&(n=!0);var o=n,s=this.diff_commonPrefix(e,t),a=e.substring(0,s);e=e.substring(s),t=t.substring(s),s=this.diff_commonSuffix(e,t);var l=e.substring(e.length-s);e=e.substring(0,e.length-s),t=t.substring(0,t.length-s);var u=this.diff_compute_(e,t,o,i);return a&&u.unshift(new M.Diff(U,a)),l&&u.push(new M.Diff(U,l)),this.diff_cleanupMerge(u),u};M.prototype.diff_compute_=function(e,t,n,r){var i;if(!e)return[new M.Diff(ae,t)];if(!t)return[new M.Diff(oe,e)];var o=e.length>t.length?e:t,s=e.length>t.length?t:e,a=o.indexOf(s);if(a!=-1)return i=[new M.Diff(ae,o.substring(0,a)),new M.Diff(U,s),new M.Diff(ae,o.substring(a+s.length))],e.length>t.length&&(i[0][0]=i[2][0]=oe),i;if(s.length==1)return[new M.Diff(oe,e),new M.Diff(ae,t)];var l=this.diff_halfMatch_(e,t);if(l){var u=l[0],p=l[1],c=l[2],f=l[3],m=l[4],d=this.diff_main(u,c,n,r),h=this.diff_main(p,f,n,r);return d.concat([new M.Diff(U,m)],h)}return n&&e.length>100&&t.length>100?this.diff_lineMode_(e,t,r):this.diff_bisect_(e,t,r)};M.prototype.diff_lineMode_=function(e,t,n){var r=this.diff_linesToChars_(e,t);e=r.chars1,t=r.chars2;var i=r.lineArray,o=this.diff_main(e,t,!1,n);this.diff_charsToLines_(o,i),this.diff_cleanupSemantic(o),o.push(new M.Diff(U,""));for(var s=0,a=0,l=0,u="",p="";s=1&&l>=1){o.splice(s-a-l,a+l),s=s-a-l;for(var c=this.diff_main(u,p,!1,n),f=c.length-1;f>=0;f--)o.splice(s,0,c[f]);s=s+c.length}l=0,a=0,u="",p="";break}s++}return o.pop(),o};M.prototype.diff_bisect_=function(e,t,n){for(var r=e.length,i=t.length,o=Math.ceil((r+i)/2),s=o,a=2*o,l=new Array(a),u=new Array(a),p=0;pn);y++){for(var T=-y+m;T<=y-d;T+=2){var O=s+T,C;T==-y||T!=y&&l[O-1]r)d+=2;else if(I>i)m+=2;else if(f){var k=s+c-T;if(k>=0&&k=_)return this.diff_bisectSplit_(e,t,C,I,n)}}}for(var F=-y+h;F<=y-g;F+=2){var k=s+F,_;F==-y||F!=y&&u[k-1]r)g+=2;else if($>i)h+=2;else if(!f){var O=s+c-F;if(O>=0&&O=_)return this.diff_bisectSplit_(e,t,C,I,n)}}}}return[new M.Diff(oe,e),new M.Diff(ae,t)]};M.prototype.diff_bisectSplit_=function(e,t,n,r,i){var o=e.substring(0,n),s=t.substring(0,r),a=e.substring(n),l=t.substring(r),u=this.diff_main(o,s,!1,i),p=this.diff_main(a,l,!1,i);return u.concat(p)};M.prototype.diff_linesToChars_=function(e,t){var n=[],r={};n[0]="";function i(l){for(var u="",p=0,c=-1,f=n.length;cr?e=e.substring(n-r):nt.length?e:t,r=e.length>t.length?t:e;if(n.length<4||r.length*2=d.length?[C,I,k,_,O]:null}var s=o(n,r,Math.ceil(n.length/4)),a=o(n,r,Math.ceil(n.length/2)),l;if(!s&&!a)return null;a?s?l=s[4].length>a[4].length?s:a:l=a:l=s;var u,p,c,f;e.length>t.length?(u=l[0],p=l[1],c=l[2],f=l[3]):(c=l[0],f=l[1],u=l[2],p=l[3]);var m=l[4];return[u,p,c,f,m]};M.prototype.diff_cleanupSemantic=function(e){for(var t=!1,n=[],r=0,i=null,o=0,s=0,a=0,l=0,u=0;o0?n[r-1]:-1,s=0,a=0,l=0,u=0,i=null,t=!0)),o++;for(t&&this.diff_cleanupMerge(e),this.diff_cleanupSemanticLossless(e),o=1;o=m?(f>=p.length/2||f>=c.length/2)&&(e.splice(o,0,new M.Diff(U,c.substring(0,f))),e[o-1][1]=p.substring(0,p.length-f),e[o+1][1]=c.substring(f),o++):(m>=p.length/2||m>=c.length/2)&&(e.splice(o,0,new M.Diff(U,p.substring(0,m))),e[o-1][0]=ae,e[o-1][1]=c.substring(0,c.length-m),e[o+1][0]=oe,e[o+1][1]=p.substring(m),o++),o++}o++}};M.prototype.diff_cleanupSemanticLossless=function(e){function t(m,d){if(!m||!d)return 6;var h=m.charAt(m.length-1),g=d.charAt(0),y=h.match(M.nonAlphaNumericRegex_),T=g.match(M.nonAlphaNumericRegex_),O=y&&h.match(M.whitespaceRegex_),C=T&&g.match(M.whitespaceRegex_),I=O&&h.match(M.linebreakRegex_),k=C&&g.match(M.linebreakRegex_),_=I&&m.match(M.blanklineEndRegex_),F=k&&d.match(M.blanklineStartRegex_);return _||F?5:I||k?4:y&&!O&&C?3:O||C?2:y||T?1:0}for(var n=1;n=c&&(c=f,l=r,u=i,p=o)}e[n-1][1]!=l&&(l?e[n-1][1]=l:(e.splice(n-1,1),n--),e[n][1]=u,p?e[n+1][1]=p:(e.splice(n+1,1),n--))}n++}};M.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;M.whitespaceRegex_=/\s/;M.linebreakRegex_=/[\r\n]/;M.blanklineEndRegex_=/\n\r?\n$/;M.blanklineStartRegex_=/^\r?\n\r?\n/;M.prototype.diff_cleanupEfficiency=function(e){for(var t=!1,n=[],r=0,i=null,o=0,s=!1,a=!1,l=!1,u=!1;o0?n[r-1]:-1,l=u=!1),t=!0)),o++;t&&this.diff_cleanupMerge(e)};M.prototype.diff_cleanupMerge=function(e){e.push(new M.Diff(U,""));for(var t=0,n=0,r=0,i="",o="",s;t1?(n!==0&&r!==0&&(s=this.diff_commonPrefix(o,i),s!==0&&(t-n-r>0&&e[t-n-r-1][0]==U?e[t-n-r-1][1]+=o.substring(0,s):(e.splice(0,0,new M.Diff(U,o.substring(0,s))),t++),o=o.substring(s),i=i.substring(s)),s=this.diff_commonSuffix(o,i),s!==0&&(e[t][1]=o.substring(o.length-s)+e[t][1],o=o.substring(0,o.length-s),i=i.substring(0,i.length-s))),t-=n+r,e.splice(t,n+r),i.length&&(e.splice(t,0,new M.Diff(oe,i)),t++),o.length&&(e.splice(t,0,new M.Diff(ae,o)),t++),t++):t!==0&&e[t-1][0]==U?(e[t-1][1]+=e[t][1],e.splice(t,1)):t++,r=0,n=0,i="",o="";break}e[e.length-1][1]===""&&e.pop();var a=!1;for(t=1;tt));s++)i=n,o=r;return e.length!=s&&e[s][0]===oe?o:o+(t-i)};M.prototype.diff_prettyHtml=function(e){for(var t=[],n=/&/g,r=//g,o=/\n/g,s=0;s");switch(a){case ae:t[s]=''+u+"";break;case oe:t[s]=''+u+"";break;case U:t[s]=""+u+"";break}}return t.join("")};M.prototype.diff_text1=function(e){for(var t=[],n=0;nthis.Match_MaxBits)throw new Error("Pattern too long for this browser.");var r=this.match_alphabet_(t),i=this;function o(C,I){var k=C/t.length,_=Math.abs(n-I);return i.Match_Distance?k+_/i.Match_Distance:_?1:k}var s=this.Match_Threshold,a=e.indexOf(t,n);a!=-1&&(s=Math.min(o(0,a),s),a=e.lastIndexOf(t,n+t.length),a!=-1&&(s=Math.min(o(0,a),s)));var l=1<=d;y--){var T=r[e.charAt(y-1)];if(m===0?g[y]=(g[y+1]<<1|1)&T:g[y]=(g[y+1]<<1|1)&T|((f[y+1]|f[y])<<1|1)|f[y+1],g[y]&l){var O=o(m,y-1);if(O<=s)if(s=O,a=y-1,a>n)d=Math.max(1,2*n-a);else break}}if(o(m+1,n)>s)break;f=g}return a};M.prototype.match_alphabet_=function(e){for(var t={},n=0;n2&&(this.diff_cleanupSemantic(i),this.diff_cleanupEfficiency(i));else if(e&&typeof e=="object"&&typeof t=="undefined"&&typeof n=="undefined")i=e,r=this.diff_text1(i);else if(typeof e=="string"&&t&&typeof t=="object"&&typeof n=="undefined")r=e,i=t;else if(typeof e=="string"&&typeof t=="string"&&n&&typeof n=="object")r=e,i=n;else throw new Error("Unknown call format to patch_make.");if(i.length===0)return[];for(var o=[],s=new M.patch_obj,a=0,l=0,u=0,p=r,c=r,f=0;f=2*this.Patch_Margin&&a&&(this.patch_addContext_(s,p),o.push(s),s=new M.patch_obj,a=0,p=c,l=u);break}m!==ae&&(l+=d.length),m!==oe&&(u+=d.length)}return a&&(this.patch_addContext_(s,p),o.push(s)),o};M.prototype.patch_deepCopy=function(e){for(var t=[],n=0;nthis.Match_MaxBits?(l=this.match_main(t,a.substring(0,this.Match_MaxBits),s),l!=-1&&(u=this.match_main(t,a.substring(a.length-this.Match_MaxBits),s+a.length-this.Match_MaxBits),(u==-1||l>=u)&&(l=-1))):l=this.match_main(t,a,s),l==-1)i[o]=!1,r-=e[o].length2-e[o].length1;else{i[o]=!0,r=l-s;var p;if(u==-1?p=t.substring(l,l+a.length):p=t.substring(l,u+this.Match_MaxBits),a==p)t=t.substring(0,l)+this.diff_text2(e[o].diffs)+t.substring(l+a.length);else{var c=this.diff_main(a,p,!1);if(a.length>this.Match_MaxBits&&this.diff_levenshtein(c)/a.length>this.Patch_DeleteThreshold)i[o]=!1;else{this.diff_cleanupSemanticLossless(c);for(var f=0,m,d=0;do[0][1].length){var s=t-o[0][1].length;o[0][1]=n.substring(o[0][1].length)+o[0][1],i.start1-=s,i.start2-=s,i.length1+=s,i.length2+=s}if(i=e[e.length-1],o=i.diffs,o.length==0||o[o.length-1][0]!=U)o.push(new M.Diff(U,n)),i.length1+=t,i.length2+=t;else if(t>o[o.length-1][1].length){var s=t-o[o.length-1][1].length;o[o.length-1][1]+=n.substring(0,s),i.length1+=s,i.length2+=s}return n};M.prototype.patch_splitMax=function(e){for(var t=this.Match_MaxBits,n=0;n2*t?(a.length1+=p.length,i+=p.length,l=!1,a.diffs.push(new M.Diff(u,p)),r.diffs.shift()):(p=p.substring(0,t-a.length1-this.Patch_Margin),a.length1+=p.length,i+=p.length,u===U?(a.length2+=p.length,o+=p.length):l=!1,a.diffs.push(new M.Diff(u,p)),p==r.diffs[0][1]?r.diffs.shift():r.diffs[0][1]=r.diffs[0][1].substring(p.length))}s=this.diff_text2(a.diffs),s=s.substring(s.length-this.Patch_Margin);var c=this.diff_text1(r.diffs).substring(0,this.Patch_Margin);c!==""&&(a.length1+=c.length,a.length2+=c.length,a.diffs.length!==0&&a.diffs[a.diffs.length-1][0]===U?a.diffs[a.diffs.length-1][1]+=c:a.diffs.push(new M.Diff(U,c))),l||e.splice(++n,0,a)}}};M.prototype.patch_toText=function(e){for(var t=[],n=0;n{(function(e,t){"use strict";typeof define=="function"&&define.amd?define(t):typeof Oo=="object"&&Oo.exports?Oo.exports=t():e.log=t()})(yc,function(){"use strict";var e=function(){},t="undefined",n=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),r=["trace","debug","info","warn","error"];function i(d,h){var g=d[h];if(typeof g.bind=="function")return g.bind(d);try{return Function.prototype.bind.call(g,d)}catch(y){return function(){return Function.prototype.apply.apply(g,[d,arguments])}}}function o(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function s(d){return d==="debug"&&(d="log"),typeof console===t?!1:d==="trace"&&n?o:console[d]!==void 0?i(console,d):console.log!==void 0?i(console,"log"):e}function a(d,h){for(var g=0;g=0&&F<=y.levels.SILENT){if(T=F,$!==!1&&C(F),a.call(y,F,d),typeof console===t&&Fqo});module.exports=Zc(r1);var Z=require("obsidian");function Al(e){return typeof e=="undefined"||e===null}function Xc(e){return typeof e=="object"&&e!==null}function Jc(e){return Array.isArray(e)?e:Al(e)?[]:[e]}function ef(e,t){var n,r,i,o;if(t)for(o=Object.keys(t),n=0,r=o.length;n()=>(n||e((n={exports:{}}).exports,n),n.exports),$l=(e,n)=>{for(var t in n)Tr(e,t,{get:n[t],enumerable:!0})},Nl=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of _m(n))!Mm.call(e,i)&&i!==t&&Tr(e,i,{get:()=>n[i],enumerable:!(r=Pl(n,i))||r.enumerable});return e};var Yn=(e,n,t)=>(t=e!=null?Lm(Bm(e)):{},Nl(n||!e||!e.__esModule?Tr(t,"default",{value:e,enumerable:!0}):t,e)),Im=e=>Nl(Tr({},"__esModule",{value:!0}),e),E=(e,n,t,r)=>{for(var i=r>1?void 0:r?Pl(n,t):n,o=e.length-1,s;o>=0;o--)(s=e[o])&&(i=(r?s(n,t,i):s(i))||i);return r&&i&&Tr(n,t,i),i};var zl=(e,n,t)=>{if(!n.has(e))throw TypeError("Cannot "+t)};var et=(e,n,t)=>(zl(e,n,"read from private field"),t?t.call(e):n.get(e)),qn=(e,n,t)=>{if(n.has(e))throw TypeError("Cannot add the same private member more than once");n instanceof WeakSet?n.add(e):n.set(e,t)},Hl=(e,n,t,r)=>(zl(e,n,"write to private field"),r?r.call(e,t):n.set(e,t),t);var $u=Qi((Bb,Jn)=>{var F=function(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32},ie=-1,se=1,U=0;F.Diff=function(e,n){return[e,n]};F.prototype.diff_main=function(e,n,t,r){typeof r>"u"&&(this.Diff_Timeout<=0?r=Number.MAX_VALUE:r=new Date().getTime()+this.Diff_Timeout*1e3);var i=r;if(e==null||n==null)throw new Error("Null input. (diff_main)");if(e==n)return e?[new F.Diff(U,e)]:[];typeof t>"u"&&(t=!0);var o=t,s=this.diff_commonPrefix(e,n),a=e.substring(0,s);e=e.substring(s),n=n.substring(s),s=this.diff_commonSuffix(e,n);var l=e.substring(e.length-s);e=e.substring(0,e.length-s),n=n.substring(0,n.length-s);var u=this.diff_compute_(e,n,o,i);return a&&u.unshift(new F.Diff(U,a)),l&&u.push(new F.Diff(U,l)),this.diff_cleanupMerge(u),u};F.prototype.diff_compute_=function(e,n,t,r){var i;if(!e)return[new F.Diff(se,n)];if(!n)return[new F.Diff(ie,e)];var o=e.length>n.length?e:n,s=e.length>n.length?n:e,a=o.indexOf(s);if(a!=-1)return i=[new F.Diff(se,o.substring(0,a)),new F.Diff(U,s),new F.Diff(se,o.substring(a+s.length))],e.length>n.length&&(i[0][0]=i[2][0]=ie),i;if(s.length==1)return[new F.Diff(ie,e),new F.Diff(se,n)];var l=this.diff_halfMatch_(e,n);if(l){var u=l[0],p=l[1],c=l[2],m=l[3],f=l[4],d=this.diff_main(u,c,t,r),h=this.diff_main(p,m,t,r);return d.concat([new F.Diff(U,f)],h)}return t&&e.length>100&&n.length>100?this.diff_lineMode_(e,n,r):this.diff_bisect_(e,n,r)};F.prototype.diff_lineMode_=function(e,n,t){var r=this.diff_linesToChars_(e,n);e=r.chars1,n=r.chars2;var i=r.lineArray,o=this.diff_main(e,n,!1,t);this.diff_charsToLines_(o,i),this.diff_cleanupSemantic(o),o.push(new F.Diff(U,""));for(var s=0,a=0,l=0,u="",p="";s=1&&l>=1){o.splice(s-a-l,a+l),s=s-a-l;for(var c=this.diff_main(u,p,!1,t),m=c.length-1;m>=0;m--)o.splice(s,0,c[m]);s=s+c.length}l=0,a=0,u="",p="";break}s++}return o.pop(),o};F.prototype.diff_bisect_=function(e,n,t){for(var r=e.length,i=n.length,o=Math.ceil((r+i)/2),s=o,a=2*o,l=new Array(a),u=new Array(a),p=0;pt);b++){for(var A=-b+f;A<=b-d;A+=2){var O=s+A,L;A==-b||A!=b&&l[O-1]r)d+=2;else if(M>i)f+=2;else if(m){var T=s+c-A;if(T>=0&&T=B)return this.diff_bisectSplit_(e,n,L,M,t)}}}for(var I=-b+h;I<=b-y;I+=2){var T=s+I,B;I==-b||I!=b&&u[T-1]r)y+=2;else if($>i)h+=2;else if(!m){var O=s+c-I;if(O>=0&&O=B)return this.diff_bisectSplit_(e,n,L,M,t)}}}}return[new F.Diff(ie,e),new F.Diff(se,n)]};F.prototype.diff_bisectSplit_=function(e,n,t,r,i){var o=e.substring(0,t),s=n.substring(0,r),a=e.substring(t),l=n.substring(r),u=this.diff_main(o,s,!1,i),p=this.diff_main(a,l,!1,i);return u.concat(p)};F.prototype.diff_linesToChars_=function(e,n){var t=[],r={};t[0]="";function i(l){for(var u="",p=0,c=-1,m=t.length;cr?e=e.substring(t-r):tn.length?e:n,r=e.length>n.length?n:e;if(t.length<4||r.length*2=d.length?[L,M,T,B,O]:null}var s=o(t,r,Math.ceil(t.length/4)),a=o(t,r,Math.ceil(t.length/2)),l;if(!s&&!a)return null;a?s?l=s[4].length>a[4].length?s:a:l=a:l=s;var u,p,c,m;e.length>n.length?(u=l[0],p=l[1],c=l[2],m=l[3]):(c=l[0],m=l[1],u=l[2],p=l[3]);var f=l[4];return[u,p,c,m,f]};F.prototype.diff_cleanupSemantic=function(e){for(var n=!1,t=[],r=0,i=null,o=0,s=0,a=0,l=0,u=0;o0?t[r-1]:-1,s=0,a=0,l=0,u=0,i=null,n=!0)),o++;for(n&&this.diff_cleanupMerge(e),this.diff_cleanupSemanticLossless(e),o=1;o=f?(m>=p.length/2||m>=c.length/2)&&(e.splice(o,0,new F.Diff(U,c.substring(0,m))),e[o-1][1]=p.substring(0,p.length-m),e[o+1][1]=c.substring(m),o++):(f>=p.length/2||f>=c.length/2)&&(e.splice(o,0,new F.Diff(U,p.substring(0,f))),e[o-1][0]=se,e[o-1][1]=c.substring(0,c.length-f),e[o+1][0]=ie,e[o+1][1]=p.substring(f),o++),o++}o++}};F.prototype.diff_cleanupSemanticLossless=function(e){function n(f,d){if(!f||!d)return 6;var h=f.charAt(f.length-1),y=d.charAt(0),b=h.match(F.nonAlphaNumericRegex_),A=y.match(F.nonAlphaNumericRegex_),O=b&&h.match(F.whitespaceRegex_),L=A&&y.match(F.whitespaceRegex_),M=O&&h.match(F.linebreakRegex_),T=L&&y.match(F.linebreakRegex_),B=M&&f.match(F.blanklineEndRegex_),I=T&&d.match(F.blanklineStartRegex_);return B||I?5:M||T?4:b&&!O&&L?3:O||L?2:b||A?1:0}for(var t=1;t=c&&(c=m,l=r,u=i,p=o)}e[t-1][1]!=l&&(l?e[t-1][1]=l:(e.splice(t-1,1),t--),e[t][1]=u,p?e[t+1][1]=p:(e.splice(t+1,1),t--))}t++}};F.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;F.whitespaceRegex_=/\s/;F.linebreakRegex_=/[\r\n]/;F.blanklineEndRegex_=/\n\r?\n$/;F.blanklineStartRegex_=/^\r?\n\r?\n/;F.prototype.diff_cleanupEfficiency=function(e){for(var n=!1,t=[],r=0,i=null,o=0,s=!1,a=!1,l=!1,u=!1;o0?t[r-1]:-1,l=u=!1),n=!0)),o++;n&&this.diff_cleanupMerge(e)};F.prototype.diff_cleanupMerge=function(e){e.push(new F.Diff(U,""));for(var n=0,t=0,r=0,i="",o="",s;n1?(t!==0&&r!==0&&(s=this.diff_commonPrefix(o,i),s!==0&&(n-t-r>0&&e[n-t-r-1][0]==U?e[n-t-r-1][1]+=o.substring(0,s):(e.splice(0,0,new F.Diff(U,o.substring(0,s))),n++),o=o.substring(s),i=i.substring(s)),s=this.diff_commonSuffix(o,i),s!==0&&(e[n][1]=o.substring(o.length-s)+e[n][1],o=o.substring(0,o.length-s),i=i.substring(0,i.length-s))),n-=t+r,e.splice(n,t+r),i.length&&(e.splice(n,0,new F.Diff(ie,i)),n++),o.length&&(e.splice(n,0,new F.Diff(se,o)),n++),n++):n!==0&&e[n-1][0]==U?(e[n-1][1]+=e[n][1],e.splice(n,1)):n++,r=0,t=0,i="",o="";break}e[e.length-1][1]===""&&e.pop();var a=!1;for(n=1;nn));s++)i=t,o=r;return e.length!=s&&e[s][0]===ie?o:o+(n-i)};F.prototype.diff_prettyHtml=function(e){for(var n=[],t=/&/g,r=//g,o=/\n/g,s=0;s");switch(a){case se:n[s]=''+u+"";break;case ie:n[s]=''+u+"";break;case U:n[s]=""+u+"";break}}return n.join("")};F.prototype.diff_text1=function(e){for(var n=[],t=0;tthis.Match_MaxBits)throw new Error("Pattern too long for this browser.");var r=this.match_alphabet_(n),i=this;function o(L,M){var T=L/n.length,B=Math.abs(t-M);return i.Match_Distance?T+B/i.Match_Distance:B?1:T}var s=this.Match_Threshold,a=e.indexOf(n,t);a!=-1&&(s=Math.min(o(0,a),s),a=e.lastIndexOf(n,t+n.length),a!=-1&&(s=Math.min(o(0,a),s)));var l=1<=d;b--){var A=r[e.charAt(b-1)];if(f===0?y[b]=(y[b+1]<<1|1)&A:y[b]=(y[b+1]<<1|1)&A|((m[b+1]|m[b])<<1|1)|m[b+1],y[b]&l){var O=o(f,b-1);if(O<=s)if(s=O,a=b-1,a>t)d=Math.max(1,2*t-a);else break}}if(o(f+1,t)>s)break;m=y}return a};F.prototype.match_alphabet_=function(e){for(var n={},t=0;t"u")r=e,i=this.diff_main(r,n,!0),i.length>2&&(this.diff_cleanupSemantic(i),this.diff_cleanupEfficiency(i));else if(e&&typeof e=="object"&&typeof n>"u"&&typeof t>"u")i=e,r=this.diff_text1(i);else if(typeof e=="string"&&n&&typeof n=="object"&&typeof t>"u")r=e,i=n;else if(typeof e=="string"&&typeof n=="string"&&t&&typeof t=="object")r=e,i=t;else throw new Error("Unknown call format to patch_make.");if(i.length===0)return[];for(var o=[],s=new F.patch_obj,a=0,l=0,u=0,p=r,c=r,m=0;m=2*this.Patch_Margin&&a&&(this.patch_addContext_(s,p),o.push(s),s=new F.patch_obj,a=0,p=c,l=u);break}f!==se&&(l+=d.length),f!==ie&&(u+=d.length)}return a&&(this.patch_addContext_(s,p),o.push(s)),o};F.prototype.patch_deepCopy=function(e){for(var n=[],t=0;tthis.Match_MaxBits?(l=this.match_main(n,a.substring(0,this.Match_MaxBits),s),l!=-1&&(u=this.match_main(n,a.substring(a.length-this.Match_MaxBits),s+a.length-this.Match_MaxBits),(u==-1||l>=u)&&(l=-1))):l=this.match_main(n,a,s),l==-1)i[o]=!1,r-=e[o].length2-e[o].length1;else{i[o]=!0,r=l-s;var p;if(u==-1?p=n.substring(l,l+a.length):p=n.substring(l,u+this.Match_MaxBits),a==p)n=n.substring(0,l)+this.diff_text2(e[o].diffs)+n.substring(l+a.length);else{var c=this.diff_main(a,p,!1);if(a.length>this.Match_MaxBits&&this.diff_levenshtein(c)/a.length>this.Patch_DeleteThreshold)i[o]=!1;else{this.diff_cleanupSemanticLossless(c);for(var m=0,f,d=0;do[0][1].length){var s=n-o[0][1].length;o[0][1]=t.substring(o[0][1].length)+o[0][1],i.start1-=s,i.start2-=s,i.length1+=s,i.length2+=s}if(i=e[e.length-1],o=i.diffs,o.length==0||o[o.length-1][0]!=U)o.push(new F.Diff(U,t)),i.length1+=n,i.length2+=n;else if(n>o[o.length-1][1].length){var s=n-o[o.length-1][1].length;o[o.length-1][1]+=t.substring(0,s),i.length1+=s,i.length2+=s}return t};F.prototype.patch_splitMax=function(e){for(var n=this.Match_MaxBits,t=0;t2*n?(a.length1+=p.length,i+=p.length,l=!1,a.diffs.push(new F.Diff(u,p)),r.diffs.shift()):(p=p.substring(0,n-a.length1-this.Patch_Margin),a.length1+=p.length,i+=p.length,u===U?(a.length2+=p.length,o+=p.length):l=!1,a.diffs.push(new F.Diff(u,p)),p==r.diffs[0][1]?r.diffs.shift():r.diffs[0][1]=r.diffs[0][1].substring(p.length))}s=this.diff_text2(a.diffs),s=s.substring(s.length-this.Patch_Margin);var c=this.diff_text1(r.diffs).substring(0,this.Patch_Margin);c!==""&&(a.length1+=c.length,a.length2+=c.length,a.diffs.length!==0&&a.diffs[a.diffs.length-1][0]===U?a.diffs[a.diffs.length-1][1]+=c:a.diffs.push(new F.Diff(U,c))),l||e.splice(++t,0,a)}}};F.prototype.patch_toText=function(e){for(var n=[],t=0;t{(function(e,n){"use strict";typeof define=="function"&&define.amd?define(n):typeof go=="object"&&go.exports?go.exports=n():e.log=n()})(zu,function(){"use strict";var e=function(){},n="undefined",t=typeof window!==n&&typeof window.navigator!==n&&/Trident\/|MSIE /.test(window.navigator.userAgent),r=["trace","debug","info","warn","error"];function i(d,h){var y=d[h];if(typeof y.bind=="function")return y.bind(d);try{return Function.prototype.bind.call(y,d)}catch{return function(){return Function.prototype.apply.apply(y,[d,arguments])}}}function o(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function s(d){return d==="debug"&&(d="log"),typeof console===n?!1:d==="trace"&&t?o:console[d]!==void 0?i(console,d):console.log!==void 0?i(console,"log"):e}function a(d,h){for(var y=0;y=0&&I<=b.levels.SILENT){if(A=I,$!==!1&&L(I),a.call(b,I,d),typeof console===n&&I{Vu.exports=function(n){return n!=null&&n.constructor!=null&&typeof n.constructor.isBuffer=="function"&&n.constructor.isBuffer(n)}});var ep=Qi((iw,Ju)=>{"use strict";var Oo=Object.prototype.hasOwnProperty,Xu=Object.prototype.toString,Wu=Object.defineProperty,Ku=Object.getOwnPropertyDescriptor,Uu=function(n){return typeof Array.isArray=="function"?Array.isArray(n):Xu.call(n)==="[object Array]"},Gu=function(n){if(!n||Xu.call(n)!=="[object Object]")return!1;var t=Oo.call(n,"constructor"),r=n.constructor&&n.constructor.prototype&&Oo.call(n.constructor.prototype,"isPrototypeOf");if(n.constructor&&!t&&!r)return!1;var i;for(i in n);return typeof i>"u"||Oo.call(n,i)},Zu=function(n,t){Wu&&t.name==="__proto__"?Wu(n,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):n[t.name]=t.newValue},Qu=function(n,t){if(t==="__proto__")if(Oo.call(n,t)){if(Ku)return Ku(n,t).value}else return;return n[t]};Ju.exports=function e(){var n,t,r,i,o,s,a=arguments[0],l=1,u=arguments.length,p=!1;for(typeof a=="boolean"&&(p=a,a=arguments[1]||{},l=2),(a==null||typeof a!="object"&&typeof a!="function")&&(a={});lbs});module.exports=Im(ab);var pe=require("obsidian");function ru(e){return typeof e>"u"||e===null}function Fm(e){return typeof e=="object"&&e!==null}function Rm(e){return Array.isArray(e)?e:ru(e)?[]:[e]}function Dm(e,n){var t,r,i,o;if(n)for(o=Object.keys(n),t=0,r=o.length;ta&&(o=" ... ",t=r-a+o.length),n-r>a&&(s=" ...",n=r+a-s.length),{str:o+e.slice(t,n).replace(/\t/g,"\u2192")+s,pos:r-t+o.length}}function Qo(e,t){return we.repeat(" ",t-e.length)+e}function pf(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),typeof t.indent!="number"&&(t.indent=1),typeof t.linesBefore!="number"&&(t.linesBefore=3),typeof t.linesAfter!="number"&&(t.linesAfter=2);for(var n=/\r?\n|\r|\0/g,r=[0],i=[],o,s=-1;o=n.exec(e.buffer);)i.push(o.index),r.push(o.index+o[0].length),e.position<=o.index&&s<0&&(s=r.length-2);s<0&&(s=r.length-1);var a="",l,u,p=Math.min(e.line+t.linesAfter,i.length).toString().length,c=t.maxLength-(t.indent+p+3);for(l=1;l<=t.linesBefore&&!(s-l<0);l++)u=Go(e.buffer,r[s-l],i[s-l],e.position-(r[s]-r[s-l]),c),a=we.repeat(" ",t.indent)+Qo((e.line-l+1).toString(),p)+" | "+u.str+` -`+a;for(u=Go(e.buffer,r[s],i[s],e.position,c),a+=we.repeat(" ",t.indent)+Qo((e.line+1).toString(),p)+" | "+u.str+` -`,a+=we.repeat("-",t.indent+p+3+u.pos)+`^ -`,l=1;l<=t.linesAfter&&!(s+l>=i.length);l++)u=Go(e.buffer,r[s+l],i[s+l],e.position-(r[s]-r[s+l]),c),a+=we.repeat(" ",t.indent)+Qo((e.line+l+1).toString(),p)+" | "+u.str+` -`;return a.replace(/\n$/,"")}var cf=pf,ff=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],mf=["scalar","sequence","mapping"];function df(e){var t={};return e!==null&&Object.keys(e).forEach(function(n){e[n].forEach(function(r){t[String(r)]=n})}),t}function hf(e,t){if(t=t||{},Object.keys(t).forEach(function(n){if(ff.indexOf(n)===-1)throw new He('Unknown option "'+n+'" is met in definition of "'+e+'" YAML type.')}),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(n){return n},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=df(t.styleAliases||null),mf.indexOf(this.kind)===-1)throw new He('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var Ie=hf;function cl(e,t){var n=[];return e[t].forEach(function(r){var i=n.length;n.forEach(function(o,s){o.tag===r.tag&&o.kind===r.kind&&o.multi===r.multi&&(i=s)}),n[i]=r}),n}function gf(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},t,n;function r(i){i.multi?(e.multi[i.kind].push(i),e.multi.fallback.push(i)):e[i.kind][i.tag]=e.fallback[i.tag]=i}for(t=0,n=arguments.length;t=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),Pf=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function $f(e){return!(e===null||!Pf.test(e)||e[e.length-1]==="_")}function Nf(e){var t,n;return t=e.replace(/_/g,"").toLowerCase(),n=t[0]==="-"?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),t===".inf"?n===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===".nan"?NaN:n*parseFloat(t,10)}var zf=/^[-+]?[0-9]+e/;function Hf(e,t){var n;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(we.isNegativeZero(e))return"-0.0";return n=e.toString(10),zf.test(n)?n.replace("e",".e"):n}function Yf(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||we.isNegativeZero(e))}var jf=new Ie("tag:yaml.org,2002:float",{kind:"scalar",resolve:$f,construct:Nf,predicate:Yf,represent:Hf,defaultStyle:"lowercase"}),qf=kf.extend({implicit:[Sf,Lf,Df,jf]}),Kf=qf,El=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Ll=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function Vf(e){return e===null?!1:El.exec(e)!==null||Ll.exec(e)!==null}function Wf(e){var t,n,r,i,o,s,a,l=0,u=null,p,c,f;if(t=El.exec(e),t===null&&(t=Ll.exec(e)),t===null)throw new Error("Date resolve error");if(n=+t[1],r=+t[2]-1,i=+t[3],!t[4])return new Date(Date.UTC(n,r,i));if(o=+t[4],s=+t[5],a=+t[6],t[7]){for(l=t[7].slice(0,3);l.length<3;)l+="0";l=+l}return t[9]&&(p=+t[10],c=+(t[11]||0),u=(p*60+c)*6e4,t[9]==="-"&&(u=-u)),f=new Date(Date.UTC(n,r,i,o,s,a,l)),u&&f.setTime(f.getTime()-u),f}function Uf(e){return e.toISOString()}var Gf=new Ie("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:Vf,construct:Wf,instanceOf:Date,represent:Uf});function Qf(e){return e==="<<"||e===null}var Zf=new Ie("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Qf}),rs=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;function Xf(e){if(e===null)return!1;var t,n,r=0,i=e.length,o=rs;for(n=0;n64)){if(t<0)return!1;r+=6}return r%8===0}function Jf(e){var t,n,r=e.replace(/[\r\n=]/g,""),i=r.length,o=rs,s=0,a=[];for(t=0;t>16&255),a.push(s>>8&255),a.push(s&255)),s=s<<6|o.indexOf(r.charAt(t));return n=i%4*6,n===0?(a.push(s>>16&255),a.push(s>>8&255),a.push(s&255)):n===18?(a.push(s>>10&255),a.push(s>>2&255)):n===12&&a.push(s>>4&255),new Uint8Array(a)}function em(e){var t="",n=0,r,i,o=e.length,s=rs;for(r=0;r>18&63],t+=s[n>>12&63],t+=s[n>>6&63],t+=s[n&63]),n=(n<<8)+e[r];return i=o%3,i===0?(t+=s[n>>18&63],t+=s[n>>12&63],t+=s[n>>6&63],t+=s[n&63]):i===2?(t+=s[n>>10&63],t+=s[n>>4&63],t+=s[n<<2&63],t+=s[64]):i===1&&(t+=s[n>>2&63],t+=s[n<<4&63],t+=s[64],t+=s[64]),t}function tm(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}var nm=new Ie("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Xf,construct:Jf,predicate:tm,represent:em}),rm=Object.prototype.hasOwnProperty,im=Object.prototype.toString;function om(e){if(e===null)return!0;var t=[],n,r,i,o,s,a=e;for(n=0,r=a.length;n>10)+55296,(e-65536&1023)+56320)}var Rl=new Array(256),Dl=new Array(256);for(Jt=0;Jt<256;Jt++)Rl[Jt]=dl(Jt)?1:0,Dl[Jt]=dl(Jt);var Jt;function Tm(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||_l,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Pl(e,t){var n={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return n.snippet=cf(n),new He(t,n)}function Y(e,t){throw Pl(e,t)}function Di(e,t){e.onWarning&&e.onWarning.call(null,Pl(e,t))}var hl={YAML:function(t,n,r){var i,o,s;t.version!==null&&Y(t,"duplication of %YAML directive"),r.length!==1&&Y(t,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(r[0]),i===null&&Y(t,"ill-formed argument of the YAML directive"),o=parseInt(i[1],10),s=parseInt(i[2],10),o!==1&&Y(t,"unacceptable YAML version of the document"),t.version=r[0],t.checkLineBreaks=s<2,s!==1&&s!==2&&Di(t,"unsupported YAML version of the document")},TAG:function(t,n,r){var i,o;r.length!==2&&Y(t,"TAG directive accepts exactly two arguments"),i=r[0],o=r[1],Bl.test(i)||Y(t,"ill-formed tag handle (first argument) of the TAG directive"),Dt.call(t.tagMap,i)&&Y(t,'there is a previously declared suffix for "'+i+'" tag handle'),Ml.test(o)||Y(t,"ill-formed tag prefix (second argument) of the TAG directive");try{o=decodeURIComponent(o)}catch(s){Y(t,"tag prefix is malformed: "+o)}t.tagMap[i]=o}};function Rt(e,t,n,r){var i,o,s,a;if(t1&&(e.result+=we.repeat(` -`,t-1))}function Sm(e,t,n){var r,i,o,s,a,l,u,p,c=e.kind,f=e.result,m;if(m=e.input.charCodeAt(e.position),Qe(m)||In(m)||m===35||m===38||m===42||m===33||m===124||m===62||m===39||m===34||m===37||m===64||m===96||(m===63||m===45)&&(i=e.input.charCodeAt(e.position+1),Qe(i)||n&&In(i)))return!1;for(e.kind="scalar",e.result="",o=s=e.position,a=!1;m!==0;){if(m===58){if(i=e.input.charCodeAt(e.position+1),Qe(i)||n&&In(i))break}else if(m===35){if(r=e.input.charCodeAt(e.position-1),Qe(r))break}else{if(e.position===e.lineStart&&Ni(e)||n&&In(m))break;if(gt(m))if(l=e.line,u=e.lineStart,p=e.lineIndent,ye(e,!1,-1),e.lineIndent>=t){a=!0,m=e.input.charCodeAt(e.position);continue}else{e.position=s,e.line=l,e.lineStart=u,e.lineIndent=p;break}}a&&(Rt(e,o,s,!1),os(e,e.line-l),o=s=e.position,a=!1),en(m)||(s=e.position+1),m=e.input.charCodeAt(++e.position)}return Rt(e,o,s,!1),e.result?!0:(e.kind=c,e.result=f,!1)}function Am(e,t){var n,r,i;if(n=e.input.charCodeAt(e.position),n!==39)return!1;for(e.kind="scalar",e.result="",e.position++,r=i=e.position;(n=e.input.charCodeAt(e.position))!==0;)if(n===39)if(Rt(e,r,e.position,!0),n=e.input.charCodeAt(++e.position),n===39)r=e.position,e.position++,i=e.position;else return!0;else gt(n)?(Rt(e,r,i,!0),os(e,ye(e,!1,t)),r=i=e.position):e.position===e.lineStart&&Ni(e)?Y(e,"unexpected end of the document within a single quoted scalar"):(e.position++,i=e.position);Y(e,"unexpected end of the stream within a single quoted scalar")}function Cm(e,t){var n,r,i,o,s,a;if(a=e.input.charCodeAt(e.position),a!==34)return!1;for(e.kind="scalar",e.result="",e.position++,n=r=e.position;(a=e.input.charCodeAt(e.position))!==0;){if(a===34)return Rt(e,n,e.position,!0),e.position++,!0;if(a===92){if(Rt(e,n,e.position,!0),a=e.input.charCodeAt(++e.position),gt(a))ye(e,!1,t);else if(a<256&&Rl[a])e.result+=Dl[a],e.position++;else if((s=km(a))>0){for(i=s,o=0;i>0;i--)a=e.input.charCodeAt(++e.position),(s=xm(a))>=0?o=(o<<4)+s:Y(e,"expected hexadecimal character");e.result+=Om(o),e.position++}else Y(e,"unknown escape sequence");n=r=e.position}else gt(a)?(Rt(e,n,r,!0),os(e,ye(e,!1,t)),n=r=e.position):e.position===e.lineStart&&Ni(e)?Y(e,"unexpected end of the document within a double quoted scalar"):(e.position++,r=e.position)}Y(e,"unexpected end of the stream within a double quoted scalar")}function Em(e,t){var n=!0,r,i,o,s=e.tag,a,l=e.anchor,u,p,c,f,m,d=Object.create(null),h,g,y,T;if(T=e.input.charCodeAt(e.position),T===91)p=93,m=!1,a=[];else if(T===123)p=125,m=!0,a={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=a),T=e.input.charCodeAt(++e.position);T!==0;){if(ye(e,!0,t),T=e.input.charCodeAt(e.position),T===p)return e.position++,e.tag=s,e.anchor=l,e.kind=m?"mapping":"sequence",e.result=a,!0;n?T===44&&Y(e,"expected the node content, but found ','"):Y(e,"missed comma between flow collection entries"),g=h=y=null,c=f=!1,T===63&&(u=e.input.charCodeAt(e.position+1),Qe(u)&&(c=f=!0,e.position++,ye(e,!0,t))),r=e.line,i=e.lineStart,o=e.position,Bn(e,t,Mi,!1,!0),g=e.tag,h=e.result,ye(e,!0,t),T=e.input.charCodeAt(e.position),(f||e.line===r)&&T===58&&(c=!0,T=e.input.charCodeAt(++e.position),ye(e,!0,t),Bn(e,t,Mi,!1,!0),y=e.result),m?Fn(e,a,d,g,h,y,r,i,o):c?a.push(Fn(e,null,d,g,h,y,r,i,o)):a.push(h),ye(e,!0,t),T=e.input.charCodeAt(e.position),T===44?(n=!0,T=e.input.charCodeAt(++e.position)):n=!1}Y(e,"unexpected end of the stream within a flow collection")}function Lm(e,t){var n,r,i=Zo,o=!1,s=!1,a=t,l=0,u=!1,p,c;if(c=e.input.charCodeAt(e.position),c===124)r=!1;else if(c===62)r=!0;else return!1;for(e.kind="scalar",e.result="";c!==0;)if(c=e.input.charCodeAt(++e.position),c===43||c===45)Zo===i?i=c===43?fl:gm:Y(e,"repeat of a chomping mode identifier");else if((p=vm(c))>=0)p===0?Y(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?Y(e,"repeat of an indentation width identifier"):(a=t+p-1,s=!0);else break;if(en(c)){do c=e.input.charCodeAt(++e.position);while(en(c));if(c===35)do c=e.input.charCodeAt(++e.position);while(!gt(c)&&c!==0)}for(;c!==0;){for(is(e),e.lineIndent=0,c=e.input.charCodeAt(e.position);(!s||e.lineIndenta&&(a=e.lineIndent),gt(c)){l++;continue}if(e.lineIndentt)&&l!==0)Y(e,"bad indentation of a sequence entry");else if(e.lineIndentt)&&(g&&(s=e.line,a=e.lineStart,l=e.position),Bn(e,t,Ri,!0,i)&&(g?d=e.result:h=e.result),g||(Fn(e,c,f,m,d,h,s,a,l),m=d=h=null),ye(e,!0,-1),T=e.input.charCodeAt(e.position)),(e.line===o||e.lineIndent>t)&&T!==0)Y(e,"bad indentation of a mapping entry");else if(e.lineIndentt?l=1:e.lineIndent===t?l=0:e.lineIndentt?l=1:e.lineIndent===t?l=0:e.lineIndent tag; it should be "scalar", not "'+e.kind+'"'),c=0,f=e.implicitTypes.length;c"),e.result!==null&&d.kind!==e.kind&&Y(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+d.kind+'", not "'+e.kind+'"'),d.resolve(e.result,e.tag)?(e.result=d.construct(e.result,e.tag),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):Y(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||p}function Mm(e){var t=e.position,n,r,i,o=!1,s;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(s=e.input.charCodeAt(e.position))!==0&&(ye(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||s!==37));){for(o=!0,s=e.input.charCodeAt(++e.position),n=e.position;s!==0&&!Qe(s);)s=e.input.charCodeAt(++e.position);for(r=e.input.slice(n,e.position),i=[],r.length<1&&Y(e,"directive name must not be less than one character in length");s!==0;){for(;en(s);)s=e.input.charCodeAt(++e.position);if(s===35){do s=e.input.charCodeAt(++e.position);while(s!==0&&!gt(s));break}if(gt(s))break;for(n=e.position;s!==0&&!Qe(s);)s=e.input.charCodeAt(++e.position);i.push(e.input.slice(n,e.position))}s!==0&&is(e),Dt.call(hl,r)?hl[r](e,r,i):Di(e,'unknown document directive "'+r+'"')}if(ye(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,ye(e,!0,-1)):o&&Y(e,"directives end mark is expected"),Bn(e,e.lineIndent-1,Ri,!1,!0),ye(e,!0,-1),e.checkLineBreaks&&bm.test(e.input.slice(t,e.position))&&Di(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&Ni(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,ye(e,!0,-1));return}if(e.positiona&&(o=" ... ",n=r-a+o.length),t-r>a&&(s=" ...",t=r+a-s.length),{str:o+e.slice(n,t).replace(/\t/g,"\u2192")+s,pos:r-n+o.length}}function Ss(e,n){return xe.repeat(" ",n-e.length)+e}function Vm(e,n){if(n=Object.create(n||null),!e.buffer)return null;n.maxLength||(n.maxLength=79),typeof n.indent!="number"&&(n.indent=1),typeof n.linesBefore!="number"&&(n.linesBefore=3),typeof n.linesAfter!="number"&&(n.linesAfter=2);for(var t=/\r?\n|\r|\0/g,r=[0],i=[],o,s=-1;o=t.exec(e.buffer);)i.push(o.index),r.push(o.index+o[0].length),e.position<=o.index&&s<0&&(s=r.length-2);s<0&&(s=r.length-1);var a="",l,u,p=Math.min(e.line+n.linesAfter,i.length).toString().length,c=n.maxLength-(n.indent+p+3);for(l=1;l<=n.linesBefore&&!(s-l<0);l++)u=vs(e.buffer,r[s-l],i[s-l],e.position-(r[s]-r[s-l]),c),a=xe.repeat(" ",n.indent)+Ss((e.line-l+1).toString(),p)+" | "+u.str+` +`+a;for(u=vs(e.buffer,r[s],i[s],e.position,c),a+=xe.repeat(" ",n.indent)+Ss((e.line+1).toString(),p)+" | "+u.str+` +`,a+=xe.repeat("-",n.indent+p+3+u.pos)+`^ +`,l=1;l<=n.linesAfter&&!(s+l>=i.length);l++)u=vs(e.buffer,r[s+l],i[s+l],e.position-(r[s]-r[s+l]),c),a+=xe.repeat(" ",n.indent)+Ss((e.line+l+1).toString(),p)+" | "+u.str+` +`;return a.replace(/\n$/,"")}var Wm=Vm,Km=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],Um=["scalar","sequence","mapping"];function Gm(e){var n={};return e!==null&&Object.keys(e).forEach(function(t){e[t].forEach(function(r){n[String(r)]=t})}),n}function Zm(e,n){if(n=n||{},Object.keys(n).forEach(function(t){if(Km.indexOf(t)===-1)throw new Ve('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')}),this.options=n,this.tag=e,this.kind=n.kind||null,this.resolve=n.resolve||function(){return!0},this.construct=n.construct||function(t){return t},this.instanceOf=n.instanceOf||null,this.predicate=n.predicate||null,this.represent=n.represent||null,this.representName=n.representName||null,this.defaultStyle=n.defaultStyle||null,this.multi=n.multi||!1,this.styleAliases=Gm(n.styleAliases||null),Um.indexOf(this.kind)===-1)throw new Ve('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var $e=Zm;function Yl(e,n){var t=[];return e[n].forEach(function(r){var i=t.length;t.forEach(function(o,s){o.tag===r.tag&&o.kind===r.kind&&o.multi===r.multi&&(i=s)}),t[i]=r}),t}function Qm(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},n,t;function r(i){i.multi?(e.multi[i.kind].push(i),e.multi.fallback.push(i)):e[i.kind][i.tag]=e.fallback[i.tag]=i}for(n=0,t=arguments.length;n=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),wf=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function xf(e){return!(e===null||!wf.test(e)||e[e.length-1]==="_")}function kf(e){var n,t;return n=e.replace(/_/g,"").toLowerCase(),t=n[0]==="-"?-1:1,"+-".indexOf(n[0])>=0&&(n=n.slice(1)),n===".inf"?t===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:n===".nan"?NaN:t*parseFloat(n,10)}var vf=/^[-+]?[0-9]+e/;function Sf(e,n){var t;if(isNaN(e))switch(n){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(n){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(n){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(xe.isNegativeZero(e))return"-0.0";return t=e.toString(10),vf.test(t)?t.replace("e",".e"):t}function Tf(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||xe.isNegativeZero(e))}var Of=new $e("tag:yaml.org,2002:float",{kind:"scalar",resolve:xf,construct:kf,predicate:Tf,represent:Sf,defaultStyle:"lowercase"}),Af=nf.extend({implicit:[af,cf,bf,Of]}),Cf=Af,ou=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),su=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function Ef(e){return e===null?!1:ou.exec(e)!==null||su.exec(e)!==null}function Lf(e){var n,t,r,i,o,s,a,l=0,u=null,p,c,m;if(n=ou.exec(e),n===null&&(n=su.exec(e)),n===null)throw new Error("Date resolve error");if(t=+n[1],r=+n[2]-1,i=+n[3],!n[4])return new Date(Date.UTC(t,r,i));if(o=+n[4],s=+n[5],a=+n[6],n[7]){for(l=n[7].slice(0,3);l.length<3;)l+="0";l=+l}return n[9]&&(p=+n[10],c=+(n[11]||0),u=(p*60+c)*6e4,n[9]==="-"&&(u=-u)),m=new Date(Date.UTC(t,r,i,o,s,a,l)),u&&m.setTime(m.getTime()-u),m}function _f(e){return e.toISOString()}var Bf=new $e("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:Ef,construct:Lf,instanceOf:Date,represent:_f});function Mf(e){return e==="<<"||e===null}var If=new $e("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Mf}),_s=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function Ff(e){if(e===null)return!1;var n,t,r=0,i=e.length,o=_s;for(t=0;t64)){if(n<0)return!1;r+=6}return r%8===0}function Rf(e){var n,t,r=e.replace(/[\r\n=]/g,""),i=r.length,o=_s,s=0,a=[];for(n=0;n>16&255),a.push(s>>8&255),a.push(s&255)),s=s<<6|o.indexOf(r.charAt(n));return t=i%4*6,t===0?(a.push(s>>16&255),a.push(s>>8&255),a.push(s&255)):t===18?(a.push(s>>10&255),a.push(s>>2&255)):t===12&&a.push(s>>4&255),new Uint8Array(a)}function Df(e){var n="",t=0,r,i,o=e.length,s=_s;for(r=0;r>18&63],n+=s[t>>12&63],n+=s[t>>6&63],n+=s[t&63]),t=(t<<8)+e[r];return i=o%3,i===0?(n+=s[t>>18&63],n+=s[t>>12&63],n+=s[t>>6&63],n+=s[t&63]):i===2?(n+=s[t>>10&63],n+=s[t>>4&63],n+=s[t<<2&63],n+=s[64]):i===1&&(n+=s[t>>2&63],n+=s[t<<4&63],n+=s[64],n+=s[64]),n}function Pf(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}var $f=new $e("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Ff,construct:Rf,predicate:Pf,represent:Df}),Nf=Object.prototype.hasOwnProperty,zf=Object.prototype.toString;function Hf(e){if(e===null)return!0;var n=[],t,r,i,o,s,a=e;for(t=0,r=a.length;t>10)+55296,(e-65536&1023)+56320)}var mu=new Array(256),fu=new Array(256);for(rn=0;rn<256;rn++)mu[rn]=Vl(rn)?1:0,fu[rn]=Vl(rn);var rn;function sd(e,n){this.input=e,this.filename=n.filename||null,this.schema=n.schema||au,this.onWarning=n.onWarning||null,this.legacy=n.legacy||!1,this.json=n.json||!1,this.listener=n.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function du(e,n){var t={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return t.snippet=Wm(t),new Ve(n,t)}function q(e,n){throw du(e,n)}function eo(e,n){e.onWarning&&e.onWarning.call(null,du(e,n))}var Wl={YAML:function(n,t,r){var i,o,s;n.version!==null&&q(n,"duplication of %YAML directive"),r.length!==1&&q(n,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(r[0]),i===null&&q(n,"ill-formed argument of the YAML directive"),o=parseInt(i[1],10),s=parseInt(i[2],10),o!==1&&q(n,"unacceptable YAML version of the document"),n.version=r[0],n.checkLineBreaks=s<2,s!==1&&s!==2&&eo(n,"unsupported YAML version of the document")},TAG:function(n,t,r){var i,o;r.length!==2&&q(n,"TAG directive accepts exactly two arguments"),i=r[0],o=r[1],pu.test(i)||q(n,"ill-formed tag handle (first argument) of the TAG directive"),Ht.call(n.tagMap,i)&&q(n,'there is a previously declared suffix for "'+i+'" tag handle'),cu.test(o)||q(n,"ill-formed tag prefix (second argument) of the TAG directive");try{o=decodeURIComponent(o)}catch{q(n,"tag prefix is malformed: "+o)}n.tagMap[i]=o}};function zt(e,n,t,r){var i,o,s,a;if(n1&&(e.result+=xe.repeat(` +`,n-1))}function ad(e,n,t){var r,i,o,s,a,l,u,p,c=e.kind,m=e.result,f;if(f=e.input.charCodeAt(e.position),Xe(f)||Vn(f)||f===35||f===38||f===42||f===33||f===124||f===62||f===39||f===34||f===37||f===64||f===96||(f===63||f===45)&&(i=e.input.charCodeAt(e.position+1),Xe(i)||t&&Vn(i)))return!1;for(e.kind="scalar",e.result="",o=s=e.position,a=!1;f!==0;){if(f===58){if(i=e.input.charCodeAt(e.position+1),Xe(i)||t&&Vn(i))break}else if(f===35){if(r=e.input.charCodeAt(e.position-1),Xe(r))break}else{if(e.position===e.lineStart&&ro(e)||t&&Vn(f))break;if(wt(f))if(l=e.line,u=e.lineStart,p=e.lineIndent,ye(e,!1,-1),e.lineIndent>=n){a=!0,f=e.input.charCodeAt(e.position);continue}else{e.position=s,e.line=l,e.lineStart=u,e.lineIndent=p;break}}a&&(zt(e,o,s,!1),Ms(e,e.line-l),o=s=e.position,a=!1),on(f)||(s=e.position+1),f=e.input.charCodeAt(++e.position)}return zt(e,o,s,!1),e.result?!0:(e.kind=c,e.result=m,!1)}function ld(e,n){var t,r,i;if(t=e.input.charCodeAt(e.position),t!==39)return!1;for(e.kind="scalar",e.result="",e.position++,r=i=e.position;(t=e.input.charCodeAt(e.position))!==0;)if(t===39)if(zt(e,r,e.position,!0),t=e.input.charCodeAt(++e.position),t===39)r=e.position,e.position++,i=e.position;else return!0;else wt(t)?(zt(e,r,i,!0),Ms(e,ye(e,!1,n)),r=i=e.position):e.position===e.lineStart&&ro(e)?q(e,"unexpected end of the document within a single quoted scalar"):(e.position++,i=e.position);q(e,"unexpected end of the stream within a single quoted scalar")}function ud(e,n){var t,r,i,o,s,a;if(a=e.input.charCodeAt(e.position),a!==34)return!1;for(e.kind="scalar",e.result="",e.position++,t=r=e.position;(a=e.input.charCodeAt(e.position))!==0;){if(a===34)return zt(e,t,e.position,!0),e.position++,!0;if(a===92){if(zt(e,t,e.position,!0),a=e.input.charCodeAt(++e.position),wt(a))ye(e,!1,n);else if(a<256&&mu[a])e.result+=fu[a],e.position++;else if((s=rd(a))>0){for(i=s,o=0;i>0;i--)a=e.input.charCodeAt(++e.position),(s=nd(a))>=0?o=(o<<4)+s:q(e,"expected hexadecimal character");e.result+=od(o),e.position++}else q(e,"unknown escape sequence");t=r=e.position}else wt(a)?(zt(e,t,r,!0),Ms(e,ye(e,!1,n)),t=r=e.position):e.position===e.lineStart&&ro(e)?q(e,"unexpected end of the document within a double quoted scalar"):(e.position++,r=e.position)}q(e,"unexpected end of the stream within a double quoted scalar")}function pd(e,n){var t=!0,r,i,o,s=e.tag,a,l=e.anchor,u,p,c,m,f,d=Object.create(null),h,y,b,A;if(A=e.input.charCodeAt(e.position),A===91)p=93,f=!1,a=[];else if(A===123)p=125,f=!0,a={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=a),A=e.input.charCodeAt(++e.position);A!==0;){if(ye(e,!0,n),A=e.input.charCodeAt(e.position),A===p)return e.position++,e.tag=s,e.anchor=l,e.kind=f?"mapping":"sequence",e.result=a,!0;t?A===44&&q(e,"expected the node content, but found ','"):q(e,"missed comma between flow collection entries"),y=h=b=null,c=m=!1,A===63&&(u=e.input.charCodeAt(e.position+1),Xe(u)&&(c=m=!0,e.position++,ye(e,!0,n))),r=e.line,i=e.lineStart,o=e.position,Kn(e,n,Xi,!1,!0),y=e.tag,h=e.result,ye(e,!0,n),A=e.input.charCodeAt(e.position),(m||e.line===r)&&A===58&&(c=!0,A=e.input.charCodeAt(++e.position),ye(e,!0,n),Kn(e,n,Xi,!1,!0),b=e.result),f?Wn(e,a,d,y,h,b,r,i,o):c?a.push(Wn(e,null,d,y,h,b,r,i,o)):a.push(h),ye(e,!0,n),A=e.input.charCodeAt(e.position),A===44?(t=!0,A=e.input.charCodeAt(++e.position)):t=!1}q(e,"unexpected end of the stream within a flow collection")}function cd(e,n){var t,r,i=Ts,o=!1,s=!1,a=n,l=0,u=!1,p,c;if(c=e.input.charCodeAt(e.position),c===124)r=!1;else if(c===62)r=!0;else return!1;for(e.kind="scalar",e.result="";c!==0;)if(c=e.input.charCodeAt(++e.position),c===43||c===45)Ts===i?i=c===43?ql:Xf:q(e,"repeat of a chomping mode identifier");else if((p=id(c))>=0)p===0?q(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?q(e,"repeat of an indentation width identifier"):(a=n+p-1,s=!0);else break;if(on(c)){do c=e.input.charCodeAt(++e.position);while(on(c));if(c===35)do c=e.input.charCodeAt(++e.position);while(!wt(c)&&c!==0)}for(;c!==0;){for(Bs(e),e.lineIndent=0,c=e.input.charCodeAt(e.position);(!s||e.lineIndenta&&(a=e.lineIndent),wt(c)){l++;continue}if(e.lineIndentn)&&l!==0)q(e,"bad indentation of a sequence entry");else if(e.lineIndentn)&&(y&&(s=e.line,a=e.lineStart,l=e.position),Kn(e,n,Ji,!0,i)&&(y?d=e.result:h=e.result),y||(Wn(e,c,m,f,d,h,s,a,l),f=d=h=null),ye(e,!0,-1),A=e.input.charCodeAt(e.position)),(e.line===o||e.lineIndent>n)&&A!==0)q(e,"bad indentation of a mapping entry");else if(e.lineIndentn?l=1:e.lineIndent===n?l=0:e.lineIndentn?l=1:e.lineIndent===n?l=0:e.lineIndent tag; it should be "scalar", not "'+e.kind+'"'),c=0,m=e.implicitTypes.length;c"),e.result!==null&&d.kind!==e.kind&&q(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+d.kind+'", not "'+e.kind+'"'),d.resolve(e.result,e.tag)?(e.result=d.construct(e.result,e.tag),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):q(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||p}function gd(e){var n=e.position,t,r,i,o=!1,s;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(s=e.input.charCodeAt(e.position))!==0&&(ye(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||s!==37));){for(o=!0,s=e.input.charCodeAt(++e.position),t=e.position;s!==0&&!Xe(s);)s=e.input.charCodeAt(++e.position);for(r=e.input.slice(t,e.position),i=[],r.length<1&&q(e,"directive name must not be less than one character in length");s!==0;){for(;on(s);)s=e.input.charCodeAt(++e.position);if(s===35){do s=e.input.charCodeAt(++e.position);while(s!==0&&!wt(s));break}if(wt(s))break;for(t=e.position;s!==0&&!Xe(s);)s=e.input.charCodeAt(++e.position);i.push(e.input.slice(t,e.position))}s!==0&&Bs(e),Ht.call(Wl,r)?Wl[r](e,r,i):eo(e,'unknown document directive "'+r+'"')}if(ye(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,ye(e,!0,-1)):o&&q(e,"directives end mark is expected"),Kn(e,e.lineIndent-1,Ji,!1,!0),ye(e,!0,-1),e.checkLineBreaks&&ed.test(e.input.slice(n,e.position))&&eo(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&ro(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,ye(e,!0,-1));return}if(e.position"u"&&(t=n,n=null);var r=hu(e,t);if(typeof n!="function")return r;for(var i=0,o=r.length;i=55296&&n<=56319&&t+1=56320&&r<=57343)?(n-55296)*1024+r-56320+65536:n}function Wl(e){var t=/^\n* /;return t.test(e)}var Ul=1,ts=2,Gl=3,Ql=4,_n=5;function pd(e,t,n,r,i,o,s,a){var l,u=0,p=null,c=!1,f=!1,m=r!==-1,d=-1,h=ld(sr(e,0))&&ud(sr(e,e.length-1));if(t||s)for(l=0;l=65536?l+=2:l++){if(u=sr(e,l),!pr(u))return _n;h=h&&xl(u,p,a),p=u}else{for(l=0;l=65536?l+=2:l++){if(u=sr(e,l),u===lr)c=!0,m&&(f=f||l-d-1>r&&e[d+1]!==" ",d=l);else if(!pr(u))return _n;h=h&&xl(u,p,a),p=u}f=f||m&&l-d-1>r&&e[d+1]!==" "}return!c&&!f?h&&!s&&!i(e)?Ul:o===ur?_n:ts:n>9&&Wl(e)?_n:s?o===ur?_n:ts:f?Ql:Gl}function cd(e,t,n,r,i){e.dump=function(){if(t.length===0)return e.quotingType===ur?'""':"''";if(!e.noCompatMode&&(td.indexOf(t)!==-1||nd.test(t)))return e.quotingType===ur?'"'+t+'"':"'"+t+"'";var o=e.indent*Math.max(1,n),s=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-o),a=r||e.flowLevel>-1&&n>=e.flowLevel;function l(u){return ad(e,u)}switch(pd(t,a,e.indent,s,l,e.quotingType,e.forceQuotes&&!r,i)){case Ul:return t;case ts:return"'"+t.replace(/'/g,"''")+"'";case Gl:return"|"+kl(t,e.indent)+vl(bl(t,o));case Ql:return">"+kl(t,e.indent)+vl(bl(fd(t,s),o));case _n:return'"'+md(t)+'"';default:throw new He("impossible error: invalid scalar style")}}()}function kl(e,t){var n=Wl(e)?String(t):"",r=e[e.length-1]===` +`&&(o+=t),o+=s;return o}function Cs(e,n){return` +`+xe.repeat(" ",e.indent*n)}function qd(e,n){var t,r,i;for(t=0,r=e.implicitTypes.length;t=55296&&t<=56319&&n+1=56320&&r<=57343)?(t-55296)*1024+r-56320+65536:t}function Tu(e){var n=/^\n* /;return n.test(e)}var Ou=1,Es=2,Au=3,Cu=4,jn=5;function Wd(e,n,t,r,i,o,s,a){var l,u=0,p=null,c=!1,m=!1,f=r!==-1,d=-1,h=jd(Or(e,0))&&Vd(Or(e,e.length-1));if(n||s)for(l=0;l=65536?l+=2:l++){if(u=Or(e,l),!Lr(u))return jn;h=h&&Ql(u,p,a),p=u}else{for(l=0;l=65536?l+=2:l++){if(u=Or(e,l),u===Cr)c=!0,f&&(m=m||l-d-1>r&&e[d+1]!==" ",d=l);else if(!Lr(u))return jn;h=h&&Ql(u,p,a),p=u}m=m||f&&l-d-1>r&&e[d+1]!==" "}return!c&&!m?h&&!s&&!i(e)?Ou:o===Er?jn:Es:t>9&&Tu(e)?jn:s?o===Er?jn:Es:m?Cu:Au}function Kd(e,n,t,r,i){e.dump=function(){if(n.length===0)return e.quotingType===Er?'""':"''";if(!e.noCompatMode&&(Pd.indexOf(n)!==-1||$d.test(n)))return e.quotingType===Er?'"'+n+'"':"'"+n+"'";var o=e.indent*Math.max(1,t),s=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-o),a=r||e.flowLevel>-1&&t>=e.flowLevel;function l(u){return qd(e,u)}switch(Wd(n,a,e.indent,s,l,e.quotingType,e.forceQuotes&&!r,i)){case Ou:return n;case Es:return"'"+n.replace(/'/g,"''")+"'";case Au:return"|"+Xl(n,e.indent)+Jl(Gl(n,o));case Cu:return">"+Xl(n,e.indent)+Jl(Gl(Ud(n,s),o));case jn:return'"'+Gd(n)+'"';default:throw new Ve("impossible error: invalid scalar style")}}()}function Xl(e,n){var t=Tu(e)?String(n):"",r=e[e.length-1]===` `,i=r&&(e[e.length-2]===` `||e===` -`),o=i?"+":r?"":"-";return n+o+` -`}function vl(e){return e[e.length-1]===` -`?e.slice(0,-1):e}function fd(e,t){for(var n=/(\n+)([^\n]*)/g,r=function(){var u=e.indexOf(` -`);return u=u!==-1?u:e.length,n.lastIndex=u,Ol(e.slice(0,u),t)}(),i=e[0]===` -`||e[0]===" ",o,s;s=n.exec(e);){var a=s[1],l=s[2];o=l[0]===" ",r+=a+(!i&&!o&&l!==""?` -`:"")+Ol(l,t),i=o}return r}function Ol(e,t){if(e===""||e[0]===" ")return e;for(var n=/ [^ ]/g,r,i=0,o,s=0,a=0,l="";r=n.exec(e);)a=r.index,a-i>t&&(o=s>i?s:a,l+=` +`),o=i?"+":r?"":"-";return t+o+` +`}function Jl(e){return e[e.length-1]===` +`?e.slice(0,-1):e}function Ud(e,n){for(var t=/(\n+)([^\n]*)/g,r=function(){var u=e.indexOf(` +`);return u=u!==-1?u:e.length,t.lastIndex=u,eu(e.slice(0,u),n)}(),i=e[0]===` +`||e[0]===" ",o,s;s=t.exec(e);){var a=s[1],l=s[2];o=l[0]===" ",r+=a+(!i&&!o&&l!==""?` +`:"")+eu(l,n),i=o}return r}function eu(e,n){if(e===""||e[0]===" ")return e;for(var t=/ [^ ]/g,r,i=0,o,s=0,a=0,l="";r=t.exec(e);)a=r.index,a-i>n&&(o=s>i?s:a,l+=` `+e.slice(i,o),i=o+1),s=a;return l+=` -`,e.length-i>t&&s>i?l+=e.slice(i,s)+` -`+e.slice(s+1):l+=e.slice(i),l.slice(1)}function md(e){for(var t="",n=0,r,i=0;i=65536?i+=2:i++)n=sr(e,i),r=Fe[n],!r&&pr(n)?(t+=e[i],n>=65536&&(t+=e[i+1])):t+=r||id(n);return t}function dd(e,t,n){var r="",i=e.tag,o,s,a;for(o=0,s=n.length;o1024&&(p+="? "),p+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),St(e,t,u,!1,!1)&&(p+=e.dump,r+=p));e.tag=i,e.dump="{"+r+"}"}function gd(e,t,n,r){var i="",o=e.tag,s=Object.keys(n),a,l,u,p,c,f;if(e.sortKeys===!0)s.sort();else if(typeof e.sortKeys=="function")s.sort(e.sortKeys);else if(e.sortKeys)throw new He("sortKeys must be a boolean or a function");for(a=0,l=s.length;a1024,c&&(e.dump&&lr===e.dump.charCodeAt(0)?f+="?":f+="? "),f+=e.dump,c&&(f+=es(e,t)),St(e,t+1,p,!0,c)&&(e.dump&&lr===e.dump.charCodeAt(0)?f+=":":f+=": ",f+=e.dump,i+=f));e.tag=o,e.dump=i||"{}"}function Sl(e,t,n){var r,i,o,s,a,l;for(i=n?e.explicitTypes:e.implicitTypes,o=0,s=i.length;o tag resolver accepts not "'+l+'" style');e.dump=r}return!0}return!1}function St(e,t,n,r,i,o,s){e.tag=null,e.dump=n,Sl(e,n,!1)||Sl(e,n,!0);var a=zl.call(e.dump),l=r,u;r&&(r=e.flowLevel<0||e.flowLevel>t);var p=a==="[object Object]"||a==="[object Array]",c,f;if(p&&(c=e.duplicates.indexOf(n),f=c!==-1),(e.tag!==null&&e.tag!=="?"||f||e.indent!==2&&t>0)&&(i=!1),f&&e.usedDuplicates[c])e.dump="*ref_"+c;else{if(p&&f&&!e.usedDuplicates[c]&&(e.usedDuplicates[c]=!0),a==="[object Object]")r&&Object.keys(e.dump).length!==0?(gd(e,t,e.dump,i),f&&(e.dump="&ref_"+c+e.dump)):(hd(e,t,e.dump),f&&(e.dump="&ref_"+c+" "+e.dump));else if(a==="[object Array]")r&&e.dump.length!==0?(e.noArrayIndent&&!s&&t>0?Tl(e,t-1,e.dump,i):Tl(e,t,e.dump,i),f&&(e.dump="&ref_"+c+e.dump)):(dd(e,t,e.dump),f&&(e.dump="&ref_"+c+" "+e.dump));else if(a==="[object String]")e.tag!=="?"&&cd(e,e.dump,t,o,l);else{if(a==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new He("unacceptable kind of an object to dump "+a)}e.tag!==null&&e.tag!=="?"&&(u=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?u="!"+u:u.slice(0,18)==="tag:yaml.org,2002:"?u="!!"+u.slice(18):u="!<"+u+">",e.dump=u+" "+e.dump)}return!0}function yd(e,t){var n=[],r=[],i,o;for(ns(e,n,r),i=0,o=r.length;in&&s>i?l+=e.slice(i,s)+` +`+e.slice(s+1):l+=e.slice(i),l.slice(1)}function Gd(e){for(var n="",t=0,r,i=0;i=65536?i+=2:i++)t=Or(e,i),r=Ne[t],!r&&Lr(t)?(n+=e[i],t>=65536&&(n+=e[i+1])):n+=r||zd(t);return n}function Zd(e,n,t){var r="",i=e.tag,o,s,a;for(o=0,s=t.length;o"u"&&Lt(e,n,null,!1,!1))&&(r!==""&&(r+=","+(e.condenseFlow?"":" ")),r+=e.dump);e.tag=i,e.dump="["+r+"]"}function tu(e,n,t,r){var i="",o=e.tag,s,a,l;for(s=0,a=t.length;s"u"&&Lt(e,n+1,null,!0,!0,!1,!0))&&((!r||i!=="")&&(i+=Cs(e,n)),e.dump&&Cr===e.dump.charCodeAt(0)?i+="-":i+="- ",i+=e.dump);e.tag=o,e.dump=i||"[]"}function Qd(e,n,t){var r="",i=e.tag,o=Object.keys(t),s,a,l,u,p;for(s=0,a=o.length;s1024&&(p+="? "),p+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),Lt(e,n,u,!1,!1)&&(p+=e.dump,r+=p));e.tag=i,e.dump="{"+r+"}"}function Xd(e,n,t,r){var i="",o=e.tag,s=Object.keys(t),a,l,u,p,c,m;if(e.sortKeys===!0)s.sort();else if(typeof e.sortKeys=="function")s.sort(e.sortKeys);else if(e.sortKeys)throw new Ve("sortKeys must be a boolean or a function");for(a=0,l=s.length;a1024,c&&(e.dump&&Cr===e.dump.charCodeAt(0)?m+="?":m+="? "),m+=e.dump,c&&(m+=Cs(e,n)),Lt(e,n+1,p,!0,c)&&(e.dump&&Cr===e.dump.charCodeAt(0)?m+=":":m+=": ",m+=e.dump,i+=m));e.tag=o,e.dump=i||"{}"}function nu(e,n,t){var r,i,o,s,a,l;for(i=t?e.explicitTypes:e.implicitTypes,o=0,s=i.length;o tag resolver accepts not "'+l+'" style');e.dump=r}return!0}return!1}function Lt(e,n,t,r,i,o,s){e.tag=null,e.dump=t,nu(e,t,!1)||nu(e,t,!0);var a=yu.call(e.dump),l=r,u;r&&(r=e.flowLevel<0||e.flowLevel>n);var p=a==="[object Object]"||a==="[object Array]",c,m;if(p&&(c=e.duplicates.indexOf(t),m=c!==-1),(e.tag!==null&&e.tag!=="?"||m||e.indent!==2&&n>0)&&(i=!1),m&&e.usedDuplicates[c])e.dump="*ref_"+c;else{if(p&&m&&!e.usedDuplicates[c]&&(e.usedDuplicates[c]=!0),a==="[object Object]")r&&Object.keys(e.dump).length!==0?(Xd(e,n,e.dump,i),m&&(e.dump="&ref_"+c+e.dump)):(Qd(e,n,e.dump),m&&(e.dump="&ref_"+c+" "+e.dump));else if(a==="[object Array]")r&&e.dump.length!==0?(e.noArrayIndent&&!s&&n>0?tu(e,n-1,e.dump,i):tu(e,n,e.dump,i),m&&(e.dump="&ref_"+c+e.dump)):(Zd(e,n,e.dump),m&&(e.dump="&ref_"+c+" "+e.dump));else if(a==="[object String]")e.tag!=="?"&&Kd(e,e.dump,n,o,l);else{if(a==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new Ve("unacceptable kind of an object to dump "+a)}e.tag!==null&&e.tag!=="?"&&(u=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?u="!"+u:u.slice(0,18)==="tag:yaml.org,2002:"?u="!!"+u.slice(18):u="!<"+u+">",e.dump=u+" "+e.dump)}return!0}function Jd(e,n){var t=[],r=[],i,o;for(Ls(e,t,r),i=0,o=r.length;i(i=!0,r));return i||(o=`${e}${r}`),o}function Te(e,t){let n=e.match(cs(t));return n==null?null:n[1]}function tn(e,t){return e.replace(cs(t),"")}function tt(e){if(e==null)return null;let t=Zl(e.replace(/\n(\t)+/g,` - `));return t==null?{}:t}function Je(e,t){switch(typeof e=="string"&&(e=[e]),t){case"single-line":return e==null||e.length===0?" []":" "+ps(e);case"multi-line":return e==null||e.length===0?` +`+e),e}function Oe(e,n){if(!e.match(Te))return e;let t=e.match(Te)[0],r=n(t);return e=e.replace(t,ze(r)),e}function $s(e){return new RegExp(`^([\\t ]*)${e}:[ \\t]*(\\S.*|(?:(?:\\n *- \\S.*)|((?:\\n *- *))*|(\\n([ \\t]+[^\\n]*))*)*)\\n`,"m")}function Ae(e,n,t){let r=`${n}:${t} +`,i=!1,o=e.replace($s(n),(s,a)=>(i=!0,a+r));return i||(o=`${e}${r}`),o}function Ce(e,n){let t=e.match($s(n));return t==null?null:t[2]}function sn(e,n){return e.replace($s(n),"")}function ot(e){if(e==null)return null;let n=Eu(e.replace(/\n(\t)+/g,` + `));return n??{}}function nt(e,n){switch(typeof e=="string"&&(e=[e]),n){case"single-line":return e==null||e.length===0?" []":" "+Ps(e);case"multi-line":return e==null||e.length===0?` - `:` - `+e.join(` - - `);case"single string to single-line":return e==null||e.length===0?" ":e.length===1?" "+e[0]:" "+ps(e);case"single string to multi-line":return e==null||e.length===0?" ":e.length===1?" "+e[0]:` + - `);case"single string to single-line":return e==null||e.length===0?" ":e.length===1?" "+e[0]:" "+Ps(e);case"single string to multi-line":return e==null||e.length===0?" ":e.length===1?" "+e[0]:` - `+e.join(` - - `);case"single string space delimited":return e==null||e.length===0?" ":e.length===1?" "+e[0]:" "+e.join(" ");case"single string comma delimited":return e==null||e.length===0?" ":e.length===1?" "+e[0]:" "+e.join(", ");case"single-line space delimited":return e==null||e.length===0?" []":e.length===1?" "+e[0]:" "+ps(e).replaceAll(", "," ")}}function ps(e){return e==null||e.length===0?"[]":"["+e.join(", ")+"]"}function bt(e){if(e==null||e.length===0)return null;if(e=e.trimEnd(),e.startsWith("[")){if(e=e.substring(1),e.endsWith("]")&&(e=e.substring(0,e.length-1)),e.length===0)return null;let t=e.split(", ");return t=t.length>1?t:t[0].split(","),t.filter(n=>n!="")}if(e.includes(` -`)){let t=e.split(/[ \t]*\n[ \t]*-[ \t]*/);return t.splice(0,1),t=t.filter(n=>n!=""),t==null||t.length===0?null:t}return e}function Hi(e){return typeof e=="string"?e.includes(",")?e.split(", "):e.split(" "):e}function Yi(e){return typeof e=="string"?e.split(", "):e}var jn=require("obsidian");var dr=function(e){if(e==null)return Cd;if(typeof e=="string")return Ad(e);if(typeof e=="object")return Array.isArray(e)?Td(e):Sd(e);if(typeof e=="function")return ji(e);throw new Error("Expected function, string, or object as test")};function Td(e){let t=[],n=-1;for(;++n":""))+")"})),f;function f(){let m=[],d,h,g;if((!t||i(a,l,u[u.length-1]||null))&&(m=Ed(n(a,u)),m[0]===hr))return m;if(a.children&&m[0]!==ou)for(h=(r?a.children.length:-1)+o,g=u.concat(a);h>-1&&hs.length,l;a&&s.push(i);try{l=e(...s)}catch(u){let p=u;if(a&&n)throw p;return i(p)}a||(l instanceof Promise?l.then(o,i):l instanceof Error?i(l):o(l))}function i(s,...a){n||(n=!0,t(s,...a))}function o(s){i(null,s)}}var Ou=En(ms(),1);var Rn={}.hasOwnProperty;function rn(e){return!e||typeof e!="object"?"":Rn.call(e,"position")||Rn.call(e,"type")?bu(e.position):Rn.call(e,"start")||Rn.call(e,"end")?bu(e):Rn.call(e,"line")||Rn.call(e,"column")?ds(e):""}function ds(e){return wu(e&&e.line)+":"+wu(e&&e.column)}function bu(e){return ds(e&&e.start)+"-"+ds(e&&e.end)}function wu(e){return e&&typeof e=="number"?e:1}var Ye=class extends Error{constructor(t,n,r){var i=[null,null],o={start:{line:null,column:null},end:{line:null,column:null}},s;super(),typeof n=="string"&&(r=n,n=null),typeof r=="string"&&(s=r.indexOf(":"),s===-1?i[1]=r:(i[0]=r.slice(0,s),i[1]=r.slice(s+1))),n&&("type"in n||"position"in n?n.position&&(o=n.position):"start"in n||"end"in n?o=n:("line"in n||"column"in n)&&(o.start=n)),this.name=rn(n)||"1:1",this.message=typeof t=="object"?t.message:t,this.stack=typeof t=="object"?t.stack:"",this.reason=this.message,this.line=o.start.line,this.column=o.start.column,this.source=i[0],this.ruleId=i[1],this.position=o,this.file,this.fatal,this.url,this.note}};Ye.prototype.file="";Ye.prototype.name="";Ye.prototype.reason="";Ye.prototype.message="";Ye.prototype.stack="";Ye.prototype.fatal=null;Ye.prototype.column=null;Ye.prototype.line=null;Ye.prototype.source=null;Ye.prototype.ruleId=null;Ye.prototype.position=null;var ut={basename:_d,dirname:Id,extname:Fd,join:Bd,sep:"/"};function _d(e,t){if(t!==void 0&&typeof t!="string")throw new TypeError('"ext" argument must be a string');yr(e);let n=0,r=-1,i=e.length,o;if(t===void 0||t.length===0||t.length>e.length){for(;i--;)if(e.charCodeAt(i)===47){if(o){n=i+1;break}}else r<0&&(o=!0,r=i+1);return r<0?"":e.slice(n,r)}if(t===e)return"";let s=-1,a=t.length-1;for(;i--;)if(e.charCodeAt(i)===47){if(o){n=i+1;break}}else s<0&&(o=!0,s=i+1),a>-1&&(e.charCodeAt(i)===t.charCodeAt(a--)?a<0&&(r=i):(a=-1,r=s));return n===r?r=s:r<0&&(r=e.length),e.slice(n,r)}function Id(e){if(yr(e),e.length===0)return".";let t=-1,n=e.length,r;for(;--n;)if(e.charCodeAt(n)===47){if(r){t=n;break}}else r||(r=!0);return t<0?e.charCodeAt(0)===47?"/":".":t===1&&e.charCodeAt(0)===47?"//":e.slice(0,t)}function Fd(e){yr(e);let t=e.length,n=-1,r=0,i=-1,o=0,s;for(;t--;){let a=e.charCodeAt(t);if(a===47){if(s){r=t+1;break}continue}n<0&&(s=!0,n=t+1),a===46?i<0?i=t:o!==1&&(o=1):i>-1&&(o=-1)}return i<0||n<0||o===0||o===1&&i===n-1&&i===r+1?"":e.slice(i,n)}function Bd(...e){let t=-1,n;for(;++t0&&e.charCodeAt(e.length-1)===47&&(n+="/"),t?"/"+n:n}function Rd(e,t){let n="",r=0,i=-1,o=0,s=-1,a,l;for(;++s<=e.length;){if(s2){if(l=n.lastIndexOf("/"),l!==n.length-1){l<0?(n="",r=0):(n=n.slice(0,l),r=n.length-1-n.lastIndexOf("/")),i=s,o=0;continue}}else if(n.length>0){n="",r=0,i=s,o=0;continue}}t&&(n=n.length>0?n+"/..":"..",r=2)}else n.length>0?n+="/"+e.slice(i+1,s):n=e.slice(i+1,s),r=s-i-1;i=s,o=0}else a===46&&o>-1?o++:o=-1}return n}function yr(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}var xu={cwd:Dd};function Dd(){return"/"}function br(e){return e!==null&&typeof e=="object"&&e.href&&e.origin}function ku(e){if(typeof e=="string")e=new URL(e);else if(!br(e)){let t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if(e.protocol!=="file:"){let t=new TypeError("The URL must be of scheme file");throw t.code="ERR_INVALID_URL_SCHEME",t}return Pd(e)}function Pd(e){if(e.hostname!==""){let r=new TypeError('File URL host must be "localhost" or empty on darwin');throw r.code="ERR_INVALID_FILE_URL_HOST",r}let t=e.pathname,n=-1;for(;++n{if(k||!_||!F)I(k);else{let $=o.stringify(_,F);$==null||(zd($)?F.value=$:F.result=$),I(k,F)}});function I(k,_){k||!_?O(k):T?T(_):g(null,_)}}}function d(h){let g;o.freeze(),bs("processSync",o.Parser),ws("processSync",o.Compiler);let y=xr(h);return o.process(y,T),Au("processSync","process",g),y;function T(O){g=!0,fs(O)}}}function Tu(e,t){return typeof e=="function"&&e.prototype&&($d(e.prototype)||t in e.prototype)}function $d(e){let t;for(t in e)if(Eu.call(e,t))return!0;return!1}function bs(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `Parser`")}function ws(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `Compiler`")}function xs(e,t){if(t)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function Su(e){if(!gr(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function Au(e,t,n){if(!n)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}function xr(e){return Nd(e)?e:new wr(e)}function Nd(e){return Boolean(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function zd(e){return typeof e=="string"||(0,Cu.default)(e)}function Dn(e,t){var{includeImageAlt:n=!0}=t||{};return Iu(e,n)}function Iu(e,t){return e&&typeof e=="object"&&(e.value||(t?e.alt:"")||"children"in e&&_u(e.children,t)||Array.isArray(e)&&_u(e,t))||""}function _u(e,t){for(var n=[],r=-1;++ri?0:i+t:t=t>i?i:t,n=n>0?n:0,r.length<1e4)s=Array.from(r),s.unshift(t,n),[].splice.apply(e,s);else for(n&&[].splice.apply(e,[t,n]);o0?(he(e,e.length,0,t),e):t}var Fu={}.hasOwnProperty;function Wi(e){let t={},n=-1;for(;++ns))return;let _=t.events.length,F=_,$,j;for(;F--;)if(t.events[F][0]==="exit"&&t.events[F][1].type==="chunkFlow"){if($){j=t.events[F][1].end;break}$=!0}for(y(r),k=_;kO;){let I=n[C];t.containerState=I[1],I[0].exit.call(t,e)}n.length=O}function T(){i.write([null]),o=void 0,i=void 0,t.containerState._closeFlow=void 0}}function Kd(e,t,n){return H(e,e.attempt(this.parser.constructs.document,t,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function Pn(e){if(e===null||X(e)||sn(e))return 1;if(an(e))return 2}function zt(e,t,n){let r=[],i=-1;for(;++i1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1;let c=Object.assign({},e[r][1].end),f=Object.assign({},e[n][1].start);Nu(c,-l),Nu(f,l),s={type:l>1?"strongSequence":"emphasisSequence",start:c,end:Object.assign({},e[r][1].end)},a={type:l>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[n][1].start),end:f},o={type:l>1?"strongText":"emphasisText",start:Object.assign({},e[r][1].end),end:Object.assign({},e[n][1].start)},i={type:l>1?"strong":"emphasis",start:Object.assign({},s.start),end:Object.assign({},a.end)},e[r][1].end=Object.assign({},s.start),e[n][1].start=Object.assign({},a.end),u=[],e[r][1].end.offset-e[r][1].start.offset&&(u=je(u,[["enter",e[r][1],t],["exit",e[r][1],t]])),u=je(u,[["enter",i,t],["enter",s,t],["exit",s,t],["enter",o,t]]),u=je(u,zt(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),u=je(u,[["exit",o,t],["enter",a,t],["exit",a,t],["exit",i,t]]),e[n][1].end.offset-e[n][1].start.offset?(p=2,u=je(u,[["enter",e[n][1],t],["exit",e[n][1],t]])):p=0,he(e,r-1,n-r+3,u),n=r+u.length-p-2;break}}for(n=-1;++n=4?s(u):n(u)}function s(u){return u===null?l(u):R(u)?e.attempt(rh,s,l)(u):(e.enter("codeFlowValue"),a(u))}function a(u){return u===null||R(u)?(e.exit("codeFlowValue"),s(u)):(e.consume(u),a)}function l(u){return e.exit("codeIndented"),t(u)}}function oh(e,t,n){let r=this;return i;function i(s){return r.parser.lazy[r.now().line]?n(s):R(s)?(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),i):H(e,o,"linePrefix",4+1)(s)}function o(s){let a=r.events[r.events.length-1];return a&&a[1].type==="linePrefix"&&a[2].sliceSerialize(a[1],!0).length>=4?t(s):R(s)?i(s):n(s)}}var Ss={name:"codeText",tokenize:lh,resolve:sh,previous:ah};function sh(e){let t=e.length-4,n=3,r,i;if((e[n][1].type==="lineEnding"||e[n][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(r=n;++r=4?t(s):e.interrupt(r.parser.constructs.flow,n,t)(s)}}function eo(e,t,n,r,i,o,s,a,l){let u=l||Number.POSITIVE_INFINITY,p=0;return c;function c(y){return y===60?(e.enter(r),e.enter(i),e.enter(o),e.consume(y),e.exit(o),f):y===null||y===41||$t(y)?n(y):(e.enter(r),e.enter(s),e.enter(a),e.enter("chunkString",{contentType:"string"}),h(y))}function f(y){return y===62?(e.enter(o),e.consume(y),e.exit(o),e.exit(i),e.exit(r),t):(e.enter(a),e.enter("chunkString",{contentType:"string"}),m(y))}function m(y){return y===62?(e.exit("chunkString"),e.exit(a),f(y)):y===null||y===60||R(y)?n(y):(e.consume(y),y===92?d:m)}function d(y){return y===60||y===62||y===92?(e.consume(y),m):m(y)}function h(y){return y===40?++p>u?n(y):(e.consume(y),h):y===41?p--?(e.consume(y),h):(e.exit("chunkString"),e.exit(a),e.exit(s),e.exit(r),t(y)):y===null||X(y)?p?n(y):(e.exit("chunkString"),e.exit(a),e.exit(s),e.exit(r),t(y)):$t(y)?n(y):(e.consume(y),y===92?g:h)}function g(y){return y===40||y===41||y===92?(e.consume(y),h):h(y)}}function to(e,t,n,r,i,o){let s=this,a=0,l;return u;function u(m){return e.enter(r),e.enter(i),e.consume(m),e.exit(i),e.enter(o),p}function p(m){return m===null||m===91||m===93&&!l||m===94&&!a&&"_hiddenFootnoteSupport"in s.parser.constructs||a>999?n(m):m===93?(e.exit(o),e.enter(i),e.consume(m),e.exit(i),e.exit(r),t):R(m)?(e.enter("lineEnding"),e.consume(m),e.exit("lineEnding"),p):(e.enter("chunkString",{contentType:"string"}),c(m))}function c(m){return m===null||m===91||m===93||R(m)||a++>999?(e.exit("chunkString"),p(m)):(e.consume(m),l=l||!G(m),m===92?f:c)}function f(m){return m===91||m===92||m===93?(e.consume(m),a++,c):c(m)}}function no(e,t,n,r,i,o){let s;return a;function a(f){return e.enter(r),e.enter(i),e.consume(f),e.exit(i),s=f===40?41:f,l}function l(f){return f===s?(e.enter(i),e.consume(f),e.exit(i),e.exit(r),t):(e.enter(o),u(f))}function u(f){return f===s?(e.exit(o),l(s)):f===null?n(f):R(f)?(e.enter("lineEnding"),e.consume(f),e.exit("lineEnding"),H(e,u,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),p(f))}function p(f){return f===s||f===null||R(f)?(e.exit("chunkString"),u(f)):(e.consume(f),f===92?c:p)}function c(f){return f===s||f===92?(e.consume(f),p):p(f)}}function ln(e,t){let n;return r;function r(i){return R(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),n=!0,r):G(i)?H(e,r,n?"linePrefix":"lineSuffix")(i):t(i)}}function Pe(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var Cs={name:"definition",tokenize:hh},dh={tokenize:gh,partial:!0};function hh(e,t,n){let r=this,i;return o;function o(l){return e.enter("definition"),to.call(r,e,s,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(l)}function s(l){return i=Pe(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),l===58?(e.enter("definitionMarker"),e.consume(l),e.exit("definitionMarker"),ln(e,eo(e,e.attempt(dh,H(e,a,"whitespace"),H(e,a,"whitespace")),n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString"))):n(l)}function a(l){return l===null||R(l)?(e.exit("definition"),r.parser.defined.includes(i)||r.parser.defined.push(i),t(l)):n(l)}}function gh(e,t,n){return r;function r(s){return X(s)?ln(e,i)(s):n(s)}function i(s){return s===34||s===39||s===40?no(e,H(e,o,"whitespace"),n,"definitionTitle","definitionTitleMarker","definitionTitleString")(s):n(s)}function o(s){return s===null||R(s)?t(s):n(s)}}var Es={name:"hardBreakEscape",tokenize:yh};function yh(e,t,n){return r;function r(o){return e.enter("hardBreakEscape"),e.enter("escapeMarker"),e.consume(o),i}function i(o){return R(o)?(e.exit("escapeMarker"),e.exit("hardBreakEscape"),t(o)):n(o)}}var Ls={name:"headingAtx",tokenize:wh,resolve:bh};function bh(e,t){let n=e.length-2,r=3,i,o;return e[r][1].type==="whitespace"&&(r+=2),n-2>r&&e[n][1].type==="whitespace"&&(n-=2),e[n][1].type==="atxHeadingSequence"&&(r===n-1||n-4>r&&e[n-2][1].type==="whitespace")&&(n-=r+1===n?2:4),n>r&&(i={type:"atxHeadingText",start:e[r][1].start,end:e[n][1].end},o={type:"chunkText",start:e[r][1].start,end:e[n][1].end,contentType:"text"},he(e,r,n-r+1,[["enter",i,t],["enter",o,t],["exit",o,t],["exit",i,t]])),e}function wh(e,t,n){let r=this,i=0;return o;function o(p){return e.enter("atxHeading"),e.enter("atxHeadingSequence"),s(p)}function s(p){return p===35&&i++<6?(e.consume(p),s):p===null||X(p)?(e.exit("atxHeadingSequence"),r.interrupt?t(p):a(p)):n(p)}function a(p){return p===35?(e.enter("atxHeadingSequence"),l(p)):p===null||R(p)?(e.exit("atxHeading"),t(p)):G(p)?H(e,a,"whitespace")(p):(e.enter("atxHeadingText"),u(p))}function l(p){return p===35?(e.consume(p),l):(e.exit("atxHeadingSequence"),a(p))}function u(p){return p===null||p===35||X(p)?(e.exit("atxHeadingText"),a(p)):(e.consume(p),u)}}var zu=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","source","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],_s=["pre","script","style","textarea"];var Is={name:"htmlFlow",tokenize:vh,resolveTo:kh,concrete:!0},xh={tokenize:Oh,partial:!0};function kh(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function vh(e,t,n){let r=this,i,o,s,a,l;return u;function u(x){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(x),p}function p(x){return x===33?(e.consume(x),c):x===47?(e.consume(x),d):x===63?(e.consume(x),i=3,r.interrupt?t:pe):De(x)?(e.consume(x),s=String.fromCharCode(x),o=!0,h):n(x)}function c(x){return x===45?(e.consume(x),i=2,f):x===91?(e.consume(x),i=5,s="CDATA[",a=0,m):De(x)?(e.consume(x),i=4,r.interrupt?t:pe):n(x)}function f(x){return x===45?(e.consume(x),r.interrupt?t:pe):n(x)}function m(x){return x===s.charCodeAt(a++)?(e.consume(x),a===s.length?r.interrupt?t:N:m):n(x)}function d(x){return De(x)?(e.consume(x),s=String.fromCharCode(x),h):n(x)}function h(x){return x===null||x===47||x===62||X(x)?x!==47&&o&&_s.includes(s.toLowerCase())?(i=1,r.interrupt?t(x):N(x)):zu.includes(s.toLowerCase())?(i=6,x===47?(e.consume(x),g):r.interrupt?t(x):N(x)):(i=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(x):o?T(x):y(x)):x===45||Se(x)?(e.consume(x),s+=String.fromCharCode(x),h):n(x)}function g(x){return x===62?(e.consume(x),r.interrupt?t:N):n(x)}function y(x){return G(x)?(e.consume(x),y):$(x)}function T(x){return x===47?(e.consume(x),$):x===58||x===95||De(x)?(e.consume(x),O):G(x)?(e.consume(x),T):$(x)}function O(x){return x===45||x===46||x===58||x===95||Se(x)?(e.consume(x),O):C(x)}function C(x){return x===61?(e.consume(x),I):G(x)?(e.consume(x),C):T(x)}function I(x){return x===null||x===60||x===61||x===62||x===96?n(x):x===34||x===39?(e.consume(x),l=x,k):G(x)?(e.consume(x),I):(l=null,_(x))}function k(x){return x===null||R(x)?n(x):x===l?(e.consume(x),F):(e.consume(x),k)}function _(x){return x===null||x===34||x===39||x===60||x===61||x===62||x===96||X(x)?C(x):(e.consume(x),_)}function F(x){return x===47||x===62||G(x)?T(x):n(x)}function $(x){return x===62?(e.consume(x),j):n(x)}function j(x){return G(x)?(e.consume(x),j):x===null||R(x)?N(x):n(x)}function N(x){return x===45&&i===2?(e.consume(x),ee):x===60&&i===1?(e.consume(x),S):x===62&&i===4?(e.consume(x),ie):x===63&&i===3?(e.consume(x),pe):x===93&&i===5?(e.consume(x),J):R(x)&&(i===6||i===7)?e.check(xh,ie,V)(x):x===null||R(x)?V(x):(e.consume(x),N)}function V(x){return e.exit("htmlFlowData"),D(x)}function D(x){return x===null?w(x):R(x)?e.attempt({tokenize:q,partial:!0},D,w)(x):(e.enter("htmlFlowData"),N(x))}function q(x,Ve,We){return ze;function ze(Ue){return x.enter("lineEnding"),x.consume(Ue),x.exit("lineEnding"),st}function st(Ue){return r.parser.lazy[r.now().line]?We(Ue):Ve(Ue)}}function ee(x){return x===45?(e.consume(x),pe):N(x)}function S(x){return x===47?(e.consume(x),s="",ne):N(x)}function ne(x){return x===62&&_s.includes(s.toLowerCase())?(e.consume(x),ie):De(x)&&s.length<8?(e.consume(x),s+=String.fromCharCode(x),ne):N(x)}function J(x){return x===93?(e.consume(x),pe):N(x)}function pe(x){return x===62?(e.consume(x),ie):N(x)}function ie(x){return x===null||R(x)?(e.exit("htmlFlowData"),w(x)):(e.consume(x),ie)}function w(x){return e.exit("htmlFlow"),t(x)}}function Oh(e,t,n){return r;function r(i){return e.exit("htmlFlowData"),e.enter("lineEndingBlank"),e.consume(i),e.exit("lineEndingBlank"),e.attempt(wt,t,n)}}var Fs={name:"htmlText",tokenize:Th};function Th(e,t,n){let r=this,i,o,s,a;return l;function l(w){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(w),u}function u(w){return w===33?(e.consume(w),p):w===47?(e.consume(w),_):w===63?(e.consume(w),I):De(w)?(e.consume(w),j):n(w)}function p(w){return w===45?(e.consume(w),c):w===91?(e.consume(w),o="CDATA[",s=0,g):De(w)?(e.consume(w),C):n(w)}function c(w){return w===45?(e.consume(w),f):n(w)}function f(w){return w===null||w===62?n(w):w===45?(e.consume(w),m):d(w)}function m(w){return w===null||w===62?n(w):d(w)}function d(w){return w===null?n(w):w===45?(e.consume(w),h):R(w)?(a=d,J(w)):(e.consume(w),d)}function h(w){return w===45?(e.consume(w),ie):d(w)}function g(w){return w===o.charCodeAt(s++)?(e.consume(w),s===o.length?y:g):n(w)}function y(w){return w===null?n(w):w===93?(e.consume(w),T):R(w)?(a=y,J(w)):(e.consume(w),y)}function T(w){return w===93?(e.consume(w),O):y(w)}function O(w){return w===62?ie(w):w===93?(e.consume(w),O):y(w)}function C(w){return w===null||w===62?ie(w):R(w)?(a=C,J(w)):(e.consume(w),C)}function I(w){return w===null?n(w):w===63?(e.consume(w),k):R(w)?(a=I,J(w)):(e.consume(w),I)}function k(w){return w===62?ie(w):I(w)}function _(w){return De(w)?(e.consume(w),F):n(w)}function F(w){return w===45||Se(w)?(e.consume(w),F):$(w)}function $(w){return R(w)?(a=$,J(w)):G(w)?(e.consume(w),$):ie(w)}function j(w){return w===45||Se(w)?(e.consume(w),j):w===47||w===62||X(w)?N(w):n(w)}function N(w){return w===47?(e.consume(w),ie):w===58||w===95||De(w)?(e.consume(w),V):R(w)?(a=N,J(w)):G(w)?(e.consume(w),N):ie(w)}function V(w){return w===45||w===46||w===58||w===95||Se(w)?(e.consume(w),V):D(w)}function D(w){return w===61?(e.consume(w),q):R(w)?(a=D,J(w)):G(w)?(e.consume(w),D):N(w)}function q(w){return w===null||w===60||w===61||w===62||w===96?n(w):w===34||w===39?(e.consume(w),i=w,ee):R(w)?(a=q,J(w)):G(w)?(e.consume(w),q):(e.consume(w),i=void 0,ne)}function ee(w){return w===i?(e.consume(w),S):w===null?n(w):R(w)?(a=ee,J(w)):(e.consume(w),ee)}function S(w){return w===62||w===47||X(w)?N(w):n(w)}function ne(w){return w===null||w===34||w===39||w===60||w===61||w===96?n(w):w===62||X(w)?N(w):(e.consume(w),ne)}function J(w){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(w),e.exit("lineEnding"),H(e,pe,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function pe(w){return e.enter("htmlTextData"),a(w)}function ie(w){return w===62?(e.consume(w),e.exit("htmlTextData"),e.exit("htmlText"),t):n(w)}}var un={name:"labelEnd",tokenize:_h,resolveTo:Lh,resolveAll:Eh},Sh={tokenize:Ih},Ah={tokenize:Fh},Ch={tokenize:Bh};function Eh(e){let t=-1,n;for(;++t-1&&(s[0]=s[0].slice(r)),o>0&&s.push(e[i].slice(0,o))),s}function Qh(e,t){let n=-1,r=[],i;for(;++n1?n:n[0].split(","),n.filter(t=>t!="")}if(e.includes(` +`)){let n=e.split(/[ \t]*\n[ \t]*-[ \t]*/);return n.splice(0,1),n=n.filter(t=>t!=""),n==null||n.length===0?null:n}return e}function so(e){return typeof e=="string"?e.includes(",")?e.split(", "):e.split(" "):e}function ao(e){return typeof e=="string"?e.split(", "):e}function Ns(e){return e.length>1&&(e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"'))}function _t(e,n,t=!1){if(Ns(e))return e;let r=e.includes("'"),i=e.includes('"'),o=e.includes(": ");return!r&&!i&&!o&&!t||r&&i?e:r?`"${e}"`:i?`'${e}'`:`${n}${e}${n}`}var Xn=require("obsidian");var Fu=require("obsidian");function Je(e,n){Fu.MarkdownRenderer.renderMarkdown(e,n,"",null);let t=n.innerHTML.trim();t.startsWith("

")&&(t=t.substring(3)),t.endsWith("

")&&(t=t.substring(0,t.length-4)),n.innerHTML=t}var an=class{constructor(n,t,r,i){this.name=n,this.description=t,this.defaultValue=r,this.searchInfo={name:n,description:t},i&&(this.ruleName=i)}setOption(n,t){t.ruleConfigs[this.ruleName][this.name]=n}},Qn=class extends an{display(t,r,i){let o=new Xn.Setting(t).addToggle(s=>{s.setValue(r.ruleConfigs[this.ruleName][this.name]),s.onChange(a=>{this.setOption(a,r),i.settings=r,i.saveData(i.settings)})});Je(this.name,o.nameEl),Je(this.description,o.descEl),o.settingEl.style.border="none"}},Br=class extends an{display(t,r,i){let o=new Xn.Setting(t).addText(s=>{s.setValue(r.ruleConfigs[this.ruleName][this.name]),s.onChange(a=>{this.setOption(a,r),i.settings=r,i.saveData(i.settings)})});Je(this.name,o.nameEl),Je(this.description,o.descEl),o.settingEl.style.border="none"}},lo=class extends an{display(t,r,i){let o=new Xn.Setting(t).addTextArea(s=>{s.setValue(r.ruleConfigs[this.ruleName][this.name]),s.onChange(a=>{this.setOption(a,r),i.settings=r,i.saveData(i.settings)})});Je(this.name,o.nameEl),Je(this.description,o.descEl),o.settingEl.style.border="none"}},uo=class extends an{display(t,r,i){let o=new Xn.Setting(t).addMomentFormat(s=>{s.setValue(r.ruleConfigs[this.ruleName][this.name]),s.setPlaceholder("dddd, MMMM Do YYYY, h:mm:ss a"),s.onChange(a=>{this.setOption(a,r),i.settings=r,i.saveData(i.settings)})});Je(this.name,o.nameEl),Je(this.description,o.descEl),o.settingEl.style.border="none"}},po=class{constructor(n,t){this.value=n,this.description=t}},co=class extends an{constructor(t,r,i,o,s){super(t,r,i,s);this.options=o,this.searchInfo.options=o}display(t,r,i){let o=new Xn.Setting(t).addDropdown(s=>{for(let a of this.options)s.addOption(a.value,a.value);s.setValue(r.ruleConfigs[this.ruleName][this.name]),s.onChange(a=>{this.setOption(a,r),i.settings=r,i.saveData(i.settings)})});Je(this.name,o.nameEl),Je(this.description,o.descEl),o.settingEl.style.border="none"}};var qt=class extends Error{constructor(n,t){super(n),this.cause=t??null,this.stack=t.stack??null,Object.setPrototypeOf(this,qt.prototype)}};var Y=(s=>(s.YAML="YAML",s.HEADING="Heading",s.FOOTNOTE="Footnote",s.CONTENT="Content",s.SPACING="Spacing",s.PASTE="Paste",s))(Y||{}),mo=class{constructor(n,t,r,i,o,s=[],a=!1){this.name=n,this.description=t,this.type=r,this.apply=i,this.examples=o,s.unshift(new Qn(this.description,"",!1));for(let l of s)l.ruleName=n;this.options=s,this.hasSpecialExecutionOrder=a}alias(){return this.name.replace(/ /g,"-").toLowerCase()}getDefaultOptions(){let n={};for(let t of this.options)n[t.name]=t.defaultValue;return n}getOptions(n){return n.ruleConfigs[this.name]}getURL(){return"https://github.com/platers/obsidian-linter/blob/master/docs/rules.md"+"#"+this.alias()}enabledOptionName(){return this.options[0].name}},fo=class{constructor(n,t,r,i={}){this.description=n,this.options=i,this.before=t,this.after=r}},Ru=Object.values(Y);function Du(e){let n=e.match(Te);if(!n)return[];let t=n[1],r=Ce(t,"disabled rules");if(r==null)return[];let i=r.includes(` +`)?`disabled rules: +`:"disabled rules: ";i+=r;let s=ot(i)["disabled rules"];return s?(typeof s=="string"&&(s=[s]),s.includes("all")?vt.map(a=>a.alias()):s):[]}var vt=[],sh=vt.reduce((e,n)=>(e[n.alias()]=n,e),{});function Pu(e){vt.push(e),vt.sort((n,t)=>Ru.indexOf(n.type)-Ru.indexOf(t.type)||n.name.localeCompare(t.name)),sh[e.alias()]=e}function ho(e,n){let t;throw e instanceof Lu?(t=e.toString(),t=`error in the yaml: ${t.substring(t.indexOf(":")+1)}`):t=`unknown error: ${e.message}`,new qt(`"${n}" encountered an ${t}`,e)}var br=Yn($u());function ah(e){for(var n=[],t=1;t0){let l=s.split(` +`);o=l[l.length-1]??"",o=o.trimEnd();let u=0;for(;l.length-(2+u)>=0;){let p=l[l.length-(2+u)];if(!jt(o,p)&&(!r||!jt("",p,!0)))break;u++}l.splice(l.length-(1+u),u),l.length>1&&(r&&l[l.length-2].match(/^> ?.*$/m)||!r&&!jt(o,l[l.length-2])?l.splice(l.length-1,0,o):jt("",l[l.length-2],!0)||l.splice(l.length-1,0,"")),s=l.join(` +`)}let a=e.substring(t);if(a.length>0){let l=a.split(` +`),u=0;for(;u+11&&(r&&l[1].match(/^> ?.*$/m)||!r&&!jt(o,l[1])?l.splice(1,0,o):r&&!jt("",l[1])&&l.splice(1,0,"")),a=l.join(` +`)}return s+i+a}var Em=Yn(zs());var Re=Yn(zs()),yo="[Obsidian Linter]";function Hu(e,n){let t=`${yo} ${e}: +`;n.stack?t+=n.stack:t+=`${n.name} ${n.message}`,Re.default.error(t)}function Mr(e){Re.default.info(`${yo} ${e}`)}function Vt(e){Re.default.debug(`${yo} ${e}`)}function bo(e){Re.default.warn(`${yo} ${e}`)}function Yu(e){switch(e){case Re.default.levels.INFO:{Re.default.setLevel("info");break}case Re.default.levels.TRACE:{Re.default.setLevel("trace");break}case Re.default.levels.DEBUG:{Re.default.setLevel("debug");break}case Re.default.levels.SILENT:{Re.default.setLevel("silent");break}case Re.default.levels.ERROR:{Re.default.setLevel("error");break}case Re.default.levels.WARN:{Re.default.setLevel("warn");break}}}var ys=require("obsidian");var tr,Ir,Wt,st=class{static getRule(){if(!et(st,tr).has(this.name)){let n=new this,t=new mo(n.name,n.description,n.type,n.safeApply.bind(n),n.exampleBuilders.map(r=>r.example),n.optionBuilders.map(r=>r.option),n.hasSpecialExecutionOrder);et(st,tr).set(this.name,t),et(st,Ir).set(n.name,n)}return et(st,tr).get(this.name)}static applyIfEnabledBase(n,t,r,i){let o=n.getOptions(r);if(o[n.enabledOptionName()]){let s=Object.assign({},o,i);Vt(`Running ${n.name}`);try{return[n.apply(t,s),!0]}catch(a){ho(a,n.name)}}else return[t,!1]}static getBuilderByName(n){return et(st,Ir).get(n)}static setNoSettingControl(n,t){et(st,Wt).has(n)||et(st,Wt).set(n,[]),et(st,Wt).get(n).push(t)}static hasSettingControl(n,t){return!et(st,Wt).has(n)||!et(st,Wt).get(n).includes(t)}},mt=st;tr=new WeakMap,Ir=new WeakMap,Wt=new WeakMap,qn(mt,tr,new Map),qn(mt,Ir,new Map),qn(mt,Wt,new Map);var v=class extends mt{static register(n){let t=n.getRule();Pu(t)}safeApply(n,t){return this.apply(n,this.buildRuleOptions(t))}buildRuleOptions(n){n=n??{};let t=new this.OptionsClass,r=Object.assign(t,n);for(let i of this.optionBuilders)i.setRuleOption(r,n);return r}get hasSpecialExecutionOrder(){return!1}static applyIfEnabled(n,t,r,i){let o=this.getRule();return r.includes(o.alias())?(Vt(o.alias()+" is disabled"),[n,!1]):mt.applyIfEnabledBase(o,n,t,i)}static getRuleOptions(n){let t=mt.getRule.bind(this)(),r=new this,i=t.getOptions(n);return r.buildRuleOptions(i)}static noSettingControl(){return(n,t)=>{let r=n.constructor.name;mt.setNoSettingControl(r,t)}}},Hs,k=class{constructor(n){qn(this,Hs,void 0);this.example=new fo(n.description,n.before,n.after,n.options)}};Hs=new WeakMap;var nr,Kt=class{constructor(n){qn(this,nr,void 0);this.OptionsClass=n.OptionsClass,this.name=n.name,this.description=n.description,this.optionsKey=n.optionsKey}get defaultValue(){return new this.OptionsClass()[this.optionsKey]}get option(){return et(this,nr)||Hl(this,nr,this.buildOption()),et(this,nr)}setRuleOption(n,t){let r=t[this.name];r!==void 0&&(n[this.optionsKey]=r)}};nr=new WeakMap;var ae=class extends Kt{buildOption(){return new Qn(this.name,this.description,this.defaultValue)}},wo=class extends Kt{buildOption(){return new Br(this.name,this.description,this.defaultValue)}},ke=class extends Kt{constructor(t){super(t);this.records=t.records.map(r=>new po(r.value,r.description))}buildOption(){return new co(this.name,this.description,this.defaultValue,this.records)}},Le=class extends Kt{constructor(t){super(t);this.separator=t.separator??` +`,this.splitter=t.splitter??/\n/}buildOption(){return new lo(this.name,this.description,this.defaultValue.join(this.separator))}setRuleOption(t,r){if(r[this.name]!==void 0){let i=r[this.name].split(this.splitter).filter(function(o){return o!=""});t[this.optionsKey]=i}}},un=class extends Kt{buildOption(){return new Br(this.name,this.description,this.defaultValue)}},xo=class extends Kt{buildOption(){return new uo(this.name,this.description,this.defaultValue)}};var ko=class{};E([v.noSettingControl()],ko.prototype,"lineContent",2);var pn=class extends v{get OptionsClass(){return ko}get name(){return"Add Blockquote Indentation on Paste"}get description(){return"Adds blockquotes to all but the first line, when the cursor is in a blockquote/callout line during pasting"}get type(){return"Paste"}apply(n,t){let r=/^(\s*)((> ?)+) .*/,i=t.lineContent.match(r);if(!i)return n;let o=i[1]??"",s=i[2]??"";return n.trim().replace(/\n/gm,` +${o}${s} `)}get exampleBuilders(){return[new k({description:"Line being pasted into regular text does not get blockquotified with current line being `Part 1 of the sentence`",before:g` + was much less likely to succeed, but they tried it anyway. + Part 2 was much more interesting. + `,after:g` + was much less likely to succeed, but they tried it anyway. + Part 2 was much more interesting. + `,options:{lineContent:"Part 1 of the sentence"}}),new k({description:"Line being pasted into a blockquote gets blockquotified with current line being `> > `",before:g` + ${""} + This content is being added to a blockquote + Note that the second line is indented and the surrounding blank lines were trimmed + ${""} + `,after:g` + This content is being added to a blockquote + > > Note that the second line is indented and the surrounding blank lines were trimmed + `,options:{lineContent:"> > "}})]}get optionBuilders(){return[]}};pn=E([v.register],pn);var Fr=function(e){if(e==null)return fh;if(typeof e=="string")return mh(e);if(typeof e=="object")return Array.isArray(e)?ph(e):ch(e);if(typeof e=="function")return vo(e);throw new Error("Expected function, string, or object as test")};function ph(e){let n=[],t=-1;for(;++t":""))+")"})),m;function m(){let f=[],d,h,y;if((!n||i(a,l,u[u.length-1]||null))&&(f=dh(t(a,u)),f[0]===Rr))return f;if(a.children&&f[0]!==ju)for(h=(r?a.children.length:-1)+o,y=u.concat(a);h>-1&&hs.length,l;a&&s.push(i);try{l=e.apply(this,s)}catch(u){let p=u;if(a&&t)throw p;return i(p)}a||(l instanceof Promise?l.then(o,i):l instanceof Error?i(l):o(l))}function i(s,...a){t||(t=!0,n(s,...a))}function o(s){i(null,s)}}var ap=Yn(qs(),1);function cn(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?np(e.position):"start"in e||"end"in e?np(e):"line"in e||"column"in e?js(e):""}function js(e){return rp(e&&e.line)+":"+rp(e&&e.column)}function np(e){return js(e&&e.start)+"-"+js(e&&e.end)}function rp(e){return e&&typeof e=="number"?e:1}var We=class extends Error{constructor(n,t,r){let i=[null,null],o={start:{line:null,column:null},end:{line:null,column:null}};if(super(),typeof t=="string"&&(r=t,t=void 0),typeof r=="string"){let s=r.indexOf(":");s===-1?i[1]=r:(i[0]=r.slice(0,s),i[1]=r.slice(s+1))}t&&("type"in t||"position"in t?t.position&&(o=t.position):"start"in t||"end"in t?o=t:("line"in t||"column"in t)&&(o.start=t)),this.name=cn(t)||"1:1",this.message=typeof n=="object"?n.message:n,this.stack=typeof n=="object"?n.stack:"",this.reason=this.message,this.fatal,this.line=o.start.line,this.column=o.start.column,this.source=i[0],this.ruleId=i[1],this.position=o,this.actual,this.expected,this.file,this.url,this.note}};We.prototype.file="";We.prototype.name="";We.prototype.reason="";We.prototype.message="";We.prototype.stack="";We.prototype.fatal=null;We.prototype.column=null;We.prototype.line=null;We.prototype.source=null;We.prototype.ruleId=null;We.prototype.position=null;var ft={basename:gh,dirname:yh,extname:bh,join:wh,sep:"/"};function gh(e,n){if(n!==void 0&&typeof n!="string")throw new TypeError('"ext" argument must be a string');Pr(e);let t=0,r=-1,i=e.length,o;if(n===void 0||n.length===0||n.length>e.length){for(;i--;)if(e.charCodeAt(i)===47){if(o){t=i+1;break}}else r<0&&(o=!0,r=i+1);return r<0?"":e.slice(t,r)}if(n===e)return"";let s=-1,a=n.length-1;for(;i--;)if(e.charCodeAt(i)===47){if(o){t=i+1;break}}else s<0&&(o=!0,s=i+1),a>-1&&(e.charCodeAt(i)===n.charCodeAt(a--)?a<0&&(r=i):(a=-1,r=s));return t===r?r=s:r<0&&(r=e.length),e.slice(t,r)}function yh(e){if(Pr(e),e.length===0)return".";let n=-1,t=e.length,r;for(;--t;)if(e.charCodeAt(t)===47){if(r){n=t;break}}else r||(r=!0);return n<0?e.charCodeAt(0)===47?"/":".":n===1&&e.charCodeAt(0)===47?"//":e.slice(0,n)}function bh(e){Pr(e);let n=e.length,t=-1,r=0,i=-1,o=0,s;for(;n--;){let a=e.charCodeAt(n);if(a===47){if(s){r=n+1;break}continue}t<0&&(s=!0,t=n+1),a===46?i<0?i=n:o!==1&&(o=1):i>-1&&(o=-1)}return i<0||t<0||o===0||o===1&&i===t-1&&i===r+1?"":e.slice(i,t)}function wh(...e){let n=-1,t;for(;++n0&&e.charCodeAt(e.length-1)===47&&(t+="/"),n?"/"+t:t}function kh(e,n){let t="",r=0,i=-1,o=0,s=-1,a,l;for(;++s<=e.length;){if(s2){if(l=t.lastIndexOf("/"),l!==t.length-1){l<0?(t="",r=0):(t=t.slice(0,l),r=t.length-1-t.lastIndexOf("/")),i=s,o=0;continue}}else if(t.length>0){t="",r=0,i=s,o=0;continue}}n&&(t=t.length>0?t+"/..":"..",r=2)}else t.length>0?t+="/"+e.slice(i+1,s):t=e.slice(i+1,s),r=s-i-1;i=s,o=0}else a===46&&o>-1?o++:o=-1}return t}function Pr(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}var ip={cwd:vh};function vh(){return"/"}function rr(e){return e!==null&&typeof e=="object"&&e.href&&e.origin}function op(e){if(typeof e=="string")e=new URL(e);else if(!rr(e)){let n=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw n.code="ERR_INVALID_ARG_TYPE",n}if(e.protocol!=="file:"){let n=new TypeError("The URL must be of scheme file");throw n.code="ERR_INVALID_URL_SCHEME",n}return Sh(e)}function Sh(e){if(e.hostname!==""){let r=new TypeError('File URL host must be "localhost" or empty on darwin');throw r.code="ERR_INVALID_FILE_URL_HOST",r}let n=e.pathname,t=-1;for(;++t{if(T||!B||!I)M(T);else{let $=o.stringify(B,I);$==null||(Ah($)?I.value=$:I.result=$),M(T,I)}});function M(T,B){T||!B?O(T):A?A(B):y(null,B)}}}function d(h){let y;o.freeze(),Us("processSync",o.Parser),Gs("processSync",o.Compiler);let b=Nr(h);return o.process(b,A),pp("processSync","process",y),b;function A(O){y=!0,Ys(O)}}}function lp(e,n){return typeof e=="function"&&e.prototype&&(Th(e.prototype)||n in e.prototype)}function Th(e){let n;for(n in e)if(mp.call(e,n))return!0;return!1}function Us(e,n){if(typeof n!="function")throw new TypeError("Cannot `"+e+"` without `Parser`")}function Gs(e,n){if(typeof n!="function")throw new TypeError("Cannot `"+e+"` without `Compiler`")}function Zs(e,n){if(n)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function up(e){if(!Dr(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function pp(e,n,t){if(!t)throw new Error("`"+e+"` finished async. Use `"+n+"` instead")}function Nr(e){return Oh(e)?e:new $r(e)}function Oh(e){return Boolean(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function Ah(e){return typeof e=="string"||(0,cp.default)(e)}function ir(e,n){var{includeImageAlt:t=!0}=n||{};return hp(e,t)}function hp(e,n){return e&&typeof e=="object"&&(e.value||(n?e.alt:"")||"children"in e&&dp(e.children,n)||Array.isArray(e)&&dp(e,n))||""}function dp(e,n){for(var t=[],r=-1;++ri?0:i+n:n=n>i?i:n,t=t>0?t:0,r.length<1e4)s=Array.from(r),s.unshift(n,t),[].splice.apply(e,s);else for(t&&[].splice.apply(e,[n,t]);o0?(he(e,e.length,0,n),e):n}var gp={}.hasOwnProperty;function Ao(e){let n={},t=-1;for(;++ts))return;let B=n.events.length,I=B,$,j;for(;I--;)if(n.events[I][0]==="exit"&&n.events[I][1].type==="chunkFlow"){if($){j=n.events[I][1].end;break}$=!0}for(b(r),T=B;TO;){let M=t[L];n.containerState=M[1],M[0].exit.call(n,e)}t.length=O}function A(){i.write([null]),o=void 0,i=void 0,n.containerState._closeFlow=void 0}}function Bh(e,n,t){return H(e,e.attempt(this.parser.constructs.document,n,t),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function or(e){if(e===null||Q(e)||fn(e))return 1;if(dn(e))return 2}function Zt(e,n,t){let r=[],i=-1;for(;++i1&&e[t][1].end.offset-e[t][1].start.offset>1?2:1;let c=Object.assign({},e[r][1].end),m=Object.assign({},e[t][1].start);Sp(c,-l),Sp(m,l),s={type:l>1?"strongSequence":"emphasisSequence",start:c,end:Object.assign({},e[r][1].end)},a={type:l>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[t][1].start),end:m},o={type:l>1?"strongText":"emphasisText",start:Object.assign({},e[r][1].end),end:Object.assign({},e[t][1].start)},i={type:l>1?"strong":"emphasis",start:Object.assign({},s.start),end:Object.assign({},a.end)},e[r][1].end=Object.assign({},s.start),e[t][1].start=Object.assign({},a.end),u=[],e[r][1].end.offset-e[r][1].start.offset&&(u=Ke(u,[["enter",e[r][1],n],["exit",e[r][1],n]])),u=Ke(u,[["enter",i,n],["enter",s,n],["exit",s,n],["enter",o,n]]),u=Ke(u,Zt(n.parser.constructs.insideSpan.null,e.slice(r+1,t),n)),u=Ke(u,[["exit",o,n],["enter",a,n],["exit",a,n],["exit",i,n]]),e[t][1].end.offset-e[t][1].start.offset?(p=2,u=Ke(u,[["enter",e[t][1],n],["exit",e[t][1],n]])):p=0,he(e,r-1,t-r+3,u),t=r+u.length-p-2;break}}for(t=-1;++t=4?s(u):t(u)}function s(u){return u===null?l(u):R(u)?e.attempt(Yh,s,l)(u):(e.enter("codeFlowValue"),a(u))}function a(u){return u===null||R(u)?(e.exit("codeFlowValue"),s(u)):(e.consume(u),a)}function l(u){return e.exit("codeIndented"),n(u)}}function jh(e,n,t){let r=this;return i;function i(s){return r.parser.lazy[r.now().line]?t(s):R(s)?(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),i):H(e,o,"linePrefix",4+1)(s)}function o(s){let a=r.events[r.events.length-1];return a&&a[1].type==="linePrefix"&&a[2].sliceSerialize(a[1],!0).length>=4?n(s):R(s)?i(s):t(s)}}var ta={name:"codeText",tokenize:Kh,resolve:Vh,previous:Wh};function Vh(e){let n=e.length-4,t=3,r,i;if((e[t][1].type==="lineEnding"||e[t][1].type==="space")&&(e[n][1].type==="lineEnding"||e[n][1].type==="space")){for(r=t;++r=4?n(s):e.interrupt(r.parser.constructs.flow,t,n)(s)}}function Mo(e,n,t,r,i,o,s,a,l){let u=l||Number.POSITIVE_INFINITY,p=0;return c;function c(b){return b===60?(e.enter(r),e.enter(i),e.enter(o),e.consume(b),e.exit(o),m):b===null||b===41||Ut(b)?t(b):(e.enter(r),e.enter(s),e.enter(a),e.enter("chunkString",{contentType:"string"}),h(b))}function m(b){return b===62?(e.enter(o),e.consume(b),e.exit(o),e.exit(i),e.exit(r),n):(e.enter(a),e.enter("chunkString",{contentType:"string"}),f(b))}function f(b){return b===62?(e.exit("chunkString"),e.exit(a),m(b)):b===null||b===60||R(b)?t(b):(e.consume(b),b===92?d:f)}function d(b){return b===60||b===62||b===92?(e.consume(b),f):f(b)}function h(b){return b===40?++p>u?t(b):(e.consume(b),h):b===41?p--?(e.consume(b),h):(e.exit("chunkString"),e.exit(a),e.exit(s),e.exit(r),n(b)):b===null||Q(b)?p?t(b):(e.exit("chunkString"),e.exit(a),e.exit(s),e.exit(r),n(b)):Ut(b)?t(b):(e.consume(b),b===92?y:h)}function y(b){return b===40||b===41||b===92?(e.consume(b),h):h(b)}}function Io(e,n,t,r,i,o){let s=this,a=0,l;return u;function u(f){return e.enter(r),e.enter(i),e.consume(f),e.exit(i),e.enter(o),p}function p(f){return f===null||f===91||f===93&&!l||f===94&&!a&&"_hiddenFootnoteSupport"in s.parser.constructs||a>999?t(f):f===93?(e.exit(o),e.enter(i),e.consume(f),e.exit(i),e.exit(r),n):R(f)?(e.enter("lineEnding"),e.consume(f),e.exit("lineEnding"),p):(e.enter("chunkString",{contentType:"string"}),c(f))}function c(f){return f===null||f===91||f===93||R(f)||a++>999?(e.exit("chunkString"),p(f)):(e.consume(f),l=l||!G(f),f===92?m:c)}function m(f){return f===91||f===92||f===93?(e.consume(f),a++,c):c(f)}}function Fo(e,n,t,r,i,o){let s;return a;function a(m){return e.enter(r),e.enter(i),e.consume(m),e.exit(i),s=m===40?41:m,l}function l(m){return m===s?(e.enter(i),e.consume(m),e.exit(i),e.exit(r),n):(e.enter(o),u(m))}function u(m){return m===s?(e.exit(o),l(s)):m===null?t(m):R(m)?(e.enter("lineEnding"),e.consume(m),e.exit("lineEnding"),H(e,u,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),p(m))}function p(m){return m===s||m===null||R(m)?(e.exit("chunkString"),u(m)):(e.consume(m),m===92?c:p)}function c(m){return m===s||m===92?(e.consume(m),p):p(m)}}function hn(e,n){let t;return r;function r(i){return R(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),t=!0,r):G(i)?H(e,r,t?"linePrefix":"lineSuffix")(i):n(i)}}function Ye(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var ra={name:"definition",tokenize:eg},Jh={tokenize:tg,partial:!0};function eg(e,n,t){let r=this,i;return o;function o(l){return e.enter("definition"),Io.call(r,e,s,t,"definitionLabel","definitionLabelMarker","definitionLabelString")(l)}function s(l){return i=Ye(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),l===58?(e.enter("definitionMarker"),e.consume(l),e.exit("definitionMarker"),hn(e,Mo(e,e.attempt(Jh,H(e,a,"whitespace"),H(e,a,"whitespace")),t,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString"))):t(l)}function a(l){return l===null||R(l)?(e.exit("definition"),r.parser.defined.includes(i)||r.parser.defined.push(i),n(l)):t(l)}}function tg(e,n,t){return r;function r(s){return Q(s)?hn(e,i)(s):t(s)}function i(s){return s===34||s===39||s===40?Fo(e,H(e,o,"whitespace"),t,"definitionTitle","definitionTitleMarker","definitionTitleString")(s):t(s)}function o(s){return s===null||R(s)?n(s):t(s)}}var ia={name:"hardBreakEscape",tokenize:ng};function ng(e,n,t){return r;function r(o){return e.enter("hardBreakEscape"),e.enter("escapeMarker"),e.consume(o),i}function i(o){return R(o)?(e.exit("escapeMarker"),e.exit("hardBreakEscape"),n(o)):t(o)}}var oa={name:"headingAtx",tokenize:ig,resolve:rg};function rg(e,n){let t=e.length-2,r=3,i,o;return e[r][1].type==="whitespace"&&(r+=2),t-2>r&&e[t][1].type==="whitespace"&&(t-=2),e[t][1].type==="atxHeadingSequence"&&(r===t-1||t-4>r&&e[t-2][1].type==="whitespace")&&(t-=r+1===t?2:4),t>r&&(i={type:"atxHeadingText",start:e[r][1].start,end:e[t][1].end},o={type:"chunkText",start:e[r][1].start,end:e[t][1].end,contentType:"text"},he(e,r,t-r+1,[["enter",i,n],["enter",o,n],["exit",o,n],["exit",i,n]])),e}function ig(e,n,t){let r=this,i=0;return o;function o(p){return e.enter("atxHeading"),e.enter("atxHeadingSequence"),s(p)}function s(p){return p===35&&i++<6?(e.consume(p),s):p===null||Q(p)?(e.exit("atxHeadingSequence"),r.interrupt?n(p):a(p)):t(p)}function a(p){return p===35?(e.enter("atxHeadingSequence"),l(p)):p===null||R(p)?(e.exit("atxHeading"),n(p)):G(p)?H(e,a,"whitespace")(p):(e.enter("atxHeadingText"),u(p))}function l(p){return p===35?(e.consume(p),l):(e.exit("atxHeadingSequence"),a(p))}function u(p){return p===null||p===35||Q(p)?(e.exit("atxHeadingText"),a(p)):(e.consume(p),u)}}var Op=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],sa=["pre","script","style","textarea"];var aa={name:"htmlFlow",tokenize:ag,resolveTo:sg,concrete:!0},og={tokenize:lg,partial:!0};function sg(e){let n=e.length;for(;n--&&!(e[n][0]==="enter"&&e[n][1].type==="htmlFlow"););return n>1&&e[n-2][1].type==="linePrefix"&&(e[n][1].start=e[n-2][1].start,e[n+1][1].start=e[n-2][1].start,e.splice(n-2,2)),e}function ag(e,n,t){let r=this,i,o,s,a,l;return u;function u(w){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(w),p}function p(w){return w===33?(e.consume(w),c):w===47?(e.consume(w),d):w===63?(e.consume(w),i=3,r.interrupt?n:le):He(w)?(e.consume(w),s=String.fromCharCode(w),o=!0,h):t(w)}function c(w){return w===45?(e.consume(w),i=2,m):w===91?(e.consume(w),i=5,s="CDATA[",a=0,f):He(w)?(e.consume(w),i=4,r.interrupt?n:le):t(w)}function m(w){return w===45?(e.consume(w),r.interrupt?n:le):t(w)}function f(w){return w===s.charCodeAt(a++)?(e.consume(w),a===s.length?r.interrupt?n:z:f):t(w)}function d(w){return He(w)?(e.consume(w),s=String.fromCharCode(w),h):t(w)}function h(w){return w===null||w===47||w===62||Q(w)?w!==47&&o&&sa.includes(s.toLowerCase())?(i=1,r.interrupt?n(w):z(w)):Op.includes(s.toLowerCase())?(i=6,w===47?(e.consume(w),y):r.interrupt?n(w):z(w)):(i=7,r.interrupt&&!r.parser.lazy[r.now().line]?t(w):o?A(w):b(w)):w===45||_e(w)?(e.consume(w),s+=String.fromCharCode(w),h):t(w)}function y(w){return w===62?(e.consume(w),r.interrupt?n:z):t(w)}function b(w){return G(w)?(e.consume(w),b):$(w)}function A(w){return w===47?(e.consume(w),$):w===58||w===95||He(w)?(e.consume(w),O):G(w)?(e.consume(w),A):$(w)}function O(w){return w===45||w===46||w===58||w===95||_e(w)?(e.consume(w),O):L(w)}function L(w){return w===61?(e.consume(w),M):G(w)?(e.consume(w),L):A(w)}function M(w){return w===null||w===60||w===61||w===62||w===96?t(w):w===34||w===39?(e.consume(w),l=w,T):G(w)?(e.consume(w),M):(l=null,B(w))}function T(w){return w===null||R(w)?t(w):w===l?(e.consume(w),I):(e.consume(w),T)}function B(w){return w===null||w===34||w===39||w===60||w===61||w===62||w===96||Q(w)?L(w):(e.consume(w),B)}function I(w){return w===47||w===62||G(w)?A(w):t(w)}function $(w){return w===62?(e.consume(w),j):t(w)}function j(w){return G(w)?(e.consume(w),j):w===null||R(w)?z(w):t(w)}function z(w){return w===45&&i===2?(e.consume(w),J):w===60&&i===1?(e.consume(w),C):w===62&&i===4?(e.consume(w),re):w===63&&i===3?(e.consume(w),le):w===93&&i===5?(e.consume(w),X):R(w)&&(i===6||i===7)?e.check(og,re,W)(w):w===null||R(w)?W(w):(e.consume(w),z)}function W(w){return e.exit("htmlFlowData"),D(w)}function D(w){return w===null?x(w):R(w)?e.attempt({tokenize:V,partial:!0},D,x)(w):(e.enter("htmlFlowData"),z(w))}function V(w,Ge,Ze){return je;function je(Qe){return w.enter("lineEnding"),w.consume(Qe),w.exit("lineEnding"),pt}function pt(Qe){return r.parser.lazy[r.now().line]?Ze(Qe):Ge(Qe)}}function J(w){return w===45?(e.consume(w),le):z(w)}function C(w){return w===47?(e.consume(w),s="",te):z(w)}function te(w){return w===62&&sa.includes(s.toLowerCase())?(e.consume(w),re):He(w)&&s.length<8?(e.consume(w),s+=String.fromCharCode(w),te):z(w)}function X(w){return w===93?(e.consume(w),le):z(w)}function le(w){return w===62?(e.consume(w),re):w===45&&i===2?(e.consume(w),le):z(w)}function re(w){return w===null||R(w)?(e.exit("htmlFlowData"),x(w)):(e.consume(w),re)}function x(w){return e.exit("htmlFlow"),n(w)}}function lg(e,n,t){return r;function r(i){return e.exit("htmlFlowData"),e.enter("lineEndingBlank"),e.consume(i),e.exit("lineEndingBlank"),e.attempt(St,n,t)}}var la={name:"htmlText",tokenize:ug};function ug(e,n,t){let r=this,i,o,s,a;return l;function l(x){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(x),u}function u(x){return x===33?(e.consume(x),p):x===47?(e.consume(x),B):x===63?(e.consume(x),M):He(x)?(e.consume(x),j):t(x)}function p(x){return x===45?(e.consume(x),c):x===91?(e.consume(x),o="CDATA[",s=0,y):He(x)?(e.consume(x),L):t(x)}function c(x){return x===45?(e.consume(x),m):t(x)}function m(x){return x===null||x===62?t(x):x===45?(e.consume(x),f):d(x)}function f(x){return x===null||x===62?t(x):d(x)}function d(x){return x===null?t(x):x===45?(e.consume(x),h):R(x)?(a=d,X(x)):(e.consume(x),d)}function h(x){return x===45?(e.consume(x),re):d(x)}function y(x){return x===o.charCodeAt(s++)?(e.consume(x),s===o.length?b:y):t(x)}function b(x){return x===null?t(x):x===93?(e.consume(x),A):R(x)?(a=b,X(x)):(e.consume(x),b)}function A(x){return x===93?(e.consume(x),O):b(x)}function O(x){return x===62?re(x):x===93?(e.consume(x),O):b(x)}function L(x){return x===null||x===62?re(x):R(x)?(a=L,X(x)):(e.consume(x),L)}function M(x){return x===null?t(x):x===63?(e.consume(x),T):R(x)?(a=M,X(x)):(e.consume(x),M)}function T(x){return x===62?re(x):M(x)}function B(x){return He(x)?(e.consume(x),I):t(x)}function I(x){return x===45||_e(x)?(e.consume(x),I):$(x)}function $(x){return R(x)?(a=$,X(x)):G(x)?(e.consume(x),$):re(x)}function j(x){return x===45||_e(x)?(e.consume(x),j):x===47||x===62||Q(x)?z(x):t(x)}function z(x){return x===47?(e.consume(x),re):x===58||x===95||He(x)?(e.consume(x),W):R(x)?(a=z,X(x)):G(x)?(e.consume(x),z):re(x)}function W(x){return x===45||x===46||x===58||x===95||_e(x)?(e.consume(x),W):D(x)}function D(x){return x===61?(e.consume(x),V):R(x)?(a=D,X(x)):G(x)?(e.consume(x),D):z(x)}function V(x){return x===null||x===60||x===61||x===62||x===96?t(x):x===34||x===39?(e.consume(x),i=x,J):R(x)?(a=V,X(x)):G(x)?(e.consume(x),V):(e.consume(x),i=void 0,te)}function J(x){return x===i?(e.consume(x),C):x===null?t(x):R(x)?(a=J,X(x)):(e.consume(x),J)}function C(x){return x===62||x===47||Q(x)?z(x):t(x)}function te(x){return x===null||x===34||x===39||x===60||x===61||x===96?t(x):x===62||Q(x)?z(x):(e.consume(x),te)}function X(x){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(x),e.exit("lineEnding"),H(e,le,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function le(x){return e.enter("htmlTextData"),a(x)}function re(x){return x===62?(e.consume(x),e.exit("htmlTextData"),e.exit("htmlText"),n):t(x)}}var gn={name:"labelEnd",tokenize:hg,resolveTo:dg,resolveAll:fg},pg={tokenize:gg},cg={tokenize:yg},mg={tokenize:bg};function fg(e){let n=-1,t;for(;++n-1&&(s[0]=s[0].slice(r)),o>0&&s.push(e[i].slice(0,o))),s}function Rg(e,n){let t=-1,r=[],i;for(;++tig,contentInitial:()=>Xh,disable:()=>og,document:()=>Zh,flow:()=>eg,flowInitial:()=>Jh,insideSpan:()=>rg,string:()=>tg,text:()=>ng});var Zh={[42]:$e,[43]:$e,[45]:$e,[48]:$e,[49]:$e,[50]:$e,[51]:$e,[52]:$e,[53]:$e,[54]:$e,[55]:$e,[56]:$e,[57]:$e,[62]:Ui},Xh={[91]:Cs},Jh={[-2]:vr,[-1]:vr,[32]:vr},eg={[35]:Ls,[42]:pn,[45]:[ro,pn],[60]:Is,[61]:ro,[95]:pn,[96]:Xi,[126]:Xi},tg={[38]:Zi,[92]:Gi},ng={[-5]:Or,[-4]:Or,[-3]:Or,[33]:Bs,[38]:Zi,[42]:kr,[60]:[Ts,Fs],[91]:Ms,[92]:[Es,Gi],[93]:un,[95]:kr,[96]:Ss},rg={null:[kr,Yu]},ig={null:[42,95]},og={null:[]};function Uu(e={}){let t=Wi([Rs].concat(e.extensions||[])),n={defined:[],lazy:{},constructs:t,content:r(Du),document:r($u),flow:r(Hu),string:r(ju),text:r(qu)};return n;function r(i){return o;function o(s){return Wu(n,i,s)}}}var Gu=/[\0\t\n\r]/g;function Qu(){let e=1,t="",n=!0,r;return i;function i(o,s,a){let l=[],u,p,c,f,m;for(o=t+o.toString(s),c=0,t="",n&&(o.charCodeAt(0)===65279&&c++,n=void 0);c13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"\uFFFD":String.fromCharCode(n)}var sg=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function oo(e){return e.replace(sg,ag)}function ag(e,t,n){if(t)return t;if(n.charCodeAt(0)===35){let i=n.charCodeAt(1),o=i===120||i===88;return io(n.slice(o?2:1),o?16:10)}return $n(n)||e}var Ds={}.hasOwnProperty,Ps=function(e,t,n){return typeof t!="string"&&(n=t,t=void 0),lg(n)(Zu(Uu(n).document().write(Qu()(e,t,!0))))};function lg(e={}){let t=Xu({transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:l(Xt),autolinkProtocol:V,autolinkEmail:V,atxHeading:l(er),blockQuote:l(Mt),characterEscape:V,characterReference:V,codeFenced:l(Zt),codeFencedFenceInfo:u,codeFencedFenceMeta:u,codeIndented:l(Zt,u),codeText:l(Vo,u),codeTextData:V,data:V,codeFlowValue:V,definition:l(Wo),definitionDestinationString:u,definitionLabelString:u,definitionTitleString:u,emphasis:l(Si),hardBreakEscape:l(Ai),hardBreakTrailing:l(Ai),htmlFlow:l(Ci,u),htmlFlowData:V,htmlText:l(Ci,u),htmlTextData:V,image:l(Ot),label:u,link:l(Xt),listItem:l(Ei),listItemValue:h,listOrdered:l(tr,d),listUnordered:l(tr),paragraph:l(nr),reference:st,referenceString:u,resourceDestinationString:u,resourceTitleString:u,setextHeading:l(er),strong:l(Li),thematicBreak:l(Ii)},exit:{atxHeading:c(),atxHeadingSequence:F,autolink:c(),autolinkEmail:ht,autolinkProtocol:at,blockQuote:c(),characterEscapeValue:D,characterReferenceMarkerHexadecimal:se,characterReferenceMarkerNumeric:se,characterReferenceValue:vt,codeFenced:c(O),codeFencedFence:T,codeFencedFenceInfo:g,codeFencedFenceMeta:y,codeFlowValue:D,codeIndented:c(C),codeText:c(J),codeTextData:D,data:D,definition:c(),definitionDestinationString:_,definitionLabelString:I,definitionTitleString:k,emphasis:c(),hardBreakEscape:c(ee),hardBreakTrailing:c(ee),htmlFlow:c(S),htmlFlowData:D,htmlText:c(ne),htmlTextData:D,image:c(ie),label:x,labelText:w,lineEnding:q,link:c(pe),listItem:c(),listOrdered:c(),listUnordered:c(),paragraph:c(),referenceString:Ue,resourceDestinationString:Ve,resourceTitleString:We,resource:ze,setextHeading:c(N),setextHeadingLineSequence:j,setextHeadingText:$,strong:c(),thematicBreak:c()}},e.mdastExtensions||[]),n={};return r;function r(L){let P={type:"root",children:[]},K=[P],le=[],lt=[],Fi={stack:K,tokenStack:le,config:t,enter:p,exit:f,buffer:u,resume:m,setData:o,getData:s},ue=-1;for(;++ue0)throw new Error("Cannot close document, a token (`"+le[le.length-1].type+"`, "+rn({start:le[le.length-1].start,end:le[le.length-1].end})+") is still open");for(P.position={start:a(L.length>0?L[0][1].start:{line:1,column:1,offset:0}),end:a(L.length>0?L[L.length-2][1].end:{line:1,column:1,offset:0})},ue=-1;++ue{let r=this.data("settings");return Ps(n,Object.assign({},r,e,{extensions:this.data("micromarkExtensions")||[],mdastExtensions:this.data("fromMarkdownExtensions")||[]}))}})}var Ju=$s;var ep={}.hasOwnProperty;function tp(e,t){var n=t||{};function r(i){var o=r.invalid,s=r.handlers;if(i&&ep.call(i,e)&&(o=ep.call(s,i[e])?s[i[e]]:r.unknown),o)return o.apply(this,arguments)}return r.handlers=n.handlers||{},r.invalid=n.invalid,r.unknown=n.unknown,r}function Tr(e,t){let n=-1,r;if(t.extensions)for(;++nqg,contentInitial:()=>Pg,disable:()=>jg,document:()=>Dg,flow:()=>Ng,flowInitial:()=>$g,insideSpan:()=>Yg,string:()=>zg,text:()=>Hg});var Dg={[42]:qe,[43]:qe,[45]:qe,[48]:qe,[49]:qe,[50]:qe,[51]:qe,[52]:qe,[53]:qe,[54]:qe,[55]:qe,[56]:qe,[57]:qe,[62]:Co},Pg={[91]:ra},$g={[-2]:Hr,[-1]:Hr,[32]:Hr},Ng={[35]:oa,[42]:yn,[45]:[Ro,yn],[60]:aa,[61]:Ro,[95]:yn,[96]:_o,[126]:_o},zg={[38]:Lo,[92]:Eo},Hg={[-5]:Yr,[-4]:Yr,[-3]:Yr,[33]:ua,[38]:Lo,[42]:zr,[60]:[ea,la],[91]:pa,[92]:[ia,Eo],[93]:gn,[95]:zr,[96]:ta},Yg={null:[zr,Cp]},qg={null:[42,95]},jg={null:[]};function Ip(e={}){let n=Ao([ca].concat(e.extensions||[])),t={defined:[],lazy:{},constructs:n,content:r(xp),document:r(vp),flow:r(Ap),string:r(Ep),text:r(Lp)};return t;function r(i){return o;function o(s){return Mp(t,i,s)}}}var Fp=/[\0\t\n\r]/g;function Rp(){let e=1,n="",t=!0,r;return i;function i(o,s,a){let l=[],u,p,c,m,f;for(o=n+o.toString(s),c=0,n="",t&&(o.charCodeAt(0)===65279&&c++,t=void 0);c13&&t<32||t>126&&t<160||t>55295&&t<57344||t>64975&&t<65008||(t&65535)===65535||(t&65535)===65534||t>1114111?"\uFFFD":String.fromCharCode(t)}var Vg=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function Po(e){return e.replace(Vg,Wg)}function Wg(e,n,t){if(n)return n;if(t.charCodeAt(0)===35){let i=t.charCodeAt(1),o=i===120||i===88;return Do(t.slice(o?2:1),o?16:10)}return sr(t)||e}var ma={}.hasOwnProperty,fa=function(e,n,t){return typeof n!="string"&&(t=n,n=void 0),Kg(t)(Dp(Ip(t).document().write(Rp()(e,n,!0))))};function Kg(e={}){let n=$p({transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:l(nn),autolinkProtocol:W,autolinkEmail:W,atxHeading:l(wr),blockQuote:l(Nt),characterEscape:W,characterReference:W,codeFenced:l(tn),codeFencedFenceInfo:u,codeFencedFenceMeta:u,codeIndented:l(tn,u),codeText:l(ws,u),codeTextData:W,data:W,codeFlowValue:W,definition:l(xs),definitionDestinationString:u,definitionLabelString:u,definitionTitleString:u,emphasis:l(ji),hardBreakEscape:l(Vi),hardBreakTrailing:l(Vi),htmlFlow:l(Wi,u),htmlFlowData:W,htmlText:l(Wi,u),htmlTextData:W,image:l(Ct),label:u,link:l(nn),listItem:l(Ki),listItemValue:h,listOrdered:l(xr,d),listUnordered:l(xr),paragraph:l(kr),reference:pt,referenceString:u,resourceDestinationString:u,resourceTitleString:u,setextHeading:l(wr),strong:l(Ui),thematicBreak:l(Zi)},exit:{atxHeading:c(),atxHeadingSequence:I,autolink:c(),autolinkEmail:bt,autolinkProtocol:ct,blockQuote:c(),characterEscapeValue:D,characterReferenceMarkerHexadecimal:oe,characterReferenceMarkerNumeric:oe,characterReferenceValue:At,codeFenced:c(O),codeFencedFence:A,codeFencedFenceInfo:y,codeFencedFenceMeta:b,codeFlowValue:D,codeIndented:c(L),codeText:c(X),codeTextData:D,data:D,definition:c(),definitionDestinationString:B,definitionLabelString:M,definitionTitleString:T,emphasis:c(),hardBreakEscape:c(J),hardBreakTrailing:c(J),htmlFlow:c(C),htmlFlowData:D,htmlText:c(te),htmlTextData:D,image:c(re),label:w,labelText:x,lineEnding:V,link:c(le),listItem:c(),listOrdered:c(),listUnordered:c(),paragraph:c(),referenceString:Qe,resourceDestinationString:Ge,resourceTitleString:Ze,resource:je,setextHeading:c(z),setextHeadingLineSequence:j,setextHeadingText:$,strong:c(),thematicBreak:c()}},e.mdastExtensions||[]),t={};return r;function r(_){let P={type:"root",children:[]},K=[P],ne=[],it=[],vr={stack:K,tokenStack:ne,config:n,enter:p,exit:m,buffer:u,resume:f,setData:o,getData:s},ue=-1;for(;++ue<_.length;)if(_[ue][1].type==="listOrdered"||_[ue][1].type==="listUnordered")if(_[ue][0]==="enter")it.push(ue);else{let Fe=it.pop();ue=i(_,Fe,ue)}for(ue=-1;++ue<_.length;){let Fe=n[_[ue][0]];ma.call(Fe,_[ue][1].type)&&Fe[_[ue][1].type].call(Object.assign({sliceSerialize:_[ue][2].sliceSerialize},vr),_[ue][1])}if(ne.length>0){let Fe=ne[ne.length-1];(Fe[1]||Pp).call(vr,void 0,Fe[0])}for(P.position={start:a(_.length>0?_[0][1].start:{line:1,column:1,offset:0}),end:a(_.length>0?_[_.length-2][1].end:{line:1,column:1,offset:0})},ue=-1;++ue{let r=this.data("settings");return fa(t,Object.assign({},r,e,{extensions:this.data("micromarkExtensions")||[],mdastExtensions:this.data("fromMarkdownExtensions")||[]}))}})}var Np=da;var zp={}.hasOwnProperty;function Hp(e,n){var t=n||{};function r(i){var o=r.invalid,s=r.handlers;if(i&&zp.call(i,e)&&(o=zp.call(s,i[e])?s[i[e]]:r.unknown),o)return o.apply(this,arguments)}return r.handlers=t.handlers||{},r.invalid=t.invalid,r.unknown=t.unknown,r}function qr(e,n){let t=-1,r;if(n.extensions)for(;++t `}return` -`}}var pg=/\r?\n|\r/g;function Ht(e,t){let n=[],r=0,i=0,o;for(;o=pg.exec(e);)s(e.slice(r,o.index)),n.push(o[0]),r=o.index+o[0].length,i++;return s(e.slice(r)),n.join("");function s(a){n.push(t(a,i,!a))}}function np(e,t,n,r){let i=n.enter("blockquote"),o=Q(r);o.move("> "),o.shift(2);let s=Ht(xt(e,n,o.current()),cg);return i(),s}function cg(e,t,n){return">"+(n?"":" ")+e}function so(e,t){return rp(e,t.inConstruct,!0)&&!rp(e,t.notInConstruct,!1)}function rp(e,t,n){if(!t)return n;typeof t=="string"&&(t=[t]);let r=-1;for(;++rs&&(s=o):o=1,i=r+1,r=n.indexOf(t,i);return s}function Sr(e,t){return Boolean(!t.options.fences&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function ip(e){let t=e.options.fence||"`";if(t!=="`"&&t!=="~")throw new Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function lo(e){if(!e._compiled){let t=(e.atBreak?"[\\r\\n][\\t ]*":"")+(e.before?"(?:"+e.before+")":"");e._compiled=new RegExp((t?"("+t+")":"")+(/[|\\{}()[\]^$+*?.-]/.test(e.character)?"\\":"")+e.character+(e.after?"(?:"+e.after+")":""),"g")}return e._compiled}function te(e,t,n){let r=(n.before||"")+(t||"")+(n.after||""),i=[],o=[],s={},a=-1;for(;++a=u||p+1 "),o.shift(2);let s=Qt(Tt(e,t,o.current()),Zg);return i(),s}function Zg(e,n,t){return">"+(t?"":" ")+e}function $o(e,n){return qp(e,n.inConstruct,!0)&&!qp(e,n.notInConstruct,!1)}function qp(e,n,t){if(!n)return t;typeof n=="string"&&(n=[n]);let r=-1;for(;++rs&&(s=o):o=1,i=r+1,r=t.indexOf(n,i);return s}function jr(e,n){return Boolean(!n.options.fences&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function jp(e){let n=e.options.fence||"`";if(n!=="`"&&n!=="~")throw new Error("Cannot serialize code with `"+n+"` for `options.fence`, expected `` ` `` or `~`");return n}function zo(e){if(!e._compiled){let n=(e.atBreak?"[\\r\\n][\\t ]*":"")+(e.before?"(?:"+e.before+")":"");e._compiled=new RegExp((n?"("+n+")":"")+(/[|\\{}()[\]^$+*?.-]/.test(e.character)?"\\":"")+e.character+(e.after?"(?:"+e.after+")":""),"g")}return e._compiled}function ee(e,n,t){let r=(t.before||"")+(n||"")+(t.after||""),i=[],o=[],s={},a=-1;for(;++a=u||p+1",...l.current()})),u+=l.move(">")):(a=n.enter("destinationRaw"),u+=l.move(te(n,e.url,{before:u,after:e.title?" ":` -`,...l.current()}))),a(),e.title&&(a=n.enter("title"+o),u+=l.move(" "+i),u+=l.move(te(n,e.title,{before:u,after:i,...l.current()})),u+=l.move(i),a()),s(),u}function lp(e){let t=e.options.emphasis||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}function Ae(e,t,n){let r=t.indexStack,i=e.children||[],o=[],s=-1,a=n.before;r.push(-1);let l=Q(n);for(;++s0&&(a==="\r"||a===` -`)&&u.type==="html"&&(o[o.length-1]=o[o.length-1].replace(/(\r?\n|\r)$/," "),a=" ",l=Q(n),l.move(o.join(""))),o.push(l.move(t.handle(u,e,t,{...l.current(),before:a,after:p}))),a=o[o.length-1].slice(-1)}return r.pop(),o.join("")}zs.peek=dg;function zs(e,t,n,r){let i=lp(n),o=n.enter("emphasis"),s=Q(r),a=s.move(i);return a+=s.move(Ae(e,n,{before:a,after:i,...s.current()})),a+=s.move(i),o(),a}function dg(e,t,n){return n.options.emphasis||"*"}function uo(e,t){let n=!1;return Ki(e,r=>{if("value"in r&&/\r?\n|\r/.test(r.value)||r.type==="break")return n=!0,hr}),Boolean((!e.depth||e.depth<3)&&Dn(e)&&(t.options.setext||n))}function up(e,t,n,r){let i=Math.max(Math.min(6,e.depth||1),1),o=Q(r);if(uo(e,n)){let p=n.enter("headingSetext"),c=n.enter("phrasing"),f=Ae(e,n,{...o.current(),before:` +`)),p+=a.move(l),u(),p}function Xg(e,n,t){return(t?"":" ")+e}function Bt(e){return e.label||!e.identifier?e.label||"":Po(e.identifier)}function ar(e){let n=e.options.quote||'"';if(n!=='"'&&n!=="'")throw new Error("Cannot serialize title with `"+n+"` for `options.quote`, expected `\"`, or `'`");return n}function Kp(e,n,t,r){let i=ar(t),o=i==='"'?"Quote":"Apostrophe",s=t.enter("definition"),a=t.enter("label"),l=Z(r),u=l.move("[");return u+=l.move(ee(t,Bt(e),{before:u,after:"]",...l.current()})),u+=l.move("]: "),a(),!e.url||/[\0- \u007F]/.test(e.url)?(a=t.enter("destinationLiteral"),u+=l.move("<"),u+=l.move(ee(t,e.url,{before:u,after:">",...l.current()})),u+=l.move(">")):(a=t.enter("destinationRaw"),u+=l.move(ee(t,e.url,{before:u,after:e.title?" ":` +`,...l.current()}))),a(),e.title&&(a=t.enter("title"+o),u+=l.move(" "+i),u+=l.move(ee(t,e.title,{before:u,after:i,...l.current()})),u+=l.move(i),a()),s(),u}function Up(e){let n=e.options.emphasis||"*";if(n!=="*"&&n!=="_")throw new Error("Cannot serialize emphasis with `"+n+"` for `options.emphasis`, expected `*`, or `_`");return n}function Be(e,n,t){let r=n.indexStack,i=e.children||[],o=[],s=-1,a=t.before;r.push(-1);let l=Z(t);for(;++s0&&(a==="\r"||a===` +`)&&u.type==="html"&&(o[o.length-1]=o[o.length-1].replace(/(\r?\n|\r)$/," "),a=" ",l=Z(t),l.move(o.join(""))),o.push(l.move(n.handle(u,e,n,{...l.current(),before:a,after:p}))),a=o[o.length-1].slice(-1)}return r.pop(),o.join("")}ga.peek=Jg;function ga(e,n,t,r){let i=Up(t),o=t.enter("emphasis"),s=Z(r),a=s.move(i);return a+=s.move(Be(e,t,{before:a,after:i,...s.current()})),a+=s.move(i),o(),a}function Jg(e,n,t){return t.options.emphasis||"*"}function Ho(e,n){let t=!1;return To(e,r=>{if("value"in r&&/\r?\n|\r/.test(r.value)||r.type==="break")return t=!0,Rr}),Boolean((!e.depth||e.depth<3)&&ir(e)&&(n.options.setext||t))}function Gp(e,n,t,r){let i=Math.max(Math.min(6,e.depth||1),1),o=Z(r);if(Ho(e,t)){let p=t.enter("headingSetext"),c=t.enter("phrasing"),m=Be(e,t,{...o.current(),before:` `,after:` -`});return c(),p(),f+` -`+(i===1?"=":"-").repeat(f.length-(Math.max(f.lastIndexOf("\r"),f.lastIndexOf(` -`))+1))}let s="#".repeat(i),a=n.enter("headingAtx"),l=n.enter("phrasing");o.move(s+" ");let u=Ae(e,n,{before:"# ",after:` -`,...o.current()});return/^[\t ]/.test(u)&&(u="&#x"+u.charCodeAt(0).toString(16).toUpperCase()+";"+u.slice(1)),u=u?s+" "+u:s,n.options.closeAtx&&(u+=" "+s),l(),a(),u}Hs.peek=hg;function Hs(e){return e.value||""}function hg(){return"<"}Ys.peek=gg;function Ys(e,t,n,r){let i=Nn(n),o=i==='"'?"Quote":"Apostrophe",s=n.enter("image"),a=n.enter("label"),l=Q(r),u=l.move("![");return u+=l.move(te(n,e.alt,{before:u,after:"]",...l.current()})),u+=l.move("]("),a(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(a=n.enter("destinationLiteral"),u+=l.move("<"),u+=l.move(te(n,e.url,{before:u,after:">",...l.current()})),u+=l.move(">")):(a=n.enter("destinationRaw"),u+=l.move(te(n,e.url,{before:u,after:e.title?" ":")",...l.current()}))),a(),e.title&&(a=n.enter("title"+o),u+=l.move(" "+i),u+=l.move(te(n,e.title,{before:u,after:i,...l.current()})),u+=l.move(i),a()),u+=l.move(")"),s(),u}function gg(){return"!"}js.peek=yg;function js(e,t,n,r){let i=e.referenceType,o=n.enter("imageReference"),s=n.enter("label"),a=Q(r),l=a.move("!["),u=te(n,e.alt,{before:l,after:"]",...a.current()});l+=a.move(u+"]["),s();let p=n.stack;n.stack=[],s=n.enter("reference");let c=te(n,At(e),{before:l,after:"]",...a.current()});return s(),n.stack=p,o(),i==="full"||!u||u!==c?l+=a.move(c+"]"):i==="shortcut"?l=l.slice(0,-1):l+=a.move("]"),l}function yg(){return"!"}Ar.peek=bg;function Ar(e,t,n){let r=e.value||"",i="`",o=-1;for(;new RegExp("(^|[^`])"+i+"([^`]|$)").test(r);)i+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=" "+r+" ");++o\u007F]/.test(e.url))}Ks.peek=wg;function Ks(e,t,n,r){let i=Nn(n),o=i==='"'?"Quote":"Apostrophe",s=Q(r),a,l;if(qs(e,n)){let p=n.stack;n.stack=[],a=n.enter("autolink");let c=s.move("<");return c+=s.move(Ae(e,n,{before:c,after:">",...s.current()})),c+=s.move(">"),a(),n.stack=p,c}a=n.enter("link"),l=n.enter("label");let u=s.move("[");return u+=s.move(Ae(e,n,{before:u,after:"](",...s.current()})),u+=s.move("]("),l(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(l=n.enter("destinationLiteral"),u+=s.move("<"),u+=s.move(te(n,e.url,{before:u,after:">",...s.current()})),u+=s.move(">")):(l=n.enter("destinationRaw"),u+=s.move(te(n,e.url,{before:u,after:e.title?" ":")",...s.current()}))),l(),e.title&&(l=n.enter("title"+o),u+=s.move(" "+i),u+=s.move(te(n,e.title,{before:u,after:i,...s.current()})),u+=s.move(i),l()),u+=s.move(")"),a(),u}function wg(e,t,n){return qs(e,n)?"<":"["}Vs.peek=xg;function Vs(e,t,n,r){let i=e.referenceType,o=n.enter("linkReference"),s=n.enter("label"),a=Q(r),l=a.move("["),u=Ae(e,n,{before:l,after:"]",...a.current()});l+=a.move(u+"]["),s();let p=n.stack;n.stack=[],s=n.enter("reference");let c=te(n,At(e),{before:l,after:"]",...a.current()});return s(),n.stack=p,o(),i==="full"||!u||u!==c?l+=a.move(c+"]"):i==="shortcut"?l=l.slice(0,-1):l+=a.move("]"),l}function xg(){return"["}function zn(e){let t=e.options.bullet||"*";if(t!=="*"&&t!=="+"&&t!=="-")throw new Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function pp(e){let t=zn(e),n=e.options.bulletOther;if(!n)return t==="*"?"-":"*";if(n!=="*"&&n!=="+"&&n!=="-")throw new Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===t)throw new Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+n+"`) to be different");return n}function po(e){let t=e.options.bulletOrdered||".";if(t!=="."&&t!==")")throw new Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function cp(e){let t=po(e),n=e.options.bulletOrderedOther;if(!n)return t==="."?")":".";if(n!=="."&&n!==")")throw new Error("Cannot serialize items with `"+n+"` for `options.bulletOrderedOther`, expected `*`, `+`, or `-`");if(n===t)throw new Error("Expected `bulletOrdered` (`"+t+"`) and `bulletOrderedOther` (`"+n+"`) to be different");return n}function co(e){let t=e.options.rule||"*";if(t!=="*"&&t!=="-"&&t!=="_")throw new Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function fp(e,t,n,r){let i=n.enter("list"),o=n.bulletCurrent,s=e.ordered?po(n):zn(n),a=e.ordered?cp(n):pp(n),l=n.bulletLastUsed,u=!1;if(t&&(e.ordered?n.options.bulletOrderedOther:n.options.bulletOther)&&l&&s===l&&(u=!0),!e.ordered){let c=e.children?e.children[0]:void 0;if((s==="*"||s==="-")&&c&&(!c.children||!c.children[0])&&n.stack[n.stack.length-1]==="list"&&n.stack[n.stack.length-2]==="listItem"&&n.stack[n.stack.length-3]==="list"&&n.stack[n.stack.length-4]==="listItem"&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(u=!0),co(n)===s&&c){let f=-1;for(;++f-1?t.start:1)+(n.options.incrementListMarker===!1?0:t.children.indexOf(e))+o);let s=o.length+1;(i==="tab"||i==="mixed"&&(t&&t.type==="list"&&t.spread||e.spread))&&(s=Math.ceil(s/4)*4);let a=Q(r);a.move(o+" ".repeat(s-o.length)),a.shift(s);let l=n.enter("listItem"),u=Ht(xt(e,n,a.current()),p);return l(),u;function p(c,f,m){return f?(m?"":" ".repeat(s))+c:(m?o:o+" ".repeat(s-o.length))+c}}function dp(e,t,n,r){let i=n.enter("paragraph"),o=n.enter("phrasing"),s=Ae(e,n,r);return o(),i(),s}function hp(e,t,n,r){return xt(e,n,r)}function gp(e){let t=e.options.strong||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}Ws.peek=kg;function Ws(e,t,n,r){let i=gp(n),o=n.enter("strong"),s=Q(r),a=s.move(i+i);return a+=s.move(Ae(e,n,{before:a,after:i,...s.current()})),a+=s.move(i+i),o(),a}function kg(e,t,n){return n.options.strong||"*"}function yp(e,t,n,r){return te(n,e.value,r)}function bp(e){let t=e.options.ruleRepetition||3;if(t<3)throw new Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function wp(e,t,n){let r=(co(n)+(n.options.ruleSpaces?" ":"")).repeat(bp(n));return n.options.ruleSpaces?r.slice(0,-1):r}var xp={blockquote:np,break:Ns,code:sp,definition:ap,emphasis:zs,hardBreak:Ns,heading:up,html:Hs,image:Ys,imageReference:js,inlineCode:Ar,link:Ks,linkReference:Vs,list:fp,listItem:fo,paragraph:dp,root:hp,strong:Ws,text:yp,thematicBreak:wp};var kp=[vg];function vg(e,t,n,r){if(t.type==="code"&&Sr(t,r)&&(e.type==="list"||e.type===t.type&&Sr(e,r))||e.type==="list"&&e.type===t.type&&Boolean(e.ordered)===Boolean(t.ordered)&&!(e.ordered?r.options.bulletOrderedOther:r.options.bulletOther))return!1;if("spread"in n&&typeof n.spread=="boolean")return e.type==="paragraph"&&(e.type===t.type||t.type==="definition"||t.type==="heading"&&uo(t,r))?void 0:n.spread?1:0}var cn=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"],vp=[{character:" ",after:"[\\r\\n]",inConstruct:"phrasing"},{character:" ",before:"[\\r\\n]",inConstruct:"phrasing"},{character:" ",inConstruct:["codeFencedLangGraveAccent","codeFencedLangTilde"]},{character:"\r",inConstruct:["codeFencedLangGraveAccent","codeFencedLangTilde","codeFencedMetaGraveAccent","codeFencedMetaTilde","destinationLiteral","headingAtx"]},{character:` -`,inConstruct:["codeFencedLangGraveAccent","codeFencedLangTilde","codeFencedMetaGraveAccent","codeFencedMetaTilde","destinationLiteral","headingAtx"]},{character:" ",after:"[\\r\\n]",inConstruct:"phrasing"},{character:" ",before:"[\\r\\n]",inConstruct:"phrasing"},{character:" ",inConstruct:["codeFencedLangGraveAccent","codeFencedLangTilde"]},{character:"!",after:"\\[",inConstruct:"phrasing",notInConstruct:cn},{character:'"',inConstruct:"titleQuote"},{atBreak:!0,character:"#"},{character:"#",inConstruct:"headingAtx",after:`(?:[\r -]|$)`},{character:"&",after:"[#A-Za-z]",inConstruct:"phrasing"},{character:"'",inConstruct:"titleApostrophe"},{character:"(",inConstruct:"destinationRaw"},{before:"\\]",character:"(",inConstruct:"phrasing",notInConstruct:cn},{atBreak:!0,before:"\\d+",character:")"},{character:")",inConstruct:"destinationRaw"},{atBreak:!0,character:"*"},{character:"*",inConstruct:"phrasing",notInConstruct:cn},{atBreak:!0,character:"+"},{atBreak:!0,character:"-"},{atBreak:!0,before:"\\d+",character:".",after:`(?:[ \r -]|$)`},{atBreak:!0,character:"<",after:"[!/?A-Za-z]"},{character:"<",after:"[!/?A-Za-z]",inConstruct:"phrasing",notInConstruct:cn},{character:"<",inConstruct:"destinationLiteral"},{atBreak:!0,character:"="},{atBreak:!0,character:">"},{character:">",inConstruct:"destinationLiteral"},{atBreak:!0,character:"["},{character:"[",inConstruct:"phrasing",notInConstruct:cn},{character:"[",inConstruct:["label","reference"]},{character:"\\",after:"[\\r\\n]",inConstruct:"phrasing"},{character:"]",inConstruct:["label","reference"]},{atBreak:!0,character:"_"},{character:"_",inConstruct:"phrasing",notInConstruct:cn},{atBreak:!0,character:"`"},{character:"`",inConstruct:["codeFencedLangGraveAccent","codeFencedMetaGraveAccent"]},{character:"`",inConstruct:"phrasing",notInConstruct:cn},{atBreak:!0,character:"~"}];function Us(e,t={}){let n={enter:i,stack:[],unsafe:[],join:[],handlers:{},options:{},indexStack:[]};Tr(n,{unsafe:vp,join:kp,handlers:xp}),Tr(n,t),n.options.tightDefinitions&&Tr(n,{join:[Sg]}),n.handle=tp("type",{invalid:Og,unknown:Tg,handlers:n.handlers});let r=n.handle(e,null,n,{before:` +`});return c(),p(),m+` +`+(i===1?"=":"-").repeat(m.length-(Math.max(m.lastIndexOf("\r"),m.lastIndexOf(` +`))+1))}let s="#".repeat(i),a=t.enter("headingAtx"),l=t.enter("phrasing");o.move(s+" ");let u=Be(e,t,{before:"# ",after:` +`,...o.current()});return/^[\t ]/.test(u)&&(u="&#x"+u.charCodeAt(0).toString(16).toUpperCase()+";"+u.slice(1)),u=u?s+" "+u:s,t.options.closeAtx&&(u+=" "+s),l(),a(),u}ya.peek=e1;function ya(e){return e.value||""}function e1(){return"<"}ba.peek=t1;function ba(e,n,t,r){let i=ar(t),o=i==='"'?"Quote":"Apostrophe",s=t.enter("image"),a=t.enter("label"),l=Z(r),u=l.move("![");return u+=l.move(ee(t,e.alt,{before:u,after:"]",...l.current()})),u+=l.move("]("),a(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(a=t.enter("destinationLiteral"),u+=l.move("<"),u+=l.move(ee(t,e.url,{before:u,after:">",...l.current()})),u+=l.move(">")):(a=t.enter("destinationRaw"),u+=l.move(ee(t,e.url,{before:u,after:e.title?" ":")",...l.current()}))),a(),e.title&&(a=t.enter("title"+o),u+=l.move(" "+i),u+=l.move(ee(t,e.title,{before:u,after:i,...l.current()})),u+=l.move(i),a()),u+=l.move(")"),s(),u}function t1(){return"!"}wa.peek=n1;function wa(e,n,t,r){let i=e.referenceType,o=t.enter("imageReference"),s=t.enter("label"),a=Z(r),l=a.move("!["),u=ee(t,e.alt,{before:l,after:"]",...a.current()});l+=a.move(u+"]["),s();let p=t.stack;t.stack=[],s=t.enter("reference");let c=ee(t,Bt(e),{before:l,after:"]",...a.current()});return s(),t.stack=p,o(),i==="full"||!u||u!==c?l+=a.move(c+"]"):i==="shortcut"?l=l.slice(0,-1):l+=a.move("]"),l}function n1(){return"!"}Vr.peek=r1;function Vr(e,n,t){let r=e.value||"",i="`",o=-1;for(;new RegExp("(^|[^`])"+i+"([^`]|$)").test(r);)i+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=" "+r+" ");++o\u007F]/.test(e.url))}ka.peek=i1;function ka(e,n,t,r){let i=ar(t),o=i==='"'?"Quote":"Apostrophe",s=Z(r),a,l;if(xa(e,t)){let p=t.stack;t.stack=[],a=t.enter("autolink");let c=s.move("<");return c+=s.move(Be(e,t,{before:c,after:">",...s.current()})),c+=s.move(">"),a(),t.stack=p,c}a=t.enter("link"),l=t.enter("label");let u=s.move("[");return u+=s.move(Be(e,t,{before:u,after:"](",...s.current()})),u+=s.move("]("),l(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(l=t.enter("destinationLiteral"),u+=s.move("<"),u+=s.move(ee(t,e.url,{before:u,after:">",...s.current()})),u+=s.move(">")):(l=t.enter("destinationRaw"),u+=s.move(ee(t,e.url,{before:u,after:e.title?" ":")",...s.current()}))),l(),e.title&&(l=t.enter("title"+o),u+=s.move(" "+i),u+=s.move(ee(t,e.title,{before:u,after:i,...s.current()})),u+=s.move(i),l()),u+=s.move(")"),a(),u}function i1(e,n,t){return xa(e,t)?"<":"["}va.peek=o1;function va(e,n,t,r){let i=e.referenceType,o=t.enter("linkReference"),s=t.enter("label"),a=Z(r),l=a.move("["),u=Be(e,t,{before:l,after:"]",...a.current()});l+=a.move(u+"]["),s();let p=t.stack;t.stack=[],s=t.enter("reference");let c=ee(t,Bt(e),{before:l,after:"]",...a.current()});return s(),t.stack=p,o(),i==="full"||!u||u!==c?l+=a.move(c+"]"):i==="shortcut"?l=l.slice(0,-1):l+=a.move("]"),l}function o1(){return"["}function lr(e){let n=e.options.bullet||"*";if(n!=="*"&&n!=="+"&&n!=="-")throw new Error("Cannot serialize items with `"+n+"` for `options.bullet`, expected `*`, `+`, or `-`");return n}function Zp(e){let n=lr(e),t=e.options.bulletOther;if(!t)return n==="*"?"-":"*";if(t!=="*"&&t!=="+"&&t!=="-")throw new Error("Cannot serialize items with `"+t+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(t===n)throw new Error("Expected `bullet` (`"+n+"`) and `bulletOther` (`"+t+"`) to be different");return t}function Yo(e){let n=e.options.bulletOrdered||".";if(n!=="."&&n!==")")throw new Error("Cannot serialize items with `"+n+"` for `options.bulletOrdered`, expected `.` or `)`");return n}function Qp(e){let n=Yo(e),t=e.options.bulletOrderedOther;if(!t)return n==="."?")":".";if(t!=="."&&t!==")")throw new Error("Cannot serialize items with `"+t+"` for `options.bulletOrderedOther`, expected `*`, `+`, or `-`");if(t===n)throw new Error("Expected `bulletOrdered` (`"+n+"`) and `bulletOrderedOther` (`"+t+"`) to be different");return t}function qo(e){let n=e.options.rule||"*";if(n!=="*"&&n!=="-"&&n!=="_")throw new Error("Cannot serialize rules with `"+n+"` for `options.rule`, expected `*`, `-`, or `_`");return n}function Xp(e,n,t,r){let i=t.enter("list"),o=t.bulletCurrent,s=e.ordered?Yo(t):lr(t),a=e.ordered?Qp(t):Zp(t),l=t.bulletLastUsed,u=!1;if(n&&(e.ordered?t.options.bulletOrderedOther:t.options.bulletOther)&&l&&s===l&&(u=!0),!e.ordered){let c=e.children?e.children[0]:void 0;if((s==="*"||s==="-")&&c&&(!c.children||!c.children[0])&&t.stack[t.stack.length-1]==="list"&&t.stack[t.stack.length-2]==="listItem"&&t.stack[t.stack.length-3]==="list"&&t.stack[t.stack.length-4]==="listItem"&&t.indexStack[t.indexStack.length-1]===0&&t.indexStack[t.indexStack.length-2]===0&&t.indexStack[t.indexStack.length-3]===0&&(u=!0),qo(t)===s&&c){let m=-1;for(;++m-1?n.start:1)+(t.options.incrementListMarker===!1?0:n.children.indexOf(e))+o);let s=o.length+1;(i==="tab"||i==="mixed"&&(n&&n.type==="list"&&n.spread||e.spread))&&(s=Math.ceil(s/4)*4);let a=Z(r);a.move(o+" ".repeat(s-o.length)),a.shift(s);let l=t.enter("listItem"),u=Qt(Tt(e,t,a.current()),p);return l(),u;function p(c,m,f){return m?(f?"":" ".repeat(s))+c:(f?o:o+" ".repeat(s-o.length))+c}}function ec(e,n,t,r){let i=t.enter("paragraph"),o=t.enter("phrasing"),s=Be(e,t,r);return o(),i(),s}function tc(e,n,t,r){return Tt(e,t,r)}function nc(e){let n=e.options.strong||"*";if(n!=="*"&&n!=="_")throw new Error("Cannot serialize strong with `"+n+"` for `options.strong`, expected `*`, or `_`");return n}Sa.peek=s1;function Sa(e,n,t,r){let i=nc(t),o=t.enter("strong"),s=Z(r),a=s.move(i+i);return a+=s.move(Be(e,t,{before:a,after:i,...s.current()})),a+=s.move(i+i),o(),a}function s1(e,n,t){return t.options.strong||"*"}function rc(e,n,t,r){return ee(t,e.value,r)}function ic(e){let n=e.options.ruleRepetition||3;if(n<3)throw new Error("Cannot serialize rules with repetition `"+n+"` for `options.ruleRepetition`, expected `3` or more");return n}function oc(e,n,t){let r=(qo(t)+(t.options.ruleSpaces?" ":"")).repeat(ic(t));return t.options.ruleSpaces?r.slice(0,-1):r}var sc={blockquote:Yp,break:ha,code:Wp,definition:Kp,emphasis:ga,hardBreak:ha,heading:Gp,html:ya,image:ba,imageReference:wa,inlineCode:Vr,link:ka,linkReference:va,list:Xp,listItem:jo,paragraph:ec,root:tc,strong:Sa,text:rc,thematicBreak:oc};var ac=[a1];function a1(e,n,t,r){if(n.type==="code"&&jr(n,r)&&(e.type==="list"||e.type===n.type&&jr(e,r))||e.type==="list"&&e.type===n.type&&Boolean(e.ordered)===Boolean(n.ordered)&&!(e.ordered?r.options.bulletOrderedOther:r.options.bulletOther))return!1;if("spread"in t&&typeof t.spread=="boolean")return e.type==="paragraph"&&(e.type===n.type||n.type==="definition"||n.type==="heading"&&Ho(n,r))?void 0:t.spread?1:0}var bn=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"],lc=[{character:" ",after:"[\\r\\n]",inConstruct:"phrasing"},{character:" ",before:"[\\r\\n]",inConstruct:"phrasing"},{character:" ",inConstruct:["codeFencedLangGraveAccent","codeFencedLangTilde"]},{character:"\r",inConstruct:["codeFencedLangGraveAccent","codeFencedLangTilde","codeFencedMetaGraveAccent","codeFencedMetaTilde","destinationLiteral","headingAtx"]},{character:` +`,inConstruct:["codeFencedLangGraveAccent","codeFencedLangTilde","codeFencedMetaGraveAccent","codeFencedMetaTilde","destinationLiteral","headingAtx"]},{character:" ",after:"[\\r\\n]",inConstruct:"phrasing"},{character:" ",before:"[\\r\\n]",inConstruct:"phrasing"},{character:" ",inConstruct:["codeFencedLangGraveAccent","codeFencedLangTilde"]},{character:"!",after:"\\[",inConstruct:"phrasing",notInConstruct:bn},{character:'"',inConstruct:"titleQuote"},{atBreak:!0,character:"#"},{character:"#",inConstruct:"headingAtx",after:`(?:[\r +]|$)`},{character:"&",after:"[#A-Za-z]",inConstruct:"phrasing"},{character:"'",inConstruct:"titleApostrophe"},{character:"(",inConstruct:"destinationRaw"},{before:"\\]",character:"(",inConstruct:"phrasing",notInConstruct:bn},{atBreak:!0,before:"\\d+",character:")"},{character:")",inConstruct:"destinationRaw"},{atBreak:!0,character:"*"},{character:"*",inConstruct:"phrasing",notInConstruct:bn},{atBreak:!0,character:"+"},{atBreak:!0,character:"-"},{atBreak:!0,before:"\\d+",character:".",after:`(?:[ \r +]|$)`},{atBreak:!0,character:"<",after:"[!/?A-Za-z]"},{character:"<",after:"[!/?A-Za-z]",inConstruct:"phrasing",notInConstruct:bn},{character:"<",inConstruct:"destinationLiteral"},{atBreak:!0,character:"="},{atBreak:!0,character:">"},{character:">",inConstruct:"destinationLiteral"},{atBreak:!0,character:"["},{character:"[",inConstruct:"phrasing",notInConstruct:bn},{character:"[",inConstruct:["label","reference"]},{character:"\\",after:"[\\r\\n]",inConstruct:"phrasing"},{character:"]",inConstruct:["label","reference"]},{atBreak:!0,character:"_"},{character:"_",inConstruct:"phrasing",notInConstruct:bn},{atBreak:!0,character:"`"},{character:"`",inConstruct:["codeFencedLangGraveAccent","codeFencedMetaGraveAccent"]},{character:"`",inConstruct:"phrasing",notInConstruct:bn},{atBreak:!0,character:"~"}];function Ta(e,n={}){let t={enter:i,stack:[],unsafe:[],join:[],handlers:{},options:{},indexStack:[]};qr(t,{unsafe:lc,join:ac,handlers:sc}),qr(t,n),t.options.tightDefinitions&&qr(t,{join:[p1]}),t.handle=Hp("type",{invalid:l1,unknown:u1,handlers:t.handlers});let r=t.handle(e,null,t,{before:` `,after:` `,now:{line:1,column:1},lineShift:0});return r&&r.charCodeAt(r.length-1)!==10&&r.charCodeAt(r.length-1)!==13&&(r+=` -`),r;function i(o){return n.stack.push(o),s;function s(){n.stack.pop()}}}function Og(e){throw new Error("Cannot handle value `"+e+"`, expected node")}function Tg(e){throw new Error("Cannot handle unknown node `"+e.type+"`")}function Sg(e,t){if(e.type==="definition"&&e.type===t.type)return 0}function Gs(e){Object.assign(this,{Compiler:n=>{let r=this.data("settings");return Us(n,Object.assign({},r,e,{extensions:this.data("toMarkdownExtensions")||[]}))}})}var Op=Gs;var Tp=vs().use(Ju).use(Op).freeze();var Ag={tokenize:_g,partial:!0},Ap={tokenize:Ig,partial:!0},Cp={tokenize:Fg,partial:!0},Hn={tokenize:Mg,partial:!0},Ep={tokenize:Bg,partial:!0},Lp={tokenize:Eg,previous:Fp},_p={tokenize:Lg,previous:Xs},Ct={tokenize:Cg,previous:Bp},kt={},Qs={text:kt},fn=48;for(;fn<123;)kt[fn]=Ct,fn++,fn===58?fn=65:fn===91&&(fn=97);kt[43]=Ct;kt[45]=Ct;kt[46]=Ct;kt[95]=Ct;kt[72]=[Ct,_p];kt[104]=[Ct,_p];kt[87]=[Ct,Lp];kt[119]=[Ct,Lp];function Cg(e,t,n){let r=this,i,o;return s;function s(m){return!Sp(m)||!Bp(r.previous)||Js(r.events)?n(m):(e.enter("literalAutolink"),e.enter("literalAutolinkEmail"),a(m))}function a(m){return Sp(m)?(e.consume(m),a):m===64?(e.consume(m),l):n(m)}function l(m){return m===46?e.check(Hn,f,u)(m):m===45||m===95?e.check(Hn,n,p)(m):Se(m)?(!o&&on(m)&&(o=!0),e.consume(m),l):f(m)}function u(m){return e.consume(m),i=!0,o=void 0,l}function p(m){return e.consume(m),c}function c(m){return m===46?e.check(Hn,n,u)(m):l(m)}function f(m){return i&&!o?(e.exit("literalAutolinkEmail"),e.exit("literalAutolink"),t(m)):n(m)}}function Eg(e,t,n){let r=this;return i;function i(s){return s!==87&&s!==119||!Fp(r.previous)||Js(r.events)?n(s):(e.enter("literalAutolink"),e.enter("literalAutolinkWww"),e.check(Ag,e.attempt(Ap,e.attempt(Cp,o),n),n)(s))}function o(s){return e.exit("literalAutolinkWww"),e.exit("literalAutolink"),t(s)}}function Lg(e,t,n){let r=this;return i;function i(d){return d!==72&&d!==104||!Xs(r.previous)||Js(r.events)?n(d):(e.enter("literalAutolink"),e.enter("literalAutolinkHttp"),e.consume(d),o)}function o(d){return d===84||d===116?(e.consume(d),s):n(d)}function s(d){return d===84||d===116?(e.consume(d),a):n(d)}function a(d){return d===80||d===112?(e.consume(d),l):n(d)}function l(d){return d===83||d===115?(e.consume(d),u):u(d)}function u(d){return d===58?(e.consume(d),p):n(d)}function p(d){return d===47?(e.consume(d),c):n(d)}function c(d){return d===47?(e.consume(d),f):n(d)}function f(d){return d===null||$t(d)||sn(d)||an(d)?n(d):e.attempt(Ap,e.attempt(Cp,m),n)(d)}function m(d){return e.exit("literalAutolinkHttp"),e.exit("literalAutolink"),t(d)}}function _g(e,t,n){return r;function r(l){return e.consume(l),i}function i(l){return l===87||l===119?(e.consume(l),o):n(l)}function o(l){return l===87||l===119?(e.consume(l),s):n(l)}function s(l){return l===46?(e.consume(l),a):n(l)}function a(l){return l===null||R(l)?n(l):t(l)}}function Ig(e,t,n){let r,i;return o;function o(l){return l===38?e.check(Ep,a,s)(l):l===46||l===95?e.check(Hn,a,s)(l):l===null||$t(l)||sn(l)||l!==45&&an(l)?a(l):(e.consume(l),o)}function s(l){return l===46?(i=r,r=void 0,e.consume(l),o):(l===95&&(r=!0),e.consume(l),o)}function a(l){return!i&&!r?t(l):n(l)}}function Fg(e,t){let n=0;return r;function r(s){return s===38?e.check(Ep,t,i)(s):(s===40&&n++,s===41?e.check(Hn,o,i)(s):Zs(s)?t(s):Ip(s)?e.check(Hn,t,i)(s):(e.consume(s),r))}function i(s){return e.consume(s),r}function o(s){return n--,n<0?t(s):i(s)}}function Bg(e,t,n){return r;function r(s){return e.consume(s),i}function i(s){return De(s)?(e.consume(s),i):s===59?(e.consume(s),o):n(s)}function o(s){return Zs(s)?t(s):n(s)}}function Mg(e,t,n){return r;function r(o){return e.consume(o),i}function i(o){return Ip(o)?(e.consume(o),i):Zs(o)?t(o):n(o)}}function Ip(e){return e===33||e===34||e===39||e===41||e===42||e===44||e===46||e===58||e===59||e===60||e===63||e===95||e===126}function Zs(e){return e===null||e===60||X(e)}function Sp(e){return e===43||e===45||e===46||e===95||Se(e)}function Fp(e){return e===null||e===40||e===42||e===95||e===126||X(e)}function Xs(e){return e===null||!De(e)}function Bp(e){return e!==47&&Xs(e)}function Js(e){let t=e.length,n=!1;for(;t--;){let r=e[t][1];if((r.type==="labelLink"||r.type==="labelImage")&&!r._balanced){n=!0;break}if(r._gfmAutolinkLiteralWalkedInto){n=!1;break}}return e.length>0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}var Rg={tokenize:Yg,partial:!0};function ea(){return{document:{[91]:{tokenize:Ng,continuation:{tokenize:zg},exit:Hg}},text:{[91]:{tokenize:$g},[93]:{add:"after",tokenize:Dg,resolveTo:Pg}}}}function Dg(e,t,n){let r=this,i=r.events.length,o=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),s;for(;i--;){let l=r.events[i][1];if(l.type==="labelImage"){s=l;break}if(l.type==="gfmFootnoteCall"||l.type==="labelLink"||l.type==="label"||l.type==="image"||l.type==="link")break}return a;function a(l){if(!s||!s._balanced)return n(l);let u=Pe(r.sliceSerialize({start:s.end,end:r.now()}));return u.charCodeAt(0)!==94||!o.includes(u.slice(1))?n(l):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(l),e.exit("gfmFootnoteCallLabelMarker"),t(l))}}function Pg(e,t){let n=e.length,r;for(;n--;)if(e[n][1].type==="labelImage"&&e[n][0]==="enter"){r=e[n][1];break}e[n+1][1].type="data",e[n+3][1].type="gfmFootnoteCallLabelMarker";let i={type:"gfmFootnoteCall",start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},o={type:"gfmFootnoteCallMarker",start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};o.end.column++,o.end.offset++,o.end._bufferIndex++;let s={type:"gfmFootnoteCallString",start:Object.assign({},o.end),end:Object.assign({},e[e.length-1][1].start)},a={type:"chunkString",contentType:"string",start:Object.assign({},s.start),end:Object.assign({},s.end)},l=[e[n+1],e[n+2],["enter",i,t],e[n+3],e[n+4],["enter",o,t],["exit",o,t],["enter",s,t],["enter",a,t],["exit",a,t],["exit",s,t],e[e.length-2],e[e.length-1],["exit",i,t]];return e.splice(n,e.length-n+1,...l),e}function $g(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),o=0,s;return a;function a(f){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(f),e.exit("gfmFootnoteCallLabelMarker"),l}function l(f){return f!==94?n(f):(e.enter("gfmFootnoteCallMarker"),e.consume(f),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",u)}function u(f){let m;return f===null||f===91||o++>999?n(f):f===93?s?(e.exit("chunkString"),m=e.exit("gfmFootnoteCallString"),i.includes(Pe(r.sliceSerialize(m)))?c(f):n(f)):n(f):(e.consume(f),X(f)||(s=!0),f===92?p:u)}function p(f){return f===91||f===92||f===93?(e.consume(f),o++,u):u(f)}function c(f){return e.enter("gfmFootnoteCallLabelMarker"),e.consume(f),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t}}function Ng(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),o,s=0,a;return l;function l(h){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionLabelMarker"),u}function u(h){return h===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),p):n(h)}function p(h){let g;return h===null||h===91||s>999?n(h):h===93?a?(g=e.exit("gfmFootnoteDefinitionLabelString"),o=Pe(r.sliceSerialize(g)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),m):n(h):R(h)?(e.enter("lineEnding"),e.consume(h),e.exit("lineEnding"),s++,p):(e.enter("chunkString").contentType="string",c(h))}function c(h){return h===null||R(h)||h===91||h===93||s>999?(e.exit("chunkString"),p(h)):(X(h)||(a=!0),s++,e.consume(h),h===92?f:c)}function f(h){return h===91||h===92||h===93?(e.consume(h),s++,c):c(h)}function m(h){return h===58?(e.enter("definitionMarker"),e.consume(h),e.exit("definitionMarker"),H(e,d,"gfmFootnoteDefinitionWhitespace")):n(h)}function d(h){return i.includes(o)||i.push(o),t(h)}}function zg(e,t,n){return e.check(wt,t,e.attempt(Rg,t,n))}function Hg(e){e.exit("gfmFootnoteDefinition")}function Yg(e,t,n){let r=this;return H(e,i,"gfmFootnoteDefinitionIndent",4+1);function i(o){let s=r.events[r.events.length-1];return s&&s[1].type==="gfmFootnoteDefinitionIndent"&&s[2].sliceSerialize(s[1],!0).length===4?t(o):n(o)}}function ta(e={}){let t=e.singleTilde,n={tokenize:i,resolveAll:r};return t==null&&(t=!0),{text:{[126]:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function r(o,s){let a=-1;for(;++a1?a(m):(o.consume(m),p++,f);if(p<2&&!t)return a(m);let h=o.exit("strikethroughSequenceTemporary"),g=Pn(m);return h._open=!g||g===2&&Boolean(d),h._close=!d||d===2&&Boolean(g),s(m)}}}var na={flow:{null:{tokenize:qg,resolve:jg}}},Mp={tokenize:Kg,partial:!0};function jg(e,t){let n=-1,r,i,o,s,a,l,u;for(;++n=4?J(w):(r._gfmTableDynamicInterruptHack=!0,S.check(r.parser.constructs.flow,function(Ve){return r._gfmTableDynamicInterruptHack=!1,J(Ve)},function(Ve){return r._gfmTableDynamicInterruptHack=!1,ne(Ve)})(w))}}}function Kg(e,t,n){let r=0;return i;function i(s){return e.enter("check"),e.consume(s),o}function o(s){return s===-1||s===32?(e.consume(s),r++,r===4?t:o):s===null||X(s)?t(s):n(s)}}var Vg={tokenize:Wg},ra={text:{[91]:Vg}};function Wg(e,t,n){let r=this;return i;function i(a){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(a):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(a),e.exit("taskListCheckMarker"),o)}function o(a){return X(a)?(e.enter("taskListCheckValueUnchecked"),e.consume(a),e.exit("taskListCheckValueUnchecked"),s):a===88||a===120?(e.enter("taskListCheckValueChecked"),e.consume(a),e.exit("taskListCheckValueChecked"),s):n(a)}function s(a){return a===93?(e.enter("taskListCheckMarker"),e.consume(a),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),e.check({tokenize:Ug},t,n)):n(a)}}function Ug(e,t,n){let r=this;return H(e,i,"whitespace");function i(o){let s=r.events[r.events.length-1];return(s&&s[1].type==="whitespace"||R(o))&&o!==null?t(o):n(o)}}function Rp(e){return Wi([Qs,ea(),ta(e),na,ra])}function ia(e,t){let n=String(e);if(typeof t!="string")throw new TypeError("Expected character");let r=0,i=n.indexOf(t);for(;i!==-1;)r++,i=n.indexOf(t,i+t.length);return r}function oa(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}var Gg={}.hasOwnProperty,sa=function(e,t,n,r){let i,o;typeof t=="string"||t instanceof RegExp?(o=[[t,n]],i=r):(o=t,i=n),i||(i={});let s=dr(i.ignore||[]),a=Qg(o),l=-1;for(;++l0?{type:"text",value:_}:void 0),_!==!1&&(g!==C&&O.push({type:"text",value:c.value.slice(g,C)}),Array.isArray(_)?O.push(..._):_&&O.push(_),g=C+I[0].length,T=!0),!d.global)break;I=d.exec(c.value)}return T?(ge}var aa="phrasing",la=["autolink","link","image","label"],$p={transforms:[ny],enter:{literalAutolink:Zg,literalAutolinkEmail:ua,literalAutolinkHttp:ua,literalAutolinkWww:ua},exit:{literalAutolink:ty,literalAutolinkEmail:ey,literalAutolinkHttp:Xg,literalAutolinkWww:Jg}},Np={unsafe:[{character:"@",before:"[+\\-.\\w]",after:"[\\-.\\w]",inConstruct:aa,notInConstruct:la},{character:".",before:"[Ww]",after:"[\\-.\\w]",inConstruct:aa,notInConstruct:la},{character:":",before:"[ps]",after:"\\/",inConstruct:aa,notInConstruct:la}]};function Zg(e){this.enter({type:"link",title:null,url:"",children:[]},e)}function ua(e){this.config.enter.autolinkProtocol.call(this,e)}function Xg(e){this.config.exit.autolinkProtocol.call(this,e)}function Jg(e){this.config.exit.data.call(this,e);let t=this.stack[this.stack.length-1];t.url="http://"+this.sliceSerialize(e)}function ey(e){this.config.exit.autolinkEmail.call(this,e)}function ty(e){this.exit(e)}function ny(e){sa(e,[[/(https?:\/\/|www(?=\.))([-.\w]+)([^ \t\r\n]*)/gi,ry],[/([-.\w+]+)@([-\w]+(?:\.[-\w]+)+)/g,iy]],{ignore:["link","linkReference"]})}function ry(e,t,n,r,i){let o="";if(!zp(i)||(/^w/i.test(t)&&(n=t+n,t="",o="http://"),!oy(n)))return!1;let s=sy(n+r);if(!s[0])return!1;let a={type:"link",title:null,url:o+t+s[0],children:[{type:"text",value:t+s[0]}]};return s[1]?[a,{type:"text",value:s[1]}]:a}function iy(e,t,n,r){return!zp(r,!0)||/[_-\d]$/.test(n)?!1:{type:"link",title:null,url:"mailto:"+t+"@"+n,children:[{type:"text",value:t+"@"+n}]}}function oy(e){let t=e.split(".");return!(t.length<2||t[t.length-1]&&(/_/.test(t[t.length-1])||!/[a-zA-Z\d]/.test(t[t.length-1]))||t[t.length-2]&&(/_/.test(t[t.length-2])||!/[a-zA-Z\d]/.test(t[t.length-2])))}function sy(e){let t=/[!"&'),.:;<>?\]}]+$/.exec(e),n,r,i,o;if(t)for(e=e.slice(0,t.index),o=t[0],n=o.indexOf(")"),r=ia(e,"("),i=ia(e,")");n!==-1&&r>i;)e+=o.slice(0,n+1),o=o.slice(n+1),n=o.indexOf(")"),i++;return[e,o]}function zp(e,t){let n=e.input.charCodeAt(e.index-1);return(e.index===0||sn(n)||an(n))&&(!t||n!==47)}function Hp(){return{enter:{gfmFootnoteDefinition:e,gfmFootnoteDefinitionLabelString:t,gfmFootnoteCall:i,gfmFootnoteCallString:o},exit:{gfmFootnoteDefinition:r,gfmFootnoteDefinitionLabelString:n,gfmFootnoteCall:a,gfmFootnoteCallString:s}};function e(l){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},l)}function t(){this.buffer()}function n(l){let u=this.resume(),p=this.stack[this.stack.length-1];p.label=u,p.identifier=Pe(this.sliceSerialize(l)).toLowerCase()}function r(l){this.exit(l)}function i(l){this.enter({type:"footnoteReference",identifier:"",label:""},l)}function o(){this.buffer()}function s(l){let u=this.resume(),p=this.stack[this.stack.length-1];p.label=u,p.identifier=Pe(this.sliceSerialize(l)).toLowerCase()}function a(l){this.exit(l)}}function Yp(){return e.peek=t,{unsafe:[{character:"[",inConstruct:["phrasing","label","reference"]}],handlers:{footnoteDefinition:n,footnoteReference:e}};function e(r,i,o,s){let a=Q(s),l=a.move("[^"),u=o.enter("footnoteReference"),p=o.enter("reference");return l+=a.move(te(o,At(r),{...a.current(),before:l,after:"]"})),p(),u(),l+=a.move("]"),l}function t(){return"["}function n(r,i,o,s){let a=Q(s),l=a.move("[^"),u=o.enter("footnoteDefinition"),p=o.enter("label");return l+=a.move(te(o,At(r),{...a.current(),before:l,after:"]"})),p(),l+=a.move("]:"+(r.children&&r.children.length>0?" ":"")),a.shift(4),l+=a.move(Ht(xt(r,o,a.current()),c)),u(),l;function c(f,m,d){return m?(d?"":" ")+f:f}}}var jp={canContainEols:["delete"],enter:{strikethrough:ay},exit:{strikethrough:ly}},qp={unsafe:[{character:"~",inConstruct:"phrasing"}],handlers:{delete:Kp}};Kp.peek=uy;function ay(e){this.enter({type:"delete",children:[]},e)}function ly(e){this.exit(e)}function Kp(e,t,n,r){let i=Q(r),o=n.enter("emphasis"),s=i.move("~~");return s+=Ae(e,n,{...i.current(),before:s,after:"~"}),s+=i.move("~~"),o(),s}function uy(){return"~"}function Wp(e,t={}){let n=(t.align||[]).concat(),r=t.stringLength||cy,i=[],o=[],s=[],a=[],l=0,u=-1;for(;++ul&&(l=e[u].length);++ga[g])&&(a[g]=T)}d.push(y)}o[u]=d,s[u]=h}let p=-1;if(typeof n=="object"&&"length"in n)for(;++pa[p]&&(a[p]=y),f[p]=y),c[p]=T}o.splice(1,0,c),s.splice(1,0,f),u=-1;let m=[];for(;++un==="none"?null:n),children:[]},e),this.setData("inTable",!0)}function my(e){this.exit(e),this.setData("inTable")}function dy(e){this.enter({type:"tableRow",children:[]},e)}function pa(e){this.exit(e)}function Up(e){this.enter({type:"tableCell",children:[]},e)}function hy(e){let t=this.resume();this.getData("inTable")&&(t=t.replace(/\\([\\|])/g,gy));let n=this.stack[this.stack.length-1];n.value=t,this.exit(e)}function gy(e,t){return t==="|"?t:e}function fa(e){let t=e||{},n=t.tableCellPadding,r=t.tablePipeAlign,i=t.stringLength,o=n?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` -`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{table:s,tableRow:a,tableCell:l,inlineCode:f}};function s(m,d,h,g){return u(p(m,h,g),m.align)}function a(m,d,h,g){let y=c(m,h,g),T=u([y]);return T.slice(0,T.indexOf(` -`))}function l(m,d,h,g){let y=h.enter("tableCell"),T=h.enter("phrasing"),O=Ae(m,h,{...g,before:o,after:o});return T(),y(),O}function u(m,d){return Wp(m,{align:d,alignDelimiters:r,padding:n,stringLength:i})}function p(m,d,h){let g=m.children,y=-1,T=[],O=d.enter("table");for(;++y{r.push(i.position)}),r.sort((i,o)=>o.start.offset-i.start.offset),r}function nc(e){let t=qe("footnoteDefinition",e),n=[],r=new Set,i=new Map,o=function(s,a){let l=s.match(/\[\^.*?\]/)[0],u;do u=e.lastIndexOf(l,a),a=u;while(r.has(u)&&u!==-1);if(u===-1)throw new Error(`Footnote '${s}' has no corresponding footnote reference before the footnote contents and cannot be processed. Please make sure that all footnotes have a corresponding reference before the content of the footnote.`);return r.add(u),u};for(let s of t){let a=e.substring(s.start.offset,s.end.offset);n.push(a),s.end.offset{let r=this.data("settings");return Ta(t,Object.assign({},r,e,{extensions:this.data("toMarkdownExtensions")||[]}))}})}var uc=Oa;var pc=Xs().use(Np).use(uc).freeze();var c1={tokenize:h1,partial:!0},mc={tokenize:g1,partial:!0},fc={tokenize:y1,partial:!0},ur={tokenize:w1,partial:!0},dc={tokenize:b1,partial:!0},hc={tokenize:f1,previous:bc},gc={tokenize:d1,previous:Ea},Mt={tokenize:m1,previous:wc},Ot={},Aa={text:Ot},wn=48;for(;wn<123;)Ot[wn]=Mt,wn++,wn===58?wn=65:wn===91&&(wn=97);Ot[43]=Mt;Ot[45]=Mt;Ot[46]=Mt;Ot[95]=Mt;Ot[72]=[Mt,gc];Ot[104]=[Mt,gc];Ot[87]=[Mt,hc];Ot[119]=[Mt,hc];function m1(e,n,t){let r=this,i,o;return s;function s(f){return!cc(f)||!wc(r.previous)||La(r.events)?t(f):(e.enter("literalAutolink"),e.enter("literalAutolinkEmail"),a(f))}function a(f){return cc(f)?(e.consume(f),a):f===64?(e.consume(f),l):t(f)}function l(f){return f===46?e.check(ur,m,u)(f):f===45||f===95?e.check(ur,t,p)(f):_e(f)?(!o&&mn(f)&&(o=!0),e.consume(f),l):m(f)}function u(f){return e.consume(f),i=!0,o=void 0,l}function p(f){return e.consume(f),c}function c(f){return f===46?e.check(ur,t,u)(f):l(f)}function m(f){return i&&!o?(e.exit("literalAutolinkEmail"),e.exit("literalAutolink"),n(f)):t(f)}}function f1(e,n,t){let r=this;return i;function i(s){return s!==87&&s!==119||!bc(r.previous)||La(r.events)?t(s):(e.enter("literalAutolink"),e.enter("literalAutolinkWww"),e.check(c1,e.attempt(mc,e.attempt(fc,o),t),t)(s))}function o(s){return e.exit("literalAutolinkWww"),e.exit("literalAutolink"),n(s)}}function d1(e,n,t){let r=this;return i;function i(d){return d!==72&&d!==104||!Ea(r.previous)||La(r.events)?t(d):(e.enter("literalAutolink"),e.enter("literalAutolinkHttp"),e.consume(d),o)}function o(d){return d===84||d===116?(e.consume(d),s):t(d)}function s(d){return d===84||d===116?(e.consume(d),a):t(d)}function a(d){return d===80||d===112?(e.consume(d),l):t(d)}function l(d){return d===83||d===115?(e.consume(d),u):u(d)}function u(d){return d===58?(e.consume(d),p):t(d)}function p(d){return d===47?(e.consume(d),c):t(d)}function c(d){return d===47?(e.consume(d),m):t(d)}function m(d){return d===null||Ut(d)||fn(d)||dn(d)?t(d):e.attempt(mc,e.attempt(fc,f),t)(d)}function f(d){return e.exit("literalAutolinkHttp"),e.exit("literalAutolink"),n(d)}}function h1(e,n,t){return r;function r(l){return e.consume(l),i}function i(l){return l===87||l===119?(e.consume(l),o):t(l)}function o(l){return l===87||l===119?(e.consume(l),s):t(l)}function s(l){return l===46?(e.consume(l),a):t(l)}function a(l){return l===null||R(l)?t(l):n(l)}}function g1(e,n,t){let r,i;return o;function o(l){return l===38?e.check(dc,a,s)(l):l===46||l===95?e.check(ur,a,s)(l):l===null||Ut(l)||fn(l)||l!==45&&dn(l)?a(l):(e.consume(l),o)}function s(l){return l===46?(i=r,r=void 0,e.consume(l),o):(l===95&&(r=!0),e.consume(l),o)}function a(l){return!i&&!r?n(l):t(l)}}function y1(e,n){let t=0;return r;function r(s){return s===38?e.check(dc,n,i)(s):(s===40&&t++,s===41?e.check(ur,o,i)(s):Ca(s)?n(s):yc(s)?e.check(ur,n,i)(s):(e.consume(s),r))}function i(s){return e.consume(s),r}function o(s){return t--,t<0?n(s):i(s)}}function b1(e,n,t){return r;function r(s){return e.consume(s),i}function i(s){return He(s)?(e.consume(s),i):s===59?(e.consume(s),o):t(s)}function o(s){return Ca(s)?n(s):t(s)}}function w1(e,n,t){return r;function r(o){return e.consume(o),i}function i(o){return yc(o)?(e.consume(o),i):Ca(o)?n(o):t(o)}}function yc(e){return e===33||e===34||e===39||e===41||e===42||e===44||e===46||e===58||e===59||e===60||e===63||e===95||e===126}function Ca(e){return e===null||e===60||Q(e)}function cc(e){return e===43||e===45||e===46||e===95||_e(e)}function bc(e){return e===null||e===40||e===42||e===95||e===126||Q(e)}function Ea(e){return e===null||!He(e)}function wc(e){return e!==47&&Ea(e)}function La(e){let n=e.length,t=!1;for(;n--;){let r=e[n][1];if((r.type==="labelLink"||r.type==="labelImage")&&!r._balanced){t=!0;break}if(r._gfmAutolinkLiteralWalkedInto){t=!1;break}}return e.length>0&&!t&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),t}var x1={tokenize:C1,partial:!0};function _a(){return{document:{[91]:{tokenize:T1,continuation:{tokenize:O1},exit:A1}},text:{[91]:{tokenize:S1},[93]:{add:"after",tokenize:k1,resolveTo:v1}}}}function k1(e,n,t){let r=this,i=r.events.length,o=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),s;for(;i--;){let l=r.events[i][1];if(l.type==="labelImage"){s=l;break}if(l.type==="gfmFootnoteCall"||l.type==="labelLink"||l.type==="label"||l.type==="image"||l.type==="link")break}return a;function a(l){if(!s||!s._balanced)return t(l);let u=Ye(r.sliceSerialize({start:s.end,end:r.now()}));return u.charCodeAt(0)!==94||!o.includes(u.slice(1))?t(l):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(l),e.exit("gfmFootnoteCallLabelMarker"),n(l))}}function v1(e,n){let t=e.length,r;for(;t--;)if(e[t][1].type==="labelImage"&&e[t][0]==="enter"){r=e[t][1];break}e[t+1][1].type="data",e[t+3][1].type="gfmFootnoteCallLabelMarker";let i={type:"gfmFootnoteCall",start:Object.assign({},e[t+3][1].start),end:Object.assign({},e[e.length-1][1].end)},o={type:"gfmFootnoteCallMarker",start:Object.assign({},e[t+3][1].end),end:Object.assign({},e[t+3][1].end)};o.end.column++,o.end.offset++,o.end._bufferIndex++;let s={type:"gfmFootnoteCallString",start:Object.assign({},o.end),end:Object.assign({},e[e.length-1][1].start)},a={type:"chunkString",contentType:"string",start:Object.assign({},s.start),end:Object.assign({},s.end)},l=[e[t+1],e[t+2],["enter",i,n],e[t+3],e[t+4],["enter",o,n],["exit",o,n],["enter",s,n],["enter",a,n],["exit",a,n],["exit",s,n],e[e.length-2],e[e.length-1],["exit",i,n]];return e.splice(t,e.length-t+1,...l),e}function S1(e,n,t){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),o=0,s;return a;function a(m){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(m),e.exit("gfmFootnoteCallLabelMarker"),l}function l(m){return m!==94?t(m):(e.enter("gfmFootnoteCallMarker"),e.consume(m),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",u)}function u(m){let f;return m===null||m===91||o++>999?t(m):m===93?s?(e.exit("chunkString"),f=e.exit("gfmFootnoteCallString"),i.includes(Ye(r.sliceSerialize(f)))?c(m):t(m)):t(m):(e.consume(m),Q(m)||(s=!0),m===92?p:u)}function p(m){return m===91||m===92||m===93?(e.consume(m),o++,u):u(m)}function c(m){return e.enter("gfmFootnoteCallLabelMarker"),e.consume(m),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),n}}function T1(e,n,t){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),o,s=0,a;return l;function l(h){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionLabelMarker"),u}function u(h){return h===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),p):t(h)}function p(h){let y;return h===null||h===91||s>999?t(h):h===93?a?(y=e.exit("gfmFootnoteDefinitionLabelString"),o=Ye(r.sliceSerialize(y)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),f):t(h):R(h)?(e.enter("lineEnding"),e.consume(h),e.exit("lineEnding"),s++,p):(e.enter("chunkString").contentType="string",c(h))}function c(h){return h===null||R(h)||h===91||h===93||s>999?(e.exit("chunkString"),p(h)):(Q(h)||(a=!0),s++,e.consume(h),h===92?m:c)}function m(h){return h===91||h===92||h===93?(e.consume(h),s++,c):c(h)}function f(h){return h===58?(e.enter("definitionMarker"),e.consume(h),e.exit("definitionMarker"),H(e,d,"gfmFootnoteDefinitionWhitespace")):t(h)}function d(h){return i.includes(o)||i.push(o),n(h)}}function O1(e,n,t){return e.check(St,n,e.attempt(x1,n,t))}function A1(e){e.exit("gfmFootnoteDefinition")}function C1(e,n,t){let r=this;return H(e,i,"gfmFootnoteDefinitionIndent",4+1);function i(o){let s=r.events[r.events.length-1];return s&&s[1].type==="gfmFootnoteDefinitionIndent"&&s[2].sliceSerialize(s[1],!0).length===4?n(o):t(o)}}function Ba(e={}){let n=e.singleTilde,t={tokenize:i,resolveAll:r};return n==null&&(n=!0),{text:{[126]:t},insideSpan:{null:[t]},attentionMarkers:{null:[126]}};function r(o,s){let a=-1;for(;++a1?a(f):(o.consume(f),p++,m);if(p<2&&!n)return a(f);let h=o.exit("strikethroughSequenceTemporary"),y=or(f);return h._open=!y||y===2&&Boolean(d),h._close=!d||d===2&&Boolean(y),s(f)}}}var Ma={flow:{null:{tokenize:L1,resolve:E1}}},xc={tokenize:_1,partial:!0};function E1(e,n){let t=-1,r,i,o,s,a,l,u;for(;++t=4?X(x):(r._gfmTableDynamicInterruptHack=!0,C.check(r.parser.constructs.flow,function(Ge){return r._gfmTableDynamicInterruptHack=!1,X(Ge)},function(Ge){return r._gfmTableDynamicInterruptHack=!1,te(Ge)})(x))}}}function _1(e,n,t){let r=0;return i;function i(s){return e.enter("check"),e.consume(s),o}function o(s){return s===-1||s===32?(e.consume(s),r++,r===4?n:o):s===null||Q(s)?n(s):t(s)}}var B1={tokenize:M1},Ia={text:{[91]:B1}};function M1(e,n,t){let r=this;return i;function i(a){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?t(a):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(a),e.exit("taskListCheckMarker"),o)}function o(a){return Q(a)?(e.enter("taskListCheckValueUnchecked"),e.consume(a),e.exit("taskListCheckValueUnchecked"),s):a===88||a===120?(e.enter("taskListCheckValueChecked"),e.consume(a),e.exit("taskListCheckValueChecked"),s):t(a)}function s(a){return a===93?(e.enter("taskListCheckMarker"),e.consume(a),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),e.check({tokenize:I1},n,t)):t(a)}}function I1(e,n,t){let r=this;return H(e,i,"whitespace");function i(o){let s=r.events[r.events.length-1];return(s&&s[1].type==="whitespace"||R(o))&&o!==null?n(o):t(o)}}function kc(e){return Ao([Aa,_a(),Ba(e),Ma,Ia])}function Fa(e,n){let t=String(e);if(typeof n!="string")throw new TypeError("Expected character");let r=0,i=t.indexOf(n);for(;i!==-1;)r++,i=t.indexOf(n,i+n.length);return r}function Ra(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}var F1={}.hasOwnProperty,Da=function(e,n,t,r){let i,o;typeof n=="string"||n instanceof RegExp?(o=[[n,t]],i=r):(o=n,i=t),i||(i={});let s=Fr(i.ignore||[]),a=R1(o),l=-1;for(;++l0?{type:"text",value:B}:void 0),B!==!1&&(y!==L&&O.push({type:"text",value:c.value.slice(y,L)}),Array.isArray(B)?O.push(...B):B&&O.push(B),y=L+M[0].length,A=!0),!d.global)break;M=d.exec(c.value)}return A?(ye}var Pa="phrasing",$a=["autolink","link","image","label"],Tc={transforms:[H1],enter:{literalAutolink:D1,literalAutolinkEmail:Na,literalAutolinkHttp:Na,literalAutolinkWww:Na},exit:{literalAutolink:z1,literalAutolinkEmail:N1,literalAutolinkHttp:P1,literalAutolinkWww:$1}},Oc={unsafe:[{character:"@",before:"[+\\-.\\w]",after:"[\\-.\\w]",inConstruct:Pa,notInConstruct:$a},{character:".",before:"[Ww]",after:"[\\-.\\w]",inConstruct:Pa,notInConstruct:$a},{character:":",before:"[ps]",after:"\\/",inConstruct:Pa,notInConstruct:$a}]};function D1(e){this.enter({type:"link",title:null,url:"",children:[]},e)}function Na(e){this.config.enter.autolinkProtocol.call(this,e)}function P1(e){this.config.exit.autolinkProtocol.call(this,e)}function $1(e){this.config.exit.data.call(this,e);let n=this.stack[this.stack.length-1];n.url="http://"+this.sliceSerialize(e)}function N1(e){this.config.exit.autolinkEmail.call(this,e)}function z1(e){this.exit(e)}function H1(e){Da(e,[[/(https?:\/\/|www(?=\.))([-.\w]+)([^ \t\r\n]*)/gi,Y1],[/([-.\w+]+)@([-\w]+(?:\.[-\w]+)+)/g,q1]],{ignore:["link","linkReference"]})}function Y1(e,n,t,r,i){let o="";if(!Ac(i)||(/^w/i.test(n)&&(t=n+t,n="",o="http://"),!j1(t)))return!1;let s=V1(t+r);if(!s[0])return!1;let a={type:"link",title:null,url:o+n+s[0],children:[{type:"text",value:n+s[0]}]};return s[1]?[a,{type:"text",value:s[1]}]:a}function q1(e,n,t,r){return!Ac(r,!0)||/[_-\d]$/.test(t)?!1:{type:"link",title:null,url:"mailto:"+n+"@"+t,children:[{type:"text",value:n+"@"+t}]}}function j1(e){let n=e.split(".");return!(n.length<2||n[n.length-1]&&(/_/.test(n[n.length-1])||!/[a-zA-Z\d]/.test(n[n.length-1]))||n[n.length-2]&&(/_/.test(n[n.length-2])||!/[a-zA-Z\d]/.test(n[n.length-2])))}function V1(e){let n=/[!"&'),.:;<>?\]}]+$/.exec(e),t,r,i,o;if(n)for(e=e.slice(0,n.index),o=n[0],t=o.indexOf(")"),r=Fa(e,"("),i=Fa(e,")");t!==-1&&r>i;)e+=o.slice(0,t+1),o=o.slice(t+1),t=o.indexOf(")"),i++;return[e,o]}function Ac(e,n){let t=e.input.charCodeAt(e.index-1);return(e.index===0||fn(t)||dn(t))&&(!n||t!==47)}function Cc(){return{enter:{gfmFootnoteDefinition:e,gfmFootnoteDefinitionLabelString:n,gfmFootnoteCall:i,gfmFootnoteCallString:o},exit:{gfmFootnoteDefinition:r,gfmFootnoteDefinitionLabelString:t,gfmFootnoteCall:a,gfmFootnoteCallString:s}};function e(l){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},l)}function n(){this.buffer()}function t(l){let u=this.resume(),p=this.stack[this.stack.length-1];p.label=u,p.identifier=Ye(this.sliceSerialize(l)).toLowerCase()}function r(l){this.exit(l)}function i(l){this.enter({type:"footnoteReference",identifier:"",label:""},l)}function o(){this.buffer()}function s(l){let u=this.resume(),p=this.stack[this.stack.length-1];p.label=u,p.identifier=Ye(this.sliceSerialize(l)).toLowerCase()}function a(l){this.exit(l)}}function Ec(){return e.peek=n,{unsafe:[{character:"[",inConstruct:["phrasing","label","reference"]}],handlers:{footnoteDefinition:t,footnoteReference:e}};function e(r,i,o,s){let a=Z(s),l=a.move("[^"),u=o.enter("footnoteReference"),p=o.enter("reference");return l+=a.move(ee(o,Bt(r),{...a.current(),before:l,after:"]"})),p(),u(),l+=a.move("]"),l}function n(){return"["}function t(r,i,o,s){let a=Z(s),l=a.move("[^"),u=o.enter("footnoteDefinition"),p=o.enter("label");return l+=a.move(ee(o,Bt(r),{...a.current(),before:l,after:"]"})),p(),l+=a.move("]:"+(r.children&&r.children.length>0?" ":"")),a.shift(4),l+=a.move(Qt(Tt(r,o,a.current()),c)),u(),l;function c(m,f,d){return f?(d?"":" ")+m:m}}}var Lc={canContainEols:["delete"],enter:{strikethrough:W1},exit:{strikethrough:K1}},_c={unsafe:[{character:"~",inConstruct:"phrasing"}],handlers:{delete:Bc}};Bc.peek=U1;function W1(e){this.enter({type:"delete",children:[]},e)}function K1(e){this.exit(e)}function Bc(e,n,t,r){let i=Z(r),o=t.enter("emphasis"),s=i.move("~~");return s+=Be(e,t,{...i.current(),before:s,after:"~"}),s+=i.move("~~"),o(),s}function U1(){return"~"}function Ic(e,n={}){let t=(n.align||[]).concat(),r=n.stringLength||Z1,i=[],o=[],s=[],a=[],l=0,u=-1;for(;++ul&&(l=e[u].length);++ya[y])&&(a[y]=A)}d.push(b)}o[u]=d,s[u]=h}let p=-1;if(typeof t=="object"&&"length"in t)for(;++pa[p]&&(a[p]=b),m[p]=b),c[p]=A}o.splice(1,0,c),s.splice(1,0,m),u=-1;let f=[];for(;++ut==="none"?null:t),children:[]},e),this.setData("inTable",!0)}function X1(e){this.exit(e),this.setData("inTable")}function J1(e){this.enter({type:"tableRow",children:[]},e)}function za(e){this.exit(e)}function Fc(e){this.enter({type:"tableCell",children:[]},e)}function e0(e){let n=this.resume();this.getData("inTable")&&(n=n.replace(/\\([\\|])/g,t0));let t=this.stack[this.stack.length-1];t.value=n,this.exit(e)}function t0(e,n){return n==="|"?n:e}function Ya(e){let n=e||{},t=n.tableCellPadding,r=n.tablePipeAlign,i=n.stringLength,o=t?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` +`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{table:s,tableRow:a,tableCell:l,inlineCode:m}};function s(f,d,h,y){return u(p(f,h,y),f.align)}function a(f,d,h,y){let b=c(f,h,y),A=u([b]);return A.slice(0,A.indexOf(` +`))}function l(f,d,h,y){let b=h.enter("tableCell"),A=h.enter("phrasing"),O=Be(f,h,{...y,before:o,after:o});return A(),b(),O}function u(f,d){return Ic(f,{align:d,alignDelimiters:r,padding:t,stringLength:i})}function p(f,d,h){let y=f.children,b=-1,A=[],O=d.enter("table");for(;++b{r.push(i.position)}),r.sort((i,o)=>o.start.offset-i.start.offset),r}function Yc(e){let n=be("footnoteDefinition",e),t=[],r=new Set,i=new Map,o=function(s,a){let l=s.match(/\[\^.*?\]/)[0],u;do u=e.lastIndexOf(l,a),a=u;while(r.has(u)&&u!==-1);if(u===-1)throw new Error(`Footnote '${s}' has no corresponding footnote reference before the footnote contents and cannot be processed. Please make sure that all footnotes have a corresponding reference before the content of the footnote.`);return r.add(u),u};for(let s of n){let a=e.substring(s.start.offset,s.end.offset);t.push(a),s.end.offseti.get(s)-i.get(a)),n.length>0&&(e=e.trimEnd()+` -`);for(let s of n)e+=` -`+s;return e}function ho(e,t,n){let r=qe(n,e);if(r.length===0)return e;let i="";if(t==="underscore")i="_";else if(t==="asterisk")i="*";else{let o=r[r.length-1];i=e.substring(o.start.offset,o.start.offset+1)}n==="strong"&&(i+=i);for(let o of r){let s=i+e.substring(o.start.offset+i.length,o.end.offset-i.length)+i;e=Re(e,o.start.offset,o.end.offset,s)}return e}function rc(e){let t=qe("paragraph",e);if(t.length===0)return e;for(let n of t){let r=e.substring(n.start.offset,n.end.offset).split(` -`),i=r.length-1;if(!(i<1)){for(let o=0;o")||s.endsWith("
")||(r[o]=s+" ")}e=Re(e,n.start.offset,n.end.offset,r.join(` -`))}}return e}function ic(e){let t=e.endsWith(` -`),n=qe("paragraph",e);if(n.length===0)return e;for(let r of n){let i=r.start.offset;for(i>0&&i--;i>=0&&e.charAt(i)!=` +`&&(e=e.substring(0,s.end.offset)+e.substring(s.end.offset+1)),e=e.substring(0,s.start.offset)+e.substring(s.end.offset),i.set(a,o(a,s.start.offset))}t=t.sort((s,a)=>i.get(s)-i.get(a)),t.length>0&&(e=e.trimEnd()+` +`);for(let s of t)e+=` +`+s;return e}function Vo(e,n,t){let r=be(t,e);if(r.length===0)return e;let i="";if(n==="underscore")i="_";else if(n==="asterisk")i="*";else{let o=r[r.length-1];i=e.substring(o.start.offset,o.start.offset+1)}t==="strong"&&(i+=i);for(let o of r){let s=i+e.substring(o.start.offset+i.length,o.end.offset-i.length)+i;e=Ee(e,o.start.offset,o.end.offset,s)}return e}function qc(e){let n=be("paragraph",e);if(n.length===0)return e;for(let t of n){let r=e.substring(t.start.offset,t.end.offset).split(` +`),i=r.length-1;if(!(i<1)){for(let o=0;o")||s.endsWith("
")||(r[o]=s+" ")}e=Ee(e,t.start.offset,t.end.offset,r.join(` +`))}}return e}function jc(e){let n=e.endsWith(` +`),t=be("paragraph",e);if(t.length===0)return e;for(let r of t){let i=r.start.offset;for(i>0&&i--;i>=0&&e.charAt(i)!=` `;)i--;i++;let o=e.substring(i,r.end.offset).split(` -`),s=o[0].trimStart();if(s.startsWith("> ")||s.startsWith("> ")||s.startsWith("- ")||s.startsWith("- ")||s.match(/^[0-9]+\.( |\t)+/))continue;let a=o.length,l=[],u=!1;for(let d=0;d ")||s.startsWith("> ")||s.startsWith("- ")||s.startsWith("- ")||s.match(/^[0-9]+\.( |\t)+/))continue;let a=o.length,l=[],u=!1;for(let d=0;d")||h.endsWith("
")||h.endsWith(" ")}for(;i>0&&e.charAt(i-1)==` `;)i--;let p=e.length,c=r.end.offset;for(c?)*(\*|-|\+|- \[( | x)\]|\d+\.) /g,s=i.match(o);if(s){let a=i.split(new RegExp(o.source.replaceAll("(","(?:"))),l="",u=0;for(let p of a)u>0&&(l+=s[u-1]),l+=t(p),u++;i=l}else i=t(i);e=Re(e,r.start.offset+2,r.end.offset,i)}return e}function mo(e,t,n){return n?e==t:t.match(new RegExp("^"+nu(e)+"( |\\t)*$","m"))!=null}function uc(e,t,n){var l;let r=e.substring(t,n),i="",o=!0,s=e.substring(0,t);if(s.length>0){let u=s.split(` -`);i=(l=u[u.length-1])!=null?l:"",o=i.trim()=="",o||(i=i.trimEnd());let p=0;for(;u.length-(2+p)>=0&&mo(i,u[u.length-(2+p)],o);)p++;u.splice(u.length-(1+p),p),u.length>1&&!mo(i,u[u.length-2],o)&&u.splice(u.length-1,0,i),s=u.join(` -`)}let a=e.substring(n);if(a.length>0){let u=a.split(` -`),p=0;for(;p+11&&!mo(i,u[1],o)&&u.splice(1,0,i),a=u.join(` -`)}return s+r+a}function pc(e){let t=qe("code",e);for(let n of t)!e.substring(n.start.offset,n.end.offset).startsWith("```")||(e=uc(e,n.start.offset,n.end.offset));return e}function cc(e){let t=qe("table",e);for(let n of t)e=uc(e,n.start.offset,n.end.offset);return e}function ba(e){let t=qe("link",e);for(let n of t){if(n==null)continue;let r=e.substring(n.start.offset,n.end.offset);if(!r.match(cr))continue;let i=r.indexOf("]"),o=''+r.substring(1,i)+"";e=Re(e,n.start.offset,n.end.offset,o)}return e}function fc(e,t,n){let r=qe("list",e);if(!r)return e;for(let i of r){let o=i.start.offset;for(;o>0&&e.charAt(o-1)!==` -`;)o--;let s=e.substring(o,i.end.offset),a=new Map;s=s.replace(/^(( |\t |>)*)(\d(\.|\)))([^\n]*)$/gm,(l,u="",p,c,f,m)=>{let d=1;return a.has(u)?t==="ascending"&&(d=a.get(u)+1,a.set(u,d)):a.set(u,1),`${u}${d}${n}${m}`}),e=Re(e,o,i.end.offset,s)}return e}var mn=class{constructor(t,n,r,i){this.name=t,this.description=n,this.defaultValue=r,i&&(this.ruleName=i)}setOption(t,n){n.ruleConfigs[this.ruleName][this.name]=t}},Yn=class extends mn{display(n,r,i){let o=new jn.Setting(n).setName(this.name).setDesc(this.description).addToggle(s=>{s.setValue(r.ruleConfigs[this.ruleName][this.name]),s.onChange(a=>{this.setOption(a,r),i.settings=r,i.saveData(i.settings)})});Er(o),o.settingEl.style.border="none"}},Cr=class extends mn{display(n,r,i){let o=new jn.Setting(n).setName(this.name).setDesc(this.description).addText(s=>{s.setValue(r.ruleConfigs[this.ruleName][this.name]),s.onChange(a=>{this.setOption(a,r),i.settings=r,i.saveData(i.settings)})});Er(o),o.settingEl.style.border="none"}},go=class extends mn{display(n,r,i){let o=new jn.Setting(n).setName(this.name).setDesc(this.description).addTextArea(s=>{s.setValue(r.ruleConfigs[this.ruleName][this.name]),s.onChange(a=>{this.setOption(a,r),i.settings=r,i.saveData(i.settings)})});Er(o),o.settingEl.style.border="none"}},yo=class extends mn{display(n,r,i){let o=new jn.Setting(n).setName(this.name).setDesc(this.description).addMomentFormat(s=>{s.setValue(r.ruleConfigs[this.ruleName][this.name]),s.setPlaceholder("dddd, MMMM Do YYYY, h:mm:ss a"),s.onChange(a=>{this.setOption(a,r),i.settings=r,i.saveData(i.settings)})});Er(o),o.settingEl.style.border="none"}},bo=class{constructor(t,n){this.value=t,this.description=n}},wo=class extends mn{constructor(n,r,i,o,s){super(n,r,i,s);this.options=o}display(n,r,i){let o=new jn.Setting(n).setName(this.name).setDesc(this.description).addDropdown(s=>{for(let a of this.options)s.addOption(a.value,a.value);s.setValue(r.ruleConfigs[this.ruleName][this.name]),s.onChange(a=>{this.setOption(a,r),i.settings=r,i.saveData(i.settings)})});Er(o),o.settingEl.style.border="none"}};function Er(e){e.nameEl.innerHTML=ba(e.nameEl.innerHTML),e.descEl.innerHTML=ba(e.descEl.innerHTML)}var Yt=class extends Error{constructor(t,n){var r;super(t),this.cause=n!=null?n:null,this.stack=(r=n.stack)!=null?r:null,Object.setPrototypeOf(this,Yt.prototype)}};var W=(o=>(o.YAML="YAML",o.HEADING="Heading",o.FOOTNOTE="Footnote",o.CONTENT="Content",o.SPACING="Spacing",o))(W||{}),xo=class{constructor(t,n,r,i,o,s=[],a=!1){this.name=t,this.description=n,this.type=r,this.apply=i,this.examples=o,s.unshift(new Yn(this.description,"",!1));for(let l of s)l.ruleName=t;this.options=s,this.hasSpecialExecutionOrder=a}alias(){return this.name.replace(/ /g,"-").toLowerCase()}getDefaultOptions(){let t={};for(let n of this.options)t[n.name]=n.defaultValue;return t}getOptions(t){return t.ruleConfigs[this.name]}getURL(){return"https://github.com/platers/obsidian-linter/blob/master/docs/rules.md"+"#"+this.alias()}enabledOptionName(){return this.options[0].name}},ko=class{constructor(t,n,r,i={}){this.description=t,this.options=i,this.before=n,this.after=r}},mc=Object.values(W);function dc(e){let t=e.match(ve);if(!t)return[];let n=t[1],r=Te(n,"disabled rules");if(r==null)return[];let i=r.includes(` -`)?`disabled rules: -`:"disabled rules: ";i+=r;let s=tt(i)["disabled rules"];return s?(typeof s=="string"&&(s=[s]),s.includes("all")?Et.map(a=>a.alias()):s):[]}var Et=[],Sy=Et.reduce((e,t)=>(e[t.alias()]=t,e),{});function hc(e){Et.push(e),Et.sort((t,n)=>mc.indexOf(t.type)-mc.indexOf(n.type)||t.name.localeCompare(n.name)),Sy[e.alias()]=e}function vo(e,t){let n;throw e instanceof Jl?(n=e.toString(),n=`error in the yaml: ${n.substring(n.indexOf(":")+1)}`):n=`unknown error: ${e.message}`,new Yt(`"${t}" encountered an ${n}`,e)}var Jn=En(gc());function Ay(e){for(var t=[],n=1;nr.example),t.optionBuilders.map(r=>r.option),t.hasSpecialExecutionOrder);Ze(nt,Kn).set(this.name,n),Ze(nt,_r).set(t.name,t)}return Ze(nt,Kn).get(this.name)}static applyIfEnabledBase(t,n,r,i){let o=t.getOptions(r);if(o[t.enabledOptionName()]){let s=Object.assign({},o,i);jt(`Running ${t.name}`);try{return[t.apply(n,s),!0]}catch(a){vo(a,t.name)}}else return[n,!1]}static getBuilderByName(t){return Ze(nt,_r).get(t)}static setNoSettingControl(t,n){Ze(nt,qt).has(t)||Ze(nt,qt).set(t,[]),Ze(nt,qt).get(t).push(n)}static hasSettingControl(t,n){return!Ze(nt,qt).has(t)||!Ze(nt,qt).get(t).includes(n)}},pt=nt;Kn=new WeakMap,_r=new WeakMap,qt=new WeakMap,Ln(pt,Kn,new Map),Ln(pt,_r,new Map),Ln(pt,qt,new Map);var E=class extends pt{static register(t){let n=t.getRule();hc(n)}safeApply(t,n){return this.apply(t,this.buildRuleOptions(n))}buildRuleOptions(t){t=t!=null?t:{};let n=new this.OptionsClass,r=Object.assign(n,t);for(let i of this.optionBuilders)i.setRuleOption(r,t);return r}get hasSpecialExecutionOrder(){return!1}static applyIfEnabled(t,n,r,i){let o=this.getRule();return r.includes(o.alias())?(jt(o.alias()+" is disabled"),[t,!1]):pt.applyIfEnabledBase(o,t,n,i)}static getRuleOptions(t){let n=pt.getRule.bind(this)(),r=new this,i=n.getOptions(t);return r.buildRuleOptions(i)}static noSettingControl(){return(t,n)=>{let r=t.constructor.name;pt.setNoSettingControl(r,n)}}},xa,A=class{constructor(t){Ln(this,xa,void 0);this.example=new ko(t.description,t.before,t.after,t.options)}};xa=new WeakMap;var Vn,Kt=class{constructor(t){Ln(this,Vn,void 0);this.OptionsClass=t.OptionsClass,this.name=t.name,this.description=t.description,this.optionsKey=t.optionsKey}get defaultValue(){return new this.OptionsClass()[this.optionsKey]}get option(){return Ze(this,Vn)||pl(this,Vn,this.buildOption()),Ze(this,Vn)}setRuleOption(t,n){let r=n[this.name];r!==void 0&&(t[this.optionsKey]=r)}};Vn=new WeakMap;var re=class extends Kt{buildOption(){return new Yn(this.name,this.description,this.defaultValue)}},So=class extends Kt{buildOption(){return new Cr(this.name,this.description,this.defaultValue)}},ce=class extends Kt{constructor(n){super(n);this.records=n.records.map(r=>new bo(r.value,r.description))}buildOption(){return new wo(this.name,this.description,this.defaultValue,this.records)}},Ne=class extends Kt{constructor(n){var r,i;super(n);this.separator=(r=n.separator)!=null?r:` -`,this.splitter=(i=n.splitter)!=null?i:/\n/}buildOption(){return new go(this.name,this.description,this.defaultValue.join(this.separator))}setRuleOption(n,r){if(r[this.name]!==void 0){let i=r[this.name].split(this.splitter).filter(function(o){return o!=""});n[this.optionsKey]=i}}},dn=class extends Kt{buildOption(){return new Cr(this.name,this.description,this.defaultValue)}},Ao=class extends Kt{buildOption(){return new yo(this.name,this.description,this.defaultValue)}};var v={code:{replaceAction:"code",placeholder:"{CODE_BLOCK_PLACEHOLDER}"},inlineCode:{replaceAction:"inlineCode",placeholder:"{INLINE_CODE_BLOCK_PLACEHOLDER}"},image:{replaceAction:"image",placeholder:"{IMAGE_PLACEHOLDER}"},thematicBreak:{replaceAction:"thematicBreak",placeholder:"{HORIZONTAL_RULE_PLACEHOLDER}"},italics:{replaceAction:"emphasis",placeholder:"{ITALICS_PLACEHOLDER}"},bold:{replaceAction:"strong",placeholder:"{STRONG_PLACEHOLDER}"},list:{replaceAction:"list",placeholder:"{LIST_PLACEHOLDER}"},blockquote:{replaceAction:"blockquote",placeholder:"{BLOCKQUOTE_PLACEHOLDER}"},table:{replaceAction:"table",placeholder:"{TABLE_PLACEHOLDER}"},math:{replaceAction:"math",placeholder:"{MATH_PLACEHOLDER}"},inlineMath:{replaceAction:"inlineMath",placeholder:"{INLINE_MATH_PLACEHOLDER}"},yaml:{replaceAction:ve,placeholder:Be(`--- ----`)},wikiLink:{replaceAction:ls,placeholder:"{WIKI_LINK_PLACEHOLDER}"},tag:{replaceAction:fr,placeholder:"#tag-placeholder"},obsidianMultiLineComments:{replaceAction:tu,placeholder:"{OBSIDIAN_COMMENT_PLACEHOLDER}"},link:{replaceAction:_y,placeholder:"{REGULAR_LINK_PLACEHOLDER}"}};function z(e,t,n){let r=[];for(let i of e){let o;if(typeof i.replaceAction=="string")o=Ey(t,i.placeholder,i.replaceAction);else if(i.replaceAction instanceof RegExp)o=Ly(t,i.placeholder,i.replaceAction);else if(typeof i.replaceAction=="function"){let s=i.replaceAction;o=s(t,i.placeholder)}t=o.newText,r.push({replacedValues:o.replacedValues,placeholder:i.placeholder})}return t=n(t),r=r.reverse(),r!=null&&r.length>0&&r.forEach(i=>{i.replacedValues.forEach(o=>{t=t.replace(new RegExp(i.placeholder,"i"),Be(o))})}),t}function Ey(e,t,n){let r=qe(n,e),i=[];for(let o of r){let s=e.substring(o.start.offset,o.end.offset);i.push(s),e=Re(e,o.start.offset,o.end.offset,t)}return i.reverse(),{newText:e,replacedValues:i}}function Ly(e,t,n){let r=e.match(n),i=[];if(n.flags.includes("g")){if(e=e.replaceAll(n,t),r)for(let o of r)i.push(o)}else e=e.replace(n,t),r&&i.push(r[0]);return{newText:e,replacedValues:i}}function _y(e,t){let n=qe("link",e),r=[];for(let i of n){if(i==null)continue;let o=e.substring(i.start.offset,i.end.offset);!o.match(cr)||(r.push(o),e=Re(e,i.start.offset,i.end.offset,t))}return r.reverse(),{newText:e,replacedValues:r}}var hn=class{constructor(){this.style="Title Case";this.ignoreWords=["macOS","iOS","iPhone","iPad","JavaScript","TypeScript","AppleScript"];this.lowercaseWords=["via","a","an","the","and","or","but","for","nor","so","yet","at","by","in","of","on","to","up","as","is","if","it","for","to","with","without","into","onto","per"];this.ignoreCasedWords=!0}},Ir=class extends E{get OptionsClass(){return hn}get name(){return"Capitalize Headings"}get description(){return"Headings should be formatted with capitalization"}get type(){return"Heading"}apply(t,n){return z([v.code,v.yaml,v.link,v.wikiLink,v.tag],t,r=>{let i=r.split(` -`);for(let o=0;oa.toUpperCase());break}return i.join(` -`)})}get exampleBuilders(){return[new A({description:"With `Title Case=true`, `Ignore Cased Words=false`",before:b` +`),e}function Vc(e){let n=be("link",e);for(let t of n){if(t==null)continue;let r=e.substring(t.start.offset,t.end.offset);if(!r.match(io))continue;let i=r.indexOf("]"),o=r.substring(0,1)+r.substring(1,i).trim()+r.substring(i);e=Ee(e,t.start.offset,t.end.offset,o)}return e}function Wc(e,n){let t=be("emphasis",e);for(let r of t){let i=e.substring(r.start.offset+1,r.end.offset-1);i=n(i),e=Ee(e,r.start.offset+1,r.end.offset-1,i)}return e}function Kc(e,n){let t=be("strong",e);for(let r of t){let i=e.substring(r.start.offset+2,r.end.offset-2);i=n(i),e=Ee(e,r.start.offset+2,r.end.offset-2,i)}return e}function Uc(e,n){let t=be("listItem",e);for(let r of t){let i=e.substring(r.start.offset+2,r.end.offset),o=/\n(( |\t)*>?)*(\*|-|\+|- \[( | x)\]|\d+\.) /g,s=i.match(o);if(s){let a=i.split(new RegExp(o.source.replaceAll("(","(?:"))),l="",u=0;for(let p of a)u>0&&(l+=s[u-1]),l+=n(p),u++;i=l}else i=n(i);e=Ee(e,r.start.offset+2,r.end.offset,i)}return e}function Gc(e){let n=be("code",e);for(let t of n)!e.substring(t.start.offset,t.end.offset).startsWith("```")||(e=er(e,t.start.offset,t.end.offset));return e}function Zc(e){let n=be("table",e);for(let t of n)e=er(e,t.start.offset,t.end.offset);return e}function Qc(e,n){let t=be("math",e);for(let r of t)e=er(e,r.start.offset,r.end.offset);t=be("inlineMath",e);for(let r of t)!e.substring(r.start.offset,r.end.offset).startsWith("$".repeat(n))||(e=er(e,r.start.offset,r.end.offset));return e}function Xc(e){let n=be("blockquote",e);for(let t of n)e=er(e,t.start.offset,t.end.offset,!0);return e}function Jc(e,n,t){let r=be("list",e);if(!r)return e;for(let i of r){let o=i.start.offset;for(;o>0&&e.charAt(o-1)!==` +`;)o--;let s=e.substring(o,i.end.offset),a=function(p){let c=p.lastIndexOf("> ");return c!==-1&&(p=p.substring(c+2)),p=p.replaceAll(" "," "),Math.floor((p.split(" ").length-1)/2)+1},l=new Map,u=-1;s=s.replace(/^(( |\t|> )*)(\d+(\.|\)))([^\n]*)$/gm,(p,c="",m,f,d,h)=>{let y=1,b=a(c);if(l.has(b)?n==="ascending"&&(y=l.get(b)+1,l.set(b,y)):l.set(b,1),u>b){let A=u;for(;A>b;)l.delete(A--)}return u=b,`${c}${y}${t}${h}`}),e=Ee(e,o,i.end.offset,s)}return e}function em(e,n){let t=be("listItem",e);if(!t)return e;let r=/^((\d+[.)])|(- \[[ x]\]))/m,i=n;if(n=="consistent"){let o=t.length-1;for(;o>=0;){let s=e.substring(t[o].start.offset,t[o].end.offset);if(o--,!s.match(r)){i=s.charAt(0);break}}if(o==-1)return e}for(let o of t){let s=e.substring(o.start.offset,o.end.offset);s.match(r)||(s=i+s.substring(1),e=Ee(e,o.start.offset,o.end.offset,s))}return e}function tm(e,n){let t=be("math",e),r=new RegExp("^(\\${"+n+",})(\\n*)"),i=new RegExp("(\\n*)(\\${"+n+",})([^\\$]*)$");for(let o of t){let s=e.substring(o.start.offset,o.end.offset);s=s.replace(r,`$1 +`),s=s.replace(i,` +$2$3`),e=Ee(e,o.start.offset,o.end.offset,s)}t=be("inlineMath",e);for(let o of t){if(!e.substring(o.start.offset,o.end.offset).startsWith("$".repeat(n)))continue;let s=e.substring(o.start.offset,o.end.offset);s=s.replace(r,`$1 +`),s=s.replace(i,` +$2$3`),e=Ee(e,o.start.offset,o.end.offset,s)}return e}var S={code:{replaceAction:"code",placeholder:"{CODE_BLOCK_PLACEHOLDER}"},inlineCode:{replaceAction:"inlineCode",placeholder:"{INLINE_CODE_BLOCK_PLACEHOLDER}"},image:{replaceAction:"image",placeholder:"{IMAGE_PLACEHOLDER}"},thematicBreak:{replaceAction:"thematicBreak",placeholder:"{HORIZONTAL_RULE_PLACEHOLDER}"},italics:{replaceAction:"emphasis",placeholder:"{ITALICS_PLACEHOLDER}"},bold:{replaceAction:"strong",placeholder:"{STRONG_PLACEHOLDER}"},list:{replaceAction:"list",placeholder:"{LIST_PLACEHOLDER}"},blockquote:{replaceAction:"blockquote",placeholder:"{BLOCKQUOTE_PLACEHOLDER}"},table:{replaceAction:"table",placeholder:"{TABLE_PLACEHOLDER}"},math:{replaceAction:"math",placeholder:"{MATH_PLACEHOLDER}"},inlineMath:{replaceAction:"inlineMath",placeholder:"{INLINE_MATH_PLACEHOLDER}"},yaml:{replaceAction:Te,placeholder:ze(`--- +---`)},wikiLink:{replaceAction:Rs,placeholder:"{WIKI_LINK_PLACEHOLDER}"},tag:{replaceAction:Gn,placeholder:"#tag-placeholder"},obsidianMultiLineComments:{replaceAction:Bu,placeholder:"{OBSIDIAN_COMMENT_PLACEHOLDER}"},link:{replaceAction:m0,placeholder:"{REGULAR_LINK_PLACEHOLDER}"}};function N(e,n,t){let r=[];for(let i of e){let o;if(typeof i.replaceAction=="string")o=p0(n,i.placeholder,i.replaceAction);else if(i.replaceAction instanceof RegExp)o=c0(n,i.placeholder,i.replaceAction);else if(typeof i.replaceAction=="function"){let s=i.replaceAction;o=s(n,i.placeholder)}n=o.newText,r.push({replacedValues:o.replacedValues,placeholder:i.placeholder})}return n=t(n),r=r.reverse(),r!=null&&r.length>0&&r.forEach(i=>{i.replacedValues.forEach(o=>{n=n.replace(new RegExp(i.placeholder,"i"),ze(o))})}),n}function p0(e,n,t){let r=be(t,e),i=[];for(let o of r){let s=e.substring(o.start.offset,o.end.offset);i.push(s),e=Ee(e,o.start.offset,o.end.offset,n)}return i.reverse(),{newText:e,replacedValues:i}}function c0(e,n,t){let r=e.match(t),i=[];if(t.flags.includes("g")){if(e=e.replaceAll(t,n),r)for(let o of r)i.push(o)}else e=e.replace(t,n),r&&i.push(r[0]);return{newText:e,replacedValues:i}}function m0(e,n){let t=be("link",e),r=[];for(let i of t){if(i==null)continue;let o=e.substring(i.start.offset,i.end.offset);!o.match(io)||(r.push(o),e=Ee(e,i.start.offset,i.end.offset,n))}return r.reverse(),{newText:e,replacedValues:r}}var xn=class{constructor(){this.style="Title Case";this.ignoreWords=["macOS","iOS","iPhone","iPad","JavaScript","TypeScript","AppleScript"];this.lowercaseWords=["via","a","an","the","and","or","but","for","nor","so","yet","at","by","in","of","on","to","up","as","is","if","it","for","to","with","without","into","onto","per"];this.ignoreCasedWords=!0}},Wr=class extends v{get OptionsClass(){return xn}get name(){return"Capitalize Headings"}get description(){return"Headings should be formatted with capitalization"}get type(){return"Heading"}apply(n,t){return N([S.code,S.yaml,S.link,S.wikiLink,S.tag],n,r=>{let i=r.split(` +`);for(let o=0;oa.toUpperCase());break}return i.join(` +`)})}get exampleBuilders(){return[new k({description:"With `Title Case=true`, `Ignore Cased Words=false`",before:g` # this is a heading 1 ## THIS IS A HEADING 2 ### a heading 3 - `,after:b` + `,after:g` # This is a Heading 1 ## This is a Heading 2 ### A Heading 3 - `,options:{style:"Title Case",ignoreCasedWords:!1}}),new A({description:"With `Title Case=true`, `Ignore Cased Words=true`",before:b` + `,options:{style:"Title Case",ignoreCasedWords:!1}}),new k({description:"With `Title Case=true`, `Ignore Cased Words=true`",before:g` # this is a heading 1 ## THIS IS A HEADING 2 ### a hEaDiNg 3 - `,after:b` + `,after:g` # This is a Heading 1 ## THIS IS A HEADING 2 ### A hEaDiNg 3 - `,options:{style:"Title Case",ignoreCasedWords:!0}}),new A({description:"With `First letter=true`",before:b` + `,options:{style:"Title Case",ignoreCasedWords:!0}}),new k({description:"With `First letter=true`",before:g` # this is a heading 1 ## this is a heading 2 - `,after:b` + `,after:g` # This is a heading 1 ## This is a heading 2 - `,options:{style:"First letter"}}),new A({description:"With `ALL CAPS=true`",before:b` + `,options:{style:"First letter"}}),new k({description:"With `ALL CAPS=true`",before:g` # this is a heading 1 ## this is a heading 2 - `,after:b` + `,after:g` # THIS IS A HEADING 1 ## THIS IS A HEADING 2 - `,options:{style:"ALL CAPS"}})]}get optionBuilders(){return[new ce({OptionsClass:hn,name:"Style",description:"The style of capitalization to use",optionsKey:"style",records:[{value:"Title Case",description:"Capitalize Using Title Case Rules"},{value:"ALL CAPS",description:"CAPITALIZE THE WHOLE TITLE"},{value:"First letter",description:"Only capitalize the first letter"}]}),new re({OptionsClass:hn,name:"Ignore Cased Words",description:"Only apply title case style to words that are all lowercase",optionsKey:"ignoreCasedWords"}),new Ne({OptionsClass:hn,name:"Ignore Words",description:"A comma separated list of words to ignore when capitalizing",optionsKey:"ignoreWords",splitter:us,separator:", "}),new Ne({OptionsClass:hn,name:"Lowercase Words",description:"A comma separated list of words to keep lowercase",optionsKey:"lowercaseWords",splitter:us,separator:", "})]}};Ir=B([E.register],Ir);var Co=class{constructor(){this.innerNewLines=!1}},Fr=class extends E{get OptionsClass(){return Co}get name(){return"Compact YAML"}get description(){return"Removes leading and trailing blank lines in the YAML front matter."}get type(){return"Spacing"}apply(t,n){return Me(t,r=>(r=r.replace(/^---\n+/,`--- + `,options:{style:"ALL CAPS"}})]}get optionBuilders(){return[new ke({OptionsClass:xn,name:"Style",description:"The style of capitalization to use",optionsKey:"style",records:[{value:"Title Case",description:"Capitalize Using Title Case Rules"},{value:"ALL CAPS",description:"CAPITALIZE THE WHOLE TITLE"},{value:"First letter",description:"Only capitalize the first letter"}]}),new ae({OptionsClass:xn,name:"Ignore Cased Words",description:"Only apply title case style to words that are all lowercase",optionsKey:"ignoreCasedWords"}),new Le({OptionsClass:xn,name:"Ignore Words",description:"A comma separated list of words to ignore when capitalizing",optionsKey:"ignoreWords",splitter:Ds,separator:", "}),new Le({OptionsClass:xn,name:"Lowercase Words",description:"A comma separated list of words to keep lowercase",optionsKey:"lowercaseWords",splitter:Ds,separator:", "})]}};Wr=E([v.register],Wr);var Wo=class{constructor(){this.innerNewLines=!1}},Kr=class extends v{get OptionsClass(){return Wo}get name(){return"Compact YAML"}get description(){return"Removes leading and trailing blank lines in the YAML front matter."}get type(){return"Spacing"}apply(n,t){return Oe(n,r=>(r=r.replace(/^---\n+/,`--- `),r=r.replace(/\n+---/,` ----`),n.innerNewLines&&(r=r.replaceAll(/\n{2,}/g,` -`)),r))}get exampleBuilders(){return[new A({description:"Remove blank lines at the start and end of the YAML",before:b` +---`),t.innerNewLines&&(r=r.replaceAll(/\n{2,}/g,` +`)),r))}get exampleBuilders(){return[new k({description:"Remove blank lines at the start and end of the YAML",before:g` --- ${""} date: today @@ -162,13 +181,13 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe title: unchanged without inner new lines turned on ${""} --- - `,after:b` + `,after:g` --- date: today ${""} title: unchanged without inner new lines turned on --- - `}),new A({description:"Remove blank lines anywhere in YAML with inner new lines set to true",before:b` + `}),new k({description:"Remove blank lines anywhere in YAML with inner new lines set to true",before:g` --- ${""} date: today @@ -182,7 +201,7 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe ${""} ${""} Body content here. - `,after:b` + `,after:g` --- date: today title: remove inner new lines @@ -192,42 +211,42 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe ${""} ${""} Body content here. - `,options:{innerNewLines:!0}})]}get optionBuilders(){return[new re({OptionsClass:Co,name:"Inner New Lines",description:"Remove new lines that are not at the start or the end of the YAML",optionsKey:"innerNewLines"})]}};Fr=B([E.register],Fr);var ka=class{},Br=class extends E{get OptionsClass(){return ka}get name(){return"Consecutive blank lines"}get description(){return"There should be at most one consecutive blank line."}get type(){return"Spacing"}apply(t,n){return z([v.code,v.yaml,v.link,v.wikiLink,v.tag],t,r=>r.replace(/\n{2,}/g,` + `,options:{innerNewLines:!0}})]}get optionBuilders(){return[new ae({OptionsClass:Wo,name:"Inner New Lines",description:"Remove new lines that are not at the start or the end of the YAML",optionsKey:"innerNewLines"})]}};Kr=E([v.register],Kr);var Ua=class{},Ur=class extends v{get OptionsClass(){return Ua}get name(){return"Consecutive blank lines"}get description(){return"There should be at most one consecutive blank line."}get type(){return"Spacing"}apply(n,t){return N([S.code,S.yaml,S.link,S.wikiLink,S.tag],n,r=>r.replace(/\n{2,}/g,` -`))}get exampleBuilders(){return[new A({description:"",before:b` +`))}get exampleBuilders(){return[new k({description:"",before:g` Some text ${""} ${""} Some more text - `,after:b` + `,after:g` Some text ${""} Some more text - `})]}get optionBuilders(){return[]}};Br=B([E.register],Br);var va=class{},Mr=class extends E{get OptionsClass(){return va}get name(){return"Convert Bullet List Markers"}get description(){return"Converts common bullet list marker symbols to markdown list markers."}get type(){return"Content"}apply(t,n){return z([v.code,v.yaml,v.link,v.wikiLink,v.tag],t,r=>r.replace(/^([^\S\n]*)([•§])([^\S\n]*)/gm,"$1-$3"))}get exampleBuilders(){return[new A({description:"Converts \u2022",before:b` + `})]}get optionBuilders(){return[]}};Ur=E([v.register],Ur);var Ga=class{},Gr=class extends v{get OptionsClass(){return Ga}get name(){return"Convert Bullet List Markers"}get description(){return"Converts common bullet list marker symbols to markdown list markers."}get type(){return"Content"}apply(n,t){return N([S.code,S.yaml,S.link,S.wikiLink,S.tag],n,r=>r.replace(/^([^\S\n]*)([•§])([^\S\n]*)/gm,"$1-$3"))}get exampleBuilders(){return[new k({description:"Converts \u2022",before:g` • item 1 • item 2 - `,after:b` + `,after:g` - item 1 - item 2 - `}),new A({description:"Converts \xA7",before:b` + `}),new k({description:"Converts \xA7",before:g` • item 1 § item 2 § item 3 - `,after:b` + `,after:g` - item 1 - item 2 - item 3 - `})]}get optionBuilders(){return[]}};Mr=B([E.register],Mr);var Eo=class{constructor(){this.tabsize=4}},Rr=class extends E{get OptionsClass(){return Eo}get name(){return"Convert Spaces to Tabs"}get description(){return"Converts leading spaces to tabs."}get type(){return"Spacing"}apply(t,n){return z([v.code,v.yaml,v.link,v.wikiLink,v.tag],t,r=>{let i=String(n.tabsize),o=new RegExp("^( *) {"+String(i)+"}","gm");for(;r.match(o)!=null;)r=r.replace(o,"$1 ");return r})}get exampleBuilders(){return[new A({description:"Converting spaces to tabs with `tabsize = 3`",before:b` + `})]}get optionBuilders(){return[]}};Gr=E([v.register],Gr);var Ko=class{constructor(){this.tabsize=4}},Zr=class extends v{get OptionsClass(){return Ko}get name(){return"Convert Spaces to Tabs"}get description(){return"Converts leading spaces to tabs."}get type(){return"Spacing"}apply(n,t){return N([S.code,S.yaml,S.link,S.wikiLink,S.tag],n,r=>{let i=String(t.tabsize),o=new RegExp("^( *) {"+String(i)+"}","gm");for(;r.match(o)!=null;)r=r.replace(o,"$1 ");return r})}get exampleBuilders(){return[new k({description:"Converting spaces to tabs with `tabsize = 3`",before:g` - text with no indention - text indented with 3 spaces - text with no indention - text indented with 6 spaces - `,after:b` + `,after:g` - text with no indention \t- text indented with 3 spaces - text with no indention \t\t- text indented with 6 spaces - `,options:{tabsize:3}})]}get optionBuilders(){return[new So({OptionsClass:Eo,name:"Tabsize",description:"Number of spaces that will be converted to a tab",optionsKey:"tabsize"})]}};Rr=B([E.register],Rr);var Lo=class{constructor(){this.style="consistent"}},Dr=class extends E{get OptionsClass(){return Lo}get name(){return"Emphasis Style"}get description(){return"Makes sure the emphasis style is consistent."}get type(){return"Content"}apply(t,n){return z([v.code,v.yaml,v.link,v.wikiLink,v.tag,v.math,v.inlineMath],t,r=>ho(r,n.style,"emphasis"))}get exampleBuilders(){return[new A({description:"Emphasis indicators should use underscores when style is set to 'underscore'",before:b` + `,options:{tabsize:3}})]}get optionBuilders(){return[new wo({OptionsClass:Ko,name:"Tabsize",description:"Number of spaces that will be converted to a tab",optionsKey:"tabsize"})]}};Zr=E([v.register],Zr);var Uo=class{constructor(){this.style="consistent"}},Qr=class extends v{get OptionsClass(){return Uo}get name(){return"Emphasis Style"}get description(){return"Makes sure the emphasis style is consistent."}get type(){return"Content"}apply(n,t){return N([S.code,S.yaml,S.link,S.wikiLink,S.tag,S.math,S.inlineMath],n,r=>Vo(r,t.style,"emphasis"))}get exampleBuilders(){return[new k({description:"Emphasis indicators should use underscores when style is set to 'underscore'",before:g` # Emphasis Cases ${""} *Test emphasis* @@ -242,7 +261,7 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe ${""} * List Item1 with *emphasized text* * List Item2 - `,after:b` + `,after:g` # Emphasis Cases ${""} _Test emphasis_ @@ -257,7 +276,7 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe ${""} * List Item1 with _emphasized text_ * List Item2 - `,options:{style:"underscore"}}),new A({description:"Emphasis indicators should use asterisks when style is set to 'asterisk'",before:b` + `,options:{style:"underscore"}}),new k({description:"Emphasis indicators should use asterisks when style is set to 'asterisk'",before:g` # Emphasis Cases ${""} _Test emphasis_ @@ -269,7 +288,7 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe This is ___nested emphasis_ and ending bold__ ${""} __Test bold__ - `,after:b` + `,after:g` # Emphasis Cases ${""} *Test emphasis* @@ -281,7 +300,7 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe This is __*nested emphasis* and ending bold__ ${""} __Test bold__ - `,options:{style:"asterisk"}}),new A({description:"Emphasis indicators should use consistent style based on first emphasis indicator in a file when style is set to 'consistent'",before:b` + `,options:{style:"asterisk"}}),new k({description:"Emphasis indicators should use consistent style based on first emphasis indicator in a file when style is set to 'consistent'",before:g` # Emphasis First Emphasis Is an Asterisk ${""} *First emphasis* @@ -292,7 +311,7 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe This is **_nested emphasis_ and ending bold** ${""} __Test bold__ - `,after:b` + `,after:g` # Emphasis First Emphasis Is an Asterisk ${""} *First emphasis* @@ -303,7 +322,7 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe This is ***nested emphasis* and ending bold** ${""} __Test bold__ - `,options:{style:"consistent"}}),new A({description:"Emphasis indicators should use consistent style based on first emphasis indicator in a file when style is set to 'consistent'",before:b` + `,options:{style:"consistent"}}),new k({description:"Emphasis indicators should use consistent style based on first emphasis indicator in a file when style is set to 'consistent'",before:g` # Emphasis First Emphasis Is an Underscore ${""} **_First emphasis_** @@ -314,7 +333,7 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe This is __*nested emphasis* and ending bold__ ${""} __Test bold__ - `,after:b` + `,after:g` # Emphasis First Emphasis Is an Underscore ${""} **_First emphasis_** @@ -325,31 +344,77 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe This is ___nested emphasis_ and ending bold__ ${""} __Test bold__ - `,options:{style:"consistent"}})]}get optionBuilders(){return[new ce({OptionsClass:Lo,name:"Style",description:"The style used to denote emphasized content",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of emphasis is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure * is the emphasis indicator"},{value:"underscore",description:"Makes sure _ is the emphasis indicator"}]})]}};Dr=B([E.register],Dr);var Oa=class{},Pr=class extends E{get OptionsClass(){return Oa}get name(){return"Empty Line Around Code Fences"}get description(){return"Ensures that there is an empty line around code fences unless they start or end a document."}get type(){return"Spacing"}apply(t,n){return pc(t)}get exampleBuilders(){return[new A({description:"Fenced code blocks that start a document do not get an empty line before them.",before:b` + `,options:{style:"consistent"}})]}get optionBuilders(){return[new ke({OptionsClass:Uo,name:"Style",description:"The style used to denote emphasized content",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of emphasis is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure * is the emphasis indicator"},{value:"underscore",description:"Makes sure _ is the emphasis indicator"}]})]}};Qr=E([v.register],Qr);var Za=class{},Xr=class extends v{get OptionsClass(){return Za}get name(){return"Empty Line Around Blockquotes"}get description(){return"Ensures that there is an empty line around blockquotes unless they start or end a document. **Note that an empty line is either one less level of nesting for blockquotes or a newline character.**"}get type(){return"Spacing"}apply(n,t){return Xc(n)}get exampleBuilders(){return[new k({description:"Blockquotes that start a document do not get an empty line before them.",before:g` + > Quote content here + > quote content continued + # Title here + `,after:g` + > Quote content here + > quote content continued + ${""} + # Title here + `}),new k({description:"Blockquotes that end a document do not get an empty line after them.",before:g` + # Heading 1 + > Quote content here + > quote content continued + `,after:g` + # Heading 1 + ${""} + > Quote content here + > quote content continued + `}),new k({description:"Blockquotes that are nested have the proper empty line added",before:g` + # Make sure that nested blockquotes are accounted for correctly + > Quote content here + > quote content continued + > > Nested Blockquote + > > content continued + ${""} + **Note that the empty line is either one less blockquote indicator if followed/proceeded by more blockquote content or it is an empty line** + ${""} + # Doubly nested code block + ${""} + > > Quote content here + > > quote content continued + `,after:g` + # Make sure that nested blockquotes are accounted for correctly + ${""} + > Quote content here + > quote content continued + > + > > Nested Blockquote + > > content continued + ${""} + **Note that the empty line is either one less blockquote indicator if followed/proceeded by more blockquote content or it is an empty line** + ${""} + # Doubly nested code block + ${""} + > > Quote content here + > > quote content continued + `})]}get optionBuilders(){return[]}};Xr=E([v.register],Xr);var Qa=class{},Jr=class extends v{get OptionsClass(){return Qa}get name(){return"Empty Line Around Code Fences"}get description(){return"Ensures that there is an empty line around code fences unless they start or end a document."}get type(){return"Spacing"}apply(n,t){return Gc(n)}get exampleBuilders(){return[new k({description:"Fenced code blocks that start a document do not get an empty line before them.",before:g` \`\`\` js var temp = 'text'; // this is a code block \`\`\` Text after code block. - `,after:b` + `,after:g` \`\`\` js var temp = 'text'; // this is a code block \`\`\` ${""} Text after code block. - `}),new A({description:"Fenced code blocks that end a document do not get an empty line after them.",before:b` + `}),new k({description:"Fenced code blocks that end a document do not get an empty line after them.",before:g` # Heading 1 \`\`\` Here is a code block \`\`\` - `,after:b` + `,after:g` # Heading 1 ${""} \`\`\` Here is a code block \`\`\` - `}),new A({description:"Fenced code blocks that are in a blockquote have the proper empty line added",before:b` + `}),new k({description:"Fenced code blocks that are in a blockquote have the proper empty line added",before:g` # Make sure that code blocks in blockquotes are accounted for correctly > \`\`\`js > var text = 'this is some text'; @@ -366,7 +431,7 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe > > \`\`\`js > > var other text = 'this is more text'; > > \`\`\` - `,after:b` + `,after:g` # Make sure that code blocks in blockquotes are accounted for correctly > > \`\`\`js @@ -386,7 +451,7 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe > > \`\`\`js > > var other text = 'this is more text'; > > \`\`\` - `}),new A({description:"Nested fenced code blocks get empty lines added around them",before:b` + `}),new k({description:"Nested fenced code blocks get empty lines added around them",before:g` \`\`\`markdown # Header ${""} @@ -394,7 +459,7 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe var text = 'some string'; \`\`\`\` \`\`\` - `,after:b` + `,after:g` \`\`\`markdown # Header ${""} @@ -403,7 +468,77 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe \`\`\`\` ${""} \`\`\` - `})]}get optionBuilders(){return[]}};Pr=B([E.register],Pr);var Ta=class{},$r=class extends E{get OptionsClass(){return Ta}get name(){return"Empty Line Around Tables"}get description(){return"Ensures that there is an empty line around github flavored tables unless they start or end a document."}get type(){return"Spacing"}apply(t,n){return z([v.yaml,v.code],t,r=>cc(r))}get exampleBuilders(){return[new A({description:"Tables that start a document do not get an empty line before them.",before:b` + `})]}get optionBuilders(){return[]}};Jr=E([v.register],Jr);var Go=class{constructor(){this.minimumNumberOfDollarSignsToBeAMathBlock=2}};E([v.noSettingControl()],Go.prototype,"minimumNumberOfDollarSignsToBeAMathBlock",2);var ei=class extends v{get OptionsClass(){return Go}get name(){return"Empty Line Around Math Blocks"}get description(){return"Ensures that there is an empty line around math blocks using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math."}get type(){return"Spacing"}apply(n,t){return N([S.yaml,S.code],n,r=>Qc(r,t.minimumNumberOfDollarSignsToBeAMathBlock))}get exampleBuilders(){return[new k({description:"Math blocks that start a document do not get an empty line before them.",before:g` + $$ + \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} + $$ + some more text + `,after:g` + $$ + \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} + $$ + ${""} + some more text + `}),new k({description:"Math blocks that are singe-line are updated based on the value of `Number of Dollar Signs to Indicate a Math Block` (in this case its value is 2)",before:g` + $$\\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix}$$ + some more text + `,after:g` + $$\\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix}$$ + ${""} + some more text + `}),new k({description:"Math blocks that end a document do not get an empty line after them.",before:g` + Some text + $$ + \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} + $$ + `,after:g` + Some text + ${""} + $$ + \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} + $$ + `}),new k({description:"Math blocks that are not at the start or the end of the document will have an empty line added before and after them",before:g` + Some text + $$ + \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} + $$ + some more text + `,after:g` + Some text + ${""} + $$ + \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} + $$ + ${""} + some more text + `}),new k({description:"Math blocks in callouts or blockquotes have the appropriately formatted blank lines added",before:g` + > Math block in blockquote + > $$ + > \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} + > $$ + ${""} + More content here + ${""} + > Math block doubly nested in blockquote + > > $$ + > > \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} + > > $$ + `,after:g` + > Math block in blockquote + > + > $$ + > \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} + > $$ + > + ${""} + More content here + ${""} + > Math block doubly nested in blockquote + > > + > > $$ + > > \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} + > > $$ + `})]}get optionBuilders(){return[]}};ei=E([v.register],ei);var Xa=class{},ti=class extends v{get OptionsClass(){return Xa}get name(){return"Empty Line Around Tables"}get description(){return"Ensures that there is an empty line around github flavored tables unless they start or end a document."}get type(){return"Spacing"}apply(n,t){return N([S.yaml,S.code],n,r=>Zc(r))}get exampleBuilders(){return[new k({description:"Tables that start a document do not get an empty line before them.",before:g` | Column 1 | Column 2 | |----------|----------| | foo | bar | @@ -413,7 +548,7 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe # Heading ${""} **Note that text directly following a table is considered part of a table according to github markdown** - `,after:b` + `,after:g` | Column 1 | Column 2 | |----------|----------| | foo | bar | @@ -424,14 +559,14 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe # Heading ${""} **Note that text directly following a table is considered part of a table according to github markdown** - `}),new A({description:"Tables that end a document do not get an empty line after them.",before:b` + `}),new k({description:"Tables that end a document do not get an empty line after them.",before:g` # Heading 1 | Column 1 | Column 2 | |----------|----------| | foo | bar | | baz | qux | | quux | quuz | - `,after:b` + `,after:g` # Heading 1 ${""} | Column 1 | Column 2 | @@ -439,7 +574,7 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe | foo | bar | | baz | qux | | quux | quuz | - `}),new A({description:"Tables that are not at the start or the end of the document will have an empty line added before and after them",before:b` + `}),new k({description:"Tables that are not at the start or the end of the document will have an empty line added before and after them",before:g` # Table 1 | Column 1 | Column 2 | Column 3 | |----------|----------|----------| @@ -453,7 +588,7 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe foo | bar # Header for more content New paragraph. - `,after:b` + `,after:g` # Table 1 ${""} | Column 1 | Column 2 | Column 3 | @@ -471,7 +606,7 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe ${""} # Header for more content New paragraph. - `}),new A({description:"Tables in callouts or blockquotes have the appropriately formatted blank lines added",before:b` + `}),new k({description:"Tables in callouts or blockquotes have the appropriately formatted blank lines added",before:g` > Table in blockquote > | Column 1 | Column 2 | Column 3 | > |----------|----------|----------| @@ -487,7 +622,7 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe > > | foo | bar | blob | > > | baz | qux | trust | > > | quux | quuz | glob | - `,after:b` + `,after:g` > Table in blockquote > > | Column 1 | Column 2 | Column 3 | @@ -506,20 +641,19 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe > > | foo | bar | blob | > > | baz | qux | trust | > > | quux | quuz | glob | - `})]}get optionBuilders(){return[]}};$r=B([E.register],$r);var Wn=class{constructor(){this.defaultEscapeCharacter='"';this.tryToEscapeSingleLineArrays=!1;this.forceYamlEscape=[]}},gn=class extends E{get OptionsClass(){return Wn}get name(){return"Escape YAML Special Characters"}get description(){return`Escapes colons with a space after them (: ), single quotes ('), and double quotes (") in YAML.`}get type(){return"YAML"}apply(t,n){return Me(t,r=>{let i=r.split(` -`),o=i.length;if(o<1)return r;let s=function(u){return u.length>1&&(u.startsWith("'")&&u.endsWith("'")||u.startsWith('"')&&u.endsWith('"'))},a=function(u,p){if(s(p))return u;let c=p.includes("'"),f=p.includes('"'),m=p.includes(": ");if(!c&&!f&&!m||c&&f)return u;let d;return c?d=u.replace(p,`"${p}"`):f?d=u.replace(p,`'${p}'`):d=u.replace(p,`${n.defaultEscapeCharacter}${p}${n.defaultEscapeCharacter}`),d};for(let u=0;u=p.length,m=p.startsWith("-"),d=m&&p.length<2;if(f&&d)continue;let h=1;m||(h+=c);let g=p.substring(h).trim();if(g.startsWith("[")){if(n.tryToEscapeSingleLineArrays){if(g.length<3)continue;let y=g.substring(1,g.length-1).split(","),T=y.length;for(let O=0;O{let i=r.split(` +`),o=i.length;if(o<1)return r;for(let s=0;s=a.length,p=a.startsWith("-"),c=p&&a.length<2;if(u&&c)continue;let m=1;p||(m+=l);let f=a.substring(m).trim();if(f.startsWith("[")){if(t.tryToEscapeSingleLineArrays){if(f.length<3)continue;let d=f.substring(1,f.length-1).split(","),h=d.length;for(let y=0;y{if(r.match(/^#\s.*/m))return r;let o=t.fileName,s=r.indexOf(` +---`);return s=s==-1||!r.startsWith(`--- +`)?0:s+5,ln(r,s,`# ${o} +`)})}get exampleBuilders(){return[new k({description:"Inserts an H1 heading",before:g` + This is a line of text + `,after:g` + # File Name + This is a line of text + `,options:{fileName:"File Name"}}),new k({description:"Inserts heading after YAML front matter",before:g` + --- + title: My Title + --- + This is a line of text + `,after:g` + --- + title: My Title + --- + # File Name + This is a line of text + `,options:{fileName:"File Name"}})]}get optionBuilders(){return[]}};ri=E([v.register],ri);var Ja=class{},ii=class extends v{get OptionsClass(){return Ja}get name(){return"Footnote after Punctuation"}get description(){return"Ensures that footnote references are placed after punctuation, not before."}get type(){return"Footnote"}apply(n,t){return N([S.code,S.yaml,S.link,S.wikiLink,S.tag],n,r=>r.replace(/(?!^)(\[\^\w+\]) ?([,.;!:?])/gm,"$2$1"))}get exampleBuilders(){return[new k({description:"Placing footnotes after punctuation.",before:g` + Lorem[^1]. Ipsum[^2], doletes. + `,after:g` + Lorem.[^1] Ipsum,[^2] doletes. + `})]}get optionBuilders(){return[]}};ii=E([v.register],ii);var oi=class{constructor(){this.defaultEscapeCharacter='"';this.forceYamlEscape=[]}};E([v.noSettingControl()],oi.prototype,"defaultEscapeCharacter",2);var vn=class extends v{get OptionsClass(){return oi}get name(){return"Force YAML Escape"}get description(){return"Escapes the values for the specified YAML keys."}get type(){return"YAML"}apply(n,t){return Oe(n,r=>{for(let i of t.forceYamlEscape){let o=Ce(r,i);if(o!=null){if(o.includes(` +`)||o.startsWith(" [")||Ns(o))continue;o=_t(o,t.defaultEscapeCharacter,!0),r=Ae(r,i," "+o)}}return r})}get exampleBuilders(){return[new k({description:"YAML without anything to escape",before:g` + --- + key: value + otherKey: [] + --- + `,after:g` + --- + key: value + otherKey: [] + --- + `}),new k({description:"Force YAML keys to be escaped with double quotes where not already escaped with `Force Yaml Escape on Keys = 'key'\\n'title'\\n'bool'`",before:g` --- key: 'Already escaped value' title: This is a title @@ -584,7 +752,7 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe --- ${""} _Note that the force Yaml key option should not be used with arrays._ - `,after:b` + `,after:g` --- key: 'Already escaped value' title: "This is a title" @@ -593,60 +761,37 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe --- ${""} _Note that the force Yaml key option should not be used with arrays._ - `,options:{forceYamlEscape:["key","title","bool"],defaultEscapeCharacter:'"'}})]}get optionBuilders(){return[new ce({OptionsClass:Wn,name:"Default Escape Character",description:"The default character to use to escape YAML values when a single quote and double quote are not present.",optionsKey:"defaultEscapeCharacter",records:[{value:'"',description:"Use a double quote to escape if no single or double quote is present"},{value:"'",description:"Use a single quote to escape if no single or double quote is present"}]}),new re({OptionsClass:Wn,name:"Try to Escape Single Line Arrays",description:'Tries to escape array values assuming that an array starts with "[", ends with "]", and has items that are delimited by ",".',optionsKey:"tryToEscapeSingleLineArrays"}),new Ne({OptionsClass:Wn,name:"Force Yaml Escape on Keys",description:"Uses the Yaml escape character on the specified Yaml keys separated by a new line character if it is not already escaped. Do not use on Yaml arrays.",optionsKey:"forceYamlEscape"})]}get hasSpecialExecutionOrder(){return!0}};gn=B([E.register],gn);var _o=class{};B([E.noSettingControl()],_o.prototype,"fileName",2);var Nr=class extends E{get OptionsClass(){return _o}get name(){return"File Name Heading"}get description(){return"Inserts the file name as a H1 heading if no H1 heading exists."}get type(){return"Heading"}apply(t,n){return z([v.code,v.yaml,v.link,v.wikiLink,v.tag],t,r=>{if(r.match(/^#\s.*/m))return r;let o=n.fileName,s=r.indexOf(` ----`);return s=s==-1||!r.startsWith(`--- -`)?0:s+5,nn(r,s,`# ${o} -`)})}get exampleBuilders(){return[new A({description:"Inserts an H1 heading",before:b` - This is a line of text - `,after:b` - # File Name - This is a line of text - `,options:{fileName:"File Name"}}),new A({description:"Inserts heading after YAML front matter",before:b` - --- - title: My Title - --- - This is a line of text - `,after:b` - --- - title: My Title - --- - # File Name - This is a line of text - `,options:{fileName:"File Name"}})]}get optionBuilders(){return[]}};Nr=B([E.register],Nr);var Sa=class{},zr=class extends E{get OptionsClass(){return Sa}get name(){return"Footnote after Punctuation"}get description(){return"Ensures that footnote references are placed after punctuation, not before."}get type(){return"Footnote"}apply(t,n){return z([v.code,v.yaml,v.link,v.wikiLink,v.tag],t,r=>r.replace(/(?!^)(\[\^\w+\]) ?([,.;!:?])/gm,"$2$1"))}get exampleBuilders(){return[new A({description:"Placing footnotes after punctuation.",before:b` - Lorem[^1]. Ipsum[^2], doletes. - `,after:b` - Lorem.[^1] Ipsum,[^2] doletes. - `})]}get optionBuilders(){return[]}};zr=B([E.register],zr);var Aa=class{},yn=class extends E{get OptionsClass(){return Aa}get name(){return"Format Tags in YAML"}get description(){return"Remove Hashtags from tags in the YAML frontmatter, as they make the tags there invalid."}get type(){return"YAML"}apply(t,n){return Me(t,r=>r.replace(/\ntags:(.*?)(?=\n(?:[A-Za-z-]+?:|---))/s,function(i){return i.replaceAll("#","")}))}get exampleBuilders(){return[new A({description:"Format Tags in YAML frontmatter",before:b` + `,options:{forceYamlEscape:["key","title","bool"],defaultEscapeCharacter:'"'}})]}get optionBuilders(){return[new Le({OptionsClass:oi,name:"Force YAML Escape on Keys",description:"Uses the YAML escape character on the specified YAML keys separated by a new line character if it is not already escaped. Do not use on YAML arrays.",optionsKey:"forceYamlEscape"})]}get hasSpecialExecutionOrder(){return!0}};vn=E([v.register],vn);var el=class{},Sn=class extends v{get OptionsClass(){return el}get name(){return"Format Tags in YAML"}get description(){return"Remove Hashtags from tags in the YAML frontmatter, as they make the tags there invalid."}get type(){return"YAML"}apply(n,t){return Oe(n,r=>r.replace(/\ntags:(.*?)(?=\n(?:[A-Za-z-]+?:|---))/s,function(i){return i.replaceAll("#","")}))}get exampleBuilders(){return[new k({description:"Format Tags in YAML frontmatter",before:g` --- tags: #one #two #three #nested/four/five --- - `,after:b` + `,after:g` --- tags: one two three nested/four/five --- - `}),new A({description:"Format tags in array",before:b` + `}),new k({description:"Format tags in array",before:g` --- tags: [#one #two #three] --- - `,after:b` + `,after:g` --- tags: [one two three] --- - `}),new A({description:"Format tags in list",before:b` + `}),new k({description:"Format tags in list",before:g` --- tags: - #tag1 - #tag2 --- - `,after:b` + `,after:g` --- tags: - tag1 - tag2 --- - `})]}get optionBuilders(){return[]}get hasSpecialExecutionOrder(){return!0}};yn=B([E.register],yn);var ct=class{constructor(){this.aliasArrayStyle="single-line";this.formatAliasKey=!0;this.tagArrayStyle="single-line";this.formatTagKey=!0;this.defaultArrayStyle="single-line";this.formatArrayKeys=!0;this.forceSingleLineArrayStyle=[];this.forceMultiLineArrayStyle=[]}},Hr=class extends E{get OptionsClass(){return ct}get name(){return"Format Yaml Array"}get description(){return"Allows for the formatting of regular yaml arrays as either multi-line or single-line and `tags` and `aliases` are allowed to have some Obsidian specific yaml formats. Note that single string to single-line goes from a single string entry to a single-line array if more than 1 entry is present. The same is true for single string to multi-line except it becomes a multi-line array."}get type(){return"YAML"}apply(t,n){return Me(t,r=>{let i=tt(r.replace(`--- + `})]}get optionBuilders(){return[]}get hasSpecialExecutionOrder(){return!0}};Sn=E([v.register],Sn);var dt=class{constructor(){this.aliasArrayStyle="single-line";this.formatAliasKey=!0;this.tagArrayStyle="single-line";this.formatTagKey=!0;this.defaultArrayStyle="single-line";this.formatArrayKeys=!0;this.forceSingleLineArrayStyle=[];this.forceMultiLineArrayStyle=[]}};E([v.noSettingControl()],dt.prototype,"aliasArrayStyle",2),E([v.noSettingControl()],dt.prototype,"tagArrayStyle",2);var si=class extends v{get OptionsClass(){return dt}get name(){return"Format Yaml Array"}get description(){return"Allows for the formatting of regular yaml arrays as either multi-line or single-line and `tags` and `aliases` are allowed to have some Obsidian specific yaml formats. Note that single string to single-line goes from a single string entry to a single-line array if more than 1 entry is present. The same is true for single string to multi-line except it becomes a multi-line array."}get type(){return"YAML"}apply(n,t){return Oe(n,r=>{let i=ot(r.replace(`--- `,"").replace(` ----`,""));if(!i)return r;let o=function(s){return s&&Object.prototype.toString.call(s)==="[object Date]"&&!isNaN(s)};if(n.formatAliasKey&&Object.keys(i).includes(Xe)&&(r=Oe(r,Xe,Je(Yi(bt(Te(r,Xe))),n.aliasArrayStyle))),n.formatTagKey&&Object.keys(i).includes(Pt)&&(r=Oe(r,Pt,Je(Hi(bt(Te(r,Pt))),n.tagArrayStyle))),n.formatArrayKeys){let s=[Xe,Pt,...n.forceMultiLineArrayStyle,...n.forceSingleLineArrayStyle];for(let a of Object.keys(i))s.includes(a)||!(typeof i[a]=="object"&&!o(i[a])&&i[a])||(r=Oe(r,a,Je(bt(Te(r,a)),n.defaultArrayStyle)))}for(let s of n.forceSingleLineArrayStyle)!Object.keys(i).includes(s)||(r=Oe(r,s,Je(bt(Te(r,s)),"single-line")));for(let s of n.forceMultiLineArrayStyle)!Object.keys(i).includes(s)||(r=Oe(r,s,Je(bt(Te(r,s)),"multi-line")));return r})}get exampleBuilders(){return[new A({description:"Format tags as a single-line array delimited by spaces and aliases as a multi-line array and format the key `test` to be a single-line array",before:b` +---`,""));if(!i)return r;let o=function(s){return s&&Object.prototype.toString.call(s)==="[object Date]"&&!isNaN(s)};if(t.formatAliasKey&&Object.keys(i).includes(tt)&&(r=Ae(r,tt,nt(ao(kt(Ce(r,tt))),t.aliasArrayStyle))),t.formatTagKey&&Object.keys(i).includes(Yt)&&(r=Ae(r,Yt,nt(so(kt(Ce(r,Yt))),t.tagArrayStyle))),t.formatArrayKeys){let s=[tt,Yt,...t.forceMultiLineArrayStyle,...t.forceSingleLineArrayStyle];for(let a of Object.keys(i))s.includes(a)||!(typeof i[a]=="object"&&!o(i[a])&&i[a])||(r=Ae(r,a,nt(kt(Ce(r,a)),t.defaultArrayStyle)))}for(let s of t.forceSingleLineArrayStyle)!Object.keys(i).includes(s)||(r=Ae(r,s,nt(kt(Ce(r,s)),"single-line")));for(let s of t.forceMultiLineArrayStyle)!Object.keys(i).includes(s)||(r=Ae(r,s,nt(kt(Ce(r,s)),"multi-line")));return r})}get exampleBuilders(){return[new k({description:"Format tags as a single-line array delimited by spaces and aliases as a multi-line array and format the key `test` to be a single-line array",before:g` --- tags: - computer @@ -660,7 +805,7 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe Nesting yaml arrays may result in unexpected results. ${""} Multi-line arrays will have empty values removed only leaving one if it is completely empty. The same is not true for single-line arrays as that is invalid yaml unless it comes as the last entry in the array. - `,after:b` + `,after:g` --- tags: [computer, research] aliases: @@ -674,7 +819,7 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe Nesting yaml arrays may result in unexpected results. ${""} Multi-line arrays will have empty values removed only leaving one if it is completely empty. The same is not true for single-line arrays as that is invalid yaml unless it comes as the last entry in the array. - `,options:{aliasArrayStyle:"multi-line",forceSingleLineArrayStyle:["test"]}}),new A({description:"Format tags as a single string with space delimiters, ignore aliases, and format regular yaml arrays as single-line arrays",before:b` + `,options:{aliasArrayStyle:"multi-line",forceSingleLineArrayStyle:["test"]}}),new k({description:"Format tags as a single string with space delimiters, ignore aliases, and format regular yaml arrays as single-line arrays",before:g` --- aliases: Typescript types: @@ -682,15 +827,15 @@ var Wc=Object.create;var or=Object.defineProperty;var sl=Object.getOwnPropertyDe - peer reviewed tags: [computer, science, trajectory] --- - `,after:b` + `,after:g` --- aliases: Typescript types: [thought provoking, peer reviewed] tags: computer science trajectory --- - `,options:{formatAliasKey:!1,tagArrayStyle:"single string space delimited"}})]}get optionBuilders(){return[new ce({OptionsClass:ct,name:"Yaml aliases section style",description:"The style of the yaml aliases section",optionsKey:"aliasArrayStyle",records:[{value:"multi-line",description:"```aliases:\\n - Title```"},{value:"single-line",description:"```aliases: [Title]```"},{value:"single string comma delimited",description:"```aliases: Title, Other Title```"},{value:"single string to single-line",description:"Aliases will be formatted as a string if there is 1 or fewer elements like so ```aliases: Title```. If there is more than 1 element, it will be formatted like a single-line array."},{value:"single string to multi-line",description:"Aliases will be formatted as a string if there is 1 or fewer elements like so ```aliases: Title```. If there is more than 1 element, it will be formatted like a multi-line array."}]}),new re({OptionsClass:ct,name:"Format yaml aliases section",description:"Turns on formatting for the yaml aliases section. You should not enable this option alongside the rule `YAML Title Alias` as they may not work well together or they may have different format styles selected causing unexpected results.",optionsKey:"formatAliasKey"}),new ce({OptionsClass:ct,name:"Yaml tags section style",description:"The style of the yaml tags section",optionsKey:"tagArrayStyle",records:[{value:"multi-line",description:"```tags:\\n - tag1```"},{value:"single-line",description:"```tags: [tag1]```"},{value:"single string to single-line",description:"Tags will be formatted as a string if there is 1 or fewer elements like so ```tags: tag1```. If there is more than 1 element, it will be formatted like a single-line array."},{value:"single string to multi-line",description:"Aliases will be formatted as a string if there is 1 or fewer elements like so ```tags: tag1```. If there is more than 1 element, it will be formatted like a multi-line array."},{value:"single-line space delimited",description:"```tags: [tag1 tag2]```"},{value:"single string space delimited",description:"```tags: tag1 tag2```"},{value:"single string comma delimited",description:"```tags: tag1, tag2```"}]}),new re({OptionsClass:ct,name:"Format yaml tags section",description:"Turns on formatting for the yaml tags section.",optionsKey:"formatTagKey"}),new ce({OptionsClass:ct,name:"Default yaml array section style",description:"The style of other yaml arrays that are not `tags`, `aliases` or in `Force key values to be single-line arrays` and `Force key values to be multi-line arrays`",optionsKey:"defaultArrayStyle",records:[{value:"multi-line",description:"```key:\\n - value```"},{value:"single-line",description:"```key: [value]```"}]}),new re({OptionsClass:ct,name:"Format yaml array sections",description:"Turns on formatting for regular yaml arrays",optionsKey:"formatArrayKeys"}),new Ne({OptionsClass:ct,name:"Force key values to be single-line arrays",description:"Forces the yaml array for the new line separated keys to be in single-line format (leave empty to disable this option)",optionsKey:"forceSingleLineArrayStyle"}),new Ne({OptionsClass:ct,name:"Force key values to be multi-line arrays",description:"Forces the yaml array for the new line separated keys to be in multi-line format (leave empty to disable this option)",optionsKey:"forceMultiLineArrayStyle"})]}};Hr=B([E.register],Hr);var Ca=class{},Yr=class extends E{get OptionsClass(){return Ca}get name(){return"Header Increment"}get description(){return"Heading levels should only increment by one level at a time"}get type(){return"Heading"}apply(t,n){return z([v.code,v.yaml,v.link,v.wikiLink,v.tag],t,r=>{let i=r.split(` -`),o=0,s=0;for(let a=0;ao+1?(s+=u-(o+1),u=o+1):u{let i=r.split(` +`),o=0,s=0;for(let a=0;ao+1?(s+=u-(o+1),u=o+1):u(n.bottom?(r=r.replace(/^(#+\s.*)/gm,` + `})]}get optionBuilders(){return[]}};ai=E([v.register],ai);var ui=class{constructor(){this.bottom=!0;this.emptyLineAfterYaml=!0}},li=class extends v{get OptionsClass(){return ui}get name(){return"Heading blank lines"}get description(){return"All headings have a blank line both before and after (except where the heading is at the beginning or end of the document)."}get type(){return"Spacing"}apply(n,t){return N([S.code,S.yaml,S.link,S.wikiLink,S.tag],n,r=>(t.bottom?(r=r.replace(/^(#+\s.*)/gm,` $1 @@ -755,8 +900,8 @@ $1`),r=r.replace(/(^#+\s.*)\n+/gm,`$1 `)):(r=r.replace(/(^#+\s.*)\n+/gm,`$1 `),r=r.replace(/\n+(#+\s.*)/g,` -$1`)),r=r.replace(/^\n+(#+\s.*)/,"$1"),r=r.replace(/(#+\s.*)\n+$/,"$1"),n.emptyLineAfterYaml||(r=r.replace(new RegExp("("+ve.source+")\\n+(#+\\s.*)"),`$1 -$5`)),r))}get exampleBuilders(){return[new A({description:"Headings should be surrounded by blank lines",before:b` +$1`)),r=r.replace(/^\n+(#+\s.*)/,"$1"),r=r.replace(/(#+\s.*)\n+$/,"$1"),t.emptyLineAfterYaml||(r=r.replace(new RegExp("("+Te.source+")\\n+(#+\\s.*)"),`$1 +$5`)),r))}get exampleBuilders(){return[new k({description:"Headings should be surrounded by blank lines",before:g` # H1 ## H2 ${""} @@ -765,7 +910,7 @@ $5`)),r))}get exampleBuilders(){return[new A({description:"Headings should be su line ## H2 ${""} - `,after:b` + `,after:g` # H1 ${""} ## H2 @@ -775,13 +920,13 @@ $5`)),r))}get exampleBuilders(){return[new A({description:"Headings should be su line ${""} ## H2 - `}),new A({description:"With `Bottom=false`",before:b` + `}),new k({description:"With `Bottom=false`",before:g` # H1 line ## H2 # H1 line - `,after:b` + `,after:g` # H1 line ${""} @@ -789,46 +934,46 @@ $5`)),r))}get exampleBuilders(){return[new A({description:"Headings should be su ${""} # H1 line - `,options:{bottom:!1,emptyLineAfterYaml:!0}}),new A({description:"Empty line before header and after Yaml is removed with `Empty Line Between Yaml and Header=true`",before:b` + `,options:{bottom:!1,emptyLineAfterYaml:!0}}),new k({description:"Empty line before header and after Yaml is removed with `Empty Line Between Yaml and Header=true`",before:g` --- key: value --- # Header Paragraph here... - `,after:b` + `,after:g` --- key: value --- # Header Paragraph here... - `,options:{bottom:!0,emptyLineAfterYaml:!1}})]}get optionBuilders(){return[new re({OptionsClass:qr,name:"Bottom",description:"Insert a blank line after headings",optionsKey:"bottom"}),new re({OptionsClass:qr,name:"Empty Line Between Yaml and Header",description:"Keep the empty line between the Yaml frontmatter and header",optionsKey:"emptyLineAfterYaml"})]}};jr=B([E.register],jr);var Io=class{constructor(){this.textToInsert=["aliases: ","tags: "]}},Kr=class extends E{get OptionsClass(){return Io}get name(){return"Insert YAML attributes"}get description(){return"Inserts the given YAML attributes into the YAML frontmatter. Put each attribute on a single line."}get type(){return"YAML"}apply(t,n){return t=yt(t),Me(t,r=>{let i=n.textToInsert.reverse(),o=tt(r.match(ve)[1]);for(let s of i){let a=s.split(":")[0];Object.prototype.hasOwnProperty.call(o,a)||(r=r.replace(/^---\n/,Be(`--- + `,options:{bottom:!0,emptyLineAfterYaml:!1}})]}get optionBuilders(){return[new ae({OptionsClass:ui,name:"Bottom",description:"Insert a blank line after headings",optionsKey:"bottom"}),new ae({OptionsClass:ui,name:"Empty Line Between Yaml and Header",description:"Keep the empty line between the Yaml frontmatter and header",optionsKey:"emptyLineAfterYaml"})]}};li=E([v.register],li);var Xo=class{constructor(){this.textToInsert=["aliases: ","tags: "]}},pi=class extends v{get OptionsClass(){return Xo}get name(){return"Insert YAML attributes"}get description(){return"Inserts the given YAML attributes into the YAML frontmatter. Put each attribute on a single line."}get type(){return"YAML"}apply(n,t){return n=xt(n),Oe(n,r=>{let i=t.textToInsert.reverse(),o=ot(r.match(Te)[1]);for(let s of i){let a=s.split(":")[0];Object.prototype.hasOwnProperty.call(o,a)||(r=r.replace(/^---\n/,ze(`--- ${s} -`)))}return r})}get exampleBuilders(){return[new A({description:"Insert static lines into YAML frontmatter. Text to insert: `aliases:\ntags: doc\nanimal: dog`",before:b` +`)))}return r})}get exampleBuilders(){return[new k({description:"Insert static lines into YAML frontmatter. Text to insert: `aliases:\ntags: doc\nanimal: dog`",before:g` --- animal: cat --- - `,after:b` + `,after:g` --- aliases: tags: doc animal: cat --- - `,options:{textToInsert:["aliases:","tags: doc","animal: dog"]}})]}get optionBuilders(){return[new Ne({OptionsClass:Io,name:"Text to insert",description:"Text to insert into the YAML frontmatter",optionsKey:"textToInsert"})]}};Kr=B([E.register],Kr);var Ea=class{},Vr=class extends E{get OptionsClass(){return Ea}get name(){return"Line Break at Document End"}get description(){return"Ensures that there is exactly one line break at the end of a document."}get type(){return"Spacing"}apply(t,n){return t=t.replace(/\n+$/g,""),t+=` -`,t}get exampleBuilders(){return[new A({description:"Appending a line break to the end of the document.",before:b` + `,options:{textToInsert:["aliases:","tags: doc","animal: dog"]}})]}get optionBuilders(){return[new Le({OptionsClass:Xo,name:"Text to insert",description:"Text to insert into the YAML frontmatter",optionsKey:"textToInsert"})]}};pi=E([v.register],pi);var nl=class{},ci=class extends v{get OptionsClass(){return nl}get name(){return"Line Break at Document End"}get description(){return"Ensures that there is exactly one line break at the end of a document."}get type(){return"Spacing"}apply(n,t){return n=n.replace(/\n+$/g,""),n+=` +`,n}get exampleBuilders(){return[new k({description:"Appending a line break to the end of the document.",before:g` Lorem ipsum dolor sit amet, consectetur adipiscing elit. - `,after:b` + `,after:g` Lorem ipsum dolor sit amet, consectetur adipiscing elit. ${""} - `}),new A({description:"Removing trailing line breaks to the end of the document, except one.",before:b` + `}),new k({description:"Removing trailing line breaks to the end of the document, except one.",before:g` Lorem ipsum dolor sit amet, consectetur adipiscing elit. ${""} ${""} ${""} - `,after:b` + `,after:g` Lorem ipsum dolor sit amet, consectetur adipiscing elit. ${""} - `})]}get optionBuilders(){return[]}};Vr=B([E.register],Vr);var La=class{},Wr=class extends E{get OptionsClass(){return La}get name(){return"Move Footnotes to the bottom"}get description(){return"Move all footnotes to the bottom of the document."}get type(){return"Footnote"}apply(t,n){return z([v.code,v.yaml],t,r=>nc(r))}get exampleBuilders(){return[new A({description:"Moving footnotes to the bottom",before:b` + `})]}get optionBuilders(){return[]}};ci=E([v.register],ci);var rl=class{},mi=class extends v{get OptionsClass(){return rl}get name(){return"Move Footnotes to the bottom"}get description(){return"Move all footnotes to the bottom of the document."}get type(){return"Footnote"}apply(n,t){return N([S.code,S.yaml],n,r=>Yc(r))}get exampleBuilders(){return[new k({description:"Moving footnotes to the bottom",before:g` Lorem ipsum, consectetur adipiscing elit. [^1] Donec dictum turpis quis ipsum pellentesque. ${""} [^1]: first footnote @@ -837,7 +982,7 @@ ${s} [^2]: second footnote ${""} Maecenas malesuada dignissim purus ac volutpat. - `,after:b` + `,after:g` Lorem ipsum, consectetur adipiscing elit. [^1] Donec dictum turpis quis ipsum pellentesque. ${""} Quisque lorem est, fringilla sed enim at, sollicitudin lacinia nisi.[^2] @@ -845,9 +990,39 @@ ${s} ${""} [^1]: first footnote [^2]: second footnote - `})]}get optionBuilders(){return[]}};Wr=B([E.register],Wr);var Gr=class{constructor(){this.tagArrayStyle="single-line";this.removeHashtagsFromTagsInBody=!1}},Ur=class extends E{get OptionsClass(){return Gr}get name(){return"Move Tags to Yaml"}get description(){return"Move all tags to Yaml frontmatter of the document."}get type(){return"YAML"}apply(t,n){return z([v.code,v.inlineCode,v.math],t,r=>{let i=r.match(fr);return i&&(r=yt(r),r=Me(r,o=>{o=o.replace(`--- -`,"").replace("---","");let s=Hi(bt(Te(o,Pt))),a=new Set;if(typeof s=="string")a.add(s),s=[s];else if(s!=null)for(let u of s)a.add(u);else s=[];for(let u of i){let p=u.trim().substring(1);a.has(p)||(a.add(p),s.push(p))}return`--- -${Oe(o,Pt,Je(s,n.tagArrayStyle))}---`}),n.removeHashtagsFromTagsInBody&&(r=r.replace(fr,o=>{let s=o.indexOf("#");return o.substring(0,s)+o.substring(s+1)}))),r})}get exampleBuilders(){return[new A({description:"Move tags from body to Yaml",before:b` + `})]}get optionBuilders(){return[]}};mi=E([v.register],mi);var Jo=class{constructor(){this.minimumNumberOfDollarSignsToBeAMathBlock=2}};E([v.noSettingControl()],Jo.prototype,"minimumNumberOfDollarSignsToBeAMathBlock",2);var fi=class extends v{get OptionsClass(){return Jo}get name(){return"Move Math Block Indicators to Their Own Line"}get description(){return"Move all starting and ending math block indicators to their own lines using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math."}get type(){return"Spacing"}apply(n,t){return N([S.code,S.inlineCode],n,r=>tm(r,t.minimumNumberOfDollarSignsToBeAMathBlock))}get exampleBuilders(){return[new k({description:"Moving math block indicator to its own line when `Number of Dollar Signs to Indicate a Math Block` = 2",before:g` + This is left alone: + $$ + \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} + $$ + The following is updated: + $$L = \\frac{1}{2} \\rho v^2 S C_L$$ + `,after:g` + This is left alone: + $$ + \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} + $$ + The following is updated: + $$ + L = \\frac{1}{2} \\rho v^2 S C_L + $$ + `}),new k({description:"Moving math block indicator to its own line when `Number of Dollar Signs to Indicate a Math Block` = 3 and opening indicator is on the same line as the start of the content",before:g` + $$$\\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} + $$$ + `,after:g` + $$$ + \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} + $$$ + `}),new k({description:"Moving math block indicator to its own line when `Number of Dollar Signs to Indicate a Math Block` = 2 and ending indicator is on the same line as the ending line of the content",before:g` + $$ + \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix}$$ + `,after:g` + $$ + \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} + $$ + `})]}get optionBuilders(){return[]}};fi=E([v.register],fi);var pr=class{constructor(){this.tagArrayStyle="single-line";this.howToHandleExistingTags="Nothing";this.tagsToIgnore=[]}};E([v.noSettingControl()],pr.prototype,"tagArrayStyle",2);var di=class extends v{get OptionsClass(){return pr}get name(){return"Move Tags to Yaml"}get description(){return"Move all tags to Yaml frontmatter of the document."}get type(){return"YAML"}apply(n,t){return N([S.code,S.inlineCode,S.math],n,r=>{let i=r.match(Gn);return i&&(r=xt(r),r=Oe(r,o=>{o=o.replace(`--- +`,"").replace("---","");let s=so(kt(Ce(o,Yt))),a=new Set;if(typeof s=="string")a.add(s),s=[s];else if(s!=null)for(let u of s)a.add(u);else s=[];for(let u of i){let p=u.trim().substring(1);!a.has(p)&&!t.tagsToIgnore.includes(p)&&(a.add(p),s.push(p))}return`--- +${Ae(o,Yt,nt(s,t.tagArrayStyle))}---`}),t.howToHandleExistingTags==="Remove hashtag"?r=r.replace(Gn,o=>{let s=o.indexOf("#"),a=o.substring(s+1);return t.tagsToIgnore.includes(a)?o:o.substring(0,s)+a}):t.howToHandleExistingTags==="Remove whole tag"&&(r=r.replace(Gn,""))),r})}get exampleBuilders(){return[new k({description:"Move tags from body to Yaml with `Tags to ignore = 'ignored-tag'`",before:g` Text has to do with #test and #markdown ${""} #test content here @@ -857,7 +1032,9 @@ ${Oe(o,Pt,Je(s,n.tagArrayStyle))}---`}),n.removeHashtagsFromTagsInBody&&(r=r.rep \`\`\` ${""} This inline code \`#ignored content\` - `,after:b` + ${""} + #ignored-tag is ignored since it is in the ignored list + `,after:g` --- tags: [test, markdown] --- @@ -870,27 +1047,43 @@ ${Oe(o,Pt,Je(s,n.tagArrayStyle))}---`}),n.removeHashtagsFromTagsInBody&&(r=r.rep \`\`\` ${""} This inline code \`#ignored content\` - `}),new A({description:"Move tags from body to Yaml with existing tags retains the already existing ones and only adds new ones",before:b` + ${""} + #ignored-tag is ignored since it is in the ignored list + `,options:{tagsToIgnore:["ignored-tag"]}}),new k({description:"Move tags from body to YAML with existing tags retains the already existing ones and only adds new ones",before:g` --- tags: [test, tag2] --- Text has to do with #test and #markdown - `,after:b` + `,after:g` --- tags: [test, tag2, markdown] --- Text has to do with #test and #markdown - `}),new A({description:"Move tags to Yaml frontmatter and then remove hashtags in body content tags `Remove the hashtag from tags in content body = true` ",before:b` + `}),new k({description:"Move tags to YAML frontmatter and then remove hashtags in body content tags when `Body tag operation = 'Remove hashtag'` and `Tags to ignore = 'yet-another-ignored-tag'`.",before:g` --- tags: [test, tag2] --- Text has to do with #test and #markdown - `,after:b` + ${""} + The tag at the end of this line stays as a tag since it is ignored #yet-another-ignored-tag + `,after:g` --- tags: [test, tag2, markdown] --- Text has to do with test and markdown - `,options:{removeHashtagsFromTagsInBody:!0}})]}get optionBuilders(){return[new ce({OptionsClass:Gr,name:"Yaml tags section style",description:"The style of the Yaml tags section",optionsKey:"tagArrayStyle",records:[{value:"multi-line",description:"```tags:\\n - tag1```"},{value:"single-line",description:"```tags: [tag1]```"},{value:"single string to single-line",description:"Tags will be formatted as a string if there is 1 or fewer elements like so ```tags: tag1```. If there is more than 1 element, it will be formatted like a single-line array."},{value:"single string to multi-line",description:"Aliases will be formatted as a string if there is 1 or fewer elements like so ```tags: tag1```. If there is more than 1 element, it will be formatted like a multi-line array."},{value:"single-line space delimited",description:"```tags: [tag1 tag2]```"},{value:"single string space delimited",description:"```tags: tag1 tag2```"},{value:"single string comma delimited",description:"```tags: tag1, tag2```"}]}),new re({OptionsClass:Gr,name:"Remove the hashtag from tags in content body",description:"Removes `#` from tags in content body after moving them to the Yaml frontmatter",optionsKey:"removeHashtagsFromTagsInBody"})]}};Ur=B([E.register],Ur);var _a=class{},Qr=class extends E{get OptionsClass(){return _a}get name(){return"No Bare URLs"}get description(){return"Encloses bare URLs with angle brackets except when enclosed in back ticks, square braces, or single or double quotes."}get type(){return"Content"}apply(t,n){return z([v.code,v.yaml,v.link,v.wikiLink,v.tag,v.image],t,r=>{let i=r.match(/(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s`\]'">]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s`\]'">]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s`\]'">]{2,}|www\.[a-zA-Z0-9]+\.[^\s`\]'">]{2,})/gi);if(!i)return r;let o=0,s=i.length;for(let a=0;a=r.length?void 0:r.charAt(p);if(c!=null&&(c==="`"||c==='"'||c==="'"||c==="[")&&f!=null&&(f==="`"||f==='"'||f==="'"||f==="]")){o=u+l.length;continue}if(c!=null&&c==="<"&&f!=null&&f===">"){let m=u-1;for(;m>0&&r.charAt(m-1)==="<";)m--;let d=p;for(;d";)d++;r=Re(r,m,d+1,"<"+l+">"),o=u+l.length;continue}r=Re(r,u,u+l.length,"<"+l+">"),o=u+l.length+2}return r})}get exampleBuilders(){return[new A({description:"Make sure that links are inside of angle brackets when not in single quotes('), double quotes(\"), or backticks(`)",before:b` + ${""} + The tag at the end of this line stays as a tag since it is ignored #yet-another-ignored-tag + `,options:{howToHandleExistingTags:"Remove hashtag",tagsToIgnore:["yet-another-ignored-tag"]}}),new k({description:"Move tags to YAML frontmatter and then remove body content tags when `Body tag operation = 'Remove whole tag'`.",before:g` + --- + tags: [test, tag2] + --- + This document will have #tags removed and spacing around tags is left alone except for the space prior to the hashtag #warning + `,after:g` + --- + tags: [test, tag2, tags, warning] + --- + This document will have removed and spacing around tags is left alone except for the space prior to the hashtag + `,options:{howToHandleExistingTags:"Remove whole tag"}})]}get optionBuilders(){return[new ke({OptionsClass:pr,name:"Body tag operation",description:"What to do with non-ignored tags in the body of the file once they have been moved to the frontmatter",optionsKey:"howToHandleExistingTags",records:[{value:"Nothing",description:"Leaves tags in the body of the file alone"},{value:"Remove hashtag",description:"Removes `#` from tags in content body after moving them to the YAML frontmatter"},{value:"Remove whole tag",description:"Removes the whole tag in content body after moving them to the YAML frontmatter. _Note that this removes the first space prior to the tag as well_"}]}),new Le({OptionsClass:pr,name:"Tags to ignore",description:"The tags that will not be moved to the tags array or removed from the body content if `Remove the hashtag from tags in content body` is enabled. Each tag should be on a new line and without the `#`. **Make sure not to include the hashtag in the tag name.**",optionsKey:"tagsToIgnore"})]}};di=E([v.register],di);var il=class{},hi=class extends v{get OptionsClass(){return il}get name(){return"No Bare URLs"}get description(){return"Encloses bare URLs with angle brackets except when enclosed in back ticks, square braces, or single or double quotes."}get type(){return"Content"}apply(n,t){return N([S.code,S.yaml,S.link,S.wikiLink,S.tag,S.image],n,r=>{let i=r.match(/(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s`\]'">]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s`\]'">]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s`\]'">]{2,}|www\.[a-zA-Z0-9]+\.[^\s`\]'">]{2,})/gi);if(!i)return r;let o=0,s=i.length;for(let a=0;a=r.length?void 0:r.charAt(p);if(c!=null&&(c==="`"||c==='"'||c==="'"||c==="[")&&m!=null&&(m==="`"||m==='"'||m==="'"||m==="]")){o=u+l.length;continue}if(c!=null&&c==="<"&&m!=null&&m===">"){let f=u-1;for(;f>0&&r.charAt(f-1)==="<";)f--;let d=p;for(;d";)d++;r=Ee(r,f,d+1,"<"+l+">"),o=u+l.length;continue}r=Ee(r,u,u+l.length,"<"+l+">"),o=u+l.length+2}return r})}get exampleBuilders(){return[new k({description:"Make sure that links are inside of angle brackets when not in single quotes('), double quotes(\"), or backticks(`)",before:g` https://github.com braces around url should stay the same: [https://github.com] backticks around url should stay the same: \`https://github.com\` @@ -900,7 +1093,7 @@ ${Oe(o,Pt,Je(s,n.tagArrayStyle))}---`}),n.removeHashtagsFromTagsInBody&&(r=r.rep links should stay the same: [](https://github.com) https://gitlab.com - `,after:b` + `,after:g` braces around url should stay the same: [https://github.com] backticks around url should stay the same: \`https://github.com\` @@ -910,25 +1103,25 @@ ${Oe(o,Pt,Je(s,n.tagArrayStyle))}---`}),n.removeHashtagsFromTagsInBody&&(r=r.rep links should stay the same: [](https://github.com) - `}),new A({description:"Angle brackets are added if the url is not the only text in the single quotes('), double quotes(\"), or backticks(`)",before:b` + `}),new k({description:"Angle brackets are added if the url is not the only text in the single quotes('), double quotes(\"), or backticks(`)",before:g` [https://github.com some text here] backticks around a url should stay the same, but only if the only contents of the backticks: \`https://github.com some text here\` single quotes around a url should stay the same, but only if the contents of the single quotes is the url: 'https://github.com some text here' double quotes around a url should stay the same, but only if the contents of the double quotes is the url: "https://github.com some text here" - `,after:b` + `,after:g` [ some text here] backticks around a url should stay the same, but only if the only contents of the backticks: \` some text here\` single quotes around a url should stay the same, but only if the contents of the single quotes is the url: ' some text here' double quotes around a url should stay the same, but only if the contents of the double quotes is the url: " some text here" - `}),new A({description:"Multiple angle brackets at the start and or end of a url will be reduced down to 1",before:b` + `}),new k({description:"Multiple angle brackets at the start and or end of a url will be reduced down to 1",before:g` < > <> - `,after:b` + `,after:g` - `})]}get optionBuilders(){return[]}};Qr=B([E.register],Qr);var Xr=class{constructor(){this.numberStyle="ascending";this.listEndStyle="."}},Zr=class extends E{get OptionsClass(){return Xr}get name(){return"Ordered List Style"}get description(){return"Makes sure that ordered lists follow the style specified."}get type(){return"Content"}apply(t,n){return z([v.code,v.yaml,v.tag],t,r=>fc(r,n.numberStyle,n.listEndStyle))}get exampleBuilders(){return[new A({description:"Ordered lists have list items set to ascending numerical order when Number Style is `ascending`.",before:b` + `})]}get optionBuilders(){return[]}};hi=E([v.register],hi);var yi=class{constructor(){this.numberStyle="ascending";this.listEndStyle="."}},gi=class extends v{get OptionsClass(){return yi}get name(){return"Ordered List Style"}get description(){return"Makes sure that ordered lists follow the style specified. Note that 2 spaces or 1 tab is considered to be an indentation level."}get type(){return"Content"}apply(n,t){return N([S.code,S.yaml,S.tag],n,r=>Jc(r,t.numberStyle,t.listEndStyle))}get exampleBuilders(){return[new k({description:"Ordered lists have list items set to ascending numerical order when Number Style is `ascending`.",before:g` 1. Item 1 2. Item 2 4. Item 3 @@ -938,7 +1131,7 @@ ${Oe(o,Pt,Je(s,n.tagArrayStyle))}---`}),n.removeHashtagsFromTagsInBody&&(r=r.rep 1. Item 1 1. Item 2 1. Item 3 - `,after:b` + `,after:g` 1. Item 1 2. Item 2 3. Item 3 @@ -948,123 +1141,175 @@ ${Oe(o,Pt,Je(s,n.tagArrayStyle))}---`}),n.removeHashtagsFromTagsInBody&&(r=r.rep 1. Item 1 2. Item 2 3. Item 3 - `}),new A({description:"Nested ordered lists have list items set to ascending numerical order when Number Style is `ascending`.",before:b` + `}),new k({description:"Nested ordered lists have list items set to ascending numerical order when Number Style is `ascending`.",before:g` 1. Item 1 2. Item 2 1. Subitem 1 5. Subitem 2 2. Subitem 3 4. Item 3 - `,after:b` + `,after:g` 1. Item 1 2. Item 2 1. Subitem 1 2. Subitem 2 3. Subitem 3 3. Item 3 - `}),new A({description:"Ordered list in blockquote has list items set to '1.' when Number Style is `lazy`.",before:b` + `}),new k({description:"Ordered list in blockquote has list items set to '1.' when Number Style is `lazy`.",before:g` > 1. Item 1 > 4. Item 2 > > 1. Subitem 1 > > 5. Subitem 2 > > 2. Subitem 3 - `,after:b` + `,after:g` > 1. Item 1 > 1. Item 2 > > 1. Subitem 1 > > 1. Subitem 2 > > 1. Subitem 3 - `,options:{numberStyle:"lazy"}}),new A({description:"Ordered list in blockquote has list items set to ascending numerical order when Number Style is `ascending`.",before:b` + `,options:{numberStyle:"lazy"}}),new k({description:"Ordered list in blockquote has list items set to ascending numerical order when Number Style is `ascending`.",before:g` > 1. Item 1 > 4. Item 2 > > 1. Subitem 1 > > 5. Subitem 2 > > 2. Subitem 3 - `,after:b` + `,after:g` > 1. Item 1 > 2. Item 2 > > 1. Subitem 1 > > 2. Subitem 2 > > 3. Subitem 3 - `}),new A({description:"Nested ordered list has list items set to '1)' when Number Style is `lazy` and Ordered List Indicator End Style is `)`.",before:b` + `}),new k({description:"Nested ordered list has list items set to '1)' when Number Style is `lazy` and Ordered List Indicator End Style is `)`.",before:g` 1. Item 1 2. Item 2 1. Subitem 1 5. Subitem 2 2. Subitem 3 4. Item 3 - `,after:b` + `,after:g` 1) Item 1 1) Item 2 1) Subitem 1 1) Subitem 2 1) Subitem 3 1) Item 3 - `,options:{listEndStyle:")",numberStyle:"lazy"}})]}get optionBuilders(){return[new ce({OptionsClass:Xr,name:"Number Style",description:"The number style used in ordered list indicators",optionsKey:"numberStyle",records:[{value:"ascending",description:"Makes sure ordered list items are ascending (i.e. 1, 2, 3, etc.)"},{value:"lazy",description:"Makes sure ordered list item indicators all are the number 1"}]}),new ce({OptionsClass:Xr,name:"Ordered List Indicator End Style",description:"The ending character of an ordered list indicator",optionsKey:"listEndStyle",records:[{value:".",description:"Makes sure ordered list items indicators end in '.' (i.e `1.`)"},{value:")",description:"Makes sure ordered list item indicators end in ')' (i.e. `1)`)"}]})]}};Zr=B([E.register],Zr);var Ia=class{},Jr=class extends E{get OptionsClass(){return Ia}get name(){return"Paragraph blank lines"}get description(){return"All paragraphs should have exactly one blank line both before and after."}get type(){return"Spacing"}apply(t,n){return z([v.obsidianMultiLineComments,v.yaml],t,ic)}get exampleBuilders(){return[new A({description:"Paragraphs should be surrounded by blank lines",before:b` + `,options:{listEndStyle:")",numberStyle:"lazy"}})]}get optionBuilders(){return[new ke({OptionsClass:yi,name:"Number Style",description:"The number style used in ordered list indicators",optionsKey:"numberStyle",records:[{value:"ascending",description:"Makes sure ordered list items are ascending (i.e. 1, 2, 3, etc.)"},{value:"lazy",description:"Makes sure ordered list item indicators all are the number 1"}]}),new ke({OptionsClass:yi,name:"Ordered List Indicator End Style",description:"The ending character of an ordered list indicator",optionsKey:"listEndStyle",records:[{value:".",description:"Makes sure ordered list items indicators end in '.' (i.e `1.`)"},{value:")",description:"Makes sure ordered list item indicators end in ')' (i.e. `1)`)"}]})]}};gi=E([v.register],gi);var ol=class{},bi=class extends v{get OptionsClass(){return ol}get name(){return"Paragraph blank lines"}get description(){return"All paragraphs should have exactly one blank line both before and after."}get type(){return"Spacing"}apply(n,t){return N([S.obsidianMultiLineComments,S.yaml],n,jc)}get exampleBuilders(){return[new k({description:"Paragraphs should be surrounded by blank lines",before:g` # H1 Newlines are inserted. A paragraph is a line that starts with a letter. - `,after:b` + `,after:g` # H1 ${""} Newlines are inserted. ${""} A paragraph is a line that starts with a letter. - `})]}get optionBuilders(){return[]}};Jr=B([E.register],Jr);var Fa=class{},ei=class extends E{get OptionsClass(){return Fa}get name(){return"Proper Ellipsis"}get description(){return"Replaces three consecutive dots with an ellipsis."}get type(){return"Content"}apply(t,n){return z([v.code,v.yaml,v.link,v.wikiLink,v.tag],t,r=>r.replaceAll("...","\u2026"))}get exampleBuilders(){return[new A({description:"Replacing three consecutive dots with an ellipsis.",before:b` + `})]}get optionBuilders(){return[]}};bi=E([v.register],bi);var es=class{};E([v.noSettingControl()],es.prototype,"lineContent",2);var Tn=class extends v{get OptionsClass(){return es}get name(){return"Prevent Double Checklist Indicator on Paste"}get description(){return"Removes starting checklist indicator from the text to paste if the line the cursor is on in the file has a checklist indicator"}get type(){return"Paste"}apply(n,t){let r=new RegExp(`^${Zn}- \\[[ x]] `),i=/^\s*- \[[ x]] /,o=r.test(t.lineContent),s=i.test(n);return!o||!s?n:n.replace(i,"")}get exampleBuilders(){return[new k({description:"Line being pasted is left alone when current line has no checklist indicator in it: `Regular text here`",before:g` + - [ ] Checklist item being pasted + `,after:g` + - [ ] Checklist item being pasted + `,options:{lineContent:"Regular text here"}}),new k({description:"Line being pasted into a blockquote without a checklist indicator is left alone when it lacks a checklist indicator: `> > `",before:g` + - [ ] Checklist item contents here + More content here + `,after:g` + - [ ] Checklist item contents here + More content here + `,options:{lineContent:"> > "}}),new k({description:"Line being pasted into a blockquote with a checklist indicator is has its checklist indicator removed when current line is: `> - [x] `",before:g` + - [ ] Checklist item contents here + More content here + `,after:g` + Checklist item contents here + More content here + `,options:{lineContent:"> - [x] "}}),new k({description:"Line being pasted with a checklist indicator is has its checklist indicator removed when current line is: `- [ ] `",before:g` + - [x] Checklist item 1 + - [ ] Checklist item 2 + `,after:g` + Checklist item 1 + - [ ] Checklist item 2 + `,options:{lineContent:"- [ ] "}})]}get optionBuilders(){return[]}};Tn=E([v.register],Tn);var ts=class{};E([v.noSettingControl()],ts.prototype,"lineContent",2);var On=class extends v{get OptionsClass(){return ts}get name(){return"Prevent Double List Item Indicator on Paste"}get description(){return"Removes starting list indicator from the text to paste if the line the cursor is on in the file has a list indicator"}get type(){return"Paste"}apply(n,t){let r=new RegExp(`^${Zn}[*+-] `),i=/^\s*[*+-] /,o=r.test(t.lineContent),s=i.test(n);return!o||!s?n:n.replace(i,"")}get exampleBuilders(){return[new k({description:"Line being pasted is left alone when current line has no list indicator in it: `Regular text here`",before:g` + - List item being pasted + `,after:g` + - List item being pasted + `,options:{lineContent:"Regular text here"}}),new k({description:"Line being pasted into a blockquote without a list indicator is left alone when it lacks a list indicator: `> > `",before:g` + * List item contents here + More content here + `,after:g` + * List item contents here + More content here + `,options:{lineContent:"> > "}}),new k({description:"Line being pasted into a blockquote with a list indicator is has its list indicator removed when current line is: `> * `",before:g` + + List item contents here + More content here + `,after:g` + List item contents here + More content here + `,options:{lineContent:"> * "}}),new k({description:"Line being pasted with a list indicator is has its list indicator removed when current line is: `+ `",before:g` + - List item 1 + - List item 2 + `,after:g` + List item 1 + - List item 2 + `,options:{lineContent:"+ "}})]}get optionBuilders(){return[]}};On=E([v.register],On);var sl=class{},An=class extends v{get OptionsClass(){return sl}get name(){return"Proper Ellipsis on Paste"}get description(){return"Replaces three consecutive dots with an ellipsis even if they have a space between them in the text to paste"}get type(){return"Paste"}apply(n,t){return n.replaceAll(oo,"\u2026")}get exampleBuilders(){return[new k({description:"Replacing three consecutive dots with an ellipsis even if spaces are present",before:g` Lorem (...) Impsum. - `,after:b` + Lorem (. ..) Impsum. + Lorem (. . .) Impsum. + `,after:g` Lorem (…) Impsum. - `})]}get optionBuilders(){return[]}};ei=B([E.register],ei);var Ba=class{},ti=class extends E{get OptionsClass(){return Ba}get name(){return"Re-Index Footnotes"}get description(){return"Re-indexes footnote keys and footnote, based on the order of occurrence (NOTE: This rule deliberately does *not* preserve the relation between key and footnote, to be able to re-index duplicate keys.)"}get type(){return"Footnote"}apply(t,n){return z([v.code,v.yaml,v.link,v.wikiLink,v.tag],t,r=>{let i=0;return r=r.replace(/^\[\^\w+\]: /gm,function(){return i++,"[^"+String(i)+"]: "}),i=0,r=r.replace(/(?!^)\[\^\w+\]/gm,function(){return i++,"[^"+String(i)+"]"}),r})}get exampleBuilders(){return[new A({description:"Re-indexing footnotes after having deleted previous footnotes",before:b` + Lorem (…) Impsum. + Lorem (…) Impsum. + `})]}get optionBuilders(){return[]}};An=E([v.register],An);var al=class{},wi=class extends v{get OptionsClass(){return al}get name(){return"Proper Ellipsis"}get description(){return"Replaces three consecutive dots with an ellipsis."}get type(){return"Content"}apply(n,t){return N([S.code,S.yaml,S.link,S.wikiLink,S.tag],n,r=>r.replaceAll(oo,"\u2026"))}get exampleBuilders(){return[new k({description:"Replacing three consecutive dots with an ellipsis.",before:g` + Lorem (...) Impsum. + `,after:g` + Lorem (…) Impsum. + `})]}get optionBuilders(){return[]}};wi=E([v.register],wi);var ll=class{},xi=class extends v{get OptionsClass(){return ll}get name(){return"Re-Index Footnotes"}get description(){return"Re-indexes footnote keys and footnote, based on the order of occurrence (NOTE: This rule deliberately does *not* preserve the relation between key and footnote, to be able to re-index duplicate keys.)"}get type(){return"Footnote"}apply(n,t){return N([S.code,S.yaml,S.link,S.wikiLink,S.tag],n,r=>{let i=0;return r=r.replace(/^\[\^\w+\]: /gm,function(){return i++,"[^"+String(i)+"]: "}),i=0,r=r.replace(/(?!^)\[\^\w+\]/gm,function(){return i++,"[^"+String(i)+"]"}),r})}get exampleBuilders(){return[new k({description:"Re-indexing footnotes after having deleted previous footnotes",before:g` Lorem ipsum at aliquet felis.[^3] Donec dictum turpis quis pellentesque,[^5] et iaculis tortor condimentum. ${""} [^3]: first footnote [^5]: second footnote - `,after:b` + `,after:g` Lorem ipsum at aliquet felis.[^1] Donec dictum turpis quis pellentesque,[^2] et iaculis tortor condimentum. ${""} [^1]: first footnote [^2]: second footnote - `}),new A({description:"Re-indexing footnotes after inserting a footnote between",before:b` + `}),new k({description:"Re-indexing footnotes after inserting a footnote between",before:g` Lorem ipsum dolor sit amet, consectetur adipiscing elit.[^1] Aenean at aliquet felis. Donec dictum turpis quis ipsum pellentesque, et iaculis tortor condimentum.[^1a] Vestibulum nec blandit felis, vulputate finibus purus.[^2] Praesent quis iaculis diam. ${""} [^1]: first footnote [^1a]: third footnote, inserted later [^2]: second footnotes - `,after:b` + `,after:g` Lorem ipsum dolor sit amet, consectetur adipiscing elit.[^1] Aenean at aliquet felis. Donec dictum turpis quis ipsum pellentesque, et iaculis tortor condimentum.[^2] Vestibulum nec blandit felis, vulputate finibus purus.[^3] Praesent quis iaculis diam. ${""} [^1]: first footnote [^2]: third footnote, inserted later [^3]: second footnotes - `}),new A({description:"Re-indexing duplicate footnote keys",before:b` + `}),new k({description:"Re-indexing duplicate footnote keys",before:g` Lorem ipsum at aliquet felis.[^1] Donec dictum turpis quis pellentesque,[^1] et iaculis tortor condimentum. ${""} [^1]: first footnote [^1]: second footnote - `,after:b` + `,after:g` Lorem ipsum at aliquet felis.[^1] Donec dictum turpis quis pellentesque,[^2] et iaculis tortor condimentum. ${""} [^1]: first footnote [^2]: second footnote - `})]}get optionBuilders(){return[]}};ti=B([E.register],ti);var Ma=class{},ni=class extends E{get OptionsClass(){return Ma}get name(){return"Remove Consecutive List Markers"}get description(){return"Removes consecutive list markers. Useful when copy-pasting list items."}get type(){return"Content"}apply(t,n){return z([v.code,v.yaml,v.link,v.wikiLink,v.tag],t,r=>r.replace(/^([ |\t]*)- - \b/gm,"$1- "))}get exampleBuilders(){return[new A({description:"Removing consecutive list markers.",before:b` + `})]}get optionBuilders(){return[]}};xi=E([v.register],xi);var ul=class{},ki=class extends v{get OptionsClass(){return ul}get name(){return"Remove Consecutive List Markers"}get description(){return"Removes consecutive list markers. Useful when copy-pasting list items."}get type(){return"Content"}apply(n,t){return N([S.code,S.yaml,S.link,S.wikiLink,S.tag],n,r=>r.replace(/^([ |\t]*)- - \b/gm,"$1- "))}get exampleBuilders(){return[new k({description:"Removing consecutive list markers.",before:g` - item 1 - - copypasted item A - item 2 - indented item - - copypasted item B - `,after:b` + `,after:g` - item 1 - copypasted item A - item 2 - indented item - copypasted item B - `})]}get optionBuilders(){return[]}};ni=B([E.register],ni);var bn=class extends E{get OptionsClass(){return bn}get name(){return"Remove Empty Lines Between List Markers and Checklists"}get description(){return"There should not be any empty lines between list markers and checklists."}get type(){return"Spacing"}apply(t,n){return z([v.code,v.yaml,v.link,v.wikiLink,v.tag,v.thematicBreak],t,r=>{let i=function(p,c,f){let m=new RegExp(`^${c} -{2,}${c}$`,"gm"),d,h=p;do d=h.match(m),h=h.replaceAll(m,f);while(d);return h};return r=i(r,"(( |\\t)*- \\[( |x)\\]( |\\t)+.+)",`$1 + `})]}get optionBuilders(){return[]}};ki=E([v.register],ki);var Cn=class extends v{get OptionsClass(){return Cn}get name(){return"Remove Empty Lines Between List Markers and Checklists"}get description(){return"There should not be any empty lines between list markers and checklists."}get type(){return"Spacing"}apply(n,t){return N([S.code,S.yaml,S.link,S.wikiLink,S.tag,S.thematicBreak],n,r=>{let i=function(p,c,m){let f=new RegExp(`^${c} +{2,}${c}$`,"gm"),d,h=p;do d=h.match(f),h=h.replaceAll(f,m);while(d);return h};return r=i(r,"(( |\\t)*- \\[( |x)\\]( |\\t)+.+)",`$1 $5`),r=i(r,"(( |\\t)*\\d+\\.( |\\t)+.+)",`$1 $4`),r=i(r,"(( |\\t)*\\+( |\\t)+.+)",`$1 $4`),r=i(r,"(( |\\t)*-(?! \\[( |x)\\])( |\\t)+.+)",`$1 $5`),i(r,"(( |\\t)*\\*( |\\t)+.+)",`$1 -$4`)})}get exampleBuilders(){return[new A({description:"",before:b` +$4`)})}get exampleBuilders(){return[new k({description:"",before:g` 1. Item 1 ${""} 2. Item 2 @@ -1092,7 +1337,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` \t* Subitem 1 ${""} * Item 2 - `,after:b` + `,after:g` 1. Item 1 2. Item 2 ${""} @@ -1111,7 +1356,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` * Item 1 \t* Subitem 1 * Item 2 - `})]}get optionBuilders(){return[]}};bn=B([E.register],bn);var Ra=class{},ri=class extends E{get OptionsClass(){return Ra}get name(){return"Remove Empty List Markers"}get description(){return"Removes empty list markers, i.e. list items without content."}get type(){return"Content"}apply(t,n){return z([v.code,v.yaml,v.link,v.wikiLink,v.tag],t,r=>{let i=/^\s*(>\s*)*(-|\*|\+|\d+[.)]|- (\[( |x)\]))\s*?$/gm;return r=r.replace(new RegExp(i.source+"\\n","gm"),""),r=r.replace(new RegExp("\\n"+i.source,"gm"),""),r.replace(i,"")})}get exampleBuilders(){return[new A({description:"Removes empty list markers.",before:b` + `})]}get optionBuilders(){return[]}};Cn=E([v.register],Cn);var pl=class{},vi=class extends v{get OptionsClass(){return pl}get name(){return"Remove Empty List Markers"}get description(){return"Removes empty list markers, i.e. list items without content."}get type(){return"Content"}apply(n,t){return N([S.code,S.yaml,S.link,S.wikiLink,S.tag],n,r=>{let i=new RegExp(`^${Zn}(-|\\*|\\+|\\d+[.)]|- (\\[( |x)\\]))\\s*?$`,"gm");return r=r.replace(new RegExp(i.source+"\\n","gm"),""),r=r.replace(new RegExp("\\n"+i.source,"gm"),""),r.replace(i,"")})}get exampleBuilders(){return[new k({description:"Removes empty list markers.",before:g` - item 1 - - item 2 @@ -1123,7 +1368,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` + list 3 item 1 + + list 3 item 2 - `,after:b` + `,after:g` - item 1 - item 2 ${""} @@ -1132,7 +1377,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` ${""} + list 3 item 1 + list 3 item 2 - `}),new A({description:"Removes empty ordered list markers.",before:b` + `}),new k({description:"Removes empty ordered list markers.",before:g` 1. item 1 2. 3. item 2 @@ -1142,7 +1387,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` 3. ${""} ${""} _Note that this rule does not make sure that the ordered list is sequential after removal_ - `,after:b` + `,after:g` 1. item 1 3. item 2 ${""} @@ -1150,19 +1395,19 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` 2. list 2 item 2 ${""} _Note that this rule does not make sure that the ordered list is sequential after removal_ - `}),new A({description:"Removes empty checklist markers.",before:b` + `}),new k({description:"Removes empty checklist markers.",before:g` - [ ] item 1 - [x] - [ ] item 2 - [ ] ${""} ${""} _Note that this will affect checked and uncheck checked list items_ - `,after:b` + `,after:g` - [ ] item 1 - [ ] item 2 ${""} _Note that this will affect checked and uncheck checked list items_ - `}),new A({description:"Removes empty list, checklist, and ordered list markers in callouts/blockquotes",before:b` + `}),new k({description:"Removes empty list, checklist, and ordered list markers in callouts/blockquotes",before:g` > Checklist in blockquote > - [ ] item 1 > - [x] @@ -1192,7 +1437,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` > + item 1 > + > + item 2 - `,after:b` + `,after:g` > Checklist in blockquote > - [ ] item 1 > - [ ] item 2 @@ -1215,11 +1460,36 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` > > + item 1 > + item 2 - `})]}get optionBuilders(){return[]}};ri=B([E.register],ri);var Da=class{},ii=class extends E{get OptionsClass(){return Da}get name(){return"Remove Hyphenated Line Breaks"}get description(){return"Removes hyphenated line breaks. Useful when pasting text from textbooks."}get type(){return"Content"}apply(t,n){return z([v.code,v.yaml,v.link,v.wikiLink,v.tag],t,r=>r.replace(/\b[-‐] \b/g,""))}get exampleBuilders(){return[new A({description:"Removing hyphenated line breaks.",before:b` + `})]}get optionBuilders(){return[]}};vi=E([v.register],vi);var cl=class{},Si=class extends v{get OptionsClass(){return cl}get name(){return"Remove Hyphenated Line Breaks"}get description(){return"Removes hyphenated line breaks. Useful when pasting text from textbooks."}get type(){return"Content"}apply(n,t){return N([S.code,S.yaml,S.link,S.wikiLink,S.tag],n,r=>r.replace(/\b[-‐] \b/g,""))}get exampleBuilders(){return[new k({description:"Removing hyphenated line breaks.",before:g` This text has a linebr‐ eak. - `,after:b` + `,after:g` This text has a linebreak. - `})]}get optionBuilders(){return[]}};ii=B([E.register],ii);var Pa=class{},oi=class extends E{get OptionsClass(){return Pa}get name(){return"Remove link spacing"}get description(){return"Removes spacing around link text."}get type(){return"Spacing"}apply(t,n){return t=oc(t),ru(t)}get exampleBuilders(){return[new A({description:"Space in regular markdown link text",before:b` + `})]}get optionBuilders(){return[]}};Si=E([v.register],Si);var ml=class{},En=class extends v{get OptionsClass(){return ml}get name(){return"Remove Hyphens on Paste"}get description(){return"Removes hyphens from the text to paste"}get type(){return"Paste"}apply(n,t){return n.replace(/(\S)[-‐]\s+\n?(?=\w)/g,"$1")}get exampleBuilders(){return[new k({description:"Remove hyphen in content to paste",before:g` + Text that was cool but hyper- + tension made it uncool. + `,after:g` + Text that was cool but hypertension made it uncool. + `})]}get optionBuilders(){return[]}};En=E([v.register],En);var fl=class{},Ln=class extends v{get OptionsClass(){return fl}get name(){return"Remove Leading or Trailing Whitespace on Paste"}get description(){return"Removes any leading non-tab whitespace and all trailing whitespace for the text to paste"}get type(){return"Paste"}apply(n,t){return n.replace(/^[\n ]+|\s+$/g,"")}get exampleBuilders(){return[new k({description:"Removes leading spaces and newline characters",before:g` + ${""} + ${""} + This text was really indented + ${""} + `,after:g` + This text was really indented + `}),new k({description:"Leaves leading tabs alone",before:g` + ${""} + ${""} + \t\tThis text is really indented + ${""} + `,after:" This text is really indented"})]}get optionBuilders(){return[]}};Ln=E([v.register],Ln);var dl=class{},_n=class extends v{get OptionsClass(){return dl}get name(){return"Remove Leftover Footnotes from Quote on Paste"}get description(){return"Removes any leftover footnote references for the text to paste"}get type(){return"Paste"}apply(n,t){return n.replace(/(\D)[.,]\d+/g,"$1")}get exampleBuilders(){return[new k({description:"Footnote reference removed",before:g` + He was sure that he would get off without doing any time, but the cops had other plans.50 + ${""} + _Note that the format for footnote references to move is a dot or comma followed by any number of digits_ + `,after:g` + He was sure that he would get off without doing any time, but the cops had other plans + ${""} + _Note that the format for footnote references to move is a dot or comma followed by any number of digits_ + `})]}get optionBuilders(){return[]}};_n=E([v.register],_n);var hl=class{},Ti=class extends v{get OptionsClass(){return hl}get name(){return"Remove link spacing"}get description(){return"Removes spacing around link text."}get type(){return"Spacing"}apply(n,t){return n=Vc(n),Iu(n)}get exampleBuilders(){return[new k({description:"Space in regular markdown link text",before:g` [ here is link text1 ](link_here) [ here is link text2](link_here) [here is link text3 ](link_here) @@ -1228,7 +1498,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` [](link_here) **Note that image markdown syntax does not get affected even if it is transclusion:** ![\there is link text6 ](link_here) - `,after:b` + `,after:g` [here is link text1](link_here) [here is link text2](link_here) [here is link text3](link_here) @@ -1237,7 +1507,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` [](link_here) **Note that image markdown syntax does not get affected even if it is transclusion:** ![\there is link text6 ](link_here) - `}),new A({description:"Space in wiki link text",before:b` + `}),new k({description:"Space in wiki link text",before:g` [[link_here| here is link text1 ]] [[link_here|here is link text2 ]] [[link_here| here is link text3]] @@ -1245,7 +1515,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` [[link_here|\there is link text5\t]] ![[link_here|\there is link text6\t]] [[link_here]] - `,after:b` + `,after:g` [[link_here|here is link text1]] [[link_here|here is link text2]] [[link_here|here is link text3]] @@ -1253,11 +1523,32 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` [[link_here|here is link text5]] ![[link_here|here is link text6]] [[link_here]] - `})]}get optionBuilders(){return[]}};oi=B([E.register],oi);var $a=class{},si=class extends E{get OptionsClass(){return $a}get name(){return"Remove Multiple Spaces"}get description(){return"Removes two or more consecutive spaces. Ignores spaces at the beginning and ending of the line. "}get type(){return"Content"}apply(t,n){return z([v.table,v.code,v.yaml,v.link,v.wikiLink,v.tag],t,r=>r.replace(/(?!^>)([^\s])( ){2,}([^\s])/gm,"$1 $3"))}get exampleBuilders(){return[new A({description:"Removing double and triple space.",before:b` + `})]}get optionBuilders(){return[]}};Ti=E([v.register],Ti);var gl=class{},Bn=class extends v{get OptionsClass(){return gl}get name(){return"Remove Multiple Blank Lines on Paste"}get description(){return"Condenses multiple blank lines down into one blank line for the text to paste"}get type(){return"Paste"}apply(n,t){return n.replace(/\n{3,}/g,` + +`)}get exampleBuilders(){return[new k({description:"Multiple blanks lines condensed down to one",before:g` + Here is the first line. + ${""} + ${""} + ${""} + ${""} + Here is some more text. + `,after:g` + Here is the first line. + ${""} + Here is some more text. + `}),new k({description:"Text with only one blank line in a row is left alone",before:g` + First line. + ${""} + Last line. + `,after:g` + First line. + ${""} + Last line. + `})]}get optionBuilders(){return[]}};Bn=E([v.register],Bn);var yl=class{},Oi=class extends v{get OptionsClass(){return yl}get name(){return"Remove Multiple Spaces"}get description(){return"Removes two or more consecutive spaces. Ignores spaces at the beginning and ending of the line. "}get type(){return"Content"}apply(n,t){return N([S.table,S.code,S.yaml,S.link,S.wikiLink,S.tag],n,r=>r.replace(/(?!^>)([^\s])( ){2,}([^\s])/gm,"$1 $3"))}get exampleBuilders(){return[new k({description:"Removing double and triple space.",before:g` Lorem ipsum dolor sit amet. - `,after:b` + `,after:g` Lorem ipsum dolor sit amet. - `})]}get optionBuilders(){return[]}};si=B([E.register],si);var Na=class{},ai=class extends E{get OptionsClass(){return Na}get name(){return"Remove Space around Fullwidth Characters"}get description(){return"Ensures that fullwidth characters are not followed by whitespace (either single spaces or a tab). Note that this may causes issues with markdown format in some cases."}get type(){return"Spacing"}apply(t,n){let r=/([ \t])+([\u2013\u2014\u2026\u3001\u3002\u300a\u300d-\u300f\u3014\u3015\u3008-\u3011\uff00-\uffff])/g,i=/([\u2013\u2014\u2026\u3001\u3002\u300a\u300d-\u300f\u3014\u3015\u3008-\u3011\uff00-\uffff])([ \t])+/g,o=function(a){return a.replace(r,"$2").replace(i,"$1")},s=z([v.code,v.yaml,v.link,v.wikiLink,v.tag,v.list],t,o);return s=lc(s,o),s}get exampleBuilders(){return[new A({description:"Remove Spaces and Tabs around Fullwidth Characters",before:b` + `})]}get optionBuilders(){return[]}};Oi=E([v.register],Oi);var bl=class{},Ai=class extends v{get OptionsClass(){return bl}get name(){return"Remove Space around Fullwidth Characters"}get description(){return"Ensures that fullwidth characters are not followed by whitespace (either single spaces or a tab). Note that this may causes issues with markdown format in some cases."}get type(){return"Spacing"}apply(n,t){let r=/([ \t])+([\u2013\u2014\u2026\u3001\u3002\u300a\u300d-\u300f\u3014\u3015\u3008-\u3011\uff00-\uffff])/g,i=/([\u2013\u2014\u2026\u3001\u3002\u300a\u300d-\u300f\u3014\u3015\u3008-\u3011\uff00-\uffff])([ \t])+/g,o=function(a){return a.replace(r,"$2").replace(i,"$1")},s=N([S.code,S.yaml,S.link,S.wikiLink,S.tag,S.list],n,o);return s=Uc(s,o),s}get exampleBuilders(){return[new k({description:"Remove Spaces and Tabs around Fullwidth Characters",before:g` Full list of affected characters: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,.:;!?"'`^~ ̄_&@#%+-*=<>()[]{}⦅⦆|¦/\¬$£¢₩¥。、「」『』〔〕【】—…–《》〈〉 This is a fullwidth period\t 。 with text after it. This is a fullwidth comma\t, with text after it. @@ -1266,7 +1557,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` This is a fullwidth colon : with text after it. This is a fullwidth semicolon ; with text after it. Removes space at start of line - `,after:b` + `,after:g` Full list of affected characters:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,.:;!?"'`^~ ̄_&@#%+-*=<>()[]{}⦅⦆|¦/\¬$£¢₩¥。、「」『』〔〕【】—…–《》〈〉 This is a fullwidth period。with text after it. This is a fullwidth comma,with text after it. @@ -1275,7 +1566,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` This is a fullwidth colon:with text after it. This is a fullwidth semicolon;with text after it. Removes space at start of line - `}),new A({description:"Fullwidth Characters in List Do not Affect List Markdown Syntax",before:b` + `}),new k({description:"Fullwidth Characters in List Do not Affect List Markdown Syntax",before:g` # List indicators should not have the space after them removed if they are followed by a fullwidth character ${""} - [ contents here] @@ -1297,7 +1588,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` > > - \t[ more contents here] more text here > > + \t[ another item here] > > * [ one last item here] - `,after:b` + `,after:g` # List indicators should not have the space after them removed if they are followed by a fullwidth character ${""} - [contents here] @@ -1319,7 +1610,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` > > - [more contents here]more text here > > + [another item here] > > * [one last item here] - `})]}get optionBuilders(){return[]}};ai=B([E.register],ai);var Fo=class{constructor(){this.yamlKeysToRemove=[]}},li=class extends E{get OptionsClass(){return Fo}get name(){return"Remove YAML Keys"}get description(){return"Removes the YAML keys specified"}get type(){return"YAML"}apply(t,n){let r=n.yamlKeysToRemove,i=t.match(ve);if(!i||r.length===0)return t;let o=i[1];for(let s of r){let a=s.trim();a.endsWith(":")&&(a=a.substring(0,a.length-1)),o=tn(o,a)}return t.replace(i[1],o)}get exampleBuilders(){return[new A({description:'Removes the values specified in `YAML Keys to Remove` = "status:\nkeywords\ndate"',before:b` + `})]}get optionBuilders(){return[]}};Ai=E([v.register],Ai);var ns=class{constructor(){this.yamlKeysToRemove=[]}},Ci=class extends v{get OptionsClass(){return ns}get name(){return"Remove YAML Keys"}get description(){return"Removes the YAML keys specified"}get type(){return"YAML"}apply(n,t){let r=t.yamlKeysToRemove,i=n.match(Te);if(!i||r.length===0)return n;let o=i[1];for(let s of r){let a=s.trim();a.endsWith(":")&&(a=a.substring(0,a.length-1)),o=sn(o,a)}return n.replace(i[1],o)}get exampleBuilders(){return[new k({description:'Removes the values specified in `YAML Keys to Remove` = "status:\nkeywords\ndate"',before:g` --- language: Typescript type: programming @@ -1334,7 +1625,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` # Header Context ${""} Text - `,after:b` + `,after:g` --- language: Typescript type: programming @@ -1344,37 +1635,37 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` # Header Context ${""} Text - `,options:{yamlKeysToRemove:["status:","keywords","date"]}})]}get optionBuilders(){return[new Ne({OptionsClass:Fo,name:"YAML Keys to Remove",description:"The yaml keys to remove from the yaml frontmatter with or without colons",optionsKey:"yamlKeysToRemove"})]}};li=B([E.register],li);var za=class{},ui=class extends E{get OptionsClass(){return za}get name(){return"Space after list markers"}get description(){return"There should be a single space after list markers and checkboxes."}get type(){return"Spacing"}apply(t,n){return z([v.code,v.yaml,v.link,v.wikiLink,v.tag],t,r=>(r=r.replace(/^(\s*\d+\.|\s*[-+*])[^\S\r\n]+/gm,"$1 "),r.replace(/^(\s*\d+\.|\s*[-+*]\s+\[[ xX]\])[^\S\r\n]+/gm,"$1 ")))}get exampleBuilders(){return[new A({description:"",before:b` + `,options:{yamlKeysToRemove:["status:","keywords","date"]}})]}get optionBuilders(){return[new Le({OptionsClass:ns,name:"YAML Keys to Remove",description:"The yaml keys to remove from the yaml frontmatter with or without colons",optionsKey:"yamlKeysToRemove"})]}};Ci=E([v.register],Ci);var wl=class{},Ei=class extends v{get OptionsClass(){return wl}get name(){return"Space after list markers"}get description(){return"There should be a single space after list markers and checkboxes."}get type(){return"Spacing"}apply(n,t){return N([S.code,S.yaml,S.link,S.wikiLink,S.tag],n,r=>(r=r.replace(/^(\s*\d+\.|\s*[-+*])[^\S\r\n]+/gm,"$1 "),r.replace(/^(\s*\d+\.|\s*[-+*]\s+\[[ xX]\])[^\S\r\n]+/gm,"$1 ")))}get exampleBuilders(){return[new k({description:"",before:g` 1. Item 1 2. Item 2 ${""} - [ ] Item 1 - [x] Item 2 \t- [ ] Item 3 - `,after:b` + `,after:g` 1. Item 1 2. Item 2 ${""} - [ ] Item 1 - [x] Item 2 \t- [ ] Item 3 - `})]}get optionBuilders(){return[]}};ui=B([E.register],ui);var Ha=class{},pi=class extends E{get OptionsClass(){return Ha}get name(){return"Space between Chinese and English or numbers"}get description(){return"Ensures that Chinese and English or numbers are separated by a single space. Follows these [guidelines](https://github.com/sparanoid/chinese-copywriting-guidelines)"}get type(){return"Spacing"}apply(t,n){let r=/([\u4e00-\u9fa5])( *)(\[[^[]*\]\(.*\)|`[^`]*`|\w+|[-+'"([{¥$]|\*[^*])/gm,i=/(\[[^[]*\]\(.*\)|`[^`]*`|\w+|[-+;:'"°%$)\]}]|[^*]\*)( *)([\u4e00-\u9fa5])/gm,o=function(a){return a.replace(r,"$1 $3").replace(i,"$1 $3")},s=z([v.code,v.inlineCode,v.yaml,v.image,v.link,v.wikiLink,v.tag,v.italics,v.bold,v.math,v.inlineMath],t,o);return s=sc(s,o),s=ac(s,o),s}get exampleBuilders(){return[new A({description:"Space between Chinese and English",before:b` + `})]}get optionBuilders(){return[]}};Ei=E([v.register],Ei);var xl=class{},Li=class extends v{get OptionsClass(){return xl}get name(){return"Space between Chinese and English or numbers"}get description(){return"Ensures that Chinese and English or numbers are separated by a single space. Follows these [guidelines](https://github.com/sparanoid/chinese-copywriting-guidelines)"}get type(){return"Spacing"}apply(n,t){let r=/([\u4e00-\u9fa5])( *)(\[[^[]*\]\(.*\)|`[^`]*`|\w+|[-+'"([{¥$]|\*[^*])/gm,i=/(\[[^[]*\]\(.*\)|`[^`]*`|\w+|[-+;:'"°%$)\]}]|[^*]\*)( *)([\u4e00-\u9fa5])/gm,o=function(a){return a.replace(r,"$1 $3").replace(i,"$1 $3")},s=N([S.code,S.inlineCode,S.yaml,S.image,S.link,S.wikiLink,S.tag,S.italics,S.bold,S.math,S.inlineMath],n,o);return s=Wc(s,o),s=Kc(s,o),s}get exampleBuilders(){return[new k({description:"Space between Chinese and English",before:g` 中文字符串english中文字符串。 - `,after:b` + `,after:g` 中文字符串 english 中文字符串。 - `}),new A({description:"Space between Chinese and link",before:b` + `}),new k({description:"Space between Chinese and link",before:g` 中文字符串[english](http://example.com)中文字符串。 - `,after:b` + `,after:g` 中文字符串 [english](http://example.com) 中文字符串。 - `}),new A({description:"Space between Chinese and inline code block",before:b` + `}),new k({description:"Space between Chinese and inline code block",before:g` 中文字符串\`code\`中文字符串。 - `,after:b` + `,after:g` 中文字符串 \`code\` 中文字符串。 - `}),new A({description:"No space between Chinese and English in tag",before:b` + `}),new k({description:"No space between Chinese and English in tag",before:g` #标签A #标签2标签 - `,after:b` + `,after:g` #标签A #标签2标签 - `}),new A({description:"Make sure that spaces are not added between italics and chinese characters to preserve markdown syntax",before:b` + `}),new k({description:"Make sure that spaces are not added between italics and chinese characters to preserve markdown syntax",before:g` _这是一个数学公式_ *这是一个数学公式english* ${""} @@ -1382,7 +1673,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` ${""} **_这是一_个数学公式** *这是一hello__个数学world公式__* - `,after:b` + `,after:g` _这是一个数学公式_ *这是一个数学公式 english* ${""} @@ -1390,17 +1681,17 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` ${""} **_ 这是一 _ 个数学公式** *这是一 hello__ 个数学 world 公式 __* - `}),new A({description:"Images and links are ignored",before:b` + `}),new k({description:"Images and links are ignored",before:g` [[这是一个数学公式english]] ![[这是一个数学公式english.jpg]] [这是一个数学公式english](这是一个数学公式english.md) ![这是一个数学公式english](这是一个数学公式english.jpg) - `,after:b` + `,after:g` [[这是一个数学公式english]] ![[这是一个数学公式english.jpg]] [这是一个数学公式english](这是一个数学公式english.md) ![这是一个数学公式english](这是一个数学公式english.jpg) - `})]}get optionBuilders(){return[]}};pi=B([E.register],pi);var Bo=class{constructor(){this.style="consistent"}},ci=class extends E{get OptionsClass(){return Bo}get name(){return"Strong Style"}get description(){return"Makes sure the strong style is consistent."}get type(){return"Content"}apply(t,n){return z([v.code,v.yaml,v.link,v.wikiLink,v.tag,v.math,v.inlineMath],t,r=>ho(r,n.style,"strong"))}get exampleBuilders(){return[new A({description:"Strong indicators should use underscores when style is set to 'underscore'",before:b` + `})]}get optionBuilders(){return[]}};Li=E([v.register],Li);var rs=class{constructor(){this.style="consistent"}},_i=class extends v{get OptionsClass(){return rs}get name(){return"Strong Style"}get description(){return"Makes sure the strong style is consistent."}get type(){return"Content"}apply(n,t){return N([S.code,S.yaml,S.link,S.wikiLink,S.tag,S.math,S.inlineMath],n,r=>Vo(r,t.style,"strong"))}get exampleBuilders(){return[new k({description:"Strong indicators should use underscores when style is set to 'underscore'",before:g` # Strong/Bold Cases ${""} **Test bold** @@ -1415,7 +1706,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` ${""} * List Item1 with **bold text** * List Item2 - `,after:b` + `,after:g` # Strong/Bold Cases ${""} __Test bold__ @@ -1430,7 +1721,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` ${""} * List Item1 with __bold text__ * List Item2 - `,options:{style:"underscore"}}),new A({description:"Strong indicators should use asterisks when style is set to 'asterisk'",before:b` + `,options:{style:"underscore"}}),new k({description:"Strong indicators should use asterisks when style is set to 'asterisk'",before:g` # Strong/Bold Cases ${""} __Test bold__ @@ -1442,7 +1733,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` This is ___nested emphasis_ and ending bold__ ${""} _Test emphasis_ - `,after:b` + `,after:g` # Strong/Bold Cases ${""} **Test bold** @@ -1454,7 +1745,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` This is **_nested emphasis_ and ending bold** ${""} _Test emphasis_ - `,options:{style:"asterisk"}}),new A({description:"Strong indicators should use consistent style based on first strong indicator in a file when style is set to 'consistent'",before:b` + `,options:{style:"asterisk"}}),new k({description:"Strong indicators should use consistent style based on first strong indicator in a file when style is set to 'consistent'",before:g` # Strong First Strong Is an Asterisk ${""} **First bold** @@ -1465,7 +1756,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` This is **_nested emphasis_ and ending bold** ${""} __Test bold__ - `,after:b` + `,after:g` # Strong First Strong Is an Asterisk ${""} **First bold** @@ -1476,7 +1767,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` This is **_nested emphasis_ and ending bold** ${""} **Test bold** - `,options:{style:"consistent"}}),new A({description:"Strong indicators should use consistent style based on first strong indicator in a file when style is set to 'consistent'",before:b` + `,options:{style:"consistent"}}),new k({description:"Strong indicators should use consistent style based on first strong indicator in a file when style is set to 'consistent'",before:g` # Strong First Strong Is an Underscore ${""} __First bold__ @@ -1487,7 +1778,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` This is ___nested emphasis_ and ending bold__ ${""} **Test bold** - `,after:b` + `,after:g` # Strong First Strong Is an Underscore ${""} __First bold__ @@ -1498,19 +1789,19 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b` This is ___nested emphasis_ and ending bold__ ${""} __Test bold__ - `,options:{style:"consistent"}})]}get optionBuilders(){return[new ce({OptionsClass:Bo,name:"Style",description:"The style used to denote strong/bolded content",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of strong is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure ** is the strong indicator"},{value:"underscore",description:"Makes sure __ is the strong indicator"}]})]}};ci=B([E.register],ci);var Mo=class{constructor(){this.twoSpaceLineBreak=!1}},fi=class extends E{get OptionsClass(){return Mo}get name(){return"Trailing spaces"}get description(){return"Removes extra spaces after every line."}get type(){return"Spacing"}apply(t,n){return z([v.code,v.yaml,v.link,v.wikiLink,v.tag],t,r=>n.twoSpaceLineBreak?(r=r.replace(/(\S)[ \t]$/gm,"$1"),r=r.replace(/(\S)[ \t]{3,}$/gm,"$1"),r=r.replace(/(\S)( ?\t\t? ?)$/gm,"$1"),r):r.replace(/[ \t]+$/gm,""))}get exampleBuilders(){return[new A({description:"Removes trailing spaces and tabs.",before:b` + `,options:{style:"consistent"}})]}get optionBuilders(){return[new ke({OptionsClass:rs,name:"Style",description:"The style used to denote strong/bolded content",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of strong is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure ** is the strong indicator"},{value:"underscore",description:"Makes sure __ is the strong indicator"}]})]}};_i=E([v.register],_i);var is=class{constructor(){this.twoSpaceLineBreak=!1}},Bi=class extends v{get OptionsClass(){return is}get name(){return"Trailing spaces"}get description(){return"Removes extra spaces after every line."}get type(){return"Spacing"}apply(n,t){return N([S.code,S.yaml,S.link,S.wikiLink,S.tag],n,r=>t.twoSpaceLineBreak?(r=r.replace(/(\S)[ \t]$/gm,"$1"),r=r.replace(/(\S)[ \t]{3,}$/gm,"$1"),r=r.replace(/(\S)( ?\t\t? ?)$/gm,"$1"),r):r.replace(/[ \t]+$/gm,""))}get exampleBuilders(){return[new k({description:"Removes trailing spaces and tabs.",before:g` # H1 Line with trailing spaces and tabs. ${""} - `,after:b` + `,after:g` # H1 Line with trailing spaces and tabs. - `}),new A({description:"With `Two Space Linebreak = true`",before:b` + `}),new k({description:"With `Two Space Linebreak = true`",before:g` # H1 Line with trailing spaces and tabs. ${""} - `,after:b` + `,after:g` # H1 Line with trailing spaces and tabs. ${""} - `,options:{twoSpaceLineBreak:!0}})]}get optionBuilders(){return[new re({OptionsClass:Mo,name:"Two Space Linebreak",description:'Ignore two spaces followed by a line break ("Two Space Rule").',optionsKey:"twoSpaceLineBreak"})]}};fi=B([E.register],fi);var Ya=class{},mi=class extends E{get OptionsClass(){return Ya}get name(){return"Two Spaces Between Lines with Content"}get description(){return"Makes sure that two spaces are added to the ends of lines with content continued on the next line for paragraphs, blockquotes, and list items"}get type(){return"Content"}apply(t,n){return z([v.obsidianMultiLineComments,v.yaml],t,rc)}get exampleBuilders(){return[new A({description:"Make sure two spaces are added to the ends of lines that have content on it and the next line for lists, blockquotes, and paragraphs",before:b` + `,options:{twoSpaceLineBreak:!0}})]}get optionBuilders(){return[new ae({OptionsClass:is,name:"Two Space Linebreak",description:'Ignore two spaces followed by a line break ("Two Space Rule").',optionsKey:"twoSpaceLineBreak"})]}};Bi=E([v.register],Bi);var kl=class{},Mi=class extends v{get OptionsClass(){return kl}get name(){return"Two Spaces Between Lines with Content"}get description(){return"Makes sure that two spaces are added to the ends of lines with content continued on the next line for paragraphs, blockquotes, and list items"}get type(){return"Content"}apply(n,t){return N([S.obsidianMultiLineComments,S.yaml],n,qc)}get exampleBuilders(){return[new k({description:"Make sure two spaces are added to the ends of lines that have content on it and the next line for lists, blockquotes, and paragraphs",before:g` # Heading 1 First paragraph stays as the first paragraph ${""} @@ -1549,7 +1840,7 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b`
Even more content here ${""} - `,after:b` + `,after:g` # Heading 1 First paragraph stays as the first paragraph ${""} @@ -1588,10 +1879,120 @@ $4`)})}get exampleBuilders(){return[new A({description:"",before:b`
Even more content here ${""} - `})]}get optionBuilders(){return[]}};mi=B([E.register],mi);var Lt=class{constructor(){this.priorityKeysAtStartOfYaml=!0;this.yamlKeyPrioritySortOrder=[];this.yamlSortOrderForOtherKeys="None"}};B([E.noSettingControl()],Lt.prototype,"dateModifiedKey",2),B([E.noSettingControl()],Lt.prototype,"currentTimeFormatted",2),B([E.noSettingControl()],Lt.prototype,"yamlTimestampDateModifiedEnabled",2);var wn=class extends E{get OptionsClass(){return Lt}get name(){return"YAML Key Sort"}get description(){return"Sorts the YAML keys based on the order and priority specified. Note: may remove blank lines as well."}get type(){return"YAML"}apply(t,n){let r=t.match(ve);if(!r)return t;let i=r[1],o=n.priorityKeysAtStartOfYaml,s=function(O,C){return O==C?C:Oe(C,n.dateModifiedKey," "+n.currentTimeFormatted)},a=function(O,C,I){let k=`${C}${O}`;return I&&(k=`${O}${C}`),n.yamlTimestampDateModifiedEnabled&&(k=s(r[1],k)),t.replace(r[1],k)},l=function(O,C){let I="";for(let k of C){let _=Te(O,k);_!==null&&(_.includes(` -`)?I+=`${k}:${_} -`:I+=`${k}: ${_} -`,O=tn(O,k))}return{remainingYaml:O,sortedYamlKeyValues:I}},u=n.yamlKeyPrioritySortOrder,p=l(i,u),c=p.sortedYamlKeyValues;i=p.remainingYaml;let f=n.yamlSortOrderForOtherKeys,m=tt(i);if(m==null)return a(c,i,o);let d=function(O,C){return O=O.toLowerCase(),C=C.toLowerCase(),O>C?-1:C>O?1:0},h=function(O,C){return O=O.toLowerCase(),C=C.toLowerCase(),Oem(r,t.listStyle))}get exampleBuilders(){return[new k({description:"Unordered lists have their indicator updated to `*` when `List item style = 'consistent'` and `*` is the first unordered list indicator",before:g` + 1. ordered item 1 + 2. ordered item 2 + ${""} + Checklists should be ignored + - [ ] Checklist item 1 + - [x] completed item + ${""} + * Item 1 + - Sublist 1 item 1 + - Sublist 1 item 2 + - Item 2 + + Sublist 2 item 1 + + Sublist 2 item 2 + + Item 3 + * Sublist 3 item 1 + * Sublist 3 item 2 + ${""} + `,after:g` + 1. ordered item 1 + 2. ordered item 2 + ${""} + Checklists should be ignored + - [ ] Checklist item 1 + - [x] completed item + ${""} + * Item 1 + * Sublist 1 item 1 + * Sublist 1 item 2 + * Item 2 + * Sublist 2 item 1 + * Sublist 2 item 2 + * Item 3 + * Sublist 3 item 1 + * Sublist 3 item 2 + ${""} + `}),new k({description:"Unordered lists have their indicator updated to `-` when `List item style = '-'`",before:g` + - Item 1 + * Sublist 1 item 1 + * Sublist 1 item 2 + * Item 2 + + Sublist 2 item 1 + + Sublist 2 item 2 + + Item 3 + - Sublist 3 item 1 + - Sublist 3 item 2 + ${""} + See that the ordered list is ignored, but its sublist is not + ${""} + 1. Item 1 + - Sub item 1 + 1. Item 2 + * Sub item 2 + 1. Item 3 + + Sub item 3 + `,after:g` + - Item 1 + - Sublist 1 item 1 + - Sublist 1 item 2 + - Item 2 + - Sublist 2 item 1 + - Sublist 2 item 2 + - Item 3 + - Sublist 3 item 1 + - Sublist 3 item 2 + ${""} + See that the ordered list is ignored, but its sublist is not + ${""} + 1. Item 1 + - Sub item 1 + 1. Item 2 + - Sub item 2 + 1. Item 3 + - Sub item 3 + `,options:{listStyle:"-"}}),new k({description:"Unordered lists have their indicator updated to `*` when `List item style = '*'`",before:g` + - Item 1 + * Sublist 1 item 1 + * Sublist 1 item 2 + * Item 2 + + Sublist 2 item 1 + + Sublist 2 item 2 + + Item 3 + - Sublist 3 item 1 + - Sublist 3 item 2 + ${""} + `,after:g` + * Item 1 + * Sublist 1 item 1 + * Sublist 1 item 2 + * Item 2 + * Sublist 2 item 1 + * Sublist 2 item 2 + * Item 3 + * Sublist 3 item 1 + * Sublist 3 item 2 + ${""} + `,options:{listStyle:"*"}}),new k({description:"Unordered list in blockquote has list item indicators set to `+` when `List item style = '-'`",before:g` + > - Item 1 + > + Item 2 + > > * Subitem 1 + > > + Subitem 2 + > > - Sub sub item 1 + > > - Subitem 3 + `,after:g` + > + Item 1 + > + Item 2 + > > + Subitem 1 + > > + Subitem 2 + > > + Sub sub item 1 + > > + Subitem 3 + `,options:{listStyle:"+"}})]}get optionBuilders(){return[new ke({OptionsClass:os,name:"List item style",description:"The list item style to use in unordered lists",optionsKey:"listStyle",records:[{value:"consistent",description:"Makes sure unordered list items use a consistent list item indicator in the file which will be based on the first list item found"},{value:"-",description:"Makes sure unordered list items use `-` as their indicator"},{value:"*",description:"Makes sure unordered list items use `*` as their indicator"},{value:"+",description:"Makes sure unordered list items use `+` as their indicator"}]})]}};Ii=E([v.register],Ii);var It=class{constructor(){this.priorityKeysAtStartOfYaml=!0;this.yamlKeyPrioritySortOrder=[];this.yamlSortOrderForOtherKeys="None"}};E([v.noSettingControl()],It.prototype,"dateModifiedKey",2),E([v.noSettingControl()],It.prototype,"currentTimeFormatted",2),E([v.noSettingControl()],It.prototype,"yamlTimestampDateModifiedEnabled",2);var Mn=class extends v{get OptionsClass(){return It}get name(){return"YAML Key Sort"}get description(){return"Sorts the YAML keys based on the order and priority specified. Note: may remove blank lines as well."}get type(){return"YAML"}apply(n,t){let r=n.match(Te);if(!r)return n;let i=r[1],o=t.priorityKeysAtStartOfYaml,s=function(O,L){return O==L?L:Ae(L,t.dateModifiedKey," "+t.currentTimeFormatted)},a=function(O,L,M){let T=`${L}${O}`;return M&&(T=`${O}${L}`),t.yamlTimestampDateModifiedEnabled&&(T=s(r[1],T)),n.replace(r[1],T)},l=function(O,L){let M="";for(let T of L){let B=Ce(O,T);B!==null&&(B.includes(` +`)?M+=`${T}:${B} +`:M+=`${T}: ${B} +`,O=sn(O,T))}return{remainingYaml:O,sortedYamlKeyValues:M}},u=t.yamlKeyPrioritySortOrder,p=l(i,u),c=p.sortedYamlKeyValues;i=p.remainingYaml;let m=t.yamlSortOrderForOtherKeys,f=ot(i);if(f==null)return a(c,i,o);let d=function(O,L){return O=O.toLowerCase(),L=L.toLowerCase(),O>L?-1:L>O?1:0},h=function(O,L){return O=O.toLowerCase(),L=L.toLowerCase(),O{let s=` -${n.dateCreatedKey}: [^ + `,options:{yamlKeyPrioritySortOrder:["date","type","language"],yamlSortOrderForOtherKeys:"Descending Alphabetical",priorityKeysAtStartOfYaml:!1}})]}get optionBuilders(){return[new Le({OptionsClass:It,name:"YAML Key Priority Sort Order",description:"The order in which to sort keys with one on each line where it sorts in the order found in the list",optionsKey:"yamlKeyPrioritySortOrder"}),new ae({OptionsClass:It,name:"Priority Keys at Start of YAML",description:"YAML Key Priority Sort Order is placed at the start of the YAML frontmatter",optionsKey:"priorityKeysAtStartOfYaml"}),new ke({OptionsClass:It,name:"YAML Sort Order for Other Keys",description:"The way in which to sort the keys that are not found in the YAML Key Priority Sort Order text area",optionsKey:"yamlSortOrderForOtherKeys",records:[{value:"None",description:"No sorting other than what is in the YAML Key Priority Sort Order text area"},{value:"Ascending Alphabetical",description:"Sorts the keys based on key value from a to z"},{value:"Descending Alphabetical",description:"Sorts the keys based on key value from z to a"}]})]}get hasSpecialExecutionOrder(){return!0}};Mn=E([v.register],Mn);var Ft=require("obsidian");var rt=class{constructor(){this.dateCreatedKey="date created";this.dateCreated=!0;this.format="dddd, MMMM Do YYYY, h:mm:ss a";this.dateModified=!0;this.dateModifiedKey="date modified";this.locale="en"}};E([v.noSettingControl()],rt.prototype,"alreadyModified",2),E([v.noSettingControl()],rt.prototype,"fileCreatedTime",2),E([v.noSettingControl()],rt.prototype,"fileModifiedTime",2),E([v.noSettingControl()],rt.prototype,"locale",2),E([v.noSettingControl()],rt.prototype,"currentTime",2);var Xt=class extends v{get OptionsClass(){return rt}get name(){return"YAML Timestamp"}get description(){return"Keep track of the date the file was last edited in the YAML front matter. Gets dates from file metadata."}get type(){return"YAML"}apply(n,t){let r=t.alreadyModified,i=xt(n);return r=r||i!==n,Oe(i,o=>{let s=` +${t.dateCreatedKey}: [^ ]+ `,a=` -${n.dateCreatedKey}:[ ]* -`,l=new RegExp(a),u=new RegExp(s);if(n.dateCreated){let p=(0,_t.moment)(n.fileCreatedTime);p.locale(n.locale);let c=p.format(n.format),f=` -${n.dateCreatedKey}: ${c}`,m=u.test(o);if(!m&&l.test(o))o=o.replace(l,Be(f)+` -`),r=!0;else if(m){if(m){let d=(0,_t.moment)(o.match(u)[0].replace(n.dateCreatedKey+":","").trim(),n.format,n.locale,!0);(d==null||!d.isValid())&&(o=o.replace(u,Be(f)+` +${t.dateCreatedKey}:[ ]* +`,l=new RegExp(a),u=new RegExp(s);if(t.dateCreated){let p=(0,Ft.moment)(t.fileCreatedTime);p.locale(t.locale);let c=p.format(t.format),m=` +${t.dateCreatedKey}: ${c}`,f=u.test(o);if(!f&&l.test(o))o=o.replace(l,ze(m)+` +`),r=!0;else if(f){if(f){let d=(0,Ft.moment)(o.match(u)[0].replace(t.dateCreatedKey+":","").trim(),t.format,t.locale,!0);(d==null||!d.isValid())&&(o=o.replace(u,ze(m)+` `),r=!0)}}else{let d=o.indexOf(` ----`);o=nn(o,d,` -${n.dateCreatedKey}: ${c}`),r=!0}}if(n.dateModified){let p=` -${n.dateModifiedKey}: [^ +---`);o=ln(o,d,` +${t.dateCreatedKey}: ${c}`),r=!0}}if(t.dateModified){let p=` +${t.dateModifiedKey}: [^ ]+ `,c=` -${n.dateModifiedKey}:[ ]* -`,f=new RegExp(c),m=new RegExp(p),d=(0,_t.moment)(n.fileModifiedTime);d.locale(n.locale);let h=n.currentTime.format(n.format),g=` -${n.dateModifiedKey}: ${h}`,y=m.test(o);if(y){let T=(0,_t.moment)(o.match(m)[0].replace(n.dateModifiedKey+":","").trim(),n.format,n.locale,!0);(r||T==null||!T.isValid()||Math.abs(T.diff(d,"seconds"))>5)&&(o=o.replace(m,Be(g)+` -`))}else if(f.test(o))o=o.replace(f,Be(g)+` -`);else if(!y){let T=o.indexOf(` ----`);o=nn(o,T,g)}}return o})}get exampleBuilders(){return[new A({description:"Adds a header with the date.",before:b` +${t.dateModifiedKey}:[ ]* +`,m=new RegExp(c),f=new RegExp(p),d=(0,Ft.moment)(t.fileModifiedTime);d.locale(t.locale);let h=t.currentTime.format(t.format),y=` +${t.dateModifiedKey}: ${h}`,b=f.test(o);if(b){let A=(0,Ft.moment)(o.match(f)[0].replace(t.dateModifiedKey+":","").trim(),t.format,t.locale,!0);(r||A==null||!A.isValid()||Math.abs(A.diff(d,"seconds"))>5)&&(o=o.replace(f,ze(y)+` +`))}else if(m.test(o))o=o.replace(m,ze(y)+` +`);else if(!b){let A=o.indexOf(` +---`);o=ln(o,A,y)}}return o})}get exampleBuilders(){return[new k({description:"Adds a header with the date.",before:g` # H1 - `,after:b` + `,after:g` --- date created: Wednesday, January 1st 2020, 12:00:00 am date modified: Thursday, January 2nd 2020, 12:00:05 am --- # H1 - `,options:{fileCreatedTime:"2020-01-01T00:00:00-00:00",fileModifiedTime:"2020-01-02T00:00:00-00:00",currentTime:(0,_t.moment)("Thursday, January 2nd 2020, 12:00:05 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new A({description:"dateCreated option is false",before:b` + `,options:{fileCreatedTime:"2020-01-01T00:00:00-00:00",fileModifiedTime:"2020-01-02T00:00:00-00:00",currentTime:(0,Ft.moment)("Thursday, January 2nd 2020, 12:00:05 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new k({description:"dateCreated option is false",before:g` # H1 - `,after:b` + `,after:g` --- date modified: Thursday, January 2nd 2020, 12:00:05 am --- # H1 - `,options:{dateCreated:!1,fileCreatedTime:"2020-01-01T00:00:00-00:00",fileModifiedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,_t.moment)("Thursday, January 2nd 2020, 12:00:05 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new A({description:"Date Created Key is set",before:b` + `,options:{dateCreated:!1,fileCreatedTime:"2020-01-01T00:00:00-00:00",fileModifiedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,Ft.moment)("Thursday, January 2nd 2020, 12:00:05 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new k({description:"Date Created Key is set",before:g` # H1 - `,after:b` + `,after:g` --- created: Wednesday, January 1st 2020, 12:00:00 am --- # H1 - `,options:{dateCreated:!0,dateModified:!1,dateCreatedKey:"created",fileCreatedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,_t.moment)("Thursday, January 2nd 2020, 12:00:03 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new A({description:"Date Modified Key is set",before:b` + `,options:{dateCreated:!0,dateModified:!1,dateCreatedKey:"created",fileCreatedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,Ft.moment)("Thursday, January 2nd 2020, 12:00:03 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new k({description:"Date Modified Key is set",before:g` # H1 - `,after:b` + `,after:g` --- modified: Wednesday, January 1st 2020, 4:00:00 pm --- # H1 - `,options:{dateCreated:!1,dateModified:!0,dateModifiedKey:"modified",fileModifiedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,_t.moment)("Wednesday, January 1st 2020, 4:00:00 pm","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}})]}get optionBuilders(){return[new re({OptionsClass:et,name:"Date Created",description:"Insert the file creation date",optionsKey:"dateCreated"}),new dn({OptionsClass:et,name:"Date Created Key",description:"Which YAML key to use for creation date",optionsKey:"dateCreatedKey"}),new re({OptionsClass:et,name:"Date Modified",description:"Insert the date the file was last modified",optionsKey:"dateModified"}),new dn({OptionsClass:et,name:"Date Modified Key",description:"Which YAML key to use for modification date",optionsKey:"dateModifiedKey"}),new Ao({OptionsClass:et,name:"Format",description:"Moment date format to use (see [Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))",optionsKey:"format"})]}get hasSpecialExecutionOrder(){return!0}};Vt=B([E.register],Vt);var Wt=class{constructor(){this.yamlAliasesSectionStyle="Multi-line array";this.preserveExistingAliasesSectionStyle=!0;this.keepAliasThatMatchesTheFilename=!1;this.useYamlKeyToKeepTrackOfOldFilenameOrHeading=!0}};B([E.noSettingControl()],Wt.prototype,"fileName",2);var di=class extends E{get OptionsClass(){return Wt}get name(){return"YAML Title Alias"}get description(){return"Inserts the title of the file into the YAML frontmatter's aliases section. Gets the title from the first H1 or filename."}get type(){return"YAML"}apply(t,n){t=yt(t);let r=z([v.code,v.yaml,v.link,v.wikiLink,v.tag],t,c=>{let f=c.match(/^#\s+(.*)/m);return f?f[1]:""});r=r||n.fileName;let i=null,o=t.match(ve)[1],s=!n.keepAliasThatMatchesTheFilename&&r===n.fileName;n.useYamlKeyToKeepTrackOfOldFilenameOrHeading&&(i=tt(Te(o,mr)));let a=o.replace(`--- + `,options:{dateCreated:!1,dateModified:!0,dateModifiedKey:"modified",fileModifiedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,Ft.moment)("Wednesday, January 1st 2020, 4:00:00 pm","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}})]}get optionBuilders(){return[new ae({OptionsClass:rt,name:"Date Created",description:"Insert the file creation date",optionsKey:"dateCreated"}),new un({OptionsClass:rt,name:"Date Created Key",description:"Which YAML key to use for creation date",optionsKey:"dateCreatedKey"}),new ae({OptionsClass:rt,name:"Date Modified",description:"Insert the date the file was last modified",optionsKey:"dateModified"}),new un({OptionsClass:rt,name:"Date Modified Key",description:"Which YAML key to use for modification date",optionsKey:"dateModifiedKey"}),new xo({OptionsClass:rt,name:"Format",description:"Moment date format to use (see [Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))",optionsKey:"format"})]}get hasSpecialExecutionOrder(){return!0}};Xt=E([v.register],Xt);var Rt=class{constructor(){this.preserveExistingAliasesSectionStyle=!0;this.keepAliasThatMatchesTheFilename=!1;this.useYamlKeyToKeepTrackOfOldFilenameOrHeading=!0;this.aliasArrayStyle="multi-line";this.defaultEscapeCharacter='"'}};E([v.noSettingControl()],Rt.prototype,"aliasArrayStyle",2),E([v.noSettingControl()],Rt.prototype,"fileName",2),E([v.noSettingControl()],Rt.prototype,"defaultEscapeCharacter",2);var Fi=class extends v{get OptionsClass(){return Rt}get name(){return"YAML Title Alias"}get description(){return"Inserts the title of the file into the YAML frontmatter's aliases section. Gets the title from the first H1 or filename."}get type(){return"YAML"}apply(n,t){n=xt(n);let r=N([S.code,S.yaml,S.tag],n,p=>{let c=p.match(/^#\s+(.*)/m);return c?c[1]:""});r=r||t.fileName;let i=null,o=n.match(Te)[1],s=!t.keepAliasThatMatchesTheFilename&&r===t.fileName;t.useYamlKeyToKeepTrackOfOldFilenameOrHeading&&(i=ot(Ce(o,_r)));let a=o.replace(`--- `,"").replace(` ----`,""),l=tt(o);i=tt(Te(o,mr));let u="multi-line";switch(n.yamlAliasesSectionStyle){case"Multi-line array":u="multi-line";break;case"Single-line array":u="single-line";break;case"Single string that expands to multi-line array if needed":u="single string to multi-line";break;case"Single string that expands to single-line array if needed":u="single string to single-line";break;default:throw new Error(`Unsupported setting 'YAML aliases section style': ${n.yamlAliasesSectionStyle}`)}let p=function(c,f){if(c==null)return r;if(typeof c=="string")f?c===r&&(c=""):i===c?c=r:c=[r,c];else if(i!==null){let m=c.indexOf(i);m!==-1&&(f?c.splice(m,1):c[m]=r)}else{let m=c.indexOf(r);m!==-1?f&&c.splice(m,1):f||(c=[r,...c])}return c===""||c.length===0?"":c};if(r=zi(r),Object.keys(l).includes(Xe)){let c=Te(a,Xe),f="multi-line",m=c==="",d=!1;c.includes(` -`)||(c.match(/^\[.*\]/)===null?(f="single string to single-line",d=!0):f="single-line");let h=Yi(bt(c)),g=p(h,s);g===""?a=tn(a,Xe):n.preserveExistingAliasesSectionStyle?!m&&(d&&r==g||!d||h==g)?a=Oe(a,Xe,Je(g,f)):a=Oe(a,Xe,Je(g,u)):a=Oe(a,Xe,Je(g,u))}else s||(a=Oe(a,Xe,Je(r,u)));return!n.useYamlKeyToKeepTrackOfOldFilenameOrHeading||s?a=tn(a,mr):a=Oe(a,mr,` ${r}`),t=t.replace(`--- +---`,""),l=ot(o);i=ot(Ce(o,_r)),r=_t(r,t.defaultEscapeCharacter);let u=function(p,c){if(p==null)return c?"":r;if(typeof p=="string")c?p===r&&(p=""):i===p?p=r:p=[r,p];else if(i!==null){let m=p.indexOf(i);m!==-1&&(c?p.splice(m,1):p[m]=r)}else{let m=p.indexOf(r);m!==-1?c&&p.splice(m,1):c||(p=[r,...p])}return p===""||p.length===0?"":p};if(Object.keys(l).includes(tt)){let p=Ce(a,tt),c="multi-line",m=p==="",f=!1;p.includes(` +`)||(p.match(/^\[.*\]/)===null?(c="single string to single-line",f=!0):c="single-line");let d=ao(kt(p)),h=u(d,s);h===""?a=sn(a,tt):t.preserveExistingAliasesSectionStyle?!m&&(f&&r==h||!f||d==h)?a=Ae(a,tt,nt(h,c)):a=Ae(a,tt,nt(h,t.aliasArrayStyle)):a=Ae(a,tt,nt(h,t.aliasArrayStyle))}else s||(a=Ae(a,tt,nt(r,t.aliasArrayStyle)));return!t.useYamlKeyToKeepTrackOfOldFilenameOrHeading||s?a=sn(a,_r):a=Ae(a,_r,` ${r}`),n=n.replace(`--- ${o}--- `,`--- ${a}--- -`),t}get exampleBuilders(){return[new A({description:"Adds a header with the title from heading.",before:b` +`),n}get exampleBuilders(){return[new k({description:"Adds a header with the title from heading.",before:g` # Obsidian - `,after:b` + `,after:g` --- aliases: - Obsidian linter-yaml-title-alias: Obsidian --- # Obsidian - `}),new A({description:"Adds a header with the title from heading without YAML key when the use of the YAML key is set to false.",before:b` + `}),new k({description:"Adds a header with the title from heading without YAML key when the use of the YAML key is set to false.",before:g` # Obsidian - `,after:b` + `,after:g` --- aliases: - Obsidian --- # Obsidian - `,options:{useYamlKeyToKeepTrackOfOldFilenameOrHeading:!1}}),new A({description:"Adds a header with the title.",before:b` + `,options:{useYamlKeyToKeepTrackOfOldFilenameOrHeading:!1}}),new k({description:"Adds a header with the title.",before:g` ${""} - `,after:b` + `,after:g` --- aliases: - Filename linter-yaml-title-alias: Filename --- ${""} - `,options:{fileName:"Filename",keepAliasThatMatchesTheFilename:!0}}),new A({description:"Adds a header with the title without YAML key when the use of the YAML key is set to false.",before:b` + `,options:{fileName:"Filename",keepAliasThatMatchesTheFilename:!0}}),new k({description:"Adds a header with the title without YAML key when the use of the YAML key is set to false.",before:g` ${""} - `,after:b` + `,after:g` --- aliases: - Filename --- ${""} - `,options:{fileName:"Filename",keepAliasThatMatchesTheFilename:!0,useYamlKeyToKeepTrackOfOldFilenameOrHeading:!1}}),new A({description:"Replaces old filename with new filename when no header is present and filename is different than the old one listed in `linter-yaml-title-alias`.",before:b` + `,options:{fileName:"Filename",keepAliasThatMatchesTheFilename:!0,useYamlKeyToKeepTrackOfOldFilenameOrHeading:!1}}),new k({description:"Replaces old filename with new filename when no header is present and filename is different than the old one listed in `linter-yaml-title-alias`.",before:g` --- aliases: - Old Filename @@ -1761,7 +2162,7 @@ ${a}--- linter-yaml-title-alias: Old Filename --- ${""} - `,after:b` + `,after:g` --- aliases: - Filename @@ -1769,214 +2170,85 @@ ${a}--- linter-yaml-title-alias: Filename --- ${""} - `,options:{fileName:"Filename",keepAliasThatMatchesTheFilename:!0}})]}get optionBuilders(){return[new ce({OptionsClass:Wt,name:"YAML aliases section style",description:"The style of the aliases YAML section. It is recommended that the value here matches the aliases format for format YAML arrays if in use.",optionsKey:"yamlAliasesSectionStyle",records:[{value:"Multi-line array",description:"```aliases:\\n - Title```"},{value:"Single-line array",description:"```aliases: [Title]```"},{value:"Single string that expands to multi-line array if needed",description:"```aliases: Title```"},{value:"Single string that expands to single-line array if needed",description:"```aliases: Title```"}]}),new re({OptionsClass:Wt,name:"Preserve existing aliases section style",description:"If set, the `YAML aliases section style` setting applies only to the newly created sections",optionsKey:"preserveExistingAliasesSectionStyle"}),new re({OptionsClass:Wt,name:"Keep alias that matches the filename",description:"Such aliases are usually redundant",optionsKey:"keepAliasThatMatchesTheFilename"}),new re({OptionsClass:Wt,name:"Use the YAML key `linter-yaml-title-alias` to help with filename and heading changes",description:"If set, when the first H1 heading changes or filename if first H1 is not present changes, then the old alias stored in this key will be replaced with the new value instead of just inserting a new entry in the aliases array",optionsKey:"useYamlKeyToKeepTrackOfOldFilenameOrHeading"})]}};di=B([E.register],di);var gi=class{constructor(){this.titleKey="title"}};B([E.noSettingControl()],gi.prototype,"fileName",2);var hi=class extends E{get OptionsClass(){return gi}get name(){return"YAML Title"}get description(){return"Inserts the title of the file into the YAML frontmatter. Gets the title from the first H1 or filename if there is no H1."}get type(){return"YAML"}apply(t,n){t=yt(t);let r=z([v.code,v.yaml,v.link,v.wikiLink,v.tag],t,i=>{let o=i.match(/^#\s+(.*)/m);return o?o[1]:""});return r=r||n.fileName,r=zi(r),Me(t,i=>{let o=` -${n.titleKey}.* -`,s=new RegExp(o);if(s.test(i))i=i.replace(s,Be(` -${n.titleKey}: ${r} + `,options:{fileName:"Filename",keepAliasThatMatchesTheFilename:!0}})]}get optionBuilders(){return[new ae({OptionsClass:Rt,name:"Preserve existing aliases section style",description:"If set, the `YAML aliases section style` setting applies only to the newly created sections",optionsKey:"preserveExistingAliasesSectionStyle"}),new ae({OptionsClass:Rt,name:"Keep alias that matches the filename",description:"Such aliases are usually redundant",optionsKey:"keepAliasThatMatchesTheFilename"}),new ae({OptionsClass:Rt,name:"Use the YAML key `linter-yaml-title-alias` to help with filename and heading changes",description:"If set, when the first H1 heading changes or filename if first H1 is not present changes, then the old alias stored in this key will be replaced with the new value instead of just inserting a new entry in the aliases array",optionsKey:"useYamlKeyToKeepTrackOfOldFilenameOrHeading"})]}};Fi=E([v.register],Fi);var cr=class{constructor(){this.defaultEscapeCharacter='"';this.titleKey="title"}};E([v.noSettingControl()],cr.prototype,"fileName",2),E([v.noSettingControl()],cr.prototype,"defaultEscapeCharacter",2);var Ri=class extends v{get OptionsClass(){return cr}get name(){return"YAML Title"}get description(){return"Inserts the title of the file into the YAML frontmatter. Gets the title from the first H1 or filename if there is no H1."}get type(){return"YAML"}apply(n,t){n=xt(n);let r=N([S.code,S.yaml,S.tag],n,i=>{let o=i.match(/^#\s+(.*)/m);return o?o[1]:""});return r=r||t.fileName,r=_t(r,t.defaultEscapeCharacter),Oe(n,i=>{let o=` +${t.titleKey}.* +`,s=new RegExp(o);if(s.test(i))i=i.replace(s,ze(` +${t.titleKey}: ${r} `));else{let a=i.indexOf(` ----`);i=nn(i,a,` -${n.titleKey}: ${r}`)}return i})}get exampleBuilders(){return[new A({description:"Adds a header with the title from heading.",before:b` +---`);i=ln(i,a,` +${t.titleKey}: ${r}`)}return i})}get exampleBuilders(){return[new k({description:"Adds a header with the title from heading.",before:g` # Obsidian - `,after:b` + `,after:g` --- title: Obsidian --- # Obsidian - `,options:{fileName:"Filename"}}),new A({description:"Adds a header with the title.",before:b` + `,options:{fileName:"Filename"}}),new k({description:"Adds a header with the title.",before:g` ${""} - `,after:b` + `,after:g` --- title: Filename --- ${""} - `,options:{fileName:"Filename"}})]}get optionBuilders(){return[new dn({OptionsClass:gi,name:"Title Key",description:"Which YAML key to use for title",optionsKey:"titleKey"})]}};hi=B([E.register],hi);var w0=` - - - - - - -`,x0=` - - - - - - - - - - - - - -`,k0=` - - - - - - - - - - - - - - - - - - -`,Ut={folder:{id:"lint-folder",source:x0},file:{id:"lint-file",source:w0},vault:{id:"lint-vault",source:k0}};var Kc=require("obsidian");var me="top",xe="bottom",be="right",ge="left",Ro="auto",Gt=[me,xe,be,ge],It="start",xn="end",Tc="clippingParents",Do="viewport",Un="popper",Sc="reference",ja=Gt.reduce(function(e,t){return e.concat([t+"-"+It,t+"-"+xn])},[]),Po=[].concat(Gt,[Ro]).reduce(function(e,t){return e.concat([t,t+"-"+It,t+"-"+xn])},[]),v0="beforeRead",O0="read",T0="afterRead",S0="beforeMain",A0="main",C0="afterMain",E0="beforeWrite",L0="write",_0="afterWrite",Ac=[v0,O0,T0,S0,A0,C0,E0,L0,_0];function Ce(e){return e?(e.nodeName||"").toLowerCase():null}function fe(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function rt(e){var t=fe(e).Element;return e instanceof t||e instanceof Element}function ke(e){var t=fe(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Gn(e){if(typeof ShadowRoot=="undefined")return!1;var t=fe(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function I0(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var r=t.styles[n]||{},i=t.attributes[n]||{},o=t.elements[n];!ke(o)||!Ce(o)||(Object.assign(o.style,r),Object.keys(i).forEach(function(s){var a=i[s];a===!1?o.removeAttribute(s):o.setAttribute(s,a===!0?"":a)}))})}function F0(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(r){var i=t.elements[r],o=t.attributes[r]||{},s=Object.keys(t.styles.hasOwnProperty(r)?t.styles[r]:n[r]),a=s.reduce(function(l,u){return l[u]="",l},{});!ke(i)||!Ce(i)||(Object.assign(i.style,a),Object.keys(o).forEach(function(l){i.removeAttribute(l)}))})}}var Cc={name:"applyStyles",enabled:!0,phase:"write",fn:I0,effect:F0,requires:["computeStyles"]};function Ee(e){return e.split("-")[0]}var ft=Math.max,kn=Math.min,Ft=Math.round;function Qn(){var e=navigator.userAgentData;return e!=null&&e.brands?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function yi(){return!/^((?!chrome|android).)*safari/i.test(Qn())}function it(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!1);var r=e.getBoundingClientRect(),i=1,o=1;t&&ke(e)&&(i=e.offsetWidth>0&&Ft(r.width)/e.offsetWidth||1,o=e.offsetHeight>0&&Ft(r.height)/e.offsetHeight||1);var s=rt(e)?fe(e):window,a=s.visualViewport,l=!yi()&&n,u=(r.left+(l&&a?a.offsetLeft:0))/i,p=(r.top+(l&&a?a.offsetTop:0))/o,c=r.width/i,f=r.height/o;return{width:c,height:f,top:p,right:u+c,bottom:p+f,left:u,x:u,y:p}}function vn(e){var t=it(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function bi(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Gn(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function Ke(e){return fe(e).getComputedStyle(e)}function qa(e){return["table","td","th"].indexOf(Ce(e))>=0}function _e(e){return((rt(e)?e.ownerDocument:e.document)||window.document).documentElement}function Bt(e){return Ce(e)==="html"?e:e.assignedSlot||e.parentNode||(Gn(e)?e.host:null)||_e(e)}function Ec(e){return!ke(e)||Ke(e).position==="fixed"?null:e.offsetParent}function B0(e){var t=/firefox/i.test(Qn()),n=/Trident/i.test(Qn());if(n&&ke(e)){var r=Ke(e);if(r.position==="fixed")return null}var i=Bt(e);for(Gn(i)&&(i=i.host);ke(i)&&["html","body"].indexOf(Ce(i))<0;){var o=Ke(i);if(o.transform!=="none"||o.perspective!=="none"||o.contain==="paint"||["transform","perspective"].indexOf(o.willChange)!==-1||t&&o.willChange==="filter"||t&&o.filter&&o.filter!=="none")return i;i=i.parentNode}return null}function mt(e){for(var t=fe(e),n=Ec(e);n&&qa(n)&&Ke(n).position==="static";)n=Ec(n);return n&&(Ce(n)==="html"||Ce(n)==="body"&&Ke(n).position==="static")?t:n||B0(e)||t}function On(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Tn(e,t,n){return ft(e,kn(t,n))}function Lc(e,t,n){var r=Tn(e,t,n);return r>n?n:r}function wi(){return{top:0,right:0,bottom:0,left:0}}function xi(e){return Object.assign({},wi(),e)}function ki(e,t){return t.reduce(function(n,r){return n[r]=e,n},{})}var M0=function(t,n){return t=typeof t=="function"?t(Object.assign({},n.rects,{placement:n.placement})):t,xi(typeof t!="number"?t:ki(t,Gt))};function R0(e){var t,n=e.state,r=e.name,i=e.options,o=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Ee(n.placement),l=On(a),u=[ge,be].indexOf(a)>=0,p=u?"height":"width";if(!(!o||!s)){var c=M0(i.padding,n),f=vn(o),m=l==="y"?me:ge,d=l==="y"?xe:be,h=n.rects.reference[p]+n.rects.reference[l]-s[l]-n.rects.popper[p],g=s[l]-n.rects.reference[l],y=mt(o),T=y?l==="y"?y.clientHeight||0:y.clientWidth||0:0,O=h/2-g/2,C=c[m],I=T-f[p]-c[d],k=T/2-f[p]/2+O,_=Tn(C,k,I),F=l;n.modifiersData[r]=(t={},t[F]=_,t.centerOffset=_-k,t)}}function D0(e){var t=e.state,n=e.options,r=n.element,i=r===void 0?"[data-popper-arrow]":r;i!=null&&(typeof i=="string"&&(i=t.elements.popper.querySelector(i),!i)||!bi(t.elements.popper,i)||(t.elements.arrow=i))}var _c={name:"arrow",enabled:!0,phase:"main",fn:R0,effect:D0,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ot(e){return e.split("-")[1]}var P0={top:"auto",right:"auto",bottom:"auto",left:"auto"};function $0(e){var t=e.x,n=e.y,r=window,i=r.devicePixelRatio||1;return{x:Ft(t*i)/i||0,y:Ft(n*i)/i||0}}function Ic(e){var t,n=e.popper,r=e.popperRect,i=e.placement,o=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,u=e.adaptive,p=e.roundOffsets,c=e.isFixed,f=s.x,m=f===void 0?0:f,d=s.y,h=d===void 0?0:d,g=typeof p=="function"?p({x:m,y:h}):{x:m,y:h};m=g.x,h=g.y;var y=s.hasOwnProperty("x"),T=s.hasOwnProperty("y"),O=ge,C=me,I=window;if(u){var k=mt(n),_="clientHeight",F="clientWidth";if(k===fe(n)&&(k=_e(n),Ke(k).position!=="static"&&a==="absolute"&&(_="scrollHeight",F="scrollWidth")),k=k,i===me||(i===ge||i===be)&&o===xn){C=xe;var $=c&&k===I&&I.visualViewport?I.visualViewport.height:k[_];h-=$-r.height,h*=l?1:-1}if(i===ge||(i===me||i===xe)&&o===xn){O=be;var j=c&&k===I&&I.visualViewport?I.visualViewport.width:k[F];m-=j-r.width,m*=l?1:-1}}var N=Object.assign({position:a},u&&P0),V=p===!0?$0({x:m,y:h}):{x:m,y:h};if(m=V.x,h=V.y,l){var D;return Object.assign({},N,(D={},D[C]=T?"0":"",D[O]=y?"0":"",D.transform=(I.devicePixelRatio||1)<=1?"translate("+m+"px, "+h+"px)":"translate3d("+m+"px, "+h+"px, 0)",D))}return Object.assign({},N,(t={},t[C]=T?h+"px":"",t[O]=y?m+"px":"",t.transform="",t))}function N0(e){var t=e.state,n=e.options,r=n.gpuAcceleration,i=r===void 0?!0:r,o=n.adaptive,s=o===void 0?!0:o,a=n.roundOffsets,l=a===void 0?!0:a;if(!1)var u;var p={placement:Ee(t.placement),variation:ot(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:i,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Ic(Object.assign({},p,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Ic(Object.assign({},p,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var Fc={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:N0,data:{}};var $o={passive:!0};function z0(e){var t=e.state,n=e.instance,r=e.options,i=r.scroll,o=i===void 0?!0:i,s=r.resize,a=s===void 0?!0:s,l=fe(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&u.forEach(function(p){p.addEventListener("scroll",n.update,$o)}),a&&l.addEventListener("resize",n.update,$o),function(){o&&u.forEach(function(p){p.removeEventListener("scroll",n.update,$o)}),a&&l.removeEventListener("resize",n.update,$o)}}var Bc={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:z0,data:{}};var H0={left:"right",right:"left",bottom:"top",top:"bottom"};function Zn(e){return e.replace(/left|right|bottom|top/g,function(t){return H0[t]})}var Y0={start:"end",end:"start"};function No(e){return e.replace(/start|end/g,function(t){return Y0[t]})}function Sn(e){var t=fe(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function An(e){return it(_e(e)).left+Sn(e).scrollLeft}function Ka(e,t){var n=fe(e),r=_e(e),i=n.visualViewport,o=r.clientWidth,s=r.clientHeight,a=0,l=0;if(i){o=i.width,s=i.height;var u=yi();(u||!u&&t==="fixed")&&(a=i.offsetLeft,l=i.offsetTop)}return{width:o,height:s,x:a+An(e),y:l}}function Va(e){var t,n=_e(e),r=Sn(e),i=(t=e.ownerDocument)==null?void 0:t.body,o=ft(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),s=ft(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),a=-r.scrollLeft+An(e),l=-r.scrollTop;return Ke(i||n).direction==="rtl"&&(a+=ft(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:s,x:a,y:l}}function Cn(e){var t=Ke(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)}function zo(e){return["html","body","#document"].indexOf(Ce(e))>=0?e.ownerDocument.body:ke(e)&&Cn(e)?e:zo(Bt(e))}function Qt(e,t){var n;t===void 0&&(t=[]);var r=zo(e),i=r===((n=e.ownerDocument)==null?void 0:n.body),o=fe(r),s=i?[o].concat(o.visualViewport||[],Cn(r)?r:[]):r,a=t.concat(s);return i?a:a.concat(Qt(Bt(s)))}function Xn(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function j0(e,t){var n=it(e,!1,t==="fixed");return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}function Mc(e,t,n){return t===Do?Xn(Ka(e,n)):rt(t)?j0(t,n):Xn(Va(_e(e)))}function q0(e){var t=Qt(Bt(e)),n=["absolute","fixed"].indexOf(Ke(e).position)>=0,r=n&&ke(e)?mt(e):e;return rt(r)?t.filter(function(i){return rt(i)&&bi(i,r)&&Ce(i)!=="body"}):[]}function Wa(e,t,n,r){var i=t==="clippingParents"?q0(e):[].concat(t),o=[].concat(i,[n]),s=o[0],a=o.reduce(function(l,u){var p=Mc(e,u,r);return l.top=ft(p.top,l.top),l.right=kn(p.right,l.right),l.bottom=kn(p.bottom,l.bottom),l.left=ft(p.left,l.left),l},Mc(e,s,r));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function vi(e){var t=e.reference,n=e.element,r=e.placement,i=r?Ee(r):null,o=r?ot(r):null,s=t.x+t.width/2-n.width/2,a=t.y+t.height/2-n.height/2,l;switch(i){case me:l={x:s,y:t.y-n.height};break;case xe:l={x:s,y:t.y+t.height};break;case be:l={x:t.x+t.width,y:a};break;case ge:l={x:t.x-n.width,y:a};break;default:l={x:t.x,y:t.y}}var u=i?On(i):null;if(u!=null){var p=u==="y"?"height":"width";switch(o){case It:l[u]=l[u]-(t[p]/2-n[p]/2);break;case xn:l[u]=l[u]+(t[p]/2-n[p]/2);break;default:}}return l}function dt(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=r===void 0?e.placement:r,o=n.strategy,s=o===void 0?e.strategy:o,a=n.boundary,l=a===void 0?Tc:a,u=n.rootBoundary,p=u===void 0?Do:u,c=n.elementContext,f=c===void 0?Un:c,m=n.altBoundary,d=m===void 0?!1:m,h=n.padding,g=h===void 0?0:h,y=xi(typeof g!="number"?g:ki(g,Gt)),T=f===Un?Sc:Un,O=e.rects.popper,C=e.elements[d?T:f],I=Wa(rt(C)?C:C.contextElement||_e(e.elements.popper),l,p,s),k=it(e.elements.reference),_=vi({reference:k,element:O,strategy:"absolute",placement:i}),F=Xn(Object.assign({},O,_)),$=f===Un?F:k,j={top:I.top-$.top+y.top,bottom:$.bottom-I.bottom+y.bottom,left:I.left-$.left+y.left,right:$.right-I.right+y.right},N=e.modifiersData.offset;if(f===Un&&N){var V=N[i];Object.keys(j).forEach(function(D){var q=[be,xe].indexOf(D)>=0?1:-1,ee=[me,xe].indexOf(D)>=0?"y":"x";j[D]+=V[ee]*q})}return j}function Ua(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=n.boundary,o=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,u=l===void 0?Po:l,p=ot(r),c=p?a?ja:ja.filter(function(d){return ot(d)===p}):Gt,f=c.filter(function(d){return u.indexOf(d)>=0});f.length===0&&(f=c);var m=f.reduce(function(d,h){return d[h]=dt(e,{placement:h,boundary:i,rootBoundary:o,padding:s})[Ee(h)],d},{});return Object.keys(m).sort(function(d,h){return m[d]-m[h]})}function K0(e){if(Ee(e)===Ro)return[];var t=Zn(e);return[No(e),t,No(t)]}function V0(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var i=n.mainAxis,o=i===void 0?!0:i,s=n.altAxis,a=s===void 0?!0:s,l=n.fallbackPlacements,u=n.padding,p=n.boundary,c=n.rootBoundary,f=n.altBoundary,m=n.flipVariations,d=m===void 0?!0:m,h=n.allowedAutoPlacements,g=t.options.placement,y=Ee(g),T=y===g,O=l||(T||!d?[Zn(g)]:K0(g)),C=[g].concat(O).reduce(function(We,ze){return We.concat(Ee(ze)===Ro?Ua(t,{placement:ze,boundary:p,rootBoundary:c,padding:u,flipVariations:d,allowedAutoPlacements:h}):ze)},[]),I=t.rects.reference,k=t.rects.popper,_=new Map,F=!0,$=C[0],j=0;j=0,ee=q?"width":"height",S=dt(t,{placement:N,boundary:p,rootBoundary:c,altBoundary:f,padding:u}),ne=q?D?be:ge:D?xe:me;I[ee]>k[ee]&&(ne=Zn(ne));var J=Zn(ne),pe=[];if(o&&pe.push(S[V]<=0),a&&pe.push(S[ne]<=0,S[J]<=0),pe.every(function(We){return We})){$=N,F=!1;break}_.set(N,pe)}if(F)for(var ie=d?3:1,w=function(ze){var st=C.find(function(Ue){var se=_.get(Ue);if(se)return se.slice(0,ze).every(function(vt){return vt})});if(st)return $=st,"break"},x=ie;x>0;x--){var Ve=w(x);if(Ve==="break")break}t.placement!==$&&(t.modifiersData[r]._skip=!0,t.placement=$,t.reset=!0)}}var Rc={name:"flip",enabled:!0,phase:"main",fn:V0,requiresIfExists:["offset"],data:{_skip:!1}};function Dc(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function Pc(e){return[me,be,xe,ge].some(function(t){return e[t]>=0})}function W0(e){var t=e.state,n=e.name,r=t.rects.reference,i=t.rects.popper,o=t.modifiersData.preventOverflow,s=dt(t,{elementContext:"reference"}),a=dt(t,{altBoundary:!0}),l=Dc(s,r),u=Dc(a,i,o),p=Pc(l),c=Pc(u);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:p,hasPopperEscaped:c},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":c})}var $c={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:W0};function U0(e,t,n){var r=Ee(e),i=[ge,me].indexOf(r)>=0?-1:1,o=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,s=o[0],a=o[1];return s=s||0,a=(a||0)*i,[ge,be].indexOf(r)>=0?{x:a,y:s}:{x:s,y:a}}function G0(e){var t=e.state,n=e.options,r=e.name,i=n.offset,o=i===void 0?[0,0]:i,s=Po.reduce(function(p,c){return p[c]=U0(c,t.rects,o),p},{}),a=s[t.placement],l=a.x,u=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=u),t.modifiersData[r]=s}var Nc={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:G0};function Q0(e){var t=e.state,n=e.name;t.modifiersData[n]=vi({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var zc={name:"popperOffsets",enabled:!0,phase:"read",fn:Q0,data:{}};function Ga(e){return e==="x"?"y":"x"}function Z0(e){var t=e.state,n=e.options,r=e.name,i=n.mainAxis,o=i===void 0?!0:i,s=n.altAxis,a=s===void 0?!1:s,l=n.boundary,u=n.rootBoundary,p=n.altBoundary,c=n.padding,f=n.tether,m=f===void 0?!0:f,d=n.tetherOffset,h=d===void 0?0:d,g=dt(t,{boundary:l,rootBoundary:u,padding:c,altBoundary:p}),y=Ee(t.placement),T=ot(t.placement),O=!T,C=On(y),I=Ga(C),k=t.modifiersData.popperOffsets,_=t.rects.reference,F=t.rects.popper,$=typeof h=="function"?h(Object.assign({},t.rects,{placement:t.placement})):h,j=typeof $=="number"?{mainAxis:$,altAxis:$}:Object.assign({mainAxis:0,altAxis:0},$),N=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(!!k){if(o){var D,q=C==="y"?me:ge,ee=C==="y"?xe:be,S=C==="y"?"height":"width",ne=k[C],J=ne+g[q],pe=ne-g[ee],ie=m?-F[S]/2:0,w=T===It?_[S]:F[S],x=T===It?-F[S]:-_[S],Ve=t.elements.arrow,We=m&&Ve?vn(Ve):{width:0,height:0},ze=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:wi(),st=ze[q],Ue=ze[ee],se=Tn(0,_[S],We[S]),vt=O?_[S]/2-ie-se-st-j.mainAxis:w-se-st-j.mainAxis,at=O?-_[S]/2+ie+se+Ue+j.mainAxis:x+se+Ue+j.mainAxis,ht=t.elements.arrow&&mt(t.elements.arrow),Mt=ht?C==="y"?ht.clientTop||0:ht.clientLeft||0:0,Zt=(D=N==null?void 0:N[C])!=null?D:0,Vo=ne+vt-Zt-Mt,Wo=ne+at-Zt,Si=Tn(m?kn(J,Vo):J,ne,m?ft(pe,Wo):pe);k[C]=Si,V[C]=Si-ne}if(a){var er,Ai=C==="x"?me:ge,Ci=C==="x"?xe:be,Ot=k[I],Xt=I==="y"?"height":"width",tr=Ot+g[Ai],Ei=Ot-g[Ci],nr=[me,ge].indexOf(y)!==-1,Li=(er=N==null?void 0:N[I])!=null?er:0,_i=nr?tr:Ot-_[Xt]-F[Xt]-Li+j.altAxis,Ii=nr?Ot+_[Xt]+F[Xt]-Li-j.altAxis:Ei,L=m&&nr?Lc(_i,Ot,Ii):Tn(m?_i:tr,Ot,m?Ii:Ei);k[I]=L,V[I]=L-Ot}t.modifiersData[r]=V}}var Hc={name:"preventOverflow",enabled:!0,phase:"main",fn:Z0,requiresIfExists:["offset"]};function Qa(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function Za(e){return e===fe(e)||!ke(e)?Sn(e):Qa(e)}function X0(e){var t=e.getBoundingClientRect(),n=Ft(t.width)/e.offsetWidth||1,r=Ft(t.height)/e.offsetHeight||1;return n!==1||r!==1}function Xa(e,t,n){n===void 0&&(n=!1);var r=ke(t),i=ke(t)&&X0(t),o=_e(t),s=it(e,i,n),a={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(r||!r&&!n)&&((Ce(t)!=="body"||Cn(o))&&(a=Za(t)),ke(t)?(l=it(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):o&&(l.x=An(o))),{x:s.left+a.scrollLeft-l.x,y:s.top+a.scrollTop-l.y,width:s.width,height:s.height}}function J0(e){var t=new Map,n=new Set,r=[];e.forEach(function(o){t.set(o.name,o)});function i(o){n.add(o.name);var s=[].concat(o.requires||[],o.requiresIfExists||[]);s.forEach(function(a){if(!n.has(a)){var l=t.get(a);l&&i(l)}}),r.push(o)}return e.forEach(function(o){n.has(o.name)||i(o)}),r}function Ja(e){var t=J0(e);return Ac.reduce(function(n,r){return n.concat(t.filter(function(i){return i.phase===r}))},[])}function el(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function tl(e){var t=e.reduce(function(n,r){var i=n[r.name];return n[r.name]=i?Object.assign({},i,r,{options:Object.assign({},i.options,r.options),data:Object.assign({},i.data,r.data)}):r,n},{});return Object.keys(t).map(function(n){return t[n]})}var Yc={placement:"bottom",modifiers:[],strategy:"absolute"};function jc(){for(var e=arguments.length,t=new Array(e),n=0;n(e%t+t)%t,rl=class{constructor(t,n,r){this.owner=t,this.containerEl=n,n.on("click",".suggestion-item",this.onSuggestionClick.bind(this)),n.on("mousemove",".suggestion-item",this.onSuggestionMouseover.bind(this)),r.register([],"ArrowUp",i=>{if(!i.isComposing)return this.setSelectedItem(this.selectedItem-1,!0),!1}),r.register([],"ArrowDown",i=>{if(!i.isComposing)return this.setSelectedItem(this.selectedItem+1,!0),!1}),r.register([],"Enter",i=>{if(!i.isComposing)return this.useSelectedItem(i),!1})}onSuggestionClick(t,n){t.preventDefault();let r=this.suggestions.indexOf(n);this.setSelectedItem(r,!1),this.useSelectedItem(t)}onSuggestionMouseover(t,n){let r=this.suggestions.indexOf(n);this.setSelectedItem(r,!1)}setSuggestions(t){this.containerEl.empty();let n=[];t.forEach(r=>{let i=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(r,i),n.push(i)}),this.values=t,this.suggestions=n,this.setSelectedItem(0,!1)}useSelectedItem(t){let n=this.values[this.selectedItem];n&&this.owner.selectSuggestion(n,t)}setSelectedItem(t,n){let r=t1(t,this.suggestions.length),i=this.suggestions[this.selectedItem],o=this.suggestions[r];i==null||i.removeClass("is-selected"),o==null||o.addClass("is-selected"),this.selectedItem=r,n&&o.scrollIntoView(!1)}},Ho=class{constructor(t,n){this.app=t,this.inputEl=n,this.scope=new Kc.Scope,this.suggestEl=createDiv("suggestion-container");let r=this.suggestEl.createDiv("suggestion");this.suggest=new rl(this,r,this.scope),this.scope.register([],"Escape",this.close.bind(this)),this.inputEl.addEventListener("input",this.onInputChanged.bind(this)),this.inputEl.addEventListener("focus",this.onInputChanged.bind(this)),this.inputEl.addEventListener("blur",this.close.bind(this)),this.suggestEl.on("mousedown",".suggestion-container",i=>{i.preventDefault()})}onInputChanged(){let t=this.inputEl.value,n=this.getSuggestions(t);if(!n){this.close();return}n.length>0?(this.suggest.setSuggestions(n),this.open(this.app.dom.appContainerEl,this.inputEl)):this.close()}open(t,n){this.app.keymap.pushScope(this.scope),t.appendChild(this.suggestEl),this.popper=nl(n,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"sameWidth",enabled:!0,fn:({state:r,instance:i})=>{let o=`${r.rects.reference.width}px`;r.styles.popper.width!==o&&(r.styles.popper.width=o,i.update())},phase:"beforeWrite",requires:["computeStyles"]}]})}close(){this.app.keymap.popScope(this.scope),this.suggest.setSuggestions([]),this.popper&&this.popper.destroy(),this.suggestEl.detach()}};var Oi=class extends Ho{constructor(n,r,i=[]){super(n,r);this.app=n;this.inputEl=r;this.valuesToExclude=i}getSuggestions(n){let r=this.app.commands.listCommands();if(!r)return[];let i=r.filter(a=>{for(let l of this.valuesToExclude)if(l.id==a.id&&!(this.inputEl.hasAttribute("commandId")&&this.inputEl.getAttribute("commandId")==a.id))return!1;return!0}),o=[],s=n.toLowerCase();return i.forEach(a=>{(a.id.contains(s)||a.name.toLowerCase().contains(s))&&o.push(a)}),o}renderSuggestion(n,r){r.setText(n.name)}selectSuggestion(n){this.inputEl.value=n.name,this.inputEl.setAttribute("commandId",n.id),this.inputEl.trigger("input"),this.close()}};var Yo=require("obsidian");var jo=class{constructor(){this.disabledRules=[]}lintText(t){let n=t.oldText;this.disabledRules=dc(n);let r=this.runBeforeRegularRules(t);for(let i of Et){if(this.disabledRules.includes(i.alias())){jt(i.alias()+" is disabled");continue}else if(i.hasSpecialExecutionOrder)continue;[r]=pt.applyIfEnabledBase(i,r,t.settings,{fileCreatedTime:t.fileInfo.createdAtFormatted,fileModifiedTime:t.fileInfo.modifiedAtFormatted,fileName:t.fileInfo.name,locale:t.momentLocale})}return t.oldText=r,this.runAfterRegularRules(n,t)}runBeforeRegularRules(t){let n=t.oldText;return[n]=yn.applyIfEnabled(n,t.settings,this.disabledRules),[n]=gn.applyIfEnabled(n,t.settings,this.disabledRules),n}runAfterRegularRules(t,n){let r=n.oldText,i=n.getCurrentTime(),o;[r,o]=Vt.applyIfEnabled(r,n.settings,this.disabledRules,{fileCreatedTime:n.fileInfo.createdAtFormatted,fileModifiedTime:n.fileInfo.modifiedAtFormatted,currentTime:i,alreadyModified:t!=r,locale:n.momentLocale});let s=Vt.getRuleOptions(n.settings);return i=n.getCurrentTime(),[r]=wn.applyIfEnabled(r,n.settings,this.disabledRules,{currentTimeFormatted:i.format(s.format),yamlTimestampDateModifiedEnabled:o&&s.dateModified,dateModifiedKey:s.dateModifiedKey}),r}runCustomCommands(t,n){jt("Running Custom Lint Commands");let r=new Set;for(let i of t){if(i.id){if(r.has(i.id)){wc(`You cannot run the same command ("${i.name}") as a custom lint rule twice.`);continue}}else continue;try{r.add(i.id),n.executeCommandById(i.id)}catch(o){vo(o,`Custom Lint Command ${i.id}`)}}}};function il(e,t,n,r){let i=(0,Yo.moment)(t.stat.ctime);i.locale(n);let o=(0,Yo.moment)(t.stat.mtime);o.locale(n);let s=o.format(),a=i.format();return{oldText:e,fileInfo:{name:t.basename,createdAtFormatted:a,modifiedAtFormatted:s},settings:r,momentLocale:n,getCurrentTime:()=>{let l=(0,Yo.moment)();return l.locale(n),l}}}var n1={en:"en-gb",zh:"zh-cn","zh-TW":"zh-tw",ru:"ru",ko:"ko",it:"it",id:"id",ro:"ro","pt-BR":"pt-br",cz:"cs",da:"da",de:"de",es:"es",fr:"fr",no:"nn",pl:"pl",pt:"pt",tr:"tr",hi:"hi",nl:"nl",ar:"ar",ja:"ja"},qo=class extends Z.Plugin{constructor(){super(...arguments);this.isEnabled=!0;this.rulesRunner=new jo}async onload(){var o,s;Lr("Loading plugin"),this.isEnabled=!0;for(let a in Ut){let l=Ut[a];(0,Z.addIcon)(l.id,l.source)}await this.loadSettings(),this.addCommand({id:"lint-file",name:"Lint the current file",editorCallback:a=>this.runLinterEditor(a),icon:Ut.file.id,hotkeys:[{modifiers:["Mod","Alt"],key:"l"}]}),this.addCommand({id:"lint-all-files",name:"Lint all files in the vault",icon:Ut.vault.id,callback:()=>{let a="This will edit all of your files and may introduce errors.",l="Lint All",u="Linting all files...";new Ko(this.app,a,l,u,()=>this.runLinterAllFiles(this.app)).open()}}),this.addCommand({id:"lint-all-files-in-folder",name:"Lint all files in the current folder",icon:Ut.folder.id,editorCheckCallback:(a,l)=>{if(a)return!this.app.workspace.getActiveFile().parent.isRoot();this.createFolderLintModal(this.app.workspace.getActiveFile().parent)}}),this.registerEvent(this.app.workspace.on("file-menu",(a,l)=>{l instanceof Z.TFolder&&a.addItem(u=>{u.setTitle("Lint folder").setIcon(Ut.folder.id).onClick(()=>this.createFolderLintModal(l))})})),this.eventRef=this.app.workspace.on("file-menu",(a,l,u)=>this.onMenuOpenCallback(a,l,u)),this.registerEvent(this.eventRef);let n=(s=(o=this.app.commands)==null?void 0:o.commands)==null?void 0:s["editor:save-file"];typeof(n==null?void 0:n.callback)=="function"&&(n.callback=()=>{if(this.settings.lintOnSave&&this.isEnabled){let a=this.app.workspace.getActiveViewOfType(Z.MarkdownView).editor,l=this.app.workspace.getActiveFile();this.shouldIgnoreFile(l)||this.runLinterEditor(a)}});let i=this;window.CodeMirrorAdapter.commands.save=()=>{i.app.commands.executeCommandById("editor:save-file")},this.addSettingTab(new ol(this.app,this))}async onunload(){Lr("Unloading plugin"),this.isEnabled=!1,this.app.workspace.offref(this.eventRef)}async loadSettings(){this.settings={ruleConfigs:{},lintOnSave:!1,displayChanged:!0,foldersToIgnore:[],linterLocale:"system-default",logLevel:Vc.default.levels.ERROR,lintCommands:[]};let r=await this.loadData()||{};for(let i of Et)if(this.settings.ruleConfigs[i.name]=i.getDefaultOptions(),(r==null?void 0:r.ruleConfigs)&&(r==null?void 0:r.ruleConfigs[i.name])&&(Object.assign(this.settings.ruleConfigs[i.name],r.ruleConfigs[i.name]),r.ruleConfigs[i.name].Enabled!==void 0)){let o=i.enabledOptionName();this.settings.ruleConfigs[i.name][o]=r.ruleConfigs[i.name].Enabled,delete this.settings.ruleConfigs[i.name].Enabled}Object.prototype.hasOwnProperty.call(r,"lintOnSave")&&(this.settings.lintOnSave=r.lintOnSave),Object.prototype.hasOwnProperty.call(r,"displayChanged")&&(this.settings.displayChanged=r.displayChanged),Object.prototype.hasOwnProperty.call(r,"foldersToIgnore")&&(this.settings.foldersToIgnore=r.foldersToIgnore),Object.prototype.hasOwnProperty.call(r,"linterLocale")&&(this.settings.linterLocale=r.linterLocale),Object.prototype.hasOwnProperty.call(r,"logLevel")&&(this.settings.logLevel=r.logLevel),Object.prototype.hasOwnProperty.call(r,"lintCommands")&&(this.settings.lintCommands=r.lintCommands),xc(this.settings.logLevel),this.setOrUpdateMomentInstance()}async saveSettings(){await this.saveData(this.settings)}onMenuOpenCallback(n,r,i){r instanceof Z.TFile&&r.extension==="md"&&n.addItem(o=>{o.setIcon(Ut.file.id),o.setTitle("Lint file"),o.onClick(async s=>{this.runLinterFile(r)})})}shouldIgnoreFile(n){for(let r of this.settings.foldersToIgnore)if(r.length>0&&n.path.startsWith(r))return!0;return!1}async runLinterFile(n){let r=su(await this.app.vault.read(n)),i=this.rulesRunner.lintText(il(r,n,this.momentLocale,this.settings));await this.app.vault.modify(n,i)}async runLinterAllFiles(n){let r=0;await Promise.all(n.vault.getMarkdownFiles().map(async o=>{if(!this.shouldIgnoreFile(o))try{await this.runLinterFile(o)}catch(s){this.handleLintError(o,s,"Lint All Files Error in File '${file.path}'"),r+=1}}));let i=0;if(r===0)new Z.Notice("Linted all files",i);else{let o=r===1?"was 1 error":"were "+r+" errors";new Z.Notice("Linted all files and there "+o+".",i)}}async runLinterAllFilesInFolder(n){Lr("Linting folder "+n.name);let r=0,i=0,o=(0,Z.normalizePath)(n.path)+"/";await Promise.all(this.app.vault.getMarkdownFiles().map(async a=>{if((0,Z.normalizePath)(a.path).startsWith(o)&&!this.shouldIgnoreFile(a)){try{await this.runLinterFile(a)}catch(l){this.handleLintError(a,l,"Lint All Files in Folder Error in File '${file.path}'"),r+=1}i++}}));let s=0;if(r===0)new Z.Notice("Linted all "+i+" files in "+n.name+".",s);else{let a=r===1?"was 1 error":"were "+r+" errors";new Z.Notice("Linted all "+i+" files in "+n.name+" and there "+a+".",s)}}createFolderLintModal(n){let r="This will edit all of your files in "+n.name+" including files in its subfolders which may introduce errors.",i="Lint All Files in "+n.name,o="Linting all files in "+n.name+"...";new Ko(this.app,r,i,o,()=>this.runLinterAllFilesInFolder(n)).open()}runLinterEditor(n){Lr("Running linter");let r=this.app.workspace.getActiveFile(),i=n.getValue(),o;try{o=this.rulesRunner.lintText(il(i,r,this.momentLocale,this.settings))}catch(c){this.handleLintError(r,c,"Lint File Error in File '${file.path}'",!1)}let a=new Jn.default.diff_match_patch().diff_main(i,o),l="";a.forEach(c=>{function f(h){let g=h.split(` -`);return{line:g.length-1,ch:g[g.length-1].length}}let[m,d]=c;if(m==Jn.default.DIFF_INSERT)n.replaceRange(d,f(l)),l+=d;else if(m==Jn.default.DIFF_DELETE){let h=f(l),g=l;g+=d;let y=f(g);n.replaceRange("",h,y)}else l+=d});let u=a.map(c=>c[0]==Jn.default.DIFF_INSERT?c[1].length:0).reduce((c,f)=>c+f,0),p=a.map(c=>c[0]==Jn.default.DIFF_DELETE?c[1].length:0).reduce((c,f)=>c+f,0);this.displayChangedMessage(u,p);try{this.rulesRunner.runCustomCommands(this.settings.lintCommands,this.app.commands)}catch(c){this.handleLintError(r,c,"Lint File Error in File '${file.path}'",!1)}}async setOrUpdateMomentInstance(){var a;let n=localStorage.getItem("language")||"en",r=(a=navigator.language)==null?void 0:a.toLowerCase(),i=n1[n];this.settings.linterLocale!=="system-default"?i=this.settings.linterLocale:r.startsWith(n)&&(i=r),this.momentLocale=i;let o=Ti.moment.locale(),s=Ti.moment.locale(i);jt(`Trying to switch Moment.js locale to ${i}, got ${s}`),Ti.moment.locale(o)}displayChangedMessage(n,r){if(this.settings.displayChanged){let i=b` - ${n} characters added + `,options:{fileName:"Filename"}})]}get optionBuilders(){return[new un({OptionsClass:cr,name:"Title Key",description:"Which YAML key to use for title",optionsKey:"titleKey"})]}};Ri=E([v.register],Ri);var my=` + + + + + +`,fy=` + + + + + + + +`,dy=` + + + + + + + + + + + + +`,hy=` + +`,gy=` + +`,yy=` + +`,by=` + +`,wy=` + +`,xy=` + +`,ky=` + +`,vy=` + +`,Sy=` + +`,De={folder:{id:"lint-folder",source:fy},file:{id:"lint-file",source:my},vault:{id:"lint-vault",source:dy},whitespace:{id:"lint-whitespace",source:hy},math:{id:"lint-math",source:gy},content:{id:"lint-content",source:yy},paste:{id:"lint-paste",source:by},custom:{id:"lint-custom",source:wy},heading:{id:"lint-heading",source:xy},footer:{id:"lint-footer",source:ky},yaml:{id:"lint-yaml",source:vy},general:{id:"lint-general",source:Sy}};var mr=require("obsidian");var ss=class{constructor(){this.disabledRules=[]}lintText(n){let t=n.oldText;this.disabledRules=Du(t);let r=this.runBeforeRegularRules(n);for(let i of vt){if(this.disabledRules.includes(i.alias())){Vt(i.alias()+" is disabled");continue}else if(i.hasSpecialExecutionOrder||i.type==="Paste")continue;[r]=mt.applyIfEnabledBase(i,r,n.settings,{fileCreatedTime:n.fileInfo.createdAtFormatted,fileModifiedTime:n.fileInfo.modifiedAtFormatted,fileName:n.fileInfo.name,locale:n.momentLocale,minimumNumberOfDollarSignsToBeAMathBlock:n.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock,aliasArrayStyle:n.settings.commonStyles.aliasArrayStyle,tagArrayStyle:n.settings.commonStyles.tagArrayStyle,defaultEscapeCharacter:n.settings.commonStyles.escapeCharacter})}return n.oldText=r,this.runAfterRegularRules(t,n)}runBeforeRegularRules(n){let t=n.oldText;return[t]=Sn.applyIfEnabled(t,n.settings,this.disabledRules),[t]=kn.applyIfEnabled(t,n.settings,this.disabledRules,{defaultEscapeCharacter:n.settings.commonStyles.escapeCharacter}),t}runAfterRegularRules(n,t){let r=t.oldText;[r]=vn.applyIfEnabled(r,t.settings,this.disabledRules,{defaultEscapeCharacter:t.settings.commonStyles.escapeCharacter});let i=t.getCurrentTime(),o;[r,o]=Xt.applyIfEnabled(r,t.settings,this.disabledRules,{fileCreatedTime:t.fileInfo.createdAtFormatted,fileModifiedTime:t.fileInfo.modifiedAtFormatted,currentTime:i,alreadyModified:n!=r,locale:t.momentLocale});let s=Xt.getRuleOptions(t.settings);return i=t.getCurrentTime(),[r]=Mn.applyIfEnabled(r,t.settings,this.disabledRules,{currentTimeFormatted:i.format(s.format),yamlTimestampDateModifiedEnabled:o&&s.dateModified,dateModifiedKey:s.dateModifiedKey}),r}runCustomCommands(n,t){Vt("Running Custom Lint Commands");let r=new Set;for(let i of n){if(i.id){if(r.has(i.id)){bo(`You cannot run the same command ("${i.name}") as a custom lint rule twice.`);continue}}else continue;try{r.add(i.id),t.executeCommandById(i.id)}catch(o){ho(o,`Custom Lint Command ${i.id}`)}}}runPasteLint(n,t){let r=t.oldText;return[r]=En.applyIfEnabled(r,t.settings,[]),[r]=Bn.applyIfEnabled(r,t.settings,[]),[r]=_n.applyIfEnabled(r,t.settings,[]),[r]=An.applyIfEnabled(r,t.settings,[]),[r]=Ln.applyIfEnabled(r,t.settings,[]),[r]=Tn.applyIfEnabled(r,t.settings,[],{lineContent:n}),[r]=On.applyIfEnabled(r,t.settings,[],{lineContent:n}),[r]=pn.applyIfEnabled(r,t.settings,[],{lineContent:n}),r}};function as(e,n=null,t,r){let i=n?(0,mr.moment)(n.stat.ctime):(0,mr.moment)();i.locale(t);let o=n?(0,mr.moment)(n.stat.mtime):(0,mr.moment)();o.locale(t);let s=o.format(),a=i.format();return{oldText:e,fileInfo:{name:n?n.basename:"",createdAtFormatted:a,modifiedAtFormatted:s},settings:r,momentLocale:t,getCurrentTime:()=>{let l=(0,mr.moment)();return l.locale(t),l}}}var ls=require("obsidian"),Di=class extends ls.Modal{constructor(n,t,r,i,o){super(n),this.modalEl.addClass("confirm-modal"),this.contentEl.createEl("h3",{text:"Warning"}).style.textAlign="center",this.contentEl.createEl("p",{text:t+" Make sure you have backed up your files."}).id="confirm-dialog",this.contentEl.createDiv("modal-button-container",s=>{s.createEl("button",{text:"Cancel"}).addEventListener("click",()=>this.close());let a=s.createEl("button",{attr:{type:"submit"},cls:"mod-cta",text:r});a.addEventListener("click",async l=>{new ls.Notice(i),this.close(),await o()}),setTimeout(()=>{a.focus()},50)})}};var fe=require("obsidian");var Cm=require("obsidian");var Am=require("obsidian");var me="top",ve="bottom",we="right",ge="left",us="auto",Jt=[me,ve,we,ge],Dt="start",In="end",om="clippingParents",ps="viewport",fr="popper",sm="reference",vl=Jt.reduce(function(e,n){return e.concat([n+"-"+Dt,n+"-"+In])},[]),cs=[].concat(Jt,[us]).reduce(function(e,n){return e.concat([n,n+"-"+Dt,n+"-"+In])},[]),Ty="beforeRead",Oy="read",Ay="afterRead",Cy="beforeMain",Ey="main",Ly="afterMain",_y="beforeWrite",By="write",My="afterWrite",am=[Ty,Oy,Ay,Cy,Ey,Ly,_y,By,My];function Me(e){return e?(e.nodeName||"").toLowerCase():null}function ce(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var n=e.ownerDocument;return n&&n.defaultView||window}return e}function at(e){var n=ce(e).Element;return e instanceof n||e instanceof Element}function Se(e){var n=ce(e).HTMLElement;return e instanceof n||e instanceof HTMLElement}function dr(e){if(typeof ShadowRoot>"u")return!1;var n=ce(e).ShadowRoot;return e instanceof n||e instanceof ShadowRoot}function Iy(e){var n=e.state;Object.keys(n.elements).forEach(function(t){var r=n.styles[t]||{},i=n.attributes[t]||{},o=n.elements[t];!Se(o)||!Me(o)||(Object.assign(o.style,r),Object.keys(i).forEach(function(s){var a=i[s];a===!1?o.removeAttribute(s):o.setAttribute(s,a===!0?"":a)}))})}function Fy(e){var n=e.state,t={popper:{position:n.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(n.elements.popper.style,t.popper),n.styles=t,n.elements.arrow&&Object.assign(n.elements.arrow.style,t.arrow),function(){Object.keys(n.elements).forEach(function(r){var i=n.elements[r],o=n.attributes[r]||{},s=Object.keys(n.styles.hasOwnProperty(r)?n.styles[r]:t[r]),a=s.reduce(function(l,u){return l[u]="",l},{});!Se(i)||!Me(i)||(Object.assign(i.style,a),Object.keys(o).forEach(function(l){i.removeAttribute(l)}))})}}var lm={name:"applyStyles",enabled:!0,phase:"write",fn:Iy,effect:Fy,requires:["computeStyles"]};function Ie(e){return e.split("-")[0]}var ht=Math.max,Fn=Math.min,Pt=Math.round;function hr(){var e=navigator.userAgentData;return e!=null&&e.brands?e.brands.map(function(n){return n.brand+"/"+n.version}).join(" "):navigator.userAgent}function Pi(){return!/^((?!chrome|android).)*safari/i.test(hr())}function lt(e,n,t){n===void 0&&(n=!1),t===void 0&&(t=!1);var r=e.getBoundingClientRect(),i=1,o=1;n&&Se(e)&&(i=e.offsetWidth>0&&Pt(r.width)/e.offsetWidth||1,o=e.offsetHeight>0&&Pt(r.height)/e.offsetHeight||1);var s=at(e)?ce(e):window,a=s.visualViewport,l=!Pi()&&t,u=(r.left+(l&&a?a.offsetLeft:0))/i,p=(r.top+(l&&a?a.offsetTop:0))/o,c=r.width/i,m=r.height/o;return{width:c,height:m,top:p,right:u+c,bottom:p+m,left:u,x:u,y:p}}function Rn(e){var n=lt(e),t=e.offsetWidth,r=e.offsetHeight;return Math.abs(n.width-t)<=1&&(t=n.width),Math.abs(n.height-r)<=1&&(r=n.height),{x:e.offsetLeft,y:e.offsetTop,width:t,height:r}}function $i(e,n){var t=n.getRootNode&&n.getRootNode();if(e.contains(n))return!0;if(t&&dr(t)){var r=n;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function Ue(e){return ce(e).getComputedStyle(e)}function Sl(e){return["table","td","th"].indexOf(Me(e))>=0}function Pe(e){return((at(e)?e.ownerDocument:e.document)||window.document).documentElement}function $t(e){return Me(e)==="html"?e:e.assignedSlot||e.parentNode||(dr(e)?e.host:null)||Pe(e)}function um(e){return!Se(e)||Ue(e).position==="fixed"?null:e.offsetParent}function Ry(e){var n=/firefox/i.test(hr()),t=/Trident/i.test(hr());if(t&&Se(e)){var r=Ue(e);if(r.position==="fixed")return null}var i=$t(e);for(dr(i)&&(i=i.host);Se(i)&&["html","body"].indexOf(Me(i))<0;){var o=Ue(i);if(o.transform!=="none"||o.perspective!=="none"||o.contain==="paint"||["transform","perspective"].indexOf(o.willChange)!==-1||n&&o.willChange==="filter"||n&&o.filter&&o.filter!=="none")return i;i=i.parentNode}return null}function gt(e){for(var n=ce(e),t=um(e);t&&Sl(t)&&Ue(t).position==="static";)t=um(t);return t&&(Me(t)==="html"||Me(t)==="body"&&Ue(t).position==="static")?n:t||Ry(e)||n}function Dn(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Pn(e,n,t){return ht(e,Fn(n,t))}function pm(e,n,t){var r=Pn(e,n,t);return r>t?t:r}function Ni(){return{top:0,right:0,bottom:0,left:0}}function zi(e){return Object.assign({},Ni(),e)}function Hi(e,n){return n.reduce(function(t,r){return t[r]=e,t},{})}var Dy=function(n,t){return n=typeof n=="function"?n(Object.assign({},t.rects,{placement:t.placement})):n,zi(typeof n!="number"?n:Hi(n,Jt))};function Py(e){var n,t=e.state,r=e.name,i=e.options,o=t.elements.arrow,s=t.modifiersData.popperOffsets,a=Ie(t.placement),l=Dn(a),u=[ge,we].indexOf(a)>=0,p=u?"height":"width";if(!(!o||!s)){var c=Dy(i.padding,t),m=Rn(o),f=l==="y"?me:ge,d=l==="y"?ve:we,h=t.rects.reference[p]+t.rects.reference[l]-s[l]-t.rects.popper[p],y=s[l]-t.rects.reference[l],b=gt(o),A=b?l==="y"?b.clientHeight||0:b.clientWidth||0:0,O=h/2-y/2,L=c[f],M=A-m[p]-c[d],T=A/2-m[p]/2+O,B=Pn(L,T,M),I=l;t.modifiersData[r]=(n={},n[I]=B,n.centerOffset=B-T,n)}}function $y(e){var n=e.state,t=e.options,r=t.element,i=r===void 0?"[data-popper-arrow]":r;i!=null&&(typeof i=="string"&&(i=n.elements.popper.querySelector(i),!i)||!$i(n.elements.popper,i)||(n.elements.arrow=i))}var cm={name:"arrow",enabled:!0,phase:"main",fn:Py,effect:$y,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ut(e){return e.split("-")[1]}var Ny={top:"auto",right:"auto",bottom:"auto",left:"auto"};function zy(e){var n=e.x,t=e.y,r=window,i=r.devicePixelRatio||1;return{x:Pt(n*i)/i||0,y:Pt(t*i)/i||0}}function mm(e){var n,t=e.popper,r=e.popperRect,i=e.placement,o=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,u=e.adaptive,p=e.roundOffsets,c=e.isFixed,m=s.x,f=m===void 0?0:m,d=s.y,h=d===void 0?0:d,y=typeof p=="function"?p({x:f,y:h}):{x:f,y:h};f=y.x,h=y.y;var b=s.hasOwnProperty("x"),A=s.hasOwnProperty("y"),O=ge,L=me,M=window;if(u){var T=gt(t),B="clientHeight",I="clientWidth";if(T===ce(t)&&(T=Pe(t),Ue(T).position!=="static"&&a==="absolute"&&(B="scrollHeight",I="scrollWidth")),T=T,i===me||(i===ge||i===we)&&o===In){L=ve;var $=c&&T===M&&M.visualViewport?M.visualViewport.height:T[B];h-=$-r.height,h*=l?1:-1}if(i===ge||(i===me||i===ve)&&o===In){O=we;var j=c&&T===M&&M.visualViewport?M.visualViewport.width:T[I];f-=j-r.width,f*=l?1:-1}}var z=Object.assign({position:a},u&&Ny),W=p===!0?zy({x:f,y:h}):{x:f,y:h};if(f=W.x,h=W.y,l){var D;return Object.assign({},z,(D={},D[L]=A?"0":"",D[O]=b?"0":"",D.transform=(M.devicePixelRatio||1)<=1?"translate("+f+"px, "+h+"px)":"translate3d("+f+"px, "+h+"px, 0)",D))}return Object.assign({},z,(n={},n[L]=A?h+"px":"",n[O]=b?f+"px":"",n.transform="",n))}function Hy(e){var n=e.state,t=e.options,r=t.gpuAcceleration,i=r===void 0?!0:r,o=t.adaptive,s=o===void 0?!0:o,a=t.roundOffsets,l=a===void 0?!0:a;if(!1)var u;var p={placement:Ie(n.placement),variation:ut(n.placement),popper:n.elements.popper,popperRect:n.rects.popper,gpuAcceleration:i,isFixed:n.options.strategy==="fixed"};n.modifiersData.popperOffsets!=null&&(n.styles.popper=Object.assign({},n.styles.popper,mm(Object.assign({},p,{offsets:n.modifiersData.popperOffsets,position:n.options.strategy,adaptive:s,roundOffsets:l})))),n.modifiersData.arrow!=null&&(n.styles.arrow=Object.assign({},n.styles.arrow,mm(Object.assign({},p,{offsets:n.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),n.attributes.popper=Object.assign({},n.attributes.popper,{"data-popper-placement":n.placement})}var fm={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Hy,data:{}};var ms={passive:!0};function Yy(e){var n=e.state,t=e.instance,r=e.options,i=r.scroll,o=i===void 0?!0:i,s=r.resize,a=s===void 0?!0:s,l=ce(n.elements.popper),u=[].concat(n.scrollParents.reference,n.scrollParents.popper);return o&&u.forEach(function(p){p.addEventListener("scroll",t.update,ms)}),a&&l.addEventListener("resize",t.update,ms),function(){o&&u.forEach(function(p){p.removeEventListener("scroll",t.update,ms)}),a&&l.removeEventListener("resize",t.update,ms)}}var dm={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Yy,data:{}};var qy={left:"right",right:"left",bottom:"top",top:"bottom"};function gr(e){return e.replace(/left|right|bottom|top/g,function(n){return qy[n]})}var jy={start:"end",end:"start"};function fs(e){return e.replace(/start|end/g,function(n){return jy[n]})}function $n(e){var n=ce(e),t=n.pageXOffset,r=n.pageYOffset;return{scrollLeft:t,scrollTop:r}}function Nn(e){return lt(Pe(e)).left+$n(e).scrollLeft}function Tl(e,n){var t=ce(e),r=Pe(e),i=t.visualViewport,o=r.clientWidth,s=r.clientHeight,a=0,l=0;if(i){o=i.width,s=i.height;var u=Pi();(u||!u&&n==="fixed")&&(a=i.offsetLeft,l=i.offsetTop)}return{width:o,height:s,x:a+Nn(e),y:l}}function Ol(e){var n,t=Pe(e),r=$n(e),i=(n=e.ownerDocument)==null?void 0:n.body,o=ht(t.scrollWidth,t.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),s=ht(t.scrollHeight,t.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),a=-r.scrollLeft+Nn(e),l=-r.scrollTop;return Ue(i||t).direction==="rtl"&&(a+=ht(t.clientWidth,i?i.clientWidth:0)-o),{width:o,height:s,x:a,y:l}}function zn(e){var n=Ue(e),t=n.overflow,r=n.overflowX,i=n.overflowY;return/auto|scroll|overlay|hidden/.test(t+i+r)}function ds(e){return["html","body","#document"].indexOf(Me(e))>=0?e.ownerDocument.body:Se(e)&&zn(e)?e:ds($t(e))}function en(e,n){var t;n===void 0&&(n=[]);var r=ds(e),i=r===((t=e.ownerDocument)==null?void 0:t.body),o=ce(r),s=i?[o].concat(o.visualViewport||[],zn(r)?r:[]):r,a=n.concat(s);return i?a:a.concat(en($t(s)))}function yr(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Vy(e,n){var t=lt(e,!1,n==="fixed");return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function hm(e,n,t){return n===ps?yr(Tl(e,t)):at(n)?Vy(n,t):yr(Ol(Pe(e)))}function Wy(e){var n=en($t(e)),t=["absolute","fixed"].indexOf(Ue(e).position)>=0,r=t&&Se(e)?gt(e):e;return at(r)?n.filter(function(i){return at(i)&&$i(i,r)&&Me(i)!=="body"}):[]}function Al(e,n,t,r){var i=n==="clippingParents"?Wy(e):[].concat(n),o=[].concat(i,[t]),s=o[0],a=o.reduce(function(l,u){var p=hm(e,u,r);return l.top=ht(p.top,l.top),l.right=Fn(p.right,l.right),l.bottom=Fn(p.bottom,l.bottom),l.left=ht(p.left,l.left),l},hm(e,s,r));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function Yi(e){var n=e.reference,t=e.element,r=e.placement,i=r?Ie(r):null,o=r?ut(r):null,s=n.x+n.width/2-t.width/2,a=n.y+n.height/2-t.height/2,l;switch(i){case me:l={x:s,y:n.y-t.height};break;case ve:l={x:s,y:n.y+n.height};break;case we:l={x:n.x+n.width,y:a};break;case ge:l={x:n.x-t.width,y:a};break;default:l={x:n.x,y:n.y}}var u=i?Dn(i):null;if(u!=null){var p=u==="y"?"height":"width";switch(o){case Dt:l[u]=l[u]-(n[p]/2-t[p]/2);break;case In:l[u]=l[u]+(n[p]/2-t[p]/2);break;default:}}return l}function yt(e,n){n===void 0&&(n={});var t=n,r=t.placement,i=r===void 0?e.placement:r,o=t.strategy,s=o===void 0?e.strategy:o,a=t.boundary,l=a===void 0?om:a,u=t.rootBoundary,p=u===void 0?ps:u,c=t.elementContext,m=c===void 0?fr:c,f=t.altBoundary,d=f===void 0?!1:f,h=t.padding,y=h===void 0?0:h,b=zi(typeof y!="number"?y:Hi(y,Jt)),A=m===fr?sm:fr,O=e.rects.popper,L=e.elements[d?A:m],M=Al(at(L)?L:L.contextElement||Pe(e.elements.popper),l,p,s),T=lt(e.elements.reference),B=Yi({reference:T,element:O,strategy:"absolute",placement:i}),I=yr(Object.assign({},O,B)),$=m===fr?I:T,j={top:M.top-$.top+b.top,bottom:$.bottom-M.bottom+b.bottom,left:M.left-$.left+b.left,right:$.right-M.right+b.right},z=e.modifiersData.offset;if(m===fr&&z){var W=z[i];Object.keys(j).forEach(function(D){var V=[we,ve].indexOf(D)>=0?1:-1,J=[me,ve].indexOf(D)>=0?"y":"x";j[D]+=W[J]*V})}return j}function Cl(e,n){n===void 0&&(n={});var t=n,r=t.placement,i=t.boundary,o=t.rootBoundary,s=t.padding,a=t.flipVariations,l=t.allowedAutoPlacements,u=l===void 0?cs:l,p=ut(r),c=p?a?vl:vl.filter(function(d){return ut(d)===p}):Jt,m=c.filter(function(d){return u.indexOf(d)>=0});m.length===0&&(m=c);var f=m.reduce(function(d,h){return d[h]=yt(e,{placement:h,boundary:i,rootBoundary:o,padding:s})[Ie(h)],d},{});return Object.keys(f).sort(function(d,h){return f[d]-f[h]})}function Ky(e){if(Ie(e)===us)return[];var n=gr(e);return[fs(e),n,fs(n)]}function Uy(e){var n=e.state,t=e.options,r=e.name;if(!n.modifiersData[r]._skip){for(var i=t.mainAxis,o=i===void 0?!0:i,s=t.altAxis,a=s===void 0?!0:s,l=t.fallbackPlacements,u=t.padding,p=t.boundary,c=t.rootBoundary,m=t.altBoundary,f=t.flipVariations,d=f===void 0?!0:f,h=t.allowedAutoPlacements,y=n.options.placement,b=Ie(y),A=b===y,O=l||(A||!d?[gr(y)]:Ky(y)),L=[y].concat(O).reduce(function(Ze,je){return Ze.concat(Ie(je)===us?Cl(n,{placement:je,boundary:p,rootBoundary:c,padding:u,flipVariations:d,allowedAutoPlacements:h}):je)},[]),M=n.rects.reference,T=n.rects.popper,B=new Map,I=!0,$=L[0],j=0;j=0,J=V?"width":"height",C=yt(n,{placement:z,boundary:p,rootBoundary:c,altBoundary:m,padding:u}),te=V?D?we:ge:D?ve:me;M[J]>T[J]&&(te=gr(te));var X=gr(te),le=[];if(o&&le.push(C[W]<=0),a&&le.push(C[te]<=0,C[X]<=0),le.every(function(Ze){return Ze})){$=z,I=!1;break}B.set(z,le)}if(I)for(var re=d?3:1,x=function(je){var pt=L.find(function(Qe){var oe=B.get(Qe);if(oe)return oe.slice(0,je).every(function(At){return At})});if(pt)return $=pt,"break"},w=re;w>0;w--){var Ge=x(w);if(Ge==="break")break}n.placement!==$&&(n.modifiersData[r]._skip=!0,n.placement=$,n.reset=!0)}}var gm={name:"flip",enabled:!0,phase:"main",fn:Uy,requiresIfExists:["offset"],data:{_skip:!1}};function ym(e,n,t){return t===void 0&&(t={x:0,y:0}),{top:e.top-n.height-t.y,right:e.right-n.width+t.x,bottom:e.bottom-n.height+t.y,left:e.left-n.width-t.x}}function bm(e){return[me,we,ve,ge].some(function(n){return e[n]>=0})}function Gy(e){var n=e.state,t=e.name,r=n.rects.reference,i=n.rects.popper,o=n.modifiersData.preventOverflow,s=yt(n,{elementContext:"reference"}),a=yt(n,{altBoundary:!0}),l=ym(s,r),u=ym(a,i,o),p=bm(l),c=bm(u);n.modifiersData[t]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:p,hasPopperEscaped:c},n.attributes.popper=Object.assign({},n.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":c})}var wm={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Gy};function Zy(e,n,t){var r=Ie(e),i=[ge,me].indexOf(r)>=0?-1:1,o=typeof t=="function"?t(Object.assign({},n,{placement:e})):t,s=o[0],a=o[1];return s=s||0,a=(a||0)*i,[ge,we].indexOf(r)>=0?{x:a,y:s}:{x:s,y:a}}function Qy(e){var n=e.state,t=e.options,r=e.name,i=t.offset,o=i===void 0?[0,0]:i,s=cs.reduce(function(p,c){return p[c]=Zy(c,n.rects,o),p},{}),a=s[n.placement],l=a.x,u=a.y;n.modifiersData.popperOffsets!=null&&(n.modifiersData.popperOffsets.x+=l,n.modifiersData.popperOffsets.y+=u),n.modifiersData[r]=s}var xm={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Qy};function Xy(e){var n=e.state,t=e.name;n.modifiersData[t]=Yi({reference:n.rects.reference,element:n.rects.popper,strategy:"absolute",placement:n.placement})}var km={name:"popperOffsets",enabled:!0,phase:"read",fn:Xy,data:{}};function El(e){return e==="x"?"y":"x"}function Jy(e){var n=e.state,t=e.options,r=e.name,i=t.mainAxis,o=i===void 0?!0:i,s=t.altAxis,a=s===void 0?!1:s,l=t.boundary,u=t.rootBoundary,p=t.altBoundary,c=t.padding,m=t.tether,f=m===void 0?!0:m,d=t.tetherOffset,h=d===void 0?0:d,y=yt(n,{boundary:l,rootBoundary:u,padding:c,altBoundary:p}),b=Ie(n.placement),A=ut(n.placement),O=!A,L=Dn(b),M=El(L),T=n.modifiersData.popperOffsets,B=n.rects.reference,I=n.rects.popper,$=typeof h=="function"?h(Object.assign({},n.rects,{placement:n.placement})):h,j=typeof $=="number"?{mainAxis:$,altAxis:$}:Object.assign({mainAxis:0,altAxis:0},$),z=n.modifiersData.offset?n.modifiersData.offset[n.placement]:null,W={x:0,y:0};if(!!T){if(o){var D,V=L==="y"?me:ge,J=L==="y"?ve:we,C=L==="y"?"height":"width",te=T[L],X=te+y[V],le=te-y[J],re=f?-I[C]/2:0,x=A===Dt?B[C]:I[C],w=A===Dt?-I[C]:-B[C],Ge=n.elements.arrow,Ze=f&&Ge?Rn(Ge):{width:0,height:0},je=n.modifiersData["arrow#persistent"]?n.modifiersData["arrow#persistent"].padding:Ni(),pt=je[V],Qe=je[J],oe=Pn(0,B[C],Ze[C]),At=O?B[C]/2-re-oe-pt-j.mainAxis:x-oe-pt-j.mainAxis,ct=O?-B[C]/2+re+oe+Qe+j.mainAxis:w+oe+Qe+j.mainAxis,bt=n.elements.arrow&>(n.elements.arrow),Nt=bt?L==="y"?bt.clientTop||0:bt.clientLeft||0:0,tn=(D=z?.[L])!=null?D:0,ws=te+At-tn-Nt,xs=te+ct-tn,ji=Pn(f?Fn(X,ws):X,te,f?ht(le,xs):le);T[L]=ji,W[L]=ji-te}if(a){var wr,Vi=L==="x"?me:ge,Wi=L==="x"?ve:we,Ct=T[M],nn=M==="y"?"height":"width",xr=Ct+y[Vi],Ki=Ct-y[Wi],kr=[me,ge].indexOf(b)!==-1,Ui=(wr=z?.[M])!=null?wr:0,Gi=kr?xr:Ct-B[nn]-I[nn]-Ui+j.altAxis,Zi=kr?Ct+B[nn]+I[nn]-Ui-j.altAxis:Ki,_=f&&kr?pm(Gi,Ct,Zi):Pn(f?Gi:xr,Ct,f?Zi:Ki);T[M]=_,W[M]=_-Ct}n.modifiersData[r]=W}}var vm={name:"preventOverflow",enabled:!0,phase:"main",fn:Jy,requiresIfExists:["offset"]};function Ll(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function _l(e){return e===ce(e)||!Se(e)?$n(e):Ll(e)}function eb(e){var n=e.getBoundingClientRect(),t=Pt(n.width)/e.offsetWidth||1,r=Pt(n.height)/e.offsetHeight||1;return t!==1||r!==1}function Bl(e,n,t){t===void 0&&(t=!1);var r=Se(n),i=Se(n)&&eb(n),o=Pe(n),s=lt(e,i,t),a={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(r||!r&&!t)&&((Me(n)!=="body"||zn(o))&&(a=_l(n)),Se(n)?(l=lt(n,!0),l.x+=n.clientLeft,l.y+=n.clientTop):o&&(l.x=Nn(o))),{x:s.left+a.scrollLeft-l.x,y:s.top+a.scrollTop-l.y,width:s.width,height:s.height}}function tb(e){var n=new Map,t=new Set,r=[];e.forEach(function(o){n.set(o.name,o)});function i(o){t.add(o.name);var s=[].concat(o.requires||[],o.requiresIfExists||[]);s.forEach(function(a){if(!t.has(a)){var l=n.get(a);l&&i(l)}}),r.push(o)}return e.forEach(function(o){t.has(o.name)||i(o)}),r}function Ml(e){var n=tb(e);return am.reduce(function(t,r){return t.concat(n.filter(function(i){return i.phase===r}))},[])}function Il(e){var n;return function(){return n||(n=new Promise(function(t){Promise.resolve().then(function(){n=void 0,t(e())})})),n}}function Fl(e){var n=e.reduce(function(t,r){var i=t[r.name];return t[r.name]=i?Object.assign({},i,r,{options:Object.assign({},i.options,r.options),data:Object.assign({},i.data,r.data)}):r,t},{});return Object.keys(n).map(function(t){return n[t]})}var Sm={placement:"bottom",modifiers:[],strategy:"absolute"};function Tm(){for(var e=arguments.length,n=new Array(e),t=0;t(e%n+n)%n,Dl=class{constructor(n,t,r){this.owner=n,this.containerEl=t,t.on("click",".suggestion-item",this.onSuggestionClick.bind(this)),t.on("mousemove",".suggestion-item",this.onSuggestionMouseover.bind(this)),r.register([],"ArrowUp",i=>{if(!i.isComposing)return this.setSelectedItem(this.selectedItem-1,!0),!1}),r.register([],"ArrowDown",i=>{if(!i.isComposing)return this.setSelectedItem(this.selectedItem+1,!0),!1}),r.register([],"Enter",i=>{if(!i.isComposing)return this.useSelectedItem(i),!1})}onSuggestionClick(n,t){n.preventDefault();let r=this.suggestions.indexOf(t);this.setSelectedItem(r,!1),this.useSelectedItem(n)}onSuggestionMouseover(n,t){let r=this.suggestions.indexOf(t);this.setSelectedItem(r,!1)}setSuggestions(n){this.containerEl.empty();let t=[];n.forEach(r=>{let i=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(r,i),t.push(i)}),this.values=n,this.suggestions=t,this.setSelectedItem(0,!1)}useSelectedItem(n){let t=this.values[this.selectedItem];t&&this.owner.selectSuggestion(t,n)}setSelectedItem(n,t){let r=rb(n,this.suggestions.length),i=this.suggestions[this.selectedItem],o=this.suggestions[r];i?.removeClass("is-selected"),o?.addClass("is-selected"),this.selectedItem=r,t&&o.scrollIntoView(!1)}},hs=class{constructor(n,t){this.app=n,this.inputEl=t,this.scope=new Am.Scope,this.suggestEl=createDiv("suggestion-container");let r=this.suggestEl.createDiv("suggestion");this.suggest=new Dl(this,r,this.scope),this.scope.register([],"Escape",this.close.bind(this)),this.inputEl.addEventListener("input",this.onInputChanged.bind(this)),this.inputEl.addEventListener("focus",this.onInputChanged.bind(this)),this.inputEl.addEventListener("blur",this.close.bind(this)),this.suggestEl.on("mousedown",".suggestion-container",i=>{i.preventDefault()})}onInputChanged(){let n=this.inputEl.value,t=this.getSuggestions(n);if(!t){this.close();return}t.length>0?(this.suggest.setSuggestions(t),this.open(this.app.dom.appContainerEl,this.inputEl)):this.close()}open(n,t){this.app.keymap.pushScope(this.scope),n.appendChild(this.suggestEl),this.popper=Rl(t,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"sameWidth",enabled:!0,fn:({state:r,instance:i})=>{let o=`${r.rects.reference.width}px`;r.styles.popper.width!==o&&(r.styles.popper.width=o,i.update())},phase:"beforeWrite",requires:["computeStyles"]}]})}close(){this.app.keymap.popScope(this.scope),this.suggest.setSuggestions([]),this.popper&&this.popper.destroy(),this.suggestEl.detach()}};var qi=class extends hs{constructor(t,r,i=[]){super(t,r);this.app=t;this.inputEl=r;this.valuesToExclude=i}getSuggestions(t){let r=this.app.commands.listCommands();if(!r)return[];let i=r.filter(a=>{for(let l of this.valuesToExclude)if(l.id==a.id&&!(this.inputEl.hasAttribute("commandId")&&this.inputEl.getAttribute("commandId")==a.id))return!1;return!0}),o=[],s=t.toLowerCase();return i.forEach(a=>{(a.id.contains(s)||a.name.toLowerCase().contains(s))&&o.push(a)}),o}renderSuggestion(t,r){r.setText(t.name)}selectSuggestion(t){this.inputEl.value=t.name,this.inputEl.setAttribute("commandId",t.id),this.inputEl.trigger("input"),this.close()}};var ib={General:De.general.id,Custom:De.custom.id,YAML:De.yaml.id,Heading:De.heading.id,Footnote:De.footer.id,Content:De.content.id,Spacing:De.whitespace.id,Paste:De.paste.id},gs=class extends fe.PluginSettingTab{constructor(t,r){super(t,r);this.tabContent=new Map;this.selectedTab="General";this.searchSettingInfo=new Map;this.plugin=r}display(){let{containerEl:t}=this;t.empty(),this.generateSettingsTitle(t,fe.Platform.isMobile);let i=t.createEl("nav",{cls:"linter-setting-header"}).createDiv("linter-setting-tab-group"),o=t.createDiv("linter-setting-content");this.createTabAndContent("General",i,o,(l,u)=>this.generateGeneralSettings(u,l));let s="",a="";for(let l of vt)l.type!==s&&(a=l.type,this.createTabAndContent(a,i,o),s=l.type),this.addRuleToTab(a,l);this.createTabAndContent("Custom",i,o,(l,u)=>this.generateCustomCommandSettings(u,l)),this.createSearchZeroState(o)}createTabAndContent(t,r,i,o){let s=this.selectedTab===t,a=r.createDiv("linter-navigation-item"),l="linter-desktop";fe.Platform.isMobile&&(l="linter-mobile"),a.addClass(l),(0,fe.setIcon)(a.createSpan({cls:"linter-navigation-item-icon"}),ib[t],20),a.createSpan().setText(t),a.onclick=()=>{if(this.selectedTab==t)return;a.addClass("linter-navigation-item-selected");let c=this.tabContent.get(t);if(this.unhideEl(c.content),this.selectedTab!=""){let m=this.tabContent.get(this.selectedTab);m.navButton.removeClass("linter-navigation-item-selected"),this.hideEl(m.content)}else{this.hideEl(this.searchZeroState);for(let m of this.searchSettingInfo)for(let f of m[1])this.unhideEl(f.containerEl);for(let m of this.tabContent){let f=m[1];this.hideEl(f.heading),t!==m[0]&&this.hideEl(f.content)}}this.selectedTab=t};let u=i.createDiv("linter-tab-settings"),p=u.createEl("h2",{text:t+" Settings"});this.hideEl(p),u.id=t.toLowerCase().replace(" ","-"),s?a.addClass("linter-navigation-item-selected"):this.hideEl(u),o&&o(u,t),this.tabContent.set(t,{content:u,heading:p,navButton:a})}addRuleToTab(t,r){let i=this.tabContent.get(t).content;if(i==null)return;let o=i.createDiv();o.id=r.alias(),o.createEl(fe.Platform.isMobile?"h4":"h3",{},a=>{a.innerHTML=`${r.name}`});let s=[];for(let a of r.options)a.display(o,this.plugin.settings,this.plugin),s.push(a.searchInfo);this.addSettingToMasterSettingsList(t,o,r.name.toLowerCase(),r.description.toLowerCase(),s,o.id)}generateCustomCommandSettings(t,r){r.createEl(fe.Platform.isMobile?"h4":"h3",{text:"Custom Commands"});let i=`Custom commands are Obsidian commands that get run after the linter is finished running its regular rules. + This means that they do not run before the YAML timestamp logic runs, so they can cause YAML timestamp to be triggered on the next run of the linter. + You may only select an Obsidian command once. **_Note that this currently only works on linting the current file._**`,o=`When selecting an option, make sure to select the option either by using the mouse or by hitting the enter key. + Other selection methods may not work and only selections of an actual Obsidian command or an empty string will be saved.`;this.addSettingToMasterSettingsList(t,r,t.toLowerCase(),i.replaceAll(` +`," ")+o.replaceAll(` +`," ")),Je(i,r.createEl("p")),r.createEl("p",{text:o}).style.color="#EED202";function s(a,l,u){if(u<0||u===a.length)return;let p=a[l];a[l]=a[u],a[u]=p}new fe.Setting(r).addButton(a=>{a.setButtonText("Add new command").setCta().onClick(()=>{this.plugin.settings.lintCommands.push({id:"",name:""}),this.plugin.saveSettings(),this.display();let l=document.getElementsByClassName("linter-custom-command");l[l.length-1].focus()})}),this.plugin.settings.lintCommands.forEach((a,l)=>{new fe.Setting(r).addSearch(u=>{new qi(this.app,u.inputEl,this.plugin.settings.lintCommands),u.setPlaceholder("Obsidian command").setValue(a.name).onChange(p=>{let c={id:u.inputEl.getAttribute("commandId"),name:p};c.name&&c.id?(this.plugin.settings.lintCommands[l]=c,this.plugin.saveSettings()):!c.name&&!c.id&&(this.plugin.settings.lintCommands[l]=c,this.plugin.saveSettings())}),u.inputEl.setAttr("tabIndex",l),u.inputEl.addClass("linter-custom-command")}).addExtraButton(u=>{u.setIcon("up-chevron-glyph").setTooltip("Move up").onClick(()=>{s(this.plugin.settings.lintCommands,l,l-1),this.plugin.saveSettings(),this.display()})}).addExtraButton(u=>{u.setIcon("down-chevron-glyph").setTooltip("Move down").onClick(()=>{s(this.plugin.settings.lintCommands,l,l+1),this.plugin.saveSettings(),this.display()})}).addExtraButton(u=>{u.setIcon("cross").setTooltip("Delete").onClick(()=>{this.plugin.settings.lintCommands.splice(l,1),this.plugin.saveSettings(),this.display()})})})}generateGeneralSettings(t,r){let i=r.createDiv(),o="Lint on save",s="Lint the file on manual save (when `Ctrl + S` is pressed or when `:w` is executed while using vim keybindings)",a=new fe.Setting(i).setName(o).addToggle(m=>{m.setValue(this.plugin.settings.lintOnSave).onChange(async f=>{this.plugin.settings.lintOnSave=f,await this.plugin.saveSettings()})});Je(s,a.descEl),this.addSettingToMasterSettingsList(t,i,o,s),i=r.createDiv(),o="Display message on lint",s="Display the number of characters changed after linting",new fe.Setting(i).setName(o).setDesc(s).addToggle(m=>{m.setValue(this.plugin.settings.displayChanged).onChange(async f=>{this.plugin.settings.displayChanged=f,await this.plugin.saveSettings()})}),this.addSettingToMasterSettingsList(t,i,o,s),i=r.createDiv(),o="Folders to ignore",s="Folders to ignore when linting all files or linting on save. Enter folder paths separated by newlines",new fe.Setting(i).setName(o).setDesc(s).addTextArea(m=>{m.setValue(this.plugin.settings.foldersToIgnore.join(` +`)).onChange(async f=>{this.plugin.settings.foldersToIgnore=f.split(` +`),await this.plugin.saveSettings()})}),this.addSettingToMasterSettingsList(t,i,o,s);let l=navigator.language?.toLowerCase();i=r.createDiv(),o="Override locale",s="Set this if you want to use a locale different from the default",new fe.Setting(i).setName(o).setDesc(s).addDropdown(m=>{m.addOption("system-default",`Same as system (${l})`),Cm.moment.locales().forEach(f=>{m.addOption(f,f)}),m.setValue(this.plugin.settings.linterLocale),m.onChange(async f=>{this.plugin.settings.linterLocale=f,await this.plugin.setOrUpdateMomentInstance(),await this.plugin.saveSettings()})}),this.addSettingToMasterSettingsList(t,i,o,s);let u=["multi-line","single-line","single string comma delimited","single string to single-line","single string to multi-line"];i=r.createDiv(),o="YAML aliases section style",s="The style of the YAML aliases section",new fe.Setting(i).setName(o).setDesc(s).addDropdown(m=>{u.forEach(f=>{m.addOption(f,f)}),m.setValue(this.plugin.settings.commonStyles.aliasArrayStyle),m.onChange(async f=>{this.plugin.settings.commonStyles.aliasArrayStyle=f,await this.plugin.saveSettings()})}),this.addSettingToMasterSettingsList(t,i,o,s);let p=["multi-line","single-line","single string to single-line","single string to multi-line","single-line space delimited","single string space delimited","single string comma delimited"];i=r.createDiv(),o="YAML tags section style",s="The style of the YAML tags section",new fe.Setting(i).setName(o).setDesc(s).addDropdown(m=>{p.forEach(f=>{m.addOption(f,f)}),m.setValue(this.plugin.settings.commonStyles.tagArrayStyle),m.onChange(async f=>{this.plugin.settings.commonStyles.tagArrayStyle=f,await this.plugin.saveSettings()})}),this.addSettingToMasterSettingsList(t,i,o,s);let c=['"',"'"];i=r.createDiv(),o="Default Escape Character",s="The default character to use to escape YAML values when a single quote and double quote are not present.",new fe.Setting(i).setName(o).setDesc(s).addDropdown(m=>{c.forEach(f=>{m.addOption(f,f)}),m.setValue(this.plugin.settings.commonStyles.escapeCharacter),m.onChange(async f=>{this.plugin.settings.commonStyles.escapeCharacter=f,await this.plugin.saveSettings()})}),this.addSettingToMasterSettingsList(t,i,o,s),i=r.createDiv(),o="Number of Dollar Signs to Indicate Math Block",s="The amount of dollar signs to consider the math content to be a math block instead of inline math",new fe.Setting(i).setName(o).setDesc(s).addText(m=>{m.setValue(this.plugin.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock.toString()).onChange(async f=>{let d=parseInt(f);isNaN(d)&&(d=2),this.plugin.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock=d,await this.plugin.saveSettings()})}),this.addSettingToMasterSettingsList(t,i,o,s)}generateSearchBar(t){let r=new fe.Setting(t);r.settingEl.style.border="none",r.addSearch(i=>{this.search=i}),this.search.setPlaceholder("Search all settings"),this.search.inputEl.onfocus=()=>{for(let i of this.tabContent){let o=i[1];o.navButton.removeClass("linter-navigation-item-selected"),this.unhideEl(o.content),this.unhideEl(o.heading);let s=this.search.getValue();this.selectedTab==""&&s.trim()!=""&&this.searchSettings(s.toLowerCase()),this.selectedTab=""}},this.search.onChange(i=>{this.searchSettings(i.toLowerCase())})}generateSettingsTitle(t,r){let i=t.createDiv("linter-setting-title");r?i.addClass("linter-mobile"):i.createEl("h1").setText("Linter"),this.generateSearchBar(i)}searchSettings(t){let r=new Set,i=this,o=function(s,a){i.unhideEl(s),r.has(a)||r.add(a)};for(let s of this.searchSettingInfo){let a=s[0],l=s[1];for(let u of l)if(t.trim()===""||u.alias?.includes(t)||u.description.includes(t)||u.name.includes(t))o(u.containerEl,a);else if(u.options)for(let p of u.options){if(p.description.toLowerCase().includes(t)||p.name.toLowerCase().includes(t)){o(u.containerEl,a);break}else if(p.options){for(let c of p.options)if(c.description.toLowerCase().includes(t)||c.value.toLowerCase().includes(t)){o(u.containerEl,a);break}}this.hideEl(u.containerEl)}else this.hideEl(u.containerEl)}for(let s of this.tabContent)r.has(s[0])?this.unhideEl(s[1].heading):this.hideEl(s[1].heading);r.size===0?this.unhideEl(this.searchZeroState):this.hideEl(this.searchZeroState)}createSearchZeroState(t){this.searchZeroState=t.createDiv(),this.hideEl(this.searchZeroState),this.searchZeroState.createEl(fe.Platform.isMobile?"h3":"h2",{text:"No settings match search"}).style.textAlign="center"}addSettingToMasterSettingsList(t,r,i="",o="",s=null,a=null){let l={containerEl:r,name:i.toLowerCase(),description:o.toLowerCase(),options:s,alias:a};this.searchSettingInfo.has(t)?this.searchSettingInfo.get(t).push(l):this.searchSettingInfo.set(t,[l])}hideEl(t){t.addClass("linter-visually-hidden")}unhideEl(t){t.removeClass("linter-visually-hidden")}};var ob={en:"en-gb",zh:"zh-cn","zh-TW":"zh-tw",ru:"ru",ko:"ko",it:"it",id:"id",ro:"ro","pt-BR":"pt-br",cz:"cs",da:"da",de:"de",es:"es",fr:"fr",no:"nn",pl:"pl",pt:"pt",tr:"tr",hi:"hi",nl:"nl",ar:"ar",ja:"ja"},sb={ruleConfigs:{},lintOnSave:!1,displayChanged:!0,foldersToIgnore:[],linterLocale:"system-default",logLevel:Em.default.levels.ERROR,lintCommands:[],commonStyles:{aliasArrayStyle:"single-line",tagArrayStyle:"single-line",minimumNumberOfDollarSignsToBeAMathBlock:2,escapeCharacter:'"'}},bs=class extends pe.Plugin{constructor(){super(...arguments);this.eventRefs=[];this.isEnabled=!0;this.rulesRunner=new ss}async onload(){Mr("Loading plugin"),this.isEnabled=!0;for(let t in De){let r=De[t];(0,pe.addIcon)(r.id,r.source)}await this.loadSettings(),this.addCommands(),this.registerEventsAndSaveCallback(),this.addSettingTab(new gs(this.app,this))}async onunload(){Mr("Unloading plugin"),this.isEnabled=!1;for(let t of this.eventRefs)this.app.workspace.offref(t)}async loadSettings(){let t=await this.loadData();this.settings=Object.assign({},sb,t),Yu(this.settings.logLevel),this.setOrUpdateMomentInstance();let r=this.settings.ruleConfigs["Move Tags to Yaml"];if(r){let o=r["Force Yaml Escape on Keys"];o&&(this.settings.ruleConfigs["Force YAML Escape"]||(this.settings.ruleConfigs["Force YAML Escape"]={}),this.settings.ruleConfigs["Force YAML Escape"]["Force YAML Escape on Keys"]=o??this.settings.ruleConfigs["Force YAML Escape"]["Force YAML Escape on Keys"]),delete this.settings.ruleConfigs["Escape YAML Special Characters"]["Force Yaml Escape on Keys"]}let i=this.settings.ruleConfigs["Move Tags to Yaml"];if(i){let o=i["Remove the hashtag from tags in content body"];o!=null&&(this.settings.ruleConfigs["Move Tags to Yaml"]["Body tag operation"]=o?"Remove hashtag":"Nothing",delete this.settings.ruleConfigs["Move Tags to Yaml"]["Remove the hashtag from tags in content body"])}this.moveSettingsToCommonSettings();for(let o of vt)this.settings.ruleConfigs[o.name]||(this.settings.ruleConfigs[o.name]=o.getDefaultOptions())}async saveSettings(){await this.saveData(this.settings)}addCommands(){this.addCommand({id:"lint-file",name:"Lint the current file",editorCallback:t=>this.runLinterEditor(t),icon:De.file.id,hotkeys:[{modifiers:["Mod","Alt"],key:"l"}]}),this.addCommand({id:"lint-all-files",name:"Lint all files in the vault",icon:De.vault.id,callback:()=>{let t="This will edit all of your files and may introduce errors.",r="Lint All",i="Linting all files...";new Di(this.app,t,r,i,()=>this.runLinterAllFiles(this.app)).open()}}),this.addCommand({id:"lint-all-files-in-folder",name:"Lint all files in the current folder",icon:De.folder.id,editorCheckCallback:(t,r)=>{if(t)return!this.app.workspace.getActiveFile().parent.isRoot();this.createFolderLintModal(this.app.workspace.getActiveFile().parent)}}),this.addCommand({id:"paste-as-plain-text",name:"Paste as Plain Text & without Modifications",editorCallback:t=>this.pasteAsPlainText(t)})}registerEventsAndSaveCallback(){let t=this.app.workspace.on("editor-paste",s=>{this.modifyPasteEvent(s)});this.registerEvent(t),this.eventRefs.push(t),t=this.app.workspace.on("file-menu",(s,a,l)=>this.onMenuOpenCallback(s,a,l)),this.registerEvent(t),this.eventRefs.push(t);let r=this.app.commands?.commands?.["editor:save-file"];typeof r?.callback=="function"&&(r.callback=()=>{if(this.settings.lintOnSave&&this.isEnabled){let s=this.getEditor();if(!s)return;let a=this.app.workspace.getActiveFile();this.shouldIgnoreFile(a)||this.runLinterEditor(s)}});let o=this;window.CodeMirrorAdapter.commands.save=()=>{o.app.commands.executeCommandById("editor:save-file")}}onMenuOpenCallback(t,r,i){r instanceof pe.TFile&&r.extension==="md"?t.addItem(o=>{o.setIcon(De.file.id).setTitle("Lint file").onClick(async()=>{this.runLinterFile(r)})}):r instanceof pe.TFolder&&t.addItem(o=>{o.setTitle("Lint folder").setIcon(De.folder.id).onClick(()=>this.createFolderLintModal(r))})}shouldIgnoreFile(t){for(let r of this.settings.foldersToIgnore)if(r.length>0&&t.path.startsWith(r))return!0;return!1}async runLinterFile(t){let r=Nu(await this.app.vault.read(t)),i=this.rulesRunner.lintText(as(r,t,this.momentLocale,this.settings));await this.app.vault.modify(t,i)}async runLinterAllFiles(t){let r=0;await Promise.all(t.vault.getMarkdownFiles().map(async o=>{if(!this.shouldIgnoreFile(o))try{await this.runLinterFile(o)}catch(s){this.handleLintError(o,s,"Lint All Files Error in File '${file.path}'"),r+=1}}));let i=0;if(r===0)new pe.Notice("Linted all files",i);else{let o=r===1?"was 1 error":"were "+r+" errors";new pe.Notice("Linted all files and there "+o+".",i)}}async runLinterAllFilesInFolder(t){Mr("Linting folder "+t.name);let r=0,i=0,o=(0,pe.normalizePath)(t.path)+"/";await Promise.all(this.app.vault.getMarkdownFiles().map(async a=>{if((0,pe.normalizePath)(a.path).startsWith(o)&&!this.shouldIgnoreFile(a)){try{await this.runLinterFile(a)}catch(l){this.handleLintError(a,l,"Lint All Files in Folder Error in File '${file.path}'"),r+=1}i++}}));let s=0;if(r===0)new pe.Notice("Linted all "+i+" files in "+t.name+".",s);else{let a=r===1?"was 1 error":"were "+r+" errors";new pe.Notice("Linted all "+i+" files in "+t.name+" and there "+a+".",s)}}createFolderLintModal(t){let r="This will edit all of your files in "+t.name+" including files in its subfolders which may introduce errors.",i="Lint All Files in "+t.name,o="Linting all files in "+t.name+"...";new Di(this.app,r,i,o,()=>this.runLinterAllFilesInFolder(t)).open()}runLinterEditor(t){Mr("Running linter");let r=this.app.workspace.getActiveFile(),i=t.getValue(),o;try{o=this.rulesRunner.lintText(as(i,r,this.momentLocale,this.settings))}catch(c){this.handleLintError(r,c,"Lint File Error in File '${file.path}'",!1)}let a=new br.default.diff_match_patch().diff_main(i,o),l="";a.forEach(c=>{function m(h){let y=h.split(` +`);return{line:y.length-1,ch:y[y.length-1].length}}let[f,d]=c;if(f==br.default.DIFF_INSERT)t.replaceRange(d,m(l)),l+=d;else if(f==br.default.DIFF_DELETE){let h=m(l),y=l;y+=d;let b=m(y);t.replaceRange("",h,b)}else l+=d});let u=a.map(c=>c[0]==br.default.DIFF_INSERT?c[1].length:0).reduce((c,m)=>c+m,0),p=a.map(c=>c[0]==br.default.DIFF_DELETE?c[1].length:0).reduce((c,m)=>c+m,0);this.displayChangedMessage(u,p);try{this.rulesRunner.runCustomCommands(this.settings.lintCommands,this.app.commands)}catch(c){this.handleLintError(r,c,"Lint File Error in File '${file.path}'",!1)}}async setOrUpdateMomentInstance(){let t=localStorage.getItem("language")||"en",r=navigator.language?.toLowerCase(),i=ob[t];this.settings.linterLocale!=="system-default"?i=this.settings.linterLocale:r.startsWith(t)&&(i=r),this.momentLocale=i;let o=ys.moment.locale(),s=ys.moment.locale(i);Vt(`Trying to switch Moment.js locale to ${i}, got ${s}`),ys.moment.locale(o)}displayChangedMessage(t,r){if(this.settings.displayChanged){let i=g` + ${t} characters added ${r} characters removed - `;new Z.Notice(i)}}handleLintError(n,r,i,o=!0){let s=i.replace("${file.path}",n.path);r instanceof Yt?o?new Z.Notice(`${s} ${r.message}. -See console for more details.`):new Z.Notice(`${r.message}. -See console for more details.`):new Z.Notice("An unknown error occurred during linting. See console for details"),bc(s,r)}},ol=class extends Z.PluginSettingTab{constructor(n,r){super(n,r);this.plugin=r}display(){let{containerEl:n}=this;n.empty(),n.createEl("h2",{text:"General Settings"}),new Z.Setting(n).setName("Lint on save").setDesc("Lint the file on manual save (when `Ctrl + S` is pressed or when `:w` is executed while using vim keybindings)").addToggle(i=>{i.setValue(this.plugin.settings.lintOnSave).onChange(async o=>{this.plugin.settings.lintOnSave=o,await this.plugin.saveSettings()})}),new Z.Setting(n).setName("Display message on lint").setDesc("Display the number of characters changed after linting").addToggle(i=>{i.setValue(this.plugin.settings.displayChanged).onChange(async o=>{this.plugin.settings.displayChanged=o,await this.plugin.saveSettings()})}),new Z.Setting(n).setName("Folders to ignore").setDesc("Folders to ignore when linting all files or linting on save. Enter folder paths separated by newlines").addTextArea(i=>{i.setValue(this.plugin.settings.foldersToIgnore.join(` -`)).onChange(async o=>{this.plugin.settings.foldersToIgnore=o.split(` -`),await this.plugin.saveSettings()})}),this.addLocaleOverrideSetting();let r="";for(let i of Et){i.type!==r&&(n.createEl("h2",{text:i.type}),r=i.type),n.createEl("h3",{},o=>{o.innerHTML=`${i.name}`});for(let o of i.options)o.display(n,this.plugin.settings,this.plugin)}this.addCustomCommandsSetting()}addLocaleOverrideSetting(){var r;let n=(r=navigator.language)==null?void 0:r.toLowerCase();new Z.Setting(this.containerEl).setName("Override locale:").setDesc("Set this if you want to use a locale different from the default").addDropdown(i=>{i.addOption("system-default",`Same as system (${n})`),Ti.moment.locales().forEach(o=>{i.addOption(o,o)}),i.setValue(this.plugin.settings.linterLocale),i.onChange(async o=>{this.plugin.settings.linterLocale=o,await this.plugin.setOrUpdateMomentInstance(),await this.plugin.saveSettings()})})}addCustomCommandsSetting(){this.containerEl.createEl("h2",{text:"Custom Commands Settings"}),this.containerEl.createEl("p",{text:`Custom commands are Obsidian commands that get run after the linter is finished running its regular rules. - This means that they do not run before the yaml timestamp logic runs, so they can cause yaml timestamp to be triggered on the next run of the linter. - You may only select an Obsidian command once. Note that this currently only works on linting the current file`}),this.containerEl.createEl("p",{text:`When selecting an option, make sure to select the option either by using the mouse or by hitting the enter key. - Other selection methods may not work and only selections of an actual Obsidian command or an empty string will be saved.`}).style.color="#EED202";function n(r,i,o){if(o<0||o===r.length)return;let s=r[i];r[i]=r[o],r[o]=s}new Z.Setting(this.containerEl).addButton(r=>{r.setButtonText("Add new command").setCta().onClick(()=>{this.plugin.settings.lintCommands.push({id:"",name:""}),this.plugin.saveSettings(),this.display();let i=document.getElementsByClassName("linter-custom-command");i[i.length-1].focus()})}),this.plugin.settings.lintCommands.forEach((r,i)=>{new Z.Setting(this.containerEl).addSearch(o=>{new Oi(this.app,o.inputEl,this.plugin.settings.lintCommands),o.setPlaceholder("obsidian command").setValue(r.name).onChange(s=>{let a={id:o.inputEl.getAttribute("commandId"),name:s};a.name&&a.id?(this.plugin.settings.lintCommands[i]=a,this.plugin.saveSettings()):!a.name&&!a.id&&(this.plugin.settings.lintCommands[i]=a,this.plugin.saveSettings())}),o.inputEl.setAttr("tabIndex",i),o.inputEl.addClass("linter-custom-command")}).addExtraButton(o=>{o.setIcon("up-chevron-glyph").setTooltip("Move up").onClick(()=>{n(this.plugin.settings.lintCommands,i,i-1),this.plugin.saveSettings(),this.display()})}).addExtraButton(o=>{o.setIcon("down-chevron-glyph").setTooltip("Move down").onClick(()=>{n(this.plugin.settings.lintCommands,i,i+1),this.plugin.saveSettings(),this.display()})}).addExtraButton(o=>{o.setIcon("cross").setTooltip("Delete").onClick(()=>{this.plugin.settings.lintCommands.splice(i,1),this.plugin.saveSettings(),this.display()})})})}},Ko=class extends Z.Modal{constructor(t,n,r,i,o){super(t),this.modalEl.addClass("confirm-modal"),this.contentEl.createEl("h3",{text:"Warning"});let s=this.contentEl.createEl("p",{text:n+" Make sure you have backed up your files."});s.id="confirm-dialog",this.contentEl.createDiv("modal-button-container",a=>{a.createEl("button",{text:"Cancel"}).addEventListener("click",()=>this.close());let l=a.createEl("button",{attr:{type:"submit"},cls:"mod-cta",text:r});l.addEventListener("click",async u=>{new Z.Notice(i),this.close(),await o()}),setTimeout(()=>{l.focus()},50)})}}; + `;new pe.Notice(i)}}handleLintError(t,r,i,o=!0){let s=i.replace("${file.path}",t.path);r instanceof qt?o?new pe.Notice(`${s} ${r.message}. +See console for more details.`):new pe.Notice(`${r.message}. +See console for more details.`):new pe.Notice("An unknown error occurred during linting. See console for details"),Hu(s,r)}async modifyPasteEvent(t){let r=this.getEditor();if(!r)return;let i=t.clipboardData.getData("text/plain");if(!i)return;if(/((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()[\]{};:'".,<>?«»“”‘’]))/i.test(i.trim())){bo("aborted paste lint as the clipboard content is a link and doing so will avoid conflicts with other plugins that modify pasting.");return}if(t.stopPropagation(),t.preventDefault(),!t.defaultPrevented)return;let s=this.app.vault.getConfig("autoConvertHtml"),a=t.clipboardData.getData("text/html"),l=a&&s?(0,pe.htmlToMarkdown)(a):i;l=this.rulesRunner.runPasteLint(this.getLineContent(r),as(l,null,this.momentLocale,this.settings)),r.replaceSelection(l)}async pasteAsPlainText(t){let r=await navigator.clipboard.readText();if(!r){new pe.Notice("There is no clipboard content.");return}t.replaceSelection(r)}getEditor(){let t=this.app.workspace.getActiveViewOfType(pe.MarkdownView);return t?t.editor:null}getLineContent(t){let r=t.getCursor("from").line;return t.getLine(r)}moveSettingsToCommonSettings(){let t,r=this.settings.ruleConfigs["YAML Title Alias"];if(r&&r["YAML aliases section style"]){if(r["Inserts the title of the file into the YAML frontmatter's aliases section. Gets the title from the first H1 or filename."])switch(r["YAML aliases section style"]){case"Multi-line array":t="multi-line";break;case"Single-line array":t="single-line";break;case"Single string that expands to multi-line array if needed":t="single string to multi-line";break;case"Single string that expands to single-line array if needed":t="single string to single-line";break}delete this.settings.ruleConfigs["YAML Title Alias"]["YAML aliases section style"]}let i=this.settings.ruleConfigs["Format Yaml Array"];if(i&&i["Yaml aliases section style"]){if(i["Allows for the formatting of regular yaml arrays as either multi-line or single-line and `tags` and `aliases` are allowed to have some Obsidian specific yaml formats. Note that single string to single-line goes from a single string entry to a single-line array if more than 1 entry is present. The same is true for single string to multi-line except it becomes a multi-line array."]&&i["Format yaml aliases section"]){let l=i["Yaml aliases section style"];if(!t)t=l;else switch(l){case"single-line":t="single-line";break;case"multi-line":t!="single-line"&&(t="single-line");break;case"single string comma delimited":t!="single-line"&&t!="multi-line"&&(t="single string comma delimited");break;case"single string to multi-line":t!="single-line"&&t!="multi-line"&&(t="single string to multi-line");break;case"single string to single-line":t!="single-line"&&t!="multi-line"&&(t="single string to single-line");break}}delete this.settings.ruleConfigs["Format Yaml Array"]["Yaml aliases section style"]}t&&(this.settings.commonStyles.aliasArrayStyle=t);let o;i&&i["Yaml tags section style"]&&(i["Allows for the formatting of regular yaml arrays as either multi-line or single-line and `tags` and `aliases` are allowed to have some Obsidian specific yaml formats. Note that single string to single-line goes from a single string entry to a single-line array if more than 1 entry is present. The same is true for single string to multi-line except it becomes a multi-line array."]&&i["Format yaml tags section"]&&(o=i["Yaml tags section style"]),delete this.settings.ruleConfigs["Format Yaml Array"]["Yaml tags section style"]);let s=this.settings.ruleConfigs["Move Tags to Yaml"];if(s&&s["Yaml tags section style"]){if(s["Move all tags to Yaml frontmatter of the document."]){let l=s["Yaml tags section style"];if(!o)o=l;else switch(l){case"single-line":o="single-line";break;case"multi-line":o!="single-line"&&(o="single-line");break;case"single string comma delimited":o!="single-line"&&o!="multi-line"&&(o="single string comma delimited");break;case"single string to multi-line":o!="single-line"&&o!="multi-line"&&(o="single string to multi-line");break;case"single string to single-line":o!="single-line"&&o!="multi-line"&&(o="single string to single-line");break;case"single-line space delimited":o!="single-line"&&o!="multi-line"&&o!="single string comma delimited"&&o!="single string to single-line"&&o!="single string to multi-line"&&(o="single-line space delimited");break;case"single string space delimited":o!="single-line"&&o!="multi-line"&&o!="single string comma delimited"&&o!="single string to single-line"&&o!="single string to multi-line"&&(o="single string space delimited");break}}delete this.settings.ruleConfigs["Move Tags to Yaml"]["Yaml tags section style"]}o&&(this.settings.commonStyles.tagArrayStyle=o);let a=this.settings.ruleConfigs["Escape YAML Special Characters"];a&&(this.settings.commonStyles.escapeCharacter=a["Default Escape Character"]??this.settings.commonStyles.escapeCharacter,delete this.settings.ruleConfigs["Escape YAML Special Characters"]["Default Escape Character"]),this.saveSettings()}}; /*! * Determine if an object is a Buffer * diff --git a/notes/.obsidian/plugins/obsidian-linter/manifest.json b/notes/.obsidian/plugins/obsidian-linter/manifest.json index 42dbc0e..8caba79 100644 --- a/notes/.obsidian/plugins/obsidian-linter/manifest.json +++ b/notes/.obsidian/plugins/obsidian-linter/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-linter", "name": "Linter", - "version": "1.5.0", + "version": "1.7.0", "minAppVersion": "0.15.6", "description": "Enforces consistent markdown styling.", "author": "Victor Tao", diff --git a/notes/.obsidian/plugins/obsidian-linter/styles.css b/notes/.obsidian/plugins/obsidian-linter/styles.css new file mode 100644 index 0000000..d3480c1 --- /dev/null +++ b/notes/.obsidian/plugins/obsidian-linter/styles.css @@ -0,0 +1,144 @@ +/** + * Based on https://github.com/Fevol/obsidian-translate/blob/master/src/ui/translator-components/SettingsPage.svelte + */ + +.linter-navigation-item { + cursor: pointer; + border-radius: 100px; + border: 1px solid var(--background-modifier-border); + border-radius: 8px 8px 2px 2px; + + font-weight: bold; + font-size: 16px; + + display: flex; + flex-direction: row; + white-space: nowrap; + + padding: 4px 6px; + align-items: center; + gap: 4px; + overflow: hidden; + + background-color: var(--background-primary-secondary-alt); + + transition: color 0.25s ease-in-out, + padding 0.25s ease-in-out, + background-color 0.35s cubic-bezier(0.45, 0.25, 0.83, 0.67), + max-width 0.35s cubic-bezier(0.57, 0.04, 0.58, 1); + height: 32px; +} + +@media screen and (max-width: 1325px) { + .linter-navigation-item.linter-desktop { + max-width: 32px; + } +} + +@media screen and (max-width: 800px) { + .linter-navigation-item.linter-mobile { + max-width: 32px; + } +} + +.linter-navigation-item-icon { + padding-top: 5px; +} + +.linter-navigation-item:hover { + border-color: var(--interactive-accent-hover); + border-bottom: 0px; +} + +.linter-navigation-item-selected { + background-color: var(--interactive-accent) !important; + color: var(--text-on-accent); + padding: 4px 9px !important; + max-width: 200px !important; + border: 1px solid var(--background-modifier-border); + border-radius: 8px 8px 2px 2px; + border-bottom: 0px; + transition: color 0.25s ease-in-out, + padding 0.25s ease-in-out, + background-color 0.35s cubic-bezier(0.45, 0.25, 0.83, 0.67), + max-width 0.45s cubic-bezier(0.57, 0.04, 0.58, 1) 0.2s; +} + +/** + * Based on https://github.com/phibr0/obsidian-commander/blob/main/src/styles.scss + */ +.linter { + transition: transform 400ms 0s; +} + +.linter-setting-title { + display: flex; + align-items: baseline; + justify-content: space-between; + gap: 30px; +} +.linter-setting-title.linter-mobile { + justify-content: space-around; +} +.linter-setting-title h1 { + font-weight: 900; + margin-top: 6px; + margin-bottom: 12px; +} + +.linter-setting-header { + margin-bottom: 24px; + overflow-y: hidden; + overflow-x: auto; +} + +.linter-setting-header .linter-setting-tab-group { + display: flex; + align-items: flex-end; + flex-wrap: wrap; + width: 100%; +} +.linter-setting-tab-group { + margin-top: 6px; + padding-left: 2px; + padding-right: 2px; + border-bottom: 2px solid var(--background-modifier-border); +} + +.linter-setting-header .linter-tab-settings { + padding: 6px 12px; + font-weight: 600; + cursor: pointer; + white-space: nowrap; + border-left: 2px solid transparent; + border-right: 2px solid transparent; +} +.linter-setting-header .linter-tab-settings:first-child { + margin-left: 6px; +} +.linter-setting-header .linter-tab-settings.linter-tab-settings-active { + border-bottom: 2px solid var(--background-primary); + transform: translateY(2px); + border-radius: 2px; + border-left: 2px solid var(--background-modifier-border); + border-top: 2px solid var(--background-modifier-border); + border-right: 2px solid var(--background-modifier-border); +} + +/** Hide linter element css + * Based on https://zellwk.com/blog/hide-content-accessibly/ + */ + +.linter-navigation-item:not(.linter-navigation-item-selected) > span:nth-child(2), +.linter-visually-hidden { + border: 0; + clip: rect(0 0 0 0); + clip-path: rect(0 0 0 0); + height: auto; /* new - was 1px */ + margin: 0; /* new - was -1px */ + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + white-space: nowrap; /* 1 */ +} diff --git a/notes/.obsidian/plugins/obsidian-outliner/main.js b/notes/.obsidian/plugins/obsidian-outliner/main.js index 53b93ba..3af92ea 100644 --- a/notes/.obsidian/plugins/obsidian-outliner/main.js +++ b/notes/.obsidian/plugins/obsidian-outliner/main.js @@ -314,9 +314,9 @@ class EnsureCursorInListContentFeature { return null; } const editor = this.obsidian.getEditorFromState(tr.startState); - setImmediate(() => { + setTimeout(() => { this.handleCursorActivity(editor); - }); + }, 0); return null; }; this.handleCursorActivity = (editor) => { @@ -679,6 +679,17 @@ class Root { hasSingleSelection() { return this.selections.length === 1; } + getSelection() { + const selection = this.selections[this.selections.length - 1]; + const from = selection.anchor.ch > selection.head.ch + ? selection.head.ch + : selection.anchor.ch; + const to = selection.anchor.ch > selection.head.ch + ? selection.anchor.ch + : selection.head.ch; + return Object.assign(Object.assign({}, selection), { from, + to }); + } getCursor() { return Object.assign({}, this.selections[this.selections.length - 1].head); } @@ -769,7 +780,11 @@ class CreateNewItemOperation { } perform() { const { root } = this; - if (!root.hasSingleCursor()) { + if (!root.hasSingleSelection()) { + return; + } + const selection = root.getSelection(); + if (!selection || selection.anchor.line !== selection.head.line) { return; } const list = root.getListUnderCursor(); @@ -787,10 +802,10 @@ class CreateNewItemOperation { acc.oldLines.push(line.text); } else if (cursor.line === line.from.line) { - const a = line.text.slice(0, cursor.ch - line.from.ch); - const b = line.text.slice(cursor.ch - line.from.ch); - acc.oldLines.push(a); - acc.newLines.push(b); + const left = line.text.slice(0, selection.from - line.from.ch); + const right = line.text.slice(selection.to - line.from.ch); + acc.oldLines.push(left); + acc.newLines.push(right); } else if (cursor.line < line.from.line) { acc.newLines.push(line.text); @@ -912,6 +927,7 @@ class FoldFeature { return __awaiter(this, void 0, void 0, function* () { this.plugin.addCommand({ id: "fold", + icon: "chevrons-down-up", name: "Fold the list", editorCallback: this.obsidian.createEditorCallback(this.fold), hotkeys: [ @@ -923,6 +939,7 @@ class FoldFeature { }); this.plugin.addCommand({ id: "unfold", + icon: "chevrons-up-down", name: "Unfold the list", editorCallback: this.obsidian.createEditorCallback(this.unfold), hotkeys: [ @@ -1064,7 +1081,7 @@ class ListLinesViewPluginValue { this.view = view; this.lineElements = []; this.waitForEditor = () => { - const oe = this.view.state.field(obsidian.editorViewField).editor; + const oe = this.view.state.field(obsidian.editorInfoField).editor; if (!oe) { setTimeout(this.waitForEditor, 0); return; @@ -1077,8 +1094,8 @@ class ListLinesViewPluginValue { this.scroller.scrollTo(scrollLeft, scrollTop); }; this.scheduleRecalculate = () => { - clearImmediate(this.scheduled); - this.scheduled = setImmediate(this.calculate); + clearTimeout(this.scheduled); + this.scheduled = setTimeout(this.calculate, 0); }; this.calculate = () => { this.lines = []; @@ -1145,16 +1162,11 @@ class ListLinesViewPluginValue { } return null; } - recursive(list) { + recursive(list, parentCtx = {}) { const children = list.getChildren(); if (children.length === 0) { return; } - for (const child of children) { - if (!child.isEmpty()) { - this.recursive(child); - } - } const fromOffset = this.editor.posToOffset({ line: list.getFirstLineContentStart().line, ch: list.getFirstLineIndent().length, @@ -1176,7 +1188,12 @@ class ListLinesViewPluginValue { if (fromOffset > visibleTo || tillOffset < visibleFrom) { return; } - const top = visibleFrom > 0 && fromOffset <= visibleFrom + const coords = this.view.coordsAtPos(fromOffset, 1); + if (parentCtx.rootLeft === undefined) { + parentCtx.rootLeft = coords.left; + } + const left = Math.floor(coords.right - parentCtx.rootLeft); + const top = visibleFrom > 0 && fromOffset < visibleFrom ? -20 : this.view.lineBlockAt(fromOffset).top; const bottom = tillOffset > visibleTo @@ -1189,30 +1206,20 @@ class ListLinesViewPluginValue { this.editor.posToOffset(nextSibling.getFirstLineContentStart()) <= visibleTo; this.lines.push({ - top: top, - left: this.getIndentSize(list), - height: `calc(${height}px ${hasNextSibling ? "- 1em" : "- 1.8em"})`, + top, + left, + height: `calc(${height}px ${hasNextSibling ? "- 1.5em" : "- 2em"})`, list, }); } - } - getIndentSize(list) { - const { tabSize } = this.obsidian.getObsidianTabsSettings(); - const indent = list.getFirstLineIndent(); - const spaceSize = 4.5; - let spaces = 0; - for (const char of indent) { - if (char === "\t") { - spaces += tabSize; - } - else { - spaces += 1; + for (const child of children) { + if (!child.isEmpty()) { + this.recursive(child, parentCtx); } } - return spaces * spaceSize; } zoomIn(line) { - const editor = new MyEditor(this.view.state.field(obsidian.editorViewField).editor); + const editor = new MyEditor(this.view.state.field(obsidian.editorInfoField).editor); editor.zoomIn(line.list.getFirstLineContentStart().line); } toggleFolding(line) { @@ -1231,7 +1238,7 @@ class ListLinesViewPluginValue { } linesToToggle.push(c.getFirstLineContentStart().line); } - const editor = new MyEditor(this.view.state.field(obsidian.editorViewField).editor); + const editor = new MyEditor(this.view.state.field(obsidian.editorInfoField).editor); for (const l of linesToToggle) { if (needToUnfold) { editor.unfold(l); @@ -1245,8 +1252,19 @@ class ListLinesViewPluginValue { const cmScroll = this.view.scrollDOM; const cmContent = this.view.contentDOM; const cmContentContainer = cmContent.parentElement; + const cmSizer = cmContentContainer.parentElement; + /** + * Obsidian can add additional elements into Content Manager. + * The most obvious case is the 'embedded-backlinks' core plugin that adds a menu inside a Content Manager. + * We must take heights of all of these elements into account + * to be able to calculate the correct size of lines' container. + */ + let cmSizerChildrenSumHeight = 0; + for (let i = 0; i < cmSizer.children.length; i++) { + cmSizerChildrenSumHeight += cmSizer.children[i].clientHeight; + } this.scroller.style.top = cmScroll.offsetTop + "px"; - this.contentContainer.style.height = cmContent.clientHeight + "px"; + this.contentContainer.style.height = cmSizerChildrenSumHeight + "px"; this.contentContainer.style.marginLeft = cmContentContainer.offsetLeft + "px"; this.contentContainer.style.marginTop = @@ -1279,7 +1297,7 @@ class ListLinesViewPluginValue { this.settings.removeCallback("listLines", this.scheduleRecalculate); this.view.scrollDOM.removeEventListener("scroll", this.onScroll); this.view.dom.removeChild(this.scroller); - clearImmediate(this.scheduled); + clearTimeout(this.scheduled); } } class LinesFeature { @@ -1647,6 +1665,7 @@ class MoveItemsFeature { return __awaiter(this, void 0, void 0, function* () { this.plugin.addCommand({ id: "move-list-item-up", + icon: "arrow-up", name: "Move list and sublists up", editorCallback: this.obsidian.createEditorCallback(this.moveListElementUpCommand), hotkeys: [ @@ -1658,6 +1677,7 @@ class MoveItemsFeature { }); this.plugin.addCommand({ id: "move-list-item-down", + icon: "arrow-down", name: "Move list and sublists down", editorCallback: this.obsidian.createEditorCallback(this.moveListElementDownCommand), hotkeys: [ @@ -1669,12 +1689,14 @@ class MoveItemsFeature { }); this.plugin.addCommand({ id: "indent-list", + icon: "indent", name: "Indent the list and sublists", editorCallback: this.obsidian.createEditorCallback(this.moveListElementRightCommand), hotkeys: [], }); this.plugin.addCommand({ id: "outdent-list", + icon: "outdent", name: "Outdent the list and sublists", editorCallback: this.obsidian.createEditorCallback(this.moveListElementLeftCommand), hotkeys: [], @@ -1859,7 +1881,7 @@ class ObsidianOutlinerPluginSettingTab extends obsidian.PluginSettingTab { containerEl.empty(); new obsidian.Setting(containerEl) .setName("Improve the style of your lists") - .setDesc("Styles are only compatible with built-in Obsidian themes and may not be compatible with other themes. Styles only work well with tab size 4.") + .setDesc("Styles are only compatible with built-in Obsidian themes and may not be compatible with other themes.") .addToggle((toggle) => { toggle.setValue(this.settings.styleLists).onChange((value) => __awaiter(this, void 0, void 0, function* () { this.settings.styleLists = value; @@ -2119,7 +2141,7 @@ class IMEService { }); } isIMEOpened() { - return this.composition; + return this.composition && obsidian.Platform.isDesktop; } } @@ -2163,7 +2185,7 @@ class ObsidianService { return useTab ? "\t" : new Array(tabSize).fill(" ").join(""); } getEditorFromState(state) { - return new MyEditor(state.field(obsidian.editorViewField).editor); + return new MyEditor(state.field(obsidian.editorInfoField).editor); } createKeymapRunCallback(config) { const check = config.check || (() => true); @@ -2498,10 +2520,6 @@ class ObsidianOutlinerPlugin extends obsidian.Plugin { return __awaiter(this, void 0, void 0, function* () { console.log(`Loading obsidian-outliner`); this.obsidian = new ObsidianService(this.app); - if (this.obsidian.isLegacyEditorEnabled()) { - new obsidian.Notice(`Outliner plugin does not support legacy editor mode starting from version 2.0. Please disable the "Use legacy editor" option or manually install version 1.0 of Outliner plugin.`, 30000); - return; - } this.settings = new SettingsService(this); yield this.settings.load(); this.logger = new LoggerService(this.settings); @@ -2542,4 +2560,4 @@ class ObsidianOutlinerPlugin extends obsidian.Plugin { } module.exports = ObsidianOutlinerPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9yb290L3JlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMudHMiLCJzcmMvb3BlcmF0aW9ucy9EZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91c0xpbmVPcGVyYXRpb24udHMiLCJzcmMvb3BlcmF0aW9ucy9EZWxldGVBbmRNZXJnZVdpdGhOZXh0TGluZU9wZXJhdGlvbi50cyIsInNyYy9vcGVyYXRpb25zL0RlbGV0ZVRpbGxMaW5lU3RhcnRPcGVyYXRpb24udHMiLCJzcmMvZmVhdHVyZXMvRGVsZXRlU2hvdWxkSWdub3JlQnVsbGV0c0ZlYXR1cmUudHMiLCJzcmMvb3BlcmF0aW9ucy9FbnN1cmVDdXJzb3JJbkxpc3RDb250ZW50T3BlcmF0aW9uLnRzIiwic3JjL29wZXJhdGlvbnMvRW5zdXJlQ3Vyc29ySXNJblVuZm9sZGVkTGluZU9wZXJhdGlvbi50cyIsInNyYy9mZWF0dXJlcy9FbnN1cmVDdXJzb3JJbkxpc3RDb250ZW50RmVhdHVyZS50cyIsInNyYy9vcGVyYXRpb25zL01vdmVMZWZ0T3BlcmF0aW9uLnRzIiwic3JjL3V0aWxzL2lzRW1wdHlMaW5lT3JFbXB0eUNoZWNrYm94LnRzIiwic3JjL29wZXJhdGlvbnMvT3V0ZGVudElmTGluZUlzRW1wdHlPcGVyYXRpb24udHMiLCJzcmMvZmVhdHVyZXMvRW50ZXJPdXRkZW50SWZMaW5lSXNFbXB0eUZlYXR1cmUudHMiLCJzcmMvcm9vdC9pbmRleC50cyIsInNyYy9vcGVyYXRpb25zL0NyZWF0ZU5ld0l0ZW1PcGVyYXRpb24udHMiLCJzcmMvZmVhdHVyZXMvRW50ZXJTaG91bGRDcmVhdGVOZXdJdGVtT25DaGlsZExldmVsRmVhdHVyZS50cyIsInNyYy9mZWF0dXJlcy9Gb2xkRmVhdHVyZS50cyIsInNyYy9NeUVkaXRvci50cyIsInNyYy9mZWF0dXJlcy9MaW5lc0ZlYXR1cmUudHMiLCJzcmMvZmVhdHVyZXMvTGlzdHNTdHlsZXNGZWF0dXJlLnRzIiwic3JjL29wZXJhdGlvbnMvTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmVPcGVyYXRpb24udHMiLCJzcmMvZmVhdHVyZXMvTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmVGZWF0dXJlLnRzIiwic3JjL29wZXJhdGlvbnMvTW92ZURvd25PcGVyYXRpb24udHMiLCJzcmMvb3BlcmF0aW9ucy9Nb3ZlUmlnaHRPcGVyYXRpb24udHMiLCJzcmMvb3BlcmF0aW9ucy9Nb3ZlVXBPcGVyYXRpb24udHMiLCJzcmMvZmVhdHVyZXMvTW92ZUl0ZW1zRmVhdHVyZS50cyIsInNyYy9vcGVyYXRpb25zL1NlbGVjdEFsbE9wZXJhdGlvbi50cyIsInNyYy9mZWF0dXJlcy9TZWxlY3RBbGxGZWF0dXJlLnRzIiwic3JjL29wZXJhdGlvbnMvU2VsZWN0VGlsbExpbmVTdGFydE9wZXJhdGlvbi50cyIsInNyYy9mZWF0dXJlcy9TZWxlY3Rpb25TaG91bGRJZ25vcmVCdWxsZXRzRmVhdHVyZS50cyIsInNyYy9mZWF0dXJlcy9TZXR0aW5nc1RhYkZlYXR1cmUudHMiLCJzcmMvb3BlcmF0aW9ucy9DcmVhdGVOb3RlTGluZU9wZXJhdGlvbi50cyIsInNyYy9mZWF0dXJlcy9TaGlmdEVudGVyU2hvdWxkQ3JlYXRlTm90ZUZlYXR1cmUudHMiLCJzcmMvc2VydmljZXMvQXBwbHlDaGFuZ2VzU2VydmljZS50cyIsInNyYy9zZXJ2aWNlcy9JTUVTZXJ2aWNlLnRzIiwic3JjL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2UudHMiLCJzcmMvc2VydmljZXMvT2JzaWRpYW5TZXJ2aWNlLnRzIiwic3JjL3NlcnZpY2VzL1BhcnNlclNlcnZpY2UudHMiLCJzcmMvc2VydmljZXMvUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UudHMiLCJzcmMvc2VydmljZXMvU2V0dGluZ3NTZXJ2aWNlLnRzIiwic3JjL09ic2lkaWFuT3V0bGluZXJQbHVnaW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlICovXHJcblxyXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcclxuICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXHJcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XHJcbiAgICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xyXG4gICAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XHJcbiAgICB9XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xyXG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIG9bazJdID0gbVtrXTtcclxufSk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIG8pIHtcclxuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgcCkpIF9fY3JlYXRlQmluZGluZyhvLCBtLCBwKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcclxuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XHJcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcclxuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcclxuICAgIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xyXG4gICAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxyXG4gICAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxyXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcclxuICAgIHJldHVybiByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheSh0bywgZnJvbSwgcGFjaykge1xyXG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XHJcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XHJcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xyXG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaWYgKGdbbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxyXG4gICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XHJcbiAgICB2YXIgaSwgcDtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBuID09PSBcInJldHVyblwiIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcbiIsImltcG9ydCB7IExpc3QsIFJvb3QgfSBmcm9tIFwiLlwiO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290OiBSb290KSB7XG4gIGZ1bmN0aW9uIHZpc2l0KHBhcmVudDogUm9vdCB8IExpc3QpIHtcbiAgICBsZXQgaW5kZXggPSAxO1xuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBwYXJlbnQuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgaWYgKC9cXGQrXFwuLy50ZXN0KGNoaWxkLmdldEJ1bGxldCgpKSkge1xuICAgICAgICBjaGlsZC5yZXBsYXRlQnVsbGV0KGAke2luZGV4Kyt9LmApO1xuICAgICAgfVxuXG4gICAgICB2aXNpdChjaGlsZCk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXQocm9vdCk7XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgTGlzdCwgTGlzdExpbmUsIFBvc2l0aW9uLCBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcbmltcG9ydCB7IHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdC9yZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzXCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91c0xpbmVPcGVyYXRpb24gaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVzID0gbGlzdC5nZXRMaW5lc0luZm8oKTtcblxuICAgIGNvbnN0IGxpbmVObyA9IGxpbmVzLmZpbmRJbmRleChcbiAgICAgIChsKSA9PiBjdXJzb3IuY2ggPT09IGwuZnJvbS5jaCAmJiBjdXJzb3IubGluZSA9PT0gbC5mcm9tLmxpbmVcbiAgICApO1xuXG4gICAgaWYgKGxpbmVObyA9PT0gMCkge1xuICAgICAgdGhpcy5tZXJnZVdpdGhQcmV2aW91c0l0ZW0ocm9vdCwgY3Vyc29yLCBsaXN0KTtcbiAgICB9IGVsc2UgaWYgKGxpbmVObyA+IDApIHtcbiAgICAgIHRoaXMubWVyZ2VOb3Rlcyhyb290LCBjdXJzb3IsIGxpc3QsIGxpbmVzLCBsaW5lTm8pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VOb3RlcyhcbiAgICByb290OiBSb290LFxuICAgIGN1cnNvcjogUG9zaXRpb24sXG4gICAgbGlzdDogTGlzdCxcbiAgICBsaW5lczogTGlzdExpbmVbXSxcbiAgICBsaW5lTm86IG51bWJlclxuICApIHtcbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IHByZXZMaW5lTm8gPSBsaW5lTm8gLSAxO1xuXG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IGN1cnNvci5saW5lIC0gMSxcbiAgICAgIGNoOiBsaW5lc1twcmV2TGluZU5vXS50ZXh0Lmxlbmd0aCArIGxpbmVzW3ByZXZMaW5lTm9dLmZyb20uY2gsXG4gICAgfSk7XG5cbiAgICBsaW5lc1twcmV2TGluZU5vXS50ZXh0ICs9IGxpbmVzW2xpbmVOb10udGV4dDtcbiAgICBsaW5lcy5zcGxpY2UobGluZU5vLCAxKTtcblxuICAgIGxpc3QucmVwbGFjZUxpbmVzKGxpbmVzLm1hcCgobCkgPT4gbC50ZXh0KSk7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlV2l0aFByZXZpb3VzSXRlbShyb290OiBSb290LCBjdXJzb3I6IFBvc2l0aW9uLCBsaXN0OiBMaXN0KSB7XG4gICAgaWYgKHJvb3QuZ2V0Q2hpbGRyZW4oKVswXSA9PT0gbGlzdCAmJiBsaXN0LmdldENoaWxkcmVuKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgcHJldiA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShjdXJzb3IubGluZSAtIDEpO1xuXG4gICAgaWYgKCFwcmV2KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYm90aEFyZUVtcHR5ID0gcHJldi5pc0VtcHR5KCkgJiYgbGlzdC5pc0VtcHR5KCk7XG4gICAgY29uc3QgcHJldklzRW1wdHlBbmRTYW1lTGV2ZWwgPVxuICAgICAgcHJldi5pc0VtcHR5KCkgJiYgIWxpc3QuaXNFbXB0eSgpICYmIHByZXYuZ2V0TGV2ZWwoKSA9PSBsaXN0LmdldExldmVsKCk7XG4gICAgY29uc3QgbGlzdElzRW1wdHlBbmRQcmV2SXNQYXJlbnQgPVxuICAgICAgbGlzdC5pc0VtcHR5KCkgJiYgcHJldi5nZXRMZXZlbCgpID09IGxpc3QuZ2V0TGV2ZWwoKSAtIDE7XG5cbiAgICBpZiAoYm90aEFyZUVtcHR5IHx8IHByZXZJc0VtcHR5QW5kU2FtZUxldmVsIHx8IGxpc3RJc0VtcHR5QW5kUHJldklzUGFyZW50KSB7XG4gICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgICBjb25zdCBwYXJlbnQgPSBsaXN0LmdldFBhcmVudCgpO1xuICAgICAgY29uc3QgcHJldkVuZCA9IHByZXYuZ2V0TGFzdExpbmVDb250ZW50RW5kKCk7XG5cbiAgICAgIGlmICghcHJldi5nZXROb3Rlc0luZGVudCgpICYmIGxpc3QuZ2V0Tm90ZXNJbmRlbnQoKSkge1xuICAgICAgICBwcmV2LnNldE5vdGVzSW5kZW50KFxuICAgICAgICAgIHByZXYuZ2V0Rmlyc3RMaW5lSW5kZW50KCkgK1xuICAgICAgICAgICAgbGlzdC5nZXROb3Rlc0luZGVudCgpLnNsaWNlKGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvbGRMaW5lcyA9IHByZXYuZ2V0TGluZXMoKTtcbiAgICAgIGNvbnN0IG5ld0xpbmVzID0gbGlzdC5nZXRMaW5lcygpO1xuICAgICAgb2xkTGluZXNbb2xkTGluZXMubGVuZ3RoIC0gMV0gKz0gbmV3TGluZXNbMF07XG4gICAgICBjb25zdCByZXN1bHRMaW5lcyA9IG9sZExpbmVzLmNvbmNhdChuZXdMaW5lcy5zbGljZSgxKSk7XG5cbiAgICAgIHByZXYucmVwbGFjZUxpbmVzKHJlc3VsdExpbmVzKTtcbiAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcblxuICAgICAgZm9yIChjb25zdCBjIG9mIGxpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICBsaXN0LnJlbW92ZUNoaWxkKGMpO1xuICAgICAgICBwcmV2LmFkZEFmdGVyQWxsKGMpO1xuICAgICAgfVxuXG4gICAgICByb290LnJlcGxhY2VDdXJzb3IocHJldkVuZCk7XG5cbiAgICAgIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMocm9vdCk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBEZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91c0xpbmVPcGVyYXRpb24gfSBmcm9tIFwiLi9EZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91c0xpbmVPcGVyYXRpb25cIjtcbmltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIERlbGV0ZUFuZE1lcmdlV2l0aE5leHRMaW5lT3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBkZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91czogRGVsZXRlQW5kTWVyZ2VXaXRoUHJldmlvdXNMaW5lT3BlcmF0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge1xuICAgIHRoaXMuZGVsZXRlQW5kTWVyZ2VXaXRoUHJldmlvdXMgPVxuICAgICAgbmV3IERlbGV0ZUFuZE1lcmdlV2l0aFByZXZpb3VzTGluZU9wZXJhdGlvbihyb290KTtcbiAgfVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91cy5zaG91bGRTdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91cy5zaG91bGRVcGRhdGUoKTtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lcyA9IGxpc3QuZ2V0TGluZXNJbmZvKCk7XG5cbiAgICBjb25zdCBsaW5lTm8gPSBsaW5lcy5maW5kSW5kZXgoXG4gICAgICAobCkgPT4gY3Vyc29yLmNoID09PSBsLnRvLmNoICYmIGN1cnNvci5saW5lID09PSBsLnRvLmxpbmVcbiAgICApO1xuXG4gICAgaWYgKGxpbmVObyA9PT0gbGluZXMubGVuZ3RoIC0gMSkge1xuICAgICAgY29uc3QgbmV4dExpbmUgPSBsaW5lc1tsaW5lTm9dLnRvLmxpbmUgKyAxO1xuICAgICAgY29uc3QgbmV4dExpc3QgPSByb290LmdldExpc3RVbmRlckxpbmUobmV4dExpbmUpO1xuICAgICAgaWYgKCFuZXh0TGlzdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByb290LnJlcGxhY2VDdXJzb3IobmV4dExpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkpO1xuICAgICAgdGhpcy5kZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91cy5wZXJmb3JtKCk7XG4gICAgfSBlbHNlIGlmIChsaW5lTm8gPj0gMCkge1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKGxpbmVzW2xpbmVObyArIDFdLmZyb20pO1xuICAgICAgdGhpcy5kZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91cy5wZXJmb3JtKCk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVUaWxsTGluZVN0YXJ0T3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVzID0gbGlzdC5nZXRMaW5lc0luZm8oKTtcbiAgICBjb25zdCBsaW5lTm8gPSBsaW5lcy5maW5kSW5kZXgoKGwpID0+IGwuZnJvbS5saW5lID09PSBjdXJzb3IubGluZSk7XG5cbiAgICBsaW5lc1tsaW5lTm9dLnRleHQgPSBsaW5lc1tsaW5lTm9dLnRleHQuc2xpY2UoXG4gICAgICBjdXJzb3IuY2ggLSBsaW5lc1tsaW5lTm9dLmZyb20uY2hcbiAgICApO1xuXG4gICAgbGlzdC5yZXBsYWNlTGluZXMobGluZXMubWFwKChsKSA9PiBsLnRleHQpKTtcbiAgICByb290LnJlcGxhY2VDdXJzb3IobGluZXNbbGluZU5vXS5mcm9tKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsga2V5bWFwIH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vTXlFZGl0b3JcIjtcbmltcG9ydCB7IERlbGV0ZUFuZE1lcmdlV2l0aE5leHRMaW5lT3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvRGVsZXRlQW5kTWVyZ2VXaXRoTmV4dExpbmVPcGVyYXRpb25cIjtcbmltcG9ydCB7IERlbGV0ZUFuZE1lcmdlV2l0aFByZXZpb3VzTGluZU9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL0RlbGV0ZUFuZE1lcmdlV2l0aFByZXZpb3VzTGluZU9wZXJhdGlvblwiO1xuaW1wb3J0IHsgRGVsZXRlVGlsbExpbmVTdGFydE9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL0RlbGV0ZVRpbGxMaW5lU3RhcnRPcGVyYXRpb25cIjtcbmltcG9ydCB7IElNRVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FU2VydmljZVwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2VydmljZVwiO1xuaW1wb3J0IHsgUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcIjtcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1NlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIERlbGV0ZVNob3VsZElnbm9yZUJ1bGxldHNGZWF0dXJlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbWU6IElNRVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVyZm9ybU9wZXJhdGlvbjogUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBrZXltYXAub2YoW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiBcIkJhY2tzcGFjZVwiLFxuICAgICAgICAgIHJ1bjogdGhpcy5vYnNpZGlhbi5jcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5kZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91c0xpbmUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6IFwiRGVsZXRlXCIsXG4gICAgICAgICAgcnVuOiB0aGlzLm9ic2lkaWFuLmNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgcnVuOiB0aGlzLmRlbGV0ZUFuZE1lcmdlV2l0aE5leHRMaW5lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbWFjOiBcIm0tQmFja3NwYWNlXCIsXG4gICAgICAgICAgcnVuOiB0aGlzLm9ic2lkaWFuLmNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgcnVuOiB0aGlzLmRlbGV0ZVRpbGxMaW5lU3RhcnQsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Muc3RpY2tDdXJzb3IgJiYgIXRoaXMuaW1lLmlzSU1FT3BlbmVkKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBkZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91c0xpbmUgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PiBuZXcgRGVsZXRlQW5kTWVyZ2VXaXRoUHJldmlvdXNMaW5lT3BlcmF0aW9uKHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcblxuICBwcml2YXRlIGRlbGV0ZVRpbGxMaW5lU3RhcnQgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PiBuZXcgRGVsZXRlVGlsbExpbmVTdGFydE9wZXJhdGlvbihyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBkZWxldGVBbmRNZXJnZVdpdGhOZXh0TGluZSA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMucGVyZm9ybU9wZXJhdGlvbi5wZXJmb3JtT3BlcmF0aW9uKFxuICAgICAgKHJvb3QpID0+IG5ldyBEZWxldGVBbmRNZXJnZVdpdGhOZXh0TGluZU9wZXJhdGlvbihyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBFbnN1cmVDdXJzb3JJbkxpc3RDb250ZW50T3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBjb250ZW50U3RhcnQgPSBsaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpO1xuICAgIGNvbnN0IGxpbmVQcmVmaXggPVxuICAgICAgY29udGVudFN0YXJ0LmxpbmUgPT09IGN1cnNvci5saW5lXG4gICAgICAgID8gY29udGVudFN0YXJ0LmNoXG4gICAgICAgIDogbGlzdC5nZXROb3Rlc0luZGVudCgpLmxlbmd0aDtcblxuICAgIGlmIChjdXJzb3IuY2ggPCBsaW5lUHJlZml4KSB7XG4gICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgICAgbGluZTogY3Vyc29yLmxpbmUsXG4gICAgICAgIGNoOiBsaW5lUHJlZml4LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBFbnN1cmVDdXJzb3JJc0luVW5mb2xkZWRMaW5lT3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGlmICghbGlzdC5pc0ZvbGRlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZm9sZFJvb3QgPSBsaXN0LmdldFRvcEZvbGRSb290KCk7XG4gICAgY29uc3QgZmlyc3RMaW5lRW5kID0gZm9sZFJvb3QuZ2V0TGluZXNJbmZvKClbMF0udG87XG5cbiAgICBpZiAoY3Vyc29yLmxpbmUgPiBmaXJzdExpbmVFbmQubGluZSkge1xuICAgICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihmaXJzdExpbmVFbmQpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRWRpdG9yU3RhdGUsIFRyYW5zYWN0aW9uIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL015RWRpdG9yXCI7XG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4uL2ZlYXR1cmVzL0ZlYXR1cmVcIjtcbmltcG9ydCB7IEVuc3VyZUN1cnNvckluTGlzdENvbnRlbnRPcGVyYXRpb24gfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9FbnN1cmVDdXJzb3JJbkxpc3RDb250ZW50T3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBFbnN1cmVDdXJzb3JJc0luVW5mb2xkZWRMaW5lT3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvRW5zdXJlQ3Vyc29ySXNJblVuZm9sZGVkTGluZU9wZXJhdGlvblwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2VydmljZVwiO1xuaW1wb3J0IHsgUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcIjtcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1NlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIEVuc3VyZUN1cnNvckluTGlzdENvbnRlbnRGZWF0dXJlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVyZm9ybU9wZXJhdGlvbjogUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBFZGl0b3JTdGF0ZS50cmFuc2FjdGlvbkV4dGVuZGVyLm9mKHRoaXMudHJhbnNhY3Rpb25FeHRlbmRlcilcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIHRyYW5zYWN0aW9uRXh0ZW5kZXIgPSAodHI6IFRyYW5zYWN0aW9uKTogbnVsbCA9PiB7XG4gICAgaWYgKCF0aGlzLnNldHRpbmdzLnN0aWNrQ3Vyc29yIHx8ICF0ci5zZWxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMub2JzaWRpYW4uZ2V0RWRpdG9yRnJvbVN0YXRlKHRyLnN0YXJ0U3RhdGUpO1xuXG4gICAgc2V0SW1tZWRpYXRlKCgpID0+IHtcbiAgICAgIHRoaXMuaGFuZGxlQ3Vyc29yQWN0aXZpdHkoZWRpdG9yKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIHByaXZhdGUgaGFuZGxlQ3Vyc29yQWN0aXZpdHkgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHRoaXMucGVyZm9ybU9wZXJhdGlvbi5wZXJmb3JtT3BlcmF0aW9uKFxuICAgICAgKHJvb3QpID0+IG5ldyBFbnN1cmVDdXJzb3JJc0luVW5mb2xkZWRMaW5lT3BlcmF0aW9uKHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcblxuICAgIHRoaXMucGVyZm9ybU9wZXJhdGlvbi5wZXJmb3JtT3BlcmF0aW9uKFxuICAgICAgKHJvb3QpID0+IG5ldyBFbnN1cmVDdXJzb3JJbkxpc3RDb250ZW50T3BlcmF0aW9uKHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcbmltcG9ydCB7IHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdC9yZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzXCI7XG5cbmV4cG9ydCBjbGFzcyBNb3ZlTGVmdE9wZXJhdGlvbiBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVDdXJzb3IoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IHBhcmVudCA9IGxpc3QuZ2V0UGFyZW50KCk7XG4gICAgY29uc3QgZ3JhbmRQYXJlbnQgPSBwYXJlbnQuZ2V0UGFyZW50KCk7XG5cbiAgICBpZiAoIWdyYW5kUGFyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVCZWZvcmUgPSByb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdClbMF07XG4gICAgY29uc3QgaW5kZW50Um1Gcm9tID0gcGFyZW50LmdldEZpcnN0TGluZUluZGVudCgpLmxlbmd0aDtcbiAgICBjb25zdCBpbmRlbnRSbVRpbGwgPSBsaXN0LmdldEZpcnN0TGluZUluZGVudCgpLmxlbmd0aDtcblxuICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcbiAgICBncmFuZFBhcmVudC5hZGRBZnRlcihwYXJlbnQsIGxpc3QpO1xuICAgIGxpc3QudW5pbmRlbnRDb250ZW50KGluZGVudFJtRnJvbSwgaW5kZW50Um1UaWxsKTtcblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVBZnRlciA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcbiAgICBjb25zdCBsaW5lRGlmZiA9IGxpc3RTdGFydExpbmVBZnRlciAtIGxpc3RTdGFydExpbmVCZWZvcmU7XG4gICAgY29uc3QgY2hEaWZmID0gaW5kZW50Um1UaWxsIC0gaW5kZW50Um1Gcm9tO1xuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICByb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgbGluZTogY3Vyc29yLmxpbmUgKyBsaW5lRGlmZixcbiAgICAgIGNoOiBjdXJzb3IuY2ggLSBjaERpZmYsXG4gICAgfSk7XG5cbiAgICByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3QpO1xuICB9XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3gobGluZTogc3RyaW5nKSB7XG4gIHJldHVybiBsaW5lID09PSBcIlwiIHx8IGxpbmUgPT09IFwiWyBdIFwiO1xufVxuIiwiaW1wb3J0IHsgTW92ZUxlZnRPcGVyYXRpb24gfSBmcm9tIFwiLi9Nb3ZlTGVmdE9wZXJhdGlvblwiO1xuaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IFJvb3QgfSBmcm9tIFwiLi4vcm9vdFwiO1xuaW1wb3J0IHsgaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3ggfSBmcm9tIFwiLi4vdXRpbHMvaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3hcIjtcblxuZXhwb3J0IGNsYXNzIE91dGRlbnRJZkxpbmVJc0VtcHR5T3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBtb3ZlTGVmdE9wOiBNb3ZlTGVmdE9wZXJhdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHtcbiAgICB0aGlzLm1vdmVMZWZ0T3AgPSBuZXcgTW92ZUxlZnRPcGVyYXRpb24ocm9vdCk7XG4gIH1cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMubW92ZUxlZnRPcC5zaG91bGRTdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tb3ZlTGVmdE9wLnNob3VsZFVwZGF0ZSgpO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lcyA9IGxpc3QuZ2V0TGluZXMoKTtcblxuICAgIGlmIChcbiAgICAgIGxpbmVzLmxlbmd0aCA+IDEgfHxcbiAgICAgICFpc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveChsaW5lc1swXSkgfHxcbiAgICAgIGxpc3QuZ2V0TGV2ZWwoKSA9PT0gMVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubW92ZUxlZnRPcC5wZXJmb3JtKCk7XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IFByZWMgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL015RWRpdG9yXCI7XG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4uL2ZlYXR1cmVzL0ZlYXR1cmVcIjtcbmltcG9ydCB7IE91dGRlbnRJZkxpbmVJc0VtcHR5T3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvT3V0ZGVudElmTGluZUlzRW1wdHlPcGVyYXRpb25cIjtcbmltcG9ydCB7IElNRVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FU2VydmljZVwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2VydmljZVwiO1xuaW1wb3J0IHsgUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcIjtcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1NlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIEVudGVyT3V0ZGVudElmTGluZUlzRW1wdHlGZWF0dXJlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbWU6IElNRVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVyZm9ybU9wZXJhdGlvbjogUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBQcmVjLmhpZ2hlc3QoXG4gICAgICAgIGtleW1hcC5vZihbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcIkVudGVyXCIsXG4gICAgICAgICAgICBydW46IHRoaXMub2JzaWRpYW4uY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgICAgcnVuOiB0aGlzLnJ1bixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBjaGVjayA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5iZXR0ZXJFbnRlciAmJiAhdGhpcy5pbWUuaXNJTUVPcGVuZWQoKTtcbiAgfTtcblxuICBwcml2YXRlIHJ1biA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMucGVyZm9ybU9wZXJhdGlvbi5wZXJmb3JtT3BlcmF0aW9uKFxuICAgICAgKHJvb3QpID0+IG5ldyBPdXRkZW50SWZMaW5lSXNFbXB0eU9wZXJhdGlvbihyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gY21wUG9zKGE6IFBvc2l0aW9uLCBiOiBQb3NpdGlvbikge1xuICByZXR1cm4gYS5saW5lIC0gYi5saW5lIHx8IGEuY2ggLSBiLmNoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF4UG9zKGE6IFBvc2l0aW9uLCBiOiBQb3NpdGlvbikge1xuICByZXR1cm4gY21wUG9zKGEsIGIpIDwgMCA/IGIgOiBhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluUG9zKGE6IFBvc2l0aW9uLCBiOiBQb3NpdGlvbikge1xuICByZXR1cm4gY21wUG9zKGEsIGIpIDwgMCA/IGEgOiBiO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvc2l0aW9uIHtcbiAgY2g6IG51bWJlcjtcbiAgbGluZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RMaW5lIHtcbiAgdGV4dDogc3RyaW5nO1xuICBmcm9tOiBQb3NpdGlvbjtcbiAgdG86IFBvc2l0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhbmdlIHtcbiAgYW5jaG9yOiBQb3NpdGlvbjtcbiAgaGVhZDogUG9zaXRpb247XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0IHtcbiAgcHJpdmF0ZSBwYXJlbnQ6IExpc3QgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjaGlsZHJlbjogTGlzdFtdID0gW107XG4gIHByaXZhdGUgbm90ZXNJbmRlbnQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm9vdDogUm9vdCxcbiAgICBwcml2YXRlIGluZGVudDogc3RyaW5nLFxuICAgIHByaXZhdGUgYnVsbGV0OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBzcGFjZUFmdGVyQnVsbGV0OiBzdHJpbmcsXG4gICAgZmlyc3RMaW5lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBmb2xkUm9vdDogYm9vbGVhblxuICApIHtcbiAgICB0aGlzLmxpbmVzLnB1c2goZmlyc3RMaW5lKTtcbiAgfVxuXG4gIGdldE5vdGVzSW5kZW50KCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm5vdGVzSW5kZW50O1xuICB9XG5cbiAgc2V0Tm90ZXNJbmRlbnQobm90ZXNJbmRlbnQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm5vdGVzSW5kZW50ICE9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vdGVzIGluZGVudCBhbHJlYWR5IHByb3ZpZGVkYCk7XG4gICAgfVxuICAgIHRoaXMubm90ZXNJbmRlbnQgPSBub3Rlc0luZGVudDtcbiAgfVxuXG4gIGFkZExpbmUodGV4dDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMubm90ZXNJbmRlbnQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFVuYWJsZSB0byBhZGQgbGluZSwgbm90ZXMgaW5kZW50IHNob3VsZCBiZSBwcm92aWRlZCBmaXJzdGBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5saW5lcy5wdXNoKHRleHQpO1xuICB9XG5cbiAgcmVwbGFjZUxpbmVzKGxpbmVzOiBzdHJpbmdbXSkge1xuICAgIGlmIChsaW5lcy5sZW5ndGggPiAxICYmIHRoaXMubm90ZXNJbmRlbnQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFVuYWJsZSB0byBhZGQgbGluZSwgbm90ZXMgaW5kZW50IHNob3VsZCBiZSBwcm92aWRlZCBmaXJzdGBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5saW5lcyA9IGxpbmVzO1xuICB9XG5cbiAgZ2V0TGluZUNvdW50KCkge1xuICAgIHJldHVybiB0aGlzLmxpbmVzLmxlbmd0aDtcbiAgfVxuXG4gIGdldFJvb3QoKSB7XG4gICAgcmV0dXJuIHRoaXMucm9vdDtcbiAgfVxuXG4gIGdldENoaWxkcmVuKCkge1xuICAgIHJldHVybiB0aGlzLmNoaWxkcmVuLmNvbmNhdCgpO1xuICB9XG5cbiAgZ2V0TGluZXNJbmZvKCk6IExpc3RMaW5lW10ge1xuICAgIGNvbnN0IHN0YXJ0TGluZSA9IHRoaXMucm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKHRoaXMpWzBdO1xuXG4gICAgcmV0dXJuIHRoaXMubGluZXMubWFwKChyb3csIGkpID0+IHtcbiAgICAgIGNvbnN0IGxpbmUgPSBzdGFydExpbmUgKyBpO1xuICAgICAgY29uc3Qgc3RhcnRDaCA9XG4gICAgICAgIGkgPT09IDAgPyB0aGlzLmdldENvbnRlbnRTdGFydENoKCkgOiB0aGlzLm5vdGVzSW5kZW50Lmxlbmd0aDtcbiAgICAgIGNvbnN0IGVuZENoID0gc3RhcnRDaCArIHJvdy5sZW5ndGg7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRleHQ6IHJvdyxcbiAgICAgICAgZnJvbTogeyBsaW5lLCBjaDogc3RhcnRDaCB9LFxuICAgICAgICB0bzogeyBsaW5lLCBjaDogZW5kQ2ggfSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBnZXRMaW5lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMubGluZXMuY29uY2F0KCk7XG4gIH1cblxuICBnZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKSB7XG4gICAgY29uc3Qgc3RhcnRMaW5lID0gdGhpcy5yb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YodGhpcylbMF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGluZTogc3RhcnRMaW5lLFxuICAgICAgY2g6IHRoaXMuZ2V0Q29udGVudFN0YXJ0Q2goKSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0TGFzdExpbmVDb250ZW50RW5kKCkge1xuICAgIGNvbnN0IGVuZExpbmUgPSB0aGlzLnJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZih0aGlzKVsxXTtcbiAgICBjb25zdCBlbmRDaCA9XG4gICAgICB0aGlzLmxpbmVzLmxlbmd0aCA9PT0gMVxuICAgICAgICA/IHRoaXMuZ2V0Q29udGVudFN0YXJ0Q2goKSArIHRoaXMubGluZXNbMF0ubGVuZ3RoXG4gICAgICAgIDogdGhpcy5ub3Rlc0luZGVudC5sZW5ndGggKyB0aGlzLmxpbmVzW3RoaXMubGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IGVuZExpbmUsXG4gICAgICBjaDogZW5kQ2gsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29udGVudFN0YXJ0Q2goKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5kZW50Lmxlbmd0aCArIHRoaXMuYnVsbGV0Lmxlbmd0aCArIDE7XG4gIH1cblxuICBpc0ZvbGRlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5mb2xkUm9vdCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJlbnQuaXNGb2xkZWQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpc0ZvbGRSb290KCkge1xuICAgIHJldHVybiB0aGlzLmZvbGRSb290O1xuICB9XG5cbiAgZ2V0VG9wRm9sZFJvb3QoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG4gICAgbGV0IHRtcDogTGlzdCA9IHRoaXM7XG4gICAgbGV0IGZvbGRSb290OiBMaXN0IHwgbnVsbCA9IG51bGw7XG4gICAgd2hpbGUgKHRtcCkge1xuICAgICAgaWYgKHRtcC5pc0ZvbGRSb290KCkpIHtcbiAgICAgICAgZm9sZFJvb3QgPSB0bXA7XG4gICAgICB9XG4gICAgICB0bXAgPSB0bXAucGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4gZm9sZFJvb3Q7XG4gIH1cblxuICBnZXRMZXZlbCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5wYXJlbnQpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnBhcmVudC5nZXRMZXZlbCgpICsgMTtcbiAgfVxuXG4gIHVuaW5kZW50Q29udGVudChmcm9tOiBudW1iZXIsIHRpbGw6IG51bWJlcikge1xuICAgIHRoaXMuaW5kZW50ID0gdGhpcy5pbmRlbnQuc2xpY2UoMCwgZnJvbSkgKyB0aGlzLmluZGVudC5zbGljZSh0aWxsKTtcbiAgICBpZiAodGhpcy5ub3Rlc0luZGVudCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5ub3Rlc0luZGVudCA9XG4gICAgICAgIHRoaXMubm90ZXNJbmRlbnQuc2xpY2UoMCwgZnJvbSkgKyB0aGlzLm5vdGVzSW5kZW50LnNsaWNlKHRpbGwpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZHJlbikge1xuICAgICAgY2hpbGQudW5pbmRlbnRDb250ZW50KGZyb20sIHRpbGwpO1xuICAgIH1cbiAgfVxuXG4gIGluZGVudENvbnRlbnQoaW5kZW50UG9zOiBudW1iZXIsIGluZGVudENoYXJzOiBzdHJpbmcpIHtcbiAgICB0aGlzLmluZGVudCA9XG4gICAgICB0aGlzLmluZGVudC5zbGljZSgwLCBpbmRlbnRQb3MpICtcbiAgICAgIGluZGVudENoYXJzICtcbiAgICAgIHRoaXMuaW5kZW50LnNsaWNlKGluZGVudFBvcyk7XG4gICAgaWYgKHRoaXMubm90ZXNJbmRlbnQgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubm90ZXNJbmRlbnQgPVxuICAgICAgICB0aGlzLm5vdGVzSW5kZW50LnNsaWNlKDAsIGluZGVudFBvcykgK1xuICAgICAgICBpbmRlbnRDaGFycyArXG4gICAgICAgIHRoaXMubm90ZXNJbmRlbnQuc2xpY2UoaW5kZW50UG9zKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGRyZW4pIHtcbiAgICAgIGNoaWxkLmluZGVudENvbnRlbnQoaW5kZW50UG9zLCBpbmRlbnRDaGFycyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Rmlyc3RMaW5lSW5kZW50KCkge1xuICAgIHJldHVybiB0aGlzLmluZGVudDtcbiAgfVxuXG4gIGdldEJ1bGxldCgpIHtcbiAgICByZXR1cm4gdGhpcy5idWxsZXQ7XG4gIH1cblxuICBnZXRTcGFjZUFmdGVyQnVsbGV0KCkge1xuICAgIHJldHVybiB0aGlzLnNwYWNlQWZ0ZXJCdWxsZXQ7XG4gIH1cblxuICByZXBsYXRlQnVsbGV0KGJ1bGxldDogc3RyaW5nKSB7XG4gICAgdGhpcy5idWxsZXQgPSBidWxsZXQ7XG4gIH1cblxuICBnZXRQYXJlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgYWRkQmVmb3JlQWxsKGxpc3Q6IExpc3QpIHtcbiAgICB0aGlzLmNoaWxkcmVuLnVuc2hpZnQobGlzdCk7XG4gICAgbGlzdC5wYXJlbnQgPSB0aGlzO1xuICB9XG5cbiAgYWRkQWZ0ZXJBbGwobGlzdDogTGlzdCkge1xuICAgIHRoaXMuY2hpbGRyZW4ucHVzaChsaXN0KTtcbiAgICBsaXN0LnBhcmVudCA9IHRoaXM7XG4gIH1cblxuICByZW1vdmVDaGlsZChsaXN0OiBMaXN0KSB7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZihsaXN0KTtcbiAgICB0aGlzLmNoaWxkcmVuLnNwbGljZShpLCAxKTtcbiAgICBsaXN0LnBhcmVudCA9IG51bGw7XG4gIH1cblxuICBhZGRCZWZvcmUoYmVmb3JlOiBMaXN0LCBsaXN0OiBMaXN0KSB7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZihiZWZvcmUpO1xuICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNlKGksIDAsIGxpc3QpO1xuICAgIGxpc3QucGFyZW50ID0gdGhpcztcbiAgfVxuXG4gIGFkZEFmdGVyKGJlZm9yZTogTGlzdCwgbGlzdDogTGlzdCkge1xuICAgIGNvbnN0IGkgPSB0aGlzLmNoaWxkcmVuLmluZGV4T2YoYmVmb3JlKTtcbiAgICB0aGlzLmNoaWxkcmVuLnNwbGljZShpICsgMSwgMCwgbGlzdCk7XG4gICAgbGlzdC5wYXJlbnQgPSB0aGlzO1xuICB9XG5cbiAgZ2V0UHJldlNpYmxpbmdPZihsaXN0OiBMaXN0KSB7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZihsaXN0KTtcbiAgICByZXR1cm4gaSA+IDAgPyB0aGlzLmNoaWxkcmVuW2kgLSAxXSA6IG51bGw7XG4gIH1cblxuICBnZXROZXh0U2libGluZ09mKGxpc3Q6IExpc3QpIHtcbiAgICBjb25zdCBpID0gdGhpcy5jaGlsZHJlbi5pbmRleE9mKGxpc3QpO1xuICAgIHJldHVybiBpID49IDAgJiYgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoID8gdGhpcy5jaGlsZHJlbltpICsgMV0gOiBudWxsO1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZHJlbi5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwcmludCgpIHtcbiAgICBsZXQgcmVzID0gXCJcIjtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5saW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzICs9XG4gICAgICAgIGkgPT09IDBcbiAgICAgICAgICA/IHRoaXMuaW5kZW50ICsgdGhpcy5idWxsZXQgKyB0aGlzLnNwYWNlQWZ0ZXJCdWxsZXRcbiAgICAgICAgICA6IHRoaXMubm90ZXNJbmRlbnQ7XG4gICAgICByZXMgKz0gdGhpcy5saW5lc1tpXTtcbiAgICAgIHJlcyArPSBcIlxcblwiO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZHJlbikge1xuICAgICAgcmVzICs9IGNoaWxkLnByaW50KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUm9vdCB7XG4gIHByaXZhdGUgcm9vdExpc3QgPSBuZXcgTGlzdCh0aGlzLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBmYWxzZSk7XG4gIHByaXZhdGUgc2VsZWN0aW9uczogUmFuZ2VbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RhcnQ6IFBvc2l0aW9uLFxuICAgIHByaXZhdGUgZW5kOiBQb3NpdGlvbixcbiAgICBzZWxlY3Rpb25zOiBSYW5nZVtdXG4gICkge1xuICAgIHRoaXMucmVwbGFjZVNlbGVjdGlvbnMoc2VsZWN0aW9ucyk7XG4gIH1cblxuICBnZXRSb290TGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5yb290TGlzdDtcbiAgfVxuXG4gIGdldFJhbmdlKCk6IFtQb3NpdGlvbiwgUG9zaXRpb25dIHtcbiAgICByZXR1cm4gW3sgLi4udGhpcy5zdGFydCB9LCB7IC4uLnRoaXMuZW5kIH1dO1xuICB9XG5cbiAgZ2V0U2VsZWN0aW9ucygpOiBSYW5nZVtdIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25zLm1hcCgocykgPT4gKHtcbiAgICAgIGFuY2hvcjogeyAuLi5zLmFuY2hvciB9LFxuICAgICAgaGVhZDogeyAuLi5zLmhlYWQgfSxcbiAgICB9KSk7XG4gIH1cblxuICBoYXNTaW5nbGVDdXJzb3IoKSB7XG4gICAgaWYgKCF0aGlzLmhhc1NpbmdsZVNlbGVjdGlvbigpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb25zWzBdO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIHNlbGVjdGlvbi5hbmNob3IubGluZSA9PT0gc2VsZWN0aW9uLmhlYWQubGluZSAmJlxuICAgICAgc2VsZWN0aW9uLmFuY2hvci5jaCA9PT0gc2VsZWN0aW9uLmhlYWQuY2hcbiAgICApO1xuICB9XG5cbiAgaGFzU2luZ2xlU2VsZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbnMubGVuZ3RoID09PSAxO1xuICB9XG5cbiAgZ2V0Q3Vyc29yKCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuc2VsZWN0aW9uc1t0aGlzLnNlbGVjdGlvbnMubGVuZ3RoIC0gMV0uaGVhZCB9O1xuICB9XG5cbiAgcmVwbGFjZUN1cnNvcihjdXJzb3I6IFBvc2l0aW9uKSB7XG4gICAgdGhpcy5zZWxlY3Rpb25zID0gW3sgYW5jaG9yOiBjdXJzb3IsIGhlYWQ6IGN1cnNvciB9XTtcbiAgfVxuXG4gIHJlcGxhY2VTZWxlY3Rpb25zKHNlbGVjdGlvbnM6IFJhbmdlW10pIHtcbiAgICBpZiAoc2VsZWN0aW9ucy5sZW5ndGggPCAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBjcmVhdGUgUm9vdCB3aXRob3V0IHNlbGVjdGlvbnNgKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3Rpb25zID0gc2VsZWN0aW9ucztcbiAgfVxuXG4gIGdldExpc3RVbmRlckN1cnNvcigpOiBMaXN0IHtcbiAgICByZXR1cm4gdGhpcy5nZXRMaXN0VW5kZXJMaW5lKHRoaXMuZ2V0Q3Vyc29yKCkubGluZSk7XG4gIH1cblxuICBnZXRMaXN0VW5kZXJMaW5lKGxpbmU6IG51bWJlcikge1xuICAgIGlmIChsaW5lIDwgdGhpcy5zdGFydC5saW5lIHx8IGxpbmUgPiB0aGlzLmVuZC5saW5lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdDogTGlzdCA9IG51bGw7XG4gICAgbGV0IGluZGV4OiBudW1iZXIgPSB0aGlzLnN0YXJ0LmxpbmU7XG5cbiAgICBjb25zdCB2aXNpdEFyciA9IChsbDogTGlzdFtdKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGwgb2YgbGwpIHtcbiAgICAgICAgY29uc3QgbGlzdEZyb21MaW5lID0gaW5kZXg7XG4gICAgICAgIGNvbnN0IGxpc3RUaWxsTGluZSA9IGxpc3RGcm9tTGluZSArIGwuZ2V0TGluZUNvdW50KCkgLSAxO1xuXG4gICAgICAgIGlmIChsaW5lID49IGxpc3RGcm9tTGluZSAmJiBsaW5lIDw9IGxpc3RUaWxsTGluZSkge1xuICAgICAgICAgIHJlc3VsdCA9IGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5kZXggPSBsaXN0VGlsbExpbmUgKyAxO1xuICAgICAgICAgIHZpc2l0QXJyKGwuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB2aXNpdEFycih0aGlzLnJvb3RMaXN0LmdldENoaWxkcmVuKCkpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdDogTGlzdCk6IFtudW1iZXIsIG51bWJlcl0gfCBudWxsIHtcbiAgICBsZXQgcmVzdWx0OiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGxpbmU6IG51bWJlciA9IHRoaXMuc3RhcnQubGluZTtcblxuICAgIGNvbnN0IHZpc2l0QXJyID0gKGxsOiBMaXN0W10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgbCBvZiBsbCkge1xuICAgICAgICBjb25zdCBsaXN0RnJvbUxpbmUgPSBsaW5lO1xuICAgICAgICBjb25zdCBsaXN0VGlsbExpbmUgPSBsaXN0RnJvbUxpbmUgKyBsLmdldExpbmVDb3VudCgpIC0gMTtcblxuICAgICAgICBpZiAobCA9PT0gbGlzdCkge1xuICAgICAgICAgIHJlc3VsdCA9IFtsaXN0RnJvbUxpbmUsIGxpc3RUaWxsTGluZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGluZSA9IGxpc3RUaWxsTGluZSArIDE7XG4gICAgICAgICAgdmlzaXRBcnIobC5nZXRDaGlsZHJlbigpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmlzaXRBcnIodGhpcy5yb290TGlzdC5nZXRDaGlsZHJlbigpKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5yb290TGlzdC5nZXRDaGlsZHJlbigpO1xuICB9XG5cbiAgcHJpbnQoKSB7XG4gICAgbGV0IHJlcyA9IFwiXCI7XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMucm9vdExpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgcmVzICs9IGNoaWxkLnByaW50KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5yZXBsYWNlKC9cXG4kLywgXCJcIik7XG4gIH1cbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBMaXN0LCBQb3NpdGlvbiwgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzIH0gZnJvbSBcIi4uL3Jvb3QvcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0c1wiO1xuaW1wb3J0IHsgaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3ggfSBmcm9tIFwiLi4vdXRpbHMvaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3hcIjtcblxuZXhwb3J0IGludGVyZmFjZSBHZXRab29tUmFuZ2Uge1xuICBnZXRab29tUmFuZ2UoKTogeyBmcm9tOiBQb3NpdGlvbjsgdG86IFBvc2l0aW9uIH0gfCBudWxsO1xufVxuXG5leHBvcnQgY2xhc3MgQ3JlYXRlTmV3SXRlbU9wZXJhdGlvbiBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm9vdDogUm9vdCxcbiAgICBwcml2YXRlIGRlZmF1bHRJbmRlbnRDaGFyczogc3RyaW5nLFxuICAgIHByaXZhdGUgZ2V0Wm9vbVJhbmdlOiBHZXRab29tUmFuZ2VcbiAgKSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgbGluZXMgPSBsaXN0LmdldExpbmVzSW5mbygpO1xuXG4gICAgaWYgKGxpbmVzLmxlbmd0aCA9PT0gMSAmJiBpc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveChsaW5lc1swXS50ZXh0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgY29uc3QgbGluZVVuZGVyQ3Vyc29yID0gbGluZXMuZmluZCgobCkgPT4gbC5mcm9tLmxpbmUgPT09IGN1cnNvci5saW5lKTtcblxuICAgIGlmIChjdXJzb3IuY2ggPCBsaW5lVW5kZXJDdXJzb3IuZnJvbS5jaCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgb2xkTGluZXMsIG5ld0xpbmVzIH0gPSBsaW5lcy5yZWR1Y2UoXG4gICAgICAoYWNjLCBsaW5lKSA9PiB7XG4gICAgICAgIGlmIChjdXJzb3IubGluZSA+IGxpbmUuZnJvbS5saW5lKSB7XG4gICAgICAgICAgYWNjLm9sZExpbmVzLnB1c2gobGluZS50ZXh0KTtcbiAgICAgICAgfSBlbHNlIGlmIChjdXJzb3IubGluZSA9PT0gbGluZS5mcm9tLmxpbmUpIHtcbiAgICAgICAgICBjb25zdCBhID0gbGluZS50ZXh0LnNsaWNlKDAsIGN1cnNvci5jaCAtIGxpbmUuZnJvbS5jaCk7XG4gICAgICAgICAgY29uc3QgYiA9IGxpbmUudGV4dC5zbGljZShjdXJzb3IuY2ggLSBsaW5lLmZyb20uY2gpO1xuICAgICAgICAgIGFjYy5vbGRMaW5lcy5wdXNoKGEpO1xuICAgICAgICAgIGFjYy5uZXdMaW5lcy5wdXNoKGIpO1xuICAgICAgICB9IGVsc2UgaWYgKGN1cnNvci5saW5lIDwgbGluZS5mcm9tLmxpbmUpIHtcbiAgICAgICAgICBhY2MubmV3TGluZXMucHVzaChsaW5lLnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9sZExpbmVzOiBbXSxcbiAgICAgICAgbmV3TGluZXM6IFtdLFxuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBjb2RlQmxvY2tCYWN0aWNrcyA9IG9sZExpbmVzLmpvaW4oXCJcXG5cIikuc3BsaXQoXCJgYGBcIikubGVuZ3RoIC0gMTtcbiAgICBjb25zdCBpc0luc2lkZUNvZGVibG9jayA9XG4gICAgICBjb2RlQmxvY2tCYWN0aWNrcyA+IDAgJiYgY29kZUJsb2NrQmFjdGlja3MgJSAyICE9PSAwO1xuXG4gICAgaWYgKGlzSW5zaWRlQ29kZWJsb2NrKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBjb25zdCB6b29tUmFuZ2UgPSB0aGlzLmdldFpvb21SYW5nZS5nZXRab29tUmFuZ2UoKTtcbiAgICBjb25zdCBsaXN0SXNab29taW5nUm9vdCA9IEJvb2xlYW4oXG4gICAgICB6b29tUmFuZ2UgJiZcbiAgICAgICAgbGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lID49IHpvb21SYW5nZS5mcm9tLmxpbmUgJiZcbiAgICAgICAgbGlzdC5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKS5saW5lIDw9IHpvb21SYW5nZS5mcm9tLmxpbmVcbiAgICApO1xuXG4gICAgY29uc3QgaGFzQ2hpbGRyZW4gPSAhbGlzdC5pc0VtcHR5KCk7XG4gICAgY29uc3QgY2hpbGRJc0ZvbGRlZCA9IGxpc3QuaXNGb2xkUm9vdCgpO1xuICAgIGNvbnN0IGVuZFBvcyA9IGxpc3QuZ2V0TGFzdExpbmVDb250ZW50RW5kKCk7XG4gICAgY29uc3QgZW5kT2ZMaW5lID0gY3Vyc29yLmxpbmUgPT09IGVuZFBvcy5saW5lICYmIGN1cnNvci5jaCA9PT0gZW5kUG9zLmNoO1xuXG4gICAgY29uc3Qgb25DaGlsZExldmVsID1cbiAgICAgIGxpc3RJc1pvb21pbmdSb290IHx8IChoYXNDaGlsZHJlbiAmJiAhY2hpbGRJc0ZvbGRlZCAmJiBlbmRPZkxpbmUpO1xuXG4gICAgY29uc3QgaW5kZW50ID0gb25DaGlsZExldmVsXG4gICAgICA/IGhhc0NoaWxkcmVuXG4gICAgICAgID8gbGlzdC5nZXRDaGlsZHJlbigpWzBdLmdldEZpcnN0TGluZUluZGVudCgpXG4gICAgICAgIDogbGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKSArIHRoaXMuZGVmYXVsdEluZGVudENoYXJzXG4gICAgICA6IGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCk7XG5cbiAgICBjb25zdCBidWxsZXQgPVxuICAgICAgb25DaGlsZExldmVsICYmIGhhc0NoaWxkcmVuXG4gICAgICAgID8gbGlzdC5nZXRDaGlsZHJlbigpWzBdLmdldEJ1bGxldCgpXG4gICAgICAgIDogbGlzdC5nZXRCdWxsZXQoKTtcblxuICAgIGNvbnN0IHNwYWNlQWZ0ZXJCdWxsZXQgPVxuICAgICAgb25DaGlsZExldmVsICYmIGhhc0NoaWxkcmVuXG4gICAgICAgID8gbGlzdC5nZXRDaGlsZHJlbigpWzBdLmdldFNwYWNlQWZ0ZXJCdWxsZXQoKVxuICAgICAgICA6IGxpc3QuZ2V0U3BhY2VBZnRlckJ1bGxldCgpO1xuXG4gICAgY29uc3QgcHJlZml4ID0gb2xkTGluZXNbMF0ubWF0Y2goL15cXFsuXFxdLykgPyBcIlsgXSBcIiA6IFwiXCI7XG5cbiAgICBjb25zdCBuZXdMaXN0ID0gbmV3IExpc3QoXG4gICAgICBsaXN0LmdldFJvb3QoKSxcbiAgICAgIGluZGVudCxcbiAgICAgIGJ1bGxldCxcbiAgICAgIHNwYWNlQWZ0ZXJCdWxsZXQsXG4gICAgICBwcmVmaXggKyBuZXdMaW5lcy5zaGlmdCgpLFxuICAgICAgZmFsc2VcbiAgICApO1xuXG4gICAgaWYgKG5ld0xpbmVzLmxlbmd0aCA+IDApIHtcbiAgICAgIG5ld0xpc3Quc2V0Tm90ZXNJbmRlbnQobGlzdC5nZXROb3Rlc0luZGVudCgpKTtcbiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBuZXdMaW5lcykge1xuICAgICAgICBuZXdMaXN0LmFkZExpbmUobGluZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9uQ2hpbGRMZXZlbCkge1xuICAgICAgbGlzdC5hZGRCZWZvcmVBbGwobmV3TGlzdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghY2hpbGRJc0ZvbGRlZCB8fCAhZW5kT2ZMaW5lKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gbGlzdC5nZXRDaGlsZHJlbigpO1xuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgICAgICAgbGlzdC5yZW1vdmVDaGlsZChjaGlsZCk7XG4gICAgICAgICAgbmV3TGlzdC5hZGRBZnRlckFsbChjaGlsZCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGlzdC5nZXRQYXJlbnQoKS5hZGRBZnRlcihsaXN0LCBuZXdMaXN0KTtcbiAgICB9XG5cbiAgICBsaXN0LnJlcGxhY2VMaW5lcyhvbGRMaW5lcyk7XG5cbiAgICBjb25zdCBuZXdMaXN0U3RhcnQgPSBuZXdMaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpO1xuICAgIHJvb3QucmVwbGFjZUN1cnNvcih7XG4gICAgICBsaW5lOiBuZXdMaXN0U3RhcnQubGluZSxcbiAgICAgIGNoOiBuZXdMaXN0U3RhcnQuY2ggKyBwcmVmaXgubGVuZ3RoLFxuICAgIH0pO1xuXG4gICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgUHJlYyB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsga2V5bWFwIH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vTXlFZGl0b3JcIjtcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi4vZmVhdHVyZXMvRmVhdHVyZVwiO1xuaW1wb3J0IHsgQ3JlYXRlTmV3SXRlbU9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL0NyZWF0ZU5ld0l0ZW1PcGVyYXRpb25cIjtcbmltcG9ydCB7IElNRVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FU2VydmljZVwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2VydmljZVwiO1xuaW1wb3J0IHsgUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcIjtcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1NlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIEVudGVyU2hvdWxkQ3JlYXRlTmV3SXRlbUZlYXR1cmUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIGltZTogSU1FU2VydmljZSxcbiAgICBwcml2YXRlIG9ic2lkaWFuOiBPYnNpZGlhblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJmb3JtT3BlcmF0aW9uOiBQZXJmb3JtT3BlcmF0aW9uU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIFByZWMuaGlnaGVzdChcbiAgICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFwiRW50ZXJcIixcbiAgICAgICAgICAgIHJ1bjogdGhpcy5vYnNpZGlhbi5jcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgICBydW46IHRoaXMucnVuLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIGNoZWNrID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLmJldHRlckVudGVyICYmICF0aGlzLmltZS5pc0lNRU9wZW5lZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBjb25zdCB6b29tUmFuZ2UgPSBlZGl0b3IuZ2V0Wm9vbVJhbmdlKCk7XG5cbiAgICBjb25zdCByZXMgPSB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PlxuICAgICAgICBuZXcgQ3JlYXRlTmV3SXRlbU9wZXJhdGlvbihcbiAgICAgICAgICByb290LFxuICAgICAgICAgIHRoaXMub2JzaWRpYW4uZ2V0RGVmYXVsdEluZGVudENoYXJzKCksXG4gICAgICAgICAge1xuICAgICAgICAgICAgZ2V0Wm9vbVJhbmdlOiAoKSA9PiB6b29tUmFuZ2UsXG4gICAgICAgICAgfVxuICAgICAgICApLFxuICAgICAgZWRpdG9yXG4gICAgKTtcblxuICAgIGlmIChyZXMuc2hvdWxkVXBkYXRlICYmIHpvb21SYW5nZSkge1xuICAgICAgZWRpdG9yLnpvb21Jbih6b29tUmFuZ2UuZnJvbS5saW5lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgTm90aWNlLCBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9NeUVkaXRvclwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2VydmljZVwiO1xuXG5leHBvcnQgY2xhc3MgRm9sZEZlYXR1cmUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLCBwcml2YXRlIG9ic2lkaWFuOiBPYnNpZGlhblNlcnZpY2UpIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcImZvbGRcIixcbiAgICAgIG5hbWU6IFwiRm9sZCB0aGUgbGlzdFwiLFxuICAgICAgZWRpdG9yQ2FsbGJhY2s6IHRoaXMub2JzaWRpYW4uY3JlYXRlRWRpdG9yQ2FsbGJhY2sodGhpcy5mb2xkKSxcbiAgICAgIGhvdGtleXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vZGlmaWVyczogW1wiTW9kXCJdLFxuICAgICAgICAgIGtleTogXCJBcnJvd1VwXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wbHVnaW4uYWRkQ29tbWFuZCh7XG4gICAgICBpZDogXCJ1bmZvbGRcIixcbiAgICAgIG5hbWU6IFwiVW5mb2xkIHRoZSBsaXN0XCIsXG4gICAgICBlZGl0b3JDYWxsYmFjazogdGhpcy5vYnNpZGlhbi5jcmVhdGVFZGl0b3JDYWxsYmFjayh0aGlzLnVuZm9sZCksXG4gICAgICBob3RrZXlzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBtb2RpZmllcnM6IFtcIk1vZFwiXSxcbiAgICAgICAgICBrZXk6IFwiQXJyb3dEb3duXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIHNldEZvbGQoZWRpdG9yOiBNeUVkaXRvciwgdHlwZTogXCJmb2xkXCIgfCBcInVuZm9sZFwiKSB7XG4gICAgaWYgKCF0aGlzLm9ic2lkaWFuLmdldE9ic2lkaWFuRm9sZFNldHRpbmdzKCkuZm9sZEluZGVudCkge1xuICAgICAgbmV3IE5vdGljZShcbiAgICAgICAgYFVuYWJsZSB0byAke3R5cGV9IGJlY2F1c2UgZm9sZGluZyBpcyBkaXNhYmxlZC4gUGxlYXNlIGVuYWJsZSBcIkZvbGQgaW5kZW50XCIgaW4gT2JzaWRpYW4gc2V0dGluZ3MuYCxcbiAgICAgICAgNTAwMFxuICAgICAgKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnNvciA9IGVkaXRvci5nZXRDdXJzb3IoKTtcblxuICAgIGlmICh0eXBlID09PSBcImZvbGRcIikge1xuICAgICAgZWRpdG9yLmZvbGQoY3Vyc29yLmxpbmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlZGl0b3IudW5mb2xkKGN1cnNvci5saW5lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZm9sZCA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0Rm9sZChlZGl0b3IsIFwiZm9sZFwiKTtcbiAgfTtcblxuICBwcml2YXRlIHVuZm9sZCA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0Rm9sZChlZGl0b3IsIFwidW5mb2xkXCIpO1xuICB9O1xufVxuIiwiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHtcbiAgZm9sZEVmZmVjdCxcbiAgZm9sZGFibGUsXG4gIGZvbGRlZFJhbmdlcyxcbiAgdW5mb2xkRWZmZWN0LFxufSBmcm9tIFwiQGNvZGVtaXJyb3IvbGFuZ3VhZ2VcIjtcbmltcG9ydCB7IEVkaXRvclZpZXcsIHJ1blNjb3BlSGFuZGxlcnMgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5leHBvcnQgY2xhc3MgTXlFZGl0b3JQb3NpdGlvbiB7XG4gIGxpbmU6IG51bWJlcjtcbiAgY2g6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIE15RWRpdG9yUmFuZ2Uge1xuICBmcm9tOiBNeUVkaXRvclBvc2l0aW9uO1xuICB0bzogTXlFZGl0b3JQb3NpdGlvbjtcbn1cblxuZXhwb3J0IGNsYXNzIE15RWRpdG9yU2VsZWN0aW9uIHtcbiAgYW5jaG9yOiBNeUVkaXRvclBvc2l0aW9uO1xuICBoZWFkOiBNeUVkaXRvclBvc2l0aW9uO1xufVxuXG5mdW5jdGlvbiBmb2xkSW5zaWRlKHZpZXc6IEVkaXRvclZpZXcsIGZyb206IG51bWJlciwgdG86IG51bWJlcikge1xuICBsZXQgZm91bmQ6IHsgZnJvbTogbnVtYmVyOyB0bzogbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcbiAgZm9sZGVkUmFuZ2VzKHZpZXcuc3RhdGUpLmJldHdlZW4oZnJvbSwgdG8sIChmcm9tLCB0bykgPT4ge1xuICAgIGlmICghZm91bmQgfHwgZm91bmQuZnJvbSA+IGZyb20pIGZvdW5kID0geyBmcm9tLCB0byB9O1xuICB9KTtcbiAgcmV0dXJuIGZvdW5kO1xufVxuXG5leHBvcnQgY2xhc3MgTXlFZGl0b3Ige1xuICBwcml2YXRlIHZpZXc6IEVkaXRvclZpZXc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlOiBFZGl0b3IpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHRoaXMudmlldyA9ICh0aGlzLmUgYXMgYW55KS5jbTtcbiAgfVxuXG4gIGdldEN1cnNvcigpOiBNeUVkaXRvclBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5lLmdldEN1cnNvcigpO1xuICB9XG5cbiAgZ2V0TGluZShuOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmUuZ2V0TGluZShuKTtcbiAgfVxuXG4gIGxhc3RMaW5lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZS5sYXN0TGluZSgpO1xuICB9XG5cbiAgbGlzdFNlbGVjdGlvbnMoKTogTXlFZGl0b3JTZWxlY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuZS5saXN0U2VsZWN0aW9ucygpO1xuICB9XG5cbiAgZ2V0UmFuZ2UoZnJvbTogTXlFZGl0b3JQb3NpdGlvbiwgdG86IE15RWRpdG9yUG9zaXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmUuZ2V0UmFuZ2UoZnJvbSwgdG8pO1xuICB9XG5cbiAgcmVwbGFjZVJhbmdlKFxuICAgIHJlcGxhY2VtZW50OiBzdHJpbmcsXG4gICAgZnJvbTogTXlFZGl0b3JQb3NpdGlvbixcbiAgICB0bzogTXlFZGl0b3JQb3NpdGlvblxuICApOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5lLnJlcGxhY2VSYW5nZShyZXBsYWNlbWVudCwgZnJvbSwgdG8pO1xuICB9XG5cbiAgc2V0U2VsZWN0aW9ucyhzZWxlY3Rpb25zOiBNeUVkaXRvclNlbGVjdGlvbltdKTogdm9pZCB7XG4gICAgdGhpcy5lLnNldFNlbGVjdGlvbnMoc2VsZWN0aW9ucyk7XG4gIH1cblxuICBzZXRWYWx1ZSh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmUuc2V0VmFsdWUodGV4dCk7XG4gIH1cblxuICBnZXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmUuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIG9mZnNldFRvUG9zKG9mZnNldDogbnVtYmVyKTogTXlFZGl0b3JQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZS5vZmZzZXRUb1BvcyhvZmZzZXQpO1xuICB9XG5cbiAgcG9zVG9PZmZzZXQocG9zOiBNeUVkaXRvclBvc2l0aW9uKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5lLnBvc1RvT2Zmc2V0KHBvcyk7XG4gIH1cblxuICBmb2xkKG46IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgdmlldyB9ID0gdGhpcztcbiAgICBjb25zdCBsID0gdmlldy5saW5lQmxvY2tBdCh2aWV3LnN0YXRlLmRvYy5saW5lKG4gKyAxKS5mcm9tKTtcbiAgICBjb25zdCByYW5nZSA9IGZvbGRhYmxlKHZpZXcuc3RhdGUsIGwuZnJvbSwgbC50byk7XG5cbiAgICBpZiAoIXJhbmdlIHx8IHJhbmdlLmZyb20gPT09IHJhbmdlLnRvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmlldy5kaXNwYXRjaCh7IGVmZmVjdHM6IFtmb2xkRWZmZWN0Lm9mKHJhbmdlKV0gfSk7XG4gIH1cblxuICB1bmZvbGQobjogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgeyB2aWV3IH0gPSB0aGlzO1xuICAgIGNvbnN0IGwgPSB2aWV3LmxpbmVCbG9ja0F0KHZpZXcuc3RhdGUuZG9jLmxpbmUobiArIDEpLmZyb20pO1xuICAgIGNvbnN0IHJhbmdlID0gZm9sZEluc2lkZSh2aWV3LCBsLmZyb20sIGwudG8pO1xuXG4gICAgaWYgKCFyYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZpZXcuZGlzcGF0Y2goeyBlZmZlY3RzOiBbdW5mb2xkRWZmZWN0Lm9mKHJhbmdlKV0gfSk7XG4gIH1cblxuICBnZXRBbGxGb2xkZWRMaW5lcygpOiBudW1iZXJbXSB7XG4gICAgY29uc3QgYyA9IGZvbGRlZFJhbmdlcyh0aGlzLnZpZXcuc3RhdGUpLml0ZXIoKTtcbiAgICBjb25zdCByZXM6IG51bWJlcltdID0gW107XG4gICAgd2hpbGUgKGMudmFsdWUpIHtcbiAgICAgIHJlcy5wdXNoKHRoaXMub2Zmc2V0VG9Qb3MoYy5mcm9tKS5saW5lKTtcbiAgICAgIGMubmV4dCgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgdHJpZ2dlck9uS2V5RG93bihlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgcnVuU2NvcGVIYW5kbGVycyh0aGlzLnZpZXcsIGUsIFwiZWRpdG9yXCIpO1xuICB9XG5cbiAgZ2V0Wm9vbVJhbmdlKCk6IE15RWRpdG9yUmFuZ2UgfCBudWxsIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IGFwaSA9ICh3aW5kb3cgYXMgYW55KS5PYnNpZGlhblpvb21QbHVnaW47XG5cbiAgICBpZiAoIWFwaSB8fCAhYXBpLmdldFpvb21SYW5nZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFwaS5nZXRab29tUmFuZ2UodGhpcy5lKTtcbiAgfVxuXG4gIHpvb21PdXQoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBhcGkgPSAod2luZG93IGFzIGFueSkuT2JzaWRpYW5ab29tUGx1Z2luO1xuXG4gICAgaWYgKCFhcGkgfHwgIWFwaS56b29tT3V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXBpLnpvb21PdXQodGhpcy5lKTtcbiAgfVxuXG4gIHpvb21JbihsaW5lOiBudW1iZXIpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IGFwaSA9ICh3aW5kb3cgYXMgYW55KS5PYnNpZGlhblpvb21QbHVnaW47XG5cbiAgICBpZiAoIWFwaSB8fCAhYXBpLnpvb21Jbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGFwaS56b29tSW4odGhpcy5lLCBsaW5lKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIsIGVkaXRvclZpZXdGaWVsZCB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQge1xuICBFZGl0b3JWaWV3LFxuICBQbHVnaW5WYWx1ZSxcbiAgVmlld1BsdWdpbixcbiAgVmlld1VwZGF0ZSxcbn0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vTXlFZGl0b3JcIjtcbmltcG9ydCB7IExpc3QgfSBmcm9tIFwiLi4vcm9vdFwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2VydmljZVwiO1xuaW1wb3J0IHsgUGFyc2VyU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9QYXJzZXJTZXJ2aWNlXCI7XG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NTZXJ2aWNlXCI7XG5cbmludGVyZmFjZSBMaW5lRGF0YSB7XG4gIHRvcDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIGhlaWdodDogc3RyaW5nO1xuICBsaXN0OiBMaXN0O1xufVxuXG5jbGFzcyBMaXN0TGluZXNWaWV3UGx1Z2luVmFsdWUgaW1wbGVtZW50cyBQbHVnaW5WYWx1ZSB7XG4gIHByaXZhdGUgc2NoZWR1bGVkOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbW1lZGlhdGU+O1xuICBwcml2YXRlIHNjcm9sbGVyOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBjb250ZW50Q29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBlZGl0b3I6IE15RWRpdG9yO1xuICBwcml2YXRlIGxhc3RMaW5lOiBudW1iZXI7XG4gIHByaXZhdGUgbGluZXM6IExpbmVEYXRhW107XG4gIHByaXZhdGUgbGluZUVsZW1lbnRzOiBIVE1MRWxlbWVudFtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgb2JzaWRpYW46IE9ic2lkaWFuU2VydmljZSxcbiAgICBwcml2YXRlIHBhcnNlcjogUGFyc2VyU2VydmljZSxcbiAgICBwcml2YXRlIHZpZXc6IEVkaXRvclZpZXdcbiAgKSB7XG4gICAgdGhpcy52aWV3LnNjcm9sbERPTS5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHRoaXMub25TY3JvbGwpO1xuICAgIHRoaXMuc2V0dGluZ3Mub25DaGFuZ2UoXCJsaXN0TGluZXNcIiwgdGhpcy5zY2hlZHVsZVJlY2FsY3VsYXRlKTtcblxuICAgIHRoaXMucHJlcGFyZURvbSgpO1xuICAgIHRoaXMud2FpdEZvckVkaXRvcigpO1xuICB9XG5cbiAgcHJpdmF0ZSB3YWl0Rm9yRWRpdG9yID0gKCkgPT4ge1xuICAgIGNvbnN0IG9lID0gdGhpcy52aWV3LnN0YXRlLmZpZWxkKGVkaXRvclZpZXdGaWVsZCkuZWRpdG9yO1xuICAgIGlmICghb2UpIHtcbiAgICAgIHNldFRpbWVvdXQodGhpcy53YWl0Rm9yRWRpdG9yLCAwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5lZGl0b3IgPSBuZXcgTXlFZGl0b3Iob2UpO1xuICAgIHRoaXMuc2NoZWR1bGVSZWNhbGN1bGF0ZSgpO1xuICB9O1xuXG4gIHByaXZhdGUgcHJlcGFyZURvbSgpIHtcbiAgICB0aGlzLmNvbnRlbnRDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIHRoaXMuY29udGVudENvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFxuICAgICAgXCJvdXRsaW5lci1wbHVnaW4tbGlzdC1saW5lcy1jb250ZW50LWNvbnRhaW5lclwiXG4gICAgKTtcblxuICAgIHRoaXMuc2Nyb2xsZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIHRoaXMuc2Nyb2xsZXIuY2xhc3NMaXN0LmFkZChcIm91dGxpbmVyLXBsdWdpbi1saXN0LWxpbmVzLXNjcm9sbGVyXCIpO1xuXG4gICAgdGhpcy5zY3JvbGxlci5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnRDb250YWluZXIpO1xuICAgIHRoaXMudmlldy5kb20uYXBwZW5kQ2hpbGQodGhpcy5zY3JvbGxlcik7XG4gIH1cblxuICBwcml2YXRlIG9uU2Nyb2xsID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyBzY3JvbGxMZWZ0LCBzY3JvbGxUb3AgfSA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIHRoaXMuc2Nyb2xsZXIuc2Nyb2xsVG8oc2Nyb2xsTGVmdCwgc2Nyb2xsVG9wKTtcbiAgfTtcblxuICBwcml2YXRlIHNjaGVkdWxlUmVjYWxjdWxhdGUgPSAoKSA9PiB7XG4gICAgY2xlYXJJbW1lZGlhdGUodGhpcy5zY2hlZHVsZWQpO1xuICAgIHRoaXMuc2NoZWR1bGVkID0gc2V0SW1tZWRpYXRlKHRoaXMuY2FsY3VsYXRlKTtcbiAgfTtcblxuICB1cGRhdGUodXBkYXRlOiBWaWV3VXBkYXRlKSB7XG4gICAgaWYgKFxuICAgICAgdXBkYXRlLmRvY0NoYW5nZWQgfHxcbiAgICAgIHVwZGF0ZS52aWV3cG9ydENoYW5nZWQgfHxcbiAgICAgIHVwZGF0ZS5nZW9tZXRyeUNoYW5nZWQgfHxcbiAgICAgIHVwZGF0ZS50cmFuc2FjdGlvbnMuc29tZSgodHIpID0+IHRyLnJlY29uZmlndXJlZClcbiAgICApIHtcbiAgICAgIHRoaXMuc2NoZWR1bGVSZWNhbGN1bGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlID0gKCkgPT4ge1xuICAgIHRoaXMubGluZXMgPSBbXTtcblxuICAgIGlmIChcbiAgICAgIHRoaXMuc2V0dGluZ3MubGlzdExpbmVzICYmXG4gICAgICB0aGlzLm9ic2lkaWFuLmlzRGVmYXVsdFRoZW1lRW5hYmxlZCgpICYmXG4gICAgICB0aGlzLnZpZXcudmlld3BvcnRMaW5lQmxvY2tzLmxlbmd0aCA+IDAgJiZcbiAgICAgIHRoaXMudmlldy52aXNpYmxlUmFuZ2VzLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIGNvbnN0IGZyb21MaW5lID0gdGhpcy5lZGl0b3Iub2Zmc2V0VG9Qb3ModGhpcy52aWV3LnZpZXdwb3J0LmZyb20pLmxpbmU7XG4gICAgICBjb25zdCB0b0xpbmUgPSB0aGlzLmVkaXRvci5vZmZzZXRUb1Bvcyh0aGlzLnZpZXcudmlld3BvcnQudG8pLmxpbmU7XG4gICAgICBjb25zdCBsaXN0cyA9IHRoaXMucGFyc2VyLnBhcnNlUmFuZ2UodGhpcy5lZGl0b3IsIGZyb21MaW5lLCB0b0xpbmUpO1xuXG4gICAgICBmb3IgKGNvbnN0IGxpc3Qgb2YgbGlzdHMpIHtcbiAgICAgICAgdGhpcy5sYXN0TGluZSA9IGxpc3QuZ2V0UmFuZ2UoKVsxXS5saW5lO1xuXG4gICAgICAgIGZvciAoY29uc3QgYyBvZiBsaXN0LmdldENoaWxkcmVuKCkpIHtcbiAgICAgICAgICB0aGlzLnJlY3Vyc2l2ZShjKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmxpbmVzLnNvcnQoKGEsIGIpID0+XG4gICAgICAgIGEudG9wID09PSBiLnRvcCA/IGEubGVmdCAtIGIubGVmdCA6IGEudG9wIC0gYi50b3BcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVEb20oKTtcbiAgfTtcblxuICBwcml2YXRlIGdldE5leHRTaWJsaW5nKGxpc3Q6IExpc3QpOiBMaXN0IHwgbnVsbCB7XG4gICAgbGV0IGxpc3RUbXAgPSBsaXN0O1xuICAgIGxldCBwID0gbGlzdFRtcC5nZXRQYXJlbnQoKTtcbiAgICB3aGlsZSAocCkge1xuICAgICAgY29uc3QgbmV4dFNpYmxpbmcgPSBwLmdldE5leHRTaWJsaW5nT2YobGlzdFRtcCk7XG4gICAgICBpZiAobmV4dFNpYmxpbmcpIHtcbiAgICAgICAgcmV0dXJuIG5leHRTaWJsaW5nO1xuICAgICAgfVxuICAgICAgbGlzdFRtcCA9IHA7XG4gICAgICBwID0gbGlzdFRtcC5nZXRQYXJlbnQoKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIHJlY3Vyc2l2ZShsaXN0OiBMaXN0KSB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBsaXN0LmdldENoaWxkcmVuKCk7XG5cbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgaWYgKCFjaGlsZC5pc0VtcHR5KCkpIHtcbiAgICAgICAgdGhpcy5yZWN1cnNpdmUoY2hpbGQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZyb21PZmZzZXQgPSB0aGlzLmVkaXRvci5wb3NUb09mZnNldCh7XG4gICAgICBsaW5lOiBsaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUsXG4gICAgICBjaDogbGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKS5sZW5ndGgsXG4gICAgfSk7XG4gICAgY29uc3QgbmV4dFNpYmxpbmcgPSB0aGlzLmdldE5leHRTaWJsaW5nKGxpc3QpO1xuICAgIGNvbnN0IHRpbGxPZmZzZXQgPSB0aGlzLmVkaXRvci5wb3NUb09mZnNldCh7XG4gICAgICBsaW5lOiBuZXh0U2libGluZ1xuICAgICAgICA/IG5leHRTaWJsaW5nLmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUgLSAxXG4gICAgICAgIDogdGhpcy5sYXN0TGluZSxcbiAgICAgIGNoOiAwLFxuICAgIH0pO1xuXG4gICAgbGV0IHZpc2libGVGcm9tID0gdGhpcy52aWV3LnZpc2libGVSYW5nZXNbMF0uZnJvbTtcbiAgICBsZXQgdmlzaWJsZVRvID1cbiAgICAgIHRoaXMudmlldy52aXNpYmxlUmFuZ2VzW3RoaXMudmlldy52aXNpYmxlUmFuZ2VzLmxlbmd0aCAtIDFdLnRvO1xuICAgIGNvbnN0IHpvb21SYW5nZSA9IHRoaXMuZWRpdG9yLmdldFpvb21SYW5nZSgpO1xuICAgIGlmICh6b29tUmFuZ2UpIHtcbiAgICAgIHZpc2libGVGcm9tID0gTWF0aC5tYXgoXG4gICAgICAgIHZpc2libGVGcm9tLFxuICAgICAgICB0aGlzLmVkaXRvci5wb3NUb09mZnNldCh6b29tUmFuZ2UuZnJvbSlcbiAgICAgICk7XG4gICAgICB2aXNpYmxlVG8gPSBNYXRoLm1pbih2aXNpYmxlVG8sIHRoaXMuZWRpdG9yLnBvc1RvT2Zmc2V0KHpvb21SYW5nZS50bykpO1xuICAgIH1cblxuICAgIGlmIChmcm9tT2Zmc2V0ID4gdmlzaWJsZVRvIHx8IHRpbGxPZmZzZXQgPCB2aXNpYmxlRnJvbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRvcCA9XG4gICAgICB2aXNpYmxlRnJvbSA+IDAgJiYgZnJvbU9mZnNldCA8PSB2aXNpYmxlRnJvbVxuICAgICAgICA/IC0yMFxuICAgICAgICA6IHRoaXMudmlldy5saW5lQmxvY2tBdChmcm9tT2Zmc2V0KS50b3A7XG4gICAgY29uc3QgYm90dG9tID1cbiAgICAgIHRpbGxPZmZzZXQgPiB2aXNpYmxlVG9cbiAgICAgICAgPyB0aGlzLnZpZXcubGluZUJsb2NrQXQodmlzaWJsZVRvIC0gMSkuYm90dG9tXG4gICAgICAgIDogdGhpcy52aWV3LmxpbmVCbG9ja0F0KHRpbGxPZmZzZXQpLmJvdHRvbTtcbiAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG5cbiAgICBpZiAoaGVpZ2h0ID4gMCAmJiAhbGlzdC5pc0ZvbGRlZCgpKSB7XG4gICAgICBjb25zdCBuZXh0U2libGluZyA9IGxpc3QuZ2V0UGFyZW50KCkuZ2V0TmV4dFNpYmxpbmdPZihsaXN0KTtcbiAgICAgIGNvbnN0IGhhc05leHRTaWJsaW5nID1cbiAgICAgICAgISFuZXh0U2libGluZyAmJlxuICAgICAgICB0aGlzLmVkaXRvci5wb3NUb09mZnNldChuZXh0U2libGluZy5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKSkgPD1cbiAgICAgICAgICB2aXNpYmxlVG87XG5cbiAgICAgIHRoaXMubGluZXMucHVzaCh7XG4gICAgICAgIHRvcDogdG9wLFxuICAgICAgICBsZWZ0OiB0aGlzLmdldEluZGVudFNpemUobGlzdCksXG4gICAgICAgIGhlaWdodDogYGNhbGMoJHtoZWlnaHR9cHggJHtoYXNOZXh0U2libGluZyA/IFwiLSAxZW1cIiA6IFwiLSAxLjhlbVwifSlgLFxuICAgICAgICBsaXN0LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbmRlbnRTaXplKGxpc3Q6IExpc3QpIHtcbiAgICBjb25zdCB7IHRhYlNpemUgfSA9IHRoaXMub2JzaWRpYW4uZ2V0T2JzaWRpYW5UYWJzU2V0dGluZ3MoKTtcbiAgICBjb25zdCBpbmRlbnQgPSBsaXN0LmdldEZpcnN0TGluZUluZGVudCgpO1xuICAgIGNvbnN0IHNwYWNlU2l6ZSA9IDQuNTtcblxuICAgIGxldCBzcGFjZXMgPSAwO1xuICAgIGZvciAoY29uc3QgY2hhciBvZiBpbmRlbnQpIHtcbiAgICAgIGlmIChjaGFyID09PSBcIlxcdFwiKSB7XG4gICAgICAgIHNwYWNlcyArPSB0YWJTaXplO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3BhY2VzICs9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNwYWNlcyAqIHNwYWNlU2l6ZTtcbiAgfVxuXG4gIHByaXZhdGUgb25DbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgY29uc3QgbGluZSA9IHRoaXMubGluZXNbTnVtYmVyKChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuZGF0YXNldC5pbmRleCldO1xuXG4gICAgc3dpdGNoICh0aGlzLnNldHRpbmdzLmxpc3RMaW5lQWN0aW9uKSB7XG4gICAgICBjYXNlIFwiem9vbS1pblwiOlxuICAgICAgICB0aGlzLnpvb21JbihsaW5lKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJ0b2dnbGUtZm9sZGluZ1wiOlxuICAgICAgICB0aGlzLnRvZ2dsZUZvbGRpbmcobGluZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHpvb21JbihsaW5lOiBMaW5lRGF0YSkge1xuICAgIGNvbnN0IGVkaXRvciA9IG5ldyBNeUVkaXRvcih0aGlzLnZpZXcuc3RhdGUuZmllbGQoZWRpdG9yVmlld0ZpZWxkKS5lZGl0b3IpO1xuXG4gICAgZWRpdG9yLnpvb21JbihsaW5lLmxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZSk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZUZvbGRpbmcobGluZTogTGluZURhdGEpIHtcbiAgICBjb25zdCB7IGxpc3QgfSA9IGxpbmU7XG5cbiAgICBpZiAobGlzdC5pc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbmVlZFRvVW5mb2xkID0gdHJ1ZTtcbiAgICBjb25zdCBsaW5lc1RvVG9nZ2xlOiBudW1iZXJbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgYyBvZiBsaXN0LmdldENoaWxkcmVuKCkpIHtcbiAgICAgIGlmIChjLmlzRW1wdHkoKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICghYy5pc0ZvbGRlZCgpKSB7XG4gICAgICAgIG5lZWRUb1VuZm9sZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgbGluZXNUb1RvZ2dsZS5wdXNoKGMuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZSk7XG4gICAgfVxuXG4gICAgY29uc3QgZWRpdG9yID0gbmV3IE15RWRpdG9yKHRoaXMudmlldy5zdGF0ZS5maWVsZChlZGl0b3JWaWV3RmllbGQpLmVkaXRvcik7XG5cbiAgICBmb3IgKGNvbnN0IGwgb2YgbGluZXNUb1RvZ2dsZSkge1xuICAgICAgaWYgKG5lZWRUb1VuZm9sZCkge1xuICAgICAgICBlZGl0b3IudW5mb2xkKGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWRpdG9yLmZvbGQobCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEb20oKSB7XG4gICAgY29uc3QgY21TY3JvbGwgPSB0aGlzLnZpZXcuc2Nyb2xsRE9NO1xuICAgIGNvbnN0IGNtQ29udGVudCA9IHRoaXMudmlldy5jb250ZW50RE9NO1xuICAgIGNvbnN0IGNtQ29udGVudENvbnRhaW5lciA9IGNtQ29udGVudC5wYXJlbnRFbGVtZW50O1xuXG4gICAgdGhpcy5zY3JvbGxlci5zdHlsZS50b3AgPSBjbVNjcm9sbC5vZmZzZXRUb3AgKyBcInB4XCI7XG4gICAgdGhpcy5jb250ZW50Q29udGFpbmVyLnN0eWxlLmhlaWdodCA9IGNtQ29udGVudC5jbGllbnRIZWlnaHQgKyBcInB4XCI7XG4gICAgdGhpcy5jb250ZW50Q29udGFpbmVyLnN0eWxlLm1hcmdpbkxlZnQgPVxuICAgICAgY21Db250ZW50Q29udGFpbmVyLm9mZnNldExlZnQgKyBcInB4XCI7XG4gICAgdGhpcy5jb250ZW50Q29udGFpbmVyLnN0eWxlLm1hcmdpblRvcCA9XG4gICAgICAoY21Db250ZW50LmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxFbGVtZW50KS5vZmZzZXRUb3AgLSAyNCArIFwicHhcIjtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5saW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMubGluZUVsZW1lbnRzLmxlbmd0aCA9PT0gaSkge1xuICAgICAgICBjb25zdCBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgZS5jbGFzc0xpc3QuYWRkKFwib3V0bGluZXItcGx1Z2luLWxpc3QtbGluZVwiKTtcbiAgICAgICAgZS5kYXRhc2V0LmluZGV4ID0gU3RyaW5nKGkpO1xuICAgICAgICBlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgdGhpcy5vbkNsaWNrKTtcbiAgICAgICAgdGhpcy5jb250ZW50Q29udGFpbmVyLmFwcGVuZENoaWxkKGUpO1xuICAgICAgICB0aGlzLmxpbmVFbGVtZW50cy5wdXNoKGUpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsID0gdGhpcy5saW5lc1tpXTtcbiAgICAgIGNvbnN0IGUgPSB0aGlzLmxpbmVFbGVtZW50c1tpXTtcbiAgICAgIGUuc3R5bGUudG9wID0gbC50b3AgKyBcInB4XCI7XG4gICAgICBlLnN0eWxlLmxlZnQgPSBsLmxlZnQgKyBcInB4XCI7XG4gICAgICBlLnN0eWxlLmhlaWdodCA9IGwuaGVpZ2h0O1xuICAgICAgZS5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSB0aGlzLmxpbmVzLmxlbmd0aDsgaSA8IHRoaXMubGluZUVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBlID0gdGhpcy5saW5lRWxlbWVudHNbaV07XG4gICAgICBlLnN0eWxlLnRvcCA9IFwiMHB4XCI7XG4gICAgICBlLnN0eWxlLmxlZnQgPSBcIjBweFwiO1xuICAgICAgZS5zdHlsZS5oZWlnaHQgPSBcIjBweFwiO1xuICAgICAgZS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgfVxuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLnNldHRpbmdzLnJlbW92ZUNhbGxiYWNrKFwibGlzdExpbmVzXCIsIHRoaXMuc2NoZWR1bGVSZWNhbGN1bGF0ZSk7XG4gICAgdGhpcy52aWV3LnNjcm9sbERPTS5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHRoaXMub25TY3JvbGwpO1xuICAgIHRoaXMudmlldy5kb20ucmVtb3ZlQ2hpbGQodGhpcy5zY3JvbGxlcik7XG4gICAgY2xlYXJJbW1lZGlhdGUodGhpcy5zY2hlZHVsZWQpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaW5lc0ZlYXR1cmUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIG9ic2lkaWFuOiBPYnNpZGlhblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYXJzZXI6IFBhcnNlclNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBWaWV3UGx1Z2luLmRlZmluZShcbiAgICAgICAgKHZpZXcpID0+XG4gICAgICAgICAgbmV3IExpc3RMaW5lc1ZpZXdQbHVnaW5WYWx1ZShcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgICAgICB0aGlzLm9ic2lkaWFuLFxuICAgICAgICAgICAgdGhpcy5wYXJzZXIsXG4gICAgICAgICAgICB2aWV3XG4gICAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxufVxuIiwiaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2VydmljZVwiO1xuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzU2VydmljZVwiO1xuXG5jb25zdCBCRVRURVJfTElTVFNfQ0xBU1MgPSBcIm91dGxpbmVyLXBsdWdpbi1iZXR0ZXItbGlzdHNcIjtcbmNvbnN0IEJFVFRFUl9CVUxMRVRTX0NMQVNTID0gXCJvdXRsaW5lci1wbHVnaW4tYmV0dGVyLWJ1bGxldHNcIjtcbmNvbnN0IFZFUlRJQ0FMX0xJTkVTID0gXCJvdXRsaW5lci1wbHVnaW4tdmVydGljYWwtbGluZXNcIjtcbmNvbnN0IEtOT1dOX0NMQVNTRVMgPSBbXG4gIEJFVFRFUl9MSVNUU19DTEFTUyxcbiAgQkVUVEVSX0JVTExFVFNfQ0xBU1MsXG4gIFZFUlRJQ0FMX0xJTkVTLFxuXTtcblxuZXhwb3J0IGNsYXNzIExpc3RzU3R5bGVzRmVhdHVyZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBwcml2YXRlIGludGVydmFsOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgb2JzaWRpYW46IE9ic2lkaWFuU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnN5bmNMaXN0c1N0eWxlcygpO1xuICAgIHRoaXMuaW50ZXJ2YWwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy5zeW5jTGlzdHNTdHlsZXMoKTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHtcbiAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xuICAgIHRoaXMuYXBwbHlMaXN0c1N0eWxlcyhbXSk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNMaXN0c1N0eWxlcyA9ICgpID0+IHtcbiAgICBjb25zdCBjbGFzc2VzID0gW107XG5cbiAgICBpZiAodGhpcy5vYnNpZGlhbi5pc0RlZmF1bHRUaGVtZUVuYWJsZWQoKSkge1xuICAgICAgaWYgKHRoaXMuc2V0dGluZ3Muc3R5bGVMaXN0cykge1xuICAgICAgICBjbGFzc2VzLnB1c2goQkVUVEVSX0xJU1RTX0NMQVNTKTtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKEJFVFRFUl9CVUxMRVRTX0NMQVNTKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc2V0dGluZ3MubGlzdExpbmVzKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaChWRVJUSUNBTF9MSU5FUyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5hcHBseUxpc3RzU3R5bGVzKGNsYXNzZXMpO1xuICB9O1xuXG4gIHByaXZhdGUgYXBwbHlMaXN0c1N0eWxlcyhjbGFzc2VzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IHRvS2VlcCA9IGNsYXNzZXMuZmlsdGVyKChjKSA9PiBLTk9XTl9DTEFTU0VTLmNvbnRhaW5zKGMpKTtcbiAgICBjb25zdCB0b1JlbW92ZSA9IEtOT1dOX0NMQVNTRVMuZmlsdGVyKChjKSA9PiAhdG9LZWVwLmNvbnRhaW5zKGMpKTtcblxuICAgIGZvciAoY29uc3QgYyBvZiB0b0tlZXApIHtcbiAgICAgIGlmICghZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoYykpIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKGMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgYyBvZiB0b1JlbW92ZSkge1xuICAgICAgaWYgKGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKGMpKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShjKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBMaXN0TGluZSwgUG9zaXRpb24sIFJvb3QgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmVPcGVyYXRpb24gaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gdGhpcy5yb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGN1cnNvciA9IHRoaXMucm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lcyA9IGxpc3QuZ2V0TGluZXNJbmZvKCk7XG4gICAgY29uc3QgbGluZU5vID0gbGluZXMuZmluZEluZGV4KFxuICAgICAgKGwpID0+IGN1cnNvci5jaCA9PT0gbC5mcm9tLmNoICYmIGN1cnNvci5saW5lID09PSBsLmZyb20ubGluZVxuICAgICk7XG5cbiAgICBpZiAobGluZU5vID09PSAwKSB7XG4gICAgICB0aGlzLm1vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRJdGVtKHJvb3QsIGN1cnNvcik7XG4gICAgfSBlbHNlIGlmIChsaW5lTm8gPiAwKSB7XG4gICAgICB0aGlzLm1vdmVDdXJzb3JUb1ByZXZpb3VzTm90ZUxpbmUocm9vdCwgbGluZXMsIGxpbmVObyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlQ3Vyc29yVG9QcmV2aW91c05vdGVMaW5lKFxuICAgIHJvb3Q6IFJvb3QsXG4gICAgbGluZXM6IExpc3RMaW5lW10sXG4gICAgbGluZU5vOiBudW1iZXJcbiAgKSB7XG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICByb290LnJlcGxhY2VDdXJzb3IobGluZXNbbGluZU5vIC0gMV0udG8pO1xuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlQ3Vyc29yVG9QcmV2aW91c1VuZm9sZGVkSXRlbShyb290OiBSb290LCBjdXJzb3I6IFBvc2l0aW9uKSB7XG4gICAgY29uc3QgcHJldiA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShjdXJzb3IubGluZSAtIDEpO1xuXG4gICAgaWYgKCFwcmV2KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBpZiAocHJldi5pc0ZvbGRlZCgpKSB7XG4gICAgICBjb25zdCBmb2xkUm9vdCA9IHByZXYuZ2V0VG9wRm9sZFJvb3QoKTtcbiAgICAgIGNvbnN0IGZpcnN0TGluZUVuZCA9IGZvbGRSb290LmdldExpbmVzSW5mbygpWzBdLnRvO1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKGZpcnN0TGluZUVuZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihwcmV2LmdldExhc3RMaW5lQ29udGVudEVuZCgpKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL015RWRpdG9yXCI7XG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4uL2ZlYXR1cmVzL0ZlYXR1cmVcIjtcbmltcG9ydCB7IE1vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRMaW5lT3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmVPcGVyYXRpb25cIjtcbmltcG9ydCB7IElNRVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FU2VydmljZVwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2VydmljZVwiO1xuaW1wb3J0IHsgUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcIjtcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1NlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIE1vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRMaW5lRmVhdHVyZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW1lOiBJTUVTZXJ2aWNlLFxuICAgIHByaXZhdGUgb2JzaWRpYW46IE9ic2lkaWFuU2VydmljZSxcbiAgICBwcml2YXRlIHBlcmZvcm1PcGVyYXRpb246IFBlcmZvcm1PcGVyYXRpb25TZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogXCJBcnJvd0xlZnRcIixcbiAgICAgICAgICBydW46IHRoaXMub2JzaWRpYW4uY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICBydW46IHRoaXMucnVuLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgd2luOiBcImMtQXJyb3dMZWZ0XCIsXG4gICAgICAgICAgbGludXg6IFwiYy1BcnJvd0xlZnRcIixcbiAgICAgICAgICBydW46IHRoaXMub2JzaWRpYW4uY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICBydW46IHRoaXMucnVuLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIGNoZWNrID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLnN0aWNrQ3Vyc29yICYmICF0aGlzLmltZS5pc0lNRU9wZW5lZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5wZXJmb3JtT3BlcmF0aW9uLnBlcmZvcm1PcGVyYXRpb24oXG4gICAgICAocm9vdCkgPT4gbmV3IE1vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRMaW5lT3BlcmF0aW9uKHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcbmltcG9ydCB7IHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdC9yZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzXCI7XG5cbmV4cG9ydCBjbGFzcyBNb3ZlRG93bk9wZXJhdGlvbiBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVDdXJzb3IoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IHBhcmVudCA9IGxpc3QuZ2V0UGFyZW50KCk7XG4gICAgY29uc3QgZ3JhbmRQYXJlbnQgPSBwYXJlbnQuZ2V0UGFyZW50KCk7XG4gICAgY29uc3QgbmV4dCA9IHBhcmVudC5nZXROZXh0U2libGluZ09mKGxpc3QpO1xuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUJlZm9yZSA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcblxuICAgIGlmICghbmV4dCAmJiBncmFuZFBhcmVudCkge1xuICAgICAgY29uc3QgbmV3UGFyZW50ID0gZ3JhbmRQYXJlbnQuZ2V0TmV4dFNpYmxpbmdPZihwYXJlbnQpO1xuXG4gICAgICBpZiAobmV3UGFyZW50KSB7XG4gICAgICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG4gICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcbiAgICAgICAgbmV3UGFyZW50LmFkZEJlZm9yZUFsbChsaXN0KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5leHQpIHtcbiAgICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG4gICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobGlzdCk7XG4gICAgICBwYXJlbnQuYWRkQWZ0ZXIobmV4dCwgbGlzdCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnVwZGF0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lQWZ0ZXIgPSByb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdClbMF07XG4gICAgY29uc3QgbGluZURpZmYgPSBsaXN0U3RhcnRMaW5lQWZ0ZXIgLSBsaXN0U3RhcnRMaW5lQmVmb3JlO1xuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICByb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgbGluZTogY3Vyc29yLmxpbmUgKyBsaW5lRGlmZixcbiAgICAgIGNoOiBjdXJzb3IuY2gsXG4gICAgfSk7XG5cbiAgICByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3QpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzIH0gZnJvbSBcIi4uL3Jvb3QvcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0c1wiO1xuXG5leHBvcnQgY2xhc3MgTW92ZVJpZ2h0T3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290LCBwcml2YXRlIGRlZmF1bHRJbmRlbnRDaGFyczogc3RyaW5nKSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgcGFyZW50ID0gbGlzdC5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBwcmV2ID0gcGFyZW50LmdldFByZXZTaWJsaW5nT2YobGlzdCk7XG5cbiAgICBpZiAoIXByZXYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUJlZm9yZSA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcblxuICAgIGNvbnN0IGluZGVudFBvcyA9IGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoO1xuICAgIGxldCBpbmRlbnRDaGFycyA9IFwiXCI7XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIgJiYgIXByZXYuaXNFbXB0eSgpKSB7XG4gICAgICBpbmRlbnRDaGFycyA9IHByZXZcbiAgICAgICAgLmdldENoaWxkcmVuKClbMF1cbiAgICAgICAgLmdldEZpcnN0TGluZUluZGVudCgpXG4gICAgICAgIC5zbGljZShwcmV2LmdldEZpcnN0TGluZUluZGVudCgpLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgaWYgKGluZGVudENoYXJzID09PSBcIlwiKSB7XG4gICAgICBpbmRlbnRDaGFycyA9IGxpc3RcbiAgICAgICAgLmdldEZpcnN0TGluZUluZGVudCgpXG4gICAgICAgIC5zbGljZShwYXJlbnQuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIgJiYgIWxpc3QuaXNFbXB0eSgpKSB7XG4gICAgICBpbmRlbnRDaGFycyA9IGxpc3QuZ2V0Q2hpbGRyZW4oKVswXS5nZXRGaXJzdExpbmVJbmRlbnQoKTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIpIHtcbiAgICAgIGluZGVudENoYXJzID0gdGhpcy5kZWZhdWx0SW5kZW50Q2hhcnM7XG4gICAgfVxuXG4gICAgcGFyZW50LnJlbW92ZUNoaWxkKGxpc3QpO1xuICAgIHByZXYuYWRkQWZ0ZXJBbGwobGlzdCk7XG4gICAgbGlzdC5pbmRlbnRDb250ZW50KGluZGVudFBvcywgaW5kZW50Q2hhcnMpO1xuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUFmdGVyID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuICAgIGNvbnN0IGxpbmVEaWZmID0gbGlzdFN0YXJ0TGluZUFmdGVyIC0gbGlzdFN0YXJ0TGluZUJlZm9yZTtcblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IGN1cnNvci5saW5lICsgbGluZURpZmYsXG4gICAgICBjaDogY3Vyc29yLmNoICsgaW5kZW50Q2hhcnMubGVuZ3RoLFxuICAgIH0pO1xuXG4gICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IFJvb3QgfSBmcm9tIFwiLi4vcm9vdFwiO1xuaW1wb3J0IHsgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyB9IGZyb20gXCIuLi9yb290L3JlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHNcIjtcblxuZXhwb3J0IGNsYXNzIE1vdmVVcE9wZXJhdGlvbiBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVDdXJzb3IoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IHBhcmVudCA9IGxpc3QuZ2V0UGFyZW50KCk7XG4gICAgY29uc3QgZ3JhbmRQYXJlbnQgPSBwYXJlbnQuZ2V0UGFyZW50KCk7XG4gICAgY29uc3QgcHJldiA9IHBhcmVudC5nZXRQcmV2U2libGluZ09mKGxpc3QpO1xuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUJlZm9yZSA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcblxuICAgIGlmICghcHJldiAmJiBncmFuZFBhcmVudCkge1xuICAgICAgY29uc3QgbmV3UGFyZW50ID0gZ3JhbmRQYXJlbnQuZ2V0UHJldlNpYmxpbmdPZihwYXJlbnQpO1xuXG4gICAgICBpZiAobmV3UGFyZW50KSB7XG4gICAgICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG4gICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcbiAgICAgICAgbmV3UGFyZW50LmFkZEFmdGVyQWxsKGxpc3QpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJldikge1xuICAgICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcbiAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcbiAgICAgIHBhcmVudC5hZGRCZWZvcmUocHJldiwgbGlzdCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnVwZGF0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lQWZ0ZXIgPSByb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdClbMF07XG4gICAgY29uc3QgbGluZURpZmYgPSBsaXN0U3RhcnRMaW5lQWZ0ZXIgLSBsaXN0U3RhcnRMaW5lQmVmb3JlO1xuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICByb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgbGluZTogY3Vyc29yLmxpbmUgKyBsaW5lRGlmZixcbiAgICAgIGNoOiBjdXJzb3IuY2gsXG4gICAgfSk7XG5cbiAgICByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3QpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBQcmVjIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5pbXBvcnQgeyBrZXltYXAgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9NeUVkaXRvclwiO1xuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuLi9mZWF0dXJlcy9GZWF0dXJlXCI7XG5pbXBvcnQgeyBNb3ZlRG93bk9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL01vdmVEb3duT3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBNb3ZlTGVmdE9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL01vdmVMZWZ0T3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBNb3ZlUmlnaHRPcGVyYXRpb24gfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9Nb3ZlUmlnaHRPcGVyYXRpb25cIjtcbmltcG9ydCB7IE1vdmVVcE9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL01vdmVVcE9wZXJhdGlvblwiO1xuaW1wb3J0IHsgSU1FU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVTZXJ2aWNlXCI7XG5pbXBvcnQgeyBPYnNpZGlhblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvT2JzaWRpYW5TZXJ2aWNlXCI7XG5pbXBvcnQgeyBQZXJmb3JtT3BlcmF0aW9uU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9QZXJmb3JtT3BlcmF0aW9uU2VydmljZVwiO1xuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzU2VydmljZVwiO1xuXG5leHBvcnQgY2xhc3MgTW92ZUl0ZW1zRmVhdHVyZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBpbWU6IElNRVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIHBlcmZvcm1PcGVyYXRpb246IFBlcmZvcm1PcGVyYXRpb25TZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwibW92ZS1saXN0LWl0ZW0tdXBcIixcbiAgICAgIG5hbWU6IFwiTW92ZSBsaXN0IGFuZCBzdWJsaXN0cyB1cFwiLFxuICAgICAgZWRpdG9yQ2FsbGJhY2s6IHRoaXMub2JzaWRpYW4uY3JlYXRlRWRpdG9yQ2FsbGJhY2soXG4gICAgICAgIHRoaXMubW92ZUxpc3RFbGVtZW50VXBDb21tYW5kXG4gICAgICApLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXCJNb2RcIiwgXCJTaGlmdFwiXSxcbiAgICAgICAgICBrZXk6IFwiQXJyb3dVcFwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwibW92ZS1saXN0LWl0ZW0tZG93blwiLFxuICAgICAgbmFtZTogXCJNb3ZlIGxpc3QgYW5kIHN1Ymxpc3RzIGRvd25cIixcbiAgICAgIGVkaXRvckNhbGxiYWNrOiB0aGlzLm9ic2lkaWFuLmNyZWF0ZUVkaXRvckNhbGxiYWNrKFxuICAgICAgICB0aGlzLm1vdmVMaXN0RWxlbWVudERvd25Db21tYW5kXG4gICAgICApLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXCJNb2RcIiwgXCJTaGlmdFwiXSxcbiAgICAgICAgICBrZXk6IFwiQXJyb3dEb3duXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wbHVnaW4uYWRkQ29tbWFuZCh7XG4gICAgICBpZDogXCJpbmRlbnQtbGlzdFwiLFxuICAgICAgbmFtZTogXCJJbmRlbnQgdGhlIGxpc3QgYW5kIHN1Ymxpc3RzXCIsXG4gICAgICBlZGl0b3JDYWxsYmFjazogdGhpcy5vYnNpZGlhbi5jcmVhdGVFZGl0b3JDYWxsYmFjayhcbiAgICAgICAgdGhpcy5tb3ZlTGlzdEVsZW1lbnRSaWdodENvbW1hbmRcbiAgICAgICksXG4gICAgICBob3RrZXlzOiBbXSxcbiAgICB9KTtcblxuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwib3V0ZGVudC1saXN0XCIsXG4gICAgICBuYW1lOiBcIk91dGRlbnQgdGhlIGxpc3QgYW5kIHN1Ymxpc3RzXCIsXG4gICAgICBlZGl0b3JDYWxsYmFjazogdGhpcy5vYnNpZGlhbi5jcmVhdGVFZGl0b3JDYWxsYmFjayhcbiAgICAgICAgdGhpcy5tb3ZlTGlzdEVsZW1lbnRMZWZ0Q29tbWFuZFxuICAgICAgKSxcbiAgICAgIGhvdGtleXM6IFtdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBQcmVjLmhpZ2hlc3QoXG4gICAgICAgIGtleW1hcC5vZihbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcIlRhYlwiLFxuICAgICAgICAgICAgcnVuOiB0aGlzLm9ic2lkaWFuLmNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICAgIHJ1bjogdGhpcy5tb3ZlTGlzdEVsZW1lbnRSaWdodCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcInMtVGFiXCIsXG4gICAgICAgICAgICBydW46IHRoaXMub2JzaWRpYW4uY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgICAgcnVuOiB0aGlzLm1vdmVMaXN0RWxlbWVudExlZnQsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MuYmV0dGVyVGFiICYmICF0aGlzLmltZS5pc0lNRU9wZW5lZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgbW92ZUxpc3RFbGVtZW50RG93bkNvbW1hbmQgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIGNvbnN0IHsgc2hvdWxkU3RvcFByb3BhZ2F0aW9uIH0gPSB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PiBuZXcgTW92ZURvd25PcGVyYXRpb24ocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuXG4gICAgcmV0dXJuIHNob3VsZFN0b3BQcm9wYWdhdGlvbjtcbiAgfTtcblxuICBwcml2YXRlIG1vdmVMaXN0RWxlbWVudFVwQ29tbWFuZCA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgY29uc3QgeyBzaG91bGRTdG9wUHJvcGFnYXRpb24gfSA9IHRoaXMucGVyZm9ybU9wZXJhdGlvbi5wZXJmb3JtT3BlcmF0aW9uKFxuICAgICAgKHJvb3QpID0+IG5ldyBNb3ZlVXBPcGVyYXRpb24ocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuXG4gICAgcmV0dXJuIHNob3VsZFN0b3BQcm9wYWdhdGlvbjtcbiAgfTtcblxuICBwcml2YXRlIG1vdmVMaXN0RWxlbWVudFJpZ2h0Q29tbWFuZCA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgaWYgKHRoaXMuaW1lLmlzSU1FT3BlbmVkKCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm1vdmVMaXN0RWxlbWVudFJpZ2h0KGVkaXRvcikuc2hvdWxkU3RvcFByb3BhZ2F0aW9uO1xuICB9O1xuXG4gIHByaXZhdGUgbW92ZUxpc3RFbGVtZW50UmlnaHQgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PlxuICAgICAgICBuZXcgTW92ZVJpZ2h0T3BlcmF0aW9uKHJvb3QsIHRoaXMub2JzaWRpYW4uZ2V0RGVmYXVsdEluZGVudENoYXJzKCkpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcblxuICBwcml2YXRlIG1vdmVMaXN0RWxlbWVudExlZnRDb21tYW5kID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBpZiAodGhpcy5pbWUuaXNJTUVPcGVuZWQoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubW92ZUxpc3RFbGVtZW50TGVmdChlZGl0b3IpLnNob3VsZFN0b3BQcm9wYWdhdGlvbjtcbiAgfTtcblxuICBwcml2YXRlIG1vdmVMaXN0RWxlbWVudExlZnQgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PiBuZXcgTW92ZUxlZnRPcGVyYXRpb24ocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IFJvb3QsIG1heFBvcywgbWluUG9zIH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIFNlbGVjdEFsbE9wZXJhdGlvbiBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVTZWxlY3Rpb24oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHJvb3QuZ2V0U2VsZWN0aW9ucygpWzBdO1xuICAgIGNvbnN0IFtyb290U3RhcnQsIHJvb3RFbmRdID0gcm9vdC5nZXRSYW5nZSgpO1xuXG4gICAgY29uc3Qgc2VsZWN0aW9uRnJvbSA9IG1pblBvcyhzZWxlY3Rpb24uYW5jaG9yLCBzZWxlY3Rpb24uaGVhZCk7XG4gICAgY29uc3Qgc2VsZWN0aW9uVG8gPSBtYXhQb3Moc2VsZWN0aW9uLmFuY2hvciwgc2VsZWN0aW9uLmhlYWQpO1xuXG4gICAgaWYgKFxuICAgICAgc2VsZWN0aW9uRnJvbS5saW5lIDwgcm9vdFN0YXJ0LmxpbmUgfHxcbiAgICAgIHNlbGVjdGlvblRvLmxpbmUgPiByb290RW5kLmxpbmVcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBzZWxlY3Rpb25Gcm9tLmxpbmUgPT09IHJvb3RTdGFydC5saW5lICYmXG4gICAgICBzZWxlY3Rpb25Gcm9tLmNoID09PSByb290U3RhcnQuY2ggJiZcbiAgICAgIHNlbGVjdGlvblRvLmxpbmUgPT09IHJvb3RFbmQubGluZSAmJlxuICAgICAgc2VsZWN0aW9uVG8uY2ggPT09IHJvb3RFbmQuY2hcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBjb250ZW50U3RhcnQgPSBsaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpO1xuICAgIGNvbnN0IGNvbnRlbnRFbmQgPSBsaXN0LmdldExhc3RMaW5lQ29udGVudEVuZCgpO1xuXG4gICAgaWYgKFxuICAgICAgc2VsZWN0aW9uRnJvbS5saW5lIDwgY29udGVudFN0YXJ0LmxpbmUgfHxcbiAgICAgIHNlbGVjdGlvblRvLmxpbmUgPiBjb250ZW50RW5kLmxpbmVcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGlmIChcbiAgICAgIHNlbGVjdGlvbkZyb20ubGluZSA9PT0gY29udGVudFN0YXJ0LmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvbkZyb20uY2ggPT09IGNvbnRlbnRTdGFydC5jaCAmJlxuICAgICAgc2VsZWN0aW9uVG8ubGluZSA9PT0gY29udGVudEVuZC5saW5lICYmXG4gICAgICBzZWxlY3Rpb25Uby5jaCA9PT0gY29udGVudEVuZC5jaFxuICAgICkge1xuICAgICAgLy8gc2VsZWN0IGFsbCBsaXN0XG4gICAgICByb290LnJlcGxhY2VTZWxlY3Rpb25zKFt7IGFuY2hvcjogcm9vdFN0YXJ0LCBoZWFkOiByb290RW5kIH1dKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc2VsZWN0IGFsbCBsaW5lXG4gICAgICByb290LnJlcGxhY2VTZWxlY3Rpb25zKFt7IGFuY2hvcjogY29udGVudFN0YXJ0LCBoZWFkOiBjb250ZW50RW5kIH1dKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsga2V5bWFwIH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vTXlFZGl0b3JcIjtcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi4vZmVhdHVyZXMvRmVhdHVyZVwiO1xuaW1wb3J0IHsgU2VsZWN0QWxsT3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvU2VsZWN0QWxsT3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBJTUVTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL0lNRVNlcnZpY2VcIjtcbmltcG9ydCB7IE9ic2lkaWFuU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNlcnZpY2VcIjtcbmltcG9ydCB7IFBlcmZvcm1PcGVyYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1BlcmZvcm1PcGVyYXRpb25TZXJ2aWNlXCI7XG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NTZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3RBbGxGZWF0dXJlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbWU6IElNRVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVyZm9ybU9wZXJhdGlvbjogUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBrZXltYXAub2YoW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiBcImMtYVwiLFxuICAgICAgICAgIG1hYzogXCJtLWFcIixcbiAgICAgICAgICBydW46IHRoaXMub2JzaWRpYW4uY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICBydW46IHRoaXMucnVuLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIGNoZWNrID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLnNlbGVjdEFsbCAmJiAhdGhpcy5pbWUuaXNJTUVPcGVuZWQoKTtcbiAgfTtcblxuICBwcml2YXRlIHJ1biA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMucGVyZm9ybU9wZXJhdGlvbi5wZXJmb3JtT3BlcmF0aW9uKFxuICAgICAgKHJvb3QpID0+IG5ldyBTZWxlY3RBbGxPcGVyYXRpb24ocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IFJvb3QgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgU2VsZWN0VGlsbExpbmVTdGFydE9wZXJhdGlvbiBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVDdXJzb3IoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lcyA9IGxpc3QuZ2V0TGluZXNJbmZvKCk7XG4gICAgY29uc3QgbGluZU5vID0gbGluZXMuZmluZEluZGV4KChsKSA9PiBsLmZyb20ubGluZSA9PT0gY3Vyc29yLmxpbmUpO1xuXG4gICAgcm9vdC5yZXBsYWNlU2VsZWN0aW9ucyhbeyBoZWFkOiBsaW5lc1tsaW5lTm9dLmZyb20sIGFuY2hvcjogY3Vyc29yIH1dKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsga2V5bWFwIH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vTXlFZGl0b3JcIjtcbmltcG9ydCB7IFNlbGVjdFRpbGxMaW5lU3RhcnRPcGVyYXRpb24gfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9TZWxlY3RUaWxsTGluZVN0YXJ0T3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBJTUVTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL0lNRVNlcnZpY2VcIjtcbmltcG9ydCB7IE9ic2lkaWFuU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNlcnZpY2VcIjtcbmltcG9ydCB7IFBlcmZvcm1PcGVyYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1BlcmZvcm1PcGVyYXRpb25TZXJ2aWNlXCI7XG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NTZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25TaG91bGRJZ25vcmVCdWxsZXRzRmVhdHVyZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW1lOiBJTUVTZXJ2aWNlLFxuICAgIHByaXZhdGUgb2JzaWRpYW46IE9ic2lkaWFuU2VydmljZSxcbiAgICBwcml2YXRlIHBlcmZvcm1PcGVyYXRpb246IFBlcmZvcm1PcGVyYXRpb25TZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogXCJtLXMtQXJyb3dMZWZ0XCIsXG4gICAgICAgICAgcnVuOiB0aGlzLm9ic2lkaWFuLmNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgcnVuOiB0aGlzLnJ1bixcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIF0pXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBjaGVjayA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5zdGlja0N1cnNvciAmJiAhdGhpcy5pbWUuaXNJTUVPcGVuZWQoKTtcbiAgfTtcblxuICBwcml2YXRlIHJ1biA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMucGVyZm9ybU9wZXJhdGlvbi5wZXJmb3JtT3BlcmF0aW9uKFxuICAgICAgKHJvb3QpID0+IG5ldyBTZWxlY3RUaWxsTGluZVN0YXJ0T3BlcmF0aW9uKHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7IEFwcCwgUGx1Z2luU2V0dGluZ1RhYiwgUGx1Z2luXzIsIFNldHRpbmcgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTGlzdExpbmVBY3Rpb24sIFNldHRpbmdzU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1NlcnZpY2VcIjtcblxuY2xhc3MgT2JzaWRpYW5PdXRsaW5lclBsdWdpblNldHRpbmdUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgY29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogUGx1Z2luXzIsIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzU2VydmljZSkge1xuICAgIHN1cGVyKGFwcCwgcGx1Z2luKTtcbiAgfVxuXG4gIGRpc3BsYXkoKTogdm9pZCB7XG4gICAgY29uc3QgeyBjb250YWluZXJFbCB9ID0gdGhpcztcblxuICAgIGNvbnRhaW5lckVsLmVtcHR5KCk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiSW1wcm92ZSB0aGUgc3R5bGUgb2YgeW91ciBsaXN0c1wiKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgIFwiU3R5bGVzIGFyZSBvbmx5IGNvbXBhdGlibGUgd2l0aCBidWlsdC1pbiBPYnNpZGlhbiB0aGVtZXMgYW5kIG1heSBub3QgYmUgY29tcGF0aWJsZSB3aXRoIG90aGVyIHRoZW1lcy4gU3R5bGVzIG9ubHkgd29yayB3ZWxsIHdpdGggdGFiIHNpemUgNC5cIlxuICAgICAgKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLnN0eWxlTGlzdHMpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3Muc3R5bGVMaXN0cyA9IHZhbHVlO1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkRyYXcgdmVydGljYWwgaW5kZW50YXRpb24gbGluZXNcIilcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuICAgICAgICB0b2dnbGUuc2V0VmFsdWUodGhpcy5zZXR0aW5ncy5saXN0TGluZXMpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MubGlzdExpbmVzID0gdmFsdWU7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zZXR0aW5ncy5zYXZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiVmVydGljYWwgaW5kZW50YXRpb24gbGluZSBjbGljayBhY3Rpb25cIilcbiAgICAgIC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcbiAgICAgICAgZHJvcGRvd25cbiAgICAgICAgICAuYWRkT3B0aW9ucyh7XG4gICAgICAgICAgICBub25lOiBcIk5vbmVcIixcbiAgICAgICAgICAgIFwiem9vbS1pblwiOiBcIlpvb20gSW5cIixcbiAgICAgICAgICAgIFwidG9nZ2xlLWZvbGRpbmdcIjogXCJUb2dnbGUgRm9sZGluZ1wiLFxuICAgICAgICAgIH0gYXMgeyBba2V5IGluIExpc3RMaW5lQWN0aW9uXTogc3RyaW5nIH0pXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MubGlzdExpbmVBY3Rpb24pXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5saXN0TGluZUFjdGlvbiA9IHZhbHVlIGFzIExpc3RMaW5lQWN0aW9uO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXR0aW5ncy5zYXZlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJTdGljayB0aGUgY3Vyc29yIHRvIHRoZSBjb250ZW50XCIpXG4gICAgICAuc2V0RGVzYyhcIkRvbid0IGxldCB0aGUgY3Vyc29yIG1vdmUgdG8gdGhlIGJ1bGxldCBwb3NpdGlvbi5cIilcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuICAgICAgICB0b2dnbGUuc2V0VmFsdWUodGhpcy5zZXR0aW5ncy5zdGlja0N1cnNvcikub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5zdGlja0N1cnNvciA9IHZhbHVlO1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkVuaGFuY2UgdGhlIEVudGVyIGtleVwiKVxuICAgICAgLnNldERlc2MoXCJNYWtlIHRoZSBFbnRlciBrZXkgYmVoYXZlIHRoZSBzYW1lIGFzIG90aGVyIG91dGxpbmVycy5cIilcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuICAgICAgICB0b2dnbGUuc2V0VmFsdWUodGhpcy5zZXR0aW5ncy5iZXR0ZXJFbnRlcikub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5iZXR0ZXJFbnRlciA9IHZhbHVlO1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkVuaGFuY2UgdGhlIFRhYiBrZXlcIilcbiAgICAgIC5zZXREZXNjKFwiTWFrZSBUYWIgYW5kIFNoaWZ0LVRhYiBiZWhhdmUgdGhlIHNhbWUgYXMgb3RoZXIgb3V0bGluZXJzLlwiKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmJldHRlclRhYikub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5iZXR0ZXJUYWIgPSB2YWx1ZTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJFbmhhbmNlIHRoZSBDdHJsK0Egb3IgQ21kK0EgYmVoYXZpb3JcIilcbiAgICAgIC5zZXREZXNjKFxuICAgICAgICBcIlByZXNzIHRoZSBob3RrZXkgb25jZSB0byBzZWxlY3QgdGhlIGN1cnJlbnQgbGlzdCBpdGVtLiBQcmVzcyB0aGUgaG90a2V5IHR3aWNlIHRvIHNlbGVjdCB0aGUgZW50aXJlIGxpc3QuXCJcbiAgICAgIClcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuICAgICAgICB0b2dnbGUuc2V0VmFsdWUodGhpcy5zZXR0aW5ncy5zZWxlY3RBbGwpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3Muc2VsZWN0QWxsID0gdmFsdWU7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zZXR0aW5ncy5zYXZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiRGVidWcgbW9kZVwiKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgIFwiT3BlbiBEZXZUb29scyAoQ29tbWFuZCtPcHRpb24rSSBvciBDb250cm9sK1NoaWZ0K0kpIHRvIGNvcHkgdGhlIGRlYnVnIGxvZ3MuXCJcbiAgICAgIClcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuICAgICAgICB0b2dnbGUuc2V0VmFsdWUodGhpcy5zZXR0aW5ncy5kZWJ1Zykub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5kZWJ1ZyA9IHZhbHVlO1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTZXR0aW5nc1RhYkZlYXR1cmUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLCBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UpIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5hZGRTZXR0aW5nVGFiKFxuICAgICAgbmV3IE9ic2lkaWFuT3V0bGluZXJQbHVnaW5TZXR0aW5nVGFiKFxuICAgICAgICB0aGlzLnBsdWdpbi5hcHAsXG4gICAgICAgIHRoaXMucGx1Z2luLFxuICAgICAgICB0aGlzLnNldHRpbmdzXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVOb3RlTGluZU9wZXJhdGlvbiBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVDdXJzb3IoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgbGluZVVuZGVyQ3Vyc29yID0gbGlzdFxuICAgICAgLmdldExpbmVzSW5mbygpXG4gICAgICAuZmluZCgobCkgPT4gbC5mcm9tLmxpbmUgPT09IGN1cnNvci5saW5lKTtcblxuICAgIGlmIChjdXJzb3IuY2ggPCBsaW5lVW5kZXJDdXJzb3IuZnJvbS5jaCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgaWYgKCFsaXN0LmdldE5vdGVzSW5kZW50KCkpIHtcbiAgICAgIGxpc3Quc2V0Tm90ZXNJbmRlbnQobGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKSArIFwiICBcIik7XG4gICAgfVxuXG4gICAgY29uc3QgbGluZXMgPSBsaXN0LmdldExpbmVzSW5mbygpLnJlZHVjZSgoYWNjLCBsaW5lKSA9PiB7XG4gICAgICBpZiAoY3Vyc29yLmxpbmUgPT09IGxpbmUuZnJvbS5saW5lKSB7XG4gICAgICAgIGFjYy5wdXNoKGxpbmUudGV4dC5zbGljZSgwLCBjdXJzb3IuY2ggLSBsaW5lLmZyb20uY2gpKTtcbiAgICAgICAgYWNjLnB1c2gobGluZS50ZXh0LnNsaWNlKGN1cnNvci5jaCAtIGxpbmUuZnJvbS5jaCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWNjLnB1c2gobGluZS50ZXh0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSBhcyBzdHJpbmdbXSk7XG5cbiAgICBsaXN0LnJlcGxhY2VMaW5lcyhsaW5lcyk7XG5cbiAgICByb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgbGluZTogY3Vyc29yLmxpbmUgKyAxLFxuICAgICAgY2g6IGxpc3QuZ2V0Tm90ZXNJbmRlbnQoKS5sZW5ndGgsXG4gICAgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL015RWRpdG9yXCI7XG5pbXBvcnQgeyBDcmVhdGVOb3RlTGluZU9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL0NyZWF0ZU5vdGVMaW5lT3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBJTUVTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL0lNRVNlcnZpY2VcIjtcbmltcG9ydCB7IE9ic2lkaWFuU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNlcnZpY2VcIjtcbmltcG9ydCB7IFBlcmZvcm1PcGVyYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1BlcmZvcm1PcGVyYXRpb25TZXJ2aWNlXCI7XG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NTZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBTaGlmdEVudGVyU2hvdWxkQ3JlYXRlTm90ZUZlYXR1cmUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgb2JzaWRpYW46IE9ic2lkaWFuU2VydmljZSxcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbWU6IElNRVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJmb3JtT3BlcmF0aW9uOiBQZXJmb3JtT3BlcmF0aW9uU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIGtleW1hcC5vZihbXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6IFwicy1FbnRlclwiLFxuICAgICAgICAgIHJ1bjogdGhpcy5vYnNpZGlhbi5jcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MuYmV0dGVyRW50ZXIgJiYgIXRoaXMuaW1lLmlzSU1FT3BlbmVkKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PiBuZXcgQ3JlYXRlTm90ZUxpbmVPcGVyYXRpb24ocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xufVxuIiwiZXhwb3J0IGludGVyZmFjZSBBcHBseUNoYW5nZXNFZGl0b3JQb3NpdGlvbiB7XG4gIGxpbmU6IG51bWJlcjtcbiAgY2g6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBseUNoYW5nZXNFZGl0b3JTZWxlY3Rpb24ge1xuICBhbmNob3I6IEFwcGx5Q2hhbmdlc0VkaXRvclBvc2l0aW9uO1xuICBoZWFkOiBBcHBseUNoYW5nZXNFZGl0b3JQb3NpdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBseUNoYW5nZXNFZGl0b3Ige1xuICBnZXRSYW5nZShcbiAgICBmcm9tOiBBcHBseUNoYW5nZXNFZGl0b3JQb3NpdGlvbixcbiAgICB0bzogQXBwbHlDaGFuZ2VzRWRpdG9yUG9zaXRpb25cbiAgKTogc3RyaW5nO1xuICByZXBsYWNlUmFuZ2UoXG4gICAgcmVwbGFjZW1lbnQ6IHN0cmluZyxcbiAgICBmcm9tOiBBcHBseUNoYW5nZXNFZGl0b3JQb3NpdGlvbixcbiAgICB0bzogQXBwbHlDaGFuZ2VzRWRpdG9yUG9zaXRpb25cbiAgKTogdm9pZDtcbiAgc2V0U2VsZWN0aW9ucyhzZWxlY3Rpb25zOiBBcHBseUNoYW5nZXNFZGl0b3JTZWxlY3Rpb25bXSk6IHZvaWQ7XG4gIGZvbGQobjogbnVtYmVyKTogdm9pZDtcbiAgdW5mb2xkKG46IG51bWJlcik6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwbHlDaGFuZ2VzTGlzdCB7XG4gIGlzRm9sZFJvb3QoKTogYm9vbGVhbjtcbiAgZ2V0Q2hpbGRyZW4oKTogQXBwbHlDaGFuZ2VzTGlzdFtdO1xuICBnZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKTogeyBsaW5lOiBudW1iZXIgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBseUNoYW5nZXNSb290IHtcbiAgZ2V0UmFuZ2UoKTogW0FwcGx5Q2hhbmdlc0VkaXRvclBvc2l0aW9uLCBBcHBseUNoYW5nZXNFZGl0b3JQb3NpdGlvbl07XG4gIGdldFNlbGVjdGlvbnMoKToge1xuICAgIGFuY2hvcjogQXBwbHlDaGFuZ2VzRWRpdG9yUG9zaXRpb247XG4gICAgaGVhZDogQXBwbHlDaGFuZ2VzRWRpdG9yUG9zaXRpb247XG4gIH1bXTtcbiAgcHJpbnQoKTogc3RyaW5nO1xuICBnZXRDaGlsZHJlbigpOiBBcHBseUNoYW5nZXNMaXN0W107XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBseUNoYW5nZXNTZXJ2aWNlIHtcbiAgYXBwbHlDaGFuZ2VzKGVkaXRvcjogQXBwbHlDaGFuZ2VzRWRpdG9yLCByb290OiBBcHBseUNoYW5nZXNSb290KSB7XG4gICAgY29uc3Qgcm9vdFJhbmdlID0gcm9vdC5nZXRSYW5nZSgpO1xuICAgIGNvbnN0IG9sZFN0cmluZyA9IGVkaXRvci5nZXRSYW5nZShyb290UmFuZ2VbMF0sIHJvb3RSYW5nZVsxXSk7XG4gICAgY29uc3QgbmV3U3RyaW5nID0gcm9vdC5wcmludCgpO1xuXG4gICAgY29uc3QgZnJvbUxpbmUgPSByb290UmFuZ2VbMF0ubGluZTtcbiAgICBjb25zdCB0b0xpbmUgPSByb290UmFuZ2VbMV0ubGluZTtcblxuICAgIGZvciAobGV0IGwgPSBmcm9tTGluZTsgbCA8PSB0b0xpbmU7IGwrKykge1xuICAgICAgZWRpdG9yLnVuZm9sZChsKTtcbiAgICB9XG5cbiAgICBjb25zdCBjaGFuZ2VGcm9tID0geyAuLi5yb290UmFuZ2VbMF0gfTtcbiAgICBjb25zdCBjaGFuZ2VUbyA9IHsgLi4ucm9vdFJhbmdlWzFdIH07XG4gICAgbGV0IG9sZFRtcCA9IG9sZFN0cmluZztcbiAgICBsZXQgbmV3VG1wID0gbmV3U3RyaW5nO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnN0YW50LWNvbmRpdGlvblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCBubEluZGV4ID0gb2xkVG1wLmxhc3RJbmRleE9mKFwiXFxuXCIpO1xuICAgICAgaWYgKG5sSW5kZXggPCAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY29uc3Qgb2xkTGluZSA9IG9sZFRtcC5zbGljZShubEluZGV4KTtcbiAgICAgIGNvbnN0IG5ld0xpbmUgPSBuZXdUbXAuc2xpY2UoLW9sZExpbmUubGVuZ3RoKTtcbiAgICAgIGlmIChvbGRMaW5lICE9PSBuZXdMaW5lKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgb2xkVG1wID0gb2xkVG1wLnNsaWNlKDAsIC1vbGRMaW5lLmxlbmd0aCk7XG4gICAgICBuZXdUbXAgPSBuZXdUbXAuc2xpY2UoMCwgLW9sZExpbmUubGVuZ3RoKTtcblxuICAgICAgY29uc3QgbmxJbmRleDIgPSBvbGRUbXAubGFzdEluZGV4T2YoXCJcXG5cIik7XG4gICAgICBjaGFuZ2VUby5jaCA9XG4gICAgICAgIG5sSW5kZXgyID49IDAgPyBvbGRUbXAubGVuZ3RoIC0gbmxJbmRleDIgLSAxIDogb2xkVG1wLmxlbmd0aDtcbiAgICAgIGNoYW5nZVRvLmxpbmUtLTtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnN0YW50LWNvbmRpdGlvblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCBubEluZGV4ID0gb2xkVG1wLmluZGV4T2YoXCJcXG5cIik7XG4gICAgICBpZiAobmxJbmRleCA8IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjb25zdCBvbGRMaW5lID0gb2xkVG1wLnNsaWNlKDAsIG5sSW5kZXggKyAxKTtcbiAgICAgIGNvbnN0IG5ld0xpbmUgPSBuZXdUbXAuc2xpY2UoMCwgb2xkTGluZS5sZW5ndGgpO1xuICAgICAgaWYgKG9sZExpbmUgIT09IG5ld0xpbmUpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjaGFuZ2VGcm9tLmxpbmUrKztcbiAgICAgIG9sZFRtcCA9IG9sZFRtcC5zbGljZShvbGRMaW5lLmxlbmd0aCk7XG4gICAgICBuZXdUbXAgPSBuZXdUbXAuc2xpY2Uob2xkTGluZS5sZW5ndGgpO1xuICAgIH1cblxuICAgIGlmIChvbGRUbXAgIT09IG5ld1RtcCkge1xuICAgICAgZWRpdG9yLnJlcGxhY2VSYW5nZShuZXdUbXAsIGNoYW5nZUZyb20sIGNoYW5nZVRvKTtcbiAgICB9XG5cbiAgICBlZGl0b3Iuc2V0U2VsZWN0aW9ucyhyb290LmdldFNlbGVjdGlvbnMoKSk7XG5cbiAgICBmdW5jdGlvbiByZWN1cnNpdmUobGlzdDogQXBwbHlDaGFuZ2VzTGlzdCkge1xuICAgICAgZm9yIChjb25zdCBjIG9mIGxpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICByZWN1cnNpdmUoYyk7XG4gICAgICB9XG4gICAgICBpZiAobGlzdC5pc0ZvbGRSb290KCkpIHtcbiAgICAgICAgZWRpdG9yLmZvbGQobGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBjIG9mIHJvb3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgcmVjdXJzaXZlKGMpO1xuICAgIH1cbiAgfVxufVxuIiwiZXhwb3J0IGNsYXNzIElNRVNlcnZpY2Uge1xuICBwcml2YXRlIGNvbXBvc2l0aW9uID0gZmFsc2U7XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY29tcG9zaXRpb25zdGFydFwiLCB0aGlzLm9uQ29tcG9zaXRpb25TdGFydCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uZW5kXCIsIHRoaXMub25Db21wb3NpdGlvbkVuZCk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uZW5kXCIsIHRoaXMub25Db21wb3NpdGlvbkVuZCk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uc3RhcnRcIiwgdGhpcy5vbkNvbXBvc2l0aW9uU3RhcnQpO1xuICB9XG5cbiAgaXNJTUVPcGVuZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9zaXRpb247XG4gIH1cblxuICBwcml2YXRlIG9uQ29tcG9zaXRpb25TdGFydCA9ICgpID0+IHtcbiAgICB0aGlzLmNvbXBvc2l0aW9uID0gdHJ1ZTtcbiAgfTtcblxuICBwcml2YXRlIG9uQ29tcG9zaXRpb25FbmQgPSAoKSA9PiB7XG4gICAgdGhpcy5jb21wb3NpdGlvbiA9IGZhbHNlO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSBcIi4vU2V0dGluZ3NTZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBMb2dnZXJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlKSB7fVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGxvZyhtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMuc2V0dGluZ3MuZGVidWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmluZm8obWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGJpbmQobWV0aG9kOiBzdHJpbmcpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IHRoaXMubG9nKG1ldGhvZCwgLi4uYXJncyk7XG4gIH1cbn1cbiIsImltcG9ydCB7IEFwcCwgRWRpdG9yLCBlZGl0b3JWaWV3RmllbGQgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRWRpdG9yU3RhdGUgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcbmltcG9ydCB7IEVkaXRvclZpZXcgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9NeUVkaXRvclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuVGFic1NldHRpbmdzIHtcbiAgdXNlVGFiOiBib29sZWFuO1xuICB0YWJTaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JzaWRpYW5Gb2xkU2V0dGluZ3Mge1xuICBmb2xkSW5kZW50OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgT2JzaWRpYW5TZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHA6IEFwcCkge31cblxuICBpc0xlZ2FjeUVkaXRvckVuYWJsZWQoKSB7XG4gICAgY29uc3QgY29uZmlnOiB7IGxlZ2FjeUVkaXRvcjogYm9vbGVhbiB9ID0ge1xuICAgICAgbGVnYWN5RWRpdG9yOiBmYWxzZSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAuLi4odGhpcy5hcHAudmF1bHQgYXMgYW55KS5jb25maWcsXG4gICAgfTtcblxuICAgIHJldHVybiBjb25maWcubGVnYWN5RWRpdG9yO1xuICB9XG5cbiAgaXNEZWZhdWx0VGhlbWVFbmFibGVkKCkge1xuICAgIGNvbnN0IGNvbmZpZzogeyBjc3NUaGVtZTogc3RyaW5nIH0gPSB7XG4gICAgICBjc3NUaGVtZTogXCJcIixcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAuLi4odGhpcy5hcHAudmF1bHQgYXMgYW55KS5jb25maWcsXG4gICAgfTtcblxuICAgIHJldHVybiBjb25maWcuY3NzVGhlbWUgPT09IFwiXCI7XG4gIH1cblxuICBnZXRPYnNpZGlhblRhYnNTZXR0aW5ncygpOiBPYnNpZGlhblRhYnNTZXR0aW5ncyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZVRhYjogdHJ1ZSxcbiAgICAgIHRhYlNpemU6IDQsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgLi4uKHRoaXMuYXBwLnZhdWx0IGFzIGFueSkuY29uZmlnLFxuICAgIH07XG4gIH1cblxuICBnZXRPYnNpZGlhbkZvbGRTZXR0aW5ncygpOiBPYnNpZGlhbkZvbGRTZXR0aW5ncyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvbGRJbmRlbnQ6IHRydWUsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgLi4uKHRoaXMuYXBwLnZhdWx0IGFzIGFueSkuY29uZmlnLFxuICAgIH07XG4gIH1cblxuICBnZXREZWZhdWx0SW5kZW50Q2hhcnMoKSB7XG4gICAgY29uc3QgeyB1c2VUYWIsIHRhYlNpemUgfSA9IHRoaXMuZ2V0T2JzaWRpYW5UYWJzU2V0dGluZ3MoKTtcblxuICAgIHJldHVybiB1c2VUYWIgPyBcIlxcdFwiIDogbmV3IEFycmF5KHRhYlNpemUpLmZpbGwoXCIgXCIpLmpvaW4oXCJcIik7XG4gIH1cblxuICBnZXRFZGl0b3JGcm9tU3RhdGUoc3RhdGU6IEVkaXRvclN0YXRlKSB7XG4gICAgcmV0dXJuIG5ldyBNeUVkaXRvcihzdGF0ZS5maWVsZChlZGl0b3JWaWV3RmllbGQpLmVkaXRvcik7XG4gIH1cblxuICBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayhjb25maWc6IHtcbiAgICBjaGVjaz86IChlZGl0b3I6IE15RWRpdG9yKSA9PiBib29sZWFuO1xuICAgIHJ1bjogKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICAgIHNob3VsZFVwZGF0ZTogYm9vbGVhbjtcbiAgICAgIHNob3VsZFN0b3BQcm9wYWdhdGlvbjogYm9vbGVhbjtcbiAgICB9O1xuICB9KSB7XG4gICAgY29uc3QgY2hlY2sgPSBjb25maWcuY2hlY2sgfHwgKCgpID0+IHRydWUpO1xuICAgIGNvbnN0IHsgcnVuIH0gPSBjb25maWc7XG5cbiAgICByZXR1cm4gKHZpZXc6IEVkaXRvclZpZXcpOiBib29sZWFuID0+IHtcbiAgICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZ2V0RWRpdG9yRnJvbVN0YXRlKHZpZXcuc3RhdGUpO1xuXG4gICAgICBpZiAoIWNoZWNrKGVkaXRvcikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHNob3VsZFVwZGF0ZSwgc2hvdWxkU3RvcFByb3BhZ2F0aW9uIH0gPSBydW4oZWRpdG9yKTtcblxuICAgICAgcmV0dXJuIHNob3VsZFVwZGF0ZSB8fCBzaG91bGRTdG9wUHJvcGFnYXRpb247XG4gICAgfTtcbiAgfVxuXG4gIGNyZWF0ZUVkaXRvckNhbGxiYWNrKGNiOiAoZWRpdG9yOiBNeUVkaXRvcikgPT4gYm9vbGVhbikge1xuICAgIHJldHVybiAoZWRpdG9yOiBFZGl0b3IpID0+IHtcbiAgICAgIGNvbnN0IG15RWRpdG9yID0gbmV3IE15RWRpdG9yKGVkaXRvcik7XG4gICAgICBjb25zdCBzaG91bGRTdG9wUHJvcGFnYXRpb24gPSBjYihteUVkaXRvcik7XG5cbiAgICAgIGlmIChcbiAgICAgICAgIXNob3VsZFN0b3BQcm9wYWdhdGlvbiAmJlxuICAgICAgICB3aW5kb3cuZXZlbnQgJiZcbiAgICAgICAgd2luZG93LmV2ZW50LnR5cGUgPT09IFwia2V5ZG93blwiXG4gICAgICApIHtcbiAgICAgICAgbXlFZGl0b3IudHJpZ2dlck9uS2V5RG93bih3aW5kb3cuZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgTGlzdCwgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2VcIjtcblxuY29uc3QgYnVsbGV0U2lnbiA9IGAoPzpbLSorXXxcXFxcZCtcXFxcLilgO1xuXG5jb25zdCBsaXN0SXRlbVdpdGhvdXRTcGFjZXNSZSA9IG5ldyBSZWdFeHAoYF4ke2J1bGxldFNpZ259KCB8XFx0KWApO1xuY29uc3QgbGlzdEl0ZW1SZSA9IG5ldyBSZWdFeHAoYF5bIFxcdF0qJHtidWxsZXRTaWdufSggfFxcdClgKTtcbmNvbnN0IHN0cmluZ1dpdGhTcGFjZXNSZSA9IG5ldyBSZWdFeHAoYF5bIFxcdF0rYCk7XG5jb25zdCBwYXJzZUxpc3RJdGVtUmUgPSBuZXcgUmVnRXhwKGBeKFsgXFx0XSopKCR7YnVsbGV0U2lnbn0pKCB8XFx0KSguKikkYCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhZGVyUG9zaXRpb24ge1xuICBsaW5lOiBudW1iZXI7XG4gIGNoOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhZGVyU2VsZWN0aW9uIHtcbiAgYW5jaG9yOiBSZWFkZXJQb3NpdGlvbjtcbiAgaGVhZDogUmVhZGVyUG9zaXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhZGVyIHtcbiAgZ2V0Q3Vyc29yKCk6IFJlYWRlclBvc2l0aW9uO1xuICBnZXRMaW5lKG46IG51bWJlcik6IHN0cmluZztcbiAgbGFzdExpbmUoKTogbnVtYmVyO1xuICBsaXN0U2VsZWN0aW9ucygpOiBSZWFkZXJTZWxlY3Rpb25bXTtcbiAgZ2V0QWxsRm9sZGVkTGluZXMoKTogbnVtYmVyW107XG59XG5cbmludGVyZmFjZSBQYXJzZUxpc3RMaXN0IHtcbiAgZ2V0Rmlyc3RMaW5lSW5kZW50KCk6IHN0cmluZztcbiAgc2V0Tm90ZXNJbmRlbnQobm90ZXNJbmRlbnQ6IHN0cmluZyk6IHZvaWQ7XG4gIGdldE5vdGVzSW5kZW50KCk6IHN0cmluZyB8IG51bGw7XG4gIGFkZExpbmUodGV4dDogc3RyaW5nKTogdm9pZDtcbiAgZ2V0UGFyZW50KCk6IFBhcnNlTGlzdExpc3QgfCBudWxsO1xuICBhZGRBZnRlckFsbChsaXN0OiBQYXJzZUxpc3RMaXN0KTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnNlclNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSkge31cblxuICBwYXJzZVJhbmdlKGVkaXRvcjogUmVhZGVyLCBmcm9tTGluZSA9IDAsIHRvTGluZSA9IGVkaXRvci5sYXN0TGluZSgpKTogUm9vdFtdIHtcbiAgICBjb25zdCBsaXN0czogUm9vdFtdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gZnJvbUxpbmU7IGkgPD0gdG9MaW5lOyBpKyspIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0TGluZShpKTtcblxuICAgICAgaWYgKGkgPT09IGZyb21MaW5lIHx8IHRoaXMuaXNMaXN0SXRlbShsaW5lKSkge1xuICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5wYXJzZVdpdGhMaW1pdHMoZWRpdG9yLCBpLCBmcm9tTGluZSwgdG9MaW5lKTtcblxuICAgICAgICBpZiAobGlzdCkge1xuICAgICAgICAgIGxpc3RzLnB1c2gobGlzdCk7XG4gICAgICAgICAgaSA9IGxpc3QuZ2V0UmFuZ2UoKVsxXS5saW5lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpc3RzO1xuICB9XG5cbiAgcGFyc2UoZWRpdG9yOiBSZWFkZXIsIGN1cnNvciA9IGVkaXRvci5nZXRDdXJzb3IoKSk6IFJvb3QgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZVdpdGhMaW1pdHMoZWRpdG9yLCBjdXJzb3IubGluZSwgMCwgZWRpdG9yLmxhc3RMaW5lKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVdpdGhMaW1pdHMoXG4gICAgZWRpdG9yOiBSZWFkZXIsXG4gICAgcGFyc2luZ1N0YXJ0TGluZTogbnVtYmVyLFxuICAgIGxpbWl0RnJvbTogbnVtYmVyLFxuICAgIGxpbWl0VG86IG51bWJlclxuICApOiBSb290IHwgbnVsbCB7XG4gICAgY29uc3QgZCA9IHRoaXMubG9nZ2VyLmJpbmQoXCJwYXJzZUxpc3RcIik7XG4gICAgY29uc3QgZXJyb3IgPSAobXNnOiBzdHJpbmcpOiBudWxsID0+IHtcbiAgICAgIGQobXNnKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG5cbiAgICBjb25zdCBsaW5lID0gZWRpdG9yLmdldExpbmUocGFyc2luZ1N0YXJ0TGluZSk7XG5cbiAgICBsZXQgbGlzdExvb2tpbmdQb3M6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuaXNMaXN0SXRlbShsaW5lKSkge1xuICAgICAgbGlzdExvb2tpbmdQb3MgPSBwYXJzaW5nU3RhcnRMaW5lO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0xpbmVXaXRoSW5kZW50KGxpbmUpKSB7XG4gICAgICBsZXQgbGlzdExvb2tpbmdQb3NTZWFyY2ggPSBwYXJzaW5nU3RhcnRMaW5lIC0gMTtcbiAgICAgIHdoaWxlIChsaXN0TG9va2luZ1Bvc1NlYXJjaCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0TGluZShsaXN0TG9va2luZ1Bvc1NlYXJjaCk7XG4gICAgICAgIGlmICh0aGlzLmlzTGlzdEl0ZW0obGluZSkpIHtcbiAgICAgICAgICBsaXN0TG9va2luZ1BvcyA9IGxpc3RMb29raW5nUG9zU2VhcmNoO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNMaW5lV2l0aEluZGVudChsaW5lKSkge1xuICAgICAgICAgIGxpc3RMb29raW5nUG9zU2VhcmNoLS07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobGlzdExvb2tpbmdQb3MgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IGxpc3RTdGFydExpbmU6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIGxldCBsaXN0U3RhcnRMaW5lTG9va3VwID0gbGlzdExvb2tpbmdQb3M7XG4gICAgd2hpbGUgKGxpc3RTdGFydExpbmVMb29rdXAgPj0gMCkge1xuICAgICAgY29uc3QgbGluZSA9IGVkaXRvci5nZXRMaW5lKGxpc3RTdGFydExpbmVMb29rdXApO1xuICAgICAgaWYgKCF0aGlzLmlzTGlzdEl0ZW0obGluZSkgJiYgIXRoaXMuaXNMaW5lV2l0aEluZGVudChsaW5lKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzTGlzdEl0ZW1XaXRob3V0U3BhY2VzKGxpbmUpKSB7XG4gICAgICAgIGxpc3RTdGFydExpbmUgPSBsaXN0U3RhcnRMaW5lTG9va3VwO1xuICAgICAgICBpZiAobGlzdFN0YXJ0TGluZUxvb2t1cCA8PSBsaW1pdEZyb20pIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGlzdFN0YXJ0TGluZUxvb2t1cC0tO1xuICAgIH1cblxuICAgIGlmIChsaXN0U3RhcnRMaW5lID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgbGlzdEVuZExpbmUgPSBsaXN0TG9va2luZ1BvcztcbiAgICBsZXQgbGlzdEVuZExpbmVMb29rdXAgPSBsaXN0TG9va2luZ1BvcztcbiAgICB3aGlsZSAobGlzdEVuZExpbmVMb29rdXAgPD0gZWRpdG9yLmxhc3RMaW5lKCkpIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0TGluZShsaXN0RW5kTGluZUxvb2t1cCk7XG4gICAgICBpZiAoIXRoaXMuaXNMaXN0SXRlbShsaW5lKSAmJiAhdGhpcy5pc0xpbmVXaXRoSW5kZW50KGxpbmUpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmlzRW1wdHlMaW5lKGxpbmUpKSB7XG4gICAgICAgIGxpc3RFbmRMaW5lID0gbGlzdEVuZExpbmVMb29rdXA7XG4gICAgICB9XG4gICAgICBpZiAobGlzdEVuZExpbmVMb29rdXAgPj0gbGltaXRUbykge1xuICAgICAgICBsaXN0RW5kTGluZSA9IGxpbWl0VG87XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbGlzdEVuZExpbmVMb29rdXArKztcbiAgICB9XG5cbiAgICBpZiAobGlzdFN0YXJ0TGluZSA+IHBhcnNpbmdTdGFydExpbmUgfHwgbGlzdEVuZExpbmUgPCBwYXJzaW5nU3RhcnRMaW5lKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCByb290ID0gbmV3IFJvb3QoXG4gICAgICB7IGxpbmU6IGxpc3RTdGFydExpbmUsIGNoOiAwIH0sXG4gICAgICB7IGxpbmU6IGxpc3RFbmRMaW5lLCBjaDogZWRpdG9yLmdldExpbmUobGlzdEVuZExpbmUpLmxlbmd0aCB9LFxuICAgICAgZWRpdG9yLmxpc3RTZWxlY3Rpb25zKCkubWFwKChyKSA9PiAoe1xuICAgICAgICBhbmNob3I6IHsgbGluZTogci5hbmNob3IubGluZSwgY2g6IHIuYW5jaG9yLmNoIH0sXG4gICAgICAgIGhlYWQ6IHsgbGluZTogci5oZWFkLmxpbmUsIGNoOiByLmhlYWQuY2ggfSxcbiAgICAgIH0pKVxuICAgICk7XG5cbiAgICBsZXQgY3VycmVudFBhcmVudDogUGFyc2VMaXN0TGlzdCA9IHJvb3QuZ2V0Um9vdExpc3QoKTtcbiAgICBsZXQgY3VycmVudExpc3Q6IFBhcnNlTGlzdExpc3QgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgY3VycmVudEluZGVudCA9IFwiXCI7XG5cbiAgICBjb25zdCBmb2xkZWRMaW5lcyA9IGVkaXRvci5nZXRBbGxGb2xkZWRMaW5lcygpO1xuXG4gICAgZm9yIChsZXQgbCA9IGxpc3RTdGFydExpbmU7IGwgPD0gbGlzdEVuZExpbmU7IGwrKykge1xuICAgICAgY29uc3QgbGluZSA9IGVkaXRvci5nZXRMaW5lKGwpO1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IHBhcnNlTGlzdEl0ZW1SZS5leGVjKGxpbmUpO1xuXG4gICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICBjb25zdCBbLCBpbmRlbnQsIGJ1bGxldCwgc3BhY2VBZnRlckJ1bGxldCwgY29udGVudF0gPSBtYXRjaGVzO1xuXG4gICAgICAgIGNvbnN0IGNvbXBhcmVMZW5ndGggPSBNYXRoLm1pbihjdXJyZW50SW5kZW50Lmxlbmd0aCwgaW5kZW50Lmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGluZGVudFNsaWNlID0gaW5kZW50LnNsaWNlKDAsIGNvbXBhcmVMZW5ndGgpO1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZW50U2xpY2UgPSBjdXJyZW50SW5kZW50LnNsaWNlKDAsIGNvbXBhcmVMZW5ndGgpO1xuXG4gICAgICAgIGlmIChpbmRlbnRTbGljZSAhPT0gY3VycmVudEluZGVudFNsaWNlKSB7XG4gICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBjdXJyZW50SW5kZW50U2xpY2VcbiAgICAgICAgICAgIC5yZXBsYWNlKC8gL2csIFwiU1wiKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcdC9nLCBcIlRcIik7XG4gICAgICAgICAgY29uc3QgZ290ID0gaW5kZW50U2xpY2UucmVwbGFjZSgvIC9nLCBcIlNcIikucmVwbGFjZSgvXFx0L2csIFwiVFwiKTtcblxuICAgICAgICAgIHJldHVybiBlcnJvcihcbiAgICAgICAgICAgIGBVbmFibGUgdG8gcGFyc2UgbGlzdDogZXhwZWN0ZWQgaW5kZW50IFwiJHtleHBlY3RlZH1cIiwgZ290IFwiJHtnb3R9XCJgXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmRlbnQubGVuZ3RoID4gY3VycmVudEluZGVudC5sZW5ndGgpIHtcbiAgICAgICAgICBjdXJyZW50UGFyZW50ID0gY3VycmVudExpc3Q7XG4gICAgICAgICAgY3VycmVudEluZGVudCA9IGluZGVudDtcbiAgICAgICAgfSBlbHNlIGlmIChpbmRlbnQubGVuZ3RoIDwgY3VycmVudEluZGVudC5sZW5ndGgpIHtcbiAgICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgICBjdXJyZW50UGFyZW50LmdldEZpcnN0TGluZUluZGVudCgpLmxlbmd0aCA+PSBpbmRlbnQubGVuZ3RoICYmXG4gICAgICAgICAgICBjdXJyZW50UGFyZW50LmdldFBhcmVudCgpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjdXJyZW50UGFyZW50ID0gY3VycmVudFBhcmVudC5nZXRQYXJlbnQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY3VycmVudEluZGVudCA9IGluZGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvbGRSb290ID0gZm9sZGVkTGluZXMuaW5jbHVkZXMobCk7XG5cbiAgICAgICAgY3VycmVudExpc3QgPSBuZXcgTGlzdChcbiAgICAgICAgICByb290LFxuICAgICAgICAgIGluZGVudCxcbiAgICAgICAgICBidWxsZXQsXG4gICAgICAgICAgc3BhY2VBZnRlckJ1bGxldCxcbiAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgIGZvbGRSb290XG4gICAgICAgICk7XG4gICAgICAgIGN1cnJlbnRQYXJlbnQuYWRkQWZ0ZXJBbGwoY3VycmVudExpc3QpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzTGluZVdpdGhJbmRlbnQobGluZSkpIHtcbiAgICAgICAgaWYgKCFjdXJyZW50TGlzdCkge1xuICAgICAgICAgIHJldHVybiBlcnJvcihcbiAgICAgICAgICAgIGBVbmFibGUgdG8gcGFyc2UgbGlzdDogZXhwZWN0ZWQgbGlzdCBpdGVtLCBnb3QgZW1wdHkgbGluZWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5kZW50VG9DaGVjayA9IGN1cnJlbnRMaXN0LmdldE5vdGVzSW5kZW50KCkgfHwgY3VycmVudEluZGVudDtcblxuICAgICAgICBpZiAobGluZS5pbmRleE9mKGluZGVudFRvQ2hlY2spICE9PSAwKSB7XG4gICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBpbmRlbnRUb0NoZWNrLnJlcGxhY2UoLyAvZywgXCJTXCIpLnJlcGxhY2UoL1xcdC9nLCBcIlRcIik7XG4gICAgICAgICAgY29uc3QgZ290ID0gbGluZVxuICAgICAgICAgICAgLm1hdGNoKC9eWyBcXHRdKi8pWzBdXG4gICAgICAgICAgICAucmVwbGFjZSgvIC9nLCBcIlNcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHQvZywgXCJUXCIpO1xuXG4gICAgICAgICAgcmV0dXJuIGVycm9yKFxuICAgICAgICAgICAgYFVuYWJsZSB0byBwYXJzZSBsaXN0OiBleHBlY3RlZCBpbmRlbnQgXCIke2V4cGVjdGVkfVwiLCBnb3QgXCIke2dvdH1cImBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjdXJyZW50TGlzdC5nZXROb3Rlc0luZGVudCgpKSB7XG4gICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IGxpbmUubWF0Y2goL15bIFxcdF0rLyk7XG5cbiAgICAgICAgICBpZiAoIW1hdGNoZXMgfHwgbWF0Y2hlc1swXS5sZW5ndGggPD0gY3VycmVudEluZGVudC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICgvXlxccyskLy50ZXN0KGxpbmUpKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZXJyb3IoXG4gICAgICAgICAgICAgIGBVbmFibGUgdG8gcGFyc2UgbGlzdDogZXhwZWN0ZWQgc29tZSBpbmRlbnQsIGdvdCBubyBpbmRlbnRgXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGN1cnJlbnRMaXN0LnNldE5vdGVzSW5kZW50KG1hdGNoZXNbMF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudExpc3QuYWRkTGluZShsaW5lLnNsaWNlKGN1cnJlbnRMaXN0LmdldE5vdGVzSW5kZW50KCkubGVuZ3RoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZXJyb3IoXG4gICAgICAgICAgYFVuYWJsZSB0byBwYXJzZSBsaXN0OiBleHBlY3RlZCBsaXN0IGl0ZW0gb3Igbm90ZSwgZ290IFwiJHtsaW5lfVwiYFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb290O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0VtcHR5TGluZShsaW5lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbGluZS5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwcml2YXRlIGlzTGluZVdpdGhJbmRlbnQobGluZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZ1dpdGhTcGFjZXNSZS50ZXN0KGxpbmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0xpc3RJdGVtKGxpbmU6IHN0cmluZykge1xuICAgIHJldHVybiBsaXN0SXRlbVJlLnRlc3QobGluZSk7XG4gIH1cblxuICBwcml2YXRlIGlzTGlzdEl0ZW1XaXRob3V0U3BhY2VzKGxpbmU6IHN0cmluZykge1xuICAgIHJldHVybiBsaXN0SXRlbVdpdGhvdXRTcGFjZXNSZS50ZXN0KGxpbmUpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBBcHBseUNoYW5nZXNTZXJ2aWNlIH0gZnJvbSBcIi4vQXBwbHlDaGFuZ2VzU2VydmljZVwiO1xuaW1wb3J0IHsgUGFyc2VyU2VydmljZSB9IGZyb20gXCIuL1BhcnNlclNlcnZpY2VcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vTXlFZGl0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL09wZXJhdGlvblwiO1xuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBQZXJmb3JtT3BlcmF0aW9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwbHlDaGFuZ2VzOiBBcHBseUNoYW5nZXNTZXJ2aWNlXG4gICkge31cblxuICBldmFsT3BlcmF0aW9uKHJvb3Q6IFJvb3QsIG9wOiBPcGVyYXRpb24sIGVkaXRvcjogTXlFZGl0b3IpIHtcbiAgICBvcC5wZXJmb3JtKCk7XG5cbiAgICBpZiAob3Auc2hvdWxkVXBkYXRlKCkpIHtcbiAgICAgIHRoaXMuYXBwbHlDaGFuZ2VzLmFwcGx5Q2hhbmdlcyhlZGl0b3IsIHJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzaG91bGRVcGRhdGU6IG9wLnNob3VsZFVwZGF0ZSgpLFxuICAgICAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uOiBvcC5zaG91bGRTdG9wUHJvcGFnYXRpb24oKSxcbiAgICB9O1xuICB9XG5cbiAgcGVyZm9ybU9wZXJhdGlvbihcbiAgICBjYjogKHJvb3Q6IFJvb3QpID0+IE9wZXJhdGlvbixcbiAgICBlZGl0b3I6IE15RWRpdG9yLFxuICAgIGN1cnNvciA9IGVkaXRvci5nZXRDdXJzb3IoKVxuICApIHtcbiAgICBjb25zdCByb290ID0gdGhpcy5wYXJzZXIucGFyc2UoZWRpdG9yLCBjdXJzb3IpO1xuXG4gICAgaWYgKCFyb290KSB7XG4gICAgICByZXR1cm4geyBzaG91bGRVcGRhdGU6IGZhbHNlLCBzaG91bGRTdG9wUHJvcGFnYXRpb246IGZhbHNlIH07XG4gICAgfVxuXG4gICAgY29uc3Qgb3AgPSBjYihyb290KTtcblxuICAgIHJldHVybiB0aGlzLmV2YWxPcGVyYXRpb24ocm9vdCwgb3AsIGVkaXRvcik7XG4gIH1cbn1cbiIsImV4cG9ydCB0eXBlIExpc3RMaW5lQWN0aW9uID0gXCJub25lXCIgfCBcInpvb20taW5cIiB8IFwidG9nZ2xlLWZvbGRpbmdcIjtcblxuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhbk91dGxpbmVyUGx1Z2luU2V0dGluZ3Mge1xuICBzdHlsZUxpc3RzOiBib29sZWFuO1xuICBkZWJ1ZzogYm9vbGVhbjtcbiAgc3RpY2tDdXJzb3I6IGJvb2xlYW47XG4gIGJldHRlckVudGVyOiBib29sZWFuO1xuICBiZXR0ZXJUYWI6IGJvb2xlYW47XG4gIHNlbGVjdEFsbDogYm9vbGVhbjtcbiAgbGlzdExpbmVzOiBib29sZWFuO1xuICBsaXN0TGluZUFjdGlvbjogTGlzdExpbmVBY3Rpb247XG59XG5cbmNvbnN0IERFRkFVTFRfU0VUVElOR1M6IE9ic2lkaWFuT3V0bGluZXJQbHVnaW5TZXR0aW5ncyA9IHtcbiAgc3R5bGVMaXN0czogdHJ1ZSxcbiAgZGVidWc6IGZhbHNlLFxuICBzdGlja0N1cnNvcjogdHJ1ZSxcbiAgYmV0dGVyRW50ZXI6IHRydWUsXG4gIGJldHRlclRhYjogdHJ1ZSxcbiAgc2VsZWN0QWxsOiB0cnVlLFxuICBsaXN0TGluZXM6IGZhbHNlLFxuICBsaXN0TGluZUFjdGlvbjogXCJ0b2dnbGUtZm9sZGluZ1wiLFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlIHtcbiAgbG9hZERhdGEoKTogUHJvbWlzZTxPYnNpZGlhbk91dGxpbmVyUGx1Z2luU2V0dGluZ3M+O1xuICBzYXZlRGF0YShzZXR0aWduczogT2JzaWRpYW5PdXRsaW5lclBsdWdpblNldHRpbmdzKTogUHJvbWlzZTx2b2lkPjtcbn1cblxudHlwZSBLID0ga2V5b2YgT2JzaWRpYW5PdXRsaW5lclBsdWdpblNldHRpbmdzO1xudHlwZSBDYWxsYmFjazxUIGV4dGVuZHMgSz4gPSAoY2I6IE9ic2lkaWFuT3V0bGluZXJQbHVnaW5TZXR0aW5nc1tUXSkgPT4gdm9pZDtcblxuZXhwb3J0IGNsYXNzIFNldHRpbmdzU2VydmljZSBpbXBsZW1lbnRzIE9ic2lkaWFuT3V0bGluZXJQbHVnaW5TZXR0aW5ncyB7XG4gIHByaXZhdGUgc3RvcmFnZTogU3RvcmFnZTtcbiAgcHJpdmF0ZSB2YWx1ZXM6IE9ic2lkaWFuT3V0bGluZXJQbHVnaW5TZXR0aW5ncztcbiAgcHJpdmF0ZSBoYW5kbGVyczogTWFwPEssIFNldDxDYWxsYmFjazxLPj4+O1xuXG4gIGNvbnN0cnVjdG9yKHN0b3JhZ2U6IFN0b3JhZ2UpIHtcbiAgICB0aGlzLnN0b3JhZ2UgPSBzdG9yYWdlO1xuICAgIHRoaXMuaGFuZGxlcnMgPSBuZXcgTWFwKCk7XG4gIH1cblxuICBnZXQgc3R5bGVMaXN0cygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuc3R5bGVMaXN0cztcbiAgfVxuICBzZXQgc3R5bGVMaXN0cyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwic3R5bGVMaXN0c1wiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgZGVidWcoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmRlYnVnO1xuICB9XG4gIHNldCBkZWJ1Zyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwiZGVidWdcIiwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0IHN0aWNrQ3Vyc29yKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5zdGlja0N1cnNvcjtcbiAgfVxuICBzZXQgc3RpY2tDdXJzb3IodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldChcInN0aWNrQ3Vyc29yXCIsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBiZXR0ZXJFbnRlcigpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuYmV0dGVyRW50ZXI7XG4gIH1cbiAgc2V0IGJldHRlckVudGVyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXQoXCJiZXR0ZXJFbnRlclwiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgYmV0dGVyVGFiKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5iZXR0ZXJUYWI7XG4gIH1cbiAgc2V0IGJldHRlclRhYih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwiYmV0dGVyVGFiXCIsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBzZWxlY3RBbGwoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLnNlbGVjdEFsbDtcbiAgfVxuICBzZXQgc2VsZWN0QWxsKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXQoXCJzZWxlY3RBbGxcIiwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0IGxpc3RMaW5lcygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMubGlzdExpbmVzO1xuICB9XG4gIHNldCBsaXN0TGluZXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldChcImxpc3RMaW5lc1wiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgbGlzdExpbmVBY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmxpc3RMaW5lQWN0aW9uO1xuICB9XG4gIHNldCBsaXN0TGluZUFjdGlvbih2YWx1ZTogTGlzdExpbmVBY3Rpb24pIHtcbiAgICB0aGlzLnNldChcImxpc3RMaW5lQWN0aW9uXCIsIHZhbHVlKTtcbiAgfVxuXG4gIG9uQ2hhbmdlPFQgZXh0ZW5kcyBLPihrZXk6IFQsIGNiOiBDYWxsYmFjazxUPikge1xuICAgIGlmICghdGhpcy5oYW5kbGVycy5oYXMoa2V5KSkge1xuICAgICAgdGhpcy5oYW5kbGVycy5zZXQoa2V5LCBuZXcgU2V0KCkpO1xuICAgIH1cblxuICAgIHRoaXMuaGFuZGxlcnMuZ2V0KGtleSkuYWRkKGNiKTtcbiAgfVxuXG4gIHJlbW92ZUNhbGxiYWNrPFQgZXh0ZW5kcyBLPihrZXk6IFQsIGNiOiBDYWxsYmFjazxUPik6IHZvaWQge1xuICAgIGNvbnN0IGhhbmRsZXJzID0gdGhpcy5oYW5kbGVycy5nZXQoa2V5KTtcblxuICAgIGlmIChoYW5kbGVycykge1xuICAgICAgaGFuZGxlcnMuZGVsZXRlKGNiKTtcbiAgICB9XG4gIH1cblxuICByZXNldCgpIHtcbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhERUZBVUxUX1NFVFRJTkdTKSkge1xuICAgICAgdGhpcy5zZXQoayBhcyBrZXlvZiBPYnNpZGlhbk91dGxpbmVyUGx1Z2luU2V0dGluZ3MsIHYpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy52YWx1ZXMgPSBPYmplY3QuYXNzaWduKFxuICAgICAge30sXG4gICAgICBERUZBVUxUX1NFVFRJTkdTLFxuICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLmxvYWREYXRhKClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgc2F2ZSgpIHtcbiAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2F2ZURhdGEodGhpcy52YWx1ZXMpO1xuICB9XG5cbiAgc2V0PFQgZXh0ZW5kcyBLPihrZXk6IFQsIHZhbHVlOiBPYnNpZGlhbk91dGxpbmVyUGx1Z2luU2V0dGluZ3NbVF0pOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlc1trZXldID0gdmFsdWU7XG4gICAgY29uc3QgY2FsbGJhY2tzID0gdGhpcy5oYW5kbGVycy5nZXQoa2V5KTtcblxuICAgIGlmICghY2FsbGJhY2tzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjYiBvZiBjYWxsYmFja3MudmFsdWVzKCkpIHtcbiAgICAgIGNiKHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IE5vdGljZSwgUGx1Z2luIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IERlbGV0ZVNob3VsZElnbm9yZUJ1bGxldHNGZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvRGVsZXRlU2hvdWxkSWdub3JlQnVsbGV0c0ZlYXR1cmVcIjtcbmltcG9ydCB7IEVuc3VyZUN1cnNvckluTGlzdENvbnRlbnRGZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvRW5zdXJlQ3Vyc29ySW5MaXN0Q29udGVudEZlYXR1cmVcIjtcbmltcG9ydCB7IEVudGVyT3V0ZGVudElmTGluZUlzRW1wdHlGZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvRW50ZXJPdXRkZW50SWZMaW5lSXNFbXB0eUZlYXR1cmVcIjtcbmltcG9ydCB7IEVudGVyU2hvdWxkQ3JlYXRlTmV3SXRlbUZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9FbnRlclNob3VsZENyZWF0ZU5ld0l0ZW1PbkNoaWxkTGV2ZWxGZWF0dXJlXCI7XG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvRmVhdHVyZVwiO1xuaW1wb3J0IHsgRm9sZEZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9Gb2xkRmVhdHVyZVwiO1xuaW1wb3J0IHsgTGluZXNGZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvTGluZXNGZWF0dXJlXCI7XG5pbXBvcnQgeyBMaXN0c1N0eWxlc0ZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9MaXN0c1N0eWxlc0ZlYXR1cmVcIjtcbmltcG9ydCB7IE1vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRMaW5lRmVhdHVyZSB9IGZyb20gXCIuL2ZlYXR1cmVzL01vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRMaW5lRmVhdHVyZVwiO1xuaW1wb3J0IHsgTW92ZUl0ZW1zRmVhdHVyZSB9IGZyb20gXCIuL2ZlYXR1cmVzL01vdmVJdGVtc0ZlYXR1cmVcIjtcbmltcG9ydCB7IFNlbGVjdEFsbEZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9TZWxlY3RBbGxGZWF0dXJlXCI7XG5pbXBvcnQgeyBTZWxlY3Rpb25TaG91bGRJZ25vcmVCdWxsZXRzRmVhdHVyZSB9IGZyb20gXCIuL2ZlYXR1cmVzL1NlbGVjdGlvblNob3VsZElnbm9yZUJ1bGxldHNGZWF0dXJlXCI7XG5pbXBvcnQgeyBTZXR0aW5nc1RhYkZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9TZXR0aW5nc1RhYkZlYXR1cmVcIjtcbmltcG9ydCB7IFNoaWZ0RW50ZXJTaG91bGRDcmVhdGVOb3RlRmVhdHVyZSB9IGZyb20gXCIuL2ZlYXR1cmVzL1NoaWZ0RW50ZXJTaG91bGRDcmVhdGVOb3RlRmVhdHVyZVwiO1xuaW1wb3J0IHsgQXBwbHlDaGFuZ2VzU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL0FwcGx5Q2hhbmdlc1NlcnZpY2VcIjtcbmltcG9ydCB7IElNRVNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9JTUVTZXJ2aWNlXCI7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvTG9nZ2VyU2VydmljZVwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvT2JzaWRpYW5TZXJ2aWNlXCI7XG5pbXBvcnQgeyBQYXJzZXJTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvUGFyc2VyU2VydmljZVwiO1xuaW1wb3J0IHsgUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9QZXJmb3JtT3BlcmF0aW9uU2VydmljZVwiO1xuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvU2V0dGluZ3NTZXJ2aWNlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9ic2lkaWFuT3V0bGluZXJQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuICBwcml2YXRlIGZlYXR1cmVzOiBGZWF0dXJlW107XG4gIHByb3RlY3RlZCBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlO1xuICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZTtcbiAgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlO1xuICBwcml2YXRlIHBhcnNlcjogUGFyc2VyU2VydmljZTtcbiAgcHJpdmF0ZSBhcHBseUNoYW5nZXM6IEFwcGx5Q2hhbmdlc1NlcnZpY2U7XG4gIHByaXZhdGUgcGVyZm9ybU9wZXJhdGlvbjogUGVyZm9ybU9wZXJhdGlvblNlcnZpY2U7XG4gIHByaXZhdGUgaW1lOiBJTUVTZXJ2aWNlO1xuXG4gIGFzeW5jIG9ubG9hZCgpIHtcbiAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBvYnNpZGlhbi1vdXRsaW5lcmApO1xuXG4gICAgdGhpcy5vYnNpZGlhbiA9IG5ldyBPYnNpZGlhblNlcnZpY2UodGhpcy5hcHApO1xuXG4gICAgaWYgKHRoaXMub2JzaWRpYW4uaXNMZWdhY3lFZGl0b3JFbmFibGVkKCkpIHtcbiAgICAgIG5ldyBOb3RpY2UoXG4gICAgICAgIGBPdXRsaW5lciBwbHVnaW4gZG9lcyBub3Qgc3VwcG9ydCBsZWdhY3kgZWRpdG9yIG1vZGUgc3RhcnRpbmcgZnJvbSB2ZXJzaW9uIDIuMC4gUGxlYXNlIGRpc2FibGUgdGhlIFwiVXNlIGxlZ2FjeSBlZGl0b3JcIiBvcHRpb24gb3IgbWFudWFsbHkgaW5zdGFsbCB2ZXJzaW9uIDEuMCBvZiBPdXRsaW5lciBwbHVnaW4uYCxcbiAgICAgICAgMzAwMDBcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBTZXR0aW5nc1NlcnZpY2UodGhpcyk7XG4gICAgYXdhaXQgdGhpcy5zZXR0aW5ncy5sb2FkKCk7XG5cbiAgICB0aGlzLmxvZ2dlciA9IG5ldyBMb2dnZXJTZXJ2aWNlKHRoaXMuc2V0dGluZ3MpO1xuXG4gICAgdGhpcy5wYXJzZXIgPSBuZXcgUGFyc2VyU2VydmljZSh0aGlzLmxvZ2dlcik7XG4gICAgdGhpcy5hcHBseUNoYW5nZXMgPSBuZXcgQXBwbHlDaGFuZ2VzU2VydmljZSgpO1xuICAgIHRoaXMucGVyZm9ybU9wZXJhdGlvbiA9IG5ldyBQZXJmb3JtT3BlcmF0aW9uU2VydmljZShcbiAgICAgIHRoaXMucGFyc2VyLFxuICAgICAgdGhpcy5hcHBseUNoYW5nZXNcbiAgICApO1xuXG4gICAgdGhpcy5pbWUgPSBuZXcgSU1FU2VydmljZSgpO1xuICAgIGF3YWl0IHRoaXMuaW1lLmxvYWQoKTtcblxuICAgIHRoaXMuZmVhdHVyZXMgPSBbXG4gICAgICBuZXcgU2V0dGluZ3NUYWJGZWF0dXJlKHRoaXMsIHRoaXMuc2V0dGluZ3MpLFxuICAgICAgbmV3IExpc3RzU3R5bGVzRmVhdHVyZSh0aGlzLnNldHRpbmdzLCB0aGlzLm9ic2lkaWFuKSxcbiAgICAgIG5ldyBFbnRlck91dGRlbnRJZkxpbmVJc0VtcHR5RmVhdHVyZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5pbWUsXG4gICAgICAgIHRoaXMub2JzaWRpYW4sXG4gICAgICAgIHRoaXMucGVyZm9ybU9wZXJhdGlvblxuICAgICAgKSxcbiAgICAgIG5ldyBFbnRlclNob3VsZENyZWF0ZU5ld0l0ZW1GZWF0dXJlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZSxcbiAgICAgICAgdGhpcy5vYnNpZGlhbixcbiAgICAgICAgdGhpcy5wZXJmb3JtT3BlcmF0aW9uXG4gICAgICApLFxuICAgICAgbmV3IEVuc3VyZUN1cnNvckluTGlzdENvbnRlbnRGZWF0dXJlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLm9ic2lkaWFuLFxuICAgICAgICB0aGlzLnBlcmZvcm1PcGVyYXRpb25cbiAgICAgICksXG4gICAgICBuZXcgTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmVGZWF0dXJlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZSxcbiAgICAgICAgdGhpcy5vYnNpZGlhbixcbiAgICAgICAgdGhpcy5wZXJmb3JtT3BlcmF0aW9uXG4gICAgICApLFxuICAgICAgbmV3IERlbGV0ZVNob3VsZElnbm9yZUJ1bGxldHNGZWF0dXJlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZSxcbiAgICAgICAgdGhpcy5vYnNpZGlhbixcbiAgICAgICAgdGhpcy5wZXJmb3JtT3BlcmF0aW9uXG4gICAgICApLFxuICAgICAgbmV3IFNlbGVjdGlvblNob3VsZElnbm9yZUJ1bGxldHNGZWF0dXJlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZSxcbiAgICAgICAgdGhpcy5vYnNpZGlhbixcbiAgICAgICAgdGhpcy5wZXJmb3JtT3BlcmF0aW9uXG4gICAgICApLFxuICAgICAgbmV3IEZvbGRGZWF0dXJlKHRoaXMsIHRoaXMub2JzaWRpYW4pLFxuICAgICAgbmV3IFNlbGVjdEFsbEZlYXR1cmUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMuaW1lLFxuICAgICAgICB0aGlzLm9ic2lkaWFuLFxuICAgICAgICB0aGlzLnBlcmZvcm1PcGVyYXRpb25cbiAgICAgICksXG4gICAgICBuZXcgTW92ZUl0ZW1zRmVhdHVyZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5pbWUsXG4gICAgICAgIHRoaXMub2JzaWRpYW4sXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMucGVyZm9ybU9wZXJhdGlvblxuICAgICAgKSxcbiAgICAgIG5ldyBTaGlmdEVudGVyU2hvdWxkQ3JlYXRlTm90ZUZlYXR1cmUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMub2JzaWRpYW4sXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMuaW1lLFxuICAgICAgICB0aGlzLnBlcmZvcm1PcGVyYXRpb25cbiAgICAgICksXG4gICAgICBuZXcgTGluZXNGZWF0dXJlKHRoaXMsIHRoaXMuc2V0dGluZ3MsIHRoaXMub2JzaWRpYW4sIHRoaXMucGFyc2VyKSxcbiAgICBdO1xuXG4gICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIHRoaXMuZmVhdHVyZXMpIHtcbiAgICAgIGF3YWl0IGZlYXR1cmUubG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9udW5sb2FkKCkge1xuICAgIGNvbnNvbGUubG9nKGBVbmxvYWRpbmcgb2JzaWRpYW4tb3V0bGluZXJgKTtcblxuICAgIGF3YWl0IHRoaXMuaW1lLnVubG9hZCgpO1xuXG4gICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIHRoaXMuZmVhdHVyZXMpIHtcbiAgICAgIGF3YWl0IGZlYXR1cmUudW5sb2FkKCk7XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsia2V5bWFwIiwiRWRpdG9yU3RhdGUiLCJQcmVjIiwiTm90aWNlIiwiZm9sZGVkUmFuZ2VzIiwiZm9sZGFibGUiLCJmb2xkRWZmZWN0IiwidW5mb2xkRWZmZWN0IiwicnVuU2NvcGVIYW5kbGVycyIsIm9ic2lkaWFuIiwiZWRpdG9yVmlld0ZpZWxkIiwiVmlld1BsdWdpbiIsIlBsdWdpblNldHRpbmdUYWIiLCJTZXR0aW5nIiwiUGx1Z2luIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXVEQTtBQUNPLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRTtBQUM3RCxJQUFJLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sS0FBSyxZQUFZLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsVUFBVSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMs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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9yb290L3JlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMudHMiLCJzcmMvb3BlcmF0aW9ucy9EZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91c0xpbmVPcGVyYXRpb24udHMiLCJzcmMvb3BlcmF0aW9ucy9EZWxldGVBbmRNZXJnZVdpdGhOZXh0TGluZU9wZXJhdGlvbi50cyIsInNyYy9vcGVyYXRpb25zL0RlbGV0ZVRpbGxMaW5lU3RhcnRPcGVyYXRpb24udHMiLCJzcmMvZmVhdHVyZXMvRGVsZXRlU2hvdWxkSWdub3JlQnVsbGV0c0ZlYXR1cmUudHMiLCJzcmMvb3BlcmF0aW9ucy9FbnN1cmVDdXJzb3JJbkxpc3RDb250ZW50T3BlcmF0aW9uLnRzIiwic3JjL29wZXJhdGlvbnMvRW5zdXJlQ3Vyc29ySXNJblVuZm9sZGVkTGluZU9wZXJhdGlvbi50cyIsInNyYy9mZWF0dXJlcy9FbnN1cmVDdXJzb3JJbkxpc3RDb250ZW50RmVhdHVyZS50cyIsInNyYy9vcGVyYXRpb25zL01vdmVMZWZ0T3BlcmF0aW9uLnRzIiwic3JjL3V0aWxzL2lzRW1wdHlMaW5lT3JFbXB0eUNoZWNrYm94LnRzIiwic3JjL29wZXJhdGlvbnMvT3V0ZGVudElmTGluZUlzRW1wdHlPcGVyYXRpb24udHMiLCJzcmMvZmVhdHVyZXMvRW50ZXJPdXRkZW50SWZMaW5lSXNFbXB0eUZlYXR1cmUudHMiLCJzcmMvcm9vdC9pbmRleC50cyIsInNyYy9vcGVyYXRpb25zL0NyZWF0ZU5ld0l0ZW1PcGVyYXRpb24udHMiLCJzcmMvZmVhdHVyZXMvRW50ZXJTaG91bGRDcmVhdGVOZXdJdGVtT25DaGlsZExldmVsRmVhdHVyZS50cyIsInNyYy9mZWF0dXJlcy9Gb2xkRmVhdHVyZS50cyIsInNyYy9NeUVkaXRvci50cyIsInNyYy9mZWF0dXJlcy9MaW5lc0ZlYXR1cmUudHMiLCJzcmMvZmVhdHVyZXMvTGlzdHNTdHlsZXNGZWF0dXJlLnRzIiwic3JjL29wZXJhdGlvbnMvTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmVPcGVyYXRpb24udHMiLCJzcmMvZmVhdHVyZXMvTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmVGZWF0dXJlLnRzIiwic3JjL29wZXJhdGlvbnMvTW92ZURvd25PcGVyYXRpb24udHMiLCJzcmMvb3BlcmF0aW9ucy9Nb3ZlUmlnaHRPcGVyYXRpb24udHMiLCJzcmMvb3BlcmF0aW9ucy9Nb3ZlVXBPcGVyYXRpb24udHMiLCJzcmMvZmVhdHVyZXMvTW92ZUl0ZW1zRmVhdHVyZS50cyIsInNyYy9vcGVyYXRpb25zL1NlbGVjdEFsbE9wZXJhdGlvbi50cyIsInNyYy9mZWF0dXJlcy9TZWxlY3RBbGxGZWF0dXJlLnRzIiwic3JjL29wZXJhdGlvbnMvU2VsZWN0VGlsbExpbmVTdGFydE9wZXJhdGlvbi50cyIsInNyYy9mZWF0dXJlcy9TZWxlY3Rpb25TaG91bGRJZ25vcmVCdWxsZXRzRmVhdHVyZS50cyIsInNyYy9mZWF0dXJlcy9TZXR0aW5nc1RhYkZlYXR1cmUudHMiLCJzcmMvb3BlcmF0aW9ucy9DcmVhdGVOb3RlTGluZU9wZXJhdGlvbi50cyIsInNyYy9mZWF0dXJlcy9TaGlmdEVudGVyU2hvdWxkQ3JlYXRlTm90ZUZlYXR1cmUudHMiLCJzcmMvc2VydmljZXMvQXBwbHlDaGFuZ2VzU2VydmljZS50cyIsInNyYy9zZXJ2aWNlcy9JTUVTZXJ2aWNlLnRzIiwic3JjL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2UudHMiLCJzcmMvc2VydmljZXMvT2JzaWRpYW5TZXJ2aWNlLnRzIiwic3JjL3NlcnZpY2VzL1BhcnNlclNlcnZpY2UudHMiLCJzcmMvc2VydmljZXMvUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UudHMiLCJzcmMvc2VydmljZXMvU2V0dGluZ3NTZXJ2aWNlLnRzIiwic3JjL09ic2lkaWFuT3V0bGluZXJQbHVnaW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlICovXHJcblxyXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcclxuICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXHJcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XHJcbiAgICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xyXG4gICAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XHJcbiAgICB9XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xyXG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIG9bazJdID0gbVtrXTtcclxufSk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIG8pIHtcclxuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgcCkpIF9fY3JlYXRlQmluZGluZyhvLCBtLCBwKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcclxuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XHJcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcclxuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcclxuICAgIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xyXG4gICAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxyXG4gICAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxyXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcclxuICAgIHJldHVybiByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheSh0bywgZnJvbSwgcGFjaykge1xyXG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XHJcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XHJcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xyXG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaWYgKGdbbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxyXG4gICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XHJcbiAgICB2YXIgaSwgcDtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBuID09PSBcInJldHVyblwiIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcbiIsImltcG9ydCB7IExpc3QsIFJvb3QgfSBmcm9tIFwiLlwiO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290OiBSb290KSB7XG4gIGZ1bmN0aW9uIHZpc2l0KHBhcmVudDogUm9vdCB8IExpc3QpIHtcbiAgICBsZXQgaW5kZXggPSAxO1xuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBwYXJlbnQuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgaWYgKC9cXGQrXFwuLy50ZXN0KGNoaWxkLmdldEJ1bGxldCgpKSkge1xuICAgICAgICBjaGlsZC5yZXBsYXRlQnVsbGV0KGAke2luZGV4Kyt9LmApO1xuICAgICAgfVxuXG4gICAgICB2aXNpdChjaGlsZCk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXQocm9vdCk7XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgTGlzdCwgTGlzdExpbmUsIFBvc2l0aW9uLCBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcbmltcG9ydCB7IHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdC9yZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzXCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91c0xpbmVPcGVyYXRpb24gaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVzID0gbGlzdC5nZXRMaW5lc0luZm8oKTtcblxuICAgIGNvbnN0IGxpbmVObyA9IGxpbmVzLmZpbmRJbmRleChcbiAgICAgIChsKSA9PiBjdXJzb3IuY2ggPT09IGwuZnJvbS5jaCAmJiBjdXJzb3IubGluZSA9PT0gbC5mcm9tLmxpbmVcbiAgICApO1xuXG4gICAgaWYgKGxpbmVObyA9PT0gMCkge1xuICAgICAgdGhpcy5tZXJnZVdpdGhQcmV2aW91c0l0ZW0ocm9vdCwgY3Vyc29yLCBsaXN0KTtcbiAgICB9IGVsc2UgaWYgKGxpbmVObyA+IDApIHtcbiAgICAgIHRoaXMubWVyZ2VOb3Rlcyhyb290LCBjdXJzb3IsIGxpc3QsIGxpbmVzLCBsaW5lTm8pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VOb3RlcyhcbiAgICByb290OiBSb290LFxuICAgIGN1cnNvcjogUG9zaXRpb24sXG4gICAgbGlzdDogTGlzdCxcbiAgICBsaW5lczogTGlzdExpbmVbXSxcbiAgICBsaW5lTm86IG51bWJlclxuICApIHtcbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IHByZXZMaW5lTm8gPSBsaW5lTm8gLSAxO1xuXG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IGN1cnNvci5saW5lIC0gMSxcbiAgICAgIGNoOiBsaW5lc1twcmV2TGluZU5vXS50ZXh0Lmxlbmd0aCArIGxpbmVzW3ByZXZMaW5lTm9dLmZyb20uY2gsXG4gICAgfSk7XG5cbiAgICBsaW5lc1twcmV2TGluZU5vXS50ZXh0ICs9IGxpbmVzW2xpbmVOb10udGV4dDtcbiAgICBsaW5lcy5zcGxpY2UobGluZU5vLCAxKTtcblxuICAgIGxpc3QucmVwbGFjZUxpbmVzKGxpbmVzLm1hcCgobCkgPT4gbC50ZXh0KSk7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlV2l0aFByZXZpb3VzSXRlbShyb290OiBSb290LCBjdXJzb3I6IFBvc2l0aW9uLCBsaXN0OiBMaXN0KSB7XG4gICAgaWYgKHJvb3QuZ2V0Q2hpbGRyZW4oKVswXSA9PT0gbGlzdCAmJiBsaXN0LmdldENoaWxkcmVuKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgcHJldiA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShjdXJzb3IubGluZSAtIDEpO1xuXG4gICAgaWYgKCFwcmV2KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYm90aEFyZUVtcHR5ID0gcHJldi5pc0VtcHR5KCkgJiYgbGlzdC5pc0VtcHR5KCk7XG4gICAgY29uc3QgcHJldklzRW1wdHlBbmRTYW1lTGV2ZWwgPVxuICAgICAgcHJldi5pc0VtcHR5KCkgJiYgIWxpc3QuaXNFbXB0eSgpICYmIHByZXYuZ2V0TGV2ZWwoKSA9PSBsaXN0LmdldExldmVsKCk7XG4gICAgY29uc3QgbGlzdElzRW1wdHlBbmRQcmV2SXNQYXJlbnQgPVxuICAgICAgbGlzdC5pc0VtcHR5KCkgJiYgcHJldi5nZXRMZXZlbCgpID09IGxpc3QuZ2V0TGV2ZWwoKSAtIDE7XG5cbiAgICBpZiAoYm90aEFyZUVtcHR5IHx8IHByZXZJc0VtcHR5QW5kU2FtZUxldmVsIHx8IGxpc3RJc0VtcHR5QW5kUHJldklzUGFyZW50KSB7XG4gICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgICBjb25zdCBwYXJlbnQgPSBsaXN0LmdldFBhcmVudCgpO1xuICAgICAgY29uc3QgcHJldkVuZCA9IHByZXYuZ2V0TGFzdExpbmVDb250ZW50RW5kKCk7XG5cbiAgICAgIGlmICghcHJldi5nZXROb3Rlc0luZGVudCgpICYmIGxpc3QuZ2V0Tm90ZXNJbmRlbnQoKSkge1xuICAgICAgICBwcmV2LnNldE5vdGVzSW5kZW50KFxuICAgICAgICAgIHByZXYuZ2V0Rmlyc3RMaW5lSW5kZW50KCkgK1xuICAgICAgICAgICAgbGlzdC5nZXROb3Rlc0luZGVudCgpLnNsaWNlKGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvbGRMaW5lcyA9IHByZXYuZ2V0TGluZXMoKTtcbiAgICAgIGNvbnN0IG5ld0xpbmVzID0gbGlzdC5nZXRMaW5lcygpO1xuICAgICAgb2xkTGluZXNbb2xkTGluZXMubGVuZ3RoIC0gMV0gKz0gbmV3TGluZXNbMF07XG4gICAgICBjb25zdCByZXN1bHRMaW5lcyA9IG9sZExpbmVzLmNvbmNhdChuZXdMaW5lcy5zbGljZSgxKSk7XG5cbiAgICAgIHByZXYucmVwbGFjZUxpbmVzKHJlc3VsdExpbmVzKTtcbiAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcblxuICAgICAgZm9yIChjb25zdCBjIG9mIGxpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICBsaXN0LnJlbW92ZUNoaWxkKGMpO1xuICAgICAgICBwcmV2LmFkZEFmdGVyQWxsKGMpO1xuICAgICAgfVxuXG4gICAgICByb290LnJlcGxhY2VDdXJzb3IocHJldkVuZCk7XG5cbiAgICAgIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMocm9vdCk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBEZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91c0xpbmVPcGVyYXRpb24gfSBmcm9tIFwiLi9EZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91c0xpbmVPcGVyYXRpb25cIjtcbmltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIERlbGV0ZUFuZE1lcmdlV2l0aE5leHRMaW5lT3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBkZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91czogRGVsZXRlQW5kTWVyZ2VXaXRoUHJldmlvdXNMaW5lT3BlcmF0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge1xuICAgIHRoaXMuZGVsZXRlQW5kTWVyZ2VXaXRoUHJldmlvdXMgPVxuICAgICAgbmV3IERlbGV0ZUFuZE1lcmdlV2l0aFByZXZpb3VzTGluZU9wZXJhdGlvbihyb290KTtcbiAgfVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91cy5zaG91bGRTdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91cy5zaG91bGRVcGRhdGUoKTtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lcyA9IGxpc3QuZ2V0TGluZXNJbmZvKCk7XG5cbiAgICBjb25zdCBsaW5lTm8gPSBsaW5lcy5maW5kSW5kZXgoXG4gICAgICAobCkgPT4gY3Vyc29yLmNoID09PSBsLnRvLmNoICYmIGN1cnNvci5saW5lID09PSBsLnRvLmxpbmVcbiAgICApO1xuXG4gICAgaWYgKGxpbmVObyA9PT0gbGluZXMubGVuZ3RoIC0gMSkge1xuICAgICAgY29uc3QgbmV4dExpbmUgPSBsaW5lc1tsaW5lTm9dLnRvLmxpbmUgKyAxO1xuICAgICAgY29uc3QgbmV4dExpc3QgPSByb290LmdldExpc3RVbmRlckxpbmUobmV4dExpbmUpO1xuICAgICAgaWYgKCFuZXh0TGlzdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByb290LnJlcGxhY2VDdXJzb3IobmV4dExpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkpO1xuICAgICAgdGhpcy5kZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91cy5wZXJmb3JtKCk7XG4gICAgfSBlbHNlIGlmIChsaW5lTm8gPj0gMCkge1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKGxpbmVzW2xpbmVObyArIDFdLmZyb20pO1xuICAgICAgdGhpcy5kZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91cy5wZXJmb3JtKCk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVUaWxsTGluZVN0YXJ0T3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVzID0gbGlzdC5nZXRMaW5lc0luZm8oKTtcbiAgICBjb25zdCBsaW5lTm8gPSBsaW5lcy5maW5kSW5kZXgoKGwpID0+IGwuZnJvbS5saW5lID09PSBjdXJzb3IubGluZSk7XG5cbiAgICBsaW5lc1tsaW5lTm9dLnRleHQgPSBsaW5lc1tsaW5lTm9dLnRleHQuc2xpY2UoXG4gICAgICBjdXJzb3IuY2ggLSBsaW5lc1tsaW5lTm9dLmZyb20uY2hcbiAgICApO1xuXG4gICAgbGlzdC5yZXBsYWNlTGluZXMobGluZXMubWFwKChsKSA9PiBsLnRleHQpKTtcbiAgICByb290LnJlcGxhY2VDdXJzb3IobGluZXNbbGluZU5vXS5mcm9tKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsga2V5bWFwIH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vTXlFZGl0b3JcIjtcbmltcG9ydCB7IERlbGV0ZUFuZE1lcmdlV2l0aE5leHRMaW5lT3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvRGVsZXRlQW5kTWVyZ2VXaXRoTmV4dExpbmVPcGVyYXRpb25cIjtcbmltcG9ydCB7IERlbGV0ZUFuZE1lcmdlV2l0aFByZXZpb3VzTGluZU9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL0RlbGV0ZUFuZE1lcmdlV2l0aFByZXZpb3VzTGluZU9wZXJhdGlvblwiO1xuaW1wb3J0IHsgRGVsZXRlVGlsbExpbmVTdGFydE9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL0RlbGV0ZVRpbGxMaW5lU3RhcnRPcGVyYXRpb25cIjtcbmltcG9ydCB7IElNRVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FU2VydmljZVwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2VydmljZVwiO1xuaW1wb3J0IHsgUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcIjtcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1NlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIERlbGV0ZVNob3VsZElnbm9yZUJ1bGxldHNGZWF0dXJlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbWU6IElNRVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVyZm9ybU9wZXJhdGlvbjogUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBrZXltYXAub2YoW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiBcIkJhY2tzcGFjZVwiLFxuICAgICAgICAgIHJ1bjogdGhpcy5vYnNpZGlhbi5jcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5kZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91c0xpbmUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6IFwiRGVsZXRlXCIsXG4gICAgICAgICAgcnVuOiB0aGlzLm9ic2lkaWFuLmNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgcnVuOiB0aGlzLmRlbGV0ZUFuZE1lcmdlV2l0aE5leHRMaW5lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbWFjOiBcIm0tQmFja3NwYWNlXCIsXG4gICAgICAgICAgcnVuOiB0aGlzLm9ic2lkaWFuLmNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgcnVuOiB0aGlzLmRlbGV0ZVRpbGxMaW5lU3RhcnQsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Muc3RpY2tDdXJzb3IgJiYgIXRoaXMuaW1lLmlzSU1FT3BlbmVkKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBkZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91c0xpbmUgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PiBuZXcgRGVsZXRlQW5kTWVyZ2VXaXRoUHJldmlvdXNMaW5lT3BlcmF0aW9uKHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcblxuICBwcml2YXRlIGRlbGV0ZVRpbGxMaW5lU3RhcnQgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PiBuZXcgRGVsZXRlVGlsbExpbmVTdGFydE9wZXJhdGlvbihyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBkZWxldGVBbmRNZXJnZVdpdGhOZXh0TGluZSA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMucGVyZm9ybU9wZXJhdGlvbi5wZXJmb3JtT3BlcmF0aW9uKFxuICAgICAgKHJvb3QpID0+IG5ldyBEZWxldGVBbmRNZXJnZVdpdGhOZXh0TGluZU9wZXJhdGlvbihyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBFbnN1cmVDdXJzb3JJbkxpc3RDb250ZW50T3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBjb250ZW50U3RhcnQgPSBsaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpO1xuICAgIGNvbnN0IGxpbmVQcmVmaXggPVxuICAgICAgY29udGVudFN0YXJ0LmxpbmUgPT09IGN1cnNvci5saW5lXG4gICAgICAgID8gY29udGVudFN0YXJ0LmNoXG4gICAgICAgIDogbGlzdC5nZXROb3Rlc0luZGVudCgpLmxlbmd0aDtcblxuICAgIGlmIChjdXJzb3IuY2ggPCBsaW5lUHJlZml4KSB7XG4gICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgICAgbGluZTogY3Vyc29yLmxpbmUsXG4gICAgICAgIGNoOiBsaW5lUHJlZml4LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBFbnN1cmVDdXJzb3JJc0luVW5mb2xkZWRMaW5lT3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGlmICghbGlzdC5pc0ZvbGRlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZm9sZFJvb3QgPSBsaXN0LmdldFRvcEZvbGRSb290KCk7XG4gICAgY29uc3QgZmlyc3RMaW5lRW5kID0gZm9sZFJvb3QuZ2V0TGluZXNJbmZvKClbMF0udG87XG5cbiAgICBpZiAoY3Vyc29yLmxpbmUgPiBmaXJzdExpbmVFbmQubGluZSkge1xuICAgICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihmaXJzdExpbmVFbmQpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRWRpdG9yU3RhdGUsIFRyYW5zYWN0aW9uIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL015RWRpdG9yXCI7XG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4uL2ZlYXR1cmVzL0ZlYXR1cmVcIjtcbmltcG9ydCB7IEVuc3VyZUN1cnNvckluTGlzdENvbnRlbnRPcGVyYXRpb24gfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9FbnN1cmVDdXJzb3JJbkxpc3RDb250ZW50T3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBFbnN1cmVDdXJzb3JJc0luVW5mb2xkZWRMaW5lT3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvRW5zdXJlQ3Vyc29ySXNJblVuZm9sZGVkTGluZU9wZXJhdGlvblwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2VydmljZVwiO1xuaW1wb3J0IHsgUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcIjtcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1NlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIEVuc3VyZUN1cnNvckluTGlzdENvbnRlbnRGZWF0dXJlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVyZm9ybU9wZXJhdGlvbjogUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBFZGl0b3JTdGF0ZS50cmFuc2FjdGlvbkV4dGVuZGVyLm9mKHRoaXMudHJhbnNhY3Rpb25FeHRlbmRlcilcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIHRyYW5zYWN0aW9uRXh0ZW5kZXIgPSAodHI6IFRyYW5zYWN0aW9uKTogbnVsbCA9PiB7XG4gICAgaWYgKCF0aGlzLnNldHRpbmdzLnN0aWNrQ3Vyc29yIHx8ICF0ci5zZWxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMub2JzaWRpYW4uZ2V0RWRpdG9yRnJvbVN0YXRlKHRyLnN0YXJ0U3RhdGUpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZUN1cnNvckFjdGl2aXR5KGVkaXRvcik7XG4gICAgfSwgMCk7XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBwcml2YXRlIGhhbmRsZUN1cnNvckFjdGl2aXR5ID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PiBuZXcgRW5zdXJlQ3Vyc29ySXNJblVuZm9sZGVkTGluZU9wZXJhdGlvbihyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG5cbiAgICB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PiBuZXcgRW5zdXJlQ3Vyc29ySW5MaXN0Q29udGVudE9wZXJhdGlvbihyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzIH0gZnJvbSBcIi4uL3Jvb3QvcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0c1wiO1xuXG5leHBvcnQgY2xhc3MgTW92ZUxlZnRPcGVyYXRpb24gaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBwYXJlbnQgPSBsaXN0LmdldFBhcmVudCgpO1xuICAgIGNvbnN0IGdyYW5kUGFyZW50ID0gcGFyZW50LmdldFBhcmVudCgpO1xuXG4gICAgaWYgKCFncmFuZFBhcmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lQmVmb3JlID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuICAgIGNvbnN0IGluZGVudFJtRnJvbSA9IHBhcmVudC5nZXRGaXJzdExpbmVJbmRlbnQoKS5sZW5ndGg7XG4gICAgY29uc3QgaW5kZW50Um1UaWxsID0gbGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKS5sZW5ndGg7XG5cbiAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobGlzdCk7XG4gICAgZ3JhbmRQYXJlbnQuYWRkQWZ0ZXIocGFyZW50LCBsaXN0KTtcbiAgICBsaXN0LnVuaW5kZW50Q29udGVudChpbmRlbnRSbUZyb20sIGluZGVudFJtVGlsbCk7XG5cbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lQWZ0ZXIgPSByb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdClbMF07XG4gICAgY29uc3QgbGluZURpZmYgPSBsaXN0U3RhcnRMaW5lQWZ0ZXIgLSBsaXN0U3RhcnRMaW5lQmVmb3JlO1xuICAgIGNvbnN0IGNoRGlmZiA9IGluZGVudFJtVGlsbCAtIGluZGVudFJtRnJvbTtcblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IGN1cnNvci5saW5lICsgbGluZURpZmYsXG4gICAgICBjaDogY3Vyc29yLmNoIC0gY2hEaWZmLFxuICAgIH0pO1xuXG4gICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290KTtcbiAgfVxufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHlMaW5lT3JFbXB0eUNoZWNrYm94KGxpbmU6IHN0cmluZykge1xuICByZXR1cm4gbGluZSA9PT0gXCJcIiB8fCBsaW5lID09PSBcIlsgXSBcIjtcbn1cbiIsImltcG9ydCB7IE1vdmVMZWZ0T3BlcmF0aW9uIH0gZnJvbSBcIi4vTW92ZUxlZnRPcGVyYXRpb25cIjtcbmltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcbmltcG9ydCB7IGlzRW1wdHlMaW5lT3JFbXB0eUNoZWNrYm94IH0gZnJvbSBcIi4uL3V0aWxzL2lzRW1wdHlMaW5lT3JFbXB0eUNoZWNrYm94XCI7XG5cbmV4cG9ydCBjbGFzcyBPdXRkZW50SWZMaW5lSXNFbXB0eU9wZXJhdGlvbiBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgbW92ZUxlZnRPcDogTW92ZUxlZnRPcGVyYXRpb247XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7XG4gICAgdGhpcy5tb3ZlTGVmdE9wID0gbmV3IE1vdmVMZWZ0T3BlcmF0aW9uKHJvb3QpO1xuICB9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLm1vdmVMZWZ0T3Auc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubW92ZUxlZnRPcC5zaG91bGRVcGRhdGUoKTtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgbGluZXMgPSBsaXN0LmdldExpbmVzKCk7XG5cbiAgICBpZiAoXG4gICAgICBsaW5lcy5sZW5ndGggPiAxIHx8XG4gICAgICAhaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3gobGluZXNbMF0pIHx8XG4gICAgICBsaXN0LmdldExldmVsKCkgPT09IDFcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1vdmVMZWZ0T3AucGVyZm9ybSgpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBQcmVjIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5pbXBvcnQgeyBrZXltYXAgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9NeUVkaXRvclwiO1xuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuLi9mZWF0dXJlcy9GZWF0dXJlXCI7XG5pbXBvcnQgeyBPdXRkZW50SWZMaW5lSXNFbXB0eU9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL091dGRlbnRJZkxpbmVJc0VtcHR5T3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBJTUVTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL0lNRVNlcnZpY2VcIjtcbmltcG9ydCB7IE9ic2lkaWFuU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNlcnZpY2VcIjtcbmltcG9ydCB7IFBlcmZvcm1PcGVyYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1BlcmZvcm1PcGVyYXRpb25TZXJ2aWNlXCI7XG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NTZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBFbnRlck91dGRlbnRJZkxpbmVJc0VtcHR5RmVhdHVyZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW1lOiBJTUVTZXJ2aWNlLFxuICAgIHByaXZhdGUgb2JzaWRpYW46IE9ic2lkaWFuU2VydmljZSxcbiAgICBwcml2YXRlIHBlcmZvcm1PcGVyYXRpb246IFBlcmZvcm1PcGVyYXRpb25TZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAgUHJlYy5oaWdoZXN0KFxuICAgICAgICBrZXltYXAub2YoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogXCJFbnRlclwiLFxuICAgICAgICAgICAgcnVuOiB0aGlzLm9ic2lkaWFuLmNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MuYmV0dGVyRW50ZXIgJiYgIXRoaXMuaW1lLmlzSU1FT3BlbmVkKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PiBuZXcgT3V0ZGVudElmTGluZUlzRW1wdHlPcGVyYXRpb24ocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGNtcFBvcyhhOiBQb3NpdGlvbiwgYjogUG9zaXRpb24pIHtcbiAgcmV0dXJuIGEubGluZSAtIGIubGluZSB8fCBhLmNoIC0gYi5jaDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1heFBvcyhhOiBQb3NpdGlvbiwgYjogUG9zaXRpb24pIHtcbiAgcmV0dXJuIGNtcFBvcyhhLCBiKSA8IDAgPyBiIDogYTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1pblBvcyhhOiBQb3NpdGlvbiwgYjogUG9zaXRpb24pIHtcbiAgcmV0dXJuIGNtcFBvcyhhLCBiKSA8IDAgPyBhIDogYjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb3NpdGlvbiB7XG4gIGNoOiBudW1iZXI7XG4gIGxpbmU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0TGluZSB7XG4gIHRleHQ6IHN0cmluZztcbiAgZnJvbTogUG9zaXRpb247XG4gIHRvOiBQb3NpdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYW5nZSB7XG4gIGFuY2hvcjogUG9zaXRpb247XG4gIGhlYWQ6IFBvc2l0aW9uO1xufVxuXG5leHBvcnQgY2xhc3MgTGlzdCB7XG4gIHByaXZhdGUgcGFyZW50OiBMaXN0IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgY2hpbGRyZW46IExpc3RbXSA9IFtdO1xuICBwcml2YXRlIG5vdGVzSW5kZW50OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBsaW5lczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvb3Q6IFJvb3QsXG4gICAgcHJpdmF0ZSBpbmRlbnQ6IHN0cmluZyxcbiAgICBwcml2YXRlIGJ1bGxldDogc3RyaW5nLFxuICAgIHByaXZhdGUgc3BhY2VBZnRlckJ1bGxldDogc3RyaW5nLFxuICAgIGZpcnN0TGluZTogc3RyaW5nLFxuICAgIHByaXZhdGUgZm9sZFJvb3Q6IGJvb2xlYW5cbiAgKSB7XG4gICAgdGhpcy5saW5lcy5wdXNoKGZpcnN0TGluZSk7XG4gIH1cblxuICBnZXROb3Rlc0luZGVudCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5ub3Rlc0luZGVudDtcbiAgfVxuXG4gIHNldE5vdGVzSW5kZW50KG5vdGVzSW5kZW50OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5ub3Rlc0luZGVudCAhPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb3RlcyBpbmRlbnQgYWxyZWFkeSBwcm92aWRlZGApO1xuICAgIH1cbiAgICB0aGlzLm5vdGVzSW5kZW50ID0gbm90ZXNJbmRlbnQ7XG4gIH1cblxuICBhZGRMaW5lKHRleHQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm5vdGVzSW5kZW50ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBVbmFibGUgdG8gYWRkIGxpbmUsIG5vdGVzIGluZGVudCBzaG91bGQgYmUgcHJvdmlkZWQgZmlyc3RgXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMubGluZXMucHVzaCh0ZXh0KTtcbiAgfVxuXG4gIHJlcGxhY2VMaW5lcyhsaW5lczogc3RyaW5nW10pIHtcbiAgICBpZiAobGluZXMubGVuZ3RoID4gMSAmJiB0aGlzLm5vdGVzSW5kZW50ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBVbmFibGUgdG8gYWRkIGxpbmUsIG5vdGVzIGluZGVudCBzaG91bGQgYmUgcHJvdmlkZWQgZmlyc3RgXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMubGluZXMgPSBsaW5lcztcbiAgfVxuXG4gIGdldExpbmVDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5saW5lcy5sZW5ndGg7XG4gIH1cblxuICBnZXRSb290KCkge1xuICAgIHJldHVybiB0aGlzLnJvb3Q7XG4gIH1cblxuICBnZXRDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZHJlbi5jb25jYXQoKTtcbiAgfVxuXG4gIGdldExpbmVzSW5mbygpOiBMaXN0TGluZVtdIHtcbiAgICBjb25zdCBzdGFydExpbmUgPSB0aGlzLnJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZih0aGlzKVswXTtcblxuICAgIHJldHVybiB0aGlzLmxpbmVzLm1hcCgocm93LCBpKSA9PiB7XG4gICAgICBjb25zdCBsaW5lID0gc3RhcnRMaW5lICsgaTtcbiAgICAgIGNvbnN0IHN0YXJ0Q2ggPVxuICAgICAgICBpID09PSAwID8gdGhpcy5nZXRDb250ZW50U3RhcnRDaCgpIDogdGhpcy5ub3Rlc0luZGVudC5sZW5ndGg7XG4gICAgICBjb25zdCBlbmRDaCA9IHN0YXJ0Q2ggKyByb3cubGVuZ3RoO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0ZXh0OiByb3csXG4gICAgICAgIGZyb206IHsgbGluZSwgY2g6IHN0YXJ0Q2ggfSxcbiAgICAgICAgdG86IHsgbGluZSwgY2g6IGVuZENoIH0sXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0TGluZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmxpbmVzLmNvbmNhdCgpO1xuICB9XG5cbiAgZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkge1xuICAgIGNvbnN0IHN0YXJ0TGluZSA9IHRoaXMucm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKHRoaXMpWzBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IHN0YXJ0TGluZSxcbiAgICAgIGNoOiB0aGlzLmdldENvbnRlbnRTdGFydENoKCksXG4gICAgfTtcbiAgfVxuXG4gIGdldExhc3RMaW5lQ29udGVudEVuZCgpIHtcbiAgICBjb25zdCBlbmRMaW5lID0gdGhpcy5yb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YodGhpcylbMV07XG4gICAgY29uc3QgZW5kQ2ggPVxuICAgICAgdGhpcy5saW5lcy5sZW5ndGggPT09IDFcbiAgICAgICAgPyB0aGlzLmdldENvbnRlbnRTdGFydENoKCkgKyB0aGlzLmxpbmVzWzBdLmxlbmd0aFxuICAgICAgICA6IHRoaXMubm90ZXNJbmRlbnQubGVuZ3RoICsgdGhpcy5saW5lc1t0aGlzLmxpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aDtcblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBlbmRMaW5lLFxuICAgICAgY2g6IGVuZENoLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRlbnRTdGFydENoKCkge1xuICAgIHJldHVybiB0aGlzLmluZGVudC5sZW5ndGggKyB0aGlzLmJ1bGxldC5sZW5ndGggKyAxO1xuICB9XG5cbiAgaXNGb2xkZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZm9sZFJvb3QpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyZW50LmlzRm9sZGVkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNGb2xkUm9vdCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb2xkUm9vdDtcbiAgfVxuXG4gIGdldFRvcEZvbGRSb290KCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuICAgIGxldCB0bXA6IExpc3QgPSB0aGlzO1xuICAgIGxldCBmb2xkUm9vdDogTGlzdCB8IG51bGwgPSBudWxsO1xuICAgIHdoaWxlICh0bXApIHtcbiAgICAgIGlmICh0bXAuaXNGb2xkUm9vdCgpKSB7XG4gICAgICAgIGZvbGRSb290ID0gdG1wO1xuICAgICAgfVxuICAgICAgdG1wID0gdG1wLnBhcmVudDtcbiAgICB9XG4gICAgcmV0dXJuIGZvbGRSb290O1xuICB9XG5cbiAgZ2V0TGV2ZWwoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMucGFyZW50KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuZ2V0TGV2ZWwoKSArIDE7XG4gIH1cblxuICB1bmluZGVudENvbnRlbnQoZnJvbTogbnVtYmVyLCB0aWxsOiBudW1iZXIpIHtcbiAgICB0aGlzLmluZGVudCA9IHRoaXMuaW5kZW50LnNsaWNlKDAsIGZyb20pICsgdGhpcy5pbmRlbnQuc2xpY2UodGlsbCk7XG4gICAgaWYgKHRoaXMubm90ZXNJbmRlbnQgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubm90ZXNJbmRlbnQgPVxuICAgICAgICB0aGlzLm5vdGVzSW5kZW50LnNsaWNlKDAsIGZyb20pICsgdGhpcy5ub3Rlc0luZGVudC5zbGljZSh0aWxsKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGRyZW4pIHtcbiAgICAgIGNoaWxkLnVuaW5kZW50Q29udGVudChmcm9tLCB0aWxsKTtcbiAgICB9XG4gIH1cblxuICBpbmRlbnRDb250ZW50KGluZGVudFBvczogbnVtYmVyLCBpbmRlbnRDaGFyczogc3RyaW5nKSB7XG4gICAgdGhpcy5pbmRlbnQgPVxuICAgICAgdGhpcy5pbmRlbnQuc2xpY2UoMCwgaW5kZW50UG9zKSArXG4gICAgICBpbmRlbnRDaGFycyArXG4gICAgICB0aGlzLmluZGVudC5zbGljZShpbmRlbnRQb3MpO1xuICAgIGlmICh0aGlzLm5vdGVzSW5kZW50ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLm5vdGVzSW5kZW50ID1cbiAgICAgICAgdGhpcy5ub3Rlc0luZGVudC5zbGljZSgwLCBpbmRlbnRQb3MpICtcbiAgICAgICAgaW5kZW50Q2hhcnMgK1xuICAgICAgICB0aGlzLm5vdGVzSW5kZW50LnNsaWNlKGluZGVudFBvcyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkcmVuKSB7XG4gICAgICBjaGlsZC5pbmRlbnRDb250ZW50KGluZGVudFBvcywgaW5kZW50Q2hhcnMpO1xuICAgIH1cbiAgfVxuXG4gIGdldEZpcnN0TGluZUluZGVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbmRlbnQ7XG4gIH1cblxuICBnZXRCdWxsZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVsbGV0O1xuICB9XG5cbiAgZ2V0U3BhY2VBZnRlckJ1bGxldCgpIHtcbiAgICByZXR1cm4gdGhpcy5zcGFjZUFmdGVyQnVsbGV0O1xuICB9XG5cbiAgcmVwbGF0ZUJ1bGxldChidWxsZXQ6IHN0cmluZykge1xuICAgIHRoaXMuYnVsbGV0ID0gYnVsbGV0O1xuICB9XG5cbiAgZ2V0UGFyZW50KCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgfVxuXG4gIGFkZEJlZm9yZUFsbChsaXN0OiBMaXN0KSB7XG4gICAgdGhpcy5jaGlsZHJlbi51bnNoaWZ0KGxpc3QpO1xuICAgIGxpc3QucGFyZW50ID0gdGhpcztcbiAgfVxuXG4gIGFkZEFmdGVyQWxsKGxpc3Q6IExpc3QpIHtcbiAgICB0aGlzLmNoaWxkcmVuLnB1c2gobGlzdCk7XG4gICAgbGlzdC5wYXJlbnQgPSB0aGlzO1xuICB9XG5cbiAgcmVtb3ZlQ2hpbGQobGlzdDogTGlzdCkge1xuICAgIGNvbnN0IGkgPSB0aGlzLmNoaWxkcmVuLmluZGV4T2YobGlzdCk7XG4gICAgdGhpcy5jaGlsZHJlbi5zcGxpY2UoaSwgMSk7XG4gICAgbGlzdC5wYXJlbnQgPSBudWxsO1xuICB9XG5cbiAgYWRkQmVmb3JlKGJlZm9yZTogTGlzdCwgbGlzdDogTGlzdCkge1xuICAgIGNvbnN0IGkgPSB0aGlzLmNoaWxkcmVuLmluZGV4T2YoYmVmb3JlKTtcbiAgICB0aGlzLmNoaWxkcmVuLnNwbGljZShpLCAwLCBsaXN0KTtcbiAgICBsaXN0LnBhcmVudCA9IHRoaXM7XG4gIH1cblxuICBhZGRBZnRlcihiZWZvcmU6IExpc3QsIGxpc3Q6IExpc3QpIHtcbiAgICBjb25zdCBpID0gdGhpcy5jaGlsZHJlbi5pbmRleE9mKGJlZm9yZSk7XG4gICAgdGhpcy5jaGlsZHJlbi5zcGxpY2UoaSArIDEsIDAsIGxpc3QpO1xuICAgIGxpc3QucGFyZW50ID0gdGhpcztcbiAgfVxuXG4gIGdldFByZXZTaWJsaW5nT2YobGlzdDogTGlzdCkge1xuICAgIGNvbnN0IGkgPSB0aGlzLmNoaWxkcmVuLmluZGV4T2YobGlzdCk7XG4gICAgcmV0dXJuIGkgPiAwID8gdGhpcy5jaGlsZHJlbltpIC0gMV0gOiBudWxsO1xuICB9XG5cbiAgZ2V0TmV4dFNpYmxpbmdPZihsaXN0OiBMaXN0KSB7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZihsaXN0KTtcbiAgICByZXR1cm4gaSA+PSAwICYmIGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aCA/IHRoaXMuY2hpbGRyZW5baSArIDFdIDogbnVsbDtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgcHJpbnQoKSB7XG4gICAgbGV0IHJlcyA9IFwiXCI7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlcyArPVxuICAgICAgICBpID09PSAwXG4gICAgICAgICAgPyB0aGlzLmluZGVudCArIHRoaXMuYnVsbGV0ICsgdGhpcy5zcGFjZUFmdGVyQnVsbGV0XG4gICAgICAgICAgOiB0aGlzLm5vdGVzSW5kZW50O1xuICAgICAgcmVzICs9IHRoaXMubGluZXNbaV07XG4gICAgICByZXMgKz0gXCJcXG5cIjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGRyZW4pIHtcbiAgICAgIHJlcyArPSBjaGlsZC5wcmludCgpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJvb3Qge1xuICBwcml2YXRlIHJvb3RMaXN0ID0gbmV3IExpc3QodGhpcywgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgZmFsc2UpO1xuICBwcml2YXRlIHNlbGVjdGlvbnM6IFJhbmdlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0YXJ0OiBQb3NpdGlvbixcbiAgICBwcml2YXRlIGVuZDogUG9zaXRpb24sXG4gICAgc2VsZWN0aW9uczogUmFuZ2VbXVxuICApIHtcbiAgICB0aGlzLnJlcGxhY2VTZWxlY3Rpb25zKHNlbGVjdGlvbnMpO1xuICB9XG5cbiAgZ2V0Um9vdExpc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMucm9vdExpc3Q7XG4gIH1cblxuICBnZXRSYW5nZSgpOiBbUG9zaXRpb24sIFBvc2l0aW9uXSB7XG4gICAgcmV0dXJuIFt7IC4uLnRoaXMuc3RhcnQgfSwgeyAuLi50aGlzLmVuZCB9XTtcbiAgfVxuXG4gIGdldFNlbGVjdGlvbnMoKTogUmFuZ2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9ucy5tYXAoKHMpID0+ICh7XG4gICAgICBhbmNob3I6IHsgLi4ucy5hbmNob3IgfSxcbiAgICAgIGhlYWQ6IHsgLi4ucy5oZWFkIH0sXG4gICAgfSkpO1xuICB9XG5cbiAgaGFzU2luZ2xlQ3Vyc29yKCkge1xuICAgIGlmICghdGhpcy5oYXNTaW5nbGVTZWxlY3Rpb24oKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uc1swXTtcblxuICAgIHJldHVybiAoXG4gICAgICBzZWxlY3Rpb24uYW5jaG9yLmxpbmUgPT09IHNlbGVjdGlvbi5oZWFkLmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvbi5hbmNob3IuY2ggPT09IHNlbGVjdGlvbi5oZWFkLmNoXG4gICAgKTtcbiAgfVxuXG4gIGhhc1NpbmdsZVNlbGVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25zLmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIGdldFNlbGVjdGlvbigpIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbnNbdGhpcy5zZWxlY3Rpb25zLmxlbmd0aCAtIDFdO1xuXG4gICAgY29uc3QgZnJvbSA9XG4gICAgICBzZWxlY3Rpb24uYW5jaG9yLmNoID4gc2VsZWN0aW9uLmhlYWQuY2hcbiAgICAgICAgPyBzZWxlY3Rpb24uaGVhZC5jaFxuICAgICAgICA6IHNlbGVjdGlvbi5hbmNob3IuY2g7XG4gICAgY29uc3QgdG8gPVxuICAgICAgc2VsZWN0aW9uLmFuY2hvci5jaCA+IHNlbGVjdGlvbi5oZWFkLmNoXG4gICAgICAgID8gc2VsZWN0aW9uLmFuY2hvci5jaFxuICAgICAgICA6IHNlbGVjdGlvbi5oZWFkLmNoO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnNlbGVjdGlvbixcbiAgICAgIGZyb20sXG4gICAgICB0byxcbiAgICB9O1xuICB9XG5cbiAgZ2V0Q3Vyc29yKCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuc2VsZWN0aW9uc1t0aGlzLnNlbGVjdGlvbnMubGVuZ3RoIC0gMV0uaGVhZCB9O1xuICB9XG5cbiAgcmVwbGFjZUN1cnNvcihjdXJzb3I6IFBvc2l0aW9uKSB7XG4gICAgdGhpcy5zZWxlY3Rpb25zID0gW3sgYW5jaG9yOiBjdXJzb3IsIGhlYWQ6IGN1cnNvciB9XTtcbiAgfVxuXG4gIHJlcGxhY2VTZWxlY3Rpb25zKHNlbGVjdGlvbnM6IFJhbmdlW10pIHtcbiAgICBpZiAoc2VsZWN0aW9ucy5sZW5ndGggPCAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBjcmVhdGUgUm9vdCB3aXRob3V0IHNlbGVjdGlvbnNgKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3Rpb25zID0gc2VsZWN0aW9ucztcbiAgfVxuXG4gIGdldExpc3RVbmRlckN1cnNvcigpOiBMaXN0IHtcbiAgICByZXR1cm4gdGhpcy5nZXRMaXN0VW5kZXJMaW5lKHRoaXMuZ2V0Q3Vyc29yKCkubGluZSk7XG4gIH1cblxuICBnZXRMaXN0VW5kZXJMaW5lKGxpbmU6IG51bWJlcikge1xuICAgIGlmIChsaW5lIDwgdGhpcy5zdGFydC5saW5lIHx8IGxpbmUgPiB0aGlzLmVuZC5saW5lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdDogTGlzdCA9IG51bGw7XG4gICAgbGV0IGluZGV4OiBudW1iZXIgPSB0aGlzLnN0YXJ0LmxpbmU7XG5cbiAgICBjb25zdCB2aXNpdEFyciA9IChsbDogTGlzdFtdKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGwgb2YgbGwpIHtcbiAgICAgICAgY29uc3QgbGlzdEZyb21MaW5lID0gaW5kZXg7XG4gICAgICAgIGNvbnN0IGxpc3RUaWxsTGluZSA9IGxpc3RGcm9tTGluZSArIGwuZ2V0TGluZUNvdW50KCkgLSAxO1xuXG4gICAgICAgIGlmIChsaW5lID49IGxpc3RGcm9tTGluZSAmJiBsaW5lIDw9IGxpc3RUaWxsTGluZSkge1xuICAgICAgICAgIHJlc3VsdCA9IGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5kZXggPSBsaXN0VGlsbExpbmUgKyAxO1xuICAgICAgICAgIHZpc2l0QXJyKGwuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB2aXNpdEFycih0aGlzLnJvb3RMaXN0LmdldENoaWxkcmVuKCkpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdDogTGlzdCk6IFtudW1iZXIsIG51bWJlcl0gfCBudWxsIHtcbiAgICBsZXQgcmVzdWx0OiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGxpbmU6IG51bWJlciA9IHRoaXMuc3RhcnQubGluZTtcblxuICAgIGNvbnN0IHZpc2l0QXJyID0gKGxsOiBMaXN0W10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgbCBvZiBsbCkge1xuICAgICAgICBjb25zdCBsaXN0RnJvbUxpbmUgPSBsaW5lO1xuICAgICAgICBjb25zdCBsaXN0VGlsbExpbmUgPSBsaXN0RnJvbUxpbmUgKyBsLmdldExpbmVDb3VudCgpIC0gMTtcblxuICAgICAgICBpZiAobCA9PT0gbGlzdCkge1xuICAgICAgICAgIHJlc3VsdCA9IFtsaXN0RnJvbUxpbmUsIGxpc3RUaWxsTGluZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGluZSA9IGxpc3RUaWxsTGluZSArIDE7XG4gICAgICAgICAgdmlzaXRBcnIobC5nZXRDaGlsZHJlbigpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmlzaXRBcnIodGhpcy5yb290TGlzdC5nZXRDaGlsZHJlbigpKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5yb290TGlzdC5nZXRDaGlsZHJlbigpO1xuICB9XG5cbiAgcHJpbnQoKSB7XG4gICAgbGV0IHJlcyA9IFwiXCI7XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMucm9vdExpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgcmVzICs9IGNoaWxkLnByaW50KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5yZXBsYWNlKC9cXG4kLywgXCJcIik7XG4gIH1cbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBMaXN0LCBQb3NpdGlvbiwgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzIH0gZnJvbSBcIi4uL3Jvb3QvcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0c1wiO1xuaW1wb3J0IHsgaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3ggfSBmcm9tIFwiLi4vdXRpbHMvaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3hcIjtcblxuZXhwb3J0IGludGVyZmFjZSBHZXRab29tUmFuZ2Uge1xuICBnZXRab29tUmFuZ2UoKTogeyBmcm9tOiBQb3NpdGlvbjsgdG86IFBvc2l0aW9uIH0gfCBudWxsO1xufVxuXG5leHBvcnQgY2xhc3MgQ3JlYXRlTmV3SXRlbU9wZXJhdGlvbiBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm9vdDogUm9vdCxcbiAgICBwcml2YXRlIGRlZmF1bHRJbmRlbnRDaGFyczogc3RyaW5nLFxuICAgIHByaXZhdGUgZ2V0Wm9vbVJhbmdlOiBHZXRab29tUmFuZ2VcbiAgKSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZVNlbGVjdGlvbigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gcm9vdC5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoIXNlbGVjdGlvbiB8fCBzZWxlY3Rpb24uYW5jaG9yLmxpbmUgIT09IHNlbGVjdGlvbi5oZWFkLmxpbmUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lcyA9IGxpc3QuZ2V0TGluZXNJbmZvKCk7XG5cbiAgICBpZiAobGluZXMubGVuZ3RoID09PSAxICYmIGlzRW1wdHlMaW5lT3JFbXB0eUNoZWNrYm94KGxpbmVzWzBdLnRleHQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lVW5kZXJDdXJzb3IgPSBsaW5lcy5maW5kKChsKSA9PiBsLmZyb20ubGluZSA9PT0gY3Vyc29yLmxpbmUpO1xuXG4gICAgaWYgKGN1cnNvci5jaCA8IGxpbmVVbmRlckN1cnNvci5mcm9tLmNoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBvbGRMaW5lcywgbmV3TGluZXMgfSA9IGxpbmVzLnJlZHVjZShcbiAgICAgIChhY2MsIGxpbmUpID0+IHtcbiAgICAgICAgaWYgKGN1cnNvci5saW5lID4gbGluZS5mcm9tLmxpbmUpIHtcbiAgICAgICAgICBhY2Mub2xkTGluZXMucHVzaChsaW5lLnRleHQpO1xuICAgICAgICB9IGVsc2UgaWYgKGN1cnNvci5saW5lID09PSBsaW5lLmZyb20ubGluZSkge1xuICAgICAgICAgIGNvbnN0IGxlZnQgPSBsaW5lLnRleHQuc2xpY2UoMCwgc2VsZWN0aW9uLmZyb20gLSBsaW5lLmZyb20uY2gpO1xuICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gbGluZS50ZXh0LnNsaWNlKHNlbGVjdGlvbi50byAtIGxpbmUuZnJvbS5jaCk7XG4gICAgICAgICAgYWNjLm9sZExpbmVzLnB1c2gobGVmdCk7XG4gICAgICAgICAgYWNjLm5ld0xpbmVzLnB1c2gocmlnaHQpO1xuICAgICAgICB9IGVsc2UgaWYgKGN1cnNvci5saW5lIDwgbGluZS5mcm9tLmxpbmUpIHtcbiAgICAgICAgICBhY2MubmV3TGluZXMucHVzaChsaW5lLnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9sZExpbmVzOiBbXSxcbiAgICAgICAgbmV3TGluZXM6IFtdLFxuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBjb2RlQmxvY2tCYWN0aWNrcyA9IG9sZExpbmVzLmpvaW4oXCJcXG5cIikuc3BsaXQoXCJgYGBcIikubGVuZ3RoIC0gMTtcbiAgICBjb25zdCBpc0luc2lkZUNvZGVibG9jayA9XG4gICAgICBjb2RlQmxvY2tCYWN0aWNrcyA+IDAgJiYgY29kZUJsb2NrQmFjdGlja3MgJSAyICE9PSAwO1xuXG4gICAgaWYgKGlzSW5zaWRlQ29kZWJsb2NrKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBjb25zdCB6b29tUmFuZ2UgPSB0aGlzLmdldFpvb21SYW5nZS5nZXRab29tUmFuZ2UoKTtcbiAgICBjb25zdCBsaXN0SXNab29taW5nUm9vdCA9IEJvb2xlYW4oXG4gICAgICB6b29tUmFuZ2UgJiZcbiAgICAgICAgbGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lID49IHpvb21SYW5nZS5mcm9tLmxpbmUgJiZcbiAgICAgICAgbGlzdC5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKS5saW5lIDw9IHpvb21SYW5nZS5mcm9tLmxpbmVcbiAgICApO1xuXG4gICAgY29uc3QgaGFzQ2hpbGRyZW4gPSAhbGlzdC5pc0VtcHR5KCk7XG4gICAgY29uc3QgY2hpbGRJc0ZvbGRlZCA9IGxpc3QuaXNGb2xkUm9vdCgpO1xuICAgIGNvbnN0IGVuZFBvcyA9IGxpc3QuZ2V0TGFzdExpbmVDb250ZW50RW5kKCk7XG4gICAgY29uc3QgZW5kT2ZMaW5lID0gY3Vyc29yLmxpbmUgPT09IGVuZFBvcy5saW5lICYmIGN1cnNvci5jaCA9PT0gZW5kUG9zLmNoO1xuXG4gICAgY29uc3Qgb25DaGlsZExldmVsID1cbiAgICAgIGxpc3RJc1pvb21pbmdSb290IHx8IChoYXNDaGlsZHJlbiAmJiAhY2hpbGRJc0ZvbGRlZCAmJiBlbmRPZkxpbmUpO1xuXG4gICAgY29uc3QgaW5kZW50ID0gb25DaGlsZExldmVsXG4gICAgICA/IGhhc0NoaWxkcmVuXG4gICAgICAgID8gbGlzdC5nZXRDaGlsZHJlbigpWzBdLmdldEZpcnN0TGluZUluZGVudCgpXG4gICAgICAgIDogbGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKSArIHRoaXMuZGVmYXVsdEluZGVudENoYXJzXG4gICAgICA6IGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCk7XG5cbiAgICBjb25zdCBidWxsZXQgPVxuICAgICAgb25DaGlsZExldmVsICYmIGhhc0NoaWxkcmVuXG4gICAgICAgID8gbGlzdC5nZXRDaGlsZHJlbigpWzBdLmdldEJ1bGxldCgpXG4gICAgICAgIDogbGlzdC5nZXRCdWxsZXQoKTtcblxuICAgIGNvbnN0IHNwYWNlQWZ0ZXJCdWxsZXQgPVxuICAgICAgb25DaGlsZExldmVsICYmIGhhc0NoaWxkcmVuXG4gICAgICAgID8gbGlzdC5nZXRDaGlsZHJlbigpWzBdLmdldFNwYWNlQWZ0ZXJCdWxsZXQoKVxuICAgICAgICA6IGxpc3QuZ2V0U3BhY2VBZnRlckJ1bGxldCgpO1xuXG4gICAgY29uc3QgcHJlZml4ID0gb2xkTGluZXNbMF0ubWF0Y2goL15cXFsuXFxdLykgPyBcIlsgXSBcIiA6IFwiXCI7XG5cbiAgICBjb25zdCBuZXdMaXN0ID0gbmV3IExpc3QoXG4gICAgICBsaXN0LmdldFJvb3QoKSxcbiAgICAgIGluZGVudCxcbiAgICAgIGJ1bGxldCxcbiAgICAgIHNwYWNlQWZ0ZXJCdWxsZXQsXG4gICAgICBwcmVmaXggKyBuZXdMaW5lcy5zaGlmdCgpLFxuICAgICAgZmFsc2VcbiAgICApO1xuXG4gICAgaWYgKG5ld0xpbmVzLmxlbmd0aCA+IDApIHtcbiAgICAgIG5ld0xpc3Quc2V0Tm90ZXNJbmRlbnQobGlzdC5nZXROb3Rlc0luZGVudCgpKTtcbiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBuZXdMaW5lcykge1xuICAgICAgICBuZXdMaXN0LmFkZExpbmUobGluZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9uQ2hpbGRMZXZlbCkge1xuICAgICAgbGlzdC5hZGRCZWZvcmVBbGwobmV3TGlzdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghY2hpbGRJc0ZvbGRlZCB8fCAhZW5kT2ZMaW5lKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gbGlzdC5nZXRDaGlsZHJlbigpO1xuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgICAgICAgbGlzdC5yZW1vdmVDaGlsZChjaGlsZCk7XG4gICAgICAgICAgbmV3TGlzdC5hZGRBZnRlckFsbChjaGlsZCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGlzdC5nZXRQYXJlbnQoKS5hZGRBZnRlcihsaXN0LCBuZXdMaXN0KTtcbiAgICB9XG5cbiAgICBsaXN0LnJlcGxhY2VMaW5lcyhvbGRMaW5lcyk7XG5cbiAgICBjb25zdCBuZXdMaXN0U3RhcnQgPSBuZXdMaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpO1xuICAgIHJvb3QucmVwbGFjZUN1cnNvcih7XG4gICAgICBsaW5lOiBuZXdMaXN0U3RhcnQubGluZSxcbiAgICAgIGNoOiBuZXdMaXN0U3RhcnQuY2ggKyBwcmVmaXgubGVuZ3RoLFxuICAgIH0pO1xuXG4gICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgUHJlYyB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsga2V5bWFwIH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vTXlFZGl0b3JcIjtcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi4vZmVhdHVyZXMvRmVhdHVyZVwiO1xuaW1wb3J0IHsgQ3JlYXRlTmV3SXRlbU9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL0NyZWF0ZU5ld0l0ZW1PcGVyYXRpb25cIjtcbmltcG9ydCB7IElNRVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FU2VydmljZVwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2VydmljZVwiO1xuaW1wb3J0IHsgUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcIjtcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1NlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIEVudGVyU2hvdWxkQ3JlYXRlTmV3SXRlbUZlYXR1cmUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIGltZTogSU1FU2VydmljZSxcbiAgICBwcml2YXRlIG9ic2lkaWFuOiBPYnNpZGlhblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJmb3JtT3BlcmF0aW9uOiBQZXJmb3JtT3BlcmF0aW9uU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIFByZWMuaGlnaGVzdChcbiAgICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFwiRW50ZXJcIixcbiAgICAgICAgICAgIHJ1bjogdGhpcy5vYnNpZGlhbi5jcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgICBydW46IHRoaXMucnVuLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIGNoZWNrID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLmJldHRlckVudGVyICYmICF0aGlzLmltZS5pc0lNRU9wZW5lZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBjb25zdCB6b29tUmFuZ2UgPSBlZGl0b3IuZ2V0Wm9vbVJhbmdlKCk7XG5cbiAgICBjb25zdCByZXMgPSB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PlxuICAgICAgICBuZXcgQ3JlYXRlTmV3SXRlbU9wZXJhdGlvbihcbiAgICAgICAgICByb290LFxuICAgICAgICAgIHRoaXMub2JzaWRpYW4uZ2V0RGVmYXVsdEluZGVudENoYXJzKCksXG4gICAgICAgICAge1xuICAgICAgICAgICAgZ2V0Wm9vbVJhbmdlOiAoKSA9PiB6b29tUmFuZ2UsXG4gICAgICAgICAgfVxuICAgICAgICApLFxuICAgICAgZWRpdG9yXG4gICAgKTtcblxuICAgIGlmIChyZXMuc2hvdWxkVXBkYXRlICYmIHpvb21SYW5nZSkge1xuICAgICAgZWRpdG9yLnpvb21Jbih6b29tUmFuZ2UuZnJvbS5saW5lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgTm90aWNlLCBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9NeUVkaXRvclwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2VydmljZVwiO1xuXG5leHBvcnQgY2xhc3MgRm9sZEZlYXR1cmUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLCBwcml2YXRlIG9ic2lkaWFuOiBPYnNpZGlhblNlcnZpY2UpIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcImZvbGRcIixcbiAgICAgIGljb246IFwiY2hldnJvbnMtZG93bi11cFwiLFxuICAgICAgbmFtZTogXCJGb2xkIHRoZSBsaXN0XCIsXG4gICAgICBlZGl0b3JDYWxsYmFjazogdGhpcy5vYnNpZGlhbi5jcmVhdGVFZGl0b3JDYWxsYmFjayh0aGlzLmZvbGQpLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXCJNb2RcIl0sXG4gICAgICAgICAga2V5OiBcIkFycm93VXBcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcInVuZm9sZFwiLFxuICAgICAgaWNvbjogXCJjaGV2cm9ucy11cC1kb3duXCIsXG4gICAgICBuYW1lOiBcIlVuZm9sZCB0aGUgbGlzdFwiLFxuICAgICAgZWRpdG9yQ2FsbGJhY2s6IHRoaXMub2JzaWRpYW4uY3JlYXRlRWRpdG9yQ2FsbGJhY2sodGhpcy51bmZvbGQpLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXCJNb2RcIl0sXG4gICAgICAgICAga2V5OiBcIkFycm93RG93blwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBzZXRGb2xkKGVkaXRvcjogTXlFZGl0b3IsIHR5cGU6IFwiZm9sZFwiIHwgXCJ1bmZvbGRcIikge1xuICAgIGlmICghdGhpcy5vYnNpZGlhbi5nZXRPYnNpZGlhbkZvbGRTZXR0aW5ncygpLmZvbGRJbmRlbnQpIHtcbiAgICAgIG5ldyBOb3RpY2UoXG4gICAgICAgIGBVbmFibGUgdG8gJHt0eXBlfSBiZWNhdXNlIGZvbGRpbmcgaXMgZGlzYWJsZWQuIFBsZWFzZSBlbmFibGUgXCJGb2xkIGluZGVudFwiIGluIE9ic2lkaWFuIHNldHRpbmdzLmAsXG4gICAgICAgIDUwMDBcbiAgICAgICk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJzb3IgPSBlZGl0b3IuZ2V0Q3Vyc29yKCk7XG5cbiAgICBpZiAodHlwZSA9PT0gXCJmb2xkXCIpIHtcbiAgICAgIGVkaXRvci5mb2xkKGN1cnNvci5saW5lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWRpdG9yLnVuZm9sZChjdXJzb3IubGluZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGZvbGQgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLnNldEZvbGQoZWRpdG9yLCBcImZvbGRcIik7XG4gIH07XG5cbiAgcHJpdmF0ZSB1bmZvbGQgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLnNldEZvbGQoZWRpdG9yLCBcInVuZm9sZFwiKTtcbiAgfTtcbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7XG4gIGZvbGRFZmZlY3QsXG4gIGZvbGRhYmxlLFxuICBmb2xkZWRSYW5nZXMsXG4gIHVuZm9sZEVmZmVjdCxcbn0gZnJvbSBcIkBjb2RlbWlycm9yL2xhbmd1YWdlXCI7XG5pbXBvcnQgeyBFZGl0b3JWaWV3LCBydW5TY29wZUhhbmRsZXJzIH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuZXhwb3J0IGNsYXNzIE15RWRpdG9yUG9zaXRpb24ge1xuICBsaW5lOiBudW1iZXI7XG4gIGNoOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBNeUVkaXRvclJhbmdlIHtcbiAgZnJvbTogTXlFZGl0b3JQb3NpdGlvbjtcbiAgdG86IE15RWRpdG9yUG9zaXRpb247XG59XG5cbmV4cG9ydCBjbGFzcyBNeUVkaXRvclNlbGVjdGlvbiB7XG4gIGFuY2hvcjogTXlFZGl0b3JQb3NpdGlvbjtcbiAgaGVhZDogTXlFZGl0b3JQb3NpdGlvbjtcbn1cblxuZnVuY3Rpb24gZm9sZEluc2lkZSh2aWV3OiBFZGl0b3JWaWV3LCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpIHtcbiAgbGV0IGZvdW5kOiB7IGZyb206IG51bWJlcjsgdG86IG51bWJlciB9IHwgbnVsbCA9IG51bGw7XG4gIGZvbGRlZFJhbmdlcyh2aWV3LnN0YXRlKS5iZXR3ZWVuKGZyb20sIHRvLCAoZnJvbSwgdG8pID0+IHtcbiAgICBpZiAoIWZvdW5kIHx8IGZvdW5kLmZyb20gPiBmcm9tKSBmb3VuZCA9IHsgZnJvbSwgdG8gfTtcbiAgfSk7XG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGNsYXNzIE15RWRpdG9yIHtcbiAgcHJpdmF0ZSB2aWV3OiBFZGl0b3JWaWV3O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZTogRWRpdG9yKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICB0aGlzLnZpZXcgPSAodGhpcy5lIGFzIGFueSkuY207XG4gIH1cblxuICBnZXRDdXJzb3IoKTogTXlFZGl0b3JQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZS5nZXRDdXJzb3IoKTtcbiAgfVxuXG4gIGdldExpbmUobjogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5lLmdldExpbmUobik7XG4gIH1cblxuICBsYXN0TGluZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmUubGFzdExpbmUoKTtcbiAgfVxuXG4gIGxpc3RTZWxlY3Rpb25zKCk6IE15RWRpdG9yU2VsZWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLmUubGlzdFNlbGVjdGlvbnMoKTtcbiAgfVxuXG4gIGdldFJhbmdlKGZyb206IE15RWRpdG9yUG9zaXRpb24sIHRvOiBNeUVkaXRvclBvc2l0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5lLmdldFJhbmdlKGZyb20sIHRvKTtcbiAgfVxuXG4gIHJlcGxhY2VSYW5nZShcbiAgICByZXBsYWNlbWVudDogc3RyaW5nLFxuICAgIGZyb206IE15RWRpdG9yUG9zaXRpb24sXG4gICAgdG86IE15RWRpdG9yUG9zaXRpb25cbiAgKTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuZS5yZXBsYWNlUmFuZ2UocmVwbGFjZW1lbnQsIGZyb20sIHRvKTtcbiAgfVxuXG4gIHNldFNlbGVjdGlvbnMoc2VsZWN0aW9uczogTXlFZGl0b3JTZWxlY3Rpb25bXSk6IHZvaWQge1xuICAgIHRoaXMuZS5zZXRTZWxlY3Rpb25zKHNlbGVjdGlvbnMpO1xuICB9XG5cbiAgc2V0VmFsdWUodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5lLnNldFZhbHVlKHRleHQpO1xuICB9XG5cbiAgZ2V0VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5lLmdldFZhbHVlKCk7XG4gIH1cblxuICBvZmZzZXRUb1BvcyhvZmZzZXQ6IG51bWJlcik6IE15RWRpdG9yUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmUub2Zmc2V0VG9Qb3Mob2Zmc2V0KTtcbiAgfVxuXG4gIHBvc1RvT2Zmc2V0KHBvczogTXlFZGl0b3JQb3NpdGlvbik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZS5wb3NUb09mZnNldChwb3MpO1xuICB9XG5cbiAgZm9sZChuOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB7IHZpZXcgfSA9IHRoaXM7XG4gICAgY29uc3QgbCA9IHZpZXcubGluZUJsb2NrQXQodmlldy5zdGF0ZS5kb2MubGluZShuICsgMSkuZnJvbSk7XG4gICAgY29uc3QgcmFuZ2UgPSBmb2xkYWJsZSh2aWV3LnN0YXRlLCBsLmZyb20sIGwudG8pO1xuXG4gICAgaWYgKCFyYW5nZSB8fCByYW5nZS5mcm9tID09PSByYW5nZS50bykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZpZXcuZGlzcGF0Y2goeyBlZmZlY3RzOiBbZm9sZEVmZmVjdC5vZihyYW5nZSldIH0pO1xuICB9XG5cbiAgdW5mb2xkKG46IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgdmlldyB9ID0gdGhpcztcbiAgICBjb25zdCBsID0gdmlldy5saW5lQmxvY2tBdCh2aWV3LnN0YXRlLmRvYy5saW5lKG4gKyAxKS5mcm9tKTtcbiAgICBjb25zdCByYW5nZSA9IGZvbGRJbnNpZGUodmlldywgbC5mcm9tLCBsLnRvKTtcblxuICAgIGlmICghcmFuZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2aWV3LmRpc3BhdGNoKHsgZWZmZWN0czogW3VuZm9sZEVmZmVjdC5vZihyYW5nZSldIH0pO1xuICB9XG5cbiAgZ2V0QWxsRm9sZGVkTGluZXMoKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IGMgPSBmb2xkZWRSYW5nZXModGhpcy52aWV3LnN0YXRlKS5pdGVyKCk7XG4gICAgY29uc3QgcmVzOiBudW1iZXJbXSA9IFtdO1xuICAgIHdoaWxlIChjLnZhbHVlKSB7XG4gICAgICByZXMucHVzaCh0aGlzLm9mZnNldFRvUG9zKGMuZnJvbSkubGluZSk7XG4gICAgICBjLm5leHQoKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHRyaWdnZXJPbktleURvd24oZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHJ1blNjb3BlSGFuZGxlcnModGhpcy52aWV3LCBlLCBcImVkaXRvclwiKTtcbiAgfVxuXG4gIGdldFpvb21SYW5nZSgpOiBNeUVkaXRvclJhbmdlIHwgbnVsbCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBhcGkgPSAod2luZG93IGFzIGFueSkuT2JzaWRpYW5ab29tUGx1Z2luO1xuXG4gICAgaWYgKCFhcGkgfHwgIWFwaS5nZXRab29tUmFuZ2UpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBhcGkuZ2V0Wm9vbVJhbmdlKHRoaXMuZSk7XG4gIH1cblxuICB6b29tT3V0KCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgY29uc3QgYXBpID0gKHdpbmRvdyBhcyBhbnkpLk9ic2lkaWFuWm9vbVBsdWdpbjtcblxuICAgIGlmICghYXBpIHx8ICFhcGkuem9vbU91dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGFwaS56b29tT3V0KHRoaXMuZSk7XG4gIH1cblxuICB6b29tSW4obGluZTogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBhcGkgPSAod2luZG93IGFzIGFueSkuT2JzaWRpYW5ab29tUGx1Z2luO1xuXG4gICAgaWYgKCFhcGkgfHwgIWFwaS56b29tSW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhcGkuem9vbUluKHRoaXMuZSwgbGluZSk7XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yLCBlZGl0b3JJbmZvRmllbGQgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHtcbiAgRWRpdG9yVmlldyxcbiAgUGx1Z2luVmFsdWUsXG4gIFZpZXdQbHVnaW4sXG4gIFZpZXdVcGRhdGUsXG59IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL015RWRpdG9yXCI7XG5pbXBvcnQgeyBMaXN0IH0gZnJvbSBcIi4uL3Jvb3RcIjtcbmltcG9ydCB7IE9ic2lkaWFuU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNlcnZpY2VcIjtcbmltcG9ydCB7IFBhcnNlclNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvUGFyc2VyU2VydmljZVwiO1xuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzU2VydmljZVwiO1xuXG5pbnRlcmZhY2UgTGluZURhdGEge1xuICB0b3A6IG51bWJlcjtcbiAgbGVmdDogbnVtYmVyO1xuICBoZWlnaHQ6IHN0cmluZztcbiAgbGlzdDogTGlzdDtcbn1cblxuY2xhc3MgTGlzdExpbmVzVmlld1BsdWdpblZhbHVlIGltcGxlbWVudHMgUGx1Z2luVmFsdWUge1xuICBwcml2YXRlIHNjaGVkdWxlZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgc2Nyb2xsZXI6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGNvbnRlbnRDb250YWluZXI6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGVkaXRvcjogTXlFZGl0b3I7XG4gIHByaXZhdGUgbGFzdExpbmU6IG51bWJlcjtcbiAgcHJpdmF0ZSBsaW5lczogTGluZURhdGFbXTtcbiAgcHJpdmF0ZSBsaW5lRWxlbWVudHM6IEhUTUxFbGVtZW50W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmlldzogRWRpdG9yVmlld1xuICApIHtcbiAgICB0aGlzLnZpZXcuc2Nyb2xsRE9NLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdGhpcy5vblNjcm9sbCk7XG4gICAgdGhpcy5zZXR0aW5ncy5vbkNoYW5nZShcImxpc3RMaW5lc1wiLCB0aGlzLnNjaGVkdWxlUmVjYWxjdWxhdGUpO1xuXG4gICAgdGhpcy5wcmVwYXJlRG9tKCk7XG4gICAgdGhpcy53YWl0Rm9yRWRpdG9yKCk7XG4gIH1cblxuICBwcml2YXRlIHdhaXRGb3JFZGl0b3IgPSAoKSA9PiB7XG4gICAgY29uc3Qgb2UgPSB0aGlzLnZpZXcuc3RhdGUuZmllbGQoZWRpdG9ySW5mb0ZpZWxkKS5lZGl0b3I7XG4gICAgaWYgKCFvZSkge1xuICAgICAgc2V0VGltZW91dCh0aGlzLndhaXRGb3JFZGl0b3IsIDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmVkaXRvciA9IG5ldyBNeUVkaXRvcihvZSk7XG4gICAgdGhpcy5zY2hlZHVsZVJlY2FsY3VsYXRlKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBwcmVwYXJlRG9tKCkge1xuICAgIHRoaXMuY29udGVudENvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgdGhpcy5jb250ZW50Q29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXG4gICAgICBcIm91dGxpbmVyLXBsdWdpbi1saXN0LWxpbmVzLWNvbnRlbnQtY29udGFpbmVyXCJcbiAgICApO1xuXG4gICAgdGhpcy5zY3JvbGxlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgdGhpcy5zY3JvbGxlci5jbGFzc0xpc3QuYWRkKFwib3V0bGluZXItcGx1Z2luLWxpc3QtbGluZXMtc2Nyb2xsZXJcIik7XG5cbiAgICB0aGlzLnNjcm9sbGVyLmFwcGVuZENoaWxkKHRoaXMuY29udGVudENvbnRhaW5lcik7XG4gICAgdGhpcy52aWV3LmRvbS5hcHBlbmRDaGlsZCh0aGlzLnNjcm9sbGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgb25TY3JvbGwgPSAoZTogRXZlbnQpID0+IHtcbiAgICBjb25zdCB7IHNjcm9sbExlZnQsIHNjcm9sbFRvcCB9ID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy5zY3JvbGxlci5zY3JvbGxUbyhzY3JvbGxMZWZ0LCBzY3JvbGxUb3ApO1xuICB9O1xuXG4gIHByaXZhdGUgc2NoZWR1bGVSZWNhbGN1bGF0ZSA9ICgpID0+IHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5zY2hlZHVsZWQpO1xuICAgIHRoaXMuc2NoZWR1bGVkID0gc2V0VGltZW91dCh0aGlzLmNhbGN1bGF0ZSwgMCk7XG4gIH07XG5cbiAgdXBkYXRlKHVwZGF0ZTogVmlld1VwZGF0ZSkge1xuICAgIGlmIChcbiAgICAgIHVwZGF0ZS5kb2NDaGFuZ2VkIHx8XG4gICAgICB1cGRhdGUudmlld3BvcnRDaGFuZ2VkIHx8XG4gICAgICB1cGRhdGUuZ2VvbWV0cnlDaGFuZ2VkIHx8XG4gICAgICB1cGRhdGUudHJhbnNhY3Rpb25zLnNvbWUoKHRyKSA9PiB0ci5yZWNvbmZpZ3VyZWQpXG4gICAgKSB7XG4gICAgICB0aGlzLnNjaGVkdWxlUmVjYWxjdWxhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZSA9ICgpID0+IHtcbiAgICB0aGlzLmxpbmVzID0gW107XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLnNldHRpbmdzLmxpc3RMaW5lcyAmJlxuICAgICAgdGhpcy5vYnNpZGlhbi5pc0RlZmF1bHRUaGVtZUVuYWJsZWQoKSAmJlxuICAgICAgdGhpcy52aWV3LnZpZXdwb3J0TGluZUJsb2Nrcy5sZW5ndGggPiAwICYmXG4gICAgICB0aGlzLnZpZXcudmlzaWJsZVJhbmdlcy5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCBmcm9tTGluZSA9IHRoaXMuZWRpdG9yLm9mZnNldFRvUG9zKHRoaXMudmlldy52aWV3cG9ydC5mcm9tKS5saW5lO1xuICAgICAgY29uc3QgdG9MaW5lID0gdGhpcy5lZGl0b3Iub2Zmc2V0VG9Qb3ModGhpcy52aWV3LnZpZXdwb3J0LnRvKS5saW5lO1xuICAgICAgY29uc3QgbGlzdHMgPSB0aGlzLnBhcnNlci5wYXJzZVJhbmdlKHRoaXMuZWRpdG9yLCBmcm9tTGluZSwgdG9MaW5lKTtcblxuICAgICAgZm9yIChjb25zdCBsaXN0IG9mIGxpc3RzKSB7XG4gICAgICAgIHRoaXMubGFzdExpbmUgPSBsaXN0LmdldFJhbmdlKClbMV0ubGluZTtcblxuICAgICAgICBmb3IgKGNvbnN0IGMgb2YgbGlzdC5nZXRDaGlsZHJlbigpKSB7XG4gICAgICAgICAgdGhpcy5yZWN1cnNpdmUoYyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5saW5lcy5zb3J0KChhLCBiKSA9PlxuICAgICAgICBhLnRvcCA9PT0gYi50b3AgPyBhLmxlZnQgLSBiLmxlZnQgOiBhLnRvcCAtIGIudG9wXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRG9tKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBnZXROZXh0U2libGluZyhsaXN0OiBMaXN0KTogTGlzdCB8IG51bGwge1xuICAgIGxldCBsaXN0VG1wID0gbGlzdDtcbiAgICBsZXQgcCA9IGxpc3RUbXAuZ2V0UGFyZW50KCk7XG4gICAgd2hpbGUgKHApIHtcbiAgICAgIGNvbnN0IG5leHRTaWJsaW5nID0gcC5nZXROZXh0U2libGluZ09mKGxpc3RUbXApO1xuICAgICAgaWYgKG5leHRTaWJsaW5nKSB7XG4gICAgICAgIHJldHVybiBuZXh0U2libGluZztcbiAgICAgIH1cbiAgICAgIGxpc3RUbXAgPSBwO1xuICAgICAgcCA9IGxpc3RUbXAuZ2V0UGFyZW50KCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSByZWN1cnNpdmUobGlzdDogTGlzdCwgcGFyZW50Q3R4OiB7IHJvb3RMZWZ0PzogbnVtYmVyIH0gPSB7fSkge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gbGlzdC5nZXRDaGlsZHJlbigpO1xuXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZyb21PZmZzZXQgPSB0aGlzLmVkaXRvci5wb3NUb09mZnNldCh7XG4gICAgICBsaW5lOiBsaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUsXG4gICAgICBjaDogbGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKS5sZW5ndGgsXG4gICAgfSk7XG4gICAgY29uc3QgbmV4dFNpYmxpbmcgPSB0aGlzLmdldE5leHRTaWJsaW5nKGxpc3QpO1xuICAgIGNvbnN0IHRpbGxPZmZzZXQgPSB0aGlzLmVkaXRvci5wb3NUb09mZnNldCh7XG4gICAgICBsaW5lOiBuZXh0U2libGluZ1xuICAgICAgICA/IG5leHRTaWJsaW5nLmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUgLSAxXG4gICAgICAgIDogdGhpcy5sYXN0TGluZSxcbiAgICAgIGNoOiAwLFxuICAgIH0pO1xuXG4gICAgbGV0IHZpc2libGVGcm9tID0gdGhpcy52aWV3LnZpc2libGVSYW5nZXNbMF0uZnJvbTtcbiAgICBsZXQgdmlzaWJsZVRvID1cbiAgICAgIHRoaXMudmlldy52aXNpYmxlUmFuZ2VzW3RoaXMudmlldy52aXNpYmxlUmFuZ2VzLmxlbmd0aCAtIDFdLnRvO1xuICAgIGNvbnN0IHpvb21SYW5nZSA9IHRoaXMuZWRpdG9yLmdldFpvb21SYW5nZSgpO1xuICAgIGlmICh6b29tUmFuZ2UpIHtcbiAgICAgIHZpc2libGVGcm9tID0gTWF0aC5tYXgoXG4gICAgICAgIHZpc2libGVGcm9tLFxuICAgICAgICB0aGlzLmVkaXRvci5wb3NUb09mZnNldCh6b29tUmFuZ2UuZnJvbSlcbiAgICAgICk7XG4gICAgICB2aXNpYmxlVG8gPSBNYXRoLm1pbih2aXNpYmxlVG8sIHRoaXMuZWRpdG9yLnBvc1RvT2Zmc2V0KHpvb21SYW5nZS50bykpO1xuICAgIH1cblxuICAgIGlmIChmcm9tT2Zmc2V0ID4gdmlzaWJsZVRvIHx8IHRpbGxPZmZzZXQgPCB2aXNpYmxlRnJvbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvb3JkcyA9IHRoaXMudmlldy5jb29yZHNBdFBvcyhmcm9tT2Zmc2V0LCAxKTtcbiAgICBpZiAocGFyZW50Q3R4LnJvb3RMZWZ0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcmVudEN0eC5yb290TGVmdCA9IGNvb3Jkcy5sZWZ0O1xuICAgIH1cbiAgICBjb25zdCBsZWZ0ID0gTWF0aC5mbG9vcihjb29yZHMucmlnaHQgLSBwYXJlbnRDdHgucm9vdExlZnQpO1xuXG4gICAgY29uc3QgdG9wID1cbiAgICAgIHZpc2libGVGcm9tID4gMCAmJiBmcm9tT2Zmc2V0IDwgdmlzaWJsZUZyb21cbiAgICAgICAgPyAtMjBcbiAgICAgICAgOiB0aGlzLnZpZXcubGluZUJsb2NrQXQoZnJvbU9mZnNldCkudG9wO1xuICAgIGNvbnN0IGJvdHRvbSA9XG4gICAgICB0aWxsT2Zmc2V0ID4gdmlzaWJsZVRvXG4gICAgICAgID8gdGhpcy52aWV3LmxpbmVCbG9ja0F0KHZpc2libGVUbyAtIDEpLmJvdHRvbVxuICAgICAgICA6IHRoaXMudmlldy5saW5lQmxvY2tBdCh0aWxsT2Zmc2V0KS5ib3R0b207XG4gICAgY29uc3QgaGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuXG4gICAgaWYgKGhlaWdodCA+IDAgJiYgIWxpc3QuaXNGb2xkZWQoKSkge1xuICAgICAgY29uc3QgbmV4dFNpYmxpbmcgPSBsaXN0LmdldFBhcmVudCgpLmdldE5leHRTaWJsaW5nT2YobGlzdCk7XG4gICAgICBjb25zdCBoYXNOZXh0U2libGluZyA9XG4gICAgICAgICEhbmV4dFNpYmxpbmcgJiZcbiAgICAgICAgdGhpcy5lZGl0b3IucG9zVG9PZmZzZXQobmV4dFNpYmxpbmcuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkpIDw9XG4gICAgICAgICAgdmlzaWJsZVRvO1xuXG4gICAgICB0aGlzLmxpbmVzLnB1c2goe1xuICAgICAgICB0b3AsXG4gICAgICAgIGxlZnQsXG4gICAgICAgIGhlaWdodDogYGNhbGMoJHtoZWlnaHR9cHggJHtoYXNOZXh0U2libGluZyA/IFwiLSAxLjVlbVwiIDogXCItIDJlbVwifSlgLFxuICAgICAgICBsaXN0LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgaWYgKCFjaGlsZC5pc0VtcHR5KCkpIHtcbiAgICAgICAgdGhpcy5yZWN1cnNpdmUoY2hpbGQsIHBhcmVudEN0eCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbkNsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjb25zdCBsaW5lID0gdGhpcy5saW5lc1tOdW1iZXIoKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5kYXRhc2V0LmluZGV4KV07XG5cbiAgICBzd2l0Y2ggKHRoaXMuc2V0dGluZ3MubGlzdExpbmVBY3Rpb24pIHtcbiAgICAgIGNhc2UgXCJ6b29tLWluXCI6XG4gICAgICAgIHRoaXMuem9vbUluKGxpbmUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcInRvZ2dsZS1mb2xkaW5nXCI6XG4gICAgICAgIHRoaXMudG9nZ2xlRm9sZGluZyhsaW5lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgem9vbUluKGxpbmU6IExpbmVEYXRhKSB7XG4gICAgY29uc3QgZWRpdG9yID0gbmV3IE15RWRpdG9yKHRoaXMudmlldy5zdGF0ZS5maWVsZChlZGl0b3JJbmZvRmllbGQpLmVkaXRvcik7XG5cbiAgICBlZGl0b3Iuem9vbUluKGxpbmUubGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlRm9sZGluZyhsaW5lOiBMaW5lRGF0YSkge1xuICAgIGNvbnN0IHsgbGlzdCB9ID0gbGluZTtcblxuICAgIGlmIChsaXN0LmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBuZWVkVG9VbmZvbGQgPSB0cnVlO1xuICAgIGNvbnN0IGxpbmVzVG9Ub2dnbGU6IG51bWJlcltdID0gW107XG4gICAgZm9yIChjb25zdCBjIG9mIGxpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgaWYgKGMuaXNFbXB0eSgpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFjLmlzRm9sZGVkKCkpIHtcbiAgICAgICAgbmVlZFRvVW5mb2xkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBsaW5lc1RvVG9nZ2xlLnB1c2goYy5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lKTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0b3IgPSBuZXcgTXlFZGl0b3IodGhpcy52aWV3LnN0YXRlLmZpZWxkKGVkaXRvckluZm9GaWVsZCkuZWRpdG9yKTtcblxuICAgIGZvciAoY29uc3QgbCBvZiBsaW5lc1RvVG9nZ2xlKSB7XG4gICAgICBpZiAobmVlZFRvVW5mb2xkKSB7XG4gICAgICAgIGVkaXRvci51bmZvbGQobCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGl0b3IuZm9sZChsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURvbSgpIHtcbiAgICBjb25zdCBjbVNjcm9sbCA9IHRoaXMudmlldy5zY3JvbGxET007XG4gICAgY29uc3QgY21Db250ZW50ID0gdGhpcy52aWV3LmNvbnRlbnRET007XG4gICAgY29uc3QgY21Db250ZW50Q29udGFpbmVyID0gY21Db250ZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgY29uc3QgY21TaXplciA9IGNtQ29udGVudENvbnRhaW5lci5wYXJlbnRFbGVtZW50O1xuXG4gICAgLyoqXG4gICAgICogT2JzaWRpYW4gY2FuIGFkZCBhZGRpdGlvbmFsIGVsZW1lbnRzIGludG8gQ29udGVudCBNYW5hZ2VyLlxuICAgICAqIFRoZSBtb3N0IG9idmlvdXMgY2FzZSBpcyB0aGUgJ2VtYmVkZGVkLWJhY2tsaW5rcycgY29yZSBwbHVnaW4gdGhhdCBhZGRzIGEgbWVudSBpbnNpZGUgYSBDb250ZW50IE1hbmFnZXIuXG4gICAgICogV2UgbXVzdCB0YWtlIGhlaWdodHMgb2YgYWxsIG9mIHRoZXNlIGVsZW1lbnRzIGludG8gYWNjb3VudFxuICAgICAqIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHNpemUgb2YgbGluZXMnIGNvbnRhaW5lci5cbiAgICAgKi9cbiAgICBsZXQgY21TaXplckNoaWxkcmVuU3VtSGVpZ2h0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNtU2l6ZXIuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNtU2l6ZXJDaGlsZHJlblN1bUhlaWdodCArPSBjbVNpemVyLmNoaWxkcmVuW2ldLmNsaWVudEhlaWdodDtcbiAgICB9XG5cbiAgICB0aGlzLnNjcm9sbGVyLnN0eWxlLnRvcCA9IGNtU2Nyb2xsLm9mZnNldFRvcCArIFwicHhcIjtcbiAgICB0aGlzLmNvbnRlbnRDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gY21TaXplckNoaWxkcmVuU3VtSGVpZ2h0ICsgXCJweFwiO1xuICAgIHRoaXMuY29udGVudENvbnRhaW5lci5zdHlsZS5tYXJnaW5MZWZ0ID1cbiAgICAgIGNtQ29udGVudENvbnRhaW5lci5vZmZzZXRMZWZ0ICsgXCJweFwiO1xuICAgIHRoaXMuY29udGVudENvbnRhaW5lci5zdHlsZS5tYXJnaW5Ub3AgPVxuICAgICAgKGNtQ29udGVudC5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCkub2Zmc2V0VG9wIC0gMjQgKyBcInB4XCI7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmxpbmVFbGVtZW50cy5sZW5ndGggPT09IGkpIHtcbiAgICAgICAgY29uc3QgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgIGUuY2xhc3NMaXN0LmFkZChcIm91dGxpbmVyLXBsdWdpbi1saXN0LWxpbmVcIik7XG4gICAgICAgIGUuZGF0YXNldC5pbmRleCA9IFN0cmluZyhpKTtcbiAgICAgICAgZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMub25DbGljayk7XG4gICAgICAgIHRoaXMuY29udGVudENvbnRhaW5lci5hcHBlbmRDaGlsZChlKTtcbiAgICAgICAgdGhpcy5saW5lRWxlbWVudHMucHVzaChlKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbCA9IHRoaXMubGluZXNbaV07XG4gICAgICBjb25zdCBlID0gdGhpcy5saW5lRWxlbWVudHNbaV07XG4gICAgICBlLnN0eWxlLnRvcCA9IGwudG9wICsgXCJweFwiO1xuICAgICAgZS5zdHlsZS5sZWZ0ID0gbC5sZWZ0ICsgXCJweFwiO1xuICAgICAgZS5zdHlsZS5oZWlnaHQgPSBsLmhlaWdodDtcbiAgICAgIGUuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gdGhpcy5saW5lcy5sZW5ndGg7IGkgPCB0aGlzLmxpbmVFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZSA9IHRoaXMubGluZUVsZW1lbnRzW2ldO1xuICAgICAgZS5zdHlsZS50b3AgPSBcIjBweFwiO1xuICAgICAgZS5zdHlsZS5sZWZ0ID0gXCIwcHhcIjtcbiAgICAgIGUuc3R5bGUuaGVpZ2h0ID0gXCIwcHhcIjtcbiAgICAgIGUuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZXR0aW5ncy5yZW1vdmVDYWxsYmFjayhcImxpc3RMaW5lc1wiLCB0aGlzLnNjaGVkdWxlUmVjYWxjdWxhdGUpO1xuICAgIHRoaXMudmlldy5zY3JvbGxET00ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCB0aGlzLm9uU2Nyb2xsKTtcbiAgICB0aGlzLnZpZXcuZG9tLnJlbW92ZUNoaWxkKHRoaXMuc2Nyb2xsZXIpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnNjaGVkdWxlZCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpbmVzRmVhdHVyZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgb2JzaWRpYW46IE9ic2lkaWFuU2VydmljZSxcbiAgICBwcml2YXRlIHBhcnNlcjogUGFyc2VyU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIFZpZXdQbHVnaW4uZGVmaW5lKFxuICAgICAgICAodmlldykgPT5cbiAgICAgICAgICBuZXcgTGlzdExpbmVzVmlld1BsdWdpblZhbHVlKFxuICAgICAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgICAgIHRoaXMub2JzaWRpYW4sXG4gICAgICAgICAgICB0aGlzLnBhcnNlcixcbiAgICAgICAgICAgIHZpZXdcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG59XG4iLCJpbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBPYnNpZGlhblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvT2JzaWRpYW5TZXJ2aWNlXCI7XG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NTZXJ2aWNlXCI7XG5cbmNvbnN0IEJFVFRFUl9MSVNUU19DTEFTUyA9IFwib3V0bGluZXItcGx1Z2luLWJldHRlci1saXN0c1wiO1xuY29uc3QgQkVUVEVSX0JVTExFVFNfQ0xBU1MgPSBcIm91dGxpbmVyLXBsdWdpbi1iZXR0ZXItYnVsbGV0c1wiO1xuY29uc3QgVkVSVElDQUxfTElORVMgPSBcIm91dGxpbmVyLXBsdWdpbi12ZXJ0aWNhbC1saW5lc1wiO1xuY29uc3QgS05PV05fQ0xBU1NFUyA9IFtcbiAgQkVUVEVSX0xJU1RTX0NMQVNTLFxuICBCRVRURVJfQlVMTEVUU19DTEFTUyxcbiAgVkVSVElDQUxfTElORVMsXG5dO1xuXG5leHBvcnQgY2xhc3MgTGlzdHNTdHlsZXNGZWF0dXJlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIHByaXZhdGUgaW50ZXJ2YWw6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMuc3luY0xpc3RzU3R5bGVzKCk7XG4gICAgdGhpcy5pbnRlcnZhbCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLnN5bmNMaXN0c1N0eWxlcygpO1xuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XG4gICAgdGhpcy5hcHBseUxpc3RzU3R5bGVzKFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgc3luY0xpc3RzU3R5bGVzID0gKCkgPT4ge1xuICAgIGNvbnN0IGNsYXNzZXMgPSBbXTtcblxuICAgIGlmICh0aGlzLm9ic2lkaWFuLmlzRGVmYXVsdFRoZW1lRW5hYmxlZCgpKSB7XG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5zdHlsZUxpc3RzKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaChCRVRURVJfTElTVFNfQ0xBU1MpO1xuICAgICAgICBjbGFzc2VzLnB1c2goQkVUVEVSX0JVTExFVFNfQ0xBU1MpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5saXN0TGluZXMpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKFZFUlRJQ0FMX0xJTkVTKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmFwcGx5TGlzdHNTdHlsZXMoY2xhc3Nlcyk7XG4gIH07XG5cbiAgcHJpdmF0ZSBhcHBseUxpc3RzU3R5bGVzKGNsYXNzZXM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgdG9LZWVwID0gY2xhc3Nlcy5maWx0ZXIoKGMpID0+IEtOT1dOX0NMQVNTRVMuY29udGFpbnMoYykpO1xuICAgIGNvbnN0IHRvUmVtb3ZlID0gS05PV05fQ0xBU1NFUy5maWx0ZXIoKGMpID0+ICF0b0tlZXAuY29udGFpbnMoYykpO1xuXG4gICAgZm9yIChjb25zdCBjIG9mIHRvS2VlcCkge1xuICAgICAgaWYgKCFkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucyhjKSkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoYyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjIG9mIHRvUmVtb3ZlKSB7XG4gICAgICBpZiAoZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoYykpIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKGMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IExpc3RMaW5lLCBQb3NpdGlvbiwgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBNb3ZlQ3Vyc29yVG9QcmV2aW91c1VuZm9sZGVkTGluZU9wZXJhdGlvbiBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVDdXJzb3IoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLnJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgY3Vyc29yID0gdGhpcy5yb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVzID0gbGlzdC5nZXRMaW5lc0luZm8oKTtcbiAgICBjb25zdCBsaW5lTm8gPSBsaW5lcy5maW5kSW5kZXgoXG4gICAgICAobCkgPT4gY3Vyc29yLmNoID09PSBsLmZyb20uY2ggJiYgY3Vyc29yLmxpbmUgPT09IGwuZnJvbS5saW5lXG4gICAgKTtcblxuICAgIGlmIChsaW5lTm8gPT09IDApIHtcbiAgICAgIHRoaXMubW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZEl0ZW0ocm9vdCwgY3Vyc29yKTtcbiAgICB9IGVsc2UgaWYgKGxpbmVObyA+IDApIHtcbiAgICAgIHRoaXMubW92ZUN1cnNvclRvUHJldmlvdXNOb3RlTGluZShyb290LCBsaW5lcywgbGluZU5vKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1vdmVDdXJzb3JUb1ByZXZpb3VzTm90ZUxpbmUoXG4gICAgcm9vdDogUm9vdCxcbiAgICBsaW5lczogTGlzdExpbmVbXSxcbiAgICBsaW5lTm86IG51bWJlclxuICApIHtcbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIHJvb3QucmVwbGFjZUN1cnNvcihsaW5lc1tsaW5lTm8gLSAxXS50byk7XG4gIH1cblxuICBwcml2YXRlIG1vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRJdGVtKHJvb3Q6IFJvb3QsIGN1cnNvcjogUG9zaXRpb24pIHtcbiAgICBjb25zdCBwcmV2ID0gcm9vdC5nZXRMaXN0VW5kZXJMaW5lKGN1cnNvci5saW5lIC0gMSk7XG5cbiAgICBpZiAoIXByZXYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGlmIChwcmV2LmlzRm9sZGVkKCkpIHtcbiAgICAgIGNvbnN0IGZvbGRSb290ID0gcHJldi5nZXRUb3BGb2xkUm9vdCgpO1xuICAgICAgY29uc3QgZmlyc3RMaW5lRW5kID0gZm9sZFJvb3QuZ2V0TGluZXNJbmZvKClbMF0udG87XG4gICAgICByb290LnJlcGxhY2VDdXJzb3IoZmlyc3RMaW5lRW5kKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHByZXYuZ2V0TGFzdExpbmVDb250ZW50RW5kKCkpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsga2V5bWFwIH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vTXlFZGl0b3JcIjtcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi4vZmVhdHVyZXMvRmVhdHVyZVwiO1xuaW1wb3J0IHsgTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmVPcGVyYXRpb24gfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9Nb3ZlQ3Vyc29yVG9QcmV2aW91c1VuZm9sZGVkTGluZU9wZXJhdGlvblwiO1xuaW1wb3J0IHsgSU1FU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVTZXJ2aWNlXCI7XG5pbXBvcnQgeyBPYnNpZGlhblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvT2JzaWRpYW5TZXJ2aWNlXCI7XG5pbXBvcnQgeyBQZXJmb3JtT3BlcmF0aW9uU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9QZXJmb3JtT3BlcmF0aW9uU2VydmljZVwiO1xuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzU2VydmljZVwiO1xuXG5leHBvcnQgY2xhc3MgTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmVGZWF0dXJlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbWU6IElNRVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVyZm9ybU9wZXJhdGlvbjogUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBrZXltYXAub2YoW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiBcIkFycm93TGVmdFwiLFxuICAgICAgICAgIHJ1bjogdGhpcy5vYnNpZGlhbi5jcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB3aW46IFwiYy1BcnJvd0xlZnRcIixcbiAgICAgICAgICBsaW51eDogXCJjLUFycm93TGVmdFwiLFxuICAgICAgICAgIHJ1bjogdGhpcy5vYnNpZGlhbi5jcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Muc3RpY2tDdXJzb3IgJiYgIXRoaXMuaW1lLmlzSU1FT3BlbmVkKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PiBuZXcgTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmVPcGVyYXRpb24ocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IFJvb3QgfSBmcm9tIFwiLi4vcm9vdFwiO1xuaW1wb3J0IHsgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyB9IGZyb20gXCIuLi9yb290L3JlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHNcIjtcblxuZXhwb3J0IGNsYXNzIE1vdmVEb3duT3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgcGFyZW50ID0gbGlzdC5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBncmFuZFBhcmVudCA9IHBhcmVudC5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBuZXh0ID0gcGFyZW50LmdldE5leHRTaWJsaW5nT2YobGlzdCk7XG5cbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lQmVmb3JlID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuXG4gICAgaWYgKCFuZXh0ICYmIGdyYW5kUGFyZW50KSB7XG4gICAgICBjb25zdCBuZXdQYXJlbnQgPSBncmFuZFBhcmVudC5nZXROZXh0U2libGluZ09mKHBhcmVudCk7XG5cbiAgICAgIGlmIChuZXdQYXJlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKGxpc3QpO1xuICAgICAgICBuZXdQYXJlbnQuYWRkQmVmb3JlQWxsKGxpc3QpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobmV4dCkge1xuICAgICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcbiAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcbiAgICAgIHBhcmVudC5hZGRBZnRlcihuZXh0LCBsaXN0KTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudXBkYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVBZnRlciA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcbiAgICBjb25zdCBsaW5lRGlmZiA9IGxpc3RTdGFydExpbmVBZnRlciAtIGxpc3RTdGFydExpbmVCZWZvcmU7XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIHJvb3QucmVwbGFjZUN1cnNvcih7XG4gICAgICBsaW5lOiBjdXJzb3IubGluZSArIGxpbmVEaWZmLFxuICAgICAgY2g6IGN1cnNvci5jaCxcbiAgICB9KTtcblxuICAgIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMocm9vdCk7XG4gIH1cbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcbmltcG9ydCB7IHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdC9yZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzXCI7XG5cbmV4cG9ydCBjbGFzcyBNb3ZlUmlnaHRPcGVyYXRpb24gaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QsIHByaXZhdGUgZGVmYXVsdEluZGVudENoYXJzOiBzdHJpbmcpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBwYXJlbnQgPSBsaXN0LmdldFBhcmVudCgpO1xuICAgIGNvbnN0IHByZXYgPSBwYXJlbnQuZ2V0UHJldlNpYmxpbmdPZihsaXN0KTtcblxuICAgIGlmICghcHJldikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lQmVmb3JlID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuXG4gICAgY29uc3QgaW5kZW50UG9zID0gbGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKS5sZW5ndGg7XG4gICAgbGV0IGluZGVudENoYXJzID0gXCJcIjtcblxuICAgIGlmIChpbmRlbnRDaGFycyA9PT0gXCJcIiAmJiAhcHJldi5pc0VtcHR5KCkpIHtcbiAgICAgIGluZGVudENoYXJzID0gcHJldlxuICAgICAgICAuZ2V0Q2hpbGRyZW4oKVswXVxuICAgICAgICAuZ2V0Rmlyc3RMaW5lSW5kZW50KClcbiAgICAgICAgLnNsaWNlKHByZXYuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIpIHtcbiAgICAgIGluZGVudENoYXJzID0gbGlzdFxuICAgICAgICAuZ2V0Rmlyc3RMaW5lSW5kZW50KClcbiAgICAgICAgLnNsaWNlKHBhcmVudC5nZXRGaXJzdExpbmVJbmRlbnQoKS5sZW5ndGgpO1xuICAgIH1cblxuICAgIGlmIChpbmRlbnRDaGFycyA9PT0gXCJcIiAmJiAhbGlzdC5pc0VtcHR5KCkpIHtcbiAgICAgIGluZGVudENoYXJzID0gbGlzdC5nZXRDaGlsZHJlbigpWzBdLmdldEZpcnN0TGluZUluZGVudCgpO1xuICAgIH1cblxuICAgIGlmIChpbmRlbnRDaGFycyA9PT0gXCJcIikge1xuICAgICAgaW5kZW50Q2hhcnMgPSB0aGlzLmRlZmF1bHRJbmRlbnRDaGFycztcbiAgICB9XG5cbiAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobGlzdCk7XG4gICAgcHJldi5hZGRBZnRlckFsbChsaXN0KTtcbiAgICBsaXN0LmluZGVudENvbnRlbnQoaW5kZW50UG9zLCBpbmRlbnRDaGFycyk7XG5cbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lQWZ0ZXIgPSByb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdClbMF07XG4gICAgY29uc3QgbGluZURpZmYgPSBsaXN0U3RhcnRMaW5lQWZ0ZXIgLSBsaXN0U3RhcnRMaW5lQmVmb3JlO1xuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICByb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgbGluZTogY3Vyc29yLmxpbmUgKyBsaW5lRGlmZixcbiAgICAgIGNoOiBjdXJzb3IuY2ggKyBpbmRlbnRDaGFycy5sZW5ndGgsXG4gICAgfSk7XG5cbiAgICByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3QpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzIH0gZnJvbSBcIi4uL3Jvb3QvcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0c1wiO1xuXG5leHBvcnQgY2xhc3MgTW92ZVVwT3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgcGFyZW50ID0gbGlzdC5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBncmFuZFBhcmVudCA9IHBhcmVudC5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBwcmV2ID0gcGFyZW50LmdldFByZXZTaWJsaW5nT2YobGlzdCk7XG5cbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lQmVmb3JlID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuXG4gICAgaWYgKCFwcmV2ICYmIGdyYW5kUGFyZW50KSB7XG4gICAgICBjb25zdCBuZXdQYXJlbnQgPSBncmFuZFBhcmVudC5nZXRQcmV2U2libGluZ09mKHBhcmVudCk7XG5cbiAgICAgIGlmIChuZXdQYXJlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKGxpc3QpO1xuICAgICAgICBuZXdQYXJlbnQuYWRkQWZ0ZXJBbGwobGlzdCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwcmV2KSB7XG4gICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKGxpc3QpO1xuICAgICAgcGFyZW50LmFkZEJlZm9yZShwcmV2LCBsaXN0KTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudXBkYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVBZnRlciA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcbiAgICBjb25zdCBsaW5lRGlmZiA9IGxpc3RTdGFydExpbmVBZnRlciAtIGxpc3RTdGFydExpbmVCZWZvcmU7XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIHJvb3QucmVwbGFjZUN1cnNvcih7XG4gICAgICBsaW5lOiBjdXJzb3IubGluZSArIGxpbmVEaWZmLFxuICAgICAgY2g6IGN1cnNvci5jaCxcbiAgICB9KTtcblxuICAgIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMocm9vdCk7XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IFByZWMgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL015RWRpdG9yXCI7XG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4uL2ZlYXR1cmVzL0ZlYXR1cmVcIjtcbmltcG9ydCB7IE1vdmVEb3duT3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvTW92ZURvd25PcGVyYXRpb25cIjtcbmltcG9ydCB7IE1vdmVMZWZ0T3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvTW92ZUxlZnRPcGVyYXRpb25cIjtcbmltcG9ydCB7IE1vdmVSaWdodE9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL01vdmVSaWdodE9wZXJhdGlvblwiO1xuaW1wb3J0IHsgTW92ZVVwT3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvTW92ZVVwT3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBJTUVTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL0lNRVNlcnZpY2VcIjtcbmltcG9ydCB7IE9ic2lkaWFuU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNlcnZpY2VcIjtcbmltcG9ydCB7IFBlcmZvcm1PcGVyYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1BlcmZvcm1PcGVyYXRpb25TZXJ2aWNlXCI7XG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NTZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBNb3ZlSXRlbXNGZWF0dXJlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIGltZTogSU1FU2VydmljZSxcbiAgICBwcml2YXRlIG9ic2lkaWFuOiBPYnNpZGlhblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVyZm9ybU9wZXJhdGlvbjogUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4uYWRkQ29tbWFuZCh7XG4gICAgICBpZDogXCJtb3ZlLWxpc3QtaXRlbS11cFwiLFxuICAgICAgaWNvbjogXCJhcnJvdy11cFwiLFxuICAgICAgbmFtZTogXCJNb3ZlIGxpc3QgYW5kIHN1Ymxpc3RzIHVwXCIsXG4gICAgICBlZGl0b3JDYWxsYmFjazogdGhpcy5vYnNpZGlhbi5jcmVhdGVFZGl0b3JDYWxsYmFjayhcbiAgICAgICAgdGhpcy5tb3ZlTGlzdEVsZW1lbnRVcENvbW1hbmRcbiAgICAgICksXG4gICAgICBob3RrZXlzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBtb2RpZmllcnM6IFtcIk1vZFwiLCBcIlNoaWZ0XCJdLFxuICAgICAgICAgIGtleTogXCJBcnJvd1VwXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wbHVnaW4uYWRkQ29tbWFuZCh7XG4gICAgICBpZDogXCJtb3ZlLWxpc3QtaXRlbS1kb3duXCIsXG4gICAgICBpY29uOiBcImFycm93LWRvd25cIixcbiAgICAgIG5hbWU6IFwiTW92ZSBsaXN0IGFuZCBzdWJsaXN0cyBkb3duXCIsXG4gICAgICBlZGl0b3JDYWxsYmFjazogdGhpcy5vYnNpZGlhbi5jcmVhdGVFZGl0b3JDYWxsYmFjayhcbiAgICAgICAgdGhpcy5tb3ZlTGlzdEVsZW1lbnREb3duQ29tbWFuZFxuICAgICAgKSxcbiAgICAgIGhvdGtleXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vZGlmaWVyczogW1wiTW9kXCIsIFwiU2hpZnRcIl0sXG4gICAgICAgICAga2V5OiBcIkFycm93RG93blwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwiaW5kZW50LWxpc3RcIixcbiAgICAgIGljb246IFwiaW5kZW50XCIsXG4gICAgICBuYW1lOiBcIkluZGVudCB0aGUgbGlzdCBhbmQgc3VibGlzdHNcIixcbiAgICAgIGVkaXRvckNhbGxiYWNrOiB0aGlzLm9ic2lkaWFuLmNyZWF0ZUVkaXRvckNhbGxiYWNrKFxuICAgICAgICB0aGlzLm1vdmVMaXN0RWxlbWVudFJpZ2h0Q29tbWFuZFxuICAgICAgKSxcbiAgICAgIGhvdGtleXM6IFtdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wbHVnaW4uYWRkQ29tbWFuZCh7XG4gICAgICBpZDogXCJvdXRkZW50LWxpc3RcIixcbiAgICAgIGljb246IFwib3V0ZGVudFwiLFxuICAgICAgbmFtZTogXCJPdXRkZW50IHRoZSBsaXN0IGFuZCBzdWJsaXN0c1wiLFxuICAgICAgZWRpdG9yQ2FsbGJhY2s6IHRoaXMub2JzaWRpYW4uY3JlYXRlRWRpdG9yQ2FsbGJhY2soXG4gICAgICAgIHRoaXMubW92ZUxpc3RFbGVtZW50TGVmdENvbW1hbmRcbiAgICAgICksXG4gICAgICBob3RrZXlzOiBbXSxcbiAgICB9KTtcblxuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAgUHJlYy5oaWdoZXN0KFxuICAgICAgICBrZXltYXAub2YoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogXCJUYWJcIixcbiAgICAgICAgICAgIHJ1bjogdGhpcy5vYnNpZGlhbi5jcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgICBydW46IHRoaXMubW92ZUxpc3RFbGVtZW50UmlnaHQsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogXCJzLVRhYlwiLFxuICAgICAgICAgICAgcnVuOiB0aGlzLm9ic2lkaWFuLmNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICAgIHJ1bjogdGhpcy5tb3ZlTGlzdEVsZW1lbnRMZWZ0LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIGNoZWNrID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLmJldHRlclRhYiAmJiAhdGhpcy5pbWUuaXNJTUVPcGVuZWQoKTtcbiAgfTtcblxuICBwcml2YXRlIG1vdmVMaXN0RWxlbWVudERvd25Db21tYW5kID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBjb25zdCB7IHNob3VsZFN0b3BQcm9wYWdhdGlvbiB9ID0gdGhpcy5wZXJmb3JtT3BlcmF0aW9uLnBlcmZvcm1PcGVyYXRpb24oXG4gICAgICAocm9vdCkgPT4gbmV3IE1vdmVEb3duT3BlcmF0aW9uKHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcblxuICAgIHJldHVybiBzaG91bGRTdG9wUHJvcGFnYXRpb247XG4gIH07XG5cbiAgcHJpdmF0ZSBtb3ZlTGlzdEVsZW1lbnRVcENvbW1hbmQgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIGNvbnN0IHsgc2hvdWxkU3RvcFByb3BhZ2F0aW9uIH0gPSB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PiBuZXcgTW92ZVVwT3BlcmF0aW9uKHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcblxuICAgIHJldHVybiBzaG91bGRTdG9wUHJvcGFnYXRpb247XG4gIH07XG5cbiAgcHJpdmF0ZSBtb3ZlTGlzdEVsZW1lbnRSaWdodENvbW1hbmQgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIGlmICh0aGlzLmltZS5pc0lNRU9wZW5lZCgpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tb3ZlTGlzdEVsZW1lbnRSaWdodChlZGl0b3IpLnNob3VsZFN0b3BQcm9wYWdhdGlvbjtcbiAgfTtcblxuICBwcml2YXRlIG1vdmVMaXN0RWxlbWVudFJpZ2h0ID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5wZXJmb3JtT3BlcmF0aW9uLnBlcmZvcm1PcGVyYXRpb24oXG4gICAgICAocm9vdCkgPT5cbiAgICAgICAgbmV3IE1vdmVSaWdodE9wZXJhdGlvbihyb290LCB0aGlzLm9ic2lkaWFuLmdldERlZmF1bHRJbmRlbnRDaGFycygpKSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBtb3ZlTGlzdEVsZW1lbnRMZWZ0Q29tbWFuZCA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgaWYgKHRoaXMuaW1lLmlzSU1FT3BlbmVkKCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm1vdmVMaXN0RWxlbWVudExlZnQoZWRpdG9yKS5zaG91bGRTdG9wUHJvcGFnYXRpb247XG4gIH07XG5cbiAgcHJpdmF0ZSBtb3ZlTGlzdEVsZW1lbnRMZWZ0ID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5wZXJmb3JtT3BlcmF0aW9uLnBlcmZvcm1PcGVyYXRpb24oXG4gICAgICAocm9vdCkgPT4gbmV3IE1vdmVMZWZ0T3BlcmF0aW9uKHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290LCBtYXhQb3MsIG1pblBvcyB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3RBbGxPcGVyYXRpb24gaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlU2VsZWN0aW9uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3Rpb24gPSByb290LmdldFNlbGVjdGlvbnMoKVswXTtcbiAgICBjb25zdCBbcm9vdFN0YXJ0LCByb290RW5kXSA9IHJvb3QuZ2V0UmFuZ2UoKTtcblxuICAgIGNvbnN0IHNlbGVjdGlvbkZyb20gPSBtaW5Qb3Moc2VsZWN0aW9uLmFuY2hvciwgc2VsZWN0aW9uLmhlYWQpO1xuICAgIGNvbnN0IHNlbGVjdGlvblRvID0gbWF4UG9zKHNlbGVjdGlvbi5hbmNob3IsIHNlbGVjdGlvbi5oZWFkKTtcblxuICAgIGlmIChcbiAgICAgIHNlbGVjdGlvbkZyb20ubGluZSA8IHJvb3RTdGFydC5saW5lIHx8XG4gICAgICBzZWxlY3Rpb25Uby5saW5lID4gcm9vdEVuZC5saW5lXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgc2VsZWN0aW9uRnJvbS5saW5lID09PSByb290U3RhcnQubGluZSAmJlxuICAgICAgc2VsZWN0aW9uRnJvbS5jaCA9PT0gcm9vdFN0YXJ0LmNoICYmXG4gICAgICBzZWxlY3Rpb25Uby5saW5lID09PSByb290RW5kLmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvblRvLmNoID09PSByb290RW5kLmNoXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgY29udGVudFN0YXJ0ID0gbGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKTtcbiAgICBjb25zdCBjb250ZW50RW5kID0gbGlzdC5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKTtcblxuICAgIGlmIChcbiAgICAgIHNlbGVjdGlvbkZyb20ubGluZSA8IGNvbnRlbnRTdGFydC5saW5lIHx8XG4gICAgICBzZWxlY3Rpb25Uby5saW5lID4gY29udGVudEVuZC5saW5lXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBpZiAoXG4gICAgICBzZWxlY3Rpb25Gcm9tLmxpbmUgPT09IGNvbnRlbnRTdGFydC5saW5lICYmXG4gICAgICBzZWxlY3Rpb25Gcm9tLmNoID09PSBjb250ZW50U3RhcnQuY2ggJiZcbiAgICAgIHNlbGVjdGlvblRvLmxpbmUgPT09IGNvbnRlbnRFbmQubGluZSAmJlxuICAgICAgc2VsZWN0aW9uVG8uY2ggPT09IGNvbnRlbnRFbmQuY2hcbiAgICApIHtcbiAgICAgIC8vIHNlbGVjdCBhbGwgbGlzdFxuICAgICAgcm9vdC5yZXBsYWNlU2VsZWN0aW9ucyhbeyBhbmNob3I6IHJvb3RTdGFydCwgaGVhZDogcm9vdEVuZCB9XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNlbGVjdCBhbGwgbGluZVxuICAgICAgcm9vdC5yZXBsYWNlU2VsZWN0aW9ucyhbeyBhbmNob3I6IGNvbnRlbnRTdGFydCwgaGVhZDogY29udGVudEVuZCB9XSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL015RWRpdG9yXCI7XG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4uL2ZlYXR1cmVzL0ZlYXR1cmVcIjtcbmltcG9ydCB7IFNlbGVjdEFsbE9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL1NlbGVjdEFsbE9wZXJhdGlvblwiO1xuaW1wb3J0IHsgSU1FU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVTZXJ2aWNlXCI7XG5pbXBvcnQgeyBPYnNpZGlhblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvT2JzaWRpYW5TZXJ2aWNlXCI7XG5pbXBvcnQgeyBQZXJmb3JtT3BlcmF0aW9uU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9QZXJmb3JtT3BlcmF0aW9uU2VydmljZVwiO1xuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzU2VydmljZVwiO1xuXG5leHBvcnQgY2xhc3MgU2VsZWN0QWxsRmVhdHVyZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW1lOiBJTUVTZXJ2aWNlLFxuICAgIHByaXZhdGUgb2JzaWRpYW46IE9ic2lkaWFuU2VydmljZSxcbiAgICBwcml2YXRlIHBlcmZvcm1PcGVyYXRpb246IFBlcmZvcm1PcGVyYXRpb25TZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogXCJjLWFcIixcbiAgICAgICAgICBtYWM6IFwibS1hXCIsXG4gICAgICAgICAgcnVuOiB0aGlzLm9ic2lkaWFuLmNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgcnVuOiB0aGlzLnJ1bixcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIF0pXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBjaGVjayA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5zZWxlY3RBbGwgJiYgIXRoaXMuaW1lLmlzSU1FT3BlbmVkKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PiBuZXcgU2VsZWN0QWxsT3BlcmF0aW9uKHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIFNlbGVjdFRpbGxMaW5lU3RhcnRPcGVyYXRpb24gaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgbGluZXMgPSBsaXN0LmdldExpbmVzSW5mbygpO1xuICAgIGNvbnN0IGxpbmVObyA9IGxpbmVzLmZpbmRJbmRleCgobCkgPT4gbC5mcm9tLmxpbmUgPT09IGN1cnNvci5saW5lKTtcblxuICAgIHJvb3QucmVwbGFjZVNlbGVjdGlvbnMoW3sgaGVhZDogbGluZXNbbGluZU5vXS5mcm9tLCBhbmNob3I6IGN1cnNvciB9XSk7XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL015RWRpdG9yXCI7XG5pbXBvcnQgeyBTZWxlY3RUaWxsTGluZVN0YXJ0T3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvU2VsZWN0VGlsbExpbmVTdGFydE9wZXJhdGlvblwiO1xuaW1wb3J0IHsgSU1FU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVTZXJ2aWNlXCI7XG5pbXBvcnQgeyBPYnNpZGlhblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvT2JzaWRpYW5TZXJ2aWNlXCI7XG5pbXBvcnQgeyBQZXJmb3JtT3BlcmF0aW9uU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9QZXJmb3JtT3BlcmF0aW9uU2VydmljZVwiO1xuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzU2VydmljZVwiO1xuXG5leHBvcnQgY2xhc3MgU2VsZWN0aW9uU2hvdWxkSWdub3JlQnVsbGV0c0ZlYXR1cmUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIGltZTogSU1FU2VydmljZSxcbiAgICBwcml2YXRlIG9ic2lkaWFuOiBPYnNpZGlhblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJmb3JtT3BlcmF0aW9uOiBQZXJmb3JtT3BlcmF0aW9uU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIGtleW1hcC5vZihbXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6IFwibS1zLUFycm93TGVmdFwiLFxuICAgICAgICAgIHJ1bjogdGhpcy5vYnNpZGlhbi5jcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Muc3RpY2tDdXJzb3IgJiYgIXRoaXMuaW1lLmlzSU1FT3BlbmVkKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PiBuZXcgU2VsZWN0VGlsbExpbmVTdGFydE9wZXJhdGlvbihyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBBcHAsIFBsdWdpblNldHRpbmdUYWIsIFBsdWdpbl8yLCBTZXR0aW5nIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IExpc3RMaW5lQWN0aW9uLCBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NTZXJ2aWNlXCI7XG5cbmNsYXNzIE9ic2lkaWFuT3V0bGluZXJQbHVnaW5TZXR0aW5nVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XG4gIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBwbHVnaW46IFBsdWdpbl8yLCBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UpIHtcbiAgICBzdXBlcihhcHAsIHBsdWdpbik7XG4gIH1cblxuICBkaXNwbGF5KCk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29udGFpbmVyRWwgfSA9IHRoaXM7XG5cbiAgICBjb250YWluZXJFbC5lbXB0eSgpO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkltcHJvdmUgdGhlIHN0eWxlIG9mIHlvdXIgbGlzdHNcIilcbiAgICAgIC5zZXREZXNjKFxuICAgICAgICBcIlN0eWxlcyBhcmUgb25seSBjb21wYXRpYmxlIHdpdGggYnVpbHQtaW4gT2JzaWRpYW4gdGhlbWVzIGFuZCBtYXkgbm90IGJlIGNvbXBhdGlibGUgd2l0aCBvdGhlciB0aGVtZXMuXCJcbiAgICAgIClcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuICAgICAgICB0b2dnbGUuc2V0VmFsdWUodGhpcy5zZXR0aW5ncy5zdHlsZUxpc3RzKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnNldHRpbmdzLnN0eWxlTGlzdHMgPSB2YWx1ZTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJEcmF3IHZlcnRpY2FsIGluZGVudGF0aW9uIGxpbmVzXCIpXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MubGlzdExpbmVzKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnNldHRpbmdzLmxpc3RMaW5lcyA9IHZhbHVlO1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIlZlcnRpY2FsIGluZGVudGF0aW9uIGxpbmUgY2xpY2sgYWN0aW9uXCIpXG4gICAgICAuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG4gICAgICAgIGRyb3Bkb3duXG4gICAgICAgICAgLmFkZE9wdGlvbnMoe1xuICAgICAgICAgICAgbm9uZTogXCJOb25lXCIsXG4gICAgICAgICAgICBcInpvb20taW5cIjogXCJab29tIEluXCIsXG4gICAgICAgICAgICBcInRvZ2dsZS1mb2xkaW5nXCI6IFwiVG9nZ2xlIEZvbGRpbmdcIixcbiAgICAgICAgICB9IGFzIHsgW2tleSBpbiBMaXN0TGluZUFjdGlvbl06IHN0cmluZyB9KVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmxpc3RMaW5lQWN0aW9uKVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MubGlzdExpbmVBY3Rpb24gPSB2YWx1ZSBhcyBMaXN0TGluZUFjdGlvbjtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiU3RpY2sgdGhlIGN1cnNvciB0byB0aGUgY29udGVudFwiKVxuICAgICAgLnNldERlc2MoXCJEb24ndCBsZXQgdGhlIGN1cnNvciBtb3ZlIHRvIHRoZSBidWxsZXQgcG9zaXRpb24uXCIpXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMuc2V0dGluZ3Muc3RpY2tDdXJzb3IpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3Muc3RpY2tDdXJzb3IgPSB2YWx1ZTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJFbmhhbmNlIHRoZSBFbnRlciBrZXlcIilcbiAgICAgIC5zZXREZXNjKFwiTWFrZSB0aGUgRW50ZXIga2V5IGJlaGF2ZSB0aGUgc2FtZSBhcyBvdGhlciBvdXRsaW5lcnMuXCIpXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuYmV0dGVyRW50ZXIpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MuYmV0dGVyRW50ZXIgPSB2YWx1ZTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJFbmhhbmNlIHRoZSBUYWIga2V5XCIpXG4gICAgICAuc2V0RGVzYyhcIk1ha2UgVGFiIGFuZCBTaGlmdC1UYWIgYmVoYXZlIHRoZSBzYW1lIGFzIG90aGVyIG91dGxpbmVycy5cIilcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuICAgICAgICB0b2dnbGUuc2V0VmFsdWUodGhpcy5zZXR0aW5ncy5iZXR0ZXJUYWIpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MuYmV0dGVyVGFiID0gdmFsdWU7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zZXR0aW5ncy5zYXZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiRW5oYW5jZSB0aGUgQ3RybCtBIG9yIENtZCtBIGJlaGF2aW9yXCIpXG4gICAgICAuc2V0RGVzYyhcbiAgICAgICAgXCJQcmVzcyB0aGUgaG90a2V5IG9uY2UgdG8gc2VsZWN0IHRoZSBjdXJyZW50IGxpc3QgaXRlbS4gUHJlc3MgdGhlIGhvdGtleSB0d2ljZSB0byBzZWxlY3QgdGhlIGVudGlyZSBsaXN0LlwiXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMuc2V0dGluZ3Muc2VsZWN0QWxsKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnNldHRpbmdzLnNlbGVjdEFsbCA9IHZhbHVlO1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkRlYnVnIG1vZGVcIilcbiAgICAgIC5zZXREZXNjKFxuICAgICAgICBcIk9wZW4gRGV2VG9vbHMgKENvbW1hbmQrT3B0aW9uK0kgb3IgQ29udHJvbCtTaGlmdCtJKSB0byBjb3B5IHRoZSBkZWJ1ZyBsb2dzLlwiXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuZGVidWcpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MuZGVidWcgPSB2YWx1ZTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NUYWJGZWF0dXJlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMiwgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4uYWRkU2V0dGluZ1RhYihcbiAgICAgIG5ldyBPYnNpZGlhbk91dGxpbmVyUGx1Z2luU2V0dGluZ1RhYihcbiAgICAgICAgdGhpcy5wbHVnaW4uYXBwLFxuICAgICAgICB0aGlzLnBsdWdpbixcbiAgICAgICAgdGhpcy5zZXR0aW5nc1xuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IFJvb3QgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgQ3JlYXRlTm90ZUxpbmVPcGVyYXRpb24gaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVVbmRlckN1cnNvciA9IGxpc3RcbiAgICAgIC5nZXRMaW5lc0luZm8oKVxuICAgICAgLmZpbmQoKGwpID0+IGwuZnJvbS5saW5lID09PSBjdXJzb3IubGluZSk7XG5cbiAgICBpZiAoY3Vyc29yLmNoIDwgbGluZVVuZGVyQ3Vyc29yLmZyb20uY2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGlmICghbGlzdC5nZXROb3Rlc0luZGVudCgpKSB7XG4gICAgICBsaXN0LnNldE5vdGVzSW5kZW50KGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCkgKyBcIiAgXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmVzID0gbGlzdC5nZXRMaW5lc0luZm8oKS5yZWR1Y2UoKGFjYywgbGluZSkgPT4ge1xuICAgICAgaWYgKGN1cnNvci5saW5lID09PSBsaW5lLmZyb20ubGluZSkge1xuICAgICAgICBhY2MucHVzaChsaW5lLnRleHQuc2xpY2UoMCwgY3Vyc29yLmNoIC0gbGluZS5mcm9tLmNoKSk7XG4gICAgICAgIGFjYy5wdXNoKGxpbmUudGV4dC5zbGljZShjdXJzb3IuY2ggLSBsaW5lLmZyb20uY2gpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjYy5wdXNoKGxpbmUudGV4dCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10gYXMgc3RyaW5nW10pO1xuXG4gICAgbGlzdC5yZXBsYWNlTGluZXMobGluZXMpO1xuXG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IGN1cnNvci5saW5lICsgMSxcbiAgICAgIGNoOiBsaXN0LmdldE5vdGVzSW5kZW50KCkubGVuZ3RoLFxuICAgIH0pO1xuICB9XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBrZXltYXAgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9NeUVkaXRvclwiO1xuaW1wb3J0IHsgQ3JlYXRlTm90ZUxpbmVPcGVyYXRpb24gfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9DcmVhdGVOb3RlTGluZU9wZXJhdGlvblwiO1xuaW1wb3J0IHsgSU1FU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVTZXJ2aWNlXCI7XG5pbXBvcnQgeyBPYnNpZGlhblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvT2JzaWRpYW5TZXJ2aWNlXCI7XG5pbXBvcnQgeyBQZXJmb3JtT3BlcmF0aW9uU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9QZXJmb3JtT3BlcmF0aW9uU2VydmljZVwiO1xuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzU2VydmljZVwiO1xuXG5leHBvcnQgY2xhc3MgU2hpZnRFbnRlclNob3VsZENyZWF0ZU5vdGVGZWF0dXJlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIG9ic2lkaWFuOiBPYnNpZGlhblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW1lOiBJTUVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVyZm9ybU9wZXJhdGlvbjogUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBrZXltYXAub2YoW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiBcInMtRW50ZXJcIixcbiAgICAgICAgICBydW46IHRoaXMub2JzaWRpYW4uY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICBydW46IHRoaXMucnVuLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIGNoZWNrID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLmJldHRlckVudGVyICYmICF0aGlzLmltZS5pc0lNRU9wZW5lZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5wZXJmb3JtT3BlcmF0aW9uLnBlcmZvcm1PcGVyYXRpb24oXG4gICAgICAocm9vdCkgPT4gbmV3IENyZWF0ZU5vdGVMaW5lT3BlcmF0aW9uKHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcbn1cbiIsImV4cG9ydCBpbnRlcmZhY2UgQXBwbHlDaGFuZ2VzRWRpdG9yUG9zaXRpb24ge1xuICBsaW5lOiBudW1iZXI7XG4gIGNoOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwbHlDaGFuZ2VzRWRpdG9yU2VsZWN0aW9uIHtcbiAgYW5jaG9yOiBBcHBseUNoYW5nZXNFZGl0b3JQb3NpdGlvbjtcbiAgaGVhZDogQXBwbHlDaGFuZ2VzRWRpdG9yUG9zaXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwbHlDaGFuZ2VzRWRpdG9yIHtcbiAgZ2V0UmFuZ2UoXG4gICAgZnJvbTogQXBwbHlDaGFuZ2VzRWRpdG9yUG9zaXRpb24sXG4gICAgdG86IEFwcGx5Q2hhbmdlc0VkaXRvclBvc2l0aW9uXG4gICk6IHN0cmluZztcbiAgcmVwbGFjZVJhbmdlKFxuICAgIHJlcGxhY2VtZW50OiBzdHJpbmcsXG4gICAgZnJvbTogQXBwbHlDaGFuZ2VzRWRpdG9yUG9zaXRpb24sXG4gICAgdG86IEFwcGx5Q2hhbmdlc0VkaXRvclBvc2l0aW9uXG4gICk6IHZvaWQ7XG4gIHNldFNlbGVjdGlvbnMoc2VsZWN0aW9uczogQXBwbHlDaGFuZ2VzRWRpdG9yU2VsZWN0aW9uW10pOiB2b2lkO1xuICBmb2xkKG46IG51bWJlcik6IHZvaWQ7XG4gIHVuZm9sZChuOiBudW1iZXIpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcGx5Q2hhbmdlc0xpc3Qge1xuICBpc0ZvbGRSb290KCk6IGJvb2xlYW47XG4gIGdldENoaWxkcmVuKCk6IEFwcGx5Q2hhbmdlc0xpc3RbXTtcbiAgZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCk6IHsgbGluZTogbnVtYmVyIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwbHlDaGFuZ2VzUm9vdCB7XG4gIGdldFJhbmdlKCk6IFtBcHBseUNoYW5nZXNFZGl0b3JQb3NpdGlvbiwgQXBwbHlDaGFuZ2VzRWRpdG9yUG9zaXRpb25dO1xuICBnZXRTZWxlY3Rpb25zKCk6IHtcbiAgICBhbmNob3I6IEFwcGx5Q2hhbmdlc0VkaXRvclBvc2l0aW9uO1xuICAgIGhlYWQ6IEFwcGx5Q2hhbmdlc0VkaXRvclBvc2l0aW9uO1xuICB9W107XG4gIHByaW50KCk6IHN0cmluZztcbiAgZ2V0Q2hpbGRyZW4oKTogQXBwbHlDaGFuZ2VzTGlzdFtdO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwbHlDaGFuZ2VzU2VydmljZSB7XG4gIGFwcGx5Q2hhbmdlcyhlZGl0b3I6IEFwcGx5Q2hhbmdlc0VkaXRvciwgcm9vdDogQXBwbHlDaGFuZ2VzUm9vdCkge1xuICAgIGNvbnN0IHJvb3RSYW5nZSA9IHJvb3QuZ2V0UmFuZ2UoKTtcbiAgICBjb25zdCBvbGRTdHJpbmcgPSBlZGl0b3IuZ2V0UmFuZ2Uocm9vdFJhbmdlWzBdLCByb290UmFuZ2VbMV0pO1xuICAgIGNvbnN0IG5ld1N0cmluZyA9IHJvb3QucHJpbnQoKTtcblxuICAgIGNvbnN0IGZyb21MaW5lID0gcm9vdFJhbmdlWzBdLmxpbmU7XG4gICAgY29uc3QgdG9MaW5lID0gcm9vdFJhbmdlWzFdLmxpbmU7XG5cbiAgICBmb3IgKGxldCBsID0gZnJvbUxpbmU7IGwgPD0gdG9MaW5lOyBsKyspIHtcbiAgICAgIGVkaXRvci51bmZvbGQobCk7XG4gICAgfVxuXG4gICAgY29uc3QgY2hhbmdlRnJvbSA9IHsgLi4ucm9vdFJhbmdlWzBdIH07XG4gICAgY29uc3QgY2hhbmdlVG8gPSB7IC4uLnJvb3RSYW5nZVsxXSB9O1xuICAgIGxldCBvbGRUbXAgPSBvbGRTdHJpbmc7XG4gICAgbGV0IG5ld1RtcCA9IG5ld1N0cmluZztcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgbmxJbmRleCA9IG9sZFRtcC5sYXN0SW5kZXhPZihcIlxcblwiKTtcbiAgICAgIGlmIChubEluZGV4IDwgMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9sZExpbmUgPSBvbGRUbXAuc2xpY2UobmxJbmRleCk7XG4gICAgICBjb25zdCBuZXdMaW5lID0gbmV3VG1wLnNsaWNlKC1vbGRMaW5lLmxlbmd0aCk7XG4gICAgICBpZiAob2xkTGluZSAhPT0gbmV3TGluZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG9sZFRtcCA9IG9sZFRtcC5zbGljZSgwLCAtb2xkTGluZS5sZW5ndGgpO1xuICAgICAgbmV3VG1wID0gbmV3VG1wLnNsaWNlKDAsIC1vbGRMaW5lLmxlbmd0aCk7XG5cbiAgICAgIGNvbnN0IG5sSW5kZXgyID0gb2xkVG1wLmxhc3RJbmRleE9mKFwiXFxuXCIpO1xuICAgICAgY2hhbmdlVG8uY2ggPVxuICAgICAgICBubEluZGV4MiA+PSAwID8gb2xkVG1wLmxlbmd0aCAtIG5sSW5kZXgyIC0gMSA6IG9sZFRtcC5sZW5ndGg7XG4gICAgICBjaGFuZ2VUby5saW5lLS07XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgbmxJbmRleCA9IG9sZFRtcC5pbmRleE9mKFwiXFxuXCIpO1xuICAgICAgaWYgKG5sSW5kZXggPCAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY29uc3Qgb2xkTGluZSA9IG9sZFRtcC5zbGljZSgwLCBubEluZGV4ICsgMSk7XG4gICAgICBjb25zdCBuZXdMaW5lID0gbmV3VG1wLnNsaWNlKDAsIG9sZExpbmUubGVuZ3RoKTtcbiAgICAgIGlmIChvbGRMaW5lICE9PSBuZXdMaW5lKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2hhbmdlRnJvbS5saW5lKys7XG4gICAgICBvbGRUbXAgPSBvbGRUbXAuc2xpY2Uob2xkTGluZS5sZW5ndGgpO1xuICAgICAgbmV3VG1wID0gbmV3VG1wLnNsaWNlKG9sZExpbmUubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpZiAob2xkVG1wICE9PSBuZXdUbXApIHtcbiAgICAgIGVkaXRvci5yZXBsYWNlUmFuZ2UobmV3VG1wLCBjaGFuZ2VGcm9tLCBjaGFuZ2VUbyk7XG4gICAgfVxuXG4gICAgZWRpdG9yLnNldFNlbGVjdGlvbnMocm9vdC5nZXRTZWxlY3Rpb25zKCkpO1xuXG4gICAgZnVuY3Rpb24gcmVjdXJzaXZlKGxpc3Q6IEFwcGx5Q2hhbmdlc0xpc3QpIHtcbiAgICAgIGZvciAoY29uc3QgYyBvZiBsaXN0LmdldENoaWxkcmVuKCkpIHtcbiAgICAgICAgcmVjdXJzaXZlKGMpO1xuICAgICAgfVxuICAgICAgaWYgKGxpc3QuaXNGb2xkUm9vdCgpKSB7XG4gICAgICAgIGVkaXRvci5mb2xkKGxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgYyBvZiByb290LmdldENoaWxkcmVuKCkpIHtcbiAgICAgIHJlY3Vyc2l2ZShjKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmV4cG9ydCBjbGFzcyBJTUVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb21wb3NpdGlvbiA9IGZhbHNlO1xuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uc3RhcnRcIiwgdGhpcy5vbkNvbXBvc2l0aW9uU3RhcnQpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjb21wb3NpdGlvbmVuZFwiLCB0aGlzLm9uQ29tcG9zaXRpb25FbmQpO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjb21wb3NpdGlvbmVuZFwiLCB0aGlzLm9uQ29tcG9zaXRpb25FbmQpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjb21wb3NpdGlvbnN0YXJ0XCIsIHRoaXMub25Db21wb3NpdGlvblN0YXJ0KTtcbiAgfVxuXG4gIGlzSU1FT3BlbmVkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbXBvc2l0aW9uICYmIFBsYXRmb3JtLmlzRGVza3RvcDtcbiAgfVxuXG4gIHByaXZhdGUgb25Db21wb3NpdGlvblN0YXJ0ID0gKCkgPT4ge1xuICAgIHRoaXMuY29tcG9zaXRpb24gPSB0cnVlO1xuICB9O1xuXG4gIHByaXZhdGUgb25Db21wb3NpdGlvbkVuZCA9ICgpID0+IHtcbiAgICB0aGlzLmNvbXBvc2l0aW9uID0gZmFsc2U7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tIFwiLi9TZXR0aW5nc1NlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIExvZ2dlclNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UpIHt9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgbG9nKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcy5zZXR0aW5ncy5kZWJ1Zykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUuaW5mbyhtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgYmluZChtZXRob2Q6IHN0cmluZykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gdGhpcy5sb2cobWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgQXBwLCBFZGl0b3IsIGVkaXRvckluZm9GaWVsZCB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBFZGl0b3JTdGF0ZSB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsgRWRpdG9yVmlldyB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL015RWRpdG9yXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JzaWRpYW5UYWJzU2V0dGluZ3Mge1xuICB1c2VUYWI6IGJvb2xlYW47XG4gIHRhYlNpemU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhbkZvbGRTZXR0aW5ncyB7XG4gIGZvbGRJbmRlbnQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBPYnNpZGlhblNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwcDogQXBwKSB7fVxuXG4gIGlzTGVnYWN5RWRpdG9yRW5hYmxlZCgpIHtcbiAgICBjb25zdCBjb25maWc6IHsgbGVnYWN5RWRpdG9yOiBib29sZWFuIH0gPSB7XG4gICAgICBsZWdhY3lFZGl0b3I6IGZhbHNlLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgIC4uLih0aGlzLmFwcC52YXVsdCBhcyBhbnkpLmNvbmZpZyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbmZpZy5sZWdhY3lFZGl0b3I7XG4gIH1cblxuICBpc0RlZmF1bHRUaGVtZUVuYWJsZWQoKSB7XG4gICAgY29uc3QgY29uZmlnOiB7IGNzc1RoZW1lOiBzdHJpbmcgfSA9IHtcbiAgICAgIGNzc1RoZW1lOiBcIlwiLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgIC4uLih0aGlzLmFwcC52YXVsdCBhcyBhbnkpLmNvbmZpZyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbmZpZy5jc3NUaGVtZSA9PT0gXCJcIjtcbiAgfVxuXG4gIGdldE9ic2lkaWFuVGFic1NldHRpbmdzKCk6IE9ic2lkaWFuVGFic1NldHRpbmdzIHtcbiAgICByZXR1cm4ge1xuICAgICAgdXNlVGFiOiB0cnVlLFxuICAgICAgdGFiU2l6ZTogNCxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAuLi4odGhpcy5hcHAudmF1bHQgYXMgYW55KS5jb25maWcsXG4gICAgfTtcbiAgfVxuXG4gIGdldE9ic2lkaWFuRm9sZFNldHRpbmdzKCk6IE9ic2lkaWFuRm9sZFNldHRpbmdzIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9sZEluZGVudDogdHJ1ZSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAuLi4odGhpcy5hcHAudmF1bHQgYXMgYW55KS5jb25maWcsXG4gICAgfTtcbiAgfVxuXG4gIGdldERlZmF1bHRJbmRlbnRDaGFycygpIHtcbiAgICBjb25zdCB7IHVzZVRhYiwgdGFiU2l6ZSB9ID0gdGhpcy5nZXRPYnNpZGlhblRhYnNTZXR0aW5ncygpO1xuXG4gICAgcmV0dXJuIHVzZVRhYiA/IFwiXFx0XCIgOiBuZXcgQXJyYXkodGFiU2l6ZSkuZmlsbChcIiBcIikuam9pbihcIlwiKTtcbiAgfVxuXG4gIGdldEVkaXRvckZyb21TdGF0ZShzdGF0ZTogRWRpdG9yU3RhdGUpIHtcbiAgICByZXR1cm4gbmV3IE15RWRpdG9yKHN0YXRlLmZpZWxkKGVkaXRvckluZm9GaWVsZCkuZWRpdG9yKTtcbiAgfVxuXG4gIGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKGNvbmZpZzoge1xuICAgIGNoZWNrPzogKGVkaXRvcjogTXlFZGl0b3IpID0+IGJvb2xlYW47XG4gICAgcnVuOiAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgICAgc2hvdWxkVXBkYXRlOiBib29sZWFuO1xuICAgICAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uOiBib29sZWFuO1xuICAgIH07XG4gIH0pIHtcbiAgICBjb25zdCBjaGVjayA9IGNvbmZpZy5jaGVjayB8fCAoKCkgPT4gdHJ1ZSk7XG4gICAgY29uc3QgeyBydW4gfSA9IGNvbmZpZztcblxuICAgIHJldHVybiAodmlldzogRWRpdG9yVmlldyk6IGJvb2xlYW4gPT4ge1xuICAgICAgY29uc3QgZWRpdG9yID0gdGhpcy5nZXRFZGl0b3JGcm9tU3RhdGUodmlldy5zdGF0ZSk7XG5cbiAgICAgIGlmICghY2hlY2soZWRpdG9yKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgc2hvdWxkVXBkYXRlLCBzaG91bGRTdG9wUHJvcGFnYXRpb24gfSA9IHJ1bihlZGl0b3IpO1xuXG4gICAgICByZXR1cm4gc2hvdWxkVXBkYXRlIHx8IHNob3VsZFN0b3BQcm9wYWdhdGlvbjtcbiAgICB9O1xuICB9XG5cbiAgY3JlYXRlRWRpdG9yQ2FsbGJhY2soY2I6IChlZGl0b3I6IE15RWRpdG9yKSA9PiBib29sZWFuKSB7XG4gICAgcmV0dXJuIChlZGl0b3I6IEVkaXRvcikgPT4ge1xuICAgICAgY29uc3QgbXlFZGl0b3IgPSBuZXcgTXlFZGl0b3IoZWRpdG9yKTtcbiAgICAgIGNvbnN0IHNob3VsZFN0b3BQcm9wYWdhdGlvbiA9IGNiKG15RWRpdG9yKTtcblxuICAgICAgaWYgKFxuICAgICAgICAhc2hvdWxkU3RvcFByb3BhZ2F0aW9uICYmXG4gICAgICAgIHdpbmRvdy5ldmVudCAmJlxuICAgICAgICB3aW5kb3cuZXZlbnQudHlwZSA9PT0gXCJrZXlkb3duXCJcbiAgICAgICkge1xuICAgICAgICBteUVkaXRvci50cmlnZ2VyT25LZXlEb3duKHdpbmRvdy5ldmVudCBhcyBLZXlib2FyZEV2ZW50KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG4iLCJpbXBvcnQgeyBMaXN0LCBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvTG9nZ2VyU2VydmljZVwiO1xuXG5jb25zdCBidWxsZXRTaWduID0gYCg/OlstKitdfFxcXFxkK1xcXFwuKWA7XG5cbmNvbnN0IGxpc3RJdGVtV2l0aG91dFNwYWNlc1JlID0gbmV3IFJlZ0V4cChgXiR7YnVsbGV0U2lnbn0oIHxcXHQpYCk7XG5jb25zdCBsaXN0SXRlbVJlID0gbmV3IFJlZ0V4cChgXlsgXFx0XSoke2J1bGxldFNpZ259KCB8XFx0KWApO1xuY29uc3Qgc3RyaW5nV2l0aFNwYWNlc1JlID0gbmV3IFJlZ0V4cChgXlsgXFx0XStgKTtcbmNvbnN0IHBhcnNlTGlzdEl0ZW1SZSA9IG5ldyBSZWdFeHAoYF4oWyBcXHRdKikoJHtidWxsZXRTaWdufSkoIHxcXHQpKC4qKSRgKTtcblxuZXhwb3J0IGludGVyZmFjZSBSZWFkZXJQb3NpdGlvbiB7XG4gIGxpbmU6IG51bWJlcjtcbiAgY2g6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFkZXJTZWxlY3Rpb24ge1xuICBhbmNob3I6IFJlYWRlclBvc2l0aW9uO1xuICBoZWFkOiBSZWFkZXJQb3NpdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFkZXIge1xuICBnZXRDdXJzb3IoKTogUmVhZGVyUG9zaXRpb247XG4gIGdldExpbmUobjogbnVtYmVyKTogc3RyaW5nO1xuICBsYXN0TGluZSgpOiBudW1iZXI7XG4gIGxpc3RTZWxlY3Rpb25zKCk6IFJlYWRlclNlbGVjdGlvbltdO1xuICBnZXRBbGxGb2xkZWRMaW5lcygpOiBudW1iZXJbXTtcbn1cblxuaW50ZXJmYWNlIFBhcnNlTGlzdExpc3Qge1xuICBnZXRGaXJzdExpbmVJbmRlbnQoKTogc3RyaW5nO1xuICBzZXROb3Rlc0luZGVudChub3Rlc0luZGVudDogc3RyaW5nKTogdm9pZDtcbiAgZ2V0Tm90ZXNJbmRlbnQoKTogc3RyaW5nIHwgbnVsbDtcbiAgYWRkTGluZSh0ZXh0OiBzdHJpbmcpOiB2b2lkO1xuICBnZXRQYXJlbnQoKTogUGFyc2VMaXN0TGlzdCB8IG51bGw7XG4gIGFkZEFmdGVyQWxsKGxpc3Q6IFBhcnNlTGlzdExpc3QpOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgUGFyc2VyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlKSB7fVxuXG4gIHBhcnNlUmFuZ2UoZWRpdG9yOiBSZWFkZXIsIGZyb21MaW5lID0gMCwgdG9MaW5lID0gZWRpdG9yLmxhc3RMaW5lKCkpOiBSb290W10ge1xuICAgIGNvbnN0IGxpc3RzOiBSb290W10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSBmcm9tTGluZTsgaSA8PSB0b0xpbmU7IGkrKykge1xuICAgICAgY29uc3QgbGluZSA9IGVkaXRvci5nZXRMaW5lKGkpO1xuXG4gICAgICBpZiAoaSA9PT0gZnJvbUxpbmUgfHwgdGhpcy5pc0xpc3RJdGVtKGxpbmUpKSB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLnBhcnNlV2l0aExpbWl0cyhlZGl0b3IsIGksIGZyb21MaW5lLCB0b0xpbmUpO1xuXG4gICAgICAgIGlmIChsaXN0KSB7XG4gICAgICAgICAgbGlzdHMucHVzaChsaXN0KTtcbiAgICAgICAgICBpID0gbGlzdC5nZXRSYW5nZSgpWzFdLmxpbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGlzdHM7XG4gIH1cblxuICBwYXJzZShlZGl0b3I6IFJlYWRlciwgY3Vyc29yID0gZWRpdG9yLmdldEN1cnNvcigpKTogUm9vdCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnBhcnNlV2l0aExpbWl0cyhlZGl0b3IsIGN1cnNvci5saW5lLCAwLCBlZGl0b3IubGFzdExpbmUoKSk7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlV2l0aExpbWl0cyhcbiAgICBlZGl0b3I6IFJlYWRlcixcbiAgICBwYXJzaW5nU3RhcnRMaW5lOiBudW1iZXIsXG4gICAgbGltaXRGcm9tOiBudW1iZXIsXG4gICAgbGltaXRUbzogbnVtYmVyXG4gICk6IFJvb3QgfCBudWxsIHtcbiAgICBjb25zdCBkID0gdGhpcy5sb2dnZXIuYmluZChcInBhcnNlTGlzdFwiKTtcbiAgICBjb25zdCBlcnJvciA9IChtc2c6IHN0cmluZyk6IG51bGwgPT4ge1xuICAgICAgZChtc2cpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcblxuICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0TGluZShwYXJzaW5nU3RhcnRMaW5lKTtcblxuICAgIGxldCBsaXN0TG9va2luZ1BvczogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5pc0xpc3RJdGVtKGxpbmUpKSB7XG4gICAgICBsaXN0TG9va2luZ1BvcyA9IHBhcnNpbmdTdGFydExpbmU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzTGluZVdpdGhJbmRlbnQobGluZSkpIHtcbiAgICAgIGxldCBsaXN0TG9va2luZ1Bvc1NlYXJjaCA9IHBhcnNpbmdTdGFydExpbmUgLSAxO1xuICAgICAgd2hpbGUgKGxpc3RMb29raW5nUG9zU2VhcmNoID49IDApIHtcbiAgICAgICAgY29uc3QgbGluZSA9IGVkaXRvci5nZXRMaW5lKGxpc3RMb29raW5nUG9zU2VhcmNoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNMaXN0SXRlbShsaW5lKSkge1xuICAgICAgICAgIGxpc3RMb29raW5nUG9zID0gbGlzdExvb2tpbmdQb3NTZWFyY2g7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0xpbmVXaXRoSW5kZW50KGxpbmUpKSB7XG4gICAgICAgICAgbGlzdExvb2tpbmdQb3NTZWFyY2gtLTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChsaXN0TG9va2luZ1BvcyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgbGlzdFN0YXJ0TGluZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGxpc3RTdGFydExpbmVMb29rdXAgPSBsaXN0TG9va2luZ1BvcztcbiAgICB3aGlsZSAobGlzdFN0YXJ0TGluZUxvb2t1cCA+PSAwKSB7XG4gICAgICBjb25zdCBsaW5lID0gZWRpdG9yLmdldExpbmUobGlzdFN0YXJ0TGluZUxvb2t1cCk7XG4gICAgICBpZiAoIXRoaXMuaXNMaXN0SXRlbShsaW5lKSAmJiAhdGhpcy5pc0xpbmVXaXRoSW5kZW50KGxpbmUpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNMaXN0SXRlbVdpdGhvdXRTcGFjZXMobGluZSkpIHtcbiAgICAgICAgbGlzdFN0YXJ0TGluZSA9IGxpc3RTdGFydExpbmVMb29rdXA7XG4gICAgICAgIGlmIChsaXN0U3RhcnRMaW5lTG9va3VwIDw9IGxpbWl0RnJvbSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsaXN0U3RhcnRMaW5lTG9va3VwLS07XG4gICAgfVxuXG4gICAgaWYgKGxpc3RTdGFydExpbmUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBsaXN0RW5kTGluZSA9IGxpc3RMb29raW5nUG9zO1xuICAgIGxldCBsaXN0RW5kTGluZUxvb2t1cCA9IGxpc3RMb29raW5nUG9zO1xuICAgIHdoaWxlIChsaXN0RW5kTGluZUxvb2t1cCA8PSBlZGl0b3IubGFzdExpbmUoKSkge1xuICAgICAgY29uc3QgbGluZSA9IGVkaXRvci5nZXRMaW5lKGxpc3RFbmRMaW5lTG9va3VwKTtcbiAgICAgIGlmICghdGhpcy5pc0xpc3RJdGVtKGxpbmUpICYmICF0aGlzLmlzTGluZVdpdGhJbmRlbnQobGluZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuaXNFbXB0eUxpbmUobGluZSkpIHtcbiAgICAgICAgbGlzdEVuZExpbmUgPSBsaXN0RW5kTGluZUxvb2t1cDtcbiAgICAgIH1cbiAgICAgIGlmIChsaXN0RW5kTGluZUxvb2t1cCA+PSBsaW1pdFRvKSB7XG4gICAgICAgIGxpc3RFbmRMaW5lID0gbGltaXRUbztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBsaXN0RW5kTGluZUxvb2t1cCsrO1xuICAgIH1cblxuICAgIGlmIChsaXN0U3RhcnRMaW5lID4gcGFyc2luZ1N0YXJ0TGluZSB8fCBsaXN0RW5kTGluZSA8IHBhcnNpbmdTdGFydExpbmUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHJvb3QgPSBuZXcgUm9vdChcbiAgICAgIHsgbGluZTogbGlzdFN0YXJ0TGluZSwgY2g6IDAgfSxcbiAgICAgIHsgbGluZTogbGlzdEVuZExpbmUsIGNoOiBlZGl0b3IuZ2V0TGluZShsaXN0RW5kTGluZSkubGVuZ3RoIH0sXG4gICAgICBlZGl0b3IubGlzdFNlbGVjdGlvbnMoKS5tYXAoKHIpID0+ICh7XG4gICAgICAgIGFuY2hvcjogeyBsaW5lOiByLmFuY2hvci5saW5lLCBjaDogci5hbmNob3IuY2ggfSxcbiAgICAgICAgaGVhZDogeyBsaW5lOiByLmhlYWQubGluZSwgY2g6IHIuaGVhZC5jaCB9LFxuICAgICAgfSkpXG4gICAgKTtcblxuICAgIGxldCBjdXJyZW50UGFyZW50OiBQYXJzZUxpc3RMaXN0ID0gcm9vdC5nZXRSb290TGlzdCgpO1xuICAgIGxldCBjdXJyZW50TGlzdDogUGFyc2VMaXN0TGlzdCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBjdXJyZW50SW5kZW50ID0gXCJcIjtcblxuICAgIGNvbnN0IGZvbGRlZExpbmVzID0gZWRpdG9yLmdldEFsbEZvbGRlZExpbmVzKCk7XG5cbiAgICBmb3IgKGxldCBsID0gbGlzdFN0YXJ0TGluZTsgbCA8PSBsaXN0RW5kTGluZTsgbCsrKSB7XG4gICAgICBjb25zdCBsaW5lID0gZWRpdG9yLmdldExpbmUobCk7XG4gICAgICBjb25zdCBtYXRjaGVzID0gcGFyc2VMaXN0SXRlbVJlLmV4ZWMobGluZSk7XG5cbiAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgIGNvbnN0IFssIGluZGVudCwgYnVsbGV0LCBzcGFjZUFmdGVyQnVsbGV0LCBjb250ZW50XSA9IG1hdGNoZXM7XG5cbiAgICAgICAgY29uc3QgY29tcGFyZUxlbmd0aCA9IE1hdGgubWluKGN1cnJlbnRJbmRlbnQubGVuZ3RoLCBpbmRlbnQubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgaW5kZW50U2xpY2UgPSBpbmRlbnQuc2xpY2UoMCwgY29tcGFyZUxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRlbnRTbGljZSA9IGN1cnJlbnRJbmRlbnQuc2xpY2UoMCwgY29tcGFyZUxlbmd0aCk7XG5cbiAgICAgICAgaWYgKGluZGVudFNsaWNlICE9PSBjdXJyZW50SW5kZW50U2xpY2UpIHtcbiAgICAgICAgICBjb25zdCBleHBlY3RlZCA9IGN1cnJlbnRJbmRlbnRTbGljZVxuICAgICAgICAgICAgLnJlcGxhY2UoLyAvZywgXCJTXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFx0L2csIFwiVFwiKTtcbiAgICAgICAgICBjb25zdCBnb3QgPSBpbmRlbnRTbGljZS5yZXBsYWNlKC8gL2csIFwiU1wiKS5yZXBsYWNlKC9cXHQvZywgXCJUXCIpO1xuXG4gICAgICAgICAgcmV0dXJuIGVycm9yKFxuICAgICAgICAgICAgYFVuYWJsZSB0byBwYXJzZSBsaXN0OiBleHBlY3RlZCBpbmRlbnQgXCIke2V4cGVjdGVkfVwiLCBnb3QgXCIke2dvdH1cImBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluZGVudC5sZW5ndGggPiBjdXJyZW50SW5kZW50Lmxlbmd0aCkge1xuICAgICAgICAgIGN1cnJlbnRQYXJlbnQgPSBjdXJyZW50TGlzdDtcbiAgICAgICAgICBjdXJyZW50SW5kZW50ID0gaW5kZW50O1xuICAgICAgICB9IGVsc2UgaWYgKGluZGVudC5sZW5ndGggPCBjdXJyZW50SW5kZW50Lmxlbmd0aCkge1xuICAgICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgIGN1cnJlbnRQYXJlbnQuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoID49IGluZGVudC5sZW5ndGggJiZcbiAgICAgICAgICAgIGN1cnJlbnRQYXJlbnQuZ2V0UGFyZW50KClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGN1cnJlbnRQYXJlbnQgPSBjdXJyZW50UGFyZW50LmdldFBhcmVudCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjdXJyZW50SW5kZW50ID0gaW5kZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZm9sZFJvb3QgPSBmb2xkZWRMaW5lcy5pbmNsdWRlcyhsKTtcblxuICAgICAgICBjdXJyZW50TGlzdCA9IG5ldyBMaXN0KFxuICAgICAgICAgIHJvb3QsXG4gICAgICAgICAgaW5kZW50LFxuICAgICAgICAgIGJ1bGxldCxcbiAgICAgICAgICBzcGFjZUFmdGVyQnVsbGV0LFxuICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgZm9sZFJvb3RcbiAgICAgICAgKTtcbiAgICAgICAgY3VycmVudFBhcmVudC5hZGRBZnRlckFsbChjdXJyZW50TGlzdCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNMaW5lV2l0aEluZGVudChsaW5lKSkge1xuICAgICAgICBpZiAoIWN1cnJlbnRMaXN0KSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9yKFxuICAgICAgICAgICAgYFVuYWJsZSB0byBwYXJzZSBsaXN0OiBleHBlY3RlZCBsaXN0IGl0ZW0sIGdvdCBlbXB0eSBsaW5lYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbmRlbnRUb0NoZWNrID0gY3VycmVudExpc3QuZ2V0Tm90ZXNJbmRlbnQoKSB8fCBjdXJyZW50SW5kZW50O1xuXG4gICAgICAgIGlmIChsaW5lLmluZGV4T2YoaW5kZW50VG9DaGVjaykgIT09IDApIHtcbiAgICAgICAgICBjb25zdCBleHBlY3RlZCA9IGluZGVudFRvQ2hlY2sucmVwbGFjZSgvIC9nLCBcIlNcIikucmVwbGFjZSgvXFx0L2csIFwiVFwiKTtcbiAgICAgICAgICBjb25zdCBnb3QgPSBsaW5lXG4gICAgICAgICAgICAubWF0Y2goL15bIFxcdF0qLylbMF1cbiAgICAgICAgICAgIC5yZXBsYWNlKC8gL2csIFwiU1wiKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcdC9nLCBcIlRcIik7XG5cbiAgICAgICAgICByZXR1cm4gZXJyb3IoXG4gICAgICAgICAgICBgVW5hYmxlIHRvIHBhcnNlIGxpc3Q6IGV4cGVjdGVkIGluZGVudCBcIiR7ZXhwZWN0ZWR9XCIsIGdvdCBcIiR7Z290fVwiYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWN1cnJlbnRMaXN0LmdldE5vdGVzSW5kZW50KCkpIHtcbiAgICAgICAgICBjb25zdCBtYXRjaGVzID0gbGluZS5tYXRjaCgvXlsgXFx0XSsvKTtcblxuICAgICAgICAgIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzWzBdLmxlbmd0aCA8PSBjdXJyZW50SW5kZW50Lmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKC9eXFxzKyQvLnRlc3QobGluZSkpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBlcnJvcihcbiAgICAgICAgICAgICAgYFVuYWJsZSB0byBwYXJzZSBsaXN0OiBleHBlY3RlZCBzb21lIGluZGVudCwgZ290IG5vIGluZGVudGBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VycmVudExpc3Quc2V0Tm90ZXNJbmRlbnQobWF0Y2hlc1swXSk7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50TGlzdC5hZGRMaW5lKGxpbmUuc2xpY2UoY3VycmVudExpc3QuZ2V0Tm90ZXNJbmRlbnQoKS5sZW5ndGgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBlcnJvcihcbiAgICAgICAgICBgVW5hYmxlIHRvIHBhcnNlIGxpc3Q6IGV4cGVjdGVkIGxpc3QgaXRlbSBvciBub3RlLCBnb3QgXCIke2xpbmV9XCJgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvb3Q7XG4gIH1cblxuICBwcml2YXRlIGlzRW1wdHlMaW5lKGxpbmU6IHN0cmluZykge1xuICAgIHJldHVybiBsaW5lLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHByaXZhdGUgaXNMaW5lV2l0aEluZGVudChsaW5lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nV2l0aFNwYWNlc1JlLnRlc3QobGluZSk7XG4gIH1cblxuICBwcml2YXRlIGlzTGlzdEl0ZW0obGluZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGxpc3RJdGVtUmUudGVzdChsaW5lKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNMaXN0SXRlbVdpdGhvdXRTcGFjZXMobGluZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGxpc3RJdGVtV2l0aG91dFNwYWNlc1JlLnRlc3QobGluZSk7XG4gIH1cbn1cbiIsImltcG9ydCB7IEFwcGx5Q2hhbmdlc1NlcnZpY2UgfSBmcm9tIFwiLi9BcHBseUNoYW5nZXNTZXJ2aWNlXCI7XG5pbXBvcnQgeyBQYXJzZXJTZXJ2aWNlIH0gZnJvbSBcIi4vUGFyc2VyU2VydmljZVwiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9NeUVkaXRvclwiO1xuaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvT3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIFBlcmZvcm1PcGVyYXRpb25TZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwYXJzZXI6IFBhcnNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBseUNoYW5nZXM6IEFwcGx5Q2hhbmdlc1NlcnZpY2VcbiAgKSB7fVxuXG4gIGV2YWxPcGVyYXRpb24ocm9vdDogUm9vdCwgb3A6IE9wZXJhdGlvbiwgZWRpdG9yOiBNeUVkaXRvcikge1xuICAgIG9wLnBlcmZvcm0oKTtcblxuICAgIGlmIChvcC5zaG91bGRVcGRhdGUoKSkge1xuICAgICAgdGhpcy5hcHBseUNoYW5nZXMuYXBwbHlDaGFuZ2VzKGVkaXRvciwgcm9vdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3VsZFVwZGF0ZTogb3Auc2hvdWxkVXBkYXRlKCksXG4gICAgICBzaG91bGRTdG9wUHJvcGFnYXRpb246IG9wLnNob3VsZFN0b3BQcm9wYWdhdGlvbigpLFxuICAgIH07XG4gIH1cblxuICBwZXJmb3JtT3BlcmF0aW9uKFxuICAgIGNiOiAocm9vdDogUm9vdCkgPT4gT3BlcmF0aW9uLFxuICAgIGVkaXRvcjogTXlFZGl0b3IsXG4gICAgY3Vyc29yID0gZWRpdG9yLmdldEN1cnNvcigpXG4gICkge1xuICAgIGNvbnN0IHJvb3QgPSB0aGlzLnBhcnNlci5wYXJzZShlZGl0b3IsIGN1cnNvcik7XG5cbiAgICBpZiAoIXJvb3QpIHtcbiAgICAgIHJldHVybiB7IHNob3VsZFVwZGF0ZTogZmFsc2UsIHNob3VsZFN0b3BQcm9wYWdhdGlvbjogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBjb25zdCBvcCA9IGNiKHJvb3QpO1xuXG4gICAgcmV0dXJuIHRoaXMuZXZhbE9wZXJhdGlvbihyb290LCBvcCwgZWRpdG9yKTtcbiAgfVxufVxuIiwiZXhwb3J0IHR5cGUgTGlzdExpbmVBY3Rpb24gPSBcIm5vbmVcIiB8IFwiem9vbS1pblwiIHwgXCJ0b2dnbGUtZm9sZGluZ1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuT3V0bGluZXJQbHVnaW5TZXR0aW5ncyB7XG4gIHN0eWxlTGlzdHM6IGJvb2xlYW47XG4gIGRlYnVnOiBib29sZWFuO1xuICBzdGlja0N1cnNvcjogYm9vbGVhbjtcbiAgYmV0dGVyRW50ZXI6IGJvb2xlYW47XG4gIGJldHRlclRhYjogYm9vbGVhbjtcbiAgc2VsZWN0QWxsOiBib29sZWFuO1xuICBsaXN0TGluZXM6IGJvb2xlYW47XG4gIGxpc3RMaW5lQWN0aW9uOiBMaXN0TGluZUFjdGlvbjtcbn1cblxuY29uc3QgREVGQVVMVF9TRVRUSU5HUzogT2JzaWRpYW5PdXRsaW5lclBsdWdpblNldHRpbmdzID0ge1xuICBzdHlsZUxpc3RzOiB0cnVlLFxuICBkZWJ1ZzogZmFsc2UsXG4gIHN0aWNrQ3Vyc29yOiB0cnVlLFxuICBiZXR0ZXJFbnRlcjogdHJ1ZSxcbiAgYmV0dGVyVGFiOiB0cnVlLFxuICBzZWxlY3RBbGw6IHRydWUsXG4gIGxpc3RMaW5lczogZmFsc2UsXG4gIGxpc3RMaW5lQWN0aW9uOiBcInRvZ2dsZS1mb2xkaW5nXCIsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2Uge1xuICBsb2FkRGF0YSgpOiBQcm9taXNlPE9ic2lkaWFuT3V0bGluZXJQbHVnaW5TZXR0aW5ncz47XG4gIHNhdmVEYXRhKHNldHRpZ25zOiBPYnNpZGlhbk91dGxpbmVyUGx1Z2luU2V0dGluZ3MpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG50eXBlIEsgPSBrZXlvZiBPYnNpZGlhbk91dGxpbmVyUGx1Z2luU2V0dGluZ3M7XG50eXBlIENhbGxiYWNrPFQgZXh0ZW5kcyBLPiA9IChjYjogT2JzaWRpYW5PdXRsaW5lclBsdWdpblNldHRpbmdzW1RdKSA9PiB2b2lkO1xuXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NTZXJ2aWNlIGltcGxlbWVudHMgT2JzaWRpYW5PdXRsaW5lclBsdWdpblNldHRpbmdzIHtcbiAgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlO1xuICBwcml2YXRlIHZhbHVlczogT2JzaWRpYW5PdXRsaW5lclBsdWdpblNldHRpbmdzO1xuICBwcml2YXRlIGhhbmRsZXJzOiBNYXA8SywgU2V0PENhbGxiYWNrPEs+Pj47XG5cbiAgY29uc3RydWN0b3Ioc3RvcmFnZTogU3RvcmFnZSkge1xuICAgIHRoaXMuc3RvcmFnZSA9IHN0b3JhZ2U7XG4gICAgdGhpcy5oYW5kbGVycyA9IG5ldyBNYXAoKTtcbiAgfVxuXG4gIGdldCBzdHlsZUxpc3RzKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5zdHlsZUxpc3RzO1xuICB9XG4gIHNldCBzdHlsZUxpc3RzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXQoXCJzdHlsZUxpc3RzXCIsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBkZWJ1ZygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuZGVidWc7XG4gIH1cbiAgc2V0IGRlYnVnKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXQoXCJkZWJ1Z1wiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgc3RpY2tDdXJzb3IoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLnN0aWNrQ3Vyc29yO1xuICB9XG4gIHNldCBzdGlja0N1cnNvcih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwic3RpY2tDdXJzb3JcIiwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0IGJldHRlckVudGVyKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5iZXR0ZXJFbnRlcjtcbiAgfVxuICBzZXQgYmV0dGVyRW50ZXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldChcImJldHRlckVudGVyXCIsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBiZXR0ZXJUYWIoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmJldHRlclRhYjtcbiAgfVxuICBzZXQgYmV0dGVyVGFiKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXQoXCJiZXR0ZXJUYWJcIiwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0IHNlbGVjdEFsbCgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuc2VsZWN0QWxsO1xuICB9XG4gIHNldCBzZWxlY3RBbGwodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldChcInNlbGVjdEFsbFwiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgbGlzdExpbmVzKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5saXN0TGluZXM7XG4gIH1cbiAgc2V0IGxpc3RMaW5lcyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwibGlzdExpbmVzXCIsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBsaXN0TGluZUFjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMubGlzdExpbmVBY3Rpb247XG4gIH1cbiAgc2V0IGxpc3RMaW5lQWN0aW9uKHZhbHVlOiBMaXN0TGluZUFjdGlvbikge1xuICAgIHRoaXMuc2V0KFwibGlzdExpbmVBY3Rpb25cIiwgdmFsdWUpO1xuICB9XG5cbiAgb25DaGFuZ2U8VCBleHRlbmRzIEs+KGtleTogVCwgY2I6IENhbGxiYWNrPFQ+KSB7XG4gICAgaWYgKCF0aGlzLmhhbmRsZXJzLmhhcyhrZXkpKSB7XG4gICAgICB0aGlzLmhhbmRsZXJzLnNldChrZXksIG5ldyBTZXQoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5oYW5kbGVycy5nZXQoa2V5KS5hZGQoY2IpO1xuICB9XG5cbiAgcmVtb3ZlQ2FsbGJhY2s8VCBleHRlbmRzIEs+KGtleTogVCwgY2I6IENhbGxiYWNrPFQ+KTogdm9pZCB7XG4gICAgY29uc3QgaGFuZGxlcnMgPSB0aGlzLmhhbmRsZXJzLmdldChrZXkpO1xuXG4gICAgaWYgKGhhbmRsZXJzKSB7XG4gICAgICBoYW5kbGVycy5kZWxldGUoY2IpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKERFRkFVTFRfU0VUVElOR1MpKSB7XG4gICAgICB0aGlzLnNldChrIGFzIGtleW9mIE9ic2lkaWFuT3V0bGluZXJQbHVnaW5TZXR0aW5ncywgdik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnZhbHVlcyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIERFRkFVTFRfU0VUVElOR1MsXG4gICAgICBhd2FpdCB0aGlzLnN0b3JhZ2UubG9hZERhdGEoKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBzYXZlKCkge1xuICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zYXZlRGF0YSh0aGlzLnZhbHVlcyk7XG4gIH1cblxuICBzZXQ8VCBleHRlbmRzIEs+KGtleTogVCwgdmFsdWU6IE9ic2lkaWFuT3V0bGluZXJQbHVnaW5TZXR0aW5nc1tUXSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVzW2tleV0gPSB2YWx1ZTtcbiAgICBjb25zdCBjYWxsYmFja3MgPSB0aGlzLmhhbmRsZXJzLmdldChrZXkpO1xuXG4gICAgaWYgKCFjYWxsYmFja3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNiIG9mIGNhbGxiYWNrcy52YWx1ZXMoKSkge1xuICAgICAgY2IodmFsdWUpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IERlbGV0ZVNob3VsZElnbm9yZUJ1bGxldHNGZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvRGVsZXRlU2hvdWxkSWdub3JlQnVsbGV0c0ZlYXR1cmVcIjtcbmltcG9ydCB7IEVuc3VyZUN1cnNvckluTGlzdENvbnRlbnRGZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvRW5zdXJlQ3Vyc29ySW5MaXN0Q29udGVudEZlYXR1cmVcIjtcbmltcG9ydCB7IEVudGVyT3V0ZGVudElmTGluZUlzRW1wdHlGZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvRW50ZXJPdXRkZW50SWZMaW5lSXNFbXB0eUZlYXR1cmVcIjtcbmltcG9ydCB7IEVudGVyU2hvdWxkQ3JlYXRlTmV3SXRlbUZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9FbnRlclNob3VsZENyZWF0ZU5ld0l0ZW1PbkNoaWxkTGV2ZWxGZWF0dXJlXCI7XG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvRmVhdHVyZVwiO1xuaW1wb3J0IHsgRm9sZEZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9Gb2xkRmVhdHVyZVwiO1xuaW1wb3J0IHsgTGluZXNGZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvTGluZXNGZWF0dXJlXCI7XG5pbXBvcnQgeyBMaXN0c1N0eWxlc0ZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9MaXN0c1N0eWxlc0ZlYXR1cmVcIjtcbmltcG9ydCB7IE1vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRMaW5lRmVhdHVyZSB9IGZyb20gXCIuL2ZlYXR1cmVzL01vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRMaW5lRmVhdHVyZVwiO1xuaW1wb3J0IHsgTW92ZUl0ZW1zRmVhdHVyZSB9IGZyb20gXCIuL2ZlYXR1cmVzL01vdmVJdGVtc0ZlYXR1cmVcIjtcbmltcG9ydCB7IFNlbGVjdEFsbEZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9TZWxlY3RBbGxGZWF0dXJlXCI7XG5pbXBvcnQgeyBTZWxlY3Rpb25TaG91bGRJZ25vcmVCdWxsZXRzRmVhdHVyZSB9IGZyb20gXCIuL2ZlYXR1cmVzL1NlbGVjdGlvblNob3VsZElnbm9yZUJ1bGxldHNGZWF0dXJlXCI7XG5pbXBvcnQgeyBTZXR0aW5nc1RhYkZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9TZXR0aW5nc1RhYkZlYXR1cmVcIjtcbmltcG9ydCB7IFNoaWZ0RW50ZXJTaG91bGRDcmVhdGVOb3RlRmVhdHVyZSB9IGZyb20gXCIuL2ZlYXR1cmVzL1NoaWZ0RW50ZXJTaG91bGRDcmVhdGVOb3RlRmVhdHVyZVwiO1xuaW1wb3J0IHsgQXBwbHlDaGFuZ2VzU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL0FwcGx5Q2hhbmdlc1NlcnZpY2VcIjtcbmltcG9ydCB7IElNRVNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9JTUVTZXJ2aWNlXCI7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvTG9nZ2VyU2VydmljZVwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvT2JzaWRpYW5TZXJ2aWNlXCI7XG5pbXBvcnQgeyBQYXJzZXJTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvUGFyc2VyU2VydmljZVwiO1xuaW1wb3J0IHsgUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9QZXJmb3JtT3BlcmF0aW9uU2VydmljZVwiO1xuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvU2V0dGluZ3NTZXJ2aWNlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9ic2lkaWFuT3V0bGluZXJQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuICBwcml2YXRlIGZlYXR1cmVzOiBGZWF0dXJlW107XG4gIHByb3RlY3RlZCBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlO1xuICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZTtcbiAgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlO1xuICBwcml2YXRlIHBhcnNlcjogUGFyc2VyU2VydmljZTtcbiAgcHJpdmF0ZSBhcHBseUNoYW5nZXM6IEFwcGx5Q2hhbmdlc1NlcnZpY2U7XG4gIHByaXZhdGUgcGVyZm9ybU9wZXJhdGlvbjogUGVyZm9ybU9wZXJhdGlvblNlcnZpY2U7XG4gIHByaXZhdGUgaW1lOiBJTUVTZXJ2aWNlO1xuXG4gIGFzeW5jIG9ubG9hZCgpIHtcbiAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBvYnNpZGlhbi1vdXRsaW5lcmApO1xuXG4gICAgdGhpcy5vYnNpZGlhbiA9IG5ldyBPYnNpZGlhblNlcnZpY2UodGhpcy5hcHApO1xuXG4gICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBTZXR0aW5nc1NlcnZpY2UodGhpcyk7XG4gICAgYXdhaXQgdGhpcy5zZXR0aW5ncy5sb2FkKCk7XG5cbiAgICB0aGlzLmxvZ2dlciA9IG5ldyBMb2dnZXJTZXJ2aWNlKHRoaXMuc2V0dGluZ3MpO1xuXG4gICAgdGhpcy5wYXJzZXIgPSBuZXcgUGFyc2VyU2VydmljZSh0aGlzLmxvZ2dlcik7XG4gICAgdGhpcy5hcHBseUNoYW5nZXMgPSBuZXcgQXBwbHlDaGFuZ2VzU2VydmljZSgpO1xuICAgIHRoaXMucGVyZm9ybU9wZXJhdGlvbiA9IG5ldyBQZXJmb3JtT3BlcmF0aW9uU2VydmljZShcbiAgICAgIHRoaXMucGFyc2VyLFxuICAgICAgdGhpcy5hcHBseUNoYW5nZXNcbiAgICApO1xuXG4gICAgdGhpcy5pbWUgPSBuZXcgSU1FU2VydmljZSgpO1xuICAgIGF3YWl0IHRoaXMuaW1lLmxvYWQoKTtcblxuICAgIHRoaXMuZmVhdHVyZXMgPSBbXG4gICAgICBuZXcgU2V0dGluZ3NUYWJGZWF0dXJlKHRoaXMsIHRoaXMuc2V0dGluZ3MpLFxuICAgICAgbmV3IExpc3RzU3R5bGVzRmVhdHVyZSh0aGlzLnNldHRpbmdzLCB0aGlzLm9ic2lkaWFuKSxcbiAgICAgIG5ldyBFbnRlck91dGRlbnRJZkxpbmVJc0VtcHR5RmVhdHVyZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5pbWUsXG4gICAgICAgIHRoaXMub2JzaWRpYW4sXG4gICAgICAgIHRoaXMucGVyZm9ybU9wZXJhdGlvblxuICAgICAgKSxcbiAgICAgIG5ldyBFbnRlclNob3VsZENyZWF0ZU5ld0l0ZW1GZWF0dXJlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZSxcbiAgICAgICAgdGhpcy5vYnNpZGlhbixcbiAgICAgICAgdGhpcy5wZXJmb3JtT3BlcmF0aW9uXG4gICAgICApLFxuICAgICAgbmV3IEVuc3VyZUN1cnNvckluTGlzdENvbnRlbnRGZWF0dXJlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLm9ic2lkaWFuLFxuICAgICAgICB0aGlzLnBlcmZvcm1PcGVyYXRpb25cbiAgICAgICksXG4gICAgICBuZXcgTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmVGZWF0dXJlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZSxcbiAgICAgICAgdGhpcy5vYnNpZGlhbixcbiAgICAgICAgdGhpcy5wZXJmb3JtT3BlcmF0aW9uXG4gICAgICApLFxuICAgICAgbmV3IERlbGV0ZVNob3VsZElnbm9yZUJ1bGxldHNGZWF0dXJlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZSxcbiAgICAgICAgdGhpcy5vYnNpZGlhbixcbiAgICAgICAgdGhpcy5wZXJmb3JtT3BlcmF0aW9uXG4gICAgICApLFxuICAgICAgbmV3IFNlbGVjdGlvblNob3VsZElnbm9yZUJ1bGxldHNGZWF0dXJlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZSxcbiAgICAgICAgdGhpcy5vYnNpZGlhbixcbiAgICAgICAgdGhpcy5wZXJmb3JtT3BlcmF0aW9uXG4gICAgICApLFxuICAgICAgbmV3IEZvbGRGZWF0dXJlKHRoaXMsIHRoaXMub2JzaWRpYW4pLFxuICAgICAgbmV3IFNlbGVjdEFsbEZlYXR1cmUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMuaW1lLFxuICAgICAgICB0aGlzLm9ic2lkaWFuLFxuICAgICAgICB0aGlzLnBlcmZvcm1PcGVyYXRpb25cbiAgICAgICksXG4gICAgICBuZXcgTW92ZUl0ZW1zRmVhdHVyZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5pbWUsXG4gICAgICAgIHRoaXMub2JzaWRpYW4sXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMucGVyZm9ybU9wZXJhdGlvblxuICAgICAgKSxcbiAgICAgIG5ldyBTaGlmdEVudGVyU2hvdWxkQ3JlYXRlTm90ZUZlYXR1cmUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMub2JzaWRpYW4sXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMuaW1lLFxuICAgICAgICB0aGlzLnBlcmZvcm1PcGVyYXRpb25cbiAgICAgICksXG4gICAgICBuZXcgTGluZXNGZWF0dXJlKHRoaXMsIHRoaXMuc2V0dGluZ3MsIHRoaXMub2JzaWRpYW4sIHRoaXMucGFyc2VyKSxcbiAgICBdO1xuXG4gICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIHRoaXMuZmVhdHVyZXMpIHtcbiAgICAgIGF3YWl0IGZlYXR1cmUubG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9udW5sb2FkKCkge1xuICAgIGNvbnNvbGUubG9nKGBVbmxvYWRpbmcgb2JzaWRpYW4tb3V0bGluZXJgKTtcblxuICAgIGF3YWl0IHRoaXMuaW1lLnVubG9hZCgpO1xuXG4gICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIHRoaXMuZmVhdHVyZXMpIHtcbiAgICAgIGF3YWl0IGZlYXR1cmUudW5sb2FkKCk7XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsia2V5bWFwIiwiRWRpdG9yU3RhdGUiLCJQcmVjIiwiTm90aWNlIiwiZm9sZGVkUmFuZ2VzIiwiZm9sZGFibGUiLCJmb2xkRWZmZWN0IiwidW5mb2xkRWZmZWN0IiwicnVuU2NvcGVIYW5kbGVycyIsIm9ic2lkaWFuIiwiZWRpdG9ySW5mb0ZpZWxkIiwiVmlld1BsdWdpbiIsIlBsdWdpblNldHRpbmdUYWIiLCJTZXR0aW5nIiwiUGxhdGZvcm0iLCJQbHVnaW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdURBO0FBQ08sU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0FBQzdELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUN0RyxRQUFRLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUN0SCxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM5RSxLQUFLLENBQUMsQ0FBQztBQUNQOztBQzNFTSxTQUFVLHlCQUF5QixDQUFDLElBQVUsRUFBQTtJQUNsRCxTQUFTLEtBQUssQ0FBQyxNQUFtQixFQUFBO1FBQ2hDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUVkLFFBQUEsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFD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 diff --git a/notes/.obsidian/plugins/obsidian-outliner/manifest.json b/notes/.obsidian/plugins/obsidian-outliner/manifest.json index 226de7f..cd2f5b2 100644 --- a/notes/.obsidian/plugins/obsidian-outliner/manifest.json +++ b/notes/.obsidian/plugins/obsidian-outliner/manifest.json @@ -1,10 +1,10 @@ { "id": "obsidian-outliner", "name": "Outliner", - "version": "3.0.0", - "minAppVersion": "0.15.2", + "version": "4.1.1", + "minAppVersion": "1.0.0", "description": "Work with your lists like in Workflowy or RoamResearch.", "author": "Viacheslav Slinko", "authorUrl": "https://github.com/vslinko", - "isDesktopOnly": true + "isDesktopOnly": false } diff --git a/notes/.obsidian/plugins/obsidian-outliner/styles.css b/notes/.obsidian/plugins/obsidian-outliner/styles.css index f4cd44d..c279228 100644 --- a/notes/.obsidian/plugins/obsidian-outliner/styles.css +++ b/notes/.obsidian/plugins/obsidian-outliner/styles.css @@ -1,28 +1,17 @@ /* lists */ .outliner-plugin-better-lists .cm-s-obsidian .HyperMD-list-line { - padding-top: 8px; + padding-top: 0.4em; } /* bullets */ -.outliner-plugin-better-bullets - .cm-s-obsidian:not(.is-live-preview) - .cm-formatting-list-ul:before, -.outliner-plugin-better-bullets - .cm-s-obsidian.is-live-preview - .list-bullet:before { - visibility: visible; - content: "•"; - font-size: 150%; - position: absolute; - margin-top: -6px; - margin-left: -3px; - color: var(--text-muted); +.outliner-plugin-better-bullets .cm-formatting-list-ul { + margin-right: 0.3em; } -.outliner-plugin-better-bullets - .cm-s-obsidian.is-live-preview - .list-bullet::after { - content: none; +.outliner-plugin-better-bullets .list-bullet::after { + width: 0.4em; + height: 0.4em; + background-color: var(--text-muted); } /* lines */ @@ -32,7 +21,7 @@ right: 0; bottom: 0; left: 0; - padding: 20px; + padding: var(--file-margins); padding-left: 0; pointer-events: none; overflow: hidden; @@ -47,7 +36,7 @@ position: absolute; width: 5px; margin-left: 0.5ch; - margin-top: 1.8em; + margin-top: 1em; z-index: 1; cursor: pointer; background: transparent; @@ -61,7 +50,7 @@ } .outliner-plugin-better-bullets .outliner-plugin-list-line { - margin-top: 2em; + margin-top: 1.4em; } .markdown-source-view.mod-cm6.is-readable-line-width @@ -70,22 +59,13 @@ margin: auto; } -.markdown-source-view.mod-cm6.is-folding .outliner-plugin-list-line { - margin-left: 14px; -} - -.outliner-plugin-better-bullets - .markdown-source-view.mod-cm6.is-folding - .outliner-plugin-list-line { - margin-left: 15px; -} - .outliner-plugin-list-line:hover { background: var(--text-faint); } .outliner-plugin-vertical-lines .markdown-source-view.mod-cm6 + .cm-hmd-list-indent .cm-indent::before { content: none; } diff --git a/notes/.obsidian/plugins/sliding-panes-obsidian/manifest.json b/notes/.obsidian/plugins/sliding-panes-obsidian/manifest.json index ea01973..3ef7598 100644 --- a/notes/.obsidian/plugins/sliding-panes-obsidian/manifest.json +++ b/notes/.obsidian/plugins/sliding-panes-obsidian/manifest.json @@ -5,6 +5,6 @@ "authorUrl": "https://github.com/deathau", "description": "Sliding Panes! Based on the style of [Andy Matuschak's Notes](https://notes.andymatuschak.org/)", "isDesktopOnly": false, - "version": "3.3.0", - "minAppVersion": "0.10.9" + "version": "3.4.0", + "minAppVersion": "0.16.0" } \ No newline at end of file diff --git a/notes/.obsidian/plugins/sliding-panes-obsidian/styles.css b/notes/.obsidian/plugins/sliding-panes-obsidian/styles.css index 5e99aca..981c941 100644 --- a/notes/.obsidian/plugins/sliding-panes-obsidian/styles.css +++ b/notes/.obsidian/plugins/sliding-panes-obsidian/styles.css @@ -2,11 +2,11 @@ body.plugin-sliding-panes .workspace > .mod-root { overflow-x: auto; overflow-y: hidden; } -body.plugin-sliding-panes .workspace > .mod-root > .workspace-leaf { +body.plugin-sliding-panes .workspace > .mod-root > .workspace-tabs { display: block; flex: none; } -body.plugin-sliding-panes .workspace > .mod-root > .workspace-leaf .workspace-leaf-content { +body.plugin-sliding-panes .workspace > .mod-root > .workspace-tabs .workspace-leaf { position: relative; } body.plugin-sliding-panes .workspace > .mod-root > .workspace-split { @@ -19,7 +19,7 @@ body.plugin-sliding-panes .workspace > .mod-root .mod-am-left-of-active .cm-s-ob left: 150% !important; } -body.plugin-sliding-panes-stacking .workspace > .mod-root > .workspace-leaf, +body.plugin-sliding-panes-stacking .workspace > .mod-root > .workspace-tabs, body.plugin-sliding-panes-stacking .workspace > .mod-root > .workspace-split { box-shadow: 0px 0px 20px 20px rgba(0, 0, 0, 0.25); position: sticky; diff --git a/notes/.obsidian/plugins/tag-wrangler/main.js b/notes/.obsidian/plugins/tag-wrangler/main.js index 5f89c95..1da1a67 100644 --- a/notes/.obsidian/plugins/tag-wrangler/main.js +++ b/notes/.obsidian/plugins/tag-wrangler/main.js @@ -1,7727 +1,152 @@ -'use strict'; - -var obsidian = require('obsidian'); - -const f = (fn) => [ - /*eslint no-unused-vars: 0*/ - function (a) {return fn(...arguments);}, - function (a, b) {return fn(...arguments);}, - function (a, b, c) {return fn(...arguments);}, - function (a, b, c, d) {return fn(...arguments);}, - function (a, b, c, d, e) {return fn(...arguments);}, -]; - -const currify = (fn, ...args) => { - check(fn); - - if (args.length >= fn.length) - return fn(...args); - - const again = (...args2) => { - return currify(fn, ...[...args, ...args2]); - }; - - const count = fn.length - args.length - 1; - const func = f(again)[count]; - - return func || again; -}; - -var currify_1 = currify; - -function check(fn) { - if (typeof fn !== 'function') - throw Error('fn should be function!'); -} - -var fullstore = (value) => { - const data = { - value, - }; - - return (...args) => { - const [value] = args; - - if (!args.length) - return data.value; - - data.value = value; - - return value; - }; -}; - -const query$1 = (a) => document.querySelector(`[data-name="${a}"]`); - -const setAttribute = currify_1((el, obj, name) => el.setAttribute(name, obj[name])); -const set$1 = currify_1((el, obj, name) => el[name] = obj[name]); -const not = currify_1((f, a) => !f(a)); -const isCamelCase = (a) => a != a.toLowerCase(); - -var createElement = (name, options = {}) => { - const { - dataName, - notAppend, - parent = document.body, - uniq = true, - ...restOptions - } = options; - - const elFound = isElementPresent(dataName); - - if (uniq && elFound) - return elFound; - - const el = document.createElement(name); - - if (dataName) - el.dataset.name = dataName; - - Object.keys(restOptions) - .filter(isCamelCase) - .map(set$1(el, options)); - - Object.keys(restOptions) - .filter(not(isCamelCase)) - .map(setAttribute(el, options)); - - if (!notAppend) - parent.appendChild(el); - - return el; -}; - -var isElementPresent_1 = isElementPresent; - -function isElementPresent(dataName) { - if (!dataName) - return; - - return query$1(dataName); -} -createElement.isElementPresent = isElementPresent_1; - -const keyDown = currify_1(keyDown_); - -const BUTTON_OK_CANCEL = { - ok: 'OK', - cancel: 'Cancel', -}; - -const zIndex = fullstore(100); - -var prompt = (title, msg, value = '', options) => { - const type = getType(options); - const val = String(value) - .replace(/"/g, '"'); - - const valueStr = ``; - const buttons = getButtons(options) || BUTTON_OK_CANCEL; - - return showDialog(title, msg, valueStr, buttons, options); -}; - -var confirm = (title, msg, options) => { - const buttons = getButtons(options) || BUTTON_OK_CANCEL; - - return showDialog(title, msg, '', buttons, options); -}; - -var progress = (title, message, options) => { - const valueStr = ` +var Rn=Object.create;var Ie=Object.defineProperty;var Un=Object.getOwnPropertyDescriptor;var Vn=Object.getOwnPropertyNames;var Jn=Object.getPrototypeOf,Yn=Object.prototype.hasOwnProperty;var Gn=(s,e,t)=>e in s?Ie(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var Ce=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),Cs=(s,e)=>{for(var t in e)Ie(s,t,{get:e[t],enumerable:!0})},$s=(s,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Vn(e))!Yn.call(s,i)&&i!==t&&Ie(s,i,{get:()=>e[i],enumerable:!(n=Un(e,i))||n.enumerable});return s};var Jt=(s,e,t)=>(t=s!=null?Rn(Jn(s)):{},$s(e||!s||!s.__esModule?Ie(t,"default",{value:s,enumerable:!0}):t,s)),Qn=s=>$s(Ie({},"__esModule",{value:!0}),s);var Yt=(s,e,t)=>(Gn(s,typeof e!="symbol"?e+"":e,t),t);var Ps=Ce((or,Wn)=>{Wn.exports={}});var Gt=Ce((ar,Ms)=>{"use strict";var Hn=s=>[function(e){return s(...arguments)},function(e,t){return s(...arguments)},function(e,t,n){return s(...arguments)},function(e,t,n,i){return s(...arguments)},function(e,t,n,i,r){return s(...arguments)}],_s=(s,...e)=>{if(Xn(s),e.length>=s.length)return s(...e);let t=(...r)=>_s(s,...e,...r),n=s.length-e.length-1;return Hn(t)[n]||t};Ms.exports=_s;function Xn(s){if(typeof s!="function")throw Error("fn should be function!")}});var xs=Ce((lr,Bs)=>{"use strict";Bs.exports=s=>{let e={value:s};return(...t)=>{let[n]=t;return t.length?(e.value=n,n):e.value}}});var qs=Ce((cr,Wt)=>{"use strict";var Qt=Gt(),zn=s=>document.querySelector(`[data-name="${s}"]`),Zn=Qt((s,e,t)=>s.setAttribute(t,e[t])),ei=Qt((s,e,t)=>s[t]=e[t]),ti=Qt((s,e)=>!s(e)),js=s=>s!=s.toLowerCase();Wt.exports=(s,e={})=>{let{dataName:t,notAppend:n,parent:i=document.body,uniq:r=!0,...o}=e,a=Ds(t);if(r&&a)return a;let l=document.createElement(s);return t&&(l.dataset.name=t),Object.keys(o).filter(js).map(ei(l,e)),Object.keys(o).filter(ti(js)).map(Zn(l,e)),n||i.appendChild(l),l};Wt.exports.isElementPresent=Ds;function Ds(s){if(!!s)return zn(s)}});var lt=Ce(Pe=>{"use strict";Ps();var Xt=Gt(),Ht=xs(),si=qs(),ni=Xt(li),ii={ok:"OK"},Rs={ok:"OK",cancel:"Cancel"},Fs=Ht(100);Pe.alert=(s,e,t)=>{let n=zt(t)||ii;return at(s,e,"",n,t)};Pe.prompt=(s,e,t="",n)=>{let i=ri(n),r=String(t).replace(/"/g,"""),o=``,a=zt(n)||Rs;return at(s,e,o,a,n)};Pe.confirm=(s,e,t)=>{let n=zt(t)||Rs;return at(s,e,"",n,t)};Pe.progress=(s,e,t)=>{let r=at(s,e,` 0% - `; - - const buttons = { - cancel: 'Abort', - }; - - const promise = showDialog(title, message, valueStr, buttons, options); - const {ok, dialog} = promise; - const resolve = ok(); - - find(dialog, ['cancel']).map((el) => { - el.focus(); - }); - - Object.assign(promise, { - setProgress(count) { - const [elProgress] = find(dialog, ['progress']); - const [elCounter] = find(dialog, ['counter']); - - elProgress.value = count; - elCounter.textContent = `${count}%`; - - if (count === 100) { - remove(dialog); - resolve(); - } - }, - - remove() { - remove(dialog); - }, - }); - - return promise; -}; - -function getButtons(options = {}) { - const {buttons} = options; - - if (!buttons) - return null; - - return buttons; -} - -function getType(options = {}) { - const {type} = options; - - if (type === 'password') - return 'password'; - - return 'text'; -} - -function getTemplate(title, msg, value, buttons) { - const encodedMsg = msg.replace(/\n/g, '
'); - - return `
+ `,{cancel:"Abort"},t),{ok:o,dialog:a}=r,l=o();return R(a,["cancel"]).map(c=>{c.focus()}),Object.assign(r,{setProgress(c){let[f]=R(a,["progress"]),[u]=R(a,["counter"]);f.value=c,u.textContent=`${c}%`,c===100&&($e(a),l())},remove(){$e(a)}}),r};function zt(s={}){let{buttons:e}=s;return e||null}function ri(s={}){let{type:e}=s;return e==="password"?"password":"text"}function oi(s,e,t,n){let i=e.replace(/\n/g,"
");return`
-
${ title }
-
${ encodedMsg }${ value }
+
${s}
+
${i}${t}
- ${parseButtons(buttons)} + ${ai(n)}
-
`; -} - -function parseButtons(buttons) { - const names = Object.keys(buttons); - const parse = currify_1((buttons, name, i) => ``); - - return names - .map(parse(buttons)) - .join(''); -} - -function showDialog(title, msg, value, buttons, options) { - const ok = fullstore(); - const cancel = fullstore(); - - const closeButtons = [ - 'cancel', - 'close', - 'ok', - ]; - - const promise = new Promise((resolve, reject) => { - const noCancel = options && options.cancel === false; - const empty = () => {}; - const rejectError = () => reject(Error()); - - ok(resolve); - cancel(noCancel ? empty : rejectError); - }); - - const innerHTML = getTemplate(title, msg, value, buttons); - - const dialog = createElement('div', { - innerHTML, - className: 'smalltalk', - style: `z-index: ${zIndex(zIndex() + 1)}`, - }); - - for (const el of find(dialog, ['ok', 'input'])) - el.focus(); - - for (const el of find(dialog, ['input'])) { - el.setSelectionRange(0, value.length); - } - - addListenerAll('click', dialog, closeButtons, (event) => { - closeDialog(event.target, dialog, ok(), cancel()); - }); - - for (const event of ['click', 'contextmenu']) - dialog.addEventListener(event, (e) => { - e.stopPropagation(); - for (const el of find(dialog, ['ok', 'input'])) - el.focus(); - }); - - dialog.addEventListener('keydown', keyDown(dialog, ok(), cancel())); - - return Object.assign(promise, { - dialog, - ok, - }); -} - -function keyDown_(dialog, ok, cancel, event) { - const KEY = { - ENTER : 13, - ESC : 27, - TAB : 9, - LEFT : 37, - UP : 38, - RIGHT : 39, - DOWN : 40, - }; - - const {keyCode} = event; - const el = event.target; - - const namesAll = ['ok', 'cancel', 'input']; - const names = find(dialog, namesAll) - .map(getDataName); - - switch(keyCode) { - case KEY.ENTER: - closeDialog(el, dialog, ok, cancel); - event.preventDefault(); - break; - - case KEY.ESC: - remove(dialog); - cancel(); - break; - - case KEY.TAB: - if (event.shiftKey) - tab(dialog, names); - - tab(dialog, names); - event.preventDefault(); - break; - - default: - ['left', 'right', 'up', 'down'].filter((name) => { - return keyCode === KEY[name.toUpperCase()]; - }).forEach(() => { - changeButtonFocus(dialog, names); - }); - - break; - } - - event.stopPropagation(); -} - -function getDataName(el) { - return el - .getAttribute('data-name') - .replace('js-', ''); -} - -const getName = (activeName) => { - if (activeName === 'cancel') - return 'ok'; - - return 'cancel'; -}; - -function changeButtonFocus(dialog, names) { - const active = document.activeElement; - const activeName = getDataName(active); - const isButton = /ok|cancel/.test(activeName); - const count = names.length - 1; - - if (activeName === 'input' || !count || !isButton) - return; - - const name = getName(activeName); - - for (const el of find(dialog, [name])) { - el.focus(); - } -} - -const getIndex = (count, index) => { - if (index === count) - return 0; - - return index + 1; -}; - -function tab(dialog, names) { - const active = document.activeElement; - const activeName = getDataName(active); - const count = names.length - 1; - - const activeIndex = names.indexOf(activeName); - const index = getIndex(count, activeIndex); - - const name = names[index]; - - for (const el of find(dialog, [name])) - el.focus(); -} - -function closeDialog(el, dialog, ok, cancel) { - const name = el - .getAttribute('data-name') - .replace('js-', ''); - - if (/close|cancel/.test(name)) { - cancel(); - remove(dialog); - return; - } - - const value = find(dialog, ['input']) - .reduce((value, el) => el.value, null); - - ok(value); - remove(dialog); -} - -const query = currify_1((element, name) => element.querySelector(`[data-name="js-${ name }"]`)); - -function find(element, names) { - const elements = names - .map(query(element)) - .filter(Boolean); - - return elements; -} - -function addListenerAll(event, parent, elements, fn) { - for (const el of find(parent, elements)) { - el.addEventListener(event, fn); - } -} - -function remove(dialog) { - const {parentElement} = dialog; - - if (parentElement) - parentElement.removeChild(dialog); -} - -class Progress { - - constructor(title, message) { - this.progress = progress(title, message); - this.progress.catch(e => { - this.aborted = true; - if (e && (e.constructor !== Error || e.message !== "")) console.error(e); - }); - this.dialog = this.progress.dialog; - this.aborted = false; - } - - async forEach(collection, func) { - try { - if (this.aborted) - return; - let processed = 0, range = collection.length, accum = 0, pct = 0; - for (const item of collection) { - await func(item, processed++, collection, this); - if (this.aborted) - return; - accum += 100; - if (accum > range) { - const remainder = accum % range, step = (accum - remainder) / range; - this.progress.setProgress(pct += step); - accum = remainder; - } - } - if (pct < 100) - this.progress.setProgress(100); - return this; - } finally { - this.progress.remove(); - } - } - - set title(text) { this.dialog.querySelector("header").textContent = text; } - get title() { return this.dialog.querySelector("header").textContent; } - - set message(text) { - this.dialog.querySelector(".content-area").childNodes[0].textContent = text; - } - - get message() { - return this.dialog.querySelector(".content-area").childNodes[0].textContent; - } -} - -async function validatedInput(title, message, value = "", regex = ".*", what = "entry") { - while (true) { - const input = prompt(title, message, value); - const inputField = input.dialog.find("input"); - const isValid = (t) => new RegExp(`^${regex}$`).test(t); - - inputField.setSelectionRange(value.length, value.length); - inputField.pattern = regex; - inputField.oninput = () => inputField.setAttribute("aria-invalid", !isValid(inputField.value)); - - const result = await input; - if (isValid(result)) return result; - - new obsidian.Notice(`"${result}" is not a valid ${what}`); - } -} - -const tagBody = /^#[^\u2000-\u206F\u2E00-\u2E7F'!"#$%&()*+,.:;<=>?@^`{|}~\[\]\\\s]+$/; - -class Tag { - constructor(name) { - const - hashed = this.tag = Tag.toTag(name), - canonical = this.canonical = hashed.toLowerCase(), - canonical_prefix = this.canonical_prefix = canonical + "/"; - this.name = hashed.slice(1); - this.matches = function (text) { - text = text.toLowerCase(); - return text == canonical || text.startsWith(canonical_prefix); - }; - } - toString() { return this.tag; } - - static isTag(s) { return tagBody.test(s); } - - static toTag(name) { - while (name.startsWith("##")) name = name.slice(1); - return name.startsWith("#") ? name : "#"+name; - } - - static canonical(name) { - return Tag.toTag(name).toLowerCase(); - } -} - -class Replacement { - - constructor(fromTag, toTag) { - const cache = Object.assign( - Object.create(null), { - [fromTag.tag]: toTag.tag, - [fromTag.name]: toTag.name, - } - ); - - this.inString = function(text, pos = 0) { - return text.slice(0, pos) + toTag.tag + text.slice(pos + fromTag.tag.length); - }; - - this.inArray = (tags, skipOdd, isAlias) => { - return tags.map((t, i) => { - if (skipOdd && (i & 1)) return t; // leave odd entries (separators) alone - // Obsidian allows spaces as separators within array elements - if (!t) return t; - // Skip non-tag parts - if (isAlias) { - if (!t.startsWith("#") || !Tag.isTag(t)) return t; - } else if (/[ ,\n]/.test(t)) { - return this.inArray(t.split(/([, \n]+)/), true).join(""); - } - if (cache[t]) return cache[t]; - const lc = t.toLowerCase(); - if (cache[lc]) { - return cache[t] = cache[lc]; - } else if (lc.startsWith(fromTag.canonical_prefix)) { - return cache[t] = cache[lc] = this.inString(t); - } else if (("#" + lc).startsWith(fromTag.canonical_prefix)) { - return cache[t] = cache[lc] = this.inString("#" + t).slice(1); - } - return cache[t] = cache[lc] = t; - }); - }; - - this.willMergeTags = function (tagNames) { - // Renaming to change case doesn't lose info, so ignore it - if (fromTag.canonical === toTag.canonical) return; - - const existing = new Set(tagNames.map(s => s.toLowerCase())); - - for (const tagName of tagNames.filter(fromTag.matches)) { - const changed = this.inString(tagName); - if (existing.has(changed.toLowerCase())) - return [new Tag(tagName), new Tag(changed)]; - } - - }; - } -} - -const ALIAS = Symbol.for('yaml.alias'); -const DOC = Symbol.for('yaml.document'); -const MAP = Symbol.for('yaml.map'); -const PAIR = Symbol.for('yaml.pair'); -const SCALAR$1 = Symbol.for('yaml.scalar'); -const SEQ = Symbol.for('yaml.seq'); -const NODE_TYPE = Symbol.for('yaml.node.type'); -const isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS; -const isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC; -const isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP; -const isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR; -const isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR$1; -const isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ; -function isCollection(node) { - if (node && typeof node === 'object') - switch (node[NODE_TYPE]) { - case MAP: - case SEQ: - return true; - } - return false; -} -function isNode(node) { - if (node && typeof node === 'object') - switch (node[NODE_TYPE]) { - case ALIAS: - case MAP: - case SCALAR$1: - case SEQ: - return true; - } - return false; -} -const hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor; -class NodeBase { - constructor(type) { - Object.defineProperty(this, NODE_TYPE, { value: type }); - } - /** Create a copy of this node. */ - clone() { - const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this)); - if (this.range) - copy.range = this.range.slice(); - return copy; - } -} - -const BREAK = Symbol('break visit'); -const SKIP = Symbol('skip children'); -const REMOVE = Symbol('remove node'); -/** - * Apply a visitor to an AST node or document. - * - * Walks through the tree (depth-first) starting from `node`, calling a - * `visitor` function with three arguments: - * - `key`: For sequence values and map `Pair`, the node's index in the - * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly. - * `null` for the root node. - * - `node`: The current node. - * - `path`: The ancestry of the current node. - * - * The return value of the visitor may be used to control the traversal: - * - `undefined` (default): Do nothing and continue - * - `visit.SKIP`: Do not visit the children of this node, continue with next - * sibling - * - `visit.BREAK`: Terminate traversal completely - * - `visit.REMOVE`: Remove the current node, then continue with the next one - * - `Node`: Replace the current node, then continue by visiting it - * - `number`: While iterating the items of a sequence or map, set the index - * of the next step. This is useful especially if the index of the current - * node has changed. - * - * If `visitor` is a single function, it will be called with all values - * encountered in the tree, including e.g. `null` values. Alternatively, - * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`, - * `Alias` and `Scalar` node. To define the same visitor function for more than - * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar) - * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most - * specific defined one will be used for each node. - */ -function visit(node, visitor) { - if (typeof visitor === 'object' && - (visitor.Collection || visitor.Node || visitor.Value)) { - visitor = Object.assign({ - Alias: visitor.Node, - Map: visitor.Node, - Scalar: visitor.Node, - Seq: visitor.Node - }, visitor.Value && { - Map: visitor.Value, - Scalar: visitor.Value, - Seq: visitor.Value - }, visitor.Collection && { - Map: visitor.Collection, - Seq: visitor.Collection - }, visitor); - } - if (isDocument(node)) { - const cd = _visit(null, node.contents, visitor, Object.freeze([node])); - if (cd === REMOVE) - node.contents = null; - } - else - _visit(null, node, visitor, Object.freeze([])); -} -// Without the `as symbol` casts, TS declares these in the `visit` -// namespace using `var`, but then complains about that because -// `unique symbol` must be `const`. -/** Terminate visit traversal completely */ -visit.BREAK = BREAK; -/** Do not visit the children of the current node */ -visit.SKIP = SKIP; -/** Remove the current node */ -visit.REMOVE = REMOVE; -function _visit(key, node, visitor, path) { - let ctrl = undefined; - if (typeof visitor === 'function') - ctrl = visitor(key, node, path); - else if (isMap(node)) { - if (visitor.Map) - ctrl = visitor.Map(key, node, path); - } - else if (isSeq(node)) { - if (visitor.Seq) - ctrl = visitor.Seq(key, node, path); - } - else if (isPair(node)) { - if (visitor.Pair) - ctrl = visitor.Pair(key, node, path); - } - else if (isScalar(node)) { - if (visitor.Scalar) - ctrl = visitor.Scalar(key, node, path); - } - else if (isAlias(node)) { - if (visitor.Alias) - ctrl = visitor.Alias(key, node, path); - } - if (isNode(ctrl) || isPair(ctrl)) { - const parent = path[path.length - 1]; - if (isCollection(parent)) { - parent.items[key] = ctrl; - } - else if (isPair(parent)) { - if (key === 'key') - parent.key = ctrl; - else - parent.value = ctrl; - } - else if (isDocument(parent)) { - parent.contents = ctrl; - } - else { - const pt = isAlias(parent) ? 'alias' : 'scalar'; - throw new Error(`Cannot replace node with ${pt} parent`); - } - return _visit(key, ctrl, visitor, path); - } - if (typeof ctrl !== 'symbol') { - if (isCollection(node)) { - path = Object.freeze(path.concat(node)); - for (let i = 0; i < node.items.length; ++i) { - const ci = _visit(i, node.items[i], visitor, path); - if (typeof ci === 'number') - i = ci - 1; - else if (ci === BREAK) - return BREAK; - else if (ci === REMOVE) { - node.items.splice(i, 1); - i -= 1; - } - } - } - else if (isPair(node)) { - path = Object.freeze(path.concat(node)); - const ck = _visit('key', node.key, visitor, path); - if (ck === BREAK) - return BREAK; - else if (ck === REMOVE) - node.key = null; - const cv = _visit('value', node.value, visitor, path); - if (cv === BREAK) - return BREAK; - else if (cv === REMOVE) - node.value = null; - } - } - return ctrl; -} - -const escapeChars = { - '!': '%21', - ',': '%2C', - '[': '%5B', - ']': '%5D', - '{': '%7B', - '}': '%7D' -}; -const escapeTagName = (tn) => tn.replace(/[!,[\]{}]/g, ch => escapeChars[ch]); -class Directives { - constructor(yaml, tags) { - /** - * The directives-end/doc-start marker `---`. If `null`, a marker may still be - * included in the document's stringified representation. - */ - this.marker = null; - this.yaml = Object.assign({}, Directives.defaultYaml, yaml); - this.tags = Object.assign({}, Directives.defaultTags, tags); - } - clone() { - const copy = new Directives(this.yaml, this.tags); - copy.marker = this.marker; - return copy; - } - /** - * During parsing, get a Directives instance for the current document and - * update the stream state according to the current version's spec. - */ - atDocument() { - const res = new Directives(this.yaml, this.tags); - switch (this.yaml.version) { - case '1.1': - this.atNextDocument = true; - break; - case '1.2': - this.atNextDocument = false; - this.yaml = { - explicit: Directives.defaultYaml.explicit, - version: '1.2' - }; - this.tags = Object.assign({}, Directives.defaultTags); - break; - } - return res; - } - /** - * @param onError - May be called even if the action was successful - * @returns `true` on success - */ - add(line, onError) { - if (this.atNextDocument) { - this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' }; - this.tags = Object.assign({}, Directives.defaultTags); - this.atNextDocument = false; - } - const parts = line.trim().split(/[ \t]+/); - const name = parts.shift(); - switch (name) { - case '%TAG': { - if (parts.length !== 2) { - onError(0, '%TAG directive should contain exactly two parts'); - if (parts.length < 2) - return false; - } - const [handle, prefix] = parts; - this.tags[handle] = prefix; - return true; - } - case '%YAML': { - this.yaml.explicit = true; - if (parts.length < 1) { - onError(0, '%YAML directive should contain exactly one part'); - return false; - } - const [version] = parts; - if (version === '1.1' || version === '1.2') { - this.yaml.version = version; - return true; - } - else { - onError(6, `Unsupported YAML version ${version}`, true); - return false; - } - } - default: - onError(0, `Unknown directive ${name}`, true); - return false; - } - } - /** - * Resolves a tag, matching handles to those defined in %TAG directives. - * - * @returns Resolved tag, which may also be the non-specific tag `'!'` or a - * `'!local'` tag, or `null` if unresolvable. - */ - tagName(source, onError) { - if (source === '!') - return '!'; // non-specific tag - if (source[0] !== '!') { - onError(`Not a valid tag: ${source}`); - return null; - } - if (source[1] === '<') { - const verbatim = source.slice(2, -1); - if (verbatim === '!' || verbatim === '!!') { - onError(`Verbatim tags aren't resolved, so ${source} is invalid.`); - return null; - } - if (source[source.length - 1] !== '>') - onError('Verbatim tags must end with a >'); - return verbatim; - } - const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/); - if (!suffix) - onError(`The ${source} tag has no suffix`); - const prefix = this.tags[handle]; - if (prefix) - return prefix + decodeURIComponent(suffix); - if (handle === '!') - return source; // local tag - onError(`Could not resolve tag: ${source}`); - return null; - } - /** - * Given a fully resolved tag, returns its printable string form, - * taking into account current tag prefixes and defaults. - */ - tagString(tag) { - for (const [handle, prefix] of Object.entries(this.tags)) { - if (tag.startsWith(prefix)) - return handle + escapeTagName(tag.substring(prefix.length)); - } - return tag[0] === '!' ? tag : `!<${tag}>`; - } - toString(doc) { - const lines = this.yaml.explicit - ? [`%YAML ${this.yaml.version || '1.2'}`] - : []; - const tagEntries = Object.entries(this.tags); - let tagNames; - if (doc && tagEntries.length > 0 && isNode(doc.contents)) { - const tags = {}; - visit(doc.contents, (_key, node) => { - if (isNode(node) && node.tag) - tags[node.tag] = true; - }); - tagNames = Object.keys(tags); - } - else - tagNames = []; - for (const [handle, prefix] of tagEntries) { - if (handle === '!!' && prefix === 'tag:yaml.org,2002:') - continue; - if (!doc || tagNames.some(tn => tn.startsWith(prefix))) - lines.push(`%TAG ${handle} ${prefix}`); - } - return lines.join('\n'); - } -} -Directives.defaultYaml = { explicit: false, version: '1.2' }; -Directives.defaultTags = { '!!': 'tag:yaml.org,2002:' }; - -/** - * Verify that the input string is a valid anchor. - * - * Will throw on errors. - */ -function anchorIsValid(anchor) { - if (/[\x00-\x19\s,[\]{}]/.test(anchor)) { - const sa = JSON.stringify(anchor); - const msg = `Anchor must not contain whitespace or control characters: ${sa}`; - throw new Error(msg); - } - return true; -} -function anchorNames(root) { - const anchors = new Set(); - visit(root, { - Value(_key, node) { - if (node.anchor) - anchors.add(node.anchor); - } - }); - return anchors; -} -/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */ -function findNewAnchor(prefix, exclude) { - for (let i = 1; true; ++i) { - const name = `${prefix}${i}`; - if (!exclude.has(name)) - return name; - } -} -function createNodeAnchors(doc, prefix) { - const aliasObjects = []; - const sourceObjects = new Map(); - let prevAnchors = null; - return { - onAnchor(source) { - aliasObjects.push(source); - if (!prevAnchors) - prevAnchors = anchorNames(doc); - const anchor = findNewAnchor(prefix, prevAnchors); - prevAnchors.add(anchor); - return anchor; - }, - /** - * With circular references, the source node is only resolved after all - * of its child nodes are. This is why anchors are set only after all of - * the nodes have been created. - */ - setAnchors() { - for (const source of aliasObjects) { - const ref = sourceObjects.get(source); - if (typeof ref === 'object' && - ref.anchor && - (isScalar(ref.node) || isCollection(ref.node))) { - ref.node.anchor = ref.anchor; - } - else { - const error = new Error('Failed to resolve repeated object (this should not happen)'); - error.source = source; - throw error; - } - } - }, - sourceObjects - }; -} - -class Alias extends NodeBase { - constructor(source) { - super(ALIAS); - this.source = source; - Object.defineProperty(this, 'tag', { - set() { - throw new Error('Alias nodes cannot have tags'); - } - }); - } - /** - * Resolve the value of this alias within `doc`, finding the last - * instance of the `source` anchor before this node. - */ - resolve(doc) { - let found = undefined; - visit(doc, { - Node: (_key, node) => { - if (node === this) - return visit.BREAK; - if (node.anchor === this.source) - found = node; - } - }); - return found; - } - toJSON(_arg, ctx) { - if (!ctx) - return { source: this.source }; - const { anchors, doc, maxAliasCount } = ctx; - const source = this.resolve(doc); - if (!source) { - const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`; - throw new ReferenceError(msg); - } - const data = anchors.get(source); - /* istanbul ignore if */ - if (!data || data.res === undefined) { - const msg = 'This should not happen: Alias anchor was not resolved?'; - throw new ReferenceError(msg); - } - if (maxAliasCount >= 0) { - data.count += 1; - if (data.aliasCount === 0) - data.aliasCount = getAliasCount(doc, source, anchors); - if (data.count * data.aliasCount > maxAliasCount) { - const msg = 'Excessive alias count indicates a resource exhaustion attack'; - throw new ReferenceError(msg); - } - } - return data.res; - } - toString(ctx, _onComment, _onChompKeep) { - const src = `*${this.source}`; - if (ctx) { - anchorIsValid(this.source); - if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) { - const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`; - throw new Error(msg); - } - if (ctx.implicitKey) - return `${src} `; - } - return src; - } -} -function getAliasCount(doc, node, anchors) { - if (isAlias(node)) { - const source = node.resolve(doc); - const anchor = anchors && source && anchors.get(source); - return anchor ? anchor.count * anchor.aliasCount : 0; - } - else if (isCollection(node)) { - let count = 0; - for (const item of node.items) { - const c = getAliasCount(doc, item, anchors); - if (c > count) - count = c; - } - return count; - } - else if (isPair(node)) { - const kc = getAliasCount(doc, node.key, anchors); - const vc = getAliasCount(doc, node.value, anchors); - return Math.max(kc, vc); - } - return 1; -} - -/** - * Recursively convert any node or its contents to native JavaScript - * - * @param value - The input value - * @param arg - If `value` defines a `toJSON()` method, use this - * as its first argument - * @param ctx - Conversion context, originally set in Document#toJS(). If - * `{ keep: true }` is not set, output should be suitable for JSON - * stringification. - */ -function toJS(value, arg, ctx) { - if (Array.isArray(value)) - return value.map((v, i) => toJS(v, String(i), ctx)); - if (value && typeof value.toJSON === 'function') { - if (!ctx || !hasAnchor(value)) - return value.toJSON(arg, ctx); - const data = { aliasCount: 0, count: 1, res: undefined }; - ctx.anchors.set(value, data); - ctx.onCreate = res => { - data.res = res; - delete ctx.onCreate; - }; - const res = value.toJSON(arg, ctx); - if (ctx.onCreate) - ctx.onCreate(res); - return res; - } - if (typeof value === 'bigint' && !(ctx && ctx.keep)) - return Number(value); - return value; -} - -const isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object'); -class Scalar extends NodeBase { - constructor(value) { - super(SCALAR$1); - this.value = value; - } - toJSON(arg, ctx) { - return ctx && ctx.keep ? this.value : toJS(this.value, arg, ctx); - } - toString() { - return String(this.value); - } -} -Scalar.BLOCK_FOLDED = 'BLOCK_FOLDED'; -Scalar.BLOCK_LITERAL = 'BLOCK_LITERAL'; -Scalar.PLAIN = 'PLAIN'; -Scalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE'; -Scalar.QUOTE_SINGLE = 'QUOTE_SINGLE'; - -const defaultTagPrefix = 'tag:yaml.org,2002:'; -function findTagObject(value, tagName, tags) { - if (tagName) { - const match = tags.filter(t => t.tag === tagName); - const tagObj = match.find(t => !t.format) || match[0]; - if (!tagObj) - throw new Error(`Tag ${tagName} not found`); - return tagObj; - } - return tags.find(t => t.identify && t.identify(value) && !t.format); -} -function createNode(value, tagName, ctx) { - var _a, _b; - if (isDocument(value)) - value = value.contents; - if (isNode(value)) - return value; - if (isPair(value)) { - const map = (_b = (_a = ctx.schema[MAP]).createNode) === null || _b === void 0 ? void 0 : _b.call(_a, ctx.schema, null, ctx); - map.items.push(value); - return map; - } - if (value instanceof String || - value instanceof Number || - value instanceof Boolean || - (typeof BigInt === 'function' && value instanceof BigInt) // not supported everywhere - ) { - // https://tc39.es/ecma262/#sec-serializejsonproperty - value = value.valueOf(); - } - const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx; - // Detect duplicate references to the same object & use Alias nodes for all - // after first. The `ref` wrapper allows for circular references to resolve. - let ref = undefined; - if (aliasDuplicateObjects && value && typeof value === 'object') { - ref = sourceObjects.get(value); - if (ref) { - if (!ref.anchor) - ref.anchor = onAnchor(value); - return new Alias(ref.anchor); - } - else { - ref = { anchor: null, node: null }; - sourceObjects.set(value, ref); - } - } - if (tagName && tagName.startsWith('!!')) - tagName = defaultTagPrefix + tagName.slice(2); - let tagObj = findTagObject(value, tagName, schema.tags); - if (!tagObj) { - if (value && typeof value.toJSON === 'function') - value = value.toJSON(); - if (!value || typeof value !== 'object') { - const node = new Scalar(value); - if (ref) - ref.node = node; - return node; - } - tagObj = - value instanceof Map - ? schema[MAP] - : Symbol.iterator in Object(value) - ? schema[SEQ] - : schema[MAP]; - } - if (onTagObj) { - onTagObj(tagObj); - delete ctx.onTagObj; - } - const node = (tagObj === null || tagObj === void 0 ? void 0 : tagObj.createNode) - ? tagObj.createNode(ctx.schema, value, ctx) - : new Scalar(value); - if (tagName) - node.tag = tagName; - if (ref) - ref.node = node; - return node; -} - -function collectionFromPath(schema, path, value) { - let v = value; - for (let i = path.length - 1; i >= 0; --i) { - const k = path[i]; - if (typeof k === 'number' && Number.isInteger(k) && k >= 0) { - const a = []; - a[k] = v; - v = a; - } - else { - v = new Map([[k, v]]); - } - } - return createNode(v, undefined, { - aliasDuplicateObjects: false, - keepUndefined: false, - onAnchor: () => { - throw new Error('This should not happen, please report a bug.'); - }, - schema, - sourceObjects: new Map() - }); -} -// null, undefined, or an empty non-string iterable (e.g. []) -const isEmptyPath = (path) => path == null || - (typeof path === 'object' && !!path[Symbol.iterator]().next().done); -class Collection extends NodeBase { - constructor(type, schema) { - super(type); - Object.defineProperty(this, 'schema', { - value: schema, - configurable: true, - enumerable: false, - writable: true - }); - } - /** - * Create a copy of this collection. - * - * @param schema - If defined, overwrites the original's schema - */ - clone(schema) { - const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this)); - if (schema) - copy.schema = schema; - copy.items = copy.items.map(it => isNode(it) || isPair(it) ? it.clone(schema) : it); - if (this.range) - copy.range = this.range.slice(); - return copy; - } - /** - * Adds a value to the collection. For `!!map` and `!!omap` the value must - * be a Pair instance or a `{ key, value }` object, which may not have a key - * that already exists in the map. - */ - addIn(path, value) { - if (isEmptyPath(path)) - this.add(value); - else { - const [key, ...rest] = path; - const node = this.get(key, true); - if (isCollection(node)) - node.addIn(rest, value); - else if (node === undefined && this.schema) - this.set(key, collectionFromPath(this.schema, rest, value)); - else - throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`); - } - } - /** - * Removes a value from the collection. - * @returns `true` if the item was found and removed. - */ - deleteIn(path) { - const [key, ...rest] = path; - if (rest.length === 0) - return this.delete(key); - const node = this.get(key, true); - if (isCollection(node)) - return node.deleteIn(rest); - else - throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`); - } - /** - * Returns item at `key`, or `undefined` if not found. By default unwraps - * scalar values from their surrounding node; to disable set `keepScalar` to - * `true` (collections are always returned intact). - */ - getIn(path, keepScalar) { - const [key, ...rest] = path; - const node = this.get(key, true); - if (rest.length === 0) - return !keepScalar && isScalar(node) ? node.value : node; - else - return isCollection(node) ? node.getIn(rest, keepScalar) : undefined; - } - hasAllNullValues(allowScalar) { - return this.items.every(node => { - if (!isPair(node)) - return false; - const n = node.value; - return (n == null || - (allowScalar && - isScalar(n) && - n.value == null && - !n.commentBefore && - !n.comment && - !n.tag)); - }); - } - /** - * Checks if the collection includes a value with the key `key`. - */ - hasIn(path) { - const [key, ...rest] = path; - if (rest.length === 0) - return this.has(key); - const node = this.get(key, true); - return isCollection(node) ? node.hasIn(rest) : false; - } - /** - * Sets a value in this collection. For `!!set`, `value` needs to be a - * boolean to add/remove the item from the set. - */ - setIn(path, value) { - const [key, ...rest] = path; - if (rest.length === 0) { - this.set(key, value); - } - else { - const node = this.get(key, true); - if (isCollection(node)) - node.setIn(rest, value); - else if (node === undefined && this.schema) - this.set(key, collectionFromPath(this.schema, rest, value)); - else - throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`); - } - } -} -Collection.maxFlowStringSingleLineLength = 60; - -/** - * Stringifies a comment. - * - * Empty comment lines are left empty, - * lines consisting of a single space are replaced by `#`, - * and all other lines are prefixed with a `#`. - */ -const stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#'); -function indentComment(comment, indent) { - if (/^\n+$/.test(comment)) - return comment.substring(1); - return indent ? comment.replace(/^(?! *$)/gm, indent) : comment; -} -const lineComment = (str, indent, comment) => comment.includes('\n') - ? '\n' + indentComment(comment, indent) - : (str.endsWith(' ') ? '' : ' ') + comment; - -const FOLD_FLOW = 'flow'; -const FOLD_BLOCK = 'block'; -const FOLD_QUOTED = 'quoted'; -/** - * Tries to keep input at up to `lineWidth` characters, splitting only on spaces - * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are - * terminated with `\n` and started with `indent`. - */ -function foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) { - if (!lineWidth || lineWidth < 0) - return text; - const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length); - if (text.length <= endStep) - return text; - const folds = []; - const escapedFolds = {}; - let end = lineWidth - indent.length; - if (typeof indentAtStart === 'number') { - if (indentAtStart > lineWidth - Math.max(2, minContentWidth)) - folds.push(0); - else - end = lineWidth - indentAtStart; - } - let split = undefined; - let prev = undefined; - let overflow = false; - let i = -1; - let escStart = -1; - let escEnd = -1; - if (mode === FOLD_BLOCK) { - i = consumeMoreIndentedLines(text, i); - if (i !== -1) - end = i + endStep; - } - for (let ch; (ch = text[(i += 1)]);) { - if (mode === FOLD_QUOTED && ch === '\\') { - escStart = i; - switch (text[i + 1]) { - case 'x': - i += 3; - break; - case 'u': - i += 5; - break; - case 'U': - i += 9; - break; - default: - i += 1; - } - escEnd = i; - } - if (ch === '\n') { - if (mode === FOLD_BLOCK) - i = consumeMoreIndentedLines(text, i); - end = i + endStep; - split = undefined; - } - else { - if (ch === ' ' && - prev && - prev !== ' ' && - prev !== '\n' && - prev !== '\t') { - // space surrounded by non-space can be replaced with newline + indent - const next = text[i + 1]; - if (next && next !== ' ' && next !== '\n' && next !== '\t') - split = i; - } - if (i >= end) { - if (split) { - folds.push(split); - end = split + endStep; - split = undefined; - } - else if (mode === FOLD_QUOTED) { - // white-space collected at end may stretch past lineWidth - while (prev === ' ' || prev === '\t') { - prev = ch; - ch = text[(i += 1)]; - overflow = true; - } - // Account for newline escape, but don't break preceding escape - const j = i > escEnd + 1 ? i - 2 : escStart - 1; - // Bail out if lineWidth & minContentWidth are shorter than an escape string - if (escapedFolds[j]) - return text; - folds.push(j); - escapedFolds[j] = true; - end = j + endStep; - split = undefined; - } - else { - overflow = true; - } - } - } - prev = ch; - } - if (overflow && onOverflow) - onOverflow(); - if (folds.length === 0) - return text; - if (onFold) - onFold(); - let res = text.slice(0, folds[0]); - for (let i = 0; i < folds.length; ++i) { - const fold = folds[i]; - const end = folds[i + 1] || text.length; - if (fold === 0) - res = `\n${indent}${text.slice(0, end)}`; - else { - if (mode === FOLD_QUOTED && escapedFolds[fold]) - res += `${text[fold]}\\`; - res += `\n${indent}${text.slice(fold + 1, end)}`; - } - } - return res; -} -/** - * Presumes `i + 1` is at the start of a line - * @returns index of last newline in more-indented block - */ -function consumeMoreIndentedLines(text, i) { - let ch = text[i + 1]; - while (ch === ' ' || ch === '\t') { - do { - ch = text[(i += 1)]; - } while (ch && ch !== '\n'); - ch = text[i + 1]; - } - return i; -} - -const getFoldOptions = (ctx) => ({ - indentAtStart: ctx.indentAtStart, - lineWidth: ctx.options.lineWidth, - minContentWidth: ctx.options.minContentWidth -}); -// Also checks for lines starting with %, as parsing the output as YAML 1.1 will -// presume that's starting a new document. -const containsDocumentMarker = (str) => /^(%|---|\.\.\.)/m.test(str); -function lineLengthOverLimit(str, lineWidth, indentLength) { - if (!lineWidth || lineWidth < 0) - return false; - const limit = lineWidth - indentLength; - const strLen = str.length; - if (strLen <= limit) - return false; - for (let i = 0, start = 0; i < strLen; ++i) { - if (str[i] === '\n') { - if (i - start > limit) - return true; - start = i + 1; - if (strLen - start <= limit) - return false; - } - } - return true; -} -function doubleQuotedString(value, ctx) { - const json = JSON.stringify(value); - if (ctx.options.doubleQuotedAsJSON) - return json; - const { implicitKey } = ctx; - const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength; - const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : ''); - let str = ''; - let start = 0; - for (let i = 0, ch = json[i]; ch; ch = json[++i]) { - if (ch === ' ' && json[i + 1] === '\\' && json[i + 2] === 'n') { - // space before newline needs to be escaped to not be folded - str += json.slice(start, i) + '\\ '; - i += 1; - start = i; - ch = '\\'; - } - if (ch === '\\') - switch (json[i + 1]) { - case 'u': - { - str += json.slice(start, i); - const code = json.substr(i + 2, 4); - switch (code) { - case '0000': - str += '\\0'; - break; - case '0007': - str += '\\a'; - break; - case '000b': - str += '\\v'; - break; - case '001b': - str += '\\e'; - break; - case '0085': - str += '\\N'; - break; - case '00a0': - str += '\\_'; - break; - case '2028': - str += '\\L'; - break; - case '2029': - str += '\\P'; - break; - default: - if (code.substr(0, 2) === '00') - str += '\\x' + code.substr(2); - else - str += json.substr(i, 6); - } - i += 5; - start = i + 1; - } - break; - case 'n': - if (implicitKey || - json[i + 2] === '"' || - json.length < minMultiLineLength) { - i += 1; - } - else { - // folding will eat first newline - str += json.slice(start, i) + '\n\n'; - while (json[i + 2] === '\\' && - json[i + 3] === 'n' && - json[i + 4] !== '"') { - str += '\n'; - i += 2; - } - str += indent; - // space after newline needs to be escaped to not be folded - if (json[i + 2] === ' ') - str += '\\'; - i += 1; - start = i + 1; - } - break; - default: - i += 1; - } - } - str = start ? str + json.slice(start) : json; - return implicitKey - ? str - : foldFlowLines(str, indent, FOLD_QUOTED, getFoldOptions(ctx)); -} -function singleQuotedString(value, ctx) { - if (ctx.options.singleQuote === false || - (ctx.implicitKey && value.includes('\n')) || - /[ \t]\n|\n[ \t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline - ) - return doubleQuotedString(value, ctx); - const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : ''); - const res = "'" + value.replace(/'/g, "''").replace(/\n+/g, `$&\n${indent}`) + "'"; - return ctx.implicitKey - ? res - : foldFlowLines(res, indent, FOLD_FLOW, getFoldOptions(ctx)); -} -function quotedString(value, ctx) { - const { singleQuote } = ctx.options; - let qs; - if (singleQuote === false) - qs = doubleQuotedString; - else { - const hasDouble = value.includes('"'); - const hasSingle = value.includes("'"); - if (hasDouble && !hasSingle) - qs = singleQuotedString; - else if (hasSingle && !hasDouble) - qs = doubleQuotedString; - else - qs = singleQuote ? singleQuotedString : doubleQuotedString; - } - return qs(value, ctx); -} -function blockString({ comment, type, value }, ctx, onComment, onChompKeep) { - const { blockQuote, commentString, lineWidth } = ctx.options; - // 1. Block can't end in whitespace unless the last line is non-empty. - // 2. Strings consisting of only whitespace are best rendered explicitly. - if (!blockQuote || /\n[\t ]+$/.test(value) || /^\s*$/.test(value)) { - return quotedString(value, ctx); - } - const indent = ctx.indent || - (ctx.forceBlockIndent || containsDocumentMarker(value) ? ' ' : ''); - const literal = blockQuote === 'literal' - ? true - : blockQuote === 'folded' || type === Scalar.BLOCK_FOLDED - ? false - : type === Scalar.BLOCK_LITERAL - ? true - : !lineLengthOverLimit(value, lineWidth, indent.length); - if (!value) - return literal ? '|\n' : '>\n'; - // determine chomping from whitespace at value end - let chomp; - let endStart; - for (endStart = value.length; endStart > 0; --endStart) { - const ch = value[endStart - 1]; - if (ch !== '\n' && ch !== '\t' && ch !== ' ') - break; - } - let end = value.substring(endStart); - const endNlPos = end.indexOf('\n'); - if (endNlPos === -1) { - chomp = '-'; // strip - } - else if (value === end || endNlPos !== end.length - 1) { - chomp = '+'; // keep - if (onChompKeep) - onChompKeep(); - } - else { - chomp = ''; // clip - } - if (end) { - value = value.slice(0, -end.length); - if (end[end.length - 1] === '\n') - end = end.slice(0, -1); - end = end.replace(/\n+(?!\n|$)/g, `$&${indent}`); - } - // determine indent indicator from whitespace at value start - let startWithSpace = false; - let startEnd; - let startNlPos = -1; - for (startEnd = 0; startEnd < value.length; ++startEnd) { - const ch = value[startEnd]; - if (ch === ' ') - startWithSpace = true; - else if (ch === '\n') - startNlPos = startEnd; - else - break; - } - let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd); - if (start) { - value = value.substring(start.length); - start = start.replace(/\n+/g, `$&${indent}`); - } - const indentSize = indent ? '2' : '1'; // root is at -1 - let header = (literal ? '|' : '>') + (startWithSpace ? indentSize : '') + chomp; - if (comment) { - header += ' ' + commentString(comment.replace(/ ?[\r\n]+/g, ' ')); - if (onComment) - onComment(); - } - if (literal) { - value = value.replace(/\n+/g, `$&${indent}`); - return `${header}\n${indent}${start}${value}${end}`; - } - value = value - .replace(/\n+/g, '\n$&') - .replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g, '$1$2') // more-indented lines aren't folded - // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent - .replace(/\n+/g, `$&${indent}`); - const body = foldFlowLines(`${start}${value}${end}`, indent, FOLD_BLOCK, getFoldOptions(ctx)); - return `${header}\n${indent}${body}`; -} -function plainString(item, ctx, onComment, onChompKeep) { - const { type, value } = item; - const { actualString, implicitKey, indent, inFlow } = ctx; - if ((implicitKey && /[\n[\]{},]/.test(value)) || - (inFlow && /[[\]{},]/.test(value))) { - return quotedString(value, ctx); - } - if (!value || - /^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(value)) { - // not allowed: - // - empty string, '-' or '?' - // - start with an indicator character (except [?:-]) or /[?-] / - // - '\n ', ': ' or ' \n' anywhere - // - '#' not preceded by a non-space char - // - end with ' ' or ':' - return implicitKey || inFlow || value.indexOf('\n') === -1 - ? quotedString(value, ctx) - : blockString(item, ctx, onComment, onChompKeep); - } - if (!implicitKey && - !inFlow && - type !== Scalar.PLAIN && - value.indexOf('\n') !== -1) { - // Where allowed & type not set explicitly, prefer block style for multiline strings - return blockString(item, ctx, onComment, onChompKeep); - } - if (indent === '' && containsDocumentMarker(value)) { - ctx.forceBlockIndent = true; - return blockString(item, ctx, onComment, onChompKeep); - } - const str = value.replace(/\n+/g, `$&\n${indent}`); - // Verify that output will be parsed as a string, as e.g. plain numbers and - // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'), - // and others in v1.1. - if (actualString) { - const test = (tag) => { var _a; return tag.default && tag.tag !== 'tag:yaml.org,2002:str' && ((_a = tag.test) === null || _a === void 0 ? void 0 : _a.test(str)); }; - const { compat, tags } = ctx.doc.schema; - if (tags.some(test) || (compat === null || compat === void 0 ? void 0 : compat.some(test))) - return quotedString(value, ctx); - } - return implicitKey - ? str - : foldFlowLines(str, indent, FOLD_FLOW, getFoldOptions(ctx)); -} -function stringifyString(item, ctx, onComment, onChompKeep) { - const { implicitKey, inFlow } = ctx; - const ss = typeof item.value === 'string' - ? item - : Object.assign({}, item, { value: String(item.value) }); - let { type } = item; - if (type !== Scalar.QUOTE_DOUBLE) { - // force double quotes on control characters & unpaired surrogates - if (/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(ss.value)) - type = Scalar.QUOTE_DOUBLE; - } - const _stringify = (_type) => { - switch (_type) { - case Scalar.BLOCK_FOLDED: - case Scalar.BLOCK_LITERAL: - return implicitKey || inFlow - ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers - : blockString(ss, ctx, onComment, onChompKeep); - case Scalar.QUOTE_DOUBLE: - return doubleQuotedString(ss.value, ctx); - case Scalar.QUOTE_SINGLE: - return singleQuotedString(ss.value, ctx); - case Scalar.PLAIN: - return plainString(ss, ctx, onComment, onChompKeep); - default: - return null; - } - }; - let res = _stringify(type); - if (res === null) { - const { defaultKeyType, defaultStringType } = ctx.options; - const t = (implicitKey && defaultKeyType) || defaultStringType; - res = _stringify(t); - if (res === null) - throw new Error(`Unsupported default string type ${t}`); - } - return res; -} - -function createStringifyContext(doc, options) { - const opt = Object.assign({ - blockQuote: true, - commentString: stringifyComment, - defaultKeyType: null, - defaultStringType: 'PLAIN', - directives: null, - doubleQuotedAsJSON: false, - doubleQuotedMinMultiLineLength: 40, - falseStr: 'false', - indentSeq: true, - lineWidth: 80, - minContentWidth: 20, - nullStr: 'null', - simpleKeys: false, - singleQuote: null, - trueStr: 'true', - verifyAliasOrder: true - }, doc.schema.toStringOptions, options); - let inFlow; - switch (opt.collectionStyle) { - case 'block': - inFlow = false; - break; - case 'flow': - inFlow = true; - break; - default: - inFlow = null; - } - return { - anchors: new Set(), - doc, - indent: '', - indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : ' ', - inFlow, - options: opt - }; -} -function getTagObject(tags, item) { - if (item.tag) { - const match = tags.filter(t => t.tag === item.tag); - if (match.length > 0) - return match.find(t => t.format === item.format) || match[0]; - } - let tagObj = undefined; - let obj; - if (isScalar(item)) { - obj = item.value; - const match = tags.filter(t => t.identify && t.identify(obj)); - tagObj = - match.find(t => t.format === item.format) || match.find(t => !t.format); - } - else { - obj = item; - tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass); - } - if (!tagObj) { - // @ts-ignore - const name = obj && obj.constructor ? obj.constructor.name : typeof obj; - throw new Error(`Tag not resolved for ${name} value`); - } - return tagObj; -} -// needs to be called before value stringifier to allow for circular anchor refs -function stringifyProps(node, tagObj, { anchors, doc }) { - if (!doc.directives) - return ''; - const props = []; - const anchor = (isScalar(node) || isCollection(node)) && node.anchor; - if (anchor && anchorIsValid(anchor)) { - anchors.add(anchor); - props.push(`&${anchor}`); - } - const tag = node.tag || (tagObj.default ? null : tagObj.tag); - if (tag) - props.push(doc.directives.tagString(tag)); - return props.join(' '); -} -function stringify$1(item, ctx, onComment, onChompKeep) { - var _a; - if (isPair(item)) - return item.toString(ctx, onComment, onChompKeep); - if (isAlias(item)) { - if (ctx.doc.directives) - return item.toString(ctx); - if ((_a = ctx.resolvedAliases) === null || _a === void 0 ? void 0 : _a.has(item)) { - throw new TypeError(`Cannot stringify circular structure without alias nodes`); - } - else { - if (ctx.resolvedAliases) - ctx.resolvedAliases.add(item); - else - ctx.resolvedAliases = new Set([item]); - item = item.resolve(ctx.doc); - } - } - let tagObj = undefined; - const node = isNode(item) - ? item - : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) }); - if (!tagObj) - tagObj = getTagObject(ctx.doc.schema.tags, node); - const props = stringifyProps(node, tagObj, ctx); - if (props.length > 0) - ctx.indentAtStart = (ctx.indentAtStart || 0) + props.length + 1; - const str = typeof tagObj.stringify === 'function' - ? tagObj.stringify(node, ctx, onComment, onChompKeep) - : isScalar(node) - ? stringifyString(node, ctx, onComment, onChompKeep) - : node.toString(ctx, onComment, onChompKeep); - if (!props) - return str; - return isScalar(node) || str[0] === '{' || str[0] === '[' - ? `${props} ${str}` - : `${props}\n${ctx.indent}${str}`; -} - -function stringifyPair({ key, value }, ctx, onComment, onChompKeep) { - const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx; - let keyComment = (isNode(key) && key.comment) || null; - if (simpleKeys) { - if (keyComment) { - throw new Error('With simple keys, key nodes cannot have comments'); - } - if (isCollection(key)) { - const msg = 'With simple keys, collection cannot be used as a key value'; - throw new Error(msg); - } - } - let explicitKey = !simpleKeys && - (!key || - (keyComment && value == null && !ctx.inFlow) || - isCollection(key) || - (isScalar(key) - ? key.type === Scalar.BLOCK_FOLDED || key.type === Scalar.BLOCK_LITERAL - : typeof key === 'object')); - ctx = Object.assign({}, ctx, { - allNullValues: false, - implicitKey: !explicitKey && (simpleKeys || !allNullValues), - indent: indent + indentStep - }); - let keyCommentDone = false; - let chompKeep = false; - let str = stringify$1(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true)); - if (!explicitKey && !ctx.inFlow && str.length > 1024) { - if (simpleKeys) - throw new Error('With simple keys, single line scalar must not span more than 1024 characters'); - explicitKey = true; - } - if (ctx.inFlow) { - if (allNullValues || value == null) { - if (keyCommentDone && onComment) - onComment(); - return explicitKey ? `? ${str}` : str; - } - } - else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) { - str = `? ${str}`; - if (keyComment && !keyCommentDone) { - str += lineComment(str, ctx.indent, commentString(keyComment)); - } - else if (chompKeep && onChompKeep) - onChompKeep(); - return str; - } - if (keyCommentDone) - keyComment = null; - if (explicitKey) { - if (keyComment) - str += lineComment(str, ctx.indent, commentString(keyComment)); - str = `? ${str}\n${indent}:`; - } - else { - str = `${str}:`; - if (keyComment) - str += lineComment(str, ctx.indent, commentString(keyComment)); - } - let vcb = ''; - let valueComment = null; - if (isNode(value)) { - if (value.spaceBefore) - vcb = '\n'; - if (value.commentBefore) { - const cs = commentString(value.commentBefore); - vcb += `\n${indentComment(cs, ctx.indent)}`; - } - valueComment = value.comment; - } - else if (value && typeof value === 'object') { - value = doc.createNode(value); - } - ctx.implicitKey = false; - if (!explicitKey && !keyComment && isScalar(value)) - ctx.indentAtStart = str.length + 1; - chompKeep = false; - if (!indentSeq && - indentStep.length >= 2 && - !ctx.inFlow && - !explicitKey && - isSeq(value) && - !value.flow && - !value.tag && - !value.anchor) { - // If indentSeq === false, consider '- ' as part of indentation where possible - ctx.indent = ctx.indent.substr(2); - } - let valueCommentDone = false; - const valueStr = stringify$1(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true)); - let ws = ' '; - if (vcb || keyComment) { - ws = valueStr === '' && !ctx.inFlow ? vcb : `${vcb}\n${ctx.indent}`; - } - else if (!explicitKey && isCollection(value)) { - const flow = valueStr[0] === '[' || valueStr[0] === '{'; - if (!flow || valueStr.includes('\n')) - ws = `\n${ctx.indent}`; - } - else if (valueStr === '' || valueStr[0] === '\n') - ws = ''; - str += ws + valueStr; - if (ctx.inFlow) { - if (valueCommentDone && onComment) - onComment(); - } - else if (valueComment && !valueCommentDone) { - str += lineComment(str, ctx.indent, commentString(valueComment)); - } - else if (chompKeep && onChompKeep) { - onChompKeep(); - } - return str; -} - -function warn(logLevel, warning) { - if (logLevel === 'debug' || logLevel === 'warn') { - if (typeof process !== 'undefined' && process.emitWarning) - process.emitWarning(warning); - else - console.warn(warning); - } -} - -const MERGE_KEY = '<<'; -function addPairToJSMap(ctx, map, { key, value }) { - if (ctx && ctx.doc.schema.merge && isMergeKey(key)) { - value = isAlias(value) ? value.resolve(ctx.doc) : value; - if (isSeq(value)) - for (const it of value.items) - mergeToJSMap(ctx, map, it); - else if (Array.isArray(value)) - for (const it of value) - mergeToJSMap(ctx, map, it); - else - mergeToJSMap(ctx, map, value); - } - else { - const jsKey = toJS(key, '', ctx); - if (map instanceof Map) { - map.set(jsKey, toJS(value, jsKey, ctx)); - } - else if (map instanceof Set) { - map.add(jsKey); - } - else { - const stringKey = stringifyKey(key, jsKey, ctx); - const jsValue = toJS(value, stringKey, ctx); - if (stringKey in map) - Object.defineProperty(map, stringKey, { - value: jsValue, - writable: true, - enumerable: true, - configurable: true - }); - else - map[stringKey] = jsValue; - } - } - return map; -} -const isMergeKey = (key) => key === MERGE_KEY || - (isScalar(key) && - key.value === MERGE_KEY && - (!key.type || key.type === Scalar.PLAIN)); -// If the value associated with a merge key is a single mapping node, each of -// its key/value pairs is inserted into the current mapping, unless the key -// already exists in it. If the value associated with the merge key is a -// sequence, then this sequence is expected to contain mapping nodes and each -// of these nodes is merged in turn according to its order in the sequence. -// Keys in mapping nodes earlier in the sequence override keys specified in -// later mapping nodes. -- http://yaml.org/type/merge.html -function mergeToJSMap(ctx, map, value) { - const source = ctx && isAlias(value) ? value.resolve(ctx.doc) : value; - if (!isMap(source)) - throw new Error('Merge sources must be maps or map aliases'); - const srcMap = source.toJSON(null, ctx, Map); - for (const [key, value] of srcMap) { - if (map instanceof Map) { - if (!map.has(key)) - map.set(key, value); - } - else if (map instanceof Set) { - map.add(key); - } - else if (!Object.prototype.hasOwnProperty.call(map, key)) { - Object.defineProperty(map, key, { - value, - writable: true, - enumerable: true, - configurable: true - }); - } - } - return map; -} -function stringifyKey(key, jsKey, ctx) { - if (jsKey === null) - return ''; - if (typeof jsKey !== 'object') - return String(jsKey); - if (isNode(key) && ctx && ctx.doc) { - const strCtx = createStringifyContext(ctx.doc, {}); - strCtx.anchors = new Set(); - for (const node of ctx.anchors.keys()) - strCtx.anchors.add(node.anchor); - strCtx.inFlow = true; - strCtx.inStringifyKey = true; - const strKey = key.toString(strCtx); - if (!ctx.mapKeyWarned) { - let jsonStr = JSON.stringify(strKey); - if (jsonStr.length > 40) - jsonStr = jsonStr.substring(0, 36) + '..."'; - warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`); - ctx.mapKeyWarned = true; - } - return strKey; - } - return JSON.stringify(jsKey); -} - -function createPair(key, value, ctx) { - const k = createNode(key, undefined, ctx); - const v = createNode(value, undefined, ctx); - return new Pair(k, v); -} -class Pair { - constructor(key, value = null) { - Object.defineProperty(this, NODE_TYPE, { value: PAIR }); - this.key = key; - this.value = value; - } - clone(schema) { - let { key, value } = this; - if (isNode(key)) - key = key.clone(schema); - if (isNode(value)) - value = value.clone(schema); - return new Pair(key, value); - } - toJSON(_, ctx) { - const pair = ctx && ctx.mapAsMap ? new Map() : {}; - return addPairToJSMap(ctx, pair, this); - } - toString(ctx, onComment, onChompKeep) { - return ctx && ctx.doc - ? stringifyPair(this, ctx, onComment, onChompKeep) - : JSON.stringify(this); - } -} - -/** - * `yaml` defines document-specific options in three places: as an argument of - * parse, create and stringify calls, in the values of `YAML.defaultOptions`, - * and in the version-dependent `YAML.Document.defaults` object. Values set in - * `YAML.defaultOptions` override version-dependent defaults, and argument - * options override both. - */ -const defaultOptions = { - intAsBigInt: false, - keepSourceTokens: false, - logLevel: 'warn', - prettyErrors: true, - strict: true, - uniqueKeys: true, - version: '1.2' -}; - -function stringifyCollection(collection, ctx, options) { - var _a; - const flow = (_a = ctx.inFlow) !== null && _a !== void 0 ? _a : collection.flow; - const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection; - return stringify(collection, ctx, options); -} -function stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) { - const { indent, options: { commentString } } = ctx; - const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null }); - let chompKeep = false; // flag for the preceding node's status - const lines = []; - for (let i = 0; i < items.length; ++i) { - const item = items[i]; - let comment = null; - if (isNode(item)) { - if (!chompKeep && item.spaceBefore) - lines.push(''); - addCommentBefore(ctx, lines, item.commentBefore, chompKeep); - if (item.comment) - comment = item.comment; - } - else if (isPair(item)) { - const ik = isNode(item.key) ? item.key : null; - if (ik) { - if (!chompKeep && ik.spaceBefore) - lines.push(''); - addCommentBefore(ctx, lines, ik.commentBefore, chompKeep); - } - } - chompKeep = false; - let str = stringify$1(item, itemCtx, () => (comment = null), () => (chompKeep = true)); - if (comment) - str += lineComment(str, itemIndent, commentString(comment)); - if (chompKeep && comment) - chompKeep = false; - lines.push(blockItemPrefix + str); - } - let str; - if (lines.length === 0) { - str = flowChars.start + flowChars.end; - } - else { - str = lines[0]; - for (let i = 1; i < lines.length; ++i) { - const line = lines[i]; - str += line ? `\n${indent}${line}` : '\n'; - } - } - if (comment) { - str += '\n' + indentComment(commentString(comment), indent); - if (onComment) - onComment(); - } - else if (chompKeep && onChompKeep) - onChompKeep(); - return str; -} -function stringifyFlowCollection({ comment, items }, ctx, { flowChars, itemIndent, onComment }) { - const { indent, indentStep, options: { commentString } } = ctx; - itemIndent += indentStep; - const itemCtx = Object.assign({}, ctx, { - indent: itemIndent, - inFlow: true, - type: null - }); - let reqNewline = false; - let linesAtValue = 0; - const lines = []; - for (let i = 0; i < items.length; ++i) { - const item = items[i]; - let comment = null; - if (isNode(item)) { - if (item.spaceBefore) - lines.push(''); - addCommentBefore(ctx, lines, item.commentBefore, false); - if (item.comment) - comment = item.comment; - } - else if (isPair(item)) { - const ik = isNode(item.key) ? item.key : null; - if (ik) { - if (ik.spaceBefore) - lines.push(''); - addCommentBefore(ctx, lines, ik.commentBefore, false); - if (ik.comment) - reqNewline = true; - } - const iv = isNode(item.value) ? item.value : null; - if (iv) { - if (iv.comment) - comment = iv.comment; - if (iv.commentBefore) - reqNewline = true; - } - else if (item.value == null && ik && ik.comment) { - comment = ik.comment; - } - } - if (comment) - reqNewline = true; - let str = stringify$1(item, itemCtx, () => (comment = null)); - if (i < items.length - 1) - str += ','; - if (comment) - str += lineComment(str, itemIndent, commentString(comment)); - if (!reqNewline && (lines.length > linesAtValue || str.includes('\n'))) - reqNewline = true; - lines.push(str); - linesAtValue = lines.length; - } - let str; - const { start, end } = flowChars; - if (lines.length === 0) { - str = start + end; - } - else { - if (!reqNewline) { - const len = lines.reduce((sum, line) => sum + line.length + 2, 2); - reqNewline = len > Collection.maxFlowStringSingleLineLength; - } - if (reqNewline) { - str = start; - for (const line of lines) - str += line ? `\n${indentStep}${indent}${line}` : '\n'; - str += `\n${indent}${end}`; - } - else { - str = `${start} ${lines.join(' ')} ${end}`; - } - } - if (comment) { - str += lineComment(str, commentString(comment), indent); - if (onComment) - onComment(); - } - return str; -} -function addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) { - if (comment && chompKeep) - comment = comment.replace(/^\n+/, ''); - if (comment) { - const ic = indentComment(commentString(comment), indent); - lines.push(ic.trimStart()); // Avoid double indent on first line - } -} - -function findPair(items, key) { - const k = isScalar(key) ? key.value : key; - for (const it of items) { - if (isPair(it)) { - if (it.key === key || it.key === k) - return it; - if (isScalar(it.key) && it.key.value === k) - return it; - } - } - return undefined; -} -class YAMLMap extends Collection { - constructor(schema) { - super(MAP, schema); - this.items = []; - } - static get tagName() { - return 'tag:yaml.org,2002:map'; - } - /** - * Adds a value to the collection. - * - * @param overwrite - If not set `true`, using a key that is already in the - * collection will throw. Otherwise, overwrites the previous value. - */ - add(pair, overwrite) { - let _pair; - if (isPair(pair)) - _pair = pair; - else if (!pair || typeof pair !== 'object' || !('key' in pair)) { - // In TypeScript, this never happens. - _pair = new Pair(pair, pair.value); - } - else - _pair = new Pair(pair.key, pair.value); - const prev = findPair(this.items, _pair.key); - const sortEntries = this.schema && this.schema.sortMapEntries; - if (prev) { - if (!overwrite) - throw new Error(`Key ${_pair.key} already set`); - // For scalars, keep the old node & its comments and anchors - if (isScalar(prev.value) && isScalarValue(_pair.value)) - prev.value.value = _pair.value; - else - prev.value = _pair.value; - } - else if (sortEntries) { - const i = this.items.findIndex(item => sortEntries(_pair, item) < 0); - if (i === -1) - this.items.push(_pair); - else - this.items.splice(i, 0, _pair); - } - else { - this.items.push(_pair); - } - } - delete(key) { - const it = findPair(this.items, key); - if (!it) - return false; - const del = this.items.splice(this.items.indexOf(it), 1); - return del.length > 0; - } - get(key, keepScalar) { - const it = findPair(this.items, key); - const node = it && it.value; - return !keepScalar && isScalar(node) ? node.value : node; - } - has(key) { - return !!findPair(this.items, key); - } - set(key, value) { - this.add(new Pair(key, value), true); - } - /** - * @param ctx - Conversion context, originally set in Document#toJS() - * @param {Class} Type - If set, forces the returned collection type - * @returns Instance of Type, Map, or Object - */ - toJSON(_, ctx, Type) { - const map = Type ? new Type() : ctx && ctx.mapAsMap ? new Map() : {}; - if (ctx && ctx.onCreate) - ctx.onCreate(map); - for (const item of this.items) - addPairToJSMap(ctx, map, item); - return map; - } - toString(ctx, onComment, onChompKeep) { - if (!ctx) - return JSON.stringify(this); - for (const item of this.items) { - if (!isPair(item)) - throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`); - } - if (!ctx.allNullValues && this.hasAllNullValues(false)) - ctx = Object.assign({}, ctx, { allNullValues: true }); - return stringifyCollection(this, ctx, { - blockItemPrefix: '', - flowChars: { start: '{', end: '}' }, - itemIndent: ctx.indent || '', - onChompKeep, - onComment - }); - } -} - -function createMap(schema, obj, ctx) { - const { keepUndefined, replacer } = ctx; - const map = new YAMLMap(schema); - const add = (key, value) => { - if (typeof replacer === 'function') - value = replacer.call(obj, key, value); - else if (Array.isArray(replacer) && !replacer.includes(key)) - return; - if (value !== undefined || keepUndefined) - map.items.push(createPair(key, value, ctx)); - }; - if (obj instanceof Map) { - for (const [key, value] of obj) - add(key, value); - } - else if (obj && typeof obj === 'object') { - for (const key of Object.keys(obj)) - add(key, obj[key]); - } - if (typeof schema.sortMapEntries === 'function') { - map.items.sort(schema.sortMapEntries); - } - return map; -} -const map = { - collection: 'map', - createNode: createMap, - default: true, - nodeClass: YAMLMap, - tag: 'tag:yaml.org,2002:map', - resolve(map, onError) { - if (!isMap(map)) - onError('Expected a mapping for this tag'); - return map; - } -}; - -class YAMLSeq extends Collection { - constructor(schema) { - super(SEQ, schema); - this.items = []; - } - static get tagName() { - return 'tag:yaml.org,2002:seq'; - } - add(value) { - this.items.push(value); - } - /** - * Removes a value from the collection. - * - * `key` must contain a representation of an integer for this to succeed. - * It may be wrapped in a `Scalar`. - * - * @returns `true` if the item was found and removed. - */ - delete(key) { - const idx = asItemIndex(key); - if (typeof idx !== 'number') - return false; - const del = this.items.splice(idx, 1); - return del.length > 0; - } - /** - * Returns item at `key`, or `undefined` if not found. By default unwraps - * scalar values from their surrounding node; to disable set `keepScalar` to - * `true` (collections are always returned intact). - * - * `key` must contain a representation of an integer for this to succeed. - * It may be wrapped in a `Scalar`. - */ - get(key, keepScalar) { - const idx = asItemIndex(key); - if (typeof idx !== 'number') - return undefined; - const it = this.items[idx]; - return !keepScalar && isScalar(it) ? it.value : it; - } - /** - * Checks if the collection includes a value with the key `key`. - * - * `key` must contain a representation of an integer for this to succeed. - * It may be wrapped in a `Scalar`. - */ - has(key) { - const idx = asItemIndex(key); - return typeof idx === 'number' && idx < this.items.length; - } - /** - * Sets a value in this collection. For `!!set`, `value` needs to be a - * boolean to add/remove the item from the set. - * - * If `key` does not contain a representation of an integer, this will throw. - * It may be wrapped in a `Scalar`. - */ - set(key, value) { - const idx = asItemIndex(key); - if (typeof idx !== 'number') - throw new Error(`Expected a valid index, not ${key}.`); - const prev = this.items[idx]; - if (isScalar(prev) && isScalarValue(value)) - prev.value = value; - else - this.items[idx] = value; - } - toJSON(_, ctx) { - const seq = []; - if (ctx && ctx.onCreate) - ctx.onCreate(seq); - let i = 0; - for (const item of this.items) - seq.push(toJS(item, String(i++), ctx)); - return seq; - } - toString(ctx, onComment, onChompKeep) { - if (!ctx) - return JSON.stringify(this); - return stringifyCollection(this, ctx, { - blockItemPrefix: '- ', - flowChars: { start: '[', end: ']' }, - itemIndent: (ctx.indent || '') + ' ', - onChompKeep, - onComment - }); - } -} -function asItemIndex(key) { - let idx = isScalar(key) ? key.value : key; - if (idx && typeof idx === 'string') - idx = Number(idx); - return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0 - ? idx - : null; -} - -function createSeq(schema, obj, ctx) { - const { replacer } = ctx; - const seq = new YAMLSeq(schema); - if (obj && Symbol.iterator in Object(obj)) { - let i = 0; - for (let it of obj) { - if (typeof replacer === 'function') { - const key = obj instanceof Set ? it : String(i++); - it = replacer.call(obj, key, it); - } - seq.items.push(createNode(it, undefined, ctx)); - } - } - return seq; -} -const seq = { - collection: 'seq', - createNode: createSeq, - default: true, - nodeClass: YAMLSeq, - tag: 'tag:yaml.org,2002:seq', - resolve(seq, onError) { - if (!isSeq(seq)) - onError('Expected a sequence for this tag'); - return seq; - } -}; - -const string = { - identify: value => typeof value === 'string', - default: true, - tag: 'tag:yaml.org,2002:str', - resolve: str => str, - stringify(item, ctx, onComment, onChompKeep) { - ctx = Object.assign({ actualString: true }, ctx); - return stringifyString(item, ctx, onComment, onChompKeep); - } -}; - -const nullTag = { - identify: value => value == null, - createNode: () => new Scalar(null), - default: true, - tag: 'tag:yaml.org,2002:null', - test: /^(?:~|[Nn]ull|NULL)?$/, - resolve: () => new Scalar(null), - stringify: ({ source }, ctx) => source && nullTag.test.test(source) ? source : ctx.options.nullStr -}; - -const boolTag = { - identify: value => typeof value === 'boolean', - default: true, - tag: 'tag:yaml.org,2002:bool', - test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/, - resolve: str => new Scalar(str[0] === 't' || str[0] === 'T'), - stringify({ source, value }, ctx) { - if (source && boolTag.test.test(source)) { - const sv = source[0] === 't' || source[0] === 'T'; - if (value === sv) - return source; - } - return value ? ctx.options.trueStr : ctx.options.falseStr; - } -}; - -function stringifyNumber({ format, minFractionDigits, tag, value }) { - if (typeof value === 'bigint') - return String(value); - const num = typeof value === 'number' ? value : Number(value); - if (!isFinite(num)) - return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf'; - let n = JSON.stringify(value); - if (!format && - minFractionDigits && - (!tag || tag === 'tag:yaml.org,2002:float') && - /^\d/.test(n)) { - let i = n.indexOf('.'); - if (i < 0) { - i = n.length; - n += '.'; - } - let d = minFractionDigits - (n.length - i - 1); - while (d-- > 0) - n += '0'; - } - return n; -} - -const floatNaN$1 = { - identify: value => typeof value === 'number', - default: true, - tag: 'tag:yaml.org,2002:float', - test: /^(?:[-+]?\.(?:inf|Inf|INF|nan|NaN|NAN))$/, - resolve: str => str.slice(-3).toLowerCase() === 'nan' - ? NaN - : str[0] === '-' - ? Number.NEGATIVE_INFINITY - : Number.POSITIVE_INFINITY, - stringify: stringifyNumber -}; -const floatExp$1 = { - identify: value => typeof value === 'number', - default: true, - tag: 'tag:yaml.org,2002:float', - format: 'EXP', - test: /^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/, - resolve: str => parseFloat(str), - stringify(node) { - const num = Number(node.value); - return isFinite(num) ? num.toExponential() : stringifyNumber(node); - } -}; -const float$1 = { - identify: value => typeof value === 'number', - default: true, - tag: 'tag:yaml.org,2002:float', - test: /^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/, - resolve(str) { - const node = new Scalar(parseFloat(str)); - const dot = str.indexOf('.'); - if (dot !== -1 && str[str.length - 1] === '0') - node.minFractionDigits = str.length - dot - 1; - return node; - }, - stringify: stringifyNumber -}; - -const intIdentify$2 = (value) => typeof value === 'bigint' || Number.isInteger(value); -const intResolve$1 = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix)); -function intStringify$1(node, radix, prefix) { - const { value } = node; - if (intIdentify$2(value) && value >= 0) - return prefix + value.toString(radix); - return stringifyNumber(node); -} -const intOct$1 = { - identify: value => intIdentify$2(value) && value >= 0, - default: true, - tag: 'tag:yaml.org,2002:int', - format: 'OCT', - test: /^0o[0-7]+$/, - resolve: (str, _onError, opt) => intResolve$1(str, 2, 8, opt), - stringify: node => intStringify$1(node, 8, '0o') -}; -const int$1 = { - identify: intIdentify$2, - default: true, - tag: 'tag:yaml.org,2002:int', - test: /^[-+]?[0-9]+$/, - resolve: (str, _onError, opt) => intResolve$1(str, 0, 10, opt), - stringify: stringifyNumber -}; -const intHex$1 = { - identify: value => intIdentify$2(value) && value >= 0, - default: true, - tag: 'tag:yaml.org,2002:int', - format: 'HEX', - test: /^0x[0-9a-fA-F]+$/, - resolve: (str, _onError, opt) => intResolve$1(str, 2, 16, opt), - stringify: node => intStringify$1(node, 16, '0x') -}; - -const schema$2 = [ - map, - seq, - string, - nullTag, - boolTag, - intOct$1, - int$1, - intHex$1, - floatNaN$1, - floatExp$1, - float$1 -]; - -function intIdentify$1(value) { - return typeof value === 'bigint' || Number.isInteger(value); -} -const stringifyJSON = ({ value }) => JSON.stringify(value); -const jsonScalars = [ - { - identify: value => typeof value === 'string', - default: true, - tag: 'tag:yaml.org,2002:str', - resolve: str => str, - stringify: stringifyJSON - }, - { - identify: value => value == null, - createNode: () => new Scalar(null), - default: true, - tag: 'tag:yaml.org,2002:null', - test: /^null$/, - resolve: () => null, - stringify: stringifyJSON - }, - { - identify: value => typeof value === 'boolean', - default: true, - tag: 'tag:yaml.org,2002:bool', - test: /^true|false$/, - resolve: str => str === 'true', - stringify: stringifyJSON - }, - { - identify: intIdentify$1, - default: true, - tag: 'tag:yaml.org,2002:int', - test: /^-?(?:0|[1-9][0-9]*)$/, - resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10), - stringify: ({ value }) => intIdentify$1(value) ? value.toString() : JSON.stringify(value) - }, - { - identify: value => typeof value === 'number', - default: true, - tag: 'tag:yaml.org,2002:float', - test: /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/, - resolve: str => parseFloat(str), - stringify: stringifyJSON - } -]; -const jsonError = { - default: true, - tag: '', - test: /^/, - resolve(str, onError) { - onError(`Unresolved plain scalar ${JSON.stringify(str)}`); - return str; - } -}; -const schema$1 = [map, seq].concat(jsonScalars, jsonError); - -const binary = { - identify: value => value instanceof Uint8Array, - default: false, - tag: 'tag:yaml.org,2002:binary', - /** - * Returns a Buffer in node and an Uint8Array in browsers - * - * To use the resulting buffer as an image, you'll want to do something like: - * - * const blob = new Blob([buffer], { type: 'image/jpeg' }) - * document.querySelector('#photo').src = URL.createObjectURL(blob) - */ - resolve(src, onError) { - if (typeof Buffer === 'function') { - return Buffer.from(src, 'base64'); - } - else if (typeof atob === 'function') { - // On IE 11, atob() can't handle newlines - const str = atob(src.replace(/[\n\r]/g, '')); - const buffer = new Uint8Array(str.length); - for (let i = 0; i < str.length; ++i) - buffer[i] = str.charCodeAt(i); - return buffer; - } - else { - onError('This environment does not support reading binary tags; either Buffer or atob is required'); - return src; - } - }, - stringify({ comment, type, value }, ctx, onComment, onChompKeep) { - const buf = value; // checked earlier by binary.identify() - let str; - if (typeof Buffer === 'function') { - str = - buf instanceof Buffer - ? buf.toString('base64') - : Buffer.from(buf.buffer).toString('base64'); - } - else if (typeof btoa === 'function') { - let s = ''; - for (let i = 0; i < buf.length; ++i) - s += String.fromCharCode(buf[i]); - str = btoa(s); - } - else { - throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required'); - } - if (!type) - type = Scalar.BLOCK_LITERAL; - if (type !== Scalar.QUOTE_DOUBLE) { - const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth); - const n = Math.ceil(str.length / lineWidth); - const lines = new Array(n); - for (let i = 0, o = 0; i < n; ++i, o += lineWidth) { - lines[i] = str.substr(o, lineWidth); - } - str = lines.join(type === Scalar.BLOCK_LITERAL ? '\n' : ' '); - } - return stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep); - } -}; - -function resolvePairs(seq, onError) { - if (isSeq(seq)) { - for (let i = 0; i < seq.items.length; ++i) { - let item = seq.items[i]; - if (isPair(item)) - continue; - else if (isMap(item)) { - if (item.items.length > 1) - onError('Each pair must have its own sequence indicator'); - const pair = item.items[0] || new Pair(new Scalar(null)); - if (item.commentBefore) - pair.key.commentBefore = pair.key.commentBefore - ? `${item.commentBefore}\n${pair.key.commentBefore}` - : item.commentBefore; - if (item.comment) { - const cn = pair.value || pair.key; - cn.comment = cn.comment - ? `${item.comment}\n${cn.comment}` - : item.comment; - } - item = pair; - } - seq.items[i] = isPair(item) ? item : new Pair(item); - } - } - else - onError('Expected a sequence for this tag'); - return seq; -} -function createPairs(schema, iterable, ctx) { - const { replacer } = ctx; - const pairs = new YAMLSeq(schema); - pairs.tag = 'tag:yaml.org,2002:pairs'; - let i = 0; - if (iterable && Symbol.iterator in Object(iterable)) - for (let it of iterable) { - if (typeof replacer === 'function') - it = replacer.call(iterable, String(i++), it); - let key, value; - if (Array.isArray(it)) { - if (it.length === 2) { - key = it[0]; - value = it[1]; - } - else - throw new TypeError(`Expected [key, value] tuple: ${it}`); - } - else if (it && it instanceof Object) { - const keys = Object.keys(it); - if (keys.length === 1) { - key = keys[0]; - value = it[key]; - } - else - throw new TypeError(`Expected { key: value } tuple: ${it}`); - } - else { - key = it; - } - pairs.items.push(createPair(key, value, ctx)); - } - return pairs; -} -const pairs = { - collection: 'seq', - default: false, - tag: 'tag:yaml.org,2002:pairs', - resolve: resolvePairs, - createNode: createPairs -}; - -class YAMLOMap extends YAMLSeq { - constructor() { - super(); - this.add = YAMLMap.prototype.add.bind(this); - this.delete = YAMLMap.prototype.delete.bind(this); - this.get = YAMLMap.prototype.get.bind(this); - this.has = YAMLMap.prototype.has.bind(this); - this.set = YAMLMap.prototype.set.bind(this); - this.tag = YAMLOMap.tag; - } - /** - * If `ctx` is given, the return type is actually `Map`, - * but TypeScript won't allow widening the signature of a child method. - */ - toJSON(_, ctx) { - if (!ctx) - return super.toJSON(_); - const map = new Map(); - if (ctx && ctx.onCreate) - ctx.onCreate(map); - for (const pair of this.items) { - let key, value; - if (isPair(pair)) { - key = toJS(pair.key, '', ctx); - value = toJS(pair.value, key, ctx); - } - else { - key = toJS(pair, '', ctx); - } - if (map.has(key)) - throw new Error('Ordered maps must not include duplicate keys'); - map.set(key, value); - } - return map; - } -} -YAMLOMap.tag = 'tag:yaml.org,2002:omap'; -const omap = { - collection: 'seq', - identify: value => value instanceof Map, - nodeClass: YAMLOMap, - default: false, - tag: 'tag:yaml.org,2002:omap', - resolve(seq, onError) { - const pairs = resolvePairs(seq, onError); - const seenKeys = []; - for (const { key } of pairs.items) { - if (isScalar(key)) { - if (seenKeys.includes(key.value)) { - onError(`Ordered maps must not include duplicate keys: ${key.value}`); - } - else { - seenKeys.push(key.value); - } - } - } - return Object.assign(new YAMLOMap(), pairs); - }, - createNode(schema, iterable, ctx) { - const pairs = createPairs(schema, iterable, ctx); - const omap = new YAMLOMap(); - omap.items = pairs.items; - return omap; - } -}; - -function boolStringify({ value, source }, ctx) { - const boolObj = value ? trueTag : falseTag; - if (source && boolObj.test.test(source)) - return source; - return value ? ctx.options.trueStr : ctx.options.falseStr; -} -const trueTag = { - identify: value => value === true, - default: true, - tag: 'tag:yaml.org,2002:bool', - test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/, - resolve: () => new Scalar(true), - stringify: boolStringify -}; -const falseTag = { - identify: value => value === false, - default: true, - tag: 'tag:yaml.org,2002:bool', - test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/i, - resolve: () => new Scalar(false), - stringify: boolStringify -}; - -const floatNaN = { - identify: value => typeof value === 'number', - default: true, - tag: 'tag:yaml.org,2002:float', - test: /^[-+]?\.(?:inf|Inf|INF|nan|NaN|NAN)$/, - resolve: (str) => str.slice(-3).toLowerCase() === 'nan' - ? NaN - : str[0] === '-' - ? Number.NEGATIVE_INFINITY - : Number.POSITIVE_INFINITY, - stringify: stringifyNumber -}; -const floatExp = { - identify: value => typeof value === 'number', - default: true, - tag: 'tag:yaml.org,2002:float', - format: 'EXP', - test: /^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/, - resolve: (str) => parseFloat(str.replace(/_/g, '')), - stringify(node) { - const num = Number(node.value); - return isFinite(num) ? num.toExponential() : stringifyNumber(node); - } -}; -const float = { - identify: value => typeof value === 'number', - default: true, - tag: 'tag:yaml.org,2002:float', - test: /^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/, - resolve(str) { - const node = new Scalar(parseFloat(str.replace(/_/g, ''))); - const dot = str.indexOf('.'); - if (dot !== -1) { - const f = str.substring(dot + 1).replace(/_/g, ''); - if (f[f.length - 1] === '0') - node.minFractionDigits = f.length; - } - return node; - }, - stringify: stringifyNumber -}; - -const intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value); -function intResolve(str, offset, radix, { intAsBigInt }) { - const sign = str[0]; - if (sign === '-' || sign === '+') - offset += 1; - str = str.substring(offset).replace(/_/g, ''); - if (intAsBigInt) { - switch (radix) { - case 2: - str = `0b${str}`; - break; - case 8: - str = `0o${str}`; - break; - case 16: - str = `0x${str}`; - break; - } - const n = BigInt(str); - return sign === '-' ? BigInt(-1) * n : n; - } - const n = parseInt(str, radix); - return sign === '-' ? -1 * n : n; -} -function intStringify(node, radix, prefix) { - const { value } = node; - if (intIdentify(value)) { - const str = value.toString(radix); - return value < 0 ? '-' + prefix + str.substr(1) : prefix + str; - } - return stringifyNumber(node); -} -const intBin = { - identify: intIdentify, - default: true, - tag: 'tag:yaml.org,2002:int', - format: 'BIN', - test: /^[-+]?0b[0-1_]+$/, - resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt), - stringify: node => intStringify(node, 2, '0b') -}; -const intOct = { - identify: intIdentify, - default: true, - tag: 'tag:yaml.org,2002:int', - format: 'OCT', - test: /^[-+]?0[0-7_]+$/, - resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt), - stringify: node => intStringify(node, 8, '0') -}; -const int = { - identify: intIdentify, - default: true, - tag: 'tag:yaml.org,2002:int', - test: /^[-+]?[0-9][0-9_]*$/, - resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt), - stringify: stringifyNumber -}; -const intHex = { - identify: intIdentify, - default: true, - tag: 'tag:yaml.org,2002:int', - format: 'HEX', - test: /^[-+]?0x[0-9a-fA-F_]+$/, - resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt), - stringify: node => intStringify(node, 16, '0x') -}; - -class YAMLSet extends YAMLMap { - constructor(schema) { - super(schema); - this.tag = YAMLSet.tag; - } - add(key) { - let pair; - if (isPair(key)) - pair = key; - else if (typeof key === 'object' && - 'key' in key && - 'value' in key && - key.value === null) - pair = new Pair(key.key, null); - else - pair = new Pair(key, null); - const prev = findPair(this.items, pair.key); - if (!prev) - this.items.push(pair); - } - get(key, keepPair) { - const pair = findPair(this.items, key); - return !keepPair && isPair(pair) - ? isScalar(pair.key) - ? pair.key.value - : pair.key - : pair; - } - set(key, value) { - if (typeof value !== 'boolean') - throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`); - const prev = findPair(this.items, key); - if (prev && !value) { - this.items.splice(this.items.indexOf(prev), 1); - } - else if (!prev && value) { - this.items.push(new Pair(key)); - } - } - toJSON(_, ctx) { - return super.toJSON(_, ctx, Set); - } - toString(ctx, onComment, onChompKeep) { - if (!ctx) - return JSON.stringify(this); - if (this.hasAllNullValues(true)) - return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep); - else - throw new Error('Set items must all have null values'); - } -} -YAMLSet.tag = 'tag:yaml.org,2002:set'; -const set = { - collection: 'map', - identify: value => value instanceof Set, - nodeClass: YAMLSet, - default: false, - tag: 'tag:yaml.org,2002:set', - resolve(map, onError) { - if (isMap(map)) { - if (map.hasAllNullValues(true)) - return Object.assign(new YAMLSet(), map); - else - onError('Set items must all have null values'); - } - else - onError('Expected a mapping for this tag'); - return map; - }, - createNode(schema, iterable, ctx) { - const { replacer } = ctx; - const set = new YAMLSet(schema); - if (iterable && Symbol.iterator in Object(iterable)) - for (let value of iterable) { - if (typeof replacer === 'function') - value = replacer.call(iterable, value, value); - set.items.push(createPair(value, null, ctx)); - } - return set; - } -}; - -/** Internal types handle bigint as number, because TS can't figure it out. */ -function parseSexagesimal(str, asBigInt) { - const sign = str[0]; - const parts = sign === '-' || sign === '+' ? str.substring(1) : str; - const num = (n) => asBigInt ? BigInt(n) : Number(n); - const res = parts - .replace(/_/g, '') - .split(':') - .reduce((res, p) => res * num(60) + num(p), num(0)); - return (sign === '-' ? num(-1) * res : res); -} -/** - * hhhh:mm:ss.sss - * - * Internal types handle bigint as number, because TS can't figure it out. - */ -function stringifySexagesimal(node) { - let { value } = node; - let num = (n) => n; - if (typeof value === 'bigint') - num = n => BigInt(n); - else if (isNaN(value) || !isFinite(value)) - return stringifyNumber(node); - let sign = ''; - if (value < 0) { - sign = '-'; - value *= num(-1); - } - const _60 = num(60); - const parts = [value % _60]; // seconds, including ms - if (value < 60) { - parts.unshift(0); // at least one : is required - } - else { - value = (value - parts[0]) / _60; - parts.unshift(value % _60); // minutes - if (value >= 60) { - value = (value - parts[0]) / _60; - parts.unshift(value); // hours - } - } - return (sign + - parts - .map(n => (n < 10 ? '0' + String(n) : String(n))) - .join(':') - .replace(/000000\d*$/, '') // % 60 may introduce error - ); -} -const intTime = { - identify: value => typeof value === 'bigint' || Number.isInteger(value), - default: true, - tag: 'tag:yaml.org,2002:int', - format: 'TIME', - test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/, - resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt), - stringify: stringifySexagesimal -}; -const floatTime = { - identify: value => typeof value === 'number', - default: true, - tag: 'tag:yaml.org,2002:float', - format: 'TIME', - test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/, - resolve: str => parseSexagesimal(str, false), - stringify: stringifySexagesimal -}; -const timestamp = { - identify: value => value instanceof Date, - default: true, - tag: 'tag:yaml.org,2002:timestamp', - // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part - // may be omitted altogether, resulting in a date format. In such a case, the time part is - // assumed to be 00:00:00Z (start of day, UTC). - test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd - '(?:' + // time is optional - '(?:t|T|[ \\t]+)' + // t | T | whitespace - '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)? - '(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30 - ')?$'), - resolve(str) { - const match = str.match(timestamp.test); - if (!match) - throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd'); - const [, year, month, day, hour, minute, second] = match.map(Number); - const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0; - let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec); - const tz = match[8]; - if (tz && tz !== 'Z') { - let d = parseSexagesimal(tz, false); - if (Math.abs(d) < 30) - d *= 60; - date -= 60000 * d; - } - return new Date(date); - }, - stringify: ({ value }) => value.toISOString().replace(/((T00:00)?:00)?\.000Z$/, '') -}; - -const schema = [ - map, - seq, - string, - nullTag, - trueTag, - falseTag, - intBin, - intOct, - int, - intHex, - floatNaN, - floatExp, - float, - binary, - omap, - pairs, - set, - intTime, - floatTime, - timestamp -]; - -const schemas = new Map([ - ['core', schema$2], - ['failsafe', [map, seq, string]], - ['json', schema$1], - ['yaml11', schema], - ['yaml-1.1', schema] -]); -const tagsByName = { - binary, - bool: boolTag, - float: float$1, - floatExp: floatExp$1, - floatNaN: floatNaN$1, - floatTime, - int: int$1, - intHex: intHex$1, - intOct: intOct$1, - intTime, - map, - null: nullTag, - omap, - pairs, - seq, - set, - timestamp -}; -const coreKnownTags = { - 'tag:yaml.org,2002:binary': binary, - 'tag:yaml.org,2002:omap': omap, - 'tag:yaml.org,2002:pairs': pairs, - 'tag:yaml.org,2002:set': set, - 'tag:yaml.org,2002:timestamp': timestamp -}; -function getTags(customTags, schemaName) { - let tags = schemas.get(schemaName); - if (!tags) { - if (Array.isArray(customTags)) - tags = []; - else { - const keys = Array.from(schemas.keys()) - .filter(key => key !== 'yaml11') - .map(key => JSON.stringify(key)) - .join(', '); - throw new Error(`Unknown schema "${schemaName}"; use one of ${keys} or define customTags array`); - } - } - if (Array.isArray(customTags)) { - for (const tag of customTags) - tags = tags.concat(tag); - } - else if (typeof customTags === 'function') { - tags = customTags(tags.slice()); - } - return tags.map(tag => { - if (typeof tag !== 'string') - return tag; - const tagObj = tagsByName[tag]; - if (tagObj) - return tagObj; - const keys = Object.keys(tagsByName) - .map(key => JSON.stringify(key)) - .join(', '); - throw new Error(`Unknown custom tag "${tag}"; use one of ${keys}`); - }); -} - -const sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0; -class Schema { - constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) { - this.compat = Array.isArray(compat) - ? getTags(compat, 'compat') - : compat - ? getTags(null, compat) - : null; - this.merge = !!merge; - this.name = (typeof schema === 'string' && schema) || 'core'; - this.knownTags = resolveKnownTags ? coreKnownTags : {}; - this.tags = getTags(customTags, this.name); - this.toStringOptions = toStringDefaults || null; - Object.defineProperty(this, MAP, { value: map }); - Object.defineProperty(this, SCALAR$1, { value: string }); - Object.defineProperty(this, SEQ, { value: seq }); - // Used by createMap() - this.sortMapEntries = - sortMapEntries === true ? sortMapEntriesByKey : sortMapEntries || null; - } - clone() { - const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this)); - copy.tags = this.tags.slice(); - return copy; - } -} - -function stringifyDocument(doc, options) { - const lines = []; - let hasDirectives = options.directives === true; - if (options.directives !== false && doc.directives) { - const dir = doc.directives.toString(doc); - if (dir) { - lines.push(dir); - hasDirectives = true; - } - else if (doc.directives.marker) - hasDirectives = true; - } - if (hasDirectives) - lines.push('---'); - const ctx = createStringifyContext(doc, options); - const { commentString } = ctx.options; - if (doc.commentBefore) { - if (lines.length !== 1) - lines.unshift(''); - const cs = commentString(doc.commentBefore); - lines.unshift(indentComment(cs, '')); - } - let chompKeep = false; - let contentComment = null; - if (doc.contents) { - if (isNode(doc.contents)) { - if (doc.contents.spaceBefore && hasDirectives) - lines.push(''); - if (doc.contents.commentBefore) { - const cs = commentString(doc.contents.commentBefore); - lines.push(indentComment(cs, '')); - } - // top-level block scalars need to be indented if followed by a comment - ctx.forceBlockIndent = !!doc.comment; - contentComment = doc.contents.comment; - } - const onChompKeep = contentComment ? undefined : () => (chompKeep = true); - let body = stringify$1(doc.contents, ctx, () => (contentComment = null), onChompKeep); - if (contentComment) - body += lineComment(body, '', commentString(contentComment)); - if ((body[0] === '|' || body[0] === '>') && - lines[lines.length - 1] === '---') { - // Top-level block scalars with a preceding doc marker ought to use the - // same line for their header. - lines[lines.length - 1] = `--- ${body}`; - } - else - lines.push(body); - } - else { - lines.push(stringify$1(doc.contents, ctx)); - } - let dc = doc.comment; - if (dc && chompKeep) - dc = dc.replace(/^\n+/, ''); - if (dc) { - if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '') - lines.push(''); - lines.push(indentComment(commentString(dc), '')); - } - return lines.join('\n') + '\n'; -} - -/** - * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec, - * in section 24.5.1.1 "Runtime Semantics: InternalizeJSONProperty" of the - * 2021 edition: https://tc39.es/ecma262/#sec-json.parse - * - * Includes extensions for handling Map and Set objects. - */ -function applyReviver(reviver, obj, key, val) { - if (val && typeof val === 'object') { - if (Array.isArray(val)) { - for (let i = 0, len = val.length; i < len; ++i) { - const v0 = val[i]; - const v1 = applyReviver(reviver, val, String(i), v0); - if (v1 === undefined) - delete val[i]; - else if (v1 !== v0) - val[i] = v1; - } - } - else if (val instanceof Map) { - for (const k of Array.from(val.keys())) { - const v0 = val.get(k); - const v1 = applyReviver(reviver, val, k, v0); - if (v1 === undefined) - val.delete(k); - else if (v1 !== v0) - val.set(k, v1); - } - } - else if (val instanceof Set) { - for (const v0 of Array.from(val)) { - const v1 = applyReviver(reviver, val, v0, v0); - if (v1 === undefined) - val.delete(v0); - else if (v1 !== v0) { - val.delete(v0); - val.add(v1); - } - } - } - else { - for (const [k, v0] of Object.entries(val)) { - const v1 = applyReviver(reviver, val, k, v0); - if (v1 === undefined) - delete val[k]; - else if (v1 !== v0) - val[k] = v1; - } - } - } - return reviver.call(obj, key, val); -} - -class Document { - constructor(value, replacer, options) { - /** A comment before this Document */ - this.commentBefore = null; - /** A comment immediately after this Document */ - this.comment = null; - /** Errors encountered during parsing. */ - this.errors = []; - /** Warnings encountered during parsing. */ - this.warnings = []; - Object.defineProperty(this, NODE_TYPE, { value: DOC }); - let _replacer = null; - if (typeof replacer === 'function' || Array.isArray(replacer)) { - _replacer = replacer; - } - else if (options === undefined && replacer) { - options = replacer; - replacer = undefined; - } - const opt = Object.assign({}, defaultOptions, options); - this.options = opt; - let { version } = opt; - if (options === null || options === void 0 ? void 0 : options.directives) { - this.directives = options.directives.atDocument(); - if (this.directives.yaml.explicit) - version = this.directives.yaml.version; - } - else - this.directives = new Directives({ version }); - this.setSchema(version, options); - if (value === undefined) - this.contents = null; - else { - this.contents = this.createNode(value, _replacer, options); - } - } - /** - * Create a deep copy of this Document and its contents. - * - * Custom Node values that inherit from `Object` still refer to their original instances. - */ - clone() { - const copy = Object.create(Document.prototype, { - [NODE_TYPE]: { value: DOC } - }); - copy.commentBefore = this.commentBefore; - copy.comment = this.comment; - copy.errors = this.errors.slice(); - copy.warnings = this.warnings.slice(); - copy.options = Object.assign({}, this.options); - if (this.directives) - copy.directives = this.directives.clone(); - copy.schema = this.schema.clone(); - copy.contents = isNode(this.contents) - ? this.contents.clone(copy.schema) - : this.contents; - if (this.range) - copy.range = this.range.slice(); - return copy; - } - /** Adds a value to the document. */ - add(value) { - if (assertCollection(this.contents)) - this.contents.add(value); - } - /** Adds a value to the document. */ - addIn(path, value) { - if (assertCollection(this.contents)) - this.contents.addIn(path, value); - } - /** - * Create a new `Alias` node, ensuring that the target `node` has the required anchor. - * - * If `node` already has an anchor, `name` is ignored. - * Otherwise, the `node.anchor` value will be set to `name`, - * or if an anchor with that name is already present in the document, - * `name` will be used as a prefix for a new unique anchor. - * If `name` is undefined, the generated anchor will use 'a' as a prefix. - */ - createAlias(node, name) { - if (!node.anchor) { - const prev = anchorNames(this); - node.anchor = - !name || prev.has(name) ? findNewAnchor(name || 'a', prev) : name; - } - return new Alias(node.anchor); - } - createNode(value, replacer, options) { - let _replacer = undefined; - if (typeof replacer === 'function') { - value = replacer.call({ '': value }, '', value); - _replacer = replacer; - } - else if (Array.isArray(replacer)) { - const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number; - const asStr = replacer.filter(keyToStr).map(String); - if (asStr.length > 0) - replacer = replacer.concat(asStr); - _replacer = replacer; - } - else if (options === undefined && replacer) { - options = replacer; - replacer = undefined; - } - const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options || {}; - const { onAnchor, setAnchors, sourceObjects } = createNodeAnchors(this, anchorPrefix || 'a'); - const ctx = { - aliasDuplicateObjects: aliasDuplicateObjects !== null && aliasDuplicateObjects !== void 0 ? aliasDuplicateObjects : true, - keepUndefined: keepUndefined !== null && keepUndefined !== void 0 ? keepUndefined : false, - onAnchor, - onTagObj, - replacer: _replacer, - schema: this.schema, - sourceObjects - }; - const node = createNode(value, tag, ctx); - if (flow && isCollection(node)) - node.flow = true; - setAnchors(); - return node; - } - /** - * Convert a key and a value into a `Pair` using the current schema, - * recursively wrapping all values as `Scalar` or `Collection` nodes. - */ - createPair(key, value, options = {}) { - const k = this.createNode(key, null, options); - const v = this.createNode(value, null, options); - return new Pair(k, v); - } - /** - * Removes a value from the document. - * @returns `true` if the item was found and removed. - */ - delete(key) { - return assertCollection(this.contents) ? this.contents.delete(key) : false; - } - /** - * Removes a value from the document. - * @returns `true` if the item was found and removed. - */ - deleteIn(path) { - if (isEmptyPath(path)) { - if (this.contents == null) - return false; - this.contents = null; - return true; - } - return assertCollection(this.contents) - ? this.contents.deleteIn(path) - : false; - } - /** - * Returns item at `key`, or `undefined` if not found. By default unwraps - * scalar values from their surrounding node; to disable set `keepScalar` to - * `true` (collections are always returned intact). - */ - get(key, keepScalar) { - return isCollection(this.contents) - ? this.contents.get(key, keepScalar) - : undefined; - } - /** - * Returns item at `path`, or `undefined` if not found. By default unwraps - * scalar values from their surrounding node; to disable set `keepScalar` to - * `true` (collections are always returned intact). - */ - getIn(path, keepScalar) { - if (isEmptyPath(path)) - return !keepScalar && isScalar(this.contents) - ? this.contents.value - : this.contents; - return isCollection(this.contents) - ? this.contents.getIn(path, keepScalar) - : undefined; - } - /** - * Checks if the document includes a value with the key `key`. - */ - has(key) { - return isCollection(this.contents) ? this.contents.has(key) : false; - } - /** - * Checks if the document includes a value at `path`. - */ - hasIn(path) { - if (isEmptyPath(path)) - return this.contents !== undefined; - return isCollection(this.contents) ? this.contents.hasIn(path) : false; - } - /** - * Sets a value in this document. For `!!set`, `value` needs to be a - * boolean to add/remove the item from the set. - */ - set(key, value) { - if (this.contents == null) { - this.contents = collectionFromPath(this.schema, [key], value); - } - else if (assertCollection(this.contents)) { - this.contents.set(key, value); - } - } - /** - * Sets a value in this document. For `!!set`, `value` needs to be a - * boolean to add/remove the item from the set. - */ - setIn(path, value) { - if (isEmptyPath(path)) - this.contents = value; - else if (this.contents == null) { - this.contents = collectionFromPath(this.schema, Array.from(path), value); - } - else if (assertCollection(this.contents)) { - this.contents.setIn(path, value); - } - } - /** - * Change the YAML version and schema used by the document. - * A `null` version disables support for directives, explicit tags, anchors, and aliases. - * It also requires the `schema` option to be given as a `Schema` instance value. - * - * Overrides all previously set schema options. - */ - setSchema(version, options = {}) { - if (typeof version === 'number') - version = String(version); - let opt; - switch (version) { - case '1.1': - if (this.directives) - this.directives.yaml.version = '1.1'; - else - this.directives = new Directives({ version: '1.1' }); - opt = { merge: true, resolveKnownTags: false, schema: 'yaml-1.1' }; - break; - case '1.2': - if (this.directives) - this.directives.yaml.version = '1.2'; - else - this.directives = new Directives({ version: '1.2' }); - opt = { merge: false, resolveKnownTags: true, schema: 'core' }; - break; - case null: - if (this.directives) - delete this.directives; - opt = null; - break; - default: { - const sv = JSON.stringify(version); - throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`); - } - } - // Not using `instanceof Schema` to allow for duck typing - if (options.schema instanceof Object) - this.schema = options.schema; - else if (opt) - this.schema = new Schema(Object.assign(opt, options)); - else - throw new Error(`With a null YAML version, the { schema: Schema } option is required`); - } - // json & jsonArg are only used from toJSON() - toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) { - const ctx = { - anchors: new Map(), - doc: this, - keep: !json, - mapAsMap: mapAsMap === true, - mapKeyWarned: false, - maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100, - stringify: stringify$1 - }; - const res = toJS(this.contents, jsonArg || '', ctx); - if (typeof onAnchor === 'function') - for (const { count, res } of ctx.anchors.values()) - onAnchor(res, count); - return typeof reviver === 'function' - ? applyReviver(reviver, { '': res }, '', res) - : res; - } - /** - * A JSON representation of the document `contents`. - * - * @param jsonArg Used by `JSON.stringify` to indicate the array index or - * property name. - */ - toJSON(jsonArg, onAnchor) { - return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor }); - } - /** A YAML representation of the document. */ - toString(options = {}) { - if (this.errors.length > 0) - throw new Error('Document with errors cannot be stringified'); - if ('indent' in options && - (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) { - const s = JSON.stringify(options.indent); - throw new Error(`"indent" option must be a positive integer, not ${s}`); - } - return stringifyDocument(this, options); - } -} -function assertCollection(contents) { - if (isCollection(contents)) - return true; - throw new Error('Expected a YAML collection as document contents'); -} - -class YAMLError extends Error { - constructor(name, pos, code, message) { - super(); - this.name = name; - this.code = code; - this.message = message; - this.pos = pos; - } -} -class YAMLParseError extends YAMLError { - constructor(pos, code, message) { - super('YAMLParseError', pos, code, message); - } -} -class YAMLWarning extends YAMLError { - constructor(pos, code, message) { - super('YAMLWarning', pos, code, message); - } -} -const prettifyError = (src, lc) => (error) => { - if (error.pos[0] === -1) - return; - error.linePos = error.pos.map(pos => lc.linePos(pos)); - const { line, col } = error.linePos[0]; - error.message += ` at line ${line}, column ${col}`; - let ci = col - 1; - let lineStr = src - .substring(lc.lineStarts[line - 1], lc.lineStarts[line]) - .replace(/[\n\r]+$/, ''); - // Trim to max 80 chars, keeping col position near the middle - if (ci >= 60 && lineStr.length > 80) { - const trimStart = Math.min(ci - 39, lineStr.length - 79); - lineStr = '…' + lineStr.substring(trimStart); - ci -= trimStart - 1; - } - if (lineStr.length > 80) - lineStr = lineStr.substring(0, 79) + '…'; - // Include previous line in context if pointing at line start - if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) { - // Regexp won't match if start is trimmed - let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]); - if (prev.length > 80) - prev = prev.substring(0, 79) + '…\n'; - lineStr = prev + lineStr; - } - if (/[^ ]/.test(lineStr)) { - let count = 1; - const end = error.linePos[1]; - if (end && end.line === line && end.col > col) { - count = Math.min(end.col - col, 80 - ci); - } - const pointer = ' '.repeat(ci) + '^'.repeat(count); - error.message += `:\n\n${lineStr}\n${pointer}\n`; - } -}; - -function resolveProps(tokens, { flow, indicator, next, offset, onError, startOnNewline }) { - let spaceBefore = false; - let atNewline = startOnNewline; - let hasSpace = startOnNewline; - let comment = ''; - let commentSep = ''; - let hasNewline = false; - let reqSpace = false; - let anchor = null; - let tag = null; - let comma = null; - let found = null; - let start = null; - for (const token of tokens) { - if (reqSpace) { - if (token.type !== 'space' && - token.type !== 'newline' && - token.type !== 'comma') - onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space'); - reqSpace = false; - } - switch (token.type) { - case 'space': - // At the doc level, tabs at line start may be parsed - // as leading white space rather than indentation. - // In a flow collection, only the parser handles indent. - if (!flow && - atNewline && - indicator !== 'doc-start' && - token.source[0] === '\t') - onError(token, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation'); - hasSpace = true; - break; - case 'comment': { - if (!hasSpace) - onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters'); - const cb = token.source.substring(1) || ' '; - if (!comment) - comment = cb; - else - comment += commentSep + cb; - commentSep = ''; - atNewline = false; - break; - } - case 'newline': - if (atNewline) { - if (comment) - comment += token.source; - else - spaceBefore = true; - } - else - commentSep += token.source; - atNewline = true; - hasNewline = true; - hasSpace = true; - break; - case 'anchor': - if (anchor) - onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor'); - anchor = token; - if (start === null) - start = token.offset; - atNewline = false; - hasSpace = false; - reqSpace = true; - break; - case 'tag': { - if (tag) - onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag'); - tag = token; - if (start === null) - start = token.offset; - atNewline = false; - hasSpace = false; - reqSpace = true; - break; - } - case indicator: - // Could here handle preceding comments differently - if (anchor || tag) - onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`); - if (found) - onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow || 'collection'}`); - found = token; - atNewline = false; - hasSpace = false; - break; - case 'comma': - if (flow) { - if (comma) - onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`); - comma = token; - atNewline = false; - hasSpace = false; - break; - } - // else fallthrough - default: - onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`); - atNewline = false; - hasSpace = false; - } - } - const last = tokens[tokens.length - 1]; - const end = last ? last.offset + last.source.length : offset; - if (reqSpace && - next && - next.type !== 'space' && - next.type !== 'newline' && - next.type !== 'comma' && - (next.type !== 'scalar' || next.source !== '')) - onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space'); - return { - comma, - found, - spaceBefore, - comment, - hasNewline, - anchor, - tag, - end, - start: start !== null && start !== void 0 ? start : end - }; -} - -function containsNewline(key) { - if (!key) - return null; - switch (key.type) { - case 'alias': - case 'scalar': - case 'double-quoted-scalar': - case 'single-quoted-scalar': - if (key.source.includes('\n')) - return true; - if (key.end) - for (const st of key.end) - if (st.type === 'newline') - return true; - return false; - case 'flow-collection': - for (const it of key.items) { - for (const st of it.start) - if (st.type === 'newline') - return true; - if (it.sep) - for (const st of it.sep) - if (st.type === 'newline') - return true; - if (containsNewline(it.key) || containsNewline(it.value)) - return true; - } - return false; - default: - return true; - } -} - -function flowIndentCheck(indent, fc, onError) { - if ((fc === null || fc === void 0 ? void 0 : fc.type) === 'flow-collection') { - const end = fc.end[0]; - if (end.indent === indent && - (end.source === ']' || end.source === '}') && - containsNewline(fc)) { - const msg = 'Flow end indicator should be more indented than parent'; - onError(end, 'BAD_INDENT', msg, true); - } - } -} - -function mapIncludes(ctx, items, search) { - const { uniqueKeys } = ctx.options; - if (uniqueKeys === false) - return false; - const isEqual = typeof uniqueKeys === 'function' - ? uniqueKeys - : (a, b) => a === b || - (isScalar(a) && - isScalar(b) && - a.value === b.value && - !(a.value === '<<' && ctx.schema.merge)); - return items.some(pair => isEqual(pair.key, search)); -} - -const startColMsg = 'All mapping items must start at the same column'; -function resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError) { - var _a; - const map = new YAMLMap(ctx.schema); - if (ctx.atRoot) - ctx.atRoot = false; - let offset = bm.offset; - for (const collItem of bm.items) { - const { start, key, sep, value } = collItem; - // key properties - const keyProps = resolveProps(start, { - indicator: 'explicit-key-ind', - next: key || (sep === null || sep === void 0 ? void 0 : sep[0]), - offset, - onError, - startOnNewline: true - }); - const implicitKey = !keyProps.found; - if (implicitKey) { - if (key) { - if (key.type === 'block-seq') - onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key'); - else if ('indent' in key && key.indent !== bm.indent) - onError(offset, 'BAD_INDENT', startColMsg); - } - if (!keyProps.anchor && !keyProps.tag && !sep) { - // TODO: assert being at last item? - if (keyProps.comment) { - if (map.comment) - map.comment += '\n' + keyProps.comment; - else - map.comment = keyProps.comment; - } - continue; - } - } - else if (((_a = keyProps.found) === null || _a === void 0 ? void 0 : _a.indent) !== bm.indent) - onError(offset, 'BAD_INDENT', startColMsg); - if (implicitKey && containsNewline(key)) - onError(key, // checked by containsNewline() - 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line'); - // key value - const keyStart = keyProps.end; - const keyNode = key - ? composeNode(ctx, key, keyProps, onError) - : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError); - if (ctx.schema.compat) - flowIndentCheck(bm.indent, key, onError); - if (mapIncludes(ctx, map.items, keyNode)) - onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique'); - // value properties - const valueProps = resolveProps(sep || [], { - indicator: 'map-value-ind', - next: value, - offset: keyNode.range[2], - onError, - startOnNewline: !key || key.type === 'block-scalar' - }); - offset = valueProps.end; - if (valueProps.found) { - if (implicitKey) { - if ((value === null || value === void 0 ? void 0 : value.type) === 'block-map' && !valueProps.hasNewline) - onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings'); - if (ctx.options.strict && - keyProps.start < valueProps.found.offset - 1024) - onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key'); - } - // value value - const valueNode = value - ? composeNode(ctx, value, valueProps, onError) - : composeEmptyNode(ctx, offset, sep, null, valueProps, onError); - if (ctx.schema.compat) - flowIndentCheck(bm.indent, value, onError); - offset = valueNode.range[2]; - const pair = new Pair(keyNode, valueNode); - if (ctx.options.keepSourceTokens) - pair.srcToken = collItem; - map.items.push(pair); - } - else { - // key with no value - if (implicitKey) - onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values'); - if (valueProps.comment) { - if (keyNode.comment) - keyNode.comment += '\n' + valueProps.comment; - else - keyNode.comment = valueProps.comment; - } - const pair = new Pair(keyNode); - if (ctx.options.keepSourceTokens) - pair.srcToken = collItem; - map.items.push(pair); - } - } - map.range = [bm.offset, offset, offset]; - return map; -} - -function resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError) { - const seq = new YAMLSeq(ctx.schema); - if (ctx.atRoot) - ctx.atRoot = false; - let offset = bs.offset; - for (const { start, value } of bs.items) { - const props = resolveProps(start, { - indicator: 'seq-item-ind', - next: value, - offset, - onError, - startOnNewline: true - }); - offset = props.end; - if (!props.found) { - if (props.anchor || props.tag || value) { - if (value && value.type === 'block-seq') - onError(offset, 'BAD_INDENT', 'All sequence items must start at the same column'); - else - onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator'); - } - else { - // TODO: assert being at last item? - if (props.comment) - seq.comment = props.comment; - continue; - } - } - const node = value - ? composeNode(ctx, value, props, onError) - : composeEmptyNode(ctx, offset, start, null, props, onError); - if (ctx.schema.compat) - flowIndentCheck(bs.indent, value, onError); - offset = node.range[2]; - seq.items.push(node); - } - seq.range = [bs.offset, offset, offset]; - return seq; -} - -function resolveEnd(end, offset, reqSpace, onError) { - let comment = ''; - if (end) { - let hasSpace = false; - let sep = ''; - for (const token of end) { - const { source, type } = token; - switch (type) { - case 'space': - hasSpace = true; - break; - case 'comment': { - if (reqSpace && !hasSpace) - onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters'); - const cb = source.substring(1) || ' '; - if (!comment) - comment = cb; - else - comment += sep + cb; - sep = ''; - break; - } - case 'newline': - if (comment) - sep += source; - hasSpace = true; - break; - default: - onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`); - } - offset += source.length; - } - } - return { comment, offset }; -} - -const blockMsg = 'Block collections are not allowed within flow collections'; -const isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq'); -function resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError) { - const isMap = fc.start.source === '{'; - const fcName = isMap ? 'flow map' : 'flow sequence'; - const coll = isMap - ? new YAMLMap(ctx.schema) - : new YAMLSeq(ctx.schema); - coll.flow = true; - const atRoot = ctx.atRoot; - if (atRoot) - ctx.atRoot = false; - let offset = fc.offset + fc.start.source.length; - for (let i = 0; i < fc.items.length; ++i) { - const collItem = fc.items[i]; - const { start, key, sep, value } = collItem; - const props = resolveProps(start, { - flow: fcName, - indicator: 'explicit-key-ind', - next: key || (sep === null || sep === void 0 ? void 0 : sep[0]), - offset, - onError, - startOnNewline: false - }); - if (!props.found) { - if (!props.anchor && !props.tag && !sep && !value) { - if (i === 0 && props.comma) - onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`); - else if (i < fc.items.length - 1) - onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`); - if (props.comment) { - if (coll.comment) - coll.comment += '\n' + props.comment; - else - coll.comment = props.comment; - } - offset = props.end; - continue; - } - if (!isMap && ctx.options.strict && containsNewline(key)) - onError(key, // checked by containsNewline() - 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line'); - } - if (i === 0) { - if (props.comma) - onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`); - } - else { - if (!props.comma) - onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`); - if (props.comment) { - let prevItemComment = ''; - loop: for (const st of start) { - switch (st.type) { - case 'comma': - case 'space': - break; - case 'comment': - prevItemComment = st.source.substring(1); - break loop; - default: - break loop; - } - } - if (prevItemComment) { - let prev = coll.items[coll.items.length - 1]; - if (isPair(prev)) - prev = prev.value || prev.key; - if (prev.comment) - prev.comment += '\n' + prevItemComment; - else - prev.comment = prevItemComment; - props.comment = props.comment.substring(prevItemComment.length + 1); - } - } - } - if (!isMap && !sep && !props.found) { - // item is a value in a seq - // → key & sep are empty, start does not include ? or : - const valueNode = value - ? composeNode(ctx, value, props, onError) - : composeEmptyNode(ctx, props.end, sep, null, props, onError); - coll.items.push(valueNode); - offset = valueNode.range[2]; - if (isBlock(value)) - onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg); - } - else { - // item is a key+value pair - // key value - const keyStart = props.end; - const keyNode = key - ? composeNode(ctx, key, props, onError) - : composeEmptyNode(ctx, keyStart, start, null, props, onError); - if (isBlock(key)) - onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg); - // value properties - const valueProps = resolveProps(sep || [], { - flow: fcName, - indicator: 'map-value-ind', - next: value, - offset: keyNode.range[2], - onError, - startOnNewline: false - }); - if (valueProps.found) { - if (!isMap && !props.found && ctx.options.strict) { - if (sep) - for (const st of sep) { - if (st === valueProps.found) - break; - if (st.type === 'newline') { - onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line'); - break; - } - } - if (props.start < valueProps.found.offset - 1024) - onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key'); - } - } - else if (value) { - if ('source' in value && value.source && value.source[0] === ':') - onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`); - else - onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`); - } - // value value - const valueNode = value - ? composeNode(ctx, value, valueProps, onError) - : valueProps.found - ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError) - : null; - if (valueNode) { - if (isBlock(value)) - onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg); - } - else if (valueProps.comment) { - if (keyNode.comment) - keyNode.comment += '\n' + valueProps.comment; - else - keyNode.comment = valueProps.comment; - } - const pair = new Pair(keyNode, valueNode); - if (ctx.options.keepSourceTokens) - pair.srcToken = collItem; - if (isMap) { - const map = coll; - if (mapIncludes(ctx, map.items, keyNode)) - onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique'); - map.items.push(pair); - } - else { - const map = new YAMLMap(ctx.schema); - map.flow = true; - map.items.push(pair); - coll.items.push(map); - } - offset = valueNode ? valueNode.range[2] : valueProps.end; - } - } - const expectedEnd = isMap ? '}' : ']'; - const [ce, ...ee] = fc.end; - let cePos = offset; - if (ce && ce.source === expectedEnd) - cePos = ce.offset + ce.source.length; - else { - const name = fcName[0].toUpperCase() + fcName.substring(1); - const msg = atRoot - ? `${name} must end with a ${expectedEnd}` - : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`; - onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg); - if (ce && ce.source.length !== 1) - ee.unshift(ce); - } - if (ee.length > 0) { - const end = resolveEnd(ee, cePos, ctx.options.strict, onError); - if (end.comment) { - if (coll.comment) - coll.comment += '\n' + end.comment; - else - coll.comment = end.comment; - } - coll.range = [fc.offset, cePos, end.offset]; - } - else { - coll.range = [fc.offset, cePos, cePos]; - } - return coll; -} - -function composeCollection(CN, ctx, token, tagToken, onError) { - let coll; - switch (token.type) { - case 'block-map': { - coll = resolveBlockMap(CN, ctx, token, onError); - break; - } - case 'block-seq': { - coll = resolveBlockSeq(CN, ctx, token, onError); - break; - } - case 'flow-collection': { - coll = resolveFlowCollection(CN, ctx, token, onError); - break; - } - } - if (!tagToken) - return coll; - const tagName = ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg)); - if (!tagName) - return coll; - // Cast needed due to: https://github.com/Microsoft/TypeScript/issues/3841 - const Coll = coll.constructor; - if (tagName === '!' || tagName === Coll.tagName) { - coll.tag = Coll.tagName; - return coll; - } - const expType = isMap(coll) ? 'map' : 'seq'; - let tag = ctx.schema.tags.find(t => t.collection === expType && t.tag === tagName); - if (!tag) { - const kt = ctx.schema.knownTags[tagName]; - if (kt && kt.collection === expType) { - ctx.schema.tags.push(Object.assign({}, kt, { default: false })); - tag = kt; - } - else { - onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true); - coll.tag = tagName; - return coll; - } - } - const res = tag.resolve(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options); - const node = isNode(res) - ? res - : new Scalar(res); - node.range = coll.range; - node.tag = tagName; - if (tag === null || tag === void 0 ? void 0 : tag.format) - node.format = tag.format; - return node; -} - -function resolveBlockScalar(scalar, strict, onError) { - const start = scalar.offset; - const header = parseBlockScalarHeader(scalar, strict, onError); - if (!header) - return { value: '', type: null, comment: '', range: [start, start, start] }; - const type = header.mode === '>' ? Scalar.BLOCK_FOLDED : Scalar.BLOCK_LITERAL; - const lines = scalar.source ? splitLines(scalar.source) : []; - // determine the end of content & start of chomping - let chompStart = lines.length; - for (let i = lines.length - 1; i >= 0; --i) { - const content = lines[i][1]; - if (content === '' || content === '\r') - chompStart = i; - else - break; - } - // shortcut for empty contents - if (!scalar.source || chompStart === 0) { - const value = header.chomp === '+' ? '\n'.repeat(Math.max(0, lines.length - 1)) : ''; - let end = start + header.length; - if (scalar.source) - end += scalar.source.length; - return { value, type, comment: header.comment, range: [start, end, end] }; - } - // find the indentation level to trim from start - let trimIndent = scalar.indent + header.indent; - let offset = scalar.offset + header.length; - let contentStart = 0; - for (let i = 0; i < chompStart; ++i) { - const [indent, content] = lines[i]; - if (content === '' || content === '\r') { - if (header.indent === 0 && indent.length > trimIndent) - trimIndent = indent.length; - } - else { - if (indent.length < trimIndent) { - const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator'; - onError(offset + indent.length, 'MISSING_CHAR', message); - } - if (header.indent === 0) - trimIndent = indent.length; - contentStart = i; - break; - } - offset += indent.length + content.length + 1; - } - let value = ''; - let sep = ''; - let prevMoreIndented = false; - // leading whitespace is kept intact - for (let i = 0; i < contentStart; ++i) - value += lines[i][0].slice(trimIndent) + '\n'; - for (let i = contentStart; i < chompStart; ++i) { - let [indent, content] = lines[i]; - offset += indent.length + content.length + 1; - const crlf = content[content.length - 1] === '\r'; - if (crlf) - content = content.slice(0, -1); - /* istanbul ignore if already caught in lexer */ - if (content && indent.length < trimIndent) { - const src = header.indent - ? 'explicit indentation indicator' - : 'first line'; - const message = `Block scalar lines must not be less indented than their ${src}`; - onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message); - indent = ''; - } - if (type === Scalar.BLOCK_LITERAL) { - value += sep + indent.slice(trimIndent) + content; - sep = '\n'; - } - else if (indent.length > trimIndent || content[0] === '\t') { - // more-indented content within a folded block - if (sep === ' ') - sep = '\n'; - else if (!prevMoreIndented && sep === '\n') - sep = '\n\n'; - value += sep + indent.slice(trimIndent) + content; - sep = '\n'; - prevMoreIndented = true; - } - else if (content === '') { - // empty line - if (sep === '\n') - value += '\n'; - else - sep = '\n'; - } - else { - value += sep + content; - sep = ' '; - prevMoreIndented = false; - } - } - switch (header.chomp) { - case '-': - break; - case '+': - for (let i = chompStart; i < lines.length; ++i) - value += '\n' + lines[i][0].slice(trimIndent); - if (value[value.length - 1] !== '\n') - value += '\n'; - break; - default: - value += '\n'; - } - const end = start + header.length + scalar.source.length; - return { value, type, comment: header.comment, range: [start, end, end] }; -} -function parseBlockScalarHeader({ offset, props }, strict, onError) { - /* istanbul ignore if should not happen */ - if (props[0].type !== 'block-scalar-header') { - onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found'); - return null; - } - const { source } = props[0]; - const mode = source[0]; - let indent = 0; - let chomp = ''; - let error = -1; - for (let i = 1; i < source.length; ++i) { - const ch = source[i]; - if (!chomp && (ch === '-' || ch === '+')) - chomp = ch; - else { - const n = Number(ch); - if (!indent && n) - indent = n; - else if (error === -1) - error = offset + i; - } - } - if (error !== -1) - onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`); - let hasSpace = false; - let comment = ''; - let length = source.length; - for (let i = 1; i < props.length; ++i) { - const token = props[i]; - switch (token.type) { - case 'space': - hasSpace = true; - // fallthrough - case 'newline': - length += token.source.length; - break; - case 'comment': - if (strict && !hasSpace) { - const message = 'Comments must be separated from other tokens by white space characters'; - onError(token, 'MISSING_CHAR', message); - } - length += token.source.length; - comment = token.source.substring(1); - break; - case 'error': - onError(token, 'UNEXPECTED_TOKEN', token.message); - length += token.source.length; - break; - /* istanbul ignore next should not happen */ - default: { - const message = `Unexpected token in block scalar header: ${token.type}`; - onError(token, 'UNEXPECTED_TOKEN', message); - const ts = token.source; - if (ts && typeof ts === 'string') - length += ts.length; - } - } - } - return { mode, indent, chomp, comment, length }; -} -/** @returns Array of lines split up as `[indent, content]` */ -function splitLines(source) { - const split = source.split(/\n( *)/); - const first = split[0]; - const m = first.match(/^( *)/); - const line0 = m && m[1] ? [m[1], first.slice(m[1].length)] : ['', first]; - const lines = [line0]; - for (let i = 1; i < split.length; i += 2) - lines.push([split[i], split[i + 1]]); - return lines; -} - -function resolveFlowScalar(scalar, strict, onError) { - const { offset, type, source, end } = scalar; - let _type; - let value; - const _onError = (rel, code, msg) => onError(offset + rel, code, msg); - switch (type) { - case 'scalar': - _type = Scalar.PLAIN; - value = plainValue(source, _onError); - break; - case 'single-quoted-scalar': - _type = Scalar.QUOTE_SINGLE; - value = singleQuotedValue(source, _onError); - break; - case 'double-quoted-scalar': - _type = Scalar.QUOTE_DOUBLE; - value = doubleQuotedValue(source, _onError); - break; - /* istanbul ignore next should not happen */ - default: - onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`); - return { - value: '', - type: null, - comment: '', - range: [offset, offset + source.length, offset + source.length] - }; - } - const valueEnd = offset + source.length; - const re = resolveEnd(end, valueEnd, strict, onError); - return { - value, - type: _type, - comment: re.comment, - range: [offset, valueEnd, re.offset] - }; -} -function plainValue(source, onError) { - let badChar = ''; - switch (source[0]) { - /* istanbul ignore next should not happen */ - case '\t': - badChar = 'a tab character'; - break; - case ',': - badChar = 'flow indicator character ,'; - break; - case '%': - badChar = 'directive indicator character %'; - break; - case '|': - case '>': { - badChar = `block scalar indicator ${source[0]}`; - break; - } - case '@': - case '`': { - badChar = `reserved character ${source[0]}`; - break; - } - } - if (badChar) - onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`); - return foldLines(source); -} -function singleQuotedValue(source, onError) { - if (source[source.length - 1] !== "'" || source.length === 1) - onError(source.length, 'MISSING_CHAR', "Missing closing 'quote"); - return foldLines(source.slice(1, -1)).replace(/''/g, "'"); -} -function foldLines(source) { - /** - * The negative lookbehind here and in the `re` RegExp is to - * prevent causing a polynomial search time in certain cases. - * - * The try-catch is for Safari, which doesn't support this yet: - * https://caniuse.com/js-regexp-lookbehind - */ - let first, line; - try { - first = new RegExp('(.*?)(? wsStart ? source.slice(wsStart, i + 1) : ch; - } - else { - res += ch; - } - } - if (source[source.length - 1] !== '"' || source.length === 1) - onError(source.length, 'MISSING_CHAR', 'Missing closing "quote'); - return res; -} -/** - * Fold a single newline into a space, multiple newlines to N - 1 newlines. - * Presumes `source[offset] === '\n'` - */ -function foldNewline(source, offset) { - let fold = ''; - let ch = source[offset + 1]; - while (ch === ' ' || ch === '\t' || ch === '\n' || ch === '\r') { - if (ch === '\r' && source[offset + 2] !== '\n') - break; - if (ch === '\n') - fold += '\n'; - offset += 1; - ch = source[offset + 1]; - } - if (!fold) - fold = ' '; - return { fold, offset }; -} -const escapeCodes = { - '0': '\0', - a: '\x07', - b: '\b', - e: '\x1b', - f: '\f', - n: '\n', - r: '\r', - t: '\t', - v: '\v', - N: '\u0085', - _: '\u00a0', - L: '\u2028', - P: '\u2029', - ' ': ' ', - '"': '"', - '/': '/', - '\\': '\\', - '\t': '\t' -}; -function parseCharCode(source, offset, length, onError) { - const cc = source.substr(offset, length); - const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc); - const code = ok ? parseInt(cc, 16) : NaN; - if (isNaN(code)) { - const raw = source.substr(offset - 2, length + 2); - onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`); - return raw; - } - return String.fromCodePoint(code); -} - -function composeScalar(ctx, token, tagToken, onError) { - const { value, type, comment, range } = token.type === 'block-scalar' - ? resolveBlockScalar(token, ctx.options.strict, onError) - : resolveFlowScalar(token, ctx.options.strict, onError); - const tagName = tagToken - ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg)) - : null; - const tag = tagToken && tagName - ? findScalarTagByName(ctx.schema, value, tagName, tagToken, onError) - : token.type === 'scalar' - ? findScalarTagByTest(ctx, value, token, onError) - : ctx.schema[SCALAR$1]; - let scalar; - try { - const res = tag.resolve(value, msg => onError(tagToken || token, 'TAG_RESOLVE_FAILED', msg), ctx.options); - scalar = isScalar(res) ? res : new Scalar(res); - } - catch (error) { - const msg = error instanceof Error ? error.message : String(error); - onError(tagToken || token, 'TAG_RESOLVE_FAILED', msg); - scalar = new Scalar(value); - } - scalar.range = range; - scalar.source = value; - if (type) - scalar.type = type; - if (tagName) - scalar.tag = tagName; - if (tag.format) - scalar.format = tag.format; - if (comment) - scalar.comment = comment; - return scalar; -} -function findScalarTagByName(schema, value, tagName, tagToken, onError) { - var _a; - if (tagName === '!') - return schema[SCALAR$1]; // non-specific tag - const matchWithTest = []; - for (const tag of schema.tags) { - if (!tag.collection && tag.tag === tagName) { - if (tag.default && tag.test) - matchWithTest.push(tag); - else - return tag; - } - } - for (const tag of matchWithTest) - if ((_a = tag.test) === null || _a === void 0 ? void 0 : _a.test(value)) - return tag; - const kt = schema.knownTags[tagName]; - if (kt && !kt.collection) { - // Ensure that the known tag is available for stringifying, - // but does not get used by default. - schema.tags.push(Object.assign({}, kt, { default: false, test: undefined })); - return kt; - } - onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str'); - return schema[SCALAR$1]; -} -function findScalarTagByTest({ directives, schema }, value, token, onError) { - const tag = schema.tags.find(tag => { var _a; return tag.default && ((_a = tag.test) === null || _a === void 0 ? void 0 : _a.test(value)); }) || schema[SCALAR$1]; - if (schema.compat) { - const compat = schema.compat.find(tag => { var _a; return tag.default && ((_a = tag.test) === null || _a === void 0 ? void 0 : _a.test(value)); }) || - schema[SCALAR$1]; - if (tag.tag !== compat.tag) { - const ts = directives.tagString(tag.tag); - const cs = directives.tagString(compat.tag); - const msg = `Value may be parsed as either ${ts} or ${cs}`; - onError(token, 'TAG_RESOLVE_FAILED', msg, true); - } - } - return tag; -} - -function emptyScalarPosition(offset, before, pos) { - if (before) { - if (pos === null) - pos = before.length; - for (let i = pos - 1; i >= 0; --i) { - let st = before[i]; - switch (st.type) { - case 'space': - case 'comment': - case 'newline': - offset -= st.source.length; - continue; - } - // Technically, an empty scalar is immediately after the last non-empty - // node, but it's more useful to place it after any whitespace. - st = before[++i]; - while ((st === null || st === void 0 ? void 0 : st.type) === 'space') { - offset += st.source.length; - st = before[++i]; - } - break; - } - } - return offset; -} - -const CN = { composeNode, composeEmptyNode }; -function composeNode(ctx, token, props, onError) { - const { spaceBefore, comment, anchor, tag } = props; - let node; - switch (token.type) { - case 'alias': - node = composeAlias(ctx, token, onError); - if (anchor || tag) - onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties'); - break; - case 'scalar': - case 'single-quoted-scalar': - case 'double-quoted-scalar': - case 'block-scalar': - node = composeScalar(ctx, token, tag, onError); - if (anchor) - node.anchor = anchor.source.substring(1); - break; - case 'block-map': - case 'block-seq': - case 'flow-collection': - node = composeCollection(CN, ctx, token, tag, onError); - if (anchor) - node.anchor = anchor.source.substring(1); - break; - default: - console.log(token); - throw new Error(`Unsupporten token type: ${token.type}`); - } - if (anchor && node.anchor === '') - onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string'); - if (spaceBefore) - node.spaceBefore = true; - if (comment) { - if (token.type === 'scalar' && token.source === '') - node.comment = comment; - else - node.commentBefore = comment; - } - if (ctx.options.keepSourceTokens) - node.srcToken = token; - return node; -} -function composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag }, onError) { - const token = { - type: 'scalar', - offset: emptyScalarPosition(offset, before, pos), - indent: -1, - source: '' - }; - const node = composeScalar(ctx, token, tag, onError); - if (anchor) { - node.anchor = anchor.source.substring(1); - if (node.anchor === '') - onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string'); - } - if (spaceBefore) - node.spaceBefore = true; - if (comment) - node.comment = comment; - return node; -} -function composeAlias({ options }, { offset, source, end }, onError) { - const alias = new Alias(source.substring(1)); - if (alias.source === '') - onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string'); - const valueEnd = offset + source.length; - const re = resolveEnd(end, valueEnd, options.strict, onError); - alias.range = [offset, valueEnd, re.offset]; - if (re.comment) - alias.comment = re.comment; - return alias; -} - -function composeDoc(options, directives, { offset, start, value, end }, onError) { - const opts = Object.assign({ directives }, options); - const doc = new Document(undefined, opts); - const ctx = { - atRoot: true, - directives: doc.directives, - options: doc.options, - schema: doc.schema - }; - const props = resolveProps(start, { - indicator: 'doc-start', - next: value || (end === null || end === void 0 ? void 0 : end[0]), - offset, - onError, - startOnNewline: true - }); - if (props.found) { - doc.directives.marker = true; - if (value && - (value.type === 'block-map' || value.type === 'block-seq') && - !props.hasNewline) - onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker'); - } - doc.contents = value - ? composeNode(ctx, value, props, onError) - : composeEmptyNode(ctx, props.end, start, null, props, onError); - const contentEnd = doc.contents.range[2]; - const re = resolveEnd(end, contentEnd, false, onError); - if (re.comment) - doc.comment = re.comment; - doc.range = [offset, contentEnd, re.offset]; - return doc; -} - -function getErrorPos(src) { - if (typeof src === 'number') - return [src, src + 1]; - if (Array.isArray(src)) - return src.length === 2 ? src : [src[0], src[1]]; - const { offset, source } = src; - return [offset, offset + (typeof source === 'string' ? source.length : 1)]; -} -function parsePrelude(prelude) { - var _a; - let comment = ''; - let atComment = false; - let afterEmptyLine = false; - for (let i = 0; i < prelude.length; ++i) { - const source = prelude[i]; - switch (source[0]) { - case '#': - comment += - (comment === '' ? '' : afterEmptyLine ? '\n\n' : '\n') + - (source.substring(1) || ' '); - atComment = true; - afterEmptyLine = false; - break; - case '%': - if (((_a = prelude[i + 1]) === null || _a === void 0 ? void 0 : _a[0]) !== '#') - i += 1; - atComment = false; - break; - default: - // This may be wrong after doc-end, but in that case it doesn't matter - if (!atComment) - afterEmptyLine = true; - atComment = false; - } - } - return { comment, afterEmptyLine }; -} -/** - * Compose a stream of CST nodes into a stream of YAML Documents. - * - * ```ts - * import { Composer, Parser } from 'yaml' - * - * const src: string = ... - * const tokens = new Parser().parse(src) - * const docs = new Composer().compose(tokens) - * ``` - */ -class Composer { - constructor(options = {}) { - this.doc = null; - this.atDirectives = false; - this.prelude = []; - this.errors = []; - this.warnings = []; - this.onError = (source, code, message, warning) => { - const pos = getErrorPos(source); - if (warning) - this.warnings.push(new YAMLWarning(pos, code, message)); - else - this.errors.push(new YAMLParseError(pos, code, message)); - }; - this.directives = new Directives({ - version: options.version || defaultOptions.version - }); - this.options = options; - } - decorate(doc, afterDoc) { - const { comment, afterEmptyLine } = parsePrelude(this.prelude); - //console.log({ dc: doc.comment, prelude, comment }) - if (comment) { - const dc = doc.contents; - if (afterDoc) { - doc.comment = doc.comment ? `${doc.comment}\n${comment}` : comment; - } - else if (afterEmptyLine || doc.directives.marker || !dc) { - doc.commentBefore = comment; - } - else if (isCollection(dc) && !dc.flow && dc.items.length > 0) { - let it = dc.items[0]; - if (isPair(it)) - it = it.key; - const cb = it.commentBefore; - it.commentBefore = cb ? `${comment}\n${cb}` : comment; - } - else { - const cb = dc.commentBefore; - dc.commentBefore = cb ? `${comment}\n${cb}` : comment; - } - } - if (afterDoc) { - Array.prototype.push.apply(doc.errors, this.errors); - Array.prototype.push.apply(doc.warnings, this.warnings); - } - else { - doc.errors = this.errors; - doc.warnings = this.warnings; - } - this.prelude = []; - this.errors = []; - this.warnings = []; - } - /** - * Current stream status information. - * - * Mostly useful at the end of input for an empty stream. - */ - streamInfo() { - return { - comment: parsePrelude(this.prelude).comment, - directives: this.directives, - errors: this.errors, - warnings: this.warnings - }; - } - /** - * Compose tokens into documents. - * - * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document. - * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly. - */ - *compose(tokens, forceDoc = false, endOffset = -1) { - for (const token of tokens) - yield* this.next(token); - yield* this.end(forceDoc, endOffset); - } - /** Advance the composer by one CST token. */ - *next(token) { - switch (token.type) { - case 'directive': - this.directives.add(token.source, (offset, message, warning) => { - const pos = getErrorPos(token); - pos[0] += offset; - this.onError(pos, 'BAD_DIRECTIVE', message, warning); - }); - this.prelude.push(token.source); - this.atDirectives = true; - break; - case 'document': { - const doc = composeDoc(this.options, this.directives, token, this.onError); - if (this.atDirectives && !doc.directives.marker) - this.onError(token, 'MISSING_CHAR', 'Missing directives-end indicator line'); - this.decorate(doc, false); - if (this.doc) - yield this.doc; - this.doc = doc; - this.atDirectives = false; - break; - } - case 'byte-order-mark': - case 'space': - break; - case 'comment': - case 'newline': - this.prelude.push(token.source); - break; - case 'error': { - const msg = token.source - ? `${token.message}: ${JSON.stringify(token.source)}` - : token.message; - const error = new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg); - if (this.atDirectives || !this.doc) - this.errors.push(error); - else - this.doc.errors.push(error); - break; - } - case 'doc-end': { - if (!this.doc) { - const msg = 'Unexpected doc-end without preceding document'; - this.errors.push(new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg)); - break; - } - const end = resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError); - this.decorate(this.doc, true); - if (end.comment) { - const dc = this.doc.comment; - this.doc.comment = dc ? `${dc}\n${end.comment}` : end.comment; - } - this.doc.range[2] = end.offset; - break; - } - default: - this.errors.push(new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`)); - } - } - /** - * Call at end of input to yield any remaining document. - * - * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document. - * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly. - */ - *end(forceDoc = false, endOffset = -1) { - if (this.doc) { - this.decorate(this.doc, true); - yield this.doc; - this.doc = null; - } - else if (forceDoc) { - const opts = Object.assign({ directives: this.directives }, this.options); - const doc = new Document(undefined, opts); - if (this.atDirectives) - this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line'); - doc.range = [0, endOffset, endOffset]; - this.decorate(doc, false); - yield doc; - } - } -} - -/** - * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have. - * - * Best efforts are made to retain any comments previously associated with the `token`, - * though all contents within a collection's `items` will be overwritten. - * - * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`, - * as this function does not support any schema operations and won't check for such conflicts. - * - * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key. - * @param value The string representation of the value, which will have its content properly indented. - * @param context.afterKey In most cases, values after a key should have an additional level of indentation. - * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value. - * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value. - * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`. - */ -function setScalarValue(token, value, context = {}) { - let { afterKey = false, implicitKey = false, inFlow = false, type } = context; - let indent = 'indent' in token ? token.indent : null; - if (afterKey && typeof indent === 'number') - indent += 2; - if (!type) - switch (token.type) { - case 'single-quoted-scalar': - type = 'QUOTE_SINGLE'; - break; - case 'double-quoted-scalar': - type = 'QUOTE_DOUBLE'; - break; - case 'block-scalar': { - const header = token.props[0]; - if (header.type !== 'block-scalar-header') - throw new Error('Invalid block scalar header'); - type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL'; - break; - } - default: - type = 'PLAIN'; - } - const source = stringifyString({ type, value }, { - implicitKey: implicitKey || indent === null, - indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '', - inFlow, - options: { blockQuote: true, lineWidth: -1 } - }); - switch (source[0]) { - case '|': - case '>': - setBlockScalarValue(token, source); - break; - case '"': - setFlowScalarValue(token, source, 'double-quoted-scalar'); - break; - case "'": - setFlowScalarValue(token, source, 'single-quoted-scalar'); - break; - default: - setFlowScalarValue(token, source, 'scalar'); - } -} -function setBlockScalarValue(token, source) { - const he = source.indexOf('\n'); - const head = source.substring(0, he); - const body = source.substring(he + 1) + '\n'; - if (token.type === 'block-scalar') { - const header = token.props[0]; - if (header.type !== 'block-scalar-header') - throw new Error('Invalid block scalar header'); - header.source = head; - token.source = body; - } - else { - const { offset } = token; - const indent = 'indent' in token ? token.indent : -1; - const props = [ - { type: 'block-scalar-header', offset, indent, source: head } - ]; - if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined)) - props.push({ type: 'newline', offset: -1, indent, source: '\n' }); - for (const key of Object.keys(token)) - if (key !== 'type' && key !== 'offset') - delete token[key]; - Object.assign(token, { type: 'block-scalar', indent, props, source: body }); - } -} -/** @returns `true` if last token is a newline */ -function addEndtoBlockProps(props, end) { - if (end) - for (const st of end) - switch (st.type) { - case 'space': - case 'comment': - props.push(st); - break; - case 'newline': - props.push(st); - return true; - } - return false; -} -function setFlowScalarValue(token, source, type) { - switch (token.type) { - case 'scalar': - case 'double-quoted-scalar': - case 'single-quoted-scalar': - token.type = type; - token.source = source; - break; - case 'block-scalar': { - const end = token.props.slice(1); - let oa = source.length; - if (token.props[0].type === 'block-scalar-header') - oa -= token.props[0].source.length; - for (const tok of end) - tok.offset += oa; - delete token.props; - Object.assign(token, { type, source, end }); - break; - } - case 'block-map': - case 'block-seq': { - const offset = token.offset + source.length; - const nl = { type: 'newline', offset, indent: token.indent, source: '\n' }; - delete token.items; - Object.assign(token, { type, source, end: [nl] }); - break; - } - default: { - const indent = 'indent' in token ? token.indent : -1; - const end = 'end' in token && Array.isArray(token.end) - ? token.end.filter(st => st.type === 'space' || - st.type === 'comment' || - st.type === 'newline') - : []; - for (const key of Object.keys(token)) - if (key !== 'type' && key !== 'offset') - delete token[key]; - Object.assign(token, { type, indent, source, end }); - } - } -} - -/** - * Stringify a CST document, token, or collection item - * - * Fair warning: This applies no validation whatsoever, and - * simply concatenates the sources in their logical order. - */ -const stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst); -function stringifyToken(token) { - switch (token.type) { - case 'block-scalar': { - let res = ''; - for (const tok of token.props) - res += stringifyToken(tok); - return res + token.source; - } - case 'block-map': - case 'block-seq': { - let res = ''; - for (const item of token.items) - res += stringifyItem(item); - return res; - } - case 'flow-collection': { - let res = token.start.source; - for (const item of token.items) - res += stringifyItem(item); - for (const st of token.end) - res += st.source; - return res; - } - case 'document': { - let res = stringifyItem(token); - if (token.end) - for (const st of token.end) - res += st.source; - return res; - } - default: { - let res = token.source; - if ('end' in token && token.end) - for (const st of token.end) - res += st.source; - return res; - } - } -} -function stringifyItem({ start, key, sep, value }) { - let res = ''; - for (const st of start) - res += st.source; - if (key) - res += stringifyToken(key); - if (sep) - for (const st of sep) - res += st.source; - if (value) - res += stringifyToken(value); - return res; -} - -/** The byte order mark */ -const BOM = '\u{FEFF}'; -/** Start of doc-mode */ -const DOCUMENT = '\x02'; // C0: Start of Text -/** Unexpected end of flow-mode */ -const FLOW_END = '\x18'; // C0: Cancel -/** Next token is a scalar value */ -const SCALAR = '\x1f'; // C0: Unit Separator -/** Identify the type of a lexer token. May return `null` for unknown tokens. */ -function tokenType(source) { - switch (source) { - case BOM: - return 'byte-order-mark'; - case DOCUMENT: - return 'doc-mode'; - case FLOW_END: - return 'flow-error-end'; - case SCALAR: - return 'scalar'; - case '---': - return 'doc-start'; - case '...': - return 'doc-end'; - case '': - case '\n': - case '\r\n': - return 'newline'; - case '-': - return 'seq-item-ind'; - case '?': - return 'explicit-key-ind'; - case ':': - return 'map-value-ind'; - case '{': - return 'flow-map-start'; - case '}': - return 'flow-map-end'; - case '[': - return 'flow-seq-start'; - case ']': - return 'flow-seq-end'; - case ',': - return 'comma'; - } - switch (source[0]) { - case ' ': - case '\t': - return 'space'; - case '#': - return 'comment'; - case '%': - return 'directive-line'; - case '*': - return 'alias'; - case '&': - return 'anchor'; - case '!': - return 'tag'; - case "'": - return 'single-quoted-scalar'; - case '"': - return 'double-quoted-scalar'; - case '|': - case '>': - return 'block-scalar-header'; - } - return null; -} - -/* -START -> stream - -stream - directive -> line-end -> stream - indent + line-end -> stream - [else] -> line-start - -line-end - comment -> line-end - newline -> . - input-end -> END - -line-start - doc-start -> doc - doc-end -> stream - [else] -> indent -> block-start - -block-start - seq-item-start -> block-start - explicit-key-start -> block-start - map-value-start -> block-start - [else] -> doc - -doc - line-end -> line-start - spaces -> doc - anchor -> doc - tag -> doc - flow-start -> flow -> doc - flow-end -> error -> doc - seq-item-start -> error -> doc - explicit-key-start -> error -> doc - map-value-start -> doc - alias -> doc - quote-start -> quoted-scalar -> doc - block-scalar-header -> line-end -> block-scalar(min) -> line-start - [else] -> plain-scalar(false, min) -> doc - -flow - line-end -> flow - spaces -> flow - anchor -> flow - tag -> flow - flow-start -> flow -> flow - flow-end -> . - seq-item-start -> error -> flow - explicit-key-start -> flow - map-value-start -> flow - alias -> flow - quote-start -> quoted-scalar -> flow - comma -> flow - [else] -> plain-scalar(true, 0) -> flow - -quoted-scalar - quote-end -> . - [else] -> quoted-scalar - -block-scalar(min) - newline + peek(indent < min) -> . - [else] -> block-scalar(min) - -plain-scalar(is-flow, min) - scalar-end(is-flow) -> . - peek(newline + (indent < min)) -> . - [else] -> plain-scalar(min) -*/ -function isEmpty(ch) { - switch (ch) { - case undefined: - case ' ': - case '\n': - case '\r': - case '\t': - return true; - default: - return false; - } -} -const hexDigits = '0123456789ABCDEFabcdef'.split(''); -const tagChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()".split(''); -const invalidFlowScalarChars = ',[]{}'.split(''); -const invalidAnchorChars = ' ,[]{}\n\r\t'.split(''); -const isNotAnchorChar = (ch) => !ch || invalidAnchorChars.includes(ch); -/** - * Splits an input string into lexical tokens, i.e. smaller strings that are - * easily identifiable by `tokens.tokenType()`. - * - * Lexing starts always in a "stream" context. Incomplete input may be buffered - * until a complete token can be emitted. - * - * In addition to slices of the original input, the following control characters - * may also be emitted: - * - * - `\x02` (Start of Text): A document starts with the next token - * - `\x18` (Cancel): Unexpected end of flow-mode (indicates an error) - * - `\x1f` (Unit Separator): Next token is a scalar value - * - `\u{FEFF}` (Byte order mark): Emitted separately outside documents - */ -class Lexer { - constructor() { - /** - * Flag indicating whether the end of the current buffer marks the end of - * all input - */ - this.atEnd = false; - /** - * Explicit indent set in block scalar header, as an offset from the current - * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not - * explicitly set. - */ - this.blockScalarIndent = -1; - /** - * Block scalars that include a + (keep) chomping indicator in their header - * include trailing empty lines, which are otherwise excluded from the - * scalar's contents. - */ - this.blockScalarKeep = false; - /** Current input */ - this.buffer = ''; - /** - * Flag noting whether the map value indicator : can immediately follow this - * node within a flow context. - */ - this.flowKey = false; - /** Count of surrounding flow collection levels. */ - this.flowLevel = 0; - /** - * Minimum level of indentation required for next lines to be parsed as a - * part of the current scalar value. - */ - this.indentNext = 0; - /** Indentation level of the current line. */ - this.indentValue = 0; - /** Position of the next \n character. */ - this.lineEndPos = null; - /** Stores the state of the lexer if reaching the end of incpomplete input */ - this.next = null; - /** A pointer to `buffer`; the current position of the lexer. */ - this.pos = 0; - } - /** - * Generate YAML tokens from the `source` string. If `incomplete`, - * a part of the last line may be left as a buffer for the next call. - * - * @returns A generator of lexical tokens - */ - *lex(source, incomplete = false) { - if (source) { - this.buffer = this.buffer ? this.buffer + source : source; - this.lineEndPos = null; - } - this.atEnd = !incomplete; - let next = this.next || 'stream'; - while (next && (incomplete || this.hasChars(1))) - next = yield* this.parseNext(next); - } - atLineEnd() { - let i = this.pos; - let ch = this.buffer[i]; - while (ch === ' ' || ch === '\t') - ch = this.buffer[++i]; - if (!ch || ch === '#' || ch === '\n') - return true; - if (ch === '\r') - return this.buffer[i + 1] === '\n'; - return false; - } - charAt(n) { - return this.buffer[this.pos + n]; - } - continueScalar(offset) { - let ch = this.buffer[offset]; - if (this.indentNext > 0) { - let indent = 0; - while (ch === ' ') - ch = this.buffer[++indent + offset]; - if (ch === '\r') { - const next = this.buffer[indent + offset + 1]; - if (next === '\n' || (!next && !this.atEnd)) - return offset + indent + 1; - } - return ch === '\n' || indent >= this.indentNext || (!ch && !this.atEnd) - ? offset + indent - : -1; - } - if (ch === '-' || ch === '.') { - const dt = this.buffer.substr(offset, 3); - if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3])) - return -1; - } - return offset; - } - getLine() { - let end = this.lineEndPos; - if (typeof end !== 'number' || (end !== -1 && end < this.pos)) { - end = this.buffer.indexOf('\n', this.pos); - this.lineEndPos = end; - } - if (end === -1) - return this.atEnd ? this.buffer.substring(this.pos) : null; - if (this.buffer[end - 1] === '\r') - end -= 1; - return this.buffer.substring(this.pos, end); - } - hasChars(n) { - return this.pos + n <= this.buffer.length; - } - setNext(state) { - this.buffer = this.buffer.substring(this.pos); - this.pos = 0; - this.lineEndPos = null; - this.next = state; - return null; - } - peek(n) { - return this.buffer.substr(this.pos, n); - } - *parseNext(next) { - switch (next) { - case 'stream': - return yield* this.parseStream(); - case 'line-start': - return yield* this.parseLineStart(); - case 'block-start': - return yield* this.parseBlockStart(); - case 'doc': - return yield* this.parseDocument(); - case 'flow': - return yield* this.parseFlowCollection(); - case 'quoted-scalar': - return yield* this.parseQuotedScalar(); - case 'block-scalar': - return yield* this.parseBlockScalar(); - case 'plain-scalar': - return yield* this.parsePlainScalar(); - } - } - *parseStream() { - let line = this.getLine(); - if (line === null) - return this.setNext('stream'); - if (line[0] === BOM) { - yield* this.pushCount(1); - line = line.substring(1); - } - if (line[0] === '%') { - let dirEnd = line.length; - const cs = line.indexOf('#'); - if (cs !== -1) { - const ch = line[cs - 1]; - if (ch === ' ' || ch === '\t') - dirEnd = cs - 1; - } - while (true) { - const ch = line[dirEnd - 1]; - if (ch === ' ' || ch === '\t') - dirEnd -= 1; - else - break; - } - const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true)); - yield* this.pushCount(line.length - n); // possible comment - this.pushNewline(); - return 'stream'; - } - if (this.atLineEnd()) { - const sp = yield* this.pushSpaces(true); - yield* this.pushCount(line.length - sp); - yield* this.pushNewline(); - return 'stream'; - } - yield DOCUMENT; - return yield* this.parseLineStart(); - } - *parseLineStart() { - const ch = this.charAt(0); - if (!ch && !this.atEnd) - return this.setNext('line-start'); - if (ch === '-' || ch === '.') { - if (!this.atEnd && !this.hasChars(4)) - return this.setNext('line-start'); - const s = this.peek(3); - if (s === '---' && isEmpty(this.charAt(3))) { - yield* this.pushCount(3); - this.indentValue = 0; - this.indentNext = 0; - return 'doc'; - } - else if (s === '...' && isEmpty(this.charAt(3))) { - yield* this.pushCount(3); - return 'stream'; - } - } - this.indentValue = yield* this.pushSpaces(false); - if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1))) - this.indentNext = this.indentValue; - return yield* this.parseBlockStart(); - } - *parseBlockStart() { - const [ch0, ch1] = this.peek(2); - if (!ch1 && !this.atEnd) - return this.setNext('block-start'); - if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) { - const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true)); - this.indentNext = this.indentValue + 1; - this.indentValue += n; - return yield* this.parseBlockStart(); - } - return 'doc'; - } - *parseDocument() { - yield* this.pushSpaces(true); - const line = this.getLine(); - if (line === null) - return this.setNext('doc'); - let n = yield* this.pushIndicators(); - switch (line[n]) { - case '#': - yield* this.pushCount(line.length - n); - // fallthrough - case undefined: - yield* this.pushNewline(); - return yield* this.parseLineStart(); - case '{': - case '[': - yield* this.pushCount(1); - this.flowKey = false; - this.flowLevel = 1; - return 'flow'; - case '}': - case ']': - // this is an error - yield* this.pushCount(1); - return 'doc'; - case '*': - yield* this.pushUntil(isNotAnchorChar); - return 'doc'; - case '"': - case "'": - return yield* this.parseQuotedScalar(); - case '|': - case '>': - n += yield* this.parseBlockScalarHeader(); - n += yield* this.pushSpaces(true); - yield* this.pushCount(line.length - n); - yield* this.pushNewline(); - return yield* this.parseBlockScalar(); - default: - return yield* this.parsePlainScalar(); - } - } - *parseFlowCollection() { - let nl, sp; - let indent = -1; - do { - nl = yield* this.pushNewline(); - sp = yield* this.pushSpaces(true); - if (nl > 0) - this.indentValue = indent = sp; - } while (nl + sp > 0); - const line = this.getLine(); - if (line === null) - return this.setNext('flow'); - if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') || - (indent === 0 && - (line.startsWith('---') || line.startsWith('...')) && - isEmpty(line[3]))) { - // Allowing for the terminal ] or } at the same (rather than greater) - // indent level as the initial [ or { is technically invalid, but - // failing here would be surprising to users. - const atFlowEndMarker = indent === this.indentNext - 1 && - this.flowLevel === 1 && - (line[0] === ']' || line[0] === '}'); - if (!atFlowEndMarker) { - // this is an error - this.flowLevel = 0; - yield FLOW_END; - return yield* this.parseLineStart(); - } - } - let n = 0; - while (line[n] === ',') { - n += yield* this.pushCount(1); - n += yield* this.pushSpaces(true); - this.flowKey = false; - } - n += yield* this.pushIndicators(); - switch (line[n]) { - case undefined: - return 'flow'; - case '#': - yield* this.pushCount(line.length - n); - return 'flow'; - case '{': - case '[': - yield* this.pushCount(1); - this.flowKey = false; - this.flowLevel += 1; - return 'flow'; - case '}': - case ']': - yield* this.pushCount(1); - this.flowKey = true; - this.flowLevel -= 1; - return this.flowLevel ? 'flow' : 'doc'; - case '*': - yield* this.pushUntil(isNotAnchorChar); - return 'flow'; - case '"': - case "'": - this.flowKey = true; - return yield* this.parseQuotedScalar(); - case ':': { - const next = this.charAt(1); - if (this.flowKey || isEmpty(next) || next === ',') { - this.flowKey = false; - yield* this.pushCount(1); - yield* this.pushSpaces(true); - return 'flow'; - } - } - // fallthrough - default: - this.flowKey = false; - return yield* this.parsePlainScalar(); - } - } - *parseQuotedScalar() { - const quote = this.charAt(0); - let end = this.buffer.indexOf(quote, this.pos + 1); - if (quote === "'") { - while (end !== -1 && this.buffer[end + 1] === "'") - end = this.buffer.indexOf("'", end + 2); - } - else { - // double-quote - while (end !== -1) { - let n = 0; - while (this.buffer[end - 1 - n] === '\\') - n += 1; - if (n % 2 === 0) - break; - end = this.buffer.indexOf('"', end + 1); - } - } - // Only looking for newlines within the quotes - const qb = this.buffer.substring(0, end); - let nl = qb.indexOf('\n', this.pos); - if (nl !== -1) { - while (nl !== -1) { - const cs = this.continueScalar(nl + 1); - if (cs === -1) - break; - nl = qb.indexOf('\n', cs); - } - if (nl !== -1) { - // this is an error caused by an unexpected unindent - end = nl - (qb[nl - 1] === '\r' ? 2 : 1); - } - } - if (end === -1) { - if (!this.atEnd) - return this.setNext('quoted-scalar'); - end = this.buffer.length; - } - yield* this.pushToIndex(end + 1, false); - return this.flowLevel ? 'flow' : 'doc'; - } - *parseBlockScalarHeader() { - this.blockScalarIndent = -1; - this.blockScalarKeep = false; - let i = this.pos; - while (true) { - const ch = this.buffer[++i]; - if (ch === '+') - this.blockScalarKeep = true; - else if (ch > '0' && ch <= '9') - this.blockScalarIndent = Number(ch) - 1; - else if (ch !== '-') - break; - } - return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#'); - } - *parseBlockScalar() { - let nl = this.pos - 1; // may be -1 if this.pos === 0 - let indent = 0; - let ch; - loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) { - switch (ch) { - case ' ': - indent += 1; - break; - case '\n': - nl = i; - indent = 0; - break; - case '\r': { - const next = this.buffer[i + 1]; - if (!next && !this.atEnd) - return this.setNext('block-scalar'); - if (next === '\n') - break; - } // fallthrough - default: - break loop; - } - } - if (!ch && !this.atEnd) - return this.setNext('block-scalar'); - if (indent >= this.indentNext) { - if (this.blockScalarIndent === -1) - this.indentNext = indent; - else - this.indentNext += this.blockScalarIndent; - do { - const cs = this.continueScalar(nl + 1); - if (cs === -1) - break; - nl = this.buffer.indexOf('\n', cs); - } while (nl !== -1); - if (nl === -1) { - if (!this.atEnd) - return this.setNext('block-scalar'); - nl = this.buffer.length; - } - } - if (!this.blockScalarKeep) { - do { - let i = nl - 1; - let ch = this.buffer[i]; - if (ch === '\r') - ch = this.buffer[--i]; - while (ch === ' ' || ch === '\t') - ch = this.buffer[--i]; - if (ch === '\n' && i >= this.pos) - nl = i; - else - break; - } while (true); - } - yield SCALAR; - yield* this.pushToIndex(nl + 1, true); - return yield* this.parseLineStart(); - } - *parsePlainScalar() { - const inFlow = this.flowLevel > 0; - let end = this.pos - 1; - let i = this.pos - 1; - let ch; - while ((ch = this.buffer[++i])) { - if (ch === ':') { - const next = this.buffer[i + 1]; - if (isEmpty(next) || (inFlow && next === ',')) - break; - end = i; - } - else if (isEmpty(ch)) { - let next = this.buffer[i + 1]; - if (ch === '\r') { - if (next === '\n') { - i += 1; - ch = '\n'; - next = this.buffer[i + 1]; - } - else - end = i; - } - if (next === '#' || (inFlow && invalidFlowScalarChars.includes(next))) - break; - if (ch === '\n') { - const cs = this.continueScalar(i + 1); - if (cs === -1) - break; - i = Math.max(i, cs - 2); // to advance, but still account for ' #' - } - } - else { - if (inFlow && invalidFlowScalarChars.includes(ch)) - break; - end = i; - } - } - if (!ch && !this.atEnd) - return this.setNext('plain-scalar'); - yield SCALAR; - yield* this.pushToIndex(end + 1, true); - return inFlow ? 'flow' : 'doc'; - } - *pushCount(n) { - if (n > 0) { - yield this.buffer.substr(this.pos, n); - this.pos += n; - return n; - } - return 0; - } - *pushToIndex(i, allowEmpty) { - const s = this.buffer.slice(this.pos, i); - if (s) { - yield s; - this.pos += s.length; - return s.length; - } - else if (allowEmpty) - yield ''; - return 0; - } - *pushIndicators() { - switch (this.charAt(0)) { - case '!': - return ((yield* this.pushTag()) + - (yield* this.pushSpaces(true)) + - (yield* this.pushIndicators())); - case '&': - return ((yield* this.pushUntil(isNotAnchorChar)) + - (yield* this.pushSpaces(true)) + - (yield* this.pushIndicators())); - case ':': - case '?': // this is an error outside flow collections - case '-': // this is an error - if (isEmpty(this.charAt(1))) { - if (this.flowLevel === 0) - this.indentNext = this.indentValue + 1; - else if (this.flowKey) - this.flowKey = false; - return ((yield* this.pushCount(1)) + - (yield* this.pushSpaces(true)) + - (yield* this.pushIndicators())); - } - } - return 0; - } - *pushTag() { - if (this.charAt(1) === '<') { - let i = this.pos + 2; - let ch = this.buffer[i]; - while (!isEmpty(ch) && ch !== '>') - ch = this.buffer[++i]; - return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false); - } - else { - let i = this.pos + 1; - let ch = this.buffer[i]; - while (ch) { - if (tagChars.includes(ch)) - ch = this.buffer[++i]; - else if (ch === '%' && - hexDigits.includes(this.buffer[i + 1]) && - hexDigits.includes(this.buffer[i + 2])) { - ch = this.buffer[(i += 3)]; - } - else - break; - } - return yield* this.pushToIndex(i, false); - } - } - *pushNewline() { - const ch = this.buffer[this.pos]; - if (ch === '\n') - return yield* this.pushCount(1); - else if (ch === '\r' && this.charAt(1) === '\n') - return yield* this.pushCount(2); - else - return 0; - } - *pushSpaces(allowTabs) { - let i = this.pos - 1; - let ch; - do { - ch = this.buffer[++i]; - } while (ch === ' ' || (allowTabs && ch === '\t')); - const n = i - this.pos; - if (n > 0) { - yield this.buffer.substr(this.pos, n); - this.pos = i; - } - return n; - } - *pushUntil(test) { - let i = this.pos; - let ch = this.buffer[i]; - while (!test(ch)) - ch = this.buffer[++i]; - return yield* this.pushToIndex(i, false); - } -} - -/** - * Tracks newlines during parsing in order to provide an efficient API for - * determining the one-indexed `{ line, col }` position for any offset - * within the input. - */ -class LineCounter { - constructor() { - this.lineStarts = []; - /** - * Should be called in ascending order. Otherwise, call - * `lineCounter.lineStarts.sort()` before calling `linePos()`. - */ - this.addNewLine = (offset) => this.lineStarts.push(offset); - /** - * Performs a binary search and returns the 1-indexed { line, col } - * position of `offset`. If `line === 0`, `addNewLine` has never been - * called or `offset` is before the first known newline. - */ - this.linePos = (offset) => { - let low = 0; - let high = this.lineStarts.length; - while (low < high) { - const mid = (low + high) >> 1; // Math.floor((low + high) / 2) - if (this.lineStarts[mid] < offset) - low = mid + 1; - else - high = mid; - } - if (this.lineStarts[low] === offset) - return { line: low + 1, col: 1 }; - if (low === 0) - return { line: 0, col: offset }; - const start = this.lineStarts[low - 1]; - return { line: low, col: offset - start + 1 }; - }; - } -} - -function includesToken(list, type) { - for (let i = 0; i < list.length; ++i) - if (list[i].type === type) - return true; - return false; -} -function includesNonEmpty(list) { - for (let i = 0; i < list.length; ++i) { - switch (list[i].type) { - case 'space': - case 'comment': - case 'newline': - break; - default: - return true; - } - } - return false; -} -function isFlowToken(token) { - switch (token === null || token === void 0 ? void 0 : token.type) { - case 'alias': - case 'scalar': - case 'single-quoted-scalar': - case 'double-quoted-scalar': - case 'flow-collection': - return true; - default: - return false; - } -} -function getPrevProps(parent) { - switch (parent.type) { - case 'document': - return parent.start; - case 'block-map': { - const it = parent.items[parent.items.length - 1]; - return it.sep || it.start; - } - case 'block-seq': - return parent.items[parent.items.length - 1].start; - /* istanbul ignore next should not happen */ - default: - return []; - } -} -/** Note: May modify input array */ -function getFirstKeyStartProps(prev) { - var _a; - if (prev.length === 0) - return []; - let i = prev.length; - loop: while (--i >= 0) { - switch (prev[i].type) { - case 'doc-start': - case 'explicit-key-ind': - case 'map-value-ind': - case 'seq-item-ind': - case 'newline': - break loop; - } - } - while (((_a = prev[++i]) === null || _a === void 0 ? void 0 : _a.type) === 'space') { - /* loop */ - } - return prev.splice(i, prev.length); -} -function fixFlowSeqItems(fc) { - if (fc.start.type === 'flow-seq-start') { - for (const it of fc.items) { - if (it.sep && - !it.value && - !includesToken(it.start, 'explicit-key-ind') && - !includesToken(it.sep, 'map-value-ind')) { - if (it.key) - it.value = it.key; - delete it.key; - if (isFlowToken(it.value)) { - if (it.value.end) - Array.prototype.push.apply(it.value.end, it.sep); - else - it.value.end = it.sep; - } - else - Array.prototype.push.apply(it.start, it.sep); - delete it.sep; - } - } - } -} -/** - * A YAML concrete syntax tree (CST) parser - * - * ```ts - * const src: string = ... - * for (const token of new Parser().parse(src)) { - * // token: Token - * } - * ``` - * - * To use the parser with a user-provided lexer: - * - * ```ts - * function* parse(source: string, lexer: Lexer) { - * const parser = new Parser() - * for (const lexeme of lexer.lex(source)) - * yield* parser.next(lexeme) - * yield* parser.end() - * } - * - * const src: string = ... - * const lexer = new Lexer() - * for (const token of parse(src, lexer)) { - * // token: Token - * } - * ``` - */ -class Parser { - /** - * @param onNewLine - If defined, called separately with the start position of - * each new line (in `parse()`, including the start of input). - */ - constructor(onNewLine) { - /** If true, space and sequence indicators count as indentation */ - this.atNewLine = true; - /** If true, next token is a scalar value */ - this.atScalar = false; - /** Current indentation level */ - this.indent = 0; - /** Current offset since the start of parsing */ - this.offset = 0; - /** On the same line with a block map key */ - this.onKeyLine = false; - /** Top indicates the node that's currently being built */ - this.stack = []; - /** The source of the current token, set in parse() */ - this.source = ''; - /** The type of the current token, set in parse() */ - this.type = ''; - // Must be defined after `next()` - this.lexer = new Lexer(); - this.onNewLine = onNewLine; - } - /** - * Parse `source` as a YAML stream. - * If `incomplete`, a part of the last line may be left as a buffer for the next call. - * - * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens. - * - * @returns A generator of tokens representing each directive, document, and other structure. - */ - *parse(source, incomplete = false) { - if (this.onNewLine && this.offset === 0) - this.onNewLine(0); - for (const lexeme of this.lexer.lex(source, incomplete)) - yield* this.next(lexeme); - if (!incomplete) - yield* this.end(); - } - /** - * Advance the parser by the `source` of one lexical token. - */ - *next(source) { - this.source = source; - if (this.atScalar) { - this.atScalar = false; - yield* this.step(); - this.offset += source.length; - return; - } - const type = tokenType(source); - if (!type) { - const message = `Not a YAML token: ${source}`; - yield* this.pop({ type: 'error', offset: this.offset, message, source }); - this.offset += source.length; - } - else if (type === 'scalar') { - this.atNewLine = false; - this.atScalar = true; - this.type = 'scalar'; - } - else { - this.type = type; - yield* this.step(); - switch (type) { - case 'newline': - this.atNewLine = true; - this.indent = 0; - if (this.onNewLine) - this.onNewLine(this.offset + source.length); - break; - case 'space': - if (this.atNewLine && source[0] === ' ') - this.indent += source.length; - break; - case 'explicit-key-ind': - case 'map-value-ind': - case 'seq-item-ind': - if (this.atNewLine) - this.indent += source.length; - break; - case 'doc-mode': - case 'flow-error-end': - return; - default: - this.atNewLine = false; - } - this.offset += source.length; - } - } - /** Call at end of input to push out any remaining constructions */ - *end() { - while (this.stack.length > 0) - yield* this.pop(); - } - get sourceToken() { - const st = { - type: this.type, - offset: this.offset, - indent: this.indent, - source: this.source - }; - return st; - } - *step() { - const top = this.peek(1); - if (this.type === 'doc-end' && (!top || top.type !== 'doc-end')) { - while (this.stack.length > 0) - yield* this.pop(); - this.stack.push({ - type: 'doc-end', - offset: this.offset, - source: this.source - }); - return; - } - if (!top) - return yield* this.stream(); - switch (top.type) { - case 'document': - return yield* this.document(top); - case 'alias': - case 'scalar': - case 'single-quoted-scalar': - case 'double-quoted-scalar': - return yield* this.scalar(top); - case 'block-scalar': - return yield* this.blockScalar(top); - case 'block-map': - return yield* this.blockMap(top); - case 'block-seq': - return yield* this.blockSequence(top); - case 'flow-collection': - return yield* this.flowCollection(top); - case 'doc-end': - return yield* this.documentEnd(top); - } - /* istanbul ignore next should not happen */ - yield* this.pop(); - } - peek(n) { - return this.stack[this.stack.length - n]; - } - *pop(error) { - const token = error || this.stack.pop(); - /* istanbul ignore if should not happen */ - if (!token) { - const message = 'Tried to pop an empty stack'; - yield { type: 'error', offset: this.offset, source: '', message }; - } - else if (this.stack.length === 0) { - yield token; - } - else { - const top = this.peek(1); - if (token.type === 'block-scalar') { - // Block scalars use their parent rather than header indent - token.indent = 'indent' in top ? top.indent : 0; - } - else if (token.type === 'flow-collection' && top.type === 'document') { - // Ignore all indent for top-level flow collections - token.indent = 0; - } - if (token.type === 'flow-collection') - fixFlowSeqItems(token); - switch (top.type) { - case 'document': - top.value = token; - break; - case 'block-scalar': - top.props.push(token); // error - break; - case 'block-map': { - const it = top.items[top.items.length - 1]; - if (it.value) { - top.items.push({ start: [], key: token, sep: [] }); - this.onKeyLine = true; - return; - } - else if (it.sep) { - it.value = token; - } - else { - Object.assign(it, { key: token, sep: [] }); - this.onKeyLine = !includesToken(it.start, 'explicit-key-ind'); - return; - } - break; - } - case 'block-seq': { - const it = top.items[top.items.length - 1]; - if (it.value) - top.items.push({ start: [], value: token }); - else - it.value = token; - break; - } - case 'flow-collection': { - const it = top.items[top.items.length - 1]; - if (!it || it.value) - top.items.push({ start: [], key: token, sep: [] }); - else if (it.sep) - it.value = token; - else - Object.assign(it, { key: token, sep: [] }); - return; - } - /* istanbul ignore next should not happen */ - default: - yield* this.pop(); - yield* this.pop(token); - } - if ((top.type === 'document' || - top.type === 'block-map' || - top.type === 'block-seq') && - (token.type === 'block-map' || token.type === 'block-seq')) { - const last = token.items[token.items.length - 1]; - if (last && - !last.sep && - !last.value && - last.start.length > 0 && - !includesNonEmpty(last.start) && - (token.indent === 0 || - last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) { - if (top.type === 'document') - top.end = last.start; - else - top.items.push({ start: last.start }); - token.items.splice(-1, 1); - } - } - } - } - *stream() { - switch (this.type) { - case 'directive-line': - yield { type: 'directive', offset: this.offset, source: this.source }; - return; - case 'byte-order-mark': - case 'space': - case 'comment': - case 'newline': - yield this.sourceToken; - return; - case 'doc-mode': - case 'doc-start': { - const doc = { - type: 'document', - offset: this.offset, - start: [] - }; - if (this.type === 'doc-start') - doc.start.push(this.sourceToken); - this.stack.push(doc); - return; - } - } - yield { - type: 'error', - offset: this.offset, - message: `Unexpected ${this.type} token in YAML stream`, - source: this.source - }; - } - *document(doc) { - if (doc.value) - return yield* this.lineEnd(doc); - switch (this.type) { - case 'doc-start': { - if (includesNonEmpty(doc.start)) { - yield* this.pop(); - yield* this.step(); - } - else - doc.start.push(this.sourceToken); - return; - } - case 'anchor': - case 'tag': - case 'space': - case 'comment': - case 'newline': - doc.start.push(this.sourceToken); - return; - } - const bv = this.startBlockValue(doc); - if (bv) - this.stack.push(bv); - else { - yield { - type: 'error', - offset: this.offset, - message: `Unexpected ${this.type} token in YAML document`, - source: this.source - }; - } - } - *scalar(scalar) { - if (this.type === 'map-value-ind') { - const prev = getPrevProps(this.peek(2)); - const start = getFirstKeyStartProps(prev); - let sep; - if (scalar.end) { - sep = scalar.end; - sep.push(this.sourceToken); - delete scalar.end; - } - else - sep = [this.sourceToken]; - const map = { - type: 'block-map', - offset: scalar.offset, - indent: scalar.indent, - items: [{ start, key: scalar, sep }] - }; - this.onKeyLine = true; - this.stack[this.stack.length - 1] = map; - } - else - yield* this.lineEnd(scalar); - } - *blockScalar(scalar) { - switch (this.type) { - case 'space': - case 'comment': - case 'newline': - scalar.props.push(this.sourceToken); - return; - case 'scalar': - scalar.source = this.source; - // block-scalar source includes trailing newline - this.atNewLine = true; - this.indent = 0; - if (this.onNewLine) { - let nl = this.source.indexOf('\n') + 1; - while (nl !== 0) { - this.onNewLine(this.offset + nl); - nl = this.source.indexOf('\n', nl) + 1; - } - } - yield* this.pop(); - break; - /* istanbul ignore next should not happen */ - default: - yield* this.pop(); - yield* this.step(); - } - } - *blockMap(map) { - var _a; - const it = map.items[map.items.length - 1]; - // it.sep is true-ish if pair already has key or : separator - switch (this.type) { - case 'newline': - this.onKeyLine = false; - if (it.value) { - const end = 'end' in it.value ? it.value.end : undefined; - const last = Array.isArray(end) ? end[end.length - 1] : undefined; - if ((last === null || last === void 0 ? void 0 : last.type) === 'comment') - end === null || end === void 0 ? void 0 : end.push(this.sourceToken); - else - map.items.push({ start: [this.sourceToken] }); - } - else if (it.sep) - it.sep.push(this.sourceToken); - else - it.start.push(this.sourceToken); - return; - case 'space': - case 'comment': - if (it.value) - map.items.push({ start: [this.sourceToken] }); - else if (it.sep) - it.sep.push(this.sourceToken); - else { - if (this.atIndentedComment(it.start, map.indent)) { - const prev = map.items[map.items.length - 2]; - const end = (_a = prev === null || prev === void 0 ? void 0 : prev.value) === null || _a === void 0 ? void 0 : _a.end; - if (Array.isArray(end)) { - Array.prototype.push.apply(end, it.start); - end.push(this.sourceToken); - map.items.pop(); - return; - } - } - it.start.push(this.sourceToken); - } - return; - } - if (this.indent >= map.indent) { - const atNextItem = !this.onKeyLine && - this.indent === map.indent && - (it.sep || includesNonEmpty(it.start)); - switch (this.type) { - case 'anchor': - case 'tag': - if (atNextItem || it.value) { - map.items.push({ start: [this.sourceToken] }); - this.onKeyLine = true; - } - else if (it.sep) - it.sep.push(this.sourceToken); - else - it.start.push(this.sourceToken); - return; - case 'explicit-key-ind': - if (!it.sep && !includesToken(it.start, 'explicit-key-ind')) - it.start.push(this.sourceToken); - else if (atNextItem || it.value) - map.items.push({ start: [this.sourceToken] }); - else - this.stack.push({ - type: 'block-map', - offset: this.offset, - indent: this.indent, - items: [{ start: [this.sourceToken] }] - }); - this.onKeyLine = true; - return; - case 'map-value-ind': - if (!it.sep) - Object.assign(it, { key: null, sep: [this.sourceToken] }); - else if (it.value || - (atNextItem && !includesToken(it.start, 'explicit-key-ind'))) - map.items.push({ start: [], key: null, sep: [this.sourceToken] }); - else if (includesToken(it.sep, 'map-value-ind')) - this.stack.push({ - type: 'block-map', - offset: this.offset, - indent: this.indent, - items: [{ start: [], key: null, sep: [this.sourceToken] }] - }); - else if (includesToken(it.start, 'explicit-key-ind') && - isFlowToken(it.key) && - !includesToken(it.sep, 'newline')) { - const start = getFirstKeyStartProps(it.start); - const key = it.key; - const sep = it.sep; - sep.push(this.sourceToken); - // @ts-ignore type guard is wrong here - delete it.key, delete it.sep; - this.stack.push({ - type: 'block-map', - offset: this.offset, - indent: this.indent, - items: [{ start, key, sep }] - }); - } - else - it.sep.push(this.sourceToken); - this.onKeyLine = true; - return; - case 'alias': - case 'scalar': - case 'single-quoted-scalar': - case 'double-quoted-scalar': { - const fs = this.flowScalar(this.type); - if (atNextItem || it.value) { - map.items.push({ start: [], key: fs, sep: [] }); - this.onKeyLine = true; - } - else if (it.sep) { - this.stack.push(fs); - } - else { - Object.assign(it, { key: fs, sep: [] }); - this.onKeyLine = true; - } - return; - } - default: { - const bv = this.startBlockValue(map); - if (bv) { - if (atNextItem && - bv.type !== 'block-seq' && - includesToken(it.start, 'explicit-key-ind')) - map.items.push({ start: [] }); - this.stack.push(bv); - return; - } - } - } - } - yield* this.pop(); - yield* this.step(); - } - *blockSequence(seq) { - var _a; - const it = seq.items[seq.items.length - 1]; - switch (this.type) { - case 'newline': - if (it.value) { - const end = 'end' in it.value ? it.value.end : undefined; - const last = Array.isArray(end) ? end[end.length - 1] : undefined; - if ((last === null || last === void 0 ? void 0 : last.type) === 'comment') - end === null || end === void 0 ? void 0 : end.push(this.sourceToken); - else - seq.items.push({ start: [this.sourceToken] }); - } - else - it.start.push(this.sourceToken); - return; - case 'space': - case 'comment': - if (it.value) - seq.items.push({ start: [this.sourceToken] }); - else { - if (this.atIndentedComment(it.start, seq.indent)) { - const prev = seq.items[seq.items.length - 2]; - const end = (_a = prev === null || prev === void 0 ? void 0 : prev.value) === null || _a === void 0 ? void 0 : _a.end; - if (Array.isArray(end)) { - Array.prototype.push.apply(end, it.start); - end.push(this.sourceToken); - seq.items.pop(); - return; - } - } - it.start.push(this.sourceToken); - } - return; - case 'anchor': - case 'tag': - if (it.value || this.indent <= seq.indent) - break; - it.start.push(this.sourceToken); - return; - case 'seq-item-ind': - if (this.indent !== seq.indent) - break; - if (it.value || includesToken(it.start, 'seq-item-ind')) - seq.items.push({ start: [this.sourceToken] }); - else - it.start.push(this.sourceToken); - return; - } - if (this.indent > seq.indent) { - const bv = this.startBlockValue(seq); - if (bv) { - this.stack.push(bv); - return; - } - } - yield* this.pop(); - yield* this.step(); - } - *flowCollection(fc) { - const it = fc.items[fc.items.length - 1]; - if (this.type === 'flow-error-end') { - let top; - do { - yield* this.pop(); - top = this.peek(1); - } while (top && top.type === 'flow-collection'); - } - else if (fc.end.length === 0) { - switch (this.type) { - case 'comma': - case 'explicit-key-ind': - if (!it || it.sep) - fc.items.push({ start: [this.sourceToken] }); - else - it.start.push(this.sourceToken); - return; - case 'map-value-ind': - if (!it || it.value) - fc.items.push({ start: [], key: null, sep: [this.sourceToken] }); - else if (it.sep) - it.sep.push(this.sourceToken); - else - Object.assign(it, { key: null, sep: [this.sourceToken] }); - return; - case 'space': - case 'comment': - case 'newline': - case 'anchor': - case 'tag': - if (!it || it.value) - fc.items.push({ start: [this.sourceToken] }); - else if (it.sep) - it.sep.push(this.sourceToken); - else - it.start.push(this.sourceToken); - return; - case 'alias': - case 'scalar': - case 'single-quoted-scalar': - case 'double-quoted-scalar': { - const fs = this.flowScalar(this.type); - if (!it || it.value) - fc.items.push({ start: [], key: fs, sep: [] }); - else if (it.sep) - this.stack.push(fs); - else - Object.assign(it, { key: fs, sep: [] }); - return; - } - case 'flow-map-end': - case 'flow-seq-end': - fc.end.push(this.sourceToken); - return; - } - const bv = this.startBlockValue(fc); - /* istanbul ignore else should not happen */ - if (bv) - this.stack.push(bv); - else { - yield* this.pop(); - yield* this.step(); - } - } - else { - const parent = this.peek(2); - if (parent.type === 'block-map' && - (this.type === 'map-value-ind' || - (this.type === 'newline' && - !parent.items[parent.items.length - 1].sep))) { - yield* this.pop(); - yield* this.step(); - } - else if (this.type === 'map-value-ind' && - parent.type !== 'flow-collection') { - const prev = getPrevProps(parent); - const start = getFirstKeyStartProps(prev); - fixFlowSeqItems(fc); - const sep = fc.end.splice(1, fc.end.length); - sep.push(this.sourceToken); - const map = { - type: 'block-map', - offset: fc.offset, - indent: fc.indent, - items: [{ start, key: fc, sep }] - }; - this.onKeyLine = true; - this.stack[this.stack.length - 1] = map; - } - else { - yield* this.lineEnd(fc); - } - } - } - flowScalar(type) { - if (this.onNewLine) { - let nl = this.source.indexOf('\n') + 1; - while (nl !== 0) { - this.onNewLine(this.offset + nl); - nl = this.source.indexOf('\n', nl) + 1; - } - } - return { - type, - offset: this.offset, - indent: this.indent, - source: this.source - }; - } - startBlockValue(parent) { - switch (this.type) { - case 'alias': - case 'scalar': - case 'single-quoted-scalar': - case 'double-quoted-scalar': - return this.flowScalar(this.type); - case 'block-scalar-header': - return { - type: 'block-scalar', - offset: this.offset, - indent: this.indent, - props: [this.sourceToken], - source: '' - }; - case 'flow-map-start': - case 'flow-seq-start': - return { - type: 'flow-collection', - offset: this.offset, - indent: this.indent, - start: this.sourceToken, - items: [], - end: [] - }; - case 'seq-item-ind': - return { - type: 'block-seq', - offset: this.offset, - indent: this.indent, - items: [{ start: [this.sourceToken] }] - }; - case 'explicit-key-ind': { - this.onKeyLine = true; - const prev = getPrevProps(parent); - const start = getFirstKeyStartProps(prev); - start.push(this.sourceToken); - return { - type: 'block-map', - offset: this.offset, - indent: this.indent, - items: [{ start }] - }; - } - case 'map-value-ind': { - this.onKeyLine = true; - const prev = getPrevProps(parent); - const start = getFirstKeyStartProps(prev); - return { - type: 'block-map', - offset: this.offset, - indent: this.indent, - items: [{ start, key: null, sep: [this.sourceToken] }] - }; - } - } - return null; - } - atIndentedComment(start, indent) { - if (this.type !== 'comment') - return false; - if (this.indent <= indent) - return false; - return start.every(st => st.type === 'newline' || st.type === 'space'); - } - *documentEnd(docEnd) { - if (this.type !== 'doc-mode') { - if (docEnd.end) - docEnd.end.push(this.sourceToken); - else - docEnd.end = [this.sourceToken]; - if (this.type === 'newline') - yield* this.pop(); - } - } - *lineEnd(token) { - switch (this.type) { - case 'comma': - case 'doc-start': - case 'doc-end': - case 'flow-seq-end': - case 'flow-map-end': - case 'map-value-ind': - yield* this.pop(); - yield* this.step(); - break; - case 'newline': - this.onKeyLine = false; - // fallthrough - case 'space': - case 'comment': - default: - // all other values are errors - if (token.end) - token.end.push(this.sourceToken); - else - token.end = [this.sourceToken]; - if (this.type === 'newline') - yield* this.pop(); - } - } -} - -function parseOptions(options) { - const prettyErrors = options.prettyErrors !== false; - const lineCounter = options.lineCounter || (prettyErrors && new LineCounter()) || null; - return { lineCounter, prettyErrors }; -} -/** Parse an input string into a single YAML.Document */ -function parseDocument(source, options = {}) { - const { lineCounter, prettyErrors } = parseOptions(options); - const parser = new Parser(lineCounter === null || lineCounter === void 0 ? void 0 : lineCounter.addNewLine); - const composer = new Composer(options); - // `doc` is always set by compose.end(true) at the very latest - let doc = null; - for (const _doc of composer.compose(parser.parse(source), true, source.length)) { - if (!doc) - doc = _doc; - else if (doc.options.logLevel !== 'silent') { - doc.errors.push(new YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()')); - break; - } - } - if (prettyErrors && lineCounter) { - doc.errors.forEach(prettifyError(source, lineCounter)); - doc.warnings.forEach(prettifyError(source, lineCounter)); - } - return doc; -} - -class File { - - constructor(app, filename, tagPositions, hasFrontMatter) { - this.app = app; - this.filename = filename; - this.basename = filename.split("/").pop(); - this.tagPositions = tagPositions; - this.hasFrontMatter = !!hasFrontMatter; - } - - /** @param {Replacement} replace */ - async renamed(replace) { - const file = this.app.vault.getAbstractFileByPath(this.filename); - const original = await this.app.vault.read(file); - let text = original; - - for (const { position: { start, end }, tag } of this.tagPositions) { - if (text.slice(start.offset, end.offset) !== tag) { - const msg = `File ${this.filename} has changed; skipping`; - new obsidian.Notice(msg); - console.error(msg); - console.debug(text.slice(start.offset, end.offset), tag); - return; - } - text = replace.inString(text, start.offset); - } - - if (this.hasFrontMatter) - text = this.replaceInFrontMatter(text, replace); - - if (text !== original) { - await this.app.vault.modify(file, text); - return true; - } - } - - /** @param {Replacement} replace */ - replaceInFrontMatter(text, replace) { - const [empty, frontMatter] = text.split(/^---\r?$\n?/m, 2); - - // Check for valid, non-empty, properly terminated front matter - if (empty.trim() !== "" || !frontMatter.trim() || !frontMatter.endsWith("\n")) - return text; - - const parsed = parseDocument(frontMatter, {keepSourceTokens: true}); - if (parsed.errors.length) { - const error = `YAML issue with ${this.filename}: ${parsed.errors[0]}`; - console.error(error); new obsidian.Notice(error + "; skipping frontmatter"); - return; - } - - let changed = false, json = parsed.toJSON(); - - function setInNode(node, value, afterKey=false) { - setScalarValue(node.srcToken, value, {afterKey}); - changed = true; - node.value = value; - } - - function processField(prop, isAlias) { - const node = parsed.get(prop, true); - if (!node) return; - const field = json[prop]; - if (!field || !field.length) return; - if (typeof field === "string") { - const parts = field.split(isAlias ? /(^\s+|\s*,\s*|\s+$)/ : /([\s,]+)/); - const after = replace.inArray(parts, true, isAlias).join(""); - if (field != after) setInNode(node, after, true); - } else if (Array.isArray(field)) { - replace.inArray(field, false, isAlias).forEach((v, i) => { - if (field[i] !== v) setInNode(node.get(i, true), v); - }); - } - } - - for (const {key: {value:prop}} of parsed.contents.items) { - if (/^tags?$/i.test(prop)) { - processField(prop, false); - } else if (/^alias(es)?$/i.test(prop)) { - processField(prop, true); - } - } - return changed ? text.replace(frontMatter, stringify(parsed.contents.srcToken)) : text; - } -} - -async function renameTag(app, tagName) { - const newName = await promptForNewName(tagName); - if (newName === false) return; // aborted - - if (!newName || newName === tagName) { - return new obsidian.Notice("Unchanged or empty tag: No changes made."); - } - - const - oldTag = new Tag(tagName), - newTag = new Tag(newName), - replace = new Replacement(oldTag, newTag), - clashing = replace.willMergeTags( - allTags(app).reverse() // find longest clash first - ), - shouldAbort = clashing && - await shouldAbortDueToClash(clashing, oldTag, newTag) - ; - - if (shouldAbort) return; - - const targets = await findTargets(app, oldTag); - if (!targets) return; - - const progress = new Progress(`Renaming to #${newName}/*`, "Processing files..."); - let renamed = 0; - await progress.forEach(targets, async (target) => { - progress.message = "Processing " + target.basename; - if (await target.renamed(replace)) renamed++; - }); - - return new obsidian.Notice(`Operation ${progress.aborted ? "cancelled" : "complete"}: ${renamed} file(s) updated`); -} - -function allTags(app) { - return Object.keys(app.metadataCache.getTags()); -} - -async function findTargets(app, tag) { - const targets = []; - const progress = new Progress(`Searching for ${tag}/*`, "Matching files..."); - await progress.forEach( - app.metadataCache.getCachedFiles(), - filename => { - let { frontmatter, tags } = app.metadataCache.getCache(filename) || {}; - tags = (tags || []).filter(t => t.tag && tag.matches(t.tag)).reverse(); // last positions first - const fmtags = (obsidian.parseFrontMatterTags(frontmatter) || []).filter(tag.matches); - const aliasTags = (obsidian.parseFrontMatterAliases(frontmatter) || []).filter(Tag.isTag).filter(tag.matches); - if (tags.length || fmtags.length || aliasTags.length) - targets.push(new File(app, filename, tags, fmtags.length + aliasTags.length)); - } - ); - if (!progress.aborted) - return targets; -} - -async function promptForNewName(tagName) { - try { - return await validatedInput( - `Renaming #${tagName} (and any sub-tags)`, "Enter new name (must be a valid Obsidian tag):\n", - tagName, - "[^\u2000-\u206F\u2E00-\u2E7F'!\"#$%&()*+,.:;<=>?@^`{|}~\\[\\]\\\\\\s]+", - "Obsidian tag name" - ); - } catch(e) { - return false; // user cancelled - } -} - -async function shouldAbortDueToClash([origin, clash], oldTag, newTag) { - try { - await confirm( - "WARNING: No Undo!", - `Renaming ${oldTag} to ${newTag} will merge ${ - (origin.canonical === oldTag.canonical) ? - `these tags` : `multiple tags - into existing tags (such as ${origin} - merging with ${clash})` - }. - - This cannot be undone. Do you wish to proceed?` - ); - } catch(e) { - return true; - } -} - -function around(obj, factories) { - const removers = Object.keys(factories).map(key => around1(obj, key, factories[key])); - return removers.length === 1 ? removers[0] : function () { removers.forEach(r => r()); }; -} -function around1(obj, method, createWrapper) { - const original = obj[method], hadOwn = obj.hasOwnProperty(method); - let current = createWrapper(original); - // Let our wrapper inherit static props from the wrapping method, - // and the wrapping method, props from the original method - if (original) - Object.setPrototypeOf(current, original); - Object.setPrototypeOf(wrapper, current); - obj[method] = wrapper; - // Return a callback to allow safe removal - return remove; - function wrapper(...args) { - // If we have been deactivated and are no longer wrapped, remove ourselves - if (current === original && obj[method] === wrapper) - remove(); - return current.apply(this, args); - } - function remove() { - // If no other patches, just do a direct removal - if (obj[method] === wrapper) { - if (hadOwn) - obj[method] = original; - else - delete obj[method]; - } - if (current === original) - return; - // Else pass future calls through, and remove wrapper from the prototype chain - current = original; - Object.setPrototypeOf(wrapper, original || Function); - } -} - -const tagHoverMain = "tag-wrangler:tag-pane"; - -function onElement(el, event, selector, callback, options) { - el.on(event, selector, callback, options); - return () => el.off(event, selector, callback, options); -} - -class TagWrangler extends obsidian.Plugin { - pageAliases = new Map(); - tagPages = new Map(); - - tagPage(tag) { - return Array.from(this.tagPages.get(Tag.canonical(tag)) || "")[0] - } - - openTagPage(file, isNew, newLeaf) { - const openState = { - eState: isNew ? {rename: "all"} : {focus: true}, // Rename new page, focus existing - ...(isNew ? {state: {mode: "source"}} : {}) // and set source mode for new page - }; - return this.app.workspace.getLeaf(newLeaf).openFile(file, openState); - } - - async createTagPage(tagName, newLeaf) { - const baseName = new Tag(tagName).name.split("/").join(" "); - const folder = this.app.fileManager.getNewFileParent(this.app.workspace.getActiveFile()?.path || ""); - const path = this.app.vault.getAvailablePath(folder.getParentPrefix()+baseName, "md"); - this.openTagPage(await this.app.vault.create(path, [ - "---", - `Aliases: [ ${JSON.stringify(Tag.toTag(tagName))} ]`, - "---", - "" - ].join("\n")), true, newLeaf); - } - - async onload(){ - this.register( - onElement(document, "contextmenu", ".tag-pane-tag", this.onMenu.bind(this), {capture: true}) - ); - - this.app.workspace.registerHoverLinkSource(tagHoverMain, {display: 'Tag pane', defaultMod: true}); - - this.addChild( - // Tags in the tag pane - new TagPageUIHandler(this, { - hoverSource: tagHoverMain, selector: ".tag-pane-tag", container: ".tag-container", - toTag(el) { return el.find(".tag-pane-tag-text")?.textContent; } - }) - ); - - this.addChild( - // Reading mode / tag links - new TagPageUIHandler(this, { - hoverSource: "preview", selector: 'a.tag[href^="#"]', - container: ".markdown-preview-view, .markdown-embed, .workspace-leaf-content", - toTag(el) { return el.getAttribute("href"); } - }) - ); - - this.addChild( - // Edit mode - new TagPageUIHandler(this, { - hoverSource: "editor", selector: "span.cm-hashtag", - container: ".markdown-source-view", - toTag(el) { - // Multiple cm-hashtag elements can be side by side: join them all together: - let tagName = el.textContent; - for (let t=el.previousElementSibling; t?.matches("span.cm-hashtag"); t = t.previousElementSibling) { - tagName = t.textContent + tagName; - } - for (let t=el.nextElementSibling; t?.matches("span.cm-hashtag"); t = t.nextElementSibling) { - tagName += t.textContent; - } - return tagName; - } - }) - ); - - // Track Tag Pages - const metaCache = this.app.metadataCache; - const plugin = this; - - this.register(around(metaCache, { - getTags(old) { - return function getTags() { - const tags = old.call(this); - const names = new Set(Object.keys(tags).map(t => t.toLowerCase())); - for (const t of plugin.tagPages.keys()) { - if (!names.has(t)) tags[plugin.tagPages.get(t).tag] = 0; - } - return tags; - } - } - })); - - this.app.workspace.onLayoutReady(() => { - metaCache.getCachedFiles().forEach(filename => { - const fm = metaCache.getCache(filename)?.frontmatter; - if (fm && obsidian.parseFrontMatterAliases(fm)?.filter(Tag.isTag)) this.updatePage( - this.app.vault.getAbstractFileByPath(filename), fm - ); - }); - this.registerEvent(metaCache.on("changed", (file, data, cache) => this.updatePage(file, cache?.frontmatter))); - this.registerEvent(this.app.vault.on("delete", file => this.updatePage(file))); - app.workspace.getLeavesOfType("tag").forEach(leaf => {leaf?.view?.requestUpdateTags?.();}); - }); - } - - updatePage(file, frontmatter) { - const tags = obsidian.parseFrontMatterAliases(frontmatter)?.filter(Tag.isTag) || []; - if (this.pageAliases.has(file)) { - const oldTags = new Set(tags || []); - for (const tag of this.pageAliases.get(file)) { - if (oldTags.has(tag)) continue; // don't bother deleting what we'll just put back - const key = Tag.canonical(tag); - const tp = this.tagPages.get(key); - if (tp) { - tp.delete(file); - if (!tp.size) this.tagPages.delete(key); - } - } - if (!tags.length) this.pageAliases.delete(file); - } - if (tags.length) { - this.pageAliases.set(file, tags); - for (const tag of tags) { - const key = Tag.canonical(tag); - if (this.tagPages.has(key)) this.tagPages.get(key).add(file); - else { - const tagSet = new Set([file]); - tagSet.tag = Tag.toTag(tag); - this.tagPages.set(key, tagSet); - } - } - } - } - - onMenu(e, tagEl) { - if (!e.obsidian_contextmenu) { - e.obsidian_contextmenu = new obsidian.Menu(this.app); - setImmediate(() => menu.showAtPosition({x: e.pageX, y: e.pageY})); - } - - const - tagName = tagEl.find(".tag-pane-tag-text").textContent, - tagPage = this.tagPage(tagName), - isHierarchy = tagEl.parentElement.parentElement.find(".collapse-icon"), - searchPlugin = this.app.internalPlugins.getPluginById("global-search"), - search = searchPlugin && searchPlugin.instance, - query = search && search.getGlobalSearchQuery(), - random = this.app.plugins.plugins["smart-random-note"], - menu = e.obsidian_contextmenu.addItem(item("pencil", "Rename #"+tagName, () => this.rename(tagName))); - - menu.register( - onElement(document, "keydown", "*", e => { - if (e.key==="Escape") { - e.preventDefault(); - e.stopPropagation(); - menu.hide(); - } - }, {capture: true}) - ); - - menu.addSeparator(); - if (tagPage) { - menu.addItem( - item("popup-open", "Open tag page", (e) => this.openTagPage(tagPage, false, obsidian.Keymap.isModEvent(e))) - ); - } else { - menu.addItem( - item("create-new", "Create tag page", (e) => this.createTagPage(tagName, obsidian.Keymap.isModEvent(e))) - ); - } - - if (search) { - menu.addSeparator().addItem( - item("magnifying-glass", "New search for #"+tagName, () => search.openGlobalSearch("tag:" + tagName)) - ); - if (query) { - menu.addItem( - item("sheets-in-box", "Require #"+tagName+" in search" , () => search.openGlobalSearch(query+" tag:" + tagName)) - ); - } - menu.addItem( - item("crossed-star" , "Exclude #"+tagName+" from search", () => search.openGlobalSearch(query+" -tag:" + tagName)) - ); - } - - if (random) { - menu.addSeparator().addItem( - item("dice", "Open random note", async () => { - const targets = await findTargets(this.app, new Tag(tagName)); - random.openRandomNote(targets.map(f=> this.app.vault.getAbstractFileByPath(f.filename))); - }) - ); - } - - this.app.workspace.trigger("tag-wrangler:contextmenu", menu, tagName, {search, query, isHierarchy, tagPage}); - - if (isHierarchy) { - const - tagParent = tagName.split("/").slice(0, -1).join("/"), - tagView = this.leafView(tagEl.matchParent(".workspace-leaf")), - tagContainer = tagParent ? tagView.tagDoms["#" + tagParent.toLowerCase()]: tagView.root - ; - function toggle(collapse) { - for(const tag of tagContainer.children) tag.setCollapsed(collapse); - } - menu.addSeparator() - .addItem(item("vertical-three-dots", "Collapse tags at this level", () => toggle(true ))) - .addItem(item("expand-vertically" , "Expand tags at this level" , () => toggle(false))); - } - } - - leafView(containerEl) { - let view; - this.app.workspace.iterateAllLeaves((leaf) => { - if (leaf.containerEl === containerEl) { view = leaf.view; return true; } - }); - return view; - } - - - async rename(tagName) { - const scope = new obsidian.Scope; - this.app.keymap.pushScope(scope); - try { await renameTag(this.app, tagName); } - catch (e) { console.error(e); new obsidian.Notice("error: " + e); } - this.app.keymap.popScope(scope); - } - -} - -function item(icon, title, click) { - return i => i.setIcon(icon).setTitle(title).onClick(click); -} - - -class TagPageUIHandler extends obsidian.Component { - // Handle hovering and clicks-to-open for tag pages - - constructor(plugin, opts) { - super(); - this.opts = opts; - this.plugin = plugin; - } - - onload() { - const {selector, container, hoverSource, toTag} = this.opts; - this.register( - // Show tag page on hover - onElement(document, "mouseover", selector, (event, targetEl) => { - const tagName = toTag(targetEl), tp = tagName && this.plugin.tagPage(tagName); - if (tp) this.plugin.app.workspace.trigger('hover-link', { - event, source: hoverSource, targetEl, linktext: tp.path, - hoverParent: targetEl.matchParent(container) - }); - }, {capture: false}) - ); - this.register( - // Open tag page w/alt click (current pane) or ctrl/cmd/middle click (new pane) - onElement(document, "click", selector, (event, targetEl) => { - const {altKey} = event; - if (!obsidian.Keymap.isModEvent(event) && !altKey) return; - const tagName = toTag(targetEl), tp = tagName && this.plugin.tagPage(tagName); - if (tp) { - this.plugin.openTagPage(tp, false, !altKey); - event.preventDefault(); - event.stopPropagation(); - return false; - } - }, {capture: true}) - ); - } -} - -module.exports = TagWrangler; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzLy5wbnBtL2N1cnJpZnlANC4wLjAvbm9kZV9tb2R1bGVzL2N1cnJpZnkvbGliL2N1cnJpZnkuanMiLCJub2RlX21vZHVsZXMvLnBucG0vZnVsbHN0b3JlQDMuMC4wL25vZGVfbW9kdWxlcy9mdWxsc3RvcmUvbGliL2Z1bGxzdG9yZS5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS9AY2xvdWRjbWQrY3JlYXRlLWVsZW1lbnRAMi4wLjIvbm9kZV9tb2R1bGVzL0BjbG91ZGNtZC9jcmVhdGUtZWxlbWVudC9saWIvY3JlYXRlLWVsZW1lbnQuanMiLCJub2RlX21vZHVsZXMvLnBucG0vc21hbGx0YWxrQDQuMC43L25vZGVfbW9kdWxlcy9zbWFsbHRhbGsvbGliL3NtYWxsdGFsay5qcyIsInNyYy9wcm9ncmVzcy5qcyIsInNyYy92YWxpZGF0aW9uLmpzIiwic3JjL1RhZy5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9ub2Rlcy9Ob2RlLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L3Zpc2l0LmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L2RvYy9kaXJlY3RpdmVzLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L2RvYy9hbmNob3JzLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L25vZGVzL0FsaWFzLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L25vZGVzL3RvSlMuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3Qvbm9kZXMvU2NhbGFyLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L2RvYy9jcmVhdGVOb2RlLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L25vZGVzL0NvbGxlY3Rpb24uanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3Qvc3RyaW5naWZ5L3N0cmluZ2lmeUNvbW1lbnQuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3Qvc3RyaW5naWZ5L2ZvbGRGbG93TGluZXMuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3Qvc3RyaW5naWZ5L3N0cmluZ2lmeVN0cmluZy5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9zdHJpbmdpZnkvc3RyaW5naWZ5LmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L3N0cmluZ2lmeS9zdHJpbmdpZnlQYWlyLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L2xvZy5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9ub2Rlcy9hZGRQYWlyVG9KU01hcC5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9ub2Rlcy9QYWlyLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L29wdGlvbnMuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3Qvc3RyaW5naWZ5L3N0cmluZ2lmeUNvbGxlY3Rpb24uanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3Qvbm9kZXMvWUFNTE1hcC5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEvY29tbW9uL21hcC5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9ub2Rlcy9ZQU1MU2VxLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L3NjaGVtYS9jb21tb24vc2VxLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L3NjaGVtYS9jb21tb24vc3RyaW5nLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L3NjaGVtYS9jb21tb24vbnVsbC5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEvY29yZS9ib29sLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L3N0cmluZ2lmeS9zdHJpbmdpZnlOdW1iZXIuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL2NvcmUvZmxvYXQuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL2NvcmUvaW50LmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L3NjaGVtYS9jb3JlL3NjaGVtYS5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEvanNvbi9zY2hlbWEuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL3lhbWwtMS4xL2JpbmFyeS5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEveWFtbC0xLjEvcGFpcnMuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL3lhbWwtMS4xL29tYXAuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL3lhbWwtMS4xL2Jvb2wuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL3lhbWwtMS4xL2Zsb2F0LmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L3NjaGVtYS95YW1sLTEuMS9pbnQuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL3lhbWwtMS4xL3NldC5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEveWFtbC0xLjEvdGltZXN0YW1wLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L3NjaGVtYS95YW1sLTEuMS9zY2hlbWEuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL3RhZ3MuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL1NjaGVtYS5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9zdHJpbmdpZnkvc3RyaW5naWZ5RG9jdW1lbnQuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3QvZG9jL2FwcGx5UmV2aXZlci5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9kb2MvRG9jdW1lbnQuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3QvZXJyb3JzLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L2NvbXBvc2UvcmVzb2x2ZS1wcm9wcy5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9jb21wb3NlL3V0aWwtY29udGFpbnMtbmV3bGluZS5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9jb21wb3NlL3V0aWwtZmxvdy1pbmRlbnQtY2hlY2suanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3QvY29tcG9zZS91dGlsLW1hcC1pbmNsdWRlcy5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9jb21wb3NlL3Jlc29sdmUtYmxvY2stbWFwLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L2NvbXBvc2UvcmVzb2x2ZS1ibG9jay1zZXEuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3QvY29tcG9zZS9yZXNvbHZlLWVuZC5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9jb21wb3NlL3Jlc29sdmUtZmxvdy1jb2xsZWN0aW9uLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L2NvbXBvc2UvY29tcG9zZS1jb2xsZWN0aW9uLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L2NvbXBvc2UvcmVzb2x2ZS1ibG9jay1zY2FsYXIuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3QvY29tcG9zZS9yZXNvbHZlLWZsb3ctc2NhbGFyLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L2NvbXBvc2UvY29tcG9zZS1zY2FsYXIuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3QvY29tcG9zZS91dGlsLWVtcHR5LXNjYWxhci1wb3NpdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9jb21wb3NlL2NvbXBvc2Utbm9kZS5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9jb21wb3NlL2NvbXBvc2UtZG9jLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L2NvbXBvc2UvY29tcG9zZXIuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3QvcGFyc2UvY3N0LXNjYWxhci5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9wYXJzZS9jc3Qtc3RyaW5naWZ5LmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L3BhcnNlL2NzdC5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9wYXJzZS9sZXhlci5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuMC4wLTEwL25vZGVfbW9kdWxlcy95YW1sL2Jyb3dzZXIvZGlzdC9wYXJzZS9saW5lLWNvdW50ZXIuanMiLCJub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjAuMC0xMC9ub2RlX21vZHVsZXMveWFtbC9icm93c2VyL2Rpc3QvcGFyc2UvcGFyc2VyLmpzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi4wLjAtMTAvbm9kZV9tb2R1bGVzL3lhbWwvYnJvd3Nlci9kaXN0L3B1YmxpYy1hcGkuanMiLCJzcmMvRmlsZS5qcyIsInNyYy9yZW5hbWluZy5qcyIsIm5vZGVfbW9kdWxlcy8ucG5wbS9tb25rZXktYXJvdW5kQDIuMy4wL25vZGVfbW9kdWxlcy9tb25rZXktYXJvdW5kL21qcy9pbmRleC5qcyIsInNyYy9wbHVnaW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmID0gKGZuKSA9PiBbXG4gICAgLyplc2xpbnQgbm8tdW51c2VkLXZhcnM6IDAqL1xuICAgIGZ1bmN0aW9uIChhKSB7cmV0dXJuIGZuKC4uLmFyZ3VtZW50cyk7fSxcbiAgICBmdW5jdGlvbiAoYSwgYikge3JldHVybiBmbiguLi5hcmd1bWVudHMpO30sXG4gICAgZnVuY3Rpb24gKGEsIGIsIGMpIHtyZXR1cm4gZm4oLi4uYXJndW1lbnRzKTt9LFxuICAgIGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7cmV0dXJuIGZuKC4uLmFyZ3VtZW50cyk7fSxcbiAgICBmdW5jdGlvbiAoYSwgYiwgYywgZCwgZSkge3JldHVybiBmbiguLi5hcmd1bWVudHMpO30sXG5dO1xuXG5jb25zdCBjdXJyaWZ5ID0gKGZuLCAuLi5hcmdzKSA9PiB7XG4gICAgY2hlY2soZm4pO1xuICAgIFxuICAgIGlmIChhcmdzLmxlbmd0aCA+PSBmbi5sZW5ndGgpXG4gICAgICAgIHJldHVybiBmbiguLi5hcmdzKTtcbiAgICBcbiAgICBjb25zdCBhZ2FpbiA9ICguLi5hcmdzMikgPT4ge1xuICAgICAgICByZXR1cm4gY3VycmlmeShmbiwgLi4uWy4uLmFyZ3MsIC4uLmFyZ3MyXSk7XG4gICAgfTtcbiAgICBcbiAgICBjb25zdCBjb3VudCA9IGZuLmxlbmd0aCAtIGFyZ3MubGVuZ3RoIC0gMTtcbiAgICBjb25zdCBmdW5jID0gZihhZ2FpbilbY291bnRdO1xuICAgIFxuICAgIHJldHVybiBmdW5jIHx8IGFnYWluO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBjdXJyaWZ5O1xuXG5mdW5jdGlvbiBjaGVjayhmbikge1xuICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpXG4gICAgICAgIHRocm93IEVycm9yKCdmbiBzaG91bGQgYmUgZnVuY3Rpb24hJyk7XG59XG5cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSAodmFsdWUpID0+IHtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICB2YWx1ZSxcbiAgICB9O1xuICAgIFxuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgICBjb25zdCBbdmFsdWVdID0gYXJncztcbiAgICAgICAgXG4gICAgICAgIGlmICghYXJncy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gZGF0YS52YWx1ZTtcbiAgICAgICAgXG4gICAgICAgIGRhdGEudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xufTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBjdXJyaWZ5ID0gcmVxdWlyZSgnY3VycmlmeScpO1xuY29uc3QgcXVlcnkgPSAoYSkgPT4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW2RhdGEtbmFtZT1cIiR7YX1cIl1gKTtcblxuY29uc3Qgc2V0QXR0cmlidXRlID0gY3VycmlmeSgoZWwsIG9iaiwgbmFtZSkgPT4gZWwuc2V0QXR0cmlidXRlKG5hbWUsIG9ialtuYW1lXSkpO1xuY29uc3Qgc2V0ID0gY3VycmlmeSgoZWwsIG9iaiwgbmFtZSkgPT4gZWxbbmFtZV0gPSBvYmpbbmFtZV0pO1xuY29uc3Qgbm90ID0gY3VycmlmeSgoZiwgYSkgPT4gIWYoYSkpO1xuY29uc3QgaXNDYW1lbENhc2UgPSAoYSkgPT4gYSAhPSBhLnRvTG93ZXJDYXNlKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gKG5hbWUsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgICAgZGF0YU5hbWUsXG4gICAgICAgIG5vdEFwcGVuZCxcbiAgICAgICAgcGFyZW50ID0gZG9jdW1lbnQuYm9keSxcbiAgICAgICAgdW5pcSA9IHRydWUsXG4gICAgICAgIC4uLnJlc3RPcHRpb25zXG4gICAgfSA9IG9wdGlvbnM7XG4gICAgXG4gICAgY29uc3QgZWxGb3VuZCA9IGlzRWxlbWVudFByZXNlbnQoZGF0YU5hbWUpO1xuICAgIFxuICAgIGlmICh1bmlxICYmIGVsRm91bmQpXG4gICAgICAgIHJldHVybiBlbEZvdW5kO1xuICAgIFxuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKTtcbiAgICBcbiAgICBpZiAoZGF0YU5hbWUpXG4gICAgICAgIGVsLmRhdGFzZXQubmFtZSA9IGRhdGFOYW1lO1xuICAgIFxuICAgIE9iamVjdC5rZXlzKHJlc3RPcHRpb25zKVxuICAgICAgICAuZmlsdGVyKGlzQ2FtZWxDYXNlKVxuICAgICAgICAubWFwKHNldChlbCwgb3B0aW9ucykpO1xuICAgIFxuICAgIE9iamVjdC5rZXlzKHJlc3RPcHRpb25zKVxuICAgICAgICAuZmlsdGVyKG5vdChpc0NhbWVsQ2FzZSkpXG4gICAgICAgIC5tYXAoc2V0QXR0cmlidXRlKGVsLCBvcHRpb25zKSk7XG4gICAgXG4gICAgaWYgKCFub3RBcHBlbmQpXG4gICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChlbCk7XG4gICAgXG4gICAgcmV0dXJuIGVsO1xufTtcblxubW9kdWxlLmV4cG9ydHMuaXNFbGVtZW50UHJlc2VudCA9IGlzRWxlbWVudFByZXNlbnQ7XG5cbmZ1bmN0aW9uIGlzRWxlbWVudFByZXNlbnQoZGF0YU5hbWUpIHtcbiAgICBpZiAoIWRhdGFOYW1lKVxuICAgICAgICByZXR1cm47XG4gICAgXG4gICAgcmV0dXJuIHF1ZXJ5KGRhdGFOYW1lKTtcbn1cblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5yZXF1aXJlKCcuLi9jc3Mvc21hbGx0YWxrLmNzcycpO1xuXG5jb25zdCBjdXJyaWZ5ID0gcmVxdWlyZSgnY3VycmlmeScpO1xuY29uc3Qgc3RvcmUgPSByZXF1aXJlKCdmdWxsc3RvcmUnKTtcbmNvbnN0IGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCdAY2xvdWRjbWQvY3JlYXRlLWVsZW1lbnQnKTtcblxuY29uc3Qga2V5RG93biA9IGN1cnJpZnkoa2V5RG93bl8pO1xuXG5jb25zdCBCVVRUT05fT0sgPSB7XG4gICAgb2s6ICdPSycsXG59O1xuXG5jb25zdCBCVVRUT05fT0tfQ0FOQ0VMID0ge1xuICAgIG9rOiAnT0snLFxuICAgIGNhbmNlbDogJ0NhbmNlbCcsXG59O1xuXG5jb25zdCB6SW5kZXggPSBzdG9yZSgxMDApO1xuXG5leHBvcnRzLmFsZXJ0ID0gKHRpdGxlLCBtc2csIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBidXR0b25zID0gZ2V0QnV0dG9ucyhvcHRpb25zKSB8fCBCVVRUT05fT0s7XG4gICAgcmV0dXJuIHNob3dEaWFsb2codGl0bGUsIG1zZywgJycsIGJ1dHRvbnMsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0cy5wcm9tcHQgPSAodGl0bGUsIG1zZywgdmFsdWUgPSAnJywgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHR5cGUgPSBnZXRUeXBlKG9wdGlvbnMpO1xuICAgIGNvbnN0IHZhbCA9IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgLnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKTtcbiAgICBcbiAgICBjb25zdCB2YWx1ZVN0ciA9IGA8aW5wdXQgdHlwZT1cIiR7IHR5cGUgfVwiIHZhbHVlPVwiJHsgdmFsIH1cIiBkYXRhLW5hbWU9XCJqcy1pbnB1dFwiPmA7XG4gICAgY29uc3QgYnV0dG9ucyA9IGdldEJ1dHRvbnMob3B0aW9ucykgfHwgQlVUVE9OX09LX0NBTkNFTDtcbiAgICBcbiAgICByZXR1cm4gc2hvd0RpYWxvZyh0aXRsZSwgbXNnLCB2YWx1ZVN0ciwgYnV0dG9ucywgb3B0aW9ucyk7XG59O1xuXG5leHBvcnRzLmNvbmZpcm0gPSAodGl0bGUsIG1zZywgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IGJ1dHRvbnMgPSBnZXRCdXR0b25zKG9wdGlvbnMpIHx8IEJVVFRPTl9PS19DQU5DRUw7XG4gICAgXG4gICAgcmV0dXJuIHNob3dEaWFsb2codGl0bGUsIG1zZywgJycsIGJ1dHRvbnMsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0cy5wcm9ncmVzcyA9ICh0aXRsZSwgbWVzc2FnZSwgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHZhbHVlU3RyID0gYFxuICAgICAgICA8cHJvZ3Jlc3MgdmFsdWU9XCIwXCIgZGF0YS1uYW1lPVwianMtcHJvZ3Jlc3NcIiBjbGFzcz1cInByb2dyZXNzXCIgbWF4PVwiMTAwXCI+PC9wcm9ncmVzcz5cbiAgICAgICAgPHNwYW4gZGF0YS1uYW1lPVwianMtY291bnRlclwiPjAlPC9zcGFuPlxuICAgIGA7XG4gICAgXG4gICAgY29uc3QgYnV0dG9ucyA9IHtcbiAgICAgICAgY2FuY2VsOiAnQWJvcnQnLFxuICAgIH07XG4gICAgXG4gICAgY29uc3QgcHJvbWlzZSA9IHNob3dEaWFsb2codGl0bGUsIG1lc3NhZ2UsIHZhbHVlU3RyLCBidXR0b25zLCBvcHRpb25zKTtcbiAgICBjb25zdCB7b2ssIGRpYWxvZ30gPSBwcm9taXNlO1xuICAgIGNvbnN0IHJlc29sdmUgPSBvaygpO1xuICAgIFxuICAgIGZpbmQoZGlhbG9nLCBbJ2NhbmNlbCddKS5tYXAoKGVsKSA9PiB7XG4gICAgICAgIGVsLmZvY3VzKCk7XG4gICAgfSk7XG4gICAgXG4gICAgT2JqZWN0LmFzc2lnbihwcm9taXNlLCB7XG4gICAgICAgIHNldFByb2dyZXNzKGNvdW50KSB7XG4gICAgICAgICAgICBjb25zdCBbZWxQcm9ncmVzc10gPSBmaW5kKGRpYWxvZywgWydwcm9ncmVzcyddKTtcbiAgICAgICAgICAgIGNvbnN0IFtlbENvdW50ZXJdID0gZmluZChkaWFsb2csIFsnY291bnRlciddKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgZWxQcm9ncmVzcy52YWx1ZSA9IGNvdW50O1xuICAgICAgICAgICAgZWxDb3VudGVyLnRleHRDb250ZW50ID0gYCR7Y291bnR9JWA7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIChjb3VudCA9PT0gMTAwKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlKGRpYWxvZyk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcbiAgICAgICAgcmVtb3ZlKCkge1xuICAgICAgICAgICAgcmVtb3ZlKGRpYWxvZyk7XG4gICAgICAgIH0sXG4gICAgfSk7XG4gICAgXG4gICAgcmV0dXJuIHByb21pc2U7XG59O1xuXG5mdW5jdGlvbiBnZXRCdXR0b25zKG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHtidXR0b25zfSA9IG9wdGlvbnM7XG4gICAgXG4gICAgaWYgKCFidXR0b25zKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICBcbiAgICByZXR1cm4gYnV0dG9ucztcbn1cblxuZnVuY3Rpb24gZ2V0VHlwZShvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB7dHlwZX0gPSBvcHRpb25zO1xuICAgIFxuICAgIGlmICh0eXBlID09PSAncGFzc3dvcmQnKVxuICAgICAgICByZXR1cm4gJ3Bhc3N3b3JkJztcbiAgICBcbiAgICByZXR1cm4gJ3RleHQnO1xufVxuXG5mdW5jdGlvbiBnZXRUZW1wbGF0ZSh0aXRsZSwgbXNnLCB2YWx1ZSwgYnV0dG9ucykge1xuICAgIGNvbnN0IGVuY29kZWRNc2cgPSBtc2cucmVwbGFjZSgvXFxuL2csICc8YnI+Jyk7XG4gICAgXG4gICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwicGFnZVwiPlxuICAgICAgICA8ZGl2IGRhdGEtbmFtZT1cImpzLWNsb3NlXCIgY2xhc3M9XCJjbG9zZS1idXR0b25cIj48L2Rpdj5cbiAgICAgICAgPGhlYWRlcj4keyB0aXRsZSB9PC9oZWFkZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWFyZWFcIj4keyBlbmNvZGVkTXNnIH0keyB2YWx1ZSB9PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYXJlYVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1zdHJpcFwiPlxuICAgICAgICAgICAgICAgICR7cGFyc2VCdXR0b25zKGJ1dHRvbnMpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PmA7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQnV0dG9ucyhidXR0b25zKSB7XG4gICAgY29uc3QgbmFtZXMgPSBPYmplY3Qua2V5cyhidXR0b25zKTtcbiAgICBjb25zdCBwYXJzZSA9IGN1cnJpZnkoKGJ1dHRvbnMsIG5hbWUsIGkpID0+IGA8YnV0dG9uXG4gICAgICAgICAgICB0YWJpbmRleD0ke2l9XG4gICAgICAgICAgICBkYXRhLW5hbWU9XCJqcy0ke25hbWUudG9Mb3dlckNhc2UoKX1cIj5cbiAgICAgICAgICAgICR7YnV0dG9uc1tuYW1lXX1cbiAgICAgICAgPC9idXR0b24+YCk7XG4gICAgXG4gICAgcmV0dXJuIG5hbWVzXG4gICAgICAgIC5tYXAocGFyc2UoYnV0dG9ucykpXG4gICAgICAgIC5qb2luKCcnKTtcbn1cblxuZnVuY3Rpb24gc2hvd0RpYWxvZyh0aXRsZSwgbXNnLCB2YWx1ZSwgYnV0dG9ucywgb3B0aW9ucykge1xuICAgIGNvbnN0IG9rID0gc3RvcmUoKTtcbiAgICBjb25zdCBjYW5jZWwgPSBzdG9yZSgpO1xuICAgIFxuICAgIGNvbnN0IGNsb3NlQnV0dG9ucyA9IFtcbiAgICAgICAgJ2NhbmNlbCcsXG4gICAgICAgICdjbG9zZScsXG4gICAgICAgICdvaycsXG4gICAgXTtcbiAgICBcbiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBub0NhbmNlbCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5jYW5jZWwgPT09IGZhbHNlO1xuICAgICAgICBjb25zdCBlbXB0eSA9ICgpID0+IHt9O1xuICAgICAgICBjb25zdCByZWplY3RFcnJvciA9ICgpID0+IHJlamVjdChFcnJvcigpKTtcbiAgICAgICAgXG4gICAgICAgIG9rKHJlc29sdmUpO1xuICAgICAgICBjYW5jZWwobm9DYW5jZWwgPyBlbXB0eSA6IHJlamVjdEVycm9yKTtcbiAgICB9KTtcbiAgICBcbiAgICBjb25zdCBpbm5lckhUTUwgPSBnZXRUZW1wbGF0ZSh0aXRsZSwgbXNnLCB2YWx1ZSwgYnV0dG9ucyk7XG4gICAgXG4gICAgY29uc3QgZGlhbG9nID0gY3JlYXRlRWxlbWVudCgnZGl2Jywge1xuICAgICAgICBpbm5lckhUTUwsXG4gICAgICAgIGNsYXNzTmFtZTogJ3NtYWxsdGFsaycsXG4gICAgICAgIHN0eWxlOiBgei1pbmRleDogJHt6SW5kZXgoekluZGV4KCkgKyAxKX1gLFxuICAgIH0pO1xuICAgIFxuICAgIGZvciAoY29uc3QgZWwgb2YgZmluZChkaWFsb2csIFsnb2snLCAnaW5wdXQnXSkpXG4gICAgICAgIGVsLmZvY3VzKCk7XG4gICAgXG4gICAgZm9yIChjb25zdCBlbCBvZiBmaW5kKGRpYWxvZywgWydpbnB1dCddKSkge1xuICAgICAgICBlbC5zZXRTZWxlY3Rpb25SYW5nZSgwLCB2YWx1ZS5sZW5ndGgpO1xuICAgIH1cbiAgICBcbiAgICBhZGRMaXN0ZW5lckFsbCgnY2xpY2snLCBkaWFsb2csIGNsb3NlQnV0dG9ucywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGNsb3NlRGlhbG9nKGV2ZW50LnRhcmdldCwgZGlhbG9nLCBvaygpLCBjYW5jZWwoKSk7XG4gICAgfSk7XG4gICAgXG4gICAgZm9yIChjb25zdCBldmVudCBvZiBbJ2NsaWNrJywgJ2NvbnRleHRtZW51J10pXG4gICAgICAgIGRpYWxvZy5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCAoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZWwgb2YgZmluZChkaWFsb2csIFsnb2snLCAnaW5wdXQnXSkpXG4gICAgICAgICAgICAgICAgZWwuZm9jdXMoKTtcbiAgICAgICAgfSk7XG4gICAgXG4gICAgZGlhbG9nLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBrZXlEb3duKGRpYWxvZywgb2soKSwgY2FuY2VsKCkpKTtcbiAgICBcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihwcm9taXNlLCB7XG4gICAgICAgIGRpYWxvZyxcbiAgICAgICAgb2ssXG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGtleURvd25fKGRpYWxvZywgb2ssIGNhbmNlbCwgZXZlbnQpIHtcbiAgICBjb25zdCBLRVkgPSB7XG4gICAgICAgIEVOVEVSIDogMTMsXG4gICAgICAgIEVTQyAgIDogMjcsXG4gICAgICAgIFRBQiAgIDogOSxcbiAgICAgICAgTEVGVCAgOiAzNyxcbiAgICAgICAgVVAgICAgOiAzOCxcbiAgICAgICAgUklHSFQgOiAzOSxcbiAgICAgICAgRE9XTiAgOiA0MCxcbiAgICB9O1xuICAgIFxuICAgIGNvbnN0IHtrZXlDb2RlfSA9IGV2ZW50O1xuICAgIGNvbnN0IGVsID0gZXZlbnQudGFyZ2V0O1xuICAgIFxuICAgIGNvbnN0IG5hbWVzQWxsID0gWydvaycsICdjYW5jZWwnLCAnaW5wdXQnXTtcbiAgICBjb25zdCBuYW1lcyA9IGZpbmQoZGlhbG9nLCBuYW1lc0FsbClcbiAgICAgICAgLm1hcChnZXREYXRhTmFtZSk7XG4gICAgXG4gICAgc3dpdGNoKGtleUNvZGUpIHtcbiAgICBjYXNlIEtFWS5FTlRFUjpcbiAgICAgICAgY2xvc2VEaWFsb2coZWwsIGRpYWxvZywgb2ssIGNhbmNlbCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgIFxuICAgIGNhc2UgS0VZLkVTQzpcbiAgICAgICAgcmVtb3ZlKGRpYWxvZyk7XG4gICAgICAgIGNhbmNlbCgpO1xuICAgICAgICBicmVhaztcbiAgICBcbiAgICBjYXNlIEtFWS5UQUI6XG4gICAgICAgIGlmIChldmVudC5zaGlmdEtleSlcbiAgICAgICAgICAgIHRhYihkaWFsb2csIG5hbWVzKTtcbiAgICAgICAgXG4gICAgICAgIHRhYihkaWFsb2csIG5hbWVzKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgXG4gICAgZGVmYXVsdDpcbiAgICAgICAgWydsZWZ0JywgJ3JpZ2h0JywgJ3VwJywgJ2Rvd24nXS5maWx0ZXIoKG5hbWUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBrZXlDb2RlID09PSBLRVlbbmFtZS50b1VwcGVyQ2FzZSgpXTtcbiAgICAgICAgfSkuZm9yRWFjaCgoKSA9PiB7XG4gICAgICAgICAgICBjaGFuZ2VCdXR0b25Gb2N1cyhkaWFsb2csIG5hbWVzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG59XG5cbmZ1bmN0aW9uIGdldERhdGFOYW1lKGVsKSB7XG4gICAgcmV0dXJuIGVsXG4gICAgICAgIC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbmFtZScpXG4gICAgICAgIC5yZXBsYWNlKCdqcy0nLCAnJyk7XG59XG5cbmNvbnN0IGdldE5hbWUgPSAoYWN0aXZlTmFtZSkgPT4ge1xuICAgIGlmIChhY3RpdmVOYW1lID09PSAnY2FuY2VsJylcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgXG4gICAgcmV0dXJuICdjYW5jZWwnO1xufTtcblxuZnVuY3Rpb24gY2hhbmdlQnV0dG9uRm9jdXMoZGlhbG9nLCBuYW1lcykge1xuICAgIGNvbnN0IGFjdGl2ZSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgYWN0aXZlTmFtZSA9IGdldERhdGFOYW1lKGFjdGl2ZSk7XG4gICAgY29uc3QgaXNCdXR0b24gPSAvb2t8Y2FuY2VsLy50ZXN0KGFjdGl2ZU5hbWUpO1xuICAgIGNvbnN0IGNvdW50ID0gbmFtZXMubGVuZ3RoIC0gMTtcbiAgICBcbiAgICBpZiAoYWN0aXZlTmFtZSA9PT0gJ2lucHV0JyB8fCAhY291bnQgfHwgIWlzQnV0dG9uKVxuICAgICAgICByZXR1cm47XG4gICAgXG4gICAgY29uc3QgbmFtZSA9IGdldE5hbWUoYWN0aXZlTmFtZSk7XG4gICAgXG4gICAgZm9yIChjb25zdCBlbCBvZiBmaW5kKGRpYWxvZywgW25hbWVdKSkge1xuICAgICAgICBlbC5mb2N1cygpO1xuICAgIH1cbn1cblxuY29uc3QgZ2V0SW5kZXggPSAoY291bnQsIGluZGV4KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSBjb3VudClcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgXG4gICAgcmV0dXJuIGluZGV4ICsgMTtcbn07XG5cbmZ1bmN0aW9uIHRhYihkaWFsb2csIG5hbWVzKSB7XG4gICAgY29uc3QgYWN0aXZlID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICBjb25zdCBhY3RpdmVOYW1lID0gZ2V0RGF0YU5hbWUoYWN0aXZlKTtcbiAgICBjb25zdCBjb3VudCA9IG5hbWVzLmxlbmd0aCAtIDE7XG4gICAgXG4gICAgY29uc3QgYWN0aXZlSW5kZXggPSBuYW1lcy5pbmRleE9mKGFjdGl2ZU5hbWUpO1xuICAgIGNvbnN0IGluZGV4ID0gZ2V0SW5kZXgoY291bnQsIGFjdGl2ZUluZGV4KTtcbiAgICBcbiAgICBjb25zdCBuYW1lID0gbmFtZXNbaW5kZXhdO1xuICAgIFxuICAgIGZvciAoY29uc3QgZWwgb2YgZmluZChkaWFsb2csIFtuYW1lXSkpXG4gICAgICAgIGVsLmZvY3VzKCk7XG59XG5cbmZ1bmN0aW9uIGNsb3NlRGlhbG9nKGVsLCBkaWFsb2csIG9rLCBjYW5jZWwpIHtcbiAgICBjb25zdCBuYW1lID0gZWxcbiAgICAgICAgLmdldEF0dHJpYnV0ZSgnZGF0YS1uYW1lJylcbiAgICAgICAgLnJlcGxhY2UoJ2pzLScsICcnKTtcbiAgICBcbiAgICBpZiAoL2Nsb3NlfGNhbmNlbC8udGVzdChuYW1lKSkge1xuICAgICAgICBjYW5jZWwoKTtcbiAgICAgICAgcmVtb3ZlKGRpYWxvZyk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgdmFsdWUgPSBmaW5kKGRpYWxvZywgWydpbnB1dCddKVxuICAgICAgICAucmVkdWNlKCh2YWx1ZSwgZWwpID0+IGVsLnZhbHVlLCBudWxsKTtcbiAgICBcbiAgICBvayh2YWx1ZSk7XG4gICAgcmVtb3ZlKGRpYWxvZyk7XG59XG5cbmNvbnN0IHF1ZXJ5ID0gY3VycmlmeSgoZWxlbWVudCwgbmFtZSkgPT4gZWxlbWVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1uYW1lPVwianMtJHsgbmFtZSB9XCJdYCkpO1xuXG5mdW5jdGlvbiBmaW5kKGVsZW1lbnQsIG5hbWVzKSB7XG4gICAgY29uc3QgZWxlbWVudHMgPSBuYW1lc1xuICAgICAgICAubWFwKHF1ZXJ5KGVsZW1lbnQpKVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgIFxuICAgIHJldHVybiBlbGVtZW50cztcbn1cblxuZnVuY3Rpb24gYWRkTGlzdGVuZXJBbGwoZXZlbnQsIHBhcmVudCwgZWxlbWVudHMsIGZuKSB7XG4gICAgZm9yIChjb25zdCBlbCBvZiBmaW5kKHBhcmVudCwgZWxlbWVudHMpKSB7XG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGZuKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZShkaWFsb2cpIHtcbiAgICBjb25zdCB7cGFyZW50RWxlbWVudH0gPSBkaWFsb2c7XG4gICAgXG4gICAgaWYgKHBhcmVudEVsZW1lbnQpXG4gICAgICAgIHBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoZGlhbG9nKTtcbn1cblxuIiwiaW1wb3J0IHsgcHJvZ3Jlc3MgfSBmcm9tIFwic21hbGx0YWxrXCI7XG5cbmV4cG9ydCBjbGFzcyBQcm9ncmVzcyB7XG5cbiAgICBjb25zdHJ1Y3Rvcih0aXRsZSwgbWVzc2FnZSkge1xuICAgICAgICB0aGlzLnByb2dyZXNzID0gcHJvZ3Jlc3ModGl0bGUsIG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLnByb2dyZXNzLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgdGhpcy5hYm9ydGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChlICYmIChlLmNvbnN0cnVjdG9yICE9PSBFcnJvciB8fCBlLm1lc3NhZ2UgIT09IFwiXCIpKSBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kaWFsb2cgPSB0aGlzLnByb2dyZXNzLmRpYWxvZztcbiAgICAgICAgdGhpcy5hYm9ydGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgYXN5bmMgZm9yRWFjaChjb2xsZWN0aW9uLCBmdW5jKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hYm9ydGVkKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGxldCBwcm9jZXNzZWQgPSAwLCByYW5nZSA9IGNvbGxlY3Rpb24ubGVuZ3RoLCBhY2N1bSA9IDAsIHBjdCA9IDA7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29sbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZ1bmMoaXRlbSwgcHJvY2Vzc2VkKyssIGNvbGxlY3Rpb24sIHRoaXMpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFib3J0ZWQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBhY2N1bSArPSAxMDA7XG4gICAgICAgICAgICAgICAgaWYgKGFjY3VtID4gcmFuZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVtYWluZGVyID0gYWNjdW0gJSByYW5nZSwgc3RlcCA9IChhY2N1bSAtIHJlbWFpbmRlcikgLyByYW5nZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzcy5zZXRQcm9ncmVzcyhwY3QgKz0gc3RlcCk7XG4gICAgICAgICAgICAgICAgICAgIGFjY3VtID0gcmVtYWluZGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwY3QgPCAxMDApXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzcy5zZXRQcm9ncmVzcygxMDApO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLnByb2dyZXNzLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0IHRpdGxlKHRleHQpIHsgdGhpcy5kaWFsb2cucXVlcnlTZWxlY3RvcihcImhlYWRlclwiKS50ZXh0Q29udGVudCA9IHRleHQ7IH1cbiAgICBnZXQgdGl0bGUoKSB7IHJldHVybiB0aGlzLmRpYWxvZy5xdWVyeVNlbGVjdG9yKFwiaGVhZGVyXCIpLnRleHRDb250ZW50OyB9XG5cbiAgICBzZXQgbWVzc2FnZSh0ZXh0KSB7XG4gICAgICAgIGNvbnN0IGFyZWEgPSB0aGlzLmRpYWxvZy5xdWVyeVNlbGVjdG9yKFwiLmNvbnRlbnQtYXJlYVwiKS5jaGlsZE5vZGVzWzBdLnRleHRDb250ZW50ID0gdGV4dDtcbiAgICB9XG5cbiAgICBnZXQgbWVzc2FnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlhbG9nLnF1ZXJ5U2VsZWN0b3IoXCIuY29udGVudC1hcmVhXCIpLmNoaWxkTm9kZXNbMF0udGV4dENvbnRlbnQ7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgTm90aWNlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBwcm9tcHQgfSBmcm9tIFwic21hbGx0YWxrXCI7XG5cbmltcG9ydCBcIi4vdmFsaWRhdGlvbi5zY3NzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2YWxpZGF0ZWRJbnB1dCh0aXRsZSwgbWVzc2FnZSwgdmFsdWUgPSBcIlwiLCByZWdleCA9IFwiLipcIiwgd2hhdCA9IFwiZW50cnlcIikge1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcHJvbXB0KHRpdGxlLCBtZXNzYWdlLCB2YWx1ZSk7XG4gICAgICAgIGNvbnN0IGlucHV0RmllbGQgPSBpbnB1dC5kaWFsb2cuZmluZChcImlucHV0XCIpO1xuICAgICAgICBjb25zdCBpc1ZhbGlkID0gKHQpID0+IG5ldyBSZWdFeHAoYF4ke3JlZ2V4fSRgKS50ZXN0KHQpO1xuXG4gICAgICAgIGlucHV0RmllbGQuc2V0U2VsZWN0aW9uUmFuZ2UodmFsdWUubGVuZ3RoLCB2YWx1ZS5sZW5ndGgpO1xuICAgICAgICBpbnB1dEZpZWxkLnBhdHRlcm4gPSByZWdleDtcbiAgICAgICAgaW5wdXRGaWVsZC5vbmlucHV0ID0gKCkgPT4gaW5wdXRGaWVsZC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWludmFsaWRcIiwgIWlzVmFsaWQoaW5wdXRGaWVsZC52YWx1ZSkpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGlucHV0O1xuICAgICAgICBpZiAoaXNWYWxpZChyZXN1bHQpKSByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgIG5ldyBOb3RpY2UoYFwiJHtyZXN1bHR9XCIgaXMgbm90IGEgdmFsaWQgJHt3aGF0fWApO1xuICAgIH1cbn1cbiIsImNvbnN0IHRhZ0JvZHkgPSAvXiNbXlxcdTIwMDAtXFx1MjA2RlxcdTJFMDAtXFx1MkU3RichXCIjJCUmKCkqKywuOjs8PT4/QF5ge3x9flxcW1xcXVxcXFxcXHNdKyQvO1xuXG5leHBvcnQgY2xhc3MgVGFnIHtcbiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7XG4gICAgICAgIGNvbnN0XG4gICAgICAgICAgICBoYXNoZWQgPSB0aGlzLnRhZyA9IFRhZy50b1RhZyhuYW1lKSxcbiAgICAgICAgICAgIGNhbm9uaWNhbCA9IHRoaXMuY2Fub25pY2FsID0gaGFzaGVkLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICBjYW5vbmljYWxfcHJlZml4ID0gdGhpcy5jYW5vbmljYWxfcHJlZml4ID0gY2Fub25pY2FsICsgXCIvXCI7XG4gICAgICAgIHRoaXMubmFtZSA9IGhhc2hlZC5zbGljZSgxKTtcbiAgICAgICAgdGhpcy5tYXRjaGVzID0gZnVuY3Rpb24gKHRleHQpIHtcbiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICByZXR1cm4gdGV4dCA9PSBjYW5vbmljYWwgfHwgdGV4dC5zdGFydHNXaXRoKGNhbm9uaWNhbF9wcmVmaXgpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICB0b1N0cmluZygpIHsgcmV0dXJuIHRoaXMudGFnOyB9XG5cbiAgICBzdGF0aWMgaXNUYWcocykgeyByZXR1cm4gdGFnQm9keS50ZXN0KHMpOyB9XG5cbiAgICBzdGF0aWMgdG9UYWcobmFtZSkge1xuICAgICAgICB3aGlsZSAobmFtZS5zdGFydHNXaXRoKFwiIyNcIikpIG5hbWUgPSBuYW1lLnNsaWNlKDEpO1xuICAgICAgICByZXR1cm4gbmFtZS5zdGFydHNXaXRoKFwiI1wiKSA/IG5hbWUgOiBcIiNcIituYW1lO1xuICAgIH1cblxuICAgIHN0YXRpYyBjYW5vbmljYWwobmFtZSkge1xuICAgICAgICByZXR1cm4gVGFnLnRvVGFnKG5hbWUpLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVwbGFjZW1lbnQge1xuXG4gICAgY29uc3RydWN0b3IoZnJvbVRhZywgdG9UYWcpIHtcbiAgICAgICAgY29uc3QgY2FjaGUgPSAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgIE9iamVjdC5jcmVhdGUobnVsbCksIHtcbiAgICAgICAgICAgICAgICBbZnJvbVRhZy50YWddOiAgdG9UYWcudGFnLFxuICAgICAgICAgICAgICAgIFtmcm9tVGFnLm5hbWVdOiB0b1RhZy5uYW1lLFxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuaW5TdHJpbmcgPSBmdW5jdGlvbih0ZXh0LCBwb3MgPSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGV4dC5zbGljZSgwLCBwb3MpICsgdG9UYWcudGFnICsgdGV4dC5zbGljZShwb3MgKyBmcm9tVGFnLnRhZy5sZW5ndGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbkFycmF5ID0gKHRhZ3MsIHNraXBPZGQsIGlzQWxpYXMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0YWdzLm1hcCgodCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChza2lwT2RkICYmIChpICYgMSkpIHJldHVybiB0OyAgIC8vIGxlYXZlIG9kZCBlbnRyaWVzIChzZXBhcmF0b3JzKSBhbG9uZVxuICAgICAgICAgICAgICAgIC8vIE9ic2lkaWFuIGFsbG93cyBzcGFjZXMgYXMgc2VwYXJhdG9ycyB3aXRoaW4gYXJyYXkgZWxlbWVudHNcbiAgICAgICAgICAgICAgICBpZiAoIXQpIHJldHVybiB0O1xuICAgICAgICAgICAgICAgIC8vIFNraXAgbm9uLXRhZyBwYXJ0c1xuICAgICAgICAgICAgICAgIGlmIChpc0FsaWFzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdC5zdGFydHNXaXRoKFwiI1wiKSB8fCAhVGFnLmlzVGFnKHQpKSByZXR1cm4gdDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKC9bICxcXG5dLy50ZXN0KHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluQXJyYXkodC5zcGxpdCgvKFssIFxcbl0rKS8pLCB0cnVlKS5qb2luKFwiXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2FjaGVbdF0pIHJldHVybiBjYWNoZVt0XTtcbiAgICAgICAgICAgICAgICBjb25zdCBsYyA9IHQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoY2FjaGVbbGNdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZVt0XSA9IGNhY2hlW2xjXTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxjLnN0YXJ0c1dpdGgoZnJvbVRhZy5jYW5vbmljYWxfcHJlZml4KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVbdF0gPSBjYWNoZVtsY10gPSB0aGlzLmluU3RyaW5nKHQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKFwiI1wiICsgbGMpLnN0YXJ0c1dpdGgoZnJvbVRhZy5jYW5vbmljYWxfcHJlZml4KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVbdF0gPSBjYWNoZVtsY10gPSB0aGlzLmluU3RyaW5nKFwiI1wiICsgdCkuc2xpY2UoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZVt0XSA9IGNhY2hlW2xjXSA9IHQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLndpbGxNZXJnZVRhZ3MgPSBmdW5jdGlvbiAodGFnTmFtZXMpIHtcbiAgICAgICAgICAgIC8vIFJlbmFtaW5nIHRvIGNoYW5nZSBjYXNlIGRvZXNuJ3QgbG9zZSBpbmZvLCBzbyBpZ25vcmUgaXRcbiAgICAgICAgICAgIGlmIChmcm9tVGFnLmNhbm9uaWNhbCA9PT0gdG9UYWcuY2Fub25pY2FsKSByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gbmV3IFNldCh0YWdOYW1lcy5tYXAocyA9PiBzLnRvTG93ZXJDYXNlKCkpKTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCB0YWdOYW1lIG9mIHRhZ05hbWVzLmZpbHRlcihmcm9tVGFnLm1hdGNoZXMpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hhbmdlZCA9IHRoaXMuaW5TdHJpbmcodGFnTmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nLmhhcyhjaGFuZ2VkLnRvTG93ZXJDYXNlKCkpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW25ldyBUYWcodGFnTmFtZSksIG5ldyBUYWcoY2hhbmdlZCldO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuIiwiY29uc3QgQUxJQVMgPSBTeW1ib2wuZm9yKCd5YW1sLmFsaWFzJyk7XG5jb25zdCBET0MgPSBTeW1ib2wuZm9yKCd5YW1sLmRvY3VtZW50Jyk7XG5jb25zdCBNQVAgPSBTeW1ib2wuZm9yKCd5YW1sLm1hcCcpO1xuY29uc3QgUEFJUiA9IFN5bWJvbC5mb3IoJ3lhbWwucGFpcicpO1xuY29uc3QgU0NBTEFSID0gU3ltYm9sLmZvcigneWFtbC5zY2FsYXInKTtcbmNvbnN0IFNFUSA9IFN5bWJvbC5mb3IoJ3lhbWwuc2VxJyk7XG5jb25zdCBOT0RFX1RZUEUgPSBTeW1ib2wuZm9yKCd5YW1sLm5vZGUudHlwZScpO1xuY29uc3QgaXNBbGlhcyA9IChub2RlKSA9PiAhIW5vZGUgJiYgdHlwZW9mIG5vZGUgPT09ICdvYmplY3QnICYmIG5vZGVbTk9ERV9UWVBFXSA9PT0gQUxJQVM7XG5jb25zdCBpc0RvY3VtZW50ID0gKG5vZGUpID0+ICEhbm9kZSAmJiB0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcgJiYgbm9kZVtOT0RFX1RZUEVdID09PSBET0M7XG5jb25zdCBpc01hcCA9IChub2RlKSA9PiAhIW5vZGUgJiYgdHlwZW9mIG5vZGUgPT09ICdvYmplY3QnICYmIG5vZGVbTk9ERV9UWVBFXSA9PT0gTUFQO1xuY29uc3QgaXNQYWlyID0gKG5vZGUpID0+ICEhbm9kZSAmJiB0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcgJiYgbm9kZVtOT0RFX1RZUEVdID09PSBQQUlSO1xuY29uc3QgaXNTY2FsYXIgPSAobm9kZSkgPT4gISFub2RlICYmIHR5cGVvZiBub2RlID09PSAnb2JqZWN0JyAmJiBub2RlW05PREVfVFlQRV0gPT09IFNDQUxBUjtcbmNvbnN0IGlzU2VxID0gKG5vZGUpID0+ICEhbm9kZSAmJiB0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcgJiYgbm9kZVtOT0RFX1RZUEVdID09PSBTRVE7XG5mdW5jdGlvbiBpc0NvbGxlY3Rpb24obm9kZSkge1xuICAgIGlmIChub2RlICYmIHR5cGVvZiBub2RlID09PSAnb2JqZWN0JylcbiAgICAgICAgc3dpdGNoIChub2RlW05PREVfVFlQRV0pIHtcbiAgICAgICAgICAgIGNhc2UgTUFQOlxuICAgICAgICAgICAgY2FzZSBTRVE6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBpc05vZGUobm9kZSkge1xuICAgIGlmIChub2RlICYmIHR5cGVvZiBub2RlID09PSAnb2JqZWN0JylcbiAgICAgICAgc3dpdGNoIChub2RlW05PREVfVFlQRV0pIHtcbiAgICAgICAgICAgIGNhc2UgQUxJQVM6XG4gICAgICAgICAgICBjYXNlIE1BUDpcbiAgICAgICAgICAgIGNhc2UgU0NBTEFSOlxuICAgICAgICAgICAgY2FzZSBTRVE6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5jb25zdCBoYXNBbmNob3IgPSAobm9kZSkgPT4gKGlzU2NhbGFyKG5vZGUpIHx8IGlzQ29sbGVjdGlvbihub2RlKSkgJiYgISFub2RlLmFuY2hvcjtcbmNsYXNzIE5vZGVCYXNlIHtcbiAgICBjb25zdHJ1Y3Rvcih0eXBlKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBOT0RFX1RZUEUsIHsgdmFsdWU6IHR5cGUgfSk7XG4gICAgfVxuICAgIC8qKiBDcmVhdGUgYSBjb3B5IG9mIHRoaXMgbm9kZS4gICovXG4gICAgY2xvbmUoKSB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModGhpcykpO1xuICAgICAgICBpZiAodGhpcy5yYW5nZSlcbiAgICAgICAgICAgIGNvcHkucmFuZ2UgPSB0aGlzLnJhbmdlLnNsaWNlKCk7XG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cbn1cblxuZXhwb3J0IHsgQUxJQVMsIERPQywgTUFQLCBOT0RFX1RZUEUsIE5vZGVCYXNlLCBQQUlSLCBTQ0FMQVIsIFNFUSwgaGFzQW5jaG9yLCBpc0FsaWFzLCBpc0NvbGxlY3Rpb24sIGlzRG9jdW1lbnQsIGlzTWFwLCBpc05vZGUsIGlzUGFpciwgaXNTY2FsYXIsIGlzU2VxIH07XG4iLCJpbXBvcnQgeyBpc0RvY3VtZW50LCBpc01hcCwgaXNTZXEsIGlzUGFpciwgaXNTY2FsYXIsIGlzQWxpYXMsIGlzTm9kZSwgaXNDb2xsZWN0aW9uIH0gZnJvbSAnLi9ub2Rlcy9Ob2RlLmpzJztcblxuY29uc3QgQlJFQUsgPSBTeW1ib2woJ2JyZWFrIHZpc2l0Jyk7XG5jb25zdCBTS0lQID0gU3ltYm9sKCdza2lwIGNoaWxkcmVuJyk7XG5jb25zdCBSRU1PVkUgPSBTeW1ib2woJ3JlbW92ZSBub2RlJyk7XG4vKipcbiAqIEFwcGx5IGEgdmlzaXRvciB0byBhbiBBU1Qgbm9kZSBvciBkb2N1bWVudC5cbiAqXG4gKiBXYWxrcyB0aHJvdWdoIHRoZSB0cmVlIChkZXB0aC1maXJzdCkgc3RhcnRpbmcgZnJvbSBgbm9kZWAsIGNhbGxpbmcgYVxuICogYHZpc2l0b3JgIGZ1bmN0aW9uIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICogICAtIGBrZXlgOiBGb3Igc2VxdWVuY2UgdmFsdWVzIGFuZCBtYXAgYFBhaXJgLCB0aGUgbm9kZSdzIGluZGV4IGluIHRoZVxuICogICAgIGNvbGxlY3Rpb24uIFdpdGhpbiBhIGBQYWlyYCwgYCdrZXknYCBvciBgJ3ZhbHVlJ2AsIGNvcnJlc3BvbmRpbmdseS5cbiAqICAgICBgbnVsbGAgZm9yIHRoZSByb290IG5vZGUuXG4gKiAgIC0gYG5vZGVgOiBUaGUgY3VycmVudCBub2RlLlxuICogICAtIGBwYXRoYDogVGhlIGFuY2VzdHJ5IG9mIHRoZSBjdXJyZW50IG5vZGUuXG4gKlxuICogVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgdmlzaXRvciBtYXkgYmUgdXNlZCB0byBjb250cm9sIHRoZSB0cmF2ZXJzYWw6XG4gKiAgIC0gYHVuZGVmaW5lZGAgKGRlZmF1bHQpOiBEbyBub3RoaW5nIGFuZCBjb250aW51ZVxuICogICAtIGB2aXNpdC5TS0lQYDogRG8gbm90IHZpc2l0IHRoZSBjaGlsZHJlbiBvZiB0aGlzIG5vZGUsIGNvbnRpbnVlIHdpdGggbmV4dFxuICogICAgIHNpYmxpbmdcbiAqICAgLSBgdmlzaXQuQlJFQUtgOiBUZXJtaW5hdGUgdHJhdmVyc2FsIGNvbXBsZXRlbHlcbiAqICAgLSBgdmlzaXQuUkVNT1ZFYDogUmVtb3ZlIHRoZSBjdXJyZW50IG5vZGUsIHRoZW4gY29udGludWUgd2l0aCB0aGUgbmV4dCBvbmVcbiAqICAgLSBgTm9kZWA6IFJlcGxhY2UgdGhlIGN1cnJlbnQgbm9kZSwgdGhlbiBjb250aW51ZSBieSB2aXNpdGluZyBpdFxuICogICAtIGBudW1iZXJgOiBXaGlsZSBpdGVyYXRpbmcgdGhlIGl0ZW1zIG9mIGEgc2VxdWVuY2Ugb3IgbWFwLCBzZXQgdGhlIGluZGV4XG4gKiAgICAgb2YgdGhlIG5leHQgc3RlcC4gVGhpcyBpcyB1c2VmdWwgZXNwZWNpYWxseSBpZiB0aGUgaW5kZXggb2YgdGhlIGN1cnJlbnRcbiAqICAgICBub2RlIGhhcyBjaGFuZ2VkLlxuICpcbiAqIElmIGB2aXNpdG9yYCBpcyBhIHNpbmdsZSBmdW5jdGlvbiwgaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBhbGwgdmFsdWVzXG4gKiBlbmNvdW50ZXJlZCBpbiB0aGUgdHJlZSwgaW5jbHVkaW5nIGUuZy4gYG51bGxgIHZhbHVlcy4gQWx0ZXJuYXRpdmVseSxcbiAqIHNlcGFyYXRlIHZpc2l0b3IgZnVuY3Rpb25zIG1heSBiZSBkZWZpbmVkIGZvciBlYWNoIGBNYXBgLCBgUGFpcmAsIGBTZXFgLFxuICogYEFsaWFzYCBhbmQgYFNjYWxhcmAgbm9kZS4gVG8gZGVmaW5lIHRoZSBzYW1lIHZpc2l0b3IgZnVuY3Rpb24gZm9yIG1vcmUgdGhhblxuICogb25lIG5vZGUgdHlwZSwgdXNlIHRoZSBgQ29sbGVjdGlvbmAgKG1hcCBhbmQgc2VxKSwgYFZhbHVlYCAobWFwLCBzZXEgJiBzY2FsYXIpXG4gKiBhbmQgYE5vZGVgIChhbGlhcywgbWFwLCBzZXEgJiBzY2FsYXIpIHRhcmdldHMuIE9mIGFsbCB0aGVzZSwgb25seSB0aGUgbW9zdFxuICogc3BlY2lmaWMgZGVmaW5lZCBvbmUgd2lsbCBiZSB1c2VkIGZvciBlYWNoIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIHZpc2l0KG5vZGUsIHZpc2l0b3IpIHtcbiAgICBpZiAodHlwZW9mIHZpc2l0b3IgPT09ICdvYmplY3QnICYmXG4gICAgICAgICh2aXNpdG9yLkNvbGxlY3Rpb24gfHwgdmlzaXRvci5Ob2RlIHx8IHZpc2l0b3IuVmFsdWUpKSB7XG4gICAgICAgIHZpc2l0b3IgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgICAgIEFsaWFzOiB2aXNpdG9yLk5vZGUsXG4gICAgICAgICAgICBNYXA6IHZpc2l0b3IuTm9kZSxcbiAgICAgICAgICAgIFNjYWxhcjogdmlzaXRvci5Ob2RlLFxuICAgICAgICAgICAgU2VxOiB2aXNpdG9yLk5vZGVcbiAgICAgICAgfSwgdmlzaXRvci5WYWx1ZSAmJiB7XG4gICAgICAgICAgICBNYXA6IHZpc2l0b3IuVmFsdWUsXG4gICAgICAgICAgICBTY2FsYXI6IHZpc2l0b3IuVmFsdWUsXG4gICAgICAgICAgICBTZXE6IHZpc2l0b3IuVmFsdWVcbiAgICAgICAgfSwgdmlzaXRvci5Db2xsZWN0aW9uICYmIHtcbiAgICAgICAgICAgIE1hcDogdmlzaXRvci5Db2xsZWN0aW9uLFxuICAgICAgICAgICAgU2VxOiB2aXNpdG9yLkNvbGxlY3Rpb25cbiAgICAgICAgfSwgdmlzaXRvcik7XG4gICAgfVxuICAgIGlmIChpc0RvY3VtZW50KG5vZGUpKSB7XG4gICAgICAgIGNvbnN0IGNkID0gX3Zpc2l0KG51bGwsIG5vZGUuY29udGVudHMsIHZpc2l0b3IsIE9iamVjdC5mcmVlemUoW25vZGVdKSk7XG4gICAgICAgIGlmIChjZCA9PT0gUkVNT1ZFKVxuICAgICAgICAgICAgbm9kZS5jb250ZW50cyA9IG51bGw7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgICAgX3Zpc2l0KG51bGwsIG5vZGUsIHZpc2l0b3IsIE9iamVjdC5mcmVlemUoW10pKTtcbn1cbi8vIFdpdGhvdXQgdGhlIGBhcyBzeW1ib2xgIGNhc3RzLCBUUyBkZWNsYXJlcyB0aGVzZSBpbiB0aGUgYHZpc2l0YFxuLy8gbmFtZXNwYWNlIHVzaW5nIGB2YXJgLCBidXQgdGhlbiBjb21wbGFpbnMgYWJvdXQgdGhhdCBiZWNhdXNlXG4vLyBgdW5pcXVlIHN5bWJvbGAgbXVzdCBiZSBgY29uc3RgLlxuLyoqIFRlcm1pbmF0ZSB2aXNpdCB0cmF2ZXJzYWwgY29tcGxldGVseSAqL1xudmlzaXQuQlJFQUsgPSBCUkVBSztcbi8qKiBEbyBub3QgdmlzaXQgdGhlIGNoaWxkcmVuIG9mIHRoZSBjdXJyZW50IG5vZGUgKi9cbnZpc2l0LlNLSVAgPSBTS0lQO1xuLyoqIFJlbW92ZSB0aGUgY3VycmVudCBub2RlICovXG52aXNpdC5SRU1PVkUgPSBSRU1PVkU7XG5mdW5jdGlvbiBfdmlzaXQoa2V5LCBub2RlLCB2aXNpdG9yLCBwYXRoKSB7XG4gICAgbGV0IGN0cmwgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHR5cGVvZiB2aXNpdG9yID09PSAnZnVuY3Rpb24nKVxuICAgICAgICBjdHJsID0gdmlzaXRvcihrZXksIG5vZGUsIHBhdGgpO1xuICAgIGVsc2UgaWYgKGlzTWFwKG5vZGUpKSB7XG4gICAgICAgIGlmICh2aXNpdG9yLk1hcClcbiAgICAgICAgICAgIGN0cmwgPSB2aXNpdG9yLk1hcChrZXksIG5vZGUsIHBhdGgpO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc1NlcShub2RlKSkge1xuICAgICAgICBpZiAodmlzaXRvci5TZXEpXG4gICAgICAgICAgICBjdHJsID0gdmlzaXRvci5TZXEoa2V5LCBub2RlLCBwYXRoKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNQYWlyKG5vZGUpKSB7XG4gICAgICAgIGlmICh2aXNpdG9yLlBhaXIpXG4gICAgICAgICAgICBjdHJsID0gdmlzaXRvci5QYWlyKGtleSwgbm9kZSwgcGF0aCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzU2NhbGFyKG5vZGUpKSB7XG4gICAgICAgIGlmICh2aXNpdG9yLlNjYWxhcilcbiAgICAgICAgICAgIGN0cmwgPSB2aXNpdG9yLlNjYWxhcihrZXksIG5vZGUsIHBhdGgpO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0FsaWFzKG5vZGUpKSB7XG4gICAgICAgIGlmICh2aXNpdG9yLkFsaWFzKVxuICAgICAgICAgICAgY3RybCA9IHZpc2l0b3IuQWxpYXMoa2V5LCBub2RlLCBwYXRoKTtcbiAgICB9XG4gICAgaWYgKGlzTm9kZShjdHJsKSB8fCBpc1BhaXIoY3RybCkpIHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAoaXNDb2xsZWN0aW9uKHBhcmVudCkpIHtcbiAgICAgICAgICAgIHBhcmVudC5pdGVtc1trZXldID0gY3RybDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc1BhaXIocGFyZW50KSkge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2tleScpXG4gICAgICAgICAgICAgICAgcGFyZW50LmtleSA9IGN0cmw7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcGFyZW50LnZhbHVlID0gY3RybDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0RvY3VtZW50KHBhcmVudCkpIHtcbiAgICAgICAgICAgIHBhcmVudC5jb250ZW50cyA9IGN0cmw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwdCA9IGlzQWxpYXMocGFyZW50KSA/ICdhbGlhcycgOiAnc2NhbGFyJztcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlcGxhY2Ugbm9kZSB3aXRoICR7cHR9IHBhcmVudGApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfdmlzaXQoa2V5LCBjdHJsLCB2aXNpdG9yLCBwYXRoKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjdHJsICE9PSAnc3ltYm9sJykge1xuICAgICAgICBpZiAoaXNDb2xsZWN0aW9uKG5vZGUpKSB7XG4gICAgICAgICAgICBwYXRoID0gT2JqZWN0LmZyZWV6ZShwYXRoLmNvbmNhdChub2RlKSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuaXRlbXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaSA9IF92aXNpdChpLCBub2RlLml0ZW1zW2ldLCB2aXNpdG9yLCBwYXRoKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNpID09PSAnbnVtYmVyJylcbiAgICAgICAgICAgICAgICAgICAgaSA9IGNpIC0gMTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaSA9PT0gQlJFQUspXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBCUkVBSztcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaSA9PT0gUkVNT1ZFKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuaXRlbXMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgICAgICBpIC09IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzUGFpcihub2RlKSkge1xuICAgICAgICAgICAgcGF0aCA9IE9iamVjdC5mcmVlemUocGF0aC5jb25jYXQobm9kZSkpO1xuICAgICAgICAgICAgY29uc3QgY2sgPSBfdmlzaXQoJ2tleScsIG5vZGUua2V5LCB2aXNpdG9yLCBwYXRoKTtcbiAgICAgICAgICAgIGlmIChjayA9PT0gQlJFQUspXG4gICAgICAgICAgICAgICAgcmV0dXJuIEJSRUFLO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2sgPT09IFJFTU9WRSlcbiAgICAgICAgICAgICAgICBub2RlLmtleSA9IG51bGw7XG4gICAgICAgICAgICBjb25zdCBjdiA9IF92aXNpdCgndmFsdWUnLCBub2RlLnZhbHVlLCB2aXNpdG9yLCBwYXRoKTtcbiAgICAgICAgICAgIGlmIChjdiA9PT0gQlJFQUspXG4gICAgICAgICAgICAgICAgcmV0dXJuIEJSRUFLO1xuICAgICAgICAgICAgZWxzZSBpZiAoY3YgPT09IFJFTU9WRSlcbiAgICAgICAgICAgICAgICBub2RlLnZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY3RybDtcbn1cblxuZXhwb3J0IHsgdmlzaXQgfTtcbiIsImltcG9ydCB7IGlzTm9kZSB9IGZyb20gJy4uL25vZGVzL05vZGUuanMnO1xuaW1wb3J0IHsgdmlzaXQgfSBmcm9tICcuLi92aXNpdC5qcyc7XG5cbmNvbnN0IGVzY2FwZUNoYXJzID0ge1xuICAgICchJzogJyUyMScsXG4gICAgJywnOiAnJTJDJyxcbiAgICAnWyc6ICclNUInLFxuICAgICddJzogJyU1RCcsXG4gICAgJ3snOiAnJTdCJyxcbiAgICAnfSc6ICclN0QnXG59O1xuY29uc3QgZXNjYXBlVGFnTmFtZSA9ICh0bikgPT4gdG4ucmVwbGFjZSgvWyEsW1xcXXt9XS9nLCBjaCA9PiBlc2NhcGVDaGFyc1tjaF0pO1xuY2xhc3MgRGlyZWN0aXZlcyB7XG4gICAgY29uc3RydWN0b3IoeWFtbCwgdGFncykge1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIGRpcmVjdGl2ZXMtZW5kL2RvYy1zdGFydCBtYXJrZXIgYC0tLWAuIElmIGBudWxsYCwgYSBtYXJrZXIgbWF5IHN0aWxsIGJlXG4gICAgICAgICAqIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudCdzIHN0cmluZ2lmaWVkIHJlcHJlc2VudGF0aW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5tYXJrZXIgPSBudWxsO1xuICAgICAgICB0aGlzLnlhbWwgPSBPYmplY3QuYXNzaWduKHt9LCBEaXJlY3RpdmVzLmRlZmF1bHRZYW1sLCB5YW1sKTtcbiAgICAgICAgdGhpcy50YWdzID0gT2JqZWN0LmFzc2lnbih7fSwgRGlyZWN0aXZlcy5kZWZhdWx0VGFncywgdGFncyk7XG4gICAgfVxuICAgIGNsb25lKCkge1xuICAgICAgICBjb25zdCBjb3B5ID0gbmV3IERpcmVjdGl2ZXModGhpcy55YW1sLCB0aGlzLnRhZ3MpO1xuICAgICAgICBjb3B5Lm1hcmtlciA9IHRoaXMubWFya2VyO1xuICAgICAgICByZXR1cm4gY29weTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRHVyaW5nIHBhcnNpbmcsIGdldCBhIERpcmVjdGl2ZXMgaW5zdGFuY2UgZm9yIHRoZSBjdXJyZW50IGRvY3VtZW50IGFuZFxuICAgICAqIHVwZGF0ZSB0aGUgc3RyZWFtIHN0YXRlIGFjY29yZGluZyB0byB0aGUgY3VycmVudCB2ZXJzaW9uJ3Mgc3BlYy5cbiAgICAgKi9cbiAgICBhdERvY3VtZW50KCkge1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgRGlyZWN0aXZlcyh0aGlzLnlhbWwsIHRoaXMudGFncyk7XG4gICAgICAgIHN3aXRjaCAodGhpcy55YW1sLnZlcnNpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJzEuMSc6XG4gICAgICAgICAgICAgICAgdGhpcy5hdE5leHREb2N1bWVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcxLjInOlxuICAgICAgICAgICAgICAgIHRoaXMuYXROZXh0RG9jdW1lbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnlhbWwgPSB7XG4gICAgICAgICAgICAgICAgICAgIGV4cGxpY2l0OiBEaXJlY3RpdmVzLmRlZmF1bHRZYW1sLmV4cGxpY2l0LFxuICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOiAnMS4yJ1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy50YWdzID0gT2JqZWN0LmFzc2lnbih7fSwgRGlyZWN0aXZlcy5kZWZhdWx0VGFncyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHBhcmFtIG9uRXJyb3IgLSBNYXkgYmUgY2FsbGVkIGV2ZW4gaWYgdGhlIGFjdGlvbiB3YXMgc3VjY2Vzc2Z1bFxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBvbiBzdWNjZXNzXG4gICAgICovXG4gICAgYWRkKGxpbmUsIG9uRXJyb3IpIHtcbiAgICAgICAgaWYgKHRoaXMuYXROZXh0RG9jdW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMueWFtbCA9IHsgZXhwbGljaXQ6IERpcmVjdGl2ZXMuZGVmYXVsdFlhbWwuZXhwbGljaXQsIHZlcnNpb246ICcxLjEnIH07XG4gICAgICAgICAgICB0aGlzLnRhZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBEaXJlY3RpdmVzLmRlZmF1bHRUYWdzKTtcbiAgICAgICAgICAgIHRoaXMuYXROZXh0RG9jdW1lbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJ0cyA9IGxpbmUudHJpbSgpLnNwbGl0KC9bIFxcdF0rLyk7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBwYXJ0cy5zaGlmdCgpO1xuICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgJyVUQUcnOiB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMikge1xuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKDAsICclVEFHIGRpcmVjdGl2ZSBzaG91bGQgY29udGFpbiBleGFjdGx5IHR3byBwYXJ0cycpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoIDwgMilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgW2hhbmRsZSwgcHJlZml4XSA9IHBhcnRzO1xuICAgICAgICAgICAgICAgIHRoaXMudGFnc1toYW5kbGVdID0gcHJlZml4O1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnJVlBTUwnOiB7XG4gICAgICAgICAgICAgICAgdGhpcy55YW1sLmV4cGxpY2l0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoIDwgMSkge1xuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKDAsICclWUFNTCBkaXJlY3RpdmUgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSBvbmUgcGFydCcpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IFt2ZXJzaW9uXSA9IHBhcnRzO1xuICAgICAgICAgICAgICAgIGlmICh2ZXJzaW9uID09PSAnMS4xJyB8fCB2ZXJzaW9uID09PSAnMS4yJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnlhbWwudmVyc2lvbiA9IHZlcnNpb247XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcig2LCBgVW5zdXBwb3J0ZWQgWUFNTCB2ZXJzaW9uICR7dmVyc2lvbn1gLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgb25FcnJvcigwLCBgVW5rbm93biBkaXJlY3RpdmUgJHtuYW1lfWAsIHRydWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXNvbHZlcyBhIHRhZywgbWF0Y2hpbmcgaGFuZGxlcyB0byB0aG9zZSBkZWZpbmVkIGluICVUQUcgZGlyZWN0aXZlcy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFJlc29sdmVkIHRhZywgd2hpY2ggbWF5IGFsc28gYmUgdGhlIG5vbi1zcGVjaWZpYyB0YWcgYCchJ2Agb3IgYVxuICAgICAqICAgYCchbG9jYWwnYCB0YWcsIG9yIGBudWxsYCBpZiB1bnJlc29sdmFibGUuXG4gICAgICovXG4gICAgdGFnTmFtZShzb3VyY2UsIG9uRXJyb3IpIHtcbiAgICAgICAgaWYgKHNvdXJjZSA9PT0gJyEnKVxuICAgICAgICAgICAgcmV0dXJuICchJzsgLy8gbm9uLXNwZWNpZmljIHRhZ1xuICAgICAgICBpZiAoc291cmNlWzBdICE9PSAnIScpIHtcbiAgICAgICAgICAgIG9uRXJyb3IoYE5vdCBhIHZhbGlkIHRhZzogJHtzb3VyY2V9YCk7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc291cmNlWzFdID09PSAnPCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHZlcmJhdGltID0gc291cmNlLnNsaWNlKDIsIC0xKTtcbiAgICAgICAgICAgIGlmICh2ZXJiYXRpbSA9PT0gJyEnIHx8IHZlcmJhdGltID09PSAnISEnKSB7XG4gICAgICAgICAgICAgICAgb25FcnJvcihgVmVyYmF0aW0gdGFncyBhcmVuJ3QgcmVzb2x2ZWQsIHNvICR7c291cmNlfSBpcyBpbnZhbGlkLmApO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNvdXJjZVtzb3VyY2UubGVuZ3RoIC0gMV0gIT09ICc+JylcbiAgICAgICAgICAgICAgICBvbkVycm9yKCdWZXJiYXRpbSB0YWdzIG11c3QgZW5kIHdpdGggYSA+Jyk7XG4gICAgICAgICAgICByZXR1cm4gdmVyYmF0aW07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgWywgaGFuZGxlLCBzdWZmaXhdID0gc291cmNlLm1hdGNoKC9eKC4qISkoW14hXSopJC8pO1xuICAgICAgICBpZiAoIXN1ZmZpeClcbiAgICAgICAgICAgIG9uRXJyb3IoYFRoZSAke3NvdXJjZX0gdGFnIGhhcyBubyBzdWZmaXhgKTtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gdGhpcy50YWdzW2hhbmRsZV07XG4gICAgICAgIGlmIChwcmVmaXgpXG4gICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgZGVjb2RlVVJJQ29tcG9uZW50KHN1ZmZpeCk7XG4gICAgICAgIGlmIChoYW5kbGUgPT09ICchJylcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2U7IC8vIGxvY2FsIHRhZ1xuICAgICAgICBvbkVycm9yKGBDb3VsZCBub3QgcmVzb2x2ZSB0YWc6ICR7c291cmNlfWApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2l2ZW4gYSBmdWxseSByZXNvbHZlZCB0YWcsIHJldHVybnMgaXRzIHByaW50YWJsZSBzdHJpbmcgZm9ybSxcbiAgICAgKiB0YWtpbmcgaW50byBhY2NvdW50IGN1cnJlbnQgdGFnIHByZWZpeGVzIGFuZCBkZWZhdWx0cy5cbiAgICAgKi9cbiAgICB0YWdTdHJpbmcodGFnKSB7XG4gICAgICAgIGZvciAoY29uc3QgW2hhbmRsZSwgcHJlZml4XSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnRhZ3MpKSB7XG4gICAgICAgICAgICBpZiAodGFnLnN0YXJ0c1dpdGgocHJlZml4KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlICsgZXNjYXBlVGFnTmFtZSh0YWcuc3Vic3RyaW5nKHByZWZpeC5sZW5ndGgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFnWzBdID09PSAnIScgPyB0YWcgOiBgITwke3RhZ30+YDtcbiAgICB9XG4gICAgdG9TdHJpbmcoZG9jKSB7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gdGhpcy55YW1sLmV4cGxpY2l0XG4gICAgICAgICAgICA/IFtgJVlBTUwgJHt0aGlzLnlhbWwudmVyc2lvbiB8fCAnMS4yJ31gXVxuICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgY29uc3QgdGFnRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMudGFncyk7XG4gICAgICAgIGxldCB0YWdOYW1lcztcbiAgICAgICAgaWYgKGRvYyAmJiB0YWdFbnRyaWVzLmxlbmd0aCA+IDAgJiYgaXNOb2RlKGRvYy5jb250ZW50cykpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSB7fTtcbiAgICAgICAgICAgIHZpc2l0KGRvYy5jb250ZW50cywgKF9rZXksIG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNOb2RlKG5vZGUpICYmIG5vZGUudGFnKVxuICAgICAgICAgICAgICAgICAgICB0YWdzW25vZGUudGFnXSA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRhZ05hbWVzID0gT2JqZWN0LmtleXModGFncyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGFnTmFtZXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBbaGFuZGxlLCBwcmVmaXhdIG9mIHRhZ0VudHJpZXMpIHtcbiAgICAgICAgICAgIGlmIChoYW5kbGUgPT09ICchIScgJiYgcHJlZml4ID09PSAndGFnOnlhbWwub3JnLDIwMDI6JylcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGlmICghZG9jIHx8IHRhZ05hbWVzLnNvbWUodG4gPT4gdG4uc3RhcnRzV2l0aChwcmVmaXgpKSlcbiAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAlVEFHICR7aGFuZGxlfSAke3ByZWZpeH1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG4gICAgfVxufVxuRGlyZWN0aXZlcy5kZWZhdWx0WWFtbCA9IHsgZXhwbGljaXQ6IGZhbHNlLCB2ZXJzaW9uOiAnMS4yJyB9O1xuRGlyZWN0aXZlcy5kZWZhdWx0VGFncyA9IHsgJyEhJzogJ3RhZzp5YW1sLm9yZywyMDAyOicgfTtcblxuZXhwb3J0IHsgRGlyZWN0aXZlcyB9O1xuIiwiaW1wb3J0IHsgaXNTY2FsYXIsIGlzQ29sbGVjdGlvbiB9IGZyb20gJy4uL25vZGVzL05vZGUuanMnO1xuaW1wb3J0IHsgdmlzaXQgfSBmcm9tICcuLi92aXNpdC5qcyc7XG5cbi8qKlxuICogVmVyaWZ5IHRoYXQgdGhlIGlucHV0IHN0cmluZyBpcyBhIHZhbGlkIGFuY2hvci5cbiAqXG4gKiBXaWxsIHRocm93IG9uIGVycm9ycy5cbiAqL1xuZnVuY3Rpb24gYW5jaG9ySXNWYWxpZChhbmNob3IpIHtcbiAgICBpZiAoL1tcXHgwMC1cXHgxOVxccyxbXFxde31dLy50ZXN0KGFuY2hvcikpIHtcbiAgICAgICAgY29uc3Qgc2EgPSBKU09OLnN0cmluZ2lmeShhbmNob3IpO1xuICAgICAgICBjb25zdCBtc2cgPSBgQW5jaG9yIG11c3Qgbm90IGNvbnRhaW4gd2hpdGVzcGFjZSBvciBjb250cm9sIGNoYXJhY3RlcnM6ICR7c2F9YDtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gYW5jaG9yTmFtZXMocm9vdCkge1xuICAgIGNvbnN0IGFuY2hvcnMgPSBuZXcgU2V0KCk7XG4gICAgdmlzaXQocm9vdCwge1xuICAgICAgICBWYWx1ZShfa2V5LCBub2RlKSB7XG4gICAgICAgICAgICBpZiAobm9kZS5hbmNob3IpXG4gICAgICAgICAgICAgICAgYW5jaG9ycy5hZGQobm9kZS5hbmNob3IpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGFuY2hvcnM7XG59XG4vKiogRmluZCBhIG5ldyBhbmNob3IgbmFtZSB3aXRoIHRoZSBnaXZlbiBgcHJlZml4YCBhbmQgYSBvbmUtaW5kZXhlZCBzdWZmaXguICovXG5mdW5jdGlvbiBmaW5kTmV3QW5jaG9yKHByZWZpeCwgZXhjbHVkZSkge1xuICAgIGZvciAobGV0IGkgPSAxOyB0cnVlOyArK2kpIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IGAke3ByZWZpeH0ke2l9YDtcbiAgICAgICAgaWYgKCFleGNsdWRlLmhhcyhuYW1lKSlcbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZU5vZGVBbmNob3JzKGRvYywgcHJlZml4KSB7XG4gICAgY29uc3QgYWxpYXNPYmplY3RzID0gW107XG4gICAgY29uc3Qgc291cmNlT2JqZWN0cyA9IG5ldyBNYXAoKTtcbiAgICBsZXQgcHJldkFuY2hvcnMgPSBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIG9uQW5jaG9yKHNvdXJjZSkge1xuICAgICAgICAgICAgYWxpYXNPYmplY3RzLnB1c2goc291cmNlKTtcbiAgICAgICAgICAgIGlmICghcHJldkFuY2hvcnMpXG4gICAgICAgICAgICAgICAgcHJldkFuY2hvcnMgPSBhbmNob3JOYW1lcyhkb2MpO1xuICAgICAgICAgICAgY29uc3QgYW5jaG9yID0gZmluZE5ld0FuY2hvcihwcmVmaXgsIHByZXZBbmNob3JzKTtcbiAgICAgICAgICAgIHByZXZBbmNob3JzLmFkZChhbmNob3IpO1xuICAgICAgICAgICAgcmV0dXJuIGFuY2hvcjtcbiAgICAgICAgfSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdpdGggY2lyY3VsYXIgcmVmZXJlbmNlcywgdGhlIHNvdXJjZSBub2RlIGlzIG9ubHkgcmVzb2x2ZWQgYWZ0ZXIgYWxsXG4gICAgICAgICAqIG9mIGl0cyBjaGlsZCBub2RlcyBhcmUuIFRoaXMgaXMgd2h5IGFuY2hvcnMgYXJlIHNldCBvbmx5IGFmdGVyIGFsbCBvZlxuICAgICAgICAgKiB0aGUgbm9kZXMgaGF2ZSBiZWVuIGNyZWF0ZWQuXG4gICAgICAgICAqL1xuICAgICAgICBzZXRBbmNob3JzKCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzb3VyY2Ugb2YgYWxpYXNPYmplY3RzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVmID0gc291cmNlT2JqZWN0cy5nZXQoc291cmNlKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgcmVmLmFuY2hvciAmJlxuICAgICAgICAgICAgICAgICAgICAoaXNTY2FsYXIocmVmLm5vZGUpIHx8IGlzQ29sbGVjdGlvbihyZWYubm9kZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZi5ub2RlLmFuY2hvciA9IHJlZi5hbmNob3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignRmFpbGVkIHRvIHJlc29sdmUgcmVwZWF0ZWQgb2JqZWN0ICh0aGlzIHNob3VsZCBub3QgaGFwcGVuKScpO1xuICAgICAgICAgICAgICAgICAgICBlcnJvci5zb3VyY2UgPSBzb3VyY2U7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlT2JqZWN0c1xuICAgIH07XG59XG5cbmV4cG9ydCB7IGFuY2hvcklzVmFsaWQsIGFuY2hvck5hbWVzLCBjcmVhdGVOb2RlQW5jaG9ycywgZmluZE5ld0FuY2hvciB9O1xuIiwiaW1wb3J0IHsgYW5jaG9ySXNWYWxpZCB9IGZyb20gJy4uL2RvYy9hbmNob3JzLmpzJztcbmltcG9ydCB7IHZpc2l0IH0gZnJvbSAnLi4vdmlzaXQuanMnO1xuaW1wb3J0IHsgTm9kZUJhc2UsIEFMSUFTLCBpc0FsaWFzLCBpc0NvbGxlY3Rpb24sIGlzUGFpciB9IGZyb20gJy4vTm9kZS5qcyc7XG5cbmNsYXNzIEFsaWFzIGV4dGVuZHMgTm9kZUJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKHNvdXJjZSkge1xuICAgICAgICBzdXBlcihBTElBUyk7XG4gICAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3RhZycsIHtcbiAgICAgICAgICAgIHNldCgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FsaWFzIG5vZGVzIGNhbm5vdCBoYXZlIHRhZ3MnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlc29sdmUgdGhlIHZhbHVlIG9mIHRoaXMgYWxpYXMgd2l0aGluIGBkb2NgLCBmaW5kaW5nIHRoZSBsYXN0XG4gICAgICogaW5zdGFuY2Ugb2YgdGhlIGBzb3VyY2VgIGFuY2hvciBiZWZvcmUgdGhpcyBub2RlLlxuICAgICAqL1xuICAgIHJlc29sdmUoZG9jKSB7XG4gICAgICAgIGxldCBmb3VuZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdmlzaXQoZG9jLCB7XG4gICAgICAgICAgICBOb2RlOiAoX2tleSwgbm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChub2RlID09PSB0aGlzKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXQuQlJFQUs7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUuYW5jaG9yID09PSB0aGlzLnNvdXJjZSlcbiAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBub2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgIH1cbiAgICB0b0pTT04oX2FyZywgY3R4KSB7XG4gICAgICAgIGlmICghY3R4KVxuICAgICAgICAgICAgcmV0dXJuIHsgc291cmNlOiB0aGlzLnNvdXJjZSB9O1xuICAgICAgICBjb25zdCB7IGFuY2hvcnMsIGRvYywgbWF4QWxpYXNDb3VudCB9ID0gY3R4O1xuICAgICAgICBjb25zdCBzb3VyY2UgPSB0aGlzLnJlc29sdmUoZG9jKTtcbiAgICAgICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGBVbnJlc29sdmVkIGFsaWFzICh0aGUgYW5jaG9yIG11c3QgYmUgc2V0IGJlZm9yZSB0aGUgYWxpYXMpOiAke3RoaXMuc291cmNlfWA7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IobXNnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhID0gYW5jaG9ycy5nZXQoc291cmNlKTtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgIGlmICghZGF0YSB8fCBkYXRhLnJlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSAnVGhpcyBzaG91bGQgbm90IGhhcHBlbjogQWxpYXMgYW5jaG9yIHdhcyBub3QgcmVzb2x2ZWQ/JztcbiAgICAgICAgICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihtc2cpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtYXhBbGlhc0NvdW50ID49IDApIHtcbiAgICAgICAgICAgIGRhdGEuY291bnQgKz0gMTtcbiAgICAgICAgICAgIGlmIChkYXRhLmFsaWFzQ291bnQgPT09IDApXG4gICAgICAgICAgICAgICAgZGF0YS5hbGlhc0NvdW50ID0gZ2V0QWxpYXNDb3VudChkb2MsIHNvdXJjZSwgYW5jaG9ycyk7XG4gICAgICAgICAgICBpZiAoZGF0YS5jb3VudCAqIGRhdGEuYWxpYXNDb3VudCA+IG1heEFsaWFzQ291bnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtc2cgPSAnRXhjZXNzaXZlIGFsaWFzIGNvdW50IGluZGljYXRlcyBhIHJlc291cmNlIGV4aGF1c3Rpb24gYXR0YWNrJztcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IobXNnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0YS5yZXM7XG4gICAgfVxuICAgIHRvU3RyaW5nKGN0eCwgX29uQ29tbWVudCwgX29uQ2hvbXBLZWVwKSB7XG4gICAgICAgIGNvbnN0IHNyYyA9IGAqJHt0aGlzLnNvdXJjZX1gO1xuICAgICAgICBpZiAoY3R4KSB7XG4gICAgICAgICAgICBhbmNob3JJc1ZhbGlkKHRoaXMuc291cmNlKTtcbiAgICAgICAgICAgIGlmIChjdHgub3B0aW9ucy52ZXJpZnlBbGlhc09yZGVyICYmICFjdHguYW5jaG9ycy5oYXModGhpcy5zb3VyY2UpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbXNnID0gYFVucmVzb2x2ZWQgYWxpYXMgKHRoZSBhbmNob3IgbXVzdCBiZSBzZXQgYmVmb3JlIHRoZSBhbGlhcyk6ICR7dGhpcy5zb3VyY2V9YDtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjdHguaW1wbGljaXRLZXkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3NyY30gYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3JjO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGdldEFsaWFzQ291bnQoZG9jLCBub2RlLCBhbmNob3JzKSB7XG4gICAgaWYgKGlzQWxpYXMobm9kZSkpIHtcbiAgICAgICAgY29uc3Qgc291cmNlID0gbm9kZS5yZXNvbHZlKGRvYyk7XG4gICAgICAgIGNvbnN0IGFuY2hvciA9IGFuY2hvcnMgJiYgc291cmNlICYmIGFuY2hvcnMuZ2V0KHNvdXJjZSk7XG4gICAgICAgIHJldHVybiBhbmNob3IgPyBhbmNob3IuY291bnQgKiBhbmNob3IuYWxpYXNDb3VudCA6IDA7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzQ29sbGVjdGlvbihub2RlKSkge1xuICAgICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygbm9kZS5pdGVtcykge1xuICAgICAgICAgICAgY29uc3QgYyA9IGdldEFsaWFzQ291bnQoZG9jLCBpdGVtLCBhbmNob3JzKTtcbiAgICAgICAgICAgIGlmIChjID4gY291bnQpXG4gICAgICAgICAgICAgICAgY291bnQgPSBjO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb3VudDtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNQYWlyKG5vZGUpKSB7XG4gICAgICAgIGNvbnN0IGtjID0gZ2V0QWxpYXNDb3VudChkb2MsIG5vZGUua2V5LCBhbmNob3JzKTtcbiAgICAgICAgY29uc3QgdmMgPSBnZXRBbGlhc0NvdW50KGRvYywgbm9kZS52YWx1ZSwgYW5jaG9ycyk7XG4gICAgICAgIHJldHVybiBNYXRoLm1heChrYywgdmMpO1xuICAgIH1cbiAgICByZXR1cm4gMTtcbn1cblxuZXhwb3J0IHsgQWxpYXMgfTtcbiIsImltcG9ydCB7IGhhc0FuY2hvciB9IGZyb20gJy4vTm9kZS5qcyc7XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgY29udmVydCBhbnkgbm9kZSBvciBpdHMgY29udGVudHMgdG8gbmF0aXZlIEphdmFTY3JpcHRcbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgaW5wdXQgdmFsdWVcbiAqIEBwYXJhbSBhcmcgLSBJZiBgdmFsdWVgIGRlZmluZXMgYSBgdG9KU09OKClgIG1ldGhvZCwgdXNlIHRoaXNcbiAqICAgYXMgaXRzIGZpcnN0IGFyZ3VtZW50XG4gKiBAcGFyYW0gY3R4IC0gQ29udmVyc2lvbiBjb250ZXh0LCBvcmlnaW5hbGx5IHNldCBpbiBEb2N1bWVudCN0b0pTKCkuIElmXG4gKiAgIGB7IGtlZXA6IHRydWUgfWAgaXMgbm90IHNldCwgb3V0cHV0IHNob3VsZCBiZSBzdWl0YWJsZSBmb3IgSlNPTlxuICogICBzdHJpbmdpZmljYXRpb24uXG4gKi9cbmZ1bmN0aW9uIHRvSlModmFsdWUsIGFyZywgY3R4KSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKVxuICAgICAgICByZXR1cm4gdmFsdWUubWFwKCh2LCBpKSA9PiB0b0pTKHYsIFN0cmluZyhpKSwgY3R4KSk7XG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZS50b0pTT04gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgaWYgKCFjdHggfHwgIWhhc0FuY2hvcih2YWx1ZSkpXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUudG9KU09OKGFyZywgY3R4KTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHsgYWxpYXNDb3VudDogMCwgY291bnQ6IDEsIHJlczogdW5kZWZpbmVkIH07XG4gICAgICAgIGN0eC5hbmNob3JzLnNldCh2YWx1ZSwgZGF0YSk7XG4gICAgICAgIGN0eC5vbkNyZWF0ZSA9IHJlcyA9PiB7XG4gICAgICAgICAgICBkYXRhLnJlcyA9IHJlcztcbiAgICAgICAgICAgIGRlbGV0ZSBjdHgub25DcmVhdGU7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHJlcyA9IHZhbHVlLnRvSlNPTihhcmcsIGN0eCk7XG4gICAgICAgIGlmIChjdHgub25DcmVhdGUpXG4gICAgICAgICAgICBjdHgub25DcmVhdGUocmVzKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2JpZ2ludCcgJiYgIShjdHggJiYgY3R4LmtlZXApKVxuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbHVlKTtcbiAgICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCB7IHRvSlMgfTtcbiIsImltcG9ydCB7IE5vZGVCYXNlLCBTQ0FMQVIgfSBmcm9tICcuL05vZGUuanMnO1xuaW1wb3J0IHsgdG9KUyB9IGZyb20gJy4vdG9KUy5qcyc7XG5cbmNvbnN0IGlzU2NhbGFyVmFsdWUgPSAodmFsdWUpID0+ICF2YWx1ZSB8fCAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpO1xuY2xhc3MgU2NhbGFyIGV4dGVuZHMgTm9kZUJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKHZhbHVlKSB7XG4gICAgICAgIHN1cGVyKFNDQUxBUik7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgdG9KU09OKGFyZywgY3R4KSB7XG4gICAgICAgIHJldHVybiBjdHggJiYgY3R4LmtlZXAgPyB0aGlzLnZhbHVlIDogdG9KUyh0aGlzLnZhbHVlLCBhcmcsIGN0eCk7XG4gICAgfVxuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHRoaXMudmFsdWUpO1xuICAgIH1cbn1cblNjYWxhci5CTE9DS19GT0xERUQgPSAnQkxPQ0tfRk9MREVEJztcblNjYWxhci5CTE9DS19MSVRFUkFMID0gJ0JMT0NLX0xJVEVSQUwnO1xuU2NhbGFyLlBMQUlOID0gJ1BMQUlOJztcblNjYWxhci5RVU9URV9ET1VCTEUgPSAnUVVPVEVfRE9VQkxFJztcblNjYWxhci5RVU9URV9TSU5HTEUgPSAnUVVPVEVfU0lOR0xFJztcblxuZXhwb3J0IHsgU2NhbGFyLCBpc1NjYWxhclZhbHVlIH07XG4iLCJpbXBvcnQgeyBBbGlhcyB9IGZyb20gJy4uL25vZGVzL0FsaWFzLmpzJztcbmltcG9ydCB7IGlzTm9kZSwgaXNQYWlyLCBNQVAsIFNFUSwgaXNEb2N1bWVudCB9IGZyb20gJy4uL25vZGVzL05vZGUuanMnO1xuaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi4vbm9kZXMvU2NhbGFyLmpzJztcblxuY29uc3QgZGVmYXVsdFRhZ1ByZWZpeCA9ICd0YWc6eWFtbC5vcmcsMjAwMjonO1xuZnVuY3Rpb24gZmluZFRhZ09iamVjdCh2YWx1ZSwgdGFnTmFtZSwgdGFncykge1xuICAgIGlmICh0YWdOYW1lKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gdGFncy5maWx0ZXIodCA9PiB0LnRhZyA9PT0gdGFnTmFtZSk7XG4gICAgICAgIGNvbnN0IHRhZ09iaiA9IG1hdGNoLmZpbmQodCA9PiAhdC5mb3JtYXQpIHx8IG1hdGNoWzBdO1xuICAgICAgICBpZiAoIXRhZ09iailcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGFnICR7dGFnTmFtZX0gbm90IGZvdW5kYCk7XG4gICAgICAgIHJldHVybiB0YWdPYmo7XG4gICAgfVxuICAgIHJldHVybiB0YWdzLmZpbmQodCA9PiB0LmlkZW50aWZ5ICYmIHQuaWRlbnRpZnkodmFsdWUpICYmICF0LmZvcm1hdCk7XG59XG5mdW5jdGlvbiBjcmVhdGVOb2RlKHZhbHVlLCB0YWdOYW1lLCBjdHgpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGlmIChpc0RvY3VtZW50KHZhbHVlKSlcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5jb250ZW50cztcbiAgICBpZiAoaXNOb2RlKHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIGlmIChpc1BhaXIodmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IG1hcCA9IChfYiA9IChfYSA9IGN0eC5zY2hlbWFbTUFQXSkuY3JlYXRlTm9kZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIGN0eC5zY2hlbWEsIG51bGwsIGN0eCk7XG4gICAgICAgIG1hcC5pdGVtcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICB9XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgU3RyaW5nIHx8XG4gICAgICAgIHZhbHVlIGluc3RhbmNlb2YgTnVtYmVyIHx8XG4gICAgICAgIHZhbHVlIGluc3RhbmNlb2YgQm9vbGVhbiB8fFxuICAgICAgICAodHlwZW9mIEJpZ0ludCA9PT0gJ2Z1bmN0aW9uJyAmJiB2YWx1ZSBpbnN0YW5jZW9mIEJpZ0ludCkgLy8gbm90IHN1cHBvcnRlZCBldmVyeXdoZXJlXG4gICAgKSB7XG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc2VyaWFsaXplanNvbnByb3BlcnR5XG4gICAgICAgIHZhbHVlID0gdmFsdWUudmFsdWVPZigpO1xuICAgIH1cbiAgICBjb25zdCB7IGFsaWFzRHVwbGljYXRlT2JqZWN0cywgb25BbmNob3IsIG9uVGFnT2JqLCBzY2hlbWEsIHNvdXJjZU9iamVjdHMgfSA9IGN0eDtcbiAgICAvLyBEZXRlY3QgZHVwbGljYXRlIHJlZmVyZW5jZXMgdG8gdGhlIHNhbWUgb2JqZWN0ICYgdXNlIEFsaWFzIG5vZGVzIGZvciBhbGxcbiAgICAvLyBhZnRlciBmaXJzdC4gVGhlIGByZWZgIHdyYXBwZXIgYWxsb3dzIGZvciBjaXJjdWxhciByZWZlcmVuY2VzIHRvIHJlc29sdmUuXG4gICAgbGV0IHJlZiA9IHVuZGVmaW5lZDtcbiAgICBpZiAoYWxpYXNEdXBsaWNhdGVPYmplY3RzICYmIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmVmID0gc291cmNlT2JqZWN0cy5nZXQodmFsdWUpO1xuICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICBpZiAoIXJlZi5hbmNob3IpXG4gICAgICAgICAgICAgICAgcmVmLmFuY2hvciA9IG9uQW5jaG9yKHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWxpYXMocmVmLmFuY2hvcik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZWYgPSB7IGFuY2hvcjogbnVsbCwgbm9kZTogbnVsbCB9O1xuICAgICAgICAgICAgc291cmNlT2JqZWN0cy5zZXQodmFsdWUsIHJlZik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRhZ05hbWUgJiYgdGFnTmFtZS5zdGFydHNXaXRoKCchIScpKVxuICAgICAgICB0YWdOYW1lID0gZGVmYXVsdFRhZ1ByZWZpeCArIHRhZ05hbWUuc2xpY2UoMik7XG4gICAgbGV0IHRhZ09iaiA9IGZpbmRUYWdPYmplY3QodmFsdWUsIHRhZ05hbWUsIHNjaGVtYS50YWdzKTtcbiAgICBpZiAoIXRhZ09iaikge1xuICAgICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlLnRvSlNPTiA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudG9KU09OKCk7XG4gICAgICAgIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IG5ldyBTY2FsYXIodmFsdWUpO1xuICAgICAgICAgICAgaWYgKHJlZilcbiAgICAgICAgICAgICAgICByZWYubm9kZSA9IG5vZGU7XG4gICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgfVxuICAgICAgICB0YWdPYmogPVxuICAgICAgICAgICAgdmFsdWUgaW5zdGFuY2VvZiBNYXBcbiAgICAgICAgICAgICAgICA/IHNjaGVtYVtNQVBdXG4gICAgICAgICAgICAgICAgOiBTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICA/IHNjaGVtYVtTRVFdXG4gICAgICAgICAgICAgICAgICAgIDogc2NoZW1hW01BUF07XG4gICAgfVxuICAgIGlmIChvblRhZ09iaikge1xuICAgICAgICBvblRhZ09iaih0YWdPYmopO1xuICAgICAgICBkZWxldGUgY3R4Lm9uVGFnT2JqO1xuICAgIH1cbiAgICBjb25zdCBub2RlID0gKHRhZ09iaiA9PT0gbnVsbCB8fCB0YWdPYmogPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhZ09iai5jcmVhdGVOb2RlKVxuICAgICAgICA/IHRhZ09iai5jcmVhdGVOb2RlKGN0eC5zY2hlbWEsIHZhbHVlLCBjdHgpXG4gICAgICAgIDogbmV3IFNjYWxhcih2YWx1ZSk7XG4gICAgaWYgKHRhZ05hbWUpXG4gICAgICAgIG5vZGUudGFnID0gdGFnTmFtZTtcbiAgICBpZiAocmVmKVxuICAgICAgICByZWYubm9kZSA9IG5vZGU7XG4gICAgcmV0dXJuIG5vZGU7XG59XG5cbmV4cG9ydCB7IGNyZWF0ZU5vZGUgfTtcbiIsImltcG9ydCB7IGNyZWF0ZU5vZGUgfSBmcm9tICcuLi9kb2MvY3JlYXRlTm9kZS5qcyc7XG5pbXBvcnQgeyBOb2RlQmFzZSwgaXNOb2RlLCBpc1BhaXIsIGlzQ29sbGVjdGlvbiwgaXNTY2FsYXIgfSBmcm9tICcuL05vZGUuanMnO1xuXG5mdW5jdGlvbiBjb2xsZWN0aW9uRnJvbVBhdGgoc2NoZW1hLCBwYXRoLCB2YWx1ZSkge1xuICAgIGxldCB2ID0gdmFsdWU7XG4gICAgZm9yIChsZXQgaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgY29uc3QgayA9IHBhdGhbaV07XG4gICAgICAgIGlmICh0eXBlb2YgayA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzSW50ZWdlcihrKSAmJiBrID49IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGEgPSBbXTtcbiAgICAgICAgICAgIGFba10gPSB2O1xuICAgICAgICAgICAgdiA9IGE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2ID0gbmV3IE1hcChbW2ssIHZdXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZU5vZGUodiwgdW5kZWZpbmVkLCB7XG4gICAgICAgIGFsaWFzRHVwbGljYXRlT2JqZWN0czogZmFsc2UsXG4gICAgICAgIGtlZXBVbmRlZmluZWQ6IGZhbHNlLFxuICAgICAgICBvbkFuY2hvcjogKCkgPT4ge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBwbGVhc2UgcmVwb3J0IGEgYnVnLicpO1xuICAgICAgICB9LFxuICAgICAgICBzY2hlbWEsXG4gICAgICAgIHNvdXJjZU9iamVjdHM6IG5ldyBNYXAoKVxuICAgIH0pO1xufVxuLy8gbnVsbCwgdW5kZWZpbmVkLCBvciBhbiBlbXB0eSBub24tc3RyaW5nIGl0ZXJhYmxlIChlLmcuIFtdKVxuY29uc3QgaXNFbXB0eVBhdGggPSAocGF0aCkgPT4gcGF0aCA9PSBudWxsIHx8XG4gICAgKHR5cGVvZiBwYXRoID09PSAnb2JqZWN0JyAmJiAhIXBhdGhbU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQoKS5kb25lKTtcbmNsYXNzIENvbGxlY3Rpb24gZXh0ZW5kcyBOb2RlQmFzZSB7XG4gICAgY29uc3RydWN0b3IodHlwZSwgc2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKHR5cGUpO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3NjaGVtYScsIHtcbiAgICAgICAgICAgIHZhbHVlOiBzY2hlbWEsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBjb3B5IG9mIHRoaXMgY29sbGVjdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzY2hlbWEgLSBJZiBkZWZpbmVkLCBvdmVyd3JpdGVzIHRoZSBvcmlnaW5hbCdzIHNjaGVtYVxuICAgICAqL1xuICAgIGNsb25lKHNjaGVtYSkge1xuICAgICAgICBjb25zdCBjb3B5ID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHRoaXMpKTtcbiAgICAgICAgaWYgKHNjaGVtYSlcbiAgICAgICAgICAgIGNvcHkuc2NoZW1hID0gc2NoZW1hO1xuICAgICAgICBjb3B5Lml0ZW1zID0gY29weS5pdGVtcy5tYXAoaXQgPT4gaXNOb2RlKGl0KSB8fCBpc1BhaXIoaXQpID8gaXQuY2xvbmUoc2NoZW1hKSA6IGl0KTtcbiAgICAgICAgaWYgKHRoaXMucmFuZ2UpXG4gICAgICAgICAgICBjb3B5LnJhbmdlID0gdGhpcy5yYW5nZS5zbGljZSgpO1xuICAgICAgICByZXR1cm4gY29weTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQWRkcyBhIHZhbHVlIHRvIHRoZSBjb2xsZWN0aW9uLiBGb3IgYCEhbWFwYCBhbmQgYCEhb21hcGAgdGhlIHZhbHVlIG11c3RcbiAgICAgKiBiZSBhIFBhaXIgaW5zdGFuY2Ugb3IgYSBgeyBrZXksIHZhbHVlIH1gIG9iamVjdCwgd2hpY2ggbWF5IG5vdCBoYXZlIGEga2V5XG4gICAgICogdGhhdCBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgbWFwLlxuICAgICAqL1xuICAgIGFkZEluKHBhdGgsIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc0VtcHR5UGF0aChwYXRoKSlcbiAgICAgICAgICAgIHRoaXMuYWRkKHZhbHVlKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBba2V5LCAuLi5yZXN0XSA9IHBhdGg7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy5nZXQoa2V5LCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChpc0NvbGxlY3Rpb24obm9kZSkpXG4gICAgICAgICAgICAgICAgbm9kZS5hZGRJbihyZXN0LCB2YWx1ZSk7XG4gICAgICAgICAgICBlbHNlIGlmIChub2RlID09PSB1bmRlZmluZWQgJiYgdGhpcy5zY2hlbWEpXG4gICAgICAgICAgICAgICAgdGhpcy5zZXQoa2V5LCBjb2xsZWN0aW9uRnJvbVBhdGgodGhpcy5zY2hlbWEsIHJlc3QsIHZhbHVlKSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBZQU1MIGNvbGxlY3Rpb24gYXQgJHtrZXl9LiBSZW1haW5pbmcgcGF0aDogJHtyZXN0fWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYSB2YWx1ZSBmcm9tIHRoZSBjb2xsZWN0aW9uLlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgaXRlbSB3YXMgZm91bmQgYW5kIHJlbW92ZWQuXG4gICAgICovXG4gICAgZGVsZXRlSW4ocGF0aCkge1xuICAgICAgICBjb25zdCBba2V5LCAuLi5yZXN0XSA9IHBhdGg7XG4gICAgICAgIGlmIChyZXN0Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlbGV0ZShrZXkpO1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5nZXQoa2V5LCB0cnVlKTtcbiAgICAgICAgaWYgKGlzQ29sbGVjdGlvbihub2RlKSlcbiAgICAgICAgICAgIHJldHVybiBub2RlLmRlbGV0ZUluKHJlc3QpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIFlBTUwgY29sbGVjdGlvbiBhdCAke2tleX0uIFJlbWFpbmluZyBwYXRoOiAke3Jlc3R9YCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaXRlbSBhdCBga2V5YCwgb3IgYHVuZGVmaW5lZGAgaWYgbm90IGZvdW5kLiBCeSBkZWZhdWx0IHVud3JhcHNcbiAgICAgKiBzY2FsYXIgdmFsdWVzIGZyb20gdGhlaXIgc3Vycm91bmRpbmcgbm9kZTsgdG8gZGlzYWJsZSBzZXQgYGtlZXBTY2FsYXJgIHRvXG4gICAgICogYHRydWVgIChjb2xsZWN0aW9ucyBhcmUgYWx3YXlzIHJldHVybmVkIGludGFjdCkuXG4gICAgICovXG4gICAgZ2V0SW4ocGF0aCwga2VlcFNjYWxhcikge1xuICAgICAgICBjb25zdCBba2V5LCAuLi5yZXN0XSA9IHBhdGg7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldChrZXksIHRydWUpO1xuICAgICAgICBpZiAocmVzdC5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm4gIWtlZXBTY2FsYXIgJiYgaXNTY2FsYXIobm9kZSkgPyBub2RlLnZhbHVlIDogbm9kZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIGlzQ29sbGVjdGlvbihub2RlKSA/IG5vZGUuZ2V0SW4ocmVzdCwga2VlcFNjYWxhcikgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGhhc0FsbE51bGxWYWx1ZXMoYWxsb3dTY2FsYXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXMuZXZlcnkobm9kZSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzUGFpcihub2RlKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBuID0gbm9kZS52YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiAobiA9PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgKGFsbG93U2NhbGFyICYmXG4gICAgICAgICAgICAgICAgICAgIGlzU2NhbGFyKG4pICYmXG4gICAgICAgICAgICAgICAgICAgIG4udmFsdWUgPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgICAhbi5jb21tZW50QmVmb3JlICYmXG4gICAgICAgICAgICAgICAgICAgICFuLmNvbW1lbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgIW4udGFnKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGNvbGxlY3Rpb24gaW5jbHVkZXMgYSB2YWx1ZSB3aXRoIHRoZSBrZXkgYGtleWAuXG4gICAgICovXG4gICAgaGFzSW4ocGF0aCkge1xuICAgICAgICBjb25zdCBba2V5LCAuLi5yZXN0XSA9IHBhdGg7XG4gICAgICAgIGlmIChyZXN0Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhhcyhrZXkpO1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5nZXQoa2V5LCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIGlzQ29sbGVjdGlvbihub2RlKSA/IG5vZGUuaGFzSW4ocmVzdCkgOiBmYWxzZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyBhIHZhbHVlIGluIHRoaXMgY29sbGVjdGlvbi4gRm9yIGAhIXNldGAsIGB2YWx1ZWAgbmVlZHMgdG8gYmUgYVxuICAgICAqIGJvb2xlYW4gdG8gYWRkL3JlbW92ZSB0aGUgaXRlbSBmcm9tIHRoZSBzZXQuXG4gICAgICovXG4gICAgc2V0SW4ocGF0aCwgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgW2tleSwgLi4ucmVzdF0gPSBwYXRoO1xuICAgICAgICBpZiAocmVzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0KGtleSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAoaXNDb2xsZWN0aW9uKG5vZGUpKVxuICAgICAgICAgICAgICAgIG5vZGUuc2V0SW4ocmVzdCwgdmFsdWUpO1xuICAgICAgICAgICAgZWxzZSBpZiAobm9kZSA9PT0gdW5kZWZpbmVkICYmIHRoaXMuc2NoZW1hKVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0KGtleSwgY29sbGVjdGlvbkZyb21QYXRoKHRoaXMuc2NoZW1hLCByZXN0LCB2YWx1ZSkpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgWUFNTCBjb2xsZWN0aW9uIGF0ICR7a2V5fS4gUmVtYWluaW5nIHBhdGg6ICR7cmVzdH1gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbkNvbGxlY3Rpb24ubWF4Rmxvd1N0cmluZ1NpbmdsZUxpbmVMZW5ndGggPSA2MDtcblxuZXhwb3J0IHsgQ29sbGVjdGlvbiwgY29sbGVjdGlvbkZyb21QYXRoLCBpc0VtcHR5UGF0aCB9O1xuIiwiLyoqXG4gKiBTdHJpbmdpZmllcyBhIGNvbW1lbnQuXG4gKlxuICogRW1wdHkgY29tbWVudCBsaW5lcyBhcmUgbGVmdCBlbXB0eSxcbiAqIGxpbmVzIGNvbnNpc3Rpbmcgb2YgYSBzaW5nbGUgc3BhY2UgYXJlIHJlcGxhY2VkIGJ5IGAjYCxcbiAqIGFuZCBhbGwgb3RoZXIgbGluZXMgYXJlIHByZWZpeGVkIHdpdGggYSBgI2AuXG4gKi9cbmNvbnN0IHN0cmluZ2lmeUNvbW1lbnQgPSAoc3RyKSA9PiBzdHIucmVwbGFjZSgvXig/ISQpKD86ICQpPy9nbSwgJyMnKTtcbmZ1bmN0aW9uIGluZGVudENvbW1lbnQoY29tbWVudCwgaW5kZW50KSB7XG4gICAgaWYgKC9eXFxuKyQvLnRlc3QoY29tbWVudCkpXG4gICAgICAgIHJldHVybiBjb21tZW50LnN1YnN0cmluZygxKTtcbiAgICByZXR1cm4gaW5kZW50ID8gY29tbWVudC5yZXBsYWNlKC9eKD8hICokKS9nbSwgaW5kZW50KSA6IGNvbW1lbnQ7XG59XG5jb25zdCBsaW5lQ29tbWVudCA9IChzdHIsIGluZGVudCwgY29tbWVudCkgPT4gY29tbWVudC5pbmNsdWRlcygnXFxuJylcbiAgICA/ICdcXG4nICsgaW5kZW50Q29tbWVudChjb21tZW50LCBpbmRlbnQpXG4gICAgOiAoc3RyLmVuZHNXaXRoKCcgJykgPyAnJyA6ICcgJykgKyBjb21tZW50O1xuXG5leHBvcnQgeyBpbmRlbnRDb21tZW50LCBsaW5lQ29tbWVudCwgc3RyaW5naWZ5Q29tbWVudCB9O1xuIiwiY29uc3QgRk9MRF9GTE9XID0gJ2Zsb3cnO1xuY29uc3QgRk9MRF9CTE9DSyA9ICdibG9jayc7XG5jb25zdCBGT0xEX1FVT1RFRCA9ICdxdW90ZWQnO1xuLyoqXG4gKiBUcmllcyB0byBrZWVwIGlucHV0IGF0IHVwIHRvIGBsaW5lV2lkdGhgIGNoYXJhY3RlcnMsIHNwbGl0dGluZyBvbmx5IG9uIHNwYWNlc1xuICogbm90IGZvbGxvd2VkIGJ5IG5ld2xpbmVzIG9yIHNwYWNlcyB1bmxlc3MgYG1vZGVgIGlzIGAncXVvdGVkJ2AuIExpbmVzIGFyZVxuICogdGVybWluYXRlZCB3aXRoIGBcXG5gIGFuZCBzdGFydGVkIHdpdGggYGluZGVudGAuXG4gKi9cbmZ1bmN0aW9uIGZvbGRGbG93TGluZXModGV4dCwgaW5kZW50LCBtb2RlID0gJ2Zsb3cnLCB7IGluZGVudEF0U3RhcnQsIGxpbmVXaWR0aCA9IDgwLCBtaW5Db250ZW50V2lkdGggPSAyMCwgb25Gb2xkLCBvbk92ZXJmbG93IH0gPSB7fSkge1xuICAgIGlmICghbGluZVdpZHRoIHx8IGxpbmVXaWR0aCA8IDApXG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgIGNvbnN0IGVuZFN0ZXAgPSBNYXRoLm1heCgxICsgbWluQ29udGVudFdpZHRoLCAxICsgbGluZVdpZHRoIC0gaW5kZW50Lmxlbmd0aCk7XG4gICAgaWYgKHRleHQubGVuZ3RoIDw9IGVuZFN0ZXApXG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgIGNvbnN0IGZvbGRzID0gW107XG4gICAgY29uc3QgZXNjYXBlZEZvbGRzID0ge307XG4gICAgbGV0IGVuZCA9IGxpbmVXaWR0aCAtIGluZGVudC5sZW5ndGg7XG4gICAgaWYgKHR5cGVvZiBpbmRlbnRBdFN0YXJ0ID09PSAnbnVtYmVyJykge1xuICAgICAgICBpZiAoaW5kZW50QXRTdGFydCA+IGxpbmVXaWR0aCAtIE1hdGgubWF4KDIsIG1pbkNvbnRlbnRXaWR0aCkpXG4gICAgICAgICAgICBmb2xkcy5wdXNoKDApO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBlbmQgPSBsaW5lV2lkdGggLSBpbmRlbnRBdFN0YXJ0O1xuICAgIH1cbiAgICBsZXQgc3BsaXQgPSB1bmRlZmluZWQ7XG4gICAgbGV0IHByZXYgPSB1bmRlZmluZWQ7XG4gICAgbGV0IG92ZXJmbG93ID0gZmFsc2U7XG4gICAgbGV0IGkgPSAtMTtcbiAgICBsZXQgZXNjU3RhcnQgPSAtMTtcbiAgICBsZXQgZXNjRW5kID0gLTE7XG4gICAgaWYgKG1vZGUgPT09IEZPTERfQkxPQ0spIHtcbiAgICAgICAgaSA9IGNvbnN1bWVNb3JlSW5kZW50ZWRMaW5lcyh0ZXh0LCBpKTtcbiAgICAgICAgaWYgKGkgIT09IC0xKVxuICAgICAgICAgICAgZW5kID0gaSArIGVuZFN0ZXA7XG4gICAgfVxuICAgIGZvciAobGV0IGNoOyAoY2ggPSB0ZXh0WyhpICs9IDEpXSk7KSB7XG4gICAgICAgIGlmIChtb2RlID09PSBGT0xEX1FVT1RFRCAmJiBjaCA9PT0gJ1xcXFwnKSB7XG4gICAgICAgICAgICBlc2NTdGFydCA9IGk7XG4gICAgICAgICAgICBzd2l0Y2ggKHRleHRbaSArIDFdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAneCc6XG4gICAgICAgICAgICAgICAgICAgIGkgKz0gMztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAndSc6XG4gICAgICAgICAgICAgICAgICAgIGkgKz0gNTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnVSc6XG4gICAgICAgICAgICAgICAgICAgIGkgKz0gOTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXNjRW5kID0gaTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2ggPT09ICdcXG4nKSB7XG4gICAgICAgICAgICBpZiAobW9kZSA9PT0gRk9MRF9CTE9DSylcbiAgICAgICAgICAgICAgICBpID0gY29uc3VtZU1vcmVJbmRlbnRlZExpbmVzKHRleHQsIGkpO1xuICAgICAgICAgICAgZW5kID0gaSArIGVuZFN0ZXA7XG4gICAgICAgICAgICBzcGxpdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjaCA9PT0gJyAnICYmXG4gICAgICAgICAgICAgICAgcHJldiAmJlxuICAgICAgICAgICAgICAgIHByZXYgIT09ICcgJyAmJlxuICAgICAgICAgICAgICAgIHByZXYgIT09ICdcXG4nICYmXG4gICAgICAgICAgICAgICAgcHJldiAhPT0gJ1xcdCcpIHtcbiAgICAgICAgICAgICAgICAvLyBzcGFjZSBzdXJyb3VuZGVkIGJ5IG5vbi1zcGFjZSBjYW4gYmUgcmVwbGFjZWQgd2l0aCBuZXdsaW5lICsgaW5kZW50XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IHRleHRbaSArIDFdO1xuICAgICAgICAgICAgICAgIGlmIChuZXh0ICYmIG5leHQgIT09ICcgJyAmJiBuZXh0ICE9PSAnXFxuJyAmJiBuZXh0ICE9PSAnXFx0JylcbiAgICAgICAgICAgICAgICAgICAgc3BsaXQgPSBpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGkgPj0gZW5kKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNwbGl0KSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbGRzLnB1c2goc3BsaXQpO1xuICAgICAgICAgICAgICAgICAgICBlbmQgPSBzcGxpdCArIGVuZFN0ZXA7XG4gICAgICAgICAgICAgICAgICAgIHNwbGl0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtb2RlID09PSBGT0xEX1FVT1RFRCkge1xuICAgICAgICAgICAgICAgICAgICAvLyB3aGl0ZS1zcGFjZSBjb2xsZWN0ZWQgYXQgZW5kIG1heSBzdHJldGNoIHBhc3QgbGluZVdpZHRoXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChwcmV2ID09PSAnICcgfHwgcHJldiA9PT0gJ1xcdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXYgPSBjaDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gdGV4dFsoaSArPSAxKV07XG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gQWNjb3VudCBmb3IgbmV3bGluZSBlc2NhcGUsIGJ1dCBkb24ndCBicmVhayBwcmVjZWRpbmcgZXNjYXBlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGogPSBpID4gZXNjRW5kICsgMSA/IGkgLSAyIDogZXNjU3RhcnQgLSAxO1xuICAgICAgICAgICAgICAgICAgICAvLyBCYWlsIG91dCBpZiBsaW5lV2lkdGggJiBtaW5Db250ZW50V2lkdGggYXJlIHNob3J0ZXIgdGhhbiBhbiBlc2NhcGUgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkRm9sZHNbal0pXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgICAgICAgICAgICAgZm9sZHMucHVzaChqKTtcbiAgICAgICAgICAgICAgICAgICAgZXNjYXBlZEZvbGRzW2pdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgZW5kID0gaiArIGVuZFN0ZXA7XG4gICAgICAgICAgICAgICAgICAgIHNwbGl0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwcmV2ID0gY2g7XG4gICAgfVxuICAgIGlmIChvdmVyZmxvdyAmJiBvbk92ZXJmbG93KVxuICAgICAgICBvbk92ZXJmbG93KCk7XG4gICAgaWYgKGZvbGRzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgaWYgKG9uRm9sZClcbiAgICAgICAgb25Gb2xkKCk7XG4gICAgbGV0IHJlcyA9IHRleHQuc2xpY2UoMCwgZm9sZHNbMF0pO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9sZHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY29uc3QgZm9sZCA9IGZvbGRzW2ldO1xuICAgICAgICBjb25zdCBlbmQgPSBmb2xkc1tpICsgMV0gfHwgdGV4dC5sZW5ndGg7XG4gICAgICAgIGlmIChmb2xkID09PSAwKVxuICAgICAgICAgICAgcmVzID0gYFxcbiR7aW5kZW50fSR7dGV4dC5zbGljZSgwLCBlbmQpfWA7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKG1vZGUgPT09IEZPTERfUVVPVEVEICYmIGVzY2FwZWRGb2xkc1tmb2xkXSlcbiAgICAgICAgICAgICAgICByZXMgKz0gYCR7dGV4dFtmb2xkXX1cXFxcYDtcbiAgICAgICAgICAgIHJlcyArPSBgXFxuJHtpbmRlbnR9JHt0ZXh0LnNsaWNlKGZvbGQgKyAxLCBlbmQpfWA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cbi8qKlxuICogUHJlc3VtZXMgYGkgKyAxYCBpcyBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lXG4gKiBAcmV0dXJucyBpbmRleCBvZiBsYXN0IG5ld2xpbmUgaW4gbW9yZS1pbmRlbnRlZCBibG9ja1xuICovXG5mdW5jdGlvbiBjb25zdW1lTW9yZUluZGVudGVkTGluZXModGV4dCwgaSkge1xuICAgIGxldCBjaCA9IHRleHRbaSArIDFdO1xuICAgIHdoaWxlIChjaCA9PT0gJyAnIHx8IGNoID09PSAnXFx0Jykge1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICBjaCA9IHRleHRbKGkgKz0gMSldO1xuICAgICAgICB9IHdoaWxlIChjaCAmJiBjaCAhPT0gJ1xcbicpO1xuICAgICAgICBjaCA9IHRleHRbaSArIDFdO1xuICAgIH1cbiAgICByZXR1cm4gaTtcbn1cblxuZXhwb3J0IHsgRk9MRF9CTE9DSywgRk9MRF9GTE9XLCBGT0xEX1FVT1RFRCwgZm9sZEZsb3dMaW5lcyB9O1xuIiwiaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi4vbm9kZXMvU2NhbGFyLmpzJztcbmltcG9ydCB7IGZvbGRGbG93TGluZXMsIEZPTERfUVVPVEVELCBGT0xEX0ZMT1csIEZPTERfQkxPQ0sgfSBmcm9tICcuL2ZvbGRGbG93TGluZXMuanMnO1xuXG5jb25zdCBnZXRGb2xkT3B0aW9ucyA9IChjdHgpID0+ICh7XG4gICAgaW5kZW50QXRTdGFydDogY3R4LmluZGVudEF0U3RhcnQsXG4gICAgbGluZVdpZHRoOiBjdHgub3B0aW9ucy5saW5lV2lkdGgsXG4gICAgbWluQ29udGVudFdpZHRoOiBjdHgub3B0aW9ucy5taW5Db250ZW50V2lkdGhcbn0pO1xuLy8gQWxzbyBjaGVja3MgZm9yIGxpbmVzIHN0YXJ0aW5nIHdpdGggJSwgYXMgcGFyc2luZyB0aGUgb3V0cHV0IGFzIFlBTUwgMS4xIHdpbGxcbi8vIHByZXN1bWUgdGhhdCdzIHN0YXJ0aW5nIGEgbmV3IGRvY3VtZW50LlxuY29uc3QgY29udGFpbnNEb2N1bWVudE1hcmtlciA9IChzdHIpID0+IC9eKCV8LS0tfFxcLlxcLlxcLikvbS50ZXN0KHN0cik7XG5mdW5jdGlvbiBsaW5lTGVuZ3RoT3ZlckxpbWl0KHN0ciwgbGluZVdpZHRoLCBpbmRlbnRMZW5ndGgpIHtcbiAgICBpZiAoIWxpbmVXaWR0aCB8fCBsaW5lV2lkdGggPCAwKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgbGltaXQgPSBsaW5lV2lkdGggLSBpbmRlbnRMZW5ndGg7XG4gICAgY29uc3Qgc3RyTGVuID0gc3RyLmxlbmd0aDtcbiAgICBpZiAoc3RyTGVuIDw9IGxpbWl0KVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgZm9yIChsZXQgaSA9IDAsIHN0YXJ0ID0gMDsgaSA8IHN0ckxlbjsgKytpKSB7XG4gICAgICAgIGlmIChzdHJbaV0gPT09ICdcXG4nKSB7XG4gICAgICAgICAgICBpZiAoaSAtIHN0YXJ0ID4gbGltaXQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBzdGFydCA9IGkgKyAxO1xuICAgICAgICAgICAgaWYgKHN0ckxlbiAtIHN0YXJ0IDw9IGxpbWl0KVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGRvdWJsZVF1b3RlZFN0cmluZyh2YWx1ZSwgY3R4KSB7XG4gICAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICBpZiAoY3R4Lm9wdGlvbnMuZG91YmxlUXVvdGVkQXNKU09OKVxuICAgICAgICByZXR1cm4ganNvbjtcbiAgICBjb25zdCB7IGltcGxpY2l0S2V5IH0gPSBjdHg7XG4gICAgY29uc3QgbWluTXVsdGlMaW5lTGVuZ3RoID0gY3R4Lm9wdGlvbnMuZG91YmxlUXVvdGVkTWluTXVsdGlMaW5lTGVuZ3RoO1xuICAgIGNvbnN0IGluZGVudCA9IGN0eC5pbmRlbnQgfHwgKGNvbnRhaW5zRG9jdW1lbnRNYXJrZXIodmFsdWUpID8gJyAgJyA6ICcnKTtcbiAgICBsZXQgc3RyID0gJyc7XG4gICAgbGV0IHN0YXJ0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMCwgY2ggPSBqc29uW2ldOyBjaDsgY2ggPSBqc29uWysraV0pIHtcbiAgICAgICAgaWYgKGNoID09PSAnICcgJiYganNvbltpICsgMV0gPT09ICdcXFxcJyAmJiBqc29uW2kgKyAyXSA9PT0gJ24nKSB7XG4gICAgICAgICAgICAvLyBzcGFjZSBiZWZvcmUgbmV3bGluZSBuZWVkcyB0byBiZSBlc2NhcGVkIHRvIG5vdCBiZSBmb2xkZWRcbiAgICAgICAgICAgIHN0ciArPSBqc29uLnNsaWNlKHN0YXJ0LCBpKSArICdcXFxcICc7XG4gICAgICAgICAgICBpICs9IDE7XG4gICAgICAgICAgICBzdGFydCA9IGk7XG4gICAgICAgICAgICBjaCA9ICdcXFxcJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2ggPT09ICdcXFxcJylcbiAgICAgICAgICAgIHN3aXRjaCAoanNvbltpICsgMV0pIHtcbiAgICAgICAgICAgICAgICBjYXNlICd1JzpcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IGpzb24uc2xpY2Uoc3RhcnQsIGkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29kZSA9IGpzb24uc3Vic3RyKGkgKyAyLCA0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzAwMDAnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcXFwwJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnMDAwNyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXFxcXGEnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcwMDBiJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXFxcdic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzAwMWInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcXFxlJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnMDA4NSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXFxcXE4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcwMGEwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXFxcXyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzIwMjgnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcXFxMJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnMjAyOSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXFxcXFAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29kZS5zdWJzdHIoMCwgMikgPT09ICcwMCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcXFx4JyArIGNvZGUuc3Vic3RyKDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0ganNvbi5zdWJzdHIoaSwgNik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpICs9IDU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydCA9IGkgKyAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ24nOlxuICAgICAgICAgICAgICAgICAgICBpZiAoaW1wbGljaXRLZXkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzb25baSArIDJdID09PSAnXCInIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLmxlbmd0aCA8IG1pbk11bHRpTGluZUxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9sZGluZyB3aWxsIGVhdCBmaXJzdCBuZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0ganNvbi5zbGljZShzdGFydCwgaSkgKyAnXFxuXFxuJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChqc29uW2kgKyAyXSA9PT0gJ1xcXFwnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbltpICsgM10gPT09ICduJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb25baSArIDRdICE9PSAnXCInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXG4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBpbmRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGFjZSBhZnRlciBuZXdsaW5lIG5lZWRzIHRvIGJlIGVzY2FwZWQgdG8gbm90IGJlIGZvbGRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpzb25baSArIDJdID09PSAnICcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXFxcJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gaSArIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgICAgfVxuICAgIH1cbiAgICBzdHIgPSBzdGFydCA/IHN0ciArIGpzb24uc2xpY2Uoc3RhcnQpIDoganNvbjtcbiAgICByZXR1cm4gaW1wbGljaXRLZXlcbiAgICAgICAgPyBzdHJcbiAgICAgICAgOiBmb2xkRmxvd0xpbmVzKHN0ciwgaW5kZW50LCBGT0xEX1FVT1RFRCwgZ2V0Rm9sZE9wdGlvbnMoY3R4KSk7XG59XG5mdW5jdGlvbiBzaW5nbGVRdW90ZWRTdHJpbmcodmFsdWUsIGN0eCkge1xuICAgIGlmIChjdHgub3B0aW9ucy5zaW5nbGVRdW90ZSA9PT0gZmFsc2UgfHxcbiAgICAgICAgKGN0eC5pbXBsaWNpdEtleSAmJiB2YWx1ZS5pbmNsdWRlcygnXFxuJykpIHx8XG4gICAgICAgIC9bIFxcdF1cXG58XFxuWyBcXHRdLy50ZXN0KHZhbHVlKSAvLyBzaW5nbGUgcXVvdGVkIHN0cmluZyBjYW4ndCBoYXZlIGxlYWRpbmcgb3IgdHJhaWxpbmcgd2hpdGVzcGFjZSBhcm91bmQgbmV3bGluZVxuICAgIClcbiAgICAgICAgcmV0dXJuIGRvdWJsZVF1b3RlZFN0cmluZyh2YWx1ZSwgY3R4KTtcbiAgICBjb25zdCBpbmRlbnQgPSBjdHguaW5kZW50IHx8IChjb250YWluc0RvY3VtZW50TWFya2VyKHZhbHVlKSA/ICcgICcgOiAnJyk7XG4gICAgY29uc3QgcmVzID0gXCInXCIgKyB2YWx1ZS5yZXBsYWNlKC8nL2csIFwiJydcIikucmVwbGFjZSgvXFxuKy9nLCBgJCZcXG4ke2luZGVudH1gKSArIFwiJ1wiO1xuICAgIHJldHVybiBjdHguaW1wbGljaXRLZXlcbiAgICAgICAgPyByZXNcbiAgICAgICAgOiBmb2xkRmxvd0xpbmVzKHJlcywgaW5kZW50LCBGT0xEX0ZMT1csIGdldEZvbGRPcHRpb25zKGN0eCkpO1xufVxuZnVuY3Rpb24gcXVvdGVkU3RyaW5nKHZhbHVlLCBjdHgpIHtcbiAgICBjb25zdCB7IHNpbmdsZVF1b3RlIH0gPSBjdHgub3B0aW9ucztcbiAgICBsZXQgcXM7XG4gICAgaWYgKHNpbmdsZVF1b3RlID09PSBmYWxzZSlcbiAgICAgICAgcXMgPSBkb3VibGVRdW90ZWRTdHJpbmc7XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IGhhc0RvdWJsZSA9IHZhbHVlLmluY2x1ZGVzKCdcIicpO1xuICAgICAgICBjb25zdCBoYXNTaW5nbGUgPSB2YWx1ZS5pbmNsdWRlcyhcIidcIik7XG4gICAgICAgIGlmIChoYXNEb3VibGUgJiYgIWhhc1NpbmdsZSlcbiAgICAgICAgICAgIHFzID0gc2luZ2xlUXVvdGVkU3RyaW5nO1xuICAgICAgICBlbHNlIGlmIChoYXNTaW5nbGUgJiYgIWhhc0RvdWJsZSlcbiAgICAgICAgICAgIHFzID0gZG91YmxlUXVvdGVkU3RyaW5nO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBxcyA9IHNpbmdsZVF1b3RlID8gc2luZ2xlUXVvdGVkU3RyaW5nIDogZG91YmxlUXVvdGVkU3RyaW5nO1xuICAgIH1cbiAgICByZXR1cm4gcXModmFsdWUsIGN0eCk7XG59XG5mdW5jdGlvbiBibG9ja1N0cmluZyh7IGNvbW1lbnQsIHR5cGUsIHZhbHVlIH0sIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCkge1xuICAgIGNvbnN0IHsgYmxvY2tRdW90ZSwgY29tbWVudFN0cmluZywgbGluZVdpZHRoIH0gPSBjdHgub3B0aW9ucztcbiAgICAvLyAxLiBCbG9jayBjYW4ndCBlbmQgaW4gd2hpdGVzcGFjZSB1bmxlc3MgdGhlIGxhc3QgbGluZSBpcyBub24tZW1wdHkuXG4gICAgLy8gMi4gU3RyaW5ncyBjb25zaXN0aW5nIG9mIG9ubHkgd2hpdGVzcGFjZSBhcmUgYmVzdCByZW5kZXJlZCBleHBsaWNpdGx5LlxuICAgIGlmICghYmxvY2tRdW90ZSB8fCAvXFxuW1xcdCBdKyQvLnRlc3QodmFsdWUpIHx8IC9eXFxzKiQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBxdW90ZWRTdHJpbmcodmFsdWUsIGN0eCk7XG4gICAgfVxuICAgIGNvbnN0IGluZGVudCA9IGN0eC5pbmRlbnQgfHxcbiAgICAgICAgKGN0eC5mb3JjZUJsb2NrSW5kZW50IHx8IGNvbnRhaW5zRG9jdW1lbnRNYXJrZXIodmFsdWUpID8gJyAgJyA6ICcnKTtcbiAgICBjb25zdCBsaXRlcmFsID0gYmxvY2tRdW90ZSA9PT0gJ2xpdGVyYWwnXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IGJsb2NrUXVvdGUgPT09ICdmb2xkZWQnIHx8IHR5cGUgPT09IFNjYWxhci5CTE9DS19GT0xERURcbiAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgIDogdHlwZSA9PT0gU2NhbGFyLkJMT0NLX0xJVEVSQUxcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6ICFsaW5lTGVuZ3RoT3ZlckxpbWl0KHZhbHVlLCBsaW5lV2lkdGgsIGluZGVudC5sZW5ndGgpO1xuICAgIGlmICghdmFsdWUpXG4gICAgICAgIHJldHVybiBsaXRlcmFsID8gJ3xcXG4nIDogJz5cXG4nO1xuICAgIC8vIGRldGVybWluZSBjaG9tcGluZyBmcm9tIHdoaXRlc3BhY2UgYXQgdmFsdWUgZW5kXG4gICAgbGV0IGNob21wO1xuICAgIGxldCBlbmRTdGFydDtcbiAgICBmb3IgKGVuZFN0YXJ0ID0gdmFsdWUubGVuZ3RoOyBlbmRTdGFydCA+IDA7IC0tZW5kU3RhcnQpIHtcbiAgICAgICAgY29uc3QgY2ggPSB2YWx1ZVtlbmRTdGFydCAtIDFdO1xuICAgICAgICBpZiAoY2ggIT09ICdcXG4nICYmIGNoICE9PSAnXFx0JyAmJiBjaCAhPT0gJyAnKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGxldCBlbmQgPSB2YWx1ZS5zdWJzdHJpbmcoZW5kU3RhcnQpO1xuICAgIGNvbnN0IGVuZE5sUG9zID0gZW5kLmluZGV4T2YoJ1xcbicpO1xuICAgIGlmIChlbmRObFBvcyA9PT0gLTEpIHtcbiAgICAgICAgY2hvbXAgPSAnLSc7IC8vIHN0cmlwXG4gICAgfVxuICAgIGVsc2UgaWYgKHZhbHVlID09PSBlbmQgfHwgZW5kTmxQb3MgIT09IGVuZC5sZW5ndGggLSAxKSB7XG4gICAgICAgIGNob21wID0gJysnOyAvLyBrZWVwXG4gICAgICAgIGlmIChvbkNob21wS2VlcClcbiAgICAgICAgICAgIG9uQ2hvbXBLZWVwKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjaG9tcCA9ICcnOyAvLyBjbGlwXG4gICAgfVxuICAgIGlmIChlbmQpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgwLCAtZW5kLmxlbmd0aCk7XG4gICAgICAgIGlmIChlbmRbZW5kLmxlbmd0aCAtIDFdID09PSAnXFxuJylcbiAgICAgICAgICAgIGVuZCA9IGVuZC5zbGljZSgwLCAtMSk7XG4gICAgICAgIGVuZCA9IGVuZC5yZXBsYWNlKC9cXG4rKD8hXFxufCQpL2csIGAkJiR7aW5kZW50fWApO1xuICAgIH1cbiAgICAvLyBkZXRlcm1pbmUgaW5kZW50IGluZGljYXRvciBmcm9tIHdoaXRlc3BhY2UgYXQgdmFsdWUgc3RhcnRcbiAgICBsZXQgc3RhcnRXaXRoU3BhY2UgPSBmYWxzZTtcbiAgICBsZXQgc3RhcnRFbmQ7XG4gICAgbGV0IHN0YXJ0TmxQb3MgPSAtMTtcbiAgICBmb3IgKHN0YXJ0RW5kID0gMDsgc3RhcnRFbmQgPCB2YWx1ZS5sZW5ndGg7ICsrc3RhcnRFbmQpIHtcbiAgICAgICAgY29uc3QgY2ggPSB2YWx1ZVtzdGFydEVuZF07XG4gICAgICAgIGlmIChjaCA9PT0gJyAnKVxuICAgICAgICAgICAgc3RhcnRXaXRoU3BhY2UgPSB0cnVlO1xuICAgICAgICBlbHNlIGlmIChjaCA9PT0gJ1xcbicpXG4gICAgICAgICAgICBzdGFydE5sUG9zID0gc3RhcnRFbmQ7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBsZXQgc3RhcnQgPSB2YWx1ZS5zdWJzdHJpbmcoMCwgc3RhcnRObFBvcyA8IHN0YXJ0RW5kID8gc3RhcnRObFBvcyArIDEgOiBzdGFydEVuZCk7XG4gICAgaWYgKHN0YXJ0KSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKHN0YXJ0Lmxlbmd0aCk7XG4gICAgICAgIHN0YXJ0ID0gc3RhcnQucmVwbGFjZSgvXFxuKy9nLCBgJCYke2luZGVudH1gKTtcbiAgICB9XG4gICAgY29uc3QgaW5kZW50U2l6ZSA9IGluZGVudCA/ICcyJyA6ICcxJzsgLy8gcm9vdCBpcyBhdCAtMVxuICAgIGxldCBoZWFkZXIgPSAobGl0ZXJhbCA/ICd8JyA6ICc+JykgKyAoc3RhcnRXaXRoU3BhY2UgPyBpbmRlbnRTaXplIDogJycpICsgY2hvbXA7XG4gICAgaWYgKGNvbW1lbnQpIHtcbiAgICAgICAgaGVhZGVyICs9ICcgJyArIGNvbW1lbnRTdHJpbmcoY29tbWVudC5yZXBsYWNlKC8gP1tcXHJcXG5dKy9nLCAnICcpKTtcbiAgICAgICAgaWYgKG9uQ29tbWVudClcbiAgICAgICAgICAgIG9uQ29tbWVudCgpO1xuICAgIH1cbiAgICBpZiAobGl0ZXJhbCkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1xcbisvZywgYCQmJHtpbmRlbnR9YCk7XG4gICAgICAgIHJldHVybiBgJHtoZWFkZXJ9XFxuJHtpbmRlbnR9JHtzdGFydH0ke3ZhbHVlfSR7ZW5kfWA7XG4gICAgfVxuICAgIHZhbHVlID0gdmFsdWVcbiAgICAgICAgLnJlcGxhY2UoL1xcbisvZywgJ1xcbiQmJylcbiAgICAgICAgLnJlcGxhY2UoLyg/Ol58XFxuKShbXFx0IF0uKikoPzooW1xcblxcdCBdKilcXG4oPyFbXFxuXFx0IF0pKT8vZywgJyQxJDInKSAvLyBtb3JlLWluZGVudGVkIGxpbmVzIGFyZW4ndCBmb2xkZWRcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgXiBtb3JlLWluZC4gXiBlbXB0eSAgICAgXiBjYXB0dXJlIG5leHQgZW1wdHkgbGluZXMgb25seSBhdCBlbmQgb2YgaW5kZW50XG4gICAgICAgIC5yZXBsYWNlKC9cXG4rL2csIGAkJiR7aW5kZW50fWApO1xuICAgIGNvbnN0IGJvZHkgPSBmb2xkRmxvd0xpbmVzKGAke3N0YXJ0fSR7dmFsdWV9JHtlbmR9YCwgaW5kZW50LCBGT0xEX0JMT0NLLCBnZXRGb2xkT3B0aW9ucyhjdHgpKTtcbiAgICByZXR1cm4gYCR7aGVhZGVyfVxcbiR7aW5kZW50fSR7Ym9keX1gO1xufVxuZnVuY3Rpb24gcGxhaW5TdHJpbmcoaXRlbSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgY29uc3QgeyB0eXBlLCB2YWx1ZSB9ID0gaXRlbTtcbiAgICBjb25zdCB7IGFjdHVhbFN0cmluZywgaW1wbGljaXRLZXksIGluZGVudCwgaW5GbG93IH0gPSBjdHg7XG4gICAgaWYgKChpbXBsaWNpdEtleSAmJiAvW1xcbltcXF17fSxdLy50ZXN0KHZhbHVlKSkgfHxcbiAgICAgICAgKGluRmxvdyAmJiAvW1tcXF17fSxdLy50ZXN0KHZhbHVlKSkpIHtcbiAgICAgICAgcmV0dXJuIHF1b3RlZFN0cmluZyh2YWx1ZSwgY3R4KTtcbiAgICB9XG4gICAgaWYgKCF2YWx1ZSB8fFxuICAgICAgICAvXltcXG5cXHQgLFtcXF17fSMmKiF8PidcIiVAYF18Xls/LV0kfF5bPy1dWyBcXHRdfFtcXG46XVsgXFx0XXxbIFxcdF1cXG58W1xcblxcdCBdI3xbXFxuXFx0IDpdJC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgLy8gbm90IGFsbG93ZWQ6XG4gICAgICAgIC8vIC0gZW1wdHkgc3RyaW5nLCAnLScgb3IgJz8nXG4gICAgICAgIC8vIC0gc3RhcnQgd2l0aCBhbiBpbmRpY2F0b3IgY2hhcmFjdGVyIChleGNlcHQgWz86LV0pIG9yIC9bPy1dIC9cbiAgICAgICAgLy8gLSAnXFxuICcsICc6ICcgb3IgJyBcXG4nIGFueXdoZXJlXG4gICAgICAgIC8vIC0gJyMnIG5vdCBwcmVjZWRlZCBieSBhIG5vbi1zcGFjZSBjaGFyXG4gICAgICAgIC8vIC0gZW5kIHdpdGggJyAnIG9yICc6J1xuICAgICAgICByZXR1cm4gaW1wbGljaXRLZXkgfHwgaW5GbG93IHx8IHZhbHVlLmluZGV4T2YoJ1xcbicpID09PSAtMVxuICAgICAgICAgICAgPyBxdW90ZWRTdHJpbmcodmFsdWUsIGN0eClcbiAgICAgICAgICAgIDogYmxvY2tTdHJpbmcoaXRlbSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKTtcbiAgICB9XG4gICAgaWYgKCFpbXBsaWNpdEtleSAmJlxuICAgICAgICAhaW5GbG93ICYmXG4gICAgICAgIHR5cGUgIT09IFNjYWxhci5QTEFJTiAmJlxuICAgICAgICB2YWx1ZS5pbmRleE9mKCdcXG4nKSAhPT0gLTEpIHtcbiAgICAgICAgLy8gV2hlcmUgYWxsb3dlZCAmIHR5cGUgbm90IHNldCBleHBsaWNpdGx5LCBwcmVmZXIgYmxvY2sgc3R5bGUgZm9yIG11bHRpbGluZSBzdHJpbmdzXG4gICAgICAgIHJldHVybiBibG9ja1N0cmluZyhpdGVtLCBjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApO1xuICAgIH1cbiAgICBpZiAoaW5kZW50ID09PSAnJyAmJiBjb250YWluc0RvY3VtZW50TWFya2VyKHZhbHVlKSkge1xuICAgICAgICBjdHguZm9yY2VCbG9ja0luZGVudCA9IHRydWU7XG4gICAgICAgIHJldHVybiBibG9ja1N0cmluZyhpdGVtLCBjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApO1xuICAgIH1cbiAgICBjb25zdCBzdHIgPSB2YWx1ZS5yZXBsYWNlKC9cXG4rL2csIGAkJlxcbiR7aW5kZW50fWApO1xuICAgIC8vIFZlcmlmeSB0aGF0IG91dHB1dCB3aWxsIGJlIHBhcnNlZCBhcyBhIHN0cmluZywgYXMgZS5nLiBwbGFpbiBudW1iZXJzIGFuZFxuICAgIC8vIGJvb2xlYW5zIGdldCBwYXJzZWQgd2l0aCB0aG9zZSB0eXBlcyBpbiB2MS4yIChlLmcuICc0MicsICd0cnVlJyAmICcwLjllLTMnKSxcbiAgICAvLyBhbmQgb3RoZXJzIGluIHYxLjEuXG4gICAgaWYgKGFjdHVhbFN0cmluZykge1xuICAgICAgICBjb25zdCB0ZXN0ID0gKHRhZykgPT4geyB2YXIgX2E7IHJldHVybiB0YWcuZGVmYXVsdCAmJiB0YWcudGFnICE9PSAndGFnOnlhbWwub3JnLDIwMDI6c3RyJyAmJiAoKF9hID0gdGFnLnRlc3QpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXN0KHN0cikpOyB9O1xuICAgICAgICBjb25zdCB7IGNvbXBhdCwgdGFncyB9ID0gY3R4LmRvYy5zY2hlbWE7XG4gICAgICAgIGlmICh0YWdzLnNvbWUodGVzdCkgfHwgKGNvbXBhdCA9PT0gbnVsbCB8fCBjb21wYXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXBhdC5zb21lKHRlc3QpKSlcbiAgICAgICAgICAgIHJldHVybiBxdW90ZWRTdHJpbmcodmFsdWUsIGN0eCk7XG4gICAgfVxuICAgIHJldHVybiBpbXBsaWNpdEtleVxuICAgICAgICA/IHN0clxuICAgICAgICA6IGZvbGRGbG93TGluZXMoc3RyLCBpbmRlbnQsIEZPTERfRkxPVywgZ2V0Rm9sZE9wdGlvbnMoY3R4KSk7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnlTdHJpbmcoaXRlbSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgY29uc3QgeyBpbXBsaWNpdEtleSwgaW5GbG93IH0gPSBjdHg7XG4gICAgY29uc3Qgc3MgPSB0eXBlb2YgaXRlbS52YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgPyBpdGVtXG4gICAgICAgIDogT2JqZWN0LmFzc2lnbih7fSwgaXRlbSwgeyB2YWx1ZTogU3RyaW5nKGl0ZW0udmFsdWUpIH0pO1xuICAgIGxldCB7IHR5cGUgfSA9IGl0ZW07XG4gICAgaWYgKHR5cGUgIT09IFNjYWxhci5RVU9URV9ET1VCTEUpIHtcbiAgICAgICAgLy8gZm9yY2UgZG91YmxlIHF1b3RlcyBvbiBjb250cm9sIGNoYXJhY3RlcnMgJiB1bnBhaXJlZCBzdXJyb2dhdGVzXG4gICAgICAgIGlmICgvW1xceDAwLVxceDA4XFx4MGItXFx4MWZcXHg3Zi1cXHg5ZlxcdXtEODAwfS1cXHV7REZGRn1dL3UudGVzdChzcy52YWx1ZSkpXG4gICAgICAgICAgICB0eXBlID0gU2NhbGFyLlFVT1RFX0RPVUJMRTtcbiAgICB9XG4gICAgY29uc3QgX3N0cmluZ2lmeSA9IChfdHlwZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKF90eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNjYWxhci5CTE9DS19GT0xERUQ6XG4gICAgICAgICAgICBjYXNlIFNjYWxhci5CTE9DS19MSVRFUkFMOlxuICAgICAgICAgICAgICAgIHJldHVybiBpbXBsaWNpdEtleSB8fCBpbkZsb3dcbiAgICAgICAgICAgICAgICAgICAgPyBxdW90ZWRTdHJpbmcoc3MudmFsdWUsIGN0eCkgLy8gYmxvY2tzIGFyZSBub3QgdmFsaWQgaW5zaWRlIGZsb3cgY29udGFpbmVyc1xuICAgICAgICAgICAgICAgICAgICA6IGJsb2NrU3RyaW5nKHNzLCBjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApO1xuICAgICAgICAgICAgY2FzZSBTY2FsYXIuUVVPVEVfRE9VQkxFOlxuICAgICAgICAgICAgICAgIHJldHVybiBkb3VibGVRdW90ZWRTdHJpbmcoc3MudmFsdWUsIGN0eCk7XG4gICAgICAgICAgICBjYXNlIFNjYWxhci5RVU9URV9TSU5HTEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNpbmdsZVF1b3RlZFN0cmluZyhzcy52YWx1ZSwgY3R4KTtcbiAgICAgICAgICAgIGNhc2UgU2NhbGFyLlBMQUlOOlxuICAgICAgICAgICAgICAgIHJldHVybiBwbGFpblN0cmluZyhzcywgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGxldCByZXMgPSBfc3RyaW5naWZ5KHR5cGUpO1xuICAgIGlmIChyZXMgPT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgeyBkZWZhdWx0S2V5VHlwZSwgZGVmYXVsdFN0cmluZ1R5cGUgfSA9IGN0eC5vcHRpb25zO1xuICAgICAgICBjb25zdCB0ID0gKGltcGxpY2l0S2V5ICYmIGRlZmF1bHRLZXlUeXBlKSB8fCBkZWZhdWx0U3RyaW5nVHlwZTtcbiAgICAgICAgcmVzID0gX3N0cmluZ2lmeSh0KTtcbiAgICAgICAgaWYgKHJlcyA9PT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgZGVmYXVsdCBzdHJpbmcgdHlwZSAke3R9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCB7IHN0cmluZ2lmeVN0cmluZyB9O1xuIiwiaW1wb3J0IHsgYW5jaG9ySXNWYWxpZCB9IGZyb20gJy4uL2RvYy9hbmNob3JzLmpzJztcbmltcG9ydCB7IGlzUGFpciwgaXNBbGlhcywgaXNOb2RlLCBpc1NjYWxhciwgaXNDb2xsZWN0aW9uIH0gZnJvbSAnLi4vbm9kZXMvTm9kZS5qcyc7XG5pbXBvcnQgeyBzdHJpbmdpZnlDb21tZW50IH0gZnJvbSAnLi9zdHJpbmdpZnlDb21tZW50LmpzJztcbmltcG9ydCB7IHN0cmluZ2lmeVN0cmluZyB9IGZyb20gJy4vc3RyaW5naWZ5U3RyaW5nLmpzJztcblxuZnVuY3Rpb24gY3JlYXRlU3RyaW5naWZ5Q29udGV4dChkb2MsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBvcHQgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgYmxvY2tRdW90ZTogdHJ1ZSxcbiAgICAgICAgY29tbWVudFN0cmluZzogc3RyaW5naWZ5Q29tbWVudCxcbiAgICAgICAgZGVmYXVsdEtleVR5cGU6IG51bGwsXG4gICAgICAgIGRlZmF1bHRTdHJpbmdUeXBlOiAnUExBSU4nLFxuICAgICAgICBkaXJlY3RpdmVzOiBudWxsLFxuICAgICAgICBkb3VibGVRdW90ZWRBc0pTT046IGZhbHNlLFxuICAgICAgICBkb3VibGVRdW90ZWRNaW5NdWx0aUxpbmVMZW5ndGg6IDQwLFxuICAgICAgICBmYWxzZVN0cjogJ2ZhbHNlJyxcbiAgICAgICAgaW5kZW50U2VxOiB0cnVlLFxuICAgICAgICBsaW5lV2lkdGg6IDgwLFxuICAgICAgICBtaW5Db250ZW50V2lkdGg6IDIwLFxuICAgICAgICBudWxsU3RyOiAnbnVsbCcsXG4gICAgICAgIHNpbXBsZUtleXM6IGZhbHNlLFxuICAgICAgICBzaW5nbGVRdW90ZTogbnVsbCxcbiAgICAgICAgdHJ1ZVN0cjogJ3RydWUnLFxuICAgICAgICB2ZXJpZnlBbGlhc09yZGVyOiB0cnVlXG4gICAgfSwgZG9jLnNjaGVtYS50b1N0cmluZ09wdGlvbnMsIG9wdGlvbnMpO1xuICAgIGxldCBpbkZsb3c7XG4gICAgc3dpdGNoIChvcHQuY29sbGVjdGlvblN0eWxlKSB7XG4gICAgICAgIGNhc2UgJ2Jsb2NrJzpcbiAgICAgICAgICAgIGluRmxvdyA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Zsb3cnOlxuICAgICAgICAgICAgaW5GbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgaW5GbG93ID0gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYW5jaG9yczogbmV3IFNldCgpLFxuICAgICAgICBkb2MsXG4gICAgICAgIGluZGVudDogJycsXG4gICAgICAgIGluZGVudFN0ZXA6IHR5cGVvZiBvcHQuaW5kZW50ID09PSAnbnVtYmVyJyA/ICcgJy5yZXBlYXQob3B0LmluZGVudCkgOiAnICAnLFxuICAgICAgICBpbkZsb3csXG4gICAgICAgIG9wdGlvbnM6IG9wdFxuICAgIH07XG59XG5mdW5jdGlvbiBnZXRUYWdPYmplY3QodGFncywgaXRlbSkge1xuICAgIGlmIChpdGVtLnRhZykge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHRhZ3MuZmlsdGVyKHQgPT4gdC50YWcgPT09IGl0ZW0udGFnKTtcbiAgICAgICAgaWYgKG1hdGNoLmxlbmd0aCA+IDApXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2guZmluZCh0ID0+IHQuZm9ybWF0ID09PSBpdGVtLmZvcm1hdCkgfHwgbWF0Y2hbMF07XG4gICAgfVxuICAgIGxldCB0YWdPYmogPSB1bmRlZmluZWQ7XG4gICAgbGV0IG9iajtcbiAgICBpZiAoaXNTY2FsYXIoaXRlbSkpIHtcbiAgICAgICAgb2JqID0gaXRlbS52YWx1ZTtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSB0YWdzLmZpbHRlcih0ID0+IHQuaWRlbnRpZnkgJiYgdC5pZGVudGlmeShvYmopKTtcbiAgICAgICAgdGFnT2JqID1cbiAgICAgICAgICAgIG1hdGNoLmZpbmQodCA9PiB0LmZvcm1hdCA9PT0gaXRlbS5mb3JtYXQpIHx8IG1hdGNoLmZpbmQodCA9PiAhdC5mb3JtYXQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgb2JqID0gaXRlbTtcbiAgICAgICAgdGFnT2JqID0gdGFncy5maW5kKHQgPT4gdC5ub2RlQ2xhc3MgJiYgb2JqIGluc3RhbmNlb2YgdC5ub2RlQ2xhc3MpO1xuICAgIH1cbiAgICBpZiAoIXRhZ09iaikge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IG5hbWUgPSBvYmogJiYgb2JqLmNvbnN0cnVjdG9yID8gb2JqLmNvbnN0cnVjdG9yLm5hbWUgOiB0eXBlb2Ygb2JqO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRhZyBub3QgcmVzb2x2ZWQgZm9yICR7bmFtZX0gdmFsdWVgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhZ09iajtcbn1cbi8vIG5lZWRzIHRvIGJlIGNhbGxlZCBiZWZvcmUgdmFsdWUgc3RyaW5naWZpZXIgdG8gYWxsb3cgZm9yIGNpcmN1bGFyIGFuY2hvciByZWZzXG5mdW5jdGlvbiBzdHJpbmdpZnlQcm9wcyhub2RlLCB0YWdPYmosIHsgYW5jaG9ycywgZG9jIH0pIHtcbiAgICBpZiAoIWRvYy5kaXJlY3RpdmVzKVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgY29uc3QgcHJvcHMgPSBbXTtcbiAgICBjb25zdCBhbmNob3IgPSAoaXNTY2FsYXIobm9kZSkgfHwgaXNDb2xsZWN0aW9uKG5vZGUpKSAmJiBub2RlLmFuY2hvcjtcbiAgICBpZiAoYW5jaG9yICYmIGFuY2hvcklzVmFsaWQoYW5jaG9yKSkge1xuICAgICAgICBhbmNob3JzLmFkZChhbmNob3IpO1xuICAgICAgICBwcm9wcy5wdXNoKGAmJHthbmNob3J9YCk7XG4gICAgfVxuICAgIGNvbnN0IHRhZyA9IG5vZGUudGFnIHx8ICh0YWdPYmouZGVmYXVsdCA/IG51bGwgOiB0YWdPYmoudGFnKTtcbiAgICBpZiAodGFnKVxuICAgICAgICBwcm9wcy5wdXNoKGRvYy5kaXJlY3RpdmVzLnRhZ1N0cmluZyh0YWcpKTtcbiAgICByZXR1cm4gcHJvcHMuam9pbignICcpO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5KGl0ZW0sIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCkge1xuICAgIHZhciBfYTtcbiAgICBpZiAoaXNQYWlyKGl0ZW0pKVxuICAgICAgICByZXR1cm4gaXRlbS50b1N0cmluZyhjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApO1xuICAgIGlmIChpc0FsaWFzKGl0ZW0pKSB7XG4gICAgICAgIGlmIChjdHguZG9jLmRpcmVjdGl2ZXMpXG4gICAgICAgICAgICByZXR1cm4gaXRlbS50b1N0cmluZyhjdHgpO1xuICAgICAgICBpZiAoKF9hID0gY3R4LnJlc29sdmVkQWxpYXNlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmhhcyhpdGVtKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgQ2Fubm90IHN0cmluZ2lmeSBjaXJjdWxhciBzdHJ1Y3R1cmUgd2l0aG91dCBhbGlhcyBub2Rlc2ApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGN0eC5yZXNvbHZlZEFsaWFzZXMpXG4gICAgICAgICAgICAgICAgY3R4LnJlc29sdmVkQWxpYXNlcy5hZGQoaXRlbSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgY3R4LnJlc29sdmVkQWxpYXNlcyA9IG5ldyBTZXQoW2l0ZW1dKTtcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnJlc29sdmUoY3R4LmRvYyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IHRhZ09iaiA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCBub2RlID0gaXNOb2RlKGl0ZW0pXG4gICAgICAgID8gaXRlbVxuICAgICAgICA6IGN0eC5kb2MuY3JlYXRlTm9kZShpdGVtLCB7IG9uVGFnT2JqOiBvID0+ICh0YWdPYmogPSBvKSB9KTtcbiAgICBpZiAoIXRhZ09iailcbiAgICAgICAgdGFnT2JqID0gZ2V0VGFnT2JqZWN0KGN0eC5kb2Muc2NoZW1hLnRhZ3MsIG5vZGUpO1xuICAgIGNvbnN0IHByb3BzID0gc3RyaW5naWZ5UHJvcHMobm9kZSwgdGFnT2JqLCBjdHgpO1xuICAgIGlmIChwcm9wcy5sZW5ndGggPiAwKVxuICAgICAgICBjdHguaW5kZW50QXRTdGFydCA9IChjdHguaW5kZW50QXRTdGFydCB8fCAwKSArIHByb3BzLmxlbmd0aCArIDE7XG4gICAgY29uc3Qgc3RyID0gdHlwZW9mIHRhZ09iai5zdHJpbmdpZnkgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyB0YWdPYmouc3RyaW5naWZ5KG5vZGUsIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcClcbiAgICAgICAgOiBpc1NjYWxhcihub2RlKVxuICAgICAgICAgICAgPyBzdHJpbmdpZnlTdHJpbmcobm9kZSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKVxuICAgICAgICAgICAgOiBub2RlLnRvU3RyaW5nKGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCk7XG4gICAgaWYgKCFwcm9wcylcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICByZXR1cm4gaXNTY2FsYXIobm9kZSkgfHwgc3RyWzBdID09PSAneycgfHwgc3RyWzBdID09PSAnWydcbiAgICAgICAgPyBgJHtwcm9wc30gJHtzdHJ9YFxuICAgICAgICA6IGAke3Byb3BzfVxcbiR7Y3R4LmluZGVudH0ke3N0cn1gO1xufVxuXG5leHBvcnQgeyBjcmVhdGVTdHJpbmdpZnlDb250ZXh0LCBzdHJpbmdpZnkgfTtcbiIsImltcG9ydCB7IGlzQ29sbGVjdGlvbiwgaXNOb2RlLCBpc1NjYWxhciwgaXNTZXEgfSBmcm9tICcuLi9ub2Rlcy9Ob2RlLmpzJztcbmltcG9ydCB7IFNjYWxhciB9IGZyb20gJy4uL25vZGVzL1NjYWxhci5qcyc7XG5pbXBvcnQgeyBzdHJpbmdpZnkgfSBmcm9tICcuL3N0cmluZ2lmeS5qcyc7XG5pbXBvcnQgeyBsaW5lQ29tbWVudCwgaW5kZW50Q29tbWVudCB9IGZyb20gJy4vc3RyaW5naWZ5Q29tbWVudC5qcyc7XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeVBhaXIoeyBrZXksIHZhbHVlIH0sIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCkge1xuICAgIGNvbnN0IHsgYWxsTnVsbFZhbHVlcywgZG9jLCBpbmRlbnQsIGluZGVudFN0ZXAsIG9wdGlvbnM6IHsgY29tbWVudFN0cmluZywgaW5kZW50U2VxLCBzaW1wbGVLZXlzIH0gfSA9IGN0eDtcbiAgICBsZXQga2V5Q29tbWVudCA9IChpc05vZGUoa2V5KSAmJiBrZXkuY29tbWVudCkgfHwgbnVsbDtcbiAgICBpZiAoc2ltcGxlS2V5cykge1xuICAgICAgICBpZiAoa2V5Q29tbWVudCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdXaXRoIHNpbXBsZSBrZXlzLCBrZXkgbm9kZXMgY2Fubm90IGhhdmUgY29tbWVudHMnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDb2xsZWN0aW9uKGtleSkpIHtcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9ICdXaXRoIHNpbXBsZSBrZXlzLCBjb2xsZWN0aW9uIGNhbm5vdCBiZSB1c2VkIGFzIGEga2V5IHZhbHVlJztcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGxldCBleHBsaWNpdEtleSA9ICFzaW1wbGVLZXlzICYmXG4gICAgICAgICgha2V5IHx8XG4gICAgICAgICAgICAoa2V5Q29tbWVudCAmJiB2YWx1ZSA9PSBudWxsICYmICFjdHguaW5GbG93KSB8fFxuICAgICAgICAgICAgaXNDb2xsZWN0aW9uKGtleSkgfHxcbiAgICAgICAgICAgIChpc1NjYWxhcihrZXkpXG4gICAgICAgICAgICAgICAgPyBrZXkudHlwZSA9PT0gU2NhbGFyLkJMT0NLX0ZPTERFRCB8fCBrZXkudHlwZSA9PT0gU2NhbGFyLkJMT0NLX0xJVEVSQUxcbiAgICAgICAgICAgICAgICA6IHR5cGVvZiBrZXkgPT09ICdvYmplY3QnKSk7XG4gICAgY3R4ID0gT2JqZWN0LmFzc2lnbih7fSwgY3R4LCB7XG4gICAgICAgIGFsbE51bGxWYWx1ZXM6IGZhbHNlLFxuICAgICAgICBpbXBsaWNpdEtleTogIWV4cGxpY2l0S2V5ICYmIChzaW1wbGVLZXlzIHx8ICFhbGxOdWxsVmFsdWVzKSxcbiAgICAgICAgaW5kZW50OiBpbmRlbnQgKyBpbmRlbnRTdGVwXG4gICAgfSk7XG4gICAgbGV0IGtleUNvbW1lbnREb25lID0gZmFsc2U7XG4gICAgbGV0IGNob21wS2VlcCA9IGZhbHNlO1xuICAgIGxldCBzdHIgPSBzdHJpbmdpZnkoa2V5LCBjdHgsICgpID0+IChrZXlDb21tZW50RG9uZSA9IHRydWUpLCAoKSA9PiAoY2hvbXBLZWVwID0gdHJ1ZSkpO1xuICAgIGlmICghZXhwbGljaXRLZXkgJiYgIWN0eC5pbkZsb3cgJiYgc3RyLmxlbmd0aCA+IDEwMjQpIHtcbiAgICAgICAgaWYgKHNpbXBsZUtleXMpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dpdGggc2ltcGxlIGtleXMsIHNpbmdsZSBsaW5lIHNjYWxhciBtdXN0IG5vdCBzcGFuIG1vcmUgdGhhbiAxMDI0IGNoYXJhY3RlcnMnKTtcbiAgICAgICAgZXhwbGljaXRLZXkgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoY3R4LmluRmxvdykge1xuICAgICAgICBpZiAoYWxsTnVsbFZhbHVlcyB8fCB2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoa2V5Q29tbWVudERvbmUgJiYgb25Db21tZW50KVxuICAgICAgICAgICAgICAgIG9uQ29tbWVudCgpO1xuICAgICAgICAgICAgcmV0dXJuIGV4cGxpY2l0S2V5ID8gYD8gJHtzdHJ9YCA6IHN0cjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICgoYWxsTnVsbFZhbHVlcyAmJiAhc2ltcGxlS2V5cykgfHwgKHZhbHVlID09IG51bGwgJiYgZXhwbGljaXRLZXkpKSB7XG4gICAgICAgIHN0ciA9IGA/ICR7c3RyfWA7XG4gICAgICAgIGlmIChrZXlDb21tZW50ICYmICFrZXlDb21tZW50RG9uZSkge1xuICAgICAgICAgICAgc3RyICs9IGxpbmVDb21tZW50KHN0ciwgY3R4LmluZGVudCwgY29tbWVudFN0cmluZyhrZXlDb21tZW50KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hvbXBLZWVwICYmIG9uQ2hvbXBLZWVwKVxuICAgICAgICAgICAgb25DaG9tcEtlZXAoKTtcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG4gICAgaWYgKGtleUNvbW1lbnREb25lKVxuICAgICAgICBrZXlDb21tZW50ID0gbnVsbDtcbiAgICBpZiAoZXhwbGljaXRLZXkpIHtcbiAgICAgICAgaWYgKGtleUNvbW1lbnQpXG4gICAgICAgICAgICBzdHIgKz0gbGluZUNvbW1lbnQoc3RyLCBjdHguaW5kZW50LCBjb21tZW50U3RyaW5nKGtleUNvbW1lbnQpKTtcbiAgICAgICAgc3RyID0gYD8gJHtzdHJ9XFxuJHtpbmRlbnR9OmA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzdHIgPSBgJHtzdHJ9OmA7XG4gICAgICAgIGlmIChrZXlDb21tZW50KVxuICAgICAgICAgICAgc3RyICs9IGxpbmVDb21tZW50KHN0ciwgY3R4LmluZGVudCwgY29tbWVudFN0cmluZyhrZXlDb21tZW50KSk7XG4gICAgfVxuICAgIGxldCB2Y2IgPSAnJztcbiAgICBsZXQgdmFsdWVDb21tZW50ID0gbnVsbDtcbiAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICBpZiAodmFsdWUuc3BhY2VCZWZvcmUpXG4gICAgICAgICAgICB2Y2IgPSAnXFxuJztcbiAgICAgICAgaWYgKHZhbHVlLmNvbW1lbnRCZWZvcmUpIHtcbiAgICAgICAgICAgIGNvbnN0IGNzID0gY29tbWVudFN0cmluZyh2YWx1ZS5jb21tZW50QmVmb3JlKTtcbiAgICAgICAgICAgIHZjYiArPSBgXFxuJHtpbmRlbnRDb21tZW50KGNzLCBjdHguaW5kZW50KX1gO1xuICAgICAgICB9XG4gICAgICAgIHZhbHVlQ29tbWVudCA9IHZhbHVlLmNvbW1lbnQ7XG4gICAgfVxuICAgIGVsc2UgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgdmFsdWUgPSBkb2MuY3JlYXRlTm9kZSh2YWx1ZSk7XG4gICAgfVxuICAgIGN0eC5pbXBsaWNpdEtleSA9IGZhbHNlO1xuICAgIGlmICghZXhwbGljaXRLZXkgJiYgIWtleUNvbW1lbnQgJiYgaXNTY2FsYXIodmFsdWUpKVxuICAgICAgICBjdHguaW5kZW50QXRTdGFydCA9IHN0ci5sZW5ndGggKyAxO1xuICAgIGNob21wS2VlcCA9IGZhbHNlO1xuICAgIGlmICghaW5kZW50U2VxICYmXG4gICAgICAgIGluZGVudFN0ZXAubGVuZ3RoID49IDIgJiZcbiAgICAgICAgIWN0eC5pbkZsb3cgJiZcbiAgICAgICAgIWV4cGxpY2l0S2V5ICYmXG4gICAgICAgIGlzU2VxKHZhbHVlKSAmJlxuICAgICAgICAhdmFsdWUuZmxvdyAmJlxuICAgICAgICAhdmFsdWUudGFnICYmXG4gICAgICAgICF2YWx1ZS5hbmNob3IpIHtcbiAgICAgICAgLy8gSWYgaW5kZW50U2VxID09PSBmYWxzZSwgY29uc2lkZXIgJy0gJyBhcyBwYXJ0IG9mIGluZGVudGF0aW9uIHdoZXJlIHBvc3NpYmxlXG4gICAgICAgIGN0eC5pbmRlbnQgPSBjdHguaW5kZW50LnN1YnN0cigyKTtcbiAgICB9XG4gICAgbGV0IHZhbHVlQ29tbWVudERvbmUgPSBmYWxzZTtcbiAgICBjb25zdCB2YWx1ZVN0ciA9IHN0cmluZ2lmeSh2YWx1ZSwgY3R4LCAoKSA9PiAodmFsdWVDb21tZW50RG9uZSA9IHRydWUpLCAoKSA9PiAoY2hvbXBLZWVwID0gdHJ1ZSkpO1xuICAgIGxldCB3cyA9ICcgJztcbiAgICBpZiAodmNiIHx8IGtleUNvbW1lbnQpIHtcbiAgICAgICAgd3MgPSB2YWx1ZVN0ciA9PT0gJycgJiYgIWN0eC5pbkZsb3cgPyB2Y2IgOiBgJHt2Y2J9XFxuJHtjdHguaW5kZW50fWA7XG4gICAgfVxuICAgIGVsc2UgaWYgKCFleHBsaWNpdEtleSAmJiBpc0NvbGxlY3Rpb24odmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGZsb3cgPSB2YWx1ZVN0clswXSA9PT0gJ1snIHx8IHZhbHVlU3RyWzBdID09PSAneyc7XG4gICAgICAgIGlmICghZmxvdyB8fCB2YWx1ZVN0ci5pbmNsdWRlcygnXFxuJykpXG4gICAgICAgICAgICB3cyA9IGBcXG4ke2N0eC5pbmRlbnR9YDtcbiAgICB9XG4gICAgZWxzZSBpZiAodmFsdWVTdHIgPT09ICcnIHx8IHZhbHVlU3RyWzBdID09PSAnXFxuJylcbiAgICAgICAgd3MgPSAnJztcbiAgICBzdHIgKz0gd3MgKyB2YWx1ZVN0cjtcbiAgICBpZiAoY3R4LmluRmxvdykge1xuICAgICAgICBpZiAodmFsdWVDb21tZW50RG9uZSAmJiBvbkNvbW1lbnQpXG4gICAgICAgICAgICBvbkNvbW1lbnQoKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodmFsdWVDb21tZW50ICYmICF2YWx1ZUNvbW1lbnREb25lKSB7XG4gICAgICAgIHN0ciArPSBsaW5lQ29tbWVudChzdHIsIGN0eC5pbmRlbnQsIGNvbW1lbnRTdHJpbmcodmFsdWVDb21tZW50KSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNob21wS2VlcCAmJiBvbkNob21wS2VlcCkge1xuICAgICAgICBvbkNob21wS2VlcCgpO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xufVxuXG5leHBvcnQgeyBzdHJpbmdpZnlQYWlyIH07XG4iLCJmdW5jdGlvbiBkZWJ1Zyhsb2dMZXZlbCwgLi4ubWVzc2FnZXMpIHtcbiAgICBpZiAobG9nTGV2ZWwgPT09ICdkZWJ1ZycpXG4gICAgICAgIGNvbnNvbGUubG9nKC4uLm1lc3NhZ2VzKTtcbn1cbmZ1bmN0aW9uIHdhcm4obG9nTGV2ZWwsIHdhcm5pbmcpIHtcbiAgICBpZiAobG9nTGV2ZWwgPT09ICdkZWJ1ZycgfHwgbG9nTGV2ZWwgPT09ICd3YXJuJykge1xuICAgICAgICBpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW1pdFdhcm5pbmcpXG4gICAgICAgICAgICBwcm9jZXNzLmVtaXRXYXJuaW5nKHdhcm5pbmcpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBjb25zb2xlLndhcm4od2FybmluZyk7XG4gICAgfVxufVxuXG5leHBvcnQgeyBkZWJ1Zywgd2FybiB9O1xuIiwiaW1wb3J0IHsgd2FybiB9IGZyb20gJy4uL2xvZy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTdHJpbmdpZnlDb250ZXh0IH0gZnJvbSAnLi4vc3RyaW5naWZ5L3N0cmluZ2lmeS5qcyc7XG5pbXBvcnQgeyBpc0FsaWFzLCBpc1NlcSwgaXNTY2FsYXIsIGlzTWFwLCBpc05vZGUgfSBmcm9tICcuL05vZGUuanMnO1xuaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi9TY2FsYXIuanMnO1xuaW1wb3J0IHsgdG9KUyB9IGZyb20gJy4vdG9KUy5qcyc7XG5cbmNvbnN0IE1FUkdFX0tFWSA9ICc8PCc7XG5mdW5jdGlvbiBhZGRQYWlyVG9KU01hcChjdHgsIG1hcCwgeyBrZXksIHZhbHVlIH0pIHtcbiAgICBpZiAoY3R4ICYmIGN0eC5kb2Muc2NoZW1hLm1lcmdlICYmIGlzTWVyZ2VLZXkoa2V5KSkge1xuICAgICAgICB2YWx1ZSA9IGlzQWxpYXModmFsdWUpID8gdmFsdWUucmVzb2x2ZShjdHguZG9jKSA6IHZhbHVlO1xuICAgICAgICBpZiAoaXNTZXEodmFsdWUpKVxuICAgICAgICAgICAgZm9yIChjb25zdCBpdCBvZiB2YWx1ZS5pdGVtcylcbiAgICAgICAgICAgICAgICBtZXJnZVRvSlNNYXAoY3R4LCBtYXAsIGl0KTtcbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0IG9mIHZhbHVlKVxuICAgICAgICAgICAgICAgIG1lcmdlVG9KU01hcChjdHgsIG1hcCwgaXQpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBtZXJnZVRvSlNNYXAoY3R4LCBtYXAsIHZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IGpzS2V5ID0gdG9KUyhrZXksICcnLCBjdHgpO1xuICAgICAgICBpZiAobWFwIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgICAgICBtYXAuc2V0KGpzS2V5LCB0b0pTKHZhbHVlLCBqc0tleSwgY3R4KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWFwIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICAgICAgICBtYXAuYWRkKGpzS2V5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHN0cmluZ0tleSA9IHN0cmluZ2lmeUtleShrZXksIGpzS2V5LCBjdHgpO1xuICAgICAgICAgICAgY29uc3QganNWYWx1ZSA9IHRvSlModmFsdWUsIHN0cmluZ0tleSwgY3R4KTtcbiAgICAgICAgICAgIGlmIChzdHJpbmdLZXkgaW4gbWFwKVxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtYXAsIHN0cmluZ0tleSwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZToganNWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1hcFtzdHJpbmdLZXldID0ganNWYWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWFwO1xufVxuY29uc3QgaXNNZXJnZUtleSA9IChrZXkpID0+IGtleSA9PT0gTUVSR0VfS0VZIHx8XG4gICAgKGlzU2NhbGFyKGtleSkgJiZcbiAgICAgICAga2V5LnZhbHVlID09PSBNRVJHRV9LRVkgJiZcbiAgICAgICAgKCFrZXkudHlwZSB8fCBrZXkudHlwZSA9PT0gU2NhbGFyLlBMQUlOKSk7XG4vLyBJZiB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEgbWVyZ2Uga2V5IGlzIGEgc2luZ2xlIG1hcHBpbmcgbm9kZSwgZWFjaCBvZlxuLy8gaXRzIGtleS92YWx1ZSBwYWlycyBpcyBpbnNlcnRlZCBpbnRvIHRoZSBjdXJyZW50IG1hcHBpbmcsIHVubGVzcyB0aGUga2V5XG4vLyBhbHJlYWR5IGV4aXN0cyBpbiBpdC4gSWYgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWVyZ2Uga2V5IGlzIGFcbi8vIHNlcXVlbmNlLCB0aGVuIHRoaXMgc2VxdWVuY2UgaXMgZXhwZWN0ZWQgdG8gY29udGFpbiBtYXBwaW5nIG5vZGVzIGFuZCBlYWNoXG4vLyBvZiB0aGVzZSBub2RlcyBpcyBtZXJnZWQgaW4gdHVybiBhY2NvcmRpbmcgdG8gaXRzIG9yZGVyIGluIHRoZSBzZXF1ZW5jZS5cbi8vIEtleXMgaW4gbWFwcGluZyBub2RlcyBlYXJsaWVyIGluIHRoZSBzZXF1ZW5jZSBvdmVycmlkZSBrZXlzIHNwZWNpZmllZCBpblxuLy8gbGF0ZXIgbWFwcGluZyBub2Rlcy4gLS0gaHR0cDovL3lhbWwub3JnL3R5cGUvbWVyZ2UuaHRtbFxuZnVuY3Rpb24gbWVyZ2VUb0pTTWFwKGN0eCwgbWFwLCB2YWx1ZSkge1xuICAgIGNvbnN0IHNvdXJjZSA9IGN0eCAmJiBpc0FsaWFzKHZhbHVlKSA/IHZhbHVlLnJlc29sdmUoY3R4LmRvYykgOiB2YWx1ZTtcbiAgICBpZiAoIWlzTWFwKHNvdXJjZSkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWVyZ2Ugc291cmNlcyBtdXN0IGJlIG1hcHMgb3IgbWFwIGFsaWFzZXMnKTtcbiAgICBjb25zdCBzcmNNYXAgPSBzb3VyY2UudG9KU09OKG51bGwsIGN0eCwgTWFwKTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBzcmNNYXApIHtcbiAgICAgICAgaWYgKG1hcCBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICAgICAgaWYgKCFtYXAuaGFzKGtleSkpXG4gICAgICAgICAgICAgICAgbWFwLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtYXAgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgICAgICAgIG1hcC5hZGQoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1hcCwga2V5KSkge1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG1hcCwga2V5LCB7XG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXA7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnlLZXkoa2V5LCBqc0tleSwgY3R4KSB7XG4gICAgaWYgKGpzS2V5ID09PSBudWxsKVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgaWYgKHR5cGVvZiBqc0tleSAhPT0gJ29iamVjdCcpXG4gICAgICAgIHJldHVybiBTdHJpbmcoanNLZXkpO1xuICAgIGlmIChpc05vZGUoa2V5KSAmJiBjdHggJiYgY3R4LmRvYykge1xuICAgICAgICBjb25zdCBzdHJDdHggPSBjcmVhdGVTdHJpbmdpZnlDb250ZXh0KGN0eC5kb2MsIHt9KTtcbiAgICAgICAgc3RyQ3R4LmFuY2hvcnMgPSBuZXcgU2V0KCk7XG4gICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBjdHguYW5jaG9ycy5rZXlzKCkpXG4gICAgICAgICAgICBzdHJDdHguYW5jaG9ycy5hZGQobm9kZS5hbmNob3IpO1xuICAgICAgICBzdHJDdHguaW5GbG93ID0gdHJ1ZTtcbiAgICAgICAgc3RyQ3R4LmluU3RyaW5naWZ5S2V5ID0gdHJ1ZTtcbiAgICAgICAgY29uc3Qgc3RyS2V5ID0ga2V5LnRvU3RyaW5nKHN0ckN0eCk7XG4gICAgICAgIGlmICghY3R4Lm1hcEtleVdhcm5lZCkge1xuICAgICAgICAgICAgbGV0IGpzb25TdHIgPSBKU09OLnN0cmluZ2lmeShzdHJLZXkpO1xuICAgICAgICAgICAgaWYgKGpzb25TdHIubGVuZ3RoID4gNDApXG4gICAgICAgICAgICAgICAganNvblN0ciA9IGpzb25TdHIuc3Vic3RyaW5nKDAsIDM2KSArICcuLi5cIic7XG4gICAgICAgICAgICB3YXJuKGN0eC5kb2Mub3B0aW9ucy5sb2dMZXZlbCwgYEtleXMgd2l0aCBjb2xsZWN0aW9uIHZhbHVlcyB3aWxsIGJlIHN0cmluZ2lmaWVkIGR1ZSB0byBKUyBPYmplY3QgcmVzdHJpY3Rpb25zOiAke2pzb25TdHJ9LiBTZXQgbWFwQXNNYXA6IHRydWUgdG8gdXNlIG9iamVjdCBrZXlzLmApO1xuICAgICAgICAgICAgY3R4Lm1hcEtleVdhcm5lZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0cktleTtcbiAgICB9XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGpzS2V5KTtcbn1cblxuZXhwb3J0IHsgYWRkUGFpclRvSlNNYXAgfTtcbiIsImltcG9ydCB7IGNyZWF0ZU5vZGUgfSBmcm9tICcuLi9kb2MvY3JlYXRlTm9kZS5qcyc7XG5pbXBvcnQgeyBzdHJpbmdpZnlQYWlyIH0gZnJvbSAnLi4vc3RyaW5naWZ5L3N0cmluZ2lmeVBhaXIuanMnO1xuaW1wb3J0IHsgYWRkUGFpclRvSlNNYXAgfSBmcm9tICcuL2FkZFBhaXJUb0pTTWFwLmpzJztcbmltcG9ydCB7IE5PREVfVFlQRSwgUEFJUiwgaXNOb2RlIH0gZnJvbSAnLi9Ob2RlLmpzJztcblxuZnVuY3Rpb24gY3JlYXRlUGFpcihrZXksIHZhbHVlLCBjdHgpIHtcbiAgICBjb25zdCBrID0gY3JlYXRlTm9kZShrZXksIHVuZGVmaW5lZCwgY3R4KTtcbiAgICBjb25zdCB2ID0gY3JlYXRlTm9kZSh2YWx1ZSwgdW5kZWZpbmVkLCBjdHgpO1xuICAgIHJldHVybiBuZXcgUGFpcihrLCB2KTtcbn1cbmNsYXNzIFBhaXIge1xuICAgIGNvbnN0cnVjdG9yKGtleSwgdmFsdWUgPSBudWxsKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBOT0RFX1RZUEUsIHsgdmFsdWU6IFBBSVIgfSk7XG4gICAgICAgIHRoaXMua2V5ID0ga2V5O1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGNsb25lKHNjaGVtYSkge1xuICAgICAgICBsZXQgeyBrZXksIHZhbHVlIH0gPSB0aGlzO1xuICAgICAgICBpZiAoaXNOb2RlKGtleSkpXG4gICAgICAgICAgICBrZXkgPSBrZXkuY2xvbmUoc2NoZW1hKTtcbiAgICAgICAgaWYgKGlzTm9kZSh2YWx1ZSkpXG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmNsb25lKHNjaGVtYSk7XG4gICAgICAgIHJldHVybiBuZXcgUGFpcihrZXksIHZhbHVlKTtcbiAgICB9XG4gICAgdG9KU09OKF8sIGN0eCkge1xuICAgICAgICBjb25zdCBwYWlyID0gY3R4ICYmIGN0eC5tYXBBc01hcCA/IG5ldyBNYXAoKSA6IHt9O1xuICAgICAgICByZXR1cm4gYWRkUGFpclRvSlNNYXAoY3R4LCBwYWlyLCB0aGlzKTtcbiAgICB9XG4gICAgdG9TdHJpbmcoY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgICAgIHJldHVybiBjdHggJiYgY3R4LmRvY1xuICAgICAgICAgICAgPyBzdHJpbmdpZnlQYWlyKHRoaXMsIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcClcbiAgICAgICAgICAgIDogSlNPTi5zdHJpbmdpZnkodGhpcyk7XG4gICAgfVxufVxuXG5leHBvcnQgeyBQYWlyLCBjcmVhdGVQYWlyIH07XG4iLCIvKipcbiAqIGB5YW1sYCBkZWZpbmVzIGRvY3VtZW50LXNwZWNpZmljIG9wdGlvbnMgaW4gdGhyZWUgcGxhY2VzOiBhcyBhbiBhcmd1bWVudCBvZlxuICogcGFyc2UsIGNyZWF0ZSBhbmQgc3RyaW5naWZ5IGNhbGxzLCBpbiB0aGUgdmFsdWVzIG9mIGBZQU1MLmRlZmF1bHRPcHRpb25zYCxcbiAqIGFuZCBpbiB0aGUgdmVyc2lvbi1kZXBlbmRlbnQgYFlBTUwuRG9jdW1lbnQuZGVmYXVsdHNgIG9iamVjdC4gVmFsdWVzIHNldCBpblxuICogYFlBTUwuZGVmYXVsdE9wdGlvbnNgIG92ZXJyaWRlIHZlcnNpb24tZGVwZW5kZW50IGRlZmF1bHRzLCBhbmQgYXJndW1lbnRcbiAqIG9wdGlvbnMgb3ZlcnJpZGUgYm90aC5cbiAqL1xuY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgaW50QXNCaWdJbnQ6IGZhbHNlLFxuICAgIGtlZXBTb3VyY2VUb2tlbnM6IGZhbHNlLFxuICAgIGxvZ0xldmVsOiAnd2FybicsXG4gICAgcHJldHR5RXJyb3JzOiB0cnVlLFxuICAgIHN0cmljdDogdHJ1ZSxcbiAgICB1bmlxdWVLZXlzOiB0cnVlLFxuICAgIHZlcnNpb246ICcxLjInXG59O1xuXG5leHBvcnQgeyBkZWZhdWx0T3B0aW9ucyB9O1xuIiwiaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4uL25vZGVzL0NvbGxlY3Rpb24uanMnO1xuaW1wb3J0IHsgaXNOb2RlLCBpc1BhaXIgfSBmcm9tICcuLi9ub2Rlcy9Ob2RlLmpzJztcbmltcG9ydCB7IHN0cmluZ2lmeSB9IGZyb20gJy4vc3RyaW5naWZ5LmpzJztcbmltcG9ydCB7IGxpbmVDb21tZW50LCBpbmRlbnRDb21tZW50IH0gZnJvbSAnLi9zdHJpbmdpZnlDb21tZW50LmpzJztcblxuZnVuY3Rpb24gc3RyaW5naWZ5Q29sbGVjdGlvbihjb2xsZWN0aW9uLCBjdHgsIG9wdGlvbnMpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgZmxvdyA9IChfYSA9IGN0eC5pbkZsb3cpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGNvbGxlY3Rpb24uZmxvdztcbiAgICBjb25zdCBzdHJpbmdpZnkgPSBmbG93ID8gc3RyaW5naWZ5Rmxvd0NvbGxlY3Rpb24gOiBzdHJpbmdpZnlCbG9ja0NvbGxlY3Rpb247XG4gICAgcmV0dXJuIHN0cmluZ2lmeShjb2xsZWN0aW9uLCBjdHgsIG9wdGlvbnMpO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5QmxvY2tDb2xsZWN0aW9uKHsgY29tbWVudCwgaXRlbXMgfSwgY3R4LCB7IGJsb2NrSXRlbVByZWZpeCwgZmxvd0NoYXJzLCBpdGVtSW5kZW50LCBvbkNob21wS2VlcCwgb25Db21tZW50IH0pIHtcbiAgICBjb25zdCB7IGluZGVudCwgb3B0aW9uczogeyBjb21tZW50U3RyaW5nIH0gfSA9IGN0eDtcbiAgICBjb25zdCBpdGVtQ3R4ID0gT2JqZWN0LmFzc2lnbih7fSwgY3R4LCB7IGluZGVudDogaXRlbUluZGVudCwgdHlwZTogbnVsbCB9KTtcbiAgICBsZXQgY2hvbXBLZWVwID0gZmFsc2U7IC8vIGZsYWcgZm9yIHRoZSBwcmVjZWRpbmcgbm9kZSdzIHN0YXR1c1xuICAgIGNvbnN0IGxpbmVzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7ICsraSkge1xuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaV07XG4gICAgICAgIGxldCBjb21tZW50ID0gbnVsbDtcbiAgICAgICAgaWYgKGlzTm9kZShpdGVtKSkge1xuICAgICAgICAgICAgaWYgKCFjaG9tcEtlZXAgJiYgaXRlbS5zcGFjZUJlZm9yZSlcbiAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICAgICAgICAgIGFkZENvbW1lbnRCZWZvcmUoY3R4LCBsaW5lcywgaXRlbS5jb21tZW50QmVmb3JlLCBjaG9tcEtlZXApO1xuICAgICAgICAgICAgaWYgKGl0ZW0uY29tbWVudClcbiAgICAgICAgICAgICAgICBjb21tZW50ID0gaXRlbS5jb21tZW50O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzUGFpcihpdGVtKSkge1xuICAgICAgICAgICAgY29uc3QgaWsgPSBpc05vZGUoaXRlbS5rZXkpID8gaXRlbS5rZXkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGlrKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjaG9tcEtlZXAgJiYgaWsuc3BhY2VCZWZvcmUpXG4gICAgICAgICAgICAgICAgICAgIGxpbmVzLnB1c2goJycpO1xuICAgICAgICAgICAgICAgIGFkZENvbW1lbnRCZWZvcmUoY3R4LCBsaW5lcywgaWsuY29tbWVudEJlZm9yZSwgY2hvbXBLZWVwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjaG9tcEtlZXAgPSBmYWxzZTtcbiAgICAgICAgbGV0IHN0ciA9IHN0cmluZ2lmeShpdGVtLCBpdGVtQ3R4LCAoKSA9PiAoY29tbWVudCA9IG51bGwpLCAoKSA9PiAoY2hvbXBLZWVwID0gdHJ1ZSkpO1xuICAgICAgICBpZiAoY29tbWVudClcbiAgICAgICAgICAgIHN0ciArPSBsaW5lQ29tbWVudChzdHIsIGl0ZW1JbmRlbnQsIGNvbW1lbnRTdHJpbmcoY29tbWVudCkpO1xuICAgICAgICBpZiAoY2hvbXBLZWVwICYmIGNvbW1lbnQpXG4gICAgICAgICAgICBjaG9tcEtlZXAgPSBmYWxzZTtcbiAgICAgICAgbGluZXMucHVzaChibG9ja0l0ZW1QcmVmaXggKyBzdHIpO1xuICAgIH1cbiAgICBsZXQgc3RyO1xuICAgIGlmIChsaW5lcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgc3RyID0gZmxvd0NoYXJzLnN0YXJ0ICsgZmxvd0NoYXJzLmVuZDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN0ciA9IGxpbmVzWzBdO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGxpbmVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBjb25zdCBsaW5lID0gbGluZXNbaV07XG4gICAgICAgICAgICBzdHIgKz0gbGluZSA/IGBcXG4ke2luZGVudH0ke2xpbmV9YCA6ICdcXG4nO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChjb21tZW50KSB7XG4gICAgICAgIHN0ciArPSAnXFxuJyArIGluZGVudENvbW1lbnQoY29tbWVudFN0cmluZyhjb21tZW50KSwgaW5kZW50KTtcbiAgICAgICAgaWYgKG9uQ29tbWVudClcbiAgICAgICAgICAgIG9uQ29tbWVudCgpO1xuICAgIH1cbiAgICBlbHNlIGlmIChjaG9tcEtlZXAgJiYgb25DaG9tcEtlZXApXG4gICAgICAgIG9uQ2hvbXBLZWVwKCk7XG4gICAgcmV0dXJuIHN0cjtcbn1cbmZ1bmN0aW9uIHN0cmluZ2lmeUZsb3dDb2xsZWN0aW9uKHsgY29tbWVudCwgaXRlbXMgfSwgY3R4LCB7IGZsb3dDaGFycywgaXRlbUluZGVudCwgb25Db21tZW50IH0pIHtcbiAgICBjb25zdCB7IGluZGVudCwgaW5kZW50U3RlcCwgb3B0aW9uczogeyBjb21tZW50U3RyaW5nIH0gfSA9IGN0eDtcbiAgICBpdGVtSW5kZW50ICs9IGluZGVudFN0ZXA7XG4gICAgY29uc3QgaXRlbUN0eCA9IE9iamVjdC5hc3NpZ24oe30sIGN0eCwge1xuICAgICAgICBpbmRlbnQ6IGl0ZW1JbmRlbnQsXG4gICAgICAgIGluRmxvdzogdHJ1ZSxcbiAgICAgICAgdHlwZTogbnVsbFxuICAgIH0pO1xuICAgIGxldCByZXFOZXdsaW5lID0gZmFsc2U7XG4gICAgbGV0IGxpbmVzQXRWYWx1ZSA9IDA7XG4gICAgY29uc3QgbGluZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1tpXTtcbiAgICAgICAgbGV0IGNvbW1lbnQgPSBudWxsO1xuICAgICAgICBpZiAoaXNOb2RlKGl0ZW0pKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5zcGFjZUJlZm9yZSlcbiAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICAgICAgICAgIGFkZENvbW1lbnRCZWZvcmUoY3R4LCBsaW5lcywgaXRlbS5jb21tZW50QmVmb3JlLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoaXRlbS5jb21tZW50KVxuICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBpdGVtLmNvbW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNQYWlyKGl0ZW0pKSB7XG4gICAgICAgICAgICBjb25zdCBpayA9IGlzTm9kZShpdGVtLmtleSkgPyBpdGVtLmtleSA6IG51bGw7XG4gICAgICAgICAgICBpZiAoaWspIHtcbiAgICAgICAgICAgICAgICBpZiAoaWsuc3BhY2VCZWZvcmUpXG4gICAgICAgICAgICAgICAgICAgIGxpbmVzLnB1c2goJycpO1xuICAgICAgICAgICAgICAgIGFkZENvbW1lbnRCZWZvcmUoY3R4LCBsaW5lcywgaWsuY29tbWVudEJlZm9yZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmIChpay5jb21tZW50KVxuICAgICAgICAgICAgICAgICAgICByZXFOZXdsaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGl2ID0gaXNOb2RlKGl0ZW0udmFsdWUpID8gaXRlbS52YWx1ZSA6IG51bGw7XG4gICAgICAgICAgICBpZiAoaXYpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXYuY29tbWVudClcbiAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9IGl2LmNvbW1lbnQ7XG4gICAgICAgICAgICAgICAgaWYgKGl2LmNvbW1lbnRCZWZvcmUpXG4gICAgICAgICAgICAgICAgICAgIHJlcU5ld2xpbmUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXRlbS52YWx1ZSA9PSBudWxsICYmIGlrICYmIGlrLmNvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICBjb21tZW50ID0gaWsuY29tbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tbWVudClcbiAgICAgICAgICAgIHJlcU5ld2xpbmUgPSB0cnVlO1xuICAgICAgICBsZXQgc3RyID0gc3RyaW5naWZ5KGl0ZW0sIGl0ZW1DdHgsICgpID0+IChjb21tZW50ID0gbnVsbCkpO1xuICAgICAgICBpZiAoaSA8IGl0ZW1zLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICBzdHIgKz0gJywnO1xuICAgICAgICBpZiAoY29tbWVudClcbiAgICAgICAgICAgIHN0ciArPSBsaW5lQ29tbWVudChzdHIsIGl0ZW1JbmRlbnQsIGNvbW1lbnRTdHJpbmcoY29tbWVudCkpO1xuICAgICAgICBpZiAoIXJlcU5ld2xpbmUgJiYgKGxpbmVzLmxlbmd0aCA+IGxpbmVzQXRWYWx1ZSB8fCBzdHIuaW5jbHVkZXMoJ1xcbicpKSlcbiAgICAgICAgICAgIHJlcU5ld2xpbmUgPSB0cnVlO1xuICAgICAgICBsaW5lcy5wdXNoKHN0cik7XG4gICAgICAgIGxpbmVzQXRWYWx1ZSA9IGxpbmVzLmxlbmd0aDtcbiAgICB9XG4gICAgbGV0IHN0cjtcbiAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IGZsb3dDaGFycztcbiAgICBpZiAobGluZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHN0ciA9IHN0YXJ0ICsgZW5kO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaWYgKCFyZXFOZXdsaW5lKSB7XG4gICAgICAgICAgICBjb25zdCBsZW4gPSBsaW5lcy5yZWR1Y2UoKHN1bSwgbGluZSkgPT4gc3VtICsgbGluZS5sZW5ndGggKyAyLCAyKTtcbiAgICAgICAgICAgIHJlcU5ld2xpbmUgPSBsZW4gPiBDb2xsZWN0aW9uLm1heEZsb3dTdHJpbmdTaW5nbGVMaW5lTGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXFOZXdsaW5lKSB7XG4gICAgICAgICAgICBzdHIgPSBzdGFydDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcylcbiAgICAgICAgICAgICAgICBzdHIgKz0gbGluZSA/IGBcXG4ke2luZGVudFN0ZXB9JHtpbmRlbnR9JHtsaW5lfWAgOiAnXFxuJztcbiAgICAgICAgICAgIHN0ciArPSBgXFxuJHtpbmRlbnR9JHtlbmR9YDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN0ciA9IGAke3N0YXJ0fSAke2xpbmVzLmpvaW4oJyAnKX0gJHtlbmR9YDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoY29tbWVudCkge1xuICAgICAgICBzdHIgKz0gbGluZUNvbW1lbnQoc3RyLCBjb21tZW50U3RyaW5nKGNvbW1lbnQpLCBpbmRlbnQpO1xuICAgICAgICBpZiAob25Db21tZW50KVxuICAgICAgICAgICAgb25Db21tZW50KCk7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG59XG5mdW5jdGlvbiBhZGRDb21tZW50QmVmb3JlKHsgaW5kZW50LCBvcHRpb25zOiB7IGNvbW1lbnRTdHJpbmcgfSB9LCBsaW5lcywgY29tbWVudCwgY2hvbXBLZWVwKSB7XG4gICAgaWYgKGNvbW1lbnQgJiYgY2hvbXBLZWVwKVxuICAgICAgICBjb21tZW50ID0gY29tbWVudC5yZXBsYWNlKC9eXFxuKy8sICcnKTtcbiAgICBpZiAoY29tbWVudCkge1xuICAgICAgICBjb25zdCBpYyA9IGluZGVudENvbW1lbnQoY29tbWVudFN0cmluZyhjb21tZW50KSwgaW5kZW50KTtcbiAgICAgICAgbGluZXMucHVzaChpYy50cmltU3RhcnQoKSk7IC8vIEF2b2lkIGRvdWJsZSBpbmRlbnQgb24gZmlyc3QgbGluZVxuICAgIH1cbn1cblxuZXhwb3J0IHsgc3RyaW5naWZ5Q29sbGVjdGlvbiB9O1xuIiwiaW1wb3J0IHsgc3RyaW5naWZ5Q29sbGVjdGlvbiB9IGZyb20gJy4uL3N0cmluZ2lmeS9zdHJpbmdpZnlDb2xsZWN0aW9uLmpzJztcbmltcG9ydCB7IGFkZFBhaXJUb0pTTWFwIH0gZnJvbSAnLi9hZGRQYWlyVG9KU01hcC5qcyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi9Db2xsZWN0aW9uLmpzJztcbmltcG9ydCB7IGlzUGFpciwgaXNTY2FsYXIsIE1BUCB9IGZyb20gJy4vTm9kZS5qcyc7XG5pbXBvcnQgeyBQYWlyIH0gZnJvbSAnLi9QYWlyLmpzJztcbmltcG9ydCB7IGlzU2NhbGFyVmFsdWUgfSBmcm9tICcuL1NjYWxhci5qcyc7XG5cbmZ1bmN0aW9uIGZpbmRQYWlyKGl0ZW1zLCBrZXkpIHtcbiAgICBjb25zdCBrID0gaXNTY2FsYXIoa2V5KSA/IGtleS52YWx1ZSA6IGtleTtcbiAgICBmb3IgKGNvbnN0IGl0IG9mIGl0ZW1zKSB7XG4gICAgICAgIGlmIChpc1BhaXIoaXQpKSB7XG4gICAgICAgICAgICBpZiAoaXQua2V5ID09PSBrZXkgfHwgaXQua2V5ID09PSBrKVxuICAgICAgICAgICAgICAgIHJldHVybiBpdDtcbiAgICAgICAgICAgIGlmIChpc1NjYWxhcihpdC5rZXkpICYmIGl0LmtleS52YWx1ZSA9PT0gaylcbiAgICAgICAgICAgICAgICByZXR1cm4gaXQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbmNsYXNzIFlBTUxNYXAgZXh0ZW5kcyBDb2xsZWN0aW9uIHtcbiAgICBjb25zdHJ1Y3RvcihzY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoTUFQLCBzY2hlbWEpO1xuICAgICAgICB0aGlzLml0ZW1zID0gW107XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgdGFnTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuICd0YWc6eWFtbC5vcmcsMjAwMjptYXAnO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgdmFsdWUgdG8gdGhlIGNvbGxlY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3ZlcndyaXRlIC0gSWYgbm90IHNldCBgdHJ1ZWAsIHVzaW5nIGEga2V5IHRoYXQgaXMgYWxyZWFkeSBpbiB0aGVcbiAgICAgKiAgIGNvbGxlY3Rpb24gd2lsbCB0aHJvdy4gT3RoZXJ3aXNlLCBvdmVyd3JpdGVzIHRoZSBwcmV2aW91cyB2YWx1ZS5cbiAgICAgKi9cbiAgICBhZGQocGFpciwgb3ZlcndyaXRlKSB7XG4gICAgICAgIGxldCBfcGFpcjtcbiAgICAgICAgaWYgKGlzUGFpcihwYWlyKSlcbiAgICAgICAgICAgIF9wYWlyID0gcGFpcjtcbiAgICAgICAgZWxzZSBpZiAoIXBhaXIgfHwgdHlwZW9mIHBhaXIgIT09ICdvYmplY3QnIHx8ICEoJ2tleScgaW4gcGFpcikpIHtcbiAgICAgICAgICAgIC8vIEluIFR5cGVTY3JpcHQsIHRoaXMgbmV2ZXIgaGFwcGVucy5cbiAgICAgICAgICAgIF9wYWlyID0gbmV3IFBhaXIocGFpciwgcGFpci52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgX3BhaXIgPSBuZXcgUGFpcihwYWlyLmtleSwgcGFpci52YWx1ZSk7XG4gICAgICAgIGNvbnN0IHByZXYgPSBmaW5kUGFpcih0aGlzLml0ZW1zLCBfcGFpci5rZXkpO1xuICAgICAgICBjb25zdCBzb3J0RW50cmllcyA9IHRoaXMuc2NoZW1hICYmIHRoaXMuc2NoZW1hLnNvcnRNYXBFbnRyaWVzO1xuICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgICAgaWYgKCFvdmVyd3JpdGUpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBLZXkgJHtfcGFpci5rZXl9IGFscmVhZHkgc2V0YCk7XG4gICAgICAgICAgICAvLyBGb3Igc2NhbGFycywga2VlcCB0aGUgb2xkIG5vZGUgJiBpdHMgY29tbWVudHMgYW5kIGFuY2hvcnNcbiAgICAgICAgICAgIGlmIChpc1NjYWxhcihwcmV2LnZhbHVlKSAmJiBpc1NjYWxhclZhbHVlKF9wYWlyLnZhbHVlKSlcbiAgICAgICAgICAgICAgICBwcmV2LnZhbHVlLnZhbHVlID0gX3BhaXIudmFsdWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcHJldi52YWx1ZSA9IF9wYWlyLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHNvcnRFbnRyaWVzKSB7XG4gICAgICAgICAgICBjb25zdCBpID0gdGhpcy5pdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBzb3J0RW50cmllcyhfcGFpciwgaXRlbSkgPCAwKTtcbiAgICAgICAgICAgIGlmIChpID09PSAtMSlcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goX3BhaXIpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGksIDAsIF9wYWlyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChfcGFpcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGVsZXRlKGtleSkge1xuICAgICAgICBjb25zdCBpdCA9IGZpbmRQYWlyKHRoaXMuaXRlbXMsIGtleSk7XG4gICAgICAgIGlmICghaXQpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IGRlbCA9IHRoaXMuaXRlbXMuc3BsaWNlKHRoaXMuaXRlbXMuaW5kZXhPZihpdCksIDEpO1xuICAgICAgICByZXR1cm4gZGVsLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIGdldChrZXksIGtlZXBTY2FsYXIpIHtcbiAgICAgICAgY29uc3QgaXQgPSBmaW5kUGFpcih0aGlzLml0ZW1zLCBrZXkpO1xuICAgICAgICBjb25zdCBub2RlID0gaXQgJiYgaXQudmFsdWU7XG4gICAgICAgIHJldHVybiAha2VlcFNjYWxhciAmJiBpc1NjYWxhcihub2RlKSA/IG5vZGUudmFsdWUgOiBub2RlO1xuICAgIH1cbiAgICBoYXMoa2V5KSB7XG4gICAgICAgIHJldHVybiAhIWZpbmRQYWlyKHRoaXMuaXRlbXMsIGtleSk7XG4gICAgfVxuICAgIHNldChrZXksIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuYWRkKG5ldyBQYWlyKGtleSwgdmFsdWUpLCB0cnVlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHBhcmFtIGN0eCAtIENvbnZlcnNpb24gY29udGV4dCwgb3JpZ2luYWxseSBzZXQgaW4gRG9jdW1lbnQjdG9KUygpXG4gICAgICogQHBhcmFtIHtDbGFzc30gVHlwZSAtIElmIHNldCwgZm9yY2VzIHRoZSByZXR1cm5lZCBjb2xsZWN0aW9uIHR5cGVcbiAgICAgKiBAcmV0dXJucyBJbnN0YW5jZSBvZiBUeXBlLCBNYXAsIG9yIE9iamVjdFxuICAgICAqL1xuICAgIHRvSlNPTihfLCBjdHgsIFR5cGUpIHtcbiAgICAgICAgY29uc3QgbWFwID0gVHlwZSA/IG5ldyBUeXBlKCkgOiBjdHggJiYgY3R4Lm1hcEFzTWFwID8gbmV3IE1hcCgpIDoge307XG4gICAgICAgIGlmIChjdHggJiYgY3R4Lm9uQ3JlYXRlKVxuICAgICAgICAgICAgY3R4Lm9uQ3JlYXRlKG1hcCk7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLml0ZW1zKVxuICAgICAgICAgICAgYWRkUGFpclRvSlNNYXAoY3R4LCBtYXAsIGl0ZW0pO1xuICAgICAgICByZXR1cm4gbWFwO1xuICAgIH1cbiAgICB0b1N0cmluZyhjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApIHtcbiAgICAgICAgaWYgKCFjdHgpXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcyk7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLml0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoIWlzUGFpcihpdGVtKSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1hcCBpdGVtcyBtdXN0IGFsbCBiZSBwYWlyczsgZm91bmQgJHtKU09OLnN0cmluZ2lmeShpdGVtKX0gaW5zdGVhZGApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3R4LmFsbE51bGxWYWx1ZXMgJiYgdGhpcy5oYXNBbGxOdWxsVmFsdWVzKGZhbHNlKSlcbiAgICAgICAgICAgIGN0eCA9IE9iamVjdC5hc3NpZ24oe30sIGN0eCwgeyBhbGxOdWxsVmFsdWVzOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gc3RyaW5naWZ5Q29sbGVjdGlvbih0aGlzLCBjdHgsIHtcbiAgICAgICAgICAgIGJsb2NrSXRlbVByZWZpeDogJycsXG4gICAgICAgICAgICBmbG93Q2hhcnM6IHsgc3RhcnQ6ICd7JywgZW5kOiAnfScgfSxcbiAgICAgICAgICAgIGl0ZW1JbmRlbnQ6IGN0eC5pbmRlbnQgfHwgJycsXG4gICAgICAgICAgICBvbkNob21wS2VlcCxcbiAgICAgICAgICAgIG9uQ29tbWVudFxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCB7IFlBTUxNYXAsIGZpbmRQYWlyIH07XG4iLCJpbXBvcnQgeyBpc01hcCB9IGZyb20gJy4uLy4uL25vZGVzL05vZGUuanMnO1xuaW1wb3J0IHsgY3JlYXRlUGFpciB9IGZyb20gJy4uLy4uL25vZGVzL1BhaXIuanMnO1xuaW1wb3J0IHsgWUFNTE1hcCB9IGZyb20gJy4uLy4uL25vZGVzL1lBTUxNYXAuanMnO1xuXG5mdW5jdGlvbiBjcmVhdGVNYXAoc2NoZW1hLCBvYmosIGN0eCkge1xuICAgIGNvbnN0IHsga2VlcFVuZGVmaW5lZCwgcmVwbGFjZXIgfSA9IGN0eDtcbiAgICBjb25zdCBtYXAgPSBuZXcgWUFNTE1hcChzY2hlbWEpO1xuICAgIGNvbnN0IGFkZCA9IChrZXksIHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVwbGFjZXIgPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICB2YWx1ZSA9IHJlcGxhY2VyLmNhbGwob2JqLCBrZXksIHZhbHVlKTtcbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZXBsYWNlcikgJiYgIXJlcGxhY2VyLmluY2x1ZGVzKGtleSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkIHx8IGtlZXBVbmRlZmluZWQpXG4gICAgICAgICAgICBtYXAuaXRlbXMucHVzaChjcmVhdGVQYWlyKGtleSwgdmFsdWUsIGN0eCkpO1xuICAgIH07XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBvYmopXG4gICAgICAgICAgICBhZGQoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKG9iaiAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0Jykge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvYmopKVxuICAgICAgICAgICAgYWRkKGtleSwgb2JqW2tleV0pO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHNjaGVtYS5zb3J0TWFwRW50cmllcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBtYXAuaXRlbXMuc29ydChzY2hlbWEuc29ydE1hcEVudHJpZXMpO1xuICAgIH1cbiAgICByZXR1cm4gbWFwO1xufVxuY29uc3QgbWFwID0ge1xuICAgIGNvbGxlY3Rpb246ICdtYXAnLFxuICAgIGNyZWF0ZU5vZGU6IGNyZWF0ZU1hcCxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICAgIG5vZGVDbGFzczogWUFNTE1hcCxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjptYXAnLFxuICAgIHJlc29sdmUobWFwLCBvbkVycm9yKSB7XG4gICAgICAgIGlmICghaXNNYXAobWFwKSlcbiAgICAgICAgICAgIG9uRXJyb3IoJ0V4cGVjdGVkIGEgbWFwcGluZyBmb3IgdGhpcyB0YWcnKTtcbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICB9XG59O1xuXG5leHBvcnQgeyBtYXAgfTtcbiIsImltcG9ydCB7IHN0cmluZ2lmeUNvbGxlY3Rpb24gfSBmcm9tICcuLi9zdHJpbmdpZnkvc3RyaW5naWZ5Q29sbGVjdGlvbi5qcyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi9Db2xsZWN0aW9uLmpzJztcbmltcG9ydCB7IFNFUSwgaXNTY2FsYXIgfSBmcm9tICcuL05vZGUuanMnO1xuaW1wb3J0IHsgaXNTY2FsYXJWYWx1ZSB9IGZyb20gJy4vU2NhbGFyLmpzJztcbmltcG9ydCB7IHRvSlMgfSBmcm9tICcuL3RvSlMuanMnO1xuXG5jbGFzcyBZQU1MU2VxIGV4dGVuZHMgQ29sbGVjdGlvbiB7XG4gICAgY29uc3RydWN0b3Ioc2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKFNFUSwgc2NoZW1hKTtcbiAgICAgICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0IHRhZ05hbWUoKSB7XG4gICAgICAgIHJldHVybiAndGFnOnlhbWwub3JnLDIwMDI6c2VxJztcbiAgICB9XG4gICAgYWRkKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuaXRlbXMucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYSB2YWx1ZSBmcm9tIHRoZSBjb2xsZWN0aW9uLlxuICAgICAqXG4gICAgICogYGtleWAgbXVzdCBjb250YWluIGEgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlciBmb3IgdGhpcyB0byBzdWNjZWVkLlxuICAgICAqIEl0IG1heSBiZSB3cmFwcGVkIGluIGEgYFNjYWxhcmAuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGl0ZW0gd2FzIGZvdW5kIGFuZCByZW1vdmVkLlxuICAgICAqL1xuICAgIGRlbGV0ZShrZXkpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gYXNJdGVtSW5kZXgoa2V5KTtcbiAgICAgICAgaWYgKHR5cGVvZiBpZHggIT09ICdudW1iZXInKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBkZWwgPSB0aGlzLml0ZW1zLnNwbGljZShpZHgsIDEpO1xuICAgICAgICByZXR1cm4gZGVsLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaXRlbSBhdCBga2V5YCwgb3IgYHVuZGVmaW5lZGAgaWYgbm90IGZvdW5kLiBCeSBkZWZhdWx0IHVud3JhcHNcbiAgICAgKiBzY2FsYXIgdmFsdWVzIGZyb20gdGhlaXIgc3Vycm91bmRpbmcgbm9kZTsgdG8gZGlzYWJsZSBzZXQgYGtlZXBTY2FsYXJgIHRvXG4gICAgICogYHRydWVgIChjb2xsZWN0aW9ucyBhcmUgYWx3YXlzIHJldHVybmVkIGludGFjdCkuXG4gICAgICpcbiAgICAgKiBga2V5YCBtdXN0IGNvbnRhaW4gYSByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyIGZvciB0aGlzIHRvIHN1Y2NlZWQuXG4gICAgICogSXQgbWF5IGJlIHdyYXBwZWQgaW4gYSBgU2NhbGFyYC5cbiAgICAgKi9cbiAgICBnZXQoa2V5LCBrZWVwU2NhbGFyKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IGFzSXRlbUluZGV4KGtleSk7XG4gICAgICAgIGlmICh0eXBlb2YgaWR4ICE9PSAnbnVtYmVyJylcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGl0ID0gdGhpcy5pdGVtc1tpZHhdO1xuICAgICAgICByZXR1cm4gIWtlZXBTY2FsYXIgJiYgaXNTY2FsYXIoaXQpID8gaXQudmFsdWUgOiBpdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBjb2xsZWN0aW9uIGluY2x1ZGVzIGEgdmFsdWUgd2l0aCB0aGUga2V5IGBrZXlgLlxuICAgICAqXG4gICAgICogYGtleWAgbXVzdCBjb250YWluIGEgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlciBmb3IgdGhpcyB0byBzdWNjZWVkLlxuICAgICAqIEl0IG1heSBiZSB3cmFwcGVkIGluIGEgYFNjYWxhcmAuXG4gICAgICovXG4gICAgaGFzKGtleSkge1xuICAgICAgICBjb25zdCBpZHggPSBhc0l0ZW1JbmRleChrZXkpO1xuICAgICAgICByZXR1cm4gdHlwZW9mIGlkeCA9PT0gJ251bWJlcicgJiYgaWR4IDwgdGhpcy5pdGVtcy5sZW5ndGg7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNldHMgYSB2YWx1ZSBpbiB0aGlzIGNvbGxlY3Rpb24uIEZvciBgISFzZXRgLCBgdmFsdWVgIG5lZWRzIHRvIGJlIGFcbiAgICAgKiBib29sZWFuIHRvIGFkZC9yZW1vdmUgdGhlIGl0ZW0gZnJvbSB0aGUgc2V0LlxuICAgICAqXG4gICAgICogSWYgYGtleWAgZG9lcyBub3QgY29udGFpbiBhIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIsIHRoaXMgd2lsbCB0aHJvdy5cbiAgICAgKiBJdCBtYXkgYmUgd3JhcHBlZCBpbiBhIGBTY2FsYXJgLlxuICAgICAqL1xuICAgIHNldChrZXksIHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IGFzSXRlbUluZGV4KGtleSk7XG4gICAgICAgIGlmICh0eXBlb2YgaWR4ICE9PSAnbnVtYmVyJylcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYSB2YWxpZCBpbmRleCwgbm90ICR7a2V5fS5gKTtcbiAgICAgICAgY29uc3QgcHJldiA9IHRoaXMuaXRlbXNbaWR4XTtcbiAgICAgICAgaWYgKGlzU2NhbGFyKHByZXYpICYmIGlzU2NhbGFyVmFsdWUodmFsdWUpKVxuICAgICAgICAgICAgcHJldi52YWx1ZSA9IHZhbHVlO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLml0ZW1zW2lkeF0gPSB2YWx1ZTtcbiAgICB9XG4gICAgdG9KU09OKF8sIGN0eCkge1xuICAgICAgICBjb25zdCBzZXEgPSBbXTtcbiAgICAgICAgaWYgKGN0eCAmJiBjdHgub25DcmVhdGUpXG4gICAgICAgICAgICBjdHgub25DcmVhdGUoc2VxKTtcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5pdGVtcylcbiAgICAgICAgICAgIHNlcS5wdXNoKHRvSlMoaXRlbSwgU3RyaW5nKGkrKyksIGN0eCkpO1xuICAgICAgICByZXR1cm4gc2VxO1xuICAgIH1cbiAgICB0b1N0cmluZyhjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApIHtcbiAgICAgICAgaWYgKCFjdHgpXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcyk7XG4gICAgICAgIHJldHVybiBzdHJpbmdpZnlDb2xsZWN0aW9uKHRoaXMsIGN0eCwge1xuICAgICAgICAgICAgYmxvY2tJdGVtUHJlZml4OiAnLSAnLFxuICAgICAgICAgICAgZmxvd0NoYXJzOiB7IHN0YXJ0OiAnWycsIGVuZDogJ10nIH0sXG4gICAgICAgICAgICBpdGVtSW5kZW50OiAoY3R4LmluZGVudCB8fCAnJykgKyAnICAnLFxuICAgICAgICAgICAgb25DaG9tcEtlZXAsXG4gICAgICAgICAgICBvbkNvbW1lbnRcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZnVuY3Rpb24gYXNJdGVtSW5kZXgoa2V5KSB7XG4gICAgbGV0IGlkeCA9IGlzU2NhbGFyKGtleSkgPyBrZXkudmFsdWUgOiBrZXk7XG4gICAgaWYgKGlkeCAmJiB0eXBlb2YgaWR4ID09PSAnc3RyaW5nJylcbiAgICAgICAgaWR4ID0gTnVtYmVyKGlkeCk7XG4gICAgcmV0dXJuIHR5cGVvZiBpZHggPT09ICdudW1iZXInICYmIE51bWJlci5pc0ludGVnZXIoaWR4KSAmJiBpZHggPj0gMFxuICAgICAgICA/IGlkeFxuICAgICAgICA6IG51bGw7XG59XG5cbmV4cG9ydCB7IFlBTUxTZXEgfTtcbiIsImltcG9ydCB7IGNyZWF0ZU5vZGUgfSBmcm9tICcuLi8uLi9kb2MvY3JlYXRlTm9kZS5qcyc7XG5pbXBvcnQgeyBpc1NlcSB9IGZyb20gJy4uLy4uL25vZGVzL05vZGUuanMnO1xuaW1wb3J0IHsgWUFNTFNlcSB9IGZyb20gJy4uLy4uL25vZGVzL1lBTUxTZXEuanMnO1xuXG5mdW5jdGlvbiBjcmVhdGVTZXEoc2NoZW1hLCBvYmosIGN0eCkge1xuICAgIGNvbnN0IHsgcmVwbGFjZXIgfSA9IGN0eDtcbiAgICBjb25zdCBzZXEgPSBuZXcgWUFNTFNlcShzY2hlbWEpO1xuICAgIGlmIChvYmogJiYgU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChvYmopKSB7XG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgZm9yIChsZXQgaXQgb2Ygb2JqKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gb2JqIGluc3RhbmNlb2YgU2V0ID8gaXQgOiBTdHJpbmcoaSsrKTtcbiAgICAgICAgICAgICAgICBpdCA9IHJlcGxhY2VyLmNhbGwob2JqLCBrZXksIGl0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlcS5pdGVtcy5wdXNoKGNyZWF0ZU5vZGUoaXQsIHVuZGVmaW5lZCwgY3R4KSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNlcTtcbn1cbmNvbnN0IHNlcSA9IHtcbiAgICBjb2xsZWN0aW9uOiAnc2VxJyxcbiAgICBjcmVhdGVOb2RlOiBjcmVhdGVTZXEsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICBub2RlQ2xhc3M6IFlBTUxTZXEsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6c2VxJyxcbiAgICByZXNvbHZlKHNlcSwgb25FcnJvcikge1xuICAgICAgICBpZiAoIWlzU2VxKHNlcSkpXG4gICAgICAgICAgICBvbkVycm9yKCdFeHBlY3RlZCBhIHNlcXVlbmNlIGZvciB0aGlzIHRhZycpO1xuICAgICAgICByZXR1cm4gc2VxO1xuICAgIH1cbn07XG5cbmV4cG9ydCB7IHNlcSB9O1xuIiwiaW1wb3J0IHsgc3RyaW5naWZ5U3RyaW5nIH0gZnJvbSAnLi4vLi4vc3RyaW5naWZ5L3N0cmluZ2lmeVN0cmluZy5qcyc7XG5cbmNvbnN0IHN0cmluZyA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOnN0cicsXG4gICAgcmVzb2x2ZTogc3RyID0+IHN0cixcbiAgICBzdHJpbmdpZnkoaXRlbSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgICAgIGN0eCA9IE9iamVjdC5hc3NpZ24oeyBhY3R1YWxTdHJpbmc6IHRydWUgfSwgY3R4KTtcbiAgICAgICAgcmV0dXJuIHN0cmluZ2lmeVN0cmluZyhpdGVtLCBjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApO1xuICAgIH1cbn07XG5cbmV4cG9ydCB7IHN0cmluZyB9O1xuIiwiaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi4vLi4vbm9kZXMvU2NhbGFyLmpzJztcblxuY29uc3QgbnVsbFRhZyA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdmFsdWUgPT0gbnVsbCxcbiAgICBjcmVhdGVOb2RlOiAoKSA9PiBuZXcgU2NhbGFyKG51bGwpLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6bnVsbCcsXG4gICAgdGVzdDogL14oPzp+fFtObl11bGx8TlVMTCk/JC8sXG4gICAgcmVzb2x2ZTogKCkgPT4gbmV3IFNjYWxhcihudWxsKSxcbiAgICBzdHJpbmdpZnk6ICh7IHNvdXJjZSB9LCBjdHgpID0+IHNvdXJjZSAmJiBudWxsVGFnLnRlc3QudGVzdChzb3VyY2UpID8gc291cmNlIDogY3R4Lm9wdGlvbnMubnVsbFN0clxufTtcblxuZXhwb3J0IHsgbnVsbFRhZyB9O1xuIiwiaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi4vLi4vbm9kZXMvU2NhbGFyLmpzJztcblxuY29uc3QgYm9vbFRhZyA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpib29sJyxcbiAgICB0ZXN0OiAvXig/OltUdF1ydWV8VFJVRXxbRmZdYWxzZXxGQUxTRSkkLyxcbiAgICByZXNvbHZlOiBzdHIgPT4gbmV3IFNjYWxhcihzdHJbMF0gPT09ICd0JyB8fCBzdHJbMF0gPT09ICdUJyksXG4gICAgc3RyaW5naWZ5KHsgc291cmNlLCB2YWx1ZSB9LCBjdHgpIHtcbiAgICAgICAgaWYgKHNvdXJjZSAmJiBib29sVGFnLnRlc3QudGVzdChzb3VyY2UpKSB7XG4gICAgICAgICAgICBjb25zdCBzdiA9IHNvdXJjZVswXSA9PT0gJ3QnIHx8IHNvdXJjZVswXSA9PT0gJ1QnO1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBzdilcbiAgICAgICAgICAgICAgICByZXR1cm4gc291cmNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZSA/IGN0eC5vcHRpb25zLnRydWVTdHIgOiBjdHgub3B0aW9ucy5mYWxzZVN0cjtcbiAgICB9XG59O1xuXG5leHBvcnQgeyBib29sVGFnIH07XG4iLCJmdW5jdGlvbiBzdHJpbmdpZnlOdW1iZXIoeyBmb3JtYXQsIG1pbkZyYWN0aW9uRGlnaXRzLCB0YWcsIHZhbHVlIH0pIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYmlnaW50JylcbiAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgY29uc3QgbnVtID0gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IHZhbHVlIDogTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAoIWlzRmluaXRlKG51bSkpXG4gICAgICAgIHJldHVybiBpc05hTihudW0pID8gJy5uYW4nIDogbnVtIDwgMCA/ICctLmluZicgOiAnLmluZic7XG4gICAgbGV0IG4gPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgaWYgKCFmb3JtYXQgJiZcbiAgICAgICAgbWluRnJhY3Rpb25EaWdpdHMgJiZcbiAgICAgICAgKCF0YWcgfHwgdGFnID09PSAndGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQnKSAmJlxuICAgICAgICAvXlxcZC8udGVzdChuKSkge1xuICAgICAgICBsZXQgaSA9IG4uaW5kZXhPZignLicpO1xuICAgICAgICBpZiAoaSA8IDApIHtcbiAgICAgICAgICAgIGkgPSBuLmxlbmd0aDtcbiAgICAgICAgICAgIG4gKz0gJy4nO1xuICAgICAgICB9XG4gICAgICAgIGxldCBkID0gbWluRnJhY3Rpb25EaWdpdHMgLSAobi5sZW5ndGggLSBpIC0gMSk7XG4gICAgICAgIHdoaWxlIChkLS0gPiAwKVxuICAgICAgICAgICAgbiArPSAnMCc7XG4gICAgfVxuICAgIHJldHVybiBuO1xufVxuXG5leHBvcnQgeyBzdHJpbmdpZnlOdW1iZXIgfTtcbiIsImltcG9ydCB7IFNjYWxhciB9IGZyb20gJy4uLy4uL25vZGVzL1NjYWxhci5qcyc7XG5pbXBvcnQgeyBzdHJpbmdpZnlOdW1iZXIgfSBmcm9tICcuLi8uLi9zdHJpbmdpZnkvc3RyaW5naWZ5TnVtYmVyLmpzJztcblxuY29uc3QgZmxvYXROYU4gPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdCcsXG4gICAgdGVzdDogL14oPzpbLStdP1xcLig/OmluZnxJbmZ8SU5GfG5hbnxOYU58TkFOKSkkLyxcbiAgICByZXNvbHZlOiBzdHIgPT4gc3RyLnNsaWNlKC0zKS50b0xvd2VyQ2FzZSgpID09PSAnbmFuJ1xuICAgICAgICA/IE5hTlxuICAgICAgICA6IHN0clswXSA9PT0gJy0nXG4gICAgICAgICAgICA/IE51bWJlci5ORUdBVElWRV9JTkZJTklUWVxuICAgICAgICAgICAgOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXG4gICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlOdW1iZXJcbn07XG5jb25zdCBmbG9hdEV4cCA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOmZsb2F0JyxcbiAgICBmb3JtYXQ6ICdFWFAnLFxuICAgIHRlc3Q6IC9eWy0rXT8oPzpcXC5bMC05XSt8WzAtOV0rKD86XFwuWzAtOV0qKT8pW2VFXVstK10/WzAtOV0rJC8sXG4gICAgcmVzb2x2ZTogc3RyID0+IHBhcnNlRmxvYXQoc3RyKSxcbiAgICBzdHJpbmdpZnkobm9kZSkge1xuICAgICAgICBjb25zdCBudW0gPSBOdW1iZXIobm9kZS52YWx1ZSk7XG4gICAgICAgIHJldHVybiBpc0Zpbml0ZShudW0pID8gbnVtLnRvRXhwb25lbnRpYWwoKSA6IHN0cmluZ2lmeU51bWJlcihub2RlKTtcbiAgICB9XG59O1xuY29uc3QgZmxvYXQgPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdCcsXG4gICAgdGVzdDogL15bLStdPyg/OlxcLlswLTldK3xbMC05XStcXC5bMC05XSopJC8sXG4gICAgcmVzb2x2ZShzdHIpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IG5ldyBTY2FsYXIocGFyc2VGbG9hdChzdHIpKTtcbiAgICAgICAgY29uc3QgZG90ID0gc3RyLmluZGV4T2YoJy4nKTtcbiAgICAgICAgaWYgKGRvdCAhPT0gLTEgJiYgc3RyW3N0ci5sZW5ndGggLSAxXSA9PT0gJzAnKVxuICAgICAgICAgICAgbm9kZS5taW5GcmFjdGlvbkRpZ2l0cyA9IHN0ci5sZW5ndGggLSBkb3QgLSAxO1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9LFxuICAgIHN0cmluZ2lmeTogc3RyaW5naWZ5TnVtYmVyXG59O1xuXG5leHBvcnQgeyBmbG9hdCwgZmxvYXRFeHAsIGZsb2F0TmFOIH07XG4iLCJpbXBvcnQgeyBzdHJpbmdpZnlOdW1iZXIgfSBmcm9tICcuLi8uLi9zdHJpbmdpZnkvc3RyaW5naWZ5TnVtYmVyLmpzJztcblxuY29uc3QgaW50SWRlbnRpZnkgPSAodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ2JpZ2ludCcgfHwgTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSk7XG5jb25zdCBpbnRSZXNvbHZlID0gKHN0ciwgb2Zmc2V0LCByYWRpeCwgeyBpbnRBc0JpZ0ludCB9KSA9PiAoaW50QXNCaWdJbnQgPyBCaWdJbnQoc3RyKSA6IHBhcnNlSW50KHN0ci5zdWJzdHJpbmcob2Zmc2V0KSwgcmFkaXgpKTtcbmZ1bmN0aW9uIGludFN0cmluZ2lmeShub2RlLCByYWRpeCwgcHJlZml4KSB7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gbm9kZTtcbiAgICBpZiAoaW50SWRlbnRpZnkodmFsdWUpICYmIHZhbHVlID49IDApXG4gICAgICAgIHJldHVybiBwcmVmaXggKyB2YWx1ZS50b1N0cmluZyhyYWRpeCk7XG4gICAgcmV0dXJuIHN0cmluZ2lmeU51bWJlcihub2RlKTtcbn1cbmNvbnN0IGludE9jdCA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gaW50SWRlbnRpZnkodmFsdWUpICYmIHZhbHVlID49IDAsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjppbnQnLFxuICAgIGZvcm1hdDogJ09DVCcsXG4gICAgdGVzdDogL14wb1swLTddKyQvLFxuICAgIHJlc29sdmU6IChzdHIsIF9vbkVycm9yLCBvcHQpID0+IGludFJlc29sdmUoc3RyLCAyLCA4LCBvcHQpLFxuICAgIHN0cmluZ2lmeTogbm9kZSA9PiBpbnRTdHJpbmdpZnkobm9kZSwgOCwgJzBvJylcbn07XG5jb25zdCBpbnQgPSB7XG4gICAgaWRlbnRpZnk6IGludElkZW50aWZ5LFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6aW50JyxcbiAgICB0ZXN0OiAvXlstK10/WzAtOV0rJC8sXG4gICAgcmVzb2x2ZTogKHN0ciwgX29uRXJyb3IsIG9wdCkgPT4gaW50UmVzb2x2ZShzdHIsIDAsIDEwLCBvcHQpLFxuICAgIHN0cmluZ2lmeTogc3RyaW5naWZ5TnVtYmVyXG59O1xuY29uc3QgaW50SGV4ID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiBpbnRJZGVudGlmeSh2YWx1ZSkgJiYgdmFsdWUgPj0gMCxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOmludCcsXG4gICAgZm9ybWF0OiAnSEVYJyxcbiAgICB0ZXN0OiAvXjB4WzAtOWEtZkEtRl0rJC8sXG4gICAgcmVzb2x2ZTogKHN0ciwgX29uRXJyb3IsIG9wdCkgPT4gaW50UmVzb2x2ZShzdHIsIDIsIDE2LCBvcHQpLFxuICAgIHN0cmluZ2lmeTogbm9kZSA9PiBpbnRTdHJpbmdpZnkobm9kZSwgMTYsICcweCcpXG59O1xuXG5leHBvcnQgeyBpbnQsIGludEhleCwgaW50T2N0IH07XG4iLCJpbXBvcnQgeyBtYXAgfSBmcm9tICcuLi9jb21tb24vbWFwLmpzJztcbmltcG9ydCB7IG51bGxUYWcgfSBmcm9tICcuLi9jb21tb24vbnVsbC5qcyc7XG5pbXBvcnQgeyBzZXEgfSBmcm9tICcuLi9jb21tb24vc2VxLmpzJztcbmltcG9ydCB7IHN0cmluZyB9IGZyb20gJy4uL2NvbW1vbi9zdHJpbmcuanMnO1xuaW1wb3J0IHsgYm9vbFRhZyB9IGZyb20gJy4vYm9vbC5qcyc7XG5pbXBvcnQgeyBmbG9hdE5hTiwgZmxvYXRFeHAsIGZsb2F0IH0gZnJvbSAnLi9mbG9hdC5qcyc7XG5pbXBvcnQgeyBpbnRPY3QsIGludCwgaW50SGV4IH0gZnJvbSAnLi9pbnQuanMnO1xuXG5jb25zdCBzY2hlbWEgPSBbXG4gICAgbWFwLFxuICAgIHNlcSxcbiAgICBzdHJpbmcsXG4gICAgbnVsbFRhZyxcbiAgICBib29sVGFnLFxuICAgIGludE9jdCxcbiAgICBpbnQsXG4gICAgaW50SGV4LFxuICAgIGZsb2F0TmFOLFxuICAgIGZsb2F0RXhwLFxuICAgIGZsb2F0XG5dO1xuXG5leHBvcnQgeyBzY2hlbWEgfTtcbiIsImltcG9ydCB7IFNjYWxhciB9IGZyb20gJy4uLy4uL25vZGVzL1NjYWxhci5qcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICcuLi9jb21tb24vbWFwLmpzJztcbmltcG9ydCB7IHNlcSB9IGZyb20gJy4uL2NvbW1vbi9zZXEuanMnO1xuXG5mdW5jdGlvbiBpbnRJZGVudGlmeSh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnIHx8IE51bWJlci5pc0ludGVnZXIodmFsdWUpO1xufVxuY29uc3Qgc3RyaW5naWZ5SlNPTiA9ICh7IHZhbHVlIH0pID0+IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbmNvbnN0IGpzb25TY2FsYXJzID0gW1xuICAgIHtcbiAgICAgICAgaWRlbnRpZnk6IHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOnN0cicsXG4gICAgICAgIHJlc29sdmU6IHN0ciA9PiBzdHIsXG4gICAgICAgIHN0cmluZ2lmeTogc3RyaW5naWZ5SlNPTlxuICAgIH0sXG4gICAge1xuICAgICAgICBpZGVudGlmeTogdmFsdWUgPT4gdmFsdWUgPT0gbnVsbCxcbiAgICAgICAgY3JlYXRlTm9kZTogKCkgPT4gbmV3IFNjYWxhcihudWxsKSxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6bnVsbCcsXG4gICAgICAgIHRlc3Q6IC9ebnVsbCQvLFxuICAgICAgICByZXNvbHZlOiAoKSA9PiBudWxsLFxuICAgICAgICBzdHJpbmdpZnk6IHN0cmluZ2lmeUpTT05cbiAgICB9LFxuICAgIHtcbiAgICAgICAgaWRlbnRpZnk6IHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpib29sJyxcbiAgICAgICAgdGVzdDogL150cnVlfGZhbHNlJC8sXG4gICAgICAgIHJlc29sdmU6IHN0ciA9PiBzdHIgPT09ICd0cnVlJyxcbiAgICAgICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlKU09OXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGlkZW50aWZ5OiBpbnRJZGVudGlmeSxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6aW50JyxcbiAgICAgICAgdGVzdDogL14tPyg/OjB8WzEtOV1bMC05XSopJC8sXG4gICAgICAgIHJlc29sdmU6IChzdHIsIF9vbkVycm9yLCB7IGludEFzQmlnSW50IH0pID0+IGludEFzQmlnSW50ID8gQmlnSW50KHN0cikgOiBwYXJzZUludChzdHIsIDEwKSxcbiAgICAgICAgc3RyaW5naWZ5OiAoeyB2YWx1ZSB9KSA9PiBpbnRJZGVudGlmeSh2YWx1ZSkgPyB2YWx1ZS50b1N0cmluZygpIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdCcsXG4gICAgICAgIHRlc3Q6IC9eLT8oPzowfFsxLTldWzAtOV0qKSg/OlxcLlswLTldKik/KD86W2VFXVstK10/WzAtOV0rKT8kLyxcbiAgICAgICAgcmVzb2x2ZTogc3RyID0+IHBhcnNlRmxvYXQoc3RyKSxcbiAgICAgICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlKU09OXG4gICAgfVxuXTtcbmNvbnN0IGpzb25FcnJvciA9IHtcbiAgICBkZWZhdWx0OiB0cnVlLFxuICAgIHRhZzogJycsXG4gICAgdGVzdDogL14vLFxuICAgIHJlc29sdmUoc3RyLCBvbkVycm9yKSB7XG4gICAgICAgIG9uRXJyb3IoYFVucmVzb2x2ZWQgcGxhaW4gc2NhbGFyICR7SlNPTi5zdHJpbmdpZnkoc3RyKX1gKTtcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG59O1xuY29uc3Qgc2NoZW1hID0gW21hcCwgc2VxXS5jb25jYXQoanNvblNjYWxhcnMsIGpzb25FcnJvcik7XG5cbmV4cG9ydCB7IHNjaGVtYSB9O1xuIiwiaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi4vLi4vbm9kZXMvU2NhbGFyLmpzJztcbmltcG9ydCB7IHN0cmluZ2lmeVN0cmluZyB9IGZyb20gJy4uLy4uL3N0cmluZ2lmeS9zdHJpbmdpZnlTdHJpbmcuanMnO1xuXG5jb25zdCBiaW5hcnkgPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHZhbHVlIGluc3RhbmNlb2YgVWludDhBcnJheSxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpiaW5hcnknLFxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBCdWZmZXIgaW4gbm9kZSBhbmQgYW4gVWludDhBcnJheSBpbiBicm93c2Vyc1xuICAgICAqXG4gICAgICogVG8gdXNlIHRoZSByZXN1bHRpbmcgYnVmZmVyIGFzIGFuIGltYWdlLCB5b3UnbGwgd2FudCB0byBkbyBzb21ldGhpbmcgbGlrZTpcbiAgICAgKlxuICAgICAqICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7IHR5cGU6ICdpbWFnZS9qcGVnJyB9KVxuICAgICAqICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3Bob3RvJykuc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKVxuICAgICAqL1xuICAgIHJlc29sdmUoc3JjLCBvbkVycm9yKSB7XG4gICAgICAgIGlmICh0eXBlb2YgQnVmZmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oc3JjLCAnYmFzZTY0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGF0b2IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vIE9uIElFIDExLCBhdG9iKCkgY2FuJ3QgaGFuZGxlIG5ld2xpbmVzXG4gICAgICAgICAgICBjb25zdCBzdHIgPSBhdG9iKHNyYy5yZXBsYWNlKC9bXFxuXFxyXS9nLCAnJykpO1xuICAgICAgICAgICAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoc3RyLmxlbmd0aCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSlcbiAgICAgICAgICAgICAgICBidWZmZXJbaV0gPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBvbkVycm9yKCdUaGlzIGVudmlyb25tZW50IGRvZXMgbm90IHN1cHBvcnQgcmVhZGluZyBiaW5hcnkgdGFnczsgZWl0aGVyIEJ1ZmZlciBvciBhdG9iIGlzIHJlcXVpcmVkJyk7XG4gICAgICAgICAgICByZXR1cm4gc3JjO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBzdHJpbmdpZnkoeyBjb21tZW50LCB0eXBlLCB2YWx1ZSB9LCBjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApIHtcbiAgICAgICAgY29uc3QgYnVmID0gdmFsdWU7IC8vIGNoZWNrZWQgZWFybGllciBieSBiaW5hcnkuaWRlbnRpZnkoKVxuICAgICAgICBsZXQgc3RyO1xuICAgICAgICBpZiAodHlwZW9mIEJ1ZmZlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgc3RyID1cbiAgICAgICAgICAgICAgICBidWYgaW5zdGFuY2VvZiBCdWZmZXJcbiAgICAgICAgICAgICAgICAgICAgPyBidWYudG9TdHJpbmcoJ2Jhc2U2NCcpXG4gICAgICAgICAgICAgICAgICAgIDogQnVmZmVyLmZyb20oYnVmLmJ1ZmZlcikudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBidG9hID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBsZXQgcyA9ICcnO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBidWYubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICAgICAgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSk7XG4gICAgICAgICAgICBzdHIgPSBidG9hKHMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGVudmlyb25tZW50IGRvZXMgbm90IHN1cHBvcnQgd3JpdGluZyBiaW5hcnkgdGFnczsgZWl0aGVyIEJ1ZmZlciBvciBidG9hIGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0eXBlKVxuICAgICAgICAgICAgdHlwZSA9IFNjYWxhci5CTE9DS19MSVRFUkFMO1xuICAgICAgICBpZiAodHlwZSAhPT0gU2NhbGFyLlFVT1RFX0RPVUJMRSkge1xuICAgICAgICAgICAgY29uc3QgbGluZVdpZHRoID0gTWF0aC5tYXgoY3R4Lm9wdGlvbnMubGluZVdpZHRoIC0gY3R4LmluZGVudC5sZW5ndGgsIGN0eC5vcHRpb25zLm1pbkNvbnRlbnRXaWR0aCk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5jZWlsKHN0ci5sZW5ndGggLyBsaW5lV2lkdGgpO1xuICAgICAgICAgICAgY29uc3QgbGluZXMgPSBuZXcgQXJyYXkobik7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbyA9IDA7IGkgPCBuOyArK2ksIG8gKz0gbGluZVdpZHRoKSB7XG4gICAgICAgICAgICAgICAgbGluZXNbaV0gPSBzdHIuc3Vic3RyKG8sIGxpbmVXaWR0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdHIgPSBsaW5lcy5qb2luKHR5cGUgPT09IFNjYWxhci5CTE9DS19MSVRFUkFMID8gJ1xcbicgOiAnICcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHJpbmdpZnlTdHJpbmcoeyBjb21tZW50LCB0eXBlLCB2YWx1ZTogc3RyIH0sIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCk7XG4gICAgfVxufTtcblxuZXhwb3J0IHsgYmluYXJ5IH07XG4iLCJpbXBvcnQgeyBpc1NlcSwgaXNQYWlyLCBpc01hcCB9IGZyb20gJy4uLy4uL25vZGVzL05vZGUuanMnO1xuaW1wb3J0IHsgUGFpciwgY3JlYXRlUGFpciB9IGZyb20gJy4uLy4uL25vZGVzL1BhaXIuanMnO1xuaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi4vLi4vbm9kZXMvU2NhbGFyLmpzJztcbmltcG9ydCB7IFlBTUxTZXEgfSBmcm9tICcuLi8uLi9ub2Rlcy9ZQU1MU2VxLmpzJztcblxuZnVuY3Rpb24gcmVzb2x2ZVBhaXJzKHNlcSwgb25FcnJvcikge1xuICAgIGlmIChpc1NlcShzZXEpKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VxLml0ZW1zLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBsZXQgaXRlbSA9IHNlcS5pdGVtc1tpXTtcbiAgICAgICAgICAgIGlmIChpc1BhaXIoaXRlbSkpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBlbHNlIGlmIChpc01hcChpdGVtKSkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLml0ZW1zLmxlbmd0aCA+IDEpXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoJ0VhY2ggcGFpciBtdXN0IGhhdmUgaXRzIG93biBzZXF1ZW5jZSBpbmRpY2F0b3InKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYWlyID0gaXRlbS5pdGVtc1swXSB8fCBuZXcgUGFpcihuZXcgU2NhbGFyKG51bGwpKTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5jb21tZW50QmVmb3JlKVxuICAgICAgICAgICAgICAgICAgICBwYWlyLmtleS5jb21tZW50QmVmb3JlID0gcGFpci5rZXkuY29tbWVudEJlZm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBgJHtpdGVtLmNvbW1lbnRCZWZvcmV9XFxuJHtwYWlyLmtleS5jb21tZW50QmVmb3JlfWBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbS5jb21tZW50QmVmb3JlO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmNvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY24gPSBwYWlyLnZhbHVlIHx8IHBhaXIua2V5O1xuICAgICAgICAgICAgICAgICAgICBjbi5jb21tZW50ID0gY24uY29tbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBgJHtpdGVtLmNvbW1lbnR9XFxuJHtjbi5jb21tZW50fWBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbS5jb21tZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpdGVtID0gcGFpcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlcS5pdGVtc1tpXSA9IGlzUGFpcihpdGVtKSA/IGl0ZW0gOiBuZXcgUGFpcihpdGVtKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlXG4gICAgICAgIG9uRXJyb3IoJ0V4cGVjdGVkIGEgc2VxdWVuY2UgZm9yIHRoaXMgdGFnJyk7XG4gICAgcmV0dXJuIHNlcTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVBhaXJzKHNjaGVtYSwgaXRlcmFibGUsIGN0eCkge1xuICAgIGNvbnN0IHsgcmVwbGFjZXIgfSA9IGN0eDtcbiAgICBjb25zdCBwYWlycyA9IG5ldyBZQU1MU2VxKHNjaGVtYSk7XG4gICAgcGFpcnMudGFnID0gJ3RhZzp5YW1sLm9yZywyMDAyOnBhaXJzJztcbiAgICBsZXQgaSA9IDA7XG4gICAgaWYgKGl0ZXJhYmxlICYmIFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoaXRlcmFibGUpKVxuICAgICAgICBmb3IgKGxldCBpdCBvZiBpdGVyYWJsZSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByZXBsYWNlciA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgICAgICBpdCA9IHJlcGxhY2VyLmNhbGwoaXRlcmFibGUsIFN0cmluZyhpKyspLCBpdCk7XG4gICAgICAgICAgICBsZXQga2V5LCB2YWx1ZTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0KSkge1xuICAgICAgICAgICAgICAgIGlmIChpdC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAga2V5ID0gaXRbMF07XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaXRbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgW2tleSwgdmFsdWVdIHR1cGxlOiAke2l0fWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXQgJiYgaXQgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaXQpO1xuICAgICAgICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBrZXkgPSBrZXlzWzBdO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGl0W2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgeyBrZXk6IHZhbHVlIH0gdHVwbGU6ICR7aXR9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBrZXkgPSBpdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhaXJzLml0ZW1zLnB1c2goY3JlYXRlUGFpcihrZXksIHZhbHVlLCBjdHgpKTtcbiAgICAgICAgfVxuICAgIHJldHVybiBwYWlycztcbn1cbmNvbnN0IHBhaXJzID0ge1xuICAgIGNvbGxlY3Rpb246ICdzZXEnLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOnBhaXJzJyxcbiAgICByZXNvbHZlOiByZXNvbHZlUGFpcnMsXG4gICAgY3JlYXRlTm9kZTogY3JlYXRlUGFpcnNcbn07XG5cbmV4cG9ydCB7IGNyZWF0ZVBhaXJzLCBwYWlycywgcmVzb2x2ZVBhaXJzIH07XG4iLCJpbXBvcnQgeyBZQU1MU2VxIH0gZnJvbSAnLi4vLi4vbm9kZXMvWUFNTFNlcS5qcyc7XG5pbXBvcnQgeyB0b0pTIH0gZnJvbSAnLi4vLi4vbm9kZXMvdG9KUy5qcyc7XG5pbXBvcnQgeyBpc1NjYWxhciwgaXNQYWlyIH0gZnJvbSAnLi4vLi4vbm9kZXMvTm9kZS5qcyc7XG5pbXBvcnQgeyBZQU1MTWFwIH0gZnJvbSAnLi4vLi4vbm9kZXMvWUFNTE1hcC5qcyc7XG5pbXBvcnQgeyByZXNvbHZlUGFpcnMsIGNyZWF0ZVBhaXJzIH0gZnJvbSAnLi9wYWlycy5qcyc7XG5cbmNsYXNzIFlBTUxPTWFwIGV4dGVuZHMgWUFNTFNlcSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYWRkID0gWUFNTE1hcC5wcm90b3R5cGUuYWRkLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuZGVsZXRlID0gWUFNTE1hcC5wcm90b3R5cGUuZGVsZXRlLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuZ2V0ID0gWUFNTE1hcC5wcm90b3R5cGUuZ2V0LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFzID0gWUFNTE1hcC5wcm90b3R5cGUuaGFzLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuc2V0ID0gWUFNTE1hcC5wcm90b3R5cGUuc2V0LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMudGFnID0gWUFNTE9NYXAudGFnO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJZiBgY3R4YCBpcyBnaXZlbiwgdGhlIHJldHVybiB0eXBlIGlzIGFjdHVhbGx5IGBNYXA8dW5rbm93biwgdW5rbm93bj5gLFxuICAgICAqIGJ1dCBUeXBlU2NyaXB0IHdvbid0IGFsbG93IHdpZGVuaW5nIHRoZSBzaWduYXR1cmUgb2YgYSBjaGlsZCBtZXRob2QuXG4gICAgICovXG4gICAgdG9KU09OKF8sIGN0eCkge1xuICAgICAgICBpZiAoIWN0eClcbiAgICAgICAgICAgIHJldHVybiBzdXBlci50b0pTT04oXyk7XG4gICAgICAgIGNvbnN0IG1hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgaWYgKGN0eCAmJiBjdHgub25DcmVhdGUpXG4gICAgICAgICAgICBjdHgub25DcmVhdGUobWFwKTtcbiAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHRoaXMuaXRlbXMpIHtcbiAgICAgICAgICAgIGxldCBrZXksIHZhbHVlO1xuICAgICAgICAgICAgaWYgKGlzUGFpcihwYWlyKSkge1xuICAgICAgICAgICAgICAgIGtleSA9IHRvSlMocGFpci5rZXksICcnLCBjdHgpO1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdG9KUyhwYWlyLnZhbHVlLCBrZXksIGN0eCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBrZXkgPSB0b0pTKHBhaXIsICcnLCBjdHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hcC5oYXMoa2V5KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ09yZGVyZWQgbWFwcyBtdXN0IG5vdCBpbmNsdWRlIGR1cGxpY2F0ZSBrZXlzJyk7XG4gICAgICAgICAgICBtYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfVxufVxuWUFNTE9NYXAudGFnID0gJ3RhZzp5YW1sLm9yZywyMDAyOm9tYXAnO1xuY29uc3Qgb21hcCA9IHtcbiAgICBjb2xsZWN0aW9uOiAnc2VxJyxcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdmFsdWUgaW5zdGFuY2VvZiBNYXAsXG4gICAgbm9kZUNsYXNzOiBZQU1MT01hcCxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpvbWFwJyxcbiAgICByZXNvbHZlKHNlcSwgb25FcnJvcikge1xuICAgICAgICBjb25zdCBwYWlycyA9IHJlc29sdmVQYWlycyhzZXEsIG9uRXJyb3IpO1xuICAgICAgICBjb25zdCBzZWVuS2V5cyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHsga2V5IH0gb2YgcGFpcnMuaXRlbXMpIHtcbiAgICAgICAgICAgIGlmIChpc1NjYWxhcihrZXkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlZW5LZXlzLmluY2x1ZGVzKGtleS52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcihgT3JkZXJlZCBtYXBzIG11c3Qgbm90IGluY2x1ZGUgZHVwbGljYXRlIGtleXM6ICR7a2V5LnZhbHVlfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2VlbktleXMucHVzaChrZXkudmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgWUFNTE9NYXAoKSwgcGFpcnMpO1xuICAgIH0sXG4gICAgY3JlYXRlTm9kZShzY2hlbWEsIGl0ZXJhYmxlLCBjdHgpIHtcbiAgICAgICAgY29uc3QgcGFpcnMgPSBjcmVhdGVQYWlycyhzY2hlbWEsIGl0ZXJhYmxlLCBjdHgpO1xuICAgICAgICBjb25zdCBvbWFwID0gbmV3IFlBTUxPTWFwKCk7XG4gICAgICAgIG9tYXAuaXRlbXMgPSBwYWlycy5pdGVtcztcbiAgICAgICAgcmV0dXJuIG9tYXA7XG4gICAgfVxufTtcblxuZXhwb3J0IHsgWUFNTE9NYXAsIG9tYXAgfTtcbiIsImltcG9ydCB7IFNjYWxhciB9IGZyb20gJy4uLy4uL25vZGVzL1NjYWxhci5qcyc7XG5cbmZ1bmN0aW9uIGJvb2xTdHJpbmdpZnkoeyB2YWx1ZSwgc291cmNlIH0sIGN0eCkge1xuICAgIGNvbnN0IGJvb2xPYmogPSB2YWx1ZSA/IHRydWVUYWcgOiBmYWxzZVRhZztcbiAgICBpZiAoc291cmNlICYmIGJvb2xPYmoudGVzdC50ZXN0KHNvdXJjZSkpXG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgcmV0dXJuIHZhbHVlID8gY3R4Lm9wdGlvbnMudHJ1ZVN0ciA6IGN0eC5vcHRpb25zLmZhbHNlU3RyO1xufVxuY29uc3QgdHJ1ZVRhZyA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdmFsdWUgPT09IHRydWUsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpib29sJyxcbiAgICB0ZXN0OiAvXig/Oll8eXxbWXldZXN8WUVTfFtUdF1ydWV8VFJVRXxbT29dbnxPTikkLyxcbiAgICByZXNvbHZlOiAoKSA9PiBuZXcgU2NhbGFyKHRydWUpLFxuICAgIHN0cmluZ2lmeTogYm9vbFN0cmluZ2lmeVxufTtcbmNvbnN0IGZhbHNlVGFnID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB2YWx1ZSA9PT0gZmFsc2UsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpib29sJyxcbiAgICB0ZXN0OiAvXig/Ok58bnxbTm5db3xOT3xbRmZdYWxzZXxGQUxTRXxbT29dZmZ8T0ZGKSQvaSxcbiAgICByZXNvbHZlOiAoKSA9PiBuZXcgU2NhbGFyKGZhbHNlKSxcbiAgICBzdHJpbmdpZnk6IGJvb2xTdHJpbmdpZnlcbn07XG5cbmV4cG9ydCB7IGZhbHNlVGFnLCB0cnVlVGFnIH07XG4iLCJpbXBvcnQgeyBTY2FsYXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9TY2FsYXIuanMnO1xuaW1wb3J0IHsgc3RyaW5naWZ5TnVtYmVyIH0gZnJvbSAnLi4vLi4vc3RyaW5naWZ5L3N0cmluZ2lmeU51bWJlci5qcyc7XG5cbmNvbnN0IGZsb2F0TmFOID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQnLFxuICAgIHRlc3Q6IC9eWy0rXT9cXC4oPzppbmZ8SW5mfElORnxuYW58TmFOfE5BTikkLyxcbiAgICByZXNvbHZlOiAoc3RyKSA9PiBzdHIuc2xpY2UoLTMpLnRvTG93ZXJDYXNlKCkgPT09ICduYW4nXG4gICAgICAgID8gTmFOXG4gICAgICAgIDogc3RyWzBdID09PSAnLSdcbiAgICAgICAgICAgID8gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZXG4gICAgICAgICAgICA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICBzdHJpbmdpZnk6IHN0cmluZ2lmeU51bWJlclxufTtcbmNvbnN0IGZsb2F0RXhwID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQnLFxuICAgIGZvcm1hdDogJ0VYUCcsXG4gICAgdGVzdDogL15bLStdPyg/OlswLTldWzAtOV9dKik/KD86XFwuWzAtOV9dKik/W2VFXVstK10/WzAtOV0rJC8sXG4gICAgcmVzb2x2ZTogKHN0cikgPT4gcGFyc2VGbG9hdChzdHIucmVwbGFjZSgvXy9nLCAnJykpLFxuICAgIHN0cmluZ2lmeShub2RlKSB7XG4gICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihub2RlLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGlzRmluaXRlKG51bSkgPyBudW0udG9FeHBvbmVudGlhbCgpIDogc3RyaW5naWZ5TnVtYmVyKG5vZGUpO1xuICAgIH1cbn07XG5jb25zdCBmbG9hdCA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOmZsb2F0JyxcbiAgICB0ZXN0OiAvXlstK10/KD86WzAtOV1bMC05X10qKT9cXC5bMC05X10qJC8sXG4gICAgcmVzb2x2ZShzdHIpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IG5ldyBTY2FsYXIocGFyc2VGbG9hdChzdHIucmVwbGFjZSgvXy9nLCAnJykpKTtcbiAgICAgICAgY29uc3QgZG90ID0gc3RyLmluZGV4T2YoJy4nKTtcbiAgICAgICAgaWYgKGRvdCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IGYgPSBzdHIuc3Vic3RyaW5nKGRvdCArIDEpLnJlcGxhY2UoL18vZywgJycpO1xuICAgICAgICAgICAgaWYgKGZbZi5sZW5ndGggLSAxXSA9PT0gJzAnKVxuICAgICAgICAgICAgICAgIG5vZGUubWluRnJhY3Rpb25EaWdpdHMgPSBmLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9LFxuICAgIHN0cmluZ2lmeTogc3RyaW5naWZ5TnVtYmVyXG59O1xuXG5leHBvcnQgeyBmbG9hdCwgZmxvYXRFeHAsIGZsb2F0TmFOIH07XG4iLCJpbXBvcnQgeyBzdHJpbmdpZnlOdW1iZXIgfSBmcm9tICcuLi8uLi9zdHJpbmdpZnkvc3RyaW5naWZ5TnVtYmVyLmpzJztcblxuY29uc3QgaW50SWRlbnRpZnkgPSAodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ2JpZ2ludCcgfHwgTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSk7XG5mdW5jdGlvbiBpbnRSZXNvbHZlKHN0ciwgb2Zmc2V0LCByYWRpeCwgeyBpbnRBc0JpZ0ludCB9KSB7XG4gICAgY29uc3Qgc2lnbiA9IHN0clswXTtcbiAgICBpZiAoc2lnbiA9PT0gJy0nIHx8IHNpZ24gPT09ICcrJylcbiAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgc3RyID0gc3RyLnN1YnN0cmluZyhvZmZzZXQpLnJlcGxhY2UoL18vZywgJycpO1xuICAgIGlmIChpbnRBc0JpZ0ludCkge1xuICAgICAgICBzd2l0Y2ggKHJhZGl4KSB7XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgc3RyID0gYDBiJHtzdHJ9YDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgICAgICBzdHIgPSBgMG8ke3N0cn1gO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAxNjpcbiAgICAgICAgICAgICAgICBzdHIgPSBgMHgke3N0cn1gO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG4gPSBCaWdJbnQoc3RyKTtcbiAgICAgICAgcmV0dXJuIHNpZ24gPT09ICctJyA/IEJpZ0ludCgtMSkgKiBuIDogbjtcbiAgICB9XG4gICAgY29uc3QgbiA9IHBhcnNlSW50KHN0ciwgcmFkaXgpO1xuICAgIHJldHVybiBzaWduID09PSAnLScgPyAtMSAqIG4gOiBuO1xufVxuZnVuY3Rpb24gaW50U3RyaW5naWZ5KG5vZGUsIHJhZGl4LCBwcmVmaXgpIHtcbiAgICBjb25zdCB7IHZhbHVlIH0gPSBub2RlO1xuICAgIGlmIChpbnRJZGVudGlmeSh2YWx1ZSkpIHtcbiAgICAgICAgY29uc3Qgc3RyID0gdmFsdWUudG9TdHJpbmcocmFkaXgpO1xuICAgICAgICByZXR1cm4gdmFsdWUgPCAwID8gJy0nICsgcHJlZml4ICsgc3RyLnN1YnN0cigxKSA6IHByZWZpeCArIHN0cjtcbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZ2lmeU51bWJlcihub2RlKTtcbn1cbmNvbnN0IGludEJpbiA9IHtcbiAgICBpZGVudGlmeTogaW50SWRlbnRpZnksXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjppbnQnLFxuICAgIGZvcm1hdDogJ0JJTicsXG4gICAgdGVzdDogL15bLStdPzBiWzAtMV9dKyQvLFxuICAgIHJlc29sdmU6IChzdHIsIF9vbkVycm9yLCBvcHQpID0+IGludFJlc29sdmUoc3RyLCAyLCAyLCBvcHQpLFxuICAgIHN0cmluZ2lmeTogbm9kZSA9PiBpbnRTdHJpbmdpZnkobm9kZSwgMiwgJzBiJylcbn07XG5jb25zdCBpbnRPY3QgPSB7XG4gICAgaWRlbnRpZnk6IGludElkZW50aWZ5LFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6aW50JyxcbiAgICBmb3JtYXQ6ICdPQ1QnLFxuICAgIHRlc3Q6IC9eWy0rXT8wWzAtN19dKyQvLFxuICAgIHJlc29sdmU6IChzdHIsIF9vbkVycm9yLCBvcHQpID0+IGludFJlc29sdmUoc3RyLCAxLCA4LCBvcHQpLFxuICAgIHN0cmluZ2lmeTogbm9kZSA9PiBpbnRTdHJpbmdpZnkobm9kZSwgOCwgJzAnKVxufTtcbmNvbnN0IGludCA9IHtcbiAgICBpZGVudGlmeTogaW50SWRlbnRpZnksXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjppbnQnLFxuICAgIHRlc3Q6IC9eWy0rXT9bMC05XVswLTlfXSokLyxcbiAgICByZXNvbHZlOiAoc3RyLCBfb25FcnJvciwgb3B0KSA9PiBpbnRSZXNvbHZlKHN0ciwgMCwgMTAsIG9wdCksXG4gICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlOdW1iZXJcbn07XG5jb25zdCBpbnRIZXggPSB7XG4gICAgaWRlbnRpZnk6IGludElkZW50aWZ5LFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6aW50JyxcbiAgICBmb3JtYXQ6ICdIRVgnLFxuICAgIHRlc3Q6IC9eWy0rXT8weFswLTlhLWZBLUZfXSskLyxcbiAgICByZXNvbHZlOiAoc3RyLCBfb25FcnJvciwgb3B0KSA9PiBpbnRSZXNvbHZlKHN0ciwgMiwgMTYsIG9wdCksXG4gICAgc3RyaW5naWZ5OiBub2RlID0+IGludFN0cmluZ2lmeShub2RlLCAxNiwgJzB4Jylcbn07XG5cbmV4cG9ydCB7IGludCwgaW50QmluLCBpbnRIZXgsIGludE9jdCB9O1xuIiwiaW1wb3J0IHsgaXNNYXAsIGlzUGFpciwgaXNTY2FsYXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9Ob2RlLmpzJztcbmltcG9ydCB7IGNyZWF0ZVBhaXIsIFBhaXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9QYWlyLmpzJztcbmltcG9ydCB7IFlBTUxNYXAsIGZpbmRQYWlyIH0gZnJvbSAnLi4vLi4vbm9kZXMvWUFNTE1hcC5qcyc7XG5cbmNsYXNzIFlBTUxTZXQgZXh0ZW5kcyBZQU1MTWFwIHtcbiAgICBjb25zdHJ1Y3RvcihzY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoc2NoZW1hKTtcbiAgICAgICAgdGhpcy50YWcgPSBZQU1MU2V0LnRhZztcbiAgICB9XG4gICAgYWRkKGtleSkge1xuICAgICAgICBsZXQgcGFpcjtcbiAgICAgICAgaWYgKGlzUGFpcihrZXkpKVxuICAgICAgICAgICAgcGFpciA9IGtleTtcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGtleSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICdrZXknIGluIGtleSAmJlxuICAgICAgICAgICAgJ3ZhbHVlJyBpbiBrZXkgJiZcbiAgICAgICAgICAgIGtleS52YWx1ZSA9PT0gbnVsbClcbiAgICAgICAgICAgIHBhaXIgPSBuZXcgUGFpcihrZXkua2V5LCBudWxsKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcGFpciA9IG5ldyBQYWlyKGtleSwgbnVsbCk7XG4gICAgICAgIGNvbnN0IHByZXYgPSBmaW5kUGFpcih0aGlzLml0ZW1zLCBwYWlyLmtleSk7XG4gICAgICAgIGlmICghcHJldilcbiAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChwYWlyKTtcbiAgICB9XG4gICAgZ2V0KGtleSwga2VlcFBhaXIpIHtcbiAgICAgICAgY29uc3QgcGFpciA9IGZpbmRQYWlyKHRoaXMuaXRlbXMsIGtleSk7XG4gICAgICAgIHJldHVybiAha2VlcFBhaXIgJiYgaXNQYWlyKHBhaXIpXG4gICAgICAgICAgICA/IGlzU2NhbGFyKHBhaXIua2V5KVxuICAgICAgICAgICAgICAgID8gcGFpci5rZXkudmFsdWVcbiAgICAgICAgICAgICAgICA6IHBhaXIua2V5XG4gICAgICAgICAgICA6IHBhaXI7XG4gICAgfVxuICAgIHNldChrZXksIHZhbHVlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJylcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYm9vbGVhbiB2YWx1ZSBmb3Igc2V0KGtleSwgdmFsdWUpIGluIGEgWUFNTCBzZXQsIG5vdCAke3R5cGVvZiB2YWx1ZX1gKTtcbiAgICAgICAgY29uc3QgcHJldiA9IGZpbmRQYWlyKHRoaXMuaXRlbXMsIGtleSk7XG4gICAgICAgIGlmIChwcmV2ICYmICF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5pdGVtcy5zcGxpY2UodGhpcy5pdGVtcy5pbmRleE9mKHByZXYpLCAxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghcHJldiAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKG5ldyBQYWlyKGtleSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvSlNPTihfLCBjdHgpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLnRvSlNPTihfLCBjdHgsIFNldCk7XG4gICAgfVxuICAgIHRvU3RyaW5nKGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCkge1xuICAgICAgICBpZiAoIWN0eClcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzKTtcbiAgICAgICAgaWYgKHRoaXMuaGFzQWxsTnVsbFZhbHVlcyh0cnVlKSlcbiAgICAgICAgICAgIHJldHVybiBzdXBlci50b1N0cmluZyhPYmplY3QuYXNzaWduKHt9LCBjdHgsIHsgYWxsTnVsbFZhbHVlczogdHJ1ZSB9KSwgb25Db21tZW50LCBvbkNob21wS2VlcCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU2V0IGl0ZW1zIG11c3QgYWxsIGhhdmUgbnVsbCB2YWx1ZXMnKTtcbiAgICB9XG59XG5ZQU1MU2V0LnRhZyA9ICd0YWc6eWFtbC5vcmcsMjAwMjpzZXQnO1xuY29uc3Qgc2V0ID0ge1xuICAgIGNvbGxlY3Rpb246ICdtYXAnLFxuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB2YWx1ZSBpbnN0YW5jZW9mIFNldCxcbiAgICBub2RlQ2xhc3M6IFlBTUxTZXQsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6c2V0JyxcbiAgICByZXNvbHZlKG1hcCwgb25FcnJvcikge1xuICAgICAgICBpZiAoaXNNYXAobWFwKSkge1xuICAgICAgICAgICAgaWYgKG1hcC5oYXNBbGxOdWxsVmFsdWVzKHRydWUpKVxuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBZQU1MU2V0KCksIG1hcCk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgb25FcnJvcignU2V0IGl0ZW1zIG11c3QgYWxsIGhhdmUgbnVsbCB2YWx1ZXMnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBvbkVycm9yKCdFeHBlY3RlZCBhIG1hcHBpbmcgZm9yIHRoaXMgdGFnJyk7XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfSxcbiAgICBjcmVhdGVOb2RlKHNjaGVtYSwgaXRlcmFibGUsIGN0eCkge1xuICAgICAgICBjb25zdCB7IHJlcGxhY2VyIH0gPSBjdHg7XG4gICAgICAgIGNvbnN0IHNldCA9IG5ldyBZQU1MU2V0KHNjaGVtYSk7XG4gICAgICAgIGlmIChpdGVyYWJsZSAmJiBTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGl0ZXJhYmxlKSlcbiAgICAgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIGl0ZXJhYmxlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXBsYWNlciA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSByZXBsYWNlci5jYWxsKGl0ZXJhYmxlLCB2YWx1ZSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIHNldC5pdGVtcy5wdXNoKGNyZWF0ZVBhaXIodmFsdWUsIG51bGwsIGN0eCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2V0O1xuICAgIH1cbn07XG5cbmV4cG9ydCB7IFlBTUxTZXQsIHNldCB9O1xuIiwiaW1wb3J0IHsgc3RyaW5naWZ5TnVtYmVyIH0gZnJvbSAnLi4vLi4vc3RyaW5naWZ5L3N0cmluZ2lmeU51bWJlci5qcyc7XG5cbi8qKiBJbnRlcm5hbCB0eXBlcyBoYW5kbGUgYmlnaW50IGFzIG51bWJlciwgYmVjYXVzZSBUUyBjYW4ndCBmaWd1cmUgaXQgb3V0LiAqL1xuZnVuY3Rpb24gcGFyc2VTZXhhZ2VzaW1hbChzdHIsIGFzQmlnSW50KSB7XG4gICAgY29uc3Qgc2lnbiA9IHN0clswXTtcbiAgICBjb25zdCBwYXJ0cyA9IHNpZ24gPT09ICctJyB8fCBzaWduID09PSAnKycgPyBzdHIuc3Vic3RyaW5nKDEpIDogc3RyO1xuICAgIGNvbnN0IG51bSA9IChuKSA9PiBhc0JpZ0ludCA/IEJpZ0ludChuKSA6IE51bWJlcihuKTtcbiAgICBjb25zdCByZXMgPSBwYXJ0c1xuICAgICAgICAucmVwbGFjZSgvXy9nLCAnJylcbiAgICAgICAgLnNwbGl0KCc6JylcbiAgICAgICAgLnJlZHVjZSgocmVzLCBwKSA9PiByZXMgKiBudW0oNjApICsgbnVtKHApLCBudW0oMCkpO1xuICAgIHJldHVybiAoc2lnbiA9PT0gJy0nID8gbnVtKC0xKSAqIHJlcyA6IHJlcyk7XG59XG4vKipcbiAqIGhoaGg6bW06c3Muc3NzXG4gKlxuICogSW50ZXJuYWwgdHlwZXMgaGFuZGxlIGJpZ2ludCBhcyBudW1iZXIsIGJlY2F1c2UgVFMgY2FuJ3QgZmlndXJlIGl0IG91dC5cbiAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5U2V4YWdlc2ltYWwobm9kZSkge1xuICAgIGxldCB7IHZhbHVlIH0gPSBub2RlO1xuICAgIGxldCBudW0gPSAobikgPT4gbjtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYmlnaW50JylcbiAgICAgICAgbnVtID0gbiA9PiBCaWdJbnQobik7XG4gICAgZWxzZSBpZiAoaXNOYU4odmFsdWUpIHx8ICFpc0Zpbml0ZSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiBzdHJpbmdpZnlOdW1iZXIobm9kZSk7XG4gICAgbGV0IHNpZ24gPSAnJztcbiAgICBpZiAodmFsdWUgPCAwKSB7XG4gICAgICAgIHNpZ24gPSAnLSc7XG4gICAgICAgIHZhbHVlICo9IG51bSgtMSk7XG4gICAgfVxuICAgIGNvbnN0IF82MCA9IG51bSg2MCk7XG4gICAgY29uc3QgcGFydHMgPSBbdmFsdWUgJSBfNjBdOyAvLyBzZWNvbmRzLCBpbmNsdWRpbmcgbXNcbiAgICBpZiAodmFsdWUgPCA2MCkge1xuICAgICAgICBwYXJ0cy51bnNoaWZ0KDApOyAvLyBhdCBsZWFzdCBvbmUgOiBpcyByZXF1aXJlZFxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFsdWUgPSAodmFsdWUgLSBwYXJ0c1swXSkgLyBfNjA7XG4gICAgICAgIHBhcnRzLnVuc2hpZnQodmFsdWUgJSBfNjApOyAvLyBtaW51dGVzXG4gICAgICAgIGlmICh2YWx1ZSA+PSA2MCkge1xuICAgICAgICAgICAgdmFsdWUgPSAodmFsdWUgLSBwYXJ0c1swXSkgLyBfNjA7XG4gICAgICAgICAgICBwYXJ0cy51bnNoaWZ0KHZhbHVlKTsgLy8gaG91cnNcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gKHNpZ24gK1xuICAgICAgICBwYXJ0c1xuICAgICAgICAgICAgLm1hcChuID0+IChuIDwgMTAgPyAnMCcgKyBTdHJpbmcobikgOiBTdHJpbmcobikpKVxuICAgICAgICAgICAgLmpvaW4oJzonKVxuICAgICAgICAgICAgLnJlcGxhY2UoLzAwMDAwMFxcZCokLywgJycpIC8vICUgNjAgbWF5IGludHJvZHVjZSBlcnJvclxuICAgICk7XG59XG5jb25zdCBpbnRUaW1lID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnIHx8IE51bWJlci5pc0ludGVnZXIodmFsdWUpLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6aW50JyxcbiAgICBmb3JtYXQ6ICdUSU1FJyxcbiAgICB0ZXN0OiAvXlstK10/WzAtOV1bMC05X10qKD86OlswLTVdP1swLTldKSskLyxcbiAgICByZXNvbHZlOiAoc3RyLCBfb25FcnJvciwgeyBpbnRBc0JpZ0ludCB9KSA9PiBwYXJzZVNleGFnZXNpbWFsKHN0ciwgaW50QXNCaWdJbnQpLFxuICAgIHN0cmluZ2lmeTogc3RyaW5naWZ5U2V4YWdlc2ltYWxcbn07XG5jb25zdCBmbG9hdFRpbWUgPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdCcsXG4gICAgZm9ybWF0OiAnVElNRScsXG4gICAgdGVzdDogL15bLStdP1swLTldWzAtOV9dKig/OjpbMC01XT9bMC05XSkrXFwuWzAtOV9dKiQvLFxuICAgIHJlc29sdmU6IHN0ciA9PiBwYXJzZVNleGFnZXNpbWFsKHN0ciwgZmFsc2UpLFxuICAgIHN0cmluZ2lmeTogc3RyaW5naWZ5U2V4YWdlc2ltYWxcbn07XG5jb25zdCB0aW1lc3RhbXAgPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOnRpbWVzdGFtcCcsXG4gICAgLy8gSWYgdGhlIHRpbWUgem9uZSBpcyBvbWl0dGVkLCB0aGUgdGltZXN0YW1wIGlzIGFzc3VtZWQgdG8gYmUgc3BlY2lmaWVkIGluIFVUQy4gVGhlIHRpbWUgcGFydFxuICAgIC8vIG1heSBiZSBvbWl0dGVkIGFsdG9nZXRoZXIsIHJlc3VsdGluZyBpbiBhIGRhdGUgZm9ybWF0LiBJbiBzdWNoIGEgY2FzZSwgdGhlIHRpbWUgcGFydCBpc1xuICAgIC8vIGFzc3VtZWQgdG8gYmUgMDA6MDA6MDBaIChzdGFydCBvZiBkYXksIFVUQykuXG4gICAgdGVzdDogUmVnRXhwKCdeKFswLTldezR9KS0oWzAtOV17MSwyfSktKFswLTldezEsMn0pJyArIC8vIFlZWVktTW0tRGRcbiAgICAgICAgJyg/OicgKyAvLyB0aW1lIGlzIG9wdGlvbmFsXG4gICAgICAgICcoPzp0fFR8WyBcXFxcdF0rKScgKyAvLyB0IHwgVCB8IHdoaXRlc3BhY2VcbiAgICAgICAgJyhbMC05XXsxLDJ9KTooWzAtOV17MSwyfSk6KFswLTldezEsMn0oXFxcXC5bMC05XSspPyknICsgLy8gSGg6TW06U3MoLnNzKT9cbiAgICAgICAgJyg/OlsgXFxcXHRdKihafFstK11bMDEyXT9bMC05XSg/OjpbMC05XXsyfSk/KSk/JyArIC8vIFogfCArNSB8IC0wMzozMFxuICAgICAgICAnKT8kJyksXG4gICAgcmVzb2x2ZShzdHIpIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBzdHIubWF0Y2godGltZXN0YW1wLnRlc3QpO1xuICAgICAgICBpZiAoIW1hdGNoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCchIXRpbWVzdGFtcCBleHBlY3RzIGEgZGF0ZSwgc3RhcnRpbmcgd2l0aCB5eXl5LW1tLWRkJyk7XG4gICAgICAgIGNvbnN0IFssIHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kXSA9IG1hdGNoLm1hcChOdW1iZXIpO1xuICAgICAgICBjb25zdCBtaWxsaXNlYyA9IG1hdGNoWzddID8gTnVtYmVyKChtYXRjaFs3XSArICcwMCcpLnN1YnN0cigxLCAzKSkgOiAwO1xuICAgICAgICBsZXQgZGF0ZSA9IERhdGUuVVRDKHllYXIsIG1vbnRoIC0gMSwgZGF5LCBob3VyIHx8IDAsIG1pbnV0ZSB8fCAwLCBzZWNvbmQgfHwgMCwgbWlsbGlzZWMpO1xuICAgICAgICBjb25zdCB0eiA9IG1hdGNoWzhdO1xuICAgICAgICBpZiAodHogJiYgdHogIT09ICdaJykge1xuICAgICAgICAgICAgbGV0IGQgPSBwYXJzZVNleGFnZXNpbWFsKHR6LCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoTWF0aC5hYnMoZCkgPCAzMClcbiAgICAgICAgICAgICAgICBkICo9IDYwO1xuICAgICAgICAgICAgZGF0ZSAtPSA2MDAwMCAqIGQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUpO1xuICAgIH0sXG4gICAgc3RyaW5naWZ5OiAoeyB2YWx1ZSB9KSA9PiB2YWx1ZS50b0lTT1N0cmluZygpLnJlcGxhY2UoLygoVDAwOjAwKT86MDApP1xcLjAwMFokLywgJycpXG59O1xuXG5leHBvcnQgeyBmbG9hdFRpbWUsIGludFRpbWUsIHRpbWVzdGFtcCB9O1xuIiwiaW1wb3J0IHsgbWFwIH0gZnJvbSAnLi4vY29tbW9uL21hcC5qcyc7XG5pbXBvcnQgeyBudWxsVGFnIH0gZnJvbSAnLi4vY29tbW9uL251bGwuanMnO1xuaW1wb3J0IHsgc2VxIH0gZnJvbSAnLi4vY29tbW9uL3NlcS5qcyc7XG5pbXBvcnQgeyBzdHJpbmcgfSBmcm9tICcuLi9jb21tb24vc3RyaW5nLmpzJztcbmltcG9ydCB7IGJpbmFyeSB9IGZyb20gJy4vYmluYXJ5LmpzJztcbmltcG9ydCB7IHRydWVUYWcsIGZhbHNlVGFnIH0gZnJvbSAnLi9ib29sLmpzJztcbmltcG9ydCB7IGZsb2F0TmFOLCBmbG9hdEV4cCwgZmxvYXQgfSBmcm9tICcuL2Zsb2F0LmpzJztcbmltcG9ydCB7IGludEJpbiwgaW50T2N0LCBpbnQsIGludEhleCB9IGZyb20gJy4vaW50LmpzJztcbmltcG9ydCB7IG9tYXAgfSBmcm9tICcuL29tYXAuanMnO1xuaW1wb3J0IHsgcGFpcnMgfSBmcm9tICcuL3BhaXJzLmpzJztcbmltcG9ydCB7IHNldCB9IGZyb20gJy4vc2V0LmpzJztcbmltcG9ydCB7IGludFRpbWUsIGZsb2F0VGltZSwgdGltZXN0YW1wIH0gZnJvbSAnLi90aW1lc3RhbXAuanMnO1xuXG5jb25zdCBzY2hlbWEgPSBbXG4gICAgbWFwLFxuICAgIHNlcSxcbiAgICBzdHJpbmcsXG4gICAgbnVsbFRhZyxcbiAgICB0cnVlVGFnLFxuICAgIGZhbHNlVGFnLFxuICAgIGludEJpbixcbiAgICBpbnRPY3QsXG4gICAgaW50LFxuICAgIGludEhleCxcbiAgICBmbG9hdE5hTixcbiAgICBmbG9hdEV4cCxcbiAgICBmbG9hdCxcbiAgICBiaW5hcnksXG4gICAgb21hcCxcbiAgICBwYWlycyxcbiAgICBzZXQsXG4gICAgaW50VGltZSxcbiAgICBmbG9hdFRpbWUsXG4gICAgdGltZXN0YW1wXG5dO1xuXG5leHBvcnQgeyBzY2hlbWEgfTtcbiIsImltcG9ydCB7IG1hcCB9IGZyb20gJy4vY29tbW9uL21hcC5qcyc7XG5pbXBvcnQgeyBudWxsVGFnIH0gZnJvbSAnLi9jb21tb24vbnVsbC5qcyc7XG5pbXBvcnQgeyBzZXEgfSBmcm9tICcuL2NvbW1vbi9zZXEuanMnO1xuaW1wb3J0IHsgc3RyaW5nIH0gZnJvbSAnLi9jb21tb24vc3RyaW5nLmpzJztcbmltcG9ydCB7IGJvb2xUYWcgfSBmcm9tICcuL2NvcmUvYm9vbC5qcyc7XG5pbXBvcnQgeyBmbG9hdCwgZmxvYXRFeHAsIGZsb2F0TmFOIH0gZnJvbSAnLi9jb3JlL2Zsb2F0LmpzJztcbmltcG9ydCB7IGludCwgaW50SGV4LCBpbnRPY3QgfSBmcm9tICcuL2NvcmUvaW50LmpzJztcbmltcG9ydCB7IHNjaGVtYSB9IGZyb20gJy4vY29yZS9zY2hlbWEuanMnO1xuaW1wb3J0IHsgc2NoZW1hIGFzIHNjaGVtYSQxIH0gZnJvbSAnLi9qc29uL3NjaGVtYS5qcyc7XG5pbXBvcnQgeyBiaW5hcnkgfSBmcm9tICcuL3lhbWwtMS4xL2JpbmFyeS5qcyc7XG5pbXBvcnQgeyBvbWFwIH0gZnJvbSAnLi95YW1sLTEuMS9vbWFwLmpzJztcbmltcG9ydCB7IHBhaXJzIH0gZnJvbSAnLi95YW1sLTEuMS9wYWlycy5qcyc7XG5pbXBvcnQgeyBzY2hlbWEgYXMgc2NoZW1hJDIgfSBmcm9tICcuL3lhbWwtMS4xL3NjaGVtYS5qcyc7XG5pbXBvcnQgeyBzZXQgfSBmcm9tICcuL3lhbWwtMS4xL3NldC5qcyc7XG5pbXBvcnQgeyBmbG9hdFRpbWUsIGludFRpbWUsIHRpbWVzdGFtcCB9IGZyb20gJy4veWFtbC0xLjEvdGltZXN0YW1wLmpzJztcblxuY29uc3Qgc2NoZW1hcyA9IG5ldyBNYXAoW1xuICAgIFsnY29yZScsIHNjaGVtYV0sXG4gICAgWydmYWlsc2FmZScsIFttYXAsIHNlcSwgc3RyaW5nXV0sXG4gICAgWydqc29uJywgc2NoZW1hJDFdLFxuICAgIFsneWFtbDExJywgc2NoZW1hJDJdLFxuICAgIFsneWFtbC0xLjEnLCBzY2hlbWEkMl1cbl0pO1xuY29uc3QgdGFnc0J5TmFtZSA9IHtcbiAgICBiaW5hcnksXG4gICAgYm9vbDogYm9vbFRhZyxcbiAgICBmbG9hdCxcbiAgICBmbG9hdEV4cCxcbiAgICBmbG9hdE5hTixcbiAgICBmbG9hdFRpbWUsXG4gICAgaW50LFxuICAgIGludEhleCxcbiAgICBpbnRPY3QsXG4gICAgaW50VGltZSxcbiAgICBtYXAsXG4gICAgbnVsbDogbnVsbFRhZyxcbiAgICBvbWFwLFxuICAgIHBhaXJzLFxuICAgIHNlcSxcbiAgICBzZXQsXG4gICAgdGltZXN0YW1wXG59O1xuY29uc3QgY29yZUtub3duVGFncyA9IHtcbiAgICAndGFnOnlhbWwub3JnLDIwMDI6YmluYXJ5JzogYmluYXJ5LFxuICAgICd0YWc6eWFtbC5vcmcsMjAwMjpvbWFwJzogb21hcCxcbiAgICAndGFnOnlhbWwub3JnLDIwMDI6cGFpcnMnOiBwYWlycyxcbiAgICAndGFnOnlhbWwub3JnLDIwMDI6c2V0Jzogc2V0LFxuICAgICd0YWc6eWFtbC5vcmcsMjAwMjp0aW1lc3RhbXAnOiB0aW1lc3RhbXBcbn07XG5mdW5jdGlvbiBnZXRUYWdzKGN1c3RvbVRhZ3MsIHNjaGVtYU5hbWUpIHtcbiAgICBsZXQgdGFncyA9IHNjaGVtYXMuZ2V0KHNjaGVtYU5hbWUpO1xuICAgIGlmICghdGFncykge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjdXN0b21UYWdzKSlcbiAgICAgICAgICAgIHRhZ3MgPSBbXTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gQXJyYXkuZnJvbShzY2hlbWFzLmtleXMoKSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGtleSA9PiBrZXkgIT09ICd5YW1sMTEnKVxuICAgICAgICAgICAgICAgIC5tYXAoa2V5ID0+IEpTT04uc3RyaW5naWZ5KGtleSkpXG4gICAgICAgICAgICAgICAgLmpvaW4oJywgJyk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gc2NoZW1hIFwiJHtzY2hlbWFOYW1lfVwiOyB1c2Ugb25lIG9mICR7a2V5c30gb3IgZGVmaW5lIGN1c3RvbVRhZ3MgYXJyYXlgKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShjdXN0b21UYWdzKSkge1xuICAgICAgICBmb3IgKGNvbnN0IHRhZyBvZiBjdXN0b21UYWdzKVxuICAgICAgICAgICAgdGFncyA9IHRhZ3MuY29uY2F0KHRhZyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBjdXN0b21UYWdzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRhZ3MgPSBjdXN0b21UYWdzKHRhZ3Muc2xpY2UoKSk7XG4gICAgfVxuICAgIHJldHVybiB0YWdzLm1hcCh0YWcgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHRhZyAhPT0gJ3N0cmluZycpXG4gICAgICAgICAgICByZXR1cm4gdGFnO1xuICAgICAgICBjb25zdCB0YWdPYmogPSB0YWdzQnlOYW1lW3RhZ107XG4gICAgICAgIGlmICh0YWdPYmopXG4gICAgICAgICAgICByZXR1cm4gdGFnT2JqO1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGFnc0J5TmFtZSlcbiAgICAgICAgICAgIC5tYXAoa2V5ID0+IEpTT04uc3RyaW5naWZ5KGtleSkpXG4gICAgICAgICAgICAuam9pbignLCAnKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGN1c3RvbSB0YWcgXCIke3RhZ31cIjsgdXNlIG9uZSBvZiAke2tleXN9YCk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCB7IGNvcmVLbm93blRhZ3MsIGdldFRhZ3MgfTtcbiIsImltcG9ydCB7IE1BUCwgU0NBTEFSLCBTRVEgfSBmcm9tICcuLi9ub2Rlcy9Ob2RlLmpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJy4vY29tbW9uL21hcC5qcyc7XG5pbXBvcnQgeyBzZXEgfSBmcm9tICcuL2NvbW1vbi9zZXEuanMnO1xuaW1wb3J0IHsgc3RyaW5nIH0gZnJvbSAnLi9jb21tb24vc3RyaW5nLmpzJztcbmltcG9ydCB7IGdldFRhZ3MsIGNvcmVLbm93blRhZ3MgfSBmcm9tICcuL3RhZ3MuanMnO1xuXG5jb25zdCBzb3J0TWFwRW50cmllc0J5S2V5ID0gKGEsIGIpID0+IGEua2V5IDwgYi5rZXkgPyAtMSA6IGEua2V5ID4gYi5rZXkgPyAxIDogMDtcbmNsYXNzIFNjaGVtYSB7XG4gICAgY29uc3RydWN0b3IoeyBjb21wYXQsIGN1c3RvbVRhZ3MsIG1lcmdlLCByZXNvbHZlS25vd25UYWdzLCBzY2hlbWEsIHNvcnRNYXBFbnRyaWVzLCB0b1N0cmluZ0RlZmF1bHRzIH0pIHtcbiAgICAgICAgdGhpcy5jb21wYXQgPSBBcnJheS5pc0FycmF5KGNvbXBhdClcbiAgICAgICAgICAgID8gZ2V0VGFncyhjb21wYXQsICdjb21wYXQnKVxuICAgICAgICAgICAgOiBjb21wYXRcbiAgICAgICAgICAgICAgICA/IGdldFRhZ3MobnVsbCwgY29tcGF0KVxuICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgdGhpcy5tZXJnZSA9ICEhbWVyZ2U7XG4gICAgICAgIHRoaXMubmFtZSA9ICh0eXBlb2Ygc2NoZW1hID09PSAnc3RyaW5nJyAmJiBzY2hlbWEpIHx8ICdjb3JlJztcbiAgICAgICAgdGhpcy5rbm93blRhZ3MgPSByZXNvbHZlS25vd25UYWdzID8gY29yZUtub3duVGFncyA6IHt9O1xuICAgICAgICB0aGlzLnRhZ3MgPSBnZXRUYWdzKGN1c3RvbVRhZ3MsIHRoaXMubmFtZSk7XG4gICAgICAgIHRoaXMudG9TdHJpbmdPcHRpb25zID0gdG9TdHJpbmdEZWZhdWx0cyB8fCBudWxsO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgTUFQLCB7IHZhbHVlOiBtYXAgfSk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBTQ0FMQVIsIHsgdmFsdWU6IHN0cmluZyB9KTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIFNFUSwgeyB2YWx1ZTogc2VxIH0pO1xuICAgICAgICAvLyBVc2VkIGJ5IGNyZWF0ZU1hcCgpXG4gICAgICAgIHRoaXMuc29ydE1hcEVudHJpZXMgPVxuICAgICAgICAgICAgc29ydE1hcEVudHJpZXMgPT09IHRydWUgPyBzb3J0TWFwRW50cmllc0J5S2V5IDogc29ydE1hcEVudHJpZXMgfHwgbnVsbDtcbiAgICB9XG4gICAgY2xvbmUoKSB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSBPYmplY3QuY3JlYXRlKFNjaGVtYS5wcm90b3R5cGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHRoaXMpKTtcbiAgICAgICAgY29weS50YWdzID0gdGhpcy50YWdzLnNsaWNlKCk7XG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cbn1cblxuZXhwb3J0IHsgU2NoZW1hIH07XG4iLCJpbXBvcnQgeyBpc05vZGUgfSBmcm9tICcuLi9ub2Rlcy9Ob2RlLmpzJztcbmltcG9ydCB7IGNyZWF0ZVN0cmluZ2lmeUNvbnRleHQsIHN0cmluZ2lmeSB9IGZyb20gJy4vc3RyaW5naWZ5LmpzJztcbmltcG9ydCB7IGluZGVudENvbW1lbnQsIGxpbmVDb21tZW50IH0gZnJvbSAnLi9zdHJpbmdpZnlDb21tZW50LmpzJztcblxuZnVuY3Rpb24gc3RyaW5naWZ5RG9jdW1lbnQoZG9jLCBvcHRpb25zKSB7XG4gICAgY29uc3QgbGluZXMgPSBbXTtcbiAgICBsZXQgaGFzRGlyZWN0aXZlcyA9IG9wdGlvbnMuZGlyZWN0aXZlcyA9PT0gdHJ1ZTtcbiAgICBpZiAob3B0aW9ucy5kaXJlY3RpdmVzICE9PSBmYWxzZSAmJiBkb2MuZGlyZWN0aXZlcykge1xuICAgICAgICBjb25zdCBkaXIgPSBkb2MuZGlyZWN0aXZlcy50b1N0cmluZyhkb2MpO1xuICAgICAgICBpZiAoZGlyKSB7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGRpcik7XG4gICAgICAgICAgICBoYXNEaXJlY3RpdmVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkb2MuZGlyZWN0aXZlcy5tYXJrZXIpXG4gICAgICAgICAgICBoYXNEaXJlY3RpdmVzID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGhhc0RpcmVjdGl2ZXMpXG4gICAgICAgIGxpbmVzLnB1c2goJy0tLScpO1xuICAgIGNvbnN0IGN0eCA9IGNyZWF0ZVN0cmluZ2lmeUNvbnRleHQoZG9jLCBvcHRpb25zKTtcbiAgICBjb25zdCB7IGNvbW1lbnRTdHJpbmcgfSA9IGN0eC5vcHRpb25zO1xuICAgIGlmIChkb2MuY29tbWVudEJlZm9yZSkge1xuICAgICAgICBpZiAobGluZXMubGVuZ3RoICE9PSAxKVxuICAgICAgICAgICAgbGluZXMudW5zaGlmdCgnJyk7XG4gICAgICAgIGNvbnN0IGNzID0gY29tbWVudFN0cmluZyhkb2MuY29tbWVudEJlZm9yZSk7XG4gICAgICAgIGxpbmVzLnVuc2hpZnQoaW5kZW50Q29tbWVudChjcywgJycpKTtcbiAgICB9XG4gICAgbGV0IGNob21wS2VlcCA9IGZhbHNlO1xuICAgIGxldCBjb250ZW50Q29tbWVudCA9IG51bGw7XG4gICAgaWYgKGRvYy5jb250ZW50cykge1xuICAgICAgICBpZiAoaXNOb2RlKGRvYy5jb250ZW50cykpIHtcbiAgICAgICAgICAgIGlmIChkb2MuY29udGVudHMuc3BhY2VCZWZvcmUgJiYgaGFzRGlyZWN0aXZlcylcbiAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICAgICAgICAgIGlmIChkb2MuY29udGVudHMuY29tbWVudEJlZm9yZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNzID0gY29tbWVudFN0cmluZyhkb2MuY29udGVudHMuY29tbWVudEJlZm9yZSk7XG4gICAgICAgICAgICAgICAgbGluZXMucHVzaChpbmRlbnRDb21tZW50KGNzLCAnJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdG9wLWxldmVsIGJsb2NrIHNjYWxhcnMgbmVlZCB0byBiZSBpbmRlbnRlZCBpZiBmb2xsb3dlZCBieSBhIGNvbW1lbnRcbiAgICAgICAgICAgIGN0eC5mb3JjZUJsb2NrSW5kZW50ID0gISFkb2MuY29tbWVudDtcbiAgICAgICAgICAgIGNvbnRlbnRDb21tZW50ID0gZG9jLmNvbnRlbnRzLmNvbW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb25DaG9tcEtlZXAgPSBjb250ZW50Q29tbWVudCA/IHVuZGVmaW5lZCA6ICgpID0+IChjaG9tcEtlZXAgPSB0cnVlKTtcbiAgICAgICAgbGV0IGJvZHkgPSBzdHJpbmdpZnkoZG9jLmNvbnRlbnRzLCBjdHgsICgpID0+IChjb250ZW50Q29tbWVudCA9IG51bGwpLCBvbkNob21wS2VlcCk7XG4gICAgICAgIGlmIChjb250ZW50Q29tbWVudClcbiAgICAgICAgICAgIGJvZHkgKz0gbGluZUNvbW1lbnQoYm9keSwgJycsIGNvbW1lbnRTdHJpbmcoY29udGVudENvbW1lbnQpKTtcbiAgICAgICAgaWYgKChib2R5WzBdID09PSAnfCcgfHwgYm9keVswXSA9PT0gJz4nKSAmJlxuICAgICAgICAgICAgbGluZXNbbGluZXMubGVuZ3RoIC0gMV0gPT09ICctLS0nKSB7XG4gICAgICAgICAgICAvLyBUb3AtbGV2ZWwgYmxvY2sgc2NhbGFycyB3aXRoIGEgcHJlY2VkaW5nIGRvYyBtYXJrZXIgb3VnaHQgdG8gdXNlIHRoZVxuICAgICAgICAgICAgLy8gc2FtZSBsaW5lIGZvciB0aGVpciBoZWFkZXIuXG4gICAgICAgICAgICBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXSA9IGAtLS0gJHtib2R5fWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGluZXMucHVzaChib2R5KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGxpbmVzLnB1c2goc3RyaW5naWZ5KGRvYy5jb250ZW50cywgY3R4KSk7XG4gICAgfVxuICAgIGxldCBkYyA9IGRvYy5jb21tZW50O1xuICAgIGlmIChkYyAmJiBjaG9tcEtlZXApXG4gICAgICAgIGRjID0gZGMucmVwbGFjZSgvXlxcbisvLCAnJyk7XG4gICAgaWYgKGRjKSB7XG4gICAgICAgIGlmICgoIWNob21wS2VlcCB8fCBjb250ZW50Q29tbWVudCkgJiYgbGluZXNbbGluZXMubGVuZ3RoIC0gMV0gIT09ICcnKVxuICAgICAgICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgICAgIGxpbmVzLnB1c2goaW5kZW50Q29tbWVudChjb21tZW50U3RyaW5nKGRjKSwgJycpKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpICsgJ1xcbic7XG59XG5cbmV4cG9ydCB7IHN0cmluZ2lmeURvY3VtZW50IH07XG4iLCIvKipcbiAqIEFwcGxpZXMgdGhlIEpTT04ucGFyc2UgcmV2aXZlciBhbGdvcml0aG0gYXMgZGVmaW5lZCBpbiB0aGUgRUNNQS0yNjIgc3BlYyxcbiAqIGluIHNlY3Rpb24gMjQuNS4xLjEgXCJSdW50aW1lIFNlbWFudGljczogSW50ZXJuYWxpemVKU09OUHJvcGVydHlcIiBvZiB0aGVcbiAqIDIwMjEgZWRpdGlvbjogaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1qc29uLnBhcnNlXG4gKlxuICogSW5jbHVkZXMgZXh0ZW5zaW9ucyBmb3IgaGFuZGxpbmcgTWFwIGFuZCBTZXQgb2JqZWN0cy5cbiAqL1xuZnVuY3Rpb24gYXBwbHlSZXZpdmVyKHJldml2ZXIsIG9iaiwga2V5LCB2YWwpIHtcbiAgICBpZiAodmFsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB2YWwubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2MCA9IHZhbFtpXTtcbiAgICAgICAgICAgICAgICBjb25zdCB2MSA9IGFwcGx5UmV2aXZlcihyZXZpdmVyLCB2YWwsIFN0cmluZyhpKSwgdjApO1xuICAgICAgICAgICAgICAgIGlmICh2MSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdmFsW2ldO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHYxICE9PSB2MClcbiAgICAgICAgICAgICAgICAgICAgdmFsW2ldID0gdjE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGsgb2YgQXJyYXkuZnJvbSh2YWwua2V5cygpKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHYwID0gdmFsLmdldChrKTtcbiAgICAgICAgICAgICAgICBjb25zdCB2MSA9IGFwcGx5UmV2aXZlcihyZXZpdmVyLCB2YWwsIGssIHYwKTtcbiAgICAgICAgICAgICAgICBpZiAodjEgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgdmFsLmRlbGV0ZShrKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh2MSAhPT0gdjApXG4gICAgICAgICAgICAgICAgICAgIHZhbC5zZXQoaywgdjEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbCBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCB2MCBvZiBBcnJheS5mcm9tKHZhbCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2MSA9IGFwcGx5UmV2aXZlcihyZXZpdmVyLCB2YWwsIHYwLCB2MCk7XG4gICAgICAgICAgICAgICAgaWYgKHYxID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHZhbC5kZWxldGUodjApO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHYxICE9PSB2MCkge1xuICAgICAgICAgICAgICAgICAgICB2YWwuZGVsZXRlKHYwKTtcbiAgICAgICAgICAgICAgICAgICAgdmFsLmFkZCh2MSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBbaywgdjBdIG9mIE9iamVjdC5lbnRyaWVzKHZhbCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2MSA9IGFwcGx5UmV2aXZlcihyZXZpdmVyLCB2YWwsIGssIHYwKTtcbiAgICAgICAgICAgICAgICBpZiAodjEgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHZhbFtrXTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh2MSAhPT0gdjApXG4gICAgICAgICAgICAgICAgICAgIHZhbFtrXSA9IHYxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXZpdmVyLmNhbGwob2JqLCBrZXksIHZhbCk7XG59XG5cbmV4cG9ydCB7IGFwcGx5UmV2aXZlciB9O1xuIiwiaW1wb3J0IHsgQWxpYXMgfSBmcm9tICcuLi9ub2Rlcy9BbGlhcy5qcyc7XG5pbXBvcnQgeyBpc0VtcHR5UGF0aCwgY29sbGVjdGlvbkZyb21QYXRoIH0gZnJvbSAnLi4vbm9kZXMvQ29sbGVjdGlvbi5qcyc7XG5pbXBvcnQgeyBOT0RFX1RZUEUsIERPQywgaXNOb2RlLCBpc0NvbGxlY3Rpb24sIGlzU2NhbGFyIH0gZnJvbSAnLi4vbm9kZXMvTm9kZS5qcyc7XG5pbXBvcnQgeyBQYWlyIH0gZnJvbSAnLi4vbm9kZXMvUGFpci5qcyc7XG5pbXBvcnQgeyB0b0pTIH0gZnJvbSAnLi4vbm9kZXMvdG9KUy5qcyc7XG5pbXBvcnQgeyBkZWZhdWx0T3B0aW9ucyB9IGZyb20gJy4uL29wdGlvbnMuanMnO1xuaW1wb3J0IHsgU2NoZW1hIH0gZnJvbSAnLi4vc2NoZW1hL1NjaGVtYS5qcyc7XG5pbXBvcnQgeyBzdHJpbmdpZnkgfSBmcm9tICcuLi9zdHJpbmdpZnkvc3RyaW5naWZ5LmpzJztcbmltcG9ydCB7IHN0cmluZ2lmeURvY3VtZW50IH0gZnJvbSAnLi4vc3RyaW5naWZ5L3N0cmluZ2lmeURvY3VtZW50LmpzJztcbmltcG9ydCB7IGFuY2hvck5hbWVzLCBmaW5kTmV3QW5jaG9yLCBjcmVhdGVOb2RlQW5jaG9ycyB9IGZyb20gJy4vYW5jaG9ycy5qcyc7XG5pbXBvcnQgeyBhcHBseVJldml2ZXIgfSBmcm9tICcuL2FwcGx5UmV2aXZlci5qcyc7XG5pbXBvcnQgeyBjcmVhdGVOb2RlIH0gZnJvbSAnLi9jcmVhdGVOb2RlLmpzJztcbmltcG9ydCB7IERpcmVjdGl2ZXMgfSBmcm9tICcuL2RpcmVjdGl2ZXMuanMnO1xuXG5jbGFzcyBEb2N1bWVudCB7XG4gICAgY29uc3RydWN0b3IodmFsdWUsIHJlcGxhY2VyLCBvcHRpb25zKSB7XG4gICAgICAgIC8qKiBBIGNvbW1lbnQgYmVmb3JlIHRoaXMgRG9jdW1lbnQgKi9cbiAgICAgICAgdGhpcy5jb21tZW50QmVmb3JlID0gbnVsbDtcbiAgICAgICAgLyoqIEEgY29tbWVudCBpbW1lZGlhdGVseSBhZnRlciB0aGlzIERvY3VtZW50ICovXG4gICAgICAgIHRoaXMuY29tbWVudCA9IG51bGw7XG4gICAgICAgIC8qKiBFcnJvcnMgZW5jb3VudGVyZWQgZHVyaW5nIHBhcnNpbmcuICovXG4gICAgICAgIHRoaXMuZXJyb3JzID0gW107XG4gICAgICAgIC8qKiBXYXJuaW5ncyBlbmNvdW50ZXJlZCBkdXJpbmcgcGFyc2luZy4gKi9cbiAgICAgICAgdGhpcy53YXJuaW5ncyA9IFtdO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgTk9ERV9UWVBFLCB7IHZhbHVlOiBET0MgfSk7XG4gICAgICAgIGxldCBfcmVwbGFjZXIgPSBudWxsO1xuICAgICAgICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAnZnVuY3Rpb24nIHx8IEFycmF5LmlzQXJyYXkocmVwbGFjZXIpKSB7XG4gICAgICAgICAgICBfcmVwbGFjZXIgPSByZXBsYWNlcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQgJiYgcmVwbGFjZXIpIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSByZXBsYWNlcjtcbiAgICAgICAgICAgIHJlcGxhY2VyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdCA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRPcHRpb25zLCBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0O1xuICAgICAgICBsZXQgeyB2ZXJzaW9uIH0gPSBvcHQ7XG4gICAgICAgIGlmIChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZGlyZWN0aXZlcykge1xuICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmVzID0gb3B0aW9ucy5kaXJlY3RpdmVzLmF0RG9jdW1lbnQoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpcmVjdGl2ZXMueWFtbC5leHBsaWNpdClcbiAgICAgICAgICAgICAgICB2ZXJzaW9uID0gdGhpcy5kaXJlY3RpdmVzLnlhbWwudmVyc2lvbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZXMgPSBuZXcgRGlyZWN0aXZlcyh7IHZlcnNpb24gfSk7XG4gICAgICAgIHRoaXMuc2V0U2NoZW1hKHZlcnNpb24sIG9wdGlvbnMpO1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRoaXMuY29udGVudHMgPSBudWxsO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudHMgPSB0aGlzLmNyZWF0ZU5vZGUodmFsdWUsIF9yZXBsYWNlciwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgZGVlcCBjb3B5IG9mIHRoaXMgRG9jdW1lbnQgYW5kIGl0cyBjb250ZW50cy5cbiAgICAgKlxuICAgICAqIEN1c3RvbSBOb2RlIHZhbHVlcyB0aGF0IGluaGVyaXQgZnJvbSBgT2JqZWN0YCBzdGlsbCByZWZlciB0byB0aGVpciBvcmlnaW5hbCBpbnN0YW5jZXMuXG4gICAgICovXG4gICAgY2xvbmUoKSB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSBPYmplY3QuY3JlYXRlKERvY3VtZW50LnByb3RvdHlwZSwge1xuICAgICAgICAgICAgW05PREVfVFlQRV06IHsgdmFsdWU6IERPQyB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb3B5LmNvbW1lbnRCZWZvcmUgPSB0aGlzLmNvbW1lbnRCZWZvcmU7XG4gICAgICAgIGNvcHkuY29tbWVudCA9IHRoaXMuY29tbWVudDtcbiAgICAgICAgY29weS5lcnJvcnMgPSB0aGlzLmVycm9ycy5zbGljZSgpO1xuICAgICAgICBjb3B5Lndhcm5pbmdzID0gdGhpcy53YXJuaW5ncy5zbGljZSgpO1xuICAgICAgICBjb3B5Lm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLm9wdGlvbnMpO1xuICAgICAgICBpZiAodGhpcy5kaXJlY3RpdmVzKVxuICAgICAgICAgICAgY29weS5kaXJlY3RpdmVzID0gdGhpcy5kaXJlY3RpdmVzLmNsb25lKCk7XG4gICAgICAgIGNvcHkuc2NoZW1hID0gdGhpcy5zY2hlbWEuY2xvbmUoKTtcbiAgICAgICAgY29weS5jb250ZW50cyA9IGlzTm9kZSh0aGlzLmNvbnRlbnRzKVxuICAgICAgICAgICAgPyB0aGlzLmNvbnRlbnRzLmNsb25lKGNvcHkuc2NoZW1hKVxuICAgICAgICAgICAgOiB0aGlzLmNvbnRlbnRzO1xuICAgICAgICBpZiAodGhpcy5yYW5nZSlcbiAgICAgICAgICAgIGNvcHkucmFuZ2UgPSB0aGlzLnJhbmdlLnNsaWNlKCk7XG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cbiAgICAvKiogQWRkcyBhIHZhbHVlIHRvIHRoZSBkb2N1bWVudC4gKi9cbiAgICBhZGQodmFsdWUpIHtcbiAgICAgICAgaWYgKGFzc2VydENvbGxlY3Rpb24odGhpcy5jb250ZW50cykpXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRzLmFkZCh2YWx1ZSk7XG4gICAgfVxuICAgIC8qKiBBZGRzIGEgdmFsdWUgdG8gdGhlIGRvY3VtZW50LiAqL1xuICAgIGFkZEluKHBhdGgsIHZhbHVlKSB7XG4gICAgICAgIGlmIChhc3NlcnRDb2xsZWN0aW9uKHRoaXMuY29udGVudHMpKVxuICAgICAgICAgICAgdGhpcy5jb250ZW50cy5hZGRJbihwYXRoLCB2YWx1ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyBgQWxpYXNgIG5vZGUsIGVuc3VyaW5nIHRoYXQgdGhlIHRhcmdldCBgbm9kZWAgaGFzIHRoZSByZXF1aXJlZCBhbmNob3IuXG4gICAgICpcbiAgICAgKiBJZiBgbm9kZWAgYWxyZWFkeSBoYXMgYW4gYW5jaG9yLCBgbmFtZWAgaXMgaWdub3JlZC5cbiAgICAgKiBPdGhlcndpc2UsIHRoZSBgbm9kZS5hbmNob3JgIHZhbHVlIHdpbGwgYmUgc2V0IHRvIGBuYW1lYCxcbiAgICAgKiBvciBpZiBhbiBhbmNob3Igd2l0aCB0aGF0IG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBkb2N1bWVudCxcbiAgICAgKiBgbmFtZWAgd2lsbCBiZSB1c2VkIGFzIGEgcHJlZml4IGZvciBhIG5ldyB1bmlxdWUgYW5jaG9yLlxuICAgICAqIElmIGBuYW1lYCBpcyB1bmRlZmluZWQsIHRoZSBnZW5lcmF0ZWQgYW5jaG9yIHdpbGwgdXNlICdhJyBhcyBhIHByZWZpeC5cbiAgICAgKi9cbiAgICBjcmVhdGVBbGlhcyhub2RlLCBuYW1lKSB7XG4gICAgICAgIGlmICghbm9kZS5hbmNob3IpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXYgPSBhbmNob3JOYW1lcyh0aGlzKTtcbiAgICAgICAgICAgIG5vZGUuYW5jaG9yID1cbiAgICAgICAgICAgICAgICAhbmFtZSB8fCBwcmV2LmhhcyhuYW1lKSA/IGZpbmROZXdBbmNob3IobmFtZSB8fCAnYScsIHByZXYpIDogbmFtZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEFsaWFzKG5vZGUuYW5jaG9yKTtcbiAgICB9XG4gICAgY3JlYXRlTm9kZSh2YWx1ZSwgcmVwbGFjZXIsIG9wdGlvbnMpIHtcbiAgICAgICAgbGV0IF9yZXBsYWNlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHR5cGVvZiByZXBsYWNlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFsdWUgPSByZXBsYWNlci5jYWxsKHsgJyc6IHZhbHVlIH0sICcnLCB2YWx1ZSk7XG4gICAgICAgICAgICBfcmVwbGFjZXIgPSByZXBsYWNlcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlcGxhY2VyKSkge1xuICAgICAgICAgICAgY29uc3Qga2V5VG9TdHIgPSAodikgPT4gdHlwZW9mIHYgPT09ICdudW1iZXInIHx8IHYgaW5zdGFuY2VvZiBTdHJpbmcgfHwgdiBpbnN0YW5jZW9mIE51bWJlcjtcbiAgICAgICAgICAgIGNvbnN0IGFzU3RyID0gcmVwbGFjZXIuZmlsdGVyKGtleVRvU3RyKS5tYXAoU3RyaW5nKTtcbiAgICAgICAgICAgIGlmIChhc1N0ci5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgIHJlcGxhY2VyID0gcmVwbGFjZXIuY29uY2F0KGFzU3RyKTtcbiAgICAgICAgICAgIF9yZXBsYWNlciA9IHJlcGxhY2VyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCAmJiByZXBsYWNlcikge1xuICAgICAgICAgICAgb3B0aW9ucyA9IHJlcGxhY2VyO1xuICAgICAgICAgICAgcmVwbGFjZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBhbGlhc0R1cGxpY2F0ZU9iamVjdHMsIGFuY2hvclByZWZpeCwgZmxvdywga2VlcFVuZGVmaW5lZCwgb25UYWdPYmosIHRhZyB9ID0gb3B0aW9ucyB8fCB7fTtcbiAgICAgICAgY29uc3QgeyBvbkFuY2hvciwgc2V0QW5jaG9ycywgc291cmNlT2JqZWN0cyB9ID0gY3JlYXRlTm9kZUFuY2hvcnModGhpcywgYW5jaG9yUHJlZml4IHx8ICdhJyk7XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIGFsaWFzRHVwbGljYXRlT2JqZWN0czogYWxpYXNEdXBsaWNhdGVPYmplY3RzICE9PSBudWxsICYmIGFsaWFzRHVwbGljYXRlT2JqZWN0cyAhPT0gdm9pZCAwID8gYWxpYXNEdXBsaWNhdGVPYmplY3RzIDogdHJ1ZSxcbiAgICAgICAgICAgIGtlZXBVbmRlZmluZWQ6IGtlZXBVbmRlZmluZWQgIT09IG51bGwgJiYga2VlcFVuZGVmaW5lZCAhPT0gdm9pZCAwID8ga2VlcFVuZGVmaW5lZCA6IGZhbHNlLFxuICAgICAgICAgICAgb25BbmNob3IsXG4gICAgICAgICAgICBvblRhZ09iaixcbiAgICAgICAgICAgIHJlcGxhY2VyOiBfcmVwbGFjZXIsXG4gICAgICAgICAgICBzY2hlbWE6IHRoaXMuc2NoZW1hLFxuICAgICAgICAgICAgc291cmNlT2JqZWN0c1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBub2RlID0gY3JlYXRlTm9kZSh2YWx1ZSwgdGFnLCBjdHgpO1xuICAgICAgICBpZiAoZmxvdyAmJiBpc0NvbGxlY3Rpb24obm9kZSkpXG4gICAgICAgICAgICBub2RlLmZsb3cgPSB0cnVlO1xuICAgICAgICBzZXRBbmNob3JzKCk7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGEga2V5IGFuZCBhIHZhbHVlIGludG8gYSBgUGFpcmAgdXNpbmcgdGhlIGN1cnJlbnQgc2NoZW1hLFxuICAgICAqIHJlY3Vyc2l2ZWx5IHdyYXBwaW5nIGFsbCB2YWx1ZXMgYXMgYFNjYWxhcmAgb3IgYENvbGxlY3Rpb25gIG5vZGVzLlxuICAgICAqL1xuICAgIGNyZWF0ZVBhaXIoa2V5LCB2YWx1ZSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IGsgPSB0aGlzLmNyZWF0ZU5vZGUoa2V5LCBudWxsLCBvcHRpb25zKTtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuY3JlYXRlTm9kZSh2YWx1ZSwgbnVsbCwgb3B0aW9ucyk7XG4gICAgICAgIHJldHVybiBuZXcgUGFpcihrLCB2KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIHZhbHVlIGZyb20gdGhlIGRvY3VtZW50LlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgaXRlbSB3YXMgZm91bmQgYW5kIHJlbW92ZWQuXG4gICAgICovXG4gICAgZGVsZXRlKGtleSkge1xuICAgICAgICByZXR1cm4gYXNzZXJ0Q29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKSA/IHRoaXMuY29udGVudHMuZGVsZXRlKGtleSkgOiBmYWxzZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIHZhbHVlIGZyb20gdGhlIGRvY3VtZW50LlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgaXRlbSB3YXMgZm91bmQgYW5kIHJlbW92ZWQuXG4gICAgICovXG4gICAgZGVsZXRlSW4ocGF0aCkge1xuICAgICAgICBpZiAoaXNFbXB0eVBhdGgocGF0aCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnRzID09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jb250ZW50cyA9IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXNzZXJ0Q29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKVxuICAgICAgICAgICAgPyB0aGlzLmNvbnRlbnRzLmRlbGV0ZUluKHBhdGgpXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGl0ZW0gYXQgYGtleWAsIG9yIGB1bmRlZmluZWRgIGlmIG5vdCBmb3VuZC4gQnkgZGVmYXVsdCB1bndyYXBzXG4gICAgICogc2NhbGFyIHZhbHVlcyBmcm9tIHRoZWlyIHN1cnJvdW5kaW5nIG5vZGU7IHRvIGRpc2FibGUgc2V0IGBrZWVwU2NhbGFyYCB0b1xuICAgICAqIGB0cnVlYCAoY29sbGVjdGlvbnMgYXJlIGFsd2F5cyByZXR1cm5lZCBpbnRhY3QpLlxuICAgICAqL1xuICAgIGdldChrZXksIGtlZXBTY2FsYXIpIHtcbiAgICAgICAgcmV0dXJuIGlzQ29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKVxuICAgICAgICAgICAgPyB0aGlzLmNvbnRlbnRzLmdldChrZXksIGtlZXBTY2FsYXIpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpdGVtIGF0IGBwYXRoYCwgb3IgYHVuZGVmaW5lZGAgaWYgbm90IGZvdW5kLiBCeSBkZWZhdWx0IHVud3JhcHNcbiAgICAgKiBzY2FsYXIgdmFsdWVzIGZyb20gdGhlaXIgc3Vycm91bmRpbmcgbm9kZTsgdG8gZGlzYWJsZSBzZXQgYGtlZXBTY2FsYXJgIHRvXG4gICAgICogYHRydWVgIChjb2xsZWN0aW9ucyBhcmUgYWx3YXlzIHJldHVybmVkIGludGFjdCkuXG4gICAgICovXG4gICAgZ2V0SW4ocGF0aCwga2VlcFNjYWxhcikge1xuICAgICAgICBpZiAoaXNFbXB0eVBhdGgocGF0aCkpXG4gICAgICAgICAgICByZXR1cm4gIWtlZXBTY2FsYXIgJiYgaXNTY2FsYXIodGhpcy5jb250ZW50cylcbiAgICAgICAgICAgICAgICA/IHRoaXMuY29udGVudHMudmFsdWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuY29udGVudHM7XG4gICAgICAgIHJldHVybiBpc0NvbGxlY3Rpb24odGhpcy5jb250ZW50cylcbiAgICAgICAgICAgID8gdGhpcy5jb250ZW50cy5nZXRJbihwYXRoLCBrZWVwU2NhbGFyKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZG9jdW1lbnQgaW5jbHVkZXMgYSB2YWx1ZSB3aXRoIHRoZSBrZXkgYGtleWAuXG4gICAgICovXG4gICAgaGFzKGtleSkge1xuICAgICAgICByZXR1cm4gaXNDb2xsZWN0aW9uKHRoaXMuY29udGVudHMpID8gdGhpcy5jb250ZW50cy5oYXMoa2V5KSA6IGZhbHNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGRvY3VtZW50IGluY2x1ZGVzIGEgdmFsdWUgYXQgYHBhdGhgLlxuICAgICAqL1xuICAgIGhhc0luKHBhdGgpIHtcbiAgICAgICAgaWYgKGlzRW1wdHlQYXRoKHBhdGgpKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudHMgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIGlzQ29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKSA/IHRoaXMuY29udGVudHMuaGFzSW4ocGF0aCkgOiBmYWxzZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyBhIHZhbHVlIGluIHRoaXMgZG9jdW1lbnQuIEZvciBgISFzZXRgLCBgdmFsdWVgIG5lZWRzIHRvIGJlIGFcbiAgICAgKiBib29sZWFuIHRvIGFkZC9yZW1vdmUgdGhlIGl0ZW0gZnJvbSB0aGUgc2V0LlxuICAgICAqL1xuICAgIHNldChrZXksIHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRzID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudHMgPSBjb2xsZWN0aW9uRnJvbVBhdGgodGhpcy5zY2hlbWEsIFtrZXldLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXNzZXJ0Q29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKSkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50cy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyBhIHZhbHVlIGluIHRoaXMgZG9jdW1lbnQuIEZvciBgISFzZXRgLCBgdmFsdWVgIG5lZWRzIHRvIGJlIGFcbiAgICAgKiBib29sZWFuIHRvIGFkZC9yZW1vdmUgdGhlIGl0ZW0gZnJvbSB0aGUgc2V0LlxuICAgICAqL1xuICAgIHNldEluKHBhdGgsIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc0VtcHR5UGF0aChwYXRoKSlcbiAgICAgICAgICAgIHRoaXMuY29udGVudHMgPSB2YWx1ZTtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5jb250ZW50cyA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRzID0gY29sbGVjdGlvbkZyb21QYXRoKHRoaXMuc2NoZW1hLCBBcnJheS5mcm9tKHBhdGgpLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXNzZXJ0Q29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKSkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50cy5zZXRJbihwYXRoLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hhbmdlIHRoZSBZQU1MIHZlcnNpb24gYW5kIHNjaGVtYSB1c2VkIGJ5IHRoZSBkb2N1bWVudC5cbiAgICAgKiBBIGBudWxsYCB2ZXJzaW9uIGRpc2FibGVzIHN1cHBvcnQgZm9yIGRpcmVjdGl2ZXMsIGV4cGxpY2l0IHRhZ3MsIGFuY2hvcnMsIGFuZCBhbGlhc2VzLlxuICAgICAqIEl0IGFsc28gcmVxdWlyZXMgdGhlIGBzY2hlbWFgIG9wdGlvbiB0byBiZSBnaXZlbiBhcyBhIGBTY2hlbWFgIGluc3RhbmNlIHZhbHVlLlxuICAgICAqXG4gICAgICogT3ZlcnJpZGVzIGFsbCBwcmV2aW91c2x5IHNldCBzY2hlbWEgb3B0aW9ucy5cbiAgICAgKi9cbiAgICBzZXRTY2hlbWEodmVyc2lvbiwgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmVyc2lvbiA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICB2ZXJzaW9uID0gU3RyaW5nKHZlcnNpb24pO1xuICAgICAgICBsZXQgb3B0O1xuICAgICAgICBzd2l0Y2ggKHZlcnNpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJzEuMSc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlyZWN0aXZlcylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmVzLnlhbWwudmVyc2lvbiA9ICcxLjEnO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmVzID0gbmV3IERpcmVjdGl2ZXMoeyB2ZXJzaW9uOiAnMS4xJyB9KTtcbiAgICAgICAgICAgICAgICBvcHQgPSB7IG1lcmdlOiB0cnVlLCByZXNvbHZlS25vd25UYWdzOiBmYWxzZSwgc2NoZW1hOiAneWFtbC0xLjEnIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcxLjInOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRpcmVjdGl2ZXMpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlcy55YW1sLnZlcnNpb24gPSAnMS4yJztcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlcyA9IG5ldyBEaXJlY3RpdmVzKHsgdmVyc2lvbjogJzEuMicgfSk7XG4gICAgICAgICAgICAgICAgb3B0ID0geyBtZXJnZTogZmFsc2UsIHJlc29sdmVLbm93blRhZ3M6IHRydWUsIHNjaGVtYTogJ2NvcmUnIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIG51bGw6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlyZWN0aXZlcylcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuZGlyZWN0aXZlcztcbiAgICAgICAgICAgICAgICBvcHQgPSBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN2ID0gSlNPTi5zdHJpbmdpZnkodmVyc2lvbik7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAnMS4xJywgJzEuMicgb3IgbnVsbCBhcyBmaXJzdCBhcmd1bWVudCwgYnV0IGZvdW5kOiAke3N2fWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIE5vdCB1c2luZyBgaW5zdGFuY2VvZiBTY2hlbWFgIHRvIGFsbG93IGZvciBkdWNrIHR5cGluZ1xuICAgICAgICBpZiAob3B0aW9ucy5zY2hlbWEgaW5zdGFuY2VvZiBPYmplY3QpXG4gICAgICAgICAgICB0aGlzLnNjaGVtYSA9IG9wdGlvbnMuc2NoZW1hO1xuICAgICAgICBlbHNlIGlmIChvcHQpXG4gICAgICAgICAgICB0aGlzLnNjaGVtYSA9IG5ldyBTY2hlbWEoT2JqZWN0LmFzc2lnbihvcHQsIG9wdGlvbnMpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXaXRoIGEgbnVsbCBZQU1MIHZlcnNpb24sIHRoZSB7IHNjaGVtYTogU2NoZW1hIH0gb3B0aW9uIGlzIHJlcXVpcmVkYCk7XG4gICAgfVxuICAgIC8vIGpzb24gJiBqc29uQXJnIGFyZSBvbmx5IHVzZWQgZnJvbSB0b0pTT04oKVxuICAgIHRvSlMoeyBqc29uLCBqc29uQXJnLCBtYXBBc01hcCwgbWF4QWxpYXNDb3VudCwgb25BbmNob3IsIHJldml2ZXIgfSA9IHt9KSB7XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIGFuY2hvcnM6IG5ldyBNYXAoKSxcbiAgICAgICAgICAgIGRvYzogdGhpcyxcbiAgICAgICAgICAgIGtlZXA6ICFqc29uLFxuICAgICAgICAgICAgbWFwQXNNYXA6IG1hcEFzTWFwID09PSB0cnVlLFxuICAgICAgICAgICAgbWFwS2V5V2FybmVkOiBmYWxzZSxcbiAgICAgICAgICAgIG1heEFsaWFzQ291bnQ6IHR5cGVvZiBtYXhBbGlhc0NvdW50ID09PSAnbnVtYmVyJyA/IG1heEFsaWFzQ291bnQgOiAxMDAsXG4gICAgICAgICAgICBzdHJpbmdpZnlcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzID0gdG9KUyh0aGlzLmNvbnRlbnRzLCBqc29uQXJnIHx8ICcnLCBjdHgpO1xuICAgICAgICBpZiAodHlwZW9mIG9uQW5jaG9yID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgZm9yIChjb25zdCB7IGNvdW50LCByZXMgfSBvZiBjdHguYW5jaG9ycy52YWx1ZXMoKSlcbiAgICAgICAgICAgICAgICBvbkFuY2hvcihyZXMsIGNvdW50KTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiByZXZpdmVyID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IGFwcGx5UmV2aXZlcihyZXZpdmVyLCB7ICcnOiByZXMgfSwgJycsIHJlcylcbiAgICAgICAgICAgIDogcmVzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGRvY3VtZW50IGBjb250ZW50c2AuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ganNvbkFyZyBVc2VkIGJ5IGBKU09OLnN0cmluZ2lmeWAgdG8gaW5kaWNhdGUgdGhlIGFycmF5IGluZGV4IG9yXG4gICAgICogICBwcm9wZXJ0eSBuYW1lLlxuICAgICAqL1xuICAgIHRvSlNPTihqc29uQXJnLCBvbkFuY2hvcikge1xuICAgICAgICByZXR1cm4gdGhpcy50b0pTKHsganNvbjogdHJ1ZSwganNvbkFyZywgbWFwQXNNYXA6IGZhbHNlLCBvbkFuY2hvciB9KTtcbiAgICB9XG4gICAgLyoqIEEgWUFNTCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZG9jdW1lbnQuICovXG4gICAgdG9TdHJpbmcob3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGlmICh0aGlzLmVycm9ycy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEb2N1bWVudCB3aXRoIGVycm9ycyBjYW5ub3QgYmUgc3RyaW5naWZpZWQnKTtcbiAgICAgICAgaWYgKCdpbmRlbnQnIGluIG9wdGlvbnMgJiZcbiAgICAgICAgICAgICghTnVtYmVyLmlzSW50ZWdlcihvcHRpb25zLmluZGVudCkgfHwgTnVtYmVyKG9wdGlvbnMuaW5kZW50KSA8PSAwKSkge1xuICAgICAgICAgICAgY29uc3QgcyA9IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMuaW5kZW50KTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXCJpbmRlbnRcIiBvcHRpb24gbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIG5vdCAke3N9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0cmluZ2lmeURvY3VtZW50KHRoaXMsIG9wdGlvbnMpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFzc2VydENvbGxlY3Rpb24oY29udGVudHMpIHtcbiAgICBpZiAoaXNDb2xsZWN0aW9uKGNvbnRlbnRzKSlcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBhIFlBTUwgY29sbGVjdGlvbiBhcyBkb2N1bWVudCBjb250ZW50cycpO1xufVxuXG5leHBvcnQgeyBEb2N1bWVudCB9O1xuIiwiY2xhc3MgWUFNTEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKG5hbWUsIHBvcywgY29kZSwgbWVzc2FnZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICB0aGlzLnBvcyA9IHBvcztcbiAgICB9XG59XG5jbGFzcyBZQU1MUGFyc2VFcnJvciBleHRlbmRzIFlBTUxFcnJvciB7XG4gICAgY29uc3RydWN0b3IocG9zLCBjb2RlLCBtZXNzYWdlKSB7XG4gICAgICAgIHN1cGVyKCdZQU1MUGFyc2VFcnJvcicsIHBvcywgY29kZSwgbWVzc2FnZSk7XG4gICAgfVxufVxuY2xhc3MgWUFNTFdhcm5pbmcgZXh0ZW5kcyBZQU1MRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKHBvcywgY29kZSwgbWVzc2FnZSkge1xuICAgICAgICBzdXBlcignWUFNTFdhcm5pbmcnLCBwb3MsIGNvZGUsIG1lc3NhZ2UpO1xuICAgIH1cbn1cbmNvbnN0IHByZXR0aWZ5RXJyb3IgPSAoc3JjLCBsYykgPT4gKGVycm9yKSA9PiB7XG4gICAgaWYgKGVycm9yLnBvc1swXSA9PT0gLTEpXG4gICAgICAgIHJldHVybjtcbiAgICBlcnJvci5saW5lUG9zID0gZXJyb3IucG9zLm1hcChwb3MgPT4gbGMubGluZVBvcyhwb3MpKTtcbiAgICBjb25zdCB7IGxpbmUsIGNvbCB9ID0gZXJyb3IubGluZVBvc1swXTtcbiAgICBlcnJvci5tZXNzYWdlICs9IGAgYXQgbGluZSAke2xpbmV9LCBjb2x1bW4gJHtjb2x9YDtcbiAgICBsZXQgY2kgPSBjb2wgLSAxO1xuICAgIGxldCBsaW5lU3RyID0gc3JjXG4gICAgICAgIC5zdWJzdHJpbmcobGMubGluZVN0YXJ0c1tsaW5lIC0gMV0sIGxjLmxpbmVTdGFydHNbbGluZV0pXG4gICAgICAgIC5yZXBsYWNlKC9bXFxuXFxyXSskLywgJycpO1xuICAgIC8vIFRyaW0gdG8gbWF4IDgwIGNoYXJzLCBrZWVwaW5nIGNvbCBwb3NpdGlvbiBuZWFyIHRoZSBtaWRkbGVcbiAgICBpZiAoY2kgPj0gNjAgJiYgbGluZVN0ci5sZW5ndGggPiA4MCkge1xuICAgICAgICBjb25zdCB0cmltU3RhcnQgPSBNYXRoLm1pbihjaSAtIDM5LCBsaW5lU3RyLmxlbmd0aCAtIDc5KTtcbiAgICAgICAgbGluZVN0ciA9ICfigKYnICsgbGluZVN0ci5zdWJzdHJpbmcodHJpbVN0YXJ0KTtcbiAgICAgICAgY2kgLT0gdHJpbVN0YXJ0IC0gMTtcbiAgICB9XG4gICAgaWYgKGxpbmVTdHIubGVuZ3RoID4gODApXG4gICAgICAgIGxpbmVTdHIgPSBsaW5lU3RyLnN1YnN0cmluZygwLCA3OSkgKyAn4oCmJztcbiAgICAvLyBJbmNsdWRlIHByZXZpb3VzIGxpbmUgaW4gY29udGV4dCBpZiBwb2ludGluZyBhdCBsaW5lIHN0YXJ0XG4gICAgaWYgKGxpbmUgPiAxICYmIC9eICokLy50ZXN0KGxpbmVTdHIuc3Vic3RyaW5nKDAsIGNpKSkpIHtcbiAgICAgICAgLy8gUmVnZXhwIHdvbid0IG1hdGNoIGlmIHN0YXJ0IGlzIHRyaW1tZWRcbiAgICAgICAgbGV0IHByZXYgPSBzcmMuc3Vic3RyaW5nKGxjLmxpbmVTdGFydHNbbGluZSAtIDJdLCBsYy5saW5lU3RhcnRzW2xpbmUgLSAxXSk7XG4gICAgICAgIGlmIChwcmV2Lmxlbmd0aCA+IDgwKVxuICAgICAgICAgICAgcHJldiA9IHByZXYuc3Vic3RyaW5nKDAsIDc5KSArICfigKZcXG4nO1xuICAgICAgICBsaW5lU3RyID0gcHJldiArIGxpbmVTdHI7XG4gICAgfVxuICAgIGlmICgvW14gXS8udGVzdChsaW5lU3RyKSkge1xuICAgICAgICBsZXQgY291bnQgPSAxO1xuICAgICAgICBjb25zdCBlbmQgPSBlcnJvci5saW5lUG9zWzFdO1xuICAgICAgICBpZiAoZW5kICYmIGVuZC5saW5lID09PSBsaW5lICYmIGVuZC5jb2wgPiBjb2wpIHtcbiAgICAgICAgICAgIGNvdW50ID0gTWF0aC5taW4oZW5kLmNvbCAtIGNvbCwgODAgLSBjaSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9pbnRlciA9ICcgJy5yZXBlYXQoY2kpICsgJ14nLnJlcGVhdChjb3VudCk7XG4gICAgICAgIGVycm9yLm1lc3NhZ2UgKz0gYDpcXG5cXG4ke2xpbmVTdHJ9XFxuJHtwb2ludGVyfVxcbmA7XG4gICAgfVxufTtcblxuZXhwb3J0IHsgWUFNTEVycm9yLCBZQU1MUGFyc2VFcnJvciwgWUFNTFdhcm5pbmcsIHByZXR0aWZ5RXJyb3IgfTtcbiIsImZ1bmN0aW9uIHJlc29sdmVQcm9wcyh0b2tlbnMsIHsgZmxvdywgaW5kaWNhdG9yLCBuZXh0LCBvZmZzZXQsIG9uRXJyb3IsIHN0YXJ0T25OZXdsaW5lIH0pIHtcbiAgICBsZXQgc3BhY2VCZWZvcmUgPSBmYWxzZTtcbiAgICBsZXQgYXROZXdsaW5lID0gc3RhcnRPbk5ld2xpbmU7XG4gICAgbGV0IGhhc1NwYWNlID0gc3RhcnRPbk5ld2xpbmU7XG4gICAgbGV0IGNvbW1lbnQgPSAnJztcbiAgICBsZXQgY29tbWVudFNlcCA9ICcnO1xuICAgIGxldCBoYXNOZXdsaW5lID0gZmFsc2U7XG4gICAgbGV0IHJlcVNwYWNlID0gZmFsc2U7XG4gICAgbGV0IGFuY2hvciA9IG51bGw7XG4gICAgbGV0IHRhZyA9IG51bGw7XG4gICAgbGV0IGNvbW1hID0gbnVsbDtcbiAgICBsZXQgZm91bmQgPSBudWxsO1xuICAgIGxldCBzdGFydCA9IG51bGw7XG4gICAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMpIHtcbiAgICAgICAgaWYgKHJlcVNwYWNlKSB7XG4gICAgICAgICAgICBpZiAodG9rZW4udHlwZSAhPT0gJ3NwYWNlJyAmJlxuICAgICAgICAgICAgICAgIHRva2VuLnR5cGUgIT09ICduZXdsaW5lJyAmJlxuICAgICAgICAgICAgICAgIHRva2VuLnR5cGUgIT09ICdjb21tYScpXG4gICAgICAgICAgICAgICAgb25FcnJvcih0b2tlbi5vZmZzZXQsICdNSVNTSU5HX0NIQVInLCAnVGFncyBhbmQgYW5jaG9ycyBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIHRoZSBuZXh0IHRva2VuIGJ5IHdoaXRlIHNwYWNlJyk7XG4gICAgICAgICAgICByZXFTcGFjZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgICAgIC8vIEF0IHRoZSBkb2MgbGV2ZWwsIHRhYnMgYXQgbGluZSBzdGFydCBtYXkgYmUgcGFyc2VkXG4gICAgICAgICAgICAgICAgLy8gYXMgbGVhZGluZyB3aGl0ZSBzcGFjZSByYXRoZXIgdGhhbiBpbmRlbnRhdGlvbi5cbiAgICAgICAgICAgICAgICAvLyBJbiBhIGZsb3cgY29sbGVjdGlvbiwgb25seSB0aGUgcGFyc2VyIGhhbmRsZXMgaW5kZW50LlxuICAgICAgICAgICAgICAgIGlmICghZmxvdyAmJlxuICAgICAgICAgICAgICAgICAgICBhdE5ld2xpbmUgJiZcbiAgICAgICAgICAgICAgICAgICAgaW5kaWNhdG9yICE9PSAnZG9jLXN0YXJ0JyAmJlxuICAgICAgICAgICAgICAgICAgICB0b2tlbi5zb3VyY2VbMF0gPT09ICdcXHQnKVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnVEFCX0FTX0lOREVOVCcsICdUYWJzIGFyZSBub3QgYWxsb3dlZCBhcyBpbmRlbnRhdGlvbicpO1xuICAgICAgICAgICAgICAgIGhhc1NwYWNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOiB7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNTcGFjZSlcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ01JU1NJTkdfQ0hBUicsICdDb21tZW50cyBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIG90aGVyIHRva2VucyBieSB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXJzJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2IgPSB0b2tlbi5zb3VyY2Uuc3Vic3RyaW5nKDEpIHx8ICcgJztcbiAgICAgICAgICAgICAgICBpZiAoIWNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBjYjtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgKz0gY29tbWVudFNlcCArIGNiO1xuICAgICAgICAgICAgICAgIGNvbW1lbnRTZXAgPSAnJztcbiAgICAgICAgICAgICAgICBhdE5ld2xpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ25ld2xpbmUnOlxuICAgICAgICAgICAgICAgIGlmIChhdE5ld2xpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50ICs9IHRva2VuLnNvdXJjZTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2VCZWZvcmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnRTZXAgKz0gdG9rZW4uc291cmNlO1xuICAgICAgICAgICAgICAgIGF0TmV3bGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgaGFzTmV3bGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgaGFzU3BhY2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYW5jaG9yJzpcbiAgICAgICAgICAgICAgICBpZiAoYW5jaG9yKVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnTVVMVElQTEVfQU5DSE9SUycsICdBIG5vZGUgY2FuIGhhdmUgYXQgbW9zdCBvbmUgYW5jaG9yJyk7XG4gICAgICAgICAgICAgICAgYW5jaG9yID0gdG9rZW47XG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID09PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICBzdGFydCA9IHRva2VuLm9mZnNldDtcbiAgICAgICAgICAgICAgICBhdE5ld2xpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBoYXNTcGFjZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJlcVNwYWNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3RhZyc6IHtcbiAgICAgICAgICAgICAgICBpZiAodGFnKVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnTVVMVElQTEVfVEFHUycsICdBIG5vZGUgY2FuIGhhdmUgYXQgbW9zdCBvbmUgdGFnJyk7XG4gICAgICAgICAgICAgICAgdGFnID0gdG9rZW47XG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID09PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICBzdGFydCA9IHRva2VuLm9mZnNldDtcbiAgICAgICAgICAgICAgICBhdE5ld2xpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBoYXNTcGFjZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJlcVNwYWNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgaW5kaWNhdG9yOlxuICAgICAgICAgICAgICAgIC8vIENvdWxkIGhlcmUgaGFuZGxlIHByZWNlZGluZyBjb21tZW50cyBkaWZmZXJlbnRseVxuICAgICAgICAgICAgICAgIGlmIChhbmNob3IgfHwgdGFnKVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnQkFEX1BST1BfT1JERVInLCBgQW5jaG9ycyBhbmQgdGFncyBtdXN0IGJlIGFmdGVyIHRoZSAke3Rva2VuLnNvdXJjZX0gaW5kaWNhdG9yYCk7XG4gICAgICAgICAgICAgICAgaWYgKGZvdW5kKVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnVU5FWFBFQ1RFRF9UT0tFTicsIGBVbmV4cGVjdGVkICR7dG9rZW4uc291cmNlfSBpbiAke2Zsb3cgfHwgJ2NvbGxlY3Rpb24nfWApO1xuICAgICAgICAgICAgICAgIGZvdW5kID0gdG9rZW47XG4gICAgICAgICAgICAgICAgYXROZXdsaW5lID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaGFzU3BhY2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1hJzpcbiAgICAgICAgICAgICAgICBpZiAoZmxvdykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29tbWEpXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnVU5FWFBFQ1RFRF9UT0tFTicsIGBVbmV4cGVjdGVkICwgaW4gJHtmbG93fWApO1xuICAgICAgICAgICAgICAgICAgICBjb21tYSA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICBhdE5ld2xpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaGFzU3BhY2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZWxzZSBmYWxsdGhyb3VnaFxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnVU5FWFBFQ1RFRF9UT0tFTicsIGBVbmV4cGVjdGVkICR7dG9rZW4udHlwZX0gdG9rZW5gKTtcbiAgICAgICAgICAgICAgICBhdE5ld2xpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBoYXNTcGFjZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGxhc3QgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGVuZCA9IGxhc3QgPyBsYXN0Lm9mZnNldCArIGxhc3Quc291cmNlLmxlbmd0aCA6IG9mZnNldDtcbiAgICBpZiAocmVxU3BhY2UgJiZcbiAgICAgICAgbmV4dCAmJlxuICAgICAgICBuZXh0LnR5cGUgIT09ICdzcGFjZScgJiZcbiAgICAgICAgbmV4dC50eXBlICE9PSAnbmV3bGluZScgJiZcbiAgICAgICAgbmV4dC50eXBlICE9PSAnY29tbWEnICYmXG4gICAgICAgIChuZXh0LnR5cGUgIT09ICdzY2FsYXInIHx8IG5leHQuc291cmNlICE9PSAnJykpXG4gICAgICAgIG9uRXJyb3IobmV4dC5vZmZzZXQsICdNSVNTSU5HX0NIQVInLCAnVGFncyBhbmQgYW5jaG9ycyBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIHRoZSBuZXh0IHRva2VuIGJ5IHdoaXRlIHNwYWNlJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY29tbWEsXG4gICAgICAgIGZvdW5kLFxuICAgICAgICBzcGFjZUJlZm9yZSxcbiAgICAgICAgY29tbWVudCxcbiAgICAgICAgaGFzTmV3bGluZSxcbiAgICAgICAgYW5jaG9yLFxuICAgICAgICB0YWcsXG4gICAgICAgIGVuZCxcbiAgICAgICAgc3RhcnQ6IHN0YXJ0ICE9PSBudWxsICYmIHN0YXJ0ICE9PSB2b2lkIDAgPyBzdGFydCA6IGVuZFxuICAgIH07XG59XG5cbmV4cG9ydCB7IHJlc29sdmVQcm9wcyB9O1xuIiwiZnVuY3Rpb24gY29udGFpbnNOZXdsaW5lKGtleSkge1xuICAgIGlmICgha2V5KVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICBzd2l0Y2ggKGtleS50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2FsaWFzJzpcbiAgICAgICAgY2FzZSAnc2NhbGFyJzpcbiAgICAgICAgY2FzZSAnZG91YmxlLXF1b3RlZC1zY2FsYXInOlxuICAgICAgICBjYXNlICdzaW5nbGUtcXVvdGVkLXNjYWxhcic6XG4gICAgICAgICAgICBpZiAoa2V5LnNvdXJjZS5pbmNsdWRlcygnXFxuJykpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBpZiAoa2V5LmVuZClcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHN0IG9mIGtleS5lbmQpXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdC50eXBlID09PSAnbmV3bGluZScpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgY2FzZSAnZmxvdy1jb2xsZWN0aW9uJzpcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXQgb2Yga2V5Lml0ZW1zKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBzdCBvZiBpdC5zdGFydClcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0LnR5cGUgPT09ICduZXdsaW5lJylcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChpdC5zZXApXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc3Qgb2YgaXQuc2VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0LnR5cGUgPT09ICduZXdsaW5lJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoY29udGFpbnNOZXdsaW5lKGl0LmtleSkgfHwgY29udGFpbnNOZXdsaW5lKGl0LnZhbHVlKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cbmV4cG9ydCB7IGNvbnRhaW5zTmV3bGluZSB9O1xuIiwiaW1wb3J0IHsgY29udGFpbnNOZXdsaW5lIH0gZnJvbSAnLi91dGlsLWNvbnRhaW5zLW5ld2xpbmUuanMnO1xuXG5mdW5jdGlvbiBmbG93SW5kZW50Q2hlY2soaW5kZW50LCBmYywgb25FcnJvcikge1xuICAgIGlmICgoZmMgPT09IG51bGwgfHwgZmMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZjLnR5cGUpID09PSAnZmxvdy1jb2xsZWN0aW9uJykge1xuICAgICAgICBjb25zdCBlbmQgPSBmYy5lbmRbMF07XG4gICAgICAgIGlmIChlbmQuaW5kZW50ID09PSBpbmRlbnQgJiZcbiAgICAgICAgICAgIChlbmQuc291cmNlID09PSAnXScgfHwgZW5kLnNvdXJjZSA9PT0gJ30nKSAmJlxuICAgICAgICAgICAgY29udGFpbnNOZXdsaW5lKGZjKSkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gJ0Zsb3cgZW5kIGluZGljYXRvciBzaG91bGQgYmUgbW9yZSBpbmRlbnRlZCB0aGFuIHBhcmVudCc7XG4gICAgICAgICAgICBvbkVycm9yKGVuZCwgJ0JBRF9JTkRFTlQnLCBtc2csIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgeyBmbG93SW5kZW50Q2hlY2sgfTtcbiIsImltcG9ydCB7IGlzU2NhbGFyIH0gZnJvbSAnLi4vbm9kZXMvTm9kZS5qcyc7XG5cbmZ1bmN0aW9uIG1hcEluY2x1ZGVzKGN0eCwgaXRlbXMsIHNlYXJjaCkge1xuICAgIGNvbnN0IHsgdW5pcXVlS2V5cyB9ID0gY3R4Lm9wdGlvbnM7XG4gICAgaWYgKHVuaXF1ZUtleXMgPT09IGZhbHNlKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgaXNFcXVhbCA9IHR5cGVvZiB1bmlxdWVLZXlzID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gdW5pcXVlS2V5c1xuICAgICAgICA6IChhLCBiKSA9PiBhID09PSBiIHx8XG4gICAgICAgICAgICAoaXNTY2FsYXIoYSkgJiZcbiAgICAgICAgICAgICAgICBpc1NjYWxhcihiKSAmJlxuICAgICAgICAgICAgICAgIGEudmFsdWUgPT09IGIudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAhKGEudmFsdWUgPT09ICc8PCcgJiYgY3R4LnNjaGVtYS5tZXJnZSkpO1xuICAgIHJldHVybiBpdGVtcy5zb21lKHBhaXIgPT4gaXNFcXVhbChwYWlyLmtleSwgc2VhcmNoKSk7XG59XG5cbmV4cG9ydCB7IG1hcEluY2x1ZGVzIH07XG4iLCJpbXBvcnQgeyBQYWlyIH0gZnJvbSAnLi4vbm9kZXMvUGFpci5qcyc7XG5pbXBvcnQgeyBZQU1MTWFwIH0gZnJvbSAnLi4vbm9kZXMvWUFNTE1hcC5qcyc7XG5pbXBvcnQgeyByZXNvbHZlUHJvcHMgfSBmcm9tICcuL3Jlc29sdmUtcHJvcHMuanMnO1xuaW1wb3J0IHsgY29udGFpbnNOZXdsaW5lIH0gZnJvbSAnLi91dGlsLWNvbnRhaW5zLW5ld2xpbmUuanMnO1xuaW1wb3J0IHsgZmxvd0luZGVudENoZWNrIH0gZnJvbSAnLi91dGlsLWZsb3ctaW5kZW50LWNoZWNrLmpzJztcbmltcG9ydCB7IG1hcEluY2x1ZGVzIH0gZnJvbSAnLi91dGlsLW1hcC1pbmNsdWRlcy5qcyc7XG5cbmNvbnN0IHN0YXJ0Q29sTXNnID0gJ0FsbCBtYXBwaW5nIGl0ZW1zIG11c3Qgc3RhcnQgYXQgdGhlIHNhbWUgY29sdW1uJztcbmZ1bmN0aW9uIHJlc29sdmVCbG9ja01hcCh7IGNvbXBvc2VOb2RlLCBjb21wb3NlRW1wdHlOb2RlIH0sIGN0eCwgYm0sIG9uRXJyb3IpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgbWFwID0gbmV3IFlBTUxNYXAoY3R4LnNjaGVtYSk7XG4gICAgaWYgKGN0eC5hdFJvb3QpXG4gICAgICAgIGN0eC5hdFJvb3QgPSBmYWxzZTtcbiAgICBsZXQgb2Zmc2V0ID0gYm0ub2Zmc2V0O1xuICAgIGZvciAoY29uc3QgY29sbEl0ZW0gb2YgYm0uaXRlbXMpIHtcbiAgICAgICAgY29uc3QgeyBzdGFydCwga2V5LCBzZXAsIHZhbHVlIH0gPSBjb2xsSXRlbTtcbiAgICAgICAgLy8ga2V5IHByb3BlcnRpZXNcbiAgICAgICAgY29uc3Qga2V5UHJvcHMgPSByZXNvbHZlUHJvcHMoc3RhcnQsIHtcbiAgICAgICAgICAgIGluZGljYXRvcjogJ2V4cGxpY2l0LWtleS1pbmQnLFxuICAgICAgICAgICAgbmV4dDoga2V5IHx8IChzZXAgPT09IG51bGwgfHwgc2VwID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZXBbMF0pLFxuICAgICAgICAgICAgb2Zmc2V0LFxuICAgICAgICAgICAgb25FcnJvcixcbiAgICAgICAgICAgIHN0YXJ0T25OZXdsaW5lOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBpbXBsaWNpdEtleSA9ICFrZXlQcm9wcy5mb3VuZDtcbiAgICAgICAgaWYgKGltcGxpY2l0S2V5KSB7XG4gICAgICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgaWYgKGtleS50eXBlID09PSAnYmxvY2stc2VxJylcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcihvZmZzZXQsICdCTE9DS19BU19JTVBMSUNJVF9LRVknLCAnQSBibG9jayBzZXF1ZW5jZSBtYXkgbm90IGJlIHVzZWQgYXMgYW4gaW1wbGljaXQgbWFwIGtleScpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCdpbmRlbnQnIGluIGtleSAmJiBrZXkuaW5kZW50ICE9PSBibS5pbmRlbnQpXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3Iob2Zmc2V0LCAnQkFEX0lOREVOVCcsIHN0YXJ0Q29sTXNnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgha2V5UHJvcHMuYW5jaG9yICYmICFrZXlQcm9wcy50YWcgJiYgIXNlcCkge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IGFzc2VydCBiZWluZyBhdCBsYXN0IGl0ZW0/XG4gICAgICAgICAgICAgICAgaWYgKGtleVByb3BzLmNvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hcC5jb21tZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwLmNvbW1lbnQgKz0gJ1xcbicgKyBrZXlQcm9wcy5jb21tZW50O1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAuY29tbWVudCA9IGtleVByb3BzLmNvbW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCgoX2EgPSBrZXlQcm9wcy5mb3VuZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmluZGVudCkgIT09IGJtLmluZGVudClcbiAgICAgICAgICAgIG9uRXJyb3Iob2Zmc2V0LCAnQkFEX0lOREVOVCcsIHN0YXJ0Q29sTXNnKTtcbiAgICAgICAgaWYgKGltcGxpY2l0S2V5ICYmIGNvbnRhaW5zTmV3bGluZShrZXkpKVxuICAgICAgICAgICAgb25FcnJvcihrZXksIC8vIGNoZWNrZWQgYnkgY29udGFpbnNOZXdsaW5lKClcbiAgICAgICAgICAgICdNVUxUSUxJTkVfSU1QTElDSVRfS0VZJywgJ0ltcGxpY2l0IGtleXMgbmVlZCB0byBiZSBvbiBhIHNpbmdsZSBsaW5lJyk7XG4gICAgICAgIC8vIGtleSB2YWx1ZVxuICAgICAgICBjb25zdCBrZXlTdGFydCA9IGtleVByb3BzLmVuZDtcbiAgICAgICAgY29uc3Qga2V5Tm9kZSA9IGtleVxuICAgICAgICAgICAgPyBjb21wb3NlTm9kZShjdHgsIGtleSwga2V5UHJvcHMsIG9uRXJyb3IpXG4gICAgICAgICAgICA6IGNvbXBvc2VFbXB0eU5vZGUoY3R4LCBrZXlTdGFydCwgc3RhcnQsIG51bGwsIGtleVByb3BzLCBvbkVycm9yKTtcbiAgICAgICAgaWYgKGN0eC5zY2hlbWEuY29tcGF0KVxuICAgICAgICAgICAgZmxvd0luZGVudENoZWNrKGJtLmluZGVudCwga2V5LCBvbkVycm9yKTtcbiAgICAgICAgaWYgKG1hcEluY2x1ZGVzKGN0eCwgbWFwLml0ZW1zLCBrZXlOb2RlKSlcbiAgICAgICAgICAgIG9uRXJyb3Ioa2V5U3RhcnQsICdEVVBMSUNBVEVfS0VZJywgJ01hcCBrZXlzIG11c3QgYmUgdW5pcXVlJyk7XG4gICAgICAgIC8vIHZhbHVlIHByb3BlcnRpZXNcbiAgICAgICAgY29uc3QgdmFsdWVQcm9wcyA9IHJlc29sdmVQcm9wcyhzZXAgfHwgW10sIHtcbiAgICAgICAgICAgIGluZGljYXRvcjogJ21hcC12YWx1ZS1pbmQnLFxuICAgICAgICAgICAgbmV4dDogdmFsdWUsXG4gICAgICAgICAgICBvZmZzZXQ6IGtleU5vZGUucmFuZ2VbMl0sXG4gICAgICAgICAgICBvbkVycm9yLFxuICAgICAgICAgICAgc3RhcnRPbk5ld2xpbmU6ICFrZXkgfHwga2V5LnR5cGUgPT09ICdibG9jay1zY2FsYXInXG4gICAgICAgIH0pO1xuICAgICAgICBvZmZzZXQgPSB2YWx1ZVByb3BzLmVuZDtcbiAgICAgICAgaWYgKHZhbHVlUHJvcHMuZm91bmQpIHtcbiAgICAgICAgICAgIGlmIChpbXBsaWNpdEtleSkge1xuICAgICAgICAgICAgICAgIGlmICgodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHZhbHVlLnR5cGUpID09PSAnYmxvY2stbWFwJyAmJiAhdmFsdWVQcm9wcy5oYXNOZXdsaW5lKVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKG9mZnNldCwgJ0JMT0NLX0FTX0lNUExJQ0lUX0tFWScsICdOZXN0ZWQgbWFwcGluZ3MgYXJlIG5vdCBhbGxvd2VkIGluIGNvbXBhY3QgbWFwcGluZ3MnKTtcbiAgICAgICAgICAgICAgICBpZiAoY3R4Lm9wdGlvbnMuc3RyaWN0ICYmXG4gICAgICAgICAgICAgICAgICAgIGtleVByb3BzLnN0YXJ0IDwgdmFsdWVQcm9wcy5mb3VuZC5vZmZzZXQgLSAxMDI0KVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKGtleU5vZGUucmFuZ2UsICdLRVlfT1ZFUl8xMDI0X0NIQVJTJywgJ1RoZSA6IGluZGljYXRvciBtdXN0IGJlIGF0IG1vc3QgMTAyNCBjaGFycyBhZnRlciB0aGUgc3RhcnQgb2YgYW4gaW1wbGljaXQgYmxvY2sgbWFwcGluZyBrZXknKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHZhbHVlIHZhbHVlXG4gICAgICAgICAgICBjb25zdCB2YWx1ZU5vZGUgPSB2YWx1ZVxuICAgICAgICAgICAgICAgID8gY29tcG9zZU5vZGUoY3R4LCB2YWx1ZSwgdmFsdWVQcm9wcywgb25FcnJvcilcbiAgICAgICAgICAgICAgICA6IGNvbXBvc2VFbXB0eU5vZGUoY3R4LCBvZmZzZXQsIHNlcCwgbnVsbCwgdmFsdWVQcm9wcywgb25FcnJvcik7XG4gICAgICAgICAgICBpZiAoY3R4LnNjaGVtYS5jb21wYXQpXG4gICAgICAgICAgICAgICAgZmxvd0luZGVudENoZWNrKGJtLmluZGVudCwgdmFsdWUsIG9uRXJyb3IpO1xuICAgICAgICAgICAgb2Zmc2V0ID0gdmFsdWVOb2RlLnJhbmdlWzJdO1xuICAgICAgICAgICAgY29uc3QgcGFpciA9IG5ldyBQYWlyKGtleU5vZGUsIHZhbHVlTm9kZSk7XG4gICAgICAgICAgICBpZiAoY3R4Lm9wdGlvbnMua2VlcFNvdXJjZVRva2VucylcbiAgICAgICAgICAgICAgICBwYWlyLnNyY1Rva2VuID0gY29sbEl0ZW07XG4gICAgICAgICAgICBtYXAuaXRlbXMucHVzaChwYWlyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGtleSB3aXRoIG5vIHZhbHVlXG4gICAgICAgICAgICBpZiAoaW1wbGljaXRLZXkpXG4gICAgICAgICAgICAgICAgb25FcnJvcihrZXlOb2RlLnJhbmdlLCAnTUlTU0lOR19DSEFSJywgJ0ltcGxpY2l0IG1hcCBrZXlzIG5lZWQgdG8gYmUgZm9sbG93ZWQgYnkgbWFwIHZhbHVlcycpO1xuICAgICAgICAgICAgaWYgKHZhbHVlUHJvcHMuY29tbWVudCkge1xuICAgICAgICAgICAgICAgIGlmIChrZXlOb2RlLmNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgIGtleU5vZGUuY29tbWVudCArPSAnXFxuJyArIHZhbHVlUHJvcHMuY29tbWVudDtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGtleU5vZGUuY29tbWVudCA9IHZhbHVlUHJvcHMuY29tbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhaXIgPSBuZXcgUGFpcihrZXlOb2RlKTtcbiAgICAgICAgICAgIGlmIChjdHgub3B0aW9ucy5rZWVwU291cmNlVG9rZW5zKVxuICAgICAgICAgICAgICAgIHBhaXIuc3JjVG9rZW4gPSBjb2xsSXRlbTtcbiAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHBhaXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG1hcC5yYW5nZSA9IFtibS5vZmZzZXQsIG9mZnNldCwgb2Zmc2V0XTtcbiAgICByZXR1cm4gbWFwO1xufVxuXG5leHBvcnQgeyByZXNvbHZlQmxvY2tNYXAgfTtcbiIsImltcG9ydCB7IFlBTUxTZXEgfSBmcm9tICcuLi9ub2Rlcy9ZQU1MU2VxLmpzJztcbmltcG9ydCB7IHJlc29sdmVQcm9wcyB9IGZyb20gJy4vcmVzb2x2ZS1wcm9wcy5qcyc7XG5pbXBvcnQgeyBmbG93SW5kZW50Q2hlY2sgfSBmcm9tICcuL3V0aWwtZmxvdy1pbmRlbnQtY2hlY2suanMnO1xuXG5mdW5jdGlvbiByZXNvbHZlQmxvY2tTZXEoeyBjb21wb3NlTm9kZSwgY29tcG9zZUVtcHR5Tm9kZSB9LCBjdHgsIGJzLCBvbkVycm9yKSB7XG4gICAgY29uc3Qgc2VxID0gbmV3IFlBTUxTZXEoY3R4LnNjaGVtYSk7XG4gICAgaWYgKGN0eC5hdFJvb3QpXG4gICAgICAgIGN0eC5hdFJvb3QgPSBmYWxzZTtcbiAgICBsZXQgb2Zmc2V0ID0gYnMub2Zmc2V0O1xuICAgIGZvciAoY29uc3QgeyBzdGFydCwgdmFsdWUgfSBvZiBicy5pdGVtcykge1xuICAgICAgICBjb25zdCBwcm9wcyA9IHJlc29sdmVQcm9wcyhzdGFydCwge1xuICAgICAgICAgICAgaW5kaWNhdG9yOiAnc2VxLWl0ZW0taW5kJyxcbiAgICAgICAgICAgIG5leHQ6IHZhbHVlLFxuICAgICAgICAgICAgb2Zmc2V0LFxuICAgICAgICAgICAgb25FcnJvcixcbiAgICAgICAgICAgIHN0YXJ0T25OZXdsaW5lOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBvZmZzZXQgPSBwcm9wcy5lbmQ7XG4gICAgICAgIGlmICghcHJvcHMuZm91bmQpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5hbmNob3IgfHwgcHJvcHMudGFnIHx8IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLnR5cGUgPT09ICdibG9jay1zZXEnKVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKG9mZnNldCwgJ0JBRF9JTkRFTlQnLCAnQWxsIHNlcXVlbmNlIGl0ZW1zIG11c3Qgc3RhcnQgYXQgdGhlIHNhbWUgY29sdW1uJyk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKG9mZnNldCwgJ01JU1NJTkdfQ0hBUicsICdTZXF1ZW5jZSBpdGVtIHdpdGhvdXQgLSBpbmRpY2F0b3InKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IGFzc2VydCBiZWluZyBhdCBsYXN0IGl0ZW0/XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgIHNlcS5jb21tZW50ID0gcHJvcHMuY29tbWVudDtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBub2RlID0gdmFsdWVcbiAgICAgICAgICAgID8gY29tcG9zZU5vZGUoY3R4LCB2YWx1ZSwgcHJvcHMsIG9uRXJyb3IpXG4gICAgICAgICAgICA6IGNvbXBvc2VFbXB0eU5vZGUoY3R4LCBvZmZzZXQsIHN0YXJ0LCBudWxsLCBwcm9wcywgb25FcnJvcik7XG4gICAgICAgIGlmIChjdHguc2NoZW1hLmNvbXBhdClcbiAgICAgICAgICAgIGZsb3dJbmRlbnRDaGVjayhicy5pbmRlbnQsIHZhbHVlLCBvbkVycm9yKTtcbiAgICAgICAgb2Zmc2V0ID0gbm9kZS5yYW5nZVsyXTtcbiAgICAgICAgc2VxLml0ZW1zLnB1c2gobm9kZSk7XG4gICAgfVxuICAgIHNlcS5yYW5nZSA9IFticy5vZmZzZXQsIG9mZnNldCwgb2Zmc2V0XTtcbiAgICByZXR1cm4gc2VxO1xufVxuXG5leHBvcnQgeyByZXNvbHZlQmxvY2tTZXEgfTtcbiIsImZ1bmN0aW9uIHJlc29sdmVFbmQoZW5kLCBvZmZzZXQsIHJlcVNwYWNlLCBvbkVycm9yKSB7XG4gICAgbGV0IGNvbW1lbnQgPSAnJztcbiAgICBpZiAoZW5kKSB7XG4gICAgICAgIGxldCBoYXNTcGFjZSA9IGZhbHNlO1xuICAgICAgICBsZXQgc2VwID0gJyc7XG4gICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgZW5kKSB7XG4gICAgICAgICAgICBjb25zdCB7IHNvdXJjZSwgdHlwZSB9ID0gdG9rZW47XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICAgICAgICAgIGhhc1NwYWNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcVNwYWNlICYmICFoYXNTcGFjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uRXJyb3IodG9rZW4sICdNSVNTSU5HX0NIQVInLCAnQ29tbWVudHMgbXVzdCBiZSBzZXBhcmF0ZWQgZnJvbSBvdGhlciB0b2tlbnMgYnkgd2hpdGUgc3BhY2UgY2hhcmFjdGVycycpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYiA9IHNvdXJjZS5zdWJzdHJpbmcoMSkgfHwgJyAnO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gY2I7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgKz0gc2VwICsgY2I7XG4gICAgICAgICAgICAgICAgICAgIHNlcCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAnbmV3bGluZSc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21tZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VwICs9IHNvdXJjZTtcbiAgICAgICAgICAgICAgICAgICAgaGFzU3BhY2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnVU5FWFBFQ1RFRF9UT0tFTicsIGBVbmV4cGVjdGVkICR7dHlwZX0gYXQgbm9kZSBlbmRgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9mZnNldCArPSBzb3VyY2UubGVuZ3RoO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGNvbW1lbnQsIG9mZnNldCB9O1xufVxuXG5leHBvcnQgeyByZXNvbHZlRW5kIH07XG4iLCJpbXBvcnQgeyBpc1BhaXIgfSBmcm9tICcuLi9ub2Rlcy9Ob2RlLmpzJztcbmltcG9ydCB7IFBhaXIgfSBmcm9tICcuLi9ub2Rlcy9QYWlyLmpzJztcbmltcG9ydCB7IFlBTUxNYXAgfSBmcm9tICcuLi9ub2Rlcy9ZQU1MTWFwLmpzJztcbmltcG9ydCB7IFlBTUxTZXEgfSBmcm9tICcuLi9ub2Rlcy9ZQU1MU2VxLmpzJztcbmltcG9ydCB7IHJlc29sdmVFbmQgfSBmcm9tICcuL3Jlc29sdmUtZW5kLmpzJztcbmltcG9ydCB7IHJlc29sdmVQcm9wcyB9IGZyb20gJy4vcmVzb2x2ZS1wcm9wcy5qcyc7XG5pbXBvcnQgeyBjb250YWluc05ld2xpbmUgfSBmcm9tICcuL3V0aWwtY29udGFpbnMtbmV3bGluZS5qcyc7XG5pbXBvcnQgeyBtYXBJbmNsdWRlcyB9IGZyb20gJy4vdXRpbC1tYXAtaW5jbHVkZXMuanMnO1xuXG5jb25zdCBibG9ja01zZyA9ICdCbG9jayBjb2xsZWN0aW9ucyBhcmUgbm90IGFsbG93ZWQgd2l0aGluIGZsb3cgY29sbGVjdGlvbnMnO1xuY29uc3QgaXNCbG9jayA9ICh0b2tlbikgPT4gdG9rZW4gJiYgKHRva2VuLnR5cGUgPT09ICdibG9jay1tYXAnIHx8IHRva2VuLnR5cGUgPT09ICdibG9jay1zZXEnKTtcbmZ1bmN0aW9uIHJlc29sdmVGbG93Q29sbGVjdGlvbih7IGNvbXBvc2VOb2RlLCBjb21wb3NlRW1wdHlOb2RlIH0sIGN0eCwgZmMsIG9uRXJyb3IpIHtcbiAgICBjb25zdCBpc01hcCA9IGZjLnN0YXJ0LnNvdXJjZSA9PT0gJ3snO1xuICAgIGNvbnN0IGZjTmFtZSA9IGlzTWFwID8gJ2Zsb3cgbWFwJyA6ICdmbG93IHNlcXVlbmNlJztcbiAgICBjb25zdCBjb2xsID0gaXNNYXBcbiAgICAgICAgPyBuZXcgWUFNTE1hcChjdHguc2NoZW1hKVxuICAgICAgICA6IG5ldyBZQU1MU2VxKGN0eC5zY2hlbWEpO1xuICAgIGNvbGwuZmxvdyA9IHRydWU7XG4gICAgY29uc3QgYXRSb290ID0gY3R4LmF0Um9vdDtcbiAgICBpZiAoYXRSb290KVxuICAgICAgICBjdHguYXRSb290ID0gZmFsc2U7XG4gICAgbGV0IG9mZnNldCA9IGZjLm9mZnNldCArIGZjLnN0YXJ0LnNvdXJjZS5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmYy5pdGVtcy5sZW5ndGg7ICsraSkge1xuICAgICAgICBjb25zdCBjb2xsSXRlbSA9IGZjLml0ZW1zW2ldO1xuICAgICAgICBjb25zdCB7IHN0YXJ0LCBrZXksIHNlcCwgdmFsdWUgfSA9IGNvbGxJdGVtO1xuICAgICAgICBjb25zdCBwcm9wcyA9IHJlc29sdmVQcm9wcyhzdGFydCwge1xuICAgICAgICAgICAgZmxvdzogZmNOYW1lLFxuICAgICAgICAgICAgaW5kaWNhdG9yOiAnZXhwbGljaXQta2V5LWluZCcsXG4gICAgICAgICAgICBuZXh0OiBrZXkgfHwgKHNlcCA9PT0gbnVsbCB8fCBzZXAgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlcFswXSksXG4gICAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgICBvbkVycm9yLFxuICAgICAgICAgICAgc3RhcnRPbk5ld2xpbmU6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIXByb3BzLmZvdW5kKSB7XG4gICAgICAgICAgICBpZiAoIXByb3BzLmFuY2hvciAmJiAhcHJvcHMudGFnICYmICFzZXAgJiYgIXZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IDAgJiYgcHJvcHMuY29tbWEpXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IocHJvcHMuY29tbWEsICdVTkVYUEVDVEVEX1RPS0VOJywgYFVuZXhwZWN0ZWQgLCBpbiAke2ZjTmFtZX1gKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpIDwgZmMuaXRlbXMubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcihwcm9wcy5zdGFydCwgJ1VORVhQRUNURURfVE9LRU4nLCBgVW5leHBlY3RlZCBlbXB0eSBpdGVtIGluICR7ZmNOYW1lfWApO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5jb21tZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2xsLmNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xsLmNvbW1lbnQgKz0gJ1xcbicgKyBwcm9wcy5jb21tZW50O1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xsLmNvbW1lbnQgPSBwcm9wcy5jb21tZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvZmZzZXQgPSBwcm9wcy5lbmQ7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzTWFwICYmIGN0eC5vcHRpb25zLnN0cmljdCAmJiBjb250YWluc05ld2xpbmUoa2V5KSlcbiAgICAgICAgICAgICAgICBvbkVycm9yKGtleSwgLy8gY2hlY2tlZCBieSBjb250YWluc05ld2xpbmUoKVxuICAgICAgICAgICAgICAgICdNVUxUSUxJTkVfSU1QTElDSVRfS0VZJywgJ0ltcGxpY2l0IGtleXMgb2YgZmxvdyBzZXF1ZW5jZSBwYWlycyBuZWVkIHRvIGJlIG9uIGEgc2luZ2xlIGxpbmUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKHByb3BzLmNvbW1hKVxuICAgICAgICAgICAgICAgIG9uRXJyb3IocHJvcHMuY29tbWEsICdVTkVYUEVDVEVEX1RPS0VOJywgYFVuZXhwZWN0ZWQgLCBpbiAke2ZjTmFtZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICghcHJvcHMuY29tbWEpXG4gICAgICAgICAgICAgICAgb25FcnJvcihwcm9wcy5zdGFydCwgJ01JU1NJTkdfQ0hBUicsIGBNaXNzaW5nICwgYmV0d2VlbiAke2ZjTmFtZX0gaXRlbXNgKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy5jb21tZW50KSB7XG4gICAgICAgICAgICAgICAgbGV0IHByZXZJdGVtQ29tbWVudCA9ICcnO1xuICAgICAgICAgICAgICAgIGxvb3A6IGZvciAoY29uc3Qgc3Qgb2Ygc3RhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb21tYSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2SXRlbUNvbW1lbnQgPSBzdC5zb3VyY2Uuc3Vic3RyaW5nKDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGxvb3A7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGxvb3A7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByZXZJdGVtQ29tbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcHJldiA9IGNvbGwuaXRlbXNbY29sbC5pdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGFpcihwcmV2KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXYgPSBwcmV2LnZhbHVlIHx8IHByZXYua2V5O1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJldi5jb21tZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldi5jb21tZW50ICs9ICdcXG4nICsgcHJldkl0ZW1Db21tZW50O1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2LmNvbW1lbnQgPSBwcmV2SXRlbUNvbW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbW1lbnQgPSBwcm9wcy5jb21tZW50LnN1YnN0cmluZyhwcmV2SXRlbUNvbW1lbnQubGVuZ3RoICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghaXNNYXAgJiYgIXNlcCAmJiAhcHJvcHMuZm91bmQpIHtcbiAgICAgICAgICAgIC8vIGl0ZW0gaXMgYSB2YWx1ZSBpbiBhIHNlcVxuICAgICAgICAgICAgLy8g4oaSIGtleSAmIHNlcCBhcmUgZW1wdHksIHN0YXJ0IGRvZXMgbm90IGluY2x1ZGUgPyBvciA6XG4gICAgICAgICAgICBjb25zdCB2YWx1ZU5vZGUgPSB2YWx1ZVxuICAgICAgICAgICAgICAgID8gY29tcG9zZU5vZGUoY3R4LCB2YWx1ZSwgcHJvcHMsIG9uRXJyb3IpXG4gICAgICAgICAgICAgICAgOiBjb21wb3NlRW1wdHlOb2RlKGN0eCwgcHJvcHMuZW5kLCBzZXAsIG51bGwsIHByb3BzLCBvbkVycm9yKTtcbiAgICAgICAgICAgIGNvbGwuaXRlbXMucHVzaCh2YWx1ZU5vZGUpO1xuICAgICAgICAgICAgb2Zmc2V0ID0gdmFsdWVOb2RlLnJhbmdlWzJdO1xuICAgICAgICAgICAgaWYgKGlzQmxvY2sodmFsdWUpKVxuICAgICAgICAgICAgICAgIG9uRXJyb3IodmFsdWVOb2RlLnJhbmdlLCAnQkxPQ0tfSU5fRkxPVycsIGJsb2NrTXNnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGl0ZW0gaXMgYSBrZXkrdmFsdWUgcGFpclxuICAgICAgICAgICAgLy8ga2V5IHZhbHVlXG4gICAgICAgICAgICBjb25zdCBrZXlTdGFydCA9IHByb3BzLmVuZDtcbiAgICAgICAgICAgIGNvbnN0IGtleU5vZGUgPSBrZXlcbiAgICAgICAgICAgICAgICA/IGNvbXBvc2VOb2RlKGN0eCwga2V5LCBwcm9wcywgb25FcnJvcilcbiAgICAgICAgICAgICAgICA6IGNvbXBvc2VFbXB0eU5vZGUoY3R4LCBrZXlTdGFydCwgc3RhcnQsIG51bGwsIHByb3BzLCBvbkVycm9yKTtcbiAgICAgICAgICAgIGlmIChpc0Jsb2NrKGtleSkpXG4gICAgICAgICAgICAgICAgb25FcnJvcihrZXlOb2RlLnJhbmdlLCAnQkxPQ0tfSU5fRkxPVycsIGJsb2NrTXNnKTtcbiAgICAgICAgICAgIC8vIHZhbHVlIHByb3BlcnRpZXNcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlUHJvcHMgPSByZXNvbHZlUHJvcHMoc2VwIHx8IFtdLCB7XG4gICAgICAgICAgICAgICAgZmxvdzogZmNOYW1lLFxuICAgICAgICAgICAgICAgIGluZGljYXRvcjogJ21hcC12YWx1ZS1pbmQnLFxuICAgICAgICAgICAgICAgIG5leHQ6IHZhbHVlLFxuICAgICAgICAgICAgICAgIG9mZnNldDoga2V5Tm9kZS5yYW5nZVsyXSxcbiAgICAgICAgICAgICAgICBvbkVycm9yLFxuICAgICAgICAgICAgICAgIHN0YXJ0T25OZXdsaW5lOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodmFsdWVQcm9wcy5mb3VuZCkge1xuICAgICAgICAgICAgICAgIGlmICghaXNNYXAgJiYgIXByb3BzLmZvdW5kICYmIGN0eC5vcHRpb25zLnN0cmljdCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBzdCBvZiBzZXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3QgPT09IHZhbHVlUHJvcHMuZm91bmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdC50eXBlID09PSAnbmV3bGluZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25FcnJvcihzdCwgJ01VTFRJTElORV9JTVBMSUNJVF9LRVknLCAnSW1wbGljaXQga2V5cyBvZiBmbG93IHNlcXVlbmNlIHBhaXJzIG5lZWQgdG8gYmUgb24gYSBzaW5nbGUgbGluZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcy5zdGFydCA8IHZhbHVlUHJvcHMuZm91bmQub2Zmc2V0IC0gMTAyNClcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uRXJyb3IodmFsdWVQcm9wcy5mb3VuZCwgJ0tFWV9PVkVSXzEwMjRfQ0hBUlMnLCAnVGhlIDogaW5kaWNhdG9yIG11c3QgYmUgYXQgbW9zdCAxMDI0IGNoYXJzIGFmdGVyIHRoZSBzdGFydCBvZiBhbiBpbXBsaWNpdCBmbG93IHNlcXVlbmNlIGtleScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCdzb3VyY2UnIGluIHZhbHVlICYmIHZhbHVlLnNvdXJjZSAmJiB2YWx1ZS5zb3VyY2VbMF0gPT09ICc6JylcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcih2YWx1ZSwgJ01JU1NJTkdfQ0hBUicsIGBNaXNzaW5nIHNwYWNlIGFmdGVyIDogaW4gJHtmY05hbWV9YCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHZhbHVlUHJvcHMuc3RhcnQsICdNSVNTSU5HX0NIQVInLCBgTWlzc2luZyAsIG9yIDogYmV0d2VlbiAke2ZjTmFtZX0gaXRlbXNgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHZhbHVlIHZhbHVlXG4gICAgICAgICAgICBjb25zdCB2YWx1ZU5vZGUgPSB2YWx1ZVxuICAgICAgICAgICAgICAgID8gY29tcG9zZU5vZGUoY3R4LCB2YWx1ZSwgdmFsdWVQcm9wcywgb25FcnJvcilcbiAgICAgICAgICAgICAgICA6IHZhbHVlUHJvcHMuZm91bmRcbiAgICAgICAgICAgICAgICAgICAgPyBjb21wb3NlRW1wdHlOb2RlKGN0eCwgdmFsdWVQcm9wcy5lbmQsIHNlcCwgbnVsbCwgdmFsdWVQcm9wcywgb25FcnJvcilcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgICAgaWYgKHZhbHVlTm9kZSkge1xuICAgICAgICAgICAgICAgIGlmIChpc0Jsb2NrKHZhbHVlKSlcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcih2YWx1ZU5vZGUucmFuZ2UsICdCTE9DS19JTl9GTE9XJywgYmxvY2tNc2cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVQcm9wcy5jb21tZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKGtleU5vZGUuY29tbWVudClcbiAgICAgICAgICAgICAgICAgICAga2V5Tm9kZS5jb21tZW50ICs9ICdcXG4nICsgdmFsdWVQcm9wcy5jb21tZW50O1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAga2V5Tm9kZS5jb21tZW50ID0gdmFsdWVQcm9wcy5jb21tZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcGFpciA9IG5ldyBQYWlyKGtleU5vZGUsIHZhbHVlTm9kZSk7XG4gICAgICAgICAgICBpZiAoY3R4Lm9wdGlvbnMua2VlcFNvdXJjZVRva2VucylcbiAgICAgICAgICAgICAgICBwYWlyLnNyY1Rva2VuID0gY29sbEl0ZW07XG4gICAgICAgICAgICBpZiAoaXNNYXApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXAgPSBjb2xsO1xuICAgICAgICAgICAgICAgIGlmIChtYXBJbmNsdWRlcyhjdHgsIG1hcC5pdGVtcywga2V5Tm9kZSkpXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3Ioa2V5U3RhcnQsICdEVVBMSUNBVEVfS0VZJywgJ01hcCBrZXlzIG11c3QgYmUgdW5pcXVlJyk7XG4gICAgICAgICAgICAgICAgbWFwLml0ZW1zLnB1c2gocGFpcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXAgPSBuZXcgWUFNTE1hcChjdHguc2NoZW1hKTtcbiAgICAgICAgICAgICAgICBtYXAuZmxvdyA9IHRydWU7XG4gICAgICAgICAgICAgICAgbWFwLml0ZW1zLnB1c2gocGFpcik7XG4gICAgICAgICAgICAgICAgY29sbC5pdGVtcy5wdXNoKG1hcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvZmZzZXQgPSB2YWx1ZU5vZGUgPyB2YWx1ZU5vZGUucmFuZ2VbMl0gOiB2YWx1ZVByb3BzLmVuZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBleHBlY3RlZEVuZCA9IGlzTWFwID8gJ30nIDogJ10nO1xuICAgIGNvbnN0IFtjZSwgLi4uZWVdID0gZmMuZW5kO1xuICAgIGxldCBjZVBvcyA9IG9mZnNldDtcbiAgICBpZiAoY2UgJiYgY2Uuc291cmNlID09PSBleHBlY3RlZEVuZClcbiAgICAgICAgY2VQb3MgPSBjZS5vZmZzZXQgKyBjZS5zb3VyY2UubGVuZ3RoO1xuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBuYW1lID0gZmNOYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBmY05hbWUuc3Vic3RyaW5nKDEpO1xuICAgICAgICBjb25zdCBtc2cgPSBhdFJvb3RcbiAgICAgICAgICAgID8gYCR7bmFtZX0gbXVzdCBlbmQgd2l0aCBhICR7ZXhwZWN0ZWRFbmR9YFxuICAgICAgICAgICAgOiBgJHtuYW1lfSBpbiBibG9jayBjb2xsZWN0aW9uIG11c3QgYmUgc3VmZmljaWVudGx5IGluZGVudGVkIGFuZCBlbmQgd2l0aCBhICR7ZXhwZWN0ZWRFbmR9YDtcbiAgICAgICAgb25FcnJvcihvZmZzZXQsIGF0Um9vdCA/ICdNSVNTSU5HX0NIQVInIDogJ0JBRF9JTkRFTlQnLCBtc2cpO1xuICAgICAgICBpZiAoY2UgJiYgY2Uuc291cmNlLmxlbmd0aCAhPT0gMSlcbiAgICAgICAgICAgIGVlLnVuc2hpZnQoY2UpO1xuICAgIH1cbiAgICBpZiAoZWUubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBlbmQgPSByZXNvbHZlRW5kKGVlLCBjZVBvcywgY3R4Lm9wdGlvbnMuc3RyaWN0LCBvbkVycm9yKTtcbiAgICAgICAgaWYgKGVuZC5jb21tZW50KSB7XG4gICAgICAgICAgICBpZiAoY29sbC5jb21tZW50KVxuICAgICAgICAgICAgICAgIGNvbGwuY29tbWVudCArPSAnXFxuJyArIGVuZC5jb21tZW50O1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGNvbGwuY29tbWVudCA9IGVuZC5jb21tZW50O1xuICAgICAgICB9XG4gICAgICAgIGNvbGwucmFuZ2UgPSBbZmMub2Zmc2V0LCBjZVBvcywgZW5kLm9mZnNldF07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb2xsLnJhbmdlID0gW2ZjLm9mZnNldCwgY2VQb3MsIGNlUG9zXTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbGw7XG59XG5cbmV4cG9ydCB7IHJlc29sdmVGbG93Q29sbGVjdGlvbiB9O1xuIiwiaW1wb3J0IHsgaXNOb2RlLCBpc01hcCB9IGZyb20gJy4uL25vZGVzL05vZGUuanMnO1xuaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi4vbm9kZXMvU2NhbGFyLmpzJztcbmltcG9ydCB7IHJlc29sdmVCbG9ja01hcCB9IGZyb20gJy4vcmVzb2x2ZS1ibG9jay1tYXAuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZUJsb2NrU2VxIH0gZnJvbSAnLi9yZXNvbHZlLWJsb2NrLXNlcS5qcyc7XG5pbXBvcnQgeyByZXNvbHZlRmxvd0NvbGxlY3Rpb24gfSBmcm9tICcuL3Jlc29sdmUtZmxvdy1jb2xsZWN0aW9uLmpzJztcblxuZnVuY3Rpb24gY29tcG9zZUNvbGxlY3Rpb24oQ04sIGN0eCwgdG9rZW4sIHRhZ1Rva2VuLCBvbkVycm9yKSB7XG4gICAgbGV0IGNvbGw7XG4gICAgc3dpdGNoICh0b2tlbi50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2Jsb2NrLW1hcCc6IHtcbiAgICAgICAgICAgIGNvbGwgPSByZXNvbHZlQmxvY2tNYXAoQ04sIGN0eCwgdG9rZW4sIG9uRXJyb3IpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnYmxvY2stc2VxJzoge1xuICAgICAgICAgICAgY29sbCA9IHJlc29sdmVCbG9ja1NlcShDTiwgY3R4LCB0b2tlbiwgb25FcnJvcik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdmbG93LWNvbGxlY3Rpb24nOiB7XG4gICAgICAgICAgICBjb2xsID0gcmVzb2x2ZUZsb3dDb2xsZWN0aW9uKENOLCBjdHgsIHRva2VuLCBvbkVycm9yKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICghdGFnVG9rZW4pXG4gICAgICAgIHJldHVybiBjb2xsO1xuICAgIGNvbnN0IHRhZ05hbWUgPSBjdHguZGlyZWN0aXZlcy50YWdOYW1lKHRhZ1Rva2VuLnNvdXJjZSwgbXNnID0+IG9uRXJyb3IodGFnVG9rZW4sICdUQUdfUkVTT0xWRV9GQUlMRUQnLCBtc2cpKTtcbiAgICBpZiAoIXRhZ05hbWUpXG4gICAgICAgIHJldHVybiBjb2xsO1xuICAgIC8vIENhc3QgbmVlZGVkIGR1ZSB0bzogaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8zODQxXG4gICAgY29uc3QgQ29sbCA9IGNvbGwuY29uc3RydWN0b3I7XG4gICAgaWYgKHRhZ05hbWUgPT09ICchJyB8fCB0YWdOYW1lID09PSBDb2xsLnRhZ05hbWUpIHtcbiAgICAgICAgY29sbC50YWcgPSBDb2xsLnRhZ05hbWU7XG4gICAgICAgIHJldHVybiBjb2xsO1xuICAgIH1cbiAgICBjb25zdCBleHBUeXBlID0gaXNNYXAoY29sbCkgPyAnbWFwJyA6ICdzZXEnO1xuICAgIGxldCB0YWcgPSBjdHguc2NoZW1hLnRhZ3MuZmluZCh0ID0+IHQuY29sbGVjdGlvbiA9PT0gZXhwVHlwZSAmJiB0LnRhZyA9PT0gdGFnTmFtZSk7XG4gICAgaWYgKCF0YWcpIHtcbiAgICAgICAgY29uc3Qga3QgPSBjdHguc2NoZW1hLmtub3duVGFnc1t0YWdOYW1lXTtcbiAgICAgICAgaWYgKGt0ICYmIGt0LmNvbGxlY3Rpb24gPT09IGV4cFR5cGUpIHtcbiAgICAgICAgICAgIGN0eC5zY2hlbWEudGFncy5wdXNoKE9iamVjdC5hc3NpZ24oe30sIGt0LCB7IGRlZmF1bHQ6IGZhbHNlIH0pKTtcbiAgICAgICAgICAgIHRhZyA9IGt0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb25FcnJvcih0YWdUb2tlbiwgJ1RBR19SRVNPTFZFX0ZBSUxFRCcsIGBVbnJlc29sdmVkIHRhZzogJHt0YWdOYW1lfWAsIHRydWUpO1xuICAgICAgICAgICAgY29sbC50YWcgPSB0YWdOYW1lO1xuICAgICAgICAgICAgcmV0dXJuIGNvbGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmVzID0gdGFnLnJlc29sdmUoY29sbCwgbXNnID0+IG9uRXJyb3IodGFnVG9rZW4sICdUQUdfUkVTT0xWRV9GQUlMRUQnLCBtc2cpLCBjdHgub3B0aW9ucyk7XG4gICAgY29uc3Qgbm9kZSA9IGlzTm9kZShyZXMpXG4gICAgICAgID8gcmVzXG4gICAgICAgIDogbmV3IFNjYWxhcihyZXMpO1xuICAgIG5vZGUucmFuZ2UgPSBjb2xsLnJhbmdlO1xuICAgIG5vZGUudGFnID0gdGFnTmFtZTtcbiAgICBpZiAodGFnID09PSBudWxsIHx8IHRhZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFnLmZvcm1hdClcbiAgICAgICAgbm9kZS5mb3JtYXQgPSB0YWcuZm9ybWF0O1xuICAgIHJldHVybiBub2RlO1xufVxuXG5leHBvcnQgeyBjb21wb3NlQ29sbGVjdGlvbiB9O1xuIiwiaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi4vbm9kZXMvU2NhbGFyLmpzJztcblxuZnVuY3Rpb24gcmVzb2x2ZUJsb2NrU2NhbGFyKHNjYWxhciwgc3RyaWN0LCBvbkVycm9yKSB7XG4gICAgY29uc3Qgc3RhcnQgPSBzY2FsYXIub2Zmc2V0O1xuICAgIGNvbnN0IGhlYWRlciA9IHBhcnNlQmxvY2tTY2FsYXJIZWFkZXIoc2NhbGFyLCBzdHJpY3QsIG9uRXJyb3IpO1xuICAgIGlmICghaGVhZGVyKVxuICAgICAgICByZXR1cm4geyB2YWx1ZTogJycsIHR5cGU6IG51bGwsIGNvbW1lbnQ6ICcnLCByYW5nZTogW3N0YXJ0LCBzdGFydCwgc3RhcnRdIH07XG4gICAgY29uc3QgdHlwZSA9IGhlYWRlci5tb2RlID09PSAnPicgPyBTY2FsYXIuQkxPQ0tfRk9MREVEIDogU2NhbGFyLkJMT0NLX0xJVEVSQUw7XG4gICAgY29uc3QgbGluZXMgPSBzY2FsYXIuc291cmNlID8gc3BsaXRMaW5lcyhzY2FsYXIuc291cmNlKSA6IFtdO1xuICAgIC8vIGRldGVybWluZSB0aGUgZW5kIG9mIGNvbnRlbnQgJiBzdGFydCBvZiBjaG9tcGluZ1xuICAgIGxldCBjaG9tcFN0YXJ0ID0gbGluZXMubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSBsaW5lcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gbGluZXNbaV1bMV07XG4gICAgICAgIGlmIChjb250ZW50ID09PSAnJyB8fCBjb250ZW50ID09PSAnXFxyJylcbiAgICAgICAgICAgIGNob21wU3RhcnQgPSBpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gc2hvcnRjdXQgZm9yIGVtcHR5IGNvbnRlbnRzXG4gICAgaWYgKCFzY2FsYXIuc291cmNlIHx8IGNob21wU3RhcnQgPT09IDApIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBoZWFkZXIuY2hvbXAgPT09ICcrJyA/ICdcXG4nLnJlcGVhdChNYXRoLm1heCgwLCBsaW5lcy5sZW5ndGggLSAxKSkgOiAnJztcbiAgICAgICAgbGV0IGVuZCA9IHN0YXJ0ICsgaGVhZGVyLmxlbmd0aDtcbiAgICAgICAgaWYgKHNjYWxhci5zb3VyY2UpXG4gICAgICAgICAgICBlbmQgKz0gc2NhbGFyLnNvdXJjZS5sZW5ndGg7XG4gICAgICAgIHJldHVybiB7IHZhbHVlLCB0eXBlLCBjb21tZW50OiBoZWFkZXIuY29tbWVudCwgcmFuZ2U6IFtzdGFydCwgZW5kLCBlbmRdIH07XG4gICAgfVxuICAgIC8vIGZpbmQgdGhlIGluZGVudGF0aW9uIGxldmVsIHRvIHRyaW0gZnJvbSBzdGFydFxuICAgIGxldCB0cmltSW5kZW50ID0gc2NhbGFyLmluZGVudCArIGhlYWRlci5pbmRlbnQ7XG4gICAgbGV0IG9mZnNldCA9IHNjYWxhci5vZmZzZXQgKyBoZWFkZXIubGVuZ3RoO1xuICAgIGxldCBjb250ZW50U3RhcnQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hvbXBTdGFydDsgKytpKSB7XG4gICAgICAgIGNvbnN0IFtpbmRlbnQsIGNvbnRlbnRdID0gbGluZXNbaV07XG4gICAgICAgIGlmIChjb250ZW50ID09PSAnJyB8fCBjb250ZW50ID09PSAnXFxyJykge1xuICAgICAgICAgICAgaWYgKGhlYWRlci5pbmRlbnQgPT09IDAgJiYgaW5kZW50Lmxlbmd0aCA+IHRyaW1JbmRlbnQpXG4gICAgICAgICAgICAgICAgdHJpbUluZGVudCA9IGluZGVudC5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoaW5kZW50Lmxlbmd0aCA8IHRyaW1JbmRlbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ0Jsb2NrIHNjYWxhcnMgd2l0aCBtb3JlLWluZGVudGVkIGxlYWRpbmcgZW1wdHkgbGluZXMgbXVzdCB1c2UgYW4gZXhwbGljaXQgaW5kZW50YXRpb24gaW5kaWNhdG9yJztcbiAgICAgICAgICAgICAgICBvbkVycm9yKG9mZnNldCArIGluZGVudC5sZW5ndGgsICdNSVNTSU5HX0NIQVInLCBtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChoZWFkZXIuaW5kZW50ID09PSAwKVxuICAgICAgICAgICAgICAgIHRyaW1JbmRlbnQgPSBpbmRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgY29udGVudFN0YXJ0ID0gaTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG9mZnNldCArPSBpbmRlbnQubGVuZ3RoICsgY29udGVudC5sZW5ndGggKyAxO1xuICAgIH1cbiAgICBsZXQgdmFsdWUgPSAnJztcbiAgICBsZXQgc2VwID0gJyc7XG4gICAgbGV0IHByZXZNb3JlSW5kZW50ZWQgPSBmYWxzZTtcbiAgICAvLyBsZWFkaW5nIHdoaXRlc3BhY2UgaXMga2VwdCBpbnRhY3RcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRlbnRTdGFydDsgKytpKVxuICAgICAgICB2YWx1ZSArPSBsaW5lc1tpXVswXS5zbGljZSh0cmltSW5kZW50KSArICdcXG4nO1xuICAgIGZvciAobGV0IGkgPSBjb250ZW50U3RhcnQ7IGkgPCBjaG9tcFN0YXJ0OyArK2kpIHtcbiAgICAgICAgbGV0IFtpbmRlbnQsIGNvbnRlbnRdID0gbGluZXNbaV07XG4gICAgICAgIG9mZnNldCArPSBpbmRlbnQubGVuZ3RoICsgY29udGVudC5sZW5ndGggKyAxO1xuICAgICAgICBjb25zdCBjcmxmID0gY29udGVudFtjb250ZW50Lmxlbmd0aCAtIDFdID09PSAnXFxyJztcbiAgICAgICAgaWYgKGNybGYpXG4gICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zbGljZSgwLCAtMSk7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiBhbHJlYWR5IGNhdWdodCBpbiBsZXhlciAqL1xuICAgICAgICBpZiAoY29udGVudCAmJiBpbmRlbnQubGVuZ3RoIDwgdHJpbUluZGVudCkge1xuICAgICAgICAgICAgY29uc3Qgc3JjID0gaGVhZGVyLmluZGVudFxuICAgICAgICAgICAgICAgID8gJ2V4cGxpY2l0IGluZGVudGF0aW9uIGluZGljYXRvcidcbiAgICAgICAgICAgICAgICA6ICdmaXJzdCBsaW5lJztcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQmxvY2sgc2NhbGFyIGxpbmVzIG11c3Qgbm90IGJlIGxlc3MgaW5kZW50ZWQgdGhhbiB0aGVpciAke3NyY31gO1xuICAgICAgICAgICAgb25FcnJvcihvZmZzZXQgLSBjb250ZW50Lmxlbmd0aCAtIChjcmxmID8gMiA6IDEpLCAnQkFEX0lOREVOVCcsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgaW5kZW50ID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUgPT09IFNjYWxhci5CTE9DS19MSVRFUkFMKSB7XG4gICAgICAgICAgICB2YWx1ZSArPSBzZXAgKyBpbmRlbnQuc2xpY2UodHJpbUluZGVudCkgKyBjb250ZW50O1xuICAgICAgICAgICAgc2VwID0gJ1xcbic7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaW5kZW50Lmxlbmd0aCA+IHRyaW1JbmRlbnQgfHwgY29udGVudFswXSA9PT0gJ1xcdCcpIHtcbiAgICAgICAgICAgIC8vIG1vcmUtaW5kZW50ZWQgY29udGVudCB3aXRoaW4gYSBmb2xkZWQgYmxvY2tcbiAgICAgICAgICAgIGlmIChzZXAgPT09ICcgJylcbiAgICAgICAgICAgICAgICBzZXAgPSAnXFxuJztcbiAgICAgICAgICAgIGVsc2UgaWYgKCFwcmV2TW9yZUluZGVudGVkICYmIHNlcCA9PT0gJ1xcbicpXG4gICAgICAgICAgICAgICAgc2VwID0gJ1xcblxcbic7XG4gICAgICAgICAgICB2YWx1ZSArPSBzZXAgKyBpbmRlbnQuc2xpY2UodHJpbUluZGVudCkgKyBjb250ZW50O1xuICAgICAgICAgICAgc2VwID0gJ1xcbic7XG4gICAgICAgICAgICBwcmV2TW9yZUluZGVudGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb250ZW50ID09PSAnJykge1xuICAgICAgICAgICAgLy8gZW1wdHkgbGluZVxuICAgICAgICAgICAgaWYgKHNlcCA9PT0gJ1xcbicpXG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gJ1xcbic7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgc2VwID0gJ1xcbic7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YWx1ZSArPSBzZXAgKyBjb250ZW50O1xuICAgICAgICAgICAgc2VwID0gJyAnO1xuICAgICAgICAgICAgcHJldk1vcmVJbmRlbnRlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN3aXRjaCAoaGVhZGVyLmNob21wKSB7XG4gICAgICAgIGNhc2UgJy0nOlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJysnOlxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGNob21wU3RhcnQ7IGkgPCBsaW5lcy5sZW5ndGg7ICsraSlcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSAnXFxuJyArIGxpbmVzW2ldWzBdLnNsaWNlKHRyaW1JbmRlbnQpO1xuICAgICAgICAgICAgaWYgKHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdICE9PSAnXFxuJylcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSAnXFxuJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdmFsdWUgKz0gJ1xcbic7XG4gICAgfVxuICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgaGVhZGVyLmxlbmd0aCArIHNjYWxhci5zb3VyY2UubGVuZ3RoO1xuICAgIHJldHVybiB7IHZhbHVlLCB0eXBlLCBjb21tZW50OiBoZWFkZXIuY29tbWVudCwgcmFuZ2U6IFtzdGFydCwgZW5kLCBlbmRdIH07XG59XG5mdW5jdGlvbiBwYXJzZUJsb2NrU2NhbGFySGVhZGVyKHsgb2Zmc2V0LCBwcm9wcyB9LCBzdHJpY3QsIG9uRXJyb3IpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgc2hvdWxkIG5vdCBoYXBwZW4gKi9cbiAgICBpZiAocHJvcHNbMF0udHlwZSAhPT0gJ2Jsb2NrLXNjYWxhci1oZWFkZXInKSB7XG4gICAgICAgIG9uRXJyb3IocHJvcHNbMF0sICdJTVBPU1NJQkxFJywgJ0Jsb2NrIHNjYWxhciBoZWFkZXIgbm90IGZvdW5kJyk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCB7IHNvdXJjZSB9ID0gcHJvcHNbMF07XG4gICAgY29uc3QgbW9kZSA9IHNvdXJjZVswXTtcbiAgICBsZXQgaW5kZW50ID0gMDtcbiAgICBsZXQgY2hvbXAgPSAnJztcbiAgICBsZXQgZXJyb3IgPSAtMTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHNvdXJjZS5sZW5ndGg7ICsraSkge1xuICAgICAgICBjb25zdCBjaCA9IHNvdXJjZVtpXTtcbiAgICAgICAgaWYgKCFjaG9tcCAmJiAoY2ggPT09ICctJyB8fCBjaCA9PT0gJysnKSlcbiAgICAgICAgICAgIGNob21wID0gY2g7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbiA9IE51bWJlcihjaCk7XG4gICAgICAgICAgICBpZiAoIWluZGVudCAmJiBuKVxuICAgICAgICAgICAgICAgIGluZGVudCA9IG47XG4gICAgICAgICAgICBlbHNlIGlmIChlcnJvciA9PT0gLTEpXG4gICAgICAgICAgICAgICAgZXJyb3IgPSBvZmZzZXQgKyBpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChlcnJvciAhPT0gLTEpXG4gICAgICAgIG9uRXJyb3IoZXJyb3IsICdVTkVYUEVDVEVEX1RPS0VOJywgYEJsb2NrIHNjYWxhciBoZWFkZXIgaW5jbHVkZXMgZXh0cmEgY2hhcmFjdGVyczogJHtzb3VyY2V9YCk7XG4gICAgbGV0IGhhc1NwYWNlID0gZmFsc2U7XG4gICAgbGV0IGNvbW1lbnQgPSAnJztcbiAgICBsZXQgbGVuZ3RoID0gc291cmNlLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHByb3BzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gcHJvcHNbaV07XG4gICAgICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgICAgIGhhc1NwYWNlID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIGZhbGx0aHJvdWdoXG4gICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICBsZW5ndGggKz0gdG9rZW4uc291cmNlLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgIWhhc1NwYWNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnQ29tbWVudHMgbXVzdCBiZSBzZXBhcmF0ZWQgZnJvbSBvdGhlciB0b2tlbnMgYnkgd2hpdGUgc3BhY2UgY2hhcmFjdGVycyc7XG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IodG9rZW4sICdNSVNTSU5HX0NIQVInLCBtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGVuZ3RoICs9IHRva2VuLnNvdXJjZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgY29tbWVudCA9IHRva2VuLnNvdXJjZS5zdWJzdHJpbmcoMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ1VORVhQRUNURURfVE9LRU4nLCB0b2tlbi5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICBsZW5ndGggKz0gdG9rZW4uc291cmNlLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0IHNob3VsZCBub3QgaGFwcGVuICovXG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBVbmV4cGVjdGVkIHRva2VuIGluIGJsb2NrIHNjYWxhciBoZWFkZXI6ICR7dG9rZW4udHlwZX1gO1xuICAgICAgICAgICAgICAgIG9uRXJyb3IodG9rZW4sICdVTkVYUEVDVEVEX1RPS0VOJywgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgdHMgPSB0b2tlbi5zb3VyY2U7XG4gICAgICAgICAgICAgICAgaWYgKHRzICYmIHR5cGVvZiB0cyA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAgICAgIGxlbmd0aCArPSB0cy5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgbW9kZSwgaW5kZW50LCBjaG9tcCwgY29tbWVudCwgbGVuZ3RoIH07XG59XG4vKiogQHJldHVybnMgQXJyYXkgb2YgbGluZXMgc3BsaXQgdXAgYXMgYFtpbmRlbnQsIGNvbnRlbnRdYCAqL1xuZnVuY3Rpb24gc3BsaXRMaW5lcyhzb3VyY2UpIHtcbiAgICBjb25zdCBzcGxpdCA9IHNvdXJjZS5zcGxpdCgvXFxuKCAqKS8pO1xuICAgIGNvbnN0IGZpcnN0ID0gc3BsaXRbMF07XG4gICAgY29uc3QgbSA9IGZpcnN0Lm1hdGNoKC9eKCAqKS8pO1xuICAgIGNvbnN0IGxpbmUwID0gbSAmJiBtWzFdID8gW21bMV0sIGZpcnN0LnNsaWNlKG1bMV0ubGVuZ3RoKV0gOiBbJycsIGZpcnN0XTtcbiAgICBjb25zdCBsaW5lcyA9IFtsaW5lMF07XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBzcGxpdC5sZW5ndGg7IGkgKz0gMilcbiAgICAgICAgbGluZXMucHVzaChbc3BsaXRbaV0sIHNwbGl0W2kgKyAxXV0pO1xuICAgIHJldHVybiBsaW5lcztcbn1cblxuZXhwb3J0IHsgcmVzb2x2ZUJsb2NrU2NhbGFyIH07XG4iLCJpbXBvcnQgeyBTY2FsYXIgfSBmcm9tICcuLi9ub2Rlcy9TY2FsYXIuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZUVuZCB9IGZyb20gJy4vcmVzb2x2ZS1lbmQuanMnO1xuXG5mdW5jdGlvbiByZXNvbHZlRmxvd1NjYWxhcihzY2FsYXIsIHN0cmljdCwgb25FcnJvcikge1xuICAgIGNvbnN0IHsgb2Zmc2V0LCB0eXBlLCBzb3VyY2UsIGVuZCB9ID0gc2NhbGFyO1xuICAgIGxldCBfdHlwZTtcbiAgICBsZXQgdmFsdWU7XG4gICAgY29uc3QgX29uRXJyb3IgPSAocmVsLCBjb2RlLCBtc2cpID0+IG9uRXJyb3Iob2Zmc2V0ICsgcmVsLCBjb2RlLCBtc2cpO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdzY2FsYXInOlxuICAgICAgICAgICAgX3R5cGUgPSBTY2FsYXIuUExBSU47XG4gICAgICAgICAgICB2YWx1ZSA9IHBsYWluVmFsdWUoc291cmNlLCBfb25FcnJvcik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc2luZ2xlLXF1b3RlZC1zY2FsYXInOlxuICAgICAgICAgICAgX3R5cGUgPSBTY2FsYXIuUVVPVEVfU0lOR0xFO1xuICAgICAgICAgICAgdmFsdWUgPSBzaW5nbGVRdW90ZWRWYWx1ZShzb3VyY2UsIF9vbkVycm9yKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdkb3VibGUtcXVvdGVkLXNjYWxhcic6XG4gICAgICAgICAgICBfdHlwZSA9IFNjYWxhci5RVU9URV9ET1VCTEU7XG4gICAgICAgICAgICB2YWx1ZSA9IGRvdWJsZVF1b3RlZFZhbHVlKHNvdXJjZSwgX29uRXJyb3IpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0IHNob3VsZCBub3QgaGFwcGVuICovXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBvbkVycm9yKHNjYWxhciwgJ1VORVhQRUNURURfVE9LRU4nLCBgRXhwZWN0ZWQgYSBmbG93IHNjYWxhciB2YWx1ZSwgYnV0IGZvdW5kOiAke3R5cGV9YCk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiBudWxsLFxuICAgICAgICAgICAgICAgIGNvbW1lbnQ6ICcnLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbb2Zmc2V0LCBvZmZzZXQgKyBzb3VyY2UubGVuZ3RoLCBvZmZzZXQgKyBzb3VyY2UubGVuZ3RoXVxuICAgICAgICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWVFbmQgPSBvZmZzZXQgKyBzb3VyY2UubGVuZ3RoO1xuICAgIGNvbnN0IHJlID0gcmVzb2x2ZUVuZChlbmQsIHZhbHVlRW5kLCBzdHJpY3QsIG9uRXJyb3IpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0eXBlOiBfdHlwZSxcbiAgICAgICAgY29tbWVudDogcmUuY29tbWVudCxcbiAgICAgICAgcmFuZ2U6IFtvZmZzZXQsIHZhbHVlRW5kLCByZS5vZmZzZXRdXG4gICAgfTtcbn1cbmZ1bmN0aW9uIHBsYWluVmFsdWUoc291cmNlLCBvbkVycm9yKSB7XG4gICAgbGV0IGJhZENoYXIgPSAnJztcbiAgICBzd2l0Y2ggKHNvdXJjZVswXSkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCBzaG91bGQgbm90IGhhcHBlbiAqL1xuICAgICAgICBjYXNlICdcXHQnOlxuICAgICAgICAgICAgYmFkQ2hhciA9ICdhIHRhYiBjaGFyYWN0ZXInO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJywnOlxuICAgICAgICAgICAgYmFkQ2hhciA9ICdmbG93IGluZGljYXRvciBjaGFyYWN0ZXIgLCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnJSc6XG4gICAgICAgICAgICBiYWRDaGFyID0gJ2RpcmVjdGl2ZSBpbmRpY2F0b3IgY2hhcmFjdGVyICUnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3wnOlxuICAgICAgICBjYXNlICc+Jzoge1xuICAgICAgICAgICAgYmFkQ2hhciA9IGBibG9jayBzY2FsYXIgaW5kaWNhdG9yICR7c291cmNlWzBdfWA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdAJzpcbiAgICAgICAgY2FzZSAnYCc6IHtcbiAgICAgICAgICAgIGJhZENoYXIgPSBgcmVzZXJ2ZWQgY2hhcmFjdGVyICR7c291cmNlWzBdfWA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoYmFkQ2hhcilcbiAgICAgICAgb25FcnJvcigwLCAnQkFEX1NDQUxBUl9TVEFSVCcsIGBQbGFpbiB2YWx1ZSBjYW5ub3Qgc3RhcnQgd2l0aCAke2JhZENoYXJ9YCk7XG4gICAgcmV0dXJuIGZvbGRMaW5lcyhzb3VyY2UpO1xufVxuZnVuY3Rpb24gc2luZ2xlUXVvdGVkVmFsdWUoc291cmNlLCBvbkVycm9yKSB7XG4gICAgaWYgKHNvdXJjZVtzb3VyY2UubGVuZ3RoIC0gMV0gIT09IFwiJ1wiIHx8IHNvdXJjZS5sZW5ndGggPT09IDEpXG4gICAgICAgIG9uRXJyb3Ioc291cmNlLmxlbmd0aCwgJ01JU1NJTkdfQ0hBUicsIFwiTWlzc2luZyBjbG9zaW5nICdxdW90ZVwiKTtcbiAgICByZXR1cm4gZm9sZExpbmVzKHNvdXJjZS5zbGljZSgxLCAtMSkpLnJlcGxhY2UoLycnL2csIFwiJ1wiKTtcbn1cbmZ1bmN0aW9uIGZvbGRMaW5lcyhzb3VyY2UpIHtcbiAgICAvKipcbiAgICAgKiBUaGUgbmVnYXRpdmUgbG9va2JlaGluZCBoZXJlIGFuZCBpbiB0aGUgYHJlYCBSZWdFeHAgaXMgdG9cbiAgICAgKiBwcmV2ZW50IGNhdXNpbmcgYSBwb2x5bm9taWFsIHNlYXJjaCB0aW1lIGluIGNlcnRhaW4gY2FzZXMuXG4gICAgICpcbiAgICAgKiBUaGUgdHJ5LWNhdGNoIGlzIGZvciBTYWZhcmksIHdoaWNoIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIHlldDpcbiAgICAgKiBodHRwczovL2Nhbml1c2UuY29tL2pzLXJlZ2V4cC1sb29rYmVoaW5kXG4gICAgICovXG4gICAgbGV0IGZpcnN0LCBsaW5lO1xuICAgIHRyeSB7XG4gICAgICAgIGZpcnN0ID0gbmV3IFJlZ0V4cCgnKC4qPykoPzwhWyBcXHRdKVsgXFx0XSpcXHI/XFxuJywgJ3N5Jyk7XG4gICAgICAgIGxpbmUgPSBuZXcgUmVnRXhwKCdbIFxcdF0qKC4qPykoPzooPzwhWyBcXHRdKVsgXFx0XSopP1xccj9cXG4nLCAnc3knKTtcbiAgICB9XG4gICAgY2F0Y2ggKF8pIHtcbiAgICAgICAgZmlyc3QgPSAvKC4qPylbIFxcdF0qXFxyP1xcbi9zeTtcbiAgICAgICAgbGluZSA9IC9bIFxcdF0qKC4qPylbIFxcdF0qXFxyP1xcbi9zeTtcbiAgICB9XG4gICAgbGV0IG1hdGNoID0gZmlyc3QuZXhlYyhzb3VyY2UpO1xuICAgIGlmICghbWF0Y2gpXG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgbGV0IHJlcyA9IG1hdGNoWzFdO1xuICAgIGxldCBzZXAgPSAnICc7XG4gICAgbGV0IHBvcyA9IGZpcnN0Lmxhc3RJbmRleDtcbiAgICBsaW5lLmxhc3RJbmRleCA9IHBvcztcbiAgICB3aGlsZSAoKG1hdGNoID0gbGluZS5leGVjKHNvdXJjZSkpKSB7XG4gICAgICAgIGlmIChtYXRjaFsxXSA9PT0gJycpIHtcbiAgICAgICAgICAgIGlmIChzZXAgPT09ICdcXG4nKVxuICAgICAgICAgICAgICAgIHJlcyArPSBzZXA7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgc2VwID0gJ1xcbic7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXMgKz0gc2VwICsgbWF0Y2hbMV07XG4gICAgICAgICAgICBzZXAgPSAnICc7XG4gICAgICAgIH1cbiAgICAgICAgcG9zID0gbGluZS5sYXN0SW5kZXg7XG4gICAgfVxuICAgIGNvbnN0IGxhc3QgPSAvWyBcXHRdKiguKikvc3k7XG4gICAgbGFzdC5sYXN0SW5kZXggPSBwb3M7XG4gICAgbWF0Y2ggPSBsYXN0LmV4ZWMoc291cmNlKTtcbiAgICByZXR1cm4gcmVzICsgc2VwICsgKChtYXRjaCAmJiBtYXRjaFsxXSkgfHwgJycpO1xufVxuZnVuY3Rpb24gZG91YmxlUXVvdGVkVmFsdWUoc291cmNlLCBvbkVycm9yKSB7XG4gICAgbGV0IHJlcyA9ICcnO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgc291cmNlLmxlbmd0aCAtIDE7ICsraSkge1xuICAgICAgICBjb25zdCBjaCA9IHNvdXJjZVtpXTtcbiAgICAgICAgaWYgKGNoID09PSAnXFxyJyAmJiBzb3VyY2VbaSArIDFdID09PSAnXFxuJylcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBpZiAoY2ggPT09ICdcXG4nKSB7XG4gICAgICAgICAgICBjb25zdCB7IGZvbGQsIG9mZnNldCB9ID0gZm9sZE5ld2xpbmUoc291cmNlLCBpKTtcbiAgICAgICAgICAgIHJlcyArPSBmb2xkO1xuICAgICAgICAgICAgaSA9IG9mZnNldDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjaCA9PT0gJ1xcXFwnKSB7XG4gICAgICAgICAgICBsZXQgbmV4dCA9IHNvdXJjZVsrK2ldO1xuICAgICAgICAgICAgY29uc3QgY2MgPSBlc2NhcGVDb2Rlc1tuZXh0XTtcbiAgICAgICAgICAgIGlmIChjYylcbiAgICAgICAgICAgICAgICByZXMgKz0gY2M7XG4gICAgICAgICAgICBlbHNlIGlmIChuZXh0ID09PSAnXFxuJykge1xuICAgICAgICAgICAgICAgIC8vIHNraXAgZXNjYXBlZCBuZXdsaW5lcywgYnV0IHN0aWxsIHRyaW0gdGhlIGZvbGxvd2luZyBsaW5lXG4gICAgICAgICAgICAgICAgbmV4dCA9IHNvdXJjZVtpICsgMV07XG4gICAgICAgICAgICAgICAgd2hpbGUgKG5leHQgPT09ICcgJyB8fCBuZXh0ID09PSAnXFx0JylcbiAgICAgICAgICAgICAgICAgICAgbmV4dCA9IHNvdXJjZVsrK2kgKyAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG5leHQgPT09ICdcXHInICYmIHNvdXJjZVtpICsgMV0gPT09ICdcXG4nKSB7XG4gICAgICAgICAgICAgICAgLy8gc2tpcCBlc2NhcGVkIENSTEYgbmV3bGluZXMsIGJ1dCBzdGlsbCB0cmltIHRoZSBmb2xsb3dpbmcgbGluZVxuICAgICAgICAgICAgICAgIG5leHQgPSBzb3VyY2VbKytpICsgMV07XG4gICAgICAgICAgICAgICAgd2hpbGUgKG5leHQgPT09ICcgJyB8fCBuZXh0ID09PSAnXFx0JylcbiAgICAgICAgICAgICAgICAgICAgbmV4dCA9IHNvdXJjZVsrK2kgKyAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG5leHQgPT09ICd4JyB8fCBuZXh0ID09PSAndScgfHwgbmV4dCA9PT0gJ1UnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0geyB4OiAyLCB1OiA0LCBVOiA4IH1bbmV4dF07XG4gICAgICAgICAgICAgICAgcmVzICs9IHBhcnNlQ2hhckNvZGUoc291cmNlLCBpICsgMSwgbGVuZ3RoLCBvbkVycm9yKTtcbiAgICAgICAgICAgICAgICBpICs9IGxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJhdyA9IHNvdXJjZS5zdWJzdHIoaSAtIDEsIDIpO1xuICAgICAgICAgICAgICAgIG9uRXJyb3IoaSAtIDEsICdCQURfRFFfRVNDQVBFJywgYEludmFsaWQgZXNjYXBlIHNlcXVlbmNlICR7cmF3fWApO1xuICAgICAgICAgICAgICAgIHJlcyArPSByYXc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2ggPT09ICcgJyB8fCBjaCA9PT0gJ1xcdCcpIHtcbiAgICAgICAgICAgIC8vIHRyaW0gdHJhaWxpbmcgd2hpdGVzcGFjZVxuICAgICAgICAgICAgY29uc3Qgd3NTdGFydCA9IGk7XG4gICAgICAgICAgICBsZXQgbmV4dCA9IHNvdXJjZVtpICsgMV07XG4gICAgICAgICAgICB3aGlsZSAobmV4dCA9PT0gJyAnIHx8IG5leHQgPT09ICdcXHQnKVxuICAgICAgICAgICAgICAgIG5leHQgPSBzb3VyY2VbKytpICsgMV07XG4gICAgICAgICAgICBpZiAobmV4dCAhPT0gJ1xcbicgJiYgIShuZXh0ID09PSAnXFxyJyAmJiBzb3VyY2VbaSArIDJdID09PSAnXFxuJykpXG4gICAgICAgICAgICAgICAgcmVzICs9IGkgPiB3c1N0YXJ0ID8gc291cmNlLnNsaWNlKHdzU3RhcnQsIGkgKyAxKSA6IGNoO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzICs9IGNoO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChzb3VyY2Vbc291cmNlLmxlbmd0aCAtIDFdICE9PSAnXCInIHx8IHNvdXJjZS5sZW5ndGggPT09IDEpXG4gICAgICAgIG9uRXJyb3Ioc291cmNlLmxlbmd0aCwgJ01JU1NJTkdfQ0hBUicsICdNaXNzaW5nIGNsb3NpbmcgXCJxdW90ZScpO1xuICAgIHJldHVybiByZXM7XG59XG4vKipcbiAqIEZvbGQgYSBzaW5nbGUgbmV3bGluZSBpbnRvIGEgc3BhY2UsIG11bHRpcGxlIG5ld2xpbmVzIHRvIE4gLSAxIG5ld2xpbmVzLlxuICogUHJlc3VtZXMgYHNvdXJjZVtvZmZzZXRdID09PSAnXFxuJ2BcbiAqL1xuZnVuY3Rpb24gZm9sZE5ld2xpbmUoc291cmNlLCBvZmZzZXQpIHtcbiAgICBsZXQgZm9sZCA9ICcnO1xuICAgIGxldCBjaCA9IHNvdXJjZVtvZmZzZXQgKyAxXTtcbiAgICB3aGlsZSAoY2ggPT09ICcgJyB8fCBjaCA9PT0gJ1xcdCcgfHwgY2ggPT09ICdcXG4nIHx8IGNoID09PSAnXFxyJykge1xuICAgICAgICBpZiAoY2ggPT09ICdcXHInICYmIHNvdXJjZVtvZmZzZXQgKyAyXSAhPT0gJ1xcbicpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgaWYgKGNoID09PSAnXFxuJylcbiAgICAgICAgICAgIGZvbGQgKz0gJ1xcbic7XG4gICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICBjaCA9IHNvdXJjZVtvZmZzZXQgKyAxXTtcbiAgICB9XG4gICAgaWYgKCFmb2xkKVxuICAgICAgICBmb2xkID0gJyAnO1xuICAgIHJldHVybiB7IGZvbGQsIG9mZnNldCB9O1xufVxuY29uc3QgZXNjYXBlQ29kZXMgPSB7XG4gICAgJzAnOiAnXFwwJyxcbiAgICBhOiAnXFx4MDcnLFxuICAgIGI6ICdcXGInLFxuICAgIGU6ICdcXHgxYicsXG4gICAgZjogJ1xcZicsXG4gICAgbjogJ1xcbicsXG4gICAgcjogJ1xccicsXG4gICAgdDogJ1xcdCcsXG4gICAgdjogJ1xcdicsXG4gICAgTjogJ1xcdTAwODUnLFxuICAgIF86ICdcXHUwMGEwJyxcbiAgICBMOiAnXFx1MjAyOCcsXG4gICAgUDogJ1xcdTIwMjknLFxuICAgICcgJzogJyAnLFxuICAgICdcIic6ICdcIicsXG4gICAgJy8nOiAnLycsXG4gICAgJ1xcXFwnOiAnXFxcXCcsXG4gICAgJ1xcdCc6ICdcXHQnXG59O1xuZnVuY3Rpb24gcGFyc2VDaGFyQ29kZShzb3VyY2UsIG9mZnNldCwgbGVuZ3RoLCBvbkVycm9yKSB7XG4gICAgY29uc3QgY2MgPSBzb3VyY2Uuc3Vic3RyKG9mZnNldCwgbGVuZ3RoKTtcbiAgICBjb25zdCBvayA9IGNjLmxlbmd0aCA9PT0gbGVuZ3RoICYmIC9eWzAtOWEtZkEtRl0rJC8udGVzdChjYyk7XG4gICAgY29uc3QgY29kZSA9IG9rID8gcGFyc2VJbnQoY2MsIDE2KSA6IE5hTjtcbiAgICBpZiAoaXNOYU4oY29kZSkpIHtcbiAgICAgICAgY29uc3QgcmF3ID0gc291cmNlLnN1YnN0cihvZmZzZXQgLSAyLCBsZW5ndGggKyAyKTtcbiAgICAgICAgb25FcnJvcihvZmZzZXQgLSAyLCAnQkFEX0RRX0VTQ0FQRScsIGBJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSAke3Jhd31gKTtcbiAgICAgICAgcmV0dXJuIHJhdztcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KGNvZGUpO1xufVxuXG5leHBvcnQgeyByZXNvbHZlRmxvd1NjYWxhciB9O1xuIiwiaW1wb3J0IHsgU0NBTEFSLCBpc1NjYWxhciB9IGZyb20gJy4uL25vZGVzL05vZGUuanMnO1xuaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi4vbm9kZXMvU2NhbGFyLmpzJztcbmltcG9ydCB7IHJlc29sdmVCbG9ja1NjYWxhciB9IGZyb20gJy4vcmVzb2x2ZS1ibG9jay1zY2FsYXIuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZUZsb3dTY2FsYXIgfSBmcm9tICcuL3Jlc29sdmUtZmxvdy1zY2FsYXIuanMnO1xuXG5mdW5jdGlvbiBjb21wb3NlU2NhbGFyKGN0eCwgdG9rZW4sIHRhZ1Rva2VuLCBvbkVycm9yKSB7XG4gICAgY29uc3QgeyB2YWx1ZSwgdHlwZSwgY29tbWVudCwgcmFuZ2UgfSA9IHRva2VuLnR5cGUgPT09ICdibG9jay1zY2FsYXInXG4gICAgICAgID8gcmVzb2x2ZUJsb2NrU2NhbGFyKHRva2VuLCBjdHgub3B0aW9ucy5zdHJpY3QsIG9uRXJyb3IpXG4gICAgICAgIDogcmVzb2x2ZUZsb3dTY2FsYXIodG9rZW4sIGN0eC5vcHRpb25zLnN0cmljdCwgb25FcnJvcik7XG4gICAgY29uc3QgdGFnTmFtZSA9IHRhZ1Rva2VuXG4gICAgICAgID8gY3R4LmRpcmVjdGl2ZXMudGFnTmFtZSh0YWdUb2tlbi5zb3VyY2UsIG1zZyA9PiBvbkVycm9yKHRhZ1Rva2VuLCAnVEFHX1JFU09MVkVfRkFJTEVEJywgbXNnKSlcbiAgICAgICAgOiBudWxsO1xuICAgIGNvbnN0IHRhZyA9IHRhZ1Rva2VuICYmIHRhZ05hbWVcbiAgICAgICAgPyBmaW5kU2NhbGFyVGFnQnlOYW1lKGN0eC5zY2hlbWEsIHZhbHVlLCB0YWdOYW1lLCB0YWdUb2tlbiwgb25FcnJvcilcbiAgICAgICAgOiB0b2tlbi50eXBlID09PSAnc2NhbGFyJ1xuICAgICAgICAgICAgPyBmaW5kU2NhbGFyVGFnQnlUZXN0KGN0eCwgdmFsdWUsIHRva2VuLCBvbkVycm9yKVxuICAgICAgICAgICAgOiBjdHguc2NoZW1hW1NDQUxBUl07XG4gICAgbGV0IHNjYWxhcjtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCByZXMgPSB0YWcucmVzb2x2ZSh2YWx1ZSwgbXNnID0+IG9uRXJyb3IodGFnVG9rZW4gfHwgdG9rZW4sICdUQUdfUkVTT0xWRV9GQUlMRUQnLCBtc2cpLCBjdHgub3B0aW9ucyk7XG4gICAgICAgIHNjYWxhciA9IGlzU2NhbGFyKHJlcykgPyByZXMgOiBuZXcgU2NhbGFyKHJlcyk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zdCBtc2cgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG4gICAgICAgIG9uRXJyb3IodGFnVG9rZW4gfHwgdG9rZW4sICdUQUdfUkVTT0xWRV9GQUlMRUQnLCBtc2cpO1xuICAgICAgICBzY2FsYXIgPSBuZXcgU2NhbGFyKHZhbHVlKTtcbiAgICB9XG4gICAgc2NhbGFyLnJhbmdlID0gcmFuZ2U7XG4gICAgc2NhbGFyLnNvdXJjZSA9IHZhbHVlO1xuICAgIGlmICh0eXBlKVxuICAgICAgICBzY2FsYXIudHlwZSA9IHR5cGU7XG4gICAgaWYgKHRhZ05hbWUpXG4gICAgICAgIHNjYWxhci50YWcgPSB0YWdOYW1lO1xuICAgIGlmICh0YWcuZm9ybWF0KVxuICAgICAgICBzY2FsYXIuZm9ybWF0ID0gdGFnLmZvcm1hdDtcbiAgICBpZiAoY29tbWVudClcbiAgICAgICAgc2NhbGFyLmNvbW1lbnQgPSBjb21tZW50O1xuICAgIHJldHVybiBzY2FsYXI7XG59XG5mdW5jdGlvbiBmaW5kU2NhbGFyVGFnQnlOYW1lKHNjaGVtYSwgdmFsdWUsIHRhZ05hbWUsIHRhZ1Rva2VuLCBvbkVycm9yKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmICh0YWdOYW1lID09PSAnIScpXG4gICAgICAgIHJldHVybiBzY2hlbWFbU0NBTEFSXTsgLy8gbm9uLXNwZWNpZmljIHRhZ1xuICAgIGNvbnN0IG1hdGNoV2l0aFRlc3QgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHRhZyBvZiBzY2hlbWEudGFncykge1xuICAgICAgICBpZiAoIXRhZy5jb2xsZWN0aW9uICYmIHRhZy50YWcgPT09IHRhZ05hbWUpIHtcbiAgICAgICAgICAgIGlmICh0YWcuZGVmYXVsdCAmJiB0YWcudGVzdClcbiAgICAgICAgICAgICAgICBtYXRjaFdpdGhUZXN0LnB1c2godGFnKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFnO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgdGFnIG9mIG1hdGNoV2l0aFRlc3QpXG4gICAgICAgIGlmICgoX2EgPSB0YWcudGVzdCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRlc3QodmFsdWUpKVxuICAgICAgICAgICAgcmV0dXJuIHRhZztcbiAgICBjb25zdCBrdCA9IHNjaGVtYS5rbm93blRhZ3NbdGFnTmFtZV07XG4gICAgaWYgKGt0ICYmICFrdC5jb2xsZWN0aW9uKSB7XG4gICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBrbm93biB0YWcgaXMgYXZhaWxhYmxlIGZvciBzdHJpbmdpZnlpbmcsXG4gICAgICAgIC8vIGJ1dCBkb2VzIG5vdCBnZXQgdXNlZCBieSBkZWZhdWx0LlxuICAgICAgICBzY2hlbWEudGFncy5wdXNoKE9iamVjdC5hc3NpZ24oe30sIGt0LCB7IGRlZmF1bHQ6IGZhbHNlLCB0ZXN0OiB1bmRlZmluZWQgfSkpO1xuICAgICAgICByZXR1cm4ga3Q7XG4gICAgfVxuICAgIG9uRXJyb3IodGFnVG9rZW4sICdUQUdfUkVTT0xWRV9GQUlMRUQnLCBgVW5yZXNvbHZlZCB0YWc6ICR7dGFnTmFtZX1gLCB0YWdOYW1lICE9PSAndGFnOnlhbWwub3JnLDIwMDI6c3RyJyk7XG4gICAgcmV0dXJuIHNjaGVtYVtTQ0FMQVJdO1xufVxuZnVuY3Rpb24gZmluZFNjYWxhclRhZ0J5VGVzdCh7IGRpcmVjdGl2ZXMsIHNjaGVtYSB9LCB2YWx1ZSwgdG9rZW4sIG9uRXJyb3IpIHtcbiAgICBjb25zdCB0YWcgPSBzY2hlbWEudGFncy5maW5kKHRhZyA9PiB7IHZhciBfYTsgcmV0dXJuIHRhZy5kZWZhdWx0ICYmICgoX2EgPSB0YWcudGVzdCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRlc3QodmFsdWUpKTsgfSkgfHwgc2NoZW1hW1NDQUxBUl07XG4gICAgaWYgKHNjaGVtYS5jb21wYXQpIHtcbiAgICAgICAgY29uc3QgY29tcGF0ID0gc2NoZW1hLmNvbXBhdC5maW5kKHRhZyA9PiB7IHZhciBfYTsgcmV0dXJuIHRhZy5kZWZhdWx0ICYmICgoX2EgPSB0YWcudGVzdCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRlc3QodmFsdWUpKTsgfSkgfHxcbiAgICAgICAgICAgIHNjaGVtYVtTQ0FMQVJdO1xuICAgICAgICBpZiAodGFnLnRhZyAhPT0gY29tcGF0LnRhZykge1xuICAgICAgICAgICAgY29uc3QgdHMgPSBkaXJlY3RpdmVzLnRhZ1N0cmluZyh0YWcudGFnKTtcbiAgICAgICAgICAgIGNvbnN0IGNzID0gZGlyZWN0aXZlcy50YWdTdHJpbmcoY29tcGF0LnRhZyk7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSBgVmFsdWUgbWF5IGJlIHBhcnNlZCBhcyBlaXRoZXIgJHt0c30gb3IgJHtjc31gO1xuICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ1RBR19SRVNPTFZFX0ZBSUxFRCcsIG1zZywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRhZztcbn1cblxuZXhwb3J0IHsgY29tcG9zZVNjYWxhciB9O1xuIiwiZnVuY3Rpb24gZW1wdHlTY2FsYXJQb3NpdGlvbihvZmZzZXQsIGJlZm9yZSwgcG9zKSB7XG4gICAgaWYgKGJlZm9yZSkge1xuICAgICAgICBpZiAocG9zID09PSBudWxsKVxuICAgICAgICAgICAgcG9zID0gYmVmb3JlLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IHBvcyAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgICAgICBsZXQgc3QgPSBiZWZvcmVbaV07XG4gICAgICAgICAgICBzd2l0Y2ggKHN0LnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnbmV3bGluZSc6XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCAtPSBzdC5zb3VyY2UubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRlY2huaWNhbGx5LCBhbiBlbXB0eSBzY2FsYXIgaXMgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGxhc3Qgbm9uLWVtcHR5XG4gICAgICAgICAgICAvLyBub2RlLCBidXQgaXQncyBtb3JlIHVzZWZ1bCB0byBwbGFjZSBpdCBhZnRlciBhbnkgd2hpdGVzcGFjZS5cbiAgICAgICAgICAgIHN0ID0gYmVmb3JlWysraV07XG4gICAgICAgICAgICB3aGlsZSAoKHN0ID09PSBudWxsIHx8IHN0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdC50eXBlKSA9PT0gJ3NwYWNlJykge1xuICAgICAgICAgICAgICAgIG9mZnNldCArPSBzdC5zb3VyY2UubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHN0ID0gYmVmb3JlWysraV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2Zmc2V0O1xufVxuXG5leHBvcnQgeyBlbXB0eVNjYWxhclBvc2l0aW9uIH07XG4iLCJpbXBvcnQgeyBBbGlhcyB9IGZyb20gJy4uL25vZGVzL0FsaWFzLmpzJztcbmltcG9ydCB7IGNvbXBvc2VDb2xsZWN0aW9uIH0gZnJvbSAnLi9jb21wb3NlLWNvbGxlY3Rpb24uanMnO1xuaW1wb3J0IHsgY29tcG9zZVNjYWxhciB9IGZyb20gJy4vY29tcG9zZS1zY2FsYXIuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZUVuZCB9IGZyb20gJy4vcmVzb2x2ZS1lbmQuanMnO1xuaW1wb3J0IHsgZW1wdHlTY2FsYXJQb3NpdGlvbiB9IGZyb20gJy4vdXRpbC1lbXB0eS1zY2FsYXItcG9zaXRpb24uanMnO1xuXG5jb25zdCBDTiA9IHsgY29tcG9zZU5vZGUsIGNvbXBvc2VFbXB0eU5vZGUgfTtcbmZ1bmN0aW9uIGNvbXBvc2VOb2RlKGN0eCwgdG9rZW4sIHByb3BzLCBvbkVycm9yKSB7XG4gICAgY29uc3QgeyBzcGFjZUJlZm9yZSwgY29tbWVudCwgYW5jaG9yLCB0YWcgfSA9IHByb3BzO1xuICAgIGxldCBub2RlO1xuICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAgICAgICBjYXNlICdhbGlhcyc6XG4gICAgICAgICAgICBub2RlID0gY29tcG9zZUFsaWFzKGN0eCwgdG9rZW4sIG9uRXJyb3IpO1xuICAgICAgICAgICAgaWYgKGFuY2hvciB8fCB0YWcpXG4gICAgICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ0FMSUFTX1BST1BTJywgJ0FuIGFsaWFzIG5vZGUgbXVzdCBub3Qgc3BlY2lmeSBhbnkgcHJvcGVydGllcycpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3NjYWxhcic6XG4gICAgICAgIGNhc2UgJ3NpbmdsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgY2FzZSAnZG91YmxlLXF1b3RlZC1zY2FsYXInOlxuICAgICAgICBjYXNlICdibG9jay1zY2FsYXInOlxuICAgICAgICAgICAgbm9kZSA9IGNvbXBvc2VTY2FsYXIoY3R4LCB0b2tlbiwgdGFnLCBvbkVycm9yKTtcbiAgICAgICAgICAgIGlmIChhbmNob3IpXG4gICAgICAgICAgICAgICAgbm9kZS5hbmNob3IgPSBhbmNob3Iuc291cmNlLnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdibG9jay1tYXAnOlxuICAgICAgICBjYXNlICdibG9jay1zZXEnOlxuICAgICAgICBjYXNlICdmbG93LWNvbGxlY3Rpb24nOlxuICAgICAgICAgICAgbm9kZSA9IGNvbXBvc2VDb2xsZWN0aW9uKENOLCBjdHgsIHRva2VuLCB0YWcsIG9uRXJyb3IpO1xuICAgICAgICAgICAgaWYgKGFuY2hvcilcbiAgICAgICAgICAgICAgICBub2RlLmFuY2hvciA9IGFuY2hvci5zb3VyY2Uuc3Vic3RyaW5nKDEpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0b2tlbik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVuIHRva2VuIHR5cGU6ICR7dG9rZW4udHlwZX1gKTtcbiAgICB9XG4gICAgaWYgKGFuY2hvciAmJiBub2RlLmFuY2hvciA9PT0gJycpXG4gICAgICAgIG9uRXJyb3IoYW5jaG9yLCAnQkFEX0FMSUFTJywgJ0FuY2hvciBjYW5ub3QgYmUgYW4gZW1wdHkgc3RyaW5nJyk7XG4gICAgaWYgKHNwYWNlQmVmb3JlKVxuICAgICAgICBub2RlLnNwYWNlQmVmb3JlID0gdHJ1ZTtcbiAgICBpZiAoY29tbWVudCkge1xuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gJ3NjYWxhcicgJiYgdG9rZW4uc291cmNlID09PSAnJylcbiAgICAgICAgICAgIG5vZGUuY29tbWVudCA9IGNvbW1lbnQ7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIG5vZGUuY29tbWVudEJlZm9yZSA9IGNvbW1lbnQ7XG4gICAgfVxuICAgIGlmIChjdHgub3B0aW9ucy5rZWVwU291cmNlVG9rZW5zKVxuICAgICAgICBub2RlLnNyY1Rva2VuID0gdG9rZW47XG4gICAgcmV0dXJuIG5vZGU7XG59XG5mdW5jdGlvbiBjb21wb3NlRW1wdHlOb2RlKGN0eCwgb2Zmc2V0LCBiZWZvcmUsIHBvcywgeyBzcGFjZUJlZm9yZSwgY29tbWVudCwgYW5jaG9yLCB0YWcgfSwgb25FcnJvcikge1xuICAgIGNvbnN0IHRva2VuID0ge1xuICAgICAgICB0eXBlOiAnc2NhbGFyJyxcbiAgICAgICAgb2Zmc2V0OiBlbXB0eVNjYWxhclBvc2l0aW9uKG9mZnNldCwgYmVmb3JlLCBwb3MpLFxuICAgICAgICBpbmRlbnQ6IC0xLFxuICAgICAgICBzb3VyY2U6ICcnXG4gICAgfTtcbiAgICBjb25zdCBub2RlID0gY29tcG9zZVNjYWxhcihjdHgsIHRva2VuLCB0YWcsIG9uRXJyb3IpO1xuICAgIGlmIChhbmNob3IpIHtcbiAgICAgICAgbm9kZS5hbmNob3IgPSBhbmNob3Iuc291cmNlLnN1YnN0cmluZygxKTtcbiAgICAgICAgaWYgKG5vZGUuYW5jaG9yID09PSAnJylcbiAgICAgICAgICAgIG9uRXJyb3IoYW5jaG9yLCAnQkFEX0FMSUFTJywgJ0FuY2hvciBjYW5ub3QgYmUgYW4gZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIGlmIChzcGFjZUJlZm9yZSlcbiAgICAgICAgbm9kZS5zcGFjZUJlZm9yZSA9IHRydWU7XG4gICAgaWYgKGNvbW1lbnQpXG4gICAgICAgIG5vZGUuY29tbWVudCA9IGNvbW1lbnQ7XG4gICAgcmV0dXJuIG5vZGU7XG59XG5mdW5jdGlvbiBjb21wb3NlQWxpYXMoeyBvcHRpb25zIH0sIHsgb2Zmc2V0LCBzb3VyY2UsIGVuZCB9LCBvbkVycm9yKSB7XG4gICAgY29uc3QgYWxpYXMgPSBuZXcgQWxpYXMoc291cmNlLnN1YnN0cmluZygxKSk7XG4gICAgaWYgKGFsaWFzLnNvdXJjZSA9PT0gJycpXG4gICAgICAgIG9uRXJyb3Iob2Zmc2V0LCAnQkFEX0FMSUFTJywgJ0FsaWFzIGNhbm5vdCBiZSBhbiBlbXB0eSBzdHJpbmcnKTtcbiAgICBjb25zdCB2YWx1ZUVuZCA9IG9mZnNldCArIHNvdXJjZS5sZW5ndGg7XG4gICAgY29uc3QgcmUgPSByZXNvbHZlRW5kKGVuZCwgdmFsdWVFbmQsIG9wdGlvbnMuc3RyaWN0LCBvbkVycm9yKTtcbiAgICBhbGlhcy5yYW5nZSA9IFtvZmZzZXQsIHZhbHVlRW5kLCByZS5vZmZzZXRdO1xuICAgIGlmIChyZS5jb21tZW50KVxuICAgICAgICBhbGlhcy5jb21tZW50ID0gcmUuY29tbWVudDtcbiAgICByZXR1cm4gYWxpYXM7XG59XG5cbmV4cG9ydCB7IGNvbXBvc2VFbXB0eU5vZGUsIGNvbXBvc2VOb2RlIH07XG4iLCJpbXBvcnQgeyBEb2N1bWVudCB9IGZyb20gJy4uL2RvYy9Eb2N1bWVudC5qcyc7XG5pbXBvcnQgeyBjb21wb3NlTm9kZSwgY29tcG9zZUVtcHR5Tm9kZSB9IGZyb20gJy4vY29tcG9zZS1ub2RlLmpzJztcbmltcG9ydCB7IHJlc29sdmVFbmQgfSBmcm9tICcuL3Jlc29sdmUtZW5kLmpzJztcbmltcG9ydCB7IHJlc29sdmVQcm9wcyB9IGZyb20gJy4vcmVzb2x2ZS1wcm9wcy5qcyc7XG5cbmZ1bmN0aW9uIGNvbXBvc2VEb2Mob3B0aW9ucywgZGlyZWN0aXZlcywgeyBvZmZzZXQsIHN0YXJ0LCB2YWx1ZSwgZW5kIH0sIG9uRXJyb3IpIHtcbiAgICBjb25zdCBvcHRzID0gT2JqZWN0LmFzc2lnbih7IGRpcmVjdGl2ZXMgfSwgb3B0aW9ucyk7XG4gICAgY29uc3QgZG9jID0gbmV3IERvY3VtZW50KHVuZGVmaW5lZCwgb3B0cyk7XG4gICAgY29uc3QgY3R4ID0ge1xuICAgICAgICBhdFJvb3Q6IHRydWUsXG4gICAgICAgIGRpcmVjdGl2ZXM6IGRvYy5kaXJlY3RpdmVzLFxuICAgICAgICBvcHRpb25zOiBkb2Mub3B0aW9ucyxcbiAgICAgICAgc2NoZW1hOiBkb2Muc2NoZW1hXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHJlc29sdmVQcm9wcyhzdGFydCwge1xuICAgICAgICBpbmRpY2F0b3I6ICdkb2Mtc3RhcnQnLFxuICAgICAgICBuZXh0OiB2YWx1ZSB8fCAoZW5kID09PSBudWxsIHx8IGVuZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW5kWzBdKSxcbiAgICAgICAgb2Zmc2V0LFxuICAgICAgICBvbkVycm9yLFxuICAgICAgICBzdGFydE9uTmV3bGluZTogdHJ1ZVxuICAgIH0pO1xuICAgIGlmIChwcm9wcy5mb3VuZCkge1xuICAgICAgICBkb2MuZGlyZWN0aXZlcy5tYXJrZXIgPSB0cnVlO1xuICAgICAgICBpZiAodmFsdWUgJiZcbiAgICAgICAgICAgICh2YWx1ZS50eXBlID09PSAnYmxvY2stbWFwJyB8fCB2YWx1ZS50eXBlID09PSAnYmxvY2stc2VxJykgJiZcbiAgICAgICAgICAgICFwcm9wcy5oYXNOZXdsaW5lKVxuICAgICAgICAgICAgb25FcnJvcihwcm9wcy5lbmQsICdNSVNTSU5HX0NIQVInLCAnQmxvY2sgY29sbGVjdGlvbiBjYW5ub3Qgc3RhcnQgb24gc2FtZSBsaW5lIHdpdGggZGlyZWN0aXZlcy1lbmQgbWFya2VyJyk7XG4gICAgfVxuICAgIGRvYy5jb250ZW50cyA9IHZhbHVlXG4gICAgICAgID8gY29tcG9zZU5vZGUoY3R4LCB2YWx1ZSwgcHJvcHMsIG9uRXJyb3IpXG4gICAgICAgIDogY29tcG9zZUVtcHR5Tm9kZShjdHgsIHByb3BzLmVuZCwgc3RhcnQsIG51bGwsIHByb3BzLCBvbkVycm9yKTtcbiAgICBjb25zdCBjb250ZW50RW5kID0gZG9jLmNvbnRlbnRzLnJhbmdlWzJdO1xuICAgIGNvbnN0IHJlID0gcmVzb2x2ZUVuZChlbmQsIGNvbnRlbnRFbmQsIGZhbHNlLCBvbkVycm9yKTtcbiAgICBpZiAocmUuY29tbWVudClcbiAgICAgICAgZG9jLmNvbW1lbnQgPSByZS5jb21tZW50O1xuICAgIGRvYy5yYW5nZSA9IFtvZmZzZXQsIGNvbnRlbnRFbmQsIHJlLm9mZnNldF07XG4gICAgcmV0dXJuIGRvYztcbn1cblxuZXhwb3J0IHsgY29tcG9zZURvYyB9O1xuIiwiaW1wb3J0IHsgRGlyZWN0aXZlcyB9IGZyb20gJy4uL2RvYy9kaXJlY3RpdmVzLmpzJztcbmltcG9ydCB7IERvY3VtZW50IH0gZnJvbSAnLi4vZG9jL0RvY3VtZW50LmpzJztcbmltcG9ydCB7IFlBTUxXYXJuaW5nLCBZQU1MUGFyc2VFcnJvciB9IGZyb20gJy4uL2Vycm9ycy5qcyc7XG5pbXBvcnQgeyBpc0NvbGxlY3Rpb24sIGlzUGFpciB9IGZyb20gJy4uL25vZGVzL05vZGUuanMnO1xuaW1wb3J0IHsgZGVmYXVsdE9wdGlvbnMgfSBmcm9tICcuLi9vcHRpb25zLmpzJztcbmltcG9ydCB7IGNvbXBvc2VEb2MgfSBmcm9tICcuL2NvbXBvc2UtZG9jLmpzJztcbmltcG9ydCB7IHJlc29sdmVFbmQgfSBmcm9tICcuL3Jlc29sdmUtZW5kLmpzJztcblxuZnVuY3Rpb24gZ2V0RXJyb3JQb3Moc3JjKSB7XG4gICAgaWYgKHR5cGVvZiBzcmMgPT09ICdudW1iZXInKVxuICAgICAgICByZXR1cm4gW3NyYywgc3JjICsgMV07XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc3JjKSlcbiAgICAgICAgcmV0dXJuIHNyYy5sZW5ndGggPT09IDIgPyBzcmMgOiBbc3JjWzBdLCBzcmNbMV1dO1xuICAgIGNvbnN0IHsgb2Zmc2V0LCBzb3VyY2UgfSA9IHNyYztcbiAgICByZXR1cm4gW29mZnNldCwgb2Zmc2V0ICsgKHR5cGVvZiBzb3VyY2UgPT09ICdzdHJpbmcnID8gc291cmNlLmxlbmd0aCA6IDEpXTtcbn1cbmZ1bmN0aW9uIHBhcnNlUHJlbHVkZShwcmVsdWRlKSB7XG4gICAgdmFyIF9hO1xuICAgIGxldCBjb21tZW50ID0gJyc7XG4gICAgbGV0IGF0Q29tbWVudCA9IGZhbHNlO1xuICAgIGxldCBhZnRlckVtcHR5TGluZSA9IGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJlbHVkZS5sZW5ndGg7ICsraSkge1xuICAgICAgICBjb25zdCBzb3VyY2UgPSBwcmVsdWRlW2ldO1xuICAgICAgICBzd2l0Y2ggKHNvdXJjZVswXSkge1xuICAgICAgICAgICAgY2FzZSAnIyc6XG4gICAgICAgICAgICAgICAgY29tbWVudCArPVxuICAgICAgICAgICAgICAgICAgICAoY29tbWVudCA9PT0gJycgPyAnJyA6IGFmdGVyRW1wdHlMaW5lID8gJ1xcblxcbicgOiAnXFxuJykgK1xuICAgICAgICAgICAgICAgICAgICAgICAgKHNvdXJjZS5zdWJzdHJpbmcoMSkgfHwgJyAnKTtcbiAgICAgICAgICAgICAgICBhdENvbW1lbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGFmdGVyRW1wdHlMaW5lID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICclJzpcbiAgICAgICAgICAgICAgICBpZiAoKChfYSA9IHByZWx1ZGVbaSArIDFdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMF0pICE9PSAnIycpXG4gICAgICAgICAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICAgICAgICBhdENvbW1lbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBtYXkgYmUgd3JvbmcgYWZ0ZXIgZG9jLWVuZCwgYnV0IGluIHRoYXQgY2FzZSBpdCBkb2Vzbid0IG1hdHRlclxuICAgICAgICAgICAgICAgIGlmICghYXRDb21tZW50KVxuICAgICAgICAgICAgICAgICAgICBhZnRlckVtcHR5TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYXRDb21tZW50ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgY29tbWVudCwgYWZ0ZXJFbXB0eUxpbmUgfTtcbn1cbi8qKlxuICogQ29tcG9zZSBhIHN0cmVhbSBvZiBDU1Qgbm9kZXMgaW50byBhIHN0cmVhbSBvZiBZQU1MIERvY3VtZW50cy5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgQ29tcG9zZXIsIFBhcnNlciB9IGZyb20gJ3lhbWwnXG4gKlxuICogY29uc3Qgc3JjOiBzdHJpbmcgPSAuLi5cbiAqIGNvbnN0IHRva2VucyA9IG5ldyBQYXJzZXIoKS5wYXJzZShzcmMpXG4gKiBjb25zdCBkb2NzID0gbmV3IENvbXBvc2VyKCkuY29tcG9zZSh0b2tlbnMpXG4gKiBgYGBcbiAqL1xuY2xhc3MgQ29tcG9zZXIge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7fSkge1xuICAgICAgICB0aGlzLmRvYyA9IG51bGw7XG4gICAgICAgIHRoaXMuYXREaXJlY3RpdmVzID0gZmFsc2U7XG4gICAgICAgIHRoaXMucHJlbHVkZSA9IFtdO1xuICAgICAgICB0aGlzLmVycm9ycyA9IFtdO1xuICAgICAgICB0aGlzLndhcm5pbmdzID0gW107XG4gICAgICAgIHRoaXMub25FcnJvciA9IChzb3VyY2UsIGNvZGUsIG1lc3NhZ2UsIHdhcm5pbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBvcyA9IGdldEVycm9yUG9zKHNvdXJjZSk7XG4gICAgICAgICAgICBpZiAod2FybmluZylcbiAgICAgICAgICAgICAgICB0aGlzLndhcm5pbmdzLnB1c2gobmV3IFlBTUxXYXJuaW5nKHBvcywgY29kZSwgbWVzc2FnZSkpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JzLnB1c2gobmV3IFlBTUxQYXJzZUVycm9yKHBvcywgY29kZSwgbWVzc2FnZSkpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRpcmVjdGl2ZXMgPSBuZXcgRGlyZWN0aXZlcyh7XG4gICAgICAgICAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24gfHwgZGVmYXVsdE9wdGlvbnMudmVyc2lvblxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgZGVjb3JhdGUoZG9jLCBhZnRlckRvYykge1xuICAgICAgICBjb25zdCB7IGNvbW1lbnQsIGFmdGVyRW1wdHlMaW5lIH0gPSBwYXJzZVByZWx1ZGUodGhpcy5wcmVsdWRlKTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyh7IGRjOiBkb2MuY29tbWVudCwgcHJlbHVkZSwgY29tbWVudCB9KVxuICAgICAgICBpZiAoY29tbWVudCkge1xuICAgICAgICAgICAgY29uc3QgZGMgPSBkb2MuY29udGVudHM7XG4gICAgICAgICAgICBpZiAoYWZ0ZXJEb2MpIHtcbiAgICAgICAgICAgICAgICBkb2MuY29tbWVudCA9IGRvYy5jb21tZW50ID8gYCR7ZG9jLmNvbW1lbnR9XFxuJHtjb21tZW50fWAgOiBjb21tZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoYWZ0ZXJFbXB0eUxpbmUgfHwgZG9jLmRpcmVjdGl2ZXMubWFya2VyIHx8ICFkYykge1xuICAgICAgICAgICAgICAgIGRvYy5jb21tZW50QmVmb3JlID0gY29tbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzQ29sbGVjdGlvbihkYykgJiYgIWRjLmZsb3cgJiYgZGMuaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxldCBpdCA9IGRjLml0ZW1zWzBdO1xuICAgICAgICAgICAgICAgIGlmIChpc1BhaXIoaXQpKVxuICAgICAgICAgICAgICAgICAgICBpdCA9IGl0LmtleTtcbiAgICAgICAgICAgICAgICBjb25zdCBjYiA9IGl0LmNvbW1lbnRCZWZvcmU7XG4gICAgICAgICAgICAgICAgaXQuY29tbWVudEJlZm9yZSA9IGNiID8gYCR7Y29tbWVudH1cXG4ke2NifWAgOiBjb21tZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2IgPSBkYy5jb21tZW50QmVmb3JlO1xuICAgICAgICAgICAgICAgIGRjLmNvbW1lbnRCZWZvcmUgPSBjYiA/IGAke2NvbW1lbnR9XFxuJHtjYn1gIDogY29tbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoYWZ0ZXJEb2MpIHtcbiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGRvYy5lcnJvcnMsIHRoaXMuZXJyb3JzKTtcbiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGRvYy53YXJuaW5ncywgdGhpcy53YXJuaW5ncyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkb2MuZXJyb3JzID0gdGhpcy5lcnJvcnM7XG4gICAgICAgICAgICBkb2Mud2FybmluZ3MgPSB0aGlzLndhcm5pbmdzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJlbHVkZSA9IFtdO1xuICAgICAgICB0aGlzLmVycm9ycyA9IFtdO1xuICAgICAgICB0aGlzLndhcm5pbmdzID0gW107XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEN1cnJlbnQgc3RyZWFtIHN0YXR1cyBpbmZvcm1hdGlvbi5cbiAgICAgKlxuICAgICAqIE1vc3RseSB1c2VmdWwgYXQgdGhlIGVuZCBvZiBpbnB1dCBmb3IgYW4gZW1wdHkgc3RyZWFtLlxuICAgICAqL1xuICAgIHN0cmVhbUluZm8oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb21tZW50OiBwYXJzZVByZWx1ZGUodGhpcy5wcmVsdWRlKS5jb21tZW50LFxuICAgICAgICAgICAgZGlyZWN0aXZlczogdGhpcy5kaXJlY3RpdmVzLFxuICAgICAgICAgICAgZXJyb3JzOiB0aGlzLmVycm9ycyxcbiAgICAgICAgICAgIHdhcm5pbmdzOiB0aGlzLndhcm5pbmdzXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbXBvc2UgdG9rZW5zIGludG8gZG9jdW1lbnRzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZvcmNlRG9jIC0gSWYgdGhlIHN0cmVhbSBjb250YWlucyBubyBkb2N1bWVudCwgc3RpbGwgZW1pdCBhIGZpbmFsIGRvY3VtZW50IGluY2x1ZGluZyBhbnkgY29tbWVudHMgYW5kIGRpcmVjdGl2ZXMgdGhhdCB3b3VsZCBiZSBhcHBsaWVkIHRvIGEgc3Vic2VxdWVudCBkb2N1bWVudC5cbiAgICAgKiBAcGFyYW0gZW5kT2Zmc2V0IC0gU2hvdWxkIGJlIHNldCBpZiBgZm9yY2VEb2NgIGlzIGFsc28gc2V0LCB0byBzZXQgdGhlIGRvY3VtZW50IHJhbmdlIGVuZCBhbmQgdG8gaW5kaWNhdGUgZXJyb3JzIGNvcnJlY3RseS5cbiAgICAgKi9cbiAgICAqY29tcG9zZSh0b2tlbnMsIGZvcmNlRG9jID0gZmFsc2UsIGVuZE9mZnNldCA9IC0xKSB7XG4gICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5zKVxuICAgICAgICAgICAgeWllbGQqIHRoaXMubmV4dCh0b2tlbik7XG4gICAgICAgIHlpZWxkKiB0aGlzLmVuZChmb3JjZURvYywgZW5kT2Zmc2V0KTtcbiAgICB9XG4gICAgLyoqIEFkdmFuY2UgdGhlIGNvbXBvc2VyIGJ5IG9uZSBDU1QgdG9rZW4uICovXG4gICAgKm5leHQodG9rZW4pIHtcbiAgICAgICAgc3dpdGNoICh0b2tlbi50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdkaXJlY3RpdmUnOlxuICAgICAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlcy5hZGQodG9rZW4uc291cmNlLCAob2Zmc2V0LCBtZXNzYWdlLCB3YXJuaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvcyA9IGdldEVycm9yUG9zKHRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgcG9zWzBdICs9IG9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkVycm9yKHBvcywgJ0JBRF9ESVJFQ1RJVkUnLCBtZXNzYWdlLCB3YXJuaW5nKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZWx1ZGUucHVzaCh0b2tlbi5zb3VyY2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXREaXJlY3RpdmVzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RvY3VtZW50Jzoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRvYyA9IGNvbXBvc2VEb2ModGhpcy5vcHRpb25zLCB0aGlzLmRpcmVjdGl2ZXMsIHRva2VuLCB0aGlzLm9uRXJyb3IpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF0RGlyZWN0aXZlcyAmJiAhZG9jLmRpcmVjdGl2ZXMubWFya2VyKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRXJyb3IodG9rZW4sICdNSVNTSU5HX0NIQVInLCAnTWlzc2luZyBkaXJlY3RpdmVzLWVuZCBpbmRpY2F0b3IgbGluZScpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVjb3JhdGUoZG9jLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZG9jKVxuICAgICAgICAgICAgICAgICAgICB5aWVsZCB0aGlzLmRvYztcbiAgICAgICAgICAgICAgICB0aGlzLmRvYyA9IGRvYztcbiAgICAgICAgICAgICAgICB0aGlzLmF0RGlyZWN0aXZlcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnYnl0ZS1vcmRlci1tYXJrJzpcbiAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnbmV3bGluZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVsdWRlLnB1c2godG9rZW4uc291cmNlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Vycm9yJzoge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1zZyA9IHRva2VuLnNvdXJjZVxuICAgICAgICAgICAgICAgICAgICA/IGAke3Rva2VuLm1lc3NhZ2V9OiAke0pTT04uc3RyaW5naWZ5KHRva2VuLnNvdXJjZSl9YFxuICAgICAgICAgICAgICAgICAgICA6IHRva2VuLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgWUFNTFBhcnNlRXJyb3IoZ2V0RXJyb3JQb3ModG9rZW4pLCAnVU5FWFBFQ1RFRF9UT0tFTicsIG1zZyk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXREaXJlY3RpdmVzIHx8ICF0aGlzLmRvYylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvcnMucHVzaChlcnJvcik7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvYy5lcnJvcnMucHVzaChlcnJvcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdkb2MtZW5kJzoge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5kb2MpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbXNnID0gJ1VuZXhwZWN0ZWQgZG9jLWVuZCB3aXRob3V0IHByZWNlZGluZyBkb2N1bWVudCc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JzLnB1c2gobmV3IFlBTUxQYXJzZUVycm9yKGdldEVycm9yUG9zKHRva2VuKSwgJ1VORVhQRUNURURfVE9LRU4nLCBtc2cpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IHJlc29sdmVFbmQodG9rZW4uZW5kLCB0b2tlbi5vZmZzZXQgKyB0b2tlbi5zb3VyY2UubGVuZ3RoLCB0aGlzLmRvYy5vcHRpb25zLnN0cmljdCwgdGhpcy5vbkVycm9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRlY29yYXRlKHRoaXMuZG9jLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBpZiAoZW5kLmNvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGMgPSB0aGlzLmRvYy5jb21tZW50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvYy5jb21tZW50ID0gZGMgPyBgJHtkY31cXG4ke2VuZC5jb21tZW50fWAgOiBlbmQuY29tbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5kb2MucmFuZ2VbMl0gPSBlbmQub2Zmc2V0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9ycy5wdXNoKG5ldyBZQU1MUGFyc2VFcnJvcihnZXRFcnJvclBvcyh0b2tlbiksICdVTkVYUEVDVEVEX1RPS0VOJywgYFVuc3VwcG9ydGVkIHRva2VuICR7dG9rZW4udHlwZX1gKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2FsbCBhdCBlbmQgb2YgaW5wdXQgdG8geWllbGQgYW55IHJlbWFpbmluZyBkb2N1bWVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb3JjZURvYyAtIElmIHRoZSBzdHJlYW0gY29udGFpbnMgbm8gZG9jdW1lbnQsIHN0aWxsIGVtaXQgYSBmaW5hbCBkb2N1bWVudCBpbmNsdWRpbmcgYW55IGNvbW1lbnRzIGFuZCBkaXJlY3RpdmVzIHRoYXQgd291bGQgYmUgYXBwbGllZCB0byBhIHN1YnNlcXVlbnQgZG9jdW1lbnQuXG4gICAgICogQHBhcmFtIGVuZE9mZnNldCAtIFNob3VsZCBiZSBzZXQgaWYgYGZvcmNlRG9jYCBpcyBhbHNvIHNldCwgdG8gc2V0IHRoZSBkb2N1bWVudCByYW5nZSBlbmQgYW5kIHRvIGluZGljYXRlIGVycm9ycyBjb3JyZWN0bHkuXG4gICAgICovXG4gICAgKmVuZChmb3JjZURvYyA9IGZhbHNlLCBlbmRPZmZzZXQgPSAtMSkge1xuICAgICAgICBpZiAodGhpcy5kb2MpIHtcbiAgICAgICAgICAgIHRoaXMuZGVjb3JhdGUodGhpcy5kb2MsIHRydWUpO1xuICAgICAgICAgICAgeWllbGQgdGhpcy5kb2M7XG4gICAgICAgICAgICB0aGlzLmRvYyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZm9yY2VEb2MpIHtcbiAgICAgICAgICAgIGNvbnN0IG9wdHMgPSBPYmplY3QuYXNzaWduKHsgZGlyZWN0aXZlczogdGhpcy5kaXJlY3RpdmVzIH0sIHRoaXMub3B0aW9ucyk7XG4gICAgICAgICAgICBjb25zdCBkb2MgPSBuZXcgRG9jdW1lbnQodW5kZWZpbmVkLCBvcHRzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmF0RGlyZWN0aXZlcylcbiAgICAgICAgICAgICAgICB0aGlzLm9uRXJyb3IoZW5kT2Zmc2V0LCAnTUlTU0lOR19DSEFSJywgJ01pc3NpbmcgZGlyZWN0aXZlcy1lbmQgaW5kaWNhdG9yIGxpbmUnKTtcbiAgICAgICAgICAgIGRvYy5yYW5nZSA9IFswLCBlbmRPZmZzZXQsIGVuZE9mZnNldF07XG4gICAgICAgICAgICB0aGlzLmRlY29yYXRlKGRvYywgZmFsc2UpO1xuICAgICAgICAgICAgeWllbGQgZG9jO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgeyBDb21wb3NlciB9O1xuIiwiaW1wb3J0IHsgcmVzb2x2ZUJsb2NrU2NhbGFyIH0gZnJvbSAnLi4vY29tcG9zZS9yZXNvbHZlLWJsb2NrLXNjYWxhci5qcyc7XG5pbXBvcnQgeyByZXNvbHZlRmxvd1NjYWxhciB9IGZyb20gJy4uL2NvbXBvc2UvcmVzb2x2ZS1mbG93LXNjYWxhci5qcyc7XG5pbXBvcnQgeyBZQU1MUGFyc2VFcnJvciB9IGZyb20gJy4uL2Vycm9ycy5qcyc7XG5pbXBvcnQgeyBzdHJpbmdpZnlTdHJpbmcgfSBmcm9tICcuLi9zdHJpbmdpZnkvc3RyaW5naWZ5U3RyaW5nLmpzJztcblxuZnVuY3Rpb24gcmVzb2x2ZUFzU2NhbGFyKHRva2VuLCBzdHJpY3QgPSB0cnVlLCBvbkVycm9yKSB7XG4gICAgaWYgKHRva2VuKSB7XG4gICAgICAgIGNvbnN0IF9vbkVycm9yID0gKHBvcywgY29kZSwgbWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdHlwZW9mIHBvcyA9PT0gJ251bWJlcicgPyBwb3MgOiBBcnJheS5pc0FycmF5KHBvcykgPyBwb3NbMF0gOiBwb3Mub2Zmc2V0O1xuICAgICAgICAgICAgaWYgKG9uRXJyb3IpXG4gICAgICAgICAgICAgICAgb25FcnJvcihvZmZzZXQsIGNvZGUsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBZQU1MUGFyc2VFcnJvcihbb2Zmc2V0LCBvZmZzZXQgKyAxXSwgY29kZSwgbWVzc2FnZSk7XG4gICAgICAgIH07XG4gICAgICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnc2NhbGFyJzpcbiAgICAgICAgICAgIGNhc2UgJ3NpbmdsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgICAgIGNhc2UgJ2RvdWJsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZUZsb3dTY2FsYXIodG9rZW4sIHN0cmljdCwgX29uRXJyb3IpO1xuICAgICAgICAgICAgY2FzZSAnYmxvY2stc2NhbGFyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZUJsb2NrU2NhbGFyKHRva2VuLCBzdHJpY3QsIF9vbkVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbi8qKlxuICogQ3JlYXRlIGEgbmV3IHNjYWxhciB0b2tlbiB3aXRoIGB2YWx1ZWBcbiAqXG4gKiBWYWx1ZXMgdGhhdCByZXByZXNlbnQgYW4gYWN0dWFsIHN0cmluZyBidXQgbWF5IGJlIHBhcnNlZCBhcyBhIGRpZmZlcmVudCB0eXBlIHNob3VsZCB1c2UgYSBgdHlwZWAgb3RoZXIgdGhhbiBgJ1BMQUlOJ2AsXG4gKiBhcyB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IHN1cHBvcnQgYW55IHNjaGVtYSBvcGVyYXRpb25zIGFuZCB3b24ndCBjaGVjayBmb3Igc3VjaCBjb25mbGljdHMuXG4gKlxuICogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhbHVlLCB3aGljaCB3aWxsIGhhdmUgaXRzIGNvbnRlbnQgcHJvcGVybHkgaW5kZW50ZWQuXG4gKiBAcGFyYW0gY29udGV4dC5lbmQgQ29tbWVudHMgYW5kIHdoaXRlc3BhY2UgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgdmFsdWUsIG9yIGFmdGVyIHRoZSBibG9jayBzY2FsYXIgaGVhZGVyLiBJZiB1bmRlZmluZWQsIGEgbmV3bGluZSB3aWxsIGJlIGFkZGVkLlxuICogQHBhcmFtIGNvbnRleHQuaW1wbGljaXRLZXkgQmVpbmcgd2l0aGluIGFuIGltcGxpY2l0IGtleSBtYXkgYWZmZWN0IHRoZSByZXNvbHZlZCB0eXBlIG9mIHRoZSB0b2tlbidzIHZhbHVlLlxuICogQHBhcmFtIGNvbnRleHQuaW5kZW50IFRoZSBpbmRlbnQgbGV2ZWwgb2YgdGhlIHRva2VuLlxuICogQHBhcmFtIGNvbnRleHQuaW5GbG93IElzIHRoaXMgc2NhbGFyIHdpdGhpbiBhIGZsb3cgY29sbGVjdGlvbj8gVGhpcyBtYXkgYWZmZWN0IHRoZSByZXNvbHZlZCB0eXBlIG9mIHRoZSB0b2tlbidzIHZhbHVlLlxuICogQHBhcmFtIGNvbnRleHQub2Zmc2V0IFRoZSBvZmZzZXQgcG9zaXRpb24gb2YgdGhlIHRva2VuLlxuICogQHBhcmFtIGNvbnRleHQudHlwZSBUaGUgcHJlZmVycmVkIHR5cGUgb2YgdGhlIHNjYWxhciB0b2tlbi4gSWYgdW5kZWZpbmVkLCB0aGUgcHJldmlvdXMgdHlwZSBvZiB0aGUgYHRva2VuYCB3aWxsIGJlIHVzZWQsIGRlZmF1bHRpbmcgdG8gYCdQTEFJTidgLlxuICovXG5mdW5jdGlvbiBjcmVhdGVTY2FsYXJUb2tlbih2YWx1ZSwgY29udGV4dCkge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCB7IGltcGxpY2l0S2V5ID0gZmFsc2UsIGluZGVudCwgaW5GbG93ID0gZmFsc2UsIG9mZnNldCA9IC0xLCB0eXBlID0gJ1BMQUlOJyB9ID0gY29udGV4dDtcbiAgICBjb25zdCBzb3VyY2UgPSBzdHJpbmdpZnlTdHJpbmcoeyB0eXBlLCB2YWx1ZSB9LCB7XG4gICAgICAgIGltcGxpY2l0S2V5LFxuICAgICAgICBpbmRlbnQ6IGluZGVudCA+IDAgPyAnICcucmVwZWF0KGluZGVudCkgOiAnJyxcbiAgICAgICAgaW5GbG93LFxuICAgICAgICBvcHRpb25zOiB7IGJsb2NrUXVvdGU6IHRydWUsIGxpbmVXaWR0aDogLTEgfVxuICAgIH0pO1xuICAgIGNvbnN0IGVuZCA9IChfYSA9IGNvbnRleHQuZW5kKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBbXG4gICAgICAgIHsgdHlwZTogJ25ld2xpbmUnLCBvZmZzZXQ6IC0xLCBpbmRlbnQsIHNvdXJjZTogJ1xcbicgfVxuICAgIF07XG4gICAgc3dpdGNoIChzb3VyY2VbMF0pIHtcbiAgICAgICAgY2FzZSAnfCc6XG4gICAgICAgIGNhc2UgJz4nOiB7XG4gICAgICAgICAgICBjb25zdCBoZSA9IHNvdXJjZS5pbmRleE9mKCdcXG4nKTtcbiAgICAgICAgICAgIGNvbnN0IGhlYWQgPSBzb3VyY2Uuc3Vic3RyaW5nKDAsIGhlKTtcbiAgICAgICAgICAgIGNvbnN0IGJvZHkgPSBzb3VyY2Uuc3Vic3RyaW5nKGhlICsgMSkgKyAnXFxuJztcbiAgICAgICAgICAgIGNvbnN0IHByb3BzID0gW1xuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2Jsb2NrLXNjYWxhci1oZWFkZXInLCBvZmZzZXQsIGluZGVudCwgc291cmNlOiBoZWFkIH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBpZiAoIWFkZEVuZHRvQmxvY2tQcm9wcyhwcm9wcywgZW5kKSlcbiAgICAgICAgICAgICAgICBwcm9wcy5wdXNoKHsgdHlwZTogJ25ld2xpbmUnLCBvZmZzZXQ6IC0xLCBpbmRlbnQsIHNvdXJjZTogJ1xcbicgfSk7XG4gICAgICAgICAgICByZXR1cm4geyB0eXBlOiAnYmxvY2stc2NhbGFyJywgb2Zmc2V0LCBpbmRlbnQsIHByb3BzLCBzb3VyY2U6IGJvZHkgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdcIic6XG4gICAgICAgICAgICByZXR1cm4geyB0eXBlOiAnZG91YmxlLXF1b3RlZC1zY2FsYXInLCBvZmZzZXQsIGluZGVudCwgc291cmNlLCBlbmQgfTtcbiAgICAgICAgY2FzZSBcIidcIjpcbiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICdzaW5nbGUtcXVvdGVkLXNjYWxhcicsIG9mZnNldCwgaW5kZW50LCBzb3VyY2UsIGVuZCB9O1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogJ3NjYWxhcicsIG9mZnNldCwgaW5kZW50LCBzb3VyY2UsIGVuZCB9O1xuICAgIH1cbn1cbi8qKlxuICogU2V0IHRoZSB2YWx1ZSBvZiBgdG9rZW5gIHRvIHRoZSBnaXZlbiBzdHJpbmcgYHZhbHVlYCwgb3ZlcndyaXRpbmcgYW55IHByZXZpb3VzIGNvbnRlbnRzIGFuZCB0eXBlIHRoYXQgaXQgbWF5IGhhdmUuXG4gKlxuICogQmVzdCBlZmZvcnRzIGFyZSBtYWRlIHRvIHJldGFpbiBhbnkgY29tbWVudHMgcHJldmlvdXNseSBhc3NvY2lhdGVkIHdpdGggdGhlIGB0b2tlbmAsXG4gKiB0aG91Z2ggYWxsIGNvbnRlbnRzIHdpdGhpbiBhIGNvbGxlY3Rpb24ncyBgaXRlbXNgIHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG4gKlxuICogVmFsdWVzIHRoYXQgcmVwcmVzZW50IGFuIGFjdHVhbCBzdHJpbmcgYnV0IG1heSBiZSBwYXJzZWQgYXMgYSBkaWZmZXJlbnQgdHlwZSBzaG91bGQgdXNlIGEgYHR5cGVgIG90aGVyIHRoYW4gYCdQTEFJTidgLFxuICogYXMgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGFueSBzY2hlbWEgb3BlcmF0aW9ucyBhbmQgd29uJ3QgY2hlY2sgZm9yIHN1Y2ggY29uZmxpY3RzLlxuICpcbiAqIEBwYXJhbSB0b2tlbiBBbnkgdG9rZW4uIElmIGl0IGRvZXMgbm90IGluY2x1ZGUgYW4gYGluZGVudGAgdmFsdWUsIHRoZSB2YWx1ZSB3aWxsIGJlIHN0cmluZ2lmaWVkIGFzIGlmIGl0IHdlcmUgYW4gaW1wbGljaXQga2V5LlxuICogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhbHVlLCB3aGljaCB3aWxsIGhhdmUgaXRzIGNvbnRlbnQgcHJvcGVybHkgaW5kZW50ZWQuXG4gKiBAcGFyYW0gY29udGV4dC5hZnRlcktleSBJbiBtb3N0IGNhc2VzLCB2YWx1ZXMgYWZ0ZXIgYSBrZXkgc2hvdWxkIGhhdmUgYW4gYWRkaXRpb25hbCBsZXZlbCBvZiBpbmRlbnRhdGlvbi5cbiAqIEBwYXJhbSBjb250ZXh0LmltcGxpY2l0S2V5IEJlaW5nIHdpdGhpbiBhbiBpbXBsaWNpdCBrZXkgbWF5IGFmZmVjdCB0aGUgcmVzb2x2ZWQgdHlwZSBvZiB0aGUgdG9rZW4ncyB2YWx1ZS5cbiAqIEBwYXJhbSBjb250ZXh0LmluRmxvdyBCZWluZyB3aXRoaW4gYSBmbG93IGNvbGxlY3Rpb24gbWF5IGFmZmVjdCB0aGUgcmVzb2x2ZWQgdHlwZSBvZiB0aGUgdG9rZW4ncyB2YWx1ZS5cbiAqIEBwYXJhbSBjb250ZXh0LnR5cGUgVGhlIHByZWZlcnJlZCB0eXBlIG9mIHRoZSBzY2FsYXIgdG9rZW4uIElmIHVuZGVmaW5lZCwgdGhlIHByZXZpb3VzIHR5cGUgb2YgdGhlIGB0b2tlbmAgd2lsbCBiZSB1c2VkLCBkZWZhdWx0aW5nIHRvIGAnUExBSU4nYC5cbiAqL1xuZnVuY3Rpb24gc2V0U2NhbGFyVmFsdWUodG9rZW4sIHZhbHVlLCBjb250ZXh0ID0ge30pIHtcbiAgICBsZXQgeyBhZnRlcktleSA9IGZhbHNlLCBpbXBsaWNpdEtleSA9IGZhbHNlLCBpbkZsb3cgPSBmYWxzZSwgdHlwZSB9ID0gY29udGV4dDtcbiAgICBsZXQgaW5kZW50ID0gJ2luZGVudCcgaW4gdG9rZW4gPyB0b2tlbi5pbmRlbnQgOiBudWxsO1xuICAgIGlmIChhZnRlcktleSAmJiB0eXBlb2YgaW5kZW50ID09PSAnbnVtYmVyJylcbiAgICAgICAgaW5kZW50ICs9IDI7XG4gICAgaWYgKCF0eXBlKVxuICAgICAgICBzd2l0Y2ggKHRva2VuLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NpbmdsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgICAgICAgICB0eXBlID0gJ1FVT1RFX1NJTkdMRSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkb3VibGUtcXVvdGVkLXNjYWxhcic6XG4gICAgICAgICAgICAgICAgdHlwZSA9ICdRVU9URV9ET1VCTEUnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYmxvY2stc2NhbGFyJzoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlciA9IHRva2VuLnByb3BzWzBdO1xuICAgICAgICAgICAgICAgIGlmIChoZWFkZXIudHlwZSAhPT0gJ2Jsb2NrLXNjYWxhci1oZWFkZXInKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYmxvY2sgc2NhbGFyIGhlYWRlcicpO1xuICAgICAgICAgICAgICAgIHR5cGUgPSBoZWFkZXIuc291cmNlWzBdID09PSAnPicgPyAnQkxPQ0tfRk9MREVEJyA6ICdCTE9DS19MSVRFUkFMJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdHlwZSA9ICdQTEFJTic7XG4gICAgICAgIH1cbiAgICBjb25zdCBzb3VyY2UgPSBzdHJpbmdpZnlTdHJpbmcoeyB0eXBlLCB2YWx1ZSB9LCB7XG4gICAgICAgIGltcGxpY2l0S2V5OiBpbXBsaWNpdEtleSB8fCBpbmRlbnQgPT09IG51bGwsXG4gICAgICAgIGluZGVudDogaW5kZW50ICE9PSBudWxsICYmIGluZGVudCA+IDAgPyAnICcucmVwZWF0KGluZGVudCkgOiAnJyxcbiAgICAgICAgaW5GbG93LFxuICAgICAgICBvcHRpb25zOiB7IGJsb2NrUXVvdGU6IHRydWUsIGxpbmVXaWR0aDogLTEgfVxuICAgIH0pO1xuICAgIHN3aXRjaCAoc291cmNlWzBdKSB7XG4gICAgICAgIGNhc2UgJ3wnOlxuICAgICAgICBjYXNlICc+JzpcbiAgICAgICAgICAgIHNldEJsb2NrU2NhbGFyVmFsdWUodG9rZW4sIHNvdXJjZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnXCInOlxuICAgICAgICAgICAgc2V0Rmxvd1NjYWxhclZhbHVlKHRva2VuLCBzb3VyY2UsICdkb3VibGUtcXVvdGVkLXNjYWxhcicpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCInXCI6XG4gICAgICAgICAgICBzZXRGbG93U2NhbGFyVmFsdWUodG9rZW4sIHNvdXJjZSwgJ3NpbmdsZS1xdW90ZWQtc2NhbGFyJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHNldEZsb3dTY2FsYXJWYWx1ZSh0b2tlbiwgc291cmNlLCAnc2NhbGFyJyk7XG4gICAgfVxufVxuZnVuY3Rpb24gc2V0QmxvY2tTY2FsYXJWYWx1ZSh0b2tlbiwgc291cmNlKSB7XG4gICAgY29uc3QgaGUgPSBzb3VyY2UuaW5kZXhPZignXFxuJyk7XG4gICAgY29uc3QgaGVhZCA9IHNvdXJjZS5zdWJzdHJpbmcoMCwgaGUpO1xuICAgIGNvbnN0IGJvZHkgPSBzb3VyY2Uuc3Vic3RyaW5nKGhlICsgMSkgKyAnXFxuJztcbiAgICBpZiAodG9rZW4udHlwZSA9PT0gJ2Jsb2NrLXNjYWxhcicpIHtcbiAgICAgICAgY29uc3QgaGVhZGVyID0gdG9rZW4ucHJvcHNbMF07XG4gICAgICAgIGlmIChoZWFkZXIudHlwZSAhPT0gJ2Jsb2NrLXNjYWxhci1oZWFkZXInKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGJsb2NrIHNjYWxhciBoZWFkZXInKTtcbiAgICAgICAgaGVhZGVyLnNvdXJjZSA9IGhlYWQ7XG4gICAgICAgIHRva2VuLnNvdXJjZSA9IGJvZHk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCB7IG9mZnNldCB9ID0gdG9rZW47XG4gICAgICAgIGNvbnN0IGluZGVudCA9ICdpbmRlbnQnIGluIHRva2VuID8gdG9rZW4uaW5kZW50IDogLTE7XG4gICAgICAgIGNvbnN0IHByb3BzID0gW1xuICAgICAgICAgICAgeyB0eXBlOiAnYmxvY2stc2NhbGFyLWhlYWRlcicsIG9mZnNldCwgaW5kZW50LCBzb3VyY2U6IGhlYWQgfVxuICAgICAgICBdO1xuICAgICAgICBpZiAoIWFkZEVuZHRvQmxvY2tQcm9wcyhwcm9wcywgJ2VuZCcgaW4gdG9rZW4gPyB0b2tlbi5lbmQgOiB1bmRlZmluZWQpKVxuICAgICAgICAgICAgcHJvcHMucHVzaCh7IHR5cGU6ICduZXdsaW5lJywgb2Zmc2V0OiAtMSwgaW5kZW50LCBzb3VyY2U6ICdcXG4nIH0pO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0b2tlbikpXG4gICAgICAgICAgICBpZiAoa2V5ICE9PSAndHlwZScgJiYga2V5ICE9PSAnb2Zmc2V0JylcbiAgICAgICAgICAgICAgICBkZWxldGUgdG9rZW5ba2V5XTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0b2tlbiwgeyB0eXBlOiAnYmxvY2stc2NhbGFyJywgaW5kZW50LCBwcm9wcywgc291cmNlOiBib2R5IH0pO1xuICAgIH1cbn1cbi8qKiBAcmV0dXJucyBgdHJ1ZWAgaWYgbGFzdCB0b2tlbiBpcyBhIG5ld2xpbmUgKi9cbmZ1bmN0aW9uIGFkZEVuZHRvQmxvY2tQcm9wcyhwcm9wcywgZW5kKSB7XG4gICAgaWYgKGVuZClcbiAgICAgICAgZm9yIChjb25zdCBzdCBvZiBlbmQpXG4gICAgICAgICAgICBzd2l0Y2ggKHN0LnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLnB1c2goc3QpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMucHVzaChzdCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIHNldEZsb3dTY2FsYXJWYWx1ZSh0b2tlbiwgc291cmNlLCB0eXBlKSB7XG4gICAgc3dpdGNoICh0b2tlbi50eXBlKSB7XG4gICAgICAgIGNhc2UgJ3NjYWxhcic6XG4gICAgICAgIGNhc2UgJ2RvdWJsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgY2FzZSAnc2luZ2xlLXF1b3RlZC1zY2FsYXInOlxuICAgICAgICAgICAgdG9rZW4udHlwZSA9IHR5cGU7XG4gICAgICAgICAgICB0b2tlbi5zb3VyY2UgPSBzb3VyY2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYmxvY2stc2NhbGFyJzoge1xuICAgICAgICAgICAgY29uc3QgZW5kID0gdG9rZW4ucHJvcHMuc2xpY2UoMSk7XG4gICAgICAgICAgICBsZXQgb2EgPSBzb3VyY2UubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKHRva2VuLnByb3BzWzBdLnR5cGUgPT09ICdibG9jay1zY2FsYXItaGVhZGVyJylcbiAgICAgICAgICAgICAgICBvYSAtPSB0b2tlbi5wcm9wc1swXS5zb3VyY2UubGVuZ3RoO1xuICAgICAgICAgICAgZm9yIChjb25zdCB0b2sgb2YgZW5kKVxuICAgICAgICAgICAgICAgIHRvay5vZmZzZXQgKz0gb2E7XG4gICAgICAgICAgICBkZWxldGUgdG9rZW4ucHJvcHM7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRva2VuLCB7IHR5cGUsIHNvdXJjZSwgZW5kIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnYmxvY2stbWFwJzpcbiAgICAgICAgY2FzZSAnYmxvY2stc2VxJzoge1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdG9rZW4ub2Zmc2V0ICsgc291cmNlLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IG5sID0geyB0eXBlOiAnbmV3bGluZScsIG9mZnNldCwgaW5kZW50OiB0b2tlbi5pbmRlbnQsIHNvdXJjZTogJ1xcbicgfTtcbiAgICAgICAgICAgIGRlbGV0ZSB0b2tlbi5pdGVtcztcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odG9rZW4sIHsgdHlwZSwgc291cmNlLCBlbmQ6IFtubF0gfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBjb25zdCBpbmRlbnQgPSAnaW5kZW50JyBpbiB0b2tlbiA/IHRva2VuLmluZGVudCA6IC0xO1xuICAgICAgICAgICAgY29uc3QgZW5kID0gJ2VuZCcgaW4gdG9rZW4gJiYgQXJyYXkuaXNBcnJheSh0b2tlbi5lbmQpXG4gICAgICAgICAgICAgICAgPyB0b2tlbi5lbmQuZmlsdGVyKHN0ID0+IHN0LnR5cGUgPT09ICdzcGFjZScgfHxcbiAgICAgICAgICAgICAgICAgICAgc3QudHlwZSA9PT0gJ2NvbW1lbnQnIHx8XG4gICAgICAgICAgICAgICAgICAgIHN0LnR5cGUgPT09ICduZXdsaW5lJylcbiAgICAgICAgICAgICAgICA6IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModG9rZW4pKVxuICAgICAgICAgICAgICAgIGlmIChrZXkgIT09ICd0eXBlJyAmJiBrZXkgIT09ICdvZmZzZXQnKVxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdG9rZW5ba2V5XTtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odG9rZW4sIHsgdHlwZSwgaW5kZW50LCBzb3VyY2UsIGVuZCB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IHsgY3JlYXRlU2NhbGFyVG9rZW4sIHJlc29sdmVBc1NjYWxhciwgc2V0U2NhbGFyVmFsdWUgfTtcbiIsIi8qKlxuICogU3RyaW5naWZ5IGEgQ1NUIGRvY3VtZW50LCB0b2tlbiwgb3IgY29sbGVjdGlvbiBpdGVtXG4gKlxuICogRmFpciB3YXJuaW5nOiBUaGlzIGFwcGxpZXMgbm8gdmFsaWRhdGlvbiB3aGF0c29ldmVyLCBhbmRcbiAqIHNpbXBseSBjb25jYXRlbmF0ZXMgdGhlIHNvdXJjZXMgaW4gdGhlaXIgbG9naWNhbCBvcmRlci5cbiAqL1xuY29uc3Qgc3RyaW5naWZ5ID0gKGNzdCkgPT4gJ3R5cGUnIGluIGNzdCA/IHN0cmluZ2lmeVRva2VuKGNzdCkgOiBzdHJpbmdpZnlJdGVtKGNzdCk7XG5mdW5jdGlvbiBzdHJpbmdpZnlUb2tlbih0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAgICAgICBjYXNlICdibG9jay1zY2FsYXInOiB7XG4gICAgICAgICAgICBsZXQgcmVzID0gJyc7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRvayBvZiB0b2tlbi5wcm9wcylcbiAgICAgICAgICAgICAgICByZXMgKz0gc3RyaW5naWZ5VG9rZW4odG9rKTtcbiAgICAgICAgICAgIHJldHVybiByZXMgKyB0b2tlbi5zb3VyY2U7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnYmxvY2stbWFwJzpcbiAgICAgICAgY2FzZSAnYmxvY2stc2VxJzoge1xuICAgICAgICAgICAgbGV0IHJlcyA9ICcnO1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRva2VuLml0ZW1zKVxuICAgICAgICAgICAgICAgIHJlcyArPSBzdHJpbmdpZnlJdGVtKGl0ZW0pO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdmbG93LWNvbGxlY3Rpb24nOiB7XG4gICAgICAgICAgICBsZXQgcmVzID0gdG9rZW4uc3RhcnQuc291cmNlO1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRva2VuLml0ZW1zKVxuICAgICAgICAgICAgICAgIHJlcyArPSBzdHJpbmdpZnlJdGVtKGl0ZW0pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBzdCBvZiB0b2tlbi5lbmQpXG4gICAgICAgICAgICAgICAgcmVzICs9IHN0LnNvdXJjZTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnZG9jdW1lbnQnOiB7XG4gICAgICAgICAgICBsZXQgcmVzID0gc3RyaW5naWZ5SXRlbSh0b2tlbik7XG4gICAgICAgICAgICBpZiAodG9rZW4uZW5kKVxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc3Qgb2YgdG9rZW4uZW5kKVxuICAgICAgICAgICAgICAgICAgICByZXMgKz0gc3Quc291cmNlO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBsZXQgcmVzID0gdG9rZW4uc291cmNlO1xuICAgICAgICAgICAgaWYgKCdlbmQnIGluIHRva2VuICYmIHRva2VuLmVuZClcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHN0IG9mIHRva2VuLmVuZClcbiAgICAgICAgICAgICAgICAgICAgcmVzICs9IHN0LnNvdXJjZTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBzdHJpbmdpZnlJdGVtKHsgc3RhcnQsIGtleSwgc2VwLCB2YWx1ZSB9KSB7XG4gICAgbGV0IHJlcyA9ICcnO1xuICAgIGZvciAoY29uc3Qgc3Qgb2Ygc3RhcnQpXG4gICAgICAgIHJlcyArPSBzdC5zb3VyY2U7XG4gICAgaWYgKGtleSlcbiAgICAgICAgcmVzICs9IHN0cmluZ2lmeVRva2VuKGtleSk7XG4gICAgaWYgKHNlcClcbiAgICAgICAgZm9yIChjb25zdCBzdCBvZiBzZXApXG4gICAgICAgICAgICByZXMgKz0gc3Quc291cmNlO1xuICAgIGlmICh2YWx1ZSlcbiAgICAgICAgcmVzICs9IHN0cmluZ2lmeVRva2VuKHZhbHVlKTtcbiAgICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgeyBzdHJpbmdpZnkgfTtcbiIsImV4cG9ydCB7IGNyZWF0ZVNjYWxhclRva2VuLCByZXNvbHZlQXNTY2FsYXIsIHNldFNjYWxhclZhbHVlIH0gZnJvbSAnLi9jc3Qtc2NhbGFyLmpzJztcbmV4cG9ydCB7IHN0cmluZ2lmeSB9IGZyb20gJy4vY3N0LXN0cmluZ2lmeS5qcyc7XG5leHBvcnQgeyB2aXNpdCB9IGZyb20gJy4vY3N0LXZpc2l0LmpzJztcblxuLyoqIFRoZSBieXRlIG9yZGVyIG1hcmsgKi9cbmNvbnN0IEJPTSA9ICdcXHV7RkVGRn0nO1xuLyoqIFN0YXJ0IG9mIGRvYy1tb2RlICovXG5jb25zdCBET0NVTUVOVCA9ICdcXHgwMic7IC8vIEMwOiBTdGFydCBvZiBUZXh0XG4vKiogVW5leHBlY3RlZCBlbmQgb2YgZmxvdy1tb2RlICovXG5jb25zdCBGTE9XX0VORCA9ICdcXHgxOCc7IC8vIEMwOiBDYW5jZWxcbi8qKiBOZXh0IHRva2VuIGlzIGEgc2NhbGFyIHZhbHVlICovXG5jb25zdCBTQ0FMQVIgPSAnXFx4MWYnOyAvLyBDMDogVW5pdCBTZXBhcmF0b3Jcbi8qKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYHRva2VuYCBpcyBhIGZsb3cgb3IgYmxvY2sgY29sbGVjdGlvbiAqL1xuY29uc3QgaXNDb2xsZWN0aW9uID0gKHRva2VuKSA9PiAhIXRva2VuICYmICdpdGVtcycgaW4gdG9rZW47XG4vKiogQHJldHVybnMgYHRydWVgIGlmIGB0b2tlbmAgaXMgYSBmbG93IG9yIGJsb2NrIHNjYWxhcjsgbm90IGFuIGFsaWFzICovXG5jb25zdCBpc1NjYWxhciA9ICh0b2tlbikgPT4gISF0b2tlbiAmJlxuICAgICh0b2tlbi50eXBlID09PSAnc2NhbGFyJyB8fFxuICAgICAgICB0b2tlbi50eXBlID09PSAnc2luZ2xlLXF1b3RlZC1zY2FsYXInIHx8XG4gICAgICAgIHRva2VuLnR5cGUgPT09ICdkb3VibGUtcXVvdGVkLXNjYWxhcicgfHxcbiAgICAgICAgdG9rZW4udHlwZSA9PT0gJ2Jsb2NrLXNjYWxhcicpO1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbi8qKiBHZXQgYSBwcmludGFibGUgcmVwcmVzZW50YXRpb24gb2YgYSBsZXhlciB0b2tlbiAqL1xuZnVuY3Rpb24gcHJldHR5VG9rZW4odG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgQk9NOlxuICAgICAgICAgICAgcmV0dXJuICc8Qk9NPic7XG4gICAgICAgIGNhc2UgRE9DVU1FTlQ6XG4gICAgICAgICAgICByZXR1cm4gJzxET0M+JztcbiAgICAgICAgY2FzZSBGTE9XX0VORDpcbiAgICAgICAgICAgIHJldHVybiAnPEZMT1dfRU5EPic7XG4gICAgICAgIGNhc2UgU0NBTEFSOlxuICAgICAgICAgICAgcmV0dXJuICc8U0NBTEFSPic7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodG9rZW4pO1xuICAgIH1cbn1cbi8qKiBJZGVudGlmeSB0aGUgdHlwZSBvZiBhIGxleGVyIHRva2VuLiBNYXkgcmV0dXJuIGBudWxsYCBmb3IgdW5rbm93biB0b2tlbnMuICovXG5mdW5jdGlvbiB0b2tlblR5cGUoc291cmNlKSB7XG4gICAgc3dpdGNoIChzb3VyY2UpIHtcbiAgICAgICAgY2FzZSBCT006XG4gICAgICAgICAgICByZXR1cm4gJ2J5dGUtb3JkZXItbWFyayc7XG4gICAgICAgIGNhc2UgRE9DVU1FTlQ6XG4gICAgICAgICAgICByZXR1cm4gJ2RvYy1tb2RlJztcbiAgICAgICAgY2FzZSBGTE9XX0VORDpcbiAgICAgICAgICAgIHJldHVybiAnZmxvdy1lcnJvci1lbmQnO1xuICAgICAgICBjYXNlIFNDQUxBUjpcbiAgICAgICAgICAgIHJldHVybiAnc2NhbGFyJztcbiAgICAgICAgY2FzZSAnLS0tJzpcbiAgICAgICAgICAgIHJldHVybiAnZG9jLXN0YXJ0JztcbiAgICAgICAgY2FzZSAnLi4uJzpcbiAgICAgICAgICAgIHJldHVybiAnZG9jLWVuZCc7XG4gICAgICAgIGNhc2UgJyc6XG4gICAgICAgIGNhc2UgJ1xcbic6XG4gICAgICAgIGNhc2UgJ1xcclxcbic6XG4gICAgICAgICAgICByZXR1cm4gJ25ld2xpbmUnO1xuICAgICAgICBjYXNlICctJzpcbiAgICAgICAgICAgIHJldHVybiAnc2VxLWl0ZW0taW5kJztcbiAgICAgICAgY2FzZSAnPyc6XG4gICAgICAgICAgICByZXR1cm4gJ2V4cGxpY2l0LWtleS1pbmQnO1xuICAgICAgICBjYXNlICc6JzpcbiAgICAgICAgICAgIHJldHVybiAnbWFwLXZhbHVlLWluZCc7XG4gICAgICAgIGNhc2UgJ3snOlxuICAgICAgICAgICAgcmV0dXJuICdmbG93LW1hcC1zdGFydCc7XG4gICAgICAgIGNhc2UgJ30nOlxuICAgICAgICAgICAgcmV0dXJuICdmbG93LW1hcC1lbmQnO1xuICAgICAgICBjYXNlICdbJzpcbiAgICAgICAgICAgIHJldHVybiAnZmxvdy1zZXEtc3RhcnQnO1xuICAgICAgICBjYXNlICddJzpcbiAgICAgICAgICAgIHJldHVybiAnZmxvdy1zZXEtZW5kJztcbiAgICAgICAgY2FzZSAnLCc6XG4gICAgICAgICAgICByZXR1cm4gJ2NvbW1hJztcbiAgICB9XG4gICAgc3dpdGNoIChzb3VyY2VbMF0pIHtcbiAgICAgICAgY2FzZSAnICc6XG4gICAgICAgIGNhc2UgJ1xcdCc6XG4gICAgICAgICAgICByZXR1cm4gJ3NwYWNlJztcbiAgICAgICAgY2FzZSAnIyc6XG4gICAgICAgICAgICByZXR1cm4gJ2NvbW1lbnQnO1xuICAgICAgICBjYXNlICclJzpcbiAgICAgICAgICAgIHJldHVybiAnZGlyZWN0aXZlLWxpbmUnO1xuICAgICAgICBjYXNlICcqJzpcbiAgICAgICAgICAgIHJldHVybiAnYWxpYXMnO1xuICAgICAgICBjYXNlICcmJzpcbiAgICAgICAgICAgIHJldHVybiAnYW5jaG9yJztcbiAgICAgICAgY2FzZSAnISc6XG4gICAgICAgICAgICByZXR1cm4gJ3RhZyc7XG4gICAgICAgIGNhc2UgXCInXCI6XG4gICAgICAgICAgICByZXR1cm4gJ3NpbmdsZS1xdW90ZWQtc2NhbGFyJztcbiAgICAgICAgY2FzZSAnXCInOlxuICAgICAgICAgICAgcmV0dXJuICdkb3VibGUtcXVvdGVkLXNjYWxhcic7XG4gICAgICAgIGNhc2UgJ3wnOlxuICAgICAgICBjYXNlICc+JzpcbiAgICAgICAgICAgIHJldHVybiAnYmxvY2stc2NhbGFyLWhlYWRlcic7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgeyBCT00sIERPQ1VNRU5ULCBGTE9XX0VORCwgU0NBTEFSLCBpc0NvbGxlY3Rpb24sIGlzU2NhbGFyLCBwcmV0dHlUb2tlbiwgdG9rZW5UeXBlIH07XG4iLCJpbXBvcnQgeyBCT00sIERPQ1VNRU5ULCBGTE9XX0VORCwgU0NBTEFSIH0gZnJvbSAnLi9jc3QuanMnO1xuXG4vKlxuU1RBUlQgLT4gc3RyZWFtXG5cbnN0cmVhbVxuICBkaXJlY3RpdmUgLT4gbGluZS1lbmQgLT4gc3RyZWFtXG4gIGluZGVudCArIGxpbmUtZW5kIC0+IHN0cmVhbVxuICBbZWxzZV0gLT4gbGluZS1zdGFydFxuXG5saW5lLWVuZFxuICBjb21tZW50IC0+IGxpbmUtZW5kXG4gIG5ld2xpbmUgLT4gLlxuICBpbnB1dC1lbmQgLT4gRU5EXG5cbmxpbmUtc3RhcnRcbiAgZG9jLXN0YXJ0IC0+IGRvY1xuICBkb2MtZW5kIC0+IHN0cmVhbVxuICBbZWxzZV0gLT4gaW5kZW50IC0+IGJsb2NrLXN0YXJ0XG5cbmJsb2NrLXN0YXJ0XG4gIHNlcS1pdGVtLXN0YXJ0IC0+IGJsb2NrLXN0YXJ0XG4gIGV4cGxpY2l0LWtleS1zdGFydCAtPiBibG9jay1zdGFydFxuICBtYXAtdmFsdWUtc3RhcnQgLT4gYmxvY2stc3RhcnRcbiAgW2Vsc2VdIC0+IGRvY1xuXG5kb2NcbiAgbGluZS1lbmQgLT4gbGluZS1zdGFydFxuICBzcGFjZXMgLT4gZG9jXG4gIGFuY2hvciAtPiBkb2NcbiAgdGFnIC0+IGRvY1xuICBmbG93LXN0YXJ0IC0+IGZsb3cgLT4gZG9jXG4gIGZsb3ctZW5kIC0+IGVycm9yIC0+IGRvY1xuICBzZXEtaXRlbS1zdGFydCAtPiBlcnJvciAtPiBkb2NcbiAgZXhwbGljaXQta2V5LXN0YXJ0IC0+IGVycm9yIC0+IGRvY1xuICBtYXAtdmFsdWUtc3RhcnQgLT4gZG9jXG4gIGFsaWFzIC0+IGRvY1xuICBxdW90ZS1zdGFydCAtPiBxdW90ZWQtc2NhbGFyIC0+IGRvY1xuICBibG9jay1zY2FsYXItaGVhZGVyIC0+IGxpbmUtZW5kIC0+IGJsb2NrLXNjYWxhcihtaW4pIC0+IGxpbmUtc3RhcnRcbiAgW2Vsc2VdIC0+IHBsYWluLXNjYWxhcihmYWxzZSwgbWluKSAtPiBkb2NcblxuZmxvd1xuICBsaW5lLWVuZCAtPiBmbG93XG4gIHNwYWNlcyAtPiBmbG93XG4gIGFuY2hvciAtPiBmbG93XG4gIHRhZyAtPiBmbG93XG4gIGZsb3ctc3RhcnQgLT4gZmxvdyAtPiBmbG93XG4gIGZsb3ctZW5kIC0+IC5cbiAgc2VxLWl0ZW0tc3RhcnQgLT4gZXJyb3IgLT4gZmxvd1xuICBleHBsaWNpdC1rZXktc3RhcnQgLT4gZmxvd1xuICBtYXAtdmFsdWUtc3RhcnQgLT4gZmxvd1xuICBhbGlhcyAtPiBmbG93XG4gIHF1b3RlLXN0YXJ0IC0+IHF1b3RlZC1zY2FsYXIgLT4gZmxvd1xuICBjb21tYSAtPiBmbG93XG4gIFtlbHNlXSAtPiBwbGFpbi1zY2FsYXIodHJ1ZSwgMCkgLT4gZmxvd1xuXG5xdW90ZWQtc2NhbGFyXG4gIHF1b3RlLWVuZCAtPiAuXG4gIFtlbHNlXSAtPiBxdW90ZWQtc2NhbGFyXG5cbmJsb2NrLXNjYWxhcihtaW4pXG4gIG5ld2xpbmUgKyBwZWVrKGluZGVudCA8IG1pbikgLT4gLlxuICBbZWxzZV0gLT4gYmxvY2stc2NhbGFyKG1pbilcblxucGxhaW4tc2NhbGFyKGlzLWZsb3csIG1pbilcbiAgc2NhbGFyLWVuZChpcy1mbG93KSAtPiAuXG4gIHBlZWsobmV3bGluZSArIChpbmRlbnQgPCBtaW4pKSAtPiAuXG4gIFtlbHNlXSAtPiBwbGFpbi1zY2FsYXIobWluKVxuKi9cbmZ1bmN0aW9uIGlzRW1wdHkoY2gpIHtcbiAgICBzd2l0Y2ggKGNoKSB7XG4gICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgY2FzZSAnXFxuJzpcbiAgICAgICAgY2FzZSAnXFxyJzpcbiAgICAgICAgY2FzZSAnXFx0JzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmNvbnN0IGhleERpZ2l0cyA9ICcwMTIzNDU2Nzg5QUJDREVGYWJjZGVmJy5zcGxpdCgnJyk7XG5jb25zdCB0YWdDaGFycyA9IFwiMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXotIzsvPzpAJj0rJF8uIX4qJygpXCIuc3BsaXQoJycpO1xuY29uc3QgaW52YWxpZEZsb3dTY2FsYXJDaGFycyA9ICcsW117fScuc3BsaXQoJycpO1xuY29uc3QgaW52YWxpZEFuY2hvckNoYXJzID0gJyAsW117fVxcblxcclxcdCcuc3BsaXQoJycpO1xuY29uc3QgaXNOb3RBbmNob3JDaGFyID0gKGNoKSA9PiAhY2ggfHwgaW52YWxpZEFuY2hvckNoYXJzLmluY2x1ZGVzKGNoKTtcbi8qKlxuICogU3BsaXRzIGFuIGlucHV0IHN0cmluZyBpbnRvIGxleGljYWwgdG9rZW5zLCBpLmUuIHNtYWxsZXIgc3RyaW5ncyB0aGF0IGFyZVxuICogZWFzaWx5IGlkZW50aWZpYWJsZSBieSBgdG9rZW5zLnRva2VuVHlwZSgpYC5cbiAqXG4gKiBMZXhpbmcgc3RhcnRzIGFsd2F5cyBpbiBhIFwic3RyZWFtXCIgY29udGV4dC4gSW5jb21wbGV0ZSBpbnB1dCBtYXkgYmUgYnVmZmVyZWRcbiAqIHVudGlsIGEgY29tcGxldGUgdG9rZW4gY2FuIGJlIGVtaXR0ZWQuXG4gKlxuICogSW4gYWRkaXRpb24gdG8gc2xpY2VzIG9mIHRoZSBvcmlnaW5hbCBpbnB1dCwgdGhlIGZvbGxvd2luZyBjb250cm9sIGNoYXJhY3RlcnNcbiAqIG1heSBhbHNvIGJlIGVtaXR0ZWQ6XG4gKlxuICogLSBgXFx4MDJgIChTdGFydCBvZiBUZXh0KTogQSBkb2N1bWVudCBzdGFydHMgd2l0aCB0aGUgbmV4dCB0b2tlblxuICogLSBgXFx4MThgIChDYW5jZWwpOiBVbmV4cGVjdGVkIGVuZCBvZiBmbG93LW1vZGUgKGluZGljYXRlcyBhbiBlcnJvcilcbiAqIC0gYFxceDFmYCAoVW5pdCBTZXBhcmF0b3IpOiBOZXh0IHRva2VuIGlzIGEgc2NhbGFyIHZhbHVlXG4gKiAtIGBcXHV7RkVGRn1gIChCeXRlIG9yZGVyIG1hcmspOiBFbWl0dGVkIHNlcGFyYXRlbHkgb3V0c2lkZSBkb2N1bWVudHNcbiAqL1xuY2xhc3MgTGV4ZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvKipcbiAgICAgICAgICogRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBidWZmZXIgbWFya3MgdGhlIGVuZCBvZlxuICAgICAgICAgKiBhbGwgaW5wdXRcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuYXRFbmQgPSBmYWxzZTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEV4cGxpY2l0IGluZGVudCBzZXQgaW4gYmxvY2sgc2NhbGFyIGhlYWRlciwgYXMgYW4gb2Zmc2V0IGZyb20gdGhlIGN1cnJlbnRcbiAgICAgICAgICogbWluaW11bSBpbmRlbnQsIHNvIGUuZy4gc2V0IHRvIDEgZnJvbSBhIGhlYWRlciBgfDIrYC4gU2V0IHRvIC0xIGlmIG5vdFxuICAgICAgICAgKiBleHBsaWNpdGx5IHNldC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuYmxvY2tTY2FsYXJJbmRlbnQgPSAtMTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJsb2NrIHNjYWxhcnMgdGhhdCBpbmNsdWRlIGEgKyAoa2VlcCkgY2hvbXBpbmcgaW5kaWNhdG9yIGluIHRoZWlyIGhlYWRlclxuICAgICAgICAgKiBpbmNsdWRlIHRyYWlsaW5nIGVtcHR5IGxpbmVzLCB3aGljaCBhcmUgb3RoZXJ3aXNlIGV4Y2x1ZGVkIGZyb20gdGhlXG4gICAgICAgICAqIHNjYWxhcidzIGNvbnRlbnRzLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5ibG9ja1NjYWxhcktlZXAgPSBmYWxzZTtcbiAgICAgICAgLyoqIEN1cnJlbnQgaW5wdXQgKi9cbiAgICAgICAgdGhpcy5idWZmZXIgPSAnJztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZsYWcgbm90aW5nIHdoZXRoZXIgdGhlIG1hcCB2YWx1ZSBpbmRpY2F0b3IgOiBjYW4gaW1tZWRpYXRlbHkgZm9sbG93IHRoaXNcbiAgICAgICAgICogbm9kZSB3aXRoaW4gYSBmbG93IGNvbnRleHQuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmZsb3dLZXkgPSBmYWxzZTtcbiAgICAgICAgLyoqIENvdW50IG9mIHN1cnJvdW5kaW5nIGZsb3cgY29sbGVjdGlvbiBsZXZlbHMuICovXG4gICAgICAgIHRoaXMuZmxvd0xldmVsID0gMDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE1pbmltdW0gbGV2ZWwgb2YgaW5kZW50YXRpb24gcmVxdWlyZWQgZm9yIG5leHQgbGluZXMgdG8gYmUgcGFyc2VkIGFzIGFcbiAgICAgICAgICogcGFydCBvZiB0aGUgY3VycmVudCBzY2FsYXIgdmFsdWUuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmluZGVudE5leHQgPSAwO1xuICAgICAgICAvKiogSW5kZW50YXRpb24gbGV2ZWwgb2YgdGhlIGN1cnJlbnQgbGluZS4gKi9cbiAgICAgICAgdGhpcy5pbmRlbnRWYWx1ZSA9IDA7XG4gICAgICAgIC8qKiBQb3NpdGlvbiBvZiB0aGUgbmV4dCBcXG4gY2hhcmFjdGVyLiAqL1xuICAgICAgICB0aGlzLmxpbmVFbmRQb3MgPSBudWxsO1xuICAgICAgICAvKiogU3RvcmVzIHRoZSBzdGF0ZSBvZiB0aGUgbGV4ZXIgaWYgcmVhY2hpbmcgdGhlIGVuZCBvZiBpbmNwb21wbGV0ZSBpbnB1dCAqL1xuICAgICAgICB0aGlzLm5leHQgPSBudWxsO1xuICAgICAgICAvKiogQSBwb2ludGVyIHRvIGBidWZmZXJgOyB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUgbGV4ZXIuICovXG4gICAgICAgIHRoaXMucG9zID0gMDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2VuZXJhdGUgWUFNTCB0b2tlbnMgZnJvbSB0aGUgYHNvdXJjZWAgc3RyaW5nLiBJZiBgaW5jb21wbGV0ZWAsXG4gICAgICogYSBwYXJ0IG9mIHRoZSBsYXN0IGxpbmUgbWF5IGJlIGxlZnQgYXMgYSBidWZmZXIgZm9yIHRoZSBuZXh0IGNhbGwuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBIGdlbmVyYXRvciBvZiBsZXhpY2FsIHRva2Vuc1xuICAgICAqL1xuICAgICpsZXgoc291cmNlLCBpbmNvbXBsZXRlID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICAgICAgdGhpcy5idWZmZXIgPSB0aGlzLmJ1ZmZlciA/IHRoaXMuYnVmZmVyICsgc291cmNlIDogc291cmNlO1xuICAgICAgICAgICAgdGhpcy5saW5lRW5kUG9zID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmF0RW5kID0gIWluY29tcGxldGU7XG4gICAgICAgIGxldCBuZXh0ID0gdGhpcy5uZXh0IHx8ICdzdHJlYW0nO1xuICAgICAgICB3aGlsZSAobmV4dCAmJiAoaW5jb21wbGV0ZSB8fCB0aGlzLmhhc0NoYXJzKDEpKSlcbiAgICAgICAgICAgIG5leHQgPSB5aWVsZCogdGhpcy5wYXJzZU5leHQobmV4dCk7XG4gICAgfVxuICAgIGF0TGluZUVuZCgpIHtcbiAgICAgICAgbGV0IGkgPSB0aGlzLnBvcztcbiAgICAgICAgbGV0IGNoID0gdGhpcy5idWZmZXJbaV07XG4gICAgICAgIHdoaWxlIChjaCA9PT0gJyAnIHx8IGNoID09PSAnXFx0JylcbiAgICAgICAgICAgIGNoID0gdGhpcy5idWZmZXJbKytpXTtcbiAgICAgICAgaWYgKCFjaCB8fCBjaCA9PT0gJyMnIHx8IGNoID09PSAnXFxuJylcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAoY2ggPT09ICdcXHInKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyW2kgKyAxXSA9PT0gJ1xcbic7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY2hhckF0KG4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyW3RoaXMucG9zICsgbl07XG4gICAgfVxuICAgIGNvbnRpbnVlU2NhbGFyKG9mZnNldCkge1xuICAgICAgICBsZXQgY2ggPSB0aGlzLmJ1ZmZlcltvZmZzZXRdO1xuICAgICAgICBpZiAodGhpcy5pbmRlbnROZXh0ID4gMCkge1xuICAgICAgICAgICAgbGV0IGluZGVudCA9IDA7XG4gICAgICAgICAgICB3aGlsZSAoY2ggPT09ICcgJylcbiAgICAgICAgICAgICAgICBjaCA9IHRoaXMuYnVmZmVyWysraW5kZW50ICsgb2Zmc2V0XTtcbiAgICAgICAgICAgIGlmIChjaCA9PT0gJ1xccicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gdGhpcy5idWZmZXJbaW5kZW50ICsgb2Zmc2V0ICsgMV07XG4gICAgICAgICAgICAgICAgaWYgKG5leHQgPT09ICdcXG4nIHx8ICghbmV4dCAmJiAhdGhpcy5hdEVuZCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZmZzZXQgKyBpbmRlbnQgKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNoID09PSAnXFxuJyB8fCBpbmRlbnQgPj0gdGhpcy5pbmRlbnROZXh0IHx8ICghY2ggJiYgIXRoaXMuYXRFbmQpXG4gICAgICAgICAgICAgICAgPyBvZmZzZXQgKyBpbmRlbnRcbiAgICAgICAgICAgICAgICA6IC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaCA9PT0gJy0nIHx8IGNoID09PSAnLicpIHtcbiAgICAgICAgICAgIGNvbnN0IGR0ID0gdGhpcy5idWZmZXIuc3Vic3RyKG9mZnNldCwgMyk7XG4gICAgICAgICAgICBpZiAoKGR0ID09PSAnLS0tJyB8fCBkdCA9PT0gJy4uLicpICYmIGlzRW1wdHkodGhpcy5idWZmZXJbb2Zmc2V0ICsgM10pKVxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgIH1cbiAgICBnZXRMaW5lKCkge1xuICAgICAgICBsZXQgZW5kID0gdGhpcy5saW5lRW5kUG9zO1xuICAgICAgICBpZiAodHlwZW9mIGVuZCAhPT0gJ251bWJlcicgfHwgKGVuZCAhPT0gLTEgJiYgZW5kIDwgdGhpcy5wb3MpKSB7XG4gICAgICAgICAgICBlbmQgPSB0aGlzLmJ1ZmZlci5pbmRleE9mKCdcXG4nLCB0aGlzLnBvcyk7XG4gICAgICAgICAgICB0aGlzLmxpbmVFbmRQb3MgPSBlbmQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZCA9PT0gLTEpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hdEVuZCA/IHRoaXMuYnVmZmVyLnN1YnN0cmluZyh0aGlzLnBvcykgOiBudWxsO1xuICAgICAgICBpZiAodGhpcy5idWZmZXJbZW5kIC0gMV0gPT09ICdcXHInKVxuICAgICAgICAgICAgZW5kIC09IDE7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci5zdWJzdHJpbmcodGhpcy5wb3MsIGVuZCk7XG4gICAgfVxuICAgIGhhc0NoYXJzKG4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zICsgbiA8PSB0aGlzLmJ1ZmZlci5sZW5ndGg7XG4gICAgfVxuICAgIHNldE5leHQoc3RhdGUpIHtcbiAgICAgICAgdGhpcy5idWZmZXIgPSB0aGlzLmJ1ZmZlci5zdWJzdHJpbmcodGhpcy5wb3MpO1xuICAgICAgICB0aGlzLnBvcyA9IDA7XG4gICAgICAgIHRoaXMubGluZUVuZFBvcyA9IG51bGw7XG4gICAgICAgIHRoaXMubmV4dCA9IHN0YXRlO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcGVlayhuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci5zdWJzdHIodGhpcy5wb3MsIG4pO1xuICAgIH1cbiAgICAqcGFyc2VOZXh0KG5leHQpIHtcbiAgICAgICAgc3dpdGNoIChuZXh0KSB7XG4gICAgICAgICAgICBjYXNlICdzdHJlYW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZVN0cmVhbSgpO1xuICAgICAgICAgICAgY2FzZSAnbGluZS1zdGFydCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlTGluZVN0YXJ0KCk7XG4gICAgICAgICAgICBjYXNlICdibG9jay1zdGFydCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlQmxvY2tTdGFydCgpO1xuICAgICAgICAgICAgY2FzZSAnZG9jJzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VEb2N1bWVudCgpO1xuICAgICAgICAgICAgY2FzZSAnZmxvdyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlRmxvd0NvbGxlY3Rpb24oKTtcbiAgICAgICAgICAgIGNhc2UgJ3F1b3RlZC1zY2FsYXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZVF1b3RlZFNjYWxhcigpO1xuICAgICAgICAgICAgY2FzZSAnYmxvY2stc2NhbGFyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VCbG9ja1NjYWxhcigpO1xuICAgICAgICAgICAgY2FzZSAncGxhaW4tc2NhbGFyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VQbGFpblNjYWxhcigpO1xuICAgICAgICB9XG4gICAgfVxuICAgICpwYXJzZVN0cmVhbSgpIHtcbiAgICAgICAgbGV0IGxpbmUgPSB0aGlzLmdldExpbmUoKTtcbiAgICAgICAgaWYgKGxpbmUgPT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXROZXh0KCdzdHJlYW0nKTtcbiAgICAgICAgaWYgKGxpbmVbMF0gPT09IEJPTSkge1xuICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaENvdW50KDEpO1xuICAgICAgICAgICAgbGluZSA9IGxpbmUuc3Vic3RyaW5nKDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaW5lWzBdID09PSAnJScpIHtcbiAgICAgICAgICAgIGxldCBkaXJFbmQgPSBsaW5lLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IGNzID0gbGluZS5pbmRleE9mKCcjJyk7XG4gICAgICAgICAgICBpZiAoY3MgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2ggPSBsaW5lW2NzIC0gMV07XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAnICcgfHwgY2ggPT09ICdcXHQnKVxuICAgICAgICAgICAgICAgICAgICBkaXJFbmQgPSBjcyAtIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoID0gbGluZVtkaXJFbmQgLSAxXTtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICcgJyB8fCBjaCA9PT0gJ1xcdCcpXG4gICAgICAgICAgICAgICAgICAgIGRpckVuZCAtPSAxO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBuID0gKHlpZWxkKiB0aGlzLnB1c2hDb3VudChkaXJFbmQpKSArICh5aWVsZCogdGhpcy5wdXNoU3BhY2VzKHRydWUpKTtcbiAgICAgICAgICAgIHlpZWxkKiB0aGlzLnB1c2hDb3VudChsaW5lLmxlbmd0aCAtIG4pOyAvLyBwb3NzaWJsZSBjb21tZW50XG4gICAgICAgICAgICB0aGlzLnB1c2hOZXdsaW5lKCk7XG4gICAgICAgICAgICByZXR1cm4gJ3N0cmVhbSc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYXRMaW5lRW5kKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNwID0geWllbGQqIHRoaXMucHVzaFNwYWNlcyh0cnVlKTtcbiAgICAgICAgICAgIHlpZWxkKiB0aGlzLnB1c2hDb3VudChsaW5lLmxlbmd0aCAtIHNwKTtcbiAgICAgICAgICAgIHlpZWxkKiB0aGlzLnB1c2hOZXdsaW5lKCk7XG4gICAgICAgICAgICByZXR1cm4gJ3N0cmVhbSc7XG4gICAgICAgIH1cbiAgICAgICAgeWllbGQgRE9DVU1FTlQ7XG4gICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZUxpbmVTdGFydCgpO1xuICAgIH1cbiAgICAqcGFyc2VMaW5lU3RhcnQoKSB7XG4gICAgICAgIGNvbnN0IGNoID0gdGhpcy5jaGFyQXQoMCk7XG4gICAgICAgIGlmICghY2ggJiYgIXRoaXMuYXRFbmQpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXROZXh0KCdsaW5lLXN0YXJ0Jyk7XG4gICAgICAgIGlmIChjaCA9PT0gJy0nIHx8IGNoID09PSAnLicpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5hdEVuZCAmJiAhdGhpcy5oYXNDaGFycyg0KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXROZXh0KCdsaW5lLXN0YXJ0Jyk7XG4gICAgICAgICAgICBjb25zdCBzID0gdGhpcy5wZWVrKDMpO1xuICAgICAgICAgICAgaWYgKHMgPT09ICctLS0nICYmIGlzRW1wdHkodGhpcy5jaGFyQXQoMykpKSB7XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaENvdW50KDMpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZW50VmFsdWUgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZW50TmV4dCA9IDA7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkb2MnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocyA9PT0gJy4uLicgJiYgaXNFbXB0eSh0aGlzLmNoYXJBdCgzKSkpIHtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQoMyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzdHJlYW0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5kZW50VmFsdWUgPSB5aWVsZCogdGhpcy5wdXNoU3BhY2VzKGZhbHNlKTtcbiAgICAgICAgaWYgKHRoaXMuaW5kZW50TmV4dCA+IHRoaXMuaW5kZW50VmFsdWUgJiYgIWlzRW1wdHkodGhpcy5jaGFyQXQoMSkpKVxuICAgICAgICAgICAgdGhpcy5pbmRlbnROZXh0ID0gdGhpcy5pbmRlbnRWYWx1ZTtcbiAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlQmxvY2tTdGFydCgpO1xuICAgIH1cbiAgICAqcGFyc2VCbG9ja1N0YXJ0KCkge1xuICAgICAgICBjb25zdCBbY2gwLCBjaDFdID0gdGhpcy5wZWVrKDIpO1xuICAgICAgICBpZiAoIWNoMSAmJiAhdGhpcy5hdEVuZClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldE5leHQoJ2Jsb2NrLXN0YXJ0Jyk7XG4gICAgICAgIGlmICgoY2gwID09PSAnLScgfHwgY2gwID09PSAnPycgfHwgY2gwID09PSAnOicpICYmIGlzRW1wdHkoY2gxKSkge1xuICAgICAgICAgICAgY29uc3QgbiA9ICh5aWVsZCogdGhpcy5wdXNoQ291bnQoMSkpICsgKHlpZWxkKiB0aGlzLnB1c2hTcGFjZXModHJ1ZSkpO1xuICAgICAgICAgICAgdGhpcy5pbmRlbnROZXh0ID0gdGhpcy5pbmRlbnRWYWx1ZSArIDE7XG4gICAgICAgICAgICB0aGlzLmluZGVudFZhbHVlICs9IG47XG4gICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VCbG9ja1N0YXJ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICdkb2MnO1xuICAgIH1cbiAgICAqcGFyc2VEb2N1bWVudCgpIHtcbiAgICAgICAgeWllbGQqIHRoaXMucHVzaFNwYWNlcyh0cnVlKTtcbiAgICAgICAgY29uc3QgbGluZSA9IHRoaXMuZ2V0TGluZSgpO1xuICAgICAgICBpZiAobGluZSA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldE5leHQoJ2RvYycpO1xuICAgICAgICBsZXQgbiA9IHlpZWxkKiB0aGlzLnB1c2hJbmRpY2F0b3JzKCk7XG4gICAgICAgIHN3aXRjaCAobGluZVtuXSkge1xuICAgICAgICAgICAgY2FzZSAnIyc6XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaENvdW50KGxpbmUubGVuZ3RoIC0gbik7XG4gICAgICAgICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaE5ld2xpbmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VMaW5lU3RhcnQoKTtcbiAgICAgICAgICAgIGNhc2UgJ3snOlxuICAgICAgICAgICAgY2FzZSAnWyc6XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaENvdW50KDEpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmxvd0tleSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuZmxvd0xldmVsID0gMTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Zsb3cnO1xuICAgICAgICAgICAgY2FzZSAnfSc6XG4gICAgICAgICAgICBjYXNlICddJzpcbiAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGFuIGVycm9yXG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaENvdW50KDEpO1xuICAgICAgICAgICAgICAgIHJldHVybiAnZG9jJztcbiAgICAgICAgICAgIGNhc2UgJyonOlxuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnB1c2hVbnRpbChpc05vdEFuY2hvckNoYXIpO1xuICAgICAgICAgICAgICAgIHJldHVybiAnZG9jJztcbiAgICAgICAgICAgIGNhc2UgJ1wiJzpcbiAgICAgICAgICAgIGNhc2UgXCInXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlUXVvdGVkU2NhbGFyKCk7XG4gICAgICAgICAgICBjYXNlICd8JzpcbiAgICAgICAgICAgIGNhc2UgJz4nOlxuICAgICAgICAgICAgICAgIG4gKz0geWllbGQqIHRoaXMucGFyc2VCbG9ja1NjYWxhckhlYWRlcigpO1xuICAgICAgICAgICAgICAgIG4gKz0geWllbGQqIHRoaXMucHVzaFNwYWNlcyh0cnVlKTtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQobGluZS5sZW5ndGggLSBuKTtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoTmV3bGluZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZUJsb2NrU2NhbGFyKCk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZVBsYWluU2NhbGFyKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKnBhcnNlRmxvd0NvbGxlY3Rpb24oKSB7XG4gICAgICAgIGxldCBubCwgc3A7XG4gICAgICAgIGxldCBpbmRlbnQgPSAtMTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgbmwgPSB5aWVsZCogdGhpcy5wdXNoTmV3bGluZSgpO1xuICAgICAgICAgICAgc3AgPSB5aWVsZCogdGhpcy5wdXNoU3BhY2VzKHRydWUpO1xuICAgICAgICAgICAgaWYgKG5sID4gMClcbiAgICAgICAgICAgICAgICB0aGlzLmluZGVudFZhbHVlID0gaW5kZW50ID0gc3A7XG4gICAgICAgIH0gd2hpbGUgKG5sICsgc3AgPiAwKTtcbiAgICAgICAgY29uc3QgbGluZSA9IHRoaXMuZ2V0TGluZSgpO1xuICAgICAgICBpZiAobGluZSA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldE5leHQoJ2Zsb3cnKTtcbiAgICAgICAgaWYgKChpbmRlbnQgIT09IC0xICYmIGluZGVudCA8IHRoaXMuaW5kZW50TmV4dCAmJiBsaW5lWzBdICE9PSAnIycpIHx8XG4gICAgICAgICAgICAoaW5kZW50ID09PSAwICYmXG4gICAgICAgICAgICAgICAgKGxpbmUuc3RhcnRzV2l0aCgnLS0tJykgfHwgbGluZS5zdGFydHNXaXRoKCcuLi4nKSkgJiZcbiAgICAgICAgICAgICAgICBpc0VtcHR5KGxpbmVbM10pKSkge1xuICAgICAgICAgICAgLy8gQWxsb3dpbmcgZm9yIHRoZSB0ZXJtaW5hbCBdIG9yIH0gYXQgdGhlIHNhbWUgKHJhdGhlciB0aGFuIGdyZWF0ZXIpXG4gICAgICAgICAgICAvLyBpbmRlbnQgbGV2ZWwgYXMgdGhlIGluaXRpYWwgWyBvciB7IGlzIHRlY2huaWNhbGx5IGludmFsaWQsIGJ1dFxuICAgICAgICAgICAgLy8gZmFpbGluZyBoZXJlIHdvdWxkIGJlIHN1cnByaXNpbmcgdG8gdXNlcnMuXG4gICAgICAgICAgICBjb25zdCBhdEZsb3dFbmRNYXJrZXIgPSBpbmRlbnQgPT09IHRoaXMuaW5kZW50TmV4dCAtIDEgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmZsb3dMZXZlbCA9PT0gMSAmJlxuICAgICAgICAgICAgICAgIChsaW5lWzBdID09PSAnXScgfHwgbGluZVswXSA9PT0gJ30nKTtcbiAgICAgICAgICAgIGlmICghYXRGbG93RW5kTWFya2VyKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBhbiBlcnJvclxuICAgICAgICAgICAgICAgIHRoaXMuZmxvd0xldmVsID0gMDtcbiAgICAgICAgICAgICAgICB5aWVsZCBGTE9XX0VORDtcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VMaW5lU3RhcnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgbiA9IDA7XG4gICAgICAgIHdoaWxlIChsaW5lW25dID09PSAnLCcpIHtcbiAgICAgICAgICAgIG4gKz0geWllbGQqIHRoaXMucHVzaENvdW50KDEpO1xuICAgICAgICAgICAgbiArPSB5aWVsZCogdGhpcy5wdXNoU3BhY2VzKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgbiArPSB5aWVsZCogdGhpcy5wdXNoSW5kaWNhdG9ycygpO1xuICAgICAgICBzd2l0Y2ggKGxpbmVbbl0pIHtcbiAgICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZmxvdyc7XG4gICAgICAgICAgICBjYXNlICcjJzpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQobGluZS5sZW5ndGggLSBuKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Zsb3cnO1xuICAgICAgICAgICAgY2FzZSAneyc6XG4gICAgICAgICAgICBjYXNlICdbJzpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQoMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5mbG93TGV2ZWwgKz0gMTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Zsb3cnO1xuICAgICAgICAgICAgY2FzZSAnfSc6XG4gICAgICAgICAgICBjYXNlICddJzpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQoMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZsb3dMZXZlbCAtPSAxO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZsb3dMZXZlbCA/ICdmbG93JyA6ICdkb2MnO1xuICAgICAgICAgICAgY2FzZSAnKic6XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaFVudGlsKGlzTm90QW5jaG9yQ2hhcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdmbG93JztcbiAgICAgICAgICAgIGNhc2UgJ1wiJzpcbiAgICAgICAgICAgIGNhc2UgXCInXCI6XG4gICAgICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VRdW90ZWRTY2FsYXIoKTtcbiAgICAgICAgICAgIGNhc2UgJzonOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IHRoaXMuY2hhckF0KDEpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZsb3dLZXkgfHwgaXNFbXB0eShuZXh0KSB8fCBuZXh0ID09PSAnLCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnB1c2hDb3VudCgxKTtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaFNwYWNlcyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdmbG93JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLmZsb3dLZXkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VQbGFpblNjYWxhcigpO1xuICAgICAgICB9XG4gICAgfVxuICAgICpwYXJzZVF1b3RlZFNjYWxhcigpIHtcbiAgICAgICAgY29uc3QgcXVvdGUgPSB0aGlzLmNoYXJBdCgwKTtcbiAgICAgICAgbGV0IGVuZCA9IHRoaXMuYnVmZmVyLmluZGV4T2YocXVvdGUsIHRoaXMucG9zICsgMSk7XG4gICAgICAgIGlmIChxdW90ZSA9PT0gXCInXCIpIHtcbiAgICAgICAgICAgIHdoaWxlIChlbmQgIT09IC0xICYmIHRoaXMuYnVmZmVyW2VuZCArIDFdID09PSBcIidcIilcbiAgICAgICAgICAgICAgICBlbmQgPSB0aGlzLmJ1ZmZlci5pbmRleE9mKFwiJ1wiLCBlbmQgKyAyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGRvdWJsZS1xdW90ZVxuICAgICAgICAgICAgd2hpbGUgKGVuZCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBsZXQgbiA9IDA7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHRoaXMuYnVmZmVyW2VuZCAtIDEgLSBuXSA9PT0gJ1xcXFwnKVxuICAgICAgICAgICAgICAgICAgICBuICs9IDE7XG4gICAgICAgICAgICAgICAgaWYgKG4gJSAyID09PSAwKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBlbmQgPSB0aGlzLmJ1ZmZlci5pbmRleE9mKCdcIicsIGVuZCArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIE9ubHkgbG9va2luZyBmb3IgbmV3bGluZXMgd2l0aGluIHRoZSBxdW90ZXNcbiAgICAgICAgY29uc3QgcWIgPSB0aGlzLmJ1ZmZlci5zdWJzdHJpbmcoMCwgZW5kKTtcbiAgICAgICAgbGV0IG5sID0gcWIuaW5kZXhPZignXFxuJywgdGhpcy5wb3MpO1xuICAgICAgICBpZiAobmwgIT09IC0xKSB7XG4gICAgICAgICAgICB3aGlsZSAobmwgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3MgPSB0aGlzLmNvbnRpbnVlU2NhbGFyKG5sICsgMSk7XG4gICAgICAgICAgICAgICAgaWYgKGNzID09PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgbmwgPSBxYi5pbmRleE9mKCdcXG4nLCBjcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmwgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBhbiBlcnJvciBjYXVzZWQgYnkgYW4gdW5leHBlY3RlZCB1bmluZGVudFxuICAgICAgICAgICAgICAgIGVuZCA9IG5sIC0gKHFiW25sIC0gMV0gPT09ICdcXHInID8gMiA6IDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYXRFbmQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0TmV4dCgncXVvdGVkLXNjYWxhcicpO1xuICAgICAgICAgICAgZW5kID0gdGhpcy5idWZmZXIubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHlpZWxkKiB0aGlzLnB1c2hUb0luZGV4KGVuZCArIDEsIGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmxvd0xldmVsID8gJ2Zsb3cnIDogJ2RvYyc7XG4gICAgfVxuICAgICpwYXJzZUJsb2NrU2NhbGFySGVhZGVyKCkge1xuICAgICAgICB0aGlzLmJsb2NrU2NhbGFySW5kZW50ID0gLTE7XG4gICAgICAgIHRoaXMuYmxvY2tTY2FsYXJLZWVwID0gZmFsc2U7XG4gICAgICAgIGxldCBpID0gdGhpcy5wb3M7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBjb25zdCBjaCA9IHRoaXMuYnVmZmVyWysraV07XG4gICAgICAgICAgICBpZiAoY2ggPT09ICcrJylcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2NrU2NhbGFyS2VlcCA9IHRydWU7XG4gICAgICAgICAgICBlbHNlIGlmIChjaCA+ICcwJyAmJiBjaCA8PSAnOScpXG4gICAgICAgICAgICAgICAgdGhpcy5ibG9ja1NjYWxhckluZGVudCA9IE51bWJlcihjaCkgLSAxO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2ggIT09ICctJylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucHVzaFVudGlsKGNoID0+IGlzRW1wdHkoY2gpIHx8IGNoID09PSAnIycpO1xuICAgIH1cbiAgICAqcGFyc2VCbG9ja1NjYWxhcigpIHtcbiAgICAgICAgbGV0IG5sID0gdGhpcy5wb3MgLSAxOyAvLyBtYXkgYmUgLTEgaWYgdGhpcy5wb3MgPT09IDBcbiAgICAgICAgbGV0IGluZGVudCA9IDA7XG4gICAgICAgIGxldCBjaDtcbiAgICAgICAgbG9vcDogZm9yIChsZXQgaSA9IHRoaXMucG9zOyAoY2ggPSB0aGlzLmJ1ZmZlcltpXSk7ICsraSkge1xuICAgICAgICAgICAgc3dpdGNoIChjaCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJyAnOlxuICAgICAgICAgICAgICAgICAgICBpbmRlbnQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnXFxuJzpcbiAgICAgICAgICAgICAgICAgICAgbmwgPSBpO1xuICAgICAgICAgICAgICAgICAgICBpbmRlbnQgPSAwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdcXHInOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSB0aGlzLmJ1ZmZlcltpICsgMV07XG4gICAgICAgICAgICAgICAgICAgIGlmICghbmV4dCAmJiAhdGhpcy5hdEVuZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldE5leHQoJ2Jsb2NrLXNjYWxhcicpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCA9PT0gJ1xcbicpXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9IC8vIGZhbGx0aHJvdWdoXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWsgbG9vcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNoICYmICF0aGlzLmF0RW5kKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0TmV4dCgnYmxvY2stc2NhbGFyJyk7XG4gICAgICAgIGlmIChpbmRlbnQgPj0gdGhpcy5pbmRlbnROZXh0KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5ibG9ja1NjYWxhckluZGVudCA9PT0gLTEpXG4gICAgICAgICAgICAgICAgdGhpcy5pbmRlbnROZXh0ID0gaW5kZW50O1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRoaXMuaW5kZW50TmV4dCArPSB0aGlzLmJsb2NrU2NhbGFySW5kZW50O1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNzID0gdGhpcy5jb250aW51ZVNjYWxhcihubCArIDEpO1xuICAgICAgICAgICAgICAgIGlmIChjcyA9PT0gLTEpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIG5sID0gdGhpcy5idWZmZXIuaW5kZXhPZignXFxuJywgY3MpO1xuICAgICAgICAgICAgfSB3aGlsZSAobmwgIT09IC0xKTtcbiAgICAgICAgICAgIGlmIChubCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuYXRFbmQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldE5leHQoJ2Jsb2NrLXNjYWxhcicpO1xuICAgICAgICAgICAgICAgIG5sID0gdGhpcy5idWZmZXIubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5ibG9ja1NjYWxhcktlZXApIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBsZXQgaSA9IG5sIC0gMTtcbiAgICAgICAgICAgICAgICBsZXQgY2ggPSB0aGlzLmJ1ZmZlcltpXTtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICdcXHInKVxuICAgICAgICAgICAgICAgICAgICBjaCA9IHRoaXMuYnVmZmVyWy0taV07XG4gICAgICAgICAgICAgICAgd2hpbGUgKGNoID09PSAnICcgfHwgY2ggPT09ICdcXHQnKVxuICAgICAgICAgICAgICAgICAgICBjaCA9IHRoaXMuYnVmZmVyWy0taV07XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAnXFxuJyAmJiBpID49IHRoaXMucG9zKVxuICAgICAgICAgICAgICAgICAgICBubCA9IGk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gd2hpbGUgKHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHlpZWxkIFNDQUxBUjtcbiAgICAgICAgeWllbGQqIHRoaXMucHVzaFRvSW5kZXgobmwgKyAxLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlTGluZVN0YXJ0KCk7XG4gICAgfVxuICAgICpwYXJzZVBsYWluU2NhbGFyKCkge1xuICAgICAgICBjb25zdCBpbkZsb3cgPSB0aGlzLmZsb3dMZXZlbCA+IDA7XG4gICAgICAgIGxldCBlbmQgPSB0aGlzLnBvcyAtIDE7XG4gICAgICAgIGxldCBpID0gdGhpcy5wb3MgLSAxO1xuICAgICAgICBsZXQgY2g7XG4gICAgICAgIHdoaWxlICgoY2ggPSB0aGlzLmJ1ZmZlclsrK2ldKSkge1xuICAgICAgICAgICAgaWYgKGNoID09PSAnOicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gdGhpcy5idWZmZXJbaSArIDFdO1xuICAgICAgICAgICAgICAgIGlmIChpc0VtcHR5KG5leHQpIHx8IChpbkZsb3cgJiYgbmV4dCA9PT0gJywnKSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZW5kID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzRW1wdHkoY2gpKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5leHQgPSB0aGlzLmJ1ZmZlcltpICsgMV07XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAnXFxyJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0ID0gdGhpcy5idWZmZXJbaSArIDFdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9IGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChuZXh0ID09PSAnIycgfHwgKGluRmxvdyAmJiBpbnZhbGlkRmxvd1NjYWxhckNoYXJzLmluY2x1ZGVzKG5leHQpKSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAnXFxuJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjcyA9IHRoaXMuY29udGludWVTY2FsYXIoaSArIDEpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3MgPT09IC0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGkgPSBNYXRoLm1heChpLCBjcyAtIDIpOyAvLyB0byBhZHZhbmNlLCBidXQgc3RpbGwgYWNjb3VudCBmb3IgJyAjJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChpbkZsb3cgJiYgaW52YWxpZEZsb3dTY2FsYXJDaGFycy5pbmNsdWRlcyhjaCkpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGVuZCA9IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjaCAmJiAhdGhpcy5hdEVuZClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldE5leHQoJ3BsYWluLXNjYWxhcicpO1xuICAgICAgICB5aWVsZCBTQ0FMQVI7XG4gICAgICAgIHlpZWxkKiB0aGlzLnB1c2hUb0luZGV4KGVuZCArIDEsIHRydWUpO1xuICAgICAgICByZXR1cm4gaW5GbG93ID8gJ2Zsb3cnIDogJ2RvYyc7XG4gICAgfVxuICAgICpwdXNoQ291bnQobikge1xuICAgICAgICBpZiAobiA+IDApIHtcbiAgICAgICAgICAgIHlpZWxkIHRoaXMuYnVmZmVyLnN1YnN0cih0aGlzLnBvcywgbik7XG4gICAgICAgICAgICB0aGlzLnBvcyArPSBuO1xuICAgICAgICAgICAgcmV0dXJuIG47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgICpwdXNoVG9JbmRleChpLCBhbGxvd0VtcHR5KSB7XG4gICAgICAgIGNvbnN0IHMgPSB0aGlzLmJ1ZmZlci5zbGljZSh0aGlzLnBvcywgaSk7XG4gICAgICAgIGlmIChzKSB7XG4gICAgICAgICAgICB5aWVsZCBzO1xuICAgICAgICAgICAgdGhpcy5wb3MgKz0gcy5sZW5ndGg7XG4gICAgICAgICAgICByZXR1cm4gcy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYWxsb3dFbXB0eSlcbiAgICAgICAgICAgIHlpZWxkICcnO1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgKnB1c2hJbmRpY2F0b3JzKCkge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuY2hhckF0KDApKSB7XG4gICAgICAgICAgICBjYXNlICchJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKCh5aWVsZCogdGhpcy5wdXNoVGFnKCkpICtcbiAgICAgICAgICAgICAgICAgICAgKHlpZWxkKiB0aGlzLnB1c2hTcGFjZXModHJ1ZSkpICtcbiAgICAgICAgICAgICAgICAgICAgKHlpZWxkKiB0aGlzLnB1c2hJbmRpY2F0b3JzKCkpKTtcbiAgICAgICAgICAgIGNhc2UgJyYnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoKHlpZWxkKiB0aGlzLnB1c2hVbnRpbChpc05vdEFuY2hvckNoYXIpKSArXG4gICAgICAgICAgICAgICAgICAgICh5aWVsZCogdGhpcy5wdXNoU3BhY2VzKHRydWUpKSArXG4gICAgICAgICAgICAgICAgICAgICh5aWVsZCogdGhpcy5wdXNoSW5kaWNhdG9ycygpKSk7XG4gICAgICAgICAgICBjYXNlICc6JzpcbiAgICAgICAgICAgIGNhc2UgJz8nOiAvLyB0aGlzIGlzIGFuIGVycm9yIG91dHNpZGUgZmxvdyBjb2xsZWN0aW9uc1xuICAgICAgICAgICAgY2FzZSAnLSc6IC8vIHRoaXMgaXMgYW4gZXJyb3JcbiAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eSh0aGlzLmNoYXJBdCgxKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmxvd0xldmVsID09PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRlbnROZXh0ID0gdGhpcy5pbmRlbnRWYWx1ZSArIDE7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZmxvd0tleSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmxvd0tleSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCh5aWVsZCogdGhpcy5wdXNoQ291bnQoMSkpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICh5aWVsZCogdGhpcy5wdXNoU3BhY2VzKHRydWUpKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAoeWllbGQqIHRoaXMucHVzaEluZGljYXRvcnMoKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgKnB1c2hUYWcoKSB7XG4gICAgICAgIGlmICh0aGlzLmNoYXJBdCgxKSA9PT0gJzwnKSB7XG4gICAgICAgICAgICBsZXQgaSA9IHRoaXMucG9zICsgMjtcbiAgICAgICAgICAgIGxldCBjaCA9IHRoaXMuYnVmZmVyW2ldO1xuICAgICAgICAgICAgd2hpbGUgKCFpc0VtcHR5KGNoKSAmJiBjaCAhPT0gJz4nKVxuICAgICAgICAgICAgICAgIGNoID0gdGhpcy5idWZmZXJbKytpXTtcbiAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wdXNoVG9JbmRleChjaCA9PT0gJz4nID8gaSArIDEgOiBpLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgaSA9IHRoaXMucG9zICsgMTtcbiAgICAgICAgICAgIGxldCBjaCA9IHRoaXMuYnVmZmVyW2ldO1xuICAgICAgICAgICAgd2hpbGUgKGNoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhZ0NoYXJzLmluY2x1ZGVzKGNoKSlcbiAgICAgICAgICAgICAgICAgICAgY2ggPSB0aGlzLmJ1ZmZlclsrK2ldO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoID09PSAnJScgJiZcbiAgICAgICAgICAgICAgICAgICAgaGV4RGlnaXRzLmluY2x1ZGVzKHRoaXMuYnVmZmVyW2kgKyAxXSkgJiZcbiAgICAgICAgICAgICAgICAgICAgaGV4RGlnaXRzLmluY2x1ZGVzKHRoaXMuYnVmZmVyW2kgKyAyXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2ggPSB0aGlzLmJ1ZmZlclsoaSArPSAzKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucHVzaFRvSW5kZXgoaSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgICpwdXNoTmV3bGluZSgpIHtcbiAgICAgICAgY29uc3QgY2ggPSB0aGlzLmJ1ZmZlclt0aGlzLnBvc107XG4gICAgICAgIGlmIChjaCA9PT0gJ1xcbicpXG4gICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucHVzaENvdW50KDEpO1xuICAgICAgICBlbHNlIGlmIChjaCA9PT0gJ1xccicgJiYgdGhpcy5jaGFyQXQoMSkgPT09ICdcXG4nKVxuICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnB1c2hDb3VudCgyKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgICpwdXNoU3BhY2VzKGFsbG93VGFicykge1xuICAgICAgICBsZXQgaSA9IHRoaXMucG9zIC0gMTtcbiAgICAgICAgbGV0IGNoO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICBjaCA9IHRoaXMuYnVmZmVyWysraV07XG4gICAgICAgIH0gd2hpbGUgKGNoID09PSAnICcgfHwgKGFsbG93VGFicyAmJiBjaCA9PT0gJ1xcdCcpKTtcbiAgICAgICAgY29uc3QgbiA9IGkgLSB0aGlzLnBvcztcbiAgICAgICAgaWYgKG4gPiAwKSB7XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmJ1ZmZlci5zdWJzdHIodGhpcy5wb3MsIG4pO1xuICAgICAgICAgICAgdGhpcy5wb3MgPSBpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuO1xuICAgIH1cbiAgICAqcHVzaFVudGlsKHRlc3QpIHtcbiAgICAgICAgbGV0IGkgPSB0aGlzLnBvcztcbiAgICAgICAgbGV0IGNoID0gdGhpcy5idWZmZXJbaV07XG4gICAgICAgIHdoaWxlICghdGVzdChjaCkpXG4gICAgICAgICAgICBjaCA9IHRoaXMuYnVmZmVyWysraV07XG4gICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wdXNoVG9JbmRleChpLCBmYWxzZSk7XG4gICAgfVxufVxuXG5leHBvcnQgeyBMZXhlciB9O1xuIiwiLyoqXG4gKiBUcmFja3MgbmV3bGluZXMgZHVyaW5nIHBhcnNpbmcgaW4gb3JkZXIgdG8gcHJvdmlkZSBhbiBlZmZpY2llbnQgQVBJIGZvclxuICogZGV0ZXJtaW5pbmcgdGhlIG9uZS1pbmRleGVkIGB7IGxpbmUsIGNvbCB9YCBwb3NpdGlvbiBmb3IgYW55IG9mZnNldFxuICogd2l0aGluIHRoZSBpbnB1dC5cbiAqL1xuY2xhc3MgTGluZUNvdW50ZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxpbmVTdGFydHMgPSBbXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNob3VsZCBiZSBjYWxsZWQgaW4gYXNjZW5kaW5nIG9yZGVyLiBPdGhlcndpc2UsIGNhbGxcbiAgICAgICAgICogYGxpbmVDb3VudGVyLmxpbmVTdGFydHMuc29ydCgpYCBiZWZvcmUgY2FsbGluZyBgbGluZVBvcygpYC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuYWRkTmV3TGluZSA9IChvZmZzZXQpID0+IHRoaXMubGluZVN0YXJ0cy5wdXNoKG9mZnNldCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQZXJmb3JtcyBhIGJpbmFyeSBzZWFyY2ggYW5kIHJldHVybnMgdGhlIDEtaW5kZXhlZCB7IGxpbmUsIGNvbCB9XG4gICAgICAgICAqIHBvc2l0aW9uIG9mIGBvZmZzZXRgLiBJZiBgbGluZSA9PT0gMGAsIGBhZGROZXdMaW5lYCBoYXMgbmV2ZXIgYmVlblxuICAgICAgICAgKiBjYWxsZWQgb3IgYG9mZnNldGAgaXMgYmVmb3JlIHRoZSBmaXJzdCBrbm93biBuZXdsaW5lLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5saW5lUG9zID0gKG9mZnNldCkgPT4ge1xuICAgICAgICAgICAgbGV0IGxvdyA9IDA7XG4gICAgICAgICAgICBsZXQgaGlnaCA9IHRoaXMubGluZVN0YXJ0cy5sZW5ndGg7XG4gICAgICAgICAgICB3aGlsZSAobG93IDwgaGlnaCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pZCA9IChsb3cgKyBoaWdoKSA+PiAxOyAvLyBNYXRoLmZsb29yKChsb3cgKyBoaWdoKSAvIDIpXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGluZVN0YXJ0c1ttaWRdIDwgb2Zmc2V0KVxuICAgICAgICAgICAgICAgICAgICBsb3cgPSBtaWQgKyAxO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgaGlnaCA9IG1pZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmxpbmVTdGFydHNbbG93XSA9PT0gb2Zmc2V0KVxuICAgICAgICAgICAgICAgIHJldHVybiB7IGxpbmU6IGxvdyArIDEsIGNvbDogMSB9O1xuICAgICAgICAgICAgaWYgKGxvdyA9PT0gMClcbiAgICAgICAgICAgICAgICByZXR1cm4geyBsaW5lOiAwLCBjb2w6IG9mZnNldCB9O1xuICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLmxpbmVTdGFydHNbbG93IC0gMV07XG4gICAgICAgICAgICByZXR1cm4geyBsaW5lOiBsb3csIGNvbDogb2Zmc2V0IC0gc3RhcnQgKyAxIH07XG4gICAgICAgIH07XG4gICAgfVxufVxuXG5leHBvcnQgeyBMaW5lQ291bnRlciB9O1xuIiwiaW1wb3J0IHsgdG9rZW5UeXBlIH0gZnJvbSAnLi9jc3QuanMnO1xuaW1wb3J0IHsgTGV4ZXIgfSBmcm9tICcuL2xleGVyLmpzJztcblxuZnVuY3Rpb24gaW5jbHVkZXNUb2tlbihsaXN0LCB0eXBlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKVxuICAgICAgICBpZiAobGlzdFtpXS50eXBlID09PSB0eXBlKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gaW5jbHVkZXNOb25FbXB0eShsaXN0KSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHN3aXRjaCAobGlzdFtpXS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ25ld2xpbmUnOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBpc0Zsb3dUb2tlbih0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4gPT09IG51bGwgfHwgdG9rZW4gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRva2VuLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnYWxpYXMnOlxuICAgICAgICBjYXNlICdzY2FsYXInOlxuICAgICAgICBjYXNlICdzaW5nbGUtcXVvdGVkLXNjYWxhcic6XG4gICAgICAgIGNhc2UgJ2RvdWJsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgY2FzZSAnZmxvdy1jb2xsZWN0aW9uJzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGdldFByZXZQcm9wcyhwYXJlbnQpIHtcbiAgICBzd2l0Y2ggKHBhcmVudC50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2RvY3VtZW50JzpcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnQuc3RhcnQ7XG4gICAgICAgIGNhc2UgJ2Jsb2NrLW1hcCc6IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ID0gcGFyZW50Lml0ZW1zW3BhcmVudC5pdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIHJldHVybiBpdC5zZXAgfHwgaXQuc3RhcnQ7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnYmxvY2stc2VxJzpcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnQuaXRlbXNbcGFyZW50Lml0ZW1zLmxlbmd0aCAtIDFdLnN0YXJ0O1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCBzaG91bGQgbm90IGhhcHBlbiAqL1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbn1cbi8qKiBOb3RlOiBNYXkgbW9kaWZ5IGlucHV0IGFycmF5ICovXG5mdW5jdGlvbiBnZXRGaXJzdEtleVN0YXJ0UHJvcHMocHJldikge1xuICAgIHZhciBfYTtcbiAgICBpZiAocHJldi5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiBbXTtcbiAgICBsZXQgaSA9IHByZXYubGVuZ3RoO1xuICAgIGxvb3A6IHdoaWxlICgtLWkgPj0gMCkge1xuICAgICAgICBzd2l0Y2ggKHByZXZbaV0udHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZG9jLXN0YXJ0JzpcbiAgICAgICAgICAgIGNhc2UgJ2V4cGxpY2l0LWtleS1pbmQnOlxuICAgICAgICAgICAgY2FzZSAnbWFwLXZhbHVlLWluZCc6XG4gICAgICAgICAgICBjYXNlICdzZXEtaXRlbS1pbmQnOlxuICAgICAgICAgICAgY2FzZSAnbmV3bGluZSc6XG4gICAgICAgICAgICAgICAgYnJlYWsgbG9vcDtcbiAgICAgICAgfVxuICAgIH1cbiAgICB3aGlsZSAoKChfYSA9IHByZXZbKytpXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnR5cGUpID09PSAnc3BhY2UnKSB7XG4gICAgICAgIC8qIGxvb3AgKi9cbiAgICB9XG4gICAgcmV0dXJuIHByZXYuc3BsaWNlKGksIHByZXYubGVuZ3RoKTtcbn1cbmZ1bmN0aW9uIGZpeEZsb3dTZXFJdGVtcyhmYykge1xuICAgIGlmIChmYy5zdGFydC50eXBlID09PSAnZmxvdy1zZXEtc3RhcnQnKSB7XG4gICAgICAgIGZvciAoY29uc3QgaXQgb2YgZmMuaXRlbXMpIHtcbiAgICAgICAgICAgIGlmIChpdC5zZXAgJiZcbiAgICAgICAgICAgICAgICAhaXQudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAhaW5jbHVkZXNUb2tlbihpdC5zdGFydCwgJ2V4cGxpY2l0LWtleS1pbmQnKSAmJlxuICAgICAgICAgICAgICAgICFpbmNsdWRlc1Rva2VuKGl0LnNlcCwgJ21hcC12YWx1ZS1pbmQnKSkge1xuICAgICAgICAgICAgICAgIGlmIChpdC5rZXkpXG4gICAgICAgICAgICAgICAgICAgIGl0LnZhbHVlID0gaXQua2V5O1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBpdC5rZXk7XG4gICAgICAgICAgICAgICAgaWYgKGlzRmxvd1Rva2VuKGl0LnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXQudmFsdWUuZW5kKVxuICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoaXQudmFsdWUuZW5kLCBpdC5zZXApO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBpdC52YWx1ZS5lbmQgPSBpdC5zZXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoaXQuc3RhcnQsIGl0LnNlcCk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGl0LnNlcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbi8qKlxuICogQSBZQU1MIGNvbmNyZXRlIHN5bnRheCB0cmVlIChDU1QpIHBhcnNlclxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBzcmM6IHN0cmluZyA9IC4uLlxuICogZm9yIChjb25zdCB0b2tlbiBvZiBuZXcgUGFyc2VyKCkucGFyc2Uoc3JjKSkge1xuICogICAvLyB0b2tlbjogVG9rZW5cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRvIHVzZSB0aGUgcGFyc2VyIHdpdGggYSB1c2VyLXByb3ZpZGVkIGxleGVyOlxuICpcbiAqIGBgYHRzXG4gKiBmdW5jdGlvbiogcGFyc2Uoc291cmNlOiBzdHJpbmcsIGxleGVyOiBMZXhlcikge1xuICogICBjb25zdCBwYXJzZXIgPSBuZXcgUGFyc2VyKClcbiAqICAgZm9yIChjb25zdCBsZXhlbWUgb2YgbGV4ZXIubGV4KHNvdXJjZSkpXG4gKiAgICAgeWllbGQqIHBhcnNlci5uZXh0KGxleGVtZSlcbiAqICAgeWllbGQqIHBhcnNlci5lbmQoKVxuICogfVxuICpcbiAqIGNvbnN0IHNyYzogc3RyaW5nID0gLi4uXG4gKiBjb25zdCBsZXhlciA9IG5ldyBMZXhlcigpXG4gKiBmb3IgKGNvbnN0IHRva2VuIG9mIHBhcnNlKHNyYywgbGV4ZXIpKSB7XG4gKiAgIC8vIHRva2VuOiBUb2tlblxuICogfVxuICogYGBgXG4gKi9cbmNsYXNzIFBhcnNlciB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIG9uTmV3TGluZSAtIElmIGRlZmluZWQsIGNhbGxlZCBzZXBhcmF0ZWx5IHdpdGggdGhlIHN0YXJ0IHBvc2l0aW9uIG9mXG4gICAgICogICBlYWNoIG5ldyBsaW5lIChpbiBgcGFyc2UoKWAsIGluY2x1ZGluZyB0aGUgc3RhcnQgb2YgaW5wdXQpLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9uTmV3TGluZSkge1xuICAgICAgICAvKiogSWYgdHJ1ZSwgc3BhY2UgYW5kIHNlcXVlbmNlIGluZGljYXRvcnMgY291bnQgYXMgaW5kZW50YXRpb24gKi9cbiAgICAgICAgdGhpcy5hdE5ld0xpbmUgPSB0cnVlO1xuICAgICAgICAvKiogSWYgdHJ1ZSwgbmV4dCB0b2tlbiBpcyBhIHNjYWxhciB2YWx1ZSAqL1xuICAgICAgICB0aGlzLmF0U2NhbGFyID0gZmFsc2U7XG4gICAgICAgIC8qKiBDdXJyZW50IGluZGVudGF0aW9uIGxldmVsICovXG4gICAgICAgIHRoaXMuaW5kZW50ID0gMDtcbiAgICAgICAgLyoqIEN1cnJlbnQgb2Zmc2V0IHNpbmNlIHRoZSBzdGFydCBvZiBwYXJzaW5nICovXG4gICAgICAgIHRoaXMub2Zmc2V0ID0gMDtcbiAgICAgICAgLyoqIE9uIHRoZSBzYW1lIGxpbmUgd2l0aCBhIGJsb2NrIG1hcCBrZXkgKi9cbiAgICAgICAgdGhpcy5vbktleUxpbmUgPSBmYWxzZTtcbiAgICAgICAgLyoqIFRvcCBpbmRpY2F0ZXMgdGhlIG5vZGUgdGhhdCdzIGN1cnJlbnRseSBiZWluZyBidWlsdCAqL1xuICAgICAgICB0aGlzLnN0YWNrID0gW107XG4gICAgICAgIC8qKiBUaGUgc291cmNlIG9mIHRoZSBjdXJyZW50IHRva2VuLCBzZXQgaW4gcGFyc2UoKSAqL1xuICAgICAgICB0aGlzLnNvdXJjZSA9ICcnO1xuICAgICAgICAvKiogVGhlIHR5cGUgb2YgdGhlIGN1cnJlbnQgdG9rZW4sIHNldCBpbiBwYXJzZSgpICovXG4gICAgICAgIHRoaXMudHlwZSA9ICcnO1xuICAgICAgICAvLyBNdXN0IGJlIGRlZmluZWQgYWZ0ZXIgYG5leHQoKWBcbiAgICAgICAgdGhpcy5sZXhlciA9IG5ldyBMZXhlcigpO1xuICAgICAgICB0aGlzLm9uTmV3TGluZSA9IG9uTmV3TGluZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUGFyc2UgYHNvdXJjZWAgYXMgYSBZQU1MIHN0cmVhbS5cbiAgICAgKiBJZiBgaW5jb21wbGV0ZWAsIGEgcGFydCBvZiB0aGUgbGFzdCBsaW5lIG1heSBiZSBsZWZ0IGFzIGEgYnVmZmVyIGZvciB0aGUgbmV4dCBjYWxsLlxuICAgICAqXG4gICAgICogRXJyb3JzIGFyZSBub3QgdGhyb3duLCBidXQgeWllbGRlZCBhcyBgeyB0eXBlOiAnZXJyb3InLCBtZXNzYWdlIH1gIHRva2Vucy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEEgZ2VuZXJhdG9yIG9mIHRva2VucyByZXByZXNlbnRpbmcgZWFjaCBkaXJlY3RpdmUsIGRvY3VtZW50LCBhbmQgb3RoZXIgc3RydWN0dXJlLlxuICAgICAqL1xuICAgICpwYXJzZShzb3VyY2UsIGluY29tcGxldGUgPSBmYWxzZSkge1xuICAgICAgICBpZiAodGhpcy5vbk5ld0xpbmUgJiYgdGhpcy5vZmZzZXQgPT09IDApXG4gICAgICAgICAgICB0aGlzLm9uTmV3TGluZSgwKTtcbiAgICAgICAgZm9yIChjb25zdCBsZXhlbWUgb2YgdGhpcy5sZXhlci5sZXgoc291cmNlLCBpbmNvbXBsZXRlKSlcbiAgICAgICAgICAgIHlpZWxkKiB0aGlzLm5leHQobGV4ZW1lKTtcbiAgICAgICAgaWYgKCFpbmNvbXBsZXRlKVxuICAgICAgICAgICAgeWllbGQqIHRoaXMuZW5kKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFkdmFuY2UgdGhlIHBhcnNlciBieSB0aGUgYHNvdXJjZWAgb2Ygb25lIGxleGljYWwgdG9rZW4uXG4gICAgICovXG4gICAgKm5leHQoc291cmNlKSB7XG4gICAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgICAgICBpZiAodGhpcy5hdFNjYWxhcikge1xuICAgICAgICAgICAgdGhpcy5hdFNjYWxhciA9IGZhbHNlO1xuICAgICAgICAgICAgeWllbGQqIHRoaXMuc3RlcCgpO1xuICAgICAgICAgICAgdGhpcy5vZmZzZXQgKz0gc291cmNlLmxlbmd0aDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0eXBlID0gdG9rZW5UeXBlKHNvdXJjZSk7XG4gICAgICAgIGlmICghdHlwZSkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBOb3QgYSBZQU1MIHRva2VuOiAke3NvdXJjZX1gO1xuICAgICAgICAgICAgeWllbGQqIHRoaXMucG9wKHsgdHlwZTogJ2Vycm9yJywgb2Zmc2V0OiB0aGlzLm9mZnNldCwgbWVzc2FnZSwgc291cmNlIH0pO1xuICAgICAgICAgICAgdGhpcy5vZmZzZXQgKz0gc291cmNlLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlID09PSAnc2NhbGFyJykge1xuICAgICAgICAgICAgdGhpcy5hdE5ld0xpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuYXRTY2FsYXIgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy50eXBlID0gJ3NjYWxhcic7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICAgICAgeWllbGQqIHRoaXMuc3RlcCgpO1xuICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnbmV3bGluZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXROZXdMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRlbnQgPSAwO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vbk5ld0xpbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTmV3TGluZSh0aGlzLm9mZnNldCArIHNvdXJjZS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmF0TmV3TGluZSAmJiBzb3VyY2VbMF0gPT09ICcgJylcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZW50ICs9IHNvdXJjZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2V4cGxpY2l0LWtleS1pbmQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ21hcC12YWx1ZS1pbmQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3NlcS1pdGVtLWluZCc6XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmF0TmV3TGluZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZW50ICs9IHNvdXJjZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2RvYy1tb2RlJzpcbiAgICAgICAgICAgICAgICBjYXNlICdmbG93LWVycm9yLWVuZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vZmZzZXQgKz0gc291cmNlLmxlbmd0aDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogQ2FsbCBhdCBlbmQgb2YgaW5wdXQgdG8gcHVzaCBvdXQgYW55IHJlbWFpbmluZyBjb25zdHJ1Y3Rpb25zICovXG4gICAgKmVuZCgpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMuc3RhY2subGVuZ3RoID4gMClcbiAgICAgICAgICAgIHlpZWxkKiB0aGlzLnBvcCgpO1xuICAgIH1cbiAgICBnZXQgc291cmNlVG9rZW4oKSB7XG4gICAgICAgIGNvbnN0IHN0ID0ge1xuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICBzb3VyY2U6IHRoaXMuc291cmNlXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBzdDtcbiAgICB9XG4gICAgKnN0ZXAoKSB7XG4gICAgICAgIGNvbnN0IHRvcCA9IHRoaXMucGVlaygxKTtcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2RvYy1lbmQnICYmICghdG9wIHx8IHRvcC50eXBlICE9PSAnZG9jLWVuZCcpKSB7XG4gICAgICAgICAgICB3aGlsZSAodGhpcy5zdGFjay5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnBvcCgpO1xuICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZG9jLWVuZCcsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMuc291cmNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRvcClcbiAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5zdHJlYW0oKTtcbiAgICAgICAgc3dpdGNoICh0b3AudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZG9jdW1lbnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5kb2N1bWVudCh0b3ApO1xuICAgICAgICAgICAgY2FzZSAnYWxpYXMnOlxuICAgICAgICAgICAgY2FzZSAnc2NhbGFyJzpcbiAgICAgICAgICAgIGNhc2UgJ3NpbmdsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgICAgIGNhc2UgJ2RvdWJsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMuc2NhbGFyKHRvcCk7XG4gICAgICAgICAgICBjYXNlICdibG9jay1zY2FsYXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5ibG9ja1NjYWxhcih0b3ApO1xuICAgICAgICAgICAgY2FzZSAnYmxvY2stbWFwJzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMuYmxvY2tNYXAodG9wKTtcbiAgICAgICAgICAgIGNhc2UgJ2Jsb2NrLXNlcSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLmJsb2NrU2VxdWVuY2UodG9wKTtcbiAgICAgICAgICAgIGNhc2UgJ2Zsb3ctY29sbGVjdGlvbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLmZsb3dDb2xsZWN0aW9uKHRvcCk7XG4gICAgICAgICAgICBjYXNlICdkb2MtZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMuZG9jdW1lbnRFbmQodG9wKTtcbiAgICAgICAgfVxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCBzaG91bGQgbm90IGhhcHBlbiAqL1xuICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICB9XG4gICAgcGVlayhuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gbl07XG4gICAgfVxuICAgICpwb3AoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSBlcnJvciB8fCB0aGlzLnN0YWNrLnBvcCgpO1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgc2hvdWxkIG5vdCBoYXBwZW4gKi9cbiAgICAgICAgaWYgKCF0b2tlbikge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9ICdUcmllZCB0byBwb3AgYW4gZW1wdHkgc3RhY2snO1xuICAgICAgICAgICAgeWllbGQgeyB0eXBlOiAnZXJyb3InLCBvZmZzZXQ6IHRoaXMub2Zmc2V0LCBzb3VyY2U6ICcnLCBtZXNzYWdlIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5zdGFjay5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHlpZWxkIHRva2VuO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdG9wID0gdGhpcy5wZWVrKDEpO1xuICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09ICdibG9jay1zY2FsYXInKSB7XG4gICAgICAgICAgICAgICAgLy8gQmxvY2sgc2NhbGFycyB1c2UgdGhlaXIgcGFyZW50IHJhdGhlciB0aGFuIGhlYWRlciBpbmRlbnRcbiAgICAgICAgICAgICAgICB0b2tlbi5pbmRlbnQgPSAnaW5kZW50JyBpbiB0b3AgPyB0b3AuaW5kZW50IDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRva2VuLnR5cGUgPT09ICdmbG93LWNvbGxlY3Rpb24nICYmIHRvcC50eXBlID09PSAnZG9jdW1lbnQnKSB7XG4gICAgICAgICAgICAgICAgLy8gSWdub3JlIGFsbCBpbmRlbnQgZm9yIHRvcC1sZXZlbCBmbG93IGNvbGxlY3Rpb25zXG4gICAgICAgICAgICAgICAgdG9rZW4uaW5kZW50ID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0b2tlbi50eXBlID09PSAnZmxvdy1jb2xsZWN0aW9uJylcbiAgICAgICAgICAgICAgICBmaXhGbG93U2VxSXRlbXModG9rZW4pO1xuICAgICAgICAgICAgc3dpdGNoICh0b3AudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2RvY3VtZW50JzpcbiAgICAgICAgICAgICAgICAgICAgdG9wLnZhbHVlID0gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2Jsb2NrLXNjYWxhcic6XG4gICAgICAgICAgICAgICAgICAgIHRvcC5wcm9wcy5wdXNoKHRva2VuKTsgLy8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnYmxvY2stbWFwJzoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdCA9IHRvcC5pdGVtc1t0b3AuaXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9wLml0ZW1zLnB1c2goeyBzdGFydDogW10sIGtleTogdG9rZW4sIHNlcDogW10gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXQuc2VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdC52YWx1ZSA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihpdCwgeyBrZXk6IHRva2VuLCBzZXA6IFtdIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbktleUxpbmUgPSAhaW5jbHVkZXNUb2tlbihpdC5zdGFydCwgJ2V4cGxpY2l0LWtleS1pbmQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAnYmxvY2stc2VxJzoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdCA9IHRvcC5pdGVtc1t0b3AuaXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcC5pdGVtcy5wdXNoKHsgc3RhcnQ6IFtdLCB2YWx1ZTogdG9rZW4gfSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnZhbHVlID0gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdmbG93LWNvbGxlY3Rpb24nOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ID0gdG9wLml0ZW1zW3RvcC5pdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpdCB8fCBpdC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcC5pdGVtcy5wdXNoKHsgc3RhcnQ6IFtdLCBrZXk6IHRva2VuLCBzZXA6IFtdIH0pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpdC5zZXApXG4gICAgICAgICAgICAgICAgICAgICAgICBpdC52YWx1ZSA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGl0LCB7IGtleTogdG9rZW4sIHNlcDogW10gfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgc2hvdWxkIG5vdCBoYXBwZW4gKi9cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucG9wKHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgodG9wLnR5cGUgPT09ICdkb2N1bWVudCcgfHxcbiAgICAgICAgICAgICAgICB0b3AudHlwZSA9PT0gJ2Jsb2NrLW1hcCcgfHxcbiAgICAgICAgICAgICAgICB0b3AudHlwZSA9PT0gJ2Jsb2NrLXNlcScpICYmXG4gICAgICAgICAgICAgICAgKHRva2VuLnR5cGUgPT09ICdibG9jay1tYXAnIHx8IHRva2VuLnR5cGUgPT09ICdibG9jay1zZXEnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3QgPSB0b2tlbi5pdGVtc1t0b2tlbi5pdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBpZiAobGFzdCAmJlxuICAgICAgICAgICAgICAgICAgICAhbGFzdC5zZXAgJiZcbiAgICAgICAgICAgICAgICAgICAgIWxhc3QudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgbGFzdC5zdGFydC5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgICAgICFpbmNsdWRlc05vbkVtcHR5KGxhc3Quc3RhcnQpICYmXG4gICAgICAgICAgICAgICAgICAgICh0b2tlbi5pbmRlbnQgPT09IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Quc3RhcnQuZXZlcnkoc3QgPT4gc3QudHlwZSAhPT0gJ2NvbW1lbnQnIHx8IHN0LmluZGVudCA8IHRva2VuLmluZGVudCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b3AudHlwZSA9PT0gJ2RvY3VtZW50JylcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcC5lbmQgPSBsYXN0LnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3AuaXRlbXMucHVzaCh7IHN0YXJ0OiBsYXN0LnN0YXJ0IH0pO1xuICAgICAgICAgICAgICAgICAgICB0b2tlbi5pdGVtcy5zcGxpY2UoLTEsIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAqc3RyZWFtKCkge1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZGlyZWN0aXZlLWxpbmUnOlxuICAgICAgICAgICAgICAgIHlpZWxkIHsgdHlwZTogJ2RpcmVjdGl2ZScsIG9mZnNldDogdGhpcy5vZmZzZXQsIHNvdXJjZTogdGhpcy5zb3VyY2UgfTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjYXNlICdieXRlLW9yZGVyLW1hcmsnOlxuICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICB5aWVsZCB0aGlzLnNvdXJjZVRva2VuO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgJ2RvYy1tb2RlJzpcbiAgICAgICAgICAgIGNhc2UgJ2RvYy1zdGFydCc6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkb2MgPSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdkb2N1bWVudCcsXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBbXVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2RvYy1zdGFydCcpXG4gICAgICAgICAgICAgICAgICAgIGRvYy5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sucHVzaChkb2MpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB5aWVsZCB7XG4gICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGBVbmV4cGVjdGVkICR7dGhpcy50eXBlfSB0b2tlbiBpbiBZQU1MIHN0cmVhbWAsXG4gICAgICAgICAgICBzb3VyY2U6IHRoaXMuc291cmNlXG4gICAgICAgIH07XG4gICAgfVxuICAgICpkb2N1bWVudChkb2MpIHtcbiAgICAgICAgaWYgKGRvYy52YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5saW5lRW5kKGRvYyk7XG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdkb2Mtc3RhcnQnOiB7XG4gICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVzTm9uRW1wdHkoZG9jLnN0YXJ0KSkge1xuICAgICAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQqIHRoaXMuc3RlcCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGRvYy5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2FuY2hvcic6XG4gICAgICAgICAgICBjYXNlICd0YWcnOlxuICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICBkb2Muc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYnYgPSB0aGlzLnN0YXJ0QmxvY2tWYWx1ZShkb2MpO1xuICAgICAgICBpZiAoYnYpXG4gICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goYnYpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHlpZWxkIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYFVuZXhwZWN0ZWQgJHt0aGlzLnR5cGV9IHRva2VuIGluIFlBTUwgZG9jdW1lbnRgLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgKnNjYWxhcihzY2FsYXIpIHtcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ21hcC12YWx1ZS1pbmQnKSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2ID0gZ2V0UHJldlByb3BzKHRoaXMucGVlaygyKSk7XG4gICAgICAgICAgICBjb25zdCBzdGFydCA9IGdldEZpcnN0S2V5U3RhcnRQcm9wcyhwcmV2KTtcbiAgICAgICAgICAgIGxldCBzZXA7XG4gICAgICAgICAgICBpZiAoc2NhbGFyLmVuZCkge1xuICAgICAgICAgICAgICAgIHNlcCA9IHNjYWxhci5lbmQ7XG4gICAgICAgICAgICAgICAgc2VwLnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHNjYWxhci5lbmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgc2VwID0gW3RoaXMuc291cmNlVG9rZW5dO1xuICAgICAgICAgICAgY29uc3QgbWFwID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdibG9jay1tYXAnLFxuICAgICAgICAgICAgICAgIG9mZnNldDogc2NhbGFyLm9mZnNldCxcbiAgICAgICAgICAgICAgICBpbmRlbnQ6IHNjYWxhci5pbmRlbnQsXG4gICAgICAgICAgICAgICAgaXRlbXM6IFt7IHN0YXJ0LCBrZXk6IHNjYWxhciwgc2VwIH1dXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5vbktleUxpbmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdID0gbWFwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHlpZWxkKiB0aGlzLmxpbmVFbmQoc2NhbGFyKTtcbiAgICB9XG4gICAgKmJsb2NrU2NhbGFyKHNjYWxhcikge1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICBzY2FsYXIucHJvcHMucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjYXNlICdzY2FsYXInOlxuICAgICAgICAgICAgICAgIHNjYWxhci5zb3VyY2UgPSB0aGlzLnNvdXJjZTtcbiAgICAgICAgICAgICAgICAvLyBibG9jay1zY2FsYXIgc291cmNlIGluY2x1ZGVzIHRyYWlsaW5nIG5ld2xpbmVcbiAgICAgICAgICAgICAgICB0aGlzLmF0TmV3TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRlbnQgPSAwO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9uTmV3TGluZSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbmwgPSB0aGlzLnNvdXJjZS5pbmRleE9mKCdcXG4nKSArIDE7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChubCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk5ld0xpbmUodGhpcy5vZmZzZXQgKyBubCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBubCA9IHRoaXMuc291cmNlLmluZGV4T2YoJ1xcbicsIG5sKSArIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucG9wKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCBzaG91bGQgbm90IGhhcHBlbiAqL1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5zdGVwKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKmJsb2NrTWFwKG1hcCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGl0ID0gbWFwLml0ZW1zW21hcC5pdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgLy8gaXQuc2VwIGlzIHRydWUtaXNoIGlmIHBhaXIgYWxyZWFkeSBoYXMga2V5IG9yIDogc2VwYXJhdG9yXG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChpdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmQgPSAnZW5kJyBpbiBpdC52YWx1ZSA/IGl0LnZhbHVlLmVuZCA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdCA9IEFycmF5LmlzQXJyYXkoZW5kKSA/IGVuZFtlbmQubGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICgobGFzdCA9PT0gbnVsbCB8fCBsYXN0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXN0LnR5cGUpID09PSAnY29tbWVudCcpXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQgPT09IG51bGwgfHwgZW5kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbmQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwLml0ZW1zLnB1c2goeyBzdGFydDogW3RoaXMuc291cmNlVG9rZW5dIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpdC5zZXApXG4gICAgICAgICAgICAgICAgICAgIGl0LnNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgaXQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICAgICAgICBpZiAoaXQudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHsgc3RhcnQ6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpdC5zZXApXG4gICAgICAgICAgICAgICAgICAgIGl0LnNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hdEluZGVudGVkQ29tbWVudChpdC5zdGFydCwgbWFwLmluZGVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXYgPSBtYXAuaXRlbXNbbWFwLml0ZW1zLmxlbmd0aCAtIDJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gKF9hID0gcHJldiA9PT0gbnVsbCB8fCBwcmV2ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcmV2LnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZW5kO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZW5kKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGVuZCwgaXQuc3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaXQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmluZGVudCA+PSBtYXAuaW5kZW50KSB7XG4gICAgICAgICAgICBjb25zdCBhdE5leHRJdGVtID0gIXRoaXMub25LZXlMaW5lICYmXG4gICAgICAgICAgICAgICAgdGhpcy5pbmRlbnQgPT09IG1hcC5pbmRlbnQgJiZcbiAgICAgICAgICAgICAgICAoaXQuc2VwIHx8IGluY2x1ZGVzTm9uRW1wdHkoaXQuc3RhcnQpKTtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnYW5jaG9yJzpcbiAgICAgICAgICAgICAgICBjYXNlICd0YWcnOlxuICAgICAgICAgICAgICAgICAgICBpZiAoYXROZXh0SXRlbSB8fCBpdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFwLml0ZW1zLnB1c2goeyBzdGFydDogW3RoaXMuc291cmNlVG9rZW5dIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbktleUxpbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0LnNlcClcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBpdC5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2FzZSAnZXhwbGljaXQta2V5LWluZCc6XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXQuc2VwICYmICFpbmNsdWRlc1Rva2VuKGl0LnN0YXJ0LCAnZXhwbGljaXQta2V5LWluZCcpKVxuICAgICAgICAgICAgICAgICAgICAgICAgaXQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXROZXh0SXRlbSB8fCBpdC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHsgc3RhcnQ6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYmxvY2stbWFwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFt7IHN0YXJ0OiBbdGhpcy5zb3VyY2VUb2tlbl0gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlICdtYXAtdmFsdWUtaW5kJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpdC5zZXApXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGl0LCB7IGtleTogbnVsbCwgc2VwOiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0LnZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoYXROZXh0SXRlbSAmJiAhaW5jbHVkZXNUb2tlbihpdC5zdGFydCwgJ2V4cGxpY2l0LWtleS1pbmQnKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAuaXRlbXMucHVzaCh7IHN0YXJ0OiBbXSwga2V5OiBudWxsLCBzZXA6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5jbHVkZXNUb2tlbihpdC5zZXAsICdtYXAtdmFsdWUtaW5kJykpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdibG9jay1tYXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50OiB0aGlzLmluZGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogW3sgc3RhcnQ6IFtdLCBrZXk6IG51bGwsIHNlcDogW3RoaXMuc291cmNlVG9rZW5dIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5jbHVkZXNUb2tlbihpdC5zdGFydCwgJ2V4cGxpY2l0LWtleS1pbmQnKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaXNGbG93VG9rZW4oaXQua2V5KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIWluY2x1ZGVzVG9rZW4oaXQuc2VwLCAnbmV3bGluZScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IGdldEZpcnN0S2V5U3RhcnRQcm9wcyhpdC5zdGFydCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBpdC5rZXk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXAgPSBpdC5zZXA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgdHlwZSBndWFyZCBpcyB3cm9uZyBoZXJlXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgaXQua2V5LCBkZWxldGUgaXQuc2VwO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYmxvY2stbWFwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFt7IHN0YXJ0LCBrZXksIHNlcCB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgaXQuc2VwLnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25LZXlMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FsaWFzJzpcbiAgICAgICAgICAgICAgICBjYXNlICdzY2FsYXInOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3NpbmdsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkb3VibGUtcXVvdGVkLXNjYWxhcic6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZnMgPSB0aGlzLmZsb3dTY2FsYXIodGhpcy50eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGF0TmV4dEl0ZW0gfHwgaXQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHsgc3RhcnQ6IFtdLCBrZXk6IGZzLCBzZXA6IFtdIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbktleUxpbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0LnNlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKGZzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oaXQsIHsga2V5OiBmcywgc2VwOiBbXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25LZXlMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnYgPSB0aGlzLnN0YXJ0QmxvY2tWYWx1ZShtYXApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYnYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdE5leHRJdGVtICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnYudHlwZSAhPT0gJ2Jsb2NrLXNlcScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlc1Rva2VuKGl0LnN0YXJ0LCAnZXhwbGljaXQta2V5LWluZCcpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHsgc3RhcnQ6IFtdIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKGJ2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgeWllbGQqIHRoaXMuc3RlcCgpO1xuICAgIH1cbiAgICAqYmxvY2tTZXF1ZW5jZShzZXEpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBpdCA9IHNlcS5pdGVtc1tzZXEuaXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICBpZiAoaXQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gJ2VuZCcgaW4gaXQudmFsdWUgPyBpdC52YWx1ZS5lbmQgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3QgPSBBcnJheS5pc0FycmF5KGVuZCkgPyBlbmRbZW5kLmxlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBpZiAoKGxhc3QgPT09IG51bGwgfHwgbGFzdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGFzdC50eXBlKSA9PT0gJ2NvbW1lbnQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kID09PSBudWxsIHx8IGVuZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW5kLnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcS5pdGVtcy5wdXNoKHsgc3RhcnQ6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBpdC5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgICAgIGlmIChpdC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgc2VxLml0ZW1zLnB1c2goeyBzdGFydDogW3RoaXMuc291cmNlVG9rZW5dIH0pO1xuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hdEluZGVudGVkQ29tbWVudChpdC5zdGFydCwgc2VxLmluZGVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXYgPSBzZXEuaXRlbXNbc2VxLml0ZW1zLmxlbmd0aCAtIDJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gKF9hID0gcHJldiA9PT0gbnVsbCB8fCBwcmV2ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcmV2LnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZW5kO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZW5kKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGVuZCwgaXQuc3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcS5pdGVtcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaXQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY2FzZSAnYW5jaG9yJzpcbiAgICAgICAgICAgIGNhc2UgJ3RhZyc6XG4gICAgICAgICAgICAgICAgaWYgKGl0LnZhbHVlIHx8IHRoaXMuaW5kZW50IDw9IHNlcS5pbmRlbnQpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGl0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY2FzZSAnc2VxLWl0ZW0taW5kJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmRlbnQgIT09IHNlcS5pbmRlbnQpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGlmIChpdC52YWx1ZSB8fCBpbmNsdWRlc1Rva2VuKGl0LnN0YXJ0LCAnc2VxLWl0ZW0taW5kJykpXG4gICAgICAgICAgICAgICAgICAgIHNlcS5pdGVtcy5wdXNoKHsgc3RhcnQ6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGl0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmluZGVudCA+IHNlcS5pbmRlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ2ID0gdGhpcy5zdGFydEJsb2NrVmFsdWUoc2VxKTtcbiAgICAgICAgICAgIGlmIChidikge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sucHVzaChidik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHlpZWxkKiB0aGlzLnBvcCgpO1xuICAgICAgICB5aWVsZCogdGhpcy5zdGVwKCk7XG4gICAgfVxuICAgICpmbG93Q29sbGVjdGlvbihmYykge1xuICAgICAgICBjb25zdCBpdCA9IGZjLml0ZW1zW2ZjLml0ZW1zLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnZmxvdy1lcnJvci1lbmQnKSB7XG4gICAgICAgICAgICBsZXQgdG9wO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHRvcCA9IHRoaXMucGVlaygxKTtcbiAgICAgICAgICAgIH0gd2hpbGUgKHRvcCAmJiB0b3AudHlwZSA9PT0gJ2Zsb3ctY29sbGVjdGlvbicpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGZjLmVuZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnY29tbWEnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2V4cGxpY2l0LWtleS1pbmQnOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIWl0IHx8IGl0LnNlcClcbiAgICAgICAgICAgICAgICAgICAgICAgIGZjLml0ZW1zLnB1c2goeyBzdGFydDogW3RoaXMuc291cmNlVG9rZW5dIH0pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBpdC5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2FzZSAnbWFwLXZhbHVlLWluZCc6XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXQgfHwgaXQudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICBmYy5pdGVtcy5wdXNoKHsgc3RhcnQ6IFtdLCBrZXk6IG51bGwsIHNlcDogW3RoaXMuc291cmNlVG9rZW5dIH0pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpdC5zZXApXG4gICAgICAgICAgICAgICAgICAgICAgICBpdC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihpdCwgeyBrZXk6IG51bGwsIHNlcDogW3RoaXMuc291cmNlVG9rZW5dIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ25ld2xpbmUnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2FuY2hvcic6XG4gICAgICAgICAgICAgICAgY2FzZSAndGFnJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpdCB8fCBpdC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGZjLml0ZW1zLnB1c2goeyBzdGFydDogW3RoaXMuc291cmNlVG9rZW5dIH0pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpdC5zZXApXG4gICAgICAgICAgICAgICAgICAgICAgICBpdC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgaXQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FsaWFzJzpcbiAgICAgICAgICAgICAgICBjYXNlICdzY2FsYXInOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3NpbmdsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkb3VibGUtcXVvdGVkLXNjYWxhcic6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZnMgPSB0aGlzLmZsb3dTY2FsYXIodGhpcy50eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpdCB8fCBpdC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGZjLml0ZW1zLnB1c2goeyBzdGFydDogW10sIGtleTogZnMsIHNlcDogW10gfSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0LnNlcClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sucHVzaChmcyk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oaXQsIHsga2V5OiBmcywgc2VwOiBbXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdmbG93LW1hcC1lbmQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zsb3ctc2VxLWVuZCc6XG4gICAgICAgICAgICAgICAgICAgIGZjLmVuZC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBidiA9IHRoaXMuc3RhcnRCbG9ja1ZhbHVlKGZjKTtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlIHNob3VsZCBub3QgaGFwcGVuICovXG4gICAgICAgICAgICBpZiAoYnYpXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKGJ2KTtcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnN0ZXAoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMucGVlaygyKTtcbiAgICAgICAgICAgIGlmIChwYXJlbnQudHlwZSA9PT0gJ2Jsb2NrLW1hcCcgJiZcbiAgICAgICAgICAgICAgICAodGhpcy50eXBlID09PSAnbWFwLXZhbHVlLWluZCcgfHxcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMudHlwZSA9PT0gJ25ld2xpbmUnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhcGFyZW50Lml0ZW1zW3BhcmVudC5pdGVtcy5sZW5ndGggLSAxXS5zZXApKSkge1xuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnN0ZXAoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ21hcC12YWx1ZS1pbmQnICYmXG4gICAgICAgICAgICAgICAgcGFyZW50LnR5cGUgIT09ICdmbG93LWNvbGxlY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IGdldFByZXZQcm9wcyhwYXJlbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Rmlyc3RLZXlTdGFydFByb3BzKHByZXYpO1xuICAgICAgICAgICAgICAgIGZpeEZsb3dTZXFJdGVtcyhmYyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VwID0gZmMuZW5kLnNwbGljZSgxLCBmYy5lbmQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBzZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdibG9jay1tYXAnLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IGZjLm9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgaW5kZW50OiBmYy5pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbeyBzdGFydCwga2V5OiBmYywgc2VwIH1dXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdID0gbWFwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMubGluZUVuZChmYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZmxvd1NjYWxhcih0eXBlKSB7XG4gICAgICAgIGlmICh0aGlzLm9uTmV3TGluZSkge1xuICAgICAgICAgICAgbGV0IG5sID0gdGhpcy5zb3VyY2UuaW5kZXhPZignXFxuJykgKyAxO1xuICAgICAgICAgICAgd2hpbGUgKG5sICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk5ld0xpbmUodGhpcy5vZmZzZXQgKyBubCk7XG4gICAgICAgICAgICAgICAgbmwgPSB0aGlzLnNvdXJjZS5pbmRleE9mKCdcXG4nLCBubCkgKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICBzb3VyY2U6IHRoaXMuc291cmNlXG4gICAgICAgIH07XG4gICAgfVxuICAgIHN0YXJ0QmxvY2tWYWx1ZShwYXJlbnQpIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2FsaWFzJzpcbiAgICAgICAgICAgIGNhc2UgJ3NjYWxhcic6XG4gICAgICAgICAgICBjYXNlICdzaW5nbGUtcXVvdGVkLXNjYWxhcic6XG4gICAgICAgICAgICBjYXNlICdkb3VibGUtcXVvdGVkLXNjYWxhcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmxvd1NjYWxhcih0aGlzLnR5cGUpO1xuICAgICAgICAgICAgY2FzZSAnYmxvY2stc2NhbGFyLWhlYWRlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Jsb2NrLXNjYWxhcicsXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBbdGhpcy5zb3VyY2VUb2tlbl0sXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogJydcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgY2FzZSAnZmxvdy1tYXAtc3RhcnQnOlxuICAgICAgICAgICAgY2FzZSAnZmxvdy1zZXEtc3RhcnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdmbG93LWNvbGxlY3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBpbmRlbnQ6IHRoaXMuaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICBzdGFydDogdGhpcy5zb3VyY2VUb2tlbixcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBlbmQ6IFtdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNhc2UgJ3NlcS1pdGVtLWluZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Jsb2NrLXNlcScsXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbeyBzdGFydDogW3RoaXMuc291cmNlVG9rZW5dIH1dXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNhc2UgJ2V4cGxpY2l0LWtleS1pbmQnOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbktleUxpbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXYgPSBnZXRQcmV2UHJvcHMocGFyZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IGdldEZpcnN0S2V5U3RhcnRQcm9wcyhwcmV2KTtcbiAgICAgICAgICAgICAgICBzdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdibG9jay1tYXAnLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBpbmRlbnQ6IHRoaXMuaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogW3sgc3RhcnQgfV1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnbWFwLXZhbHVlLWluZCc6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IGdldFByZXZQcm9wcyhwYXJlbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Rmlyc3RLZXlTdGFydFByb3BzKHByZXYpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdibG9jay1tYXAnLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBpbmRlbnQ6IHRoaXMuaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogW3sgc3RhcnQsIGtleTogbnVsbCwgc2VwOiBbdGhpcy5zb3VyY2VUb2tlbl0gfV1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBhdEluZGVudGVkQ29tbWVudChzdGFydCwgaW5kZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgIT09ICdjb21tZW50JylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuaW5kZW50IDw9IGluZGVudClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHN0YXJ0LmV2ZXJ5KHN0ID0+IHN0LnR5cGUgPT09ICduZXdsaW5lJyB8fCBzdC50eXBlID09PSAnc3BhY2UnKTtcbiAgICB9XG4gICAgKmRvY3VtZW50RW5kKGRvY0VuZCkge1xuICAgICAgICBpZiAodGhpcy50eXBlICE9PSAnZG9jLW1vZGUnKSB7XG4gICAgICAgICAgICBpZiAoZG9jRW5kLmVuZClcbiAgICAgICAgICAgICAgICBkb2NFbmQuZW5kLnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jRW5kLmVuZCA9IFt0aGlzLnNvdXJjZVRva2VuXTtcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICduZXdsaW5lJylcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAqbGluZUVuZCh0b2tlbikge1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnY29tbWEnOlxuICAgICAgICAgICAgY2FzZSAnZG9jLXN0YXJ0JzpcbiAgICAgICAgICAgIGNhc2UgJ2RvYy1lbmQnOlxuICAgICAgICAgICAgY2FzZSAnZmxvdy1zZXEtZW5kJzpcbiAgICAgICAgICAgIGNhc2UgJ2Zsb3ctbWFwLWVuZCc6XG4gICAgICAgICAgICBjYXNlICdtYXAtdmFsdWUtaW5kJzpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5zdGVwKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAvLyBhbGwgb3RoZXIgdmFsdWVzIGFyZSBlcnJvcnNcbiAgICAgICAgICAgICAgICBpZiAodG9rZW4uZW5kKVxuICAgICAgICAgICAgICAgICAgICB0b2tlbi5lbmQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRva2VuLmVuZCA9IFt0aGlzLnNvdXJjZVRva2VuXTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50eXBlID09PSAnbmV3bGluZScpXG4gICAgICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgeyBQYXJzZXIgfTtcbiIsImltcG9ydCB7IENvbXBvc2VyIH0gZnJvbSAnLi9jb21wb3NlL2NvbXBvc2VyLmpzJztcbmltcG9ydCB7IERvY3VtZW50IH0gZnJvbSAnLi9kb2MvRG9jdW1lbnQuanMnO1xuaW1wb3J0IHsgcHJldHRpZnlFcnJvciwgWUFNTFBhcnNlRXJyb3IgfSBmcm9tICcuL2Vycm9ycy5qcyc7XG5pbXBvcnQgeyB3YXJuIH0gZnJvbSAnLi9sb2cuanMnO1xuaW1wb3J0IHsgTGluZUNvdW50ZXIgfSBmcm9tICcuL3BhcnNlL2xpbmUtY291bnRlci5qcyc7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tICcuL3BhcnNlL3BhcnNlci5qcyc7XG5cbmZ1bmN0aW9uIHBhcnNlT3B0aW9ucyhvcHRpb25zKSB7XG4gICAgY29uc3QgcHJldHR5RXJyb3JzID0gb3B0aW9ucy5wcmV0dHlFcnJvcnMgIT09IGZhbHNlO1xuICAgIGNvbnN0IGxpbmVDb3VudGVyID0gb3B0aW9ucy5saW5lQ291bnRlciB8fCAocHJldHR5RXJyb3JzICYmIG5ldyBMaW5lQ291bnRlcigpKSB8fCBudWxsO1xuICAgIHJldHVybiB7IGxpbmVDb3VudGVyLCBwcmV0dHlFcnJvcnMgfTtcbn1cbi8qKlxuICogUGFyc2UgdGhlIGlucHV0IGFzIGEgc3RyZWFtIG9mIFlBTUwgZG9jdW1lbnRzLlxuICpcbiAqIERvY3VtZW50cyBzaG91bGQgYmUgc2VwYXJhdGVkIGZyb20gZWFjaCBvdGhlciBieSBgLi4uYCBvciBgLS0tYCBtYXJrZXIgbGluZXMuXG4gKlxuICogQHJldHVybnMgSWYgYW4gZW1wdHkgYGRvY3NgIGFycmF5IGlzIHJldHVybmVkLCBpdCB3aWxsIGJlIG9mIHR5cGVcbiAqICAgRW1wdHlTdHJlYW0gYW5kIGNvbnRhaW4gYWRkaXRpb25hbCBzdHJlYW0gaW5mb3JtYXRpb24uIEluXG4gKiAgIFR5cGVTY3JpcHQsIHlvdSBzaG91bGQgdXNlIGAnZW1wdHknIGluIGRvY3NgIGFzIGEgdHlwZSBndWFyZCBmb3IgaXQuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlQWxsRG9jdW1lbnRzKHNvdXJjZSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgeyBsaW5lQ291bnRlciwgcHJldHR5RXJyb3JzIH0gPSBwYXJzZU9wdGlvbnMob3B0aW9ucyk7XG4gICAgY29uc3QgcGFyc2VyID0gbmV3IFBhcnNlcihsaW5lQ291bnRlciA9PT0gbnVsbCB8fCBsaW5lQ291bnRlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGluZUNvdW50ZXIuYWRkTmV3TGluZSk7XG4gICAgY29uc3QgY29tcG9zZXIgPSBuZXcgQ29tcG9zZXIob3B0aW9ucyk7XG4gICAgY29uc3QgZG9jcyA9IEFycmF5LmZyb20oY29tcG9zZXIuY29tcG9zZShwYXJzZXIucGFyc2Uoc291cmNlKSkpO1xuICAgIGlmIChwcmV0dHlFcnJvcnMgJiYgbGluZUNvdW50ZXIpXG4gICAgICAgIGZvciAoY29uc3QgZG9jIG9mIGRvY3MpIHtcbiAgICAgICAgICAgIGRvYy5lcnJvcnMuZm9yRWFjaChwcmV0dGlmeUVycm9yKHNvdXJjZSwgbGluZUNvdW50ZXIpKTtcbiAgICAgICAgICAgIGRvYy53YXJuaW5ncy5mb3JFYWNoKHByZXR0aWZ5RXJyb3Ioc291cmNlLCBsaW5lQ291bnRlcikpO1xuICAgICAgICB9XG4gICAgaWYgKGRvY3MubGVuZ3RoID4gMClcbiAgICAgICAgcmV0dXJuIGRvY3M7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oW10sIHsgZW1wdHk6IHRydWUgfSwgY29tcG9zZXIuc3RyZWFtSW5mbygpKTtcbn1cbi8qKiBQYXJzZSBhbiBpbnB1dCBzdHJpbmcgaW50byBhIHNpbmdsZSBZQU1MLkRvY3VtZW50ICovXG5mdW5jdGlvbiBwYXJzZURvY3VtZW50KHNvdXJjZSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgeyBsaW5lQ291bnRlciwgcHJldHR5RXJyb3JzIH0gPSBwYXJzZU9wdGlvbnMob3B0aW9ucyk7XG4gICAgY29uc3QgcGFyc2VyID0gbmV3IFBhcnNlcihsaW5lQ291bnRlciA9PT0gbnVsbCB8fCBsaW5lQ291bnRlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGluZUNvdW50ZXIuYWRkTmV3TGluZSk7XG4gICAgY29uc3QgY29tcG9zZXIgPSBuZXcgQ29tcG9zZXIob3B0aW9ucyk7XG4gICAgLy8gYGRvY2AgaXMgYWx3YXlzIHNldCBieSBjb21wb3NlLmVuZCh0cnVlKSBhdCB0aGUgdmVyeSBsYXRlc3RcbiAgICBsZXQgZG9jID0gbnVsbDtcbiAgICBmb3IgKGNvbnN0IF9kb2Mgb2YgY29tcG9zZXIuY29tcG9zZShwYXJzZXIucGFyc2Uoc291cmNlKSwgdHJ1ZSwgc291cmNlLmxlbmd0aCkpIHtcbiAgICAgICAgaWYgKCFkb2MpXG4gICAgICAgICAgICBkb2MgPSBfZG9jO1xuICAgICAgICBlbHNlIGlmIChkb2Mub3B0aW9ucy5sb2dMZXZlbCAhPT0gJ3NpbGVudCcpIHtcbiAgICAgICAgICAgIGRvYy5lcnJvcnMucHVzaChuZXcgWUFNTFBhcnNlRXJyb3IoX2RvYy5yYW5nZS5zbGljZSgwLCAyKSwgJ01VTFRJUExFX0RPQ1MnLCAnU291cmNlIGNvbnRhaW5zIG11bHRpcGxlIGRvY3VtZW50czsgcGxlYXNlIHVzZSBZQU1MLnBhcnNlQWxsRG9jdW1lbnRzKCknKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJldHR5RXJyb3JzICYmIGxpbmVDb3VudGVyKSB7XG4gICAgICAgIGRvYy5lcnJvcnMuZm9yRWFjaChwcmV0dGlmeUVycm9yKHNvdXJjZSwgbGluZUNvdW50ZXIpKTtcbiAgICAgICAgZG9jLndhcm5pbmdzLmZvckVhY2gocHJldHRpZnlFcnJvcihzb3VyY2UsIGxpbmVDb3VudGVyKSk7XG4gICAgfVxuICAgIHJldHVybiBkb2M7XG59XG5mdW5jdGlvbiBwYXJzZShzcmMsIHJldml2ZXIsIG9wdGlvbnMpIHtcbiAgICBsZXQgX3Jldml2ZXIgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHR5cGVvZiByZXZpdmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIF9yZXZpdmVyID0gcmV2aXZlcjtcbiAgICB9XG4gICAgZWxzZSBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkICYmIHJldml2ZXIgJiYgdHlwZW9mIHJldml2ZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIG9wdGlvbnMgPSByZXZpdmVyO1xuICAgIH1cbiAgICBjb25zdCBkb2MgPSBwYXJzZURvY3VtZW50KHNyYywgb3B0aW9ucyk7XG4gICAgaWYgKCFkb2MpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIGRvYy53YXJuaW5ncy5mb3JFYWNoKHdhcm5pbmcgPT4gd2Fybihkb2Mub3B0aW9ucy5sb2dMZXZlbCwgd2FybmluZykpO1xuICAgIGlmIChkb2MuZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKGRvYy5vcHRpb25zLmxvZ0xldmVsICE9PSAnc2lsZW50JylcbiAgICAgICAgICAgIHRocm93IGRvYy5lcnJvcnNbMF07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGRvYy5lcnJvcnMgPSBbXTtcbiAgICB9XG4gICAgcmV0dXJuIGRvYy50b0pTKE9iamVjdC5hc3NpZ24oeyByZXZpdmVyOiBfcmV2aXZlciB9LCBvcHRpb25zKSk7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnkodmFsdWUsIHJlcGxhY2VyLCBvcHRpb25zKSB7XG4gICAgbGV0IF9yZXBsYWNlciA9IG51bGw7XG4gICAgaWYgKHR5cGVvZiByZXBsYWNlciA9PT0gJ2Z1bmN0aW9uJyB8fCBBcnJheS5pc0FycmF5KHJlcGxhY2VyKSkge1xuICAgICAgICBfcmVwbGFjZXIgPSByZXBsYWNlcjtcbiAgICB9XG4gICAgZWxzZSBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkICYmIHJlcGxhY2VyKSB7XG4gICAgICAgIG9wdGlvbnMgPSByZXBsYWNlcjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJylcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMubGVuZ3RoO1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgY29uc3QgaW5kZW50ID0gTWF0aC5yb3VuZChvcHRpb25zKTtcbiAgICAgICAgb3B0aW9ucyA9IGluZGVudCA8IDEgPyB1bmRlZmluZWQgOiBpbmRlbnQgPiA4ID8geyBpbmRlbnQ6IDggfSA6IHsgaW5kZW50IH07XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IHsga2VlcFVuZGVmaW5lZCB9ID0gb3B0aW9ucyB8fCByZXBsYWNlciB8fCB7fTtcbiAgICAgICAgaWYgKCFrZWVwVW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEb2N1bWVudCh2YWx1ZSwgX3JlcGxhY2VyLCBvcHRpb25zKS50b1N0cmluZyhvcHRpb25zKTtcbn1cblxuZXhwb3J0IHsgcGFyc2UsIHBhcnNlQWxsRG9jdW1lbnRzLCBwYXJzZURvY3VtZW50LCBzdHJpbmdpZnkgfTtcbiIsImltcG9ydCB7IE5vdGljZSB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgQ1NULCBwYXJzZURvY3VtZW50IH0gZnJvbSBcInlhbWxcIjtcbmltcG9ydCB7IFJlcGxhY2VtZW50IH0gZnJvbSBcIi4vVGFnXCI7XG5cbmV4cG9ydCBjbGFzcyBGaWxlIHtcblxuICAgIGNvbnN0cnVjdG9yKGFwcCwgZmlsZW5hbWUsIHRhZ1Bvc2l0aW9ucywgaGFzRnJvbnRNYXR0ZXIpIHtcbiAgICAgICAgdGhpcy5hcHAgPSBhcHA7XG4gICAgICAgIHRoaXMuZmlsZW5hbWUgPSBmaWxlbmFtZTtcbiAgICAgICAgdGhpcy5iYXNlbmFtZSA9IGZpbGVuYW1lLnNwbGl0KFwiL1wiKS5wb3AoKTtcbiAgICAgICAgdGhpcy50YWdQb3NpdGlvbnMgPSB0YWdQb3NpdGlvbnM7XG4gICAgICAgIHRoaXMuaGFzRnJvbnRNYXR0ZXIgPSAhIWhhc0Zyb250TWF0dGVyO1xuICAgIH1cblxuICAgIC8qKiBAcGFyYW0ge1JlcGxhY2VtZW50fSByZXBsYWNlICovXG4gICAgYXN5bmMgcmVuYW1lZChyZXBsYWNlKSB7XG4gICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLmFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgodGhpcy5maWxlbmFtZSk7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsID0gYXdhaXQgdGhpcy5hcHAudmF1bHQucmVhZChmaWxlKTtcbiAgICAgICAgbGV0IHRleHQgPSBvcmlnaW5hbDtcblxuICAgICAgICBmb3IgKGNvbnN0IHsgcG9zaXRpb246IHsgc3RhcnQsIGVuZCB9LCB0YWcgfSBvZiB0aGlzLnRhZ1Bvc2l0aW9ucykge1xuICAgICAgICAgICAgaWYgKHRleHQuc2xpY2Uoc3RhcnQub2Zmc2V0LCBlbmQub2Zmc2V0KSAhPT0gdGFnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbXNnID0gYEZpbGUgJHt0aGlzLmZpbGVuYW1lfSBoYXMgY2hhbmdlZDsgc2tpcHBpbmdgO1xuICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UobXNnKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKG1zZyk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5kZWJ1Zyh0ZXh0LnNsaWNlKHN0YXJ0Lm9mZnNldCwgZW5kLm9mZnNldCksIHRhZyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGV4dCA9IHJlcGxhY2UuaW5TdHJpbmcodGV4dCwgc3RhcnQub2Zmc2V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhhc0Zyb250TWF0dGVyKVxuICAgICAgICAgICAgdGV4dCA9IHRoaXMucmVwbGFjZUluRnJvbnRNYXR0ZXIodGV4dCwgcmVwbGFjZSk7XG5cbiAgICAgICAgaWYgKHRleHQgIT09IG9yaWdpbmFsKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmFwcC52YXVsdC5tb2RpZnkoZmlsZSwgdGV4dCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAcGFyYW0ge1JlcGxhY2VtZW50fSByZXBsYWNlICovXG4gICAgcmVwbGFjZUluRnJvbnRNYXR0ZXIodGV4dCwgcmVwbGFjZSkge1xuICAgICAgICBjb25zdCBbZW1wdHksIGZyb250TWF0dGVyXSA9IHRleHQuc3BsaXQoL14tLS1cXHI/JFxcbj8vbSwgMik7XG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIHZhbGlkLCBub24tZW1wdHksIHByb3Blcmx5IHRlcm1pbmF0ZWQgZnJvbnQgbWF0dGVyXG4gICAgICAgIGlmIChlbXB0eS50cmltKCkgIT09IFwiXCIgfHwgIWZyb250TWF0dGVyLnRyaW0oKSB8fCAhZnJvbnRNYXR0ZXIuZW5kc1dpdGgoXCJcXG5cIikpXG4gICAgICAgICAgICByZXR1cm4gdGV4dDtcblxuICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZURvY3VtZW50KGZyb250TWF0dGVyLCB7a2VlcFNvdXJjZVRva2VuczogdHJ1ZX0pO1xuICAgICAgICBpZiAocGFyc2VkLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gYFlBTUwgaXNzdWUgd2l0aCAke3RoaXMuZmlsZW5hbWV9OiAke3BhcnNlZC5lcnJvcnNbMF19YDtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOyBuZXcgTm90aWNlKGVycm9yICsgXCI7IHNraXBwaW5nIGZyb250bWF0dGVyXCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNoYW5nZWQgPSBmYWxzZSwganNvbiA9IHBhcnNlZC50b0pTT04oKTtcblxuICAgICAgICBmdW5jdGlvbiBzZXRJbk5vZGUobm9kZSwgdmFsdWUsIGFmdGVyS2V5PWZhbHNlKSB7XG4gICAgICAgICAgICBDU1Quc2V0U2NhbGFyVmFsdWUobm9kZS5zcmNUb2tlbiwgdmFsdWUsIHthZnRlcktleX0pO1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICBub2RlLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBwcm9jZXNzRmllbGQocHJvcCwgaXNBbGlhcykge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHBhcnNlZC5nZXQocHJvcCwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAoIW5vZGUpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0ganNvbltwcm9wXTtcbiAgICAgICAgICAgIGlmICghZmllbGQgfHwgIWZpZWxkLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gZmllbGQuc3BsaXQoaXNBbGlhcyA/IC8oXlxccyt8XFxzKixcXHMqfFxccyskKS8gOiAvKFtcXHMsXSspLyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYWZ0ZXIgPSByZXBsYWNlLmluQXJyYXkocGFydHMsIHRydWUsIGlzQWxpYXMpLmpvaW4oXCJcIik7XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkICE9IGFmdGVyKSBzZXRJbk5vZGUobm9kZSwgYWZ0ZXIsIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGZpZWxkKSkge1xuICAgICAgICAgICAgICAgIHJlcGxhY2UuaW5BcnJheShmaWVsZCwgZmFsc2UsIGlzQWxpYXMpLmZvckVhY2goKHYsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkW2ldICE9PSB2KSBzZXRJbk5vZGUobm9kZS5nZXQoaSwgdHJ1ZSksIHYpXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHtrZXk6IHt2YWx1ZTpwcm9wfX0gb2YgcGFyc2VkLmNvbnRlbnRzLml0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoL150YWdzPyQvaS50ZXN0KHByb3ApKSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0ZpZWxkKHByb3AsIGZhbHNlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoL15hbGlhcyhlcyk/JC9pLnRlc3QocHJvcCkpIHtcbiAgICAgICAgICAgICAgICBwcm9jZXNzRmllbGQocHJvcCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNoYW5nZWQgPyB0ZXh0LnJlcGxhY2UoZnJvbnRNYXR0ZXIsIENTVC5zdHJpbmdpZnkocGFyc2VkLmNvbnRlbnRzLnNyY1Rva2VuKSkgOiB0ZXh0O1xuICAgIH1cbn1cbiIsImltcG9ydCB7Y29uZmlybX0gZnJvbSBcInNtYWxsdGFsa1wiO1xuaW1wb3J0IHtQcm9ncmVzc30gZnJvbSBcIi4vcHJvZ3Jlc3NcIjtcbmltcG9ydCB7dmFsaWRhdGVkSW5wdXR9IGZyb20gXCIuL3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7Tm90aWNlLCBwYXJzZUZyb250TWF0dGVyQWxpYXNlcywgcGFyc2VGcm9udE1hdHRlclRhZ3N9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHtUYWcsIFJlcGxhY2VtZW50fSBmcm9tIFwiLi9UYWdcIjtcbmltcG9ydCB7RmlsZX0gZnJvbSBcIi4vRmlsZVwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuYW1lVGFnKGFwcCwgdGFnTmFtZSkge1xuICAgIGNvbnN0IG5ld05hbWUgPSBhd2FpdCBwcm9tcHRGb3JOZXdOYW1lKHRhZ05hbWUpO1xuICAgIGlmIChuZXdOYW1lID09PSBmYWxzZSkgcmV0dXJuOyAgLy8gYWJvcnRlZFxuXG4gICAgaWYgKCFuZXdOYW1lIHx8IG5ld05hbWUgPT09IHRhZ05hbWUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOb3RpY2UoXCJVbmNoYW5nZWQgb3IgZW1wdHkgdGFnOiBObyBjaGFuZ2VzIG1hZGUuXCIpO1xuICAgIH1cblxuICAgIGNvbnN0XG4gICAgICAgIG9sZFRhZyAgPSBuZXcgVGFnKHRhZ05hbWUpLFxuICAgICAgICBuZXdUYWcgID0gbmV3IFRhZyhuZXdOYW1lKSxcbiAgICAgICAgcmVwbGFjZSA9IG5ldyBSZXBsYWNlbWVudChvbGRUYWcsIG5ld1RhZyksXG4gICAgICAgIGNsYXNoaW5nID0gcmVwbGFjZS53aWxsTWVyZ2VUYWdzKFxuICAgICAgICAgICAgYWxsVGFncyhhcHApLnJldmVyc2UoKSAgIC8vIGZpbmQgbG9uZ2VzdCBjbGFzaCBmaXJzdFxuICAgICAgICApLFxuICAgICAgICBzaG91bGRBYm9ydCA9IGNsYXNoaW5nICYmXG4gICAgICAgICAgICBhd2FpdCBzaG91bGRBYm9ydER1ZVRvQ2xhc2goY2xhc2hpbmcsIG9sZFRhZywgbmV3VGFnKVxuICAgICAgICA7XG5cbiAgICBpZiAoc2hvdWxkQWJvcnQpIHJldHVybjtcblxuICAgIGNvbnN0IHRhcmdldHMgPSBhd2FpdCBmaW5kVGFyZ2V0cyhhcHAsIG9sZFRhZyk7XG4gICAgaWYgKCF0YXJnZXRzKSByZXR1cm47XG5cbiAgICBjb25zdCBwcm9ncmVzcyA9IG5ldyBQcm9ncmVzcyhgUmVuYW1pbmcgdG8gIyR7bmV3TmFtZX0vKmAsIFwiUHJvY2Vzc2luZyBmaWxlcy4uLlwiKTtcbiAgICBsZXQgcmVuYW1lZCA9IDA7XG4gICAgYXdhaXQgcHJvZ3Jlc3MuZm9yRWFjaCh0YXJnZXRzLCBhc3luYyAodGFyZ2V0KSA9PiB7XG4gICAgICAgIHByb2dyZXNzLm1lc3NhZ2UgPSBcIlByb2Nlc3NpbmcgXCIgKyB0YXJnZXQuYmFzZW5hbWU7XG4gICAgICAgIGlmIChhd2FpdCB0YXJnZXQucmVuYW1lZChyZXBsYWNlKSkgcmVuYW1lZCsrO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBOb3RpY2UoYE9wZXJhdGlvbiAke3Byb2dyZXNzLmFib3J0ZWQgPyBcImNhbmNlbGxlZFwiIDogXCJjb21wbGV0ZVwifTogJHtyZW5hbWVkfSBmaWxlKHMpIHVwZGF0ZWRgKTtcbn1cblxuZnVuY3Rpb24gYWxsVGFncyhhcHApIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0VGFncygpKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmRUYXJnZXRzKGFwcCwgdGFnKSB7XG4gICAgY29uc3QgdGFyZ2V0cyA9IFtdO1xuICAgIGNvbnN0IHByb2dyZXNzID0gbmV3IFByb2dyZXNzKGBTZWFyY2hpbmcgZm9yICR7dGFnfS8qYCwgXCJNYXRjaGluZyBmaWxlcy4uLlwiKTtcbiAgICBhd2FpdCBwcm9ncmVzcy5mb3JFYWNoKFxuICAgICAgICBhcHAubWV0YWRhdGFDYWNoZS5nZXRDYWNoZWRGaWxlcygpLFxuICAgICAgICBmaWxlbmFtZSA9PiB7XG4gICAgICAgICAgICBsZXQgeyBmcm9udG1hdHRlciwgdGFncyB9ID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Q2FjaGUoZmlsZW5hbWUpIHx8IHt9O1xuICAgICAgICAgICAgdGFncyA9ICh0YWdzIHx8IFtdKS5maWx0ZXIodCA9PiB0LnRhZyAmJiB0YWcubWF0Y2hlcyh0LnRhZykpLnJldmVyc2UoKTsgLy8gbGFzdCBwb3NpdGlvbnMgZmlyc3RcbiAgICAgICAgICAgIGNvbnN0IGZtdGFncyA9IChwYXJzZUZyb250TWF0dGVyVGFncyhmcm9udG1hdHRlcikgfHwgW10pLmZpbHRlcih0YWcubWF0Y2hlcyk7XG4gICAgICAgICAgICBjb25zdCBhbGlhc1RhZ3MgPSAocGFyc2VGcm9udE1hdHRlckFsaWFzZXMoZnJvbnRtYXR0ZXIpIHx8IFtdKS5maWx0ZXIoVGFnLmlzVGFnKS5maWx0ZXIodGFnLm1hdGNoZXMpO1xuICAgICAgICAgICAgaWYgKHRhZ3MubGVuZ3RoIHx8IGZtdGFncy5sZW5ndGggfHwgYWxpYXNUYWdzLmxlbmd0aClcbiAgICAgICAgICAgICAgICB0YXJnZXRzLnB1c2gobmV3IEZpbGUoYXBwLCBmaWxlbmFtZSwgdGFncywgZm10YWdzLmxlbmd0aCArIGFsaWFzVGFncy5sZW5ndGgpKTtcbiAgICAgICAgfVxuICAgICk7XG4gICAgaWYgKCFwcm9ncmVzcy5hYm9ydGVkKVxuICAgICAgICByZXR1cm4gdGFyZ2V0cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJvbXB0Rm9yTmV3TmFtZSh0YWdOYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHZhbGlkYXRlZElucHV0KFxuICAgICAgICAgICAgYFJlbmFtaW5nICMke3RhZ05hbWV9IChhbmQgYW55IHN1Yi10YWdzKWAsIFwiRW50ZXIgbmV3IG5hbWUgKG11c3QgYmUgYSB2YWxpZCBPYnNpZGlhbiB0YWcpOlxcblwiLFxuICAgICAgICAgICAgdGFnTmFtZSxcbiAgICAgICAgICAgIFwiW15cXHUyMDAwLVxcdTIwNkZcXHUyRTAwLVxcdTJFN0YnIVxcXCIjJCUmKCkqKywuOjs8PT4/QF5ge3x9flxcXFxbXFxcXF1cXFxcXFxcXFxcXFxzXStcIixcbiAgICAgICAgICAgIFwiT2JzaWRpYW4gdGFnIG5hbWVcIlxuICAgICAgICApO1xuICAgIH0gY2F0Y2goZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7ICAvLyB1c2VyIGNhbmNlbGxlZFxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2hvdWxkQWJvcnREdWVUb0NsYXNoKFtvcmlnaW4sIGNsYXNoXSwgb2xkVGFnLCBuZXdUYWcpIHtcbiAgICB0cnkge1xuICAgICAgICBhd2FpdCBjb25maXJtKFxuICAgICAgICAgICAgXCJXQVJOSU5HOiBObyBVbmRvIVwiLFxuICAgICAgICAgICAgYFJlbmFtaW5nIDxjb2RlPiR7b2xkVGFnfTwvY29kZT4gdG8gPGNvZGU+JHtuZXdUYWd9PC9jb2RlPiB3aWxsIG1lcmdlICR7XG4gICAgICAgICAgICAgICAgKG9yaWdpbi5jYW5vbmljYWwgPT09IG9sZFRhZy5jYW5vbmljYWwpID9cbiAgICAgICAgICAgICAgICAgICAgYHRoZXNlIHRhZ3NgIDogYG11bHRpcGxlIHRhZ3NcbiAgICAgICAgICAgICAgICAgICAgaW50byBleGlzdGluZyB0YWdzIChzdWNoIGFzIDxjb2RlPiR7b3JpZ2lufTwvY29kZT5cbiAgICAgICAgICAgICAgICAgICAgbWVyZ2luZyB3aXRoIDxjb2RlPiR7Y2xhc2h9PC9jb2RlPilgXG4gICAgICAgICAgICB9LlxuXG4gICAgICAgICAgICBUaGlzIDxiPmNhbm5vdDwvYj4gYmUgdW5kb25lLiAgRG8geW91IHdpc2ggdG8gcHJvY2VlZD9gXG4gICAgICAgICk7XG4gICAgfSBjYXRjaChlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBhcm91bmQob2JqLCBmYWN0b3JpZXMpIHtcbiAgICBjb25zdCByZW1vdmVycyA9IE9iamVjdC5rZXlzKGZhY3RvcmllcykubWFwKGtleSA9PiBhcm91bmQxKG9iaiwga2V5LCBmYWN0b3JpZXNba2V5XSkpO1xuICAgIHJldHVybiByZW1vdmVycy5sZW5ndGggPT09IDEgPyByZW1vdmVyc1swXSA6IGZ1bmN0aW9uICgpIHsgcmVtb3ZlcnMuZm9yRWFjaChyID0+IHIoKSk7IH07XG59XG5mdW5jdGlvbiBhcm91bmQxKG9iaiwgbWV0aG9kLCBjcmVhdGVXcmFwcGVyKSB7XG4gICAgY29uc3Qgb3JpZ2luYWwgPSBvYmpbbWV0aG9kXSwgaGFkT3duID0gb2JqLmhhc093blByb3BlcnR5KG1ldGhvZCk7XG4gICAgbGV0IGN1cnJlbnQgPSBjcmVhdGVXcmFwcGVyKG9yaWdpbmFsKTtcbiAgICAvLyBMZXQgb3VyIHdyYXBwZXIgaW5oZXJpdCBzdGF0aWMgcHJvcHMgZnJvbSB0aGUgd3JhcHBpbmcgbWV0aG9kLFxuICAgIC8vIGFuZCB0aGUgd3JhcHBpbmcgbWV0aG9kLCBwcm9wcyBmcm9tIHRoZSBvcmlnaW5hbCBtZXRob2RcbiAgICBpZiAob3JpZ2luYWwpXG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihjdXJyZW50LCBvcmlnaW5hbCk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHdyYXBwZXIsIGN1cnJlbnQpO1xuICAgIG9ialttZXRob2RdID0gd3JhcHBlcjtcbiAgICAvLyBSZXR1cm4gYSBjYWxsYmFjayB0byBhbGxvdyBzYWZlIHJlbW92YWxcbiAgICByZXR1cm4gcmVtb3ZlO1xuICAgIGZ1bmN0aW9uIHdyYXBwZXIoLi4uYXJncykge1xuICAgICAgICAvLyBJZiB3ZSBoYXZlIGJlZW4gZGVhY3RpdmF0ZWQgYW5kIGFyZSBubyBsb25nZXIgd3JhcHBlZCwgcmVtb3ZlIG91cnNlbHZlc1xuICAgICAgICBpZiAoY3VycmVudCA9PT0gb3JpZ2luYWwgJiYgb2JqW21ldGhvZF0gPT09IHdyYXBwZXIpXG4gICAgICAgICAgICByZW1vdmUoKTtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnQuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgICAgLy8gSWYgbm8gb3RoZXIgcGF0Y2hlcywganVzdCBkbyBhIGRpcmVjdCByZW1vdmFsXG4gICAgICAgIGlmIChvYmpbbWV0aG9kXSA9PT0gd3JhcHBlcikge1xuICAgICAgICAgICAgaWYgKGhhZE93bilcbiAgICAgICAgICAgICAgICBvYmpbbWV0aG9kXSA9IG9yaWdpbmFsO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRlbGV0ZSBvYmpbbWV0aG9kXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3VycmVudCA9PT0gb3JpZ2luYWwpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIC8vIEVsc2UgcGFzcyBmdXR1cmUgY2FsbHMgdGhyb3VnaCwgYW5kIHJlbW92ZSB3cmFwcGVyIGZyb20gdGhlIHByb3RvdHlwZSBjaGFpblxuICAgICAgICBjdXJyZW50ID0gb3JpZ2luYWw7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih3cmFwcGVyLCBvcmlnaW5hbCB8fCBGdW5jdGlvbik7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGRlZHVwZShrZXksIG9sZEZuLCBuZXdGbikge1xuICAgIGNoZWNrW2tleV0gPSBrZXk7XG4gICAgcmV0dXJuIGNoZWNrO1xuICAgIGZ1bmN0aW9uIGNoZWNrKC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIChvbGRGbltrZXldID09PSBrZXkgPyBvbGRGbiA6IG5ld0ZuKS5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gYWZ0ZXIocHJvbWlzZSwgY2IpIHtcbiAgICByZXR1cm4gcHJvbWlzZS50aGVuKGNiLCBjYik7XG59XG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplKGFzeW5jRnVuY3Rpb24pIHtcbiAgICBsZXQgbGFzdFJ1biA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIGZ1bmN0aW9uIHdyYXBwZXIoLi4uYXJncykge1xuICAgICAgICByZXR1cm4gbGFzdFJ1biA9IG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4ge1xuICAgICAgICAgICAgYWZ0ZXIobGFzdFJ1biwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGFzeW5jRnVuY3Rpb24uYXBwbHkodGhpcywgYXJncykudGhlbihyZXMsIHJlaik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHdyYXBwZXIuYWZ0ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBsYXN0UnVuID0gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7IGFmdGVyKGxhc3RSdW4sIHJlcyk7IH0pO1xuICAgIH07XG4gICAgcmV0dXJuIHdyYXBwZXI7XG59XG4iLCJpbXBvcnQge0NvbXBvbmVudCwgS2V5bWFwLCBNZW51LCBOb3RpY2UsIHBhcnNlRnJvbnRNYXR0ZXJBbGlhc2VzLCBQbHVnaW4sIFNjb3BlfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7cmVuYW1lVGFnLCBmaW5kVGFyZ2V0c30gZnJvbSBcIi4vcmVuYW1pbmdcIjtcbmltcG9ydCB7VGFnfSBmcm9tIFwiLi9UYWdcIjtcbmltcG9ydCB7YXJvdW5kfSBmcm9tIFwibW9ua2V5LWFyb3VuZFwiO1xuXG5jb25zdCB0YWdIb3Zlck1haW4gPSBcInRhZy13cmFuZ2xlcjp0YWctcGFuZVwiO1xuXG5mdW5jdGlvbiBvbkVsZW1lbnQoZWwsIGV2ZW50LCBzZWxlY3RvciwgY2FsbGJhY2ssIG9wdGlvbnMpIHtcbiAgICBlbC5vbihldmVudCwgc2VsZWN0b3IsIGNhbGxiYWNrLCBvcHRpb25zKVxuICAgIHJldHVybiAoKSA9PiBlbC5vZmYoZXZlbnQsIHNlbGVjdG9yLCBjYWxsYmFjaywgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRhZ1dyYW5nbGVyIGV4dGVuZHMgUGx1Z2luIHtcbiAgICBwYWdlQWxpYXNlcyA9IG5ldyBNYXAoKTtcbiAgICB0YWdQYWdlcyA9IG5ldyBNYXAoKTtcblxuICAgIHRhZ1BhZ2UodGFnKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMudGFnUGFnZXMuZ2V0KFRhZy5jYW5vbmljYWwodGFnKSkgfHwgXCJcIilbMF1cbiAgICB9XG5cbiAgICBvcGVuVGFnUGFnZShmaWxlLCBpc05ldywgbmV3TGVhZikge1xuICAgICAgICBjb25zdCBvcGVuU3RhdGUgPSB7XG4gICAgICAgICAgICBlU3RhdGU6IGlzTmV3ID8ge3JlbmFtZTogXCJhbGxcIn0gOiB7Zm9jdXM6IHRydWV9LCAgLy8gUmVuYW1lIG5ldyBwYWdlLCBmb2N1cyBleGlzdGluZ1xuICAgICAgICAgICAgLi4uKGlzTmV3ID8ge3N0YXRlOiB7bW9kZTogXCJzb3VyY2VcIn19IDoge30pICAgICAgIC8vIGFuZCBzZXQgc291cmNlIG1vZGUgZm9yIG5ldyBwYWdlXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwLndvcmtzcGFjZS5nZXRMZWFmKG5ld0xlYWYpLm9wZW5GaWxlKGZpbGUsIG9wZW5TdGF0ZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgY3JlYXRlVGFnUGFnZSh0YWdOYW1lLCBuZXdMZWFmKSB7XG4gICAgICAgIGNvbnN0IGJhc2VOYW1lID0gbmV3IFRhZyh0YWdOYW1lKS5uYW1lLnNwbGl0KFwiL1wiKS5qb2luKFwiIFwiKTtcbiAgICAgICAgY29uc3QgZm9sZGVyID0gdGhpcy5hcHAuZmlsZU1hbmFnZXIuZ2V0TmV3RmlsZVBhcmVudCh0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpPy5wYXRoIHx8IFwiXCIpO1xuICAgICAgICBjb25zdCBwYXRoID0gdGhpcy5hcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aChmb2xkZXIuZ2V0UGFyZW50UHJlZml4KCkrYmFzZU5hbWUsIFwibWRcIik7XG4gICAgICAgIHRoaXMub3BlblRhZ1BhZ2UoYXdhaXQgdGhpcy5hcHAudmF1bHQuY3JlYXRlKHBhdGgsIFtcbiAgICAgICAgICAgIFwiLS0tXCIsXG4gICAgICAgICAgICBgQWxpYXNlczogWyAke0pTT04uc3RyaW5naWZ5KFRhZy50b1RhZyh0YWdOYW1lKSl9IF1gLFxuICAgICAgICAgICAgXCItLS1cIixcbiAgICAgICAgICAgIFwiXCJcbiAgICAgICAgXS5qb2luKFwiXFxuXCIpKSwgdHJ1ZSwgbmV3TGVhZik7XG4gICAgfVxuXG4gICAgYXN5bmMgb25sb2FkKCl7XG4gICAgICAgIHRoaXMucmVnaXN0ZXIoXG4gICAgICAgICAgICBvbkVsZW1lbnQoZG9jdW1lbnQsIFwiY29udGV4dG1lbnVcIiwgXCIudGFnLXBhbmUtdGFnXCIsIHRoaXMub25NZW51LmJpbmQodGhpcyksIHtjYXB0dXJlOiB0cnVlfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmFwcC53b3Jrc3BhY2UucmVnaXN0ZXJIb3ZlckxpbmtTb3VyY2UodGFnSG92ZXJNYWluLCB7ZGlzcGxheTogJ1RhZyBwYW5lJywgZGVmYXVsdE1vZDogdHJ1ZX0pO1xuXG4gICAgICAgIHRoaXMuYWRkQ2hpbGQoXG4gICAgICAgICAgICAvLyBUYWdzIGluIHRoZSB0YWcgcGFuZVxuICAgICAgICAgICAgbmV3IFRhZ1BhZ2VVSUhhbmRsZXIodGhpcywge1xuICAgICAgICAgICAgICAgIGhvdmVyU291cmNlOiB0YWdIb3Zlck1haW4sIHNlbGVjdG9yOiBcIi50YWctcGFuZS10YWdcIiwgY29udGFpbmVyOiBcIi50YWctY29udGFpbmVyXCIsXG4gICAgICAgICAgICAgICAgdG9UYWcoZWwpIHsgcmV0dXJuIGVsLmZpbmQoXCIudGFnLXBhbmUtdGFnLXRleHRcIik/LnRleHRDb250ZW50OyB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuYWRkQ2hpbGQoXG4gICAgICAgICAgICAvLyBSZWFkaW5nIG1vZGUgLyB0YWcgbGlua3NcbiAgICAgICAgICAgIG5ldyBUYWdQYWdlVUlIYW5kbGVyKHRoaXMsIHtcbiAgICAgICAgICAgICAgICBob3ZlclNvdXJjZTogXCJwcmV2aWV3XCIsIHNlbGVjdG9yOiAnYS50YWdbaHJlZl49XCIjXCJdJyxcbiAgICAgICAgICAgICAgICBjb250YWluZXI6IFwiLm1hcmtkb3duLXByZXZpZXctdmlldywgLm1hcmtkb3duLWVtYmVkLCAud29ya3NwYWNlLWxlYWYtY29udGVudFwiLFxuICAgICAgICAgICAgICAgIHRvVGFnKGVsKSB7IHJldHVybiBlbC5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpOyB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuYWRkQ2hpbGQoXG4gICAgICAgICAgICAvLyBFZGl0IG1vZGVcbiAgICAgICAgICAgIG5ldyBUYWdQYWdlVUlIYW5kbGVyKHRoaXMsIHtcbiAgICAgICAgICAgICAgICBob3ZlclNvdXJjZTogXCJlZGl0b3JcIiwgc2VsZWN0b3I6IFwic3Bhbi5jbS1oYXNodGFnXCIsXG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBcIi5tYXJrZG93bi1zb3VyY2Utdmlld1wiLFxuICAgICAgICAgICAgICAgIHRvVGFnKGVsKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE11bHRpcGxlIGNtLWhhc2h0YWcgZWxlbWVudHMgY2FuIGJlIHNpZGUgYnkgc2lkZTogam9pbiB0aGVtIGFsbCB0b2dldGhlcjpcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRhZ05hbWUgPSBlbC50ZXh0Q29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgdD1lbC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nOyB0Py5tYXRjaGVzKFwic3Bhbi5jbS1oYXNodGFnXCIpOyB0ID0gdC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lID0gdC50ZXh0Q29udGVudCArIHRhZ05hbWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgdD1lbC5uZXh0RWxlbWVudFNpYmxpbmc7IHQ/Lm1hdGNoZXMoXCJzcGFuLmNtLWhhc2h0YWdcIik7IHQgPSB0Lm5leHRFbGVtZW50U2libGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZSArPSB0LnRleHRDb250ZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWdOYW1lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gVHJhY2sgVGFnIFBhZ2VzXG4gICAgICAgIGNvbnN0IG1ldGFDYWNoZSA9IHRoaXMuYXBwLm1ldGFkYXRhQ2FjaGU7XG4gICAgICAgIGNvbnN0IHBsdWdpbiA9IHRoaXM7XG5cbiAgICAgICAgdGhpcy5yZWdpc3Rlcihhcm91bmQobWV0YUNhY2hlLCB7XG4gICAgICAgICAgICBnZXRUYWdzKG9sZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBnZXRUYWdzKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YWdzID0gb2xkLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hbWVzID0gbmV3IFNldChPYmplY3Qua2V5cyh0YWdzKS5tYXAodCA9PiB0LnRvTG93ZXJDYXNlKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB0IG9mIHBsdWdpbi50YWdQYWdlcy5rZXlzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbmFtZXMuaGFzKHQpKSB0YWdzW3BsdWdpbi50YWdQYWdlcy5nZXQodCkudGFnXSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhZ3M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KSk7XG5cbiAgICAgICAgdGhpcy5hcHAud29ya3NwYWNlLm9uTGF5b3V0UmVhZHkoKCkgPT4ge1xuICAgICAgICAgICAgbWV0YUNhY2hlLmdldENhY2hlZEZpbGVzKCkuZm9yRWFjaChmaWxlbmFtZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm0gPSBtZXRhQ2FjaGUuZ2V0Q2FjaGUoZmlsZW5hbWUpPy5mcm9udG1hdHRlcjtcbiAgICAgICAgICAgICAgICBpZiAoZm0gJiYgcGFyc2VGcm9udE1hdHRlckFsaWFzZXMoZm0pPy5maWx0ZXIoVGFnLmlzVGFnKSkgdGhpcy51cGRhdGVQYWdlKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgoZmlsZW5hbWUpLCBmbVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJFdmVudChtZXRhQ2FjaGUub24oXCJjaGFuZ2VkXCIsIChmaWxlLCBkYXRhLCBjYWNoZSkgPT4gdGhpcy51cGRhdGVQYWdlKGZpbGUsIGNhY2hlPy5mcm9udG1hdHRlcikpKTtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC52YXVsdC5vbihcImRlbGV0ZVwiLCBmaWxlID0+IHRoaXMudXBkYXRlUGFnZShmaWxlKSkpO1xuICAgICAgICAgICAgYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUoXCJ0YWdcIikuZm9yRWFjaChsZWFmID0+IHtsZWFmPy52aWV3Py5yZXF1ZXN0VXBkYXRlVGFncz8uKCl9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlUGFnZShmaWxlLCBmcm9udG1hdHRlcikge1xuICAgICAgICBjb25zdCB0YWdzID0gcGFyc2VGcm9udE1hdHRlckFsaWFzZXMoZnJvbnRtYXR0ZXIpPy5maWx0ZXIoVGFnLmlzVGFnKSB8fCBbXTtcbiAgICAgICAgaWYgKHRoaXMucGFnZUFsaWFzZXMuaGFzKGZpbGUpKSB7XG4gICAgICAgICAgICBjb25zdCBvbGRUYWdzID0gbmV3IFNldCh0YWdzIHx8IFtdKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdGFnIG9mIHRoaXMucGFnZUFsaWFzZXMuZ2V0KGZpbGUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9sZFRhZ3MuaGFzKHRhZykpIGNvbnRpbnVlOyAgLy8gZG9uJ3QgYm90aGVyIGRlbGV0aW5nIHdoYXQgd2UnbGwganVzdCBwdXQgYmFja1xuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IFRhZy5jYW5vbmljYWwodGFnKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0cCA9IHRoaXMudGFnUGFnZXMuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKHRwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRwLmRlbGV0ZShmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0cC5zaXplKSB0aGlzLnRhZ1BhZ2VzLmRlbGV0ZShrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGFncy5sZW5ndGgpIHRoaXMucGFnZUFsaWFzZXMuZGVsZXRlKGZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWdzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5wYWdlQWxpYXNlcy5zZXQoZmlsZSwgdGFncyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRhZyBvZiB0YWdzKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gVGFnLmNhbm9uaWNhbCh0YWcpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRhZ1BhZ2VzLmhhcyhrZXkpKSB0aGlzLnRhZ1BhZ2VzLmdldChrZXkpLmFkZChmaWxlKTtcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFnU2V0ID0gbmV3IFNldChbZmlsZV0pO1xuICAgICAgICAgICAgICAgICAgICB0YWdTZXQudGFnID0gVGFnLnRvVGFnKHRhZyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFnUGFnZXMuc2V0KGtleSwgdGFnU2V0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1lbnUoZSwgdGFnRWwpIHtcbiAgICAgICAgaWYgKCFlLm9ic2lkaWFuX2NvbnRleHRtZW51KSB7XG4gICAgICAgICAgICBlLm9ic2lkaWFuX2NvbnRleHRtZW51ID0gbmV3IE1lbnUodGhpcy5hcHApO1xuICAgICAgICAgICAgc2V0SW1tZWRpYXRlKCgpID0+IG1lbnUuc2hvd0F0UG9zaXRpb24oe3g6IGUucGFnZVgsIHk6IGUucGFnZVl9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdFxuICAgICAgICAgICAgdGFnTmFtZSA9IHRhZ0VsLmZpbmQoXCIudGFnLXBhbmUtdGFnLXRleHRcIikudGV4dENvbnRlbnQsXG4gICAgICAgICAgICB0YWdQYWdlID0gdGhpcy50YWdQYWdlKHRhZ05hbWUpLFxuICAgICAgICAgICAgaXNIaWVyYXJjaHkgPSB0YWdFbC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuZmluZChcIi5jb2xsYXBzZS1pY29uXCIpLFxuICAgICAgICAgICAgc2VhcmNoUGx1Z2luID0gdGhpcy5hcHAuaW50ZXJuYWxQbHVnaW5zLmdldFBsdWdpbkJ5SWQoXCJnbG9iYWwtc2VhcmNoXCIpLFxuICAgICAgICAgICAgc2VhcmNoID0gc2VhcmNoUGx1Z2luICYmIHNlYXJjaFBsdWdpbi5pbnN0YW5jZSxcbiAgICAgICAgICAgIHF1ZXJ5ID0gc2VhcmNoICYmIHNlYXJjaC5nZXRHbG9iYWxTZWFyY2hRdWVyeSgpLFxuICAgICAgICAgICAgcmFuZG9tID0gdGhpcy5hcHAucGx1Z2lucy5wbHVnaW5zW1wic21hcnQtcmFuZG9tLW5vdGVcIl0sXG4gICAgICAgICAgICBtZW51ID0gZS5vYnNpZGlhbl9jb250ZXh0bWVudS5hZGRJdGVtKGl0ZW0oXCJwZW5jaWxcIiwgXCJSZW5hbWUgI1wiK3RhZ05hbWUsICgpID0+IHRoaXMucmVuYW1lKHRhZ05hbWUpKSk7XG5cbiAgICAgICAgbWVudS5yZWdpc3RlcihcbiAgICAgICAgICAgIG9uRWxlbWVudChkb2N1bWVudCwgXCJrZXlkb3duXCIsIFwiKlwiLCBlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZS5rZXk9PT1cIkVzY2FwZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgbWVudS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwge2NhcHR1cmU6IHRydWV9KVxuICAgICAgICApO1xuXG4gICAgICAgIG1lbnUuYWRkU2VwYXJhdG9yKCk7XG4gICAgICAgIGlmICh0YWdQYWdlKSB7XG4gICAgICAgICAgICBtZW51LmFkZEl0ZW0oXG4gICAgICAgICAgICAgICAgaXRlbShcInBvcHVwLW9wZW5cIiwgXCJPcGVuIHRhZyBwYWdlXCIsIChlKSA9PiB0aGlzLm9wZW5UYWdQYWdlKHRhZ1BhZ2UsIGZhbHNlLCBLZXltYXAuaXNNb2RFdmVudChlKSkpXG4gICAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtZW51LmFkZEl0ZW0oXG4gICAgICAgICAgICAgICAgaXRlbShcImNyZWF0ZS1uZXdcIiwgXCJDcmVhdGUgdGFnIHBhZ2VcIiwgKGUpID0+IHRoaXMuY3JlYXRlVGFnUGFnZSh0YWdOYW1lLCBLZXltYXAuaXNNb2RFdmVudChlKSkpXG4gICAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2VhcmNoKSB7XG4gICAgICAgICAgICBtZW51LmFkZFNlcGFyYXRvcigpLmFkZEl0ZW0oXG4gICAgICAgICAgICAgICAgaXRlbShcIm1hZ25pZnlpbmctZ2xhc3NcIiwgXCJOZXcgc2VhcmNoIGZvciAjXCIrdGFnTmFtZSwgKCkgPT4gc2VhcmNoLm9wZW5HbG9iYWxTZWFyY2goXCJ0YWc6XCIgKyB0YWdOYW1lKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAocXVlcnkpIHtcbiAgICAgICAgICAgICAgICBtZW51LmFkZEl0ZW0oXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0oXCJzaGVldHMtaW4tYm94XCIsIFwiUmVxdWlyZSAjXCIrdGFnTmFtZStcIiBpbiBzZWFyY2hcIiAgLCAoKSA9PiBzZWFyY2gub3Blbkdsb2JhbFNlYXJjaChxdWVyeStcIiB0YWc6XCIgICsgdGFnTmFtZSkpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1lbnUuYWRkSXRlbShcbiAgICAgICAgICAgICAgICBpdGVtKFwiY3Jvc3NlZC1zdGFyXCIgLCBcIkV4Y2x1ZGUgI1wiK3RhZ05hbWUrXCIgZnJvbSBzZWFyY2hcIiwgKCkgPT4gc2VhcmNoLm9wZW5HbG9iYWxTZWFyY2gocXVlcnkrXCIgLXRhZzpcIiArIHRhZ05hbWUpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyYW5kb20pIHtcbiAgICAgICAgICAgIG1lbnUuYWRkU2VwYXJhdG9yKCkuYWRkSXRlbShcbiAgICAgICAgICAgICAgICBpdGVtKFwiZGljZVwiLCBcIk9wZW4gcmFuZG9tIG5vdGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRzID0gYXdhaXQgZmluZFRhcmdldHModGhpcy5hcHAsIG5ldyBUYWcodGFnTmFtZSkpO1xuICAgICAgICAgICAgICAgICAgICByYW5kb20ub3BlblJhbmRvbU5vdGUodGFyZ2V0cy5tYXAoZj0+IHRoaXMuYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChmLmZpbGVuYW1lKSkpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hcHAud29ya3NwYWNlLnRyaWdnZXIoXCJ0YWctd3JhbmdsZXI6Y29udGV4dG1lbnVcIiwgbWVudSwgdGFnTmFtZSwge3NlYXJjaCwgcXVlcnksIGlzSGllcmFyY2h5LCB0YWdQYWdlfSk7XG5cbiAgICAgICAgaWYgKGlzSGllcmFyY2h5KSB7XG4gICAgICAgICAgICBjb25zdFxuICAgICAgICAgICAgICAgIHRhZ1BhcmVudCA9IHRhZ05hbWUuc3BsaXQoXCIvXCIpLnNsaWNlKDAsIC0xKS5qb2luKFwiL1wiKSxcbiAgICAgICAgICAgICAgICB0YWdWaWV3ID0gdGhpcy5sZWFmVmlldyh0YWdFbC5tYXRjaFBhcmVudChcIi53b3Jrc3BhY2UtbGVhZlwiKSksXG4gICAgICAgICAgICAgICAgdGFnQ29udGFpbmVyID0gdGFnUGFyZW50ID8gdGFnVmlldy50YWdEb21zW1wiI1wiICsgdGFnUGFyZW50LnRvTG93ZXJDYXNlKCldOiB0YWdWaWV3LnJvb3RcbiAgICAgICAgICAgIDtcbiAgICAgICAgICAgIGZ1bmN0aW9uIHRvZ2dsZShjb2xsYXBzZSkge1xuICAgICAgICAgICAgICAgIGZvcihjb25zdCB0YWcgb2YgdGFnQ29udGFpbmVyLmNoaWxkcmVuKSB0YWcuc2V0Q29sbGFwc2VkKGNvbGxhcHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1lbnUuYWRkU2VwYXJhdG9yKClcbiAgICAgICAgICAgIC5hZGRJdGVtKGl0ZW0oXCJ2ZXJ0aWNhbC10aHJlZS1kb3RzXCIsIFwiQ29sbGFwc2UgdGFncyBhdCB0aGlzIGxldmVsXCIsICgpID0+IHRvZ2dsZSh0cnVlICkpKVxuICAgICAgICAgICAgLmFkZEl0ZW0oaXRlbShcImV4cGFuZC12ZXJ0aWNhbGx5XCIgICwgXCJFeHBhbmQgdGFncyBhdCB0aGlzIGxldmVsXCIgICwgKCkgPT4gdG9nZ2xlKGZhbHNlKSkpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsZWFmVmlldyhjb250YWluZXJFbCkge1xuICAgICAgICBsZXQgdmlldztcbiAgICAgICAgdGhpcy5hcHAud29ya3NwYWNlLml0ZXJhdGVBbGxMZWF2ZXMoKGxlYWYpID0+IHtcbiAgICAgICAgICAgIGlmIChsZWFmLmNvbnRhaW5lckVsID09PSBjb250YWluZXJFbCkgeyB2aWV3ID0gbGVhZi52aWV3OyByZXR1cm4gdHJ1ZTsgfVxuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gdmlldztcbiAgICB9XG5cblxuICAgIGFzeW5jIHJlbmFtZSh0YWdOYW1lKSB7XG4gICAgICAgIGNvbnN0IHNjb3BlID0gbmV3IFNjb3BlO1xuICAgICAgICB0aGlzLmFwcC5rZXltYXAucHVzaFNjb3BlKHNjb3BlKTtcbiAgICAgICAgdHJ5IHsgYXdhaXQgcmVuYW1lVGFnKHRoaXMuYXBwLCB0YWdOYW1lKTsgfVxuICAgICAgICBjYXRjaCAoZSkgeyBjb25zb2xlLmVycm9yKGUpOyBuZXcgTm90aWNlKFwiZXJyb3I6IFwiICsgZSk7IH1cbiAgICAgICAgdGhpcy5hcHAua2V5bWFwLnBvcFNjb3BlKHNjb3BlKTtcbiAgICB9XG5cbn1cblxuZnVuY3Rpb24gaXRlbShpY29uLCB0aXRsZSwgY2xpY2spIHtcbiAgICByZXR1cm4gaSA9PiBpLnNldEljb24oaWNvbikuc2V0VGl0bGUodGl0bGUpLm9uQ2xpY2soY2xpY2spO1xufVxuXG5cbmNsYXNzIFRhZ1BhZ2VVSUhhbmRsZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIC8vIEhhbmRsZSBob3ZlcmluZyBhbmQgY2xpY2tzLXRvLW9wZW4gZm9yIHRhZyBwYWdlc1xuXG4gICAgY29uc3RydWN0b3IocGx1Z2luLCBvcHRzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMub3B0cyA9IG9wdHNcbiAgICAgICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XG4gICAgfVxuXG4gICAgb25sb2FkKCkge1xuICAgICAgICBjb25zdCB7c2VsZWN0b3IsIGNvbnRhaW5lciwgaG92ZXJTb3VyY2UsIHRvVGFnfSA9IHRoaXMub3B0cztcbiAgICAgICAgdGhpcy5yZWdpc3RlcihcbiAgICAgICAgICAgIC8vIFNob3cgdGFnIHBhZ2Ugb24gaG92ZXJcbiAgICAgICAgICAgIG9uRWxlbWVudChkb2N1bWVudCwgXCJtb3VzZW92ZXJcIiwgc2VsZWN0b3IsIChldmVudCwgdGFyZ2V0RWwpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YWdOYW1lID0gdG9UYWcodGFyZ2V0RWwpLCB0cCA9IHRhZ05hbWUgJiYgdGhpcy5wbHVnaW4udGFnUGFnZSh0YWdOYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAodHApIHRoaXMucGx1Z2luLmFwcC53b3Jrc3BhY2UudHJpZ2dlcignaG92ZXItbGluaycsIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQsIHNvdXJjZTogaG92ZXJTb3VyY2UsIHRhcmdldEVsLCBsaW5rdGV4dDogdHAucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgaG92ZXJQYXJlbnQ6IHRhcmdldEVsLm1hdGNoUGFyZW50KGNvbnRhaW5lcilcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIHtjYXB0dXJlOiBmYWxzZX0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXIoXG4gICAgICAgICAgICAvLyBPcGVuIHRhZyBwYWdlIHcvYWx0IGNsaWNrIChjdXJyZW50IHBhbmUpIG9yIGN0cmwvY21kL21pZGRsZSBjbGljayAobmV3IHBhbmUpXG4gICAgICAgICAgICBvbkVsZW1lbnQoZG9jdW1lbnQsIFwiY2xpY2tcIiwgc2VsZWN0b3IsIChldmVudCwgdGFyZ2V0RWwpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7YWx0S2V5fSA9IGV2ZW50O1xuICAgICAgICAgICAgICAgIGlmICghS2V5bWFwLmlzTW9kRXZlbnQoZXZlbnQpICYmICFhbHRLZXkpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB0YWdOYW1lID0gdG9UYWcodGFyZ2V0RWwpLCB0cCA9IHRhZ05hbWUgJiYgdGhpcy5wbHVnaW4udGFnUGFnZSh0YWdOYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAodHApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4ub3BlblRhZ1BhZ2UodHAsIGZhbHNlLCAhYWx0S2V5KTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB7Y2FwdHVyZTogdHJ1ZX0pXG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbInF1ZXJ5IiwiY3VycmlmeSIsInNldCIsInN0b3JlIiwiTm90aWNlIiwiU0NBTEFSIiwic3RyaW5naWZ5IiwiZmxvYXROYU4iLCJmbG9hdEV4cCIsImZsb2F0IiwiaW50SWRlbnRpZnkiLCJpbnRSZXNvbHZlIiwiaW50U3RyaW5naWZ5IiwiaW50T2N0IiwiaW50IiwiaW50SGV4Iiwic2NoZW1hIiwic2NoZW1hJDIiLCJDU1Quc2V0U2NhbGFyVmFsdWUiLCJDU1Quc3RyaW5naWZ5IiwicGFyc2VGcm9udE1hdHRlclRhZ3MiLCJwYXJzZUZyb250TWF0dGVyQWxpYXNlcyIsIlBsdWdpbiIsIk1lbnUiLCJLZXltYXAiLCJTY29wZSIsIkNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0FBQ2xCO0FBQ0EsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMzQyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUM5QyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDakQsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNwRCxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUN2RCxDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLO0FBQ2pDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FB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QUM7QUFDcEMsSUFBSSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN6QyxJQUFJLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNqRCxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLEVBQUU7QUFDdkMsUUFBUSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLHFCQUFxQjtBQUNqRCxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztBQUMzRCxRQUFRLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQzdCLFFBQVEsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDNUIsS0FBSztBQUNMLFNBQVM7QUFDVCxRQUFRLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFDakMsUUFBUSxNQUFNLE1BQU0sR0FBRyxRQUFRLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0QsUUFBUSxNQUFNLEtBQUssR0FBRztBQUN0QixZQUFZLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtBQUN6RSxTQUFTLENBQUM7QUFDVixRQUFRLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQztBQUM5RSxZQUFZLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUks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 +
`}function ai(s){let e=Object.keys(s),t=Xt((n,i,r)=>``);return e.map(t(s)).join("")}function at(s,e,t,n,i){let r=Ht(),o=Ht(),a=["cancel","close","ok"],l=new Promise((u,h)=>{let p=i&&i.cancel===!1,g=()=>{},m=()=>h(Error());r(u),o(p?g:m)}),c=oi(s,e,t,n),f=si("div",{innerHTML:c,className:"smalltalk",style:`z-index: ${Fs(Fs()+1)}`});for(let u of R(f,["ok","input"]))u.focus();for(let u of R(f,["input"]))u.setSelectionRange(0,t.length);pi("click",f,a,u=>{Us(u.target,f,r(),o())});for(let u of["click","contextmenu"])f.addEventListener(u,h=>{h.stopPropagation();for(let p of R(f,["ok","input"]))p.focus()});return f.addEventListener("keydown",ni(f,r(),o())),Object.assign(l,{dialog:f,ok:r})}function li(s,e,t,n){let i={ENTER:13,ESC:27,TAB:9,LEFT:37,UP:38,RIGHT:39,DOWN:40},{keyCode:r}=n,o=n.target,l=R(s,["ok","cancel","input"]).map(Zt);switch(r){case i.ENTER:Us(o,s,e,t),n.preventDefault();break;case i.ESC:$e(s),t();break;case i.TAB:n.shiftKey&&Ks(s,l),Ks(s,l),n.preventDefault();break;default:["left","right","up","down"].filter(c=>r===i[c.toUpperCase()]).forEach(()=>{fi(s,l)});break}n.stopPropagation()}function Zt(s){return s.getAttribute("data-name").replace("js-","")}var ci=s=>s==="cancel"?"ok":"cancel";function fi(s,e){let t=document.activeElement,n=Zt(t),i=/ok|cancel/.test(n),r=e.length-1;if(n==="input"||!r||!i)return;let o=ci(n);for(let a of R(s,[o]))a.focus()}var ui=(s,e)=>e===s?0:e+1;function Ks(s,e){let t=document.activeElement,n=Zt(t),i=e.length-1,r=e.indexOf(n),o=ui(i,r),a=e[o];for(let l of R(s,[a]))l.focus()}function Us(s,e,t,n){let i=s.getAttribute("data-name").replace("js-","");if(/close|cancel/.test(i)){n(),$e(e);return}let r=R(e,["input"]).reduce((o,a)=>a.value,null);t(r),$e(e)}var hi=Xt((s,e)=>s.querySelector(`[data-name="js-${e}"]`));function R(s,e){return e.map(hi(s)).filter(Boolean)}function pi(s,e,t,n){for(let i of R(e,t))i.addEventListener(s,n)}function $e(s){let{parentElement:e}=s;e&&e.removeChild(s)}});var ir={};Cs(ir,{default:()=>Ut});module.exports=Qn(ir);var P=require("obsidian");var Dn=Jt(lt());var Vs=Jt(lt()),_e=class{constructor(e,t){this.progress=(0,Vs.progress)(e,t),this.progress.catch(n=>{this.aborted=!0,n&&(n.constructor!==Error||n.message!=="")&&console.error(n)}),this.dialog=this.progress.dialog,this.aborted=!1}async forEach(e,t){try{if(this.aborted)return;let n=0,i=e.length,r=0,o=0;for(let a of e){if(await t(a,n++,e,this),this.aborted)return;if(r+=100,r>i){let l=r%i,c=(r-l)/i;this.progress.setProgress(o+=c),r=l}}return o<100&&this.progress.setProgress(100),this}finally{this.progress.remove()}}set title(e){this.dialog.querySelector("header").textContent=e}get title(){return this.dialog.querySelector("header").textContent}set message(e){let t=this.dialog.querySelector(".content-area").childNodes[0].textContent=e}get message(){return this.dialog.querySelector(".content-area").childNodes[0].textContent}};var Js=require("obsidian"),Ys=Jt(lt());async function Gs(s,e,t="",n=".*",i="entry"){for(;;){let r=(0,Ys.prompt)(s,e,t),o=r.dialog.find("input"),a=c=>new RegExp(`^${n}$`).test(c);o.setSelectionRange(t.length,t.length),o.pattern=n,o.oninput=()=>o.setAttribute("aria-invalid",!a(o.value));let l=await r;if(a(l))return l;new Js.Notice(`"${l}" is not a valid ${i}`)}}var we=require("obsidian");var mi=/^#[^\u2000-\u206F\u2E00-\u2E7F'!"#$%&()*+,.:;<=>?@^`{|}~\[\]\\\s]+$/,I=class{constructor(e){let t=this.tag=I.toTag(e),n=this.canonical=t.toLowerCase(),i=this.canonical_prefix=n+"/";this.name=t.slice(1),this.matches=function(r){return r=r.toLowerCase(),r==n||r.startsWith(i)}}toString(){return this.tag}static isTag(e){return mi.test(e)}static toTag(e){for(;e.startsWith("##");)e=e.slice(1);return e.startsWith("#")?e:"#"+e}static canonical(e){return I.toTag(e).toLowerCase()}},ct=class{constructor(e,t){let n=Object.assign(Object.create(null),{[e.tag]:t.tag,[e.name]:t.name});this.inString=function(i,r=0){return i.slice(0,r)+t.tag+i.slice(r+e.tag.length)},this.inArray=(i,r,o)=>i.map((a,l)=>{if(r&&l&1||!a)return a;if(o){if(!a.startsWith("#")||!I.isTag(a))return a}else if(/[ ,\n]/.test(a))return this.inArray(a.split(/([, \n]+)/),!0).join("");if(n[a])return n[a];let c=a.toLowerCase();return n[c]?n[a]=n[c]:c.startsWith(e.canonical_prefix)?n[a]=n[c]=this.inString(a):("#"+c).startsWith(e.canonical_prefix)?n[a]=n[c]=this.inString("#"+a).slice(1):n[a]=n[c]=a}),this.willMergeTags=function(i){if(e.canonical===t.canonical)return;let r=new Set(i.map(o=>o.toLowerCase()));for(let o of i.filter(e.matches)){let a=this.inString(o);if(r.has(a.toLowerCase()))return[new I(o),new I(a)]}}}};var Ts=require("obsidian");var ft=Symbol.for("yaml.alias"),ut=Symbol.for("yaml.document"),U=Symbol.for("yaml.map"),es=Symbol.for("yaml.pair"),q=Symbol.for("yaml.scalar"),ne=Symbol.for("yaml.seq"),B=Symbol.for("yaml.node.type"),V=s=>!!s&&typeof s=="object"&&s[B]===ft,Se=s=>!!s&&typeof s=="object"&&s[B]===ut,D=s=>!!s&&typeof s=="object"&&s[B]===U,O=s=>!!s&&typeof s=="object"&&s[B]===es,v=s=>!!s&&typeof s=="object"&&s[B]===q,J=s=>!!s&&typeof s=="object"&&s[B]===ne;function T(s){if(s&&typeof s=="object")switch(s[B]){case U:case ne:return!0}return!1}function E(s){if(s&&typeof s=="object")switch(s[B]){case ft:case U:case q:case ne:return!0}return!1}var Qs=s=>(v(s)||T(s))&&!!s.anchor,ce=class{constructor(e){Object.defineProperty(this,B,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}};var ge=Symbol("break visit"),di=Symbol("skip children"),Me=Symbol("remove node");function Y(s,e){typeof e=="object"&&(e.Collection||e.Node||e.Value)&&(e=Object.assign({Alias:e.Node,Map:e.Node,Scalar:e.Node,Seq:e.Node},e.Value&&{Map:e.Value,Scalar:e.Value,Seq:e.Value},e.Collection&&{Map:e.Collection,Seq:e.Collection},e)),Se(s)?ke(null,s.contents,e,Object.freeze([s]))===Me&&(s.contents=null):ke(null,s,e,Object.freeze([]))}Y.BREAK=ge;Y.SKIP=di;Y.REMOVE=Me;function ke(s,e,t,n){let i;if(typeof t=="function"?i=t(s,e,n):D(e)?t.Map&&(i=t.Map(s,e,n)):J(e)?t.Seq&&(i=t.Seq(s,e,n)):O(e)?t.Pair&&(i=t.Pair(s,e,n)):v(e)?t.Scalar&&(i=t.Scalar(s,e,n)):V(e)&&t.Alias&&(i=t.Alias(s,e,n)),E(i)||O(i)){let r=n[n.length-1];if(T(r))r.items[s]=i;else if(O(r))s==="key"?r.key=i:r.value=i;else if(Se(r))r.contents=i;else{let o=V(r)?"alias":"scalar";throw new Error(`Cannot replace node with ${o} parent`)}return ke(s,i,t,n)}if(typeof i!="symbol"){if(T(e)){n=Object.freeze(n.concat(e));for(let r=0;rs.replace(/[!,[\]{}]/g,e=>gi[e]),C=class{constructor(e,t){this.marker=null,this.yaml=Object.assign({},C.defaultYaml,e),this.tags=Object.assign({},C.defaultTags,t)}clone(){let e=new C(this.yaml,this.tags);return e.marker=this.marker,e}atDocument(){let e=new C(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:C.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},C.defaultTags);break}return e}add(e,t){this.atNextDocument&&(this.yaml={explicit:C.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},C.defaultTags),this.atNextDocument=!1);let n=e.trim().split(/[ \t]+/),i=n.shift();switch(i){case"%TAG":{if(n.length!==2&&(t(0,"%TAG directive should contain exactly two parts"),n.length<2))return!1;let[r,o]=n;return this.tags[r]=o,!0}case"%YAML":{if(this.yaml.explicit=!0,n.length<1)return t(0,"%YAML directive should contain exactly one part"),!1;let[r]=n;return r==="1.1"||r==="1.2"?(this.yaml.version=r,!0):(t(6,`Unsupported YAML version ${r}`,!0),!1)}default:return t(0,`Unknown directive ${i}`,!0),!1}}tagName(e,t){if(e==="!")return"!";if(e[0]!=="!")return t(`Not a valid tag: ${e}`),null;if(e[1]==="<"){let o=e.slice(2,-1);return o==="!"||o==="!!"?(t(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==">"&&t("Verbatim tags must end with a >"),o)}let[,n,i]=e.match(/^(.*!)([^!]*)$/);i||t(`The ${e} tag has no suffix`);let r=this.tags[n];return r?r+decodeURIComponent(i):n==="!"?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,n]of Object.entries(this.tags))if(e.startsWith(n))return t+yi(e.substring(n.length));return e[0]==="!"?e:`!<${e}>`}toString(e){let t=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],n=Object.entries(this.tags),i;if(e&&n.length>0&&E(e.contents)){let r={};Y(e.contents,(o,a)=>{E(a)&&a.tag&&(r[a.tag]=!0)}),i=Object.keys(r)}else i=[];for(let[r,o]of n)r==="!!"&&o==="tag:yaml.org,2002:"||(!e||i.some(a=>a.startsWith(o)))&&t.push(`%TAG ${r} ${o}`);return t.join(` +`)}};C.defaultYaml={explicit:!1,version:"1.2"};C.defaultTags={"!!":"tag:yaml.org,2002:"};function ht(s){if(/[\x00-\x19\s,[\]{}]/.test(s)){let t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(s)}`;throw new Error(t)}return!0}function ts(s){let e=new Set;return Y(s,{Value(t,n){n.anchor&&e.add(n.anchor)}}),e}function ss(s,e){for(let t=1;;++t){let n=`${s}${t}`;if(!e.has(n))return n}}function Ws(s,e){let t=[],n=new Map,i=null;return{onAnchor(r){t.push(r),i||(i=ts(s));let o=ss(e,i);return i.add(o),o},setAnchors(){for(let r of t){let o=n.get(r);if(typeof o=="object"&&o.anchor&&(v(o.node)||T(o.node)))o.node.anchor=o.anchor;else{let a=new Error("Failed to resolve repeated object (this should not happen)");throw a.source=r,a}}},sourceObjects:n}}var ie=class extends ce{constructor(e){super(ft),this.source=e,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(e){let t;return Y(e,{Node:(n,i)=>{if(i===this)return Y.BREAK;i.anchor===this.source&&(t=i)}}),t}toJSON(e,t){if(!t)return{source:this.source};let{anchors:n,doc:i,maxAliasCount:r}=t,o=this.resolve(i);if(!o){let l=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(l)}let a=n.get(o);if(!a||a.res===void 0){let l="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(l)}if(r>=0&&(a.count+=1,a.aliasCount===0&&(a.aliasCount=pt(i,o,n)),a.count*a.aliasCount>r)){let l="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(l)}return a.res}toString(e,t,n){let i=`*${this.source}`;if(e){if(ht(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let r=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(r)}if(e.implicitKey)return`${i} `}return i}};function pt(s,e,t){if(V(e)){let n=e.resolve(s),i=t&&n&&t.get(n);return i?i.count*i.aliasCount:0}else if(T(e)){let n=0;for(let i of e.items){let r=pt(s,i,t);r>n&&(n=r)}return n}else if(O(e)){let n=pt(s,e.key,t),i=pt(s,e.value,t);return Math.max(n,i)}return 1}function M(s,e,t){if(Array.isArray(s))return s.map((n,i)=>M(n,String(i),t));if(s&&typeof s.toJSON=="function"){if(!t||!Qs(s))return s.toJSON(e,t);let n={aliasCount:0,count:1,res:void 0};t.anchors.set(s,n),t.onCreate=r=>{n.res=r,delete t.onCreate};let i=s.toJSON(e,t);return t.onCreate&&t.onCreate(i),i}return typeof s=="bigint"&&!(t&&t.keep)?Number(s):s}var mt=s=>!s||typeof s!="function"&&typeof s!="object",S=class extends ce{constructor(e){super(q),this.value=e}toJSON(e,t){return t&&t.keep?this.value:M(this.value,e,t)}toString(){return String(this.value)}};S.BLOCK_FOLDED="BLOCK_FOLDED";S.BLOCK_LITERAL="BLOCK_LITERAL";S.PLAIN="PLAIN";S.QUOTE_DOUBLE="QUOTE_DOUBLE";S.QUOTE_SINGLE="QUOTE_SINGLE";var bi="tag:yaml.org,2002:";function wi(s,e,t){if(e){let n=t.filter(r=>r.tag===e),i=n.find(r=>!r.format)||n[0];if(!i)throw new Error(`Tag ${e} not found`);return i}return t.find(n=>n.identify&&n.identify(s)&&!n.format)}function re(s,e,t){var n,i;if(Se(s)&&(s=s.contents),E(s))return s;if(O(s)){let p=(i=(n=t.schema[U]).createNode)===null||i===void 0?void 0:i.call(n,t.schema,null,t);return p.items.push(s),p}(s instanceof String||s instanceof Number||s instanceof Boolean||typeof BigInt=="function"&&s instanceof BigInt)&&(s=s.valueOf());let{aliasDuplicateObjects:r,onAnchor:o,onTagObj:a,schema:l,sourceObjects:c}=t,f;if(r&&s&&typeof s=="object"){if(f=c.get(s),f)return f.anchor||(f.anchor=o(s)),new ie(f.anchor);f={anchor:null,node:null},c.set(s,f)}e&&e.startsWith("!!")&&(e=bi+e.slice(2));let u=wi(s,e,l.tags);if(!u){if(s&&typeof s.toJSON=="function"&&(s=s.toJSON()),!s||typeof s!="object"){let p=new S(s);return f&&(f.node=p),p}u=s instanceof Map?l[U]:Symbol.iterator in Object(s)?l[ne]:l[U]}a&&(a(u),delete t.onTagObj);let h=u!=null&&u.createNode?u.createNode(t.schema,s,t):new S(s);return e&&(h.tag=e),f&&(f.node=h),h}function Be(s,e,t){let n=t;for(let i=e.length-1;i>=0;--i){let r=e[i];if(typeof r=="number"&&Number.isInteger(r)&&r>=0){let o=[];o[r]=n,n=o}else n=new Map([[r,n]])}return re(n,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:s,sourceObjects:new Map})}var Ne=s=>s==null||typeof s=="object"&&!!s[Symbol.iterator]().next().done,oe=class extends ce{constructor(e,t){super(e),Object.defineProperty(this,"schema",{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(n=>E(n)||O(n)?n.clone(e):n),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(Ne(e))this.add(t);else{let[n,...i]=e,r=this.get(n,!0);if(T(r))r.addIn(i,t);else if(r===void 0&&this.schema)this.set(n,Be(this.schema,i,t));else throw new Error(`Expected YAML collection at ${n}. Remaining path: ${i}`)}}deleteIn(e){let[t,...n]=e;if(n.length===0)return this.delete(t);let i=this.get(t,!0);if(T(i))return i.deleteIn(n);throw new Error(`Expected YAML collection at ${t}. Remaining path: ${n}`)}getIn(e,t){let[n,...i]=e,r=this.get(n,!0);return i.length===0?!t&&v(r)?r.value:r:T(r)?r.getIn(i,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!O(t))return!1;let n=t.value;return n==null||e&&v(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(e){let[t,...n]=e;if(n.length===0)return this.has(t);let i=this.get(t,!0);return T(i)?i.hasIn(n):!1}setIn(e,t){let[n,...i]=e;if(i.length===0)this.set(n,t);else{let r=this.get(n,!0);if(T(r))r.setIn(i,t);else if(r===void 0&&this.schema)this.set(n,Be(this.schema,i,t));else throw new Error(`Expected YAML collection at ${n}. Remaining path: ${i}`)}}};oe.maxFlowStringSingleLineLength=60;var Hs=s=>s.replace(/^(?!$)(?: $)?/gm,"#");function z(s,e){return/^\n+$/.test(s)?s.substring(1):e?s.replace(/^(?! *$)/gm,e):s}var G=(s,e,t)=>t.includes(` +`)?` +`+z(t,e):(s.endsWith(" ")?"":" ")+t;var ns="flow",dt="block",xe="quoted";function je(s,e,t="flow",{indentAtStart:n,lineWidth:i=80,minContentWidth:r=20,onFold:o,onOverflow:a}={}){if(!i||i<0)return s;let l=Math.max(1+r,1+i-e.length);if(s.length<=l)return s;let c=[],f={},u=i-e.length;typeof n=="number"&&(n>i-Math.max(2,r)?c.push(0):u=i-n);let h,p,g=!1,m=-1,d=-1,y=-1;t===dt&&(m=Xs(s,m),m!==-1&&(u=m+l));for(let N;N=s[m+=1];){if(t===xe&&N==="\\"){switch(d=m,s[m+1]){case"x":m+=3;break;case"u":m+=5;break;case"U":m+=9;break;default:m+=1}y=m}if(N===` +`)t===dt&&(m=Xs(s,m)),u=m+l,h=void 0;else{if(N===" "&&p&&p!==" "&&p!==` +`&&p!==" "){let b=s[m+1];b&&b!==" "&&b!==` +`&&b!==" "&&(h=m)}if(m>=u)if(h)c.push(h),u=h+l,h=void 0;else if(t===xe){for(;p===" "||p===" ";)p=N,N=s[m+=1],g=!0;let b=m>y+1?m-2:d-1;if(f[b])return s;c.push(b),f[b]=!0,u=b+l,h=void 0}else g=!0}p=N}if(g&&a&&a(),c.length===0)return s;o&&o();let w=s.slice(0,c[0]);for(let N=0;N({indentAtStart:s.indentAtStart,lineWidth:s.options.lineWidth,minContentWidth:s.options.minContentWidth}),bt=s=>/^(%|---|\.\.\.)/m.test(s);function Si(s,e,t){if(!e||e<0)return!1;let n=e-t,i=s.length;if(i<=n)return!1;for(let r=0,o=0;rn)return!0;if(o=r+1,i-o<=n)return!1}return!0}function De(s,e){let t=JSON.stringify(s);if(e.options.doubleQuotedAsJSON)return t;let{implicitKey:n}=e,i=e.options.doubleQuotedMinMultiLineLength,r=e.indent||(bt(s)?" ":""),o="",a=0;for(let l=0,c=t[l];c;c=t[++l])if(c===" "&&t[l+1]==="\\"&&t[l+2]==="n"&&(o+=t.slice(a,l)+"\\ ",l+=1,a=l,c="\\"),c==="\\")switch(t[l+1]){case"u":{o+=t.slice(a,l);let f=t.substr(l+2,4);switch(f){case"0000":o+="\\0";break;case"0007":o+="\\a";break;case"000b":o+="\\v";break;case"001b":o+="\\e";break;case"0085":o+="\\N";break;case"00a0":o+="\\_";break;case"2028":o+="\\L";break;case"2029":o+="\\P";break;default:f.substr(0,2)==="00"?o+="\\x"+f.substr(2):o+=t.substr(l,6)}l+=5,a=l+1}break;case"n":if(n||t[l+2]==='"'||t.length +`;let u,h;for(h=t.length;h>0;--h){let A=t[h-1];if(A!==` +`&&A!==" "&&A!==" ")break}let p=t.substring(h),g=p.indexOf(` +`);g===-1?u="-":t===p||g!==p.length-1?(u="+",r&&r()):u="",p&&(t=t.slice(0,-p.length),p[p.length-1]===` +`&&(p=p.slice(0,-1)),p=p.replace(/\n+(?!\n|$)/g,`$&${c}`));let m=!1,d,y=-1;for(d=0;d")+(m?c?"2":"1":"")+u;if(s&&(b+=" "+a(s.replace(/ ?[\r\n]+/g," ")),i&&i()),f)return t=t.replace(/\n+/g,`$&${c}`),`${b} +${c}${w}${t}${p}`;t=t.replace(/\n+/g,` +$&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${c}`);let k=je(`${w}${t}${p}`,c,dt,yt(n));return`${b} +${c}${k}`}function ki(s,e,t,n){let{type:i,value:r}=s,{actualString:o,implicitKey:a,indent:l,inFlow:c}=e;if(a&&/[\n[\]{},]/.test(r)||c&&/[[\]{},]/.test(r))return qe(r,e);if(!r||/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(r))return a||c||r.indexOf(` +`)===-1?qe(r,e):gt(s,e,t,n);if(!a&&!c&&i!==S.PLAIN&&r.indexOf(` +`)!==-1)return gt(s,e,t,n);if(l===""&&bt(r))return e.forceBlockIndent=!0,gt(s,e,t,n);let f=r.replace(/\n+/g,`$& +${l}`);if(o){let u=g=>{var m;return g.default&&g.tag!=="tag:yaml.org,2002:str"&&((m=g.test)===null||m===void 0?void 0:m.test(f))},{compat:h,tags:p}=e.doc.schema;if(p.some(u)||(h==null?void 0:h.some(u)))return qe(r,e)}return a?f:je(f,l,ns,yt(e))}function ae(s,e,t,n){let{implicitKey:i,inFlow:r}=e,o=typeof s.value=="string"?s:Object.assign({},s,{value:String(s.value)}),{type:a}=s;a!==S.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(o.value)&&(a=S.QUOTE_DOUBLE);let l=f=>{switch(f){case S.BLOCK_FOLDED:case S.BLOCK_LITERAL:return i||r?qe(o.value,e):gt(o,e,t,n);case S.QUOTE_DOUBLE:return De(o.value,e);case S.QUOTE_SINGLE:return is(o.value,e);case S.PLAIN:return ki(o,e,t,n);default:return null}},c=l(a);if(c===null){let{defaultKeyType:f,defaultStringType:u}=e.options,h=i&&f||u;if(c=l(h),c===null)throw new Error(`Unsupported default string type ${h}`)}return c}function wt(s,e){let t=Object.assign({blockQuote:!0,commentString:Hs,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trueStr:"true",verifyAliasOrder:!0},s.schema.toStringOptions,e),n;switch(t.collectionStyle){case"block":n=!1;break;case"flow":n=!0;break;default:n=null}return{anchors:new Set,doc:s,indent:"",indentStep:typeof t.indent=="number"?" ".repeat(t.indent):" ",inFlow:n,options:t}}function Ni(s,e){if(e.tag){let i=s.filter(r=>r.tag===e.tag);if(i.length>0)return i.find(r=>r.format===e.format)||i[0]}let t,n;if(v(e)){n=e.value;let i=s.filter(r=>r.identify&&r.identify(n));t=i.find(r=>r.format===e.format)||i.find(r=>!r.format)}else n=e,t=s.find(i=>i.nodeClass&&n instanceof i.nodeClass);if(!t){let i=n&&n.constructor?n.constructor.name:typeof n;throw new Error(`Tag not resolved for ${i} value`)}return t}function vi(s,e,{anchors:t,doc:n}){if(!n.directives)return"";let i=[],r=(v(s)||T(s))&&s.anchor;r&&ht(r)&&(t.add(r),i.push(`&${r}`));let o=s.tag||(e.default?null:e.tag);return o&&i.push(n.directives.tagString(o)),i.join(" ")}function Q(s,e,t,n){var i;if(O(s))return s.toString(e,t,n);if(V(s)){if(e.doc.directives)return s.toString(e);if(!((i=e.resolvedAliases)===null||i===void 0)&&i.has(s))throw new TypeError("Cannot stringify circular structure without alias nodes");e.resolvedAliases?e.resolvedAliases.add(s):e.resolvedAliases=new Set([s]),s=s.resolve(e.doc)}let r,o=E(s)?s:e.doc.createNode(s,{onTagObj:c=>r=c});r||(r=Ni(e.doc.schema.tags,o));let a=vi(o,r,e);a.length>0&&(e.indentAtStart=(e.indentAtStart||0)+a.length+1);let l=typeof r.stringify=="function"?r.stringify(o,e,t,n):v(o)?ae(o,e,t,n):o.toString(e,t,n);return a?v(o)||l[0]==="{"||l[0]==="["?`${a} ${l}`:`${a} +${e.indent}${l}`:l}function zs({key:s,value:e},t,n,i){let{allNullValues:r,doc:o,indent:a,indentStep:l,options:{commentString:c,indentSeq:f,simpleKeys:u}}=t,h=E(s)&&s.comment||null;if(u){if(h)throw new Error("With simple keys, key nodes cannot have comments");if(T(s)){let A="With simple keys, collection cannot be used as a key value";throw new Error(A)}}let p=!u&&(!s||h&&e==null&&!t.inFlow||T(s)||(v(s)?s.type===S.BLOCK_FOLDED||s.type===S.BLOCK_LITERAL:typeof s=="object"));t=Object.assign({},t,{allNullValues:!1,implicitKey:!p&&(u||!r),indent:a+l});let g=!1,m=!1,d=Q(s,t,()=>g=!0,()=>m=!0);if(!p&&!t.inFlow&&d.length>1024){if(u)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");p=!0}if(t.inFlow){if(r||e==null)return g&&n&&n(),p?`? ${d}`:d}else if(r&&!u||e==null&&p)return d=`? ${d}`,h&&!g?d+=G(d,t.indent,c(h)):m&&i&&i(),d;g&&(h=null),p?(h&&(d+=G(d,t.indent,c(h))),d=`? ${d} +${a}:`):(d=`${d}:`,h&&(d+=G(d,t.indent,c(h))));let y="",w=null;if(E(e)){if(e.spaceBefore&&(y=` +`),e.commentBefore){let A=c(e.commentBefore);y+=` +${z(A,t.indent)}`}w=e.comment}else e&&typeof e=="object"&&(e=o.createNode(e));t.implicitKey=!1,!p&&!h&&v(e)&&(t.indentAtStart=d.length+1),m=!1,!f&&l.length>=2&&!t.inFlow&&!p&&J(e)&&!e.flow&&!e.tag&&!e.anchor&&(t.indent=t.indent.substr(2));let N=!1,b=Q(e,t,()=>N=!0,()=>m=!0),k=" ";return y||h?k=b===""&&!t.inFlow?y:`${y} +${t.indent}`:!p&&T(e)?(!(b[0]==="["||b[0]==="{")||b.includes(` +`))&&(k=` +${t.indent}`):(b===""||b[0]===` +`)&&(k=""),d+=k+b,t.inFlow?N&&n&&n():w&&!N?d+=G(d,t.indent,c(w)):m&&i&&i(),d}function rs(s,e){(s==="debug"||s==="warn")&&(typeof process!="undefined"&&process.emitWarning?process.emitWarning(e):console.warn(e))}var Zs="<<";function St(s,e,{key:t,value:n}){if(s&&s.doc.schema.merge&&Oi(t))if(n=V(n)?n.resolve(s.doc):n,J(n))for(let i of n.items)os(s,e,i);else if(Array.isArray(n))for(let i of n)os(s,e,i);else os(s,e,n);else{let i=M(t,"",s);if(e instanceof Map)e.set(i,M(n,i,s));else if(e instanceof Set)e.add(i);else{let r=Ai(t,i,s),o=M(n,r,s);r in e?Object.defineProperty(e,r,{value:o,writable:!0,enumerable:!0,configurable:!0}):e[r]=o}}return e}var Oi=s=>s===Zs||v(s)&&s.value===Zs&&(!s.type||s.type===S.PLAIN);function os(s,e,t){let n=s&&V(t)?t.resolve(s.doc):t;if(!D(n))throw new Error("Merge sources must be maps or map aliases");let i=n.toJSON(null,s,Map);for(let[r,o]of i)e instanceof Map?e.has(r)||e.set(r,o):e instanceof Set?e.add(r):Object.prototype.hasOwnProperty.call(e,r)||Object.defineProperty(e,r,{value:o,writable:!0,enumerable:!0,configurable:!0});return e}function Ai(s,e,t){if(e===null)return"";if(typeof e!="object")return String(e);if(E(s)&&t&&t.doc){let n=wt(t.doc,{});n.anchors=new Set;for(let r of t.anchors.keys())n.anchors.add(r.anchor);n.inFlow=!0,n.inStringifyKey=!0;let i=s.toString(n);if(!t.mapKeyWarned){let r=JSON.stringify(i);r.length>40&&(r=r.substring(0,36)+'..."'),rs(t.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${r}. Set mapAsMap: true to use object keys.`),t.mapKeyWarned=!0}return i}return JSON.stringify(e)}function ve(s,e,t){let n=re(s,void 0,t),i=re(e,void 0,t);return new L(n,i)}var L=class{constructor(e,t=null){Object.defineProperty(this,B,{value:es}),this.key=e,this.value=t}clone(e){let{key:t,value:n}=this;return E(t)&&(t=t.clone(e)),E(n)&&(n=n.clone(e)),new L(t,n)}toJSON(e,t){let n=t&&t.mapAsMap?new Map:{};return St(t,n,this)}toString(e,t,n){return e&&e.doc?zs(this,e,t,n):JSON.stringify(this)}};var Fe={intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,uniqueKeys:!0,version:"1.2"};function Nt(s,e,t){var n;return(((n=e.inFlow)!==null&&n!==void 0?n:s.flow)?Ti:Ei)(s,e,t)}function Ei({comment:s,items:e},t,{blockItemPrefix:n,flowChars:i,itemIndent:r,onChompKeep:o,onComment:a}){let{indent:l,options:{commentString:c}}=t,f=Object.assign({},t,{indent:r,type:null}),u=!1,h=[];for(let g=0;gd=null,()=>u=!0);d&&(y+=G(y,r,c(d))),u&&d&&(u=!1),h.push(n+y)}let p;if(h.length===0)p=i.start+i.end;else{p=h[0];for(let g=1;gw=null);du||N.includes(` +`))&&(f=!0),h.push(N),u=h.length}let p,{start:g,end:m}=n;if(h.length===0)p=g+m;else if(f||(f=h.reduce((y,w)=>y+w.length+2,2)>oe.maxFlowStringSingleLineLength),f){p=g;for(let d of h)p+=d?` +${a}${o}${d}`:` +`;p+=` +${o}${m}`}else p=`${g} ${h.join(" ")} ${m}`;return s&&(p+=G(p,l(s),o),r&&r()),p}function kt({indent:s,options:{commentString:e}},t,n,i){if(n&&i&&(n=n.replace(/^\n+/,"")),n){let r=z(e(n),s);t.push(r.trimStart())}}function fe(s,e){let t=v(e)?e.value:e;for(let n of s)if(O(n)&&(n.key===e||n.key===t||v(n.key)&&n.key.value===t))return n}var $=class extends oe{constructor(e){super(U,e),this.items=[]}static get tagName(){return"tag:yaml.org,2002:map"}add(e,t){let n;O(e)?n=e:!e||typeof e!="object"||!("key"in e)?n=new L(e,e.value):n=new L(e.key,e.value);let i=fe(this.items,n.key),r=this.schema&&this.schema.sortMapEntries;if(i){if(!t)throw new Error(`Key ${n.key} already set`);v(i.value)&&mt(n.value)?i.value.value=n.value:i.value=n.value}else if(r){let o=this.items.findIndex(a=>r(n,a)<0);o===-1?this.items.push(n):this.items.splice(o,0,n)}else this.items.push(n)}delete(e){let t=fe(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){let n=fe(this.items,e),i=n&&n.value;return!t&&v(i)?i.value:i}has(e){return!!fe(this.items,e)}set(e,t){this.add(new L(e,t),!0)}toJSON(e,t,n){let i=n?new n:t&&t.mapAsMap?new Map:{};t&&t.onCreate&&t.onCreate(i);for(let r of this.items)St(t,i,r);return i}toString(e,t,n){if(!e)return JSON.stringify(this);for(let i of this.items)if(!O(i))throw new Error(`Map items must all be pairs; found ${JSON.stringify(i)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),Nt(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:n,onComment:t})}};function Li(s,e,t){let{keepUndefined:n,replacer:i}=t,r=new $(s),o=(a,l)=>{if(typeof i=="function")l=i.call(e,a,l);else if(Array.isArray(i)&&!i.includes(a))return;(l!==void 0||n)&&r.items.push(ve(a,l,t))};if(e instanceof Map)for(let[a,l]of e)o(a,l);else if(e&&typeof e=="object")for(let a of Object.keys(e))o(a,e[a]);return typeof s.sortMapEntries=="function"&&r.items.sort(s.sortMapEntries),r}var W={collection:"map",createNode:Li,default:!0,nodeClass:$,tag:"tag:yaml.org,2002:map",resolve(s,e){return D(s)||e("Expected a mapping for this tag"),s}};var x=class extends oe{constructor(e){super(ne,e),this.items=[]}static get tagName(){return"tag:yaml.org,2002:seq"}add(e){this.items.push(e)}delete(e){let t=vt(e);return typeof t!="number"?!1:this.items.splice(t,1).length>0}get(e,t){let n=vt(e);if(typeof n!="number")return;let i=this.items[n];return!t&&v(i)?i.value:i}has(e){let t=vt(e);return typeof t=="number"&&t=0?e:null}function Ii(s,e,t){let{replacer:n}=t,i=new x(s);if(e&&Symbol.iterator in Object(e)){let r=0;for(let o of e){if(typeof n=="function"){let a=e instanceof Set?o:String(r++);o=n.call(e,a,o)}i.items.push(re(o,void 0,t))}}return i}var H={collection:"seq",createNode:Ii,default:!0,nodeClass:x,tag:"tag:yaml.org,2002:seq",resolve(s,e){return J(s)||e("Expected a sequence for this tag"),s}};var ue={identify:s=>typeof s=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:s=>s,stringify(s,e,t,n){return e=Object.assign({actualString:!0},e),ae(s,e,t,n)}};var ye={identify:s=>s==null,createNode:()=>new S(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new S(null),stringify:({source:s},e)=>s&&ye.test.test(s)?s:e.options.nullStr};var Ke={identify:s=>typeof s=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:s=>new S(s[0]==="t"||s[0]==="T"),stringify({source:s,value:e},t){if(s&&Ke.test.test(s)){let n=s[0]==="t"||s[0]==="T";if(e===n)return s}return e?t.options.trueStr:t.options.falseStr}};function _({format:s,minFractionDigits:e,tag:t,value:n}){if(typeof n=="bigint")return String(n);let i=typeof n=="number"?n:Number(n);if(!isFinite(i))return isNaN(i)?".nan":i<0?"-.inf":".inf";let r=JSON.stringify(n);if(!s&&e&&(!t||t==="tag:yaml.org,2002:float")&&/^\d/.test(r)){let o=r.indexOf(".");o<0&&(o=r.length,r+=".");let a=e-(r.length-o-1);for(;a-- >0;)r+="0"}return r}var Ot={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF|nan|NaN|NAN))$/,resolve:s=>s.slice(-3).toLowerCase()==="nan"?NaN:s[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:_},At={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:s=>parseFloat(s),stringify(s){let e=Number(s.value);return isFinite(e)?e.toExponential():_(s)}},Et={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(s){let e=new S(parseFloat(s)),t=s.indexOf(".");return t!==-1&&s[s.length-1]==="0"&&(e.minFractionDigits=s.length-t-1),e},stringify:_};var Tt=s=>typeof s=="bigint"||Number.isInteger(s),as=(s,e,t,{intAsBigInt:n})=>n?BigInt(s):parseInt(s.substring(e),t);function en(s,e,t){let{value:n}=s;return Tt(n)&&n>=0?t+n.toString(e):_(s)}var Lt={identify:s=>Tt(s)&&s>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(s,e,t)=>as(s,2,8,t),stringify:s=>en(s,8,"0o")},It={identify:Tt,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(s,e,t)=>as(s,0,10,t),stringify:_},Ct={identify:s=>Tt(s)&&s>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(s,e,t)=>as(s,2,16,t),stringify:s=>en(s,16,"0x")};var tn=[W,H,ue,ye,Ke,Lt,It,Ct,Ot,At,Et];function sn(s){return typeof s=="bigint"||Number.isInteger(s)}var $t=({value:s})=>JSON.stringify(s),Ci=[{identify:s=>typeof s=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:s=>s,stringify:$t},{identify:s=>s==null,createNode:()=>new S(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:$t},{identify:s=>typeof s=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true|false$/,resolve:s=>s==="true",stringify:$t},{identify:sn,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(s,e,{intAsBigInt:t})=>t?BigInt(s):parseInt(s,10),stringify:({value:s})=>sn(s)?s.toString():JSON.stringify(s)},{identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:s=>parseFloat(s),stringify:$t}],$i={default:!0,tag:"",test:/^/,resolve(s,e){return e(`Unresolved plain scalar ${JSON.stringify(s)}`),s}},nn=[W,H].concat(Ci,$i);var Re={identify:s=>s instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(s,e){if(typeof Buffer=="function")return Buffer.from(s,"base64");if(typeof atob=="function"){let t=atob(s.replace(/[\n\r]/g,"")),n=new Uint8Array(t.length);for(let i=0;i1&&e("Each pair must have its own sequence indicator");let i=n.items[0]||new L(new S(null));if(n.commentBefore&&(i.key.commentBefore=i.key.commentBefore?`${n.commentBefore} +${i.key.commentBefore}`:n.commentBefore),n.comment){let r=i.value||i.key;r.comment=r.comment?`${n.comment} +${r.comment}`:n.comment}n=i}s.items[t]=O(n)?n:new L(n)}}else e("Expected a sequence for this tag");return s}function cs(s,e,t){let{replacer:n}=t,i=new x(s);i.tag="tag:yaml.org,2002:pairs";let r=0;if(e&&Symbol.iterator in Object(e))for(let o of e){typeof n=="function"&&(o=n.call(e,String(r++),o));let a,l;if(Array.isArray(o))if(o.length===2)a=o[0],l=o[1];else throw new TypeError(`Expected [key, value] tuple: ${o}`);else if(o&&o instanceof Object){let c=Object.keys(o);if(c.length===1)a=c[0],l=o[a];else throw new TypeError(`Expected { key: value } tuple: ${o}`)}else a=o;i.items.push(ve(a,l,t))}return i}var Ue={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:ls,createNode:cs};var he=class extends x{constructor(){super(),this.add=$.prototype.add.bind(this),this.delete=$.prototype.delete.bind(this),this.get=$.prototype.get.bind(this),this.has=$.prototype.has.bind(this),this.set=$.prototype.set.bind(this),this.tag=he.tag}toJSON(e,t){if(!t)return super.toJSON(e);let n=new Map;t&&t.onCreate&&t.onCreate(n);for(let i of this.items){let r,o;if(O(i)?(r=M(i.key,"",t),o=M(i.value,r,t)):r=M(i,"",t),n.has(r))throw new Error("Ordered maps must not include duplicate keys");n.set(r,o)}return n}};he.tag="tag:yaml.org,2002:omap";var Ve={collection:"seq",identify:s=>s instanceof Map,nodeClass:he,default:!1,tag:"tag:yaml.org,2002:omap",resolve(s,e){let t=ls(s,e),n=[];for(let{key:i}of t.items)v(i)&&(n.includes(i.value)?e(`Ordered maps must not include duplicate keys: ${i.value}`):n.push(i.value));return Object.assign(new he,t)},createNode(s,e,t){let n=cs(s,e,t),i=new he;return i.items=n.items,i}};function rn({value:s,source:e},t){return e&&(s?fs:us).test.test(e)?e:s?t.options.trueStr:t.options.falseStr}var fs={identify:s=>s===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new S(!0),stringify:rn},us={identify:s=>s===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/i,resolve:()=>new S(!1),stringify:rn};var on={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?\.(?:inf|Inf|INF|nan|NaN|NAN)$/,resolve:s=>s.slice(-3).toLowerCase()==="nan"?NaN:s[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:_},an={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:s=>parseFloat(s.replace(/_/g,"")),stringify(s){let e=Number(s.value);return isFinite(e)?e.toExponential():_(s)}},ln={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(s){let e=new S(parseFloat(s.replace(/_/g,""))),t=s.indexOf(".");if(t!==-1){let n=s.substring(t+1).replace(/_/g,"");n[n.length-1]==="0"&&(e.minFractionDigits=n.length)}return e},stringify:_};var Je=s=>typeof s=="bigint"||Number.isInteger(s);function Pt(s,e,t,{intAsBigInt:n}){let i=s[0];if((i==="-"||i==="+")&&(e+=1),s=s.substring(e).replace(/_/g,""),n){switch(t){case 2:s=`0b${s}`;break;case 8:s=`0o${s}`;break;case 16:s=`0x${s}`;break}let o=BigInt(s);return i==="-"?BigInt(-1)*o:o}let r=parseInt(s,t);return i==="-"?-1*r:r}function hs(s,e,t){let{value:n}=s;if(Je(n)){let i=n.toString(e);return n<0?"-"+t+i.substr(1):t+i}return _(s)}var cn={identify:Je,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(s,e,t)=>Pt(s,2,2,t),stringify:s=>hs(s,2,"0b")},fn={identify:Je,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(s,e,t)=>Pt(s,1,8,t),stringify:s=>hs(s,8,"0")},un={identify:Je,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(s,e,t)=>Pt(s,0,10,t),stringify:_},hn={identify:Je,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(s,e,t)=>Pt(s,2,16,t),stringify:s=>hs(s,16,"0x")};var pe=class extends ${constructor(e){super(e),this.tag=pe.tag}add(e){let t;O(e)?t=e:typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?t=new L(e.key,null):t=new L(e,null),fe(this.items,t.key)||this.items.push(t)}get(e,t){let n=fe(this.items,e);return!t&&O(n)?v(n.key)?n.key.value:n.key:n}set(e,t){if(typeof t!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof t}`);let n=fe(this.items,e);n&&!t?this.items.splice(this.items.indexOf(n),1):!n&&t&&this.items.push(new L(e))}toJSON(e,t){return super.toJSON(e,t,Set)}toString(e,t,n){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),t,n);throw new Error("Set items must all have null values")}};pe.tag="tag:yaml.org,2002:set";var Ye={collection:"map",identify:s=>s instanceof Set,nodeClass:pe,default:!1,tag:"tag:yaml.org,2002:set",resolve(s,e){if(D(s)){if(s.hasAllNullValues(!0))return Object.assign(new pe,s);e("Set items must all have null values")}else e("Expected a mapping for this tag");return s},createNode(s,e,t){let{replacer:n}=t,i=new pe(s);if(e&&Symbol.iterator in Object(e))for(let r of e)typeof n=="function"&&(r=n.call(e,r,r)),i.items.push(ve(r,null,t));return i}};function ps(s,e){let t=s[0],n=t==="-"||t==="+"?s.substring(1):s,i=o=>e?BigInt(o):Number(o),r=n.replace(/_/g,"").split(":").reduce((o,a)=>o*i(60)+i(a),i(0));return t==="-"?i(-1)*r:r}function pn(s){let{value:e}=s,t=o=>o;if(typeof e=="bigint")t=o=>BigInt(o);else if(isNaN(e)||!isFinite(e))return _(s);let n="";e<0&&(n="-",e*=t(-1));let i=t(60),r=[e%i];return e<60?r.unshift(0):(e=(e-r[0])/i,r.unshift(e%i),e>=60&&(e=(e-r[0])/i,r.unshift(e))),n+r.map(o=>o<10?"0"+String(o):String(o)).join(":").replace(/000000\d*$/,"")}var _t={identify:s=>typeof s=="bigint"||Number.isInteger(s),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(s,e,{intAsBigInt:t})=>ps(s,t),stringify:pn},Mt={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:s=>ps(s,!1),stringify:pn},Oe={identify:s=>s instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(s){let e=s.match(Oe.test);if(!e)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,t,n,i,r,o,a]=e.map(Number),l=e[7]?Number((e[7]+"00").substr(1,3)):0,c=Date.UTC(t,n-1,i,r||0,o||0,a||0,l),f=e[8];if(f&&f!=="Z"){let u=ps(f,!1);Math.abs(u)<30&&(u*=60),c-=6e4*u}return new Date(c)},stringify:({value:s})=>s.toISOString().replace(/((T00:00)?:00)?\.000Z$/,"")};var ms=[W,H,ue,ye,fs,us,cn,fn,un,hn,on,an,ln,Re,Ve,Ue,Ye,_t,Mt,Oe];var mn=new Map([["core",tn],["failsafe",[W,H,ue]],["json",nn],["yaml11",ms],["yaml-1.1",ms]]),dn={binary:Re,bool:Ke,float:Et,floatExp:At,floatNaN:Ot,floatTime:Mt,int:It,intHex:Ct,intOct:Lt,intTime:_t,map:W,null:ye,omap:Ve,pairs:Ue,seq:H,set:Ye,timestamp:Oe},gn={"tag:yaml.org,2002:binary":Re,"tag:yaml.org,2002:omap":Ve,"tag:yaml.org,2002:pairs":Ue,"tag:yaml.org,2002:set":Ye,"tag:yaml.org,2002:timestamp":Oe};function Bt(s,e){let t=mn.get(e);if(!t)if(Array.isArray(s))t=[];else{let n=Array.from(mn.keys()).filter(i=>i!=="yaml11").map(i=>JSON.stringify(i)).join(", ");throw new Error(`Unknown schema "${e}"; use one of ${n} or define customTags array`)}if(Array.isArray(s))for(let n of s)t=t.concat(n);else typeof s=="function"&&(t=s(t.slice()));return t.map(n=>{if(typeof n!="string")return n;let i=dn[n];if(i)return i;let r=Object.keys(dn).map(o=>JSON.stringify(o)).join(", ");throw new Error(`Unknown custom tag "${n}"; use one of ${r}`)})}var Pi=(s,e)=>s.keye.key?1:0,be=class{constructor({compat:e,customTags:t,merge:n,resolveKnownTags:i,schema:r,sortMapEntries:o,toStringDefaults:a}){this.compat=Array.isArray(e)?Bt(e,"compat"):e?Bt(null,e):null,this.merge=!!n,this.name=typeof r=="string"&&r||"core",this.knownTags=i?gn:{},this.tags=Bt(t,this.name),this.toStringOptions=a||null,Object.defineProperty(this,U,{value:W}),Object.defineProperty(this,q,{value:ue}),Object.defineProperty(this,ne,{value:H}),this.sortMapEntries=o===!0?Pi:o||null}clone(){let e=Object.create(be.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};function yn(s,e){let t=[],n=e.directives===!0;if(e.directives!==!1&&s.directives){let c=s.directives.toString(s);c?(t.push(c),n=!0):s.directives.marker&&(n=!0)}n&&t.push("---");let i=wt(s,e),{commentString:r}=i.options;if(s.commentBefore){t.length!==1&&t.unshift("");let c=r(s.commentBefore);t.unshift(z(c,""))}let o=!1,a=null;if(s.contents){if(E(s.contents)){if(s.contents.spaceBefore&&n&&t.push(""),s.contents.commentBefore){let u=r(s.contents.commentBefore);t.push(z(u,""))}i.forceBlockIndent=!!s.comment,a=s.contents.comment}let c=a?void 0:()=>o=!0,f=Q(s.contents,i,()=>a=null,c);a&&(f+=G(f,"",r(a))),(f[0]==="|"||f[0]===">")&&t[t.length-1]==="---"?t[t.length-1]=`--- ${f}`:t.push(f)}else t.push(Q(s.contents,i));let l=s.comment;return l&&o&&(l=l.replace(/^\n+/,"")),l&&((!o||a)&&t[t.length-1]!==""&&t.push(""),t.push(z(r(l),""))),t.join(` +`)+` +`}function Ae(s,e,t,n){if(n&&typeof n=="object")if(Array.isArray(n))for(let i=0,r=n.length;itypeof w=="number"||w instanceof String||w instanceof Number,y=t.filter(d).map(String);y.length>0&&(t=t.concat(y)),i=t}else n===void 0&&t&&(n=t,t=void 0);let{aliasDuplicateObjects:r,anchorPrefix:o,flow:a,keepUndefined:l,onTagObj:c,tag:f}=n||{},{onAnchor:u,setAnchors:h,sourceObjects:p}=Ws(this,o||"a"),g={aliasDuplicateObjects:r!=null?r:!0,keepUndefined:l!=null?l:!1,onAnchor:u,onTagObj:c,replacer:i,schema:this.schema,sourceObjects:p},m=re(e,f,g);return a&&T(m)&&(m.flow=!0),h(),m}createPair(e,t,n={}){let i=this.createNode(e,null,n),r=this.createNode(t,null,n);return new L(i,r)}delete(e){return Ee(this.contents)?this.contents.delete(e):!1}deleteIn(e){return Ne(e)?this.contents==null?!1:(this.contents=null,!0):Ee(this.contents)?this.contents.deleteIn(e):!1}get(e,t){return T(this.contents)?this.contents.get(e,t):void 0}getIn(e,t){return Ne(e)?!t&&v(this.contents)?this.contents.value:this.contents:T(this.contents)?this.contents.getIn(e,t):void 0}has(e){return T(this.contents)?this.contents.has(e):!1}hasIn(e){return Ne(e)?this.contents!==void 0:T(this.contents)?this.contents.hasIn(e):!1}set(e,t){this.contents==null?this.contents=Be(this.schema,[e],t):Ee(this.contents)&&this.contents.set(e,t)}setIn(e,t){Ne(e)?this.contents=t:this.contents==null?this.contents=Be(this.schema,Array.from(e),t):Ee(this.contents)&&this.contents.setIn(e,t)}setSchema(e,t={}){typeof e=="number"&&(e=String(e));let n;switch(e){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new C({version:"1.1"}),n={merge:!0,resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":this.directives?this.directives.yaml.version="1.2":this.directives=new C({version:"1.2"}),n={merge:!1,resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,n=null;break;default:{let i=JSON.stringify(e);throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${i}`)}}if(t.schema instanceof Object)this.schema=t.schema;else if(n)this.schema=new be(Object.assign(n,t));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:e,jsonArg:t,mapAsMap:n,maxAliasCount:i,onAnchor:r,reviver:o}={}){let a={anchors:new Map,doc:this,keep:!e,mapAsMap:n===!0,mapKeyWarned:!1,maxAliasCount:typeof i=="number"?i:100,stringify:Q},l=M(this.contents,t||"",a);if(typeof r=="function")for(let{count:c,res:f}of a.anchors.values())r(f,c);return typeof o=="function"?Ae(o,{"":l},"",l):l}toJSON(e,t){return this.toJS({json:!0,jsonArg:e,mapAsMap:!1,onAnchor:t})}toString(e={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in e&&(!Number.isInteger(e.indent)||Number(e.indent)<=0)){let t=JSON.stringify(e.indent);throw new Error(`"indent" option must be a positive integer, not ${t}`)}return yn(this,e)}};function Ee(s){if(T(s))return!0;throw new Error("Expected a YAML collection as document contents")}var Ge=class extends Error{constructor(e,t,n,i){super(),this.name=e,this.code=n,this.message=i,this.pos=t}},F=class extends Ge{constructor(e,t,n){super("YAMLParseError",e,t,n)}},Qe=class extends Ge{constructor(e,t,n){super("YAMLWarning",e,t,n)}},ds=(s,e)=>t=>{if(t.pos[0]===-1)return;t.linePos=t.pos.map(a=>e.linePos(a));let{line:n,col:i}=t.linePos[0];t.message+=` at line ${n}, column ${i}`;let r=i-1,o=s.substring(e.lineStarts[n-1],e.lineStarts[n]).replace(/[\n\r]+$/,"");if(r>=60&&o.length>80){let a=Math.min(r-39,o.length-79);o="\u2026"+o.substring(a),r-=a-1}if(o.length>80&&(o=o.substring(0,79)+"\u2026"),n>1&&/^ *$/.test(o.substring(0,r))){let a=s.substring(e.lineStarts[n-2],e.lineStarts[n-1]);a.length>80&&(a=a.substring(0,79)+`\u2026 +`),o=a+o}if(/[^ ]/.test(o)){let a=1,l=t.linePos[1];l&&l.line===n&&l.col>i&&(a=Math.min(l.col-i,80-r));let c=" ".repeat(r)+"^".repeat(a);t.message+=`: + +${o} +${c} +`}};function ee(s,{flow:e,indicator:t,next:n,offset:i,onError:r,startOnNewline:o}){let a=!1,l=o,c=o,f="",u="",h=!1,p=!1,g=null,m=null,d=null,y=null,w=null;for(let k of s)switch(p&&(k.type!=="space"&&k.type!=="newline"&&k.type!=="comma"&&r(k.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),p=!1),k.type){case"space":!e&&l&&t!=="doc-start"&&k.source[0]===" "&&r(k,"TAB_AS_INDENT","Tabs are not allowed as indentation"),c=!0;break;case"comment":{c||r(k,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let A=k.source.substring(1)||" ";f?f+=u+A:f=A,u="",l=!1;break}case"newline":l?f?f+=k.source:a=!0:u+=k.source,l=!0,h=!0,c=!0;break;case"anchor":g&&r(k,"MULTIPLE_ANCHORS","A node can have at most one anchor"),g=k,w===null&&(w=k.offset),l=!1,c=!1,p=!0;break;case"tag":{m&&r(k,"MULTIPLE_TAGS","A node can have at most one tag"),m=k,w===null&&(w=k.offset),l=!1,c=!1,p=!0;break}case t:(g||m)&&r(k,"BAD_PROP_ORDER",`Anchors and tags must be after the ${k.source} indicator`),y&&r(k,"UNEXPECTED_TOKEN",`Unexpected ${k.source} in ${e||"collection"}`),y=k,l=!1,c=!1;break;case"comma":if(e){d&&r(k,"UNEXPECTED_TOKEN",`Unexpected , in ${e}`),d=k,l=!1,c=!1;break}default:r(k,"UNEXPECTED_TOKEN",`Unexpected ${k.type} token`),l=!1,c=!1}let N=s[s.length-1],b=N?N.offset+N.source.length:i;return p&&n&&n.type!=="space"&&n.type!=="newline"&&n.type!=="comma"&&(n.type!=="scalar"||n.source!=="")&&r(n.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),{comma:d,found:y,spaceBefore:a,comment:f,hasNewline:h,anchor:g,tag:m,end:b,start:w!=null?w:b}}function me(s){if(!s)return null;switch(s.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(s.source.includes(` +`))return!0;if(s.end){for(let e of s.end)if(e.type==="newline")return!0}return!1;case"flow-collection":for(let e of s.items){for(let t of e.start)if(t.type==="newline")return!0;if(e.sep){for(let t of e.sep)if(t.type==="newline")return!0}if(me(e.key)||me(e.value))return!0}return!1;default:return!0}}function We(s,e,t){if((e==null?void 0:e.type)==="flow-collection"){let n=e.end[0];n.indent===s&&(n.source==="]"||n.source==="}")&&me(e)&&t(n,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}function xt(s,e,t){let{uniqueKeys:n}=s.options;if(n===!1)return!1;let i=typeof n=="function"?n:(r,o)=>r===o||v(r)&&v(o)&&r.value===o.value&&!(r.value==="<<"&&s.schema.merge);return e.some(r=>i(r.key,t))}var bn="All mapping items must start at the same column";function wn({composeNode:s,composeEmptyNode:e},t,n,i){var r;let o=new $(t.schema);t.atRoot&&(t.atRoot=!1);let a=n.offset;for(let l of n.items){let{start:c,key:f,sep:u,value:h}=l,p=ee(c,{indicator:"explicit-key-ind",next:f||(u==null?void 0:u[0]),offset:a,onError:i,startOnNewline:!0}),g=!p.found;if(g){if(f&&(f.type==="block-seq"?i(a,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in f&&f.indent!==n.indent&&i(a,"BAD_INDENT",bn)),!p.anchor&&!p.tag&&!u){p.comment&&(o.comment?o.comment+=` +`+p.comment:o.comment=p.comment);continue}}else((r=p.found)===null||r===void 0?void 0:r.indent)!==n.indent&&i(a,"BAD_INDENT",bn);g&&me(f)&&i(f,"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line");let m=p.end,d=f?s(t,f,p,i):e(t,m,c,null,p,i);t.schema.compat&&We(n.indent,f,i),xt(t,o.items,d)&&i(m,"DUPLICATE_KEY","Map keys must be unique");let y=ee(u||[],{indicator:"map-value-ind",next:h,offset:d.range[2],onError:i,startOnNewline:!f||f.type==="block-scalar"});if(a=y.end,y.found){g&&((h==null?void 0:h.type)==="block-map"&&!y.hasNewline&&i(a,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),t.options.strict&&p.starts&&(s.type==="block-map"||s.type==="block-seq");function kn({composeNode:s,composeEmptyNode:e},t,n,i){let r=n.start.source==="{",o=r?"flow map":"flow sequence",a=r?new $(t.schema):new x(t.schema);a.flow=!0;let l=t.atRoot;l&&(t.atRoot=!1);let c=n.offset+n.start.source.length;for(let g=0;g0){let g=te(h,p,t.options.strict,i);g.comment&&(a.comment?a.comment+=` +`+g.comment:a.comment=g.comment),a.range=[n.offset,p,g.offset]}else a.range=[n.offset,p,p];return a}function Nn(s,e,t,n,i){let r;switch(t.type){case"block-map":{r=wn(s,e,t,i);break}case"block-seq":{r=Sn(s,e,t,i);break}case"flow-collection":{r=kn(s,e,t,i);break}}if(!n)return r;let o=e.directives.tagName(n.source,h=>i(n,"TAG_RESOLVE_FAILED",h));if(!o)return r;let a=r.constructor;if(o==="!"||o===a.tagName)return r.tag=a.tagName,r;let l=D(r)?"map":"seq",c=e.schema.tags.find(h=>h.collection===l&&h.tag===o);if(!c){let h=e.schema.knownTags[o];if(h&&h.collection===l)e.schema.tags.push(Object.assign({},h,{default:!1})),c=h;else return i(n,"TAG_RESOLVE_FAILED",`Unresolved tag: ${o}`,!0),r.tag=o,r}let f=c.resolve(r,h=>i(n,"TAG_RESOLVE_FAILED",h),e.options),u=E(f)?f:new S(f);return u.range=r.range,u.tag=o,c!=null&&c.format&&(u.format=c.format),u}function jt(s,e,t){let n=s.offset,i=_i(s,e,t);if(!i)return{value:"",type:null,comment:"",range:[n,n,n]};let r=i.mode===">"?S.BLOCK_FOLDED:S.BLOCK_LITERAL,o=s.source?Mi(s.source):[],a=o.length;for(let m=o.length-1;m>=0;--m){let d=o[m][1];if(d===""||d==="\r")a=m;else break}if(!s.source||a===0){let m=i.chomp==="+"?` +`.repeat(Math.max(0,o.length-1)):"",d=n+i.length;return s.source&&(d+=s.source.length),{value:m,type:r,comment:i.comment,range:[n,d,d]}}let l=s.indent+i.indent,c=s.offset+i.length,f=0;for(let m=0;ml&&(l=d.length);else{if(d.lengthl||y[0]===" "?(h===" "?h=` +`:!p&&h===` +`&&(h=` + +`),u+=h+d.slice(l)+y,h=` +`,p=!0):y===""?h===` +`?u+=` +`:h=` +`:(u+=h+y,h=" ",p=!1)}switch(i.chomp){case"-":break;case"+":for(let m=a;mt(n+h,p,g);switch(i){case"scalar":a=S.PLAIN,l=Bi(r,c);break;case"single-quoted-scalar":a=S.QUOTE_SINGLE,l=xi(r,c);break;case"double-quoted-scalar":a=S.QUOTE_DOUBLE,l=ji(r,c);break;default:return t(s,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${i}`),{value:"",type:null,comment:"",range:[n,n+r.length,n+r.length]}}let f=n+r.length,u=te(o,f,e,t);return{value:l,type:a,comment:u.comment,range:[n,f,u.offset]}}function Bi(s,e){let t="";switch(s[0]){case" ":t="a tab character";break;case",":t="flow indicator character ,";break;case"%":t="directive indicator character %";break;case"|":case">":{t=`block scalar indicator ${s[0]}`;break}case"@":case"`":{t=`reserved character ${s[0]}`;break}}return t&&e(0,"BAD_SCALAR_START",`Plain value cannot start with ${t}`),vn(s)}function xi(s,e){return(s[s.length-1]!=="'"||s.length===1)&&e(s.length,"MISSING_CHAR","Missing closing 'quote"),vn(s.slice(1,-1)).replace(/''/g,"'")}function vn(s){let e,t;try{e=new RegExp(`(.*?)(?r?s.slice(r,n+1):i)}else t+=i}return(s[s.length-1]!=='"'||s.length===1)&&e(s.length,"MISSING_CHAR",'Missing closing "quote'),t}function Di(s,e){let t="",n=s[e+1];for(;(n===" "||n===" "||n===` +`||n==="\r")&&!(n==="\r"&&s[e+2]!==` +`);)n===` +`&&(t+=` +`),e+=1,n=s[e+1];return t||(t=" "),{fold:t,offset:e}}var qi={0:"\0",a:"\x07",b:"\b",e:"\x1B",f:"\f",n:` +`,r:"\r",t:" ",v:"\v",N:"\x85",_:"\xA0",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function Fi(s,e,t,n){let i=s.substr(e,t),o=i.length===t&&/^[0-9a-fA-F]+$/.test(i)?parseInt(i,16):NaN;if(isNaN(o)){let a=s.substr(e-2,t+2);return n(e-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${a}`),a}return String.fromCodePoint(o)}function bs(s,e,t,n){let{value:i,type:r,comment:o,range:a}=e.type==="block-scalar"?jt(e,s.options.strict,n):Dt(e,s.options.strict,n),l=t?s.directives.tagName(t.source,u=>n(t,"TAG_RESOLVE_FAILED",u)):null,c=t&&l?Ki(s.schema,i,l,t,n):e.type==="scalar"?Ri(s,i,e,n):s.schema[q],f;try{let u=c.resolve(i,h=>n(t||e,"TAG_RESOLVE_FAILED",h),s.options);f=v(u)?u:new S(u)}catch(u){let h=u instanceof Error?u.message:String(u);n(t||e,"TAG_RESOLVE_FAILED",h),f=new S(i)}return f.range=a,f.source=i,r&&(f.type=r),l&&(f.tag=l),c.format&&(f.format=c.format),o&&(f.comment=o),f}function Ki(s,e,t,n,i){var r;if(t==="!")return s[q];let o=[];for(let l of s.tags)if(!l.collection&&l.tag===t)if(l.default&&l.test)o.push(l);else return l;for(let l of o)if(!((r=l.test)===null||r===void 0)&&r.test(e))return l;let a=s.knownTags[t];return a&&!a.collection?(s.tags.push(Object.assign({},a,{default:!1,test:void 0})),a):(i(n,"TAG_RESOLVE_FAILED",`Unresolved tag: ${t}`,t!=="tag:yaml.org,2002:str"),s[q])}function Ri({directives:s,schema:e},t,n,i){let r=e.tags.find(o=>{var a;return o.default&&((a=o.test)===null||a===void 0?void 0:a.test(t))})||e[q];if(e.compat){let o=e.compat.find(a=>{var l;return a.default&&((l=a.test)===null||l===void 0?void 0:l.test(t))})||e[q];if(r.tag!==o.tag){let a=s.tagString(r.tag),l=s.tagString(o.tag),c=`Value may be parsed as either ${a} or ${l}`;i(n,"TAG_RESOLVE_FAILED",c,!0)}}return r}function On(s,e,t){if(e){t===null&&(t=e.length);for(let n=t-1;n>=0;--n){let i=e[n];switch(i.type){case"space":case"comment":case"newline":s-=i.source.length;continue}for(i=e[++n];(i==null?void 0:i.type)==="space";)s+=i.source.length,i=e[++n];break}}return s}var Ui={composeNode:ws,composeEmptyNode:Ss};function ws(s,e,t,n){let{spaceBefore:i,comment:r,anchor:o,tag:a}=t,l;switch(e.type){case"alias":l=Vi(s,e,n),(o||a)&&n(e,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":l=bs(s,e,a,n),o&&(l.anchor=o.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":l=Nn(Ui,s,e,a,n),o&&(l.anchor=o.source.substring(1));break;default:throw console.log(e),new Error(`Unsupporten token type: ${e.type}`)}return o&&l.anchor===""&&n(o,"BAD_ALIAS","Anchor cannot be an empty string"),i&&(l.spaceBefore=!0),r&&(e.type==="scalar"&&e.source===""?l.comment=r:l.commentBefore=r),s.options.keepSourceTokens&&(l.srcToken=e),l}function Ss(s,e,t,n,{spaceBefore:i,comment:r,anchor:o,tag:a},l){let c={type:"scalar",offset:On(e,t,n),indent:-1,source:""},f=bs(s,c,a,l);return o&&(f.anchor=o.source.substring(1),f.anchor===""&&l(o,"BAD_ALIAS","Anchor cannot be an empty string")),i&&(f.spaceBefore=!0),r&&(f.comment=r),f}function Vi({options:s},{offset:e,source:t,end:n},i){let r=new ie(t.substring(1));r.source===""&&i(e,"BAD_ALIAS","Alias cannot be an empty string");let o=e+t.length,a=te(n,o,s.strict,i);return r.range=[e,o,a.offset],a.comment&&(r.comment=a.comment),r}function An(s,e,{offset:t,start:n,value:i,end:r},o){let a=Object.assign({directives:e},s),l=new Z(void 0,a),c={atRoot:!0,directives:l.directives,options:l.options,schema:l.schema},f=ee(n,{indicator:"doc-start",next:i||(r==null?void 0:r[0]),offset:t,onError:o,startOnNewline:!0});f.found&&(l.directives.marker=!0,i&&(i.type==="block-map"||i.type==="block-seq")&&!f.hasNewline&&o(f.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),l.contents=i?ws(c,i,f,o):Ss(c,f.end,n,null,f,o);let u=l.contents.range[2],h=te(r,u,!1,o);return h.comment&&(l.comment=h.comment),l.range=[t,u,h.offset],l}function He(s){if(typeof s=="number")return[s,s+1];if(Array.isArray(s))return s.length===2?s:[s[0],s[1]];let{offset:e,source:t}=s;return[e,e+(typeof t=="string"?t.length:1)]}function En(s){var e;let t="",n=!1,i=!1;for(let r=0;r{let o=He(t);r?this.warnings.push(new Qe(o,n,i)):this.errors.push(new F(o,n,i))},this.directives=new C({version:e.version||Fe.version}),this.options=e}decorate(e,t){let{comment:n,afterEmptyLine:i}=En(this.prelude);if(n){let r=e.contents;if(t)e.comment=e.comment?`${e.comment} +${n}`:n;else if(i||e.directives.marker||!r)e.commentBefore=n;else if(T(r)&&!r.flow&&r.items.length>0){let o=r.items[0];O(o)&&(o=o.key);let a=o.commentBefore;o.commentBefore=a?`${n} +${a}`:n}else{let o=r.commentBefore;r.commentBefore=o?`${n} +${o}`:n}}t?(Array.prototype.push.apply(e.errors,this.errors),Array.prototype.push.apply(e.warnings,this.warnings)):(e.errors=this.errors,e.warnings=this.warnings),this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:En(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(e,t=!1,n=-1){for(let i of e)yield*this.next(i);yield*this.end(t,n)}*next(e){switch(e.type){case"directive":this.directives.add(e.source,(t,n,i)=>{let r=He(e);r[0]+=t,this.onError(r,"BAD_DIRECTIVE",n,i)}),this.prelude.push(e.source),this.atDirectives=!0;break;case"document":{let t=An(this.options,this.directives,e,this.onError);this.atDirectives&&!t.directives.marker&&this.onError(e,"MISSING_CHAR","Missing directives-end indicator line"),this.decorate(t,!1),this.doc&&(yield this.doc),this.doc=t,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(e.source);break;case"error":{let t=e.source?`${e.message}: ${JSON.stringify(e.source)}`:e.message,n=new F(He(e),"UNEXPECTED_TOKEN",t);this.atDirectives||!this.doc?this.errors.push(n):this.doc.errors.push(n);break}case"doc-end":{if(!this.doc){let n="Unexpected doc-end without preceding document";this.errors.push(new F(He(e),"UNEXPECTED_TOKEN",n));break}let t=te(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),t.comment){let n=this.doc.comment;this.doc.comment=n?`${n} +${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.push(new F(He(e),"UNEXPECTED_TOKEN",`Unsupported token ${e.type}`))}}*end(e=!1,t=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){let n=Object.assign({directives:this.directives},this.options),i=new Z(void 0,n);this.atDirectives&&this.onError(t,"MISSING_CHAR","Missing directives-end indicator line"),i.range=[0,t,t],this.decorate(i,!1),yield i}}};var tt={};Cs(tt,{BOM:()=>ze,DOCUMENT:()=>Ze,FLOW_END:()=>et,SCALAR:()=>Te,createScalarToken:()=>Ln,isCollection:()=>Gi,isScalar:()=>Qi,prettyToken:()=>Wi,resolveAsScalar:()=>Tn,setScalarValue:()=>In,stringify:()=>$n,tokenType:()=>vs,visit:()=>de});function Tn(s,e=!0,t){if(s){let n=(i,r,o)=>{let a=typeof i=="number"?i:Array.isArray(i)?i[0]:i.offset;if(t)t(a,r,o);else throw new F([a,a+1],r,o)};switch(s.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return Dt(s,e,n);case"block-scalar":return jt(s,e,n)}}return null}function Ln(s,e){var t;let{implicitKey:n=!1,indent:i,inFlow:r=!1,offset:o=-1,type:a="PLAIN"}=e,l=ae({type:a,value:s},{implicitKey:n,indent:i>0?" ".repeat(i):"",inFlow:r,options:{blockQuote:!0,lineWidth:-1}}),c=(t=e.end)!==null&&t!==void 0?t:[{type:"newline",offset:-1,indent:i,source:` +`}];switch(l[0]){case"|":case">":{let f=l.indexOf(` +`),u=l.substring(0,f),h=l.substring(f+1)+` +`,p=[{type:"block-scalar-header",offset:o,indent:i,source:u}];return Cn(p,c)||p.push({type:"newline",offset:-1,indent:i,source:` +`}),{type:"block-scalar",offset:o,indent:i,props:p,source:h}}case'"':return{type:"double-quoted-scalar",offset:o,indent:i,source:l,end:c};case"'":return{type:"single-quoted-scalar",offset:o,indent:i,source:l,end:c};default:return{type:"scalar",offset:o,indent:i,source:l,end:c}}}function In(s,e,t={}){let{afterKey:n=!1,implicitKey:i=!1,inFlow:r=!1,type:o}=t,a="indent"in s?s.indent:null;if(n&&typeof a=="number"&&(a+=2),!o)switch(s.type){case"single-quoted-scalar":o="QUOTE_SINGLE";break;case"double-quoted-scalar":o="QUOTE_DOUBLE";break;case"block-scalar":{let c=s.props[0];if(c.type!=="block-scalar-header")throw new Error("Invalid block scalar header");o=c.source[0]===">"?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:o="PLAIN"}let l=ae({type:o,value:e},{implicitKey:i||a===null,indent:a!==null&&a>0?" ".repeat(a):"",inFlow:r,options:{blockQuote:!0,lineWidth:-1}});switch(l[0]){case"|":case">":Ji(s,l);break;case'"':ks(s,l,"double-quoted-scalar");break;case"'":ks(s,l,"single-quoted-scalar");break;default:ks(s,l,"scalar")}}function Ji(s,e){let t=e.indexOf(` +`),n=e.substring(0,t),i=e.substring(t+1)+` +`;if(s.type==="block-scalar"){let r=s.props[0];if(r.type!=="block-scalar-header")throw new Error("Invalid block scalar header");r.source=n,s.source=i}else{let{offset:r}=s,o="indent"in s?s.indent:-1,a=[{type:"block-scalar-header",offset:r,indent:o,source:n}];Cn(a,"end"in s?s.end:void 0)||a.push({type:"newline",offset:-1,indent:o,source:` +`});for(let l of Object.keys(s))l!=="type"&&l!=="offset"&&delete s[l];Object.assign(s,{type:"block-scalar",indent:o,props:a,source:i})}}function Cn(s,e){if(e)for(let t of e)switch(t.type){case"space":case"comment":s.push(t);break;case"newline":return s.push(t),!0}return!1}function ks(s,e,t){switch(s.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":s.type=t,s.source=e;break;case"block-scalar":{let n=s.props.slice(1),i=e.length;s.props[0].type==="block-scalar-header"&&(i-=s.props[0].source.length);for(let r of n)r.offset+=i;delete s.props,Object.assign(s,{type:t,source:e,end:n});break}case"block-map":case"block-seq":{let n=s.offset+e.length,i={type:"newline",offset:n,indent:s.indent,source:` +`};delete s.items,Object.assign(s,{type:t,source:e,end:[i]});break}default:{let n="indent"in s?s.indent:-1,i="end"in s&&Array.isArray(s.end)?s.end.filter(r=>r.type==="space"||r.type==="comment"||r.type==="newline"):[];for(let r of Object.keys(s))r!=="type"&&r!=="offset"&&delete s[r];Object.assign(s,{type:t,indent:n,source:e,end:i})}}}var $n=s=>"type"in s?Ft(s):qt(s);function Ft(s){switch(s.type){case"block-scalar":{let e="";for(let t of s.props)e+=Ft(t);return e+s.source}case"block-map":case"block-seq":{let e="";for(let t of s.items)e+=qt(t);return e}case"flow-collection":{let e=s.start.source;for(let t of s.items)e+=qt(t);for(let t of s.end)e+=t.source;return e}case"document":{let e=qt(s);if(s.end)for(let t of s.end)e+=t.source;return e}default:{let e=s.source;if("end"in s&&s.end)for(let t of s.end)e+=t.source;return e}}}function qt({start:s,key:e,sep:t,value:n}){let i="";for(let r of s)i+=r.source;if(e&&(i+=Ft(e)),t)for(let r of t)i+=r.source;return n&&(i+=Ft(n)),i}var Ns=Symbol("break visit"),Yi=Symbol("skip children"),Pn=Symbol("remove item");function de(s,e){"type"in s&&s.type==="document"&&(s={start:s.start,value:s.value}),_n(Object.freeze([]),s,e)}de.BREAK=Ns;de.SKIP=Yi;de.REMOVE=Pn;de.itemAtPath=(s,e)=>{let t=s;for(let[n,i]of e){let r=t&&t[n];if(r&&"items"in r)t=r.items[i];else return}return t};de.parentCollection=(s,e)=>{let t=de.itemAtPath(s,e.slice(0,-1)),n=e[e.length-1][0],i=t&&t[n];if(i&&"items"in i)return i;throw new Error("Parent collection not found")};function _n(s,e,t){let n=t(e,s);if(typeof n=="symbol")return n;for(let i of["key","value"]){let r=e[i];if(r&&"items"in r){for(let o=0;o!!s&&"items"in s,Qi=s=>!!s&&(s.type==="scalar"||s.type==="single-quoted-scalar"||s.type==="double-quoted-scalar"||s.type==="block-scalar");function Wi(s){switch(s){case ze:return"";case Ze:return"";case et:return"";case Te:return"";default:return JSON.stringify(s)}}function vs(s){switch(s){case ze:return"byte-order-mark";case Ze:return"doc-mode";case et:return"flow-error-end";case Te:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case` +`:case`\r +`:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(s[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}function K(s){switch(s){case void 0:case" ":case` +`:case"\r":case" ":return!0;default:return!1}}var Mn="0123456789ABCDEFabcdef".split(""),Hi="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()".split(""),Bn=",[]{}".split(""),Xi=` ,[]{} +\r `.split(""),Os=s=>!s||Xi.includes(s),st=class{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(e,t=!1){e&&(this.buffer=this.buffer?this.buffer+e:e,this.lineEndPos=null),this.atEnd=!t;let n=this.next||"stream";for(;n&&(t||this.hasChars(1));)n=yield*this.parseNext(n)}atLineEnd(){let e=this.pos,t=this.buffer[e];for(;t===" "||t===" ";)t=this.buffer[++e];return!t||t==="#"||t===` +`?!0:t==="\r"?this.buffer[e+1]===` +`:!1}charAt(e){return this.buffer[this.pos+e]}continueScalar(e){let t=this.buffer[e];if(this.indentNext>0){let n=0;for(;t===" ";)t=this.buffer[++n+e];if(t==="\r"){let i=this.buffer[n+e+1];if(i===` +`||!i&&!this.atEnd)return e+n+1}return t===` +`||n>=this.indentNext||!t&&!this.atEnd?e+n:-1}if(t==="-"||t==="."){let n=this.buffer.substr(e,3);if((n==="---"||n==="...")&&K(this.buffer[e+3]))return-1}return e}getLine(){let e=this.lineEndPos;return(typeof e!="number"||e!==-1&&ethis.indentValue&&!K(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){let[e,t]=this.peek(2);if(!t&&!this.atEnd)return this.setNext("block-start");if((e==="-"||e==="?"||e===":")&&K(t)){let n=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=n,yield*this.parseBlockStart()}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let e=this.getLine();if(e===null)return this.setNext("doc");let t=yield*this.pushIndicators();switch(e[t]){case"#":yield*this.pushCount(e.length-t);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*this.pushCount(1),"doc";case"*":return yield*this.pushUntil(Os),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return t+=yield*this.parseBlockScalarHeader(),t+=yield*this.pushSpaces(!0),yield*this.pushCount(e.length-t),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let e,t,n=-1;do e=yield*this.pushNewline(),t=yield*this.pushSpaces(!0),e>0&&(this.indentValue=n=t);while(e+t>0);let i=this.getLine();if(i===null)return this.setNext("flow");if((n!==-1&&n"0"&&t<="9")this.blockScalarIndent=Number(t)-1;else if(t!=="-")break}return yield*this.pushUntil(t=>K(t)||t==="#")}*parseBlockScalar(){let e=this.pos-1,t=0,n;e:for(let i=this.pos;n=this.buffer[i];++i)switch(n){case" ":t+=1;break;case` +`:e=i,t=0;break;case"\r":{let r=this.buffer[i+1];if(!r&&!this.atEnd)return this.setNext("block-scalar");if(r===` +`)break}default:break e}if(!n&&!this.atEnd)return this.setNext("block-scalar");if(t>=this.indentNext){this.blockScalarIndent===-1?this.indentNext=t:this.indentNext+=this.blockScalarIndent;do{let i=this.continueScalar(e+1);if(i===-1)break;e=this.buffer.indexOf(` +`,i)}while(e!==-1);if(e===-1){if(!this.atEnd)return this.setNext("block-scalar");e=this.buffer.length}}if(!this.blockScalarKeep)do{let i=e-1,r=this.buffer[i];for(r==="\r"&&(r=this.buffer[--i]);r===" "||r===" ";)r=this.buffer[--i];if(r===` +`&&i>=this.pos)e=i;else break}while(!0);return yield Te,yield*this.pushToIndex(e+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let e=this.flowLevel>0,t=this.pos-1,n=this.pos-1,i;for(;i=this.buffer[++n];)if(i===":"){let r=this.buffer[n+1];if(K(r)||e&&r===",")break;t=n}else if(K(i)){let r=this.buffer[n+1];if(i==="\r"&&(r===` +`?(n+=1,i=` +`,r=this.buffer[n+1]):t=n),r==="#"||e&&Bn.includes(r))break;if(i===` +`){let o=this.continueScalar(n+1);if(o===-1)break;n=Math.max(n,o-2)}}else{if(e&&Bn.includes(i))break;t=n}return!i&&!this.atEnd?this.setNext("plain-scalar"):(yield Te,yield*this.pushToIndex(t+1,!0),e?"flow":"doc")}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,t){let n=this.buffer.slice(this.pos,e);return n?(yield n,this.pos+=n.length,n.length):(t&&(yield""),0)}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*this.pushTag())+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"&":return(yield*this.pushUntil(Os))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case":":case"?":case"-":if(K(this.charAt(1)))return this.flowLevel===0?this.indentNext=this.indentValue+1:this.flowKey&&(this.flowKey=!1),(yield*this.pushCount(1))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators())}return 0}*pushTag(){if(this.charAt(1)==="<"){let e=this.pos+2,t=this.buffer[e];for(;!K(t)&&t!==">";)t=this.buffer[++e];return yield*this.pushToIndex(t===">"?e+1:e,!1)}else{let e=this.pos+1,t=this.buffer[e];for(;t;)if(Hi.includes(t))t=this.buffer[++e];else if(t==="%"&&Mn.includes(this.buffer[e+1])&&Mn.includes(this.buffer[e+2]))t=this.buffer[e+=3];else break;return yield*this.pushToIndex(e,!1)}}*pushNewline(){let e=this.buffer[this.pos];return e===` +`?yield*this.pushCount(1):e==="\r"&&this.charAt(1)===` +`?yield*this.pushCount(2):0}*pushSpaces(e){let t=this.pos-1,n;do n=this.buffer[++t];while(n===" "||e&&n===" ");let i=t-this.pos;return i>0&&(yield this.buffer.substr(this.pos,i),this.pos=t),i}*pushUntil(e){let t=this.pos,n=this.buffer[t];for(;!e(n);)n=this.buffer[++t];return yield*this.pushToIndex(t,!1)}};var nt=class{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let t=0,n=this.lineStarts.length;for(;t>1;this.lineStarts[r]=0;)switch(s[t].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;((e=s[++t])===null||e===void 0?void 0:e.type)==="space";);return s.splice(t,s.length)}function xn(s){if(s.start.type==="flow-seq-start")for(let e of s.items)e.sep&&!e.value&&!se(e.start,"explicit-key-ind")&&!se(e.sep,"map-value-ind")&&(e.key&&(e.value=e.key),delete e.key,jn(e.value)?e.value.end?Array.prototype.push.apply(e.value.end,e.sep):e.value.end=e.sep:Array.prototype.push.apply(e.start,e.sep),delete e.sep)}var rt=class{constructor(e){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new st,this.onNewLine=e}*parse(e,t=!1){this.onNewLine&&this.offset===0&&this.onNewLine(0);for(let n of this.lexer.lex(e,t))yield*this.next(n);t||(yield*this.end())}*next(e){if(this.source=e,this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=e.length;return}let t=vs(e);if(t)if(t==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=t,yield*this.step(),t){case"newline":this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+e.length);break;case"space":this.atNewLine&&e[0]===" "&&(this.indent+=e.length);break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":this.atNewLine&&(this.indent+=e.length);break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=e.length}else{let n=`Not a YAML token: ${e}`;yield*this.pop({type:"error",offset:this.offset,message:n,source:e}),this.offset+=e.length}}*end(){for(;this.stack.length>0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let e=this.peek(1);if(this.type==="doc-end"&&(!e||e.type!=="doc-end")){for(;this.stack.length>0;)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!e)return yield*this.stream();switch(e.type){case"document":return yield*this.document(e);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar(e);case"block-scalar":return yield*this.blockScalar(e);case"block-map":return yield*this.blockMap(e);case"block-seq":return yield*this.blockSequence(e);case"flow-collection":return yield*this.flowCollection(e);case"doc-end":return yield*this.documentEnd(e)}yield*this.pop()}peek(e){return this.stack[this.stack.length-e]}*pop(e){let t=e||this.stack.pop();if(t)if(this.stack.length===0)yield t;else{let n=this.peek(1);switch(t.type==="block-scalar"?t.indent="indent"in n?n.indent:0:t.type==="flow-collection"&&n.type==="document"&&(t.indent=0),t.type==="flow-collection"&&xn(t),n.type){case"document":n.value=t;break;case"block-scalar":n.props.push(t);break;case"block-map":{let i=n.items[n.items.length-1];if(i.value){n.items.push({start:[],key:t,sep:[]}),this.onKeyLine=!0;return}else if(i.sep)i.value=t;else{Object.assign(i,{key:t,sep:[]}),this.onKeyLine=!se(i.start,"explicit-key-ind");return}break}case"block-seq":{let i=n.items[n.items.length-1];i.value?n.items.push({start:[],value:t}):i.value=t;break}case"flow-collection":{let i=n.items[n.items.length-1];!i||i.value?n.items.push({start:[],key:t,sep:[]}):i.sep?i.value=t:Object.assign(i,{key:t,sep:[]});return}default:yield*this.pop(),yield*this.pop(t)}if((n.type==="document"||n.type==="block-map"||n.type==="block-seq")&&(t.type==="block-map"||t.type==="block-seq")){let i=t.items[t.items.length-1];i&&!i.sep&&!i.value&&i.start.length>0&&!As(i.start)&&(t.indent===0||i.start.every(r=>r.type!=="comment"||r.indent=e.indent){let i=!this.onKeyLine&&this.indent===e.indent&&(n.sep||As(n.start));switch(this.type){case"anchor":case"tag":i||n.value?(e.items.push({start:[this.sourceToken]}),this.onKeyLine=!0):n.sep?n.sep.push(this.sourceToken):n.start.push(this.sourceToken);return;case"explicit-key-ind":!n.sep&&!se(n.start,"explicit-key-ind")?n.start.push(this.sourceToken):i||n.value?e.items.push({start:[this.sourceToken]}):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]}),this.onKeyLine=!0;return;case"map-value-ind":if(!n.sep)Object.assign(n,{key:null,sep:[this.sourceToken]});else if(n.value||i&&!se(n.start,"explicit-key-ind"))e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(se(n.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]});else if(se(n.start,"explicit-key-ind")&&jn(n.key)&&!se(n.sep,"newline")){let r=it(n.start),o=n.key,a=n.sep;a.push(this.sourceToken),delete n.key,delete n.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:r,key:o,sep:a}]})}else n.sep.push(this.sourceToken);this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let r=this.flowScalar(this.type);i||n.value?(e.items.push({start:[],key:r,sep:[]}),this.onKeyLine=!0):n.sep?this.stack.push(r):(Object.assign(n,{key:r,sep:[]}),this.onKeyLine=!0);return}default:{let r=this.startBlockValue(e);if(r){i&&r.type!=="block-seq"&&se(n.start,"explicit-key-ind")&&e.items.push({start:[]}),this.stack.push(r);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){var t;let n=e.items[e.items.length-1];switch(this.type){case"newline":if(n.value){let i="end"in n.value?n.value.end:void 0,r=Array.isArray(i)?i[i.length-1]:void 0;(r==null?void 0:r.type)==="comment"?i==null||i.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else n.start.push(this.sourceToken);return;case"space":case"comment":if(n.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(n.start,e.indent)){let i=e.items[e.items.length-2],r=(t=i==null?void 0:i.value)===null||t===void 0?void 0:t.end;if(Array.isArray(r)){Array.prototype.push.apply(r,n.start),r.push(this.sourceToken),e.items.pop();return}}n.start.push(this.sourceToken)}return;case"anchor":case"tag":if(n.value||this.indent<=e.indent)break;n.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==e.indent)break;n.value||se(n.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):n.start.push(this.sourceToken);return}if(this.indent>e.indent){let i=this.startBlockValue(e);if(i){this.stack.push(i);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let t=e.items[e.items.length-1];if(this.type==="flow-error-end"){let n;do yield*this.pop(),n=this.peek(1);while(n&&n.type==="flow-collection")}else if(e.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!t||t.sep?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return;case"map-value-ind":!t||t.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!t||t.value?e.items.push({start:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let i=this.flowScalar(this.type);!t||t.value?e.items.push({start:[],key:i,sep:[]}):t.sep?this.stack.push(i):Object.assign(t,{key:i,sep:[]});return}case"flow-map-end":case"flow-seq-end":e.end.push(this.sourceToken);return}let n=this.startBlockValue(e);n?this.stack.push(n):(yield*this.pop(),yield*this.step())}else{let n=this.peek(2);if(n.type==="block-map"&&(this.type==="map-value-ind"||this.type==="newline"&&!n.items[n.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&n.type!=="flow-collection"){let i=Kt(n),r=it(i);xn(e);let o=e.end.splice(1,e.end.length);o.push(this.sourceToken);let a={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:r,key:e,sep:o}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=a}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let t=this.source.indexOf(` +`)+1;for(;t!==0;)this.onNewLine(this.offset+t),t=this.source.indexOf(` +`,t)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let t=Kt(e),n=it(t);return n.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:n}]}}case"map-value-ind":{this.onKeyLine=!0;let t=Kt(e),n=it(t);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:n,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!=="comment"||this.indent<=t?!1:e.every(n=>n.type==="newline"||n.type==="space")}*documentEnd(e){this.type!=="doc-mode"&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;case"space":case"comment":default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}};function zi(s){let e=s.prettyErrors!==!1;return{lineCounter:s.lineCounter||e&&new nt||null,prettyErrors:e}}function Es(s,e={}){let{lineCounter:t,prettyErrors:n}=zi(e),i=new rt(t==null?void 0:t.addNewLine),r=new Xe(e),o=null;for(let a of r.compose(i.parse(s),!0,s.length))if(!o)o=a;else if(o.options.logLevel!=="silent"){o.errors.push(new F(a.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return n&&t&&(o.errors.forEach(ds(s,t)),o.warnings.forEach(ds(s,t))),o}var Rt=class{constructor(e,t,n,i){this.app=e,this.filename=t,this.basename=t.split("/").pop(),this.tagPositions=n,this.hasFrontMatter=!!i}async renamed(e){let t=this.app.vault.getAbstractFileByPath(this.filename),n=await this.app.vault.read(t),i=n;for(let{position:{start:r,end:o},tag:a}of this.tagPositions){if(i.slice(r.offset,o.offset)!==a){let l=`File ${this.filename} has changed; skipping`;new Ts.Notice(l),console.error(l),console.debug(i.slice(r.offset,o.offset),a);return}i=e.inString(i,r.offset)}if(this.hasFrontMatter&&(i=this.replaceInFrontMatter(i,e)),i!==n)return await this.app.vault.modify(t,i),!0}replaceInFrontMatter(e,t){let[n,i]=e.split(/^---\r?$\n?/m,2);if(n.trim()!==""||!i.trim()||!i.endsWith(` +`))return e;let r=Es(i,{keepSourceTokens:!0});if(r.errors.length){let f=`YAML issue with ${this.filename}: ${r.errors[0]}`;console.error(f),new Ts.Notice(f+"; skipping frontmatter");return}let o=!1,a=r.toJSON();function l(f,u,h=!1){tt.setScalarValue(f.srcToken,u,{afterKey:h}),o=!0,f.value=u}function c(f,u){let h=r.get(f,!0);if(!h)return;let p=a[f];if(!(!p||!p.length))if(typeof p=="string"){let g=p.split(u?/(^\s+|\s*,\s*|\s+$)/:/([\s,]+)/),m=t.inArray(g,!0,u).join("");p!=m&&l(h,m,!0)}else Array.isArray(p)&&t.inArray(p,!1,u).forEach((g,m)=>{p[m]!==g&&l(h.get(m,!0),g)})}for(let{key:{value:f}}of r.contents.items)/^tags?$/i.test(f)?c(f,!1):/^alias(es)?$/i.test(f)&&c(f,!0);return o?e.replace(i,tt.stringify(r.contents.srcToken)):e}};async function qn(s,e){let t=await tr(e);if(t===!1)return;if(!t||t===e)return new we.Notice("Unchanged or empty tag: No changes made.");let n=new I(e),i=new I(t),r=new ct(n,i),o=r.willMergeTags(er(s).reverse());if(o&&await sr(o,n,i))return;let l=await Ls(s,n);if(!l)return;let c=new _e(`Renaming to #${t}/*`,"Processing files..."),f=0;return await c.forEach(l,async u=>{c.message="Processing "+u.basename,await u.renamed(r)&&f++}),new we.Notice(`Operation ${c.aborted?"cancelled":"complete"}: ${f} file(s) updated`)}function er(s){return Object.keys(s.metadataCache.getTags())}async function Ls(s,e){let t=[],n=new _e(`Searching for ${e}/*`,"Matching files...");if(await n.forEach(s.metadataCache.getCachedFiles(),i=>{let{frontmatter:r,tags:o}=s.metadataCache.getCache(i)||{};o=(o||[]).filter(c=>c.tag&&e.matches(c.tag)).reverse();let a=((0,we.parseFrontMatterTags)(r)||[]).filter(e.matches),l=((0,we.parseFrontMatterAliases)(r)||[]).filter(I.isTag).filter(e.matches);(o.length||a.length||l.length)&&t.push(new Rt(s,i,o,a.length+l.length))}),!n.aborted)return t}async function tr(s){try{return await Gs(`Renaming #${s} (and any sub-tags)`,`Enter new name (must be a valid Obsidian tag): +`,s,"[^\u2000-\u206F\u2E00-\u2E7F'!\"#$%&()*+,.:;<=>?@^`{|}~\\[\\]\\\\\\s]+","Obsidian tag name")}catch(e){return!1}}async function sr([s,e],t,n){try{await(0,Dn.confirm)("WARNING: No Undo!",`Renaming ${t} to ${n} will merge ${s.canonical===t.canonical?"these tags":`multiple tags + into existing tags (such as ${s} + merging with ${e})`}. + + This cannot be undone. Do you wish to proceed?`)}catch(i){return!0}}function Fn(s,e){let t=Object.keys(e).map(n=>nr(s,n,e[n]));return t.length===1?t[0]:function(){t.forEach(n=>n())}}function nr(s,e,t){let n=s[e],i=s.hasOwnProperty(e),r=t(n);return n&&Object.setPrototypeOf(r,n),Object.setPrototypeOf(o,r),s[e]=o,a;function o(...l){return r===n&&s[e]===o&&a(),r.apply(this,l)}function a(){s[e]===o&&(i?s[e]=n:delete s[e]),r!==n&&(r=n,Object.setPrototypeOf(o,n||Function))}}var Kn="tag-wrangler:tag-pane";function Is(s,e,t,n,i){return s.on(e,t,n,i),()=>s.off(e,t,n,i)}var Ut=class extends P.Plugin{constructor(){super(...arguments);Yt(this,"pageAliases",new Map);Yt(this,"tagPages",new Map)}tagPage(t){return Array.from(this.tagPages.get(I.canonical(t))||"")[0]}openTagPage(t,n,i){let r={eState:n?{rename:"all"}:{focus:!0},...n?{state:{mode:"source"}}:{}};return this.app.workspace.getLeaf(i).openFile(t,r)}async createTagPage(t,n){var a;let i=new I(t).name.split("/").join(" "),r=this.app.fileManager.getNewFileParent(((a=this.app.workspace.getActiveFile())==null?void 0:a.path)||""),o=this.app.vault.getAvailablePath(r.getParentPrefix()+i,"md");this.openTagPage(await this.app.vault.create(o,["---",`Aliases: [ ${JSON.stringify(I.toTag(t))} ]`,"---",""].join(` +`)),!0,n)}async onload(){this.register(Is(document,"contextmenu",".tag-pane-tag",this.onMenu.bind(this),{capture:!0})),this.app.workspace.registerHoverLinkSource(Kn,{display:"Tag pane",defaultMod:!0}),this.addChild(new ot(this,{hoverSource:Kn,selector:".tag-pane-tag",container:".tag-container",toTag(i){var r;return(r=i.find(".tag-pane-tag-text"))==null?void 0:r.textContent}})),this.addChild(new ot(this,{hoverSource:"preview",selector:'a.tag[href^="#"]',container:".markdown-preview-view, .markdown-embed, .workspace-leaf-content",toTag(i){return i.getAttribute("href")}})),this.addChild(new ot(this,{hoverSource:"editor",selector:"span.cm-hashtag",container:".markdown-source-view",toTag(i){let r=i.textContent;for(let o=i.previousElementSibling;o!=null&&o.matches("span.cm-hashtag");o=o.previousElementSibling)r=o.textContent+r;for(let o=i.nextElementSibling;o!=null&&o.matches("span.cm-hashtag");o=o.nextElementSibling)r+=o.textContent;return r}}));let t=this.app.metadataCache,n=this;this.register(Fn(t,{getTags(i){return function(){let o=i.call(this),a=new Set(Object.keys(o).map(l=>l.toLowerCase()));for(let l of n.tagPages.keys())a.has(l)||(o[n.tagPages.get(l).tag]=0);return o}}})),this.app.workspace.onLayoutReady(()=>{t.getCachedFiles().forEach(i=>{var o,a;let r=(o=t.getCache(i))==null?void 0:o.frontmatter;r&&((a=(0,P.parseFrontMatterAliases)(r))==null?void 0:a.filter(I.isTag))&&this.updatePage(this.app.vault.getAbstractFileByPath(i),r)}),this.registerEvent(t.on("changed",(i,r,o)=>this.updatePage(i,o==null?void 0:o.frontmatter))),this.registerEvent(this.app.vault.on("delete",i=>this.updatePage(i))),app.workspace.getLeavesOfType("tag").forEach(i=>{var r,o;(o=(r=i==null?void 0:i.view)==null?void 0:r.requestUpdateTags)==null||o.call(r)})})}updatePage(t,n){var r;let i=((r=(0,P.parseFrontMatterAliases)(n))==null?void 0:r.filter(I.isTag))||[];if(this.pageAliases.has(t)){let o=new Set(i||[]);for(let a of this.pageAliases.get(t)){if(o.has(a))continue;let l=I.canonical(a),c=this.tagPages.get(l);c&&(c.delete(t),c.size||this.tagPages.delete(l))}i.length||this.pageAliases.delete(t)}if(i.length){this.pageAliases.set(t,i);for(let o of i){let a=I.canonical(o);if(this.tagPages.has(a))this.tagPages.get(a).add(t);else{let l=new Set([t]);l.tag=I.toTag(o),this.tagPages.set(a,l)}}}}onMenu(t,n){t.obsidian_contextmenu||(t.obsidian_contextmenu=new P.Menu(this.app),setImmediate(()=>u.showAtPosition({x:t.pageX,y:t.pageY})));let i=n.find(".tag-pane-tag-text").textContent,r=this.tagPage(i),o=n.parentElement.parentElement.find(".collapse-icon"),a=this.app.internalPlugins.getPluginById("global-search"),l=a&&a.instance,c=l&&l.getGlobalSearchQuery(),f=this.app.plugins.plugins["smart-random-note"],u=t.obsidian_contextmenu.addItem(le("pencil","Rename #"+i,()=>this.rename(i)));if(u.addSeparator(),r?u.addItem(le("popup-open","Open tag page",h=>this.openTagPage(r,!1,P.Keymap.isModEvent(h)))):u.addItem(le("create-new","Create tag page",h=>this.createTagPage(i,P.Keymap.isModEvent(h)))),l&&(u.addSeparator().addItem(le("magnifying-glass","New search for #"+i,()=>l.openGlobalSearch("tag:"+i))),c&&u.addItem(le("sheets-in-box","Require #"+i+" in search",()=>l.openGlobalSearch(c+" tag:"+i))),u.addItem(le("crossed-star","Exclude #"+i+" from search",()=>l.openGlobalSearch(c+" -tag:"+i)))),f&&u.addSeparator().addItem(le("dice","Open random note",async()=>{let h=await Ls(this.app,new I(i));f.openRandomNote(h.map(p=>this.app.vault.getAbstractFileByPath(p.filename)))})),this.app.workspace.trigger("tag-wrangler:contextmenu",u,i,{search:l,query:c,isHierarchy:o,tagPage:r}),o){let m=function(d){for(let y of g.children)y.setCollapsed(d)},h=i.split("/").slice(0,-1).join("/"),p=this.leafView(n.matchParent(".workspace-leaf")),g=h?p.tagDoms["#"+h.toLowerCase()]:p.root;u.addSeparator().addItem(le("vertical-three-dots","Collapse tags at this level",()=>m(!0))).addItem(le("expand-vertically","Expand tags at this level",()=>m(!1)))}}leafView(t){let n;return this.app.workspace.iterateAllLeaves(i=>{if(i.containerEl===t)return n=i.view,!0}),n}async rename(t){let n=new P.Scope;this.app.keymap.pushScope(n);try{await qn(this.app,t)}catch(i){console.error(i),new P.Notice("error: "+i)}this.app.keymap.popScope(n)}};function le(s,e,t){return n=>n.setIcon(s).setTitle(e).onClick(t)}var ot=class extends P.Component{constructor(e,t){super(),this.opts=t,this.plugin=e}onload(){let{selector:e,container:t,hoverSource:n,toTag:i}=this.opts;this.register(Is(document,"mouseover",e,(r,o)=>{let a=i(o),l=a&&this.plugin.tagPage(a);l&&this.plugin.app.workspace.trigger("hover-link",{event:r,source:n,targetEl:o,linktext:l.path,hoverParent:o.matchParent(t)})},{capture:!1})),this.register(Is(document,"click",e,(r,o)=>{let{altKey:a}=r;if(!P.Keymap.isModEvent(r)&&!a)return;let l=i(o),c=l&&this.plugin.tagPage(l);if(c)return this.plugin.openTagPage(c,!1,!a),r.preventDefault(),r.stopPropagation(),!1},{capture:!0}))}}; diff --git a/notes/.obsidian/plugins/tag-wrangler/manifest.json b/notes/.obsidian/plugins/tag-wrangler/manifest.json index be09575..9b253ff 100644 --- a/notes/.obsidian/plugins/tag-wrangler/manifest.json +++ b/notes/.obsidian/plugins/tag-wrangler/manifest.json @@ -1,8 +1,10 @@ { "id": "tag-wrangler", "name": "Tag Wrangler", - "version": "0.5.3", - "minAppVersion": "0.13.19", + "author": "PJ Eby", + "authorUrl": "https://github.com/pjeby", + "version": "0.5.4", + "minAppVersion": "0.15.9", "description": "Rename, merge, toggle, and search tags from the tag pane", "isDesktopOnly": true } diff --git a/notes/.obsidian/plugins/tag-wrangler/styles.css b/notes/.obsidian/plugins/tag-wrangler/styles.css index 76584da..198e205 100644 --- a/notes/.obsidian/plugins/tag-wrangler/styles.css +++ b/notes/.obsidian/plugins/tag-wrangler/styles.css @@ -1,168 +1 @@ -.smalltalk { - display: flex; - - align-items: center; - flex-direction: column; - justify-content: center; - - transition: 200ms opacity; - - bottom: 0; - left: 0; - overflow: auto; - padding: 20px; - position: fixed; - right: 0; - top: 0; - - z-index: 100; -} - -.smalltalk + .smalltalk { - transition: ease 1s; -} - -.smalltalk .page { - border-radius: 3px; - background: white; - box-shadow: 0 4px 23px 5px rgba(0, 0, 0, .2), 0 2px 6px rgba(0, 0, 0, .15); - color: #333; - min-width: 400px; - padding: 0; - position: relative; - z-index: 0; -} - -@media only screen and (max-width: 500px) { - .smalltalk .page { - min-width: 0; - } -} - -.smalltalk .page > .close-button { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAQAAAC1QeVaAAAAUklEQVR4XqXPYQrAIAhAYW/gXd8NJxTopVqsGEhtf+L9/ERU2k/HSMFQpKcYJeNFI9Be0LCMij8cYyjj5EHIivGBkwLfrbX3IF8PqumVmnDpEG+eDsKibPG2JwAAAABJRU5ErkJggg==); - background-position: center; - background-repeat: no-repeat; - height: 14px; - position: absolute; - right: 7px; - top: 7px; - width: 14px; - z-index: 1; -} - -.smalltalk .page > .close-button:hover { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAQAAAC1QeVaAAAAnUlEQVR4XoWQQQ6CQAxFewjkJkMCyXgJPMk7AiYczyBeZEAX6AKctGIaN+bt+trk9wtGQc/IkhnoKGxqqiWxOSZalapWFZ6VrIUDExsN0a5JRBq9LoVOR0eEQMoEhKizXhhsn0p1sCWVo7CwOf1RytPL8CPvwuBUoHL6ugeK30CVD1TqK7V/hdpe+VNChhOzV8xWny/+xosHF8578W/Hmc1OOC3wmwAAAABJRU5ErkJggg==); -} - -.smalltalk .progress { - display: block; - width: 100%; -} - -.smalltalk .page header { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - max-width: 500px; - - user-select: none; - color: #333; - font-size: 120%; - font-weight: bold; - margin: 0; - padding: 14px 17px; - text-shadow: white 0 1px 2px; -} - -.smalltalk .page .content-area { - overflow: hidden; - text-overflow: ellipsis; - - padding: 6px 17px; - position: relative; -} - -.smalltalk .page .action-area { - padding: 14px 17px; -} - -.smalltalk button, .smalltalk .smalltalk { - min-height: 2em; - min-width: 4em; -} - -.smalltalk button { - appearance: none; - user-select: none; - background-image: linear-gradient(#ededed, #ededed 38%, #dedede); - - border: 1px solid rgba(0, 0, 0, 0.25); - border-radius: 2px; - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75); - color: #444; - font: inherit; - margin: 0 1px 0 0; - text-shadow: 0 1px 0 rgb(240, 240, 240); -} - -.smalltalk button::-moz-focus-inner { - border: 0; -} - -.smalltalk button:enabled:active { - background-image: linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7); - box-shadow: none; - text-shadow: none; -} - -.smalltalk .page .button-strip { - display: flex; - - flex-direction: row; - justify-content: flex-end; -} - -.smalltalk .page .button-strip > button { - margin-left: 10px; -} - -.smalltalk input { - width: 100%; - border: 1px solid #bfbfbf; - border-radius: 2px; - box-sizing: border-box; - color: #444; - font: inherit; - margin: 0; - min-height: 2em; - padding: 3px; - outline: none; -} - -.smalltalk button:enabled:focus, .smalltalk input:enabled:focus { - transition: border-color 200ms; - border-color: rgb(77, 144, 254); - outline: none; -} - - -.smalltalk input[pattern]:invalid, .smalltalk input[pattern]:invalid:enabled:focus, .smalltalk input[pattern][aria-invalid='true'], .smalltalk input[pattern][aria-invalid='true']:enabled:focus { - border-color: var(--text-error); - background-color: var(--background-modifier-error); } - -.smalltalk .page, .smalltalk .page header, .smalltalk input, .smalltalk button { - color: var(--text-normal); - text-shadow: none; } - -.smalltalk .page { - background: var(--background-primary); } - -.smalltalk button[data-name="js-ok"] { - background: var(--background-modifier-error); } - -.smalltalk button[data-name="js-cancel"] { - background: var(--background-secondary-alt); } - -.smalltalk button { - box-shadow: none; } +.smalltalk{display:flex;align-items:center;flex-direction:column;justify-content:center;transition:.2s opacity;inset:0;overflow:auto;padding:20px;position:fixed;z-index:100}.smalltalk+.smalltalk{transition:ease 1s}.smalltalk .page{border-radius:3px;background:white;box-shadow:0 4px 23px 5px #0003,0 2px 6px #00000026;color:#333;min-width:400px;padding:0;position:relative;z-index:0}@media only screen and (max-width: 500px){.smalltalk .page{min-width:0}}.smalltalk .page>.close-button{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAQAAAC1QeVaAAAAUklEQVR4XqXPYQrAIAhAYW/gXd8NJxTopVqsGEhtf+L9/ERU2k/HSMFQpKcYJeNFI9Be0LCMij8cYyjj5EHIivGBkwLfrbX3IF8PqumVmnDpEG+eDsKibPG2JwAAAABJRU5ErkJggg==);background-position:center;background-repeat:no-repeat;height:14px;position:absolute;right:7px;top:7px;width:14px;z-index:1}.smalltalk .page>.close-button:hover{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAQAAAC1QeVaAAAAnUlEQVR4XoWQQQ6CQAxFewjkJkMCyXgJPMk7AiYczyBeZEAX6AKctGIaN+bt+trk9wtGQc/IkhnoKGxqqiWxOSZalapWFZ6VrIUDExsN0a5JRBq9LoVOR0eEQMoEhKizXhhsn0p1sCWVo7CwOf1RytPL8CPvwuBUoHL6ugeK30CVD1TqK7V/hdpe+VNChhOzV8xWny/+xosHF8578W/Hmc1OOC3wmwAAAABJRU5ErkJggg==)}.smalltalk .progress{display:block;width:100%}.smalltalk .page header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:500px;user-select:none;color:#333;font-size:120%;font-weight:700;margin:0;padding:14px 17px;text-shadow:white 0 1px 2px}.smalltalk .page .content-area{overflow:hidden;text-overflow:ellipsis;padding:6px 17px;position:relative}.smalltalk .page .action-area{padding:14px 17px}.smalltalk button,.smalltalk .smalltalk{min-height:2em;min-width:4em}.smalltalk button{appearance:none;user-select:none;background-image:linear-gradient(#ededed,#ededed 38%,#dedede);border:1px solid rgba(0,0,0,.25);border-radius:2px;box-shadow:0 1px #00000014,inset 0 1px 2px #ffffffbf;color:#444;font:inherit;margin:0 1px 0 0;text-shadow:0 1px 0 rgb(240,240,240)}.smalltalk button::-moz-focus-inner{border:0}.smalltalk button:enabled:active{background-image:linear-gradient(#e7e7e7,#e7e7e7 38%,#d7d7d7);box-shadow:none;text-shadow:none}.smalltalk .page .button-strip{display:flex;flex-direction:row;justify-content:flex-end}.smalltalk .page .button-strip>button{margin-left:10px}.smalltalk input{width:100%;border:1px solid #bfbfbf;border-radius:2px;box-sizing:border-box;color:#444;font:inherit;margin:0;min-height:2em;padding:3px;outline:none}.smalltalk button:enabled:focus,.smalltalk input:enabled:focus{transition:border-color .2s;border-color:#4d90fe;outline:none}.smalltalk input[pattern]:invalid,.smalltalk input[pattern]:invalid:enabled:focus,.smalltalk input[pattern][aria-invalid=true],.smalltalk input[pattern][aria-invalid=true]:enabled:focus{border-color:var(--text-error);background-color:var(--background-modifier-error)}.smalltalk .page,.smalltalk .page header,.smalltalk input,.smalltalk button{color:var(--text-normal);text-shadow:none}.smalltalk .page{background:var(--background-primary)}.smalltalk button[data-name=js-ok]{background:var(--background-modifier-error)}.smalltalk button[data-name=js-cancel]{background:var(--background-secondary-alt)}.smalltalk button{box-shadow:none} diff --git a/notes/.obsidian/plugins/templater-obsidian/main.js b/notes/.obsidian/plugins/templater-obsidian/main.js index c096e4d..9660799 100644 --- a/notes/.obsidian/plugins/templater-obsidian/main.js +++ b/notes/.obsidian/plugins/templater-obsidian/main.js @@ -2580,7 +2580,8 @@ var InternalModuleFile = class extends InternalModule { } generate_exists() { return (filename) => __async(this, null, function* () { - return yield app.vault.exists(filename); + const path = (0, import_obsidian8.normalizePath)(filename); + return yield app.vault.exists(path); }); } generate_find_tfile() { @@ -3978,39 +3979,26 @@ var Templater = class { if (file.path.includes(template_folder) && template_folder !== "/") { return; } - yield new Promise((resolve2) => { - let timeout; - const file_open_ref = app.workspace.on("file-open", (opened_file) => __async(this, null, function* () { - if (opened_file !== file) { - return; - } - window.clearTimeout(timeout); - app.workspace.offref(file_open_ref); - yield delay(300); - if (file.stat.size == 0 && templater.plugin.settings.enable_folder_templates) { - const folder_template_match = templater.get_new_file_template_for_folder(file.parent); - if (!folder_template_match) { - resolve2(); - return; - } - const template_file = yield errorWrapper(() => __async(this, null, function* () { - return resolve_tfile(folder_template_match); - }), `Couldn't find template ${folder_template_match}`); - if (template_file == null) { - resolve2(); - return; - } - yield templater.write_template_to_file(template_file, file); - } else { - yield templater.overwrite_file_commands(file); - } - resolve2(); - })); - timeout = window.setTimeout(() => { - app.workspace.offref(file_open_ref); - resolve2(); - }, 300); - }); + yield delay(300); + if (file.stat.size == 0 && templater.plugin.settings.enable_folder_templates) { + const folder_template_match = templater.get_new_file_template_for_folder(file.parent); + if (!folder_template_match) { + return; + } + const template_file = yield errorWrapper(() => __async(this, null, function* () { + return resolve_tfile(folder_template_match); + }), `Couldn't find template ${folder_template_match}`); + if (template_file == null) { + return; + } + yield templater.write_template_to_file(template_file, file); + } else { + if (file.stat.size <= 1e4) { + yield templater.overwrite_file_commands(file); + } else { + console.log(`Templater skipped parsing ${file.path} because file size exceeds 10000`); + } + } }); } execute_startup_scripts() { @@ -4201,6 +4189,10 @@ var CursorJumper = class { yield app.vault.modify(active_file, new_content); this.set_cursor_location(positions); } + if (app.vault.getConfig("vimMode")) { + const cm = active_view.editor.cm.cm; + window.CodeMirrorAdapter.Vim.handleKey(cm, "i", "mapping"); + } }); } get_editor_position_from_index(content, index) { @@ -4265,7 +4257,7 @@ var CursorJumper = class { var import_obsidian16 = __toModule(require("obsidian")); // toml:/home/runner/work/Templater/Templater/docs/documentation.toml -var tp = { config: { name: "config", description: "This module exposes Templater's running configuration.\n\nThis is mostly useful when writing scripts requiring some context information.\n", functions: { template_file: { name: "template_file", description: "The `TFile` object representing the template file.", definition: "tp.file.template_file" }, target_file: { name: "target_file", description: "The `TFile` object representing the target file where the template will be inserted.", definition: "tp.config.target_file" }, run_mode: { name: "run_mode", description: "The `RunMode`, representing the way Templater was launched (Create new from template, Append to active file, ...)", definition: "tp.config.run_mode" }, active_file: { name: "active_file", description: "The active file (if existing) when launching Templater.", definition: "tp.config.active_file?" } } }, date: { name: "date", description: "This module contains every internal function related to dates.", functions: { now: { name: "now", description: "Retrieves the date.", definition: 'tp.date.now(format: string = "YYYY-MM-DD", offset?: number\u23AEstring, reference?: string, reference_format?: string)', args: { format: { name: "format", description: "Format for the date, refer to [format reference](https://momentjs.com/docs/#/displaying/format/)" }, offset: { name: "offset", description: "Offset for the day, e.g. set this to `-7` to get last week's date. You can also specify the offset as a string using the ISO 8601 format" }, reference: { name: "reference", description: "The date referential, e.g. set this to the note's title" }, reference_format: { name: "reference_format", description: "The date reference format." } } }, tomorrow: { name: "tomorrow", description: "Retrieves tomorrow's date.", definition: 'tp.date.tomorrow(format: string = "YYYY-MM-DD")', args: { format: { name: "format", description: "Format for the date, refer to [format reference](https://momentjs.com/docs/#/displaying/format/)" } } }, yesterday: { name: "yesterday", description: "Retrieves yesterday's date.", definition: 'tp.date.yesterday(format: string = "YYYY-MM-DD")', args: { format: { name: "format", description: "Format for the date, refer to [format reference](https://momentjs.com/docs/#/displaying/format/)" } } }, weekday: { name: "weekday", description: "", definition: 'tp.date.weekday(format: string = "YYYY-MM-DD", weekday: number, reference?: string, reference_format?: string)', args: { format: { name: "format", description: "Format for the date, refer to [format reference](https://momentjs.com/docs/#/displaying/format/)" }, weekday: { name: "weekday", description: "Week day number. If the locale assigns Monday as the first day of the week, `0` will be Monday, `-7` will be last week's day." }, reference: { name: "reference", description: "The date referential, e.g. set this to the note's title" }, reference_format: { name: "reference_format", description: "The date reference format." } } } } }, file: { name: "file", description: "This module contains every internal function related to files.", functions: { content: { name: "content", description: "Retrieves the file's content", definition: "tp.file.content" }, create_new: { name: "create_new", description: "Creates a new file using a specified template or with a specified content.", definition: "tp.file.create_new(template: TFile \u23AE string, filename?: string, open_new: boolean = false, folder?: TFolder)", args: { template: { name: "template", description: "Either the template used for the new file content, or the file content as a string. If it is the template to use, you retrieve it with `tp.file.find_tfile(TEMPLATENAME)`" }, filename: { name: "filename", description: 'The filename of the new file, defaults to "Untitled".' }, open_new: { name: "open_new", description: "Whether to open or not the newly created file. Warning: if you use this option, since commands are executed asynchronously, the file can be opened first and then other commands are appended to that new file and not the previous file." }, folder: { name: "folder", description: 'The folder to put the new file in, defaults to obsidian\'s default location. If you want the file to appear in a different folder, specify it with `app.vault.getAbstractFileByPath("FOLDERNAME")`' } } }, creation_date: { name: "creation_date", description: "Retrieves the file's creation date.", definition: 'tp.file.creation_date(format: string = "YYYY-MM-DD HH:mm")', args: { format: { name: "format", description: "Format for the date, refer to format reference" } } }, cursor: { name: "cursor", description: "Sets the cursor to this location after the template has been inserted. \n\nYou can navigate between the different tp.file.cursor using the configured hotkey in obsidian settings.\n", definition: "tp.file.cursor(order?: number)", args: { order: { name: "order", description: "The order of the different cursors jump, e.g. it will jump from 1 to 2 to 3, and so on.\nIf you specify multiple tp.file.cursor with the same order, the editor will switch to multi-cursor.\n" } } }, cursor_append: { name: "cursor_append", description: "Appends some content after the active cursor in the file.", definition: "tp.file.cursor_append(content: string)", args: { content: { name: "content", description: "The content to append after the active cursor" } } }, exists: { name: "exists", description: "Checks if a file exists or not. Returns a true / false boolean.", definition: "tp.file.exists(filename: string)", args: { filename: { name: "filename", description: "The filename of the file we want to check existence, e.g. MyFile." } } }, find_tfile: { name: "find_tfile", description: "Search for a file and returns its `TFile` instance", definition: "tp.file.find_tfile(filename: string)", args: { filename: { name: "filename", description: "The filename we want to search and resolve as a `TFile`" } } }, folder: { name: "folder", description: "Retrieves the file's folder name.", definition: "tp.file.folder(relative: boolean = false)", args: { relative: { name: "relative", description: "If set to true, appends the vault relative path to the folder name." } } }, include: { name: "include", description: "Includes the file's link content. Templates in the included content will be resolved.", definition: "tp.file.include(include_link: string \u23AE TFile)", args: { include_link: { name: "include_link", description: "The link to the file to include, e.g. [[MyFile]], or a TFile object. Also supports sections or blocks inclusions, e.g. [[MyFile#Section1]]" } } }, last_modified_date: { name: "last_modified_date", description: "Retrieves the file's last modification date.", definition: 'tp.file.last_modified_date(format: string = "YYYY-MM-DD HH:mm")', args: { format: { name: "format", description: "Format for the date, refer to format reference." } } }, move: { name: "functions.move", description: "Moves the file to the desired vault location.", definition: "tp.file.move(new_path: string, file_to_move?: TFile)", args: { new_path: { name: "new_path", description: "The new vault relative path of the file, without the file extension. Note: the new path needs to include the folder and the filename, e.g. /Notes/MyNote" } } }, path: { name: "path", description: "Retrieves the file's absolute path on the system.", definition: "tp.file.path(relative: boolean = false)", args: { relative: { name: "relative", description: "If set to true, only retrieves the vault's relative path." } } }, rename: { name: "rename", description: "Renames the file (keeps the same file extension).", definition: "tp.file.rename(new_title: string)", args: { new_title: { name: "new_title", description: "The new file title." } } }, selection: { name: "selection", description: "Retrieves the active file's text selection.", definition: "tp.file.selection()" }, tags: { name: "tags", description: "Retrieves the file's tags (array of string)", definition: "tp.file.tags" }, title: { name: "title", definition: "tp.file.title", description: "Retrieves the file's title." } } }, frontmatter: { name: "frontmatter", description: "This modules exposes all the frontmatter variables of a file as variables." }, obsidian: { name: "obsidian", description: "This module exposes all the functions and classes from the obsidian API." }, system: { name: "system", description: "This module contains system related functions.", functions: { clipboard: { name: "clipboard", description: "Retrieves the clipboard's content", definition: "tp.system.clipboard()" }, prompt: { name: "prompt", description: "Spawns a prompt modal and returns the user's input.", definition: "tp.system.prompt(prompt_text?: string, default_value?: string, throw_on_cancel: boolean = false, multiline?: boolean = false)", args: { prompt_text: { name: "prompt_text", description: "Text placed above the input field" }, default_value: { name: "default_value", description: "A default value for the input field" }, throw_on_cancel: { name: "throw_on_cancel", description: "Throws an error if the prompt is canceled, instead of returning a `null` value" }, multiline: { name: "multiline", description: "If set to true, the input field will be a multiline textarea" } } }, suggester: { name: "suggester", description: "Spawns a suggester prompt and returns the user's chosen item.", definition: 'tp.system.suggester(text_items: string[] \u23AE ((item: T) => string), items: T[], throw_on_cancel: boolean = false, placeholder: string = "", limit?: number = undefined)', args: { text_items: { name: "text_items", description: "Array of strings representing the text that will be displayed for each item in the suggester prompt. This can also be a function that maps an item to its text representation." }, items: { name: "items", description: "Array containing the values of each item in the correct order." }, throw_on_cancel: { name: "throw_on_cancel", description: "Throws an error if the prompt is canceled, instead of returning a `null` value" }, placeholder: { name: "placeholder", description: "Placeholder string of the prompt" }, limit: { name: "limit", description: "Limit the number of items rendered at once (useful to improve performance when displaying large lists)" } } } } }, web: { name: "web", description: "This modules contains every internal function related to the web (making web requests).", functions: { daily_quote: { name: "daily_quote", description: "Retrieves and parses the daily quote from the API https://api.quotable.io", definition: "tp.web.daily_quote()" }, random_picture: { name: "random_picture", description: "Gets a random image from https://unsplash.com/", definition: "tp.web.random_picture(size?: string, query?: string, include_size?: boolean)", args: { size: { name: "size", description: "Image size in the format `x`" }, query: { name: "query", description: "Limits selection to photos matching a search term. Multiple search terms can be passed separated by a comma `,`" }, include_dimensions: { name: "include_size", description: "Optional argument to include the specified size in the image link markdown. Defaults to false" } } } } } }; +var tp = { config: { name: "config", description: "This module exposes Templater's running configuration.\n\nThis is mostly useful when writing scripts requiring some context information.\n", functions: { template_file: { name: "template_file", description: "The `TFile` object representing the template file.", definition: "tp.file.template_file" }, target_file: { name: "target_file", description: "The `TFile` object representing the target file where the template will be inserted.", definition: "tp.config.target_file" }, run_mode: { name: "run_mode", description: "The `RunMode`, representing the way Templater was launched (Create new from template, Append to active file, ...)", definition: "tp.config.run_mode" }, active_file: { name: "active_file", description: "The active file (if existing) when launching Templater.", definition: "tp.config.active_file?" } } }, date: { name: "date", description: "This module contains every internal function related to dates.", functions: { now: { name: "now", description: "Retrieves the date.", definition: 'tp.date.now(format: string = "YYYY-MM-DD", offset?: number\u23AEstring, reference?: string, reference_format?: string)', args: { format: { name: "format", description: "Format for the date, refer to [format reference](https://momentjs.com/docs/#/displaying/format/)" }, offset: { name: "offset", description: "Offset for the day, e.g. set this to `-7` to get last week's date. You can also specify the offset as a string using the ISO 8601 format" }, reference: { name: "reference", description: "The date referential, e.g. set this to the note's title" }, reference_format: { name: "reference_format", description: "The date reference format." } } }, tomorrow: { name: "tomorrow", description: "Retrieves tomorrow's date.", definition: 'tp.date.tomorrow(format: string = "YYYY-MM-DD")', args: { format: { name: "format", description: "Format for the date, refer to [format reference](https://momentjs.com/docs/#/displaying/format/)" } } }, yesterday: { name: "yesterday", description: "Retrieves yesterday's date.", definition: 'tp.date.yesterday(format: string = "YYYY-MM-DD")', args: { format: { name: "format", description: "Format for the date, refer to [format reference](https://momentjs.com/docs/#/displaying/format/)" } } }, weekday: { name: "weekday", description: "", definition: 'tp.date.weekday(format: string = "YYYY-MM-DD", weekday: number, reference?: string, reference_format?: string)', args: { format: { name: "format", description: "Format for the date, refer to [format reference](https://momentjs.com/docs/#/displaying/format/)" }, weekday: { name: "weekday", description: "Week day number. If the locale assigns Monday as the first day of the week, `0` will be Monday, `-7` will be last week's day." }, reference: { name: "reference", description: "The date referential, e.g. set this to the note's title" }, reference_format: { name: "reference_format", description: "The date reference format." } } } } }, file: { name: "file", description: "This module contains every internal function related to files.", functions: { content: { name: "content", description: "Retrieves the file's content", definition: "tp.file.content" }, create_new: { name: "create_new", description: "Creates a new file using a specified template or with a specified content.", definition: "tp.file.create_new(template: TFile \u23AE string, filename?: string, open_new: boolean = false, folder?: TFolder)", args: { template: { name: "template", description: "Either the template used for the new file content, or the file content as a string. If it is the template to use, you retrieve it with `tp.file.find_tfile(TEMPLATENAME)`" }, filename: { name: "filename", description: 'The filename of the new file, defaults to "Untitled".' }, open_new: { name: "open_new", description: "Whether to open or not the newly created file. Warning: if you use this option, since commands are executed asynchronously, the file can be opened first and then other commands are appended to that new file and not the previous file." }, folder: { name: "folder", description: 'The folder to put the new file in, defaults to obsidian\'s default location. If you want the file to appear in a different folder, specify it with `app.vault.getAbstractFileByPath("FOLDERNAME")`' } } }, creation_date: { name: "creation_date", description: "Retrieves the file's creation date.", definition: 'tp.file.creation_date(format: string = "YYYY-MM-DD HH:mm")', args: { format: { name: "format", description: "Format for the date, refer to format reference" } } }, cursor: { name: "cursor", description: "Sets the cursor to this location after the template has been inserted. \n\nYou can navigate between the different tp.file.cursor using the configured hotkey in obsidian settings.\n", definition: "tp.file.cursor(order?: number)", args: { order: { name: "order", description: "The order of the different cursors jump, e.g. it will jump from 1 to 2 to 3, and so on.\nIf you specify multiple tp.file.cursor with the same order, the editor will switch to multi-cursor.\n" } } }, cursor_append: { name: "cursor_append", description: "Appends some content after the active cursor in the file.", definition: "tp.file.cursor_append(content: string)", args: { content: { name: "content", description: "The content to append after the active cursor" } } }, exists: { name: "exists", description: "The filename of the file we want to check existence. The fullpath to the file, relative to the Vault and containing the extension, must be provided. e.g. MyFolder/SubFolder/MyFile.", definition: "tp.file.exists(filename: string)", args: { filename: { name: "filename", description: "The filename of the file we want to check existence, e.g. MyFile." } } }, find_tfile: { name: "find_tfile", description: "Search for a file and returns its `TFile` instance", definition: "tp.file.find_tfile(filename: string)", args: { filename: { name: "filename", description: "The filename we want to search and resolve as a `TFile`" } } }, folder: { name: "folder", description: "Retrieves the file's folder name.", definition: "tp.file.folder(relative: boolean = false)", args: { relative: { name: "relative", description: "If set to true, appends the vault relative path to the folder name." } } }, include: { name: "include", description: "Includes the file's link content. Templates in the included content will be resolved.", definition: "tp.file.include(include_link: string \u23AE TFile)", args: { include_link: { name: "include_link", description: "The link to the file to include, e.g. [[MyFile]], or a TFile object. Also supports sections or blocks inclusions, e.g. [[MyFile#Section1]]" } } }, last_modified_date: { name: "last_modified_date", description: "Retrieves the file's last modification date.", definition: 'tp.file.last_modified_date(format: string = "YYYY-MM-DD HH:mm")', args: { format: { name: "format", description: "Format for the date, refer to format reference." } } }, move: { name: "functions.move", description: "Moves the file to the desired vault location.", definition: "tp.file.move(new_path: string, file_to_move?: TFile)", args: { new_path: { name: "new_path", description: "The new vault relative path of the file, without the file extension. Note: the new path needs to include the folder and the filename, e.g. /Notes/MyNote" } } }, path: { name: "path", description: "Retrieves the file's absolute path on the system.", definition: "tp.file.path(relative: boolean = false)", args: { relative: { name: "relative", description: "If set to true, only retrieves the vault's relative path." } } }, rename: { name: "rename", description: "Renames the file (keeps the same file extension).", definition: "tp.file.rename(new_title: string)", args: { new_title: { name: "new_title", description: "The new file title." } } }, selection: { name: "selection", description: "Retrieves the active file's text selection.", definition: "tp.file.selection()" }, tags: { name: "tags", description: "Retrieves the file's tags (array of string)", definition: "tp.file.tags" }, title: { name: "title", definition: "tp.file.title", description: "Retrieves the file's title." } } }, frontmatter: { name: "frontmatter", description: "This modules exposes all the frontmatter variables of a file as variables." }, obsidian: { name: "obsidian", description: "This module exposes all the functions and classes from the obsidian API." }, system: { name: "system", description: "This module contains system related functions.", functions: { clipboard: { name: "clipboard", description: "Retrieves the clipboard's content", definition: "tp.system.clipboard()" }, prompt: { name: "prompt", description: "Spawns a prompt modal and returns the user's input.", definition: "tp.system.prompt(prompt_text?: string, default_value?: string, throw_on_cancel: boolean = false, multiline?: boolean = false)", args: { prompt_text: { name: "prompt_text", description: "Text placed above the input field" }, default_value: { name: "default_value", description: "A default value for the input field" }, throw_on_cancel: { name: "throw_on_cancel", description: "Throws an error if the prompt is canceled, instead of returning a `null` value" }, multiline: { name: "multiline", description: "If set to true, the input field will be a multiline textarea" } } }, suggester: { name: "suggester", description: "Spawns a suggester prompt and returns the user's chosen item.", definition: 'tp.system.suggester(text_items: string[] \u23AE ((item: T) => string), items: T[], throw_on_cancel: boolean = false, placeholder: string = "", limit?: number = undefined)', args: { text_items: { name: "text_items", description: "Array of strings representing the text that will be displayed for each item in the suggester prompt. This can also be a function that maps an item to its text representation." }, items: { name: "items", description: "Array containing the values of each item in the correct order." }, throw_on_cancel: { name: "throw_on_cancel", description: "Throws an error if the prompt is canceled, instead of returning a `null` value" }, placeholder: { name: "placeholder", description: "Placeholder string of the prompt" }, limit: { name: "limit", description: "Limit the number of items rendered at once (useful to improve performance when displaying large lists)" } } } } }, web: { name: "web", description: "This modules contains every internal function related to the web (making web requests).", functions: { daily_quote: { name: "daily_quote", description: "Retrieves and parses the daily quote from the API https://api.quotable.io", definition: "tp.web.daily_quote()" }, random_picture: { name: "random_picture", description: "Gets a random image from https://unsplash.com/", definition: "tp.web.random_picture(size?: string, query?: string, include_size?: boolean)", args: { size: { name: "size", description: "Image size in the format `x`" }, query: { name: "query", description: "Limits selection to photos matching a search term. Multiple search terms can be passed separated by a comma `,`" }, include_dimensions: { name: "include_size", description: "Optional argument to include the specified size in the image link markdown. Defaults to false" } } } } } }; var documentation_default = { tp }; // src/editor/TpDocumentation.ts @@ -5657,6 +5649,7 @@ var Autocomplete = class extends import_obsidian16.EditorSuggest { }); // src/editor/Editor.ts +var import_language = __toModule(require("@codemirror/language")); var TP_CMD_TOKEN_CLASS = "templater-command"; var TP_INLINE_CLASS = "templater-inline"; var TP_OPENING_TAG_TOKEN_CLASS = "templater-opening-tag"; @@ -5672,7 +5665,10 @@ var Editor2 = class { setup() { return __async(this, null, function* () { yield this.registerCodeMirrorMode(); - this.plugin.registerEditorSuggest(new Autocomplete(app)); + this.plugin.registerEditorSuggest(new Autocomplete()); + if (import_obsidian17.Platform.isDesktopApp && this.plugin.settings.syntax_highlighting) { + this.plugin.registerEditorExtension(import_language.StreamLanguage.define(window.CodeMirror.getMode({}, { name: "templater" }))); + } }); } jump_to_next_cursor_location(file = null, auto_jump = false) { diff --git a/notes/.obsidian/plugins/templater-obsidian/manifest.json b/notes/.obsidian/plugins/templater-obsidian/manifest.json index 610de55..3af8d57 100644 --- a/notes/.obsidian/plugins/templater-obsidian/manifest.json +++ b/notes/.obsidian/plugins/templater-obsidian/manifest.json @@ -1,7 +1,7 @@ { "id": "templater-obsidian", "name": "Templater", - "version": "1.14.2", + "version": "1.15.2", "description": "Create and use templates", "minAppVersion": "0.11.13", "author": "SilentVoid", diff --git a/notes/.obsidian/plugins/various-complements/main.js b/notes/.obsidian/plugins/various-complements/main.js index 6e0309f..4895f65 100644 --- a/notes/.obsidian/plugins/various-complements/main.js +++ b/notes/.obsidian/plugins/various-complements/main.js @@ -1,6230 +1,6414 @@ -'use strict'; +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ -var obsidian = require('obsidian'); - -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ - -function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; -} - -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -const regEmoji = new RegExp(/[\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF]|[\uFE0E-\uFE0F]/, "g"); -function allAlphabets(text) { - return Boolean(text.match(/^[a-zA-Z0-9_-]+$/)); -} -function excludeEmoji(text) { - return text.replace(regEmoji, ""); -} -function lowerIncludes(one, other) { - return one.toLowerCase().includes(other.toLowerCase()); -} -function lowerStartsWith(a, b) { - return a.toLowerCase().startsWith(b.toLowerCase()); -} -function capitalizeFirstLetter(str) { - return str.charAt(0).toUpperCase() + str.slice(1); -} -function startsSmallLetterOnlyFirst(str) { - return Boolean(str.match(/^[A-Z][^A-Z]+$/)); -} -function* splitRaw(text, regexp) { - let previousIndex = 0; - for (let r of text.matchAll(regexp)) { - if (previousIndex !== r.index) { - yield text.slice(previousIndex, r.index); - } - yield text[r.index]; - previousIndex = r.index + 1; - } - if (previousIndex !== text.length) { - yield text.slice(previousIndex, text.length); - } -} - -function pickTokens(content, trimPattern) { - return content.split(trimPattern).filter((x) => x !== ""); -} -const TRIM_CHAR_PATTERN = /[\n\t\[\]$/:?!=()<>"'.,|;*~ `]/g; -class DefaultTokenizer { - tokenize(content, raw) { - return raw - ? Array.from(splitRaw(content, this.getTrimPattern())).filter((x) => x !== " ") - : pickTokens(content, this.getTrimPattern()); - } - recursiveTokenize(content) { - const trimIndexes = Array.from(content.matchAll(this.getTrimPattern())) - .sort((a, b) => a.index - b.index) - .map((x) => x.index); - return [ - { word: content, offset: 0 }, - ...trimIndexes.map((i) => ({ - word: content.slice(i + 1), - offset: i + 1, - })), - ]; - } - getTrimPattern() { - return TRIM_CHAR_PATTERN; - } - shouldIgnoreOnCurrent(str) { - return false; - } -} - -const ARABIC_TRIM_CHAR_PATTERN = /[\n\t\[\]$/:?!=()<>"'.,|;*~ `،؛]/g; -class ArabicTokenizer extends DefaultTokenizer { - getTrimPattern() { - return ARABIC_TRIM_CHAR_PATTERN; - } -} - -// @ts-nocheck -// Because this code is originally javascript code. -// noinspection FunctionTooLongJS,FunctionWithMultipleLoopsJS,EqualityComparisonWithCoercionJS,PointlessBooleanExpressionJS,JSDeclarationsAtScopeStart -// TinySegmenter 0.1 -- Super compact Japanese tokenizer in Javascript -// (c) 2008 Taku Kudo -// TinySegmenter is freely distributable under the terms of a new BSD licence. -// For details, see http://chasen.org/~taku/software/TinySegmenter/LICENCE.txt -function TinySegmenter() { - var patterns = { - "[一二三四五六七八九十百千万億兆]": "M", - "[一-龠々〆ヵヶ]": "H", - "[ぁ-ん]": "I", - "[ァ-ヴーア-ン゙ー]": "K", - "[a-zA-Za-zA-Z]": "A", - "[0-90-9]": "N", - }; - this.chartype_ = []; - for (var i in patterns) { - var regexp = new RegExp(); - regexp.compile(i); - this.chartype_.push([regexp, patterns[i]]); - } - this.BIAS__ = -332; - this.BC1__ = { HH: 6, II: 2461, KH: 406, OH: -1378 }; - this.BC2__ = { - AA: -3267, - AI: 2744, - AN: -878, - HH: -4070, - HM: -1711, - HN: 4012, - HO: 3761, - IA: 1327, - IH: -1184, - II: -1332, - IK: 1721, - IO: 5492, - KI: 3831, - KK: -8741, - MH: -3132, - MK: 3334, - OO: -2920, - }; - this.BC3__ = { - HH: 996, - HI: 626, - HK: -721, - HN: -1307, - HO: -836, - IH: -301, - KK: 2762, - MK: 1079, - MM: 4034, - OA: -1652, - OH: 266, - }; - this.BP1__ = { BB: 295, OB: 304, OO: -125, UB: 352 }; - this.BP2__ = { BO: 60, OO: -1762 }; - this.BQ1__ = { - BHH: 1150, - BHM: 1521, - BII: -1158, - BIM: 886, - BMH: 1208, - BNH: 449, - BOH: -91, - BOO: -2597, - OHI: 451, - OIH: -296, - OKA: 1851, - OKH: -1020, - OKK: 904, - OOO: 2965, - }; - this.BQ2__ = { - BHH: 118, - BHI: -1159, - BHM: 466, - BIH: -919, - BKK: -1720, - BKO: 864, - OHH: -1139, - OHM: -181, - OIH: 153, - UHI: -1146, - }; - this.BQ3__ = { - BHH: -792, - BHI: 2664, - BII: -299, - BKI: 419, - BMH: 937, - BMM: 8335, - BNN: 998, - BOH: 775, - OHH: 2174, - OHM: 439, - OII: 280, - OKH: 1798, - OKI: -793, - OKO: -2242, - OMH: -2402, - OOO: 11699, - }; - this.BQ4__ = { - BHH: -3895, - BIH: 3761, - BII: -4654, - BIK: 1348, - BKK: -1806, - BMI: -3385, - BOO: -12396, - OAH: 926, - OHH: 266, - OHK: -2036, - ONN: -973, - }; - this.BW1__ = { - ",と": 660, - ",同": 727, - B1あ: 1404, - B1同: 542, - "、と": 660, - "、同": 727, - "」と": 1682, - あっ: 1505, - いう: 1743, - いっ: -2055, - いる: 672, - うし: -4817, - うん: 665, - から: 3472, - がら: 600, - こう: -790, - こと: 2083, - こん: -1262, - さら: -4143, - さん: 4573, - した: 2641, - して: 1104, - すで: -3399, - そこ: 1977, - それ: -871, - たち: 1122, - ため: 601, - った: 3463, - つい: -802, - てい: 805, - てき: 1249, - でき: 1127, - です: 3445, - では: 844, - とい: -4915, - とみ: 1922, - どこ: 3887, - ない: 5713, - なっ: 3015, - など: 7379, - なん: -1113, - にし: 2468, - には: 1498, - にも: 1671, - に対: -912, - の一: -501, - の中: 741, - ませ: 2448, - まで: 1711, - まま: 2600, - まる: -2155, - やむ: -1947, - よっ: -2565, - れた: 2369, - れで: -913, - をし: 1860, - を見: 731, - 亡く: -1886, - 京都: 2558, - 取り: -2784, - 大き: -2604, - 大阪: 1497, - 平方: -2314, - 引き: -1336, - 日本: -195, - 本当: -2423, - 毎日: -2113, - 目指: -724, - B1あ: 1404, - B1同: 542, - "」と": 1682, - }; - this.BW2__ = { - "..": -11822, - 11: -669, - "――": -5730, - "−−": -13175, - いう: -1609, - うか: 2490, - かし: -1350, - かも: -602, - から: -7194, - かれ: 4612, - がい: 853, - がら: -3198, - きた: 1941, - くな: -1597, - こと: -8392, - この: -4193, - させ: 4533, - され: 13168, - さん: -3977, - しい: -1819, - しか: -545, - した: 5078, - して: 972, - しな: 939, - その: -3744, - たい: -1253, - たた: -662, - ただ: -3857, - たち: -786, - たと: 1224, - たは: -939, - った: 4589, - って: 1647, - っと: -2094, - てい: 6144, - てき: 3640, - てく: 2551, - ては: -3110, - ても: -3065, - でい: 2666, - でき: -1528, - でし: -3828, - です: -4761, - でも: -4203, - とい: 1890, - とこ: -1746, - とと: -2279, - との: 720, - とみ: 5168, - とも: -3941, - ない: -2488, - なが: -1313, - など: -6509, - なの: 2614, - なん: 3099, - にお: -1615, - にし: 2748, - にな: 2454, - によ: -7236, - に対: -14943, - に従: -4688, - に関: -11388, - のか: 2093, - ので: -7059, - のに: -6041, - のの: -6125, - はい: 1073, - はが: -1033, - はず: -2532, - ばれ: 1813, - まし: -1316, - まで: -6621, - まれ: 5409, - めて: -3153, - もい: 2230, - もの: -10713, - らか: -944, - らし: -1611, - らに: -1897, - りし: 651, - りま: 1620, - れた: 4270, - れて: 849, - れば: 4114, - ろう: 6067, - われ: 7901, - を通: -11877, - んだ: 728, - んな: -4115, - 一人: 602, - 一方: -1375, - 一日: 970, - 一部: -1051, - 上が: -4479, - 会社: -1116, - 出て: 2163, - 分の: -7758, - 同党: 970, - 同日: -913, - 大阪: -2471, - 委員: -1250, - 少な: -1050, - 年度: -8669, - 年間: -1626, - 府県: -2363, - 手権: -1982, - 新聞: -4066, - 日新: -722, - 日本: -7068, - 日米: 3372, - 曜日: -601, - 朝鮮: -2355, - 本人: -2697, - 東京: -1543, - 然と: -1384, - 社会: -1276, - 立て: -990, - 第に: -1612, - 米国: -4268, - "11": -669, - }; - this.BW3__ = { - あた: -2194, - あり: 719, - ある: 3846, - "い.": -1185, - "い。": -1185, - いい: 5308, - いえ: 2079, - いく: 3029, - いた: 2056, - いっ: 1883, - いる: 5600, - いわ: 1527, - うち: 1117, - うと: 4798, - えと: 1454, - "か.": 2857, - "か。": 2857, - かけ: -743, - かっ: -4098, - かに: -669, - から: 6520, - かり: -2670, - "が,": 1816, - "が、": 1816, - がき: -4855, - がけ: -1127, - がっ: -913, - がら: -4977, - がり: -2064, - きた: 1645, - けど: 1374, - こと: 7397, - この: 1542, - ころ: -2757, - さい: -714, - さを: 976, - "し,": 1557, - "し、": 1557, - しい: -3714, - した: 3562, - して: 1449, - しな: 2608, - しま: 1200, - "す.": -1310, - "す。": -1310, - する: 6521, - "ず,": 3426, - "ず、": 3426, - ずに: 841, - そう: 428, - "た.": 8875, - "た。": 8875, - たい: -594, - たの: 812, - たり: -1183, - たる: -853, - "だ.": 4098, - "だ。": 4098, - だっ: 1004, - った: -4748, - って: 300, - てい: 6240, - てお: 855, - ても: 302, - です: 1437, - でに: -1482, - では: 2295, - とう: -1387, - とし: 2266, - との: 541, - とも: -3543, - どう: 4664, - ない: 1796, - なく: -903, - など: 2135, - "に,": -1021, - "に、": -1021, - にし: 1771, - にな: 1906, - には: 2644, - "の,": -724, - "の、": -724, - の子: -1000, - "は,": 1337, - "は、": 1337, - べき: 2181, - まし: 1113, - ます: 6943, - まっ: -1549, - まで: 6154, - まれ: -793, - らし: 1479, - られ: 6820, - るる: 3818, - "れ,": 854, - "れ、": 854, - れた: 1850, - れて: 1375, - れば: -3246, - れる: 1091, - われ: -605, - んだ: 606, - んで: 798, - カ月: 990, - 会議: 860, - 入り: 1232, - 大会: 2217, - 始め: 1681, - 市: 965, - 新聞: -5055, - "日,": 974, - "日、": 974, - 社会: 2024, - カ月: 990, - }; - this.TC1__ = { - AAA: 1093, - HHH: 1029, - HHM: 580, - HII: 998, - HOH: -390, - HOM: -331, - IHI: 1169, - IOH: -142, - IOI: -1015, - IOM: 467, - MMH: 187, - OOI: -1832, - }; - this.TC2__ = { - HHO: 2088, - HII: -1023, - HMM: -1154, - IHI: -1965, - KKH: 703, - OII: -2649, - }; - this.TC3__ = { - AAA: -294, - HHH: 346, - HHI: -341, - HII: -1088, - HIK: 731, - HOH: -1486, - IHH: 128, - IHI: -3041, - IHO: -1935, - IIH: -825, - IIM: -1035, - IOI: -542, - KHH: -1216, - KKA: 491, - KKH: -1217, - KOK: -1009, - MHH: -2694, - MHM: -457, - MHO: 123, - MMH: -471, - NNH: -1689, - NNO: 662, - OHO: -3393, - }; - this.TC4__ = { - HHH: -203, - HHI: 1344, - HHK: 365, - HHM: -122, - HHN: 182, - HHO: 669, - HIH: 804, - HII: 679, - HOH: 446, - IHH: 695, - IHO: -2324, - IIH: 321, - III: 1497, - IIO: 656, - IOO: 54, - KAK: 4845, - KKA: 3386, - KKK: 3065, - MHH: -405, - MHI: 201, - MMH: -241, - MMM: 661, - MOM: 841, - }; - this.TQ1__ = { - BHHH: -227, - BHHI: 316, - BHIH: -132, - BIHH: 60, - BIII: 1595, - BNHH: -744, - BOHH: 225, - BOOO: -908, - OAKK: 482, - OHHH: 281, - OHIH: 249, - OIHI: 200, - OIIH: -68, - }; - this.TQ2__ = { BIHH: -1401, BIII: -1033, BKAK: -543, BOOO: -5591 }; - this.TQ3__ = { - BHHH: 478, - BHHM: -1073, - BHIH: 222, - BHII: -504, - BIIH: -116, - BIII: -105, - BMHI: -863, - BMHM: -464, - BOMH: 620, - OHHH: 346, - OHHI: 1729, - OHII: 997, - OHMH: 481, - OIHH: 623, - OIIH: 1344, - OKAK: 2792, - OKHH: 587, - OKKA: 679, - OOHH: 110, - OOII: -685, - }; - this.TQ4__ = { - BHHH: -721, - BHHM: -3604, - BHII: -966, - BIIH: -607, - BIII: -2181, - OAAA: -2763, - OAKK: 180, - OHHH: -294, - OHHI: 2446, - OHHO: 480, - OHIH: -1573, - OIHH: 1935, - OIHI: -493, - OIIH: 626, - OIII: -4007, - OKAK: -8156, - }; - this.TW1__ = { につい: -4681, 東京都: 2026 }; - this.TW2__ = { - ある程: -2049, - いった: -1256, - ころが: -2434, - しょう: 3873, - その後: -4430, - だって: -1049, - ていた: 1833, - として: -4657, - ともに: -4517, - もので: 1882, - 一気に: -792, - 初めて: -1512, - 同時に: -8097, - 大きな: -1255, - 対して: -2721, - 社会党: -3216, - }; - this.TW3__ = { - いただ: -1734, - してい: 1314, - として: -4314, - につい: -5483, - にとっ: -5989, - に当た: -6247, - "ので,": -727, - "ので、": -727, - のもの: -600, - れから: -3752, - 十二月: -2287, - }; - this.TW4__ = { - "いう.": 8576, - "いう。": 8576, - からな: -2348, - してい: 2958, - "たが,": 1516, - "たが、": 1516, - ている: 1538, - という: 1349, - ました: 5543, - ません: 1097, - ようと: -4258, - よると: 5865, - }; - this.UC1__ = { A: 484, K: 93, M: 645, O: -505 }; - this.UC2__ = { A: 819, H: 1059, I: 409, M: 3987, N: 5775, O: 646 }; - this.UC3__ = { A: -1370, I: 2311 }; - this.UC4__ = { - A: -2643, - H: 1809, - I: -1032, - K: -3450, - M: 3565, - N: 3876, - O: 6646, - }; - this.UC5__ = { H: 313, I: -1238, K: -799, M: 539, O: -831 }; - this.UC6__ = { H: -506, I: -253, K: 87, M: 247, O: -387 }; - this.UP1__ = { O: -214 }; - this.UP2__ = { B: 69, O: 935 }; - this.UP3__ = { B: 189 }; - this.UQ1__ = { - BH: 21, - BI: -12, - BK: -99, - BN: 142, - BO: -56, - OH: -95, - OI: 477, - OK: 410, - OO: -2422, - }; - this.UQ2__ = { BH: 216, BI: 113, OK: 1759 }; - this.UQ3__ = { - BA: -479, - BH: 42, - BI: 1913, - BK: -7198, - BM: 3160, - BN: 6427, - BO: 14761, - OI: -827, - ON: -3212, - }; - this.UW1__ = { - ",": 156, - "、": 156, - "「": -463, - あ: -941, - う: -127, - が: -553, - き: 121, - こ: 505, - で: -201, - と: -547, - ど: -123, - に: -789, - の: -185, - は: -847, - も: -466, - や: -470, - よ: 182, - ら: -292, - り: 208, - れ: 169, - を: -446, - ん: -137, - "・": -135, - 主: -402, - 京: -268, - 区: -912, - 午: 871, - 国: -460, - 大: 561, - 委: 729, - 市: -411, - 日: -141, - 理: 361, - 生: -408, - 県: -386, - 都: -718, - "「": -463, - "・": -135, - }; - this.UW2__ = { - ",": -829, - "、": -829, - 〇: 892, - "「": -645, - "」": 3145, - あ: -538, - い: 505, - う: 134, - お: -502, - か: 1454, - が: -856, - く: -412, - こ: 1141, - さ: 878, - ざ: 540, - し: 1529, - す: -675, - せ: 300, - そ: -1011, - た: 188, - だ: 1837, - つ: -949, - て: -291, - で: -268, - と: -981, - ど: 1273, - な: 1063, - に: -1764, - の: 130, - は: -409, - ひ: -1273, - べ: 1261, - ま: 600, - も: -1263, - や: -402, - よ: 1639, - り: -579, - る: -694, - れ: 571, - を: -2516, - ん: 2095, - ア: -587, - カ: 306, - キ: 568, - ッ: 831, - 三: -758, - 不: -2150, - 世: -302, - 中: -968, - 主: -861, - 事: 492, - 人: -123, - 会: 978, - 保: 362, - 入: 548, - 初: -3025, - 副: -1566, - 北: -3414, - 区: -422, - 大: -1769, - 天: -865, - 太: -483, - 子: -1519, - 学: 760, - 実: 1023, - 小: -2009, - 市: -813, - 年: -1060, - 強: 1067, - 手: -1519, - 揺: -1033, - 政: 1522, - 文: -1355, - 新: -1682, - 日: -1815, - 明: -1462, - 最: -630, - 朝: -1843, - 本: -1650, - 東: -931, - 果: -665, - 次: -2378, - 民: -180, - 気: -1740, - 理: 752, - 発: 529, - 目: -1584, - 相: -242, - 県: -1165, - 立: -763, - 第: 810, - 米: 509, - 自: -1353, - 行: 838, - 西: -744, - 見: -3874, - 調: 1010, - 議: 1198, - 込: 3041, - 開: 1758, - 間: -1257, - "「": -645, - "」": 3145, - ッ: 831, - ア: -587, - カ: 306, - キ: 568, - }; - this.UW3__ = { - ",": 4889, - 1: -800, - "−": -1723, - "、": 4889, - 々: -2311, - 〇: 5827, - "」": 2670, - "〓": -3573, - あ: -2696, - い: 1006, - う: 2342, - え: 1983, - お: -4864, - か: -1163, - が: 3271, - く: 1004, - け: 388, - げ: 401, - こ: -3552, - ご: -3116, - さ: -1058, - し: -395, - す: 584, - せ: 3685, - そ: -5228, - た: 842, - ち: -521, - っ: -1444, - つ: -1081, - て: 6167, - で: 2318, - と: 1691, - ど: -899, - な: -2788, - に: 2745, - の: 4056, - は: 4555, - ひ: -2171, - ふ: -1798, - へ: 1199, - ほ: -5516, - ま: -4384, - み: -120, - め: 1205, - も: 2323, - や: -788, - よ: -202, - ら: 727, - り: 649, - る: 5905, - れ: 2773, - わ: -1207, - を: 6620, - ん: -518, - ア: 551, - グ: 1319, - ス: 874, - ッ: -1350, - ト: 521, - ム: 1109, - ル: 1591, - ロ: 2201, - ン: 278, - "・": -3794, - 一: -1619, - 下: -1759, - 世: -2087, - 両: 3815, - 中: 653, - 主: -758, - 予: -1193, - 二: 974, - 人: 2742, - 今: 792, - 他: 1889, - 以: -1368, - 低: 811, - 何: 4265, - 作: -361, - 保: -2439, - 元: 4858, - 党: 3593, - 全: 1574, - 公: -3030, - 六: 755, - 共: -1880, - 円: 5807, - 再: 3095, - 分: 457, - 初: 2475, - 別: 1129, - 前: 2286, - 副: 4437, - 力: 365, - 動: -949, - 務: -1872, - 化: 1327, - 北: -1038, - 区: 4646, - 千: -2309, - 午: -783, - 協: -1006, - 口: 483, - 右: 1233, - 各: 3588, - 合: -241, - 同: 3906, - 和: -837, - 員: 4513, - 国: 642, - 型: 1389, - 場: 1219, - 外: -241, - 妻: 2016, - 学: -1356, - 安: -423, - 実: -1008, - 家: 1078, - 小: -513, - 少: -3102, - 州: 1155, - 市: 3197, - 平: -1804, - 年: 2416, - 広: -1030, - 府: 1605, - 度: 1452, - 建: -2352, - 当: -3885, - 得: 1905, - 思: -1291, - 性: 1822, - 戸: -488, - 指: -3973, - 政: -2013, - 教: -1479, - 数: 3222, - 文: -1489, - 新: 1764, - 日: 2099, - 旧: 5792, - 昨: -661, - 時: -1248, - 曜: -951, - 最: -937, - 月: 4125, - 期: 360, - 李: 3094, - 村: 364, - 東: -805, - 核: 5156, - 森: 2438, - 業: 484, - 氏: 2613, - 民: -1694, - 決: -1073, - 法: 1868, - 海: -495, - 無: 979, - 物: 461, - 特: -3850, - 生: -273, - 用: 914, - 町: 1215, - 的: 7313, - 直: -1835, - 省: 792, - 県: 6293, - 知: -1528, - 私: 4231, - 税: 401, - 立: -960, - 第: 1201, - 米: 7767, - 系: 3066, - 約: 3663, - 級: 1384, - 統: -4229, - 総: 1163, - 線: 1255, - 者: 6457, - 能: 725, - 自: -2869, - 英: 785, - 見: 1044, - 調: -562, - 財: -733, - 費: 1777, - 車: 1835, - 軍: 1375, - 込: -1504, - 通: -1136, - 選: -681, - 郎: 1026, - 郡: 4404, - 部: 1200, - 金: 2163, - 長: 421, - 開: -1432, - 間: 1302, - 関: -1282, - 雨: 2009, - 電: -1045, - 非: 2066, - 駅: 1620, - "1": -800, - "」": 2670, - "・": -3794, - ッ: -1350, - ア: 551, - グ: 1319, - ス: 874, - ト: 521, - ム: 1109, - ル: 1591, - ロ: 2201, - ン: 278, - }; - this.UW4__ = { - ",": 3930, - ".": 3508, - "―": -4841, - "、": 3930, - "。": 3508, - 〇: 4999, - "「": 1895, - "」": 3798, - "〓": -5156, - あ: 4752, - い: -3435, - う: -640, - え: -2514, - お: 2405, - か: 530, - が: 6006, - き: -4482, - ぎ: -3821, - く: -3788, - け: -4376, - げ: -4734, - こ: 2255, - ご: 1979, - さ: 2864, - し: -843, - じ: -2506, - す: -731, - ず: 1251, - せ: 181, - そ: 4091, - た: 5034, - だ: 5408, - ち: -3654, - っ: -5882, - つ: -1659, - て: 3994, - で: 7410, - と: 4547, - な: 5433, - に: 6499, - ぬ: 1853, - ね: 1413, - の: 7396, - は: 8578, - ば: 1940, - ひ: 4249, - び: -4134, - ふ: 1345, - へ: 6665, - べ: -744, - ほ: 1464, - ま: 1051, - み: -2082, - む: -882, - め: -5046, - も: 4169, - ゃ: -2666, - や: 2795, - ょ: -1544, - よ: 3351, - ら: -2922, - り: -9726, - る: -14896, - れ: -2613, - ろ: -4570, - わ: -1783, - を: 13150, - ん: -2352, - カ: 2145, - コ: 1789, - セ: 1287, - ッ: -724, - ト: -403, - メ: -1635, - ラ: -881, - リ: -541, - ル: -856, - ン: -3637, - "・": -4371, - ー: -11870, - 一: -2069, - 中: 2210, - 予: 782, - 事: -190, - 井: -1768, - 人: 1036, - 以: 544, - 会: 950, - 体: -1286, - 作: 530, - 側: 4292, - 先: 601, - 党: -2006, - 共: -1212, - 内: 584, - 円: 788, - 初: 1347, - 前: 1623, - 副: 3879, - 力: -302, - 動: -740, - 務: -2715, - 化: 776, - 区: 4517, - 協: 1013, - 参: 1555, - 合: -1834, - 和: -681, - 員: -910, - 器: -851, - 回: 1500, - 国: -619, - 園: -1200, - 地: 866, - 場: -1410, - 塁: -2094, - 士: -1413, - 多: 1067, - 大: 571, - 子: -4802, - 学: -1397, - 定: -1057, - 寺: -809, - 小: 1910, - 屋: -1328, - 山: -1500, - 島: -2056, - 川: -2667, - 市: 2771, - 年: 374, - 庁: -4556, - 後: 456, - 性: 553, - 感: 916, - 所: -1566, - 支: 856, - 改: 787, - 政: 2182, - 教: 704, - 文: 522, - 方: -856, - 日: 1798, - 時: 1829, - 最: 845, - 月: -9066, - 木: -485, - 来: -442, - 校: -360, - 業: -1043, - 氏: 5388, - 民: -2716, - 気: -910, - 沢: -939, - 済: -543, - 物: -735, - 率: 672, - 球: -1267, - 生: -1286, - 産: -1101, - 田: -2900, - 町: 1826, - 的: 2586, - 目: 922, - 省: -3485, - 県: 2997, - 空: -867, - 立: -2112, - 第: 788, - 米: 2937, - 系: 786, - 約: 2171, - 経: 1146, - 統: -1169, - 総: 940, - 線: -994, - 署: 749, - 者: 2145, - 能: -730, - 般: -852, - 行: -792, - 規: 792, - 警: -1184, - 議: -244, - 谷: -1000, - 賞: 730, - 車: -1481, - 軍: 1158, - 輪: -1433, - 込: -3370, - 近: 929, - 道: -1291, - 選: 2596, - 郎: -4866, - 都: 1192, - 野: -1100, - 銀: -2213, - 長: 357, - 間: -2344, - 院: -2297, - 際: -2604, - 電: -878, - 領: -1659, - 題: -792, - 館: -1984, - 首: 1749, - 高: 2120, - "「": 1895, - "」": 3798, - "・": -4371, - ッ: -724, - ー: -11870, - カ: 2145, - コ: 1789, - セ: 1287, - ト: -403, - メ: -1635, - ラ: -881, - リ: -541, - ル: -856, - ン: -3637, - }; - this.UW5__ = { - ",": 465, - ".": -299, - 1: -514, - E2: -32768, - "]": -2762, - "、": 465, - "。": -299, - "「": 363, - あ: 1655, - い: 331, - う: -503, - え: 1199, - お: 527, - か: 647, - が: -421, - き: 1624, - ぎ: 1971, - く: 312, - げ: -983, - さ: -1537, - し: -1371, - す: -852, - だ: -1186, - ち: 1093, - っ: 52, - つ: 921, - て: -18, - で: -850, - と: -127, - ど: 1682, - な: -787, - に: -1224, - の: -635, - は: -578, - べ: 1001, - み: 502, - め: 865, - ゃ: 3350, - ょ: 854, - り: -208, - る: 429, - れ: 504, - わ: 419, - を: -1264, - ん: 327, - イ: 241, - ル: 451, - ン: -343, - 中: -871, - 京: 722, - 会: -1153, - 党: -654, - 務: 3519, - 区: -901, - 告: 848, - 員: 2104, - 大: -1296, - 学: -548, - 定: 1785, - 嵐: -1304, - 市: -2991, - 席: 921, - 年: 1763, - 思: 872, - 所: -814, - 挙: 1618, - 新: -1682, - 日: 218, - 月: -4353, - 査: 932, - 格: 1356, - 機: -1508, - 氏: -1347, - 田: 240, - 町: -3912, - 的: -3149, - 相: 1319, - 省: -1052, - 県: -4003, - 研: -997, - 社: -278, - 空: -813, - 統: 1955, - 者: -2233, - 表: 663, - 語: -1073, - 議: 1219, - 選: -1018, - 郎: -368, - 長: 786, - 間: 1191, - 題: 2368, - 館: -689, - "1": -514, - E2: -32768, - "「": 363, - イ: 241, - ル: 451, - ン: -343, - }; - this.UW6__ = { - ",": 227, - ".": 808, - 1: -270, - E1: 306, - "、": 227, - "。": 808, - あ: -307, - う: 189, - か: 241, - が: -73, - く: -121, - こ: -200, - じ: 1782, - す: 383, - た: -428, - っ: 573, - て: -1014, - で: 101, - と: -105, - な: -253, - に: -149, - の: -417, - は: -236, - も: -206, - り: 187, - る: -135, - を: 195, - ル: -673, - ン: -496, - 一: -277, - 中: 201, - 件: -800, - 会: 624, - 前: 302, - 区: 1792, - 員: -1212, - 委: 798, - 学: -960, - 市: 887, - 広: -695, - 後: 535, - 業: -697, - 相: 753, - 社: -507, - 福: 974, - 空: -822, - 者: 1811, - 連: 463, - 郎: 1082, - "1": -270, - E1: 306, - ル: -673, - ン: -496, - }; - return this; -} -TinySegmenter.prototype.ctype_ = function (str) { - for (var i in this.chartype_) { - if (str.match(this.chartype_[i][0])) { - return this.chartype_[i][1]; - } - } - return "O"; +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; -TinySegmenter.prototype.ts_ = function (v) { - if (v) { - return v; - } - return 0; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); }; -TinySegmenter.prototype.segment = function (input) { - if (input == null || input == undefined || input == "") { - return []; - } - var result = []; - var seg = ["B3", "B2", "B1"]; - var ctype = ["O", "O", "O"]; - var o = input.split(""); - for (i = 0; i < o.length; ++i) { - seg.push(o[i]); - ctype.push(this.ctype_(o[i])); - } - seg.push("E1"); - seg.push("E2"); - seg.push("E3"); - ctype.push("O"); - ctype.push("O"); - ctype.push("O"); - var word = seg[3]; - var p1 = "U"; - var p2 = "U"; - var p3 = "U"; - for (var i = 4; i < seg.length - 3; ++i) { - var score = this.BIAS__; - var w1 = seg[i - 3]; - var w2 = seg[i - 2]; - var w3 = seg[i - 1]; - var w4 = seg[i]; - var w5 = seg[i + 1]; - var w6 = seg[i + 2]; - var c1 = ctype[i - 3]; - var c2 = ctype[i - 2]; - var c3 = ctype[i - 1]; - var c4 = ctype[i]; - var c5 = ctype[i + 1]; - var c6 = ctype[i + 2]; - score += this.ts_(this.UP1__[p1]); - score += this.ts_(this.UP2__[p2]); - score += this.ts_(this.UP3__[p3]); - score += this.ts_(this.BP1__[p1 + p2]); - score += this.ts_(this.BP2__[p2 + p3]); - score += this.ts_(this.UW1__[w1]); - score += this.ts_(this.UW2__[w2]); - score += this.ts_(this.UW3__[w3]); - score += this.ts_(this.UW4__[w4]); - score += this.ts_(this.UW5__[w5]); - score += this.ts_(this.UW6__[w6]); - score += this.ts_(this.BW1__[w2 + w3]); - score += this.ts_(this.BW2__[w3 + w4]); - score += this.ts_(this.BW3__[w4 + w5]); - score += this.ts_(this.TW1__[w1 + w2 + w3]); - score += this.ts_(this.TW2__[w2 + w3 + w4]); - score += this.ts_(this.TW3__[w3 + w4 + w5]); - score += this.ts_(this.TW4__[w4 + w5 + w6]); - score += this.ts_(this.UC1__[c1]); - score += this.ts_(this.UC2__[c2]); - score += this.ts_(this.UC3__[c3]); - score += this.ts_(this.UC4__[c4]); - score += this.ts_(this.UC5__[c5]); - score += this.ts_(this.UC6__[c6]); - score += this.ts_(this.BC1__[c2 + c3]); - score += this.ts_(this.BC2__[c3 + c4]); - score += this.ts_(this.BC3__[c4 + c5]); - score += this.ts_(this.TC1__[c1 + c2 + c3]); - score += this.ts_(this.TC2__[c2 + c3 + c4]); - score += this.ts_(this.TC3__[c3 + c4 + c5]); - score += this.ts_(this.TC4__[c4 + c5 + c6]); - // score += this.ts_(this.TC5__[c4 + c5 + c6]); - score += this.ts_(this.UQ1__[p1 + c1]); - score += this.ts_(this.UQ2__[p2 + c2]); - score += this.ts_(this.UQ3__[p3 + c3]); - score += this.ts_(this.BQ1__[p2 + c2 + c3]); - score += this.ts_(this.BQ2__[p2 + c3 + c4]); - score += this.ts_(this.BQ3__[p3 + c2 + c3]); - score += this.ts_(this.BQ4__[p3 + c3 + c4]); - score += this.ts_(this.TQ1__[p2 + c1 + c2 + c3]); - score += this.ts_(this.TQ2__[p2 + c2 + c3 + c4]); - score += this.ts_(this.TQ3__[p3 + c1 + c2 + c3]); - score += this.ts_(this.TQ4__[p3 + c2 + c3 + c4]); - var p = "O"; - if (score > 0) { - result.push(word); - word = ""; - p = "B"; - } - p1 = p2; - p2 = p3; - p3 = p; - word += seg[i]; - } - result.push(word); - return result; -}; - -// @ts-ignore -const segmenter = new TinySegmenter(); -function pickTokensAsJapanese(content, trimPattern) { - return content - .split(trimPattern) - .filter((x) => x !== "") - .flatMap((x) => segmenter.segment(x)); -} -/** - * Japanese needs original logic. - */ -class JapaneseTokenizer { - tokenize(content, raw) { - return pickTokensAsJapanese(content, raw ? / /g : this.getTrimPattern()); - } - recursiveTokenize(content) { - const tokens = segmenter - .segment(content) - // https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/issues/77 - .flatMap((x) => x === " " ? x : x.split(" ").map((t) => (t === "" ? " " : t))); - const ret = []; - for (let i = 0; i < tokens.length; i++) { - if (i === 0 || - tokens[i].length !== 1 || - !Boolean(tokens[i].match(this.getTrimPattern()))) { - ret.push({ - word: tokens.slice(i).join(""), - offset: tokens.slice(0, i).join("").length, - }); - } - } - return ret; - } - getTrimPattern() { - return TRIM_CHAR_PATTERN; - } - shouldIgnoreOnCurrent(str) { - return Boolean(str.match(/^[ぁ-んa-zA-Z。、ー ]*$/)); - } -} - -const ENGLISH_PATTERN = /[a-zA-Z0-9_\-\\]/; -class EnglishOnlyTokenizer extends DefaultTokenizer { - tokenize(content, raw) { - const tokenized = Array.from(this._tokenize(content)).filter((x) => x.word.match(ENGLISH_PATTERN)); - return raw - ? tokenized.map((x) => x.word) - : tokenized - .map((x) => x.word) - .filter((x) => !x.match(this.getTrimPattern())); - } - recursiveTokenize(content) { - const offsets = Array.from(this._tokenize(content)) - .filter((x) => !x.word.match(this.getTrimPattern())) - .map((x) => x.offset); - return [ - ...offsets.map((i) => ({ - word: content.slice(i), - offset: i, - })), - ]; - } - *_tokenize(content) { - let startIndex = 0; - let previousType = "none"; - for (let i = 0; i < content.length; i++) { - if (content[i].match(super.getTrimPattern())) { - yield { word: content.slice(startIndex, i), offset: startIndex }; - previousType = "trim"; - startIndex = i; - continue; - } - if (content[i].match(ENGLISH_PATTERN)) { - if (previousType === "english" || previousType === "none") { - previousType = "english"; - continue; - } - yield { word: content.slice(startIndex, i), offset: startIndex }; - previousType = "english"; - startIndex = i; - continue; - } - if (previousType === "others" || previousType === "none") { - previousType = "others"; - continue; - } - yield { word: content.slice(startIndex, i), offset: startIndex }; - previousType = "others"; - startIndex = i; - } - yield { - word: content.slice(startIndex, content.length), - offset: startIndex, - }; - } -} - -var main = {}; - -var prettifyPinyin = {}; - -// Quick guide for typing Chinese pinyin on Mac OS X - -// Tone 1 (flat) mā – Option + a, then hit a vowel key -// Tone 2 (rising) má – Option + e, then hit a vowel key -// Tone 3 (falling-rising) mǎ – Option + v, then hit a vowel key -// Tone 4 (falling) mà – Option + `, then hit a vowel key - -// ǚ – Option + V, then hit V (submitted by QA) -// ǜ – Option + `, then hit V (submitted by QA) - - -var replacements = { - 'a': ['ā', 'á', 'ǎ', 'à'], - 'e': ['ē', 'é', 'ě', 'è'], - 'u': ['ū', 'ú', 'ǔ', 'ù'], - 'i': ['ī', 'í', 'ǐ', 'ì'], - 'o': ['ō', 'ó', 'ǒ', 'ò'], - 'ü': ['ǖ', 'ǘ', 'ǚ', 'ǜ'] -}; - -var medials = ['i', 'u', 'ü']; - -var prettify$1 = function(str){ - str = str.replace('v', 'ü'); - var syllables = str.split(' '); - - for (var i = 0; i < syllables.length; i++){ - var syllable = syllables[i]; - var tone = parseInt(syllable[syllable.length-1]); - - if (tone <= 0 || tone > 5) { - console.error('invalid tone number:', tone, 'in', syllable); - } else if (tone === 5){ - syllables[i] = syllable.slice(0, syllable.length - 1); - } else { - for (var j = 0; j < syllable.length; j++){ - var currentLetter = syllable[j]; - var nextLetter = syllable[j + 1]; - - // found a vowel - if (replacements[currentLetter]){ - var replaced; - var letterToReplace; - - // two consecutive vowels - if (replacements[nextLetter] && medials.indexOf(currentLetter) >= 0){ - letterToReplace = nextLetter; - } else { - letterToReplace = currentLetter; - } - - replaced = syllable.replace(letterToReplace, replacements[letterToReplace][tone - 1]); - syllables[i] = replaced.slice(0, replaced.length - 1); - break; - } - } - } - +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } - return syllables.join(' '); + return to; }; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -prettifyPinyin.prettify = prettify$1; - -class Trie$1 { - constructor() { - this.content = {}; - } - - getKeyObject(key, create = false) { - key = key.toString(); - - let chars = key === '' ? [key] : Array.from(key); - let obj = this.content; - - for (let char of chars) { - if (obj[char] == null) { - if (create) obj[char] = {}; - else return {} +// node_modules/prettify-pinyin/index.js +var require_prettify_pinyin = __commonJS({ + "node_modules/prettify-pinyin/index.js"(exports, module2) { + var replacements = { + "a": ["\u0101", "\xE1", "\u01CE", "\xE0"], + "e": ["\u0113", "\xE9", "\u011B", "\xE8"], + "u": ["\u016B", "\xFA", "\u01D4", "\xF9"], + "i": ["\u012B", "\xED", "\u01D0", "\xEC"], + "o": ["\u014D", "\xF3", "\u01D2", "\xF2"], + "\xFC": ["\u01D6", "\u01D8", "\u01DA", "\u01DC"] + }; + var medials = ["i", "u", "\xFC"]; + var prettify = function(str) { + str = str.replace("v", "\xFC"); + var syllables = str.split(" "); + for (var i = 0; i < syllables.length; i++) { + var syllable = syllables[i]; + var tone = parseInt(syllable[syllable.length - 1]); + if (tone <= 0 || tone > 5) { + console.error("invalid tone number:", tone, "in", syllable); + } else if (tone === 5) { + syllables[i] = syllable.slice(0, syllable.length - 1); + } else { + for (var j = 0; j < syllable.length; j++) { + var currentLetter = syllable[j]; + var nextLetter = syllable[j + 1]; + if (replacements[currentLetter]) { + var replaced; + var letterToReplace; + if (replacements[nextLetter] && medials.indexOf(currentLetter) >= 0) { + letterToReplace = nextLetter; + } else { + letterToReplace = currentLetter; + } + replaced = syllable.replace(letterToReplace, replacements[letterToReplace][tone - 1]); + syllables[i] = replaced.slice(0, replaced.length - 1); + break; } - - obj = obj[char]; + } } + } + return syllables.join(" "); + }; + module2.exports.prettify = prettify; + } +}); - return obj - } - - get(key) { +// node_modules/chinese-tokenizer/src/trie.js +var require_trie = __commonJS({ + "node_modules/chinese-tokenizer/src/trie.js"(exports, module2) { + var Trie = class { + constructor() { + this.content = {}; + } + getKeyObject(key, create = false) { + key = key.toString(); + let chars = key === "" ? [key] : Array.from(key); + let obj = this.content; + for (let char of chars) { + if (obj[char] == null) { + if (create) + obj[char] = {}; + else + return {}; + } + obj = obj[char]; + } + return obj; + } + get(key) { let obj = this.getKeyObject(key); - - return obj.values || [] - } - - getPrefix(key) { - let inner = (key, obj = null) => { - if (obj == null) obj = this.getKeyObject(key); - let result = obj.values ? [...obj.values] : []; - - for (let char in obj) { - if (char === 'values' || obj[char] == null) continue - - result.push(...inner(key + char, obj[char])); - } - - return result + return obj.values || []; + } + getPrefix(key) { + let inner = (key2, obj = null) => { + if (obj == null) + obj = this.getKeyObject(key2); + let result = obj.values ? [...obj.values] : []; + for (let char in obj) { + if (char === "values" || obj[char] == null) + continue; + result.push(...inner(key2 + char, obj[char])); + } + return result; }; - - return inner(key) - } - - push(key, value) { + return inner(key); + } + push(key, value) { let obj = this.getKeyObject(key, true); + if (obj.values == null) + obj.values = []; + if (!obj.values.includes(value)) + obj.values.push(value); + return this; + } + }; + module2.exports = Trie; + } +}); - if (obj.values == null) obj.values = []; - if (!obj.values.includes(value)) obj.values.push(value); - - return this +// node_modules/chinese-tokenizer/src/cedict.js +var require_cedict = __commonJS({ + "node_modules/chinese-tokenizer/src/cedict.js"(exports, module2) { + var { prettify } = require_prettify_pinyin(); + var Trie = require_trie(); + function parseLine(line) { + let match = line.match(/^(\S+)\s(\S+)\s\[([^\]]+)\]\s\/(.+)\//); + if (match == null) + return; + let [, traditional, simplified, pinyin, english] = match; + pinyin = pinyin.replace(/u:/g, "\xFC"); + let pinyinPretty = prettify(pinyin); + return { traditional, simplified, pinyin, pinyinPretty, english }; } -} - -var trie = Trie$1; - -const {prettify} = prettifyPinyin; -const Trie = trie; - -function parseLine(line) { - let match = line.match(/^(\S+)\s(\S+)\s\[([^\]]+)\]\s\/(.+)\//); - if (match == null) return - - let [, traditional, simplified, pinyin, english] = match; - - pinyin = pinyin.replace(/u:/g, 'ü'); - let pinyinPretty = prettify(pinyin); - - return {traditional, simplified, pinyin, pinyinPretty, english} -} - -class Cedict$1 { - load(contents) { + var Cedict = class { + load(contents) { this.simplifiedTrie = new Trie(); this.traditionalTrie = new Trie(); - - let lines = contents.split('\n'); - + let lines = contents.split("\n"); for (let line of lines) { - if (line.trim() === '' || line[0] === '#') continue - - let entry = parseLine(line); - if (entry == null) continue - - this.simplifiedTrie.push(entry.simplified, entry); - this.traditionalTrie.push(entry.traditional, entry); + if (line.trim() === "" || line[0] === "#") + continue; + let entry = parseLine(line); + if (entry == null) + continue; + this.simplifiedTrie.push(entry.simplified, entry); + this.traditionalTrie.push(entry.traditional, entry); } - } - - get(word, traditional = false) { - return traditional ? this.traditionalTrie.get(word) : this.simplifiedTrie.get(word) - } - - getPrefix(word, traditional = false) { - return traditional ? this.traditionalTrie.getPrefix(word) : this.simplifiedTrie.getPrefix(word) - } -} - -var cedict = Cedict$1; - -const Cedict = cedict; - -const chinesePunctuation = [ - "·", - "×", - "—", - "‘", - "’", - "“", - "”", - "…", - "、", - "。", - "《", - "》", - "『", - "』", - "【", - "】", - "!", - "(", - ")", - ",", - ":", - ";", - "?", -]; - -main.load = function (contents) { - let dictionary = new Cedict(); - dictionary.load(contents); - - return function tokenize(text) { - text = Array.from(text.replace(/\r/g, "")); - - let result = []; - let i = 0; - let [offset, line, column] = [0, 1, 1]; - let [simplifiedPreference, traditionalPreference] = [0, 0]; - - let pushToken = (word) => { - let simplifiedEntries = dictionary.get(word, false); - let traditionalEntries = dictionary.get(word, true); - - let entries = - simplifiedEntries.length === 0 - ? traditionalEntries - : traditionalEntries.length === 0 - ? simplifiedEntries - : simplifiedPreference < traditionalPreference - ? traditionalEntries - : simplifiedPreference > traditionalPreference - ? simplifiedEntries - : traditionalEntries; - - if (traditionalEntries.length === 0 && simplifiedEntries.length > 0) { - simplifiedPreference++; - } else if ( - simplifiedEntries.length === 0 && - traditionalEntries.length > 0 - ) { - traditionalPreference++; } - - result.push({ - text: word, - traditional: entries[0] ? entries[0].traditional : word, - simplified: entries[0] ? entries[0].simplified : word, - - position: { - offset, - line, - column, - }, - - matches: entries.map(({ pinyin, pinyinPretty, english }) => ({ - pinyin, - pinyinPretty, - english, - })), - }); - - let wordArr = Array.from(word); - let lastLineBreakIndex = word.lastIndexOf("\n"); - - i += wordArr.length; - offset += word.length; - line += wordArr.filter((x) => x === "\n").length; - column = - lastLineBreakIndex >= 0 - ? word.length - lastLineBreakIndex - : column + word.length; + get(word, traditional = false) { + return traditional ? this.traditionalTrie.get(word) : this.simplifiedTrie.get(word); + } + getPrefix(word, traditional = false) { + return traditional ? this.traditionalTrie.getPrefix(word) : this.simplifiedTrie.getPrefix(word); + } }; + module2.exports = Cedict; + } +}); - while (i < text.length) { - // Try to match two or more characters - - if (i !== text.length - 1) { - let getTwo = text.slice(i, i + 2).join(""); - let simplifiedEntries = dictionary.getPrefix(getTwo, false); - let traditionalEntries = dictionary.getPrefix(getTwo, true); - let foundWord = null; - let foundEntries = null; - - for (let entries of [traditionalEntries, simplifiedEntries]) { - for (let entry of entries) { - let matchText = - entries === traditionalEntries - ? entry.traditional - : entry.simplified; - let word = text.slice(i, i + Array.from(matchText).length).join(""); - - if ( - matchText === word && - (foundWord == null || - Array.from(word).length > Array.from(foundWord).length) - ) { - foundWord = word; - foundEntries = entries; - } - } - } - - if (foundWord != null) { - pushToken(foundWord); - - if (foundEntries === simplifiedEntries) { +// node_modules/chinese-tokenizer/src/main.js +var require_main = __commonJS({ + "node_modules/chinese-tokenizer/src/main.js"(exports) { + var Cedict = require_cedict(); + var chinesePunctuation = [ + "\xB7", + "\xD7", + "\u2014", + "\u2018", + "\u2019", + "\u201C", + "\u201D", + "\u2026", + "\u3001", + "\u3002", + "\u300A", + "\u300B", + "\u300E", + "\u300F", + "\u3010", + "\u3011", + "\uFF01", + "\uFF08", + "\uFF09", + "\uFF0C", + "\uFF1A", + "\uFF1B", + "\uFF1F" + ]; + exports.load = function(contents) { + let dictionary = new Cedict(); + dictionary.load(contents); + return function tokenize(text2) { + text2 = Array.from(text2.replace(/\r/g, "")); + let result = []; + let i = 0; + let [offset, line, column] = [0, 1, 1]; + let [simplifiedPreference, traditionalPreference] = [0, 0]; + let pushToken = (word) => { + let simplifiedEntries = dictionary.get(word, false); + let traditionalEntries = dictionary.get(word, true); + let entries = simplifiedEntries.length === 0 ? traditionalEntries : traditionalEntries.length === 0 ? simplifiedEntries : simplifiedPreference < traditionalPreference ? traditionalEntries : simplifiedPreference > traditionalPreference ? simplifiedEntries : traditionalEntries; + if (traditionalEntries.length === 0 && simplifiedEntries.length > 0) { simplifiedPreference++; - } else if (foundEntries === traditionalEntries) { + } else if (simplifiedEntries.length === 0 && traditionalEntries.length > 0) { traditionalPreference++; } + result.push({ + text: word, + traditional: entries[0] ? entries[0].traditional : word, + simplified: entries[0] ? entries[0].simplified : word, + position: { + offset, + line, + column + }, + matches: entries.map(({ pinyin, pinyinPretty, english }) => ({ + pinyin, + pinyinPretty, + english + })) + }); + let wordArr = Array.from(word); + let lastLineBreakIndex = word.lastIndexOf("\n"); + i += wordArr.length; + offset += word.length; + line += wordArr.filter((x) => x === "\n").length; + column = lastLineBreakIndex >= 0 ? word.length - lastLineBreakIndex : column + word.length; + }; + while (i < text2.length) { + if (i !== text2.length - 1) { + let getTwo = text2.slice(i, i + 2).join(""); + let simplifiedEntries = dictionary.getPrefix(getTwo, false); + let traditionalEntries = dictionary.getPrefix(getTwo, true); + let foundWord = null; + let foundEntries = null; + for (let entries of [traditionalEntries, simplifiedEntries]) { + for (let entry of entries) { + let matchText = entries === traditionalEntries ? entry.traditional : entry.simplified; + let word2 = text2.slice(i, i + Array.from(matchText).length).join(""); + if (matchText === word2 && (foundWord == null || Array.from(word2).length > Array.from(foundWord).length)) { + foundWord = word2; + foundEntries = entries; + } + } + } + if (foundWord != null) { + pushToken(foundWord); + if (foundEntries === simplifiedEntries) { + simplifiedPreference++; + } else if (foundEntries === traditionalEntries) { + traditionalPreference++; + } + continue; + } + } + let character = text2[i]; + let isChinese = (character2) => chinesePunctuation.includes(character2) || dictionary.get(character2, false).length > 0 || dictionary.get(character2, true).length > 0; + if (isChinese(character) || character.match(/\s/) != null) { + pushToken(character); + continue; + } + let end = i + 1; + for (; end < text2.length; end++) { + if (text2[end].match(/\s/) != null || isChinese(text2[end])) + break; + } + let word = text2.slice(i, end).join(""); + pushToken(word); + } + return result; + }; + }; + } +}); - continue; +// node_modules/ts-deepmerge/dist/index.js +var require_dist = __commonJS({ + "node_modules/ts-deepmerge/dist/index.js"(exports) { + "use strict"; + var __assign = exports && exports.__assign || function() { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) + return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) + ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) + m.call(i); + } finally { + if (e) + throw e.error; } } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from, pack) { + if (pack || arguments.length === 2) + for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) + ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + var isObject = function(obj) { + if (typeof obj === "object" && obj !== null) { + if (typeof Object.getPrototypeOf === "function") { + var prototype = Object.getPrototypeOf(obj); + return prototype === Object.prototype || prototype === null; + } + return Object.prototype.toString.call(obj) === "[object Object]"; + } + return false; + }; + var merge2 = function() { + var objects = []; + for (var _i = 0; _i < arguments.length; _i++) { + objects[_i] = arguments[_i]; + } + return objects.reduce(function(result, current) { + if (Array.isArray(current)) { + throw new TypeError("Arguments provided to ts-deepmerge must be objects, not arrays."); + } + Object.keys(current).forEach(function(key) { + if (["__proto__", "constructor", "prototype"].includes(key)) { + return; + } + if (Array.isArray(result[key]) && Array.isArray(current[key])) { + result[key] = merge2.options.mergeArrays ? Array.from(new Set(result[key].concat(current[key]))) : current[key]; + } else if (isObject(result[key]) && isObject(current[key])) { + result[key] = merge2(result[key], current[key]); + } else { + result[key] = current[key]; + } + }); + return result; + }, {}); + }; + var defaultOptions = { + mergeArrays: true + }; + merge2.options = defaultOptions; + merge2.withOptions = function(options) { + var objects = []; + for (var _i = 1; _i < arguments.length; _i++) { + objects[_i - 1] = arguments[_i]; + } + merge2.options = __assign({ mergeArrays: true }, options); + var result = merge2.apply(void 0, __spreadArray([], __read(objects), false)); + merge2.options = defaultOptions; + return result; + }; + exports.default = merge2; + } +}); - // If it fails, match one character +// src/main.ts +var main_exports = {}; +__export(main_exports, { + default: () => VariousComponents +}); +module.exports = __toCommonJS(main_exports); +var import_obsidian6 = require("obsidian"); - let character = text[i]; - let isChinese = (character) => - chinesePunctuation.includes(character) || - dictionary.get(character, false).length > 0 || - dictionary.get(character, true).length > 0; +// src/ui/AutoCompleteSuggest.ts +var import_obsidian3 = require("obsidian"); - if (isChinese(character) || character.match(/\s/) != null) { - pushToken(character); +// src/util/strings.ts +var regEmoji = new RegExp( + /[\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF]|[\uFE0E-\uFE0F]/, + "g" +); +function allAlphabets(text2) { + return Boolean(text2.match(/^[a-zA-Z0-9_-]+$/)); +} +function excludeEmoji(text2) { + return text2.replace(regEmoji, ""); +} +function encodeSpace(text2) { + return text2.replace(/ /g, "%20"); +} +function lowerIncludes(one, other) { + return one.toLowerCase().includes(other.toLowerCase()); +} +function lowerStartsWith(a, b) { + return a.toLowerCase().startsWith(b.toLowerCase()); +} +function capitalizeFirstLetter(str) { + return str.charAt(0).toUpperCase() + str.slice(1); +} +function startsSmallLetterOnlyFirst(str) { + return Boolean(str.match(/^[A-Z][^A-Z]+$/)); +} +function* splitRaw(text2, regexp) { + let previousIndex = 0; + for (let r of text2.matchAll(regexp)) { + if (previousIndex !== r.index) { + yield text2.slice(previousIndex, r.index); + } + yield text2[r.index]; + previousIndex = r.index + 1; + } + if (previousIndex !== text2.length) { + yield text2.slice(previousIndex, text2.length); + } +} + +// src/tokenizer/tokenizers/DefaultTokenizer.ts +function pickTokens(content, trimPattern) { + return content.split(trimPattern).filter((x) => x !== ""); +} +var TRIM_CHAR_PATTERN = /[\n\t\[\]$/:?!=()<>"'.,|;*~ `]/g; +var DefaultTokenizer = class { + tokenize(content, raw) { + return raw ? Array.from(splitRaw(content, this.getTrimPattern())).filter( + (x) => x !== " " + ) : pickTokens(content, this.getTrimPattern()); + } + recursiveTokenize(content) { + const trimIndexes = Array.from(content.matchAll(this.getTrimPattern())).sort((a, b) => a.index - b.index).map((x) => x.index); + return [ + { word: content, offset: 0 }, + ...trimIndexes.map((i) => ({ + word: content.slice(i + 1), + offset: i + 1 + })) + ]; + } + getTrimPattern() { + return TRIM_CHAR_PATTERN; + } + shouldIgnoreOnCurrent(str) { + return false; + } +}; + +// src/tokenizer/tokenizers/ArabicTokenizer.ts +var ARABIC_TRIM_CHAR_PATTERN = /[\n\t\[\]$/:?!=()<>"'.,|;*~ `،؛]/g; +var ArabicTokenizer = class extends DefaultTokenizer { + getTrimPattern() { + return ARABIC_TRIM_CHAR_PATTERN; + } +}; + +// src/external/tiny-segmenter.ts +function TinySegmenter() { + var patterns = { + "[\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u5341\u767E\u5343\u4E07\u5104\u5146]": "M", + "[\u4E00-\u9FA0\u3005\u3006\u30F5\u30F6]": "H", + "[\u3041-\u3093]": "I", + "[\u30A1-\u30F4\u30FC\uFF71-\uFF9D\uFF9E\uFF70]": "K", + "[a-zA-Z\uFF41-\uFF5A\uFF21-\uFF3A]": "A", + "[0-9\uFF10-\uFF19]": "N" + }; + this.chartype_ = []; + for (var i in patterns) { + var regexp = new RegExp(); + regexp.compile(i); + this.chartype_.push([regexp, patterns[i]]); + } + this.BIAS__ = -332; + this.BC1__ = { HH: 6, II: 2461, KH: 406, OH: -1378 }; + this.BC2__ = { + AA: -3267, + AI: 2744, + AN: -878, + HH: -4070, + HM: -1711, + HN: 4012, + HO: 3761, + IA: 1327, + IH: -1184, + II: -1332, + IK: 1721, + IO: 5492, + KI: 3831, + KK: -8741, + MH: -3132, + MK: 3334, + OO: -2920 + }; + this.BC3__ = { + HH: 996, + HI: 626, + HK: -721, + HN: -1307, + HO: -836, + IH: -301, + KK: 2762, + MK: 1079, + MM: 4034, + OA: -1652, + OH: 266 + }; + this.BP1__ = { BB: 295, OB: 304, OO: -125, UB: 352 }; + this.BP2__ = { BO: 60, OO: -1762 }; + this.BQ1__ = { + BHH: 1150, + BHM: 1521, + BII: -1158, + BIM: 886, + BMH: 1208, + BNH: 449, + BOH: -91, + BOO: -2597, + OHI: 451, + OIH: -296, + OKA: 1851, + OKH: -1020, + OKK: 904, + OOO: 2965 + }; + this.BQ2__ = { + BHH: 118, + BHI: -1159, + BHM: 466, + BIH: -919, + BKK: -1720, + BKO: 864, + OHH: -1139, + OHM: -181, + OIH: 153, + UHI: -1146 + }; + this.BQ3__ = { + BHH: -792, + BHI: 2664, + BII: -299, + BKI: 419, + BMH: 937, + BMM: 8335, + BNN: 998, + BOH: 775, + OHH: 2174, + OHM: 439, + OII: 280, + OKH: 1798, + OKI: -793, + OKO: -2242, + OMH: -2402, + OOO: 11699 + }; + this.BQ4__ = { + BHH: -3895, + BIH: 3761, + BII: -4654, + BIK: 1348, + BKK: -1806, + BMI: -3385, + BOO: -12396, + OAH: 926, + OHH: 266, + OHK: -2036, + ONN: -973 + }; + this.BW1__ = { + ",\u3068": 660, + ",\u540C": 727, + B1\u3042: 1404, + B1\u540C: 542, + "\u3001\u3068": 660, + "\u3001\u540C": 727, + "\u300D\u3068": 1682, + \u3042\u3063: 1505, + \u3044\u3046: 1743, + \u3044\u3063: -2055, + \u3044\u308B: 672, + \u3046\u3057: -4817, + \u3046\u3093: 665, + \u304B\u3089: 3472, + \u304C\u3089: 600, + \u3053\u3046: -790, + \u3053\u3068: 2083, + \u3053\u3093: -1262, + \u3055\u3089: -4143, + \u3055\u3093: 4573, + \u3057\u305F: 2641, + \u3057\u3066: 1104, + \u3059\u3067: -3399, + \u305D\u3053: 1977, + \u305D\u308C: -871, + \u305F\u3061: 1122, + \u305F\u3081: 601, + \u3063\u305F: 3463, + \u3064\u3044: -802, + \u3066\u3044: 805, + \u3066\u304D: 1249, + \u3067\u304D: 1127, + \u3067\u3059: 3445, + \u3067\u306F: 844, + \u3068\u3044: -4915, + \u3068\u307F: 1922, + \u3069\u3053: 3887, + \u306A\u3044: 5713, + \u306A\u3063: 3015, + \u306A\u3069: 7379, + \u306A\u3093: -1113, + \u306B\u3057: 2468, + \u306B\u306F: 1498, + \u306B\u3082: 1671, + \u306B\u5BFE: -912, + \u306E\u4E00: -501, + \u306E\u4E2D: 741, + \u307E\u305B: 2448, + \u307E\u3067: 1711, + \u307E\u307E: 2600, + \u307E\u308B: -2155, + \u3084\u3080: -1947, + \u3088\u3063: -2565, + \u308C\u305F: 2369, + \u308C\u3067: -913, + \u3092\u3057: 1860, + \u3092\u898B: 731, + \u4EA1\u304F: -1886, + \u4EAC\u90FD: 2558, + \u53D6\u308A: -2784, + \u5927\u304D: -2604, + \u5927\u962A: 1497, + \u5E73\u65B9: -2314, + \u5F15\u304D: -1336, + \u65E5\u672C: -195, + \u672C\u5F53: -2423, + \u6BCE\u65E5: -2113, + \u76EE\u6307: -724, + \uFF22\uFF11\u3042: 1404, + \uFF22\uFF11\u540C: 542, + "\uFF63\u3068": 1682 + }; + this.BW2__ = { + "..": -11822, + 11: -669, + "\u2015\u2015": -5730, + "\u2212\u2212": -13175, + \u3044\u3046: -1609, + \u3046\u304B: 2490, + \u304B\u3057: -1350, + \u304B\u3082: -602, + \u304B\u3089: -7194, + \u304B\u308C: 4612, + \u304C\u3044: 853, + \u304C\u3089: -3198, + \u304D\u305F: 1941, + \u304F\u306A: -1597, + \u3053\u3068: -8392, + \u3053\u306E: -4193, + \u3055\u305B: 4533, + \u3055\u308C: 13168, + \u3055\u3093: -3977, + \u3057\u3044: -1819, + \u3057\u304B: -545, + \u3057\u305F: 5078, + \u3057\u3066: 972, + \u3057\u306A: 939, + \u305D\u306E: -3744, + \u305F\u3044: -1253, + \u305F\u305F: -662, + \u305F\u3060: -3857, + \u305F\u3061: -786, + \u305F\u3068: 1224, + \u305F\u306F: -939, + \u3063\u305F: 4589, + \u3063\u3066: 1647, + \u3063\u3068: -2094, + \u3066\u3044: 6144, + \u3066\u304D: 3640, + \u3066\u304F: 2551, + \u3066\u306F: -3110, + \u3066\u3082: -3065, + \u3067\u3044: 2666, + \u3067\u304D: -1528, + \u3067\u3057: -3828, + \u3067\u3059: -4761, + \u3067\u3082: -4203, + \u3068\u3044: 1890, + \u3068\u3053: -1746, + \u3068\u3068: -2279, + \u3068\u306E: 720, + \u3068\u307F: 5168, + \u3068\u3082: -3941, + \u306A\u3044: -2488, + \u306A\u304C: -1313, + \u306A\u3069: -6509, + \u306A\u306E: 2614, + \u306A\u3093: 3099, + \u306B\u304A: -1615, + \u306B\u3057: 2748, + \u306B\u306A: 2454, + \u306B\u3088: -7236, + \u306B\u5BFE: -14943, + \u306B\u5F93: -4688, + \u306B\u95A2: -11388, + \u306E\u304B: 2093, + \u306E\u3067: -7059, + \u306E\u306B: -6041, + \u306E\u306E: -6125, + \u306F\u3044: 1073, + \u306F\u304C: -1033, + \u306F\u305A: -2532, + \u3070\u308C: 1813, + \u307E\u3057: -1316, + \u307E\u3067: -6621, + \u307E\u308C: 5409, + \u3081\u3066: -3153, + \u3082\u3044: 2230, + \u3082\u306E: -10713, + \u3089\u304B: -944, + \u3089\u3057: -1611, + \u3089\u306B: -1897, + \u308A\u3057: 651, + \u308A\u307E: 1620, + \u308C\u305F: 4270, + \u308C\u3066: 849, + \u308C\u3070: 4114, + \u308D\u3046: 6067, + \u308F\u308C: 7901, + \u3092\u901A: -11877, + \u3093\u3060: 728, + \u3093\u306A: -4115, + \u4E00\u4EBA: 602, + \u4E00\u65B9: -1375, + \u4E00\u65E5: 970, + \u4E00\u90E8: -1051, + \u4E0A\u304C: -4479, + \u4F1A\u793E: -1116, + \u51FA\u3066: 2163, + \u5206\u306E: -7758, + \u540C\u515A: 970, + \u540C\u65E5: -913, + \u5927\u962A: -2471, + \u59D4\u54E1: -1250, + \u5C11\u306A: -1050, + \u5E74\u5EA6: -8669, + \u5E74\u9593: -1626, + \u5E9C\u770C: -2363, + \u624B\u6A29: -1982, + \u65B0\u805E: -4066, + \u65E5\u65B0: -722, + \u65E5\u672C: -7068, + \u65E5\u7C73: 3372, + \u66DC\u65E5: -601, + \u671D\u9BAE: -2355, + \u672C\u4EBA: -2697, + \u6771\u4EAC: -1543, + \u7136\u3068: -1384, + \u793E\u4F1A: -1276, + \u7ACB\u3066: -990, + \u7B2C\u306B: -1612, + \u7C73\u56FD: -4268, + "\uFF11\uFF11": -669 + }; + this.BW3__ = { + \u3042\u305F: -2194, + \u3042\u308A: 719, + \u3042\u308B: 3846, + "\u3044.": -1185, + "\u3044\u3002": -1185, + \u3044\u3044: 5308, + \u3044\u3048: 2079, + \u3044\u304F: 3029, + \u3044\u305F: 2056, + \u3044\u3063: 1883, + \u3044\u308B: 5600, + \u3044\u308F: 1527, + \u3046\u3061: 1117, + \u3046\u3068: 4798, + \u3048\u3068: 1454, + "\u304B.": 2857, + "\u304B\u3002": 2857, + \u304B\u3051: -743, + \u304B\u3063: -4098, + \u304B\u306B: -669, + \u304B\u3089: 6520, + \u304B\u308A: -2670, + "\u304C,": 1816, + "\u304C\u3001": 1816, + \u304C\u304D: -4855, + \u304C\u3051: -1127, + \u304C\u3063: -913, + \u304C\u3089: -4977, + \u304C\u308A: -2064, + \u304D\u305F: 1645, + \u3051\u3069: 1374, + \u3053\u3068: 7397, + \u3053\u306E: 1542, + \u3053\u308D: -2757, + \u3055\u3044: -714, + \u3055\u3092: 976, + "\u3057,": 1557, + "\u3057\u3001": 1557, + \u3057\u3044: -3714, + \u3057\u305F: 3562, + \u3057\u3066: 1449, + \u3057\u306A: 2608, + \u3057\u307E: 1200, + "\u3059.": -1310, + "\u3059\u3002": -1310, + \u3059\u308B: 6521, + "\u305A,": 3426, + "\u305A\u3001": 3426, + \u305A\u306B: 841, + \u305D\u3046: 428, + "\u305F.": 8875, + "\u305F\u3002": 8875, + \u305F\u3044: -594, + \u305F\u306E: 812, + \u305F\u308A: -1183, + \u305F\u308B: -853, + "\u3060.": 4098, + "\u3060\u3002": 4098, + \u3060\u3063: 1004, + \u3063\u305F: -4748, + \u3063\u3066: 300, + \u3066\u3044: 6240, + \u3066\u304A: 855, + \u3066\u3082: 302, + \u3067\u3059: 1437, + \u3067\u306B: -1482, + \u3067\u306F: 2295, + \u3068\u3046: -1387, + \u3068\u3057: 2266, + \u3068\u306E: 541, + \u3068\u3082: -3543, + \u3069\u3046: 4664, + \u306A\u3044: 1796, + \u306A\u304F: -903, + \u306A\u3069: 2135, + "\u306B,": -1021, + "\u306B\u3001": -1021, + \u306B\u3057: 1771, + \u306B\u306A: 1906, + \u306B\u306F: 2644, + "\u306E,": -724, + "\u306E\u3001": -724, + \u306E\u5B50: -1e3, + "\u306F,": 1337, + "\u306F\u3001": 1337, + \u3079\u304D: 2181, + \u307E\u3057: 1113, + \u307E\u3059: 6943, + \u307E\u3063: -1549, + \u307E\u3067: 6154, + \u307E\u308C: -793, + \u3089\u3057: 1479, + \u3089\u308C: 6820, + \u308B\u308B: 3818, + "\u308C,": 854, + "\u308C\u3001": 854, + \u308C\u305F: 1850, + \u308C\u3066: 1375, + \u308C\u3070: -3246, + \u308C\u308B: 1091, + \u308F\u308C: -605, + \u3093\u3060: 606, + \u3093\u3067: 798, + \u30AB\u6708: 990, + \u4F1A\u8B70: 860, + \u5165\u308A: 1232, + \u5927\u4F1A: 2217, + \u59CB\u3081: 1681, + \u5E02: 965, + \u65B0\u805E: -5055, + "\u65E5,": 974, + "\u65E5\u3001": 974, + \u793E\u4F1A: 2024, + \uFF76\u6708: 990 + }; + this.TC1__ = { + AAA: 1093, + HHH: 1029, + HHM: 580, + HII: 998, + HOH: -390, + HOM: -331, + IHI: 1169, + IOH: -142, + IOI: -1015, + IOM: 467, + MMH: 187, + OOI: -1832 + }; + this.TC2__ = { + HHO: 2088, + HII: -1023, + HMM: -1154, + IHI: -1965, + KKH: 703, + OII: -2649 + }; + this.TC3__ = { + AAA: -294, + HHH: 346, + HHI: -341, + HII: -1088, + HIK: 731, + HOH: -1486, + IHH: 128, + IHI: -3041, + IHO: -1935, + IIH: -825, + IIM: -1035, + IOI: -542, + KHH: -1216, + KKA: 491, + KKH: -1217, + KOK: -1009, + MHH: -2694, + MHM: -457, + MHO: 123, + MMH: -471, + NNH: -1689, + NNO: 662, + OHO: -3393 + }; + this.TC4__ = { + HHH: -203, + HHI: 1344, + HHK: 365, + HHM: -122, + HHN: 182, + HHO: 669, + HIH: 804, + HII: 679, + HOH: 446, + IHH: 695, + IHO: -2324, + IIH: 321, + III: 1497, + IIO: 656, + IOO: 54, + KAK: 4845, + KKA: 3386, + KKK: 3065, + MHH: -405, + MHI: 201, + MMH: -241, + MMM: 661, + MOM: 841 + }; + this.TQ1__ = { + BHHH: -227, + BHHI: 316, + BHIH: -132, + BIHH: 60, + BIII: 1595, + BNHH: -744, + BOHH: 225, + BOOO: -908, + OAKK: 482, + OHHH: 281, + OHIH: 249, + OIHI: 200, + OIIH: -68 + }; + this.TQ2__ = { BIHH: -1401, BIII: -1033, BKAK: -543, BOOO: -5591 }; + this.TQ3__ = { + BHHH: 478, + BHHM: -1073, + BHIH: 222, + BHII: -504, + BIIH: -116, + BIII: -105, + BMHI: -863, + BMHM: -464, + BOMH: 620, + OHHH: 346, + OHHI: 1729, + OHII: 997, + OHMH: 481, + OIHH: 623, + OIIH: 1344, + OKAK: 2792, + OKHH: 587, + OKKA: 679, + OOHH: 110, + OOII: -685 + }; + this.TQ4__ = { + BHHH: -721, + BHHM: -3604, + BHII: -966, + BIIH: -607, + BIII: -2181, + OAAA: -2763, + OAKK: 180, + OHHH: -294, + OHHI: 2446, + OHHO: 480, + OHIH: -1573, + OIHH: 1935, + OIHI: -493, + OIIH: 626, + OIII: -4007, + OKAK: -8156 + }; + this.TW1__ = { \u306B\u3064\u3044: -4681, \u6771\u4EAC\u90FD: 2026 }; + this.TW2__ = { + \u3042\u308B\u7A0B: -2049, + \u3044\u3063\u305F: -1256, + \u3053\u308D\u304C: -2434, + \u3057\u3087\u3046: 3873, + \u305D\u306E\u5F8C: -4430, + \u3060\u3063\u3066: -1049, + \u3066\u3044\u305F: 1833, + \u3068\u3057\u3066: -4657, + \u3068\u3082\u306B: -4517, + \u3082\u306E\u3067: 1882, + \u4E00\u6C17\u306B: -792, + \u521D\u3081\u3066: -1512, + \u540C\u6642\u306B: -8097, + \u5927\u304D\u306A: -1255, + \u5BFE\u3057\u3066: -2721, + \u793E\u4F1A\u515A: -3216 + }; + this.TW3__ = { + \u3044\u305F\u3060: -1734, + \u3057\u3066\u3044: 1314, + \u3068\u3057\u3066: -4314, + \u306B\u3064\u3044: -5483, + \u306B\u3068\u3063: -5989, + \u306B\u5F53\u305F: -6247, + "\u306E\u3067,": -727, + "\u306E\u3067\u3001": -727, + \u306E\u3082\u306E: -600, + \u308C\u304B\u3089: -3752, + \u5341\u4E8C\u6708: -2287 + }; + this.TW4__ = { + "\u3044\u3046.": 8576, + "\u3044\u3046\u3002": 8576, + \u304B\u3089\u306A: -2348, + \u3057\u3066\u3044: 2958, + "\u305F\u304C,": 1516, + "\u305F\u304C\u3001": 1516, + \u3066\u3044\u308B: 1538, + \u3068\u3044\u3046: 1349, + \u307E\u3057\u305F: 5543, + \u307E\u305B\u3093: 1097, + \u3088\u3046\u3068: -4258, + \u3088\u308B\u3068: 5865 + }; + this.UC1__ = { A: 484, K: 93, M: 645, O: -505 }; + this.UC2__ = { A: 819, H: 1059, I: 409, M: 3987, N: 5775, O: 646 }; + this.UC3__ = { A: -1370, I: 2311 }; + this.UC4__ = { + A: -2643, + H: 1809, + I: -1032, + K: -3450, + M: 3565, + N: 3876, + O: 6646 + }; + this.UC5__ = { H: 313, I: -1238, K: -799, M: 539, O: -831 }; + this.UC6__ = { H: -506, I: -253, K: 87, M: 247, O: -387 }; + this.UP1__ = { O: -214 }; + this.UP2__ = { B: 69, O: 935 }; + this.UP3__ = { B: 189 }; + this.UQ1__ = { + BH: 21, + BI: -12, + BK: -99, + BN: 142, + BO: -56, + OH: -95, + OI: 477, + OK: 410, + OO: -2422 + }; + this.UQ2__ = { BH: 216, BI: 113, OK: 1759 }; + this.UQ3__ = { + BA: -479, + BH: 42, + BI: 1913, + BK: -7198, + BM: 3160, + BN: 6427, + BO: 14761, + OI: -827, + ON: -3212 + }; + this.UW1__ = { + ",": 156, + "\u3001": 156, + "\u300C": -463, + \u3042: -941, + \u3046: -127, + \u304C: -553, + \u304D: 121, + \u3053: 505, + \u3067: -201, + \u3068: -547, + \u3069: -123, + \u306B: -789, + \u306E: -185, + \u306F: -847, + \u3082: -466, + \u3084: -470, + \u3088: 182, + \u3089: -292, + \u308A: 208, + \u308C: 169, + \u3092: -446, + \u3093: -137, + "\u30FB": -135, + \u4E3B: -402, + \u4EAC: -268, + \u533A: -912, + \u5348: 871, + \u56FD: -460, + \u5927: 561, + \u59D4: 729, + \u5E02: -411, + \u65E5: -141, + \u7406: 361, + \u751F: -408, + \u770C: -386, + \u90FD: -718, + "\uFF62": -463, + "\uFF65": -135 + }; + this.UW2__ = { + ",": -829, + "\u3001": -829, + "\u3007": 892, + "\u300C": -645, + "\u300D": 3145, + \u3042: -538, + \u3044: 505, + \u3046: 134, + \u304A: -502, + \u304B: 1454, + \u304C: -856, + \u304F: -412, + \u3053: 1141, + \u3055: 878, + \u3056: 540, + \u3057: 1529, + \u3059: -675, + \u305B: 300, + \u305D: -1011, + \u305F: 188, + \u3060: 1837, + \u3064: -949, + \u3066: -291, + \u3067: -268, + \u3068: -981, + \u3069: 1273, + \u306A: 1063, + \u306B: -1764, + \u306E: 130, + \u306F: -409, + \u3072: -1273, + \u3079: 1261, + \u307E: 600, + \u3082: -1263, + \u3084: -402, + \u3088: 1639, + \u308A: -579, + \u308B: -694, + \u308C: 571, + \u3092: -2516, + \u3093: 2095, + \u30A2: -587, + \u30AB: 306, + \u30AD: 568, + \u30C3: 831, + \u4E09: -758, + \u4E0D: -2150, + \u4E16: -302, + \u4E2D: -968, + \u4E3B: -861, + \u4E8B: 492, + \u4EBA: -123, + \u4F1A: 978, + \u4FDD: 362, + \u5165: 548, + \u521D: -3025, + \u526F: -1566, + \u5317: -3414, + \u533A: -422, + \u5927: -1769, + \u5929: -865, + \u592A: -483, + \u5B50: -1519, + \u5B66: 760, + \u5B9F: 1023, + \u5C0F: -2009, + \u5E02: -813, + \u5E74: -1060, + \u5F37: 1067, + \u624B: -1519, + \u63FA: -1033, + \u653F: 1522, + \u6587: -1355, + \u65B0: -1682, + \u65E5: -1815, + \u660E: -1462, + \u6700: -630, + \u671D: -1843, + \u672C: -1650, + \u6771: -931, + \u679C: -665, + \u6B21: -2378, + \u6C11: -180, + \u6C17: -1740, + \u7406: 752, + \u767A: 529, + \u76EE: -1584, + \u76F8: -242, + \u770C: -1165, + \u7ACB: -763, + \u7B2C: 810, + \u7C73: 509, + \u81EA: -1353, + \u884C: 838, + \u897F: -744, + \u898B: -3874, + \u8ABF: 1010, + \u8B70: 1198, + \u8FBC: 3041, + \u958B: 1758, + \u9593: -1257, + "\uFF62": -645, + "\uFF63": 3145, + \uFF6F: 831, + \uFF71: -587, + \uFF76: 306, + \uFF77: 568 + }; + this.UW3__ = { + ",": 4889, + 1: -800, + "\u2212": -1723, + "\u3001": 4889, + \u3005: -2311, + "\u3007": 5827, + "\u300D": 2670, + "\u3013": -3573, + \u3042: -2696, + \u3044: 1006, + \u3046: 2342, + \u3048: 1983, + \u304A: -4864, + \u304B: -1163, + \u304C: 3271, + \u304F: 1004, + \u3051: 388, + \u3052: 401, + \u3053: -3552, + \u3054: -3116, + \u3055: -1058, + \u3057: -395, + \u3059: 584, + \u305B: 3685, + \u305D: -5228, + \u305F: 842, + \u3061: -521, + \u3063: -1444, + \u3064: -1081, + \u3066: 6167, + \u3067: 2318, + \u3068: 1691, + \u3069: -899, + \u306A: -2788, + \u306B: 2745, + \u306E: 4056, + \u306F: 4555, + \u3072: -2171, + \u3075: -1798, + \u3078: 1199, + \u307B: -5516, + \u307E: -4384, + \u307F: -120, + \u3081: 1205, + \u3082: 2323, + \u3084: -788, + \u3088: -202, + \u3089: 727, + \u308A: 649, + \u308B: 5905, + \u308C: 2773, + \u308F: -1207, + \u3092: 6620, + \u3093: -518, + \u30A2: 551, + \u30B0: 1319, + \u30B9: 874, + \u30C3: -1350, + \u30C8: 521, + \u30E0: 1109, + \u30EB: 1591, + \u30ED: 2201, + \u30F3: 278, + "\u30FB": -3794, + \u4E00: -1619, + \u4E0B: -1759, + \u4E16: -2087, + \u4E21: 3815, + \u4E2D: 653, + \u4E3B: -758, + \u4E88: -1193, + \u4E8C: 974, + \u4EBA: 2742, + \u4ECA: 792, + \u4ED6: 1889, + \u4EE5: -1368, + \u4F4E: 811, + \u4F55: 4265, + \u4F5C: -361, + \u4FDD: -2439, + \u5143: 4858, + \u515A: 3593, + \u5168: 1574, + \u516C: -3030, + \u516D: 755, + \u5171: -1880, + \u5186: 5807, + \u518D: 3095, + \u5206: 457, + \u521D: 2475, + \u5225: 1129, + \u524D: 2286, + \u526F: 4437, + \u529B: 365, + \u52D5: -949, + \u52D9: -1872, + \u5316: 1327, + \u5317: -1038, + \u533A: 4646, + \u5343: -2309, + \u5348: -783, + \u5354: -1006, + \u53E3: 483, + \u53F3: 1233, + \u5404: 3588, + \u5408: -241, + \u540C: 3906, + \u548C: -837, + \u54E1: 4513, + \u56FD: 642, + \u578B: 1389, + \u5834: 1219, + \u5916: -241, + \u59BB: 2016, + \u5B66: -1356, + \u5B89: -423, + \u5B9F: -1008, + \u5BB6: 1078, + \u5C0F: -513, + \u5C11: -3102, + \u5DDE: 1155, + \u5E02: 3197, + \u5E73: -1804, + \u5E74: 2416, + \u5E83: -1030, + \u5E9C: 1605, + \u5EA6: 1452, + \u5EFA: -2352, + \u5F53: -3885, + \u5F97: 1905, + \u601D: -1291, + \u6027: 1822, + \u6238: -488, + \u6307: -3973, + \u653F: -2013, + \u6559: -1479, + \u6570: 3222, + \u6587: -1489, + \u65B0: 1764, + \u65E5: 2099, + \u65E7: 5792, + \u6628: -661, + \u6642: -1248, + \u66DC: -951, + \u6700: -937, + \u6708: 4125, + \u671F: 360, + \u674E: 3094, + \u6751: 364, + \u6771: -805, + \u6838: 5156, + \u68EE: 2438, + \u696D: 484, + \u6C0F: 2613, + \u6C11: -1694, + \u6C7A: -1073, + \u6CD5: 1868, + \u6D77: -495, + \u7121: 979, + \u7269: 461, + \u7279: -3850, + \u751F: -273, + \u7528: 914, + \u753A: 1215, + \u7684: 7313, + \u76F4: -1835, + \u7701: 792, + \u770C: 6293, + \u77E5: -1528, + \u79C1: 4231, + \u7A0E: 401, + \u7ACB: -960, + \u7B2C: 1201, + \u7C73: 7767, + \u7CFB: 3066, + \u7D04: 3663, + \u7D1A: 1384, + \u7D71: -4229, + \u7DCF: 1163, + \u7DDA: 1255, + \u8005: 6457, + \u80FD: 725, + \u81EA: -2869, + \u82F1: 785, + \u898B: 1044, + \u8ABF: -562, + \u8CA1: -733, + \u8CBB: 1777, + \u8ECA: 1835, + \u8ECD: 1375, + \u8FBC: -1504, + \u901A: -1136, + \u9078: -681, + \u90CE: 1026, + \u90E1: 4404, + \u90E8: 1200, + \u91D1: 2163, + \u9577: 421, + \u958B: -1432, + \u9593: 1302, + \u95A2: -1282, + \u96E8: 2009, + \u96FB: -1045, + \u975E: 2066, + \u99C5: 1620, + "\uFF11": -800, + "\uFF63": 2670, + "\uFF65": -3794, + \uFF6F: -1350, + \uFF71: 551, + \uFF78\uFF9E: 1319, + \uFF7D: 874, + \uFF84: 521, + \uFF91: 1109, + \uFF99: 1591, + \uFF9B: 2201, + \uFF9D: 278 + }; + this.UW4__ = { + ",": 3930, + ".": 3508, + "\u2015": -4841, + "\u3001": 3930, + "\u3002": 3508, + "\u3007": 4999, + "\u300C": 1895, + "\u300D": 3798, + "\u3013": -5156, + \u3042: 4752, + \u3044: -3435, + \u3046: -640, + \u3048: -2514, + \u304A: 2405, + \u304B: 530, + \u304C: 6006, + \u304D: -4482, + \u304E: -3821, + \u304F: -3788, + \u3051: -4376, + \u3052: -4734, + \u3053: 2255, + \u3054: 1979, + \u3055: 2864, + \u3057: -843, + \u3058: -2506, + \u3059: -731, + \u305A: 1251, + \u305B: 181, + \u305D: 4091, + \u305F: 5034, + \u3060: 5408, + \u3061: -3654, + \u3063: -5882, + \u3064: -1659, + \u3066: 3994, + \u3067: 7410, + \u3068: 4547, + \u306A: 5433, + \u306B: 6499, + \u306C: 1853, + \u306D: 1413, + \u306E: 7396, + \u306F: 8578, + \u3070: 1940, + \u3072: 4249, + \u3073: -4134, + \u3075: 1345, + \u3078: 6665, + \u3079: -744, + \u307B: 1464, + \u307E: 1051, + \u307F: -2082, + \u3080: -882, + \u3081: -5046, + \u3082: 4169, + \u3083: -2666, + \u3084: 2795, + \u3087: -1544, + \u3088: 3351, + \u3089: -2922, + \u308A: -9726, + \u308B: -14896, + \u308C: -2613, + \u308D: -4570, + \u308F: -1783, + \u3092: 13150, + \u3093: -2352, + \u30AB: 2145, + \u30B3: 1789, + \u30BB: 1287, + \u30C3: -724, + \u30C8: -403, + \u30E1: -1635, + \u30E9: -881, + \u30EA: -541, + \u30EB: -856, + \u30F3: -3637, + "\u30FB": -4371, + \u30FC: -11870, + \u4E00: -2069, + \u4E2D: 2210, + \u4E88: 782, + \u4E8B: -190, + \u4E95: -1768, + \u4EBA: 1036, + \u4EE5: 544, + \u4F1A: 950, + \u4F53: -1286, + \u4F5C: 530, + \u5074: 4292, + \u5148: 601, + \u515A: -2006, + \u5171: -1212, + \u5185: 584, + \u5186: 788, + \u521D: 1347, + \u524D: 1623, + \u526F: 3879, + \u529B: -302, + \u52D5: -740, + \u52D9: -2715, + \u5316: 776, + \u533A: 4517, + \u5354: 1013, + \u53C2: 1555, + \u5408: -1834, + \u548C: -681, + \u54E1: -910, + \u5668: -851, + \u56DE: 1500, + \u56FD: -619, + \u5712: -1200, + \u5730: 866, + \u5834: -1410, + \u5841: -2094, + \u58EB: -1413, + \u591A: 1067, + \u5927: 571, + \u5B50: -4802, + \u5B66: -1397, + \u5B9A: -1057, + \u5BFA: -809, + \u5C0F: 1910, + \u5C4B: -1328, + \u5C71: -1500, + \u5CF6: -2056, + \u5DDD: -2667, + \u5E02: 2771, + \u5E74: 374, + \u5E81: -4556, + \u5F8C: 456, + \u6027: 553, + \u611F: 916, + \u6240: -1566, + \u652F: 856, + \u6539: 787, + \u653F: 2182, + \u6559: 704, + \u6587: 522, + \u65B9: -856, + \u65E5: 1798, + \u6642: 1829, + \u6700: 845, + \u6708: -9066, + \u6728: -485, + \u6765: -442, + \u6821: -360, + \u696D: -1043, + \u6C0F: 5388, + \u6C11: -2716, + \u6C17: -910, + \u6CA2: -939, + \u6E08: -543, + \u7269: -735, + \u7387: 672, + \u7403: -1267, + \u751F: -1286, + \u7523: -1101, + \u7530: -2900, + \u753A: 1826, + \u7684: 2586, + \u76EE: 922, + \u7701: -3485, + \u770C: 2997, + \u7A7A: -867, + \u7ACB: -2112, + \u7B2C: 788, + \u7C73: 2937, + \u7CFB: 786, + \u7D04: 2171, + \u7D4C: 1146, + \u7D71: -1169, + \u7DCF: 940, + \u7DDA: -994, + \u7F72: 749, + \u8005: 2145, + \u80FD: -730, + \u822C: -852, + \u884C: -792, + \u898F: 792, + \u8B66: -1184, + \u8B70: -244, + \u8C37: -1e3, + \u8CDE: 730, + \u8ECA: -1481, + \u8ECD: 1158, + \u8F2A: -1433, + \u8FBC: -3370, + \u8FD1: 929, + \u9053: -1291, + \u9078: 2596, + \u90CE: -4866, + \u90FD: 1192, + \u91CE: -1100, + \u9280: -2213, + \u9577: 357, + \u9593: -2344, + \u9662: -2297, + \u969B: -2604, + \u96FB: -878, + \u9818: -1659, + \u984C: -792, + \u9928: -1984, + \u9996: 1749, + \u9AD8: 2120, + "\uFF62": 1895, + "\uFF63": 3798, + "\uFF65": -4371, + \uFF6F: -724, + \uFF70: -11870, + \uFF76: 2145, + \uFF7A: 1789, + \uFF7E: 1287, + \uFF84: -403, + \uFF92: -1635, + \uFF97: -881, + \uFF98: -541, + \uFF99: -856, + \uFF9D: -3637 + }; + this.UW5__ = { + ",": 465, + ".": -299, + 1: -514, + E2: -32768, + "]": -2762, + "\u3001": 465, + "\u3002": -299, + "\u300C": 363, + \u3042: 1655, + \u3044: 331, + \u3046: -503, + \u3048: 1199, + \u304A: 527, + \u304B: 647, + \u304C: -421, + \u304D: 1624, + \u304E: 1971, + \u304F: 312, + \u3052: -983, + \u3055: -1537, + \u3057: -1371, + \u3059: -852, + \u3060: -1186, + \u3061: 1093, + \u3063: 52, + \u3064: 921, + \u3066: -18, + \u3067: -850, + \u3068: -127, + \u3069: 1682, + \u306A: -787, + \u306B: -1224, + \u306E: -635, + \u306F: -578, + \u3079: 1001, + \u307F: 502, + \u3081: 865, + \u3083: 3350, + \u3087: 854, + \u308A: -208, + \u308B: 429, + \u308C: 504, + \u308F: 419, + \u3092: -1264, + \u3093: 327, + \u30A4: 241, + \u30EB: 451, + \u30F3: -343, + \u4E2D: -871, + \u4EAC: 722, + \u4F1A: -1153, + \u515A: -654, + \u52D9: 3519, + \u533A: -901, + \u544A: 848, + \u54E1: 2104, + \u5927: -1296, + \u5B66: -548, + \u5B9A: 1785, + \u5D50: -1304, + \u5E02: -2991, + \u5E2D: 921, + \u5E74: 1763, + \u601D: 872, + \u6240: -814, + \u6319: 1618, + \u65B0: -1682, + \u65E5: 218, + \u6708: -4353, + \u67FB: 932, + \u683C: 1356, + \u6A5F: -1508, + \u6C0F: -1347, + \u7530: 240, + \u753A: -3912, + \u7684: -3149, + \u76F8: 1319, + \u7701: -1052, + \u770C: -4003, + \u7814: -997, + \u793E: -278, + \u7A7A: -813, + \u7D71: 1955, + \u8005: -2233, + \u8868: 663, + \u8A9E: -1073, + \u8B70: 1219, + \u9078: -1018, + \u90CE: -368, + \u9577: 786, + \u9593: 1191, + \u984C: 2368, + \u9928: -689, + "\uFF11": -514, + \uFF25\uFF12: -32768, + "\uFF62": 363, + \uFF72: 241, + \uFF99: 451, + \uFF9D: -343 + }; + this.UW6__ = { + ",": 227, + ".": 808, + 1: -270, + E1: 306, + "\u3001": 227, + "\u3002": 808, + \u3042: -307, + \u3046: 189, + \u304B: 241, + \u304C: -73, + \u304F: -121, + \u3053: -200, + \u3058: 1782, + \u3059: 383, + \u305F: -428, + \u3063: 573, + \u3066: -1014, + \u3067: 101, + \u3068: -105, + \u306A: -253, + \u306B: -149, + \u306E: -417, + \u306F: -236, + \u3082: -206, + \u308A: 187, + \u308B: -135, + \u3092: 195, + \u30EB: -673, + \u30F3: -496, + \u4E00: -277, + \u4E2D: 201, + \u4EF6: -800, + \u4F1A: 624, + \u524D: 302, + \u533A: 1792, + \u54E1: -1212, + \u59D4: 798, + \u5B66: -960, + \u5E02: 887, + \u5E83: -695, + \u5F8C: 535, + \u696D: -697, + \u76F8: 753, + \u793E: -507, + \u798F: 974, + \u7A7A: -822, + \u8005: 1811, + \u9023: 463, + \u90CE: 1082, + "\uFF11": -270, + \uFF25\uFF11: 306, + \uFF99: -673, + \uFF9D: -496 + }; + return this; +} +TinySegmenter.prototype.ctype_ = function(str) { + for (var i in this.chartype_) { + if (str.match(this.chartype_[i][0])) { + return this.chartype_[i][1]; + } + } + return "O"; +}; +TinySegmenter.prototype.ts_ = function(v) { + if (v) { + return v; + } + return 0; +}; +TinySegmenter.prototype.segment = function(input) { + if (input == null || input == void 0 || input == "") { + return []; + } + var result = []; + var seg = ["B3", "B2", "B1"]; + var ctype = ["O", "O", "O"]; + var o = input.split(""); + for (i = 0; i < o.length; ++i) { + seg.push(o[i]); + ctype.push(this.ctype_(o[i])); + } + seg.push("E1"); + seg.push("E2"); + seg.push("E3"); + ctype.push("O"); + ctype.push("O"); + ctype.push("O"); + var word = seg[3]; + var p1 = "U"; + var p2 = "U"; + var p3 = "U"; + for (var i = 4; i < seg.length - 3; ++i) { + var score = this.BIAS__; + var w1 = seg[i - 3]; + var w2 = seg[i - 2]; + var w3 = seg[i - 1]; + var w4 = seg[i]; + var w5 = seg[i + 1]; + var w6 = seg[i + 2]; + var c1 = ctype[i - 3]; + var c2 = ctype[i - 2]; + var c3 = ctype[i - 1]; + var c4 = ctype[i]; + var c5 = ctype[i + 1]; + var c6 = ctype[i + 2]; + score += this.ts_(this.UP1__[p1]); + score += this.ts_(this.UP2__[p2]); + score += this.ts_(this.UP3__[p3]); + score += this.ts_(this.BP1__[p1 + p2]); + score += this.ts_(this.BP2__[p2 + p3]); + score += this.ts_(this.UW1__[w1]); + score += this.ts_(this.UW2__[w2]); + score += this.ts_(this.UW3__[w3]); + score += this.ts_(this.UW4__[w4]); + score += this.ts_(this.UW5__[w5]); + score += this.ts_(this.UW6__[w6]); + score += this.ts_(this.BW1__[w2 + w3]); + score += this.ts_(this.BW2__[w3 + w4]); + score += this.ts_(this.BW3__[w4 + w5]); + score += this.ts_(this.TW1__[w1 + w2 + w3]); + score += this.ts_(this.TW2__[w2 + w3 + w4]); + score += this.ts_(this.TW3__[w3 + w4 + w5]); + score += this.ts_(this.TW4__[w4 + w5 + w6]); + score += this.ts_(this.UC1__[c1]); + score += this.ts_(this.UC2__[c2]); + score += this.ts_(this.UC3__[c3]); + score += this.ts_(this.UC4__[c4]); + score += this.ts_(this.UC5__[c5]); + score += this.ts_(this.UC6__[c6]); + score += this.ts_(this.BC1__[c2 + c3]); + score += this.ts_(this.BC2__[c3 + c4]); + score += this.ts_(this.BC3__[c4 + c5]); + score += this.ts_(this.TC1__[c1 + c2 + c3]); + score += this.ts_(this.TC2__[c2 + c3 + c4]); + score += this.ts_(this.TC3__[c3 + c4 + c5]); + score += this.ts_(this.TC4__[c4 + c5 + c6]); + score += this.ts_(this.UQ1__[p1 + c1]); + score += this.ts_(this.UQ2__[p2 + c2]); + score += this.ts_(this.UQ3__[p3 + c3]); + score += this.ts_(this.BQ1__[p2 + c2 + c3]); + score += this.ts_(this.BQ2__[p2 + c3 + c4]); + score += this.ts_(this.BQ3__[p3 + c2 + c3]); + score += this.ts_(this.BQ4__[p3 + c3 + c4]); + score += this.ts_(this.TQ1__[p2 + c1 + c2 + c3]); + score += this.ts_(this.TQ2__[p2 + c2 + c3 + c4]); + score += this.ts_(this.TQ3__[p3 + c1 + c2 + c3]); + score += this.ts_(this.TQ4__[p3 + c2 + c3 + c4]); + var p = "O"; + if (score > 0) { + result.push(word); + word = ""; + p = "B"; + } + p1 = p2; + p2 = p3; + p3 = p; + word += seg[i]; + } + result.push(word); + return result; +}; +var tiny_segmenter_default = TinySegmenter; + +// src/tokenizer/tokenizers/JapaneseTokenizer.ts +var segmenter = new tiny_segmenter_default(); +function pickTokensAsJapanese(content, trimPattern) { + return content.split(trimPattern).filter((x) => x !== "").flatMap((x) => segmenter.segment(x)); +} +var JapaneseTokenizer = class { + tokenize(content, raw) { + return pickTokensAsJapanese(content, raw ? / /g : this.getTrimPattern()); + } + recursiveTokenize(content) { + const tokens = segmenter.segment(content).flatMap( + (x) => x === " " ? x : x.split(" ").map((t) => t === "" ? " " : t) + ); + const ret = []; + for (let i = 0; i < tokens.length; i++) { + if (i === 0 || tokens[i].length !== 1 || !Boolean(tokens[i].match(this.getTrimPattern()))) { + ret.push({ + word: tokens.slice(i).join(""), + offset: tokens.slice(0, i).join("").length + }); + } + } + return ret; + } + getTrimPattern() { + return TRIM_CHAR_PATTERN; + } + shouldIgnoreOnCurrent(str) { + return Boolean(str.match(/^[ぁ-んa-zA-Z。、ー ]*$/)); + } +}; + +// src/tokenizer/tokenizers/EnglishOnlyTokenizer.ts +var ENGLISH_PATTERN = /[a-zA-Z0-9_\-\\]/; +var EnglishOnlyTokenizer = class extends DefaultTokenizer { + tokenize(content, raw) { + const tokenized = Array.from(this._tokenize(content)).filter( + (x) => x.word.match(ENGLISH_PATTERN) + ); + return raw ? tokenized.map((x) => x.word) : tokenized.map((x) => x.word).filter((x) => !x.match(this.getTrimPattern())); + } + recursiveTokenize(content) { + const offsets = Array.from(this._tokenize(content)).filter((x) => !x.word.match(this.getTrimPattern())).map((x) => x.offset); + return [ + ...offsets.map((i) => ({ + word: content.slice(i), + offset: i + })) + ]; + } + *_tokenize(content) { + let startIndex = 0; + let previousType = "none"; + for (let i = 0; i < content.length; i++) { + if (content[i].match(super.getTrimPattern())) { + yield { word: content.slice(startIndex, i), offset: startIndex }; + previousType = "trim"; + startIndex = i; continue; } - - // Handle non-Chinese characters - - let end = i + 1; - - for (; end < text.length; end++) { - if (text[end].match(/\s/) != null || isChinese(text[end])) break; + if (content[i].match(ENGLISH_PATTERN)) { + if (previousType === "english" || previousType === "none") { + previousType = "english"; + continue; + } + yield { word: content.slice(startIndex, i), offset: startIndex }; + previousType = "english"; + startIndex = i; + continue; } - - let word = text.slice(i, end).join(""); - pushToken(word); + if (previousType === "others" || previousType === "none") { + previousType = "others"; + continue; + } + yield { word: content.slice(startIndex, i), offset: startIndex }; + previousType = "others"; + startIndex = i; } - - return result; - }; + yield { + word: content.slice(startIndex, content.length), + offset: startIndex + }; + } }; -/** - * Chinese needs original logic. - */ -class ChineseTokenizer { - static create(dict) { - const ins = new ChineseTokenizer(); - ins._tokenize = main.load(dict); - return ins; - } - tokenize(content, raw) { - return content - .split(raw ? / /g : this.getTrimPattern()) - .filter((x) => x !== "") - .flatMap((x) => this._tokenize(x)) - .map((x) => x.text); - } - recursiveTokenize(content) { - const tokens = this._tokenize(content).map((x) => x.text); - const ret = []; - for (let i = 0; i < tokens.length; i++) { - if (i === 0 || - tokens[i].length !== 1 || - !Boolean(tokens[i].match(this.getTrimPattern()))) { - ret.push({ - word: tokens.slice(i).join(""), - offset: tokens.slice(0, i).join("").length, - }); - } - } - return ret; - } - getTrimPattern() { - return TRIM_CHAR_PATTERN; - } - shouldIgnoreOnCurrent(str) { - return false; +// src/tokenizer/tokenizers/ChineseTokenizer.ts +var import_chinese_tokenizer = __toESM(require_main()); +var ChineseTokenizer = class { + static create(dict) { + const ins = new ChineseTokenizer(); + ins._tokenize = import_chinese_tokenizer.default.load(dict); + return ins; + } + tokenize(content, raw) { + return content.split(raw ? / /g : this.getTrimPattern()).filter((x) => x !== "").flatMap((x) => this._tokenize(x)).map((x) => x.text); + } + recursiveTokenize(content) { + const tokens = this._tokenize(content).map((x) => x.text); + const ret = []; + for (let i = 0; i < tokens.length; i++) { + if (i === 0 || tokens[i].length !== 1 || !Boolean(tokens[i].match(this.getTrimPattern()))) { + ret.push({ + word: tokens.slice(i).join(""), + offset: tokens.slice(0, i).join("").length + }); + } } + return ret; + } + getTrimPattern() { + return TRIM_CHAR_PATTERN; + } + shouldIgnoreOnCurrent(str) { + return false; + } +}; + +// src/tokenizer/tokenizer.ts +async function createTokenizer(strategy, app) { + switch (strategy.name) { + case "default": + return new DefaultTokenizer(); + case "english-only": + return new EnglishOnlyTokenizer(); + case "arabic": + return new ArabicTokenizer(); + case "japanese": + return new JapaneseTokenizer(); + case "chinese": + const hasCedict = await app.vault.adapter.exists("./cedict_ts.u8"); + if (!hasCedict) { + return Promise.reject( + new Error("cedict_ts.U8 doesn't exist in your vault root.") + ); + } + const dict = await app.vault.adapter.read("./cedict_ts.u8"); + return ChineseTokenizer.create(dict); + } } -function createTokenizer(strategy, app) { - return __awaiter(this, void 0, void 0, function* () { - switch (strategy.name) { - case "default": - return new DefaultTokenizer(); - case "english-only": - return new EnglishOnlyTokenizer(); - case "arabic": - return new ArabicTokenizer(); - case "japanese": - return new JapaneseTokenizer(); - case "chinese": - const hasCedict = yield app.vault.adapter.exists("./cedict_ts.u8"); - if (!hasCedict) { - return Promise.reject(new Error("cedict_ts.U8 doesn't exist in your vault root.")); - } - const dict = yield app.vault.adapter.read("./cedict_ts.u8"); - return ChineseTokenizer.create(dict); - } - }); -} - -class TokenizeStrategy { - constructor(name, triggerThreshold, indexingThreshold) { - this.name = name; - this.triggerThreshold = triggerThreshold; - this.indexingThreshold = indexingThreshold; - TokenizeStrategy._values.push(this); - } - static fromName(name) { - return TokenizeStrategy._values.find((x) => x.name === name); - } - static values() { - return TokenizeStrategy._values; - } -} +// src/tokenizer/TokenizeStrategy.ts +var _TokenizeStrategy = class { + constructor(name, triggerThreshold, indexingThreshold) { + this.name = name; + this.triggerThreshold = triggerThreshold; + this.indexingThreshold = indexingThreshold; + _TokenizeStrategy._values.push(this); + } + static fromName(name) { + return _TokenizeStrategy._values.find((x) => x.name === name); + } + static values() { + return _TokenizeStrategy._values; + } +}; +var TokenizeStrategy = _TokenizeStrategy; TokenizeStrategy._values = []; -TokenizeStrategy.DEFAULT = new TokenizeStrategy("default", 3, 5); -TokenizeStrategy.ENGLISH_ONLY = new TokenizeStrategy("english-only", 3, 5); -TokenizeStrategy.JAPANESE = new TokenizeStrategy("japanese", 2, 2); -TokenizeStrategy.ARABIC = new TokenizeStrategy("arabic", 3, 3); -TokenizeStrategy.CHINESE = new TokenizeStrategy("chinese", 1, 2); +TokenizeStrategy.DEFAULT = new _TokenizeStrategy("default", 3, 5); +TokenizeStrategy.ENGLISH_ONLY = new _TokenizeStrategy("english-only", 3, 5); +TokenizeStrategy.JAPANESE = new _TokenizeStrategy("japanese", 2, 2); +TokenizeStrategy.ARABIC = new _TokenizeStrategy("arabic", 3, 3); +TokenizeStrategy.CHINESE = new _TokenizeStrategy("chinese", 1, 2); -class AppHelper { - constructor(app) { - this.unsafeApp = app; +// src/app-helper.ts +var import_obsidian = require("obsidian"); +var AppHelper = class { + constructor(app) { + this.unsafeApp = app; + } + equalsAsEditorPostion(one, other) { + return one.line === other.line && one.ch === other.ch; + } + getAliases(file) { + var _a, _b; + return (_b = (0, import_obsidian.parseFrontMatterAliases)( + (_a = this.unsafeApp.metadataCache.getFileCache(file)) == null ? void 0 : _a.frontmatter + )) != null ? _b : []; + } + getFrontMatter(file) { + var _a, _b, _c, _d; + const frontMatter = (_a = this.unsafeApp.metadataCache.getFileCache(file)) == null ? void 0 : _a.frontmatter; + if (!frontMatter) { + return void 0; } - equalsAsEditorPostion(one, other) { - return one.line === other.line && one.ch === other.ch; + const tags = (_c = (_b = (0, import_obsidian.parseFrontMatterTags)(frontMatter)) == null ? void 0 : _b.map((x) => x.slice(1))) != null ? _c : []; + const aliases = (_d = (0, import_obsidian.parseFrontMatterAliases)(frontMatter)) != null ? _d : []; + const { position, ...rest } = frontMatter; + return { + ...Object.fromEntries( + Object.entries(rest).map(([k, _v]) => [ + k, + (0, import_obsidian.parseFrontMatterStringArray)(frontMatter, k) + ]) + ), + tags, + tag: tags, + aliases, + alias: aliases + }; + } + getMarkdownViewInActiveLeaf() { + if (!this.unsafeApp.workspace.getActiveViewOfType(import_obsidian.MarkdownView)) { + return null; } - getAliases(file) { - var _a, _b; - return ((_b = obsidian.parseFrontMatterAliases((_a = this.unsafeApp.metadataCache.getFileCache(file)) === null || _a === void 0 ? void 0 : _a.frontmatter)) !== null && _b !== void 0 ? _b : []); + return this.unsafeApp.workspace.activeLeaf.view; + } + getActiveFile() { + return this.unsafeApp.workspace.getActiveFile(); + } + isActiveFile(file) { + var _a; + return ((_a = this.getActiveFile()) == null ? void 0 : _a.path) === file.path; + } + getPreviousFile() { + var _a; + const fName = (_a = this.unsafeApp.workspace.getLastOpenFiles()) == null ? void 0 : _a[1]; + if (!fName) { + return null; } - getFrontMatter(file) { - var _a, _b, _c, _d; - const frontMatter = (_a = this.unsafeApp.metadataCache.getFileCache(file)) === null || _a === void 0 ? void 0 : _a.frontmatter; - if (!frontMatter) { - return undefined; - } - // remove # - const tags = (_c = (_b = obsidian.parseFrontMatterTags(frontMatter)) === null || _b === void 0 ? void 0 : _b.map((x) => x.slice(1))) !== null && _c !== void 0 ? _c : []; - const aliases = (_d = obsidian.parseFrontMatterAliases(frontMatter)) !== null && _d !== void 0 ? _d : []; - const rest = __rest(frontMatter, ["position"]); - return Object.assign(Object.assign({}, Object.fromEntries(Object.entries(rest).map(([k, _v]) => [ - k, - obsidian.parseFrontMatterStringArray(frontMatter, k), - ]))), { tags, tag: tags, aliases, alias: aliases }); + return this.getMarkdownFileByPath(fName); + } + getCurrentDirname() { + var _a, _b; + return (_b = (_a = this.getActiveFile()) == null ? void 0 : _a.parent.path) != null ? _b : null; + } + getCurrentEditor() { + var _a, _b; + return (_b = (_a = this.getMarkdownViewInActiveLeaf()) == null ? void 0 : _a.editor) != null ? _b : null; + } + getSelection() { + var _a; + return (_a = this.getCurrentEditor()) == null ? void 0 : _a.getSelection(); + } + getCurrentOffset(editor) { + return editor.posToOffset(editor.getCursor()); + } + getCurrentLine(editor) { + return editor.getLine(editor.getCursor().line); + } + getCurrentLineUntilCursor(editor) { + return this.getCurrentLine(editor).slice(0, editor.getCursor().ch); + } + optimizeMarkdownLinkText(linkText) { + const activeFile = this.getActiveFile(); + if (!activeFile) { + return null; } - getMarkdownViewInActiveLeaf() { - if (!this.unsafeApp.workspace.getActiveViewOfType(obsidian.MarkdownView)) { - return null; - } - return this.unsafeApp.workspace.activeLeaf.view; + const path = this.linkText2Path(linkText); + if (!path) { + return linkText; } - getActiveFile() { - return this.unsafeApp.workspace.getActiveFile(); + const file = this.getMarkdownFileByPath(path); + if (!file) { + return null; } - isActiveFile(file) { - var _a; - return ((_a = this.getActiveFile()) === null || _a === void 0 ? void 0 : _a.path) === file.path; + const markdownLink = this.unsafeApp.fileManager.generateMarkdownLink( + file, + activeFile.path + ); + return markdownLink.startsWith("[[") ? markdownLink.replace("[[", "").replace("]]", "") : markdownLink.replace("[", "").replace(/\]\(.+\)/g, ""); + } + linkText2Path(linkText) { + var _a, _b; + const activeFile = this.getActiveFile(); + if (!activeFile) { + return null; } - getPreviousFile() { - var _a; - const fName = (_a = this.unsafeApp.workspace.getLastOpenFiles()) === null || _a === void 0 ? void 0 : _a[1]; - if (!fName) { - return null; - } - return this.getMarkdownFileByPath(fName); + return (_b = (_a = this.unsafeApp.metadataCache.getFirstLinkpathDest( + linkText, + activeFile.path + )) == null ? void 0 : _a.path) != null ? _b : null; + } + searchPhantomLinks() { + return Object.entries(this.unsafeApp.metadataCache.unresolvedLinks).flatMap( + ([path, obj]) => Object.keys(obj).map((link) => ({ path, link })) + ); + } + getMarkdownFileByPath(path) { + if (!path.endsWith(".md")) { + return null; } - getCurrentDirname() { - var _a, _b; - return (_b = (_a = this.getActiveFile()) === null || _a === void 0 ? void 0 : _a.parent.path) !== null && _b !== void 0 ? _b : null; + const abstractFile = this.unsafeApp.vault.getAbstractFileByPath(path); + if (!abstractFile) { + return null; } - getCurrentEditor() { - var _a, _b; - return (_b = (_a = this.getMarkdownViewInActiveLeaf()) === null || _a === void 0 ? void 0 : _a.editor) !== null && _b !== void 0 ? _b : null; + return abstractFile; + } + openMarkdownFile(file, newLeaf, offset = 0) { + var _a; + const leaf = this.unsafeApp.workspace.getLeaf(newLeaf); + leaf.openFile(file, (_a = this.unsafeApp.workspace.activeLeaf) == null ? void 0 : _a.getViewState()).then(() => { + this.unsafeApp.workspace.setActiveLeaf(leaf, true, true); + const viewOfType = this.unsafeApp.workspace.getActiveViewOfType(import_obsidian.MarkdownView); + if (viewOfType) { + const editor = viewOfType.editor; + const pos = editor.offsetToPos(offset); + editor.setCursor(pos); + editor.scrollIntoView({ from: pos, to: pos }, true); + } + }); + } + getCurrentFrontMatter() { + const editor = this.getCurrentEditor(); + if (!editor) { + return null; } - getSelection() { - var _a; - return (_a = this.getCurrentEditor()) === null || _a === void 0 ? void 0 : _a.getSelection(); + if (!this.getActiveFile()) { + return null; } - getCurrentOffset(editor) { - return editor.posToOffset(editor.getCursor()); + if (editor.getLine(0) !== "---") { + return null; } - getCurrentLine(editor) { - return editor.getLine(editor.getCursor().line); + const endPosition = editor.getValue().indexOf("---", 3); + const currentOffset = this.getCurrentOffset(editor); + if (endPosition !== -1 && currentOffset >= endPosition) { + return null; } - getCurrentLineUntilCursor(editor) { - return this.getCurrentLine(editor).slice(0, editor.getCursor().ch); + const keyLocations = Array.from(editor.getValue().matchAll(/.+:/g)); + if (keyLocations.length === 0) { + return null; } - optimizeMarkdownLinkText(linkText) { - const activeFile = this.getActiveFile(); - if (!activeFile) { - return null; - } - const path = this.linkText2Path(linkText); - if (!path) { - return linkText; - } - const file = this.getMarkdownFileByPath(path); - if (!file) { - return null; - } - const markdownLink = this.unsafeApp.fileManager.generateMarkdownLink(file, activeFile.path); - return markdownLink.startsWith("[[") - ? markdownLink.replace("[[", "").replace("]]", "") - : markdownLink.replace("[", "").replace(/\]\(.+\)/g, ""); + const currentKeyLocation = keyLocations.filter((x) => x.index < currentOffset).last(); + if (!currentKeyLocation) { + return null; } - linkText2Path(linkText) { - var _a, _b; - const activeFile = this.getActiveFile(); - if (!activeFile) { - return null; - } - return ((_b = (_a = this.unsafeApp.metadataCache.getFirstLinkpathDest(linkText, activeFile.path)) === null || _a === void 0 ? void 0 : _a.path) !== null && _b !== void 0 ? _b : null); + return currentKeyLocation[0].split(":")[0]; + } + isIMEOn() { + var _a, _b, _c; + if (!this.unsafeApp.workspace.getActiveViewOfType(import_obsidian.MarkdownView)) { + return false; } - searchPhantomLinks() { - return Object.entries(this.unsafeApp.metadataCache.unresolvedLinks).flatMap(([path, obj]) => Object.keys(obj).map((link) => ({ path, link }))); + const markdownView = this.unsafeApp.workspace.activeLeaf.view; + const cm5or6 = markdownView.editor.cm; + if (((_a = cm5or6 == null ? void 0 : cm5or6.inputState) == null ? void 0 : _a.composing) > 0) { + return true; } - getMarkdownFileByPath(path) { - if (!path.endsWith(".md")) { - return null; - } - const abstractFile = this.unsafeApp.vault.getAbstractFileByPath(path); - if (!abstractFile) { - return null; - } - return abstractFile; - } - openMarkdownFile(file, newLeaf, offset = 0) { - var _a; - const leaf = this.unsafeApp.workspace.getLeaf(newLeaf); - leaf - .openFile(file, (_a = this.unsafeApp.workspace.activeLeaf) === null || _a === void 0 ? void 0 : _a.getViewState()) - .then(() => { - this.unsafeApp.workspace.setActiveLeaf(leaf, true, true); - const viewOfType = this.unsafeApp.workspace.getActiveViewOfType(obsidian.MarkdownView); - if (viewOfType) { - const editor = viewOfType.editor; - const pos = editor.offsetToPos(offset); - editor.setCursor(pos); - editor.scrollIntoView({ from: pos, to: pos }, true); - } - }); - } - getCurrentFrontMatter() { - const editor = this.getCurrentEditor(); - if (!editor) { - return null; - } - if (!this.getActiveFile()) { - return null; - } - if (editor.getLine(0) !== "---") { - return null; - } - const endPosition = editor.getValue().indexOf("---", 3); - const currentOffset = this.getCurrentOffset(editor); - if (endPosition !== -1 && currentOffset >= endPosition) { - return null; - } - const keyLocations = Array.from(editor.getValue().matchAll(/.+:/g)); - if (keyLocations.length === 0) { - return null; - } - const currentKeyLocation = keyLocations - .filter((x) => x.index < currentOffset) - .last(); - if (!currentKeyLocation) { - return null; - } - return currentKeyLocation[0].split(":")[0]; - } - /** - * Unsafe method - */ - isIMEOn() { - var _a, _b, _c; - if (!this.unsafeApp.workspace.getActiveViewOfType(obsidian.MarkdownView)) { - return false; - } - const markdownView = this.unsafeApp.workspace.activeLeaf - .view; - const cm5or6 = markdownView.editor.cm; - // cm6 - if (((_a = cm5or6 === null || cm5or6 === void 0 ? void 0 : cm5or6.inputState) === null || _a === void 0 ? void 0 : _a.composing) > 0) { - return true; - } - // cm5 - return !!((_c = (_b = cm5or6 === null || cm5or6 === void 0 ? void 0 : cm5or6.display) === null || _b === void 0 ? void 0 : _b.input) === null || _c === void 0 ? void 0 : _c.composing); - } - writeLog(log) { - return __awaiter(this, void 0, void 0, function* () { - yield this.unsafeApp.vault.adapter.append(obsidian.normalizePath("log.md"), log); - }); - } - get useWikiLinks() { - return !this.unsafeApp.vault.config.useMarkdownLinks; - } -} + return !!((_c = (_b = cm5or6 == null ? void 0 : cm5or6.display) == null ? void 0 : _b.input) == null ? void 0 : _c.composing); + } + async writeLog(log) { + await this.unsafeApp.vault.adapter.append((0, import_obsidian.normalizePath)("log.md"), log); + } + get useWikiLinks() { + return !this.unsafeApp.vault.config.useMarkdownLinks; + } +}; -const groupBy = (values, toKey) => values.reduce((prev, cur, _1, _2, k = toKey(cur)) => ((prev[k] || (prev[k] = [])).push(cur), prev), {}); +// src/provider/CustomDictionaryWordProvider.ts +var import_obsidian2 = require("obsidian"); + +// src/util/collection-helper.ts +var groupBy = (values, toKey) => values.reduce( + (prev, cur, _1, _2, k = toKey(cur)) => ((prev[k] || (prev[k] = [])).push(cur), prev), + {} +); function uniq(values) { - return [...new Set(values)]; + return [...new Set(values)]; } function uniqBy(values, fn) { - const m = new Map(); - values.forEach((x) => { - const k = fn(x); - if (!m.has(k)) { - m.set(k, x); - } - }); - return Array.from(m.values()); + const m = /* @__PURE__ */ new Map(); + values.forEach((x) => { + const k = fn(x); + if (!m.has(k)) { + m.set(k, x); + } + }); + return Array.from(m.values()); } function uniqWith(arr, fn) { - return arr.filter((element, index) => arr.findIndex((step) => fn(element, step)) === index); + return arr.filter( + (element2, index) => arr.findIndex((step) => fn(element2, step)) === index + ); } function mirrorMap(collection, toValue) { - return collection.reduce((p, c) => (Object.assign(Object.assign({}, p), { [toValue(c)]: toValue(c) })), {}); + return collection.reduce((p, c) => ({ ...p, [toValue(c)]: toValue(c) }), {}); +} +function max(collection, emptyValue) { + const select = (a, b) => a >= b ? a : b; + return collection.reduce(select, emptyValue); } -class WordTypeMeta { - constructor(type, priority, group) { - this.type = type; - this.priority = priority; - this.group = group; - WordTypeMeta._values.push(this); - WordTypeMeta._dict[type] = this; - } - static of(type) { - return WordTypeMeta._dict[type]; - } - static values() { - return WordTypeMeta._values; - } -} +// src/model/Word.ts +var _WordTypeMeta = class { + constructor(type, priority, group) { + this.type = type; + this.priority = priority; + this.group = group; + _WordTypeMeta._values.push(this); + _WordTypeMeta._dict[type] = this; + } + static of(type) { + return _WordTypeMeta._dict[type]; + } + static values() { + return _WordTypeMeta._values; + } +}; +var WordTypeMeta = _WordTypeMeta; WordTypeMeta._values = []; WordTypeMeta._dict = {}; -WordTypeMeta.FRONT_MATTER = new WordTypeMeta("frontMatter", 100, "frontMatter"); -WordTypeMeta.INTERNAL_LINK = new WordTypeMeta("internalLink", 90, "internalLink"); -WordTypeMeta.CUSTOM_DICTIONARY = new WordTypeMeta("customDictionary", 80, "suggestion"); -WordTypeMeta.CURRENT_FILE = new WordTypeMeta("currentFile", 70, "suggestion"); -WordTypeMeta.CURRENT_VAULT = new WordTypeMeta("currentVault", 60, "suggestion"); +WordTypeMeta.FRONT_MATTER = new _WordTypeMeta( + "frontMatter", + 100, + "frontMatter" +); +WordTypeMeta.INTERNAL_LINK = new _WordTypeMeta( + "internalLink", + 90, + "internalLink" +); +WordTypeMeta.CUSTOM_DICTIONARY = new _WordTypeMeta( + "customDictionary", + 80, + "suggestion" +); +WordTypeMeta.CURRENT_FILE = new _WordTypeMeta( + "currentFile", + 70, + "suggestion" +); +WordTypeMeta.CURRENT_VAULT = new _WordTypeMeta( + "currentVault", + 60, + "suggestion" +); +// src/provider/suggester.ts +function suggestionUniqPredicate(a, b) { + if (a.value !== b.value) { + return false; + } + if (WordTypeMeta.of(a.type).group !== WordTypeMeta.of(b.type).group) { + return false; + } + if (a.type === "internalLink" && !a.phantom && a.createdPath !== b.createdPath) { + return false; + } + return true; +} function pushWord(wordsByFirstLetter, key, word) { - if (wordsByFirstLetter[key] === undefined) { - wordsByFirstLetter[key] = [word]; - return; - } - wordsByFirstLetter[key].push(word); + if (wordsByFirstLetter[key] === void 0) { + wordsByFirstLetter[key] = [word]; + return; + } + wordsByFirstLetter[key].push(word); } -// Public for tests function judge(word, query, queryStartWithUpper) { - var _a; - if (query === "") { - return { - word: Object.assign(Object.assign({}, word), { hit: word.value }), - value: word.value, - alias: false, - }; - } - if (lowerStartsWith(word.value, query)) { - if (queryStartWithUpper && - word.type !== "internalLink" && - word.type !== "frontMatter") { - const c = capitalizeFirstLetter(word.value); - return { - word: Object.assign(Object.assign({}, word), { value: c, hit: c }), - value: c, - alias: false, - }; - } - else { - return { - word: Object.assign(Object.assign({}, word), { hit: word.value }), - value: word.value, - alias: false, - }; - } - } - const matchedAlias = (_a = word.aliases) === null || _a === void 0 ? void 0 : _a.find((a) => lowerStartsWith(a, query)); - if (matchedAlias) { - return { - word: Object.assign(Object.assign({}, word), { hit: matchedAlias }), - value: matchedAlias, - alias: true, - }; - } + var _a; + if (query === "") { return { - word, - alias: false, + word: { + ...word, + hit: word.value + }, + value: word.value, + alias: false }; -} -function suggestWords(indexedWords, query, max, option = {}) { - var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r; - const { frontMatter, selectionHistoryStorage } = option; - const queryStartWithUpper = capitalizeFirstLetter(query) === query; - const flattenFrontMatterWords = () => { - var _a, _b; - if (frontMatter === "alias" || frontMatter === "aliases") { - return []; - } - if (frontMatter && ((_a = indexedWords.frontMatter) === null || _a === void 0 ? void 0 : _a[frontMatter])) { - return Object.values((_b = indexedWords.frontMatter) === null || _b === void 0 ? void 0 : _b[frontMatter]).flat(); - } - return []; + } + if (lowerStartsWith(word.value, query)) { + if (queryStartWithUpper && word.type !== "internalLink" && word.type !== "frontMatter") { + const c = capitalizeFirstLetter(word.value); + return { + word: { + ...word, + value: c, + hit: c + }, + value: c, + alias: false + }; + } else { + return { + word: { + ...word, + hit: word.value + }, + value: word.value, + alias: false + }; + } + } + const matchedAlias = (_a = word.aliases) == null ? void 0 : _a.find((a) => lowerStartsWith(a, query)); + if (matchedAlias) { + return { + word: { + ...word, + hit: matchedAlias + }, + value: matchedAlias, + alias: true }; - const words = queryStartWithUpper - ? frontMatter - ? flattenFrontMatterWords() - : [ - ...((_a = indexedWords.currentFile[query.charAt(0)]) !== null && _a !== void 0 ? _a : []), - ...((_b = indexedWords.currentFile[query.charAt(0).toLowerCase()]) !== null && _b !== void 0 ? _b : []), - ...((_c = indexedWords.currentVault[query.charAt(0)]) !== null && _c !== void 0 ? _c : []), - ...((_d = indexedWords.currentVault[query.charAt(0).toLowerCase()]) !== null && _d !== void 0 ? _d : []), - ...((_e = indexedWords.customDictionary[query.charAt(0)]) !== null && _e !== void 0 ? _e : []), - ...((_f = indexedWords.customDictionary[query.charAt(0).toLowerCase()]) !== null && _f !== void 0 ? _f : []), - ...((_g = indexedWords.internalLink[query.charAt(0)]) !== null && _g !== void 0 ? _g : []), - ...((_h = indexedWords.internalLink[query.charAt(0).toLowerCase()]) !== null && _h !== void 0 ? _h : []), - ] - : frontMatter - ? flattenFrontMatterWords() - : [ - ...((_j = indexedWords.currentFile[query.charAt(0)]) !== null && _j !== void 0 ? _j : []), - ...((_k = indexedWords.currentFile[query.charAt(0).toUpperCase()]) !== null && _k !== void 0 ? _k : []), - ...((_l = indexedWords.currentVault[query.charAt(0)]) !== null && _l !== void 0 ? _l : []), - ...((_m = indexedWords.currentVault[query.charAt(0).toUpperCase()]) !== null && _m !== void 0 ? _m : []), - ...((_o = indexedWords.customDictionary[query.charAt(0)]) !== null && _o !== void 0 ? _o : []), - ...((_p = indexedWords.customDictionary[query.charAt(0).toUpperCase()]) !== null && _p !== void 0 ? _p : []), - ...((_q = indexedWords.internalLink[query.charAt(0)]) !== null && _q !== void 0 ? _q : []), - ...((_r = indexedWords.internalLink[query.charAt(0).toUpperCase()]) !== null && _r !== void 0 ? _r : []), - ]; - const candidate = Array.from(words) - .map((x) => judge(x, query, queryStartWithUpper)) - .filter((x) => x.value !== undefined) - .sort((a, b) => { - const aWord = a.word; - const bWord = b.word; - const notSameWordType = aWord.type !== bWord.type; - if (frontMatter && notSameWordType) { - return bWord.type === "frontMatter" ? 1 : -1; - } - if (selectionHistoryStorage) { - const ret = selectionHistoryStorage.compare(aWord, bWord); - if (ret !== 0) { - return ret; - } - } - if (a.value.length !== b.value.length) { - return a.value.length > b.value.length ? 1 : -1; - } - if (notSameWordType) { - return WordTypeMeta.of(bWord.type).priority > - WordTypeMeta.of(aWord.type).priority - ? 1 - : -1; - } - if (a.alias !== b.alias) { - return a.alias ? 1 : -1; - } - return 0; - }) - .map((x) => x.word) - .slice(0, max); - // XXX: There is no guarantee that equals with max, but it is important for performance - return uniqWith(candidate, (a, b) => a.value === b.value && - WordTypeMeta.of(a.type).group === WordTypeMeta.of(b.type).group); + } + return { + word, + alias: false + }; +} +function suggestWords(indexedWords, query, maxNum, option = {}) { + var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p; + const { frontMatter, selectionHistoryStorage } = option; + const queryStartWithUpper = capitalizeFirstLetter(query) === query; + const flattenFrontMatterWords = () => { + var _a2, _b2; + if (frontMatter === "alias" || frontMatter === "aliases") { + return []; + } + if (frontMatter && ((_a2 = indexedWords.frontMatter) == null ? void 0 : _a2[frontMatter])) { + return Object.values((_b2 = indexedWords.frontMatter) == null ? void 0 : _b2[frontMatter]).flat(); + } + return []; + }; + const words = queryStartWithUpper ? frontMatter ? flattenFrontMatterWords() : [ + ...(_a = indexedWords.currentFile[query.charAt(0)]) != null ? _a : [], + ...(_b = indexedWords.currentFile[query.charAt(0).toLowerCase()]) != null ? _b : [], + ...(_c = indexedWords.currentVault[query.charAt(0)]) != null ? _c : [], + ...(_d = indexedWords.currentVault[query.charAt(0).toLowerCase()]) != null ? _d : [], + ...(_e = indexedWords.customDictionary[query.charAt(0)]) != null ? _e : [], + ...(_f = indexedWords.customDictionary[query.charAt(0).toLowerCase()]) != null ? _f : [], + ...(_g = indexedWords.internalLink[query.charAt(0)]) != null ? _g : [], + ...(_h = indexedWords.internalLink[query.charAt(0).toLowerCase()]) != null ? _h : [] + ] : frontMatter ? flattenFrontMatterWords() : [ + ...(_i = indexedWords.currentFile[query.charAt(0)]) != null ? _i : [], + ...(_j = indexedWords.currentFile[query.charAt(0).toUpperCase()]) != null ? _j : [], + ...(_k = indexedWords.currentVault[query.charAt(0)]) != null ? _k : [], + ...(_l = indexedWords.currentVault[query.charAt(0).toUpperCase()]) != null ? _l : [], + ...(_m = indexedWords.customDictionary[query.charAt(0)]) != null ? _m : [], + ...(_n = indexedWords.customDictionary[query.charAt(0).toUpperCase()]) != null ? _n : [], + ...(_o = indexedWords.internalLink[query.charAt(0)]) != null ? _o : [], + ...(_p = indexedWords.internalLink[query.charAt(0).toUpperCase()]) != null ? _p : [] + ]; + const filteredJudgement = Array.from(words).map((x) => judge(x, query, queryStartWithUpper)).filter((x) => x.value !== void 0); + const latestUpdated = max( + filteredJudgement.map( + (x) => { + var _a2, _b2; + return (_b2 = (_a2 = selectionHistoryStorage == null ? void 0 : selectionHistoryStorage.getSelectionHistory(x.word)) == null ? void 0 : _a2.lastUpdated) != null ? _b2 : 0; + } + ), + 0 + ); + const candidate = filteredJudgement.sort((a, b) => { + const aWord = a.word; + const bWord = b.word; + const notSameWordType = aWord.type !== bWord.type; + if (frontMatter && notSameWordType) { + return bWord.type === "frontMatter" ? 1 : -1; + } + if (selectionHistoryStorage) { + const ret = selectionHistoryStorage.compare( + aWord, + bWord, + latestUpdated + ); + if (ret !== 0) { + return ret; + } + } + if (a.value.length !== b.value.length) { + return a.value.length > b.value.length ? 1 : -1; + } + if (notSameWordType) { + return WordTypeMeta.of(bWord.type).priority > WordTypeMeta.of(aWord.type).priority ? 1 : -1; + } + if (a.alias !== b.alias) { + return a.alias ? 1 : -1; + } + return 0; + }).map((x) => x.word).slice(0, maxNum); + return uniqWith(candidate, suggestionUniqPredicate); } -// TODO: refactoring -// Public for tests function judgeByPartialMatch(word, query, queryStartWithUpper) { - var _a, _b; - if (query === "") { - return { - word: Object.assign(Object.assign({}, word), { hit: word.value }), - value: word.value, - alias: false, - }; - } - if (lowerStartsWith(word.value, query)) { - if (queryStartWithUpper && - word.type !== "internalLink" && - word.type !== "frontMatter") { - const c = capitalizeFirstLetter(word.value); - return { word: Object.assign(Object.assign({}, word), { value: c, hit: c }), value: c, alias: false }; - } - else { - return { - word: Object.assign(Object.assign({}, word), { hit: word.value }), - value: word.value, - alias: false, - }; - } - } - const matchedAliasStarts = (_a = word.aliases) === null || _a === void 0 ? void 0 : _a.find((a) => lowerStartsWith(a, query)); - if (matchedAliasStarts) { - return { - word: Object.assign(Object.assign({}, word), { hit: matchedAliasStarts }), - value: matchedAliasStarts, - alias: true, - }; - } - if (lowerIncludes(word.value, query)) { - return { - word: Object.assign(Object.assign({}, word), { hit: word.value }), - value: word.value, - alias: false, - }; - } - const matchedAliasIncluded = (_b = word.aliases) === null || _b === void 0 ? void 0 : _b.find((a) => lowerIncludes(a, query)); - if (matchedAliasIncluded) { - return { - word: Object.assign(Object.assign({}, word), { hit: matchedAliasIncluded }), - value: matchedAliasIncluded, - alias: true, - }; - } - return { word: word, alias: false }; -} -function suggestWordsByPartialMatch(indexedWords, query, max, option = {}) { - const { frontMatter, selectionHistoryStorage } = option; - const queryStartWithUpper = capitalizeFirstLetter(query) === query; - const flatObjectValues = (object) => Object.values(object).flat(); - const flattenFrontMatterWords = () => { - var _a, _b; - if (frontMatter === "alias" || frontMatter === "aliases") { - return []; - } - if (frontMatter && ((_a = indexedWords.frontMatter) === null || _a === void 0 ? void 0 : _a[frontMatter])) { - return Object.values((_b = indexedWords.frontMatter) === null || _b === void 0 ? void 0 : _b[frontMatter]).flat(); - } - return []; + var _a, _b; + if (query === "") { + return { + word: { ...word, hit: word.value }, + value: word.value, + alias: false }; - const words = frontMatter - ? flattenFrontMatterWords() - : [ - ...flatObjectValues(indexedWords.currentFile), - ...flatObjectValues(indexedWords.currentVault), - ...flatObjectValues(indexedWords.customDictionary), - ...flatObjectValues(indexedWords.internalLink), - ]; - const candidate = Array.from(words) - .map((x) => judgeByPartialMatch(x, query, queryStartWithUpper)) - .filter((x) => x.value !== undefined) - .sort((a, b) => { - const aWord = a.word; - const bWord = b.word; - const notSameWordType = aWord.type !== bWord.type; - if (frontMatter && notSameWordType) { - return bWord.type === "frontMatter" ? 1 : -1; - } - if (selectionHistoryStorage) { - const ret = selectionHistoryStorage.compare(aWord, bWord); - if (ret !== 0) { - return ret; - } - } - const as = lowerStartsWith(a.value, query); - const bs = lowerStartsWith(b.value, query); - if (as !== bs) { - return bs ? 1 : -1; - } - if (a.value.length !== b.value.length) { - return a.value.length > b.value.length ? 1 : -1; - } - if (notSameWordType) { - return WordTypeMeta.of(bWord.type).priority > - WordTypeMeta.of(aWord.type).priority - ? 1 - : -1; - } - if (a.alias !== b.alias) { - return a.alias ? 1 : -1; - } - return 0; - }) - .map((x) => x.word) - .slice(0, max); - // XXX: There is no guarantee that equals with max, but it is important for performance - return uniqWith(candidate, (a, b) => a.value === b.value && - WordTypeMeta.of(a.type).group === WordTypeMeta.of(b.type).group); + } + if (lowerStartsWith(word.value, query)) { + if (queryStartWithUpper && word.type !== "internalLink" && word.type !== "frontMatter") { + const c = capitalizeFirstLetter(word.value); + return { word: { ...word, value: c, hit: c }, value: c, alias: false }; + } else { + return { + word: { ...word, hit: word.value }, + value: word.value, + alias: false + }; + } + } + const matchedAliasStarts = (_a = word.aliases) == null ? void 0 : _a.find( + (a) => lowerStartsWith(a, query) + ); + if (matchedAliasStarts) { + return { + word: { ...word, hit: matchedAliasStarts }, + value: matchedAliasStarts, + alias: true + }; + } + if (lowerIncludes(word.value, query)) { + return { + word: { ...word, hit: word.value }, + value: word.value, + alias: false + }; + } + const matchedAliasIncluded = (_b = word.aliases) == null ? void 0 : _b.find( + (a) => lowerIncludes(a, query) + ); + if (matchedAliasIncluded) { + return { + word: { ...word, hit: matchedAliasIncluded }, + value: matchedAliasIncluded, + alias: true + }; + } + return { word, alias: false }; +} +function suggestWordsByPartialMatch(indexedWords, query, maxNum, option = {}) { + const { frontMatter, selectionHistoryStorage } = option; + const queryStartWithUpper = capitalizeFirstLetter(query) === query; + const flatObjectValues = (object) => Object.values(object).flat(); + const flattenFrontMatterWords = () => { + var _a, _b; + if (frontMatter === "alias" || frontMatter === "aliases") { + return []; + } + if (frontMatter && ((_a = indexedWords.frontMatter) == null ? void 0 : _a[frontMatter])) { + return Object.values((_b = indexedWords.frontMatter) == null ? void 0 : _b[frontMatter]).flat(); + } + return []; + }; + const words = frontMatter ? flattenFrontMatterWords() : [ + ...flatObjectValues(indexedWords.currentFile), + ...flatObjectValues(indexedWords.currentVault), + ...flatObjectValues(indexedWords.customDictionary), + ...flatObjectValues(indexedWords.internalLink) + ]; + const filteredJudgement = Array.from(words).map((x) => judgeByPartialMatch(x, query, queryStartWithUpper)).filter((x) => x.value !== void 0); + const latestUpdated = max( + filteredJudgement.map( + (x) => { + var _a, _b; + return (_b = (_a = selectionHistoryStorage == null ? void 0 : selectionHistoryStorage.getSelectionHistory(x.word)) == null ? void 0 : _a.lastUpdated) != null ? _b : 0; + } + ), + 0 + ); + const candidate = filteredJudgement.sort((a, b) => { + const aWord = a.word; + const bWord = b.word; + const notSameWordType = aWord.type !== bWord.type; + if (frontMatter && notSameWordType) { + return bWord.type === "frontMatter" ? 1 : -1; + } + if (selectionHistoryStorage) { + const ret = selectionHistoryStorage.compare( + aWord, + bWord, + latestUpdated + ); + if (ret !== 0) { + return ret; + } + } + const as = lowerStartsWith(a.value, query); + const bs = lowerStartsWith(b.value, query); + if (as !== bs) { + return bs ? 1 : -1; + } + if (a.value.length !== b.value.length) { + return a.value.length > b.value.length ? 1 : -1; + } + if (notSameWordType) { + return WordTypeMeta.of(bWord.type).priority > WordTypeMeta.of(aWord.type).priority ? 1 : -1; + } + if (a.alias !== b.alias) { + return a.alias ? 1 : -1; + } + return 0; + }).map((x) => x.word).slice(0, maxNum); + return uniqWith(candidate, suggestionUniqPredicate); } +// src/util/path.ts function basename(path, ext) { - var _a, _b; - const name = (_b = (_a = path.match(/.+[\\/]([^\\/]+)[\\/]?$/)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : path; - return ext && name.endsWith(ext) ? name.replace(ext, "") : name; + var _a, _b; + const name = (_b = (_a = path.match(/.+[\\/]([^\\/]+)[\\/]?$/)) == null ? void 0 : _a[1]) != null ? _b : path; + return ext && name.endsWith(ext) ? name.replace(ext, "") : name; } function dirname(path) { - var _a, _b; - return (_b = (_a = path.match(/(.+)[\\/].+$/)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : "."; + var _a, _b; + return (_b = (_a = path.match(/(.+)[\\/].+$/)) == null ? void 0 : _a[1]) != null ? _b : "."; } function isURL(path) { - return Boolean(path.match(new RegExp("^https?://"))); + return Boolean(path.match(new RegExp("^https?://"))); } +// src/provider/CustomDictionaryWordProvider.ts function escape(value) { - // This tricky logics for Safari - // https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/issues/56 - return value - .replace(/\\/g, "__VariousComplementsEscape__") - .replace(/\n/g, "\\n") - .replace(/\t/g, "\\t") - .replace(/__VariousComplementsEscape__/g, "\\\\"); + return value.replace(/\\/g, "__VariousComplementsEscape__").replace(/\n/g, "\\n").replace(/\t/g, "\\t").replace(/__VariousComplementsEscape__/g, "\\\\"); } function unescape(value) { - // This tricky logics for Safari - // https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/issues/56 - return value - .replace(/\\\\/g, "__VariousComplementsEscape__") - .replace(/\\n/g, "\n") - .replace(/\\t/g, "\t") - .replace(/__VariousComplementsEscape__/g, "\\"); + return value.replace(/\\\\/g, "__VariousComplementsEscape__").replace(/\\n/g, "\n").replace(/\\t/g, " ").replace(/__VariousComplementsEscape__/g, "\\"); } function jsonToWords(json, path, systemCaretSymbol) { - return json.words.map((x) => { - var _a; - return ({ - value: x.displayed || x.value, - description: x.description, - aliases: x.aliases, - type: "customDictionary", - createdPath: path, - insertedText: x.displayed ? x.value : undefined, - caretSymbol: (_a = json.caretSymbol) !== null && _a !== void 0 ? _a : systemCaretSymbol, - ignoreSpaceAfterCompletion: json.ignoreSpaceAfterCompletion, - }); - }); + return json.words.map((x) => { + var _a; + return { + value: x.displayed || x.value, + description: x.description, + aliases: x.aliases, + type: "customDictionary", + createdPath: path, + insertedText: x.displayed ? x.value : void 0, + caretSymbol: (_a = json.caretSymbol) != null ? _a : systemCaretSymbol, + ignoreSpaceAfterCompletion: json.ignoreSpaceAfterCompletion + }; + }); } function lineToWord(line, delimiter, path, delimiterForDisplay, delimiterForHide, systemCaretSymbol) { - const [v, description, ...aliases] = line.split(delimiter.value); - let value = unescape(v); - let insertedText; - let displayedText = value; - if (delimiterForDisplay && value.includes(delimiterForDisplay)) { - [displayedText, insertedText] = value.split(delimiterForDisplay); - } - if (delimiterForHide && value.includes(delimiterForHide)) { - insertedText = value.replace(delimiterForHide, ""); - displayedText = `${value.split(delimiterForHide)[0]} ...`; - } - return { - value: displayedText, - description, - aliases, - type: "customDictionary", - createdPath: path, - insertedText, - caretSymbol: systemCaretSymbol, - }; + const [v, description, ...aliases] = line.split(delimiter.value); + let value = unescape(v); + let insertedText; + let displayedText = value; + if (delimiterForDisplay && value.includes(delimiterForDisplay)) { + [displayedText, insertedText] = value.split(delimiterForDisplay); + } + if (delimiterForHide && value.includes(delimiterForHide)) { + insertedText = value.replace(delimiterForHide, ""); + displayedText = `${value.split(delimiterForHide)[0]} ...`; + } + return { + value: displayedText, + description, + aliases, + type: "customDictionary", + createdPath: path, + insertedText, + caretSymbol: systemCaretSymbol + }; } function wordToLine(word, delimiter, dividerForDisplay) { - const value = word.insertedText && dividerForDisplay - ? `${word.value}${dividerForDisplay}${word.insertedText}` - : word.value; - const escapedValue = escape(value); - if (!word.description && !word.aliases) { - return escapedValue; - } - if (!word.aliases) { - return [escapedValue, word.description].join(delimiter.value); - } - return [escapedValue, word.description, ...word.aliases].join(delimiter.value); + const value = word.insertedText && dividerForDisplay ? `${word.value}${dividerForDisplay}${word.insertedText}` : word.value; + const escapedValue = escape(value); + if (!word.description && !word.aliases) { + return escapedValue; + } + if (!word.aliases) { + return [escapedValue, word.description].join(delimiter.value); + } + return [escapedValue, word.description, ...word.aliases].join( + delimiter.value + ); } -function synonymAliases$1(name) { - const lessEmojiValue = excludeEmoji(name); - return name === lessEmojiValue ? [] : [lessEmojiValue]; -} -class CustomDictionaryWordProvider { - constructor(app, appHelper) { - this.words = []; - this.wordByValue = {}; - this.wordsByFirstLetter = {}; - this.appHelper = appHelper; - this.fileSystemAdapter = app.vault.adapter; - } - get editablePaths() { - return this.paths.filter((x) => !isURL(x) && !x.endsWith(".json")); - } - loadWords(path, option) { - return __awaiter(this, void 0, void 0, function* () { - const contents = isURL(path) - ? yield obsidian.request({ url: path }) - : yield this.fileSystemAdapter.read(path); - const words = path.endsWith(".json") - ? jsonToWords(JSON.parse(contents), path, option.caretSymbol) - : contents - .split(/\r\n|\n/) - .map((x) => x.replace(/%%.*%%/g, "")) - .filter((x) => x) - .map((x) => lineToWord(x, this.delimiter, path, option.delimiterForDisplay, option.delimiterForHide, option.caretSymbol)); - return words.filter((x) => !option.regexp || x.value.match(new RegExp(option.regexp))); - }); - } - refreshCustomWords(option) { - return __awaiter(this, void 0, void 0, function* () { - this.clearWords(); - for (const path of this.paths) { - try { - const words = yield this.loadWords(path, option); - words.forEach((x) => this.addWord(x)); - } - catch (e) { - // noinspection ObjectAllocationIgnored - new obsidian.Notice(`⚠ Fail to load ${path} -- Various Complements Plugin -- \n ${e}`, 0); - } - } - }); - } - addWordWithDictionary(word, dictionaryPath) { - return __awaiter(this, void 0, void 0, function* () { - this.addWord(word); - yield this.fileSystemAdapter.append(dictionaryPath, "\n" + wordToLine(word, this.delimiter, this.dividerForDisplay)); - }); - } - addWord(word) { - var _a, _b; - this.words.push(word); - // Add aliases as a synonym - const wordWithSynonym = Object.assign(Object.assign({}, word), { aliases: [...((_a = word.aliases) !== null && _a !== void 0 ? _a : []), ...synonymAliases$1(word.value)] }); - this.wordByValue[wordWithSynonym.value] = wordWithSynonym; - pushWord(this.wordsByFirstLetter, wordWithSynonym.value.charAt(0), wordWithSynonym); - (_b = wordWithSynonym.aliases) === null || _b === void 0 ? void 0 : _b.forEach((a) => pushWord(this.wordsByFirstLetter, a.charAt(0), wordWithSynonym)); - } - clearWords() { - this.words = []; - this.wordByValue = {}; - this.wordsByFirstLetter = {}; - } - get wordCount() { - return this.words.length; - } - setSettings(paths, delimiter, dividerForDisplay) { - this.paths = paths; - this.delimiter = delimiter; - this.dividerForDisplay = dividerForDisplay; - } -} - -class CurrentFileWordProvider { - constructor(app, appHelper) { - this.app = app; - this.appHelper = appHelper; - this.wordsByFirstLetter = {}; - this.words = []; - } - refreshWords(onlyEnglish, minNumberOfCharacters) { - return __awaiter(this, void 0, void 0, function* () { - this.clearWords(); - const editor = this.appHelper.getCurrentEditor(); - if (!editor) { - return; - } - const file = this.app.workspace.getActiveFile(); - if (!file) { - return; - } - const currentToken = this.tokenizer - .tokenize(editor.getLine(editor.getCursor().line).slice(0, editor.getCursor().ch)) - .last(); - const content = yield this.app.vault.cachedRead(file); - const tokens = this.tokenizer - .tokenize(content) - .filter((x) => { - if (x.length < minNumberOfCharacters) { - return false; - } - if (this.tokenizer.shouldIgnoreOnCurrent(x)) { - return false; - } - return onlyEnglish ? allAlphabets(x) : true; - }) - .map((x) => (startsSmallLetterOnlyFirst(x) ? x.toLowerCase() : x)); - this.words = uniq(tokens) - .filter((x) => x !== currentToken) - .map((x) => ({ - value: x, - type: "currentFile", - createdPath: file.path, - })); - this.wordsByFirstLetter = groupBy(this.words, (x) => x.value.charAt(0)); - }); - } - clearWords() { - this.words = []; - this.wordsByFirstLetter = {}; - } - get wordCount() { - return this.words.length; - } - setSettings(tokenizer) { - this.tokenizer = tokenizer; - } -} - -class InternalLinkWordProvider { - constructor(app, appHelper) { - this.app = app; - this.appHelper = appHelper; - this.words = []; - this.wordsByFirstLetter = {}; - } - refreshWords(wordAsInternalLinkAlias, excludePathPrefixPatterns) { - var _a; - this.clearWords(); - const synonymAliases = (name) => { - const lessEmojiValue = excludeEmoji(name); - return name === lessEmojiValue ? [] : [lessEmojiValue]; - }; - const resolvedInternalLinkWords = this.app.vault - .getMarkdownFiles() - .filter((f) => excludePathPrefixPatterns.every((x) => !f.path.startsWith(x))) - .flatMap((x) => { - const aliases = this.appHelper.getAliases(x); - if (wordAsInternalLinkAlias) { - return [ - { - value: x.basename, - type: "internalLink", - createdPath: x.path, - aliases: synonymAliases(x.basename), - description: x.path, - }, - ...aliases.map((a) => ({ - value: a, - type: "internalLink", - createdPath: x.path, - aliases: synonymAliases(a), - description: x.path, - aliasMeta: { - origin: x.basename, - }, - })), - ]; - } - else { - return [ - { - value: x.basename, - type: "internalLink", - createdPath: x.path, - aliases: [ - ...synonymAliases(x.basename), - ...aliases, - ...aliases.flatMap(synonymAliases), - ], - description: x.path, - }, - ]; - } - }); - const unresolvedInternalLinkWords = this.appHelper - .searchPhantomLinks() - .map(({ path, link }) => { - return { - value: link, - type: "internalLink", - createdPath: path, - aliases: synonymAliases(link), - description: `Appeared in -> ${path}`, - phantom: true, - }; - }); - this.words = [...resolvedInternalLinkWords, ...unresolvedInternalLinkWords]; - for (const word of this.words) { - pushWord(this.wordsByFirstLetter, word.value.charAt(0), word); - (_a = word.aliases) === null || _a === void 0 ? void 0 : _a.forEach((a) => pushWord(this.wordsByFirstLetter, a.charAt(0), word)); - } - } - clearWords() { - this.words = []; - this.wordsByFirstLetter = {}; - } - get wordCount() { - return this.words.length; - } -} - -class MatchStrategy { - constructor(name, handler) { - this.name = name; - this.handler = handler; - MatchStrategy._values.push(this); - } - static fromName(name) { - return MatchStrategy._values.find((x) => x.name === name); - } - static values() { - return MatchStrategy._values; - } -} -MatchStrategy._values = []; -MatchStrategy.PREFIX = new MatchStrategy("prefix", suggestWords); -MatchStrategy.PARTIAL = new MatchStrategy("partial", suggestWordsByPartialMatch); - -class CycleThroughSuggestionsKeys { - constructor(name, nextKey, previousKey) { - this.name = name; - this.nextKey = nextKey; - this.previousKey = previousKey; - CycleThroughSuggestionsKeys._values.push(this); - } - static fromName(name) { - return CycleThroughSuggestionsKeys._values.find((x) => x.name === name); - } - static values() { - return CycleThroughSuggestionsKeys._values; - } -} -CycleThroughSuggestionsKeys._values = []; -CycleThroughSuggestionsKeys.NONE = new CycleThroughSuggestionsKeys("None", { modifiers: [], key: null }, { modifiers: [], key: null }); -CycleThroughSuggestionsKeys.TAB = new CycleThroughSuggestionsKeys("Tab, Shift+Tab", { modifiers: [], key: "Tab" }, { modifiers: ["Shift"], key: "Tab" }); -CycleThroughSuggestionsKeys.EMACS = new CycleThroughSuggestionsKeys("Ctrl/Cmd+N, Ctrl/Cmd+P", { modifiers: ["Mod"], key: "N" }, { modifiers: ["Mod"], key: "P" }); -CycleThroughSuggestionsKeys.VIM = new CycleThroughSuggestionsKeys("Ctrl/Cmd+J, Ctrl/Cmd+K", { modifiers: ["Mod"], key: "J" }, { modifiers: ["Mod"], key: "K" }); - -class ColumnDelimiter { - constructor(name, value) { - this.name = name; - this.value = value; - ColumnDelimiter._values.push(this); - } - static fromName(name) { - return ColumnDelimiter._values.find((x) => x.name === name); - } - static values() { - return ColumnDelimiter._values; - } -} -ColumnDelimiter._values = []; -ColumnDelimiter.TAB = new ColumnDelimiter("Tab", "\t"); -ColumnDelimiter.COMMA = new ColumnDelimiter("Comma", ","); -ColumnDelimiter.PIPE = new ColumnDelimiter("Pipe", "|"); - -class SelectSuggestionKey { - constructor(name, keyBind) { - this.name = name; - this.keyBind = keyBind; - SelectSuggestionKey._values.push(this); - } - static fromName(name) { - return SelectSuggestionKey._values.find((x) => x.name === name); - } - static values() { - return SelectSuggestionKey._values; - } -} -SelectSuggestionKey._values = []; -SelectSuggestionKey.ENTER = new SelectSuggestionKey("Enter", { - modifiers: [], - key: "Enter", -}); -SelectSuggestionKey.TAB = new SelectSuggestionKey("Tab", { - modifiers: [], - key: "Tab", -}); -SelectSuggestionKey.MOD_ENTER = new SelectSuggestionKey("Ctrl/Cmd+Enter", { - modifiers: ["Mod"], - key: "Enter", -}); -SelectSuggestionKey.ALT_ENTER = new SelectSuggestionKey("Alt+Enter", { - modifiers: ["Alt"], - key: "Enter", -}); -SelectSuggestionKey.SHIFT_ENTER = new SelectSuggestionKey("Shift+Enter", { - modifiers: ["Shift"], - key: "Enter", -}); -SelectSuggestionKey.SPACE = new SelectSuggestionKey("Space", { - modifiers: [], - key: " ", -}); -SelectSuggestionKey.SHIFT_SPACE = new SelectSuggestionKey("Shift+Space", { - modifiers: ["Shift"], - key: " ", -}); -SelectSuggestionKey.BACKQUOTE = new SelectSuggestionKey("Backquote", { - modifiers: [], - key: "`", -}); -SelectSuggestionKey.None = new SelectSuggestionKey("None", { - modifiers: [], - key: "", -}); - -class CurrentVaultWordProvider { - constructor(app, appHelper) { - this.app = app; - this.appHelper = appHelper; - this.wordsByFirstLetter = {}; - this.words = []; - } - refreshWords(minNumberOfCharacters) { - return __awaiter(this, void 0, void 0, function* () { - this.clearWords(); - const currentDirname = this.appHelper.getCurrentDirname(); - const markdownFilePaths = this.app.vault - .getMarkdownFiles() - .map((x) => x.path) - .filter((p) => this.includePrefixPatterns.every((x) => p.startsWith(x))) - .filter((p) => this.excludePrefixPatterns.every((x) => !p.startsWith(x))) - .filter((p) => !this.onlyUnderCurrentDirectory || dirname(p) === currentDirname); - let wordByValue = {}; - for (const path of markdownFilePaths) { - const content = yield this.app.vault.adapter.read(path); - const tokens = this.tokenizer - .tokenize(content) - .filter((x) => x.length >= minNumberOfCharacters && - !this.tokenizer.shouldIgnoreOnCurrent(x)) - .map((x) => (startsSmallLetterOnlyFirst(x) ? x.toLowerCase() : x)); - for (const token of tokens) { - wordByValue[token] = { - value: token, - type: "currentVault", - createdPath: path, - description: path, - }; - } - } - this.words = Object.values(wordByValue); - this.wordsByFirstLetter = groupBy(this.words, (x) => x.value.charAt(0)); - }); - } - clearWords() { - this.words = []; - this.wordsByFirstLetter = {}; - } - get wordCount() { - return this.words.length; - } - setSettings(tokenizer, includePrefixPatterns, excludePrefixPatterns, onlyUnderCurrentDirectory) { - this.tokenizer = tokenizer; - this.includePrefixPatterns = includePrefixPatterns; - this.excludePrefixPatterns = excludePrefixPatterns; - this.onlyUnderCurrentDirectory = onlyUnderCurrentDirectory; - } -} - -class OpenSourceFileKeys { - constructor(name, keyBind) { - this.name = name; - this.keyBind = keyBind; - OpenSourceFileKeys._values.push(this); - } - static fromName(name) { - return OpenSourceFileKeys._values.find((x) => x.name === name); - } - static values() { - return OpenSourceFileKeys._values; - } -} -OpenSourceFileKeys._values = []; -OpenSourceFileKeys.NONE = new OpenSourceFileKeys("None", { - modifiers: [], - key: null, -}); -OpenSourceFileKeys.MOD_ENTER = new OpenSourceFileKeys("Ctrl/Cmd+Enter", { - modifiers: ["Mod"], - key: "Enter", -}); -OpenSourceFileKeys.ALT_ENTER = new OpenSourceFileKeys("Alt+Enter", { - modifiers: ["Alt"], - key: "Enter", -}); -OpenSourceFileKeys.SHIFT_ENTER = new OpenSourceFileKeys("Shift+Enter", { - modifiers: ["Shift"], - key: "Enter", -}); - -class DescriptionOnSuggestion { - constructor(name, toDisplay) { - this.name = name; - this.toDisplay = toDisplay; - DescriptionOnSuggestion._values.push(this); - } - static fromName(name) { - return DescriptionOnSuggestion._values.find((x) => x.name === name); - } - static values() { - return DescriptionOnSuggestion._values; - } -} -DescriptionOnSuggestion._values = []; -DescriptionOnSuggestion.NONE = new DescriptionOnSuggestion("None", () => null); -DescriptionOnSuggestion.SHORT = new DescriptionOnSuggestion("Short", (word) => { - if (!word.description) { - return null; - } - return word.type === "customDictionary" - ? word.description - : basename(word.description); -}); -DescriptionOnSuggestion.FULL = new DescriptionOnSuggestion("Full", (word) => { var _a; return (_a = word.description) !== null && _a !== void 0 ? _a : null; }); - function synonymAliases(name) { - const lessEmojiValue = excludeEmoji(name); - return name === lessEmojiValue ? [] : [lessEmojiValue]; + const lessEmojiValue = excludeEmoji(name); + return name === lessEmojiValue ? [] : [lessEmojiValue]; +} +var CustomDictionaryWordProvider = class { + constructor(app, appHelper) { + this.words = []; + this.wordByValue = {}; + this.wordsByFirstLetter = {}; + this.appHelper = appHelper; + this.fileSystemAdapter = app.vault.adapter; + } + get editablePaths() { + return this.paths.filter((x) => !isURL(x) && !x.endsWith(".json")); + } + async loadWords(path, option) { + const contents = isURL(path) ? await (0, import_obsidian2.request)({ url: path }) : await this.fileSystemAdapter.read(path); + const words = path.endsWith(".json") ? jsonToWords(JSON.parse(contents), path, option.caretSymbol) : contents.split(/\r\n|\n/).map((x) => x.replace(/%%.*%%/g, "")).filter((x) => x).map( + (x) => lineToWord( + x, + this.delimiter, + path, + option.delimiterForDisplay, + option.delimiterForHide, + option.caretSymbol + ) + ); + return words.filter( + (x) => !option.regexp || x.value.match(new RegExp(option.regexp)) + ); + } + async refreshCustomWords(option) { + this.clearWords(); + for (const path of this.paths) { + try { + const words = await this.loadWords(path, option); + words.forEach((x) => this.addWord(x)); + } catch (e) { + new import_obsidian2.Notice( + `\u26A0 Fail to load ${path} -- Various Complements Plugin -- + ${e}`, + 0 + ); + } + } + } + async addWordWithDictionary(word, dictionaryPath) { + this.addWord(word); + await this.fileSystemAdapter.append( + dictionaryPath, + "\n" + wordToLine(word, this.delimiter, this.dividerForDisplay) + ); + } + addWord(word) { + var _a, _b; + this.words.push(word); + const wordWithSynonym = { + ...word, + aliases: [...(_a = word.aliases) != null ? _a : [], ...synonymAliases(word.value)] + }; + this.wordByValue[wordWithSynonym.value] = wordWithSynonym; + pushWord( + this.wordsByFirstLetter, + wordWithSynonym.value.charAt(0), + wordWithSynonym + ); + (_b = wordWithSynonym.aliases) == null ? void 0 : _b.forEach( + (a) => pushWord(this.wordsByFirstLetter, a.charAt(0), wordWithSynonym) + ); + } + clearWords() { + this.words = []; + this.wordByValue = {}; + this.wordsByFirstLetter = {}; + } + get wordCount() { + return this.words.length; + } + setSettings(paths, delimiter, dividerForDisplay) { + this.paths = paths; + this.delimiter = delimiter; + this.dividerForDisplay = dividerForDisplay; + } +}; + +// src/provider/CurrentFileWordProvider.ts +var CurrentFileWordProvider = class { + constructor(app, appHelper) { + this.app = app; + this.appHelper = appHelper; + this.wordsByFirstLetter = {}; + this.words = []; + } + async refreshWords(onlyEnglish, minNumberOfCharacters) { + this.clearWords(); + const editor = this.appHelper.getCurrentEditor(); + if (!editor) { + return; + } + const file = this.app.workspace.getActiveFile(); + if (!file) { + return; + } + const currentToken = this.tokenizer.tokenize( + editor.getLine(editor.getCursor().line).slice(0, editor.getCursor().ch) + ).last(); + const content = await this.app.vault.cachedRead(file); + const tokens = this.tokenizer.tokenize(content).filter((x) => { + if (x.length < minNumberOfCharacters) { + return false; + } + if (this.tokenizer.shouldIgnoreOnCurrent(x)) { + return false; + } + return onlyEnglish ? allAlphabets(x) : true; + }).map((x) => startsSmallLetterOnlyFirst(x) ? x.toLowerCase() : x); + this.words = uniq(tokens).filter((x) => x !== currentToken).map((x) => ({ + value: x, + type: "currentFile", + createdPath: file.path + })); + this.wordsByFirstLetter = groupBy(this.words, (x) => x.value.charAt(0)); + } + clearWords() { + this.words = []; + this.wordsByFirstLetter = {}; + } + get wordCount() { + return this.words.length; + } + setSettings(tokenizer) { + this.tokenizer = tokenizer; + } +}; + +// src/provider/InternalLinkWordProvider.ts +var InternalLinkWordProvider = class { + constructor(app, appHelper) { + this.app = app; + this.appHelper = appHelper; + this.words = []; + this.wordsByFirstLetter = {}; + } + refreshWords(wordAsInternalLinkAlias, excludePathPrefixPatterns) { + var _a; + this.clearWords(); + const synonymAliases3 = (name) => { + const lessEmojiValue = excludeEmoji(name); + return name === lessEmojiValue ? [] : [lessEmojiValue]; + }; + const resolvedInternalLinkWords = this.app.vault.getMarkdownFiles().filter( + (f) => excludePathPrefixPatterns.every((x) => !f.path.startsWith(x)) + ).flatMap((x) => { + const aliases = this.appHelper.getAliases(x); + if (wordAsInternalLinkAlias) { + return [ + { + value: x.basename, + type: "internalLink", + createdPath: x.path, + aliases: synonymAliases3(x.basename), + description: x.path + }, + ...aliases.map((a) => ({ + value: a, + type: "internalLink", + createdPath: x.path, + aliases: synonymAliases3(a), + description: x.path, + aliasMeta: { + origin: x.path + } + })) + ]; + } else { + return [ + { + value: x.basename, + type: "internalLink", + createdPath: x.path, + aliases: [ + ...synonymAliases3(x.basename), + ...aliases, + ...aliases.flatMap(synonymAliases3) + ], + description: x.path + } + ]; + } + }); + const unresolvedInternalLinkWords = this.appHelper.searchPhantomLinks().map(({ path, link }) => { + return { + value: link, + type: "internalLink", + createdPath: path, + aliases: synonymAliases3(link), + description: `Appeared in -> ${path}`, + phantom: true + }; + }); + this.words = [...resolvedInternalLinkWords, ...unresolvedInternalLinkWords]; + for (const word of this.words) { + pushWord(this.wordsByFirstLetter, word.value.charAt(0), word); + (_a = word.aliases) == null ? void 0 : _a.forEach( + (a) => pushWord(this.wordsByFirstLetter, a.charAt(0), word) + ); + } + } + clearWords() { + this.words = []; + this.wordsByFirstLetter = {}; + } + get wordCount() { + return this.words.length; + } +}; + +// src/provider/MatchStrategy.ts +var _MatchStrategy = class { + constructor(name, handler) { + this.name = name; + this.handler = handler; + _MatchStrategy._values.push(this); + } + static fromName(name) { + return _MatchStrategy._values.find((x) => x.name === name); + } + static values() { + return _MatchStrategy._values; + } +}; +var MatchStrategy = _MatchStrategy; +MatchStrategy._values = []; +MatchStrategy.PREFIX = new _MatchStrategy("prefix", suggestWords); +MatchStrategy.PARTIAL = new _MatchStrategy( + "partial", + suggestWordsByPartialMatch +); + +// src/option/CycleThroughSuggestionsKeys.ts +var _CycleThroughSuggestionsKeys = class { + constructor(name, nextKey, previousKey) { + this.name = name; + this.nextKey = nextKey; + this.previousKey = previousKey; + _CycleThroughSuggestionsKeys._values.push(this); + } + static fromName(name) { + return _CycleThroughSuggestionsKeys._values.find((x) => x.name === name); + } + static values() { + return _CycleThroughSuggestionsKeys._values; + } +}; +var CycleThroughSuggestionsKeys = _CycleThroughSuggestionsKeys; +CycleThroughSuggestionsKeys._values = []; +CycleThroughSuggestionsKeys.NONE = new _CycleThroughSuggestionsKeys( + "None", + { modifiers: [], key: null }, + { modifiers: [], key: null } +); +CycleThroughSuggestionsKeys.TAB = new _CycleThroughSuggestionsKeys( + "Tab, Shift+Tab", + { modifiers: [], key: "Tab" }, + { modifiers: ["Shift"], key: "Tab" } +); +CycleThroughSuggestionsKeys.EMACS = new _CycleThroughSuggestionsKeys( + "Ctrl/Cmd+N, Ctrl/Cmd+P", + { modifiers: ["Mod"], key: "N" }, + { modifiers: ["Mod"], key: "P" } +); +CycleThroughSuggestionsKeys.VIM = new _CycleThroughSuggestionsKeys( + "Ctrl/Cmd+J, Ctrl/Cmd+K", + { modifiers: ["Mod"], key: "J" }, + { modifiers: ["Mod"], key: "K" } +); + +// src/option/ColumnDelimiter.ts +var _ColumnDelimiter = class { + constructor(name, value) { + this.name = name; + this.value = value; + _ColumnDelimiter._values.push(this); + } + static fromName(name) { + return _ColumnDelimiter._values.find((x) => x.name === name); + } + static values() { + return _ColumnDelimiter._values; + } +}; +var ColumnDelimiter = _ColumnDelimiter; +ColumnDelimiter._values = []; +ColumnDelimiter.TAB = new _ColumnDelimiter("Tab", " "); +ColumnDelimiter.COMMA = new _ColumnDelimiter("Comma", ","); +ColumnDelimiter.PIPE = new _ColumnDelimiter("Pipe", "|"); + +// src/option/SelectSuggestionKey.ts +var _SelectSuggestionKey = class { + constructor(name, keyBind) { + this.name = name; + this.keyBind = keyBind; + _SelectSuggestionKey._values.push(this); + } + static fromName(name) { + return _SelectSuggestionKey._values.find((x) => x.name === name); + } + static values() { + return _SelectSuggestionKey._values; + } +}; +var SelectSuggestionKey = _SelectSuggestionKey; +SelectSuggestionKey._values = []; +SelectSuggestionKey.ENTER = new _SelectSuggestionKey("Enter", { + modifiers: [], + key: "Enter" +}); +SelectSuggestionKey.TAB = new _SelectSuggestionKey("Tab", { + modifiers: [], + key: "Tab" +}); +SelectSuggestionKey.MOD_ENTER = new _SelectSuggestionKey("Ctrl/Cmd+Enter", { + modifiers: ["Mod"], + key: "Enter" +}); +SelectSuggestionKey.ALT_ENTER = new _SelectSuggestionKey("Alt+Enter", { + modifiers: ["Alt"], + key: "Enter" +}); +SelectSuggestionKey.SHIFT_ENTER = new _SelectSuggestionKey("Shift+Enter", { + modifiers: ["Shift"], + key: "Enter" +}); +SelectSuggestionKey.SPACE = new _SelectSuggestionKey("Space", { + modifiers: [], + key: " " +}); +SelectSuggestionKey.SHIFT_SPACE = new _SelectSuggestionKey("Shift+Space", { + modifiers: ["Shift"], + key: " " +}); +SelectSuggestionKey.BACKQUOTE = new _SelectSuggestionKey("Backquote", { + modifiers: [], + key: "`" +}); +SelectSuggestionKey.None = new _SelectSuggestionKey("None", { + modifiers: [], + key: "" +}); + +// src/provider/CurrentVaultWordProvider.ts +var CurrentVaultWordProvider = class { + constructor(app, appHelper) { + this.app = app; + this.appHelper = appHelper; + this.wordsByFirstLetter = {}; + this.words = []; + } + async refreshWords(minNumberOfCharacters) { + this.clearWords(); + const currentDirname = this.appHelper.getCurrentDirname(); + const markdownFilePaths = this.app.vault.getMarkdownFiles().map((x) => x.path).filter((p) => this.includePrefixPatterns.every((x) => p.startsWith(x))).filter((p) => this.excludePrefixPatterns.every((x) => !p.startsWith(x))).filter( + (p) => !this.onlyUnderCurrentDirectory || dirname(p) === currentDirname + ); + let wordByValue = {}; + for (const path of markdownFilePaths) { + const content = await this.app.vault.adapter.read(path); + const tokens = this.tokenizer.tokenize(content).filter( + (x) => x.length >= minNumberOfCharacters && !this.tokenizer.shouldIgnoreOnCurrent(x) + ).map((x) => startsSmallLetterOnlyFirst(x) ? x.toLowerCase() : x); + for (const token of tokens) { + wordByValue[token] = { + value: token, + type: "currentVault", + createdPath: path, + description: path + }; + } + } + this.words = Object.values(wordByValue); + this.wordsByFirstLetter = groupBy(this.words, (x) => x.value.charAt(0)); + } + clearWords() { + this.words = []; + this.wordsByFirstLetter = {}; + } + get wordCount() { + return this.words.length; + } + setSettings(tokenizer, includePrefixPatterns, excludePrefixPatterns, onlyUnderCurrentDirectory) { + this.tokenizer = tokenizer; + this.includePrefixPatterns = includePrefixPatterns; + this.excludePrefixPatterns = excludePrefixPatterns; + this.onlyUnderCurrentDirectory = onlyUnderCurrentDirectory; + } +}; + +// src/option/OpenSourceFileKeys.ts +var _OpenSourceFileKeys = class { + constructor(name, keyBind) { + this.name = name; + this.keyBind = keyBind; + _OpenSourceFileKeys._values.push(this); + } + static fromName(name) { + return _OpenSourceFileKeys._values.find((x) => x.name === name); + } + static values() { + return _OpenSourceFileKeys._values; + } +}; +var OpenSourceFileKeys = _OpenSourceFileKeys; +OpenSourceFileKeys._values = []; +OpenSourceFileKeys.NONE = new _OpenSourceFileKeys("None", { + modifiers: [], + key: null +}); +OpenSourceFileKeys.MOD_ENTER = new _OpenSourceFileKeys("Ctrl/Cmd+Enter", { + modifiers: ["Mod"], + key: "Enter" +}); +OpenSourceFileKeys.ALT_ENTER = new _OpenSourceFileKeys("Alt+Enter", { + modifiers: ["Alt"], + key: "Enter" +}); +OpenSourceFileKeys.SHIFT_ENTER = new _OpenSourceFileKeys("Shift+Enter", { + modifiers: ["Shift"], + key: "Enter" +}); + +// src/option/DescriptionOnSuggestion.ts +var _DescriptionOnSuggestion = class { + constructor(name, toDisplay) { + this.name = name; + this.toDisplay = toDisplay; + _DescriptionOnSuggestion._values.push(this); + } + static fromName(name) { + return _DescriptionOnSuggestion._values.find((x) => x.name === name); + } + static values() { + return _DescriptionOnSuggestion._values; + } +}; +var DescriptionOnSuggestion = _DescriptionOnSuggestion; +DescriptionOnSuggestion._values = []; +DescriptionOnSuggestion.NONE = new _DescriptionOnSuggestion("None", () => null); +DescriptionOnSuggestion.SHORT = new _DescriptionOnSuggestion("Short", (word) => { + if (!word.description) { + return null; + } + return word.type === "customDictionary" ? word.description : basename(word.description); +}); +DescriptionOnSuggestion.FULL = new _DescriptionOnSuggestion( + "Full", + (word) => { + var _a; + return (_a = word.description) != null ? _a : null; + } +); + +// src/provider/FrontMatterWordProvider.ts +function synonymAliases2(name) { + const lessEmojiValue = excludeEmoji(name); + return name === lessEmojiValue ? [] : [lessEmojiValue]; } function frontMatterToWords(file, key, values) { - return values.map((x) => ({ - key, - value: x, - type: "frontMatter", - createdPath: file.path, - aliases: synonymAliases(x), - })); + return values.map((x) => ({ + key, + value: x, + type: "frontMatter", + createdPath: file.path, + aliases: synonymAliases2(x) + })); } function pickWords(file, fm) { - return Object.entries(fm) - .filter(([_key, value]) => value != null && - (typeof value === "string" || typeof value[0] === "string")) - .flatMap(([key, value]) => frontMatterToWords(file, key, value)); + return Object.entries(fm).filter( + ([_key, value]) => value != null && (typeof value === "string" || typeof value[0] === "string") + ).flatMap(([key, value]) => frontMatterToWords(file, key, value)); } -// noinspection FunctionWithMultipleLoopsJS function extractAndUniqWords(wordsByCreatedPath) { - return uniqBy(Object.values(wordsByCreatedPath).flat(), (w) => w.key + w.value.toLowerCase()); + return uniqBy( + Object.values(wordsByCreatedPath).flat(), + (w) => w.key + w.value.toLowerCase() + ); } function indexingWords(words) { - const wordsByKey = groupBy(words, (x) => x.key); - return Object.fromEntries(Object.entries(wordsByKey).map(([key, words]) => [ + const wordsByKey = groupBy(words, (x) => x.key); + return Object.fromEntries( + Object.entries(wordsByKey).map( + ([key, words2]) => [ key, - groupBy(words, (w) => w.value.charAt(0)), - ])); + groupBy(words2, (w) => w.value.charAt(0)) + ] + ) + ); } -class FrontMatterWordProvider { - constructor(app, appHelper) { - this.app = app; - this.appHelper = appHelper; - this.wordsByCreatedPath = {}; +var FrontMatterWordProvider = class { + constructor(app, appHelper) { + this.app = app; + this.appHelper = appHelper; + this.wordsByCreatedPath = {}; + } + refreshWords() { + this.clearWords(); + this.app.vault.getMarkdownFiles().forEach((f) => { + const fm = this.appHelper.getFrontMatter(f); + if (!fm) { + return; + } + this.wordsByCreatedPath[f.path] = pickWords(f, fm); + }); + this.words = extractAndUniqWords(this.wordsByCreatedPath); + this.wordsByFirstLetterByKey = indexingWords(this.words); + } + updateWordIndex(file) { + const fm = this.appHelper.getFrontMatter(file); + if (!fm) { + return; } - refreshWords() { - this.clearWords(); - this.app.vault.getMarkdownFiles().forEach((f) => { - const fm = this.appHelper.getFrontMatter(f); - if (!fm) { - return; - } - this.wordsByCreatedPath[f.path] = pickWords(f, fm); - }); - this.words = extractAndUniqWords(this.wordsByCreatedPath); - this.wordsByFirstLetterByKey = indexingWords(this.words); - } - updateWordIndex(file) { - const fm = this.appHelper.getFrontMatter(file); - if (!fm) { - return; - } - this.wordsByCreatedPath[file.path] = pickWords(file, fm); - } - updateWords() { - this.words = extractAndUniqWords(this.wordsByCreatedPath); - this.wordsByFirstLetterByKey = indexingWords(this.words); - } - clearWords() { - this.wordsByCreatedPath = {}; - this.words = []; - this.wordsByFirstLetterByKey = {}; - } - get wordCount() { - return this.words.length; - } -} - -const neverUsedHandler = (..._args) => []; -class SpecificMatchStrategy { - constructor(name, handler) { - this.name = name; - this.handler = handler; - SpecificMatchStrategy._values.push(this); - } - static fromName(name) { - return SpecificMatchStrategy._values.find((x) => x.name === name); - } - static values() { - return SpecificMatchStrategy._values; - } -} -SpecificMatchStrategy._values = []; -SpecificMatchStrategy.INHERIT = new SpecificMatchStrategy("inherit", neverUsedHandler); -SpecificMatchStrategy.PREFIX = new SpecificMatchStrategy("prefix", suggestWords); -SpecificMatchStrategy.PARTIAL = new SpecificMatchStrategy("partial", suggestWordsByPartialMatch); - -const SEC = 1000; -const MIN = SEC * 60; -const HOUR = MIN * 60; -const DAY = HOUR * 24; -const WEEK = DAY * 7; -function calcScore(history) { - if (!history) { - return 0; - } - const behind = Date.now() - history.lastUpdated; - // noinspection IfStatementWithTooManyBranchesJS - if (behind < MIN) { - return 8 * history.count; - } - else if (behind < HOUR) { - return 4 * history.count; - } - else if (behind < DAY) { - return 2 * history.count; - } - else if (behind < WEEK) { - return 0.5 * history.count; - } - else { - return 0.25 * history.count; - } -} -class SelectionHistoryStorage { - constructor(data = {}) { - this.data = data; - const now = Date.now(); - this.version = now; - this.persistedVersion = now; - } - // noinspection FunctionWithMultipleLoopsJS - purge() { - for (const hit of Object.keys(this.data)) { - for (const value of Object.keys(this.data[hit])) { - for (const kind of Object.keys(this.data[hit][value])) { - if (Date.now() - this.data[hit][value][kind].lastUpdated > 4 * WEEK) { - delete this.data[hit][value][kind]; - } - } - if (Object.isEmpty(this.data[hit][value])) { - delete this.data[hit][value]; - } - } - if (Object.isEmpty(this.data[hit])) { - delete this.data[hit]; - } - } - } - getSelectionHistory(word) { - var _a, _b; - return (_b = (_a = this.data[word.hit]) === null || _a === void 0 ? void 0 : _a[word.value]) === null || _b === void 0 ? void 0 : _b[word.type]; - } - increment(word) { - if (!this.data[word.hit]) { - this.data[word.hit] = {}; - } - if (!this.data[word.hit][word.value]) { - this.data[word.hit][word.value] = {}; - } - if (this.data[word.hit][word.value][word.type]) { - this.data[word.hit][word.value][word.type] = { - count: this.data[word.hit][word.value][word.type].count + 1, - lastUpdated: Date.now(), - }; - } - else { - this.data[word.hit][word.value][word.type] = { - count: 1, - lastUpdated: Date.now(), - }; - } - this.version = Date.now(); - } - compare(w1, w2) { - const score1 = calcScore(this.getSelectionHistory(w1)); - const score2 = calcScore(this.getSelectionHistory(w2)); - if (score1 === score2) { - return 0; - } - return score1 > score2 ? -1 : 1; - } - get shouldPersist() { - return this.version > this.persistedVersion; - } - syncPersistVersion() { - this.persistedVersion = this.version; - } -} - -function buildLogMessage(message, msec) { - return `${message}: ${Math.round(msec)}[ms]`; -} -class AutoCompleteSuggest extends obsidian.EditorSuggest { - constructor(app, statusBar) { - super(app); - this.previousCurrentLine = ""; - this.keymapEventHandler = []; - this.appHelper = new AppHelper(app); - this.statusBar = statusBar; - } - triggerComplete() { - const editor = this.appHelper.getCurrentEditor(); - const activeFile = this.app.workspace.getActiveFile(); - if (!editor || !activeFile) { - return; - } - // XXX: Unsafe - this.runManually = true; - this.trigger(editor, activeFile, true); - } - static new(app, settings, statusBar, onPersistSelectionHistory) { - return __awaiter(this, void 0, void 0, function* () { - const ins = new AutoCompleteSuggest(app, statusBar); - ins.currentFileWordProvider = new CurrentFileWordProvider(ins.app, ins.appHelper); - ins.currentVaultWordProvider = new CurrentVaultWordProvider(ins.app, ins.appHelper); - ins.customDictionaryWordProvider = new CustomDictionaryWordProvider(ins.app, ins.appHelper); - ins.internalLinkWordProvider = new InternalLinkWordProvider(ins.app, ins.appHelper); - ins.frontMatterWordProvider = new FrontMatterWordProvider(ins.app, ins.appHelper); - ins.selectionHistoryStorage = new SelectionHistoryStorage(settings.selectionHistoryTree); - ins.selectionHistoryStorage.purge(); - yield ins.updateSettings(settings); - ins.modifyEventRef = app.vault.on("modify", (_) => __awaiter(this, void 0, void 0, function* () { - var _a; - yield ins.refreshCurrentFileTokens(); - if ((_a = ins.selectionHistoryStorage) === null || _a === void 0 ? void 0 : _a.shouldPersist) { - ins.settings.selectionHistoryTree = ins.selectionHistoryStorage.data; - ins.selectionHistoryStorage.syncPersistVersion(); - onPersistSelectionHistory(); - } - })); - ins.activeLeafChangeRef = app.workspace.on("active-leaf-change", (_) => __awaiter(this, void 0, void 0, function* () { - yield ins.refreshCurrentFileTokens(); - ins.refreshInternalLinkTokens(); - ins.updateFrontMatterToken(); - })); - ins.metadataCacheChangeRef = app.metadataCache.on("changed", (f) => { - ins.updateFrontMatterTokenIndex(f); - if (!ins.appHelper.isActiveFile(f)) { - ins.updateFrontMatterToken(); - } - }); - // Avoid referring to incorrect cache - const cacheResolvedRef = app.metadataCache.on("resolved", () => __awaiter(this, void 0, void 0, function* () { - ins.refreshInternalLinkTokens(); - ins.refreshFrontMatterTokens(); - // noinspection ES6MissingAwait - ins.refreshCustomDictionaryTokens(); - // noinspection ES6MissingAwait - ins.refreshCurrentVaultTokens(); - ins.app.metadataCache.offref(cacheResolvedRef); - })); - return ins; - }); - } - predictableComplete() { - const editor = this.appHelper.getCurrentEditor(); - if (!editor) { - return; - } - const cursor = editor.getCursor(); - const currentToken = this.tokenizer - .tokenize(editor.getLine(cursor.line).slice(0, cursor.ch)) - .last(); - if (!currentToken) { - return; - } - let suggestion = this.tokenizer - .tokenize(editor.getRange({ line: Math.max(cursor.line - 50, 0), ch: 0 }, cursor)) - .reverse() - .slice(1) - .find((x) => x.startsWith(currentToken)); - if (!suggestion) { - suggestion = this.tokenizer - .tokenize(editor.getRange(cursor, { - line: Math.min(cursor.line + 50, editor.lineCount() - 1), - ch: 0, - })) - .find((x) => x.startsWith(currentToken)); - } - if (!suggestion) { - return; - } - editor.replaceRange(suggestion, { line: cursor.line, ch: cursor.ch - currentToken.length }, { line: cursor.line, ch: cursor.ch }); - this.close(); - this.debounceClose(); - } - unregister() { - this.app.vault.offref(this.modifyEventRef); - this.app.workspace.offref(this.activeLeafChangeRef); - this.app.metadataCache.offref(this.metadataCacheChangeRef); - } - // settings getters - get tokenizerStrategy() { - return TokenizeStrategy.fromName(this.settings.strategy); - } - get matchStrategy() { - return MatchStrategy.fromName(this.settings.matchStrategy); - } - get frontMatterComplementStrategy() { - return SpecificMatchStrategy.fromName(this.settings.frontMatterComplementMatchStrategy); - } - get minNumberTriggered() { - return (this.settings.minNumberOfCharactersTriggered || - this.tokenizerStrategy.triggerThreshold); - } - get currentFileMinNumberOfCharacters() { - return (this.settings.currentFileMinNumberOfCharacters || - this.tokenizerStrategy.indexingThreshold); - } - get currentVaultMinNumberOfCharacters() { - return (this.settings.currentVaultMinNumberOfCharacters || - this.tokenizerStrategy.indexingThreshold); - } - get descriptionOnSuggestion() { - return DescriptionOnSuggestion.fromName(this.settings.descriptionOnSuggestion); - } - get excludeInternalLinkPrefixPathPatterns() { - return this.settings.excludeInternalLinkPathPrefixPatterns - .split("\n") - .filter((x) => x); - } - // --- end --- - get indexedWords() { - return { - currentFile: this.currentFileWordProvider.wordsByFirstLetter, - currentVault: this.currentVaultWordProvider.wordsByFirstLetter, - customDictionary: this.customDictionaryWordProvider.wordsByFirstLetter, - internalLink: this.internalLinkWordProvider.wordsByFirstLetter, - frontMatter: this.frontMatterWordProvider.wordsByFirstLetterByKey, - }; - } - updateSettings(settings) { - return __awaiter(this, void 0, void 0, function* () { - this.settings = settings; - this.statusBar.setMatchStrategy(this.matchStrategy); - this.statusBar.setComplementAutomatically(this.settings.complementAutomatically); - try { - this.tokenizer = yield createTokenizer(this.tokenizerStrategy, this.app); - } - catch (e) { - new obsidian.Notice(e.message, 0); - } - this.currentFileWordProvider.setSettings(this.tokenizer); - this.currentVaultWordProvider.setSettings(this.tokenizer, settings.includeCurrentVaultPathPrefixPatterns - .split("\n") - .filter((x) => x), settings.excludeCurrentVaultPathPrefixPatterns - .split("\n") - .filter((x) => x), settings.includeCurrentVaultOnlyFilesUnderCurrentDirectory); - this.customDictionaryWordProvider.setSettings(settings.customDictionaryPaths.split("\n").filter((x) => x), ColumnDelimiter.fromName(settings.columnDelimiter), settings.delimiterToDivideSuggestionsForDisplayFromInsertion || null); - this.debounceGetSuggestions = obsidian.debounce((context, cb) => { - const start = performance.now(); - this.showDebugLog(() => `[context.query]: ${context.query}`); - const parsedQuery = JSON.parse(context.query); - const words = parsedQuery.queries - .filter((x, i, xs) => parsedQuery.currentFrontMatter || - (this.settings.minNumberOfWordsTriggeredPhrase + i - 1 < - xs.length && - x.word.length >= this.minNumberTriggered && - !x.word.endsWith(" "))) - .map((q) => { - const handler = parsedQuery.currentFrontMatter && - this.frontMatterComplementStrategy !== - SpecificMatchStrategy.INHERIT - ? this.frontMatterComplementStrategy.handler - : this.matchStrategy.handler; - return handler(this.indexedWords, q.word, this.settings.maxNumberOfSuggestions, { - frontMatter: parsedQuery.currentFrontMatter, - selectionHistoryStorage: this.selectionHistoryStorage, - }).map((word) => (Object.assign(Object.assign({}, word), { offset: q.offset }))); - }) - .flat(); - cb(uniqWith(words, (a, b) => a.value === b.value && a.type === b.type).slice(0, this.settings.maxNumberOfSuggestions)); - this.showDebugLog(() => buildLogMessage("Get suggestions", performance.now() - start)); - }, this.settings.delayMilliSeconds, true); - this.debounceClose = obsidian.debounce(() => { - this.close(); - }, this.settings.delayMilliSeconds + 50); - this.registerKeymaps(); - }); - } - registerKeymaps() { - const registerKeyAsIgnored = (modifiers, key) => { - this.keymapEventHandler.push(this.scope.register(modifiers, key, () => { - this.close(); - return true; - })); - }; - // Clear - this.keymapEventHandler.forEach((x) => this.scope.unregister(x)); - this.keymapEventHandler = []; - this.scope.unregister(this.scope.keys.find((x) => x.key === "Enter")); - this.scope.unregister(this.scope.keys.find((x) => x.key === "ArrowUp")); - this.scope.unregister(this.scope.keys.find((x) => x.key === "ArrowDown")); - // selectSuggestionKeys - const selectSuggestionKey = SelectSuggestionKey.fromName(this.settings.selectSuggestionKeys); - if (selectSuggestionKey !== SelectSuggestionKey.ENTER) { - registerKeyAsIgnored(SelectSuggestionKey.ENTER.keyBind.modifiers, SelectSuggestionKey.ENTER.keyBind.key); - } - if (selectSuggestionKey !== SelectSuggestionKey.TAB) { - registerKeyAsIgnored(SelectSuggestionKey.TAB.keyBind.modifiers, SelectSuggestionKey.TAB.keyBind.key); - } - if (selectSuggestionKey !== SelectSuggestionKey.None) { - this.keymapEventHandler.push(this.scope.register(selectSuggestionKey.keyBind.modifiers, selectSuggestionKey.keyBind.key, () => { - this.suggestions.useSelectedItem({}); - return false; - })); - } - // propagateESC - this.scope.keys.find((x) => x.key === "Escape").func = () => { - this.close(); - return this.settings.propagateEsc; - }; - // cycleThroughSuggestionsKeys - const selectNext = () => { - this.suggestions.setSelectedItem(this.suggestions.selectedItem + 1, true); - return false; - }; - const selectPrevious = () => { - this.suggestions.setSelectedItem(this.suggestions.selectedItem - 1, true); - return false; - }; - const cycleThroughSuggestionsKeys = CycleThroughSuggestionsKeys.fromName(this.settings.additionalCycleThroughSuggestionsKeys); - if (this.settings.disableUpDownKeysForCycleThroughSuggestionsKeys) { - this.keymapEventHandler.push(this.scope.register([], "ArrowDown", () => { - this.close(); - return true; - }), this.scope.register([], "ArrowUp", () => { - this.close(); - return true; - })); - } - else { - this.keymapEventHandler.push(this.scope.register([], "ArrowDown", selectNext), this.scope.register([], "ArrowUp", selectPrevious)); - } - if (cycleThroughSuggestionsKeys !== CycleThroughSuggestionsKeys.NONE) { - if (cycleThroughSuggestionsKeys === CycleThroughSuggestionsKeys.TAB) { - this.scope.unregister(this.scope.keys.find((x) => x.modifiers === "" && x.key === "Tab")); - } - this.keymapEventHandler.push(this.scope.register(cycleThroughSuggestionsKeys.nextKey.modifiers, cycleThroughSuggestionsKeys.nextKey.key, selectNext), this.scope.register(cycleThroughSuggestionsKeys.previousKey.modifiers, cycleThroughSuggestionsKeys.previousKey.key, selectPrevious)); - } - const openSourceFileKey = OpenSourceFileKeys.fromName(this.settings.openSourceFileKey); - if (openSourceFileKey !== OpenSourceFileKeys.NONE) { - this.keymapEventHandler.push(this.scope.register(openSourceFileKey.keyBind.modifiers, openSourceFileKey.keyBind.key, () => { - const item = this.suggestions.values[this.suggestions.selectedItem]; - if (item.type !== "currentVault" && - item.type !== "internalLink" && - item.type !== "frontMatter") { - return false; - } - const markdownFile = this.appHelper.getMarkdownFileByPath(item.createdPath); - if (!markdownFile) { - // noinspection ObjectAllocationIgnored - new obsidian.Notice(`Can't open ${item.createdPath}`); - return false; - } - this.appHelper.openMarkdownFile(markdownFile, true); - return false; - })); - } - } - refreshCurrentFileTokens() { - return __awaiter(this, void 0, void 0, function* () { - const start = performance.now(); - this.statusBar.setCurrentFileIndexing(); - if (!this.settings.enableCurrentFileComplement) { - this.statusBar.setCurrentFileDisabled(); - this.currentFileWordProvider.clearWords(); - this.showDebugLog(() => buildLogMessage("👢 Skip: Index current file tokens", performance.now() - start)); - return; - } - yield this.currentFileWordProvider.refreshWords(this.settings.onlyComplementEnglishOnCurrentFileComplement, this.currentFileMinNumberOfCharacters); - this.statusBar.setCurrentFileIndexed(this.currentFileWordProvider.wordCount); - this.showDebugLog(() => buildLogMessage("Index current file tokens", performance.now() - start)); - }); - } - refreshCurrentVaultTokens() { - return __awaiter(this, void 0, void 0, function* () { - const start = performance.now(); - this.statusBar.setCurrentVaultIndexing(); - if (!this.settings.enableCurrentVaultComplement) { - this.statusBar.setCurrentVaultDisabled(); - this.currentVaultWordProvider.clearWords(); - this.showDebugLog(() => buildLogMessage("👢 Skip: Index current vault tokens", performance.now() - start)); - return; - } - yield this.currentVaultWordProvider.refreshWords(this.currentVaultMinNumberOfCharacters); - this.statusBar.setCurrentVaultIndexed(this.currentVaultWordProvider.wordCount); - this.showDebugLog(() => buildLogMessage("Index current vault tokens", performance.now() - start)); - }); - } - refreshCustomDictionaryTokens() { - return __awaiter(this, void 0, void 0, function* () { - const start = performance.now(); - this.statusBar.setCustomDictionaryIndexing(); - if (!this.settings.enableCustomDictionaryComplement) { - this.statusBar.setCustomDictionaryDisabled(); - this.customDictionaryWordProvider.clearWords(); - this.showDebugLog(() => buildLogMessage("👢Skip: Index custom dictionary tokens", performance.now() - start)); - return; - } - yield this.customDictionaryWordProvider.refreshCustomWords({ - regexp: this.settings.customDictionaryWordRegexPattern, - delimiterForHide: this.settings.delimiterToHideSuggestion || undefined, - delimiterForDisplay: this.settings.delimiterToDivideSuggestionsForDisplayFromInsertion || - undefined, - caretSymbol: this.settings.caretLocationSymbolAfterComplement || undefined, - }); - this.statusBar.setCustomDictionaryIndexed(this.customDictionaryWordProvider.wordCount); - this.showDebugLog(() => buildLogMessage("Index custom dictionary tokens", performance.now() - start)); - }); - } - refreshInternalLinkTokens() { - const start = performance.now(); - this.statusBar.setInternalLinkIndexing(); - if (!this.settings.enableInternalLinkComplement) { - this.statusBar.setInternalLinkDisabled(); - this.internalLinkWordProvider.clearWords(); - this.showDebugLog(() => buildLogMessage("👢Skip: Index internal link tokens", performance.now() - start)); - return; - } - this.internalLinkWordProvider.refreshWords(this.settings.suggestInternalLinkWithAlias, this.excludeInternalLinkPrefixPathPatterns); - this.statusBar.setInternalLinkIndexed(this.internalLinkWordProvider.wordCount); - this.showDebugLog(() => buildLogMessage("Index internal link tokens", performance.now() - start)); - } - refreshFrontMatterTokens() { - const start = performance.now(); - this.statusBar.setFrontMatterIndexing(); - if (!this.settings.enableFrontMatterComplement) { - this.statusBar.setFrontMatterDisabled(); - this.frontMatterWordProvider.clearWords(); - this.showDebugLog(() => buildLogMessage("👢Skip: Index front matter tokens", performance.now() - start)); - return; - } - this.frontMatterWordProvider.refreshWords(); - this.statusBar.setFrontMatterIndexed(this.frontMatterWordProvider.wordCount); - this.showDebugLog(() => buildLogMessage("Index front matter tokens", performance.now() - start)); - } - updateFrontMatterTokenIndex(file) { - const start = performance.now(); - if (!this.settings.enableFrontMatterComplement) { - this.showDebugLog(() => buildLogMessage("👢Skip: Update front matter token index", performance.now() - start)); - return; - } - this.frontMatterWordProvider.updateWordIndex(file); - this.showDebugLog(() => buildLogMessage("Update front matter token index", performance.now() - start)); - } - updateFrontMatterToken() { - const start = performance.now(); - if (!this.settings.enableFrontMatterComplement) { - this.showDebugLog(() => buildLogMessage("👢Skip: Update front matter token", performance.now() - start)); - return; - } - this.frontMatterWordProvider.updateWords(); - this.statusBar.setFrontMatterIndexed(this.frontMatterWordProvider.wordCount); - this.showDebugLog(() => buildLogMessage("Update front matter token", performance.now() - start)); - } - onTrigger(cursor, editor, file) { - var _a, _b, _c, _d, _e, _f; - const start = performance.now(); - const showDebugLog = (message) => { - this.showDebugLog(() => `[onTrigger] ${message}`); - }; - const onReturnNull = (message) => { - showDebugLog(message); - this.runManually = false; - this.close(); - }; - if (!this.settings.complementAutomatically && - !this.isOpen && - !this.runManually) { - onReturnNull("Don't show suggestions"); - return null; - } - if (this.settings.disableSuggestionsDuringImeOn && - this.appHelper.isIMEOn() && - !this.runManually) { - onReturnNull("Don't show suggestions for IME"); - return null; - } - const cl = this.appHelper.getCurrentLine(editor); - if (this.previousCurrentLine === cl && !this.runManually) { - this.previousCurrentLine = cl; - onReturnNull("Don't show suggestions because there are no changes"); - return null; - } - this.previousCurrentLine = cl; - const currentLineUntilCursor = this.appHelper.getCurrentLineUntilCursor(editor); - if (currentLineUntilCursor.startsWith("---")) { - onReturnNull("Don't show suggestions because it supposes front matter or horizontal line"); - return null; - } - if (currentLineUntilCursor.startsWith("~~~") || - currentLineUntilCursor.startsWith("```")) { - onReturnNull("Don't show suggestions because it supposes front code block"); - return null; - } - const tokens = this.tokenizer.tokenize(currentLineUntilCursor, true); - showDebugLog(`tokens is ${tokens}`); - const tokenized = this.tokenizer.recursiveTokenize(currentLineUntilCursor); - const currentTokens = tokenized.slice(tokenized.length > this.settings.maxNumberOfWordsAsPhrase - ? tokenized.length - this.settings.maxNumberOfWordsAsPhrase - : 0); - showDebugLog(`currentTokens is ${JSON.stringify(currentTokens)}`); - const currentToken = (_a = currentTokens[0]) === null || _a === void 0 ? void 0 : _a.word; - showDebugLog(`currentToken is ${currentToken}`); - if (!currentToken) { - onReturnNull(`Don't show suggestions because currentToken is empty`); - return null; - } - const currentTokenSeparatedWhiteSpace = (_b = currentLineUntilCursor.split(" ").last()) !== null && _b !== void 0 ? _b : ""; - if (new RegExp(`^[${this.settings.firstCharactersDisableSuggestions}]`).test(currentTokenSeparatedWhiteSpace)) { - onReturnNull(`Don't show suggestions for avoiding to conflict with the other commands.`); - return null; - } - if (currentToken.length === 1 && - Boolean(currentToken.match(this.tokenizer.getTrimPattern()))) { - onReturnNull(`Don't show suggestions because currentToken is TRIM_PATTERN`); - return null; - } - const currentFrontMatter = this.settings.enableFrontMatterComplement - ? this.appHelper.getCurrentFrontMatter() - : undefined; - showDebugLog(`Current front matter is ${currentFrontMatter}`); - if (!this.runManually && - !currentFrontMatter && - currentToken.length < this.minNumberTriggered) { - onReturnNull("Don't show suggestions because currentToken is less than minNumberTriggered option"); - return null; - } - showDebugLog(buildLogMessage("onTrigger", performance.now() - start)); - this.runManually = false; - // Hack implementation for Front matter complement - if (currentFrontMatter && ((_c = currentTokens.last()) === null || _c === void 0 ? void 0 : _c.word.match(/[^ ] $/))) { - currentTokens.push({ word: "", offset: currentLineUntilCursor.length }); - } - // For multi-word completion - this.contextStartCh = cursor.ch - currentToken.length; - return { - start: { - ch: cursor.ch - ((_f = (_e = (_d = currentTokens.last()) === null || _d === void 0 ? void 0 : _d.word) === null || _e === void 0 ? void 0 : _e.length) !== null && _f !== void 0 ? _f : 0), - line: cursor.line, - }, - end: cursor, - query: JSON.stringify({ - currentFrontMatter, - queries: currentTokens.map((x) => (Object.assign(Object.assign({}, x), { offset: x.offset - currentTokens[0].offset }))), - }), - }; - } - getSuggestions(context) { - return new Promise((resolve) => { - this.debounceGetSuggestions(context, (words) => { - resolve(words); - }); - }); - } - renderSuggestion(word, el) { - const base = createDiv(); - let text = word.value; - if (word.type === "customDictionary" && - word.insertedText && - this.settings.displayedTextSuffix) { - text += this.settings.displayedTextSuffix; - } - base.createDiv({ - text, - cls: word.type === "internalLink" && word.aliasMeta - ? "various-complements__suggestion-item__content__alias" - : undefined, - }); - const description = this.descriptionOnSuggestion.toDisplay(word); - if (description) { - base.createDiv({ - cls: "various-complements__suggestion-item__description", - text: `${description}`, - }); - } - el.appendChild(base); - el.addClass("various-complements__suggestion-item"); - switch (word.type) { - case "currentFile": - el.addClass("various-complements__suggestion-item__current-file"); - break; - case "currentVault": - el.addClass("various-complements__suggestion-item__current-vault"); - break; - case "customDictionary": - el.addClass("various-complements__suggestion-item__custom-dictionary"); - break; - case "internalLink": - el.addClass("various-complements__suggestion-item__internal-link"); - if (word.phantom) { - el.addClass("various-complements__suggestion-item__phantom"); - } - break; - case "frontMatter": - el.addClass("various-complements__suggestion-item__front-matter"); - break; - } - } - selectSuggestion(word, evt) { - var _a, _b; - if (!this.context) { - return; - } - let insertedText = word.value; - if (word.type === "internalLink") { - if (this.settings.suggestInternalLinkWithAlias && word.aliasMeta) { - const linkText = this.appHelper.optimizeMarkdownLinkText(word.aliasMeta.origin); - insertedText = this.appHelper.useWikiLinks - ? `[[${linkText}|${word.value}]]` - : `[${word.value}](${linkText}.md)`; - } - else { - const linkText = this.appHelper.optimizeMarkdownLinkText(word.value); - insertedText = this.appHelper.useWikiLinks - ? `[[${linkText}]]` - : `[${linkText}](${linkText}.md)`; - } - } - if (word.type === "frontMatter" && - this.settings.insertCommaAfterFrontMatterCompletion) { - insertedText = `${insertedText}, `; - } - else { - if (this.settings.insertAfterCompletion && - !(word.type === "customDictionary" && word.ignoreSpaceAfterCompletion)) { - insertedText = `${insertedText} `; - } - } - let positionToMove = -1; - if (word.type === "customDictionary") { - if (word.insertedText) { - insertedText = word.insertedText; - } - const caret = word.caretSymbol; - if (caret) { - positionToMove = insertedText.indexOf(caret); - insertedText = insertedText.replace(caret, ""); - } - } - const editor = this.context.editor; - editor.replaceRange(insertedText, Object.assign(Object.assign({}, this.context.start), { ch: this.contextStartCh + word.offset }), this.context.end); - if (positionToMove !== -1) { - editor.setCursor(editor.offsetToPos(editor.posToOffset(editor.getCursor()) - - insertedText.length + - positionToMove)); - } - // The workaround of strange behavior for that cursor doesn't move after completion only if it doesn't input any word. - if (this.appHelper.equalsAsEditorPostion(this.context.start, this.context.end)) { - editor.setCursor(editor.offsetToPos(editor.posToOffset(editor.getCursor()) + insertedText.length)); - } - (_a = this.selectionHistoryStorage) === null || _a === void 0 ? void 0 : _a.increment(word); - if (this.settings.showLogAboutPerformanceInConsole) { - console.log("--- history ---"); - console.log((_b = this.selectionHistoryStorage) === null || _b === void 0 ? void 0 : _b.data); - } - this.close(); - this.debounceClose(); - } - showDebugLog(toMessage) { - if (this.settings.showLogAboutPerformanceInConsole) { - console.log(toMessage()); - } - } -} - -const DEFAULT_SETTINGS = { - // general - strategy: "default", - matchStrategy: "prefix", - maxNumberOfSuggestions: 5, - maxNumberOfWordsAsPhrase: 3, - minNumberOfCharactersTriggered: 0, - minNumberOfWordsTriggeredPhrase: 1, - complementAutomatically: true, - delayMilliSeconds: 0, - disableSuggestionsDuringImeOn: false, - insertAfterCompletion: true, - firstCharactersDisableSuggestions: ":/^", - // appearance - showMatchStrategy: true, - showComplementAutomatically: true, - showIndexingStatus: true, - descriptionOnSuggestion: "Short", - // key customization - selectSuggestionKeys: "Enter", - additionalCycleThroughSuggestionsKeys: "None", - disableUpDownKeysForCycleThroughSuggestionsKeys: false, - openSourceFileKey: "None", - propagateEsc: false, - // current file complement - enableCurrentFileComplement: true, - currentFileMinNumberOfCharacters: 0, - onlyComplementEnglishOnCurrentFileComplement: false, - // current vault complement - enableCurrentVaultComplement: false, - currentVaultMinNumberOfCharacters: 0, - includeCurrentVaultPathPrefixPatterns: "", - excludeCurrentVaultPathPrefixPatterns: "", - includeCurrentVaultOnlyFilesUnderCurrentDirectory: false, - // custom dictionary complement - enableCustomDictionaryComplement: false, - customDictionaryPaths: `https://raw.githubusercontent.com/first20hours/google-10000-english/master/google-10000-english-no-swears.txt`, - columnDelimiter: "Tab", - customDictionaryWordRegexPattern: "", - delimiterToHideSuggestion: "", - delimiterToDivideSuggestionsForDisplayFromInsertion: "", - caretLocationSymbolAfterComplement: "", - displayedTextSuffix: " => ...", - // internal link complement - enableInternalLinkComplement: true, - suggestInternalLinkWithAlias: false, - excludeInternalLinkPathPrefixPatterns: "", - // front matter complement - enableFrontMatterComplement: true, - frontMatterComplementMatchStrategy: "inherit", - insertCommaAfterFrontMatterCompletion: false, - // debug - showLogAboutPerformanceInConsole: false, - // others - selectionHistoryTree: {}, + this.wordsByCreatedPath[file.path] = pickWords(file, fm); + } + updateWords() { + this.words = extractAndUniqWords(this.wordsByCreatedPath); + this.wordsByFirstLetterByKey = indexingWords(this.words); + } + clearWords() { + this.wordsByCreatedPath = {}; + this.words = []; + this.wordsByFirstLetterByKey = {}; + } + get wordCount() { + return this.words.length; + } }; -class VariousComplementsSettingTab extends obsidian.PluginSettingTab { - constructor(app, plugin) { - super(app, plugin); - this.plugin = plugin; - } - display() { - let { containerEl } = this; - containerEl.empty(); - containerEl.createEl("h2", { text: "Various Complements - Settings" }); - this.addMainSettings(containerEl); - this.addAppearanceSettings(containerEl); - this.addKeyCustomizationSettings(containerEl); - this.addCurrentFileComplementSettings(containerEl); - this.addCurrentVaultComplementSettings(containerEl); - this.addCustomDictionaryComplementSettings(containerEl); - this.addInternalLinkComplementSettings(containerEl); - this.addFrontMatterComplementSettings(containerEl); - this.addDebugSettings(containerEl); - } - addMainSettings(containerEl) { - containerEl.createEl("h3", { text: "Main" }); - new obsidian.Setting(containerEl).setName("Strategy").addDropdown((tc) => tc - .addOptions(mirrorMap(TokenizeStrategy.values(), (x) => x.name)) - .setValue(this.plugin.settings.strategy) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.strategy = value; - this.display(); - yield this.plugin.saveSettings({ - currentFile: true, - currentVault: true, - }); - }))); - if (this.plugin.settings.strategy === TokenizeStrategy.CHINESE.name) { - const el = containerEl.createEl("div", { - cls: "various-complements__settings__warning", - }); - el.createSpan({ - text: "⚠ You need to download `cedict_ts.u8` from", - }); - el.createEl("a", { - href: "https://www.mdbg.net/chinese/dictionary?page=cc-cedict", - text: " the site ", - }); - el.createSpan({ - text: "and store it in vault root.", - }); - } - new obsidian.Setting(containerEl).setName("Match strategy").addDropdown((tc) => tc - .addOptions(mirrorMap(MatchStrategy.values(), (x) => x.name)) - .setValue(this.plugin.settings.matchStrategy) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.matchStrategy = value; - yield this.plugin.saveSettings(); - this.display(); - }))); - if (this.plugin.settings.matchStrategy === MatchStrategy.PARTIAL.name) { - containerEl.createEl("div", { - text: "⚠ `partial` is more than 10 times slower than `prefix`", - cls: "various-complements__settings__warning", - }); - } - new obsidian.Setting(containerEl) - .setName("Max number of suggestions") - .addSlider((sc) => sc - .setLimits(1, 255, 1) - .setValue(this.plugin.settings.maxNumberOfSuggestions) - .setDynamicTooltip() - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.maxNumberOfSuggestions = value; - yield this.plugin.saveSettings(); - }))); - new obsidian.Setting(containerEl) - .setName("Max number of words as a phrase") - .setDesc(`[⚠Warning] It makes slower more than N times (N is set value)`) - .addSlider((sc) => sc - .setLimits(1, 10, 1) - .setValue(this.plugin.settings.maxNumberOfWordsAsPhrase) - .setDynamicTooltip() - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.maxNumberOfWordsAsPhrase = value; - yield this.plugin.saveSettings(); - }))); - new obsidian.Setting(containerEl) - .setName("Min number of characters for trigger") - .setDesc("It uses a default value of Strategy if set 0.") - .addSlider((sc) => sc - .setLimits(0, 10, 1) - .setValue(this.plugin.settings.minNumberOfCharactersTriggered) - .setDynamicTooltip() - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.minNumberOfCharactersTriggered = value; - yield this.plugin.saveSettings(); - }))); - new obsidian.Setting(containerEl) - .setName("Min number of words for trigger") - .addSlider((sc) => sc - .setLimits(1, 10, 1) - .setValue(this.plugin.settings.minNumberOfWordsTriggeredPhrase) - .setDynamicTooltip() - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.minNumberOfWordsTriggeredPhrase = value; - yield this.plugin.saveSettings(); - }))); - new obsidian.Setting(containerEl) - .setName("Complement automatically") - .addToggle((tc) => { - tc.setValue(this.plugin.settings.complementAutomatically).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.complementAutomatically = value; - yield this.plugin.saveSettings(); - })); - }); - new obsidian.Setting(containerEl) - .setName("Delay milli-seconds for trigger") - .addSlider((sc) => sc - .setLimits(0, 1000, 10) - .setValue(this.plugin.settings.delayMilliSeconds) - .setDynamicTooltip() - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.delayMilliSeconds = value; - yield this.plugin.saveSettings(); - }))); - new obsidian.Setting(containerEl) - .setName("Disable suggestions during IME on") - .addToggle((tc) => { - tc.setValue(this.plugin.settings.disableSuggestionsDuringImeOn).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.disableSuggestionsDuringImeOn = value; - yield this.plugin.saveSettings(); - })); - }); - new obsidian.Setting(containerEl) - .setName("Insert space after completion") - .addToggle((tc) => { - tc.setValue(this.plugin.settings.insertAfterCompletion).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.insertAfterCompletion = value; - yield this.plugin.saveSettings(); - })); - }); - new obsidian.Setting(containerEl) - .setName("First characters to disable suggestions") - .addText((cb) => { - cb.setValue(this.plugin.settings.firstCharactersDisableSuggestions).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.firstCharactersDisableSuggestions = value; - yield this.plugin.saveSettings(); - })); - }); - } - addAppearanceSettings(containerEl) { - containerEl.createEl("h3", { text: "Appearance" }); - new obsidian.Setting(containerEl) - .setName("Show Match strategy") - .setDesc("Show Match strategy at the status bar. Changing this option requires a restart to take effect.") - .addToggle((tc) => { - tc.setValue(this.plugin.settings.showMatchStrategy).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.showMatchStrategy = value; - yield this.plugin.saveSettings(); - })); - }); - new obsidian.Setting(containerEl) - .setName("Show Complement automatically") - .setDesc("Show complement automatically at the status bar. Changing this option requires a restart to take effect.") - .addToggle((tc) => { - tc.setValue(this.plugin.settings.showComplementAutomatically).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.showComplementAutomatically = value; - yield this.plugin.saveSettings(); - })); - }); - new obsidian.Setting(containerEl) - .setName("Show Indexing status") - .setDesc("Show indexing status at the status bar. Changing this option requires a restart to take effect.") - .addToggle((tc) => { - tc.setValue(this.plugin.settings.showIndexingStatus).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.showIndexingStatus = value; - yield this.plugin.saveSettings(); - })); - }); - new obsidian.Setting(containerEl) - .setName("Description on a suggestion") - .addDropdown((tc) => tc - .addOptions(mirrorMap(DescriptionOnSuggestion.values(), (x) => x.name)) - .setValue(this.plugin.settings.descriptionOnSuggestion) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.descriptionOnSuggestion = value; - yield this.plugin.saveSettings(); - }))); - } - addKeyCustomizationSettings(containerEl) { - containerEl.createEl("h3", { text: "Key customization" }); - new obsidian.Setting(containerEl) - .setName("Select a suggestion key") - .addDropdown((tc) => tc - .addOptions(mirrorMap(SelectSuggestionKey.values(), (x) => x.name)) - .setValue(this.plugin.settings.selectSuggestionKeys) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.selectSuggestionKeys = value; - yield this.plugin.saveSettings(); - }))); - new obsidian.Setting(containerEl) - .setName("Additional cycle through suggestions keys") - .addDropdown((tc) => tc - .addOptions(mirrorMap(CycleThroughSuggestionsKeys.values(), (x) => x.name)) - .setValue(this.plugin.settings.additionalCycleThroughSuggestionsKeys) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.additionalCycleThroughSuggestionsKeys = value; - yield this.plugin.saveSettings(); - }))); - new obsidian.Setting(containerEl) - .setName("Disable the up/down keys for cycle through suggestions keys") - .addToggle((tc) => { - tc.setValue(this.plugin.settings.disableUpDownKeysForCycleThroughSuggestionsKeys).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.disableUpDownKeysForCycleThroughSuggestionsKeys = - value; - yield this.plugin.saveSettings(); - })); - }); - new obsidian.Setting(containerEl).setName("Open source file key").addDropdown((tc) => tc - .addOptions(mirrorMap(OpenSourceFileKeys.values(), (x) => x.name)) - .setValue(this.plugin.settings.openSourceFileKey) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.openSourceFileKey = value; - yield this.plugin.saveSettings(); - }))); - new obsidian.Setting(containerEl) - .setName("Propagate ESC") - .setDesc("It is handy if you use Vim mode because you can switch to Normal mode by one ESC, whether it shows suggestions or not.") - .addToggle((tc) => { - tc.setValue(this.plugin.settings.propagateEsc).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.propagateEsc = value; - yield this.plugin.saveSettings(); - })); - }); - } - addCurrentFileComplementSettings(containerEl) { - containerEl.createEl("h3", { - text: "Current file complement", - cls: "various-complements__settings__header various-complements__settings__header__current-file", - }); - new obsidian.Setting(containerEl) - .setName("Enable Current file complement") - .addToggle((tc) => { - tc.setValue(this.plugin.settings.enableCurrentFileComplement).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.enableCurrentFileComplement = value; - yield this.plugin.saveSettings({ currentFile: true }); - this.display(); - })); - }); - if (this.plugin.settings.enableCurrentFileComplement) { - new obsidian.Setting(containerEl) - .setName("Min number of characters for indexing") - .setDesc("It uses a default value of Strategy if set 0.") - .addSlider((sc) => sc - .setLimits(0, 15, 1) - .setValue(this.plugin.settings.currentFileMinNumberOfCharacters) - .setDynamicTooltip() - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.currentFileMinNumberOfCharacters = value; - yield this.plugin.saveSettings({ currentFile: true }); - }))); - new obsidian.Setting(containerEl) - .setName("Only complement English on current file complement") - .addToggle((tc) => { - tc.setValue(this.plugin.settings.onlyComplementEnglishOnCurrentFileComplement).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.onlyComplementEnglishOnCurrentFileComplement = - value; - yield this.plugin.saveSettings({ currentFile: true }); - })); - }); - } - } - addCurrentVaultComplementSettings(containerEl) { - containerEl.createEl("h3", { - text: "Current vault complement", - cls: "various-complements__settings__header various-complements__settings__header__current-vault", - }); - new obsidian.Setting(containerEl) - .setName("Enable Current vault complement") - .addToggle((tc) => { - tc.setValue(this.plugin.settings.enableCurrentVaultComplement).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.enableCurrentVaultComplement = value; - this.display(); - yield this.plugin.saveSettings({ currentVault: true }); - })); - }); - if (this.plugin.settings.enableCurrentVaultComplement) { - new obsidian.Setting(containerEl) - .setName("Min number of characters for indexing") - .setDesc("It uses a default value of Strategy if set 0.") - .addSlider((sc) => sc - .setLimits(0, 15, 1) - .setValue(this.plugin.settings.currentVaultMinNumberOfCharacters) - .setDynamicTooltip() - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.currentVaultMinNumberOfCharacters = value; - yield this.plugin.saveSettings(); - }))); - new obsidian.Setting(containerEl) - .setName("Include prefix path patterns") - .setDesc("Prefix match path patterns to include files.") - .addTextArea((tac) => { - const el = tac - .setValue(this.plugin.settings.includeCurrentVaultPathPrefixPatterns) - .setPlaceholder("Private/") - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.includeCurrentVaultPathPrefixPatterns = - value; - yield this.plugin.saveSettings(); - })); - el.inputEl.className = - "various-complements__settings__text-area-path"; - return el; - }); - new obsidian.Setting(containerEl) - .setName("Exclude prefix path patterns") - .setDesc("Prefix match path patterns to exclude files.") - .addTextArea((tac) => { - const el = tac - .setValue(this.plugin.settings.excludeCurrentVaultPathPrefixPatterns) - .setPlaceholder("Private/") - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.excludeCurrentVaultPathPrefixPatterns = - value; - yield this.plugin.saveSettings(); - })); - el.inputEl.className = - "various-complements__settings__text-area-path"; - return el; - }); - new obsidian.Setting(containerEl) - .setName("Include only files under current directory") - .addToggle((tc) => { - tc.setValue(this.plugin.settings - .includeCurrentVaultOnlyFilesUnderCurrentDirectory).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.includeCurrentVaultOnlyFilesUnderCurrentDirectory = - value; - yield this.plugin.saveSettings(); - })); - }); - } - } - addCustomDictionaryComplementSettings(containerEl) { - containerEl.createEl("h3", { - text: "Custom dictionary complement", - cls: "various-complements__settings__header various-complements__settings__header__custom-dictionary", - }); - new obsidian.Setting(containerEl) - .setName("Enable Custom dictionary complement") - .addToggle((tc) => { - tc.setValue(this.plugin.settings.enableCustomDictionaryComplement).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.enableCustomDictionaryComplement = value; - yield this.plugin.saveSettings({ customDictionary: true }); - this.display(); - })); - }); - if (this.plugin.settings.enableCustomDictionaryComplement) { - new obsidian.Setting(containerEl) - .setName("Custom dictionary paths") - .setDesc("Specify either a relative path from Vault root or URL for each line.") - .addTextArea((tac) => { - const el = tac - .setValue(this.plugin.settings.customDictionaryPaths) - .setPlaceholder("dictionary.md") - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.customDictionaryPaths = value; - yield this.plugin.saveSettings(); - })); - el.inputEl.className = - "various-complements__settings__text-area-path"; - return el; - }); - new obsidian.Setting(containerEl).setName("Column delimiter").addDropdown((tc) => tc - .addOptions(mirrorMap(ColumnDelimiter.values(), (x) => x.name)) - .setValue(this.plugin.settings.columnDelimiter) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.columnDelimiter = value; - yield this.plugin.saveSettings(); - }))); - new obsidian.Setting(containerEl) - .setName("Word regex pattern") - .setDesc("Only load words that match the regular expression pattern.") - .addText((cb) => { - cb.setValue(this.plugin.settings.customDictionaryWordRegexPattern).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.customDictionaryWordRegexPattern = value; - yield this.plugin.saveSettings(); - })); - }); - new obsidian.Setting(containerEl) - .setName("Delimiter to hide a suggestion") - .setDesc("If set ';;;', 'abcd;;;efg' is shown as 'abcd' on suggestions, but completes to 'abcdefg'.") - .addText((cb) => { - cb.setValue(this.plugin.settings.delimiterToHideSuggestion).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.delimiterToHideSuggestion = value; - yield this.plugin.saveSettings(); - })); - }); - new obsidian.Setting(containerEl) - .setName("Delimiter to divide suggestions for display from ones for insertion") - .setDesc("If set ' >>> ', 'displayed >>> inserted' is shown as 'displayed' on suggestions, but completes to 'inserted'.") - .addText((cb) => { - cb.setValue(this.plugin.settings - .delimiterToDivideSuggestionsForDisplayFromInsertion).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.delimiterToDivideSuggestionsForDisplayFromInsertion = - value; - yield this.plugin.saveSettings(); - })); - }); - new obsidian.Setting(containerEl) - .setName("Caret location symbol after complement") - .setDesc("If set '' and there is '
  • ' in custom dictionary, it complements '
  • ' and move a caret where between '
  • ' and `
  • `.") - .addText((cb) => { - cb.setValue(this.plugin.settings.caretLocationSymbolAfterComplement).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.caretLocationSymbolAfterComplement = value; - yield this.plugin.saveSettings(); - })); - }); - new obsidian.Setting(containerEl) - .setName("Displayed text suffix") - .setDesc("It shows as a suffix of displayed text if there is a difference between displayed and inserted") - .addText((cb) => { - cb.setValue(this.plugin.settings.displayedTextSuffix).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.displayedTextSuffix = value; - yield this.plugin.saveSettings(); - })); - }); - } - } - addInternalLinkComplementSettings(containerEl) { - containerEl.createEl("h3", { - text: "Internal link complement", - cls: "various-complements__settings__header various-complements__settings__header__internal-link", - }); - new obsidian.Setting(containerEl) - .setName("Enable Internal link complement") - .addToggle((tc) => { - tc.setValue(this.plugin.settings.enableInternalLinkComplement).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.enableInternalLinkComplement = value; - yield this.plugin.saveSettings({ internalLink: true }); - this.display(); - })); - }); - if (this.plugin.settings.enableInternalLinkComplement) { - new obsidian.Setting(containerEl) - .setName("Suggest with an alias") - .addToggle((tc) => { - tc.setValue(this.plugin.settings.suggestInternalLinkWithAlias).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.suggestInternalLinkWithAlias = value; - yield this.plugin.saveSettings({ internalLink: true }); - })); - }); - new obsidian.Setting(containerEl) - .setName("Exclude prefix path patterns") - .setDesc("Prefix match path patterns to exclude files.") - .addTextArea((tac) => { - const el = tac - .setValue(this.plugin.settings.excludeInternalLinkPathPrefixPatterns) - .setPlaceholder("Private/") - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.excludeInternalLinkPathPrefixPatterns = - value; - yield this.plugin.saveSettings(); - })); - el.inputEl.className = - "various-complements__settings__text-area-path"; - return el; - }); - } - } - addFrontMatterComplementSettings(containerEl) { - containerEl.createEl("h3", { - text: "Front matter complement", - cls: "various-complements__settings__header various-complements__settings__header__front-matter", - }); - new obsidian.Setting(containerEl) - .setName("Enable Front matter complement") - .addToggle((tc) => { - tc.setValue(this.plugin.settings.enableFrontMatterComplement).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.enableFrontMatterComplement = value; - yield this.plugin.saveSettings({ frontMatter: true }); - this.display(); - })); - }); - if (this.plugin.settings.enableFrontMatterComplement) { - new obsidian.Setting(containerEl) - .setName("Match strategy in the front matter") - .addDropdown((tc) => tc - .addOptions(mirrorMap(SpecificMatchStrategy.values(), (x) => x.name)) - .setValue(this.plugin.settings.frontMatterComplementMatchStrategy) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.frontMatterComplementMatchStrategy = value; - yield this.plugin.saveSettings(); - }))); - new obsidian.Setting(containerEl) - .setName("Insert comma after completion") - .addToggle((tc) => { - tc.setValue(this.plugin.settings.insertCommaAfterFrontMatterCompletion).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.insertCommaAfterFrontMatterCompletion = value; - yield this.plugin.saveSettings(); - })); - }); - } - } - addDebugSettings(containerEl) { - containerEl.createEl("h3", { text: "Debug" }); - new obsidian.Setting(containerEl) - .setName("Show log about performance in a console") - .addToggle((tc) => { - tc.setValue(this.plugin.settings.showLogAboutPerformanceInConsole).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.showLogAboutPerformanceInConsole = value; - yield this.plugin.saveSettings(); - })); - }); - } - toggleMatchStrategy() { - return __awaiter(this, void 0, void 0, function* () { - switch (this.plugin.settings.matchStrategy) { - case "prefix": - this.plugin.settings.matchStrategy = "partial"; - break; - case "partial": - this.plugin.settings.matchStrategy = "prefix"; - break; - default: - // noinspection ObjectAllocationIgnored - new obsidian.Notice("⚠Unexpected error"); - } - yield this.plugin.saveSettings(); - }); - } - toggleComplementAutomatically() { - return __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.complementAutomatically = - !this.plugin.settings.complementAutomatically; - yield this.plugin.saveSettings(); - }); - } - ensureCustomDictionaryPath(path, state) { - return __awaiter(this, void 0, void 0, function* () { - const paths = this.plugin.settings.customDictionaryPaths.split("\n"); - const exists = paths.some((x) => x === path); - if ((exists && state === "present") || (!exists && state === "absent")) { - return false; - } - const newPaths = state === "present" ? [...paths, path] : paths.filter((x) => x !== path); - this.plugin.settings.customDictionaryPaths = newPaths.join("\n"); - yield this.plugin.saveSettings({ customDictionary: true }); - return true; - }); - } - getPluginSettingsAsJsonString() { - return JSON.stringify({ - version: this.plugin.manifest.version, - mobile: this.app.isMobile, - settings: Object.assign(Object.assign({}, this.plugin.settings), { selectionHistoryTree: null }), - }, null, 4); - } -} -class ProviderStatusBar { - constructor(currentFile, currentVault, customDictionary, internalLink, frontMatter, matchStrategy, complementAutomatically) { - this.currentFile = currentFile; - this.currentVault = currentVault; - this.customDictionary = customDictionary; - this.internalLink = internalLink; - this.frontMatter = frontMatter; - this.matchStrategy = matchStrategy; - this.complementAutomatically = complementAutomatically; - } - static new(statusBar, showMatchStrategy, showIndexingStatus, showComplementAutomatically) { - const currentFile = showIndexingStatus - ? statusBar.createEl("span", { - text: "---", - cls: "various-complements__footer various-complements__footer__current-file", - }) - : null; - const currentVault = showIndexingStatus - ? statusBar.createEl("span", { - text: "---", - cls: "various-complements__footer various-complements__footer__current-vault", - }) - : null; - const customDictionary = showIndexingStatus - ? statusBar.createEl("span", { - text: "---", - cls: "various-complements__footer various-complements__footer__custom-dictionary", - }) - : null; - const internalLink = showIndexingStatus - ? statusBar.createEl("span", { - text: "---", - cls: "various-complements__footer various-complements__footer__internal-link", - }) - : null; - const frontMatter = showIndexingStatus - ? statusBar.createEl("span", { - text: "---", - cls: "various-complements__footer various-complements__footer__front-matter", - }) - : null; - const matchStrategy = showMatchStrategy - ? statusBar.createEl("span", { - text: "---", - cls: "various-complements__footer various-complements__footer__match-strategy", - }) - : null; - const complementAutomatically = showComplementAutomatically - ? statusBar.createEl("span", { - text: "---", - cls: "various-complements__footer various-complements__footer__complement-automatically", - }) - : null; - return new ProviderStatusBar(currentFile, currentVault, customDictionary, internalLink, frontMatter, matchStrategy, complementAutomatically); - } - setOnClickStrategyListener(listener) { - var _a; - (_a = this.matchStrategy) === null || _a === void 0 ? void 0 : _a.addEventListener("click", listener); - } - setOnClickComplementAutomatically(listener) { - var _a; - (_a = this.complementAutomatically) === null || _a === void 0 ? void 0 : _a.addEventListener("click", listener); - } - setCurrentFileDisabled() { - var _a; - (_a = this.currentFile) === null || _a === void 0 ? void 0 : _a.setText("---"); - } - setCurrentVaultDisabled() { - var _a; - (_a = this.currentVault) === null || _a === void 0 ? void 0 : _a.setText("---"); - } - setCustomDictionaryDisabled() { - var _a; - (_a = this.customDictionary) === null || _a === void 0 ? void 0 : _a.setText("---"); - } - setInternalLinkDisabled() { - var _a; - (_a = this.internalLink) === null || _a === void 0 ? void 0 : _a.setText("---"); - } - setFrontMatterDisabled() { - var _a; - (_a = this.frontMatter) === null || _a === void 0 ? void 0 : _a.setText("---"); - } - setCurrentFileIndexing() { - var _a; - (_a = this.currentFile) === null || _a === void 0 ? void 0 : _a.setText("indexing..."); - } - setCurrentVaultIndexing() { - var _a; - (_a = this.currentVault) === null || _a === void 0 ? void 0 : _a.setText("indexing..."); - } - setCustomDictionaryIndexing() { - var _a; - (_a = this.customDictionary) === null || _a === void 0 ? void 0 : _a.setText("indexing..."); - } - setInternalLinkIndexing() { - var _a; - (_a = this.internalLink) === null || _a === void 0 ? void 0 : _a.setText("indexing..."); - } - setFrontMatterIndexing() { - var _a; - (_a = this.frontMatter) === null || _a === void 0 ? void 0 : _a.setText("indexing..."); - } - setCurrentFileIndexed(count) { - var _a; - (_a = this.currentFile) === null || _a === void 0 ? void 0 : _a.setText(String(count)); - } - setCurrentVaultIndexed(count) { - var _a; - (_a = this.currentVault) === null || _a === void 0 ? void 0 : _a.setText(String(count)); - } - setCustomDictionaryIndexed(count) { - var _a; - (_a = this.customDictionary) === null || _a === void 0 ? void 0 : _a.setText(String(count)); - } - setInternalLinkIndexed(count) { - var _a; - (_a = this.internalLink) === null || _a === void 0 ? void 0 : _a.setText(String(count)); - } - setFrontMatterIndexed(count) { - var _a; - (_a = this.frontMatter) === null || _a === void 0 ? void 0 : _a.setText(String(count)); - } - setMatchStrategy(strategy) { - var _a; - (_a = this.matchStrategy) === null || _a === void 0 ? void 0 : _a.setText(strategy.name); - } - setComplementAutomatically(automatically) { - var _a; - (_a = this.complementAutomatically) === null || _a === void 0 ? void 0 : _a.setText(automatically ? "auto" : "manual"); - } -} +// src/provider/SpecificMatchStrategy.ts +var neverUsedHandler = (..._args) => []; +var _SpecificMatchStrategy = class { + constructor(name, handler) { + this.name = name; + this.handler = handler; + _SpecificMatchStrategy._values.push(this); + } + static fromName(name) { + return _SpecificMatchStrategy._values.find((x) => x.name === name); + } + static values() { + return _SpecificMatchStrategy._values; + } +}; +var SpecificMatchStrategy = _SpecificMatchStrategy; +SpecificMatchStrategy._values = []; +SpecificMatchStrategy.INHERIT = new _SpecificMatchStrategy( + "inherit", + neverUsedHandler +); +SpecificMatchStrategy.PREFIX = new _SpecificMatchStrategy("prefix", suggestWords); +SpecificMatchStrategy.PARTIAL = new _SpecificMatchStrategy( + "partial", + suggestWordsByPartialMatch +); -function noop() { } +// src/storage/SelectionHistoryStorage.ts +var SEC = 1e3; +var MIN = SEC * 60; +var HOUR = MIN * 60; +var DAY = HOUR * 24; +var WEEK = DAY * 7; +function calcScore(history, latestUpdated) { + if (!history) { + return 0; + } + if (history.lastUpdated === latestUpdated) { + return Number.MAX_SAFE_INTEGER; + } + const behind = Date.now() - history.lastUpdated; + if (behind < MIN) { + return 8 * history.count; + } else if (behind < HOUR) { + return 4 * history.count; + } else if (behind < DAY) { + return 2 * history.count; + } else if (behind < WEEK) { + return 0.5 * history.count; + } else { + return 0.25 * history.count; + } +} +var SelectionHistoryStorage = class { + constructor(data = {}, maxDaysToKeepHistory, maxNumberOfHistoryToKeep) { + this.data = data; + const now = Date.now(); + this.version = now; + this.persistedVersion = now; + this.maxDaysToKeepHistory = maxDaysToKeepHistory; + this.maxNumberOfHistoryToKeep = maxNumberOfHistoryToKeep; + } + purge() { + var _a; + const now = Date.now(); + const times = []; + for (const hit of Object.keys(this.data)) { + for (const value of Object.keys(this.data[hit])) { + for (const kind of Object.keys(this.data[hit][value])) { + if (this.maxDaysToKeepHistory && now - this.data[hit][value][kind].lastUpdated > this.maxDaysToKeepHistory * DAY) { + delete this.data[hit][value][kind]; + } else { + times.push(this.data[hit][value][kind].lastUpdated); + } + } + if (Object.isEmpty(this.data[hit][value])) { + delete this.data[hit][value]; + } + } + if (Object.isEmpty(this.data[hit])) { + delete this.data[hit]; + } + } + if (this.maxNumberOfHistoryToKeep) { + const threshold = (_a = times.sort((a, b) => a > b ? -1 : 1).slice(0, this.maxNumberOfHistoryToKeep).at(-1)) != null ? _a : 0; + for (const hit of Object.keys(this.data)) { + for (const value of Object.keys(this.data[hit])) { + for (const kind of Object.keys(this.data[hit][value])) { + if (this.data[hit][value][kind].lastUpdated < threshold) { + delete this.data[hit][value][kind]; + } + } + if (Object.isEmpty(this.data[hit][value])) { + delete this.data[hit][value]; + } + } + if (Object.isEmpty(this.data[hit])) { + delete this.data[hit]; + } + } + } + } + getSelectionHistory(word) { + var _a, _b; + return (_b = (_a = this.data[word.hit]) == null ? void 0 : _a[word.value]) == null ? void 0 : _b[word.type]; + } + increment(word) { + if (!this.data[word.hit]) { + this.data[word.hit] = {}; + } + if (!this.data[word.hit][word.value]) { + this.data[word.hit][word.value] = {}; + } + if (this.data[word.hit][word.value][word.type]) { + this.data[word.hit][word.value][word.type] = { + count: this.data[word.hit][word.value][word.type].count + 1, + lastUpdated: Date.now() + }; + } else { + this.data[word.hit][word.value][word.type] = { + count: 1, + lastUpdated: Date.now() + }; + } + this.version = Date.now(); + } + compare(w1, w2, latestUpdated) { + const score1 = calcScore(this.getSelectionHistory(w1), latestUpdated); + const score2 = calcScore(this.getSelectionHistory(w2), latestUpdated); + if (score1 === score2) { + return 0; + } + return score1 > score2 ? -1 : 1; + } + get shouldPersist() { + return this.version > this.persistedVersion; + } + syncPersistVersion() { + this.persistedVersion = this.version; + } +}; + +// src/ui/AutoCompleteSuggest.ts +function buildLogMessage(message, msec) { + return `${message}: ${Math.round(msec)}[ms]`; +} +var AutoCompleteSuggest = class extends import_obsidian3.EditorSuggest { + constructor(app, statusBar) { + super(app); + this.previousCurrentLine = ""; + this.keymapEventHandler = []; + this.appHelper = new AppHelper(app); + this.statusBar = statusBar; + } + triggerComplete() { + const editor = this.appHelper.getCurrentEditor(); + const activeFile = this.app.workspace.getActiveFile(); + if (!editor || !activeFile) { + return; + } + this.runManually = true; + this.trigger(editor, activeFile, true); + } + hideCompletion() { + this.close(); + } + static async new(app, settings, statusBar, onPersistSelectionHistory) { + const ins = new AutoCompleteSuggest(app, statusBar); + ins.currentFileWordProvider = new CurrentFileWordProvider( + ins.app, + ins.appHelper + ); + ins.currentVaultWordProvider = new CurrentVaultWordProvider( + ins.app, + ins.appHelper + ); + ins.customDictionaryWordProvider = new CustomDictionaryWordProvider( + ins.app, + ins.appHelper + ); + ins.internalLinkWordProvider = new InternalLinkWordProvider( + ins.app, + ins.appHelper + ); + ins.frontMatterWordProvider = new FrontMatterWordProvider( + ins.app, + ins.appHelper + ); + ins.selectionHistoryStorage = new SelectionHistoryStorage( + settings.selectionHistoryTree, + settings.intelligentSuggestionPrioritization.maxDaysToKeepHistory, + settings.intelligentSuggestionPrioritization.maxNumberOfHistoryToKeep + ); + ins.selectionHistoryStorage.purge(); + await ins.updateSettings(settings); + ins.modifyEventRef = app.vault.on("modify", async (_) => { + var _a; + await ins.refreshCurrentFileTokens(); + if ((_a = ins.selectionHistoryStorage) == null ? void 0 : _a.shouldPersist) { + ins.settings.selectionHistoryTree = ins.selectionHistoryStorage.data; + ins.selectionHistoryStorage.syncPersistVersion(); + onPersistSelectionHistory(); + } + }); + ins.activeLeafChangeRef = app.workspace.on( + "active-leaf-change", + async (_) => { + await ins.refreshCurrentFileTokens(); + ins.refreshInternalLinkTokens(); + ins.updateFrontMatterToken(); + } + ); + ins.metadataCacheChangeRef = app.metadataCache.on("changed", (f) => { + ins.updateFrontMatterTokenIndex(f); + if (!ins.appHelper.isActiveFile(f)) { + ins.updateFrontMatterToken(); + } + }); + const cacheResolvedRef = app.metadataCache.on("resolved", async () => { + ins.refreshInternalLinkTokens(); + ins.refreshFrontMatterTokens(); + ins.refreshCustomDictionaryTokens(); + ins.refreshCurrentVaultTokens(); + ins.app.metadataCache.offref(cacheResolvedRef); + }); + return ins; + } + predictableComplete() { + const editor = this.appHelper.getCurrentEditor(); + if (!editor) { + return; + } + const cursor = editor.getCursor(); + const currentToken = this.tokenizer.tokenize(editor.getLine(cursor.line).slice(0, cursor.ch)).last(); + if (!currentToken) { + return; + } + let suggestion = this.tokenizer.tokenize( + editor.getRange({ line: Math.max(cursor.line - 50, 0), ch: 0 }, cursor) + ).reverse().slice(1).find((x) => x.startsWith(currentToken)); + if (!suggestion) { + suggestion = this.tokenizer.tokenize( + editor.getRange(cursor, { + line: Math.min(cursor.line + 50, editor.lineCount() - 1), + ch: 0 + }) + ).find((x) => x.startsWith(currentToken)); + } + if (!suggestion) { + return; + } + editor.replaceRange( + suggestion, + { line: cursor.line, ch: cursor.ch - currentToken.length }, + { line: cursor.line, ch: cursor.ch } + ); + this.close(); + this.debounceClose(); + } + unregister() { + this.app.vault.offref(this.modifyEventRef); + this.app.workspace.offref(this.activeLeafChangeRef); + this.app.metadataCache.offref(this.metadataCacheChangeRef); + } + get tokenizerStrategy() { + return TokenizeStrategy.fromName(this.settings.strategy); + } + get matchStrategy() { + return MatchStrategy.fromName(this.settings.matchStrategy); + } + get frontMatterComplementStrategy() { + return SpecificMatchStrategy.fromName( + this.settings.frontMatterComplementMatchStrategy + ); + } + get minNumberTriggered() { + return this.settings.minNumberOfCharactersTriggered || this.tokenizerStrategy.triggerThreshold; + } + get currentFileMinNumberOfCharacters() { + return this.settings.currentFileMinNumberOfCharacters || this.tokenizerStrategy.indexingThreshold; + } + get currentVaultMinNumberOfCharacters() { + return this.settings.currentVaultMinNumberOfCharacters || this.tokenizerStrategy.indexingThreshold; + } + get descriptionOnSuggestion() { + return DescriptionOnSuggestion.fromName( + this.settings.descriptionOnSuggestion + ); + } + get excludeInternalLinkPrefixPathPatterns() { + return this.settings.excludeInternalLinkPathPrefixPatterns.split("\n").filter((x) => x); + } + get indexedWords() { + return { + currentFile: this.currentFileWordProvider.wordsByFirstLetter, + currentVault: this.currentVaultWordProvider.wordsByFirstLetter, + customDictionary: this.customDictionaryWordProvider.wordsByFirstLetter, + internalLink: this.internalLinkWordProvider.wordsByFirstLetter, + frontMatter: this.frontMatterWordProvider.wordsByFirstLetterByKey + }; + } + async updateSettings(settings) { + this.settings = settings; + this.statusBar.setMatchStrategy(this.matchStrategy); + this.statusBar.setComplementAutomatically( + this.settings.complementAutomatically + ); + try { + this.tokenizer = await createTokenizer(this.tokenizerStrategy, this.app); + } catch (e) { + new import_obsidian3.Notice(e.message, 0); + } + this.currentFileWordProvider.setSettings(this.tokenizer); + this.currentVaultWordProvider.setSettings( + this.tokenizer, + settings.includeCurrentVaultPathPrefixPatterns.split("\n").filter((x) => x), + settings.excludeCurrentVaultPathPrefixPatterns.split("\n").filter((x) => x), + settings.includeCurrentVaultOnlyFilesUnderCurrentDirectory + ); + this.customDictionaryWordProvider.setSettings( + settings.customDictionaryPaths.split("\n").filter((x) => x), + ColumnDelimiter.fromName(settings.columnDelimiter), + settings.delimiterToDivideSuggestionsForDisplayFromInsertion || null + ); + this.debounceGetSuggestions = (0, import_obsidian3.debounce)( + (context, cb) => { + const start = performance.now(); + this.showDebugLog(() => `[context.query]: ${context.query}`); + const parsedQuery = JSON.parse(context.query); + const words = parsedQuery.queries.filter( + (x, i, xs) => parsedQuery.currentFrontMatter || this.settings.minNumberOfWordsTriggeredPhrase + i - 1 < xs.length && x.word.length >= this.minNumberTriggered && !x.word.endsWith(" ") + ).map((q) => { + const handler = parsedQuery.currentFrontMatter && this.frontMatterComplementStrategy !== SpecificMatchStrategy.INHERIT ? this.frontMatterComplementStrategy.handler : this.matchStrategy.handler; + return handler( + this.indexedWords, + q.word, + this.settings.maxNumberOfSuggestions, + { + frontMatter: parsedQuery.currentFrontMatter, + selectionHistoryStorage: this.selectionHistoryStorage + } + ).map((word) => ({ ...word, offset: q.offset })); + }).flat(); + cb( + uniqWith(words, suggestionUniqPredicate).slice( + 0, + this.settings.maxNumberOfSuggestions + ) + ); + this.showDebugLog( + () => buildLogMessage("Get suggestions", performance.now() - start) + ); + }, + this.settings.delayMilliSeconds, + true + ); + this.debounceClose = (0, import_obsidian3.debounce)(() => { + this.close(); + }, this.settings.delayMilliSeconds + 50); + this.registerKeymaps(); + } + registerKeymaps() { + const registerKeyAsIgnored = (modifiers, key) => { + this.keymapEventHandler.push( + this.scope.register(modifiers, key, () => { + this.close(); + return true; + }) + ); + }; + this.keymapEventHandler.forEach((x) => this.scope.unregister(x)); + this.keymapEventHandler = []; + this.scope.unregister(this.scope.keys.find((x) => x.key === "Enter")); + this.scope.unregister(this.scope.keys.find((x) => x.key === "ArrowUp")); + this.scope.unregister(this.scope.keys.find((x) => x.key === "ArrowDown")); + const selectSuggestionKey = SelectSuggestionKey.fromName( + this.settings.selectSuggestionKeys + ); + if (selectSuggestionKey !== SelectSuggestionKey.ENTER) { + registerKeyAsIgnored( + SelectSuggestionKey.ENTER.keyBind.modifiers, + SelectSuggestionKey.ENTER.keyBind.key + ); + } + if (selectSuggestionKey !== SelectSuggestionKey.TAB) { + registerKeyAsIgnored( + SelectSuggestionKey.TAB.keyBind.modifiers, + SelectSuggestionKey.TAB.keyBind.key + ); + } + if (selectSuggestionKey !== SelectSuggestionKey.None) { + this.keymapEventHandler.push( + this.scope.register( + selectSuggestionKey.keyBind.modifiers, + selectSuggestionKey.keyBind.key, + () => { + this.suggestions.useSelectedItem({}); + return false; + } + ) + ); + } + this.scope.keys.find((x) => x.key === "Escape").func = () => { + this.close(); + return this.settings.propagateEsc; + }; + const selectNext = (evt) => { + this.suggestions.setSelectedItem(this.suggestions.selectedItem + 1, evt); + return false; + }; + const selectPrevious = (evt) => { + this.suggestions.setSelectedItem(this.suggestions.selectedItem - 1, evt); + return false; + }; + const cycleThroughSuggestionsKeys = CycleThroughSuggestionsKeys.fromName( + this.settings.additionalCycleThroughSuggestionsKeys + ); + if (this.settings.disableUpDownKeysForCycleThroughSuggestionsKeys) { + this.keymapEventHandler.push( + this.scope.register([], "ArrowDown", () => { + this.close(); + return true; + }), + this.scope.register([], "ArrowUp", () => { + this.close(); + return true; + }) + ); + } else { + this.keymapEventHandler.push( + this.scope.register([], "ArrowDown", selectNext), + this.scope.register([], "ArrowUp", selectPrevious) + ); + } + if (cycleThroughSuggestionsKeys !== CycleThroughSuggestionsKeys.NONE) { + if (cycleThroughSuggestionsKeys === CycleThroughSuggestionsKeys.TAB) { + this.scope.unregister( + this.scope.keys.find((x) => x.modifiers === "" && x.key === "Tab") + ); + } + this.keymapEventHandler.push( + this.scope.register( + cycleThroughSuggestionsKeys.nextKey.modifiers, + cycleThroughSuggestionsKeys.nextKey.key, + selectNext + ), + this.scope.register( + cycleThroughSuggestionsKeys.previousKey.modifiers, + cycleThroughSuggestionsKeys.previousKey.key, + selectPrevious + ) + ); + } + const openSourceFileKey = OpenSourceFileKeys.fromName( + this.settings.openSourceFileKey + ); + if (openSourceFileKey !== OpenSourceFileKeys.NONE) { + this.keymapEventHandler.push( + this.scope.register( + openSourceFileKey.keyBind.modifiers, + openSourceFileKey.keyBind.key, + () => { + const item = this.suggestions.values[this.suggestions.selectedItem]; + if (item.type !== "currentVault" && item.type !== "internalLink" && item.type !== "frontMatter") { + return false; + } + const markdownFile = this.appHelper.getMarkdownFileByPath( + item.createdPath + ); + if (!markdownFile) { + new import_obsidian3.Notice(`Can't open ${item.createdPath}`); + return false; + } + this.appHelper.openMarkdownFile(markdownFile, true); + return false; + } + ) + ); + } + } + async refreshCurrentFileTokens() { + const start = performance.now(); + this.statusBar.setCurrentFileIndexing(); + if (!this.settings.enableCurrentFileComplement) { + this.statusBar.setCurrentFileDisabled(); + this.currentFileWordProvider.clearWords(); + this.showDebugLog( + () => buildLogMessage( + "\u{1F462} Skip: Index current file tokens", + performance.now() - start + ) + ); + return; + } + await this.currentFileWordProvider.refreshWords( + this.settings.onlyComplementEnglishOnCurrentFileComplement, + this.currentFileMinNumberOfCharacters + ); + this.statusBar.setCurrentFileIndexed( + this.currentFileWordProvider.wordCount + ); + this.showDebugLog( + () => buildLogMessage("Index current file tokens", performance.now() - start) + ); + } + async refreshCurrentVaultTokens() { + const start = performance.now(); + this.statusBar.setCurrentVaultIndexing(); + if (!this.settings.enableCurrentVaultComplement) { + this.statusBar.setCurrentVaultDisabled(); + this.currentVaultWordProvider.clearWords(); + this.showDebugLog( + () => buildLogMessage( + "\u{1F462} Skip: Index current vault tokens", + performance.now() - start + ) + ); + return; + } + await this.currentVaultWordProvider.refreshWords( + this.currentVaultMinNumberOfCharacters + ); + this.statusBar.setCurrentVaultIndexed( + this.currentVaultWordProvider.wordCount + ); + this.showDebugLog( + () => buildLogMessage("Index current vault tokens", performance.now() - start) + ); + } + async refreshCustomDictionaryTokens() { + const start = performance.now(); + this.statusBar.setCustomDictionaryIndexing(); + if (!this.settings.enableCustomDictionaryComplement) { + this.statusBar.setCustomDictionaryDisabled(); + this.customDictionaryWordProvider.clearWords(); + this.showDebugLog( + () => buildLogMessage( + "\u{1F462}Skip: Index custom dictionary tokens", + performance.now() - start + ) + ); + return; + } + await this.customDictionaryWordProvider.refreshCustomWords({ + regexp: this.settings.customDictionaryWordRegexPattern, + delimiterForHide: this.settings.delimiterToHideSuggestion || void 0, + delimiterForDisplay: this.settings.delimiterToDivideSuggestionsForDisplayFromInsertion || void 0, + caretSymbol: this.settings.caretLocationSymbolAfterComplement || void 0 + }); + this.statusBar.setCustomDictionaryIndexed( + this.customDictionaryWordProvider.wordCount + ); + this.showDebugLog( + () => buildLogMessage( + "Index custom dictionary tokens", + performance.now() - start + ) + ); + } + refreshInternalLinkTokens() { + const start = performance.now(); + this.statusBar.setInternalLinkIndexing(); + if (!this.settings.enableInternalLinkComplement) { + this.statusBar.setInternalLinkDisabled(); + this.internalLinkWordProvider.clearWords(); + this.showDebugLog( + () => buildLogMessage( + "\u{1F462}Skip: Index internal link tokens", + performance.now() - start + ) + ); + return; + } + this.internalLinkWordProvider.refreshWords( + this.settings.suggestInternalLinkWithAlias, + this.excludeInternalLinkPrefixPathPatterns + ); + this.statusBar.setInternalLinkIndexed( + this.internalLinkWordProvider.wordCount + ); + this.showDebugLog( + () => buildLogMessage("Index internal link tokens", performance.now() - start) + ); + } + refreshFrontMatterTokens() { + const start = performance.now(); + this.statusBar.setFrontMatterIndexing(); + if (!this.settings.enableFrontMatterComplement) { + this.statusBar.setFrontMatterDisabled(); + this.frontMatterWordProvider.clearWords(); + this.showDebugLog( + () => buildLogMessage( + "\u{1F462}Skip: Index front matter tokens", + performance.now() - start + ) + ); + return; + } + this.frontMatterWordProvider.refreshWords(); + this.statusBar.setFrontMatterIndexed( + this.frontMatterWordProvider.wordCount + ); + this.showDebugLog( + () => buildLogMessage("Index front matter tokens", performance.now() - start) + ); + } + updateFrontMatterTokenIndex(file) { + const start = performance.now(); + if (!this.settings.enableFrontMatterComplement) { + this.showDebugLog( + () => buildLogMessage( + "\u{1F462}Skip: Update front matter token index", + performance.now() - start + ) + ); + return; + } + this.frontMatterWordProvider.updateWordIndex(file); + this.showDebugLog( + () => buildLogMessage( + "Update front matter token index", + performance.now() - start + ) + ); + } + updateFrontMatterToken() { + const start = performance.now(); + if (!this.settings.enableFrontMatterComplement) { + this.showDebugLog( + () => buildLogMessage( + "\u{1F462}Skip: Update front matter token", + performance.now() - start + ) + ); + return; + } + this.frontMatterWordProvider.updateWords(); + this.statusBar.setFrontMatterIndexed( + this.frontMatterWordProvider.wordCount + ); + this.showDebugLog( + () => buildLogMessage("Update front matter token", performance.now() - start) + ); + } + onTrigger(cursor, editor, file) { + var _a, _b, _c, _d, _e, _f; + const start = performance.now(); + const showDebugLog = (message) => { + this.showDebugLog(() => `[onTrigger] ${message}`); + }; + const onReturnNull = (message) => { + showDebugLog(message); + this.runManually = false; + this.close(); + }; + if (!this.settings.complementAutomatically && !this.isOpen && !this.runManually) { + onReturnNull("Don't show suggestions"); + return null; + } + if (this.settings.disableSuggestionsDuringImeOn && this.appHelper.isIMEOn() && !this.runManually) { + onReturnNull("Don't show suggestions for IME"); + return null; + } + const cl = this.appHelper.getCurrentLine(editor); + if (this.previousCurrentLine === cl && !this.runManually) { + this.previousCurrentLine = cl; + onReturnNull("Don't show suggestions because there are no changes"); + return null; + } + this.previousCurrentLine = cl; + const currentLineUntilCursor = this.appHelper.getCurrentLineUntilCursor(editor); + if (currentLineUntilCursor.startsWith("---")) { + onReturnNull( + "Don't show suggestions because it supposes front matter or horizontal line" + ); + return null; + } + if (currentLineUntilCursor.startsWith("~~~") || currentLineUntilCursor.startsWith("```")) { + onReturnNull( + "Don't show suggestions because it supposes front code block" + ); + return null; + } + const tokens = this.tokenizer.tokenize(currentLineUntilCursor, true); + showDebugLog(`tokens is ${tokens}`); + const tokenized = this.tokenizer.recursiveTokenize(currentLineUntilCursor); + const currentTokens = tokenized.slice( + tokenized.length > this.settings.maxNumberOfWordsAsPhrase ? tokenized.length - this.settings.maxNumberOfWordsAsPhrase : 0 + ); + showDebugLog(`currentTokens is ${JSON.stringify(currentTokens)}`); + const currentToken = (_a = currentTokens[0]) == null ? void 0 : _a.word; + showDebugLog(`currentToken is ${currentToken}`); + if (!currentToken) { + onReturnNull(`Don't show suggestions because currentToken is empty`); + return null; + } + const currentTokenSeparatedWhiteSpace = (_b = currentLineUntilCursor.split(" ").last()) != null ? _b : ""; + if (new RegExp(`^[${this.settings.firstCharactersDisableSuggestions}]`).test( + currentTokenSeparatedWhiteSpace + )) { + onReturnNull( + `Don't show suggestions for avoiding to conflict with the other commands.` + ); + return null; + } + if (currentToken.length === 1 && Boolean(currentToken.match(this.tokenizer.getTrimPattern()))) { + onReturnNull( + `Don't show suggestions because currentToken is TRIM_PATTERN` + ); + return null; + } + const currentFrontMatter = this.settings.enableFrontMatterComplement ? this.appHelper.getCurrentFrontMatter() : void 0; + showDebugLog(`Current front matter is ${currentFrontMatter}`); + if (!this.runManually && !currentFrontMatter && currentToken.length < this.minNumberTriggered) { + onReturnNull( + "Don't show suggestions because currentToken is less than minNumberTriggered option" + ); + return null; + } + showDebugLog(buildLogMessage("onTrigger", performance.now() - start)); + this.runManually = false; + if (currentFrontMatter && ((_c = currentTokens.last()) == null ? void 0 : _c.word.match(/[^ ] $/))) { + currentTokens.push({ word: "", offset: currentLineUntilCursor.length }); + } + this.contextStartCh = cursor.ch - currentToken.length; + return { + start: { + ch: cursor.ch - ((_f = (_e = (_d = currentTokens.last()) == null ? void 0 : _d.word) == null ? void 0 : _e.length) != null ? _f : 0), + line: cursor.line + }, + end: cursor, + query: JSON.stringify({ + currentFrontMatter, + queries: currentTokens.map((x) => ({ + ...x, + offset: x.offset - currentTokens[0].offset + })) + }) + }; + } + getSuggestions(context) { + return new Promise((resolve) => { + this.debounceGetSuggestions(context, (words) => { + resolve(words); + }); + }); + } + renderSuggestion(word, el) { + const base = createDiv(); + let text2 = word.value; + if (word.type === "customDictionary" && word.insertedText && this.settings.displayedTextSuffix) { + text2 += this.settings.displayedTextSuffix; + } + base.createDiv({ + text: text2, + cls: word.type === "internalLink" && word.aliasMeta ? "various-complements__suggestion-item__content__alias" : void 0 + }); + const description = this.descriptionOnSuggestion.toDisplay(word); + if (description) { + base.createDiv({ + cls: "various-complements__suggestion-item__description", + text: `${description}` + }); + } + el.appendChild(base); + el.addClass("various-complements__suggestion-item"); + switch (word.type) { + case "currentFile": + el.addClass("various-complements__suggestion-item__current-file"); + break; + case "currentVault": + el.addClass("various-complements__suggestion-item__current-vault"); + break; + case "customDictionary": + el.addClass("various-complements__suggestion-item__custom-dictionary"); + break; + case "internalLink": + el.addClass("various-complements__suggestion-item__internal-link"); + if (word.phantom) { + el.addClass("various-complements__suggestion-item__phantom"); + } + break; + case "frontMatter": + el.addClass("various-complements__suggestion-item__front-matter"); + break; + } + } + selectSuggestion(word, evt) { + var _a, _b; + if (!this.context) { + return; + } + let insertedText = word.value; + if (word.type === "internalLink") { + if (this.settings.suggestInternalLinkWithAlias && word.aliasMeta) { + const linkText = this.appHelper.optimizeMarkdownLinkText( + word.aliasMeta.origin + ); + insertedText = this.appHelper.useWikiLinks ? `[[${linkText}|${word.value}]]` : `[${word.value}](${encodeSpace(linkText)}.md)`; + } else { + const linkText = this.appHelper.optimizeMarkdownLinkText( + word.phantom ? word.value : word.createdPath + ); + insertedText = this.appHelper.useWikiLinks ? `[[${linkText}]]` : `[${linkText}](${encodeSpace(linkText)}.md)`; + } + } + if (word.type === "frontMatter" && this.settings.insertCommaAfterFrontMatterCompletion) { + insertedText = `${insertedText}, `; + } else { + if (this.settings.insertAfterCompletion && !(word.type === "customDictionary" && word.ignoreSpaceAfterCompletion)) { + insertedText = `${insertedText} `; + } + } + let positionToMove = -1; + if (word.type === "customDictionary") { + if (word.insertedText) { + insertedText = word.insertedText; + } + const caret = word.caretSymbol; + if (caret) { + positionToMove = insertedText.indexOf(caret); + insertedText = insertedText.replace(caret, ""); + } + } + const editor = this.context.editor; + editor.replaceRange( + insertedText, + { + ...this.context.start, + ch: this.contextStartCh + word.offset + }, + this.context.end + ); + if (positionToMove !== -1) { + editor.setCursor( + editor.offsetToPos( + editor.posToOffset(editor.getCursor()) - insertedText.length + positionToMove + ) + ); + } + if (this.appHelper.equalsAsEditorPostion(this.context.start, this.context.end)) { + editor.setCursor( + editor.offsetToPos( + editor.posToOffset(editor.getCursor()) + insertedText.length + ) + ); + } + (_a = this.selectionHistoryStorage) == null ? void 0 : _a.increment(word); + if (this.settings.showLogAboutPerformanceInConsole) { + console.log("--- history ---"); + console.log((_b = this.selectionHistoryStorage) == null ? void 0 : _b.data); + } + this.close(); + this.debounceClose(); + } + showDebugLog(toMessage) { + if (this.settings.showLogAboutPerformanceInConsole) { + console.log(toMessage()); + } + } +}; + +// src/setting/settings.ts +var import_obsidian4 = require("obsidian"); +var DEFAULT_SETTINGS = { + strategy: "default", + matchStrategy: "prefix", + maxNumberOfSuggestions: 5, + maxNumberOfWordsAsPhrase: 3, + minNumberOfCharactersTriggered: 0, + minNumberOfWordsTriggeredPhrase: 1, + complementAutomatically: true, + delayMilliSeconds: 0, + disableSuggestionsDuringImeOn: false, + insertAfterCompletion: true, + firstCharactersDisableSuggestions: ":/^", + showMatchStrategy: true, + showComplementAutomatically: true, + showIndexingStatus: true, + descriptionOnSuggestion: "Short", + selectSuggestionKeys: "Enter", + additionalCycleThroughSuggestionsKeys: "None", + disableUpDownKeysForCycleThroughSuggestionsKeys: false, + openSourceFileKey: "None", + propagateEsc: false, + enableCurrentFileComplement: true, + currentFileMinNumberOfCharacters: 0, + onlyComplementEnglishOnCurrentFileComplement: false, + enableCurrentVaultComplement: false, + currentVaultMinNumberOfCharacters: 0, + includeCurrentVaultPathPrefixPatterns: "", + excludeCurrentVaultPathPrefixPatterns: "", + includeCurrentVaultOnlyFilesUnderCurrentDirectory: false, + enableCustomDictionaryComplement: false, + customDictionaryPaths: `https://raw.githubusercontent.com/first20hours/google-10000-english/master/google-10000-english-no-swears.txt`, + columnDelimiter: "Tab", + customDictionaryWordRegexPattern: "", + delimiterToHideSuggestion: "", + delimiterToDivideSuggestionsForDisplayFromInsertion: "", + caretLocationSymbolAfterComplement: "", + displayedTextSuffix: " => ...", + enableInternalLinkComplement: true, + suggestInternalLinkWithAlias: false, + excludeInternalLinkPathPrefixPatterns: "", + enableFrontMatterComplement: true, + frontMatterComplementMatchStrategy: "inherit", + insertCommaAfterFrontMatterCompletion: false, + intelligentSuggestionPrioritization: { + maxDaysToKeepHistory: 30, + maxNumberOfHistoryToKeep: 0 + }, + showLogAboutPerformanceInConsole: false, + selectionHistoryTree: {} +}; +var VariousComplementsSettingTab = class extends import_obsidian4.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + let { containerEl } = this; + containerEl.empty(); + containerEl.createEl("h2", { text: "Various Complements - Settings" }); + this.addMainSettings(containerEl); + this.addAppearanceSettings(containerEl); + this.addKeyCustomizationSettings(containerEl); + this.addCurrentFileComplementSettings(containerEl); + this.addCurrentVaultComplementSettings(containerEl); + this.addCustomDictionaryComplementSettings(containerEl); + this.addInternalLinkComplementSettings(containerEl); + this.addFrontMatterComplementSettings(containerEl); + this.addIntelligentSuggestionPrioritizationSettings(containerEl); + this.addDebugSettings(containerEl); + } + addMainSettings(containerEl) { + containerEl.createEl("h3", { text: "Main" }); + new import_obsidian4.Setting(containerEl).setName("Strategy").addDropdown( + (tc) => tc.addOptions(mirrorMap(TokenizeStrategy.values(), (x) => x.name)).setValue(this.plugin.settings.strategy).onChange(async (value) => { + this.plugin.settings.strategy = value; + this.display(); + await this.plugin.saveSettings({ + currentFile: true, + currentVault: true + }); + }) + ); + if (this.plugin.settings.strategy === TokenizeStrategy.CHINESE.name) { + const el = containerEl.createEl("div", { + cls: "various-complements__settings__warning" + }); + el.createSpan({ + text: "\u26A0 You need to download `cedict_ts.u8` from" + }); + el.createEl("a", { + href: "https://www.mdbg.net/chinese/dictionary?page=cc-cedict", + text: " the site " + }); + el.createSpan({ + text: "and store it in vault root." + }); + } + new import_obsidian4.Setting(containerEl).setName("Match strategy").addDropdown( + (tc) => tc.addOptions(mirrorMap(MatchStrategy.values(), (x) => x.name)).setValue(this.plugin.settings.matchStrategy).onChange(async (value) => { + this.plugin.settings.matchStrategy = value; + await this.plugin.saveSettings(); + this.display(); + }) + ); + if (this.plugin.settings.matchStrategy === MatchStrategy.PARTIAL.name) { + containerEl.createEl("div", { + text: "\u26A0 `partial` is more than 10 times slower than `prefix`", + cls: "various-complements__settings__warning" + }); + } + new import_obsidian4.Setting(containerEl).setName("Max number of suggestions").addSlider( + (sc) => sc.setLimits(1, 255, 1).setValue(this.plugin.settings.maxNumberOfSuggestions).setDynamicTooltip().onChange(async (value) => { + this.plugin.settings.maxNumberOfSuggestions = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian4.Setting(containerEl).setName("Max number of words as a phrase").setDesc(`[\u26A0Warning] It makes slower more than N times (N is set value)`).addSlider( + (sc) => sc.setLimits(1, 10, 1).setValue(this.plugin.settings.maxNumberOfWordsAsPhrase).setDynamicTooltip().onChange(async (value) => { + this.plugin.settings.maxNumberOfWordsAsPhrase = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian4.Setting(containerEl).setName("Min number of characters for trigger").setDesc("It uses a default value of Strategy if set 0.").addSlider( + (sc) => sc.setLimits(0, 10, 1).setValue(this.plugin.settings.minNumberOfCharactersTriggered).setDynamicTooltip().onChange(async (value) => { + this.plugin.settings.minNumberOfCharactersTriggered = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian4.Setting(containerEl).setName("Min number of words for trigger").addSlider( + (sc) => sc.setLimits(1, 10, 1).setValue(this.plugin.settings.minNumberOfWordsTriggeredPhrase).setDynamicTooltip().onChange(async (value) => { + this.plugin.settings.minNumberOfWordsTriggeredPhrase = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian4.Setting(containerEl).setName("Complement automatically").addToggle((tc) => { + tc.setValue(this.plugin.settings.complementAutomatically).onChange( + async (value) => { + this.plugin.settings.complementAutomatically = value; + await this.plugin.saveSettings(); + } + ); + }); + new import_obsidian4.Setting(containerEl).setName("Delay milli-seconds for trigger").addSlider( + (sc) => sc.setLimits(0, 1e3, 10).setValue(this.plugin.settings.delayMilliSeconds).setDynamicTooltip().onChange(async (value) => { + this.plugin.settings.delayMilliSeconds = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian4.Setting(containerEl).setName("Disable suggestions during IME on").addToggle((tc) => { + tc.setValue( + this.plugin.settings.disableSuggestionsDuringImeOn + ).onChange(async (value) => { + this.plugin.settings.disableSuggestionsDuringImeOn = value; + await this.plugin.saveSettings(); + }); + }); + new import_obsidian4.Setting(containerEl).setName("Insert space after completion").addToggle((tc) => { + tc.setValue(this.plugin.settings.insertAfterCompletion).onChange( + async (value) => { + this.plugin.settings.insertAfterCompletion = value; + await this.plugin.saveSettings(); + } + ); + }); + new import_obsidian4.Setting(containerEl).setName("First characters to disable suggestions").addText((cb) => { + cb.setValue( + this.plugin.settings.firstCharactersDisableSuggestions + ).onChange(async (value) => { + this.plugin.settings.firstCharactersDisableSuggestions = value; + await this.plugin.saveSettings(); + }); + }); + } + addAppearanceSettings(containerEl) { + containerEl.createEl("h3", { text: "Appearance" }); + new import_obsidian4.Setting(containerEl).setName("Show Match strategy").setDesc( + "Show Match strategy at the status bar. Changing this option requires a restart to take effect." + ).addToggle((tc) => { + tc.setValue(this.plugin.settings.showMatchStrategy).onChange( + async (value) => { + this.plugin.settings.showMatchStrategy = value; + await this.plugin.saveSettings(); + } + ); + }); + new import_obsidian4.Setting(containerEl).setName("Show Complement automatically").setDesc( + "Show complement automatically at the status bar. Changing this option requires a restart to take effect." + ).addToggle((tc) => { + tc.setValue(this.plugin.settings.showComplementAutomatically).onChange( + async (value) => { + this.plugin.settings.showComplementAutomatically = value; + await this.plugin.saveSettings(); + } + ); + }); + new import_obsidian4.Setting(containerEl).setName("Show Indexing status").setDesc( + "Show indexing status at the status bar. Changing this option requires a restart to take effect." + ).addToggle((tc) => { + tc.setValue(this.plugin.settings.showIndexingStatus).onChange( + async (value) => { + this.plugin.settings.showIndexingStatus = value; + await this.plugin.saveSettings(); + } + ); + }); + new import_obsidian4.Setting(containerEl).setName("Description on a suggestion").addDropdown( + (tc) => tc.addOptions( + mirrorMap(DescriptionOnSuggestion.values(), (x) => x.name) + ).setValue(this.plugin.settings.descriptionOnSuggestion).onChange(async (value) => { + this.plugin.settings.descriptionOnSuggestion = value; + await this.plugin.saveSettings(); + }) + ); + } + addKeyCustomizationSettings(containerEl) { + containerEl.createEl("h3", { text: "Key customization" }); + new import_obsidian4.Setting(containerEl).setName("Select a suggestion key").addDropdown( + (tc) => tc.addOptions(mirrorMap(SelectSuggestionKey.values(), (x) => x.name)).setValue(this.plugin.settings.selectSuggestionKeys).onChange(async (value) => { + this.plugin.settings.selectSuggestionKeys = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian4.Setting(containerEl).setName("Additional cycle through suggestions keys").addDropdown( + (tc) => tc.addOptions( + mirrorMap(CycleThroughSuggestionsKeys.values(), (x) => x.name) + ).setValue(this.plugin.settings.additionalCycleThroughSuggestionsKeys).onChange(async (value) => { + this.plugin.settings.additionalCycleThroughSuggestionsKeys = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian4.Setting(containerEl).setName("Disable the up/down keys for cycle through suggestions keys").addToggle((tc) => { + tc.setValue( + this.plugin.settings.disableUpDownKeysForCycleThroughSuggestionsKeys + ).onChange(async (value) => { + this.plugin.settings.disableUpDownKeysForCycleThroughSuggestionsKeys = value; + await this.plugin.saveSettings(); + }); + }); + new import_obsidian4.Setting(containerEl).setName("Open source file key").addDropdown( + (tc) => tc.addOptions(mirrorMap(OpenSourceFileKeys.values(), (x) => x.name)).setValue(this.plugin.settings.openSourceFileKey).onChange(async (value) => { + this.plugin.settings.openSourceFileKey = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian4.Setting(containerEl).setName("Propagate ESC").setDesc( + "It is handy if you use Vim mode because you can switch to Normal mode by one ESC, whether it shows suggestions or not." + ).addToggle((tc) => { + tc.setValue(this.plugin.settings.propagateEsc).onChange( + async (value) => { + this.plugin.settings.propagateEsc = value; + await this.plugin.saveSettings(); + } + ); + }); + } + addCurrentFileComplementSettings(containerEl) { + containerEl.createEl("h3", { + text: "Current file complement", + cls: "various-complements__settings__header various-complements__settings__header__current-file" + }); + new import_obsidian4.Setting(containerEl).setName("Enable Current file complement").addToggle((tc) => { + tc.setValue(this.plugin.settings.enableCurrentFileComplement).onChange( + async (value) => { + this.plugin.settings.enableCurrentFileComplement = value; + await this.plugin.saveSettings({ currentFile: true }); + this.display(); + } + ); + }); + if (this.plugin.settings.enableCurrentFileComplement) { + new import_obsidian4.Setting(containerEl).setName("Min number of characters for indexing").setDesc("It uses a default value of Strategy if set 0.").addSlider( + (sc) => sc.setLimits(0, 15, 1).setValue(this.plugin.settings.currentFileMinNumberOfCharacters).setDynamicTooltip().onChange(async (value) => { + this.plugin.settings.currentFileMinNumberOfCharacters = value; + await this.plugin.saveSettings({ currentFile: true }); + }) + ); + new import_obsidian4.Setting(containerEl).setName("Only complement English on current file complement").addToggle((tc) => { + tc.setValue( + this.plugin.settings.onlyComplementEnglishOnCurrentFileComplement + ).onChange(async (value) => { + this.plugin.settings.onlyComplementEnglishOnCurrentFileComplement = value; + await this.plugin.saveSettings({ currentFile: true }); + }); + }); + } + } + addCurrentVaultComplementSettings(containerEl) { + containerEl.createEl("h3", { + text: "Current vault complement", + cls: "various-complements__settings__header various-complements__settings__header__current-vault" + }); + new import_obsidian4.Setting(containerEl).setName("Enable Current vault complement").addToggle((tc) => { + tc.setValue(this.plugin.settings.enableCurrentVaultComplement).onChange( + async (value) => { + this.plugin.settings.enableCurrentVaultComplement = value; + this.display(); + await this.plugin.saveSettings({ currentVault: true }); + } + ); + }); + if (this.plugin.settings.enableCurrentVaultComplement) { + new import_obsidian4.Setting(containerEl).setName("Min number of characters for indexing").setDesc("It uses a default value of Strategy if set 0.").addSlider( + (sc) => sc.setLimits(0, 15, 1).setValue(this.plugin.settings.currentVaultMinNumberOfCharacters).setDynamicTooltip().onChange(async (value) => { + this.plugin.settings.currentVaultMinNumberOfCharacters = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian4.Setting(containerEl).setName("Include prefix path patterns").setDesc("Prefix match path patterns to include files.").addTextArea((tac) => { + const el = tac.setValue( + this.plugin.settings.includeCurrentVaultPathPrefixPatterns + ).setPlaceholder("Private/").onChange(async (value) => { + this.plugin.settings.includeCurrentVaultPathPrefixPatterns = value; + await this.plugin.saveSettings(); + }); + el.inputEl.className = "various-complements__settings__text-area-path"; + return el; + }); + new import_obsidian4.Setting(containerEl).setName("Exclude prefix path patterns").setDesc("Prefix match path patterns to exclude files.").addTextArea((tac) => { + const el = tac.setValue( + this.plugin.settings.excludeCurrentVaultPathPrefixPatterns + ).setPlaceholder("Private/").onChange(async (value) => { + this.plugin.settings.excludeCurrentVaultPathPrefixPatterns = value; + await this.plugin.saveSettings(); + }); + el.inputEl.className = "various-complements__settings__text-area-path"; + return el; + }); + new import_obsidian4.Setting(containerEl).setName("Include only files under current directory").addToggle((tc) => { + tc.setValue( + this.plugin.settings.includeCurrentVaultOnlyFilesUnderCurrentDirectory + ).onChange(async (value) => { + this.plugin.settings.includeCurrentVaultOnlyFilesUnderCurrentDirectory = value; + await this.plugin.saveSettings(); + }); + }); + } + } + addCustomDictionaryComplementSettings(containerEl) { + containerEl.createEl("h3", { + text: "Custom dictionary complement", + cls: "various-complements__settings__header various-complements__settings__header__custom-dictionary" + }); + new import_obsidian4.Setting(containerEl).setName("Enable Custom dictionary complement").addToggle((tc) => { + tc.setValue( + this.plugin.settings.enableCustomDictionaryComplement + ).onChange(async (value) => { + this.plugin.settings.enableCustomDictionaryComplement = value; + await this.plugin.saveSettings({ customDictionary: true }); + this.display(); + }); + }); + if (this.plugin.settings.enableCustomDictionaryComplement) { + new import_obsidian4.Setting(containerEl).setName("Custom dictionary paths").setDesc( + "Specify either a relative path from Vault root or URL for each line." + ).addTextArea((tac) => { + const el = tac.setValue(this.plugin.settings.customDictionaryPaths).setPlaceholder("dictionary.md").onChange(async (value) => { + this.plugin.settings.customDictionaryPaths = value; + await this.plugin.saveSettings(); + }); + el.inputEl.className = "various-complements__settings__text-area-path"; + return el; + }); + new import_obsidian4.Setting(containerEl).setName("Column delimiter").addDropdown( + (tc) => tc.addOptions(mirrorMap(ColumnDelimiter.values(), (x) => x.name)).setValue(this.plugin.settings.columnDelimiter).onChange(async (value) => { + this.plugin.settings.columnDelimiter = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian4.Setting(containerEl).setName("Word regex pattern").setDesc("Only load words that match the regular expression pattern.").addText((cb) => { + cb.setValue( + this.plugin.settings.customDictionaryWordRegexPattern + ).onChange(async (value) => { + this.plugin.settings.customDictionaryWordRegexPattern = value; + await this.plugin.saveSettings(); + }); + }); + new import_obsidian4.Setting(containerEl).setName("Delimiter to hide a suggestion").setDesc( + "If set ';;;', 'abcd;;;efg' is shown as 'abcd' on suggestions, but completes to 'abcdefg'." + ).addText((cb) => { + cb.setValue(this.plugin.settings.delimiterToHideSuggestion).onChange( + async (value) => { + this.plugin.settings.delimiterToHideSuggestion = value; + await this.plugin.saveSettings(); + } + ); + }); + new import_obsidian4.Setting(containerEl).setName( + "Delimiter to divide suggestions for display from ones for insertion" + ).setDesc( + "If set ' >>> ', 'displayed >>> inserted' is shown as 'displayed' on suggestions, but completes to 'inserted'." + ).addText((cb) => { + cb.setValue( + this.plugin.settings.delimiterToDivideSuggestionsForDisplayFromInsertion + ).onChange(async (value) => { + this.plugin.settings.delimiterToDivideSuggestionsForDisplayFromInsertion = value; + await this.plugin.saveSettings(); + }); + }); + new import_obsidian4.Setting(containerEl).setName("Caret location symbol after complement").setDesc( + "If set '' and there is '
  • ' in custom dictionary, it complements '
  • ' and move a caret where between '
  • ' and `
  • `." + ).addText((cb) => { + cb.setValue( + this.plugin.settings.caretLocationSymbolAfterComplement + ).onChange(async (value) => { + this.plugin.settings.caretLocationSymbolAfterComplement = value; + await this.plugin.saveSettings(); + }); + }); + new import_obsidian4.Setting(containerEl).setName("Displayed text suffix").setDesc( + "It shows as a suffix of displayed text if there is a difference between displayed and inserted" + ).addText((cb) => { + cb.setValue(this.plugin.settings.displayedTextSuffix).onChange( + async (value) => { + this.plugin.settings.displayedTextSuffix = value; + await this.plugin.saveSettings(); + } + ); + }); + } + } + addInternalLinkComplementSettings(containerEl) { + containerEl.createEl("h3", { + text: "Internal link complement", + cls: "various-complements__settings__header various-complements__settings__header__internal-link" + }); + new import_obsidian4.Setting(containerEl).setName("Enable Internal link complement").addToggle((tc) => { + tc.setValue(this.plugin.settings.enableInternalLinkComplement).onChange( + async (value) => { + this.plugin.settings.enableInternalLinkComplement = value; + await this.plugin.saveSettings({ internalLink: true }); + this.display(); + } + ); + }); + if (this.plugin.settings.enableInternalLinkComplement) { + new import_obsidian4.Setting(containerEl).setName("Suggest with an alias").addToggle((tc) => { + tc.setValue( + this.plugin.settings.suggestInternalLinkWithAlias + ).onChange(async (value) => { + this.plugin.settings.suggestInternalLinkWithAlias = value; + await this.plugin.saveSettings({ internalLink: true }); + }); + }); + new import_obsidian4.Setting(containerEl).setName("Exclude prefix path patterns").setDesc("Prefix match path patterns to exclude files.").addTextArea((tac) => { + const el = tac.setValue( + this.plugin.settings.excludeInternalLinkPathPrefixPatterns + ).setPlaceholder("Private/").onChange(async (value) => { + this.plugin.settings.excludeInternalLinkPathPrefixPatterns = value; + await this.plugin.saveSettings(); + }); + el.inputEl.className = "various-complements__settings__text-area-path"; + return el; + }); + } + } + addFrontMatterComplementSettings(containerEl) { + containerEl.createEl("h3", { + text: "Front matter complement", + cls: "various-complements__settings__header various-complements__settings__header__front-matter" + }); + new import_obsidian4.Setting(containerEl).setName("Enable Front matter complement").addToggle((tc) => { + tc.setValue(this.plugin.settings.enableFrontMatterComplement).onChange( + async (value) => { + this.plugin.settings.enableFrontMatterComplement = value; + await this.plugin.saveSettings({ frontMatter: true }); + this.display(); + } + ); + }); + if (this.plugin.settings.enableFrontMatterComplement) { + new import_obsidian4.Setting(containerEl).setName("Match strategy in the front matter").addDropdown( + (tc) => tc.addOptions( + mirrorMap(SpecificMatchStrategy.values(), (x) => x.name) + ).setValue(this.plugin.settings.frontMatterComplementMatchStrategy).onChange(async (value) => { + this.plugin.settings.frontMatterComplementMatchStrategy = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian4.Setting(containerEl).setName("Insert comma after completion").addToggle((tc) => { + tc.setValue( + this.plugin.settings.insertCommaAfterFrontMatterCompletion + ).onChange(async (value) => { + this.plugin.settings.insertCommaAfterFrontMatterCompletion = value; + await this.plugin.saveSettings(); + }); + }); + } + } + addIntelligentSuggestionPrioritizationSettings(containerEl) { + containerEl.createEl("h3", { + text: "Intelligent suggestion prioritization", + cls: "various-complements__settings__header various-complements__settings__header__intelligent-suggestion-prioritization" + }); + new import_obsidian4.Setting(containerEl).setName("Max days to keep history").setDesc("If set 0, it will never remove").addSlider( + (sc) => sc.setLimits(0, 365, 1).setValue( + this.plugin.settings.intelligentSuggestionPrioritization.maxDaysToKeepHistory + ).setDynamicTooltip().onChange(async (value) => { + this.plugin.settings.intelligentSuggestionPrioritization.maxDaysToKeepHistory = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian4.Setting(containerEl).setName("Max number of history to keep").setDesc("If set 0, it will never remove").addSlider( + (sc) => sc.setLimits(0, 1e4, 1).setValue( + this.plugin.settings.intelligentSuggestionPrioritization.maxNumberOfHistoryToKeep + ).setDynamicTooltip().onChange(async (value) => { + this.plugin.settings.intelligentSuggestionPrioritization.maxNumberOfHistoryToKeep = value; + await this.plugin.saveSettings(); + }) + ); + } + addDebugSettings(containerEl) { + containerEl.createEl("h3", { text: "Debug" }); + new import_obsidian4.Setting(containerEl).setName("Show log about performance in a console").addToggle((tc) => { + tc.setValue( + this.plugin.settings.showLogAboutPerformanceInConsole + ).onChange(async (value) => { + this.plugin.settings.showLogAboutPerformanceInConsole = value; + await this.plugin.saveSettings(); + }); + }); + } + async toggleMatchStrategy() { + switch (this.plugin.settings.matchStrategy) { + case "prefix": + this.plugin.settings.matchStrategy = "partial"; + break; + case "partial": + this.plugin.settings.matchStrategy = "prefix"; + break; + default: + new import_obsidian4.Notice("\u26A0Unexpected error"); + } + await this.plugin.saveSettings(); + } + async toggleComplementAutomatically() { + this.plugin.settings.complementAutomatically = !this.plugin.settings.complementAutomatically; + await this.plugin.saveSettings(); + } + async ensureCustomDictionaryPath(path, state) { + const paths = this.plugin.settings.customDictionaryPaths.split("\n"); + const exists = paths.some((x) => x === path); + if (exists && state === "present" || !exists && state === "absent") { + return false; + } + const newPaths = state === "present" ? [...paths, path] : paths.filter((x) => x !== path); + this.plugin.settings.customDictionaryPaths = newPaths.join("\n"); + await this.plugin.saveSettings({ customDictionary: true }); + return true; + } + getPluginSettingsAsJsonString() { + return JSON.stringify( + { + version: this.plugin.manifest.version, + mobile: this.app.isMobile, + settings: { ...this.plugin.settings, selectionHistoryTree: null } + }, + null, + 4 + ); + } +}; + +// src/ui/ProviderStatusBar.ts +var ProviderStatusBar = class { + constructor(currentFile, currentVault, customDictionary, internalLink, frontMatter, matchStrategy, complementAutomatically) { + this.currentFile = currentFile; + this.currentVault = currentVault; + this.customDictionary = customDictionary; + this.internalLink = internalLink; + this.frontMatter = frontMatter; + this.matchStrategy = matchStrategy; + this.complementAutomatically = complementAutomatically; + } + static new(statusBar, showMatchStrategy, showIndexingStatus, showComplementAutomatically) { + const currentFile = showIndexingStatus ? statusBar.createEl("span", { + text: "---", + cls: "various-complements__footer various-complements__footer__current-file" + }) : null; + const currentVault = showIndexingStatus ? statusBar.createEl("span", { + text: "---", + cls: "various-complements__footer various-complements__footer__current-vault" + }) : null; + const customDictionary = showIndexingStatus ? statusBar.createEl("span", { + text: "---", + cls: "various-complements__footer various-complements__footer__custom-dictionary" + }) : null; + const internalLink = showIndexingStatus ? statusBar.createEl("span", { + text: "---", + cls: "various-complements__footer various-complements__footer__internal-link" + }) : null; + const frontMatter = showIndexingStatus ? statusBar.createEl("span", { + text: "---", + cls: "various-complements__footer various-complements__footer__front-matter" + }) : null; + const matchStrategy = showMatchStrategy ? statusBar.createEl("span", { + text: "---", + cls: "various-complements__footer various-complements__footer__match-strategy" + }) : null; + const complementAutomatically = showComplementAutomatically ? statusBar.createEl("span", { + text: "---", + cls: "various-complements__footer various-complements__footer__complement-automatically" + }) : null; + return new ProviderStatusBar( + currentFile, + currentVault, + customDictionary, + internalLink, + frontMatter, + matchStrategy, + complementAutomatically + ); + } + setOnClickStrategyListener(listener) { + var _a; + (_a = this.matchStrategy) == null ? void 0 : _a.addEventListener("click", listener); + } + setOnClickComplementAutomatically(listener) { + var _a; + (_a = this.complementAutomatically) == null ? void 0 : _a.addEventListener("click", listener); + } + setCurrentFileDisabled() { + var _a; + (_a = this.currentFile) == null ? void 0 : _a.setText("---"); + } + setCurrentVaultDisabled() { + var _a; + (_a = this.currentVault) == null ? void 0 : _a.setText("---"); + } + setCustomDictionaryDisabled() { + var _a; + (_a = this.customDictionary) == null ? void 0 : _a.setText("---"); + } + setInternalLinkDisabled() { + var _a; + (_a = this.internalLink) == null ? void 0 : _a.setText("---"); + } + setFrontMatterDisabled() { + var _a; + (_a = this.frontMatter) == null ? void 0 : _a.setText("---"); + } + setCurrentFileIndexing() { + var _a; + (_a = this.currentFile) == null ? void 0 : _a.setText("indexing..."); + } + setCurrentVaultIndexing() { + var _a; + (_a = this.currentVault) == null ? void 0 : _a.setText("indexing..."); + } + setCustomDictionaryIndexing() { + var _a; + (_a = this.customDictionary) == null ? void 0 : _a.setText("indexing..."); + } + setInternalLinkIndexing() { + var _a; + (_a = this.internalLink) == null ? void 0 : _a.setText("indexing..."); + } + setFrontMatterIndexing() { + var _a; + (_a = this.frontMatter) == null ? void 0 : _a.setText("indexing..."); + } + setCurrentFileIndexed(count) { + var _a; + (_a = this.currentFile) == null ? void 0 : _a.setText(String(count)); + } + setCurrentVaultIndexed(count) { + var _a; + (_a = this.currentVault) == null ? void 0 : _a.setText(String(count)); + } + setCustomDictionaryIndexed(count) { + var _a; + (_a = this.customDictionary) == null ? void 0 : _a.setText(String(count)); + } + setInternalLinkIndexed(count) { + var _a; + (_a = this.internalLink) == null ? void 0 : _a.setText(String(count)); + } + setFrontMatterIndexed(count) { + var _a; + (_a = this.frontMatter) == null ? void 0 : _a.setText(String(count)); + } + setMatchStrategy(strategy) { + var _a; + (_a = this.matchStrategy) == null ? void 0 : _a.setText(strategy.name); + } + setComplementAutomatically(automatically) { + var _a; + (_a = this.complementAutomatically) == null ? void 0 : _a.setText(automatically ? "auto" : "manual"); + } +}; + +// src/ui/CustomDictionaryWordAddModal.ts +var import_obsidian5 = require("obsidian"); + +// node_modules/svelte/internal/index.mjs +function noop() { +} function assign(tar, src) { - // @ts-ignore - for (const k in src) - tar[k] = src[k]; - return tar; + for (const k in src) + tar[k] = src[k]; + return tar; } function run(fn) { - return fn(); + return fn(); } function blank_object() { - return Object.create(null); + return /* @__PURE__ */ Object.create(null); } function run_all(fns) { - fns.forEach(run); + fns.forEach(run); } function is_function(thing) { - return typeof thing === 'function'; + return typeof thing === "function"; } function safe_not_equal(a, b) { - return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); + return a != a ? b == b : a !== b || (a && typeof a === "object" || typeof a === "function"); } function is_empty(obj) { - return Object.keys(obj).length === 0; + return Object.keys(obj).length === 0; } function create_slot(definition, ctx, $$scope, fn) { - if (definition) { - const slot_ctx = get_slot_context(definition, ctx, $$scope, fn); - return definition[0](slot_ctx); - } + if (definition) { + const slot_ctx = get_slot_context(definition, ctx, $$scope, fn); + return definition[0](slot_ctx); + } } function get_slot_context(definition, ctx, $$scope, fn) { - return definition[1] && fn - ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) - : $$scope.ctx; + return definition[1] && fn ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) : $$scope.ctx; } function get_slot_changes(definition, $$scope, dirty, fn) { - if (definition[2] && fn) { - const lets = definition[2](fn(dirty)); - if ($$scope.dirty === undefined) { - return lets; - } - if (typeof lets === 'object') { - const merged = []; - const len = Math.max($$scope.dirty.length, lets.length); - for (let i = 0; i < len; i += 1) { - merged[i] = $$scope.dirty[i] | lets[i]; - } - return merged; - } - return $$scope.dirty | lets; + if (definition[2] && fn) { + const lets = definition[2](fn(dirty)); + if ($$scope.dirty === void 0) { + return lets; } - return $$scope.dirty; + if (typeof lets === "object") { + const merged = []; + const len = Math.max($$scope.dirty.length, lets.length); + for (let i = 0; i < len; i += 1) { + merged[i] = $$scope.dirty[i] | lets[i]; + } + return merged; + } + return $$scope.dirty | lets; + } + return $$scope.dirty; } function update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) { - if (slot_changes) { - const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn); - slot.p(slot_context, slot_changes); - } + if (slot_changes) { + const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn); + slot.p(slot_context, slot_changes); + } } function get_all_dirty_from_scope($$scope) { - if ($$scope.ctx.length > 32) { - const dirty = []; - const length = $$scope.ctx.length / 32; - for (let i = 0; i < length; i++) { - dirty[i] = -1; - } - return dirty; + if ($$scope.ctx.length > 32) { + const dirty = []; + const length = $$scope.ctx.length / 32; + for (let i = 0; i < length; i++) { + dirty[i] = -1; } - return -1; + return dirty; + } + return -1; } function exclude_internal_props(props) { - const result = {}; - for (const k in props) - if (k[0] !== '$') - result[k] = props[k]; - return result; + const result = {}; + for (const k in props) + if (k[0] !== "$") + result[k] = props[k]; + return result; } function compute_rest_props(props, keys) { - const rest = {}; - keys = new Set(keys); - for (const k in props) - if (!keys.has(k) && k[0] !== '$') - rest[k] = props[k]; - return rest; + const rest = {}; + keys = new Set(keys); + for (const k in props) + if (!keys.has(k) && k[0] !== "$") + rest[k] = props[k]; + return rest; } function null_to_empty(value) { - return value == null ? '' : value; + return value == null ? "" : value; +} +var is_hydrating = false; +function start_hydrating() { + is_hydrating = true; +} +function end_hydrating() { + is_hydrating = false; } function append(target, node) { - target.appendChild(node); + target.appendChild(node); } function append_styles(target, style_sheet_id, styles) { - const append_styles_to = get_root_for_style(target); - if (!append_styles_to.getElementById(style_sheet_id)) { - const style = element('style'); - style.id = style_sheet_id; - style.textContent = styles; - append_stylesheet(append_styles_to, style); - } + const append_styles_to = get_root_for_style(target); + if (!append_styles_to.getElementById(style_sheet_id)) { + const style = element("style"); + style.id = style_sheet_id; + style.textContent = styles; + append_stylesheet(append_styles_to, style); + } } function get_root_for_style(node) { - if (!node) - return document; - const root = node.getRootNode ? node.getRootNode() : node.ownerDocument; - if (root && root.host) { - return root; - } - return node.ownerDocument; + if (!node) + return document; + const root = node.getRootNode ? node.getRootNode() : node.ownerDocument; + if (root && root.host) { + return root; + } + return node.ownerDocument; } function append_stylesheet(node, style) { - append(node.head || node, style); + append(node.head || node, style); + return style.sheet; } function insert(target, node, anchor) { - target.insertBefore(node, anchor || null); + target.insertBefore(node, anchor || null); } function detach(node) { - node.parentNode.removeChild(node); + node.parentNode.removeChild(node); } function destroy_each(iterations, detaching) { - for (let i = 0; i < iterations.length; i += 1) { - if (iterations[i]) - iterations[i].d(detaching); - } + for (let i = 0; i < iterations.length; i += 1) { + if (iterations[i]) + iterations[i].d(detaching); + } } function element(name) { - return document.createElement(name); + return document.createElement(name); } function svg_element(name) { - return document.createElementNS('http://www.w3.org/2000/svg', name); + return document.createElementNS("http://www.w3.org/2000/svg", name); } function text(data) { - return document.createTextNode(data); + return document.createTextNode(data); } function space() { - return text(' '); + return text(" "); } function listen(node, event, handler, options) { - node.addEventListener(event, handler, options); - return () => node.removeEventListener(event, handler, options); + node.addEventListener(event, handler, options); + return () => node.removeEventListener(event, handler, options); } function attr(node, attribute, value) { - if (value == null) - node.removeAttribute(attribute); - else if (node.getAttribute(attribute) !== value) - node.setAttribute(attribute, value); + if (value == null) + node.removeAttribute(attribute); + else if (node.getAttribute(attribute) !== value) + node.setAttribute(attribute, value); } function set_svg_attributes(node, attributes) { - for (const key in attributes) { - attr(node, key, attributes[key]); - } + for (const key in attributes) { + attr(node, key, attributes[key]); + } } -function children(element) { - return Array.from(element.childNodes); +function children(element2) { + return Array.from(element2.childNodes); } -function set_data(text, data) { - data = '' + data; - if (text.wholeText !== data) - text.data = data; +function set_data(text2, data) { + data = "" + data; + if (text2.wholeText !== data) + text2.data = data; } function set_input_value(input, value) { - input.value = value == null ? '' : value; + input.value = value == null ? "" : value; } function set_style(node, key, value, important) { - if (value === null) { - node.style.removeProperty(key); - } - else { - node.style.setProperty(key, value, important ? 'important' : ''); - } + if (value === null) { + node.style.removeProperty(key); + } else { + node.style.setProperty(key, value, important ? "important" : ""); + } } function select_option(select, value) { - for (let i = 0; i < select.options.length; i += 1) { - const option = select.options[i]; - if (option.__value === value) { - option.selected = true; - return; - } + for (let i = 0; i < select.options.length; i += 1) { + const option = select.options[i]; + if (option.__value === value) { + option.selected = true; + return; } - select.selectedIndex = -1; // no option should be selected + } + select.selectedIndex = -1; } function select_value(select) { - const selected_option = select.querySelector(':checked') || select.options[0]; - return selected_option && selected_option.__value; + const selected_option = select.querySelector(":checked") || select.options[0]; + return selected_option && selected_option.__value; } -function toggle_class(element, name, toggle) { - element.classList[toggle ? 'add' : 'remove'](name); +function toggle_class(element2, name, toggle) { + element2.classList[toggle ? "add" : "remove"](name); } function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) { - const e = document.createEvent('CustomEvent'); - e.initCustomEvent(type, bubbles, cancelable, detail); - return e; + const e = document.createEvent("CustomEvent"); + e.initCustomEvent(type, bubbles, cancelable, detail); + return e; } - -let current_component; +var current_component; function set_current_component(component) { - current_component = component; + current_component = component; } function get_current_component() { - if (!current_component) - throw new Error('Function called outside component initialization'); - return current_component; + if (!current_component) + throw new Error("Function called outside component initialization"); + return current_component; } function onMount(fn) { - get_current_component().$$.on_mount.push(fn); + get_current_component().$$.on_mount.push(fn); } function createEventDispatcher() { - const component = get_current_component(); - return (type, detail, { cancelable = false } = {}) => { - const callbacks = component.$$.callbacks[type]; - if (callbacks) { - // TODO are there situations where events could be dispatched - // in a server (non-DOM) environment? - const event = custom_event(type, detail, { cancelable }); - callbacks.slice().forEach(fn => { - fn.call(component, event); - }); - return !event.defaultPrevented; - } - return true; - }; -} - -const dirty_components = []; -const binding_callbacks = []; -const render_callbacks = []; -const flush_callbacks = []; -const resolved_promise = Promise.resolve(); -let update_scheduled = false; -function schedule_update() { - if (!update_scheduled) { - update_scheduled = true; - resolved_promise.then(flush); + const component = get_current_component(); + return (type, detail, { cancelable = false } = {}) => { + const callbacks = component.$$.callbacks[type]; + if (callbacks) { + const event = custom_event(type, detail, { cancelable }); + callbacks.slice().forEach((fn) => { + fn.call(component, event); + }); + return !event.defaultPrevented; } + return true; + }; +} +var dirty_components = []; +var binding_callbacks = []; +var render_callbacks = []; +var flush_callbacks = []; +var resolved_promise = Promise.resolve(); +var update_scheduled = false; +function schedule_update() { + if (!update_scheduled) { + update_scheduled = true; + resolved_promise.then(flush); + } } function add_render_callback(fn) { - render_callbacks.push(fn); + render_callbacks.push(fn); } -// flush() calls callbacks in this order: -// 1. All beforeUpdate callbacks, in order: parents before children -// 2. All bind:this callbacks, in reverse order: children before parents. -// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT -// for afterUpdates called during the initial onMount, which are called in -// reverse order: children before parents. -// Since callbacks might update component values, which could trigger another -// call to flush(), the following steps guard against this: -// 1. During beforeUpdate, any updated components will be added to the -// dirty_components array and will cause a reentrant call to flush(). Because -// the flush index is kept outside the function, the reentrant call will pick -// up where the earlier call left off and go through all dirty components. The -// current_component value is saved and restored so that the reentrant call will -// not interfere with the "parent" flush() call. -// 2. bind:this callbacks cannot trigger new flush() calls. -// 3. During afterUpdate, any updated components will NOT have their afterUpdate -// callback called a second time; the seen_callbacks set, outside the flush() -// function, guarantees this behavior. -const seen_callbacks = new Set(); -let flushidx = 0; // Do *not* move this inside the flush() function +var seen_callbacks = /* @__PURE__ */ new Set(); +var flushidx = 0; function flush() { - const saved_component = current_component; - do { - // first, call beforeUpdate functions - // and update components - while (flushidx < dirty_components.length) { - const component = dirty_components[flushidx]; - flushidx++; - set_current_component(component); - update(component.$$); - } - set_current_component(null); - dirty_components.length = 0; - flushidx = 0; - while (binding_callbacks.length) - binding_callbacks.pop()(); - // then, once components are updated, call - // afterUpdate functions. This may cause - // subsequent updates... - for (let i = 0; i < render_callbacks.length; i += 1) { - const callback = render_callbacks[i]; - if (!seen_callbacks.has(callback)) { - // ...so guard against infinite loops - seen_callbacks.add(callback); - callback(); - } - } - render_callbacks.length = 0; - } while (dirty_components.length); - while (flush_callbacks.length) { - flush_callbacks.pop()(); + const saved_component = current_component; + do { + while (flushidx < dirty_components.length) { + const component = dirty_components[flushidx]; + flushidx++; + set_current_component(component); + update(component.$$); } - update_scheduled = false; - seen_callbacks.clear(); - set_current_component(saved_component); + set_current_component(null); + dirty_components.length = 0; + flushidx = 0; + while (binding_callbacks.length) + binding_callbacks.pop()(); + for (let i = 0; i < render_callbacks.length; i += 1) { + const callback = render_callbacks[i]; + if (!seen_callbacks.has(callback)) { + seen_callbacks.add(callback); + callback(); + } + } + render_callbacks.length = 0; + } while (dirty_components.length); + while (flush_callbacks.length) { + flush_callbacks.pop()(); + } + update_scheduled = false; + seen_callbacks.clear(); + set_current_component(saved_component); } function update($$) { - if ($$.fragment !== null) { - $$.update(); - run_all($$.before_update); - const dirty = $$.dirty; - $$.dirty = [-1]; - $$.fragment && $$.fragment.p($$.ctx, dirty); - $$.after_update.forEach(add_render_callback); - } + if ($$.fragment !== null) { + $$.update(); + run_all($$.before_update); + const dirty = $$.dirty; + $$.dirty = [-1]; + $$.fragment && $$.fragment.p($$.ctx, dirty); + $$.after_update.forEach(add_render_callback); + } } -const outroing = new Set(); -let outros; +var outroing = /* @__PURE__ */ new Set(); +var outros; function transition_in(block, local) { - if (block && block.i) { - outroing.delete(block); - block.i(local); - } + if (block && block.i) { + outroing.delete(block); + block.i(local); + } } -function transition_out(block, local, detach, callback) { - if (block && block.o) { - if (outroing.has(block)) - return; - outroing.add(block); - outros.c.push(() => { - outroing.delete(block); - if (callback) { - if (detach) - block.d(1); - callback(); - } - }); - block.o(local); - } - else if (callback) { +function transition_out(block, local, detach2, callback) { + if (block && block.o) { + if (outroing.has(block)) + return; + outroing.add(block); + outros.c.push(() => { + outroing.delete(block); + if (callback) { + if (detach2) + block.d(1); callback(); - } + } + }); + block.o(local); + } else if (callback) { + callback(); + } } - +var globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : global; function get_spread_update(levels, updates) { - const update = {}; - const to_null_out = {}; - const accounted_for = { $$scope: 1 }; - let i = levels.length; - while (i--) { - const o = levels[i]; - const n = updates[i]; - if (n) { - for (const key in o) { - if (!(key in n)) - to_null_out[key] = 1; - } - for (const key in n) { - if (!accounted_for[key]) { - update[key] = n[key]; - accounted_for[key] = 1; - } - } - levels[i] = n; - } - else { - for (const key in o) { - accounted_for[key] = 1; - } + const update2 = {}; + const to_null_out = {}; + const accounted_for = { $$scope: 1 }; + let i = levels.length; + while (i--) { + const o = levels[i]; + const n = updates[i]; + if (n) { + for (const key in o) { + if (!(key in n)) + to_null_out[key] = 1; + } + for (const key in n) { + if (!accounted_for[key]) { + update2[key] = n[key]; + accounted_for[key] = 1; } + } + levels[i] = n; + } else { + for (const key in o) { + accounted_for[key] = 1; + } } - for (const key in to_null_out) { - if (!(key in update)) - update[key] = undefined; - } - return update; + } + for (const key in to_null_out) { + if (!(key in update2)) + update2[key] = void 0; + } + return update2; } function create_component(block) { - block && block.c(); + block && block.c(); } function mount_component(component, target, anchor, customElement) { - const { fragment, on_mount, on_destroy, after_update } = component.$$; - fragment && fragment.m(target, anchor); - if (!customElement) { - // onMount happens before the initial afterUpdate - add_render_callback(() => { - const new_on_destroy = on_mount.map(run).filter(is_function); - if (on_destroy) { - on_destroy.push(...new_on_destroy); - } - else { - // Edge case - component was destroyed immediately, - // most likely as a result of a binding initialising - run_all(new_on_destroy); - } - component.$$.on_mount = []; - }); - } - after_update.forEach(add_render_callback); + const { fragment, after_update } = component.$$; + fragment && fragment.m(target, anchor); + if (!customElement) { + add_render_callback(() => { + const new_on_destroy = component.$$.on_mount.map(run).filter(is_function); + if (component.$$.on_destroy) { + component.$$.on_destroy.push(...new_on_destroy); + } else { + run_all(new_on_destroy); + } + component.$$.on_mount = []; + }); + } + after_update.forEach(add_render_callback); } function destroy_component(component, detaching) { - const $$ = component.$$; - if ($$.fragment !== null) { - run_all($$.on_destroy); - $$.fragment && $$.fragment.d(detaching); - // TODO null out other refs, including component.$$ (but need to - // preserve final state?) - $$.on_destroy = $$.fragment = null; - $$.ctx = []; - } + const $$ = component.$$; + if ($$.fragment !== null) { + run_all($$.on_destroy); + $$.fragment && $$.fragment.d(detaching); + $$.on_destroy = $$.fragment = null; + $$.ctx = []; + } } function make_dirty(component, i) { - if (component.$$.dirty[0] === -1) { - dirty_components.push(component); - schedule_update(); - component.$$.dirty.fill(0); - } - component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); + if (component.$$.dirty[0] === -1) { + dirty_components.push(component); + schedule_update(); + component.$$.dirty.fill(0); + } + component.$$.dirty[i / 31 | 0] |= 1 << i % 31; } -function init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) { - const parent_component = current_component; - set_current_component(component); - const $$ = component.$$ = { - fragment: null, - ctx: null, - // state - props, - update: noop, - not_equal, - bound: blank_object(), - // lifecycle - on_mount: [], - on_destroy: [], - on_disconnect: [], - before_update: [], - after_update: [], - context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), - // everything else - callbacks: blank_object(), - dirty, - skip_bound: false, - root: options.target || parent_component.$$.root - }; - append_styles && append_styles($$.root); - let ready = false; - $$.ctx = instance - ? instance(component, options.props || {}, (i, ret, ...rest) => { - const value = rest.length ? rest[0] : ret; - if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { - if (!$$.skip_bound && $$.bound[i]) - $$.bound[i](value); - if (ready) - make_dirty(component, i); - } - return ret; - }) - : []; - $$.update(); - ready = true; - run_all($$.before_update); - // `false` as a special case of no DOM component - $$.fragment = create_fragment ? create_fragment($$.ctx) : false; - if (options.target) { - if (options.hydrate) { - const nodes = children(options.target); - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - $$.fragment && $$.fragment.l(nodes); - nodes.forEach(detach); - } - else { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - $$.fragment && $$.fragment.c(); - } - if (options.intro) - transition_in(component.$$.fragment); - mount_component(component, options.target, options.anchor, options.customElement); - flush(); +function init(component, options, instance5, create_fragment5, not_equal, props, append_styles2, dirty = [-1]) { + const parent_component = current_component; + set_current_component(component); + const $$ = component.$$ = { + fragment: null, + ctx: [], + props, + update: noop, + not_equal, + bound: blank_object(), + on_mount: [], + on_destroy: [], + on_disconnect: [], + before_update: [], + after_update: [], + context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), + callbacks: blank_object(), + dirty, + skip_bound: false, + root: options.target || parent_component.$$.root + }; + append_styles2 && append_styles2($$.root); + let ready = false; + $$.ctx = instance5 ? instance5(component, options.props || {}, (i, ret, ...rest) => { + const value = rest.length ? rest[0] : ret; + if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { + if (!$$.skip_bound && $$.bound[i]) + $$.bound[i](value); + if (ready) + make_dirty(component, i); } - set_current_component(parent_component); + return ret; + }) : []; + $$.update(); + ready = true; + run_all($$.before_update); + $$.fragment = create_fragment5 ? create_fragment5($$.ctx) : false; + if (options.target) { + if (options.hydrate) { + start_hydrating(); + const nodes = children(options.target); + $$.fragment && $$.fragment.l(nodes); + nodes.forEach(detach); + } else { + $$.fragment && $$.fragment.c(); + } + if (options.intro) + transition_in(component.$$.fragment); + mount_component(component, options.target, options.anchor, options.customElement); + end_hydrating(); + flush(); + } + set_current_component(parent_component); } -/** - * Base class for Svelte components. Used when dev=false. - */ -class SvelteComponent { +var SvelteElement; +if (typeof HTMLElement === "function") { + SvelteElement = class extends HTMLElement { + constructor() { + super(); + this.attachShadow({ mode: "open" }); + } + connectedCallback() { + const { on_mount } = this.$$; + this.$$.on_disconnect = on_mount.map(run).filter(is_function); + for (const key in this.$$.slotted) { + this.appendChild(this.$$.slotted[key]); + } + } + attributeChangedCallback(attr2, _oldValue, newValue) { + this[attr2] = newValue; + } + disconnectedCallback() { + run_all(this.$$.on_disconnect); + } $destroy() { - destroy_component(this, 1); - this.$destroy = noop; + destroy_component(this, 1); + this.$destroy = noop; } $on(type, callback) { - const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); - callbacks.push(callback); - return () => { - const index = callbacks.indexOf(callback); - if (index !== -1) - callbacks.splice(index, 1); - }; + if (!is_function(callback)) { + return noop; + } + const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; } $set($$props) { - if (this.$$set && !is_empty($$props)) { - this.$$.skip_bound = true; - this.$$set($$props); - this.$$.skip_bound = false; - } + if (this.$$set && !is_empty($$props)) { + this.$$.skip_bound = true; + this.$$set($$props); + this.$$.skip_bound = false; + } } + }; } +var SvelteComponent = class { + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + $on(type, callback) { + if (!is_function(callback)) { + return noop; + } + const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set($$props) { + if (this.$$set && !is_empty($$props)) { + this.$$.skip_bound = true; + this.$$set($$props); + this.$$.skip_bound = false; + } + } +}; -/* src/ui/component/ObsidianButton.svelte generated by Svelte v3.49.0 */ - -function create_fragment$3(ctx) { - let button; - let current; - let mounted; - let dispose; - const default_slot_template = /*#slots*/ ctx[4].default; - const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[3], null); - - return { - c() { - button = element("button"); - if (default_slot) default_slot.c(); - attr(button, "aria-label", /*popup*/ ctx[0]); - button.disabled = /*disabled*/ ctx[1]; - toggle_class(button, "mod-cta", !/*disabled*/ ctx[1]); - }, - m(target, anchor) { - insert(target, button, anchor); - - if (default_slot) { - default_slot.m(button, null); - } - - current = true; - - if (!mounted) { - dispose = listen(button, "click", /*handleClick*/ ctx[2]); - mounted = true; - } - }, - p(ctx, [dirty]) { - if (default_slot) { - if (default_slot.p && (!current || dirty & /*$$scope*/ 8)) { - update_slot_base( - default_slot, - default_slot_template, - ctx, - /*$$scope*/ ctx[3], - !current - ? get_all_dirty_from_scope(/*$$scope*/ ctx[3]) - : get_slot_changes(default_slot_template, /*$$scope*/ ctx[3], dirty, null), - null - ); - } - } - - if (!current || dirty & /*popup*/ 1) { - attr(button, "aria-label", /*popup*/ ctx[0]); - } - - if (!current || dirty & /*disabled*/ 2) { - button.disabled = /*disabled*/ ctx[1]; - } - - if (dirty & /*disabled*/ 2) { - toggle_class(button, "mod-cta", !/*disabled*/ ctx[1]); - } - }, - i(local) { - if (current) return; - transition_in(default_slot, local); - current = true; - }, - o(local) { - transition_out(default_slot, local); - current = false; - }, - d(detaching) { - if (detaching) detach(button); - if (default_slot) default_slot.d(detaching); - mounted = false; - dispose(); - } - }; -} - -function instance$3($$self, $$props, $$invalidate) { - let { $$slots: slots = {}, $$scope } = $$props; - let { popup } = $$props; - let { disabled = false } = $$props; - const dispatcher = createEventDispatcher(); - - const handleClick = () => { - dispatcher("click"); - }; - - $$self.$$set = $$props => { - if ('popup' in $$props) $$invalidate(0, popup = $$props.popup); - if ('disabled' in $$props) $$invalidate(1, disabled = $$props.disabled); - if ('$$scope' in $$props) $$invalidate(3, $$scope = $$props.$$scope); - }; - - return [popup, disabled, handleClick, $$scope, slots]; -} - -class ObsidianButton extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance$3, create_fragment$3, safe_not_equal, { popup: 0, disabled: 1 }); - } -} - -/* node_modules/svelte-lucide-icons/icons/File.svelte generated by Svelte v3.49.0 */ - -function create_fragment$2(ctx) { - let svg; - let path; - let polyline; - let current; - const default_slot_template = /*#slots*/ ctx[3].default; - const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null); - - let svg_levels = [ - { xmlns: "http://www.w3.org/2000/svg" }, - { width: /*size*/ ctx[0] }, - { height: /*size*/ ctx[0] }, - { viewBox: "0 0 24 24" }, - { fill: "none" }, - { stroke: "currentColor" }, - { "stroke-width": "2" }, - { "stroke-linecap": "round" }, - { "stroke-linejoin": "round" }, - /*$$restProps*/ ctx[1] - ]; - - let svg_data = {}; - - for (let i = 0; i < svg_levels.length; i += 1) { - svg_data = assign(svg_data, svg_levels[i]); - } - - return { - c() { - svg = svg_element("svg"); - if (default_slot) default_slot.c(); - path = svg_element("path"); - polyline = svg_element("polyline"); - attr(path, "d", "M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"); - attr(polyline, "points", "14 2 14 8 20 8"); - set_svg_attributes(svg, svg_data); - }, - m(target, anchor) { - insert(target, svg, anchor); - - if (default_slot) { - default_slot.m(svg, null); - } - - append(svg, path); - append(svg, polyline); - current = true; - }, - p(ctx, [dirty]) { - if (default_slot) { - if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) { - update_slot_base( - default_slot, - default_slot_template, - ctx, - /*$$scope*/ ctx[2], - !current - ? get_all_dirty_from_scope(/*$$scope*/ ctx[2]) - : get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null), - null - ); - } - } - - set_svg_attributes(svg, svg_data = get_spread_update(svg_levels, [ - { xmlns: "http://www.w3.org/2000/svg" }, - (!current || dirty & /*size*/ 1) && { width: /*size*/ ctx[0] }, - (!current || dirty & /*size*/ 1) && { height: /*size*/ ctx[0] }, - { viewBox: "0 0 24 24" }, - { fill: "none" }, - { stroke: "currentColor" }, - { "stroke-width": "2" }, - { "stroke-linecap": "round" }, - { "stroke-linejoin": "round" }, - dirty & /*$$restProps*/ 2 && /*$$restProps*/ ctx[1] - ])); - }, - i(local) { - if (current) return; - transition_in(default_slot, local); - current = true; - }, - o(local) { - transition_out(default_slot, local); - current = false; - }, - d(detaching) { - if (detaching) detach(svg); - if (default_slot) default_slot.d(detaching); - } - }; -} - -function instance$2($$self, $$props, $$invalidate) { - const omit_props_names = ["size"]; - let $$restProps = compute_rest_props($$props, omit_props_names); - let { $$slots: slots = {}, $$scope } = $$props; - let { size = 24 } = $$props; - - $$self.$$set = $$new_props => { - $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)); - $$invalidate(1, $$restProps = compute_rest_props($$props, omit_props_names)); - if ('size' in $$new_props) $$invalidate(0, size = $$new_props.size); - if ('$$scope' in $$new_props) $$invalidate(2, $$scope = $$new_props.$$scope); - }; - - return [size, $$restProps, $$scope, slots]; -} - -class File extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance$2, create_fragment$2, safe_not_equal, { size: 0 }); - } -} - -/* src/ui/component/ObsidianIconButton.svelte generated by Svelte v3.49.0 */ - -function add_css(target) { - append_styles(target, "svelte-12yh6aw", ".wrapper.svelte-12yh6aw{display:flex;justify-content:center;margin:0}.button-enabled.svelte-12yh6aw:hover{color:var(--interactive-accent)}.button-disabled.svelte-12yh6aw{color:var(--text-muted)}"); -} - -function create_fragment$1(ctx) { - let div; - let button; - let button_class_value; - let current; - let mounted; - let dispose; - const default_slot_template = /*#slots*/ ctx[4].default; - const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[3], null); - - return { - c() { - div = element("div"); - button = element("button"); - if (default_slot) default_slot.c(); - attr(button, "aria-label", /*popup*/ ctx[0]); - button.disabled = /*disabled*/ ctx[1]; - - attr(button, "class", button_class_value = "" + (null_to_empty(/*disabled*/ ctx[1] - ? "button-disabled" - : "button-enabled") + " svelte-12yh6aw")); - - set_style(button, "background-color", "transparent"); - set_style(button, "padding", "0"); - attr(div, "class", "wrapper svelte-12yh6aw"); - }, - m(target, anchor) { - insert(target, div, anchor); - append(div, button); - - if (default_slot) { - default_slot.m(button, null); - } - - current = true; - - if (!mounted) { - dispose = listen(button, "click", /*handleClick*/ ctx[2]); - mounted = true; - } - }, - p(ctx, [dirty]) { - if (default_slot) { - if (default_slot.p && (!current || dirty & /*$$scope*/ 8)) { - update_slot_base( - default_slot, - default_slot_template, - ctx, - /*$$scope*/ ctx[3], - !current - ? get_all_dirty_from_scope(/*$$scope*/ ctx[3]) - : get_slot_changes(default_slot_template, /*$$scope*/ ctx[3], dirty, null), - null - ); - } - } - - if (!current || dirty & /*popup*/ 1) { - attr(button, "aria-label", /*popup*/ ctx[0]); - } - - if (!current || dirty & /*disabled*/ 2) { - button.disabled = /*disabled*/ ctx[1]; - } - - if (!current || dirty & /*disabled*/ 2 && button_class_value !== (button_class_value = "" + (null_to_empty(/*disabled*/ ctx[1] - ? "button-disabled" - : "button-enabled") + " svelte-12yh6aw"))) { - attr(button, "class", button_class_value); - } - }, - i(local) { - if (current) return; - transition_in(default_slot, local); - current = true; - }, - o(local) { - transition_out(default_slot, local); - current = false; - }, - d(detaching) { - if (detaching) detach(div); - if (default_slot) default_slot.d(detaching); - mounted = false; - dispose(); - } - }; -} - -function instance$1($$self, $$props, $$invalidate) { - let { $$slots: slots = {}, $$scope } = $$props; - let { popup } = $$props; - let { disabled = false } = $$props; - const dispatcher = createEventDispatcher(); - - const handleClick = () => { - if (!disabled) { - dispatcher("click"); - } - }; - - $$self.$$set = $$props => { - if ('popup' in $$props) $$invalidate(0, popup = $$props.popup); - if ('disabled' in $$props) $$invalidate(1, disabled = $$props.disabled); - if ('$$scope' in $$props) $$invalidate(3, $$scope = $$props.$$scope); - }; - - return [popup, disabled, handleClick, $$scope, slots]; -} - -class ObsidianIconButton extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance$1, create_fragment$1, safe_not_equal, { popup: 0, disabled: 1 }, add_css); - } -} - -/* src/ui/component/CustomDictionaryWordAdd.svelte generated by Svelte v3.49.0 */ - -function get_each_context(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[26] = list[i]; - return child_ctx; -} - -// (48:6) {#each dictionaries as dictionary} -function create_each_block(ctx) { - let option; - let t0_value = /*dictionary*/ ctx[26].path + ""; - let t0; - let t1; - let option_value_value; - - return { - c() { - option = element("option"); - t0 = text(t0_value); - t1 = space(); - option.__value = option_value_value = /*dictionary*/ ctx[26]; - option.value = option.__value; - }, - m(target, anchor) { - insert(target, option, anchor); - append(option, t0); - append(option, t1); - }, - p(ctx, dirty) { - if (dirty & /*dictionaries*/ 32 && t0_value !== (t0_value = /*dictionary*/ ctx[26].path + "")) set_data(t0, t0_value); - - if (dirty & /*dictionaries*/ 32 && option_value_value !== (option_value_value = /*dictionary*/ ctx[26])) { - option.__value = option_value_value; - option.value = option.__value; - } - }, - d(detaching) { - if (detaching) detach(option); - } - }; -} - -// (54:4) onClickFileIcon(selectedDictionary.path)} > -function create_default_slot_1(ctx) { - let file; - let current; - file = new File({}); - - return { - c() { - create_component(file.$$.fragment); - }, - m(target, anchor) { - mount_component(file, target, anchor); - current = true; - }, - i(local) { - if (current) return; - transition_in(file.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(file.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(file, detaching); - } - }; -} - -// (70:2) {#if enableDisplayedWord} -function create_if_block_1(ctx) { - let label; - let input; - let t; - let mounted; - let dispose; - - return { - c() { - label = element("label"); - input = element("input"); - t = text("\n Distinguish between display and insertion"); - attr(input, "type", "checkbox"); - }, - m(target, anchor) { - insert(target, label, anchor); - append(label, input); - input.checked = /*useDisplayedWord*/ ctx[1]; - append(label, t); - - if (!mounted) { - dispose = listen(input, "change", /*input_change_handler*/ ctx[21]); - mounted = true; - } - }, - p(ctx, dirty) { - if (dirty & /*useDisplayedWord*/ 2) { - input.checked = /*useDisplayedWord*/ ctx[1]; - } - }, - d(detaching) { - if (detaching) detach(label); - mounted = false; - dispose(); - } - }; -} - -// (77:2) {#if useDisplayedWord} -function create_if_block(ctx) { - let h3; - let t1; - let textarea; - let mounted; - let dispose; - - return { - c() { - h3 = element("h3"); - h3.textContent = "Displayed Word"; - t1 = space(); - textarea = element("textarea"); - set_style(textarea, "width", "100%"); - attr(textarea, "rows", "3"); - }, - m(target, anchor) { - insert(target, h3, anchor); - insert(target, t1, anchor); - insert(target, textarea, anchor); - set_input_value(textarea, /*displayedWord*/ ctx[3]); - /*textarea_binding*/ ctx[23](textarea); - - if (!mounted) { - dispose = listen(textarea, "input", /*textarea_input_handler*/ ctx[22]); - mounted = true; - } - }, - p(ctx, dirty) { - if (dirty & /*displayedWord*/ 8) { - set_input_value(textarea, /*displayedWord*/ ctx[3]); - } - }, - d(detaching) { - if (detaching) detach(h3); - if (detaching) detach(t1); - if (detaching) detach(textarea); - /*textarea_binding*/ ctx[23](null); - mounted = false; - dispose(); - } - }; -} - -// (94:4) -function create_default_slot(ctx) { - let t; - - return { - c() { - t = text("Submit"); - }, - m(target, anchor) { - insert(target, t, anchor); - }, - d(detaching) { - if (detaching) detach(t); - } - }; -} - +// src/ui/component/ObsidianButton.svelte function create_fragment(ctx) { - let div2; - let h2; - let t1; - let h30; - let t3; - let div0; - let select; - let t4; - let obsidianiconbutton; - let t5; - let h31; - let t6; - let t7; - let textarea0; - let t8; - let t9; - let t10; - let h32; - let t12; - let input; - let t13; - let h33; - let t15; - let textarea1; - let t16; - let div1; - let obsidianbutton; - let current; - let mounted; - let dispose; - let each_value = /*dictionaries*/ ctx[5]; - let each_blocks = []; - - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); - } - - obsidianiconbutton = new ObsidianIconButton({ - props: { - popup: "Open the file", - $$slots: { default: [create_default_slot_1] }, - $$scope: { ctx } - } - }); - - obsidianiconbutton.$on("click", /*click_handler*/ ctx[18]); - let if_block0 = /*enableDisplayedWord*/ ctx[11] && create_if_block_1(ctx); - let if_block1 = /*useDisplayedWord*/ ctx[1] && create_if_block(ctx); - - obsidianbutton = new ObsidianButton({ - props: { - disabled: !/*enableSubmit*/ ctx[12], - $$slots: { default: [create_default_slot] }, - $$scope: { ctx } - } - }); - - obsidianbutton.$on("click", /*handleSubmit*/ ctx[13]); - - return { - c() { - div2 = element("div"); - h2 = element("h2"); - h2.textContent = "Add a word to a custom dictionary"; - t1 = space(); - h30 = element("h3"); - h30.textContent = "Dictionary"; - t3 = space(); - div0 = element("div"); - select = element("select"); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - - t4 = space(); - create_component(obsidianiconbutton.$$.fragment); - t5 = space(); - h31 = element("h3"); - t6 = text(/*firstWordTitle*/ ctx[10]); - t7 = space(); - textarea0 = element("textarea"); - t8 = space(); - if (if_block0) if_block0.c(); - t9 = space(); - if (if_block1) if_block1.c(); - t10 = space(); - h32 = element("h3"); - h32.textContent = "Description"; - t12 = space(); - input = element("input"); - t13 = space(); - h33 = element("h3"); - h33.textContent = "Aliases (for each line)"; - t15 = space(); - textarea1 = element("textarea"); - t16 = space(); - div1 = element("div"); - create_component(obsidianbutton.$$.fragment); - attr(select, "class", "dropdown"); - if (/*selectedDictionary*/ ctx[2] === void 0) add_render_callback(() => /*select_change_handler*/ ctx[17].call(select)); - set_style(div0, "display", "flex"); - set_style(div0, "gap", "10px"); - set_style(textarea0, "width", "100%"); - attr(textarea0, "rows", "3"); - attr(input, "type", "text"); - set_style(input, "width", "100%"); - set_style(textarea1, "width", "100%"); - attr(textarea1, "rows", "3"); - set_style(div1, "text-align", "center"); - set_style(div1, "width", "100%"); - set_style(div1, "padding-top", "15px"); - }, - m(target, anchor) { - insert(target, div2, anchor); - append(div2, h2); - append(div2, t1); - append(div2, h30); - append(div2, t3); - append(div2, div0); - append(div0, select); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(select, null); - } - - select_option(select, /*selectedDictionary*/ ctx[2]); - append(div0, t4); - mount_component(obsidianiconbutton, div0, null); - append(div2, t5); - append(div2, h31); - append(h31, t6); - append(div2, t7); - append(div2, textarea0); - set_input_value(textarea0, /*inputWord*/ ctx[0]); - /*textarea0_binding*/ ctx[20](textarea0); - append(div2, t8); - if (if_block0) if_block0.m(div2, null); - append(div2, t9); - if (if_block1) if_block1.m(div2, null); - append(div2, t10); - append(div2, h32); - append(div2, t12); - append(div2, input); - set_input_value(input, /*description*/ ctx[4]); - append(div2, t13); - append(div2, h33); - append(div2, t15); - append(div2, textarea1); - set_input_value(textarea1, /*aliasesStr*/ ctx[8]); - append(div2, t16); - append(div2, div1); - mount_component(obsidianbutton, div1, null); - current = true; - - if (!mounted) { - dispose = [ - listen(select, "change", /*select_change_handler*/ ctx[17]), - listen(textarea0, "input", /*textarea0_input_handler*/ ctx[19]), - listen(input, "input", /*input_input_handler*/ ctx[24]), - listen(textarea1, "input", /*textarea1_input_handler*/ ctx[25]) - ]; - - mounted = true; - } - }, - p(ctx, [dirty]) { - if (dirty & /*dictionaries*/ 32) { - each_value = /*dictionaries*/ ctx[5]; - let i; - - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context(ctx, each_value, i); - - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(select, null); - } - } - - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - - each_blocks.length = each_value.length; - } - - if (dirty & /*selectedDictionary, dictionaries*/ 36) { - select_option(select, /*selectedDictionary*/ ctx[2]); - } - - const obsidianiconbutton_changes = {}; - - if (dirty & /*$$scope*/ 536870912) { - obsidianiconbutton_changes.$$scope = { dirty, ctx }; - } - - obsidianiconbutton.$set(obsidianiconbutton_changes); - if (!current || dirty & /*firstWordTitle*/ 1024) set_data(t6, /*firstWordTitle*/ ctx[10]); - - if (dirty & /*inputWord*/ 1) { - set_input_value(textarea0, /*inputWord*/ ctx[0]); - } - - if (/*enableDisplayedWord*/ ctx[11]) { - if (if_block0) { - if_block0.p(ctx, dirty); - } else { - if_block0 = create_if_block_1(ctx); - if_block0.c(); - if_block0.m(div2, t9); - } - } else if (if_block0) { - if_block0.d(1); - if_block0 = null; - } - - if (/*useDisplayedWord*/ ctx[1]) { - if (if_block1) { - if_block1.p(ctx, dirty); - } else { - if_block1 = create_if_block(ctx); - if_block1.c(); - if_block1.m(div2, t10); - } - } else if (if_block1) { - if_block1.d(1); - if_block1 = null; - } - - if (dirty & /*description*/ 16 && input.value !== /*description*/ ctx[4]) { - set_input_value(input, /*description*/ ctx[4]); - } - - if (dirty & /*aliasesStr*/ 256) { - set_input_value(textarea1, /*aliasesStr*/ ctx[8]); - } - - const obsidianbutton_changes = {}; - if (dirty & /*enableSubmit*/ 4096) obsidianbutton_changes.disabled = !/*enableSubmit*/ ctx[12]; - - if (dirty & /*$$scope*/ 536870912) { - obsidianbutton_changes.$$scope = { dirty, ctx }; - } - - obsidianbutton.$set(obsidianbutton_changes); - }, - i(local) { - if (current) return; - transition_in(obsidianiconbutton.$$.fragment, local); - transition_in(obsidianbutton.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(obsidianiconbutton.$$.fragment, local); - transition_out(obsidianbutton.$$.fragment, local); - current = false; - }, - d(detaching) { - if (detaching) detach(div2); - destroy_each(each_blocks, detaching); - destroy_component(obsidianiconbutton); - /*textarea0_binding*/ ctx[20](null); - if (if_block0) if_block0.d(); - if (if_block1) if_block1.d(); - destroy_component(obsidianbutton); - mounted = false; - run_all(dispose); - } - }; + let button; + let current; + let mounted; + let dispose; + const default_slot_template = ctx[4].default; + const default_slot = create_slot(default_slot_template, ctx, ctx[3], null); + return { + c() { + button = element("button"); + if (default_slot) + default_slot.c(); + attr(button, "aria-label", ctx[0]); + button.disabled = ctx[1]; + toggle_class(button, "mod-cta", !ctx[1]); + }, + m(target, anchor) { + insert(target, button, anchor); + if (default_slot) { + default_slot.m(button, null); + } + current = true; + if (!mounted) { + dispose = listen(button, "click", ctx[2]); + mounted = true; + } + }, + p(ctx2, [dirty]) { + if (default_slot) { + if (default_slot.p && (!current || dirty & 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + ctx2[3], + !current ? get_all_dirty_from_scope(ctx2[3]) : get_slot_changes(default_slot_template, ctx2[3], dirty, null), + null + ); + } + } + if (!current || dirty & 1) { + attr(button, "aria-label", ctx2[0]); + } + if (!current || dirty & 2) { + button.disabled = ctx2[1]; + } + if (!current || dirty & 2) { + toggle_class(button, "mod-cta", !ctx2[1]); + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (detaching) + detach(button); + if (default_slot) + default_slot.d(detaching); + mounted = false; + dispose(); + } + }; } - function instance($$self, $$props, $$invalidate) { - let enableSubmit; - let enableDisplayedWord; - let firstWordTitle; - let { dictionaries } = $$props; - let { selectedDictionary } = $$props; - let { inputWord = "" } = $$props; - let { useDisplayedWord = false } = $$props; - let { displayedWord = "" } = $$props; - let { description = "" } = $$props; - let { aliases = [] } = $$props; - let { dividerForDisplay = "" } = $$props; - let { onSubmit } = $$props; - let { onClickFileIcon } = $$props; - let aliasesStr = aliases.join("\n"); - let wordRef = null; - let displayedWordRef = null; - - const handleSubmit = () => { - onSubmit(selectedDictionary.path, { - value: displayedWord || inputWord, - description, - aliases: aliasesStr.split("\n"), - type: "customDictionary", - createdPath: selectedDictionary.path, - insertedText: displayedWord ? inputWord : undefined - }); - }; - - onMount(() => { - setTimeout(() => wordRef.focus(), 50); - }); - - function select_change_handler() { - selectedDictionary = select_value(this); - $$invalidate(2, selectedDictionary); - $$invalidate(5, dictionaries); - } - - const click_handler = () => onClickFileIcon(selectedDictionary.path); - - function textarea0_input_handler() { - inputWord = this.value; - $$invalidate(0, inputWord); - } - - function textarea0_binding($$value) { - binding_callbacks[$$value ? 'unshift' : 'push'](() => { - wordRef = $$value; - $$invalidate(9, wordRef); - }); - } - - function input_change_handler() { - useDisplayedWord = this.checked; - $$invalidate(1, useDisplayedWord); - } - - function textarea_input_handler() { - displayedWord = this.value; - $$invalidate(3, displayedWord); - } - - function textarea_binding($$value) { - binding_callbacks[$$value ? 'unshift' : 'push'](() => { - displayedWordRef = $$value; - $$invalidate(7, displayedWordRef); - }); - } - - function input_input_handler() { - description = this.value; - $$invalidate(4, description); - } - - function textarea1_input_handler() { - aliasesStr = this.value; - $$invalidate(8, aliasesStr); - } - - $$self.$$set = $$props => { - if ('dictionaries' in $$props) $$invalidate(5, dictionaries = $$props.dictionaries); - if ('selectedDictionary' in $$props) $$invalidate(2, selectedDictionary = $$props.selectedDictionary); - if ('inputWord' in $$props) $$invalidate(0, inputWord = $$props.inputWord); - if ('useDisplayedWord' in $$props) $$invalidate(1, useDisplayedWord = $$props.useDisplayedWord); - if ('displayedWord' in $$props) $$invalidate(3, displayedWord = $$props.displayedWord); - if ('description' in $$props) $$invalidate(4, description = $$props.description); - if ('aliases' in $$props) $$invalidate(14, aliases = $$props.aliases); - if ('dividerForDisplay' in $$props) $$invalidate(15, dividerForDisplay = $$props.dividerForDisplay); - if ('onSubmit' in $$props) $$invalidate(16, onSubmit = $$props.onSubmit); - if ('onClickFileIcon' in $$props) $$invalidate(6, onClickFileIcon = $$props.onClickFileIcon); - }; - - $$self.$$.update = () => { - if ($$self.$$.dirty & /*inputWord*/ 1) { - $$invalidate(12, enableSubmit = inputWord.length > 0); - } - - if ($$self.$$.dirty & /*dividerForDisplay*/ 32768) { - $$invalidate(11, enableDisplayedWord = Boolean(dividerForDisplay)); - } - - if ($$self.$$.dirty & /*useDisplayedWord*/ 2) { - $$invalidate(10, firstWordTitle = useDisplayedWord ? "Inserted word" : "Word"); - } - - if ($$self.$$.dirty & /*useDisplayedWord, displayedWordRef*/ 130) { - { - if (useDisplayedWord) { - displayedWordRef === null || displayedWordRef === void 0 - ? void 0 - : displayedWordRef.focus(); - } - } - } - }; - - return [ - inputWord, - useDisplayedWord, - selectedDictionary, - displayedWord, - description, - dictionaries, - onClickFileIcon, - displayedWordRef, - aliasesStr, - wordRef, - firstWordTitle, - enableDisplayedWord, - enableSubmit, - handleSubmit, - aliases, - dividerForDisplay, - onSubmit, - select_change_handler, - click_handler, - textarea0_input_handler, - textarea0_binding, - input_change_handler, - textarea_input_handler, - textarea_binding, - input_input_handler, - textarea1_input_handler - ]; + let { $$slots: slots = {}, $$scope } = $$props; + let { popup } = $$props; + let { disabled = false } = $$props; + const dispatcher = createEventDispatcher(); + const handleClick = () => { + dispatcher("click"); + }; + $$self.$$set = ($$props2) => { + if ("popup" in $$props2) + $$invalidate(0, popup = $$props2.popup); + if ("disabled" in $$props2) + $$invalidate(1, disabled = $$props2.disabled); + if ("$$scope" in $$props2) + $$invalidate(3, $$scope = $$props2.$$scope); + }; + return [popup, disabled, handleClick, $$scope, slots]; } +var ObsidianButton = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance, create_fragment, safe_not_equal, { popup: 0, disabled: 1 }); + } +}; +var ObsidianButton_default = ObsidianButton; -class CustomDictionaryWordAdd extends SvelteComponent { - constructor(options) { - super(); - - init(this, options, instance, create_fragment, safe_not_equal, { - dictionaries: 5, - selectedDictionary: 2, - inputWord: 0, - useDisplayedWord: 1, - displayedWord: 3, - description: 4, - aliases: 14, - dividerForDisplay: 15, - onSubmit: 16, - onClickFileIcon: 6 - }); - } +// node_modules/svelte-lucide-icons/icons/File.svelte +function create_fragment2(ctx) { + let svg; + let path; + let polyline; + let current; + const default_slot_template = ctx[3].default; + const default_slot = create_slot(default_slot_template, ctx, ctx[2], null); + let svg_levels = [ + { xmlns: "http://www.w3.org/2000/svg" }, + { width: ctx[0] }, + { height: ctx[0] }, + { viewBox: "0 0 24 24" }, + { fill: "none" }, + { stroke: "currentColor" }, + { "stroke-width": "2" }, + { "stroke-linecap": "round" }, + { "stroke-linejoin": "round" }, + ctx[1] + ]; + let svg_data = {}; + for (let i = 0; i < svg_levels.length; i += 1) { + svg_data = assign(svg_data, svg_levels[i]); + } + return { + c() { + svg = svg_element("svg"); + if (default_slot) + default_slot.c(); + path = svg_element("path"); + polyline = svg_element("polyline"); + attr(path, "d", "M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"); + attr(polyline, "points", "14 2 14 8 20 8"); + set_svg_attributes(svg, svg_data); + }, + m(target, anchor) { + insert(target, svg, anchor); + if (default_slot) { + default_slot.m(svg, null); + } + append(svg, path); + append(svg, polyline); + current = true; + }, + p(ctx2, [dirty]) { + if (default_slot) { + if (default_slot.p && (!current || dirty & 4)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + ctx2[2], + !current ? get_all_dirty_from_scope(ctx2[2]) : get_slot_changes(default_slot_template, ctx2[2], dirty, null), + null + ); + } + } + set_svg_attributes(svg, svg_data = get_spread_update(svg_levels, [ + { xmlns: "http://www.w3.org/2000/svg" }, + (!current || dirty & 1) && { width: ctx2[0] }, + (!current || dirty & 1) && { height: ctx2[0] }, + { viewBox: "0 0 24 24" }, + { fill: "none" }, + { stroke: "currentColor" }, + { "stroke-width": "2" }, + { "stroke-linecap": "round" }, + { "stroke-linejoin": "round" }, + dirty & 2 && ctx2[1] + ])); + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (detaching) + detach(svg); + if (default_slot) + default_slot.d(detaching); + } + }; } - -class CustomDictionaryWordAddModal extends obsidian.Modal { - constructor(app, dictionaryPaths, initialValue = "", dividerForDisplay = "", onSubmit) { - super(app); - const appHelper = new AppHelper(app); - const dictionaries = dictionaryPaths.map((x) => ({ id: x, path: x })); - const { contentEl } = this; - this.component = new CustomDictionaryWordAdd({ - target: contentEl, - props: { - dictionaries, - selectedDictionary: dictionaries[0], - inputWord: initialValue, - dividerForDisplay, - onSubmit, - onClickFileIcon: (dictionaryPath) => { - const markdownFile = appHelper.getMarkdownFileByPath(dictionaryPath); - if (!markdownFile) { - // noinspection ObjectAllocationIgnored - new obsidian.Notice(`Can't open ${dictionaryPath}`); - return; - } - this.close(); - appHelper.openMarkdownFile(markdownFile, true); - }, - }, - }); - } - onClose() { - super.onClose(); - this.component.$destroy(); - } +function instance2($$self, $$props, $$invalidate) { + const omit_props_names = ["size"]; + let $$restProps = compute_rest_props($$props, omit_props_names); + let { $$slots: slots = {}, $$scope } = $$props; + let { size = 24 } = $$props; + $$self.$$set = ($$new_props) => { + $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)); + $$invalidate(1, $$restProps = compute_rest_props($$props, omit_props_names)); + if ("size" in $$new_props) + $$invalidate(0, size = $$new_props.size); + if ("$$scope" in $$new_props) + $$invalidate(2, $$scope = $$new_props.$$scope); + }; + return [size, $$restProps, $$scope, slots]; } +var File = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance2, create_fragment2, safe_not_equal, { size: 0 }); + } +}; +var File_default = File; -class VariousComponents extends obsidian.Plugin { - onunload() { - super.onunload(); - this.suggester.unregister(); - } - onload() { - return __awaiter(this, void 0, void 0, function* () { - this.appHelper = new AppHelper(this.app); - this.registerEvent(this.app.workspace.on("editor-menu", (menu) => { - if (!this.appHelper.getSelection()) { - return; - } - menu.addItem((item) => item - .setTitle("Add to custom dictionary") - .setIcon("stacked-levels") - .onClick(() => { - this.addWordToCustomDictionary(); - })); - })); - yield this.loadSettings(); - this.settingTab = new VariousComplementsSettingTab(this.app, this); - this.addSettingTab(this.settingTab); - this.statusBar = ProviderStatusBar.new(this.addStatusBarItem(), this.settings.showMatchStrategy, this.settings.showIndexingStatus, this.settings.showComplementAutomatically); - this.statusBar.setOnClickStrategyListener(() => __awaiter(this, void 0, void 0, function* () { - yield this.settingTab.toggleMatchStrategy(); - })); - this.statusBar.setOnClickComplementAutomatically(() => __awaiter(this, void 0, void 0, function* () { - yield this.settingTab.toggleComplementAutomatically(); - })); - const debouncedSaveData = obsidian.debounce(() => __awaiter(this, void 0, void 0, function* () { - yield this.saveData(this.settings); - }), 5000); - this.suggester = yield AutoCompleteSuggest.new(this.app, this.settings, this.statusBar, debouncedSaveData); - this.registerEditorSuggest(this.suggester); - this.addCommand({ - id: "reload-custom-dictionaries", - name: "Reload custom dictionaries", - hotkeys: [{ modifiers: ["Mod", "Shift"], key: "r" }], - callback: () => __awaiter(this, void 0, void 0, function* () { - yield this.suggester.refreshCustomDictionaryTokens(); - }), - }); - this.addCommand({ - id: "reload-current-vault", - name: "Reload current vault", - callback: () => __awaiter(this, void 0, void 0, function* () { - yield this.suggester.refreshCurrentVaultTokens(); - }), - }); - this.addCommand({ - id: "toggle-match-strategy", - name: "Toggle Match strategy", - callback: () => __awaiter(this, void 0, void 0, function* () { - yield this.settingTab.toggleMatchStrategy(); - }), - }); - this.addCommand({ - id: "toggle-complement-automatically", - name: "Toggle Complement automatically", - callback: () => __awaiter(this, void 0, void 0, function* () { - yield this.settingTab.toggleComplementAutomatically(); - }), - }); - this.addCommand({ - id: "show-suggestions", - name: "Show suggestions", - hotkeys: [{ modifiers: ["Mod"], key: " " }], - callback: () => __awaiter(this, void 0, void 0, function* () { - this.suggester.triggerComplete(); - }), - }); - this.addCommand({ - id: "add-word-custom-dictionary", - name: "Add a word to a custom dictionary", - hotkeys: [{ modifiers: ["Mod", "Shift"], key: " " }], - callback: () => __awaiter(this, void 0, void 0, function* () { - this.addWordToCustomDictionary(); - }), - }); - this.addCommand({ - id: "predictable-complements", - name: "Predictable complement", - callback: () => __awaiter(this, void 0, void 0, function* () { - this.suggester.predictableComplete(); - }), - }); - this.addCommand({ - id: "copy-plugin-settings", - name: "Copy plugin settings", - callback: () => __awaiter(this, void 0, void 0, function* () { - yield navigator.clipboard.writeText(this.settingTab.getPluginSettingsAsJsonString()); - // noinspection ObjectAllocationIgnored - new obsidian.Notice("Copy settings of Various Complements"); - }), - }); - }); - } - loadSettings() { - return __awaiter(this, void 0, void 0, function* () { - this.settings = Object.assign(Object.assign({}, DEFAULT_SETTINGS), (yield this.loadData())); - }); - } - saveSettings(needUpdateTokens = {}) { - return __awaiter(this, void 0, void 0, function* () { - yield this.saveData(this.settings); - yield this.suggester.updateSettings(this.settings); - if (needUpdateTokens.currentFile) { - yield this.suggester.refreshCurrentFileTokens(); - } - if (needUpdateTokens.currentVault) { - yield this.suggester.refreshCurrentVaultTokens(); - } - if (needUpdateTokens.customDictionary) { - yield this.suggester.refreshCustomDictionaryTokens(); - } - if (needUpdateTokens.internalLink) { - yield this.suggester.refreshInternalLinkTokens(); - } - if (needUpdateTokens.frontMatter) { - yield this.suggester.refreshFrontMatterTokens(); - } - }); - } - addWordToCustomDictionary() { - const selectedWord = this.appHelper.getSelection(); - const provider = this.suggester.customDictionaryWordProvider; - const modal = new CustomDictionaryWordAddModal(this.app, provider.editablePaths, selectedWord, this.settings.delimiterToDivideSuggestionsForDisplayFromInsertion, (dictionaryPath, _word) => __awaiter(this, void 0, void 0, function* () { - // TODO: If support for JSON, this implementation doesn't work correctly - const word = Object.assign(Object.assign({}, _word), { caretSymbol: this.settings.caretLocationSymbolAfterComplement }); - if (provider.wordByValue[word.value]) { - // noinspection ObjectAllocationIgnored - new obsidian.Notice(`⚠ ${word.value} already exists`, 0); - return; - } - yield provider.addWordWithDictionary(word, dictionaryPath); - // noinspection ObjectAllocationIgnored - new obsidian.Notice(`Added ${word.value}`); - modal.close(); - })); - modal.open(); - } +// src/ui/component/ObsidianIconButton.svelte +function add_css(target) { + append_styles(target, "svelte-12yh6aw", ".wrapper.svelte-12yh6aw{display:flex;justify-content:center;margin:0}.button-enabled.svelte-12yh6aw:hover{color:var(--interactive-accent)}.button-disabled.svelte-12yh6aw{color:var(--text-muted)}"); } +function create_fragment3(ctx) { + let div; + let button; + let button_class_value; + let current; + let mounted; + let dispose; + const default_slot_template = ctx[4].default; + const default_slot = create_slot(default_slot_template, ctx, ctx[3], null); + return { + c() { + div = element("div"); + button = element("button"); + if (default_slot) + default_slot.c(); + attr(button, "aria-label", ctx[0]); + button.disabled = ctx[1]; + attr(button, "class", button_class_value = null_to_empty(ctx[1] ? "button-disabled" : "button-enabled") + " svelte-12yh6aw"); + set_style(button, "background-color", "transparent"); + set_style(button, "padding", "0"); + attr(div, "class", "wrapper svelte-12yh6aw"); + }, + m(target, anchor) { + insert(target, div, anchor); + append(div, button); + if (default_slot) { + default_slot.m(button, null); + } + current = true; + if (!mounted) { + dispose = listen(button, "click", ctx[2]); + mounted = true; + } + }, + p(ctx2, [dirty]) { + if (default_slot) { + if (default_slot.p && (!current || dirty & 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + ctx2[3], + !current ? get_all_dirty_from_scope(ctx2[3]) : get_slot_changes(default_slot_template, ctx2[3], dirty, null), + null + ); + } + } + if (!current || dirty & 1) { + attr(button, "aria-label", ctx2[0]); + } + if (!current || dirty & 2) { + button.disabled = ctx2[1]; + } + if (!current || dirty & 2 && button_class_value !== (button_class_value = null_to_empty(ctx2[1] ? "button-disabled" : "button-enabled") + " svelte-12yh6aw")) { + attr(button, "class", button_class_value); + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (detaching) + detach(div); + if (default_slot) + default_slot.d(detaching); + mounted = false; + dispose(); + } + }; +} +function instance3($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + let { popup } = $$props; + let { disabled = false } = $$props; + const dispatcher = createEventDispatcher(); + const handleClick = () => { + if (!disabled) { + dispatcher("click"); + } + }; + $$self.$$set = ($$props2) => { + if ("popup" in $$props2) + $$invalidate(0, popup = $$props2.popup); + if ("disabled" in $$props2) + $$invalidate(1, disabled = $$props2.disabled); + if ("$$scope" in $$props2) + $$invalidate(3, $$scope = $$props2.$$scope); + }; + return [popup, disabled, handleClick, $$scope, slots]; +} +var ObsidianIconButton = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance3, create_fragment3, safe_not_equal, { popup: 0, disabled: 1 }, add_css); + } +}; +var ObsidianIconButton_default = ObsidianIconButton; -module.exports = VariousComponents; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy91dGlsL3N0cmluZ3MudHMiLCJzcmMvdG9rZW5pemVyL3Rva2VuaXplcnMvRGVmYXVsdFRva2VuaXplci50cyIsInNyYy90b2tlbml6ZXIvdG9rZW5pemVycy9BcmFiaWNUb2tlbml6ZXIudHMiLCJzcmMvZXh0ZXJuYWwvdGlueS1zZWdtZW50ZXIudHMiLCJzcmMvdG9rZW5pemVyL3Rva2VuaXplcnMvSmFwYW5lc2VUb2tlbml6ZXIudHMiLCJzcmMvdG9rZW5pemVyL3Rva2VuaXplcnMvRW5nbGlzaE9ubHlUb2tlbml6ZXIudHMiLCJub2RlX21vZHVsZXMvcHJldHRpZnktcGlueWluL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2NoaW5lc2UtdG9rZW5pemVyL3NyYy90cmllLmpzIiwibm9kZV9tb2R1bGVzL2NoaW5lc2UtdG9rZW5pemVyL3NyYy9jZWRpY3QuanMiLCJub2RlX21vZHVsZXMvY2hpbmVzZS10b2tlbml6ZXIvc3JjL21haW4uanMiLCJzcmMvdG9rZW5pemVyL3Rva2VuaXplcnMvQ2hpbmVzZVRva2VuaXplci50cyIsInNyYy90b2tlbml6ZXIvdG9rZW5pemVyLnRzIiwic3JjL3Rva2VuaXplci9Ub2tlbml6ZVN0cmF0ZWd5LnRzIiwic3JjL2FwcC1oZWxwZXIudHMiLCJzcmMvdXRpbC9jb2xsZWN0aW9uLWhlbHBlci50cyIsInNyYy9tb2RlbC9Xb3JkLnRzIiwic3JjL3Byb3ZpZGVyL3N1Z2dlc3Rlci50cyIsInNyYy91dGlsL3BhdGgudHMiLCJzcmMvcHJvdmlkZXIvQ3VzdG9tRGljdGlvbmFyeVdvcmRQcm92aWRlci50cyIsInNyYy9wcm92aWRlci9DdXJyZW50RmlsZVdvcmRQcm92aWRlci50cyIsInNyYy9wcm92aWRlci9JbnRlcm5hbExpbmtXb3JkUHJvdmlkZXIudHMiLCJzcmMvcHJvdmlkZXIvTWF0Y2hTdHJhdGVneS50cyIsInNyYy9vcHRpb24vQ3ljbGVUaHJvdWdoU3VnZ2VzdGlvbnNLZXlzLnRzIiwic3JjL29wdGlvbi9Db2x1bW5EZWxpbWl0ZXIudHMiLCJzcmMvb3B0aW9uL1NlbGVjdFN1Z2dlc3Rpb25LZXkudHMiLCJzcmMvcHJvdmlkZXIvQ3VycmVudFZhdWx0V29yZFByb3ZpZGVyLnRzIiwic3JjL29wdGlvbi9PcGVuU291cmNlRmlsZUtleXMudHMiLCJzcmMvb3B0aW9uL0Rlc2NyaXB0aW9uT25TdWdnZXN0aW9uLnRzIiwic3JjL3Byb3ZpZGVyL0Zyb250TWF0dGVyV29yZFByb3ZpZGVyLnRzIiwic3JjL3Byb3ZpZGVyL1NwZWNpZmljTWF0Y2hTdHJhdGVneS50cyIsInNyYy9zdG9yYWdlL1NlbGVjdGlvbkhpc3RvcnlTdG9yYWdlLnRzIiwic3JjL3VpL0F1dG9Db21wbGV0ZVN1Z2dlc3QudHMiLCJzcmMvc2V0dGluZy9zZXR0aW5ncy50cyIsInNyYy91aS9Qcm92aWRlclN0YXR1c0Jhci50cyIsIm5vZGVfbW9kdWxlcy9zdmVsdGUvaW50ZXJuYWwvaW5kZXgubWpzIiwic3JjL3VpL2NvbXBvbmVudC9PYnNpZGlhbkJ1dHRvbi5zdmVsdGUiLCJub2RlX21vZHVsZXMvc3ZlbHRlLWx1Y2lkZS1pY29ucy9pY29ucy9GaWxlLnN2ZWx0ZSIsInNyYy91aS9jb21wb25lbnQvT2JzaWRpYW5JY29uQnV0dG9uLnN2ZWx0ZSIsInNyYy91aS9jb21wb25lbnQvQ3VzdG9tRGljdGlvbmFyeVdvcmRBZGQuc3ZlbHRlIiwic3JjL3VpL0N1c3RvbURpY3Rpb25hcnlXb3JkQWRkTW9kYWwudHMiLCJzcmMvbWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcclxuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XHJcbiAgICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG52YXIgX19zZXRNb2R1bGVEZWZhdWx0ID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XHJcbn0pIDogZnVuY3Rpb24obywgdikge1xyXG4gICAgb1tcImRlZmF1bHRcIl0gPSB2O1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcclxuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XHJcbiAgICB2YXIgcmVzdWx0ID0ge307XHJcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwgayk7XHJcbiAgICBfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LCBtb2QpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcclxuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBzdGF0ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgZ2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgcmVhZCBwcml2YXRlIG1lbWJlciBmcm9tIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XHJcbiAgICByZXR1cm4ga2luZCA9PT0gXCJtXCIgPyBmIDoga2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIpIDogZiA/IGYudmFsdWUgOiBzdGF0ZS5nZXQocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZFNldChyZWNlaXZlciwgc3RhdGUsIHZhbHVlLCBraW5kLCBmKSB7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJtXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIG1ldGhvZCBpcyBub3Qgd3JpdGFibGVcIik7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXJcIik7XHJcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIChraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlciwgdmFsdWUpIDogZiA/IGYudmFsdWUgPSB2YWx1ZSA6IHN0YXRlLnNldChyZWNlaXZlciwgdmFsdWUpKSwgdmFsdWU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4oc3RhdGUsIHJlY2VpdmVyKSB7XHJcbiAgICBpZiAocmVjZWl2ZXIgPT09IG51bGwgfHwgKHR5cGVvZiByZWNlaXZlciAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgcmVjZWl2ZXIgIT09IFwiZnVuY3Rpb25cIikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgdXNlICdpbicgb3BlcmF0b3Igb24gbm9uLW9iamVjdFwiKTtcclxuICAgIHJldHVybiB0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyID09PSBzdGF0ZSA6IHN0YXRlLmhhcyhyZWNlaXZlcik7XHJcbn1cclxuIiwiY29uc3QgcmVnRW1vamkgPSBuZXcgUmVnRXhwKFxuICAvW1xcdTI3MDAtXFx1MjdCRl18W1xcdUUwMDAtXFx1RjhGRl18XFx1RDgzQ1tcXHVEQzAwLVxcdURGRkZdfFxcdUQ4M0RbXFx1REMwMC1cXHVERkZGXXxbXFx1MjAxMS1cXHUyNkZGXXxcXHVEODNFW1xcdUREMTAtXFx1RERGRl18W1xcdUZFMEUtXFx1RkUwRl0vLFxuICBcImdcIlxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFsbEFscGhhYmV0cyh0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIEJvb2xlYW4odGV4dC5tYXRjaCgvXlthLXpBLVowLTlfLV0rJC8pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4Y2x1ZGVFbW9qaSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dC5yZXBsYWNlKHJlZ0Vtb2ppLCBcIlwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4Y2x1ZGVTcGFjZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dC5yZXBsYWNlKC8gL2csIFwiXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG93ZXJJbmNsdWRlcyhvbmU6IHN0cmluZywgb3RoZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gb25lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMob3RoZXIudG9Mb3dlckNhc2UoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb3dlckluY2x1ZGVzV2l0aG91dFNwYWNlKG9uZTogc3RyaW5nLCBvdGhlcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBsb3dlckluY2x1ZGVzKGV4Y2x1ZGVTcGFjZShvbmUpLCBleGNsdWRlU3BhY2Uob3RoZXIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvd2VyU3RhcnRzV2l0aChhOiBzdHJpbmcsIGI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gYS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoYi50b0xvd2VyQ2FzZSgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvd2VyU3RhcnRzV2l0aG91dFNwYWNlKG9uZTogc3RyaW5nLCBvdGhlcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBsb3dlclN0YXJ0c1dpdGgoZXhjbHVkZVNwYWNlKG9uZSksIGV4Y2x1ZGVTcGFjZShvdGhlcikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0c1NtYWxsTGV0dGVyT25seUZpcnN0KHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuKHN0ci5tYXRjaCgvXltBLVpdW15BLVpdKyQvKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogc3BsaXRSYXcoXG4gIHRleHQ6IHN0cmluZyxcbiAgcmVnZXhwOiBSZWdFeHBcbik6IEl0ZXJhYmxlSXRlcmF0b3I8c3RyaW5nPiB7XG4gIGxldCBwcmV2aW91c0luZGV4ID0gMDtcbiAgZm9yIChsZXQgciBvZiB0ZXh0Lm1hdGNoQWxsKHJlZ2V4cCkpIHtcbiAgICBpZiAocHJldmlvdXNJbmRleCAhPT0gci5pbmRleCEpIHtcbiAgICAgIHlpZWxkIHRleHQuc2xpY2UocHJldmlvdXNJbmRleCwgci5pbmRleCEpO1xuICAgIH1cbiAgICB5aWVsZCB0ZXh0W3IuaW5kZXghXTtcbiAgICBwcmV2aW91c0luZGV4ID0gci5pbmRleCEgKyAxO1xuICB9XG5cbiAgaWYgKHByZXZpb3VzSW5kZXggIT09IHRleHQubGVuZ3RoKSB7XG4gICAgeWllbGQgdGV4dC5zbGljZShwcmV2aW91c0luZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgVG9rZW5pemVyIH0gZnJvbSBcIi4uL3Rva2VuaXplclwiO1xuaW1wb3J0IHsgc3BsaXRSYXcgfSBmcm9tIFwiLi4vLi4vdXRpbC9zdHJpbmdzXCI7XG5cbmZ1bmN0aW9uIHBpY2tUb2tlbnMoY29udGVudDogc3RyaW5nLCB0cmltUGF0dGVybjogUmVnRXhwKTogc3RyaW5nW10ge1xuICByZXR1cm4gY29udGVudC5zcGxpdCh0cmltUGF0dGVybikuZmlsdGVyKCh4KSA9PiB4ICE9PSBcIlwiKTtcbn1cblxuZXhwb3J0IGNvbnN0IFRSSU1fQ0hBUl9QQVRURVJOID0gL1tcXG5cXHRcXFtcXF0kLzo/IT0oKTw+XCInLix8Oyp+IGBdL2c7XG5leHBvcnQgY2xhc3MgRGVmYXVsdFRva2VuaXplciBpbXBsZW1lbnRzIFRva2VuaXplciB7XG4gIHRva2VuaXplKGNvbnRlbnQ6IHN0cmluZywgcmF3PzogYm9vbGVhbik6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gcmF3XG4gICAgICA/IEFycmF5LmZyb20oc3BsaXRSYXcoY29udGVudCwgdGhpcy5nZXRUcmltUGF0dGVybigpKSkuZmlsdGVyKFxuICAgICAgICAgICh4KSA9PiB4ICE9PSBcIiBcIlxuICAgICAgICApXG4gICAgICA6IHBpY2tUb2tlbnMoY29udGVudCwgdGhpcy5nZXRUcmltUGF0dGVybigpKTtcbiAgfVxuXG4gIHJlY3Vyc2l2ZVRva2VuaXplKGNvbnRlbnQ6IHN0cmluZyk6IHsgd29yZDogc3RyaW5nOyBvZmZzZXQ6IG51bWJlciB9W10ge1xuICAgIGNvbnN0IHRyaW1JbmRleGVzID0gQXJyYXkuZnJvbShjb250ZW50Lm1hdGNoQWxsKHRoaXMuZ2V0VHJpbVBhdHRlcm4oKSkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCEgLSBiLmluZGV4ISlcbiAgICAgIC5tYXAoKHgpID0+IHguaW5kZXghKTtcbiAgICByZXR1cm4gW1xuICAgICAgeyB3b3JkOiBjb250ZW50LCBvZmZzZXQ6IDAgfSxcbiAgICAgIC4uLnRyaW1JbmRleGVzLm1hcCgoaSkgPT4gKHtcbiAgICAgICAgd29yZDogY29udGVudC5zbGljZShpICsgMSksXG4gICAgICAgIG9mZnNldDogaSArIDEsXG4gICAgICB9KSksXG4gICAgXTtcbiAgfVxuXG4gIGdldFRyaW1QYXR0ZXJuKCk6IFJlZ0V4cCB7XG4gICAgcmV0dXJuIFRSSU1fQ0hBUl9QQVRURVJOO1xuICB9XG5cbiAgc2hvdWxkSWdub3JlT25DdXJyZW50KHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCJpbXBvcnQgeyBEZWZhdWx0VG9rZW5pemVyIH0gZnJvbSBcIi4vRGVmYXVsdFRva2VuaXplclwiO1xuXG5jb25zdCBBUkFCSUNfVFJJTV9DSEFSX1BBVFRFUk4gPSAvW1xcblxcdFxcW1xcXSQvOj8hPSgpPD5cIicuLHw7Kn4gYNiM2JtdL2c7XG5leHBvcnQgY2xhc3MgQXJhYmljVG9rZW5pemVyIGV4dGVuZHMgRGVmYXVsdFRva2VuaXplciB7XG4gIGdldFRyaW1QYXR0ZXJuKCk6IFJlZ0V4cCB7XG4gICAgcmV0dXJuIEFSQUJJQ19UUklNX0NIQVJfUEFUVEVSTjtcbiAgfVxufVxuIiwiLy8gQHRzLW5vY2hlY2tcbi8vIEJlY2F1c2UgdGhpcyBjb2RlIGlzIG9yaWdpbmFsbHkgamF2YXNjcmlwdCBjb2RlLlxuLy8gbm9pbnNwZWN0aW9uIEZ1bmN0aW9uVG9vTG9uZ0pTLEZ1bmN0aW9uV2l0aE11bHRpcGxlTG9vcHNKUyxFcXVhbGl0eUNvbXBhcmlzb25XaXRoQ29lcmNpb25KUyxQb2ludGxlc3NCb29sZWFuRXhwcmVzc2lvbkpTLEpTRGVjbGFyYXRpb25zQXRTY29wZVN0YXJ0XG5cbi8vIFRpbnlTZWdtZW50ZXIgMC4xIC0tIFN1cGVyIGNvbXBhY3QgSmFwYW5lc2UgdG9rZW5pemVyIGluIEphdmFzY3JpcHRcbi8vIChjKSAyMDA4IFRha3UgS3VkbyA8dGFrdUBjaGFzZW4ub3JnPlxuLy8gVGlueVNlZ21lbnRlciBpcyBmcmVlbHkgZGlzdHJpYnV0YWJsZSB1bmRlciB0aGUgdGVybXMgb2YgYSBuZXcgQlNEIGxpY2VuY2UuXG4vLyBGb3IgZGV0YWlscywgc2VlIGh0dHA6Ly9jaGFzZW4ub3JnL350YWt1L3NvZnR3YXJlL1RpbnlTZWdtZW50ZXIvTElDRU5DRS50eHRcblxuZnVuY3Rpb24gVGlueVNlZ21lbnRlcigpIHtcbiAgdmFyIHBhdHRlcm5zID0ge1xuICAgIFwiW+S4gOS6jOS4ieWbm+S6lOWFreS4g+WFq+S5neWNgeeZvuWNg+S4h+WEhOWFhl1cIjogXCJNXCIsXG4gICAgXCJb5LiALem+oOOAheOAhuODteODtl1cIjogXCJIXCIsXG4gICAgXCJb44GBLeOCk11cIjogXCJJXCIsXG4gICAgXCJb44KhLeODtOODvO+9sS3vvp3vvp7vvbBdXCI6IFwiS1wiLFxuICAgIFwiW2EtekEtWu+9gS3vvZrvvKEt77y6XVwiOiBcIkFcIixcbiAgICBcIlswLTnvvJAt77yZXVwiOiBcIk5cIixcbiAgfTtcbiAgdGhpcy5jaGFydHlwZV8gPSBbXTtcbiAgZm9yICh2YXIgaSBpbiBwYXR0ZXJucykge1xuICAgIHZhciByZWdleHAgPSBuZXcgUmVnRXhwKCk7XG4gICAgcmVnZXhwLmNvbXBpbGUoaSk7XG4gICAgdGhpcy5jaGFydHlwZV8ucHVzaChbcmVnZXhwLCBwYXR0ZXJuc1tpXV0pO1xuICB9XG5cbiAgdGhpcy5CSUFTX18gPSAtMzMyO1xuICB0aGlzLkJDMV9fID0geyBISDogNiwgSUk6IDI0NjEsIEtIOiA0MDYsIE9IOiAtMTM3OCB9O1xuICB0aGlzLkJDMl9fID0ge1xuICAgIEFBOiAtMzI2NyxcbiAgICBBSTogMjc0NCxcbiAgICBBTjogLTg3OCxcbiAgICBISDogLTQwNzAsXG4gICAgSE06IC0xNzExLFxuICAgIEhOOiA0MDEyLFxuICAgIEhPOiAzNzYxLFxuICAgIElBOiAxMzI3LFxuICAgIElIOiAtMTE4NCxcbiAgICBJSTogLTEzMzIsXG4gICAgSUs6IDE3MjEsXG4gICAgSU86IDU0OTIsXG4gICAgS0k6IDM4MzEsXG4gICAgS0s6IC04NzQxLFxuICAgIE1IOiAtMzEzMixcbiAgICBNSzogMzMzNCxcbiAgICBPTzogLTI5MjAsXG4gIH07XG4gIHRoaXMuQkMzX18gPSB7XG4gICAgSEg6IDk5NixcbiAgICBISTogNjI2LFxuICAgIEhLOiAtNzIxLFxuICAgIEhOOiAtMTMwNyxcbiAgICBITzogLTgzNixcbiAgICBJSDogLTMwMSxcbiAgICBLSzogMjc2MixcbiAgICBNSzogMTA3OSxcbiAgICBNTTogNDAzNCxcbiAgICBPQTogLTE2NTIsXG4gICAgT0g6IDI2NixcbiAgfTtcbiAgdGhpcy5CUDFfXyA9IHsgQkI6IDI5NSwgT0I6IDMwNCwgT086IC0xMjUsIFVCOiAzNTIgfTtcbiAgdGhpcy5CUDJfXyA9IHsgQk86IDYwLCBPTzogLTE3NjIgfTtcbiAgdGhpcy5CUTFfXyA9IHtcbiAgICBCSEg6IDExNTAsXG4gICAgQkhNOiAxNTIxLFxuICAgIEJJSTogLTExNTgsXG4gICAgQklNOiA4ODYsXG4gICAgQk1IOiAxMjA4LFxuICAgIEJOSDogNDQ5LFxuICAgIEJPSDogLTkxLFxuICAgIEJPTzogLTI1OTcsXG4gICAgT0hJOiA0NTEsXG4gICAgT0lIOiAtMjk2LFxuICAgIE9LQTogMTg1MSxcbiAgICBPS0g6IC0xMDIwLFxuICAgIE9LSzogOTA0LFxuICAgIE9PTzogMjk2NSxcbiAgfTtcbiAgdGhpcy5CUTJfXyA9IHtcbiAgICBCSEg6IDExOCxcbiAgICBCSEk6IC0xMTU5LFxuICAgIEJITTogNDY2LFxuICAgIEJJSDogLTkxOSxcbiAgICBCS0s6IC0xNzIwLFxuICAgIEJLTzogODY0LFxuICAgIE9ISDogLTExMzksXG4gICAgT0hNOiAtMTgxLFxuICAgIE9JSDogMTUzLFxuICAgIFVISTogLTExNDYsXG4gIH07XG4gIHRoaXMuQlEzX18gPSB7XG4gICAgQkhIOiAtNzkyLFxuICAgIEJISTogMjY2NCxcbiAgICBCSUk6IC0yOTksXG4gICAgQktJOiA0MTksXG4gICAgQk1IOiA5MzcsXG4gICAgQk1NOiA4MzM1LFxuICAgIEJOTjogOTk4LFxuICAgIEJPSDogNzc1LFxuICAgIE9ISDogMjE3NCxcbiAgICBPSE06IDQzOSxcbiAgICBPSUk6IDI4MCxcbiAgICBPS0g6IDE3OTgsXG4gICAgT0tJOiAtNzkzLFxuICAgIE9LTzogLTIyNDIsXG4gICAgT01IOiAtMjQwMixcbiAgICBPT086IDExNjk5LFxuICB9O1xuICB0aGlzLkJRNF9fID0ge1xuICAgIEJISDogLTM4OTUsXG4gICAgQklIOiAzNzYxLFxuICAgIEJJSTogLTQ2NTQsXG4gICAgQklLOiAxMzQ4LFxuICAgIEJLSzogLTE4MDYsXG4gICAgQk1JOiAtMzM4NSxcbiAgICBCT086IC0xMjM5NixcbiAgICBPQUg6IDkyNixcbiAgICBPSEg6IDI2NixcbiAgICBPSEs6IC0yMDM2LFxuICAgIE9OTjogLTk3MyxcbiAgfTtcbiAgdGhpcy5CVzFfXyA9IHtcbiAgICBcIizjgahcIjogNjYwLFxuICAgIFwiLOWQjFwiOiA3MjcsXG4gICAgQjHjgYI6IDE0MDQsXG4gICAgQjHlkIw6IDU0MixcbiAgICBcIuOAgeOBqFwiOiA2NjAsXG4gICAgXCLjgIHlkIxcIjogNzI3LFxuICAgIFwi44CN44GoXCI6IDE2ODIsXG4gICAg44GC44GjOiAxNTA1LFxuICAgIOOBhOOBhjogMTc0MyxcbiAgICDjgYTjgaM6IC0yMDU1LFxuICAgIOOBhOOCizogNjcyLFxuICAgIOOBhuOBlzogLTQ4MTcsXG4gICAg44GG44KTOiA2NjUsXG4gICAg44GL44KJOiAzNDcyLFxuICAgIOOBjOOCiTogNjAwLFxuICAgIOOBk+OBhjogLTc5MCxcbiAgICDjgZPjgag6IDIwODMsXG4gICAg44GT44KTOiAtMTI2MixcbiAgICDjgZXjgok6IC00MTQzLFxuICAgIOOBleOCkzogNDU3MyxcbiAgICDjgZfjgZ86IDI2NDEsXG4gICAg44GX44GmOiAxMTA0LFxuICAgIOOBmeOBpzogLTMzOTksXG4gICAg44Gd44GTOiAxOTc3LFxuICAgIOOBneOCjDogLTg3MSxcbiAgICDjgZ/jgaE6IDExMjIsXG4gICAg44Gf44KBOiA2MDEsXG4gICAg44Gj44GfOiAzNDYzLFxuICAgIOOBpOOBhDogLTgwMixcbiAgICDjgabjgYQ6IDgwNSxcbiAgICDjgabjgY06IDEyNDksXG4gICAg44Gn44GNOiAxMTI3LFxuICAgIOOBp+OBmTogMzQ0NSxcbiAgICDjgafjga86IDg0NCxcbiAgICDjgajjgYQ6IC00OTE1LFxuICAgIOOBqOOBvzogMTkyMixcbiAgICDjganjgZM6IDM4ODcsXG4gICAg44Gq44GEOiA1NzEzLFxuICAgIOOBquOBozogMzAxNSxcbiAgICDjgarjgak6IDczNzksXG4gICAg44Gq44KTOiAtMTExMyxcbiAgICDjgavjgZc6IDI0NjgsXG4gICAg44Gr44GvOiAxNDk4LFxuICAgIOOBq+OCgjogMTY3MSxcbiAgICDjgavlr746IC05MTIsXG4gICAg44Gu5LiAOiAtNTAxLFxuICAgIOOBruS4rTogNzQxLFxuICAgIOOBvuOBmzogMjQ0OCxcbiAgICDjgb7jgac6IDE3MTEsXG4gICAg44G+44G+OiAyNjAwLFxuICAgIOOBvuOCizogLTIxNTUsXG4gICAg44KE44KAOiAtMTk0NyxcbiAgICDjgojjgaM6IC0yNTY1LFxuICAgIOOCjOOBnzogMjM2OSxcbiAgICDjgozjgac6IC05MTMsXG4gICAg44KS44GXOiAxODYwLFxuICAgIOOCkuimizogNzMxLFxuICAgIOS6oeOBjzogLTE4ODYsXG4gICAg5Lqs6YO9OiAyNTU4LFxuICAgIOWPluOCijogLTI3ODQsXG4gICAg5aSn44GNOiAtMjYwNCxcbiAgICDlpKfpmKo6IDE0OTcsXG4gICAg5bmz5pa5OiAtMjMxNCxcbiAgICDlvJXjgY06IC0xMzM2LFxuICAgIOaXpeacrDogLTE5NSxcbiAgICDmnKzlvZM6IC0yNDIzLFxuICAgIOavjuaXpTogLTIxMTMsXG4gICAg55uu5oyHOiAtNzI0LFxuICAgIO+8ou+8keOBgjogMTQwNCxcbiAgICDvvKLvvJHlkIw6IDU0MixcbiAgICBcIu+9o+OBqFwiOiAxNjgyLFxuICB9O1xuICB0aGlzLkJXMl9fID0ge1xuICAgIFwiLi5cIjogLTExODIyLFxuICAgIDExOiAtNjY5LFxuICAgIFwi4oCV4oCVXCI6IC01NzMwLFxuICAgIFwi4oiS4oiSXCI6IC0xMzE3NSxcbiAgICDjgYTjgYY6IC0xNjA5LFxuICAgIOOBhuOBizogMjQ5MCxcbiAgICDjgYvjgZc6IC0xMzUwLFxuICAgIOOBi+OCgjogLTYwMixcbiAgICDjgYvjgok6IC03MTk0LFxuICAgIOOBi+OCjDogNDYxMixcbiAgICDjgYzjgYQ6IDg1MyxcbiAgICDjgYzjgok6IC0zMTk4LFxuICAgIOOBjeOBnzogMTk0MSxcbiAgICDjgY/jgao6IC0xNTk3LFxuICAgIOOBk+OBqDogLTgzOTIsXG4gICAg44GT44GuOiAtNDE5MyxcbiAgICDjgZXjgZs6IDQ1MzMsXG4gICAg44GV44KMOiAxMzE2OCxcbiAgICDjgZXjgpM6IC0zOTc3LFxuICAgIOOBl+OBhDogLTE4MTksXG4gICAg44GX44GLOiAtNTQ1LFxuICAgIOOBl+OBnzogNTA3OCxcbiAgICDjgZfjgaY6IDk3MixcbiAgICDjgZfjgao6IDkzOSxcbiAgICDjgZ3jga46IC0zNzQ0LFxuICAgIOOBn+OBhDogLTEyNTMsXG4gICAg44Gf44GfOiAtNjYyLFxuICAgIOOBn+OBoDogLTM4NTcsXG4gICAg44Gf44GhOiAtNzg2LFxuICAgIOOBn+OBqDogMTIyNCxcbiAgICDjgZ/jga86IC05MzksXG4gICAg44Gj44GfOiA0NTg5LFxuICAgIOOBo+OBpjogMTY0NyxcbiAgICDjgaPjgag6IC0yMDk0LFxuICAgIOOBpuOBhDogNjE0NCxcbiAgICDjgabjgY06IDM2NDAsXG4gICAg44Gm44GPOiAyNTUxLFxuICAgIOOBpuOBrzogLTMxMTAsXG4gICAg44Gm44KCOiAtMzA2NSxcbiAgICDjgafjgYQ6IDI2NjYsXG4gICAg44Gn44GNOiAtMTUyOCxcbiAgICDjgafjgZc6IC0zODI4LFxuICAgIOOBp+OBmTogLTQ3NjEsXG4gICAg44Gn44KCOiAtNDIwMyxcbiAgICDjgajjgYQ6IDE4OTAsXG4gICAg44Go44GTOiAtMTc0NixcbiAgICDjgajjgag6IC0yMjc5LFxuICAgIOOBqOOBrjogNzIwLFxuICAgIOOBqOOBvzogNTE2OCxcbiAgICDjgajjgoI6IC0zOTQxLFxuICAgIOOBquOBhDogLTI0ODgsXG4gICAg44Gq44GMOiAtMTMxMyxcbiAgICDjgarjgak6IC02NTA5LFxuICAgIOOBquOBrjogMjYxNCxcbiAgICDjgarjgpM6IDMwOTksXG4gICAg44Gr44GKOiAtMTYxNSxcbiAgICDjgavjgZc6IDI3NDgsXG4gICAg44Gr44GqOiAyNDU0LFxuICAgIOOBq+OCiDogLTcyMzYsXG4gICAg44Gr5a++OiAtMTQ5NDMsXG4gICAg44Gr5b6TOiAtNDY4OCxcbiAgICDjgavplqI6IC0xMTM4OCxcbiAgICDjga7jgYs6IDIwOTMsXG4gICAg44Gu44GnOiAtNzA1OSxcbiAgICDjga7jgas6IC02MDQxLFxuICAgIOOBruOBrjogLTYxMjUsXG4gICAg44Gv44GEOiAxMDczLFxuICAgIOOBr+OBjDogLTEwMzMsXG4gICAg44Gv44GaOiAtMjUzMixcbiAgICDjgbDjgow6IDE4MTMsXG4gICAg44G+44GXOiAtMTMxNixcbiAgICDjgb7jgac6IC02NjIxLFxuICAgIOOBvuOCjDogNTQwOSxcbiAgICDjgoHjgaY6IC0zMTUzLFxuICAgIOOCguOBhDogMjIzMCxcbiAgICDjgoLjga46IC0xMDcxMyxcbiAgICDjgonjgYs6IC05NDQsXG4gICAg44KJ44GXOiAtMTYxMSxcbiAgICDjgonjgas6IC0xODk3LFxuICAgIOOCiuOBlzogNjUxLFxuICAgIOOCiuOBvjogMTYyMCxcbiAgICDjgozjgZ86IDQyNzAsXG4gICAg44KM44GmOiA4NDksXG4gICAg44KM44GwOiA0MTE0LFxuICAgIOOCjeOBhjogNjA2NyxcbiAgICDjgo/jgow6IDc5MDEsXG4gICAg44KS6YCaOiAtMTE4NzcsXG4gICAg44KT44GgOiA3MjgsXG4gICAg44KT44GqOiAtNDExNSxcbiAgICDkuIDkuro6IDYwMixcbiAgICDkuIDmlrk6IC0xMzc1LFxuICAgIOS4gOaXpTogOTcwLFxuICAgIOS4gOmDqDogLTEwNTEsXG4gICAg5LiK44GMOiAtNDQ3OSxcbiAgICDkvJrnpL46IC0xMTE2LFxuICAgIOWHuuOBpjogMjE2MyxcbiAgICDliIbjga46IC03NzU4LFxuICAgIOWQjOWFmjogOTcwLFxuICAgIOWQjOaXpTogLTkxMyxcbiAgICDlpKfpmKo6IC0yNDcxLFxuICAgIOWnlOWToTogLTEyNTAsXG4gICAg5bCR44GqOiAtMTA1MCxcbiAgICDlubTluqY6IC04NjY5LFxuICAgIOW5tOmWkzogLTE2MjYsXG4gICAg5bqc55yMOiAtMjM2MyxcbiAgICDmiYvmqKk6IC0xOTgyLFxuICAgIOaWsOiBnjogLTQwNjYsXG4gICAg5pel5pawOiAtNzIyLFxuICAgIOaXpeacrDogLTcwNjgsXG4gICAg5pel57GzOiAzMzcyLFxuICAgIOabnOaXpTogLTYwMSxcbiAgICDmnJ3prq46IC0yMzU1LFxuICAgIOacrOS6ujogLTI2OTcsXG4gICAg5p2x5LqsOiAtMTU0MyxcbiAgICDnhLbjgag6IC0xMzg0LFxuICAgIOekvuS8mjogLTEyNzYsXG4gICAg56uL44GmOiAtOTkwLFxuICAgIOesrOOBqzogLTE2MTIsXG4gICAg57Gz5Zu9OiAtNDI2OCxcbiAgICBcIu+8ke+8kVwiOiAtNjY5LFxuICB9O1xuICB0aGlzLkJXM19fID0ge1xuICAgIOOBguOBnzogLTIxOTQsXG4gICAg44GC44KKOiA3MTksXG4gICAg44GC44KLOiAzODQ2LFxuICAgIFwi44GELlwiOiAtMTE4NSxcbiAgICBcIuOBhOOAglwiOiAtMTE4NSxcbiAgICDjgYTjgYQ6IDUzMDgsXG4gICAg44GE44GIOiAyMDc5LFxuICAgIOOBhOOBjzogMzAyOSxcbiAgICDjgYTjgZ86IDIwNTYsXG4gICAg44GE44GjOiAxODgzLFxuICAgIOOBhOOCizogNTYwMCxcbiAgICDjgYTjgo86IDE1MjcsXG4gICAg44GG44GhOiAxMTE3LFxuICAgIOOBhuOBqDogNDc5OCxcbiAgICDjgYjjgag6IDE0NTQsXG4gICAgXCLjgYsuXCI6IDI4NTcsXG4gICAgXCLjgYvjgIJcIjogMjg1NyxcbiAgICDjgYvjgZE6IC03NDMsXG4gICAg44GL44GjOiAtNDA5OCxcbiAgICDjgYvjgas6IC02NjksXG4gICAg44GL44KJOiA2NTIwLFxuICAgIOOBi+OCijogLTI2NzAsXG4gICAgXCLjgYwsXCI6IDE4MTYsXG4gICAgXCLjgYzjgIFcIjogMTgxNixcbiAgICDjgYzjgY06IC00ODU1LFxuICAgIOOBjOOBkTogLTExMjcsXG4gICAg44GM44GjOiAtOTEzLFxuICAgIOOBjOOCiTogLTQ5NzcsXG4gICAg44GM44KKOiAtMjA2NCxcbiAgICDjgY3jgZ86IDE2NDUsXG4gICAg44GR44GpOiAxMzc0LFxuICAgIOOBk+OBqDogNzM5NyxcbiAgICDjgZPjga46IDE1NDIsXG4gICAg44GT44KNOiAtMjc1NyxcbiAgICDjgZXjgYQ6IC03MTQsXG4gICAg44GV44KSOiA5NzYsXG4gICAgXCLjgZcsXCI6IDE1NTcsXG4gICAgXCLjgZfjgIFcIjogMTU1NyxcbiAgICDjgZfjgYQ6IC0zNzE0LFxuICAgIOOBl+OBnzogMzU2MixcbiAgICDjgZfjgaY6IDE0NDksXG4gICAg44GX44GqOiAyNjA4LFxuICAgIOOBl+OBvjogMTIwMCxcbiAgICBcIuOBmS5cIjogLTEzMTAsXG4gICAgXCLjgZnjgIJcIjogLTEzMTAsXG4gICAg44GZ44KLOiA2NTIxLFxuICAgIFwi44GaLFwiOiAzNDI2LFxuICAgIFwi44Ga44CBXCI6IDM0MjYsXG4gICAg44Ga44GrOiA4NDEsXG4gICAg44Gd44GGOiA0MjgsXG4gICAgXCLjgZ8uXCI6IDg4NzUsXG4gICAgXCLjgZ/jgIJcIjogODg3NSxcbiAgICDjgZ/jgYQ6IC01OTQsXG4gICAg44Gf44GuOiA4MTIsXG4gICAg44Gf44KKOiAtMTE4MyxcbiAgICDjgZ/jgos6IC04NTMsXG4gICAgXCLjgaAuXCI6IDQwOTgsXG4gICAgXCLjgaDjgIJcIjogNDA5OCxcbiAgICDjgaDjgaM6IDEwMDQsXG4gICAg44Gj44GfOiAtNDc0OCxcbiAgICDjgaPjgaY6IDMwMCxcbiAgICDjgabjgYQ6IDYyNDAsXG4gICAg44Gm44GKOiA4NTUsXG4gICAg44Gm44KCOiAzMDIsXG4gICAg44Gn44GZOiAxNDM3LFxuICAgIOOBp+OBqzogLTE0ODIsXG4gICAg44Gn44GvOiAyMjk1LFxuICAgIOOBqOOBhjogLTEzODcsXG4gICAg44Go44GXOiAyMjY2LFxuICAgIOOBqOOBrjogNTQxLFxuICAgIOOBqOOCgjogLTM1NDMsXG4gICAg44Gp44GGOiA0NjY0LFxuICAgIOOBquOBhDogMTc5NixcbiAgICDjgarjgY86IC05MDMsXG4gICAg44Gq44GpOiAyMTM1LFxuICAgIFwi44GrLFwiOiAtMTAyMSxcbiAgICBcIuOBq+OAgVwiOiAtMTAyMSxcbiAgICDjgavjgZc6IDE3NzEsXG4gICAg44Gr44GqOiAxOTA2LFxuICAgIOOBq+OBrzogMjY0NCxcbiAgICBcIuOBrixcIjogLTcyNCxcbiAgICBcIuOBruOAgVwiOiAtNzI0LFxuICAgIOOBruWtkDogLTEwMDAsXG4gICAgXCLjga8sXCI6IDEzMzcsXG4gICAgXCLjga/jgIFcIjogMTMzNyxcbiAgICDjgbnjgY06IDIxODEsXG4gICAg44G+44GXOiAxMTEzLFxuICAgIOOBvuOBmTogNjk0MyxcbiAgICDjgb7jgaM6IC0xNTQ5LFxuICAgIOOBvuOBpzogNjE1NCxcbiAgICDjgb7jgow6IC03OTMsXG4gICAg44KJ44GXOiAxNDc5LFxuICAgIOOCieOCjDogNjgyMCxcbiAgICDjgovjgos6IDM4MTgsXG4gICAgXCLjgowsXCI6IDg1NCxcbiAgICBcIuOCjOOAgVwiOiA4NTQsXG4gICAg44KM44GfOiAxODUwLFxuICAgIOOCjOOBpjogMTM3NSxcbiAgICDjgozjgbA6IC0zMjQ2LFxuICAgIOOCjOOCizogMTA5MSxcbiAgICDjgo/jgow6IC02MDUsXG4gICAg44KT44GgOiA2MDYsXG4gICAg44KT44GnOiA3OTgsXG4gICAg44Kr5pyIOiA5OTAsXG4gICAg5Lya6K2wOiA4NjAsXG4gICAg5YWl44KKOiAxMjMyLFxuICAgIOWkp+S8mjogMjIxNyxcbiAgICDlp4vjgoE6IDE2ODEsXG4gICAg5biCOiA5NjUsXG4gICAg5paw6IGeOiAtNTA1NSxcbiAgICBcIuaXpSxcIjogOTc0LFxuICAgIFwi5pel44CBXCI6IDk3NCxcbiAgICDnpL7kvJo6IDIwMjQsXG4gICAg77225pyIOiA5OTAsXG4gIH07XG4gIHRoaXMuVEMxX18gPSB7XG4gICAgQUFBOiAxMDkzLFxuICAgIEhISDogMTAyOSxcbiAgICBISE06IDU4MCxcbiAgICBISUk6IDk5OCxcbiAgICBIT0g6IC0zOTAsXG4gICAgSE9NOiAtMzMxLFxuICAgIElISTogMTE2OSxcbiAgICBJT0g6IC0xNDIsXG4gICAgSU9JOiAtMTAxNSxcbiAgICBJT006IDQ2NyxcbiAgICBNTUg6IDE4NyxcbiAgICBPT0k6IC0xODMyLFxuICB9O1xuICB0aGlzLlRDMl9fID0ge1xuICAgIEhITzogMjA4OCxcbiAgICBISUk6IC0xMDIzLFxuICAgIEhNTTogLTExNTQsXG4gICAgSUhJOiAtMTk2NSxcbiAgICBLS0g6IDcwMyxcbiAgICBPSUk6IC0yNjQ5LFxuICB9O1xuICB0aGlzLlRDM19fID0ge1xuICAgIEFBQTogLTI5NCxcbiAgICBISEg6IDM0NixcbiAgICBISEk6IC0zNDEsXG4gICAgSElJOiAtMTA4OCxcbiAgICBISUs6IDczMSxcbiAgICBIT0g6IC0xNDg2LFxuICAgIElISDogMTI4LFxuICAgIElISTogLTMwNDEsXG4gICAgSUhPOiAtMTkzNSxcbiAgICBJSUg6IC04MjUsXG4gICAgSUlNOiAtMTAzNSxcbiAgICBJT0k6IC01NDIsXG4gICAgS0hIOiAtMTIxNixcbiAgICBLS0E6IDQ5MSxcbiAgICBLS0g6IC0xMjE3LFxuICAgIEtPSzogLTEwMDksXG4gICAgTUhIOiAtMjY5NCxcbiAgICBNSE06IC00NTcsXG4gICAgTUhPOiAxMjMsXG4gICAgTU1IOiAtNDcxLFxuICAgIE5OSDogLTE2ODksXG4gICAgTk5POiA2NjIsXG4gICAgT0hPOiAtMzM5MyxcbiAgfTtcbiAgdGhpcy5UQzRfXyA9IHtcbiAgICBISEg6IC0yMDMsXG4gICAgSEhJOiAxMzQ0LFxuICAgIEhISzogMzY1LFxuICAgIEhITTogLTEyMixcbiAgICBISE46IDE4MixcbiAgICBISE86IDY2OSxcbiAgICBISUg6IDgwNCxcbiAgICBISUk6IDY3OSxcbiAgICBIT0g6IDQ0NixcbiAgICBJSEg6IDY5NSxcbiAgICBJSE86IC0yMzI0LFxuICAgIElJSDogMzIxLFxuICAgIElJSTogMTQ5NyxcbiAgICBJSU86IDY1NixcbiAgICBJT086IDU0LFxuICAgIEtBSzogNDg0NSxcbiAgICBLS0E6IDMzODYsXG4gICAgS0tLOiAzMDY1LFxuICAgIE1ISDogLTQwNSxcbiAgICBNSEk6IDIwMSxcbiAgICBNTUg6IC0yNDEsXG4gICAgTU1NOiA2NjEsXG4gICAgTU9NOiA4NDEsXG4gIH07XG4gIHRoaXMuVFExX18gPSB7XG4gICAgQkhISDogLTIyNyxcbiAgICBCSEhJOiAzMTYsXG4gICAgQkhJSDogLTEzMixcbiAgICBCSUhIOiA2MCxcbiAgICBCSUlJOiAxNTk1LFxuICAgIEJOSEg6IC03NDQsXG4gICAgQk9ISDogMjI1LFxuICAgIEJPT086IC05MDgsXG4gICAgT0FLSzogNDgyLFxuICAgIE9ISEg6IDI4MSxcbiAgICBPSElIOiAyNDksXG4gICAgT0lISTogMjAwLFxuICAgIE9JSUg6IC02OCxcbiAgfTtcbiAgdGhpcy5UUTJfXyA9IHsgQklISDogLTE0MDEsIEJJSUk6IC0xMDMzLCBCS0FLOiAtNTQzLCBCT09POiAtNTU5MSB9O1xuICB0aGlzLlRRM19fID0ge1xuICAgIEJISEg6IDQ3OCxcbiAgICBCSEhNOiAtMTA3MyxcbiAgICBCSElIOiAyMjIsXG4gICAgQkhJSTogLTUwNCxcbiAgICBCSUlIOiAtMTE2LFxuICAgIEJJSUk6IC0xMDUsXG4gICAgQk1ISTogLTg2MyxcbiAgICBCTUhNOiAtNDY0LFxuICAgIEJPTUg6IDYyMCxcbiAgICBPSEhIOiAzNDYsXG4gICAgT0hISTogMTcyOSxcbiAgICBPSElJOiA5OTcsXG4gICAgT0hNSDogNDgxLFxuICAgIE9JSEg6IDYyMyxcbiAgICBPSUlIOiAxMzQ0LFxuICAgIE9LQUs6IDI3OTIsXG4gICAgT0tISDogNTg3LFxuICAgIE9LS0E6IDY3OSxcbiAgICBPT0hIOiAxMTAsXG4gICAgT09JSTogLTY4NSxcbiAgfTtcbiAgdGhpcy5UUTRfXyA9IHtcbiAgICBCSEhIOiAtNzIxLFxuICAgIEJISE06IC0zNjA0LFxuICAgIEJISUk6IC05NjYsXG4gICAgQklJSDogLTYwNyxcbiAgICBCSUlJOiAtMjE4MSxcbiAgICBPQUFBOiAtMjc2MyxcbiAgICBPQUtLOiAxODAsXG4gICAgT0hISDogLTI5NCxcbiAgICBPSEhJOiAyNDQ2LFxuICAgIE9ISE86IDQ4MCxcbiAgICBPSElIOiAtMTU3MyxcbiAgICBPSUhIOiAxOTM1LFxuICAgIE9JSEk6IC00OTMsXG4gICAgT0lJSDogNjI2LFxuICAgIE9JSUk6IC00MDA3LFxuICAgIE9LQUs6IC04MTU2LFxuICB9O1xuICB0aGlzLlRXMV9fID0geyDjgavjgaTjgYQ6IC00NjgxLCDmnbHkuqzpg706IDIwMjYgfTtcbiAgdGhpcy5UVzJfXyA9IHtcbiAgICDjgYLjgovnqIs6IC0yMDQ5LFxuICAgIOOBhOOBo+OBnzogLTEyNTYsXG4gICAg44GT44KN44GMOiAtMjQzNCxcbiAgICDjgZfjgofjgYY6IDM4NzMsXG4gICAg44Gd44Gu5b6MOiAtNDQzMCxcbiAgICDjgaDjgaPjgaY6IC0xMDQ5LFxuICAgIOOBpuOBhOOBnzogMTgzMyxcbiAgICDjgajjgZfjgaY6IC00NjU3LFxuICAgIOOBqOOCguOBqzogLTQ1MTcsXG4gICAg44KC44Gu44GnOiAxODgyLFxuICAgIOS4gOawl+OBqzogLTc5MixcbiAgICDliJ3jgoHjgaY6IC0xNTEyLFxuICAgIOWQjOaZguOBqzogLTgwOTcsXG4gICAg5aSn44GN44GqOiAtMTI1NSxcbiAgICDlr77jgZfjgaY6IC0yNzIxLFxuICAgIOekvuS8muWFmjogLTMyMTYsXG4gIH07XG4gIHRoaXMuVFczX18gPSB7XG4gICAg44GE44Gf44GgOiAtMTczNCxcbiAgICDjgZfjgabjgYQ6IDEzMTQsXG4gICAg44Go44GX44GmOiAtNDMxNCxcbiAgICDjgavjgaTjgYQ6IC01NDgzLFxuICAgIOOBq+OBqOOBozogLTU5ODksXG4gICAg44Gr5b2T44GfOiAtNjI0NyxcbiAgICBcIuOBruOBpyxcIjogLTcyNyxcbiAgICBcIuOBruOBp+OAgVwiOiAtNzI3LFxuICAgIOOBruOCguOBrjogLTYwMCxcbiAgICDjgozjgYvjgok6IC0zNzUyLFxuICAgIOWNgeS6jOaciDogLTIyODcsXG4gIH07XG4gIHRoaXMuVFc0X18gPSB7XG4gICAgXCLjgYTjgYYuXCI6IDg1NzYsXG4gICAgXCLjgYTjgYbjgIJcIjogODU3NixcbiAgICDjgYvjgonjgao6IC0yMzQ4LFxuICAgIOOBl+OBpuOBhDogMjk1OCxcbiAgICBcIuOBn+OBjCxcIjogMTUxNixcbiAgICBcIuOBn+OBjOOAgVwiOiAxNTE2LFxuICAgIOOBpuOBhOOCizogMTUzOCxcbiAgICDjgajjgYTjgYY6IDEzNDksXG4gICAg44G+44GX44GfOiA1NTQzLFxuICAgIOOBvuOBm+OCkzogMTA5NyxcbiAgICDjgojjgYbjgag6IC00MjU4LFxuICAgIOOCiOOCi+OBqDogNTg2NSxcbiAgfTtcbiAgdGhpcy5VQzFfXyA9IHsgQTogNDg0LCBLOiA5MywgTTogNjQ1LCBPOiAtNTA1IH07XG4gIHRoaXMuVUMyX18gPSB7IEE6IDgxOSwgSDogMTA1OSwgSTogNDA5LCBNOiAzOTg3LCBOOiA1Nzc1LCBPOiA2NDYgfTtcbiAgdGhpcy5VQzNfXyA9IHsgQTogLTEzNzAsIEk6IDIzMTEgfTtcbiAgdGhpcy5VQzRfXyA9IHtcbiAgICBBOiAtMjY0MyxcbiAgICBIOiAxODA5LFxuICAgIEk6IC0xMDMyLFxuICAgIEs6IC0zNDUwLFxuICAgIE06IDM1NjUsXG4gICAgTjogMzg3NixcbiAgICBPOiA2NjQ2LFxuICB9O1xuICB0aGlzLlVDNV9fID0geyBIOiAzMTMsIEk6IC0xMjM4LCBLOiAtNzk5LCBNOiA1MzksIE86IC04MzEgfTtcbiAgdGhpcy5VQzZfXyA9IHsgSDogLTUwNiwgSTogLTI1MywgSzogODcsIE06IDI0NywgTzogLTM4NyB9O1xuICB0aGlzLlVQMV9fID0geyBPOiAtMjE0IH07XG4gIHRoaXMuVVAyX18gPSB7IEI6IDY5LCBPOiA5MzUgfTtcbiAgdGhpcy5VUDNfXyA9IHsgQjogMTg5IH07XG4gIHRoaXMuVVExX18gPSB7XG4gICAgQkg6IDIxLFxuICAgIEJJOiAtMTIsXG4gICAgQks6IC05OSxcbiAgICBCTjogMTQyLFxuICAgIEJPOiAtNTYsXG4gICAgT0g6IC05NSxcbiAgICBPSTogNDc3LFxuICAgIE9LOiA0MTAsXG4gICAgT086IC0yNDIyLFxuICB9O1xuICB0aGlzLlVRMl9fID0geyBCSDogMjE2LCBCSTogMTEzLCBPSzogMTc1OSB9O1xuICB0aGlzLlVRM19fID0ge1xuICAgIEJBOiAtNDc5LFxuICAgIEJIOiA0MixcbiAgICBCSTogMTkxMyxcbiAgICBCSzogLTcxOTgsXG4gICAgQk06IDMxNjAsXG4gICAgQk46IDY0MjcsXG4gICAgQk86IDE0NzYxLFxuICAgIE9JOiAtODI3LFxuICAgIE9OOiAtMzIxMixcbiAgfTtcbiAgdGhpcy5VVzFfXyA9IHtcbiAgICBcIixcIjogMTU2LFxuICAgIFwi44CBXCI6IDE1NixcbiAgICBcIuOAjFwiOiAtNDYzLFxuICAgIOOBgjogLTk0MSxcbiAgICDjgYY6IC0xMjcsXG4gICAg44GMOiAtNTUzLFxuICAgIOOBjTogMTIxLFxuICAgIOOBkzogNTA1LFxuICAgIOOBpzogLTIwMSxcbiAgICDjgag6IC01NDcsXG4gICAg44GpOiAtMTIzLFxuICAgIOOBqzogLTc4OSxcbiAgICDjga46IC0xODUsXG4gICAg44GvOiAtODQ3LFxuICAgIOOCgjogLTQ2NixcbiAgICDjgoQ6IC00NzAsXG4gICAg44KIOiAxODIsXG4gICAg44KJOiAtMjkyLFxuICAgIOOCijogMjA4LFxuICAgIOOCjDogMTY5LFxuICAgIOOCkjogLTQ0NixcbiAgICDjgpM6IC0xMzcsXG4gICAgXCLjg7tcIjogLTEzNSxcbiAgICDkuLs6IC00MDIsXG4gICAg5LqsOiAtMjY4LFxuICAgIOWMujogLTkxMixcbiAgICDljYg6IDg3MSxcbiAgICDlm706IC00NjAsXG4gICAg5aSnOiA1NjEsXG4gICAg5aeUOiA3MjksXG4gICAg5biCOiAtNDExLFxuICAgIOaXpTogLTE0MSxcbiAgICDnkIY6IDM2MSxcbiAgICDnlJ86IC00MDgsXG4gICAg55yMOiAtMzg2LFxuICAgIOmDvTogLTcxOCxcbiAgICBcIu+9olwiOiAtNDYzLFxuICAgIFwi772lXCI6IC0xMzUsXG4gIH07XG4gIHRoaXMuVVcyX18gPSB7XG4gICAgXCIsXCI6IC04MjksXG4gICAgXCLjgIFcIjogLTgyOSxcbiAgICDjgIc6IDg5MixcbiAgICBcIuOAjFwiOiAtNjQ1LFxuICAgIFwi44CNXCI6IDMxNDUsXG4gICAg44GCOiAtNTM4LFxuICAgIOOBhDogNTA1LFxuICAgIOOBhjogMTM0LFxuICAgIOOBijogLTUwMixcbiAgICDjgYs6IDE0NTQsXG4gICAg44GMOiAtODU2LFxuICAgIOOBjzogLTQxMixcbiAgICDjgZM6IDExNDEsXG4gICAg44GVOiA4NzgsXG4gICAg44GWOiA1NDAsXG4gICAg44GXOiAxNTI5LFxuICAgIOOBmTogLTY3NSxcbiAgICDjgZs6IDMwMCxcbiAgICDjgZ06IC0xMDExLFxuICAgIOOBnzogMTg4LFxuICAgIOOBoDogMTgzNyxcbiAgICDjgaQ6IC05NDksXG4gICAg44GmOiAtMjkxLFxuICAgIOOBpzogLTI2OCxcbiAgICDjgag6IC05ODEsXG4gICAg44GpOiAxMjczLFxuICAgIOOBqjogMTA2MyxcbiAgICDjgas6IC0xNzY0LFxuICAgIOOBrjogMTMwLFxuICAgIOOBrzogLTQwOSxcbiAgICDjgbI6IC0xMjczLFxuICAgIOOBuTogMTI2MSxcbiAgICDjgb46IDYwMCxcbiAgICDjgoI6IC0xMjYzLFxuICAgIOOChDogLTQwMixcbiAgICDjgog6IDE2MzksXG4gICAg44KKOiAtNTc5LFxuICAgIOOCizogLTY5NCxcbiAgICDjgow6IDU3MSxcbiAgICDjgpI6IC0yNTE2LFxuICAgIOOCkzogMjA5NSxcbiAgICDjgqI6IC01ODcsXG4gICAg44KrOiAzMDYsXG4gICAg44KtOiA1NjgsXG4gICAg44ODOiA4MzEsXG4gICAg5LiJOiAtNzU4LFxuICAgIOS4jTogLTIxNTAsXG4gICAg5LiWOiAtMzAyLFxuICAgIOS4rTogLTk2OCxcbiAgICDkuLs6IC04NjEsXG4gICAg5LqLOiA0OTIsXG4gICAg5Lq6OiAtMTIzLFxuICAgIOS8mjogOTc4LFxuICAgIOS/nTogMzYyLFxuICAgIOWFpTogNTQ4LFxuICAgIOWInTogLTMwMjUsXG4gICAg5YmvOiAtMTU2NixcbiAgICDljJc6IC0zNDE0LFxuICAgIOWMujogLTQyMixcbiAgICDlpKc6IC0xNzY5LFxuICAgIOWkqTogLTg2NSxcbiAgICDlpKo6IC00ODMsXG4gICAg5a2QOiAtMTUxOSxcbiAgICDlraY6IDc2MCxcbiAgICDlrp86IDEwMjMsXG4gICAg5bCPOiAtMjAwOSxcbiAgICDluII6IC04MTMsXG4gICAg5bm0OiAtMTA2MCxcbiAgICDlvLc6IDEwNjcsXG4gICAg5omLOiAtMTUxOSxcbiAgICDmj7o6IC0xMDMzLFxuICAgIOaUvzogMTUyMixcbiAgICDmloc6IC0xMzU1LFxuICAgIOaWsDogLTE2ODIsXG4gICAg5pelOiAtMTgxNSxcbiAgICDmmI46IC0xNDYyLFxuICAgIOacgDogLTYzMCxcbiAgICDmnJ06IC0xODQzLFxuICAgIOacrDogLTE2NTAsXG4gICAg5p2xOiAtOTMxLFxuICAgIOaenDogLTY2NSxcbiAgICDmrKE6IC0yMzc4LFxuICAgIOawkTogLTE4MCxcbiAgICDmsJc6IC0xNzQwLFxuICAgIOeQhjogNzUyLFxuICAgIOeZujogNTI5LFxuICAgIOebrjogLTE1ODQsXG4gICAg55u4OiAtMjQyLFxuICAgIOecjDogLTExNjUsXG4gICAg56uLOiAtNzYzLFxuICAgIOesrDogODEwLFxuICAgIOexszogNTA5LFxuICAgIOiHqjogLTEzNTMsXG4gICAg6KGMOiA4MzgsXG4gICAg6KW/OiAtNzQ0LFxuICAgIOimizogLTM4NzQsXG4gICAg6Kq/OiAxMDEwLFxuICAgIOitsDogMTE5OCxcbiAgICDovrw6IDMwNDEsXG4gICAg6ZaLOiAxNzU4LFxuICAgIOmWkzogLTEyNTcsXG4gICAgXCLvvaJcIjogLTY0NSxcbiAgICBcIu+9o1wiOiAzMTQ1LFxuICAgIO+9rzogODMxLFxuICAgIO+9sTogLTU4NyxcbiAgICDvvbY6IDMwNixcbiAgICDvvbc6IDU2OCxcbiAgfTtcbiAgdGhpcy5VVzNfXyA9IHtcbiAgICBcIixcIjogNDg4OSxcbiAgICAxOiAtODAwLFxuICAgIFwi4oiSXCI6IC0xNzIzLFxuICAgIFwi44CBXCI6IDQ4ODksXG4gICAg44CFOiAtMjMxMSxcbiAgICDjgIc6IDU4MjcsXG4gICAgXCLjgI1cIjogMjY3MCxcbiAgICBcIuOAk1wiOiAtMzU3MyxcbiAgICDjgYI6IC0yNjk2LFxuICAgIOOBhDogMTAwNixcbiAgICDjgYY6IDIzNDIsXG4gICAg44GIOiAxOTgzLFxuICAgIOOBijogLTQ4NjQsXG4gICAg44GLOiAtMTE2MyxcbiAgICDjgYw6IDMyNzEsXG4gICAg44GPOiAxMDA0LFxuICAgIOOBkTogMzg4LFxuICAgIOOBkjogNDAxLFxuICAgIOOBkzogLTM1NTIsXG4gICAg44GUOiAtMzExNixcbiAgICDjgZU6IC0xMDU4LFxuICAgIOOBlzogLTM5NSxcbiAgICDjgZk6IDU4NCxcbiAgICDjgZs6IDM2ODUsXG4gICAg44GdOiAtNTIyOCxcbiAgICDjgZ86IDg0MixcbiAgICDjgaE6IC01MjEsXG4gICAg44GjOiAtMTQ0NCxcbiAgICDjgaQ6IC0xMDgxLFxuICAgIOOBpjogNjE2NyxcbiAgICDjgac6IDIzMTgsXG4gICAg44GoOiAxNjkxLFxuICAgIOOBqTogLTg5OSxcbiAgICDjgao6IC0yNzg4LFxuICAgIOOBqzogMjc0NSxcbiAgICDjga46IDQwNTYsXG4gICAg44GvOiA0NTU1LFxuICAgIOOBsjogLTIxNzEsXG4gICAg44G1OiAtMTc5OCxcbiAgICDjgbg6IDExOTksXG4gICAg44G7OiAtNTUxNixcbiAgICDjgb46IC00Mzg0LFxuICAgIOOBvzogLTEyMCxcbiAgICDjgoE6IDEyMDUsXG4gICAg44KCOiAyMzIzLFxuICAgIOOChDogLTc4OCxcbiAgICDjgog6IC0yMDIsXG4gICAg44KJOiA3MjcsXG4gICAg44KKOiA2NDksXG4gICAg44KLOiA1OTA1LFxuICAgIOOCjDogMjc3MyxcbiAgICDjgo86IC0xMjA3LFxuICAgIOOCkjogNjYyMCxcbiAgICDjgpM6IC01MTgsXG4gICAg44KiOiA1NTEsXG4gICAg44KwOiAxMzE5LFxuICAgIOOCuTogODc0LFxuICAgIOODgzogLTEzNTAsXG4gICAg44OIOiA1MjEsXG4gICAg44OgOiAxMTA5LFxuICAgIOODqzogMTU5MSxcbiAgICDjg606IDIyMDEsXG4gICAg44OzOiAyNzgsXG4gICAgXCLjg7tcIjogLTM3OTQsXG4gICAg5LiAOiAtMTYxOSxcbiAgICDkuIs6IC0xNzU5LFxuICAgIOS4ljogLTIwODcsXG4gICAg5LihOiAzODE1LFxuICAgIOS4rTogNjUzLFxuICAgIOS4uzogLTc1OCxcbiAgICDkuog6IC0xMTkzLFxuICAgIOS6jDogOTc0LFxuICAgIOS6ujogMjc0MixcbiAgICDku4o6IDc5MixcbiAgICDku5Y6IDE4ODksXG4gICAg5LulOiAtMTM2OCxcbiAgICDkvY46IDgxMSxcbiAgICDkvZU6IDQyNjUsXG4gICAg5L2cOiAtMzYxLFxuICAgIOS/nTogLTI0MzksXG4gICAg5YWDOiA0ODU4LFxuICAgIOWFmjogMzU5MyxcbiAgICDlhag6IDE1NzQsXG4gICAg5YWsOiAtMzAzMCxcbiAgICDlha06IDc1NSxcbiAgICDlhbE6IC0xODgwLFxuICAgIOWGhjogNTgwNyxcbiAgICDlho06IDMwOTUsXG4gICAg5YiGOiA0NTcsXG4gICAg5YidOiAyNDc1LFxuICAgIOWIpTogMTEyOSxcbiAgICDliY06IDIyODYsXG4gICAg5YmvOiA0NDM3LFxuICAgIOWKmzogMzY1LFxuICAgIOWLlTogLTk0OSxcbiAgICDli5k6IC0xODcyLFxuICAgIOWMljogMTMyNyxcbiAgICDljJc6IC0xMDM4LFxuICAgIOWMujogNDY0NixcbiAgICDljYM6IC0yMzA5LFxuICAgIOWNiDogLTc4MyxcbiAgICDljZQ6IC0xMDA2LFxuICAgIOWPozogNDgzLFxuICAgIOWPszogMTIzMyxcbiAgICDlkIQ6IDM1ODgsXG4gICAg5ZCIOiAtMjQxLFxuICAgIOWQjDogMzkwNixcbiAgICDlkow6IC04MzcsXG4gICAg5ZOhOiA0NTEzLFxuICAgIOWbvTogNjQyLFxuICAgIOWeizogMTM4OSxcbiAgICDloLQ6IDEyMTksXG4gICAg5aSWOiAtMjQxLFxuICAgIOWmuzogMjAxNixcbiAgICDlraY6IC0xMzU2LFxuICAgIOWuiTogLTQyMyxcbiAgICDlrp86IC0xMDA4LFxuICAgIOWutjogMTA3OCxcbiAgICDlsI86IC01MTMsXG4gICAg5bCROiAtMzEwMixcbiAgICDlt546IDExNTUsXG4gICAg5biCOiAzMTk3LFxuICAgIOW5szogLTE4MDQsXG4gICAg5bm0OiAyNDE2LFxuICAgIOW6gzogLTEwMzAsXG4gICAg5bqcOiAxNjA1LFxuICAgIOW6pjogMTQ1MixcbiAgICDlu7o6IC0yMzUyLFxuICAgIOW9kzogLTM4ODUsXG4gICAg5b6XOiAxOTA1LFxuICAgIOaAnTogLTEyOTEsXG4gICAg5oCnOiAxODIyLFxuICAgIOaIuDogLTQ4OCxcbiAgICDmjIc6IC0zOTczLFxuICAgIOaUvzogLTIwMTMsXG4gICAg5pWZOiAtMTQ3OSxcbiAgICDmlbA6IDMyMjIsXG4gICAg5paHOiAtMTQ4OSxcbiAgICDmlrA6IDE3NjQsXG4gICAg5pelOiAyMDk5LFxuICAgIOaXpzogNTc5MixcbiAgICDmmKg6IC02NjEsXG4gICAg5pmCOiAtMTI0OCxcbiAgICDmm5w6IC05NTEsXG4gICAg5pyAOiAtOTM3LFxuICAgIOaciDogNDEyNSxcbiAgICDmnJ86IDM2MCxcbiAgICDmnY46IDMwOTQsXG4gICAg5p2ROiAzNjQsXG4gICAg5p2xOiAtODA1LFxuICAgIOaguDogNTE1NixcbiAgICDmo646IDI0MzgsXG4gICAg5qWtOiA0ODQsXG4gICAg5rCPOiAyNjEzLFxuICAgIOawkTogLTE2OTQsXG4gICAg5rG6OiAtMTA3MyxcbiAgICDms5U6IDE4NjgsXG4gICAg5rW3OiAtNDk1LFxuICAgIOeEoTogOTc5LFxuICAgIOeJqTogNDYxLFxuICAgIOeJuTogLTM4NTAsXG4gICAg55SfOiAtMjczLFxuICAgIOeUqDogOTE0LFxuICAgIOeUujogMTIxNSxcbiAgICDnmoQ6IDczMTMsXG4gICAg55u0OiAtMTgzNSxcbiAgICDnnIE6IDc5MixcbiAgICDnnIw6IDYyOTMsXG4gICAg55+lOiAtMTUyOCxcbiAgICDnp4E6IDQyMzEsXG4gICAg56iOOiA0MDEsXG4gICAg56uLOiAtOTYwLFxuICAgIOesrDogMTIwMSxcbiAgICDnsbM6IDc3NjcsXG4gICAg57O7OiAzMDY2LFxuICAgIOe0hDogMzY2MyxcbiAgICDntJo6IDEzODQsXG4gICAg57WxOiAtNDIyOSxcbiAgICDnt486IDExNjMsXG4gICAg57eaOiAxMjU1LFxuICAgIOiAhTogNjQ1NyxcbiAgICDog706IDcyNSxcbiAgICDoh6o6IC0yODY5LFxuICAgIOiLsTogNzg1LFxuICAgIOimizogMTA0NCxcbiAgICDoqr86IC01NjIsXG4gICAg6LKhOiAtNzMzLFxuICAgIOiyuzogMTc3NyxcbiAgICDou4o6IDE4MzUsXG4gICAg6LuNOiAxMzc1LFxuICAgIOi+vDogLTE1MDQsXG4gICAg6YCaOiAtMTEzNixcbiAgICDpgbg6IC02ODEsXG4gICAg6YOOOiAxMDI2LFxuICAgIOmDoTogNDQwNCxcbiAgICDpg6g6IDEyMDAsXG4gICAg6YeROiAyMTYzLFxuICAgIOmVtzogNDIxLFxuICAgIOmWizogLTE0MzIsXG4gICAg6ZaTOiAxMzAyLFxuICAgIOmWojogLTEyODIsXG4gICAg6ZuoOiAyMDA5LFxuICAgIOmbuzogLTEwNDUsXG4gICAg6Z2eOiAyMDY2LFxuICAgIOmnhTogMTYyMCxcbiAgICBcIu+8kVwiOiAtODAwLFxuICAgIFwi772jXCI6IDI2NzAsXG4gICAgXCLvvaVcIjogLTM3OTQsXG4gICAg772vOiAtMTM1MCxcbiAgICDvvbE6IDU1MSxcbiAgICDvvbjvvp46IDEzMTksXG4gICAg7729OiA4NzQsXG4gICAg776EOiA1MjEsXG4gICAg776ROiAxMTA5LFxuICAgIO++mTogMTU5MSxcbiAgICDvvps6IDIyMDEsXG4gICAg776dOiAyNzgsXG4gIH07XG4gIHRoaXMuVVc0X18gPSB7XG4gICAgXCIsXCI6IDM5MzAsXG4gICAgXCIuXCI6IDM1MDgsXG4gICAgXCLigJVcIjogLTQ4NDEsXG4gICAgXCLjgIFcIjogMzkzMCxcbiAgICBcIuOAglwiOiAzNTA4LFxuICAgIOOAhzogNDk5OSxcbiAgICBcIuOAjFwiOiAxODk1LFxuICAgIFwi44CNXCI6IDM3OTgsXG4gICAgXCLjgJNcIjogLTUxNTYsXG4gICAg44GCOiA0NzUyLFxuICAgIOOBhDogLTM0MzUsXG4gICAg44GGOiAtNjQwLFxuICAgIOOBiDogLTI1MTQsXG4gICAg44GKOiAyNDA1LFxuICAgIOOBizogNTMwLFxuICAgIOOBjDogNjAwNixcbiAgICDjgY06IC00NDgyLFxuICAgIOOBjjogLTM4MjEsXG4gICAg44GPOiAtMzc4OCxcbiAgICDjgZE6IC00Mzc2LFxuICAgIOOBkjogLTQ3MzQsXG4gICAg44GTOiAyMjU1LFxuICAgIOOBlDogMTk3OSxcbiAgICDjgZU6IDI4NjQsXG4gICAg44GXOiAtODQzLFxuICAgIOOBmDogLTI1MDYsXG4gICAg44GZOiAtNzMxLFxuICAgIOOBmjogMTI1MSxcbiAgICDjgZs6IDE4MSxcbiAgICDjgZ06IDQwOTEsXG4gICAg44GfOiA1MDM0LFxuICAgIOOBoDogNTQwOCxcbiAgICDjgaE6IC0zNjU0LFxuICAgIOOBozogLTU4ODIsXG4gICAg44GkOiAtMTY1OSxcbiAgICDjgaY6IDM5OTQsXG4gICAg44GnOiA3NDEwLFxuICAgIOOBqDogNDU0NyxcbiAgICDjgao6IDU0MzMsXG4gICAg44GrOiA2NDk5LFxuICAgIOOBrDogMTg1MyxcbiAgICDjga06IDE0MTMsXG4gICAg44GuOiA3Mzk2LFxuICAgIOOBrzogODU3OCxcbiAgICDjgbA6IDE5NDAsXG4gICAg44GyOiA0MjQ5LFxuICAgIOOBszogLTQxMzQsXG4gICAg44G1OiAxMzQ1LFxuICAgIOOBuDogNjY2NSxcbiAgICDjgbk6IC03NDQsXG4gICAg44G7OiAxNDY0LFxuICAgIOOBvjogMTA1MSxcbiAgICDjgb86IC0yMDgyLFxuICAgIOOCgDogLTg4MixcbiAgICDjgoE6IC01MDQ2LFxuICAgIOOCgjogNDE2OSxcbiAgICDjgoM6IC0yNjY2LFxuICAgIOOChDogMjc5NSxcbiAgICDjgoc6IC0xNTQ0LFxuICAgIOOCiDogMzM1MSxcbiAgICDjgok6IC0yOTIyLFxuICAgIOOCijogLTk3MjYsXG4gICAg44KLOiAtMTQ4OTYsXG4gICAg44KMOiAtMjYxMyxcbiAgICDjgo06IC00NTcwLFxuICAgIOOCjzogLTE3ODMsXG4gICAg44KSOiAxMzE1MCxcbiAgICDjgpM6IC0yMzUyLFxuICAgIOOCqzogMjE0NSxcbiAgICDjgrM6IDE3ODksXG4gICAg44K7OiAxMjg3LFxuICAgIOODgzogLTcyNCxcbiAgICDjg4g6IC00MDMsXG4gICAg44OhOiAtMTYzNSxcbiAgICDjg6k6IC04ODEsXG4gICAg44OqOiAtNTQxLFxuICAgIOODqzogLTg1NixcbiAgICDjg7M6IC0zNjM3LFxuICAgIFwi44O7XCI6IC00MzcxLFxuICAgIOODvDogLTExODcwLFxuICAgIOS4gDogLTIwNjksXG4gICAg5LitOiAyMjEwLFxuICAgIOS6iDogNzgyLFxuICAgIOS6izogLTE5MCxcbiAgICDkupU6IC0xNzY4LFxuICAgIOS6ujogMTAzNixcbiAgICDku6U6IDU0NCxcbiAgICDkvJo6IDk1MCxcbiAgICDkvZM6IC0xMjg2LFxuICAgIOS9nDogNTMwLFxuICAgIOWBtDogNDI5MixcbiAgICDlhYg6IDYwMSxcbiAgICDlhZo6IC0yMDA2LFxuICAgIOWFsTogLTEyMTIsXG4gICAg5YaFOiA1ODQsXG4gICAg5YaGOiA3ODgsXG4gICAg5YidOiAxMzQ3LFxuICAgIOWJjTogMTYyMyxcbiAgICDlia86IDM4NzksXG4gICAg5YqbOiAtMzAyLFxuICAgIOWLlTogLTc0MCxcbiAgICDli5k6IC0yNzE1LFxuICAgIOWMljogNzc2LFxuICAgIOWMujogNDUxNyxcbiAgICDljZQ6IDEwMTMsXG4gICAg5Y+COiAxNTU1LFxuICAgIOWQiDogLTE4MzQsXG4gICAg5ZKMOiAtNjgxLFxuICAgIOWToTogLTkxMCxcbiAgICDlmag6IC04NTEsXG4gICAg5ZueOiAxNTAwLFxuICAgIOWbvTogLTYxOSxcbiAgICDlnJI6IC0xMjAwLFxuICAgIOWcsDogODY2LFxuICAgIOWgtDogLTE0MTAsXG4gICAg5aGBOiAtMjA5NCxcbiAgICDlo6s6IC0xNDEzLFxuICAgIOWkmjogMTA2NyxcbiAgICDlpKc6IDU3MSxcbiAgICDlrZA6IC00ODAyLFxuICAgIOWtpjogLTEzOTcsXG4gICAg5a6aOiAtMTA1NyxcbiAgICDlr7o6IC04MDksXG4gICAg5bCPOiAxOTEwLFxuICAgIOWxizogLTEzMjgsXG4gICAg5bGxOiAtMTUwMCxcbiAgICDls7Y6IC0yMDU2LFxuICAgIOW3nTogLTI2NjcsXG4gICAg5biCOiAyNzcxLFxuICAgIOW5tDogMzc0LFxuICAgIOW6gTogLTQ1NTYsXG4gICAg5b6MOiA0NTYsXG4gICAg5oCnOiA1NTMsXG4gICAg5oSfOiA5MTYsXG4gICAg5omAOiAtMTU2NixcbiAgICDmlK86IDg1NixcbiAgICDmlLk6IDc4NyxcbiAgICDmlL86IDIxODIsXG4gICAg5pWZOiA3MDQsXG4gICAg5paHOiA1MjIsXG4gICAg5pa5OiAtODU2LFxuICAgIOaXpTogMTc5OCxcbiAgICDmmYI6IDE4MjksXG4gICAg5pyAOiA4NDUsXG4gICAg5pyIOiAtOTA2NixcbiAgICDmnKg6IC00ODUsXG4gICAg5p2lOiAtNDQyLFxuICAgIOagoTogLTM2MCxcbiAgICDmpa06IC0xMDQzLFxuICAgIOawjzogNTM4OCxcbiAgICDmsJE6IC0yNzE2LFxuICAgIOawlzogLTkxMCxcbiAgICDmsqI6IC05MzksXG4gICAg5riIOiAtNTQzLFxuICAgIOeJqTogLTczNSxcbiAgICDnjoc6IDY3MixcbiAgICDnkIM6IC0xMjY3LFxuICAgIOeUnzogLTEyODYsXG4gICAg55SjOiAtMTEwMSxcbiAgICDnlLA6IC0yOTAwLFxuICAgIOeUujogMTgyNixcbiAgICDnmoQ6IDI1ODYsXG4gICAg55uuOiA5MjIsXG4gICAg55yBOiAtMzQ4NSxcbiAgICDnnIw6IDI5OTcsXG4gICAg56m6OiAtODY3LFxuICAgIOerizogLTIxMTIsXG4gICAg56ysOiA3ODgsXG4gICAg57GzOiAyOTM3LFxuICAgIOezuzogNzg2LFxuICAgIOe0hDogMjE3MSxcbiAgICDntYw6IDExNDYsXG4gICAg57WxOiAtMTE2OSxcbiAgICDnt486IDk0MCxcbiAgICDnt5o6IC05OTQsXG4gICAg572yOiA3NDksXG4gICAg6ICFOiAyMTQ1LFxuICAgIOiDvTogLTczMCxcbiAgICDoiKw6IC04NTIsXG4gICAg6KGMOiAtNzkyLFxuICAgIOimjzogNzkyLFxuICAgIOitpjogLTExODQsXG4gICAg6K2wOiAtMjQ0LFxuICAgIOiwtzogLTEwMDAsXG4gICAg6LOeOiA3MzAsXG4gICAg6LuKOiAtMTQ4MSxcbiAgICDou406IDExNTgsXG4gICAg6LyqOiAtMTQzMyxcbiAgICDovrw6IC0zMzcwLFxuICAgIOi/kTogOTI5LFxuICAgIOmBkzogLTEyOTEsXG4gICAg6YG4OiAyNTk2LFxuICAgIOmDjjogLTQ4NjYsXG4gICAg6YO9OiAxMTkyLFxuICAgIOmHjjogLTExMDAsXG4gICAg6YqAOiAtMjIxMyxcbiAgICDplbc6IDM1NyxcbiAgICDplpM6IC0yMzQ0LFxuICAgIOmZojogLTIyOTcsXG4gICAg6ZqbOiAtMjYwNCxcbiAgICDpm7s6IC04NzgsXG4gICAg6aCYOiAtMTY1OSxcbiAgICDpoYw6IC03OTIsXG4gICAg6aSoOiAtMTk4NCxcbiAgICDpppY6IDE3NDksXG4gICAg6auYOiAyMTIwLFxuICAgIFwi772iXCI6IDE4OTUsXG4gICAgXCLvvaNcIjogMzc5OCxcbiAgICBcIu+9pVwiOiAtNDM3MSxcbiAgICDvva86IC03MjQsXG4gICAg772wOiAtMTE4NzAsXG4gICAg7722OiAyMTQ1LFxuICAgIO+9ujogMTc4OSxcbiAgICDvvb46IDEyODcsXG4gICAg776EOiAtNDAzLFxuICAgIO++kjogLTE2MzUsXG4gICAg776XOiAtODgxLFxuICAgIO++mDogLTU0MSxcbiAgICDvvpk6IC04NTYsXG4gICAg776dOiAtMzYzNyxcbiAgfTtcbiAgdGhpcy5VVzVfXyA9IHtcbiAgICBcIixcIjogNDY1LFxuICAgIFwiLlwiOiAtMjk5LFxuICAgIDE6IC01MTQsXG4gICAgRTI6IC0zMjc2OCxcbiAgICBcIl1cIjogLTI3NjIsXG4gICAgXCLjgIFcIjogNDY1LFxuICAgIFwi44CCXCI6IC0yOTksXG4gICAgXCLjgIxcIjogMzYzLFxuICAgIOOBgjogMTY1NSxcbiAgICDjgYQ6IDMzMSxcbiAgICDjgYY6IC01MDMsXG4gICAg44GIOiAxMTk5LFxuICAgIOOBijogNTI3LFxuICAgIOOBizogNjQ3LFxuICAgIOOBjDogLTQyMSxcbiAgICDjgY06IDE2MjQsXG4gICAg44GOOiAxOTcxLFxuICAgIOOBjzogMzEyLFxuICAgIOOBkjogLTk4MyxcbiAgICDjgZU6IC0xNTM3LFxuICAgIOOBlzogLTEzNzEsXG4gICAg44GZOiAtODUyLFxuICAgIOOBoDogLTExODYsXG4gICAg44GhOiAxMDkzLFxuICAgIOOBozogNTIsXG4gICAg44GkOiA5MjEsXG4gICAg44GmOiAtMTgsXG4gICAg44GnOiAtODUwLFxuICAgIOOBqDogLTEyNyxcbiAgICDjgak6IDE2ODIsXG4gICAg44GqOiAtNzg3LFxuICAgIOOBqzogLTEyMjQsXG4gICAg44GuOiAtNjM1LFxuICAgIOOBrzogLTU3OCxcbiAgICDjgbk6IDEwMDEsXG4gICAg44G/OiA1MDIsXG4gICAg44KBOiA4NjUsXG4gICAg44KDOiAzMzUwLFxuICAgIOOChzogODU0LFxuICAgIOOCijogLTIwOCxcbiAgICDjgos6IDQyOSxcbiAgICDjgow6IDUwNCxcbiAgICDjgo86IDQxOSxcbiAgICDjgpI6IC0xMjY0LFxuICAgIOOCkzogMzI3LFxuICAgIOOCpDogMjQxLFxuICAgIOODqzogNDUxLFxuICAgIOODszogLTM0MyxcbiAgICDkuK06IC04NzEsXG4gICAg5LqsOiA3MjIsXG4gICAg5LyaOiAtMTE1MyxcbiAgICDlhZo6IC02NTQsXG4gICAg5YuZOiAzNTE5LFxuICAgIOWMujogLTkwMSxcbiAgICDlkYo6IDg0OCxcbiAgICDlk6E6IDIxMDQsXG4gICAg5aSnOiAtMTI5NixcbiAgICDlraY6IC01NDgsXG4gICAg5a6aOiAxNzg1LFxuICAgIOW1kDogLTEzMDQsXG4gICAg5biCOiAtMjk5MSxcbiAgICDluK06IDkyMSxcbiAgICDlubQ6IDE3NjMsXG4gICAg5oCdOiA4NzIsXG4gICAg5omAOiAtODE0LFxuICAgIOaMmTogMTYxOCxcbiAgICDmlrA6IC0xNjgyLFxuICAgIOaXpTogMjE4LFxuICAgIOaciDogLTQzNTMsXG4gICAg5p+7OiA5MzIsXG4gICAg5qC8OiAxMzU2LFxuICAgIOapnzogLTE1MDgsXG4gICAg5rCPOiAtMTM0NyxcbiAgICDnlLA6IDI0MCxcbiAgICDnlLo6IC0zOTEyLFxuICAgIOeahDogLTMxNDksXG4gICAg55u4OiAxMzE5LFxuICAgIOecgTogLTEwNTIsXG4gICAg55yMOiAtNDAwMyxcbiAgICDnoJQ6IC05OTcsXG4gICAg56S+OiAtMjc4LFxuICAgIOepujogLTgxMyxcbiAgICDntbE6IDE5NTUsXG4gICAg6ICFOiAtMjIzMyxcbiAgICDooag6IDY2MyxcbiAgICDoqp46IC0xMDczLFxuICAgIOitsDogMTIxOSxcbiAgICDpgbg6IC0xMDE4LFxuICAgIOmDjjogLTM2OCxcbiAgICDplbc6IDc4NixcbiAgICDplpM6IDExOTEsXG4gICAg6aGMOiAyMzY4LFxuICAgIOmkqDogLTY4OSxcbiAgICBcIu+8kVwiOiAtNTE0LFxuICAgIO+8pe+8kjogLTMyNzY4LFxuICAgIFwi772iXCI6IDM2MyxcbiAgICDvvbI6IDI0MSxcbiAgICDvvpk6IDQ1MSxcbiAgICDvvp06IC0zNDMsXG4gIH07XG4gIHRoaXMuVVc2X18gPSB7XG4gICAgXCIsXCI6IDIyNyxcbiAgICBcIi5cIjogODA4LFxuICAgIDE6IC0yNzAsXG4gICAgRTE6IDMwNixcbiAgICBcIuOAgVwiOiAyMjcsXG4gICAgXCLjgIJcIjogODA4LFxuICAgIOOBgjogLTMwNyxcbiAgICDjgYY6IDE4OSxcbiAgICDjgYs6IDI0MSxcbiAgICDjgYw6IC03MyxcbiAgICDjgY86IC0xMjEsXG4gICAg44GTOiAtMjAwLFxuICAgIOOBmDogMTc4MixcbiAgICDjgZk6IDM4MyxcbiAgICDjgZ86IC00MjgsXG4gICAg44GjOiA1NzMsXG4gICAg44GmOiAtMTAxNCxcbiAgICDjgac6IDEwMSxcbiAgICDjgag6IC0xMDUsXG4gICAg44GqOiAtMjUzLFxuICAgIOOBqzogLTE0OSxcbiAgICDjga46IC00MTcsXG4gICAg44GvOiAtMjM2LFxuICAgIOOCgjogLTIwNixcbiAgICDjgoo6IDE4NyxcbiAgICDjgos6IC0xMzUsXG4gICAg44KSOiAxOTUsXG4gICAg44OrOiAtNjczLFxuICAgIOODszogLTQ5NixcbiAgICDkuIA6IC0yNzcsXG4gICAg5LitOiAyMDEsXG4gICAg5Lu2OiAtODAwLFxuICAgIOS8mjogNjI0LFxuICAgIOWJjTogMzAyLFxuICAgIOWMujogMTc5MixcbiAgICDlk6E6IC0xMjEyLFxuICAgIOWnlDogNzk4LFxuICAgIOWtpjogLTk2MCxcbiAgICDluII6IDg4NyxcbiAgICDluoM6IC02OTUsXG4gICAg5b6MOiA1MzUsXG4gICAg5qWtOiAtNjk3LFxuICAgIOebuDogNzUzLFxuICAgIOekvjogLTUwNyxcbiAgICDnpo86IDk3NCxcbiAgICDnqbo6IC04MjIsXG4gICAg6ICFOiAxODExLFxuICAgIOmAozogNDYzLFxuICAgIOmDjjogMTA4MixcbiAgICBcIu+8kVwiOiAtMjcwLFxuICAgIO+8pe+8kTogMzA2LFxuICAgIO++mTogLTY3MyxcbiAgICDvvp06IC00OTYsXG4gIH07XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cblRpbnlTZWdtZW50ZXIucHJvdG90eXBlLmN0eXBlXyA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgZm9yICh2YXIgaSBpbiB0aGlzLmNoYXJ0eXBlXykge1xuICAgIGlmIChzdHIubWF0Y2godGhpcy5jaGFydHlwZV9baV1bMF0pKSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGFydHlwZV9baV1bMV07XG4gICAgfVxuICB9XG4gIHJldHVybiBcIk9cIjtcbn07XG5cblRpbnlTZWdtZW50ZXIucHJvdG90eXBlLnRzXyA9IGZ1bmN0aW9uICh2KSB7XG4gIGlmICh2KSB7XG4gICAgcmV0dXJuIHY7XG4gIH1cbiAgcmV0dXJuIDA7XG59O1xuXG5UaW55U2VnbWVudGVyLnByb3RvdHlwZS5zZWdtZW50ID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gIGlmIChpbnB1dCA9PSBudWxsIHx8IGlucHV0ID09IHVuZGVmaW5lZCB8fCBpbnB1dCA9PSBcIlwiKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIHNlZyA9IFtcIkIzXCIsIFwiQjJcIiwgXCJCMVwiXTtcbiAgdmFyIGN0eXBlID0gW1wiT1wiLCBcIk9cIiwgXCJPXCJdO1xuICB2YXIgbyA9IGlucHV0LnNwbGl0KFwiXCIpO1xuICBmb3IgKGkgPSAwOyBpIDwgby5sZW5ndGg7ICsraSkge1xuICAgIHNlZy5wdXNoKG9baV0pO1xuICAgIGN0eXBlLnB1c2godGhpcy5jdHlwZV8ob1tpXSkpO1xuICB9XG4gIHNlZy5wdXNoKFwiRTFcIik7XG4gIHNlZy5wdXNoKFwiRTJcIik7XG4gIHNlZy5wdXNoKFwiRTNcIik7XG4gIGN0eXBlLnB1c2goXCJPXCIpO1xuICBjdHlwZS5wdXNoKFwiT1wiKTtcbiAgY3R5cGUucHVzaChcIk9cIik7XG4gIHZhciB3b3JkID0gc2VnWzNdO1xuICB2YXIgcDEgPSBcIlVcIjtcbiAgdmFyIHAyID0gXCJVXCI7XG4gIHZhciBwMyA9IFwiVVwiO1xuICBmb3IgKHZhciBpID0gNDsgaSA8IHNlZy5sZW5ndGggLSAzOyArK2kpIHtcbiAgICB2YXIgc2NvcmUgPSB0aGlzLkJJQVNfXztcbiAgICB2YXIgdzEgPSBzZWdbaSAtIDNdO1xuICAgIHZhciB3MiA9IHNlZ1tpIC0gMl07XG4gICAgdmFyIHczID0gc2VnW2kgLSAxXTtcbiAgICB2YXIgdzQgPSBzZWdbaV07XG4gICAgdmFyIHc1ID0gc2VnW2kgKyAxXTtcbiAgICB2YXIgdzYgPSBzZWdbaSArIDJdO1xuICAgIHZhciBjMSA9IGN0eXBlW2kgLSAzXTtcbiAgICB2YXIgYzIgPSBjdHlwZVtpIC0gMl07XG4gICAgdmFyIGMzID0gY3R5cGVbaSAtIDFdO1xuICAgIHZhciBjNCA9IGN0eXBlW2ldO1xuICAgIHZhciBjNSA9IGN0eXBlW2kgKyAxXTtcbiAgICB2YXIgYzYgPSBjdHlwZVtpICsgMl07XG4gICAgc2NvcmUgKz0gdGhpcy50c18odGhpcy5VUDFfX1twMV0pO1xuICAgIHNjb3JlICs9IHRoaXMudHNfKHRoaXMuVVAyX19bcDJdKTtcbiAgICBzY29yZSArPSB0aGlzLnRzXyh0aGlzLlVQM19fW3AzXSk7XG4gICAgc2NvcmUgKz0gdGhpcy50c18odGhpcy5CUDFfX1twMSArIHAyXSk7XG4gICAgc2NvcmUgKz0gdGhpcy50c18odGhpcy5CUDJfX1twMiArIHAzXSk7XG4gICAgc2NvcmUgKz0gdGhpcy50c18odGhpcy5VVzFfX1t3MV0pO1xuICAgIHNjb3JlICs9IHRoaXMudHNfKHRoaXMuVVcyX19bdzJdKTtcbiAgICBzY29yZSArPSB0aGlzLnRzXyh0aGlzLlVXM19fW3czXSk7XG4gICAgc2NvcmUgKz0gdGhpcy50c18odGhpcy5VVzRfX1t3NF0pO1xuICAgIHNjb3JlICs9IHRoaXMudHNfKHRoaXMuVVc1X19bdzVdKTtcbiAgICBzY29yZSArPSB0aGlzLnRzXyh0aGlzLlVXNl9fW3c2XSk7XG4gICAgc2NvcmUgKz0gdGhpcy50c18odGhpcy5CVzFfX1t3MiArIHczXSk7XG4gICAgc2NvcmUgKz0gdGhpcy50c18odGhpcy5CVzJfX1t3MyArIHc0XSk7XG4gICAgc2NvcmUgKz0gdGhpcy50c18odGhpcy5CVzNfX1t3NCArIHc1XSk7XG4gICAgc2NvcmUgKz0gdGhpcy50c18odGhpcy5UVzFfX1t3MSArIHcyICsgdzNdKTtcbiAgICBzY29yZSArPSB0aGlzLnRzXyh0aGlzLlRXMl9fW3cyICsgdzMgKyB3NF0pO1xuICAgIHNjb3JlICs9IHRoaXMudHNfKHRoaXMuVFczX19bdzMgKyB3NCArIHc1XSk7XG4gICAgc2NvcmUgKz0gdGhpcy50c18odGhpcy5UVzRfX1t3NCArIHc1ICsgdzZdKTtcbiAgICBzY29yZSArPSB0aGlzLnRzXyh0aGlzLlVDMV9fW2MxXSk7XG4gICAgc2NvcmUgKz0gdGhpcy50c18odGhpcy5VQzJfX1tjMl0pO1xuICAgIHNjb3JlICs9IHRoaXMudHNfKHRoaXMuVUMzX19bYzNdKTtcbiAgICBzY29yZSArPSB0aGlzLnRzXyh0aGlzLlVDNF9fW2M0XSk7XG4gICAgc2NvcmUgKz0gdGhpcy50c18odGhpcy5VQzVfX1tjNV0pO1xuICAgIHNjb3JlICs9IHRoaXMudHNfKHRoaXMuVUM2X19bYzZdKTtcbiAgICBzY29yZSArPSB0aGlzLnRzXyh0aGlzLkJDMV9fW2MyICsgYzNdKTtcbiAgICBzY29yZSArPSB0aGlzLnRzXyh0aGlzLkJDMl9fW2MzICsgYzRdKTtcbiAgICBzY29yZSArPSB0aGlzLnRzXyh0aGlzLkJDM19fW2M0ICsgYzVdKTtcbiAgICBzY29yZSArPSB0aGlzLnRzXyh0aGlzLlRDMV9fW2MxICsgYzIgKyBjM10pO1xuICAgIHNjb3JlICs9IHRoaXMudHNfKHRoaXMuVEMyX19bYzIgKyBjMyArIGM0XSk7XG4gICAgc2NvcmUgKz0gdGhpcy50c18odGhpcy5UQzNfX1tjMyArIGM0ICsgYzVdKTtcbiAgICBzY29yZSArPSB0aGlzLnRzXyh0aGlzLlRDNF9fW2M0ICsgYzUgKyBjNl0pO1xuICAgIC8vICBzY29yZSArPSB0aGlzLnRzXyh0aGlzLlRDNV9fW2M0ICsgYzUgKyBjNl0pO1xuICAgIHNjb3JlICs9IHRoaXMudHNfKHRoaXMuVVExX19bcDEgKyBjMV0pO1xuICAgIHNjb3JlICs9IHRoaXMudHNfKHRoaXMuVVEyX19bcDIgKyBjMl0pO1xuICAgIHNjb3JlICs9IHRoaXMudHNfKHRoaXMuVVEzX19bcDMgKyBjM10pO1xuICAgIHNjb3JlICs9IHRoaXMudHNfKHRoaXMuQlExX19bcDIgKyBjMiArIGMzXSk7XG4gICAgc2NvcmUgKz0gdGhpcy50c18odGhpcy5CUTJfX1twMiArIGMzICsgYzRdKTtcbiAgICBzY29yZSArPSB0aGlzLnRzXyh0aGlzLkJRM19fW3AzICsgYzIgKyBjM10pO1xuICAgIHNjb3JlICs9IHRoaXMudHNfKHRoaXMuQlE0X19bcDMgKyBjMyArIGM0XSk7XG4gICAgc2NvcmUgKz0gdGhpcy50c18odGhpcy5UUTFfX1twMiArIGMxICsgYzIgKyBjM10pO1xuICAgIHNjb3JlICs9IHRoaXMudHNfKHRoaXMuVFEyX19bcDIgKyBjMiArIGMzICsgYzRdKTtcbiAgICBzY29yZSArPSB0aGlzLnRzXyh0aGlzLlRRM19fW3AzICsgYzEgKyBjMiArIGMzXSk7XG4gICAgc2NvcmUgKz0gdGhpcy50c18odGhpcy5UUTRfX1twMyArIGMyICsgYzMgKyBjNF0pO1xuICAgIHZhciBwID0gXCJPXCI7XG4gICAgaWYgKHNjb3JlID4gMCkge1xuICAgICAgcmVzdWx0LnB1c2god29yZCk7XG4gICAgICB3b3JkID0gXCJcIjtcbiAgICAgIHAgPSBcIkJcIjtcbiAgICB9XG4gICAgcDEgPSBwMjtcbiAgICBwMiA9IHAzO1xuICAgIHAzID0gcDtcbiAgICB3b3JkICs9IHNlZ1tpXTtcbiAgfVxuICByZXN1bHQucHVzaCh3b3JkKTtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlueVNlZ21lbnRlcjtcbiIsImltcG9ydCBUaW55U2VnbWVudGVyIGZyb20gXCIuLi8uLi9leHRlcm5hbC90aW55LXNlZ21lbnRlclwiO1xuaW1wb3J0IHsgVFJJTV9DSEFSX1BBVFRFUk4gfSBmcm9tIFwiLi9EZWZhdWx0VG9rZW5pemVyXCI7XG5pbXBvcnQgdHlwZSB7IFRva2VuaXplciB9IGZyb20gXCIuLi90b2tlbml6ZXJcIjtcbi8vIEB0cy1pZ25vcmVcbmNvbnN0IHNlZ21lbnRlciA9IG5ldyBUaW55U2VnbWVudGVyKCk7XG5cbmZ1bmN0aW9uIHBpY2tUb2tlbnNBc0phcGFuZXNlKGNvbnRlbnQ6IHN0cmluZywgdHJpbVBhdHRlcm46IFJlZ0V4cCk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIGNvbnRlbnRcbiAgICAuc3BsaXQodHJpbVBhdHRlcm4pXG4gICAgLmZpbHRlcigoeCkgPT4geCAhPT0gXCJcIilcbiAgICAuZmxhdE1hcDxzdHJpbmc+KCh4KSA9PiBzZWdtZW50ZXIuc2VnbWVudCh4KSk7XG59XG5cbi8qKlxuICogSmFwYW5lc2UgbmVlZHMgb3JpZ2luYWwgbG9naWMuXG4gKi9cbmV4cG9ydCBjbGFzcyBKYXBhbmVzZVRva2VuaXplciBpbXBsZW1lbnRzIFRva2VuaXplciB7XG4gIHRva2VuaXplKGNvbnRlbnQ6IHN0cmluZywgcmF3PzogYm9vbGVhbik6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gcGlja1Rva2Vuc0FzSmFwYW5lc2UoY29udGVudCwgcmF3ID8gLyAvZyA6IHRoaXMuZ2V0VHJpbVBhdHRlcm4oKSk7XG4gIH1cblxuICByZWN1cnNpdmVUb2tlbml6ZShjb250ZW50OiBzdHJpbmcpOiB7IHdvcmQ6IHN0cmluZzsgb2Zmc2V0OiBudW1iZXIgfVtdIHtcbiAgICBjb25zdCB0b2tlbnM6IHN0cmluZ1tdID0gc2VnbWVudGVyXG4gICAgICAuc2VnbWVudChjb250ZW50KVxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RhZGFzaGktYWlrYXdhL29ic2lkaWFuLXZhcmlvdXMtY29tcGxlbWVudHMtcGx1Z2luL2lzc3Vlcy83N1xuICAgICAgLmZsYXRNYXAoKHg6IHN0cmluZykgPT5cbiAgICAgICAgeCA9PT0gXCIgXCIgPyB4IDogeC5zcGxpdChcIiBcIikubWFwKCh0KSA9PiAodCA9PT0gXCJcIiA/IFwiIFwiIDogdCkpXG4gICAgICApO1xuXG4gICAgY29uc3QgcmV0ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChcbiAgICAgICAgaSA9PT0gMCB8fFxuICAgICAgICB0b2tlbnNbaV0ubGVuZ3RoICE9PSAxIHx8XG4gICAgICAgICFCb29sZWFuKHRva2Vuc1tpXS5tYXRjaCh0aGlzLmdldFRyaW1QYXR0ZXJuKCkpKVxuICAgICAgKSB7XG4gICAgICAgIHJldC5wdXNoKHtcbiAgICAgICAgICB3b3JkOiB0b2tlbnMuc2xpY2UoaSkuam9pbihcIlwiKSxcbiAgICAgICAgICBvZmZzZXQ6IHRva2Vucy5zbGljZSgwLCBpKS5qb2luKFwiXCIpLmxlbmd0aCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIGdldFRyaW1QYXR0ZXJuKCk6IFJlZ0V4cCB7XG4gICAgcmV0dXJuIFRSSU1fQ0hBUl9QQVRURVJOO1xuICB9XG5cbiAgc2hvdWxkSWdub3JlT25DdXJyZW50KHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJvb2xlYW4oc3RyLm1hdGNoKC9eW+OBgS3jgpPvvYEt772a77yhLe+8uuOAguOAgeODvOOAgF0qJC8pKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgRGVmYXVsdFRva2VuaXplciB9IGZyb20gXCIuL0RlZmF1bHRUb2tlbml6ZXJcIjtcblxudHlwZSBQcmV2aW91c1R5cGUgPSBcIm5vbmVcIiB8IFwidHJpbVwiIHwgXCJlbmdsaXNoXCIgfCBcIm90aGVyc1wiO1xuY29uc3QgRU5HTElTSF9QQVRURVJOID0gL1thLXpBLVowLTlfXFwtXFxcXF0vO1xuZXhwb3J0IGNsYXNzIEVuZ2xpc2hPbmx5VG9rZW5pemVyIGV4dGVuZHMgRGVmYXVsdFRva2VuaXplciB7XG4gIHRva2VuaXplKGNvbnRlbnQ6IHN0cmluZywgcmF3PzogYm9vbGVhbik6IHN0cmluZ1tdIHtcbiAgICBjb25zdCB0b2tlbml6ZWQgPSBBcnJheS5mcm9tKHRoaXMuX3Rva2VuaXplKGNvbnRlbnQpKS5maWx0ZXIoKHgpID0+XG4gICAgICB4LndvcmQubWF0Y2goRU5HTElTSF9QQVRURVJOKVxuICAgICk7XG4gICAgcmV0dXJuIHJhd1xuICAgICAgPyB0b2tlbml6ZWQubWFwKCh4KSA9PiB4LndvcmQpXG4gICAgICA6IHRva2VuaXplZFxuICAgICAgICAgIC5tYXAoKHgpID0+IHgud29yZClcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiAheC5tYXRjaCh0aGlzLmdldFRyaW1QYXR0ZXJuKCkpKTtcbiAgfVxuXG4gIHJlY3Vyc2l2ZVRva2VuaXplKGNvbnRlbnQ6IHN0cmluZyk6IHsgd29yZDogc3RyaW5nOyBvZmZzZXQ6IG51bWJlciB9W10ge1xuICAgIGNvbnN0IG9mZnNldHMgPSBBcnJheS5mcm9tKHRoaXMuX3Rva2VuaXplKGNvbnRlbnQpKVxuICAgICAgLmZpbHRlcigoeCkgPT4gIXgud29yZC5tYXRjaCh0aGlzLmdldFRyaW1QYXR0ZXJuKCkpKVxuICAgICAgLm1hcCgoeCkgPT4geC5vZmZzZXQpO1xuICAgIHJldHVybiBbXG4gICAgICAuLi5vZmZzZXRzLm1hcCgoaSkgPT4gKHtcbiAgICAgICAgd29yZDogY29udGVudC5zbGljZShpKSxcbiAgICAgICAgb2Zmc2V0OiBpLFxuICAgICAgfSkpLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlICpfdG9rZW5pemUoXG4gICAgY29udGVudDogc3RyaW5nXG4gICk6IEl0ZXJhYmxlPHsgd29yZDogc3RyaW5nOyBvZmZzZXQ6IG51bWJlciB9PiB7XG4gICAgbGV0IHN0YXJ0SW5kZXggPSAwO1xuICAgIGxldCBwcmV2aW91c1R5cGU6IFByZXZpb3VzVHlwZSA9IFwibm9uZVwiO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb250ZW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoY29udGVudFtpXS5tYXRjaChzdXBlci5nZXRUcmltUGF0dGVybigpKSkge1xuICAgICAgICB5aWVsZCB7IHdvcmQ6IGNvbnRlbnQuc2xpY2Uoc3RhcnRJbmRleCwgaSksIG9mZnNldDogc3RhcnRJbmRleCB9O1xuICAgICAgICBwcmV2aW91c1R5cGUgPSBcInRyaW1cIjtcbiAgICAgICAgc3RhcnRJbmRleCA9IGk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29udGVudFtpXS5tYXRjaChFTkdMSVNIX1BBVFRFUk4pKSB7XG4gICAgICAgIGlmIChwcmV2aW91c1R5cGUgPT09IFwiZW5nbGlzaFwiIHx8IHByZXZpb3VzVHlwZSA9PT0gXCJub25lXCIpIHtcbiAgICAgICAgICBwcmV2aW91c1R5cGUgPSBcImVuZ2xpc2hcIjtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHlpZWxkIHsgd29yZDogY29udGVudC5zbGljZShzdGFydEluZGV4LCBpKSwgb2Zmc2V0OiBzdGFydEluZGV4IH07XG4gICAgICAgIHByZXZpb3VzVHlwZSA9IFwiZW5nbGlzaFwiO1xuICAgICAgICBzdGFydEluZGV4ID0gaTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmV2aW91c1R5cGUgPT09IFwib3RoZXJzXCIgfHwgcHJldmlvdXNUeXBlID09PSBcIm5vbmVcIikge1xuICAgICAgICBwcmV2aW91c1R5cGUgPSBcIm90aGVyc1wiO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgeWllbGQgeyB3b3JkOiBjb250ZW50LnNsaWNlKHN0YXJ0SW5kZXgsIGkpLCBvZmZzZXQ6IHN0YXJ0SW5kZXggfTtcbiAgICAgIHByZXZpb3VzVHlwZSA9IFwib3RoZXJzXCI7XG4gICAgICBzdGFydEluZGV4ID0gaTtcbiAgICB9XG5cbiAgICB5aWVsZCB7XG4gICAgICB3b3JkOiBjb250ZW50LnNsaWNlKHN0YXJ0SW5kZXgsIGNvbnRlbnQubGVuZ3RoKSxcbiAgICAgIG9mZnNldDogc3RhcnRJbmRleCxcbiAgICB9O1xuICB9XG59XG4iLCIvLyBRdWljayBndWlkZSBmb3IgdHlwaW5nIENoaW5lc2UgcGlueWluIG9uIE1hYyBPUyBYXG5cbi8vIFRvbmUgMSAoZmxhdCkgbcSBIOKAkyBPcHRpb24gKyBhLCB0aGVuIGhpdCBhIHZvd2VsIGtleVxuLy8gVG9uZSAyIChyaXNpbmcpIG3DoSDigJMgT3B0aW9uICsgZSwgdGhlbiBoaXQgYSB2b3dlbCBrZXlcbi8vIFRvbmUgMyAoZmFsbGluZy1yaXNpbmcpIG3HjiDigJMgT3B0aW9uICsgdiwgdGhlbiBoaXQgYSB2b3dlbCBrZXlcbi8vIFRvbmUgNCAoZmFsbGluZykgbcOgIOKAkyBPcHRpb24gKyBgLCB0aGVuIGhpdCBhIHZvd2VsIGtleVxuXG4vLyDHmiDigJMgT3B0aW9uICsgViwgdGhlbiBoaXQgViAoc3VibWl0dGVkIGJ5IFFBKVxuLy8gx5wg4oCTIE9wdGlvbiArIGAsIHRoZW4gaGl0IFYgKHN1Ym1pdHRlZCBieSBRQSlcblxuXG52YXIgcmVwbGFjZW1lbnRzID0ge1xuICAnYSc6IFsnxIEnLCAnw6EnLCAnx44nLCAnw6AnXSxcbiAgJ2UnOiBbJ8STJywgJ8OpJywgJ8SbJywgJ8OoJ10sXG4gICd1JzogWyfFqycsICfDuicsICfHlCcsICfDuSddLFxuICAnaSc6IFsnxKsnLCAnw60nLCAnx5AnLCAnw6wnXSxcbiAgJ28nOiBbJ8WNJywgJ8OzJywgJ8eSJywgJ8OyJ10sXG4gICfDvCc6IFsnx5YnLCAnx5gnLCAnx5onLCAnx5wnXVxufTtcblxudmFyIG1lZGlhbHMgPSBbJ2knLCAndScsICfDvCddO1xuXG52YXIgcHJldHRpZnkgPSBmdW5jdGlvbihzdHIpe1xuICBzdHIgPSBzdHIucmVwbGFjZSgndicsICfDvCcpO1xuICB2YXIgc3lsbGFibGVzID0gc3RyLnNwbGl0KCcgJyk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzeWxsYWJsZXMubGVuZ3RoOyBpKyspe1xuICAgIHZhciBzeWxsYWJsZSA9IHN5bGxhYmxlc1tpXTtcbiAgICB2YXIgdG9uZSA9IHBhcnNlSW50KHN5bGxhYmxlW3N5bGxhYmxlLmxlbmd0aC0xXSk7XG4gICAgXG4gICAgaWYgKHRvbmUgPD0gMCB8fCB0b25lID4gNSkge1xuICAgICAgY29uc29sZS5lcnJvcignaW52YWxpZCB0b25lIG51bWJlcjonLCB0b25lLCAnaW4nLCBzeWxsYWJsZSk7XG4gICAgfSBlbHNlIGlmICh0b25lID09PSA1KXtcbiAgICAgIHN5bGxhYmxlc1tpXSA9IHN5bGxhYmxlLnNsaWNlKDAsIHN5bGxhYmxlLmxlbmd0aCAtIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHN5bGxhYmxlLmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGN1cnJlbnRMZXR0ZXIgPSBzeWxsYWJsZVtqXTtcbiAgICAgICAgdmFyIG5leHRMZXR0ZXIgPSBzeWxsYWJsZVtqICsgMV07XG5cbiAgICAgICAgLy8gZm91bmQgYSB2b3dlbFxuICAgICAgICBpZiAocmVwbGFjZW1lbnRzW2N1cnJlbnRMZXR0ZXJdKXtcbiAgICAgICAgICB2YXIgcmVwbGFjZWQ7XG4gICAgICAgICAgdmFyIGxldHRlclRvUmVwbGFjZTtcblxuICAgICAgICAgIC8vIHR3byBjb25zZWN1dGl2ZSB2b3dlbHNcbiAgICAgICAgICBpZiAocmVwbGFjZW1lbnRzW25leHRMZXR0ZXJdICYmIG1lZGlhbHMuaW5kZXhPZihjdXJyZW50TGV0dGVyKSA+PSAwKXtcbiAgICAgICAgICAgIGxldHRlclRvUmVwbGFjZSA9IG5leHRMZXR0ZXI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldHRlclRvUmVwbGFjZSA9IGN1cnJlbnRMZXR0ZXI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVwbGFjZWQgPSBzeWxsYWJsZS5yZXBsYWNlKGxldHRlclRvUmVwbGFjZSwgcmVwbGFjZW1lbnRzW2xldHRlclRvUmVwbGFjZV1bdG9uZSAtIDFdKTtcbiAgICAgICAgICBzeWxsYWJsZXNbaV0gPSByZXBsYWNlZC5zbGljZSgwLCByZXBsYWNlZC5sZW5ndGggLSAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSAgXG4gICAgfVxuXG4gIH1cbiAgcmV0dXJuIHN5bGxhYmxlcy5qb2luKCcgJyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5wcmV0dGlmeSA9IHByZXR0aWZ5O1xuXG5cbiIsImNsYXNzIFRyaWUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSB7fVxuICAgIH1cblxuICAgIGdldEtleU9iamVjdChrZXksIGNyZWF0ZSA9IGZhbHNlKSB7XG4gICAgICAgIGtleSA9IGtleS50b1N0cmluZygpXG5cbiAgICAgICAgbGV0IGNoYXJzID0ga2V5ID09PSAnJyA/IFtrZXldIDogQXJyYXkuZnJvbShrZXkpXG4gICAgICAgIGxldCBvYmogPSB0aGlzLmNvbnRlbnRcblxuICAgICAgICBmb3IgKGxldCBjaGFyIG9mIGNoYXJzKSB7XG4gICAgICAgICAgICBpZiAob2JqW2NoYXJdID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3JlYXRlKSBvYmpbY2hhcl0gPSB7fVxuICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIHt9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG9iaiA9IG9ialtjaGFyXVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9ialxuICAgIH1cblxuICAgIGdldChrZXkpIHtcbiAgICAgICAgbGV0IG9iaiA9IHRoaXMuZ2V0S2V5T2JqZWN0KGtleSlcblxuICAgICAgICByZXR1cm4gb2JqLnZhbHVlcyB8fCBbXVxuICAgIH1cblxuICAgIGdldFByZWZpeChrZXkpIHtcbiAgICAgICAgbGV0IGlubmVyID0gKGtleSwgb2JqID0gbnVsbCkgPT4ge1xuICAgICAgICAgICAgaWYgKG9iaiA9PSBudWxsKSBvYmogPSB0aGlzLmdldEtleU9iamVjdChrZXkpXG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gb2JqLnZhbHVlcyA/IFsuLi5vYmoudmFsdWVzXSA6IFtdXG5cbiAgICAgICAgICAgIGZvciAobGV0IGNoYXIgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09ICd2YWx1ZXMnIHx8IG9ialtjaGFyXSA9PSBudWxsKSBjb250aW51ZVxuXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uaW5uZXIoa2V5ICsgY2hhciwgb2JqW2NoYXJdKSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlubmVyKGtleSlcbiAgICB9XG5cbiAgICBwdXNoKGtleSwgdmFsdWUpIHtcbiAgICAgICAgbGV0IG9iaiA9IHRoaXMuZ2V0S2V5T2JqZWN0KGtleSwgdHJ1ZSlcblxuICAgICAgICBpZiAob2JqLnZhbHVlcyA9PSBudWxsKSBvYmoudmFsdWVzID0gW11cbiAgICAgICAgaWYgKCFvYmoudmFsdWVzLmluY2x1ZGVzKHZhbHVlKSkgb2JqLnZhbHVlcy5wdXNoKHZhbHVlKVxuXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRyaWVcbiIsImNvbnN0IHtwcmV0dGlmeX0gPSByZXF1aXJlKCdwcmV0dGlmeS1waW55aW4nKVxuY29uc3QgVHJpZSA9IHJlcXVpcmUoJy4vdHJpZScpXG5cbmZ1bmN0aW9uIHBhcnNlTGluZShsaW5lKSB7XG4gICAgbGV0IG1hdGNoID0gbGluZS5tYXRjaCgvXihcXFMrKVxccyhcXFMrKVxcc1xcWyhbXlxcXV0rKVxcXVxcc1xcLyguKylcXC8vKVxuICAgIGlmIChtYXRjaCA9PSBudWxsKSByZXR1cm5cblxuICAgIGxldCBbLCB0cmFkaXRpb25hbCwgc2ltcGxpZmllZCwgcGlueWluLCBlbmdsaXNoXSA9IG1hdGNoXG5cbiAgICBwaW55aW4gPSBwaW55aW4ucmVwbGFjZSgvdTovZywgJ8O8JylcbiAgICBsZXQgcGlueWluUHJldHR5ID0gcHJldHRpZnkocGlueWluKVxuXG4gICAgcmV0dXJuIHt0cmFkaXRpb25hbCwgc2ltcGxpZmllZCwgcGlueWluLCBwaW55aW5QcmV0dHksIGVuZ2xpc2h9XG59XG5cbmNsYXNzIENlZGljdCB7XG4gICAgbG9hZChjb250ZW50cykge1xuICAgICAgICB0aGlzLnNpbXBsaWZpZWRUcmllID0gbmV3IFRyaWUoKVxuICAgICAgICB0aGlzLnRyYWRpdGlvbmFsVHJpZSA9IG5ldyBUcmllKClcblxuICAgICAgICBsZXQgbGluZXMgPSBjb250ZW50cy5zcGxpdCgnXFxuJylcblxuICAgICAgICBmb3IgKGxldCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICBpZiAobGluZS50cmltKCkgPT09ICcnIHx8IGxpbmVbMF0gPT09ICcjJykgY29udGludWVcblxuICAgICAgICAgICAgbGV0IGVudHJ5ID0gcGFyc2VMaW5lKGxpbmUpXG4gICAgICAgICAgICBpZiAoZW50cnkgPT0gbnVsbCkgY29udGludWVcblxuICAgICAgICAgICAgdGhpcy5zaW1wbGlmaWVkVHJpZS5wdXNoKGVudHJ5LnNpbXBsaWZpZWQsIGVudHJ5KVxuICAgICAgICAgICAgdGhpcy50cmFkaXRpb25hbFRyaWUucHVzaChlbnRyeS50cmFkaXRpb25hbCwgZW50cnkpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQod29yZCwgdHJhZGl0aW9uYWwgPSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gdHJhZGl0aW9uYWwgPyB0aGlzLnRyYWRpdGlvbmFsVHJpZS5nZXQod29yZCkgOiB0aGlzLnNpbXBsaWZpZWRUcmllLmdldCh3b3JkKVxuICAgIH1cblxuICAgIGdldFByZWZpeCh3b3JkLCB0cmFkaXRpb25hbCA9IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiB0cmFkaXRpb25hbCA/IHRoaXMudHJhZGl0aW9uYWxUcmllLmdldFByZWZpeCh3b3JkKSA6IHRoaXMuc2ltcGxpZmllZFRyaWUuZ2V0UHJlZml4KHdvcmQpXG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENlZGljdFxuIiwiY29uc3QgQ2VkaWN0ID0gcmVxdWlyZShcIi4vY2VkaWN0XCIpO1xuXG5jb25zdCBjaGluZXNlUHVuY3R1YXRpb24gPSBbXG4gIFwiwrdcIixcbiAgXCLDl1wiLFxuICBcIuKAlFwiLFxuICBcIuKAmFwiLFxuICBcIuKAmVwiLFxuICBcIuKAnFwiLFxuICBcIuKAnVwiLFxuICBcIuKAplwiLFxuICBcIuOAgVwiLFxuICBcIuOAglwiLFxuICBcIuOAilwiLFxuICBcIuOAi1wiLFxuICBcIuOAjlwiLFxuICBcIuOAj1wiLFxuICBcIuOAkFwiLFxuICBcIuOAkVwiLFxuICBcIu+8gVwiLFxuICBcIu+8iFwiLFxuICBcIu+8iVwiLFxuICBcIu+8jFwiLFxuICBcIu+8mlwiLFxuICBcIu+8m1wiLFxuICBcIu+8n1wiLFxuXTtcblxuZXhwb3J0cy5sb2FkID0gZnVuY3Rpb24gKGNvbnRlbnRzKSB7XG4gIGxldCBkaWN0aW9uYXJ5ID0gbmV3IENlZGljdCgpO1xuICBkaWN0aW9uYXJ5LmxvYWQoY29udGVudHMpO1xuXG4gIHJldHVybiBmdW5jdGlvbiB0b2tlbml6ZSh0ZXh0KSB7XG4gICAgdGV4dCA9IEFycmF5LmZyb20odGV4dC5yZXBsYWNlKC9cXHIvZywgXCJcIikpO1xuXG4gICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgIGxldCBpID0gMDtcbiAgICBsZXQgW29mZnNldCwgbGluZSwgY29sdW1uXSA9IFswLCAxLCAxXTtcbiAgICBsZXQgW3NpbXBsaWZpZWRQcmVmZXJlbmNlLCB0cmFkaXRpb25hbFByZWZlcmVuY2VdID0gWzAsIDBdO1xuXG4gICAgbGV0IHB1c2hUb2tlbiA9ICh3b3JkKSA9PiB7XG4gICAgICBsZXQgc2ltcGxpZmllZEVudHJpZXMgPSBkaWN0aW9uYXJ5LmdldCh3b3JkLCBmYWxzZSk7XG4gICAgICBsZXQgdHJhZGl0aW9uYWxFbnRyaWVzID0gZGljdGlvbmFyeS5nZXQod29yZCwgdHJ1ZSk7XG5cbiAgICAgIGxldCBlbnRyaWVzID1cbiAgICAgICAgc2ltcGxpZmllZEVudHJpZXMubGVuZ3RoID09PSAwXG4gICAgICAgICAgPyB0cmFkaXRpb25hbEVudHJpZXNcbiAgICAgICAgICA6IHRyYWRpdGlvbmFsRW50cmllcy5sZW5ndGggPT09IDBcbiAgICAgICAgICA/IHNpbXBsaWZpZWRFbnRyaWVzXG4gICAgICAgICAgOiBzaW1wbGlmaWVkUHJlZmVyZW5jZSA8IHRyYWRpdGlvbmFsUHJlZmVyZW5jZVxuICAgICAgICAgID8gdHJhZGl0aW9uYWxFbnRyaWVzXG4gICAgICAgICAgOiBzaW1wbGlmaWVkUHJlZmVyZW5jZSA+IHRyYWRpdGlvbmFsUHJlZmVyZW5jZVxuICAgICAgICAgID8gc2ltcGxpZmllZEVudHJpZXNcbiAgICAgICAgICA6IHRyYWRpdGlvbmFsRW50cmllcztcblxuICAgICAgaWYgKHRyYWRpdGlvbmFsRW50cmllcy5sZW5ndGggPT09IDAgJiYgc2ltcGxpZmllZEVudHJpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBzaW1wbGlmaWVkUHJlZmVyZW5jZSsrO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgc2ltcGxpZmllZEVudHJpZXMubGVuZ3RoID09PSAwICYmXG4gICAgICAgIHRyYWRpdGlvbmFsRW50cmllcy5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgdHJhZGl0aW9uYWxQcmVmZXJlbmNlKys7XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgdGV4dDogd29yZCxcbiAgICAgICAgdHJhZGl0aW9uYWw6IGVudHJpZXNbMF0gPyBlbnRyaWVzWzBdLnRyYWRpdGlvbmFsIDogd29yZCxcbiAgICAgICAgc2ltcGxpZmllZDogZW50cmllc1swXSA/IGVudHJpZXNbMF0uc2ltcGxpZmllZCA6IHdvcmQsXG5cbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgbGluZSxcbiAgICAgICAgICBjb2x1bW4sXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWF0Y2hlczogZW50cmllcy5tYXAoKHsgcGlueWluLCBwaW55aW5QcmV0dHksIGVuZ2xpc2ggfSkgPT4gKHtcbiAgICAgICAgICBwaW55aW4sXG4gICAgICAgICAgcGlueWluUHJldHR5LFxuICAgICAgICAgIGVuZ2xpc2gsXG4gICAgICAgIH0pKSxcbiAgICAgIH0pO1xuXG4gICAgICBsZXQgd29yZEFyciA9IEFycmF5LmZyb20od29yZCk7XG4gICAgICBsZXQgbGFzdExpbmVCcmVha0luZGV4ID0gd29yZC5sYXN0SW5kZXhPZihcIlxcblwiKTtcblxuICAgICAgaSArPSB3b3JkQXJyLmxlbmd0aDtcbiAgICAgIG9mZnNldCArPSB3b3JkLmxlbmd0aDtcbiAgICAgIGxpbmUgKz0gd29yZEFyci5maWx0ZXIoKHgpID0+IHggPT09IFwiXFxuXCIpLmxlbmd0aDtcbiAgICAgIGNvbHVtbiA9XG4gICAgICAgIGxhc3RMaW5lQnJlYWtJbmRleCA+PSAwXG4gICAgICAgICAgPyB3b3JkLmxlbmd0aCAtIGxhc3RMaW5lQnJlYWtJbmRleFxuICAgICAgICAgIDogY29sdW1uICsgd29yZC5sZW5ndGg7XG4gICAgfTtcblxuICAgIHdoaWxlIChpIDwgdGV4dC5sZW5ndGgpIHtcbiAgICAgIC8vIFRyeSB0byBtYXRjaCB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzXG5cbiAgICAgIGlmIChpICE9PSB0ZXh0Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgbGV0IGdldFR3byA9IHRleHQuc2xpY2UoaSwgaSArIDIpLmpvaW4oXCJcIik7XG4gICAgICAgIGxldCBzaW1wbGlmaWVkRW50cmllcyA9IGRpY3Rpb25hcnkuZ2V0UHJlZml4KGdldFR3bywgZmFsc2UpO1xuICAgICAgICBsZXQgdHJhZGl0aW9uYWxFbnRyaWVzID0gZGljdGlvbmFyeS5nZXRQcmVmaXgoZ2V0VHdvLCB0cnVlKTtcbiAgICAgICAgbGV0IGZvdW5kV29yZCA9IG51bGw7XG4gICAgICAgIGxldCBmb3VuZEVudHJpZXMgPSBudWxsO1xuXG4gICAgICAgIGZvciAobGV0IGVudHJpZXMgb2YgW3RyYWRpdGlvbmFsRW50cmllcywgc2ltcGxpZmllZEVudHJpZXNdKSB7XG4gICAgICAgICAgZm9yIChsZXQgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgbGV0IG1hdGNoVGV4dCA9XG4gICAgICAgICAgICAgIGVudHJpZXMgPT09IHRyYWRpdGlvbmFsRW50cmllc1xuICAgICAgICAgICAgICAgID8gZW50cnkudHJhZGl0aW9uYWxcbiAgICAgICAgICAgICAgICA6IGVudHJ5LnNpbXBsaWZpZWQ7XG4gICAgICAgICAgICBsZXQgd29yZCA9IHRleHQuc2xpY2UoaSwgaSArIEFycmF5LmZyb20obWF0Y2hUZXh0KS5sZW5ndGgpLmpvaW4oXCJcIik7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgbWF0Y2hUZXh0ID09PSB3b3JkICYmXG4gICAgICAgICAgICAgIChmb3VuZFdvcmQgPT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgIEFycmF5LmZyb20od29yZCkubGVuZ3RoID4gQXJyYXkuZnJvbShmb3VuZFdvcmQpLmxlbmd0aClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBmb3VuZFdvcmQgPSB3b3JkO1xuICAgICAgICAgICAgICBmb3VuZEVudHJpZXMgPSBlbnRyaWVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmb3VuZFdvcmQgIT0gbnVsbCkge1xuICAgICAgICAgIHB1c2hUb2tlbihmb3VuZFdvcmQpO1xuXG4gICAgICAgICAgaWYgKGZvdW5kRW50cmllcyA9PT0gc2ltcGxpZmllZEVudHJpZXMpIHtcbiAgICAgICAgICAgIHNpbXBsaWZpZWRQcmVmZXJlbmNlKys7XG4gICAgICAgICAgfSBlbHNlIGlmIChmb3VuZEVudHJpZXMgPT09IHRyYWRpdGlvbmFsRW50cmllcykge1xuICAgICAgICAgICAgdHJhZGl0aW9uYWxQcmVmZXJlbmNlKys7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSWYgaXQgZmFpbHMsIG1hdGNoIG9uZSBjaGFyYWN0ZXJcblxuICAgICAgbGV0IGNoYXJhY3RlciA9IHRleHRbaV07XG4gICAgICBsZXQgaXNDaGluZXNlID0gKGNoYXJhY3RlcikgPT5cbiAgICAgICAgY2hpbmVzZVB1bmN0dWF0aW9uLmluY2x1ZGVzKGNoYXJhY3RlcikgfHxcbiAgICAgICAgZGljdGlvbmFyeS5nZXQoY2hhcmFjdGVyLCBmYWxzZSkubGVuZ3RoID4gMCB8fFxuICAgICAgICBkaWN0aW9uYXJ5LmdldChjaGFyYWN0ZXIsIHRydWUpLmxlbmd0aCA+IDA7XG5cbiAgICAgIGlmIChpc0NoaW5lc2UoY2hhcmFjdGVyKSB8fCBjaGFyYWN0ZXIubWF0Y2goL1xccy8pICE9IG51bGwpIHtcbiAgICAgICAgcHVzaFRva2VuKGNoYXJhY3Rlcik7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgbm9uLUNoaW5lc2UgY2hhcmFjdGVyc1xuXG4gICAgICBsZXQgZW5kID0gaSArIDE7XG5cbiAgICAgIGZvciAoOyBlbmQgPCB0ZXh0Lmxlbmd0aDsgZW5kKyspIHtcbiAgICAgICAgaWYgKHRleHRbZW5kXS5tYXRjaCgvXFxzLykgIT0gbnVsbCB8fCBpc0NoaW5lc2UodGV4dFtlbmRdKSkgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGxldCB3b3JkID0gdGV4dC5zbGljZShpLCBlbmQpLmpvaW4oXCJcIik7XG4gICAgICBwdXNoVG9rZW4od29yZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG4iLCJpbXBvcnQgeyBUUklNX0NIQVJfUEFUVEVSTiB9IGZyb20gXCIuL0RlZmF1bHRUb2tlbml6ZXJcIjtcbmltcG9ydCB0eXBlIHsgVG9rZW5pemVyIH0gZnJvbSBcIi4uL3Rva2VuaXplclwiO1xuaW1wb3J0IGNoaW5lc2VUb2tlbml6ZXIgZnJvbSBcImNoaW5lc2UtdG9rZW5pemVyXCI7XG5cbi8qKlxuICogQ2hpbmVzZSBuZWVkcyBvcmlnaW5hbCBsb2dpYy5cbiAqL1xuZXhwb3J0IGNsYXNzIENoaW5lc2VUb2tlbml6ZXIgaW1wbGVtZW50cyBUb2tlbml6ZXIge1xuICBfdG9rZW5pemU6IFJldHVyblR5cGU8dHlwZW9mIGNoaW5lc2VUb2tlbml6ZXIubG9hZD47XG5cbiAgc3RhdGljIGNyZWF0ZShkaWN0OiBzdHJpbmcpOiBDaGluZXNlVG9rZW5pemVyIHtcbiAgICBjb25zdCBpbnMgPSBuZXcgQ2hpbmVzZVRva2VuaXplcigpO1xuICAgIGlucy5fdG9rZW5pemUgPSBjaGluZXNlVG9rZW5pemVyLmxvYWQoZGljdCk7XG4gICAgcmV0dXJuIGlucztcbiAgfVxuXG4gIHRva2VuaXplKGNvbnRlbnQ6IHN0cmluZywgcmF3PzogYm9vbGVhbik6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gY29udGVudFxuICAgICAgLnNwbGl0KHJhdyA/IC8gL2cgOiB0aGlzLmdldFRyaW1QYXR0ZXJuKCkpXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4ICE9PSBcIlwiKVxuICAgICAgLmZsYXRNYXAoKHgpID0+IHRoaXMuX3Rva2VuaXplKHgpKVxuICAgICAgLm1hcCgoeCkgPT4geC50ZXh0KTtcbiAgfVxuXG4gIHJlY3Vyc2l2ZVRva2VuaXplKGNvbnRlbnQ6IHN0cmluZyk6IHsgd29yZDogc3RyaW5nOyBvZmZzZXQ6IG51bWJlciB9W10ge1xuICAgIGNvbnN0IHRva2Vuczogc3RyaW5nW10gPSB0aGlzLl90b2tlbml6ZShjb250ZW50KS5tYXAoKHgpID0+IHgudGV4dCk7XG5cbiAgICBjb25zdCByZXQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKFxuICAgICAgICBpID09PSAwIHx8XG4gICAgICAgIHRva2Vuc1tpXS5sZW5ndGggIT09IDEgfHxcbiAgICAgICAgIUJvb2xlYW4odG9rZW5zW2ldLm1hdGNoKHRoaXMuZ2V0VHJpbVBhdHRlcm4oKSkpXG4gICAgICApIHtcbiAgICAgICAgcmV0LnB1c2goe1xuICAgICAgICAgIHdvcmQ6IHRva2Vucy5zbGljZShpKS5qb2luKFwiXCIpLFxuICAgICAgICAgIG9mZnNldDogdG9rZW5zLnNsaWNlKDAsIGkpLmpvaW4oXCJcIikubGVuZ3RoLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgZ2V0VHJpbVBhdHRlcm4oKTogUmVnRXhwIHtcbiAgICByZXR1cm4gVFJJTV9DSEFSX1BBVFRFUk47XG4gIH1cblxuICBzaG91bGRJZ25vcmVPbkN1cnJlbnQoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsImltcG9ydCB7IEFyYWJpY1Rva2VuaXplciB9IGZyb20gXCIuL3Rva2VuaXplcnMvQXJhYmljVG9rZW5pemVyXCI7XG5pbXBvcnQgeyBEZWZhdWx0VG9rZW5pemVyIH0gZnJvbSBcIi4vdG9rZW5pemVycy9EZWZhdWx0VG9rZW5pemVyXCI7XG5pbXBvcnQgeyBKYXBhbmVzZVRva2VuaXplciB9IGZyb20gXCIuL3Rva2VuaXplcnMvSmFwYW5lc2VUb2tlbml6ZXJcIjtcbmltcG9ydCB0eXBlIHsgVG9rZW5pemVTdHJhdGVneSB9IGZyb20gXCIuL1Rva2VuaXplU3RyYXRlZ3lcIjtcbmltcG9ydCB7IEVuZ2xpc2hPbmx5VG9rZW5pemVyIH0gZnJvbSBcIi4vdG9rZW5pemVycy9FbmdsaXNoT25seVRva2VuaXplclwiO1xuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IENoaW5lc2VUb2tlbml6ZXIgfSBmcm9tIFwiLi90b2tlbml6ZXJzL0NoaW5lc2VUb2tlbml6ZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBUb2tlbml6ZXIge1xuICB0b2tlbml6ZShjb250ZW50OiBzdHJpbmcsIHJhdz86IGJvb2xlYW4pOiBzdHJpbmdbXTtcbiAgcmVjdXJzaXZlVG9rZW5pemUoY29udGVudDogc3RyaW5nKTogeyB3b3JkOiBzdHJpbmc7IG9mZnNldDogbnVtYmVyIH1bXTtcbiAgZ2V0VHJpbVBhdHRlcm4oKTogUmVnRXhwO1xuICBzaG91bGRJZ25vcmVPbkN1cnJlbnQocXVlcnk6IHN0cmluZyk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVUb2tlbml6ZXIoXG4gIHN0cmF0ZWd5OiBUb2tlbml6ZVN0cmF0ZWd5LFxuICBhcHA6IEFwcFxuKTogUHJvbWlzZTxUb2tlbml6ZXI+IHtcbiAgc3dpdGNoIChzdHJhdGVneS5uYW1lKSB7XG4gICAgY2FzZSBcImRlZmF1bHRcIjpcbiAgICAgIHJldHVybiBuZXcgRGVmYXVsdFRva2VuaXplcigpO1xuICAgIGNhc2UgXCJlbmdsaXNoLW9ubHlcIjpcbiAgICAgIHJldHVybiBuZXcgRW5nbGlzaE9ubHlUb2tlbml6ZXIoKTtcbiAgICBjYXNlIFwiYXJhYmljXCI6XG4gICAgICByZXR1cm4gbmV3IEFyYWJpY1Rva2VuaXplcigpO1xuICAgIGNhc2UgXCJqYXBhbmVzZVwiOlxuICAgICAgcmV0dXJuIG5ldyBKYXBhbmVzZVRva2VuaXplcigpO1xuICAgIGNhc2UgXCJjaGluZXNlXCI6XG4gICAgICBjb25zdCBoYXNDZWRpY3QgPSBhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMoXCIuL2NlZGljdF90cy51OFwiKTtcbiAgICAgIGlmICghaGFzQ2VkaWN0KSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgICBuZXcgRXJyb3IoXCJjZWRpY3RfdHMuVTggZG9lc24ndCBleGlzdCBpbiB5b3VyIHZhdWx0IHJvb3QuXCIpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBkaWN0ID0gYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIucmVhZChcIi4vY2VkaWN0X3RzLnU4XCIpO1xuICAgICAgcmV0dXJuIENoaW5lc2VUb2tlbml6ZXIuY3JlYXRlKGRpY3QpO1xuICB9XG59XG4iLCJ0eXBlIE5hbWUgPSBcImRlZmF1bHRcIiB8IFwiZW5nbGlzaC1vbmx5XCIgfCBcImphcGFuZXNlXCIgfCBcImFyYWJpY1wiIHwgXCJjaGluZXNlXCI7XG5cbmV4cG9ydCBjbGFzcyBUb2tlbml6ZVN0cmF0ZWd5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3ZhbHVlczogVG9rZW5pemVTdHJhdGVneVtdID0gW107XG5cbiAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFQgPSBuZXcgVG9rZW5pemVTdHJhdGVneShcImRlZmF1bHRcIiwgMywgNSk7XG4gIHN0YXRpYyByZWFkb25seSBFTkdMSVNIX09OTFkgPSBuZXcgVG9rZW5pemVTdHJhdGVneShcImVuZ2xpc2gtb25seVwiLCAzLCA1KTtcbiAgc3RhdGljIHJlYWRvbmx5IEpBUEFORVNFID0gbmV3IFRva2VuaXplU3RyYXRlZ3koXCJqYXBhbmVzZVwiLCAyLCAyKTtcbiAgc3RhdGljIHJlYWRvbmx5IEFSQUJJQyA9IG5ldyBUb2tlbml6ZVN0cmF0ZWd5KFwiYXJhYmljXCIsIDMsIDMpO1xuICBzdGF0aWMgcmVhZG9ubHkgQ0hJTkVTRSA9IG5ldyBUb2tlbml6ZVN0cmF0ZWd5KFwiY2hpbmVzZVwiLCAxLCAyKTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IG5hbWU6IE5hbWUsXG4gICAgcmVhZG9ubHkgdHJpZ2dlclRocmVzaG9sZDogbnVtYmVyLFxuICAgIHJlYWRvbmx5IGluZGV4aW5nVGhyZXNob2xkOiBudW1iZXJcbiAgKSB7XG4gICAgVG9rZW5pemVTdHJhdGVneS5fdmFsdWVzLnB1c2godGhpcyk7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5hbWUobmFtZTogc3RyaW5nKTogVG9rZW5pemVTdHJhdGVneSB7XG4gICAgcmV0dXJuIFRva2VuaXplU3RyYXRlZ3kuX3ZhbHVlcy5maW5kKCh4KSA9PiB4Lm5hbWUgPT09IG5hbWUpITtcbiAgfVxuXG4gIHN0YXRpYyB2YWx1ZXMoKTogVG9rZW5pemVTdHJhdGVneVtdIHtcbiAgICByZXR1cm4gVG9rZW5pemVTdHJhdGVneS5fdmFsdWVzO1xuICB9XG59XG4iLCJpbXBvcnQge1xuICBBcHAsXG4gIEVkaXRvcixcbiAgdHlwZSBFZGl0b3JQb3NpdGlvbixcbiAgTWFya2Rvd25WaWV3LFxuICBub3JtYWxpemVQYXRoLFxuICBwYXJzZUZyb250TWF0dGVyQWxpYXNlcyxcbiAgcGFyc2VGcm9udE1hdHRlclN0cmluZ0FycmF5LFxuICBwYXJzZUZyb250TWF0dGVyVGFncyxcbiAgVEZpbGUsXG4gIFZhdWx0LFxufSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW50ZXJmYWNlIFVuc2FmZUFwcEludGVyZmFjZSB7XG4gIHZhdWx0OiBWYXVsdCAmIHtcbiAgICBjb25maWc6IHtcbiAgICAgIHNwZWxsY2hlY2tEaWN0aW9uYXJ5Pzogc3RyaW5nW107XG4gICAgICB1c2VNYXJrZG93bkxpbmtzPzogZmFsc2U7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgRnJvbnRNYXR0ZXJWYWx1ZSA9IHN0cmluZ1tdO1xuXG5leHBvcnQgY2xhc3MgQXBwSGVscGVyIHtcbiAgcHJpdmF0ZSB1bnNhZmVBcHA6IEFwcCAmIFVuc2FmZUFwcEludGVyZmFjZTtcblxuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCkge1xuICAgIHRoaXMudW5zYWZlQXBwID0gYXBwIGFzIGFueTtcbiAgfVxuXG4gIGVxdWFsc0FzRWRpdG9yUG9zdGlvbihvbmU6IEVkaXRvclBvc2l0aW9uLCBvdGhlcjogRWRpdG9yUG9zaXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gb25lLmxpbmUgPT09IG90aGVyLmxpbmUgJiYgb25lLmNoID09PSBvdGhlci5jaDtcbiAgfVxuXG4gIGdldEFsaWFzZXMoZmlsZTogVEZpbGUpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHBhcnNlRnJvbnRNYXR0ZXJBbGlhc2VzKFxuICAgICAgICB0aGlzLnVuc2FmZUFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKT8uZnJvbnRtYXR0ZXJcbiAgICAgICkgPz8gW11cbiAgICApO1xuICB9XG5cbiAgZ2V0RnJvbnRNYXR0ZXIoZmlsZTogVEZpbGUpOiB7IFtrZXk6IHN0cmluZ106IEZyb250TWF0dGVyVmFsdWUgfSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZnJvbnRNYXR0ZXIgPVxuICAgICAgdGhpcy51bnNhZmVBcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk/LmZyb250bWF0dGVyO1xuICAgIGlmICghZnJvbnRNYXR0ZXIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlICNcbiAgICBjb25zdCB0YWdzID1cbiAgICAgIHBhcnNlRnJvbnRNYXR0ZXJUYWdzKGZyb250TWF0dGVyKT8ubWFwKCh4KSA9PiB4LnNsaWNlKDEpKSA/PyBbXTtcbiAgICBjb25zdCBhbGlhc2VzID0gcGFyc2VGcm9udE1hdHRlckFsaWFzZXMoZnJvbnRNYXR0ZXIpID8/IFtdO1xuICAgIGNvbnN0IHsgcG9zaXRpb24sIC4uLnJlc3QgfSA9IGZyb250TWF0dGVyO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5PYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHJlc3QpLm1hcCgoW2ssIF92XSkgPT4gW1xuICAgICAgICAgIGssXG4gICAgICAgICAgcGFyc2VGcm9udE1hdHRlclN0cmluZ0FycmF5KGZyb250TWF0dGVyLCBrKSxcbiAgICAgICAgXSlcbiAgICAgICksXG4gICAgICB0YWdzLFxuICAgICAgdGFnOiB0YWdzLFxuICAgICAgYWxpYXNlcyxcbiAgICAgIGFsaWFzOiBhbGlhc2VzLFxuICAgIH07XG4gIH1cblxuICBnZXRNYXJrZG93blZpZXdJbkFjdGl2ZUxlYWYoKTogTWFya2Rvd25WaWV3IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLnVuc2FmZUFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlVmlld09mVHlwZShNYXJrZG93blZpZXcpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy51bnNhZmVBcHAud29ya3NwYWNlLmFjdGl2ZUxlYWYhLnZpZXcgYXMgTWFya2Rvd25WaWV3O1xuICB9XG5cbiAgZ2V0QWN0aXZlRmlsZSgpOiBURmlsZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnVuc2FmZUFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpO1xuICB9XG5cbiAgaXNBY3RpdmVGaWxlKGZpbGU6IFRGaWxlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWN0aXZlRmlsZSgpPy5wYXRoID09PSBmaWxlLnBhdGg7XG4gIH1cblxuICBnZXRQcmV2aW91c0ZpbGUoKTogVEZpbGUgfCBudWxsIHtcbiAgICBjb25zdCBmTmFtZSA9IHRoaXMudW5zYWZlQXBwLndvcmtzcGFjZS5nZXRMYXN0T3BlbkZpbGVzKCk/LlsxXTtcbiAgICBpZiAoIWZOYW1lKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRNYXJrZG93bkZpbGVCeVBhdGgoZk5hbWUpO1xuICB9XG5cbiAgZ2V0Q3VycmVudERpcm5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWN0aXZlRmlsZSgpPy5wYXJlbnQucGF0aCA/PyBudWxsO1xuICB9XG5cbiAgZ2V0Q3VycmVudEVkaXRvcigpOiBFZGl0b3IgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5nZXRNYXJrZG93blZpZXdJbkFjdGl2ZUxlYWYoKT8uZWRpdG9yID8/IG51bGw7XG4gIH1cblxuICBnZXRTZWxlY3Rpb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDdXJyZW50RWRpdG9yKCk/LmdldFNlbGVjdGlvbigpO1xuICB9XG5cbiAgZ2V0Q3VycmVudE9mZnNldChlZGl0b3I6IEVkaXRvcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGVkaXRvci5wb3NUb09mZnNldChlZGl0b3IuZ2V0Q3Vyc29yKCkpO1xuICB9XG5cbiAgZ2V0Q3VycmVudExpbmUoZWRpdG9yOiBFZGl0b3IpOiBzdHJpbmcge1xuICAgIHJldHVybiBlZGl0b3IuZ2V0TGluZShlZGl0b3IuZ2V0Q3Vyc29yKCkubGluZSk7XG4gIH1cblxuICBnZXRDdXJyZW50TGluZVVudGlsQ3Vyc29yKGVkaXRvcjogRWRpdG9yKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDdXJyZW50TGluZShlZGl0b3IpLnNsaWNlKDAsIGVkaXRvci5nZXRDdXJzb3IoKS5jaCk7XG4gIH1cblxuICBvcHRpbWl6ZU1hcmtkb3duTGlua1RleHQobGlua1RleHQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGFjdGl2ZUZpbGUgPSB0aGlzLmdldEFjdGl2ZUZpbGUoKTtcbiAgICBpZiAoIWFjdGl2ZUZpbGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHBhdGggPSB0aGlzLmxpbmtUZXh0MlBhdGgobGlua1RleHQpO1xuICAgIGlmICghcGF0aCkge1xuICAgICAgcmV0dXJuIGxpbmtUZXh0O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGUgPSB0aGlzLmdldE1hcmtkb3duRmlsZUJ5UGF0aChwYXRoKTtcbiAgICBpZiAoIWZpbGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG1hcmtkb3duTGluayA9IHRoaXMudW5zYWZlQXBwLmZpbGVNYW5hZ2VyLmdlbmVyYXRlTWFya2Rvd25MaW5rKFxuICAgICAgZmlsZSxcbiAgICAgIGFjdGl2ZUZpbGUucGF0aFxuICAgICk7XG5cbiAgICByZXR1cm4gbWFya2Rvd25MaW5rLnN0YXJ0c1dpdGgoXCJbW1wiKVxuICAgICAgPyBtYXJrZG93bkxpbmsucmVwbGFjZShcIltbXCIsIFwiXCIpLnJlcGxhY2UoXCJdXVwiLCBcIlwiKVxuICAgICAgOiBtYXJrZG93bkxpbmsucmVwbGFjZShcIltcIiwgXCJcIikucmVwbGFjZSgvXFxdXFwoLitcXCkvZywgXCJcIik7XG4gIH1cblxuICBsaW5rVGV4dDJQYXRoKGxpbmtUZXh0OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBhY3RpdmVGaWxlID0gdGhpcy5nZXRBY3RpdmVGaWxlKCk7XG4gICAgaWYgKCFhY3RpdmVGaWxlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy51bnNhZmVBcHAubWV0YWRhdGFDYWNoZS5nZXRGaXJzdExpbmtwYXRoRGVzdChcbiAgICAgICAgbGlua1RleHQsXG4gICAgICAgIGFjdGl2ZUZpbGUucGF0aFxuICAgICAgKT8ucGF0aCA/PyBudWxsXG4gICAgKTtcbiAgfVxuXG4gIHNlYXJjaFBoYW50b21MaW5rcygpOiB7IHBhdGg6IHN0cmluZzsgbGluazogc3RyaW5nIH1bXSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMudW5zYWZlQXBwLm1ldGFkYXRhQ2FjaGUudW5yZXNvbHZlZExpbmtzKS5mbGF0TWFwKFxuICAgICAgKFtwYXRoLCBvYmpdKSA9PiBPYmplY3Qua2V5cyhvYmopLm1hcCgobGluaykgPT4gKHsgcGF0aCwgbGluayB9KSlcbiAgICApO1xuICB9XG5cbiAgZ2V0TWFya2Rvd25GaWxlQnlQYXRoKHBhdGg6IHN0cmluZyk6IFRGaWxlIHwgbnVsbCB7XG4gICAgaWYgKCFwYXRoLmVuZHNXaXRoKFwiLm1kXCIpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBhYnN0cmFjdEZpbGUgPSB0aGlzLnVuc2FmZUFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgocGF0aCk7XG4gICAgaWYgKCFhYnN0cmFjdEZpbGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBhYnN0cmFjdEZpbGUgYXMgVEZpbGU7XG4gIH1cblxuICBvcGVuTWFya2Rvd25GaWxlKGZpbGU6IFRGaWxlLCBuZXdMZWFmOiBib29sZWFuLCBvZmZzZXQ6IG51bWJlciA9IDApIHtcbiAgICBjb25zdCBsZWFmID0gdGhpcy51bnNhZmVBcHAud29ya3NwYWNlLmdldExlYWYobmV3TGVhZik7XG5cbiAgICBsZWFmXG4gICAgICAub3BlbkZpbGUoZmlsZSwgdGhpcy51bnNhZmVBcHAud29ya3NwYWNlLmFjdGl2ZUxlYWY/LmdldFZpZXdTdGF0ZSgpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnVuc2FmZUFwcC53b3Jrc3BhY2Uuc2V0QWN0aXZlTGVhZihsZWFmLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgY29uc3Qgdmlld09mVHlwZSA9XG4gICAgICAgICAgdGhpcy51bnNhZmVBcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcbiAgICAgICAgaWYgKHZpZXdPZlR5cGUpIHtcbiAgICAgICAgICBjb25zdCBlZGl0b3IgPSB2aWV3T2ZUeXBlLmVkaXRvcjtcbiAgICAgICAgICBjb25zdCBwb3MgPSBlZGl0b3Iub2Zmc2V0VG9Qb3Mob2Zmc2V0KTtcbiAgICAgICAgICBlZGl0b3Iuc2V0Q3Vyc29yKHBvcyk7XG4gICAgICAgICAgZWRpdG9yLnNjcm9sbEludG9WaWV3KHsgZnJvbTogcG9zLCB0bzogcG9zIH0sIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGdldEN1cnJlbnRGcm9udE1hdHRlcigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmdldEN1cnJlbnRFZGl0b3IoKTtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmdldEFjdGl2ZUZpbGUoKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGVkaXRvci5nZXRMaW5lKDApICE9PSBcIi0tLVwiKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgZW5kUG9zaXRpb24gPSBlZGl0b3IuZ2V0VmFsdWUoKS5pbmRleE9mKFwiLS0tXCIsIDMpO1xuXG4gICAgY29uc3QgY3VycmVudE9mZnNldCA9IHRoaXMuZ2V0Q3VycmVudE9mZnNldChlZGl0b3IpO1xuICAgIGlmIChlbmRQb3NpdGlvbiAhPT0gLTEgJiYgY3VycmVudE9mZnNldCA+PSBlbmRQb3NpdGlvbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qga2V5TG9jYXRpb25zID0gQXJyYXkuZnJvbShlZGl0b3IuZ2V0VmFsdWUoKS5tYXRjaEFsbCgvLis6L2cpKTtcbiAgICBpZiAoa2V5TG9jYXRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudEtleUxvY2F0aW9uID0ga2V5TG9jYXRpb25zXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4LmluZGV4ISA8IGN1cnJlbnRPZmZzZXQpXG4gICAgICAubGFzdCgpO1xuICAgIGlmICghY3VycmVudEtleUxvY2F0aW9uKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudEtleUxvY2F0aW9uWzBdLnNwbGl0KFwiOlwiKVswXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnNhZmUgbWV0aG9kXG4gICAqL1xuICBpc0lNRU9uKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy51bnNhZmVBcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IG1hcmtkb3duVmlldyA9IHRoaXMudW5zYWZlQXBwLndvcmtzcGFjZS5hY3RpdmVMZWFmIVxuICAgICAgLnZpZXcgYXMgTWFya2Rvd25WaWV3O1xuICAgIGNvbnN0IGNtNW9yNjogYW55ID0gKG1hcmtkb3duVmlldy5lZGl0b3IgYXMgYW55KS5jbTtcblxuICAgIC8vIGNtNlxuICAgIGlmIChjbTVvcjY/LmlucHV0U3RhdGU/LmNvbXBvc2luZyA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIGNtNVxuICAgIHJldHVybiAhIWNtNW9yNj8uZGlzcGxheT8uaW5wdXQ/LmNvbXBvc2luZztcbiAgfVxuXG4gIGFzeW5jIHdyaXRlTG9nKGxvZzogc3RyaW5nKSB7XG4gICAgYXdhaXQgdGhpcy51bnNhZmVBcHAudmF1bHQuYWRhcHRlci5hcHBlbmQobm9ybWFsaXplUGF0aChcImxvZy5tZFwiKSwgbG9nKTtcbiAgfVxuXG4gIGdldCB1c2VXaWtpTGlua3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnVuc2FmZUFwcC52YXVsdC5jb25maWcudXNlTWFya2Rvd25MaW5rcztcbiAgfVxufVxuIiwiZXhwb3J0IGNvbnN0IGtleUJ5ID0gPFQ+KFxuICB2YWx1ZXM6IFRbXSxcbiAgdG9LZXk6ICh0OiBUKSA9PiBzdHJpbmdcbik6IHsgW2tleTogc3RyaW5nXTogVCB9ID0+XG4gIHZhbHVlcy5yZWR1Y2UoXG4gICAgKHByZXYsIGN1ciwgXzEsIF8yLCBrID0gdG9LZXkoY3VyKSkgPT4gKChwcmV2W2tdID0gY3VyKSwgcHJldiksXG4gICAge30gYXMgeyBba2V5OiBzdHJpbmddOiBUIH1cbiAgKTtcblxuZXhwb3J0IGNvbnN0IGdyb3VwQnkgPSA8VD4oXG4gIHZhbHVlczogVFtdLFxuICB0b0tleTogKHQ6IFQpID0+IHN0cmluZ1xuKTogeyBba2V5OiBzdHJpbmddOiBUW10gfSA9PlxuICB2YWx1ZXMucmVkdWNlKFxuICAgIChwcmV2LCBjdXIsIF8xLCBfMiwgayA9IHRvS2V5KGN1cikpID0+IChcbiAgICAgIChwcmV2W2tdIHx8IChwcmV2W2tdID0gW10pKS5wdXNoKGN1ciksIHByZXZcbiAgICApLFxuICAgIHt9IGFzIHsgW2tleTogc3RyaW5nXTogVFtdIH1cbiAgKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVuaXE8VD4odmFsdWVzOiBUW10pOiBUW10ge1xuICByZXR1cm4gWy4uLm5ldyBTZXQodmFsdWVzKV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlxQnk8VD4odmFsdWVzOiBUW10sIGZuOiAoeDogVCkgPT4gc3RyaW5nIHwgbnVtYmVyKTogVFtdIHtcbiAgY29uc3QgbSA9IG5ldyBNYXA8c3RyaW5nIHwgbnVtYmVyLCBUPigpO1xuICB2YWx1ZXMuZm9yRWFjaCgoeCkgPT4ge1xuICAgIGNvbnN0IGsgPSBmbih4KTtcbiAgICBpZiAoIW0uaGFzKGspKSB7XG4gICAgICBtLnNldChrLCB4KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gQXJyYXkuZnJvbShtLnZhbHVlcygpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaXFXaXRoPFQ+KGFycjogVFtdLCBmbjogKG9uZTogVCwgb3RoZXI6IFQpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIGFyci5maWx0ZXIoXG4gICAgKGVsZW1lbnQsIGluZGV4KSA9PiBhcnIuZmluZEluZGV4KChzdGVwKSA9PiBmbihlbGVtZW50LCBzdGVwKSkgPT09IGluZGV4XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheUVxdWFscyhcbiAgYXJyMTogdW5rbm93bltdLFxuICBhcnIyOiB1bmtub3duW10sXG4gIGxlbmd0aD86IG51bWJlclxuKTogYm9vbGVhbiB7XG4gIGxldCBsID0gTWF0aC5tYXgoYXJyMS5sZW5ndGgsIGFycjIubGVuZ3RoKTtcbiAgaWYgKGxlbmd0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbCA9IE1hdGgubWluKGwsIGxlbmd0aCk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgIGlmIChhcnIxW2ldICE9PSBhcnIyW2ldKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheUVxdWFsc1VudGlsKGFycjE6IHVua25vd25bXSwgYXJyMjogdW5rbm93bltdKTogbnVtYmVyIHtcbiAgbGV0IGwgPSBNYXRoLm1pbihhcnIxLmxlbmd0aCwgYXJyMi5sZW5ndGgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgIGlmIChhcnIxW2ldICE9PSBhcnIyW2ldKSB7XG4gICAgICByZXR1cm4gaSAtIDE7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGwgLSAxO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWlycm9yTWFwPFQ+KFxuICBjb2xsZWN0aW9uOiBUW10sXG4gIHRvVmFsdWU6ICh0OiBUKSA9PiBzdHJpbmdcbik6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICByZXR1cm4gY29sbGVjdGlvbi5yZWR1Y2UoKHAsIGMpID0+ICh7IC4uLnAsIFt0b1ZhbHVlKGMpXTogdG9WYWx1ZShjKSB9KSwge30pO1xufVxuIiwiZXhwb3J0IHR5cGUgV29yZFR5cGUgPVxuICB8IFwiY3VycmVudEZpbGVcIlxuICB8IFwiY3VycmVudFZhdWx0XCJcbiAgfCBcImN1c3RvbURpY3Rpb25hcnlcIlxuICB8IFwiaW50ZXJuYWxMaW5rXCJcbiAgfCBcImZyb250TWF0dGVyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdFdvcmQge1xuICB2YWx1ZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgYWxpYXNlcz86IHN0cmluZ1tdO1xuICB0eXBlOiBXb3JkVHlwZTtcbiAgY3JlYXRlZFBhdGg6IHN0cmluZztcbiAgLy8gQWRkIGFmdGVyIGp1ZGdlXG4gIG9mZnNldD86IG51bWJlcjtcbiAgaGl0Pzogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBDdXJyZW50RmlsZVdvcmQgZXh0ZW5kcyBEZWZhdWx0V29yZCB7XG4gIHR5cGU6IFwiY3VycmVudEZpbGVcIjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ3VycmVudFZhdWx0V29yZCBleHRlbmRzIERlZmF1bHRXb3JkIHtcbiAgdHlwZTogXCJjdXJyZW50VmF1bHRcIjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tRGljdGlvbmFyeVdvcmQgZXh0ZW5kcyBEZWZhdWx0V29yZCB7XG4gIHR5cGU6IFwiY3VzdG9tRGljdGlvbmFyeVwiO1xuICBjYXJldFN5bWJvbD86IHN0cmluZztcbiAgLyoqIFVzZSBmb3IgaW5zZXJ0aW5nIGluc3RlYWQgb2YgdmFsdWUgKiovXG4gIGluc2VydGVkVGV4dD86IHN0cmluZztcbiAgLyoqIElmIHRydWUsIGlnbm9yZSBgSW5zZXJ0IHNwYWNlIGFmdGVyIGNvbXBsZXRpb25gIG9wdGlvbiAqKi9cbiAgaWdub3JlU3BhY2VBZnRlckNvbXBsZXRpb24/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbExpbmtXb3JkIGV4dGVuZHMgRGVmYXVsdFdvcmQge1xuICB0eXBlOiBcImludGVybmFsTGlua1wiO1xuICBwaGFudG9tPzogYm9vbGVhbjtcbiAgYWxpYXNNZXRhPzoge1xuICAgIG9yaWdpbjogc3RyaW5nO1xuICB9O1xufVxuZXhwb3J0IGludGVyZmFjZSBGcm9udE1hdHRlcldvcmQgZXh0ZW5kcyBEZWZhdWx0V29yZCB7XG4gIHR5cGU6IFwiZnJvbnRNYXR0ZXJcIjtcbiAga2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFdvcmQgPVxuICB8IEN1cnJlbnRGaWxlV29yZFxuICB8IEN1cnJlbnRWYXVsdFdvcmRcbiAgfCBDdXN0b21EaWN0aW9uYXJ5V29yZFxuICB8IEludGVybmFsTGlua1dvcmRcbiAgfCBGcm9udE1hdHRlcldvcmQ7XG5cbmV4cG9ydCBjbGFzcyBXb3JkVHlwZU1ldGEge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdmFsdWVzOiBXb3JkVHlwZU1ldGFbXSA9IFtdO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZGljdDogeyBbdHlwZTogc3RyaW5nXTogV29yZFR5cGVNZXRhIH0gPSB7fTtcblxuICBzdGF0aWMgcmVhZG9ubHkgRlJPTlRfTUFUVEVSID0gbmV3IFdvcmRUeXBlTWV0YShcbiAgICBcImZyb250TWF0dGVyXCIsXG4gICAgMTAwLFxuICAgIFwiZnJvbnRNYXR0ZXJcIlxuICApO1xuICBzdGF0aWMgcmVhZG9ubHkgSU5URVJOQUxfTElOSyA9IG5ldyBXb3JkVHlwZU1ldGEoXG4gICAgXCJpbnRlcm5hbExpbmtcIixcbiAgICA5MCxcbiAgICBcImludGVybmFsTGlua1wiXG4gICk7XG4gIHN0YXRpYyByZWFkb25seSBDVVNUT01fRElDVElPTkFSWSA9IG5ldyBXb3JkVHlwZU1ldGEoXG4gICAgXCJjdXN0b21EaWN0aW9uYXJ5XCIsXG4gICAgODAsXG4gICAgXCJzdWdnZXN0aW9uXCJcbiAgKTtcbiAgc3RhdGljIHJlYWRvbmx5IENVUlJFTlRfRklMRSA9IG5ldyBXb3JkVHlwZU1ldGEoXG4gICAgXCJjdXJyZW50RmlsZVwiLFxuICAgIDcwLFxuICAgIFwic3VnZ2VzdGlvblwiXG4gICk7XG4gIHN0YXRpYyByZWFkb25seSBDVVJSRU5UX1ZBVUxUID0gbmV3IFdvcmRUeXBlTWV0YShcbiAgICBcImN1cnJlbnRWYXVsdFwiLFxuICAgIDYwLFxuICAgIFwic3VnZ2VzdGlvblwiXG4gICk7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSB0eXBlOiBXb3JkVHlwZSxcbiAgICByZWFkb25seSBwcmlvcml0eTogbnVtYmVyLFxuICAgIHJlYWRvbmx5IGdyb3VwOiBzdHJpbmdcbiAgKSB7XG4gICAgV29yZFR5cGVNZXRhLl92YWx1ZXMucHVzaCh0aGlzKTtcbiAgICBXb3JkVHlwZU1ldGEuX2RpY3RbdHlwZV0gPSB0aGlzO1xuICB9XG5cbiAgc3RhdGljIG9mKHR5cGU6IFdvcmRUeXBlKTogV29yZFR5cGVNZXRhIHtcbiAgICByZXR1cm4gV29yZFR5cGVNZXRhLl9kaWN0W3R5cGVdO1xuICB9XG5cbiAgc3RhdGljIHZhbHVlcygpOiBXb3JkVHlwZU1ldGFbXSB7XG4gICAgcmV0dXJuIFdvcmRUeXBlTWV0YS5fdmFsdWVzO1xuICB9XG59XG4iLCJpbXBvcnQge1xuICBjYXBpdGFsaXplRmlyc3RMZXR0ZXIsXG4gIGxvd2VySW5jbHVkZXMsXG4gIGxvd2VyU3RhcnRzV2l0aCxcbn0gZnJvbSBcIi4uL3V0aWwvc3RyaW5nc1wiO1xuaW1wb3J0IHR5cGUgeyBJbmRleGVkV29yZHMgfSBmcm9tIFwiLi4vdWkvQXV0b0NvbXBsZXRlU3VnZ2VzdFwiO1xuaW1wb3J0IHsgdW5pcVdpdGggfSBmcm9tIFwiLi4vdXRpbC9jb2xsZWN0aW9uLWhlbHBlclwiO1xuaW1wb3J0IHsgdHlwZSBXb3JkLCBXb3JkVHlwZU1ldGEgfSBmcm9tIFwiLi4vbW9kZWwvV29yZFwiO1xuaW1wb3J0IHR5cGUge1xuICBIaXRXb3JkLFxuICBTZWxlY3Rpb25IaXN0b3J5U3RvcmFnZSxcbn0gZnJvbSBcIi4uL3N0b3JhZ2UvU2VsZWN0aW9uSGlzdG9yeVN0b3JhZ2VcIjtcblxuZXhwb3J0IHR5cGUgV29yZHNCeUZpcnN0TGV0dGVyID0geyBbZmlyc3RMZXR0ZXI6IHN0cmluZ106IFdvcmRbXSB9O1xuXG5pbnRlcmZhY2UgSnVkZ2VtZW50IHtcbiAgd29yZDogV29yZDtcbiAgLy8gVE9ETzogcmVtb3ZlIHZhbHVlLiB1c2Ugd29yZC5oaXQgaW5zdGVhZFxuICB2YWx1ZT86IHN0cmluZztcbiAgYWxpYXM6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwdXNoV29yZChcbiAgd29yZHNCeUZpcnN0TGV0dGVyOiBXb3Jkc0J5Rmlyc3RMZXR0ZXIsXG4gIGtleTogc3RyaW5nLFxuICB3b3JkOiBXb3JkXG4pIHtcbiAgaWYgKHdvcmRzQnlGaXJzdExldHRlcltrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICB3b3Jkc0J5Rmlyc3RMZXR0ZXJba2V5XSA9IFt3b3JkXTtcbiAgICByZXR1cm47XG4gIH1cblxuICB3b3Jkc0J5Rmlyc3RMZXR0ZXJba2V5XS5wdXNoKHdvcmQpO1xufVxuXG4vLyBQdWJsaWMgZm9yIHRlc3RzXG5leHBvcnQgZnVuY3Rpb24ganVkZ2UoXG4gIHdvcmQ6IFdvcmQsXG4gIHF1ZXJ5OiBzdHJpbmcsXG4gIHF1ZXJ5U3RhcnRXaXRoVXBwZXI6IGJvb2xlYW5cbik6IEp1ZGdlbWVudCB7XG4gIGlmIChxdWVyeSA9PT0gXCJcIikge1xuICAgIHJldHVybiB7XG4gICAgICB3b3JkOiB7XG4gICAgICAgIC4uLndvcmQsXG4gICAgICAgIGhpdDogd29yZC52YWx1ZSxcbiAgICAgIH0sXG4gICAgICB2YWx1ZTogd29yZC52YWx1ZSxcbiAgICAgIGFsaWFzOiBmYWxzZSxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGxvd2VyU3RhcnRzV2l0aCh3b3JkLnZhbHVlLCBxdWVyeSkpIHtcbiAgICBpZiAoXG4gICAgICBxdWVyeVN0YXJ0V2l0aFVwcGVyICYmXG4gICAgICB3b3JkLnR5cGUgIT09IFwiaW50ZXJuYWxMaW5rXCIgJiZcbiAgICAgIHdvcmQudHlwZSAhPT0gXCJmcm9udE1hdHRlclwiXG4gICAgKSB7XG4gICAgICBjb25zdCBjID0gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHdvcmQudmFsdWUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd29yZDoge1xuICAgICAgICAgIC4uLndvcmQsXG4gICAgICAgICAgdmFsdWU6IGMsXG4gICAgICAgICAgaGl0OiBjLFxuICAgICAgICB9LFxuICAgICAgICB2YWx1ZTogYyxcbiAgICAgICAgYWxpYXM6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd29yZDoge1xuICAgICAgICAgIC4uLndvcmQsXG4gICAgICAgICAgaGl0OiB3b3JkLnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgICB2YWx1ZTogd29yZC52YWx1ZSxcbiAgICAgICAgYWxpYXM6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgY29uc3QgbWF0Y2hlZEFsaWFzID0gd29yZC5hbGlhc2VzPy5maW5kKChhKSA9PiBsb3dlclN0YXJ0c1dpdGgoYSwgcXVlcnkpKTtcbiAgaWYgKG1hdGNoZWRBbGlhcykge1xuICAgIHJldHVybiB7XG4gICAgICB3b3JkOiB7XG4gICAgICAgIC4uLndvcmQsXG4gICAgICAgIGhpdDogbWF0Y2hlZEFsaWFzLFxuICAgICAgfSxcbiAgICAgIHZhbHVlOiBtYXRjaGVkQWxpYXMsXG4gICAgICBhbGlhczogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB3b3JkLFxuICAgIGFsaWFzOiBmYWxzZSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1Z2dlc3RXb3JkcyhcbiAgaW5kZXhlZFdvcmRzOiBJbmRleGVkV29yZHMsXG4gIHF1ZXJ5OiBzdHJpbmcsXG4gIG1heDogbnVtYmVyLFxuICBvcHRpb246IHtcbiAgICBmcm9udE1hdHRlcj86IHN0cmluZztcbiAgICBzZWxlY3Rpb25IaXN0b3J5U3RvcmFnZT86IFNlbGVjdGlvbkhpc3RvcnlTdG9yYWdlO1xuICB9ID0ge31cbik6IFdvcmRbXSB7XG4gIGNvbnN0IHsgZnJvbnRNYXR0ZXIsIHNlbGVjdGlvbkhpc3RvcnlTdG9yYWdlIH0gPSBvcHRpb247XG4gIGNvbnN0IHF1ZXJ5U3RhcnRXaXRoVXBwZXIgPSBjYXBpdGFsaXplRmlyc3RMZXR0ZXIocXVlcnkpID09PSBxdWVyeTtcblxuICBjb25zdCBmbGF0dGVuRnJvbnRNYXR0ZXJXb3JkcyA9ICgpID0+IHtcbiAgICBpZiAoZnJvbnRNYXR0ZXIgPT09IFwiYWxpYXNcIiB8fCBmcm9udE1hdHRlciA9PT0gXCJhbGlhc2VzXCIpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgaWYgKGZyb250TWF0dGVyICYmIGluZGV4ZWRXb3Jkcy5mcm9udE1hdHRlcj8uW2Zyb250TWF0dGVyXSkge1xuICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoaW5kZXhlZFdvcmRzLmZyb250TWF0dGVyPy5bZnJvbnRNYXR0ZXJdKS5mbGF0KCk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfTtcblxuICBjb25zdCB3b3JkcyA9IHF1ZXJ5U3RhcnRXaXRoVXBwZXJcbiAgICA/IGZyb250TWF0dGVyXG4gICAgICA/IGZsYXR0ZW5Gcm9udE1hdHRlcldvcmRzKClcbiAgICAgIDogW1xuICAgICAgICAgIC4uLihpbmRleGVkV29yZHMuY3VycmVudEZpbGVbcXVlcnkuY2hhckF0KDApXSA/PyBbXSksXG4gICAgICAgICAgLi4uKGluZGV4ZWRXb3Jkcy5jdXJyZW50RmlsZVtxdWVyeS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKV0gPz8gW10pLFxuICAgICAgICAgIC4uLihpbmRleGVkV29yZHMuY3VycmVudFZhdWx0W3F1ZXJ5LmNoYXJBdCgwKV0gPz8gW10pLFxuICAgICAgICAgIC4uLihpbmRleGVkV29yZHMuY3VycmVudFZhdWx0W3F1ZXJ5LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpXSA/PyBbXSksXG4gICAgICAgICAgLi4uKGluZGV4ZWRXb3Jkcy5jdXN0b21EaWN0aW9uYXJ5W3F1ZXJ5LmNoYXJBdCgwKV0gPz8gW10pLFxuICAgICAgICAgIC4uLihpbmRleGVkV29yZHMuY3VzdG9tRGljdGlvbmFyeVtxdWVyeS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKV0gPz9cbiAgICAgICAgICAgIFtdKSxcbiAgICAgICAgICAuLi4oaW5kZXhlZFdvcmRzLmludGVybmFsTGlua1txdWVyeS5jaGFyQXQoMCldID8/IFtdKSxcbiAgICAgICAgICAuLi4oaW5kZXhlZFdvcmRzLmludGVybmFsTGlua1txdWVyeS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKV0gPz8gW10pLFxuICAgICAgICBdXG4gICAgOiBmcm9udE1hdHRlclxuICAgID8gZmxhdHRlbkZyb250TWF0dGVyV29yZHMoKVxuICAgIDogW1xuICAgICAgICAuLi4oaW5kZXhlZFdvcmRzLmN1cnJlbnRGaWxlW3F1ZXJ5LmNoYXJBdCgwKV0gPz8gW10pLFxuICAgICAgICAuLi4oaW5kZXhlZFdvcmRzLmN1cnJlbnRGaWxlW3F1ZXJ5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpXSA/PyBbXSksXG4gICAgICAgIC4uLihpbmRleGVkV29yZHMuY3VycmVudFZhdWx0W3F1ZXJ5LmNoYXJBdCgwKV0gPz8gW10pLFxuICAgICAgICAuLi4oaW5kZXhlZFdvcmRzLmN1cnJlbnRWYXVsdFtxdWVyeS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKV0gPz8gW10pLFxuICAgICAgICAuLi4oaW5kZXhlZFdvcmRzLmN1c3RvbURpY3Rpb25hcnlbcXVlcnkuY2hhckF0KDApXSA/PyBbXSksXG4gICAgICAgIC4uLihpbmRleGVkV29yZHMuY3VzdG9tRGljdGlvbmFyeVtxdWVyeS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKV0gPz8gW10pLFxuICAgICAgICAuLi4oaW5kZXhlZFdvcmRzLmludGVybmFsTGlua1txdWVyeS5jaGFyQXQoMCldID8/IFtdKSxcbiAgICAgICAgLi4uKGluZGV4ZWRXb3Jkcy5pbnRlcm5hbExpbmtbcXVlcnkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCldID8/IFtdKSxcbiAgICAgIF07XG5cbiAgY29uc3QgY2FuZGlkYXRlID0gQXJyYXkuZnJvbSh3b3JkcylcbiAgICAubWFwKCh4KSA9PiBqdWRnZSh4LCBxdWVyeSwgcXVlcnlTdGFydFdpdGhVcHBlcikpXG4gICAgLmZpbHRlcigoeCkgPT4geC52YWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgIC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBjb25zdCBhV29yZCA9IGEud29yZCBhcyBIaXRXb3JkO1xuICAgICAgY29uc3QgYldvcmQgPSBiLndvcmQgYXMgSGl0V29yZDtcblxuICAgICAgY29uc3Qgbm90U2FtZVdvcmRUeXBlID0gYVdvcmQudHlwZSAhPT0gYldvcmQudHlwZTtcbiAgICAgIGlmIChmcm9udE1hdHRlciAmJiBub3RTYW1lV29yZFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGJXb3JkLnR5cGUgPT09IFwiZnJvbnRNYXR0ZXJcIiA/IDEgOiAtMTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNlbGVjdGlvbkhpc3RvcnlTdG9yYWdlKSB7XG4gICAgICAgIGNvbnN0IHJldCA9IHNlbGVjdGlvbkhpc3RvcnlTdG9yYWdlLmNvbXBhcmUoXG4gICAgICAgICAgYVdvcmQgYXMgSGl0V29yZCxcbiAgICAgICAgICBiV29yZCBhcyBIaXRXb3JkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChyZXQgIT09IDApIHtcbiAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLnZhbHVlIS5sZW5ndGggIT09IGIudmFsdWUhLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gYS52YWx1ZSEubGVuZ3RoID4gYi52YWx1ZSEubGVuZ3RoID8gMSA6IC0xO1xuICAgICAgfVxuICAgICAgaWYgKG5vdFNhbWVXb3JkVHlwZSkge1xuICAgICAgICByZXR1cm4gV29yZFR5cGVNZXRhLm9mKGJXb3JkLnR5cGUpLnByaW9yaXR5ID5cbiAgICAgICAgICBXb3JkVHlwZU1ldGEub2YoYVdvcmQudHlwZSkucHJpb3JpdHlcbiAgICAgICAgICA/IDFcbiAgICAgICAgICA6IC0xO1xuICAgICAgfVxuICAgICAgaWYgKGEuYWxpYXMgIT09IGIuYWxpYXMpIHtcbiAgICAgICAgcmV0dXJuIGEuYWxpYXMgPyAxIDogLTE7XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9KVxuICAgIC5tYXAoKHgpID0+IHgud29yZClcbiAgICAuc2xpY2UoMCwgbWF4KTtcblxuICAvLyBYWFg6IFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGVxdWFscyB3aXRoIG1heCwgYnV0IGl0IGlzIGltcG9ydGFudCBmb3IgcGVyZm9ybWFuY2VcbiAgcmV0dXJuIHVuaXFXaXRoKFxuICAgIGNhbmRpZGF0ZSxcbiAgICAoYSwgYikgPT5cbiAgICAgIGEudmFsdWUgPT09IGIudmFsdWUgJiZcbiAgICAgIFdvcmRUeXBlTWV0YS5vZihhLnR5cGUpLmdyb3VwID09PSBXb3JkVHlwZU1ldGEub2YoYi50eXBlKS5ncm91cFxuICApO1xufVxuXG4vLyBUT0RPOiByZWZhY3RvcmluZ1xuLy8gUHVibGljIGZvciB0ZXN0c1xuZXhwb3J0IGZ1bmN0aW9uIGp1ZGdlQnlQYXJ0aWFsTWF0Y2goXG4gIHdvcmQ6IFdvcmQsXG4gIHF1ZXJ5OiBzdHJpbmcsXG4gIHF1ZXJ5U3RhcnRXaXRoVXBwZXI6IGJvb2xlYW5cbik6IEp1ZGdlbWVudCB7XG4gIGlmIChxdWVyeSA9PT0gXCJcIikge1xuICAgIHJldHVybiB7XG4gICAgICB3b3JkOiB7IC4uLndvcmQsIGhpdDogd29yZC52YWx1ZSB9LFxuICAgICAgdmFsdWU6IHdvcmQudmFsdWUsXG4gICAgICBhbGlhczogZmFsc2UsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChsb3dlclN0YXJ0c1dpdGgod29yZC52YWx1ZSwgcXVlcnkpKSB7XG4gICAgaWYgKFxuICAgICAgcXVlcnlTdGFydFdpdGhVcHBlciAmJlxuICAgICAgd29yZC50eXBlICE9PSBcImludGVybmFsTGlua1wiICYmXG4gICAgICB3b3JkLnR5cGUgIT09IFwiZnJvbnRNYXR0ZXJcIlxuICAgICkge1xuICAgICAgY29uc3QgYyA9IGNhcGl0YWxpemVGaXJzdExldHRlcih3b3JkLnZhbHVlKTtcbiAgICAgIHJldHVybiB7IHdvcmQ6IHsgLi4ud29yZCwgdmFsdWU6IGMsIGhpdDogYyB9LCB2YWx1ZTogYywgYWxpYXM6IGZhbHNlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdvcmQ6IHsgLi4ud29yZCwgaGl0OiB3b3JkLnZhbHVlIH0sXG4gICAgICAgIHZhbHVlOiB3b3JkLnZhbHVlLFxuICAgICAgICBhbGlhczogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG1hdGNoZWRBbGlhc1N0YXJ0cyA9IHdvcmQuYWxpYXNlcz8uZmluZCgoYSkgPT5cbiAgICBsb3dlclN0YXJ0c1dpdGgoYSwgcXVlcnkpXG4gICk7XG4gIGlmIChtYXRjaGVkQWxpYXNTdGFydHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgd29yZDogeyAuLi53b3JkLCBoaXQ6IG1hdGNoZWRBbGlhc1N0YXJ0cyB9LFxuICAgICAgdmFsdWU6IG1hdGNoZWRBbGlhc1N0YXJ0cyxcbiAgICAgIGFsaWFzOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBpZiAobG93ZXJJbmNsdWRlcyh3b3JkLnZhbHVlLCBxdWVyeSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgd29yZDogeyAuLi53b3JkLCBoaXQ6IHdvcmQudmFsdWUgfSxcbiAgICAgIHZhbHVlOiB3b3JkLnZhbHVlLFxuICAgICAgYWxpYXM6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBtYXRjaGVkQWxpYXNJbmNsdWRlZCA9IHdvcmQuYWxpYXNlcz8uZmluZCgoYSkgPT5cbiAgICBsb3dlckluY2x1ZGVzKGEsIHF1ZXJ5KVxuICApO1xuICBpZiAobWF0Y2hlZEFsaWFzSW5jbHVkZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgd29yZDogeyAuLi53b3JkLCBoaXQ6IG1hdGNoZWRBbGlhc0luY2x1ZGVkIH0sXG4gICAgICB2YWx1ZTogbWF0Y2hlZEFsaWFzSW5jbHVkZWQsXG4gICAgICBhbGlhczogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHsgd29yZDogd29yZCwgYWxpYXM6IGZhbHNlIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWdnZXN0V29yZHNCeVBhcnRpYWxNYXRjaChcbiAgaW5kZXhlZFdvcmRzOiBJbmRleGVkV29yZHMsXG4gIHF1ZXJ5OiBzdHJpbmcsXG4gIG1heDogbnVtYmVyLFxuICBvcHRpb246IHtcbiAgICBmcm9udE1hdHRlcj86IHN0cmluZztcbiAgICBzZWxlY3Rpb25IaXN0b3J5U3RvcmFnZT86IFNlbGVjdGlvbkhpc3RvcnlTdG9yYWdlO1xuICB9ID0ge31cbik6IFdvcmRbXSB7XG4gIGNvbnN0IHsgZnJvbnRNYXR0ZXIsIHNlbGVjdGlvbkhpc3RvcnlTdG9yYWdlIH0gPSBvcHRpb247XG4gIGNvbnN0IHF1ZXJ5U3RhcnRXaXRoVXBwZXIgPSBjYXBpdGFsaXplRmlyc3RMZXR0ZXIocXVlcnkpID09PSBxdWVyeTtcblxuICBjb25zdCBmbGF0T2JqZWN0VmFsdWVzID0gKG9iamVjdDogeyBbZmlyc3RMZXR0ZXI6IHN0cmluZ106IFdvcmRbXSB9KSA9PlxuICAgIE9iamVjdC52YWx1ZXMob2JqZWN0KS5mbGF0KCk7XG5cbiAgY29uc3QgZmxhdHRlbkZyb250TWF0dGVyV29yZHMgPSAoKSA9PiB7XG4gICAgaWYgKGZyb250TWF0dGVyID09PSBcImFsaWFzXCIgfHwgZnJvbnRNYXR0ZXIgPT09IFwiYWxpYXNlc1wiKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGlmIChmcm9udE1hdHRlciAmJiBpbmRleGVkV29yZHMuZnJvbnRNYXR0ZXI/Lltmcm9udE1hdHRlcl0pIHtcbiAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKGluZGV4ZWRXb3Jkcy5mcm9udE1hdHRlcj8uW2Zyb250TWF0dGVyXSkuZmxhdCgpO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH07XG5cbiAgY29uc3Qgd29yZHMgPSBmcm9udE1hdHRlclxuICAgID8gZmxhdHRlbkZyb250TWF0dGVyV29yZHMoKVxuICAgIDogW1xuICAgICAgICAuLi5mbGF0T2JqZWN0VmFsdWVzKGluZGV4ZWRXb3Jkcy5jdXJyZW50RmlsZSksXG4gICAgICAgIC4uLmZsYXRPYmplY3RWYWx1ZXMoaW5kZXhlZFdvcmRzLmN1cnJlbnRWYXVsdCksXG4gICAgICAgIC4uLmZsYXRPYmplY3RWYWx1ZXMoaW5kZXhlZFdvcmRzLmN1c3RvbURpY3Rpb25hcnkpLFxuICAgICAgICAuLi5mbGF0T2JqZWN0VmFsdWVzKGluZGV4ZWRXb3Jkcy5pbnRlcm5hbExpbmspLFxuICAgICAgXTtcblxuICBjb25zdCBjYW5kaWRhdGUgPSBBcnJheS5mcm9tKHdvcmRzKVxuICAgIC5tYXAoKHgpID0+IGp1ZGdlQnlQYXJ0aWFsTWF0Y2goeCwgcXVlcnksIHF1ZXJ5U3RhcnRXaXRoVXBwZXIpKVxuICAgIC5maWx0ZXIoKHgpID0+IHgudmFsdWUgIT09IHVuZGVmaW5lZClcbiAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgY29uc3QgYVdvcmQgPSBhLndvcmQgYXMgSGl0V29yZDtcbiAgICAgIGNvbnN0IGJXb3JkID0gYi53b3JkIGFzIEhpdFdvcmQ7XG5cbiAgICAgIGNvbnN0IG5vdFNhbWVXb3JkVHlwZSA9IGFXb3JkLnR5cGUgIT09IGJXb3JkLnR5cGU7XG4gICAgICBpZiAoZnJvbnRNYXR0ZXIgJiYgbm90U2FtZVdvcmRUeXBlKSB7XG4gICAgICAgIHJldHVybiBiV29yZC50eXBlID09PSBcImZyb250TWF0dGVyXCIgPyAxIDogLTE7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxlY3Rpb25IaXN0b3J5U3RvcmFnZSkge1xuICAgICAgICBjb25zdCByZXQgPSBzZWxlY3Rpb25IaXN0b3J5U3RvcmFnZS5jb21wYXJlKFxuICAgICAgICAgIGFXb3JkIGFzIEhpdFdvcmQsXG4gICAgICAgICAgYldvcmQgYXMgSGl0V29yZFxuICAgICAgICApO1xuICAgICAgICBpZiAocmV0ICE9PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBhcyA9IGxvd2VyU3RhcnRzV2l0aChhLnZhbHVlISwgcXVlcnkpO1xuICAgICAgY29uc3QgYnMgPSBsb3dlclN0YXJ0c1dpdGgoYi52YWx1ZSEsIHF1ZXJ5KTtcbiAgICAgIGlmIChhcyAhPT0gYnMpIHtcbiAgICAgICAgcmV0dXJuIGJzID8gMSA6IC0xO1xuICAgICAgfVxuXG4gICAgICBpZiAoYS52YWx1ZSEubGVuZ3RoICE9PSBiLnZhbHVlIS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGEudmFsdWUhLmxlbmd0aCA+IGIudmFsdWUhLmxlbmd0aCA/IDEgOiAtMTtcbiAgICAgIH1cbiAgICAgIGlmIChub3RTYW1lV29yZFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIFdvcmRUeXBlTWV0YS5vZihiV29yZC50eXBlKS5wcmlvcml0eSA+XG4gICAgICAgICAgV29yZFR5cGVNZXRhLm9mKGFXb3JkLnR5cGUpLnByaW9yaXR5XG4gICAgICAgICAgPyAxXG4gICAgICAgICAgOiAtMTtcbiAgICAgIH1cbiAgICAgIGlmIChhLmFsaWFzICE9PSBiLmFsaWFzKSB7XG4gICAgICAgIHJldHVybiBhLmFsaWFzID8gMSA6IC0xO1xuICAgICAgfVxuICAgICAgcmV0dXJuIDA7XG4gICAgfSlcbiAgICAubWFwKCh4KSA9PiB4LndvcmQpXG4gICAgLnNsaWNlKDAsIG1heCk7XG5cbiAgLy8gWFhYOiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBlcXVhbHMgd2l0aCBtYXgsIGJ1dCBpdCBpcyBpbXBvcnRhbnQgZm9yIHBlcmZvcm1hbmNlXG4gIHJldHVybiB1bmlxV2l0aChcbiAgICBjYW5kaWRhdGUsXG4gICAgKGEsIGIpID0+XG4gICAgICBhLnZhbHVlID09PSBiLnZhbHVlICYmXG4gICAgICBXb3JkVHlwZU1ldGEub2YoYS50eXBlKS5ncm91cCA9PT0gV29yZFR5cGVNZXRhLm9mKGIudHlwZSkuZ3JvdXBcbiAgKTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBiYXNlbmFtZShwYXRoOiBzdHJpbmcsIGV4dD86IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG5hbWUgPSBwYXRoLm1hdGNoKC8uK1tcXFxcL10oW15cXFxcL10rKVtcXFxcL10/JC8pPy5bMV0gPz8gcGF0aDtcbiAgcmV0dXJuIGV4dCAmJiBuYW1lLmVuZHNXaXRoKGV4dCkgPyBuYW1lLnJlcGxhY2UoZXh0LCBcIlwiKSA6IG5hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRuYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGV4dCA9IGJhc2VuYW1lKHBhdGgpLnNwbGl0KFwiLlwiKS5zbGljZSgxKS5wb3AoKTtcbiAgcmV0dXJuIGV4dCA/IGAuJHtleHR9YCA6IFwiXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXJuYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBwYXRoLm1hdGNoKC8oLispW1xcXFwvXS4rJC8pPy5bMV0gPz8gXCIuXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1VSTChwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIEJvb2xlYW4ocGF0aC5tYXRjaChuZXcgUmVnRXhwKFwiXmh0dHBzPzovL1wiKSkpO1xufVxuIiwiaW1wb3J0IHsgQXBwLCBGaWxlU3lzdGVtQWRhcHRlciwgTm90aWNlLCByZXF1ZXN0IH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBwdXNoV29yZCwgdHlwZSBXb3Jkc0J5Rmlyc3RMZXR0ZXIgfSBmcm9tIFwiLi9zdWdnZXN0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQ29sdW1uRGVsaW1pdGVyIH0gZnJvbSBcIi4uL29wdGlvbi9Db2x1bW5EZWxpbWl0ZXJcIjtcbmltcG9ydCB7IGlzVVJMIH0gZnJvbSBcIi4uL3V0aWwvcGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21EaWN0aW9uYXJ5V29yZCB9IGZyb20gXCIuLi9tb2RlbC9Xb3JkXCI7XG5pbXBvcnQgeyBleGNsdWRlRW1vamkgfSBmcm9tIFwiLi4vdXRpbC9zdHJpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IEFwcEhlbHBlciB9IGZyb20gXCIuLi9hcHAtaGVscGVyXCI7XG5cbnR5cGUgSnNvbkRpY3Rpb25hcnkgPSB7XG4gIC8qKiBJZiBzZXQsIHRha2UgcHJlY2VkZW5jZSBvdmVyIFtcIkNhcmV0IGxvY2F0aW9uIHN5bWJvbCBhZnRlciBjb21wbGVtZW50XCJdKGh0dHBzOi8vdGFkYXNoaS1haWthd2EuZ2l0aHViLmlvL2RvY3Mtb2JzaWRpYW4tdmFyaW91cy1jb21wbGVtZW50cy1wbHVnaW4vNC4lMjBPcHRpb25zLzQuNi4lMjBDdXN0b20lMjBkaWN0aW9uYXJ5JTIwY29tcGxlbWVudC8lRTIlOUElOTklRUYlQjglOEZDYXJldCUyMGxvY2F0aW9uJTIwc3ltYm9sJTIwYWZ0ZXIlMjBjb21wbGVtZW50LykgKi9cbiAgY2FyZXRTeW1ib2w/OiBzdHJpbmc7XG4gIC8qKiBJZiBzZXQsIGlnbm9yZSBbXCJJbnNlcnQgc3BhY2UgYWZ0ZXIgY29tcGxldGlvblwiXShodHRwczovL3RhZGFzaGktYWlrYXdhLmdpdGh1Yi5pby9kb2NzLW9ic2lkaWFuLXZhcmlvdXMtY29tcGxlbWVudHMtcGx1Z2luLzQuJTIwT3B0aW9ucy80LjEuJTIwTWFpbi8lRTIlOUElOTklRUYlQjglOEZJbnNlcnQlMjBzcGFjZSUyMGFmdGVyJTIwY29tcGxldGlvbi8pICovXG4gIGlnbm9yZVNwYWNlQWZ0ZXJDb21wbGV0aW9uPzogYm9vbGVhbjtcbiAgd29yZHM6IHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGFsaWFzZXM/OiBzdHJpbmdbXTtcbiAgICAvKiogSWYgc2V0LCB1c2UgdGhpcyB2YWx1ZSBmb3Igc2VhcmNoaW5nIGFuZCByZW5kZXJpbmcgaW5zdGVhZCBvZiBgdmFsdWVgICovXG4gICAgZGlzcGxheWVkPzogc3RyaW5nO1xuICB9W107XG59O1xuXG5mdW5jdGlvbiBlc2NhcGUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFRoaXMgdHJpY2t5IGxvZ2ljcyBmb3IgU2FmYXJpXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YWRhc2hpLWFpa2F3YS9vYnNpZGlhbi12YXJpb3VzLWNvbXBsZW1lbnRzLXBsdWdpbi9pc3N1ZXMvNTZcbiAgcmV0dXJuIHZhbHVlXG4gICAgLnJlcGxhY2UoL1xcXFwvZywgXCJfX1ZhcmlvdXNDb21wbGVtZW50c0VzY2FwZV9fXCIpXG4gICAgLnJlcGxhY2UoL1xcbi9nLCBcIlxcXFxuXCIpXG4gICAgLnJlcGxhY2UoL1xcdC9nLCBcIlxcXFx0XCIpXG4gICAgLnJlcGxhY2UoL19fVmFyaW91c0NvbXBsZW1lbnRzRXNjYXBlX18vZywgXCJcXFxcXFxcXFwiKTtcbn1cblxuZnVuY3Rpb24gdW5lc2NhcGUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFRoaXMgdHJpY2t5IGxvZ2ljcyBmb3IgU2FmYXJpXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YWRhc2hpLWFpa2F3YS9vYnNpZGlhbi12YXJpb3VzLWNvbXBsZW1lbnRzLXBsdWdpbi9pc3N1ZXMvNTZcbiAgcmV0dXJuIHZhbHVlXG4gICAgLnJlcGxhY2UoL1xcXFxcXFxcL2csIFwiX19WYXJpb3VzQ29tcGxlbWVudHNFc2NhcGVfX1wiKVxuICAgIC5yZXBsYWNlKC9cXFxcbi9nLCBcIlxcblwiKVxuICAgIC5yZXBsYWNlKC9cXFxcdC9nLCBcIlxcdFwiKVxuICAgIC5yZXBsYWNlKC9fX1ZhcmlvdXNDb21wbGVtZW50c0VzY2FwZV9fL2csIFwiXFxcXFwiKTtcbn1cblxuZnVuY3Rpb24ganNvblRvV29yZHMoXG4gIGpzb246IEpzb25EaWN0aW9uYXJ5LFxuICBwYXRoOiBzdHJpbmcsXG4gIHN5c3RlbUNhcmV0U3ltYm9sPzogc3RyaW5nXG4pOiBDdXN0b21EaWN0aW9uYXJ5V29yZFtdIHtcbiAgcmV0dXJuIGpzb24ud29yZHMubWFwKCh4KSA9PiAoe1xuICAgIHZhbHVlOiB4LmRpc3BsYXllZCB8fCB4LnZhbHVlLFxuICAgIGRlc2NyaXB0aW9uOiB4LmRlc2NyaXB0aW9uLFxuICAgIGFsaWFzZXM6IHguYWxpYXNlcyxcbiAgICB0eXBlOiBcImN1c3RvbURpY3Rpb25hcnlcIixcbiAgICBjcmVhdGVkUGF0aDogcGF0aCxcbiAgICBpbnNlcnRlZFRleHQ6IHguZGlzcGxheWVkID8geC52YWx1ZSA6IHVuZGVmaW5lZCxcbiAgICBjYXJldFN5bWJvbDoganNvbi5jYXJldFN5bWJvbCA/PyBzeXN0ZW1DYXJldFN5bWJvbCxcbiAgICBpZ25vcmVTcGFjZUFmdGVyQ29tcGxldGlvbjoganNvbi5pZ25vcmVTcGFjZUFmdGVyQ29tcGxldGlvbixcbiAgfSkpO1xufVxuXG5mdW5jdGlvbiBsaW5lVG9Xb3JkKFxuICBsaW5lOiBzdHJpbmcsXG4gIGRlbGltaXRlcjogQ29sdW1uRGVsaW1pdGVyLFxuICBwYXRoOiBzdHJpbmcsXG4gIGRlbGltaXRlckZvckRpc3BsYXk/OiBzdHJpbmcsXG4gIGRlbGltaXRlckZvckhpZGU/OiBzdHJpbmcsXG4gIHN5c3RlbUNhcmV0U3ltYm9sPzogc3RyaW5nXG4pOiBDdXN0b21EaWN0aW9uYXJ5V29yZCB7XG4gIGNvbnN0IFt2LCBkZXNjcmlwdGlvbiwgLi4uYWxpYXNlc10gPSBsaW5lLnNwbGl0KGRlbGltaXRlci52YWx1ZSk7XG5cbiAgbGV0IHZhbHVlID0gdW5lc2NhcGUodik7XG4gIGxldCBpbnNlcnRlZFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbGV0IGRpc3BsYXllZFRleHQgPSB2YWx1ZTtcblxuICBpZiAoZGVsaW1pdGVyRm9yRGlzcGxheSAmJiB2YWx1ZS5pbmNsdWRlcyhkZWxpbWl0ZXJGb3JEaXNwbGF5KSkge1xuICAgIFtkaXNwbGF5ZWRUZXh0LCBpbnNlcnRlZFRleHRdID0gdmFsdWUuc3BsaXQoZGVsaW1pdGVyRm9yRGlzcGxheSk7XG4gIH1cbiAgaWYgKGRlbGltaXRlckZvckhpZGUgJiYgdmFsdWUuaW5jbHVkZXMoZGVsaW1pdGVyRm9ySGlkZSkpIHtcbiAgICBpbnNlcnRlZFRleHQgPSB2YWx1ZS5yZXBsYWNlKGRlbGltaXRlckZvckhpZGUsIFwiXCIpO1xuICAgIGRpc3BsYXllZFRleHQgPSBgJHt2YWx1ZS5zcGxpdChkZWxpbWl0ZXJGb3JIaWRlKVswXX0gLi4uYDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdmFsdWU6IGRpc3BsYXllZFRleHQsXG4gICAgZGVzY3JpcHRpb24sXG4gICAgYWxpYXNlcyxcbiAgICB0eXBlOiBcImN1c3RvbURpY3Rpb25hcnlcIixcbiAgICBjcmVhdGVkUGF0aDogcGF0aCxcbiAgICBpbnNlcnRlZFRleHQsXG4gICAgY2FyZXRTeW1ib2w6IHN5c3RlbUNhcmV0U3ltYm9sLFxuICB9O1xufVxuXG5mdW5jdGlvbiB3b3JkVG9MaW5lKFxuICB3b3JkOiBDdXN0b21EaWN0aW9uYXJ5V29yZCxcbiAgZGVsaW1pdGVyOiBDb2x1bW5EZWxpbWl0ZXIsXG4gIGRpdmlkZXJGb3JEaXNwbGF5OiBzdHJpbmcgfCBudWxsXG4pOiBzdHJpbmcge1xuICBjb25zdCB2YWx1ZSA9XG4gICAgd29yZC5pbnNlcnRlZFRleHQgJiYgZGl2aWRlckZvckRpc3BsYXlcbiAgICAgID8gYCR7d29yZC52YWx1ZX0ke2RpdmlkZXJGb3JEaXNwbGF5fSR7d29yZC5pbnNlcnRlZFRleHR9YFxuICAgICAgOiB3b3JkLnZhbHVlO1xuXG4gIGNvbnN0IGVzY2FwZWRWYWx1ZSA9IGVzY2FwZSh2YWx1ZSk7XG4gIGlmICghd29yZC5kZXNjcmlwdGlvbiAmJiAhd29yZC5hbGlhc2VzKSB7XG4gICAgcmV0dXJuIGVzY2FwZWRWYWx1ZTtcbiAgfVxuICBpZiAoIXdvcmQuYWxpYXNlcykge1xuICAgIHJldHVybiBbZXNjYXBlZFZhbHVlLCB3b3JkLmRlc2NyaXB0aW9uXS5qb2luKGRlbGltaXRlci52YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIFtlc2NhcGVkVmFsdWUsIHdvcmQuZGVzY3JpcHRpb24sIC4uLndvcmQuYWxpYXNlc10uam9pbihcbiAgICBkZWxpbWl0ZXIudmFsdWVcbiAgKTtcbn1cblxuZnVuY3Rpb24gc3lub255bUFsaWFzZXMobmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICBjb25zdCBsZXNzRW1vamlWYWx1ZSA9IGV4Y2x1ZGVFbW9qaShuYW1lKTtcbiAgcmV0dXJuIG5hbWUgPT09IGxlc3NFbW9qaVZhbHVlID8gW10gOiBbbGVzc0Vtb2ppVmFsdWVdO1xufVxuXG50eXBlIE9wdGlvbiA9IHtcbiAgcmVnZXhwOiBzdHJpbmc7XG4gIGRlbGltaXRlckZvckhpZGU/OiBzdHJpbmc7XG4gIGRlbGltaXRlckZvckRpc3BsYXk/OiBzdHJpbmc7XG4gIGNhcmV0U3ltYm9sPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGNsYXNzIEN1c3RvbURpY3Rpb25hcnlXb3JkUHJvdmlkZXIge1xuICBwcml2YXRlIHdvcmRzOiBDdXN0b21EaWN0aW9uYXJ5V29yZFtdID0gW107XG4gIHdvcmRCeVZhbHVlOiB7IFt2YWx1ZTogc3RyaW5nXTogQ3VzdG9tRGljdGlvbmFyeVdvcmQgfSA9IHt9O1xuICB3b3Jkc0J5Rmlyc3RMZXR0ZXI6IFdvcmRzQnlGaXJzdExldHRlciA9IHt9O1xuXG4gIHByaXZhdGUgYXBwSGVscGVyOiBBcHBIZWxwZXI7XG4gIHByaXZhdGUgZmlsZVN5c3RlbUFkYXB0ZXI6IEZpbGVTeXN0ZW1BZGFwdGVyO1xuICBwcml2YXRlIHBhdGhzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSBkZWxpbWl0ZXI6IENvbHVtbkRlbGltaXRlcjtcbiAgcHJpdmF0ZSBkaXZpZGVyRm9yRGlzcGxheTogc3RyaW5nIHwgbnVsbDtcblxuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgYXBwSGVscGVyOiBBcHBIZWxwZXIpIHtcbiAgICB0aGlzLmFwcEhlbHBlciA9IGFwcEhlbHBlcjtcbiAgICB0aGlzLmZpbGVTeXN0ZW1BZGFwdGVyID0gYXBwLnZhdWx0LmFkYXB0ZXIgYXMgRmlsZVN5c3RlbUFkYXB0ZXI7XG4gIH1cblxuICBnZXQgZWRpdGFibGVQYXRocygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aHMuZmlsdGVyKCh4KSA9PiAhaXNVUkwoeCkgJiYgIXguZW5kc1dpdGgoXCIuanNvblwiKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRXb3JkcyhcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9uOiBPcHRpb25cbiAgKTogUHJvbWlzZTxDdXN0b21EaWN0aW9uYXJ5V29yZFtdPiB7XG4gICAgY29uc3QgY29udGVudHMgPSBpc1VSTChwYXRoKVxuICAgICAgPyBhd2FpdCByZXF1ZXN0KHsgdXJsOiBwYXRoIH0pXG4gICAgICA6IGF3YWl0IHRoaXMuZmlsZVN5c3RlbUFkYXB0ZXIucmVhZChwYXRoKTtcblxuICAgIGNvbnN0IHdvcmRzID0gcGF0aC5lbmRzV2l0aChcIi5qc29uXCIpXG4gICAgICA/IGpzb25Ub1dvcmRzKEpTT04ucGFyc2UoY29udGVudHMpLCBwYXRoLCBvcHRpb24uY2FyZXRTeW1ib2wpXG4gICAgICA6IGNvbnRlbnRzXG4gICAgICAgICAgLnNwbGl0KC9cXHJcXG58XFxuLylcbiAgICAgICAgICAubWFwKCh4KSA9PiB4LnJlcGxhY2UoLyUlLiolJS9nLCBcIlwiKSlcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4KVxuICAgICAgICAgIC5tYXAoKHgpID0+XG4gICAgICAgICAgICBsaW5lVG9Xb3JkKFxuICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICB0aGlzLmRlbGltaXRlcixcbiAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgb3B0aW9uLmRlbGltaXRlckZvckRpc3BsYXksXG4gICAgICAgICAgICAgIG9wdGlvbi5kZWxpbWl0ZXJGb3JIaWRlLFxuICAgICAgICAgICAgICBvcHRpb24uY2FyZXRTeW1ib2xcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuXG4gICAgcmV0dXJuIHdvcmRzLmZpbHRlcihcbiAgICAgICh4KSA9PiAhb3B0aW9uLnJlZ2V4cCB8fCB4LnZhbHVlLm1hdGNoKG5ldyBSZWdFeHAob3B0aW9uLnJlZ2V4cCkpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2hDdXN0b21Xb3JkcyhvcHRpb246IE9wdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY2xlYXJXb3JkcygpO1xuXG4gICAgZm9yIChjb25zdCBwYXRoIG9mIHRoaXMucGF0aHMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHdvcmRzID0gYXdhaXQgdGhpcy5sb2FkV29yZHMocGF0aCwgb3B0aW9uKTtcbiAgICAgICAgd29yZHMuZm9yRWFjaCgoeCkgPT4gdGhpcy5hZGRXb3JkKHgpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gbm9pbnNwZWN0aW9uIE9iamVjdEFsbG9jYXRpb25JZ25vcmVkXG4gICAgICAgIG5ldyBOb3RpY2UoXG4gICAgICAgICAgYOKaoCBGYWlsIHRvIGxvYWQgJHtwYXRofSAtLSBWYXJpb3VzIENvbXBsZW1lbnRzIFBsdWdpbiAtLSBcXG4gJHtlfWAsXG4gICAgICAgICAgMFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGFkZFdvcmRXaXRoRGljdGlvbmFyeShcbiAgICB3b3JkOiBDdXN0b21EaWN0aW9uYXJ5V29yZCxcbiAgICBkaWN0aW9uYXJ5UGF0aDogc3RyaW5nXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuYWRkV29yZCh3b3JkKTtcbiAgICBhd2FpdCB0aGlzLmZpbGVTeXN0ZW1BZGFwdGVyLmFwcGVuZChcbiAgICAgIGRpY3Rpb25hcnlQYXRoLFxuICAgICAgXCJcXG5cIiArIHdvcmRUb0xpbmUod29yZCwgdGhpcy5kZWxpbWl0ZXIsIHRoaXMuZGl2aWRlckZvckRpc3BsYXkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkV29yZCh3b3JkOiBDdXN0b21EaWN0aW9uYXJ5V29yZCkge1xuICAgIHRoaXMud29yZHMucHVzaCh3b3JkKTtcblxuICAgIC8vIEFkZCBhbGlhc2VzIGFzIGEgc3lub255bVxuICAgIGNvbnN0IHdvcmRXaXRoU3lub255bSA9IHtcbiAgICAgIC4uLndvcmQsXG4gICAgICBhbGlhc2VzOiBbLi4uKHdvcmQuYWxpYXNlcyA/PyBbXSksIC4uLnN5bm9ueW1BbGlhc2VzKHdvcmQudmFsdWUpXSxcbiAgICB9O1xuXG4gICAgdGhpcy53b3JkQnlWYWx1ZVt3b3JkV2l0aFN5bm9ueW0udmFsdWVdID0gd29yZFdpdGhTeW5vbnltO1xuICAgIHB1c2hXb3JkKFxuICAgICAgdGhpcy53b3Jkc0J5Rmlyc3RMZXR0ZXIsXG4gICAgICB3b3JkV2l0aFN5bm9ueW0udmFsdWUuY2hhckF0KDApLFxuICAgICAgd29yZFdpdGhTeW5vbnltXG4gICAgKTtcbiAgICB3b3JkV2l0aFN5bm9ueW0uYWxpYXNlcz8uZm9yRWFjaCgoYSkgPT5cbiAgICAgIHB1c2hXb3JkKHRoaXMud29yZHNCeUZpcnN0TGV0dGVyLCBhLmNoYXJBdCgwKSwgd29yZFdpdGhTeW5vbnltKVxuICAgICk7XG4gIH1cblxuICBjbGVhcldvcmRzKCk6IHZvaWQge1xuICAgIHRoaXMud29yZHMgPSBbXTtcbiAgICB0aGlzLndvcmRCeVZhbHVlID0ge307XG4gICAgdGhpcy53b3Jkc0J5Rmlyc3RMZXR0ZXIgPSB7fTtcbiAgfVxuXG4gIGdldCB3b3JkQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy53b3Jkcy5sZW5ndGg7XG4gIH1cblxuICBzZXRTZXR0aW5ncyhcbiAgICBwYXRoczogc3RyaW5nW10sXG4gICAgZGVsaW1pdGVyOiBDb2x1bW5EZWxpbWl0ZXIsXG4gICAgZGl2aWRlckZvckRpc3BsYXk6IHN0cmluZyB8IG51bGxcbiAgKSB7XG4gICAgdGhpcy5wYXRocyA9IHBhdGhzO1xuICAgIHRoaXMuZGVsaW1pdGVyID0gZGVsaW1pdGVyO1xuICAgIHRoaXMuZGl2aWRlckZvckRpc3BsYXkgPSBkaXZpZGVyRm9yRGlzcGxheTtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IGdyb3VwQnksIHVuaXEgfSBmcm9tIFwiLi4vdXRpbC9jb2xsZWN0aW9uLWhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBXb3Jkc0J5Rmlyc3RMZXR0ZXIgfSBmcm9tIFwiLi9zdWdnZXN0ZXJcIjtcbmltcG9ydCB0eXBlIHsgVG9rZW5pemVyIH0gZnJvbSBcIi4uL3Rva2VuaXplci90b2tlbml6ZXJcIjtcbmltcG9ydCB0eXBlIHsgQXBwSGVscGVyIH0gZnJvbSBcIi4uL2FwcC1oZWxwZXJcIjtcbmltcG9ydCB7IGFsbEFscGhhYmV0cywgc3RhcnRzU21hbGxMZXR0ZXJPbmx5Rmlyc3QgfSBmcm9tIFwiLi4vdXRpbC9zdHJpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IFdvcmQgfSBmcm9tIFwiLi4vbW9kZWwvV29yZFwiO1xuXG5leHBvcnQgY2xhc3MgQ3VycmVudEZpbGVXb3JkUHJvdmlkZXIge1xuICB3b3Jkc0J5Rmlyc3RMZXR0ZXI6IFdvcmRzQnlGaXJzdExldHRlciA9IHt9O1xuICBwcml2YXRlIHdvcmRzOiBXb3JkW10gPSBbXTtcbiAgcHJpdmF0ZSB0b2tlbml6ZXI6IFRva2VuaXplcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwcDogQXBwLCBwcml2YXRlIGFwcEhlbHBlcjogQXBwSGVscGVyKSB7fVxuXG4gIGFzeW5jIHJlZnJlc2hXb3JkcyhcbiAgICBvbmx5RW5nbGlzaDogYm9vbGVhbixcbiAgICBtaW5OdW1iZXJPZkNoYXJhY3RlcnM6IG51bWJlclxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNsZWFyV29yZHMoKTtcblxuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuYXBwSGVscGVyLmdldEN1cnJlbnRFZGl0b3IoKTtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGUgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpO1xuICAgIGlmICghZmlsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRUb2tlbiA9IHRoaXMudG9rZW5pemVyXG4gICAgICAudG9rZW5pemUoXG4gICAgICAgIGVkaXRvci5nZXRMaW5lKGVkaXRvci5nZXRDdXJzb3IoKS5saW5lKS5zbGljZSgwLCBlZGl0b3IuZ2V0Q3Vyc29yKCkuY2gpXG4gICAgICApXG4gICAgICAubGFzdCgpO1xuXG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IHRoaXMuYXBwLnZhdWx0LmNhY2hlZFJlYWQoZmlsZSk7XG4gICAgY29uc3QgdG9rZW5zID0gdGhpcy50b2tlbml6ZXJcbiAgICAgIC50b2tlbml6ZShjb250ZW50KVxuICAgICAgLmZpbHRlcigoeCkgPT4ge1xuICAgICAgICBpZiAoeC5sZW5ndGggPCBtaW5OdW1iZXJPZkNoYXJhY3RlcnMpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudG9rZW5pemVyLnNob3VsZElnbm9yZU9uQ3VycmVudCh4KSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb25seUVuZ2xpc2ggPyBhbGxBbHBoYWJldHMoeCkgOiB0cnVlO1xuICAgICAgfSlcbiAgICAgIC5tYXAoKHgpID0+IChzdGFydHNTbWFsbExldHRlck9ubHlGaXJzdCh4KSA/IHgudG9Mb3dlckNhc2UoKSA6IHgpKTtcbiAgICB0aGlzLndvcmRzID0gdW5pcSh0b2tlbnMpXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4ICE9PSBjdXJyZW50VG9rZW4pXG4gICAgICAubWFwKCh4KSA9PiAoe1xuICAgICAgICB2YWx1ZTogeCxcbiAgICAgICAgdHlwZTogXCJjdXJyZW50RmlsZVwiLFxuICAgICAgICBjcmVhdGVkUGF0aDogZmlsZS5wYXRoLFxuICAgICAgfSkpO1xuICAgIHRoaXMud29yZHNCeUZpcnN0TGV0dGVyID0gZ3JvdXBCeSh0aGlzLndvcmRzLCAoeCkgPT4geC52YWx1ZS5jaGFyQXQoMCkpO1xuICB9XG5cbiAgY2xlYXJXb3JkcygpOiB2b2lkIHtcbiAgICB0aGlzLndvcmRzID0gW107XG4gICAgdGhpcy53b3Jkc0J5Rmlyc3RMZXR0ZXIgPSB7fTtcbiAgfVxuXG4gIGdldCB3b3JkQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy53b3Jkcy5sZW5ndGg7XG4gIH1cblxuICBzZXRTZXR0aW5ncyh0b2tlbml6ZXI6IFRva2VuaXplcikge1xuICAgIHRoaXMudG9rZW5pemVyID0gdG9rZW5pemVyO1xuICB9XG59XG4iLCJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgcHVzaFdvcmQsIHR5cGUgV29yZHNCeUZpcnN0TGV0dGVyIH0gZnJvbSBcIi4vc3VnZ2VzdGVyXCI7XG5pbXBvcnQgdHlwZSB7IEFwcEhlbHBlciB9IGZyb20gXCIuLi9hcHAtaGVscGVyXCI7XG5pbXBvcnQgeyBleGNsdWRlRW1vamkgfSBmcm9tIFwiLi4vdXRpbC9zdHJpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTGlua1dvcmQsIFdvcmQgfSBmcm9tIFwiLi4vbW9kZWwvV29yZFwiO1xuXG5leHBvcnQgY2xhc3MgSW50ZXJuYWxMaW5rV29yZFByb3ZpZGVyIHtcbiAgcHJpdmF0ZSB3b3JkczogV29yZFtdID0gW107XG4gIHdvcmRzQnlGaXJzdExldHRlcjogV29yZHNCeUZpcnN0TGV0dGVyID0ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHA6IEFwcCwgcHJpdmF0ZSBhcHBIZWxwZXI6IEFwcEhlbHBlcikge31cblxuICByZWZyZXNoV29yZHMoXG4gICAgd29yZEFzSW50ZXJuYWxMaW5rQWxpYXM6IGJvb2xlYW4sXG4gICAgZXhjbHVkZVBhdGhQcmVmaXhQYXR0ZXJuczogc3RyaW5nW11cbiAgKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhcldvcmRzKCk7XG5cbiAgICBjb25zdCBzeW5vbnltQWxpYXNlcyA9IChuYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSA9PiB7XG4gICAgICBjb25zdCBsZXNzRW1vamlWYWx1ZSA9IGV4Y2x1ZGVFbW9qaShuYW1lKTtcbiAgICAgIHJldHVybiBuYW1lID09PSBsZXNzRW1vamlWYWx1ZSA/IFtdIDogW2xlc3NFbW9qaVZhbHVlXTtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzb2x2ZWRJbnRlcm5hbExpbmtXb3JkczogSW50ZXJuYWxMaW5rV29yZFtdID0gdGhpcy5hcHAudmF1bHRcbiAgICAgIC5nZXRNYXJrZG93bkZpbGVzKClcbiAgICAgIC5maWx0ZXIoKGYpID0+XG4gICAgICAgIGV4Y2x1ZGVQYXRoUHJlZml4UGF0dGVybnMuZXZlcnkoKHgpID0+ICFmLnBhdGguc3RhcnRzV2l0aCh4KSlcbiAgICAgIClcbiAgICAgIC5mbGF0TWFwKCh4KSA9PiB7XG4gICAgICAgIGNvbnN0IGFsaWFzZXMgPSB0aGlzLmFwcEhlbHBlci5nZXRBbGlhc2VzKHgpO1xuXG4gICAgICAgIGlmICh3b3JkQXNJbnRlcm5hbExpbmtBbGlhcykge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHZhbHVlOiB4LmJhc2VuYW1lLFxuICAgICAgICAgICAgICB0eXBlOiBcImludGVybmFsTGlua1wiLFxuICAgICAgICAgICAgICBjcmVhdGVkUGF0aDogeC5wYXRoLFxuICAgICAgICAgICAgICBhbGlhc2VzOiBzeW5vbnltQWxpYXNlcyh4LmJhc2VuYW1lKSxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHgucGF0aCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAuLi5hbGlhc2VzLm1hcCgoYSkgPT4gKHtcbiAgICAgICAgICAgICAgdmFsdWU6IGEsXG4gICAgICAgICAgICAgIHR5cGU6IFwiaW50ZXJuYWxMaW5rXCIsXG4gICAgICAgICAgICAgIGNyZWF0ZWRQYXRoOiB4LnBhdGgsXG4gICAgICAgICAgICAgIGFsaWFzZXM6IHN5bm9ueW1BbGlhc2VzKGEpLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogeC5wYXRoLFxuICAgICAgICAgICAgICBhbGlhc01ldGE6IHtcbiAgICAgICAgICAgICAgICBvcmlnaW46IHguYmFzZW5hbWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgXSBhcyBJbnRlcm5hbExpbmtXb3JkW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdmFsdWU6IHguYmFzZW5hbWUsXG4gICAgICAgICAgICAgIHR5cGU6IFwiaW50ZXJuYWxMaW5rXCIsXG4gICAgICAgICAgICAgIGNyZWF0ZWRQYXRoOiB4LnBhdGgsXG4gICAgICAgICAgICAgIGFsaWFzZXM6IFtcbiAgICAgICAgICAgICAgICAuLi5zeW5vbnltQWxpYXNlcyh4LmJhc2VuYW1lKSxcbiAgICAgICAgICAgICAgICAuLi5hbGlhc2VzLFxuICAgICAgICAgICAgICAgIC4uLmFsaWFzZXMuZmxhdE1hcChzeW5vbnltQWxpYXNlcyksXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB4LnBhdGgsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0gYXMgSW50ZXJuYWxMaW5rV29yZFtdO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGNvbnN0IHVucmVzb2x2ZWRJbnRlcm5hbExpbmtXb3JkczogSW50ZXJuYWxMaW5rV29yZFtdID0gdGhpcy5hcHBIZWxwZXJcbiAgICAgIC5zZWFyY2hQaGFudG9tTGlua3MoKVxuICAgICAgLm1hcCgoeyBwYXRoLCBsaW5rIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB2YWx1ZTogbGluayxcbiAgICAgICAgICB0eXBlOiBcImludGVybmFsTGlua1wiLFxuICAgICAgICAgIGNyZWF0ZWRQYXRoOiBwYXRoLFxuICAgICAgICAgIGFsaWFzZXM6IHN5bm9ueW1BbGlhc2VzKGxpbmspLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgQXBwZWFyZWQgaW4gLT4gJHtwYXRofWAsXG4gICAgICAgICAgcGhhbnRvbTogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy53b3JkcyA9IFsuLi5yZXNvbHZlZEludGVybmFsTGlua1dvcmRzLCAuLi51bnJlc29sdmVkSW50ZXJuYWxMaW5rV29yZHNdO1xuICAgIGZvciAoY29uc3Qgd29yZCBvZiB0aGlzLndvcmRzKSB7XG4gICAgICBwdXNoV29yZCh0aGlzLndvcmRzQnlGaXJzdExldHRlciwgd29yZC52YWx1ZS5jaGFyQXQoMCksIHdvcmQpO1xuICAgICAgd29yZC5hbGlhc2VzPy5mb3JFYWNoKChhKSA9PlxuICAgICAgICBwdXNoV29yZCh0aGlzLndvcmRzQnlGaXJzdExldHRlciwgYS5jaGFyQXQoMCksIHdvcmQpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyV29yZHMoKTogdm9pZCB7XG4gICAgdGhpcy53b3JkcyA9IFtdO1xuICAgIHRoaXMud29yZHNCeUZpcnN0TGV0dGVyID0ge307XG4gIH1cblxuICBnZXQgd29yZENvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMud29yZHMubGVuZ3RoO1xuICB9XG59XG4iLCJpbXBvcnQgdHlwZSB7IEluZGV4ZWRXb3JkcyB9IGZyb20gXCIuLi91aS9BdXRvQ29tcGxldGVTdWdnZXN0XCI7XG5pbXBvcnQgeyBzdWdnZXN0V29yZHMsIHN1Z2dlc3RXb3Jkc0J5UGFydGlhbE1hdGNoIH0gZnJvbSBcIi4vc3VnZ2VzdGVyXCI7XG5pbXBvcnQgdHlwZSB7IFdvcmQgfSBmcm9tIFwiLi4vbW9kZWwvV29yZFwiO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3Rpb25IaXN0b3J5U3RvcmFnZSB9IGZyb20gXCIuLi9zdG9yYWdlL1NlbGVjdGlvbkhpc3RvcnlTdG9yYWdlXCI7XG5cbnR5cGUgTmFtZSA9IFwicHJlZml4XCIgfCBcInBhcnRpYWxcIjtcblxudHlwZSBIYW5kbGVyID0gKFxuICBpbmRleGVkV29yZHM6IEluZGV4ZWRXb3JkcyxcbiAgcXVlcnk6IHN0cmluZyxcbiAgbWF4OiBudW1iZXIsXG4gIG9wdGlvbjoge1xuICAgIGZyb250TWF0dGVyPzogc3RyaW5nO1xuICAgIHNlbGVjdGlvbkhpc3RvcnlTdG9yYWdlPzogU2VsZWN0aW9uSGlzdG9yeVN0b3JhZ2U7XG4gIH1cbikgPT4gV29yZFtdO1xuXG5leHBvcnQgY2xhc3MgTWF0Y2hTdHJhdGVneSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF92YWx1ZXM6IE1hdGNoU3RyYXRlZ3lbXSA9IFtdO1xuXG4gIHN0YXRpYyByZWFkb25seSBQUkVGSVggPSBuZXcgTWF0Y2hTdHJhdGVneShcInByZWZpeFwiLCBzdWdnZXN0V29yZHMpO1xuICBzdGF0aWMgcmVhZG9ubHkgUEFSVElBTCA9IG5ldyBNYXRjaFN0cmF0ZWd5KFxuICAgIFwicGFydGlhbFwiLFxuICAgIHN1Z2dlc3RXb3Jkc0J5UGFydGlhbE1hdGNoXG4gICk7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihyZWFkb25seSBuYW1lOiBOYW1lLCByZWFkb25seSBoYW5kbGVyOiBIYW5kbGVyKSB7XG4gICAgTWF0Y2hTdHJhdGVneS5fdmFsdWVzLnB1c2godGhpcyk7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5hbWUobmFtZTogc3RyaW5nKTogTWF0Y2hTdHJhdGVneSB7XG4gICAgcmV0dXJuIE1hdGNoU3RyYXRlZ3kuX3ZhbHVlcy5maW5kKCh4KSA9PiB4Lm5hbWUgPT09IG5hbWUpITtcbiAgfVxuXG4gIHN0YXRpYyB2YWx1ZXMoKTogTWF0Y2hTdHJhdGVneVtdIHtcbiAgICByZXR1cm4gTWF0Y2hTdHJhdGVneS5fdmFsdWVzO1xuICB9XG59XG4iLCJpbXBvcnQgdHlwZSB7IE1vZGlmaWVyIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbnR5cGUgTmFtZSA9XG4gIHwgXCJOb25lXCJcbiAgfCBcIlRhYiwgU2hpZnQrVGFiXCJcbiAgfCBcIkN0cmwvQ21kK04sIEN0cmwvQ21kK1BcIlxuICB8IFwiQ3RybC9DbWQrSiwgQ3RybC9DbWQrS1wiO1xuaW50ZXJmYWNlIEtleUJpbmQge1xuICBtb2RpZmllcnM6IE1vZGlmaWVyW107XG4gIGtleTogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGNsYXNzIEN5Y2xlVGhyb3VnaFN1Z2dlc3Rpb25zS2V5cyB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF92YWx1ZXM6IEN5Y2xlVGhyb3VnaFN1Z2dlc3Rpb25zS2V5c1tdID0gW107XG5cbiAgc3RhdGljIHJlYWRvbmx5IE5PTkUgPSBuZXcgQ3ljbGVUaHJvdWdoU3VnZ2VzdGlvbnNLZXlzKFxuICAgIFwiTm9uZVwiLFxuICAgIHsgbW9kaWZpZXJzOiBbXSwga2V5OiBudWxsIH0sXG4gICAgeyBtb2RpZmllcnM6IFtdLCBrZXk6IG51bGwgfVxuICApO1xuICBzdGF0aWMgcmVhZG9ubHkgVEFCID0gbmV3IEN5Y2xlVGhyb3VnaFN1Z2dlc3Rpb25zS2V5cyhcbiAgICBcIlRhYiwgU2hpZnQrVGFiXCIsXG4gICAgeyBtb2RpZmllcnM6IFtdLCBrZXk6IFwiVGFiXCIgfSxcbiAgICB7IG1vZGlmaWVyczogW1wiU2hpZnRcIl0sIGtleTogXCJUYWJcIiB9XG4gICk7XG4gIHN0YXRpYyByZWFkb25seSBFTUFDUyA9IG5ldyBDeWNsZVRocm91Z2hTdWdnZXN0aW9uc0tleXMoXG4gICAgXCJDdHJsL0NtZCtOLCBDdHJsL0NtZCtQXCIsXG4gICAgeyBtb2RpZmllcnM6IFtcIk1vZFwiXSwga2V5OiBcIk5cIiB9LFxuICAgIHsgbW9kaWZpZXJzOiBbXCJNb2RcIl0sIGtleTogXCJQXCIgfVxuICApO1xuICBzdGF0aWMgcmVhZG9ubHkgVklNID0gbmV3IEN5Y2xlVGhyb3VnaFN1Z2dlc3Rpb25zS2V5cyhcbiAgICBcIkN0cmwvQ21kK0osIEN0cmwvQ21kK0tcIixcbiAgICB7IG1vZGlmaWVyczogW1wiTW9kXCJdLCBrZXk6IFwiSlwiIH0sXG4gICAgeyBtb2RpZmllcnM6IFtcIk1vZFwiXSwga2V5OiBcIktcIiB9XG4gICk7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBuYW1lOiBOYW1lLFxuICAgIHJlYWRvbmx5IG5leHRLZXk6IEtleUJpbmQsXG4gICAgcmVhZG9ubHkgcHJldmlvdXNLZXk6IEtleUJpbmRcbiAgKSB7XG4gICAgQ3ljbGVUaHJvdWdoU3VnZ2VzdGlvbnNLZXlzLl92YWx1ZXMucHVzaCh0aGlzKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTmFtZShuYW1lOiBzdHJpbmcpOiBDeWNsZVRocm91Z2hTdWdnZXN0aW9uc0tleXMge1xuICAgIHJldHVybiBDeWNsZVRocm91Z2hTdWdnZXN0aW9uc0tleXMuX3ZhbHVlcy5maW5kKCh4KSA9PiB4Lm5hbWUgPT09IG5hbWUpITtcbiAgfVxuXG4gIHN0YXRpYyB2YWx1ZXMoKTogQ3ljbGVUaHJvdWdoU3VnZ2VzdGlvbnNLZXlzW10ge1xuICAgIHJldHVybiBDeWNsZVRocm91Z2hTdWdnZXN0aW9uc0tleXMuX3ZhbHVlcztcbiAgfVxufVxuIiwidHlwZSBEZWxpbWl0ZXIgPSBcIlxcdFwiIHwgXCIsXCIgfCBcInxcIjtcblxuZXhwb3J0IGNsYXNzIENvbHVtbkRlbGltaXRlciB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF92YWx1ZXM6IENvbHVtbkRlbGltaXRlcltdID0gW107XG5cbiAgc3RhdGljIHJlYWRvbmx5IFRBQiA9IG5ldyBDb2x1bW5EZWxpbWl0ZXIoXCJUYWJcIiwgXCJcXHRcIik7XG4gIHN0YXRpYyByZWFkb25seSBDT01NQSA9IG5ldyBDb2x1bW5EZWxpbWl0ZXIoXCJDb21tYVwiLCBcIixcIik7XG4gIHN0YXRpYyByZWFkb25seSBQSVBFID0gbmV3IENvbHVtbkRlbGltaXRlcihcIlBpcGVcIiwgXCJ8XCIpO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocmVhZG9ubHkgbmFtZTogc3RyaW5nLCByZWFkb25seSB2YWx1ZTogRGVsaW1pdGVyKSB7XG4gICAgQ29sdW1uRGVsaW1pdGVyLl92YWx1ZXMucHVzaCh0aGlzKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTmFtZShuYW1lOiBzdHJpbmcpOiBDb2x1bW5EZWxpbWl0ZXIge1xuICAgIHJldHVybiBDb2x1bW5EZWxpbWl0ZXIuX3ZhbHVlcy5maW5kKCh4KSA9PiB4Lm5hbWUgPT09IG5hbWUpITtcbiAgfVxuXG4gIHN0YXRpYyB2YWx1ZXMoKTogQ29sdW1uRGVsaW1pdGVyW10ge1xuICAgIHJldHVybiBDb2x1bW5EZWxpbWl0ZXIuX3ZhbHVlcztcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBNb2RpZmllciB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG50eXBlIE5hbWUgPVxuICB8IFwiRW50ZXJcIlxuICB8IFwiVGFiXCJcbiAgfCBcIkN0cmwvQ21kK0VudGVyXCJcbiAgfCBcIkFsdCtFbnRlclwiXG4gIHwgXCJTaGlmdCtFbnRlclwiXG4gIHwgXCJTcGFjZVwiXG4gIHwgXCJTaGlmdCtTcGFjZVwiXG4gIHwgXCJCYWNrcXVvdGVcIlxuICB8IFwiTm9uZVwiO1xuaW50ZXJmYWNlIEtleUJpbmQge1xuICBtb2RpZmllcnM6IE1vZGlmaWVyW107XG4gIGtleTogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGNsYXNzIFNlbGVjdFN1Z2dlc3Rpb25LZXkge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdmFsdWVzOiBTZWxlY3RTdWdnZXN0aW9uS2V5W10gPSBbXTtcblxuICBzdGF0aWMgcmVhZG9ubHkgRU5URVIgPSBuZXcgU2VsZWN0U3VnZ2VzdGlvbktleShcIkVudGVyXCIsIHtcbiAgICBtb2RpZmllcnM6IFtdLFxuICAgIGtleTogXCJFbnRlclwiLFxuICB9KTtcbiAgc3RhdGljIHJlYWRvbmx5IFRBQiA9IG5ldyBTZWxlY3RTdWdnZXN0aW9uS2V5KFwiVGFiXCIsIHtcbiAgICBtb2RpZmllcnM6IFtdLFxuICAgIGtleTogXCJUYWJcIixcbiAgfSk7XG4gIHN0YXRpYyByZWFkb25seSBNT0RfRU5URVIgPSBuZXcgU2VsZWN0U3VnZ2VzdGlvbktleShcIkN0cmwvQ21kK0VudGVyXCIsIHtcbiAgICBtb2RpZmllcnM6IFtcIk1vZFwiXSxcbiAgICBrZXk6IFwiRW50ZXJcIixcbiAgfSk7XG4gIHN0YXRpYyByZWFkb25seSBBTFRfRU5URVIgPSBuZXcgU2VsZWN0U3VnZ2VzdGlvbktleShcIkFsdCtFbnRlclwiLCB7XG4gICAgbW9kaWZpZXJzOiBbXCJBbHRcIl0sXG4gICAga2V5OiBcIkVudGVyXCIsXG4gIH0pO1xuICBzdGF0aWMgcmVhZG9ubHkgU0hJRlRfRU5URVIgPSBuZXcgU2VsZWN0U3VnZ2VzdGlvbktleShcIlNoaWZ0K0VudGVyXCIsIHtcbiAgICBtb2RpZmllcnM6IFtcIlNoaWZ0XCJdLFxuICAgIGtleTogXCJFbnRlclwiLFxuICB9KTtcbiAgc3RhdGljIHJlYWRvbmx5IFNQQUNFID0gbmV3IFNlbGVjdFN1Z2dlc3Rpb25LZXkoXCJTcGFjZVwiLCB7XG4gICAgbW9kaWZpZXJzOiBbXSxcbiAgICBrZXk6IFwiIFwiLFxuICB9KTtcbiAgc3RhdGljIHJlYWRvbmx5IFNISUZUX1NQQUNFID0gbmV3IFNlbGVjdFN1Z2dlc3Rpb25LZXkoXCJTaGlmdCtTcGFjZVwiLCB7XG4gICAgbW9kaWZpZXJzOiBbXCJTaGlmdFwiXSxcbiAgICBrZXk6IFwiIFwiLFxuICB9KTtcbiAgc3RhdGljIHJlYWRvbmx5IEJBQ0tRVU9URSA9IG5ldyBTZWxlY3RTdWdnZXN0aW9uS2V5KFwiQmFja3F1b3RlXCIsIHtcbiAgICBtb2RpZmllcnM6IFtdLFxuICAgIGtleTogXCJgXCIsXG4gIH0pO1xuICBzdGF0aWMgcmVhZG9ubHkgTm9uZSA9IG5ldyBTZWxlY3RTdWdnZXN0aW9uS2V5KFwiTm9uZVwiLCB7XG4gICAgbW9kaWZpZXJzOiBbXSxcbiAgICBrZXk6IFwiXCIsXG4gIH0pO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocmVhZG9ubHkgbmFtZTogTmFtZSwgcmVhZG9ubHkga2V5QmluZDogS2V5QmluZCkge1xuICAgIFNlbGVjdFN1Z2dlc3Rpb25LZXkuX3ZhbHVlcy5wdXNoKHRoaXMpO1xuICB9XG5cbiAgc3RhdGljIGZyb21OYW1lKG5hbWU6IHN0cmluZyk6IFNlbGVjdFN1Z2dlc3Rpb25LZXkge1xuICAgIHJldHVybiBTZWxlY3RTdWdnZXN0aW9uS2V5Ll92YWx1ZXMuZmluZCgoeCkgPT4geC5uYW1lID09PSBuYW1lKSE7XG4gIH1cblxuICBzdGF0aWMgdmFsdWVzKCk6IFNlbGVjdFN1Z2dlc3Rpb25LZXlbXSB7XG4gICAgcmV0dXJuIFNlbGVjdFN1Z2dlc3Rpb25LZXkuX3ZhbHVlcztcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IGdyb3VwQnkgfSBmcm9tIFwiLi4vdXRpbC9jb2xsZWN0aW9uLWhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBXb3Jkc0J5Rmlyc3RMZXR0ZXIgfSBmcm9tIFwiLi9zdWdnZXN0ZXJcIjtcbmltcG9ydCB0eXBlIHsgVG9rZW5pemVyIH0gZnJvbSBcIi4uL3Rva2VuaXplci90b2tlbml6ZXJcIjtcbmltcG9ydCB0eXBlIHsgQXBwSGVscGVyIH0gZnJvbSBcIi4uL2FwcC1oZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgV29yZCB9IGZyb20gXCIuLi9tb2RlbC9Xb3JkXCI7XG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSBcIi4uL3V0aWwvcGF0aFwiO1xuaW1wb3J0IHsgc3RhcnRzU21hbGxMZXR0ZXJPbmx5Rmlyc3QgfSBmcm9tIFwiLi4vdXRpbC9zdHJpbmdzXCI7XG5cbmV4cG9ydCBjbGFzcyBDdXJyZW50VmF1bHRXb3JkUHJvdmlkZXIge1xuICB3b3Jkc0J5Rmlyc3RMZXR0ZXI6IFdvcmRzQnlGaXJzdExldHRlciA9IHt9O1xuICBwcml2YXRlIHdvcmRzOiBXb3JkW10gPSBbXTtcbiAgcHJpdmF0ZSB0b2tlbml6ZXI6IFRva2VuaXplcjtcbiAgcHJpdmF0ZSBpbmNsdWRlUHJlZml4UGF0dGVybnM6IHN0cmluZ1tdO1xuICBwcml2YXRlIGV4Y2x1ZGVQcmVmaXhQYXR0ZXJuczogc3RyaW5nW107XG4gIHByaXZhdGUgb25seVVuZGVyQ3VycmVudERpcmVjdG9yeTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwcDogQXBwLCBwcml2YXRlIGFwcEhlbHBlcjogQXBwSGVscGVyKSB7fVxuXG4gIGFzeW5jIHJlZnJlc2hXb3JkcyhtaW5OdW1iZXJPZkNoYXJhY3RlcnM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY2xlYXJXb3JkcygpO1xuXG4gICAgY29uc3QgY3VycmVudERpcm5hbWUgPSB0aGlzLmFwcEhlbHBlci5nZXRDdXJyZW50RGlybmFtZSgpO1xuXG4gICAgY29uc3QgbWFya2Rvd25GaWxlUGF0aHMgPSB0aGlzLmFwcC52YXVsdFxuICAgICAgLmdldE1hcmtkb3duRmlsZXMoKVxuICAgICAgLm1hcCgoeCkgPT4geC5wYXRoKVxuICAgICAgLmZpbHRlcigocCkgPT4gdGhpcy5pbmNsdWRlUHJlZml4UGF0dGVybnMuZXZlcnkoKHgpID0+IHAuc3RhcnRzV2l0aCh4KSkpXG4gICAgICAuZmlsdGVyKChwKSA9PiB0aGlzLmV4Y2x1ZGVQcmVmaXhQYXR0ZXJucy5ldmVyeSgoeCkgPT4gIXAuc3RhcnRzV2l0aCh4KSkpXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAocCkgPT4gIXRoaXMub25seVVuZGVyQ3VycmVudERpcmVjdG9yeSB8fCBkaXJuYW1lKHApID09PSBjdXJyZW50RGlybmFtZVxuICAgICAgKTtcblxuICAgIGxldCB3b3JkQnlWYWx1ZTogeyBbdmFsdWU6IHN0cmluZ106IFdvcmQgfSA9IHt9O1xuICAgIGZvciAoY29uc3QgcGF0aCBvZiBtYXJrZG93bkZpbGVQYXRocykge1xuICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHRoaXMuYXBwLnZhdWx0LmFkYXB0ZXIucmVhZChwYXRoKTtcblxuICAgICAgY29uc3QgdG9rZW5zID0gdGhpcy50b2tlbml6ZXJcbiAgICAgICAgLnRva2VuaXplKGNvbnRlbnQpXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICB4Lmxlbmd0aCA+PSBtaW5OdW1iZXJPZkNoYXJhY3RlcnMgJiZcbiAgICAgICAgICAgICF0aGlzLnRva2VuaXplci5zaG91bGRJZ25vcmVPbkN1cnJlbnQoeClcbiAgICAgICAgKVxuICAgICAgICAubWFwKCh4KSA9PiAoc3RhcnRzU21hbGxMZXR0ZXJPbmx5Rmlyc3QoeCkgPyB4LnRvTG93ZXJDYXNlKCkgOiB4KSk7XG4gICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2Vucykge1xuICAgICAgICB3b3JkQnlWYWx1ZVt0b2tlbl0gPSB7XG4gICAgICAgICAgdmFsdWU6IHRva2VuLFxuICAgICAgICAgIHR5cGU6IFwiY3VycmVudFZhdWx0XCIsXG4gICAgICAgICAgY3JlYXRlZFBhdGg6IHBhdGgsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHBhdGgsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy53b3JkcyA9IE9iamVjdC52YWx1ZXMod29yZEJ5VmFsdWUpO1xuICAgIHRoaXMud29yZHNCeUZpcnN0TGV0dGVyID0gZ3JvdXBCeSh0aGlzLndvcmRzLCAoeCkgPT4geC52YWx1ZS5jaGFyQXQoMCkpO1xuICB9XG5cbiAgY2xlYXJXb3JkcygpOiB2b2lkIHtcbiAgICB0aGlzLndvcmRzID0gW107XG4gICAgdGhpcy53b3Jkc0J5Rmlyc3RMZXR0ZXIgPSB7fTtcbiAgfVxuXG4gIGdldCB3b3JkQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy53b3Jkcy5sZW5ndGg7XG4gIH1cblxuICBzZXRTZXR0aW5ncyhcbiAgICB0b2tlbml6ZXI6IFRva2VuaXplcixcbiAgICBpbmNsdWRlUHJlZml4UGF0dGVybnM6IHN0cmluZ1tdLFxuICAgIGV4Y2x1ZGVQcmVmaXhQYXR0ZXJuczogc3RyaW5nW10sXG4gICAgb25seVVuZGVyQ3VycmVudERpcmVjdG9yeTogYm9vbGVhblxuICApIHtcbiAgICB0aGlzLnRva2VuaXplciA9IHRva2VuaXplcjtcbiAgICB0aGlzLmluY2x1ZGVQcmVmaXhQYXR0ZXJucyA9IGluY2x1ZGVQcmVmaXhQYXR0ZXJucztcbiAgICB0aGlzLmV4Y2x1ZGVQcmVmaXhQYXR0ZXJucyA9IGV4Y2x1ZGVQcmVmaXhQYXR0ZXJucztcbiAgICB0aGlzLm9ubHlVbmRlckN1cnJlbnREaXJlY3RvcnkgPSBvbmx5VW5kZXJDdXJyZW50RGlyZWN0b3J5O1xuICB9XG59XG4iLCJpbXBvcnQgdHlwZSB7IE1vZGlmaWVyIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbnR5cGUgTmFtZSA9IFwiTm9uZVwiIHwgXCJDdHJsL0NtZCtFbnRlclwiIHwgXCJBbHQrRW50ZXJcIiB8IFwiU2hpZnQrRW50ZXJcIjtcbmludGVyZmFjZSBLZXlCaW5kIHtcbiAgbW9kaWZpZXJzOiBNb2RpZmllcltdO1xuICBrZXk6IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBPcGVuU291cmNlRmlsZUtleXMge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdmFsdWVzOiBPcGVuU291cmNlRmlsZUtleXNbXSA9IFtdO1xuXG4gIHN0YXRpYyByZWFkb25seSBOT05FID0gbmV3IE9wZW5Tb3VyY2VGaWxlS2V5cyhcIk5vbmVcIiwge1xuICAgIG1vZGlmaWVyczogW10sXG4gICAga2V5OiBudWxsLFxuICB9KTtcbiAgc3RhdGljIHJlYWRvbmx5IE1PRF9FTlRFUiA9IG5ldyBPcGVuU291cmNlRmlsZUtleXMoXCJDdHJsL0NtZCtFbnRlclwiLCB7XG4gICAgbW9kaWZpZXJzOiBbXCJNb2RcIl0sXG4gICAga2V5OiBcIkVudGVyXCIsXG4gIH0pO1xuICBzdGF0aWMgcmVhZG9ubHkgQUxUX0VOVEVSID0gbmV3IE9wZW5Tb3VyY2VGaWxlS2V5cyhcIkFsdCtFbnRlclwiLCB7XG4gICAgbW9kaWZpZXJzOiBbXCJBbHRcIl0sXG4gICAga2V5OiBcIkVudGVyXCIsXG4gIH0pO1xuICBzdGF0aWMgcmVhZG9ubHkgU0hJRlRfRU5URVIgPSBuZXcgT3BlblNvdXJjZUZpbGVLZXlzKFwiU2hpZnQrRW50ZXJcIiwge1xuICAgIG1vZGlmaWVyczogW1wiU2hpZnRcIl0sXG4gICAga2V5OiBcIkVudGVyXCIsXG4gIH0pO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocmVhZG9ubHkgbmFtZTogTmFtZSwgcmVhZG9ubHkga2V5QmluZDogS2V5QmluZCkge1xuICAgIE9wZW5Tb3VyY2VGaWxlS2V5cy5fdmFsdWVzLnB1c2godGhpcyk7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5hbWUobmFtZTogc3RyaW5nKTogT3BlblNvdXJjZUZpbGVLZXlzIHtcbiAgICByZXR1cm4gT3BlblNvdXJjZUZpbGVLZXlzLl92YWx1ZXMuZmluZCgoeCkgPT4geC5uYW1lID09PSBuYW1lKSE7XG4gIH1cblxuICBzdGF0aWMgdmFsdWVzKCk6IE9wZW5Tb3VyY2VGaWxlS2V5c1tdIHtcbiAgICByZXR1cm4gT3BlblNvdXJjZUZpbGVLZXlzLl92YWx1ZXM7XG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgV29yZCB9IGZyb20gXCIuLi9tb2RlbC9Xb3JkXCI7XG5pbXBvcnQgeyBiYXNlbmFtZSB9IGZyb20gXCIuLi91dGlsL3BhdGhcIjtcblxuZXhwb3J0IGNsYXNzIERlc2NyaXB0aW9uT25TdWdnZXN0aW9uIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3ZhbHVlczogRGVzY3JpcHRpb25PblN1Z2dlc3Rpb25bXSA9IFtdO1xuXG4gIHN0YXRpYyByZWFkb25seSBOT05FID0gbmV3IERlc2NyaXB0aW9uT25TdWdnZXN0aW9uKFwiTm9uZVwiLCAoKSA9PiBudWxsKTtcbiAgc3RhdGljIHJlYWRvbmx5IFNIT1JUID0gbmV3IERlc2NyaXB0aW9uT25TdWdnZXN0aW9uKFwiU2hvcnRcIiwgKHdvcmQpID0+IHtcbiAgICBpZiAoIXdvcmQuZGVzY3JpcHRpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gd29yZC50eXBlID09PSBcImN1c3RvbURpY3Rpb25hcnlcIlxuICAgICAgPyB3b3JkLmRlc2NyaXB0aW9uXG4gICAgICA6IGJhc2VuYW1lKHdvcmQuZGVzY3JpcHRpb24pO1xuICB9KTtcbiAgc3RhdGljIHJlYWRvbmx5IEZVTEwgPSBuZXcgRGVzY3JpcHRpb25PblN1Z2dlc3Rpb24oXG4gICAgXCJGdWxsXCIsXG4gICAgKHdvcmQpID0+IHdvcmQuZGVzY3JpcHRpb24gPz8gbnVsbFxuICApO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgbmFtZTogc3RyaW5nLFxuICAgIHJlYWRvbmx5IHRvRGlzcGxheTogKHdvcmQ6IFdvcmQpID0+IHN0cmluZyB8IG51bGxcbiAgKSB7XG4gICAgRGVzY3JpcHRpb25PblN1Z2dlc3Rpb24uX3ZhbHVlcy5wdXNoKHRoaXMpO1xuICB9XG5cbiAgc3RhdGljIGZyb21OYW1lKG5hbWU6IHN0cmluZyk6IERlc2NyaXB0aW9uT25TdWdnZXN0aW9uIHtcbiAgICByZXR1cm4gRGVzY3JpcHRpb25PblN1Z2dlc3Rpb24uX3ZhbHVlcy5maW5kKCh4KSA9PiB4Lm5hbWUgPT09IG5hbWUpITtcbiAgfVxuXG4gIHN0YXRpYyB2YWx1ZXMoKTogRGVzY3JpcHRpb25PblN1Z2dlc3Rpb25bXSB7XG4gICAgcmV0dXJuIERlc2NyaXB0aW9uT25TdWdnZXN0aW9uLl92YWx1ZXM7XG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgQXBwLCBURmlsZSB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHR5cGUgeyBXb3Jkc0J5Rmlyc3RMZXR0ZXIgfSBmcm9tIFwiLi9zdWdnZXN0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQXBwSGVscGVyLCBGcm9udE1hdHRlclZhbHVlIH0gZnJvbSBcIi4uL2FwcC1oZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgRnJvbnRNYXR0ZXJXb3JkIH0gZnJvbSBcIi4uL21vZGVsL1dvcmRcIjtcbmltcG9ydCB7IGV4Y2x1ZGVFbW9qaSB9IGZyb20gXCIuLi91dGlsL3N0cmluZ3NcIjtcbmltcG9ydCB7IGdyb3VwQnksIHVuaXFCeSB9IGZyb20gXCIuLi91dGlsL2NvbGxlY3Rpb24taGVscGVyXCI7XG5cbmZ1bmN0aW9uIHN5bm9ueW1BbGlhc2VzKG5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgbGVzc0Vtb2ppVmFsdWUgPSBleGNsdWRlRW1vamkobmFtZSk7XG4gIHJldHVybiBuYW1lID09PSBsZXNzRW1vamlWYWx1ZSA/IFtdIDogW2xlc3NFbW9qaVZhbHVlXTtcbn1cblxuZnVuY3Rpb24gZnJvbnRNYXR0ZXJUb1dvcmRzKFxuICBmaWxlOiBURmlsZSxcbiAga2V5OiBzdHJpbmcsXG4gIHZhbHVlczogRnJvbnRNYXR0ZXJWYWx1ZVxuKTogRnJvbnRNYXR0ZXJXb3JkW10ge1xuICByZXR1cm4gdmFsdWVzLm1hcCgoeCkgPT4gKHtcbiAgICBrZXksXG4gICAgdmFsdWU6IHgsXG4gICAgdHlwZTogXCJmcm9udE1hdHRlclwiLFxuICAgIGNyZWF0ZWRQYXRoOiBmaWxlLnBhdGgsXG4gICAgYWxpYXNlczogc3lub255bUFsaWFzZXMoeCksXG4gIH0pKTtcbn1cblxuZnVuY3Rpb24gcGlja1dvcmRzKGZpbGU6IFRGaWxlLCBmbTogeyBba2V5OiBzdHJpbmddOiBGcm9udE1hdHRlclZhbHVlIH0pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGZtKVxuICAgIC5maWx0ZXIoXG4gICAgICAoW19rZXksIHZhbHVlXSkgPT5cbiAgICAgICAgdmFsdWUgIT0gbnVsbCAmJlxuICAgICAgICAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiB2YWx1ZVswXSA9PT0gXCJzdHJpbmdcIilcbiAgICApXG4gICAgLmZsYXRNYXAoKFtrZXksIHZhbHVlXSkgPT4gZnJvbnRNYXR0ZXJUb1dvcmRzKGZpbGUsIGtleSwgdmFsdWUpKTtcbn1cblxuLy8gbm9pbnNwZWN0aW9uIEZ1bmN0aW9uV2l0aE11bHRpcGxlTG9vcHNKU1xuZnVuY3Rpb24gZXh0cmFjdEFuZFVuaXFXb3JkcyhcbiAgd29yZHNCeUNyZWF0ZWRQYXRoOiBGcm9udE1hdHRlcldvcmRQcm92aWRlcltcIndvcmRzQnlDcmVhdGVkUGF0aFwiXVxuKTogRnJvbnRNYXR0ZXJXb3JkW10ge1xuICByZXR1cm4gdW5pcUJ5KFxuICAgIE9iamVjdC52YWx1ZXMod29yZHNCeUNyZWF0ZWRQYXRoKS5mbGF0KCksXG4gICAgKHcpID0+IHcua2V5ICsgdy52YWx1ZS50b0xvd2VyQ2FzZSgpXG4gICk7XG59XG5cbmZ1bmN0aW9uIGluZGV4aW5nV29yZHMoXG4gIHdvcmRzOiBGcm9udE1hdHRlcldvcmRbXVxuKTogRnJvbnRNYXR0ZXJXb3JkUHJvdmlkZXJbXCJ3b3Jkc0J5Rmlyc3RMZXR0ZXJCeUtleVwiXSB7XG4gIGNvbnN0IHdvcmRzQnlLZXkgPSBncm91cEJ5KHdvcmRzLCAoeCkgPT4geC5rZXkpO1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5lbnRyaWVzKHdvcmRzQnlLZXkpLm1hcChcbiAgICAgIChba2V5LCB3b3Jkc106IFtzdHJpbmcsIEZyb250TWF0dGVyV29yZFtdXSkgPT4gW1xuICAgICAgICBrZXksXG4gICAgICAgIGdyb3VwQnkod29yZHMsICh3KSA9PiB3LnZhbHVlLmNoYXJBdCgwKSksXG4gICAgICBdXG4gICAgKVxuICApO1xufVxuXG5leHBvcnQgY2xhc3MgRnJvbnRNYXR0ZXJXb3JkUHJvdmlkZXIge1xuICBwcml2YXRlIHdvcmRzQnlDcmVhdGVkUGF0aDogeyBbcGF0aDogc3RyaW5nXTogRnJvbnRNYXR0ZXJXb3JkW10gfSA9IHt9O1xuICB3b3JkczogRnJvbnRNYXR0ZXJXb3JkW107XG4gIHdvcmRzQnlGaXJzdExldHRlckJ5S2V5OiB7IFtrZXk6IHN0cmluZ106IFdvcmRzQnlGaXJzdExldHRlciB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBwOiBBcHAsIHByaXZhdGUgYXBwSGVscGVyOiBBcHBIZWxwZXIpIHt9XG5cbiAgcmVmcmVzaFdvcmRzKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJXb3JkcygpO1xuXG4gICAgdGhpcy5hcHAudmF1bHQuZ2V0TWFya2Rvd25GaWxlcygpLmZvckVhY2goKGYpID0+IHtcbiAgICAgIGNvbnN0IGZtID0gdGhpcy5hcHBIZWxwZXIuZ2V0RnJvbnRNYXR0ZXIoZik7XG4gICAgICBpZiAoIWZtKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy53b3Jkc0J5Q3JlYXRlZFBhdGhbZi5wYXRoXSA9IHBpY2tXb3JkcyhmLCBmbSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLndvcmRzID0gZXh0cmFjdEFuZFVuaXFXb3Jkcyh0aGlzLndvcmRzQnlDcmVhdGVkUGF0aCk7XG4gICAgdGhpcy53b3Jkc0J5Rmlyc3RMZXR0ZXJCeUtleSA9IGluZGV4aW5nV29yZHModGhpcy53b3Jkcyk7XG4gIH1cblxuICB1cGRhdGVXb3JkSW5kZXgoZmlsZTogVEZpbGUpOiB2b2lkIHtcbiAgICBjb25zdCBmbSA9IHRoaXMuYXBwSGVscGVyLmdldEZyb250TWF0dGVyKGZpbGUpO1xuICAgIGlmICghZm0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLndvcmRzQnlDcmVhdGVkUGF0aFtmaWxlLnBhdGhdID0gcGlja1dvcmRzKGZpbGUsIGZtKTtcbiAgfVxuXG4gIHVwZGF0ZVdvcmRzKCk6IHZvaWQge1xuICAgIHRoaXMud29yZHMgPSBleHRyYWN0QW5kVW5pcVdvcmRzKHRoaXMud29yZHNCeUNyZWF0ZWRQYXRoKTtcbiAgICB0aGlzLndvcmRzQnlGaXJzdExldHRlckJ5S2V5ID0gaW5kZXhpbmdXb3Jkcyh0aGlzLndvcmRzKTtcbiAgfVxuXG4gIGNsZWFyV29yZHMoKTogdm9pZCB7XG4gICAgdGhpcy53b3Jkc0J5Q3JlYXRlZFBhdGggPSB7fTtcbiAgICB0aGlzLndvcmRzID0gW107XG4gICAgdGhpcy53b3Jkc0J5Rmlyc3RMZXR0ZXJCeUtleSA9IHt9O1xuICB9XG5cbiAgZ2V0IHdvcmRDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLndvcmRzLmxlbmd0aDtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBJbmRleGVkV29yZHMgfSBmcm9tIFwiLi4vdWkvQXV0b0NvbXBsZXRlU3VnZ2VzdFwiO1xuaW1wb3J0IHsgc3VnZ2VzdFdvcmRzLCBzdWdnZXN0V29yZHNCeVBhcnRpYWxNYXRjaCB9IGZyb20gXCIuL3N1Z2dlc3RlclwiO1xuaW1wb3J0IHR5cGUgeyBXb3JkIH0gZnJvbSBcIi4uL21vZGVsL1dvcmRcIjtcbmltcG9ydCB0eXBlIHsgU2VsZWN0aW9uSGlzdG9yeVN0b3JhZ2UgfSBmcm9tIFwiLi4vc3RvcmFnZS9TZWxlY3Rpb25IaXN0b3J5U3RvcmFnZVwiO1xuXG50eXBlIE5hbWUgPSBcImluaGVyaXRcIiB8IFwicHJlZml4XCIgfCBcInBhcnRpYWxcIjtcblxudHlwZSBIYW5kbGVyID0gKFxuICBpbmRleGVkV29yZHM6IEluZGV4ZWRXb3JkcyxcbiAgcXVlcnk6IHN0cmluZyxcbiAgbWF4OiBudW1iZXIsXG4gIG9wdGlvbjoge1xuICAgIGZyb250TWF0dGVyPzogc3RyaW5nO1xuICAgIHNlbGVjdGlvbkhpc3RvcnlTdG9yYWdlPzogU2VsZWN0aW9uSGlzdG9yeVN0b3JhZ2U7XG4gIH1cbikgPT4gV29yZFtdO1xuXG5jb25zdCBuZXZlclVzZWRIYW5kbGVyID0gKC4uLl9hcmdzOiBhbnlbXSkgPT4gW107XG5cbmV4cG9ydCBjbGFzcyBTcGVjaWZpY01hdGNoU3RyYXRlZ3kge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdmFsdWVzOiBTcGVjaWZpY01hdGNoU3RyYXRlZ3lbXSA9IFtdO1xuXG4gIHN0YXRpYyByZWFkb25seSBJTkhFUklUID0gbmV3IFNwZWNpZmljTWF0Y2hTdHJhdGVneShcbiAgICBcImluaGVyaXRcIixcbiAgICBuZXZlclVzZWRIYW5kbGVyXG4gICk7XG4gIHN0YXRpYyByZWFkb25seSBQUkVGSVggPSBuZXcgU3BlY2lmaWNNYXRjaFN0cmF0ZWd5KFwicHJlZml4XCIsIHN1Z2dlc3RXb3Jkcyk7XG4gIHN0YXRpYyByZWFkb25seSBQQVJUSUFMID0gbmV3IFNwZWNpZmljTWF0Y2hTdHJhdGVneShcbiAgICBcInBhcnRpYWxcIixcbiAgICBzdWdnZXN0V29yZHNCeVBhcnRpYWxNYXRjaFxuICApO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocmVhZG9ubHkgbmFtZTogTmFtZSwgcmVhZG9ubHkgaGFuZGxlcjogSGFuZGxlcikge1xuICAgIFNwZWNpZmljTWF0Y2hTdHJhdGVneS5fdmFsdWVzLnB1c2godGhpcyk7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5hbWUobmFtZTogc3RyaW5nKTogU3BlY2lmaWNNYXRjaFN0cmF0ZWd5IHtcbiAgICByZXR1cm4gU3BlY2lmaWNNYXRjaFN0cmF0ZWd5Ll92YWx1ZXMuZmluZCgoeCkgPT4geC5uYW1lID09PSBuYW1lKSE7XG4gIH1cblxuICBzdGF0aWMgdmFsdWVzKCk6IFNwZWNpZmljTWF0Y2hTdHJhdGVneVtdIHtcbiAgICByZXR1cm4gU3BlY2lmaWNNYXRjaFN0cmF0ZWd5Ll92YWx1ZXM7XG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgV29yZCB9IGZyb20gXCIuLi9tb2RlbC9Xb3JkXCI7XG5pbXBvcnQgdHlwZSB7IFBhcnRpYWxSZXF1aXJlZCB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgdHlwZSBIaXRXb3JkID0gUGFydGlhbFJlcXVpcmVkPFdvcmQsIFwiaGl0XCI+O1xuZXhwb3J0IHR5cGUgU2VsZWN0aW9uSGlzdG9yeSA9IHtcbiAgY291bnQ6IG51bWJlcjtcbiAgbGFzdFVwZGF0ZWQ6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbGVjdGlvbkhpc3RvcnlUcmVlID0ge1xuICBbaGl0OiBzdHJpbmddOiB7XG4gICAgW3ZhbHVlOiBzdHJpbmddOiB7XG4gICAgICBbdHlwZTogc3RyaW5nXTogU2VsZWN0aW9uSGlzdG9yeTtcbiAgICB9O1xuICB9O1xufTtcblxuY29uc3QgU0VDID0gMTAwMDtcbmNvbnN0IE1JTiA9IFNFQyAqIDYwO1xuY29uc3QgSE9VUiA9IE1JTiAqIDYwO1xuY29uc3QgREFZID0gSE9VUiAqIDI0O1xuY29uc3QgV0VFSyA9IERBWSAqIDc7XG5cbmZ1bmN0aW9uIGNhbGNTY29yZShoaXN0b3J5OiBTZWxlY3Rpb25IaXN0b3J5IHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgaWYgKCFoaXN0b3J5KSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBjb25zdCBiZWhpbmQgPSBEYXRlLm5vdygpIC0gaGlzdG9yeS5sYXN0VXBkYXRlZDtcblxuICAvLyBub2luc3BlY3Rpb24gSWZTdGF0ZW1lbnRXaXRoVG9vTWFueUJyYW5jaGVzSlNcbiAgaWYgKGJlaGluZCA8IE1JTikge1xuICAgIHJldHVybiA4ICogaGlzdG9yeS5jb3VudDtcbiAgfSBlbHNlIGlmIChiZWhpbmQgPCBIT1VSKSB7XG4gICAgcmV0dXJuIDQgKiBoaXN0b3J5LmNvdW50O1xuICB9IGVsc2UgaWYgKGJlaGluZCA8IERBWSkge1xuICAgIHJldHVybiAyICogaGlzdG9yeS5jb3VudDtcbiAgfSBlbHNlIGlmIChiZWhpbmQgPCBXRUVLKSB7XG4gICAgcmV0dXJuIDAuNSAqIGhpc3RvcnkuY291bnQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDAuMjUgKiBoaXN0b3J5LmNvdW50O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25IaXN0b3J5U3RvcmFnZSB7XG4gIGRhdGE6IFNlbGVjdGlvbkhpc3RvcnlUcmVlO1xuICB2ZXJzaW9uOiBudW1iZXI7XG4gIHBlcnNpc3RlZFZlcnNpb246IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihkYXRhOiBTZWxlY3Rpb25IaXN0b3J5VHJlZSA9IHt9KSB7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgdGhpcy52ZXJzaW9uID0gbm93O1xuICAgIHRoaXMucGVyc2lzdGVkVmVyc2lvbiA9IG5vdztcbiAgfVxuXG4gIC8vIG5vaW5zcGVjdGlvbiBGdW5jdGlvbldpdGhNdWx0aXBsZUxvb3BzSlNcbiAgcHVyZ2UoKSB7XG4gICAgZm9yIChjb25zdCBoaXQgb2YgT2JqZWN0LmtleXModGhpcy5kYXRhKSkge1xuICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBPYmplY3Qua2V5cyh0aGlzLmRhdGFbaGl0XSkpIHtcbiAgICAgICAgZm9yIChjb25zdCBraW5kIG9mIE9iamVjdC5rZXlzKHRoaXMuZGF0YVtoaXRdW3ZhbHVlXSkpIHtcbiAgICAgICAgICBpZiAoRGF0ZS5ub3coKSAtIHRoaXMuZGF0YVtoaXRdW3ZhbHVlXVtraW5kXS5sYXN0VXBkYXRlZCA+IDQgKiBXRUVLKSB7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5kYXRhW2hpdF1bdmFsdWVdW2tpbmRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChPYmplY3QuaXNFbXB0eSh0aGlzLmRhdGFbaGl0XVt2YWx1ZV0pKSB7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuZGF0YVtoaXRdW3ZhbHVlXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoT2JqZWN0LmlzRW1wdHkodGhpcy5kYXRhW2hpdF0pKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmRhdGFbaGl0XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRTZWxlY3Rpb25IaXN0b3J5KHdvcmQ6IEhpdFdvcmQpOiBTZWxlY3Rpb25IaXN0b3J5IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhW3dvcmQuaGl0XT8uW3dvcmQudmFsdWVdPy5bd29yZC50eXBlXTtcbiAgfVxuXG4gIGluY3JlbWVudCh3b3JkOiBIaXRXb3JkKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRhdGFbd29yZC5oaXRdKSB7XG4gICAgICB0aGlzLmRhdGFbd29yZC5oaXRdID0ge307XG4gICAgfVxuICAgIGlmICghdGhpcy5kYXRhW3dvcmQuaGl0XVt3b3JkLnZhbHVlXSkge1xuICAgICAgdGhpcy5kYXRhW3dvcmQuaGl0XVt3b3JkLnZhbHVlXSA9IHt9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGFbd29yZC5oaXRdW3dvcmQudmFsdWVdW3dvcmQudHlwZV0pIHtcbiAgICAgIHRoaXMuZGF0YVt3b3JkLmhpdF1bd29yZC52YWx1ZV1bd29yZC50eXBlXSA9IHtcbiAgICAgICAgY291bnQ6IHRoaXMuZGF0YVt3b3JkLmhpdF1bd29yZC52YWx1ZV1bd29yZC50eXBlXS5jb3VudCArIDEsXG4gICAgICAgIGxhc3RVcGRhdGVkOiBEYXRlLm5vdygpLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRhW3dvcmQuaGl0XVt3b3JkLnZhbHVlXVt3b3JkLnR5cGVdID0ge1xuICAgICAgICBjb3VudDogMSxcbiAgICAgICAgbGFzdFVwZGF0ZWQ6IERhdGUubm93KCksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMudmVyc2lvbiA9IERhdGUubm93KCk7XG4gIH1cblxuICBjb21wYXJlKHcxOiBIaXRXb3JkLCB3MjogSGl0V29yZCk6IC0xIHwgMCB8IDEge1xuICAgIGNvbnN0IHNjb3JlMSA9IGNhbGNTY29yZSh0aGlzLmdldFNlbGVjdGlvbkhpc3RvcnkodzEpKTtcbiAgICBjb25zdCBzY29yZTIgPSBjYWxjU2NvcmUodGhpcy5nZXRTZWxlY3Rpb25IaXN0b3J5KHcyKSk7XG5cbiAgICBpZiAoc2NvcmUxID09PSBzY29yZTIpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiBzY29yZTEgPiBzY29yZTIgPyAtMSA6IDE7XG4gIH1cblxuICBnZXQgc2hvdWxkUGVyc2lzdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52ZXJzaW9uID4gdGhpcy5wZXJzaXN0ZWRWZXJzaW9uO1xuICB9XG5cbiAgc3luY1BlcnNpc3RWZXJzaW9uKCk6IHZvaWQge1xuICAgIHRoaXMucGVyc2lzdGVkVmVyc2lvbiA9IHRoaXMudmVyc2lvbjtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgQXBwLFxuICBkZWJvdW5jZSxcbiAgdHlwZSBEZWJvdW5jZXIsXG4gIEVkaXRvcixcbiAgdHlwZSBFZGl0b3JQb3NpdGlvbixcbiAgRWRpdG9yU3VnZ2VzdCxcbiAgdHlwZSBFZGl0b3JTdWdnZXN0Q29udGV4dCxcbiAgdHlwZSBFZGl0b3JTdWdnZXN0VHJpZ2dlckluZm8sXG4gIHR5cGUgRXZlbnRSZWYsXG4gIHR5cGUgS2V5bWFwRXZlbnRIYW5kbGVyLFxuICB0eXBlIE1vZGlmaWVyLFxuICBOb3RpY2UsXG4gIFNjb3BlLFxuICBURmlsZSxcbn0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBjcmVhdGVUb2tlbml6ZXIsIHR5cGUgVG9rZW5pemVyIH0gZnJvbSBcIi4uL3Rva2VuaXplci90b2tlbml6ZXJcIjtcbmltcG9ydCB7IFRva2VuaXplU3RyYXRlZ3kgfSBmcm9tIFwiLi4vdG9rZW5pemVyL1Rva2VuaXplU3RyYXRlZ3lcIjtcbmltcG9ydCB0eXBlIHsgU2V0dGluZ3MgfSBmcm9tIFwiLi4vc2V0dGluZy9zZXR0aW5nc1wiO1xuaW1wb3J0IHsgQXBwSGVscGVyIH0gZnJvbSBcIi4uL2FwcC1oZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgV29yZHNCeUZpcnN0TGV0dGVyIH0gZnJvbSBcIi4uL3Byb3ZpZGVyL3N1Z2dlc3RlclwiO1xuaW1wb3J0IHsgQ3VzdG9tRGljdGlvbmFyeVdvcmRQcm92aWRlciB9IGZyb20gXCIuLi9wcm92aWRlci9DdXN0b21EaWN0aW9uYXJ5V29yZFByb3ZpZGVyXCI7XG5pbXBvcnQgeyBDdXJyZW50RmlsZVdvcmRQcm92aWRlciB9IGZyb20gXCIuLi9wcm92aWRlci9DdXJyZW50RmlsZVdvcmRQcm92aWRlclwiO1xuaW1wb3J0IHsgSW50ZXJuYWxMaW5rV29yZFByb3ZpZGVyIH0gZnJvbSBcIi4uL3Byb3ZpZGVyL0ludGVybmFsTGlua1dvcmRQcm92aWRlclwiO1xuaW1wb3J0IHsgTWF0Y2hTdHJhdGVneSB9IGZyb20gXCIuLi9wcm92aWRlci9NYXRjaFN0cmF0ZWd5XCI7XG5pbXBvcnQgeyBDeWNsZVRocm91Z2hTdWdnZXN0aW9uc0tleXMgfSBmcm9tIFwiLi4vb3B0aW9uL0N5Y2xlVGhyb3VnaFN1Z2dlc3Rpb25zS2V5c1wiO1xuaW1wb3J0IHsgQ29sdW1uRGVsaW1pdGVyIH0gZnJvbSBcIi4uL29wdGlvbi9Db2x1bW5EZWxpbWl0ZXJcIjtcbmltcG9ydCB7IFNlbGVjdFN1Z2dlc3Rpb25LZXkgfSBmcm9tIFwiLi4vb3B0aW9uL1NlbGVjdFN1Z2dlc3Rpb25LZXlcIjtcbmltcG9ydCB7IHVuaXFXaXRoIH0gZnJvbSBcIi4uL3V0aWwvY29sbGVjdGlvbi1oZWxwZXJcIjtcbmltcG9ydCB7IEN1cnJlbnRWYXVsdFdvcmRQcm92aWRlciB9IGZyb20gXCIuLi9wcm92aWRlci9DdXJyZW50VmF1bHRXb3JkUHJvdmlkZXJcIjtcbmltcG9ydCB0eXBlIHsgUHJvdmlkZXJTdGF0dXNCYXIgfSBmcm9tIFwiLi9Qcm92aWRlclN0YXR1c0JhclwiO1xuaW1wb3J0IHR5cGUgeyBXb3JkIH0gZnJvbSBcIi4uL21vZGVsL1dvcmRcIjtcbmltcG9ydCB7IE9wZW5Tb3VyY2VGaWxlS2V5cyB9IGZyb20gXCIuLi9vcHRpb24vT3BlblNvdXJjZUZpbGVLZXlzXCI7XG5pbXBvcnQgeyBEZXNjcmlwdGlvbk9uU3VnZ2VzdGlvbiB9IGZyb20gXCIuLi9vcHRpb24vRGVzY3JpcHRpb25PblN1Z2dlc3Rpb25cIjtcbmltcG9ydCB7IEZyb250TWF0dGVyV29yZFByb3ZpZGVyIH0gZnJvbSBcIi4uL3Byb3ZpZGVyL0Zyb250TWF0dGVyV29yZFByb3ZpZGVyXCI7XG5pbXBvcnQgeyBTcGVjaWZpY01hdGNoU3RyYXRlZ3kgfSBmcm9tIFwiLi4vcHJvdmlkZXIvU3BlY2lmaWNNYXRjaFN0cmF0ZWd5XCI7XG5pbXBvcnQge1xuICB0eXBlIEhpdFdvcmQsXG4gIFNlbGVjdGlvbkhpc3RvcnlTdG9yYWdlLFxufSBmcm9tIFwiLi4vc3RvcmFnZS9TZWxlY3Rpb25IaXN0b3J5U3RvcmFnZVwiO1xuXG5mdW5jdGlvbiBidWlsZExvZ01lc3NhZ2UobWVzc2FnZTogc3RyaW5nLCBtc2VjOiBudW1iZXIpIHtcbiAgcmV0dXJuIGAke21lc3NhZ2V9OiAke01hdGgucm91bmQobXNlYyl9W21zXWA7XG59XG5cbmV4cG9ydCB0eXBlIEluZGV4ZWRXb3JkcyA9IHtcbiAgY3VycmVudEZpbGU6IFdvcmRzQnlGaXJzdExldHRlcjtcbiAgY3VycmVudFZhdWx0OiBXb3Jkc0J5Rmlyc3RMZXR0ZXI7XG4gIGN1c3RvbURpY3Rpb25hcnk6IFdvcmRzQnlGaXJzdExldHRlcjtcbiAgaW50ZXJuYWxMaW5rOiBXb3Jkc0J5Rmlyc3RMZXR0ZXI7XG4gIGZyb250TWF0dGVyOiB7IFtrZXk6IHN0cmluZ106IFdvcmRzQnlGaXJzdExldHRlciB9O1xufTtcblxuLy8gVGhpcyBpcyBhbiB1bnNhZmUgY29kZS4uISFcbmludGVyZmFjZSBVbnNhZmVFZGl0b3JTdWdnZXN0SW50ZXJmYWNlIHtcbiAgc2NvcGU6IFNjb3BlICYgeyBrZXlzOiAoS2V5bWFwRXZlbnRIYW5kbGVyICYgeyBmdW5jOiBDYWxsYWJsZUZ1bmN0aW9uIH0pW10gfTtcbiAgc3VnZ2VzdGlvbnM6IHtcbiAgICBzZWxlY3RlZEl0ZW06IG51bWJlcjtcbiAgICB1c2VTZWxlY3RlZEl0ZW0oZXY6IFBhcnRpYWw8S2V5Ym9hcmRFdmVudD4pOiB2b2lkO1xuICAgIHNldFNlbGVjdGVkSXRlbShzZWxlY3RlZDogbnVtYmVyLCBzY3JvbGw6IGJvb2xlYW4pOiB2b2lkO1xuICAgIHZhbHVlczogV29yZFtdO1xuICB9O1xuICBpc09wZW46IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBBdXRvQ29tcGxldGVTdWdnZXN0XG4gIGV4dGVuZHMgRWRpdG9yU3VnZ2VzdDxXb3JkPlxuICBpbXBsZW1lbnRzIFVuc2FmZUVkaXRvclN1Z2dlc3RJbnRlcmZhY2VcbntcbiAgYXBwOiBBcHA7XG4gIHNldHRpbmdzOiBTZXR0aW5ncztcbiAgYXBwSGVscGVyOiBBcHBIZWxwZXI7XG4gIHN0YXR1c0JhcjogUHJvdmlkZXJTdGF0dXNCYXI7XG5cbiAgY3VycmVudEZpbGVXb3JkUHJvdmlkZXI6IEN1cnJlbnRGaWxlV29yZFByb3ZpZGVyO1xuICBjdXJyZW50VmF1bHRXb3JkUHJvdmlkZXI6IEN1cnJlbnRWYXVsdFdvcmRQcm92aWRlcjtcbiAgY3VzdG9tRGljdGlvbmFyeVdvcmRQcm92aWRlcjogQ3VzdG9tRGljdGlvbmFyeVdvcmRQcm92aWRlcjtcbiAgaW50ZXJuYWxMaW5rV29yZFByb3ZpZGVyOiBJbnRlcm5hbExpbmtXb3JkUHJvdmlkZXI7XG4gIGZyb250TWF0dGVyV29yZFByb3ZpZGVyOiBGcm9udE1hdHRlcldvcmRQcm92aWRlcjtcbiAgc2VsZWN0aW9uSGlzdG9yeVN0b3JhZ2U6IFNlbGVjdGlvbkhpc3RvcnlTdG9yYWdlIHwgdW5kZWZpbmVkO1xuXG4gIHRva2VuaXplcjogVG9rZW5pemVyO1xuICBkZWJvdW5jZUdldFN1Z2dlc3Rpb25zOiBEZWJvdW5jZXI8XG4gICAgW0VkaXRvclN1Z2dlc3RDb250ZXh0LCAodG9rZW5zOiBXb3JkW10pID0+IHZvaWRdXG4gID47XG4gIGRlYm91bmNlQ2xvc2U6IERlYm91bmNlcjxbXT47XG5cbiAgcnVuTWFudWFsbHk6IGJvb2xlYW47XG4gIGRlY2xhcmUgaXNPcGVuOiBib29sZWFuO1xuXG4gIGNvbnRleHRTdGFydENoOiBudW1iZXI7XG5cbiAgcHJldmlvdXNDdXJyZW50TGluZSA9IFwiXCI7XG5cbiAgLy8gdW5zYWZlISFcbiAgc2NvcGU6IFVuc2FmZUVkaXRvclN1Z2dlc3RJbnRlcmZhY2VbXCJzY29wZVwiXTtcbiAgc3VnZ2VzdGlvbnM6IFVuc2FmZUVkaXRvclN1Z2dlc3RJbnRlcmZhY2VbXCJzdWdnZXN0aW9uc1wiXTtcblxuICBrZXltYXBFdmVudEhhbmRsZXI6IEtleW1hcEV2ZW50SGFuZGxlcltdID0gW107XG4gIG1vZGlmeUV2ZW50UmVmOiBFdmVudFJlZjtcbiAgYWN0aXZlTGVhZkNoYW5nZVJlZjogRXZlbnRSZWY7XG4gIG1ldGFkYXRhQ2FjaGVDaGFuZ2VSZWY6IEV2ZW50UmVmO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoYXBwOiBBcHAsIHN0YXR1c0JhcjogUHJvdmlkZXJTdGF0dXNCYXIpIHtcbiAgICBzdXBlcihhcHApO1xuICAgIHRoaXMuYXBwSGVscGVyID0gbmV3IEFwcEhlbHBlcihhcHApO1xuICAgIHRoaXMuc3RhdHVzQmFyID0gc3RhdHVzQmFyO1xuICB9XG5cbiAgdHJpZ2dlckNvbXBsZXRlKCkge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuYXBwSGVscGVyLmdldEN1cnJlbnRFZGl0b3IoKTtcbiAgICBjb25zdCBhY3RpdmVGaWxlID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKTtcbiAgICBpZiAoIWVkaXRvciB8fCAhYWN0aXZlRmlsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFhYWDogVW5zYWZlXG4gICAgdGhpcy5ydW5NYW51YWxseSA9IHRydWU7XG4gICAgKHRoaXMgYXMgYW55KS50cmlnZ2VyKGVkaXRvciwgYWN0aXZlRmlsZSwgdHJ1ZSk7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgbmV3KFxuICAgIGFwcDogQXBwLFxuICAgIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBzdGF0dXNCYXI6IFByb3ZpZGVyU3RhdHVzQmFyLFxuICAgIG9uUGVyc2lzdFNlbGVjdGlvbkhpc3Rvcnk6ICgpID0+IHZvaWRcbiAgKTogUHJvbWlzZTxBdXRvQ29tcGxldGVTdWdnZXN0PiB7XG4gICAgY29uc3QgaW5zID0gbmV3IEF1dG9Db21wbGV0ZVN1Z2dlc3QoYXBwLCBzdGF0dXNCYXIpO1xuXG4gICAgaW5zLmN1cnJlbnRGaWxlV29yZFByb3ZpZGVyID0gbmV3IEN1cnJlbnRGaWxlV29yZFByb3ZpZGVyKFxuICAgICAgaW5zLmFwcCxcbiAgICAgIGlucy5hcHBIZWxwZXJcbiAgICApO1xuICAgIGlucy5jdXJyZW50VmF1bHRXb3JkUHJvdmlkZXIgPSBuZXcgQ3VycmVudFZhdWx0V29yZFByb3ZpZGVyKFxuICAgICAgaW5zLmFwcCxcbiAgICAgIGlucy5hcHBIZWxwZXJcbiAgICApO1xuICAgIGlucy5jdXN0b21EaWN0aW9uYXJ5V29yZFByb3ZpZGVyID0gbmV3IEN1c3RvbURpY3Rpb25hcnlXb3JkUHJvdmlkZXIoXG4gICAgICBpbnMuYXBwLFxuICAgICAgaW5zLmFwcEhlbHBlclxuICAgICk7XG4gICAgaW5zLmludGVybmFsTGlua1dvcmRQcm92aWRlciA9IG5ldyBJbnRlcm5hbExpbmtXb3JkUHJvdmlkZXIoXG4gICAgICBpbnMuYXBwLFxuICAgICAgaW5zLmFwcEhlbHBlclxuICAgICk7XG4gICAgaW5zLmZyb250TWF0dGVyV29yZFByb3ZpZGVyID0gbmV3IEZyb250TWF0dGVyV29yZFByb3ZpZGVyKFxuICAgICAgaW5zLmFwcCxcbiAgICAgIGlucy5hcHBIZWxwZXJcbiAgICApO1xuXG4gICAgaW5zLnNlbGVjdGlvbkhpc3RvcnlTdG9yYWdlID0gbmV3IFNlbGVjdGlvbkhpc3RvcnlTdG9yYWdlKFxuICAgICAgc2V0dGluZ3Muc2VsZWN0aW9uSGlzdG9yeVRyZWVcbiAgICApO1xuICAgIGlucy5zZWxlY3Rpb25IaXN0b3J5U3RvcmFnZS5wdXJnZSgpO1xuXG4gICAgYXdhaXQgaW5zLnVwZGF0ZVNldHRpbmdzKHNldHRpbmdzKTtcblxuICAgIGlucy5tb2RpZnlFdmVudFJlZiA9IGFwcC52YXVsdC5vbihcIm1vZGlmeVwiLCBhc3luYyAoXykgPT4ge1xuICAgICAgYXdhaXQgaW5zLnJlZnJlc2hDdXJyZW50RmlsZVRva2VucygpO1xuICAgICAgaWYgKGlucy5zZWxlY3Rpb25IaXN0b3J5U3RvcmFnZT8uc2hvdWxkUGVyc2lzdCkge1xuICAgICAgICBpbnMuc2V0dGluZ3Muc2VsZWN0aW9uSGlzdG9yeVRyZWUgPSBpbnMuc2VsZWN0aW9uSGlzdG9yeVN0b3JhZ2UuZGF0YTtcbiAgICAgICAgaW5zLnNlbGVjdGlvbkhpc3RvcnlTdG9yYWdlLnN5bmNQZXJzaXN0VmVyc2lvbigpO1xuICAgICAgICBvblBlcnNpc3RTZWxlY3Rpb25IaXN0b3J5KCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaW5zLmFjdGl2ZUxlYWZDaGFuZ2VSZWYgPSBhcHAud29ya3NwYWNlLm9uKFxuICAgICAgXCJhY3RpdmUtbGVhZi1jaGFuZ2VcIixcbiAgICAgIGFzeW5jIChfKSA9PiB7XG4gICAgICAgIGF3YWl0IGlucy5yZWZyZXNoQ3VycmVudEZpbGVUb2tlbnMoKTtcbiAgICAgICAgaW5zLnJlZnJlc2hJbnRlcm5hbExpbmtUb2tlbnMoKTtcbiAgICAgICAgaW5zLnVwZGF0ZUZyb250TWF0dGVyVG9rZW4oKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgaW5zLm1ldGFkYXRhQ2FjaGVDaGFuZ2VSZWYgPSBhcHAubWV0YWRhdGFDYWNoZS5vbihcImNoYW5nZWRcIiwgKGYpID0+IHtcbiAgICAgIGlucy51cGRhdGVGcm9udE1hdHRlclRva2VuSW5kZXgoZik7XG4gICAgICBpZiAoIWlucy5hcHBIZWxwZXIuaXNBY3RpdmVGaWxlKGYpKSB7XG4gICAgICAgIGlucy51cGRhdGVGcm9udE1hdHRlclRva2VuKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBBdm9pZCByZWZlcnJpbmcgdG8gaW5jb3JyZWN0IGNhY2hlXG4gICAgY29uc3QgY2FjaGVSZXNvbHZlZFJlZiA9IGFwcC5tZXRhZGF0YUNhY2hlLm9uKFwicmVzb2x2ZWRcIiwgYXN5bmMgKCkgPT4ge1xuICAgICAgaW5zLnJlZnJlc2hJbnRlcm5hbExpbmtUb2tlbnMoKTtcbiAgICAgIGlucy5yZWZyZXNoRnJvbnRNYXR0ZXJUb2tlbnMoKTtcbiAgICAgIC8vIG5vaW5zcGVjdGlvbiBFUzZNaXNzaW5nQXdhaXRcbiAgICAgIGlucy5yZWZyZXNoQ3VzdG9tRGljdGlvbmFyeVRva2VucygpO1xuICAgICAgLy8gbm9pbnNwZWN0aW9uIEVTNk1pc3NpbmdBd2FpdFxuICAgICAgaW5zLnJlZnJlc2hDdXJyZW50VmF1bHRUb2tlbnMoKTtcblxuICAgICAgaW5zLmFwcC5tZXRhZGF0YUNhY2hlLm9mZnJlZihjYWNoZVJlc29sdmVkUmVmKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBpbnM7XG4gIH1cblxuICBwcmVkaWN0YWJsZUNvbXBsZXRlKCkge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuYXBwSGVscGVyLmdldEN1cnJlbnRFZGl0b3IoKTtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnNvciA9IGVkaXRvci5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBjdXJyZW50VG9rZW4gPSB0aGlzLnRva2VuaXplclxuICAgICAgLnRva2VuaXplKGVkaXRvci5nZXRMaW5lKGN1cnNvci5saW5lKS5zbGljZSgwLCBjdXJzb3IuY2gpKVxuICAgICAgLmxhc3QoKTtcbiAgICBpZiAoIWN1cnJlbnRUb2tlbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBzdWdnZXN0aW9uID0gdGhpcy50b2tlbml6ZXJcbiAgICAgIC50b2tlbml6ZShcbiAgICAgICAgZWRpdG9yLmdldFJhbmdlKHsgbGluZTogTWF0aC5tYXgoY3Vyc29yLmxpbmUgLSA1MCwgMCksIGNoOiAwIH0sIGN1cnNvcilcbiAgICAgIClcbiAgICAgIC5yZXZlcnNlKClcbiAgICAgIC5zbGljZSgxKVxuICAgICAgLmZpbmQoKHgpID0+IHguc3RhcnRzV2l0aChjdXJyZW50VG9rZW4pKTtcbiAgICBpZiAoIXN1Z2dlc3Rpb24pIHtcbiAgICAgIHN1Z2dlc3Rpb24gPSB0aGlzLnRva2VuaXplclxuICAgICAgICAudG9rZW5pemUoXG4gICAgICAgICAgZWRpdG9yLmdldFJhbmdlKGN1cnNvciwge1xuICAgICAgICAgICAgbGluZTogTWF0aC5taW4oY3Vyc29yLmxpbmUgKyA1MCwgZWRpdG9yLmxpbmVDb3VudCgpIC0gMSksXG4gICAgICAgICAgICBjaDogMCxcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5maW5kKCh4KSA9PiB4LnN0YXJ0c1dpdGgoY3VycmVudFRva2VuKSk7XG4gICAgfVxuICAgIGlmICghc3VnZ2VzdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGVkaXRvci5yZXBsYWNlUmFuZ2UoXG4gICAgICBzdWdnZXN0aW9uLFxuICAgICAgeyBsaW5lOiBjdXJzb3IubGluZSwgY2g6IGN1cnNvci5jaCAtIGN1cnJlbnRUb2tlbi5sZW5ndGggfSxcbiAgICAgIHsgbGluZTogY3Vyc29yLmxpbmUsIGNoOiBjdXJzb3IuY2ggfVxuICAgICk7XG5cbiAgICB0aGlzLmNsb3NlKCk7XG4gICAgdGhpcy5kZWJvdW5jZUNsb3NlKCk7XG4gIH1cblxuICB1bnJlZ2lzdGVyKCkge1xuICAgIHRoaXMuYXBwLnZhdWx0Lm9mZnJlZih0aGlzLm1vZGlmeUV2ZW50UmVmKTtcbiAgICB0aGlzLmFwcC53b3Jrc3BhY2Uub2ZmcmVmKHRoaXMuYWN0aXZlTGVhZkNoYW5nZVJlZik7XG4gICAgdGhpcy5hcHAubWV0YWRhdGFDYWNoZS5vZmZyZWYodGhpcy5tZXRhZGF0YUNhY2hlQ2hhbmdlUmVmKTtcbiAgfVxuXG4gIC8vIHNldHRpbmdzIGdldHRlcnNcbiAgZ2V0IHRva2VuaXplclN0cmF0ZWd5KCk6IFRva2VuaXplU3RyYXRlZ3kge1xuICAgIHJldHVybiBUb2tlbml6ZVN0cmF0ZWd5LmZyb21OYW1lKHRoaXMuc2V0dGluZ3Muc3RyYXRlZ3kpO1xuICB9XG5cbiAgZ2V0IG1hdGNoU3RyYXRlZ3koKTogTWF0Y2hTdHJhdGVneSB7XG4gICAgcmV0dXJuIE1hdGNoU3RyYXRlZ3kuZnJvbU5hbWUodGhpcy5zZXR0aW5ncy5tYXRjaFN0cmF0ZWd5KTtcbiAgfVxuXG4gIGdldCBmcm9udE1hdHRlckNvbXBsZW1lbnRTdHJhdGVneSgpOiBTcGVjaWZpY01hdGNoU3RyYXRlZ3kge1xuICAgIHJldHVybiBTcGVjaWZpY01hdGNoU3RyYXRlZ3kuZnJvbU5hbWUoXG4gICAgICB0aGlzLnNldHRpbmdzLmZyb250TWF0dGVyQ29tcGxlbWVudE1hdGNoU3RyYXRlZ3lcbiAgICApO1xuICB9XG5cbiAgZ2V0IG1pbk51bWJlclRyaWdnZXJlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNldHRpbmdzLm1pbk51bWJlck9mQ2hhcmFjdGVyc1RyaWdnZXJlZCB8fFxuICAgICAgdGhpcy50b2tlbml6ZXJTdHJhdGVneS50cmlnZ2VyVGhyZXNob2xkXG4gICAgKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50RmlsZU1pbk51bWJlck9mQ2hhcmFjdGVycygpOiBudW1iZXIge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNldHRpbmdzLmN1cnJlbnRGaWxlTWluTnVtYmVyT2ZDaGFyYWN0ZXJzIHx8XG4gICAgICB0aGlzLnRva2VuaXplclN0cmF0ZWd5LmluZGV4aW5nVGhyZXNob2xkXG4gICAgKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50VmF1bHRNaW5OdW1iZXJPZkNoYXJhY3RlcnMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zZXR0aW5ncy5jdXJyZW50VmF1bHRNaW5OdW1iZXJPZkNoYXJhY3RlcnMgfHxcbiAgICAgIHRoaXMudG9rZW5pemVyU3RyYXRlZ3kuaW5kZXhpbmdUaHJlc2hvbGRcbiAgICApO1xuICB9XG5cbiAgZ2V0IGRlc2NyaXB0aW9uT25TdWdnZXN0aW9uKCk6IERlc2NyaXB0aW9uT25TdWdnZXN0aW9uIHtcbiAgICByZXR1cm4gRGVzY3JpcHRpb25PblN1Z2dlc3Rpb24uZnJvbU5hbWUoXG4gICAgICB0aGlzLnNldHRpbmdzLmRlc2NyaXB0aW9uT25TdWdnZXN0aW9uXG4gICAgKTtcbiAgfVxuXG4gIGdldCBleGNsdWRlSW50ZXJuYWxMaW5rUHJlZml4UGF0aFBhdHRlcm5zKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5leGNsdWRlSW50ZXJuYWxMaW5rUGF0aFByZWZpeFBhdHRlcm5zXG4gICAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAgIC5maWx0ZXIoKHgpID0+IHgpO1xuICB9XG5cbiAgLy8gLS0tIGVuZCAtLS1cblxuICBnZXQgaW5kZXhlZFdvcmRzKCk6IEluZGV4ZWRXb3JkcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN1cnJlbnRGaWxlOiB0aGlzLmN1cnJlbnRGaWxlV29yZFByb3ZpZGVyLndvcmRzQnlGaXJzdExldHRlcixcbiAgICAgIGN1cnJlbnRWYXVsdDogdGhpcy5jdXJyZW50VmF1bHRXb3JkUHJvdmlkZXIud29yZHNCeUZpcnN0TGV0dGVyLFxuICAgICAgY3VzdG9tRGljdGlvbmFyeTogdGhpcy5jdXN0b21EaWN0aW9uYXJ5V29yZFByb3ZpZGVyLndvcmRzQnlGaXJzdExldHRlcixcbiAgICAgIGludGVybmFsTGluazogdGhpcy5pbnRlcm5hbExpbmtXb3JkUHJvdmlkZXIud29yZHNCeUZpcnN0TGV0dGVyLFxuICAgICAgZnJvbnRNYXR0ZXI6IHRoaXMuZnJvbnRNYXR0ZXJXb3JkUHJvdmlkZXIud29yZHNCeUZpcnN0TGV0dGVyQnlLZXksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVNldHRpbmdzKHNldHRpbmdzOiBTZXR0aW5ncykge1xuICAgIHRoaXMuc2V0dGluZ3MgPSBzZXR0aW5ncztcblxuICAgIHRoaXMuc3RhdHVzQmFyLnNldE1hdGNoU3RyYXRlZ3kodGhpcy5tYXRjaFN0cmF0ZWd5KTtcbiAgICB0aGlzLnN0YXR1c0Jhci5zZXRDb21wbGVtZW50QXV0b21hdGljYWxseShcbiAgICAgIHRoaXMuc2V0dGluZ3MuY29tcGxlbWVudEF1dG9tYXRpY2FsbHlcbiAgICApO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudG9rZW5pemVyID0gYXdhaXQgY3JlYXRlVG9rZW5pemVyKHRoaXMudG9rZW5pemVyU3RyYXRlZ3ksIHRoaXMuYXBwKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIG5ldyBOb3RpY2UoZS5tZXNzYWdlLCAwKTtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50RmlsZVdvcmRQcm92aWRlci5zZXRTZXR0aW5ncyh0aGlzLnRva2VuaXplcik7XG4gICAgdGhpcy5jdXJyZW50VmF1bHRXb3JkUHJvdmlkZXIuc2V0U2V0dGluZ3MoXG4gICAgICB0aGlzLnRva2VuaXplcixcbiAgICAgIHNldHRpbmdzLmluY2x1ZGVDdXJyZW50VmF1bHRQYXRoUHJlZml4UGF0dGVybnNcbiAgICAgICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgICAgIC5maWx0ZXIoKHgpID0+IHgpLFxuICAgICAgc2V0dGluZ3MuZXhjbHVkZUN1cnJlbnRWYXVsdFBhdGhQcmVmaXhQYXR0ZXJuc1xuICAgICAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAgICAgLmZpbHRlcigoeCkgPT4geCksXG4gICAgICBzZXR0aW5ncy5pbmNsdWRlQ3VycmVudFZhdWx0T25seUZpbGVzVW5kZXJDdXJyZW50RGlyZWN0b3J5XG4gICAgKTtcbiAgICB0aGlzLmN1c3RvbURpY3Rpb25hcnlXb3JkUHJvdmlkZXIuc2V0U2V0dGluZ3MoXG4gICAgICBzZXR0aW5ncy5jdXN0b21EaWN0aW9uYXJ5UGF0aHMuc3BsaXQoXCJcXG5cIikuZmlsdGVyKCh4KSA9PiB4KSxcbiAgICAgIENvbHVtbkRlbGltaXRlci5mcm9tTmFtZShzZXR0aW5ncy5jb2x1bW5EZWxpbWl0ZXIpLFxuICAgICAgc2V0dGluZ3MuZGVsaW1pdGVyVG9EaXZpZGVTdWdnZXN0aW9uc0ZvckRpc3BsYXlGcm9tSW5zZXJ0aW9uIHx8IG51bGxcbiAgICApO1xuXG4gICAgdGhpcy5kZWJvdW5jZUdldFN1Z2dlc3Rpb25zID0gZGVib3VuY2UoXG4gICAgICAoY29udGV4dDogRWRpdG9yU3VnZ2VzdENvbnRleHQsIGNiOiAod29yZHM6IFdvcmRbXSkgPT4gdm9pZCkgPT4ge1xuICAgICAgICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuXG4gICAgICAgIHRoaXMuc2hvd0RlYnVnTG9nKCgpID0+IGBbY29udGV4dC5xdWVyeV06ICR7Y29udGV4dC5xdWVyeX1gKTtcbiAgICAgICAgY29uc3QgcGFyc2VkUXVlcnkgPSBKU09OLnBhcnNlKGNvbnRleHQucXVlcnkpIGFzIHtcbiAgICAgICAgICBjdXJyZW50RnJvbnRNYXR0ZXI/OiBzdHJpbmc7XG4gICAgICAgICAgcXVlcmllczoge1xuICAgICAgICAgICAgd29yZDogc3RyaW5nO1xuICAgICAgICAgICAgb2Zmc2V0OiBudW1iZXI7XG4gICAgICAgICAgfVtdO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHdvcmRzID0gcGFyc2VkUXVlcnkucXVlcmllc1xuICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAoeCwgaSwgeHMpID0+XG4gICAgICAgICAgICAgIHBhcnNlZFF1ZXJ5LmN1cnJlbnRGcm9udE1hdHRlciB8fFxuICAgICAgICAgICAgICAodGhpcy5zZXR0aW5ncy5taW5OdW1iZXJPZldvcmRzVHJpZ2dlcmVkUGhyYXNlICsgaSAtIDEgPFxuICAgICAgICAgICAgICAgIHhzLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgIHgud29yZC5sZW5ndGggPj0gdGhpcy5taW5OdW1iZXJUcmlnZ2VyZWQgJiZcbiAgICAgICAgICAgICAgICAheC53b3JkLmVuZHNXaXRoKFwiIFwiKSlcbiAgICAgICAgICApXG4gICAgICAgICAgLm1hcCgocSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlciA9XG4gICAgICAgICAgICAgIHBhcnNlZFF1ZXJ5LmN1cnJlbnRGcm9udE1hdHRlciAmJlxuICAgICAgICAgICAgICB0aGlzLmZyb250TWF0dGVyQ29tcGxlbWVudFN0cmF0ZWd5ICE9PVxuICAgICAgICAgICAgICAgIFNwZWNpZmljTWF0Y2hTdHJhdGVneS5JTkhFUklUXG4gICAgICAgICAgICAgICAgPyB0aGlzLmZyb250TWF0dGVyQ29tcGxlbWVudFN0cmF0ZWd5LmhhbmRsZXJcbiAgICAgICAgICAgICAgICA6IHRoaXMubWF0Y2hTdHJhdGVneS5oYW5kbGVyO1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZXIoXG4gICAgICAgICAgICAgIHRoaXMuaW5kZXhlZFdvcmRzLFxuICAgICAgICAgICAgICBxLndvcmQsXG4gICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MubWF4TnVtYmVyT2ZTdWdnZXN0aW9ucyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZyb250TWF0dGVyOiBwYXJzZWRRdWVyeS5jdXJyZW50RnJvbnRNYXR0ZXIsXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uSGlzdG9yeVN0b3JhZ2U6IHRoaXMuc2VsZWN0aW9uSGlzdG9yeVN0b3JhZ2UsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkubWFwKCh3b3JkKSA9PiAoeyAuLi53b3JkLCBvZmZzZXQ6IHEub2Zmc2V0IH0pKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5mbGF0KCk7XG5cbiAgICAgICAgY2IoXG4gICAgICAgICAgdW5pcVdpdGgoXG4gICAgICAgICAgICB3b3JkcyxcbiAgICAgICAgICAgIChhLCBiKSA9PiBhLnZhbHVlID09PSBiLnZhbHVlICYmIGEudHlwZSA9PT0gYi50eXBlXG4gICAgICAgICAgKS5zbGljZSgwLCB0aGlzLnNldHRpbmdzLm1heE51bWJlck9mU3VnZ2VzdGlvbnMpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zaG93RGVidWdMb2coKCkgPT5cbiAgICAgICAgICBidWlsZExvZ01lc3NhZ2UoXCJHZXQgc3VnZ2VzdGlvbnNcIiwgcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydClcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICB0aGlzLnNldHRpbmdzLmRlbGF5TWlsbGlTZWNvbmRzLFxuICAgICAgdHJ1ZVxuICAgICk7XG5cbiAgICB0aGlzLmRlYm91bmNlQ2xvc2UgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfSwgdGhpcy5zZXR0aW5ncy5kZWxheU1pbGxpU2Vjb25kcyArIDUwKTtcblxuICAgIHRoaXMucmVnaXN0ZXJLZXltYXBzKCk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyS2V5bWFwcygpIHtcbiAgICBjb25zdCByZWdpc3RlcktleUFzSWdub3JlZCA9IChcbiAgICAgIG1vZGlmaWVyczogTW9kaWZpZXJbXSxcbiAgICAgIGtleTogc3RyaW5nIHwgbnVsbFxuICAgICkgPT4ge1xuICAgICAgdGhpcy5rZXltYXBFdmVudEhhbmRsZXIucHVzaChcbiAgICAgICAgdGhpcy5zY29wZS5yZWdpc3Rlcihtb2RpZmllcnMsIGtleSwgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfTtcblxuICAgIC8vIENsZWFyXG4gICAgdGhpcy5rZXltYXBFdmVudEhhbmRsZXIuZm9yRWFjaCgoeCkgPT4gdGhpcy5zY29wZS51bnJlZ2lzdGVyKHgpKTtcbiAgICB0aGlzLmtleW1hcEV2ZW50SGFuZGxlciA9IFtdO1xuICAgIHRoaXMuc2NvcGUudW5yZWdpc3Rlcih0aGlzLnNjb3BlLmtleXMuZmluZCgoeCkgPT4geC5rZXkgPT09IFwiRW50ZXJcIikhKTtcbiAgICB0aGlzLnNjb3BlLnVucmVnaXN0ZXIodGhpcy5zY29wZS5rZXlzLmZpbmQoKHgpID0+IHgua2V5ID09PSBcIkFycm93VXBcIikhKTtcbiAgICB0aGlzLnNjb3BlLnVucmVnaXN0ZXIodGhpcy5zY29wZS5rZXlzLmZpbmQoKHgpID0+IHgua2V5ID09PSBcIkFycm93RG93blwiKSEpO1xuXG4gICAgLy8gc2VsZWN0U3VnZ2VzdGlvbktleXNcbiAgICBjb25zdCBzZWxlY3RTdWdnZXN0aW9uS2V5ID0gU2VsZWN0U3VnZ2VzdGlvbktleS5mcm9tTmFtZShcbiAgICAgIHRoaXMuc2V0dGluZ3Muc2VsZWN0U3VnZ2VzdGlvbktleXNcbiAgICApO1xuICAgIGlmIChzZWxlY3RTdWdnZXN0aW9uS2V5ICE9PSBTZWxlY3RTdWdnZXN0aW9uS2V5LkVOVEVSKSB7XG4gICAgICByZWdpc3RlcktleUFzSWdub3JlZChcbiAgICAgICAgU2VsZWN0U3VnZ2VzdGlvbktleS5FTlRFUi5rZXlCaW5kLm1vZGlmaWVycyxcbiAgICAgICAgU2VsZWN0U3VnZ2VzdGlvbktleS5FTlRFUi5rZXlCaW5kLmtleVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHNlbGVjdFN1Z2dlc3Rpb25LZXkgIT09IFNlbGVjdFN1Z2dlc3Rpb25LZXkuVEFCKSB7XG4gICAgICByZWdpc3RlcktleUFzSWdub3JlZChcbiAgICAgICAgU2VsZWN0U3VnZ2VzdGlvbktleS5UQUIua2V5QmluZC5tb2RpZmllcnMsXG4gICAgICAgIFNlbGVjdFN1Z2dlc3Rpb25LZXkuVEFCLmtleUJpbmQua2V5XG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoc2VsZWN0U3VnZ2VzdGlvbktleSAhPT0gU2VsZWN0U3VnZ2VzdGlvbktleS5Ob25lKSB7XG4gICAgICB0aGlzLmtleW1hcEV2ZW50SGFuZGxlci5wdXNoKFxuICAgICAgICB0aGlzLnNjb3BlLnJlZ2lzdGVyKFxuICAgICAgICAgIHNlbGVjdFN1Z2dlc3Rpb25LZXkua2V5QmluZC5tb2RpZmllcnMsXG4gICAgICAgICAgc2VsZWN0U3VnZ2VzdGlvbktleS5rZXlCaW5kLmtleSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zLnVzZVNlbGVjdGVkSXRlbSh7fSk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIHByb3BhZ2F0ZUVTQ1xuICAgIHRoaXMuc2NvcGUua2V5cy5maW5kKCh4KSA9PiB4LmtleSA9PT0gXCJFc2NhcGVcIikhLmZ1bmMgPSAoKSA9PiB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5wcm9wYWdhdGVFc2M7XG4gICAgfTtcblxuICAgIC8vIGN5Y2xlVGhyb3VnaFN1Z2dlc3Rpb25zS2V5c1xuICAgIGNvbnN0IHNlbGVjdE5leHQgPSAoKSA9PiB7XG4gICAgICB0aGlzLnN1Z2dlc3Rpb25zLnNldFNlbGVjdGVkSXRlbSh0aGlzLnN1Z2dlc3Rpb25zLnNlbGVjdGVkSXRlbSArIDEsIHRydWUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgY29uc3Qgc2VsZWN0UHJldmlvdXMgPSAoKSA9PiB7XG4gICAgICB0aGlzLnN1Z2dlc3Rpb25zLnNldFNlbGVjdGVkSXRlbSh0aGlzLnN1Z2dlc3Rpb25zLnNlbGVjdGVkSXRlbSAtIDEsIHRydWUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG5cbiAgICBjb25zdCBjeWNsZVRocm91Z2hTdWdnZXN0aW9uc0tleXMgPSBDeWNsZVRocm91Z2hTdWdnZXN0aW9uc0tleXMuZnJvbU5hbWUoXG4gICAgICB0aGlzLnNldHRpbmdzLmFkZGl0aW9uYWxDeWNsZVRocm91Z2hTdWdnZXN0aW9uc0tleXNcbiAgICApO1xuICAgIGlmICh0aGlzLnNldHRpbmdzLmRpc2FibGVVcERvd25LZXlzRm9yQ3ljbGVUaHJvdWdoU3VnZ2VzdGlvbnNLZXlzKSB7XG4gICAgICB0aGlzLmtleW1hcEV2ZW50SGFuZGxlci5wdXNoKFxuICAgICAgICB0aGlzLnNjb3BlLnJlZ2lzdGVyKFtdLCBcIkFycm93RG93blwiLCAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KSxcbiAgICAgICAgdGhpcy5zY29wZS5yZWdpc3RlcihbXSwgXCJBcnJvd1VwXCIsICgpID0+IHtcbiAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmtleW1hcEV2ZW50SGFuZGxlci5wdXNoKFxuICAgICAgICB0aGlzLnNjb3BlLnJlZ2lzdGVyKFtdLCBcIkFycm93RG93blwiLCBzZWxlY3ROZXh0KSxcbiAgICAgICAgdGhpcy5zY29wZS5yZWdpc3RlcihbXSwgXCJBcnJvd1VwXCIsIHNlbGVjdFByZXZpb3VzKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGN5Y2xlVGhyb3VnaFN1Z2dlc3Rpb25zS2V5cyAhPT0gQ3ljbGVUaHJvdWdoU3VnZ2VzdGlvbnNLZXlzLk5PTkUpIHtcbiAgICAgIGlmIChjeWNsZVRocm91Z2hTdWdnZXN0aW9uc0tleXMgPT09IEN5Y2xlVGhyb3VnaFN1Z2dlc3Rpb25zS2V5cy5UQUIpIHtcbiAgICAgICAgdGhpcy5zY29wZS51bnJlZ2lzdGVyKFxuICAgICAgICAgIHRoaXMuc2NvcGUua2V5cy5maW5kKCh4KSA9PiB4Lm1vZGlmaWVycyA9PT0gXCJcIiAmJiB4LmtleSA9PT0gXCJUYWJcIikhXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLmtleW1hcEV2ZW50SGFuZGxlci5wdXNoKFxuICAgICAgICB0aGlzLnNjb3BlLnJlZ2lzdGVyKFxuICAgICAgICAgIGN5Y2xlVGhyb3VnaFN1Z2dlc3Rpb25zS2V5cy5uZXh0S2V5Lm1vZGlmaWVycyxcbiAgICAgICAgICBjeWNsZVRocm91Z2hTdWdnZXN0aW9uc0tleXMubmV4dEtleS5rZXksXG4gICAgICAgICAgc2VsZWN0TmV4dFxuICAgICAgICApLFxuICAgICAgICB0aGlzLnNjb3BlLnJlZ2lzdGVyKFxuICAgICAgICAgIGN5Y2xlVGhyb3VnaFN1Z2dlc3Rpb25zS2V5cy5wcmV2aW91c0tleS5tb2RpZmllcnMsXG4gICAgICAgICAgY3ljbGVUaHJvdWdoU3VnZ2VzdGlvbnNLZXlzLnByZXZpb3VzS2V5LmtleSxcbiAgICAgICAgICBzZWxlY3RQcmV2aW91c1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IG9wZW5Tb3VyY2VGaWxlS2V5ID0gT3BlblNvdXJjZUZpbGVLZXlzLmZyb21OYW1lKFxuICAgICAgdGhpcy5zZXR0aW5ncy5vcGVuU291cmNlRmlsZUtleVxuICAgICk7XG4gICAgaWYgKG9wZW5Tb3VyY2VGaWxlS2V5ICE9PSBPcGVuU291cmNlRmlsZUtleXMuTk9ORSkge1xuICAgICAgdGhpcy5rZXltYXBFdmVudEhhbmRsZXIucHVzaChcbiAgICAgICAgdGhpcy5zY29wZS5yZWdpc3RlcihcbiAgICAgICAgICBvcGVuU291cmNlRmlsZUtleS5rZXlCaW5kLm1vZGlmaWVycyxcbiAgICAgICAgICBvcGVuU291cmNlRmlsZUtleS5rZXlCaW5kLmtleSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5zdWdnZXN0aW9ucy52YWx1ZXNbdGhpcy5zdWdnZXN0aW9ucy5zZWxlY3RlZEl0ZW1dO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBpdGVtLnR5cGUgIT09IFwiY3VycmVudFZhdWx0XCIgJiZcbiAgICAgICAgICAgICAgaXRlbS50eXBlICE9PSBcImludGVybmFsTGlua1wiICYmXG4gICAgICAgICAgICAgIGl0ZW0udHlwZSAhPT0gXCJmcm9udE1hdHRlclwiXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBtYXJrZG93bkZpbGUgPSB0aGlzLmFwcEhlbHBlci5nZXRNYXJrZG93bkZpbGVCeVBhdGgoXG4gICAgICAgICAgICAgIGl0ZW0uY3JlYXRlZFBhdGhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoIW1hcmtkb3duRmlsZSkge1xuICAgICAgICAgICAgICAvLyBub2luc3BlY3Rpb24gT2JqZWN0QWxsb2NhdGlvbklnbm9yZWRcbiAgICAgICAgICAgICAgbmV3IE5vdGljZShgQ2FuJ3Qgb3BlbiAke2l0ZW0uY3JlYXRlZFBhdGh9YCk7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYXBwSGVscGVyLm9wZW5NYXJrZG93bkZpbGUobWFya2Rvd25GaWxlLCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVmcmVzaEN1cnJlbnRGaWxlVG9rZW5zKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgdGhpcy5zdGF0dXNCYXIuc2V0Q3VycmVudEZpbGVJbmRleGluZygpO1xuXG4gICAgaWYgKCF0aGlzLnNldHRpbmdzLmVuYWJsZUN1cnJlbnRGaWxlQ29tcGxlbWVudCkge1xuICAgICAgdGhpcy5zdGF0dXNCYXIuc2V0Q3VycmVudEZpbGVEaXNhYmxlZCgpO1xuICAgICAgdGhpcy5jdXJyZW50RmlsZVdvcmRQcm92aWRlci5jbGVhcldvcmRzKCk7XG4gICAgICB0aGlzLnNob3dEZWJ1Z0xvZygoKSA9PlxuICAgICAgICBidWlsZExvZ01lc3NhZ2UoXG4gICAgICAgICAgXCLwn5GiIFNraXA6IEluZGV4IGN1cnJlbnQgZmlsZSB0b2tlbnNcIixcbiAgICAgICAgICBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5jdXJyZW50RmlsZVdvcmRQcm92aWRlci5yZWZyZXNoV29yZHMoXG4gICAgICB0aGlzLnNldHRpbmdzLm9ubHlDb21wbGVtZW50RW5nbGlzaE9uQ3VycmVudEZpbGVDb21wbGVtZW50LFxuICAgICAgdGhpcy5jdXJyZW50RmlsZU1pbk51bWJlck9mQ2hhcmFjdGVyc1xuICAgICk7XG5cbiAgICB0aGlzLnN0YXR1c0Jhci5zZXRDdXJyZW50RmlsZUluZGV4ZWQoXG4gICAgICB0aGlzLmN1cnJlbnRGaWxlV29yZFByb3ZpZGVyLndvcmRDb3VudFxuICAgICk7XG4gICAgdGhpcy5zaG93RGVidWdMb2coKCkgPT5cbiAgICAgIGJ1aWxkTG9nTWVzc2FnZShcIkluZGV4IGN1cnJlbnQgZmlsZSB0b2tlbnNcIiwgcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaEN1cnJlbnRWYXVsdFRva2VucygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIHRoaXMuc3RhdHVzQmFyLnNldEN1cnJlbnRWYXVsdEluZGV4aW5nKCk7XG5cbiAgICBpZiAoIXRoaXMuc2V0dGluZ3MuZW5hYmxlQ3VycmVudFZhdWx0Q29tcGxlbWVudCkge1xuICAgICAgdGhpcy5zdGF0dXNCYXIuc2V0Q3VycmVudFZhdWx0RGlzYWJsZWQoKTtcbiAgICAgIHRoaXMuY3VycmVudFZhdWx0V29yZFByb3ZpZGVyLmNsZWFyV29yZHMoKTtcbiAgICAgIHRoaXMuc2hvd0RlYnVnTG9nKCgpID0+XG4gICAgICAgIGJ1aWxkTG9nTWVzc2FnZShcbiAgICAgICAgICBcIvCfkaIgU2tpcDogSW5kZXggY3VycmVudCB2YXVsdCB0b2tlbnNcIixcbiAgICAgICAgICBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5jdXJyZW50VmF1bHRXb3JkUHJvdmlkZXIucmVmcmVzaFdvcmRzKFxuICAgICAgdGhpcy5jdXJyZW50VmF1bHRNaW5OdW1iZXJPZkNoYXJhY3RlcnNcbiAgICApO1xuXG4gICAgdGhpcy5zdGF0dXNCYXIuc2V0Q3VycmVudFZhdWx0SW5kZXhlZChcbiAgICAgIHRoaXMuY3VycmVudFZhdWx0V29yZFByb3ZpZGVyLndvcmRDb3VudFxuICAgICk7XG4gICAgdGhpcy5zaG93RGVidWdMb2coKCkgPT5cbiAgICAgIGJ1aWxkTG9nTWVzc2FnZShcIkluZGV4IGN1cnJlbnQgdmF1bHQgdG9rZW5zXCIsIHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2hDdXN0b21EaWN0aW9uYXJ5VG9rZW5zKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgdGhpcy5zdGF0dXNCYXIuc2V0Q3VzdG9tRGljdGlvbmFyeUluZGV4aW5nKCk7XG5cbiAgICBpZiAoIXRoaXMuc2V0dGluZ3MuZW5hYmxlQ3VzdG9tRGljdGlvbmFyeUNvbXBsZW1lbnQpIHtcbiAgICAgIHRoaXMuc3RhdHVzQmFyLnNldEN1c3RvbURpY3Rpb25hcnlEaXNhYmxlZCgpO1xuICAgICAgdGhpcy5jdXN0b21EaWN0aW9uYXJ5V29yZFByb3ZpZGVyLmNsZWFyV29yZHMoKTtcbiAgICAgIHRoaXMuc2hvd0RlYnVnTG9nKCgpID0+XG4gICAgICAgIGJ1aWxkTG9nTWVzc2FnZShcbiAgICAgICAgICBcIvCfkaJTa2lwOiBJbmRleCBjdXN0b20gZGljdGlvbmFyeSB0b2tlbnNcIixcbiAgICAgICAgICBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5jdXN0b21EaWN0aW9uYXJ5V29yZFByb3ZpZGVyLnJlZnJlc2hDdXN0b21Xb3Jkcyh7XG4gICAgICByZWdleHA6IHRoaXMuc2V0dGluZ3MuY3VzdG9tRGljdGlvbmFyeVdvcmRSZWdleFBhdHRlcm4sXG4gICAgICBkZWxpbWl0ZXJGb3JIaWRlOiB0aGlzLnNldHRpbmdzLmRlbGltaXRlclRvSGlkZVN1Z2dlc3Rpb24gfHwgdW5kZWZpbmVkLFxuICAgICAgZGVsaW1pdGVyRm9yRGlzcGxheTpcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kZWxpbWl0ZXJUb0RpdmlkZVN1Z2dlc3Rpb25zRm9yRGlzcGxheUZyb21JbnNlcnRpb24gfHxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgY2FyZXRTeW1ib2w6XG4gICAgICAgIHRoaXMuc2V0dGluZ3MuY2FyZXRMb2NhdGlvblN5bWJvbEFmdGVyQ29tcGxlbWVudCB8fCB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICB0aGlzLnN0YXR1c0Jhci5zZXRDdXN0b21EaWN0aW9uYXJ5SW5kZXhlZChcbiAgICAgIHRoaXMuY3VzdG9tRGljdGlvbmFyeVdvcmRQcm92aWRlci53b3JkQ291bnRcbiAgICApO1xuICAgIHRoaXMuc2hvd0RlYnVnTG9nKCgpID0+XG4gICAgICBidWlsZExvZ01lc3NhZ2UoXG4gICAgICAgIFwiSW5kZXggY3VzdG9tIGRpY3Rpb25hcnkgdG9rZW5zXCIsXG4gICAgICAgIHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcmVmcmVzaEludGVybmFsTGlua1Rva2VucygpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIHRoaXMuc3RhdHVzQmFyLnNldEludGVybmFsTGlua0luZGV4aW5nKCk7XG5cbiAgICBpZiAoIXRoaXMuc2V0dGluZ3MuZW5hYmxlSW50ZXJuYWxMaW5rQ29tcGxlbWVudCkge1xuICAgICAgdGhpcy5zdGF0dXNCYXIuc2V0SW50ZXJuYWxMaW5rRGlzYWJsZWQoKTtcbiAgICAgIHRoaXMuaW50ZXJuYWxMaW5rV29yZFByb3ZpZGVyLmNsZWFyV29yZHMoKTtcbiAgICAgIHRoaXMuc2hvd0RlYnVnTG9nKCgpID0+XG4gICAgICAgIGJ1aWxkTG9nTWVzc2FnZShcbiAgICAgICAgICBcIvCfkaJTa2lwOiBJbmRleCBpbnRlcm5hbCBsaW5rIHRva2Vuc1wiLFxuICAgICAgICAgIHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmludGVybmFsTGlua1dvcmRQcm92aWRlci5yZWZyZXNoV29yZHMoXG4gICAgICB0aGlzLnNldHRpbmdzLnN1Z2dlc3RJbnRlcm5hbExpbmtXaXRoQWxpYXMsXG4gICAgICB0aGlzLmV4Y2x1ZGVJbnRlcm5hbExpbmtQcmVmaXhQYXRoUGF0dGVybnNcbiAgICApO1xuXG4gICAgdGhpcy5zdGF0dXNCYXIuc2V0SW50ZXJuYWxMaW5rSW5kZXhlZChcbiAgICAgIHRoaXMuaW50ZXJuYWxMaW5rV29yZFByb3ZpZGVyLndvcmRDb3VudFxuICAgICk7XG4gICAgdGhpcy5zaG93RGVidWdMb2coKCkgPT5cbiAgICAgIGJ1aWxkTG9nTWVzc2FnZShcIkluZGV4IGludGVybmFsIGxpbmsgdG9rZW5zXCIsIHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnQpXG4gICAgKTtcbiAgfVxuXG4gIHJlZnJlc2hGcm9udE1hdHRlclRva2VucygpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIHRoaXMuc3RhdHVzQmFyLnNldEZyb250TWF0dGVySW5kZXhpbmcoKTtcblxuICAgIGlmICghdGhpcy5zZXR0aW5ncy5lbmFibGVGcm9udE1hdHRlckNvbXBsZW1lbnQpIHtcbiAgICAgIHRoaXMuc3RhdHVzQmFyLnNldEZyb250TWF0dGVyRGlzYWJsZWQoKTtcbiAgICAgIHRoaXMuZnJvbnRNYXR0ZXJXb3JkUHJvdmlkZXIuY2xlYXJXb3JkcygpO1xuICAgICAgdGhpcy5zaG93RGVidWdMb2coKCkgPT5cbiAgICAgICAgYnVpbGRMb2dNZXNzYWdlKFxuICAgICAgICAgIFwi8J+RolNraXA6IEluZGV4IGZyb250IG1hdHRlciB0b2tlbnNcIixcbiAgICAgICAgICBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5mcm9udE1hdHRlcldvcmRQcm92aWRlci5yZWZyZXNoV29yZHMoKTtcblxuICAgIHRoaXMuc3RhdHVzQmFyLnNldEZyb250TWF0dGVySW5kZXhlZChcbiAgICAgIHRoaXMuZnJvbnRNYXR0ZXJXb3JkUHJvdmlkZXIud29yZENvdW50XG4gICAgKTtcbiAgICB0aGlzLnNob3dEZWJ1Z0xvZygoKSA9PlxuICAgICAgYnVpbGRMb2dNZXNzYWdlKFwiSW5kZXggZnJvbnQgbWF0dGVyIHRva2Vuc1wiLCBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0KVxuICAgICk7XG4gIH1cblxuICB1cGRhdGVGcm9udE1hdHRlclRva2VuSW5kZXgoZmlsZTogVEZpbGUpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGlmICghdGhpcy5zZXR0aW5ncy5lbmFibGVGcm9udE1hdHRlckNvbXBsZW1lbnQpIHtcbiAgICAgIHRoaXMuc2hvd0RlYnVnTG9nKCgpID0+XG4gICAgICAgIGJ1aWxkTG9nTWVzc2FnZShcbiAgICAgICAgICBcIvCfkaJTa2lwOiBVcGRhdGUgZnJvbnQgbWF0dGVyIHRva2VuIGluZGV4XCIsXG4gICAgICAgICAgcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFxuICAgICAgICApXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZnJvbnRNYXR0ZXJXb3JkUHJvdmlkZXIudXBkYXRlV29yZEluZGV4KGZpbGUpO1xuXG4gICAgdGhpcy5zaG93RGVidWdMb2coKCkgPT5cbiAgICAgIGJ1aWxkTG9nTWVzc2FnZShcbiAgICAgICAgXCJVcGRhdGUgZnJvbnQgbWF0dGVyIHRva2VuIGluZGV4XCIsXG4gICAgICAgIHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgdXBkYXRlRnJvbnRNYXR0ZXJUb2tlbigpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGlmICghdGhpcy5zZXR0aW5ncy5lbmFibGVGcm9udE1hdHRlckNvbXBsZW1lbnQpIHtcbiAgICAgIHRoaXMuc2hvd0RlYnVnTG9nKCgpID0+XG4gICAgICAgIGJ1aWxkTG9nTWVzc2FnZShcbiAgICAgICAgICBcIvCfkaJTa2lwOiBVcGRhdGUgZnJvbnQgbWF0dGVyIHRva2VuXCIsXG4gICAgICAgICAgcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFxuICAgICAgICApXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZnJvbnRNYXR0ZXJXb3JkUHJvdmlkZXIudXBkYXRlV29yZHMoKTtcbiAgICB0aGlzLnN0YXR1c0Jhci5zZXRGcm9udE1hdHRlckluZGV4ZWQoXG4gICAgICB0aGlzLmZyb250TWF0dGVyV29yZFByb3ZpZGVyLndvcmRDb3VudFxuICAgICk7XG5cbiAgICB0aGlzLnNob3dEZWJ1Z0xvZygoKSA9PlxuICAgICAgYnVpbGRMb2dNZXNzYWdlKFwiVXBkYXRlIGZyb250IG1hdHRlciB0b2tlblwiLCBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0KVxuICAgICk7XG4gIH1cblxuICBvblRyaWdnZXIoXG4gICAgY3Vyc29yOiBFZGl0b3JQb3NpdGlvbixcbiAgICBlZGl0b3I6IEVkaXRvcixcbiAgICBmaWxlOiBURmlsZVxuICApOiBFZGl0b3JTdWdnZXN0VHJpZ2dlckluZm8gfCBudWxsIHtcbiAgICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuXG4gICAgY29uc3Qgc2hvd0RlYnVnTG9nID0gKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5zaG93RGVidWdMb2coKCkgPT4gYFtvblRyaWdnZXJdICR7bWVzc2FnZX1gKTtcbiAgICB9O1xuICAgIGNvbnN0IG9uUmV0dXJuTnVsbCA9IChtZXNzYWdlOiBzdHJpbmcpID0+IHtcbiAgICAgIHNob3dEZWJ1Z0xvZyhtZXNzYWdlKTtcbiAgICAgIHRoaXMucnVuTWFudWFsbHkgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9O1xuXG4gICAgaWYgKFxuICAgICAgIXRoaXMuc2V0dGluZ3MuY29tcGxlbWVudEF1dG9tYXRpY2FsbHkgJiZcbiAgICAgICF0aGlzLmlzT3BlbiAmJlxuICAgICAgIXRoaXMucnVuTWFudWFsbHlcbiAgICApIHtcbiAgICAgIG9uUmV0dXJuTnVsbChcIkRvbid0IHNob3cgc3VnZ2VzdGlvbnNcIik7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLnNldHRpbmdzLmRpc2FibGVTdWdnZXN0aW9uc0R1cmluZ0ltZU9uICYmXG4gICAgICB0aGlzLmFwcEhlbHBlci5pc0lNRU9uKCkgJiZcbiAgICAgICF0aGlzLnJ1bk1hbnVhbGx5XG4gICAgKSB7XG4gICAgICBvblJldHVybk51bGwoXCJEb24ndCBzaG93IHN1Z2dlc3Rpb25zIGZvciBJTUVcIik7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBjbCA9IHRoaXMuYXBwSGVscGVyLmdldEN1cnJlbnRMaW5lKGVkaXRvcik7XG4gICAgaWYgKHRoaXMucHJldmlvdXNDdXJyZW50TGluZSA9PT0gY2wgJiYgIXRoaXMucnVuTWFudWFsbHkpIHtcbiAgICAgIHRoaXMucHJldmlvdXNDdXJyZW50TGluZSA9IGNsO1xuICAgICAgb25SZXR1cm5OdWxsKFwiRG9uJ3Qgc2hvdyBzdWdnZXN0aW9ucyBiZWNhdXNlIHRoZXJlIGFyZSBubyBjaGFuZ2VzXCIpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHRoaXMucHJldmlvdXNDdXJyZW50TGluZSA9IGNsO1xuXG4gICAgY29uc3QgY3VycmVudExpbmVVbnRpbEN1cnNvciA9XG4gICAgICB0aGlzLmFwcEhlbHBlci5nZXRDdXJyZW50TGluZVVudGlsQ3Vyc29yKGVkaXRvcik7XG4gICAgaWYgKGN1cnJlbnRMaW5lVW50aWxDdXJzb3Iuc3RhcnRzV2l0aChcIi0tLVwiKSkge1xuICAgICAgb25SZXR1cm5OdWxsKFxuICAgICAgICBcIkRvbid0IHNob3cgc3VnZ2VzdGlvbnMgYmVjYXVzZSBpdCBzdXBwb3NlcyBmcm9udCBtYXR0ZXIgb3IgaG9yaXpvbnRhbCBsaW5lXCJcbiAgICAgICk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgY3VycmVudExpbmVVbnRpbEN1cnNvci5zdGFydHNXaXRoKFwifn5+XCIpIHx8XG4gICAgICBjdXJyZW50TGluZVVudGlsQ3Vyc29yLnN0YXJ0c1dpdGgoXCJgYGBcIilcbiAgICApIHtcbiAgICAgIG9uUmV0dXJuTnVsbChcbiAgICAgICAgXCJEb24ndCBzaG93IHN1Z2dlc3Rpb25zIGJlY2F1c2UgaXQgc3VwcG9zZXMgZnJvbnQgY29kZSBibG9ja1wiXG4gICAgICApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgdG9rZW5zID0gdGhpcy50b2tlbml6ZXIudG9rZW5pemUoY3VycmVudExpbmVVbnRpbEN1cnNvciwgdHJ1ZSk7XG4gICAgc2hvd0RlYnVnTG9nKGB0b2tlbnMgaXMgJHt0b2tlbnN9YCk7XG5cbiAgICBjb25zdCB0b2tlbml6ZWQgPSB0aGlzLnRva2VuaXplci5yZWN1cnNpdmVUb2tlbml6ZShjdXJyZW50TGluZVVudGlsQ3Vyc29yKTtcbiAgICBjb25zdCBjdXJyZW50VG9rZW5zID0gdG9rZW5pemVkLnNsaWNlKFxuICAgICAgdG9rZW5pemVkLmxlbmd0aCA+IHRoaXMuc2V0dGluZ3MubWF4TnVtYmVyT2ZXb3Jkc0FzUGhyYXNlXG4gICAgICAgID8gdG9rZW5pemVkLmxlbmd0aCAtIHRoaXMuc2V0dGluZ3MubWF4TnVtYmVyT2ZXb3Jkc0FzUGhyYXNlXG4gICAgICAgIDogMFxuICAgICk7XG4gICAgc2hvd0RlYnVnTG9nKGBjdXJyZW50VG9rZW5zIGlzICR7SlNPTi5zdHJpbmdpZnkoY3VycmVudFRva2Vucyl9YCk7XG5cbiAgICBjb25zdCBjdXJyZW50VG9rZW4gPSBjdXJyZW50VG9rZW5zWzBdPy53b3JkO1xuICAgIHNob3dEZWJ1Z0xvZyhgY3VycmVudFRva2VuIGlzICR7Y3VycmVudFRva2VufWApO1xuICAgIGlmICghY3VycmVudFRva2VuKSB7XG4gICAgICBvblJldHVybk51bGwoYERvbid0IHNob3cgc3VnZ2VzdGlvbnMgYmVjYXVzZSBjdXJyZW50VG9rZW4gaXMgZW1wdHlgKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRUb2tlblNlcGFyYXRlZFdoaXRlU3BhY2UgPVxuICAgICAgY3VycmVudExpbmVVbnRpbEN1cnNvci5zcGxpdChcIiBcIikubGFzdCgpID8/IFwiXCI7XG4gICAgaWYgKFxuICAgICAgbmV3IFJlZ0V4cChgXlske3RoaXMuc2V0dGluZ3MuZmlyc3RDaGFyYWN0ZXJzRGlzYWJsZVN1Z2dlc3Rpb25zfV1gKS50ZXN0KFxuICAgICAgICBjdXJyZW50VG9rZW5TZXBhcmF0ZWRXaGl0ZVNwYWNlXG4gICAgICApXG4gICAgKSB7XG4gICAgICBvblJldHVybk51bGwoXG4gICAgICAgIGBEb24ndCBzaG93IHN1Z2dlc3Rpb25zIGZvciBhdm9pZGluZyB0byBjb25mbGljdCB3aXRoIHRoZSBvdGhlciBjb21tYW5kcy5gXG4gICAgICApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgY3VycmVudFRva2VuLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgQm9vbGVhbihjdXJyZW50VG9rZW4ubWF0Y2godGhpcy50b2tlbml6ZXIuZ2V0VHJpbVBhdHRlcm4oKSkpXG4gICAgKSB7XG4gICAgICBvblJldHVybk51bGwoXG4gICAgICAgIGBEb24ndCBzaG93IHN1Z2dlc3Rpb25zIGJlY2F1c2UgY3VycmVudFRva2VuIGlzIFRSSU1fUEFUVEVSTmBcbiAgICAgICk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50RnJvbnRNYXR0ZXIgPSB0aGlzLnNldHRpbmdzLmVuYWJsZUZyb250TWF0dGVyQ29tcGxlbWVudFxuICAgICAgPyB0aGlzLmFwcEhlbHBlci5nZXRDdXJyZW50RnJvbnRNYXR0ZXIoKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgc2hvd0RlYnVnTG9nKGBDdXJyZW50IGZyb250IG1hdHRlciBpcyAke2N1cnJlbnRGcm9udE1hdHRlcn1gKTtcblxuICAgIGlmIChcbiAgICAgICF0aGlzLnJ1bk1hbnVhbGx5ICYmXG4gICAgICAhY3VycmVudEZyb250TWF0dGVyICYmXG4gICAgICBjdXJyZW50VG9rZW4ubGVuZ3RoIDwgdGhpcy5taW5OdW1iZXJUcmlnZ2VyZWRcbiAgICApIHtcbiAgICAgIG9uUmV0dXJuTnVsbChcbiAgICAgICAgXCJEb24ndCBzaG93IHN1Z2dlc3Rpb25zIGJlY2F1c2UgY3VycmVudFRva2VuIGlzIGxlc3MgdGhhbiBtaW5OdW1iZXJUcmlnZ2VyZWQgb3B0aW9uXCJcbiAgICAgICk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBzaG93RGVidWdMb2coYnVpbGRMb2dNZXNzYWdlKFwib25UcmlnZ2VyXCIsIHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnQpKTtcbiAgICB0aGlzLnJ1bk1hbnVhbGx5ID0gZmFsc2U7XG5cbiAgICAvLyBIYWNrIGltcGxlbWVudGF0aW9uIGZvciBGcm9udCBtYXR0ZXIgY29tcGxlbWVudFxuICAgIGlmIChjdXJyZW50RnJvbnRNYXR0ZXIgJiYgY3VycmVudFRva2Vucy5sYXN0KCk/LndvcmQubWF0Y2goL1teIF0gJC8pKSB7XG4gICAgICBjdXJyZW50VG9rZW5zLnB1c2goeyB3b3JkOiBcIlwiLCBvZmZzZXQ6IGN1cnJlbnRMaW5lVW50aWxDdXJzb3IubGVuZ3RoIH0pO1xuICAgIH1cblxuICAgIC8vIEZvciBtdWx0aS13b3JkIGNvbXBsZXRpb25cbiAgICB0aGlzLmNvbnRleHRTdGFydENoID0gY3Vyc29yLmNoIC0gY3VycmVudFRva2VuLmxlbmd0aDtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQ6IHtcbiAgICAgICAgY2g6IGN1cnNvci5jaCAtIChjdXJyZW50VG9rZW5zLmxhc3QoKT8ud29yZD8ubGVuZ3RoID8/IDApLCAvLyBGb3IgbXVsdGktd29yZCBjb21wbGV0aW9uXG4gICAgICAgIGxpbmU6IGN1cnNvci5saW5lLFxuICAgICAgfSxcbiAgICAgIGVuZDogY3Vyc29yLFxuICAgICAgcXVlcnk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgY3VycmVudEZyb250TWF0dGVyLFxuICAgICAgICBxdWVyaWVzOiBjdXJyZW50VG9rZW5zLm1hcCgoeCkgPT4gKHtcbiAgICAgICAgICAuLi54LFxuICAgICAgICAgIG9mZnNldDogeC5vZmZzZXQgLSBjdXJyZW50VG9rZW5zWzBdLm9mZnNldCxcbiAgICAgICAgfSkpLFxuICAgICAgfSksXG4gICAgfTtcbiAgfVxuXG4gIGdldFN1Z2dlc3Rpb25zKGNvbnRleHQ6IEVkaXRvclN1Z2dlc3RDb250ZXh0KTogV29yZFtdIHwgUHJvbWlzZTxXb3JkW10+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMuZGVib3VuY2VHZXRTdWdnZXN0aW9ucyhjb250ZXh0LCAod29yZHMpID0+IHtcbiAgICAgICAgcmVzb2x2ZSh3b3Jkcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlbmRlclN1Z2dlc3Rpb24od29yZDogV29yZCwgZWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgY29uc3QgYmFzZSA9IGNyZWF0ZURpdigpO1xuXG4gICAgbGV0IHRleHQgPSB3b3JkLnZhbHVlO1xuICAgIGlmIChcbiAgICAgIHdvcmQudHlwZSA9PT0gXCJjdXN0b21EaWN0aW9uYXJ5XCIgJiZcbiAgICAgIHdvcmQuaW5zZXJ0ZWRUZXh0ICYmXG4gICAgICB0aGlzLnNldHRpbmdzLmRpc3BsYXllZFRleHRTdWZmaXhcbiAgICApIHtcbiAgICAgIHRleHQgKz0gdGhpcy5zZXR0aW5ncy5kaXNwbGF5ZWRUZXh0U3VmZml4O1xuICAgIH1cblxuICAgIGJhc2UuY3JlYXRlRGl2KHtcbiAgICAgIHRleHQsXG4gICAgICBjbHM6XG4gICAgICAgIHdvcmQudHlwZSA9PT0gXCJpbnRlcm5hbExpbmtcIiAmJiB3b3JkLmFsaWFzTWV0YVxuICAgICAgICAgID8gXCJ2YXJpb3VzLWNvbXBsZW1lbnRzX19zdWdnZXN0aW9uLWl0ZW1fX2NvbnRlbnRfX2FsaWFzXCJcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5kZXNjcmlwdGlvbk9uU3VnZ2VzdGlvbi50b0Rpc3BsYXkod29yZCk7XG4gICAgaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgICBiYXNlLmNyZWF0ZURpdih7XG4gICAgICAgIGNsczogXCJ2YXJpb3VzLWNvbXBsZW1lbnRzX19zdWdnZXN0aW9uLWl0ZW1fX2Rlc2NyaXB0aW9uXCIsXG4gICAgICAgIHRleHQ6IGAke2Rlc2NyaXB0aW9ufWAsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBlbC5hcHBlbmRDaGlsZChiYXNlKTtcblxuICAgIGVsLmFkZENsYXNzKFwidmFyaW91cy1jb21wbGVtZW50c19fc3VnZ2VzdGlvbi1pdGVtXCIpO1xuICAgIHN3aXRjaCAod29yZC50eXBlKSB7XG4gICAgICBjYXNlIFwiY3VycmVudEZpbGVcIjpcbiAgICAgICAgZWwuYWRkQ2xhc3MoXCJ2YXJpb3VzLWNvbXBsZW1lbnRzX19zdWdnZXN0aW9uLWl0ZW1fX2N1cnJlbnQtZmlsZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiY3VycmVudFZhdWx0XCI6XG4gICAgICAgIGVsLmFkZENsYXNzKFwidmFyaW91cy1jb21wbGVtZW50c19fc3VnZ2VzdGlvbi1pdGVtX19jdXJyZW50LXZhdWx0XCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJjdXN0b21EaWN0aW9uYXJ5XCI6XG4gICAgICAgIGVsLmFkZENsYXNzKFwidmFyaW91cy1jb21wbGVtZW50c19fc3VnZ2VzdGlvbi1pdGVtX19jdXN0b20tZGljdGlvbmFyeVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiaW50ZXJuYWxMaW5rXCI6XG4gICAgICAgIGVsLmFkZENsYXNzKFwidmFyaW91cy1jb21wbGVtZW50c19fc3VnZ2VzdGlvbi1pdGVtX19pbnRlcm5hbC1saW5rXCIpO1xuICAgICAgICBpZiAod29yZC5waGFudG9tKSB7XG4gICAgICAgICAgZWwuYWRkQ2xhc3MoXCJ2YXJpb3VzLWNvbXBsZW1lbnRzX19zdWdnZXN0aW9uLWl0ZW1fX3BoYW50b21cIik7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZnJvbnRNYXR0ZXJcIjpcbiAgICAgICAgZWwuYWRkQ2xhc3MoXCJ2YXJpb3VzLWNvbXBsZW1lbnRzX19zdWdnZXN0aW9uLWl0ZW1fX2Zyb250LW1hdHRlclwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0U3VnZ2VzdGlvbih3b3JkOiBXb3JkLCBldnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgaW5zZXJ0ZWRUZXh0ID0gd29yZC52YWx1ZTtcbiAgICBpZiAod29yZC50eXBlID09PSBcImludGVybmFsTGlua1wiKSB7XG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5zdWdnZXN0SW50ZXJuYWxMaW5rV2l0aEFsaWFzICYmIHdvcmQuYWxpYXNNZXRhKSB7XG4gICAgICAgIGNvbnN0IGxpbmtUZXh0ID0gdGhpcy5hcHBIZWxwZXIub3B0aW1pemVNYXJrZG93bkxpbmtUZXh0KFxuICAgICAgICAgIHdvcmQuYWxpYXNNZXRhLm9yaWdpblxuICAgICAgICApO1xuICAgICAgICBpbnNlcnRlZFRleHQgPSB0aGlzLmFwcEhlbHBlci51c2VXaWtpTGlua3NcbiAgICAgICAgICA/IGBbWyR7bGlua1RleHR9fCR7d29yZC52YWx1ZX1dXWBcbiAgICAgICAgICA6IGBbJHt3b3JkLnZhbHVlfV0oJHtsaW5rVGV4dH0ubWQpYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGxpbmtUZXh0ID0gdGhpcy5hcHBIZWxwZXIub3B0aW1pemVNYXJrZG93bkxpbmtUZXh0KHdvcmQudmFsdWUpO1xuICAgICAgICBpbnNlcnRlZFRleHQgPSB0aGlzLmFwcEhlbHBlci51c2VXaWtpTGlua3NcbiAgICAgICAgICA/IGBbWyR7bGlua1RleHR9XV1gXG4gICAgICAgICAgOiBgWyR7bGlua1RleHR9XSgke2xpbmtUZXh0fS5tZClgO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHdvcmQudHlwZSA9PT0gXCJmcm9udE1hdHRlclwiICYmXG4gICAgICB0aGlzLnNldHRpbmdzLmluc2VydENvbW1hQWZ0ZXJGcm9udE1hdHRlckNvbXBsZXRpb25cbiAgICApIHtcbiAgICAgIGluc2VydGVkVGV4dCA9IGAke2luc2VydGVkVGV4dH0sIGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5pbnNlcnRBZnRlckNvbXBsZXRpb24gJiZcbiAgICAgICAgISh3b3JkLnR5cGUgPT09IFwiY3VzdG9tRGljdGlvbmFyeVwiICYmIHdvcmQuaWdub3JlU3BhY2VBZnRlckNvbXBsZXRpb24pXG4gICAgICApIHtcbiAgICAgICAgaW5zZXJ0ZWRUZXh0ID0gYCR7aW5zZXJ0ZWRUZXh0fSBgO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwb3NpdGlvblRvTW92ZSA9IC0xO1xuXG4gICAgaWYgKHdvcmQudHlwZSA9PT0gXCJjdXN0b21EaWN0aW9uYXJ5XCIpIHtcbiAgICAgIGlmICh3b3JkLmluc2VydGVkVGV4dCkge1xuICAgICAgICBpbnNlcnRlZFRleHQgPSB3b3JkLmluc2VydGVkVGV4dDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2FyZXQgPSB3b3JkLmNhcmV0U3ltYm9sO1xuICAgICAgaWYgKGNhcmV0KSB7XG4gICAgICAgIHBvc2l0aW9uVG9Nb3ZlID0gaW5zZXJ0ZWRUZXh0LmluZGV4T2YoY2FyZXQpO1xuICAgICAgICBpbnNlcnRlZFRleHQgPSBpbnNlcnRlZFRleHQucmVwbGFjZShjYXJldCwgXCJcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5jb250ZXh0LmVkaXRvcjtcbiAgICBlZGl0b3IucmVwbGFjZVJhbmdlKFxuICAgICAgaW5zZXJ0ZWRUZXh0LFxuICAgICAge1xuICAgICAgICAuLi50aGlzLmNvbnRleHQuc3RhcnQsXG4gICAgICAgIGNoOiB0aGlzLmNvbnRleHRTdGFydENoICsgd29yZC5vZmZzZXQhLFxuICAgICAgfSxcbiAgICAgIHRoaXMuY29udGV4dC5lbmRcbiAgICApO1xuXG4gICAgaWYgKHBvc2l0aW9uVG9Nb3ZlICE9PSAtMSkge1xuICAgICAgZWRpdG9yLnNldEN1cnNvcihcbiAgICAgICAgZWRpdG9yLm9mZnNldFRvUG9zKFxuICAgICAgICAgIGVkaXRvci5wb3NUb09mZnNldChlZGl0b3IuZ2V0Q3Vyc29yKCkpIC1cbiAgICAgICAgICAgIGluc2VydGVkVGV4dC5sZW5ndGggK1xuICAgICAgICAgICAgcG9zaXRpb25Ub01vdmVcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgd29ya2Fyb3VuZCBvZiBzdHJhbmdlIGJlaGF2aW9yIGZvciB0aGF0IGN1cnNvciBkb2Vzbid0IG1vdmUgYWZ0ZXIgY29tcGxldGlvbiBvbmx5IGlmIGl0IGRvZXNuJ3QgaW5wdXQgYW55IHdvcmQuXG4gICAgaWYgKFxuICAgICAgdGhpcy5hcHBIZWxwZXIuZXF1YWxzQXNFZGl0b3JQb3N0aW9uKHRoaXMuY29udGV4dC5zdGFydCwgdGhpcy5jb250ZXh0LmVuZClcbiAgICApIHtcbiAgICAgIGVkaXRvci5zZXRDdXJzb3IoXG4gICAgICAgIGVkaXRvci5vZmZzZXRUb1BvcyhcbiAgICAgICAgICBlZGl0b3IucG9zVG9PZmZzZXQoZWRpdG9yLmdldEN1cnNvcigpKSArIGluc2VydGVkVGV4dC5sZW5ndGhcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGlvbkhpc3RvcnlTdG9yYWdlPy5pbmNyZW1lbnQod29yZCBhcyBIaXRXb3JkKTtcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5zaG93TG9nQWJvdXRQZXJmb3JtYW5jZUluQ29uc29sZSkge1xuICAgICAgY29uc29sZS5sb2coXCItLS0gaGlzdG9yeSAtLS1cIik7XG4gICAgICBjb25zb2xlLmxvZyh0aGlzLnNlbGVjdGlvbkhpc3RvcnlTdG9yYWdlPy5kYXRhKTtcbiAgICB9XG5cbiAgICB0aGlzLmNsb3NlKCk7XG4gICAgdGhpcy5kZWJvdW5jZUNsb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHNob3dEZWJ1Z0xvZyh0b01lc3NhZ2U6ICgpID0+IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNldHRpbmdzLnNob3dMb2dBYm91dFBlcmZvcm1hbmNlSW5Db25zb2xlKSB7XG4gICAgICBjb25zb2xlLmxvZyh0b01lc3NhZ2UoKSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBBcHAsIE5vdGljZSwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHR5cGUgVmFyaW91c0NvbXBvbmVudHMgZnJvbSBcIi4uL21haW5cIjtcbmltcG9ydCB7IFRva2VuaXplU3RyYXRlZ3kgfSBmcm9tIFwiLi4vdG9rZW5pemVyL1Rva2VuaXplU3RyYXRlZ3lcIjtcbmltcG9ydCB7IE1hdGNoU3RyYXRlZ3kgfSBmcm9tIFwiLi4vcHJvdmlkZXIvTWF0Y2hTdHJhdGVneVwiO1xuaW1wb3J0IHsgQ3ljbGVUaHJvdWdoU3VnZ2VzdGlvbnNLZXlzIH0gZnJvbSBcIi4uL29wdGlvbi9DeWNsZVRocm91Z2hTdWdnZXN0aW9uc0tleXNcIjtcbmltcG9ydCB7IENvbHVtbkRlbGltaXRlciB9IGZyb20gXCIuLi9vcHRpb24vQ29sdW1uRGVsaW1pdGVyXCI7XG5pbXBvcnQgeyBTZWxlY3RTdWdnZXN0aW9uS2V5IH0gZnJvbSBcIi4uL29wdGlvbi9TZWxlY3RTdWdnZXN0aW9uS2V5XCI7XG5pbXBvcnQgeyBtaXJyb3JNYXAgfSBmcm9tIFwiLi4vdXRpbC9jb2xsZWN0aW9uLWhlbHBlclwiO1xuaW1wb3J0IHsgT3BlblNvdXJjZUZpbGVLZXlzIH0gZnJvbSBcIi4uL29wdGlvbi9PcGVuU291cmNlRmlsZUtleXNcIjtcbmltcG9ydCB7IERlc2NyaXB0aW9uT25TdWdnZXN0aW9uIH0gZnJvbSBcIi4uL29wdGlvbi9EZXNjcmlwdGlvbk9uU3VnZ2VzdGlvblwiO1xuaW1wb3J0IHsgU3BlY2lmaWNNYXRjaFN0cmF0ZWd5IH0gZnJvbSBcIi4uL3Byb3ZpZGVyL1NwZWNpZmljTWF0Y2hTdHJhdGVneVwiO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3Rpb25IaXN0b3J5VHJlZSB9IGZyb20gXCIuLi9zdG9yYWdlL1NlbGVjdGlvbkhpc3RvcnlTdG9yYWdlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0dGluZ3Mge1xuICAvLyBnZW5lcmFsXG4gIHN0cmF0ZWd5OiBzdHJpbmc7XG4gIG1hdGNoU3RyYXRlZ3k6IHN0cmluZztcbiAgbWF4TnVtYmVyT2ZTdWdnZXN0aW9uczogbnVtYmVyO1xuICBtYXhOdW1iZXJPZldvcmRzQXNQaHJhc2U6IG51bWJlcjtcbiAgbWluTnVtYmVyT2ZDaGFyYWN0ZXJzVHJpZ2dlcmVkOiBudW1iZXI7XG4gIG1pbk51bWJlck9mV29yZHNUcmlnZ2VyZWRQaHJhc2U6IG51bWJlcjtcbiAgY29tcGxlbWVudEF1dG9tYXRpY2FsbHk6IGJvb2xlYW47XG4gIGRlbGF5TWlsbGlTZWNvbmRzOiBudW1iZXI7XG4gIGRpc2FibGVTdWdnZXN0aW9uc0R1cmluZ0ltZU9uOiBib29sZWFuO1xuICAvLyBGSVhNRTogUmVuYW1lIGF0IG5leHQgbWFqb3IgdmVyc2lvbiB1cFxuICBpbnNlcnRBZnRlckNvbXBsZXRpb246IGJvb2xlYW47XG4gIGZpcnN0Q2hhcmFjdGVyc0Rpc2FibGVTdWdnZXN0aW9uczogc3RyaW5nO1xuXG4gIC8vIGFwcGVhcmFuY2VcbiAgc2hvd01hdGNoU3RyYXRlZ3k6IGJvb2xlYW47XG4gIHNob3dDb21wbGVtZW50QXV0b21hdGljYWxseTogYm9vbGVhbjtcbiAgc2hvd0luZGV4aW5nU3RhdHVzOiBib29sZWFuO1xuICBkZXNjcmlwdGlvbk9uU3VnZ2VzdGlvbjogc3RyaW5nO1xuXG4gIC8vIGtleSBjdXN0b21pemF0aW9uXG4gIHNlbGVjdFN1Z2dlc3Rpb25LZXlzOiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxDeWNsZVRocm91Z2hTdWdnZXN0aW9uc0tleXM6IHN0cmluZztcbiAgZGlzYWJsZVVwRG93bktleXNGb3JDeWNsZVRocm91Z2hTdWdnZXN0aW9uc0tleXM6IGJvb2xlYW47XG4gIG9wZW5Tb3VyY2VGaWxlS2V5OiBzdHJpbmc7XG4gIHByb3BhZ2F0ZUVzYzogYm9vbGVhbjtcblxuICAvLyBjdXJyZW50IGZpbGUgY29tcGxlbWVudFxuICBlbmFibGVDdXJyZW50RmlsZUNvbXBsZW1lbnQ6IGJvb2xlYW47XG4gIGN1cnJlbnRGaWxlTWluTnVtYmVyT2ZDaGFyYWN0ZXJzOiBudW1iZXI7XG4gIG9ubHlDb21wbGVtZW50RW5nbGlzaE9uQ3VycmVudEZpbGVDb21wbGVtZW50OiBib29sZWFuO1xuXG4gIC8vIGN1cnJlbnQgdmF1bHQgY29tcGxlbWVudFxuICBlbmFibGVDdXJyZW50VmF1bHRDb21wbGVtZW50OiBib29sZWFuO1xuICBjdXJyZW50VmF1bHRNaW5OdW1iZXJPZkNoYXJhY3RlcnM6IG51bWJlcjtcbiAgaW5jbHVkZUN1cnJlbnRWYXVsdFBhdGhQcmVmaXhQYXR0ZXJuczogc3RyaW5nO1xuICBleGNsdWRlQ3VycmVudFZhdWx0UGF0aFByZWZpeFBhdHRlcm5zOiBzdHJpbmc7XG4gIGluY2x1ZGVDdXJyZW50VmF1bHRPbmx5RmlsZXNVbmRlckN1cnJlbnREaXJlY3Rvcnk6IGJvb2xlYW47XG5cbiAgLy8gY3VzdG9tIGRpY3Rpb25hcnkgY29tcGxlbWVudFxuICBlbmFibGVDdXN0b21EaWN0aW9uYXJ5Q29tcGxlbWVudDogYm9vbGVhbjtcbiAgY3VzdG9tRGljdGlvbmFyeVBhdGhzOiBzdHJpbmc7XG4gIGNvbHVtbkRlbGltaXRlcjogc3RyaW5nO1xuICBjdXN0b21EaWN0aW9uYXJ5V29yZFJlZ2V4UGF0dGVybjogc3RyaW5nO1xuICBkZWxpbWl0ZXJUb0hpZGVTdWdnZXN0aW9uOiBzdHJpbmc7XG4gIGRlbGltaXRlclRvRGl2aWRlU3VnZ2VzdGlvbnNGb3JEaXNwbGF5RnJvbUluc2VydGlvbjogc3RyaW5nO1xuICBjYXJldExvY2F0aW9uU3ltYm9sQWZ0ZXJDb21wbGVtZW50OiBzdHJpbmc7XG4gIGRpc3BsYXllZFRleHRTdWZmaXg6IHN0cmluZztcblxuICAvLyBpbnRlcm5hbCBsaW5rIGNvbXBsZW1lbnRcbiAgZW5hYmxlSW50ZXJuYWxMaW5rQ29tcGxlbWVudDogYm9vbGVhbjtcbiAgc3VnZ2VzdEludGVybmFsTGlua1dpdGhBbGlhczogYm9vbGVhbjtcbiAgZXhjbHVkZUludGVybmFsTGlua1BhdGhQcmVmaXhQYXR0ZXJuczogc3RyaW5nO1xuXG4gIC8vIGZyb250IG1hdHRlciBjb21wbGVtZW50XG4gIGVuYWJsZUZyb250TWF0dGVyQ29tcGxlbWVudDogYm9vbGVhbjtcbiAgZnJvbnRNYXR0ZXJDb21wbGVtZW50TWF0Y2hTdHJhdGVneTogc3RyaW5nO1xuICBpbnNlcnRDb21tYUFmdGVyRnJvbnRNYXR0ZXJDb21wbGV0aW9uOiBib29sZWFuO1xuXG4gIC8vIGRlYnVnXG4gIHNob3dMb2dBYm91dFBlcmZvcm1hbmNlSW5Db25zb2xlOiBib29sZWFuO1xuXG4gIC8vIG90aGVyc1xuICBzZWxlY3Rpb25IaXN0b3J5VHJlZTogU2VsZWN0aW9uSGlzdG9yeVRyZWU7XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFVFRJTkdTOiBTZXR0aW5ncyA9IHtcbiAgLy8gZ2VuZXJhbFxuICBzdHJhdGVneTogXCJkZWZhdWx0XCIsXG4gIG1hdGNoU3RyYXRlZ3k6IFwicHJlZml4XCIsXG5cbiAgbWF4TnVtYmVyT2ZTdWdnZXN0aW9uczogNSxcbiAgbWF4TnVtYmVyT2ZXb3Jkc0FzUGhyYXNlOiAzLFxuICBtaW5OdW1iZXJPZkNoYXJhY3RlcnNUcmlnZ2VyZWQ6IDAsXG4gIG1pbk51bWJlck9mV29yZHNUcmlnZ2VyZWRQaHJhc2U6IDEsXG4gIGNvbXBsZW1lbnRBdXRvbWF0aWNhbGx5OiB0cnVlLFxuICBkZWxheU1pbGxpU2Vjb25kczogMCxcbiAgZGlzYWJsZVN1Z2dlc3Rpb25zRHVyaW5nSW1lT246IGZhbHNlLFxuICBpbnNlcnRBZnRlckNvbXBsZXRpb246IHRydWUsXG4gIGZpcnN0Q2hhcmFjdGVyc0Rpc2FibGVTdWdnZXN0aW9uczogXCI6L15cIixcblxuICAvLyBhcHBlYXJhbmNlXG4gIHNob3dNYXRjaFN0cmF0ZWd5OiB0cnVlLFxuICBzaG93Q29tcGxlbWVudEF1dG9tYXRpY2FsbHk6IHRydWUsXG4gIHNob3dJbmRleGluZ1N0YXR1czogdHJ1ZSxcbiAgZGVzY3JpcHRpb25PblN1Z2dlc3Rpb246IFwiU2hvcnRcIixcblxuICAvLyBrZXkgY3VzdG9taXphdGlvblxuICBzZWxlY3RTdWdnZXN0aW9uS2V5czogXCJFbnRlclwiLFxuICBhZGRpdGlvbmFsQ3ljbGVUaHJvdWdoU3VnZ2VzdGlvbnNLZXlzOiBcIk5vbmVcIixcbiAgZGlzYWJsZVVwRG93bktleXNGb3JDeWNsZVRocm91Z2hTdWdnZXN0aW9uc0tleXM6IGZhbHNlLFxuICBvcGVuU291cmNlRmlsZUtleTogXCJOb25lXCIsXG4gIHByb3BhZ2F0ZUVzYzogZmFsc2UsXG5cbiAgLy8gY3VycmVudCBmaWxlIGNvbXBsZW1lbnRcbiAgZW5hYmxlQ3VycmVudEZpbGVDb21wbGVtZW50OiB0cnVlLFxuICBjdXJyZW50RmlsZU1pbk51bWJlck9mQ2hhcmFjdGVyczogMCxcbiAgb25seUNvbXBsZW1lbnRFbmdsaXNoT25DdXJyZW50RmlsZUNvbXBsZW1lbnQ6IGZhbHNlLFxuXG4gIC8vIGN1cnJlbnQgdmF1bHQgY29tcGxlbWVudFxuICBlbmFibGVDdXJyZW50VmF1bHRDb21wbGVtZW50OiBmYWxzZSxcbiAgY3VycmVudFZhdWx0TWluTnVtYmVyT2ZDaGFyYWN0ZXJzOiAwLFxuICBpbmNsdWRlQ3VycmVudFZhdWx0UGF0aFByZWZpeFBhdHRlcm5zOiBcIlwiLFxuICBleGNsdWRlQ3VycmVudFZhdWx0UGF0aFByZWZpeFBhdHRlcm5zOiBcIlwiLFxuICBpbmNsdWRlQ3VycmVudFZhdWx0T25seUZpbGVzVW5kZXJDdXJyZW50RGlyZWN0b3J5OiBmYWxzZSxcblxuICAvLyBjdXN0b20gZGljdGlvbmFyeSBjb21wbGVtZW50XG4gIGVuYWJsZUN1c3RvbURpY3Rpb25hcnlDb21wbGVtZW50OiBmYWxzZSxcbiAgY3VzdG9tRGljdGlvbmFyeVBhdGhzOiBgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2ZpcnN0MjBob3Vycy9nb29nbGUtMTAwMDAtZW5nbGlzaC9tYXN0ZXIvZ29vZ2xlLTEwMDAwLWVuZ2xpc2gtbm8tc3dlYXJzLnR4dGAsXG4gIGNvbHVtbkRlbGltaXRlcjogXCJUYWJcIixcbiAgY3VzdG9tRGljdGlvbmFyeVdvcmRSZWdleFBhdHRlcm46IFwiXCIsXG4gIGRlbGltaXRlclRvSGlkZVN1Z2dlc3Rpb246IFwiXCIsXG4gIGRlbGltaXRlclRvRGl2aWRlU3VnZ2VzdGlvbnNGb3JEaXNwbGF5RnJvbUluc2VydGlvbjogXCJcIixcbiAgY2FyZXRMb2NhdGlvblN5bWJvbEFmdGVyQ29tcGxlbWVudDogXCJcIixcbiAgZGlzcGxheWVkVGV4dFN1ZmZpeDogXCIgPT4gLi4uXCIsXG5cbiAgLy8gaW50ZXJuYWwgbGluayBjb21wbGVtZW50XG4gIGVuYWJsZUludGVybmFsTGlua0NvbXBsZW1lbnQ6IHRydWUsXG4gIHN1Z2dlc3RJbnRlcm5hbExpbmtXaXRoQWxpYXM6IGZhbHNlLFxuICBleGNsdWRlSW50ZXJuYWxMaW5rUGF0aFByZWZpeFBhdHRlcm5zOiBcIlwiLFxuXG4gIC8vIGZyb250IG1hdHRlciBjb21wbGVtZW50XG4gIGVuYWJsZUZyb250TWF0dGVyQ29tcGxlbWVudDogdHJ1ZSxcbiAgZnJvbnRNYXR0ZXJDb21wbGVtZW50TWF0Y2hTdHJhdGVneTogXCJpbmhlcml0XCIsXG4gIGluc2VydENvbW1hQWZ0ZXJGcm9udE1hdHRlckNvbXBsZXRpb246IGZhbHNlLFxuXG4gIC8vIGRlYnVnXG4gIHNob3dMb2dBYm91dFBlcmZvcm1hbmNlSW5Db25zb2xlOiBmYWxzZSxcblxuICAvLyBvdGhlcnNcbiAgc2VsZWN0aW9uSGlzdG9yeVRyZWU6IHt9LFxufTtcblxuZXhwb3J0IGNsYXNzIFZhcmlvdXNDb21wbGVtZW50c1NldHRpbmdUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgcGx1Z2luOiBWYXJpb3VzQ29tcG9uZW50cztcblxuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBWYXJpb3VzQ29tcG9uZW50cykge1xuICAgIHN1cGVyKGFwcCwgcGx1Z2luKTtcbiAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcbiAgfVxuXG4gIGRpc3BsYXkoKTogdm9pZCB7XG4gICAgbGV0IHsgY29udGFpbmVyRWwgfSA9IHRoaXM7XG5cbiAgICBjb250YWluZXJFbC5lbXB0eSgpO1xuXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoXCJoMlwiLCB7IHRleHQ6IFwiVmFyaW91cyBDb21wbGVtZW50cyAtIFNldHRpbmdzXCIgfSk7XG4gICAgdGhpcy5hZGRNYWluU2V0dGluZ3MoY29udGFpbmVyRWwpO1xuICAgIHRoaXMuYWRkQXBwZWFyYW5jZVNldHRpbmdzKGNvbnRhaW5lckVsKTtcbiAgICB0aGlzLmFkZEtleUN1c3RvbWl6YXRpb25TZXR0aW5ncyhjb250YWluZXJFbCk7XG4gICAgdGhpcy5hZGRDdXJyZW50RmlsZUNvbXBsZW1lbnRTZXR0aW5ncyhjb250YWluZXJFbCk7XG4gICAgdGhpcy5hZGRDdXJyZW50VmF1bHRDb21wbGVtZW50U2V0dGluZ3MoY29udGFpbmVyRWwpO1xuICAgIHRoaXMuYWRkQ3VzdG9tRGljdGlvbmFyeUNvbXBsZW1lbnRTZXR0aW5ncyhjb250YWluZXJFbCk7XG4gICAgdGhpcy5hZGRJbnRlcm5hbExpbmtDb21wbGVtZW50U2V0dGluZ3MoY29udGFpbmVyRWwpO1xuICAgIHRoaXMuYWRkRnJvbnRNYXR0ZXJDb21wbGVtZW50U2V0dGluZ3MoY29udGFpbmVyRWwpO1xuICAgIHRoaXMuYWRkRGVidWdTZXR0aW5ncyhjb250YWluZXJFbCk7XG4gIH1cblxuICBwcml2YXRlIGFkZE1haW5TZXR0aW5ncyhjb250YWluZXJFbDogSFRNTEVsZW1lbnQpIHtcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbChcImgzXCIsIHsgdGV4dDogXCJNYWluXCIgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbCkuc2V0TmFtZShcIlN0cmF0ZWd5XCIpLmFkZERyb3Bkb3duKCh0YykgPT5cbiAgICAgIHRjXG4gICAgICAgIC5hZGRPcHRpb25zKG1pcnJvck1hcChUb2tlbml6ZVN0cmF0ZWd5LnZhbHVlcygpLCAoeCkgPT4geC5uYW1lKSlcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnN0cmF0ZWd5KVxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3Muc3RyYXRlZ3kgPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLmRpc3BsYXkoKTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3Moe1xuICAgICAgICAgICAgY3VycmVudEZpbGU6IHRydWUsXG4gICAgICAgICAgICBjdXJyZW50VmF1bHQ6IHRydWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgICBpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3Muc3RyYXRlZ3kgPT09IFRva2VuaXplU3RyYXRlZ3kuQ0hJTkVTRS5uYW1lKSB7XG4gICAgICBjb25zdCBlbCA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiZGl2XCIsIHtcbiAgICAgICAgY2xzOiBcInZhcmlvdXMtY29tcGxlbWVudHNfX3NldHRpbmdzX193YXJuaW5nXCIsXG4gICAgICB9KTtcbiAgICAgIGVsLmNyZWF0ZVNwYW4oe1xuICAgICAgICB0ZXh0OiBcIuKaoCBZb3UgbmVlZCB0byBkb3dubG9hZCBgY2VkaWN0X3RzLnU4YCBmcm9tXCIsXG4gICAgICB9KTtcbiAgICAgIGVsLmNyZWF0ZUVsKFwiYVwiLCB7XG4gICAgICAgIGhyZWY6IFwiaHR0cHM6Ly93d3cubWRiZy5uZXQvY2hpbmVzZS9kaWN0aW9uYXJ5P3BhZ2U9Y2MtY2VkaWN0XCIsXG4gICAgICAgIHRleHQ6IFwiIHRoZSBzaXRlIFwiLFxuICAgICAgfSk7XG4gICAgICBlbC5jcmVhdGVTcGFuKHtcbiAgICAgICAgdGV4dDogXCJhbmQgc3RvcmUgaXQgaW4gdmF1bHQgcm9vdC5cIixcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKS5zZXROYW1lKFwiTWF0Y2ggc3RyYXRlZ3lcIikuYWRkRHJvcGRvd24oKHRjKSA9PlxuICAgICAgdGNcbiAgICAgICAgLmFkZE9wdGlvbnMobWlycm9yTWFwKE1hdGNoU3RyYXRlZ3kudmFsdWVzKCksICh4KSA9PiB4Lm5hbWUpKVxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MubWF0Y2hTdHJhdGVneSlcbiAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm1hdGNoU3RyYXRlZ3kgPSB2YWx1ZTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICB0aGlzLmRpc3BsYXkoKTtcbiAgICAgICAgfSlcbiAgICApO1xuICAgIGlmICh0aGlzLnBsdWdpbi5zZXR0aW5ncy5tYXRjaFN0cmF0ZWd5ID09PSBNYXRjaFN0cmF0ZWd5LlBBUlRJQUwubmFtZSkge1xuICAgICAgY29udGFpbmVyRWwuY3JlYXRlRWwoXCJkaXZcIiwge1xuICAgICAgICB0ZXh0OiBcIuKaoCBgcGFydGlhbGAgaXMgbW9yZSB0aGFuIDEwIHRpbWVzIHNsb3dlciB0aGFuIGBwcmVmaXhgXCIsXG4gICAgICAgIGNsczogXCJ2YXJpb3VzLWNvbXBsZW1lbnRzX19zZXR0aW5nc19fd2FybmluZ1wiLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIk1heCBudW1iZXIgb2Ygc3VnZ2VzdGlvbnNcIilcbiAgICAgIC5hZGRTbGlkZXIoKHNjKSA9PlxuICAgICAgICBzY1xuICAgICAgICAgIC5zZXRMaW1pdHMoMSwgMjU1LCAxKVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5tYXhOdW1iZXJPZlN1Z2dlc3Rpb25zKVxuICAgICAgICAgIC5zZXREeW5hbWljVG9vbHRpcCgpXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubWF4TnVtYmVyT2ZTdWdnZXN0aW9ucyA9IHZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiTWF4IG51bWJlciBvZiB3b3JkcyBhcyBhIHBocmFzZVwiKVxuICAgICAgLnNldERlc2MoYFvimqBXYXJuaW5nXSBJdCBtYWtlcyBzbG93ZXIgbW9yZSB0aGFuIE4gdGltZXMgKE4gaXMgc2V0IHZhbHVlKWApXG4gICAgICAuYWRkU2xpZGVyKChzYykgPT5cbiAgICAgICAgc2NcbiAgICAgICAgICAuc2V0TGltaXRzKDEsIDEwLCAxKVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5tYXhOdW1iZXJPZldvcmRzQXNQaHJhc2UpXG4gICAgICAgICAgLnNldER5bmFtaWNUb29sdGlwKClcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5tYXhOdW1iZXJPZldvcmRzQXNQaHJhc2UgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIk1pbiBudW1iZXIgb2YgY2hhcmFjdGVycyBmb3IgdHJpZ2dlclwiKVxuICAgICAgLnNldERlc2MoXCJJdCB1c2VzIGEgZGVmYXVsdCB2YWx1ZSBvZiBTdHJhdGVneSBpZiBzZXQgMC5cIilcbiAgICAgIC5hZGRTbGlkZXIoKHNjKSA9PlxuICAgICAgICBzY1xuICAgICAgICAgIC5zZXRMaW1pdHMoMCwgMTAsIDEpXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLm1pbk51bWJlck9mQ2hhcmFjdGVyc1RyaWdnZXJlZClcbiAgICAgICAgICAuc2V0RHluYW1pY1Rvb2x0aXAoKVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm1pbk51bWJlck9mQ2hhcmFjdGVyc1RyaWdnZXJlZCA9IHZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiTWluIG51bWJlciBvZiB3b3JkcyBmb3IgdHJpZ2dlclwiKVxuICAgICAgLmFkZFNsaWRlcigoc2MpID0+XG4gICAgICAgIHNjXG4gICAgICAgICAgLnNldExpbWl0cygxLCAxMCwgMSlcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MubWluTnVtYmVyT2ZXb3Jkc1RyaWdnZXJlZFBocmFzZSlcbiAgICAgICAgICAuc2V0RHluYW1pY1Rvb2x0aXAoKVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm1pbk51bWJlck9mV29yZHNUcmlnZ2VyZWRQaHJhc2UgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkNvbXBsZW1lbnQgYXV0b21hdGljYWxseVwiKVxuICAgICAgLmFkZFRvZ2dsZSgodGMpID0+IHtcbiAgICAgICAgdGMuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY29tcGxlbWVudEF1dG9tYXRpY2FsbHkpLm9uQ2hhbmdlKFxuICAgICAgICAgIGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY29tcGxlbWVudEF1dG9tYXRpY2FsbHkgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkRlbGF5IG1pbGxpLXNlY29uZHMgZm9yIHRyaWdnZXJcIilcbiAgICAgIC5hZGRTbGlkZXIoKHNjKSA9PlxuICAgICAgICBzY1xuICAgICAgICAgIC5zZXRMaW1pdHMoMCwgMTAwMCwgMTApXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmRlbGF5TWlsbGlTZWNvbmRzKVxuICAgICAgICAgIC5zZXREeW5hbWljVG9vbHRpcCgpXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVsYXlNaWxsaVNlY29uZHMgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkRpc2FibGUgc3VnZ2VzdGlvbnMgZHVyaW5nIElNRSBvblwiKVxuICAgICAgLmFkZFRvZ2dsZSgodGMpID0+IHtcbiAgICAgICAgdGMuc2V0VmFsdWUoXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZGlzYWJsZVN1Z2dlc3Rpb25zRHVyaW5nSW1lT25cbiAgICAgICAgKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5kaXNhYmxlU3VnZ2VzdGlvbnNEdXJpbmdJbWVPbiA9IHZhbHVlO1xuICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkluc2VydCBzcGFjZSBhZnRlciBjb21wbGV0aW9uXCIpXG4gICAgICAuYWRkVG9nZ2xlKCh0YykgPT4ge1xuICAgICAgICB0Yy5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5pbnNlcnRBZnRlckNvbXBsZXRpb24pLm9uQ2hhbmdlKFxuICAgICAgICAgIGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuaW5zZXJ0QWZ0ZXJDb21wbGV0aW9uID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJGaXJzdCBjaGFyYWN0ZXJzIHRvIGRpc2FibGUgc3VnZ2VzdGlvbnNcIilcbiAgICAgIC5hZGRUZXh0KChjYikgPT4ge1xuICAgICAgICBjYi5zZXRWYWx1ZShcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5maXJzdENoYXJhY3RlcnNEaXNhYmxlU3VnZ2VzdGlvbnNcbiAgICAgICAgKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5maXJzdENoYXJhY3RlcnNEaXNhYmxlU3VnZ2VzdGlvbnMgPSB2YWx1ZTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQXBwZWFyYW5jZVNldHRpbmdzKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiaDNcIiwgeyB0ZXh0OiBcIkFwcGVhcmFuY2VcIiB9KTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJTaG93IE1hdGNoIHN0cmF0ZWd5XCIpXG4gICAgICAuc2V0RGVzYyhcbiAgICAgICAgXCJTaG93IE1hdGNoIHN0cmF0ZWd5IGF0IHRoZSBzdGF0dXMgYmFyLiBDaGFuZ2luZyB0aGlzIG9wdGlvbiByZXF1aXJlcyBhIHJlc3RhcnQgdG8gdGFrZSBlZmZlY3QuXCJcbiAgICAgIClcbiAgICAgIC5hZGRUb2dnbGUoKHRjKSA9PiB7XG4gICAgICAgIHRjLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnNob3dNYXRjaFN0cmF0ZWd5KS5vbkNoYW5nZShcbiAgICAgICAgICBhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnNob3dNYXRjaFN0cmF0ZWd5ID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJTaG93IENvbXBsZW1lbnQgYXV0b21hdGljYWxseVwiKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgIFwiU2hvdyBjb21wbGVtZW50IGF1dG9tYXRpY2FsbHkgYXQgdGhlIHN0YXR1cyBiYXIuIENoYW5naW5nIHRoaXMgb3B0aW9uIHJlcXVpcmVzIGEgcmVzdGFydCB0byB0YWtlIGVmZmVjdC5cIlxuICAgICAgKVxuICAgICAgLmFkZFRvZ2dsZSgodGMpID0+IHtcbiAgICAgICAgdGMuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3Muc2hvd0NvbXBsZW1lbnRBdXRvbWF0aWNhbGx5KS5vbkNoYW5nZShcbiAgICAgICAgICBhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnNob3dDb21wbGVtZW50QXV0b21hdGljYWxseSA9IHZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiU2hvdyBJbmRleGluZyBzdGF0dXNcIilcbiAgICAgIC5zZXREZXNjKFxuICAgICAgICBcIlNob3cgaW5kZXhpbmcgc3RhdHVzIGF0IHRoZSBzdGF0dXMgYmFyLiBDaGFuZ2luZyB0aGlzIG9wdGlvbiByZXF1aXJlcyBhIHJlc3RhcnQgdG8gdGFrZSBlZmZlY3QuXCJcbiAgICAgIClcbiAgICAgIC5hZGRUb2dnbGUoKHRjKSA9PiB7XG4gICAgICAgIHRjLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnNob3dJbmRleGluZ1N0YXR1cykub25DaGFuZ2UoXG4gICAgICAgICAgYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5zaG93SW5kZXhpbmdTdGF0dXMgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkRlc2NyaXB0aW9uIG9uIGEgc3VnZ2VzdGlvblwiKVxuICAgICAgLmFkZERyb3Bkb3duKCh0YykgPT5cbiAgICAgICAgdGNcbiAgICAgICAgICAuYWRkT3B0aW9ucyhcbiAgICAgICAgICAgIG1pcnJvck1hcChEZXNjcmlwdGlvbk9uU3VnZ2VzdGlvbi52YWx1ZXMoKSwgKHgpID0+IHgubmFtZSlcbiAgICAgICAgICApXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmRlc2NyaXB0aW9uT25TdWdnZXN0aW9uKVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmRlc2NyaXB0aW9uT25TdWdnZXN0aW9uID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkS2V5Q3VzdG9taXphdGlvblNldHRpbmdzKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiaDNcIiwgeyB0ZXh0OiBcIktleSBjdXN0b21pemF0aW9uXCIgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiU2VsZWN0IGEgc3VnZ2VzdGlvbiBrZXlcIilcbiAgICAgIC5hZGREcm9wZG93bigodGMpID0+XG4gICAgICAgIHRjXG4gICAgICAgICAgLmFkZE9wdGlvbnMobWlycm9yTWFwKFNlbGVjdFN1Z2dlc3Rpb25LZXkudmFsdWVzKCksICh4KSA9PiB4Lm5hbWUpKVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RTdWdnZXN0aW9uS2V5cylcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RTdWdnZXN0aW9uS2V5cyA9IHZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiQWRkaXRpb25hbCBjeWNsZSB0aHJvdWdoIHN1Z2dlc3Rpb25zIGtleXNcIilcbiAgICAgIC5hZGREcm9wZG93bigodGMpID0+XG4gICAgICAgIHRjXG4gICAgICAgICAgLmFkZE9wdGlvbnMoXG4gICAgICAgICAgICBtaXJyb3JNYXAoQ3ljbGVUaHJvdWdoU3VnZ2VzdGlvbnNLZXlzLnZhbHVlcygpLCAoeCkgPT4geC5uYW1lKVxuICAgICAgICAgIClcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuYWRkaXRpb25hbEN5Y2xlVGhyb3VnaFN1Z2dlc3Rpb25zS2V5cylcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5hZGRpdGlvbmFsQ3ljbGVUaHJvdWdoU3VnZ2VzdGlvbnNLZXlzID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICB9KVxuICAgICAgKTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJEaXNhYmxlIHRoZSB1cC9kb3duIGtleXMgZm9yIGN5Y2xlIHRocm91Z2ggc3VnZ2VzdGlvbnMga2V5c1wiKVxuICAgICAgLmFkZFRvZ2dsZSgodGMpID0+IHtcbiAgICAgICAgdGMuc2V0VmFsdWUoXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZGlzYWJsZVVwRG93bktleXNGb3JDeWNsZVRocm91Z2hTdWdnZXN0aW9uc0tleXNcbiAgICAgICAgKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5kaXNhYmxlVXBEb3duS2V5c0ZvckN5Y2xlVGhyb3VnaFN1Z2dlc3Rpb25zS2V5cyA9XG4gICAgICAgICAgICB2YWx1ZTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKS5zZXROYW1lKFwiT3BlbiBzb3VyY2UgZmlsZSBrZXlcIikuYWRkRHJvcGRvd24oKHRjKSA9PlxuICAgICAgdGNcbiAgICAgICAgLmFkZE9wdGlvbnMobWlycm9yTWFwKE9wZW5Tb3VyY2VGaWxlS2V5cy52YWx1ZXMoKSwgKHgpID0+IHgubmFtZSkpXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5vcGVuU291cmNlRmlsZUtleSlcbiAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm9wZW5Tb3VyY2VGaWxlS2V5ID0gdmFsdWU7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJQcm9wYWdhdGUgRVNDXCIpXG4gICAgICAuc2V0RGVzYyhcbiAgICAgICAgXCJJdCBpcyBoYW5keSBpZiB5b3UgdXNlIFZpbSBtb2RlIGJlY2F1c2UgeW91IGNhbiBzd2l0Y2ggdG8gTm9ybWFsIG1vZGUgYnkgb25lIEVTQywgd2hldGhlciBpdCBzaG93cyBzdWdnZXN0aW9ucyBvciBub3QuXCJcbiAgICAgIClcbiAgICAgIC5hZGRUb2dnbGUoKHRjKSA9PiB7XG4gICAgICAgIHRjLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnByb3BhZ2F0ZUVzYykub25DaGFuZ2UoXG4gICAgICAgICAgYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5wcm9wYWdhdGVFc2MgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDdXJyZW50RmlsZUNvbXBsZW1lbnRTZXR0aW5ncyhjb250YWluZXJFbDogSFRNTEVsZW1lbnQpIHtcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbChcImgzXCIsIHtcbiAgICAgIHRleHQ6IFwiQ3VycmVudCBmaWxlIGNvbXBsZW1lbnRcIixcbiAgICAgIGNsczogXCJ2YXJpb3VzLWNvbXBsZW1lbnRzX19zZXR0aW5nc19faGVhZGVyIHZhcmlvdXMtY29tcGxlbWVudHNfX3NldHRpbmdzX19oZWFkZXJfX2N1cnJlbnQtZmlsZVwiLFxuICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkVuYWJsZSBDdXJyZW50IGZpbGUgY29tcGxlbWVudFwiKVxuICAgICAgLmFkZFRvZ2dsZSgodGMpID0+IHtcbiAgICAgICAgdGMuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZW5hYmxlQ3VycmVudEZpbGVDb21wbGVtZW50KS5vbkNoYW5nZShcbiAgICAgICAgICBhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmVuYWJsZUN1cnJlbnRGaWxlQ29tcGxlbWVudCA9IHZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKHsgY3VycmVudEZpbGU6IHRydWUgfSk7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXkoKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgIGlmICh0aGlzLnBsdWdpbi5zZXR0aW5ncy5lbmFibGVDdXJyZW50RmlsZUNvbXBsZW1lbnQpIHtcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAuc2V0TmFtZShcIk1pbiBudW1iZXIgb2YgY2hhcmFjdGVycyBmb3IgaW5kZXhpbmdcIilcbiAgICAgICAgLnNldERlc2MoXCJJdCB1c2VzIGEgZGVmYXVsdCB2YWx1ZSBvZiBTdHJhdGVneSBpZiBzZXQgMC5cIilcbiAgICAgICAgLmFkZFNsaWRlcigoc2MpID0+XG4gICAgICAgICAgc2NcbiAgICAgICAgICAgIC5zZXRMaW1pdHMoMCwgMTUsIDEpXG4gICAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudEZpbGVNaW5OdW1iZXJPZkNoYXJhY3RlcnMpXG4gICAgICAgICAgICAuc2V0RHluYW1pY1Rvb2x0aXAoKVxuICAgICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50RmlsZU1pbk51bWJlck9mQ2hhcmFjdGVycyA9IHZhbHVlO1xuICAgICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoeyBjdXJyZW50RmlsZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAuc2V0TmFtZShcIk9ubHkgY29tcGxlbWVudCBFbmdsaXNoIG9uIGN1cnJlbnQgZmlsZSBjb21wbGVtZW50XCIpXG4gICAgICAgIC5hZGRUb2dnbGUoKHRjKSA9PiB7XG4gICAgICAgICAgdGMuc2V0VmFsdWUoXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5vbmx5Q29tcGxlbWVudEVuZ2xpc2hPbkN1cnJlbnRGaWxlQ29tcGxlbWVudFxuICAgICAgICAgICkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5vbmx5Q29tcGxlbWVudEVuZ2xpc2hPbkN1cnJlbnRGaWxlQ29tcGxlbWVudCA9XG4gICAgICAgICAgICAgIHZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKHsgY3VycmVudEZpbGU6IHRydWUgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkQ3VycmVudFZhdWx0Q29tcGxlbWVudFNldHRpbmdzKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiaDNcIiwge1xuICAgICAgdGV4dDogXCJDdXJyZW50IHZhdWx0IGNvbXBsZW1lbnRcIixcbiAgICAgIGNsczogXCJ2YXJpb3VzLWNvbXBsZW1lbnRzX19zZXR0aW5nc19faGVhZGVyIHZhcmlvdXMtY29tcGxlbWVudHNfX3NldHRpbmdzX19oZWFkZXJfX2N1cnJlbnQtdmF1bHRcIixcbiAgICB9KTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJFbmFibGUgQ3VycmVudCB2YXVsdCBjb21wbGVtZW50XCIpXG4gICAgICAuYWRkVG9nZ2xlKCh0YykgPT4ge1xuICAgICAgICB0Yy5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5lbmFibGVDdXJyZW50VmF1bHRDb21wbGVtZW50KS5vbkNoYW5nZShcbiAgICAgICAgICBhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmVuYWJsZUN1cnJlbnRWYXVsdENvbXBsZW1lbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheSgpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKHsgY3VycmVudFZhdWx0OiB0cnVlIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucGx1Z2luLnNldHRpbmdzLmVuYWJsZUN1cnJlbnRWYXVsdENvbXBsZW1lbnQpIHtcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAuc2V0TmFtZShcIk1pbiBudW1iZXIgb2YgY2hhcmFjdGVycyBmb3IgaW5kZXhpbmdcIilcbiAgICAgICAgLnNldERlc2MoXCJJdCB1c2VzIGEgZGVmYXVsdCB2YWx1ZSBvZiBTdHJhdGVneSBpZiBzZXQgMC5cIilcbiAgICAgICAgLmFkZFNsaWRlcigoc2MpID0+XG4gICAgICAgICAgc2NcbiAgICAgICAgICAgIC5zZXRMaW1pdHMoMCwgMTUsIDEpXG4gICAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFZhdWx0TWluTnVtYmVyT2ZDaGFyYWN0ZXJzKVxuICAgICAgICAgICAgLnNldER5bmFtaWNUb29sdGlwKClcbiAgICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFZhdWx0TWluTnVtYmVyT2ZDaGFyYWN0ZXJzID0gdmFsdWU7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgIC5zZXROYW1lKFwiSW5jbHVkZSBwcmVmaXggcGF0aCBwYXR0ZXJuc1wiKVxuICAgICAgICAuc2V0RGVzYyhcIlByZWZpeCBtYXRjaCBwYXRoIHBhdHRlcm5zIHRvIGluY2x1ZGUgZmlsZXMuXCIpXG4gICAgICAgIC5hZGRUZXh0QXJlYSgodGFjKSA9PiB7XG4gICAgICAgICAgY29uc3QgZWwgPSB0YWNcbiAgICAgICAgICAgIC5zZXRWYWx1ZShcbiAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuaW5jbHVkZUN1cnJlbnRWYXVsdFBhdGhQcmVmaXhQYXR0ZXJuc1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnNldFBsYWNlaG9sZGVyKFwiUHJpdmF0ZS9cIilcbiAgICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuaW5jbHVkZUN1cnJlbnRWYXVsdFBhdGhQcmVmaXhQYXR0ZXJucyA9XG4gICAgICAgICAgICAgICAgdmFsdWU7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgZWwuaW5wdXRFbC5jbGFzc05hbWUgPVxuICAgICAgICAgICAgXCJ2YXJpb3VzLWNvbXBsZW1lbnRzX19zZXR0aW5nc19fdGV4dC1hcmVhLXBhdGhcIjtcbiAgICAgICAgICByZXR1cm4gZWw7XG4gICAgICAgIH0pO1xuICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgIC5zZXROYW1lKFwiRXhjbHVkZSBwcmVmaXggcGF0aCBwYXR0ZXJuc1wiKVxuICAgICAgICAuc2V0RGVzYyhcIlByZWZpeCBtYXRjaCBwYXRoIHBhdHRlcm5zIHRvIGV4Y2x1ZGUgZmlsZXMuXCIpXG4gICAgICAgIC5hZGRUZXh0QXJlYSgodGFjKSA9PiB7XG4gICAgICAgICAgY29uc3QgZWwgPSB0YWNcbiAgICAgICAgICAgIC5zZXRWYWx1ZShcbiAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZXhjbHVkZUN1cnJlbnRWYXVsdFBhdGhQcmVmaXhQYXR0ZXJuc1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnNldFBsYWNlaG9sZGVyKFwiUHJpdmF0ZS9cIilcbiAgICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZXhjbHVkZUN1cnJlbnRWYXVsdFBhdGhQcmVmaXhQYXR0ZXJucyA9XG4gICAgICAgICAgICAgICAgdmFsdWU7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgZWwuaW5wdXRFbC5jbGFzc05hbWUgPVxuICAgICAgICAgICAgXCJ2YXJpb3VzLWNvbXBsZW1lbnRzX19zZXR0aW5nc19fdGV4dC1hcmVhLXBhdGhcIjtcbiAgICAgICAgICByZXR1cm4gZWw7XG4gICAgICAgIH0pO1xuICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgIC5zZXROYW1lKFwiSW5jbHVkZSBvbmx5IGZpbGVzIHVuZGVyIGN1cnJlbnQgZGlyZWN0b3J5XCIpXG4gICAgICAgIC5hZGRUb2dnbGUoKHRjKSA9PiB7XG4gICAgICAgICAgdGMuc2V0VmFsdWUoXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5nc1xuICAgICAgICAgICAgICAuaW5jbHVkZUN1cnJlbnRWYXVsdE9ubHlGaWxlc1VuZGVyQ3VycmVudERpcmVjdG9yeVxuICAgICAgICAgICkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5pbmNsdWRlQ3VycmVudFZhdWx0T25seUZpbGVzVW5kZXJDdXJyZW50RGlyZWN0b3J5ID1cbiAgICAgICAgICAgICAgdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRDdXN0b21EaWN0aW9uYXJ5Q29tcGxlbWVudFNldHRpbmdzKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiaDNcIiwge1xuICAgICAgdGV4dDogXCJDdXN0b20gZGljdGlvbmFyeSBjb21wbGVtZW50XCIsXG4gICAgICBjbHM6IFwidmFyaW91cy1jb21wbGVtZW50c19fc2V0dGluZ3NfX2hlYWRlciB2YXJpb3VzLWNvbXBsZW1lbnRzX19zZXR0aW5nc19faGVhZGVyX19jdXN0b20tZGljdGlvbmFyeVwiLFxuICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkVuYWJsZSBDdXN0b20gZGljdGlvbmFyeSBjb21wbGVtZW50XCIpXG4gICAgICAuYWRkVG9nZ2xlKCh0YykgPT4ge1xuICAgICAgICB0Yy5zZXRWYWx1ZShcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5lbmFibGVDdXN0b21EaWN0aW9uYXJ5Q29tcGxlbWVudFxuICAgICAgICApLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmVuYWJsZUN1c3RvbURpY3Rpb25hcnlDb21wbGVtZW50ID0gdmFsdWU7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKHsgY3VzdG9tRGljdGlvbmFyeTogdHJ1ZSB9KTtcbiAgICAgICAgICB0aGlzLmRpc3BsYXkoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIGlmICh0aGlzLnBsdWdpbi5zZXR0aW5ncy5lbmFibGVDdXN0b21EaWN0aW9uYXJ5Q29tcGxlbWVudCkge1xuICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgIC5zZXROYW1lKFwiQ3VzdG9tIGRpY3Rpb25hcnkgcGF0aHNcIilcbiAgICAgICAgLnNldERlc2MoXG4gICAgICAgICAgXCJTcGVjaWZ5IGVpdGhlciBhIHJlbGF0aXZlIHBhdGggZnJvbSBWYXVsdCByb290IG9yIFVSTCBmb3IgZWFjaCBsaW5lLlwiXG4gICAgICAgIClcbiAgICAgICAgLmFkZFRleHRBcmVhKCh0YWMpID0+IHtcbiAgICAgICAgICBjb25zdCBlbCA9IHRhY1xuICAgICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1c3RvbURpY3Rpb25hcnlQYXRocylcbiAgICAgICAgICAgIC5zZXRQbGFjZWhvbGRlcihcImRpY3Rpb25hcnkubWRcIilcbiAgICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VzdG9tRGljdGlvbmFyeVBhdGhzID0gdmFsdWU7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgZWwuaW5wdXRFbC5jbGFzc05hbWUgPVxuICAgICAgICAgICAgXCJ2YXJpb3VzLWNvbXBsZW1lbnRzX19zZXR0aW5nc19fdGV4dC1hcmVhLXBhdGhcIjtcbiAgICAgICAgICByZXR1cm4gZWw7XG4gICAgICAgIH0pO1xuXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbCkuc2V0TmFtZShcIkNvbHVtbiBkZWxpbWl0ZXJcIikuYWRkRHJvcGRvd24oKHRjKSA9PlxuICAgICAgICB0Y1xuICAgICAgICAgIC5hZGRPcHRpb25zKG1pcnJvck1hcChDb2x1bW5EZWxpbWl0ZXIudmFsdWVzKCksICh4KSA9PiB4Lm5hbWUpKVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2x1bW5EZWxpbWl0ZXIpXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY29sdW1uRGVsaW1pdGVyID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICB9KVxuICAgICAgKTtcblxuICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgIC5zZXROYW1lKFwiV29yZCByZWdleCBwYXR0ZXJuXCIpXG4gICAgICAgIC5zZXREZXNjKFwiT25seSBsb2FkIHdvcmRzIHRoYXQgbWF0Y2ggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuLlwiKVxuICAgICAgICAuYWRkVGV4dCgoY2IpID0+IHtcbiAgICAgICAgICBjYi5zZXRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1c3RvbURpY3Rpb25hcnlXb3JkUmVnZXhQYXR0ZXJuXG4gICAgICAgICAgKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1c3RvbURpY3Rpb25hcnlXb3JkUmVnZXhQYXR0ZXJuID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAuc2V0TmFtZShcIkRlbGltaXRlciB0byBoaWRlIGEgc3VnZ2VzdGlvblwiKVxuICAgICAgICAuc2V0RGVzYyhcbiAgICAgICAgICBcIklmIHNldCAnOzs7JywgJ2FiY2Q7OztlZmcnIGlzIHNob3duIGFzICdhYmNkJyBvbiBzdWdnZXN0aW9ucywgYnV0IGNvbXBsZXRlcyB0byAnYWJjZGVmZycuXCJcbiAgICAgICAgKVxuICAgICAgICAuYWRkVGV4dCgoY2IpID0+IHtcbiAgICAgICAgICBjYi5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5kZWxpbWl0ZXJUb0hpZGVTdWdnZXN0aW9uKS5vbkNoYW5nZShcbiAgICAgICAgICAgIGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5kZWxpbWl0ZXJUb0hpZGVTdWdnZXN0aW9uID0gdmFsdWU7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgICAgLnNldE5hbWUoXG4gICAgICAgICAgXCJEZWxpbWl0ZXIgdG8gZGl2aWRlIHN1Z2dlc3Rpb25zIGZvciBkaXNwbGF5IGZyb20gb25lcyBmb3IgaW5zZXJ0aW9uXCJcbiAgICAgICAgKVxuICAgICAgICAuc2V0RGVzYyhcbiAgICAgICAgICBcIklmIHNldCAnID4+PiAnLCAnZGlzcGxheWVkID4+PiBpbnNlcnRlZCcgaXMgc2hvd24gYXMgJ2Rpc3BsYXllZCcgb24gc3VnZ2VzdGlvbnMsIGJ1dCBjb21wbGV0ZXMgdG8gJ2luc2VydGVkJy5cIlxuICAgICAgICApXG4gICAgICAgIC5hZGRUZXh0KChjYikgPT4ge1xuICAgICAgICAgIGNiLnNldFZhbHVlKFxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3NcbiAgICAgICAgICAgICAgLmRlbGltaXRlclRvRGl2aWRlU3VnZ2VzdGlvbnNGb3JEaXNwbGF5RnJvbUluc2VydGlvblxuICAgICAgICAgICkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5kZWxpbWl0ZXJUb0RpdmlkZVN1Z2dlc3Rpb25zRm9yRGlzcGxheUZyb21JbnNlcnRpb24gPVxuICAgICAgICAgICAgICB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgIC5zZXROYW1lKFwiQ2FyZXQgbG9jYXRpb24gc3ltYm9sIGFmdGVyIGNvbXBsZW1lbnRcIilcbiAgICAgICAgLnNldERlc2MoXG4gICAgICAgICAgXCJJZiBzZXQgJzxDQVJFVD4nIGFuZCB0aGVyZSBpcyAnPGxpPjxDQVJFVD48L2xpPicgaW4gY3VzdG9tIGRpY3Rpb25hcnksIGl0IGNvbXBsZW1lbnRzICc8bGk+PC9saT4nIGFuZCBtb3ZlIGEgY2FyZXQgd2hlcmUgYmV0d2VlbiAnPGxpPicgYW5kIGA8L2xpPmAuXCJcbiAgICAgICAgKVxuICAgICAgICAuYWRkVGV4dCgoY2IpID0+IHtcbiAgICAgICAgICBjYi5zZXRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmNhcmV0TG9jYXRpb25TeW1ib2xBZnRlckNvbXBsZW1lbnRcbiAgICAgICAgICApLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY2FyZXRMb2NhdGlvblN5bWJvbEFmdGVyQ29tcGxlbWVudCA9IHZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgICAgLnNldE5hbWUoXCJEaXNwbGF5ZWQgdGV4dCBzdWZmaXhcIilcbiAgICAgICAgLnNldERlc2MoXG4gICAgICAgICAgXCJJdCBzaG93cyBhcyBhIHN1ZmZpeCBvZiBkaXNwbGF5ZWQgdGV4dCBpZiB0aGVyZSBpcyBhIGRpZmZlcmVuY2UgYmV0d2VlbiBkaXNwbGF5ZWQgYW5kIGluc2VydGVkXCJcbiAgICAgICAgKVxuICAgICAgICAuYWRkVGV4dCgoY2IpID0+IHtcbiAgICAgICAgICBjYi5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5kaXNwbGF5ZWRUZXh0U3VmZml4KS5vbkNoYW5nZShcbiAgICAgICAgICAgIGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5kaXNwbGF5ZWRUZXh0U3VmZml4ID0gdmFsdWU7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkSW50ZXJuYWxMaW5rQ29tcGxlbWVudFNldHRpbmdzKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiaDNcIiwge1xuICAgICAgdGV4dDogXCJJbnRlcm5hbCBsaW5rIGNvbXBsZW1lbnRcIixcbiAgICAgIGNsczogXCJ2YXJpb3VzLWNvbXBsZW1lbnRzX19zZXR0aW5nc19faGVhZGVyIHZhcmlvdXMtY29tcGxlbWVudHNfX3NldHRpbmdzX19oZWFkZXJfX2ludGVybmFsLWxpbmtcIixcbiAgICB9KTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJFbmFibGUgSW50ZXJuYWwgbGluayBjb21wbGVtZW50XCIpXG4gICAgICAuYWRkVG9nZ2xlKCh0YykgPT4ge1xuICAgICAgICB0Yy5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5lbmFibGVJbnRlcm5hbExpbmtDb21wbGVtZW50KS5vbkNoYW5nZShcbiAgICAgICAgICBhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmVuYWJsZUludGVybmFsTGlua0NvbXBsZW1lbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncyh7IGludGVybmFsTGluazogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucGx1Z2luLnNldHRpbmdzLmVuYWJsZUludGVybmFsTGlua0NvbXBsZW1lbnQpIHtcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAuc2V0TmFtZShcIlN1Z2dlc3Qgd2l0aCBhbiBhbGlhc1wiKVxuICAgICAgICAuYWRkVG9nZ2xlKCh0YykgPT4ge1xuICAgICAgICAgIHRjLnNldFZhbHVlKFxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3Muc3VnZ2VzdEludGVybmFsTGlua1dpdGhBbGlhc1xuICAgICAgICAgICkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5zdWdnZXN0SW50ZXJuYWxMaW5rV2l0aEFsaWFzID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoeyBpbnRlcm5hbExpbms6IHRydWUgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgIC5zZXROYW1lKFwiRXhjbHVkZSBwcmVmaXggcGF0aCBwYXR0ZXJuc1wiKVxuICAgICAgICAuc2V0RGVzYyhcIlByZWZpeCBtYXRjaCBwYXRoIHBhdHRlcm5zIHRvIGV4Y2x1ZGUgZmlsZXMuXCIpXG4gICAgICAgIC5hZGRUZXh0QXJlYSgodGFjKSA9PiB7XG4gICAgICAgICAgY29uc3QgZWwgPSB0YWNcbiAgICAgICAgICAgIC5zZXRWYWx1ZShcbiAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZXhjbHVkZUludGVybmFsTGlua1BhdGhQcmVmaXhQYXR0ZXJuc1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnNldFBsYWNlaG9sZGVyKFwiUHJpdmF0ZS9cIilcbiAgICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZXhjbHVkZUludGVybmFsTGlua1BhdGhQcmVmaXhQYXR0ZXJucyA9XG4gICAgICAgICAgICAgICAgdmFsdWU7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgZWwuaW5wdXRFbC5jbGFzc05hbWUgPVxuICAgICAgICAgICAgXCJ2YXJpb3VzLWNvbXBsZW1lbnRzX19zZXR0aW5nc19fdGV4dC1hcmVhLXBhdGhcIjtcbiAgICAgICAgICByZXR1cm4gZWw7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkRnJvbnRNYXR0ZXJDb21wbGVtZW50U2V0dGluZ3MoY29udGFpbmVyRWw6IEhUTUxFbGVtZW50KSB7XG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoXCJoM1wiLCB7XG4gICAgICB0ZXh0OiBcIkZyb250IG1hdHRlciBjb21wbGVtZW50XCIsXG4gICAgICBjbHM6IFwidmFyaW91cy1jb21wbGVtZW50c19fc2V0dGluZ3NfX2hlYWRlciB2YXJpb3VzLWNvbXBsZW1lbnRzX19zZXR0aW5nc19faGVhZGVyX19mcm9udC1tYXR0ZXJcIixcbiAgICB9KTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJFbmFibGUgRnJvbnQgbWF0dGVyIGNvbXBsZW1lbnRcIilcbiAgICAgIC5hZGRUb2dnbGUoKHRjKSA9PiB7XG4gICAgICAgIHRjLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmVuYWJsZUZyb250TWF0dGVyQ29tcGxlbWVudCkub25DaGFuZ2UoXG4gICAgICAgICAgYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5lbmFibGVGcm9udE1hdHRlckNvbXBsZW1lbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncyh7IGZyb250TWF0dGVyOiB0cnVlIH0pO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5KCk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MuZW5hYmxlRnJvbnRNYXR0ZXJDb21wbGVtZW50KSB7XG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgICAgLnNldE5hbWUoXCJNYXRjaCBzdHJhdGVneSBpbiB0aGUgZnJvbnQgbWF0dGVyXCIpXG4gICAgICAgIC5hZGREcm9wZG93bigodGMpID0+XG4gICAgICAgICAgdGNcbiAgICAgICAgICAgIC5hZGRPcHRpb25zKFxuICAgICAgICAgICAgICBtaXJyb3JNYXAoU3BlY2lmaWNNYXRjaFN0cmF0ZWd5LnZhbHVlcygpLCAoeCkgPT4geC5uYW1lKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmZyb250TWF0dGVyQ29tcGxlbWVudE1hdGNoU3RyYXRlZ3kpXG4gICAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmZyb250TWF0dGVyQ29tcGxlbWVudE1hdGNoU3RyYXRlZ3kgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgICAgLnNldE5hbWUoXCJJbnNlcnQgY29tbWEgYWZ0ZXIgY29tcGxldGlvblwiKVxuICAgICAgICAuYWRkVG9nZ2xlKCh0YykgPT4ge1xuICAgICAgICAgIHRjLnNldFZhbHVlKFxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuaW5zZXJ0Q29tbWFBZnRlckZyb250TWF0dGVyQ29tcGxldGlvblxuICAgICAgICAgICkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5pbnNlcnRDb21tYUFmdGVyRnJvbnRNYXR0ZXJDb21wbGV0aW9uID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGREZWJ1Z1NldHRpbmdzKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiaDNcIiwgeyB0ZXh0OiBcIkRlYnVnXCIgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiU2hvdyBsb2cgYWJvdXQgcGVyZm9ybWFuY2UgaW4gYSBjb25zb2xlXCIpXG4gICAgICAuYWRkVG9nZ2xlKCh0YykgPT4ge1xuICAgICAgICB0Yy5zZXRWYWx1ZShcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5zaG93TG9nQWJvdXRQZXJmb3JtYW5jZUluQ29uc29sZVxuICAgICAgICApLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnNob3dMb2dBYm91dFBlcmZvcm1hbmNlSW5Db25zb2xlID0gdmFsdWU7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBhc3luYyB0b2dnbGVNYXRjaFN0cmF0ZWd5KCkge1xuICAgIHN3aXRjaCAodGhpcy5wbHVnaW4uc2V0dGluZ3MubWF0Y2hTdHJhdGVneSkge1xuICAgICAgY2FzZSBcInByZWZpeFwiOlxuICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5tYXRjaFN0cmF0ZWd5ID0gXCJwYXJ0aWFsXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInBhcnRpYWxcIjpcbiAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubWF0Y2hTdHJhdGVneSA9IFwicHJlZml4XCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gbm9pbnNwZWN0aW9uIE9iamVjdEFsbG9jYXRpb25JZ25vcmVkXG4gICAgICAgIG5ldyBOb3RpY2UoXCLimqBVbmV4cGVjdGVkIGVycm9yXCIpO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgfVxuXG4gIGFzeW5jIHRvZ2dsZUNvbXBsZW1lbnRBdXRvbWF0aWNhbGx5KCkge1xuICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbXBsZW1lbnRBdXRvbWF0aWNhbGx5ID1cbiAgICAgICF0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb21wbGVtZW50QXV0b21hdGljYWxseTtcbiAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgfVxuXG4gIGFzeW5jIGVuc3VyZUN1c3RvbURpY3Rpb25hcnlQYXRoKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBzdGF0ZTogXCJwcmVzZW50XCIgfCBcImFic2VudFwiXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHBhdGhzID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VzdG9tRGljdGlvbmFyeVBhdGhzLnNwbGl0KFwiXFxuXCIpO1xuICAgIGNvbnN0IGV4aXN0cyA9IHBhdGhzLnNvbWUoKHgpID0+IHggPT09IHBhdGgpO1xuICAgIGlmICgoZXhpc3RzICYmIHN0YXRlID09PSBcInByZXNlbnRcIikgfHwgKCFleGlzdHMgJiYgc3RhdGUgPT09IFwiYWJzZW50XCIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3UGF0aHMgPVxuICAgICAgc3RhdGUgPT09IFwicHJlc2VudFwiID8gWy4uLnBhdGhzLCBwYXRoXSA6IHBhdGhzLmZpbHRlcigoeCkgPT4geCAhPT0gcGF0aCk7XG4gICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VzdG9tRGljdGlvbmFyeVBhdGhzID0gbmV3UGF0aHMuam9pbihcIlxcblwiKTtcbiAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoeyBjdXN0b21EaWN0aW9uYXJ5OiB0cnVlIH0pO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXRQbHVnaW5TZXR0aW5nc0FzSnNvblN0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShcbiAgICAgIHtcbiAgICAgICAgdmVyc2lvbjogdGhpcy5wbHVnaW4ubWFuaWZlc3QudmVyc2lvbixcbiAgICAgICAgbW9iaWxlOiAodGhpcy5hcHAgYXMgYW55KS5pc01vYmlsZSxcbiAgICAgICAgc2V0dGluZ3M6IHsgLi4udGhpcy5wbHVnaW4uc2V0dGluZ3MsIHNlbGVjdGlvbkhpc3RvcnlUcmVlOiBudWxsIH0sXG4gICAgICB9LFxuICAgICAgbnVsbCxcbiAgICAgIDRcbiAgICApO1xuICB9XG59XG4iLCJpbXBvcnQgdHlwZSB7IE1hdGNoU3RyYXRlZ3kgfSBmcm9tIFwiLi4vcHJvdmlkZXIvTWF0Y2hTdHJhdGVneVwiO1xuXG5leHBvcnQgY2xhc3MgUHJvdmlkZXJTdGF0dXNCYXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY3VycmVudEZpbGU6IEhUTUxFbGVtZW50IHwgbnVsbCxcbiAgICBwdWJsaWMgY3VycmVudFZhdWx0OiBIVE1MRWxlbWVudCB8IG51bGwsXG4gICAgcHVibGljIGN1c3RvbURpY3Rpb25hcnk6IEhUTUxFbGVtZW50IHwgbnVsbCxcbiAgICBwdWJsaWMgaW50ZXJuYWxMaW5rOiBIVE1MRWxlbWVudCB8IG51bGwsXG4gICAgcHVibGljIGZyb250TWF0dGVyOiBIVE1MRWxlbWVudCB8IG51bGwsXG4gICAgcHVibGljIG1hdGNoU3RyYXRlZ3k6IEhUTUxFbGVtZW50IHwgbnVsbCxcbiAgICBwdWJsaWMgY29tcGxlbWVudEF1dG9tYXRpY2FsbHk6IEhUTUxFbGVtZW50IHwgbnVsbFxuICApIHt9XG5cbiAgc3RhdGljIG5ldyhcbiAgICBzdGF0dXNCYXI6IEhUTUxFbGVtZW50LFxuICAgIHNob3dNYXRjaFN0cmF0ZWd5OiBib29sZWFuLFxuICAgIHNob3dJbmRleGluZ1N0YXR1czogYm9vbGVhbixcbiAgICBzaG93Q29tcGxlbWVudEF1dG9tYXRpY2FsbHk6IGJvb2xlYW5cbiAgKTogUHJvdmlkZXJTdGF0dXNCYXIge1xuICAgIGNvbnN0IGN1cnJlbnRGaWxlID0gc2hvd0luZGV4aW5nU3RhdHVzXG4gICAgICA/IHN0YXR1c0Jhci5jcmVhdGVFbChcInNwYW5cIiwge1xuICAgICAgICAgIHRleHQ6IFwiLS0tXCIsXG4gICAgICAgICAgY2xzOiBcInZhcmlvdXMtY29tcGxlbWVudHNfX2Zvb3RlciB2YXJpb3VzLWNvbXBsZW1lbnRzX19mb290ZXJfX2N1cnJlbnQtZmlsZVwiLFxuICAgICAgICB9KVxuICAgICAgOiBudWxsO1xuICAgIGNvbnN0IGN1cnJlbnRWYXVsdCA9IHNob3dJbmRleGluZ1N0YXR1c1xuICAgICAgPyBzdGF0dXNCYXIuY3JlYXRlRWwoXCJzcGFuXCIsIHtcbiAgICAgICAgICB0ZXh0OiBcIi0tLVwiLFxuICAgICAgICAgIGNsczogXCJ2YXJpb3VzLWNvbXBsZW1lbnRzX19mb290ZXIgdmFyaW91cy1jb21wbGVtZW50c19fZm9vdGVyX19jdXJyZW50LXZhdWx0XCIsXG4gICAgICAgIH0pXG4gICAgICA6IG51bGw7XG4gICAgY29uc3QgY3VzdG9tRGljdGlvbmFyeSA9IHNob3dJbmRleGluZ1N0YXR1c1xuICAgICAgPyBzdGF0dXNCYXIuY3JlYXRlRWwoXCJzcGFuXCIsIHtcbiAgICAgICAgICB0ZXh0OiBcIi0tLVwiLFxuICAgICAgICAgIGNsczogXCJ2YXJpb3VzLWNvbXBsZW1lbnRzX19mb290ZXIgdmFyaW91cy1jb21wbGVtZW50c19fZm9vdGVyX19jdXN0b20tZGljdGlvbmFyeVwiLFxuICAgICAgICB9KVxuICAgICAgOiBudWxsO1xuICAgIGNvbnN0IGludGVybmFsTGluayA9IHNob3dJbmRleGluZ1N0YXR1c1xuICAgICAgPyBzdGF0dXNCYXIuY3JlYXRlRWwoXCJzcGFuXCIsIHtcbiAgICAgICAgICB0ZXh0OiBcIi0tLVwiLFxuICAgICAgICAgIGNsczogXCJ2YXJpb3VzLWNvbXBsZW1lbnRzX19mb290ZXIgdmFyaW91cy1jb21wbGVtZW50c19fZm9vdGVyX19pbnRlcm5hbC1saW5rXCIsXG4gICAgICAgIH0pXG4gICAgICA6IG51bGw7XG4gICAgY29uc3QgZnJvbnRNYXR0ZXIgPSBzaG93SW5kZXhpbmdTdGF0dXNcbiAgICAgID8gc3RhdHVzQmFyLmNyZWF0ZUVsKFwic3BhblwiLCB7XG4gICAgICAgICAgdGV4dDogXCItLS1cIixcbiAgICAgICAgICBjbHM6IFwidmFyaW91cy1jb21wbGVtZW50c19fZm9vdGVyIHZhcmlvdXMtY29tcGxlbWVudHNfX2Zvb3Rlcl9fZnJvbnQtbWF0dGVyXCIsXG4gICAgICAgIH0pXG4gICAgICA6IG51bGw7XG5cbiAgICBjb25zdCBtYXRjaFN0cmF0ZWd5ID0gc2hvd01hdGNoU3RyYXRlZ3lcbiAgICAgID8gc3RhdHVzQmFyLmNyZWF0ZUVsKFwic3BhblwiLCB7XG4gICAgICAgICAgdGV4dDogXCItLS1cIixcbiAgICAgICAgICBjbHM6IFwidmFyaW91cy1jb21wbGVtZW50c19fZm9vdGVyIHZhcmlvdXMtY29tcGxlbWVudHNfX2Zvb3Rlcl9fbWF0Y2gtc3RyYXRlZ3lcIixcbiAgICAgICAgfSlcbiAgICAgIDogbnVsbDtcblxuICAgIGNvbnN0IGNvbXBsZW1lbnRBdXRvbWF0aWNhbGx5ID0gc2hvd0NvbXBsZW1lbnRBdXRvbWF0aWNhbGx5XG4gICAgICA/IHN0YXR1c0Jhci5jcmVhdGVFbChcInNwYW5cIiwge1xuICAgICAgICAgIHRleHQ6IFwiLS0tXCIsXG4gICAgICAgICAgY2xzOiBcInZhcmlvdXMtY29tcGxlbWVudHNfX2Zvb3RlciB2YXJpb3VzLWNvbXBsZW1lbnRzX19mb290ZXJfX2NvbXBsZW1lbnQtYXV0b21hdGljYWxseVwiLFxuICAgICAgICB9KVxuICAgICAgOiBudWxsO1xuXG4gICAgcmV0dXJuIG5ldyBQcm92aWRlclN0YXR1c0JhcihcbiAgICAgIGN1cnJlbnRGaWxlLFxuICAgICAgY3VycmVudFZhdWx0LFxuICAgICAgY3VzdG9tRGljdGlvbmFyeSxcbiAgICAgIGludGVybmFsTGluayxcbiAgICAgIGZyb250TWF0dGVyLFxuICAgICAgbWF0Y2hTdHJhdGVneSxcbiAgICAgIGNvbXBsZW1lbnRBdXRvbWF0aWNhbGx5XG4gICAgKTtcbiAgfVxuXG4gIHNldE9uQ2xpY2tTdHJhdGVneUxpc3RlbmVyKGxpc3RlbmVyOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5tYXRjaFN0cmF0ZWd5Py5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgbGlzdGVuZXIpO1xuICB9XG4gIHNldE9uQ2xpY2tDb21wbGVtZW50QXV0b21hdGljYWxseShsaXN0ZW5lcjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMuY29tcGxlbWVudEF1dG9tYXRpY2FsbHk/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBsaXN0ZW5lcik7XG4gIH1cblxuICBzZXRDdXJyZW50RmlsZURpc2FibGVkKCkge1xuICAgIHRoaXMuY3VycmVudEZpbGU/LnNldFRleHQoXCItLS1cIik7XG4gIH1cbiAgc2V0Q3VycmVudFZhdWx0RGlzYWJsZWQoKSB7XG4gICAgdGhpcy5jdXJyZW50VmF1bHQ/LnNldFRleHQoXCItLS1cIik7XG4gIH1cbiAgc2V0Q3VzdG9tRGljdGlvbmFyeURpc2FibGVkKCkge1xuICAgIHRoaXMuY3VzdG9tRGljdGlvbmFyeT8uc2V0VGV4dChcIi0tLVwiKTtcbiAgfVxuICBzZXRJbnRlcm5hbExpbmtEaXNhYmxlZCgpIHtcbiAgICB0aGlzLmludGVybmFsTGluaz8uc2V0VGV4dChcIi0tLVwiKTtcbiAgfVxuICBzZXRGcm9udE1hdHRlckRpc2FibGVkKCkge1xuICAgIHRoaXMuZnJvbnRNYXR0ZXI/LnNldFRleHQoXCItLS1cIik7XG4gIH1cblxuICBzZXRDdXJyZW50RmlsZUluZGV4aW5nKCkge1xuICAgIHRoaXMuY3VycmVudEZpbGU/LnNldFRleHQoXCJpbmRleGluZy4uLlwiKTtcbiAgfVxuICBzZXRDdXJyZW50VmF1bHRJbmRleGluZygpIHtcbiAgICB0aGlzLmN1cnJlbnRWYXVsdD8uc2V0VGV4dChcImluZGV4aW5nLi4uXCIpO1xuICB9XG4gIHNldEN1c3RvbURpY3Rpb25hcnlJbmRleGluZygpIHtcbiAgICB0aGlzLmN1c3RvbURpY3Rpb25hcnk/LnNldFRleHQoXCJpbmRleGluZy4uLlwiKTtcbiAgfVxuICBzZXRJbnRlcm5hbExpbmtJbmRleGluZygpIHtcbiAgICB0aGlzLmludGVybmFsTGluaz8uc2V0VGV4dChcImluZGV4aW5nLi4uXCIpO1xuICB9XG4gIHNldEZyb250TWF0dGVySW5kZXhpbmcoKSB7XG4gICAgdGhpcy5mcm9udE1hdHRlcj8uc2V0VGV4dChcImluZGV4aW5nLi4uXCIpO1xuICB9XG5cbiAgc2V0Q3VycmVudEZpbGVJbmRleGVkKGNvdW50OiBhbnkpIHtcbiAgICB0aGlzLmN1cnJlbnRGaWxlPy5zZXRUZXh0KFN0cmluZyhjb3VudCkpO1xuICB9XG4gIHNldEN1cnJlbnRWYXVsdEluZGV4ZWQoY291bnQ6IGFueSkge1xuICAgIHRoaXMuY3VycmVudFZhdWx0Py5zZXRUZXh0KFN0cmluZyhjb3VudCkpO1xuICB9XG4gIHNldEN1c3RvbURpY3Rpb25hcnlJbmRleGVkKGNvdW50OiBhbnkpIHtcbiAgICB0aGlzLmN1c3RvbURpY3Rpb25hcnk/LnNldFRleHQoU3RyaW5nKGNvdW50KSk7XG4gIH1cbiAgc2V0SW50ZXJuYWxMaW5rSW5kZXhlZChjb3VudDogYW55KSB7XG4gICAgdGhpcy5pbnRlcm5hbExpbms/LnNldFRleHQoU3RyaW5nKGNvdW50KSk7XG4gIH1cbiAgc2V0RnJvbnRNYXR0ZXJJbmRleGVkKGNvdW50OiBhbnkpIHtcbiAgICB0aGlzLmZyb250TWF0dGVyPy5zZXRUZXh0KFN0cmluZyhjb3VudCkpO1xuICB9XG5cbiAgc2V0TWF0Y2hTdHJhdGVneShzdHJhdGVneTogTWF0Y2hTdHJhdGVneSkge1xuICAgIHRoaXMubWF0Y2hTdHJhdGVneT8uc2V0VGV4dChzdHJhdGVneS5uYW1lKTtcbiAgfVxuICBzZXRDb21wbGVtZW50QXV0b21hdGljYWxseShhdXRvbWF0aWNhbGx5OiBib29sZWFuKSB7XG4gICAgdGhpcy5jb21wbGVtZW50QXV0b21hdGljYWxseT8uc2V0VGV4dChhdXRvbWF0aWNhbGx5ID8gXCJhdXRvXCIgOiBcIm1hbnVhbFwiKTtcbiAgfVxufVxuIiwiZnVuY3Rpb24gbm9vcCgpIHsgfVxuY29uc3QgaWRlbnRpdHkgPSB4ID0+IHg7XG5mdW5jdGlvbiBhc3NpZ24odGFyLCBzcmMpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZm9yIChjb25zdCBrIGluIHNyYylcbiAgICAgICAgdGFyW2tdID0gc3JjW2tdO1xuICAgIHJldHVybiB0YXI7XG59XG5mdW5jdGlvbiBpc19wcm9taXNlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbic7XG59XG5mdW5jdGlvbiBhZGRfbG9jYXRpb24oZWxlbWVudCwgZmlsZSwgbGluZSwgY29sdW1uLCBjaGFyKSB7XG4gICAgZWxlbWVudC5fX3N2ZWx0ZV9tZXRhID0ge1xuICAgICAgICBsb2M6IHsgZmlsZSwgbGluZSwgY29sdW1uLCBjaGFyIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gcnVuKGZuKSB7XG4gICAgcmV0dXJuIGZuKCk7XG59XG5mdW5jdGlvbiBibGFua19vYmplY3QoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5jcmVhdGUobnVsbCk7XG59XG5mdW5jdGlvbiBydW5fYWxsKGZucykge1xuICAgIGZucy5mb3JFYWNoKHJ1bik7XG59XG5mdW5jdGlvbiBpc19mdW5jdGlvbih0aGluZykge1xuICAgIHJldHVybiB0eXBlb2YgdGhpbmcgPT09ICdmdW5jdGlvbic7XG59XG5mdW5jdGlvbiBzYWZlX25vdF9lcXVhbChhLCBiKSB7XG4gICAgcmV0dXJuIGEgIT0gYSA/IGIgPT0gYiA6IGEgIT09IGIgfHwgKChhICYmIHR5cGVvZiBhID09PSAnb2JqZWN0JykgfHwgdHlwZW9mIGEgPT09ICdmdW5jdGlvbicpO1xufVxubGV0IHNyY191cmxfZXF1YWxfYW5jaG9yO1xuZnVuY3Rpb24gc3JjX3VybF9lcXVhbChlbGVtZW50X3NyYywgdXJsKSB7XG4gICAgaWYgKCFzcmNfdXJsX2VxdWFsX2FuY2hvcikge1xuICAgICAgICBzcmNfdXJsX2VxdWFsX2FuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICB9XG4gICAgc3JjX3VybF9lcXVhbF9hbmNob3IuaHJlZiA9IHVybDtcbiAgICByZXR1cm4gZWxlbWVudF9zcmMgPT09IHNyY191cmxfZXF1YWxfYW5jaG9yLmhyZWY7XG59XG5mdW5jdGlvbiBub3RfZXF1YWwoYSwgYikge1xuICAgIHJldHVybiBhICE9IGEgPyBiID09IGIgOiBhICE9PSBiO1xufVxuZnVuY3Rpb24gaXNfZW1wdHkob2JqKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwO1xufVxuZnVuY3Rpb24gdmFsaWRhdGVfc3RvcmUoc3RvcmUsIG5hbWUpIHtcbiAgICBpZiAoc3RvcmUgIT0gbnVsbCAmJiB0eXBlb2Ygc3RvcmUuc3Vic2NyaWJlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7bmFtZX0nIGlzIG5vdCBhIHN0b3JlIHdpdGggYSAnc3Vic2NyaWJlJyBtZXRob2RgKTtcbiAgICB9XG59XG5mdW5jdGlvbiBzdWJzY3JpYmUoc3RvcmUsIC4uLmNhbGxiYWNrcykge1xuICAgIGlmIChzdG9yZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBub29wO1xuICAgIH1cbiAgICBjb25zdCB1bnN1YiA9IHN0b3JlLnN1YnNjcmliZSguLi5jYWxsYmFja3MpO1xuICAgIHJldHVybiB1bnN1Yi51bnN1YnNjcmliZSA/ICgpID0+IHVuc3ViLnVuc3Vic2NyaWJlKCkgOiB1bnN1Yjtcbn1cbmZ1bmN0aW9uIGdldF9zdG9yZV92YWx1ZShzdG9yZSkge1xuICAgIGxldCB2YWx1ZTtcbiAgICBzdWJzY3JpYmUoc3RvcmUsIF8gPT4gdmFsdWUgPSBfKSgpO1xuICAgIHJldHVybiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGNvbXBvbmVudF9zdWJzY3JpYmUoY29tcG9uZW50LCBzdG9yZSwgY2FsbGJhY2spIHtcbiAgICBjb21wb25lbnQuJCQub25fZGVzdHJveS5wdXNoKHN1YnNjcmliZShzdG9yZSwgY2FsbGJhY2spKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZV9zbG90KGRlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgZm4pIHtcbiAgICBpZiAoZGVmaW5pdGlvbikge1xuICAgICAgICBjb25zdCBzbG90X2N0eCA9IGdldF9zbG90X2NvbnRleHQoZGVmaW5pdGlvbiwgY3R4LCAkJHNjb3BlLCBmbik7XG4gICAgICAgIHJldHVybiBkZWZpbml0aW9uWzBdKHNsb3RfY3R4KTtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRfc2xvdF9jb250ZXh0KGRlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgZm4pIHtcbiAgICByZXR1cm4gZGVmaW5pdGlvblsxXSAmJiBmblxuICAgICAgICA/IGFzc2lnbigkJHNjb3BlLmN0eC5zbGljZSgpLCBkZWZpbml0aW9uWzFdKGZuKGN0eCkpKVxuICAgICAgICA6ICQkc2NvcGUuY3R4O1xufVxuZnVuY3Rpb24gZ2V0X3Nsb3RfY2hhbmdlcyhkZWZpbml0aW9uLCAkJHNjb3BlLCBkaXJ0eSwgZm4pIHtcbiAgICBpZiAoZGVmaW5pdGlvblsyXSAmJiBmbikge1xuICAgICAgICBjb25zdCBsZXRzID0gZGVmaW5pdGlvblsyXShmbihkaXJ0eSkpO1xuICAgICAgICBpZiAoJCRzY29wZS5kaXJ0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gbGV0cztcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGxldHMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWQgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IE1hdGgubWF4KCQkc2NvcGUuZGlydHkubGVuZ3RoLCBsZXRzLmxlbmd0aCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgbWVyZ2VkW2ldID0gJCRzY29wZS5kaXJ0eVtpXSB8IGxldHNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWVyZ2VkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAkJHNjb3BlLmRpcnR5IHwgbGV0cztcbiAgICB9XG4gICAgcmV0dXJuICQkc2NvcGUuZGlydHk7XG59XG5mdW5jdGlvbiB1cGRhdGVfc2xvdF9iYXNlKHNsb3QsIHNsb3RfZGVmaW5pdGlvbiwgY3R4LCAkJHNjb3BlLCBzbG90X2NoYW5nZXMsIGdldF9zbG90X2NvbnRleHRfZm4pIHtcbiAgICBpZiAoc2xvdF9jaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IHNsb3RfY29udGV4dCA9IGdldF9zbG90X2NvbnRleHQoc2xvdF9kZWZpbml0aW9uLCBjdHgsICQkc2NvcGUsIGdldF9zbG90X2NvbnRleHRfZm4pO1xuICAgICAgICBzbG90LnAoc2xvdF9jb250ZXh0LCBzbG90X2NoYW5nZXMpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHVwZGF0ZV9zbG90KHNsb3QsIHNsb3RfZGVmaW5pdGlvbiwgY3R4LCAkJHNjb3BlLCBkaXJ0eSwgZ2V0X3Nsb3RfY2hhbmdlc19mbiwgZ2V0X3Nsb3RfY29udGV4dF9mbikge1xuICAgIGNvbnN0IHNsb3RfY2hhbmdlcyA9IGdldF9zbG90X2NoYW5nZXMoc2xvdF9kZWZpbml0aW9uLCAkJHNjb3BlLCBkaXJ0eSwgZ2V0X3Nsb3RfY2hhbmdlc19mbik7XG4gICAgdXBkYXRlX3Nsb3RfYmFzZShzbG90LCBzbG90X2RlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgc2xvdF9jaGFuZ2VzLCBnZXRfc2xvdF9jb250ZXh0X2ZuKTtcbn1cbmZ1bmN0aW9uIGdldF9hbGxfZGlydHlfZnJvbV9zY29wZSgkJHNjb3BlKSB7XG4gICAgaWYgKCQkc2NvcGUuY3R4Lmxlbmd0aCA+IDMyKSB7XG4gICAgICAgIGNvbnN0IGRpcnR5ID0gW107XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9ICQkc2NvcGUuY3R4Lmxlbmd0aCAvIDMyO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBkaXJ0eVtpXSA9IC0xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkaXJ0eTtcbiAgICB9XG4gICAgcmV0dXJuIC0xO1xufVxuZnVuY3Rpb24gZXhjbHVkZV9pbnRlcm5hbF9wcm9wcyhwcm9wcykge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3QgayBpbiBwcm9wcylcbiAgICAgICAgaWYgKGtbMF0gIT09ICckJylcbiAgICAgICAgICAgIHJlc3VsdFtrXSA9IHByb3BzW2tdO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBjb21wdXRlX3Jlc3RfcHJvcHMocHJvcHMsIGtleXMpIHtcbiAgICBjb25zdCByZXN0ID0ge307XG4gICAga2V5cyA9IG5ldyBTZXQoa2V5cyk7XG4gICAgZm9yIChjb25zdCBrIGluIHByb3BzKVxuICAgICAgICBpZiAoIWtleXMuaGFzKGspICYmIGtbMF0gIT09ICckJylcbiAgICAgICAgICAgIHJlc3Rba10gPSBwcm9wc1trXTtcbiAgICByZXR1cm4gcmVzdDtcbn1cbmZ1bmN0aW9uIGNvbXB1dGVfc2xvdHMoc2xvdHMpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzbG90cykge1xuICAgICAgICByZXN1bHRba2V5XSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBvbmNlKGZuKSB7XG4gICAgbGV0IHJhbiA9IGZhbHNlO1xuICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBpZiAocmFuKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICByYW4gPSB0cnVlO1xuICAgICAgICBmbi5jYWxsKHRoaXMsIC4uLmFyZ3MpO1xuICAgIH07XG59XG5mdW5jdGlvbiBudWxsX3RvX2VtcHR5KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xufVxuZnVuY3Rpb24gc2V0X3N0b3JlX3ZhbHVlKHN0b3JlLCByZXQsIHZhbHVlKSB7XG4gICAgc3RvcmUuc2V0KHZhbHVlKTtcbiAgICByZXR1cm4gcmV0O1xufVxuY29uc3QgaGFzX3Byb3AgPSAob2JqLCBwcm9wKSA9PiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTtcbmZ1bmN0aW9uIGFjdGlvbl9kZXN0cm95ZXIoYWN0aW9uX3Jlc3VsdCkge1xuICAgIHJldHVybiBhY3Rpb25fcmVzdWx0ICYmIGlzX2Z1bmN0aW9uKGFjdGlvbl9yZXN1bHQuZGVzdHJveSkgPyBhY3Rpb25fcmVzdWx0LmRlc3Ryb3kgOiBub29wO1xufVxuXG5jb25zdCBpc19jbGllbnQgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbmxldCBub3cgPSBpc19jbGllbnRcbiAgICA/ICgpID0+IHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKVxuICAgIDogKCkgPT4gRGF0ZS5ub3coKTtcbmxldCByYWYgPSBpc19jbGllbnQgPyBjYiA9PiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2IpIDogbm9vcDtcbi8vIHVzZWQgaW50ZXJuYWxseSBmb3IgdGVzdGluZ1xuZnVuY3Rpb24gc2V0X25vdyhmbikge1xuICAgIG5vdyA9IGZuO1xufVxuZnVuY3Rpb24gc2V0X3JhZihmbikge1xuICAgIHJhZiA9IGZuO1xufVxuXG5jb25zdCB0YXNrcyA9IG5ldyBTZXQoKTtcbmZ1bmN0aW9uIHJ1bl90YXNrcyhub3cpIHtcbiAgICB0YXNrcy5mb3JFYWNoKHRhc2sgPT4ge1xuICAgICAgICBpZiAoIXRhc2suYyhub3cpKSB7XG4gICAgICAgICAgICB0YXNrcy5kZWxldGUodGFzayk7XG4gICAgICAgICAgICB0YXNrLmYoKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGlmICh0YXNrcy5zaXplICE9PSAwKVxuICAgICAgICByYWYocnVuX3Rhc2tzKTtcbn1cbi8qKlxuICogRm9yIHRlc3RpbmcgcHVycG9zZXMgb25seSFcbiAqL1xuZnVuY3Rpb24gY2xlYXJfbG9vcHMoKSB7XG4gICAgdGFza3MuY2xlYXIoKTtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB0YXNrIHRoYXQgcnVucyBvbiBlYWNoIHJhZiBmcmFtZVxuICogdW50aWwgaXQgcmV0dXJucyBhIGZhbHN5IHZhbHVlIG9yIGlzIGFib3J0ZWRcbiAqL1xuZnVuY3Rpb24gbG9vcChjYWxsYmFjaykge1xuICAgIGxldCB0YXNrO1xuICAgIGlmICh0YXNrcy5zaXplID09PSAwKVxuICAgICAgICByYWYocnVuX3Rhc2tzKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBwcm9taXNlOiBuZXcgUHJvbWlzZShmdWxmaWxsID0+IHtcbiAgICAgICAgICAgIHRhc2tzLmFkZCh0YXNrID0geyBjOiBjYWxsYmFjaywgZjogZnVsZmlsbCB9KTtcbiAgICAgICAgfSksXG4gICAgICAgIGFib3J0KCkge1xuICAgICAgICAgICAgdGFza3MuZGVsZXRlKHRhc2spO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuLy8gVHJhY2sgd2hpY2ggbm9kZXMgYXJlIGNsYWltZWQgZHVyaW5nIGh5ZHJhdGlvbi4gVW5jbGFpbWVkIG5vZGVzIGNhbiB0aGVuIGJlIHJlbW92ZWQgZnJvbSB0aGUgRE9NXG4vLyBhdCB0aGUgZW5kIG9mIGh5ZHJhdGlvbiB3aXRob3V0IHRvdWNoaW5nIHRoZSByZW1haW5pbmcgbm9kZXMuXG5sZXQgaXNfaHlkcmF0aW5nID0gZmFsc2U7XG5mdW5jdGlvbiBzdGFydF9oeWRyYXRpbmcoKSB7XG4gICAgaXNfaHlkcmF0aW5nID0gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGVuZF9oeWRyYXRpbmcoKSB7XG4gICAgaXNfaHlkcmF0aW5nID0gZmFsc2U7XG59XG5mdW5jdGlvbiB1cHBlcl9ib3VuZChsb3csIGhpZ2gsIGtleSwgdmFsdWUpIHtcbiAgICAvLyBSZXR1cm4gZmlyc3QgaW5kZXggb2YgdmFsdWUgbGFyZ2VyIHRoYW4gaW5wdXQgdmFsdWUgaW4gdGhlIHJhbmdlIFtsb3csIGhpZ2gpXG4gICAgd2hpbGUgKGxvdyA8IGhpZ2gpIHtcbiAgICAgICAgY29uc3QgbWlkID0gbG93ICsgKChoaWdoIC0gbG93KSA+PiAxKTtcbiAgICAgICAgaWYgKGtleShtaWQpIDw9IHZhbHVlKSB7XG4gICAgICAgICAgICBsb3cgPSBtaWQgKyAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaGlnaCA9IG1pZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbG93O1xufVxuZnVuY3Rpb24gaW5pdF9oeWRyYXRlKHRhcmdldCkge1xuICAgIGlmICh0YXJnZXQuaHlkcmF0ZV9pbml0KVxuICAgICAgICByZXR1cm47XG4gICAgdGFyZ2V0Lmh5ZHJhdGVfaW5pdCA9IHRydWU7XG4gICAgLy8gV2Uga25vdyB0aGF0IGFsbCBjaGlsZHJlbiBoYXZlIGNsYWltX29yZGVyIHZhbHVlcyBzaW5jZSB0aGUgdW5jbGFpbWVkIGhhdmUgYmVlbiBkZXRhY2hlZCBpZiB0YXJnZXQgaXMgbm90IDxoZWFkPlxuICAgIGxldCBjaGlsZHJlbiA9IHRhcmdldC5jaGlsZE5vZGVzO1xuICAgIC8vIElmIHRhcmdldCBpcyA8aGVhZD4sIHRoZXJlIG1heSBiZSBjaGlsZHJlbiB3aXRob3V0IGNsYWltX29yZGVyXG4gICAgaWYgKHRhcmdldC5ub2RlTmFtZSA9PT0gJ0hFQUQnKSB7XG4gICAgICAgIGNvbnN0IG15Q2hpbGRyZW4gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGNoaWxkcmVuW2ldO1xuICAgICAgICAgICAgaWYgKG5vZGUuY2xhaW1fb3JkZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIG15Q2hpbGRyZW4ucHVzaChub2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjaGlsZHJlbiA9IG15Q2hpbGRyZW47XG4gICAgfVxuICAgIC8qXG4gICAgKiBSZW9yZGVyIGNsYWltZWQgY2hpbGRyZW4gb3B0aW1hbGx5LlxuICAgICogV2UgY2FuIHJlb3JkZXIgY2xhaW1lZCBjaGlsZHJlbiBvcHRpbWFsbHkgYnkgZmluZGluZyB0aGUgbG9uZ2VzdCBzdWJzZXF1ZW5jZSBvZlxuICAgICogbm9kZXMgdGhhdCBhcmUgYWxyZWFkeSBjbGFpbWVkIGluIG9yZGVyIGFuZCBvbmx5IG1vdmluZyB0aGUgcmVzdC4gVGhlIGxvbmdlc3RcbiAgICAqIHN1YnNlcXVlbmNlIHN1YnNlcXVlbmNlIG9mIG5vZGVzIHRoYXQgYXJlIGNsYWltZWQgaW4gb3JkZXIgY2FuIGJlIGZvdW5kIGJ5XG4gICAgKiBjb21wdXRpbmcgdGhlIGxvbmdlc3QgaW5jcmVhc2luZyBzdWJzZXF1ZW5jZSBvZiAuY2xhaW1fb3JkZXIgdmFsdWVzLlxuICAgICpcbiAgICAqIFRoaXMgYWxnb3JpdGhtIGlzIG9wdGltYWwgaW4gZ2VuZXJhdGluZyB0aGUgbGVhc3QgYW1vdW50IG9mIHJlb3JkZXIgb3BlcmF0aW9uc1xuICAgICogcG9zc2libGUuXG4gICAgKlxuICAgICogUHJvb2Y6XG4gICAgKiBXZSBrbm93IHRoYXQsIGdpdmVuIGEgc2V0IG9mIHJlb3JkZXJpbmcgb3BlcmF0aW9ucywgdGhlIG5vZGVzIHRoYXQgZG8gbm90IG1vdmVcbiAgICAqIGFsd2F5cyBmb3JtIGFuIGluY3JlYXNpbmcgc3Vic2VxdWVuY2UsIHNpbmNlIHRoZXkgZG8gbm90IG1vdmUgYW1vbmcgZWFjaCBvdGhlclxuICAgICogbWVhbmluZyB0aGF0IHRoZXkgbXVzdCBiZSBhbHJlYWR5IG9yZGVyZWQgYW1vbmcgZWFjaCBvdGhlci4gVGh1cywgdGhlIG1heGltYWxcbiAgICAqIHNldCBvZiBub2RlcyB0aGF0IGRvIG5vdCBtb3ZlIGZvcm0gYSBsb25nZXN0IGluY3JlYXNpbmcgc3Vic2VxdWVuY2UuXG4gICAgKi9cbiAgICAvLyBDb21wdXRlIGxvbmdlc3QgaW5jcmVhc2luZyBzdWJzZXF1ZW5jZVxuICAgIC8vIG06IHN1YnNlcXVlbmNlIGxlbmd0aCBqID0+IGluZGV4IGsgb2Ygc21hbGxlc3QgdmFsdWUgdGhhdCBlbmRzIGFuIGluY3JlYXNpbmcgc3Vic2VxdWVuY2Ugb2YgbGVuZ3RoIGpcbiAgICBjb25zdCBtID0gbmV3IEludDMyQXJyYXkoY2hpbGRyZW4ubGVuZ3RoICsgMSk7XG4gICAgLy8gUHJlZGVjZXNzb3IgaW5kaWNlcyArIDFcbiAgICBjb25zdCBwID0gbmV3IEludDMyQXJyYXkoY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICBtWzBdID0gLTE7XG4gICAgbGV0IGxvbmdlc3QgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGNoaWxkcmVuW2ldLmNsYWltX29yZGVyO1xuICAgICAgICAvLyBGaW5kIHRoZSBsYXJnZXN0IHN1YnNlcXVlbmNlIGxlbmd0aCBzdWNoIHRoYXQgaXQgZW5kcyBpbiBhIHZhbHVlIGxlc3MgdGhhbiBvdXIgY3VycmVudCB2YWx1ZVxuICAgICAgICAvLyB1cHBlcl9ib3VuZCByZXR1cm5zIGZpcnN0IGdyZWF0ZXIgdmFsdWUsIHNvIHdlIHN1YnRyYWN0IG9uZVxuICAgICAgICAvLyB3aXRoIGZhc3QgcGF0aCBmb3Igd2hlbiB3ZSBhcmUgb24gdGhlIGN1cnJlbnQgbG9uZ2VzdCBzdWJzZXF1ZW5jZVxuICAgICAgICBjb25zdCBzZXFMZW4gPSAoKGxvbmdlc3QgPiAwICYmIGNoaWxkcmVuW21bbG9uZ2VzdF1dLmNsYWltX29yZGVyIDw9IGN1cnJlbnQpID8gbG9uZ2VzdCArIDEgOiB1cHBlcl9ib3VuZCgxLCBsb25nZXN0LCBpZHggPT4gY2hpbGRyZW5bbVtpZHhdXS5jbGFpbV9vcmRlciwgY3VycmVudCkpIC0gMTtcbiAgICAgICAgcFtpXSA9IG1bc2VxTGVuXSArIDE7XG4gICAgICAgIGNvbnN0IG5ld0xlbiA9IHNlcUxlbiArIDE7XG4gICAgICAgIC8vIFdlIGNhbiBndWFyYW50ZWUgdGhhdCBjdXJyZW50IGlzIHRoZSBzbWFsbGVzdCB2YWx1ZS4gT3RoZXJ3aXNlLCB3ZSB3b3VsZCBoYXZlIGdlbmVyYXRlZCBhIGxvbmdlciBzZXF1ZW5jZS5cbiAgICAgICAgbVtuZXdMZW5dID0gaTtcbiAgICAgICAgbG9uZ2VzdCA9IE1hdGgubWF4KG5ld0xlbiwgbG9uZ2VzdCk7XG4gICAgfVxuICAgIC8vIFRoZSBsb25nZXN0IGluY3JlYXNpbmcgc3Vic2VxdWVuY2Ugb2Ygbm9kZXMgKGluaXRpYWxseSByZXZlcnNlZClcbiAgICBjb25zdCBsaXMgPSBbXTtcbiAgICAvLyBUaGUgcmVzdCBvZiB0aGUgbm9kZXMsIG5vZGVzIHRoYXQgd2lsbCBiZSBtb3ZlZFxuICAgIGNvbnN0IHRvTW92ZSA9IFtdO1xuICAgIGxldCBsYXN0ID0gY2hpbGRyZW4ubGVuZ3RoIC0gMTtcbiAgICBmb3IgKGxldCBjdXIgPSBtW2xvbmdlc3RdICsgMTsgY3VyICE9IDA7IGN1ciA9IHBbY3VyIC0gMV0pIHtcbiAgICAgICAgbGlzLnB1c2goY2hpbGRyZW5bY3VyIC0gMV0pO1xuICAgICAgICBmb3IgKDsgbGFzdCA+PSBjdXI7IGxhc3QtLSkge1xuICAgICAgICAgICAgdG9Nb3ZlLnB1c2goY2hpbGRyZW5bbGFzdF0pO1xuICAgICAgICB9XG4gICAgICAgIGxhc3QtLTtcbiAgICB9XG4gICAgZm9yICg7IGxhc3QgPj0gMDsgbGFzdC0tKSB7XG4gICAgICAgIHRvTW92ZS5wdXNoKGNoaWxkcmVuW2xhc3RdKTtcbiAgICB9XG4gICAgbGlzLnJldmVyc2UoKTtcbiAgICAvLyBXZSBzb3J0IHRoZSBub2RlcyBiZWluZyBtb3ZlZCB0byBndWFyYW50ZWUgdGhhdCB0aGVpciBpbnNlcnRpb24gb3JkZXIgbWF0Y2hlcyB0aGUgY2xhaW0gb3JkZXJcbiAgICB0b01vdmUuc29ydCgoYSwgYikgPT4gYS5jbGFpbV9vcmRlciAtIGIuY2xhaW1fb3JkZXIpO1xuICAgIC8vIEZpbmFsbHksIHdlIG1vdmUgdGhlIG5vZGVzXG4gICAgZm9yIChsZXQgaSA9IDAsIGogPSAwOyBpIDwgdG9Nb3ZlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHdoaWxlIChqIDwgbGlzLmxlbmd0aCAmJiB0b01vdmVbaV0uY2xhaW1fb3JkZXIgPj0gbGlzW2pdLmNsYWltX29yZGVyKSB7XG4gICAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW5jaG9yID0gaiA8IGxpcy5sZW5ndGggPyBsaXNbal0gOiBudWxsO1xuICAgICAgICB0YXJnZXQuaW5zZXJ0QmVmb3JlKHRvTW92ZVtpXSwgYW5jaG9yKTtcbiAgICB9XG59XG5mdW5jdGlvbiBhcHBlbmQodGFyZ2V0LCBub2RlKSB7XG4gICAgdGFyZ2V0LmFwcGVuZENoaWxkKG5vZGUpO1xufVxuZnVuY3Rpb24gYXBwZW5kX3N0eWxlcyh0YXJnZXQsIHN0eWxlX3NoZWV0X2lkLCBzdHlsZXMpIHtcbiAgICBjb25zdCBhcHBlbmRfc3R5bGVzX3RvID0gZ2V0X3Jvb3RfZm9yX3N0eWxlKHRhcmdldCk7XG4gICAgaWYgKCFhcHBlbmRfc3R5bGVzX3RvLmdldEVsZW1lbnRCeUlkKHN0eWxlX3NoZWV0X2lkKSkge1xuICAgICAgICBjb25zdCBzdHlsZSA9IGVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgIHN0eWxlLmlkID0gc3R5bGVfc2hlZXRfaWQ7XG4gICAgICAgIHN0eWxlLnRleHRDb250ZW50ID0gc3R5bGVzO1xuICAgICAgICBhcHBlbmRfc3R5bGVzaGVldChhcHBlbmRfc3R5bGVzX3RvLCBzdHlsZSk7XG4gICAgfVxufVxuZnVuY3Rpb24gZ2V0X3Jvb3RfZm9yX3N0eWxlKG5vZGUpIHtcbiAgICBpZiAoIW5vZGUpXG4gICAgICAgIHJldHVybiBkb2N1bWVudDtcbiAgICBjb25zdCByb290ID0gbm9kZS5nZXRSb290Tm9kZSA/IG5vZGUuZ2V0Um9vdE5vZGUoKSA6IG5vZGUub3duZXJEb2N1bWVudDtcbiAgICBpZiAocm9vdCAmJiByb290Lmhvc3QpIHtcbiAgICAgICAgcmV0dXJuIHJvb3Q7XG4gICAgfVxuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQ7XG59XG5mdW5jdGlvbiBhcHBlbmRfZW1wdHlfc3R5bGVzaGVldChub2RlKSB7XG4gICAgY29uc3Qgc3R5bGVfZWxlbWVudCA9IGVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgYXBwZW5kX3N0eWxlc2hlZXQoZ2V0X3Jvb3RfZm9yX3N0eWxlKG5vZGUpLCBzdHlsZV9lbGVtZW50KTtcbiAgICByZXR1cm4gc3R5bGVfZWxlbWVudC5zaGVldDtcbn1cbmZ1bmN0aW9uIGFwcGVuZF9zdHlsZXNoZWV0KG5vZGUsIHN0eWxlKSB7XG4gICAgYXBwZW5kKG5vZGUuaGVhZCB8fCBub2RlLCBzdHlsZSk7XG59XG5mdW5jdGlvbiBhcHBlbmRfaHlkcmF0aW9uKHRhcmdldCwgbm9kZSkge1xuICAgIGlmIChpc19oeWRyYXRpbmcpIHtcbiAgICAgICAgaW5pdF9oeWRyYXRlKHRhcmdldCk7XG4gICAgICAgIGlmICgodGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgPT09IHVuZGVmaW5lZCkgfHwgKCh0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZCAhPT0gbnVsbCkgJiYgKHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkLnBhcmVudEVsZW1lbnQgIT09IHRhcmdldCkpKSB7XG4gICAgICAgICAgICB0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZCA9IHRhcmdldC5maXJzdENoaWxkO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNraXAgbm9kZXMgb2YgdW5kZWZpbmVkIG9yZGVyaW5nXG4gICAgICAgIHdoaWxlICgodGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgIT09IG51bGwpICYmICh0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZC5jbGFpbV9vcmRlciA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgdGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgPSB0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZC5uZXh0U2libGluZztcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZSAhPT0gdGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQpIHtcbiAgICAgICAgICAgIC8vIFdlIG9ubHkgaW5zZXJ0IGlmIHRoZSBvcmRlcmluZyBvZiB0aGlzIG5vZGUgc2hvdWxkIGJlIG1vZGlmaWVkIG9yIHRoZSBwYXJlbnQgbm9kZSBpcyBub3QgdGFyZ2V0XG4gICAgICAgICAgICBpZiAobm9kZS5jbGFpbV9vcmRlciAhPT0gdW5kZWZpbmVkIHx8IG5vZGUucGFyZW50Tm9kZSAhPT0gdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0Lmluc2VydEJlZm9yZShub2RlLCB0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZCA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAobm9kZS5wYXJlbnROb2RlICE9PSB0YXJnZXQgfHwgbm9kZS5uZXh0U2libGluZyAhPT0gbnVsbCkge1xuICAgICAgICB0YXJnZXQuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgfVxufVxuZnVuY3Rpb24gaW5zZXJ0KHRhcmdldCwgbm9kZSwgYW5jaG9yKSB7XG4gICAgdGFyZ2V0Lmluc2VydEJlZm9yZShub2RlLCBhbmNob3IgfHwgbnVsbCk7XG59XG5mdW5jdGlvbiBpbnNlcnRfaHlkcmF0aW9uKHRhcmdldCwgbm9kZSwgYW5jaG9yKSB7XG4gICAgaWYgKGlzX2h5ZHJhdGluZyAmJiAhYW5jaG9yKSB7XG4gICAgICAgIGFwcGVuZF9oeWRyYXRpb24odGFyZ2V0LCBub2RlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAobm9kZS5wYXJlbnROb2RlICE9PSB0YXJnZXQgfHwgbm9kZS5uZXh0U2libGluZyAhPSBhbmNob3IpIHtcbiAgICAgICAgdGFyZ2V0Lmluc2VydEJlZm9yZShub2RlLCBhbmNob3IgfHwgbnVsbCk7XG4gICAgfVxufVxuZnVuY3Rpb24gZGV0YWNoKG5vZGUpIHtcbiAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG59XG5mdW5jdGlvbiBkZXN0cm95X2VhY2goaXRlcmF0aW9ucywgZGV0YWNoaW5nKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVyYXRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGlmIChpdGVyYXRpb25zW2ldKVxuICAgICAgICAgICAgaXRlcmF0aW9uc1tpXS5kKGRldGFjaGluZyk7XG4gICAgfVxufVxuZnVuY3Rpb24gZWxlbWVudChuYW1lKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSk7XG59XG5mdW5jdGlvbiBlbGVtZW50X2lzKG5hbWUsIGlzKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSwgeyBpcyB9KTtcbn1cbmZ1bmN0aW9uIG9iamVjdF93aXRob3V0X3Byb3BlcnRpZXMob2JqLCBleGNsdWRlKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0ge307XG4gICAgZm9yIChjb25zdCBrIGluIG9iaikge1xuICAgICAgICBpZiAoaGFzX3Byb3Aob2JqLCBrKVxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgJiYgZXhjbHVkZS5pbmRleE9mKGspID09PSAtMSkge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGFyZ2V0W2tdID0gb2JqW2tdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG59XG5mdW5jdGlvbiBzdmdfZWxlbWVudChuYW1lKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCBuYW1lKTtcbn1cbmZ1bmN0aW9uIHRleHQoZGF0YSkge1xuICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShkYXRhKTtcbn1cbmZ1bmN0aW9uIHNwYWNlKCkge1xuICAgIHJldHVybiB0ZXh0KCcgJyk7XG59XG5mdW5jdGlvbiBlbXB0eSgpIHtcbiAgICByZXR1cm4gdGV4dCgnJyk7XG59XG5mdW5jdGlvbiBsaXN0ZW4obm9kZSwgZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpIHtcbiAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpO1xuICAgIHJldHVybiAoKSA9PiBub2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpO1xufVxuZnVuY3Rpb24gcHJldmVudF9kZWZhdWx0KGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBmbi5jYWxsKHRoaXMsIGV2ZW50KTtcbiAgICB9O1xufVxuZnVuY3Rpb24gc3RvcF9wcm9wYWdhdGlvbihmbikge1xuICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIGZuLmNhbGwodGhpcywgZXZlbnQpO1xuICAgIH07XG59XG5mdW5jdGlvbiBzZWxmKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmIChldmVudC50YXJnZXQgPT09IHRoaXMpXG4gICAgICAgICAgICBmbi5jYWxsKHRoaXMsIGV2ZW50KTtcbiAgICB9O1xufVxuZnVuY3Rpb24gdHJ1c3RlZChmbikge1xuICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAoZXZlbnQuaXNUcnVzdGVkKVxuICAgICAgICAgICAgZm4uY2FsbCh0aGlzLCBldmVudCk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGF0dHIobm9kZSwgYXR0cmlidXRlLCB2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKVxuICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgIGVsc2UgaWYgKG5vZGUuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSkgIT09IHZhbHVlKVxuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVlKTtcbn1cbmZ1bmN0aW9uIHNldF9hdHRyaWJ1dGVzKG5vZGUsIGF0dHJpYnV0ZXMpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgZGVzY3JpcHRvcnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhub2RlLl9fcHJvdG9fXyk7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gYXR0cmlidXRlcykge1xuICAgICAgICBpZiAoYXR0cmlidXRlc1trZXldID09IG51bGwpIHtcbiAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoa2V5ID09PSAnc3R5bGUnKSB7XG4gICAgICAgICAgICBub2RlLnN0eWxlLmNzc1RleHQgPSBhdHRyaWJ1dGVzW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoa2V5ID09PSAnX192YWx1ZScpIHtcbiAgICAgICAgICAgIG5vZGUudmFsdWUgPSBub2RlW2tleV0gPSBhdHRyaWJ1dGVzW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZGVzY3JpcHRvcnNba2V5XSAmJiBkZXNjcmlwdG9yc1trZXldLnNldCkge1xuICAgICAgICAgICAgbm9kZVtrZXldID0gYXR0cmlidXRlc1trZXldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYXR0cihub2RlLCBrZXksIGF0dHJpYnV0ZXNba2V5XSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBzZXRfc3ZnX2F0dHJpYnV0ZXMobm9kZSwgYXR0cmlidXRlcykge1xuICAgIGZvciAoY29uc3Qga2V5IGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgYXR0cihub2RlLCBrZXksIGF0dHJpYnV0ZXNba2V5XSk7XG4gICAgfVxufVxuZnVuY3Rpb24gc2V0X2N1c3RvbV9lbGVtZW50X2RhdGEobm9kZSwgcHJvcCwgdmFsdWUpIHtcbiAgICBpZiAocHJvcCBpbiBub2RlKSB7XG4gICAgICAgIG5vZGVbcHJvcF0gPSB0eXBlb2Ygbm9kZVtwcm9wXSA9PT0gJ2Jvb2xlYW4nICYmIHZhbHVlID09PSAnJyA/IHRydWUgOiB2YWx1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGF0dHIobm9kZSwgcHJvcCwgdmFsdWUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHhsaW5rX2F0dHIobm9kZSwgYXR0cmlidXRlLCB2YWx1ZSkge1xuICAgIG5vZGUuc2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnLCBhdHRyaWJ1dGUsIHZhbHVlKTtcbn1cbmZ1bmN0aW9uIGdldF9iaW5kaW5nX2dyb3VwX3ZhbHVlKGdyb3VwLCBfX3ZhbHVlLCBjaGVja2VkKSB7XG4gICAgY29uc3QgdmFsdWUgPSBuZXcgU2V0KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBncm91cC5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBpZiAoZ3JvdXBbaV0uY2hlY2tlZClcbiAgICAgICAgICAgIHZhbHVlLmFkZChncm91cFtpXS5fX3ZhbHVlKTtcbiAgICB9XG4gICAgaWYgKCFjaGVja2VkKSB7XG4gICAgICAgIHZhbHVlLmRlbGV0ZShfX3ZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIEFycmF5LmZyb20odmFsdWUpO1xufVxuZnVuY3Rpb24gdG9fbnVtYmVyKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAnJyA/IG51bGwgOiArdmFsdWU7XG59XG5mdW5jdGlvbiB0aW1lX3Jhbmdlc190b19hcnJheShyYW5nZXMpIHtcbiAgICBjb25zdCBhcnJheSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGFycmF5LnB1c2goeyBzdGFydDogcmFuZ2VzLnN0YXJ0KGkpLCBlbmQ6IHJhbmdlcy5lbmQoaSkgfSk7XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbn1cbmZ1bmN0aW9uIGNoaWxkcmVuKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50LmNoaWxkTm9kZXMpO1xufVxuZnVuY3Rpb24gaW5pdF9jbGFpbV9pbmZvKG5vZGVzKSB7XG4gICAgaWYgKG5vZGVzLmNsYWltX2luZm8gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBub2Rlcy5jbGFpbV9pbmZvID0geyBsYXN0X2luZGV4OiAwLCB0b3RhbF9jbGFpbWVkOiAwIH07XG4gICAgfVxufVxuZnVuY3Rpb24gY2xhaW1fbm9kZShub2RlcywgcHJlZGljYXRlLCBwcm9jZXNzTm9kZSwgY3JlYXRlTm9kZSwgZG9udFVwZGF0ZUxhc3RJbmRleCA9IGZhbHNlKSB7XG4gICAgLy8gVHJ5IHRvIGZpbmQgbm9kZXMgaW4gYW4gb3JkZXIgc3VjaCB0aGF0IHdlIGxlbmd0aGVuIHRoZSBsb25nZXN0IGluY3JlYXNpbmcgc3Vic2VxdWVuY2VcbiAgICBpbml0X2NsYWltX2luZm8obm9kZXMpO1xuICAgIGNvbnN0IHJlc3VsdE5vZGUgPSAoKCkgPT4ge1xuICAgICAgICAvLyBXZSBmaXJzdCB0cnkgdG8gZmluZCBhbiBlbGVtZW50IGFmdGVyIHRoZSBwcmV2aW91cyBvbmVcbiAgICAgICAgZm9yIChsZXQgaSA9IG5vZGVzLmNsYWltX2luZm8ubGFzdF9pbmRleDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbm9kZXNbaV07XG4gICAgICAgICAgICBpZiAocHJlZGljYXRlKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSBwcm9jZXNzTm9kZShub2RlKTtcbiAgICAgICAgICAgICAgICBpZiAocmVwbGFjZW1lbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBub2Rlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBub2Rlc1tpXSA9IHJlcGxhY2VtZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWRvbnRVcGRhdGVMYXN0SW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXMuY2xhaW1faW5mby5sYXN0X2luZGV4ID0gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSB0cnkgdG8gZmluZCBvbmUgYmVmb3JlXG4gICAgICAgIC8vIFdlIGl0ZXJhdGUgaW4gcmV2ZXJzZSBzbyB0aGF0IHdlIGRvbid0IGdvIHRvbyBmYXIgYmFja1xuICAgICAgICBmb3IgKGxldCBpID0gbm9kZXMuY2xhaW1faW5mby5sYXN0X2luZGV4IC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgICAgIGlmIChwcmVkaWNhdGUobm9kZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXBsYWNlbWVudCA9IHByb2Nlc3NOb2RlKG5vZGUpO1xuICAgICAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzW2ldID0gcmVwbGFjZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghZG9udFVwZGF0ZUxhc3RJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBub2Rlcy5jbGFpbV9pbmZvLmxhc3RfaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXBsYWNlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIHdlIHNwbGljZWQgYmVmb3JlIHRoZSBsYXN0X2luZGV4LCB3ZSBkZWNyZWFzZSBpdFxuICAgICAgICAgICAgICAgICAgICBub2Rlcy5jbGFpbV9pbmZvLmxhc3RfaW5kZXgtLTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgd2UgY2FuJ3QgZmluZCBhbnkgbWF0Y2hpbmcgbm9kZSwgd2UgY3JlYXRlIGEgbmV3IG9uZVxuICAgICAgICByZXR1cm4gY3JlYXRlTm9kZSgpO1xuICAgIH0pKCk7XG4gICAgcmVzdWx0Tm9kZS5jbGFpbV9vcmRlciA9IG5vZGVzLmNsYWltX2luZm8udG90YWxfY2xhaW1lZDtcbiAgICBub2Rlcy5jbGFpbV9pbmZvLnRvdGFsX2NsYWltZWQgKz0gMTtcbiAgICByZXR1cm4gcmVzdWx0Tm9kZTtcbn1cbmZ1bmN0aW9uIGNsYWltX2VsZW1lbnRfYmFzZShub2RlcywgbmFtZSwgYXR0cmlidXRlcywgY3JlYXRlX2VsZW1lbnQpIHtcbiAgICByZXR1cm4gY2xhaW1fbm9kZShub2RlcywgKG5vZGUpID0+IG5vZGUubm9kZU5hbWUgPT09IG5hbWUsIChub2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlbW92ZSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG5vZGUuYXR0cmlidXRlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlID0gbm9kZS5hdHRyaWJ1dGVzW2pdO1xuICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGVzW2F0dHJpYnV0ZS5uYW1lXSkge1xuICAgICAgICAgICAgICAgIHJlbW92ZS5wdXNoKGF0dHJpYnV0ZS5uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZW1vdmUuZm9yRWFjaCh2ID0+IG5vZGUucmVtb3ZlQXR0cmlidXRlKHYpKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9LCAoKSA9PiBjcmVhdGVfZWxlbWVudChuYW1lKSk7XG59XG5mdW5jdGlvbiBjbGFpbV9lbGVtZW50KG5vZGVzLCBuYW1lLCBhdHRyaWJ1dGVzKSB7XG4gICAgcmV0dXJuIGNsYWltX2VsZW1lbnRfYmFzZShub2RlcywgbmFtZSwgYXR0cmlidXRlcywgZWxlbWVudCk7XG59XG5mdW5jdGlvbiBjbGFpbV9zdmdfZWxlbWVudChub2RlcywgbmFtZSwgYXR0cmlidXRlcykge1xuICAgIHJldHVybiBjbGFpbV9lbGVtZW50X2Jhc2Uobm9kZXMsIG5hbWUsIGF0dHJpYnV0ZXMsIHN2Z19lbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGNsYWltX3RleHQobm9kZXMsIGRhdGEpIHtcbiAgICByZXR1cm4gY2xhaW1fbm9kZShub2RlcywgKG5vZGUpID0+IG5vZGUubm9kZVR5cGUgPT09IDMsIChub2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGFTdHIgPSAnJyArIGRhdGE7XG4gICAgICAgIGlmIChub2RlLmRhdGEuc3RhcnRzV2l0aChkYXRhU3RyKSkge1xuICAgICAgICAgICAgaWYgKG5vZGUuZGF0YS5sZW5ndGggIT09IGRhdGFTdHIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUuc3BsaXRUZXh0KGRhdGFTdHIubGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5vZGUuZGF0YSA9IGRhdGFTdHI7XG4gICAgICAgIH1cbiAgICB9LCAoKSA9PiB0ZXh0KGRhdGEpLCB0cnVlIC8vIFRleHQgbm9kZXMgc2hvdWxkIG5vdCB1cGRhdGUgbGFzdCBpbmRleCBzaW5jZSBpdCBpcyBsaWtlbHkgbm90IHdvcnRoIGl0IHRvIGVsaW1pbmF0ZSBhbiBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlIG9mIGFjdHVhbCBlbGVtZW50c1xuICAgICk7XG59XG5mdW5jdGlvbiBjbGFpbV9zcGFjZShub2Rlcykge1xuICAgIHJldHVybiBjbGFpbV90ZXh0KG5vZGVzLCAnICcpO1xufVxuZnVuY3Rpb24gZmluZF9jb21tZW50KG5vZGVzLCB0ZXh0LCBzdGFydCkge1xuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IG5vZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDggLyogY29tbWVudCBub2RlICovICYmIG5vZGUudGV4dENvbnRlbnQudHJpbSgpID09PSB0ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbm9kZXMubGVuZ3RoO1xufVxuZnVuY3Rpb24gY2xhaW1faHRtbF90YWcobm9kZXMsIGlzX3N2Zykge1xuICAgIC8vIGZpbmQgaHRtbCBvcGVuaW5nIHRhZ1xuICAgIGNvbnN0IHN0YXJ0X2luZGV4ID0gZmluZF9jb21tZW50KG5vZGVzLCAnSFRNTF9UQUdfU1RBUlQnLCAwKTtcbiAgICBjb25zdCBlbmRfaW5kZXggPSBmaW5kX2NvbW1lbnQobm9kZXMsICdIVE1MX1RBR19FTkQnLCBzdGFydF9pbmRleCk7XG4gICAgaWYgKHN0YXJ0X2luZGV4ID09PSBlbmRfaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBIdG1sVGFnSHlkcmF0aW9uKHVuZGVmaW5lZCwgaXNfc3ZnKTtcbiAgICB9XG4gICAgaW5pdF9jbGFpbV9pbmZvKG5vZGVzKTtcbiAgICBjb25zdCBodG1sX3RhZ19ub2RlcyA9IG5vZGVzLnNwbGljZShzdGFydF9pbmRleCwgZW5kX2luZGV4IC0gc3RhcnRfaW5kZXggKyAxKTtcbiAgICBkZXRhY2goaHRtbF90YWdfbm9kZXNbMF0pO1xuICAgIGRldGFjaChodG1sX3RhZ19ub2Rlc1todG1sX3RhZ19ub2Rlcy5sZW5ndGggLSAxXSk7XG4gICAgY29uc3QgY2xhaW1lZF9ub2RlcyA9IGh0bWxfdGFnX25vZGVzLnNsaWNlKDEsIGh0bWxfdGFnX25vZGVzLmxlbmd0aCAtIDEpO1xuICAgIGZvciAoY29uc3QgbiBvZiBjbGFpbWVkX25vZGVzKSB7XG4gICAgICAgIG4uY2xhaW1fb3JkZXIgPSBub2Rlcy5jbGFpbV9pbmZvLnRvdGFsX2NsYWltZWQ7XG4gICAgICAgIG5vZGVzLmNsYWltX2luZm8udG90YWxfY2xhaW1lZCArPSAxO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEh0bWxUYWdIeWRyYXRpb24oY2xhaW1lZF9ub2RlcywgaXNfc3ZnKTtcbn1cbmZ1bmN0aW9uIHNldF9kYXRhKHRleHQsIGRhdGEpIHtcbiAgICBkYXRhID0gJycgKyBkYXRhO1xuICAgIGlmICh0ZXh0Lndob2xlVGV4dCAhPT0gZGF0YSlcbiAgICAgICAgdGV4dC5kYXRhID0gZGF0YTtcbn1cbmZ1bmN0aW9uIHNldF9pbnB1dF92YWx1ZShpbnB1dCwgdmFsdWUpIHtcbiAgICBpbnB1dC52YWx1ZSA9IHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xufVxuZnVuY3Rpb24gc2V0X2lucHV0X3R5cGUoaW5wdXQsIHR5cGUpIHtcbiAgICB0cnkge1xuICAgICAgICBpbnB1dC50eXBlID0gdHlwZTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbn1cbmZ1bmN0aW9uIHNldF9zdHlsZShub2RlLCBrZXksIHZhbHVlLCBpbXBvcnRhbnQpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgbm9kZS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShrZXkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbm9kZS5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIHZhbHVlLCBpbXBvcnRhbnQgPyAnaW1wb3J0YW50JyA6ICcnKTtcbiAgICB9XG59XG5mdW5jdGlvbiBzZWxlY3Rfb3B0aW9uKHNlbGVjdCwgdmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdC5vcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHNlbGVjdC5vcHRpb25zW2ldO1xuICAgICAgICBpZiAob3B0aW9uLl9fdmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNlbGVjdC5zZWxlY3RlZEluZGV4ID0gLTE7IC8vIG5vIG9wdGlvbiBzaG91bGQgYmUgc2VsZWN0ZWRcbn1cbmZ1bmN0aW9uIHNlbGVjdF9vcHRpb25zKHNlbGVjdCwgdmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdC5vcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHNlbGVjdC5vcHRpb25zW2ldO1xuICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSB+dmFsdWUuaW5kZXhPZihvcHRpb24uX192YWx1ZSk7XG4gICAgfVxufVxuZnVuY3Rpb24gc2VsZWN0X3ZhbHVlKHNlbGVjdCkge1xuICAgIGNvbnN0IHNlbGVjdGVkX29wdGlvbiA9IHNlbGVjdC5xdWVyeVNlbGVjdG9yKCc6Y2hlY2tlZCcpIHx8IHNlbGVjdC5vcHRpb25zWzBdO1xuICAgIHJldHVybiBzZWxlY3RlZF9vcHRpb24gJiYgc2VsZWN0ZWRfb3B0aW9uLl9fdmFsdWU7XG59XG5mdW5jdGlvbiBzZWxlY3RfbXVsdGlwbGVfdmFsdWUoc2VsZWN0KSB7XG4gICAgcmV0dXJuIFtdLm1hcC5jYWxsKHNlbGVjdC5xdWVyeVNlbGVjdG9yQWxsKCc6Y2hlY2tlZCcpLCBvcHRpb24gPT4gb3B0aW9uLl9fdmFsdWUpO1xufVxuLy8gdW5mb3J0dW5hdGVseSB0aGlzIGNhbid0IGJlIGEgY29uc3RhbnQgYXMgdGhhdCB3b3VsZG4ndCBiZSB0cmVlLXNoYWtlYWJsZVxuLy8gc28gd2UgY2FjaGUgdGhlIHJlc3VsdCBpbnN0ZWFkXG5sZXQgY3Jvc3NvcmlnaW47XG5mdW5jdGlvbiBpc19jcm9zc29yaWdpbigpIHtcbiAgICBpZiAoY3Jvc3NvcmlnaW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjcm9zc29yaWdpbiA9IGZhbHNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5wYXJlbnQpIHtcbiAgICAgICAgICAgICAgICB2b2lkIHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjcm9zc29yaWdpbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNyb3Nzb3JpZ2luO1xufVxuZnVuY3Rpb24gYWRkX3Jlc2l6ZV9saXN0ZW5lcihub2RlLCBmbikge1xuICAgIGNvbnN0IGNvbXB1dGVkX3N0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTtcbiAgICBpZiAoY29tcHV0ZWRfc3R5bGUucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgICAgIG5vZGUuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgIH1cbiAgICBjb25zdCBpZnJhbWUgPSBlbGVtZW50KCdpZnJhbWUnKTtcbiAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5OiBibG9jazsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7ICcgK1xuICAgICAgICAnb3ZlcmZsb3c6IGhpZGRlbjsgYm9yZGVyOiAwOyBvcGFjaXR5OiAwOyBwb2ludGVyLWV2ZW50czogbm9uZTsgei1pbmRleDogLTE7Jyk7XG4gICAgaWZyYW1lLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgIGlmcmFtZS50YWJJbmRleCA9IC0xO1xuICAgIGNvbnN0IGNyb3Nzb3JpZ2luID0gaXNfY3Jvc3NvcmlnaW4oKTtcbiAgICBsZXQgdW5zdWJzY3JpYmU7XG4gICAgaWYgKGNyb3Nzb3JpZ2luKSB7XG4gICAgICAgIGlmcmFtZS5zcmMgPSBcImRhdGE6dGV4dC9odG1sLDxzY3JpcHQ+b25yZXNpemU9ZnVuY3Rpb24oKXtwYXJlbnQucG9zdE1lc3NhZ2UoMCwnKicpfTwvc2NyaXB0PlwiO1xuICAgICAgICB1bnN1YnNjcmliZSA9IGxpc3Rlbih3aW5kb3csICdtZXNzYWdlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuc291cmNlID09PSBpZnJhbWUuY29udGVudFdpbmRvdylcbiAgICAgICAgICAgICAgICBmbigpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGlmcmFtZS5zcmMgPSAnYWJvdXQ6YmxhbmsnO1xuICAgICAgICBpZnJhbWUub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgdW5zdWJzY3JpYmUgPSBsaXN0ZW4oaWZyYW1lLmNvbnRlbnRXaW5kb3csICdyZXNpemUnLCBmbik7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGFwcGVuZChub2RlLCBpZnJhbWUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChjcm9zc29yaWdpbikge1xuICAgICAgICAgICAgdW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh1bnN1YnNjcmliZSAmJiBpZnJhbWUuY29udGVudFdpbmRvdykge1xuICAgICAgICAgICAgdW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBkZXRhY2goaWZyYW1lKTtcbiAgICB9O1xufVxuZnVuY3Rpb24gdG9nZ2xlX2NsYXNzKGVsZW1lbnQsIG5hbWUsIHRvZ2dsZSkge1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0W3RvZ2dsZSA/ICdhZGQnIDogJ3JlbW92ZSddKG5hbWUpO1xufVxuZnVuY3Rpb24gY3VzdG9tX2V2ZW50KHR5cGUsIGRldGFpbCwgeyBidWJibGVzID0gZmFsc2UsIGNhbmNlbGFibGUgPSBmYWxzZSB9ID0ge30pIHtcbiAgICBjb25zdCBlID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0N1c3RvbUV2ZW50Jyk7XG4gICAgZS5pbml0Q3VzdG9tRXZlbnQodHlwZSwgYnViYmxlcywgY2FuY2VsYWJsZSwgZGV0YWlsKTtcbiAgICByZXR1cm4gZTtcbn1cbmZ1bmN0aW9uIHF1ZXJ5X3NlbGVjdG9yX2FsbChzZWxlY3RvciwgcGFyZW50ID0gZG9jdW1lbnQuYm9keSkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHBhcmVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7XG59XG5jbGFzcyBIdG1sVGFnIHtcbiAgICBjb25zdHJ1Y3Rvcihpc19zdmcgPSBmYWxzZSkge1xuICAgICAgICB0aGlzLmlzX3N2ZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzX3N2ZyA9IGlzX3N2ZztcbiAgICAgICAgdGhpcy5lID0gdGhpcy5uID0gbnVsbDtcbiAgICB9XG4gICAgYyhodG1sKSB7XG4gICAgICAgIHRoaXMuaChodG1sKTtcbiAgICB9XG4gICAgbShodG1sLCB0YXJnZXQsIGFuY2hvciA9IG51bGwpIHtcbiAgICAgICAgaWYgKCF0aGlzLmUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzX3N2ZylcbiAgICAgICAgICAgICAgICB0aGlzLmUgPSBzdmdfZWxlbWVudCh0YXJnZXQubm9kZU5hbWUpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRoaXMuZSA9IGVsZW1lbnQodGFyZ2V0Lm5vZGVOYW1lKTtcbiAgICAgICAgICAgIHRoaXMudCA9IHRhcmdldDtcbiAgICAgICAgICAgIHRoaXMuYyhodG1sKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmkoYW5jaG9yKTtcbiAgICB9XG4gICAgaChodG1sKSB7XG4gICAgICAgIHRoaXMuZS5pbm5lckhUTUwgPSBodG1sO1xuICAgICAgICB0aGlzLm4gPSBBcnJheS5mcm9tKHRoaXMuZS5jaGlsZE5vZGVzKTtcbiAgICB9XG4gICAgaShhbmNob3IpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm4ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGluc2VydCh0aGlzLnQsIHRoaXMubltpXSwgYW5jaG9yKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwKGh0bWwpIHtcbiAgICAgICAgdGhpcy5kKCk7XG4gICAgICAgIHRoaXMuaChodG1sKTtcbiAgICAgICAgdGhpcy5pKHRoaXMuYSk7XG4gICAgfVxuICAgIGQoKSB7XG4gICAgICAgIHRoaXMubi5mb3JFYWNoKGRldGFjaCk7XG4gICAgfVxufVxuY2xhc3MgSHRtbFRhZ0h5ZHJhdGlvbiBleHRlbmRzIEh0bWxUYWcge1xuICAgIGNvbnN0cnVjdG9yKGNsYWltZWRfbm9kZXMsIGlzX3N2ZyA9IGZhbHNlKSB7XG4gICAgICAgIHN1cGVyKGlzX3N2Zyk7XG4gICAgICAgIHRoaXMuZSA9IHRoaXMubiA9IG51bGw7XG4gICAgICAgIHRoaXMubCA9IGNsYWltZWRfbm9kZXM7XG4gICAgfVxuICAgIGMoaHRtbCkge1xuICAgICAgICBpZiAodGhpcy5sKSB7XG4gICAgICAgICAgICB0aGlzLm4gPSB0aGlzLmw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5jKGh0bWwpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGkoYW5jaG9yKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5uLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBpbnNlcnRfaHlkcmF0aW9uKHRoaXMudCwgdGhpcy5uW2ldLCBhbmNob3IpO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gYXR0cmlidXRlX3RvX29iamVjdChhdHRyaWJ1dGVzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlcykge1xuICAgICAgICByZXN1bHRbYXR0cmlidXRlLm5hbWVdID0gYXR0cmlidXRlLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0X2N1c3RvbV9lbGVtZW50c19zbG90cyhlbGVtZW50KSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgZWxlbWVudC5jaGlsZE5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgcmVzdWx0W25vZGUuc2xvdCB8fCAnZGVmYXVsdCddID0gdHJ1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyB3ZSBuZWVkIHRvIHN0b3JlIHRoZSBpbmZvcm1hdGlvbiBmb3IgbXVsdGlwbGUgZG9jdW1lbnRzIGJlY2F1c2UgYSBTdmVsdGUgYXBwbGljYXRpb24gY291bGQgYWxzbyBjb250YWluIGlmcmFtZXNcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zdmVsdGVqcy9zdmVsdGUvaXNzdWVzLzM2MjRcbmNvbnN0IG1hbmFnZWRfc3R5bGVzID0gbmV3IE1hcCgpO1xubGV0IGFjdGl2ZSA9IDA7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vZGFya3NreWFwcC9zdHJpbmctaGFzaC9ibG9iL21hc3Rlci9pbmRleC5qc1xuZnVuY3Rpb24gaGFzaChzdHIpIHtcbiAgICBsZXQgaGFzaCA9IDUzODE7XG4gICAgbGV0IGkgPSBzdHIubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pXG4gICAgICAgIGhhc2ggPSAoKGhhc2ggPDwgNSkgLSBoYXNoKSBeIHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgIHJldHVybiBoYXNoID4+PiAwO1xufVxuZnVuY3Rpb24gY3JlYXRlX3N0eWxlX2luZm9ybWF0aW9uKGRvYywgbm9kZSkge1xuICAgIGNvbnN0IGluZm8gPSB7IHN0eWxlc2hlZXQ6IGFwcGVuZF9lbXB0eV9zdHlsZXNoZWV0KG5vZGUpLCBydWxlczoge30gfTtcbiAgICBtYW5hZ2VkX3N0eWxlcy5zZXQoZG9jLCBpbmZvKTtcbiAgICByZXR1cm4gaW5mbztcbn1cbmZ1bmN0aW9uIGNyZWF0ZV9ydWxlKG5vZGUsIGEsIGIsIGR1cmF0aW9uLCBkZWxheSwgZWFzZSwgZm4sIHVpZCA9IDApIHtcbiAgICBjb25zdCBzdGVwID0gMTYuNjY2IC8gZHVyYXRpb247XG4gICAgbGV0IGtleWZyYW1lcyA9ICd7XFxuJztcbiAgICBmb3IgKGxldCBwID0gMDsgcCA8PSAxOyBwICs9IHN0ZXApIHtcbiAgICAgICAgY29uc3QgdCA9IGEgKyAoYiAtIGEpICogZWFzZShwKTtcbiAgICAgICAga2V5ZnJhbWVzICs9IHAgKiAxMDAgKyBgJXske2ZuKHQsIDEgLSB0KX19XFxuYDtcbiAgICB9XG4gICAgY29uc3QgcnVsZSA9IGtleWZyYW1lcyArIGAxMDAlIHske2ZuKGIsIDEgLSBiKX19XFxufWA7XG4gICAgY29uc3QgbmFtZSA9IGBfX3N2ZWx0ZV8ke2hhc2gocnVsZSl9XyR7dWlkfWA7XG4gICAgY29uc3QgZG9jID0gZ2V0X3Jvb3RfZm9yX3N0eWxlKG5vZGUpO1xuICAgIGNvbnN0IHsgc3R5bGVzaGVldCwgcnVsZXMgfSA9IG1hbmFnZWRfc3R5bGVzLmdldChkb2MpIHx8IGNyZWF0ZV9zdHlsZV9pbmZvcm1hdGlvbihkb2MsIG5vZGUpO1xuICAgIGlmICghcnVsZXNbbmFtZV0pIHtcbiAgICAgICAgcnVsZXNbbmFtZV0gPSB0cnVlO1xuICAgICAgICBzdHlsZXNoZWV0Lmluc2VydFJ1bGUoYEBrZXlmcmFtZXMgJHtuYW1lfSAke3J1bGV9YCwgc3R5bGVzaGVldC5jc3NSdWxlcy5sZW5ndGgpO1xuICAgIH1cbiAgICBjb25zdCBhbmltYXRpb24gPSBub2RlLnN0eWxlLmFuaW1hdGlvbiB8fCAnJztcbiAgICBub2RlLnN0eWxlLmFuaW1hdGlvbiA9IGAke2FuaW1hdGlvbiA/IGAke2FuaW1hdGlvbn0sIGAgOiAnJ30ke25hbWV9ICR7ZHVyYXRpb259bXMgbGluZWFyICR7ZGVsYXl9bXMgMSBib3RoYDtcbiAgICBhY3RpdmUgKz0gMTtcbiAgICByZXR1cm4gbmFtZTtcbn1cbmZ1bmN0aW9uIGRlbGV0ZV9ydWxlKG5vZGUsIG5hbWUpIHtcbiAgICBjb25zdCBwcmV2aW91cyA9IChub2RlLnN0eWxlLmFuaW1hdGlvbiB8fCAnJykuc3BsaXQoJywgJyk7XG4gICAgY29uc3QgbmV4dCA9IHByZXZpb3VzLmZpbHRlcihuYW1lXG4gICAgICAgID8gYW5pbSA9PiBhbmltLmluZGV4T2YobmFtZSkgPCAwIC8vIHJlbW92ZSBzcGVjaWZpYyBhbmltYXRpb25cbiAgICAgICAgOiBhbmltID0+IGFuaW0uaW5kZXhPZignX19zdmVsdGUnKSA9PT0gLTEgLy8gcmVtb3ZlIGFsbCBTdmVsdGUgYW5pbWF0aW9uc1xuICAgICk7XG4gICAgY29uc3QgZGVsZXRlZCA9IHByZXZpb3VzLmxlbmd0aCAtIG5leHQubGVuZ3RoO1xuICAgIGlmIChkZWxldGVkKSB7XG4gICAgICAgIG5vZGUuc3R5bGUuYW5pbWF0aW9uID0gbmV4dC5qb2luKCcsICcpO1xuICAgICAgICBhY3RpdmUgLT0gZGVsZXRlZDtcbiAgICAgICAgaWYgKCFhY3RpdmUpXG4gICAgICAgICAgICBjbGVhcl9ydWxlcygpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNsZWFyX3J1bGVzKCkge1xuICAgIHJhZigoKSA9PiB7XG4gICAgICAgIGlmIChhY3RpdmUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIG1hbmFnZWRfc3R5bGVzLmZvckVhY2goaW5mbyA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHN0eWxlc2hlZXQgfSA9IGluZm87XG4gICAgICAgICAgICBsZXQgaSA9IHN0eWxlc2hlZXQuY3NzUnVsZXMubGVuZ3RoO1xuICAgICAgICAgICAgd2hpbGUgKGktLSlcbiAgICAgICAgICAgICAgICBzdHlsZXNoZWV0LmRlbGV0ZVJ1bGUoaSk7XG4gICAgICAgICAgICBpbmZvLnJ1bGVzID0ge307XG4gICAgICAgIH0pO1xuICAgICAgICBtYW5hZ2VkX3N0eWxlcy5jbGVhcigpO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVfYW5pbWF0aW9uKG5vZGUsIGZyb20sIGZuLCBwYXJhbXMpIHtcbiAgICBpZiAoIWZyb20pXG4gICAgICAgIHJldHVybiBub29wO1xuICAgIGNvbnN0IHRvID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBpZiAoZnJvbS5sZWZ0ID09PSB0by5sZWZ0ICYmIGZyb20ucmlnaHQgPT09IHRvLnJpZ2h0ICYmIGZyb20udG9wID09PSB0by50b3AgJiYgZnJvbS5ib3R0b20gPT09IHRvLmJvdHRvbSlcbiAgICAgICAgcmV0dXJuIG5vb3A7XG4gICAgY29uc3QgeyBkZWxheSA9IDAsIGR1cmF0aW9uID0gMzAwLCBlYXNpbmcgPSBpZGVudGl0eSwgXG4gICAgLy8gQHRzLWlnbm9yZSB0b2RvOiBzaG91bGQgdGhpcyBiZSBzZXBhcmF0ZWQgZnJvbSBkZXN0cnVjdHVyaW5nPyBPciBzdGFydC9lbmQgYWRkZWQgdG8gcHVibGljIGFwaSBhbmQgZG9jdW1lbnRhdGlvbj9cbiAgICBzdGFydDogc3RhcnRfdGltZSA9IG5vdygpICsgZGVsYXksIFxuICAgIC8vIEB0cy1pZ25vcmUgdG9kbzpcbiAgICBlbmQgPSBzdGFydF90aW1lICsgZHVyYXRpb24sIHRpY2sgPSBub29wLCBjc3MgfSA9IGZuKG5vZGUsIHsgZnJvbSwgdG8gfSwgcGFyYW1zKTtcbiAgICBsZXQgcnVubmluZyA9IHRydWU7XG4gICAgbGV0IHN0YXJ0ZWQgPSBmYWxzZTtcbiAgICBsZXQgbmFtZTtcbiAgICBmdW5jdGlvbiBzdGFydCgpIHtcbiAgICAgICAgaWYgKGNzcykge1xuICAgICAgICAgICAgbmFtZSA9IGNyZWF0ZV9ydWxlKG5vZGUsIDAsIDEsIGR1cmF0aW9uLCBkZWxheSwgZWFzaW5nLCBjc3MpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZGVsYXkpIHtcbiAgICAgICAgICAgIHN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgICAgIGlmIChjc3MpXG4gICAgICAgICAgICBkZWxldGVfcnVsZShub2RlLCBuYW1lKTtcbiAgICAgICAgcnVubmluZyA9IGZhbHNlO1xuICAgIH1cbiAgICBsb29wKG5vdyA9PiB7XG4gICAgICAgIGlmICghc3RhcnRlZCAmJiBub3cgPj0gc3RhcnRfdGltZSkge1xuICAgICAgICAgICAgc3RhcnRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0ZWQgJiYgbm93ID49IGVuZCkge1xuICAgICAgICAgICAgdGljaygxLCAwKTtcbiAgICAgICAgICAgIHN0b3AoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJ1bm5pbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnRlZCkge1xuICAgICAgICAgICAgY29uc3QgcCA9IG5vdyAtIHN0YXJ0X3RpbWU7XG4gICAgICAgICAgICBjb25zdCB0ID0gMCArIDEgKiBlYXNpbmcocCAvIGR1cmF0aW9uKTtcbiAgICAgICAgICAgIHRpY2sodCwgMSAtIHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICAgIHN0YXJ0KCk7XG4gICAgdGljaygwLCAxKTtcbiAgICByZXR1cm4gc3RvcDtcbn1cbmZ1bmN0aW9uIGZpeF9wb3NpdGlvbihub2RlKSB7XG4gICAgY29uc3Qgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKG5vZGUpO1xuICAgIGlmIChzdHlsZS5wb3NpdGlvbiAhPT0gJ2Fic29sdXRlJyAmJiBzdHlsZS5wb3NpdGlvbiAhPT0gJ2ZpeGVkJykge1xuICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHN0eWxlO1xuICAgICAgICBjb25zdCBhID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgbm9kZS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIG5vZGUuc3R5bGUud2lkdGggPSB3aWR0aDtcbiAgICAgICAgbm9kZS5zdHlsZS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgIGFkZF90cmFuc2Zvcm0obm9kZSwgYSk7XG4gICAgfVxufVxuZnVuY3Rpb24gYWRkX3RyYW5zZm9ybShub2RlLCBhKSB7XG4gICAgY29uc3QgYiA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgaWYgKGEubGVmdCAhPT0gYi5sZWZ0IHx8IGEudG9wICE9PSBiLnRvcCkge1xuICAgICAgICBjb25zdCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IHN0eWxlLnRyYW5zZm9ybSA9PT0gJ25vbmUnID8gJycgOiBzdHlsZS50cmFuc2Zvcm07XG4gICAgICAgIG5vZGUuc3R5bGUudHJhbnNmb3JtID0gYCR7dHJhbnNmb3JtfSB0cmFuc2xhdGUoJHthLmxlZnQgLSBiLmxlZnR9cHgsICR7YS50b3AgLSBiLnRvcH1weClgO1xuICAgIH1cbn1cblxubGV0IGN1cnJlbnRfY29tcG9uZW50O1xuZnVuY3Rpb24gc2V0X2N1cnJlbnRfY29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgIGN1cnJlbnRfY29tcG9uZW50ID0gY29tcG9uZW50O1xufVxuZnVuY3Rpb24gZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkge1xuICAgIGlmICghY3VycmVudF9jb21wb25lbnQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRnVuY3Rpb24gY2FsbGVkIG91dHNpZGUgY29tcG9uZW50IGluaXRpYWxpemF0aW9uJyk7XG4gICAgcmV0dXJuIGN1cnJlbnRfY29tcG9uZW50O1xufVxuZnVuY3Rpb24gYmVmb3JlVXBkYXRlKGZuKSB7XG4gICAgZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQuYmVmb3JlX3VwZGF0ZS5wdXNoKGZuKTtcbn1cbmZ1bmN0aW9uIG9uTW91bnQoZm4pIHtcbiAgICBnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5vbl9tb3VudC5wdXNoKGZuKTtcbn1cbmZ1bmN0aW9uIGFmdGVyVXBkYXRlKGZuKSB7XG4gICAgZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQuYWZ0ZXJfdXBkYXRlLnB1c2goZm4pO1xufVxuZnVuY3Rpb24gb25EZXN0cm95KGZuKSB7XG4gICAgZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQub25fZGVzdHJveS5wdXNoKGZuKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUV2ZW50RGlzcGF0Y2hlcigpIHtcbiAgICBjb25zdCBjb21wb25lbnQgPSBnZXRfY3VycmVudF9jb21wb25lbnQoKTtcbiAgICByZXR1cm4gKHR5cGUsIGRldGFpbCwgeyBjYW5jZWxhYmxlID0gZmFsc2UgfSA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IGNhbGxiYWNrcyA9IGNvbXBvbmVudC4kJC5jYWxsYmFja3NbdHlwZV07XG4gICAgICAgIGlmIChjYWxsYmFja3MpIHtcbiAgICAgICAgICAgIC8vIFRPRE8gYXJlIHRoZXJlIHNpdHVhdGlvbnMgd2hlcmUgZXZlbnRzIGNvdWxkIGJlIGRpc3BhdGNoZWRcbiAgICAgICAgICAgIC8vIGluIGEgc2VydmVyIChub24tRE9NKSBlbnZpcm9ubWVudD9cbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gY3VzdG9tX2V2ZW50KHR5cGUsIGRldGFpbCwgeyBjYW5jZWxhYmxlIH0pO1xuICAgICAgICAgICAgY2FsbGJhY2tzLnNsaWNlKCkuZm9yRWFjaChmbiA9PiB7XG4gICAgICAgICAgICAgICAgZm4uY2FsbChjb21wb25lbnQsIGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuICFldmVudC5kZWZhdWx0UHJldmVudGVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG59XG5mdW5jdGlvbiBzZXRDb250ZXh0KGtleSwgY29udGV4dCkge1xuICAgIGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLmNvbnRleHQuc2V0KGtleSwgY29udGV4dCk7XG4gICAgcmV0dXJuIGNvbnRleHQ7XG59XG5mdW5jdGlvbiBnZXRDb250ZXh0KGtleSkge1xuICAgIHJldHVybiBnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5jb250ZXh0LmdldChrZXkpO1xufVxuZnVuY3Rpb24gZ2V0QWxsQ29udGV4dHMoKSB7XG4gICAgcmV0dXJuIGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLmNvbnRleHQ7XG59XG5mdW5jdGlvbiBoYXNDb250ZXh0KGtleSkge1xuICAgIHJldHVybiBnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5jb250ZXh0LmhhcyhrZXkpO1xufVxuLy8gVE9ETyBmaWd1cmUgb3V0IGlmIHdlIHN0aWxsIHdhbnQgdG8gc3VwcG9ydFxuLy8gc2hvcnRoYW5kIGV2ZW50cywgb3IgaWYgd2Ugd2FudCB0byBpbXBsZW1lbnRcbi8vIGEgcmVhbCBidWJibGluZyBtZWNoYW5pc21cbmZ1bmN0aW9uIGJ1YmJsZShjb21wb25lbnQsIGV2ZW50KSB7XG4gICAgY29uc3QgY2FsbGJhY2tzID0gY29tcG9uZW50LiQkLmNhbGxiYWNrc1tldmVudC50eXBlXTtcbiAgICBpZiAoY2FsbGJhY2tzKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY2FsbGJhY2tzLnNsaWNlKCkuZm9yRWFjaChmbiA9PiBmbi5jYWxsKHRoaXMsIGV2ZW50KSk7XG4gICAgfVxufVxuXG5jb25zdCBkaXJ0eV9jb21wb25lbnRzID0gW107XG5jb25zdCBpbnRyb3MgPSB7IGVuYWJsZWQ6IGZhbHNlIH07XG5jb25zdCBiaW5kaW5nX2NhbGxiYWNrcyA9IFtdO1xuY29uc3QgcmVuZGVyX2NhbGxiYWNrcyA9IFtdO1xuY29uc3QgZmx1c2hfY2FsbGJhY2tzID0gW107XG5jb25zdCByZXNvbHZlZF9wcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5sZXQgdXBkYXRlX3NjaGVkdWxlZCA9IGZhbHNlO1xuZnVuY3Rpb24gc2NoZWR1bGVfdXBkYXRlKCkge1xuICAgIGlmICghdXBkYXRlX3NjaGVkdWxlZCkge1xuICAgICAgICB1cGRhdGVfc2NoZWR1bGVkID0gdHJ1ZTtcbiAgICAgICAgcmVzb2x2ZWRfcHJvbWlzZS50aGVuKGZsdXNoKTtcbiAgICB9XG59XG5mdW5jdGlvbiB0aWNrKCkge1xuICAgIHNjaGVkdWxlX3VwZGF0ZSgpO1xuICAgIHJldHVybiByZXNvbHZlZF9wcm9taXNlO1xufVxuZnVuY3Rpb24gYWRkX3JlbmRlcl9jYWxsYmFjayhmbikge1xuICAgIHJlbmRlcl9jYWxsYmFja3MucHVzaChmbik7XG59XG5mdW5jdGlvbiBhZGRfZmx1c2hfY2FsbGJhY2soZm4pIHtcbiAgICBmbHVzaF9jYWxsYmFja3MucHVzaChmbik7XG59XG4vLyBmbHVzaCgpIGNhbGxzIGNhbGxiYWNrcyBpbiB0aGlzIG9yZGVyOlxuLy8gMS4gQWxsIGJlZm9yZVVwZGF0ZSBjYWxsYmFja3MsIGluIG9yZGVyOiBwYXJlbnRzIGJlZm9yZSBjaGlsZHJlblxuLy8gMi4gQWxsIGJpbmQ6dGhpcyBjYWxsYmFja3MsIGluIHJldmVyc2Ugb3JkZXI6IGNoaWxkcmVuIGJlZm9yZSBwYXJlbnRzLlxuLy8gMy4gQWxsIGFmdGVyVXBkYXRlIGNhbGxiYWNrcywgaW4gb3JkZXI6IHBhcmVudHMgYmVmb3JlIGNoaWxkcmVuLiBFWENFUFRcbi8vICAgIGZvciBhZnRlclVwZGF0ZXMgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbCBvbk1vdW50LCB3aGljaCBhcmUgY2FsbGVkIGluXG4vLyAgICByZXZlcnNlIG9yZGVyOiBjaGlsZHJlbiBiZWZvcmUgcGFyZW50cy5cbi8vIFNpbmNlIGNhbGxiYWNrcyBtaWdodCB1cGRhdGUgY29tcG9uZW50IHZhbHVlcywgd2hpY2ggY291bGQgdHJpZ2dlciBhbm90aGVyXG4vLyBjYWxsIHRvIGZsdXNoKCksIHRoZSBmb2xsb3dpbmcgc3RlcHMgZ3VhcmQgYWdhaW5zdCB0aGlzOlxuLy8gMS4gRHVyaW5nIGJlZm9yZVVwZGF0ZSwgYW55IHVwZGF0ZWQgY29tcG9uZW50cyB3aWxsIGJlIGFkZGVkIHRvIHRoZVxuLy8gICAgZGlydHlfY29tcG9uZW50cyBhcnJheSBhbmQgd2lsbCBjYXVzZSBhIHJlZW50cmFudCBjYWxsIHRvIGZsdXNoKCkuIEJlY2F1c2Vcbi8vICAgIHRoZSBmbHVzaCBpbmRleCBpcyBrZXB0IG91dHNpZGUgdGhlIGZ1bmN0aW9uLCB0aGUgcmVlbnRyYW50IGNhbGwgd2lsbCBwaWNrXG4vLyAgICB1cCB3aGVyZSB0aGUgZWFybGllciBjYWxsIGxlZnQgb2ZmIGFuZCBnbyB0aHJvdWdoIGFsbCBkaXJ0eSBjb21wb25lbnRzLiBUaGVcbi8vICAgIGN1cnJlbnRfY29tcG9uZW50IHZhbHVlIGlzIHNhdmVkIGFuZCByZXN0b3JlZCBzbyB0aGF0IHRoZSByZWVudHJhbnQgY2FsbCB3aWxsXG4vLyAgICBub3QgaW50ZXJmZXJlIHdpdGggdGhlIFwicGFyZW50XCIgZmx1c2goKSBjYWxsLlxuLy8gMi4gYmluZDp0aGlzIGNhbGxiYWNrcyBjYW5ub3QgdHJpZ2dlciBuZXcgZmx1c2goKSBjYWxscy5cbi8vIDMuIER1cmluZyBhZnRlclVwZGF0ZSwgYW55IHVwZGF0ZWQgY29tcG9uZW50cyB3aWxsIE5PVCBoYXZlIHRoZWlyIGFmdGVyVXBkYXRlXG4vLyAgICBjYWxsYmFjayBjYWxsZWQgYSBzZWNvbmQgdGltZTsgdGhlIHNlZW5fY2FsbGJhY2tzIHNldCwgb3V0c2lkZSB0aGUgZmx1c2goKVxuLy8gICAgZnVuY3Rpb24sIGd1YXJhbnRlZXMgdGhpcyBiZWhhdmlvci5cbmNvbnN0IHNlZW5fY2FsbGJhY2tzID0gbmV3IFNldCgpO1xubGV0IGZsdXNoaWR4ID0gMDsgLy8gRG8gKm5vdCogbW92ZSB0aGlzIGluc2lkZSB0aGUgZmx1c2goKSBmdW5jdGlvblxuZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgY29uc3Qgc2F2ZWRfY29tcG9uZW50ID0gY3VycmVudF9jb21wb25lbnQ7XG4gICAgZG8ge1xuICAgICAgICAvLyBmaXJzdCwgY2FsbCBiZWZvcmVVcGRhdGUgZnVuY3Rpb25zXG4gICAgICAgIC8vIGFuZCB1cGRhdGUgY29tcG9uZW50c1xuICAgICAgICB3aGlsZSAoZmx1c2hpZHggPCBkaXJ0eV9jb21wb25lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gZGlydHlfY29tcG9uZW50c1tmbHVzaGlkeF07XG4gICAgICAgICAgICBmbHVzaGlkeCsrO1xuICAgICAgICAgICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgICAgICAgICB1cGRhdGUoY29tcG9uZW50LiQkKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRfY3VycmVudF9jb21wb25lbnQobnVsbCk7XG4gICAgICAgIGRpcnR5X2NvbXBvbmVudHMubGVuZ3RoID0gMDtcbiAgICAgICAgZmx1c2hpZHggPSAwO1xuICAgICAgICB3aGlsZSAoYmluZGluZ19jYWxsYmFja3MubGVuZ3RoKVxuICAgICAgICAgICAgYmluZGluZ19jYWxsYmFja3MucG9wKCkoKTtcbiAgICAgICAgLy8gdGhlbiwgb25jZSBjb21wb25lbnRzIGFyZSB1cGRhdGVkLCBjYWxsXG4gICAgICAgIC8vIGFmdGVyVXBkYXRlIGZ1bmN0aW9ucy4gVGhpcyBtYXkgY2F1c2VcbiAgICAgICAgLy8gc3Vic2VxdWVudCB1cGRhdGVzLi4uXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVuZGVyX2NhbGxiYWNrcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgY29uc3QgY2FsbGJhY2sgPSByZW5kZXJfY2FsbGJhY2tzW2ldO1xuICAgICAgICAgICAgaWYgKCFzZWVuX2NhbGxiYWNrcy5oYXMoY2FsbGJhY2spKSB7XG4gICAgICAgICAgICAgICAgLy8gLi4uc28gZ3VhcmQgYWdhaW5zdCBpbmZpbml0ZSBsb29wc1xuICAgICAgICAgICAgICAgIHNlZW5fY2FsbGJhY2tzLmFkZChjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZW5kZXJfY2FsbGJhY2tzLmxlbmd0aCA9IDA7XG4gICAgfSB3aGlsZSAoZGlydHlfY29tcG9uZW50cy5sZW5ndGgpO1xuICAgIHdoaWxlIChmbHVzaF9jYWxsYmFja3MubGVuZ3RoKSB7XG4gICAgICAgIGZsdXNoX2NhbGxiYWNrcy5wb3AoKSgpO1xuICAgIH1cbiAgICB1cGRhdGVfc2NoZWR1bGVkID0gZmFsc2U7XG4gICAgc2Vlbl9jYWxsYmFja3MuY2xlYXIoKTtcbiAgICBzZXRfY3VycmVudF9jb21wb25lbnQoc2F2ZWRfY29tcG9uZW50KTtcbn1cbmZ1bmN0aW9uIHVwZGF0ZSgkJCkge1xuICAgIGlmICgkJC5mcmFnbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAkJC51cGRhdGUoKTtcbiAgICAgICAgcnVuX2FsbCgkJC5iZWZvcmVfdXBkYXRlKTtcbiAgICAgICAgY29uc3QgZGlydHkgPSAkJC5kaXJ0eTtcbiAgICAgICAgJCQuZGlydHkgPSBbLTFdO1xuICAgICAgICAkJC5mcmFnbWVudCAmJiAkJC5mcmFnbWVudC5wKCQkLmN0eCwgZGlydHkpO1xuICAgICAgICAkJC5hZnRlcl91cGRhdGUuZm9yRWFjaChhZGRfcmVuZGVyX2NhbGxiYWNrKTtcbiAgICB9XG59XG5cbmxldCBwcm9taXNlO1xuZnVuY3Rpb24gd2FpdCgpIHtcbiAgICBpZiAoIXByb21pc2UpIHtcbiAgICAgICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICBwcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcHJvbWlzZSA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cbmZ1bmN0aW9uIGRpc3BhdGNoKG5vZGUsIGRpcmVjdGlvbiwga2luZCkge1xuICAgIG5vZGUuZGlzcGF0Y2hFdmVudChjdXN0b21fZXZlbnQoYCR7ZGlyZWN0aW9uID8gJ2ludHJvJyA6ICdvdXRybyd9JHtraW5kfWApKTtcbn1cbmNvbnN0IG91dHJvaW5nID0gbmV3IFNldCgpO1xubGV0IG91dHJvcztcbmZ1bmN0aW9uIGdyb3VwX291dHJvcygpIHtcbiAgICBvdXRyb3MgPSB7XG4gICAgICAgIHI6IDAsXG4gICAgICAgIGM6IFtdLFxuICAgICAgICBwOiBvdXRyb3MgLy8gcGFyZW50IGdyb3VwXG4gICAgfTtcbn1cbmZ1bmN0aW9uIGNoZWNrX291dHJvcygpIHtcbiAgICBpZiAoIW91dHJvcy5yKSB7XG4gICAgICAgIHJ1bl9hbGwob3V0cm9zLmMpO1xuICAgIH1cbiAgICBvdXRyb3MgPSBvdXRyb3MucDtcbn1cbmZ1bmN0aW9uIHRyYW5zaXRpb25faW4oYmxvY2ssIGxvY2FsKSB7XG4gICAgaWYgKGJsb2NrICYmIGJsb2NrLmkpIHtcbiAgICAgICAgb3V0cm9pbmcuZGVsZXRlKGJsb2NrKTtcbiAgICAgICAgYmxvY2suaShsb2NhbCk7XG4gICAgfVxufVxuZnVuY3Rpb24gdHJhbnNpdGlvbl9vdXQoYmxvY2ssIGxvY2FsLCBkZXRhY2gsIGNhbGxiYWNrKSB7XG4gICAgaWYgKGJsb2NrICYmIGJsb2NrLm8pIHtcbiAgICAgICAgaWYgKG91dHJvaW5nLmhhcyhibG9jaykpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIG91dHJvaW5nLmFkZChibG9jayk7XG4gICAgICAgIG91dHJvcy5jLnB1c2goKCkgPT4ge1xuICAgICAgICAgICAgb3V0cm9pbmcuZGVsZXRlKGJsb2NrKTtcbiAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGlmIChkZXRhY2gpXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrLmQoMSk7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGJsb2NrLm8obG9jYWwpO1xuICAgIH1cbiAgICBlbHNlIGlmIChjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgIH1cbn1cbmNvbnN0IG51bGxfdHJhbnNpdGlvbiA9IHsgZHVyYXRpb246IDAgfTtcbmZ1bmN0aW9uIGNyZWF0ZV9pbl90cmFuc2l0aW9uKG5vZGUsIGZuLCBwYXJhbXMpIHtcbiAgICBsZXQgY29uZmlnID0gZm4obm9kZSwgcGFyYW1zKTtcbiAgICBsZXQgcnVubmluZyA9IGZhbHNlO1xuICAgIGxldCBhbmltYXRpb25fbmFtZTtcbiAgICBsZXQgdGFzaztcbiAgICBsZXQgdWlkID0gMDtcbiAgICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgICBpZiAoYW5pbWF0aW9uX25hbWUpXG4gICAgICAgICAgICBkZWxldGVfcnVsZShub2RlLCBhbmltYXRpb25fbmFtZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdvKCkge1xuICAgICAgICBjb25zdCB7IGRlbGF5ID0gMCwgZHVyYXRpb24gPSAzMDAsIGVhc2luZyA9IGlkZW50aXR5LCB0aWNrID0gbm9vcCwgY3NzIH0gPSBjb25maWcgfHwgbnVsbF90cmFuc2l0aW9uO1xuICAgICAgICBpZiAoY3NzKVxuICAgICAgICAgICAgYW5pbWF0aW9uX25hbWUgPSBjcmVhdGVfcnVsZShub2RlLCAwLCAxLCBkdXJhdGlvbiwgZGVsYXksIGVhc2luZywgY3NzLCB1aWQrKyk7XG4gICAgICAgIHRpY2soMCwgMSk7XG4gICAgICAgIGNvbnN0IHN0YXJ0X3RpbWUgPSBub3coKSArIGRlbGF5O1xuICAgICAgICBjb25zdCBlbmRfdGltZSA9IHN0YXJ0X3RpbWUgKyBkdXJhdGlvbjtcbiAgICAgICAgaWYgKHRhc2spXG4gICAgICAgICAgICB0YXNrLmFib3J0KCk7XG4gICAgICAgIHJ1bm5pbmcgPSB0cnVlO1xuICAgICAgICBhZGRfcmVuZGVyX2NhbGxiYWNrKCgpID0+IGRpc3BhdGNoKG5vZGUsIHRydWUsICdzdGFydCcpKTtcbiAgICAgICAgdGFzayA9IGxvb3Aobm93ID0+IHtcbiAgICAgICAgICAgIGlmIChydW5uaW5nKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vdyA+PSBlbmRfdGltZSkge1xuICAgICAgICAgICAgICAgICAgICB0aWNrKDEsIDApO1xuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaChub2RlLCB0cnVlLCAnZW5kJyk7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5vdyA+PSBzdGFydF90aW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlYXNpbmcoKG5vdyAtIHN0YXJ0X3RpbWUpIC8gZHVyYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB0aWNrKHQsIDEgLSB0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcnVubmluZztcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGxldCBzdGFydGVkID0gZmFsc2U7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnQoKSB7XG4gICAgICAgICAgICBpZiAoc3RhcnRlZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBzdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGRlbGV0ZV9ydWxlKG5vZGUpO1xuICAgICAgICAgICAgaWYgKGlzX2Z1bmN0aW9uKGNvbmZpZykpIHtcbiAgICAgICAgICAgICAgICBjb25maWcgPSBjb25maWcoKTtcbiAgICAgICAgICAgICAgICB3YWl0KCkudGhlbihnbyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBnbygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbnZhbGlkYXRlKCkge1xuICAgICAgICAgICAgc3RhcnRlZCA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBlbmQoKSB7XG4gICAgICAgICAgICBpZiAocnVubmluZykge1xuICAgICAgICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICAgICAgICBydW5uaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlX291dF90cmFuc2l0aW9uKG5vZGUsIGZuLCBwYXJhbXMpIHtcbiAgICBsZXQgY29uZmlnID0gZm4obm9kZSwgcGFyYW1zKTtcbiAgICBsZXQgcnVubmluZyA9IHRydWU7XG4gICAgbGV0IGFuaW1hdGlvbl9uYW1lO1xuICAgIGNvbnN0IGdyb3VwID0gb3V0cm9zO1xuICAgIGdyb3VwLnIgKz0gMTtcbiAgICBmdW5jdGlvbiBnbygpIHtcbiAgICAgICAgY29uc3QgeyBkZWxheSA9IDAsIGR1cmF0aW9uID0gMzAwLCBlYXNpbmcgPSBpZGVudGl0eSwgdGljayA9IG5vb3AsIGNzcyB9ID0gY29uZmlnIHx8IG51bGxfdHJhbnNpdGlvbjtcbiAgICAgICAgaWYgKGNzcylcbiAgICAgICAgICAgIGFuaW1hdGlvbl9uYW1lID0gY3JlYXRlX3J1bGUobm9kZSwgMSwgMCwgZHVyYXRpb24sIGRlbGF5LCBlYXNpbmcsIGNzcyk7XG4gICAgICAgIGNvbnN0IHN0YXJ0X3RpbWUgPSBub3coKSArIGRlbGF5O1xuICAgICAgICBjb25zdCBlbmRfdGltZSA9IHN0YXJ0X3RpbWUgKyBkdXJhdGlvbjtcbiAgICAgICAgYWRkX3JlbmRlcl9jYWxsYmFjaygoKSA9PiBkaXNwYXRjaChub2RlLCBmYWxzZSwgJ3N0YXJ0JykpO1xuICAgICAgICBsb29wKG5vdyA9PiB7XG4gICAgICAgICAgICBpZiAocnVubmluZykge1xuICAgICAgICAgICAgICAgIGlmIChub3cgPj0gZW5kX3RpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGljaygwLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gobm9kZSwgZmFsc2UsICdlbmQnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEtLWdyb3VwLnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgd2lsbCByZXN1bHQgaW4gYGVuZCgpYCBiZWluZyBjYWxsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzbyB3ZSBkb24ndCBuZWVkIHRvIGNsZWFuIHVwIGhlcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9hbGwoZ3JvdXAuYyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobm93ID49IHN0YXJ0X3RpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGVhc2luZygobm93IC0gc3RhcnRfdGltZSkgLyBkdXJhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIHRpY2soMSAtIHQsIHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBydW5uaW5nO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGlzX2Z1bmN0aW9uKGNvbmZpZykpIHtcbiAgICAgICAgd2FpdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgY29uZmlnID0gY29uZmlnKCk7XG4gICAgICAgICAgICBnbygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGdvKCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGVuZChyZXNldCkge1xuICAgICAgICAgICAgaWYgKHJlc2V0ICYmIGNvbmZpZy50aWNrKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLnRpY2soMSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocnVubmluZykge1xuICAgICAgICAgICAgICAgIGlmIChhbmltYXRpb25fbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlX3J1bGUobm9kZSwgYW5pbWF0aW9uX25hbWUpO1xuICAgICAgICAgICAgICAgIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG59XG5mdW5jdGlvbiBjcmVhdGVfYmlkaXJlY3Rpb25hbF90cmFuc2l0aW9uKG5vZGUsIGZuLCBwYXJhbXMsIGludHJvKSB7XG4gICAgbGV0IGNvbmZpZyA9IGZuKG5vZGUsIHBhcmFtcyk7XG4gICAgbGV0IHQgPSBpbnRybyA/IDAgOiAxO1xuICAgIGxldCBydW5uaW5nX3Byb2dyYW0gPSBudWxsO1xuICAgIGxldCBwZW5kaW5nX3Byb2dyYW0gPSBudWxsO1xuICAgIGxldCBhbmltYXRpb25fbmFtZSA9IG51bGw7XG4gICAgZnVuY3Rpb24gY2xlYXJfYW5pbWF0aW9uKCkge1xuICAgICAgICBpZiAoYW5pbWF0aW9uX25hbWUpXG4gICAgICAgICAgICBkZWxldGVfcnVsZShub2RlLCBhbmltYXRpb25fbmFtZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluaXQocHJvZ3JhbSwgZHVyYXRpb24pIHtcbiAgICAgICAgY29uc3QgZCA9IChwcm9ncmFtLmIgLSB0KTtcbiAgICAgICAgZHVyYXRpb24gKj0gTWF0aC5hYnMoZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhOiB0LFxuICAgICAgICAgICAgYjogcHJvZ3JhbS5iLFxuICAgICAgICAgICAgZCxcbiAgICAgICAgICAgIGR1cmF0aW9uLFxuICAgICAgICAgICAgc3RhcnQ6IHByb2dyYW0uc3RhcnQsXG4gICAgICAgICAgICBlbmQ6IHByb2dyYW0uc3RhcnQgKyBkdXJhdGlvbixcbiAgICAgICAgICAgIGdyb3VwOiBwcm9ncmFtLmdyb3VwXG4gICAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdvKGIpIHtcbiAgICAgICAgY29uc3QgeyBkZWxheSA9IDAsIGR1cmF0aW9uID0gMzAwLCBlYXNpbmcgPSBpZGVudGl0eSwgdGljayA9IG5vb3AsIGNzcyB9ID0gY29uZmlnIHx8IG51bGxfdHJhbnNpdGlvbjtcbiAgICAgICAgY29uc3QgcHJvZ3JhbSA9IHtcbiAgICAgICAgICAgIHN0YXJ0OiBub3coKSArIGRlbGF5LFxuICAgICAgICAgICAgYlxuICAgICAgICB9O1xuICAgICAgICBpZiAoIWIpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgdG9kbzogaW1wcm92ZSB0eXBpbmdzXG4gICAgICAgICAgICBwcm9ncmFtLmdyb3VwID0gb3V0cm9zO1xuICAgICAgICAgICAgb3V0cm9zLnIgKz0gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocnVubmluZ19wcm9ncmFtIHx8IHBlbmRpbmdfcHJvZ3JhbSkge1xuICAgICAgICAgICAgcGVuZGluZ19wcm9ncmFtID0gcHJvZ3JhbTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgYW4gaW50cm8sIGFuZCB0aGVyZSdzIGEgZGVsYXksIHdlIG5lZWQgdG8gZG9cbiAgICAgICAgICAgIC8vIGFuIGluaXRpYWwgdGljayBhbmQvb3IgYXBwbHkgQ1NTIGFuaW1hdGlvbiBpbW1lZGlhdGVseVxuICAgICAgICAgICAgaWYgKGNzcykge1xuICAgICAgICAgICAgICAgIGNsZWFyX2FuaW1hdGlvbigpO1xuICAgICAgICAgICAgICAgIGFuaW1hdGlvbl9uYW1lID0gY3JlYXRlX3J1bGUobm9kZSwgdCwgYiwgZHVyYXRpb24sIGRlbGF5LCBlYXNpbmcsIGNzcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYilcbiAgICAgICAgICAgICAgICB0aWNrKDAsIDEpO1xuICAgICAgICAgICAgcnVubmluZ19wcm9ncmFtID0gaW5pdChwcm9ncmFtLCBkdXJhdGlvbik7XG4gICAgICAgICAgICBhZGRfcmVuZGVyX2NhbGxiYWNrKCgpID0+IGRpc3BhdGNoKG5vZGUsIGIsICdzdGFydCcpKTtcbiAgICAgICAgICAgIGxvb3Aobm93ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGVuZGluZ19wcm9ncmFtICYmIG5vdyA+IHBlbmRpbmdfcHJvZ3JhbS5zdGFydCkge1xuICAgICAgICAgICAgICAgICAgICBydW5uaW5nX3Byb2dyYW0gPSBpbml0KHBlbmRpbmdfcHJvZ3JhbSwgZHVyYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nX3Byb2dyYW0gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaChub2RlLCBydW5uaW5nX3Byb2dyYW0uYiwgJ3N0YXJ0Jyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyX2FuaW1hdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uX25hbWUgPSBjcmVhdGVfcnVsZShub2RlLCB0LCBydW5uaW5nX3Byb2dyYW0uYiwgcnVubmluZ19wcm9ncmFtLmR1cmF0aW9uLCAwLCBlYXNpbmcsIGNvbmZpZy5jc3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChydW5uaW5nX3Byb2dyYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vdyA+PSBydW5uaW5nX3Byb2dyYW0uZW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aWNrKHQgPSBydW5uaW5nX3Byb2dyYW0uYiwgMSAtIHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gobm9kZSwgcnVubmluZ19wcm9ncmFtLmIsICdlbmQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGVuZGluZ19wcm9ncmFtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UncmUgZG9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChydW5uaW5nX3Byb2dyYW0uYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRybyDigJQgd2UgY2FuIHRpZHkgdXAgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJfYW5pbWF0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRybyDigJQgbmVlZHMgdG8gYmUgY29vcmRpbmF0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEtLXJ1bm5pbmdfcHJvZ3JhbS5ncm91cC5yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuX2FsbChydW5uaW5nX3Byb2dyYW0uZ3JvdXAuYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcnVubmluZ19wcm9ncmFtID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChub3cgPj0gcnVubmluZ19wcm9ncmFtLnN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gbm93IC0gcnVubmluZ19wcm9ncmFtLnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHJ1bm5pbmdfcHJvZ3JhbS5hICsgcnVubmluZ19wcm9ncmFtLmQgKiBlYXNpbmcocCAvIHJ1bm5pbmdfcHJvZ3JhbS5kdXJhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aWNrKHQsIDEgLSB0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gISEocnVubmluZ19wcm9ncmFtIHx8IHBlbmRpbmdfcHJvZ3JhbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBydW4oYikge1xuICAgICAgICAgICAgaWYgKGlzX2Z1bmN0aW9uKGNvbmZpZykpIHtcbiAgICAgICAgICAgICAgICB3YWl0KCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnID0gY29uZmlnKCk7XG4gICAgICAgICAgICAgICAgICAgIGdvKGIpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZ28oYik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVuZCgpIHtcbiAgICAgICAgICAgIGNsZWFyX2FuaW1hdGlvbigpO1xuICAgICAgICAgICAgcnVubmluZ19wcm9ncmFtID0gcGVuZGluZ19wcm9ncmFtID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbmZ1bmN0aW9uIGhhbmRsZV9wcm9taXNlKHByb21pc2UsIGluZm8pIHtcbiAgICBjb25zdCB0b2tlbiA9IGluZm8udG9rZW4gPSB7fTtcbiAgICBmdW5jdGlvbiB1cGRhdGUodHlwZSwgaW5kZXgsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGluZm8udG9rZW4gIT09IHRva2VuKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpbmZvLnJlc29sdmVkID0gdmFsdWU7XG4gICAgICAgIGxldCBjaGlsZF9jdHggPSBpbmZvLmN0eDtcbiAgICAgICAgaWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjaGlsZF9jdHggPSBjaGlsZF9jdHguc2xpY2UoKTtcbiAgICAgICAgICAgIGNoaWxkX2N0eFtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYmxvY2sgPSB0eXBlICYmIChpbmZvLmN1cnJlbnQgPSB0eXBlKShjaGlsZF9jdHgpO1xuICAgICAgICBsZXQgbmVlZHNfZmx1c2ggPSBmYWxzZTtcbiAgICAgICAgaWYgKGluZm8uYmxvY2spIHtcbiAgICAgICAgICAgIGlmIChpbmZvLmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIGluZm8uYmxvY2tzLmZvckVhY2goKGJsb2NrLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpICE9PSBpbmRleCAmJiBibG9jaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBfb3V0cm9zKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uX291dChibG9jaywgMSwgMSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmZvLmJsb2Nrc1tpXSA9PT0gYmxvY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5ibG9ja3NbaV0gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfb3V0cm9zKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGluZm8uYmxvY2suZCgxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJsb2NrLmMoKTtcbiAgICAgICAgICAgIHRyYW5zaXRpb25faW4oYmxvY2ssIDEpO1xuICAgICAgICAgICAgYmxvY2subShpbmZvLm1vdW50KCksIGluZm8uYW5jaG9yKTtcbiAgICAgICAgICAgIG5lZWRzX2ZsdXNoID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpbmZvLmJsb2NrID0gYmxvY2s7XG4gICAgICAgIGlmIChpbmZvLmJsb2NrcylcbiAgICAgICAgICAgIGluZm8uYmxvY2tzW2luZGV4XSA9IGJsb2NrO1xuICAgICAgICBpZiAobmVlZHNfZmx1c2gpIHtcbiAgICAgICAgICAgIGZsdXNoKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzX3Byb21pc2UocHJvbWlzZSkpIHtcbiAgICAgICAgY29uc3QgY3VycmVudF9jb21wb25lbnQgPSBnZXRfY3VycmVudF9jb21wb25lbnQoKTtcbiAgICAgICAgcHJvbWlzZS50aGVuKHZhbHVlID0+IHtcbiAgICAgICAgICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChjdXJyZW50X2NvbXBvbmVudCk7XG4gICAgICAgICAgICB1cGRhdGUoaW5mby50aGVuLCAxLCBpbmZvLnZhbHVlLCB2YWx1ZSk7XG4gICAgICAgICAgICBzZXRfY3VycmVudF9jb21wb25lbnQobnVsbCk7XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChjdXJyZW50X2NvbXBvbmVudCk7XG4gICAgICAgICAgICB1cGRhdGUoaW5mby5jYXRjaCwgMiwgaW5mby5lcnJvciwgZXJyb3IpO1xuICAgICAgICAgICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KG51bGwpO1xuICAgICAgICAgICAgaWYgKCFpbmZvLmhhc0NhdGNoKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBpZiB3ZSBwcmV2aW91c2x5IGhhZCBhIHRoZW4vY2F0Y2ggYmxvY2ssIGRlc3Ryb3kgaXRcbiAgICAgICAgaWYgKGluZm8uY3VycmVudCAhPT0gaW5mby5wZW5kaW5nKSB7XG4gICAgICAgICAgICB1cGRhdGUoaW5mby5wZW5kaW5nLCAwKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpZiAoaW5mby5jdXJyZW50ICE9PSBpbmZvLnRoZW4pIHtcbiAgICAgICAgICAgIHVwZGF0ZShpbmZvLnRoZW4sIDEsIGluZm8udmFsdWUsIHByb21pc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaW5mby5yZXNvbHZlZCA9IHByb21pc2U7XG4gICAgfVxufVxuZnVuY3Rpb24gdXBkYXRlX2F3YWl0X2Jsb2NrX2JyYW5jaChpbmZvLCBjdHgsIGRpcnR5KSB7XG4gICAgY29uc3QgY2hpbGRfY3R4ID0gY3R4LnNsaWNlKCk7XG4gICAgY29uc3QgeyByZXNvbHZlZCB9ID0gaW5mbztcbiAgICBpZiAoaW5mby5jdXJyZW50ID09PSBpbmZvLnRoZW4pIHtcbiAgICAgICAgY2hpbGRfY3R4W2luZm8udmFsdWVdID0gcmVzb2x2ZWQ7XG4gICAgfVxuICAgIGlmIChpbmZvLmN1cnJlbnQgPT09IGluZm8uY2F0Y2gpIHtcbiAgICAgICAgY2hpbGRfY3R4W2luZm8uZXJyb3JdID0gcmVzb2x2ZWQ7XG4gICAgfVxuICAgIGluZm8uYmxvY2sucChjaGlsZF9jdHgsIGRpcnR5KTtcbn1cblxuY29uc3QgZ2xvYmFscyA9ICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJ1xuICAgID8gd2luZG93XG4gICAgOiB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgPyBnbG9iYWxUaGlzXG4gICAgICAgIDogZ2xvYmFsKTtcblxuZnVuY3Rpb24gZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKSB7XG4gICAgYmxvY2suZCgxKTtcbiAgICBsb29rdXAuZGVsZXRlKGJsb2NrLmtleSk7XG59XG5mdW5jdGlvbiBvdXRyb19hbmRfZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKSB7XG4gICAgdHJhbnNpdGlvbl9vdXQoYmxvY2ssIDEsIDEsICgpID0+IHtcbiAgICAgICAgbG9va3VwLmRlbGV0ZShibG9jay5rZXkpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZml4X2FuZF9kZXN0cm95X2Jsb2NrKGJsb2NrLCBsb29rdXApIHtcbiAgICBibG9jay5mKCk7XG4gICAgZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKTtcbn1cbmZ1bmN0aW9uIGZpeF9hbmRfb3V0cm9fYW5kX2Rlc3Ryb3lfYmxvY2soYmxvY2ssIGxvb2t1cCkge1xuICAgIGJsb2NrLmYoKTtcbiAgICBvdXRyb19hbmRfZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKTtcbn1cbmZ1bmN0aW9uIHVwZGF0ZV9rZXllZF9lYWNoKG9sZF9ibG9ja3MsIGRpcnR5LCBnZXRfa2V5LCBkeW5hbWljLCBjdHgsIGxpc3QsIGxvb2t1cCwgbm9kZSwgZGVzdHJveSwgY3JlYXRlX2VhY2hfYmxvY2ssIG5leHQsIGdldF9jb250ZXh0KSB7XG4gICAgbGV0IG8gPSBvbGRfYmxvY2tzLmxlbmd0aDtcbiAgICBsZXQgbiA9IGxpc3QubGVuZ3RoO1xuICAgIGxldCBpID0gbztcbiAgICBjb25zdCBvbGRfaW5kZXhlcyA9IHt9O1xuICAgIHdoaWxlIChpLS0pXG4gICAgICAgIG9sZF9pbmRleGVzW29sZF9ibG9ja3NbaV0ua2V5XSA9IGk7XG4gICAgY29uc3QgbmV3X2Jsb2NrcyA9IFtdO1xuICAgIGNvbnN0IG5ld19sb29rdXAgPSBuZXcgTWFwKCk7XG4gICAgY29uc3QgZGVsdGFzID0gbmV3IE1hcCgpO1xuICAgIGkgPSBuO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgY29uc3QgY2hpbGRfY3R4ID0gZ2V0X2NvbnRleHQoY3R4LCBsaXN0LCBpKTtcbiAgICAgICAgY29uc3Qga2V5ID0gZ2V0X2tleShjaGlsZF9jdHgpO1xuICAgICAgICBsZXQgYmxvY2sgPSBsb29rdXAuZ2V0KGtleSk7XG4gICAgICAgIGlmICghYmxvY2spIHtcbiAgICAgICAgICAgIGJsb2NrID0gY3JlYXRlX2VhY2hfYmxvY2soa2V5LCBjaGlsZF9jdHgpO1xuICAgICAgICAgICAgYmxvY2suYygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGR5bmFtaWMpIHtcbiAgICAgICAgICAgIGJsb2NrLnAoY2hpbGRfY3R4LCBkaXJ0eSk7XG4gICAgICAgIH1cbiAgICAgICAgbmV3X2xvb2t1cC5zZXQoa2V5LCBuZXdfYmxvY2tzW2ldID0gYmxvY2spO1xuICAgICAgICBpZiAoa2V5IGluIG9sZF9pbmRleGVzKVxuICAgICAgICAgICAgZGVsdGFzLnNldChrZXksIE1hdGguYWJzKGkgLSBvbGRfaW5kZXhlc1trZXldKSk7XG4gICAgfVxuICAgIGNvbnN0IHdpbGxfbW92ZSA9IG5ldyBTZXQoKTtcbiAgICBjb25zdCBkaWRfbW92ZSA9IG5ldyBTZXQoKTtcbiAgICBmdW5jdGlvbiBpbnNlcnQoYmxvY2spIHtcbiAgICAgICAgdHJhbnNpdGlvbl9pbihibG9jaywgMSk7XG4gICAgICAgIGJsb2NrLm0obm9kZSwgbmV4dCk7XG4gICAgICAgIGxvb2t1cC5zZXQoYmxvY2sua2V5LCBibG9jayk7XG4gICAgICAgIG5leHQgPSBibG9jay5maXJzdDtcbiAgICAgICAgbi0tO1xuICAgIH1cbiAgICB3aGlsZSAobyAmJiBuKSB7XG4gICAgICAgIGNvbnN0IG5ld19ibG9jayA9IG5ld19ibG9ja3NbbiAtIDFdO1xuICAgICAgICBjb25zdCBvbGRfYmxvY2sgPSBvbGRfYmxvY2tzW28gLSAxXTtcbiAgICAgICAgY29uc3QgbmV3X2tleSA9IG5ld19ibG9jay5rZXk7XG4gICAgICAgIGNvbnN0IG9sZF9rZXkgPSBvbGRfYmxvY2sua2V5O1xuICAgICAgICBpZiAobmV3X2Jsb2NrID09PSBvbGRfYmxvY2spIHtcbiAgICAgICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICAgICAgICAgIG5leHQgPSBuZXdfYmxvY2suZmlyc3Q7XG4gICAgICAgICAgICBvLS07XG4gICAgICAgICAgICBuLS07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIW5ld19sb29rdXAuaGFzKG9sZF9rZXkpKSB7XG4gICAgICAgICAgICAvLyByZW1vdmUgb2xkIGJsb2NrXG4gICAgICAgICAgICBkZXN0cm95KG9sZF9ibG9jaywgbG9va3VwKTtcbiAgICAgICAgICAgIG8tLTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghbG9va3VwLmhhcyhuZXdfa2V5KSB8fCB3aWxsX21vdmUuaGFzKG5ld19rZXkpKSB7XG4gICAgICAgICAgICBpbnNlcnQobmV3X2Jsb2NrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkaWRfbW92ZS5oYXMob2xkX2tleSkpIHtcbiAgICAgICAgICAgIG8tLTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkZWx0YXMuZ2V0KG5ld19rZXkpID4gZGVsdGFzLmdldChvbGRfa2V5KSkge1xuICAgICAgICAgICAgZGlkX21vdmUuYWRkKG5ld19rZXkpO1xuICAgICAgICAgICAgaW5zZXJ0KG5ld19ibG9jayk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB3aWxsX21vdmUuYWRkKG9sZF9rZXkpO1xuICAgICAgICAgICAgby0tO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdoaWxlIChvLS0pIHtcbiAgICAgICAgY29uc3Qgb2xkX2Jsb2NrID0gb2xkX2Jsb2Nrc1tvXTtcbiAgICAgICAgaWYgKCFuZXdfbG9va3VwLmhhcyhvbGRfYmxvY2sua2V5KSlcbiAgICAgICAgICAgIGRlc3Ryb3kob2xkX2Jsb2NrLCBsb29rdXApO1xuICAgIH1cbiAgICB3aGlsZSAobilcbiAgICAgICAgaW5zZXJ0KG5ld19ibG9ja3NbbiAtIDFdKTtcbiAgICByZXR1cm4gbmV3X2Jsb2Nrcztcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlX2VhY2hfa2V5cyhjdHgsIGxpc3QsIGdldF9jb250ZXh0LCBnZXRfa2V5KSB7XG4gICAgY29uc3Qga2V5cyA9IG5ldyBTZXQoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qga2V5ID0gZ2V0X2tleShnZXRfY29udGV4dChjdHgsIGxpc3QsIGkpKTtcbiAgICAgICAgaWYgKGtleXMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGhhdmUgZHVwbGljYXRlIGtleXMgaW4gYSBrZXllZCBlYWNoJyk7XG4gICAgICAgIH1cbiAgICAgICAga2V5cy5hZGQoa2V5KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldF9zcHJlYWRfdXBkYXRlKGxldmVscywgdXBkYXRlcykge1xuICAgIGNvbnN0IHVwZGF0ZSA9IHt9O1xuICAgIGNvbnN0IHRvX251bGxfb3V0ID0ge307XG4gICAgY29uc3QgYWNjb3VudGVkX2ZvciA9IHsgJCRzY29wZTogMSB9O1xuICAgIGxldCBpID0gbGV2ZWxzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgIGNvbnN0IG8gPSBsZXZlbHNbaV07XG4gICAgICAgIGNvbnN0IG4gPSB1cGRhdGVzW2ldO1xuICAgICAgICBpZiAobikge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbykge1xuICAgICAgICAgICAgICAgIGlmICghKGtleSBpbiBuKSlcbiAgICAgICAgICAgICAgICAgICAgdG9fbnVsbF9vdXRba2V5XSA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBuKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFhY2NvdW50ZWRfZm9yW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlW2tleV0gPSBuW2tleV07XG4gICAgICAgICAgICAgICAgICAgIGFjY291bnRlZF9mb3Jba2V5XSA9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV2ZWxzW2ldID0gbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG8pIHtcbiAgICAgICAgICAgICAgICBhY2NvdW50ZWRfZm9yW2tleV0gPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IGluIHRvX251bGxfb3V0KSB7XG4gICAgICAgIGlmICghKGtleSBpbiB1cGRhdGUpKVxuICAgICAgICAgICAgdXBkYXRlW2tleV0gPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB1cGRhdGU7XG59XG5mdW5jdGlvbiBnZXRfc3ByZWFkX29iamVjdChzcHJlYWRfcHJvcHMpIHtcbiAgICByZXR1cm4gdHlwZW9mIHNwcmVhZF9wcm9wcyA9PT0gJ29iamVjdCcgJiYgc3ByZWFkX3Byb3BzICE9PSBudWxsID8gc3ByZWFkX3Byb3BzIDoge307XG59XG5cbi8vIHNvdXJjZTogaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5kaWNlcy5odG1sXG5jb25zdCBib29sZWFuX2F0dHJpYnV0ZXMgPSBuZXcgU2V0KFtcbiAgICAnYWxsb3dmdWxsc2NyZWVuJyxcbiAgICAnYWxsb3dwYXltZW50cmVxdWVzdCcsXG4gICAgJ2FzeW5jJyxcbiAgICAnYXV0b2ZvY3VzJyxcbiAgICAnYXV0b3BsYXknLFxuICAgICdjaGVja2VkJyxcbiAgICAnY29udHJvbHMnLFxuICAgICdkZWZhdWx0JyxcbiAgICAnZGVmZXInLFxuICAgICdkaXNhYmxlZCcsXG4gICAgJ2Zvcm1ub3ZhbGlkYXRlJyxcbiAgICAnaGlkZGVuJyxcbiAgICAnaXNtYXAnLFxuICAgICdsb29wJyxcbiAgICAnbXVsdGlwbGUnLFxuICAgICdtdXRlZCcsXG4gICAgJ25vbW9kdWxlJyxcbiAgICAnbm92YWxpZGF0ZScsXG4gICAgJ29wZW4nLFxuICAgICdwbGF5c2lubGluZScsXG4gICAgJ3JlYWRvbmx5JyxcbiAgICAncmVxdWlyZWQnLFxuICAgICdyZXZlcnNlZCcsXG4gICAgJ3NlbGVjdGVkJ1xuXSk7XG5cbmNvbnN0IHZvaWRfZWxlbWVudF9uYW1lcyA9IC9eKD86YXJlYXxiYXNlfGJyfGNvbHxjb21tYW5kfGVtYmVkfGhyfGltZ3xpbnB1dHxrZXlnZW58bGlua3xtZXRhfHBhcmFtfHNvdXJjZXx0cmFja3x3YnIpJC87XG5mdW5jdGlvbiBpc192b2lkKG5hbWUpIHtcbiAgICByZXR1cm4gdm9pZF9lbGVtZW50X25hbWVzLnRlc3QobmFtZSkgfHwgbmFtZS50b0xvd2VyQ2FzZSgpID09PSAnIWRvY3R5cGUnO1xufVxuXG5jb25zdCBpbnZhbGlkX2F0dHJpYnV0ZV9uYW1lX2NoYXJhY3RlciA9IC9bXFxzJ1wiPi89XFx1e0ZERDB9LVxcdXtGREVGfVxcdXtGRkZFfVxcdXtGRkZGfVxcdXsxRkZGRX1cXHV7MUZGRkZ9XFx1ezJGRkZFfVxcdXsyRkZGRn1cXHV7M0ZGRkV9XFx1ezNGRkZGfVxcdXs0RkZGRX1cXHV7NEZGRkZ9XFx1ezVGRkZFfVxcdXs1RkZGRn1cXHV7NkZGRkV9XFx1ezZGRkZGfVxcdXs3RkZGRX1cXHV7N0ZGRkZ9XFx1ezhGRkZFfVxcdXs4RkZGRn1cXHV7OUZGRkV9XFx1ezlGRkZGfVxcdXtBRkZGRX1cXHV7QUZGRkZ9XFx1e0JGRkZFfVxcdXtCRkZGRn1cXHV7Q0ZGRkV9XFx1e0NGRkZGfVxcdXtERkZGRX1cXHV7REZGRkZ9XFx1e0VGRkZFfVxcdXtFRkZGRn1cXHV7RkZGRkV9XFx1e0ZGRkZGfVxcdXsxMEZGRkV9XFx1ezEwRkZGRn1dL3U7XG4vLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNhdHRyaWJ1dGVzLTJcbi8vIGh0dHBzOi8vaW5mcmEuc3BlYy53aGF0d2cub3JnLyNub25jaGFyYWN0ZXJcbmZ1bmN0aW9uIHNwcmVhZChhcmdzLCBhdHRyc190b19hZGQpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gT2JqZWN0LmFzc2lnbih7fSwgLi4uYXJncyk7XG4gICAgaWYgKGF0dHJzX3RvX2FkZCkge1xuICAgICAgICBjb25zdCBjbGFzc2VzX3RvX2FkZCA9IGF0dHJzX3RvX2FkZC5jbGFzc2VzO1xuICAgICAgICBjb25zdCBzdHlsZXNfdG9fYWRkID0gYXR0cnNfdG9fYWRkLnN0eWxlcztcbiAgICAgICAgaWYgKGNsYXNzZXNfdG9fYWRkKSB7XG4gICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5jbGFzcyA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgYXR0cmlidXRlcy5jbGFzcyA9IGNsYXNzZXNfdG9fYWRkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYXR0cmlidXRlcy5jbGFzcyArPSAnICcgKyBjbGFzc2VzX3RvX2FkZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc3R5bGVzX3RvX2FkZCkge1xuICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuc3R5bGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMuc3R5bGUgPSBzdHlsZV9vYmplY3RfdG9fc3RyaW5nKHN0eWxlc190b19hZGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYXR0cmlidXRlcy5zdHlsZSA9IHN0eWxlX29iamVjdF90b19zdHJpbmcobWVyZ2Vfc3NyX3N0eWxlcyhhdHRyaWJ1dGVzLnN0eWxlLCBzdHlsZXNfdG9fYWRkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IHN0ciA9ICcnO1xuICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgIGlmIChpbnZhbGlkX2F0dHJpYnV0ZV9uYW1lX2NoYXJhY3Rlci50ZXN0KG5hbWUpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGF0dHJpYnV0ZXNbbmFtZV07XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSlcbiAgICAgICAgICAgIHN0ciArPSAnICcgKyBuYW1lO1xuICAgICAgICBlbHNlIGlmIChib29sZWFuX2F0dHJpYnV0ZXMuaGFzKG5hbWUudG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSlcbiAgICAgICAgICAgICAgICBzdHIgKz0gJyAnICsgbmFtZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBzdHIgKz0gYCAke25hbWV9PVwiJHt2YWx1ZX1cImA7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gc3RyO1xufVxuZnVuY3Rpb24gbWVyZ2Vfc3NyX3N0eWxlcyhzdHlsZV9hdHRyaWJ1dGUsIHN0eWxlX2RpcmVjdGl2ZSkge1xuICAgIGNvbnN0IHN0eWxlX29iamVjdCA9IHt9O1xuICAgIGZvciAoY29uc3QgaW5kaXZpZHVhbF9zdHlsZSBvZiBzdHlsZV9hdHRyaWJ1dGUuc3BsaXQoJzsnKSkge1xuICAgICAgICBjb25zdCBjb2xvbl9pbmRleCA9IGluZGl2aWR1YWxfc3R5bGUuaW5kZXhPZignOicpO1xuICAgICAgICBjb25zdCBuYW1lID0gaW5kaXZpZHVhbF9zdHlsZS5zbGljZSgwLCBjb2xvbl9pbmRleCkudHJpbSgpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGluZGl2aWR1YWxfc3R5bGUuc2xpY2UoY29sb25faW5kZXggKyAxKS50cmltKCk7XG4gICAgICAgIGlmICghbmFtZSlcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBzdHlsZV9vYmplY3RbbmFtZV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBuYW1lIGluIHN0eWxlX2RpcmVjdGl2ZSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHN0eWxlX2RpcmVjdGl2ZVtuYW1lXTtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBzdHlsZV9vYmplY3RbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSBzdHlsZV9vYmplY3RbbmFtZV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN0eWxlX29iamVjdDtcbn1cbmNvbnN0IEFUVFJfUkVHRVggPSAvWyZcIl0vZztcbmNvbnN0IENPTlRFTlRfUkVHRVggPSAvWyY8XS9nO1xuLyoqXG4gKiBOb3RlOiB0aGlzIG1ldGhvZCBpcyBwZXJmb3JtYW5jZSBzZW5zaXRpdmUgYW5kIGhhcyBiZWVuIG9wdGltaXplZFxuICogaHR0cHM6Ly9naXRodWIuY29tL3N2ZWx0ZWpzL3N2ZWx0ZS9wdWxsLzU3MDFcbiAqL1xuZnVuY3Rpb24gZXNjYXBlKHZhbHVlLCBpc19hdHRyID0gZmFsc2UpIHtcbiAgICBjb25zdCBzdHIgPSBTdHJpbmcodmFsdWUpO1xuICAgIGNvbnN0IHBhdHRlcm4gPSBpc19hdHRyID8gQVRUUl9SRUdFWCA6IENPTlRFTlRfUkVHRVg7XG4gICAgcGF0dGVybi5sYXN0SW5kZXggPSAwO1xuICAgIGxldCBlc2NhcGVkID0gJyc7XG4gICAgbGV0IGxhc3QgPSAwO1xuICAgIHdoaWxlIChwYXR0ZXJuLnRlc3Qoc3RyKSkge1xuICAgICAgICBjb25zdCBpID0gcGF0dGVybi5sYXN0SW5kZXggLSAxO1xuICAgICAgICBjb25zdCBjaCA9IHN0cltpXTtcbiAgICAgICAgZXNjYXBlZCArPSBzdHIuc3Vic3RyaW5nKGxhc3QsIGkpICsgKGNoID09PSAnJicgPyAnJmFtcDsnIDogKGNoID09PSAnXCInID8gJyZxdW90OycgOiAnJmx0OycpKTtcbiAgICAgICAgbGFzdCA9IGkgKyAxO1xuICAgIH1cbiAgICByZXR1cm4gZXNjYXBlZCArIHN0ci5zdWJzdHJpbmcobGFzdCk7XG59XG5mdW5jdGlvbiBlc2NhcGVfYXR0cmlidXRlX3ZhbHVlKHZhbHVlKSB7XG4gICAgLy8ga2VlcCBib29sZWFucywgbnVsbCwgYW5kIHVuZGVmaW5lZCBmb3IgdGhlIHNha2Ugb2YgYHNwcmVhZGBcbiAgICBjb25zdCBzaG91bGRfZXNjYXBlID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jyk7XG4gICAgcmV0dXJuIHNob3VsZF9lc2NhcGUgPyBlc2NhcGUodmFsdWUsIHRydWUpIDogdmFsdWU7XG59XG5mdW5jdGlvbiBlc2NhcGVfb2JqZWN0KG9iaikge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgICByZXN1bHRba2V5XSA9IGVzY2FwZV9hdHRyaWJ1dGVfdmFsdWUob2JqW2tleV0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gZWFjaChpdGVtcywgZm4pIHtcbiAgICBsZXQgc3RyID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBzdHIgKz0gZm4oaXRlbXNbaV0sIGkpO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xufVxuY29uc3QgbWlzc2luZ19jb21wb25lbnQgPSB7XG4gICAgJCRyZW5kZXI6ICgpID0+ICcnXG59O1xuZnVuY3Rpb24gdmFsaWRhdGVfY29tcG9uZW50KGNvbXBvbmVudCwgbmFtZSkge1xuICAgIGlmICghY29tcG9uZW50IHx8ICFjb21wb25lbnQuJCRyZW5kZXIpIHtcbiAgICAgICAgaWYgKG5hbWUgPT09ICdzdmVsdGU6Y29tcG9uZW50JylcbiAgICAgICAgICAgIG5hbWUgKz0gJyB0aGlzPXsuLi59JztcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGA8JHtuYW1lfT4gaXMgbm90IGEgdmFsaWQgU1NSIGNvbXBvbmVudC4gWW91IG1heSBuZWVkIHRvIHJldmlldyB5b3VyIGJ1aWxkIGNvbmZpZyB0byBlbnN1cmUgdGhhdCBkZXBlbmRlbmNpZXMgYXJlIGNvbXBpbGVkLCByYXRoZXIgdGhhbiBpbXBvcnRlZCBhcyBwcmUtY29tcGlsZWQgbW9kdWxlc2ApO1xuICAgIH1cbiAgICByZXR1cm4gY29tcG9uZW50O1xufVxuZnVuY3Rpb24gZGVidWcoZmlsZSwgbGluZSwgY29sdW1uLCB2YWx1ZXMpIHtcbiAgICBjb25zb2xlLmxvZyhge0BkZWJ1Z30gJHtmaWxlID8gZmlsZSArICcgJyA6ICcnfSgke2xpbmV9OiR7Y29sdW1ufSlgKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5sb2codmFsdWVzKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgcmV0dXJuICcnO1xufVxubGV0IG9uX2Rlc3Ryb3k7XG5mdW5jdGlvbiBjcmVhdGVfc3NyX2NvbXBvbmVudChmbikge1xuICAgIGZ1bmN0aW9uICQkcmVuZGVyKHJlc3VsdCwgcHJvcHMsIGJpbmRpbmdzLCBzbG90cywgY29udGV4dCkge1xuICAgICAgICBjb25zdCBwYXJlbnRfY29tcG9uZW50ID0gY3VycmVudF9jb21wb25lbnQ7XG4gICAgICAgIGNvbnN0ICQkID0ge1xuICAgICAgICAgICAgb25fZGVzdHJveSxcbiAgICAgICAgICAgIGNvbnRleHQ6IG5ldyBNYXAoY29udGV4dCB8fCAocGFyZW50X2NvbXBvbmVudCA/IHBhcmVudF9jb21wb25lbnQuJCQuY29udGV4dCA6IFtdKSksXG4gICAgICAgICAgICAvLyB0aGVzZSB3aWxsIGJlIGltbWVkaWF0ZWx5IGRpc2NhcmRlZFxuICAgICAgICAgICAgb25fbW91bnQ6IFtdLFxuICAgICAgICAgICAgYmVmb3JlX3VwZGF0ZTogW10sXG4gICAgICAgICAgICBhZnRlcl91cGRhdGU6IFtdLFxuICAgICAgICAgICAgY2FsbGJhY2tzOiBibGFua19vYmplY3QoKVxuICAgICAgICB9O1xuICAgICAgICBzZXRfY3VycmVudF9jb21wb25lbnQoeyAkJCB9KTtcbiAgICAgICAgY29uc3QgaHRtbCA9IGZuKHJlc3VsdCwgcHJvcHMsIGJpbmRpbmdzLCBzbG90cyk7XG4gICAgICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChwYXJlbnRfY29tcG9uZW50KTtcbiAgICAgICAgcmV0dXJuIGh0bWw7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHJlbmRlcjogKHByb3BzID0ge30sIHsgJCRzbG90cyA9IHt9LCBjb250ZXh0ID0gbmV3IE1hcCgpIH0gPSB7fSkgPT4ge1xuICAgICAgICAgICAgb25fZGVzdHJveSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0geyB0aXRsZTogJycsIGhlYWQ6ICcnLCBjc3M6IG5ldyBTZXQoKSB9O1xuICAgICAgICAgICAgY29uc3QgaHRtbCA9ICQkcmVuZGVyKHJlc3VsdCwgcHJvcHMsIHt9LCAkJHNsb3RzLCBjb250ZXh0KTtcbiAgICAgICAgICAgIHJ1bl9hbGwob25fZGVzdHJveSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGh0bWwsXG4gICAgICAgICAgICAgICAgY3NzOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IEFycmF5LmZyb20ocmVzdWx0LmNzcykubWFwKGNzcyA9PiBjc3MuY29kZSkuam9pbignXFxuJyksXG4gICAgICAgICAgICAgICAgICAgIG1hcDogbnVsbCAvLyBUT0RPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBoZWFkOiByZXN1bHQudGl0bGUgKyByZXN1bHQuaGVhZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgJCRyZW5kZXJcbiAgICB9O1xufVxuZnVuY3Rpb24gYWRkX2F0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IChib29sZWFuICYmICF2YWx1ZSkpXG4gICAgICAgIHJldHVybiAnJztcbiAgICBjb25zdCBhc3NpZ25tZW50ID0gKGJvb2xlYW4gJiYgdmFsdWUgPT09IHRydWUpID8gJycgOiBgPVwiJHtlc2NhcGUodmFsdWUsIHRydWUpfVwiYDtcbiAgICByZXR1cm4gYCAke25hbWV9JHthc3NpZ25tZW50fWA7XG59XG5mdW5jdGlvbiBhZGRfY2xhc3NlcyhjbGFzc2VzKSB7XG4gICAgcmV0dXJuIGNsYXNzZXMgPyBgIGNsYXNzPVwiJHtjbGFzc2VzfVwiYCA6ICcnO1xufVxuZnVuY3Rpb24gc3R5bGVfb2JqZWN0X3RvX3N0cmluZyhzdHlsZV9vYmplY3QpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoc3R5bGVfb2JqZWN0KVxuICAgICAgICAuZmlsdGVyKGtleSA9PiBzdHlsZV9vYmplY3Rba2V5XSlcbiAgICAgICAgLm1hcChrZXkgPT4gYCR7a2V5fTogJHtzdHlsZV9vYmplY3Rba2V5XX07YClcbiAgICAgICAgLmpvaW4oJyAnKTtcbn1cbmZ1bmN0aW9uIGFkZF9zdHlsZXMoc3R5bGVfb2JqZWN0KSB7XG4gICAgY29uc3Qgc3R5bGVzID0gc3R5bGVfb2JqZWN0X3RvX3N0cmluZyhzdHlsZV9vYmplY3QpO1xuICAgIHJldHVybiBzdHlsZXMgPyBgIHN0eWxlPVwiJHtzdHlsZXN9XCJgIDogJyc7XG59XG5cbmZ1bmN0aW9uIGJpbmQoY29tcG9uZW50LCBuYW1lLCBjYWxsYmFjaykge1xuICAgIGNvbnN0IGluZGV4ID0gY29tcG9uZW50LiQkLnByb3BzW25hbWVdO1xuICAgIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbXBvbmVudC4kJC5ib3VuZFtpbmRleF0gPSBjYWxsYmFjaztcbiAgICAgICAgY2FsbGJhY2soY29tcG9uZW50LiQkLmN0eFtpbmRleF0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZV9jb21wb25lbnQoYmxvY2spIHtcbiAgICBibG9jayAmJiBibG9jay5jKCk7XG59XG5mdW5jdGlvbiBjbGFpbV9jb21wb25lbnQoYmxvY2ssIHBhcmVudF9ub2Rlcykge1xuICAgIGJsb2NrICYmIGJsb2NrLmwocGFyZW50X25vZGVzKTtcbn1cbmZ1bmN0aW9uIG1vdW50X2NvbXBvbmVudChjb21wb25lbnQsIHRhcmdldCwgYW5jaG9yLCBjdXN0b21FbGVtZW50KSB7XG4gICAgY29uc3QgeyBmcmFnbWVudCwgb25fbW91bnQsIG9uX2Rlc3Ryb3ksIGFmdGVyX3VwZGF0ZSB9ID0gY29tcG9uZW50LiQkO1xuICAgIGZyYWdtZW50ICYmIGZyYWdtZW50Lm0odGFyZ2V0LCBhbmNob3IpO1xuICAgIGlmICghY3VzdG9tRWxlbWVudCkge1xuICAgICAgICAvLyBvbk1vdW50IGhhcHBlbnMgYmVmb3JlIHRoZSBpbml0aWFsIGFmdGVyVXBkYXRlXG4gICAgICAgIGFkZF9yZW5kZXJfY2FsbGJhY2soKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3X29uX2Rlc3Ryb3kgPSBvbl9tb3VudC5tYXAocnVuKS5maWx0ZXIoaXNfZnVuY3Rpb24pO1xuICAgICAgICAgICAgaWYgKG9uX2Rlc3Ryb3kpIHtcbiAgICAgICAgICAgICAgICBvbl9kZXN0cm95LnB1c2goLi4ubmV3X29uX2Rlc3Ryb3kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gRWRnZSBjYXNlIC0gY29tcG9uZW50IHdhcyBkZXN0cm95ZWQgaW1tZWRpYXRlbHksXG4gICAgICAgICAgICAgICAgLy8gbW9zdCBsaWtlbHkgYXMgYSByZXN1bHQgb2YgYSBiaW5kaW5nIGluaXRpYWxpc2luZ1xuICAgICAgICAgICAgICAgIHJ1bl9hbGwobmV3X29uX2Rlc3Ryb3kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29tcG9uZW50LiQkLm9uX21vdW50ID0gW107XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhZnRlcl91cGRhdGUuZm9yRWFjaChhZGRfcmVuZGVyX2NhbGxiYWNrKTtcbn1cbmZ1bmN0aW9uIGRlc3Ryb3lfY29tcG9uZW50KGNvbXBvbmVudCwgZGV0YWNoaW5nKSB7XG4gICAgY29uc3QgJCQgPSBjb21wb25lbnQuJCQ7XG4gICAgaWYgKCQkLmZyYWdtZW50ICE9PSBudWxsKSB7XG4gICAgICAgIHJ1bl9hbGwoJCQub25fZGVzdHJveSk7XG4gICAgICAgICQkLmZyYWdtZW50ICYmICQkLmZyYWdtZW50LmQoZGV0YWNoaW5nKTtcbiAgICAgICAgLy8gVE9ETyBudWxsIG91dCBvdGhlciByZWZzLCBpbmNsdWRpbmcgY29tcG9uZW50LiQkIChidXQgbmVlZCB0b1xuICAgICAgICAvLyBwcmVzZXJ2ZSBmaW5hbCBzdGF0ZT8pXG4gICAgICAgICQkLm9uX2Rlc3Ryb3kgPSAkJC5mcmFnbWVudCA9IG51bGw7XG4gICAgICAgICQkLmN0eCA9IFtdO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG1ha2VfZGlydHkoY29tcG9uZW50LCBpKSB7XG4gICAgaWYgKGNvbXBvbmVudC4kJC5kaXJ0eVswXSA9PT0gLTEpIHtcbiAgICAgICAgZGlydHlfY29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICAgIHNjaGVkdWxlX3VwZGF0ZSgpO1xuICAgICAgICBjb21wb25lbnQuJCQuZGlydHkuZmlsbCgwKTtcbiAgICB9XG4gICAgY29tcG9uZW50LiQkLmRpcnR5WyhpIC8gMzEpIHwgMF0gfD0gKDEgPDwgKGkgJSAzMSkpO1xufVxuZnVuY3Rpb24gaW5pdChjb21wb25lbnQsIG9wdGlvbnMsIGluc3RhbmNlLCBjcmVhdGVfZnJhZ21lbnQsIG5vdF9lcXVhbCwgcHJvcHMsIGFwcGVuZF9zdHlsZXMsIGRpcnR5ID0gWy0xXSkge1xuICAgIGNvbnN0IHBhcmVudF9jb21wb25lbnQgPSBjdXJyZW50X2NvbXBvbmVudDtcbiAgICBzZXRfY3VycmVudF9jb21wb25lbnQoY29tcG9uZW50KTtcbiAgICBjb25zdCAkJCA9IGNvbXBvbmVudC4kJCA9IHtcbiAgICAgICAgZnJhZ21lbnQ6IG51bGwsXG4gICAgICAgIGN0eDogbnVsbCxcbiAgICAgICAgLy8gc3RhdGVcbiAgICAgICAgcHJvcHMsXG4gICAgICAgIHVwZGF0ZTogbm9vcCxcbiAgICAgICAgbm90X2VxdWFsLFxuICAgICAgICBib3VuZDogYmxhbmtfb2JqZWN0KCksXG4gICAgICAgIC8vIGxpZmVjeWNsZVxuICAgICAgICBvbl9tb3VudDogW10sXG4gICAgICAgIG9uX2Rlc3Ryb3k6IFtdLFxuICAgICAgICBvbl9kaXNjb25uZWN0OiBbXSxcbiAgICAgICAgYmVmb3JlX3VwZGF0ZTogW10sXG4gICAgICAgIGFmdGVyX3VwZGF0ZTogW10sXG4gICAgICAgIGNvbnRleHQ6IG5ldyBNYXAob3B0aW9ucy5jb250ZXh0IHx8IChwYXJlbnRfY29tcG9uZW50ID8gcGFyZW50X2NvbXBvbmVudC4kJC5jb250ZXh0IDogW10pKSxcbiAgICAgICAgLy8gZXZlcnl0aGluZyBlbHNlXG4gICAgICAgIGNhbGxiYWNrczogYmxhbmtfb2JqZWN0KCksXG4gICAgICAgIGRpcnR5LFxuICAgICAgICBza2lwX2JvdW5kOiBmYWxzZSxcbiAgICAgICAgcm9vdDogb3B0aW9ucy50YXJnZXQgfHwgcGFyZW50X2NvbXBvbmVudC4kJC5yb290XG4gICAgfTtcbiAgICBhcHBlbmRfc3R5bGVzICYmIGFwcGVuZF9zdHlsZXMoJCQucm9vdCk7XG4gICAgbGV0IHJlYWR5ID0gZmFsc2U7XG4gICAgJCQuY3R4ID0gaW5zdGFuY2VcbiAgICAgICAgPyBpbnN0YW5jZShjb21wb25lbnQsIG9wdGlvbnMucHJvcHMgfHwge30sIChpLCByZXQsIC4uLnJlc3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcmVzdC5sZW5ndGggPyByZXN0WzBdIDogcmV0O1xuICAgICAgICAgICAgaWYgKCQkLmN0eCAmJiBub3RfZXF1YWwoJCQuY3R4W2ldLCAkJC5jdHhbaV0gPSB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoISQkLnNraXBfYm91bmQgJiYgJCQuYm91bmRbaV0pXG4gICAgICAgICAgICAgICAgICAgICQkLmJvdW5kW2ldKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAocmVhZHkpXG4gICAgICAgICAgICAgICAgICAgIG1ha2VfZGlydHkoY29tcG9uZW50LCBpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH0pXG4gICAgICAgIDogW107XG4gICAgJCQudXBkYXRlKCk7XG4gICAgcmVhZHkgPSB0cnVlO1xuICAgIHJ1bl9hbGwoJCQuYmVmb3JlX3VwZGF0ZSk7XG4gICAgLy8gYGZhbHNlYCBhcyBhIHNwZWNpYWwgY2FzZSBvZiBubyBET00gY29tcG9uZW50XG4gICAgJCQuZnJhZ21lbnQgPSBjcmVhdGVfZnJhZ21lbnQgPyBjcmVhdGVfZnJhZ21lbnQoJCQuY3R4KSA6IGZhbHNlO1xuICAgIGlmIChvcHRpb25zLnRhcmdldCkge1xuICAgICAgICBpZiAob3B0aW9ucy5oeWRyYXRlKSB7XG4gICAgICAgICAgICBzdGFydF9oeWRyYXRpbmcoKTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gY2hpbGRyZW4ob3B0aW9ucy50YXJnZXQpO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICAgICQkLmZyYWdtZW50ICYmICQkLmZyYWdtZW50Lmwobm9kZXMpO1xuICAgICAgICAgICAgbm9kZXMuZm9yRWFjaChkZXRhY2gpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICAgICQkLmZyYWdtZW50ICYmICQkLmZyYWdtZW50LmMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5pbnRybylcbiAgICAgICAgICAgIHRyYW5zaXRpb25faW4oY29tcG9uZW50LiQkLmZyYWdtZW50KTtcbiAgICAgICAgbW91bnRfY29tcG9uZW50KGNvbXBvbmVudCwgb3B0aW9ucy50YXJnZXQsIG9wdGlvbnMuYW5jaG9yLCBvcHRpb25zLmN1c3RvbUVsZW1lbnQpO1xuICAgICAgICBlbmRfaHlkcmF0aW5nKCk7XG4gICAgICAgIGZsdXNoKCk7XG4gICAgfVxuICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChwYXJlbnRfY29tcG9uZW50KTtcbn1cbmxldCBTdmVsdGVFbGVtZW50O1xuaWYgKHR5cGVvZiBIVE1MRWxlbWVudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIFN2ZWx0ZUVsZW1lbnQgPSBjbGFzcyBleHRlbmRzIEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgICAgICBzdXBlcigpO1xuICAgICAgICAgICAgdGhpcy5hdHRhY2hTaGFkb3coeyBtb2RlOiAnb3BlbicgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29ubmVjdGVkQ2FsbGJhY2soKSB7XG4gICAgICAgICAgICBjb25zdCB7IG9uX21vdW50IH0gPSB0aGlzLiQkO1xuICAgICAgICAgICAgdGhpcy4kJC5vbl9kaXNjb25uZWN0ID0gb25fbW91bnQubWFwKHJ1bikuZmlsdGVyKGlzX2Z1bmN0aW9uKTtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgdG9kbzogaW1wcm92ZSB0eXBpbmdzXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLiQkLnNsb3R0ZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIHRvZG86IGltcHJvdmUgdHlwaW5nc1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQodGhpcy4kJC5zbG90dGVkW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhhdHRyLCBfb2xkVmFsdWUsIG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzW2F0dHJdID0gbmV3VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZGlzY29ubmVjdGVkQ2FsbGJhY2soKSB7XG4gICAgICAgICAgICBydW5fYWxsKHRoaXMuJCQub25fZGlzY29ubmVjdCk7XG4gICAgICAgIH1cbiAgICAgICAgJGRlc3Ryb3koKSB7XG4gICAgICAgICAgICBkZXN0cm95X2NvbXBvbmVudCh0aGlzLCAxKTtcbiAgICAgICAgICAgIHRoaXMuJGRlc3Ryb3kgPSBub29wO1xuICAgICAgICB9XG4gICAgICAgICRvbih0eXBlLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgLy8gVE9ETyBzaG91bGQgdGhpcyBkZWxlZ2F0ZSB0byBhZGRFdmVudExpc3RlbmVyP1xuICAgICAgICAgICAgY29uc3QgY2FsbGJhY2tzID0gKHRoaXMuJCQuY2FsbGJhY2tzW3R5cGVdIHx8ICh0aGlzLiQkLmNhbGxiYWNrc1t0eXBlXSA9IFtdKSk7XG4gICAgICAgICAgICBjYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gY2FsbGJhY2tzLmluZGV4T2YoY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICAkc2V0KCQkcHJvcHMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLiQkc2V0ICYmICFpc19lbXB0eSgkJHByb3BzKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJCQuc2tpcF9ib3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy4kJHNldCgkJHByb3BzKTtcbiAgICAgICAgICAgICAgICB0aGlzLiQkLnNraXBfYm91bmQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG59XG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIFN2ZWx0ZSBjb21wb25lbnRzLiBVc2VkIHdoZW4gZGV2PWZhbHNlLlxuICovXG5jbGFzcyBTdmVsdGVDb21wb25lbnQge1xuICAgICRkZXN0cm95KCkge1xuICAgICAgICBkZXN0cm95X2NvbXBvbmVudCh0aGlzLCAxKTtcbiAgICAgICAgdGhpcy4kZGVzdHJveSA9IG5vb3A7XG4gICAgfVxuICAgICRvbih0eXBlLCBjYWxsYmFjaykge1xuICAgICAgICBjb25zdCBjYWxsYmFja3MgPSAodGhpcy4kJC5jYWxsYmFja3NbdHlwZV0gfHwgKHRoaXMuJCQuY2FsbGJhY2tzW3R5cGVdID0gW10pKTtcbiAgICAgICAgY2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBjYWxsYmFja3MuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKVxuICAgICAgICAgICAgICAgIGNhbGxiYWNrcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAkc2V0KCQkcHJvcHMpIHtcbiAgICAgICAgaWYgKHRoaXMuJCRzZXQgJiYgIWlzX2VtcHR5KCQkcHJvcHMpKSB7XG4gICAgICAgICAgICB0aGlzLiQkLnNraXBfYm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy4kJHNldCgkJHByb3BzKTtcbiAgICAgICAgICAgIHRoaXMuJCQuc2tpcF9ib3VuZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkaXNwYXRjaF9kZXYodHlwZSwgZGV0YWlsKSB7XG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21fZXZlbnQodHlwZSwgT2JqZWN0LmFzc2lnbih7IHZlcnNpb246ICczLjQ5LjAnIH0sIGRldGFpbCksIHsgYnViYmxlczogdHJ1ZSB9KSk7XG59XG5mdW5jdGlvbiBhcHBlbmRfZGV2KHRhcmdldCwgbm9kZSkge1xuICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NSW5zZXJ0JywgeyB0YXJnZXQsIG5vZGUgfSk7XG4gICAgYXBwZW5kKHRhcmdldCwgbm9kZSk7XG59XG5mdW5jdGlvbiBhcHBlbmRfaHlkcmF0aW9uX2Rldih0YXJnZXQsIG5vZGUpIHtcbiAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTUluc2VydCcsIHsgdGFyZ2V0LCBub2RlIH0pO1xuICAgIGFwcGVuZF9oeWRyYXRpb24odGFyZ2V0LCBub2RlKTtcbn1cbmZ1bmN0aW9uIGluc2VydF9kZXYodGFyZ2V0LCBub2RlLCBhbmNob3IpIHtcbiAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTUluc2VydCcsIHsgdGFyZ2V0LCBub2RlLCBhbmNob3IgfSk7XG4gICAgaW5zZXJ0KHRhcmdldCwgbm9kZSwgYW5jaG9yKTtcbn1cbmZ1bmN0aW9uIGluc2VydF9oeWRyYXRpb25fZGV2KHRhcmdldCwgbm9kZSwgYW5jaG9yKSB7XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01JbnNlcnQnLCB7IHRhcmdldCwgbm9kZSwgYW5jaG9yIH0pO1xuICAgIGluc2VydF9oeWRyYXRpb24odGFyZ2V0LCBub2RlLCBhbmNob3IpO1xufVxuZnVuY3Rpb24gZGV0YWNoX2Rldihub2RlKSB7XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01SZW1vdmUnLCB7IG5vZGUgfSk7XG4gICAgZGV0YWNoKG5vZGUpO1xufVxuZnVuY3Rpb24gZGV0YWNoX2JldHdlZW5fZGV2KGJlZm9yZSwgYWZ0ZXIpIHtcbiAgICB3aGlsZSAoYmVmb3JlLm5leHRTaWJsaW5nICYmIGJlZm9yZS5uZXh0U2libGluZyAhPT0gYWZ0ZXIpIHtcbiAgICAgICAgZGV0YWNoX2RldihiZWZvcmUubmV4dFNpYmxpbmcpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGRldGFjaF9iZWZvcmVfZGV2KGFmdGVyKSB7XG4gICAgd2hpbGUgKGFmdGVyLnByZXZpb3VzU2libGluZykge1xuICAgICAgICBkZXRhY2hfZGV2KGFmdGVyLnByZXZpb3VzU2libGluZyk7XG4gICAgfVxufVxuZnVuY3Rpb24gZGV0YWNoX2FmdGVyX2RldihiZWZvcmUpIHtcbiAgICB3aGlsZSAoYmVmb3JlLm5leHRTaWJsaW5nKSB7XG4gICAgICAgIGRldGFjaF9kZXYoYmVmb3JlLm5leHRTaWJsaW5nKTtcbiAgICB9XG59XG5mdW5jdGlvbiBsaXN0ZW5fZGV2KG5vZGUsIGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zLCBoYXNfcHJldmVudF9kZWZhdWx0LCBoYXNfc3RvcF9wcm9wYWdhdGlvbikge1xuICAgIGNvbnN0IG1vZGlmaWVycyA9IG9wdGlvbnMgPT09IHRydWUgPyBbJ2NhcHR1cmUnXSA6IG9wdGlvbnMgPyBBcnJheS5mcm9tKE9iamVjdC5rZXlzKG9wdGlvbnMpKSA6IFtdO1xuICAgIGlmIChoYXNfcHJldmVudF9kZWZhdWx0KVxuICAgICAgICBtb2RpZmllcnMucHVzaCgncHJldmVudERlZmF1bHQnKTtcbiAgICBpZiAoaGFzX3N0b3BfcHJvcGFnYXRpb24pXG4gICAgICAgIG1vZGlmaWVycy5wdXNoKCdzdG9wUHJvcGFnYXRpb24nKTtcbiAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTUFkZEV2ZW50TGlzdGVuZXInLCB7IG5vZGUsIGV2ZW50LCBoYW5kbGVyLCBtb2RpZmllcnMgfSk7XG4gICAgY29uc3QgZGlzcG9zZSA9IGxpc3Rlbihub2RlLCBldmVudCwgaGFuZGxlciwgb3B0aW9ucyk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01SZW1vdmVFdmVudExpc3RlbmVyJywgeyBub2RlLCBldmVudCwgaGFuZGxlciwgbW9kaWZpZXJzIH0pO1xuICAgICAgICBkaXNwb3NlKCk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGF0dHJfZGV2KG5vZGUsIGF0dHJpYnV0ZSwgdmFsdWUpIHtcbiAgICBhdHRyKG5vZGUsIGF0dHJpYnV0ZSwgdmFsdWUpO1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKVxuICAgICAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTVJlbW92ZUF0dHJpYnV0ZScsIHsgbm9kZSwgYXR0cmlidXRlIH0pO1xuICAgIGVsc2VcbiAgICAgICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01TZXRBdHRyaWJ1dGUnLCB7IG5vZGUsIGF0dHJpYnV0ZSwgdmFsdWUgfSk7XG59XG5mdW5jdGlvbiBwcm9wX2Rldihub2RlLCBwcm9wZXJ0eSwgdmFsdWUpIHtcbiAgICBub2RlW3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NU2V0UHJvcGVydHknLCB7IG5vZGUsIHByb3BlcnR5LCB2YWx1ZSB9KTtcbn1cbmZ1bmN0aW9uIGRhdGFzZXRfZGV2KG5vZGUsIHByb3BlcnR5LCB2YWx1ZSkge1xuICAgIG5vZGUuZGF0YXNldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTVNldERhdGFzZXQnLCB7IG5vZGUsIHByb3BlcnR5LCB2YWx1ZSB9KTtcbn1cbmZ1bmN0aW9uIHNldF9kYXRhX2Rldih0ZXh0LCBkYXRhKSB7XG4gICAgZGF0YSA9ICcnICsgZGF0YTtcbiAgICBpZiAodGV4dC53aG9sZVRleHQgPT09IGRhdGEpXG4gICAgICAgIHJldHVybjtcbiAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTVNldERhdGEnLCB7IG5vZGU6IHRleHQsIGRhdGEgfSk7XG4gICAgdGV4dC5kYXRhID0gZGF0YTtcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlX2VhY2hfYXJndW1lbnQoYXJnKSB7XG4gICAgaWYgKHR5cGVvZiBhcmcgIT09ICdzdHJpbmcnICYmICEoYXJnICYmIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIGFyZykpIHtcbiAgICAgICAgbGV0IG1zZyA9ICd7I2VhY2h9IG9ubHkgaXRlcmF0ZXMgb3ZlciBhcnJheS1saWtlIG9iamVjdHMuJztcbiAgICAgICAgaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgYXJnICYmIFN5bWJvbC5pdGVyYXRvciBpbiBhcmcpIHtcbiAgICAgICAgICAgIG1zZyArPSAnIFlvdSBjYW4gdXNlIGEgc3ByZWFkIHRvIGNvbnZlcnQgdGhpcyBpdGVyYWJsZSBpbnRvIGFuIGFycmF5Lic7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgfVxufVxuZnVuY3Rpb24gdmFsaWRhdGVfc2xvdHMobmFtZSwgc2xvdCwga2V5cykge1xuICAgIGZvciAoY29uc3Qgc2xvdF9rZXkgb2YgT2JqZWN0LmtleXMoc2xvdCkpIHtcbiAgICAgICAgaWYgKCF+a2V5cy5pbmRleE9mKHNsb3Rfa2V5KSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGA8JHtuYW1lfT4gcmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBzbG90IFwiJHtzbG90X2tleX1cIi5gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHZhbGlkYXRlX2R5bmFtaWNfZWxlbWVudCh0YWcpIHtcbiAgICBjb25zdCBpc19zdHJpbmcgPSB0eXBlb2YgdGFnID09PSAnc3RyaW5nJztcbiAgICBpZiAodGFnICYmICFpc19zdHJpbmcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCc8c3ZlbHRlOmVsZW1lbnQ+IGV4cGVjdHMgXCJ0aGlzXCIgYXR0cmlidXRlIHRvIGJlIGEgc3RyaW5nLicpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHZhbGlkYXRlX3ZvaWRfZHluYW1pY19lbGVtZW50KHRhZykge1xuICAgIGlmICh0YWcgJiYgaXNfdm9pZCh0YWcpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgPHN2ZWx0ZTplbGVtZW50IHRoaXM9XCIke3RhZ31cIj4gaXMgc2VsZi1jbG9zaW5nIGFuZCBjYW5ub3QgaGF2ZSBjb250ZW50LmApO1xuICAgIH1cbn1cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgU3ZlbHRlIGNvbXBvbmVudHMgd2l0aCBzb21lIG1pbm9yIGRldi1lbmhhbmNlbWVudHMuIFVzZWQgd2hlbiBkZXY9dHJ1ZS5cbiAqL1xuY2xhc3MgU3ZlbHRlQ29tcG9uZW50RGV2IGV4dGVuZHMgU3ZlbHRlQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIGlmICghb3B0aW9ucyB8fCAoIW9wdGlvbnMudGFyZ2V0ICYmICFvcHRpb25zLiQkaW5saW5lKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiJ3RhcmdldCcgaXMgYSByZXF1aXJlZCBvcHRpb25cIik7XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG4gICAgJGRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLiRkZXN0cm95KCk7XG4gICAgICAgIHRoaXMuJGRlc3Ryb3kgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0NvbXBvbmVudCB3YXMgYWxyZWFkeSBkZXN0cm95ZWQnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgICAgIH07XG4gICAgfVxuICAgICRjYXB0dXJlX3N0YXRlKCkgeyB9XG4gICAgJGluamVjdF9zdGF0ZSgpIHsgfVxufVxuLyoqXG4gKiBCYXNlIGNsYXNzIHRvIGNyZWF0ZSBzdHJvbmdseSB0eXBlZCBTdmVsdGUgY29tcG9uZW50cy5cbiAqIFRoaXMgb25seSBleGlzdHMgZm9yIHR5cGluZyBwdXJwb3NlcyBhbmQgc2hvdWxkIGJlIHVzZWQgaW4gYC5kLnRzYCBmaWxlcy5cbiAqXG4gKiAjIyMgRXhhbXBsZTpcbiAqXG4gKiBZb3UgaGF2ZSBjb21wb25lbnQgbGlicmFyeSBvbiBucG0gY2FsbGVkIGBjb21wb25lbnQtbGlicmFyeWAsIGZyb20gd2hpY2hcbiAqIHlvdSBleHBvcnQgYSBjb21wb25lbnQgY2FsbGVkIGBNeUNvbXBvbmVudGAuIEZvciBTdmVsdGUrVHlwZVNjcmlwdCB1c2VycyxcbiAqIHlvdSB3YW50IHRvIHByb3ZpZGUgdHlwaW5ncy4gVGhlcmVmb3JlIHlvdSBjcmVhdGUgYSBgaW5kZXguZC50c2A6XG4gKiBgYGB0c1xuICogaW1wb3J0IHsgU3ZlbHRlQ29tcG9uZW50VHlwZWQgfSBmcm9tIFwic3ZlbHRlXCI7XG4gKiBleHBvcnQgY2xhc3MgTXlDb21wb25lbnQgZXh0ZW5kcyBTdmVsdGVDb21wb25lbnRUeXBlZDx7Zm9vOiBzdHJpbmd9PiB7fVxuICogYGBgXG4gKiBUeXBpbmcgdGhpcyBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgSURFcyBsaWtlIFZTIENvZGUgd2l0aCB0aGUgU3ZlbHRlIGV4dGVuc2lvblxuICogdG8gcHJvdmlkZSBpbnRlbGxpc2Vuc2UgYW5kIHRvIHVzZSB0aGUgY29tcG9uZW50IGxpa2UgdGhpcyBpbiBhIFN2ZWx0ZSBmaWxlXG4gKiB3aXRoIFR5cGVTY3JpcHQ6XG4gKiBgYGBzdmVsdGVcbiAqIDxzY3JpcHQgbGFuZz1cInRzXCI+XG4gKiBcdGltcG9ydCB7IE15Q29tcG9uZW50IH0gZnJvbSBcImNvbXBvbmVudC1saWJyYXJ5XCI7XG4gKiA8L3NjcmlwdD5cbiAqIDxNeUNvbXBvbmVudCBmb289eydiYXInfSAvPlxuICogYGBgXG4gKlxuICogIyMjIyBXaHkgbm90IG1ha2UgdGhpcyBwYXJ0IG9mIGBTdmVsdGVDb21wb25lbnQoRGV2KWA/XG4gKiBCZWNhdXNlXG4gKiBgYGB0c1xuICogY2xhc3MgQVN1YmNsYXNzT2ZTdmVsdGVDb21wb25lbnQgZXh0ZW5kcyBTdmVsdGVDb21wb25lbnQ8e2Zvbzogc3RyaW5nfT4ge31cbiAqIGNvbnN0IGNvbXBvbmVudDogdHlwZW9mIFN2ZWx0ZUNvbXBvbmVudCA9IEFTdWJjbGFzc09mU3ZlbHRlQ29tcG9uZW50O1xuICogYGBgXG4gKiB3aWxsIHRocm93IGEgdHlwZSBlcnJvciwgc28gd2UgbmVlZCB0byBzZXBhcmF0ZSB0aGUgbW9yZSBzdHJpY3RseSB0eXBlZCBjbGFzcy5cbiAqL1xuY2xhc3MgU3ZlbHRlQ29tcG9uZW50VHlwZWQgZXh0ZW5kcyBTdmVsdGVDb21wb25lbnREZXYge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxufVxuZnVuY3Rpb24gbG9vcF9ndWFyZCh0aW1lb3V0KSB7XG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChEYXRlLm5vdygpIC0gc3RhcnQgPiB0aW1lb3V0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0luZmluaXRlIGxvb3AgZGV0ZWN0ZWQnKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbmV4cG9ydCB7IEh0bWxUYWcsIEh0bWxUYWdIeWRyYXRpb24sIFN2ZWx0ZUNvbXBvbmVudCwgU3ZlbHRlQ29tcG9uZW50RGV2LCBTdmVsdGVDb21wb25lbnRUeXBlZCwgU3ZlbHRlRWxlbWVudCwgYWN0aW9uX2Rlc3Ryb3llciwgYWRkX2F0dHJpYnV0ZSwgYWRkX2NsYXNzZXMsIGFkZF9mbHVzaF9jYWxsYmFjaywgYWRkX2xvY2F0aW9uLCBhZGRfcmVuZGVyX2NhbGxiYWNrLCBhZGRfcmVzaXplX2xpc3RlbmVyLCBhZGRfc3R5bGVzLCBhZGRfdHJhbnNmb3JtLCBhZnRlclVwZGF0ZSwgYXBwZW5kLCBhcHBlbmRfZGV2LCBhcHBlbmRfZW1wdHlfc3R5bGVzaGVldCwgYXBwZW5kX2h5ZHJhdGlvbiwgYXBwZW5kX2h5ZHJhdGlvbl9kZXYsIGFwcGVuZF9zdHlsZXMsIGFzc2lnbiwgYXR0ciwgYXR0cl9kZXYsIGF0dHJpYnV0ZV90b19vYmplY3QsIGJlZm9yZVVwZGF0ZSwgYmluZCwgYmluZGluZ19jYWxsYmFja3MsIGJsYW5rX29iamVjdCwgYnViYmxlLCBjaGVja19vdXRyb3MsIGNoaWxkcmVuLCBjbGFpbV9jb21wb25lbnQsIGNsYWltX2VsZW1lbnQsIGNsYWltX2h0bWxfdGFnLCBjbGFpbV9zcGFjZSwgY2xhaW1fc3ZnX2VsZW1lbnQsIGNsYWltX3RleHQsIGNsZWFyX2xvb3BzLCBjb21wb25lbnRfc3Vic2NyaWJlLCBjb21wdXRlX3Jlc3RfcHJvcHMsIGNvbXB1dGVfc2xvdHMsIGNyZWF0ZUV2ZW50RGlzcGF0Y2hlciwgY3JlYXRlX2FuaW1hdGlvbiwgY3JlYXRlX2JpZGlyZWN0aW9uYWxfdHJhbnNpdGlvbiwgY3JlYXRlX2NvbXBvbmVudCwgY3JlYXRlX2luX3RyYW5zaXRpb24sIGNyZWF0ZV9vdXRfdHJhbnNpdGlvbiwgY3JlYXRlX3Nsb3QsIGNyZWF0ZV9zc3JfY29tcG9uZW50LCBjdXJyZW50X2NvbXBvbmVudCwgY3VzdG9tX2V2ZW50LCBkYXRhc2V0X2RldiwgZGVidWcsIGRlc3Ryb3lfYmxvY2ssIGRlc3Ryb3lfY29tcG9uZW50LCBkZXN0cm95X2VhY2gsIGRldGFjaCwgZGV0YWNoX2FmdGVyX2RldiwgZGV0YWNoX2JlZm9yZV9kZXYsIGRldGFjaF9iZXR3ZWVuX2RldiwgZGV0YWNoX2RldiwgZGlydHlfY29tcG9uZW50cywgZGlzcGF0Y2hfZGV2LCBlYWNoLCBlbGVtZW50LCBlbGVtZW50X2lzLCBlbXB0eSwgZW5kX2h5ZHJhdGluZywgZXNjYXBlLCBlc2NhcGVfYXR0cmlidXRlX3ZhbHVlLCBlc2NhcGVfb2JqZWN0LCBleGNsdWRlX2ludGVybmFsX3Byb3BzLCBmaXhfYW5kX2Rlc3Ryb3lfYmxvY2ssIGZpeF9hbmRfb3V0cm9fYW5kX2Rlc3Ryb3lfYmxvY2ssIGZpeF9wb3NpdGlvbiwgZmx1c2gsIGdldEFsbENvbnRleHRzLCBnZXRDb250ZXh0LCBnZXRfYWxsX2RpcnR5X2Zyb21fc2NvcGUsIGdldF9iaW5kaW5nX2dyb3VwX3ZhbHVlLCBnZXRfY3VycmVudF9jb21wb25lbnQsIGdldF9jdXN0b21fZWxlbWVudHNfc2xvdHMsIGdldF9yb290X2Zvcl9zdHlsZSwgZ2V0X3Nsb3RfY2hhbmdlcywgZ2V0X3NwcmVhZF9vYmplY3QsIGdldF9zcHJlYWRfdXBkYXRlLCBnZXRfc3RvcmVfdmFsdWUsIGdsb2JhbHMsIGdyb3VwX291dHJvcywgaGFuZGxlX3Byb21pc2UsIGhhc0NvbnRleHQsIGhhc19wcm9wLCBpZGVudGl0eSwgaW5pdCwgaW5zZXJ0LCBpbnNlcnRfZGV2LCBpbnNlcnRfaHlkcmF0aW9uLCBpbnNlcnRfaHlkcmF0aW9uX2RldiwgaW50cm9zLCBpbnZhbGlkX2F0dHJpYnV0ZV9uYW1lX2NoYXJhY3RlciwgaXNfY2xpZW50LCBpc19jcm9zc29yaWdpbiwgaXNfZW1wdHksIGlzX2Z1bmN0aW9uLCBpc19wcm9taXNlLCBpc192b2lkLCBsaXN0ZW4sIGxpc3Rlbl9kZXYsIGxvb3AsIGxvb3BfZ3VhcmQsIG1lcmdlX3Nzcl9zdHlsZXMsIG1pc3NpbmdfY29tcG9uZW50LCBtb3VudF9jb21wb25lbnQsIG5vb3AsIG5vdF9lcXVhbCwgbm93LCBudWxsX3RvX2VtcHR5LCBvYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzLCBvbkRlc3Ryb3ksIG9uTW91bnQsIG9uY2UsIG91dHJvX2FuZF9kZXN0cm95X2Jsb2NrLCBwcmV2ZW50X2RlZmF1bHQsIHByb3BfZGV2LCBxdWVyeV9zZWxlY3Rvcl9hbGwsIHJhZiwgcnVuLCBydW5fYWxsLCBzYWZlX25vdF9lcXVhbCwgc2NoZWR1bGVfdXBkYXRlLCBzZWxlY3RfbXVsdGlwbGVfdmFsdWUsIHNlbGVjdF9vcHRpb24sIHNlbGVjdF9vcHRpb25zLCBzZWxlY3RfdmFsdWUsIHNlbGYsIHNldENvbnRleHQsIHNldF9hdHRyaWJ1dGVzLCBzZXRfY3VycmVudF9jb21wb25lbnQsIHNldF9jdXN0b21fZWxlbWVudF9kYXRhLCBzZXRfZGF0YSwgc2V0X2RhdGFfZGV2LCBzZXRfaW5wdXRfdHlwZSwgc2V0X2lucHV0X3ZhbHVlLCBzZXRfbm93LCBzZXRfcmFmLCBzZXRfc3RvcmVfdmFsdWUsIHNldF9zdHlsZSwgc2V0X3N2Z19hdHRyaWJ1dGVzLCBzcGFjZSwgc3ByZWFkLCBzcmNfdXJsX2VxdWFsLCBzdGFydF9oeWRyYXRpbmcsIHN0b3BfcHJvcGFnYXRpb24sIHN1YnNjcmliZSwgc3ZnX2VsZW1lbnQsIHRleHQsIHRpY2ssIHRpbWVfcmFuZ2VzX3RvX2FycmF5LCB0b19udW1iZXIsIHRvZ2dsZV9jbGFzcywgdHJhbnNpdGlvbl9pbiwgdHJhbnNpdGlvbl9vdXQsIHRydXN0ZWQsIHVwZGF0ZV9hd2FpdF9ibG9ja19icmFuY2gsIHVwZGF0ZV9rZXllZF9lYWNoLCB1cGRhdGVfc2xvdCwgdXBkYXRlX3Nsb3RfYmFzZSwgdmFsaWRhdGVfY29tcG9uZW50LCB2YWxpZGF0ZV9keW5hbWljX2VsZW1lbnQsIHZhbGlkYXRlX2VhY2hfYXJndW1lbnQsIHZhbGlkYXRlX2VhY2hfa2V5cywgdmFsaWRhdGVfc2xvdHMsIHZhbGlkYXRlX3N0b3JlLCB2YWxpZGF0ZV92b2lkX2R5bmFtaWNfZWxlbWVudCwgeGxpbmtfYXR0ciB9O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgY3JlYXRlRXZlbnREaXNwYXRjaGVyIH0gZnJvbSBcInN2ZWx0ZVwiO1xuXG4gIGV4cG9ydCBsZXQgcG9wdXA6IHN0cmluZztcbiAgZXhwb3J0IGxldCBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0IGRpc3BhdGNoZXIgPSBjcmVhdGVFdmVudERpc3BhdGNoZXIoKTtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2hlcihcImNsaWNrXCIpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjxidXR0b25cbiAgYXJpYS1sYWJlbD17cG9wdXB9XG4gIGNsYXNzOm1vZC1jdGE9eyFkaXNhYmxlZH1cbiAge2Rpc2FibGVkfVxuICBvbjpjbGljaz17aGFuZGxlQ2xpY2t9XG4+XG4gIDxzbG90IC8+XG48L2J1dHRvbj5cbiIsIjxzY3JpcHQ+XG4gIGV4cG9ydCBsZXQgc2l6ZSA9IDI0XG48L3NjcmlwdD5cbjxzdmdcbiAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gIHdpZHRoPXtzaXplfVxuICBoZWlnaHQ9e3NpemV9XG4gIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICBmaWxsPVwibm9uZVwiXG4gIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gIHN0cm9rZS13aWR0aD1cIjJcIlxuICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICB7Li4uJCRyZXN0UHJvcHN9XG4+XG4gIDxzbG90IC8+XG4gIDxwYXRoIGQ9XCJNMTQuNSAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWNy41TDE0LjUgMnpcIiAvPlxuICA8cG9seWxpbmUgcG9pbnRzPVwiMTQgMiAxNCA4IDIwIDhcIiAvPlxuPC9zdmc+IiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgY3JlYXRlRXZlbnREaXNwYXRjaGVyIH0gZnJvbSBcInN2ZWx0ZVwiO1xuXG4gIGV4cG9ydCBsZXQgcG9wdXA6IHN0cmluZztcbiAgZXhwb3J0IGxldCBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0IGRpc3BhdGNoZXIgPSBjcmVhdGVFdmVudERpc3BhdGNoZXIoKTtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgZGlzcGF0Y2hlcihcImNsaWNrXCIpO1xuICAgIH1cbiAgfTtcbjwvc2NyaXB0PlxuXG48ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICA8YnV0dG9uXG4gICAgYXJpYS1sYWJlbD17cG9wdXB9XG4gICAge2Rpc2FibGVkfVxuICAgIG9uOmNsaWNrPXtoYW5kbGVDbGlja31cbiAgICBjbGFzcz17ZGlzYWJsZWQgPyBcImJ1dHRvbi1kaXNhYmxlZFwiIDogXCJidXR0b24tZW5hYmxlZFwifVxuICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IHBhZGRpbmc6IDBcIlxuICA+XG4gICAgPHNsb3QgLz5cbiAgPC9idXR0b24+XG48L2Rpdj5cblxuPHN0eWxlPlxuICAud3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgLmJ1dHRvbi1lbmFibGVkOmhvdmVyIHtcbiAgICAvKm5vaW5zcGVjdGlvbiBDc3NVbnJlc29sdmVkQ3VzdG9tUHJvcGVydHkqL1xuICAgIGNvbG9yOiB2YXIoLS1pbnRlcmFjdGl2ZS1hY2NlbnQpO1xuICB9XG4gIC5idXR0b24tZGlzYWJsZWQge1xuICAgIC8qbm9pbnNwZWN0aW9uIENzc1VucmVzb2x2ZWRDdXN0b21Qcm9wZXJ0eSovXG4gICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICB9XG48L3N0eWxlPlxuIiwiPCEtLXN1cHByZXNzIExhYmVsZWRTdGF0ZW1lbnRKUyAtLT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIGltcG9ydCBPYnNpZGlhbkJ1dHRvbiBmcm9tIFwiLi9PYnNpZGlhbkJ1dHRvbi5zdmVsdGVcIjtcbiAgaW1wb3J0IHsgRmlsZSB9IGZyb20gXCJzdmVsdGUtbHVjaWRlLWljb25zXCI7XG4gIGltcG9ydCBPYnNpZGlhbkljb25CdXR0b24gZnJvbSBcIi4vT2JzaWRpYW5JY29uQnV0dG9uLnN2ZWx0ZVwiO1xuICBpbXBvcnQgdHlwZSB7IEN1c3RvbURpY3Rpb25hcnlXb3JkIH0gZnJvbSBcIi4uLy4uL21vZGVsL1dvcmRcIjtcbiAgaW1wb3J0IHsgb25Nb3VudCB9IGZyb20gXCJzdmVsdGVcIjtcblxuICB0eXBlIERpY3Rpb25hcnkgPSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBwYXRoOiBzdHJpbmc7XG4gIH07XG5cbiAgZXhwb3J0IGxldCBkaWN0aW9uYXJpZXM6IERpY3Rpb25hcnlbXTtcbiAgZXhwb3J0IGxldCBzZWxlY3RlZERpY3Rpb25hcnk6IERpY3Rpb25hcnk7XG4gIGV4cG9ydCBsZXQgaW5wdXRXb3JkOiBzdHJpbmcgPSBcIlwiO1xuICBleHBvcnQgbGV0IHVzZURpc3BsYXllZFdvcmQgPSBmYWxzZTtcbiAgZXhwb3J0IGxldCBkaXNwbGF5ZWRXb3JkOiBzdHJpbmcgPSBcIlwiO1xuICBleHBvcnQgbGV0IGRlc2NyaXB0aW9uOiBzdHJpbmcgPSBcIlwiO1xuICBleHBvcnQgbGV0IGFsaWFzZXM6IHN0cmluZ1tdID0gW107XG4gIGV4cG9ydCBsZXQgZGl2aWRlckZvckRpc3BsYXkgPSBcIlwiO1xuXG4gIGV4cG9ydCBsZXQgb25TdWJtaXQ6IChcbiAgICBkaWN0aW9uYXJ5UGF0aDogc3RyaW5nLFxuICAgIHdvcmQ6IEN1c3RvbURpY3Rpb25hcnlXb3JkXG4gICkgPT4gdm9pZDtcbiAgZXhwb3J0IGxldCBvbkNsaWNrRmlsZUljb246IChkaWN0aW9uYXJ5UGF0aDogc3RyaW5nKSA9PiB2b2lkO1xuXG4gIGxldCBhbGlhc2VzU3RyID0gYWxpYXNlcy5qb2luKFwiXFxuXCIpO1xuICBsZXQgd29yZFJlZiA9IG51bGw7XG4gIGxldCBkaXNwbGF5ZWRXb3JkUmVmID0gbnVsbDtcblxuICAkOiBlbmFibGVTdWJtaXQgPSBpbnB1dFdvcmQubGVuZ3RoID4gMDtcbiAgJDogZW5hYmxlRGlzcGxheWVkV29yZCA9IEJvb2xlYW4oZGl2aWRlckZvckRpc3BsYXkpO1xuICAkOiBmaXJzdFdvcmRUaXRsZSA9IHVzZURpc3BsYXllZFdvcmQgPyBcIkluc2VydGVkIHdvcmRcIiA6IFwiV29yZFwiO1xuICAkOiB7XG4gICAgaWYgKHVzZURpc3BsYXllZFdvcmQpIHtcbiAgICAgIGRpc3BsYXllZFdvcmRSZWY/LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0ID0gKCkgPT4ge1xuICAgIG9uU3VibWl0KHNlbGVjdGVkRGljdGlvbmFyeS5wYXRoLCB7XG4gICAgICB2YWx1ZTogZGlzcGxheWVkV29yZCB8fCBpbnB1dFdvcmQsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIGFsaWFzZXM6IGFsaWFzZXNTdHIuc3BsaXQoXCJcXG5cIiksXG4gICAgICB0eXBlOiBcImN1c3RvbURpY3Rpb25hcnlcIixcbiAgICAgIGNyZWF0ZWRQYXRoOiBzZWxlY3RlZERpY3Rpb25hcnkucGF0aCxcbiAgICAgIGluc2VydGVkVGV4dDogZGlzcGxheWVkV29yZCA/IGlucHV0V29yZCA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfTtcblxuICBvbk1vdW50KCgpID0+IHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHdvcmRSZWYuZm9jdXMoKSwgNTApO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48ZGl2PlxuICA8aDI+QWRkIGEgd29yZCB0byBhIGN1c3RvbSBkaWN0aW9uYXJ5PC9oMj5cblxuICA8aDM+RGljdGlvbmFyeTwvaDM+XG4gIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBnYXA6IDEwcHhcIj5cbiAgICA8c2VsZWN0IGJpbmQ6dmFsdWU9e3NlbGVjdGVkRGljdGlvbmFyeX0gY2xhc3M9XCJkcm9wZG93blwiPlxuICAgICAgeyNlYWNoIGRpY3Rpb25hcmllcyBhcyBkaWN0aW9uYXJ5fVxuICAgICAgICA8b3B0aW9uIHZhbHVlPXtkaWN0aW9uYXJ5fT5cbiAgICAgICAgICB7ZGljdGlvbmFyeS5wYXRofVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgIHsvZWFjaH1cbiAgICA8L3NlbGVjdD5cbiAgICA8T2JzaWRpYW5JY29uQnV0dG9uXG4gICAgICBwb3B1cD1cIk9wZW4gdGhlIGZpbGVcIlxuICAgICAgb246Y2xpY2s9eygpID0+IG9uQ2xpY2tGaWxlSWNvbihzZWxlY3RlZERpY3Rpb25hcnkucGF0aCl9XG4gICAgPlxuICAgICAgPEZpbGUgLz5cbiAgICA8L09ic2lkaWFuSWNvbkJ1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGgzPntmaXJzdFdvcmRUaXRsZX08L2gzPlxuICA8dGV4dGFyZWFcbiAgICBiaW5kOnZhbHVlPXtpbnB1dFdvcmR9XG4gICAgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIlxuICAgIHJvd3M9XCIzXCJcbiAgICBiaW5kOnRoaXM9e3dvcmRSZWZ9XG4gIC8+XG5cbiAgeyNpZiBlbmFibGVEaXNwbGF5ZWRXb3JkfVxuICAgIDxsYWJlbD5cbiAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBiaW5kOmNoZWNrZWQ9e3VzZURpc3BsYXllZFdvcmR9IC8+XG4gICAgICBEaXN0aW5ndWlzaCBiZXR3ZWVuIGRpc3BsYXkgYW5kIGluc2VydGlvblxuICAgIDwvbGFiZWw+XG4gIHsvaWZ9XG5cbiAgeyNpZiB1c2VEaXNwbGF5ZWRXb3JkfVxuICAgIDxoMz5EaXNwbGF5ZWQgV29yZDwvaDM+XG4gICAgPHRleHRhcmVhXG4gICAgICBiaW5kOnZhbHVlPXtkaXNwbGF5ZWRXb3JkfVxuICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIlxuICAgICAgcm93cz1cIjNcIlxuICAgICAgYmluZDp0aGlzPXtkaXNwbGF5ZWRXb3JkUmVmfVxuICAgIC8+XG4gIHsvaWZ9XG5cbiAgPGgzPkRlc2NyaXB0aW9uPC9oMz5cbiAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgYmluZDp2YWx1ZT17ZGVzY3JpcHRpb259IHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgLz5cblxuICA8aDM+QWxpYXNlcyAoZm9yIGVhY2ggbGluZSk8L2gzPlxuICA8dGV4dGFyZWEgYmluZDp2YWx1ZT17YWxpYXNlc1N0cn0gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiByb3dzPVwiM1wiIC8+XG5cbiAgPGRpdiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgd2lkdGg6IDEwMCU7IHBhZGRpbmctdG9wOiAxNXB4O1wiPlxuICAgIDxPYnNpZGlhbkJ1dHRvbiBkaXNhYmxlZD17IWVuYWJsZVN1Ym1pdH0gb246Y2xpY2s9e2hhbmRsZVN1Ym1pdH1cbiAgICAgID5TdWJtaXQ8L09ic2lkaWFuQnV0dG9uXG4gICAgPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48c3R5bGU+XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgQXBwLCBNb2RhbCwgTm90aWNlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBBcHBIZWxwZXIgfSBmcm9tIFwiLi4vYXBwLWhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21EaWN0aW9uYXJ5V29yZCB9IGZyb20gXCIuLi9tb2RlbC9Xb3JkXCI7XG5pbXBvcnQgQ3VzdG9tRGljdGlvbmFyeVdvcmRBZGQgZnJvbSBcIi4vY29tcG9uZW50L0N1c3RvbURpY3Rpb25hcnlXb3JkQWRkLnN2ZWx0ZVwiO1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tRGljdGlvbmFyeVdvcmRBZGRNb2RhbCBleHRlbmRzIE1vZGFsIHtcbiAgY29tcG9uZW50OiBDdXN0b21EaWN0aW9uYXJ5V29yZEFkZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhcHA6IEFwcCxcbiAgICBkaWN0aW9uYXJ5UGF0aHM6IHN0cmluZ1tdLFxuICAgIGluaXRpYWxWYWx1ZTogc3RyaW5nID0gXCJcIixcbiAgICBkaXZpZGVyRm9yRGlzcGxheTogc3RyaW5nID0gXCJcIixcbiAgICBvblN1Ym1pdDogKGRpY3Rpb25hcnlQYXRoOiBzdHJpbmcsIHdvcmQ6IEN1c3RvbURpY3Rpb25hcnlXb3JkKSA9PiB2b2lkXG4gICkge1xuICAgIHN1cGVyKGFwcCk7XG4gICAgY29uc3QgYXBwSGVscGVyID0gbmV3IEFwcEhlbHBlcihhcHApO1xuXG4gICAgY29uc3QgZGljdGlvbmFyaWVzID0gZGljdGlvbmFyeVBhdGhzLm1hcCgoeCkgPT4gKHsgaWQ6IHgsIHBhdGg6IHggfSkpO1xuXG4gICAgY29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XG4gICAgdGhpcy5jb21wb25lbnQgPSBuZXcgQ3VzdG9tRGljdGlvbmFyeVdvcmRBZGQoe1xuICAgICAgdGFyZ2V0OiBjb250ZW50RWwsXG4gICAgICBwcm9wczoge1xuICAgICAgICBkaWN0aW9uYXJpZXMsXG4gICAgICAgIHNlbGVjdGVkRGljdGlvbmFyeTogZGljdGlvbmFyaWVzWzBdLFxuICAgICAgICBpbnB1dFdvcmQ6IGluaXRpYWxWYWx1ZSxcbiAgICAgICAgZGl2aWRlckZvckRpc3BsYXksXG4gICAgICAgIG9uU3VibWl0LFxuICAgICAgICBvbkNsaWNrRmlsZUljb246IChkaWN0aW9uYXJ5UGF0aDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgY29uc3QgbWFya2Rvd25GaWxlID0gYXBwSGVscGVyLmdldE1hcmtkb3duRmlsZUJ5UGF0aChkaWN0aW9uYXJ5UGF0aCk7XG4gICAgICAgICAgaWYgKCFtYXJrZG93bkZpbGUpIHtcbiAgICAgICAgICAgIC8vIG5vaW5zcGVjdGlvbiBPYmplY3RBbGxvY2F0aW9uSWdub3JlZFxuICAgICAgICAgICAgbmV3IE5vdGljZShgQ2FuJ3Qgb3BlbiAke2RpY3Rpb25hcnlQYXRofWApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICBhcHBIZWxwZXIub3Blbk1hcmtkb3duRmlsZShtYXJrZG93bkZpbGUsIHRydWUpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uQ2xvc2UoKSB7XG4gICAgc3VwZXIub25DbG9zZSgpO1xuICAgIHRoaXMuY29tcG9uZW50LiRkZXN0cm95KCk7XG4gIH1cbn1cbiIsImltcG9ydCB7IGRlYm91bmNlLCBOb3RpY2UsIFBsdWdpbiB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgQXV0b0NvbXBsZXRlU3VnZ2VzdCB9IGZyb20gXCIuL3VpL0F1dG9Db21wbGV0ZVN1Z2dlc3RcIjtcbmltcG9ydCB7XG4gIERFRkFVTFRfU0VUVElOR1MsXG4gIHR5cGUgU2V0dGluZ3MsXG4gIFZhcmlvdXNDb21wbGVtZW50c1NldHRpbmdUYWIsXG59IGZyb20gXCIuL3NldHRpbmcvc2V0dGluZ3NcIjtcbmltcG9ydCB7IEFwcEhlbHBlciB9IGZyb20gXCIuL2FwcC1oZWxwZXJcIjtcbmltcG9ydCB7IFByb3ZpZGVyU3RhdHVzQmFyIH0gZnJvbSBcIi4vdWkvUHJvdmlkZXJTdGF0dXNCYXJcIjtcbmltcG9ydCB7IEN1c3RvbURpY3Rpb25hcnlXb3JkQWRkTW9kYWwgfSBmcm9tIFwiLi91aS9DdXN0b21EaWN0aW9uYXJ5V29yZEFkZE1vZGFsXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZhcmlvdXNDb21wb25lbnRzIGV4dGVuZHMgUGx1Z2luIHtcbiAgYXBwSGVscGVyOiBBcHBIZWxwZXI7XG4gIHNldHRpbmdzOiBTZXR0aW5ncztcbiAgc2V0dGluZ1RhYjogVmFyaW91c0NvbXBsZW1lbnRzU2V0dGluZ1RhYjtcbiAgc3VnZ2VzdGVyOiBBdXRvQ29tcGxldGVTdWdnZXN0O1xuICBzdGF0dXNCYXI/OiBQcm92aWRlclN0YXR1c0JhcjtcblxuICBvbnVubG9hZCgpIHtcbiAgICBzdXBlci5vbnVubG9hZCgpO1xuICAgIHRoaXMuc3VnZ2VzdGVyLnVucmVnaXN0ZXIoKTtcbiAgfVxuXG4gIGFzeW5jIG9ubG9hZCgpIHtcbiAgICB0aGlzLmFwcEhlbHBlciA9IG5ldyBBcHBIZWxwZXIodGhpcy5hcHApO1xuXG4gICAgdGhpcy5yZWdpc3RlckV2ZW50KFxuICAgICAgdGhpcy5hcHAud29ya3NwYWNlLm9uKFwiZWRpdG9yLW1lbnVcIiwgKG1lbnUpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmFwcEhlbHBlci5nZXRTZWxlY3Rpb24oKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIG1lbnUuYWRkSXRlbSgoaXRlbSkgPT5cbiAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAuc2V0VGl0bGUoXCJBZGQgdG8gY3VzdG9tIGRpY3Rpb25hcnlcIilcbiAgICAgICAgICAgIC5zZXRJY29uKFwic3RhY2tlZC1sZXZlbHNcIilcbiAgICAgICAgICAgIC5vbkNsaWNrKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5hZGRXb3JkVG9DdXN0b21EaWN0aW9uYXJ5KCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgYXdhaXQgdGhpcy5sb2FkU2V0dGluZ3MoKTtcblxuICAgIHRoaXMuc2V0dGluZ1RhYiA9IG5ldyBWYXJpb3VzQ29tcGxlbWVudHNTZXR0aW5nVGFiKHRoaXMuYXBwLCB0aGlzKTtcbiAgICB0aGlzLmFkZFNldHRpbmdUYWIodGhpcy5zZXR0aW5nVGFiKTtcblxuICAgIHRoaXMuc3RhdHVzQmFyID0gUHJvdmlkZXJTdGF0dXNCYXIubmV3KFxuICAgICAgdGhpcy5hZGRTdGF0dXNCYXJJdGVtKCksXG4gICAgICB0aGlzLnNldHRpbmdzLnNob3dNYXRjaFN0cmF0ZWd5LFxuICAgICAgdGhpcy5zZXR0aW5ncy5zaG93SW5kZXhpbmdTdGF0dXMsXG4gICAgICB0aGlzLnNldHRpbmdzLnNob3dDb21wbGVtZW50QXV0b21hdGljYWxseVxuICAgICk7XG4gICAgdGhpcy5zdGF0dXNCYXIuc2V0T25DbGlja1N0cmF0ZWd5TGlzdGVuZXIoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5zZXR0aW5nVGFiLnRvZ2dsZU1hdGNoU3RyYXRlZ3koKTtcbiAgICB9KTtcbiAgICB0aGlzLnN0YXR1c0Jhci5zZXRPbkNsaWNrQ29tcGxlbWVudEF1dG9tYXRpY2FsbHkoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5zZXR0aW5nVGFiLnRvZ2dsZUNvbXBsZW1lbnRBdXRvbWF0aWNhbGx5KCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBkZWJvdW5jZWRTYXZlRGF0YSA9IGRlYm91bmNlKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XG4gICAgfSwgNTAwMCk7XG5cbiAgICB0aGlzLnN1Z2dlc3RlciA9IGF3YWl0IEF1dG9Db21wbGV0ZVN1Z2dlc3QubmV3KFxuICAgICAgdGhpcy5hcHAsXG4gICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgdGhpcy5zdGF0dXNCYXIsXG4gICAgICBkZWJvdW5jZWRTYXZlRGF0YVxuICAgICk7XG4gICAgdGhpcy5yZWdpc3RlckVkaXRvclN1Z2dlc3QodGhpcy5zdWdnZXN0ZXIpO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcInJlbG9hZC1jdXN0b20tZGljdGlvbmFyaWVzXCIsXG4gICAgICBuYW1lOiBcIlJlbG9hZCBjdXN0b20gZGljdGlvbmFyaWVzXCIsXG4gICAgICBob3RrZXlzOiBbeyBtb2RpZmllcnM6IFtcIk1vZFwiLCBcIlNoaWZ0XCJdLCBrZXk6IFwiclwiIH1dLFxuICAgICAgY2FsbGJhY2s6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5zdWdnZXN0ZXIucmVmcmVzaEN1c3RvbURpY3Rpb25hcnlUb2tlbnMoKTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwicmVsb2FkLWN1cnJlbnQtdmF1bHRcIixcbiAgICAgIG5hbWU6IFwiUmVsb2FkIGN1cnJlbnQgdmF1bHRcIixcbiAgICAgIGNhbGxiYWNrOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuc3VnZ2VzdGVyLnJlZnJlc2hDdXJyZW50VmF1bHRUb2tlbnMoKTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwidG9nZ2xlLW1hdGNoLXN0cmF0ZWd5XCIsXG4gICAgICBuYW1lOiBcIlRvZ2dsZSBNYXRjaCBzdHJhdGVneVwiLFxuICAgICAgY2FsbGJhY2s6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5zZXR0aW5nVGFiLnRvZ2dsZU1hdGNoU3RyYXRlZ3koKTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwidG9nZ2xlLWNvbXBsZW1lbnQtYXV0b21hdGljYWxseVwiLFxuICAgICAgbmFtZTogXCJUb2dnbGUgQ29tcGxlbWVudCBhdXRvbWF0aWNhbGx5XCIsXG4gICAgICBjYWxsYmFjazogYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdUYWIudG9nZ2xlQ29tcGxlbWVudEF1dG9tYXRpY2FsbHkoKTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwic2hvdy1zdWdnZXN0aW9uc1wiLFxuICAgICAgbmFtZTogXCJTaG93IHN1Z2dlc3Rpb25zXCIsXG4gICAgICBob3RrZXlzOiBbeyBtb2RpZmllcnM6IFtcIk1vZFwiXSwga2V5OiBcIiBcIiB9XSxcbiAgICAgIGNhbGxiYWNrOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIHRoaXMuc3VnZ2VzdGVyLnRyaWdnZXJDb21wbGV0ZSgpO1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogXCJhZGQtd29yZC1jdXN0b20tZGljdGlvbmFyeVwiLFxuICAgICAgbmFtZTogXCJBZGQgYSB3b3JkIHRvIGEgY3VzdG9tIGRpY3Rpb25hcnlcIixcbiAgICAgIGhvdGtleXM6IFt7IG1vZGlmaWVyczogW1wiTW9kXCIsIFwiU2hpZnRcIl0sIGtleTogXCIgXCIgfV0sXG4gICAgICBjYWxsYmFjazogYXN5bmMgKCkgPT4ge1xuICAgICAgICB0aGlzLmFkZFdvcmRUb0N1c3RvbURpY3Rpb25hcnkoKTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwicHJlZGljdGFibGUtY29tcGxlbWVudHNcIixcbiAgICAgIG5hbWU6IFwiUHJlZGljdGFibGUgY29tcGxlbWVudFwiLFxuICAgICAgY2FsbGJhY2s6IGFzeW5jICgpID0+IHtcbiAgICAgICAgdGhpcy5zdWdnZXN0ZXIucHJlZGljdGFibGVDb21wbGV0ZSgpO1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogXCJjb3B5LXBsdWdpbi1zZXR0aW5nc1wiLFxuICAgICAgbmFtZTogXCJDb3B5IHBsdWdpbiBzZXR0aW5nc1wiLFxuICAgICAgY2FsbGJhY2s6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoXG4gICAgICAgICAgdGhpcy5zZXR0aW5nVGFiLmdldFBsdWdpblNldHRpbmdzQXNKc29uU3RyaW5nKClcbiAgICAgICAgKTtcbiAgICAgICAgLy8gbm9pbnNwZWN0aW9uIE9iamVjdEFsbG9jYXRpb25JZ25vcmVkXG4gICAgICAgIG5ldyBOb3RpY2UoXCJDb3B5IHNldHRpbmdzIG9mIFZhcmlvdXMgQ29tcGxlbWVudHNcIik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbG9hZFNldHRpbmdzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc2V0dGluZ3MgPSB7IC4uLkRFRkFVTFRfU0VUVElOR1MsIC4uLihhd2FpdCB0aGlzLmxvYWREYXRhKCkpIH07XG4gIH1cblxuICBhc3luYyBzYXZlU2V0dGluZ3MoXG4gICAgbmVlZFVwZGF0ZVRva2Vuczoge1xuICAgICAgY3VycmVudEZpbGU/OiBib29sZWFuO1xuICAgICAgY3VycmVudFZhdWx0PzogYm9vbGVhbjtcbiAgICAgIGN1c3RvbURpY3Rpb25hcnk/OiBib29sZWFuO1xuICAgICAgaW50ZXJuYWxMaW5rPzogYm9vbGVhbjtcbiAgICAgIGZyb250TWF0dGVyPzogYm9vbGVhbjtcbiAgICB9ID0ge31cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcbiAgICBhd2FpdCB0aGlzLnN1Z2dlc3Rlci51cGRhdGVTZXR0aW5ncyh0aGlzLnNldHRpbmdzKTtcbiAgICBpZiAobmVlZFVwZGF0ZVRva2Vucy5jdXJyZW50RmlsZSkge1xuICAgICAgYXdhaXQgdGhpcy5zdWdnZXN0ZXIucmVmcmVzaEN1cnJlbnRGaWxlVG9rZW5zKCk7XG4gICAgfVxuICAgIGlmIChuZWVkVXBkYXRlVG9rZW5zLmN1cnJlbnRWYXVsdCkge1xuICAgICAgYXdhaXQgdGhpcy5zdWdnZXN0ZXIucmVmcmVzaEN1cnJlbnRWYXVsdFRva2VucygpO1xuICAgIH1cbiAgICBpZiAobmVlZFVwZGF0ZVRva2Vucy5jdXN0b21EaWN0aW9uYXJ5KSB7XG4gICAgICBhd2FpdCB0aGlzLnN1Z2dlc3Rlci5yZWZyZXNoQ3VzdG9tRGljdGlvbmFyeVRva2VucygpO1xuICAgIH1cbiAgICBpZiAobmVlZFVwZGF0ZVRva2Vucy5pbnRlcm5hbExpbmspIHtcbiAgICAgIGF3YWl0IHRoaXMuc3VnZ2VzdGVyLnJlZnJlc2hJbnRlcm5hbExpbmtUb2tlbnMoKTtcbiAgICB9XG4gICAgaWYgKG5lZWRVcGRhdGVUb2tlbnMuZnJvbnRNYXR0ZXIpIHtcbiAgICAgIGF3YWl0IHRoaXMuc3VnZ2VzdGVyLnJlZnJlc2hGcm9udE1hdHRlclRva2VucygpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFdvcmRUb0N1c3RvbURpY3Rpb25hcnkoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRXb3JkID0gdGhpcy5hcHBIZWxwZXIuZ2V0U2VsZWN0aW9uKCk7XG4gICAgY29uc3QgcHJvdmlkZXIgPSB0aGlzLnN1Z2dlc3Rlci5jdXN0b21EaWN0aW9uYXJ5V29yZFByb3ZpZGVyO1xuICAgIGNvbnN0IG1vZGFsID0gbmV3IEN1c3RvbURpY3Rpb25hcnlXb3JkQWRkTW9kYWwoXG4gICAgICB0aGlzLmFwcCxcbiAgICAgIHByb3ZpZGVyLmVkaXRhYmxlUGF0aHMsXG4gICAgICBzZWxlY3RlZFdvcmQsXG4gICAgICB0aGlzLnNldHRpbmdzLmRlbGltaXRlclRvRGl2aWRlU3VnZ2VzdGlvbnNGb3JEaXNwbGF5RnJvbUluc2VydGlvbixcbiAgICAgIGFzeW5jIChkaWN0aW9uYXJ5UGF0aCwgX3dvcmQpID0+IHtcbiAgICAgICAgLy8gVE9ETzogSWYgc3VwcG9ydCBmb3IgSlNPTiwgdGhpcyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHdvcmsgY29ycmVjdGx5XG4gICAgICAgIGNvbnN0IHdvcmQgPSB7XG4gICAgICAgICAgLi4uX3dvcmQsXG4gICAgICAgICAgY2FyZXRTeW1ib2w6IHRoaXMuc2V0dGluZ3MuY2FyZXRMb2NhdGlvblN5bWJvbEFmdGVyQ29tcGxlbWVudCxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAocHJvdmlkZXIud29yZEJ5VmFsdWVbd29yZC52YWx1ZV0pIHtcbiAgICAgICAgICAvLyBub2luc3BlY3Rpb24gT2JqZWN0QWxsb2NhdGlvbklnbm9yZWRcbiAgICAgICAgICBuZXcgTm90aWNlKGDimqAgJHt3b3JkLnZhbHVlfSBhbHJlYWR5IGV4aXN0c2AsIDApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHByb3ZpZGVyLmFkZFdvcmRXaXRoRGljdGlvbmFyeSh3b3JkLCBkaWN0aW9uYXJ5UGF0aCk7XG4gICAgICAgIC8vIG5vaW5zcGVjdGlvbiBPYmplY3RBbGxvY2F0aW9uSWdub3JlZFxuICAgICAgICBuZXcgTm90aWNlKGBBZGRlZCAke3dvcmQudmFsdWV9YCk7XG4gICAgICAgIG1vZGFsLmNsb3NlKCk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIG1vZGFsLm9wZW4oKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbInByZXR0aWZ5IiwiVHJpZSIsInJlcXVpcmUkJDAiLCJyZXF1aXJlJCQxIiwiQ2VkaWN0IiwiY2hpbmVzZVRva2VuaXplciIsInBhcnNlRnJvbnRNYXR0ZXJBbGlhc2VzIiwicGFyc2VGcm9udE1hdHRlclRhZ3MiLCJwYXJzZUZyb250TWF0dGVyU3RyaW5nQXJyYXkiLCJNYXJrZG93blZpZXciLCJub3JtYWxpemVQYXRoIiwic3lub255bUFsaWFzZXMiLCJyZXF1ZXN0IiwiTm90aWNlIiwiRWRpdG9yU3VnZ2VzdCIsImRlYm91bmNlIiwiUGx1Z2luU2V0dGluZ1RhYiIsIlNldHRpbmciLCJNb2RhbCIsIlBsdWdpbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE0QkE7QUFDTyxTQUFTLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzdCLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2YsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ3ZGLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPLE1BQU0sQ0FBQyxxQkFBcUIsS0FBSyxVQUFVO0FBQ3ZFLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRixZQUFZLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRixnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxTQUFTO0FBQ1QsSUFBSSxPQUFPLENBQUMsQ0FBQztBQUNiLENBQUM7QUFnQkQ7QUFDTyxTQUFTLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUU7QUFDN0QsSUFBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEtBQUssWUFBWSxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDaEgsSUFBSSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxVQUFVLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFDL0QsUUFBUSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ25HLFFBQVEsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ3RHLFFBQVEsU0FBUyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQ3RILFFBQVEsSUFBSSxDQUFDLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzlFLEtBQUssQ0FBQyxDQUFDO0FBQ1A7O0FDN0VBLE1BQU0sUUFBUSxHQUFHLElBQUksTUFBTSxDQUN6QixtSUFBbUksRUFDbkksR0FBRyxDQUNKLENBQUM7QUFFSSxTQUFVLFlBQVksQ0FBQyxJQUFZLEVBQUE7SUFDdkMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUVLLFNBQVUsWUFBWSxDQUFDLElBQVksRUFBQTtJQUN2QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFNZSxTQUFBLGFBQWEsQ0FBQyxHQUFXLEVBQUUsS0FBYSxFQUFBO0FBQ3RELElBQUEsT0FBTyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFNZSxTQUFBLGVBQWUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFBO0FBQ2xELElBQUEsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFNSyxTQUFVLHFCQUFxQixDQUFDLEdBQVcsRUFBQTtBQUMvQyxJQUFBLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFFSyxTQUFVLDBCQUEwQixDQUFDLEdBQVcsRUFBQTtJQUNwRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztBQUM5QyxDQUFDO1VBRWdCLFFBQVEsQ0FDdkIsSUFBWSxFQUNaLE1BQWMsRUFBQTtJQUVkLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztJQUN0QixLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDbkMsUUFBQSxJQUFJLGFBQWEsS0FBSyxDQUFDLENBQUMsS0FBTSxFQUFFO1lBQzlCLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEtBQU0sQ0FBQyxDQUFDO0FBQzNDLFNBQUE7QUFDRCxRQUFBLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFNLENBQUMsQ0FBQztBQUNyQixRQUFBLGFBQWEsR0FBRyxDQUFDLENBQUMsS0FBTSxHQUFHLENBQUMsQ0FBQztBQUM5QixLQUFBO0FBRUQsSUFBQSxJQUFJLGFBQWEsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ2pDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlDLEtBQUE7QUFDSDs7QUN0REEsU0FBUyxVQUFVLENBQUMsT0FBZSxFQUFFLFdBQW1CLEVBQUE7QUFDdEQsSUFBQSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBRU0sTUFBTSxpQkFBaUIsR0FBRyxpQ0FBaUMsQ0FBQztNQUN0RCxnQkFBZ0IsQ0FBQTtJQUMzQixRQUFRLENBQUMsT0FBZSxFQUFFLEdBQWEsRUFBQTtBQUNyQyxRQUFBLE9BQU8sR0FBRztjQUNOLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDekQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FDakI7Y0FDRCxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0tBQ2hEO0FBRUQsSUFBQSxpQkFBaUIsQ0FBQyxPQUFlLEVBQUE7QUFDL0IsUUFBQSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7QUFDcEUsYUFBQSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQU0sQ0FBQzthQUNuQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQU0sQ0FBQyxDQUFDO1FBQ3hCLE9BQU87QUFDTCxZQUFBLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFO1lBQzVCLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTTtnQkFDekIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUIsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDO0FBQ2QsYUFBQSxDQUFDLENBQUM7U0FDSixDQUFDO0tBQ0g7SUFFRCxjQUFjLEdBQUE7QUFDWixRQUFBLE9BQU8saUJBQWlCLENBQUM7S0FDMUI7QUFFRCxJQUFBLHFCQUFxQixDQUFDLEdBQVcsRUFBQTtBQUMvQixRQUFBLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDRjs7QUNuQ0QsTUFBTSx3QkFBd0IsR0FBRyxtQ0FBbUMsQ0FBQztBQUMvRCxNQUFPLGVBQWdCLFNBQVEsZ0JBQWdCLENBQUE7SUFDbkQsY0FBYyxHQUFBO0FBQ1osUUFBQSxPQUFPLHdCQUF3QixDQUFDO0tBQ2pDO0FBQ0Y7O0FDUEQ7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQSxTQUFTLGFBQWEsR0FBQTtBQUNwQixJQUFBLElBQUksUUFBUSxHQUFHO0FBQ2IsUUFBQSxtQkFBbUIsRUFBRSxHQUFHO0FBQ3hCLFFBQUEsV0FBVyxFQUFFLEdBQUc7QUFDaEIsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNaLFFBQUEsYUFBYSxFQUFFLEdBQUc7QUFDbEIsUUFBQSxnQkFBZ0IsRUFBRSxHQUFHO0FBQ3JCLFFBQUEsVUFBVSxFQUFFLEdBQUc7S0FDaEIsQ0FBQztBQUNGLElBQUEsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDcEIsSUFBQSxLQUFLLElBQUksQ0FBQyxJQUFJLFFBQVEsRUFBRTtBQUN0QixRQUFBLElBQUksTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7QUFDMUIsUUFBQSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLFFBQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QyxLQUFBO0FBRUQsSUFBQSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyRCxJQUFJLENBQUMsS0FBSyxHQUFHO1FBQ1gsRUFBRSxFQUFFLENBQUMsSUFBSTtBQUNULFFBQUEsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsQ0FBQyxHQUFHO1FBQ1IsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLElBQUk7QUFDVCxRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsQ0FBQyxJQUFJO1FBQ1QsRUFBRSxFQUFFLENBQUMsSUFBSTtBQUNULFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxDQUFDLElBQUk7UUFDVCxFQUFFLEVBQUUsQ0FBQyxJQUFJO0FBQ1QsUUFBQSxFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxDQUFDLElBQUk7S0FDVixDQUFDO0lBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRztBQUNYLFFBQUEsRUFBRSxFQUFFLEdBQUc7QUFDUCxRQUFBLEVBQUUsRUFBRSxHQUFHO1FBQ1AsRUFBRSxFQUFFLENBQUMsR0FBRztRQUNSLEVBQUUsRUFBRSxDQUFDLElBQUk7UUFDVCxFQUFFLEVBQUUsQ0FBQyxHQUFHO1FBQ1IsRUFBRSxFQUFFLENBQUMsR0FBRztBQUNSLFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxDQUFDLElBQUk7QUFDVCxRQUFBLEVBQUUsRUFBRSxHQUFHO0tBQ1IsQ0FBQztJQUNGLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNyRCxJQUFBLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUc7QUFDWCxRQUFBLEdBQUcsRUFBRSxJQUFJO0FBQ1QsUUFBQSxHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxDQUFDLElBQUk7QUFDVixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxHQUFHLEVBQUUsSUFBSTtBQUNULFFBQUEsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsQ0FBQyxFQUFFO1FBQ1IsR0FBRyxFQUFFLENBQUMsSUFBSTtBQUNWLFFBQUEsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsQ0FBQyxHQUFHO0FBQ1QsUUFBQSxHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxDQUFDLElBQUk7QUFDVixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxHQUFHLEVBQUUsSUFBSTtLQUNWLENBQUM7SUFDRixJQUFJLENBQUMsS0FBSyxHQUFHO0FBQ1gsUUFBQSxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxDQUFDLElBQUk7QUFDVixRQUFBLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLENBQUMsR0FBRztRQUNULEdBQUcsRUFBRSxDQUFDLElBQUk7QUFDVixRQUFBLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLENBQUMsSUFBSTtRQUNWLEdBQUcsRUFBRSxDQUFDLEdBQUc7QUFDVCxRQUFBLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLENBQUMsSUFBSTtLQUNYLENBQUM7SUFDRixJQUFJLENBQUMsS0FBSyxHQUFHO1FBQ1gsR0FBRyxFQUFFLENBQUMsR0FBRztBQUNULFFBQUEsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsQ0FBQyxHQUFHO0FBQ1QsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLEdBQUcsRUFBRSxJQUFJO0FBQ1QsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLEdBQUcsRUFBRSxJQUFJO0FBQ1QsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLENBQUMsR0FBRztRQUNULEdBQUcsRUFBRSxDQUFDLElBQUk7UUFDVixHQUFHLEVBQUUsQ0FBQyxJQUFJO0FBQ1YsUUFBQSxHQUFHLEVBQUUsS0FBSztLQUNYLENBQUM7SUFDRixJQUFJLENBQUMsS0FBSyxHQUFHO1FBQ1gsR0FBRyxFQUFFLENBQUMsSUFBSTtBQUNWLFFBQUEsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsQ0FBQyxJQUFJO0FBQ1YsUUFBQSxHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxDQUFDLElBQUk7UUFDVixHQUFHLEVBQUUsQ0FBQyxJQUFJO1FBQ1YsR0FBRyxFQUFFLENBQUMsS0FBSztBQUNYLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLENBQUMsSUFBSTtRQUNWLEdBQUcsRUFBRSxDQUFDLEdBQUc7S0FDVixDQUFDO0lBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRztBQUNYLFFBQUEsSUFBSSxFQUFFLEdBQUc7QUFDVCxRQUFBLElBQUksRUFBRSxHQUFHO0FBQ1QsUUFBQSxHQUFHLEVBQUUsSUFBSTtBQUNULFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxHQUFHO0FBQ1QsUUFBQSxJQUFJLEVBQUUsR0FBRztBQUNULFFBQUEsSUFBSSxFQUFFLElBQUk7QUFDVixRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxDQUFDLElBQUk7QUFDVCxRQUFBLEVBQUUsRUFBRSxHQUFHO1FBQ1AsRUFBRSxFQUFFLENBQUMsSUFBSTtBQUNULFFBQUEsRUFBRSxFQUFFLEdBQUc7QUFDUCxRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsR0FBRztRQUNQLEVBQUUsRUFBRSxDQUFDLEdBQUc7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLElBQUk7QUFDVCxRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsQ0FBQyxJQUFJO0FBQ1QsUUFBQSxFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxDQUFDLEdBQUc7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsR0FBRztBQUNQLFFBQUEsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsQ0FBQyxHQUFHO0FBQ1IsUUFBQSxFQUFFLEVBQUUsR0FBRztBQUNQLFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLEdBQUc7UUFDUCxFQUFFLEVBQUUsQ0FBQyxJQUFJO0FBQ1QsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsQ0FBQyxJQUFJO0FBQ1QsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLENBQUMsR0FBRztRQUNSLEVBQUUsRUFBRSxDQUFDLEdBQUc7QUFDUixRQUFBLEVBQUUsRUFBRSxHQUFHO0FBQ1AsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLElBQUk7UUFDVCxFQUFFLEVBQUUsQ0FBQyxJQUFJO0FBQ1QsUUFBQSxFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxDQUFDLEdBQUc7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsR0FBRztRQUNQLEVBQUUsRUFBRSxDQUFDLElBQUk7QUFDVCxRQUFBLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLElBQUk7QUFDVCxRQUFBLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLElBQUk7UUFDVCxFQUFFLEVBQUUsQ0FBQyxHQUFHO1FBQ1IsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLElBQUk7UUFDVCxFQUFFLEVBQUUsQ0FBQyxHQUFHO0FBQ1IsUUFBQSxHQUFHLEVBQUUsSUFBSTtBQUNULFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxJQUFJO0tBQ1gsQ0FBQztJQUNGLElBQUksQ0FBQyxLQUFLLEdBQUc7UUFDWCxJQUFJLEVBQUUsQ0FBQyxLQUFLO1FBQ1osRUFBRSxFQUFFLENBQUMsR0FBRztRQUNSLElBQUksRUFBRSxDQUFDLElBQUk7UUFDWCxJQUFJLEVBQUUsQ0FBQyxLQUFLO1FBQ1osRUFBRSxFQUFFLENBQUMsSUFBSTtBQUNULFFBQUEsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsQ0FBQyxJQUFJO1FBQ1QsRUFBRSxFQUFFLENBQUMsR0FBRztRQUNSLEVBQUUsRUFBRSxDQUFDLElBQUk7QUFDVCxRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsR0FBRztRQUNQLEVBQUUsRUFBRSxDQUFDLElBQUk7QUFDVCxRQUFBLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLElBQUk7UUFDVCxFQUFFLEVBQUUsQ0FBQyxJQUFJO0FBQ1QsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLEtBQUs7UUFDVCxFQUFFLEVBQUUsQ0FBQyxJQUFJO1FBQ1QsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLEdBQUc7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsR0FBRztBQUNQLFFBQUEsRUFBRSxFQUFFLEdBQUc7UUFDUCxFQUFFLEVBQUUsQ0FBQyxJQUFJO1FBQ1QsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLEdBQUc7UUFDUixFQUFFLEVBQUUsQ0FBQyxJQUFJO1FBQ1QsRUFBRSxFQUFFLENBQUMsR0FBRztBQUNSLFFBQUEsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsQ0FBQyxHQUFHO0FBQ1IsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsQ0FBQyxJQUFJO0FBQ1QsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLElBQUk7QUFDVCxRQUFBLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLElBQUk7UUFDVCxFQUFFLEVBQUUsQ0FBQyxJQUFJO1FBQ1QsRUFBRSxFQUFFLENBQUMsSUFBSTtBQUNULFFBQUEsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsQ0FBQyxJQUFJO1FBQ1QsRUFBRSxFQUFFLENBQUMsSUFBSTtBQUNULFFBQUEsRUFBRSxFQUFFLEdBQUc7QUFDUCxRQUFBLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLElBQUk7UUFDVCxFQUFFLEVBQUUsQ0FBQyxJQUFJO1FBQ1QsRUFBRSxFQUFFLENBQUMsSUFBSTtBQUNULFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLENBQUMsSUFBSTtBQUNULFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLEtBQUs7UUFDVixFQUFFLEVBQUUsQ0FBQyxJQUFJO1FBQ1QsRUFBRSxFQUFFLENBQUMsS0FBSztBQUNWLFFBQUEsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsQ0FBQyxJQUFJO1FBQ1QsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLElBQUk7QUFDVCxRQUFBLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLElBQUk7QUFDVCxRQUFBLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLElBQUk7QUFDVCxRQUFBLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLENBQUMsSUFBSTtBQUNULFFBQUEsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsQ0FBQyxLQUFLO1FBQ1YsRUFBRSxFQUFFLENBQUMsR0FBRztRQUNSLEVBQUUsRUFBRSxDQUFDLElBQUk7UUFDVCxFQUFFLEVBQUUsQ0FBQyxJQUFJO0FBQ1QsUUFBQSxFQUFFLEVBQUUsR0FBRztBQUNQLFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsR0FBRztBQUNQLFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxDQUFDLEtBQUs7QUFDVixRQUFBLEVBQUUsRUFBRSxHQUFHO1FBQ1AsRUFBRSxFQUFFLENBQUMsSUFBSTtBQUNULFFBQUEsRUFBRSxFQUFFLEdBQUc7UUFDUCxFQUFFLEVBQUUsQ0FBQyxJQUFJO0FBQ1QsUUFBQSxFQUFFLEVBQUUsR0FBRztRQUNQLEVBQUUsRUFBRSxDQUFDLElBQUk7UUFDVCxFQUFFLEVBQUUsQ0FBQyxJQUFJO1FBQ1QsRUFBRSxFQUFFLENBQUMsSUFBSTtBQUNULFFBQUEsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsQ0FBQyxJQUFJO0FBQ1QsUUFBQSxFQUFFLEVBQUUsR0FBRztRQUNQLEVBQUUsRUFBRSxDQUFDLEdBQUc7UUFDUixFQUFFLEVBQUUsQ0FBQyxJQUFJO1FBQ1QsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLElBQUk7UUFDVCxFQUFFLEVBQUUsQ0FBQyxJQUFJO1FBQ1QsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLElBQUk7UUFDVCxFQUFFLEVBQUUsQ0FBQyxJQUFJO1FBQ1QsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLEdBQUc7UUFDUixFQUFFLEVBQUUsQ0FBQyxJQUFJO0FBQ1QsUUFBQSxFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxDQUFDLEdBQUc7UUFDUixFQUFFLEVBQUUsQ0FBQyxJQUFJO1FBQ1QsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLElBQUk7UUFDVCxFQUFFLEVBQUUsQ0FBQyxJQUFJO1FBQ1QsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULEVBQUUsRUFBRSxDQUFDLEdBQUc7UUFDUixFQUFFLEVBQUUsQ0FBQyxJQUFJO1FBQ1QsRUFBRSxFQUFFLENBQUMsSUFBSTtRQUNULElBQUksRUFBRSxDQUFDLEdBQUc7S0FDWCxDQUFDO0lBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRztRQUNYLEVBQUUsRUFBRSxDQUFDLElBQUk7QUFDVCxRQUFBLEVBQUUsRUFBRSxHQUFHO0FBQ1AsUUFBQSxFQUFFLEVBQUUsSUFBSTtRQUNSLElBQUksRUFBRSxDQUFDLElBQUk7UUFDWCxJQUFJLEVBQUUsQ0FBQyxJQUFJO0FBQ1gsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsSUFBSSxFQUFFLElBQUk7QUFDVixRQUFBLElBQUksRUFBRSxJQUFJO1FBQ1YsRUFBRSxFQUFFLENBQUMsR0FBRztRQUNSLEVBQUUsRUFBRSxDQUFDLElBQUk7UUFDVCxFQUFFLEVBQUUsQ0FBQyxHQUFHO0FBQ1IsUUFBQSxFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxDQUFDLElBQUk7QUFDVCxRQUFBLElBQUksRUFBRSxJQUFJO0FBQ1YsUUFBQSxJQUFJLEVBQUUsSUFBSTtRQUNWLEVBQUUsRUFBRSxDQUFDLElBQUk7UUFDVCxFQUFFLEVBQUUsQ0FBQyxJQUFJO1FBQ1QsRUFBRSxFQUFFLENBQUMsR0FBRztRQUNSLEVBQUUsRUFBRSxDQUFDLElBQUk7UUFDVCxFQUFFLEVBQUUsQ0FBQyxJQUFJO0FBQ1QsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxDQUFDLElBQUk7UUFDVCxFQUFFLEVBQUUsQ0FBQyxHQUFHO0FBQ1IsUUFBQSxFQUFFLEVBQUUsR0FBRztBQUNQLFFBQUEsSUFBSSxFQUFFLElBQUk7QUFDVixRQUFBLElBQUksRUFBRSxJQUFJO1FBQ1YsRUFBRSxFQUFFLENBQUMsSUFBSTtBQUNULFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLElBQUk7UUFDUixJQUFJLEVBQUUsQ0FBQyxJQUFJO1FBQ1gsSUFBSSxFQUFFLENBQUMsSUFBSTtBQUNYLFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLElBQUksRUFBRSxJQUFJO0FBQ1YsUUFBQSxJQUFJLEVBQUUsSUFBSTtBQUNWLFFBQUEsRUFBRSxFQUFFLEdBQUc7QUFDUCxRQUFBLEVBQUUsRUFBRSxHQUFHO0FBQ1AsUUFBQSxJQUFJLEVBQUUsSUFBSTtBQUNWLFFBQUEsSUFBSSxFQUFFLElBQUk7UUFDVixFQUFFLEVBQUUsQ0FBQyxHQUFHO0FBQ1IsUUFBQSxFQUFFLEVBQUUsR0FBRztRQUNQLEVBQUUsRUFBRSxDQUFDLElBQUk7UUFDVCxFQUFFLEVBQUUsQ0FBQyxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsSUFBSTtBQUNWLFFBQUEsSUFBSSxFQUFFLElBQUk7QUFDVixRQUFBLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLENBQUMsSUFBSTtBQUNULFFBQUEsRUFBRSxFQUFFLEdBQUc7QUFDUCxRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsR0FBRztBQUNQLFFBQUEsRUFBRSxFQUFFLEdBQUc7QUFDUCxRQUFBLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLENBQUMsSUFBSTtBQUNULFFBQUEsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsQ0FBQyxJQUFJO0FBQ1QsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLEdBQUc7UUFDUCxFQUFFLEVBQUUsQ0FBQyxJQUFJO0FBQ1QsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsQ0FBQyxHQUFHO0FBQ1IsUUFBQSxFQUFFLEVBQUUsSUFBSTtRQUNSLElBQUksRUFBRSxDQUFDLElBQUk7UUFDWCxJQUFJLEVBQUUsQ0FBQyxJQUFJO0FBQ1gsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO1FBQ1IsSUFBSSxFQUFFLENBQUMsR0FBRztRQUNWLElBQUksRUFBRSxDQUFDLEdBQUc7UUFDVixFQUFFLEVBQUUsQ0FBQyxJQUFJO0FBQ1QsUUFBQSxJQUFJLEVBQUUsSUFBSTtBQUNWLFFBQUEsSUFBSSxFQUFFLElBQUk7QUFDVixRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsQ0FBQyxJQUFJO0FBQ1QsUUFBQSxFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxDQUFDLEdBQUc7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLElBQUksRUFBRSxHQUFHO0FBQ1QsUUFBQSxJQUFJLEVBQUUsR0FBRztBQUNULFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLENBQUMsSUFBSTtBQUNULFFBQUEsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsQ0FBQyxHQUFHO0FBQ1IsUUFBQSxFQUFFLEVBQUUsR0FBRztBQUNQLFFBQUEsRUFBRSxFQUFFLEdBQUc7QUFDUCxRQUFBLEVBQUUsRUFBRSxHQUFHO0FBQ1AsUUFBQSxFQUFFLEVBQUUsR0FBRztBQUNQLFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixFQUFFLEVBQUUsQ0FBQyxJQUFJO0FBQ1QsUUFBQSxJQUFJLEVBQUUsR0FBRztBQUNULFFBQUEsSUFBSSxFQUFFLEdBQUc7QUFDVCxRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsR0FBRztLQUNSLENBQUM7SUFDRixJQUFJLENBQUMsS0FBSyxHQUFHO0FBQ1gsUUFBQSxHQUFHLEVBQUUsSUFBSTtBQUNULFFBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxDQUFDLEdBQUc7UUFDVCxHQUFHLEVBQUUsQ0FBQyxHQUFHO0FBQ1QsUUFBQSxHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxDQUFDLEdBQUc7UUFDVCxHQUFHLEVBQUUsQ0FBQyxJQUFJO0FBQ1YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsQ0FBQyxJQUFJO0tBQ1gsQ0FBQztJQUNGLElBQUksQ0FBQyxLQUFLLEdBQUc7QUFDWCxRQUFBLEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLENBQUMsSUFBSTtRQUNWLEdBQUcsRUFBRSxDQUFDLElBQUk7UUFDVixHQUFHLEVBQUUsQ0FBQyxJQUFJO0FBQ1YsUUFBQSxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxDQUFDLElBQUk7S0FDWCxDQUFDO0lBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRztRQUNYLEdBQUcsRUFBRSxDQUFDLEdBQUc7QUFDVCxRQUFBLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLENBQUMsR0FBRztRQUNULEdBQUcsRUFBRSxDQUFDLElBQUk7QUFDVixRQUFBLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLENBQUMsSUFBSTtBQUNWLFFBQUEsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsQ0FBQyxJQUFJO1FBQ1YsR0FBRyxFQUFFLENBQUMsSUFBSTtRQUNWLEdBQUcsRUFBRSxDQUFDLEdBQUc7UUFDVCxHQUFHLEVBQUUsQ0FBQyxJQUFJO1FBQ1YsR0FBRyxFQUFFLENBQUMsR0FBRztRQUNULEdBQUcsRUFBRSxDQUFDLElBQUk7QUFDVixRQUFBLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLENBQUMsSUFBSTtRQUNWLEdBQUcsRUFBRSxDQUFDLElBQUk7UUFDVixHQUFHLEVBQUUsQ0FBQyxJQUFJO1FBQ1YsR0FBRyxFQUFFLENBQUMsR0FBRztBQUNULFFBQUEsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsQ0FBQyxHQUFHO1FBQ1QsR0FBRyxFQUFFLENBQUMsSUFBSTtBQUNWLFFBQUEsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsQ0FBQyxJQUFJO0tBQ1gsQ0FBQztJQUNGLElBQUksQ0FBQyxLQUFLLEdBQUc7UUFDWCxHQUFHLEVBQUUsQ0FBQyxHQUFHO0FBQ1QsUUFBQSxHQUFHLEVBQUUsSUFBSTtBQUNULFFBQUEsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsQ0FBQyxHQUFHO0FBQ1QsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLENBQUMsSUFBSTtBQUNWLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLEdBQUcsRUFBRSxJQUFJO0FBQ1QsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsR0FBRyxFQUFFLEVBQUU7QUFDUCxRQUFBLEdBQUcsRUFBRSxJQUFJO0FBQ1QsUUFBQSxHQUFHLEVBQUUsSUFBSTtBQUNULFFBQUEsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsQ0FBQyxHQUFHO0FBQ1QsUUFBQSxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxDQUFDLEdBQUc7QUFDVCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxHQUFHLEVBQUUsR0FBRztLQUNULENBQUM7SUFDRixJQUFJLENBQUMsS0FBSyxHQUFHO1FBQ1gsSUFBSSxFQUFFLENBQUMsR0FBRztBQUNWLFFBQUEsSUFBSSxFQUFFLEdBQUc7UUFDVCxJQUFJLEVBQUUsQ0FBQyxHQUFHO0FBQ1YsUUFBQSxJQUFJLEVBQUUsRUFBRTtBQUNSLFFBQUEsSUFBSSxFQUFFLElBQUk7UUFDVixJQUFJLEVBQUUsQ0FBQyxHQUFHO0FBQ1YsUUFBQSxJQUFJLEVBQUUsR0FBRztRQUNULElBQUksRUFBRSxDQUFDLEdBQUc7QUFDVixRQUFBLElBQUksRUFBRSxHQUFHO0FBQ1QsUUFBQSxJQUFJLEVBQUUsR0FBRztBQUNULFFBQUEsSUFBSSxFQUFFLEdBQUc7QUFDVCxRQUFBLElBQUksRUFBRSxHQUFHO1FBQ1QsSUFBSSxFQUFFLENBQUMsRUFBRTtLQUNWLENBQUM7SUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkUsSUFBSSxDQUFDLEtBQUssR0FBRztBQUNYLFFBQUEsSUFBSSxFQUFFLEdBQUc7UUFDVCxJQUFJLEVBQUUsQ0FBQyxJQUFJO0FBQ1gsUUFBQSxJQUFJLEVBQUUsR0FBRztRQUNULElBQUksRUFBRSxDQUFDLEdBQUc7UUFDVixJQUFJLEVBQUUsQ0FBQyxHQUFHO1FBQ1YsSUFBSSxFQUFFLENBQUMsR0FBRztRQUNWLElBQUksRUFBRSxDQUFDLEdBQUc7UUFDVixJQUFJLEVBQUUsQ0FBQyxHQUFHO0FBQ1YsUUFBQSxJQUFJLEVBQUUsR0FBRztBQUNULFFBQUEsSUFBSSxFQUFFLEdBQUc7QUFDVCxRQUFBLElBQUksRUFBRSxJQUFJO0FBQ1YsUUFBQSxJQUFJLEVBQUUsR0FBRztBQUNULFFBQUEsSUFBSSxFQUFFLEdBQUc7QUFDVCxRQUFBLElBQUksRUFBRSxHQUFHO0FBQ1QsUUFBQSxJQUFJLEVBQUUsSUFBSTtBQUNWLFFBQUEsSUFBSSxFQUFFLElBQUk7QUFDVixRQUFBLElBQUksRUFBRSxHQUFHO0FBQ1QsUUFBQSxJQUFJLEVBQUUsR0FBRztBQUNULFFBQUEsSUFBSSxFQUFFLEdBQUc7UUFDVCxJQUFJLEVBQUUsQ0FBQyxHQUFHO0tBQ1gsQ0FBQztJQUNGLElBQUksQ0FBQyxLQUFLLEdBQUc7UUFDWCxJQUFJLEVBQUUsQ0FBQyxHQUFHO1FBQ1YsSUFBSSxFQUFFLENBQUMsSUFBSTtRQUNYLElBQUksRUFBRSxDQUFDLEdBQUc7UUFDVixJQUFJLEVBQUUsQ0FBQyxHQUFHO1FBQ1YsSUFBSSxFQUFFLENBQUMsSUFBSTtRQUNYLElBQUksRUFBRSxDQUFDLElBQUk7QUFDWCxRQUFBLElBQUksRUFBRSxHQUFHO1FBQ1QsSUFBSSxFQUFFLENBQUMsR0FBRztBQUNWLFFBQUEsSUFBSSxFQUFFLElBQUk7QUFDVixRQUFBLElBQUksRUFBRSxHQUFHO1FBQ1QsSUFBSSxFQUFFLENBQUMsSUFBSTtBQUNYLFFBQUEsSUFBSSxFQUFFLElBQUk7UUFDVixJQUFJLEVBQUUsQ0FBQyxHQUFHO0FBQ1YsUUFBQSxJQUFJLEVBQUUsR0FBRztRQUNULElBQUksRUFBRSxDQUFDLElBQUk7UUFDWCxJQUFJLEVBQUUsQ0FBQyxJQUFJO0tBQ1osQ0FBQztBQUNGLElBQUEsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDdkMsSUFBSSxDQUFDLEtBQUssR0FBRztRQUNYLEdBQUcsRUFBRSxDQUFDLElBQUk7UUFDVixHQUFHLEVBQUUsQ0FBQyxJQUFJO1FBQ1YsR0FBRyxFQUFFLENBQUMsSUFBSTtBQUNWLFFBQUEsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsQ0FBQyxJQUFJO1FBQ1YsR0FBRyxFQUFFLENBQUMsSUFBSTtBQUNWLFFBQUEsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsQ0FBQyxJQUFJO1FBQ1YsR0FBRyxFQUFFLENBQUMsSUFBSTtBQUNWLFFBQUEsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsQ0FBQyxHQUFHO1FBQ1QsR0FBRyxFQUFFLENBQUMsSUFBSTtRQUNWLEdBQUcsRUFBRSxDQUFDLElBQUk7UUFDVixHQUFHLEVBQUUsQ0FBQyxJQUFJO1FBQ1YsR0FBRyxFQUFFLENBQUMsSUFBSTtRQUNWLEdBQUcsRUFBRSxDQUFDLElBQUk7S0FDWCxDQUFDO0lBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRztRQUNYLEdBQUcsRUFBRSxDQUFDLElBQUk7QUFDVixRQUFBLEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLENBQUMsSUFBSTtRQUNWLEdBQUcsRUFBRSxDQUFDLElBQUk7UUFDVixHQUFHLEVBQUUsQ0FBQyxJQUFJO1FBQ1YsR0FBRyxFQUFFLENBQUMsSUFBSTtRQUNWLEtBQUssRUFBRSxDQUFDLEdBQUc7UUFDWCxLQUFLLEVBQUUsQ0FBQyxHQUFHO1FBQ1gsR0FBRyxFQUFFLENBQUMsR0FBRztRQUNULEdBQUcsRUFBRSxDQUFDLElBQUk7UUFDVixHQUFHLEVBQUUsQ0FBQyxJQUFJO0tBQ1gsQ0FBQztJQUNGLElBQUksQ0FBQyxLQUFLLEdBQUc7QUFDWCxRQUFBLEtBQUssRUFBRSxJQUFJO0FBQ1gsUUFBQSxLQUFLLEVBQUUsSUFBSTtRQUNYLEdBQUcsRUFBRSxDQUFDLElBQUk7QUFDVixRQUFBLEdBQUcsRUFBRSxJQUFJO0FBQ1QsUUFBQSxLQUFLLEVBQUUsSUFBSTtBQUNYLFFBQUEsS0FBSyxFQUFFLElBQUk7QUFDWCxRQUFBLEdBQUcsRUFBRSxJQUFJO0FBQ1QsUUFBQSxHQUFHLEVBQUUsSUFBSTtBQUNULFFBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCxRQUFBLEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLENBQUMsSUFBSTtBQUNWLFFBQUEsR0FBRyxFQUFFLElBQUk7S0FDVixDQUFDO0lBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2hELElBQUEsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDbkUsSUFBQSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHO1FBQ1gsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtLQUNSLENBQUM7SUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDNUQsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzFELElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN6QixJQUFBLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUc7QUFDWCxRQUFBLEVBQUUsRUFBRSxFQUFFO1FBQ04sRUFBRSxFQUFFLENBQUMsRUFBRTtRQUNQLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDUCxRQUFBLEVBQUUsRUFBRSxHQUFHO1FBQ1AsRUFBRSxFQUFFLENBQUMsRUFBRTtRQUNQLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDUCxRQUFBLEVBQUUsRUFBRSxHQUFHO0FBQ1AsUUFBQSxFQUFFLEVBQUUsR0FBRztRQUNQLEVBQUUsRUFBRSxDQUFDLElBQUk7S0FDVixDQUFDO0FBQ0YsSUFBQSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM1QyxJQUFJLENBQUMsS0FBSyxHQUFHO1FBQ1gsRUFBRSxFQUFFLENBQUMsR0FBRztBQUNSLFFBQUEsRUFBRSxFQUFFLEVBQUU7QUFDTixRQUFBLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLENBQUMsSUFBSTtBQUNULFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLEVBQUUsRUFBRSxJQUFJO0FBQ1IsUUFBQSxFQUFFLEVBQUUsS0FBSztRQUNULEVBQUUsRUFBRSxDQUFDLEdBQUc7UUFDUixFQUFFLEVBQUUsQ0FBQyxJQUFJO0tBQ1YsQ0FBQztJQUNGLElBQUksQ0FBQyxLQUFLLEdBQUc7QUFDWCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxDQUFDLEdBQUc7UUFDVCxDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsR0FBRyxFQUFFLENBQUMsR0FBRztRQUNULENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztBQUNQLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztBQUNQLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxHQUFHLEVBQUUsQ0FBQyxHQUFHO1FBQ1QsR0FBRyxFQUFFLENBQUMsR0FBRztLQUNWLENBQUM7SUFDRixJQUFJLENBQUMsS0FBSyxHQUFHO1FBQ1gsR0FBRyxFQUFFLENBQUMsR0FBRztRQUNULEdBQUcsRUFBRSxDQUFDLEdBQUc7QUFDVCxRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sR0FBRyxFQUFFLENBQUMsR0FBRztBQUNULFFBQUEsR0FBRyxFQUFFLElBQUk7UUFDVCxDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsR0FBRztBQUNQLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixHQUFHLEVBQUUsQ0FBQyxHQUFHO0FBQ1QsUUFBQSxHQUFHLEVBQUUsSUFBSTtBQUNULFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLEdBQUc7S0FDUCxDQUFDO0lBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRztBQUNYLFFBQUEsR0FBRyxFQUFFLElBQUk7UUFDVCxDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsR0FBRyxFQUFFLENBQUMsSUFBSTtBQUNWLFFBQUEsR0FBRyxFQUFFLElBQUk7UUFDVCxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsQ0FBQyxJQUFJO1FBQ1YsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztBQUNQLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLEdBQUcsRUFBRSxDQUFDLElBQUk7UUFDVixDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsR0FBRztBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsR0FBRztBQUNQLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxHQUFHLEVBQUUsQ0FBQyxHQUFHO0FBQ1QsUUFBQSxHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxDQUFDLElBQUk7UUFDVixDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsRUFBRSxFQUFFLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLEdBQUc7S0FDUCxDQUFDO0lBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRztBQUNYLFFBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCxRQUFBLEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLENBQUMsSUFBSTtBQUNWLFFBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCxRQUFBLEdBQUcsRUFBRSxJQUFJO0FBQ1QsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCxRQUFBLEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLENBQUMsSUFBSTtBQUNWLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsR0FBRztBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsS0FBSztRQUNULENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLEtBQUs7UUFDUixDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLEdBQUcsRUFBRSxDQUFDLElBQUk7UUFDVixDQUFDLEVBQUUsQ0FBQyxLQUFLO1FBQ1QsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsR0FBRztBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsR0FBRztBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztBQUNQLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxHQUFHLEVBQUUsSUFBSTtBQUNULFFBQUEsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsQ0FBQyxJQUFJO1FBQ1YsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEtBQUs7QUFDVCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7S0FDVCxDQUFDO0lBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRztBQUNYLFFBQUEsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsQ0FBQyxHQUFHO1FBQ1QsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLEVBQUUsRUFBRSxDQUFDLEtBQUs7UUFDVixHQUFHLEVBQUUsQ0FBQyxJQUFJO0FBQ1YsUUFBQSxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxDQUFDLEdBQUc7QUFDVCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsR0FBRztBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLEVBQUU7QUFDTCxRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUNOLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO1FBQ1IsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxJQUFJO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztBQUNQLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtRQUNSLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNSLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxDQUFDLElBQUk7UUFDUixDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxJQUFJO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLEdBQUcsRUFBRSxDQUFDLEdBQUc7UUFDVCxFQUFFLEVBQUUsQ0FBQyxLQUFLO0FBQ1YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsR0FBRztLQUNSLENBQUM7SUFDRixJQUFJLENBQUMsS0FBSyxHQUFHO0FBQ1gsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsR0FBRyxFQUFFLEdBQUc7UUFDUixDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxFQUFFLEVBQUUsR0FBRztBQUNQLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLEdBQUcsRUFBRSxHQUFHO1FBQ1IsQ0FBQyxFQUFFLENBQUMsR0FBRztBQUNQLFFBQUEsQ0FBQyxFQUFFLEdBQUc7QUFDTixRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUNOLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsSUFBSTtBQUNQLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDUixRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7UUFDUCxDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsR0FBRztBQUNOLFFBQUEsQ0FBQyxFQUFFLElBQUk7UUFDUCxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ1IsUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsR0FBRztBQUNQLFFBQUEsQ0FBQyxFQUFFLEdBQUc7UUFDTixDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQ1AsUUFBQSxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLENBQUMsR0FBRztBQUNQLFFBQUEsQ0FBQyxFQUFFLElBQUk7QUFDUCxRQUFBLENBQUMsRUFBRSxHQUFHO0FBQ04sUUFBQSxDQUFDLEVBQUUsSUFBSTtRQUNQLEdBQUcsRUFBRSxDQUFDLEdBQUc7QUFDVCxRQUFBLEVBQUUsRUFBRSxHQUFHO1FBQ1AsQ0FBQyxFQUFFLENBQUMsR0FBRztRQUNQLENBQUMsRUFBRSxDQUFDLEdBQUc7S0FDUixDQUFDO0FBRUYsSUFBQSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLEdBQUcsRUFBQTtBQUM1QyxJQUFBLEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtBQUM1QixRQUFBLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLFNBQUE7QUFDRixLQUFBO0FBQ0QsSUFBQSxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUVGLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFBO0FBQ3ZDLElBQUEsSUFBSSxDQUFDLEVBQUU7QUFDTCxRQUFBLE9BQU8sQ0FBQyxDQUFDO0FBQ1YsS0FBQTtBQUNELElBQUEsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDLENBQUM7QUFFRixhQUFhLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxVQUFVLEtBQUssRUFBQTtJQUMvQyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLFNBQVMsSUFBSSxLQUFLLElBQUksRUFBRSxFQUFFO0FBQ3RELFFBQUEsT0FBTyxFQUFFLENBQUM7QUFDWCxLQUFBO0lBQ0QsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QixJQUFJLEtBQUssR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUIsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4QixJQUFBLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTtRQUM3QixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2YsUUFBQSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQixLQUFBO0FBQ0QsSUFBQSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2YsSUFBQSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2YsSUFBQSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2YsSUFBQSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCLElBQUEsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoQixJQUFBLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEIsSUFBQSxJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDO0lBQ2IsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDO0lBQ2IsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDO0FBQ2IsSUFBQSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDdkMsUUFBQSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3hCLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLFFBQUEsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEIsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0QixRQUFBLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdEIsUUFBQSxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEMsUUFBQSxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEMsUUFBQSxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEMsUUFBQSxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLFFBQUEsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QyxRQUFBLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsQyxRQUFBLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsQyxRQUFBLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsQyxRQUFBLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsQyxRQUFBLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsQyxRQUFBLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsQyxRQUFBLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkMsUUFBQSxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLFFBQUEsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QyxRQUFBLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVDLFFBQUEsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUMsUUFBQSxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxRQUFBLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVDLFFBQUEsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLFFBQUEsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLFFBQUEsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLFFBQUEsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLFFBQUEsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLFFBQUEsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLFFBQUEsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QyxRQUFBLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkMsUUFBQSxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLFFBQUEsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUMsUUFBQSxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxRQUFBLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVDLFFBQUEsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7O0FBRTVDLFFBQUEsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QyxRQUFBLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkMsUUFBQSxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLFFBQUEsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUMsUUFBQSxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxRQUFBLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVDLFFBQUEsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUMsUUFBQSxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakQsUUFBQSxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakQsUUFBQSxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakQsUUFBQSxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ1osSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO0FBQ2IsWUFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVixDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ1QsU0FBQTtRQUNELEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDUixFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNQLFFBQUEsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQixLQUFBO0FBQ0QsSUFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRWxCLElBQUEsT0FBTyxNQUFNLENB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QUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksWUFBWSxHQUFHO0FBQ25CLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzNCLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzNCLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzNCLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzNCLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzNCLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzNCLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsSUFBSUEsVUFBUSxHQUFHLFNBQVMsR0FBRyxDQUFDO0FBQzVCLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLEVBQUUsSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQztBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDNUMsSUFBSSxJQUFJLFFBQVEsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsSUFBSSxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENB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QUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFJLEVBQUUsQ0FBQztBQUNwRCxnQkFBQSxJQUFJLENBQUEsRUFBQSxHQUFBLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFBLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFJLEVBQUUsQ0FBQztBQUNsRSxnQkFBQSxJQUFJLENBQUEsRUFBQSxHQUFBLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFBLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFJLEVBQUUsQ0FBQztBQUNyRCxnQkFBQSxJQUFJLENBQUEsRUFBQSxHQUFBLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFBLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFJLEVBQUUsQ0FBQztBQUNuRSxnQkFBQSxJQUFJLENBQUEsRUFBQSxHQUFBLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQUEsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLEdBQUksRUFBRSxDQUFDO0FBQ3pELGdCQUFBLElBQUksQ0FBQSxFQUFBLEdBQUEsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBQSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FDOUQsRUFBRSxDQUFDO0FBQ0wsZ0JBQUEsSUFBSSxDQUFBLEVBQUEsR0FBQSxZQUFZLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBQSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBSSxFQUFFLENBQUM7QUFDckQsZ0JBQUEsSUFBSSxDQUFBLEVBQUEsR0FBQSxZQUFZLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBQSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBSSxFQUFFLENBQUM7QUFDcEUsYUFBQTtBQUNMLFVBQUUsV0FBVztjQUNYLHVCQUF1QixFQUFFO0FBQzNCLGNBQUU7QUFDRSxnQkFBQSxJQUFJLENBQUEsRUFBQSxHQUFBLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFBLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFJLEVBQUUsQ0FBQztBQUNwRCxnQkFBQSxJQUFJLENBQUEsRUFBQSxHQUFBLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFBLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFJLEVBQUUsQ0FBQztBQUNsRSxnQkFBQSxJQUFJLENBQUEsRUFBQSxHQUFBLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFBLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFJLEVBQUUsQ0FBQztBQUNyRCxnQkFBQSxJQUFJLENBQUEsRUFBQSxHQUFBLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFBLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFB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 +// src/ui/component/CustomDictionaryWordAdd.svelte +function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[26] = list[i]; + return child_ctx; +} +function create_each_block(ctx) { + let option; + let t0_value = ctx[26].path + ""; + let t0; + let t1; + let option_value_value; + return { + c() { + option = element("option"); + t0 = text(t0_value); + t1 = space(); + option.__value = option_value_value = ctx[26]; + option.value = option.__value; + }, + m(target, anchor) { + insert(target, option, anchor); + append(option, t0); + append(option, t1); + }, + p(ctx2, dirty) { + if (dirty & 32 && t0_value !== (t0_value = ctx2[26].path + "")) + set_data(t0, t0_value); + if (dirty & 32 && option_value_value !== (option_value_value = ctx2[26])) { + option.__value = option_value_value; + option.value = option.__value; + } + }, + d(detaching) { + if (detaching) + detach(option); + } + }; +} +function create_default_slot_1(ctx) { + let file; + let current; + file = new File_default({}); + return { + c() { + create_component(file.$$.fragment); + }, + m(target, anchor) { + mount_component(file, target, anchor); + current = true; + }, + i(local) { + if (current) + return; + transition_in(file.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(file.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(file, detaching); + } + }; +} +function create_if_block_1(ctx) { + let label; + let input; + let t; + let mounted; + let dispose; + return { + c() { + label = element("label"); + input = element("input"); + t = text("\n Distinguish between display and insertion"); + attr(input, "type", "checkbox"); + }, + m(target, anchor) { + insert(target, label, anchor); + append(label, input); + input.checked = ctx[1]; + append(label, t); + if (!mounted) { + dispose = listen(input, "change", ctx[21]); + mounted = true; + } + }, + p(ctx2, dirty) { + if (dirty & 2) { + input.checked = ctx2[1]; + } + }, + d(detaching) { + if (detaching) + detach(label); + mounted = false; + dispose(); + } + }; +} +function create_if_block(ctx) { + let h3; + let t1; + let textarea; + let mounted; + let dispose; + return { + c() { + h3 = element("h3"); + h3.textContent = "Displayed Word"; + t1 = space(); + textarea = element("textarea"); + set_style(textarea, "width", "100%"); + attr(textarea, "rows", "3"); + }, + m(target, anchor) { + insert(target, h3, anchor); + insert(target, t1, anchor); + insert(target, textarea, anchor); + set_input_value(textarea, ctx[3]); + ctx[23](textarea); + if (!mounted) { + dispose = listen(textarea, "input", ctx[22]); + mounted = true; + } + }, + p(ctx2, dirty) { + if (dirty & 8) { + set_input_value(textarea, ctx2[3]); + } + }, + d(detaching) { + if (detaching) + detach(h3); + if (detaching) + detach(t1); + if (detaching) + detach(textarea); + ctx[23](null); + mounted = false; + dispose(); + } + }; +} +function create_default_slot(ctx) { + let t; + return { + c() { + t = text("Submit"); + }, + m(target, anchor) { + insert(target, t, anchor); + }, + d(detaching) { + if (detaching) + detach(t); + } + }; +} +function create_fragment4(ctx) { + let div2; + let h2; + let t1; + let h30; + let t3; + let div0; + let select; + let t4; + let obsidianiconbutton; + let t5; + let h31; + let t6; + let t7; + let textarea0; + let t8; + let t9; + let t10; + let h32; + let t12; + let input; + let t13; + let h33; + let t15; + let textarea1; + let t16; + let div1; + let obsidianbutton; + let current; + let mounted; + let dispose; + let each_value = ctx[5]; + let each_blocks = []; + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + } + obsidianiconbutton = new ObsidianIconButton_default({ + props: { + popup: "Open the file", + $$slots: { default: [create_default_slot_1] }, + $$scope: { ctx } + } + }); + obsidianiconbutton.$on("click", ctx[18]); + let if_block0 = ctx[11] && create_if_block_1(ctx); + let if_block1 = ctx[1] && create_if_block(ctx); + obsidianbutton = new ObsidianButton_default({ + props: { + disabled: !ctx[12], + $$slots: { default: [create_default_slot] }, + $$scope: { ctx } + } + }); + obsidianbutton.$on("click", ctx[13]); + return { + c() { + div2 = element("div"); + h2 = element("h2"); + h2.textContent = "Add a word to a custom dictionary"; + t1 = space(); + h30 = element("h3"); + h30.textContent = "Dictionary"; + t3 = space(); + div0 = element("div"); + select = element("select"); + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + t4 = space(); + create_component(obsidianiconbutton.$$.fragment); + t5 = space(); + h31 = element("h3"); + t6 = text(ctx[10]); + t7 = space(); + textarea0 = element("textarea"); + t8 = space(); + if (if_block0) + if_block0.c(); + t9 = space(); + if (if_block1) + if_block1.c(); + t10 = space(); + h32 = element("h3"); + h32.textContent = "Description"; + t12 = space(); + input = element("input"); + t13 = space(); + h33 = element("h3"); + h33.textContent = "Aliases (for each line)"; + t15 = space(); + textarea1 = element("textarea"); + t16 = space(); + div1 = element("div"); + create_component(obsidianbutton.$$.fragment); + attr(select, "class", "dropdown"); + if (ctx[2] === void 0) + add_render_callback(() => ctx[17].call(select)); + set_style(div0, "display", "flex"); + set_style(div0, "gap", "10px"); + set_style(textarea0, "width", "100%"); + attr(textarea0, "rows", "3"); + attr(input, "type", "text"); + set_style(input, "width", "100%"); + set_style(textarea1, "width", "100%"); + attr(textarea1, "rows", "3"); + set_style(div1, "text-align", "center"); + set_style(div1, "width", "100%"); + set_style(div1, "padding-top", "15px"); + }, + m(target, anchor) { + insert(target, div2, anchor); + append(div2, h2); + append(div2, t1); + append(div2, h30); + append(div2, t3); + append(div2, div0); + append(div0, select); + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(select, null); + } + select_option(select, ctx[2]); + append(div0, t4); + mount_component(obsidianiconbutton, div0, null); + append(div2, t5); + append(div2, h31); + append(h31, t6); + append(div2, t7); + append(div2, textarea0); + set_input_value(textarea0, ctx[0]); + ctx[20](textarea0); + append(div2, t8); + if (if_block0) + if_block0.m(div2, null); + append(div2, t9); + if (if_block1) + if_block1.m(div2, null); + append(div2, t10); + append(div2, h32); + append(div2, t12); + append(div2, input); + set_input_value(input, ctx[4]); + append(div2, t13); + append(div2, h33); + append(div2, t15); + append(div2, textarea1); + set_input_value(textarea1, ctx[8]); + append(div2, t16); + append(div2, div1); + mount_component(obsidianbutton, div1, null); + current = true; + if (!mounted) { + dispose = [ + listen(select, "change", ctx[17]), + listen(textarea0, "input", ctx[19]), + listen(input, "input", ctx[24]), + listen(textarea1, "input", ctx[25]) + ]; + mounted = true; + } + }, + p(ctx2, [dirty]) { + if (dirty & 32) { + each_value = ctx2[5]; + let i; + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context(ctx2, each_value, i); + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(select, null); + } + } + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + each_blocks.length = each_value.length; + } + if (dirty & 36) { + select_option(select, ctx2[2]); + } + const obsidianiconbutton_changes = {}; + if (dirty & 536870912) { + obsidianiconbutton_changes.$$scope = { dirty, ctx: ctx2 }; + } + obsidianiconbutton.$set(obsidianiconbutton_changes); + if (!current || dirty & 1024) + set_data(t6, ctx2[10]); + if (dirty & 1) { + set_input_value(textarea0, ctx2[0]); + } + if (ctx2[11]) { + if (if_block0) { + if_block0.p(ctx2, dirty); + } else { + if_block0 = create_if_block_1(ctx2); + if_block0.c(); + if_block0.m(div2, t9); + } + } else if (if_block0) { + if_block0.d(1); + if_block0 = null; + } + if (ctx2[1]) { + if (if_block1) { + if_block1.p(ctx2, dirty); + } else { + if_block1 = create_if_block(ctx2); + if_block1.c(); + if_block1.m(div2, t10); + } + } else if (if_block1) { + if_block1.d(1); + if_block1 = null; + } + if (dirty & 16 && input.value !== ctx2[4]) { + set_input_value(input, ctx2[4]); + } + if (dirty & 256) { + set_input_value(textarea1, ctx2[8]); + } + const obsidianbutton_changes = {}; + if (dirty & 4096) + obsidianbutton_changes.disabled = !ctx2[12]; + if (dirty & 536870912) { + obsidianbutton_changes.$$scope = { dirty, ctx: ctx2 }; + } + obsidianbutton.$set(obsidianbutton_changes); + }, + i(local) { + if (current) + return; + transition_in(obsidianiconbutton.$$.fragment, local); + transition_in(obsidianbutton.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(obsidianiconbutton.$$.fragment, local); + transition_out(obsidianbutton.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) + detach(div2); + destroy_each(each_blocks, detaching); + destroy_component(obsidianiconbutton); + ctx[20](null); + if (if_block0) + if_block0.d(); + if (if_block1) + if_block1.d(); + destroy_component(obsidianbutton); + mounted = false; + run_all(dispose); + } + }; +} +function instance4($$self, $$props, $$invalidate) { + let enableSubmit; + let enableDisplayedWord; + let firstWordTitle; + let { dictionaries } = $$props; + let { selectedDictionary } = $$props; + let { inputWord = "" } = $$props; + let { useDisplayedWord = false } = $$props; + let { displayedWord = "" } = $$props; + let { description = "" } = $$props; + let { aliases = [] } = $$props; + let { dividerForDisplay = "" } = $$props; + let { onSubmit } = $$props; + let { onClickFileIcon } = $$props; + let aliasesStr = aliases.join("\n"); + let wordRef = null; + let displayedWordRef = null; + const handleSubmit = () => { + onSubmit(selectedDictionary.path, { + value: displayedWord || inputWord, + description, + aliases: aliasesStr.split("\n"), + type: "customDictionary", + createdPath: selectedDictionary.path, + insertedText: displayedWord ? inputWord : void 0 + }); + }; + onMount(() => { + setTimeout(() => wordRef.focus(), 50); + }); + function select_change_handler() { + selectedDictionary = select_value(this); + $$invalidate(2, selectedDictionary); + $$invalidate(5, dictionaries); + } + const click_handler = () => onClickFileIcon(selectedDictionary.path); + function textarea0_input_handler() { + inputWord = this.value; + $$invalidate(0, inputWord); + } + function textarea0_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + wordRef = $$value; + $$invalidate(9, wordRef); + }); + } + function input_change_handler() { + useDisplayedWord = this.checked; + $$invalidate(1, useDisplayedWord); + } + function textarea_input_handler() { + displayedWord = this.value; + $$invalidate(3, displayedWord); + } + function textarea_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + displayedWordRef = $$value; + $$invalidate(7, displayedWordRef); + }); + } + function input_input_handler() { + description = this.value; + $$invalidate(4, description); + } + function textarea1_input_handler() { + aliasesStr = this.value; + $$invalidate(8, aliasesStr); + } + $$self.$$set = ($$props2) => { + if ("dictionaries" in $$props2) + $$invalidate(5, dictionaries = $$props2.dictionaries); + if ("selectedDictionary" in $$props2) + $$invalidate(2, selectedDictionary = $$props2.selectedDictionary); + if ("inputWord" in $$props2) + $$invalidate(0, inputWord = $$props2.inputWord); + if ("useDisplayedWord" in $$props2) + $$invalidate(1, useDisplayedWord = $$props2.useDisplayedWord); + if ("displayedWord" in $$props2) + $$invalidate(3, displayedWord = $$props2.displayedWord); + if ("description" in $$props2) + $$invalidate(4, description = $$props2.description); + if ("aliases" in $$props2) + $$invalidate(14, aliases = $$props2.aliases); + if ("dividerForDisplay" in $$props2) + $$invalidate(15, dividerForDisplay = $$props2.dividerForDisplay); + if ("onSubmit" in $$props2) + $$invalidate(16, onSubmit = $$props2.onSubmit); + if ("onClickFileIcon" in $$props2) + $$invalidate(6, onClickFileIcon = $$props2.onClickFileIcon); + }; + $$self.$$.update = () => { + if ($$self.$$.dirty & 1) { + $: + $$invalidate(12, enableSubmit = inputWord.length > 0); + } + if ($$self.$$.dirty & 32768) { + $: + $$invalidate(11, enableDisplayedWord = Boolean(dividerForDisplay)); + } + if ($$self.$$.dirty & 2) { + $: + $$invalidate(10, firstWordTitle = useDisplayedWord ? "Inserted word" : "Word"); + } + if ($$self.$$.dirty & 130) { + $: { + if (useDisplayedWord) { + displayedWordRef === null || displayedWordRef === void 0 ? void 0 : displayedWordRef.focus(); + } + } + } + }; + return [ + inputWord, + useDisplayedWord, + selectedDictionary, + displayedWord, + description, + dictionaries, + onClickFileIcon, + displayedWordRef, + aliasesStr, + wordRef, + firstWordTitle, + enableDisplayedWord, + enableSubmit, + handleSubmit, + aliases, + dividerForDisplay, + onSubmit, + select_change_handler, + click_handler, + textarea0_input_handler, + textarea0_binding, + input_change_handler, + textarea_input_handler, + textarea_binding, + input_input_handler, + textarea1_input_handler + ]; +} +var CustomDictionaryWordAdd = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance4, create_fragment4, safe_not_equal, { + dictionaries: 5, + selectedDictionary: 2, + inputWord: 0, + useDisplayedWord: 1, + displayedWord: 3, + description: 4, + aliases: 14, + dividerForDisplay: 15, + onSubmit: 16, + onClickFileIcon: 6 + }); + } +}; +var CustomDictionaryWordAdd_default = CustomDictionaryWordAdd; + +// src/ui/CustomDictionaryWordAddModal.ts +var CustomDictionaryWordAddModal = class extends import_obsidian5.Modal { + constructor(app, dictionaryPaths, initialValue = "", dividerForDisplay = "", onSubmit) { + super(app); + const appHelper = new AppHelper(app); + const dictionaries = dictionaryPaths.map((x) => ({ id: x, path: x })); + const { contentEl } = this; + this.component = new CustomDictionaryWordAdd_default({ + target: contentEl, + props: { + dictionaries, + selectedDictionary: dictionaries[0], + inputWord: initialValue, + dividerForDisplay, + onSubmit, + onClickFileIcon: (dictionaryPath) => { + const markdownFile = appHelper.getMarkdownFileByPath(dictionaryPath); + if (!markdownFile) { + new import_obsidian5.Notice(`Can't open ${dictionaryPath}`); + return; + } + this.close(); + appHelper.openMarkdownFile(markdownFile, true); + } + } + }); + } + onClose() { + super.onClose(); + this.component.$destroy(); + } +}; + +// src/main.ts +var import_ts_deepmerge = __toESM(require_dist()); +var VariousComponents = class extends import_obsidian6.Plugin { + onunload() { + super.onunload(); + this.suggester.unregister(); + } + async onload() { + this.appHelper = new AppHelper(this.app); + this.registerEvent( + this.app.workspace.on("editor-menu", (menu) => { + if (!this.appHelper.getSelection()) { + return; + } + menu.addItem( + (item) => item.setTitle("Add to custom dictionary").setIcon("stacked-levels").onClick(() => { + this.addWordToCustomDictionary(); + }) + ); + }) + ); + await this.loadSettings(); + this.settingTab = new VariousComplementsSettingTab(this.app, this); + this.addSettingTab(this.settingTab); + this.statusBar = ProviderStatusBar.new( + this.addStatusBarItem(), + this.settings.showMatchStrategy, + this.settings.showIndexingStatus, + this.settings.showComplementAutomatically + ); + this.statusBar.setOnClickStrategyListener(async () => { + await this.settingTab.toggleMatchStrategy(); + }); + this.statusBar.setOnClickComplementAutomatically(async () => { + await this.settingTab.toggleComplementAutomatically(); + }); + const debouncedSaveData = (0, import_obsidian6.debounce)(async () => { + await this.saveData(this.settings); + }, 5e3); + this.suggester = await AutoCompleteSuggest.new( + this.app, + this.settings, + this.statusBar, + debouncedSaveData + ); + this.registerEditorSuggest(this.suggester); + this.addCommand({ + id: "reload-custom-dictionaries", + name: "Reload custom dictionaries", + hotkeys: [{ modifiers: ["Mod", "Shift"], key: "r" }], + callback: async () => { + await this.suggester.refreshCustomDictionaryTokens(); + } + }); + this.addCommand({ + id: "reload-current-vault", + name: "Reload current vault", + callback: async () => { + await this.suggester.refreshCurrentVaultTokens(); + } + }); + this.addCommand({ + id: "toggle-match-strategy", + name: "Toggle Match strategy", + callback: async () => { + await this.settingTab.toggleMatchStrategy(); + } + }); + this.addCommand({ + id: "toggle-complement-automatically", + name: "Toggle Complement automatically", + callback: async () => { + await this.settingTab.toggleComplementAutomatically(); + } + }); + this.addCommand({ + id: "show-suggestions", + name: "Show suggestions", + hotkeys: [{ modifiers: ["Mod"], key: " " }], + callback: async () => { + this.suggester.triggerComplete(); + } + }); + this.addCommand({ + id: "hide-suggestions", + name: "Hide suggestions", + callback: async () => { + this.suggester.hideCompletion(); + } + }); + this.addCommand({ + id: "add-word-custom-dictionary", + name: "Add a word to a custom dictionary", + hotkeys: [{ modifiers: ["Mod", "Shift"], key: " " }], + callback: async () => { + this.addWordToCustomDictionary(); + } + }); + this.addCommand({ + id: "predictable-complements", + name: "Predictable complement", + callback: async () => { + this.suggester.predictableComplete(); + } + }); + this.addCommand({ + id: "copy-plugin-settings", + name: "Copy plugin settings", + callback: async () => { + await navigator.clipboard.writeText( + this.settingTab.getPluginSettingsAsJsonString() + ); + new import_obsidian6.Notice("Copy settings of Various Complements"); + } + }); + } + async loadSettings() { + const currentSettings = await this.loadData(); + this.settings = (0, import_ts_deepmerge.default)(DEFAULT_SETTINGS, currentSettings != null ? currentSettings : {}); + } + async saveSettings(needUpdateTokens = {}) { + await this.saveData(this.settings); + await this.suggester.updateSettings(this.settings); + if (needUpdateTokens.currentFile) { + await this.suggester.refreshCurrentFileTokens(); + } + if (needUpdateTokens.currentVault) { + await this.suggester.refreshCurrentVaultTokens(); + } + if (needUpdateTokens.customDictionary) { + await this.suggester.refreshCustomDictionaryTokens(); + } + if (needUpdateTokens.internalLink) { + await this.suggester.refreshInternalLinkTokens(); + } + if (needUpdateTokens.frontMatter) { + await this.suggester.refreshFrontMatterTokens(); + } + } + addWordToCustomDictionary() { + const selectedWord = this.appHelper.getSelection(); + const provider = this.suggester.customDictionaryWordProvider; + const modal = new CustomDictionaryWordAddModal( + this.app, + provider.editablePaths, + selectedWord, + this.settings.delimiterToDivideSuggestionsForDisplayFromInsertion, + async (dictionaryPath, _word) => { + const word = { + ..._word, + caretSymbol: this.settings.caretLocationSymbolAfterComplement + }; + if (provider.wordByValue[word.value]) { + new import_obsidian6.Notice(`\u26A0 ${word.value} already exists`, 0); + return; + } + await provider.addWordWithDictionary(word, dictionaryPath); + new import_obsidian6.Notice(`Added ${word.value}`); + modal.close(); + } + ); + modal.open(); + } +}; diff --git a/notes/.obsidian/plugins/various-complements/manifest.json b/notes/.obsidian/plugins/various-complements/manifest.json index 7b52509..7a4c9f8 100644 --- a/notes/.obsidian/plugins/various-complements/manifest.json +++ b/notes/.obsidian/plugins/various-complements/manifest.json @@ -1,10 +1,10 @@ { "id": "various-complements", "name": "Various Complements", - "version": "7.1.1", - "minAppVersion": "0.15.4", + "version": "7.3.0", + "minAppVersion": "0.16.0", "description": "This plugin enables you to complete words like the auto-completion of IDE", "author": "tadashi-aikawa", "authorUrl": "https://github.com/tadashi-aikawa", "isDesktopOnly": false -} +} \ No newline at end of file diff --git a/notes/.obsidian/plugins/various-complements/styles.css b/notes/.obsidian/plugins/various-complements/styles.css index 928271a..6bedecb 100644 --- a/notes/.obsidian/plugins/various-complements/styles.css +++ b/notes/.obsidian/plugins/various-complements/styles.css @@ -41,6 +41,9 @@ .various-complements__settings__header__front-matter::before { content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik0xMC4zMiAyLjAxM0E0IDQgMCAwIDAgNi4xNjIgNy4xM2wtMy45ODcgMy45ODZhLjYuNiAwIDAgMC0uMTc2LjQyNFYxNC40YS42LjYgMCAwIDAgLjYuNmgyLjhhLjYuNiAwIDAgMCAuNi0uNlYxM2gxLjlhLjYuNiAwIDAgMCAuNi0uNnYtMS42OTNsLjczNS0uNzM1YTUuNTEgNS41MSAwIDAgMS0uNTY5LS44NDZsLS45OS45OTFhLjYuNiAwIDAgMC0uMTc2LjQyNFYxMkg1LjZhLjYuNiAwIDAgMC0uNi42VjE0SDN2LTIuMjkzbDQuMzItNC4zMmwtLjExOC0uMzAzYTMuMDAxIDMuMDAxIDAgMCAxIDEuOTYtMy45NjVjLjMzLS40MjMuNzItLjc5NiAxLjE1Ny0xLjEwNnpNMTMuNSA2LjI1YS43NS43NSAwIDEgMCAwLTEuNWEuNzUuNzUgMCAwIDAgMCAxLjV6TTkgNi41YTQuNSA0LjUgMCAxIDEgNyAzLjc0MnYyLjA1bC43ODMuNzg0YS42LjYgMCAwIDEgMCAuODQ4TDE1LjcwNyAxNWwxLjA2OCAxLjA2N2EuNi42IDAgMCAxLS4wNS44OTNsLTIuMzUgMS44OGEuNi42IDAgMCAxLS43NSAwbC0yLjQtMS45MmEuNi42IDAgMCAxLS4yMjUtLjQ2OHYtNi4yMUE0LjQ5NiA0LjQ5NiAwIDAgMSA5IDYuNXpNMTMuNSAzYTMuNSAzLjUgMCAwIDAtMS43NSA2LjUzMmEuNS41IDAgMCAxIC4yNS40MzN2Ni4yOTVsMiAxLjZsMS43NTEtMS40MDFsLTEuMDM0LTEuMDM1YS42LjYgMCAwIDEgMC0uODQ4bDEuMDc2LTEuMDc2bC0uNjE3LS42MTdhLjYuNiAwIDAgMS0uMTc2LS40MjRWOS45NjVhLjUuNSAwIDAgMSAuMjUtLjQzM0EzLjUgMy41IDAgMCAwIDEzLjUgM3oiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvZz48L3N2Zz4=") } +.various-complements__settings__header__intelligent-suggestion-prioritization::before { + content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik02LjEzIDIuNzkzQTMuOTEgMy45MSAwIDAgMSA4LjUgMmExLjc1NyAxLjc1NyAwIDAgMSAxLjUuNzhBMS43NTcgMS43NTcgMCAwIDEgMTEuNSAyYTMuOTEgMy45MSAwIDAgMSAyLjM3Ljc5M2MuNTI1LjQwOC45My45NzMgMS4wNzMgMS42NTZjLjMyOC4wMjUuNjI4LjE2MS44OC4zNjZjLjM4Mi4zMS42Ni43NzUuODM1IDEuMjY3Yy4yNzQuNzY1LjM0OCAxLjc0LjA2NCAyLjU3Yy4wNzIuMDM0LjE0My4wNzQuMjEyLjEyYy4yNzUuMTgzLjQ4NC40NDUuNjM4Ljc1NGMuMzAzLjYwNS40MjggMS40NDkuNDI4IDIuNDc0YzAgMS4xNDEtLjQzNSAxLjkwNy0uOTg3IDIuMzhhMi42OCAyLjY4IDAgMCAxLTEuMDU0LjU1NWMtLjEuNTU4LS4zOCAxLjIwNC0uODE5IDEuNzUyQzE0LjU3IDE3LjQwMiAxMy42ODYgMTggMTIuNSAxOGMtLjk0IDAtMS42ODgtLjUyLTIuMTc0LTEuMDNhNC4yNTIgNC4yNTIgMCAwIDEtLjMyNi0uMzg1YTQuMjQ1IDQuMjQ1IDAgMCAxLS4zMjYuMzg1QzkuMTg4IDE3LjQ4IDguNDQxIDE4IDcuNSAxOGMtMS4xODYgMC0yLjA2OS0uNTk4LTIuNjQtMS4zMTNhNC4wNTcgNC4wNTcgMCAwIDEtLjgxOS0xLjc1MmEyLjY4IDIuNjggMCAwIDEtMS4wNTQtLjU1NUMyLjQzNSAxMy45MDcgMiAxMy4xNCAyIDEyYzAtMS4wMjUuMTI2LTEuODcuNDI4LTIuNDc0Yy4xNTQtLjMwOS4zNjMtLjU3LjYzOC0uNzU1YTEuNTggMS41OCAwIDAgMSAuMjEyLS4xMThjLS4yODQtLjgzMi0uMjEtMS44MDYuMDY0LTIuNTcxYy4xNzUtLjQ5Mi40NTMtLjk1Ny44MzUtMS4yNjdjLjI1Mi0uMjA1LjU1Mi0uMzQuODgtLjM2NmMuMTQ0LS42ODMuNTQ5LTEuMjQ4IDEuMDc0LTEuNjU2ek05LjUgNC41VjQuNDlsLS4wMDItLjA1YTIuNzQ0IDIuNzQ0IDAgMCAwLS4xNTQtLjc2NGExLjIyMiAxLjIyMiAwIDAgMC0uMzA5LS40OUEuNzYuNzYgMCAwIDAgOC41IDNhMi45MSAyLjkxIDAgMCAwLTEuNzU2LjU4MkM2LjI4IDMuOTQzIDYgNC40MzIgNiA1YS41LjUgMCAwIDEtLjY1OC40NzRjLS4xODgtLjA2Mi0uMzU2LS4wMjctLjUzNS4xMTdjLS4xOTYuMTYtLjM4Ny40NDQtLjUyNC44MjdjLS4yNzkuNzgyLS4yNSAxLjcyOS4xMzMgMi4zMDVBLjUuNSAwIDAgMSA0LjUgOWguNzVhMi4yNSAyLjI1IDAgMCAxIDIuMjUgMi4yNXYuMzM1YTEuNSAxLjUgMCAxIDEtMSAwdi0uMzM1YzAtLjY5LS41Ni0xLjI1LTEuMjUtMS4yNUgzLjVhLjQ5OS40OTkgMCAwIDEtLjE3NS0uMDMybC0uMDAzLjAwNkMzLjEyNCAxMC4zNjkgMyAxMS4wMjUgMyAxMmMwIC44NTkuMzE1IDEuMzQzLjYzOCAxLjYyYy4zNDcuMjk4LjczMi4zOC44NjIuMzhhLjUuNSAwIDAgMSAuNS41YzAgLjM2OC4yIDEuMDExLjY0IDEuNTYzYy40MjkuNTM1IDEuMDQ2LjkzNyAxLjg2LjkzN2MuNTYgMCAxLjA2Mi0uMzEzIDEuNDUtLjcyYy4xOTEtLjIuMzQtLjQwNy40MzctLjU3N2ExLjU3MyAxLjU3MyAwIDAgMCAuMTEzLS4yMzZWNy41SDguNDE1YTEuNSAxLjUgMCAxIDEgMC0xSDkuNXYtMnptMSA5Ljk5OXYuOTY3YTEuNTc1IDEuNTc1IDAgMCAwIC4xMTMuMjM2Yy4wOTguMTcuMjQ2LjM3Ny40MzYuNTc3Yy4zODkuNDA3Ljg5Mi43MiAxLjQ1MS43MmMuODE0IDAgMS40MzEtLjQwMiAxLjg2LS45MzdjLjQ0LS41NTIuNjQtMS4xOTUuNjQtMS41NjNhLjUuNSAwIDAgMSAuNS0uNWMuMTMgMCAuNTE1LS4wODIuODYyLS4zOGMuMzIzLS4yNzcuNjM4LS43NjEuNjM4LTEuNjJjMC0uOTc1LS4xMjUtMS42My0uMzIyLTIuMDI2YS45MjMuOTIzIDAgMCAwLS4zLS4zN0EuNjU3LjY1NyAwIDAgMCAxNiA5LjVhLjUuNSAwIDAgMS0uNDE2LS43NzdjLjM4NC0uNTc2LjQxMi0xLjUyMy4xMzMtMi4zMDVjLS4xMzctLjM4My0uMzI4LS42NjgtLjUyNC0uODI3Yy0uMTc5LS4xNDQtLjM0Ny0uMTgtLjUzNS0uMTE3QS41LjUgMCAwIDEgMTQgNWMwLS41NjgtLjI4LTEuMDU3LS43NDUtMS40MThBMi45MSAyLjkxIDAgMCAwIDExLjUgM2EuNzYuNzYgMCAwIDAtLjUzNS4xODZhMS4yMiAxLjIyIDAgMCAwLS4zMS40OWEyLjU3OSAyLjU3OSAwIDAgMC0uMTU1LjgxNHY5LjAxaC43NWMuNjkgMCAxLjI1LS41NiAxLjI1LTEuMjV2LTEuODM1YTEuNSAxLjUgMCAxIDEgMSAwdjEuODM1YTIuMjUgMi4yNSAwIDAgMS0yLjI1IDIuMjVoLS43NXpNNi41IDdhLjUuNSAwIDEgMCAxIDBhLjUuNSAwIDAgMC0xIDB6TTEzIDkuNWEuNS41IDAgMSAwIDAtMWEuNS41IDAgMCAwIDAgMXptLTYgM2EuNS41IDAgMSAwIDAgMWEuNS41IDAgMCAwIDAtMXoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvZz48L3N2Zz4=") +} .various-complements__footer { position: relative; @@ -106,6 +109,7 @@ font-size: 0.75em; /*noinspection CssUnresolvedCustomProperty*/ color: var(--text-muted); + padding-top: 0.75em; } .various-complements__suggestion-item__current-file::before { diff --git a/notes/.obsidian/workspace.json b/notes/.obsidian/workspace.json index 898e7c1..37238a2 100644 --- a/notes/.obsidian/workspace.json +++ b/notes/.obsidian/workspace.json @@ -4,16 +4,16 @@ "type": "split", "children": [ { - "id": "47e02b11d16c6d54", + "id": "e1911a7496a24cb9", "type": "tabs", "children": [ { - "id": "3b84261086a4e144", + "id": "1d37952aa674e567", "type": "leaf", "state": { "type": "markdown", "state": { - "file": "mat/Funkce/Exponenciální funkce.md", + "file": "fyz/Mechanika tekutin/Tekutiny.md", "mode": "source", "source": false } @@ -77,7 +77,7 @@ "state": { "type": "backlink", "state": { - "file": "mat/Funkce/Exponenciální funkce.md", + "file": "fyz/Mechanika tekutin/Tekutiny.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -94,7 +94,7 @@ "state": { "type": "outgoing-link", "state": { - "file": "mat/Funkce/Exponenciální funkce.md", + "file": "fyz/Mechanika tekutin/Tekutiny.md", "linksCollapsed": false, "unlinkedCollapsed": true } @@ -141,34 +141,10 @@ "state": { "type": "outline", "state": { - "file": "mat/Funkce/Exponenciální funkce.md" + "file": "fyz/Mechanika tekutin/Tekutiny.md" } } }, - { - "id": "7bf4fe7c53f74604", - "type": "leaf", - "state": { - "type": "BC-matrix", - "state": {} - } - }, - { - "id": "24182783470757f3", - "type": "leaf", - "state": { - "type": "BC-tree", - "state": {} - } - }, - { - "id": "ce11575e5eafa954", - "type": "leaf", - "state": { - "type": "todo", - "state": {} - } - }, { "id": "478e61537eb995fc", "type": "leaf", @@ -176,9 +152,33 @@ "type": "review-queue-list-view", "state": {} } + }, + { + "id": "6646a36080fd99c0", + "type": "leaf", + "state": { + "type": "todo", + "state": {} + } + }, + { + "id": "3e78ff74b952253b", + "type": "leaf", + "state": { + "type": "BC-matrix", + "state": {} + } + }, + { + "id": "4a578facd3fdc8b7", + "type": "leaf", + "state": { + "type": "BC-tree", + "state": {} + } } ], - "currentTab": 2 + "currentTab": 10 } ], "direction": "horizontal", @@ -188,17 +188,17 @@ "ribbon": { "mostRecentAction": "" }, - "active": "3b84261086a4e144", + "active": "1d37952aa674e567", "lastOpenFiles": [ - "mat/Funkce/Exponenciální funkce.md", - "mat/Funkce/Lineární lomené funkce.md", - "mat/Funkce/Kartézský součin.md", - "mat/Funkce/Inverzní funkce.md", - "mat/Funkce/Funkční přepis.md", - "mat/Funkce/Funkce vs Rovnice.md", - "mat/Funkce/Funkce.md", - "mat/Funkce/Cosinus.md", - "mat/mat.md", - "cjl/cjl.md" + "fyz/Mechanika tekutin/Mechanika tekutin.md", + "fyz/Mechanika tekutin/Hydrostatický paradox.md", + "fyz/Mechanika tekutin/Hydrostatická tlaková síla.md", + "fyz/Mechanika tekutin/Hydraulická zařízení.md", + "fyz/Mechanika tekutin/Atmosférický tlak.md", + "fyz/Mechanika tekutin/Archimédův zákon.md", + "fyz/fyz.md", + "cjl/cjl.md", + "cjl/literatura/slohy/slohy.md", + "cjl/literatura/slohy/Románské umění.md" ] } \ No newline at end of file